From 4dac70303a502ec86d9c8d55f1c99478d38ab395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9C=9C=E5=BA=8F?= <976060700@qq.com> Date: Mon, 1 Jul 2024 10:28:35 +0800 Subject: [PATCH 01/16] refactor(pgsql): improve pgsql g4 file (#291) * refactor(pgsql): refactor pgsql * refactor(pgsql): remove useless code * refactor(pgsql): refactor a_expr_qual to expression * refactor(pgsql): remove some unused rule --- src/grammar/postgresql/PostgreSqlParser.g4 | 3812 +- src/lib/postgresql/PostgreSqlParser.interp | 428 +- src/lib/postgresql/PostgreSqlParser.ts | 126909 ++++++--------- .../postgresql/PostgreSqlParserListener.ts | 7618 +- src/lib/postgresql/PostgreSqlParserVisitor.ts | 4224 +- 5 files changed, 52735 insertions(+), 90256 deletions(-) diff --git a/src/grammar/postgresql/PostgreSqlParser.g4 b/src/grammar/postgresql/PostgreSqlParser.g4 index dd35d16c..63d6f9ae 100644 --- a/src/grammar/postgresql/PostgreSqlParser.g4 +++ b/src/grammar/postgresql/PostgreSqlParser.g4 @@ -53,10 +53,6 @@ program : singleStmt* EOF ; -plsqlroot - : pl_function - ; - singleStmt : stmt SEMI? ; @@ -178,11 +174,7 @@ stmt | variablesetstmt | variableshowstmt | viewstmt - | plsqlconsolecommand - ; - -plsqlconsolecommand - : MetaCommand EndMetaCommand? + | MetaCommand EndMetaCommand? ; callstmt @@ -190,65 +182,53 @@ callstmt ; createrolestmt - : KW_CREATE KW_ROLE roleid opt_with? optrolelist - ; - -opt_with - : KW_WITH - ; //| WITH_LA - -optrolelist - : createoptroleelem* - ; - -alteroptrolelist - : alteroptroleelem* + : KW_CREATE KW_ROLE rolespec KW_WITH? createoptroleelem* ; alteroptroleelem : KW_PASSWORD (sconst | KW_NULL) | (KW_ENCRYPTED | KW_UNENCRYPTED) KW_PASSWORD sconst - | (KW_INHERIT | KW_NOINHERIT) - | (KW_CREATEUSER | KW_NOCREATEUSER) - | (KW_CREATEROLE | KW_NOCREATEROLE) - | (KW_CREATEDB | KW_NOCREATEDB) - | (KW_SUPERUSER | KW_NOSUPERUSER) - | (KW_LOGIN | KW_NOLOGIN) - | (KW_REPLICATION | KW_NOREPLICATION) - | (KW_BYPASSRLS | KW_NOBYPASSRLS) + | KW_INHERIT + | KW_NOINHERIT + | KW_CREATEUSER + | KW_NOCREATEUSER + | KW_CREATEROLE + | KW_NOCREATEROLE + | KW_CREATEDB + | KW_NOCREATEDB + | KW_SUPERUSER + | KW_NOSUPERUSER + | KW_LOGIN + | KW_NOLOGIN + | KW_REPLICATION + | KW_NOREPLICATION + | KW_BYPASSRLS + | KW_NOBYPASSRLS | KW_CONNECTION KW_LIMIT signediconst | KW_VALID KW_UNTIL sconst - | KW_IN KW_ROLE name_list - | KW_IN KW_GROUP name_list - | KW_ROLE role_list + | KW_IN (KW_ROLE | KW_GROUP) name_list + | (KW_ROLE | KW_USER) role_list | KW_ADMIN name_list - | KW_USER role_list | identifier ; createoptroleelem : alteroptroleelem - | KW_SYSID iconst - | KW_ADMIN role_list - | KW_ROLE role_list + | KW_SYSID Integral + | (KW_ADMIN | KW_ROLE) role_list | KW_IN (KW_ROLE | KW_GROUP) role_list ; createuserstmt - : KW_CREATE KW_USER roleid opt_with? optrolelist + : KW_CREATE KW_USER rolespec KW_WITH? createoptroleelem* ; alterrolestmt - : KW_ALTER (KW_ROLE | KW_USER) rolespec opt_with? alteroptrolelist - ; - -opt_in_database - : - | KW_IN KW_DATABASE database_name + : KW_ALTER (KW_ROLE | KW_USER) rolespec KW_WITH? alteroptroleelem* ; alterrolesetstmt - : KW_ALTER (KW_ROLE | KW_USER) (KW_ALL | rolespec) opt_in_database setresetclause + : KW_ALTER (KW_ROLE | KW_USER) (KW_ALL | rolespec) KW_IN KW_DATABASE database_name setresetclause ; alterroutinestmt @@ -256,15 +236,11 @@ alterroutinestmt ; alter_routine_cluase - : routine_action_list KW_RESTRICT? + : routine_action (routine_action)* KW_RESTRICT? | KW_RENAME KW_TO routine_name_create | KW_OWNER KW_TO rolespec | KW_SET KW_SCHEMA schema_name_create - | KW_NO? KW_DEPENDS KW_ON KW_EXTENSION name - ; - -routine_action_list - : routine_action (routine_action)* + | KW_NO? KW_DEPENDS KW_ON KW_EXTENSION colid ; routine_action @@ -274,40 +250,30 @@ routine_action | KW_NOT? KW_LEAKPROOF | (KW_EXTERNAL? KW_SECURITY KW_INVOKER | KW_EXTERNAL? KW_SECURITY KW_DEFINER) | KW_PARALLEL (KW_UNSAFE | KW_RESTRICTED | KW_SAFE) - | KW_COST attr_name - | KW_ROWS name - | KW_SET name (KW_TO | EQUAL) (name | KW_DEFAULT) - | KW_SET name KW_FROM KW_CURRENT - | KW_RESET name - | KW_RESET KW_ALL + | KW_COST collabel + | KW_ROWS colid + | KW_SET colid (KW_TO | EQUAL) (colid | KW_DEFAULT) + | KW_SET colid KW_FROM KW_CURRENT + | KW_RESET (colid | KW_ALL) ; creategroupstmt - : KW_CREATE KW_GROUP groupname opt_with? optrolelist + : KW_CREATE KW_GROUP rolespec KW_WITH? createoptroleelem* ; altergroupstmt - : KW_ALTER KW_GROUP rolespec add_drop KW_USER role_list - ; - -add_drop - : KW_ADD - | KW_DROP + : KW_ALTER KW_GROUP rolespec (KW_ADD | KW_DROP) KW_USER role_list ; createschemastmt : KW_CREATE KW_SCHEMA opt_if_not_exists? ( schema_name_create? KW_AUTHORIZATION rolespec | schema_name_create - ) optschemaeltlist + ) schema_stmt* ; schema_name_create - : colid attrs? # schemaNameCreate - ; - -optschemaeltlist - : schema_stmt* + : any_name # schemaNameCreate ; schema_stmt @@ -337,7 +303,7 @@ set_rest_more : KW_TIME KW_ZONE zone_value | KW_CATALOG sconst | KW_SCHEMA schema_name - | KW_NAMES opt_encoding? + | KW_NAMES (sconst | KW_DEFAULT)? | KW_ROLE nonreservedword_or_sconst | KW_SESSION KW_AUTHORIZATION nonreservedword_or_sconst | KW_XML KW_OPTION document_or_content @@ -369,7 +335,9 @@ opt_boolean_or_string_column : KW_TRUE | KW_FALSE | KW_ON - | nonreservedword_or_sconst_column + | column_name + | type_func_name_keyword + | sconst ; opt_boolean_or_string @@ -381,24 +349,14 @@ opt_boolean_or_string zone_value : sconst + | KW_DEFAULT | identifier - | constinterval sconst opt_interval? - | constinterval OPEN_PAREN iconst CLOSE_PAREN sconst + | KW_INTERVAL sconst opt_interval? + | KW_INTERVAL opt_float sconst | numericonly - | KW_DEFAULT | KW_LOCAL ; -opt_encoding - : sconst - | KW_DEFAULT - ; - -nonreservedword_or_sconst_column - : nonreservedword_column - | sconst - ; - nonreservedword_or_sconst : nonreservedword | sconst @@ -412,11 +370,7 @@ reset_rest : KW_TIME KW_ZONE | KW_TRANSACTION KW_ISOLATION KW_LEVEL | KW_SESSION KW_AUTHORIZATION - | generic_reset - ; - -generic_reset - : KW_ALL + | KW_ALL | var_name ; @@ -441,17 +395,7 @@ variableshowstmt ; constraintssetstmt - : KW_SET KW_CONSTRAINTS constraints_set_list constraints_set_mode - ; - -constraints_set_list - : KW_ALL - | qualified_name_list - ; - -constraints_set_mode - : KW_DEFERRED - | KW_IMMEDIATE + : KW_SET KW_CONSTRAINTS (KW_ALL | qualified_name_list) (KW_DEFERRED | KW_IMMEDIATE) ; checkpointstmt @@ -464,8 +408,8 @@ discardstmt altertablestmt : KW_ALTER KW_TABLE opt_if_exists? relation_expr (alter_table_cmds | partition_cmd) - | KW_ALTER KW_TABLE KW_ALL KW_IN KW_TABLESPACE tablespace_name (KW_OWNED KW_BY role_list)? KW_SET KW_TABLESPACE tablespace_name_create opt_nowait? - | KW_ALTER KW_TABLE opt_if_exists? table_name KW_ATTACH KW_PARTITION qualified_name ( + | KW_ALTER KW_TABLE KW_ALL KW_IN opttablespace (KW_OWNED KW_BY role_list)? KW_SET KW_TABLESPACE tablespace_name_create KW_NOWAIT? + | KW_ALTER KW_TABLE opt_if_exists? table_name index_partition_cmd ( KW_FOR KW_VALUES partition_bound_spec | KW_DEFAULT ) @@ -474,13 +418,10 @@ altertablestmt | KW_FINALIZE )? | KW_ALTER KW_INDEX opt_if_exists? qualified_name (alter_table_cmds | index_partition_cmd) - | KW_ALTER KW_INDEX KW_ALL KW_IN KW_TABLESPACE tablespace_name (KW_OWNED KW_BY role_list)? KW_SET KW_TABLESPACE tablespace_name opt_nowait? + | KW_ALTER KW_INDEX KW_ALL KW_IN opttablespace (KW_OWNED KW_BY role_list)? KW_SET opttablespace KW_NOWAIT? | KW_ALTER KW_SEQUENCE opt_if_exists? qualified_name alter_table_cmds - | KW_ALTER KW_VIEW opt_if_exists? view_name alter_table_cmds - | KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name alter_table_cmds - | KW_ALTER KW_MATERIALIZED KW_VIEW KW_ALL KW_IN KW_TABLESPACE tablespace_name ( - KW_OWNED KW_BY role_list - )? KW_SET KW_TABLESPACE tablespace_name_create opt_nowait? + | KW_ALTER KW_MATERIALIZED? KW_VIEW opt_if_exists? view_name alter_table_cmds + | KW_ALTER KW_MATERIALIZED KW_VIEW KW_ALL KW_IN opttablespace (KW_OWNED KW_BY role_list)? KW_SET KW_TABLESPACE tablespace_name_create KW_NOWAIT? | KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr alter_table_cmds ; @@ -489,7 +430,7 @@ alter_table_cmds ; partition_bound_spec - : KW_IN opt_type_modifiers + : KW_IN execute_param_clause | KW_FROM partition_bound_cluase KW_TO partition_bound_cluase | KW_WITH partition_with_cluase ; @@ -499,7 +440,7 @@ partition_bound_cluase ; partition_bound_choose - : opt_type_modifiers + : execute_param_clause | KW_MINVALUE | KW_MAXVALUE ; @@ -509,7 +450,7 @@ partition_with_cluase ; partition_cmd - : KW_ATTACH KW_PARTITION qualified_name partitionboundspec + : index_partition_cmd partitionboundspec | KW_DETACH KW_PARTITION qualified_name ; @@ -518,48 +459,48 @@ index_partition_cmd ; alter_table_cmd - : KW_ADD (KW_CONSTRAINT name)? constraintelem - | KW_ALTER KW_CONSTRAINT name constraintattributespec - | KW_VALIDATE KW_CONSTRAINT name - | KW_DROP KW_CONSTRAINT opt_if_exists? name opt_drop_behavior? - | KW_SET KW_WITHOUT KW_OIDS - | KW_CLUSTER KW_ON name - | KW_SET KW_WITHOUT KW_CLUSTER + : KW_ADD (KW_CONSTRAINT colid)? constraintelem + | KW_ALTER KW_CONSTRAINT colid constraintattributeElem* + | KW_VALIDATE KW_CONSTRAINT colid + | KW_DROP KW_CONSTRAINT opt_if_exists? colid opt_drop_behavior? + | KW_SET KW_WITHOUT (KW_OIDS | KW_CLUSTER) + | KW_CLUSTER KW_ON colid | KW_SET (KW_LOGGED | KW_UNLOGGED) | KW_ENABLE (KW_REPLICA | KW_ALWAYS)? KW_TRIGGER - | KW_DISABLE KW_TRIGGER (KW_ALL | KW_USER | name) - | KW_ENABLE (KW_ALWAYS | KW_REPLICA) KW_RULE name - | KW_DISABLE KW_RULE name + | KW_DISABLE KW_TRIGGER (KW_ALL | KW_USER | colid) + | KW_ENABLE (KW_ALWAYS | KW_REPLICA) KW_RULE colid + | KW_DISABLE KW_RULE colid | KW_NO? KW_INHERIT qualified_name | KW_OF any_name | KW_NOT KW_OF | KW_OWNER KW_TO rolespec | KW_SET KW_TABLESPACE tablespace_name_create - | KW_SET reloptions - | KW_RESET reloptions - | KW_REPLICA KW_IDENTITY replica_identity - | KW_ENABLE KW_ROW KW_LEVEL KW_SECURITY - | KW_DISABLE KW_ROW KW_LEVEL KW_SECURITY - | KW_FORCE KW_ROW KW_LEVEL KW_SECURITY - | KW_NO KW_FORCE KW_ROW KW_LEVEL KW_SECURITY + | KW_REPLICA KW_IDENTITY (KW_NOTHING | KW_FULL | KW_DEFAULT | existingindex) + | (KW_ENABLE | KW_DISABLE | (KW_NO? KW_FORCE)) KW_ROW KW_LEVEL KW_SECURITY | KW_DROP KW_COLUMN? opt_if_exists? column_name opt_drop_behavior? | KW_ADD KW_COLUMN? opt_if_not_exists? column_def - | KW_ALTER KW_COLUMN? column_name alter_column_default + | KW_ALTER KW_COLUMN? column_name (alter_column_default | alter_generic_options) | KW_ALTER KW_COLUMN? column_name (KW_DROP | KW_SET) KW_NOT KW_NULL | KW_ALTER KW_COLUMN? column_name KW_DROP KW_EXPRESSION opt_if_exists? | KW_ALTER KW_COLUMN? column_name KW_SET KW_STATISTICS signediconst - | KW_ALTER KW_COLUMN? column_name (KW_SET | KW_RESET) reloptions + | (KW_ALTER KW_COLUMN? column_name)? (KW_SET | KW_RESET) reloptions | KW_ALTER KW_COLUMN? column_name KW_SET KW_STORAGE colid - | KW_ALTER KW_COLUMN? column_name KW_ADD KW_GENERATED generated_when KW_AS KW_IDENTITY optparenthesizedseqoptlist? - | KW_ALTER KW_COLUMN? column_name alter_identity_column_option_list + | KW_ALTER KW_COLUMN? column_name KW_ADD KW_GENERATED generated_when KW_AS KW_IDENTITY ( + OPEN_PAREN seqoptelem+ CLOSE_PAREN + )? + | KW_ALTER KW_COLUMN? column_name ( + KW_RESTART (KW_WITH? numericonly)? + | KW_SET (seqoptelem | KW_GENERATED generated_when) + )+ | KW_ALTER KW_COLUMN? column_name KW_DROP KW_IDENTITY opt_if_exists? - | KW_ALTER KW_COLUMN? column_name opt_set_data? KW_TYPE typename opt_collate_clause? alter_using? - | KW_ALTER KW_COLUMN? column_name alter_generic_options + | KW_ALTER KW_COLUMN? column_name (KW_SET KW_DATA)? KW_TYPE typename opt_collate_clause? ( + KW_USING expression + )? | alter_generic_options ; alter_column_default - : KW_SET KW_DEFAULT a_expr + : KW_SET KW_DEFAULT expression | KW_DROP KW_DEFAULT ; @@ -572,160 +513,82 @@ opt_collate_clause : KW_COLLATE any_name ; -alter_using - : KW_USING a_expr - ; - -replica_identity - : KW_NOTHING - | KW_FULL - | KW_DEFAULT - | KW_USING KW_INDEX name - ; - reloptions - : OPEN_PAREN reloption_list CLOSE_PAREN + : OPEN_PAREN reloption_elem (COMMA reloption_elem)* CLOSE_PAREN ; opt_reloptions : KW_WITH reloptions ; -reloption_list - : reloption_elem (COMMA reloption_elem)* - ; - reloption_elem - : collabel (EQUAL def_arg | DOT collabel (EQUAL def_arg)?)? - ; - -alter_identity_column_option_list - : alter_identity_column_option+ - ; - -alter_identity_column_option - : KW_RESTART (opt_with? numericonly)? - | KW_SET (seqoptelem | KW_GENERATED generated_when) + : collabel (EQUAL def_arg | DOT def_elem)? ; partitionboundspec - : KW_FOR KW_VALUES KW_WITH OPEN_PAREN hash_partbound CLOSE_PAREN - | KW_FOR KW_VALUES KW_IN OPEN_PAREN expr_list CLOSE_PAREN - | KW_FOR KW_VALUES KW_FROM OPEN_PAREN expr_list CLOSE_PAREN KW_TO OPEN_PAREN expr_list CLOSE_PAREN + : KW_FOR KW_VALUES KW_WITH OPEN_PAREN nonreservedword Integral ( + COMMA (nonreservedword Integral) + )* CLOSE_PAREN + | KW_FOR KW_VALUES KW_IN execute_param_clause + | KW_FOR KW_VALUES KW_FROM execute_param_clause KW_TO execute_param_clause | KW_DEFAULT ; -hash_partbound_elem - : nonreservedword iconst - ; - -hash_partbound - : hash_partbound_elem (COMMA hash_partbound_elem)* - ; - altercompositetypestmt - : KW_ALTER KW_TYPE any_name alter_type_cmds - ; - -alter_type_cmds - : alter_type_cmd (COMMA alter_type_cmd)* + : KW_ALTER KW_TYPE any_name alter_type_cmd (COMMA alter_type_cmd)* ; alter_type_cmd : KW_ADD KW_ATTRIBUTE tablefuncelement opt_drop_behavior? | KW_DROP KW_ATTRIBUTE opt_if_exists? colid opt_drop_behavior? - | KW_ALTER KW_ATTRIBUTE colid opt_set_data? KW_TYPE typename opt_collate_clause? opt_drop_behavior? + | KW_ALTER KW_ATTRIBUTE colid (KW_SET KW_DATA)? KW_TYPE typename opt_collate_clause? opt_drop_behavior? ; closeportalstmt - : KW_CLOSE (cursor_name | KW_ALL) + : KW_CLOSE (colid | KW_ALL) ; copystmt - : KW_COPY opt_binary? table_name opt_column_list? copy_from opt_program? copy_file_name copy_delimiter? opt_with? copy_options where_clause? - | KW_COPY OPEN_PAREN preparablestmt CLOSE_PAREN KW_TO opt_program? copy_file_name opt_with? copy_options - ; - -copy_from - : KW_FROM - | KW_TO - ; - -opt_program - : KW_PROGRAM - ; - -copy_file_name - : sconst - | KW_STDIN - | KW_STDOUT + : KW_COPY KW_BINARY? table_name opt_column_list? (KW_FROM | KW_TO) KW_PROGRAM? ( + sconst + | KW_STDIN + | KW_STDOUT + ) (KW_USING? KW_DELIMITERS sconst)? KW_WITH? copy_options where_clause? + | KW_COPY OPEN_PAREN preparablestmt CLOSE_PAREN KW_TO KW_PROGRAM? ( + sconst + | KW_STDIN + | KW_STDOUT + ) KW_WITH? copy_options ; copy_options - : copy_opt_list - | OPEN_PAREN copy_generic_opt_list CLOSE_PAREN - ; - -copy_opt_list - : copy_opt_item* - ; - -copy_opt_item - : KW_BINARY - | KW_FREEZE - | KW_DELIMITER opt_as? sconst - | KW_NULL opt_as? sconst - | KW_CSV - | KW_HEADER - | KW_QUOTE opt_as? sconst - | KW_ESCAPE opt_as? sconst - | KW_FORCE KW_QUOTE column_list - | KW_FORCE KW_QUOTE STAR - | KW_FORCE KW_NOT KW_NULL column_list - | KW_FORCE KW_NULL column_list - | KW_ENCODING sconst - ; - -opt_binary - : KW_BINARY - ; - -copy_delimiter - : opt_using? KW_DELIMITERS sconst - ; - -opt_using - : KW_USING - ; - -copy_generic_opt_list - : copy_generic_opt_elem (COMMA copy_generic_opt_elem)* + : ( + KW_BINARY + | KW_FREEZE + | (KW_NULL | KW_DELIMITER | KW_ESCAPE | KW_QUOTE) KW_AS? sconst + | KW_CSV + | KW_HEADER + | KW_FORCE KW_QUOTE (column_list | STAR) + | KW_FORCE KW_NOT? KW_NULL column_list + | KW_ENCODING sconst + )* + | OPEN_PAREN copy_generic_opt_elem (COMMA copy_generic_opt_elem)* CLOSE_PAREN ; copy_generic_opt_elem - : collabel copy_generic_opt_arg? - ; - -copy_generic_opt_arg - : opt_boolean_or_string - | numericonly - | STAR - | OPEN_PAREN copy_generic_opt_arg_list CLOSE_PAREN - ; - -copy_generic_opt_arg_list - : copy_generic_opt_arg_list_item (COMMA copy_generic_opt_arg_list_item)* - ; - -copy_generic_opt_arg_list_item - : opt_boolean_or_string_column + : collabel ( + opt_boolean_or_string + | numericonly + | STAR + | OPEN_PAREN opt_boolean_or_string_column (COMMA opt_boolean_or_string_column)* CLOSE_PAREN + )? ; createstmt : KW_CREATE opttemp? KW_TABLE opt_if_not_exists? table_name_create ( - OPEN_PAREN table_column_list? CLOSE_PAREN optinherit? optpartitionspec? table_access_method_clause? optwith? oncommitoption? opttablespace? - | KW_OF any_name opttypedtableelementlist? optpartitionspec? table_access_method_clause? optwith? oncommitoption? opttablespace? - | KW_PARTITION KW_OF qualified_name opttypedtableelementlist? partitionboundspec optpartitionspec? table_access_method_clause? optwith? + OPEN_PAREN tableelementlist? CLOSE_PAREN optinherit? partitionspec? table_access_method_clause? optwith? oncommitoption? opttablespace? + | KW_OF any_name opttypedtableelementlist? partitionspec? table_access_method_clause? optwith? oncommitoption? opttablespace? + | KW_PARTITION KW_OF qualified_name opttypedtableelementlist? partitionboundspec partitionspec? table_access_method_clause? optwith? oncommitoption? opttablespace? ) # columnCreateTable ; @@ -733,87 +596,56 @@ createstmt opttemp : KW_TEMPORARY | KW_TEMP - | KW_LOCAL (KW_TEMPORARY | KW_TEMP) - | KW_GLOBAL (KW_TEMPORARY | KW_TEMP) + | (KW_LOCAL | KW_GLOBAL) (KW_TEMPORARY | KW_TEMP) | KW_UNLOGGED ; -table_column_list - : tableelementlist - ; - -opttableelementlist - : tableelementlist - ; - opttypedtableelementlist - : OPEN_PAREN typedtableelementlist CLOSE_PAREN + : OPEN_PAREN typedtableelement (COMMA typedtableelement)* CLOSE_PAREN ; tableelementlist : tableelement (COMMA tableelement)* ; -typedtableelementlist - : typedtableelement (COMMA typedtableelement)* - ; - tableelement : column_def - | tablelikeclause - | tableconstraint + | KW_LIKE qualified_name ((KW_INCLUDING | KW_EXCLUDING) tablelikeoption)* + | (KW_CONSTRAINT colid)? constraintelem ; typedtableelement - : columnOptions - | tableconstraint + : column_name_create (KW_WITH KW_OPTIONS)? colconstraint* + | (KW_CONSTRAINT colid)? constraintelem ; column_def - : column_name_create typename create_generic_options? storageCluase? compressionCluase? ( - KW_COLLATE any_name - )? (KW_WITH KW_OPTIONS)? colquallist - ; - -compressionCluase - : KW_COMPRESSION colid - ; - -storageCluase - : KW_STORAGE (KW_PLAIN | KW_EXTERNAL | KW_EXTENDED | KW_MAIN | KW_DEFAULT | colid) - ; - -columnOptions - : column_name_create (KW_WITH KW_OPTIONS)? colquallist - ; - -colquallist - : colconstraint* + : column_name_create typename create_generic_options? ( + KW_STORAGE (KW_PLAIN | KW_EXTERNAL | KW_EXTENDED | KW_MAIN | KW_DEFAULT | colid) + )? (KW_COMPRESSION colid)? (opt_collate_clause)? (KW_WITH KW_OPTIONS)? colconstraint* ; colconstraint - : (KW_CONSTRAINT name)? colconstraintelem deferrable_trigger? initially_trigger? - | colconstraintelem deferrable_trigger? initially_trigger? + : (KW_CONSTRAINT colid)? colconstraintelem (KW_NOT? KW_DEFERRABLE)? ( + KW_INITIALLY (KW_DEFERRED | KW_IMMEDIATE) + )? ; colconstraintelem - : KW_NOT KW_NULL - | KW_NULL + : KW_NOT? KW_NULL | KW_UNIQUE opt_definition? optconstablespace? - | KW_UNIQUE nulls_distinct? index_paramenters_create + | KW_UNIQUE (KW_NULLS KW_NOT? KW_DISTINCT)? ( + (KW_INCLUDE index_params)? with_clause? optconstablespace? + ) | KW_PRIMARY KW_KEY opt_definition? optconstablespace? - | KW_CHECK OPEN_PAREN a_expr CLOSE_PAREN opt_no_inherit? - | KW_DEFAULT b_expr + | KW_CHECK OPEN_PAREN expression CLOSE_PAREN (KW_NO KW_INHERIT)? + | KW_DEFAULT primaryExpression | KW_GENERATED generated_when KW_AS ( - KW_IDENTITY optparenthesizedseqoptlist? - | OPEN_PAREN a_expr CLOSE_PAREN KW_STORED + KW_IDENTITY (OPEN_PAREN seqoptelem+ CLOSE_PAREN)? + | OPEN_PAREN expression CLOSE_PAREN KW_STORED ) | KW_REFERENCES qualified_name opt_column_list? key_match? key_actions? - | opt_collate - ; - -nulls_distinct - : KW_NULLS KW_NOT? KW_DISTINCT + | opt_collate_clause ; generated_when @@ -821,23 +653,6 @@ generated_when | KW_BY KW_DEFAULT ; -deferrable_trigger - : KW_DEFERRABLE - | KW_NOT KW_DEFERRABLE - ; - -initially_trigger - : KW_INITIALLY (KW_DEFERRED | KW_IMMEDIATE) - ; - -tablelikeclause - : KW_LIKE qualified_name tablelikeoptionlist - ; - -tablelikeoptionlist - : ((KW_INCLUDING | KW_EXCLUDING) tablelikeoption)* - ; - tablelikeoption : KW_COMMENTS | KW_CONSTRAINTS @@ -850,29 +665,18 @@ tablelikeoption | KW_ALL ; -tableconstraint - : KW_CONSTRAINT name constraintelem - | constraintelem - ; - constraintelem - : KW_CHECK OPEN_PAREN a_expr CLOSE_PAREN constraintattributespec - | KW_UNIQUE ( - OPEN_PAREN column_list CLOSE_PAREN opt_c_include? opt_definition? optconstablespace? constraintattributespec - | existingindex constraintattributespec - ) - | KW_PRIMARY KW_KEY ( - OPEN_PAREN column_list CLOSE_PAREN opt_c_include? opt_definition? optconstablespace? constraintattributespec - | existingindex constraintattributespec + : KW_CHECK OPEN_PAREN expression CLOSE_PAREN constraintattributeElem* + | (KW_UNIQUE | ( KW_PRIMARY KW_KEY)) ( + opt_column_list opt_c_include? opt_definition? optconstablespace? constraintattributeElem* + | existingindex constraintattributeElem* ) - | KW_EXCLUDE access_method_clause? OPEN_PAREN exclusionconstraintlist CLOSE_PAREN opt_c_include? opt_definition? optconstablespace? - exclusionwhereclause? constraintattributespec - | KW_FOREIGN KW_KEY OPEN_PAREN column_list CLOSE_PAREN KW_REFERENCES qualified_name opt_column_list? key_match? key_actions? - constraintattributespec - ; - -opt_no_inherit - : KW_NO KW_INHERIT + | KW_EXCLUDE table_access_method_clause? OPEN_PAREN exclusionconstraintelem ( + COMMA exclusionconstraintelem + )* CLOSE_PAREN opt_c_include? opt_definition? optconstablespace? ( + KW_WHERE OPEN_PAREN expression CLOSE_PAREN + )? constraintattributeElem* + | KW_FOREIGN KW_KEY opt_column_list KW_REFERENCES qualified_name opt_column_list? key_match? key_actions? constraintattributeElem* ; opt_column_list @@ -880,42 +684,28 @@ opt_column_list ; opt_column_list_create - : OPEN_PAREN column_list_create CLOSE_PAREN + : OPEN_PAREN column_name_create (COMMA column_name_create)* CLOSE_PAREN ; column_list : column_name (COMMA column_name)* ; -column_list_create - : column_name_create (COMMA column_name_create)* - ; - opt_c_include - : KW_INCLUDE OPEN_PAREN column_list CLOSE_PAREN + : KW_INCLUDE opt_column_list ; key_match : KW_MATCH (KW_FULL | KW_PARTIAL | KW_SIMPLE) ; -exclusionconstraintlist - : exclusionconstraintelem (COMMA exclusionconstraintelem)* - ; - exclusionconstraintelem : index_elem KW_WITH (any_operator | KW_OPERATOR OPEN_PAREN any_operator CLOSE_PAREN) ; -exclusionwhereclause - : KW_WHERE OPEN_PAREN a_expr CLOSE_PAREN - ; - key_actions - : key_update - | key_delete - | key_update key_delete - | key_delete key_update + : key_update key_delete? + | key_delete key_update? ; key_update @@ -937,32 +727,21 @@ optinherit : KW_INHERITS OPEN_PAREN qualified_name_list CLOSE_PAREN ; -optpartitionspec - : partitionspec - ; - partitionspec - : KW_PARTITION KW_BY colid OPEN_PAREN part_params CLOSE_PAREN - ; - -part_params - : part_elem (COMMA part_elem)* + : KW_PARTITION KW_BY colid OPEN_PAREN part_elem (COMMA part_elem)* CLOSE_PAREN ; part_elem - : column_name opt_collate? opt_class? - | func_expr_windowless opt_collate? opt_class? - | OPEN_PAREN a_expr CLOSE_PAREN opt_collate? opt_class? + : (column_name | func_expr_windowless | (OPEN_PAREN expression CLOSE_PAREN)) opt_collate_clause? any_name? ; table_access_method_clause - : KW_USING name + : KW_USING colid ; optwith : KW_WITH reloptions - | KW_WITHOUT KW_OIDS - | KW_WITH KW_OIDS + | (KW_WITHOUT | KW_WITH) KW_OIDS ; oncommitoption @@ -973,23 +752,19 @@ opttablespace : KW_TABLESPACE tablespace_name ; -index_paramenters_create - : opt_include? with_clause? optconstablespace? - ; - optconstablespace - : KW_USING KW_INDEX KW_TABLESPACE tablespace_name + : KW_USING KW_INDEX opttablespace ; existingindex - : KW_USING KW_INDEX name + : KW_USING KW_INDEX colid ; createstatsstmt - : KW_CREATE KW_STATISTICS (opt_if_not_exists? any_name)? opt_name_list? KW_ON ( - column_expr_list + : KW_CREATE KW_STATISTICS (opt_if_not_exists? any_name)? opt_column_list? KW_ON ( + column_expr (COMMA column_expr)* | expr_list - ) KW_FROM from_list + ) from_clause ; alterstatsstmt @@ -1009,342 +784,193 @@ opt_with_data ; creatematviewstmt - : KW_CREATE optnolog? KW_MATERIALIZED KW_VIEW opt_if_not_exists? create_mv_target KW_AS selectstmt opt_with_data? # createMaterializedView - ; - -create_mv_target - : view_name_create opt_column_list_create? table_access_method_clause? opt_reloptions? opttablespace? - ; - -optnolog - : KW_UNLOGGED + : KW_CREATE KW_UNLOGGED? KW_MATERIALIZED KW_VIEW opt_if_not_exists? view_name_create opt_column_list_create? table_access_method_clause? + opt_reloptions? opttablespace? KW_AS selectstmt opt_with_data? # createMaterializedView ; refreshmatviewstmt - : KW_REFRESH KW_MATERIALIZED KW_VIEW opt_concurrently? view_name opt_with_data? + : KW_REFRESH KW_MATERIALIZED KW_VIEW KW_CONCURRENTLY? view_name opt_with_data? ; createseqstmt - : KW_CREATE opttemp? KW_SEQUENCE opt_if_not_exists? qualified_name optseqoptlist? + : KW_CREATE opttemp? KW_SEQUENCE opt_if_not_exists? qualified_name (seqoptelem+)? ; alterseqstmt - : KW_ALTER KW_SEQUENCE opt_if_exists? qualified_name seqoptlist - ; - -optseqoptlist - : seqoptlist - ; - -optparenthesizedseqoptlist - : OPEN_PAREN seqoptlist CLOSE_PAREN - ; - -seqoptlist - : seqoptelem+ + : KW_ALTER KW_SEQUENCE opt_if_exists? qualified_name seqoptelem+ ; seqoptelem : KW_AS simpletypename - | KW_CACHE numericonly - | KW_CYCLE - | KW_INCREMENT opt_by? numericonly - | KW_MAXVALUE numericonly - | KW_MINVALUE numericonly + | KW_CACHE numericonly? + | KW_INCREMENT KW_BY? numericonly + | (KW_MAXVALUE | KW_MINVALUE) numericonly | KW_NO (KW_MAXVALUE | KW_MINVALUE | KW_CYCLE) | KW_OWNED KW_BY column_name | KW_SEQUENCE KW_NAME any_name - | KW_START opt_with? numericonly - | KW_RESTART opt_with? numericonly? - ; - -opt_by - : KW_BY + | KW_START KW_WITH? numericonly + | KW_RESTART KW_WITH? numericonly? ; numericonly - : fconst - | PLUS fconst - | MINUS fconst + : (PLUS | MINUS)? Numeric | signediconst ; -numericonly_list - : numericonly (COMMA numericonly)* - ; - createplangstmt - : KW_CREATE opt_or_replace? opt_trusted? opt_procedural? KW_LANGUAGE name ( - KW_HANDLER handler_name opt_inline_handler? opt_validator? + : KW_CREATE opt_or_replace? KW_TRUSTED? KW_PROCEDURAL? KW_LANGUAGE colid ( + KW_HANDLER any_name (KW_INLINE any_name)? (KW_VALIDATOR any_name | KW_NO KW_VALIDATOR)? )? ; -opt_trusted - : KW_TRUSTED - ; - -handler_name - : name attrs? - ; - -opt_inline_handler - : KW_INLINE handler_name - ; - -validator_clause - : KW_VALIDATOR handler_name - | KW_NO KW_VALIDATOR - ; - -opt_validator - : validator_clause - ; - -opt_procedural - : KW_PROCEDURAL - ; - createtablespacestmt - : KW_CREATE KW_TABLESPACE tablespace_name opttablespaceowner? KW_LOCATION sconst opt_reloptions? - ; - -opttablespaceowner - : KW_OWNER rolespec + : KW_CREATE opttablespace (KW_OWNER rolespec)? KW_LOCATION sconst opt_reloptions? ; createextensionstmt - : KW_CREATE KW_EXTENSION opt_if_not_exists? name opt_with? create_extension_opt_list - ; - -create_extension_opt_list - : create_extension_opt_item* - ; - -create_extension_opt_item - : KW_SCHEMA schema_name - | KW_VERSION nonreservedword_or_sconst - | KW_FROM nonreservedword_or_sconst - | KW_CASCADE + : KW_CREATE KW_EXTENSION opt_if_not_exists? colid KW_WITH? ( + KW_SCHEMA schema_name + | (KW_VERSION | KW_FROM) nonreservedword_or_sconst + | KW_CASCADE + )* ; alterextensionstmt - : KW_ALTER KW_EXTENSION name KW_UPDATE alter_extension_opt_list - ; - -alter_extension_opt_list - : alter_extension_opt_item* - ; - -alter_extension_opt_item - : KW_TO nonreservedword_or_sconst + : KW_ALTER KW_EXTENSION colid KW_UPDATE (KW_TO nonreservedword_or_sconst)* ; alterextensioncontentsstmt - : KW_ALTER KW_EXTENSION name add_drop object_type_name - | KW_ALTER KW_EXTENSION name add_drop object_type_any_name - | KW_ALTER KW_EXTENSION name add_drop KW_AGGREGATE aggregate_with_argtypes - | KW_ALTER KW_EXTENSION name add_drop KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN - | KW_ALTER KW_EXTENSION name add_drop KW_DOMAIN typename - | KW_ALTER KW_EXTENSION name add_drop KW_FUNCTION function_with_argtypes - | KW_ALTER KW_EXTENSION name add_drop KW_OPERATOR operator_with_argtypes - | KW_ALTER KW_EXTENSION name add_drop KW_OPERATOR KW_CLASS any_name KW_USING name - | KW_ALTER KW_EXTENSION name add_drop KW_OPERATOR KW_FAMILY any_name KW_USING name - | KW_ALTER KW_EXTENSION name add_drop KW_PROCEDURE procedure_with_argtypes - | KW_ALTER KW_EXTENSION name add_drop KW_ROUTINE routine_with_argtypes - | KW_ALTER KW_EXTENSION name add_drop KW_TRANSFORM KW_FOR typename KW_LANGUAGE name - | KW_ALTER KW_EXTENSION name add_drop KW_TYPE typename + : KW_ALTER KW_EXTENSION colid (KW_ADD | KW_DROP) ( + KW_TRANSFORM KW_FOR typename KW_LANGUAGE colid + | KW_ROUTINE routine_with_argtypes + | KW_PROCEDURE procedure_with_argtypes + | KW_OPERATOR (KW_CLASS | KW_FAMILY) any_name table_access_method_clause + | KW_OPERATOR operator_with_argtypes + | KW_FUNCTION function_with_argtypes + | (KW_DOMAIN | KW_TYPE) typename + | KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN + | KW_AGGREGATE aggregate_with_argtypes + | object_type_name + | object_type_any_name + ) ; createfdwstmt - : KW_CREATE KW_FOREIGN KW_DATA KW_WRAPPER name opt_fdw_options? create_generic_options? + : KW_CREATE KW_FOREIGN KW_DATA KW_WRAPPER colid (fdw_option+)? create_generic_options? ; fdw_option - : KW_HANDLER handler_name - | KW_NO KW_HANDLER - | KW_VALIDATOR handler_name - | KW_NO KW_VALIDATOR - ; - -fdw_options - : fdw_option+ - ; - -opt_fdw_options - : fdw_options + : (KW_HANDLER | KW_VALIDATOR) any_name? + | KW_NO (KW_HANDLER | KW_VALIDATOR) ; alterfdwstmt - : KW_ALTER KW_FOREIGN KW_DATA KW_WRAPPER name opt_fdw_options? alter_generic_options - | KW_ALTER KW_FOREIGN KW_DATA KW_WRAPPER name fdw_options + : KW_ALTER KW_FOREIGN KW_DATA KW_WRAPPER colid ( + (fdw_option+)? alter_generic_options + | fdw_option+ + ) ; create_generic_options - : KW_OPTIONS OPEN_PAREN generic_option_list CLOSE_PAREN - ; - -generic_option_list - : generic_option_elem (COMMA generic_option_elem)* + : KW_OPTIONS OPEN_PAREN generic_option_elem (COMMA generic_option_elem)* CLOSE_PAREN ; alter_generic_options - : KW_OPTIONS OPEN_PAREN alter_generic_option_list CLOSE_PAREN - ; - -alter_generic_option_list - : alter_generic_option_elem (COMMA alter_generic_option_elem)* + : KW_OPTIONS OPEN_PAREN alter_generic_option_elem (COMMA alter_generic_option_elem)* CLOSE_PAREN ; alter_generic_option_elem - : generic_option_elem - | KW_SET generic_option_elem - | KW_ADD generic_option_elem - | KW_DROP generic_option_elem + : (KW_SET | KW_ADD | KW_DROP) generic_option_elem ; generic_option_elem - : generic_option_name generic_option_arg - ; - -generic_option_name - : collabel - ; - -generic_option_arg - : sconst + : collabel sconst ; createforeignserverstmt - : KW_CREATE KW_SERVER opt_if_not_exists? name opt_type? opt_foreign_server_version? KW_FOREIGN KW_DATA KW_WRAPPER name create_generic_options? - ; - -opt_type - : KW_TYPE sconst + : KW_CREATE KW_SERVER opt_if_not_exists? colid (KW_TYPE sconst)? foreign_server_version? KW_FOREIGN KW_DATA KW_WRAPPER colid + create_generic_options? ; foreign_server_version : KW_VERSION (sconst | KW_NULL) ; -opt_foreign_server_version - : foreign_server_version - ; - alterforeignserverstmt - : KW_ALTER KW_SERVER name ( + : KW_ALTER KW_SERVER colid ( alter_generic_options | foreign_server_version alter_generic_options? ) ; createforeigntablestmt - : KW_CREATE KW_FOREIGN KW_TABLE opt_if_not_exists? table_name_create OPEN_PAREN opttableelementlist? CLOSE_PAREN optinherit? KW_SERVER name + : KW_CREATE KW_FOREIGN KW_TABLE opt_if_not_exists? table_name_create OPEN_PAREN tableelementlist? CLOSE_PAREN optinherit? KW_SERVER colid create_generic_options? # createForeignTable | KW_CREATE KW_FOREIGN KW_TABLE opt_if_not_exists? table_name_create KW_PARTITION KW_OF table_name opttypedtableelementlist? partitionboundspec - KW_SERVER name create_generic_options? # createPartitionForeignTable + KW_SERVER colid create_generic_options? # createPartitionForeignTable ; importforeignschemastmt - : KW_IMPORT KW_FOREIGN KW_SCHEMA schema_name import_qualification? KW_FROM KW_SERVER name KW_INTO name create_generic_options? - ; - -import_qualification_type - : KW_LIMIT KW_TO - | KW_EXCEPT - ; - -import_qualification - : import_qualification_type OPEN_PAREN relation_expr_list CLOSE_PAREN + : KW_IMPORT KW_FOREIGN KW_SCHEMA schema_name ( + (KW_LIMIT KW_TO | KW_EXCEPT) OPEN_PAREN relation_expr_list CLOSE_PAREN + )? KW_FROM KW_SERVER colid KW_INTO colid create_generic_options? ; createusermappingstmt - : KW_CREATE KW_USER KW_MAPPING opt_if_not_exists? KW_FOR auth_ident KW_SERVER name create_generic_options? - ; - -auth_ident - : rolespec - | KW_USER + : KW_CREATE KW_USER KW_MAPPING opt_if_not_exists? KW_FOR (rolespec | KW_USER) KW_SERVER colid create_generic_options? ; alterusermappingstmt - : KW_ALTER KW_USER KW_MAPPING KW_FOR auth_ident KW_SERVER name alter_generic_options + : KW_ALTER KW_USER KW_MAPPING KW_FOR (rolespec | KW_USER) KW_SERVER colid alter_generic_options ; createpolicystmt - : KW_CREATE KW_POLICY name KW_ON qualified_name rowsecuritydefaultpermissive? rowsecuritydefaultforcmd? rowsecuritydefaulttorole? - rowsecurityoptionalexpr? rowsecurityoptionalwithcheck? + : KW_CREATE KW_POLICY colid KW_ON qualified_name ( + KW_AS (KW_PERMISSIVE | KW_RESTRICTIVE | identifier) + )? (KW_FOR (KW_ALL | KW_SELECT | KW_INSERT | KW_UPDATE | KW_DELETE))? (KW_TO role_list)? rowsecurityoptionalexpr? rowsecurityoptionalwithcheck? ; alterpolicystmt - : KW_ALTER KW_POLICY name KW_ON qualified_name rowsecurityoptionaltorole? rowsecurityoptionalexpr? rowsecurityoptionalwithcheck? + : KW_ALTER KW_POLICY colid KW_ON qualified_name (KW_TO role_list)? rowsecurityoptionalexpr? rowsecurityoptionalwithcheck? ; alterprocedurestmt - : KW_ALTER KW_PROCEDURE procedure_name func_args? procedure_cluase - ; - -procedure_cluase - : procedure_action (procedure_action)* KW_RESTRICT? - | KW_RENAME KW_TO procedure_name_create - | KW_OWNER KW_TO rolespec - | KW_SET KW_SCHEMA schema_name_create - | KW_NO? KW_DEPENDS KW_ON KW_EXTENSION name + : KW_ALTER KW_PROCEDURE procedure_name func_args? ( + procedure_action (procedure_action)* KW_RESTRICT? + | KW_RENAME KW_TO procedure_name_create + | KW_OWNER KW_TO rolespec + | KW_SET KW_SCHEMA schema_name_create + | KW_NO? KW_DEPENDS KW_ON KW_EXTENSION colid + ) ; procedure_action : (KW_EXTERNAL? KW_SECURITY KW_INVOKER | KW_EXTERNAL? KW_SECURITY KW_DEFINER) - | KW_SET name (KW_TO | STAR) (name | KW_DEFAULT) - | KW_SET name KW_FROM KW_CURRENT - | KW_RESET name - | KW_RESET KW_ALL + | KW_SET colid (KW_TO | STAR) (colid | KW_DEFAULT) + | KW_SET colid KW_FROM KW_CURRENT + | KW_RESET (colid | KW_ALL) ; rowsecurityoptionalexpr - : KW_USING OPEN_PAREN a_expr CLOSE_PAREN + : KW_USING OPEN_PAREN expression CLOSE_PAREN ; rowsecurityoptionalwithcheck - : KW_WITH KW_CHECK OPEN_PAREN a_expr CLOSE_PAREN - ; - -rowsecuritydefaulttorole - : KW_TO role_list - ; - -rowsecurityoptionaltorole - : KW_TO role_list - ; - -rowsecuritydefaultpermissive - : KW_AS (KW_PERMISSIVE | KW_RESTRICTIVE | identifier) - ; - -rowsecuritydefaultforcmd - : KW_FOR row_security_cmd - ; - -row_security_cmd - : KW_ALL - | KW_SELECT - | KW_INSERT - | KW_UPDATE - | KW_DELETE + : KW_WITH KW_CHECK OPEN_PAREN expression CLOSE_PAREN ; createamstmt - : KW_CREATE KW_ACCESS KW_METHOD name KW_TYPE am_type KW_HANDLER handler_name - ; - -am_type - : KW_INDEX - | KW_TABLE + : KW_CREATE KW_ACCESS KW_METHOD colid KW_TYPE (KW_INDEX | KW_TABLE) KW_HANDLER any_name ; createtrigstmt - : KW_CREATE opt_or_replace? KW_TRIGGER name triggeractiontime triggerevents KW_ON table_name triggerreferencing? triggerforspec? triggerwhen? - KW_EXECUTE function_or_procedure OPEN_PAREN triggerfuncargs CLOSE_PAREN - | KW_CREATE opt_or_replace? KW_CONSTRAINT? KW_TRIGGER name triggeractiontime triggerevents KW_ON table_name optconstrfromtable? - constraintattributespec foreachrow? triggerwhen? KW_EXECUTE function_or_procedure OPEN_PAREN triggerfuncargs CLOSE_PAREN + : KW_CREATE opt_or_replace? KW_TRIGGER colid triggeractiontime triggerevents KW_ON table_name ( + KW_REFERENCING ((KW_NEW | KW_OLD) (KW_TABLE | KW_ROW) KW_AS? colid)+ + )? (KW_FOR KW_EACH? (KW_ROW | KW_STATEMENT))? triggerwhen? KW_EXECUTE function_or_procedure OPEN_PAREN triggerfuncargs CLOSE_PAREN + | KW_CREATE opt_or_replace? KW_CONSTRAINT? KW_TRIGGER colid triggeractiontime triggerevents KW_ON table_name ( + KW_FROM qualified_name + )? constraintattributeElem* (KW_FOR KW_EACH? (KW_ROW | KW_STATEMENT))? triggerwhen? KW_EXECUTE function_or_procedure OPEN_PAREN triggerfuncargs + CLOSE_PAREN ; triggeractiontime @@ -1353,15 +979,6 @@ triggeractiontime | KW_INSTEAD KW_OF ; -foreachrow - : KW_FOR KW_EACH? roworstatment - ; - -roworstatment - : KW_ROW - | KW_STATEMENT - ; - triggerevents : triggeroneevent (KW_OR triggeroneevent)* ; @@ -1369,140 +986,72 @@ triggerevents triggeroneevent : KW_INSERT | KW_DELETE - | KW_UPDATE - | KW_UPDATE KW_OF column_list + | KW_UPDATE (KW_OF column_list)? | KW_TRUNCATE ; -triggerreferencing - : KW_REFERENCING triggertransitions +triggerwhen + : KW_WHEN OPEN_PAREN expression CLOSE_PAREN ; -triggertransitions - : triggertransition+ +function_or_procedure + : KW_FUNCTION function_name + | KW_PROCEDURE procedure_name ; -triggertransition - : transitionoldornew transitionrowortable opt_as? transitionrelname +triggerfuncargs + : (triggerfuncarg |) (COMMA triggerfuncarg)* ; -transitionoldornew - : KW_NEW - | KW_OLD +triggerfuncarg + : Integral + | Numeric + | sconst + | collabel ; -transitionrowortable - : KW_TABLE - | KW_ROW +constraintattributeElem + : KW_NOT? KW_DEFERRABLE + | KW_INITIALLY (KW_IMMEDIATE | KW_DEFERRED) + | KW_NOT KW_VALID + | KW_NO KW_INHERIT ; -transitionrelname - : colid - ; - -triggerforspec - : KW_FOR triggerforopteach? triggerfortype - ; - -triggerforopteach - : KW_EACH - ; - -triggerfortype - : KW_ROW - | KW_STATEMENT - ; - -triggerwhen - : KW_WHEN OPEN_PAREN a_expr CLOSE_PAREN - ; - -function_or_procedure - : KW_FUNCTION function_name - | KW_PROCEDURE procedure_name - ; - -triggerfuncargs - : (triggerfuncarg |) (COMMA triggerfuncarg)* - ; - -triggerfuncarg - : iconst - | fconst - | sconst - | collabel - ; - -optconstrfromtable - : KW_FROM qualified_name - ; - -constraintattributespec - : constraintattributeElem* - ; - -constraintattributeElem - : KW_NOT KW_DEFERRABLE - | KW_DEFERRABLE - | KW_INITIALLY KW_IMMEDIATE - | KW_INITIALLY KW_DEFERRED - | KW_NOT KW_VALID - | KW_NO KW_INHERIT - ; - -createeventtrigstmt - : KW_CREATE KW_EVENT KW_TRIGGER name KW_ON collabel KW_EXECUTE function_or_procedure OPEN_PAREN CLOSE_PAREN - | KW_CREATE KW_EVENT KW_TRIGGER name KW_ON collabel KW_WHEN event_trigger_when_list KW_EXECUTE function_or_procedure OPEN_PAREN CLOSE_PAREN - ; - -event_trigger_when_list - : event_trigger_when_item (KW_AND event_trigger_when_item)* +createeventtrigstmt + : KW_CREATE KW_EVENT KW_TRIGGER colid KW_ON collabel ( + KW_WHEN event_trigger_when_item (KW_AND event_trigger_when_item)* + )? KW_EXECUTE function_or_procedure OPEN_PAREN CLOSE_PAREN ; event_trigger_when_item - : colid KW_IN OPEN_PAREN event_trigger_value_list CLOSE_PAREN - ; - -event_trigger_value_list - : sconst (COMMA sconst)* + : colid KW_IN OPEN_PAREN sconst (notify_payload)* CLOSE_PAREN ; altereventtrigstmt - : KW_ALTER KW_EVENT KW_TRIGGER name enable_trigger - ; - -enable_trigger - : KW_ENABLE (KW_REPLICA | KW_ALWAYS)? - | KW_DISABLE + : KW_ALTER KW_EVENT KW_TRIGGER colid (KW_ENABLE (KW_REPLICA | KW_ALWAYS)? | KW_DISABLE) ; createassertionstmt - : KW_CREATE KW_ASSERTION any_name KW_CHECK OPEN_PAREN a_expr CLOSE_PAREN constraintattributespec + : KW_CREATE KW_ASSERTION any_name KW_CHECK OPEN_PAREN expression CLOSE_PAREN constraintattributeElem* ; definestmt - : KW_CREATE opt_or_replace? KW_AGGREGATE function_name aggr_args definition - | KW_CREATE opt_or_replace? KW_AGGREGATE function_name old_aggr_definition + : KW_CREATE opt_or_replace? KW_AGGREGATE function_name ( + (aggr_args definition) + | OPEN_PAREN old_aggr_elem (COMMA old_aggr_elem)* CLOSE_PAREN + ) | KW_CREATE KW_OPERATOR any_operator definition - | KW_CREATE KW_TYPE any_name definition - | KW_CREATE KW_TYPE any_name - | KW_CREATE KW_TYPE any_name KW_AS OPEN_PAREN opttablefuncelementlist? CLOSE_PAREN - | KW_CREATE KW_TYPE any_name KW_AS KW_ENUM OPEN_PAREN opt_enum_val_list? CLOSE_PAREN - | KW_CREATE KW_TYPE any_name KW_AS KW_RANGE definition - | KW_CREATE KW_TEXT KW_SEARCH KW_PARSER any_name definition - | KW_CREATE KW_TEXT KW_SEARCH KW_DICTIONARY any_name definition - | KW_CREATE KW_TEXT KW_SEARCH KW_TEMPLATE any_name definition - | KW_CREATE KW_TEXT KW_SEARCH KW_CONFIGURATION any_name definition - | KW_CREATE KW_COLLATION opt_if_not_exists? any_name definition - | KW_CREATE KW_COLLATION opt_if_not_exists? any_name KW_FROM any_name + | KW_CREATE KW_TYPE any_name KW_AS ( + OPEN_PAREN tablefuncelementlist? CLOSE_PAREN + | KW_ENUM OPEN_PAREN (sconst (notify_payload)*)? CLOSE_PAREN + ) + | KW_CREATE KW_TYPE any_name ((KW_AS KW_RANGE)? definition)? + | KW_CREATE KW_TEXT KW_SEARCH (KW_PARSER | KW_DICTIONARY | KW_TEMPLATE | KW_CONFIGURATION) any_name definition + | KW_CREATE KW_COLLATION opt_if_not_exists? any_name (definition | (KW_FROM any_name)) ; definition - : OPEN_PAREN def_list CLOSE_PAREN - ; - -def_list - : def_elem (COMMA def_elem)* + : OPEN_PAREN def_elem (COMMA def_elem)* CLOSE_PAREN ; def_elem @@ -1518,26 +1067,10 @@ def_arg | KW_NONE ; -old_aggr_definition - : OPEN_PAREN old_aggr_list CLOSE_PAREN - ; - -old_aggr_list - : old_aggr_elem (COMMA old_aggr_elem)* - ; - old_aggr_elem : identifier EQUAL def_arg ; -opt_enum_val_list - : enum_val_list - ; - -enum_val_list - : sconst (COMMA sconst)* - ; - alterenumstmt : KW_ALTER KW_TYPE any_name KW_ADD KW_VALUE opt_if_not_exists? sconst ( (KW_BEFORE | KW_AFTER) sconst @@ -1550,54 +1083,32 @@ opt_if_not_exists ; createopclassstmt - : KW_CREATE KW_OPERATOR KW_CLASS any_name opt_default? KW_FOR KW_TYPE typename KW_USING name opt_opfamily? KW_AS opclass_item_list - ; - -opclass_item_list - : opclass_item (COMMA opclass_item)* + : KW_CREATE KW_OPERATOR KW_CLASS any_name KW_DEFAULT? KW_FOR KW_TYPE typename table_access_method_clause ( + KW_FAMILY any_name + )? KW_AS opclass_item (COMMA opclass_item)* ; opclass_item - : KW_OPERATOR iconst any_operator opclass_purpose? opt_recheck? - | KW_OPERATOR iconst operator_with_argtypes opclass_purpose? opt_recheck? - | KW_FUNCTION iconst function_with_argtypes - | KW_FUNCTION iconst OPEN_PAREN type_list CLOSE_PAREN function_with_argtypes + : KW_OPERATOR Integral any_operator oper_argtypes? ( + KW_FOR (KW_SEARCH | (KW_ORDER KW_BY any_name)) + )? KW_RECHECK? + | KW_FUNCTION Integral prep_type_clause? function_with_argtypes | KW_STORAGE typename ; -opt_default - : KW_DEFAULT - ; - -opt_opfamily - : KW_FAMILY any_name - ; - -opclass_purpose - : KW_FOR KW_SEARCH - | KW_FOR KW_ORDER KW_BY any_name - ; - -opt_recheck - : KW_RECHECK - ; - createopfamilystmt - : KW_CREATE KW_OPERATOR KW_FAMILY any_name KW_USING name + : KW_CREATE KW_OPERATOR KW_FAMILY any_name table_access_method_clause ; alteropfamilystmt - : KW_ALTER KW_OPERATOR KW_FAMILY any_name KW_USING name KW_ADD opclass_item_list - | KW_ALTER KW_OPERATOR KW_FAMILY any_name KW_USING name KW_DROP opclass_drop_list - ; - -opclass_drop_list - : opclass_drop (COMMA opclass_drop)* + : KW_ALTER KW_OPERATOR KW_FAMILY any_name table_access_method_clause ( + KW_ADD opclass_item (COMMA opclass_item)* + | KW_DROP opclass_drop (COMMA opclass_drop)* + ) ; opclass_drop - : KW_OPERATOR iconst OPEN_PAREN type_list CLOSE_PAREN - | KW_FUNCTION iconst OPEN_PAREN type_list CLOSE_PAREN + : (KW_OPERATOR | KW_FUNCTION) Integral prep_type_clause ; reassignownedstmt @@ -1605,106 +1116,74 @@ reassignownedstmt ; dropstmt - : KW_DROP KW_TABLE opt_if_exists? table_name_list opt_drop_behavior? - | KW_DROP KW_SEQUENCE opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_VIEW opt_if_exists? view_nameList opt_drop_behavior? - | KW_DROP KW_MATERIALIZED KW_VIEW opt_if_exists? view_nameList opt_drop_behavior? - | KW_DROP KW_INDEX opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_FOREIGN KW_TABLE opt_if_exists? table_name_list opt_drop_behavior? - | KW_DROP KW_COLLATION opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_CONVERSION opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_STATISTICS opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_TEXT KW_SEARCH KW_PARSER opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_TEXT KW_SEARCH KW_DICTIONARY opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_TEXT KW_SEARCH KW_TEMPLATE opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_TEXT KW_SEARCH KW_CONFIGURATION opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_ACCESS KW_METHOD opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_EVENT KW_TRIGGER opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_EXTENSION opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_FOREIGN KW_DATA KW_WRAPPER opt_if_exists? name_list opt_drop_behavior? - | KW_DROP opt_procedural? KW_LANGUAGE opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_PUBLICATION opt_if_exists? name_list opt_drop_behavior? - | KW_DROP KW_SERVER opt_if_exists? name_list opt_drop_behavior? + : KW_DROP ( + KW_SEQUENCE + | KW_INDEX + | KW_COLLATION + | KW_CONVERSION + | KW_STATISTICS + | KW_PUBLICATION + | KW_SERVER + | KW_ACCESS KW_METHOD + | KW_EVENT KW_TRIGGER + | KW_EXTENSION + | KW_PROCEDURAL? KW_LANGUAGE + | KW_FOREIGN KW_DATA KW_WRAPPER + | KW_TEXT KW_SEARCH (KW_PARSER | KW_DICTIONARY | KW_TEMPLATE | KW_CONFIGURATION) + ) opt_if_exists? name_list opt_drop_behavior? + | KW_DROP KW_MATERIALIZED? KW_VIEW opt_if_exists? view_name (COMMA view_name)* opt_drop_behavior? + | KW_DROP KW_FOREIGN? KW_TABLE opt_if_exists? table_name_list opt_drop_behavior? | KW_DROP KW_SCHEMA opt_if_exists? schema_name_list opt_drop_behavior? - | KW_DROP KW_POLICY opt_if_exists? name KW_ON any_name opt_drop_behavior? - | KW_DROP KW_RULE opt_if_exists? name KW_ON any_name opt_drop_behavior? - | KW_DROP KW_TRIGGER opt_if_exists? name KW_ON any_name opt_drop_behavior? - | KW_DROP KW_TYPE opt_if_exists? type_name_list opt_drop_behavior? - | KW_DROP KW_DOMAIN opt_if_exists? type_name_list opt_drop_behavior? + | KW_DROP (KW_POLICY | KW_RULE | KW_TRIGGER) opt_if_exists? colid KW_ON any_name opt_drop_behavior? + | KW_DROP (KW_TYPE | KW_DOMAIN) opt_if_exists? typename (COMMA typename)* opt_drop_behavior? | KW_DROP KW_INDEX KW_CONCURRENTLY opt_if_exists? any_name_list opt_drop_behavior? | KW_DROP KW_CAST opt_if_exists? OPEN_PAREN typename KW_AS typename CLOSE_PAREN opt_drop_behavior? - | KW_DROP KW_OPERATOR KW_CLASS opt_if_exists? any_name KW_USING name opt_drop_behavior? - | KW_DROP KW_OPERATOR KW_FAMILY opt_if_exists? any_name KW_USING name opt_drop_behavior? + | KW_DROP KW_OPERATOR (KW_CLASS | KW_FAMILY) opt_if_exists? any_name table_access_method_clause opt_drop_behavior? | KW_DROP KW_OWNED KW_BY role_list opt_drop_behavior? - | KW_DROP KW_VIEW opt_if_exists? view_nameList opt_drop_behavior? - | KW_DROP KW_SUBSCRIPTION opt_if_exists? name opt_drop_behavior? + | KW_DROP KW_SUBSCRIPTION opt_if_exists? colid opt_drop_behavior? | KW_DROP KW_TABLESPACE opt_if_exists? tablespace_name - | KW_DROP KW_TRANSFORM opt_if_exists? KW_FOR typename KW_LANGUAGE name opt_drop_behavior? + | KW_DROP KW_TRANSFORM opt_if_exists? KW_FOR typename KW_LANGUAGE colid opt_drop_behavior? | KW_DROP (KW_ROLE | KW_USER | KW_GROUP) opt_if_exists? role_list - | KW_DROP KW_USER KW_MAPPING opt_if_exists? KW_FOR auth_ident KW_SERVER name + | KW_DROP KW_USER KW_MAPPING opt_if_exists? KW_FOR (rolespec | KW_USER) KW_SERVER colid | KW_DROP KW_DATABASE opt_if_exists? database_name ( - opt_with? OPEN_PAREN drop_option_list CLOSE_PAREN + KW_WITH? (OPEN_PAREN KW_FORCE (COMMA KW_FORCE)* CLOSE_PAREN) )? ; -view_nameList - : view_name (COMMA view_name)* - ; - object_type_any_name : KW_FOREIGN? KW_TABLE table_name | KW_MATERIALIZED? KW_VIEW view_name - | KW_INDEX any_name - | KW_COLLATION any_name - | KW_CONVERSION any_name - | KW_STATISTICS any_name - | KW_SEQUENCE any_name + | (KW_INDEX | KW_COLLATION | KW_CONVERSION | KW_STATISTICS | KW_SEQUENCE) any_name | KW_TEXT KW_SEARCH (KW_PARSER | KW_DICTIONARY | KW_TEMPLATE | KW_CONFIGURATION) any_name ; object_type_name - : (KW_ACCESS KW_METHOD name) - | (KW_EVENT KW_TRIGGER name) - | (KW_EXTENSION name) - | (KW_FOREIGN KW_DATA KW_WRAPPER name) - | (opt_procedural? KW_LANGUAGE name) - | (KW_PUBLICATION name) - | (KW_SCHEMA schema_name) - | (KW_SERVER name) - | (KW_DATABASE database_name) - | (KW_ROLE name) - | (KW_SUBSCRIPTION name) - | (KW_TABLESPACE tablespace_name) - ; - -object_type_name_on_any_name - : KW_POLICY - | KW_RULE - | KW_TRIGGER + : ( + KW_EVENT KW_TRIGGER + | KW_ACCESS KW_METHOD + | KW_EXTENSION + | KW_PUBLICATION + | KW_SERVER + | KW_ROLE + | KW_SUBSCRIPTION + | KW_FOREIGN KW_DATA KW_WRAPPER + | KW_PROCEDURAL? KW_LANGUAGE + ) colid + | KW_SCHEMA schema_name + | KW_DATABASE database_name + | opttablespace ; any_name_list : any_name (COMMA any_name)* ; -relation_column_name - : relation_name DOT column_name - ; - -relation_name - : colid attrs? - ; - any_name : colid attrs? ; attrs - : (DOT attr_name)+ - ; - -type_name_list - : typename (COMMA typename)* + : (DOT collabel)+ ; truncatestmt @@ -1718,77 +1197,49 @@ truncate_table ; commentstmt - : KW_COMMENT KW_ON object_type_any_name KW_IS comment_text - | KW_COMMENT KW_ON KW_COLUMN relation_column_name KW_IS comment_text - | KW_COMMENT KW_ON object_type_name KW_IS comment_text - | KW_COMMENT KW_ON KW_TYPE typename KW_IS comment_text - | KW_COMMENT KW_ON KW_DOMAIN typename KW_IS comment_text - | KW_COMMENT KW_ON KW_AGGREGATE aggregate_with_argtypes KW_IS comment_text - | KW_COMMENT KW_ON KW_FUNCTION function_with_argtypes KW_IS comment_text - | KW_COMMENT KW_ON KW_OPERATOR operator_with_argtypes KW_IS comment_text - | KW_COMMENT KW_ON KW_CONSTRAINT name KW_ON table_name KW_IS comment_text - | KW_COMMENT KW_ON KW_CONSTRAINT name KW_ON KW_DOMAIN? any_name KW_IS comment_text - | KW_COMMENT KW_ON KW_POLICY name KW_ON any_name KW_IS comment_text - | KW_COMMENT KW_ON KW_RULE name KW_ON any_name KW_IS comment_text - | KW_COMMENT KW_ON KW_TRIGGER name KW_ON any_name KW_IS comment_text - | KW_COMMENT KW_ON KW_PROCEDURE procedure_with_argtypes KW_IS comment_text - | KW_COMMENT KW_ON KW_ROUTINE routine_with_argtypes KW_IS comment_text - | KW_COMMENT KW_ON KW_TRANSFORM KW_FOR typename KW_LANGUAGE name KW_IS comment_text - | KW_COMMENT KW_ON KW_OPERATOR KW_CLASS any_name KW_USING name KW_IS comment_text - | KW_COMMENT KW_ON KW_OPERATOR KW_FAMILY any_name KW_USING name KW_IS comment_text - | KW_COMMENT KW_ON KW_LARGE KW_OBJECT numericonly KW_IS comment_text - | KW_COMMENT KW_ON KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN KW_IS comment_text - ; - -comment_text - : sconst - | KW_NULL + : KW_COMMENT KW_ON ( + object_type_any_name + | object_type_name + | KW_COLUMN (colid attrs?) DOT column_name + | (KW_TYPE | KW_DOMAIN) typename + | KW_AGGREGATE aggregate_with_argtypes + | KW_FUNCTION function_with_argtypes + | KW_OPERATOR operator_with_argtypes + | KW_CONSTRAINT colid KW_ON (table_name | (KW_DOMAIN? any_name)) + | (KW_POLICY | KW_RULE | KW_TRIGGER) colid KW_ON any_name + | KW_PROCEDURE procedure_with_argtypes + | KW_ROUTINE routine_with_argtypes + | KW_TRANSFORM KW_FOR typename KW_LANGUAGE colid + | KW_OPERATOR (KW_CLASS | KW_FAMILY) any_name table_access_method_clause + | KW_LARGE KW_OBJECT numericonly + | KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN + ) KW_IS (sconst | KW_NULL) ; seclabelstmt - : KW_SECURITY KW_LABEL opt_provider? KW_ON KW_COLUMN column_name KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_TYPE typename KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_DOMAIN typename KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_AGGREGATE aggregate_with_argtypes KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_FUNCTION function_with_argtypes KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_LARGE KW_OBJECT numericonly KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_PROCEDURE procedure_with_argtypes KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON KW_ROUTINE routine_with_argtypes KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON object_type_any_name KW_IS security_label - | KW_SECURITY KW_LABEL opt_provider? KW_ON object_type_name KW_IS security_label - ; - -opt_provider - : KW_FOR nonreservedword_or_sconst - ; - -security_label - : sconst - | KW_NULL + : KW_SECURITY KW_LABEL (KW_FOR nonreservedword_or_sconst)? KW_ON ( + (KW_TYPE | KW_DOMAIN) typename + | KW_AGGREGATE aggregate_with_argtypes + | KW_COLUMN column_name + | KW_FUNCTION function_with_argtypes + | KW_LARGE KW_OBJECT numericonly + | KW_PROCEDURE procedure_with_argtypes + | KW_ROUTINE routine_with_argtypes + | object_type_any_name + | object_type_name + ) KW_IS (sconst | KW_NULL) ; fetchstmt - : KW_FETCH fetch_args - | KW_MOVE fetch_args + : (KW_FETCH | KW_MOVE) fetch_args ; fetch_args - : cursor_name - | from_in cursor_name - | KW_NEXT opt_from_in? cursor_name - | KW_PRIOR opt_from_in? cursor_name - | KW_FIRST opt_from_in? cursor_name - | KW_LAST opt_from_in? cursor_name - | KW_ABSOLUTE signediconst opt_from_in? cursor_name - | KW_RELATIVE signediconst opt_from_in? cursor_name - | signediconst opt_from_in? cursor_name - | KW_ALL opt_from_in? cursor_name - | KW_FORWARD opt_from_in? cursor_name - | KW_FORWARD signediconst opt_from_in? cursor_name - | KW_FORWARD KW_ALL opt_from_in? cursor_name - | KW_BACKWARD opt_from_in? cursor_name - | KW_BACKWARD signediconst opt_from_in? cursor_name - | KW_BACKWARD KW_ALL opt_from_in? cursor_name + : (KW_NEXT | KW_PRIOR | KW_FIRST | KW_LAST)? from_in? colid + | (KW_ABSOLUTE | KW_RELATIVE)? signediconst from_in? colid + | KW_FORWARD signediconst? from_in? colid + | KW_FORWARD? KW_ALL from_in? colid + | KW_BACKWARD (KW_ALL? | signediconst) from_in? colid ; from_in @@ -1796,30 +1247,18 @@ from_in | KW_IN ; -opt_from_in - : from_in - ; - grantstmt - : KW_GRANT privileges KW_ON privilege_target KW_TO grantee_list opt_grant_grant_option? + : KW_GRANT privileges KW_ON privilege_target KW_TO grantee_list (KW_WITH KW_GRANT KW_OPTION)? ; revokestmt - : KW_REVOKE privileges KW_ON privilege_target KW_FROM grantee_list opt_drop_behavior? - | KW_REVOKE KW_GRANT KW_OPTION KW_FOR privileges KW_ON privilege_target KW_FROM grantee_list opt_drop_behavior? + : KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? privileges KW_ON privilege_target KW_FROM grantee_list opt_drop_behavior? ; privileges - : privilege_list - | KW_ALL - | KW_ALL KW_PRIVILEGES - | KW_ALL OPEN_PAREN column_list CLOSE_PAREN - | KW_ALL KW_PRIVILEGES OPEN_PAREN column_list CLOSE_PAREN - | beforeprivilegeselectlist - ; - -beforeprivilegeselectlist - : beforeprivilegeselect (COMMA beforeprivilegeselect)* + : privilege (COMMA privilege)* + | KW_ALL KW_PRIVILEGES? (opt_column_list)? + | beforeprivilegeselect (COMMA beforeprivilegeselect)* ; beforeprivilegeselect @@ -1838,88 +1277,53 @@ beforeprivilegeselect | KW_EXECUTE ; -privilege_list - : privilege (COMMA privilege)* - ; - privilege - : KW_SELECT opt_column_list? - | KW_REFERENCES opt_column_list? - | KW_CREATE opt_column_list? - | colid opt_column_list? + : (KW_SELECT | KW_REFERENCES | KW_CREATE | colid) opt_column_list? ; privilege_target - : qualified_name_list - | KW_TABLE table_name_list - | KW_SEQUENCE qualified_name_list - | KW_FOREIGN KW_DATA KW_WRAPPER name_list - | KW_FOREIGN KW_SERVER name_list + : KW_TABLE table_name_list + | KW_SEQUENCE? qualified_name_list + | (KW_FOREIGN (KW_DATA KW_WRAPPER | KW_SERVER) | KW_LANGUAGE) name_list | KW_FUNCTION function_with_argtypes_list | KW_PROCEDURE procedure_with_argtypes_list | KW_ROUTINE routine_with_argtypes_list | KW_DATABASE database_nameList - | KW_DOMAIN any_name_list - | KW_LANGUAGE name_list - | KW_LARGE KW_OBJECT numericonly_list + | (KW_DOMAIN | KW_TYPE) any_name_list + | KW_LARGE KW_OBJECT numericonly (COMMA numericonly)* | KW_SCHEMA schema_name_list | KW_TABLESPACE tablespace_name_list - | KW_TYPE any_name_list - | KW_ALL KW_TABLES KW_IN KW_SCHEMA schema_name_list - | KW_ALL KW_SEQUENCES KW_IN KW_SCHEMA schema_name_list - | KW_ALL KW_FUNCTIONS KW_IN KW_SCHEMA schema_name_list - | KW_ALL KW_PROCEDURES KW_IN KW_SCHEMA schema_name_list - | KW_ALL KW_ROUTINES KW_IN KW_SCHEMA schema_name_list + | KW_ALL (KW_TABLES | KW_SEQUENCES | KW_FUNCTIONS | KW_PROCEDURES | KW_ROUTINES) KW_IN KW_SCHEMA schema_name_list ; grantee_list - : grantee (COMMA grantee)* - ; - -grantee - : rolespec - | KW_GROUP rolespec - ; - -opt_grant_grant_option - : KW_WITH KW_GRANT KW_OPTION + : (KW_GROUP? rolespec) (COMMA (KW_GROUP? rolespec))* ; grantrolestmt - : KW_GRANT privilege_list KW_TO role_list opt_grant_admin_option? opt_granted_by? + : KW_GRANT privilege (COMMA privilege)* KW_TO role_list (KW_WITH KW_ADMIN KW_OPTION)? ( + KW_GRANTED KW_BY rolespec + )? ; revokerolestmt - : KW_REVOKE privilege_list KW_FROM role_list opt_granted_by? opt_drop_behavior? - | KW_REVOKE KW_ADMIN KW_OPTION KW_FOR privilege_list KW_FROM role_list opt_granted_by? opt_drop_behavior? - ; - -opt_grant_admin_option - : KW_WITH KW_ADMIN KW_OPTION - ; - -opt_granted_by - : KW_GRANTED KW_BY rolespec + : KW_REVOKE (KW_ADMIN KW_OPTION KW_FOR)? privilege (COMMA privilege)* KW_FROM role_list ( + KW_GRANTED KW_BY rolespec + )? opt_drop_behavior? ; alterdefaultprivilegesstmt - : KW_ALTER KW_DEFAULT KW_PRIVILEGES defacloptionlist defaclaction - ; - -defacloptionlist - : defacloption* - ; - -defacloption - : KW_IN KW_SCHEMA schema_name_list - | KW_FOR KW_ROLE role_list - | KW_FOR KW_USER role_list + : KW_ALTER KW_DEFAULT KW_PRIVILEGES ( + KW_IN KW_SCHEMA schema_name_list + | KW_FOR (KW_ROLE | KW_USER) role_list + )* defaclaction ; defaclaction - : KW_GRANT privileges KW_ON defacl_privilege_target KW_TO grantee_list opt_grant_grant_option? - | KW_REVOKE privileges KW_ON defacl_privilege_target KW_FROM grantee_list opt_drop_behavior? - | KW_REVOKE KW_GRANT KW_OPTION KW_FOR privileges KW_ON defacl_privilege_target KW_FROM grantee_list opt_drop_behavior? + : KW_GRANT privileges KW_ON defacl_privilege_target KW_TO grantee_list ( + KW_WITH KW_GRANT KW_OPTION + )? + | KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? privileges KW_ON defacl_privilege_target KW_FROM grantee_list opt_drop_behavior? ; defacl_privilege_target @@ -1934,78 +1338,32 @@ defacl_privilege_target //create index indexstmt - : KW_CREATE opt_unique? KW_INDEX opt_concurrently? opt_if_not_exists? opt_index_name? KW_ON relation_expr access_method_clause? OPEN_PAREN - index_params CLOSE_PAREN opt_include? nulls_distinct? opt_reloptions? opttablespace? where_clause? - ; - -opt_unique - : KW_UNIQUE - ; - -opt_concurrently - : KW_CONCURRENTLY - ; - -opt_index_name - : name - ; - -access_method_clause - : KW_USING name + : KW_CREATE KW_UNIQUE? KW_INDEX KW_CONCURRENTLY? opt_if_not_exists? colid? KW_ON relation_expr table_access_method_clause? index_params ( + KW_INCLUDE index_params + )? (KW_NULLS KW_NOT? KW_DISTINCT)? opt_reloptions? opttablespace? where_clause? ; index_params - : index_elem (COMMA index_elem)* - ; - -index_elem_options - : opt_collate? opt_class? opt_asc_desc? opt_nulls_order? - | opt_collate? any_name reloptions opt_asc_desc? opt_nulls_order? + : OPEN_PAREN index_elem (COMMA index_elem)* CLOSE_PAREN ; index_elem - : column_name index_elem_options - | func_expr_windowless index_elem_options - | OPEN_PAREN a_expr CLOSE_PAREN index_elem_options - ; - -opt_include - : KW_INCLUDE OPEN_PAREN index_including_params CLOSE_PAREN - ; - -index_including_params - : index_elem (COMMA index_elem)* - ; - -opt_collate - : KW_COLLATE any_name - ; - -opt_class - : any_name - ; - -opt_asc_desc - : KW_ASC - | KW_DESC - ; - -opt_nulls_order - : KW_NULLS KW_FIRST - | KW_NULLS KW_LAST + : (column_name | func_expr_windowless | OPEN_PAREN expression CLOSE_PAREN) opt_collate_clause? ( + any_name? + | any_name reloptions + ) (KW_ASC | KW_DESC)? (KW_NULLS (KW_FIRST | KW_LAST))? ; createfunctionstmt : KW_CREATE opt_or_replace? ( KW_FUNCTION function_name_create | KW_PROCEDURE procedure_name_create - ) func_args_with_defaults ( - KW_RETURNS (func_return | KW_TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN) - )? createfunc_opt_list (KW_WITH attrilist)? - ; - -attrilist - : OPEN_PAREN colid (COMMA colid)* CLOSE_PAREN + ) (OPEN_PAREN (func_arg_with_default (COMMA func_arg_with_default)*)? CLOSE_PAREN) ( + KW_RETURNS ( + func_type + | KW_TABLE (OPEN_PAREN table_func_column (COMMA table_func_column)* CLOSE_PAREN) + ) + )? createfunc_opt_item+ (KW_WITH OPEN_PAREN name_list CLOSE_PAREN)? ; opt_or_replace @@ -2027,7 +1385,7 @@ routine_with_argtypes_list routine_with_argtypes : routine_name func_args | type_func_name_keyword - | colid indirection? + | qualified_name ; procedure_with_argtypes_list @@ -2037,7 +1395,7 @@ procedure_with_argtypes_list procedure_with_argtypes : procedure_name func_args | type_func_name_keyword - | colid indirection? + | qualified_name ; function_with_argtypes_list @@ -2047,21 +1405,11 @@ function_with_argtypes_list function_with_argtypes : function_name func_args | type_func_name_keyword - | colid indirection? - ; - -func_args_with_defaults - : OPEN_PAREN func_args_with_defaults_list? CLOSE_PAREN - ; - -func_args_with_defaults_list - : func_arg_with_default (COMMA func_arg_with_default)* + | qualified_name ; func_arg - : arg_class param_name? func_type - | param_name arg_class? func_type - | func_type + : (arg_class type_function_name? | type_function_name arg_class?)? func_type ; arg_class @@ -2071,77 +1419,43 @@ arg_class | KW_VARIADIC ; -param_name - : type_function_name - ; - -func_return - : func_type - ; - func_type : typename - | type_function_name attrs PERCENT KW_TYPE - | KW_SETOF type_function_name attrs PERCENT KW_TYPE + | KW_SETOF? type_function_name attrs PERCENT KW_TYPE ; func_arg_with_default - : func_arg ((KW_DEFAULT | EQUAL) a_expr)? - ; - -aggr_arg - : func_arg + : func_arg ((KW_DEFAULT | EQUAL) expression)? ; aggr_args - : OPEN_PAREN ( - STAR - | aggr_args_list - | KW_ORDER KW_BY aggr_args_list - | aggr_args_list KW_ORDER KW_BY aggr_args_list - ) CLOSE_PAREN - ; - -aggr_args_list - : aggr_arg (COMMA aggr_arg)* + : OPEN_PAREN (STAR | func_args_list? (KW_ORDER KW_BY func_args_list)?) CLOSE_PAREN ; aggregate_with_argtypes : function_name aggr_args ; -aggregate_with_argtypes_list - : aggregate_with_argtypes (COMMA aggregate_with_argtypes)* - ; - -createfunc_opt_list - : createfunc_opt_item+ - ; - common_func_opt_item - : KW_CALLED KW_ON KW_NULL KW_INPUT - | KW_RETURNS KW_NULL KW_ON KW_NULL KW_INPUT + : (KW_RETURNS KW_NULL | KW_CALLED) KW_ON KW_NULL KW_INPUT | KW_STRICT | KW_IMMUTABLE | KW_STABLE | KW_VOLATILE - | KW_EXTERNAL KW_SECURITY KW_DEFINER - | KW_EXTERNAL KW_SECURITY KW_INVOKER - | KW_SECURITY KW_DEFINER - | KW_SECURITY KW_INVOKER + | KW_EXTERNAL? KW_SECURITY (KW_DEFINER | KW_INVOKER) | KW_LEAKPROOF | KW_NOT KW_LEAKPROOF - | KW_COST numericonly - | KW_ROWS numericonly + | (KW_COST | KW_ROWS) numericonly | KW_SUPPORT any_name - | functionsetresetclause + | KW_SET set_rest_more + | variableresetstmt | KW_PARALLEL colid ; createfunc_opt_item - : KW_AS sconst COMMA sconst + : KW_AS sconst notify_payload | KW_LANGUAGE nonreservedword_or_sconst - | KW_TRANSFORM transform_type_list + | KW_TRANSFORM KW_FOR KW_TYPE typename (COMMA KW_FOR KW_TYPE typename)* | KW_WINDOW | KW_SET colid (KW_TO colid | EQUAL colid | KW_FROM KW_CURRENT) | KW_AS colid @@ -2156,10 +1470,6 @@ createfunc_opt_item // | KW_AS 'obj_file', 'link_symbol' -transform_type_list - : KW_FOR KW_TYPE typename (COMMA KW_FOR KW_TYPE typename)* - ; - opt_definition : KW_WITH definition ; @@ -2168,83 +1478,57 @@ table_func_column : column_name func_type ; -table_func_column_list - : table_func_column (COMMA table_func_column)* - ; - alterfunctionstmt - : KW_ALTER alterFunctionTypeClause alterfunc_opt_list opt_restrict? - ; - -alterFunctionTypeClause - : KW_FUNCTION function_with_argtypes - | KW_PROCEDURE procedure_with_argtypes - | KW_ROUTINE routine_with_argtypes - ; - -alterfunc_opt_list - : common_func_opt_item+ - ; - -opt_restrict - : KW_RESTRICT + : KW_ALTER ( + KW_FUNCTION function_with_argtypes + | KW_PROCEDURE procedure_with_argtypes + | KW_ROUTINE routine_with_argtypes + ) common_func_opt_item+ KW_RESTRICT? ; removefuncstmt - : KW_DROP KW_FUNCTION opt_if_exists? function_with_argtypes_list opt_drop_behavior? - | KW_DROP KW_PROCEDURE opt_if_exists? procedure_with_argtypes_list opt_drop_behavior? - | KW_DROP KW_ROUTINE opt_if_exists? routine_with_argtypes_list opt_drop_behavior? + : KW_DROP ( + KW_FUNCTION opt_if_exists? function_with_argtypes_list + | KW_PROCEDURE opt_if_exists? procedure_with_argtypes_list + | KW_ROUTINE opt_if_exists? routine_with_argtypes_list + ) opt_drop_behavior? ; removeaggrstmt - : KW_DROP KW_AGGREGATE opt_if_exists? aggregate_with_argtypes_list opt_drop_behavior? + : KW_DROP KW_AGGREGATE opt_if_exists? ( + aggregate_with_argtypes (COMMA aggregate_with_argtypes)* + ) opt_drop_behavior? ; removeoperstmt - : KW_DROP KW_OPERATOR opt_if_exists? operator_with_argtypes_list opt_drop_behavior? + : KW_DROP KW_OPERATOR opt_if_exists? (operator_with_argtypes (COMMA operator_with_argtypes)*) opt_drop_behavior? ; oper_argtypes - : OPEN_PAREN typename CLOSE_PAREN - | OPEN_PAREN typename COMMA typename CLOSE_PAREN - | OPEN_PAREN KW_NONE COMMA typename CLOSE_PAREN - | OPEN_PAREN typename COMMA KW_NONE CLOSE_PAREN + : OPEN_PAREN (typename (COMMA typename)? | KW_NONE COMMA typename | typename COMMA KW_NONE) CLOSE_PAREN ; any_operator : (colid DOT)* all_op ; -operator_with_argtypes_list - : operator_with_argtypes (COMMA operator_with_argtypes)* - ; - operator_with_argtypes : any_operator oper_argtypes ; dostmt - : KW_DO dostmt_opt_list - ; - -dostmt_opt_list - : dostmt_opt_item+ - ; - -dostmt_opt_item - : sconst - | KW_LANGUAGE nonreservedword_or_sconst + : KW_DO (sconst | KW_LANGUAGE nonreservedword_or_sconst)+ ; createcaststmt - : KW_CREATE KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN KW_WITH KW_FUNCTION function_with_argtypes cast_context? - | KW_CREATE KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN KW_WITHOUT KW_FUNCTION cast_context? - | KW_CREATE KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN KW_WITH KW_INOUT cast_context? - ; - -cast_context - : KW_AS KW_IMPLICIT - | KW_AS KW_ASSIGNMENT + : KW_CREATE KW_CAST OPEN_PAREN typename KW_AS typename CLOSE_PAREN ( + (KW_WITHOUT KW_FUNCTION (KW_AS (KW_ASSIGNMENT | KW_IMPLICIT))?) + | ( + KW_WITH (KW_FUNCTION function_with_argtypes | KW_INOUT) ( + KW_AS (KW_ASSIGNMENT | KW_IMPLICIT) + )? + ) + ) ; opt_if_exists @@ -2252,247 +1536,187 @@ opt_if_exists ; createtransformstmt - : KW_CREATE opt_or_replace? KW_TRANSFORM KW_FOR typename KW_LANGUAGE name OPEN_PAREN transform_element_list CLOSE_PAREN + : KW_CREATE opt_or_replace? KW_TRANSFORM KW_FOR typename KW_LANGUAGE colid OPEN_PAREN ( + KW_FROM sql_with_function (COMMA KW_TO sql_with_function)? + | KW_TO sql_with_function (COMMA KW_FROM sql_with_function)? + ) CLOSE_PAREN ; -transform_element_list - : KW_FROM KW_SQL KW_WITH KW_FUNCTION function_with_argtypes COMMA KW_TO KW_SQL KW_WITH KW_FUNCTION function_with_argtypes - | KW_TO KW_SQL KW_WITH KW_FUNCTION function_with_argtypes COMMA KW_FROM KW_SQL KW_WITH KW_FUNCTION function_with_argtypes - | KW_FROM KW_SQL KW_WITH KW_FUNCTION function_with_argtypes - | KW_TO KW_SQL KW_WITH KW_FUNCTION function_with_argtypes +sql_with_function + : KW_SQL KW_WITH KW_FUNCTION function_with_argtypes ; reindexstmt - : KW_REINDEX reindex_target_type - | KW_REINDEX reindex_target_multitable - | KW_REINDEX OPEN_PAREN reindex_option_list CLOSE_PAREN reindex_target_type - | KW_REINDEX OPEN_PAREN reindex_option_list CLOSE_PAREN reindex_target_multitable - ; - -reindex_target_type - : (KW_INDEX opt_concurrently? qualified_name) - | (KW_TABLE opt_concurrently? table_name) - ; - -reindex_target_multitable - : (KW_SCHEMA opt_concurrently? schema_name) - | (KW_SYSTEM opt_concurrently? name) - | (KW_DATABASE opt_concurrently? database_name) - ; - -reindex_option_list - : reindex_option_elem (COMMA reindex_option_elem)* - ; - -reindex_option_elem - : KW_VERBOSE + : KW_REINDEX (OPEN_PAREN KW_VERBOSE (COMMA KW_VERBOSE)* CLOSE_PAREN)? ( + ( + KW_INDEX KW_CONCURRENTLY? qualified_name + | KW_TABLE KW_CONCURRENTLY? table_name + | KW_SCHEMA KW_CONCURRENTLY? schema_name + | KW_SYSTEM KW_CONCURRENTLY? colid + | KW_DATABASE KW_CONCURRENTLY? database_name + ) + ) ; altertblspcstmt - : KW_ALTER KW_TABLESPACE tablespace_name KW_SET reloptions - | KW_ALTER KW_TABLESPACE tablespace_name KW_RESET reloptions + : KW_ALTER opttablespace (KW_SET | KW_RESET) reloptions ; renamestmt - : KW_ALTER KW_AGGREGATE aggregate_with_argtypes KW_RENAME KW_TO name - | KW_ALTER KW_COLLATION any_name KW_RENAME KW_TO name - | KW_ALTER KW_CONVERSION any_name KW_RENAME KW_TO name + : KW_ALTER (KW_AGGREGATE aggregate_with_argtypes | KW_ROUTINE routine_with_argtypes) KW_RENAME KW_TO colid | KW_ALTER KW_DATABASE database_name KW_RENAME KW_TO database_name_create - | KW_ALTER KW_DOMAIN any_name KW_RENAME KW_TO name - | KW_ALTER KW_DOMAIN any_name KW_RENAME KW_CONSTRAINT name KW_TO name - | KW_ALTER KW_FOREIGN KW_DATA KW_WRAPPER name KW_RENAME KW_TO name + | KW_ALTER (KW_DOMAIN | KW_STATISTICS | KW_TYPE | KW_CONVERSION | KW_COLLATION) any_name KW_RENAME KW_TO colid | KW_ALTER KW_FUNCTION function_with_argtypes KW_RENAME KW_TO function_name_create - | KW_ALTER KW_GROUP roleid KW_RENAME KW_TO roleid - | KW_ALTER opt_procedural? KW_LANGUAGE name KW_RENAME KW_TO name - | KW_ALTER KW_OPERATOR KW_CLASS any_name KW_USING name KW_RENAME KW_TO name - | KW_ALTER KW_OPERATOR KW_FAMILY any_name KW_USING name KW_RENAME KW_TO name - | KW_ALTER KW_POLICY opt_if_exists? name KW_ON qualified_name KW_RENAME KW_TO name + | KW_ALTER KW_OPERATOR (KW_CLASS | KW_FAMILY) any_name table_access_method_clause KW_RENAME KW_TO colid | KW_ALTER KW_PROCEDURE procedure_with_argtypes KW_RENAME KW_TO procedure_name_create - | KW_ALTER KW_PUBLICATION name KW_RENAME KW_TO name - | KW_ALTER KW_ROUTINE routine_with_argtypes KW_RENAME KW_TO name | KW_ALTER KW_SCHEMA schema_name KW_RENAME KW_TO schema_name_create - | KW_ALTER KW_SERVER name KW_RENAME KW_TO name - | KW_ALTER KW_SUBSCRIPTION name KW_RENAME KW_TO name - | KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_TO table_name_create - | KW_ALTER KW_SEQUENCE opt_if_exists? qualified_name KW_RENAME KW_TO name - | KW_ALTER KW_VIEW opt_if_exists? view_name KW_RENAME KW_TO view_name_create - | KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_RENAME KW_TO view_name_create - | KW_ALTER KW_INDEX opt_if_exists? qualified_name KW_RENAME KW_TO name - | KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_TO table_name_create - | KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_COLUMN? column_name KW_TO column_name_create - | KW_ALTER KW_VIEW opt_if_exists? view_name KW_RENAME KW_COLUMN? column_name KW_TO column_name_create - | KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_RENAME KW_COLUMN? column_name KW_TO column_name_create - | KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_CONSTRAINT name KW_TO name - | KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_COLUMN? column_name KW_TO column_name_create - | KW_ALTER KW_RULE name KW_ON qualified_name KW_RENAME KW_TO name - | KW_ALTER KW_TRIGGER name KW_ON qualified_name KW_RENAME KW_TO name - | KW_ALTER KW_EVENT KW_TRIGGER name KW_RENAME KW_TO name - | KW_ALTER KW_ROLE roleid KW_RENAME KW_TO roleid - | KW_ALTER KW_USER roleid KW_RENAME KW_TO roleid - | KW_ALTER KW_TABLESPACE tablespace_name KW_RENAME KW_TO tablespace_name_create - | KW_ALTER KW_STATISTICS any_name KW_RENAME KW_TO name - | KW_ALTER KW_TEXT KW_SEARCH KW_PARSER any_name KW_RENAME KW_TO name - | KW_ALTER KW_TEXT KW_SEARCH KW_DICTIONARY any_name KW_RENAME KW_TO name - | KW_ALTER KW_TEXT KW_SEARCH KW_TEMPLATE any_name KW_RENAME KW_TO name - | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_RENAME KW_TO name - | KW_ALTER KW_TYPE any_name KW_RENAME KW_TO name - | KW_ALTER KW_TYPE any_name KW_RENAME KW_ATTRIBUTE name KW_TO name opt_drop_behavior? - ; - -opt_set_data - : KW_SET KW_DATA + | KW_ALTER (KW_SEQUENCE | KW_INDEX) opt_if_exists? qualified_name KW_RENAME KW_TO colid + | KW_ALTER KW_MATERIALIZED? KW_VIEW opt_if_exists? view_name KW_RENAME KW_TO view_name_create + | KW_ALTER KW_FOREIGN? KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_TO table_name_create + | KW_ALTER ( + KW_FOREIGN? KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_COLUMN? + | KW_MATERIALIZED? KW_VIEW opt_if_exists? view_name KW_RENAME KW_COLUMN? + ) column_name KW_TO column_name_create + | KW_ALTER (KW_TABLE opt_if_exists? relation_expr | KW_DOMAIN any_name) KW_RENAME KW_CONSTRAINT colid KW_TO colid + | KW_ALTER ((KW_POLICY opt_if_exists?) | KW_RULE | KW_TRIGGER) colid KW_ON qualified_name KW_RENAME KW_TO colid + | KW_ALTER ( + KW_FOREIGN KW_DATA KW_WRAPPER + | KW_PROCEDURAL? KW_LANGUAGE + | KW_PUBLICATION + | KW_SERVER + | KW_SUBSCRIPTION + | KW_EVENT KW_TRIGGER + ) colid KW_RENAME KW_TO colid + | KW_ALTER (KW_USER | KW_ROLE | KW_GROUP) rolespec KW_RENAME KW_TO rolespec + | KW_ALTER opttablespace KW_RENAME KW_TO tablespace_name_create + | KW_ALTER KW_TEXT KW_SEARCH (KW_PARSER | KW_DICTIONARY | KW_TEMPLATE | KW_CONFIGURATION) any_name KW_RENAME KW_TO colid + | KW_ALTER KW_TYPE any_name KW_RENAME KW_ATTRIBUTE colid KW_TO colid opt_drop_behavior? ; alterobjectdependsstmt - : KW_ALTER KW_FUNCTION function_with_argtypes opt_no? KW_DEPENDS KW_ON KW_EXTENSION name - | KW_ALTER KW_PROCEDURE procedure_with_argtypes opt_no? KW_DEPENDS KW_ON KW_EXTENSION name - | KW_ALTER KW_ROUTINE routine_with_argtypes opt_no? KW_DEPENDS KW_ON KW_EXTENSION name - | KW_ALTER KW_TRIGGER name KW_ON qualified_name opt_no? KW_DEPENDS KW_ON KW_EXTENSION name - | KW_ALTER KW_MATERIALIZED KW_VIEW view_name opt_no? KW_DEPENDS KW_ON KW_EXTENSION name - | KW_ALTER KW_INDEX qualified_name opt_no? KW_DEPENDS KW_ON KW_EXTENSION name - ; - -opt_no - : KW_NO + : KW_ALTER ( + KW_FUNCTION function_with_argtypes + | KW_PROCEDURE procedure_with_argtypes + | KW_ROUTINE routine_with_argtypes + | KW_TRIGGER colid KW_ON qualified_name + | KW_MATERIALIZED KW_VIEW view_name + | KW_INDEX qualified_name + ) KW_NO? KW_DEPENDS KW_ON KW_EXTENSION colid ; alterobjectschemastmt - : KW_ALTER KW_AGGREGATE aggregate_with_argtypes KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_COLLATION any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_CONVERSION any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_DOMAIN any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_EXTENSION name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_FUNCTION function_with_argtypes KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_OPERATOR operator_with_argtypes KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_OPERATOR KW_CLASS any_name KW_USING name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_OPERATOR KW_FAMILY any_name KW_USING name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_PROCEDURE procedure_with_argtypes KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_ROUTINE routine_with_argtypes KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_STATISTICS any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_TEXT KW_SEARCH KW_PARSER any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_TEXT KW_SEARCH KW_DICTIONARY any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_TEXT KW_SEARCH KW_TEMPLATE any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_SEQUENCE opt_if_exists? qualified_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_VIEW opt_if_exists? view_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_SET KW_SCHEMA schema_name - | KW_ALTER KW_TYPE any_name KW_SET KW_SCHEMA schema_name + : KW_ALTER ( + KW_AGGREGATE aggregate_with_argtypes + | KW_EXTENSION colid + | KW_FUNCTION function_with_argtypes + | KW_OPERATOR operator_with_argtypes + | KW_OPERATOR (KW_CLASS | KW_FAMILY) any_name table_access_method_clause + | KW_PROCEDURE procedure_with_argtypes + | KW_ROUTINE routine_with_argtypes + | KW_SEQUENCE opt_if_exists? qualified_name + | KW_MATERIALIZED? KW_VIEW opt_if_exists? view_name + | KW_FOREIGN? KW_TABLE opt_if_exists? relation_expr + ) KW_SET KW_SCHEMA schema_name + | KW_ALTER ( + KW_TEXT KW_SEARCH (KW_PARSER | KW_DICTIONARY | KW_TEMPLATE | KW_CONFIGURATION) + | KW_COLLATION + | KW_CONVERSION + | KW_DOMAIN + | KW_STATISTICS + | KW_TYPE + ) any_name KW_SET KW_SCHEMA schema_name ; alteroperatorstmt - : KW_ALTER KW_OPERATOR operator_with_argtypes KW_SET OPEN_PAREN operator_def_list CLOSE_PAREN + : KW_ALTER KW_OPERATOR operator_with_argtypes KW_SET operator_def_list ; operator_def_list - : operator_def_elem (COMMA operator_def_elem)* + : OPEN_PAREN operator_def_elem (COMMA operator_def_elem)* CLOSE_PAREN ; operator_def_elem - : collabel EQUAL KW_NONE - | collabel EQUAL operator_def_arg - ; - -operator_def_arg - : func_type - | reserved_keyword - | qual_all_op - | numericonly - | sconst + : collabel EQUAL (KW_NONE | func_type | reserved_keyword | qual_all_op | numericonly | sconst) ; altertypestmt - : KW_ALTER KW_TYPE any_name KW_SET OPEN_PAREN operator_def_list CLOSE_PAREN + : KW_ALTER KW_TYPE any_name KW_SET operator_def_list ; alterownerstmt - : KW_ALTER KW_AGGREGATE aggregate_with_argtypes KW_OWNER KW_TO rolespec - | KW_ALTER KW_COLLATION any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_CONVERSION any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_DATABASE database_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_DOMAIN any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_FUNCTION function_with_argtypes KW_OWNER KW_TO rolespec - | KW_ALTER opt_procedural? KW_LANGUAGE name KW_OWNER KW_TO rolespec - | KW_ALTER KW_LARGE KW_OBJECT numericonly KW_OWNER KW_TO rolespec - | KW_ALTER KW_OPERATOR operator_with_argtypes KW_OWNER KW_TO rolespec - | KW_ALTER KW_OPERATOR KW_CLASS any_name KW_USING name KW_OWNER KW_TO rolespec - | KW_ALTER KW_OPERATOR KW_FAMILY any_name KW_USING name KW_OWNER KW_TO rolespec - | KW_ALTER KW_PROCEDURE procedure_with_argtypes KW_OWNER KW_TO rolespec - | KW_ALTER KW_ROUTINE routine_with_argtypes KW_OWNER KW_TO rolespec - | KW_ALTER KW_SCHEMA schema_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_TYPE any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_TABLESPACE tablespace_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_STATISTICS any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_TEXT KW_SEARCH KW_DICTIONARY any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_OWNER KW_TO rolespec - | KW_ALTER KW_FOREIGN KW_DATA KW_WRAPPER name KW_OWNER KW_TO rolespec - | KW_ALTER KW_SERVER name KW_OWNER KW_TO rolespec - | KW_ALTER KW_EVENT KW_TRIGGER name KW_OWNER KW_TO rolespec - | KW_ALTER KW_PUBLICATION name KW_OWNER KW_TO rolespec - | KW_ALTER KW_SUBSCRIPTION name KW_OWNER KW_TO rolespec + : KW_ALTER KW_OPERATOR (KW_CLASS | KW_FAMILY) any_name table_access_method_clause KW_OWNER KW_TO rolespec + | KW_ALTER ( + KW_AGGREGATE aggregate_with_argtypes + | KW_DATABASE database_name + | KW_FUNCTION function_with_argtypes + | KW_PROCEDURAL? KW_LANGUAGE colid + | KW_LARGE KW_OBJECT numericonly + | KW_LARGE KW_OBJECT numericonly + | KW_OPERATOR operator_with_argtypes + | KW_PROCEDURE procedure_with_argtypes + | KW_ROUTINE routine_with_argtypes + | KW_SCHEMA schema_name + | opttablespace + ) KW_OWNER KW_TO rolespec + | KW_ALTER ( + KW_TEXT KW_SEARCH (KW_DICTIONARY | KW_CONFIGURATION) + | KW_COLLATION + | KW_CONVERSION + | KW_DOMAIN + | KW_TYPE + | KW_STATISTICS + ) any_name KW_OWNER KW_TO rolespec + | KW_ALTER ( + KW_SERVER + | (KW_FOREIGN KW_DATA KW_WRAPPER) + | (KW_EVENT KW_TRIGGER) + | KW_PUBLICATION + | KW_SUBSCRIPTION + ) colid KW_OWNER KW_TO rolespec ; createpublicationstmt - : KW_CREATE KW_PUBLICATION name opt_publication_for_tables? opt_definition? - ; - -opt_publication_for_tables - : publication_for_tables - ; - -publication_for_tables - : KW_FOR KW_TABLE relation_expr_list - | KW_FOR KW_ALL KW_TABLES + : KW_CREATE KW_PUBLICATION colid (KW_FOR KW_TABLE relation_expr_list | KW_FOR KW_ALL KW_TABLES)? opt_definition? ; alterpublicationstmt - : KW_ALTER KW_PUBLICATION name KW_SET definition - | KW_ALTER KW_PUBLICATION name KW_ADD publication_relation_expr_list - | KW_ALTER KW_PUBLICATION name KW_SET publication_relation_expr_list - | KW_ALTER KW_PUBLICATION name KW_DROP publication_relation_expr_list - | KW_ALTER KW_PUBLICATION name KW_OWNER KW_TO rolespec - | KW_ALTER KW_PUBLICATION name KW_RENAME KW_TO name + : KW_ALTER KW_PUBLICATION colid ( + (KW_OWNER KW_TO rolespec) + | (KW_SET definition) + | (KW_RENAME KW_TO colid) + | (KW_ADD | KW_SET | KW_DROP) publication_relation_expr (COMMA publication_relation_expr)* + ) ; createsubscriptionstmt - : KW_CREATE KW_SUBSCRIPTION name KW_CONNECTION sconst KW_PUBLICATION publication_name_list opt_definition? - ; - -publication_name_list - : publication_name_item (COMMA publication_name_item)* - ; - -publication_name_item - : collabel + : KW_CREATE KW_SUBSCRIPTION colid KW_CONNECTION sconst KW_PUBLICATION ( + collabel (COMMA collabel)* + ) opt_definition? ; altersubscriptionstmt - : KW_ALTER KW_SUBSCRIPTION name KW_SET definition - | KW_ALTER KW_SUBSCRIPTION name KW_CONNECTION sconst - | KW_ALTER KW_SUBSCRIPTION name KW_REFRESH KW_PUBLICATION opt_definition? - | KW_ALTER KW_SUBSCRIPTION name KW_SET KW_PUBLICATION publication_name_list opt_definition? - | KW_ALTER KW_SUBSCRIPTION name KW_ADD KW_PUBLICATION publication_name_list opt_definition? - | KW_ALTER KW_SUBSCRIPTION name KW_DROP KW_PUBLICATION publication_name_list opt_definition? - | KW_ALTER KW_SUBSCRIPTION name KW_ENABLE - | KW_ALTER KW_SUBSCRIPTION name KW_DISABLE - | KW_ALTER KW_SUBSCRIPTION name KW_SET definition - | KW_ALTER KW_SUBSCRIPTION name KW_SKIP OPEN_PAREN old_aggr_elem CLOSE_PAREN - | KW_ALTER KW_SUBSCRIPTION name KW_OWNER KW_TO rolespec + : KW_ALTER KW_SUBSCRIPTION colid KW_SET definition + | KW_ALTER KW_SUBSCRIPTION colid KW_CONNECTION sconst + | KW_ALTER KW_SUBSCRIPTION colid KW_REFRESH KW_PUBLICATION opt_definition? + | KW_ALTER KW_SUBSCRIPTION colid (KW_SET | KW_ADD | KW_DROP) KW_PUBLICATION ( + collabel (COMMA collabel)* + ) opt_definition? + | KW_ALTER KW_SUBSCRIPTION colid (KW_ENABLE | KW_DISABLE) + | KW_ALTER KW_SUBSCRIPTION colid KW_SKIP OPEN_PAREN old_aggr_elem CLOSE_PAREN + | KW_ALTER KW_SUBSCRIPTION colid KW_OWNER KW_TO rolespec ; rulestmt - : KW_CREATE opt_or_replace? KW_RULE name KW_AS KW_ON event KW_TO qualified_name where_clause? KW_DO opt_instead? ruleactionlist - ; - -ruleactionlist - : KW_NOTHING - | ruleactionstmt - | OPEN_PAREN ruleactionmulti CLOSE_PAREN - ; - -ruleactionmulti - : ruleactionstmtOrEmpty? (SEMI ruleactionstmtOrEmpty?)* + : KW_CREATE opt_or_replace? KW_RULE colid KW_AS KW_ON ( + KW_SELECT + | KW_UPDATE + | KW_DELETE + | KW_INSERT + ) KW_TO qualified_name where_clause? KW_DO (KW_INSTEAD | KW_ALSO)? ( + KW_NOTHING + | ruleactionstmt + | OPEN_PAREN (ruleactionstmt? (SEMI ruleactionstmt?)*) CLOSE_PAREN + ) ; ruleactionstmt @@ -2503,22 +1727,6 @@ ruleactionstmt | notifystmt ; -ruleactionstmtOrEmpty - : ruleactionstmt - ; - -event - : KW_SELECT - | KW_UPDATE - | KW_DELETE - | KW_INSERT - ; - -opt_instead - : KW_INSTEAD - | KW_ALSO - ; - notifystmt : KW_NOTIFY colid notify_payload? ; @@ -2532,23 +1740,18 @@ listenstmt ; unlistenstmt - : KW_UNLISTEN colid - | KW_UNLISTEN STAR + : KW_UNLISTEN (colid | STAR) ; transactionstmt - : KW_ABORT opt_transaction? opt_transaction_chain? - | KW_BEGIN opt_transaction? transaction_mode_list_or_empty? - | KW_START KW_TRANSACTION transaction_mode_list_or_empty? - | KW_END opt_transaction? opt_transaction_chain? + : KW_BEGIN opt_transaction? transaction_mode_list? + | KW_START KW_TRANSACTION transaction_mode_list? | KW_SAVEPOINT colid | KW_RELEASE KW_SAVEPOINT? colid | KW_PREPARE KW_TRANSACTION sconst - | KW_COMMIT KW_PREPARED sconst - | KW_COMMIT opt_transaction? opt_transaction_chain? - | KW_ROLLBACK KW_PREPARED sconst + | (KW_COMMIT | KW_ROLLBACK) KW_PREPARED sconst + | (KW_ABORT | KW_END | KW_COMMIT | KW_ROLLBACK) opt_transaction? (KW_AND KW_NO? KW_CHAIN)? | KW_ROLLBACK opt_transaction? KW_TO KW_SAVEPOINT? colid - | KW_ROLLBACK opt_transaction? opt_transaction_chain? ; opt_transaction @@ -2558,73 +1761,45 @@ opt_transaction transaction_mode_item : KW_ISOLATION KW_LEVEL iso_level - | KW_READ KW_ONLY - | KW_READ KW_WRITE - | KW_DEFERRABLE - | KW_NOT KW_DEFERRABLE + | KW_READ (KW_ONLY | KW_WRITE) + | KW_NOT? KW_DEFERRABLE ; transaction_mode_list : transaction_mode_item (COMMA? transaction_mode_item)* ; -transaction_mode_list_or_empty - : transaction_mode_list - ; - -opt_transaction_chain - : KW_AND KW_NO? KW_CHAIN - ; - viewstmt : KW_CREATE (KW_OR KW_REPLACE)? opttemp? ( KW_VIEW view_name_create opt_column_list_create? opt_reloptions? - | KW_RECURSIVE KW_VIEW view_name_create OPEN_PAREN column_list CLOSE_PAREN opt_reloptions? - ) KW_AS selectstmt opt_check_option? # createView - ; - -opt_check_option - : KW_WITH (KW_CASCADED | KW_LOCAL)? KW_CHECK KW_OPTION + | KW_RECURSIVE KW_VIEW view_name_create opt_column_list opt_reloptions? + ) KW_AS selectstmt (KW_WITH (KW_CASCADED | KW_LOCAL)? KW_CHECK KW_OPTION)? # createView ; loadstmt - : KW_LOAD file_name + : KW_LOAD sconst ; createdbstmt - : KW_CREATE KW_DATABASE database_name_create opt_with? createdb_opt_list? # createDatabase - ; - -createdb_opt_list - : createdb_opt_items - ; - -createdb_opt_items - : createdb_opt_item+ + : KW_CREATE KW_DATABASE database_name_create KW_WITH? (createdb_opt_item+)? # createDatabase ; createdb_opt_item - : createdb_opt_name opt_equal? (signediconst | opt_boolean_or_string | KW_DEFAULT) - ; - -createdb_opt_name - : KW_CONNECTION KW_LIMIT - | KW_ENCODING - | KW_LOCATION - | KW_OWNER - | KW_TABLESPACE - | KW_TEMPLATE - | identifier - ; - -opt_equal - : EQUAL + : ( + KW_CONNECTION KW_LIMIT + | KW_ENCODING + | KW_LOCATION + | KW_OWNER + | KW_TABLESPACE + | KW_TEMPLATE + | identifier + ) EQUAL? (signediconst | opt_boolean_or_string | KW_DEFAULT) ; alterdatabasestmt : KW_ALTER KW_DATABASE database_name ( (KW_SET KW_TABLESPACE tablespace_name_create)? - | (KW_WITH? createdb_opt_list)? + | (KW_WITH? createdb_opt_item+)? ) ; @@ -2632,14 +1807,6 @@ alterdatabasesetstmt : KW_ALTER KW_DATABASE database_name setresetclause? ; -drop_option_list - : drop_option (COMMA drop_option)* - ; - -drop_option - : KW_FORCE - ; - altercollationstmt : KW_ALTER KW_COLLATION any_name KW_REFRESH KW_VERSION ; @@ -2649,70 +1816,47 @@ altersystemstmt ; createdomainstmt - : KW_CREATE KW_DOMAIN any_name opt_as? typename colquallist + : KW_CREATE KW_DOMAIN any_name KW_AS? typename colconstraint* ; alterdomainstmt : KW_ALTER KW_DOMAIN any_name ( alter_column_default - | KW_DROP KW_NOT KW_NULL - | KW_SET KW_NOT KW_NULL - | KW_ADD tableconstraint - | KW_DROP KW_CONSTRAINT opt_if_exists? name opt_drop_behavior? - | KW_VALIDATE KW_CONSTRAINT name + | (KW_DROP | KW_SET) KW_NOT KW_NULL + | KW_ADD (KW_CONSTRAINT colid)? constraintelem + | KW_DROP KW_CONSTRAINT opt_if_exists? colid opt_drop_behavior? + | KW_VALIDATE KW_CONSTRAINT colid ) ; -opt_as - : KW_AS - ; - altertsdictionarystmt : KW_ALTER KW_TEXT KW_SEARCH KW_DICTIONARY any_name definition ; altertsconfigurationstmt - : KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_ADD KW_MAPPING KW_FOR name_list any_with any_name_list - | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_ALTER KW_MAPPING KW_FOR name_list any_with any_name_list - | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_ALTER KW_MAPPING KW_REPLACE any_name any_with any_name - | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_ALTER KW_MAPPING KW_FOR name_list KW_REPLACE any_name any_with any_name + : KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name (KW_ADD | KW_ALTER) KW_MAPPING KW_FOR name_list KW_WITH any_name_list + | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_ALTER KW_MAPPING (KW_FOR name_list)? KW_REPLACE any_name KW_WITH any_name | KW_ALTER KW_TEXT KW_SEARCH KW_CONFIGURATION any_name KW_DROP KW_MAPPING opt_if_exists? KW_FOR name_list ; -any_with - : KW_WITH - ; // | WITH_LA - createconversionstmt - : KW_CREATE opt_default? KW_CONVERSION any_name KW_FOR sconst KW_TO sconst KW_FROM any_name + : KW_CREATE KW_DEFAULT? KW_CONVERSION any_name KW_FOR sconst KW_TO sconst KW_FROM any_name ; clusterstmt - : KW_CLUSTER opt_verbose? table_name cluster_index_specification? - | KW_CLUSTER opt_verbose? - | KW_CLUSTER opt_verbose_list table_name cluster_index_specification? - ; - -opt_verbose_list - : OPEN_PAREN opt_verbose (COMMA opt_verbose)* CLOSE_PAREN - ; - -cluster_index_specification - : KW_USING name + : KW_CLUSTER opt_verbose? (table_name table_access_method_clause?)? + | KW_CLUSTER OPEN_PAREN opt_verbose (COMMA opt_verbose)* CLOSE_PAREN table_name table_access_method_clause? ; vacuumstmt - : KW_VACUUM opt_full? opt_freeze? opt_verbose? opt_analyze? opt_vacuum_relation_list? - | KW_VACUUM (OPEN_PAREN vac_analyze_option_list CLOSE_PAREN)? opt_vacuum_relation_list? + : KW_VACUUM ((KW_FULL? KW_FREEZE? opt_verbose? analyze_keyword?) | (explain_option_list)?) vacuum_relation_list? ; analyzestmt - : analyze_keyword opt_verbose? opt_vacuum_relation_list? - | analyze_keyword OPEN_PAREN analyze_options_list CLOSE_PAREN opt_vacuum_relation_list? - ; - -vac_analyze_option_list - : vac_analyze_option_elem (COMMA vac_analyze_option_elem)* + : analyze_keyword ( + opt_verbose? + | OPEN_PAREN analyze_option_elem (COMMA analyze_option_elem)* CLOSE_PAREN + ) vacuum_relation_list? ; analyze_keyword @@ -2721,74 +1865,28 @@ analyze_keyword ; vac_analyze_option_elem - : vac_analyze_option_name vac_analyze_option_arg? - ; - -vac_analyze_option_name - : nonreservedword - | analyze_keyword - ; - -vac_analyze_option_arg - : opt_boolean_or_string - | numericonly - ; - -opt_analyze - : analyze_keyword - ; - -analyze_options_list - : analyze_option_elem (COMMA analyze_option_elem)* + : (nonreservedword | analyze_keyword) (opt_boolean_or_string | numericonly)? ; analyze_option_elem - : opt_verbose - | opt_skiplock - | opt_buffer_usage_limit + : (KW_SKIP_LOCKED | KW_VERBOSE) (KW_FALSE | KW_TRUE)? + | KW_BUFFER_USAGE_LIMIT (numericonly | sconst) ; // support on v12+ opt_verbose : KW_VERBOSE (KW_FALSE | KW_TRUE)? ; -opt_skiplock - : KW_SKIP_LOCKED (KW_FALSE | KW_TRUE)? - ; - -opt_buffer_usage_limit - : KW_BUFFER_USAGE_LIMIT (numericonly | sconst) - ; - -opt_full - : KW_FULL - ; - -opt_freeze - : KW_FREEZE - ; - -opt_name_list - : OPEN_PAREN column_list CLOSE_PAREN - ; - vacuum_relation - : table_name opt_name_list? + : table_name opt_column_list? ; vacuum_relation_list : vacuum_relation (COMMA vacuum_relation)* ; -opt_vacuum_relation_list - : vacuum_relation_list - ; - explainstmt - : KW_EXPLAIN explainablestmt - | KW_EXPLAIN analyze_keyword opt_verbose? explainablestmt - | KW_EXPLAIN KW_VERBOSE explainablestmt - | KW_EXPLAIN OPEN_PAREN explain_option_list CLOSE_PAREN explainablestmt + : KW_EXPLAIN (explain_option_list | KW_VERBOSE? | (analyze_keyword opt_verbose?)?) explainablestmt ; explainablestmt @@ -2804,29 +1902,15 @@ explainablestmt ; explain_option_list - : explain_option_elem (COMMA explain_option_elem)* - ; - -explain_option_elem - : explain_option_name explain_option_arg? - ; - -explain_option_name - : nonreservedword - | analyze_keyword - ; - -explain_option_arg - : opt_boolean_or_string - | numericonly + : OPEN_PAREN vac_analyze_option_elem (COMMA vac_analyze_option_elem)* CLOSE_PAREN ; preparestmt - : KW_PREPARE name prep_type_clause? KW_AS preparablestmt + : KW_PREPARE colid prep_type_clause? KW_AS preparablestmt ; prep_type_clause - : OPEN_PAREN type_list CLOSE_PAREN + : OPEN_PAREN typename (COMMA typename)* CLOSE_PAREN ; preparablestmt @@ -2837,8 +1921,8 @@ preparablestmt ; executestmt - : KW_EXECUTE name execute_param_clause? - | KW_CREATE opttemp? KW_TABLE opt_if_not_exists? create_as_target KW_AS KW_EXECUTE name execute_param_clause? opt_with_data? + : KW_EXECUTE colid execute_param_clause? + | KW_CREATE opttemp? KW_TABLE opt_if_not_exists? create_as_target KW_AS KW_EXECUTE colid execute_param_clause? opt_with_data? ; execute_param_clause @@ -2846,29 +1930,25 @@ execute_param_clause ; deallocatestmt - : KW_DEALLOCATE KW_PREPARE? (name | KW_ALL) + : KW_DEALLOCATE KW_PREPARE? (colid | KW_ALL) ; insertstmt - : opt_with_clause? KW_INSERT KW_INTO insert_target insert_rest opt_on_conflict? returning_clause? # insertStatement - ; - -insert_target - : table_name (KW_AS colid)? + : with_clause? KW_INSERT KW_INTO table_name (KW_AS colid)? insert_rest ( + KW_ON KW_CONFLICT (index_params where_clause? | KW_ON KW_CONSTRAINT colid)? KW_DO ( + KW_UPDATE KW_SET set_clause_list where_clause? + | KW_NOTHING + ) + )? returning_clause? # insertStatement ; insert_rest - : (OPEN_PAREN insert_column_list CLOSE_PAREN)? (KW_OVERRIDING override_kind KW_VALUE)? ( + : (OPEN_PAREN insert_column_list CLOSE_PAREN)? (KW_OVERRIDING (KW_USER | KW_SYSTEM) KW_VALUE)? ( default_values_or_values | selectstmt ) ; -override_kind - : KW_USER - | KW_SYSTEM - ; - insert_column_list : insert_column_item (COMMA insert_column_item)* ; @@ -2877,56 +1957,26 @@ insert_column_item : column_name opt_indirection ; -opt_on_conflict - : KW_ON KW_CONFLICT opt_conf_expr? KW_DO ( - KW_UPDATE KW_SET set_clause_list where_clause? - | KW_NOTHING - ) - ; - -opt_conf_expr - : OPEN_PAREN index_params CLOSE_PAREN where_clause? - | KW_ON KW_CONSTRAINT name - ; - returning_clause : KW_RETURNING target_list ; deletestmt - : opt_with_clause? KW_DELETE KW_FROM relation_expr_opt_alias using_clause? where_or_current_clause? returning_clause? - ; - -using_clause - : KW_USING from_list + : with_clause? KW_DELETE KW_FROM relation_expr_opt_alias (KW_USING from_list)? where_or_current_clause? returning_clause? ; lockstmt - : KW_LOCK opt_table? relation_expr_list opt_lock? opt_nowait? - ; - -opt_lock - : KW_IN lock_type KW_MODE - ; - -lock_type - : KW_ACCESS (KW_SHARE | KW_EXCLUSIVE) - | KW_ROW (KW_SHARE | KW_EXCLUSIVE) - | KW_SHARE (KW_UPDATE KW_EXCLUSIVE | KW_ROW KW_EXCLUSIVE)? - | KW_EXCLUSIVE - ; - -opt_nowait - : KW_NOWAIT - ; - -opt_nowait_or_skip - : KW_NOWAIT - | KW_SKIP KW_LOCKED + : KW_LOCK KW_TABLE? relation_expr_list ( + KW_IN ( + (KW_ACCESS | KW_ROW) (KW_SHARE | KW_EXCLUSIVE) + | KW_SHARE (KW_UPDATE KW_EXCLUSIVE | KW_ROW KW_EXCLUSIVE)? + | KW_EXCLUSIVE + ) KW_MODE + )? KW_NOWAIT? ; updatestmt - : opt_with_clause? KW_UPDATE relation_expr_opt_alias KW_SET set_clause_list from_clause? where_or_current_clause? returning_clause? + : with_clause? KW_UPDATE relation_expr_opt_alias KW_SET set_clause_list from_clause? where_or_current_clause? returning_clause? ; set_clause_list @@ -2934,37 +1984,17 @@ set_clause_list ; set_clause - : set_target EQUAL a_expr - | OPEN_PAREN set_target_list CLOSE_PAREN EQUAL ( - KW_ROW? a_expr + : insert_column_item EQUAL expression + | OPEN_PAREN insert_column_list CLOSE_PAREN EQUAL ( + KW_ROW? expression | OPEN_PAREN select_clause CLOSE_PAREN ) ; -set_target - : column_name opt_indirection - ; - -set_target_list - : set_target (COMMA set_target)* - ; - declarecursorstmt - : KW_DECLARE cursor_name cursor_options KW_CURSOR opt_hold KW_FOR selectstmt - ; - -cursor_name - : name - ; - -cursor_options - : (KW_NO KW_SCROLL | KW_SCROLL | KW_BINARY | KW_INSENSITIVE)* - ; - -opt_hold - : - | KW_WITH KW_HOLD - | KW_WITHOUT KW_HOLD + : KW_DECLARE colid (((KW_NO? KW_SCROLL) | KW_BINARY | KW_INSENSITIVE)*) KW_CURSOR ( + (KW_WITH | KW_WITHOUT) KW_HOLD + )? KW_FOR selectstmt ; /* @@ -2983,18 +2013,13 @@ selectstmt ; select_with_parens - : OPEN_PAREN select_no_parens CLOSE_PAREN - | OPEN_PAREN select_with_parens CLOSE_PAREN + : OPEN_PAREN (select_no_parens | select_with_parens) CLOSE_PAREN ; select_no_parens - : select_clause opt_sort_clause? ( - for_locking_clause opt_select_limit? - | select_limit opt_for_locking_clause? - )? - | with_clause select_clause opt_sort_clause? ( - for_locking_clause opt_select_limit? - | select_limit opt_for_locking_clause? + : with_clause? select_clause sort_clause? ( + for_locking_clause select_limit? + | select_limit for_locking_clause? )? ; @@ -3005,34 +2030,23 @@ select_clause simple_select : ( - KW_SELECT (opt_all_clause? into_clause? opt_target_list? | distinct_clause? target_list?) into_clause? from_clause? where_clause? group_clause - ? having_clause? window_clause? + KW_SELECT (KW_ALL? into_clause? | distinct_clause?) sql_expression | values_clause | KW_TABLE relation_expr | select_with_parens set_operator_with_all_or_distinct (simple_select | select_with_parens) ) (set_operator_with_all_or_distinct ( simple_select | select_with_parens))* ; -set_operator - : KW_UNION # union - | KW_INTERSECT # intersect - | KW_EXCEPT # except - ; - set_operator_with_all_or_distinct - : set_operator all_or_distinct? + : (KW_UNION | KW_INTERSECT | KW_EXCEPT) (KW_ALL | KW_DISTINCT)? ; with_clause - : KW_WITH KW_RECURSIVE? cte_list - ; - -cte_list - : common_table_expr (COMMA common_table_expr)* + : KW_WITH KW_RECURSIVE? (common_table_expr (COMMA common_table_expr)*) ; common_table_expr - : name opt_name_list? KW_AS opt_materialized? OPEN_PAREN preparablestmt CLOSE_PAREN search_cluase? cycle_cluase? + : colid opt_column_list? KW_AS (KW_NOT? KW_MATERIALIZED)? OPEN_PAREN preparablestmt CLOSE_PAREN search_cluase? cycle_cluase? ; search_cluase @@ -3040,125 +2054,59 @@ search_cluase ; cycle_cluase - : KW_CYCLE column_list KW_SET column_name (KW_TO name KW_DEFAULT name)? KW_USING column_name - ; - -opt_materialized - : KW_MATERIALIZED - | KW_NOT KW_MATERIALIZED - ; - -opt_with_clause - : with_clause + : KW_CYCLE column_list KW_SET column_name (KW_TO colid KW_DEFAULT colid)? KW_USING column_name ; into_clause - : KW_INTO (opt_strict opttempTableName | into_target) - ; - -opt_strict - : - | KW_STRICT + : KW_INTO (KW_STRICT? opttempTableName | expr_list) ; opttempTableName - : (KW_LOCAL | KW_GLOBAL)? (KW_TEMPORARY | KW_TEMP) opt_table? table_name_create - | KW_UNLOGGED opt_table? table_name_create - | KW_TABLE table_name_create - | table_name_create - ; - -opt_table - : KW_TABLE - ; - -all_or_distinct - : KW_ALL - | KW_DISTINCT + : (KW_LOCAL | KW_GLOBAL)? (KW_TEMPORARY | KW_TEMP) KW_TABLE? table_name_create + | KW_UNLOGGED? KW_TABLE? table_name_create ; distinct_clause - : KW_DISTINCT (KW_ON OPEN_PAREN expr_list CLOSE_PAREN)? - ; - -opt_all_clause - : KW_ALL - ; - -opt_sort_clause - : sort_clause + : KW_DISTINCT (KW_ON execute_param_clause)? ; sort_clause - : KW_ORDER KW_BY sortby_list - ; - -sortby_list - : sortby (COMMA sortby)* + : KW_ORDER KW_BY sortby (COMMA sortby)* ; sortby - : column_expr_noparen (KW_USING qual_all_op | opt_asc_desc)? opt_nulls_order? + : column_expr_noparen (KW_USING qual_all_op | (KW_ASC | KW_DESC))? ( + KW_NULLS (KW_FIRST | KW_LAST) + )? ; select_limit : // https://www.postgresql.org/docs/16/sql-select.html#SQL-LIMIT - limit_clause offset_clause? - | offset_clause fetch_clause? - | fetch_clause offset_clause? - ; - -opt_select_limit - : select_limit + offset_clause fetch_clause? + | (limit_clause | fetch_clause) offset_clause? ; limit_clause - : KW_LIMIT select_limit_value (COMMA select_offset_value)? + : KW_LIMIT (expression | KW_ALL) (COMMA expression)? ; fetch_clause - : KW_FETCH first_or_next ( - select_fetch_first_value row_or_rows (KW_ONLY | KW_WITH KW_TIES) - | row_or_rows (KW_ONLY | KW_WITH KW_TIES) + : KW_FETCH (KW_FIRST | KW_NEXT) ( + select_fetch_first_value? (KW_ROW | KW_ROWS) (KW_ONLY | KW_WITH KW_TIES) ) ; offset_clause - : KW_OFFSET (select_fetch_first_value row_or_rows | select_offset_value) - ; - -select_limit_value - : a_expr - | KW_ALL - ; - -select_offset_value - : a_expr + : KW_OFFSET (select_fetch_first_value (KW_ROW | KW_ROWS) | expression) ; select_fetch_first_value - : PLUS i_or_f_const - | MINUS i_or_f_const - | c_expr - ; - -i_or_f_const - : iconst - | fconst - ; - -row_or_rows - : KW_ROW - | KW_ROWS - ; - -first_or_next - : KW_FIRST - | KW_NEXT + : (PLUS | MINUS) (Integral | Numeric) + | primaryExpression ; group_clause - : KW_GROUP KW_BY (all_or_distinct)? group_by_list + : KW_GROUP KW_BY (KW_ALL | KW_DISTINCT)? group_by_list ; group_by_list @@ -3167,60 +2115,23 @@ group_by_list group_by_item : column_expr_noparen - | empty_grouping_set - | cube_clause - | rollup_clause - | grouping_sets_clause - | OPEN_PAREN column_expr_list_noparen CLOSE_PAREN - ; - -empty_grouping_set - : OPEN_PAREN CLOSE_PAREN - ; - -rollup_clause - : KW_ROLLUP OPEN_PAREN column_expr_list_noparen CLOSE_PAREN - ; - -cube_clause - : KW_CUBE OPEN_PAREN column_expr_list_noparen CLOSE_PAREN - ; - -grouping_sets_clause - : KW_GROUPING KW_SETS OPEN_PAREN group_by_list CLOSE_PAREN - ; - -having_clause - : KW_HAVING a_expr + | OPEN_PAREN CLOSE_PAREN + | (KW_CUBE | KW_ROLLUP)? OPEN_PAREN (column_expr_noparen (COMMA column_expr_noparen)*) CLOSE_PAREN + | KW_GROUPING KW_SETS OPEN_PAREN group_by_list CLOSE_PAREN ; for_locking_clause - : for_locking_items + : ( + KW_FOR ((KW_NO KW_KEY)? KW_UPDATE | KW_KEY? KW_SHARE) (KW_OF qualified_name_list)? ( + KW_NOWAIT + | KW_SKIP KW_LOCKED + )? + )+ | KW_FOR KW_READ KW_ONLY ; -opt_for_locking_clause - : for_locking_clause - ; - -for_locking_items - : for_locking_item+ - ; - -for_locking_item - : for_locking_strength locked_rels_list? opt_nowait_or_skip? - ; - -for_locking_strength - : KW_FOR ((KW_NO KW_KEY)? KW_UPDATE | KW_KEY? KW_SHARE) - ; - -locked_rels_list - : KW_OF qualified_name_list - ; - values_clause - : KW_VALUES OPEN_PAREN expr_list CLOSE_PAREN (COMMA OPEN_PAREN expr_list CLOSE_PAREN)* + : KW_VALUES execute_param_clause (COMMA execute_param_clause)* ; from_clause @@ -3233,20 +2144,17 @@ from_list table_ref : ( - (relation_expr | view_relation_expr) opt_alias_clause? tablesample_clause? - | func_table func_alias_clause? - | xmltable opt_alias_clause? - | select_with_parens opt_alias_clause? - | KW_LATERAL ( - xmltable opt_alias_clause? + (relation_expr | (KW_ONLY? view_name STAR? column_list? where_clause?)) alias_clause? tablesample_clause? + | KW_LATERAL? ( + xmltable alias_clause? | func_table func_alias_clause? - | select_with_parens opt_alias_clause? + | select_with_parens alias_clause? ) | OPEN_PAREN table_ref ( KW_CROSS KW_JOIN table_ref | KW_NATURAL join_type? KW_JOIN table_ref | join_type? KW_JOIN table_ref join_qual - )? CLOSE_PAREN opt_alias_clause? + )? CLOSE_PAREN alias_clause? ) ( KW_CROSS KW_JOIN table_ref | KW_NATURAL join_type? KW_JOIN table_ref @@ -3258,10 +2166,6 @@ alias_clause : KW_AS? colid (OPEN_PAREN name_list CLOSE_PAREN)? ; -opt_alias_clause - : alias_clause - ; - func_alias_clause : alias_clause | (KW_AS colid? | colid) OPEN_PAREN tablefuncelementlist CLOSE_PAREN @@ -3272,22 +2176,18 @@ join_type ; join_qual - : KW_USING OPEN_PAREN column_list CLOSE_PAREN - | KW_ON a_expr + : KW_USING opt_column_list + | KW_ON expression ; relation_expr - : KW_ONLY? table_name STAR? + : truncate_table | KW_ONLY ( table_name | OPEN_PAREN table_name CLOSE_PAREN) | KW_IN KW_SCHEMA (schema_name | KW_CURRENT_SCHEMA) ; -view_relation_expr - : KW_ONLY? view_name STAR? column_list? where_clause? - ; - publication_relation_expr - : KW_TABLE KW_ONLY? table_name STAR? (OPEN_PAREN column_list CLOSE_PAREN)? where_clause? + : KW_TABLE truncate_table (opt_column_list)? where_clause? | KW_TABLE KW_ONLY ( table_name | OPEN_PAREN table_name CLOSE_PAREN) | KW_TABLES KW_IN KW_SCHEMA (schema_name | KW_CURRENT_SCHEMA) ; @@ -3296,41 +2196,25 @@ relation_expr_list : relation_expr (COMMA relation_expr)* ; -publication_relation_expr_list - : publication_relation_expr (COMMA publication_relation_expr)* - ; - relation_expr_opt_alias : relation_expr (KW_AS? colid)? ; tablesample_clause - : KW_TABLESAMPLE function_name OPEN_PAREN expr_list CLOSE_PAREN opt_repeatable_clause? - ; - -opt_repeatable_clause - : KW_REPEATABLE OPEN_PAREN a_expr CLOSE_PAREN + : KW_TABLESAMPLE function_name execute_param_clause ( + KW_REPEATABLE OPEN_PAREN expression CLOSE_PAREN + )? ; func_table - : func_expr_windowless opt_ordinality? - | KW_ROWS KW_FROM OPEN_PAREN rowsfrom_list CLOSE_PAREN opt_ordinality? + : ( + func_expr_windowless + | (KW_ROWS KW_FROM OPEN_PAREN rowsfrom_item (COMMA rowsfrom_item)* CLOSE_PAREN) + ) (KW_WITH KW_ORDINALITY)? ; rowsfrom_item - : func_expr_windowless opt_col_def_list? - ; - -rowsfrom_list - : rowsfrom_item (COMMA rowsfrom_item)* - ; - -opt_col_def_list - : KW_AS OPEN_PAREN tablefuncelementlist CLOSE_PAREN - ; - -opt_ordinality - : KW_WITH KW_ORDINALITY + : func_expr_windowless (KW_AS OPEN_PAREN tablefuncelementlist CLOSE_PAREN)? ; where_clause @@ -3338,11 +2222,7 @@ where_clause ; where_or_current_clause - : KW_WHERE (KW_CURRENT KW_OF cursor_name | a_expr) - ; - -opttablefuncelementlist - : tablefuncelementlist + : KW_WHERE (KW_CURRENT KW_OF colid | expression) ; tablefuncelementlist @@ -3355,72 +2235,44 @@ tablefuncelement xmltable : KW_XMLTABLE OPEN_PAREN ( - c_expr xmlexists_argument KW_COLUMNS xmltable_column_list - | KW_XMLNAMESPACES OPEN_PAREN xml_namespace_list CLOSE_PAREN COMMA c_expr xmlexists_argument KW_COLUMNS xmltable_column_list + (KW_XMLNAMESPACES OPEN_PAREN xml_namespace_el (COMMA xml_namespace_el)* CLOSE_PAREN COMMA)? primaryExpression xmlexists_argument KW_COLUMNS + xmltable_column_el (COMMA xmltable_column_el)* ) CLOSE_PAREN ; -xmltable_column_list - : xmltable_column_el (COMMA xmltable_column_el)* - ; - xmltable_column_el - : colid (typename xmltable_column_option_list? | KW_FOR KW_ORDINALITY) - ; - -xmltable_column_option_list - : xmltable_column_option_el+ - ; - -xmltable_column_option_el - : KW_DEFAULT a_expr - | identifier a_expr - | KW_NOT KW_NULL - | KW_NULL - ; - -xml_namespace_list - : xml_namespace_el (COMMA xml_namespace_el)* + : colid ( + typename (((KW_DEFAULT | identifier) expression | KW_NOT? KW_NULL)+)? + | KW_FOR KW_ORDINALITY + ) ; xml_namespace_el - : b_expr KW_AS collabel - | KW_DEFAULT b_expr + : primaryExpression KW_AS collabel + | KW_DEFAULT primaryExpression ; typename - : KW_SETOF? simpletypename (opt_array_bounds | KW_ARRAY (OPEN_BRACKET iconst CLOSE_BRACKET)?) + : KW_SETOF? simpletypename ( + ((OPEN_BRACKET Integral? CLOSE_BRACKET)*) + | KW_ARRAY (OPEN_BRACKET Integral CLOSE_BRACKET)? + ) | qualified_name PERCENT (KW_ROWTYPE | KW_TYPE) ; -opt_array_bounds - : (OPEN_BRACKET iconst? CLOSE_BRACKET)* - ; - simpletypename - : generictype - | numeric - | bit - | character - | constdatetime - | constinterval ( opt_interval? | OPEN_PAREN iconst CLOSE_PAREN) + : type_function_name attrs? execute_param_clause? + | consttypename + | KW_INTERVAL ( opt_interval? | opt_float) ; consttypename : numeric - | constbit - | constcharacter + | bit + | character | constdatetime ; -generictype - : type_function_name attrs? opt_type_modifiers? - ; - -opt_type_modifiers - : OPEN_PAREN expr_list CLOSE_PAREN - ; - numeric : KW_INT | KW_INTEGER @@ -3429,86 +2281,41 @@ numeric | KW_REAL | KW_FLOAT opt_float? | KW_DOUBLE KW_PRECISION - | KW_DECIMAL opt_type_modifiers? - | KW_DEC opt_type_modifiers? - | KW_NUMERIC opt_type_modifiers? + | (KW_DECIMAL | KW_DEC | KW_NUMERIC) execute_param_clause? | KW_BOOLEAN ; opt_float - : OPEN_PAREN iconst CLOSE_PAREN + : OPEN_PAREN Integral CLOSE_PAREN ; bit - : bitwithlength - | bitwithoutlength - ; - -constbit - : bitwithlength - | bitwithoutlength - ; - -bitwithlength - : KW_BIT opt_varying? OPEN_PAREN expr_list CLOSE_PAREN - ; - -bitwithoutlength - : KW_BIT opt_varying? + : KW_BIT KW_VARYING? execute_param_clause? ; character - : character_c (OPEN_PAREN iconst CLOSE_PAREN)? - ; - -constcharacter - : character_c (OPEN_PAREN iconst CLOSE_PAREN)? - ; - -character_c - : (KW_CHARACTER | KW_CHAR | KW_NCHAR) opt_varying? - | KW_VARCHAR - | KW_NATIONAL (KW_CHARACTER | KW_CHAR) opt_varying? - ; - -opt_varying - : KW_VARYING + : ( + (KW_CHARACTER | KW_CHAR | KW_NCHAR) KW_VARYING? + | KW_VARCHAR + | KW_NATIONAL (KW_CHARACTER | KW_CHAR) KW_VARYING? + ) (opt_float)? ; constdatetime - : (KW_TIMESTAMP | KW_TIME) (OPEN_PAREN iconst CLOSE_PAREN)? opt_timezone? - ; - -constinterval - : KW_INTERVAL - ; - -//TODO with_la was used - -opt_timezone - : KW_WITH KW_TIME KW_ZONE - | KW_WITHOUT KW_TIME KW_ZONE + : (KW_TIMESTAMP | KW_TIME) (opt_float)? ((KW_WITH | KW_WITHOUT) KW_TIME KW_ZONE)? ; opt_interval - : KW_YEAR - | KW_MONTH - | KW_DAY - | KW_HOUR - | KW_MINUTE + : KW_MONTH | interval_second - | KW_YEAR KW_TO KW_MONTH - | KW_DAY KW_TO (KW_HOUR | KW_MINUTE | interval_second) - | KW_HOUR KW_TO (KW_MINUTE | interval_second) - | KW_MINUTE KW_TO interval_second + | KW_YEAR (KW_TO KW_MONTH)? + | KW_DAY (KW_TO (KW_HOUR | KW_MINUTE | interval_second))? + | KW_HOUR (KW_TO (KW_MINUTE | interval_second))? + | KW_MINUTE (KW_TO interval_second)? ; interval_second - : KW_SECOND (OPEN_PAREN iconst CLOSE_PAREN)? - ; - -opt_escape - : KW_ESCAPE a_expr + : KW_SECOND (opt_float)? ; //precendence accroding to Table 4.2. Operator Precedence (highest to lowest) @@ -3516,7 +2323,7 @@ opt_escape //https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-PRECEDENCE /* - original version of a_expr, for info a_expr: c_expr //:: left PostgreSQL-style typecast | a_expr + original version of a_expr, for info a_expr: primaryExpression //:: left PostgreSQL-style typecast | a_expr TYPECAST typename -- 1 | a_expr KW_COLLATE any_name -- 2 | a_expr AT TIME ZONE a_expr-- 3 //right unary plus, unary minus | (PLUS| MINUS) a_expr -- 4 //left exponentiation | a_expr CARET a_expr -- 5 //left multiplication, division, modulo | a_expr (STAR | SLASH | PERCENT) a_expr -- 6 //left @@ -3526,7 +2333,7 @@ opt_escape SYMMETRIC?)) a_expr opt_escape? -- 10 //< > = <= >= <> comparison operators | a_expr (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) a_expr -- 11 //IS ISNULL NOTNULL IS TRUE, IS FALSE, IS NULL, IS KW_DISTINCT FROM, etc | a_expr IS NOT? ( NULL_P |TRUE_P |FALSE_P |UNKNOWN |KW_DISTINCT - KW_FROM a_expr |OF OPEN_PAREN type_list CLOSE_PAREN |DOCUMENT_P |unicode_normal_form? NORMALIZED ) -- + KW_FROM a_expr |OF OPEN_PAREN type_name_list CLOSE_PAREN |DOCUMENT_P |unicode_normal_form? NORMALIZED ) -- 12 | a_expr (ISNULL|NOTNULL) -- 13 | row OVERLAPS row -- 14 //NOT right logical negation | NOT a_expr -- 15 //AND left logical conjunction | a_expr AND a_expr -- 16 //OR left logical disjunction | a_expr OR a_expr -- 17 | a_expr (LESS_LESS|GREATER_GREATER) a_expr -- 18 | a_expr qual_op -- 19 | @@ -3534,205 +2341,93 @@ opt_escape CLOSE_PAREN) -- 21 | UNIQUE select_with_parens -- 22 | KW_DEFAULT -- 23 ; */ -a_expr - : a_expr_qual - ; - -/*23*/ - -/*moved to c_expr*/ - -/*22*/ - -/*moved to c_expr*/ - -/*19*/ - -a_expr_qual - : a_expr_lessless qual_op? - ; - -/*18*/ - -a_expr_lessless - : a_expr_or ((LESS_LESS | GREATER_GREATER) a_expr_or)* - ; - -/*17*/ - -a_expr_or - : a_expr_and (KW_OR a_expr_and)* - ; - -/*16*/ - -a_expr_and - : a_expr_in (KW_AND a_expr_in)* - ; - -/*20*/ - -a_expr_in - : a_expr_unary_not (KW_NOT? KW_IN in_expr)? - ; - -/*15*/ - -a_expr_unary_not - : KW_NOT? a_expr_isnull - ; - -/*14*/ - -/*moved to c_expr*/ - -/*13*/ - -a_expr_isnull - : a_expr_is_not (KW_ISNULL | KW_NOTNULL)? - ; - -/*12*/ - -a_expr_is_not - : a_expr_compare ( - KW_IS KW_NOT? ( - KW_NULL - | KW_TRUE - | KW_FALSE - | KW_UNKNOWN - | KW_DISTINCT KW_FROM a_expr - | KW_OF OPEN_PAREN type_list CLOSE_PAREN - | KW_DOCUMENT - | unicode_normal_form? KW_NORMALIZED - ) - )? - ; - -/*11*/ - -a_expr_compare - : a_expr_like ( - (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) a_expr_like - | subquery_Op sub_type (select_with_parens | OPEN_PAREN a_expr CLOSE_PAREN) /*21*/ - )? - ; - -/*10*/ - -a_expr_like - : a_expr_qual_op ( - KW_NOT? (KW_LIKE | KW_ILIKE | KW_SIMILAR KW_TO | KW_BETWEEN KW_SYMMETRIC?) a_expr_qual_op opt_escape? - )? - ; - -/* 8*/ - -a_expr_qual_op - : a_expr_unary_qualop (qual_op a_expr_unary_qualop)* - ; - -/* 9*/ - -a_expr_unary_qualop - : qual_op? a_expr_add - ; - -/* 7*/ - -a_expr_add - : a_expr_mul ((MINUS | PLUS) a_expr_mul)* - ; - -/* 6*/ - -a_expr_mul - : a_expr_caret ((STAR | SLASH | PERCENT) a_expr_caret)* - ; - -/* 5*/ - -a_expr_caret - : a_expr_unary_sign (CARET a_expr)? - ; - -/* 4*/ - -a_expr_unary_sign - : (MINUS | PLUS)? a_expr_at_time_zone /* */ - ; - -/* 3*/ - -a_expr_at_time_zone - : a_expr_collate (KW_AT KW_TIME KW_ZONE a_expr)? - ; - -/* 2*/ - -a_expr_collate - : a_expr_typecast (KW_COLLATE any_name)? - ; - -/* 1*/ - -a_expr_typecast - : c_expr (TYPECAST typename)* +comparisonOperator + : LT + | GT + | EQUAL + | LESS_EQUALS + | GREATER_EQUALS + | NOT_EQUALS ; -b_expr - : c_expr - | b_expr TYPECAST typename - //right unary plus, unary minus - | (PLUS | MINUS) b_expr - //^ left exponentiation - | b_expr CARET b_expr - //* / % left multiplication, division, modulo - | b_expr (STAR | SLASH | PERCENT) b_expr - //+ - left addition, subtraction - | b_expr (PLUS | MINUS) b_expr - //(any other operator) left all other native and user-defined operators - | b_expr qual_op b_expr - //< > = <= >= <> comparison operators - | b_expr ( LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) b_expr - | qual_op b_expr - | b_expr qual_op - //S ISNULL NOTNULL IS TRUE, IS FALSE, IS NULL, IS KW_DISTINCT FROM, etc - | b_expr KW_IS KW_NOT? ( - KW_DISTINCT KW_FROM b_expr - | KW_OF OPEN_PAREN type_list CLOSE_PAREN +expression + : booleanExpression + ; + +booleanExpression + : valueExpression predicate[$valueExpression.ctx]? # predicated + | KW_NOT booleanExpression # logicalNot + | left= booleanExpression operator= KW_AND right= booleanExpression # logicalBinary + | left= booleanExpression operator= KW_OR right= booleanExpression # logicalBinary + ; + +predicate[antlr.ParserRuleContext value] + : comparisonOperator right= valueExpression # comparison + | comparisonOperator subquery_Op sub_type ( + select_with_parens + | OPEN_PAREN expression CLOSE_PAREN + ) # quantifiedComparison + | KW_NOT? KW_BETWEEN lower= valueExpression KW_AND upper= valueExpression # between + | KW_NOT? KW_IN OPEN_PAREN expression (COMMA expression)* CLOSE_PAREN # inList + | KW_NOT? KW_IN select_with_parens # inSubquery + | KW_NOT? (KW_LIKE | KW_ILIKE | KW_SIMILAR KW_TO | KW_BETWEEN KW_SYMMETRIC?) pattern= valueExpression ( + KW_ESCAPE escape= valueExpression + )? # like + | KW_IS KW_NOT? KW_NULL # nullPredicate + | KW_IS KW_NOT? KW_DISTINCT KW_FROM right= valueExpression # distinctFrom + ; + +valueExpression + : primaryExpression # valueExpressionDefault + | valueExpression KW_AT KW_TIME KW_ZONE expression # atTimeZone + | operator= (MINUS | PLUS) valueExpression # arithmeticUnary + | left= valueExpression operator= (STAR | SLASH | PERCENT) right= valueExpression # arithmeticBinary + | left= valueExpression operator= (PLUS | MINUS) right= valueExpression # arithmeticBinary + | left= valueExpression CARET right= valueExpression # concatenation + ; + +primaryExpression + : (KW_EXISTS | KW_UNIQUE) select_with_parens + | KW_ARRAY (select_with_parens | array_expr) + | PARAM opt_indirection + | KW_GROUPING execute_param_clause + | Integral + | Numeric + | BinaryStringConstant + | HexadecimalStringConstant + | function_name (sconst | OPEN_PAREN func_arg_list sort_clause? CLOSE_PAREN sconst) + | consttypename? sconst + | KW_INTERVAL ( sconst opt_interval? | opt_float sconst) + | KW_TRUE + | KW_FALSE + | KW_NULL + | PLSQLVARIABLENAME + | OPEN_PAREN a_expr_in_parens= expression CLOSE_PAREN opt_indirection + | KW_CASE expression? when_clause+ (KW_ELSE expression)? KW_END + | func_expr + | select_with_parens indirection? + | explicit_row + | OPEN_PAREN expression COMMA expr_list CLOSE_PAREN + | row KW_OVERLAPS row + | qualified_name + | primaryExpression TYPECAST typename + | (PLUS | MINUS) primaryExpression + | primaryExpression qual_op primaryExpression? + | primaryExpression mathop primaryExpression + | qual_op primaryExpression + | primaryExpression KW_IS KW_NOT? ( + KW_DISTINCT KW_FROM primaryExpression + | KW_OF prep_type_clause | KW_DOCUMENT ) ; -c_expr - : KW_EXISTS select_with_parens # c_expr_exists - | KW_ARRAY (select_with_parens | array_expr) # c_expr_expr - | PARAM opt_indirection # c_expr_expr - | KW_GROUPING OPEN_PAREN expr_list CLOSE_PAREN # c_expr_expr - | /*22*/ KW_UNIQUE select_with_parens # c_expr_expr - | aexprconst # c_expr_expr - | plsqlvariablename # c_expr_expr - | OPEN_PAREN a_expr_in_parens= a_expr CLOSE_PAREN opt_indirection # c_expr_expr - | case_expr # c_expr_case - | func_expr # c_expr_expr - | select_with_parens indirection? # c_expr_expr - | explicit_row # c_expr_expr - | implicit_row # c_expr_expr - | row KW_OVERLAPS row /* 14*/ # c_expr_expr - | columnref # c_expr_expr - ; - -plsqlvariablename - : PLSQLVARIABLENAME - ; - func_application : function_name ( OPEN_PAREN ( - func_arg_list (COMMA KW_VARIADIC func_arg_expr)? opt_sort_clause? - | KW_VARIADIC func_arg_expr opt_sort_clause? - | (KW_ALL | KW_DISTINCT) func_arg_list opt_sort_clause? + func_arg_list (COMMA KW_VARIADIC func_arg_expr)? sort_clause? + | KW_VARIADIC func_arg_expr sort_clause? + | (KW_ALL | KW_DISTINCT) func_arg_list sort_clause? | STAR | ) CLOSE_PAREN @@ -3740,7 +2435,9 @@ func_application ; func_expr - : func_application within_group_clause? filter_clause? over_clause? + : func_application (KW_WITHIN KW_GROUP OPEN_PAREN sort_clause CLOSE_PAREN)? ( + KW_FILTER OPEN_PAREN KW_WHERE expression CLOSE_PAREN + )? (KW_OVER (window_specification | colid))? | func_expr_common_subexpr ; @@ -3750,53 +2447,39 @@ func_expr_windowless ; func_expr_common_subexpr - : KW_COLLATION KW_FOR OPEN_PAREN a_expr CLOSE_PAREN + : KW_COLLATION KW_FOR OPEN_PAREN expression CLOSE_PAREN | KW_CURRENT_DATE - | KW_CURRENT_TIME (OPEN_PAREN iconst CLOSE_PAREN)? - | KW_CURRENT_TIMESTAMP (OPEN_PAREN iconst CLOSE_PAREN)? - | KW_LOCALTIME (OPEN_PAREN iconst CLOSE_PAREN)? - | KW_LOCALTIMESTAMP (OPEN_PAREN iconst CLOSE_PAREN)? + | (KW_CURRENT_TIME | KW_CURRENT_TIMESTAMP | KW_LOCALTIME | KW_LOCALTIMESTAMP) (opt_float)? | KW_CURRENT_ROLE | KW_CURRENT_USER | KW_SESSION_USER | KW_USER | KW_CURRENT_CATALOG | KW_CURRENT_SCHEMA - | KW_CAST OPEN_PAREN a_expr KW_AS typename CLOSE_PAREN - | KW_EXTRACT OPEN_PAREN extract_list? CLOSE_PAREN - | KW_NORMALIZE OPEN_PAREN a_expr (COMMA unicode_normal_form)? CLOSE_PAREN - | KW_OVERLAY OPEN_PAREN overlay_list CLOSE_PAREN - | KW_POSITION OPEN_PAREN position_list? CLOSE_PAREN + | (KW_CAST | KW_TREAT) OPEN_PAREN expression KW_AS typename CLOSE_PAREN + | KW_EXTRACT OPEN_PAREN (extract_arg KW_FROM expression)? CLOSE_PAREN + | KW_NORMALIZE OPEN_PAREN expression (COMMA unicode_normal_form)? CLOSE_PAREN + | KW_OVERLAY OPEN_PAREN ( + expression KW_PLACING expression KW_FROM expression (KW_FOR expression)? + ) CLOSE_PAREN + | KW_POSITION OPEN_PAREN (primaryExpression KW_IN primaryExpression)? CLOSE_PAREN | KW_SUBSTRING OPEN_PAREN substr_list? CLOSE_PAREN - | KW_TREAT OPEN_PAREN a_expr KW_AS typename CLOSE_PAREN - | KW_TRIM OPEN_PAREN (KW_BOTH | KW_LEADING | KW_TRAILING)? trim_list CLOSE_PAREN - | KW_NULLIF OPEN_PAREN a_expr COMMA a_expr CLOSE_PAREN - | KW_COALESCE OPEN_PAREN expr_list CLOSE_PAREN - | KW_GREATEST OPEN_PAREN expr_list CLOSE_PAREN - | KW_LEAST OPEN_PAREN expr_list CLOSE_PAREN - | KW_XMLCONCAT OPEN_PAREN expr_list CLOSE_PAREN - | KW_XMLELEMENT OPEN_PAREN KW_NAME collabel (COMMA (xml_attributes | expr_list))? CLOSE_PAREN - | KW_XMLEXISTS OPEN_PAREN c_expr xmlexists_argument CLOSE_PAREN + | KW_TRIM OPEN_PAREN (KW_BOTH | KW_LEADING | KW_TRAILING)? ((expression? KW_FROM)? expr_list) CLOSE_PAREN + | KW_NULLIF OPEN_PAREN expression COMMA expression CLOSE_PAREN + | (KW_COALESCE | KW_GREATEST | KW_LEAST | KW_XMLCONCAT) execute_param_clause + | KW_XMLELEMENT OPEN_PAREN KW_NAME collabel ( + COMMA ((KW_XMLATTRIBUTES OPEN_PAREN xml_attribute_list CLOSE_PAREN) | expr_list) + )? CLOSE_PAREN + | KW_XMLEXISTS OPEN_PAREN primaryExpression xmlexists_argument CLOSE_PAREN | KW_XMLFOREST OPEN_PAREN xml_attribute_list CLOSE_PAREN - | KW_XMLPARSE OPEN_PAREN document_or_content a_expr xml_whitespace_option? CLOSE_PAREN - | KW_XMLPI OPEN_PAREN KW_NAME collabel (COMMA a_expr)? CLOSE_PAREN - | KW_XMLROOT OPEN_PAREN KW_XML a_expr COMMA xml_root_version opt_xml_root_standalone? CLOSE_PAREN - | KW_XMLSERIALIZE OPEN_PAREN document_or_content a_expr KW_AS simpletypename CLOSE_PAREN - ; - -xml_root_version - : KW_VERSION a_expr - | KW_VERSION KW_NO KW_VALUE - ; - -opt_xml_root_standalone - : COMMA KW_STANDALONE KW_YES - | COMMA KW_STANDALONE KW_NO - | COMMA KW_STANDALONE KW_NO KW_VALUE - ; - -xml_attributes - : KW_XMLATTRIBUTES OPEN_PAREN xml_attribute_list CLOSE_PAREN + | KW_XMLPARSE OPEN_PAREN document_or_content expression ( + (KW_PRESERVE | KW_STRIP) KW_WHITESPACE + )? CLOSE_PAREN + | KW_XMLPI OPEN_PAREN KW_NAME collabel (COMMA expression)? CLOSE_PAREN + | KW_XMLROOT OPEN_PAREN KW_XML expression COMMA KW_VERSION (( KW_NO KW_VALUE) | expression) ( + COMMA KW_STANDALONE ((KW_NO? KW_VALUE) | KW_YES) + )? CLOSE_PAREN + | KW_XMLSERIALIZE OPEN_PAREN document_or_content expression KW_AS simpletypename CLOSE_PAREN ; xml_attribute_list @@ -3804,7 +2487,7 @@ xml_attribute_list ; xml_attribute_el - : a_expr (KW_AS collabel)? + : expression (KW_AS collabel)? ; document_or_content @@ -3812,36 +2495,16 @@ document_or_content | KW_CONTENT ; -xml_whitespace_option - : KW_PRESERVE KW_WHITESPACE - | KW_STRIP KW_WHITESPACE - ; - xmlexists_argument - : KW_PASSING c_expr - | KW_PASSING c_expr xml_passing_mech - | KW_PASSING xml_passing_mech c_expr - | KW_PASSING xml_passing_mech c_expr xml_passing_mech + : KW_PASSING xml_passing_mech? primaryExpression xml_passing_mech? ; xml_passing_mech : KW_BY (KW_REF | KW_VALUE) ; -within_group_clause - : KW_WITHIN KW_GROUP OPEN_PAREN sort_clause CLOSE_PAREN - ; - -filter_clause - : KW_FILTER OPEN_PAREN KW_WHERE a_expr CLOSE_PAREN - ; - window_clause - : KW_WINDOW window_definition_list - ; - -window_definition_list - : window_definition (COMMA window_definition)* + : KW_WINDOW window_definition (COMMA window_definition)* ; window_definition @@ -3853,51 +2516,29 @@ over_clause ; window_specification - : OPEN_PAREN opt_existing_window_name? opt_partition_clause? opt_sort_clause? opt_frame_clause? CLOSE_PAREN - ; - -opt_existing_window_name - : colid - ; - -opt_partition_clause - : KW_PARTITION KW_BY expr_list + : OPEN_PAREN colid? (KW_PARTITION KW_BY expr_list)? sort_clause? opt_frame_clause? CLOSE_PAREN ; opt_frame_clause - : KW_RANGE frame_extent opt_window_exclusion_clause? - | KW_ROWS frame_extent opt_window_exclusion_clause? - | KW_GROUPS frame_extent opt_window_exclusion_clause? - ; - -frame_extent - : frame_bound - | KW_BETWEEN frame_bound KW_AND frame_bound + : (KW_RANGE | KW_ROWS | KW_GROUPS) ((KW_BETWEEN frame_bound KW_AND)? frame_bound) ( + KW_EXCLUDE (KW_CURRENT KW_ROW | KW_GROUP | KW_TIES | KW_NO KW_OTHERS) + )? ; frame_bound - : KW_UNBOUNDED (KW_PRECEDING | KW_FOLLOWING) + : (KW_UNBOUNDED | expression) (KW_PRECEDING | KW_FOLLOWING) | KW_CURRENT KW_ROW - | a_expr (KW_PRECEDING | KW_FOLLOWING) - ; - -opt_window_exclusion_clause - : KW_EXCLUDE (KW_CURRENT KW_ROW | KW_GROUP | KW_TIES | KW_NO KW_OTHERS) ; row - : KW_ROW OPEN_PAREN expr_list? CLOSE_PAREN - | OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN + : explicit_row + | OPEN_PAREN expr_list COMMA expression CLOSE_PAREN ; explicit_row : KW_ROW OPEN_PAREN expr_list? CLOSE_PAREN ; -implicit_row - : OPEN_PAREN a_expr COMMA expr_list CLOSE_PAREN - ; - sub_type : KW_ANY | KW_SOME @@ -3935,33 +2576,21 @@ qual_all_op ; subquery_Op - : all_op - | KW_OPERATOR OPEN_PAREN any_operator CLOSE_PAREN - | KW_LIKE - | KW_NOT KW_LIKE - | KW_ILIKE - | KW_NOT KW_ILIKE + : qual_all_op + | KW_NOT? (KW_LIKE | KW_ILIKE) ; expr_list - : a_expr (COMMA a_expr)* - ; - -column_expr_list_noparen - : column_expr_noparen (COMMA column_expr_noparen)* - ; - -column_expr_list - : column_expr (COMMA column_expr)* + : expression (COMMA expression)* ; column_expr - : (OPEN_PAREN a_expr CLOSE_PAREN) + : (OPEN_PAREN expression CLOSE_PAREN) | column_name ; column_expr_noparen - : a_expr + : expression | column_name ; @@ -3970,24 +2599,12 @@ func_arg_list ; func_arg_expr - : a_expr - | param_name (COLON_EQUALS | EQUALS_GREATER) a_expr - ; - -type_list - : typename (COMMA typename)* + : expression + | type_function_name (COLON_EQUALS | EQUALS_GREATER) expression ; array_expr - : OPEN_BRACKET (expr_list | array_expr_list)? CLOSE_BRACKET - ; - -array_expr_list - : array_expr (COMMA array_expr)* - ; - -extract_list - : extract_arg KW_FROM a_expr + : OPEN_BRACKET (expr_list | (array_expr (COMMA array_expr)*))? CLOSE_BRACKET ; extract_arg @@ -4008,65 +2625,20 @@ unicode_normal_form | KW_NFKD ; -overlay_list - : a_expr KW_PLACING a_expr KW_FROM a_expr (KW_FOR a_expr)? - ; - -position_list - : b_expr KW_IN b_expr - ; - substr_list - : a_expr KW_FROM a_expr KW_FOR a_expr - | a_expr KW_FOR a_expr KW_FROM a_expr - | a_expr KW_FROM a_expr - | a_expr KW_FOR a_expr - | a_expr KW_SIMILAR a_expr KW_ESCAPE a_expr + : expression KW_FROM expression (KW_FOR expression)? + | expression KW_FOR expression (KW_FROM expression)? + | expression KW_SIMILAR expression KW_ESCAPE expression | expr_list ; -trim_list - : a_expr KW_FROM expr_list - | KW_FROM expr_list - | expr_list - ; - -in_expr - : select_with_parens # in_expr_select - | OPEN_PAREN expr_list CLOSE_PAREN # in_expr_list - ; - -case_expr - : KW_CASE case_arg? when_clause_list case_default? KW_END - ; - -when_clause_list - : when_clause+ - ; - -when_clause - : KW_WHEN a_expr KW_THEN a_expr - ; - -case_default - : KW_ELSE a_expr - ; - -case_arg - : a_expr - ; - -columnref - : colid indirection? +when_clause + : KW_WHEN expression KW_THEN expression ; indirection_el - : DOT (attr_name | STAR) - | OPEN_BRACKET (a_expr | opt_slice_bound? COLON opt_slice_bound?) CLOSE_BRACKET - ; - -opt_slice_bound - : a_expr + : DOT (collabel | STAR) + | OPEN_BRACKET (expression | expression? COLON expression?) CLOSE_BRACKET ; indirection @@ -4077,10 +2649,6 @@ opt_indirection : indirection_el* ; -opt_target_list - : target_list - ; - target_list : target_el (COMMA target_el)* ; @@ -4106,32 +2674,28 @@ database_nameList : database_name (COMMA database_name)* ; -procedure_name_list - : procedure_name (COMMA procedure_name)* - ; - tablespace_name_create - : colid indirection? # tablespaceNameCreate + : qualified_name # tablespaceNameCreate ; tablespace_name - : colid indirection? # tablespaceName + : qualified_name # tablespaceName ; table_name_create - : colid indirection? # tableNameCreate + : qualified_name # tableNameCreate ; table_name - : colid indirection? # tableName + : qualified_name # tableName ; view_name_create - : colid indirection? # viewNameCreate + : qualified_name # viewNameCreate ; view_name - : colid attrs? # viewName + : any_name # viewName ; qualified_name @@ -4143,19 +2707,19 @@ tablespace_name_list ; name_list - : name (COMMA name)* + : colid (COMMA colid)* ; database_name_create - : colid attrs? # databaseNameCreate + : any_name # databaseNameCreate ; database_name - : colid attrs? # databaseName + : any_name # databaseName ; schema_name - : colid attrs? # schemaName + : any_name # schemaName ; routine_name_create @@ -4177,7 +2741,7 @@ procedure_name_create ; column_name - : colid indirection_el* # columnName + : colid opt_indirection # columnName | {this.shouldMatchEmpty()}? # columnNameMatch ; @@ -4185,18 +2749,6 @@ column_name_create : colid # columnNameCreate ; -name - : colid - ; - -attr_name - : collabel - ; - -file_name - : sconst - ; - function_name_create : type_function_name # functionNameCreate | colid indirection # functionNameCreate @@ -4207,43 +2759,8 @@ function_name | colid indirection # functionName ; -usual_name - : type_usual_name - | colid indirection - ; - -aexprconst - : iconst - | fconst - | sconst - | bconst - | xconst - | function_name (sconst | OPEN_PAREN func_arg_list opt_sort_clause? CLOSE_PAREN sconst) - | consttypename sconst - | constinterval ( sconst opt_interval? | OPEN_PAREN iconst CLOSE_PAREN sconst) - | KW_TRUE - | KW_FALSE - | KW_NULL - ; - -xconst - : HexadecimalStringConstant - ; - -bconst - : BinaryStringConstant - ; - -fconst - : Numeric - ; - -iconst - : Integral - ; - sconst - : anysconst opt_uescape? + : anysconst (KW_UESCAPE anysconst)? ; anysconst @@ -4253,22 +2770,8 @@ anysconst | EscapeStringConstant ; -opt_uescape - : KW_UESCAPE anysconst - ; - signediconst - : iconst - | PLUS iconst - | MINUS iconst - ; - -groupname - : rolespec - ; - -roleid - : rolespec + : (PLUS | MINUS)? Integral ; rolespec @@ -4290,19 +2793,6 @@ colid | plsql_unreserved_keyword ; -index_method_choices - : identifier - ; - -exclude_element - : opt_definition - | (OPEN_PAREN a_expr CLOSE_PAREN) identifier opt_asc_desc? opt_nulls_order? - ; - -index_paramenters - : (KW_WITH reloptions)? optconstablespace? - ; - type_function_name : identifier | unreserved_keyword @@ -4310,18 +2800,6 @@ type_function_name | type_func_name_keyword ; -type_usual_name - : identifier - | unreserved_keyword - | plsql_unreserved_keyword - | type_func_name_keyword - ; - -nonreservedword_column - : column_name - | type_func_name_keyword - ; - nonreservedword : identifier | unreserved_keyword @@ -4330,28 +2808,21 @@ nonreservedword ; collabel - : identifier + : nonreservedword | plsql_unreserved_keyword - | unreserved_keyword - | col_name_keyword - | type_func_name_keyword | reserved_keyword ; identifier - : Identifier opt_uescape? + : Identifier (KW_UESCAPE anysconst)? | sconst | QuotedIdentifier | UnicodeQuotedIdentifier - | plsqlvariablename - | plsqlidentifier + | PLSQLVARIABLENAME + | PLSQLIDENTIFIER | plsql_unreserved_keyword ; -plsqlidentifier - : PLSQLIDENTIFIER - ; - unreserved_keyword : KW_ABORT | KW_ABSOLUTE @@ -4821,144 +3292,30 @@ reserved_keyword | KW_WITH ; -/************************************************************************************************************************************************************/ -/*PL/SQL GRAMMAR */ - -/*PLSQL grammar */ - -/************************************************************************************************************************************************************/ -pl_function - : comp_options pl_block opt_semi - ; - -comp_options - : comp_option* - ; - -comp_option - : sharp KW_OPTION KW_DUMP - | sharp KW_PRINT_STRICT_PARAMS option_value - | sharp KW_VARIABLE_CONFLICT KW_ERROR - | sharp KW_VARIABLE_CONFLICT KW_USE_VARIABLE - | sharp KW_VARIABLE_CONFLICT KW_USE_COLUMN - ; - -sharp - : Operator - ; - -option_value - : sconst - | reserved_keyword - | plsql_unreserved_keyword - | unreserved_keyword - ; - -opt_semi - : - | SEMI - ; - // exception_sect means opt_exception_sect in original grammar, don't be confused! pl_block - : decl_sect KW_BEGIN proc_sect exception_sect KW_END opt_label - ; - -decl_sect - : opt_block_label (decl_start decl_stmts?)? - ; - -decl_start - : KW_DECLARE - ; - -decl_stmts - : decl_stmt+ + : (label_decl? (KW_DECLARE ((decl_statement | KW_DECLARE | label_decl)+)?)?) KW_BEGIN proc_stmt* exception_sect? KW_END any_identifier? ; label_decl : LESS_LESS any_identifier GREATER_GREATER ; -decl_stmt - : decl_statement - | KW_DECLARE - | label_decl - ; - decl_statement - : decl_varname ( - KW_ALIAS KW_FOR decl_aliasitem - | decl_const decl_datatype decl_collate decl_notnull decl_defval - | opt_scrollable KW_CURSOR decl_cursor_args decl_is_for decl_cursor_query + : any_identifier ( + KW_ALIAS KW_FOR (PARAM | colid) + | KW_CONSTANT? typename (opt_collate_clause)? (KW_NOT KW_NULL)? ( + ( assign_operator | KW_DEFAULT) sql_expression + )? + | (KW_NO? KW_SCROLL)? KW_CURSOR ( + OPEN_PAREN decl_cursor_arg (COMMA decl_cursor_arg)* CLOSE_PAREN + )? (KW_IS | KW_FOR) selectstmt ) SEMI ; -opt_scrollable - : - | KW_NO KW_SCROLL - | KW_SCROLL - ; - -decl_cursor_query - : selectstmt - ; - -decl_cursor_args - : - | OPEN_PAREN decl_cursor_arglist CLOSE_PAREN - ; - -decl_cursor_arglist - : decl_cursor_arg (COMMA decl_cursor_arg)* - ; - decl_cursor_arg - : decl_varname decl_datatype - ; - -decl_is_for - : KW_IS - | KW_FOR - ; - -decl_aliasitem - : PARAM - | colid - ; - -decl_varname - : any_identifier - ; - -decl_const - : - | KW_CONSTANT - ; - -decl_datatype - : typename - ; //TODO: $$ = read_datatype(yychar); - -decl_collate - : - | KW_COLLATE any_name - ; - -decl_notnull - : - | KW_NOT KW_NULL - ; - -decl_defval - : - | decl_defkey sql_expression - ; - -decl_defkey - : assign_operator - | KW_DEFAULT + : any_identifier typename ; assign_operator @@ -4966,10 +3323,6 @@ assign_operator | COLON_EQUALS ; -proc_sect - : proc_stmt* - ; - proc_stmt : pl_block SEMI | stmt_return @@ -4977,9 +3330,7 @@ proc_stmt | stmt_assign | stmt_if | stmt_case - | stmt_loop - | stmt_while - | stmt_for + | stmt_loop_while_for | stmt_foreach_a | stmt_exit | stmt_assert @@ -4993,23 +3344,17 @@ proc_stmt | stmt_move | stmt_close | stmt_null - | stmt_commit - | stmt_rollback + | stmt_commit_or_rollback | stmt_set ; stmt_perform - : KW_PERFORM expr_until_semi SEMI + : KW_PERFORM sql_expression SEMI ; stmt_call - : KW_CALL any_identifier (OPEN_PAREN opt_expr_list CLOSE_PAREN SEMI)? - | KW_DO any_identifier OPEN_PAREN opt_expr_list CLOSE_PAREN SEMI - ; - -opt_expr_list - : - | expr_list + : KW_CALL any_identifier (OPEN_PAREN expr_list? CLOSE_PAREN SEMI)? + | KW_DO any_identifier OPEN_PAREN expr_list? CLOSE_PAREN SEMI ; stmt_assign @@ -5017,134 +3362,53 @@ stmt_assign ; stmt_getdiag - : KW_GET getdiag_area_opt KW_DIAGNOSTICS getdiag_list SEMI - ; - -getdiag_area_opt - : - | KW_CURRENT - | KW_STACKED - ; - -getdiag_list - : getdiag_list_item (COMMA getdiag_list_item)* + : KW_GET (KW_CURRENT | KW_STACKED)? KW_DIAGNOSTICS ( + getdiag_list_item (COMMA getdiag_list_item)* + ) SEMI ; getdiag_list_item - : getdiag_target assign_operator getdiag_item - ; - -getdiag_item - : colid - ; - -getdiag_target - : assign_var + : assign_var assign_operator colid ; assign_var - : (any_name | PARAM) (OPEN_BRACKET expr_until_rightbracket CLOSE_BRACKET)* + : (any_name | PARAM) (OPEN_BRACKET expression CLOSE_BRACKET)* ; stmt_if - : KW_IF expr_until_then KW_THEN proc_sect stmt_elsifs stmt_else KW_END KW_IF SEMI - ; - -stmt_elsifs - : (KW_ELSIF a_expr KW_THEN proc_sect)* + : KW_IF sql_expression KW_THEN proc_stmt* ((KW_ELSIF expression KW_THEN proc_stmt*)*) stmt_else? KW_END KW_IF SEMI ; stmt_else - : - | KW_ELSE proc_sect + : KW_ELSE proc_stmt* ; stmt_case - : KW_CASE opt_expr_until_when case_when_list opt_case_else KW_END KW_CASE SEMI - ; - -opt_expr_until_when - : - | sql_expression + : KW_CASE sql_expression? (KW_WHEN expr_list KW_THEN proc_stmt*)+ stmt_else? KW_END KW_CASE SEMI ; -case_when_list - : case_when+ - ; - -case_when - : KW_WHEN expr_list KW_THEN proc_sect - ; - -opt_case_else - : - | KW_ELSE proc_sect - ; - -stmt_loop - : opt_loop_label loop_body - ; - -stmt_while - : opt_loop_label KW_WHILE expr_until_loop loop_body - ; - -stmt_for - : opt_loop_label KW_FOR for_control loop_body +stmt_loop_while_for + : label_decl? ((KW_WHILE expression) | (KW_FOR for_control))? loop_body ; //TODO: rewrite using read_sql_expression logic? for_control - : for_variable KW_IN ( - cursor_name opt_cursor_parameters + : any_name_list KW_IN ( + colid execute_param_clause? | selectstmt | explainstmt - | KW_EXECUTE a_expr opt_for_using_expression - | opt_reverse a_expr DOT_DOT a_expr opt_by_expression + | KW_EXECUTE expression (KW_USING expr_list)? + | KW_REVERSE? expression DOT_DOT expression (KW_BY expression)? ) ; -opt_for_using_expression - : - | KW_USING expr_list - ; - -opt_cursor_parameters - : - | OPEN_PAREN a_expr (COMMA a_expr)* CLOSE_PAREN - ; - -opt_reverse - : - | KW_REVERSE - ; - -opt_by_expression - : - | KW_BY a_expr - ; - -for_variable - : any_name_list - ; - stmt_foreach_a - : opt_loop_label KW_FOREACH for_variable foreach_slice KW_IN KW_ARRAY a_expr loop_body - ; - -foreach_slice - : - | KW_SLICE iconst + : label_decl? KW_FOREACH any_name_list (KW_SLICE Integral)? KW_IN KW_ARRAY expression loop_body ; stmt_exit - : exit_type opt_label opt_exitcond? SEMI - ; - -exit_type - : KW_EXIT - | KW_CONTINUE + : (KW_EXIT | KW_CONTINUE) any_identifier? (KW_WHEN sql_expression)? SEMI ; //todo implement RETURN statement according to initial grammar line 1754 @@ -5152,16 +3416,11 @@ exit_type stmt_return : KW_RETURN ( KW_NEXT sql_expression - | KW_QUERY ( KW_EXECUTE a_expr opt_for_using_expression | selectstmt) - | opt_return_result + | KW_QUERY ( KW_EXECUTE expression KW_USING expr_list | selectstmt) + | sql_expression? ) SEMI ; -opt_return_result - : - | sql_expression - ; - //https://www.postgresql.org/docs/current/plpgsql-errors-and-messages.html //RAISE [ level ] 'format' [, expression [, ... ]] [ USING option = expression [, ... ] ]; @@ -5175,53 +3434,25 @@ opt_return_result //RAISE ; stmt_raise - : KW_RAISE opt_stmt_raise_level? sconst opt_raise_list opt_raise_using SEMI - | KW_RAISE opt_stmt_raise_level? identifier opt_raise_using SEMI - | KW_RAISE opt_stmt_raise_level? KW_SQLSTATE sconst opt_raise_using SEMI - | KW_RAISE opt_stmt_raise_level? opt_raise_using SEMI - | KW_RAISE - ; - -opt_stmt_raise_level - : KW_DEBUG - | KW_LOG - | KW_INFO - | KW_NOTICE - | KW_WARNING - | KW_EXCEPTION - ; - -opt_raise_list - : - | (COMMA a_expr)+ - ; - -opt_raise_using - : - | KW_USING opt_raise_using_elem_list + : KW_RAISE ( + (KW_DEBUG | KW_LOG | KW_INFO | KW_NOTICE | KW_WARNING | KW_EXCEPTION)? ( + identifier + | (KW_SQLSTATE sconst) + | (sconst ((COMMA expression)+)?) + )? (KW_USING (opt_raise_using_elem (COMMA opt_raise_using_elem)*))? SEMI + )? ; opt_raise_using_elem - : identifier EQUAL a_expr - ; - -opt_raise_using_elem_list - : opt_raise_using_elem (COMMA opt_raise_using_elem)* + : identifier EQUAL expression ; -//todo imnplement - stmt_assert - : KW_ASSERT sql_expression opt_stmt_assert_message SEMI - ; - -opt_stmt_assert_message - : - | COMMA sql_expression + : KW_ASSERT sql_expression (COMMA sql_expression)? SEMI ; loop_body - : KW_LOOP proc_sect KW_END KW_LOOP opt_label SEMI + : KW_LOOP proc_stmt* KW_END KW_LOOP any_identifier? SEMI ; //TODO: looks like all other statements like INSERT/SELECT/UPDATE/DELETE are handled here; @@ -5229,10 +3460,7 @@ loop_body //pls take a look at original grammar stmt_execsql - : make_execsql_stmt SEMI - /*K_IMPORT - | K_INSERT | t_word | t_cword - */ + : stmt opt_execute_into? SEMI ; //https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT @@ -5240,25 +3468,17 @@ stmt_execsql //EXECUTE command-string [ INTO [STRICT] target ] [ USING expression [, ... ] ]; stmt_dynexecute - : KW_EXECUTE a_expr ( - /*this is silly, but i have to time to find nice way to code */ opt_execute_into opt_execute_using - | opt_execute_using opt_execute_into - | + : KW_EXECUTE expression ( + /*this is silly, but i have to time to find nice way to code */ opt_execute_into? ( + KW_USING expr_list + )? + | (KW_USING expr_list)? opt_execute_into? + | //TODO ) SEMI ; -opt_execute_using - : - | KW_USING opt_execute_using_list - ; - -opt_execute_using_list - : a_expr (COMMA a_expr)* - ; - opt_execute_into - : - | KW_INTO KW_STRICT? into_target + : KW_INTO KW_STRICT? expr_list ; //https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING @@ -5273,36 +3493,18 @@ opt_execute_into stmt_open : KW_OPEN ( - cursor_variable opt_scroll_option KW_FOR ( + cursor_variable (KW_NO? KW_SCROLL)? KW_FOR ( selectstmt - | KW_EXECUTE sql_expression opt_open_using + | KW_EXECUTE sql_expression (KW_USING expr_list)? ) - | colid (OPEN_PAREN opt_open_bound_list CLOSE_PAREN)? + | colid ( + OPEN_PAREN (opt_open_bound_list_item (COMMA opt_open_bound_list_item)*) CLOSE_PAREN + )? ) SEMI ; opt_open_bound_list_item - : colid COLON_EQUALS a_expr - | a_expr - ; - -opt_open_bound_list - : opt_open_bound_list_item (COMMA opt_open_bound_list_item)* - ; - -opt_open_using - : - | KW_USING expr_list - ; - -opt_scroll_option - : - | opt_scroll_option_no KW_SCROLL - ; - -opt_scroll_option_no - : - | KW_NO + : (colid COLON_EQUALS)? expression ; //https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING @@ -5310,17 +3512,7 @@ opt_scroll_option_no //FETCH [ direction { KW_FROM | IN } ] cursor INTO target; stmt_fetch - : KW_FETCH direction= opt_fetch_direction? opt_cursor_from cursor_variable KW_INTO into_target SEMI - ; - -into_target - : expr_list - ; - -opt_cursor_from - : - | KW_FROM - | KW_IN + : KW_FETCH direction= opt_fetch_direction? from_in? cursor_variable KW_INTO expr_list SEMI ; opt_fetch_direction @@ -5328,11 +3520,9 @@ opt_fetch_direction | KW_PRIOR | KW_FIRST | KW_LAST - | KW_ABSOLUTE a_expr - | KW_RELATIVE a_expr - | a_expr + | (KW_ABSOLUTE | KW_RELATIVE)? expression | KW_ALL - | (KW_FORWARD | KW_BACKWARD) (a_expr | KW_ALL)? + | (KW_FORWARD | KW_BACKWARD) (expression | KW_ALL)? ; //https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING @@ -5344,44 +3534,34 @@ stmt_move ; mergestmt - : with_clause? KW_MERGE KW_INTO (KW_ONLY)? table_name (STAR)? (KW_AS? colid)? KW_USING data_source KW_ON join_condition merge_when_clause+ + : with_clause? KW_MERGE KW_INTO (KW_ONLY)? table_name (STAR)? (KW_AS? colid)? KW_USING data_source KW_ON expression merge_when_clause+ ; data_source : ((KW_ONLY)? table_name (STAR)? | ( select_no_parens | values_clause)) (KW_AS? colid)? ; -join_condition - : a_expr - ; - merge_when_clause - : KW_WHEN KW_MATCHED (KW_AND a_expr)? KW_THEN (merge_update | KW_DELETE | KW_DO KW_NOTHING) - | KW_WHEN KW_NOT KW_MATCHED (KW_AND a_expr)? KW_THEN (merge_insert | KW_DO KW_NOTHING) + : KW_WHEN KW_MATCHED (KW_AND expression)? KW_THEN (merge_update | KW_DELETE | KW_DO KW_NOTHING) + | KW_WHEN KW_NOT KW_MATCHED (KW_AND expression)? KW_THEN (merge_insert | KW_DO KW_NOTHING) ; merge_insert - : KW_INSERT (OPEN_PAREN column_list CLOSE_PAREN)? ( - KW_OVERRIDING (KW_SYSTEM | KW_USER) KW_VALUE - )? default_values_or_values + : KW_INSERT (opt_column_list)? (KW_OVERRIDING (KW_SYSTEM | KW_USER) KW_VALUE)? default_values_or_values ; merge_update : KW_UPDATE KW_SET ( column_name EQUAL exprofdefault - | OPEN_PAREN column_list CLOSE_PAREN EQUAL OPEN_PAREN exprofdefaultlist CLOSE_PAREN + | opt_column_list EQUAL OPEN_PAREN exprofdefault (COMMA exprofdefault)* CLOSE_PAREN )+ ; default_values_or_values - : KW_VALUES exprofdefaultlist + : KW_VALUES OPEN_PAREN exprofdefault (COMMA exprofdefault)* CLOSE_PAREN | KW_DEFAULT KW_VALUES ; -exprofdefaultlist - : OPEN_PAREN exprofdefault (COMMA exprofdefault)* CLOSE_PAREN - ; - exprofdefault : sortby | KW_DEFAULT @@ -5395,16 +3575,8 @@ stmt_null : KW_NULL SEMI ; -stmt_commit - : KW_COMMIT plsql_opt_transaction_chain? SEMI - ; - -stmt_rollback - : KW_ROLLBACK plsql_opt_transaction_chain? SEMI - ; - -plsql_opt_transaction_chain - : KW_AND KW_NO? KW_CHAIN +stmt_commit_or_rollback + : (KW_COMMIT | KW_ROLLBACK) (KW_AND KW_NO? KW_CHAIN)? SEMI ; stmt_set @@ -5418,20 +3590,7 @@ cursor_variable ; exception_sect - : - | KW_EXCEPTION proc_exceptions - ; - -proc_exceptions - : proc_exception+ - ; - -proc_exception - : KW_WHEN proc_conditions KW_THEN proc_sect - ; - -proc_conditions - : proc_condition (KW_OR proc_condition)* + : KW_EXCEPTION (KW_WHEN (proc_condition (KW_OR proc_condition)*) KW_THEN proc_stmt*)+ ; proc_condition @@ -5439,37 +3598,6 @@ proc_condition | KW_SQLSTATE sconst ; -//expr_until_semi: - -//; - -//expr_until_rightbracket: - -//; - -//expr_until_loop: - -//; - -opt_block_label - : - | label_decl - ; - -opt_loop_label - : - | label_decl - ; - -opt_label - : - | any_identifier - ; - -opt_exitcond - : KW_WHEN expr_until_semi - ; - any_identifier : colid | plsql_unreserved_keyword @@ -5486,23 +3614,18 @@ plsql_unreserved_keyword | KW_CHAIN | KW_CLOSE | KW_COLLATE - //| COLUMN_NAME | KW_COMMIT | KW_CONSTANT | KW_CONSTRAINT - //| CONSTRAINT_NAME | KW_CONTINUE | KW_CURRENT | KW_CURSOR - //| DATATYPE | KW_DEBUG | KW_DEFAULT - //| DETAIL | KW_DIAGNOSTICS | KW_DO | KW_DUMP | KW_ELSIF - //| ERRCODE | KW_ERROR | KW_EXCEPTION | KW_EXIT @@ -5510,17 +3633,11 @@ plsql_unreserved_keyword | KW_FIRST | KW_FORWARD | KW_GET - //| HINT - - //| IMPORT | KW_INFO | KW_INSERT | KW_IS | KW_LAST | KW_LOG - //| MESSAGE - - //| MESSAGE_TEXT | KW_MOVE | KW_NEXT | KW_NO @@ -5528,15 +3645,6 @@ plsql_unreserved_keyword | KW_OPEN | KW_OPTION | KW_PERFORM - //| PG_CONTEXT - - //| PG_DATATYPE_NAME - - //| PG_EXCEPTION_CONTEXT - - //| PG_EXCEPTION_DETAIL - - //| PG_EXCEPTION_HINT | KW_PRINT_STRICT_PARAMS | KW_PRIOR | KW_QUERY @@ -5544,19 +3652,15 @@ plsql_unreserved_keyword | KW_RELATIVE | KW_RESET | KW_RETURN - //| RETURNED_SQLSTATE | KW_REVERSE | KW_ROLLBACK - //| ROW_COUNT | KW_ROWTYPE | KW_SCHEMA - //| SCHEMA_NAME | KW_SCROLL | KW_SET | KW_SLICE | KW_SQLSTATE | KW_STACKED - //| TABLE_NAME | KW_TYPE | KW_USE_COLUMN | KW_USE_VARIABLE @@ -5566,29 +3670,5 @@ plsql_unreserved_keyword ; sql_expression - : opt_target_list? into_clause? from_clause? where_clause? group_clause? having_clause? window_clause? - ; - -expr_until_then - : sql_expression - ; - -expr_until_semi - : sql_expression - ; - -expr_until_rightbracket - : a_expr - ; - -expr_until_loop - : a_expr - ; - -make_execsql_stmt - : stmt opt_returning_clause_into? - ; - -opt_returning_clause_into - : KW_INTO opt_strict into_target + : target_list? into_clause? from_clause? where_clause? group_clause? (KW_HAVING expression)? window_clause? ; \ No newline at end of file diff --git a/src/lib/postgresql/PostgreSqlParser.interp b/src/lib/postgresql/PostgreSqlParser.interp index 24dde746..68bf4dae 100644 --- a/src/lib/postgresql/PostgreSqlParser.interp +++ b/src/lib/postgresql/PostgreSqlParser.interp @@ -1186,31 +1186,22 @@ AfterEscapeStringConstantWithNewlineMode_Continued rule names: program -plsqlroot singleStmt stmt -plsqlconsolecommand callstmt createrolestmt -opt_with -optrolelist -alteroptrolelist alteroptroleelem createoptroleelem createuserstmt alterrolestmt -opt_in_database alterrolesetstmt alterroutinestmt alter_routine_cluase -routine_action_list routine_action creategroupstmt altergroupstmt -add_drop createschemastmt schema_name_create -optschemaeltlist schema_stmt variablesetstmt set_rest @@ -1223,18 +1214,13 @@ iso_level opt_boolean_or_string_column opt_boolean_or_string zone_value -opt_encoding -nonreservedword_or_sconst_column nonreservedword_or_sconst variableresetstmt reset_rest -generic_reset setresetclause functionsetresetclause variableshowstmt constraintssetstmt -constraints_set_list -constraints_set_mode checkpointstmt discardstmt altertablestmt @@ -1249,85 +1235,45 @@ alter_table_cmd alter_column_default opt_drop_behavior opt_collate_clause -alter_using -replica_identity reloptions opt_reloptions -reloption_list reloption_elem -alter_identity_column_option_list -alter_identity_column_option partitionboundspec -hash_partbound_elem -hash_partbound altercompositetypestmt -alter_type_cmds alter_type_cmd closeportalstmt copystmt -copy_from -opt_program -copy_file_name copy_options -copy_opt_list -copy_opt_item -opt_binary -copy_delimiter -opt_using -copy_generic_opt_list copy_generic_opt_elem -copy_generic_opt_arg -copy_generic_opt_arg_list -copy_generic_opt_arg_list_item createstmt opttemp -table_column_list -opttableelementlist opttypedtableelementlist tableelementlist -typedtableelementlist tableelement typedtableelement column_def -compressionCluase -storageCluase -columnOptions -colquallist colconstraint colconstraintelem -nulls_distinct generated_when -deferrable_trigger -initially_trigger -tablelikeclause -tablelikeoptionlist tablelikeoption -tableconstraint constraintelem -opt_no_inherit opt_column_list opt_column_list_create column_list -column_list_create opt_c_include key_match -exclusionconstraintlist exclusionconstraintelem -exclusionwhereclause key_actions key_update key_delete key_action optinherit -optpartitionspec partitionspec -part_params part_elem table_access_method_clause optwith oncommitoption opttablespace -index_paramenters_create optconstablespace existingindex createstatsstmt @@ -1336,184 +1282,92 @@ createasstmt create_as_target opt_with_data creatematviewstmt -create_mv_target -optnolog refreshmatviewstmt createseqstmt alterseqstmt -optseqoptlist -optparenthesizedseqoptlist -seqoptlist seqoptelem -opt_by numericonly -numericonly_list createplangstmt -opt_trusted -handler_name -opt_inline_handler -validator_clause -opt_validator -opt_procedural createtablespacestmt -opttablespaceowner createextensionstmt -create_extension_opt_list -create_extension_opt_item alterextensionstmt -alter_extension_opt_list -alter_extension_opt_item alterextensioncontentsstmt createfdwstmt fdw_option -fdw_options -opt_fdw_options alterfdwstmt create_generic_options -generic_option_list alter_generic_options -alter_generic_option_list alter_generic_option_elem generic_option_elem -generic_option_name -generic_option_arg createforeignserverstmt -opt_type foreign_server_version -opt_foreign_server_version alterforeignserverstmt createforeigntablestmt importforeignschemastmt -import_qualification_type -import_qualification createusermappingstmt -auth_ident alterusermappingstmt createpolicystmt alterpolicystmt alterprocedurestmt -procedure_cluase procedure_action rowsecurityoptionalexpr rowsecurityoptionalwithcheck -rowsecuritydefaulttorole -rowsecurityoptionaltorole -rowsecuritydefaultpermissive -rowsecuritydefaultforcmd -row_security_cmd createamstmt -am_type createtrigstmt triggeractiontime -foreachrow -roworstatment triggerevents triggeroneevent -triggerreferencing -triggertransitions -triggertransition -transitionoldornew -transitionrowortable -transitionrelname -triggerforspec -triggerforopteach -triggerfortype triggerwhen function_or_procedure triggerfuncargs triggerfuncarg -optconstrfromtable -constraintattributespec constraintattributeElem createeventtrigstmt -event_trigger_when_list event_trigger_when_item -event_trigger_value_list altereventtrigstmt -enable_trigger createassertionstmt definestmt definition -def_list def_elem def_arg -old_aggr_definition -old_aggr_list old_aggr_elem -opt_enum_val_list -enum_val_list alterenumstmt opt_if_not_exists createopclassstmt -opclass_item_list opclass_item -opt_default -opt_opfamily -opclass_purpose -opt_recheck createopfamilystmt alteropfamilystmt -opclass_drop_list opclass_drop reassignownedstmt dropstmt -view_nameList object_type_any_name object_type_name -object_type_name_on_any_name any_name_list -relation_column_name -relation_name any_name attrs -type_name_list truncatestmt truncate_table commentstmt -comment_text seclabelstmt -opt_provider -security_label fetchstmt fetch_args from_in -opt_from_in grantstmt revokestmt privileges -beforeprivilegeselectlist beforeprivilegeselect -privilege_list privilege privilege_target grantee_list -grantee -opt_grant_grant_option grantrolestmt revokerolestmt -opt_grant_admin_option -opt_granted_by alterdefaultprivilegesstmt -defacloptionlist -defacloption defaclaction defacl_privilege_target indexstmt -opt_unique -opt_concurrently -opt_index_name -access_method_clause index_params -index_elem_options index_elem -opt_include -index_including_params -opt_collate -opt_class -opt_asc_desc -opt_nulls_order createfunctionstmt -attrilist opt_or_replace func_args func_args_list @@ -1523,77 +1377,44 @@ procedure_with_argtypes_list procedure_with_argtypes function_with_argtypes_list function_with_argtypes -func_args_with_defaults -func_args_with_defaults_list func_arg arg_class -param_name -func_return func_type func_arg_with_default -aggr_arg aggr_args -aggr_args_list aggregate_with_argtypes -aggregate_with_argtypes_list -createfunc_opt_list common_func_opt_item createfunc_opt_item -transform_type_list opt_definition table_func_column -table_func_column_list alterfunctionstmt -alterFunctionTypeClause -alterfunc_opt_list -opt_restrict removefuncstmt removeaggrstmt removeoperstmt oper_argtypes any_operator -operator_with_argtypes_list operator_with_argtypes dostmt -dostmt_opt_list -dostmt_opt_item createcaststmt -cast_context opt_if_exists createtransformstmt -transform_element_list +sql_with_function reindexstmt -reindex_target_type -reindex_target_multitable -reindex_option_list -reindex_option_elem altertblspcstmt renamestmt -opt_set_data alterobjectdependsstmt -opt_no alterobjectschemastmt alteroperatorstmt operator_def_list operator_def_elem -operator_def_arg altertypestmt alterownerstmt createpublicationstmt -opt_publication_for_tables -publication_for_tables alterpublicationstmt createsubscriptionstmt -publication_name_list -publication_name_item altersubscriptionstmt rulestmt -ruleactionlist -ruleactionmulti ruleactionstmt -ruleactionstmtOrEmpty -event -opt_instead notifystmt notify_payload listenstmt @@ -1602,58 +1423,31 @@ transactionstmt opt_transaction transaction_mode_item transaction_mode_list -transaction_mode_list_or_empty -opt_transaction_chain viewstmt -opt_check_option loadstmt createdbstmt -createdb_opt_list -createdb_opt_items createdb_opt_item -createdb_opt_name -opt_equal alterdatabasestmt alterdatabasesetstmt -drop_option_list -drop_option altercollationstmt altersystemstmt createdomainstmt alterdomainstmt -opt_as altertsdictionarystmt altertsconfigurationstmt -any_with createconversionstmt clusterstmt -opt_verbose_list -cluster_index_specification vacuumstmt analyzestmt -vac_analyze_option_list analyze_keyword vac_analyze_option_elem -vac_analyze_option_name -vac_analyze_option_arg -opt_analyze -analyze_options_list analyze_option_elem opt_verbose -opt_skiplock -opt_buffer_usage_limit -opt_full -opt_freeze -opt_name_list vacuum_relation vacuum_relation_list -opt_vacuum_relation_list explainstmt explainablestmt explain_option_list -explain_option_elem -explain_option_name -explain_option_arg preparestmt prep_type_clause preparablestmt @@ -1661,188 +1455,95 @@ executestmt execute_param_clause deallocatestmt insertstmt -insert_target insert_rest -override_kind insert_column_list insert_column_item -opt_on_conflict -opt_conf_expr returning_clause deletestmt -using_clause lockstmt -opt_lock -lock_type -opt_nowait -opt_nowait_or_skip updatestmt set_clause_list set_clause -set_target -set_target_list declarecursorstmt -cursor_name -cursor_options -opt_hold selectstmt select_with_parens select_no_parens select_clause simple_select -set_operator set_operator_with_all_or_distinct with_clause -cte_list common_table_expr search_cluase cycle_cluase -opt_materialized -opt_with_clause into_clause -opt_strict opttempTableName -opt_table -all_or_distinct distinct_clause -opt_all_clause -opt_sort_clause sort_clause -sortby_list sortby select_limit -opt_select_limit limit_clause fetch_clause offset_clause -select_limit_value -select_offset_value select_fetch_first_value -i_or_f_const -row_or_rows -first_or_next group_clause group_by_list group_by_item -empty_grouping_set -rollup_clause -cube_clause -grouping_sets_clause -having_clause for_locking_clause -opt_for_locking_clause -for_locking_items -for_locking_item -for_locking_strength -locked_rels_list values_clause from_clause from_list table_ref alias_clause -opt_alias_clause func_alias_clause join_type join_qual relation_expr -view_relation_expr publication_relation_expr relation_expr_list -publication_relation_expr_list relation_expr_opt_alias tablesample_clause -opt_repeatable_clause func_table rowsfrom_item -rowsfrom_list -opt_col_def_list -opt_ordinality where_clause where_or_current_clause -opttablefuncelementlist tablefuncelementlist tablefuncelement xmltable -xmltable_column_list xmltable_column_el -xmltable_column_option_list -xmltable_column_option_el -xml_namespace_list xml_namespace_el typename -opt_array_bounds simpletypename consttypename -generictype -opt_type_modifiers numeric opt_float bit -constbit -bitwithlength -bitwithoutlength character -constcharacter -character_c -opt_varying constdatetime -constinterval -opt_timezone opt_interval interval_second -opt_escape -a_expr -a_expr_qual -a_expr_lessless -a_expr_or -a_expr_and -a_expr_in -a_expr_unary_not -a_expr_isnull -a_expr_is_not -a_expr_compare -a_expr_like -a_expr_qual_op -a_expr_unary_qualop -a_expr_add -a_expr_mul -a_expr_caret -a_expr_unary_sign -a_expr_at_time_zone -a_expr_collate -a_expr_typecast -b_expr -c_expr -plsqlvariablename +comparisonOperator +expression +booleanExpression +predicate +valueExpression +primaryExpression func_application func_expr func_expr_windowless func_expr_common_subexpr -xml_root_version -opt_xml_root_standalone -xml_attributes xml_attribute_list xml_attribute_el document_or_content -xml_whitespace_option xmlexists_argument xml_passing_mech -within_group_clause -filter_clause window_clause -window_definition_list window_definition over_clause window_specification -opt_existing_window_name -opt_partition_clause opt_frame_clause -frame_extent frame_bound -opt_window_exclusion_clause row explicit_row -implicit_row sub_type all_op mathop @@ -1850,41 +1551,24 @@ qual_op qual_all_op subquery_Op expr_list -column_expr_list_noparen -column_expr_list column_expr column_expr_noparen func_arg_list func_arg_expr -type_list array_expr -array_expr_list -extract_list extract_arg unicode_normal_form -overlay_list -position_list substr_list -trim_list -in_expr -case_expr -when_clause_list when_clause -case_default -case_arg -columnref indirection_el -opt_slice_bound indirection opt_indirection -opt_target_list target_list target_el qualified_name_list table_name_list schema_name_list database_nameList -procedure_name_list tablespace_name_create tablespace_name table_name_create @@ -1903,164 +1587,72 @@ procedure_name procedure_name_create column_name column_name_create -name -attr_name -file_name function_name_create function_name -usual_name -aexprconst -xconst -bconst -fconst -iconst sconst anysconst -opt_uescape signediconst -groupname -roleid rolespec role_list colid -index_method_choices -exclude_element -index_paramenters type_function_name -type_usual_name -nonreservedword_column nonreservedword collabel identifier -plsqlidentifier unreserved_keyword col_name_keyword type_func_name_keyword reserved_keyword -pl_function -comp_options -comp_option -sharp -option_value -opt_semi pl_block -decl_sect -decl_start -decl_stmts label_decl -decl_stmt decl_statement -opt_scrollable -decl_cursor_query -decl_cursor_args -decl_cursor_arglist decl_cursor_arg -decl_is_for -decl_aliasitem -decl_varname -decl_const -decl_datatype -decl_collate -decl_notnull -decl_defval -decl_defkey assign_operator -proc_sect proc_stmt stmt_perform stmt_call -opt_expr_list stmt_assign stmt_getdiag -getdiag_area_opt -getdiag_list getdiag_list_item -getdiag_item -getdiag_target assign_var stmt_if -stmt_elsifs stmt_else stmt_case -opt_expr_until_when -case_when_list -case_when -opt_case_else -stmt_loop -stmt_while -stmt_for +stmt_loop_while_for for_control -opt_for_using_expression -opt_cursor_parameters -opt_reverse -opt_by_expression -for_variable stmt_foreach_a -foreach_slice stmt_exit -exit_type stmt_return -opt_return_result stmt_raise -opt_stmt_raise_level -opt_raise_list -opt_raise_using opt_raise_using_elem -opt_raise_using_elem_list stmt_assert -opt_stmt_assert_message loop_body stmt_execsql stmt_dynexecute -opt_execute_using -opt_execute_using_list opt_execute_into stmt_open opt_open_bound_list_item -opt_open_bound_list -opt_open_using -opt_scroll_option -opt_scroll_option_no stmt_fetch -into_target -opt_cursor_from opt_fetch_direction stmt_move mergestmt data_source -join_condition merge_when_clause merge_insert merge_update default_values_or_values -exprofdefaultlist exprofdefault stmt_close stmt_null -stmt_commit -stmt_rollback -plsql_opt_transaction_chain +stmt_commit_or_rollback stmt_set cursor_variable exception_sect -proc_exceptions -proc_exception -proc_conditions proc_condition -opt_block_label -opt_loop_label -opt_label -opt_exitcond any_identifier plsql_unreserved_keyword sql_expression -expr_until_then -expr_until_semi -expr_until_rightbracket -expr_until_loop -make_execsql_stmt -opt_returning_clause_into atn: -[4, 1, 590, 11834, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 2, 695, 7, 695, 2, 696, 7, 696, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 2, 700, 7, 700, 2, 701, 7, 701, 2, 702, 7, 702, 2, 703, 7, 703, 2, 704, 7, 704, 2, 705, 7, 705, 2, 706, 7, 706, 2, 707, 7, 707, 2, 708, 7, 708, 2, 709, 7, 709, 2, 710, 7, 710, 2, 711, 7, 711, 2, 712, 7, 712, 2, 713, 7, 713, 2, 714, 7, 714, 2, 715, 7, 715, 2, 716, 7, 716, 2, 717, 7, 717, 2, 718, 7, 718, 2, 719, 7, 719, 2, 720, 7, 720, 2, 721, 7, 721, 2, 722, 7, 722, 2, 723, 7, 723, 2, 724, 7, 724, 2, 725, 7, 725, 2, 726, 7, 726, 2, 727, 7, 727, 2, 728, 7, 728, 2, 729, 7, 729, 2, 730, 7, 730, 2, 731, 7, 731, 2, 732, 7, 732, 2, 733, 7, 733, 2, 734, 7, 734, 2, 735, 7, 735, 2, 736, 7, 736, 2, 737, 7, 737, 2, 738, 7, 738, 2, 739, 7, 739, 2, 740, 7, 740, 2, 741, 7, 741, 2, 742, 7, 742, 2, 743, 7, 743, 2, 744, 7, 744, 2, 745, 7, 745, 2, 746, 7, 746, 2, 747, 7, 747, 2, 748, 7, 748, 2, 749, 7, 749, 2, 750, 7, 750, 2, 751, 7, 751, 2, 752, 7, 752, 2, 753, 7, 753, 2, 754, 7, 754, 2, 755, 7, 755, 2, 756, 7, 756, 2, 757, 7, 757, 2, 758, 7, 758, 2, 759, 7, 759, 2, 760, 7, 760, 2, 761, 7, 761, 2, 762, 7, 762, 2, 763, 7, 763, 2, 764, 7, 764, 2, 765, 7, 765, 2, 766, 7, 766, 2, 767, 7, 767, 2, 768, 7, 768, 2, 769, 7, 769, 2, 770, 7, 770, 2, 771, 7, 771, 2, 772, 7, 772, 2, 773, 7, 773, 2, 774, 7, 774, 2, 775, 7, 775, 2, 776, 7, 776, 2, 777, 7, 777, 2, 778, 7, 778, 2, 779, 7, 779, 2, 780, 7, 780, 2, 781, 7, 781, 2, 782, 7, 782, 2, 783, 7, 783, 2, 784, 7, 784, 2, 785, 7, 785, 2, 786, 7, 786, 2, 787, 7, 787, 2, 788, 7, 788, 2, 789, 7, 789, 2, 790, 7, 790, 2, 791, 7, 791, 2, 792, 7, 792, 2, 793, 7, 793, 2, 794, 7, 794, 2, 795, 7, 795, 2, 796, 7, 796, 2, 797, 7, 797, 2, 798, 7, 798, 2, 799, 7, 799, 2, 800, 7, 800, 2, 801, 7, 801, 2, 802, 7, 802, 2, 803, 7, 803, 2, 804, 7, 804, 2, 805, 7, 805, 2, 806, 7, 806, 2, 807, 7, 807, 2, 808, 7, 808, 2, 809, 7, 809, 2, 810, 7, 810, 2, 811, 7, 811, 2, 812, 7, 812, 2, 813, 7, 813, 2, 814, 7, 814, 2, 815, 7, 815, 2, 816, 7, 816, 2, 817, 7, 817, 2, 818, 7, 818, 2, 819, 7, 819, 2, 820, 7, 820, 2, 821, 7, 821, 2, 822, 7, 822, 2, 823, 7, 823, 2, 824, 7, 824, 2, 825, 7, 825, 2, 826, 7, 826, 2, 827, 7, 827, 2, 828, 7, 828, 2, 829, 7, 829, 2, 830, 7, 830, 2, 831, 7, 831, 2, 832, 7, 832, 2, 833, 7, 833, 2, 834, 7, 834, 2, 835, 7, 835, 2, 836, 7, 836, 2, 837, 7, 837, 2, 838, 7, 838, 2, 839, 7, 839, 2, 840, 7, 840, 2, 841, 7, 841, 2, 842, 7, 842, 2, 843, 7, 843, 2, 844, 7, 844, 2, 845, 7, 845, 2, 846, 7, 846, 2, 847, 7, 847, 2, 848, 7, 848, 2, 849, 7, 849, 2, 850, 7, 850, 2, 851, 7, 851, 2, 852, 7, 852, 2, 853, 7, 853, 2, 854, 7, 854, 2, 855, 7, 855, 2, 856, 7, 856, 2, 857, 7, 857, 2, 858, 7, 858, 2, 859, 7, 859, 2, 860, 7, 860, 2, 861, 7, 861, 2, 862, 7, 862, 2, 863, 7, 863, 2, 864, 7, 864, 2, 865, 7, 865, 2, 866, 7, 866, 2, 867, 7, 867, 2, 868, 7, 868, 2, 869, 7, 869, 2, 870, 7, 870, 2, 871, 7, 871, 2, 872, 7, 872, 2, 873, 7, 873, 2, 874, 7, 874, 1, 0, 5, 0, 1752, 8, 0, 10, 0, 12, 0, 1755, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 1763, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1882, 8, 3, 1, 4, 1, 4, 3, 4, 1886, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1895, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 5, 8, 1902, 8, 8, 10, 8, 12, 8, 1905, 9, 8, 1, 9, 5, 9, 1908, 8, 9, 10, 9, 12, 9, 1911, 9, 9, 1, 10, 1, 10, 1, 10, 3, 10, 1916, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1948, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1960, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1966, 8, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1974, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1982, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1988, 8, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1997, 8, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 2003, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 2015, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 2021, 8, 17, 1, 18, 1, 18, 5, 18, 2025, 8, 18, 10, 18, 12, 18, 2028, 9, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2034, 8, 19, 1, 19, 1, 19, 3, 19, 2038, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2043, 8, 19, 1, 19, 1, 19, 3, 19, 2047, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2060, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 2071, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 2077, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 3, 23, 2093, 8, 23, 1, 23, 3, 23, 2096, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 2101, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 2107, 8, 24, 1, 25, 5, 25, 2110, 8, 25, 10, 25, 12, 25, 2113, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 2121, 8, 26, 1, 27, 1, 27, 3, 27, 2125, 8, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 2137, 8, 28, 1, 29, 1, 29, 3, 29, 2141, 8, 29, 1, 29, 3, 29, 2144, 8, 29, 1, 29, 1, 29, 3, 29, 2148, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2159, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 2177, 8, 30, 1, 31, 1, 31, 1, 31, 5, 31, 2182, 8, 31, 10, 31, 12, 31, 2185, 9, 31, 1, 32, 1, 32, 1, 32, 5, 32, 2190, 8, 32, 10, 32, 12, 32, 2193, 9, 32, 1, 33, 1, 33, 3, 33, 2197, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2204, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 2210, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 2216, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2223, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 2234, 8, 37, 1, 38, 1, 38, 3, 38, 2238, 8, 38, 1, 39, 1, 39, 3, 39, 2242, 8, 39, 1, 40, 1, 40, 3, 40, 2246, 8, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 2259, 8, 42, 1, 43, 1, 43, 3, 43, 2263, 8, 43, 1, 44, 1, 44, 1, 44, 3, 44, 2268, 8, 44, 1, 45, 1, 45, 1, 45, 3, 45, 2273, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 2285, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 3, 48, 2294, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 2306, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2311, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2322, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2328, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2333, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2343, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2348, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2355, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2360, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2365, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2376, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2382, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2387, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2395, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2404, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2419, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2425, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2431, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2436, 8, 52, 1, 53, 1, 53, 1, 53, 5, 53, 2441, 8, 53, 10, 53, 12, 53, 2444, 9, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2455, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2461, 8, 55, 10, 55, 12, 55, 2464, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 2471, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2489, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 3, 60, 2498, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2512, 8, 60, 1, 60, 1, 60, 3, 60, 2516, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2531, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2539, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2549, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2589, 8, 60, 1, 60, 3, 60, 2592, 8, 60, 1, 60, 1, 60, 3, 60, 2596, 8, 60, 1, 60, 1, 60, 3, 60, 2600, 8, 60, 1, 60, 3, 60, 2603, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2608, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2615, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2624, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2630, 8, 60, 1, 60, 1, 60, 3, 60, 2634, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2643, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2651, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2660, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2669, 8, 60, 1, 60, 1, 60, 3, 60, 2673, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2680, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2686, 8, 60, 1, 60, 1, 60, 3, 60, 2690, 8, 60, 1, 60, 1, 60, 3, 60, 2694, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2699, 8, 60, 1, 60, 3, 60, 2702, 8, 60, 1, 60, 1, 60, 3, 60, 2706, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2712, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2719, 8, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 2735, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 5, 68, 2747, 8, 68, 10, 68, 12, 68, 2750, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2759, 8, 69, 3, 69, 2761, 8, 69, 1, 70, 4, 70, 2764, 8, 70, 11, 70, 12, 70, 2765, 1, 71, 1, 71, 3, 71, 2770, 8, 71, 1, 71, 3, 71, 2773, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2779, 8, 71, 3, 71, 2781, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2809, 8, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 2817, 8, 74, 10, 74, 12, 74, 2820, 9, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 5, 76, 2830, 8, 76, 10, 76, 12, 76, 2833, 9, 76, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2839, 8, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2844, 8, 77, 1, 77, 1, 77, 3, 77, 2848, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2854, 8, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2859, 8, 77, 1, 77, 3, 77, 2862, 8, 77, 3, 77, 2864, 8, 77, 1, 78, 1, 78, 1, 78, 3, 78, 2869, 8, 78, 1, 79, 1, 79, 3, 79, 2873, 8, 79, 1, 79, 1, 79, 3, 79, 2877, 8, 79, 1, 79, 1, 79, 3, 79, 2881, 8, 79, 1, 79, 1, 79, 3, 79, 2885, 8, 79, 1, 79, 3, 79, 2888, 8, 79, 1, 79, 1, 79, 3, 79, 2892, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 2900, 8, 79, 1, 79, 1, 79, 3, 79, 2904, 8, 79, 1, 79, 1, 79, 3, 79, 2908, 8, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 3, 82, 2917, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2924, 8, 83, 1, 84, 5, 84, 2927, 8, 84, 10, 84, 12, 84, 2930, 9, 84, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2936, 8, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2941, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2948, 8, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2953, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2971, 8, 85, 1, 86, 1, 86, 1, 87, 3, 87, 2976, 8, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 5, 89, 2986, 8, 89, 10, 89, 12, 89, 2989, 9, 89, 1, 90, 1, 90, 3, 90, 2993, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 3002, 8, 91, 1, 92, 1, 92, 1, 92, 5, 92, 3007, 8, 92, 10, 92, 12, 92, 3010, 9, 92, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 3016, 8, 94, 1, 94, 1, 94, 3, 94, 3020, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 3025, 8, 94, 1, 94, 1, 94, 3, 94, 3029, 8, 94, 1, 94, 3, 94, 3032, 8, 94, 1, 94, 3, 94, 3035, 8, 94, 1, 94, 3, 94, 3038, 8, 94, 1, 94, 3, 94, 3041, 8, 94, 1, 94, 3, 94, 3044, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 3049, 8, 94, 1, 94, 3, 94, 3052, 8, 94, 1, 94, 3, 94, 3055, 8, 94, 1, 94, 3, 94, 3058, 8, 94, 1, 94, 3, 94, 3061, 8, 94, 1, 94, 3, 94, 3064, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 3070, 8, 94, 1, 94, 1, 94, 3, 94, 3074, 8, 94, 1, 94, 3, 94, 3077, 8, 94, 1, 94, 3, 94, 3080, 8, 94, 1, 94, 3, 94, 3083, 8, 94, 1, 94, 3, 94, 3086, 8, 94, 3, 94, 3088, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 3097, 8, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 5, 99, 3110, 8, 99, 10, 99, 12, 99, 3113, 9, 99, 1, 100, 1, 100, 1, 100, 5, 100, 3118, 8, 100, 10, 100, 12, 100, 3121, 9, 100, 1, 101, 1, 101, 1, 101, 3, 101, 3126, 8, 101, 1, 102, 1, 102, 3, 102, 3130, 8, 102, 1, 103, 1, 103, 1, 103, 3, 103, 3135, 8, 103, 1, 103, 3, 103, 3138, 8, 103, 1, 103, 3, 103, 3141, 8, 103, 1, 103, 1, 103, 3, 103, 3145, 8, 103, 1, 103, 1, 103, 3, 103, 3149, 8, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 3163, 8, 105, 1, 106, 1, 106, 1, 106, 3, 106, 3168, 8, 106, 1, 106, 1, 106, 1, 107, 5, 107, 3173, 8, 107, 10, 107, 12, 107, 3176, 9, 107, 1, 108, 1, 108, 3, 108, 3180, 8, 108, 1, 108, 1, 108, 3, 108, 3184, 8, 108, 1, 108, 3, 108, 3187, 8, 108, 1, 108, 1, 108, 3, 108, 3191, 8, 108, 1, 108, 3, 108, 3194, 8, 108, 3, 108, 3196, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3203, 8, 109, 1, 109, 3, 109, 3206, 8, 109, 1, 109, 1, 109, 3, 109, 3210, 8, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3216, 8, 109, 1, 109, 3, 109, 3219, 8, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3226, 8, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3235, 8, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3242, 8, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3247, 8, 109, 1, 109, 3, 109, 3250, 8, 109, 1, 109, 3, 109, 3253, 8, 109, 1, 109, 3, 109, 3256, 8, 109, 1, 110, 1, 110, 3, 110, 3260, 8, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 3, 111, 3267, 8, 111, 1, 112, 1, 112, 1, 112, 3, 112, 3272, 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 5, 115, 3283, 8, 115, 10, 115, 12, 115, 3286, 9, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3295, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3308, 8, 118, 1, 118, 3, 118, 3311, 8, 118, 1, 118, 3, 118, 3314, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3321, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3329, 8, 118, 1, 118, 3, 118, 3332, 8, 118, 1, 118, 3, 118, 3335, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3342, 8, 118, 1, 118, 1, 118, 3, 118, 3346, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3352, 8, 118, 1, 118, 3, 118, 3355, 8, 118, 1, 118, 3, 118, 3358, 8, 118, 1, 118, 3, 118, 3361, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3373, 8, 118, 1, 118, 3, 118, 3376, 8, 118, 1, 118, 3, 118, 3379, 8, 118, 1, 118, 1, 118, 3, 118, 3383, 8, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 5, 122, 3399, 8, 122, 10, 122, 12, 122, 3402, 9, 122, 1, 123, 1, 123, 1, 123, 5, 123, 3407, 8, 123, 10, 123, 12, 123, 3410, 9, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 5, 126, 3423, 8, 126, 10, 126, 12, 126, 3426, 9, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 3436, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3451, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3468, 8, 132, 3, 132, 3470, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 5, 136, 3489, 8, 136, 10, 136, 12, 136, 3492, 9, 136, 1, 137, 1, 137, 3, 137, 3496, 8, 137, 1, 137, 3, 137, 3499, 8, 137, 1, 137, 1, 137, 3, 137, 3503, 8, 137, 1, 137, 3, 137, 3506, 8, 137, 1, 137, 1, 137, 1, 137, 1, 137, 3, 137, 3512, 8, 137, 1, 137, 3, 137, 3515, 8, 137, 3, 137, 3517, 8, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3528, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 3537, 8, 140, 1, 141, 1, 141, 1, 141, 1, 142, 3, 142, 3543, 8, 142, 1, 142, 3, 142, 3546, 8, 142, 1, 142, 3, 142, 3549, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 3, 145, 3563, 8, 145, 1, 145, 3, 145, 3566, 8, 145, 1, 145, 3, 145, 3569, 8, 145, 1, 145, 1, 145, 1, 145, 3, 145, 3574, 8, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 3, 146, 3582, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 3591, 8, 147, 1, 147, 1, 147, 3, 147, 3595, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3601, 8, 147, 1, 148, 1, 148, 3, 148, 3605, 8, 148, 1, 148, 3, 148, 3608, 8, 148, 1, 148, 3, 148, 3611, 8, 148, 1, 148, 3, 148, 3614, 8, 148, 1, 148, 3, 148, 3617, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3623, 8, 149, 1, 150, 1, 150, 3, 150, 3627, 8, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3632, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3638, 8, 150, 1, 151, 1, 151, 3, 151, 3642, 8, 151, 1, 151, 3, 151, 3645, 8, 151, 1, 151, 3, 151, 3648, 8, 151, 1, 151, 3, 151, 3651, 8, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 3659, 8, 153, 1, 153, 1, 153, 3, 153, 3663, 8, 153, 1, 154, 1, 154, 3, 154, 3667, 8, 154, 1, 154, 1, 154, 3, 154, 3671, 8, 154, 1, 154, 1, 154, 3, 154, 3675, 8, 154, 1, 155, 1, 155, 1, 155, 3, 155, 3680, 8, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 4, 158, 3692, 8, 158, 11, 158, 12, 158, 3693, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 3703, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 3720, 8, 159, 1, 159, 1, 159, 1, 159, 3, 159, 3725, 8, 159, 1, 159, 3, 159, 3728, 8, 159, 3, 159, 3730, 8, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 3740, 8, 161, 1, 162, 1, 162, 1, 162, 5, 162, 3745, 8, 162, 10, 162, 12, 162, 3748, 9, 162, 1, 163, 1, 163, 3, 163, 3752, 8, 163, 1, 163, 3, 163, 3755, 8, 163, 1, 163, 3, 163, 3758, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 3765, 8, 163, 1, 163, 3, 163, 3768, 8, 163, 3, 163, 3770, 8, 163, 1, 164, 1, 164, 1, 165, 1, 165, 3, 165, 3776, 8, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 3785, 8, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 3795, 8, 170, 1, 170, 1, 170, 1, 170, 3, 170, 3800, 8, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 3, 172, 3808, 8, 172, 1, 172, 1, 172, 3, 172, 3812, 8, 172, 1, 172, 1, 172, 1, 173, 5, 173, 3817, 8, 173, 10, 173, 12, 173, 3820, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 3829, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 5, 176, 3838, 8, 176, 10, 176, 12, 176, 3841, 9, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 3948, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 3956, 8, 179, 1, 179, 3, 179, 3959, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 3969, 8, 180, 1, 181, 4, 181, 3972, 8, 181, 11, 181, 12, 181, 3973, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3984, 8, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3995, 8, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 5, 185, 4005, 8, 185, 10, 185, 12, 185, 4008, 9, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 5, 187, 4018, 8, 187, 10, 187, 12, 187, 4021, 9, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 4030, 8, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 3, 192, 4042, 8, 192, 1, 192, 1, 192, 3, 192, 4046, 8, 192, 1, 192, 3, 192, 4049, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 4056, 8, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 3, 194, 4064, 8, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4074, 8, 196, 3, 196, 4076, 8, 196, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4082, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4087, 8, 197, 1, 197, 1, 197, 3, 197, 4091, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4096, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4102, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4109, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4115, 8, 197, 3, 197, 4117, 8, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4124, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4132, 8, 198, 1, 199, 1, 199, 1, 199, 3, 199, 4137, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 4148, 8, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 4155, 8, 201, 1, 202, 1, 202, 3, 202, 4159, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 4176, 8, 204, 1, 204, 3, 204, 4179, 8, 204, 1, 204, 3, 204, 4182, 8, 204, 1, 204, 3, 204, 4185, 8, 204, 1, 204, 3, 204, 4188, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 4196, 8, 205, 1, 205, 3, 205, 4199, 8, 205, 1, 205, 3, 205, 4202, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4208, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 5, 207, 4214, 8, 207, 10, 207, 12, 207, 4217, 9, 207, 1, 207, 3, 207, 4220, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 4232, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 4238, 8, 207, 1, 208, 3, 208, 4241, 8, 208, 1, 208, 1, 208, 1, 208, 3, 208, 4246, 8, 208, 1, 208, 1, 208, 3, 208, 4250, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 4257, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 4268, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 3, 213, 4291, 8, 213, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 218, 1, 218, 3, 218, 4311, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 4320, 8, 218, 1, 218, 3, 218, 4323, 8, 218, 1, 218, 3, 218, 4326, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 4336, 8, 218, 1, 218, 3, 218, 4339, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 4348, 8, 218, 1, 218, 1, 218, 3, 218, 4352, 8, 218, 1, 218, 3, 218, 4355, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 4363, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 4369, 8, 219, 1, 220, 1, 220, 3, 220, 4373, 8, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 5, 222, 4382, 8, 222, 10, 222, 12, 222, 4385, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 4394, 8, 223, 1, 224, 1, 224, 1, 224, 1, 225, 4, 225, 4400, 8, 225, 11, 225, 12, 225, 4401, 1, 226, 1, 226, 1, 226, 3, 226, 4407, 8, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 228, 1, 228, 1, 229, 1, 229, 1, 230, 1, 230, 3, 230, 4419, 8, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 4436, 8, 234, 1, 235, 1, 235, 3, 235, 4440, 8, 235, 1, 235, 1, 235, 5, 235, 4444, 8, 235, 10, 235, 12, 235, 4447, 9, 235, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 4453, 8, 236, 1, 237, 1, 237, 1, 237, 1, 238, 5, 238, 4459, 8, 238, 10, 238, 12, 238, 4462, 9, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 4475, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 4501, 8, 240, 1, 241, 1, 241, 1, 241, 5, 241, 4506, 8, 241, 10, 241, 12, 241, 4509, 9, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 5, 243, 4520, 8, 243, 10, 243, 12, 243, 4523, 9, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 3, 245, 4533, 8, 245, 1, 245, 3, 245, 4536, 8, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 3, 247, 4549, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4558, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4583, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4594, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4636, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4644, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4650, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 5, 249, 4659, 8, 249, 10, 249, 12, 249, 4662, 9, 249, 1, 250, 1, 250, 1, 250, 3, 250, 4667, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 4675, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 5, 253, 4684, 8, 253, 10, 253, 12, 253, 4687, 9, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 5, 256, 4698, 8, 256, 10, 256, 12, 256, 4701, 9, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4709, 8, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4714, 8, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4725, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4736, 8, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4744, 8, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 5, 260, 4752, 8, 260, 10, 260, 12, 260, 4755, 9, 260, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 4761, 8, 261, 1, 261, 3, 261, 4764, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 4770, 8, 261, 1, 261, 3, 261, 4773, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 4788, 8, 261, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 4801, 8, 264, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 4830, 8, 267, 1, 268, 1, 268, 1, 268, 5, 268, 4835, 8, 268, 10, 268, 12, 268, 4838, 9, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 4852, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 3, 271, 4864, 8, 271, 1, 271, 1, 271, 3, 271, 4868, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4873, 8, 271, 1, 271, 1, 271, 3, 271, 4877, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4882, 8, 271, 1, 271, 1, 271, 3, 271, 4886, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4892, 8, 271, 1, 271, 1, 271, 3, 271, 4896, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4901, 8, 271, 1, 271, 1, 271, 3, 271, 4905, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4911, 8, 271, 1, 271, 1, 271, 3, 271, 4915, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4920, 8, 271, 1, 271, 1, 271, 3, 271, 4924, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4929, 8, 271, 1, 271, 1, 271, 3, 271, 4933, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4938, 8, 271, 1, 271, 1, 271, 3, 271, 4942, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4949, 8, 271, 1, 271, 1, 271, 3, 271, 4953, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4960, 8, 271, 1, 271, 1, 271, 3, 271, 4964, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4971, 8, 271, 1, 271, 1, 271, 3, 271, 4975, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4982, 8, 271, 1, 271, 1, 271, 3, 271, 4986, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 4992, 8, 271, 1, 271, 1, 271, 3, 271, 4996, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5002, 8, 271, 1, 271, 1, 271, 3, 271, 5006, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5011, 8, 271, 1, 271, 1, 271, 3, 271, 5015, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5022, 8, 271, 1, 271, 1, 271, 3, 271, 5026, 8, 271, 1, 271, 1, 271, 3, 271, 5030, 8, 271, 1, 271, 1, 271, 3, 271, 5034, 8, 271, 1, 271, 1, 271, 3, 271, 5038, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5043, 8, 271, 1, 271, 1, 271, 3, 271, 5047, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5052, 8, 271, 1, 271, 1, 271, 3, 271, 5056, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5061, 8, 271, 1, 271, 1, 271, 3, 271, 5065, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5070, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5076, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5081, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5087, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5092, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5098, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5103, 8, 271, 1, 271, 1, 271, 3, 271, 5107, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5112, 8, 271, 1, 271, 1, 271, 3, 271, 5116, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5122, 8, 271, 1, 271, 1, 271, 3, 271, 5126, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5131, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5139, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5145, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5151, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5157, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5163, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5170, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5175, 8, 271, 1, 271, 1, 271, 3, 271, 5179, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5184, 8, 271, 1, 271, 1, 271, 3, 271, 5188, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5193, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5199, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5206, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5211, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5218, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5228, 8, 271, 1, 271, 1, 271, 3, 271, 5232, 8, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 5238, 8, 271, 3, 271, 5240, 8, 271, 1, 272, 1, 272, 1, 272, 5, 272, 5245, 8, 272, 10, 272, 12, 272, 5248, 9, 272, 1, 273, 3, 273, 5251, 8, 273, 1, 273, 1, 273, 1, 273, 3, 273, 5256, 8, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 3, 273, 5274, 8, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5289, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5307, 8, 274, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 5, 276, 5314, 8, 276, 10, 276, 12, 276, 5317, 9, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 3, 278, 5325, 8, 278, 1, 279, 1, 279, 3, 279, 5329, 8, 279, 1, 280, 1, 280, 4, 280, 5333, 8, 280, 11, 280, 12, 280, 5334, 1, 281, 1, 281, 1, 281, 5, 281, 5340, 8, 281, 10, 281, 12, 281, 5343, 9, 281, 1, 282, 1, 282, 3, 282, 5347, 8, 282, 1, 282, 1, 282, 1, 282, 5, 282, 5352, 8, 282, 10, 282, 12, 282, 5355, 9, 282, 1, 282, 1, 282, 3, 282, 5359, 8, 282, 1, 282, 3, 282, 5362, 8, 282, 1, 283, 3, 283, 5365, 8, 283, 1, 283, 1, 283, 3, 283, 5369, 8, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 5440, 8, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 5536, 8, 284, 1, 285, 1, 285, 3, 285, 5540, 8, 285, 1, 286, 1, 286, 1, 286, 3, 286, 5545, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5556, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5567, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5578, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5589, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5600, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5612, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5623, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5634, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5644, 8, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5651, 8, 286, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 3, 288, 5658, 8, 288, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 5664, 8, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5672, 8, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5677, 8, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5682, 8, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5687, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5693, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5700, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5706, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5712, 8, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5717, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5723, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5730, 8, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5735, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5741, 8, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 3, 290, 5748, 8, 290, 1, 290, 3, 290, 5751, 8, 290, 1, 291, 1, 291, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 3, 293, 5764, 8, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 5773, 8, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 5785, 8, 294, 3, 294, 5787, 8, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 3, 295, 5805, 8, 295, 1, 296, 1, 296, 1, 296, 5, 296, 5810, 8, 296, 10, 296, 12, 296, 5813, 9, 296, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 5, 298, 5820, 8, 298, 10, 298, 12, 298, 5823, 9, 298, 1, 299, 1, 299, 3, 299, 5827, 8, 299, 1, 299, 1, 299, 3, 299, 5831, 8, 299, 1, 299, 1, 299, 3, 299, 5835, 8, 299, 1, 299, 1, 299, 3, 299, 5839, 8, 299, 3, 299, 5841, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 5901, 8, 300, 1, 301, 1, 301, 1, 301, 5, 301, 5906, 8, 301, 10, 301, 12, 301, 5909, 9, 301, 1, 302, 1, 302, 1, 302, 3, 302, 5914, 8, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 3, 304, 5925, 8, 304, 1, 304, 3, 304, 5928, 8, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305, 5935, 8, 305, 1, 305, 3, 305, 5938, 8, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305, 5948, 8, 305, 1, 305, 3, 305, 5951, 8, 305, 3, 305, 5953, 8, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 5, 309, 5970, 8, 309, 10, 309, 12, 309, 5973, 9, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 3, 310, 5984, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 5993, 8, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6002, 8, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6014, 8, 311, 3, 311, 6016, 8, 311, 1, 312, 1, 312, 1, 313, 1, 313, 3, 313, 6022, 8, 313, 1, 313, 1, 313, 3, 313, 6026, 8, 313, 1, 313, 3, 313, 6029, 8, 313, 1, 313, 3, 313, 6032, 8, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6037, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6043, 8, 313, 1, 313, 3, 313, 6046, 8, 313, 1, 313, 3, 313, 6049, 8, 313, 1, 313, 3, 313, 6052, 8, 313, 1, 313, 3, 313, 6055, 8, 313, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 5, 318, 6069, 8, 318, 10, 318, 12, 318, 6072, 9, 318, 1, 319, 3, 319, 6075, 8, 319, 1, 319, 3, 319, 6078, 8, 319, 1, 319, 3, 319, 6081, 8, 319, 1, 319, 3, 319, 6084, 8, 319, 1, 319, 3, 319, 6087, 8, 319, 1, 319, 1, 319, 1, 319, 3, 319, 6092, 8, 319, 1, 319, 3, 319, 6095, 8, 319, 3, 319, 6097, 8, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 6110, 8, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 5, 322, 6120, 8, 322, 10, 322, 12, 322, 6123, 9, 322, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6136, 8, 326, 1, 327, 1, 327, 3, 327, 6140, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6146, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6156, 8, 327, 3, 327, 6158, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6163, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 5, 328, 6169, 8, 328, 10, 328, 12, 328, 6172, 9, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 3, 330, 6181, 8, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 5, 331, 6188, 8, 331, 10, 331, 12, 331, 6191, 9, 331, 1, 332, 1, 332, 1, 332, 5, 332, 6196, 8, 332, 10, 332, 12, 332, 6199, 9, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 3, 333, 6207, 8, 333, 3, 333, 6209, 8, 333, 1, 334, 1, 334, 1, 334, 5, 334, 6214, 8, 334, 10, 334, 12, 334, 6217, 9, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 3, 335, 6225, 8, 335, 3, 335, 6227, 8, 335, 1, 336, 1, 336, 1, 336, 5, 336, 6232, 8, 336, 10, 336, 12, 336, 6235, 9, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 6243, 8, 337, 3, 337, 6245, 8, 337, 1, 338, 1, 338, 3, 338, 6249, 8, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 5, 339, 6256, 8, 339, 10, 339, 12, 339, 6259, 9, 339, 1, 340, 1, 340, 3, 340, 6263, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6269, 8, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6274, 8, 340, 1, 341, 1, 341, 3, 341, 6278, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6283, 8, 341, 1, 342, 1, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 3, 344, 6301, 8, 344, 1, 345, 1, 345, 1, 345, 3, 345, 6306, 8, 345, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 3, 347, 6321, 8, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 5, 348, 6328, 8, 348, 10, 348, 12, 348, 6331, 9, 348, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 5, 350, 6339, 8, 350, 10, 350, 12, 350, 6342, 9, 350, 1, 351, 4, 351, 6345, 8, 351, 11, 351, 12, 351, 6346, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 3, 352, 6384, 8, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 3, 353, 6404, 8, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 3, 353, 6411, 8, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 5, 354, 6420, 8, 354, 10, 354, 12, 354, 6423, 9, 354, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 5, 357, 6434, 8, 357, 10, 357, 12, 357, 6437, 9, 357, 1, 358, 1, 358, 1, 358, 1, 358, 3, 358, 6443, 8, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 3, 359, 6451, 8, 359, 1, 360, 4, 360, 6454, 8, 360, 11, 360, 12, 360, 6455, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 3, 362, 6463, 8, 362, 1, 362, 1, 362, 3, 362, 6467, 8, 362, 1, 362, 1, 362, 1, 362, 3, 362, 6472, 8, 362, 1, 362, 1, 362, 3, 362, 6476, 8, 362, 1, 362, 1, 362, 1, 362, 3, 362, 6481, 8, 362, 1, 362, 1, 362, 3, 362, 6485, 8, 362, 3, 362, 6487, 8, 362, 1, 363, 1, 363, 1, 363, 3, 363, 6492, 8, 363, 1, 363, 1, 363, 3, 363, 6496, 8, 363, 1, 364, 1, 364, 1, 364, 3, 364, 6501, 8, 364, 1, 364, 1, 364, 3, 364, 6505, 8, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 3, 365, 6529, 8, 365, 1, 366, 1, 366, 1, 366, 5, 366, 6534, 8, 366, 10, 366, 12, 366, 6537, 9, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 5, 367, 6544, 8, 367, 10, 367, 12, 367, 6547, 9, 367, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 370, 4, 370, 6556, 8, 370, 11, 370, 12, 370, 6557, 1, 371, 1, 371, 1, 371, 3, 371, 6563, 8, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 3, 372, 6576, 8, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 3, 372, 6588, 8, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 3, 372, 6600, 8, 372, 3, 372, 6602, 8, 372, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 6608, 8, 373, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 3, 375, 6615, 8, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 3, 376, 6660, 8, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 6678, 8, 377, 1, 378, 1, 378, 3, 378, 6682, 8, 378, 1, 378, 1, 378, 1, 378, 3, 378, 6687, 8, 378, 1, 378, 3, 378, 6690, 8, 378, 1, 379, 1, 379, 3, 379, 6694, 8, 379, 1, 379, 1, 379, 1, 379, 3, 379, 6699, 8, 379, 1, 379, 1, 379, 1, 379, 3, 379, 6704, 8, 379, 1, 379, 3, 379, 6707, 8, 379, 1, 380, 1, 380, 1, 380, 5, 380, 6712, 8, 380, 10, 380, 12, 380, 6715, 9, 380, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 3, 382, 6731, 8, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6802, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6833, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6887, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6897, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6907, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6918, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6928, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6939, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6949, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6954, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6963, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6968, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6978, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6983, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 6992, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7005, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7010, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7122, 8, 383, 3, 383, 7124, 8, 383, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7133, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7144, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7155, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7168, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7180, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7191, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7198, 8, 385, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7288, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7341, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7351, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7362, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7373, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7387, 8, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 5, 389, 7400, 8, 389, 10, 389, 12, 389, 7403, 9, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 3, 390, 7413, 8, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 3, 391, 7420, 8, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 3, 393, 7474, 8, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 3, 393, 7615, 8, 393, 1, 394, 1, 394, 1, 394, 1, 394, 3, 394, 7621, 8, 394, 1, 394, 3, 394, 7624, 8, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 3, 396, 7634, 8, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 3, 397, 7674, 8, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7684, 8, 398, 1, 399, 1, 399, 1, 399, 5, 399, 7689, 8, 399, 10, 399, 12, 399, 7692, 9, 399, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7714, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7723, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7732, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7741, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7774, 8, 401, 1, 402, 1, 402, 3, 402, 7778, 8, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7788, 8, 402, 1, 402, 1, 402, 3, 402, 7792, 8, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7802, 8, 403, 1, 404, 3, 404, 7805, 8, 404, 1, 404, 1, 404, 3, 404, 7809, 8, 404, 5, 404, 7811, 8, 404, 10, 404, 12, 404, 7814, 9, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 3, 405, 7821, 8, 405, 1, 406, 1, 406, 1, 407, 1, 407, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 3, 409, 7832, 8, 409, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 3, 412, 7844, 8, 412, 1, 413, 1, 413, 3, 413, 7848, 8, 413, 1, 413, 3, 413, 7851, 8, 413, 1, 413, 1, 413, 3, 413, 7855, 8, 413, 1, 413, 3, 413, 7858, 8, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7863, 8, 413, 1, 413, 1, 413, 3, 413, 7867, 8, 413, 1, 413, 3, 413, 7870, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7876, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7887, 8, 413, 1, 413, 3, 413, 7890, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7897, 8, 413, 1, 413, 1, 413, 3, 413, 7901, 8, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7906, 8, 413, 1, 413, 3, 413, 7909, 8, 413, 3, 413, 7911, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 7925, 8, 415, 1, 416, 1, 416, 3, 416, 7929, 8, 416, 1, 416, 5, 416, 7932, 8, 416, 10, 416, 12, 416, 7935, 9, 416, 1, 417, 1, 417, 1, 418, 1, 418, 3, 418, 7941, 8, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 3, 419, 7948, 8, 419, 1, 419, 3, 419, 7951, 8, 419, 1, 419, 1, 419, 1, 419, 3, 419, 7956, 8, 419, 1, 419, 3, 419, 7959, 8, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 3, 419, 7968, 8, 419, 3, 419, 7970, 8, 419, 1, 419, 1, 419, 1, 419, 3, 419, 7975, 8, 419, 1, 420, 1, 420, 3, 420, 7979, 8, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 3, 422, 7991, 8, 422, 1, 422, 3, 422, 7994, 8, 422, 1, 423, 1, 423, 1, 424, 4, 424, 7999, 8, 424, 11, 424, 12, 424, 8000, 1, 425, 1, 425, 3, 425, 8005, 8, 425, 1, 425, 1, 425, 1, 425, 3, 425, 8010, 8, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 3, 426, 8020, 8, 426, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 3, 428, 8030, 8, 428, 1, 428, 3, 428, 8033, 8, 428, 1, 428, 3, 428, 8036, 8, 428, 3, 428, 8038, 8, 428, 1, 429, 1, 429, 1, 429, 1, 429, 3, 429, 8044, 8, 429, 1, 430, 1, 430, 1, 430, 5, 430, 8049, 8, 430, 10, 430, 12, 430, 8052, 9, 430, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8071, 8, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8091, 8, 435, 1, 435, 1, 435, 3, 435, 8095, 8, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8100, 8, 435, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 3, 438, 8169, 8, 438, 1, 438, 1, 438, 1, 438, 3, 438, 8174, 8, 438, 1, 439, 1, 439, 1, 440, 1, 440, 3, 440, 8180, 8, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 3, 441, 8193, 8, 441, 1, 441, 1, 441, 3, 441, 8197, 8, 441, 1, 441, 1, 441, 3, 441, 8201, 8, 441, 1, 441, 1, 441, 1, 441, 1, 441, 3, 441, 8207, 8, 441, 3, 441, 8209, 8, 441, 1, 442, 1, 442, 1, 442, 1, 442, 5, 442, 8215, 8, 442, 10, 442, 12, 442, 8218, 9, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 3, 444, 8227, 8, 444, 1, 444, 3, 444, 8230, 8, 444, 1, 444, 3, 444, 8233, 8, 444, 1, 444, 3, 444, 8236, 8, 444, 1, 444, 3, 444, 8239, 8, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 3, 444, 8246, 8, 444, 1, 444, 3, 444, 8249, 8, 444, 3, 444, 8251, 8, 444, 1, 445, 1, 445, 3, 445, 8255, 8, 445, 1, 445, 3, 445, 8258, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 8265, 8, 445, 3, 445, 8267, 8, 445, 1, 446, 1, 446, 1, 446, 5, 446, 8272, 8, 446, 10, 446, 12, 446, 8275, 9, 446, 1, 447, 1, 447, 1, 448, 1, 448, 3, 448, 8281, 8, 448, 1, 449, 1, 449, 3, 449, 8285, 8, 449, 1, 450, 1, 450, 3, 450, 8289, 8, 450, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 5, 452, 8296, 8, 452, 10, 452, 12, 452, 8299, 9, 452, 1, 453, 1, 453, 1, 453, 3, 453, 8304, 8, 453, 1, 454, 1, 454, 3, 454, 8308, 8, 454, 1, 455, 1, 455, 3, 455, 8312, 8, 455, 1, 456, 1, 456, 1, 456, 3, 456, 8317, 8, 456, 1, 457, 1, 457, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 3, 460, 8329, 8, 460, 1, 461, 1, 461, 1, 461, 5, 461, 8334, 8, 461, 10, 461, 12, 461, 8337, 9, 461, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 3, 463, 8346, 8, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 3, 463, 8359, 8, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 3, 464, 8370, 8, 464, 1, 465, 1, 465, 1, 465, 5, 465, 8375, 8, 465, 10, 465, 12, 465, 8378, 9, 465, 1, 466, 1, 466, 3, 466, 8382, 8, 466, 1, 467, 1, 467, 3, 467, 8386, 8, 467, 1, 468, 1, 468, 3, 468, 8390, 8, 468, 1, 469, 1, 469, 1, 469, 3, 469, 8395, 8, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 3, 471, 8408, 8, 471, 1, 472, 1, 472, 1, 472, 3, 472, 8413, 8, 472, 1, 472, 1, 472, 3, 472, 8417, 8, 472, 1, 472, 1, 472, 3, 472, 8421, 8, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 3, 472, 8428, 8, 472, 1, 472, 3, 472, 8431, 8, 472, 3, 472, 8433, 8, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 3, 474, 8441, 8, 474, 1, 474, 1, 474, 3, 474, 8445, 8, 474, 1, 475, 3, 475, 8448, 8, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 3, 475, 8455, 8, 475, 1, 475, 3, 475, 8458, 8, 475, 1, 476, 1, 476, 1, 476, 3, 476, 8463, 8, 476, 1, 477, 1, 477, 1, 477, 1, 477, 3, 477, 8469, 8, 477, 1, 477, 1, 477, 1, 477, 1, 477, 3, 477, 8475, 8, 477, 1, 477, 1, 477, 3, 477, 8479, 8, 477, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 5, 479, 8486, 8, 479, 10, 479, 12, 479, 8489, 9, 479, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 3, 481, 8497, 8, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 3, 481, 8504, 8, 481, 1, 481, 3, 481, 8507, 8, 481, 1, 482, 1, 482, 1, 482, 1, 482, 3, 482, 8513, 8, 482, 1, 482, 1, 482, 1, 482, 3, 482, 8518, 8, 482, 1, 483, 1, 483, 1, 483, 1, 484, 3, 484, 8524, 8, 484, 1, 484, 1, 484, 1, 484, 1, 484, 3, 484, 8530, 8, 484, 1, 484, 3, 484, 8533, 8, 484, 1, 484, 3, 484, 8536, 8, 484, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 3, 486, 8543, 8, 486, 1, 486, 1, 486, 3, 486, 8547, 8, 486, 1, 486, 3, 486, 8550, 8, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 3, 488, 8565, 8, 488, 1, 488, 3, 488, 8568, 8, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 3, 490, 8575, 8, 490, 1, 491, 3, 491, 8578, 8, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 3, 491, 8585, 8, 491, 1, 491, 3, 491, 8588, 8, 491, 1, 491, 3, 491, 8591, 8, 491, 1, 492, 1, 492, 1, 492, 5, 492, 8596, 8, 492, 10, 492, 12, 492, 8599, 9, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 3, 493, 8610, 8, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 3, 493, 8617, 8, 493, 3, 493, 8619, 8, 493, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 5, 495, 8627, 8, 495, 10, 495, 12, 495, 8630, 9, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 5, 498, 8647, 8, 498, 10, 498, 12, 498, 8650, 9, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 3, 499, 8657, 8, 499, 1, 500, 1, 500, 3, 500, 8661, 8, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 3, 501, 8671, 8, 501, 1, 502, 1, 502, 3, 502, 8675, 8, 502, 1, 502, 1, 502, 3, 502, 8679, 8, 502, 1, 502, 1, 502, 3, 502, 8683, 8, 502, 3, 502, 8685, 8, 502, 1, 502, 1, 502, 1, 502, 3, 502, 8690, 8, 502, 1, 502, 1, 502, 3, 502, 8694, 8, 502, 1, 502, 1, 502, 3, 502, 8698, 8, 502, 3, 502, 8700, 8, 502, 3, 502, 8702, 8, 502, 1, 503, 1, 503, 3, 503, 8706, 8, 503, 1, 504, 1, 504, 3, 504, 8710, 8, 504, 1, 504, 3, 504, 8713, 8, 504, 1, 504, 3, 504, 8716, 8, 504, 1, 504, 3, 504, 8719, 8, 504, 1, 504, 3, 504, 8722, 8, 504, 3, 504, 8724, 8, 504, 1, 504, 3, 504, 8727, 8, 504, 1, 504, 3, 504, 8730, 8, 504, 1, 504, 3, 504, 8733, 8, 504, 1, 504, 3, 504, 8736, 8, 504, 1, 504, 3, 504, 8739, 8, 504, 1, 504, 3, 504, 8742, 8, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 3, 504, 8751, 8, 504, 3, 504, 8753, 8, 504, 1, 504, 1, 504, 1, 504, 3, 504, 8758, 8, 504, 5, 504, 8760, 8, 504, 10, 504, 12, 504, 8763, 9, 504, 1, 505, 1, 505, 1, 505, 3, 505, 8768, 8, 505, 1, 506, 1, 506, 3, 506, 8772, 8, 506, 1, 507, 1, 507, 3, 507, 8776, 8, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 5, 508, 8783, 8, 508, 10, 508, 12, 508, 8786, 9, 508, 1, 509, 1, 509, 3, 509, 8790, 8, 509, 1, 509, 1, 509, 3, 509, 8794, 8, 509, 1, 509, 1, 509, 1, 509, 1, 509, 3, 509, 8800, 8, 509, 1, 509, 3, 509, 8803, 8, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 3, 511, 8822, 8, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 3, 512, 8830, 8, 512, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 3, 514, 8839, 8, 514, 1, 515, 1, 515, 3, 515, 8843, 8, 515, 1, 516, 3, 516, 8846, 8, 516, 1, 516, 1, 516, 3, 516, 8850, 8, 516, 1, 516, 1, 516, 1, 516, 3, 516, 8855, 8, 516, 1, 516, 1, 516, 1, 516, 1, 516, 3, 516, 8861, 8, 516, 1, 517, 1, 517, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 3, 519, 8873, 8, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 5, 523, 8886, 8, 523, 10, 523, 12, 523, 8889, 9, 523, 1, 524, 1, 524, 1, 524, 1, 524, 3, 524, 8895, 8, 524, 1, 524, 3, 524, 8898, 8, 524, 1, 525, 1, 525, 3, 525, 8902, 8, 525, 1, 525, 1, 525, 3, 525, 8906, 8, 525, 1, 525, 1, 525, 3, 525, 8910, 8, 525, 3, 525, 8912, 8, 525, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 3, 527, 8920, 8, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 3, 528, 8929, 8, 528, 1, 528, 1, 528, 1, 528, 1, 528, 3, 528, 8935, 8, 528, 3, 528, 8937, 8, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 529, 3, 529, 8944, 8, 529, 1, 530, 1, 530, 3, 530, 8948, 8, 530, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 3, 532, 8957, 8, 532, 1, 533, 1, 533, 3, 533, 8961, 8, 533, 1, 534, 1, 534, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 3, 536, 8970, 8, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 5, 537, 8977, 8, 537, 10, 537, 12, 537, 8980, 9, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 1, 538, 3, 538, 8991, 8, 538, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 3, 544, 9019, 8, 544, 1, 545, 1, 545, 1, 546, 4, 546, 9024, 8, 546, 11, 546, 12, 546, 9025, 1, 547, 1, 547, 3, 547, 9030, 8, 547, 1, 547, 3, 547, 9033, 8, 547, 1, 548, 1, 548, 1, 548, 3, 548, 9038, 8, 548, 1, 548, 1, 548, 3, 548, 9042, 8, 548, 1, 548, 3, 548, 9045, 8, 548, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 5, 550, 9059, 8, 550, 10, 550, 12, 550, 9062, 9, 550, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 5, 552, 9070, 8, 552, 10, 552, 12, 552, 9073, 9, 552, 1, 553, 1, 553, 3, 553, 9077, 8, 553, 1, 553, 3, 553, 9080, 8, 553, 1, 553, 3, 553, 9083, 8, 553, 1, 553, 1, 553, 3, 553, 9087, 8, 553, 1, 553, 1, 553, 3, 553, 9091, 8, 553, 1, 553, 1, 553, 3, 553, 9095, 8, 553, 1, 553, 1, 553, 1, 553, 3, 553, 9100, 8, 553, 1, 553, 1, 553, 3, 553, 9104, 8, 553, 1, 553, 1, 553, 3, 553, 9108, 8, 553, 3, 553, 9110, 8, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 3, 553, 9119, 8, 553, 1, 553, 1, 553, 1, 553, 3, 553, 9124, 8, 553, 1, 553, 1, 553, 1, 553, 1, 553, 3, 553, 9130, 8, 553, 1, 553, 1, 553, 3, 553, 9134, 8, 553, 3, 553, 9136, 8, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 3, 553, 9143, 8, 553, 1, 553, 1, 553, 1, 553, 3, 553, 9148, 8, 553, 1, 553, 1, 553, 1, 553, 1, 553, 5, 553, 9154, 8, 553, 10, 553, 12, 553, 9157, 9, 553, 1, 554, 3, 554, 9160, 8, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 3, 554, 9167, 8, 554, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 3, 556, 9174, 8, 556, 1, 556, 3, 556, 9177, 8, 556, 1, 556, 1, 556, 1, 556, 1, 556, 3, 556, 9183, 8, 556, 1, 557, 1, 557, 3, 557, 9187, 8, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 3, 558, 9196, 8, 558, 1, 559, 3, 559, 9199, 8, 559, 1, 559, 1, 559, 3, 559, 9203, 8, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 3, 559, 9211, 8, 559, 1, 559, 1, 559, 1, 559, 1, 559, 3, 559, 9217, 8, 559, 3, 559, 9219, 8, 559, 1, 560, 3, 560, 9222, 8, 560, 1, 560, 1, 560, 3, 560, 9226, 8, 560, 1, 560, 3, 560, 9229, 8, 560, 1, 560, 3, 560, 9232, 8, 560, 1, 561, 1, 561, 3, 561, 9236, 8, 561, 1, 561, 1, 561, 3, 561, 9240, 8, 561, 1, 561, 1, 561, 1, 561, 1, 561, 3, 561, 9246, 8, 561, 1, 561, 3, 561, 9249, 8, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 3, 561, 9258, 8, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 3, 561, 9265, 8, 561, 3, 561, 9267, 8, 561, 1, 562, 1, 562, 1, 562, 5, 562, 9272, 8, 562, 10, 562, 12, 562, 9275, 9, 562, 1, 563, 1, 563, 1, 563, 5, 563, 9280, 8, 563, 10, 563, 12, 563, 9283, 9, 563, 1, 564, 1, 564, 3, 564, 9287, 8, 564, 1, 564, 3, 564, 9290, 8, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 3, 565, 9298, 8, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 3, 567, 9307, 8, 567, 1, 567, 1, 567, 1, 567, 1, 567, 1, 567, 1, 567, 3, 567, 9315, 8, 567, 3, 567, 9317, 8, 567, 1, 568, 1, 568, 3, 568, 9321, 8, 568, 1, 569, 1, 569, 1, 569, 5, 569, 9326, 8, 569, 10, 569, 12, 569, 9329, 9, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 3, 573, 9347, 8, 573, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 5, 575, 9354, 8, 575, 10, 575, 12, 575, 9357, 9, 575, 1, 576, 1, 576, 1, 576, 3, 576, 9362, 8, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 3, 577, 9381, 8, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 5, 578, 9388, 8, 578, 10, 578, 12, 578, 9391, 9, 578, 1, 579, 1, 579, 1, 579, 3, 579, 9396, 8, 579, 1, 579, 1, 579, 3, 579, 9400, 8, 579, 1, 580, 4, 580, 9403, 8, 580, 11, 580, 12, 580, 9404, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 1, 581, 3, 581, 9415, 8, 581, 1, 582, 1, 582, 1, 582, 5, 582, 9420, 8, 582, 10, 582, 12, 582, 9423, 9, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 3, 583, 9431, 8, 583, 1, 584, 3, 584, 9434, 8, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 3, 584, 9443, 8, 584, 3, 584, 9445, 8, 584, 1, 584, 1, 584, 1, 584, 1, 584, 3, 584, 9451, 8, 584, 1, 585, 1, 585, 3, 585, 9455, 8, 585, 1, 585, 5, 585, 9458, 8, 585, 10, 585, 12, 585, 9461, 9, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 3, 586, 9470, 8, 586, 1, 586, 1, 586, 1, 586, 1, 586, 3, 586, 9476, 8, 586, 3, 586, 9478, 8, 586, 1, 587, 1, 587, 1, 587, 1, 587, 3, 587, 9484, 8, 587, 1, 588, 1, 588, 3, 588, 9488, 8, 588, 1, 588, 3, 588, 9491, 8, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 3, 590, 9504, 8, 590, 1, 590, 1, 590, 1, 590, 1, 590, 3, 590, 9510, 8, 590, 1, 590, 1, 590, 3, 590, 9514, 8, 590, 1, 590, 1, 590, 3, 590, 9518, 8, 590, 1, 590, 3, 590, 9521, 8, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 3, 592, 9529, 8, 592, 1, 593, 1, 593, 3, 593, 9533, 8, 593, 1, 594, 1, 594, 3, 594, 9537, 8, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 3, 595, 9545, 8, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 3, 596, 9552, 8, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 3, 597, 9559, 8, 597, 1, 598, 1, 598, 3, 598, 9563, 8, 598, 1, 598, 1, 598, 1, 598, 1, 598, 3, 598, 9569, 8, 598, 3, 598, 9571, 8, 598, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 3, 600, 9580, 8, 600, 1, 600, 3, 600, 9583, 8, 600, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 3, 602, 9593, 8, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 3, 603, 9609, 8, 603, 1, 603, 1, 603, 1, 603, 1, 603, 3, 603, 9615, 8, 603, 1, 603, 1, 603, 1, 603, 3, 603, 9620, 8, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 3, 604, 9627, 8, 604, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 607, 1, 607, 3, 607, 9636, 8, 607, 1, 608, 1, 608, 1, 608, 5, 608, 9641, 8, 608, 10, 608, 12, 608, 9644, 9, 608, 1, 609, 1, 609, 1, 609, 5, 609, 9649, 8, 609, 10, 609, 12, 609, 9652, 9, 609, 1, 610, 1, 610, 1, 610, 5, 610, 9657, 8, 610, 10, 610, 12, 610, 9660, 9, 610, 1, 611, 1, 611, 3, 611, 9664, 8, 611, 1, 611, 1, 611, 3, 611, 9668, 8, 611, 1, 612, 3, 612, 9671, 8, 612, 1, 612, 1, 612, 1, 613, 1, 613, 3, 613, 9677, 8, 613, 1, 614, 1, 614, 1, 614, 3, 614, 9682, 8, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 3, 614, 9698, 8, 614, 1, 614, 3, 614, 9701, 8, 614, 3, 614, 9703, 8, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 3, 615, 9715, 8, 615, 3, 615, 9717, 8, 615, 1, 616, 1, 616, 3, 616, 9721, 8, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 3, 616, 9729, 8, 616, 3, 616, 9731, 8, 616, 1, 616, 1, 616, 3, 616, 9735, 8, 616, 3, 616, 9737, 8, 616, 1, 617, 1, 617, 1, 617, 1, 617, 5, 617, 9743, 8, 617, 10, 617, 12, 617, 9746, 9, 617, 1, 618, 3, 618, 9749, 8, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 5, 619, 9756, 8, 619, 10, 619, 12, 619, 9759, 9, 619, 1, 620, 1, 620, 1, 620, 5, 620, 9764, 8, 620, 10, 620, 12, 620, 9767, 9, 620, 1, 621, 1, 621, 1, 621, 3, 621, 9772, 8, 621, 1, 622, 3, 622, 9775, 8, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 3, 623, 9784, 8, 623, 1, 624, 1, 624, 1, 624, 3, 624, 9789, 8, 624, 1, 625, 1, 625, 1, 625, 5, 625, 9794, 8, 625, 10, 625, 12, 625, 9797, 9, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 3, 626, 9806, 8, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 3, 626, 9832, 8, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 3, 626, 9843, 8, 626, 5, 626, 9845, 8, 626, 10, 626, 12, 626, 9848, 9, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 3, 627, 9855, 8, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 3, 627, 9877, 8, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 3, 627, 9886, 8, 627, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 3, 629, 9896, 8, 629, 1, 629, 3, 629, 9899, 8, 629, 1, 629, 1, 629, 1, 629, 3, 629, 9904, 8, 629, 1, 629, 1, 629, 1, 629, 3, 629, 9909, 8, 629, 1, 629, 1, 629, 3, 629, 9913, 8, 629, 1, 629, 3, 629, 9916, 8, 629, 1, 630, 1, 630, 3, 630, 9920, 8, 630, 1, 630, 3, 630, 9923, 8, 630, 1, 630, 3, 630, 9926, 8, 630, 1, 630, 3, 630, 9929, 8, 630, 1, 631, 1, 631, 3, 631, 9933, 8, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 9947, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 9954, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 9961, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 9968, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 9986, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 9994, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10006, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10012, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10025, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10064, 8, 632, 3, 632, 10066, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10086, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10096, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10107, 8, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 3, 632, 10119, 8, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 3, 633, 10126, 8, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 3, 634, 10138, 8, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 5, 636, 10148, 8, 636, 10, 636, 12, 636, 10151, 9, 636, 1, 637, 1, 637, 1, 637, 3, 637, 10156, 8, 637, 1, 638, 1, 638, 1, 639, 1, 639, 1, 639, 1, 639, 3, 639, 10164, 8, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 3, 640, 10181, 8, 640, 1, 641, 1, 641, 1, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 645, 1, 645, 1, 645, 5, 645, 10204, 8, 645, 10, 645, 12, 645, 10207, 9, 645, 1, 646, 1, 646, 1, 646, 1, 646, 1, 647, 1, 647, 1, 647, 3, 647, 10216, 8, 647, 1, 648, 1, 648, 3, 648, 10220, 8, 648, 1, 648, 3, 648, 10223, 8, 648, 1, 648, 3, 648, 10226, 8, 648, 1, 648, 3, 648, 10229, 8, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 3, 651, 10242, 8, 651, 1, 651, 1, 651, 1, 651, 3, 651, 10247, 8, 651, 1, 651, 1, 651, 1, 651, 3, 651, 10252, 8, 651, 3, 651, 10254, 8, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 652, 1, 652, 3, 652, 10262, 8, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 3, 653, 10271, 8, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 654, 1, 654, 1, 654, 3, 654, 10280, 8, 654, 1, 655, 1, 655, 1, 655, 3, 655, 10285, 8, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 1, 655, 3, 655, 10294, 8, 655, 1, 656, 1, 656, 1, 656, 3, 656, 10299, 8, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 657, 1, 658, 1, 658, 1, 659, 1, 659, 3, 659, 10313, 8, 659, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 1, 661, 3, 661, 10323, 8, 661, 1, 662, 1, 662, 1, 662, 1, 662, 1, 662, 1, 662, 3, 662, 10331, 8, 662, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 1, 663, 3, 663, 10345, 8, 663, 1, 664, 1, 664, 1, 664, 5, 664, 10350, 8, 664, 10, 664, 12, 664, 10353, 9, 664, 1, 665, 1, 665, 1, 665, 5, 665, 10358, 8, 665, 10, 665, 12, 665, 10361, 9, 665, 1, 666, 1, 666, 1, 666, 5, 666, 10366, 8, 666, 10, 666, 12, 666, 10369, 9, 666, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 3, 667, 10376, 8, 667, 1, 668, 1, 668, 3, 668, 10380, 8, 668, 1, 669, 1, 669, 1, 669, 5, 669, 10385, 8, 669, 10, 669, 12, 669, 10388, 9, 669, 1, 670, 1, 670, 1, 670, 1, 670, 1, 670, 3, 670, 10395, 8, 670, 1, 671, 1, 671, 1, 671, 5, 671, 10400, 8, 671, 10, 671, 12, 671, 10403, 9, 671, 1, 672, 1, 672, 1, 672, 3, 672, 10408, 8, 672, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 5, 673, 10415, 8, 673, 10, 673, 12, 673, 10418, 9, 673, 1, 674, 1, 674, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 3, 675, 10432, 8, 675, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 1, 677, 1, 677, 1, 677, 3, 677, 10443, 8, 677, 1, 678, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 1, 679, 3, 679, 10476, 8, 679, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 3, 680, 10485, 8, 680, 1, 681, 1, 681, 1, 681, 1, 681, 1, 681, 3, 681, 10492, 8, 681, 1, 682, 1, 682, 3, 682, 10496, 8, 682, 1, 682, 1, 682, 3, 682, 10500, 8, 682, 1, 682, 1, 682, 1, 683, 4, 683, 10505, 8, 683, 11, 683, 12, 683, 10506, 1, 684, 1, 684, 1, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 686, 1, 686, 1, 687, 1, 687, 3, 687, 10521, 8, 687, 1, 688, 1, 688, 1, 688, 3, 688, 10526, 8, 688, 1, 688, 1, 688, 1, 688, 3, 688, 10531, 8, 688, 1, 688, 1, 688, 3, 688, 10535, 8, 688, 3, 688, 10537, 8, 688, 1, 688, 3, 688, 10540, 8, 688, 1, 689, 1, 689, 1, 690, 4, 690, 10545, 8, 690, 11, 690, 12, 690, 10546, 1, 691, 5, 691, 10550, 8, 691, 10, 691, 12, 691, 10553, 9, 691, 1, 692, 1, 692, 1, 693, 1, 693, 1, 693, 5, 693, 10560, 8, 693, 10, 693, 12, 693, 10563, 9, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 3, 694, 10570, 8, 694, 1, 694, 3, 694, 10573, 8, 694, 1, 695, 1, 695, 1, 695, 5, 695, 10578, 8, 695, 10, 695, 12, 695, 10581, 9, 695, 1, 696, 1, 696, 1, 696, 5, 696, 10586, 8, 696, 10, 696, 12, 696, 10589, 9, 696, 1, 697, 1, 697, 1, 697, 5, 697, 10594, 8, 697, 10, 697, 12, 697, 10597, 9, 697, 1, 698, 1, 698, 1, 698, 5, 698, 10602, 8, 698, 10, 698, 12, 698, 10605, 9, 698, 1, 699, 1, 699, 1, 699, 5, 699, 10610, 8, 699, 10, 699, 12, 699, 10613, 9, 699, 1, 700, 1, 700, 3, 700, 10617, 8, 700, 1, 701, 1, 701, 3, 701, 10621, 8, 701, 1, 702, 1, 702, 3, 702, 10625, 8, 702, 1, 703, 1, 703, 3, 703, 10629, 8, 703, 1, 704, 1, 704, 3, 704, 10633, 8, 704, 1, 705, 1, 705, 3, 705, 10637, 8, 705, 1, 706, 1, 706, 3, 706, 10641, 8, 706, 1, 707, 1, 707, 1, 707, 5, 707, 10646, 8, 707, 10, 707, 12, 707, 10649, 9, 707, 1, 708, 1, 708, 1, 708, 5, 708, 10654, 8, 708, 10, 708, 12, 708, 10657, 9, 708, 1, 709, 1, 709, 3, 709, 10661, 8, 709, 1, 710, 1, 710, 3, 710, 10665, 8, 710, 1, 711, 1, 711, 3, 711, 10669, 8, 711, 1, 712, 1, 712, 1, 713, 1, 713, 1, 714, 1, 714, 1, 714, 1, 714, 3, 714, 10679, 8, 714, 1, 715, 1, 715, 1, 715, 1, 715, 3, 715, 10685, 8, 715, 1, 716, 1, 716, 5, 716, 10689, 8, 716, 10, 716, 12, 716, 10692, 9, 716, 1, 716, 3, 716, 10695, 8, 716, 1, 717, 1, 717, 1, 718, 1, 718, 1, 719, 1, 719, 1, 720, 1, 720, 1, 721, 1, 721, 1, 721, 1, 721, 3, 721, 10709, 8, 721, 1, 722, 1, 722, 1, 722, 1, 722, 3, 722, 10715, 8, 722, 1, 723, 1, 723, 1, 723, 1, 723, 3, 723, 10721, 8, 723, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 3, 724, 10733, 8, 724, 1, 724, 1, 724, 1, 724, 3, 724, 10738, 8, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 3, 724, 10746, 8, 724, 1, 724, 1, 724, 1, 724, 1, 724, 1, 724, 3, 724, 10753, 8, 724, 1, 724, 1, 724, 1, 724, 3, 724, 10758, 8, 724, 1, 725, 1, 725, 1, 726, 1, 726, 1, 727, 1, 727, 1, 728, 1, 728, 1, 729, 1, 729, 3, 729, 10770, 8, 729, 1, 730, 1, 730, 1, 730, 1, 730, 5, 730, 10776, 8, 730, 10, 730, 12, 730, 10779, 9, 730, 1, 730, 1, 730, 3, 730, 10783, 8, 730, 1, 731, 1, 731, 1, 731, 1, 732, 1, 732, 1, 732, 1, 732, 1, 732, 3, 732, 10793, 8, 732, 1, 733, 1, 733, 1, 734, 1, 734, 1, 735, 1, 735, 1, 735, 1, 735, 1, 735, 3, 735, 10804, 8, 735, 1, 736, 1, 736, 1, 736, 5, 736, 10809, 8, 736, 10, 736, 12, 736, 10812, 9, 736, 1, 737, 1, 737, 1, 737, 1, 737, 3, 737, 10818, 8, 737, 1, 738, 1, 738, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 3, 739, 10829, 8, 739, 1, 739, 3, 739, 10832, 8, 739, 3, 739, 10834, 8, 739, 1, 740, 1, 740, 3, 740, 10838, 8, 740, 1, 740, 3, 740, 10841, 8, 740, 1, 741, 1, 741, 1, 741, 1, 741, 3, 741, 10847, 8, 741, 1, 742, 1, 742, 1, 742, 1, 742, 3, 742, 10853, 8, 742, 1, 743, 1, 743, 3, 743, 10857, 8, 743, 1, 744, 1, 744, 1, 744, 1, 744, 3, 744, 10863, 8, 744, 1, 745, 1, 745, 1, 745, 1, 745, 1, 745, 1, 745, 3, 745, 10871, 8, 745, 1, 746, 1, 746, 3, 746, 10875, 8, 746, 1, 746, 1, 746, 1, 746, 1, 746, 1, 746, 1, 746, 3, 746, 10883, 8, 746, 1, 747, 1, 747, 1, 748, 1, 748, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 3, 749, 10940, 8, 749, 1, 750, 1, 750, 1, 751, 1, 751, 1, 752, 1, 752, 1, 752, 1, 752, 1, 753, 5, 753, 10951, 8, 753, 10, 753, 12, 753, 10954, 9, 753, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 1, 754, 3, 754, 10976, 8, 754, 1, 755, 1, 755, 1, 756, 1, 756, 1, 756, 1, 756, 3, 756, 10984, 8, 756, 1, 757, 1, 757, 3, 757, 10988, 8, 757, 1, 758, 1, 758, 1, 758, 1, 758, 1, 758, 1, 758, 1, 758, 1, 759, 1, 759, 1, 759, 3, 759, 11000, 8, 759, 3, 759, 11002, 8, 759, 1, 760, 1, 760, 1, 761, 4, 761, 11007, 8, 761, 11, 761, 12, 761, 11008, 1, 762, 1, 762, 1, 762, 1, 762, 1, 763, 1, 763, 1, 763, 3, 763, 11018, 8, 763, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 1, 764, 3, 764, 11036, 8, 764, 1, 764, 1, 764, 1, 765, 1, 765, 1, 765, 1, 765, 3, 765, 11044, 8, 765, 1, 766, 1, 766, 1, 767, 1, 767, 1, 767, 1, 767, 1, 767, 3, 767, 11053, 8, 767, 1, 768, 1, 768, 1, 768, 5, 768, 11058, 8, 768, 10, 768, 12, 768, 11061, 9, 768, 1, 769, 1, 769, 1, 769, 1, 770, 1, 770, 1, 771, 1, 771, 3, 771, 11070, 8, 771, 1, 772, 1, 772, 1, 773, 1, 773, 3, 773, 11076, 8, 773, 1, 774, 1, 774, 1, 775, 1, 775, 1, 775, 3, 775, 11083, 8, 775, 1, 776, 1, 776, 1, 776, 3, 776, 11088, 8, 776, 1, 777, 1, 777, 1, 777, 1, 777, 3, 777, 11094, 8, 777, 1, 778, 1, 778, 3, 778, 11098, 8, 778, 1, 779, 1, 779, 1, 780, 5, 780, 11103, 8, 780, 10, 780, 12, 780, 11106, 9, 780, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 1, 781, 3, 781, 11135, 8, 781, 1, 782, 1, 782, 1, 782, 1, 782, 1, 783, 1, 783, 1, 783, 1, 783, 1, 783, 1, 783, 1, 783, 3, 783, 11148, 8, 783, 1, 783, 1, 783, 1, 783, 1, 783, 1, 783, 1, 783, 1, 783, 3, 783, 11157, 8, 783, 1, 784, 1, 784, 3, 784, 11161, 8, 784, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 786, 1, 786, 1, 786, 1, 786, 1, 786, 1, 786, 1, 787, 1, 787, 1, 787, 3, 787, 11177, 8, 787, 1, 788, 1, 788, 1, 788, 5, 788, 11182, 8, 788, 10, 788, 12, 788, 11185, 9, 788, 1, 789, 1, 789, 1, 789, 1, 789, 1, 790, 1, 790, 1, 791, 1, 791, 1, 792, 1, 792, 3, 792, 11197, 8, 792, 1, 792, 1, 792, 1, 792, 1, 792, 5, 792, 11203, 8, 792, 10, 792, 12, 792, 11206, 9, 792, 1, 793, 1, 793, 1, 793, 1, 793, 1, 793, 1, 793, 1, 793, 1, 793, 1, 793, 1, 793, 1, 794, 1, 794, 1, 794, 1, 794, 1, 794, 5, 794, 11223, 8, 794, 10, 794, 12, 794, 11226, 9, 794, 1, 795, 1, 795, 1, 795, 3, 795, 11231, 8, 795, 1, 796, 1, 796, 1, 796, 1, 796, 1, 796, 1, 796, 1, 796, 1, 796, 1, 797, 1, 797, 3, 797, 11243, 8, 797, 1, 798, 4, 798, 11246, 8, 798, 11, 798, 12, 798, 11247, 1, 799, 1, 799, 1, 799, 1, 799, 1, 799, 1, 800, 1, 800, 1, 800, 3, 800, 11258, 8, 800, 1, 801, 1, 801, 1, 801, 1, 802, 1, 802, 1, 802, 1, 802, 1, 802, 1, 803, 1, 803, 1, 803, 1, 803, 1, 803, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 1, 804, 3, 804, 11290, 8, 804, 1, 805, 1, 805, 1, 805, 3, 805, 11295, 8, 805, 1, 806, 1, 806, 1, 806, 1, 806, 1, 806, 5, 806, 11302, 8, 806, 10, 806, 12, 806, 11305, 9, 806, 1, 806, 1, 806, 3, 806, 11309, 8, 806, 1, 807, 1, 807, 3, 807, 11313, 8, 807, 1, 808, 1, 808, 1, 808, 3, 808, 11318, 8, 808, 1, 809, 1, 809, 1, 810, 1, 810, 1, 810, 1, 810, 1, 810, 1, 810, 1, 810, 1, 810, 1, 810, 1, 811, 1, 811, 1, 811, 3, 811, 11334, 8, 811, 1, 812, 1, 812, 1, 812, 3, 812, 11339, 8, 812, 1, 812, 1, 812, 1, 813, 1, 813, 1, 814, 1, 814, 1, 814, 1, 814, 1, 814, 1, 814, 1, 814, 1, 814, 1, 814, 3, 814, 11354, 8, 814, 1, 814, 3, 814, 11357, 8, 814, 1, 814, 1, 814, 1, 815, 1, 815, 3, 815, 11363, 8, 815, 1, 816, 1, 816, 3, 816, 11367, 8, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 3, 816, 11376, 8, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 3, 816, 11384, 8, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 1, 816, 3, 816, 11393, 8, 816, 1, 816, 1, 816, 1, 816, 1, 816, 3, 816, 11399, 8, 816, 1, 817, 1, 817, 1, 818, 1, 818, 1, 818, 4, 818, 11406, 8, 818, 11, 818, 12, 818, 11407, 3, 818, 11410, 8, 818, 1, 819, 1, 819, 1, 819, 3, 819, 11415, 8, 819, 1, 820, 1, 820, 1, 820, 1, 820, 1, 821, 1, 821, 1, 821, 5, 821, 11424, 8, 821, 10, 821, 12, 821, 11427, 9, 821, 1, 822, 1, 822, 1, 822, 1, 822, 1, 822, 1, 823, 1, 823, 1, 823, 3, 823, 11437, 8, 823, 1, 824, 1, 824, 1, 824, 1, 824, 1, 824, 1, 824, 1, 824, 1, 825, 1, 825, 1, 825, 1, 826, 1, 826, 1, 826, 1, 826, 1, 826, 1, 826, 1, 826, 1, 826, 1, 826, 3, 826, 11458, 8, 826, 1, 826, 1, 826, 1, 827, 1, 827, 1, 827, 3, 827, 11465, 8, 827, 1, 828, 1, 828, 1, 828, 5, 828, 11470, 8, 828, 10, 828, 12, 828, 11473, 9, 828, 1, 829, 1, 829, 1, 829, 3, 829, 11478, 8, 829, 1, 829, 3, 829, 11481, 8, 829, 1, 830, 1, 830, 1, 830, 1, 830, 1, 830, 1, 830, 1, 830, 1, 830, 1, 830, 3, 830, 11492, 8, 830, 1, 830, 1, 830, 1, 830, 1, 830, 1, 830, 3, 830, 11499, 8, 830, 3, 830, 11501, 8, 830, 1, 830, 1, 830, 1, 831, 1, 831, 1, 831, 1, 831, 1, 831, 3, 831, 11510, 8, 831, 1, 832, 1, 832, 1, 832, 5, 832, 11515, 8, 832, 10, 832, 12, 832, 11518, 9, 832, 1, 833, 1, 833, 1, 833, 3, 833, 11523, 8, 833, 1, 834, 1, 834, 1, 834, 1, 834, 3, 834, 11529, 8, 834, 1, 835, 1, 835, 3, 835, 11533, 8, 835, 1, 836, 1, 836, 3, 836, 11537, 8, 836, 1, 836, 1, 836, 1, 836, 1, 836, 1, 836, 1, 836, 1, 837, 1, 837, 1, 838, 1, 838, 1, 838, 3, 838, 11550, 8, 838, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 1, 839, 3, 839, 11565, 8, 839, 3, 839, 11567, 8, 839, 1, 840, 1, 840, 3, 840, 11571, 8, 840, 1, 840, 1, 840, 1, 840, 1, 841, 3, 841, 11577, 8, 841, 1, 841, 1, 841, 1, 841, 3, 841, 11582, 8, 841, 1, 841, 1, 841, 3, 841, 11586, 8, 841, 1, 841, 3, 841, 11589, 8, 841, 1, 841, 3, 841, 11592, 8, 841, 1, 841, 1, 841, 1, 841, 1, 841, 1, 841, 4, 841, 11599, 8, 841, 11, 841, 12, 841, 11600, 1, 842, 3, 842, 11604, 8, 842, 1, 842, 1, 842, 3, 842, 11608, 8, 842, 1, 842, 1, 842, 3, 842, 11612, 8, 842, 3, 842, 11614, 8, 842, 1, 842, 3, 842, 11617, 8, 842, 1, 842, 3, 842, 11620, 8, 842, 1, 843, 1, 843, 1, 844, 1, 844, 1, 844, 1, 844, 3, 844, 11628, 8, 844, 1, 844, 1, 844, 1, 844, 1, 844, 1, 844, 3, 844, 11635, 8, 844, 1, 844, 1, 844, 1, 844, 1, 844, 1, 844, 3, 844, 11642, 8, 844, 1, 844, 1, 844, 1, 844, 1, 844, 3, 844, 11648, 8, 844, 3, 844, 11650, 8, 844, 1, 845, 1, 845, 1, 845, 1, 845, 1, 845, 3, 845, 11657, 8, 845, 1, 845, 1, 845, 1, 845, 3, 845, 11662, 8, 845, 1, 845, 1, 845, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 1, 846, 4, 846, 11680, 8, 846, 11, 846, 12, 846, 11681, 1, 847, 1, 847, 1, 847, 1, 847, 3, 847, 11688, 8, 847, 1, 848, 1, 848, 1, 848, 1, 848, 5, 848, 11694, 8, 848, 10, 848, 12, 848, 11697, 9, 848, 1, 848, 1, 848, 1, 849, 1, 849, 3, 849, 11703, 8, 849, 1, 850, 1, 850, 1, 850, 1, 850, 1, 851, 1, 851, 1, 851, 1, 852, 1, 852, 3, 852, 11714, 8, 852, 1, 852, 1, 852, 1, 853, 1, 853, 3, 853, 11720, 8, 853, 1, 853, 1, 853, 1, 854, 1, 854, 3, 854, 11726, 8, 854, 1, 854, 1, 854, 1, 855, 1, 855, 1, 855, 1, 855, 1, 855, 1, 855, 1, 855, 1, 855, 1, 855, 3, 855, 11739, 8, 855, 1, 855, 3, 855, 11742, 8, 855, 1, 856, 1, 856, 3, 856, 11746, 8, 856, 1, 857, 1, 857, 1, 857, 3, 857, 11751, 8, 857, 1, 858, 4, 858, 11754, 8, 858, 11, 858, 12, 858, 11755, 1, 859, 1, 859, 1, 859, 1, 859, 1, 859, 1, 860, 1, 860, 1, 860, 5, 860, 11766, 8, 860, 10, 860, 12, 860, 11769, 9, 860, 1, 861, 1, 861, 1, 861, 3, 861, 11774, 8, 861, 1, 862, 1, 862, 3, 862, 11778, 8, 862, 1, 863, 1, 863, 3, 863, 11782, 8, 863, 1, 864, 1, 864, 3, 864, 11786, 8, 864, 1, 865, 1, 865, 1, 865, 1, 866, 1, 866, 3, 866, 11793, 8, 866, 1, 867, 1, 867, 1, 868, 3, 868, 11798, 8, 868, 1, 868, 3, 868, 11801, 8, 868, 1, 868, 3, 868, 11804, 8, 868, 1, 868, 3, 868, 11807, 8, 868, 1, 868, 3, 868, 11810, 8, 868, 1, 868, 3, 868, 11813, 8, 868, 1, 868, 3, 868, 11816, 8, 868, 1, 869, 1, 869, 1, 870, 1, 870, 1, 871, 1, 871, 1, 872, 1, 872, 1, 873, 1, 873, 3, 873, 11828, 8, 873, 1, 874, 1, 874, 1, 874, 1, 874, 1, 874, 0, 1, 1252, 875, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1172, 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244, 1246, 1248, 1250, 1252, 1254, 1256, 1258, 1260, 1262, 1264, 1266, 1268, 1270, 1272, 1274, 1276, 1278, 1280, 1282, 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382, 1384, 1386, 1388, 1390, 1392, 1394, 1396, 1398, 1400, 1402, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, 1452, 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470, 1472, 1474, 1476, 1478, 1480, 1482, 1484, 1486, 1488, 1490, 1492, 1494, 1496, 1498, 1500, 1502, 1504, 1506, 1508, 1510, 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1526, 1528, 1530, 1532, 1534, 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, 1592, 1594, 1596, 1598, 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1646, 1648, 1650, 1652, 1654, 1656, 1658, 1660, 1662, 1664, 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, 1734, 1736, 1738, 1740, 1742, 1744, 1746, 1748, 0, 87, 2, 0, 195, 195, 364, 364, 1, 0, 228, 229, 1, 0, 236, 237, 1, 0, 234, 235, 1, 0, 232, 233, 1, 0, 230, 231, 1, 0, 535, 536, 1, 0, 537, 538, 1, 0, 539, 540, 2, 0, 66, 66, 318, 318, 2, 0, 99, 99, 318, 318, 1, 0, 529, 531, 2, 0, 10, 10, 94, 94, 2, 0, 133, 133, 191, 191, 2, 0, 254, 254, 332, 332, 2, 0, 162, 162, 363, 363, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 288, 288, 329, 329, 352, 352, 354, 354, 2, 0, 109, 109, 532, 532, 2, 0, 367, 367, 439, 439, 2, 0, 139, 139, 312, 312, 2, 0, 191, 191, 333, 333, 2, 0, 313, 313, 333, 333, 2, 0, 150, 150, 315, 315, 2, 0, 64, 64, 94, 94, 2, 0, 352, 352, 354, 354, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 342, 342, 345, 345, 438, 438, 3, 0, 113, 113, 284, 284, 336, 336, 2, 0, 53, 53, 78, 78, 3, 0, 173, 173, 260, 260, 262, 262, 2, 0, 9, 9, 94, 94, 5, 0, 30, 30, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 92, 92, 226, 226, 2, 0, 341, 341, 414, 414, 1, 0, 448, 449, 2, 0, 92, 92, 414, 414, 2, 0, 135, 135, 145, 145, 3, 0, 66, 66, 99, 99, 318, 318, 4, 0, 163, 163, 185, 185, 283, 283, 353, 353, 3, 0, 321, 321, 357, 357, 445, 445, 2, 0, 167, 167, 314, 314, 2, 0, 64, 64, 68, 68, 10, 0, 46, 46, 88, 88, 182, 182, 202, 202, 241, 241, 352, 352, 354, 354, 357, 358, 369, 369, 521, 523, 5, 0, 212, 212, 329, 329, 350, 350, 361, 361, 455, 456, 2, 0, 37, 37, 55, 55, 2, 0, 10, 10, 53, 53, 4, 0, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 137, 137, 242, 242, 2, 0, 356, 356, 380, 380, 2, 0, 151, 151, 254, 254, 1, 0, 31, 32, 2, 0, 60, 60, 96, 96, 2, 0, 99, 99, 349, 349, 2, 0, 201, 201, 334, 334, 1, 0, 527, 528, 2, 0, 213, 213, 254, 254, 2, 0, 30, 30, 56, 56, 2, 0, 320, 320, 414, 414, 2, 0, 207, 207, 268, 268, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 360, 360, 477, 477, 2, 0, 391, 392, 406, 406, 1, 0, 391, 392, 1, 0, 418, 419, 1, 0, 18, 19, 2, 0, 117, 117, 122, 122, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 1, 0, 12, 13, 3, 0, 9, 9, 14, 14, 27, 27, 3, 0, 39, 39, 73, 73, 95, 95, 2, 0, 166, 166, 188, 188, 2, 0, 304, 304, 450, 450, 2, 0, 208, 208, 289, 289, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 10, 0, 124, 124, 129, 228, 238, 386, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 478, 488, 547, 548, 3, 0, 106, 123, 125, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 167, 167, 507, 507, 1, 0, 512, 517, 2, 0, 144, 144, 210, 210, 36, 0, 33, 33, 35, 35, 43, 43, 45, 45, 53, 53, 57, 57, 61, 61, 116, 116, 123, 123, 130, 130, 144, 144, 153, 153, 157, 157, 161, 161, 167, 167, 172, 172, 207, 207, 210, 210, 241, 241, 249, 249, 265, 265, 268, 269, 279, 279, 293, 293, 307, 307, 313, 313, 319, 319, 323, 324, 333, 333, 360, 360, 433, 434, 477, 477, 490, 502, 504, 504, 506, 518, 520, 520, 13157, 0, 1753, 1, 0, 0, 0, 2, 1758, 1, 0, 0, 0, 4, 1760, 1, 0, 0, 0, 6, 1881, 1, 0, 0, 0, 8, 1883, 1, 0, 0, 0, 10, 1887, 1, 0, 0, 0, 12, 1890, 1, 0, 0, 0, 14, 1898, 1, 0, 0, 0, 16, 1903, 1, 0, 0, 0, 18, 1909, 1, 0, 0, 0, 20, 1947, 1, 0, 0, 0, 22, 1959, 1, 0, 0, 0, 24, 1961, 1, 0, 0, 0, 26, 1969, 1, 0, 0, 0, 28, 1981, 1, 0, 0, 0, 30, 1983, 1, 0, 0, 0, 32, 1992, 1, 0, 0, 0, 34, 2020, 1, 0, 0, 0, 36, 2022, 1, 0, 0, 0, 38, 2070, 1, 0, 0, 0, 40, 2072, 1, 0, 0, 0, 42, 2080, 1, 0, 0, 0, 44, 2087, 1, 0, 0, 0, 46, 2089, 1, 0, 0, 0, 48, 2104, 1, 0, 0, 0, 50, 2111, 1, 0, 0, 0, 52, 2120, 1, 0, 0, 0, 54, 2122, 1, 0, 0, 0, 56, 2136, 1, 0, 0, 0, 58, 2140, 1, 0, 0, 0, 60, 2176, 1, 0, 0, 0, 62, 2178, 1, 0, 0, 0, 64, 2186, 1, 0, 0, 0, 66, 2196, 1, 0, 0, 0, 68, 2203, 1, 0, 0, 0, 70, 2209, 1, 0, 0, 0, 72, 2215, 1, 0, 0, 0, 74, 2233, 1, 0, 0, 0, 76, 2237, 1, 0, 0, 0, 78, 2241, 1, 0, 0, 0, 80, 2245, 1, 0, 0, 0, 82, 2247, 1, 0, 0, 0, 84, 2258, 1, 0, 0, 0, 86, 2262, 1, 0, 0, 0, 88, 2267, 1, 0, 0, 0, 90, 2272, 1, 0, 0, 0, 92, 2274, 1, 0, 0, 0, 94, 2286, 1, 0, 0, 0, 96, 2293, 1, 0, 0, 0, 98, 2295, 1, 0, 0, 0, 100, 2297, 1, 0, 0, 0, 102, 2299, 1, 0, 0, 0, 104, 2435, 1, 0, 0, 0, 106, 2437, 1, 0, 0, 0, 108, 2454, 1, 0, 0, 0, 110, 2456, 1, 0, 0, 0, 112, 2470, 1, 0, 0, 0, 114, 2472, 1, 0, 0, 0, 116, 2488, 1, 0, 0, 0, 118, 2490, 1, 0, 0, 0, 120, 2711, 1, 0, 0, 0, 122, 2718, 1, 0, 0, 0, 124, 2720, 1, 0, 0, 0, 126, 2722, 1, 0, 0, 0, 128, 2725, 1, 0, 0, 0, 130, 2734, 1, 0, 0, 0, 132, 2736, 1, 0, 0, 0, 134, 2740, 1, 0, 0, 0, 136, 2743, 1, 0, 0, 0, 138, 2751, 1, 0, 0, 0, 140, 2763, 1, 0, 0, 0, 142, 2780, 1, 0, 0, 0, 144, 2808, 1, 0, 0, 0, 146, 2810, 1, 0, 0, 0, 148, 2813, 1, 0, 0, 0, 150, 2821, 1, 0, 0, 0, 152, 2826, 1, 0, 0, 0, 154, 2863, 1, 0, 0, 0, 156, 2865, 1, 0, 0, 0, 158, 2907, 1, 0, 0, 0, 160, 2909, 1, 0, 0, 0, 162, 2911, 1, 0, 0, 0, 164, 2916, 1, 0, 0, 0, 166, 2923, 1, 0, 0, 0, 168, 2928, 1, 0, 0, 0, 170, 2970, 1, 0, 0, 0, 172, 2972, 1, 0, 0, 0, 174, 2975, 1, 0, 0, 0, 176, 2980, 1, 0, 0, 0, 178, 2982, 1, 0, 0, 0, 180, 2990, 1, 0, 0, 0, 182, 3001, 1, 0, 0, 0, 184, 3003, 1, 0, 0, 0, 186, 3011, 1, 0, 0, 0, 188, 3013, 1, 0, 0, 0, 190, 3096, 1, 0, 0, 0, 192, 3098, 1, 0, 0, 0, 194, 3100, 1, 0, 0, 0, 196, 3102, 1, 0, 0, 0, 198, 3106, 1, 0, 0, 0, 200, 3114, 1, 0, 0, 0, 202, 3125, 1, 0, 0, 0, 204, 3129, 1, 0, 0, 0, 206, 3131, 1, 0, 0, 0, 208, 3152, 1, 0, 0, 0, 210, 3155, 1, 0, 0, 0, 212, 3164, 1, 0, 0, 0, 214, 3174, 1, 0, 0, 0, 216, 3195, 1, 0, 0, 0, 218, 3255, 1, 0, 0, 0, 220, 3257, 1, 0, 0, 0, 222, 3266, 1, 0, 0, 0, 224, 3271, 1, 0, 0, 0, 226, 3273, 1, 0, 0, 0, 228, 3276, 1, 0, 0, 0, 230, 3284, 1, 0, 0, 0, 232, 3287, 1, 0, 0, 0, 234, 3294, 1, 0, 0, 0, 236, 3382, 1, 0, 0, 0, 238, 3384, 1, 0, 0, 0, 240, 3387, 1, 0, 0, 0, 242, 3391, 1, 0, 0, 0, 244, 3395, 1, 0, 0, 0, 246, 3403, 1, 0, 0, 0, 248, 3411, 1, 0, 0, 0, 250, 3416, 1, 0, 0, 0, 252, 3419, 1, 0, 0, 0, 254, 3427, 1, 0, 0, 0, 256, 3437, 1, 0, 0, 0, 258, 3450, 1, 0, 0, 0, 260, 3452, 1, 0, 0, 0, 262, 3456, 1, 0, 0, 0, 264, 3469, 1, 0, 0, 0, 266, 3471, 1, 0, 0, 0, 268, 3476, 1, 0, 0, 0, 270, 3478, 1, 0, 0, 0, 272, 3485, 1, 0, 0, 0, 274, 3516, 1, 0, 0, 0, 276, 3518, 1, 0, 0, 0, 278, 3527, 1, 0, 0, 0, 280, 3529, 1, 0, 0, 0, 282, 3538, 1, 0, 0, 0, 284, 3542, 1, 0, 0, 0, 286, 3550, 1, 0, 0, 0, 288, 3555, 1, 0, 0, 0, 290, 3559, 1, 0, 0, 0, 292, 3578, 1, 0, 0, 0, 294, 3588, 1, 0, 0, 0, 296, 3602, 1, 0, 0, 0, 298, 3618, 1, 0, 0, 0, 300, 3624, 1, 0, 0, 0, 302, 3639, 1, 0, 0, 0, 304, 3652, 1, 0, 0, 0, 306, 3654, 1, 0, 0, 0, 308, 3664, 1, 0, 0, 0, 310, 3676, 1, 0, 0, 0, 312, 3684, 1, 0, 0, 0, 314, 3686, 1, 0, 0, 0, 316, 3691, 1, 0, 0, 0, 318, 3729, 1, 0, 0, 0, 320, 3731, 1, 0, 0, 0, 322, 3739, 1, 0, 0, 0, 324, 3741, 1, 0, 0, 0, 326, 3749, 1, 0, 0, 0, 328, 3771, 1, 0, 0, 0, 330, 3773, 1, 0, 0, 0, 332, 3777, 1, 0, 0, 0, 334, 3784, 1, 0, 0, 0, 336, 3786, 1, 0, 0, 0, 338, 3788, 1, 0, 0, 0, 340, 3790, 1, 0, 0, 0, 342, 3801, 1, 0, 0, 0, 344, 3804, 1, 0, 0, 0, 346, 3818, 1, 0, 0, 0, 348, 3828, 1, 0, 0, 0, 350, 3830, 1, 0, 0, 0, 352, 3839, 1, 0, 0, 0, 354, 3842, 1, 0, 0, 0, 356, 3947, 1, 0, 0, 0, 358, 3949, 1, 0, 0, 0, 360, 3968, 1, 0, 0, 0, 362, 3971, 1, 0, 0, 0, 364, 3975, 1, 0, 0, 0, 366, 3994, 1, 0, 0, 0, 368, 3996, 1, 0, 0, 0, 370, 4001, 1, 0, 0, 0, 372, 4009, 1, 0, 0, 0, 374, 4014, 1, 0, 0, 0, 376, 4029, 1, 0, 0, 0, 378, 4031, 1, 0, 0, 0, 380, 4034, 1, 0, 0, 0, 382, 4036, 1, 0, 0, 0, 384, 4038, 1, 0, 0, 0, 386, 4057, 1, 0, 0, 0, 388, 4060, 1, 0, 0, 0, 390, 4065, 1, 0, 0, 0, 392, 4067, 1, 0, 0, 0, 394, 4116, 1, 0, 0, 0, 396, 4118, 1, 0, 0, 0, 398, 4136, 1, 0, 0, 0, 400, 4138, 1, 0, 0, 0, 402, 4143, 1, 0, 0, 0, 404, 4158, 1, 0, 0, 0, 406, 4160, 1, 0, 0, 0, 408, 4169, 1, 0, 0, 0, 410, 4189, 1, 0, 0, 0, 412, 4203, 1, 0, 0, 0, 414, 4237, 1, 0, 0, 0, 416, 4267, 1, 0, 0, 0, 418, 4269, 1, 0, 0, 0, 420, 4274, 1, 0, 0, 0, 422, 4280, 1, 0, 0, 0, 424, 4283, 1, 0, 0, 0, 426, 4286, 1, 0, 0, 0, 428, 4292, 1, 0, 0, 0, 430, 4295, 1, 0, 0, 0, 432, 4297, 1, 0, 0, 0, 434, 4306, 1, 0, 0, 0, 436, 4362, 1, 0, 0, 0, 438, 4368, 1, 0, 0, 0, 440, 4370, 1, 0, 0, 0, 442, 4376, 1, 0, 0, 0, 444, 4378, 1, 0, 0, 0, 446, 4393, 1, 0, 0, 0, 448, 4395, 1, 0, 0, 0, 450, 4399, 1, 0, 0, 0, 452, 4403, 1, 0, 0, 0, 454, 4410, 1, 0, 0, 0, 456, 4412, 1, 0, 0, 0, 458, 4414, 1, 0, 0, 0, 460, 4416, 1, 0, 0, 0, 462, 4422, 1, 0, 0, 0, 464, 4424, 1, 0, 0, 0, 466, 4426, 1, 0, 0, 0, 468, 4435, 1, 0, 0, 0, 470, 4439, 1, 0, 0, 0, 472, 4452, 1, 0, 0, 0, 474, 4454, 1, 0, 0, 0, 476, 4460, 1, 0, 0, 0, 478, 4474, 1, 0, 0, 0, 480, 4500, 1, 0, 0, 0, 482, 4502, 1, 0, 0, 0, 484, 4510, 1, 0, 0, 0, 486, 4516, 1, 0, 0, 0, 488, 4524, 1, 0, 0, 0, 490, 4535, 1, 0, 0, 0, 492, 4537, 1, 0, 0, 0, 494, 4649, 1, 0, 0, 0, 496, 4651, 1, 0, 0, 0, 498, 4655, 1, 0, 0, 0, 500, 4663, 1, 0, 0, 0, 502, 4674, 1, 0, 0, 0, 504, 4676, 1, 0, 0, 0, 506, 4680, 1, 0, 0, 0, 508, 4688, 1, 0, 0, 0, 510, 4692, 1, 0, 0, 0, 512, 4694, 1, 0, 0, 0, 514, 4724, 1, 0, 0, 0, 516, 4726, 1, 0, 0, 0, 518, 4730, 1, 0, 0, 0, 520, 4748, 1, 0, 0, 0, 522, 4787, 1, 0, 0, 0, 524, 4789, 1, 0, 0, 0, 526, 4791, 1, 0, 0, 0, 528, 4800, 1, 0, 0, 0, 530, 4802, 1, 0, 0, 0, 532, 4804, 1, 0, 0, 0, 534, 4829, 1, 0, 0, 0, 536, 4831, 1, 0, 0, 0, 538, 4851, 1, 0, 0, 0, 540, 4853, 1, 0, 0, 0, 542, 5239, 1, 0, 0, 0, 544, 5241, 1, 0, 0, 0, 546, 5273, 1, 0, 0, 0, 548, 5306, 1, 0, 0, 0, 550, 5308, 1, 0, 0, 0, 552, 5310, 1, 0, 0, 0, 554, 5318, 1, 0, 0, 0, 556, 5322, 1, 0, 0, 0, 558, 5326, 1, 0, 0, 0, 560, 5332, 1, 0, 0, 0, 562, 5336, 1, 0, 0, 0, 564, 5344, 1, 0, 0, 0, 566, 5364, 1, 0, 0, 0, 568, 5535, 1, 0, 0, 0, 570, 5539, 1, 0, 0, 0, 572, 5650, 1, 0, 0, 0, 574, 5652, 1, 0, 0, 0, 576, 5657, 1, 0, 0, 0, 578, 5663, 1, 0, 0, 0, 580, 5750, 1, 0, 0, 0, 582, 5752, 1, 0, 0, 0, 584, 5754, 1, 0, 0, 0, 586, 5756, 1, 0, 0, 0, 588, 5786, 1, 0, 0, 0, 590, 5804, 1, 0, 0, 0, 592, 5806, 1, 0, 0, 0, 594, 5814, 1, 0, 0, 0, 596, 5816, 1, 0, 0, 0, 598, 5840, 1, 0, 0, 0, 600, 5900, 1, 0, 0, 0, 602, 5902, 1, 0, 0, 0, 604, 5913, 1, 0, 0, 0, 606, 5915, 1, 0, 0, 0, 608, 5919, 1, 0, 0, 0, 610, 5952, 1, 0, 0, 0, 612, 5954, 1, 0, 0, 0, 614, 5958, 1, 0, 0, 0, 616, 5962, 1, 0, 0, 0, 618, 5971, 1, 0, 0, 0, 620, 5983, 1, 0, 0, 0, 622, 6015, 1, 0, 0, 0, 624, 6017, 1, 0, 0, 0, 626, 6019, 1, 0, 0, 0, 628, 6056, 1, 0, 0, 0, 630, 6058, 1, 0, 0, 0, 632, 6060, 1, 0, 0, 0, 634, 6062, 1, 0, 0, 0, 636, 6065, 1, 0, 0, 0, 638, 6096, 1, 0, 0, 0, 640, 6109, 1, 0, 0, 0, 642, 6111, 1, 0, 0, 0, 644, 6116, 1, 0, 0, 0, 646, 6124, 1, 0, 0, 0, 648, 6127, 1, 0, 0, 0, 650, 6129, 1, 0, 0, 0, 652, 6135, 1, 0, 0, 0, 654, 6137, 1, 0, 0, 0, 656, 6164, 1, 0, 0, 0, 658, 6175, 1, 0, 0, 0, 660, 6178, 1, 0, 0, 0, 662, 6184, 1, 0, 0, 0, 664, 6192, 1, 0, 0, 0, 666, 6208, 1, 0, 0, 0, 668, 6210, 1, 0, 0, 0, 670, 6226, 1, 0, 0, 0, 672, 6228, 1, 0, 0, 0, 674, 6244, 1, 0, 0, 0, 676, 6246, 1, 0, 0, 0, 678, 6252, 1, 0, 0, 0, 680, 6273, 1, 0, 0, 0, 682, 6282, 1, 0, 0, 0, 684, 6284, 1, 0, 0, 0, 686, 6286, 1, 0, 0, 0, 688, 6300, 1, 0, 0, 0, 690, 6302, 1, 0, 0, 0, 692, 6307, 1, 0, 0, 0, 694, 6309, 1, 0, 0, 0, 696, 6324, 1, 0, 0, 0, 698, 6332, 1, 0, 0, 0, 700, 6335, 1, 0, 0, 0, 702, 6344, 1, 0, 0, 0, 704, 6383, 1, 0, 0, 0, 706, 6410, 1, 0, 0, 0, 708, 6412, 1, 0, 0, 0, 710, 6424, 1, 0, 0, 0, 712, 6427, 1, 0, 0, 0, 714, 6430, 1, 0, 0, 0, 716, 6438, 1, 0, 0, 0, 718, 6450, 1, 0, 0, 0, 720, 6453, 1, 0, 0, 0, 722, 6457, 1, 0, 0, 0, 724, 6486, 1, 0, 0, 0, 726, 6488, 1, 0, 0, 0, 728, 6497, 1, 0, 0, 0, 730, 6528, 1, 0, 0, 0, 732, 6535, 1, 0, 0, 0, 734, 6540, 1, 0, 0, 0, 736, 6548, 1, 0, 0, 0, 738, 6551, 1, 0, 0, 0, 740, 6555, 1, 0, 0, 0, 742, 6562, 1, 0, 0, 0, 744, 6601, 1, 0, 0, 0, 746, 6607, 1, 0, 0, 0, 748, 6609, 1, 0, 0, 0, 750, 6612, 1, 0, 0, 0, 752, 6659, 1, 0, 0, 0, 754, 6677, 1, 0, 0, 0, 756, 6689, 1, 0, 0, 0, 758, 6706, 1, 0, 0, 0, 760, 6708, 1, 0, 0, 0, 762, 6716, 1, 0, 0, 0, 764, 6730, 1, 0, 0, 0, 766, 7123, 1, 0, 0, 0, 768, 7125, 1, 0, 0, 0, 770, 7197, 1, 0, 0, 0, 772, 7199, 1, 0, 0, 0, 774, 7386, 1, 0, 0, 0, 776, 7388, 1, 0, 0, 0, 778, 7396, 1, 0, 0, 0, 780, 7412, 1, 0, 0, 0, 782, 7419, 1, 0, 0, 0, 784, 7421, 1, 0, 0, 0, 786, 7614, 1, 0, 0, 0, 788, 7616, 1, 0, 0, 0, 790, 7625, 1, 0, 0, 0, 792, 7633, 1, 0, 0, 0, 794, 7673, 1, 0, 0, 0, 796, 7675, 1, 0, 0, 0, 798, 7685, 1, 0, 0, 0, 800, 7693, 1, 0, 0, 0, 802, 7773, 1, 0, 0, 0, 804, 7775, 1, 0, 0, 0, 806, 7801, 1, 0, 0, 0, 808, 7804, 1, 0, 0, 0, 810, 7820, 1, 0, 0, 0, 812, 7822, 1, 0, 0, 0, 814, 7824, 1, 0, 0, 0, 816, 7826, 1, 0, 0, 0, 818, 7828, 1, 0, 0, 0, 820, 7833, 1, 0, 0, 0, 822, 7836, 1, 0, 0, 0, 824, 7843, 1, 0, 0, 0, 826, 7910, 1, 0, 0, 0, 828, 7912, 1, 0, 0, 0, 830, 7924, 1, 0, 0, 0, 832, 7926, 1, 0, 0, 0, 834, 7936, 1, 0, 0, 0, 836, 7938, 1, 0, 0, 0, 838, 7944, 1, 0, 0, 0, 840, 7976, 1, 0, 0, 0, 842, 7983, 1, 0, 0, 0, 844, 7986, 1, 0, 0, 0, 846, 7995, 1, 0, 0, 0, 848, 7998, 1, 0, 0, 0, 850, 8002, 1, 0, 0, 0, 852, 8019, 1, 0, 0, 0, 854, 8021, 1, 0, 0, 0, 856, 8023, 1, 0, 0, 0, 858, 8039, 1, 0, 0, 0, 860, 8045, 1, 0, 0, 0, 862, 8053, 1, 0, 0, 0, 864, 8055, 1, 0, 0, 0, 866, 8061, 1, 0, 0, 0, 868, 8066, 1, 0, 0, 0, 870, 8075, 1, 0, 0, 0, 872, 8101, 1, 0, 0, 0, 874, 8103, 1, 0, 0, 0, 876, 8173, 1, 0, 0, 0, 878, 8175, 1, 0, 0, 0, 880, 8177, 1, 0, 0, 0, 882, 8208, 1, 0, 0, 0, 884, 8210, 1, 0, 0, 0, 886, 8221, 1, 0, 0, 0, 888, 8250, 1, 0, 0, 0, 890, 8266, 1, 0, 0, 0, 892, 8268, 1, 0, 0, 0, 894, 8276, 1, 0, 0, 0, 896, 8278, 1, 0, 0, 0, 898, 8284, 1, 0, 0, 0, 900, 8288, 1, 0, 0, 0, 902, 8290, 1, 0, 0, 0, 904, 8292, 1, 0, 0, 0, 906, 8303, 1, 0, 0, 0, 908, 8305, 1, 0, 0, 0, 910, 8309, 1, 0, 0, 0, 912, 8313, 1, 0, 0, 0, 914, 8318, 1, 0, 0, 0, 916, 8320, 1, 0, 0, 0, 918, 8322, 1, 0, 0, 0, 920, 8326, 1, 0, 0, 0, 922, 8330, 1, 0, 0, 0, 924, 8338, 1, 0, 0, 0, 926, 8358, 1, 0, 0, 0, 928, 8369, 1, 0, 0, 0, 930, 8371, 1, 0, 0, 0, 932, 8379, 1, 0, 0, 0, 934, 8385, 1, 0, 0, 0, 936, 8389, 1, 0, 0, 0, 938, 8391, 1, 0, 0, 0, 940, 8399, 1, 0, 0, 0, 942, 8407, 1, 0, 0, 0, 944, 8432, 1, 0, 0, 0, 946, 8434, 1, 0, 0, 0, 948, 8438, 1, 0, 0, 0, 950, 8447, 1, 0, 0, 0, 952, 8459, 1, 0, 0, 0, 954, 8468, 1, 0, 0, 0, 956, 8480, 1, 0, 0, 0, 958, 8482, 1, 0, 0, 0, 960, 8490, 1, 0, 0, 0, 962, 8493, 1, 0, 0, 0, 964, 8517, 1, 0, 0, 0, 966, 8519, 1, 0, 0, 0, 968, 8523, 1, 0, 0, 0, 970, 8537, 1, 0, 0, 0, 972, 8540, 1, 0, 0, 0, 974, 8551, 1, 0, 0, 0, 976, 8567, 1, 0, 0, 0, 978, 8569, 1, 0, 0, 0, 980, 8574, 1, 0, 0, 0, 982, 8577, 1, 0, 0, 0, 984, 8592, 1, 0, 0, 0, 986, 8618, 1, 0, 0, 0, 988, 8620, 1, 0, 0, 0, 990, 8623, 1, 0, 0, 0, 992, 8631, 1, 0, 0, 0, 994, 8639, 1, 0, 0, 0, 996, 8648, 1, 0, 0, 0, 998, 8656, 1, 0, 0, 0, 1000, 8660, 1, 0, 0, 0, 1002, 8670, 1, 0, 0, 0, 1004, 8701, 1, 0, 0, 0, 1006, 8705, 1, 0, 0, 0, 1008, 8752, 1, 0, 0, 0, 1010, 8767, 1, 0, 0, 0, 1012, 8769, 1, 0, 0, 0, 1014, 8773, 1, 0, 0, 0, 1016, 8779, 1, 0, 0, 0, 1018, 8787, 1, 0, 0, 0, 1020, 8804, 1, 0, 0, 0, 1022, 8812, 1, 0, 0, 0, 1024, 8829, 1, 0, 0, 0, 1026, 8831, 1, 0, 0, 0, 1028, 8833, 1, 0, 0, 0, 1030, 8842, 1, 0, 0, 0, 1032, 8860, 1, 0, 0, 0, 1034, 8862, 1, 0, 0, 0, 1036, 8864, 1, 0, 0, 0, 1038, 8866, 1, 0, 0, 0, 1040, 8874, 1, 0, 0, 0, 1042, 8876, 1, 0, 0, 0, 1044, 8878, 1, 0, 0, 0, 1046, 8882, 1, 0, 0, 0, 1048, 8890, 1, 0, 0, 0, 1050, 8911, 1, 0, 0, 0, 1052, 8913, 1, 0, 0, 0, 1054, 8915, 1, 0, 0, 0, 1056, 8921, 1, 0, 0, 0, 1058, 8938, 1, 0, 0, 0, 1060, 8947, 1, 0, 0, 0, 1062, 8949, 1, 0, 0, 0, 1064, 8956, 1, 0, 0, 0, 1066, 8960, 1, 0, 0, 0, 1068, 8962, 1, 0, 0, 0, 1070, 8964, 1, 0, 0, 0, 1072, 8966, 1, 0, 0, 0, 1074, 8973, 1, 0, 0, 0, 1076, 8990, 1, 0, 0, 0, 1078, 8992, 1, 0, 0, 0, 1080, 8995, 1, 0, 0, 0, 1082, 9000, 1, 0, 0, 0, 1084, 9005, 1, 0, 0, 0, 1086, 9011, 1, 0, 0, 0, 1088, 9018, 1, 0, 0, 0, 1090, 9020, 1, 0, 0, 0, 1092, 9023, 1, 0, 0, 0, 1094, 9027, 1, 0, 0, 0, 1096, 9034, 1, 0, 0, 0, 1098, 9046, 1, 0, 0, 0, 1100, 9049, 1, 0, 0, 0, 1102, 9063, 1, 0, 0, 0, 1104, 9066, 1, 0, 0, 0, 1106, 9135, 1, 0, 0, 0, 1108, 9159, 1, 0, 0, 0, 1110, 9168, 1, 0, 0, 0, 1112, 9182, 1, 0, 0, 0, 1114, 9184, 1, 0, 0, 0, 1116, 9195, 1, 0, 0, 0, 1118, 9218, 1, 0, 0, 0, 1120, 9221, 1, 0, 0, 0, 1122, 9266, 1, 0, 0, 0, 1124, 9268, 1, 0, 0, 0, 1126, 9276, 1, 0, 0, 0, 1128, 9284, 1, 0, 0, 0, 1130, 9291, 1, 0, 0, 0, 1132, 9299, 1, 0, 0, 0, 1134, 9316, 1, 0, 0, 0, 1136, 9318, 1, 0, 0, 0, 1138, 9322, 1, 0, 0, 0, 1140, 9330, 1, 0, 0, 0, 1142, 9335, 1, 0, 0, 0, 1144, 9338, 1, 0, 0, 0, 1146, 9341, 1, 0, 0, 0, 1148, 9348, 1, 0, 0, 0, 1150, 9350, 1, 0, 0, 0, 1152, 9358, 1, 0, 0, 0, 1154, 9363, 1, 0, 0, 0, 1156, 9384, 1, 0, 0, 0, 1158, 9392, 1, 0, 0, 0, 1160, 9402, 1, 0, 0, 0, 1162, 9414, 1, 0, 0, 0, 1164, 9416, 1, 0, 0, 0, 1166, 9430, 1, 0, 0, 0, 1168, 9450, 1, 0, 0, 0, 1170, 9459, 1, 0, 0, 0, 1172, 9477, 1, 0, 0, 0, 1174, 9483, 1, 0, 0, 0, 1176, 9485, 1, 0, 0, 0, 1178, 9492, 1, 0, 0, 0, 1180, 9520, 1, 0, 0, 0, 1182, 9522, 1, 0, 0, 0, 1184, 9528, 1, 0, 0, 0, 1186, 9532, 1, 0, 0, 0, 1188, 9534, 1, 0, 0, 0, 1190, 9542, 1, 0, 0, 0, 1192, 9546, 1, 0, 0, 0, 1194, 9553, 1, 0, 0, 0, 1196, 9570, 1, 0, 0, 0, 1198, 9572, 1, 0, 0, 0, 1200, 9574, 1, 0, 0, 0, 1202, 9584, 1, 0, 0, 0, 1204, 9592, 1, 0, 0, 0, 1206, 9619, 1, 0, 0, 0, 1208, 9621, 1, 0, 0, 0, 1210, 9628, 1, 0, 0, 0, 1212, 9631, 1, 0, 0, 0, 1214, 9633, 1, 0, 0, 0, 1216, 9637, 1, 0, 0, 0, 1218, 9645, 1, 0, 0, 0, 1220, 9653, 1, 0, 0, 0, 1222, 9661, 1, 0, 0, 0, 1224, 9670, 1, 0, 0, 0, 1226, 9674, 1, 0, 0, 0, 1228, 9678, 1, 0, 0, 0, 1230, 9704, 1, 0, 0, 0, 1232, 9718, 1, 0, 0, 0, 1234, 9738, 1, 0, 0, 0, 1236, 9748, 1, 0, 0, 0, 1238, 9752, 1, 0, 0, 0, 1240, 9760, 1, 0, 0, 0, 1242, 9768, 1, 0, 0, 0, 1244, 9774, 1, 0, 0, 0, 1246, 9778, 1, 0, 0, 0, 1248, 9785, 1, 0, 0, 0, 1250, 9790, 1, 0, 0, 0, 1252, 9805, 1, 0, 0, 0, 1254, 9885, 1, 0, 0, 0, 1256, 9887, 1, 0, 0, 0, 1258, 9889, 1, 0, 0, 0, 1260, 9928, 1, 0, 0, 0, 1262, 9932, 1, 0, 0, 0, 1264, 10118, 1, 0, 0, 0, 1266, 10125, 1, 0, 0, 0, 1268, 10137, 1, 0, 0, 0, 1270, 10139, 1, 0, 0, 0, 1272, 10144, 1, 0, 0, 0, 1274, 10152, 1, 0, 0, 0, 1276, 10157, 1, 0, 0, 0, 1278, 10163, 1, 0, 0, 0, 1280, 10180, 1, 0, 0, 0, 1282, 10182, 1, 0, 0, 0, 1284, 10185, 1, 0, 0, 0, 1286, 10191, 1, 0, 0, 0, 1288, 10197, 1, 0, 0, 0, 1290, 10200, 1, 0, 0, 0, 1292, 10208, 1, 0, 0, 0, 1294, 10212, 1, 0, 0, 0, 1296, 10217, 1, 0, 0, 0, 1298, 10232, 1, 0, 0, 0, 1300, 10234, 1, 0, 0, 0, 1302, 10253, 1, 0, 0, 0, 1304, 10261, 1, 0, 0, 0, 1306, 10270, 1, 0, 0, 0, 1308, 10272, 1, 0, 0, 0, 1310, 10293, 1, 0, 0, 0, 1312, 10295, 1, 0, 0, 0, 1314, 10302, 1, 0, 0, 0, 1316, 10308, 1, 0, 0, 0, 1318, 10312, 1, 0, 0, 0, 1320, 10314, 1, 0, 0, 0, 1322, 10322, 1, 0, 0, 0, 1324, 10330, 1, 0, 0, 0, 1326, 10344, 1, 0, 0, 0, 1328, 10346, 1, 0, 0, 0, 1330, 10354, 1, 0, 0, 0, 1332, 10362, 1, 0, 0, 0, 1334, 10375, 1, 0, 0, 0, 1336, 10379, 1, 0, 0, 0, 1338, 10381, 1, 0, 0, 0, 1340, 10394, 1, 0, 0, 0, 1342, 10396, 1, 0, 0, 0, 1344, 10404, 1, 0, 0, 0, 1346, 10411, 1, 0, 0, 0, 1348, 10419, 1, 0, 0, 0, 1350, 10431, 1, 0, 0, 0, 1352, 10433, 1, 0, 0, 0, 1354, 10435, 1, 0, 0, 0, 1356, 10444, 1, 0, 0, 0, 1358, 10475, 1, 0, 0, 0, 1360, 10484, 1, 0, 0, 0, 1362, 10491, 1, 0, 0, 0, 1364, 10493, 1, 0, 0, 0, 1366, 10504, 1, 0, 0, 0, 1368, 10508, 1, 0, 0, 0, 1370, 10513, 1, 0, 0, 0, 1372, 10516, 1, 0, 0, 0, 1374, 10518, 1, 0, 0, 0, 1376, 10539, 1, 0, 0, 0, 1378, 10541, 1, 0, 0, 0, 1380, 10544, 1, 0, 0, 0, 1382, 10551, 1, 0, 0, 0, 1384, 10554, 1, 0, 0, 0, 1386, 10556, 1, 0, 0, 0, 1388, 10572, 1, 0, 0, 0, 1390, 10574, 1, 0, 0, 0, 1392, 10582, 1, 0, 0, 0, 1394, 10590, 1, 0, 0, 0, 1396, 10598, 1, 0, 0, 0, 1398, 10606, 1, 0, 0, 0, 1400, 10614, 1, 0, 0, 0, 1402, 10618, 1, 0, 0, 0, 1404, 10622, 1, 0, 0, 0, 1406, 10626, 1, 0, 0, 0, 1408, 10630, 1, 0, 0, 0, 1410, 10634, 1, 0, 0, 0, 1412, 10638, 1, 0, 0, 0, 1414, 10642, 1, 0, 0, 0, 1416, 10650, 1, 0, 0, 0, 1418, 10658, 1, 0, 0, 0, 1420, 10662, 1, 0, 0, 0, 1422, 10666, 1, 0, 0, 0, 1424, 10670, 1, 0, 0, 0, 1426, 10672, 1, 0, 0, 0, 1428, 10678, 1, 0, 0, 0, 1430, 10684, 1, 0, 0, 0, 1432, 10694, 1, 0, 0, 0, 1434, 10696, 1, 0, 0, 0, 1436, 10698, 1, 0, 0, 0, 1438, 10700, 1, 0, 0, 0, 1440, 10702, 1, 0, 0, 0, 1442, 10708, 1, 0, 0, 0, 1444, 10714, 1, 0, 0, 0, 1446, 10720, 1, 0, 0, 0, 1448, 10757, 1, 0, 0, 0, 1450, 10759, 1, 0, 0, 0, 1452, 10761, 1, 0, 0, 0, 1454, 10763, 1, 0, 0, 0, 1456, 10765, 1, 0, 0, 0, 1458, 10767, 1, 0, 0, 0, 1460, 10782, 1, 0, 0, 0, 1462, 10784, 1, 0, 0, 0, 1464, 10792, 1, 0, 0, 0, 1466, 10794, 1, 0, 0, 0, 1468, 10796, 1, 0, 0, 0, 1470, 10803, 1, 0, 0, 0, 1472, 10805, 1, 0, 0, 0, 1474, 10817, 1, 0, 0, 0, 1476, 10819, 1, 0, 0, 0, 1478, 10833, 1, 0, 0, 0, 1480, 10837, 1, 0, 0, 0, 1482, 10846, 1, 0, 0, 0, 1484, 10852, 1, 0, 0, 0, 1486, 10856, 1, 0, 0, 0, 1488, 10862, 1, 0, 0, 0, 1490, 10870, 1, 0, 0, 0, 1492, 10882, 1, 0, 0, 0, 1494, 10884, 1, 0, 0, 0, 1496, 10886, 1, 0, 0, 0, 1498, 10939, 1, 0, 0, 0, 1500, 10941, 1, 0, 0, 0, 1502, 10943, 1, 0, 0, 0, 1504, 10945, 1, 0, 0, 0, 1506, 10952, 1, 0, 0, 0, 1508, 10975, 1, 0, 0, 0, 1510, 10977, 1, 0, 0, 0, 1512, 10983, 1, 0, 0, 0, 1514, 10987, 1, 0, 0, 0, 1516, 10989, 1, 0, 0, 0, 1518, 10996, 1, 0, 0, 0, 1520, 11003, 1, 0, 0, 0, 1522, 11006, 1, 0, 0, 0, 1524, 11010, 1, 0, 0, 0, 1526, 11017, 1, 0, 0, 0, 1528, 11019, 1, 0, 0, 0, 1530, 11043, 1, 0, 0, 0, 1532, 11045, 1, 0, 0, 0, 1534, 11052, 1, 0, 0, 0, 1536, 11054, 1, 0, 0, 0, 1538, 11062, 1, 0, 0, 0, 1540, 11065, 1, 0, 0, 0, 1542, 11069, 1, 0, 0, 0, 1544, 11071, 1, 0, 0, 0, 1546, 11075, 1, 0, 0, 0, 1548, 11077, 1, 0, 0, 0, 1550, 11082, 1, 0, 0, 0, 1552, 11087, 1, 0, 0, 0, 1554, 11093, 1, 0, 0, 0, 1556, 11097, 1, 0, 0, 0, 1558, 11099, 1, 0, 0, 0, 1560, 11104, 1, 0, 0, 0, 1562, 11134, 1, 0, 0, 0, 1564, 11136, 1, 0, 0, 0, 1566, 11156, 1, 0, 0, 0, 1568, 11160, 1, 0, 0, 0, 1570, 11162, 1, 0, 0, 0, 1572, 11167, 1, 0, 0, 0, 1574, 11176, 1, 0, 0, 0, 1576, 11178, 1, 0, 0, 0, 1578, 11186, 1, 0, 0, 0, 1580, 11190, 1, 0, 0, 0, 1582, 11192, 1, 0, 0, 0, 1584, 11196, 1, 0, 0, 0, 1586, 11207, 1, 0, 0, 0, 1588, 11224, 1, 0, 0, 0, 1590, 11230, 1, 0, 0, 0, 1592, 11232, 1, 0, 0, 0, 1594, 11242, 1, 0, 0, 0, 1596, 11245, 1, 0, 0, 0, 1598, 11249, 1, 0, 0, 0, 1600, 11257, 1, 0, 0, 0, 1602, 11259, 1, 0, 0, 0, 1604, 11262, 1, 0, 0, 0, 1606, 11267, 1, 0, 0, 0, 1608, 11272, 1, 0, 0, 0, 1610, 11294, 1, 0, 0, 0, 1612, 11308, 1, 0, 0, 0, 1614, 11312, 1, 0, 0, 0, 1616, 11317, 1, 0, 0, 0, 1618, 11319, 1, 0, 0, 0, 1620, 11321, 1, 0, 0, 0, 1622, 11333, 1, 0, 0, 0, 1624, 11335, 1, 0, 0, 0, 1626, 11342, 1, 0, 0, 0, 1628, 11344, 1, 0, 0, 0, 1630, 11362, 1, 0, 0, 0, 1632, 11398, 1, 0, 0, 0, 1634, 11400, 1, 0, 0, 0, 1636, 11409, 1, 0, 0, 0, 1638, 11414, 1, 0, 0, 0, 1640, 11416, 1, 0, 0, 0, 1642, 11420, 1, 0, 0, 0, 1644, 11428, 1, 0, 0, 0, 1646, 11436, 1, 0, 0, 0, 1648, 11438, 1, 0, 0, 0, 1650, 11445, 1, 0, 0, 0, 1652, 11448, 1, 0, 0, 0, 1654, 11464, 1, 0, 0, 0, 1656, 11466, 1, 0, 0, 0, 1658, 11480, 1, 0, 0, 0, 1660, 11482, 1, 0, 0, 0, 1662, 11509, 1, 0, 0, 0, 1664, 11511, 1, 0, 0, 0, 1666, 11522, 1, 0, 0, 0, 1668, 11528, 1, 0, 0, 0, 1670, 11532, 1, 0, 0, 0, 1672, 11534, 1, 0, 0, 0, 1674, 11544, 1, 0, 0, 0, 1676, 11549, 1, 0, 0, 0, 1678, 11566, 1, 0, 0, 0, 1680, 11568, 1, 0, 0, 0, 1682, 11576, 1, 0, 0, 0, 1684, 11613, 1, 0, 0, 0, 1686, 11621, 1, 0, 0, 0, 1688, 11649, 1, 0, 0, 0, 1690, 11651, 1, 0, 0, 0, 1692, 11665, 1, 0, 0, 0, 1694, 11687, 1, 0, 0, 0, 1696, 11689, 1, 0, 0, 0, 1698, 11702, 1, 0, 0, 0, 1700, 11704, 1, 0, 0, 0, 1702, 11708, 1, 0, 0, 0, 1704, 11711, 1, 0, 0, 0, 1706, 11717, 1, 0, 0, 0, 1708, 11723, 1, 0, 0, 0, 1710, 11741, 1, 0, 0, 0, 1712, 11745, 1, 0, 0, 0, 1714, 11750, 1, 0, 0, 0, 1716, 11753, 1, 0, 0, 0, 1718, 11757, 1, 0, 0, 0, 1720, 11762, 1, 0, 0, 0, 1722, 11773, 1, 0, 0, 0, 1724, 11777, 1, 0, 0, 0, 1726, 11781, 1, 0, 0, 0, 1728, 11785, 1, 0, 0, 0, 1730, 11787, 1, 0, 0, 0, 1732, 11792, 1, 0, 0, 0, 1734, 11794, 1, 0, 0, 0, 1736, 11797, 1, 0, 0, 0, 1738, 11817, 1, 0, 0, 0, 1740, 11819, 1, 0, 0, 0, 1742, 11821, 1, 0, 0, 0, 1744, 11823, 1, 0, 0, 0, 1746, 11825, 1, 0, 0, 0, 1748, 11829, 1, 0, 0, 0, 1750, 1752, 3, 4, 2, 0, 1751, 1750, 1, 0, 0, 0, 1752, 1755, 1, 0, 0, 0, 1753, 1751, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1756, 1, 0, 0, 0, 1755, 1753, 1, 0, 0, 0, 1756, 1757, 5, 0, 0, 1, 1757, 1, 1, 0, 0, 0, 1758, 1759, 3, 1504, 752, 0, 1759, 3, 1, 0, 0, 0, 1760, 1762, 3, 6, 3, 0, 1761, 1763, 5, 7, 0, 0, 1762, 1761, 1, 0, 0, 0, 1762, 1763, 1, 0, 0, 0, 1763, 5, 1, 0, 0, 0, 1764, 1882, 3, 488, 244, 0, 1765, 1882, 3, 864, 432, 0, 1766, 1882, 3, 856, 428, 0, 1767, 1882, 3, 858, 429, 0, 1768, 1882, 3, 616, 308, 0, 1769, 1882, 3, 870, 435, 0, 1770, 1882, 3, 514, 257, 0, 1771, 1882, 3, 350, 175, 0, 1772, 1882, 3, 356, 178, 0, 1773, 1882, 3, 366, 183, 0, 1774, 1882, 3, 392, 196, 0, 1775, 1882, 3, 716, 358, 0, 1776, 1882, 3, 42, 21, 0, 1777, 1882, 3, 770, 385, 0, 1778, 1882, 3, 774, 387, 0, 1779, 1882, 3, 786, 393, 0, 1780, 1882, 3, 776, 388, 0, 1781, 1882, 3, 784, 392, 0, 1782, 1882, 3, 410, 205, 0, 1783, 1882, 3, 412, 206, 0, 1784, 1882, 3, 310, 155, 0, 1785, 1882, 3, 866, 433, 0, 1786, 1882, 3, 104, 52, 0, 1787, 1882, 3, 764, 382, 0, 1788, 1882, 3, 150, 75, 0, 1789, 1882, 3, 794, 397, 0, 1790, 1882, 3, 30, 15, 0, 1791, 1882, 3, 32, 16, 0, 1792, 1882, 3, 26, 13, 0, 1793, 1882, 3, 802, 401, 0, 1794, 1882, 3, 292, 146, 0, 1795, 1882, 3, 876, 438, 0, 1796, 1882, 3, 874, 437, 0, 1797, 1882, 3, 406, 203, 0, 1798, 1882, 3, 890, 445, 0, 1799, 1882, 3, 10, 5, 0, 1800, 1882, 3, 100, 50, 0, 1801, 1882, 3, 156, 78, 0, 1802, 1882, 3, 882, 441, 0, 1803, 1882, 3, 568, 284, 0, 1804, 1882, 3, 94, 47, 0, 1805, 1882, 3, 158, 79, 0, 1806, 1882, 3, 432, 216, 0, 1807, 1882, 3, 294, 147, 0, 1808, 1882, 3, 492, 246, 0, 1809, 1882, 3, 744, 372, 0, 1810, 1882, 3, 880, 440, 0, 1811, 1882, 3, 868, 434, 0, 1812, 1882, 3, 344, 172, 0, 1813, 1882, 3, 358, 179, 0, 1814, 1882, 3, 384, 192, 0, 1815, 1882, 3, 394, 197, 0, 1816, 1882, 3, 654, 327, 0, 1817, 1882, 3, 40, 20, 0, 1818, 1882, 3, 300, 150, 0, 1819, 1882, 3, 518, 259, 0, 1820, 1882, 3, 532, 266, 0, 1821, 1882, 3, 788, 394, 0, 1822, 1882, 3, 534, 267, 0, 1823, 1882, 3, 408, 204, 0, 1824, 1882, 3, 326, 163, 0, 1825, 1882, 3, 46, 23, 0, 1826, 1882, 3, 308, 154, 0, 1827, 1882, 3, 188, 94, 0, 1828, 1882, 3, 796, 398, 0, 1829, 1882, 3, 290, 145, 0, 1830, 1882, 3, 340, 170, 0, 1831, 1882, 3, 750, 375, 0, 1832, 1882, 3, 436, 218, 0, 1833, 1882, 3, 480, 240, 0, 1834, 1882, 3, 12, 6, 0, 1835, 1882, 3, 24, 12, 0, 1836, 1882, 3, 402, 201, 0, 1837, 1882, 3, 844, 422, 0, 1838, 1882, 3, 948, 474, 0, 1839, 1882, 3, 992, 496, 0, 1840, 1882, 3, 494, 247, 0, 1841, 1882, 3, 968, 484, 0, 1842, 1882, 3, 102, 51, 0, 1843, 1882, 3, 738, 369, 0, 1844, 1882, 3, 542, 271, 0, 1845, 1882, 3, 944, 472, 0, 1846, 1882, 3, 926, 463, 0, 1847, 1882, 3, 578, 289, 0, 1848, 1882, 3, 586, 293, 0, 1849, 1882, 3, 608, 304, 0, 1850, 1882, 3, 1682, 841, 0, 1851, 1882, 3, 396, 198, 0, 1852, 1882, 3, 626, 313, 0, 1853, 1882, 3, 950, 475, 0, 1854, 1882, 3, 822, 411, 0, 1855, 1882, 3, 306, 153, 0, 1856, 1882, 3, 842, 421, 0, 1857, 1882, 3, 972, 486, 0, 1858, 1882, 3, 818, 409, 0, 1859, 1882, 3, 938, 469, 0, 1860, 1882, 3, 540, 270, 0, 1861, 1882, 3, 754, 377, 0, 1862, 1882, 3, 726, 363, 0, 1863, 1882, 3, 724, 362, 0, 1864, 1882, 3, 728, 364, 0, 1865, 1882, 3, 766, 383, 0, 1866, 1882, 3, 588, 294, 0, 1867, 1882, 3, 610, 305, 0, 1868, 1882, 3, 804, 402, 0, 1869, 1882, 3, 572, 286, 0, 1870, 1882, 3, 1000, 500, 0, 1871, 1882, 3, 826, 413, 0, 1872, 1882, 3, 564, 282, 0, 1873, 1882, 3, 824, 412, 0, 1874, 1882, 3, 982, 491, 0, 1875, 1882, 3, 888, 444, 0, 1876, 1882, 3, 82, 41, 0, 1877, 1882, 3, 54, 27, 0, 1878, 1882, 3, 92, 46, 0, 1879, 1882, 3, 838, 419, 0, 1880, 1882, 3, 8, 4, 0, 1881, 1764, 1, 0, 0, 0, 1881, 1765, 1, 0, 0, 0, 1881, 1766, 1, 0, 0, 0, 1881, 1767, 1, 0, 0, 0, 1881, 1768, 1, 0, 0, 0, 1881, 1769, 1, 0, 0, 0, 1881, 1770, 1, 0, 0, 0, 1881, 1771, 1, 0, 0, 0, 1881, 1772, 1, 0, 0, 0, 1881, 1773, 1, 0, 0, 0, 1881, 1774, 1, 0, 0, 0, 1881, 1775, 1, 0, 0, 0, 1881, 1776, 1, 0, 0, 0, 1881, 1777, 1, 0, 0, 0, 1881, 1778, 1, 0, 0, 0, 1881, 1779, 1, 0, 0, 0, 1881, 1780, 1, 0, 0, 0, 1881, 1781, 1, 0, 0, 0, 1881, 1782, 1, 0, 0, 0, 1881, 1783, 1, 0, 0, 0, 1881, 1784, 1, 0, 0, 0, 1881, 1785, 1, 0, 0, 0, 1881, 1786, 1, 0, 0, 0, 1881, 1787, 1, 0, 0, 0, 1881, 1788, 1, 0, 0, 0, 1881, 1789, 1, 0, 0, 0, 1881, 1790, 1, 0, 0, 0, 1881, 1791, 1, 0, 0, 0, 1881, 1792, 1, 0, 0, 0, 1881, 1793, 1, 0, 0, 0, 1881, 1794, 1, 0, 0, 0, 1881, 1795, 1, 0, 0, 0, 1881, 1796, 1, 0, 0, 0, 1881, 1797, 1, 0, 0, 0, 1881, 1798, 1, 0, 0, 0, 1881, 1799, 1, 0, 0, 0, 1881, 1800, 1, 0, 0, 0, 1881, 1801, 1, 0, 0, 0, 1881, 1802, 1, 0, 0, 0, 1881, 1803, 1, 0, 0, 0, 1881, 1804, 1, 0, 0, 0, 1881, 1805, 1, 0, 0, 0, 1881, 1806, 1, 0, 0, 0, 1881, 1807, 1, 0, 0, 0, 1881, 1808, 1, 0, 0, 0, 1881, 1809, 1, 0, 0, 0, 1881, 1810, 1, 0, 0, 0, 1881, 1811, 1, 0, 0, 0, 1881, 1812, 1, 0, 0, 0, 1881, 1813, 1, 0, 0, 0, 1881, 1814, 1, 0, 0, 0, 1881, 1815, 1, 0, 0, 0, 1881, 1816, 1, 0, 0, 0, 1881, 1817, 1, 0, 0, 0, 1881, 1818, 1, 0, 0, 0, 1881, 1819, 1, 0, 0, 0, 1881, 1820, 1, 0, 0, 0, 1881, 1821, 1, 0, 0, 0, 1881, 1822, 1, 0, 0, 0, 1881, 1823, 1, 0, 0, 0, 1881, 1824, 1, 0, 0, 0, 1881, 1825, 1, 0, 0, 0, 1881, 1826, 1, 0, 0, 0, 1881, 1827, 1, 0, 0, 0, 1881, 1828, 1, 0, 0, 0, 1881, 1829, 1, 0, 0, 0, 1881, 1830, 1, 0, 0, 0, 1881, 1831, 1, 0, 0, 0, 1881, 1832, 1, 0, 0, 0, 1881, 1833, 1, 0, 0, 0, 1881, 1834, 1, 0, 0, 0, 1881, 1835, 1, 0, 0, 0, 1881, 1836, 1, 0, 0, 0, 1881, 1837, 1, 0, 0, 0, 1881, 1838, 1, 0, 0, 0, 1881, 1839, 1, 0, 0, 0, 1881, 1840, 1, 0, 0, 0, 1881, 1841, 1, 0, 0, 0, 1881, 1842, 1, 0, 0, 0, 1881, 1843, 1, 0, 0, 0, 1881, 1844, 1, 0, 0, 0, 1881, 1845, 1, 0, 0, 0, 1881, 1846, 1, 0, 0, 0, 1881, 1847, 1, 0, 0, 0, 1881, 1848, 1, 0, 0, 0, 1881, 1849, 1, 0, 0, 0, 1881, 1850, 1, 0, 0, 0, 1881, 1851, 1, 0, 0, 0, 1881, 1852, 1, 0, 0, 0, 1881, 1853, 1, 0, 0, 0, 1881, 1854, 1, 0, 0, 0, 1881, 1855, 1, 0, 0, 0, 1881, 1856, 1, 0, 0, 0, 1881, 1857, 1, 0, 0, 0, 1881, 1858, 1, 0, 0, 0, 1881, 1859, 1, 0, 0, 0, 1881, 1860, 1, 0, 0, 0, 1881, 1861, 1, 0, 0, 0, 1881, 1862, 1, 0, 0, 0, 1881, 1863, 1, 0, 0, 0, 1881, 1864, 1, 0, 0, 0, 1881, 1865, 1, 0, 0, 0, 1881, 1866, 1, 0, 0, 0, 1881, 1867, 1, 0, 0, 0, 1881, 1868, 1, 0, 0, 0, 1881, 1869, 1, 0, 0, 0, 1881, 1870, 1, 0, 0, 0, 1881, 1871, 1, 0, 0, 0, 1881, 1872, 1, 0, 0, 0, 1881, 1873, 1, 0, 0, 0, 1881, 1874, 1, 0, 0, 0, 1881, 1875, 1, 0, 0, 0, 1881, 1876, 1, 0, 0, 0, 1881, 1877, 1, 0, 0, 0, 1881, 1878, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1881, 1880, 1, 0, 0, 0, 1882, 7, 1, 0, 0, 0, 1883, 1885, 5, 581, 0, 0, 1884, 1886, 5, 582, 0, 0, 1885, 1884, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 9, 1, 0, 0, 0, 1887, 1888, 5, 433, 0, 0, 1888, 1889, 3, 1258, 629, 0, 1889, 11, 1, 0, 0, 0, 1890, 1891, 5, 46, 0, 0, 1891, 1892, 5, 318, 0, 0, 1892, 1894, 3, 1468, 734, 0, 1893, 1895, 3, 14, 7, 0, 1894, 1893, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1897, 3, 16, 8, 0, 1897, 13, 1, 0, 0, 0, 1898, 1899, 5, 105, 0, 0, 1899, 15, 1, 0, 0, 0, 1900, 1902, 3, 22, 11, 0, 1901, 1900, 1, 0, 0, 0, 1902, 1905, 1, 0, 0, 0, 1903, 1901, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 17, 1, 0, 0, 0, 1905, 1903, 1, 0, 0, 0, 1906, 1908, 3, 20, 10, 0, 1907, 1906, 1, 0, 0, 0, 1908, 1911, 1, 0, 0, 0, 1909, 1907, 1, 0, 0, 0, 1909, 1910, 1, 0, 0, 0, 1910, 19, 1, 0, 0, 0, 1911, 1909, 1, 0, 0, 0, 1912, 1915, 5, 287, 0, 0, 1913, 1916, 3, 1458, 729, 0, 1914, 1916, 5, 78, 0, 0, 1915, 1913, 1, 0, 0, 0, 1915, 1914, 1, 0, 0, 0, 1916, 1948, 1, 0, 0, 0, 1917, 1918, 7, 0, 0, 0, 1918, 1919, 5, 287, 0, 0, 1919, 1948, 3, 1458, 729, 0, 1920, 1948, 7, 1, 0, 0, 1921, 1948, 7, 2, 0, 0, 1922, 1948, 7, 3, 0, 0, 1923, 1948, 7, 4, 0, 0, 1924, 1948, 7, 5, 0, 0, 1925, 1948, 7, 6, 0, 0, 1926, 1948, 7, 7, 0, 0, 1927, 1948, 7, 8, 0, 0, 1928, 1929, 5, 164, 0, 0, 1929, 1930, 5, 74, 0, 0, 1930, 1948, 3, 1464, 732, 0, 1931, 1932, 5, 371, 0, 0, 1932, 1933, 5, 368, 0, 0, 1933, 1948, 3, 1458, 729, 0, 1934, 1935, 5, 68, 0, 0, 1935, 1936, 5, 318, 0, 0, 1936, 1948, 3, 1416, 708, 0, 1937, 1938, 5, 68, 0, 0, 1938, 1939, 5, 66, 0, 0, 1939, 1948, 3, 1416, 708, 0, 1940, 1941, 5, 318, 0, 0, 1941, 1948, 3, 1472, 736, 0, 1942, 1943, 5, 134, 0, 0, 1943, 1948, 3, 1416, 708, 0, 1944, 1945, 5, 99, 0, 0, 1945, 1948, 3, 1472, 736, 0, 1946, 1948, 3, 1492, 746, 0, 1947, 1912, 1, 0, 0, 0, 1947, 1917, 1, 0, 0, 0, 1947, 1920, 1, 0, 0, 0, 1947, 1921, 1, 0, 0, 0, 1947, 1922, 1, 0, 0, 0, 1947, 1923, 1, 0, 0, 0, 1947, 1924, 1, 0, 0, 0, 1947, 1925, 1, 0, 0, 0, 1947, 1926, 1, 0, 0, 0, 1947, 1927, 1, 0, 0, 0, 1947, 1928, 1, 0, 0, 0, 1947, 1931, 1, 0, 0, 0, 1947, 1934, 1, 0, 0, 0, 1947, 1937, 1, 0, 0, 0, 1947, 1940, 1, 0, 0, 0, 1947, 1942, 1, 0, 0, 0, 1947, 1944, 1, 0, 0, 0, 1947, 1946, 1, 0, 0, 0, 1948, 21, 1, 0, 0, 0, 1949, 1960, 3, 20, 10, 0, 1950, 1951, 5, 348, 0, 0, 1951, 1960, 3, 1456, 728, 0, 1952, 1953, 5, 134, 0, 0, 1953, 1960, 3, 1472, 736, 0, 1954, 1955, 5, 318, 0, 0, 1955, 1960, 3, 1472, 736, 0, 1956, 1957, 5, 68, 0, 0, 1957, 1958, 7, 9, 0, 0, 1958, 1960, 3, 1472, 736, 0, 1959, 1949, 1, 0, 0, 0, 1959, 1950, 1, 0, 0, 0, 1959, 1952, 1, 0, 0, 0, 1959, 1954, 1, 0, 0, 0, 1959, 1956, 1, 0, 0, 0, 1960, 23, 1, 0, 0, 0, 1961, 1962, 5, 46, 0, 0, 1962, 1963, 5, 99, 0, 0, 1963, 1965, 3, 1468, 734, 0, 1964, 1966, 3, 14, 7, 0, 1965, 1964, 1, 0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 3, 16, 8, 0, 1968, 25, 1, 0, 0, 0, 1969, 1970, 5, 138, 0, 0, 1970, 1971, 7, 10, 0, 0, 1971, 1973, 3, 1470, 735, 0, 1972, 1974, 3, 14, 7, 0, 1973, 1972, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1976, 3, 18, 9, 0, 1976, 27, 1, 0, 0, 0, 1977, 1982, 1, 0, 0, 0, 1978, 1979, 5, 68, 0, 0, 1979, 1980, 5, 175, 0, 0, 1980, 1982, 3, 1420, 710, 0, 1981, 1977, 1, 0, 0, 0, 1981, 1978, 1, 0, 0, 0, 1982, 29, 1, 0, 0, 0, 1983, 1984, 5, 138, 0, 0, 1984, 1987, 7, 10, 0, 0, 1985, 1988, 5, 30, 0, 0, 1986, 1988, 3, 1470, 735, 0, 1987, 1985, 1, 0, 0, 0, 1987, 1986, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 3, 28, 14, 0, 1990, 1991, 3, 88, 44, 0, 1991, 31, 1, 0, 0, 0, 1992, 1993, 5, 138, 0, 0, 1993, 1994, 5, 442, 0, 0, 1994, 1996, 3, 1426, 713, 0, 1995, 1997, 3, 660, 330, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 1999, 3, 34, 17, 0, 1999, 33, 1, 0, 0, 0, 2000, 2002, 3, 36, 18, 0, 2001, 2003, 5, 315, 0, 0, 2002, 2001, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2021, 1, 0, 0, 0, 2004, 2005, 5, 309, 0, 0, 2005, 2006, 5, 94, 0, 0, 2006, 2021, 3, 1424, 712, 0, 2007, 2008, 5, 282, 0, 0, 2008, 2009, 5, 94, 0, 0, 2009, 2021, 3, 1470, 735, 0, 2010, 2011, 5, 333, 0, 0, 2011, 2012, 5, 323, 0, 0, 2012, 2021, 3, 48, 24, 0, 2013, 2015, 5, 269, 0, 0, 2014, 2013, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 2017, 5, 462, 0, 0, 2017, 2018, 5, 80, 0, 0, 2018, 2019, 5, 204, 0, 0, 2019, 2021, 3, 1436, 718, 0, 2020, 2000, 1, 0, 0, 0, 2020, 2004, 1, 0, 0, 0, 2020, 2007, 1, 0, 0, 0, 2020, 2010, 1, 0, 0, 0, 2020, 2014, 1, 0, 0, 0, 2021, 35, 1, 0, 0, 0, 2022, 2026, 3, 38, 19, 0, 2023, 2025, 3, 38, 19, 0, 2024, 2023, 1, 0, 0, 0, 2025, 2028, 1, 0, 0, 0, 2026, 2024, 1, 0, 0, 0, 2026, 2027, 1, 0, 0, 0, 2027, 37, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2029, 2071, 5, 222, 0, 0, 2030, 2071, 5, 338, 0, 0, 2031, 2071, 5, 377, 0, 0, 2032, 2034, 5, 77, 0, 0, 2033, 2032, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2071, 5, 250, 0, 0, 2036, 2038, 5, 205, 0, 0, 2037, 2036, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2040, 5, 327, 0, 0, 2040, 2047, 5, 243, 0, 0, 2041, 2043, 5, 205, 0, 0, 2042, 2041, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 5, 327, 0, 0, 2045, 2047, 5, 181, 0, 0, 2046, 2037, 1, 0, 0, 0, 2046, 2042, 1, 0, 0, 0, 2047, 2071, 1, 0, 0, 0, 2048, 2049, 5, 460, 0, 0, 2049, 2071, 7, 11, 0, 0, 2050, 2051, 5, 170, 0, 0, 2051, 2071, 3, 1438, 719, 0, 2052, 2053, 5, 320, 0, 0, 2053, 2071, 3, 1436, 718, 0, 2054, 2055, 5, 333, 0, 0, 2055, 2056, 3, 1436, 718, 0, 2056, 2059, 7, 12, 0, 0, 2057, 2060, 3, 1436, 718, 0, 2058, 2060, 5, 53, 0, 0, 2059, 2057, 1, 0, 0, 0, 2059, 2058, 1, 0, 0, 0, 2060, 2071, 1, 0, 0, 0, 2061, 2062, 5, 333, 0, 0, 2062, 2063, 3, 1436, 718, 0, 2063, 2064, 5, 64, 0, 0, 2064, 2065, 5, 434, 0, 0, 2065, 2071, 1, 0, 0, 0, 2066, 2067, 5, 313, 0, 0, 2067, 2071, 3, 1436, 718, 0, 2068, 2069, 5, 313, 0, 0, 2069, 2071, 5, 30, 0, 0, 2070, 2029, 1, 0, 0, 0, 2070, 2030, 1, 0, 0, 0, 2070, 2031, 1, 0, 0, 0, 2070, 2033, 1, 0, 0, 0, 2070, 2046, 1, 0, 0, 0, 2070, 2048, 1, 0, 0, 0, 2070, 2050, 1, 0, 0, 0, 2070, 2052, 1, 0, 0, 0, 2070, 2054, 1, 0, 0, 0, 2070, 2061, 1, 0, 0, 0, 2070, 2066, 1, 0, 0, 0, 2070, 2068, 1, 0, 0, 0, 2071, 39, 1, 0, 0, 0, 2072, 2073, 5, 46, 0, 0, 2073, 2074, 5, 66, 0, 0, 2074, 2076, 3, 1466, 733, 0, 2075, 2077, 3, 14, 7, 0, 2076, 2075, 1, 0, 0, 0, 2076, 2077, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2079, 3, 16, 8, 0, 2079, 41, 1, 0, 0, 0, 2080, 2081, 5, 138, 0, 0, 2081, 2082, 5, 66, 0, 0, 2082, 2083, 3, 1470, 735, 0, 2083, 2084, 3, 44, 22, 0, 2084, 2085, 5, 99, 0, 0, 2085, 2086, 3, 1472, 736, 0, 2086, 43, 1, 0, 0, 0, 2087, 2088, 7, 13, 0, 0, 2088, 45, 1, 0, 0, 0, 2089, 2090, 5, 46, 0, 0, 2090, 2092, 5, 323, 0, 0, 2091, 2093, 3, 516, 258, 0, 2092, 2091, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2100, 1, 0, 0, 0, 2094, 2096, 3, 48, 24, 0, 2095, 2094, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 5, 106, 0, 0, 2098, 2101, 3, 1470, 735, 0, 2099, 2101, 3, 48, 24, 0, 2100, 2095, 1, 0, 0, 0, 2100, 2099, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 2103, 3, 50, 25, 0, 2103, 47, 1, 0, 0, 0, 2104, 2106, 3, 1474, 737, 0, 2105, 2107, 3, 560, 280, 0, 2106, 2105, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 49, 1, 0, 0, 0, 2108, 2110, 3, 52, 26, 0, 2109, 2108, 1, 0, 0, 0, 2110, 2113, 1, 0, 0, 0, 2111, 2109, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 51, 1, 0, 0, 0, 2113, 2111, 1, 0, 0, 0, 2114, 2121, 3, 188, 94, 0, 2115, 2121, 3, 626, 313, 0, 2116, 2121, 3, 308, 154, 0, 2117, 2121, 3, 436, 218, 0, 2118, 2121, 3, 586, 293, 0, 2119, 2121, 3, 838, 419, 0, 2120, 2114, 1, 0, 0, 0, 2120, 2115, 1, 0, 0, 0, 2120, 2116, 1, 0, 0, 0, 2120, 2117, 1, 0, 0, 0, 2120, 2118, 1, 0, 0, 0, 2120, 2119, 1, 0, 0, 0, 2121, 53, 1, 0, 0, 0, 2122, 2124, 5, 333, 0, 0, 2123, 2125, 7, 14, 0, 0, 2124, 2123, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2126, 1, 0, 0, 0, 2126, 2127, 3, 56, 28, 0, 2127, 55, 1, 0, 0, 0, 2128, 2129, 5, 356, 0, 0, 2129, 2137, 3, 832, 416, 0, 2130, 2131, 5, 332, 0, 0, 2131, 2132, 5, 154, 0, 0, 2132, 2133, 5, 36, 0, 0, 2133, 2134, 5, 356, 0, 0, 2134, 2137, 3, 832, 416, 0, 2135, 2137, 3, 60, 30, 0, 2136, 2128, 1, 0, 0, 0, 2136, 2130, 1, 0, 0, 0, 2136, 2135, 1, 0, 0, 0, 2137, 57, 1, 0, 0, 0, 2138, 2141, 5, 30, 0, 0, 2139, 2141, 3, 62, 31, 0, 2140, 2138, 1, 0, 0, 0, 2140, 2139, 1, 0, 0, 0, 2141, 2143, 1, 0, 0, 0, 2142, 2144, 7, 12, 0, 0, 2143, 2142, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2147, 1, 0, 0, 0, 2145, 2148, 5, 53, 0, 0, 2146, 2148, 3, 64, 32, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 59, 1, 0, 0, 0, 2149, 2150, 5, 418, 0, 0, 2150, 2151, 5, 386, 0, 0, 2151, 2177, 3, 74, 37, 0, 2152, 2153, 5, 152, 0, 0, 2153, 2177, 3, 1458, 729, 0, 2154, 2155, 5, 323, 0, 0, 2155, 2177, 3, 1422, 711, 0, 2156, 2158, 5, 267, 0, 0, 2157, 2159, 3, 76, 38, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2177, 1, 0, 0, 0, 2160, 2161, 5, 318, 0, 0, 2161, 2177, 3, 80, 40, 0, 2162, 2163, 5, 332, 0, 0, 2163, 2164, 5, 106, 0, 0, 2164, 2177, 3, 80, 40, 0, 2165, 2166, 5, 383, 0, 0, 2166, 2167, 5, 279, 0, 0, 2167, 2177, 3, 1276, 638, 0, 2168, 2169, 5, 356, 0, 0, 2169, 2170, 5, 337, 0, 0, 2170, 2177, 3, 1458, 729, 0, 2171, 2172, 3, 62, 31, 0, 2172, 2173, 5, 64, 0, 0, 2173, 2174, 5, 434, 0, 0, 2174, 2177, 1, 0, 0, 0, 2175, 2177, 3, 58, 29, 0, 2176, 2149, 1, 0, 0, 0, 2176, 2152, 1, 0, 0, 0, 2176, 2154, 1, 0, 0, 0, 2176, 2156, 1, 0, 0, 0, 2176, 2160, 1, 0, 0, 0, 2176, 2162, 1, 0, 0, 0, 2176, 2165, 1, 0, 0, 0, 2176, 2168, 1, 0, 0, 0, 2176, 2171, 1, 0, 0, 0, 2176, 2175, 1, 0, 0, 0, 2177, 61, 1, 0, 0, 0, 2178, 2183, 3, 1474, 737, 0, 2179, 2180, 5, 11, 0, 0, 2180, 2182, 3, 1474, 737, 0, 2181, 2179, 1, 0, 0, 0, 2182, 2185, 1, 0, 0, 0, 2183, 2181, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 63, 1, 0, 0, 0, 2185, 2183, 1, 0, 0, 0, 2186, 2191, 3, 66, 33, 0, 2187, 2188, 5, 6, 0, 0, 2188, 2190, 3, 66, 33, 0, 2189, 2187, 1, 0, 0, 0, 2190, 2193, 1, 0, 0, 0, 2191, 2189, 1, 0, 0, 0, 2191, 2192, 1, 0, 0, 0, 2192, 65, 1, 0, 0, 0, 2193, 2191, 1, 0, 0, 0, 2194, 2197, 3, 72, 36, 0, 2195, 2197, 3, 322, 161, 0, 2196, 2194, 1, 0, 0, 0, 2196, 2195, 1, 0, 0, 0, 2197, 67, 1, 0, 0, 0, 2198, 2199, 5, 300, 0, 0, 2199, 2204, 7, 15, 0, 0, 2200, 2201, 5, 310, 0, 0, 2201, 2204, 5, 300, 0, 0, 2202, 2204, 5, 330, 0, 0, 2203, 2198, 1, 0, 0, 0, 2203, 2200, 1, 0, 0, 0, 2203, 2202, 1, 0, 0, 0, 2204, 69, 1, 0, 0, 0, 2205, 2210, 5, 96, 0, 0, 2206, 2210, 5, 60, 0, 0, 2207, 2210, 5, 80, 0, 0, 2208, 2210, 3, 78, 39, 0, 2209, 2205, 1, 0, 0, 0, 2209, 2206, 1, 0, 0, 0, 2209, 2207, 1, 0, 0, 0, 2209, 2208, 1, 0, 0, 0, 2210, 71, 1, 0, 0, 0, 2211, 2216, 5, 96, 0, 0, 2212, 2216, 5, 60, 0, 0, 2213, 2216, 5, 80, 0, 0, 2214, 2216, 3, 80, 40, 0, 2215, 2211, 1, 0, 0, 0, 2215, 2212, 1, 0, 0, 0, 2215, 2213, 1, 0, 0, 0, 2215, 2214, 1, 0, 0, 0, 2216, 73, 1, 0, 0, 0, 2217, 2234, 3, 1458, 729, 0, 2218, 2234, 3, 1492, 746, 0, 2219, 2220, 3, 1202, 601, 0, 2220, 2222, 3, 1458, 729, 0, 2221, 2223, 3, 1206, 603, 0, 2222, 2221, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2234, 1, 0, 0, 0, 2224, 2225, 3, 1202, 601, 0, 2225, 2226, 5, 2, 0, 0, 2226, 2227, 3, 1456, 728, 0, 2227, 2228, 5, 3, 0, 0, 2228, 2229, 3, 1458, 729, 0, 2229, 2234, 1, 0, 0, 0, 2230, 2234, 3, 322, 161, 0, 2231, 2234, 5, 53, 0, 0, 2232, 2234, 5, 254, 0, 0, 2233, 2217, 1, 0, 0, 0, 2233, 2218, 1, 0, 0, 0, 2233, 2219, 1, 0, 0, 0, 2233, 2224, 1, 0, 0, 0, 2233, 2230, 1, 0, 0, 0, 2233, 2231, 1, 0, 0, 0, 2233, 2232, 1, 0, 0, 0, 2234, 75, 1, 0, 0, 0, 2235, 2238, 3, 1458, 729, 0, 2236, 2238, 5, 53, 0, 0, 2237, 2235, 1, 0, 0, 0, 2237, 2236, 1, 0, 0, 0, 2238, 77, 1, 0, 0, 0, 2239, 2242, 3, 1486, 743, 0, 2240, 2242, 3, 1458, 729, 0, 2241, 2239, 1, 0, 0, 0, 2241, 2240, 1, 0, 0, 0, 2242, 79, 1, 0, 0, 0, 2243, 2246, 3, 1488, 744, 0, 2244, 2246, 3, 1458, 729, 0, 2245, 2243, 1, 0, 0, 0, 2245, 2244, 1, 0, 0, 0, 2246, 81, 1, 0, 0, 0, 2247, 2248, 5, 313, 0, 0, 2248, 2249, 3, 84, 42, 0, 2249, 83, 1, 0, 0, 0, 2250, 2251, 5, 418, 0, 0, 2251, 2259, 5, 386, 0, 0, 2252, 2253, 5, 356, 0, 0, 2253, 2254, 5, 244, 0, 0, 2254, 2259, 5, 251, 0, 0, 2255, 2256, 5, 332, 0, 0, 2256, 2259, 5, 106, 0, 0, 2257, 2259, 3, 86, 43, 0, 2258, 2250, 1, 0, 0, 0, 2258, 2252, 1, 0, 0, 0, 2258, 2255, 1, 0, 0, 0, 2258, 2257, 1, 0, 0, 0, 2259, 85, 1, 0, 0, 0, 2260, 2263, 5, 30, 0, 0, 2261, 2263, 3, 62, 31, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2261, 1, 0, 0, 0, 2263, 87, 1, 0, 0, 0, 2264, 2265, 5, 333, 0, 0, 2265, 2268, 3, 56, 28, 0, 2266, 2268, 3, 82, 41, 0, 2267, 2264, 1, 0, 0, 0, 2267, 2266, 1, 0, 0, 0, 2268, 89, 1, 0, 0, 0, 2269, 2270, 5, 333, 0, 0, 2270, 2273, 3, 60, 30, 0, 2271, 2273, 3, 82, 41, 0, 2272, 2269, 1, 0, 0, 0, 2272, 2271, 1, 0, 0, 0, 2273, 91, 1, 0, 0, 0, 2274, 2284, 5, 335, 0, 0, 2275, 2285, 3, 62, 31, 0, 2276, 2277, 5, 418, 0, 0, 2277, 2285, 5, 386, 0, 0, 2278, 2279, 5, 356, 0, 0, 2279, 2280, 5, 244, 0, 0, 2280, 2285, 5, 251, 0, 0, 2281, 2282, 5, 332, 0, 0, 2282, 2285, 5, 106, 0, 0, 2283, 2285, 5, 30, 0, 0, 2284, 2275, 1, 0, 0, 0, 2284, 2276, 1, 0, 0, 0, 2284, 2278, 1, 0, 0, 0, 2284, 2281, 1, 0, 0, 0, 2284, 2283, 1, 0, 0, 0, 2285, 93, 1, 0, 0, 0, 2286, 2287, 5, 333, 0, 0, 2287, 2288, 5, 165, 0, 0, 2288, 2289, 3, 96, 48, 0, 2289, 2290, 3, 98, 49, 0, 2290, 95, 1, 0, 0, 0, 2291, 2294, 5, 30, 0, 0, 2292, 2294, 3, 1390, 695, 0, 2293, 2291, 1, 0, 0, 0, 2293, 2292, 1, 0, 0, 0, 2294, 97, 1, 0, 0, 0, 2295, 2296, 7, 16, 0, 0, 2296, 99, 1, 0, 0, 0, 2297, 2298, 5, 155, 0, 0, 2298, 101, 1, 0, 0, 0, 2299, 2300, 5, 187, 0, 0, 2300, 2301, 7, 17, 0, 0, 2301, 103, 1, 0, 0, 0, 2302, 2303, 5, 138, 0, 0, 2303, 2305, 5, 92, 0, 0, 2304, 2306, 3, 748, 374, 0, 2305, 2304, 1, 0, 0, 0, 2305, 2306, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2310, 3, 1118, 559, 0, 2308, 2311, 3, 106, 53, 0, 2309, 2311, 3, 116, 58, 0, 2310, 2308, 1, 0, 0, 0, 2310, 2309, 1, 0, 0, 0, 2311, 2436, 1, 0, 0, 0, 2312, 2313, 5, 138, 0, 0, 2313, 2314, 5, 92, 0, 0, 2314, 2315, 5, 30, 0, 0, 2315, 2316, 5, 68, 0, 0, 2316, 2317, 5, 351, 0, 0, 2317, 2321, 3, 1402, 701, 0, 2318, 2319, 5, 281, 0, 0, 2319, 2320, 5, 147, 0, 0, 2320, 2322, 3, 1472, 736, 0, 2321, 2318, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 2324, 5, 333, 0, 0, 2324, 2325, 5, 351, 0, 0, 2325, 2327, 3, 1400, 700, 0, 2326, 2328, 3, 978, 489, 0, 2327, 2326, 1, 0, 0, 0, 2327, 2328, 1, 0, 0, 0, 2328, 2436, 1, 0, 0, 0, 2329, 2330, 5, 138, 0, 0, 2330, 2332, 5, 92, 0, 0, 2331, 2333, 3, 748, 374, 0, 2332, 2331, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2335, 3, 1406, 703, 0, 2335, 2336, 5, 435, 0, 0, 2336, 2337, 5, 285, 0, 0, 2337, 2342, 3, 1412, 706, 0, 2338, 2339, 5, 62, 0, 0, 2339, 2340, 5, 422, 0, 0, 2340, 2343, 3, 108, 54, 0, 2341, 2343, 5, 53, 0, 0, 2342, 2338, 1, 0, 0, 0, 2342, 2341, 1, 0, 0, 0, 2343, 2436, 1, 0, 0, 0, 2344, 2345, 5, 138, 0, 0, 2345, 2347, 5, 92, 0, 0, 2346, 2348, 3, 748, 374, 0, 2347, 2346, 1, 0, 0, 0, 2347, 2348, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2350, 3, 1406, 703, 0, 2350, 2351, 5, 436, 0, 0, 2351, 2352, 5, 285, 0, 0, 2352, 2354, 3, 1412, 706, 0, 2353, 2355, 7, 18, 0, 0, 2354, 2353, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2436, 1, 0, 0, 0, 2356, 2357, 5, 138, 0, 0, 2357, 2359, 5, 226, 0, 0, 2358, 2360, 3, 748, 374, 0, 2359, 2358, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2364, 3, 1412, 706, 0, 2362, 2365, 3, 106, 53, 0, 2363, 2365, 3, 118, 59, 0, 2364, 2362, 1, 0, 0, 0, 2364, 2363, 1, 0, 0, 0, 2365, 2436, 1, 0, 0, 0, 2366, 2367, 5, 138, 0, 0, 2367, 2368, 5, 226, 0, 0, 2368, 2369, 5, 30, 0, 0, 2369, 2370, 5, 68, 0, 0, 2370, 2371, 5, 351, 0, 0, 2371, 2375, 3, 1402, 701, 0, 2372, 2373, 5, 281, 0, 0, 2373, 2374, 5, 147, 0, 0, 2374, 2376, 3, 1472, 736, 0, 2375, 2372, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2378, 5, 333, 0, 0, 2378, 2379, 5, 351, 0, 0, 2379, 2381, 3, 1402, 701, 0, 2380, 2382, 3, 978, 489, 0, 2381, 2380, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2436, 1, 0, 0, 0, 2383, 2384, 5, 138, 0, 0, 2384, 2386, 5, 328, 0, 0, 2385, 2387, 3, 748, 374, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 3, 1412, 706, 0, 2389, 2390, 3, 106, 53, 0, 2390, 2436, 1, 0, 0, 0, 2391, 2392, 5, 138, 0, 0, 2392, 2394, 5, 376, 0, 0, 2393, 2395, 3, 748, 374, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2397, 3, 1410, 705, 0, 2397, 2398, 3, 106, 53, 0, 2398, 2436, 1, 0, 0, 0, 2399, 2400, 5, 138, 0, 0, 2400, 2401, 5, 259, 0, 0, 2401, 2403, 5, 376, 0, 0, 2402, 2404, 3, 748, 374, 0, 2403, 2402, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2406, 3, 1410, 705, 0, 2406, 2407, 3, 106, 53, 0, 2407, 2436, 1, 0, 0, 0, 2408, 2409, 5, 138, 0, 0, 2409, 2410, 5, 259, 0, 0, 2410, 2411, 5, 376, 0, 0, 2411, 2412, 5, 30, 0, 0, 2412, 2413, 5, 68, 0, 0, 2413, 2414, 5, 351, 0, 0, 2414, 2418, 3, 1402, 701, 0, 2415, 2416, 5, 281, 0, 0, 2416, 2417, 5, 147, 0, 0, 2417, 2419, 3, 1472, 736, 0, 2418, 2415, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 5, 333, 0, 0, 2421, 2422, 5, 351, 0, 0, 2422, 2424, 3, 1400, 700, 0, 2423, 2425, 3, 978, 489, 0, 2424, 2423, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2436, 1, 0, 0, 0, 2426, 2427, 5, 138, 0, 0, 2427, 2428, 5, 63, 0, 0, 2428, 2430, 5, 92, 0, 0, 2429, 2431, 3, 748, 374, 0, 2430, 2429, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2433, 3, 1118, 559, 0, 2433, 2434, 3, 106, 53, 0, 2434, 2436, 1, 0, 0, 0, 2435, 2302, 1, 0, 0, 0, 2435, 2312, 1, 0, 0, 0, 2435, 2329, 1, 0, 0, 0, 2435, 2344, 1, 0, 0, 0, 2435, 2356, 1, 0, 0, 0, 2435, 2366, 1, 0, 0, 0, 2435, 2383, 1, 0, 0, 0, 2435, 2391, 1, 0, 0, 0, 2435, 2399, 1, 0, 0, 0, 2435, 2408, 1, 0, 0, 0, 2435, 2426, 1, 0, 0, 0, 2436, 105, 1, 0, 0, 0, 2437, 2442, 3, 120, 60, 0, 2438, 2439, 5, 6, 0, 0, 2439, 2441, 3, 120, 60, 0, 2440, 2438, 1, 0, 0, 0, 2441, 2444, 1, 0, 0, 0, 2442, 2440, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 107, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2445, 2446, 5, 68, 0, 0, 2446, 2455, 3, 1178, 589, 0, 2447, 2448, 5, 64, 0, 0, 2448, 2449, 3, 110, 55, 0, 2449, 2450, 5, 94, 0, 0, 2450, 2451, 3, 110, 55, 0, 2451, 2455, 1, 0, 0, 0, 2452, 2453, 5, 105, 0, 0, 2453, 2455, 3, 114, 57, 0, 2454, 2445, 1, 0, 0, 0, 2454, 2447, 1, 0, 0, 0, 2454, 2452, 1, 0, 0, 0, 2455, 109, 1, 0, 0, 0, 2456, 2457, 5, 2, 0, 0, 2457, 2462, 3, 112, 56, 0, 2458, 2459, 5, 6, 0, 0, 2459, 2461, 3, 112, 56, 0, 2460, 2458, 1, 0, 0, 0, 2461, 2464, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2465, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2466, 5, 3, 0, 0, 2466, 111, 1, 0, 0, 0, 2467, 2471, 3, 1178, 589, 0, 2468, 2471, 5, 262, 0, 0, 2469, 2471, 5, 260, 0, 0, 2470, 2467, 1, 0, 0, 0, 2470, 2468, 1, 0, 0, 0, 2470, 2469, 1, 0, 0, 0, 2471, 113, 1, 0, 0, 0, 2472, 2473, 5, 2, 0, 0, 2473, 2474, 5, 533, 0, 0, 2474, 2475, 3, 322, 161, 0, 2475, 2476, 5, 6, 0, 0, 2476, 2477, 5, 534, 0, 0, 2477, 2478, 3, 322, 161, 0, 2478, 2479, 5, 3, 0, 0, 2479, 115, 1, 0, 0, 0, 2480, 2481, 5, 435, 0, 0, 2481, 2482, 5, 285, 0, 0, 2482, 2483, 3, 1412, 706, 0, 2483, 2484, 3, 144, 72, 0, 2484, 2489, 1, 0, 0, 0, 2485, 2486, 5, 436, 0, 0, 2486, 2487, 5, 285, 0, 0, 2487, 2489, 3, 1412, 706, 0, 2488, 2480, 1, 0, 0, 0, 2488, 2485, 1, 0, 0, 0, 2489, 117, 1, 0, 0, 0, 2490, 2491, 5, 435, 0, 0, 2491, 2492, 5, 285, 0, 0, 2492, 2493, 3, 1412, 706, 0, 2493, 119, 1, 0, 0, 0, 2494, 2497, 5, 133, 0, 0, 2495, 2496, 5, 45, 0, 0, 2496, 2498, 3, 1436, 718, 0, 2497, 2495, 1, 0, 0, 0, 2497, 2498, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2712, 3, 236, 118, 0, 2500, 2501, 5, 138, 0, 0, 2501, 2502, 5, 45, 0, 0, 2502, 2503, 3, 1436, 718, 0, 2503, 2504, 3, 476, 238, 0, 2504, 2712, 1, 0, 0, 0, 2505, 2506, 5, 372, 0, 0, 2506, 2507, 5, 45, 0, 0, 2507, 2712, 3, 1436, 718, 0, 2508, 2509, 5, 191, 0, 0, 2509, 2511, 5, 45, 0, 0, 2510, 2512, 3, 748, 374, 0, 2511, 2510, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2513, 1, 0, 0, 0, 2513, 2515, 3, 1436, 718, 0, 2514, 2516, 3, 124, 62, 0, 2515, 2514, 1, 0, 0, 0, 2515, 2516, 1, 0, 0, 0, 2516, 2712, 1, 0, 0, 0, 2517, 2518, 5, 333, 0, 0, 2518, 2519, 5, 379, 0, 0, 2519, 2712, 5, 277, 0, 0, 2520, 2521, 5, 158, 0, 0, 2521, 2522, 5, 80, 0, 0, 2522, 2712, 3, 1436, 718, 0, 2523, 2524, 5, 333, 0, 0, 2524, 2525, 5, 379, 0, 0, 2525, 2712, 5, 158, 0, 0, 2526, 2527, 5, 333, 0, 0, 2527, 2712, 7, 19, 0, 0, 2528, 2530, 5, 193, 0, 0, 2529, 2531, 7, 20, 0, 0, 2530, 2529, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2712, 5, 357, 0, 0, 2533, 2534, 5, 186, 0, 0, 2534, 2538, 5, 357, 0, 0, 2535, 2539, 5, 30, 0, 0, 2536, 2539, 5, 99, 0, 0, 2537, 2539, 3, 1436, 718, 0, 2538, 2535, 1, 0, 0, 0, 2538, 2536, 1, 0, 0, 0, 2538, 2537, 1, 0, 0, 0, 2539, 2712, 1, 0, 0, 0, 2540, 2541, 5, 193, 0, 0, 2541, 2542, 7, 20, 0, 0, 2542, 2543, 5, 321, 0, 0, 2543, 2712, 3, 1436, 718, 0, 2544, 2545, 5, 186, 0, 0, 2545, 2546, 5, 321, 0, 0, 2546, 2712, 3, 1436, 718, 0, 2547, 2549, 5, 269, 0, 0, 2548, 2547, 1, 0, 0, 0, 2548, 2549, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2551, 5, 228, 0, 0, 2551, 2712, 3, 1412, 706, 0, 2552, 2553, 5, 275, 0, 0, 2553, 2712, 3, 558, 279, 0, 2554, 2555, 5, 77, 0, 0, 2555, 2712, 5, 275, 0, 0, 2556, 2557, 5, 282, 0, 0, 2557, 2558, 5, 94, 0, 0, 2558, 2712, 3, 1470, 735, 0, 2559, 2560, 5, 333, 0, 0, 2560, 2561, 5, 351, 0, 0, 2561, 2712, 3, 1400, 700, 0, 2562, 2563, 5, 333, 0, 0, 2563, 2712, 3, 132, 66, 0, 2564, 2565, 5, 313, 0, 0, 2565, 2712, 3, 132, 66, 0, 2566, 2567, 5, 312, 0, 0, 2567, 2568, 5, 219, 0, 0, 2568, 2712, 3, 130, 65, 0, 2569, 2570, 5, 193, 0, 0, 2570, 2571, 5, 414, 0, 0, 2571, 2572, 5, 251, 0, 0, 2572, 2712, 5, 327, 0, 0, 2573, 2574, 5, 186, 0, 0, 2574, 2575, 5, 414, 0, 0, 2575, 2576, 5, 251, 0, 0, 2576, 2712, 5, 327, 0, 0, 2577, 2578, 5, 209, 0, 0, 2578, 2579, 5, 414, 0, 0, 2579, 2580, 5, 251, 0, 0, 2580, 2712, 5, 327, 0, 0, 2581, 2582, 5, 269, 0, 0, 2582, 2583, 5, 209, 0, 0, 2583, 2584, 5, 414, 0, 0, 2584, 2585, 5, 251, 0, 0, 2585, 2712, 5, 327, 0, 0, 2586, 2588, 5, 191, 0, 0, 2587, 2589, 5, 44, 0, 0, 2588, 2587, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2591, 1, 0, 0, 0, 2590, 2592, 3, 748, 374, 0, 2591, 2590, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593, 2595, 3, 1432, 716, 0, 2594, 2596, 3, 124, 62, 0, 2595, 2594, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2712, 1, 0, 0, 0, 2597, 2599, 5, 133, 0, 0, 2598, 2600, 5, 44, 0, 0, 2599, 2598, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2602, 1, 0, 0, 0, 2601, 2603, 3, 516, 258, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2712, 3, 206, 103, 0, 2605, 2607, 5, 138, 0, 0, 2606, 2608, 5, 44, 0, 0, 2607, 2606, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2610, 3, 1432, 716, 0, 2610, 2611, 3, 122, 61, 0, 2611, 2712, 1, 0, 0, 0, 2612, 2614, 5, 138, 0, 0, 2613, 2615, 5, 44, 0, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2617, 3, 1432, 716, 0, 2617, 2618, 7, 21, 0, 0, 2618, 2619, 5, 77, 0, 0, 2619, 2620, 5, 78, 0, 0, 2620, 2712, 1, 0, 0, 0, 2621, 2623, 5, 138, 0, 0, 2622, 2624, 5, 44, 0, 0, 2623, 2622, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2626, 3, 1432, 716, 0, 2626, 2627, 5, 191, 0, 0, 2627, 2629, 5, 437, 0, 0, 2628, 2630, 3, 748, 374, 0, 2629, 2628, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2712, 1, 0, 0, 0, 2631, 2633, 5, 138, 0, 0, 2632, 2634, 5, 44, 0, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 3, 1432, 716, 0, 2636, 2637, 5, 333, 0, 0, 2637, 2638, 5, 342, 0, 0, 2638, 2639, 3, 1464, 732, 0, 2639, 2712, 1, 0, 0, 0, 2640, 2642, 5, 138, 0, 0, 2641, 2643, 5, 44, 0, 0, 2642, 2641, 1, 0, 0, 0, 2642, 2643, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2645, 3, 1432, 716, 0, 2645, 2646, 7, 22, 0, 0, 2646, 2647, 3, 132, 66, 0, 2647, 2712, 1, 0, 0, 0, 2648, 2650, 5, 138, 0, 0, 2649, 2651, 5, 44, 0, 0, 2650, 2649, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 2652, 1, 0, 0, 0, 2652, 2653, 3, 1432, 716, 0, 2653, 2654, 5, 333, 0, 0, 2654, 2655, 5, 345, 0, 0, 2655, 2656, 3, 1474, 737, 0, 2656, 2712, 1, 0, 0, 0, 2657, 2659, 5, 138, 0, 0, 2658, 2660, 5, 44, 0, 0, 2659, 2658, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 2662, 3, 1432, 716, 0, 2662, 2663, 5, 133, 0, 0, 2663, 2664, 5, 438, 0, 0, 2664, 2665, 3, 222, 111, 0, 2665, 2666, 5, 36, 0, 0, 2666, 2668, 5, 219, 0, 0, 2667, 2669, 3, 314, 157, 0, 2668, 2667, 1, 0, 0, 0, 2668, 2669, 1, 0, 0, 0, 2669, 2712, 1, 0, 0, 0, 2670, 2672, 5, 138, 0, 0, 2671, 2673, 5, 44, 0, 0, 2672, 2671, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2675, 3, 1432, 716, 0, 2675, 2676, 3, 140, 70, 0, 2676, 2712, 1, 0, 0, 0, 2677, 2679, 5, 138, 0, 0, 2678, 2680, 5, 44, 0, 0, 2679, 2678, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2681, 1, 0, 0, 0, 2681, 2682, 3, 1432, 716, 0, 2682, 2683, 5, 191, 0, 0, 2683, 2685, 5, 219, 0, 0, 2684, 2686, 3, 748, 374, 0, 2685, 2684, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2712, 1, 0, 0, 0, 2687, 2689, 5, 138, 0, 0, 2688, 2690, 5, 44, 0, 0, 2689, 2688, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2693, 3, 1432, 716, 0, 2692, 2694, 3, 768, 384, 0, 2693, 2692, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 2696, 5, 360, 0, 0, 2696, 2698, 3, 1168, 584, 0, 2697, 2699, 3, 126, 63, 0, 2698, 2697, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2701, 1, 0, 0, 0, 2700, 2702, 3, 128, 64, 0, 2701, 2700, 1, 0, 0, 0, 2701, 2702, 1, 0, 0, 0, 2702, 2712, 1, 0, 0, 0, 2703, 2705, 5, 138, 0, 0, 2704, 2706, 5, 44, 0, 0, 2705, 2704, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2708, 3, 1432, 716, 0, 2708, 2709, 3, 372, 186, 0, 2709, 2712, 1, 0, 0, 0, 2710, 2712, 3, 372, 186, 0, 2711, 2494, 1, 0, 0, 0, 2711, 2500, 1, 0, 0, 0, 2711, 2505, 1, 0, 0, 0, 2711, 2508, 1, 0, 0, 0, 2711, 2517, 1, 0, 0, 0, 2711, 2520, 1, 0, 0, 0, 2711, 2523, 1, 0, 0, 0, 2711, 2526, 1, 0, 0, 0, 2711, 2528, 1, 0, 0, 0, 2711, 2533, 1, 0, 0, 0, 2711, 2540, 1, 0, 0, 0, 2711, 2544, 1, 0, 0, 0, 2711, 2548, 1, 0, 0, 0, 2711, 2552, 1, 0, 0, 0, 2711, 2554, 1, 0, 0, 0, 2711, 2556, 1, 0, 0, 0, 2711, 2559, 1, 0, 0, 0, 2711, 2562, 1, 0, 0, 0, 2711, 2564, 1, 0, 0, 0, 2711, 2566, 1, 0, 0, 0, 2711, 2569, 1, 0, 0, 0, 2711, 2573, 1, 0, 0, 0, 2711, 2577, 1, 0, 0, 0, 2711, 2581, 1, 0, 0, 0, 2711, 2586, 1, 0, 0, 0, 2711, 2597, 1, 0, 0, 0, 2711, 2605, 1, 0, 0, 0, 2711, 2612, 1, 0, 0, 0, 2711, 2621, 1, 0, 0, 0, 2711, 2631, 1, 0, 0, 0, 2711, 2640, 1, 0, 0, 0, 2711, 2648, 1, 0, 0, 0, 2711, 2657, 1, 0, 0, 0, 2711, 2670, 1, 0, 0, 0, 2711, 2677, 1, 0, 0, 0, 2711, 2687, 1, 0, 0, 0, 2711, 2703, 1, 0, 0, 0, 2711, 2710, 1, 0, 0, 0, 2712, 121, 1, 0, 0, 0, 2713, 2714, 5, 333, 0, 0, 2714, 2715, 5, 53, 0, 0, 2715, 2719, 3, 1212, 606, 0, 2716, 2717, 5, 191, 0, 0, 2717, 2719, 5, 53, 0, 0, 2718, 2713, 1, 0, 0, 0, 2718, 2716, 1, 0, 0, 0, 2719, 123, 1, 0, 0, 0, 2720, 2721, 7, 23, 0, 0, 2721, 125, 1, 0, 0, 0, 2722, 2723, 5, 43, 0, 0, 2723, 2724, 3, 558, 279, 0, 2724, 127, 1, 0, 0, 0, 2725, 2726, 5, 100, 0, 0, 2726, 2727, 3, 1212, 606, 0, 2727, 129, 1, 0, 0, 0, 2728, 2735, 5, 270, 0, 0, 2729, 2735, 5, 113, 0, 0, 2730, 2735, 5, 53, 0, 0, 2731, 2732, 5, 100, 0, 0, 2732, 2733, 5, 226, 0, 0, 2733, 2735, 3, 1436, 718, 0, 2734, 2728, 1, 0, 0, 0, 2734, 2729, 1, 0, 0, 0, 2734, 2730, 1, 0, 0, 0, 2734, 2731, 1, 0, 0, 0, 2735, 131, 1, 0, 0, 0, 2736, 2737, 5, 2, 0, 0, 2737, 2738, 3, 136, 68, 0, 2738, 2739, 5, 3, 0, 0, 2739, 133, 1, 0, 0, 0, 2740, 2741, 5, 105, 0, 0, 2741, 2742, 3, 132, 66, 0, 2742, 135, 1, 0, 0, 0, 2743, 2748, 3, 138, 69, 0, 2744, 2745, 5, 6, 0, 0, 2745, 2747, 3, 138, 69, 0, 2746, 2744, 1, 0, 0, 0, 2747, 2750, 1, 0, 0, 0, 2748, 2746, 1, 0, 0, 0, 2748, 2749, 1, 0, 0, 0, 2749, 137, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2751, 2760, 3, 1490, 745, 0, 2752, 2753, 5, 10, 0, 0, 2753, 2761, 3, 502, 251, 0, 2754, 2755, 5, 11, 0, 0, 2755, 2758, 3, 1490, 745, 0, 2756, 2757, 5, 10, 0, 0, 2757, 2759, 3, 502, 251, 0, 2758, 2756, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2761, 1, 0, 0, 0, 2760, 2752, 1, 0, 0, 0, 2760, 2754, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 139, 1, 0, 0, 0, 2762, 2764, 3, 142, 71, 0, 2763, 2762, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2763, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 141, 1, 0, 0, 0, 2767, 2772, 5, 314, 0, 0, 2768, 2770, 3, 14, 7, 0, 2769, 2768, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2773, 3, 322, 161, 0, 2772, 2769, 1, 0, 0, 0, 2772, 2773, 1, 0, 0, 0, 2773, 2781, 1, 0, 0, 0, 2774, 2778, 5, 333, 0, 0, 2775, 2779, 3, 318, 159, 0, 2776, 2777, 5, 438, 0, 0, 2777, 2779, 3, 222, 111, 0, 2778, 2775, 1, 0, 0, 0, 2778, 2776, 1, 0, 0, 0, 2779, 2781, 1, 0, 0, 0, 2780, 2767, 1, 0, 0, 0, 2780, 2774, 1, 0, 0, 0, 2781, 143, 1, 0, 0, 0, 2782, 2783, 5, 62, 0, 0, 2783, 2784, 5, 422, 0, 0, 2784, 2785, 5, 105, 0, 0, 2785, 2786, 5, 2, 0, 0, 2786, 2787, 3, 148, 74, 0, 2787, 2788, 5, 3, 0, 0, 2788, 2809, 1, 0, 0, 0, 2789, 2790, 5, 62, 0, 0, 2790, 2791, 5, 422, 0, 0, 2791, 2792, 5, 68, 0, 0, 2792, 2793, 5, 2, 0, 0, 2793, 2794, 3, 1328, 664, 0, 2794, 2795, 5, 3, 0, 0, 2795, 2809, 1, 0, 0, 0, 2796, 2797, 5, 62, 0, 0, 2797, 2798, 5, 422, 0, 0, 2798, 2799, 5, 64, 0, 0, 2799, 2800, 5, 2, 0, 0, 2800, 2801, 3, 1328, 664, 0, 2801, 2802, 5, 3, 0, 0, 2802, 2803, 5, 94, 0, 0, 2803, 2804, 5, 2, 0, 0, 2804, 2805, 3, 1328, 664, 0, 2805, 2806, 5, 3, 0, 0, 2806, 2809, 1, 0, 0, 0, 2807, 2809, 5, 53, 0, 0, 2808, 2782, 1, 0, 0, 0, 2808, 2789, 1, 0, 0, 0, 2808, 2796, 1, 0, 0, 0, 2808, 2807, 1, 0, 0, 0, 2809, 145, 1, 0, 0, 0, 2810, 2811, 3, 1488, 744, 0, 2811, 2812, 3, 1456, 728, 0, 2812, 147, 1, 0, 0, 0, 2813, 2818, 3, 146, 73, 0, 2814, 2815, 5, 6, 0, 0, 2815, 2817, 3, 146, 73, 0, 2816, 2814, 1, 0, 0, 0, 2817, 2820, 1, 0, 0, 0, 2818, 2816, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 149, 1, 0, 0, 0, 2820, 2818, 1, 0, 0, 0, 2821, 2822, 5, 138, 0, 0, 2822, 2823, 5, 360, 0, 0, 2823, 2824, 3, 558, 279, 0, 2824, 2825, 3, 152, 76, 0, 2825, 151, 1, 0, 0, 0, 2826, 2831, 3, 154, 77, 0, 2827, 2828, 5, 6, 0, 0, 2828, 2830, 3, 154, 77, 0, 2829, 2827, 1, 0, 0, 0, 2830, 2833, 1, 0, 0, 0, 2831, 2829, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 153, 1, 0, 0, 0, 2833, 2831, 1, 0, 0, 0, 2834, 2835, 5, 133, 0, 0, 2835, 2836, 5, 143, 0, 0, 2836, 2838, 3, 1152, 576, 0, 2837, 2839, 3, 124, 62, 0, 2838, 2837, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2864, 1, 0, 0, 0, 2840, 2841, 5, 191, 0, 0, 2841, 2843, 5, 143, 0, 0, 2842, 2844, 3, 748, 374, 0, 2843, 2842, 1, 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2847, 3, 1474, 737, 0, 2846, 2848, 3, 124, 62, 0, 2847, 2846, 1, 0, 0, 0, 2847, 2848, 1, 0, 0, 0, 2848, 2864, 1, 0, 0, 0, 2849, 2850, 5, 138, 0, 0, 2850, 2851, 5, 143, 0, 0, 2851, 2853, 3, 1474, 737, 0, 2852, 2854, 3, 768, 384, 0, 2853, 2852, 1, 0, 0, 0, 2853, 2854, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 2856, 5, 360, 0, 0, 2856, 2858, 3, 1168, 584, 0, 2857, 2859, 3, 126, 63, 0, 2858, 2857, 1, 0, 0, 0, 2858, 2859, 1, 0, 0, 0, 2859, 2861, 1, 0, 0, 0, 2860, 2862, 3, 124, 62, 0, 2861, 2860, 1, 0, 0, 0, 2861, 2862, 1, 0, 0, 0, 2862, 2864, 1, 0, 0, 0, 2863, 2834, 1, 0, 0, 0, 2863, 2840, 1, 0, 0, 0, 2863, 2849, 1, 0, 0, 0, 2864, 155, 1, 0, 0, 0, 2865, 2868, 5, 157, 0, 0, 2866, 2869, 3, 994, 497, 0, 2867, 2869, 5, 30, 0, 0, 2868, 2866, 1, 0, 0, 0, 2868, 2867, 1, 0, 0, 0, 2869, 157, 1, 0, 0, 0, 2870, 2872, 5, 169, 0, 0, 2871, 2873, 3, 172, 86, 0, 2872, 2871, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2874, 1, 0, 0, 0, 2874, 2876, 3, 1406, 703, 0, 2875, 2877, 3, 240, 120, 0, 2876, 2875, 1, 0, 0, 0, 2876, 2877, 1, 0, 0, 0, 2877, 2878, 1, 0, 0, 0, 2878, 2880, 3, 160, 80, 0, 2879, 2881, 3, 162, 81, 0, 2880, 2879, 1, 0, 0, 0, 2880, 2881, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2884, 3, 164, 82, 0, 2883, 2885, 3, 174, 87, 0, 2884, 2883, 1, 0, 0, 0, 2884, 2885, 1, 0, 0, 0, 2885, 2887, 1, 0, 0, 0, 2886, 2888, 3, 14, 7, 0, 2887, 2886, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2891, 3, 166, 83, 0, 2890, 2892, 3, 1144, 572, 0, 2891, 2890, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2908, 1, 0, 0, 0, 2893, 2894, 5, 169, 0, 0, 2894, 2895, 5, 2, 0, 0, 2895, 2896, 3, 942, 471, 0, 2896, 2897, 5, 3, 0, 0, 2897, 2899, 5, 94, 0, 0, 2898, 2900, 3, 162, 81, 0, 2899, 2898, 1, 0, 0, 0, 2899, 2900, 1, 0, 0, 0, 2900, 2901, 1, 0, 0, 0, 2901, 2903, 3, 164, 82, 0, 2902, 2904, 3, 14, 7, 0, 2903, 2902, 1, 0, 0, 0, 2903, 2904, 1, 0, 0, 0, 2904, 2905, 1, 0, 0, 0, 2905, 2906, 3, 166, 83, 0, 2906, 2908, 1, 0, 0, 0, 2907, 2870, 1, 0, 0, 0, 2907, 2893, 1, 0, 0, 0, 2908, 159, 1, 0, 0, 0, 2909, 2910, 7, 24, 0, 0, 2910, 161, 1, 0, 0, 0, 2911, 2912, 5, 297, 0, 0, 2912, 163, 1, 0, 0, 0, 2913, 2917, 3, 1458, 729, 0, 2914, 2917, 5, 343, 0, 0, 2915, 2917, 5, 344, 0, 0, 2916, 2913, 1, 0, 0, 0, 2916, 2914, 1, 0, 0, 0, 2916, 2915, 1, 0, 0, 0, 2917, 165, 1, 0, 0, 0, 2918, 2924, 3, 168, 84, 0, 2919, 2920, 5, 2, 0, 0, 2920, 2921, 3, 178, 89, 0, 2921, 2922, 5, 3, 0, 0, 2922, 2924, 1, 0, 0, 0, 2923, 2918, 1, 0, 0, 0, 2923, 2919, 1, 0, 0, 0, 2924, 167, 1, 0, 0, 0, 2925, 2927, 3, 170, 85, 0, 2926, 2925, 1, 0, 0, 0, 2927, 2930, 1, 0, 0, 0, 2928, 2926, 1, 0, 0, 0, 2928, 2929, 1, 0, 0, 0, 2929, 169, 1, 0, 0, 0, 2930, 2928, 1, 0, 0, 0, 2931, 2971, 5, 107, 0, 0, 2932, 2971, 5, 112, 0, 0, 2933, 2935, 5, 183, 0, 0, 2934, 2936, 3, 872, 436, 0, 2935, 2934, 1, 0, 0, 0, 2935, 2936, 1, 0, 0, 0, 2936, 2937, 1, 0, 0, 0, 2937, 2971, 3, 1458, 729, 0, 2938, 2940, 5, 78, 0, 0, 2939, 2941, 3, 872, 436, 0, 2940, 2939, 1, 0, 0, 0, 2940, 2941, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2971, 3, 1458, 729, 0, 2943, 2971, 5, 171, 0, 0, 2944, 2971, 5, 216, 0, 0, 2945, 2947, 5, 298, 0, 0, 2946, 2948, 3, 872, 436, 0, 2947, 2946, 1, 0, 0, 0, 2947, 2948, 1, 0, 0, 0, 2948, 2949, 1, 0, 0, 0, 2949, 2971, 3, 1458, 729, 0, 2950, 2952, 5, 197, 0, 0, 2951, 2953, 3, 872, 436, 0, 2952, 2951, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2954, 1, 0, 0, 0, 2954, 2971, 3, 1458, 729, 0, 2955, 2956, 5, 209, 0, 0, 2956, 2957, 5, 298, 0, 0, 2957, 2971, 3, 244, 122, 0, 2958, 2959, 5, 209, 0, 0, 2959, 2960, 5, 298, 0, 0, 2960, 2971, 5, 9, 0, 0, 2961, 2962, 5, 209, 0, 0, 2962, 2963, 5, 77, 0, 0, 2963, 2964, 5, 78, 0, 0, 2964, 2971, 3, 244, 122, 0, 2965, 2966, 5, 209, 0, 0, 2966, 2967, 5, 78, 0, 0, 2967, 2971, 3, 244, 122, 0, 2968, 2969, 5, 194, 0, 0, 2969, 2971, 3, 1458, 729, 0, 2970, 2931, 1, 0, 0, 0, 2970, 2932, 1, 0, 0, 0, 2970, 2933, 1, 0, 0, 0, 2970, 2938, 1, 0, 0, 0, 2970, 2943, 1, 0, 0, 0, 2970, 2944, 1, 0, 0, 0, 2970, 2945, 1, 0, 0, 0, 2970, 2950, 1, 0, 0, 0, 2970, 2955, 1, 0, 0, 0, 2970, 2958, 1, 0, 0, 0, 2970, 2961, 1, 0, 0, 0, 2970, 2965, 1, 0, 0, 0, 2970, 2968, 1, 0, 0, 0, 2971, 171, 1, 0, 0, 0, 2972, 2973, 5, 107, 0, 0, 2973, 173, 1, 0, 0, 0, 2974, 2976, 3, 176, 88, 0, 2975, 2974, 1, 0, 0, 0, 2975, 2976, 1, 0, 0, 0, 2976, 2977, 1, 0, 0, 0, 2977, 2978, 5, 184, 0, 0, 2978, 2979, 3, 1458, 729, 0, 2979, 175, 1, 0, 0, 0, 2980, 2981, 5, 100, 0, 0, 2981, 177, 1, 0, 0, 0, 2982, 2987, 3, 180, 90, 0, 2983, 2984, 5, 6, 0, 0, 2984, 2986, 3, 180, 90, 0, 2985, 2983, 1, 0, 0, 0, 2986, 2989, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2987, 2988, 1, 0, 0, 0, 2988, 179, 1, 0, 0, 0, 2989, 2987, 1, 0, 0, 0, 2990, 2992, 3, 1490, 745, 0, 2991, 2993, 3, 182, 91, 0, 2992, 2991, 1, 0, 0, 0, 2992, 2993, 1, 0, 0, 0, 2993, 181, 1, 0, 0, 0, 2994, 3002, 3, 72, 36, 0, 2995, 3002, 3, 322, 161, 0, 2996, 3002, 5, 9, 0, 0, 2997, 2998, 5, 2, 0, 0, 2998, 2999, 3, 184, 92, 0, 2999, 3000, 5, 3, 0, 0, 3000, 3002, 1, 0, 0, 0, 3001, 2994, 1, 0, 0, 0, 3001, 2995, 1, 0, 0, 0, 3001, 2996, 1, 0, 0, 0, 3001, 2997, 1, 0, 0, 0, 3002, 183, 1, 0, 0, 0, 3003, 3008, 3, 186, 93, 0, 3004, 3005, 5, 6, 0, 0, 3005, 3007, 3, 186, 93, 0, 3006, 3004, 1, 0, 0, 0, 3007, 3010, 1, 0, 0, 0, 3008, 3006, 1, 0, 0, 0, 3008, 3009, 1, 0, 0, 0, 3009, 185, 1, 0, 0, 0, 3010, 3008, 1, 0, 0, 0, 3011, 3012, 3, 70, 35, 0, 3012, 187, 1, 0, 0, 0, 3013, 3015, 5, 46, 0, 0, 3014, 3016, 3, 190, 95, 0, 3015, 3014, 1, 0, 0, 0, 3015, 3016, 1, 0, 0, 0, 3016, 3017, 1, 0, 0, 0, 3017, 3019, 5, 92, 0, 0, 3018, 3020, 3, 516, 258, 0, 3019, 3018, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3087, 3, 1404, 702, 0, 3022, 3024, 5, 2, 0, 0, 3023, 3025, 3, 192, 96, 0, 3024, 3023, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3026, 1, 0, 0, 0, 3026, 3028, 5, 3, 0, 0, 3027, 3029, 3, 266, 133, 0, 3028, 3027, 1, 0, 0, 0, 3028, 3029, 1, 0, 0, 0, 3029, 3031, 1, 0, 0, 0, 3030, 3032, 3, 268, 134, 0, 3031, 3030, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3034, 1, 0, 0, 0, 3033, 3035, 3, 276, 138, 0, 3034, 3033, 1, 0, 0, 0, 3034, 3035, 1, 0, 0, 0, 3035, 3037, 1, 0, 0, 0, 3036, 3038, 3, 278, 139, 0, 3037, 3036, 1, 0, 0, 0, 3037, 3038, 1, 0, 0, 0, 3038, 3040, 1, 0, 0, 0, 3039, 3041, 3, 280, 140, 0, 3040, 3039, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 3043, 1, 0, 0, 0, 3042, 3044, 3, 282, 141, 0, 3043, 3042, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 3088, 1, 0, 0, 0, 3045, 3046, 5, 275, 0, 0, 3046, 3048, 3, 558, 279, 0, 3047, 3049, 3, 196, 98, 0, 3048, 3047, 1, 0, 0, 0, 3048, 3049, 1, 0, 0, 0, 3049, 3051, 1, 0, 0, 0, 3050, 3052, 3, 268, 134, 0, 3051, 3050, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 3054, 1, 0, 0, 0, 3053, 3055, 3, 276, 138, 0, 3054, 3053, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055, 3057, 1, 0, 0, 0, 3056, 3058, 3, 278, 139, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3060, 1, 0, 0, 0, 3059, 3061, 3, 280, 140, 0, 3060, 3059, 1, 0, 0, 0, 3060, 3061, 1, 0, 0, 0, 3061, 3063, 1, 0, 0, 0, 3062, 3064, 3, 282, 141, 0, 3063, 3062, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3088, 1, 0, 0, 0, 3065, 3066, 5, 285, 0, 0, 3066, 3067, 5, 275, 0, 0, 3067, 3069, 3, 1412, 706, 0, 3068, 3070, 3, 196, 98, 0, 3069, 3068, 1, 0, 0, 0, 3069, 3070, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3073, 3, 144, 72, 0, 3072, 3074, 3, 268, 134, 0, 3073, 3072, 1, 0, 0, 0, 3073, 3074, 1, 0, 0, 0, 3074, 3076, 1, 0, 0, 0, 3075, 3077, 3, 276, 138, 0, 3076, 3075, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 3079, 1, 0, 0, 0, 3078, 3080, 3, 278, 139, 0, 3079, 3078, 1, 0, 0, 0, 3079, 3080, 1, 0, 0, 0, 3080, 3082, 1, 0, 0, 0, 3081, 3083, 3, 280, 140, 0, 3082, 3081, 1, 0, 0, 0, 3082, 3083, 1, 0, 0, 0, 3083, 3085, 1, 0, 0, 0, 3084, 3086, 3, 282, 141, 0, 3085, 3084, 1, 0, 0, 0, 3085, 3086, 1, 0, 0, 0, 3086, 3088, 1, 0, 0, 0, 3087, 3022, 1, 0, 0, 0, 3087, 3045, 1, 0, 0, 0, 3087, 3065, 1, 0, 0, 0, 3088, 189, 1, 0, 0, 0, 3089, 3097, 5, 354, 0, 0, 3090, 3097, 5, 352, 0, 0, 3091, 3092, 5, 254, 0, 0, 3092, 3097, 7, 25, 0, 0, 3093, 3094, 5, 213, 0, 0, 3094, 3097, 7, 25, 0, 0, 3095, 3097, 5, 367, 0, 0, 3096, 3089, 1, 0, 0, 0, 3096, 3090, 1, 0, 0, 0, 3096, 3091, 1, 0, 0, 0, 3096, 3093, 1, 0, 0, 0, 3096, 3095, 1, 0, 0, 0, 3097, 191, 1, 0, 0, 0, 3098, 3099, 3, 198, 99, 0, 3099, 193, 1, 0, 0, 0, 3100, 3101, 3, 198, 99, 0, 3101, 195, 1, 0, 0, 0, 3102, 3103, 5, 2, 0, 0, 3103, 3104, 3, 200, 100, 0, 3104, 3105, 5, 3, 0, 0, 3105, 197, 1, 0, 0, 0, 3106, 3111, 3, 202, 101, 0, 3107, 3108, 5, 6, 0, 0, 3108, 3110, 3, 202, 101, 0, 3109, 3107, 1, 0, 0, 0, 3110, 3113, 1, 0, 0, 0, 3111, 3109, 1, 0, 0, 0, 3111, 3112, 1, 0, 0, 0, 3112, 199, 1, 0, 0, 0, 3113, 3111, 1, 0, 0, 0, 3114, 3119, 3, 204, 102, 0, 3115, 3116, 5, 6, 0, 0, 3116, 3118, 3, 204, 102, 0, 3117, 3115, 1, 0, 0, 0, 3118, 3121, 1, 0, 0, 0, 3119, 3117, 1, 0, 0, 0, 3119, 3120, 1, 0, 0, 0, 3120, 201, 1, 0, 0, 0, 3121, 3119, 1, 0, 0, 0, 3122, 3126, 3, 206, 103, 0, 3123, 3126, 3, 228, 114, 0, 3124, 3126, 3, 234, 117, 0, 3125, 3122, 1, 0, 0, 0, 3125, 3123, 1, 0, 0, 0, 3125, 3124, 1, 0, 0, 0, 3126, 203, 1, 0, 0, 0, 3127, 3130, 3, 212, 106, 0, 3128, 3130, 3, 234, 117, 0, 3129, 3127, 1, 0, 0, 0, 3129, 3128, 1, 0, 0, 0, 3130, 205, 1, 0, 0, 0, 3131, 3132, 3, 1434, 717, 0, 3132, 3134, 3, 1168, 584, 0, 3133, 3135, 3, 368, 184, 0, 3134, 3133, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 3137, 1, 0, 0, 0, 3136, 3138, 3, 210, 105, 0, 3137, 3136, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 3140, 1, 0, 0, 0, 3139, 3141, 3, 208, 104, 0, 3140, 3139, 1, 0, 0, 0, 3140, 3141, 1, 0, 0, 0, 3141, 3144, 1, 0, 0, 0, 3142, 3143, 5, 43, 0, 0, 3143, 3145, 3, 558, 279, 0, 3144, 3142, 1, 0, 0, 0, 3144, 3145, 1, 0, 0, 0, 3145, 3148, 1, 0, 0, 0, 3146, 3147, 5, 105, 0, 0, 3147, 3149, 5, 280, 0, 0, 3148, 3146, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3150, 1, 0, 0, 0, 3150, 3151, 3, 214, 107, 0, 3151, 207, 1, 0, 0, 0, 3152, 3153, 5, 543, 0, 0, 3153, 3154, 3, 1474, 737, 0, 3154, 209, 1, 0, 0, 0, 3155, 3162, 5, 345, 0, 0, 3156, 3163, 5, 544, 0, 0, 3157, 3163, 5, 205, 0, 0, 3158, 3163, 5, 545, 0, 0, 3159, 3163, 5, 546, 0, 0, 3160, 3163, 5, 53, 0, 0, 3161, 3163, 3, 1474, 737, 0, 3162, 3156, 1, 0, 0, 0, 3162, 3157, 1, 0, 0, 0, 3162, 3158, 1, 0, 0, 0, 3162, 3159, 1, 0, 0, 0, 3162, 3160, 1, 0, 0, 0, 3162, 3161, 1, 0, 0, 0, 3163, 211, 1, 0, 0, 0, 3164, 3167, 3, 1434, 717, 0, 3165, 3166, 5, 105, 0, 0, 3166, 3168, 5, 280, 0, 0, 3167, 3165, 1, 0, 0, 0, 3167, 3168, 1, 0, 0, 0, 3168, 3169, 1, 0, 0, 0, 3169, 3170, 3, 214, 107, 0, 3170, 213, 1, 0, 0, 0, 3171, 3173, 3, 216, 108, 0, 3172, 3171, 1, 0, 0, 0, 3173, 3176, 1, 0, 0, 0, 3174, 3172, 1, 0, 0, 0, 3174, 3175, 1, 0, 0, 0, 3175, 215, 1, 0, 0, 0, 3176, 3174, 1, 0, 0, 0, 3177, 3178, 5, 45, 0, 0, 3178, 3180, 3, 1436, 718, 0, 3179, 3177, 1, 0, 0, 0, 3179, 3180, 1, 0, 0, 0, 3180, 3181, 1, 0, 0, 0, 3181, 3183, 3, 218, 109, 0, 3182, 3184, 3, 224, 112, 0, 3183, 3182, 1, 0, 0, 0, 3183, 3184, 1, 0, 0, 0, 3184, 3186, 1, 0, 0, 0, 3185, 3187, 3, 226, 113, 0, 3186, 3185, 1, 0, 0, 0, 3186, 3187, 1, 0, 0, 0, 3187, 3196, 1, 0, 0, 0, 3188, 3190, 3, 218, 109, 0, 3189, 3191, 3, 224, 112, 0, 3190, 3189, 1, 0, 0, 0, 3190, 3191, 1, 0, 0, 0, 3191, 3193, 1, 0, 0, 0, 3192, 3194, 3, 226, 113, 0, 3193, 3192, 1, 0, 0, 0, 3193, 3194, 1, 0, 0, 0, 3194, 3196, 1, 0, 0, 0, 3195, 3179, 1, 0, 0, 0, 3195, 3188, 1, 0, 0, 0, 3196, 217, 1, 0, 0, 0, 3197, 3198, 5, 77, 0, 0, 3198, 3256, 5, 78, 0, 0, 3199, 3256, 5, 78, 0, 0, 3200, 3202, 5, 98, 0, 0, 3201, 3203, 3, 710, 355, 0, 3202, 3201, 1, 0, 0, 0, 3202, 3203, 1, 0, 0, 0, 3203, 3205, 1, 0, 0, 0, 3204, 3206, 3, 286, 143, 0, 3205, 3204, 1, 0, 0, 0, 3205, 3206, 1, 0, 0, 0, 3206, 3256, 1, 0, 0, 0, 3207, 3209, 5, 98, 0, 0, 3208, 3210, 3, 220, 110, 0, 3209, 3208, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3256, 3, 284, 142, 0, 3212, 3213, 5, 85, 0, 0, 3213, 3215, 5, 245, 0, 0, 3214, 3216, 3, 710, 355, 0, 3215, 3214, 1, 0, 0, 0, 3215, 3216, 1, 0, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3219, 3, 286, 143, 0, 3218, 3217, 1, 0, 0, 0, 3218, 3219, 1, 0, 0, 0, 3219, 3256, 1, 0, 0, 0, 3220, 3221, 5, 42, 0, 0, 3221, 3222, 5, 2, 0, 0, 3222, 3223, 3, 1212, 606, 0, 3223, 3225, 5, 3, 0, 0, 3224, 3226, 3, 238, 119, 0, 3225, 3224, 1, 0, 0, 0, 3225, 3226, 1, 0, 0, 0, 3226, 3256, 1, 0, 0, 0, 3227, 3228, 5, 53, 0, 0, 3228, 3256, 3, 1252, 626, 0, 3229, 3230, 5, 438, 0, 0, 3230, 3231, 3, 222, 111, 0, 3231, 3241, 5, 36, 0, 0, 3232, 3234, 5, 219, 0, 0, 3233, 3235, 3, 314, 157, 0, 3234, 3233, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3242, 1, 0, 0, 0, 3236, 3237, 5, 2, 0, 0, 3237, 3238, 3, 1212, 606, 0, 3238, 3239, 5, 3, 0, 0, 3239, 3240, 5, 440, 0, 0, 3240, 3242, 1, 0, 0, 0, 3241, 3232, 1, 0, 0, 0, 3241, 3236, 1, 0, 0, 0, 3242, 3256, 1, 0, 0, 0, 3243, 3244, 5, 86, 0, 0, 3244, 3246, 3, 1412, 706, 0, 3245, 3247, 3, 240, 120, 0, 3246, 3245, 1, 0, 0, 0, 3246, 3247, 1, 0, 0, 0, 3247, 3249, 1, 0, 0, 0, 3248, 3250, 3, 250, 125, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3252, 1, 0, 0, 0, 3251, 3253, 3, 258, 129, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3256, 1, 0, 0, 0, 3254, 3256, 3, 646, 323, 0, 3255, 3197, 1, 0, 0, 0, 3255, 3199, 1, 0, 0, 0, 3255, 3200, 1, 0, 0, 0, 3255, 3207, 1, 0, 0, 0, 3255, 3212, 1, 0, 0, 0, 3255, 3220, 1, 0, 0, 0, 3255, 3227, 1, 0, 0, 0, 3255, 3229, 1, 0, 0, 0, 3255, 3243, 1, 0, 0, 0, 3255, 3254, 1, 0, 0, 0, 3256, 219, 1, 0, 0, 0, 3257, 3259, 5, 273, 0, 0, 3258, 3260, 5, 77, 0, 0, 3259, 3258, 1, 0, 0, 0, 3259, 3260, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3262, 5, 56, 0, 0, 3262, 221, 1, 0, 0, 0, 3263, 3267, 5, 139, 0, 0, 3264, 3265, 5, 147, 0, 0, 3265, 3267, 5, 53, 0, 0, 3266, 3263, 1, 0, 0, 0, 3266, 3264, 1, 0, 0, 0, 3267, 223, 1, 0, 0, 0, 3268, 3272, 5, 54, 0, 0, 3269, 3270, 5, 77, 0, 0, 3270, 3272, 5, 54, 0, 0, 3271, 3268, 1, 0, 0, 0, 3271, 3269, 1, 0, 0, 0, 3272, 225, 1, 0, 0, 0, 3273, 3274, 5, 69, 0, 0, 3274, 3275, 7, 16, 0, 0, 3275, 227, 1, 0, 0, 0, 3276, 3277, 5, 120, 0, 0, 3277, 3278, 3, 1412, 706, 0, 3278, 3279, 3, 230, 115, 0, 3279, 229, 1, 0, 0, 0, 3280, 3281, 7, 26, 0, 0, 3281, 3283, 3, 232, 116, 0, 3282, 3280, 1, 0, 0, 0, 3283, 3286, 1, 0, 0, 0, 3284, 3282, 1, 0, 0, 0, 3284, 3285, 1, 0, 0, 0, 3285, 231, 1, 0, 0, 0, 3286, 3284, 1, 0, 0, 0, 3287, 3288, 7, 27, 0, 0, 3288, 233, 1, 0, 0, 0, 3289, 3290, 5, 45, 0, 0, 3290, 3291, 3, 1436, 718, 0, 3291, 3292, 3, 236, 118, 0, 3292, 3295, 1, 0, 0, 0, 3293, 3295, 3, 236, 118, 0, 3294, 3289, 1, 0, 0, 0, 3294, 3293, 1, 0, 0, 0, 3295, 235, 1, 0, 0, 0, 3296, 3297, 5, 42, 0, 0, 3297, 3298, 5, 2, 0, 0, 3298, 3299, 3, 1212, 606, 0, 3299, 3300, 5, 3, 0, 0, 3300, 3301, 3, 476, 238, 0, 3301, 3383, 1, 0, 0, 0, 3302, 3320, 5, 98, 0, 0, 3303, 3304, 5, 2, 0, 0, 3304, 3305, 3, 244, 122, 0, 3305, 3307, 5, 3, 0, 0, 3306, 3308, 3, 248, 124, 0, 3307, 3306, 1, 0, 0, 0, 3307, 3308, 1, 0, 0, 0, 3308, 3310, 1, 0, 0, 0, 3309, 3311, 3, 710, 355, 0, 3310, 3309, 1, 0, 0, 0, 3310, 3311, 1, 0, 0, 0, 3311, 3313, 1, 0, 0, 0, 3312, 3314, 3, 286, 143, 0, 3313, 3312, 1, 0, 0, 0, 3313, 3314, 1, 0, 0, 0, 3314, 3315, 1, 0, 0, 0, 3315, 3316, 3, 476, 238, 0, 3316, 3321, 1, 0, 0, 0, 3317, 3318, 3, 288, 144, 0, 3318, 3319, 3, 476, 238, 0, 3319, 3321, 1, 0, 0, 0, 3320, 3303, 1, 0, 0, 0, 3320, 3317, 1, 0, 0, 0, 3321, 3383, 1, 0, 0, 0, 3322, 3323, 5, 85, 0, 0, 3323, 3341, 5, 245, 0, 0, 3324, 3325, 5, 2, 0, 0, 3325, 3326, 3, 244, 122, 0, 3326, 3328, 5, 3, 0, 0, 3327, 3329, 3, 248, 124, 0, 3328, 3327, 1, 0, 0, 0, 3328, 3329, 1, 0, 0, 0, 3329, 3331, 1, 0, 0, 0, 3330, 3332, 3, 710, 355, 0, 3331, 3330, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 3334, 1, 0, 0, 0, 3333, 3335, 3, 286, 143, 0, 3334, 3333, 1, 0, 0, 0, 3334, 3335, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 3337, 3, 476, 238, 0, 3337, 3342, 1, 0, 0, 0, 3338, 3339, 3, 288, 144, 0, 3339, 3340, 3, 476, 238, 0, 3340, 3342, 1, 0, 0, 0, 3341, 3324, 1, 0, 0, 0, 3341, 3338, 1, 0, 0, 0, 3342, 3383, 1, 0, 0, 0, 3343, 3345, 5, 199, 0, 0, 3344, 3346, 3, 634, 317, 0, 3345, 3344, 1, 0, 0, 0, 3345, 3346, 1, 0, 0, 0, 3346, 3347, 1, 0, 0, 0, 3347, 3348, 5, 2, 0, 0, 3348, 3349, 3, 252, 126, 0, 3349, 3351, 5, 3, 0, 0, 3350, 3352, 3, 248, 124, 0, 3351, 3350, 1, 0, 0, 0, 3351, 3352, 1, 0, 0, 0, 3352, 3354, 1, 0, 0, 0, 3353, 3355, 3, 710, 355, 0, 3354, 3353, 1, 0, 0, 0, 3354, 3355, 1, 0, 0, 0, 3355, 3357, 1, 0, 0, 0, 3356, 3358, 3, 286, 143, 0, 3357, 3356, 1, 0, 0, 0, 3357, 3358, 1, 0, 0, 0, 3358, 3360, 1, 0, 0, 0, 3359, 3361, 3, 256, 128, 0, 3360, 3359, 1, 0, 0, 0, 3360, 3361, 1, 0, 0, 0, 3361, 3362, 1, 0, 0, 0, 3362, 3363, 3, 476, 238, 0, 3363, 3383, 1, 0, 0, 0, 3364, 3365, 5, 63, 0, 0, 3365, 3366, 5, 245, 0, 0, 3366, 3367, 5, 2, 0, 0, 3367, 3368, 3, 244, 122, 0, 3368, 3369, 5, 3, 0, 0, 3369, 3370, 5, 86, 0, 0, 3370, 3372, 3, 1412, 706, 0, 3371, 3373, 3, 240, 120, 0, 3372, 3371, 1, 0, 0, 0, 3372, 3373, 1, 0, 0, 0, 3373, 3375, 1, 0, 0, 0, 3374, 3376, 3, 250, 125, 0, 3375, 3374, 1, 0, 0, 0, 3375, 3376, 1, 0, 0, 0, 3376, 3378, 1, 0, 0, 0, 3377, 3379, 3, 258, 129, 0, 3378, 3377, 1, 0, 0, 0, 3378, 3379, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3381, 3, 476, 238, 0, 3381, 3383, 1, 0, 0, 0, 3382, 3296, 1, 0, 0, 0, 3382, 3302, 1, 0, 0, 0, 3382, 3322, 1, 0, 0, 0, 3382, 3343, 1, 0, 0, 0, 3382, 3364, 1, 0, 0, 0, 3383, 237, 1, 0, 0, 0, 3384, 3385, 5, 269, 0, 0, 3385, 3386, 5, 228, 0, 0, 3386, 239, 1, 0, 0, 0, 3387, 3388, 5, 2, 0, 0, 3388, 3389, 3, 244, 122, 0, 3389, 3390, 5, 3, 0, 0, 3390, 241, 1, 0, 0, 0, 3391, 3392, 5, 2, 0, 0, 3392, 3393, 3, 246, 123, 0, 3393, 3394, 5, 3, 0, 0, 3394, 243, 1, 0, 0, 0, 3395, 3400, 3, 1432, 716, 0, 3396, 3397, 5, 6, 0, 0, 3397, 3399, 3, 1432, 716, 0, 3398, 3396, 1, 0, 0, 0, 3399, 3402, 1, 0, 0, 0, 3400, 3398, 1, 0, 0, 0, 3400, 3401, 1, 0, 0, 0, 3401, 245, 1, 0, 0, 0, 3402, 3400, 1, 0, 0, 0, 3403, 3408, 3, 1434, 717, 0, 3404, 3405, 5, 6, 0, 0, 3405, 3407, 3, 1434, 717, 0, 3406, 3404, 1, 0, 0, 0, 3407, 3410, 1, 0, 0, 0, 3408, 3406, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 247, 1, 0, 0, 0, 3410, 3408, 1, 0, 0, 0, 3411, 3412, 5, 441, 0, 0, 3412, 3413, 5, 2, 0, 0, 3413, 3414, 3, 244, 122, 0, 3414, 3415, 5, 3, 0, 0, 3415, 249, 1, 0, 0, 0, 3416, 3417, 5, 258, 0, 0, 3417, 3418, 7, 28, 0, 0, 3418, 251, 1, 0, 0, 0, 3419, 3424, 3, 254, 127, 0, 3420, 3421, 5, 6, 0, 0, 3421, 3423, 3, 254, 127, 0, 3422, 3420, 1, 0, 0, 0, 3423, 3426, 1, 0, 0, 0, 3424, 3422, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 253, 1, 0, 0, 0, 3426, 3424, 1, 0, 0, 0, 3427, 3428, 3, 640, 320, 0, 3428, 3435, 5, 105, 0, 0, 3429, 3436, 3, 732, 366, 0, 3430, 3431, 5, 278, 0, 0, 3431, 3432, 5, 2, 0, 0, 3432, 3433, 3, 732, 366, 0, 3433, 3434, 5, 3, 0, 0, 3434, 3436, 1, 0, 0, 0, 3435, 3429, 1, 0, 0, 0, 3435, 3430, 1, 0, 0, 0, 3436, 255, 1, 0, 0, 0, 3437, 3438, 5, 103, 0, 0, 3438, 3439, 5, 2, 0, 0, 3439, 3440, 3, 1212, 606, 0, 3440, 3441, 5, 3, 0, 0, 3441, 257, 1, 0, 0, 0, 3442, 3451, 3, 260, 130, 0, 3443, 3451, 3, 262, 131, 0, 3444, 3445, 3, 260, 130, 0, 3445, 3446, 3, 262, 131, 0, 3446, 3451, 1, 0, 0, 0, 3447, 3448, 3, 262, 131, 0, 3448, 3449, 3, 260, 130, 0, 3449, 3451, 1, 0, 0, 0, 3450, 3442, 1, 0, 0, 0, 3450, 3443, 1, 0, 0, 0, 3450, 3444, 1, 0, 0, 0, 3450, 3447, 1, 0, 0, 0, 3451, 259, 1, 0, 0, 0, 3452, 3453, 5, 80, 0, 0, 3453, 3454, 5, 369, 0, 0, 3454, 3455, 3, 264, 132, 0, 3455, 261, 1, 0, 0, 0, 3456, 3457, 5, 80, 0, 0, 3457, 3458, 5, 182, 0, 0, 3458, 3459, 3, 264, 132, 0, 3459, 263, 1, 0, 0, 0, 3460, 3461, 5, 269, 0, 0, 3461, 3470, 5, 132, 0, 0, 3462, 3470, 5, 315, 0, 0, 3463, 3470, 5, 150, 0, 0, 3464, 3465, 5, 333, 0, 0, 3465, 3467, 7, 29, 0, 0, 3466, 3468, 3, 244, 122, 0, 3467, 3466, 1, 0, 0, 0, 3467, 3468, 1, 0, 0, 0, 3468, 3470, 1, 0, 0, 0, 3469, 3460, 1, 0, 0, 0, 3469, 3462, 1, 0, 0, 0, 3469, 3463, 1, 0, 0, 0, 3469, 3464, 1, 0, 0, 0, 3470, 265, 1, 0, 0, 0, 3471, 3472, 5, 238, 0, 0, 3472, 3473, 5, 2, 0, 0, 3473, 3474, 3, 1390, 695, 0, 3474, 3475, 5, 3, 0, 0, 3475, 267, 1, 0, 0, 0, 3476, 3477, 3, 270, 135, 0, 3477, 269, 1, 0, 0, 0, 3478, 3479, 5, 285, 0, 0, 3479, 3480, 5, 147, 0, 0, 3480, 3481, 3, 1474, 737, 0, 3481, 3482, 5, 2, 0, 0, 3482, 3483, 3, 272, 136, 0, 3483, 3484, 5, 3, 0, 0, 3484, 271, 1, 0, 0, 0, 3485, 3490, 3, 274, 137, 0, 3486, 3487, 5, 6, 0, 0, 3487, 3489, 3, 274, 137, 0, 3488, 3486, 1, 0, 0, 0, 3489, 3492, 1, 0, 0, 0, 3490, 3488, 1, 0, 0, 0, 3490, 3491, 1, 0, 0, 0, 3491, 273, 1, 0, 0, 0, 3492, 3490, 1, 0, 0, 0, 3493, 3495, 3, 1432, 716, 0, 3494, 3496, 3, 646, 323, 0, 3495, 3494, 1, 0, 0, 0, 3495, 3496, 1, 0, 0, 0, 3496, 3498, 1, 0, 0, 0, 3497, 3499, 3, 648, 324, 0, 3498, 3497, 1, 0, 0, 0, 3498, 3499, 1, 0, 0, 0, 3499, 3517, 1, 0, 0, 0, 3500, 3502, 3, 1262, 631, 0, 3501, 3503, 3, 646, 323, 0, 3502, 3501, 1, 0, 0, 0, 3502, 3503, 1, 0, 0, 0, 3503, 3505, 1, 0, 0, 0, 3504, 3506, 3, 648, 324, 0, 3505, 3504, 1, 0, 0, 0, 3505, 3506, 1, 0, 0, 0, 3506, 3517, 1, 0, 0, 0, 3507, 3508, 5, 2, 0, 0, 3508, 3509, 3, 1212, 606, 0, 3509, 3511, 5, 3, 0, 0, 3510, 3512, 3, 646, 323, 0, 3511, 3510, 1, 0, 0, 0, 3511, 3512, 1, 0, 0, 0, 3512, 3514, 1, 0, 0, 0, 3513, 3515, 3, 648, 324, 0, 3514, 3513, 1, 0, 0, 0, 3514, 3515, 1, 0, 0, 0, 3515, 3517, 1, 0, 0, 0, 3516, 3493, 1, 0, 0, 0, 3516, 3500, 1, 0, 0, 0, 3516, 3507, 1, 0, 0, 0, 3517, 275, 1, 0, 0, 0, 3518, 3519, 5, 100, 0, 0, 3519, 3520, 3, 1436, 718, 0, 3520, 277, 1, 0, 0, 0, 3521, 3522, 5, 105, 0, 0, 3522, 3528, 3, 132, 66, 0, 3523, 3524, 5, 379, 0, 0, 3524, 3528, 5, 277, 0, 0, 3525, 3526, 5, 105, 0, 0, 3526, 3528, 5, 277, 0, 0, 3527, 3521, 1, 0, 0, 0, 3527, 3523, 1, 0, 0, 0, 3527, 3525, 1, 0, 0, 0, 3528, 279, 1, 0, 0, 0, 3529, 3530, 5, 80, 0, 0, 3530, 3536, 5, 161, 0, 0, 3531, 3537, 5, 191, 0, 0, 3532, 3533, 5, 182, 0, 0, 3533, 3537, 5, 320, 0, 0, 3534, 3535, 5, 292, 0, 0, 3535, 3537, 5, 320, 0, 0, 3536, 3531, 1, 0, 0, 0, 3536, 3532, 1, 0, 0, 0, 3536, 3534, 1, 0, 0, 0, 3537, 281, 1, 0, 0, 0, 3538, 3539, 5, 351, 0, 0, 3539, 3540, 3, 1402, 701, 0, 3540, 283, 1, 0, 0, 0, 3541, 3543, 3, 642, 321, 0, 3542, 3541, 1, 0, 0, 0, 3542, 3543, 1, 0, 0, 0, 3543, 3545, 1, 0, 0, 0, 3544, 3546, 3, 1014, 507, 0, 3545, 3544, 1, 0, 0, 0, 3545, 3546, 1, 0, 0, 0, 3546, 3548, 1, 0, 0, 0, 3547, 3549, 3, 286, 143, 0, 3548, 3547, 1, 0, 0, 0, 3548, 3549, 1, 0, 0, 0, 3549, 285, 1, 0, 0, 0, 3550, 3551, 5, 100, 0, 0, 3551, 3552, 5, 226, 0, 0, 3552, 3553, 5, 351, 0, 0, 3553, 3554, 3, 1402, 701, 0, 3554, 287, 1, 0, 0, 0, 3555, 3556, 5, 100, 0, 0, 3556, 3557, 5, 226, 0, 0, 3557, 3558, 3, 1436, 718, 0, 3558, 289, 1, 0, 0, 0, 3559, 3560, 5, 46, 0, 0, 3560, 3565, 5, 342, 0, 0, 3561, 3563, 3, 516, 258, 0, 3562, 3561, 1, 0, 0, 0, 3562, 3563, 1, 0, 0, 0, 3563, 3564, 1, 0, 0, 0, 3564, 3566, 3, 558, 279, 0, 3565, 3562, 1, 0, 0, 0, 3565, 3566, 1, 0, 0, 0, 3566, 3568, 1, 0, 0, 0, 3567, 3569, 3, 918, 459, 0, 3568, 3567, 1, 0, 0, 0, 3568, 3569, 1, 0, 0, 0, 3569, 3570, 1, 0, 0, 0, 3570, 3573, 5, 80, 0, 0, 3571, 3574, 3, 1332, 666, 0, 3572, 3574, 3, 1328, 664, 0, 3573, 3571, 1, 0, 0, 0, 3573, 3572, 1, 0, 0, 0, 3574, 3575, 1, 0, 0, 0, 3575, 3576, 5, 64, 0, 0, 3576, 3577, 3, 1104, 552, 0, 3577, 291, 1, 0, 0, 0, 3578, 3579, 5, 138, 0, 0, 3579, 3581, 5, 342, 0, 0, 3580, 3582, 3, 748, 374, 0, 3581, 3580, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3583, 1, 0, 0, 0, 3583, 3584, 3, 558, 279, 0, 3584, 3585, 5, 333, 0, 0, 3585, 3586, 5, 342, 0, 0, 3586, 3587, 3, 1464, 732, 0, 3587, 293, 1, 0, 0, 0, 3588, 3590, 5, 46, 0, 0, 3589, 3591, 3, 190, 95, 0, 3590, 3589, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3592, 1, 0, 0, 0, 3592, 3594, 5, 92, 0, 0, 3593, 3595, 3, 516, 258, 0, 3594, 3593, 1, 0, 0, 0, 3594, 3595, 1, 0, 0, 0, 3595, 3596, 1, 0, 0, 0, 3596, 3597, 3, 296, 148, 0, 3597, 3598, 5, 36, 0, 0, 3598, 3600, 3, 1000, 500, 0, 3599, 3601, 3, 298, 149, 0, 3600, 3599, 1, 0, 0, 0, 3600, 3601, 1, 0, 0, 0, 3601, 295, 1, 0, 0, 0, 3602, 3604, 3, 1404, 702, 0, 3603, 3605, 3, 242, 121, 0, 3604, 3603, 1, 0, 0, 0, 3604, 3605, 1, 0, 0, 0, 3605, 3607, 1, 0, 0, 0, 3606, 3608, 3, 276, 138, 0, 3607, 3606, 1, 0, 0, 0, 3607, 3608, 1, 0, 0, 0, 3608, 3610, 1, 0, 0, 0, 3609, 3611, 3, 278, 139, 0, 3610, 3609, 1, 0, 0, 0, 3610, 3611, 1, 0, 0, 0, 3611, 3613, 1, 0, 0, 0, 3612, 3614, 3, 280, 140, 0, 3613, 3612, 1, 0, 0, 0, 3613, 3614, 1, 0, 0, 0, 3614, 3616, 1, 0, 0, 0, 3615, 3617, 3, 282, 141, 0, 3616, 3615, 1, 0, 0, 0, 3616, 3617, 1, 0, 0, 0, 3617, 297, 1, 0, 0, 0, 3618, 3622, 5, 105, 0, 0, 3619, 3623, 5, 174, 0, 0, 3620, 3621, 5, 269, 0, 0, 3621, 3623, 5, 174, 0, 0, 3622, 3619, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3623, 299, 1, 0, 0, 0, 3624, 3626, 5, 46, 0, 0, 3625, 3627, 3, 304, 152, 0, 3626, 3625, 1, 0, 0, 0, 3626, 3627, 1, 0, 0, 0, 3627, 3628, 1, 0, 0, 0, 3628, 3629, 5, 259, 0, 0, 3629, 3631, 5, 376, 0, 0, 3630, 3632, 3, 516, 258, 0, 3631, 3630, 1, 0, 0, 0, 3631, 3632, 1, 0, 0, 0, 3632, 3633, 1, 0, 0, 0, 3633, 3634, 3, 302, 151, 0, 3634, 3635, 5, 36, 0, 0, 3635, 3637, 3, 1000, 500, 0, 3636, 3638, 3, 298, 149, 0, 3637, 3636, 1, 0, 0, 0, 3637, 3638, 1, 0, 0, 0, 3638, 301, 1, 0, 0, 0, 3639, 3641, 3, 1408, 704, 0, 3640, 3642, 3, 242, 121, 0, 3641, 3640, 1, 0, 0, 0, 3641, 3642, 1, 0, 0, 0, 3642, 3644, 1, 0, 0, 0, 3643, 3645, 3, 276, 138, 0, 3644, 3643, 1, 0, 0, 0, 3644, 3645, 1, 0, 0, 0, 3645, 3647, 1, 0, 0, 0, 3646, 3648, 3, 134, 67, 0, 3647, 3646, 1, 0, 0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3650, 1, 0, 0, 0, 3649, 3651, 3, 282, 141, 0, 3650, 3649, 1, 0, 0, 0, 3650, 3651, 1, 0, 0, 0, 3651, 303, 1, 0, 0, 0, 3652, 3653, 5, 367, 0, 0, 3653, 305, 1, 0, 0, 0, 3654, 3655, 5, 305, 0, 0, 3655, 3656, 5, 259, 0, 0, 3656, 3658, 5, 376, 0, 0, 3657, 3659, 3, 630, 315, 0, 3658, 3657, 1, 0, 0, 0, 3658, 3659, 1, 0, 0, 0, 3659, 3660, 1, 0, 0, 0, 3660, 3662, 3, 1410, 705, 0, 3661, 3663, 3, 298, 149, 0, 3662, 3661, 1, 0, 0, 0, 3662, 3663, 1, 0, 0, 0, 3663, 307, 1, 0, 0, 0, 3664, 3666, 5, 46, 0, 0, 3665, 3667, 3, 190, 95, 0, 3666, 3665, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3668, 1, 0, 0, 0, 3668, 3670, 5, 328, 0, 0, 3669, 3671, 3, 516, 258, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3672, 1, 0, 0, 0, 3672, 3674, 3, 1412, 706, 0, 3673, 3675, 3, 312, 156, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 309, 1, 0, 0, 0, 3676, 3677, 5, 138, 0, 0, 3677, 3679, 5, 328, 0, 0, 3678, 3680, 3, 748, 374, 0, 3679, 3678, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3681, 1, 0, 0, 0, 3681, 3682, 3, 1412, 706, 0, 3682, 3683, 3, 316, 158, 0, 3683, 311, 1, 0, 0, 0, 3684, 3685, 3, 316, 158, 0, 3685, 313, 1, 0, 0, 0, 3686, 3687, 5, 2, 0, 0, 3687, 3688, 3, 316, 158, 0, 3688, 3689, 5, 3, 0, 0, 3689, 315, 1, 0, 0, 0, 3690, 3692, 3, 318, 159, 0, 3691, 3690, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693, 3691, 1, 0, 0, 0, 3693, 3694, 1, 0, 0, 0, 3694, 317, 1, 0, 0, 0, 3695, 3696, 5, 36, 0, 0, 3696, 3730, 3, 1172, 586, 0, 3697, 3698, 5, 148, 0, 0, 3698, 3730, 3, 322, 161, 0, 3699, 3730, 5, 173, 0, 0, 3700, 3702, 5, 225, 0, 0, 3701, 3703, 3, 320, 160, 0, 3702, 3701, 1, 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3704, 1, 0, 0, 0, 3704, 3730, 3, 322, 161, 0, 3705, 3706, 5, 260, 0, 0, 3706, 3730, 3, 322, 161, 0, 3707, 3708, 5, 262, 0, 0, 3708, 3730, 3, 322, 161, 0, 3709, 3710, 5, 269, 0, 0, 3710, 3730, 7, 30, 0, 0, 3711, 3712, 5, 281, 0, 0, 3712, 3713, 5, 147, 0, 0, 3713, 3730, 3, 1432, 716, 0, 3714, 3715, 5, 328, 0, 0, 3715, 3716, 5, 266, 0, 0, 3716, 3730, 3, 558, 279, 0, 3717, 3719, 5, 340, 0, 0, 3718, 3720, 3, 14, 7, 0, 3719, 3718, 1, 0, 0, 0, 3719, 3720, 1, 0, 0, 0, 3720, 3721, 1, 0, 0, 0, 3721, 3730, 3, 322, 161, 0, 3722, 3724, 5, 314, 0, 0, 3723, 3725, 3, 14, 7, 0, 3724, 3723, 1, 0, 0, 0, 3724, 3725, 1, 0, 0, 0, 3725, 3727, 1, 0, 0, 0, 3726, 3728, 3, 322, 161, 0, 3727, 3726, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3730, 1, 0, 0, 0, 3729, 3695, 1, 0, 0, 0, 3729, 3697, 1, 0, 0, 0, 3729, 3699, 1, 0, 0, 0, 3729, 3700, 1, 0, 0, 0, 3729, 3705, 1, 0, 0, 0, 3729, 3707, 1, 0, 0, 0, 3729, 3709, 1, 0, 0, 0, 3729, 3711, 1, 0, 0, 0, 3729, 3714, 1, 0, 0, 0, 3729, 3717, 1, 0, 0, 0, 3729, 3722, 1, 0, 0, 0, 3730, 319, 1, 0, 0, 0, 3731, 3732, 5, 147, 0, 0, 3732, 321, 1, 0, 0, 0, 3733, 3740, 3, 1454, 727, 0, 3734, 3735, 5, 12, 0, 0, 3735, 3740, 3, 1454, 727, 0, 3736, 3737, 5, 13, 0, 0, 3737, 3740, 3, 1454, 727, 0, 3738, 3740, 3, 1464, 732, 0, 3739, 3733, 1, 0, 0, 0, 3739, 3734, 1, 0, 0, 0, 3739, 3736, 1, 0, 0, 0, 3739, 3738, 1, 0, 0, 0, 3740, 323, 1, 0, 0, 0, 3741, 3746, 3, 322, 161, 0, 3742, 3743, 5, 6, 0, 0, 3743, 3745, 3, 322, 161, 0, 3744, 3742, 1, 0, 0, 0, 3745, 3748, 1, 0, 0, 0, 3746, 3744, 1, 0, 0, 0, 3746, 3747, 1, 0, 0, 0, 3747, 325, 1, 0, 0, 0, 3748, 3746, 1, 0, 0, 0, 3749, 3751, 5, 46, 0, 0, 3750, 3752, 3, 658, 329, 0, 3751, 3750, 1, 0, 0, 0, 3751, 3752, 1, 0, 0, 0, 3752, 3754, 1, 0, 0, 0, 3753, 3755, 3, 328, 164, 0, 3754, 3753, 1, 0, 0, 0, 3754, 3755, 1, 0, 0, 0, 3755, 3757, 1, 0, 0, 0, 3756, 3758, 3, 338, 169, 0, 3757, 3756, 1, 0, 0, 0, 3757, 3758, 1, 0, 0, 0, 3758, 3759, 1, 0, 0, 0, 3759, 3760, 5, 247, 0, 0, 3760, 3769, 3, 1436, 718, 0, 3761, 3762, 5, 215, 0, 0, 3762, 3764, 3, 330, 165, 0, 3763, 3765, 3, 332, 166, 0, 3764, 3763, 1, 0, 0, 0, 3764, 3765, 1, 0, 0, 0, 3765, 3767, 1, 0, 0, 0, 3766, 3768, 3, 336, 168, 0, 3767, 3766, 1, 0, 0, 0, 3767, 3768, 1, 0, 0, 0, 3768, 3770, 1, 0, 0, 0, 3769, 3761, 1, 0, 0, 0, 3769, 3770, 1, 0, 0, 0, 3770, 327, 1, 0, 0, 0, 3771, 3772, 5, 359, 0, 0, 3772, 329, 1, 0, 0, 0, 3773, 3775, 3, 1436, 718, 0, 3774, 3776, 3, 560, 280, 0, 3775, 3774, 1, 0, 0, 0, 3775, 3776, 1, 0, 0, 0, 3776, 331, 1, 0, 0, 0, 3777, 3778, 5, 239, 0, 0, 3778, 3779, 3, 330, 165, 0, 3779, 333, 1, 0, 0, 0, 3780, 3781, 5, 373, 0, 0, 3781, 3785, 3, 330, 165, 0, 3782, 3783, 5, 269, 0, 0, 3783, 3785, 5, 373, 0, 0, 3784, 3780, 1, 0, 0, 0, 3784, 3782, 1, 0, 0, 0, 3785, 335, 1, 0, 0, 0, 3786, 3787, 3, 334, 167, 0, 3787, 337, 1, 0, 0, 0, 3788, 3789, 5, 295, 0, 0, 3789, 339, 1, 0, 0, 0, 3790, 3791, 5, 46, 0, 0, 3791, 3792, 5, 351, 0, 0, 3792, 3794, 3, 1402, 701, 0, 3793, 3795, 3, 342, 171, 0, 3794, 3793, 1, 0, 0, 0, 3794, 3795, 1, 0, 0, 0, 3795, 3796, 1, 0, 0, 0, 3796, 3797, 5, 255, 0, 0, 3797, 3799, 3, 1458, 729, 0, 3798, 3800, 3, 134, 67, 0, 3799, 3798, 1, 0, 0, 0, 3799, 3800, 1, 0, 0, 0, 3800, 341, 1, 0, 0, 0, 3801, 3802, 5, 282, 0, 0, 3802, 3803, 3, 1470, 735, 0, 3803, 343, 1, 0, 0, 0, 3804, 3805, 5, 46, 0, 0, 3805, 3807, 5, 204, 0, 0, 3806, 3808, 3, 516, 258, 0, 3807, 3806, 1, 0, 0, 0, 3807, 3808, 1, 0, 0, 0, 3808, 3809, 1, 0, 0, 0, 3809, 3811, 3, 1436, 718, 0, 3810, 3812, 3, 14, 7, 0, 3811, 3810, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 3813, 1, 0, 0, 0, 3813, 3814, 3, 346, 173, 0, 3814, 345, 1, 0, 0, 0, 3815, 3817, 3, 348, 174, 0, 3816, 3815, 1, 0, 0, 0, 3817, 3820, 1, 0, 0, 0, 3818, 3816, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 347, 1, 0, 0, 0, 3820, 3818, 1, 0, 0, 0, 3821, 3822, 5, 323, 0, 0, 3822, 3829, 3, 1422, 711, 0, 3823, 3824, 5, 375, 0, 0, 3824, 3829, 3, 80, 40, 0, 3825, 3826, 5, 64, 0, 0, 3826, 3829, 3, 80, 40, 0, 3827, 3829, 5, 150, 0, 0, 3828, 3821, 1, 0, 0, 0, 3828, 3823, 1, 0, 0, 0, 3828, 3825, 1, 0, 0, 0, 3828, 3827, 1, 0, 0, 0, 3829, 349, 1, 0, 0, 0, 3830, 3831, 5, 138, 0, 0, 3831, 3832, 5, 204, 0, 0, 3832, 3833, 3, 1436, 718, 0, 3833, 3834, 5, 369, 0, 0, 3834, 3835, 3, 352, 176, 0, 3835, 351, 1, 0, 0, 0, 3836, 3838, 3, 354, 177, 0, 3837, 3836, 1, 0, 0, 0, 3838, 3841, 1, 0, 0, 0, 3839, 3837, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 353, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3842, 3843, 5, 94, 0, 0, 3843, 3844, 3, 80, 40, 0, 3844, 355, 1, 0, 0, 0, 3845, 3846, 5, 138, 0, 0, 3846, 3847, 5, 204, 0, 0, 3847, 3848, 3, 1436, 718, 0, 3848, 3849, 3, 44, 22, 0, 3849, 3850, 3, 548, 274, 0, 3850, 3948, 1, 0, 0, 0, 3851, 3852, 5, 138, 0, 0, 3852, 3853, 5, 204, 0, 0, 3853, 3854, 3, 1436, 718, 0, 3854, 3855, 3, 44, 22, 0, 3855, 3856, 3, 546, 273, 0, 3856, 3948, 1, 0, 0, 0, 3857, 3858, 5, 138, 0, 0, 3858, 3859, 5, 204, 0, 0, 3859, 3860, 3, 1436, 718, 0, 3860, 3861, 3, 44, 22, 0, 3861, 3862, 5, 136, 0, 0, 3862, 3863, 3, 698, 349, 0, 3863, 3948, 1, 0, 0, 0, 3864, 3865, 5, 138, 0, 0, 3865, 3866, 5, 204, 0, 0, 3866, 3867, 3, 1436, 718, 0, 3867, 3868, 3, 44, 22, 0, 3868, 3869, 5, 41, 0, 0, 3869, 3870, 5, 2, 0, 0, 3870, 3871, 3, 1168, 584, 0, 3871, 3872, 5, 36, 0, 0, 3872, 3873, 3, 1168, 584, 0, 3873, 3874, 5, 3, 0, 0, 3874, 3948, 1, 0, 0, 0, 3875, 3876, 5, 138, 0, 0, 3876, 3877, 5, 204, 0, 0, 3877, 3878, 3, 1436, 718, 0, 3878, 3879, 3, 44, 22, 0, 3879, 3880, 5, 189, 0, 0, 3880, 3881, 3, 1168, 584, 0, 3881, 3948, 1, 0, 0, 0, 3882, 3883, 5, 138, 0, 0, 3883, 3884, 5, 204, 0, 0, 3884, 3885, 3, 1436, 718, 0, 3885, 3886, 3, 44, 22, 0, 3886, 3887, 5, 211, 0, 0, 3887, 3888, 3, 674, 337, 0, 3888, 3948, 1, 0, 0, 0, 3889, 3890, 5, 138, 0, 0, 3890, 3891, 5, 204, 0, 0, 3891, 3892, 3, 1436, 718, 0, 3892, 3893, 3, 44, 22, 0, 3893, 3894, 5, 278, 0, 0, 3894, 3895, 3, 736, 368, 0, 3895, 3948, 1, 0, 0, 0, 3896, 3897, 5, 138, 0, 0, 3897, 3898, 5, 204, 0, 0, 3898, 3899, 3, 1436, 718, 0, 3899, 3900, 3, 44, 22, 0, 3900, 3901, 5, 278, 0, 0, 3901, 3902, 5, 156, 0, 0, 3902, 3903, 3, 558, 279, 0, 3903, 3904, 5, 100, 0, 0, 3904, 3905, 3, 1436, 718, 0, 3905, 3948, 1, 0, 0, 0, 3906, 3907, 5, 138, 0, 0, 3907, 3908, 5, 204, 0, 0, 3908, 3909, 3, 1436, 718, 0, 3909, 3910, 3, 44, 22, 0, 3910, 3911, 5, 278, 0, 0, 3911, 3912, 5, 206, 0, 0, 3912, 3913, 3, 558, 279, 0, 3913, 3914, 5, 100, 0, 0, 3914, 3915, 3, 1436, 718, 0, 3915, 3948, 1, 0, 0, 0, 3916, 3917, 5, 138, 0, 0, 3917, 3918, 5, 204, 0, 0, 3918, 3919, 3, 1436, 718, 0, 3919, 3920, 3, 44, 22, 0, 3920, 3921, 5, 296, 0, 0, 3921, 3922, 3, 670, 335, 0, 3922, 3948, 1, 0, 0, 0, 3923, 3924, 5, 138, 0, 0, 3924, 3925, 5, 204, 0, 0, 3925, 3926, 3, 1436, 718, 0, 3926, 3927, 3, 44, 22, 0, 3927, 3928, 5, 442, 0, 0, 3928, 3929, 3, 666, 333, 0, 3929, 3948, 1, 0, 0, 0, 3930, 3931, 5, 138, 0, 0, 3931, 3932, 5, 204, 0, 0, 3932, 3933, 3, 1436, 718, 0, 3933, 3934, 3, 44, 22, 0, 3934, 3935, 5, 443, 0, 0, 3935, 3936, 5, 62, 0, 0, 3936, 3937, 3, 1168, 584, 0, 3937, 3938, 5, 247, 0, 0, 3938, 3939, 3, 1436, 718, 0, 3939, 3948, 1, 0, 0, 0, 3940, 3941, 5, 138, 0, 0, 3941, 3942, 5, 204, 0, 0, 3942, 3943, 3, 1436, 718, 0, 3943, 3944, 3, 44, 22, 0, 3944, 3945, 5, 360, 0, 0, 3945, 3946, 3, 1168, 584, 0, 3946, 3948, 1, 0, 0, 0, 3947, 3845, 1, 0, 0, 0, 3947, 3851, 1, 0, 0, 0, 3947, 3857, 1, 0, 0, 0, 3947, 3864, 1, 0, 0, 0, 3947, 3875, 1, 0, 0, 0, 3947, 3882, 1, 0, 0, 0, 3947, 3889, 1, 0, 0, 0, 3947, 3896, 1, 0, 0, 0, 3947, 3906, 1, 0, 0, 0, 3947, 3916, 1, 0, 0, 0, 3947, 3923, 1, 0, 0, 0, 3947, 3930, 1, 0, 0, 0, 3947, 3940, 1, 0, 0, 0, 3948, 357, 1, 0, 0, 0, 3949, 3950, 5, 46, 0, 0, 3950, 3951, 5, 63, 0, 0, 3951, 3952, 5, 174, 0, 0, 3952, 3953, 5, 381, 0, 0, 3953, 3955, 3, 1436, 718, 0, 3954, 3956, 3, 364, 182, 0, 3955, 3954, 1, 0, 0, 0, 3955, 3956, 1, 0, 0, 0, 3956, 3958, 1, 0, 0, 0, 3957, 3959, 3, 368, 184, 0, 3958, 3957, 1, 0, 0, 0, 3958, 3959, 1, 0, 0, 0, 3959, 359, 1, 0, 0, 0, 3960, 3961, 5, 215, 0, 0, 3961, 3969, 3, 330, 165, 0, 3962, 3963, 5, 269, 0, 0, 3963, 3969, 5, 215, 0, 0, 3964, 3965, 5, 373, 0, 0, 3965, 3969, 3, 330, 165, 0, 3966, 3967, 5, 269, 0, 0, 3967, 3969, 5, 373, 0, 0, 3968, 3960, 1, 0, 0, 0, 3968, 3962, 1, 0, 0, 0, 3968, 3964, 1, 0, 0, 0, 3968, 3966, 1, 0, 0, 0, 3969, 361, 1, 0, 0, 0, 3970, 3972, 3, 360, 180, 0, 3971, 3970, 1, 0, 0, 0, 3972, 3973, 1, 0, 0, 0, 3973, 3971, 1, 0, 0, 0, 3973, 3974, 1, 0, 0, 0, 3974, 363, 1, 0, 0, 0, 3975, 3976, 3, 362, 181, 0, 3976, 365, 1, 0, 0, 0, 3977, 3978, 5, 138, 0, 0, 3978, 3979, 5, 63, 0, 0, 3979, 3980, 5, 174, 0, 0, 3980, 3981, 5, 381, 0, 0, 3981, 3983, 3, 1436, 718, 0, 3982, 3984, 3, 364, 182, 0, 3983, 3982, 1, 0, 0, 0, 3983, 3984, 1, 0, 0, 0, 3984, 3985, 1, 0, 0, 0, 3985, 3986, 3, 372, 186, 0, 3986, 3995, 1, 0, 0, 0, 3987, 3988, 5, 138, 0, 0, 3988, 3989, 5, 63, 0, 0, 3989, 3990, 5, 174, 0, 0, 3990, 3991, 5, 381, 0, 0, 3991, 3992, 3, 1436, 718, 0, 3992, 3993, 3, 362, 181, 0, 3993, 3995, 1, 0, 0, 0, 3994, 3977, 1, 0, 0, 0, 3994, 3987, 1, 0, 0, 0, 3995, 367, 1, 0, 0, 0, 3996, 3997, 5, 280, 0, 0, 3997, 3998, 5, 2, 0, 0, 3998, 3999, 3, 370, 185, 0, 3999, 4000, 5, 3, 0, 0, 4000, 369, 1, 0, 0, 0, 4001, 4006, 3, 378, 189, 0, 4002, 4003, 5, 6, 0, 0, 4003, 4005, 3, 378, 189, 0, 4004, 4002, 1, 0, 0, 0, 4005, 4008, 1, 0, 0, 0, 4006, 4004, 1, 0, 0, 0, 4006, 4007, 1, 0, 0, 0, 4007, 371, 1, 0, 0, 0, 4008, 4006, 1, 0, 0, 0, 4009, 4010, 5, 280, 0, 0, 4010, 4011, 5, 2, 0, 0, 4011, 4012, 3, 374, 187, 0, 4012, 4013, 5, 3, 0, 0, 4013, 373, 1, 0, 0, 0, 4014, 4019, 3, 376, 188, 0, 4015, 4016, 5, 6, 0, 0, 4016, 4018, 3, 376, 188, 0, 4017, 4015, 1, 0, 0, 0, 4018, 4021, 1, 0, 0, 0, 4019, 4017, 1, 0, 0, 0, 4019, 4020, 1, 0, 0, 0, 4020, 375, 1, 0, 0, 0, 4021, 4019, 1, 0, 0, 0, 4022, 4030, 3, 378, 189, 0, 4023, 4024, 5, 333, 0, 0, 4024, 4030, 3, 378, 189, 0, 4025, 4026, 5, 133, 0, 0, 4026, 4030, 3, 378, 189, 0, 4027, 4028, 5, 191, 0, 0, 4028, 4030, 3, 378, 189, 0, 4029, 4022, 1, 0, 0, 0, 4029, 4023, 1, 0, 0, 0, 4029, 4025, 1, 0, 0, 0, 4029, 4027, 1, 0, 0, 0, 4030, 377, 1, 0, 0, 0, 4031, 4032, 3, 380, 190, 0, 4032, 4033, 3, 382, 191, 0, 4033, 379, 1, 0, 0, 0, 4034, 4035, 3, 1490, 745, 0, 4035, 381, 1, 0, 0, 0, 4036, 4037, 3, 1458, 729, 0, 4037, 383, 1, 0, 0, 0, 4038, 4039, 5, 46, 0, 0, 4039, 4041, 5, 331, 0, 0, 4040, 4042, 3, 516, 258, 0, 4041, 4040, 1, 0, 0, 0, 4041, 4042, 1, 0, 0, 0, 4042, 4043, 1, 0, 0, 0, 4043, 4045, 3, 1436, 718, 0, 4044, 4046, 3, 386, 193, 0, 4045, 4044, 1, 0, 0, 0, 4045, 4046, 1, 0, 0, 0, 4046, 4048, 1, 0, 0, 0, 4047, 4049, 3, 390, 195, 0, 4048, 4047, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4050, 1, 0, 0, 0, 4050, 4051, 5, 63, 0, 0, 4051, 4052, 5, 174, 0, 0, 4052, 4053, 5, 381, 0, 0, 4053, 4055, 3, 1436, 718, 0, 4054, 4056, 3, 368, 184, 0, 4055, 4054, 1, 0, 0, 0, 4055, 4056, 1, 0, 0, 0, 4056, 385, 1, 0, 0, 0, 4057, 4058, 5, 360, 0, 0, 4058, 4059, 3, 1458, 729, 0, 4059, 387, 1, 0, 0, 0, 4060, 4063, 5, 375, 0, 0, 4061, 4064, 3, 1458, 729, 0, 4062, 4064, 5, 78, 0, 0, 4063, 4061, 1, 0, 0, 0, 4063, 4062, 1, 0, 0, 0, 4064, 389, 1, 0, 0, 0, 4065, 4066, 3, 388, 194, 0, 4066, 391, 1, 0, 0, 0, 4067, 4068, 5, 138, 0, 0, 4068, 4069, 5, 331, 0, 0, 4069, 4075, 3, 1436, 718, 0, 4070, 4076, 3, 372, 186, 0, 4071, 4073, 3, 388, 194, 0, 4072, 4074, 3, 372, 186, 0, 4073, 4072, 1, 0, 0, 0, 4073, 4074, 1, 0, 0, 0, 4074, 4076, 1, 0, 0, 0, 4075, 4070, 1, 0, 0, 0, 4075, 4071, 1, 0, 0, 0, 4076, 393, 1, 0, 0, 0, 4077, 4078, 5, 46, 0, 0, 4078, 4079, 5, 63, 0, 0, 4079, 4081, 5, 92, 0, 0, 4080, 4082, 3, 516, 258, 0, 4081, 4080, 1, 0, 0, 0, 4081, 4082, 1, 0, 0, 0, 4082, 4083, 1, 0, 0, 0, 4083, 4084, 3, 1404, 702, 0, 4084, 4086, 5, 2, 0, 0, 4085, 4087, 3, 194, 97, 0, 4086, 4085, 1, 0, 0, 0, 4086, 4087, 1, 0, 0, 0, 4087, 4088, 1, 0, 0, 0, 4088, 4090, 5, 3, 0, 0, 4089, 4091, 3, 266, 133, 0, 4090, 4089, 1, 0, 0, 0, 4090, 4091, 1, 0, 0, 0, 4091, 4092, 1, 0, 0, 0, 4092, 4093, 5, 331, 0, 0, 4093, 4095, 3, 1436, 718, 0, 4094, 4096, 3, 368, 184, 0, 4095, 4094, 1, 0, 0, 0, 4095, 4096, 1, 0, 0, 0, 4096, 4117, 1, 0, 0, 0, 4097, 4098, 5, 46, 0, 0, 4098, 4099, 5, 63, 0, 0, 4099, 4101, 5, 92, 0, 0, 4100, 4102, 3, 516, 258, 0, 4101, 4100, 1, 0, 0, 0, 4101, 4102, 1, 0, 0, 0, 4102, 4103, 1, 0, 0, 0, 4103, 4104, 3, 1404, 702, 0, 4104, 4105, 5, 285, 0, 0, 4105, 4106, 5, 275, 0, 0, 4106, 4108, 3, 1406, 703, 0, 4107, 4109, 3, 196, 98, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 4110, 1, 0, 0, 0, 4110, 4111, 3, 144, 72, 0, 4111, 4112, 5, 331, 0, 0, 4112, 4114, 3, 1436, 718, 0, 4113, 4115, 3, 368, 184, 0, 4114, 4113, 1, 0, 0, 0, 4114, 4115, 1, 0, 0, 0, 4115, 4117, 1, 0, 0, 0, 4116, 4077, 1, 0, 0, 0, 4116, 4097, 1, 0, 0, 0, 4117, 395, 1, 0, 0, 0, 4118, 4119, 5, 444, 0, 0, 4119, 4120, 5, 63, 0, 0, 4120, 4121, 5, 323, 0, 0, 4121, 4123, 3, 1422, 711, 0, 4122, 4124, 3, 400, 200, 0, 4123, 4122, 1, 0, 0, 0, 4123, 4124, 1, 0, 0, 0, 4124, 4125, 1, 0, 0, 0, 4125, 4126, 5, 64, 0, 0, 4126, 4127, 5, 331, 0, 0, 4127, 4128, 3, 1436, 718, 0, 4128, 4129, 5, 71, 0, 0, 4129, 4131, 3, 1436, 718, 0, 4130, 4132, 3, 368, 184, 0, 4131, 4130, 1, 0, 0, 0, 4131, 4132, 1, 0, 0, 0, 4132, 397, 1, 0, 0, 0, 4133, 4134, 5, 74, 0, 0, 4134, 4137, 5, 94, 0, 0, 4135, 4137, 5, 59, 0, 0, 4136, 4133, 1, 0, 0, 0, 4136, 4135, 1, 0, 0, 0, 4137, 399, 1, 0, 0, 0, 4138, 4139, 3, 398, 199, 0, 4139, 4140, 5, 2, 0, 0, 4140, 4141, 3, 1124, 562, 0, 4141, 4142, 5, 3, 0, 0, 4142, 401, 1, 0, 0, 0, 4143, 4144, 5, 46, 0, 0, 4144, 4145, 5, 99, 0, 0, 4145, 4147, 5, 257, 0, 0, 4146, 4148, 3, 516, 258, 0, 4147, 4146, 1, 0, 0, 0, 4147, 4148, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4150, 5, 62, 0, 0, 4150, 4151, 3, 404, 202, 0, 4151, 4152, 5, 331, 0, 0, 4152, 4154, 3, 1436, 718, 0, 4153, 4155, 3, 368, 184, 0, 4154, 4153, 1, 0, 0, 0, 4154, 4155, 1, 0, 0, 0, 4155, 403, 1, 0, 0, 0, 4156, 4159, 3, 1470, 735, 0, 4157, 4159, 5, 99, 0, 0, 4158, 4156, 1, 0, 0, 0, 4158, 4157, 1, 0, 0, 0, 4159, 405, 1, 0, 0, 0, 4160, 4161, 5, 138, 0, 0, 4161, 4162, 5, 99, 0, 0, 4162, 4163, 5, 257, 0, 0, 4163, 4164, 5, 62, 0, 0, 4164, 4165, 3, 404, 202, 0, 4165, 4166, 5, 331, 0, 0, 4166, 4167, 3, 1436, 718, 0, 4167, 4168, 3, 372, 186, 0, 4168, 407, 1, 0, 0, 0, 4169, 4170, 5, 46, 0, 0, 4170, 4171, 5, 445, 0, 0, 4171, 4172, 3, 1436, 718, 0, 4172, 4173, 5, 80, 0, 0, 4173, 4175, 3, 1412, 706, 0, 4174, 4176, 3, 426, 213, 0, 4175, 4174, 1, 0, 0, 0, 4175, 4176, 1, 0, 0, 0, 4176, 4178, 1, 0, 0, 0, 4177, 4179, 3, 428, 214, 0, 4178, 4177, 1, 0, 0, 0, 4178, 4179, 1, 0, 0, 0, 4179, 4181, 1, 0, 0, 0, 4180, 4182, 3, 422, 211, 0, 4181, 4180, 1, 0, 0, 0, 4181, 4182, 1, 0, 0, 0, 4182, 4184, 1, 0, 0, 0, 4183, 4185, 3, 418, 209, 0, 4184, 4183, 1, 0, 0, 0, 4184, 4185, 1, 0, 0, 0, 4185, 4187, 1, 0, 0, 0, 4186, 4188, 3, 420, 210, 0, 4187, 4186, 1, 0, 0, 0, 4187, 4188, 1, 0, 0, 0, 4188, 409, 1, 0, 0, 0, 4189, 4190, 5, 138, 0, 0, 4190, 4191, 5, 445, 0, 0, 4191, 4192, 3, 1436, 718, 0, 4192, 4193, 5, 80, 0, 0, 4193, 4195, 3, 1412, 706, 0, 4194, 4196, 3, 424, 212, 0, 4195, 4194, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4198, 1, 0, 0, 0, 4197, 4199, 3, 418, 209, 0, 4198, 4197, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4201, 1, 0, 0, 0, 4200, 4202, 3, 420, 210, 0, 4201, 4200, 1, 0, 0, 0, 4201, 4202, 1, 0, 0, 0, 4202, 411, 1, 0, 0, 0, 4203, 4204, 5, 138, 0, 0, 4204, 4205, 5, 296, 0, 0, 4205, 4207, 3, 1428, 714, 0, 4206, 4208, 3, 660, 330, 0, 4207, 4206, 1, 0, 0, 0, 4207, 4208, 1, 0, 0, 0, 4208, 4209, 1, 0, 0, 0, 4209, 4210, 3, 414, 207, 0, 4210, 413, 1, 0, 0, 0, 4211, 4215, 3, 416, 208, 0, 4212, 4214, 3, 416, 208, 0, 4213, 4212, 1, 0, 0, 0, 4214, 4217, 1, 0, 0, 0, 4215, 4213, 1, 0, 0, 0, 4215, 4216, 1, 0, 0, 0, 4216, 4219, 1, 0, 0, 0, 4217, 4215, 1, 0, 0, 0, 4218, 4220, 5, 315, 0, 0, 4219, 4218, 1, 0, 0, 0, 4219, 4220, 1, 0, 0, 0, 4220, 4238, 1, 0, 0, 0, 4221, 4222, 5, 309, 0, 0, 4222, 4223, 5, 94, 0, 0, 4223, 4238, 3, 1430, 715, 0, 4224, 4225, 5, 282, 0, 0, 4225, 4226, 5, 94, 0, 0, 4226, 4238, 3, 1470, 735, 0, 4227, 4228, 5, 333, 0, 0, 4228, 4229, 5, 323, 0, 0, 4229, 4238, 3, 48, 24, 0, 4230, 4232, 5, 269, 0, 0, 4231, 4230, 1, 0, 0, 0, 4231, 4232, 1, 0, 0, 0, 4232, 4233, 1, 0, 0, 0, 4233, 4234, 5, 462, 0, 0, 4234, 4235, 5, 80, 0, 0, 4235, 4236, 5, 204, 0, 0, 4236, 4238, 3, 1436, 718, 0, 4237, 4211, 1, 0, 0, 0, 4237, 4221, 1, 0, 0, 0, 4237, 4224, 1, 0, 0, 0, 4237, 4227, 1, 0, 0, 0, 4237, 4231, 1, 0, 0, 0, 4238, 415, 1, 0, 0, 0, 4239, 4241, 5, 205, 0, 0, 4240, 4239, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4242, 1, 0, 0, 0, 4242, 4243, 5, 327, 0, 0, 4243, 4250, 5, 243, 0, 0, 4244, 4246, 5, 205, 0, 0, 4245, 4244, 1, 0, 0, 0, 4245, 4246, 1, 0, 0, 0, 4246, 4247, 1, 0, 0, 0, 4247, 4248, 5, 327, 0, 0, 4248, 4250, 5, 181, 0, 0, 4249, 4240, 1, 0, 0, 0, 4249, 4245, 1, 0, 0, 0, 4250, 4268, 1, 0, 0, 0, 4251, 4252, 5, 333, 0, 0, 4252, 4253, 3, 1436, 718, 0, 4253, 4256, 7, 31, 0, 0, 4254, 4257, 3, 1436, 718, 0, 4255, 4257, 5, 53, 0, 0, 4256, 4254, 1, 0, 0, 0, 4256, 4255, 1, 0, 0, 0, 4257, 4268, 1, 0, 0, 0, 4258, 4259, 5, 333, 0, 0, 4259, 4260, 3, 1436, 718, 0, 4260, 4261, 5, 64, 0, 0, 4261, 4262, 5, 434, 0, 0, 4262, 4268, 1, 0, 0, 0, 4263, 4264, 5, 313, 0, 0, 4264, 4268, 3, 1436, 718, 0, 4265, 4266, 5, 313, 0, 0, 4266, 4268, 5, 30, 0, 0, 4267, 4249, 1, 0, 0, 0, 4267, 4251, 1, 0, 0, 0, 4267, 4258, 1, 0, 0, 0, 4267, 4263, 1, 0, 0, 0, 4267, 4265, 1, 0, 0, 0, 4268, 417, 1, 0, 0, 0, 4269, 4270, 5, 100, 0, 0, 4270, 4271, 5, 2, 0, 0, 4271, 4272, 3, 1212, 606, 0, 4272, 4273, 5, 3, 0, 0, 4273, 419, 1, 0, 0, 0, 4274, 4275, 5, 105, 0, 0, 4275, 4276, 5, 42, 0, 0, 4276, 4277, 5, 2, 0, 0, 4277, 4278, 3, 1212, 606, 0, 4278, 4279, 5, 3, 0, 0, 4279, 421, 1, 0, 0, 0, 4280, 4281, 5, 94, 0, 0, 4281, 4282, 3, 1472, 736, 0, 4282, 423, 1, 0, 0, 0, 4283, 4284, 5, 94, 0, 0, 4284, 4285, 3, 1472, 736, 0, 4285, 425, 1, 0, 0, 0, 4286, 4290, 5, 36, 0, 0, 4287, 4291, 5, 541, 0, 0, 4288, 4291, 5, 542, 0, 0, 4289, 4291, 3, 1492, 746, 0, 4290, 4287, 1, 0, 0, 0, 4290, 4288, 1, 0, 0, 0, 4290, 4289, 1, 0, 0, 0, 4291, 427, 1, 0, 0, 0, 4292, 4293, 5, 62, 0, 0, 4293, 4294, 3, 430, 215, 0, 4294, 429, 1, 0, 0, 0, 4295, 4296, 7, 32, 0, 0, 4296, 431, 1, 0, 0, 0, 4297, 4298, 5, 46, 0, 0, 4298, 4299, 5, 131, 0, 0, 4299, 4300, 5, 446, 0, 0, 4300, 4301, 3, 1436, 718, 0, 4301, 4302, 5, 360, 0, 0, 4302, 4303, 3, 434, 217, 0, 4303, 4304, 5, 215, 0, 0, 4304, 4305, 3, 330, 165, 0, 4305, 433, 1, 0, 0, 0, 4306, 4307, 7, 33, 0, 0, 4307, 435, 1, 0, 0, 0, 4308, 4310, 5, 46, 0, 0, 4309, 4311, 3, 658, 329, 0, 4310, 4309, 1, 0, 0, 0, 4310, 4311, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4313, 5, 357, 0, 0, 4313, 4314, 3, 1436, 718, 0, 4314, 4315, 3, 438, 219, 0, 4315, 4316, 3, 444, 222, 0, 4316, 4317, 5, 80, 0, 0, 4317, 4319, 3, 1406, 703, 0, 4318, 4320, 3, 448, 224, 0, 4319, 4318, 1, 0, 0, 0, 4319, 4320, 1, 0, 0, 0, 4320, 4322, 1, 0, 0, 0, 4321, 4323, 3, 460, 230, 0, 4322, 4321, 1, 0, 0, 0, 4322, 4323, 1, 0, 0, 0, 4323, 4325, 1, 0, 0, 0, 4324, 4326, 3, 466, 233, 0, 4325, 4324, 1, 0, 0, 0, 4325, 4326, 1, 0, 0, 0, 4326, 4327, 1, 0, 0, 0, 4327, 4328, 5, 202, 0, 0, 4328, 4329, 3, 468, 234, 0, 4329, 4330, 5, 2, 0, 0, 4330, 4331, 3, 470, 235, 0, 4331, 4332, 5, 3, 0, 0, 4332, 4363, 1, 0, 0, 0, 4333, 4335, 5, 46, 0, 0, 4334, 4336, 3, 658, 329, 0, 4335, 4334, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4338, 1, 0, 0, 0, 4337, 4339, 5, 45, 0, 0, 4338, 4337, 1, 0, 0, 0, 4338, 4339, 1, 0, 0, 0, 4339, 4340, 1, 0, 0, 0, 4340, 4341, 5, 357, 0, 0, 4341, 4342, 3, 1436, 718, 0, 4342, 4343, 3, 438, 219, 0, 4343, 4344, 3, 444, 222, 0, 4344, 4345, 5, 80, 0, 0, 4345, 4347, 3, 1406, 703, 0, 4346, 4348, 3, 474, 237, 0, 4347, 4346, 1, 0, 0, 0, 4347, 4348, 1, 0, 0, 0, 4348, 4349, 1, 0, 0, 0, 4349, 4351, 3, 476, 238, 0, 4350, 4352, 3, 440, 220, 0, 4351, 4350, 1, 0, 0, 0, 4351, 4352, 1, 0, 0, 0, 4352, 4354, 1, 0, 0, 0, 4353, 4355, 3, 466, 233, 0, 4354, 4353, 1, 0, 0, 0, 4354, 4355, 1, 0, 0, 0, 4355, 4356, 1, 0, 0, 0, 4356, 4357, 5, 202, 0, 0, 4357, 4358, 3, 468, 234, 0, 4358, 4359, 5, 2, 0, 0, 4359, 4360, 3, 470, 235, 0, 4360, 4361, 5, 3, 0, 0, 4361, 4363, 1, 0, 0, 0, 4362, 4308, 1, 0, 0, 0, 4362, 4333, 1, 0, 0, 0, 4363, 437, 1, 0, 0, 0, 4364, 4369, 5, 145, 0, 0, 4365, 4369, 5, 135, 0, 0, 4366, 4367, 5, 242, 0, 0, 4367, 4369, 5, 275, 0, 0, 4368, 4364, 1, 0, 0, 0, 4368, 4365, 1, 0, 0, 0, 4368, 4366, 1, 0, 0, 0, 4369, 439, 1, 0, 0, 0, 4370, 4372, 5, 62, 0, 0, 4371, 4373, 5, 192, 0, 0, 4372, 4371, 1, 0, 0, 0, 4372, 4373, 1, 0, 0, 0, 4373, 4374, 1, 0, 0, 0, 4374, 4375, 3, 442, 221, 0, 4375, 441, 1, 0, 0, 0, 4376, 4377, 7, 34, 0, 0, 4377, 443, 1, 0, 0, 0, 4378, 4383, 3, 446, 223, 0, 4379, 4380, 5, 82, 0, 0, 4380, 4382, 3, 446, 223, 0, 4381, 4379, 1, 0, 0, 0, 4382, 4385, 1, 0, 0, 0, 4383, 4381, 1, 0, 0, 0, 4383, 4384, 1, 0, 0, 0, 4384, 445, 1, 0, 0, 0, 4385, 4383, 1, 0, 0, 0, 4386, 4394, 5, 241, 0, 0, 4387, 4394, 5, 182, 0, 0, 4388, 4394, 5, 369, 0, 0, 4389, 4390, 5, 369, 0, 0, 4390, 4391, 5, 275, 0, 0, 4391, 4394, 3, 244, 122, 0, 4392, 4394, 5, 358, 0, 0, 4393, 4386, 1, 0, 0, 0, 4393, 4387, 1, 0, 0, 0, 4393, 4388, 1, 0, 0, 0, 4393, 4389, 1, 0, 0, 0, 4393, 4392, 1, 0, 0, 0, 4394, 447, 1, 0, 0, 0, 4395, 4396, 5, 447, 0, 0, 4396, 4397, 3, 450, 225, 0, 4397, 449, 1, 0, 0, 0, 4398, 4400, 3, 452, 226, 0, 4399, 4398, 1, 0, 0, 0, 4400, 4401, 1, 0, 0, 0, 4401, 4399, 1, 0, 0, 0, 4401, 4402, 1, 0, 0, 0, 4402, 451, 1, 0, 0, 0, 4403, 4404, 3, 454, 227, 0, 4404, 4406, 3, 456, 228, 0, 4405, 4407, 3, 872, 436, 0, 4406, 4405, 1, 0, 0, 0, 4406, 4407, 1, 0, 0, 0, 4407, 4408, 1, 0, 0, 0, 4408, 4409, 3, 458, 229, 0, 4409, 453, 1, 0, 0, 0, 4410, 4411, 7, 35, 0, 0, 4411, 455, 1, 0, 0, 0, 4412, 4413, 7, 36, 0, 0, 4413, 457, 1, 0, 0, 0, 4414, 4415, 3, 1474, 737, 0, 4415, 459, 1, 0, 0, 0, 4416, 4418, 5, 62, 0, 0, 4417, 4419, 3, 462, 231, 0, 4418, 4417, 1, 0, 0, 0, 4418, 4419, 1, 0, 0, 0, 4419, 4420, 1, 0, 0, 0, 4420, 4421, 3, 464, 232, 0, 4421, 461, 1, 0, 0, 0, 4422, 4423, 5, 192, 0, 0, 4423, 463, 1, 0, 0, 0, 4424, 4425, 7, 34, 0, 0, 4425, 465, 1, 0, 0, 0, 4426, 4427, 5, 102, 0, 0, 4427, 4428, 5, 2, 0, 0, 4428, 4429, 3, 1212, 606, 0, 4429, 4430, 5, 3, 0, 0, 4430, 467, 1, 0, 0, 0, 4431, 4432, 5, 211, 0, 0, 4432, 4436, 3, 1444, 722, 0, 4433, 4434, 5, 296, 0, 0, 4434, 4436, 3, 1428, 714, 0, 4435, 4431, 1, 0, 0, 0, 4435, 4433, 1, 0, 0, 0, 4436, 469, 1, 0, 0, 0, 4437, 4440, 3, 472, 236, 0, 4438, 4440, 1, 0, 0, 0, 4439, 4437, 1, 0, 0, 0, 4439, 4438, 1, 0, 0, 0, 4440, 4445, 1, 0, 0, 0, 4441, 4442, 5, 6, 0, 0, 4442, 4444, 3, 472, 236, 0, 4443, 4441, 1, 0, 0, 0, 4444, 4447, 1, 0, 0, 0, 4445, 4443, 1, 0, 0, 0, 4445, 4446, 1, 0, 0, 0, 4446, 471, 1, 0, 0, 0, 4447, 4445, 1, 0, 0, 0, 4448, 4453, 3, 1456, 728, 0, 4449, 4453, 3, 1454, 727, 0, 4450, 4453, 3, 1458, 729, 0, 4451, 4453, 3, 1490, 745, 0, 4452, 4448, 1, 0, 0, 0, 4452, 4449, 1, 0, 0, 0, 4452, 4450, 1, 0, 0, 0, 4452, 4451, 1, 0, 0, 0, 4453, 473, 1, 0, 0, 0, 4454, 4455, 5, 64, 0, 0, 4455, 4456, 3, 1412, 706, 0, 4456, 475, 1, 0, 0, 0, 4457, 4459, 3, 478, 239, 0, 4458, 4457, 1, 0, 0, 0, 4459, 4462, 1, 0, 0, 0, 4460, 4458, 1, 0, 0, 0, 4460, 4461, 1, 0, 0, 0, 4461, 477, 1, 0, 0, 0, 4462, 4460, 1, 0, 0, 0, 4463, 4464, 5, 77, 0, 0, 4464, 4475, 5, 54, 0, 0, 4465, 4475, 5, 54, 0, 0, 4466, 4467, 5, 69, 0, 0, 4467, 4475, 5, 221, 0, 0, 4468, 4469, 5, 69, 0, 0, 4469, 4475, 5, 180, 0, 0, 4470, 4471, 5, 77, 0, 0, 4471, 4475, 5, 371, 0, 0, 4472, 4473, 5, 269, 0, 0, 4473, 4475, 5, 228, 0, 0, 4474, 4463, 1, 0, 0, 0, 4474, 4465, 1, 0, 0, 0, 4474, 4466, 1, 0, 0, 0, 4474, 4468, 1, 0, 0, 0, 4474, 4470, 1, 0, 0, 0, 4474, 4472, 1, 0, 0, 0, 4475, 479, 1, 0, 0, 0, 4476, 4477, 5, 46, 0, 0, 4477, 4478, 5, 198, 0, 0, 4478, 4479, 5, 357, 0, 0, 4479, 4480, 3, 1436, 718, 0, 4480, 4481, 5, 80, 0, 0, 4481, 4482, 3, 1490, 745, 0, 4482, 4483, 5, 202, 0, 0, 4483, 4484, 3, 468, 234, 0, 4484, 4485, 5, 2, 0, 0, 4485, 4486, 5, 3, 0, 0, 4486, 4501, 1, 0, 0, 0, 4487, 4488, 5, 46, 0, 0, 4488, 4489, 5, 198, 0, 0, 4489, 4490, 5, 357, 0, 0, 4490, 4491, 3, 1436, 718, 0, 4491, 4492, 5, 80, 0, 0, 4492, 4493, 3, 1490, 745, 0, 4493, 4494, 5, 102, 0, 0, 4494, 4495, 3, 482, 241, 0, 4495, 4496, 5, 202, 0, 0, 4496, 4497, 3, 468, 234, 0, 4497, 4498, 5, 2, 0, 0, 4498, 4499, 5, 3, 0, 0, 4499, 4501, 1, 0, 0, 0, 4500, 4476, 1, 0, 0, 0, 4500, 4487, 1, 0, 0, 0, 4501, 481, 1, 0, 0, 0, 4502, 4507, 3, 484, 242, 0, 4503, 4504, 5, 33, 0, 0, 4504, 4506, 3, 484, 242, 0, 4505, 4503, 1, 0, 0, 0, 4506, 4509, 1, 0, 0, 0, 4507, 4505, 1, 0, 0, 0, 4507, 4508, 1, 0, 0, 0, 4508, 483, 1, 0, 0, 0, 4509, 4507, 1, 0, 0, 0, 4510, 4511, 3, 1474, 737, 0, 4511, 4512, 5, 68, 0, 0, 4512, 4513, 5, 2, 0, 0, 4513, 4514, 3, 486, 243, 0, 4514, 4515, 5, 3, 0, 0, 4515, 485, 1, 0, 0, 0, 4516, 4521, 3, 1458, 729, 0, 4517, 4518, 5, 6, 0, 0, 4518, 4520, 3, 1458, 729, 0, 4519, 4517, 1, 0, 0, 0, 4520, 4523, 1, 0, 0, 0, 4521, 4519, 1, 0, 0, 0, 4521, 4522, 1, 0, 0, 0, 4522, 487, 1, 0, 0, 0, 4523, 4521, 1, 0, 0, 0, 4524, 4525, 5, 138, 0, 0, 4525, 4526, 5, 198, 0, 0, 4526, 4527, 5, 357, 0, 0, 4527, 4528, 3, 1436, 718, 0, 4528, 4529, 3, 490, 245, 0, 4529, 489, 1, 0, 0, 0, 4530, 4532, 5, 193, 0, 0, 4531, 4533, 7, 20, 0, 0, 4532, 4531, 1, 0, 0, 0, 4532, 4533, 1, 0, 0, 0, 4533, 4536, 1, 0, 0, 0, 4534, 4536, 5, 186, 0, 0, 4535, 4530, 1, 0, 0, 0, 4535, 4534, 1, 0, 0, 0, 4536, 491, 1, 0, 0, 0, 4537, 4538, 5, 46, 0, 0, 4538, 4539, 5, 140, 0, 0, 4539, 4540, 3, 558, 279, 0, 4540, 4541, 5, 42, 0, 0, 4541, 4542, 5, 2, 0, 0, 4542, 4543, 3, 1212, 606, 0, 4543, 4544, 5, 3, 0, 0, 4544, 4545, 3, 476, 238, 0, 4545, 493, 1, 0, 0, 0, 4546, 4548, 5, 46, 0, 0, 4547, 4549, 3, 658, 329, 0, 4548, 4547, 1, 0, 0, 0, 4548, 4549, 1, 0, 0, 0, 4549, 4550, 1, 0, 0, 0, 4550, 4551, 5, 136, 0, 0, 4551, 4552, 3, 1444, 722, 0, 4552, 4553, 3, 694, 347, 0, 4553, 4554, 3, 496, 248, 0, 4554, 4650, 1, 0, 0, 0, 4555, 4557, 5, 46, 0, 0, 4556, 4558, 3, 658, 329, 0, 4557, 4556, 1, 0, 0, 0, 4557, 4558, 1, 0, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4560, 5, 136, 0, 0, 4560, 4561, 3, 1444, 722, 0, 4561, 4562, 3, 504, 252, 0, 4562, 4650, 1, 0, 0, 0, 4563, 4564, 5, 46, 0, 0, 4564, 4565, 5, 278, 0, 0, 4565, 4566, 3, 732, 366, 0, 4566, 4567, 3, 496, 248, 0, 4567, 4650, 1, 0, 0, 0, 4568, 4569, 5, 46, 0, 0, 4569, 4570, 5, 360, 0, 0, 4570, 4571, 3, 558, 279, 0, 4571, 4572, 3, 496, 248, 0, 4572, 4650, 1, 0, 0, 0, 4573, 4574, 5, 46, 0, 0, 4574, 4575, 5, 360, 0, 0, 4575, 4650, 3, 558, 279, 0, 4576, 4577, 5, 46, 0, 0, 4577, 4578, 5, 360, 0, 0, 4578, 4579, 3, 558, 279, 0, 4579, 4580, 5, 36, 0, 0, 4580, 4582, 5, 2, 0, 0, 4581, 4583, 3, 1148, 574, 0, 4582, 4581, 1, 0, 0, 0, 4582, 4583, 1, 0, 0, 0, 4583, 4584, 1, 0, 0, 0, 4584, 4585, 5, 3, 0, 0, 4585, 4650, 1, 0, 0, 0, 4586, 4587, 5, 46, 0, 0, 4587, 4588, 5, 360, 0, 0, 4588, 4589, 3, 558, 279, 0, 4589, 4590, 5, 36, 0, 0, 4590, 4591, 5, 196, 0, 0, 4591, 4593, 5, 2, 0, 0, 4592, 4594, 3, 510, 255, 0, 4593, 4592, 1, 0, 0, 0, 4593, 4594, 1, 0, 0, 0, 4594, 4595, 1, 0, 0, 0, 4595, 4596, 5, 3, 0, 0, 4596, 4650, 1, 0, 0, 0, 4597, 4598, 5, 46, 0, 0, 4598, 4599, 5, 360, 0, 0, 4599, 4600, 3, 558, 279, 0, 4600, 4601, 5, 36, 0, 0, 4601, 4602, 5, 299, 0, 0, 4602, 4603, 3, 496, 248, 0, 4603, 4650, 1, 0, 0, 0, 4604, 4605, 5, 46, 0, 0, 4605, 4606, 5, 355, 0, 0, 4606, 4607, 5, 325, 0, 0, 4607, 4608, 5, 283, 0, 0, 4608, 4609, 3, 558, 279, 0, 4609, 4610, 3, 496, 248, 0, 4610, 4650, 1, 0, 0, 0, 4611, 4612, 5, 46, 0, 0, 4612, 4613, 5, 355, 0, 0, 4613, 4614, 5, 325, 0, 0, 4614, 4615, 5, 185, 0, 0, 4615, 4616, 3, 558, 279, 0, 4616, 4617, 3, 496, 248, 0, 4617, 4650, 1, 0, 0, 0, 4618, 4619, 5, 46, 0, 0, 4619, 4620, 5, 355, 0, 0, 4620, 4621, 5, 325, 0, 0, 4621, 4622, 5, 353, 0, 0, 4622, 4623, 3, 558, 279, 0, 4623, 4624, 3, 496, 248, 0, 4624, 4650, 1, 0, 0, 0, 4625, 4626, 5, 46, 0, 0, 4626, 4627, 5, 355, 0, 0, 4627, 4628, 5, 325, 0, 0, 4628, 4629, 5, 163, 0, 0, 4629, 4630, 3, 558, 279, 0, 4630, 4631, 3, 496, 248, 0, 4631, 4650, 1, 0, 0, 0, 4632, 4633, 5, 46, 0, 0, 4633, 4635, 5, 108, 0, 0, 4634, 4636, 3, 516, 258, 0, 4635, 4634, 1, 0, 0, 0, 4635, 4636, 1, 0, 0, 0, 4636, 4637, 1, 0, 0, 0, 4637, 4638, 3, 558, 279, 0, 4638, 4639, 3, 496, 248, 0, 4639, 4650, 1, 0, 0, 0, 4640, 4641, 5, 46, 0, 0, 4641, 4643, 5, 108, 0, 0, 4642, 4644, 3, 516, 258, 0, 4643, 4642, 1, 0, 0, 0, 4643, 4644, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4646, 3, 558, 279, 0, 4646, 4647, 5, 64, 0, 0, 4647, 4648, 3, 558, 279, 0, 4648, 4650, 1, 0, 0, 0, 4649, 4546, 1, 0, 0, 0, 4649, 4555, 1, 0, 0, 0, 4649, 4563, 1, 0, 0, 0, 4649, 4568, 1, 0, 0, 0, 4649, 4573, 1, 0, 0, 0, 4649, 4576, 1, 0, 0, 0, 4649, 4586, 1, 0, 0, 0, 4649, 4597, 1, 0, 0, 0, 4649, 4604, 1, 0, 0, 0, 4649, 4611, 1, 0, 0, 0, 4649, 4618, 1, 0, 0, 0, 4649, 4625, 1, 0, 0, 0, 4649, 4632, 1, 0, 0, 0, 4649, 4640, 1, 0, 0, 0, 4650, 495, 1, 0, 0, 0, 4651, 4652, 5, 2, 0, 0, 4652, 4653, 3, 498, 249, 0, 4653, 4654, 5, 3, 0, 0, 4654, 497, 1, 0, 0, 0, 4655, 4660, 3, 500, 250, 0, 4656, 4657, 5, 6, 0, 0, 4657, 4659, 3, 500, 250, 0, 4658, 4656, 1, 0, 0, 0, 4659, 4662, 1, 0, 0, 0, 4660, 4658, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 499, 1, 0, 0, 0, 4662, 4660, 1, 0, 0, 0, 4663, 4666, 3, 1490, 745, 0, 4664, 4665, 5, 10, 0, 0, 4665, 4667, 3, 502, 251, 0, 4666, 4664, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 501, 1, 0, 0, 0, 4668, 4675, 3, 688, 344, 0, 4669, 4675, 3, 1502, 751, 0, 4670, 4675, 3, 1324, 662, 0, 4671, 4675, 3, 322, 161, 0, 4672, 4675, 3, 1458, 729, 0, 4673, 4675, 5, 407, 0, 0, 4674, 4668, 1, 0, 0, 0, 4674, 4669, 1, 0, 0, 0, 4674, 4670, 1, 0, 0, 0, 4674, 4671, 1, 0, 0, 0, 4674, 4672, 1, 0, 0, 0, 4674, 4673, 1, 0, 0, 0, 4675, 503, 1, 0, 0, 0, 4676, 4677, 5, 2, 0, 0, 4677, 4678, 3, 506, 253, 0, 4678, 4679, 5, 3, 0, 0, 4679, 505, 1, 0, 0, 0, 4680, 4685, 3, 508, 254, 0, 4681, 4682, 5, 6, 0, 0, 4682, 4684, 3, 508, 254, 0, 4683, 4681, 1, 0, 0, 0, 4684, 4687, 1, 0, 0, 0, 4685, 4683, 1, 0, 0, 0, 4685, 4686, 1, 0, 0, 0, 4686, 507, 1, 0, 0, 0, 4687, 4685, 1, 0, 0, 0, 4688, 4689, 3, 1492, 746, 0, 4689, 4690, 5, 10, 0, 0, 4690, 4691, 3, 502, 251, 0, 4691, 509, 1, 0, 0, 0, 4692, 4693, 3, 512, 256, 0, 4693, 511, 1, 0, 0, 0, 4694, 4699, 3, 1458, 729, 0, 4695, 4696, 5, 6, 0, 0, 4696, 4698, 3, 1458, 729, 0, 4697, 4695, 1, 0, 0, 0, 4698, 4701, 1, 0, 0, 0, 4699, 4697, 1, 0, 0, 0, 4699, 4700, 1, 0, 0, 0, 4700, 513, 1, 0, 0, 0, 4701, 4699, 1, 0, 0, 0, 4702, 4703, 5, 138, 0, 0, 4703, 4704, 5, 360, 0, 0, 4704, 4705, 3, 558, 279, 0, 4705, 4706, 5, 133, 0, 0, 4706, 4708, 5, 450, 0, 0, 4707, 4709, 3, 516, 258, 0, 4708, 4707, 1, 0, 0, 0, 4708, 4709, 1, 0, 0, 0, 4709, 4710, 1, 0, 0, 0, 4710, 4713, 3, 1458, 729, 0, 4711, 4712, 7, 37, 0, 0, 4712, 4714, 3, 1458, 729, 0, 4713, 4711, 1, 0, 0, 0, 4713, 4714, 1, 0, 0, 0, 4714, 4725, 1, 0, 0, 0, 4715, 4716, 5, 138, 0, 0, 4716, 4717, 5, 360, 0, 0, 4717, 4718, 3, 558, 279, 0, 4718, 4719, 5, 309, 0, 0, 4719, 4720, 5, 450, 0, 0, 4720, 4721, 3, 1458, 729, 0, 4721, 4722, 5, 94, 0, 0, 4722, 4723, 3, 1458, 729, 0, 4723, 4725, 1, 0, 0, 0, 4724, 4702, 1, 0, 0, 0, 4724, 4715, 1, 0, 0, 0, 4725, 515, 1, 0, 0, 0, 4726, 4727, 5, 220, 0, 0, 4727, 4728, 5, 77, 0, 0, 4728, 4729, 5, 396, 0, 0, 4729, 517, 1, 0, 0, 0, 4730, 4731, 5, 46, 0, 0, 4731, 4732, 5, 278, 0, 0, 4732, 4733, 5, 156, 0, 0, 4733, 4735, 3, 558, 279, 0, 4734, 4736, 3, 524, 262, 0, 4735, 4734, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 4737, 1, 0, 0, 0, 4737, 4738, 5, 62, 0, 0, 4738, 4739, 5, 360, 0, 0, 4739, 4740, 3, 1168, 584, 0, 4740, 4741, 5, 100, 0, 0, 4741, 4743, 3, 1436, 718, 0, 4742, 4744, 3, 526, 263, 0, 4743, 4742, 1, 0, 0, 0, 4743, 4744, 1, 0, 0, 0, 4744, 4745, 1, 0, 0, 0, 4745, 4746, 5, 36, 0, 0, 4746, 4747, 3, 520, 260, 0, 4747, 519, 1, 0, 0, 0, 4748, 4753, 3, 522, 261, 0, 4749, 4750, 5, 6, 0, 0, 4750, 4752, 3, 522, 261, 0, 4751, 4749, 1, 0, 0, 0, 4752, 4755, 1, 0, 0, 0, 4753, 4751, 1, 0, 0, 0, 4753, 4754, 1, 0, 0, 0, 4754, 521, 1, 0, 0, 0, 4755, 4753, 1, 0, 0, 0, 4756, 4757, 5, 278, 0, 0, 4757, 4758, 3, 1456, 728, 0, 4758, 4760, 3, 732, 366, 0, 4759, 4761, 3, 528, 264, 0, 4760, 4759, 1, 0, 0, 0, 4760, 4761, 1, 0, 0, 0, 4761, 4763, 1, 0, 0, 0, 4762, 4764, 3, 530, 265, 0, 4763, 4762, 1, 0, 0, 0, 4763, 4764, 1, 0, 0, 0, 4764, 4788, 1, 0, 0, 0, 4765, 4766, 5, 278, 0, 0, 4766, 4767, 3, 1456, 728, 0, 4767, 4769, 3, 736, 368, 0, 4768, 4770, 3, 528, 264, 0, 4769, 4768, 1, 0, 0, 0, 4769, 4770, 1, 0, 0, 0, 4770, 4772, 1, 0, 0, 0, 4771, 4773, 3, 530, 265, 0, 4772, 4771, 1, 0, 0, 0, 4772, 4773, 1, 0, 0, 0, 4773, 4788, 1, 0, 0, 0, 4774, 4775, 5, 211, 0, 0, 4775, 4776, 3, 1456, 728, 0, 4776, 4777, 3, 674, 337, 0, 4777, 4788, 1, 0, 0, 0, 4778, 4779, 5, 211, 0, 0, 4779, 4780, 3, 1456, 728, 0, 4780, 4781, 5, 2, 0, 0, 4781, 4782, 3, 1342, 671, 0, 4782, 4783, 5, 3, 0, 0, 4783, 4784, 3, 674, 337, 0, 4784, 4788, 1, 0, 0, 0, 4785, 4786, 5, 345, 0, 0, 4786, 4788, 3, 1168, 584, 0, 4787, 4756, 1, 0, 0, 0, 4787, 4765, 1, 0, 0, 0, 4787, 4774, 1, 0, 0, 0, 4787, 4778, 1, 0, 0, 0, 4787, 4785, 1, 0, 0, 0, 4788, 523, 1, 0, 0, 0, 4789, 4790, 5, 53, 0, 0, 4790, 525, 1, 0, 0, 0, 4791, 4792, 5, 206, 0, 0, 4792, 4793, 3, 558, 279, 0, 4793, 527, 1, 0, 0, 0, 4794, 4795, 5, 62, 0, 0, 4795, 4801, 5, 325, 0, 0, 4796, 4797, 5, 62, 0, 0, 4797, 4798, 5, 83, 0, 0, 4798, 4799, 5, 147, 0, 0, 4799, 4801, 3, 558, 279, 0, 4800, 4794, 1, 0, 0, 0, 4800, 4796, 1, 0, 0, 0, 4801, 529, 1, 0, 0, 0, 4802, 4803, 5, 302, 0, 0, 4803, 531, 1, 0, 0, 0, 4804, 4805, 5, 46, 0, 0, 4805, 4806, 5, 278, 0, 0, 4806, 4807, 5, 206, 0, 0, 4807, 4808, 3, 558, 279, 0, 4808, 4809, 5, 100, 0, 0, 4809, 4810, 3, 1436, 718, 0, 4810, 533, 1, 0, 0, 0, 4811, 4812, 5, 138, 0, 0, 4812, 4813, 5, 278, 0, 0, 4813, 4814, 5, 206, 0, 0, 4814, 4815, 3, 558, 279, 0, 4815, 4816, 5, 100, 0, 0, 4816, 4817, 3, 1436, 718, 0, 4817, 4818, 5, 133, 0, 0, 4818, 4819, 3, 520, 260, 0, 4819, 4830, 1, 0, 0, 0, 4820, 4821, 5, 138, 0, 0, 4821, 4822, 5, 278, 0, 0, 4822, 4823, 5, 206, 0, 0, 4823, 4824, 3, 558, 279, 0, 4824, 4825, 5, 100, 0, 0, 4825, 4826, 3, 1436, 718, 0, 4826, 4827, 5, 191, 0, 0, 4827, 4828, 3, 536, 268, 0, 4828, 4830, 1, 0, 0, 0, 4829, 4811, 1, 0, 0, 0, 4829, 4820, 1, 0, 0, 0, 4830, 535, 1, 0, 0, 0, 4831, 4836, 3, 538, 269, 0, 4832, 4833, 5, 6, 0, 0, 4833, 4835, 3, 538, 269, 0, 4834, 4832, 1, 0, 0, 0, 4835, 4838, 1, 0, 0, 0, 4836, 4834, 1, 0, 0, 0, 4836, 4837, 1, 0, 0, 0, 4837, 537, 1, 0, 0, 0, 4838, 4836, 1, 0, 0, 0, 4839, 4840, 5, 278, 0, 0, 4840, 4841, 3, 1456, 728, 0, 4841, 4842, 5, 2, 0, 0, 4842, 4843, 3, 1342, 671, 0, 4843, 4844, 5, 3, 0, 0, 4844, 4852, 1, 0, 0, 0, 4845, 4846, 5, 211, 0, 0, 4846, 4847, 3, 1456, 728, 0, 4847, 4848, 5, 2, 0, 0, 4848, 4849, 3, 1342, 671, 0, 4849, 4850, 5, 3, 0, 0, 4850, 4852, 1, 0, 0, 0, 4851, 4839, 1, 0, 0, 0, 4851, 4845, 1, 0, 0, 0, 4852, 539, 1, 0, 0, 0, 4853, 4854, 5, 301, 0, 0, 4854, 4855, 5, 281, 0, 0, 4855, 4856, 5, 147, 0, 0, 4856, 4857, 3, 1472, 736, 0, 4857, 4858, 5, 94, 0, 0, 4858, 4859, 3, 1470, 735, 0, 4859, 541, 1, 0, 0, 0, 4860, 4861, 5, 191, 0, 0, 4861, 4863, 5, 92, 0, 0, 4862, 4864, 3, 748, 374, 0, 4863, 4862, 1, 0, 0, 0, 4863, 4864, 1, 0, 0, 0, 4864, 4865, 1, 0, 0, 0, 4865, 4867, 3, 1392, 696, 0, 4866, 4868, 3, 124, 62, 0, 4867, 4866, 1, 0, 0, 0, 4867, 4868, 1, 0, 0, 0, 4868, 5240, 1, 0, 0, 0, 4869, 4870, 5, 191, 0, 0, 4870, 4872, 5, 328, 0, 0, 4871, 4873, 3, 748, 374, 0, 4872, 4871, 1, 0, 0, 0, 4872, 4873, 1, 0, 0, 0, 4873, 4874, 1, 0, 0, 0, 4874, 4876, 3, 1416, 708, 0, 4875, 4877, 3, 124, 62, 0, 4876, 4875, 1, 0, 0, 0, 4876, 4877, 1, 0, 0, 0, 4877, 5240, 1, 0, 0, 0, 4878, 4879, 5, 191, 0, 0, 4879, 4881, 5, 376, 0, 0, 4880, 4882, 3, 748, 374, 0, 4881, 4880, 1, 0, 0, 0, 4881, 4882, 1, 0, 0, 0, 4882, 4883, 1, 0, 0, 0, 4883, 4885, 3, 544, 272, 0, 4884, 4886, 3, 124, 62, 0, 4885, 4884, 1, 0, 0, 0, 4885, 4886, 1, 0, 0, 0, 4886, 5240, 1, 0, 0, 0, 4887, 4888, 5, 191, 0, 0, 4888, 4889, 5, 259, 0, 0, 4889, 4891, 5, 376, 0, 0, 4890, 4892, 3, 748, 374, 0, 4891, 4890, 1, 0, 0, 0, 4891, 4892, 1, 0, 0, 0, 4892, 4893, 1, 0, 0, 0, 4893, 4895, 3, 544, 272, 0, 4894, 4896, 3, 124, 62, 0, 4895, 4894, 1, 0, 0, 0, 4895, 4896, 1, 0, 0, 0, 4896, 5240, 1, 0, 0, 0, 4897, 4898, 5, 191, 0, 0, 4898, 4900, 5, 226, 0, 0, 4899, 4901, 3, 748, 374, 0, 4900, 4899, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4902, 1, 0, 0, 0, 4902, 4904, 3, 1416, 708, 0, 4903, 4905, 3, 124, 62, 0, 4904, 4903, 1, 0, 0, 0, 4904, 4905, 1, 0, 0, 0, 4905, 5240, 1, 0, 0, 0, 4906, 4907, 5, 191, 0, 0, 4907, 4908, 5, 63, 0, 0, 4908, 4910, 5, 92, 0, 0, 4909, 4911, 3, 748, 374, 0, 4910, 4909, 1, 0, 0, 0, 4910, 4911, 1, 0, 0, 0, 4911, 4912, 1, 0, 0, 0, 4912, 4914, 3, 1392, 696, 0, 4913, 4915, 3, 124, 62, 0, 4914, 4913, 1, 0, 0, 0, 4914, 4915, 1, 0, 0, 0, 4915, 5240, 1, 0, 0, 0, 4916, 4917, 5, 191, 0, 0, 4917, 4919, 5, 108, 0, 0, 4918, 4920, 3, 748, 374, 0, 4919, 4918, 1, 0, 0, 0, 4919, 4920, 1, 0, 0, 0, 4920, 4921, 1, 0, 0, 0, 4921, 4923, 3, 1416, 708, 0, 4922, 4924, 3, 124, 62, 0, 4923, 4922, 1, 0, 0, 0, 4923, 4924, 1, 0, 0, 0, 4924, 5240, 1, 0, 0, 0, 4925, 4926, 5, 191, 0, 0, 4926, 4928, 5, 168, 0, 0, 4927, 4929, 3, 748, 374, 0, 4928, 4927, 1, 0, 0, 0, 4928, 4929, 1, 0, 0, 0, 4929, 4930, 1, 0, 0, 0, 4930, 4932, 3, 1416, 708, 0, 4931, 4933, 3, 124, 62, 0, 4932, 4931, 1, 0, 0, 0, 4932, 4933, 1, 0, 0, 0, 4933, 5240, 1, 0, 0, 0, 4934, 4935, 5, 191, 0, 0, 4935, 4937, 5, 342, 0, 0, 4936, 4938, 3, 748, 374, 0, 4937, 4936, 1, 0, 0, 0, 4937, 4938, 1, 0, 0, 0, 4938, 4939, 1, 0, 0, 0, 4939, 4941, 3, 1416, 708, 0, 4940, 4942, 3, 124, 62, 0, 4941, 4940, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 5240, 1, 0, 0, 0, 4943, 4944, 5, 191, 0, 0, 4944, 4945, 5, 355, 0, 0, 4945, 4946, 5, 325, 0, 0, 4946, 4948, 5, 283, 0, 0, 4947, 4949, 3, 748, 374, 0, 4948, 4947, 1, 0, 0, 0, 4948, 4949, 1, 0, 0, 0, 4949, 4950, 1, 0, 0, 0, 4950, 4952, 3, 1416, 708, 0, 4951, 4953, 3, 124, 62, 0, 4952, 4951, 1, 0, 0, 0, 4952, 4953, 1, 0, 0, 0, 4953, 5240, 1, 0, 0, 0, 4954, 4955, 5, 191, 0, 0, 4955, 4956, 5, 355, 0, 0, 4956, 4957, 5, 325, 0, 0, 4957, 4959, 5, 185, 0, 0, 4958, 4960, 3, 748, 374, 0, 4959, 4958, 1, 0, 0, 0, 4959, 4960, 1, 0, 0, 0, 4960, 4961, 1, 0, 0, 0, 4961, 4963, 3, 1416, 708, 0, 4962, 4964, 3, 124, 62, 0, 4963, 4962, 1, 0, 0, 0, 4963, 4964, 1, 0, 0, 0, 4964, 5240, 1, 0, 0, 0, 4965, 4966, 5, 191, 0, 0, 4966, 4967, 5, 355, 0, 0, 4967, 4968, 5, 325, 0, 0, 4968, 4970, 5, 353, 0, 0, 4969, 4971, 3, 748, 374, 0, 4970, 4969, 1, 0, 0, 0, 4970, 4971, 1, 0, 0, 0, 4971, 4972, 1, 0, 0, 0, 4972, 4974, 3, 1416, 708, 0, 4973, 4975, 3, 124, 62, 0, 4974, 4973, 1, 0, 0, 0, 4974, 4975, 1, 0, 0, 0, 4975, 5240, 1, 0, 0, 0, 4976, 4977, 5, 191, 0, 0, 4977, 4978, 5, 355, 0, 0, 4978, 4979, 5, 325, 0, 0, 4979, 4981, 5, 163, 0, 0, 4980, 4982, 3, 748, 374, 0, 4981, 4980, 1, 0, 0, 0, 4981, 4982, 1, 0, 0, 0, 4982, 4983, 1, 0, 0, 0, 4983, 4985, 3, 1416, 708, 0, 4984, 4986, 3, 124, 62, 0, 4985, 4984, 1, 0, 0, 0, 4985, 4986, 1, 0, 0, 0, 4986, 5240, 1, 0, 0, 0, 4987, 4988, 5, 191, 0, 0, 4988, 4989, 5, 131, 0, 0, 4989, 4991, 5, 446, 0, 0, 4990, 4992, 3, 748, 374, 0, 4991, 4990, 1, 0, 0, 0, 4991, 4992, 1, 0, 0, 0, 4992, 4993, 1, 0, 0, 0, 4993, 4995, 3, 1416, 708, 0, 4994, 4996, 3, 124, 62, 0, 4995, 4994, 1, 0, 0, 0, 4995, 4996, 1, 0, 0, 0, 4996, 5240, 1, 0, 0, 0, 4997, 4998, 5, 191, 0, 0, 4998, 4999, 5, 198, 0, 0, 4999, 5001, 5, 357, 0, 0, 5000, 5002, 3, 748, 374, 0, 5001, 5000, 1, 0, 0, 0, 5001, 5002, 1, 0, 0, 0, 5002, 5003, 1, 0, 0, 0, 5003, 5005, 3, 1416, 708, 0, 5004, 5006, 3, 124, 62, 0, 5005, 5004, 1, 0, 0, 0, 5005, 5006, 1, 0, 0, 0, 5006, 5240, 1, 0, 0, 0, 5007, 5008, 5, 191, 0, 0, 5008, 5010, 5, 204, 0, 0, 5009, 5011, 3, 748, 374, 0, 5010, 5009, 1, 0, 0, 0, 5010, 5011, 1, 0, 0, 0, 5011, 5012, 1, 0, 0, 0, 5012, 5014, 3, 1416, 708, 0, 5013, 5015, 3, 124, 62, 0, 5014, 5013, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5240, 1, 0, 0, 0, 5016, 5017, 5, 191, 0, 0, 5017, 5018, 5, 63, 0, 0, 5018, 5019, 5, 174, 0, 0, 5019, 5021, 5, 381, 0, 0, 5020, 5022, 3, 748, 374, 0, 5021, 5020, 1, 0, 0, 0, 5021, 5022, 1, 0, 0, 0, 5022, 5023, 1, 0, 0, 0, 5023, 5025, 3, 1416, 708, 0, 5024, 5026, 3, 124, 62, 0, 5025, 5024, 1, 0, 0, 0, 5025, 5026, 1, 0, 0, 0, 5026, 5240, 1, 0, 0, 0, 5027, 5029, 5, 191, 0, 0, 5028, 5030, 3, 338, 169, 0, 5029, 5028, 1, 0, 0, 0, 5029, 5030, 1, 0, 0, 0, 5030, 5031, 1, 0, 0, 0, 5031, 5033, 5, 247, 0, 0, 5032, 5034, 3, 748, 374, 0, 5033, 5032, 1, 0, 0, 0, 5033, 5034, 1, 0, 0, 0, 5034, 5035, 1, 0, 0, 0, 5035, 5037, 3, 1416, 708, 0, 5036, 5038, 3, 124, 62, 0, 5037, 5036, 1, 0, 0, 0, 5037, 5038, 1, 0, 0, 0, 5038, 5240, 1, 0, 0, 0, 5039, 5040, 5, 191, 0, 0, 5040, 5042, 5, 452, 0, 0, 5041, 5043, 3, 748, 374, 0, 5042, 5041, 1, 0, 0, 0, 5042, 5043, 1, 0, 0, 0, 5043, 5044, 1, 0, 0, 0, 5044, 5046, 3, 1416, 708, 0, 5045, 5047, 3, 124, 62, 0, 5046, 5045, 1, 0, 0, 0, 5046, 5047, 1, 0, 0, 0, 5047, 5240, 1, 0, 0, 0, 5048, 5049, 5, 191, 0, 0, 5049, 5051, 5, 331, 0, 0, 5050, 5052, 3, 748, 374, 0, 5051, 5050, 1, 0, 0, 0, 5051, 5052, 1, 0, 0, 0, 5052, 5053, 1, 0, 0, 0, 5053, 5055, 3, 1416, 708, 0, 5054, 5056, 3, 124, 62, 0, 5055, 5054, 1, 0, 0, 0, 5055, 5056, 1, 0, 0, 0, 5056, 5240, 1, 0, 0, 0, 5057, 5058, 5, 191, 0, 0, 5058, 5060, 5, 323, 0, 0, 5059, 5061, 3, 748, 374, 0, 5060, 5059, 1, 0, 0, 0, 5060, 5061, 1, 0, 0, 0, 5061, 5062, 1, 0, 0, 0, 5062, 5064, 3, 1394, 697, 0, 5063, 5065, 3, 124, 62, 0, 5064, 5063, 1, 0, 0, 0, 5064, 5065, 1, 0, 0, 0, 5065, 5240, 1, 0, 0, 0, 5066, 5067, 5, 191, 0, 0, 5067, 5069, 5, 445, 0, 0, 5068, 5070, 3, 748, 374, 0, 5069, 5068, 1, 0, 0, 0, 5069, 5070, 1, 0, 0, 0, 5070, 5071, 1, 0, 0, 0, 5071, 5072, 3, 1436, 718, 0, 5072, 5073, 5, 80, 0, 0, 5073, 5075, 3, 558, 279, 0, 5074, 5076, 3, 124, 62, 0, 5075, 5074, 1, 0, 0, 0, 5075, 5076, 1, 0, 0, 0, 5076, 5240, 1, 0, 0, 0, 5077, 5078, 5, 191, 0, 0, 5078, 5080, 5, 321, 0, 0, 5079, 5081, 3, 748, 374, 0, 5080, 5079, 1, 0, 0, 0, 5080, 5081, 1, 0, 0, 0, 5081, 5082, 1, 0, 0, 0, 5082, 5083, 3, 1436, 718, 0, 5083, 5084, 5, 80, 0, 0, 5084, 5086, 3, 558, 279, 0, 5085, 5087, 3, 124, 62, 0, 5086, 5085, 1, 0, 0, 0, 5086, 5087, 1, 0, 0, 0, 5087, 5240, 1, 0, 0, 0, 5088, 5089, 5, 191, 0, 0, 5089, 5091, 5, 357, 0, 0, 5090, 5092, 3, 748, 374, 0, 5091, 5090, 1, 0, 0, 0, 5091, 5092, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, 5094, 3, 1436, 718, 0, 5094, 5095, 5, 80, 0, 0, 5095, 5097, 3, 558, 279, 0, 5096, 5098, 3, 124, 62, 0, 5097, 5096, 1, 0, 0, 0, 5097, 5098, 1, 0, 0, 0, 5098, 5240, 1, 0, 0, 0, 5099, 5100, 5, 191, 0, 0, 5100, 5102, 5, 360, 0, 0, 5101, 5103, 3, 748, 374, 0, 5102, 5101, 1, 0, 0, 0, 5102, 5103, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5106, 3, 562, 281, 0, 5105, 5107, 3, 124, 62, 0, 5106, 5105, 1, 0, 0, 0, 5106, 5107, 1, 0, 0, 0, 5107, 5240, 1, 0, 0, 0, 5108, 5109, 5, 191, 0, 0, 5109, 5111, 5, 189, 0, 0, 5110, 5112, 3, 748, 374, 0, 5111, 5110, 1, 0, 0, 0, 5111, 5112, 1, 0, 0, 0, 5112, 5113, 1, 0, 0, 0, 5113, 5115, 3, 562, 281, 0, 5114, 5116, 3, 124, 62, 0, 5115, 5114, 1, 0, 0, 0, 5115, 5116, 1, 0, 0, 0, 5116, 5240, 1, 0, 0, 0, 5117, 5118, 5, 191, 0, 0, 5118, 5119, 5, 226, 0, 0, 5119, 5121, 5, 109, 0, 0, 5120, 5122, 3, 748, 374, 0, 5121, 5120, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 1, 0, 0, 0, 5123, 5125, 3, 552, 276, 0, 5124, 5126, 3, 124, 62, 0, 5125, 5124, 1, 0, 0, 0, 5125, 5126, 1, 0, 0, 0, 5126, 5240, 1, 0, 0, 0, 5127, 5128, 5, 191, 0, 0, 5128, 5130, 5, 41, 0, 0, 5129, 5131, 3, 748, 374, 0, 5130, 5129, 1, 0, 0, 0, 5130, 5131, 1, 0, 0, 0, 5131, 5132, 1, 0, 0, 0, 5132, 5133, 5, 2, 0, 0, 5133, 5134, 3, 1168, 584, 0, 5134, 5135, 5, 36, 0, 0, 5135, 5136, 3, 1168, 584, 0, 5136, 5138, 5, 3, 0, 0, 5137, 5139, 3, 124, 62, 0, 5138, 5137, 1, 0, 0, 0, 5138, 5139, 1, 0, 0, 0, 5139, 5240, 1, 0, 0, 0, 5140, 5141, 5, 191, 0, 0, 5141, 5142, 5, 278, 0, 0, 5142, 5144, 5, 156, 0, 0, 5143, 5145, 3, 748, 374, 0, 5144, 5143, 1, 0, 0, 0, 5144, 5145, 1, 0, 0, 0, 5145, 5146, 1, 0, 0, 0, 5146, 5147, 3, 558, 279, 0, 5147, 5148, 5, 100, 0, 0, 5148, 5150, 3, 1436, 718, 0, 5149, 5151, 3, 124, 62, 0, 5150, 5149, 1, 0, 0, 0, 5150, 5151, 1, 0, 0, 0, 5151, 5240, 1, 0, 0, 0, 5152, 5153, 5, 191, 0, 0, 5153, 5154, 5, 278, 0, 0, 5154, 5156, 5, 206, 0, 0, 5155, 5157, 3, 748, 374, 0, 5156, 5155, 1, 0, 0, 0, 5156, 5157, 1, 0, 0, 0, 5157, 5158, 1, 0, 0, 0, 5158, 5159, 3, 558, 279, 0, 5159, 5160, 5, 100, 0, 0, 5160, 5162, 3, 1436, 718, 0, 5161, 5163, 3, 124, 62, 0, 5162, 5161, 1, 0, 0, 0, 5162, 5163, 1, 0, 0, 0, 5163, 5240, 1, 0, 0, 0, 5164, 5165, 5, 191, 0, 0, 5165, 5166, 5, 281, 0, 0, 5166, 5167, 5, 147, 0, 0, 5167, 5169, 3, 1472, 736, 0, 5168, 5170, 3, 124, 62, 0, 5169, 5168, 1, 0, 0, 0, 5169, 5170, 1, 0, 0, 0, 5170, 5240, 1, 0, 0, 0, 5171, 5172, 5, 191, 0, 0, 5172, 5174, 5, 376, 0, 0, 5173, 5175, 3, 748, 374, 0, 5174, 5173, 1, 0, 0, 0, 5174, 5175, 1, 0, 0, 0, 5175, 5176, 1, 0, 0, 0, 5176, 5178, 3, 544, 272, 0, 5177, 5179, 3, 124, 62, 0, 5178, 5177, 1, 0, 0, 0, 5178, 5179, 1, 0, 0, 0, 5179, 5240, 1, 0, 0, 0, 5180, 5181, 5, 191, 0, 0, 5181, 5183, 5, 451, 0, 0, 5182, 5184, 3, 748, 374, 0, 5183, 5182, 1, 0, 0, 0, 5183, 5184, 1, 0, 0, 0, 5184, 5185, 1, 0, 0, 0, 5185, 5187, 3, 1436, 718, 0, 5186, 5188, 3, 124, 62, 0, 5187, 5186, 1, 0, 0, 0, 5187, 5188, 1, 0, 0, 0, 5188, 5240, 1, 0, 0, 0, 5189, 5190, 5, 191, 0, 0, 5190, 5192, 5, 351, 0, 0, 5191, 5193, 3, 748, 374, 0, 5192, 5191, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5194, 1, 0, 0, 0, 5194, 5240, 3, 1402, 701, 0, 5195, 5196, 5, 191, 0, 0, 5196, 5198, 5, 443, 0, 0, 5197, 5199, 3, 748, 374, 0, 5198, 5197, 1, 0, 0, 0, 5198, 5199, 1, 0, 0, 0, 5199, 5200, 1, 0, 0, 0, 5200, 5201, 5, 62, 0, 0, 5201, 5202, 3, 1168, 584, 0, 5202, 5203, 5, 247, 0, 0, 5203, 5205, 3, 1436, 718, 0, 5204, 5206, 3, 124, 62, 0, 5205, 5204, 1, 0, 0, 0, 5205, 5206, 1, 0, 0, 0, 5206, 5240, 1, 0, 0, 0, 5207, 5208, 5, 191, 0, 0, 5208, 5210, 7, 38, 0, 0, 5209, 5211, 3, 748, 374, 0, 5210, 5209, 1, 0, 0, 0, 5210, 5211, 1, 0, 0, 0, 5211, 5212, 1, 0, 0, 0, 5212, 5240, 3, 1472, 736, 0, 5213, 5214, 5, 191, 0, 0, 5214, 5215, 5, 99, 0, 0, 5215, 5217, 5, 257, 0, 0, 5216, 5218, 3, 748, 374, 0, 5217, 5216, 1, 0, 0, 0, 5217, 5218, 1, 0, 0, 0, 5218, 5219, 1, 0, 0, 0, 5219, 5220, 5, 62, 0, 0, 5220, 5221, 3, 404, 202, 0, 5221, 5222, 5, 331, 0, 0, 5222, 5223, 3, 1436, 718, 0, 5223, 5240, 1, 0, 0, 0, 5224, 5225, 5, 191, 0, 0, 5225, 5227, 5, 175, 0, 0, 5226, 5228, 3, 748, 374, 0, 5227, 5226, 1, 0, 0, 0, 5227, 5228, 1, 0, 0, 0, 5228, 5229, 1, 0, 0, 0, 5229, 5237, 3, 1420, 710, 0, 5230, 5232, 3, 14, 7, 0, 5231, 5230, 1, 0, 0, 0, 5231, 5232, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5234, 5, 2, 0, 0, 5234, 5235, 3, 860, 430, 0, 5235, 5236, 5, 3, 0, 0, 5236, 5238, 1, 0, 0, 0, 5237, 5231, 1, 0, 0, 0, 5237, 5238, 1, 0, 0, 0, 5238, 5240, 1, 0, 0, 0, 5239, 4860, 1, 0, 0, 0, 5239, 4869, 1, 0, 0, 0, 5239, 4878, 1, 0, 0, 0, 5239, 4887, 1, 0, 0, 0, 5239, 4897, 1, 0, 0, 0, 5239, 4906, 1, 0, 0, 0, 5239, 4916, 1, 0, 0, 0, 5239, 4925, 1, 0, 0, 0, 5239, 4934, 1, 0, 0, 0, 5239, 4943, 1, 0, 0, 0, 5239, 4954, 1, 0, 0, 0, 5239, 4965, 1, 0, 0, 0, 5239, 4976, 1, 0, 0, 0, 5239, 4987, 1, 0, 0, 0, 5239, 4997, 1, 0, 0, 0, 5239, 5007, 1, 0, 0, 0, 5239, 5016, 1, 0, 0, 0, 5239, 5027, 1, 0, 0, 0, 5239, 5039, 1, 0, 0, 0, 5239, 5048, 1, 0, 0, 0, 5239, 5057, 1, 0, 0, 0, 5239, 5066, 1, 0, 0, 0, 5239, 5077, 1, 0, 0, 0, 5239, 5088, 1, 0, 0, 0, 5239, 5099, 1, 0, 0, 0, 5239, 5108, 1, 0, 0, 0, 5239, 5117, 1, 0, 0, 0, 5239, 5127, 1, 0, 0, 0, 5239, 5140, 1, 0, 0, 0, 5239, 5152, 1, 0, 0, 0, 5239, 5164, 1, 0, 0, 0, 5239, 5171, 1, 0, 0, 0, 5239, 5180, 1, 0, 0, 0, 5239, 5189, 1, 0, 0, 0, 5239, 5195, 1, 0, 0, 0, 5239, 5207, 1, 0, 0, 0, 5239, 5213, 1, 0, 0, 0, 5239, 5224, 1, 0, 0, 0, 5240, 543, 1, 0, 0, 0, 5241, 5246, 3, 1410, 705, 0, 5242, 5243, 5, 6, 0, 0, 5243, 5245, 3, 1410, 705, 0, 5244, 5242, 1, 0, 0, 0, 5245, 5248, 1, 0, 0, 0, 5246, 5244, 1, 0, 0, 0, 5246, 5247, 1, 0, 0, 0, 5247, 545, 1, 0, 0, 0, 5248, 5246, 1, 0, 0, 0, 5249, 5251, 5, 63, 0, 0, 5250, 5249, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5252, 1, 0, 0, 0, 5252, 5253, 5, 92, 0, 0, 5253, 5274, 3, 1406, 703, 0, 5254, 5256, 5, 259, 0, 0, 5255, 5254, 1, 0, 0, 0, 5255, 5256, 1, 0, 0, 0, 5256, 5257, 1, 0, 0, 0, 5257, 5258, 5, 376, 0, 0, 5258, 5274, 3, 1410, 705, 0, 5259, 5260, 5, 226, 0, 0, 5260, 5274, 3, 558, 279, 0, 5261, 5262, 5, 108, 0, 0, 5262, 5274, 3, 558, 279, 0, 5263, 5264, 5, 168, 0, 0, 5264, 5274, 3, 558, 279, 0, 5265, 5266, 5, 342, 0, 0, 5266, 5274, 3, 558, 279, 0, 5267, 5268, 5, 328, 0, 0, 5268, 5274, 3, 558, 279, 0, 5269, 5270, 5, 355, 0, 0, 5270, 5271, 5, 325, 0, 0, 5271, 5272, 7, 39, 0, 0, 5272, 5274, 3, 558, 279, 0, 5273, 5250, 1, 0, 0, 0, 5273, 5255, 1, 0, 0, 0, 5273, 5259, 1, 0, 0, 0, 5273, 5261, 1, 0, 0, 0, 5273, 5263, 1, 0, 0, 0, 5273, 5265, 1, 0, 0, 0, 5273, 5267, 1, 0, 0, 0, 5273, 5269, 1, 0, 0, 0, 5274, 547, 1, 0, 0, 0, 5275, 5276, 5, 131, 0, 0, 5276, 5277, 5, 446, 0, 0, 5277, 5307, 3, 1436, 718, 0, 5278, 5279, 5, 198, 0, 0, 5279, 5280, 5, 357, 0, 0, 5280, 5307, 3, 1436, 718, 0, 5281, 5282, 5, 204, 0, 0, 5282, 5307, 3, 1436, 718, 0, 5283, 5284, 5, 63, 0, 0, 5284, 5285, 5, 174, 0, 0, 5285, 5286, 5, 381, 0, 0, 5286, 5307, 3, 1436, 718, 0, 5287, 5289, 3, 338, 169, 0, 5288, 5287, 1, 0, 0, 0, 5288, 5289, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 5291, 5, 247, 0, 0, 5291, 5307, 3, 1436, 718, 0, 5292, 5293, 5, 452, 0, 0, 5293, 5307, 3, 1436, 718, 0, 5294, 5295, 5, 323, 0, 0, 5295, 5307, 3, 1422, 711, 0, 5296, 5297, 5, 331, 0, 0, 5297, 5307, 3, 1436, 718, 0, 5298, 5299, 5, 175, 0, 0, 5299, 5307, 3, 1420, 710, 0, 5300, 5301, 5, 318, 0, 0, 5301, 5307, 3, 1436, 718, 0, 5302, 5303, 5, 451, 0, 0, 5303, 5307, 3, 1436, 718, 0, 5304, 5305, 5, 351, 0, 0, 5305, 5307, 3, 1402, 701, 0, 5306, 5275, 1, 0, 0, 0, 5306, 5278, 1, 0, 0, 0, 5306, 5281, 1, 0, 0, 0, 5306, 5283, 1, 0, 0, 0, 5306, 5288, 1, 0, 0, 0, 5306, 5292, 1, 0, 0, 0, 5306, 5294, 1, 0, 0, 0, 5306, 5296, 1, 0, 0, 0, 5306, 5298, 1, 0, 0, 0, 5306, 5300, 1, 0, 0, 0, 5306, 5302, 1, 0, 0, 0, 5306, 5304, 1, 0, 0, 0, 5307, 549, 1, 0, 0, 0, 5308, 5309, 7, 40, 0, 0, 5309, 551, 1, 0, 0, 0, 5310, 5315, 3, 558, 279, 0, 5311, 5312, 5, 6, 0, 0, 5312, 5314, 3, 558, 279, 0, 5313, 5311, 1, 0, 0, 0, 5314, 5317, 1, 0, 0, 0, 5315, 5313, 1, 0, 0, 0, 5315, 5316, 1, 0, 0, 0, 5316, 553, 1, 0, 0, 0, 5317, 5315, 1, 0, 0, 0, 5318, 5319, 3, 556, 278, 0, 5319, 5320, 5, 11, 0, 0, 5320, 5321, 3, 1432, 716, 0, 5321, 555, 1, 0, 0, 0, 5322, 5324, 3, 1474, 737, 0, 5323, 5325, 3, 560, 280, 0, 5324, 5323, 1, 0, 0, 0, 5324, 5325, 1, 0, 0, 0, 5325, 557, 1, 0, 0, 0, 5326, 5328, 3, 1474, 737, 0, 5327, 5329, 3, 560, 280, 0, 5328, 5327, 1, 0, 0, 0, 5328, 5329, 1, 0, 0, 0, 5329, 559, 1, 0, 0, 0, 5330, 5331, 5, 11, 0, 0, 5331, 5333, 3, 1438, 719, 0, 5332, 5330, 1, 0, 0, 0, 5333, 5334, 1, 0, 0, 0, 5334, 5332, 1, 0, 0, 0, 5334, 5335, 1, 0, 0, 0, 5335, 561, 1, 0, 0, 0, 5336, 5341, 3, 1168, 584, 0, 5337, 5338, 5, 6, 0, 0, 5338, 5340, 3, 1168, 584, 0, 5339, 5337, 1, 0, 0, 0, 5340, 5343, 1, 0, 0, 0, 5341, 5339, 1, 0, 0, 0, 5341, 5342, 1, 0, 0, 0, 5342, 563, 1, 0, 0, 0, 5343, 5341, 1, 0, 0, 0, 5344, 5346, 5, 358, 0, 0, 5345, 5347, 5, 92, 0, 0, 5346, 5345, 1, 0, 0, 0, 5346, 5347, 1, 0, 0, 0, 5347, 5348, 1, 0, 0, 0, 5348, 5353, 3, 566, 283, 0, 5349, 5350, 5, 6, 0, 0, 5350, 5352, 3, 566, 283, 0, 5351, 5349, 1, 0, 0, 0, 5352, 5355, 1, 0, 0, 0, 5353, 5351, 1, 0, 0, 0, 5353, 5354, 1, 0, 0, 0, 5354, 5358, 1, 0, 0, 0, 5355, 5353, 1, 0, 0, 0, 5356, 5357, 7, 41, 0, 0, 5357, 5359, 5, 219, 0, 0, 5358, 5356, 1, 0, 0, 0, 5358, 5359, 1, 0, 0, 0, 5359, 5361, 1, 0, 0, 0, 5360, 5362, 3, 124, 62, 0, 5361, 5360, 1, 0, 0, 0, 5361, 5362, 1, 0, 0, 0, 5362, 565, 1, 0, 0, 0, 5363, 5365, 5, 81, 0, 0, 5364, 5363, 1, 0, 0, 0, 5364, 5365, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5368, 3, 1406, 703, 0, 5367, 5369, 5, 9, 0, 0, 5368, 5367, 1, 0, 0, 0, 5368, 5369, 1, 0, 0, 0, 5369, 567, 1, 0, 0, 0, 5370, 5371, 5, 159, 0, 0, 5371, 5372, 5, 80, 0, 0, 5372, 5373, 3, 546, 273, 0, 5373, 5374, 5, 116, 0, 0, 5374, 5375, 3, 570, 285, 0, 5375, 5536, 1, 0, 0, 0, 5376, 5377, 5, 159, 0, 0, 5377, 5378, 5, 80, 0, 0, 5378, 5379, 5, 44, 0, 0, 5379, 5380, 3, 554, 277, 0, 5380, 5381, 5, 116, 0, 0, 5381, 5382, 3, 570, 285, 0, 5382, 5536, 1, 0, 0, 0, 5383, 5384, 5, 159, 0, 0, 5384, 5385, 5, 80, 0, 0, 5385, 5386, 3, 548, 274, 0, 5386, 5387, 5, 116, 0, 0, 5387, 5388, 3, 570, 285, 0, 5388, 5536, 1, 0, 0, 0, 5389, 5390, 5, 159, 0, 0, 5390, 5391, 5, 80, 0, 0, 5391, 5392, 5, 360, 0, 0, 5392, 5393, 3, 1168, 584, 0, 5393, 5394, 5, 116, 0, 0, 5394, 5395, 3, 570, 285, 0, 5395, 5536, 1, 0, 0, 0, 5396, 5397, 5, 159, 0, 0, 5397, 5398, 5, 80, 0, 0, 5398, 5399, 5, 189, 0, 0, 5399, 5400, 3, 1168, 584, 0, 5400, 5401, 5, 116, 0, 0, 5401, 5402, 3, 570, 285, 0, 5402, 5536, 1, 0, 0, 0, 5403, 5404, 5, 159, 0, 0, 5404, 5405, 5, 80, 0, 0, 5405, 5406, 5, 136, 0, 0, 5406, 5407, 3, 698, 349, 0, 5407, 5408, 5, 116, 0, 0, 5408, 5409, 3, 570, 285, 0, 5409, 5536, 1, 0, 0, 0, 5410, 5411, 5, 159, 0, 0, 5411, 5412, 5, 80, 0, 0, 5412, 5413, 5, 211, 0, 0, 5413, 5414, 3, 674, 337, 0, 5414, 5415, 5, 116, 0, 0, 5415, 5416, 3, 570, 285, 0, 5416, 5536, 1, 0, 0, 0, 5417, 5418, 5, 159, 0, 0, 5418, 5419, 5, 80, 0, 0, 5419, 5420, 5, 278, 0, 0, 5420, 5421, 3, 736, 368, 0, 5421, 5422, 5, 116, 0, 0, 5422, 5423, 3, 570, 285, 0, 5423, 5536, 1, 0, 0, 0, 5424, 5425, 5, 159, 0, 0, 5425, 5426, 5, 80, 0, 0, 5426, 5427, 5, 45, 0, 0, 5427, 5428, 3, 1436, 718, 0, 5428, 5429, 5, 80, 0, 0, 5429, 5430, 3, 1406, 703, 0, 5430, 5431, 5, 116, 0, 0, 5431, 5432, 3, 570, 285, 0, 5432, 5536, 1, 0, 0, 0, 5433, 5434, 5, 159, 0, 0, 5434, 5435, 5, 80, 0, 0, 5435, 5436, 5, 45, 0, 0, 5436, 5437, 3, 1436, 718, 0, 5437, 5439, 5, 80, 0, 0, 5438, 5440, 5, 189, 0, 0, 5439, 5438, 1, 0, 0, 0, 5439, 5440, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5442, 3, 558, 279, 0, 5442, 5443, 5, 116, 0, 0, 5443, 5444, 3, 570, 285, 0, 5444, 5536, 1, 0, 0, 0, 5445, 5446, 5, 159, 0, 0, 5446, 5447, 5, 80, 0, 0, 5447, 5448, 5, 445, 0, 0, 5448, 5449, 3, 1436, 718, 0, 5449, 5450, 5, 80, 0, 0, 5450, 5451, 3, 558, 279, 0, 5451, 5452, 5, 116, 0, 0, 5452, 5453, 3, 570, 285, 0, 5453, 5536, 1, 0, 0, 0, 5454, 5455, 5, 159, 0, 0, 5455, 5456, 5, 80, 0, 0, 5456, 5457, 5, 321, 0, 0, 5457, 5458, 3, 1436, 718, 0, 5458, 5459, 5, 80, 0, 0, 5459, 5460, 3, 558, 279, 0, 5460, 5461, 5, 116, 0, 0, 5461, 5462, 3, 570, 285, 0, 5462, 5536, 1, 0, 0, 0, 5463, 5464, 5, 159, 0, 0, 5464, 5465, 5, 80, 0, 0, 5465, 5466, 5, 357, 0, 0, 5466, 5467, 3, 1436, 718, 0, 5467, 5468, 5, 80, 0, 0, 5468, 5469, 3, 558, 279, 0, 5469, 5470, 5, 116, 0, 0, 5470, 5471, 3, 570, 285, 0, 5471, 5536, 1, 0, 0, 0, 5472, 5473, 5, 159, 0, 0, 5473, 5474, 5, 80, 0, 0, 5474, 5475, 5, 296, 0, 0, 5475, 5476, 3, 670, 335, 0, 5476, 5477, 5, 116, 0, 0, 5477, 5478, 3, 570, 285, 0, 5478, 5536, 1, 0, 0, 0, 5479, 5480, 5, 159, 0, 0, 5480, 5481, 5, 80, 0, 0, 5481, 5482, 5, 442, 0, 0, 5482, 5483, 3, 666, 333, 0, 5483, 5484, 5, 116, 0, 0, 5484, 5485, 3, 570, 285, 0, 5485, 5536, 1, 0, 0, 0, 5486, 5487, 5, 159, 0, 0, 5487, 5488, 5, 80, 0, 0, 5488, 5489, 5, 443, 0, 0, 5489, 5490, 5, 62, 0, 0, 5490, 5491, 3, 1168, 584, 0, 5491, 5492, 5, 247, 0, 0, 5492, 5493, 3, 1436, 718, 0, 5493, 5494, 5, 116, 0, 0, 5494, 5495, 3, 570, 285, 0, 5495, 5536, 1, 0, 0, 0, 5496, 5497, 5, 159, 0, 0, 5497, 5498, 5, 80, 0, 0, 5498, 5499, 5, 278, 0, 0, 5499, 5500, 5, 156, 0, 0, 5500, 5501, 3, 558, 279, 0, 5501, 5502, 5, 100, 0, 0, 5502, 5503, 3, 1436, 718, 0, 5503, 5504, 5, 116, 0, 0, 5504, 5505, 3, 570, 285, 0, 5505, 5536, 1, 0, 0, 0, 5506, 5507, 5, 159, 0, 0, 5507, 5508, 5, 80, 0, 0, 5508, 5509, 5, 278, 0, 0, 5509, 5510, 5, 206, 0, 0, 5510, 5511, 3, 558, 279, 0, 5511, 5512, 5, 100, 0, 0, 5512, 5513, 3, 1436, 718, 0, 5513, 5514, 5, 116, 0, 0, 5514, 5515, 3, 570, 285, 0, 5515, 5536, 1, 0, 0, 0, 5516, 5517, 5, 159, 0, 0, 5517, 5518, 5, 80, 0, 0, 5518, 5519, 5, 248, 0, 0, 5519, 5520, 5, 274, 0, 0, 5520, 5521, 3, 322, 161, 0, 5521, 5522, 5, 116, 0, 0, 5522, 5523, 3, 570, 285, 0, 5523, 5536, 1, 0, 0, 0, 5524, 5525, 5, 159, 0, 0, 5525, 5526, 5, 80, 0, 0, 5526, 5527, 5, 41, 0, 0, 5527, 5528, 5, 2, 0, 0, 5528, 5529, 3, 1168, 584, 0, 5529, 5530, 5, 36, 0, 0, 5530, 5531, 3, 1168, 584, 0, 5531, 5532, 5, 3, 0, 0, 5532, 5533, 5, 116, 0, 0, 5533, 5534, 3, 570, 285, 0, 5534, 5536, 1, 0, 0, 0, 5535, 5370, 1, 0, 0, 0, 5535, 5376, 1, 0, 0, 0, 5535, 5383, 1, 0, 0, 0, 5535, 5389, 1, 0, 0, 0, 5535, 5396, 1, 0, 0, 0, 5535, 5403, 1, 0, 0, 0, 5535, 5410, 1, 0, 0, 0, 5535, 5417, 1, 0, 0, 0, 5535, 5424, 1, 0, 0, 0, 5535, 5433, 1, 0, 0, 0, 5535, 5445, 1, 0, 0, 0, 5535, 5454, 1, 0, 0, 0, 5535, 5463, 1, 0, 0, 0, 5535, 5472, 1, 0, 0, 0, 5535, 5479, 1, 0, 0, 0, 5535, 5486, 1, 0, 0, 0, 5535, 5496, 1, 0, 0, 0, 5535, 5506, 1, 0, 0, 0, 5535, 5516, 1, 0, 0, 0, 5535, 5524, 1, 0, 0, 0, 5536, 569, 1, 0, 0, 0, 5537, 5540, 3, 1458, 729, 0, 5538, 5540, 5, 78, 0, 0, 5539, 5537, 1, 0, 0, 0, 5539, 5538, 1, 0, 0, 0, 5540, 571, 1, 0, 0, 0, 5541, 5542, 5, 327, 0, 0, 5542, 5544, 5, 246, 0, 0, 5543, 5545, 3, 574, 287, 0, 5544, 5543, 1, 0, 0, 0, 5544, 5545, 1, 0, 0, 0, 5545, 5546, 1, 0, 0, 0, 5546, 5547, 5, 80, 0, 0, 5547, 5548, 5, 44, 0, 0, 5548, 5549, 3, 1432, 716, 0, 5549, 5550, 5, 116, 0, 0, 5550, 5551, 3, 576, 288, 0, 5551, 5651, 1, 0, 0, 0, 5552, 5553, 5, 327, 0, 0, 5553, 5555, 5, 246, 0, 0, 5554, 5556, 3, 574, 287, 0, 5555, 5554, 1, 0, 0, 0, 5555, 5556, 1, 0, 0, 0, 5556, 5557, 1, 0, 0, 0, 5557, 5558, 5, 80, 0, 0, 5558, 5559, 5, 360, 0, 0, 5559, 5560, 3, 1168, 584, 0, 5560, 5561, 5, 116, 0, 0, 5561, 5562, 3, 576, 288, 0, 5562, 5651, 1, 0, 0, 0, 5563, 5564, 5, 327, 0, 0, 5564, 5566, 5, 246, 0, 0, 5565, 5567, 3, 574, 287, 0, 5566, 5565, 1, 0, 0, 0, 5566, 5567, 1, 0, 0, 0, 5567, 5568, 1, 0, 0, 0, 5568, 5569, 5, 80, 0, 0, 5569, 5570, 5, 189, 0, 0, 5570, 5571, 3, 1168, 584, 0, 5571, 5572, 5, 116, 0, 0, 5572, 5573, 3, 576, 288, 0, 5573, 5651, 1, 0, 0, 0, 5574, 5575, 5, 327, 0, 0, 5575, 5577, 5, 246, 0, 0, 5576, 5578, 3, 574, 287, 0, 5577, 5576, 1, 0, 0, 0, 5577, 5578, 1, 0, 0, 0, 5578, 5579, 1, 0, 0, 0, 5579, 5580, 5, 80, 0, 0, 5580, 5581, 5, 136, 0, 0, 5581, 5582, 3, 698, 349, 0, 5582, 5583, 5, 116, 0, 0, 5583, 5584, 3, 576, 288, 0, 5584, 5651, 1, 0, 0, 0, 5585, 5586, 5, 327, 0, 0, 5586, 5588, 5, 246, 0, 0, 5587, 5589, 3, 574, 287, 0, 5588, 5587, 1, 0, 0, 0, 5588, 5589, 1, 0, 0, 0, 5589, 5590, 1, 0, 0, 0, 5590, 5591, 5, 80, 0, 0, 5591, 5592, 5, 211, 0, 0, 5592, 5593, 3, 674, 337, 0, 5593, 5594, 5, 116, 0, 0, 5594, 5595, 3, 576, 288, 0, 5595, 5651, 1, 0, 0, 0, 5596, 5597, 5, 327, 0, 0, 5597, 5599, 5, 246, 0, 0, 5598, 5600, 3, 574, 287, 0, 5599, 5598, 1, 0, 0, 0, 5599, 5600, 1, 0, 0, 0, 5600, 5601, 1, 0, 0, 0, 5601, 5602, 5, 80, 0, 0, 5602, 5603, 5, 248, 0, 0, 5603, 5604, 5, 274, 0, 0, 5604, 5605, 3, 322, 161, 0, 5605, 5606, 5, 116, 0, 0, 5606, 5607, 3, 576, 288, 0, 5607, 5651, 1, 0, 0, 0, 5608, 5609, 5, 327, 0, 0, 5609, 5611, 5, 246, 0, 0, 5610, 5612, 3, 574, 287, 0, 5611, 5610, 1, 0, 0, 0, 5611, 5612, 1, 0, 0, 0, 5612, 5613, 1, 0, 0, 0, 5613, 5614, 5, 80, 0, 0, 5614, 5615, 5, 296, 0, 0, 5615, 5616, 3, 670, 335, 0, 5616, 5617, 5, 116, 0, 0, 5617, 5618, 3, 576, 288, 0, 5618, 5651, 1, 0, 0, 0, 5619, 5620, 5, 327, 0, 0, 5620, 5622, 5, 246, 0, 0, 5621, 5623, 3, 574, 287, 0, 5622, 5621, 1, 0, 0, 0, 5622, 5623, 1, 0, 0, 0, 5623, 5624, 1, 0, 0, 0, 5624, 5625, 5, 80, 0, 0, 5625, 5626, 5, 442, 0, 0, 5626, 5627, 3, 666, 333, 0, 5627, 5628, 5, 116, 0, 0, 5628, 5629, 3, 576, 288, 0, 5629, 5651, 1, 0, 0, 0, 5630, 5631, 5, 327, 0, 0, 5631, 5633, 5, 246, 0, 0, 5632, 5634, 3, 574, 287, 0, 5633, 5632, 1, 0, 0, 0, 5633, 5634, 1, 0, 0, 0, 5634, 5635, 1, 0, 0, 0, 5635, 5636, 5, 80, 0, 0, 5636, 5637, 3, 546, 273, 0, 5637, 5638, 5, 116, 0, 0, 5638, 5639, 3, 576, 288, 0, 5639, 5651, 1, 0, 0, 0, 5640, 5641, 5, 327, 0, 0, 5641, 5643, 5, 246, 0, 0, 5642, 5644, 3, 574, 287, 0, 5643, 5642, 1, 0, 0, 0, 5643, 5644, 1, 0, 0, 0, 5644, 5645, 1, 0, 0, 0, 5645, 5646, 5, 80, 0, 0, 5646, 5647, 3, 548, 274, 0, 5647, 5648, 5, 116, 0, 0, 5648, 5649, 3, 576, 288, 0, 5649, 5651, 1, 0, 0, 0, 5650, 5541, 1, 0, 0, 0, 5650, 5552, 1, 0, 0, 0, 5650, 5563, 1, 0, 0, 0, 5650, 5574, 1, 0, 0, 0, 5650, 5585, 1, 0, 0, 0, 5650, 5596, 1, 0, 0, 0, 5650, 5608, 1, 0, 0, 0, 5650, 5619, 1, 0, 0, 0, 5650, 5630, 1, 0, 0, 0, 5650, 5640, 1, 0, 0, 0, 5651, 573, 1, 0, 0, 0, 5652, 5653, 5, 62, 0, 0, 5653, 5654, 3, 80, 40, 0, 5654, 575, 1, 0, 0, 0, 5655, 5658, 3, 1458, 729, 0, 5656, 5658, 5, 78, 0, 0, 5657, 5655, 1, 0, 0, 0, 5657, 5656, 1, 0, 0, 0, 5658, 577, 1, 0, 0, 0, 5659, 5660, 5, 61, 0, 0, 5660, 5664, 3, 580, 290, 0, 5661, 5662, 5, 265, 0, 0, 5662, 5664, 3, 580, 290, 0, 5663, 5659, 1, 0, 0, 0, 5663, 5661, 1, 0, 0, 0, 5664, 579, 1, 0, 0, 0, 5665, 5751, 3, 994, 497, 0, 5666, 5667, 3, 582, 291, 0, 5667, 5668, 3, 994, 497, 0, 5668, 5751, 1, 0, 0, 0, 5669, 5671, 5, 268, 0, 0, 5670, 5672, 3, 584, 292, 0, 5671, 5670, 1, 0, 0, 0, 5671, 5672, 1, 0, 0, 0, 5672, 5673, 1, 0, 0, 0, 5673, 5751, 3, 994, 497, 0, 5674, 5676, 5, 293, 0, 0, 5675, 5677, 3, 584, 292, 0, 5676, 5675, 1, 0, 0, 0, 5676, 5677, 1, 0, 0, 0, 5677, 5678, 1, 0, 0, 0, 5678, 5751, 3, 994, 497, 0, 5679, 5681, 5, 207, 0, 0, 5680, 5682, 3, 584, 292, 0, 5681, 5680, 1, 0, 0, 0, 5681, 5682, 1, 0, 0, 0, 5682, 5683, 1, 0, 0, 0, 5683, 5751, 3, 994, 497, 0, 5684, 5686, 5, 249, 0, 0, 5685, 5687, 3, 584, 292, 0, 5686, 5685, 1, 0, 0, 0, 5686, 5687, 1, 0, 0, 0, 5687, 5688, 1, 0, 0, 0, 5688, 5751, 3, 994, 497, 0, 5689, 5690, 5, 130, 0, 0, 5690, 5692, 3, 1464, 732, 0, 5691, 5693, 3, 584, 292, 0, 5692, 5691, 1, 0, 0, 0, 5692, 5693, 1, 0, 0, 0, 5693, 5694, 1, 0, 0, 0, 5694, 5695, 3, 994, 497, 0, 5695, 5751, 1, 0, 0, 0, 5696, 5697, 5, 307, 0, 0, 5697, 5699, 3, 1464, 732, 0, 5698, 5700, 3, 584, 292, 0, 5699, 5698, 1, 0, 0, 0, 5699, 5700, 1, 0, 0, 0, 5700, 5701, 1, 0, 0, 0, 5701, 5702, 3, 994, 497, 0, 5702, 5751, 1, 0, 0, 0, 5703, 5705, 3, 1464, 732, 0, 5704, 5706, 3, 584, 292, 0, 5705, 5704, 1, 0, 0, 0, 5705, 5706, 1, 0, 0, 0, 5706, 5707, 1, 0, 0, 0, 5707, 5708, 3, 994, 497, 0, 5708, 5751, 1, 0, 0, 0, 5709, 5711, 5, 30, 0, 0, 5710, 5712, 3, 584, 292, 0, 5711, 5710, 1, 0, 0, 0, 5711, 5712, 1, 0, 0, 0, 5712, 5713, 1, 0, 0, 0, 5713, 5751, 3, 994, 497, 0, 5714, 5716, 5, 210, 0, 0, 5715, 5717, 3, 584, 292, 0, 5716, 5715, 1, 0, 0, 0, 5716, 5717, 1, 0, 0, 0, 5717, 5718, 1, 0, 0, 0, 5718, 5751, 3, 994, 497, 0, 5719, 5720, 5, 210, 0, 0, 5720, 5722, 3, 1464, 732, 0, 5721, 5723, 3, 584, 292, 0, 5722, 5721, 1, 0, 0, 0, 5722, 5723, 1, 0, 0, 0, 5723, 5724, 1, 0, 0, 0, 5724, 5725, 3, 994, 497, 0, 5725, 5751, 1, 0, 0, 0, 5726, 5727, 5, 210, 0, 0, 5727, 5729, 5, 30, 0, 0, 5728, 5730, 3, 584, 292, 0, 5729, 5728, 1, 0, 0, 0, 5729, 5730, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 5751, 3, 994, 497, 0, 5732, 5734, 5, 144, 0, 0, 5733, 5735, 3, 584, 292, 0, 5734, 5733, 1, 0, 0, 0, 5734, 5735, 1, 0, 0, 0, 5735, 5736, 1, 0, 0, 0, 5736, 5751, 3, 994, 497, 0, 5737, 5738, 5, 144, 0, 0, 5738, 5740, 3, 1464, 732, 0, 5739, 5741, 3, 584, 292, 0, 5740, 5739, 1, 0, 0, 0, 5740, 5741, 1, 0, 0, 0, 5741, 5742, 1, 0, 0, 0, 5742, 5743, 3, 994, 497, 0, 5743, 5751, 1, 0, 0, 0, 5744, 5745, 5, 144, 0, 0, 5745, 5747, 5, 30, 0, 0, 5746, 5748, 3, 584, 292, 0, 5747, 5746, 1, 0, 0, 0, 5747, 5748, 1, 0, 0, 0, 5748, 5749, 1, 0, 0, 0, 5749, 5751, 3, 994, 497, 0, 5750, 5665, 1, 0, 0, 0, 5750, 5666, 1, 0, 0, 0, 5750, 5669, 1, 0, 0, 0, 5750, 5674, 1, 0, 0, 0, 5750, 5679, 1, 0, 0, 0, 5750, 5684, 1, 0, 0, 0, 5750, 5689, 1, 0, 0, 0, 5750, 5696, 1, 0, 0, 0, 5750, 5703, 1, 0, 0, 0, 5750, 5709, 1, 0, 0, 0, 5750, 5714, 1, 0, 0, 0, 5750, 5719, 1, 0, 0, 0, 5750, 5726, 1, 0, 0, 0, 5750, 5732, 1, 0, 0, 0, 5750, 5737, 1, 0, 0, 0, 5750, 5744, 1, 0, 0, 0, 5751, 581, 1, 0, 0, 0, 5752, 5753, 7, 42, 0, 0, 5753, 583, 1, 0, 0, 0, 5754, 5755, 3, 582, 291, 0, 5755, 585, 1, 0, 0, 0, 5756, 5757, 5, 65, 0, 0, 5757, 5758, 3, 590, 295, 0, 5758, 5759, 5, 80, 0, 0, 5759, 5760, 3, 600, 300, 0, 5760, 5761, 5, 94, 0, 0, 5761, 5763, 3, 602, 301, 0, 5762, 5764, 3, 606, 303, 0, 5763, 5762, 1, 0, 0, 0, 5763, 5764, 1, 0, 0, 0, 5764, 587, 1, 0, 0, 0, 5765, 5766, 5, 317, 0, 0, 5766, 5767, 3, 590, 295, 0, 5767, 5768, 5, 80, 0, 0, 5768, 5769, 3, 600, 300, 0, 5769, 5770, 5, 64, 0, 0, 5770, 5772, 3, 602, 301, 0, 5771, 5773, 3, 124, 62, 0, 5772, 5771, 1, 0, 0, 0, 5772, 5773, 1, 0, 0, 0, 5773, 5787, 1, 0, 0, 0, 5774, 5775, 5, 317, 0, 0, 5775, 5776, 5, 65, 0, 0, 5776, 5777, 5, 279, 0, 0, 5777, 5778, 5, 62, 0, 0, 5778, 5779, 3, 590, 295, 0, 5779, 5780, 5, 80, 0, 0, 5780, 5781, 3, 600, 300, 0, 5781, 5782, 5, 64, 0, 0, 5782, 5784, 3, 602, 301, 0, 5783, 5785, 3, 124, 62, 0, 5784, 5783, 1, 0, 0, 0, 5784, 5785, 1, 0, 0, 0, 5785, 5787, 1, 0, 0, 0, 5786, 5765, 1, 0, 0, 0, 5786, 5774, 1, 0, 0, 0, 5787, 589, 1, 0, 0, 0, 5788, 5805, 3, 596, 298, 0, 5789, 5805, 5, 30, 0, 0, 5790, 5791, 5, 30, 0, 0, 5791, 5805, 5, 294, 0, 0, 5792, 5793, 5, 30, 0, 0, 5793, 5794, 5, 2, 0, 0, 5794, 5795, 3, 244, 122, 0, 5795, 5796, 5, 3, 0, 0, 5796, 5805, 1, 0, 0, 0, 5797, 5798, 5, 30, 0, 0, 5798, 5799, 5, 294, 0, 0, 5799, 5800, 5, 2, 0, 0, 5800, 5801, 3, 244, 122, 0, 5801, 5802, 5, 3, 0, 0, 5802, 5805, 1, 0, 0, 0, 5803, 5805, 3, 592, 296, 0, 5804, 5788, 1, 0, 0, 0, 5804, 5789, 1, 0, 0, 0, 5804, 5790, 1, 0, 0, 0, 5804, 5792, 1, 0, 0, 0, 5804, 5797, 1, 0, 0, 0, 5804, 5803, 1, 0, 0, 0, 5805, 591, 1, 0, 0, 0, 5806, 5811, 3, 594, 297, 0, 5807, 5808, 5, 6, 0, 0, 5808, 5810, 3, 594, 297, 0, 5809, 5807, 1, 0, 0, 0, 5810, 5813, 1, 0, 0, 0, 5811, 5809, 1, 0, 0, 0, 5811, 5812, 1, 0, 0, 0, 5812, 593, 1, 0, 0, 0, 5813, 5811, 1, 0, 0, 0, 5814, 5815, 7, 43, 0, 0, 5815, 595, 1, 0, 0, 0, 5816, 5821, 3, 598, 299, 0, 5817, 5818, 5, 6, 0, 0, 5818, 5820, 3, 598, 299, 0, 5819, 5817, 1, 0, 0, 0, 5820, 5823, 1, 0, 0, 0, 5821, 5819, 1, 0, 0, 0, 5821, 5822, 1, 0, 0, 0, 5822, 597, 1, 0, 0, 0, 5823, 5821, 1, 0, 0, 0, 5824, 5826, 5, 88, 0, 0, 5825, 5827, 3, 240, 120, 0, 5826, 5825, 1, 0, 0, 0, 5826, 5827, 1, 0, 0, 0, 5827, 5841, 1, 0, 0, 0, 5828, 5830, 5, 86, 0, 0, 5829, 5831, 3, 240, 120, 0, 5830, 5829, 1, 0, 0, 0, 5830, 5831, 1, 0, 0, 0, 5831, 5841, 1, 0, 0, 0, 5832, 5834, 5, 46, 0, 0, 5833, 5835, 3, 240, 120, 0, 5834, 5833, 1, 0, 0, 0, 5834, 5835, 1, 0, 0, 0, 5835, 5841, 1, 0, 0, 0, 5836, 5838, 3, 1474, 737, 0, 5837, 5839, 3, 240, 120, 0, 5838, 5837, 1, 0, 0, 0, 5838, 5839, 1, 0, 0, 0, 5839, 5841, 1, 0, 0, 0, 5840, 5824, 1, 0, 0, 0, 5840, 5828, 1, 0, 0, 0, 5840, 5832, 1, 0, 0, 0, 5840, 5836, 1, 0, 0, 0, 5841, 599, 1, 0, 0, 0, 5842, 5901, 3, 1390, 695, 0, 5843, 5844, 5, 92, 0, 0, 5844, 5901, 3, 1392, 696, 0, 5845, 5846, 5, 328, 0, 0, 5846, 5901, 3, 1390, 695, 0, 5847, 5848, 5, 63, 0, 0, 5848, 5849, 5, 174, 0, 0, 5849, 5850, 5, 381, 0, 0, 5850, 5901, 3, 1416, 708, 0, 5851, 5852, 5, 63, 0, 0, 5852, 5853, 5, 331, 0, 0, 5853, 5901, 3, 1416, 708, 0, 5854, 5855, 5, 211, 0, 0, 5855, 5901, 3, 672, 336, 0, 5856, 5857, 5, 296, 0, 0, 5857, 5901, 3, 668, 334, 0, 5858, 5859, 5, 442, 0, 0, 5859, 5901, 3, 664, 332, 0, 5860, 5861, 5, 175, 0, 0, 5861, 5901, 3, 1396, 698, 0, 5862, 5863, 5, 189, 0, 0, 5863, 5901, 3, 552, 276, 0, 5864, 5865, 5, 247, 0, 0, 5865, 5901, 3, 1416, 708, 0, 5866, 5867, 5, 248, 0, 0, 5867, 5868, 5, 274, 0, 0, 5868, 5901, 3, 324, 162, 0, 5869, 5870, 5, 323, 0, 0, 5870, 5901, 3, 1394, 697, 0, 5871, 5872, 5, 351, 0, 0, 5872, 5901, 3, 1414, 707, 0, 5873, 5874, 5, 360, 0, 0, 5874, 5901, 3, 552, 276, 0, 5875, 5876, 5, 30, 0, 0, 5876, 5877, 5, 350, 0, 0, 5877, 5878, 5, 68, 0, 0, 5878, 5879, 5, 323, 0, 0, 5879, 5901, 3, 1394, 697, 0, 5880, 5881, 5, 30, 0, 0, 5881, 5882, 5, 329, 0, 0, 5882, 5883, 5, 68, 0, 0, 5883, 5884, 5, 323, 0, 0, 5884, 5901, 3, 1394, 697, 0, 5885, 5886, 5, 30, 0, 0, 5886, 5887, 5, 212, 0, 0, 5887, 5888, 5, 68, 0, 0, 5888, 5889, 5, 323, 0, 0, 5889, 5901, 3, 1394, 697, 0, 5890, 5891, 5, 30, 0, 0, 5891, 5892, 5, 457, 0, 0, 5892, 5893, 5, 68, 0, 0, 5893, 5894, 5, 323, 0, 0, 5894, 5901, 3, 1394, 697, 0, 5895, 5896, 5, 30, 0, 0, 5896, 5897, 5, 455, 0, 0, 5897, 5898, 5, 68, 0, 0, 5898, 5899, 5, 323, 0, 0, 5899, 5901, 3, 1394, 697, 0, 5900, 5842, 1, 0, 0, 0, 5900, 5843, 1, 0, 0, 0, 5900, 5845, 1, 0, 0, 0, 5900, 5847, 1, 0, 0, 0, 5900, 5851, 1, 0, 0, 0, 5900, 5854, 1, 0, 0, 0, 5900, 5856, 1, 0, 0, 0, 5900, 5858, 1, 0, 0, 0, 5900, 5860, 1, 0, 0, 0, 5900, 5862, 1, 0, 0, 0, 5900, 5864, 1, 0, 0, 0, 5900, 5866, 1, 0, 0, 0, 5900, 5869, 1, 0, 0, 0, 5900, 5871, 1, 0, 0, 0, 5900, 5873, 1, 0, 0, 0, 5900, 5875, 1, 0, 0, 0, 5900, 5880, 1, 0, 0, 0, 5900, 5885, 1, 0, 0, 0, 5900, 5890, 1, 0, 0, 0, 5900, 5895, 1, 0, 0, 0, 5901, 601, 1, 0, 0, 0, 5902, 5907, 3, 604, 302, 0, 5903, 5904, 5, 6, 0, 0, 5904, 5906, 3, 604, 302, 0, 5905, 5903, 1, 0, 0, 0, 5906, 5909, 1, 0, 0, 0, 5907, 5905, 1, 0, 0, 0, 5907, 5908, 1, 0, 0, 0, 5908, 603, 1, 0, 0, 0, 5909, 5907, 1, 0, 0, 0, 5910, 5914, 3, 1470, 735, 0, 5911, 5912, 5, 66, 0, 0, 5912, 5914, 3, 1470, 735, 0, 5913, 5910, 1, 0, 0, 0, 5913, 5911, 1, 0, 0, 0, 5914, 605, 1, 0, 0, 0, 5915, 5916, 5, 105, 0, 0, 5916, 5917, 5, 65, 0, 0, 5917, 5918, 5, 279, 0, 0, 5918, 607, 1, 0, 0, 0, 5919, 5920, 5, 65, 0, 0, 5920, 5921, 3, 596, 298, 0, 5921, 5922, 5, 94, 0, 0, 5922, 5924, 3, 1472, 736, 0, 5923, 5925, 3, 612, 306, 0, 5924, 5923, 1, 0, 0, 0, 5924, 5925, 1, 0, 0, 0, 5925, 5927, 1, 0, 0, 0, 5926, 5928, 3, 614, 307, 0, 5927, 5926, 1, 0, 0, 0, 5927, 5928, 1, 0, 0, 0, 5928, 609, 1, 0, 0, 0, 5929, 5930, 5, 317, 0, 0, 5930, 5931, 3, 596, 298, 0, 5931, 5932, 5, 64, 0, 0, 5932, 5934, 3, 1472, 736, 0, 5933, 5935, 3, 614, 307, 0, 5934, 5933, 1, 0, 0, 0, 5934, 5935, 1, 0, 0, 0, 5935, 5937, 1, 0, 0, 0, 5936, 5938, 3, 124, 62, 0, 5937, 5936, 1, 0, 0, 0, 5937, 5938, 1, 0, 0, 0, 5938, 5953, 1, 0, 0, 0, 5939, 5940, 5, 317, 0, 0, 5940, 5941, 5, 134, 0, 0, 5941, 5942, 5, 279, 0, 0, 5942, 5943, 5, 62, 0, 0, 5943, 5944, 3, 596, 298, 0, 5944, 5945, 5, 64, 0, 0, 5945, 5947, 3, 1472, 736, 0, 5946, 5948, 3, 614, 307, 0, 5947, 5946, 1, 0, 0, 0, 5947, 5948, 1, 0, 0, 0, 5948, 5950, 1, 0, 0, 0, 5949, 5951, 3, 124, 62, 0, 5950, 5949, 1, 0, 0, 0, 5950, 5951, 1, 0, 0, 0, 5951, 5953, 1, 0, 0, 0, 5952, 5929, 1, 0, 0, 0, 5952, 5939, 1, 0, 0, 0, 5953, 611, 1, 0, 0, 0, 5954, 5955, 5, 105, 0, 0, 5955, 5956, 5, 134, 0, 0, 5956, 5957, 5, 279, 0, 0, 5957, 613, 1, 0, 0, 0, 5958, 5959, 5, 214, 0, 0, 5959, 5960, 5, 147, 0, 0, 5960, 5961, 3, 1470, 735, 0, 5961, 615, 1, 0, 0, 0, 5962, 5963, 5, 138, 0, 0, 5963, 5964, 5, 53, 0, 0, 5964, 5965, 5, 294, 0, 0, 5965, 5966, 3, 618, 309, 0, 5966, 5967, 3, 622, 311, 0, 5967, 617, 1, 0, 0, 0, 5968, 5970, 3, 620, 310, 0, 5969, 5968, 1, 0, 0, 0, 5970, 5973, 1, 0, 0, 0, 5971, 5969, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 619, 1, 0, 0, 0, 5973, 5971, 1, 0, 0, 0, 5974, 5975, 5, 68, 0, 0, 5975, 5976, 5, 323, 0, 0, 5976, 5984, 3, 1394, 697, 0, 5977, 5978, 5, 62, 0, 0, 5978, 5979, 5, 318, 0, 0, 5979, 5984, 3, 1472, 736, 0, 5980, 5981, 5, 62, 0, 0, 5981, 5982, 5, 99, 0, 0, 5982, 5984, 3, 1472, 736, 0, 5983, 5974, 1, 0, 0, 0, 5983, 5977, 1, 0, 0, 0, 5983, 5980, 1, 0, 0, 0, 5984, 621, 1, 0, 0, 0, 5985, 5986, 5, 65, 0, 0, 5986, 5987, 3, 590, 295, 0, 5987, 5988, 5, 80, 0, 0, 5988, 5989, 3, 624, 312, 0, 5989, 5990, 5, 94, 0, 0, 5990, 5992, 3, 602, 301, 0, 5991, 5993, 3, 606, 303, 0, 5992, 5991, 1, 0, 0, 0, 5992, 5993, 1, 0, 0, 0, 5993, 6016, 1, 0, 0, 0, 5994, 5995, 5, 317, 0, 0, 5995, 5996, 3, 590, 295, 0, 5996, 5997, 5, 80, 0, 0, 5997, 5998, 3, 624, 312, 0, 5998, 5999, 5, 64, 0, 0, 5999, 6001, 3, 602, 301, 0, 6000, 6002, 3, 124, 62, 0, 6001, 6000, 1, 0, 0, 0, 6001, 6002, 1, 0, 0, 0, 6002, 6016, 1, 0, 0, 0, 6003, 6004, 5, 317, 0, 0, 6004, 6005, 5, 65, 0, 0, 6005, 6006, 5, 279, 0, 0, 6006, 6007, 5, 62, 0, 0, 6007, 6008, 3, 590, 295, 0, 6008, 6009, 5, 80, 0, 0, 6009, 6010, 3, 624, 312, 0, 6010, 6011, 5, 64, 0, 0, 6011, 6013, 3, 602, 301, 0, 6012, 6014, 3, 124, 62, 0, 6013, 6012, 1, 0, 0, 0, 6013, 6014, 1, 0, 0, 0, 6014, 6016, 1, 0, 0, 0, 6015, 5985, 1, 0, 0, 0, 6015, 5994, 1, 0, 0, 0, 6015, 6003, 1, 0, 0, 0, 6016, 623, 1, 0, 0, 0, 6017, 6018, 7, 44, 0, 0, 6018, 625, 1, 0, 0, 0, 6019, 6021, 5, 46, 0, 0, 6020, 6022, 3, 628, 314, 0, 6021, 6020, 1, 0, 0, 0, 6021, 6022, 1, 0, 0, 0, 6022, 6023, 1, 0, 0, 0, 6023, 6025, 5, 226, 0, 0, 6024, 6026, 3, 630, 315, 0, 6025, 6024, 1, 0, 0, 0, 6025, 6026, 1, 0, 0, 0, 6026, 6028, 1, 0, 0, 0, 6027, 6029, 3, 516, 258, 0, 6028, 6027, 1, 0, 0, 0, 6028, 6029, 1, 0, 0, 0, 6029, 6031, 1, 0, 0, 0, 6030, 6032, 3, 632, 316, 0, 6031, 6030, 1, 0, 0, 0, 6031, 6032, 1, 0, 0, 0, 6032, 6033, 1, 0, 0, 0, 6033, 6034, 5, 80, 0, 0, 6034, 6036, 3, 1118, 559, 0, 6035, 6037, 3, 634, 317, 0, 6036, 6035, 1, 0, 0, 0, 6036, 6037, 1, 0, 0, 0, 6037, 6038, 1, 0, 0, 0, 6038, 6039, 5, 2, 0, 0, 6039, 6040, 3, 636, 318, 0, 6040, 6042, 5, 3, 0, 0, 6041, 6043, 3, 642, 321, 0, 6042, 6041, 1, 0, 0, 0, 6042, 6043, 1, 0, 0, 0, 6043, 6045, 1, 0, 0, 0, 6044, 6046, 3, 220, 110, 0, 6045, 6044, 1, 0, 0, 0, 6045, 6046, 1, 0, 0, 0, 6046, 6048, 1, 0, 0, 0, 6047, 6049, 3, 134, 67, 0, 6048, 6047, 1, 0, 0, 0, 6048, 6049, 1, 0, 0, 0, 6049, 6051, 1, 0, 0, 0, 6050, 6052, 3, 282, 141, 0, 6051, 6050, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6054, 1, 0, 0, 0, 6053, 6055, 3, 1144, 572, 0, 6054, 6053, 1, 0, 0, 0, 6054, 6055, 1, 0, 0, 0, 6055, 627, 1, 0, 0, 0, 6056, 6057, 5, 98, 0, 0, 6057, 629, 1, 0, 0, 0, 6058, 6059, 5, 109, 0, 0, 6059, 631, 1, 0, 0, 0, 6060, 6061, 3, 1436, 718, 0, 6061, 633, 1, 0, 0, 0, 6062, 6063, 5, 100, 0, 0, 6063, 6064, 3, 1436, 718, 0, 6064, 635, 1, 0, 0, 0, 6065, 6070, 3, 640, 320, 0, 6066, 6067, 5, 6, 0, 0, 6067, 6069, 3, 640, 320, 0, 6068, 6066, 1, 0, 0, 0, 6069, 6072, 1, 0, 0, 0, 6070, 6068, 1, 0, 0, 0, 6070, 6071, 1, 0, 0, 0, 6071, 637, 1, 0, 0, 0, 6072, 6070, 1, 0, 0, 0, 6073, 6075, 3, 646, 323, 0, 6074, 6073, 1, 0, 0, 0, 6074, 6075, 1, 0, 0, 0, 6075, 6077, 1, 0, 0, 0, 6076, 6078, 3, 648, 324, 0, 6077, 6076, 1, 0, 0, 0, 6077, 6078, 1, 0, 0, 0, 6078, 6080, 1, 0, 0, 0, 6079, 6081, 3, 650, 325, 0, 6080, 6079, 1, 0, 0, 0, 6080, 6081, 1, 0, 0, 0, 6081, 6083, 1, 0, 0, 0, 6082, 6084, 3, 652, 326, 0, 6083, 6082, 1, 0, 0, 0, 6083, 6084, 1, 0, 0, 0, 6084, 6097, 1, 0, 0, 0, 6085, 6087, 3, 646, 323, 0, 6086, 6085, 1, 0, 0, 0, 6086, 6087, 1, 0, 0, 0, 6087, 6088, 1, 0, 0, 0, 6088, 6089, 3, 558, 279, 0, 6089, 6091, 3, 132, 66, 0, 6090, 6092, 3, 650, 325, 0, 6091, 6090, 1, 0, 0, 0, 6091, 6092, 1, 0, 0, 0, 6092, 6094, 1, 0, 0, 0, 6093, 6095, 3, 652, 326, 0, 6094, 6093, 1, 0, 0, 0, 6094, 6095, 1, 0, 0, 0, 6095, 6097, 1, 0, 0, 0, 6096, 6074, 1, 0, 0, 0, 6096, 6086, 1, 0, 0, 0, 6097, 639, 1, 0, 0, 0, 6098, 6099, 3, 1432, 716, 0, 6099, 6100, 3, 638, 319, 0, 6100, 6110, 1, 0, 0, 0, 6101, 6102, 3, 1262, 631, 0, 6102, 6103, 3, 638, 319, 0, 6103, 6110, 1, 0, 0, 0, 6104, 6105, 5, 2, 0, 0, 6105, 6106, 3, 1212, 606, 0, 6106, 6107, 5, 3, 0, 0, 6107, 6108, 3, 638, 319, 0, 6108, 6110, 1, 0, 0, 0, 6109, 6098, 1, 0, 0, 0, 6109, 6101, 1, 0, 0, 0, 6109, 6104, 1, 0, 0, 0, 6110, 641, 1, 0, 0, 0, 6111, 6112, 5, 441, 0, 0, 6112, 6113, 5, 2, 0, 0, 6113, 6114, 3, 644, 322, 0, 6114, 6115, 5, 3, 0, 0, 6115, 643, 1, 0, 0, 0, 6116, 6121, 3, 640, 320, 0, 6117, 6118, 5, 6, 0, 0, 6118, 6120, 3, 640, 320, 0, 6119, 6117, 1, 0, 0, 0, 6120, 6123, 1, 0, 0, 0, 6121, 6119, 1, 0, 0, 0, 6121, 6122, 1, 0, 0, 0, 6122, 645, 1, 0, 0, 0, 6123, 6121, 1, 0, 0, 0, 6124, 6125, 5, 43, 0, 0, 6125, 6126, 3, 558, 279, 0, 6126, 647, 1, 0, 0, 0, 6127, 6128, 3, 558, 279, 0, 6128, 649, 1, 0, 0, 0, 6129, 6130, 7, 45, 0, 0, 6130, 651, 1, 0, 0, 0, 6131, 6132, 5, 273, 0, 0, 6132, 6136, 5, 207, 0, 0, 6133, 6134, 5, 273, 0, 0, 6134, 6136, 5, 249, 0, 0, 6135, 6131, 1, 0, 0, 0, 6135, 6133, 1, 0, 0, 0, 6136, 653, 1, 0, 0, 0, 6137, 6139, 5, 46, 0, 0, 6138, 6140, 3, 658, 329, 0, 6139, 6138, 1, 0, 0, 0, 6139, 6140, 1, 0, 0, 0, 6140, 6145, 1, 0, 0, 0, 6141, 6142, 5, 211, 0, 0, 6142, 6146, 3, 1442, 721, 0, 6143, 6144, 5, 296, 0, 0, 6144, 6146, 3, 1430, 715, 0, 6145, 6141, 1, 0, 0, 0, 6145, 6143, 1, 0, 0, 0, 6146, 6147, 1, 0, 0, 0, 6147, 6157, 3, 676, 338, 0, 6148, 6155, 5, 316, 0, 0, 6149, 6156, 3, 686, 343, 0, 6150, 6151, 5, 92, 0, 0, 6151, 6152, 5, 2, 0, 0, 6152, 6153, 3, 714, 357, 0, 6153, 6154, 5, 3, 0, 0, 6154, 6156, 1, 0, 0, 0, 6155, 6149, 1, 0, 0, 0, 6155, 6150, 1, 0, 0, 0, 6156, 6158, 1, 0, 0, 0, 6157, 6148, 1, 0, 0, 0, 6157, 6158, 1, 0, 0, 0, 6158, 6159, 1, 0, 0, 0, 6159, 6162, 3, 702, 351, 0, 6160, 6161, 5, 105, 0, 0, 6161, 6163, 3, 656, 328, 0, 6162, 6160, 1, 0, 0, 0, 6162, 6163, 1, 0, 0, 0, 6163, 655, 1, 0, 0, 0, 6164, 6165, 5, 2, 0, 0, 6165, 6170, 3, 1474, 737, 0, 6166, 6167, 5, 6, 0, 0, 6167, 6169, 3, 1474, 737, 0, 6168, 6166, 1, 0, 0, 0, 6169, 6172, 1, 0, 0, 0, 6170, 6168, 1, 0, 0, 0, 6170, 6171, 1, 0, 0, 0, 6171, 6173, 1, 0, 0, 0, 6172, 6170, 1, 0, 0, 0, 6173, 6174, 5, 3, 0, 0, 6174, 657, 1, 0, 0, 0, 6175, 6176, 5, 82, 0, 0, 6176, 6177, 5, 311, 0, 0, 6177, 659, 1, 0, 0, 0, 6178, 6180, 5, 2, 0, 0, 6179, 6181, 3, 662, 331, 0, 6180, 6179, 1, 0, 0, 0, 6180, 6181, 1, 0, 0, 0, 6181, 6182, 1, 0, 0, 0, 6182, 6183, 5, 3, 0, 0, 6183, 661, 1, 0, 0, 0, 6184, 6189, 3, 680, 340, 0, 6185, 6186, 5, 6, 0, 0, 6186, 6188, 3, 680, 340, 0, 6187, 6185, 1, 0, 0, 0, 6188, 6191, 1, 0, 0, 0, 6189, 6187, 1, 0, 0, 0, 6189, 6190, 1, 0, 0, 0, 6190, 663, 1, 0, 0, 0, 6191, 6189, 1, 0, 0, 0, 6192, 6197, 3, 666, 333, 0, 6193, 6194, 5, 6, 0, 0, 6194, 6196, 3, 666, 333, 0, 6195, 6193, 1, 0, 0, 0, 6196, 6199, 1, 0, 0, 0, 6197, 6195, 1, 0, 0, 0, 6197, 6198, 1, 0, 0, 0, 6198, 665, 1, 0, 0, 0, 6199, 6197, 1, 0, 0, 0, 6200, 6201, 3, 1426, 713, 0, 6201, 6202, 3, 660, 330, 0, 6202, 6209, 1, 0, 0, 0, 6203, 6209, 3, 1500, 750, 0, 6204, 6206, 3, 1474, 737, 0, 6205, 6207, 3, 1380, 690, 0, 6206, 6205, 1, 0, 0, 0, 6206, 6207, 1, 0, 0, 0, 6207, 6209, 1, 0, 0, 0, 6208, 6200, 1, 0, 0, 0, 6208, 6203, 1, 0, 0, 0, 6208, 6204, 1, 0, 0, 0, 6209, 667, 1, 0, 0, 0, 6210, 6215, 3, 670, 335, 0, 6211, 6212, 5, 6, 0, 0, 6212, 6214, 3, 670, 335, 0, 6213, 6211, 1, 0, 0, 0, 6214, 6217, 1, 0, 0, 0, 6215, 6213, 1, 0, 0, 0, 6215, 6216, 1, 0, 0, 0, 6216, 669, 1, 0, 0, 0, 6217, 6215, 1, 0, 0, 0, 6218, 6219, 3, 1428, 714, 0, 6219, 6220, 3, 660, 330, 0, 6220, 6227, 1, 0, 0, 0, 6221, 6227, 3, 1500, 750, 0, 6222, 6224, 3, 1474, 737, 0, 6223, 6225, 3, 1380, 690, 0, 6224, 6223, 1, 0, 0, 0, 6224, 6225, 1, 0, 0, 0, 6225, 6227, 1, 0, 0, 0, 6226, 6218, 1, 0, 0, 0, 6226, 6221, 1, 0, 0, 0, 6226, 6222, 1, 0, 0, 0, 6227, 671, 1, 0, 0, 0, 6228, 6233, 3, 674, 337, 0, 6229, 6230, 5, 6, 0, 0, 6230, 6232, 3, 674, 337, 0, 6231, 6229, 1, 0, 0, 0, 6232, 6235, 1, 0, 0, 0, 6233, 6231, 1, 0, 0, 0, 6233, 6234, 1, 0, 0, 0, 6234, 673, 1, 0, 0, 0, 6235, 6233, 1, 0, 0, 0, 6236, 6237, 3, 1444, 722, 0, 6237, 6238, 3, 660, 330, 0, 6238, 6245, 1, 0, 0, 0, 6239, 6245, 3, 1500, 750, 0, 6240, 6242, 3, 1474, 737, 0, 6241, 6243, 3, 1380, 690, 0, 6242, 6241, 1, 0, 0, 0, 6242, 6243, 1, 0, 0, 0, 6243, 6245, 1, 0, 0, 0, 6244, 6236, 1, 0, 0, 0, 6244, 6239, 1, 0, 0, 0, 6244, 6240, 1, 0, 0, 0, 6245, 675, 1, 0, 0, 0, 6246, 6248, 5, 2, 0, 0, 6247, 6249, 3, 678, 339, 0, 6248, 6247, 1, 0, 0, 0, 6248, 6249, 1, 0, 0, 0, 6249, 6250, 1, 0, 0, 0, 6250, 6251, 5, 3, 0, 0, 6251, 677, 1, 0, 0, 0, 6252, 6257, 3, 690, 345, 0, 6253, 6254, 5, 6, 0, 0, 6254, 6256, 3, 690, 345, 0, 6255, 6253, 1, 0, 0, 0, 6256, 6259, 1, 0, 0, 0, 6257, 6255, 1, 0, 0, 0, 6257, 6258, 1, 0, 0, 0, 6258, 679, 1, 0, 0, 0, 6259, 6257, 1, 0, 0, 0, 6260, 6262, 3, 682, 341, 0, 6261, 6263, 3, 684, 342, 0, 6262, 6261, 1, 0, 0, 0, 6262, 6263, 1, 0, 0, 0, 6263, 6264, 1, 0, 0, 0, 6264, 6265, 3, 688, 344, 0, 6265, 6274, 1, 0, 0, 0, 6266, 6268, 3, 684, 342, 0, 6267, 6269, 3, 682, 341, 0, 6268, 6267, 1, 0, 0, 0, 6268, 6269, 1, 0, 0, 0, 6269, 6270, 1, 0, 0, 0, 6270, 6271, 3, 688, 344, 0, 6271, 6274, 1, 0, 0, 0, 6272, 6274, 3, 688, 344, 0, 6273, 6260, 1, 0, 0, 0, 6273, 6266, 1, 0, 0, 0, 6273, 6272, 1, 0, 0, 0, 6274, 681, 1, 0, 0, 0, 6275, 6277, 5, 68, 0, 0, 6276, 6278, 5, 453, 0, 0, 6277, 6276, 1, 0, 0, 0, 6277, 6278, 1, 0, 0, 0, 6278, 6283, 1, 0, 0, 0, 6279, 6283, 5, 453, 0, 0, 6280, 6283, 5, 400, 0, 0, 6281, 6283, 5, 101, 0, 0, 6282, 6275, 1, 0, 0, 0, 6282, 6279, 1, 0, 0, 0, 6282, 6280, 1, 0, 0, 0, 6282, 6281, 1, 0, 0, 0, 6283, 683, 1, 0, 0, 0, 6284, 6285, 3, 1482, 741, 0, 6285, 685, 1, 0, 0, 0, 6286, 6287, 3, 688, 344, 0, 6287, 687, 1, 0, 0, 0, 6288, 6301, 3, 1168, 584, 0, 6289, 6290, 3, 1482, 741, 0, 6290, 6291, 3, 560, 280, 0, 6291, 6292, 5, 27, 0, 0, 6292, 6293, 5, 360, 0, 0, 6293, 6301, 1, 0, 0, 0, 6294, 6295, 5, 415, 0, 0, 6295, 6296, 3, 1482, 741, 0, 6296, 6297, 3, 560, 280, 0, 6297, 6298, 5, 27, 0, 0, 6298, 6299, 5, 360, 0, 0, 6299, 6301, 1, 0, 0, 0, 6300, 6288, 1, 0, 0, 0, 6300, 6289, 1, 0, 0, 0, 6300, 6294, 1, 0, 0, 0, 6301, 689, 1, 0, 0, 0, 6302, 6305, 3, 680, 340, 0, 6303, 6304, 7, 46, 0, 0, 6304, 6306, 3, 1212, 606, 0, 6305, 6303, 1, 0, 0, 0, 6305, 6306, 1, 0, 0, 0, 6306, 691, 1, 0, 0, 0, 6307, 6308, 3, 680, 340, 0, 6308, 693, 1, 0, 0, 0, 6309, 6320, 5, 2, 0, 0, 6310, 6321, 5, 9, 0, 0, 6311, 6321, 3, 696, 348, 0, 6312, 6313, 5, 83, 0, 0, 6313, 6314, 5, 147, 0, 0, 6314, 6321, 3, 696, 348, 0, 6315, 6316, 3, 696, 348, 0, 6316, 6317, 5, 83, 0, 0, 6317, 6318, 5, 147, 0, 0, 6318, 6319, 3, 696, 348, 0, 6319, 6321, 1, 0, 0, 0, 6320, 6310, 1, 0, 0, 0, 6320, 6311, 1, 0, 0, 0, 6320, 6312, 1, 0, 0, 0, 6320, 6315, 1, 0, 0, 0, 6321, 6322, 1, 0, 0, 0, 6322, 6323, 5, 3, 0, 0, 6323, 695, 1, 0, 0, 0, 6324, 6329, 3, 692, 346, 0, 6325, 6326, 5, 6, 0, 0, 6326, 6328, 3, 692, 346, 0, 6327, 6325, 1, 0, 0, 0, 6328, 6331, 1, 0, 0, 0, 6329, 6327, 1, 0, 0, 0, 6329, 6330, 1, 0, 0, 0, 6330, 697, 1, 0, 0, 0, 6331, 6329, 1, 0, 0, 0, 6332, 6333, 3, 1444, 722, 0, 6333, 6334, 3, 694, 347, 0, 6334, 699, 1, 0, 0, 0, 6335, 6340, 3, 698, 349, 0, 6336, 6337, 5, 6, 0, 0, 6337, 6339, 3, 698, 349, 0, 6338, 6336, 1, 0, 0, 0, 6339, 6342, 1, 0, 0, 0, 6340, 6338, 1, 0, 0, 0, 6340, 6341, 1, 0, 0, 0, 6341, 701, 1, 0, 0, 0, 6342, 6340, 1, 0, 0, 0, 6343, 6345, 3, 706, 353, 0, 6344, 6343, 1, 0, 0, 0, 6345, 6346, 1, 0, 0, 0, 6346, 6344, 1, 0, 0, 0, 6346, 6347, 1, 0, 0, 0, 6347, 703, 1, 0, 0, 0, 6348, 6349, 5, 149, 0, 0, 6349, 6350, 5, 80, 0, 0, 6350, 6351, 5, 78, 0, 0, 6351, 6384, 5, 458, 0, 0, 6352, 6353, 5, 316, 0, 0, 6353, 6354, 5, 78, 0, 0, 6354, 6355, 5, 80, 0, 0, 6355, 6356, 5, 78, 0, 0, 6356, 6384, 5, 458, 0, 0, 6357, 6384, 5, 346, 0, 0, 6358, 6384, 5, 222, 0, 0, 6359, 6384, 5, 338, 0, 0, 6360, 6384, 5, 377, 0, 0, 6361, 6362, 5, 205, 0, 0, 6362, 6363, 5, 327, 0, 0, 6363, 6384, 5, 181, 0, 0, 6364, 6365, 5, 205, 0, 0, 6365, 6366, 5, 327, 0, 0, 6366, 6384, 5, 243, 0, 0, 6367, 6368, 5, 327, 0, 0, 6368, 6384, 5, 181, 0, 0, 6369, 6370, 5, 327, 0, 0, 6370, 6384, 5, 243, 0, 0, 6371, 6384, 5, 250, 0, 0, 6372, 6373, 5, 77, 0, 0, 6373, 6384, 5, 250, 0, 0, 6374, 6375, 5, 170, 0, 0, 6375, 6384, 3, 322, 161, 0, 6376, 6377, 5, 320, 0, 0, 6377, 6384, 3, 322, 161, 0, 6378, 6379, 5, 459, 0, 0, 6379, 6384, 3, 558, 279, 0, 6380, 6384, 3, 90, 45, 0, 6381, 6382, 5, 460, 0, 0, 6382, 6384, 3, 1474, 737, 0, 6383, 6348, 1, 0, 0, 0, 6383, 6352, 1, 0, 0, 0, 6383, 6357, 1, 0, 0, 0, 6383, 6358, 1, 0, 0, 0, 6383, 6359, 1, 0, 0, 0, 6383, 6360, 1, 0, 0, 0, 6383, 6361, 1, 0, 0, 0, 6383, 6364, 1, 0, 0, 0, 6383, 6367, 1, 0, 0, 0, 6383, 6369, 1, 0, 0, 0, 6383, 6371, 1, 0, 0, 0, 6383, 6372, 1, 0, 0, 0, 6383, 6374, 1, 0, 0, 0, 6383, 6376, 1, 0, 0, 0, 6383, 6378, 1, 0, 0, 0, 6383, 6380, 1, 0, 0, 0, 6383, 6381, 1, 0, 0, 0, 6384, 705, 1, 0, 0, 0, 6385, 6386, 5, 36, 0, 0, 6386, 6387, 3, 1458, 729, 0, 6387, 6388, 5, 6, 0, 0, 6388, 6389, 3, 1458, 729, 0, 6389, 6411, 1, 0, 0, 0, 6390, 6391, 5, 247, 0, 0, 6391, 6411, 3, 80, 40, 0, 6392, 6393, 5, 443, 0, 0, 6393, 6411, 3, 708, 354, 0, 6394, 6411, 5, 104, 0, 0, 6395, 6396, 5, 333, 0, 0, 6396, 6403, 3, 1474, 737, 0, 6397, 6398, 5, 94, 0, 0, 6398, 6404, 3, 1474, 737, 0, 6399, 6400, 5, 10, 0, 0, 6400, 6404, 3, 1474, 737, 0, 6401, 6402, 5, 64, 0, 0, 6402, 6404, 5, 434, 0, 0, 6403, 6397, 1, 0, 0, 0, 6403, 6399, 1, 0, 0, 0, 6403, 6401, 1, 0, 0, 0, 6404, 6411, 1, 0, 0, 0, 6405, 6406, 5, 36, 0, 0, 6406, 6411, 3, 1474, 737, 0, 6407, 6411, 3, 6, 3, 0, 6408, 6411, 3, 704, 352, 0, 6409, 6411, 3, 1474, 737, 0, 6410, 6385, 1, 0, 0, 0, 6410, 6390, 1, 0, 0, 0, 6410, 6392, 1, 0, 0, 0, 6410, 6394, 1, 0, 0, 0, 6410, 6395, 1, 0, 0, 0, 6410, 6405, 1, 0, 0, 0, 6410, 6407, 1, 0, 0, 0, 6410, 6408, 1, 0, 0, 0, 6410, 6409, 1, 0, 0, 0, 6411, 707, 1, 0, 0, 0, 6412, 6413, 5, 62, 0, 0, 6413, 6414, 5, 360, 0, 0, 6414, 6421, 3, 1168, 584, 0, 6415, 6416, 5, 6, 0, 0, 6416, 6417, 5, 62, 0, 0, 6417, 6418, 5, 360, 0, 0, 6418, 6420, 3, 1168, 584, 0, 6419, 6415, 1, 0, 0, 0, 6420, 6423, 1, 0, 0, 0, 6421, 6419, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 709, 1, 0, 0, 0, 6423, 6421, 1, 0, 0, 0, 6424, 6425, 5, 105, 0, 0, 6425, 6426, 3, 496, 248, 0, 6426, 711, 1, 0, 0, 0, 6427, 6428, 3, 1432, 716, 0, 6428, 6429, 3, 688, 344, 0, 6429, 713, 1, 0, 0, 0, 6430, 6435, 3, 712, 356, 0, 6431, 6432, 5, 6, 0, 0, 6432, 6434, 3, 712, 356, 0, 6433, 6431, 1, 0, 0, 0, 6434, 6437, 1, 0, 0, 0, 6435, 6433, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 715, 1, 0, 0, 0, 6437, 6435, 1, 0, 0, 0, 6438, 6439, 5, 138, 0, 0, 6439, 6440, 3, 718, 359, 0, 6440, 6442, 3, 720, 360, 0, 6441, 6443, 3, 722, 361, 0, 6442, 6441, 1, 0, 0, 0, 6442, 6443, 1, 0, 0, 0, 6443, 717, 1, 0, 0, 0, 6444, 6445, 5, 211, 0, 0, 6445, 6451, 3, 674, 337, 0, 6446, 6447, 5, 296, 0, 0, 6447, 6451, 3, 670, 335, 0, 6448, 6449, 5, 442, 0, 0, 6449, 6451, 3, 666, 333, 0, 6450, 6444, 1, 0, 0, 0, 6450, 6446, 1, 0, 0, 0, 6450, 6448, 1, 0, 0, 0, 6451, 719, 1, 0, 0, 0, 6452, 6454, 3, 704, 352, 0, 6453, 6452, 1, 0, 0, 0, 6454, 6455, 1, 0, 0, 0, 6455, 6453, 1, 0, 0, 0, 6455, 6456, 1, 0, 0, 0, 6456, 721, 1, 0, 0, 0, 6457, 6458, 5, 315, 0, 0, 6458, 723, 1, 0, 0, 0, 6459, 6460, 5, 191, 0, 0, 6460, 6462, 5, 211, 0, 0, 6461, 6463, 3, 748, 374, 0, 6462, 6461, 1, 0, 0, 0, 6462, 6463, 1, 0, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6466, 3, 672, 336, 0, 6465, 6467, 3, 124, 62, 0, 6466, 6465, 1, 0, 0, 0, 6466, 6467, 1, 0, 0, 0, 6467, 6487, 1, 0, 0, 0, 6468, 6469, 5, 191, 0, 0, 6469, 6471, 5, 296, 0, 0, 6470, 6472, 3, 748, 374, 0, 6471, 6470, 1, 0, 0, 0, 6471, 6472, 1, 0, 0, 0, 6472, 6473, 1, 0, 0, 0, 6473, 6475, 3, 668, 334, 0, 6474, 6476, 3, 124, 62, 0, 6475, 6474, 1, 0, 0, 0, 6475, 6476, 1, 0, 0, 0, 6476, 6487, 1, 0, 0, 0, 6477, 6478, 5, 191, 0, 0, 6478, 6480, 5, 442, 0, 0, 6479, 6481, 3, 748, 374, 0, 6480, 6479, 1, 0, 0, 0, 6480, 6481, 1, 0, 0, 0, 6481, 6482, 1, 0, 0, 0, 6482, 6484, 3, 664, 332, 0, 6483, 6485, 3, 124, 62, 0, 6484, 6483, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6487, 1, 0, 0, 0, 6486, 6459, 1, 0, 0, 0, 6486, 6468, 1, 0, 0, 0, 6486, 6477, 1, 0, 0, 0, 6487, 725, 1, 0, 0, 0, 6488, 6489, 5, 191, 0, 0, 6489, 6491, 5, 136, 0, 0, 6490, 6492, 3, 748, 374, 0, 6491, 6490, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6493, 1, 0, 0, 0, 6493, 6495, 3, 700, 350, 0, 6494, 6496, 3, 124, 62, 0, 6495, 6494, 1, 0, 0, 0, 6495, 6496, 1, 0, 0, 0, 6496, 727, 1, 0, 0, 0, 6497, 6498, 5, 191, 0, 0, 6498, 6500, 5, 278, 0, 0, 6499, 6501, 3, 748, 374, 0, 6500, 6499, 1, 0, 0, 0, 6500, 6501, 1, 0, 0, 0, 6501, 6502, 1, 0, 0, 0, 6502, 6504, 3, 734, 367, 0, 6503, 6505, 3, 124, 62, 0, 6504, 6503, 1, 0, 0, 0, 6504, 6505, 1, 0, 0, 0, 6505, 729, 1, 0, 0, 0, 6506, 6507, 5, 2, 0, 0, 6507, 6508, 3, 1168, 584, 0, 6508, 6509, 5, 3, 0, 0, 6509, 6529, 1, 0, 0, 0, 6510, 6511, 5, 2, 0, 0, 6511, 6512, 3, 1168, 584, 0, 6512, 6513, 5, 6, 0, 0, 6513, 6514, 3, 1168, 584, 0, 6514, 6515, 5, 3, 0, 0, 6515, 6529, 1, 0, 0, 0, 6516, 6517, 5, 2, 0, 0, 6517, 6518, 5, 407, 0, 0, 6518, 6519, 5, 6, 0, 0, 6519, 6520, 3, 1168, 584, 0, 6520, 6521, 5, 3, 0, 0, 6521, 6529, 1, 0, 0, 0, 6522, 6523, 5, 2, 0, 0, 6523, 6524, 3, 1168, 584, 0, 6524, 6525, 5, 6, 0, 0, 6525, 6526, 5, 407, 0, 0, 6526, 6527, 5, 3, 0, 0, 6527, 6529, 1, 0, 0, 0, 6528, 6506, 1, 0, 0, 0, 6528, 6510, 1, 0, 0, 0, 6528, 6516, 1, 0, 0, 0, 6528, 6522, 1, 0, 0, 0, 6529, 731, 1, 0, 0, 0, 6530, 6531, 3, 1474, 737, 0, 6531, 6532, 5, 11, 0, 0, 6532, 6534, 1, 0, 0, 0, 6533, 6530, 1, 0, 0, 0, 6534, 6537, 1, 0, 0, 0, 6535, 6533, 1, 0, 0, 0, 6535, 6536, 1, 0, 0, 0, 6536, 6538, 1, 0, 0, 0, 6537, 6535, 1, 0, 0, 0, 6538, 6539, 3, 1318, 659, 0, 6539, 733, 1, 0, 0, 0, 6540, 6545, 3, 736, 368, 0, 6541, 6542, 5, 6, 0, 0, 6542, 6544, 3, 736, 368, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6547, 1, 0, 0, 0, 6545, 6543, 1, 0, 0, 0, 6545, 6546, 1, 0, 0, 0, 6546, 735, 1, 0, 0, 0, 6547, 6545, 1, 0, 0, 0, 6548, 6549, 3, 732, 366, 0, 6549, 6550, 3, 730, 365, 0, 6550, 737, 1, 0, 0, 0, 6551, 6552, 5, 57, 0, 0, 6552, 6553, 3, 740, 370, 0, 6553, 739, 1, 0, 0, 0, 6554, 6556, 3, 742, 371, 0, 6555, 6554, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 6555, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 741, 1, 0, 0, 0, 6559, 6563, 3, 1458, 729, 0, 6560, 6561, 5, 247, 0, 0, 6561, 6563, 3, 80, 40, 0, 6562, 6559, 1, 0, 0, 0, 6562, 6560, 1, 0, 0, 0, 6563, 743, 1, 0, 0, 0, 6564, 6565, 5, 46, 0, 0, 6565, 6566, 5, 41, 0, 0, 6566, 6567, 5, 2, 0, 0, 6567, 6568, 3, 1168, 584, 0, 6568, 6569, 5, 36, 0, 0, 6569, 6570, 3, 1168, 584, 0, 6570, 6571, 5, 3, 0, 0, 6571, 6572, 5, 105, 0, 0, 6572, 6573, 5, 211, 0, 0, 6573, 6575, 3, 674, 337, 0, 6574, 6576, 3, 746, 373, 0, 6575, 6574, 1, 0, 0, 0, 6575, 6576, 1, 0, 0, 0, 6576, 6602, 1, 0, 0, 0, 6577, 6578, 5, 46, 0, 0, 6578, 6579, 5, 41, 0, 0, 6579, 6580, 5, 2, 0, 0, 6580, 6581, 3, 1168, 584, 0, 6581, 6582, 5, 36, 0, 0, 6582, 6583, 3, 1168, 584, 0, 6583, 6584, 5, 3, 0, 0, 6584, 6585, 5, 379, 0, 0, 6585, 6587, 5, 211, 0, 0, 6586, 6588, 3, 746, 373, 0, 6587, 6586, 1, 0, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6602, 1, 0, 0, 0, 6589, 6590, 5, 46, 0, 0, 6590, 6591, 5, 41, 0, 0, 6591, 6592, 5, 2, 0, 0, 6592, 6593, 3, 1168, 584, 0, 6593, 6594, 5, 36, 0, 0, 6594, 6595, 3, 1168, 584, 0, 6595, 6596, 5, 3, 0, 0, 6596, 6597, 5, 105, 0, 0, 6597, 6599, 5, 400, 0, 0, 6598, 6600, 3, 746, 373, 0, 6599, 6598, 1, 0, 0, 0, 6599, 6600, 1, 0, 0, 0, 6600, 6602, 1, 0, 0, 0, 6601, 6564, 1, 0, 0, 0, 6601, 6577, 1, 0, 0, 0, 6601, 6589, 1, 0, 0, 0, 6602, 745, 1, 0, 0, 0, 6603, 6604, 5, 36, 0, 0, 6604, 6608, 5, 223, 0, 0, 6605, 6606, 5, 36, 0, 0, 6606, 6608, 5, 141, 0, 0, 6607, 6603, 1, 0, 0, 0, 6607, 6605, 1, 0, 0, 0, 6608, 747, 1, 0, 0, 0, 6609, 6610, 5, 220, 0, 0, 6610, 6611, 5, 396, 0, 0, 6611, 749, 1, 0, 0, 0, 6612, 6614, 5, 46, 0, 0, 6613, 6615, 3, 658, 329, 0, 6614, 6613, 1, 0, 0, 0, 6614, 6615, 1, 0, 0, 0, 6615, 6616, 1, 0, 0, 0, 6616, 6617, 5, 443, 0, 0, 6617, 6618, 5, 62, 0, 0, 6618, 6619, 3, 1168, 584, 0, 6619, 6620, 5, 247, 0, 0, 6620, 6621, 3, 1436, 718, 0, 6621, 6622, 5, 2, 0, 0, 6622, 6623, 3, 752, 376, 0, 6623, 6624, 5, 3, 0, 0, 6624, 751, 1, 0, 0, 0, 6625, 6626, 5, 64, 0, 0, 6626, 6627, 5, 461, 0, 0, 6627, 6628, 5, 105, 0, 0, 6628, 6629, 5, 211, 0, 0, 6629, 6630, 3, 674, 337, 0, 6630, 6631, 5, 6, 0, 0, 6631, 6632, 5, 94, 0, 0, 6632, 6633, 5, 461, 0, 0, 6633, 6634, 5, 105, 0, 0, 6634, 6635, 5, 211, 0, 0, 6635, 6636, 3, 674, 337, 0, 6636, 6660, 1, 0, 0, 0, 6637, 6638, 5, 94, 0, 0, 6638, 6639, 5, 461, 0, 0, 6639, 6640, 5, 105, 0, 0, 6640, 6641, 5, 211, 0, 0, 6641, 6642, 3, 674, 337, 0, 6642, 6643, 5, 6, 0, 0, 6643, 6644, 5, 64, 0, 0, 6644, 6645, 5, 461, 0, 0, 6645, 6646, 5, 105, 0, 0, 6646, 6647, 5, 211, 0, 0, 6647, 6648, 3, 674, 337, 0, 6648, 6660, 1, 0, 0, 0, 6649, 6650, 5, 64, 0, 0, 6650, 6651, 5, 461, 0, 0, 6651, 6652, 5, 105, 0, 0, 6652, 6653, 5, 211, 0, 0, 6653, 6660, 3, 674, 337, 0, 6654, 6655, 5, 94, 0, 0, 6655, 6656, 5, 461, 0, 0, 6656, 6657, 5, 105, 0, 0, 6657, 6658, 5, 211, 0, 0, 6658, 6660, 3, 674, 337, 0, 6659, 6625, 1, 0, 0, 0, 6659, 6637, 1, 0, 0, 0, 6659, 6649, 1, 0, 0, 0, 6659, 6654, 1, 0, 0, 0, 6660, 753, 1, 0, 0, 0, 6661, 6662, 5, 306, 0, 0, 6662, 6678, 3, 756, 378, 0, 6663, 6664, 5, 306, 0, 0, 6664, 6678, 3, 758, 379, 0, 6665, 6666, 5, 306, 0, 0, 6666, 6667, 5, 2, 0, 0, 6667, 6668, 3, 760, 380, 0, 6668, 6669, 5, 3, 0, 0, 6669, 6670, 3, 756, 378, 0, 6670, 6678, 1, 0, 0, 0, 6671, 6672, 5, 306, 0, 0, 6672, 6673, 5, 2, 0, 0, 6673, 6674, 3, 760, 380, 0, 6674, 6675, 5, 3, 0, 0, 6675, 6676, 3, 758, 379, 0, 6676, 6678, 1, 0, 0, 0, 6677, 6661, 1, 0, 0, 0, 6677, 6663, 1, 0, 0, 0, 6677, 6665, 1, 0, 0, 0, 6677, 6671, 1, 0, 0, 0, 6678, 755, 1, 0, 0, 0, 6679, 6681, 5, 226, 0, 0, 6680, 6682, 3, 630, 315, 0, 6681, 6680, 1, 0, 0, 0, 6681, 6682, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6690, 3, 1412, 706, 0, 6684, 6686, 5, 92, 0, 0, 6685, 6687, 3, 630, 315, 0, 6686, 6685, 1, 0, 0, 0, 6686, 6687, 1, 0, 0, 0, 6687, 6688, 1, 0, 0, 0, 6688, 6690, 3, 1406, 703, 0, 6689, 6679, 1, 0, 0, 0, 6689, 6684, 1, 0, 0, 0, 6690, 757, 1, 0, 0, 0, 6691, 6693, 5, 323, 0, 0, 6692, 6694, 3, 630, 315, 0, 6693, 6692, 1, 0, 0, 0, 6693, 6694, 1, 0, 0, 0, 6694, 6695, 1, 0, 0, 0, 6695, 6707, 3, 1422, 711, 0, 6696, 6698, 5, 349, 0, 0, 6697, 6699, 3, 630, 315, 0, 6698, 6697, 1, 0, 0, 0, 6698, 6699, 1, 0, 0, 0, 6699, 6700, 1, 0, 0, 0, 6700, 6707, 3, 1436, 718, 0, 6701, 6703, 5, 175, 0, 0, 6702, 6704, 3, 630, 315, 0, 6703, 6702, 1, 0, 0, 0, 6703, 6704, 1, 0, 0, 0, 6704, 6705, 1, 0, 0, 0, 6705, 6707, 3, 1420, 710, 0, 6706, 6691, 1, 0, 0, 0, 6706, 6696, 1, 0, 0, 0, 6706, 6701, 1, 0, 0, 0, 6707, 759, 1, 0, 0, 0, 6708, 6713, 3, 762, 381, 0, 6709, 6710, 5, 6, 0, 0, 6710, 6712, 3, 762, 381, 0, 6711, 6709, 1, 0, 0, 0, 6712, 6715, 1, 0, 0, 0, 6713, 6711, 1, 0, 0, 0, 6713, 6714, 1, 0, 0, 0, 6714, 761, 1, 0, 0, 0, 6715, 6713, 1, 0, 0, 0, 6716, 6717, 5, 128, 0, 0, 6717, 763, 1, 0, 0, 0, 6718, 6719, 5, 138, 0, 0, 6719, 6720, 5, 351, 0, 0, 6720, 6721, 3, 1402, 701, 0, 6721, 6722, 5, 333, 0, 0, 6722, 6723, 3, 132, 66, 0, 6723, 6731, 1, 0, 0, 0, 6724, 6725, 5, 138, 0, 0, 6725, 6726, 5, 351, 0, 0, 6726, 6727, 3, 1402, 701, 0, 6727, 6728, 5, 313, 0, 0, 6728, 6729, 3, 132, 66, 0, 6729, 6731, 1, 0, 0, 0, 6730, 6718, 1, 0, 0, 0, 6730, 6724, 1, 0, 0, 0, 6731, 765, 1, 0, 0, 0, 6732, 6733, 5, 138, 0, 0, 6733, 6734, 5, 136, 0, 0, 6734, 6735, 3, 698, 349, 0, 6735, 6736, 5, 309, 0, 0, 6736, 6737, 5, 94, 0, 0, 6737, 6738, 3, 1436, 718, 0, 6738, 7124, 1, 0, 0, 0, 6739, 6740, 5, 138, 0, 0, 6740, 6741, 5, 108, 0, 0, 6741, 6742, 3, 558, 279, 0, 6742, 6743, 5, 309, 0, 0, 6743, 6744, 5, 94, 0, 0, 6744, 6745, 3, 1436, 718, 0, 6745, 7124, 1, 0, 0, 0, 6746, 6747, 5, 138, 0, 0, 6747, 6748, 5, 168, 0, 0, 6748, 6749, 3, 558, 279, 0, 6749, 6750, 5, 309, 0, 0, 6750, 6751, 5, 94, 0, 0, 6751, 6752, 3, 1436, 718, 0, 6752, 7124, 1, 0, 0, 0, 6753, 6754, 5, 138, 0, 0, 6754, 6755, 5, 175, 0, 0, 6755, 6756, 3, 1420, 710, 0, 6756, 6757, 5, 309, 0, 0, 6757, 6758, 5, 94, 0, 0, 6758, 6759, 3, 1418, 709, 0, 6759, 7124, 1, 0, 0, 0, 6760, 6761, 5, 138, 0, 0, 6761, 6762, 5, 189, 0, 0, 6762, 6763, 3, 558, 279, 0, 6763, 6764, 5, 309, 0, 0, 6764, 6765, 5, 94, 0, 0, 6765, 6766, 3, 1436, 718, 0, 6766, 7124, 1, 0, 0, 0, 6767, 6768, 5, 138, 0, 0, 6768, 6769, 5, 189, 0, 0, 6769, 6770, 3, 558, 279, 0, 6770, 6771, 5, 309, 0, 0, 6771, 6772, 5, 45, 0, 0, 6772, 6773, 3, 1436, 718, 0, 6773, 6774, 5, 94, 0, 0, 6774, 6775, 3, 1436, 718, 0, 6775, 7124, 1, 0, 0, 0, 6776, 6777, 5, 138, 0, 0, 6777, 6778, 5, 63, 0, 0, 6778, 6779, 5, 174, 0, 0, 6779, 6780, 5, 381, 0, 0, 6780, 6781, 3, 1436, 718, 0, 6781, 6782, 5, 309, 0, 0, 6782, 6783, 5, 94, 0, 0, 6783, 6784, 3, 1436, 718, 0, 6784, 7124, 1, 0, 0, 0, 6785, 6786, 5, 138, 0, 0, 6786, 6787, 5, 211, 0, 0, 6787, 6788, 3, 674, 337, 0, 6788, 6789, 5, 309, 0, 0, 6789, 6790, 5, 94, 0, 0, 6790, 6791, 3, 1442, 721, 0, 6791, 7124, 1, 0, 0, 0, 6792, 6793, 5, 138, 0, 0, 6793, 6794, 5, 66, 0, 0, 6794, 6795, 3, 1468, 734, 0, 6795, 6796, 5, 309, 0, 0, 6796, 6797, 5, 94, 0, 0, 6797, 6798, 3, 1468, 734, 0, 6798, 7124, 1, 0, 0, 0, 6799, 6801, 5, 138, 0, 0, 6800, 6802, 3, 338, 169, 0, 6801, 6800, 1, 0, 0, 0, 6801, 6802, 1, 0, 0, 0, 6802, 6803, 1, 0, 0, 0, 6803, 6804, 5, 247, 0, 0, 6804, 6805, 3, 1436, 718, 0, 6805, 6806, 5, 309, 0, 0, 6806, 6807, 5, 94, 0, 0, 6807, 6808, 3, 1436, 718, 0, 6808, 7124, 1, 0, 0, 0, 6809, 6810, 5, 138, 0, 0, 6810, 6811, 5, 278, 0, 0, 6811, 6812, 5, 156, 0, 0, 6812, 6813, 3, 558, 279, 0, 6813, 6814, 5, 100, 0, 0, 6814, 6815, 3, 1436, 718, 0, 6815, 6816, 5, 309, 0, 0, 6816, 6817, 5, 94, 0, 0, 6817, 6818, 3, 1436, 718, 0, 6818, 7124, 1, 0, 0, 0, 6819, 6820, 5, 138, 0, 0, 6820, 6821, 5, 278, 0, 0, 6821, 6822, 5, 206, 0, 0, 6822, 6823, 3, 558, 279, 0, 6823, 6824, 5, 100, 0, 0, 6824, 6825, 3, 1436, 718, 0, 6825, 6826, 5, 309, 0, 0, 6826, 6827, 5, 94, 0, 0, 6827, 6828, 3, 1436, 718, 0, 6828, 7124, 1, 0, 0, 0, 6829, 6830, 5, 138, 0, 0, 6830, 6832, 5, 445, 0, 0, 6831, 6833, 3, 748, 374, 0, 6832, 6831, 1, 0, 0, 0, 6832, 6833, 1, 0, 0, 0, 6833, 6834, 1, 0, 0, 0, 6834, 6835, 3, 1436, 718, 0, 6835, 6836, 5, 80, 0, 0, 6836, 6837, 3, 1412, 706, 0, 6837, 6838, 5, 309, 0, 0, 6838, 6839, 5, 94, 0, 0, 6839, 6840, 3, 1436, 718, 0, 6840, 7124, 1, 0, 0, 0, 6841, 6842, 5, 138, 0, 0, 6842, 6843, 5, 296, 0, 0, 6843, 6844, 3, 670, 335, 0, 6844, 6845, 5, 309, 0, 0, 6845, 6846, 5, 94, 0, 0, 6846, 6847, 3, 1430, 715, 0, 6847, 7124, 1, 0, 0, 0, 6848, 6849, 5, 138, 0, 0, 6849, 6850, 5, 452, 0, 0, 6850, 6851, 3, 1436, 718, 0, 6851, 6852, 5, 309, 0, 0, 6852, 6853, 5, 94, 0, 0, 6853, 6854, 3, 1436, 718, 0, 6854, 7124, 1, 0, 0, 0, 6855, 6856, 5, 138, 0, 0, 6856, 6857, 5, 442, 0, 0, 6857, 6858, 3, 666, 333, 0, 6858, 6859, 5, 309, 0, 0, 6859, 6860, 5, 94, 0, 0, 6860, 6861, 3, 1436, 718, 0, 6861, 7124, 1, 0, 0, 0, 6862, 6863, 5, 138, 0, 0, 6863, 6864, 5, 323, 0, 0, 6864, 6865, 3, 1422, 711, 0, 6865, 6866, 5, 309, 0, 0, 6866, 6867, 5, 94, 0, 0, 6867, 6868, 3, 48, 24, 0, 6868, 7124, 1, 0, 0, 0, 6869, 6870, 5, 138, 0, 0, 6870, 6871, 5, 331, 0, 0, 6871, 6872, 3, 1436, 718, 0, 6872, 6873, 5, 309, 0, 0, 6873, 6874, 5, 94, 0, 0, 6874, 6875, 3, 1436, 718, 0, 6875, 7124, 1, 0, 0, 0, 6876, 6877, 5, 138, 0, 0, 6877, 6878, 5, 451, 0, 0, 6878, 6879, 3, 1436, 718, 0, 6879, 6880, 5, 309, 0, 0, 6880, 6881, 5, 94, 0, 0, 6881, 6882, 3, 1436, 718, 0, 6882, 7124, 1, 0, 0, 0, 6883, 6884, 5, 138, 0, 0, 6884, 6886, 5, 92, 0, 0, 6885, 6887, 3, 748, 374, 0, 6886, 6885, 1, 0, 0, 0, 6886, 6887, 1, 0, 0, 0, 6887, 6888, 1, 0, 0, 0, 6888, 6889, 3, 1118, 559, 0, 6889, 6890, 5, 309, 0, 0, 6890, 6891, 5, 94, 0, 0, 6891, 6892, 3, 1404, 702, 0, 6892, 7124, 1, 0, 0, 0, 6893, 6894, 5, 138, 0, 0, 6894, 6896, 5, 328, 0, 0, 6895, 6897, 3, 748, 374, 0, 6896, 6895, 1, 0, 0, 0, 6896, 6897, 1, 0, 0, 0, 6897, 6898, 1, 0, 0, 0, 6898, 6899, 3, 1412, 706, 0, 6899, 6900, 5, 309, 0, 0, 6900, 6901, 5, 94, 0, 0, 6901, 6902, 3, 1436, 718, 0, 6902, 7124, 1, 0, 0, 0, 6903, 6904, 5, 138, 0, 0, 6904, 6906, 5, 376, 0, 0, 6905, 6907, 3, 748, 374, 0, 6906, 6905, 1, 0, 0, 0, 6906, 6907, 1, 0, 0, 0, 6907, 6908, 1, 0, 0, 0, 6908, 6909, 3, 1410, 705, 0, 6909, 6910, 5, 309, 0, 0, 6910, 6911, 5, 94, 0, 0, 6911, 6912, 3, 1408, 704, 0, 6912, 7124, 1, 0, 0, 0, 6913, 6914, 5, 138, 0, 0, 6914, 6915, 5, 259, 0, 0, 6915, 6917, 5, 376, 0, 0, 6916, 6918, 3, 748, 374, 0, 6917, 6916, 1, 0, 0, 0, 6917, 6918, 1, 0, 0, 0, 6918, 6919, 1, 0, 0, 0, 6919, 6920, 3, 1410, 705, 0, 6920, 6921, 5, 309, 0, 0, 6921, 6922, 5, 94, 0, 0, 6922, 6923, 3, 1408, 704, 0, 6923, 7124, 1, 0, 0, 0, 6924, 6925, 5, 138, 0, 0, 6925, 6927, 5, 226, 0, 0, 6926, 6928, 3, 748, 374, 0, 6927, 6926, 1, 0, 0, 0, 6927, 6928, 1, 0, 0, 0, 6928, 6929, 1, 0, 0, 0, 6929, 6930, 3, 1412, 706, 0, 6930, 6931, 5, 309, 0, 0, 6931, 6932, 5, 94, 0, 0, 6932, 6933, 3, 1436, 718, 0, 6933, 7124, 1, 0, 0, 0, 6934, 6935, 5, 138, 0, 0, 6935, 6936, 5, 63, 0, 0, 6936, 6938, 5, 92, 0, 0, 6937, 6939, 3, 748, 374, 0, 6938, 6937, 1, 0, 0, 0, 6938, 6939, 1, 0, 0, 0, 6939, 6940, 1, 0, 0, 0, 6940, 6941, 3, 1118, 559, 0, 6941, 6942, 5, 309, 0, 0, 6942, 6943, 5, 94, 0, 0, 6943, 6944, 3, 1404, 702, 0, 6944, 7124, 1, 0, 0, 0, 6945, 6946, 5, 138, 0, 0, 6946, 6948, 5, 92, 0, 0, 6947, 6949, 3, 748, 374, 0, 6948, 6947, 1, 0, 0, 0, 6948, 6949, 1, 0, 0, 0, 6949, 6950, 1, 0, 0, 0, 6950, 6951, 3, 1118, 559, 0, 6951, 6953, 5, 309, 0, 0, 6952, 6954, 5, 44, 0, 0, 6953, 6952, 1, 0, 0, 0, 6953, 6954, 1, 0, 0, 0, 6954, 6955, 1, 0, 0, 0, 6955, 6956, 3, 1432, 716, 0, 6956, 6957, 5, 94, 0, 0, 6957, 6958, 3, 1434, 717, 0, 6958, 7124, 1, 0, 0, 0, 6959, 6960, 5, 138, 0, 0, 6960, 6962, 5, 376, 0, 0, 6961, 6963, 3, 748, 374, 0, 6962, 6961, 1, 0, 0, 0, 6962, 6963, 1, 0, 0, 0, 6963, 6964, 1, 0, 0, 0, 6964, 6965, 3, 1410, 705, 0, 6965, 6967, 5, 309, 0, 0, 6966, 6968, 5, 44, 0, 0, 6967, 6966, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 6969, 1, 0, 0, 0, 6969, 6970, 3, 1432, 716, 0, 6970, 6971, 5, 94, 0, 0, 6971, 6972, 3, 1434, 717, 0, 6972, 7124, 1, 0, 0, 0, 6973, 6974, 5, 138, 0, 0, 6974, 6975, 5, 259, 0, 0, 6975, 6977, 5, 376, 0, 0, 6976, 6978, 3, 748, 374, 0, 6977, 6976, 1, 0, 0, 0, 6977, 6978, 1, 0, 0, 0, 6978, 6979, 1, 0, 0, 0, 6979, 6980, 3, 1410, 705, 0, 6980, 6982, 5, 309, 0, 0, 6981, 6983, 5, 44, 0, 0, 6982, 6981, 1, 0, 0, 0, 6982, 6983, 1, 0, 0, 0, 6983, 6984, 1, 0, 0, 0, 6984, 6985, 3, 1432, 716, 0, 6985, 6986, 5, 94, 0, 0, 6986, 6987, 3, 1434, 717, 0, 6987, 7124, 1, 0, 0, 0, 6988, 6989, 5, 138, 0, 0, 6989, 6991, 5, 92, 0, 0, 6990, 6992, 3, 748, 374, 0, 6991, 6990, 1, 0, 0, 0, 6991, 6992, 1, 0, 0, 0, 6992, 6993, 1, 0, 0, 0, 6993, 6994, 3, 1118, 559, 0, 6994, 6995, 5, 309, 0, 0, 6995, 6996, 5, 45, 0, 0, 6996, 6997, 3, 1436, 718, 0, 6997, 6998, 5, 94, 0, 0, 6998, 6999, 3, 1436, 718, 0, 6999, 7124, 1, 0, 0, 0, 7000, 7001, 5, 138, 0, 0, 7001, 7002, 5, 63, 0, 0, 7002, 7004, 5, 92, 0, 0, 7003, 7005, 3, 748, 374, 0, 7004, 7003, 1, 0, 0, 0, 7004, 7005, 1, 0, 0, 0, 7005, 7006, 1, 0, 0, 0, 7006, 7007, 3, 1118, 559, 0, 7007, 7009, 5, 309, 0, 0, 7008, 7010, 5, 44, 0, 0, 7009, 7008, 1, 0, 0, 0, 7009, 7010, 1, 0, 0, 0, 7010, 7011, 1, 0, 0, 0, 7011, 7012, 3, 1432, 716, 0, 7012, 7013, 5, 94, 0, 0, 7013, 7014, 3, 1434, 717, 0, 7014, 7124, 1, 0, 0, 0, 7015, 7016, 5, 138, 0, 0, 7016, 7017, 5, 321, 0, 0, 7017, 7018, 3, 1436, 718, 0, 7018, 7019, 5, 80, 0, 0, 7019, 7020, 3, 1412, 706, 0, 7020, 7021, 5, 309, 0, 0, 7021, 7022, 5, 94, 0, 0, 7022, 7023, 3, 1436, 718, 0, 7023, 7124, 1, 0, 0, 0, 7024, 7025, 5, 138, 0, 0, 7025, 7026, 5, 357, 0, 0, 7026, 7027, 3, 1436, 718, 0, 7027, 7028, 5, 80, 0, 0, 7028, 7029, 3, 1412, 706, 0, 7029, 7030, 5, 309, 0, 0, 7030, 7031, 5, 94, 0, 0, 7031, 7032, 3, 1436, 718, 0, 7032, 7124, 1, 0, 0, 0, 7033, 7034, 5, 138, 0, 0, 7034, 7035, 5, 198, 0, 0, 7035, 7036, 5, 357, 0, 0, 7036, 7037, 3, 1436, 718, 0, 7037, 7038, 5, 309, 0, 0, 7038, 7039, 5, 94, 0, 0, 7039, 7040, 3, 1436, 718, 0, 7040, 7124, 1, 0, 0, 0, 7041, 7042, 5, 138, 0, 0, 7042, 7043, 5, 318, 0, 0, 7043, 7044, 3, 1468, 734, 0, 7044, 7045, 5, 309, 0, 0, 7045, 7046, 5, 94, 0, 0, 7046, 7047, 3, 1468, 734, 0, 7047, 7124, 1, 0, 0, 0, 7048, 7049, 5, 138, 0, 0, 7049, 7050, 5, 99, 0, 0, 7050, 7051, 3, 1468, 734, 0, 7051, 7052, 5, 309, 0, 0, 7052, 7053, 5, 94, 0, 0, 7053, 7054, 3, 1468, 734, 0, 7054, 7124, 1, 0, 0, 0, 7055, 7056, 5, 138, 0, 0, 7056, 7057, 5, 351, 0, 0, 7057, 7058, 3, 1402, 701, 0, 7058, 7059, 5, 309, 0, 0, 7059, 7060, 5, 94, 0, 0, 7060, 7061, 3, 1400, 700, 0, 7061, 7124, 1, 0, 0, 0, 7062, 7063, 5, 138, 0, 0, 7063, 7064, 5, 342, 0, 0, 7064, 7065, 3, 558, 279, 0, 7065, 7066, 5, 309, 0, 0, 7066, 7067, 5, 94, 0, 0, 7067, 7068, 3, 1436, 718, 0, 7068, 7124, 1, 0, 0, 0, 7069, 7070, 5, 138, 0, 0, 7070, 7071, 5, 355, 0, 0, 7071, 7072, 5, 325, 0, 0, 7072, 7073, 5, 283, 0, 0, 7073, 7074, 3, 558, 279, 0, 7074, 7075, 5, 309, 0, 0, 7075, 7076, 5, 94, 0, 0, 7076, 7077, 3, 1436, 718, 0, 7077, 7124, 1, 0, 0, 0, 7078, 7079, 5, 138, 0, 0, 7079, 7080, 5, 355, 0, 0, 7080, 7081, 5, 325, 0, 0, 7081, 7082, 5, 185, 0, 0, 7082, 7083, 3, 558, 279, 0, 7083, 7084, 5, 309, 0, 0, 7084, 7085, 5, 94, 0, 0, 7085, 7086, 3, 1436, 718, 0, 7086, 7124, 1, 0, 0, 0, 7087, 7088, 5, 138, 0, 0, 7088, 7089, 5, 355, 0, 0, 7089, 7090, 5, 325, 0, 0, 7090, 7091, 5, 353, 0, 0, 7091, 7092, 3, 558, 279, 0, 7092, 7093, 5, 309, 0, 0, 7093, 7094, 5, 94, 0, 0, 7094, 7095, 3, 1436, 718, 0, 7095, 7124, 1, 0, 0, 0, 7096, 7097, 5, 138, 0, 0, 7097, 7098, 5, 355, 0, 0, 7098, 7099, 5, 325, 0, 0, 7099, 7100, 5, 163, 0, 0, 7100, 7101, 3, 558, 279, 0, 7101, 7102, 5, 309, 0, 0, 7102, 7103, 5, 94, 0, 0, 7103, 7104, 3, 1436, 718, 0, 7104, 7124, 1, 0, 0, 0, 7105, 7106, 5, 138, 0, 0, 7106, 7107, 5, 360, 0, 0, 7107, 7108, 3, 558, 279, 0, 7108, 7109, 5, 309, 0, 0, 7109, 7110, 5, 94, 0, 0, 7110, 7111, 3, 1436, 718, 0, 7111, 7124, 1, 0, 0, 0, 7112, 7113, 5, 138, 0, 0, 7113, 7114, 5, 360, 0, 0, 7114, 7115, 3, 558, 279, 0, 7115, 7116, 5, 309, 0, 0, 7116, 7117, 5, 143, 0, 0, 7117, 7118, 3, 1436, 718, 0, 7118, 7119, 5, 94, 0, 0, 7119, 7121, 3, 1436, 718, 0, 7120, 7122, 3, 124, 62, 0, 7121, 7120, 1, 0, 0, 0, 7121, 7122, 1, 0, 0, 0, 7122, 7124, 1, 0, 0, 0, 7123, 6732, 1, 0, 0, 0, 7123, 6739, 1, 0, 0, 0, 7123, 6746, 1, 0, 0, 0, 7123, 6753, 1, 0, 0, 0, 7123, 6760, 1, 0, 0, 0, 7123, 6767, 1, 0, 0, 0, 7123, 6776, 1, 0, 0, 0, 7123, 6785, 1, 0, 0, 0, 7123, 6792, 1, 0, 0, 0, 7123, 6799, 1, 0, 0, 0, 7123, 6809, 1, 0, 0, 0, 7123, 6819, 1, 0, 0, 0, 7123, 6829, 1, 0, 0, 0, 7123, 6841, 1, 0, 0, 0, 7123, 6848, 1, 0, 0, 0, 7123, 6855, 1, 0, 0, 0, 7123, 6862, 1, 0, 0, 0, 7123, 6869, 1, 0, 0, 0, 7123, 6876, 1, 0, 0, 0, 7123, 6883, 1, 0, 0, 0, 7123, 6893, 1, 0, 0, 0, 7123, 6903, 1, 0, 0, 0, 7123, 6913, 1, 0, 0, 0, 7123, 6924, 1, 0, 0, 0, 7123, 6934, 1, 0, 0, 0, 7123, 6945, 1, 0, 0, 0, 7123, 6959, 1, 0, 0, 0, 7123, 6973, 1, 0, 0, 0, 7123, 6988, 1, 0, 0, 0, 7123, 7000, 1, 0, 0, 0, 7123, 7015, 1, 0, 0, 0, 7123, 7024, 1, 0, 0, 0, 7123, 7033, 1, 0, 0, 0, 7123, 7041, 1, 0, 0, 0, 7123, 7048, 1, 0, 0, 0, 7123, 7055, 1, 0, 0, 0, 7123, 7062, 1, 0, 0, 0, 7123, 7069, 1, 0, 0, 0, 7123, 7078, 1, 0, 0, 0, 7123, 7087, 1, 0, 0, 0, 7123, 7096, 1, 0, 0, 0, 7123, 7105, 1, 0, 0, 0, 7123, 7112, 1, 0, 0, 0, 7124, 767, 1, 0, 0, 0, 7125, 7126, 5, 333, 0, 0, 7126, 7127, 5, 174, 0, 0, 7127, 769, 1, 0, 0, 0, 7128, 7129, 5, 138, 0, 0, 7129, 7130, 5, 211, 0, 0, 7130, 7132, 3, 674, 337, 0, 7131, 7133, 3, 772, 386, 0, 7132, 7131, 1, 0, 0, 0, 7132, 7133, 1, 0, 0, 0, 7133, 7134, 1, 0, 0, 0, 7134, 7135, 5, 462, 0, 0, 7135, 7136, 5, 80, 0, 0, 7136, 7137, 5, 204, 0, 0, 7137, 7138, 3, 1436, 718, 0, 7138, 7198, 1, 0, 0, 0, 7139, 7140, 5, 138, 0, 0, 7140, 7141, 5, 296, 0, 0, 7141, 7143, 3, 670, 335, 0, 7142, 7144, 3, 772, 386, 0, 7143, 7142, 1, 0, 0, 0, 7143, 7144, 1, 0, 0, 0, 7144, 7145, 1, 0, 0, 0, 7145, 7146, 5, 462, 0, 0, 7146, 7147, 5, 80, 0, 0, 7147, 7148, 5, 204, 0, 0, 7148, 7149, 3, 1436, 718, 0, 7149, 7198, 1, 0, 0, 0, 7150, 7151, 5, 138, 0, 0, 7151, 7152, 5, 442, 0, 0, 7152, 7154, 3, 666, 333, 0, 7153, 7155, 3, 772, 386, 0, 7154, 7153, 1, 0, 0, 0, 7154, 7155, 1, 0, 0, 0, 7155, 7156, 1, 0, 0, 0, 7156, 7157, 5, 462, 0, 0, 7157, 7158, 5, 80, 0, 0, 7158, 7159, 5, 204, 0, 0, 7159, 7160, 3, 1436, 718, 0, 7160, 7198, 1, 0, 0, 0, 7161, 7162, 5, 138, 0, 0, 7162, 7163, 5, 357, 0, 0, 7163, 7164, 3, 1436, 718, 0, 7164, 7165, 5, 80, 0, 0, 7165, 7167, 3, 1412, 706, 0, 7166, 7168, 3, 772, 386, 0, 7167, 7166, 1, 0, 0, 0, 7167, 7168, 1, 0, 0, 0, 7168, 7169, 1, 0, 0, 0, 7169, 7170, 5, 462, 0, 0, 7170, 7171, 5, 80, 0, 0, 7171, 7172, 5, 204, 0, 0, 7172, 7173, 3, 1436, 718, 0, 7173, 7198, 1, 0, 0, 0, 7174, 7175, 5, 138, 0, 0, 7175, 7176, 5, 259, 0, 0, 7176, 7177, 5, 376, 0, 0, 7177, 7179, 3, 1410, 705, 0, 7178, 7180, 3, 772, 386, 0, 7179, 7178, 1, 0, 0, 0, 7179, 7180, 1, 0, 0, 0, 7180, 7181, 1, 0, 0, 0, 7181, 7182, 5, 462, 0, 0, 7182, 7183, 5, 80, 0, 0, 7183, 7184, 5, 204, 0, 0, 7184, 7185, 3, 1436, 718, 0, 7185, 7198, 1, 0, 0, 0, 7186, 7187, 5, 138, 0, 0, 7187, 7188, 5, 226, 0, 0, 7188, 7190, 3, 1412, 706, 0, 7189, 7191, 3, 772, 386, 0, 7190, 7189, 1, 0, 0, 0, 7190, 7191, 1, 0, 0, 0, 7191, 7192, 1, 0, 0, 0, 7192, 7193, 5, 462, 0, 0, 7193, 7194, 5, 80, 0, 0, 7194, 7195, 5, 204, 0, 0, 7195, 7196, 3, 1436, 718, 0, 7196, 7198, 1, 0, 0, 0, 7197, 7128, 1, 0, 0, 0, 7197, 7139, 1, 0, 0, 0, 7197, 7150, 1, 0, 0, 0, 7197, 7161, 1, 0, 0, 0, 7197, 7174, 1, 0, 0, 0, 7197, 7186, 1, 0, 0, 0, 7198, 771, 1, 0, 0, 0, 7199, 7200, 5, 269, 0, 0, 7200, 773, 1, 0, 0, 0, 7201, 7202, 5, 138, 0, 0, 7202, 7203, 5, 136, 0, 0, 7203, 7204, 3, 698, 349, 0, 7204, 7205, 5, 333, 0, 0, 7205, 7206, 5, 323, 0, 0, 7206, 7207, 3, 1422, 711, 0, 7207, 7387, 1, 0, 0, 0, 7208, 7209, 5, 138, 0, 0, 7209, 7210, 5, 108, 0, 0, 7210, 7211, 3, 558, 279, 0, 7211, 7212, 5, 333, 0, 0, 7212, 7213, 5, 323, 0, 0, 7213, 7214, 3, 1422, 711, 0, 7214, 7387, 1, 0, 0, 0, 7215, 7216, 5, 138, 0, 0, 7216, 7217, 5, 168, 0, 0, 7217, 7218, 3, 558, 279, 0, 7218, 7219, 5, 333, 0, 0, 7219, 7220, 5, 323, 0, 0, 7220, 7221, 3, 1422, 711, 0, 7221, 7387, 1, 0, 0, 0, 7222, 7223, 5, 138, 0, 0, 7223, 7224, 5, 189, 0, 0, 7224, 7225, 3, 558, 279, 0, 7225, 7226, 5, 333, 0, 0, 7226, 7227, 5, 323, 0, 0, 7227, 7228, 3, 1422, 711, 0, 7228, 7387, 1, 0, 0, 0, 7229, 7230, 5, 138, 0, 0, 7230, 7231, 5, 204, 0, 0, 7231, 7232, 3, 1436, 718, 0, 7232, 7233, 5, 333, 0, 0, 7233, 7234, 5, 323, 0, 0, 7234, 7235, 3, 1422, 711, 0, 7235, 7387, 1, 0, 0, 0, 7236, 7237, 5, 138, 0, 0, 7237, 7238, 5, 211, 0, 0, 7238, 7239, 3, 674, 337, 0, 7239, 7240, 5, 333, 0, 0, 7240, 7241, 5, 323, 0, 0, 7241, 7242, 3, 1422, 711, 0, 7242, 7387, 1, 0, 0, 0, 7243, 7244, 5, 138, 0, 0, 7244, 7245, 5, 278, 0, 0, 7245, 7246, 3, 736, 368, 0, 7246, 7247, 5, 333, 0, 0, 7247, 7248, 5, 323, 0, 0, 7248, 7249, 3, 1422, 711, 0, 7249, 7387, 1, 0, 0, 0, 7250, 7251, 5, 138, 0, 0, 7251, 7252, 5, 278, 0, 0, 7252, 7253, 5, 156, 0, 0, 7253, 7254, 3, 558, 279, 0, 7254, 7255, 5, 100, 0, 0, 7255, 7256, 3, 1436, 718, 0, 7256, 7257, 5, 333, 0, 0, 7257, 7258, 5, 323, 0, 0, 7258, 7259, 3, 1422, 711, 0, 7259, 7387, 1, 0, 0, 0, 7260, 7261, 5, 138, 0, 0, 7261, 7262, 5, 278, 0, 0, 7262, 7263, 5, 206, 0, 0, 7263, 7264, 3, 558, 279, 0, 7264, 7265, 5, 100, 0, 0, 7265, 7266, 3, 1436, 718, 0, 7266, 7267, 5, 333, 0, 0, 7267, 7268, 5, 323, 0, 0, 7268, 7269, 3, 1422, 711, 0, 7269, 7387, 1, 0, 0, 0, 7270, 7271, 5, 138, 0, 0, 7271, 7272, 5, 296, 0, 0, 7272, 7273, 3, 670, 335, 0, 7273, 7274, 5, 333, 0, 0, 7274, 7275, 5, 323, 0, 0, 7275, 7276, 3, 1422, 711, 0, 7276, 7387, 1, 0, 0, 0, 7277, 7278, 5, 138, 0, 0, 7278, 7279, 5, 442, 0, 0, 7279, 7280, 3, 666, 333, 0, 7280, 7281, 5, 333, 0, 0, 7281, 7282, 5, 323, 0, 0, 7282, 7283, 3, 1422, 711, 0, 7283, 7387, 1, 0, 0, 0, 7284, 7285, 5, 138, 0, 0, 7285, 7287, 5, 92, 0, 0, 7286, 7288, 3, 748, 374, 0, 7287, 7286, 1, 0, 0, 0, 7287, 7288, 1, 0, 0, 0, 7288, 7289, 1, 0, 0, 0, 7289, 7290, 3, 1118, 559, 0, 7290, 7291, 5, 333, 0, 0, 7291, 7292, 5, 323, 0, 0, 7292, 7293, 3, 1422, 711, 0, 7293, 7387, 1, 0, 0, 0, 7294, 7295, 5, 138, 0, 0, 7295, 7296, 5, 342, 0, 0, 7296, 7297, 3, 558, 279, 0, 7297, 7298, 5, 333, 0, 0, 7298, 7299, 5, 323, 0, 0, 7299, 7300, 3, 1422, 711, 0, 7300, 7387, 1, 0, 0, 0, 7301, 7302, 5, 138, 0, 0, 7302, 7303, 5, 355, 0, 0, 7303, 7304, 5, 325, 0, 0, 7304, 7305, 5, 283, 0, 0, 7305, 7306, 3, 558, 279, 0, 7306, 7307, 5, 333, 0, 0, 7307, 7308, 5, 323, 0, 0, 7308, 7309, 3, 1422, 711, 0, 7309, 7387, 1, 0, 0, 0, 7310, 7311, 5, 138, 0, 0, 7311, 7312, 5, 355, 0, 0, 7312, 7313, 5, 325, 0, 0, 7313, 7314, 5, 185, 0, 0, 7314, 7315, 3, 558, 279, 0, 7315, 7316, 5, 333, 0, 0, 7316, 7317, 5, 323, 0, 0, 7317, 7318, 3, 1422, 711, 0, 7318, 7387, 1, 0, 0, 0, 7319, 7320, 5, 138, 0, 0, 7320, 7321, 5, 355, 0, 0, 7321, 7322, 5, 325, 0, 0, 7322, 7323, 5, 353, 0, 0, 7323, 7324, 3, 558, 279, 0, 7324, 7325, 5, 333, 0, 0, 7325, 7326, 5, 323, 0, 0, 7326, 7327, 3, 1422, 711, 0, 7327, 7387, 1, 0, 0, 0, 7328, 7329, 5, 138, 0, 0, 7329, 7330, 5, 355, 0, 0, 7330, 7331, 5, 325, 0, 0, 7331, 7332, 5, 163, 0, 0, 7332, 7333, 3, 558, 279, 0, 7333, 7334, 5, 333, 0, 0, 7334, 7335, 5, 323, 0, 0, 7335, 7336, 3, 1422, 711, 0, 7336, 7387, 1, 0, 0, 0, 7337, 7338, 5, 138, 0, 0, 7338, 7340, 5, 328, 0, 0, 7339, 7341, 3, 748, 374, 0, 7340, 7339, 1, 0, 0, 0, 7340, 7341, 1, 0, 0, 0, 7341, 7342, 1, 0, 0, 0, 7342, 7343, 3, 1412, 706, 0, 7343, 7344, 5, 333, 0, 0, 7344, 7345, 5, 323, 0, 0, 7345, 7346, 3, 1422, 711, 0, 7346, 7387, 1, 0, 0, 0, 7347, 7348, 5, 138, 0, 0, 7348, 7350, 5, 376, 0, 0, 7349, 7351, 3, 748, 374, 0, 7350, 7349, 1, 0, 0, 0, 7350, 7351, 1, 0, 0, 0, 7351, 7352, 1, 0, 0, 0, 7352, 7353, 3, 1410, 705, 0, 7353, 7354, 5, 333, 0, 0, 7354, 7355, 5, 323, 0, 0, 7355, 7356, 3, 1422, 711, 0, 7356, 7387, 1, 0, 0, 0, 7357, 7358, 5, 138, 0, 0, 7358, 7359, 5, 259, 0, 0, 7359, 7361, 5, 376, 0, 0, 7360, 7362, 3, 748, 374, 0, 7361, 7360, 1, 0, 0, 0, 7361, 7362, 1, 0, 0, 0, 7362, 7363, 1, 0, 0, 0, 7363, 7364, 3, 1410, 705, 0, 7364, 7365, 5, 333, 0, 0, 7365, 7366, 5, 323, 0, 0, 7366, 7367, 3, 1422, 711, 0, 7367, 7387, 1, 0, 0, 0, 7368, 7369, 5, 138, 0, 0, 7369, 7370, 5, 63, 0, 0, 7370, 7372, 5, 92, 0, 0, 7371, 7373, 3, 748, 374, 0, 7372, 7371, 1, 0, 0, 0, 7372, 7373, 1, 0, 0, 0, 7373, 7374, 1, 0, 0, 0, 7374, 7375, 3, 1118, 559, 0, 7375, 7376, 5, 333, 0, 0, 7376, 7377, 5, 323, 0, 0, 7377, 7378, 3, 1422, 711, 0, 7378, 7387, 1, 0, 0, 0, 7379, 7380, 5, 138, 0, 0, 7380, 7381, 5, 360, 0, 0, 7381, 7382, 3, 558, 279, 0, 7382, 7383, 5, 333, 0, 0, 7383, 7384, 5, 323, 0, 0, 7384, 7385, 3, 1422, 711, 0, 7385, 7387, 1, 0, 0, 0, 7386, 7201, 1, 0, 0, 0, 7386, 7208, 1, 0, 0, 0, 7386, 7215, 1, 0, 0, 0, 7386, 7222, 1, 0, 0, 0, 7386, 7229, 1, 0, 0, 0, 7386, 7236, 1, 0, 0, 0, 7386, 7243, 1, 0, 0, 0, 7386, 7250, 1, 0, 0, 0, 7386, 7260, 1, 0, 0, 0, 7386, 7270, 1, 0, 0, 0, 7386, 7277, 1, 0, 0, 0, 7386, 7284, 1, 0, 0, 0, 7386, 7294, 1, 0, 0, 0, 7386, 7301, 1, 0, 0, 0, 7386, 7310, 1, 0, 0, 0, 7386, 7319, 1, 0, 0, 0, 7386, 7328, 1, 0, 0, 0, 7386, 7337, 1, 0, 0, 0, 7386, 7347, 1, 0, 0, 0, 7386, 7357, 1, 0, 0, 0, 7386, 7368, 1, 0, 0, 0, 7386, 7379, 1, 0, 0, 0, 7387, 775, 1, 0, 0, 0, 7388, 7389, 5, 138, 0, 0, 7389, 7390, 5, 278, 0, 0, 7390, 7391, 3, 736, 368, 0, 7391, 7392, 5, 333, 0, 0, 7392, 7393, 5, 2, 0, 0, 7393, 7394, 3, 778, 389, 0, 7394, 7395, 5, 3, 0, 0, 7395, 777, 1, 0, 0, 0, 7396, 7401, 3, 780, 390, 0, 7397, 7398, 5, 6, 0, 0, 7398, 7400, 3, 780, 390, 0, 7399, 7397, 1, 0, 0, 0, 7400, 7403, 1, 0, 0, 0, 7401, 7399, 1, 0, 0, 0, 7401, 7402, 1, 0, 0, 0, 7402, 779, 1, 0, 0, 0, 7403, 7401, 1, 0, 0, 0, 7404, 7405, 3, 1490, 745, 0, 7405, 7406, 5, 10, 0, 0, 7406, 7407, 5, 407, 0, 0, 7407, 7413, 1, 0, 0, 0, 7408, 7409, 3, 1490, 745, 0, 7409, 7410, 5, 10, 0, 0, 7410, 7411, 3, 782, 391, 0, 7411, 7413, 1, 0, 0, 0, 7412, 7404, 1, 0, 0, 0, 7412, 7408, 1, 0, 0, 0, 7413, 781, 1, 0, 0, 0, 7414, 7420, 3, 688, 344, 0, 7415, 7420, 3, 1502, 751, 0, 7416, 7420, 3, 1324, 662, 0, 7417, 7420, 3, 322, 161, 0, 7418, 7420, 3, 1458, 729, 0, 7419, 7414, 1, 0, 0, 0, 7419, 7415, 1, 0, 0, 0, 7419, 7416, 1, 0, 0, 0, 7419, 7417, 1, 0, 0, 0, 7419, 7418, 1, 0, 0, 0, 7420, 783, 1, 0, 0, 0, 7421, 7422, 5, 138, 0, 0, 7422, 7423, 5, 360, 0, 0, 7423, 7424, 3, 558, 279, 0, 7424, 7425, 5, 333, 0, 0, 7425, 7426, 5, 2, 0, 0, 7426, 7427, 3, 778, 389, 0, 7427, 7428, 5, 3, 0, 0, 7428, 785, 1, 0, 0, 0, 7429, 7430, 5, 138, 0, 0, 7430, 7431, 5, 136, 0, 0, 7431, 7432, 3, 698, 349, 0, 7432, 7433, 5, 282, 0, 0, 7433, 7434, 5, 94, 0, 0, 7434, 7435, 3, 1470, 735, 0, 7435, 7615, 1, 0, 0, 0, 7436, 7437, 5, 138, 0, 0, 7437, 7438, 5, 108, 0, 0, 7438, 7439, 3, 558, 279, 0, 7439, 7440, 5, 282, 0, 0, 7440, 7441, 5, 94, 0, 0, 7441, 7442, 3, 1470, 735, 0, 7442, 7615, 1, 0, 0, 0, 7443, 7444, 5, 138, 0, 0, 7444, 7445, 5, 168, 0, 0, 7445, 7446, 3, 558, 279, 0, 7446, 7447, 5, 282, 0, 0, 7447, 7448, 5, 94, 0, 0, 7448, 7449, 3, 1470, 735, 0, 7449, 7615, 1, 0, 0, 0, 7450, 7451, 5, 138, 0, 0, 7451, 7452, 5, 175, 0, 0, 7452, 7453, 3, 1420, 710, 0, 7453, 7454, 5, 282, 0, 0, 7454, 7455, 5, 94, 0, 0, 7455, 7456, 3, 1470, 735, 0, 7456, 7615, 1, 0, 0, 0, 7457, 7458, 5, 138, 0, 0, 7458, 7459, 5, 189, 0, 0, 7459, 7460, 3, 558, 279, 0, 7460, 7461, 5, 282, 0, 0, 7461, 7462, 5, 94, 0, 0, 7462, 7463, 3, 1470, 735, 0, 7463, 7615, 1, 0, 0, 0, 7464, 7465, 5, 138, 0, 0, 7465, 7466, 5, 211, 0, 0, 7466, 7467, 3, 674, 337, 0, 7467, 7468, 5, 282, 0, 0, 7468, 7469, 5, 94, 0, 0, 7469, 7470, 3, 1470, 735, 0, 7470, 7615, 1, 0, 0, 0, 7471, 7473, 5, 138, 0, 0, 7472, 7474, 3, 338, 169, 0, 7473, 7472, 1, 0, 0, 0, 7473, 7474, 1, 0, 0, 0, 7474, 7475, 1, 0, 0, 0, 7475, 7476, 5, 247, 0, 0, 7476, 7477, 3, 1436, 718, 0, 7477, 7478, 5, 282, 0, 0, 7478, 7479, 5, 94, 0, 0, 7479, 7480, 3, 1470, 735, 0, 7480, 7615, 1, 0, 0, 0, 7481, 7482, 5, 138, 0, 0, 7482, 7483, 5, 248, 0, 0, 7483, 7484, 5, 274, 0, 0, 7484, 7485, 3, 322, 161, 0, 7485, 7486, 5, 282, 0, 0, 7486, 7487, 5, 94, 0, 0, 7487, 7488, 3, 1470, 735, 0, 7488, 7615, 1, 0, 0, 0, 7489, 7490, 5, 138, 0, 0, 7490, 7491, 5, 278, 0, 0, 7491, 7492, 3, 736, 368, 0, 7492, 7493, 5, 282, 0, 0, 7493, 7494, 5, 94, 0, 0, 7494, 7495, 3, 1470, 735, 0, 7495, 7615, 1, 0, 0, 0, 7496, 7497, 5, 138, 0, 0, 7497, 7498, 5, 278, 0, 0, 7498, 7499, 5, 156, 0, 0, 7499, 7500, 3, 558, 279, 0, 7500, 7501, 5, 100, 0, 0, 7501, 7502, 3, 1436, 718, 0, 7502, 7503, 5, 282, 0, 0, 7503, 7504, 5, 94, 0, 0, 7504, 7505, 3, 1470, 735, 0, 7505, 7615, 1, 0, 0, 0, 7506, 7507, 5, 138, 0, 0, 7507, 7508, 5, 278, 0, 0, 7508, 7509, 5, 206, 0, 0, 7509, 7510, 3, 558, 279, 0, 7510, 7511, 5, 100, 0, 0, 7511, 7512, 3, 1436, 718, 0, 7512, 7513, 5, 282, 0, 0, 7513, 7514, 5, 94, 0, 0, 7514, 7515, 3, 1470, 735, 0, 7515, 7615, 1, 0, 0, 0, 7516, 7517, 5, 138, 0, 0, 7517, 7518, 5, 296, 0, 0, 7518, 7519, 3, 670, 335, 0, 7519, 7520, 5, 282, 0, 0, 7520, 7521, 5, 94, 0, 0, 7521, 7522, 3, 1470, 735, 0, 7522, 7615, 1, 0, 0, 0, 7523, 7524, 5, 138, 0, 0, 7524, 7525, 5, 442, 0, 0, 7525, 7526, 3, 666, 333, 0, 7526, 7527, 5, 282, 0, 0, 7527, 7528, 5, 94, 0, 0, 7528, 7529, 3, 1470, 735, 0, 7529, 7615, 1, 0, 0, 0, 7530, 7531, 5, 138, 0, 0, 7531, 7532, 5, 323, 0, 0, 7532, 7533, 3, 1422, 711, 0, 7533, 7534, 5, 282, 0, 0, 7534, 7535, 5, 94, 0, 0, 7535, 7536, 3, 1470, 735, 0, 7536, 7615, 1, 0, 0, 0, 7537, 7538, 5, 138, 0, 0, 7538, 7539, 5, 360, 0, 0, 7539, 7540, 3, 558, 279, 0, 7540, 7541, 5, 282, 0, 0, 7541, 7542, 5, 94, 0, 0, 7542, 7543, 3, 1470, 735, 0, 7543, 7615, 1, 0, 0, 0, 7544, 7545, 5, 138, 0, 0, 7545, 7546, 5, 351, 0, 0, 7546, 7547, 3, 1402, 701, 0, 7547, 7548, 5, 282, 0, 0, 7548, 7549, 5, 94, 0, 0, 7549, 7550, 3, 1470, 735, 0, 7550, 7615, 1, 0, 0, 0, 7551, 7552, 5, 138, 0, 0, 7552, 7553, 5, 342, 0, 0, 7553, 7554, 3, 558, 279, 0, 7554, 7555, 5, 282, 0, 0, 7555, 7556, 5, 94, 0, 0, 7556, 7557, 3, 1470, 735, 0, 7557, 7615, 1, 0, 0, 0, 7558, 7559, 5, 138, 0, 0, 7559, 7560, 5, 355, 0, 0, 7560, 7561, 5, 325, 0, 0, 7561, 7562, 5, 185, 0, 0, 7562, 7563, 3, 558, 279, 0, 7563, 7564, 5, 282, 0, 0, 7564, 7565, 5, 94, 0, 0, 7565, 7566, 3, 1470, 735, 0, 7566, 7615, 1, 0, 0, 0, 7567, 7568, 5, 138, 0, 0, 7568, 7569, 5, 355, 0, 0, 7569, 7570, 5, 325, 0, 0, 7570, 7571, 5, 163, 0, 0, 7571, 7572, 3, 558, 279, 0, 7572, 7573, 5, 282, 0, 0, 7573, 7574, 5, 94, 0, 0, 7574, 7575, 3, 1470, 735, 0, 7575, 7615, 1, 0, 0, 0, 7576, 7577, 5, 138, 0, 0, 7577, 7578, 5, 63, 0, 0, 7578, 7579, 5, 174, 0, 0, 7579, 7580, 5, 381, 0, 0, 7580, 7581, 3, 1436, 718, 0, 7581, 7582, 5, 282, 0, 0, 7582, 7583, 5, 94, 0, 0, 7583, 7584, 3, 1470, 735, 0, 7584, 7615, 1, 0, 0, 0, 7585, 7586, 5, 138, 0, 0, 7586, 7587, 5, 331, 0, 0, 7587, 7588, 3, 1436, 718, 0, 7588, 7589, 5, 282, 0, 0, 7589, 7590, 5, 94, 0, 0, 7590, 7591, 3, 1470, 735, 0, 7591, 7615, 1, 0, 0, 0, 7592, 7593, 5, 138, 0, 0, 7593, 7594, 5, 198, 0, 0, 7594, 7595, 5, 357, 0, 0, 7595, 7596, 3, 1436, 718, 0, 7596, 7597, 5, 282, 0, 0, 7597, 7598, 5, 94, 0, 0, 7598, 7599, 3, 1470, 735, 0, 7599, 7615, 1, 0, 0, 0, 7600, 7601, 5, 138, 0, 0, 7601, 7602, 5, 452, 0, 0, 7602, 7603, 3, 1436, 718, 0, 7603, 7604, 5, 282, 0, 0, 7604, 7605, 5, 94, 0, 0, 7605, 7606, 3, 1470, 735, 0, 7606, 7615, 1, 0, 0, 0, 7607, 7608, 5, 138, 0, 0, 7608, 7609, 5, 451, 0, 0, 7609, 7610, 3, 1436, 718, 0, 7610, 7611, 5, 282, 0, 0, 7611, 7612, 5, 94, 0, 0, 7612, 7613, 3, 1470, 735, 0, 7613, 7615, 1, 0, 0, 0, 7614, 7429, 1, 0, 0, 0, 7614, 7436, 1, 0, 0, 0, 7614, 7443, 1, 0, 0, 0, 7614, 7450, 1, 0, 0, 0, 7614, 7457, 1, 0, 0, 0, 7614, 7464, 1, 0, 0, 0, 7614, 7471, 1, 0, 0, 0, 7614, 7481, 1, 0, 0, 0, 7614, 7489, 1, 0, 0, 0, 7614, 7496, 1, 0, 0, 0, 7614, 7506, 1, 0, 0, 0, 7614, 7516, 1, 0, 0, 0, 7614, 7523, 1, 0, 0, 0, 7614, 7530, 1, 0, 0, 0, 7614, 7537, 1, 0, 0, 0, 7614, 7544, 1, 0, 0, 0, 7614, 7551, 1, 0, 0, 0, 7614, 7558, 1, 0, 0, 0, 7614, 7567, 1, 0, 0, 0, 7614, 7576, 1, 0, 0, 0, 7614, 7585, 1, 0, 0, 0, 7614, 7592, 1, 0, 0, 0, 7614, 7600, 1, 0, 0, 0, 7614, 7607, 1, 0, 0, 0, 7615, 787, 1, 0, 0, 0, 7616, 7617, 5, 46, 0, 0, 7617, 7618, 5, 452, 0, 0, 7618, 7620, 3, 1436, 718, 0, 7619, 7621, 3, 790, 395, 0, 7620, 7619, 1, 0, 0, 0, 7620, 7621, 1, 0, 0, 0, 7621, 7623, 1, 0, 0, 0, 7622, 7624, 3, 710, 355, 0, 7623, 7622, 1, 0, 0, 0, 7623, 7624, 1, 0, 0, 0, 7624, 789, 1, 0, 0, 0, 7625, 7626, 3, 792, 396, 0, 7626, 791, 1, 0, 0, 0, 7627, 7628, 5, 62, 0, 0, 7628, 7629, 5, 92, 0, 0, 7629, 7634, 3, 1124, 562, 0, 7630, 7631, 5, 62, 0, 0, 7631, 7632, 5, 30, 0, 0, 7632, 7634, 5, 350, 0, 0, 7633, 7627, 1, 0, 0, 0, 7633, 7630, 1, 0, 0, 0, 7634, 793, 1, 0, 0, 0, 7635, 7636, 5, 138, 0, 0, 7636, 7637, 5, 452, 0, 0, 7637, 7638, 3, 1436, 718, 0, 7638, 7639, 5, 333, 0, 0, 7639, 7640, 3, 496, 248, 0, 7640, 7674, 1, 0, 0, 0, 7641, 7642, 5, 138, 0, 0, 7642, 7643, 5, 452, 0, 0, 7643, 7644, 3, 1436, 718, 0, 7644, 7645, 5, 133, 0, 0, 7645, 7646, 3, 1126, 563, 0, 7646, 7674, 1, 0, 0, 0, 7647, 7648, 5, 138, 0, 0, 7648, 7649, 5, 452, 0, 0, 7649, 7650, 3, 1436, 718, 0, 7650, 7651, 5, 333, 0, 0, 7651, 7652, 3, 1126, 563, 0, 7652, 7674, 1, 0, 0, 0, 7653, 7654, 5, 138, 0, 0, 7654, 7655, 5, 452, 0, 0, 7655, 7656, 3, 1436, 718, 0, 7656, 7657, 5, 191, 0, 0, 7657, 7658, 3, 1126, 563, 0, 7658, 7674, 1, 0, 0, 0, 7659, 7660, 5, 138, 0, 0, 7660, 7661, 5, 452, 0, 0, 7661, 7662, 3, 1436, 718, 0, 7662, 7663, 5, 282, 0, 0, 7663, 7664, 5, 94, 0, 0, 7664, 7665, 3, 1470, 735, 0, 7665, 7674, 1, 0, 0, 0, 7666, 7667, 5, 138, 0, 0, 7667, 7668, 5, 452, 0, 0, 7668, 7669, 3, 1436, 718, 0, 7669, 7670, 5, 309, 0, 0, 7670, 7671, 5, 94, 0, 0, 7671, 7672, 3, 1436, 718, 0, 7672, 7674, 1, 0, 0, 0, 7673, 7635, 1, 0, 0, 0, 7673, 7641, 1, 0, 0, 0, 7673, 7647, 1, 0, 0, 0, 7673, 7653, 1, 0, 0, 0, 7673, 7659, 1, 0, 0, 0, 7673, 7666, 1, 0, 0, 0, 7674, 795, 1, 0, 0, 0, 7675, 7676, 5, 46, 0, 0, 7676, 7677, 5, 451, 0, 0, 7677, 7678, 3, 1436, 718, 0, 7678, 7679, 5, 164, 0, 0, 7679, 7680, 3, 1458, 729, 0, 7680, 7681, 5, 452, 0, 0, 7681, 7683, 3, 798, 399, 0, 7682, 7684, 3, 710, 355, 0, 7683, 7682, 1, 0, 0, 0, 7683, 7684, 1, 0, 0, 0, 7684, 797, 1, 0, 0, 0, 7685, 7690, 3, 800, 400, 0, 7686, 7687, 5, 6, 0, 0, 7687, 7689, 3, 800, 400, 0, 7688, 7686, 1, 0, 0, 0, 7689, 7692, 1, 0, 0, 0, 7690, 7688, 1, 0, 0, 0, 7690, 7691, 1, 0, 0, 0, 7691, 799, 1, 0, 0, 0, 7692, 7690, 1, 0, 0, 0, 7693, 7694, 3, 1490, 745, 0, 7694, 801, 1, 0, 0, 0, 7695, 7696, 5, 138, 0, 0, 7696, 7697, 5, 451, 0, 0, 7697, 7698, 3, 1436, 718, 0, 7698, 7699, 5, 333, 0, 0, 7699, 7700, 3, 496, 248, 0, 7700, 7774, 1, 0, 0, 0, 7701, 7702, 5, 138, 0, 0, 7702, 7703, 5, 451, 0, 0, 7703, 7704, 3, 1436, 718, 0, 7704, 7705, 5, 164, 0, 0, 7705, 7706, 3, 1458, 729, 0, 7706, 7774, 1, 0, 0, 0, 7707, 7708, 5, 138, 0, 0, 7708, 7709, 5, 451, 0, 0, 7709, 7710, 3, 1436, 718, 0, 7710, 7711, 5, 305, 0, 0, 7711, 7713, 5, 452, 0, 0, 7712, 7714, 3, 710, 355, 0, 7713, 7712, 1, 0, 0, 0, 7713, 7714, 1, 0, 0, 0, 7714, 7774, 1, 0, 0, 0, 7715, 7716, 5, 138, 0, 0, 7716, 7717, 5, 451, 0, 0, 7717, 7718, 3, 1436, 718, 0, 7718, 7719, 5, 333, 0, 0, 7719, 7720, 5, 452, 0, 0, 7720, 7722, 3, 798, 399, 0, 7721, 7723, 3, 710, 355, 0, 7722, 7721, 1, 0, 0, 0, 7722, 7723, 1, 0, 0, 0, 7723, 7774, 1, 0, 0, 0, 7724, 7725, 5, 138, 0, 0, 7725, 7726, 5, 451, 0, 0, 7726, 7727, 3, 1436, 718, 0, 7727, 7728, 5, 133, 0, 0, 7728, 7729, 5, 452, 0, 0, 7729, 7731, 3, 798, 399, 0, 7730, 7732, 3, 710, 355, 0, 7731, 7730, 1, 0, 0, 0, 7731, 7732, 1, 0, 0, 0, 7732, 7774, 1, 0, 0, 0, 7733, 7734, 5, 138, 0, 0, 7734, 7735, 5, 451, 0, 0, 7735, 7736, 3, 1436, 718, 0, 7736, 7737, 5, 191, 0, 0, 7737, 7738, 5, 452, 0, 0, 7738, 7740, 3, 798, 399, 0, 7739, 7741, 3, 710, 355, 0, 7740, 7739, 1, 0, 0, 0, 7740, 7741, 1, 0, 0, 0, 7741, 7774, 1, 0, 0, 0, 7742, 7743, 5, 138, 0, 0, 7743, 7744, 5, 451, 0, 0, 7744, 7745, 3, 1436, 718, 0, 7745, 7746, 5, 193, 0, 0, 7746, 7774, 1, 0, 0, 0, 7747, 7748, 5, 138, 0, 0, 7748, 7749, 5, 451, 0, 0, 7749, 7750, 3, 1436, 718, 0, 7750, 7751, 5, 186, 0, 0, 7751, 7774, 1, 0, 0, 0, 7752, 7753, 5, 138, 0, 0, 7753, 7754, 5, 451, 0, 0, 7754, 7755, 3, 1436, 718, 0, 7755, 7756, 5, 333, 0, 0, 7756, 7757, 3, 496, 248, 0, 7757, 7774, 1, 0, 0, 0, 7758, 7759, 5, 138, 0, 0, 7759, 7760, 5, 451, 0, 0, 7760, 7761, 3, 1436, 718, 0, 7761, 7762, 5, 465, 0, 0, 7762, 7763, 5, 2, 0, 0, 7763, 7764, 3, 508, 254, 0, 7764, 7765, 5, 3, 0, 0, 7765, 7774, 1, 0, 0, 0, 7766, 7767, 5, 138, 0, 0, 7767, 7768, 5, 451, 0, 0, 7768, 7769, 3, 1436, 718, 0, 7769, 7770, 5, 282, 0, 0, 7770, 7771, 5, 94, 0, 0, 7771, 7772, 3, 1470, 735, 0, 7772, 7774, 1, 0, 0, 0, 7773, 7695, 1, 0, 0, 0, 7773, 7701, 1, 0, 0, 0, 7773, 7707, 1, 0, 0, 0, 7773, 7715, 1, 0, 0, 0, 7773, 7724, 1, 0, 0, 0, 7773, 7733, 1, 0, 0, 0, 7773, 7742, 1, 0, 0, 0, 7773, 7747, 1, 0, 0, 0, 7773, 7752, 1, 0, 0, 0, 7773, 7758, 1, 0, 0, 0, 7773, 7766, 1, 0, 0, 0, 7774, 803, 1, 0, 0, 0, 7775, 7777, 5, 46, 0, 0, 7776, 7778, 3, 658, 329, 0, 7777, 7776, 1, 0, 0, 0, 7777, 7778, 1, 0, 0, 0, 7778, 7779, 1, 0, 0, 0, 7779, 7780, 5, 321, 0, 0, 7780, 7781, 3, 1436, 718, 0, 7781, 7782, 5, 36, 0, 0, 7782, 7783, 5, 80, 0, 0, 7783, 7784, 3, 814, 407, 0, 7784, 7785, 5, 94, 0, 0, 7785, 7787, 3, 1412, 706, 0, 7786, 7788, 3, 1144, 572, 0, 7787, 7786, 1, 0, 0, 0, 7787, 7788, 1, 0, 0, 0, 7788, 7789, 1, 0, 0, 0, 7789, 7791, 5, 57, 0, 0, 7790, 7792, 3, 816, 408, 0, 7791, 7790, 1, 0, 0, 0, 7791, 7792, 1, 0, 0, 0, 7792, 7793, 1, 0, 0, 0, 7793, 7794, 3, 806, 403, 0, 7794, 805, 1, 0, 0, 0, 7795, 7802, 5, 270, 0, 0, 7796, 7802, 3, 810, 405, 0, 7797, 7798, 5, 2, 0, 0, 7798, 7799, 3, 808, 404, 0, 7799, 7800, 5, 3, 0, 0, 7800, 7802, 1, 0, 0, 0, 7801, 7795, 1, 0, 0, 0, 7801, 7796, 1, 0, 0, 0, 7801, 7797, 1, 0, 0, 0, 7802, 807, 1, 0, 0, 0, 7803, 7805, 3, 812, 406, 0, 7804, 7803, 1, 0, 0, 0, 7804, 7805, 1, 0, 0, 0, 7805, 7812, 1, 0, 0, 0, 7806, 7808, 5, 7, 0, 0, 7807, 7809, 3, 812, 406, 0, 7808, 7807, 1, 0, 0, 0, 7808, 7809, 1, 0, 0, 0, 7809, 7811, 1, 0, 0, 0, 7810, 7806, 1, 0, 0, 0, 7811, 7814, 1, 0, 0, 0, 7812, 7810, 1, 0, 0, 0, 7812, 7813, 1, 0, 0, 0, 7813, 809, 1, 0, 0, 0, 7814, 7812, 1, 0, 0, 0, 7815, 7821, 3, 1000, 500, 0, 7816, 7821, 3, 950, 475, 0, 7817, 7821, 3, 982, 491, 0, 7818, 7821, 3, 968, 484, 0, 7819, 7821, 3, 818, 409, 0, 7820, 7815, 1, 0, 0, 0, 7820, 7816, 1, 0, 0, 0, 7820, 7817, 1, 0, 0, 0, 7820, 7818, 1, 0, 0, 0, 7820, 7819, 1, 0, 0, 0, 7821, 811, 1, 0, 0, 0, 7822, 7823, 3, 810, 405, 0, 7823, 813, 1, 0, 0, 0, 7824, 7825, 7, 47, 0, 0, 7825, 815, 1, 0, 0, 0, 7826, 7827, 7, 48, 0, 0, 7827, 817, 1, 0, 0, 0, 7828, 7829, 5, 271, 0, 0, 7829, 7831, 3, 1474, 737, 0, 7830, 7832, 3, 820, 410, 0, 7831, 7830, 1, 0, 0, 0, 7831, 7832, 1, 0, 0, 0, 7832, 819, 1, 0, 0, 0, 7833, 7834, 5, 6, 0, 0, 7834, 7835, 3, 1458, 729, 0, 7835, 821, 1, 0, 0, 0, 7836, 7837, 5, 252, 0, 0, 7837, 7838, 3, 1474, 737, 0, 7838, 823, 1, 0, 0, 0, 7839, 7840, 5, 366, 0, 0, 7840, 7844, 3, 1474, 737, 0, 7841, 7842, 5, 366, 0, 0, 7842, 7844, 5, 9, 0, 0, 7843, 7839, 1, 0, 0, 0, 7843, 7841, 1, 0, 0, 0, 7844, 825, 1, 0, 0, 0, 7845, 7847, 5, 129, 0, 0, 7846, 7848, 3, 828, 414, 0, 7847, 7846, 1, 0, 0, 0, 7847, 7848, 1, 0, 0, 0, 7848, 7850, 1, 0, 0, 0, 7849, 7851, 3, 836, 418, 0, 7850, 7849, 1, 0, 0, 0, 7850, 7851, 1, 0, 0, 0, 7851, 7911, 1, 0, 0, 0, 7852, 7854, 5, 146, 0, 0, 7853, 7855, 3, 828, 414, 0, 7854, 7853, 1, 0, 0, 0, 7854, 7855, 1, 0, 0, 0, 7855, 7857, 1, 0, 0, 0, 7856, 7858, 3, 834, 417, 0, 7857, 7856, 1, 0, 0, 0, 7857, 7858, 1, 0, 0, 0, 7858, 7911, 1, 0, 0, 0, 7859, 7860, 5, 340, 0, 0, 7860, 7862, 5, 356, 0, 0, 7861, 7863, 3, 834, 417, 0, 7862, 7861, 1, 0, 0, 0, 7862, 7863, 1, 0, 0, 0, 7863, 7911, 1, 0, 0, 0, 7864, 7866, 5, 454, 0, 0, 7865, 7867, 3, 828, 414, 0, 7866, 7865, 1, 0, 0, 0, 7866, 7867, 1, 0, 0, 0, 7867, 7869, 1, 0, 0, 0, 7868, 7870, 3, 836, 418, 0, 7869, 7868, 1, 0, 0, 0, 7869, 7870, 1, 0, 0, 0, 7870, 7911, 1, 0, 0, 0, 7871, 7872, 5, 322, 0, 0, 7872, 7911, 3, 1474, 737, 0, 7873, 7875, 5, 308, 0, 0, 7874, 7876, 5, 322, 0, 0, 7875, 7874, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7877, 1, 0, 0, 0, 7877, 7911, 3, 1474, 737, 0, 7878, 7879, 5, 290, 0, 0, 7879, 7880, 5, 356, 0, 0, 7880, 7911, 3, 1458, 729, 0, 7881, 7882, 5, 161, 0, 0, 7882, 7883, 5, 291, 0, 0, 7883, 7911, 3, 1458, 729, 0, 7884, 7886, 5, 161, 0, 0, 7885, 7887, 3, 828, 414, 0, 7886, 7885, 1, 0, 0, 0, 7886, 7887, 1, 0, 0, 0, 7887, 7889, 1, 0, 0, 0, 7888, 7890, 3, 836, 418, 0, 7889, 7888, 1, 0, 0, 0, 7889, 7890, 1, 0, 0, 0, 7890, 7911, 1, 0, 0, 0, 7891, 7892, 5, 319, 0, 0, 7892, 7893, 5, 291, 0, 0, 7893, 7911, 3, 1458, 729, 0, 7894, 7896, 5, 319, 0, 0, 7895, 7897, 3, 828, 414, 0, 7896, 7895, 1, 0, 0, 0, 7896, 7897, 1, 0, 0, 0, 7897, 7898, 1, 0, 0, 0, 7898, 7900, 5, 94, 0, 0, 7899, 7901, 5, 322, 0, 0, 7900, 7899, 1, 0, 0, 0, 7900, 7901, 1, 0, 0, 0, 7901, 7902, 1, 0, 0, 0, 7902, 7911, 3, 1474, 737, 0, 7903, 7905, 5, 319, 0, 0, 7904, 7906, 3, 828, 414, 0, 7905, 7904, 1, 0, 0, 0, 7905, 7906, 1, 0, 0, 0, 7906, 7908, 1, 0, 0, 0, 7907, 7909, 3, 836, 418, 0, 7908, 7907, 1, 0, 0, 0, 7908, 7909, 1, 0, 0, 0, 7909, 7911, 1, 0, 0, 0, 7910, 7845, 1, 0, 0, 0, 7910, 7852, 1, 0, 0, 0, 7910, 7859, 1, 0, 0, 0, 7910, 7864, 1, 0, 0, 0, 7910, 7871, 1, 0, 0, 0, 7910, 7873, 1, 0, 0, 0, 7910, 7878, 1, 0, 0, 0, 7910, 7881, 1, 0, 0, 0, 7910, 7884, 1, 0, 0, 0, 7910, 7891, 1, 0, 0, 0, 7910, 7894, 1, 0, 0, 0, 7910, 7903, 1, 0, 0, 0, 7911, 827, 1, 0, 0, 0, 7912, 7913, 7, 49, 0, 0, 7913, 829, 1, 0, 0, 0, 7914, 7915, 5, 244, 0, 0, 7915, 7916, 5, 251, 0, 0, 7916, 7925, 3, 68, 34, 0, 7917, 7918, 5, 300, 0, 0, 7918, 7925, 5, 81, 0, 0, 7919, 7920, 5, 300, 0, 0, 7920, 7925, 5, 382, 0, 0, 7921, 7925, 5, 54, 0, 0, 7922, 7923, 5, 77, 0, 0, 7923, 7925, 5, 54, 0, 0, 7924, 7914, 1, 0, 0, 0, 7924, 7917, 1, 0, 0, 0, 7924, 7919, 1, 0, 0, 0, 7924, 7921, 1, 0, 0, 0, 7924, 7922, 1, 0, 0, 0, 7925, 831, 1, 0, 0, 0, 7926, 7933, 3, 830, 415, 0, 7927, 7929, 5, 6, 0, 0, 7928, 7927, 1, 0, 0, 0, 7928, 7929, 1, 0, 0, 0, 7929, 7930, 1, 0, 0, 0, 7930, 7932, 3, 830, 415, 0, 7931, 7928, 1, 0, 0, 0, 7932, 7935, 1, 0, 0, 0, 7933, 7931, 1, 0, 0, 0, 7933, 7934, 1, 0, 0, 0, 7934, 833, 1, 0, 0, 0, 7935, 7933, 1, 0, 0, 0, 7936, 7937, 3, 832, 416, 0, 7937, 835, 1, 0, 0, 0, 7938, 7940, 5, 33, 0, 0, 7939, 7941, 5, 269, 0, 0, 7940, 7939, 1, 0, 0, 0, 7940, 7941, 1, 0, 0, 0, 7941, 7942, 1, 0, 0, 0, 7942, 7943, 5, 153, 0, 0, 7943, 837, 1, 0, 0, 0, 7944, 7947, 5, 46, 0, 0, 7945, 7946, 5, 82, 0, 0, 7946, 7948, 5, 311, 0, 0, 7947, 7945, 1, 0, 0, 0, 7947, 7948, 1, 0, 0, 0, 7948, 7950, 1, 0, 0, 0, 7949, 7951, 3, 190, 95, 0, 7950, 7949, 1, 0, 0, 0, 7950, 7951, 1, 0, 0, 0, 7951, 7969, 1, 0, 0, 0, 7952, 7953, 5, 376, 0, 0, 7953, 7955, 3, 1408, 704, 0, 7954, 7956, 3, 242, 121, 0, 7955, 7954, 1, 0, 0, 0, 7955, 7956, 1, 0, 0, 0, 7956, 7958, 1, 0, 0, 0, 7957, 7959, 3, 134, 67, 0, 7958, 7957, 1, 0, 0, 0, 7958, 7959, 1, 0, 0, 0, 7959, 7970, 1, 0, 0, 0, 7960, 7961, 5, 303, 0, 0, 7961, 7962, 5, 376, 0, 0, 7962, 7963, 3, 1408, 704, 0, 7963, 7964, 5, 2, 0, 0, 7964, 7965, 3, 244, 122, 0, 7965, 7967, 5, 3, 0, 0, 7966, 7968, 3, 134, 67, 0, 7967, 7966, 1, 0, 0, 0, 7967, 7968, 1, 0, 0, 0, 7968, 7970, 1, 0, 0, 0, 7969, 7952, 1, 0, 0, 0, 7969, 7960, 1, 0, 0, 0, 7970, 7971, 1, 0, 0, 0, 7971, 7972, 5, 36, 0, 0, 7972, 7974, 3, 1000, 500, 0, 7973, 7975, 3, 840, 420, 0, 7974, 7973, 1, 0, 0, 0, 7974, 7975, 1, 0, 0, 0, 7975, 839, 1, 0, 0, 0, 7976, 7978, 5, 105, 0, 0, 7977, 7979, 7, 50, 0, 0, 7978, 7977, 1, 0, 0, 0, 7978, 7979, 1, 0, 0, 0, 7979, 7980, 1, 0, 0, 0, 7980, 7981, 5, 42, 0, 0, 7981, 7982, 5, 279, 0, 0, 7982, 841, 1, 0, 0, 0, 7983, 7984, 5, 253, 0, 0, 7984, 7985, 3, 1440, 720, 0, 7985, 843, 1, 0, 0, 0, 7986, 7987, 5, 46, 0, 0, 7987, 7988, 5, 175, 0, 0, 7988, 7990, 3, 1418, 709, 0, 7989, 7991, 3, 14, 7, 0, 7990, 7989, 1, 0, 0, 0, 7990, 7991, 1, 0, 0, 0, 7991, 7993, 1, 0, 0, 0, 7992, 7994, 3, 846, 423, 0, 7993, 7992, 1, 0, 0, 0, 7993, 7994, 1, 0, 0, 0, 7994, 845, 1, 0, 0, 0, 7995, 7996, 3, 848, 424, 0, 7996, 847, 1, 0, 0, 0, 7997, 7999, 3, 850, 425, 0, 7998, 7997, 1, 0, 0, 0, 7999, 8000, 1, 0, 0, 0, 8000, 7998, 1, 0, 0, 0, 8000, 8001, 1, 0, 0, 0, 8001, 849, 1, 0, 0, 0, 8002, 8004, 3, 852, 426, 0, 8003, 8005, 3, 854, 427, 0, 8004, 8003, 1, 0, 0, 0, 8004, 8005, 1, 0, 0, 0, 8005, 8009, 1, 0, 0, 0, 8006, 8010, 3, 1464, 732, 0, 8007, 8010, 3, 72, 36, 0, 8008, 8010, 5, 53, 0, 0, 8009, 8006, 1, 0, 0, 0, 8009, 8007, 1, 0, 0, 0, 8009, 8008, 1, 0, 0, 0, 8010, 851, 1, 0, 0, 0, 8011, 8012, 5, 164, 0, 0, 8012, 8020, 5, 74, 0, 0, 8013, 8020, 5, 194, 0, 0, 8014, 8020, 5, 255, 0, 0, 8015, 8020, 5, 282, 0, 0, 8016, 8020, 5, 351, 0, 0, 8017, 8020, 5, 353, 0, 0, 8018, 8020, 3, 1492, 746, 0, 8019, 8011, 1, 0, 0, 0, 8019, 8013, 1, 0, 0, 0, 8019, 8014, 1, 0, 0, 0, 8019, 8015, 1, 0, 0, 0, 8019, 8016, 1, 0, 0, 0, 8019, 8017, 1, 0, 0, 0, 8019, 8018, 1, 0, 0, 0, 8020, 853, 1, 0, 0, 0, 8021, 8022, 5, 10, 0, 0, 8022, 855, 1, 0, 0, 0, 8023, 8024, 5, 138, 0, 0, 8024, 8025, 5, 175, 0, 0, 8025, 8037, 3, 1420, 710, 0, 8026, 8027, 5, 333, 0, 0, 8027, 8028, 5, 351, 0, 0, 8028, 8030, 3, 1400, 700, 0, 8029, 8026, 1, 0, 0, 0, 8029, 8030, 1, 0, 0, 0, 8030, 8038, 1, 0, 0, 0, 8031, 8033, 5, 105, 0, 0, 8032, 8031, 1, 0, 0, 0, 8032, 8033, 1, 0, 0, 0, 8033, 8034, 1, 0, 0, 0, 8034, 8036, 3, 846, 423, 0, 8035, 8032, 1, 0, 0, 0, 8035, 8036, 1, 0, 0, 0, 8036, 8038, 1, 0, 0, 0, 8037, 8029, 1, 0, 0, 0, 8037, 8035, 1, 0, 0, 0, 8038, 857, 1, 0, 0, 0, 8039, 8040, 5, 138, 0, 0, 8040, 8041, 5, 175, 0, 0, 8041, 8043, 3, 1420, 710, 0, 8042, 8044, 3, 88, 44, 0, 8043, 8042, 1, 0, 0, 0, 8043, 8044, 1, 0, 0, 0, 8044, 859, 1, 0, 0, 0, 8045, 8050, 3, 862, 431, 0, 8046, 8047, 5, 6, 0, 0, 8047, 8049, 3, 862, 431, 0, 8048, 8046, 1, 0, 0, 0, 8049, 8052, 1, 0, 0, 0, 8050, 8048, 1, 0, 0, 0, 8050, 8051, 1, 0, 0, 0, 8051, 861, 1, 0, 0, 0, 8052, 8050, 1, 0, 0, 0, 8053, 8054, 5, 209, 0, 0, 8054, 863, 1, 0, 0, 0, 8055, 8056, 5, 138, 0, 0, 8056, 8057, 5, 108, 0, 0, 8057, 8058, 3, 558, 279, 0, 8058, 8059, 5, 305, 0, 0, 8059, 8060, 5, 375, 0, 0, 8060, 865, 1, 0, 0, 0, 8061, 8062, 5, 138, 0, 0, 8062, 8063, 5, 349, 0, 0, 8063, 8064, 7, 22, 0, 0, 8064, 8065, 3, 58, 29, 0, 8065, 867, 1, 0, 0, 0, 8066, 8067, 5, 46, 0, 0, 8067, 8068, 5, 189, 0, 0, 8068, 8070, 3, 558, 279, 0, 8069, 8071, 3, 872, 436, 0, 8070, 8069, 1, 0, 0, 0, 8070, 8071, 1, 0, 0, 0, 8071, 8072, 1, 0, 0, 0, 8072, 8073, 3, 1168, 584, 0, 8073, 8074, 3, 214, 107, 0, 8074, 869, 1, 0, 0, 0, 8075, 8076, 5, 138, 0, 0, 8076, 8077, 5, 189, 0, 0, 8077, 8099, 3, 558, 279, 0, 8078, 8100, 3, 122, 61, 0, 8079, 8080, 5, 191, 0, 0, 8080, 8081, 5, 77, 0, 0, 8081, 8100, 5, 78, 0, 0, 8082, 8083, 5, 333, 0, 0, 8083, 8084, 5, 77, 0, 0, 8084, 8100, 5, 78, 0, 0, 8085, 8086, 5, 133, 0, 0, 8086, 8100, 3, 234, 117, 0, 8087, 8088, 5, 191, 0, 0, 8088, 8090, 5, 45, 0, 0, 8089, 8091, 3, 748, 374, 0, 8090, 8089, 1, 0, 0, 0, 8090, 8091, 1, 0, 0, 0, 8091, 8092, 1, 0, 0, 0, 8092, 8094, 3, 1436, 718, 0, 8093, 8095, 3, 124, 62, 0, 8094, 8093, 1, 0, 0, 0, 8094, 8095, 1, 0, 0, 0, 8095, 8100, 1, 0, 0, 0, 8096, 8097, 5, 372, 0, 0, 8097, 8098, 5, 45, 0, 0, 8098, 8100, 3, 1436, 718, 0, 8099, 8078, 1, 0, 0, 0, 8099, 8079, 1, 0, 0, 0, 8099, 8082, 1, 0, 0, 0, 8099, 8085, 1, 0, 0, 0, 8099, 8087, 1, 0, 0, 0, 8099, 8096, 1, 0, 0, 0, 8100, 871, 1, 0, 0, 0, 8101, 8102, 5, 36, 0, 0, 8102, 873, 1, 0, 0, 0, 8103, 8104, 5, 138, 0, 0, 8104, 8105, 5, 355, 0, 0, 8105, 8106, 5, 325, 0, 0, 8106, 8107, 5, 185, 0, 0, 8107, 8108, 3, 558, 279, 0, 8108, 8109, 3, 496, 248, 0, 8109, 875, 1, 0, 0, 0, 8110, 8111, 5, 138, 0, 0, 8111, 8112, 5, 355, 0, 0, 8112, 8113, 5, 325, 0, 0, 8113, 8114, 5, 163, 0, 0, 8114, 8115, 3, 558, 279, 0, 8115, 8116, 5, 133, 0, 0, 8116, 8117, 5, 257, 0, 0, 8117, 8118, 5, 62, 0, 0, 8118, 8119, 3, 1416, 708, 0, 8119, 8120, 3, 878, 439, 0, 8120, 8121, 3, 552, 276, 0, 8121, 8174, 1, 0, 0, 0, 8122, 8123, 5, 138, 0, 0, 8123, 8124, 5, 355, 0, 0, 8124, 8125, 5, 325, 0, 0, 8125, 8126, 5, 163, 0, 0, 8126, 8127, 3, 558, 279, 0, 8127, 8128, 5, 138, 0, 0, 8128, 8129, 5, 257, 0, 0, 8129, 8130, 5, 62, 0, 0, 8130, 8131, 3, 1416, 708, 0, 8131, 8132, 3, 878, 439, 0, 8132, 8133, 3, 552, 276, 0, 8133, 8174, 1, 0, 0, 0, 8134, 8135, 5, 138, 0, 0, 8135, 8136, 5, 355, 0, 0, 8136, 8137, 5, 325, 0, 0, 8137, 8138, 5, 163, 0, 0, 8138, 8139, 3, 558, 279, 0, 8139, 8140, 5, 138, 0, 0, 8140, 8141, 5, 257, 0, 0, 8141, 8142, 5, 311, 0, 0, 8142, 8143, 3, 558, 279, 0, 8143, 8144, 3, 878, 439, 0, 8144, 8145, 3, 558, 279, 0, 8145, 8174, 1, 0, 0, 0, 8146, 8147, 5, 138, 0, 0, 8147, 8148, 5, 355, 0, 0, 8148, 8149, 5, 325, 0, 0, 8149, 8150, 5, 163, 0, 0, 8150, 8151, 3, 558, 279, 0, 8151, 8152, 5, 138, 0, 0, 8152, 8153, 5, 257, 0, 0, 8153, 8154, 5, 62, 0, 0, 8154, 8155, 3, 1416, 708, 0, 8155, 8156, 5, 311, 0, 0, 8156, 8157, 3, 558, 279, 0, 8157, 8158, 3, 878, 439, 0, 8158, 8159, 3, 558, 279, 0, 8159, 8174, 1, 0, 0, 0, 8160, 8161, 5, 138, 0, 0, 8161, 8162, 5, 355, 0, 0, 8162, 8163, 5, 325, 0, 0, 8163, 8164, 5, 163, 0, 0, 8164, 8165, 3, 558, 279, 0, 8165, 8166, 5, 191, 0, 0, 8166, 8168, 5, 257, 0, 0, 8167, 8169, 3, 748, 374, 0, 8168, 8167, 1, 0, 0, 0, 8168, 8169, 1, 0, 0, 0, 8169, 8170, 1, 0, 0, 0, 8170, 8171, 5, 62, 0, 0, 8171, 8172, 3, 1416, 708, 0, 8172, 8174, 1, 0, 0, 0, 8173, 8110, 1, 0, 0, 0, 8173, 8122, 1, 0, 0, 0, 8173, 8134, 1, 0, 0, 0, 8173, 8146, 1, 0, 0, 0, 8173, 8160, 1, 0, 0, 0, 8174, 877, 1, 0, 0, 0, 8175, 8176, 5, 105, 0, 0, 8176, 879, 1, 0, 0, 0, 8177, 8179, 5, 46, 0, 0, 8178, 8180, 3, 524, 262, 0, 8179, 8178, 1, 0, 0, 0, 8179, 8180, 1, 0, 0, 0, 8180, 8181, 1, 0, 0, 0, 8181, 8182, 5, 168, 0, 0, 8182, 8183, 3, 558, 279, 0, 8183, 8184, 5, 62, 0, 0, 8184, 8185, 3, 1458, 729, 0, 8185, 8186, 5, 94, 0, 0, 8186, 8187, 3, 1458, 729, 0, 8187, 8188, 5, 64, 0, 0, 8188, 8189, 3, 558, 279, 0, 8189, 881, 1, 0, 0, 0, 8190, 8192, 5, 158, 0, 0, 8191, 8193, 3, 908, 454, 0, 8192, 8191, 1, 0, 0, 0, 8192, 8193, 1, 0, 0, 0, 8193, 8194, 1, 0, 0, 0, 8194, 8196, 3, 1406, 703, 0, 8195, 8197, 3, 886, 443, 0, 8196, 8195, 1, 0, 0, 0, 8196, 8197, 1, 0, 0, 0, 8197, 8209, 1, 0, 0, 0, 8198, 8200, 5, 158, 0, 0, 8199, 8201, 3, 908, 454, 0, 8200, 8199, 1, 0, 0, 0, 8200, 8201, 1, 0, 0, 0, 8201, 8209, 1, 0, 0, 0, 8202, 8203, 5, 158, 0, 0, 8203, 8204, 3, 884, 442, 0, 8204, 8206, 3, 1406, 703, 0, 8205, 8207, 3, 886, 443, 0, 8206, 8205, 1, 0, 0, 0, 8206, 8207, 1, 0, 0, 0, 8207, 8209, 1, 0, 0, 0, 8208, 8190, 1, 0, 0, 0, 8208, 8198, 1, 0, 0, 0, 8208, 8202, 1, 0, 0, 0, 8209, 883, 1, 0, 0, 0, 8210, 8211, 5, 2, 0, 0, 8211, 8216, 3, 908, 454, 0, 8212, 8213, 5, 6, 0, 0, 8213, 8215, 3, 908, 454, 0, 8214, 8212, 1, 0, 0, 0, 8215, 8218, 1, 0, 0, 0, 8216, 8214, 1, 0, 0, 0, 8216, 8217, 1, 0, 0, 0, 8217, 8219, 1, 0, 0, 0, 8218, 8216, 1, 0, 0, 0, 8219, 8220, 5, 3, 0, 0, 8220, 885, 1, 0, 0, 0, 8221, 8222, 5, 100, 0, 0, 8222, 8223, 3, 1436, 718, 0, 8223, 887, 1, 0, 0, 0, 8224, 8226, 5, 370, 0, 0, 8225, 8227, 3, 914, 457, 0, 8226, 8225, 1, 0, 0, 0, 8226, 8227, 1, 0, 0, 0, 8227, 8229, 1, 0, 0, 0, 8228, 8230, 3, 916, 458, 0, 8229, 8228, 1, 0, 0, 0, 8229, 8230, 1, 0, 0, 0, 8230, 8232, 1, 0, 0, 0, 8231, 8233, 3, 908, 454, 0, 8232, 8231, 1, 0, 0, 0, 8232, 8233, 1, 0, 0, 0, 8233, 8235, 1, 0, 0, 0, 8234, 8236, 3, 902, 451, 0, 8235, 8234, 1, 0, 0, 0, 8235, 8236, 1, 0, 0, 0, 8236, 8238, 1, 0, 0, 0, 8237, 8239, 3, 924, 462, 0, 8238, 8237, 1, 0, 0, 0, 8238, 8239, 1, 0, 0, 0, 8239, 8251, 1, 0, 0, 0, 8240, 8245, 5, 370, 0, 0, 8241, 8242, 5, 2, 0, 0, 8242, 8243, 3, 892, 446, 0, 8243, 8244, 5, 3, 0, 0, 8244, 8246, 1, 0, 0, 0, 8245, 8241, 1, 0, 0, 0, 8245, 8246, 1, 0, 0, 0, 8246, 8248, 1, 0, 0, 0, 8247, 8249, 3, 924, 462, 0, 8248, 8247, 1, 0, 0, 0, 8248, 8249, 1, 0, 0, 0, 8249, 8251, 1, 0, 0, 0, 8250, 8224, 1, 0, 0, 0, 8250, 8240, 1, 0, 0, 0, 8251, 889, 1, 0, 0, 0, 8252, 8254, 3, 894, 447, 0, 8253, 8255, 3, 908, 454, 0, 8254, 8253, 1, 0, 0, 0, 8254, 8255, 1, 0, 0, 0, 8255, 8257, 1, 0, 0, 0, 8256, 8258, 3, 924, 462, 0, 8257, 8256, 1, 0, 0, 0, 8257, 8258, 1, 0, 0, 0, 8258, 8267, 1, 0, 0, 0, 8259, 8260, 3, 894, 447, 0, 8260, 8261, 5, 2, 0, 0, 8261, 8262, 3, 904, 452, 0, 8262, 8264, 5, 3, 0, 0, 8263, 8265, 3, 924, 462, 0, 8264, 8263, 1, 0, 0, 0, 8264, 8265, 1, 0, 0, 0, 8265, 8267, 1, 0, 0, 0, 8266, 8252, 1, 0, 0, 0, 8266, 8259, 1, 0, 0, 0, 8267, 891, 1, 0, 0, 0, 8268, 8273, 3, 896, 448, 0, 8269, 8270, 5, 6, 0, 0, 8270, 8272, 3, 896, 448, 0, 8271, 8269, 1, 0, 0, 0, 8272, 8275, 1, 0, 0, 0, 8273, 8271, 1, 0, 0, 0, 8273, 8274, 1, 0, 0, 0, 8274, 893, 1, 0, 0, 0, 8275, 8273, 1, 0, 0, 0, 8276, 8277, 7, 51, 0, 0, 8277, 895, 1, 0, 0, 0, 8278, 8280, 3, 898, 449, 0, 8279, 8281, 3, 900, 450, 0, 8280, 8279, 1, 0, 0, 0, 8280, 8281, 1, 0, 0, 0, 8281, 897, 1, 0, 0, 0, 8282, 8285, 3, 1488, 744, 0, 8283, 8285, 3, 894, 447, 0, 8284, 8282, 1, 0, 0, 0, 8284, 8283, 1, 0, 0, 0, 8285, 899, 1, 0, 0, 0, 8286, 8289, 3, 72, 36, 0, 8287, 8289, 3, 322, 161, 0, 8288, 8286, 1, 0, 0, 0, 8288, 8287, 1, 0, 0, 0, 8289, 901, 1, 0, 0, 0, 8290, 8291, 3, 894, 447, 0, 8291, 903, 1, 0, 0, 0, 8292, 8297, 3, 906, 453, 0, 8293, 8294, 5, 6, 0, 0, 8294, 8296, 3, 906, 453, 0, 8295, 8293, 1, 0, 0, 0, 8296, 8299, 1, 0, 0, 0, 8297, 8295, 1, 0, 0, 0, 8297, 8298, 1, 0, 0, 0, 8298, 905, 1, 0, 0, 0, 8299, 8297, 1, 0, 0, 0, 8300, 8304, 3, 908, 454, 0, 8301, 8304, 3, 910, 455, 0, 8302, 8304, 3, 912, 456, 0, 8303, 8300, 1, 0, 0, 0, 8303, 8301, 1, 0, 0, 0, 8303, 8302, 1, 0, 0, 0, 8304, 907, 1, 0, 0, 0, 8305, 8307, 5, 128, 0, 0, 8306, 8308, 7, 52, 0, 0, 8307, 8306, 1, 0, 0, 0, 8307, 8308, 1, 0, 0, 0, 8308, 909, 1, 0, 0, 0, 8309, 8311, 5, 547, 0, 0, 8310, 8312, 7, 52, 0, 0, 8311, 8310, 1, 0, 0, 0, 8311, 8312, 1, 0, 0, 0, 8312, 911, 1, 0, 0, 0, 8313, 8316, 5, 548, 0, 0, 8314, 8317, 3, 322, 161, 0, 8315, 8317, 3, 1458, 729, 0, 8316, 8314, 1, 0, 0, 0, 8316, 8315, 1, 0, 0, 0, 8317, 913, 1, 0, 0, 0, 8318, 8319, 5, 113, 0, 0, 8319, 915, 1, 0, 0, 0, 8320, 8321, 5, 112, 0, 0, 8321, 917, 1, 0, 0, 0, 8322, 8323, 5, 2, 0, 0, 8323, 8324, 3, 244, 122, 0, 8324, 8325, 5, 3, 0, 0, 8325, 919, 1, 0, 0, 0, 8326, 8328, 3, 1406, 703, 0, 8327, 8329, 3, 918, 459, 0, 8328, 8327, 1, 0, 0, 0, 8328, 8329, 1, 0, 0, 0, 8329, 921, 1, 0, 0, 0, 8330, 8335, 3, 920, 460, 0, 8331, 8332, 5, 6, 0, 0, 8332, 8334, 3, 920, 460, 0, 8333, 8331, 1, 0, 0, 0, 8334, 8337, 1, 0, 0, 0, 8335, 8333, 1, 0, 0, 0, 8335, 8336, 1, 0, 0, 0, 8336, 923, 1, 0, 0, 0, 8337, 8335, 1, 0, 0, 0, 8338, 8339, 3, 922, 461, 0, 8339, 925, 1, 0, 0, 0, 8340, 8341, 5, 203, 0, 0, 8341, 8359, 3, 928, 464, 0, 8342, 8343, 5, 203, 0, 0, 8343, 8345, 3, 894, 447, 0, 8344, 8346, 3, 908, 454, 0, 8345, 8344, 1, 0, 0, 0, 8345, 8346, 1, 0, 0, 0, 8346, 8347, 1, 0, 0, 0, 8347, 8348, 3, 928, 464, 0, 8348, 8359, 1, 0, 0, 0, 8349, 8350, 5, 203, 0, 0, 8350, 8351, 5, 128, 0, 0, 8351, 8359, 3, 928, 464, 0, 8352, 8353, 5, 203, 0, 0, 8353, 8354, 5, 2, 0, 0, 8354, 8355, 3, 930, 465, 0, 8355, 8356, 5, 3, 0, 0, 8356, 8357, 3, 928, 464, 0, 8357, 8359, 1, 0, 0, 0, 8358, 8340, 1, 0, 0, 0, 8358, 8342, 1, 0, 0, 0, 8358, 8349, 1, 0, 0, 0, 8358, 8352, 1, 0, 0, 0, 8359, 927, 1, 0, 0, 0, 8360, 8370, 3, 1000, 500, 0, 8361, 8370, 3, 950, 475, 0, 8362, 8370, 3, 982, 491, 0, 8363, 8370, 3, 968, 484, 0, 8364, 8370, 3, 992, 496, 0, 8365, 8370, 3, 294, 147, 0, 8366, 8370, 3, 300, 150, 0, 8367, 8370, 3, 306, 153, 0, 8368, 8370, 3, 944, 472, 0, 8369, 8360, 1, 0, 0, 0, 8369, 8361, 1, 0, 0, 0, 8369, 8362, 1, 0, 0, 0, 8369, 8363, 1, 0, 0, 0, 8369, 8364, 1, 0, 0, 0, 8369, 8365, 1, 0, 0, 0, 8369, 8366, 1, 0, 0, 0, 8369, 8367, 1, 0, 0, 0, 8369, 8368, 1, 0, 0, 0, 8370, 929, 1, 0, 0, 0, 8371, 8376, 3, 932, 466, 0, 8372, 8373, 5, 6, 0, 0, 8373, 8375, 3, 932, 466, 0, 8374, 8372, 1, 0, 0, 0, 8375, 8378, 1, 0, 0, 0, 8376, 8374, 1, 0, 0, 0, 8376, 8377, 1, 0, 0, 0, 8377, 931, 1, 0, 0, 0, 8378, 8376, 1, 0, 0, 0, 8379, 8381, 3, 934, 467, 0, 8380, 8382, 3, 936, 468, 0, 8381, 8380, 1, 0, 0, 0, 8381, 8382, 1, 0, 0, 0, 8382, 933, 1, 0, 0, 0, 8383, 8386, 3, 1488, 744, 0, 8384, 8386, 3, 894, 447, 0, 8385, 8383, 1, 0, 0, 0, 8385, 8384, 1, 0, 0, 0, 8386, 935, 1, 0, 0, 0, 8387, 8390, 3, 72, 36, 0, 8388, 8390, 3, 322, 161, 0, 8389, 8387, 1, 0, 0, 0, 8389, 8388, 1, 0, 0, 0, 8390, 937, 1, 0, 0, 0, 8391, 8392, 5, 290, 0, 0, 8392, 8394, 3, 1436, 718, 0, 8393, 8395, 3, 940, 470, 0, 8394, 8393, 1, 0, 0, 0, 8394, 8395, 1, 0, 0, 0, 8395, 8396, 1, 0, 0, 0, 8396, 8397, 5, 36, 0, 0, 8397, 8398, 3, 942, 471, 0, 8398, 939, 1, 0, 0, 0, 8399, 8400, 5, 2, 0, 0, 8400, 8401, 3, 1342, 671, 0, 8401, 8402, 5, 3, 0, 0, 8402, 941, 1, 0, 0, 0, 8403, 8408, 3, 1000, 500, 0, 8404, 8408, 3, 950, 475, 0, 8405, 8408, 3, 982, 491, 0, 8406, 8408, 3, 968, 484, 0, 8407, 8403, 1, 0, 0, 0, 8407, 8404, 1, 0, 0, 0, 8407, 8405, 1, 0, 0, 0, 8407, 8406, 1, 0, 0, 0, 8408, 943, 1, 0, 0, 0, 8409, 8410, 5, 202, 0, 0, 8410, 8412, 3, 1436, 718, 0, 8411, 8413, 3, 946, 473, 0, 8412, 8411, 1, 0, 0, 0, 8412, 8413, 1, 0, 0, 0, 8413, 8433, 1, 0, 0, 0, 8414, 8416, 5, 46, 0, 0, 8415, 8417, 3, 190, 95, 0, 8416, 8415, 1, 0, 0, 0, 8416, 8417, 1, 0, 0, 0, 8417, 8418, 1, 0, 0, 0, 8418, 8420, 5, 92, 0, 0, 8419, 8421, 3, 516, 258, 0, 8420, 8419, 1, 0, 0, 0, 8420, 8421, 1, 0, 0, 0, 8421, 8422, 1, 0, 0, 0, 8422, 8423, 3, 296, 148, 0, 8423, 8424, 5, 36, 0, 0, 8424, 8425, 5, 202, 0, 0, 8425, 8427, 3, 1436, 718, 0, 8426, 8428, 3, 946, 473, 0, 8427, 8426, 1, 0, 0, 0, 8427, 8428, 1, 0, 0, 0, 8428, 8430, 1, 0, 0, 0, 8429, 8431, 3, 298, 149, 0, 8430, 8429, 1, 0, 0, 0, 8430, 8431, 1, 0, 0, 0, 8431, 8433, 1, 0, 0, 0, 8432, 8409, 1, 0, 0, 0, 8432, 8414, 1, 0, 0, 0, 8433, 945, 1, 0, 0, 0, 8434, 8435, 5, 2, 0, 0, 8435, 8436, 3, 1328, 664, 0, 8436, 8437, 5, 3, 0, 0, 8437, 947, 1, 0, 0, 0, 8438, 8440, 5, 177, 0, 0, 8439, 8441, 5, 290, 0, 0, 8440, 8439, 1, 0, 0, 0, 8440, 8441, 1, 0, 0, 0, 8441, 8444, 1, 0, 0, 0, 8442, 8445, 3, 1436, 718, 0, 8443, 8445, 5, 30, 0, 0, 8444, 8442, 1, 0, 0, 0, 8444, 8443, 1, 0, 0, 0, 8445, 949, 1, 0, 0, 0, 8446, 8448, 3, 1026, 513, 0, 8447, 8446, 1, 0, 0, 0, 8447, 8448, 1, 0, 0, 0, 8448, 8449, 1, 0, 0, 0, 8449, 8450, 5, 241, 0, 0, 8450, 8451, 5, 71, 0, 0, 8451, 8452, 3, 952, 476, 0, 8452, 8454, 3, 954, 477, 0, 8453, 8455, 3, 962, 481, 0, 8454, 8453, 1, 0, 0, 0, 8454, 8455, 1, 0, 0, 0, 8455, 8457, 1, 0, 0, 0, 8456, 8458, 3, 966, 483, 0, 8457, 8456, 1, 0, 0, 0, 8457, 8458, 1, 0, 0, 0, 8458, 951, 1, 0, 0, 0, 8459, 8462, 3, 1406, 703, 0, 8460, 8461, 5, 36, 0, 0, 8461, 8463, 3, 1474, 737, 0, 8462, 8460, 1, 0, 0, 0, 8462, 8463, 1, 0, 0, 0, 8463, 953, 1, 0, 0, 0, 8464, 8465, 5, 2, 0, 0, 8465, 8466, 3, 958, 479, 0, 8466, 8467, 5, 3, 0, 0, 8467, 8469, 1, 0, 0, 0, 8468, 8464, 1, 0, 0, 0, 8468, 8469, 1, 0, 0, 0, 8469, 8474, 1, 0, 0, 0, 8470, 8471, 5, 463, 0, 0, 8471, 8472, 3, 956, 478, 0, 8472, 8473, 5, 450, 0, 0, 8473, 8475, 1, 0, 0, 0, 8474, 8470, 1, 0, 0, 0, 8474, 8475, 1, 0, 0, 0, 8475, 8478, 1, 0, 0, 0, 8476, 8479, 3, 1694, 847, 0, 8477, 8479, 3, 1000, 500, 0, 8478, 8476, 1, 0, 0, 0, 8478, 8477, 1, 0, 0, 0, 8479, 955, 1, 0, 0, 0, 8480, 8481, 7, 53, 0, 0, 8481, 957, 1, 0, 0, 0, 8482, 8487, 3, 960, 480, 0, 8483, 8484, 5, 6, 0, 0, 8484, 8486, 3, 960, 480, 0, 8485, 8483, 1, 0, 0, 0, 8486, 8489, 1, 0, 0, 0, 8487, 8485, 1, 0, 0, 0, 8487, 8488, 1, 0, 0, 0, 8488, 959, 1, 0, 0, 0, 8489, 8487, 1, 0, 0, 0, 8490, 8491, 3, 1432, 716, 0, 8491, 8492, 3, 1382, 691, 0, 8492, 961, 1, 0, 0, 0, 8493, 8494, 5, 80, 0, 0, 8494, 8496, 5, 464, 0, 0, 8495, 8497, 3, 964, 482, 0, 8496, 8495, 1, 0, 0, 0, 8496, 8497, 1, 0, 0, 0, 8497, 8498, 1, 0, 0, 0, 8498, 8506, 5, 57, 0, 0, 8499, 8500, 5, 369, 0, 0, 8500, 8501, 5, 333, 0, 0, 8501, 8503, 3, 984, 492, 0, 8502, 8504, 3, 1144, 572, 0, 8503, 8502, 1, 0, 0, 0, 8503, 8504, 1, 0, 0, 0, 8504, 8507, 1, 0, 0, 0, 8505, 8507, 5, 270, 0, 0, 8506, 8499, 1, 0, 0, 0, 8506, 8505, 1, 0, 0, 0, 8507, 963, 1, 0, 0, 0, 8508, 8509, 5, 2, 0, 0, 8509, 8510, 3, 636, 318, 0, 8510, 8512, 5, 3, 0, 0, 8511, 8513, 3, 1144, 572, 0, 8512, 8511, 1, 0, 0, 0, 8512, 8513, 1, 0, 0, 0, 8513, 8518, 1, 0, 0, 0, 8514, 8515, 5, 80, 0, 0, 8515, 8516, 5, 45, 0, 0, 8516, 8518, 3, 1436, 718, 0, 8517, 8508, 1, 0, 0, 0, 8517, 8514, 1, 0, 0, 0, 8518, 965, 1, 0, 0, 0, 8519, 8520, 5, 87, 0, 0, 8520, 8521, 3, 1386, 693, 0, 8521, 967, 1, 0, 0, 0, 8522, 8524, 3, 1026, 513, 0, 8523, 8522, 1, 0, 0, 0, 8523, 8524, 1, 0, 0, 0, 8524, 8525, 1, 0, 0, 0, 8525, 8526, 5, 182, 0, 0, 8526, 8527, 5, 64, 0, 0, 8527, 8529, 3, 1128, 564, 0, 8528, 8530, 3, 970, 485, 0, 8529, 8528, 1, 0, 0, 0, 8529, 8530, 1, 0, 0, 0, 8530, 8532, 1, 0, 0, 0, 8531, 8533, 3, 1146, 573, 0, 8532, 8531, 1, 0, 0, 0, 8532, 8533, 1, 0, 0, 0, 8533, 8535, 1, 0, 0, 0, 8534, 8536, 3, 966, 483, 0, 8535, 8534, 1, 0, 0, 0, 8535, 8536, 1, 0, 0, 0, 8536, 969, 1, 0, 0, 0, 8537, 8538, 5, 100, 0, 0, 8538, 8539, 3, 1104, 552, 0, 8539, 971, 1, 0, 0, 0, 8540, 8542, 5, 256, 0, 0, 8541, 8543, 3, 1034, 517, 0, 8542, 8541, 1, 0, 0, 0, 8542, 8543, 1, 0, 0, 0, 8543, 8544, 1, 0, 0, 0, 8544, 8546, 3, 1124, 562, 0, 8545, 8547, 3, 974, 487, 0, 8546, 8545, 1, 0, 0, 0, 8546, 8547, 1, 0, 0, 0, 8547, 8549, 1, 0, 0, 0, 8548, 8550, 3, 978, 489, 0, 8549, 8548, 1, 0, 0, 0, 8549, 8550, 1, 0, 0, 0, 8550, 973, 1, 0, 0, 0, 8551, 8552, 5, 68, 0, 0, 8552, 8553, 3, 976, 488, 0, 8553, 8554, 5, 263, 0, 0, 8554, 975, 1, 0, 0, 0, 8555, 8556, 5, 131, 0, 0, 8556, 8568, 7, 54, 0, 0, 8557, 8558, 5, 414, 0, 0, 8558, 8568, 7, 54, 0, 0, 8559, 8564, 5, 334, 0, 0, 8560, 8561, 5, 369, 0, 0, 8561, 8565, 5, 201, 0, 0, 8562, 8563, 5, 414, 0, 0, 8563, 8565, 5, 201, 0, 0, 8564, 8560, 1, 0, 0, 0, 8564, 8562, 1, 0, 0, 0, 8564, 8565, 1, 0, 0, 0, 8565, 8568, 1, 0, 0, 0, 8566, 8568, 5, 201, 0, 0, 8567, 8555, 1, 0, 0, 0, 8567, 8557, 1, 0, 0, 0, 8567, 8559, 1, 0, 0, 0, 8567, 8566, 1, 0, 0, 0, 8568, 977, 1, 0, 0, 0, 8569, 8570, 5, 272, 0, 0, 8570, 979, 1, 0, 0, 0, 8571, 8575, 5, 272, 0, 0, 8572, 8573, 5, 465, 0, 0, 8573, 8575, 5, 466, 0, 0, 8574, 8571, 1, 0, 0, 0, 8574, 8572, 1, 0, 0, 0, 8575, 981, 1, 0, 0, 0, 8576, 8578, 3, 1026, 513, 0, 8577, 8576, 1, 0, 0, 0, 8577, 8578, 1, 0, 0, 0, 8578, 8579, 1, 0, 0, 0, 8579, 8580, 5, 369, 0, 0, 8580, 8581, 3, 1128, 564, 0, 8581, 8582, 5, 333, 0, 0, 8582, 8584, 3, 984, 492, 0, 8583, 8585, 3, 1102, 551, 0, 8584, 8583, 1, 0, 0, 0, 8584, 8585, 1, 0, 0, 0, 8585, 8587, 1, 0, 0, 0, 8586, 8588, 3, 1146, 573, 0, 8587, 8586, 1, 0, 0, 0, 8587, 8588, 1, 0, 0, 0, 8588, 8590, 1, 0, 0, 0, 8589, 8591, 3, 966, 483, 0, 8590, 8589, 1, 0, 0, 0, 8590, 8591, 1, 0, 0, 0, 8591, 983, 1, 0, 0, 0, 8592, 8597, 3, 986, 493, 0, 8593, 8594, 5, 6, 0, 0, 8594, 8596, 3, 986, 493, 0, 8595, 8593, 1, 0, 0, 0, 8596, 8599, 1, 0, 0, 0, 8597, 8595, 1, 0, 0, 0, 8597, 8598, 1, 0, 0, 0, 8598, 985, 1, 0, 0, 0, 8599, 8597, 1, 0, 0, 0, 8600, 8601, 3, 988, 494, 0, 8601, 8602, 5, 10, 0, 0, 8602, 8603, 3, 1212, 606, 0, 8603, 8619, 1, 0, 0, 0, 8604, 8605, 5, 2, 0, 0, 8605, 8606, 3, 990, 495, 0, 8606, 8607, 5, 3, 0, 0, 8607, 8616, 5, 10, 0, 0, 8608, 8610, 5, 414, 0, 0, 8609, 8608, 1, 0, 0, 0, 8609, 8610, 1, 0, 0, 0, 8610, 8611, 1, 0, 0, 0, 8611, 8617, 3, 1212, 606, 0, 8612, 8613, 5, 2, 0, 0, 8613, 8614, 3, 1006, 503, 0, 8614, 8615, 5, 3, 0, 0, 8615, 8617, 1, 0, 0, 0, 8616, 8609, 1, 0, 0, 0, 8616, 8612, 1, 0, 0, 0, 8617, 8619, 1, 0, 0, 0, 8618, 8600, 1, 0, 0, 0, 8618, 8604, 1, 0, 0, 0, 8619, 987, 1, 0, 0, 0, 8620, 8621, 3, 1432, 716, 0, 8621, 8622, 3, 1382, 691, 0, 8622, 989, 1, 0, 0, 0, 8623, 8628, 3, 988, 494, 0, 8624, 8625, 5, 6, 0, 0, 8625, 8627, 3, 988, 494, 0, 8626, 8624, 1, 0, 0, 0, 8627, 8630, 1, 0, 0, 0, 8628, 8626, 1, 0, 0, 0, 8628, 8629, 1, 0, 0, 0, 8629, 991, 1, 0, 0, 0, 8630, 8628, 1, 0, 0, 0, 8631, 8632, 5, 178, 0, 0, 8632, 8633, 3, 994, 497, 0, 8633, 8634, 3, 996, 498, 0, 8634, 8635, 5, 172, 0, 0, 8635, 8636, 3, 998, 499, 0, 8636, 8637, 5, 62, 0, 0, 8637, 8638, 3, 1000, 500, 0, 8638, 993, 1, 0, 0, 0, 8639, 8640, 3, 1436, 718, 0, 8640, 995, 1, 0, 0, 0, 8641, 8642, 5, 269, 0, 0, 8642, 8647, 5, 324, 0, 0, 8643, 8647, 5, 324, 0, 0, 8644, 8647, 5, 107, 0, 0, 8645, 8647, 5, 240, 0, 0, 8646, 8641, 1, 0, 0, 0, 8646, 8643, 1, 0, 0, 0, 8646, 8644, 1, 0, 0, 0, 8646, 8645, 1, 0, 0, 0, 8647, 8650, 1, 0, 0, 0, 8648, 8646, 1, 0, 0, 0, 8648, 8649, 1, 0, 0, 0, 8649, 997, 1, 0, 0, 0, 8650, 8648, 1, 0, 0, 0, 8651, 8657, 1, 0, 0, 0, 8652, 8653, 5, 105, 0, 0, 8653, 8657, 5, 217, 0, 0, 8654, 8655, 5, 379, 0, 0, 8655, 8657, 5, 217, 0, 0, 8656, 8651, 1, 0, 0, 0, 8656, 8652, 1, 0, 0, 0, 8656, 8654, 1, 0, 0, 0, 8657, 999, 1, 0, 0, 0, 8658, 8661, 3, 1004, 502, 0, 8659, 8661, 3, 1002, 501, 0, 8660, 8658, 1, 0, 0, 0, 8660, 8659, 1, 0, 0, 0, 8661, 1001, 1, 0, 0, 0, 8662, 8663, 5, 2, 0, 0, 8663, 8664, 3, 1004, 502, 0, 8664, 8665, 5, 3, 0, 0, 8665, 8671, 1, 0, 0, 0, 8666, 8667, 5, 2, 0, 0, 8667, 8668, 3, 1002, 501, 0, 8668, 8669, 5, 3, 0, 0, 8669, 8671, 1, 0, 0, 0, 8670, 8662, 1, 0, 0, 0, 8670, 8666, 1, 0, 0, 0, 8671, 1003, 1, 0, 0, 0, 8672, 8674, 3, 1006, 503, 0, 8673, 8675, 3, 1042, 521, 0, 8674, 8673, 1, 0, 0, 0, 8674, 8675, 1, 0, 0, 0, 8675, 8684, 1, 0, 0, 0, 8676, 8678, 3, 1088, 544, 0, 8677, 8679, 3, 1052, 526, 0, 8678, 8677, 1, 0, 0, 0, 8678, 8679, 1, 0, 0, 0, 8679, 8685, 1, 0, 0, 0, 8680, 8682, 3, 1050, 525, 0, 8681, 8683, 3, 1090, 545, 0, 8682, 8681, 1, 0, 0, 0, 8682, 8683, 1, 0, 0, 0, 8683, 8685, 1, 0, 0, 0, 8684, 8676, 1, 0, 0, 0, 8684, 8680, 1, 0, 0, 0, 8684, 8685, 1, 0, 0, 0, 8685, 8702, 1, 0, 0, 0, 8686, 8687, 3, 1014, 507, 0, 8687, 8689, 3, 1006, 503, 0, 8688, 8690, 3, 1042, 521, 0, 8689, 8688, 1, 0, 0, 0, 8689, 8690, 1, 0, 0, 0, 8690, 8699, 1, 0, 0, 0, 8691, 8693, 3, 1088, 544, 0, 8692, 8694, 3, 1052, 526, 0, 8693, 8692, 1, 0, 0, 0, 8693, 8694, 1, 0, 0, 0, 8694, 8700, 1, 0, 0, 0, 8695, 8697, 3, 1050, 525, 0, 8696, 8698, 3, 1090, 545, 0, 8697, 8696, 1, 0, 0, 0, 8697, 8698, 1, 0, 0, 0, 8698, 8700, 1, 0, 0, 0, 8699, 8691, 1, 0, 0, 0, 8699, 8695, 1, 0, 0, 0, 8699, 8700, 1, 0, 0, 0, 8700, 8702, 1, 0, 0, 0, 8701, 8672, 1, 0, 0, 0, 8701, 8686, 1, 0, 0, 0, 8702, 1005, 1, 0, 0, 0, 8703, 8706, 3, 1008, 504, 0, 8704, 8706, 3, 1002, 501, 0, 8705, 8703, 1, 0, 0, 0, 8705, 8704, 1, 0, 0, 0, 8706, 1007, 1, 0, 0, 0, 8707, 8723, 5, 88, 0, 0, 8708, 8710, 3, 1040, 520, 0, 8709, 8708, 1, 0, 0, 0, 8709, 8710, 1, 0, 0, 0, 8710, 8712, 1, 0, 0, 0, 8711, 8713, 3, 1028, 514, 0, 8712, 8711, 1, 0, 0, 0, 8712, 8713, 1, 0, 0, 0, 8713, 8715, 1, 0, 0, 0, 8714, 8716, 3, 1384, 692, 0, 8715, 8714, 1, 0, 0, 0, 8715, 8716, 1, 0, 0, 0, 8716, 8724, 1, 0, 0, 0, 8717, 8719, 3, 1038, 519, 0, 8718, 8717, 1, 0, 0, 0, 8718, 8719, 1, 0, 0, 0, 8719, 8721, 1, 0, 0, 0, 8720, 8722, 3, 1386, 693, 0, 8721, 8720, 1, 0, 0, 0, 8721, 8722, 1, 0, 0, 0, 8722, 8724, 1, 0, 0, 0, 8723, 8709, 1, 0, 0, 0, 8723, 8718, 1, 0, 0, 0, 8724, 8726, 1, 0, 0, 0, 8725, 8727, 3, 1028, 514, 0, 8726, 8725, 1, 0, 0, 0, 8726, 8727, 1, 0, 0, 0, 8727, 8729, 1, 0, 0, 0, 8728, 8730, 3, 1102, 551, 0, 8729, 8728, 1, 0, 0, 0, 8729, 8730, 1, 0, 0, 0, 8730, 8732, 1, 0, 0, 0, 8731, 8733, 3, 1144, 572, 0, 8732, 8731, 1, 0, 0, 0, 8732, 8733, 1, 0, 0, 0, 8733, 8735, 1, 0, 0, 0, 8734, 8736, 3, 1072, 536, 0, 8735, 8734, 1, 0, 0, 0, 8735, 8736, 1, 0, 0, 0, 8736, 8738, 1, 0, 0, 0, 8737, 8739, 3, 1086, 543, 0, 8738, 8737, 1, 0, 0, 0, 8738, 8739, 1, 0, 0, 0, 8739, 8741, 1, 0, 0, 0, 8740, 8742, 3, 1288, 644, 0, 8741, 8740, 1, 0, 0, 0, 8741, 8742, 1, 0, 0, 0, 8742, 8753, 1, 0, 0, 0, 8743, 8753, 3, 1100, 550, 0, 8744, 8745, 5, 92, 0, 0, 8745, 8753, 3, 1118, 559, 0, 8746, 8747, 3, 1002, 501, 0, 8747, 8750, 3, 1012, 506, 0, 8748, 8751, 3, 1008, 504, 0, 8749, 8751, 3, 1002, 501, 0, 8750, 8748, 1, 0, 0, 0, 8750, 8749, 1, 0, 0, 0, 8751, 8753, 1, 0, 0, 0, 8752, 8707, 1, 0, 0, 0, 8752, 8743, 1, 0, 0, 0, 8752, 8744, 1, 0, 0, 0, 8752, 8746, 1, 0, 0, 0, 8753, 8761, 1, 0, 0, 0, 8754, 8757, 3, 1012, 506, 0, 8755, 8758, 3, 1008, 504, 0, 8756, 8758, 3, 1002, 501, 0, 8757, 8755, 1, 0, 0, 0, 8757, 8756, 1, 0, 0, 0, 8758, 8760, 1, 0, 0, 0, 8759, 8754, 1, 0, 0, 0, 8760, 8763, 1, 0, 0, 0, 8761, 8759, 1, 0, 0, 0, 8761, 8762, 1, 0, 0, 0, 8762, 1009, 1, 0, 0, 0, 8763, 8761, 1, 0, 0, 0, 8764, 8768, 5, 97, 0, 0, 8765, 8768, 5, 70, 0, 0, 8766, 8768, 5, 59, 0, 0, 8767, 8764, 1, 0, 0, 0, 8767, 8765, 1, 0, 0, 0, 8767, 8766, 1, 0, 0, 0, 8768, 1011, 1, 0, 0, 0, 8769, 8771, 3, 1010, 505, 0, 8770, 8772, 3, 1036, 518, 0, 8771, 8770, 1, 0, 0, 0, 8771, 8772, 1, 0, 0, 0, 8772, 1013, 1, 0, 0, 0, 8773, 8775, 5, 105, 0, 0, 8774, 8776, 5, 303, 0, 0, 8775, 8774, 1, 0, 0, 0, 8775, 8776, 1, 0, 0, 0, 8776, 8777, 1, 0, 0, 0, 8777, 8778, 3, 1016, 508, 0, 8778, 1015, 1, 0, 0, 0, 8779, 8784, 3, 1018, 509, 0, 8780, 8781, 5, 6, 0, 0, 8781, 8783, 3, 1018, 509, 0, 8782, 8780, 1, 0, 0, 0, 8783, 8786, 1, 0, 0, 0, 8784, 8782, 1, 0, 0, 0, 8784, 8785, 1, 0, 0, 0, 8785, 1017, 1, 0, 0, 0, 8786, 8784, 1, 0, 0, 0, 8787, 8789, 3, 1436, 718, 0, 8788, 8790, 3, 918, 459, 0, 8789, 8788, 1, 0, 0, 0, 8789, 8790, 1, 0, 0, 0, 8790, 8791, 1, 0, 0, 0, 8791, 8793, 5, 36, 0, 0, 8792, 8794, 3, 1024, 512, 0, 8793, 8792, 1, 0, 0, 0, 8793, 8794, 1, 0, 0, 0, 8794, 8795, 1, 0, 0, 0, 8795, 8796, 5, 2, 0, 0, 8796, 8797, 3, 942, 471, 0, 8797, 8799, 5, 3, 0, 0, 8798, 8800, 3, 1020, 510, 0, 8799, 8798, 1, 0, 0, 0, 8799, 8800, 1, 0, 0, 0, 8800, 8802, 1, 0, 0, 0, 8801, 8803, 3, 1022, 511, 0, 8802, 8801, 1, 0, 0, 0, 8802, 8803, 1, 0, 0, 0, 8803, 1019, 1, 0, 0, 0, 8804, 8805, 5, 325, 0, 0, 8805, 8806, 7, 55, 0, 0, 8806, 8807, 5, 207, 0, 0, 8807, 8808, 5, 147, 0, 0, 8808, 8809, 3, 244, 122, 0, 8809, 8810, 5, 333, 0, 0, 8810, 8811, 3, 1432, 716, 0, 8811, 1021, 1, 0, 0, 0, 8812, 8813, 5, 173, 0, 0, 8813, 8814, 3, 244, 122, 0, 8814, 8815, 5, 333, 0, 0, 8815, 8821, 3, 1432, 716, 0, 8816, 8817, 5, 94, 0, 0, 8817, 8818, 3, 1436, 718, 0, 8818, 8819, 5, 53, 0, 0, 8819, 8820, 3, 1436, 718, 0, 8820, 8822, 1, 0, 0, 0, 8821, 8816, 1, 0, 0, 0, 8821, 8822, 1, 0, 0, 0, 8822, 8823, 1, 0, 0, 0, 8823, 8824, 5, 100, 0, 0, 8824, 8825, 3, 1432, 716, 0, 8825, 1023, 1, 0, 0, 0, 8826, 8830, 5, 259, 0, 0, 8827, 8828, 5, 77, 0, 0, 8828, 8830, 5, 259, 0, 0, 8829, 8826, 1, 0, 0, 0, 8829, 8827, 1, 0, 0, 0, 8830, 1025, 1, 0, 0, 0, 8831, 8832, 3, 1014, 507, 0, 8832, 1027, 1, 0, 0, 0, 8833, 8838, 5, 71, 0, 0, 8834, 8835, 3, 1030, 515, 0, 8835, 8836, 3, 1032, 516, 0, 8836, 8839, 1, 0, 0, 0, 8837, 8839, 3, 1674, 837, 0, 8838, 8834, 1, 0, 0, 0, 8838, 8837, 1, 0, 0, 0, 8839, 1029, 1, 0, 0, 0, 8840, 8843, 1, 0, 0, 0, 8841, 8843, 5, 346, 0, 0, 8842, 8840, 1, 0, 0, 0, 8842, 8841, 1, 0, 0, 0, 8843, 1031, 1, 0, 0, 0, 8844, 8846, 7, 56, 0, 0, 8845, 8844, 1, 0, 0, 0, 8845, 8846, 1, 0, 0, 0, 8846, 8847, 1, 0, 0, 0, 8847, 8849, 7, 25, 0, 0, 8848, 8850, 3, 1034, 517, 0, 8849, 8848, 1, 0, 0, 0, 8849, 8850, 1, 0, 0, 0, 8850, 8851, 1, 0, 0, 0, 8851, 8861, 3, 1404, 702, 0, 8852, 8854, 5, 367, 0, 0, 8853, 8855, 3, 1034, 517, 0, 8854, 8853, 1, 0, 0, 0, 8854, 8855, 1, 0, 0, 0, 8855, 8856, 1, 0, 0, 0, 8856, 8861, 3, 1404, 702, 0, 8857, 8858, 5, 92, 0, 0, 8858, 8861, 3, 1404, 702, 0, 8859, 8861, 3, 1404, 702, 0, 8860, 8845, 1, 0, 0, 0, 8860, 8852, 1, 0, 0, 0, 8860, 8857, 1, 0, 0, 0, 8860, 8859, 1, 0, 0, 0, 8861, 1033, 1, 0, 0, 0, 8862, 8863, 5, 92, 0, 0, 8863, 1035, 1, 0, 0, 0, 8864, 8865, 7, 57, 0, 0, 8865, 1037, 1, 0, 0, 0, 8866, 8872, 5, 56, 0, 0, 8867, 8868, 5, 80, 0, 0, 8868, 8869, 5, 2, 0, 0, 8869, 8870, 3, 1328, 664, 0, 8870, 8871, 5, 3, 0, 0, 8871, 8873, 1, 0, 0, 0, 8872, 8867, 1, 0, 0, 0, 8872, 8873, 1, 0, 0, 0, 8873, 1039, 1, 0, 0, 0, 8874, 8875, 5, 30, 0, 0, 8875, 1041, 1, 0, 0, 0, 8876, 8877, 3, 1044, 522, 0, 8877, 1043, 1, 0, 0, 0, 8878, 8879, 5, 83, 0, 0, 8879, 8880, 5, 147, 0, 0, 8880, 8881, 3, 1046, 523, 0, 8881, 1045, 1, 0, 0, 0, 8882, 8887, 3, 1048, 524, 0, 8883, 8884, 5, 6, 0, 0, 8884, 8886, 3, 1048, 524, 0, 8885, 8883, 1, 0, 0, 0, 8886, 8889, 1, 0, 0, 0, 8887, 8885, 1, 0, 0, 0, 8887, 8888, 1, 0, 0, 0, 8888, 1047, 1, 0, 0, 0, 8889, 8887, 1, 0, 0, 0, 8890, 8894, 3, 1336, 668, 0, 8891, 8892, 5, 100, 0, 0, 8892, 8895, 3, 1324, 662, 0, 8893, 8895, 3, 650, 325, 0, 8894, 8891, 1, 0, 0, 0, 8894, 8893, 1, 0, 0, 0, 8894, 8895, 1, 0, 0, 0, 8895, 8897, 1, 0, 0, 0, 8896, 8898, 3, 652, 326, 0, 8897, 8896, 1, 0, 0, 0, 8897, 8898, 1, 0, 0, 0, 8898, 1049, 1, 0, 0, 0, 8899, 8901, 3, 1054, 527, 0, 8900, 8902, 3, 1058, 529, 0, 8901, 8900, 1, 0, 0, 0, 8901, 8902, 1, 0, 0, 0, 8902, 8912, 1, 0, 0, 0, 8903, 8905, 3, 1058, 529, 0, 8904, 8906, 3, 1056, 528, 0, 8905, 8904, 1, 0, 0, 0, 8905, 8906, 1, 0, 0, 0, 8906, 8912, 1, 0, 0, 0, 8907, 8909, 3, 1056, 528, 0, 8908, 8910, 3, 1058, 529, 0, 8909, 8908, 1, 0, 0, 0, 8909, 8910, 1, 0, 0, 0, 8910, 8912, 1, 0, 0, 0, 8911, 8899, 1, 0, 0, 0, 8911, 8903, 1, 0, 0, 0, 8911, 8907, 1, 0, 0, 0, 8912, 1051, 1, 0, 0, 0, 8913, 8914, 3, 1050, 525, 0, 8914, 1053, 1, 0, 0, 0, 8915, 8916, 5, 74, 0, 0, 8916, 8919, 3, 1060, 530, 0, 8917, 8918, 5, 6, 0, 0, 8918, 8920, 3, 1062, 531, 0, 8919, 8917, 1, 0, 0, 0, 8919, 8920, 1, 0, 0, 0, 8920, 1055, 1, 0, 0, 0, 8921, 8922, 5, 61, 0, 0, 8922, 8936, 3, 1070, 535, 0, 8923, 8924, 3, 1064, 532, 0, 8924, 8928, 3, 1068, 534, 0, 8925, 8929, 5, 81, 0, 0, 8926, 8927, 5, 105, 0, 0, 8927, 8929, 5, 467, 0, 0, 8928, 8925, 1, 0, 0, 0, 8928, 8926, 1, 0, 0, 0, 8929, 8937, 1, 0, 0, 0, 8930, 8934, 3, 1068, 534, 0, 8931, 8935, 5, 81, 0, 0, 8932, 8933, 5, 105, 0, 0, 8933, 8935, 5, 467, 0, 0, 8934, 8931, 1, 0, 0, 0, 8934, 8932, 1, 0, 0, 0, 8935, 8937, 1, 0, 0, 0, 8936, 8923, 1, 0, 0, 0, 8936, 8930, 1, 0, 0, 0, 8937, 1057, 1, 0, 0, 0, 8938, 8943, 5, 79, 0, 0, 8939, 8940, 3, 1064, 532, 0, 8940, 8941, 3, 1068, 534, 0, 8941, 8944, 1, 0, 0, 0, 8942, 8944, 3, 1062, 531, 0, 8943, 8939, 1, 0, 0, 0, 8943, 8942, 1, 0, 0, 0, 8944, 1059, 1, 0, 0, 0, 8945, 8948, 3, 1212, 606, 0, 8946, 8948, 5, 30, 0, 0, 8947, 8945, 1, 0, 0, 0, 8947, 8946, 1, 0, 0, 0, 8948, 1061, 1, 0, 0, 0, 8949, 8950, 3, 1212, 606, 0, 8950, 1063, 1, 0, 0, 0, 8951, 8952, 5, 12, 0, 0, 8952, 8957, 3, 1066, 533, 0, 8953, 8954, 5, 13, 0, 0, 8954, 8957, 3, 1066, 533, 0, 8955, 8957, 3, 1254, 627, 0, 8956, 8951, 1, 0, 0, 0, 8956, 8953, 1, 0, 0, 0, 8956, 8955, 1, 0, 0, 0, 8957, 1065, 1, 0, 0, 0, 8958, 8961, 3, 1456, 728, 0, 8959, 8961, 3, 1454, 727, 0, 8960, 8958, 1, 0, 0, 0, 8960, 8959, 1, 0, 0, 0, 8961, 1067, 1, 0, 0, 0, 8962, 8963, 7, 58, 0, 0, 8963, 1069, 1, 0, 0, 0, 8964, 8965, 7, 59, 0, 0, 8965, 1071, 1, 0, 0, 0, 8966, 8967, 5, 66, 0, 0, 8967, 8969, 5, 147, 0, 0, 8968, 8970, 3, 1036, 518, 0, 8969, 8968, 1, 0, 0, 0, 8969, 8970, 1, 0, 0, 0, 8970, 8971, 1, 0, 0, 0, 8971, 8972, 3, 1074, 537, 0, 8972, 1073, 1, 0, 0, 0, 8973, 8978, 3, 1076, 538, 0, 8974, 8975, 5, 6, 0, 0, 8975, 8977, 3, 1076, 538, 0, 8976, 8974, 1, 0, 0, 0, 8977, 8980, 1, 0, 0, 0, 8978, 8976, 1, 0, 0, 0, 8978, 8979, 1, 0, 0, 0, 8979, 1075, 1, 0, 0, 0, 8980, 8978, 1, 0, 0, 0, 8981, 8991, 3, 1336, 668, 0, 8982, 8991, 3, 1078, 539, 0, 8983, 8991, 3, 1082, 541, 0, 8984, 8991, 3, 1080, 540, 0, 8985, 8991, 3, 1084, 542, 0, 8986, 8987, 5, 2, 0, 0, 8987, 8988, 3, 1330, 665, 0, 8988, 8989, 5, 3, 0, 0, 8989, 8991, 1, 0, 0, 0, 8990, 8981, 1, 0, 0, 0, 8990, 8982, 1, 0, 0, 0, 8990, 8983, 1, 0, 0, 0, 8990, 8984, 1, 0, 0, 0, 8990, 8985, 1, 0, 0, 0, 8990, 8986, 1, 0, 0, 0, 8991, 1077, 1, 0, 0, 0, 8992, 8993, 5, 2, 0, 0, 8993, 8994, 5, 3, 0, 0, 8994, 1079, 1, 0, 0, 0, 8995, 8996, 5, 468, 0, 0, 8996, 8997, 5, 2, 0, 0, 8997, 8998, 3, 1330, 665, 0, 8998, 8999, 5, 3, 0, 0, 8999, 1081, 1, 0, 0, 0, 9000, 9001, 5, 469, 0, 0, 9001, 9002, 5, 2, 0, 0, 9002, 9003, 3, 1330, 665, 0, 9003, 9004, 5, 3, 0, 0, 9004, 1083, 1, 0, 0, 0, 9005, 9006, 5, 470, 0, 0, 9006, 9007, 5, 471, 0, 0, 9007, 9008, 5, 2, 0, 0, 9008, 9009, 3, 1074, 537, 0, 9009, 9010, 5, 3, 0, 0, 9010, 1085, 1, 0, 0, 0, 9011, 9012, 5, 67, 0, 0, 9012, 9013, 3, 1212, 606, 0, 9013, 1087, 1, 0, 0, 0, 9014, 9019, 3, 1092, 546, 0, 9015, 9016, 5, 62, 0, 0, 9016, 9017, 5, 300, 0, 0, 9017, 9019, 5, 81, 0, 0, 9018, 9014, 1, 0, 0, 0, 9018, 9015, 1, 0, 0, 0, 9019, 1089, 1, 0, 0, 0, 9020, 9021, 3, 1088, 544, 0, 9021, 1091, 1, 0, 0, 0, 9022, 9024, 3, 1094, 547, 0, 9023, 9022, 1, 0, 0, 0, 9024, 9025, 1, 0, 0, 0, 9025, 9023, 1, 0, 0, 0, 9025, 9026, 1, 0, 0, 0, 9026, 1093, 1, 0, 0, 0, 9027, 9029, 3, 1096, 548, 0, 9028, 9030, 3, 1098, 549, 0, 9029, 9028, 1, 0, 0, 0, 9029, 9030, 1, 0, 0, 0, 9030, 9032, 1, 0, 0, 0, 9031, 9033, 3, 980, 490, 0, 9032, 9031, 1, 0, 0, 0, 9032, 9033, 1, 0, 0, 0, 9033, 1095, 1, 0, 0, 0, 9034, 9044, 5, 62, 0, 0, 9035, 9036, 5, 269, 0, 0, 9036, 9038, 5, 245, 0, 0, 9037, 9035, 1, 0, 0, 0, 9037, 9038, 1, 0, 0, 0, 9038, 9039, 1, 0, 0, 0, 9039, 9045, 5, 369, 0, 0, 9040, 9042, 5, 245, 0, 0, 9041, 9040, 1, 0, 0, 0, 9041, 9042, 1, 0, 0, 0, 9042, 9043, 1, 0, 0, 0, 9043, 9045, 5, 334, 0, 0, 9044, 9037, 1, 0, 0, 0, 9044, 9041, 1, 0, 0, 0, 9045, 1097, 1, 0, 0, 0, 9046, 9047, 5, 275, 0, 0, 9047, 9048, 3, 1390, 695, 0, 9048, 1099, 1, 0, 0, 0, 9049, 9050, 5, 422, 0, 0, 9050, 9051, 5, 2, 0, 0, 9051, 9052, 3, 1328, 664, 0, 9052, 9060, 5, 3, 0, 0, 9053, 9054, 5, 6, 0, 0, 9054, 9055, 5, 2, 0, 0, 9055, 9056, 3, 1328, 664, 0, 9056, 9057, 5, 3, 0, 0, 9057, 9059, 1, 0, 0, 0, 9058, 9053, 1, 0, 0, 0, 9059, 9062, 1, 0, 0, 0, 9060, 9058, 1, 0, 0, 0, 9060, 9061, 1, 0, 0, 0, 9061, 1101, 1, 0, 0, 0, 9062, 9060, 1, 0, 0, 0, 9063, 9064, 5, 64, 0, 0, 9064, 9065, 3, 1104, 552, 0, 9065, 1103, 1, 0, 0, 0, 9066, 9071, 3, 1106, 553, 0, 9067, 9068, 5, 6, 0, 0, 9068, 9070, 3, 1106, 553, 0, 9069, 9067, 1, 0, 0, 0, 9070, 9073, 1, 0, 0, 0, 9071, 9069, 1, 0, 0, 0, 9071, 9072, 1, 0, 0, 0, 9072, 1105, 1, 0, 0, 0, 9073, 9071, 1, 0, 0, 0, 9074, 9077, 3, 1118, 559, 0, 9075, 9077, 3, 1120, 560, 0, 9076, 9074, 1, 0, 0, 0, 9076, 9075, 1, 0, 0, 0, 9077, 9079, 1, 0, 0, 0, 9078, 9080, 3, 1110, 555, 0, 9079, 9078, 1, 0, 0, 0, 9079, 9080, 1, 0, 0, 0, 9080, 9082, 1, 0, 0, 0, 9081, 9083, 3, 1130, 565, 0, 9082, 9081, 1, 0, 0, 0, 9082, 9083, 1, 0, 0, 0, 9083, 9136, 1, 0, 0, 0, 9084, 9086, 3, 1134, 567, 0, 9085, 9087, 3, 1112, 556, 0, 9086, 9085, 1, 0, 0, 0, 9086, 9087, 1, 0, 0, 0, 9087, 9136, 1, 0, 0, 0, 9088, 9090, 3, 1154, 577, 0, 9089, 9091, 3, 1110, 555, 0, 9090, 9089, 1, 0, 0, 0, 9090, 9091, 1, 0, 0, 0, 9091, 9136, 1, 0, 0, 0, 9092, 9094, 3, 1002, 501, 0, 9093, 9095, 3, 1110, 555, 0, 9094, 9093, 1, 0, 0, 0, 9094, 9095, 1, 0, 0, 0, 9095, 9136, 1, 0, 0, 0, 9096, 9109, 5, 72, 0, 0, 9097, 9099, 3, 1154, 577, 0, 9098, 9100, 3, 1110, 555, 0, 9099, 9098, 1, 0, 0, 0, 9099, 9100, 1, 0, 0, 0, 9100, 9110, 1, 0, 0, 0, 9101, 9103, 3, 1134, 567, 0, 9102, 9104, 3, 1112, 556, 0, 9103, 9102, 1, 0, 0, 0, 9103, 9104, 1, 0, 0, 0, 9104, 9110, 1, 0, 0, 0, 9105, 9107, 3, 1002, 501, 0, 9106, 9108, 3, 1110, 555, 0, 9107, 9106, 1, 0, 0, 0, 9107, 9108, 1, 0, 0, 0, 9108, 9110, 1, 0, 0, 0, 9109, 9097, 1, 0, 0, 0, 9109, 9101, 1, 0, 0, 0, 9109, 9105, 1, 0, 0, 0, 9110, 9136, 1, 0, 0, 0, 9111, 9112, 5, 2, 0, 0, 9112, 9129, 3, 1106, 553, 0, 9113, 9114, 5, 110, 0, 0, 9114, 9115, 5, 118, 0, 0, 9115, 9130, 3, 1106, 553, 0, 9116, 9118, 5, 121, 0, 0, 9117, 9119, 3, 1114, 557, 0, 9118, 9117, 1, 0, 0, 0, 9118, 9119, 1, 0, 0, 0, 9119, 9120, 1, 0, 0, 0, 9120, 9121, 5, 118, 0, 0, 9121, 9130, 3, 1106, 553, 0, 9122, 9124, 3, 1114, 557, 0, 9123, 9122, 1, 0, 0, 0, 9123, 9124, 1, 0, 0, 0, 9124, 9125, 1, 0, 0, 0, 9125, 9126, 5, 118, 0, 0, 9126, 9127, 3, 1106, 553, 0, 9127, 9128, 3, 1116, 558, 0, 9128, 9130, 1, 0, 0, 0, 9129, 9113, 1, 0, 0, 0, 9129, 9116, 1, 0, 0, 0, 9129, 9123, 1, 0, 0, 0, 9129, 9130, 1, 0, 0, 0, 9130, 9131, 1, 0, 0, 0, 9131, 9133, 5, 3, 0, 0, 9132, 9134, 3, 1110, 555, 0, 9133, 9132, 1, 0, 0, 0, 9133, 9134, 1, 0, 0, 0, 9134, 9136, 1, 0, 0, 0, 9135, 9076, 1, 0, 0, 0, 9135, 9084, 1, 0, 0, 0, 9135, 9088, 1, 0, 0, 0, 9135, 9092, 1, 0, 0, 0, 9135, 9096, 1, 0, 0, 0, 9135, 9111, 1, 0, 0, 0, 9136, 9155, 1, 0, 0, 0, 9137, 9138, 5, 110, 0, 0, 9138, 9139, 5, 118, 0, 0, 9139, 9154, 3, 1106, 553, 0, 9140, 9142, 5, 121, 0, 0, 9141, 9143, 3, 1114, 557, 0, 9142, 9141, 1, 0, 0, 0, 9142, 9143, 1, 0, 0, 0, 9143, 9144, 1, 0, 0, 0, 9144, 9145, 5, 118, 0, 0, 9145, 9154, 3, 1106, 553, 0, 9146, 9148, 3, 1114, 557, 0, 9147, 9146, 1, 0, 0, 0, 9147, 9148, 1, 0, 0, 0, 9148, 9149, 1, 0, 0, 0, 9149, 9150, 5, 118, 0, 0, 9150, 9151, 3, 1106, 553, 0, 9151, 9152, 3, 1116, 558, 0, 9152, 9154, 1, 0, 0, 0, 9153, 9137, 1, 0, 0, 0, 9153, 9140, 1, 0, 0, 0, 9153, 9147, 1, 0, 0, 0, 9154, 9157, 1, 0, 0, 0, 9155, 9153, 1, 0, 0, 0, 9155, 9156, 1, 0, 0, 0, 9156, 1107, 1, 0, 0, 0, 9157, 9155, 1, 0, 0, 0, 9158, 9160, 5, 36, 0, 0, 9159, 9158, 1, 0, 0, 0, 9159, 9160, 1, 0, 0, 0, 9160, 9161, 1, 0, 0, 0, 9161, 9166, 3, 1474, 737, 0, 9162, 9163, 5, 2, 0, 0, 9163, 9164, 3, 1416, 708, 0, 9164, 9165, 5, 3, 0, 0, 9165, 9167, 1, 0, 0, 0, 9166, 9162, 1, 0, 0, 0, 9166, 9167, 1, 0, 0, 0, 9167, 1109, 1, 0, 0, 0, 9168, 9169, 3, 1108, 554, 0, 9169, 1111, 1, 0, 0, 0, 9170, 9183, 3, 1108, 554, 0, 9171, 9173, 5, 36, 0, 0, 9172, 9174, 3, 1474, 737, 0, 9173, 9172, 1, 0, 0, 0, 9173, 9174, 1, 0, 0, 0, 9174, 9177, 1, 0, 0, 0, 9175, 9177, 3, 1474, 737, 0, 9176, 9171, 1, 0, 0, 0, 9176, 9175, 1, 0, 0, 0, 9177, 9178, 1, 0, 0, 0, 9178, 9179, 5, 2, 0, 0, 9179, 9180, 3, 1150, 575, 0, 9180, 9181, 5, 3, 0, 0, 9181, 9183, 1, 0, 0, 0, 9182, 9170, 1, 0, 0, 0, 9182, 9176, 1, 0, 0, 0, 9183, 1113, 1, 0, 0, 0, 9184, 9186, 7, 60, 0, 0, 9185, 9187, 5, 123, 0, 0, 9186, 9185, 1, 0, 0, 0, 9186, 9187, 1, 0, 0, 0, 9187, 1115, 1, 0, 0, 0, 9188, 9189, 5, 100, 0, 0, 9189, 9190, 5, 2, 0, 0, 9190, 9191, 3, 244, 122, 0, 9191, 9192, 5, 3, 0, 0, 9192, 9196, 1, 0, 0, 0, 9193, 9194, 5, 80, 0, 0, 9194, 9196, 3, 1212, 606, 0, 9195, 9188, 1, 0, 0, 0, 9195, 9193, 1, 0, 0, 0, 9196, 1117, 1, 0, 0, 0, 9197, 9199, 5, 81, 0, 0, 9198, 9197, 1, 0, 0, 0, 9198, 9199, 1, 0, 0, 0, 9199, 9200, 1, 0, 0, 0, 9200, 9202, 3, 1406, 703, 0, 9201, 9203, 5, 9, 0, 0, 9202, 9201, 1, 0, 0, 0, 9202, 9203, 1, 0, 0, 0, 9203, 9219, 1, 0, 0, 0, 9204, 9210, 5, 81, 0, 0, 9205, 9211, 3, 1406, 703, 0, 9206, 9207, 5, 2, 0, 0, 9207, 9208, 3, 1406, 703, 0, 9208, 9209, 5, 3, 0, 0, 9209, 9211, 1, 0, 0, 0, 9210, 9205, 1, 0, 0, 0, 9210, 9206, 1, 0, 0, 0, 9211, 9219, 1, 0, 0, 0, 9212, 9213, 5, 68, 0, 0, 9213, 9216, 5, 323, 0, 0, 9214, 9217, 3, 1422, 711, 0, 9215, 9217, 5, 111, 0, 0, 9216, 9214, 1, 0, 0, 0, 9216, 9215, 1, 0, 0, 0, 9217, 9219, 1, 0, 0, 0, 9218, 9198, 1, 0, 0, 0, 9218, 9204, 1, 0, 0, 0, 9218, 9212, 1, 0, 0, 0, 9219, 1119, 1, 0, 0, 0, 9220, 9222, 5, 81, 0, 0, 9221, 9220, 1, 0, 0, 0, 9221, 9222, 1, 0, 0, 0, 9222, 9223, 1, 0, 0, 0, 9223, 9225, 3, 1410, 705, 0, 9224, 9226, 5, 9, 0, 0, 9225, 9224, 1, 0, 0, 0, 9225, 9226, 1, 0, 0, 0, 9226, 9228, 1, 0, 0, 0, 9227, 9229, 3, 244, 122, 0, 9228, 9227, 1, 0, 0, 0, 9228, 9229, 1, 0, 0, 0, 9229, 9231, 1, 0, 0, 0, 9230, 9232, 3, 1144, 572, 0, 9231, 9230, 1, 0, 0, 0, 9231, 9232, 1, 0, 0, 0, 9232, 1121, 1, 0, 0, 0, 9233, 9235, 5, 92, 0, 0, 9234, 9236, 5, 81, 0, 0, 9235, 9234, 1, 0, 0, 0, 9235, 9236, 1, 0, 0, 0, 9236, 9237, 1, 0, 0, 0, 9237, 9239, 3, 1406, 703, 0, 9238, 9240, 5, 9, 0, 0, 9239, 9238, 1, 0, 0, 0, 9239, 9240, 1, 0, 0, 0, 9240, 9245, 1, 0, 0, 0, 9241, 9242, 5, 2, 0, 0, 9242, 9243, 3, 244, 122, 0, 9243, 9244, 5, 3, 0, 0, 9244, 9246, 1, 0, 0, 0, 9245, 9241, 1, 0, 0, 0, 9245, 9246, 1, 0, 0, 0, 9246, 9248, 1, 0, 0, 0, 9247, 9249, 3, 1144, 572, 0, 9248, 9247, 1, 0, 0, 0, 9248, 9249, 1, 0, 0, 0, 9249, 9267, 1, 0, 0, 0, 9250, 9251, 5, 92, 0, 0, 9251, 9257, 5, 81, 0, 0, 9252, 9258, 3, 1406, 703, 0, 9253, 9254, 5, 2, 0, 0, 9254, 9255, 3, 1406, 703, 0, 9255, 9256, 5, 3, 0, 0, 9256, 9258, 1, 0, 0, 0, 9257, 9252, 1, 0, 0, 0, 9257, 9253, 1, 0, 0, 0, 9258, 9267, 1, 0, 0, 0, 9259, 9260, 5, 350, 0, 0, 9260, 9261, 5, 68, 0, 0, 9261, 9264, 5, 323, 0, 0, 9262, 9265, 3, 1422, 711, 0, 9263, 9265, 5, 111, 0, 0, 9264, 9262, 1, 0, 0, 0, 9264, 9263, 1, 0, 0, 0, 9265, 9267, 1, 0, 0, 0, 9266, 9233, 1, 0, 0, 0, 9266, 9250, 1, 0, 0, 0, 9266, 9259, 1, 0, 0, 0, 9267, 1123, 1, 0, 0, 0, 9268, 9273, 3, 1118, 559, 0, 9269, 9270, 5, 6, 0, 0, 9270, 9272, 3, 1118, 559, 0, 9271, 9269, 1, 0, 0, 0, 9272, 9275, 1, 0, 0, 0, 9273, 9271, 1, 0, 0, 0, 9273, 9274, 1, 0, 0, 0, 9274, 1125, 1, 0, 0, 0, 9275, 9273, 1, 0, 0, 0, 9276, 9281, 3, 1122, 561, 0, 9277, 9278, 5, 6, 0, 0, 9278, 9280, 3, 1122, 561, 0, 9279, 9277, 1, 0, 0, 0, 9280, 9283, 1, 0, 0, 0, 9281, 9279, 1, 0, 0, 0, 9281, 9282, 1, 0, 0, 0, 9282, 1127, 1, 0, 0, 0, 9283, 9281, 1, 0, 0, 0, 9284, 9289, 3, 1118, 559, 0, 9285, 9287, 5, 36, 0, 0, 9286, 9285, 1, 0, 0, 0, 9286, 9287, 1, 0, 0, 0, 9287, 9288, 1, 0, 0, 0, 9288, 9290, 3, 1474, 737, 0, 9289, 9286, 1, 0, 0, 0, 9289, 9290, 1, 0, 0, 0, 9290, 1129, 1, 0, 0, 0, 9291, 9292, 5, 472, 0, 0, 9292, 9293, 3, 1444, 722, 0, 9293, 9294, 5, 2, 0, 0, 9294, 9295, 3, 1328, 664, 0, 9295, 9297, 5, 3, 0, 0, 9296, 9298, 3, 1132, 566, 0, 9297, 9296, 1, 0, 0, 0, 9297, 9298, 1, 0, 0, 0, 9298, 1131, 1, 0, 0, 0, 9299, 9300, 5, 310, 0, 0, 9300, 9301, 5, 2, 0, 0, 9301, 9302, 3, 1212, 606, 0, 9302, 9303, 5, 3, 0, 0, 9303, 1133, 1, 0, 0, 0, 9304, 9306, 3, 1262, 631, 0, 9305, 9307, 3, 1142, 571, 0, 9306, 9305, 1, 0, 0, 0, 9306, 9307, 1, 0, 0, 0, 9307, 9317, 1, 0, 0, 0, 9308, 9309, 5, 320, 0, 0, 9309, 9310, 5, 64, 0, 0, 9310, 9311, 5, 2, 0, 0, 9311, 9312, 3, 1138, 569, 0, 9312, 9314, 5, 3, 0, 0, 9313, 9315, 3, 1142, 571, 0, 9314, 9313, 1, 0, 0, 0, 9314, 9315, 1, 0, 0, 0, 9315, 9317, 1, 0, 0, 0, 9316, 9304, 1, 0, 0, 0, 9316, 9308, 1, 0, 0, 0, 9317, 1135, 1, 0, 0, 0, 9318, 9320, 3, 1262, 631, 0, 9319, 9321, 3, 1140, 570, 0, 9320, 9319, 1, 0, 0, 0, 9320, 9321, 1, 0, 0, 0, 9321, 1137, 1, 0, 0, 0, 9322, 9327, 3, 1136, 568, 0, 9323, 9324, 5, 6, 0, 0, 9324, 9326, 3, 1136, 568, 0, 9325, 9323, 1, 0, 0, 0, 9326, 9329, 1, 0, 0, 0, 9327, 9325, 1, 0, 0, 0, 9327, 9328, 1, 0, 0, 0, 9328, 1139, 1, 0, 0, 0, 9329, 9327, 1, 0, 0, 0, 9330, 9331, 5, 36, 0, 0, 9331, 9332, 5, 2, 0, 0, 9332, 9333, 3, 1150, 575, 0, 9333, 9334, 5, 3, 0, 0, 9334, 1141, 1, 0, 0, 0, 9335, 9336, 5, 105, 0, 0, 9336, 9337, 5, 473, 0, 0, 9337, 1143, 1, 0, 0, 0, 9338, 9339, 5, 103, 0, 0, 9339, 9340, 3, 1336, 668, 0, 9340, 1145, 1, 0, 0, 0, 9341, 9346, 5, 103, 0, 0, 9342, 9343, 5, 434, 0, 0, 9343, 9344, 5, 275, 0, 0, 9344, 9347, 3, 994, 497, 0, 9345, 9347, 3, 1212, 606, 0, 9346, 9342, 1, 0, 0, 0, 9346, 9345, 1, 0, 0, 0, 9347, 1147, 1, 0, 0, 0, 9348, 9349, 3, 1150, 575, 0, 9349, 1149, 1, 0, 0, 0, 9350, 9355, 3, 1152, 576, 0, 9351, 9352, 5, 6, 0, 0, 9352, 9354, 3, 1152, 576, 0, 9353, 9351, 1, 0, 0, 0, 9354, 9357, 1, 0, 0, 0, 9355, 9353, 1, 0, 0, 0, 9355, 9356, 1, 0, 0, 0, 9356, 1151, 1, 0, 0, 0, 9357, 9355, 1, 0, 0, 0, 9358, 9359, 3, 1474, 737, 0, 9359, 9361, 3, 1168, 584, 0, 9360, 9362, 3, 126, 63, 0, 9361, 9360, 1, 0, 0, 0, 9361, 9362, 1, 0, 0, 0, 9362, 1153, 1, 0, 0, 0, 9363, 9364, 5, 474, 0, 0, 9364, 9380, 5, 2, 0, 0, 9365, 9366, 3, 1254, 627, 0, 9366, 9367, 3, 1280, 640, 0, 9367, 9368, 5, 475, 0, 0, 9368, 9369, 3, 1156, 578, 0, 9369, 9381, 1, 0, 0, 0, 9370, 9371, 5, 476, 0, 0, 9371, 9372, 5, 2, 0, 0, 9372, 9373, 3, 1164, 582, 0, 9373, 9374, 5, 3, 0, 0, 9374, 9375, 5, 6, 0, 0, 9375, 9376, 3, 1254, 627, 0, 9376, 9377, 3, 1280, 640, 0, 9377, 9378, 5, 475, 0, 0, 9378, 9379, 3, 1156, 578, 0, 9379, 9381, 1, 0, 0, 0, 9380, 9365, 1, 0, 0, 0, 9380, 9370, 1, 0, 0, 0, 9381, 9382, 1, 0, 0, 0, 9382, 9383, 5, 3, 0, 0, 9383, 1155, 1, 0, 0, 0, 9384, 9389, 3, 1158, 579, 0, 9385, 9386, 5, 6, 0, 0, 9386, 9388, 3, 1158, 579, 0, 9387, 9385, 1, 0, 0, 0, 9388, 9391, 1, 0, 0, 0, 9389, 9387, 1, 0, 0, 0, 9389, 9390, 1, 0, 0, 0, 9390, 1157, 1, 0, 0, 0, 9391, 9389, 1, 0, 0, 0, 9392, 9399, 3, 1474, 737, 0, 9393, 9395, 3, 1168, 584, 0, 9394, 9396, 3, 1160, 580, 0, 9395, 9394, 1, 0, 0, 0, 9395, 9396, 1, 0, 0, 0, 9396, 9400, 1, 0, 0, 0, 9397, 9398, 5, 62, 0, 0, 9398, 9400, 5, 473, 0, 0, 9399, 9393, 1, 0, 0, 0, 9399, 9397, 1, 0, 0, 0, 9400, 1159, 1, 0, 0, 0, 9401, 9403, 3, 1162, 581, 0, 9402, 9401, 1, 0, 0, 0, 9403, 9404, 1, 0, 0, 0, 9404, 9402, 1, 0, 0, 0, 9404, 9405, 1, 0, 0, 0, 9405, 1161, 1, 0, 0, 0, 9406, 9407, 5, 53, 0, 0, 9407, 9415, 3, 1212, 606, 0, 9408, 9409, 3, 1492, 746, 0, 9409, 9410, 3, 1212, 606, 0, 9410, 9415, 1, 0, 0, 0, 9411, 9412, 5, 77, 0, 0, 9412, 9415, 5, 78, 0, 0, 9413, 9415, 5, 78, 0, 0, 9414, 9406, 1, 0, 0, 0, 9414, 9408, 1, 0, 0, 0, 9414, 9411, 1, 0, 0, 0, 9414, 9413, 1, 0, 0, 0, 9415, 1163, 1, 0, 0, 0, 9416, 9421, 3, 1166, 583, 0, 9417, 9418, 5, 6, 0, 0, 9418, 9420, 3, 1166, 583, 0, 9419, 9417, 1, 0, 0, 0, 9420, 9423, 1, 0, 0, 0, 9421, 9419, 1, 0, 0, 0, 9421, 9422, 1, 0, 0, 0, 9422, 1165, 1, 0, 0, 0, 9423, 9421, 1, 0, 0, 0, 9424, 9425, 3, 1252, 626, 0, 9425, 9426, 5, 36, 0, 0, 9426, 9427, 3, 1490, 745, 0, 9427, 9431, 1, 0, 0, 0, 9428, 9429, 5, 53, 0, 0, 9429, 9431, 3, 1252, 626, 0, 9430, 9424, 1, 0, 0, 0, 9430, 9428, 1, 0, 0, 0, 9431, 1167, 1, 0, 0, 0, 9432, 9434, 5, 415, 0, 0, 9433, 9432, 1, 0, 0, 0, 9433, 9434, 1, 0, 0, 0, 9434, 9435, 1, 0, 0, 0, 9435, 9444, 3, 1172, 586, 0, 9436, 9445, 3, 1170, 585, 0, 9437, 9442, 5, 35, 0, 0, 9438, 9439, 5, 4, 0, 0, 9439, 9440, 3, 1456, 728, 0, 9440, 9441, 5, 5, 0, 0, 9441, 9443, 1, 0, 0, 0, 9442, 9438, 1, 0, 0, 0, 9442, 9443, 1, 0, 0, 0, 9443, 9445, 1, 0, 0, 0, 9444, 9436, 1, 0, 0, 0, 9444, 9437, 1, 0, 0, 0, 9445, 9451, 1, 0, 0, 0, 9446, 9447, 3, 1412, 706, 0, 9447, 9448, 5, 27, 0, 0, 9448, 9449, 7, 61, 0, 0, 9449, 9451, 1, 0, 0, 0, 9450, 9433, 1, 0, 0, 0, 9450, 9446, 1, 0, 0, 0, 9451, 1169, 1, 0, 0, 0, 9452, 9454, 5, 4, 0, 0, 9453, 9455, 3, 1456, 728, 0, 9454, 9453, 1, 0, 0, 0, 9454, 9455, 1, 0, 0, 0, 9455, 9456, 1, 0, 0, 0, 9456, 9458, 5, 5, 0, 0, 9457, 9452, 1, 0, 0, 0, 9458, 9461, 1, 0, 0, 0, 9459, 9457, 1, 0, 0, 0, 9459, 9460, 1, 0, 0, 0, 9460, 1171, 1, 0, 0, 0, 9461, 9459, 1, 0, 0, 0, 9462, 9478, 3, 1176, 588, 0, 9463, 9478, 3, 1180, 590, 0, 9464, 9478, 3, 1184, 592, 0, 9465, 9478, 3, 1192, 596, 0, 9466, 9478, 3, 1200, 600, 0, 9467, 9475, 3, 1202, 601, 0, 9468, 9470, 3, 1206, 603, 0, 9469, 9468, 1, 0, 0, 0, 9469, 9470, 1, 0, 0, 0, 9470, 9476, 1, 0, 0, 0, 9471, 9472, 5, 2, 0, 0, 9472, 9473, 3, 1456, 728, 0, 9473, 9474, 5, 3, 0, 0, 9474, 9476, 1, 0, 0, 0, 9475, 9469, 1, 0, 0, 0, 9475, 9471, 1, 0, 0, 0, 9476, 9478, 1, 0, 0, 0, 9477, 9462, 1, 0, 0, 0, 9477, 9463, 1, 0, 0, 0, 9477, 9464, 1, 0, 0, 0, 9477, 9465, 1, 0, 0, 0, 9477, 9466, 1, 0, 0, 0, 9477, 9467, 1, 0, 0, 0, 9478, 1173, 1, 0, 0, 0, 9479, 9484, 3, 1180, 590, 0, 9480, 9484, 3, 1186, 593, 0, 9481, 9484, 3, 1194, 597, 0, 9482, 9484, 3, 1200, 600, 0, 9483, 9479, 1, 0, 0, 0, 9483, 9480, 1, 0, 0, 0, 9483, 9481, 1, 0, 0, 0, 9483, 9482, 1, 0, 0, 0, 9484, 1175, 1, 0, 0, 0, 9485, 9487, 3, 1482, 741, 0, 9486, 9488, 3, 560, 280, 0, 9487, 9486, 1, 0, 0, 0, 9487, 9488, 1, 0, 0, 0, 9488, 9490, 1, 0, 0, 0, 9489, 9491, 3, 1178, 589, 0, 9490, 9489, 1, 0, 0, 0, 9490, 9491, 1, 0, 0, 0, 9491, 1177, 1, 0, 0, 0, 9492, 9493, 5, 2, 0, 0, 9493, 9494, 3, 1328, 664, 0, 9494, 9495, 5, 3, 0, 0, 9495, 1179, 1, 0, 0, 0, 9496, 9521, 5, 401, 0, 0, 9497, 9521, 5, 402, 0, 0, 9498, 9521, 5, 416, 0, 0, 9499, 9521, 5, 388, 0, 0, 9500, 9521, 5, 413, 0, 0, 9501, 9503, 5, 398, 0, 0, 9502, 9504, 3, 1182, 591, 0, 9503, 9502, 1, 0, 0, 0, 9503, 9504, 1, 0, 0, 0, 9504, 9521, 1, 0, 0, 0, 9505, 9506, 5, 190, 0, 0, 9506, 9521, 5, 412, 0, 0, 9507, 9509, 5, 395, 0, 0, 9508, 9510, 3, 1178, 589, 0, 9509, 9508, 1, 0, 0, 0, 9509, 9510, 1, 0, 0, 0, 9510, 9521, 1, 0, 0, 0, 9511, 9513, 5, 394, 0, 0, 9512, 9514, 3, 1178, 589, 0, 9513, 9512, 1, 0, 0, 0, 9513, 9514, 1, 0, 0, 0, 9514, 9521, 1, 0, 0, 0, 9515, 9517, 5, 409, 0, 0, 9516, 9518, 3, 1178, 589, 0, 9517, 9516, 1, 0, 0, 0, 9517, 9518, 1, 0, 0, 0, 9518, 9521, 1, 0, 0, 0, 9519, 9521, 5, 390, 0, 0, 9520, 9496, 1, 0, 0, 0, 9520, 9497, 1, 0, 0, 0, 9520, 9498, 1, 0, 0, 0, 9520, 9499, 1, 0, 0, 0, 9520, 9500, 1, 0, 0, 0, 9520, 9501, 1, 0, 0, 0, 9520, 9505, 1, 0, 0, 0, 9520, 9507, 1, 0, 0, 0, 9520, 9511, 1, 0, 0, 0, 9520, 9515, 1, 0, 0, 0, 9520, 9519, 1, 0, 0, 0, 9521, 1181, 1, 0, 0, 0, 9522, 9523, 5, 2, 0, 0, 9523, 9524, 3, 1456, 728, 0, 9524, 9525, 5, 3, 0, 0, 9525, 1183, 1, 0, 0, 0, 9526, 9529, 3, 1188, 594, 0, 9527, 9529, 3, 1190, 595, 0, 9528, 9526, 1, 0, 0, 0, 9528, 9527, 1, 0, 0, 0, 9529, 1185, 1, 0, 0, 0, 9530, 9533, 3, 1188, 594, 0, 9531, 9533, 3, 1190, 595, 0, 9532, 9530, 1, 0, 0, 0, 9532, 9531, 1, 0, 0, 0, 9533, 1187, 1, 0, 0, 0, 9534, 9536, 5, 389, 0, 0, 9535, 9537, 3, 1198, 599, 0, 9536, 9535, 1, 0, 0, 0, 9536, 9537, 1, 0, 0, 0, 9537, 9538, 1, 0, 0, 0, 9538, 9539, 5, 2, 0, 0, 9539, 9540, 3, 1328, 664, 0, 9540, 9541, 5, 3, 0, 0, 9541, 1189, 1, 0, 0, 0, 9542, 9544, 5, 389, 0, 0, 9543, 9545, 3, 1198, 599, 0, 9544, 9543, 1, 0, 0, 0, 9544, 9545, 1, 0, 0, 0, 9545, 1191, 1, 0, 0, 0, 9546, 9551, 3, 1196, 598, 0, 9547, 9548, 5, 2, 0, 0, 9548, 9549, 3, 1456, 728, 0, 9549, 9550, 5, 3, 0, 0, 9550, 9552, 1, 0, 0, 0, 9551, 9547, 1, 0, 0, 0, 9551, 9552, 1, 0, 0, 0, 9552, 1193, 1, 0, 0, 0, 9553, 9558, 3, 1196, 598, 0, 9554, 9555, 5, 2, 0, 0, 9555, 9556, 3, 1456, 728, 0, 9556, 9557, 5, 3, 0, 0, 9557, 9559, 1, 0, 0, 0, 9558, 9554, 1, 0, 0, 0, 9558, 9559, 1, 0, 0, 0, 9559, 1195, 1, 0, 0, 0, 9560, 9562, 7, 62, 0, 0, 9561, 9563, 3, 1198, 599, 0, 9562, 9561, 1, 0, 0, 0, 9562, 9563, 1, 0, 0, 0, 9563, 9571, 1, 0, 0, 0, 9564, 9571, 5, 423, 0, 0, 9565, 9566, 5, 405, 0, 0, 9566, 9568, 7, 63, 0, 0, 9567, 9569, 3, 1198, 599, 0, 9568, 9567, 1, 0, 0, 0, 9568, 9569, 1, 0, 0, 0, 9569, 9571, 1, 0, 0, 0, 9570, 9560, 1, 0, 0, 0, 9570, 9564, 1, 0, 0, 0, 9570, 9565, 1, 0, 0, 0, 9571, 1197, 1, 0, 0, 0, 9572, 9573, 5, 374, 0, 0, 9573, 1199, 1, 0, 0, 0, 9574, 9579, 7, 64, 0, 0, 9575, 9576, 5, 2, 0, 0, 9576, 9577, 3, 1456, 728, 0, 9577, 9578, 5, 3, 0, 0, 9578, 9580, 1, 0, 0, 0, 9579, 9575, 1, 0, 0, 0, 9579, 9580, 1, 0, 0, 0, 9580, 9582, 1, 0, 0, 0, 9581, 9583, 3, 1204, 602, 0, 9582, 9581, 1, 0, 0, 0, 9582, 9583, 1, 0, 0, 0, 9583, 1201, 1, 0, 0, 0, 9584, 9585, 5, 403, 0, 0, 9585, 1203, 1, 0, 0, 0, 9586, 9587, 5, 105, 0, 0, 9587, 9588, 5, 418, 0, 0, 9588, 9593, 5, 386, 0, 0, 9589, 9590, 5, 379, 0, 0, 9590, 9591, 5, 418, 0, 0, 9591, 9593, 5, 386, 0, 0, 9592, 9586, 1, 0, 0, 0, 9592, 9589, 1, 0, 0, 0, 9593, 1205, 1, 0, 0, 0, 9594, 9620, 5, 384, 0, 0, 9595, 9620, 5, 264, 0, 0, 9596, 9620, 5, 176, 0, 0, 9597, 9620, 5, 218, 0, 0, 9598, 9620, 5, 261, 0, 0, 9599, 9620, 3, 1208, 604, 0, 9600, 9601, 5, 384, 0, 0, 9601, 9602, 5, 94, 0, 0, 9602, 9620, 5, 264, 0, 0, 9603, 9604, 5, 176, 0, 0, 9604, 9608, 5, 94, 0, 0, 9605, 9609, 5, 218, 0, 0, 9606, 9609, 5, 261, 0, 0, 9607, 9609, 3, 1208, 604, 0, 9608, 9605, 1, 0, 0, 0, 9608, 9606, 1, 0, 0, 0, 9608, 9607, 1, 0, 0, 0, 9609, 9620, 1, 0, 0, 0, 9610, 9611, 5, 218, 0, 0, 9611, 9614, 5, 94, 0, 0, 9612, 9615, 5, 261, 0, 0, 9613, 9615, 3, 1208, 604, 0, 9614, 9612, 1, 0, 0, 0, 9614, 9613, 1, 0, 0, 0, 9615, 9620, 1, 0, 0, 0, 9616, 9617, 5, 261, 0, 0, 9617, 9618, 5, 94, 0, 0, 9618, 9620, 3, 1208, 604, 0, 9619, 9594, 1, 0, 0, 0, 9619, 9595, 1, 0, 0, 0, 9619, 9596, 1, 0, 0, 0, 9619, 9597, 1, 0, 0, 0, 9619, 9598, 1, 0, 0, 0, 9619, 9599, 1, 0, 0, 0, 9619, 9600, 1, 0, 0, 0, 9619, 9603, 1, 0, 0, 0, 9619, 9610, 1, 0, 0, 0, 9619, 9616, 1, 0, 0, 0, 9620, 1207, 1, 0, 0, 0, 9621, 9626, 5, 326, 0, 0, 9622, 9623, 5, 2, 0, 0, 9623, 9624, 3, 1456, 728, 0, 9624, 9625, 5, 3, 0, 0, 9625, 9627, 1, 0, 0, 0, 9626, 9622, 1, 0, 0, 0, 9626, 9627, 1, 0, 0, 0, 9627, 1209, 1, 0, 0, 0, 9628, 9629, 5, 197, 0, 0, 9629, 9630, 3, 1212, 606, 0, 9630, 1211, 1, 0, 0, 0, 9631, 9632, 3, 1214, 607, 0, 9632, 1213, 1, 0, 0, 0, 9633, 9635, 3, 1216, 608, 0, 9634, 9636, 3, 1322, 661, 0, 9635, 9634, 1, 0, 0, 0, 9635, 9636, 1, 0, 0, 0, 9636, 1215, 1, 0, 0, 0, 9637, 9642, 3, 1218, 609, 0, 9638, 9639, 7, 65, 0, 0, 9639, 9641, 3, 1218, 609, 0, 9640, 9638, 1, 0, 0, 0, 9641, 9644, 1, 0, 0, 0, 9642, 9640, 1, 0, 0, 0, 9642, 9643, 1, 0, 0, 0, 9643, 1217, 1, 0, 0, 0, 9644, 9642, 1, 0, 0, 0, 9645, 9650, 3, 1220, 610, 0, 9646, 9647, 5, 82, 0, 0, 9647, 9649, 3, 1220, 610, 0, 9648, 9646, 1, 0, 0, 0, 9649, 9652, 1, 0, 0, 0, 9650, 9648, 1, 0, 0, 0, 9650, 9651, 1, 0, 0, 0, 9651, 1219, 1, 0, 0, 0, 9652, 9650, 1, 0, 0, 0, 9653, 9658, 3, 1222, 611, 0, 9654, 9655, 5, 33, 0, 0, 9655, 9657, 3, 1222, 611, 0, 9656, 9654, 1, 0, 0, 0, 9657, 9660, 1, 0, 0, 0, 9658, 9656, 1, 0, 0, 0, 9658, 9659, 1, 0, 0, 0, 9659, 1221, 1, 0, 0, 0, 9660, 9658, 1, 0, 0, 0, 9661, 9667, 3, 1224, 612, 0, 9662, 9664, 5, 77, 0, 0, 9663, 9662, 1, 0, 0, 0, 9663, 9664, 1, 0, 0, 0, 9664, 9665, 1, 0, 0, 0, 9665, 9666, 5, 68, 0, 0, 9666, 9668, 3, 1362, 681, 0, 9667, 9663, 1, 0, 0, 0, 9667, 9668, 1, 0, 0, 0, 9668, 1223, 1, 0, 0, 0, 9669, 9671, 5, 77, 0, 0, 9670, 9669, 1, 0, 0, 0, 9670, 9671, 1, 0, 0, 0, 9671, 9672, 1, 0, 0, 0, 9672, 9673, 3, 1226, 613, 0, 9673, 1225, 1, 0, 0, 0, 9674, 9676, 3, 1228, 614, 0, 9675, 9677, 7, 66, 0, 0, 9676, 9675, 1, 0, 0, 0, 9676, 9677, 1, 0, 0, 0, 9677, 1227, 1, 0, 0, 0, 9678, 9702, 3, 1230, 615, 0, 9679, 9681, 5, 116, 0, 0, 9680, 9682, 5, 77, 0, 0, 9681, 9680, 1, 0, 0, 0, 9681, 9682, 1, 0, 0, 0, 9682, 9700, 1, 0, 0, 0, 9683, 9701, 5, 78, 0, 0, 9684, 9701, 5, 96, 0, 0, 9685, 9701, 5, 60, 0, 0, 9686, 9701, 5, 365, 0, 0, 9687, 9688, 5, 56, 0, 0, 9688, 9689, 5, 64, 0, 0, 9689, 9701, 3, 1212, 606, 0, 9690, 9691, 5, 275, 0, 0, 9691, 9692, 5, 2, 0, 0, 9692, 9693, 3, 1342, 671, 0, 9693, 9694, 5, 3, 0, 0, 9694, 9701, 1, 0, 0, 0, 9695, 9701, 5, 188, 0, 0, 9696, 9698, 3, 1352, 676, 0, 9697, 9696, 1, 0, 0, 0, 9697, 9698, 1, 0, 0, 0, 9698, 9699, 1, 0, 0, 0, 9699, 9701, 5, 478, 0, 0, 9700, 9683, 1, 0, 0, 0, 9700, 9684, 1, 0, 0, 0, 9700, 9685, 1, 0, 0, 0, 9700, 9686, 1, 0, 0, 0, 9700, 9687, 1, 0, 0, 0, 9700, 9690, 1, 0, 0, 0, 9700, 9695, 1, 0, 0, 0, 9700, 9697, 1, 0, 0, 0, 9701, 9703, 1, 0, 0, 0, 9702, 9679, 1, 0, 0, 0, 9702, 9703, 1, 0, 0, 0, 9703, 1229, 1, 0, 0, 0, 9704, 9716, 3, 1232, 616, 0, 9705, 9706, 7, 67, 0, 0, 9706, 9717, 3, 1232, 616, 0, 9707, 9708, 3, 1326, 663, 0, 9708, 9714, 3, 1316, 658, 0, 9709, 9715, 3, 1002, 501, 0, 9710, 9711, 5, 2, 0, 0, 9711, 9712, 3, 1212, 606, 0, 9712, 9713, 5, 3, 0, 0, 9713, 9715, 1, 0, 0, 0, 9714, 9709, 1, 0, 0, 0, 9714, 9710, 1, 0, 0, 0, 9715, 9717, 1, 0, 0, 0, 9716, 9705, 1, 0, 0, 0, 9716, 9707, 1, 0, 0, 0, 9716, 9717, 1, 0, 0, 0, 9717, 1231, 1, 0, 0, 0, 9718, 9736, 3, 1234, 617, 0, 9719, 9721, 5, 77, 0, 0, 9720, 9719, 1, 0, 0, 0, 9720, 9721, 1, 0, 0, 0, 9721, 9730, 1, 0, 0, 0, 9722, 9731, 5, 120, 0, 0, 9723, 9731, 5, 114, 0, 0, 9724, 9725, 5, 127, 0, 0, 9725, 9731, 5, 94, 0, 0, 9726, 9728, 5, 387, 0, 0, 9727, 9729, 5, 91, 0, 0, 9728, 9727, 1, 0, 0, 0, 9728, 9729, 1, 0, 0, 0, 9729, 9731, 1, 0, 0, 0, 9730, 9722, 1, 0, 0, 0, 9730, 9723, 1, 0, 0, 0, 9730, 9724, 1, 0, 0, 0, 9730, 9726, 1, 0, 0, 0, 9731, 9732, 1, 0, 0, 0, 9732, 9734, 3, 1234, 617, 0, 9733, 9735, 3, 1210, 605, 0, 9734, 9733, 1, 0, 0, 0, 9734, 9735, 1, 0, 0, 0, 9735, 9737, 1, 0, 0, 0, 9736, 9720, 1, 0, 0, 0, 9736, 9737, 1, 0, 0, 0, 9737, 1233, 1, 0, 0, 0, 9738, 9744, 3, 1236, 618, 0, 9739, 9740, 3, 1322, 661, 0, 9740, 9741, 3, 1236, 618, 0, 9741, 9743, 1, 0, 0, 0, 9742, 9739, 1, 0, 0, 0, 9743, 9746, 1, 0, 0, 0, 9744, 9742, 1, 0, 0, 0, 9744, 9745, 1, 0, 0, 0, 9745, 1235, 1, 0, 0, 0, 9746, 9744, 1, 0, 0, 0, 9747, 9749, 3, 1322, 661, 0, 9748, 9747, 1, 0, 0, 0, 9748, 9749, 1, 0, 0, 0, 9749, 9750, 1, 0, 0, 0, 9750, 9751, 3, 1238, 619, 0, 9751, 1237, 1, 0, 0, 0, 9752, 9757, 3, 1240, 620, 0, 9753, 9754, 7, 68, 0, 0, 9754, 9756, 3, 1240, 620, 0, 9755, 9753, 1, 0, 0, 0, 9756, 9759, 1, 0, 0, 0, 9757, 9755, 1, 0, 0, 0, 9757, 9758, 1, 0, 0, 0, 9758, 1239, 1, 0, 0, 0, 9759, 9757, 1, 0, 0, 0, 9760, 9765, 3, 1242, 621, 0, 9761, 9762, 7, 69, 0, 0, 9762, 9764, 3, 1242, 621, 0, 9763, 9761, 1, 0, 0, 0, 9764, 9767, 1, 0, 0, 0, 9765, 9763, 1, 0, 0, 0, 9765, 9766, 1, 0, 0, 0, 9766, 1241, 1, 0, 0, 0, 9767, 9765, 1, 0, 0, 0, 9768, 9771, 3, 1244, 622, 0, 9769, 9770, 5, 15, 0, 0, 9770, 9772, 3, 1212, 606, 0, 9771, 9769, 1, 0, 0, 0, 9771, 9772, 1, 0, 0, 0, 9772, 1243, 1, 0, 0, 0, 9773, 9775, 7, 68, 0, 0, 9774, 9773, 1, 0, 0, 0, 9774, 9775, 1, 0, 0, 0, 9775, 9776, 1, 0, 0, 0, 9776, 9777, 3, 1246, 623, 0, 9777, 1245, 1, 0, 0, 0, 9778, 9783, 3, 1248, 624, 0, 9779, 9780, 5, 142, 0, 0, 9780, 9781, 5, 418, 0, 0, 9781, 9782, 5, 386, 0, 0, 9782, 9784, 3, 1212, 606, 0, 9783, 9779, 1, 0, 0, 0, 9783, 9784, 1, 0, 0, 0, 9784, 1247, 1, 0, 0, 0, 9785, 9788, 3, 1250, 625, 0, 9786, 9787, 5, 43, 0, 0, 9787, 9789, 3, 558, 279, 0, 9788, 9786, 1, 0, 0, 0, 9788, 9789, 1, 0, 0, 0, 9789, 1249, 1, 0, 0, 0, 9790, 9795, 3, 1254, 627, 0, 9791, 9792, 5, 26, 0, 0, 9792, 9794, 3, 1168, 584, 0, 9793, 9791, 1, 0, 0, 0, 9794, 9797, 1, 0, 0, 0, 9795, 9793, 1, 0, 0, 0, 9795, 9796, 1, 0, 0, 0, 9796, 1251, 1, 0, 0, 0, 9797, 9795, 1, 0, 0, 0, 9798, 9799, 6, 626, -1, 0, 9799, 9806, 3, 1254, 627, 0, 9800, 9801, 7, 68, 0, 0, 9801, 9806, 3, 1252, 626, 9, 9802, 9803, 3, 1322, 661, 0, 9803, 9804, 3, 1252, 626, 3, 9804, 9806, 1, 0, 0, 0, 9805, 9798, 1, 0, 0, 0, 9805, 9800, 1, 0, 0, 0, 9805, 9802, 1, 0, 0, 0, 9806, 9846, 1, 0, 0, 0, 9807, 9808, 10, 8, 0, 0, 9808, 9809, 5, 15, 0, 0, 9809, 9845, 3, 1252, 626, 9, 9810, 9811, 10, 7, 0, 0, 9811, 9812, 7, 69, 0, 0, 9812, 9845, 3, 1252, 626, 8, 9813, 9814, 10, 6, 0, 0, 9814, 9815, 7, 68, 0, 0, 9815, 9845, 3, 1252, 626, 7, 9816, 9817, 10, 5, 0, 0, 9817, 9818, 3, 1322, 661, 0, 9818, 9819, 3, 1252, 626, 6, 9819, 9845, 1, 0, 0, 0, 9820, 9821, 10, 4, 0, 0, 9821, 9822, 7, 67, 0, 0, 9822, 9845, 3, 1252, 626, 5, 9823, 9824, 10, 10, 0, 0, 9824, 9825, 5, 26, 0, 0, 9825, 9845, 3, 1168, 584, 0, 9826, 9827, 10, 2, 0, 0, 9827, 9845, 3, 1322, 661, 0, 9828, 9829, 10, 1, 0, 0, 9829, 9831, 5, 116, 0, 0, 9830, 9832, 5, 77, 0, 0, 9831, 9830, 1, 0, 0, 0, 9831, 9832, 1, 0, 0, 0, 9832, 9842, 1, 0, 0, 0, 9833, 9834, 5, 56, 0, 0, 9834, 9835, 5, 64, 0, 0, 9835, 9843, 3, 1252, 626, 0, 9836, 9837, 5, 275, 0, 0, 9837, 9838, 5, 2, 0, 0, 9838, 9839, 3, 1342, 671, 0, 9839, 9840, 5, 3, 0, 0, 9840, 9843, 1, 0, 0, 0, 9841, 9843, 5, 188, 0, 0, 9842, 9833, 1, 0, 0, 0, 9842, 9836, 1, 0, 0, 0, 9842, 9841, 1, 0, 0, 0, 9843, 9845, 1, 0, 0, 0, 9844, 9807, 1, 0, 0, 0, 9844, 9810, 1, 0, 0, 0, 9844, 9813, 1, 0, 0, 0, 9844, 9816, 1, 0, 0, 0, 9844, 9820, 1, 0, 0, 0, 9844, 9823, 1, 0, 0, 0, 9844, 9826, 1, 0, 0, 0, 9844, 9828, 1, 0, 0, 0, 9845, 9848, 1, 0, 0, 0, 9846, 9844, 1, 0, 0, 0, 9846, 9847, 1, 0, 0, 0, 9847, 1253, 1, 0, 0, 0, 9848, 9846, 1, 0, 0, 0, 9849, 9850, 5, 396, 0, 0, 9850, 9886, 3, 1002, 501, 0, 9851, 9854, 5, 35, 0, 0, 9852, 9855, 3, 1002, 501, 0, 9853, 9855, 3, 1344, 672, 0, 9854, 9852, 1, 0, 0, 0, 9854, 9853, 1, 0, 0, 0, 9855, 9886, 1, 0, 0, 0, 9856, 9857, 5, 28, 0, 0, 9857, 9886, 3, 1382, 691, 0, 9858, 9859, 5, 470, 0, 0, 9859, 9860, 5, 2, 0, 0, 9860, 9861, 3, 1328, 664, 0, 9861, 9862, 5, 3, 0, 0, 9862, 9886, 1, 0, 0, 0, 9863, 9864, 5, 98, 0, 0, 9864, 9886, 3, 1002, 501, 0, 9865, 9886, 3, 1448, 724, 0, 9866, 9886, 3, 1256, 628, 0, 9867, 9868, 5, 2, 0, 0, 9868, 9869, 3, 1212, 606, 0, 9869, 9870, 5, 3, 0, 0, 9870, 9871, 3, 1382, 691, 0, 9871, 9886, 1, 0, 0, 0, 9872, 9886, 3, 1364, 682, 0, 9873, 9886, 3, 1260, 630, 0, 9874, 9876, 3, 1002, 501, 0, 9875, 9877, 3, 1380, 690, 0, 9876, 9875, 1, 0, 0, 0, 9876, 9877, 1, 0, 0, 0, 9877, 9886, 1, 0, 0, 0, 9878, 9886, 3, 1312, 656, 0, 9879, 9886, 3, 1314, 657, 0, 9880, 9881, 3, 1310, 655, 0, 9881, 9882, 5, 125, 0, 0, 9882, 9883, 3, 1310, 655, 0, 9883, 9886, 1, 0, 0, 0, 9884, 9886, 3, 1374, 687, 0, 9885, 9849, 1, 0, 0, 0, 9885, 9851, 1, 0, 0, 0, 9885, 9856, 1, 0, 0, 0, 9885, 9858, 1, 0, 0, 0, 9885, 9863, 1, 0, 0, 0, 9885, 9865, 1, 0, 0, 0, 9885, 9866, 1, 0, 0, 0, 9885, 9867, 1, 0, 0, 0, 9885, 9872, 1, 0, 0, 0, 9885, 9873, 1, 0, 0, 0, 9885, 9874, 1, 0, 0, 0, 9885, 9878, 1, 0, 0, 0, 9885, 9879, 1, 0, 0, 0, 9885, 9880, 1, 0, 0, 0, 9885, 9884, 1, 0, 0, 0, 9886, 1255, 1, 0, 0, 0, 9887, 9888, 5, 574, 0, 0, 9888, 1257, 1, 0, 0, 0, 9889, 9915, 3, 1444, 722, 0, 9890, 9912, 5, 2, 0, 0, 9891, 9895, 3, 1338, 669, 0, 9892, 9893, 5, 6, 0, 0, 9893, 9894, 5, 101, 0, 0, 9894, 9896, 3, 1340, 670, 0, 9895, 9892, 1, 0, 0, 0, 9895, 9896, 1, 0, 0, 0, 9896, 9898, 1, 0, 0, 0, 9897, 9899, 3, 1042, 521, 0, 9898, 9897, 1, 0, 0, 0, 9898, 9899, 1, 0, 0, 0, 9899, 9913, 1, 0, 0, 0, 9900, 9901, 5, 101, 0, 0, 9901, 9903, 3, 1340, 670, 0, 9902, 9904, 3, 1042, 521, 0, 9903, 9902, 1, 0, 0, 0, 9903, 9904, 1, 0, 0, 0, 9904, 9913, 1, 0, 0, 0, 9905, 9906, 7, 57, 0, 0, 9906, 9908, 3, 1338, 669, 0, 9907, 9909, 3, 1042, 521, 0, 9908, 9907, 1, 0, 0, 0, 9908, 9909, 1, 0, 0, 0, 9909, 9913, 1, 0, 0, 0, 9910, 9913, 5, 9, 0, 0, 9911, 9913, 1, 0, 0, 0, 9912, 9891, 1, 0, 0, 0, 9912, 9900, 1, 0, 0, 0, 9912, 9905, 1, 0, 0, 0, 9912, 9910, 1, 0, 0, 0, 9912, 9911, 1, 0, 0, 0, 9913, 9914, 1, 0, 0, 0, 9914, 9916, 5, 3, 0, 0, 9915, 9890, 1, 0, 0, 0, 9915, 9916, 1, 0, 0, 0, 9916, 1259, 1, 0, 0, 0, 9917, 9919, 3, 1258, 629, 0, 9918, 9920, 3, 1284, 642, 0, 9919, 9918, 1, 0, 0, 0, 9919, 9920, 1, 0, 0, 0, 9920, 9922, 1, 0, 0, 0, 9921, 9923, 3, 1286, 643, 0, 9922, 9921, 1, 0, 0, 0, 9922, 9923, 1, 0, 0, 0, 9923, 9925, 1, 0, 0, 0, 9924, 9926, 3, 1294, 647, 0, 9925, 9924, 1, 0, 0, 0, 9925, 9926, 1, 0, 0, 0, 9926, 9929, 1, 0, 0, 0, 9927, 9929, 3, 1264, 632, 0, 9928, 9917, 1, 0, 0, 0, 9928, 9927, 1, 0, 0, 0, 9929, 1261, 1, 0, 0, 0, 9930, 9933, 3, 1258, 629, 0, 9931, 9933, 3, 1264, 632, 0, 9932, 9930, 1, 0, 0, 0, 9932, 9931, 1, 0, 0, 0, 9933, 1263, 1, 0, 0, 0, 9934, 9935, 5, 108, 0, 0, 9935, 9936, 5, 62, 0, 0, 9936, 9937, 5, 2, 0, 0, 9937, 9938, 3, 1212, 606, 0, 9938, 9939, 5, 3, 0, 0, 9939, 10119, 1, 0, 0, 0, 9940, 10119, 5, 48, 0, 0, 9941, 9946, 5, 50, 0, 0, 9942, 9943, 5, 2, 0, 0, 9943, 9944, 3, 1456, 728, 0, 9944, 9945, 5, 3, 0, 0, 9945, 9947, 1, 0, 0, 0, 9946, 9942, 1, 0, 0, 0, 9946, 9947, 1, 0, 0, 0, 9947, 10119, 1, 0, 0, 0, 9948, 9953, 5, 51, 0, 0, 9949, 9950, 5, 2, 0, 0, 9950, 9951, 3, 1456, 728, 0, 9951, 9952, 5, 3, 0, 0, 9952, 9954, 1, 0, 0, 0, 9953, 9949, 1, 0, 0, 0, 9953, 9954, 1, 0, 0, 0, 9954, 10119, 1, 0, 0, 0, 9955, 9960, 5, 75, 0, 0, 9956, 9957, 5, 2, 0, 0, 9957, 9958, 3, 1456, 728, 0, 9958, 9959, 5, 3, 0, 0, 9959, 9961, 1, 0, 0, 0, 9960, 9956, 1, 0, 0, 0, 9960, 9961, 1, 0, 0, 0, 9961, 10119, 1, 0, 0, 0, 9962, 9967, 5, 76, 0, 0, 9963, 9964, 5, 2, 0, 0, 9964, 9965, 3, 1456, 728, 0, 9965, 9966, 5, 3, 0, 0, 9966, 9968, 1, 0, 0, 0, 9967, 9963, 1, 0, 0, 0, 9967, 9968, 1, 0, 0, 0, 9968, 10119, 1, 0, 0, 0, 9969, 10119, 5, 49, 0, 0, 9970, 10119, 5, 52, 0, 0, 9971, 10119, 5, 89, 0, 0, 9972, 10119, 5, 99, 0, 0, 9973, 10119, 5, 47, 0, 0, 9974, 10119, 5, 111, 0, 0, 9975, 9976, 5, 41, 0, 0, 9976, 9977, 5, 2, 0, 0, 9977, 9978, 3, 1212, 606, 0, 9978, 9979, 5, 36, 0, 0, 9979, 9980, 3, 1168, 584, 0, 9980, 9981, 5, 3, 0, 0, 9981, 10119, 1, 0, 0, 0, 9982, 9983, 5, 397, 0, 0, 9983, 9985, 5, 2, 0, 0, 9984, 9986, 3, 1348, 674, 0, 9985, 9984, 1, 0, 0, 0, 9985, 9986, 1, 0, 0, 0, 9986, 9987, 1, 0, 0, 0, 9987, 10119, 5, 3, 0, 0, 9988, 9989, 5, 489, 0, 0, 9989, 9990, 5, 2, 0, 0, 9990, 9993, 3, 1212, 606, 0, 9991, 9992, 5, 6, 0, 0, 9992, 9994, 3, 1352, 676, 0, 9993, 9991, 1, 0, 0, 0, 9993, 9994, 1, 0, 0, 0, 9994, 9995, 1, 0, 0, 0, 9995, 9996, 5, 3, 0, 0, 9996, 10119, 1, 0, 0, 0, 9997, 9998, 5, 410, 0, 0, 9998, 9999, 5, 2, 0, 0, 9999, 10000, 3, 1354, 677, 0, 10000, 10001, 5, 3, 0, 0, 10001, 10119, 1, 0, 0, 0, 10002, 10003, 5, 411, 0, 0, 10003, 10005, 5, 2, 0, 0, 10004, 10006, 3, 1356, 678, 0, 10005, 10004, 1, 0, 0, 0, 10005, 10006, 1, 0, 0, 0, 10006, 10007, 1, 0, 0, 0, 10007, 10119, 5, 3, 0, 0, 10008, 10009, 5, 417, 0, 0, 10009, 10011, 5, 2, 0, 0, 10010, 10012, 3, 1358, 679, 0, 10011, 10010, 1, 0, 0, 0, 10011, 10012, 1, 0, 0, 0, 10012, 10013, 1, 0, 0, 0, 10013, 10119, 5, 3, 0, 0, 10014, 10015, 5, 420, 0, 0, 10015, 10016, 5, 2, 0, 0, 10016, 10017, 3, 1212, 606, 0, 10017, 10018, 5, 36, 0, 0, 10018, 10019, 3, 1168, 584, 0, 10019, 10020, 5, 3, 0, 0, 10020, 10119, 1, 0, 0, 0, 10021, 10022, 5, 421, 0, 0, 10022, 10024, 5, 2, 0, 0, 10023, 10025, 7, 70, 0, 0, 10024, 10023, 1, 0, 0, 0, 10024, 10025, 1, 0, 0, 0, 10025, 10026, 1, 0, 0, 0, 10026, 10027, 3, 1360, 680, 0, 10027, 10028, 5, 3, 0, 0, 10028, 10119, 1, 0, 0, 0, 10029, 10030, 5, 408, 0, 0, 10030, 10031, 5, 2, 0, 0, 10031, 10032, 3, 1212, 606, 0, 10032, 10033, 5, 6, 0, 0, 10033, 10034, 3, 1212, 606, 0, 10034, 10035, 5, 3, 0, 0, 10035, 10119, 1, 0, 0, 0, 10036, 10037, 5, 393, 0, 0, 10037, 10038, 5, 2, 0, 0, 10038, 10039, 3, 1328, 664, 0, 10039, 10040, 5, 3, 0, 0, 10040, 10119, 1, 0, 0, 0, 10041, 10042, 5, 399, 0, 0, 10042, 10043, 5, 2, 0, 0, 10043, 10044, 3, 1328, 664, 0, 10044, 10045, 5, 3, 0, 0, 10045, 10119, 1, 0, 0, 0, 10046, 10047, 5, 404, 0, 0, 10047, 10048, 5, 2, 0, 0, 10048, 10049, 3, 1328, 664, 0, 10049, 10050, 5, 3, 0, 0, 10050, 10119, 1, 0, 0, 0, 10051, 10052, 5, 425, 0, 0, 10052, 10053, 5, 2, 0, 0, 10053, 10054, 3, 1328, 664, 0, 10054, 10055, 5, 3, 0, 0, 10055, 10119, 1, 0, 0, 0, 10056, 10057, 5, 426, 0, 0, 10057, 10058, 5, 2, 0, 0, 10058, 10059, 5, 266, 0, 0, 10059, 10065, 3, 1490, 745, 0, 10060, 10063, 5, 6, 0, 0, 10061, 10064, 3, 1270, 635, 0, 10062, 10064, 3, 1328, 664, 0, 10063, 10061, 1, 0, 0, 0, 10063, 10062, 1, 0, 0, 0, 10064, 10066, 1, 0, 0, 0, 10065, 10060, 1, 0, 0, 0, 10065, 10066, 1, 0, 0, 0, 10066, 10067, 1, 0, 0, 0, 10067, 10068, 5, 3, 0, 0, 10068, 10119, 1, 0, 0, 0, 10069, 10070, 5, 427, 0, 0, 10070, 10071, 5, 2, 0, 0, 10071, 10072, 3, 1254, 627, 0, 10072, 10073, 3, 1280, 640, 0, 10073, 10074, 5, 3, 0, 0, 10074, 10119, 1, 0, 0, 0, 10075, 10076, 5, 428, 0, 0, 10076, 10077, 5, 2, 0, 0, 10077, 10078, 3, 1272, 636, 0, 10078, 10079, 5, 3, 0, 0, 10079, 10119, 1, 0, 0, 0, 10080, 10081, 5, 429, 0, 0, 10081, 10082, 5, 2, 0, 0, 10082, 10083, 3, 1276, 638, 0, 10083, 10085, 3, 1212, 606, 0, 10084, 10086, 3, 1278, 639, 0, 10085, 10084, 1, 0, 0, 0, 10085, 10086, 1, 0, 0, 0, 10086, 10087, 1, 0, 0, 0, 10087, 10088, 5, 3, 0, 0, 10088, 10119, 1, 0, 0, 0, 10089, 10090, 5, 430, 0, 0, 10090, 10091, 5, 2, 0, 0, 10091, 10092, 5, 266, 0, 0, 10092, 10095, 3, 1490, 745, 0, 10093, 10094, 5, 6, 0, 0, 10094, 10096, 3, 1212, 606, 0, 10095, 10093, 1, 0, 0, 0, 10095, 10096, 1, 0, 0, 0, 10096, 10097, 1, 0, 0, 0, 10097, 10098, 5, 3, 0, 0, 10098, 10119, 1, 0, 0, 0, 10099, 10100, 5, 431, 0, 0, 10100, 10101, 5, 2, 0, 0, 10101, 10102, 5, 383, 0, 0, 10102, 10103, 3, 1212, 606, 0, 10103, 10104, 5, 6, 0, 0, 10104, 10106, 3, 1266, 633, 0, 10105, 10107, 3, 1268, 634, 0, 10106, 10105, 1, 0, 0, 0, 10106, 10107, 1, 0, 0, 0, 10107, 10108, 1, 0, 0, 0, 10108, 10109, 5, 3, 0, 0, 10109, 10119, 1, 0, 0, 0, 10110, 10111, 5, 432, 0, 0, 10111, 10112, 5, 2, 0, 0, 10112, 10113, 3, 1276, 638, 0, 10113, 10114, 3, 1212, 606, 0, 10114, 10115, 5, 36, 0, 0, 10115, 10116, 3, 1172, 586, 0, 10116, 10117, 5, 3, 0, 0, 10117, 10119, 1, 0, 0, 0, 10118, 9934, 1, 0, 0, 0, 10118, 9940, 1, 0, 0, 0, 10118, 9941, 1, 0, 0, 0, 10118, 9948, 1, 0, 0, 0, 10118, 9955, 1, 0, 0, 0, 10118, 9962, 1, 0, 0, 0, 10118, 9969, 1, 0, 0, 0, 10118, 9970, 1, 0, 0, 0, 10118, 9971, 1, 0, 0, 0, 10118, 9972, 1, 0, 0, 0, 10118, 9973, 1, 0, 0, 0, 10118, 9974, 1, 0, 0, 0, 10118, 9975, 1, 0, 0, 0, 10118, 9982, 1, 0, 0, 0, 10118, 9988, 1, 0, 0, 0, 10118, 9997, 1, 0, 0, 0, 10118, 10002, 1, 0, 0, 0, 10118, 10008, 1, 0, 0, 0, 10118, 10014, 1, 0, 0, 0, 10118, 10021, 1, 0, 0, 0, 10118, 10029, 1, 0, 0, 0, 10118, 10036, 1, 0, 0, 0, 10118, 10041, 1, 0, 0, 0, 10118, 10046, 1, 0, 0, 0, 10118, 10051, 1, 0, 0, 0, 10118, 10056, 1, 0, 0, 0, 10118, 10069, 1, 0, 0, 0, 10118, 10075, 1, 0, 0, 0, 10118, 10080, 1, 0, 0, 0, 10118, 10089, 1, 0, 0, 0, 10118, 10099, 1, 0, 0, 0, 10118, 10110, 1, 0, 0, 0, 10119, 1265, 1, 0, 0, 0, 10120, 10121, 5, 375, 0, 0, 10121, 10126, 3, 1212, 606, 0, 10122, 10123, 5, 375, 0, 0, 10123, 10124, 5, 269, 0, 0, 10124, 10126, 5, 450, 0, 0, 10125, 10120, 1, 0, 0, 0, 10125, 10122, 1, 0, 0, 0, 10126, 1267, 1, 0, 0, 0, 10127, 10128, 5, 6, 0, 0, 10128, 10129, 5, 339, 0, 0, 10129, 10138, 5, 385, 0, 0, 10130, 10131, 5, 6, 0, 0, 10131, 10132, 5, 339, 0, 0, 10132, 10138, 5, 269, 0, 0, 10133, 10134, 5, 6, 0, 0, 10134, 10135, 5, 339, 0, 0, 10135, 10136, 5, 269, 0, 0, 10136, 10138, 5, 450, 0, 0, 10137, 10127, 1, 0, 0, 0, 10137, 10130, 1, 0, 0, 0, 10137, 10133, 1, 0, 0, 0, 10138, 1269, 1, 0, 0, 0, 10139, 10140, 5, 424, 0, 0, 10140, 10141, 5, 2, 0, 0, 10141, 10142, 3, 1272, 636, 0, 10142, 10143, 5, 3, 0, 0, 10143, 1271, 1, 0, 0, 0, 10144, 10149, 3, 1274, 637, 0, 10145, 10146, 5, 6, 0, 0, 10146, 10148, 3, 1274, 637, 0, 10147, 10145, 1, 0, 0, 0, 10148, 10151, 1, 0, 0, 0, 10149, 10147, 1, 0, 0, 0, 10149, 10150, 1, 0, 0, 0, 10150, 1273, 1, 0, 0, 0, 10151, 10149, 1, 0, 0, 0, 10152, 10155, 3, 1212, 606, 0, 10153, 10154, 5, 36, 0, 0, 10154, 10156, 3, 1490, 745, 0, 10155, 10153, 1, 0, 0, 0, 10155, 10156, 1, 0, 0, 0, 10156, 1275, 1, 0, 0, 0, 10157, 10158, 7, 71, 0, 0, 10158, 1277, 1, 0, 0, 0, 10159, 10160, 5, 292, 0, 0, 10160, 10164, 5, 378, 0, 0, 10161, 10162, 5, 347, 0, 0, 10162, 10164, 5, 378, 0, 0, 10163, 10159, 1, 0, 0, 0, 10163, 10161, 1, 0, 0, 0, 10164, 1279, 1, 0, 0, 0, 10165, 10166, 5, 286, 0, 0, 10166, 10181, 3, 1254, 627, 0, 10167, 10168, 5, 286, 0, 0, 10168, 10169, 3, 1254, 627, 0, 10169, 10170, 3, 1282, 641, 0, 10170, 10181, 1, 0, 0, 0, 10171, 10172, 5, 286, 0, 0, 10172, 10173, 3, 1282, 641, 0, 10173, 10174, 3, 1254, 627, 0, 10174, 10181, 1, 0, 0, 0, 10175, 10176, 5, 286, 0, 0, 10176, 10177, 3, 1282, 641, 0, 10177, 10178, 3, 1254, 627, 0, 10178, 10179, 3, 1282, 641, 0, 10179, 10181, 1, 0, 0, 0, 10180, 10165, 1, 0, 0, 0, 10180, 10167, 1, 0, 0, 0, 10180, 10171, 1, 0, 0, 0, 10180, 10175, 1, 0, 0, 0, 10181, 1281, 1, 0, 0, 0, 10182, 10183, 5, 147, 0, 0, 10183, 10184, 7, 72, 0, 0, 10184, 1283, 1, 0, 0, 0, 10185, 10186, 5, 479, 0, 0, 10186, 10187, 5, 66, 0, 0, 10187, 10188, 5, 2, 0, 0, 10188, 10189, 3, 1044, 522, 0, 10189, 10190, 5, 3, 0, 0, 10190, 1285, 1, 0, 0, 0, 10191, 10192, 5, 480, 0, 0, 10192, 10193, 5, 2, 0, 0, 10193, 10194, 5, 103, 0, 0, 10194, 10195, 3, 1212, 606, 0, 10195, 10196, 5, 3, 0, 0, 10196, 1287, 1, 0, 0, 0, 10197, 10198, 5, 104, 0, 0, 10198, 10199, 3, 1290, 645, 0, 10199, 1289, 1, 0, 0, 0, 10200, 10205, 3, 1292, 646, 0, 10201, 10202, 5, 6, 0, 0, 10202, 10204, 3, 1292, 646, 0, 10203, 10201, 1, 0, 0, 0, 10204, 10207, 1, 0, 0, 0, 10205, 10203, 1, 0, 0, 0, 10205, 10206, 1, 0, 0, 0, 10206, 1291, 1, 0, 0, 0, 10207, 10205, 1, 0, 0, 0, 10208, 10209, 3, 1474, 737, 0, 10209, 10210, 5, 36, 0, 0, 10210, 10211, 3, 1296, 648, 0, 10211, 1293, 1, 0, 0, 0, 10212, 10215, 5, 124, 0, 0, 10213, 10216, 3, 1296, 648, 0, 10214, 10216, 3, 1474, 737, 0, 10215, 10213, 1, 0, 0, 0, 10215, 10214, 1, 0, 0, 0, 10216, 1295, 1, 0, 0, 0, 10217, 10219, 5, 2, 0, 0, 10218, 10220, 3, 1298, 649, 0, 10219, 10218, 1, 0, 0, 0, 10219, 10220, 1, 0, 0, 0, 10220, 10222, 1, 0, 0, 0, 10221, 10223, 3, 1300, 650, 0, 10222, 10221, 1, 0, 0, 0, 10222, 10223, 1, 0, 0, 0, 10223, 10225, 1, 0, 0, 0, 10224, 10226, 3, 1042, 521, 0, 10225, 10224, 1, 0, 0, 0, 10225, 10226, 1, 0, 0, 0, 10226, 10228, 1, 0, 0, 0, 10227, 10229, 3, 1302, 651, 0, 10228, 10227, 1, 0, 0, 0, 10228, 10229, 1, 0, 0, 0, 10229, 10230, 1, 0, 0, 0, 10230, 10231, 5, 3, 0, 0, 10231, 1297, 1, 0, 0, 0, 10232, 10233, 3, 1474, 737, 0, 10233, 1299, 1, 0, 0, 0, 10234, 10235, 5, 285, 0, 0, 10235, 10236, 5, 147, 0, 0, 10236, 10237, 3, 1328, 664, 0, 10237, 1301, 1, 0, 0, 0, 10238, 10239, 5, 299, 0, 0, 10239, 10241, 3, 1304, 652, 0, 10240, 10242, 3, 1308, 654, 0, 10241, 10240, 1, 0, 0, 0, 10241, 10242, 1, 0, 0, 0, 10242, 10254, 1, 0, 0, 0, 10243, 10244, 5, 320, 0, 0, 10244, 10246, 3, 1304, 652, 0, 10245, 10247, 3, 1308, 654, 0, 10246, 10245, 1, 0, 0, 0, 10246, 10247, 1, 0, 0, 0, 10247, 10254, 1, 0, 0, 0, 10248, 10249, 5, 481, 0, 0, 10249, 10251, 3, 1304, 652, 0, 10250, 10252, 3, 1308, 654, 0, 10251, 10250, 1, 0, 0, 0, 10251, 10252, 1, 0, 0, 0, 10252, 10254, 1, 0, 0, 0, 10253, 10238, 1, 0, 0, 0, 10253, 10243, 1, 0, 0, 0, 10253, 10248, 1, 0, 0, 0, 10254, 1303, 1, 0, 0, 0, 10255, 10262, 3, 1306, 653, 0, 10256, 10257, 5, 387, 0, 0, 10257, 10258, 3, 1306, 653, 0, 10258, 10259, 5, 33, 0, 0, 10259, 10260, 3, 1306, 653, 0, 10260, 10262, 1, 0, 0, 0, 10261, 10255, 1, 0, 0, 0, 10261, 10256, 1, 0, 0, 0, 10262, 1305, 1, 0, 0, 0, 10263, 10264, 5, 362, 0, 0, 10264, 10271, 7, 73, 0, 0, 10265, 10266, 5, 434, 0, 0, 10266, 10271, 5, 414, 0, 0, 10267, 10268, 3, 1212, 606, 0, 10268, 10269, 7, 73, 0, 0, 10269, 10271, 1, 0, 0, 0, 10270, 10263, 1, 0, 0, 0, 10270, 10265, 1, 0, 0, 0, 10270, 10267, 1, 0, 0, 0, 10271, 1307, 1, 0, 0, 0, 10272, 10279, 5, 199, 0, 0, 10273, 10274, 5, 434, 0, 0, 10274, 10280, 5, 414, 0, 0, 10275, 10280, 5, 66, 0, 0, 10276, 10280, 5, 467, 0, 0, 10277, 10278, 5, 269, 0, 0, 10278, 10280, 5, 482, 0, 0, 10279, 10273, 1, 0, 0, 0, 10279, 10275, 1, 0, 0, 0, 10279, 10276, 1, 0, 0, 0, 10279, 10277, 1, 0, 0, 0, 10280, 1309, 1, 0, 0, 0, 10281, 10282, 5, 414, 0, 0, 10282, 10284, 5, 2, 0, 0, 10283, 10285, 3, 1328, 664, 0, 10284, 10283, 1, 0, 0, 0, 10284, 10285, 1, 0, 0, 0, 10285, 10286, 1, 0, 0, 0, 10286, 10294, 5, 3, 0, 0, 10287, 10288, 5, 2, 0, 0, 10288, 10289, 3, 1328, 664, 0, 10289, 10290, 5, 6, 0, 0, 10290, 10291, 3, 1212, 606, 0, 10291, 10292, 5, 3, 0, 0, 10292, 10294, 1, 0, 0, 0, 10293, 10281, 1, 0, 0, 0, 10293, 10287, 1, 0, 0, 0, 10294, 1311, 1, 0, 0, 0, 10295, 10296, 5, 414, 0, 0, 10296, 10298, 5, 2, 0, 0, 10297, 10299, 3, 1328, 664, 0, 10298, 10297, 1, 0, 0, 0, 10298, 10299, 1, 0, 0, 0, 10299, 10300, 1, 0, 0, 0, 10300, 10301, 5, 3, 0, 0, 10301, 1313, 1, 0, 0, 0, 10302, 10303, 5, 2, 0, 0, 10303, 10304, 3, 1212, 606, 0, 10304, 10305, 5, 6, 0, 0, 10305, 10306, 3, 1328, 664, 0, 10306, 10307, 5, 3, 0, 0, 10307, 1315, 1, 0, 0, 0, 10308, 10309, 7, 74, 0, 0, 10309, 1317, 1, 0, 0, 0, 10310, 10313, 5, 29, 0, 0, 10311, 10313, 3, 1320, 660, 0, 10312, 10310, 1, 0, 0, 0, 10312, 10311, 1, 0, 0, 0, 10313, 1319, 1, 0, 0, 0, 10314, 10315, 7, 75, 0, 0, 10315, 1321, 1, 0, 0, 0, 10316, 10323, 5, 29, 0, 0, 10317, 10318, 5, 278, 0, 0, 10318, 10319, 5, 2, 0, 0, 10319, 10320, 3, 732, 366, 0, 10320, 10321, 5, 3, 0, 0, 10321, 10323, 1, 0, 0, 0, 10322, 10316, 1, 0, 0, 0, 10322, 10317, 1, 0, 0, 0, 10323, 1323, 1, 0, 0, 0, 10324, 10331, 3, 1318, 659, 0, 10325, 10326, 5, 278, 0, 0, 10326, 10327, 5, 2, 0, 0, 10327, 10328, 3, 732, 366, 0, 10328, 10329, 5, 3, 0, 0, 10329, 10331, 1, 0, 0, 0, 10330, 10324, 1, 0, 0, 0, 10330, 10325, 1, 0, 0, 0, 10331, 1325, 1, 0, 0, 0, 10332, 10345, 3, 1318, 659, 0, 10333, 10334, 5, 278, 0, 0, 10334, 10335, 5, 2, 0, 0, 10335, 10336, 3, 732, 366, 0, 10336, 10337, 5, 3, 0, 0, 10337, 10345, 1, 0, 0, 0, 10338, 10345, 5, 120, 0, 0, 10339, 10340, 5, 77, 0, 0, 10340, 10345, 5, 120, 0, 0, 10341, 10345, 5, 114, 0, 0, 10342, 10343, 5, 77, 0, 0, 10343, 10345, 5, 114, 0, 0, 10344, 10332, 1, 0, 0, 0, 10344, 10333, 1, 0, 0, 0, 10344, 10338, 1, 0, 0, 0, 10344, 10339, 1, 0, 0, 0, 10344, 10341, 1, 0, 0, 0, 10344, 10342, 1, 0, 0, 0, 10345, 1327, 1, 0, 0, 0, 10346, 10351, 3, 1212, 606, 0, 10347, 10348, 5, 6, 0, 0, 10348, 10350, 3, 1212, 606, 0, 10349, 10347, 1, 0, 0, 0, 10350, 10353, 1, 0, 0, 0, 10351, 10349, 1, 0, 0, 0, 10351, 10352, 1, 0, 0, 0, 10352, 1329, 1, 0, 0, 0, 10353, 10351, 1, 0, 0, 0, 10354, 10359, 3, 1336, 668, 0, 10355, 10356, 5, 6, 0, 0, 10356, 10358, 3, 1336, 668, 0, 10357, 10355, 1, 0, 0, 0, 10358, 10361, 1, 0, 0, 0, 10359, 10357, 1, 0, 0, 0, 10359, 10360, 1, 0, 0, 0, 10360, 1331, 1, 0, 0, 0, 10361, 10359, 1, 0, 0, 0, 10362, 10367, 3, 1334, 667, 0, 10363, 10364, 5, 6, 0, 0, 10364, 10366, 3, 1334, 667, 0, 10365, 10363, 1, 0, 0, 0, 10366, 10369, 1, 0, 0, 0, 10367, 10365, 1, 0, 0, 0, 10367, 10368, 1, 0, 0, 0, 10368, 1333, 1, 0, 0, 0, 10369, 10367, 1, 0, 0, 0, 10370, 10371, 5, 2, 0, 0, 10371, 10372, 3, 1212, 606, 0, 10372, 10373, 5, 3, 0, 0, 10373, 10376, 1, 0, 0, 0, 10374, 10376, 3, 1432, 716, 0, 10375, 10370, 1, 0, 0, 0, 10375, 10374, 1, 0, 0, 0, 10376, 1335, 1, 0, 0, 0, 10377, 10380, 3, 1212, 606, 0, 10378, 10380, 3, 1432, 716, 0, 10379, 10377, 1, 0, 0, 0, 10379, 10378, 1, 0, 0, 0, 10380, 1337, 1, 0, 0, 0, 10381, 10386, 3, 1340, 670, 0, 10382, 10383, 5, 6, 0, 0, 10383, 10385, 3, 1340, 670, 0, 10384, 10382, 1, 0, 0, 0, 10385, 10388, 1, 0, 0, 0, 10386, 10384, 1, 0, 0, 0, 10386, 10387, 1, 0, 0, 0, 10387, 1339, 1, 0, 0, 0, 10388, 10386, 1, 0, 0, 0, 10389, 10395, 3, 1212, 606, 0, 10390, 10391, 3, 684, 342, 0, 10391, 10392, 7, 76, 0, 0, 10392, 10393, 3, 1212, 606, 0, 10393, 10395, 1, 0, 0, 0, 10394, 10389, 1, 0, 0, 0, 10394, 10390, 1, 0, 0, 0, 10395, 1341, 1, 0, 0, 0, 10396, 10401, 3, 1168, 584, 0, 10397, 10398, 5, 6, 0, 0, 10398, 10400, 3, 1168, 584, 0, 10399, 10397, 1, 0, 0, 0, 10400, 10403, 1, 0, 0, 0, 10401, 10399, 1, 0, 0, 0, 10401, 10402, 1, 0, 0, 0, 10402, 1343, 1, 0, 0, 0, 10403, 10401, 1, 0, 0, 0, 10404, 10407, 5, 4, 0, 0, 10405, 10408, 3, 1328, 664, 0, 10406, 10408, 3, 1346, 673, 0, 10407, 10405, 1, 0, 0, 0, 10407, 10406, 1, 0, 0, 0, 10407, 10408, 1, 0, 0, 0, 10408, 10409, 1, 0, 0, 0, 10409, 10410, 5, 5, 0, 0, 10410, 1345, 1, 0, 0, 0, 10411, 10416, 3, 1344, 672, 0, 10412, 10413, 5, 6, 0, 0, 10413, 10415, 3, 1344, 672, 0, 10414, 10412, 1, 0, 0, 0, 10415, 10418, 1, 0, 0, 0, 10416, 10414, 1, 0, 0, 0, 10416, 10417, 1, 0, 0, 0, 10417, 1347, 1, 0, 0, 0, 10418, 10416, 1, 0, 0, 0, 10419, 10420, 3, 1350, 675, 0, 10420, 10421, 5, 64, 0, 0, 10421, 10422, 3, 1212, 606, 0, 10422, 1349, 1, 0, 0, 0, 10423, 10432, 3, 1492, 746, 0, 10424, 10432, 5, 384, 0, 0, 10425, 10432, 5, 264, 0, 0, 10426, 10432, 5, 176, 0, 0, 10427, 10432, 5, 218, 0, 0, 10428, 10432, 5, 261, 0, 0, 10429, 10432, 5, 326, 0, 0, 10430, 10432, 3, 1458, 729, 0, 10431, 10423, 1, 0, 0, 0, 10431, 10424, 1, 0, 0, 0, 10431, 10425, 1, 0, 0, 0, 10431, 10426, 1, 0, 0, 0, 10431, 10427, 1, 0, 0, 0, 10431, 10428, 1, 0, 0, 0, 10431, 10429, 1, 0, 0, 0, 10431, 10430, 1, 0, 0, 0, 10432, 1351, 1, 0, 0, 0, 10433, 10434, 7, 77, 0, 0, 10434, 1353, 1, 0, 0, 0, 10435, 10436, 3, 1212, 606, 0, 10436, 10437, 5, 84, 0, 0, 10437, 10438, 3, 1212, 606, 0, 10438, 10439, 5, 64, 0, 0, 10439, 10442, 3, 1212, 606, 0, 10440, 10441, 5, 62, 0, 0, 10441, 10443, 3, 1212, 606, 0, 10442, 10440, 1, 0, 0, 0, 10442, 10443, 1, 0, 0, 0, 10443, 1355, 1, 0, 0, 0, 10444, 10445, 3, 1252, 626, 0, 10445, 10446, 5, 68, 0, 0, 10446, 10447, 3, 1252, 626, 0, 10447, 1357, 1, 0, 0, 0, 10448, 10449, 3, 1212, 606, 0, 10449, 10450, 5, 64, 0, 0, 10450, 10451, 3, 1212, 606, 0, 10451, 10452, 5, 62, 0, 0, 10452, 10453, 3, 1212, 606, 0, 10453, 10476, 1, 0, 0, 0, 10454, 10455, 3, 1212, 606, 0, 10455, 10456, 5, 62, 0, 0, 10456, 10457, 3, 1212, 606, 0, 10457, 10458, 5, 64, 0, 0, 10458, 10459, 3, 1212, 606, 0, 10459, 10476, 1, 0, 0, 0, 10460, 10461, 3, 1212, 606, 0, 10461, 10462, 5, 64, 0, 0, 10462, 10463, 3, 1212, 606, 0, 10463, 10476, 1, 0, 0, 0, 10464, 10465, 3, 1212, 606, 0, 10465, 10466, 5, 62, 0, 0, 10466, 10467, 3, 1212, 606, 0, 10467, 10476, 1, 0, 0, 0, 10468, 10469, 3, 1212, 606, 0, 10469, 10470, 5, 127, 0, 0, 10470, 10471, 3, 1212, 606, 0, 10471, 10472, 5, 197, 0, 0, 10472, 10473, 3, 1212, 606, 0, 10473, 10476, 1, 0, 0, 0, 10474, 10476, 3, 1328, 664, 0, 10475, 10448, 1, 0, 0, 0, 10475, 10454, 1, 0, 0, 0, 10475, 10460, 1, 0, 0, 0, 10475, 10464, 1, 0, 0, 0, 10475, 10468, 1, 0, 0, 0, 10475, 10474, 1, 0, 0, 0, 10476, 1359, 1, 0, 0, 0, 10477, 10478, 3, 1212, 606, 0, 10478, 10479, 5, 64, 0, 0, 10479, 10480, 3, 1328, 664, 0, 10480, 10485, 1, 0, 0, 0, 10481, 10482, 5, 64, 0, 0, 10482, 10485, 3, 1328, 664, 0, 10483, 10485, 3, 1328, 664, 0, 10484, 10477, 1, 0, 0, 0, 10484, 10481, 1, 0, 0, 0, 10484, 10483, 1, 0, 0, 0, 10485, 1361, 1, 0, 0, 0, 10486, 10492, 3, 1002, 501, 0, 10487, 10488, 5, 2, 0, 0, 10488, 10489, 3, 1328, 664, 0, 10489, 10490, 5, 3, 0, 0, 10490, 10492, 1, 0, 0, 0, 10491, 10486, 1, 0, 0, 0, 10491, 10487, 1, 0, 0, 0, 10492, 1363, 1, 0, 0, 0, 10493, 10495, 5, 40, 0, 0, 10494, 10496, 3, 1372, 686, 0, 10495, 10494, 1, 0, 0, 0, 10495, 10496, 1, 0, 0, 0, 10496, 10497, 1, 0, 0, 0, 10497, 10499, 3, 1366, 683, 0, 10498, 10500, 3, 1370, 685, 0, 10499, 10498, 1, 0, 0, 0, 10499, 10500, 1, 0, 0, 0, 10500, 10501, 1, 0, 0, 0, 10501, 10502, 5, 454, 0, 0, 10502, 1365, 1, 0, 0, 0, 10503, 10505, 3, 1368, 684, 0, 10504, 10503, 1, 0, 0, 0, 10505, 10506, 1, 0, 0, 0, 10506, 10504, 1, 0, 0, 0, 10506, 10507, 1, 0, 0, 0, 10507, 1367, 1, 0, 0, 0, 10508, 10509, 5, 102, 0, 0, 10509, 10510, 3, 1212, 606, 0, 10510, 10511, 5, 93, 0, 0, 10511, 10512, 3, 1212, 606, 0, 10512, 1369, 1, 0, 0, 0, 10513, 10514, 5, 58, 0, 0, 10514, 10515, 3, 1212, 606, 0, 10515, 1371, 1, 0, 0, 0, 10516, 10517, 3, 1212, 606, 0, 10517, 1373, 1, 0, 0, 0, 10518, 10520, 3, 1474, 737, 0, 10519, 10521, 3, 1380, 690, 0, 10520, 10519, 1, 0, 0, 0, 10520, 10521, 1, 0, 0, 0, 10521, 1375, 1, 0, 0, 0, 10522, 10525, 5, 11, 0, 0, 10523, 10526, 3, 1438, 719, 0, 10524, 10526, 5, 9, 0, 0, 10525, 10523, 1, 0, 0, 0, 10525, 10524, 1, 0, 0, 0, 10526, 10540, 1, 0, 0, 0, 10527, 10536, 5, 4, 0, 0, 10528, 10537, 3, 1212, 606, 0, 10529, 10531, 3, 1378, 689, 0, 10530, 10529, 1, 0, 0, 0, 10530, 10531, 1, 0, 0, 0, 10531, 10532, 1, 0, 0, 0, 10532, 10534, 5, 8, 0, 0, 10533, 10535, 3, 1378, 689, 0, 10534, 10533, 1, 0, 0, 0, 10534, 10535, 1, 0, 0, 0, 10535, 10537, 1, 0, 0, 0, 10536, 10528, 1, 0, 0, 0, 10536, 10530, 1, 0, 0, 0, 10537, 10538, 1, 0, 0, 0, 10538, 10540, 5, 5, 0, 0, 10539, 10522, 1, 0, 0, 0, 10539, 10527, 1, 0, 0, 0, 10540, 1377, 1, 0, 0, 0, 10541, 10542, 3, 1212, 606, 0, 10542, 1379, 1, 0, 0, 0, 10543, 10545, 3, 1376, 688, 0, 10544, 10543, 1, 0, 0, 0, 10545, 10546, 1, 0, 0, 0, 10546, 10544, 1, 0, 0, 0, 10546, 10547, 1, 0, 0, 0, 10547, 1381, 1, 0, 0, 0, 10548, 10550, 3, 1376, 688, 0, 10549, 10548, 1, 0, 0, 0, 10550, 10553, 1, 0, 0, 0, 10551, 10549, 1, 0, 0, 0, 10551, 10552, 1, 0, 0, 0, 10552, 1383, 1, 0, 0, 0, 10553, 10551, 1, 0, 0, 0, 10554, 10555, 3, 1386, 693, 0, 10555, 1385, 1, 0, 0, 0, 10556, 10561, 3, 1388, 694, 0, 10557, 10558, 5, 6, 0, 0, 10558, 10560, 3, 1388, 694, 0, 10559, 10557, 1, 0, 0, 0, 10560, 10563, 1, 0, 0, 0, 10561, 10559, 1, 0, 0, 0, 10561, 10562, 1, 0, 0, 0, 10562, 1387, 1, 0, 0, 0, 10563, 10561, 1, 0, 0, 0, 10564, 10569, 3, 1336, 668, 0, 10565, 10566, 5, 36, 0, 0, 10566, 10570, 3, 1490, 745, 0, 10567, 10570, 3, 1492, 746, 0, 10568, 10570, 1, 0, 0, 0, 10569, 10565, 1, 0, 0, 0, 10569, 10567, 1, 0, 0, 0, 10569, 10568, 1, 0, 0, 0, 10570, 10573, 1, 0, 0, 0, 10571, 10573, 5, 9, 0, 0, 10572, 10564, 1, 0, 0, 0, 10572, 10571, 1, 0, 0, 0, 10573, 1389, 1, 0, 0, 0, 10574, 10579, 3, 1412, 706, 0, 10575, 10576, 5, 6, 0, 0, 10576, 10578, 3, 1412, 706, 0, 10577, 10575, 1, 0, 0, 0, 10578, 10581, 1, 0, 0, 0, 10579, 10577, 1, 0, 0, 0, 10579, 10580, 1, 0, 0, 0, 10580, 1391, 1, 0, 0, 0, 10581, 10579, 1, 0, 0, 0, 10582, 10587, 3, 1406, 703, 0, 10583, 10584, 5, 6, 0, 0, 10584, 10586, 3, 1406, 703, 0, 10585, 10583, 1, 0, 0, 0, 10586, 10589, 1, 0, 0, 0, 10587, 10585, 1, 0, 0, 0, 10587, 10588, 1, 0, 0, 0, 10588, 1393, 1, 0, 0, 0, 10589, 10587, 1, 0, 0, 0, 10590, 10595, 3, 1422, 711, 0, 10591, 10592, 5, 6, 0, 0, 10592, 10594, 3, 1422, 711, 0, 10593, 10591, 1, 0, 0, 0, 10594, 10597, 1, 0, 0, 0, 10595, 10593, 1, 0, 0, 0, 10595, 10596, 1, 0, 0, 0, 10596, 1395, 1, 0, 0, 0, 10597, 10595, 1, 0, 0, 0, 10598, 10603, 3, 1420, 710, 0, 10599, 10600, 5, 6, 0, 0, 10600, 10602, 3, 1420, 710, 0, 10601, 10599, 1, 0, 0, 0, 10602, 10605, 1, 0, 0, 0, 10603, 10601, 1, 0, 0, 0, 10603, 10604, 1, 0, 0, 0, 10604, 1397, 1, 0, 0, 0, 10605, 10603, 1, 0, 0, 0, 10606, 10611, 3, 1428, 714, 0, 10607, 10608, 5, 6, 0, 0, 10608, 10610, 3, 1428, 714, 0, 10609, 10607, 1, 0, 0, 0, 10610, 10613, 1, 0, 0, 0, 10611, 10609, 1, 0, 0, 0, 10611, 10612, 1, 0, 0, 0, 10612, 1399, 1, 0, 0, 0, 10613, 10611, 1, 0, 0, 0, 10614, 10616, 3, 1474, 737, 0, 10615, 10617, 3, 1380, 690, 0, 10616, 10615, 1, 0, 0, 0, 10616, 10617, 1, 0, 0, 0, 10617, 1401, 1, 0, 0, 0, 10618, 10620, 3, 1474, 737, 0, 10619, 10621, 3, 1380, 690, 0, 10620, 10619, 1, 0, 0, 0, 10620, 10621, 1, 0, 0, 0, 10621, 1403, 1, 0, 0, 0, 10622, 10624, 3, 1474, 737, 0, 10623, 10625, 3, 1380, 690, 0, 10624, 10623, 1, 0, 0, 0, 10624, 10625, 1, 0, 0, 0, 10625, 1405, 1, 0, 0, 0, 10626, 10628, 3, 1474, 737, 0, 10627, 10629, 3, 1380, 690, 0, 10628, 10627, 1, 0, 0, 0, 10628, 10629, 1, 0, 0, 0, 10629, 1407, 1, 0, 0, 0, 10630, 10632, 3, 1474, 737, 0, 10631, 10633, 3, 1380, 690, 0, 10632, 10631, 1, 0, 0, 0, 10632, 10633, 1, 0, 0, 0, 10633, 1409, 1, 0, 0, 0, 10634, 10636, 3, 1474, 737, 0, 10635, 10637, 3, 560, 280, 0, 10636, 10635, 1, 0, 0, 0, 10636, 10637, 1, 0, 0, 0, 10637, 1411, 1, 0, 0, 0, 10638, 10640, 3, 1474, 737, 0, 10639, 10641, 3, 1380, 690, 0, 10640, 10639, 1, 0, 0, 0, 10640, 10641, 1, 0, 0, 0, 10641, 1413, 1, 0, 0, 0, 10642, 10647, 3, 1402, 701, 0, 10643, 10644, 5, 6, 0, 0, 10644, 10646, 3, 1402, 701, 0, 10645, 10643, 1, 0, 0, 0, 10646, 10649, 1, 0, 0, 0, 10647, 10645, 1, 0, 0, 0, 10647, 10648, 1, 0, 0, 0, 10648, 1415, 1, 0, 0, 0, 10649, 10647, 1, 0, 0, 0, 10650, 10655, 3, 1436, 718, 0, 10651, 10652, 5, 6, 0, 0, 10652, 10654, 3, 1436, 718, 0, 10653, 10651, 1, 0, 0, 0, 10654, 10657, 1, 0, 0, 0, 10655, 10653, 1, 0, 0, 0, 10655, 10656, 1, 0, 0, 0, 10656, 1417, 1, 0, 0, 0, 10657, 10655, 1, 0, 0, 0, 10658, 10660, 3, 1474, 737, 0, 10659, 10661, 3, 560, 280, 0, 10660, 10659, 1, 0, 0, 0, 10660, 10661, 1, 0, 0, 0, 10661, 1419, 1, 0, 0, 0, 10662, 10664, 3, 1474, 737, 0, 10663, 10665, 3, 560, 280, 0, 10664, 10663, 1, 0, 0, 0, 10664, 10665, 1, 0, 0, 0, 10665, 1421, 1, 0, 0, 0, 10666, 10668, 3, 1474, 737, 0, 10667, 10669, 3, 560, 280, 0, 10668, 10667, 1, 0, 0, 0, 10668, 10669, 1, 0, 0, 0, 10669, 1423, 1, 0, 0, 0, 10670, 10671, 3, 1474, 737, 0, 10671, 1425, 1, 0, 0, 0, 10672, 10673, 3, 1474, 737, 0, 10673, 1427, 1, 0, 0, 0, 10674, 10679, 3, 1482, 741, 0, 10675, 10676, 3, 1474, 737, 0, 10676, 10677, 3, 1380, 690, 0, 10677, 10679, 1, 0, 0, 0, 10678, 10674, 1, 0, 0, 0, 10678, 10675, 1, 0, 0, 0, 10679, 1429, 1, 0, 0, 0, 10680, 10685, 3, 1482, 741, 0, 10681, 10682, 3, 1474, 737, 0, 10682, 10683, 3, 1380, 690, 0, 10683, 10685, 1, 0, 0, 0, 10684, 10680, 1, 0, 0, 0, 10684, 10681, 1, 0, 0, 0, 10685, 1431, 1, 0, 0, 0, 10686, 10690, 3, 1474, 737, 0, 10687, 10689, 3, 1376, 688, 0, 10688, 10687, 1, 0, 0, 0, 10689, 10692, 1, 0, 0, 0, 10690, 10688, 1, 0, 0, 0, 10690, 10691, 1, 0, 0, 0, 10691, 10695, 1, 0, 0, 0, 10692, 10690, 1, 0, 0, 0, 10693, 10695, 4, 716, 8, 0, 10694, 10686, 1, 0, 0, 0, 10694, 10693, 1, 0, 0, 0, 10695, 1433, 1, 0, 0, 0, 10696, 10697, 3, 1474, 737, 0, 10697, 1435, 1, 0, 0, 0, 10698, 10699, 3, 1474, 737, 0, 10699, 1437, 1, 0, 0, 0, 10700, 10701, 3, 1490, 745, 0, 10701, 1439, 1, 0, 0, 0, 10702, 10703, 3, 1458, 729, 0, 10703, 1441, 1, 0, 0, 0, 10704, 10709, 3, 1482, 741, 0, 10705, 10706, 3, 1474, 737, 0, 10706, 10707, 3, 1380, 690, 0, 10707, 10709, 1, 0, 0, 0, 10708, 10704, 1, 0, 0, 0, 10708, 10705, 1, 0, 0, 0, 10709, 1443, 1, 0, 0, 0, 10710, 10715, 3, 1482, 741, 0, 10711, 10712, 3, 1474, 737, 0, 10712, 10713, 3, 1380, 690, 0, 10713, 10715, 1, 0, 0, 0, 10714, 10710, 1, 0, 0, 0, 10714, 10711, 1, 0, 0, 0, 10715, 1445, 1, 0, 0, 0, 10716, 10721, 3, 1484, 742, 0, 10717, 10718, 3, 1474, 737, 0, 10718, 10719, 3, 1380, 690, 0, 10719, 10721, 1, 0, 0, 0, 10720, 10716, 1, 0, 0, 0, 10720, 10717, 1, 0, 0, 0, 10721, 1447, 1, 0, 0, 0, 10722, 10758, 3, 1456, 728, 0, 10723, 10758, 3, 1454, 727, 0, 10724, 10758, 3, 1458, 729, 0, 10725, 10758, 3, 1452, 726, 0, 10726, 10758, 3, 1450, 725, 0, 10727, 10737, 3, 1444, 722, 0, 10728, 10738, 3, 1458, 729, 0, 10729, 10730, 5, 2, 0, 0, 10730, 10732, 3, 1338, 669, 0, 10731, 10733, 3, 1042, 521, 0, 10732, 10731, 1, 0, 0, 0, 10732, 10733, 1, 0, 0, 0, 10733, 10734, 1, 0, 0, 0, 10734, 10735, 5, 3, 0, 0, 10735, 10736, 3, 1458, 729, 0, 10736, 10738, 1, 0, 0, 0, 10737, 10728, 1, 0, 0, 0, 10737, 10729, 1, 0, 0, 0, 10738, 10758, 1, 0, 0, 0, 10739, 10740, 3, 1174, 587, 0, 10740, 10741, 3, 1458, 729, 0, 10741, 10758, 1, 0, 0, 0, 10742, 10752, 3, 1202, 601, 0, 10743, 10745, 3, 1458, 729, 0, 10744, 10746, 3, 1206, 603, 0, 10745, 10744, 1, 0, 0, 0, 10745, 10746, 1, 0, 0, 0, 10746, 10753, 1, 0, 0, 0, 10747, 10748, 5, 2, 0, 0, 10748, 10749, 3, 1456, 728, 0, 10749, 10750, 5, 3, 0, 0, 10750, 10751, 3, 1458, 729, 0, 10751, 10753, 1, 0, 0, 0, 10752, 10743, 1, 0, 0, 0, 10752, 10747, 1, 0, 0, 0, 10753, 10758, 1, 0, 0, 0, 10754, 10758, 5, 96, 0, 0, 10755, 10758, 5, 60, 0, 0, 10756, 10758, 5, 78, 0, 0, 10757, 10722, 1, 0, 0, 0, 10757, 10723, 1, 0, 0, 0, 10757, 10724, 1, 0, 0, 0, 10757, 10725, 1, 0, 0, 0, 10757, 10726, 1, 0, 0, 0, 10757, 10727, 1, 0, 0, 0, 10757, 10739, 1, 0, 0, 0, 10757, 10742, 1, 0, 0, 0, 10757, 10754, 1, 0, 0, 0, 10757, 10755, 1, 0, 0, 0, 10757, 10756, 1, 0, 0, 0, 10758, 1449, 1, 0, 0, 0, 10759, 10760, 5, 567, 0, 0, 10760, 1451, 1, 0, 0, 0, 10761, 10762, 5, 563, 0, 0, 10762, 1453, 1, 0, 0, 0, 10763, 10764, 5, 573, 0, 0, 10764, 1455, 1, 0, 0, 0, 10765, 10766, 5, 571, 0, 0, 10766, 1457, 1, 0, 0, 0, 10767, 10769, 3, 1460, 730, 0, 10768, 10770, 3, 1462, 731, 0, 10769, 10768, 1, 0, 0, 0, 10769, 10770, 1, 0, 0, 0, 10770, 1459, 1, 0, 0, 0, 10771, 10783, 5, 558, 0, 0, 10772, 10783, 5, 560, 0, 0, 10773, 10777, 5, 562, 0, 0, 10774, 10776, 5, 588, 0, 0, 10775, 10774, 1, 0, 0, 0, 10776, 10779, 1, 0, 0, 0, 10777, 10775, 1, 0, 0, 0, 10777, 10778, 1, 0, 0, 0, 10778, 10780, 1, 0, 0, 0, 10779, 10777, 1, 0, 0, 0, 10780, 10783, 5, 589, 0, 0, 10781, 10783, 5, 584, 0, 0, 10782, 10771, 1, 0, 0, 0, 10782, 10772, 1, 0, 0, 0, 10782, 10773, 1, 0, 0, 0, 10782, 10781, 1, 0, 0, 0, 10783, 1461, 1, 0, 0, 0, 10784, 10785, 5, 487, 0, 0, 10785, 10786, 3, 1460, 730, 0, 10786, 1463, 1, 0, 0, 0, 10787, 10793, 3, 1456, 728, 0, 10788, 10789, 5, 12, 0, 0, 10789, 10793, 3, 1456, 728, 0, 10790, 10791, 5, 13, 0, 0, 10791, 10793, 3, 1456, 728, 0, 10792, 10787, 1, 0, 0, 0, 10792, 10788, 1, 0, 0, 0, 10792, 10790, 1, 0, 0, 0, 10793, 1465, 1, 0, 0, 0, 10794, 10795, 3, 1470, 735, 0, 10795, 1467, 1, 0, 0, 0, 10796, 10797, 3, 1470, 735, 0, 10797, 1469, 1, 0, 0, 0, 10798, 10804, 3, 1488, 744, 0, 10799, 10804, 5, 52, 0, 0, 10800, 10804, 5, 49, 0, 0, 10801, 10804, 5, 89, 0, 0, 10802, 10804, 5, 524, 0, 0, 10803, 10798, 1, 0, 0, 0, 10803, 10799, 1, 0, 0, 0, 10803, 10800, 1, 0, 0, 0, 10803, 10801, 1, 0, 0, 0, 10803, 10802, 1, 0, 0, 0, 10804, 1471, 1, 0, 0, 0, 10805, 10810, 3, 1470, 735, 0, 10806, 10807, 5, 6, 0, 0, 10807, 10809, 3, 1470, 735, 0, 10808, 10806, 1, 0, 0, 0, 10809, 10812, 1, 0, 0, 0, 10810, 10808, 1, 0, 0, 0, 10810, 10811, 1, 0, 0, 0, 10811, 1473, 1, 0, 0, 0, 10812, 10810, 1, 0, 0, 0, 10813, 10818, 3, 1492, 746, 0, 10814, 10818, 3, 1496, 748, 0, 10815, 10818, 3, 1498, 749, 0, 10816, 10818, 3, 1734, 867, 0, 10817, 10813, 1, 0, 0, 0, 10817, 10814, 1, 0, 0, 0, 10817, 10815, 1, 0, 0, 0, 10817, 10816, 1, 0, 0, 0, 10818, 1475, 1, 0, 0, 0, 10819, 10820, 3, 1492, 746, 0, 10820, 1477, 1, 0, 0, 0, 10821, 10834, 3, 710, 355, 0, 10822, 10823, 5, 2, 0, 0, 10823, 10824, 3, 1212, 606, 0, 10824, 10825, 5, 3, 0, 0, 10825, 10826, 1, 0, 0, 0, 10826, 10828, 3, 1492, 746, 0, 10827, 10829, 3, 650, 325, 0, 10828, 10827, 1, 0, 0, 0, 10828, 10829, 1, 0, 0, 0, 10829, 10831, 1, 0, 0, 0, 10830, 10832, 3, 652, 326, 0, 10831, 10830, 1, 0, 0, 0, 10831, 10832, 1, 0, 0, 0, 10832, 10834, 1, 0, 0, 0, 10833, 10821, 1, 0, 0, 0, 10833, 10822, 1, 0, 0, 0, 10834, 1479, 1, 0, 0, 0, 10835, 10836, 5, 105, 0, 0, 10836, 10838, 3, 132, 66, 0, 10837, 10835, 1, 0, 0, 0, 10837, 10838, 1, 0, 0, 0, 10838, 10840, 1, 0, 0, 0, 10839, 10841, 3, 286, 143, 0, 10840, 10839, 1, 0, 0, 0, 10840, 10841, 1, 0, 0, 0, 10841, 1481, 1, 0, 0, 0, 10842, 10847, 3, 1492, 746, 0, 10843, 10847, 3, 1496, 748, 0, 10844, 10847, 3, 1734, 867, 0, 10845, 10847, 3, 1500, 750, 0, 10846, 10842, 1, 0, 0, 0, 10846, 10843, 1, 0, 0, 0, 10846, 10844, 1, 0, 0, 0, 10846, 10845, 1, 0, 0, 0, 10847, 1483, 1, 0, 0, 0, 10848, 10853, 3, 1492, 746, 0, 10849, 10853, 3, 1496, 748, 0, 10850, 10853, 3, 1734, 867, 0, 10851, 10853, 3, 1500, 750, 0, 10852, 10848, 1, 0, 0, 0, 10852, 10849, 1, 0, 0, 0, 10852, 10850, 1, 0, 0, 0, 10852, 10851, 1, 0, 0, 0, 10853, 1485, 1, 0, 0, 0, 10854, 10857, 3, 1432, 716, 0, 10855, 10857, 3, 1500, 750, 0, 10856, 10854, 1, 0, 0, 0, 10856, 10855, 1, 0, 0, 0, 10857, 1487, 1, 0, 0, 0, 10858, 10863, 3, 1492, 746, 0, 10859, 10863, 3, 1496, 748, 0, 10860, 10863, 3, 1498, 749, 0, 10861, 10863, 3, 1500, 750, 0, 10862, 10858, 1, 0, 0, 0, 10862, 10859, 1, 0, 0, 0, 10862, 10860, 1, 0, 0, 0, 10862, 10861, 1, 0, 0, 0, 10863, 1489, 1, 0, 0, 0, 10864, 10871, 3, 1492, 746, 0, 10865, 10871, 3, 1734, 867, 0, 10866, 10871, 3, 1496, 748, 0, 10867, 10871, 3, 1498, 749, 0, 10868, 10871, 3, 1500, 750, 0, 10869, 10871, 3, 1502, 751, 0, 10870, 10864, 1, 0, 0, 0, 10870, 10865, 1, 0, 0, 0, 10870, 10866, 1, 0, 0, 0, 10870, 10867, 1, 0, 0, 0, 10870, 10868, 1, 0, 0, 0, 10870, 10869, 1, 0, 0, 0, 10871, 1491, 1, 0, 0, 0, 10872, 10874, 5, 549, 0, 0, 10873, 10875, 3, 1462, 731, 0, 10874, 10873, 1, 0, 0, 0, 10874, 10875, 1, 0, 0, 0, 10875, 10883, 1, 0, 0, 0, 10876, 10883, 3, 1458, 729, 0, 10877, 10883, 5, 550, 0, 0, 10878, 10883, 5, 554, 0, 0, 10879, 10883, 3, 1256, 628, 0, 10880, 10883, 3, 1494, 747, 0, 10881, 10883, 3, 1734, 867, 0, 10882, 10872, 1, 0, 0, 0, 10882, 10876, 1, 0, 0, 0, 10882, 10877, 1, 0, 0, 0, 10882, 10878, 1, 0, 0, 0, 10882, 10879, 1, 0, 0, 0, 10882, 10880, 1, 0, 0, 0, 10882, 10881, 1, 0, 0, 0, 10883, 1493, 1, 0, 0, 0, 10884, 10885, 5, 575, 0, 0, 10885, 1495, 1, 0, 0, 0, 10886, 10887, 7, 78, 0, 0, 10887, 1497, 1, 0, 0, 0, 10888, 10940, 5, 387, 0, 0, 10889, 10940, 5, 388, 0, 0, 10890, 10940, 3, 1184, 592, 0, 10891, 10940, 5, 390, 0, 0, 10892, 10940, 5, 391, 0, 0, 10893, 10940, 3, 1192, 596, 0, 10894, 10940, 5, 393, 0, 0, 10895, 10940, 5, 394, 0, 0, 10896, 10940, 5, 395, 0, 0, 10897, 10940, 5, 396, 0, 0, 10898, 10940, 5, 397, 0, 0, 10899, 10940, 5, 398, 0, 0, 10900, 10940, 5, 399, 0, 0, 10901, 10940, 5, 470, 0, 0, 10902, 10940, 5, 400, 0, 0, 10903, 10940, 5, 401, 0, 0, 10904, 10940, 5, 402, 0, 0, 10905, 10940, 5, 403, 0, 0, 10906, 10940, 5, 404, 0, 0, 10907, 10940, 5, 405, 0, 0, 10908, 10940, 5, 406, 0, 0, 10909, 10940, 5, 407, 0, 0, 10910, 10940, 5, 489, 0, 0, 10911, 10940, 5, 408, 0, 0, 10912, 10940, 3, 1180, 590, 0, 10913, 10940, 5, 453, 0, 0, 10914, 10940, 5, 410, 0, 0, 10915, 10940, 5, 411, 0, 0, 10916, 10940, 5, 412, 0, 0, 10917, 10940, 5, 413, 0, 0, 10918, 10940, 5, 414, 0, 0, 10919, 10940, 5, 415, 0, 0, 10920, 10940, 5, 416, 0, 0, 10921, 10940, 5, 417, 0, 0, 10922, 10940, 5, 418, 0, 0, 10923, 10940, 5, 419, 0, 0, 10924, 10940, 5, 420, 0, 0, 10925, 10940, 5, 421, 0, 0, 10926, 10940, 5, 422, 0, 0, 10927, 10940, 5, 423, 0, 0, 10928, 10940, 5, 424, 0, 0, 10929, 10940, 5, 425, 0, 0, 10930, 10940, 5, 426, 0, 0, 10931, 10940, 5, 427, 0, 0, 10932, 10940, 5, 428, 0, 0, 10933, 10940, 5, 476, 0, 0, 10934, 10940, 5, 429, 0, 0, 10935, 10940, 5, 430, 0, 0, 10936, 10940, 5, 431, 0, 0, 10937, 10940, 5, 432, 0, 0, 10938, 10940, 5, 474, 0, 0, 10939, 10888, 1, 0, 0, 0, 10939, 10889, 1, 0, 0, 0, 10939, 10890, 1, 0, 0, 0, 10939, 10891, 1, 0, 0, 0, 10939, 10892, 1, 0, 0, 0, 10939, 10893, 1, 0, 0, 0, 10939, 10894, 1, 0, 0, 0, 10939, 10895, 1, 0, 0, 0, 10939, 10896, 1, 0, 0, 0, 10939, 10897, 1, 0, 0, 0, 10939, 10898, 1, 0, 0, 0, 10939, 10899, 1, 0, 0, 0, 10939, 10900, 1, 0, 0, 0, 10939, 10901, 1, 0, 0, 0, 10939, 10902, 1, 0, 0, 0, 10939, 10903, 1, 0, 0, 0, 10939, 10904, 1, 0, 0, 0, 10939, 10905, 1, 0, 0, 0, 10939, 10906, 1, 0, 0, 0, 10939, 10907, 1, 0, 0, 0, 10939, 10908, 1, 0, 0, 0, 10939, 10909, 1, 0, 0, 0, 10939, 10910, 1, 0, 0, 0, 10939, 10911, 1, 0, 0, 0, 10939, 10912, 1, 0, 0, 0, 10939, 10913, 1, 0, 0, 0, 10939, 10914, 1, 0, 0, 0, 10939, 10915, 1, 0, 0, 0, 10939, 10916, 1, 0, 0, 0, 10939, 10917, 1, 0, 0, 0, 10939, 10918, 1, 0, 0, 0, 10939, 10919, 1, 0, 0, 0, 10939, 10920, 1, 0, 0, 0, 10939, 10921, 1, 0, 0, 0, 10939, 10922, 1, 0, 0, 0, 10939, 10923, 1, 0, 0, 0, 10939, 10924, 1, 0, 0, 0, 10939, 10925, 1, 0, 0, 0, 10939, 10926, 1, 0, 0, 0, 10939, 10927, 1, 0, 0, 0, 10939, 10928, 1, 0, 0, 0, 10939, 10929, 1, 0, 0, 0, 10939, 10930, 1, 0, 0, 0, 10939, 10931, 1, 0, 0, 0, 10939, 10932, 1, 0, 0, 0, 10939, 10933, 1, 0, 0, 0, 10939, 10934, 1, 0, 0, 0, 10939, 10935, 1, 0, 0, 0, 10939, 10936, 1, 0, 0, 0, 10939, 10937, 1, 0, 0, 0, 10939, 10938, 1, 0, 0, 0, 10940, 1499, 1, 0, 0, 0, 10941, 10942, 7, 79, 0, 0, 10942, 1501, 1, 0, 0, 0, 10943, 10944, 7, 80, 0, 0, 10944, 1503, 1, 0, 0, 0, 10945, 10946, 3, 1506, 753, 0, 10946, 10947, 3, 1516, 758, 0, 10947, 10948, 3, 1514, 757, 0, 10948, 1505, 1, 0, 0, 0, 10949, 10951, 3, 1508, 754, 0, 10950, 10949, 1, 0, 0, 0, 10951, 10954, 1, 0, 0, 0, 10952, 10950, 1, 0, 0, 0, 10952, 10953, 1, 0, 0, 0, 10953, 1507, 1, 0, 0, 0, 10954, 10952, 1, 0, 0, 0, 10955, 10956, 3, 1510, 755, 0, 10956, 10957, 5, 279, 0, 0, 10957, 10958, 5, 490, 0, 0, 10958, 10976, 1, 0, 0, 0, 10959, 10960, 3, 1510, 755, 0, 10960, 10961, 5, 491, 0, 0, 10961, 10962, 3, 1512, 756, 0, 10962, 10976, 1, 0, 0, 0, 10963, 10964, 3, 1510, 755, 0, 10964, 10965, 5, 492, 0, 0, 10965, 10966, 5, 493, 0, 0, 10966, 10976, 1, 0, 0, 0, 10967, 10968, 3, 1510, 755, 0, 10968, 10969, 5, 492, 0, 0, 10969, 10970, 5, 494, 0, 0, 10970, 10976, 1, 0, 0, 0, 10971, 10972, 3, 1510, 755, 0, 10972, 10973, 5, 492, 0, 0, 10973, 10974, 5, 495, 0, 0, 10974, 10976, 1, 0, 0, 0, 10975, 10955, 1, 0, 0, 0, 10975, 10959, 1, 0, 0, 0, 10975, 10963, 1, 0, 0, 0, 10975, 10967, 1, 0, 0, 0, 10975, 10971, 1, 0, 0, 0, 10976, 1509, 1, 0, 0, 0, 10977, 10978, 5, 29, 0, 0, 10978, 1511, 1, 0, 0, 0, 10979, 10984, 3, 1458, 729, 0, 10980, 10984, 3, 1502, 751, 0, 10981, 10984, 3, 1734, 867, 0, 10982, 10984, 3, 1496, 748, 0, 10983, 10979, 1, 0, 0, 0, 10983, 10980, 1, 0, 0, 0, 10983, 10981, 1, 0, 0, 0, 10983, 10982, 1, 0, 0, 0, 10984, 1513, 1, 0, 0, 0, 10985, 10988, 1, 0, 0, 0, 10986, 10988, 5, 7, 0, 0, 10987, 10985, 1, 0, 0, 0, 10987, 10986, 1, 0, 0, 0, 10988, 1515, 1, 0, 0, 0, 10989, 10990, 3, 1518, 759, 0, 10990, 10991, 5, 146, 0, 0, 10991, 10992, 3, 1560, 780, 0, 10992, 10993, 3, 1714, 857, 0, 10993, 10994, 5, 454, 0, 0, 10994, 10995, 3, 1728, 864, 0, 10995, 1517, 1, 0, 0, 0, 10996, 11001, 3, 1724, 862, 0, 10997, 10999, 3, 1520, 760, 0, 10998, 11000, 3, 1522, 761, 0, 10999, 10998, 1, 0, 0, 0, 10999, 11000, 1, 0, 0, 0, 11000, 11002, 1, 0, 0, 0, 11001, 10997, 1, 0, 0, 0, 11001, 11002, 1, 0, 0, 0, 11002, 1519, 1, 0, 0, 0, 11003, 11004, 5, 178, 0, 0, 11004, 1521, 1, 0, 0, 0, 11005, 11007, 3, 1526, 763, 0, 11006, 11005, 1, 0, 0, 0, 11007, 11008, 1, 0, 0, 0, 11008, 11006, 1, 0, 0, 0, 11008, 11009, 1, 0, 0, 0, 11009, 1523, 1, 0, 0, 0, 11010, 11011, 5, 18, 0, 0, 11011, 11012, 3, 1732, 866, 0, 11012, 11013, 5, 19, 0, 0, 11013, 1525, 1, 0, 0, 0, 11014, 11018, 3, 1528, 764, 0, 11015, 11018, 5, 178, 0, 0, 11016, 11018, 3, 1524, 762, 0, 11017, 11014, 1, 0, 0, 0, 11017, 11015, 1, 0, 0, 0, 11017, 11016, 1, 0, 0, 0, 11018, 1527, 1, 0, 0, 0, 11019, 11035, 3, 1544, 772, 0, 11020, 11021, 5, 496, 0, 0, 11021, 11022, 5, 62, 0, 0, 11022, 11036, 3, 1542, 771, 0, 11023, 11024, 3, 1546, 773, 0, 11024, 11025, 3, 1548, 774, 0, 11025, 11026, 3, 1550, 775, 0, 11026, 11027, 3, 1552, 776, 0, 11027, 11028, 3, 1554, 777, 0, 11028, 11036, 1, 0, 0, 0, 11029, 11030, 3, 1530, 765, 0, 11030, 11031, 5, 172, 0, 0, 11031, 11032, 3, 1534, 767, 0, 11032, 11033, 3, 1540, 770, 0, 11033, 11034, 3, 1532, 766, 0, 11034, 11036, 1, 0, 0, 0, 11035, 11020, 1, 0, 0, 0, 11035, 11023, 1, 0, 0, 0, 11035, 11029, 1, 0, 0, 0, 11036, 11037, 1, 0, 0, 0, 11037, 11038, 5, 7, 0, 0, 11038, 1529, 1, 0, 0, 0, 11039, 11044, 1, 0, 0, 0, 11040, 11041, 5, 269, 0, 0, 11041, 11044, 5, 324, 0, 0, 11042, 11044, 5, 324, 0, 0, 11043, 11039, 1, 0, 0, 0, 11043, 11040, 1, 0, 0, 0, 11043, 11042, 1, 0, 0, 0, 11044, 1531, 1, 0, 0, 0, 11045, 11046, 3, 1000, 500, 0, 11046, 1533, 1, 0, 0, 0, 11047, 11053, 1, 0, 0, 0, 11048, 11049, 5, 2, 0, 0, 11049, 11050, 3, 1536, 768, 0, 11050, 11051, 5, 3, 0, 0, 11051, 11053, 1, 0, 0, 0, 11052, 11047, 1, 0, 0, 0, 11052, 11048, 1, 0, 0, 0, 11053, 1535, 1, 0, 0, 0, 11054, 11059, 3, 1538, 769, 0, 11055, 11056, 5, 6, 0, 0, 11056, 11058, 3, 1538, 769, 0, 11057, 11055, 1, 0, 0, 0, 11058, 11061, 1, 0, 0, 0, 11059, 11057, 1, 0, 0, 0, 11059, 11060, 1, 0, 0, 0, 11060, 1537, 1, 0, 0, 0, 11061, 11059, 1, 0, 0, 0, 11062, 11063, 3, 1544, 772, 0, 11063, 11064, 3, 1548, 774, 0, 11064, 1539, 1, 0, 0, 0, 11065, 11066, 7, 81, 0, 0, 11066, 1541, 1, 0, 0, 0, 11067, 11070, 5, 28, 0, 0, 11068, 11070, 3, 1474, 737, 0, 11069, 11067, 1, 0, 0, 0, 11069, 11068, 1, 0, 0, 0, 11070, 1543, 1, 0, 0, 0, 11071, 11072, 3, 1732, 866, 0, 11072, 1545, 1, 0, 0, 0, 11073, 11076, 1, 0, 0, 0, 11074, 11076, 5, 497, 0, 0, 11075, 11073, 1, 0, 0, 0, 11075, 11074, 1, 0, 0, 0, 11076, 1547, 1, 0, 0, 0, 11077, 11078, 3, 1168, 584, 0, 11078, 1549, 1, 0, 0, 0, 11079, 11083, 1, 0, 0, 0, 11080, 11081, 5, 43, 0, 0, 11081, 11083, 3, 558, 279, 0, 11082, 11079, 1, 0, 0, 0, 11082, 11080, 1, 0, 0, 0, 11083, 1551, 1, 0, 0, 0, 11084, 11088, 1, 0, 0, 0, 11085, 11086, 5, 77, 0, 0, 11086, 11088, 5, 78, 0, 0, 11087, 11084, 1, 0, 0, 0, 11087, 11085, 1, 0, 0, 0, 11088, 1553, 1, 0, 0, 0, 11089, 11094, 1, 0, 0, 0, 11090, 11091, 3, 1556, 778, 0, 11091, 11092, 3, 1736, 868, 0, 11092, 11094, 1, 0, 0, 0, 11093, 11089, 1, 0, 0, 0, 11093, 11090, 1, 0, 0, 0, 11094, 1555, 1, 0, 0, 0, 11095, 11098, 3, 1558, 779, 0, 11096, 11098, 5, 53, 0, 0, 11097, 11095, 1, 0, 0, 0, 11097, 11096, 1, 0, 0, 0, 11098, 1557, 1, 0, 0, 0, 11099, 11100, 7, 82, 0, 0, 11100, 1559, 1, 0, 0, 0, 11101, 11103, 3, 1562, 781, 0, 11102, 11101, 1, 0, 0, 0, 11103, 11106, 1, 0, 0, 0, 11104, 11102, 1, 0, 0, 0, 11104, 11105, 1, 0, 0, 0, 11105, 1561, 1, 0, 0, 0, 11106, 11104, 1, 0, 0, 0, 11107, 11108, 3, 1516, 758, 0, 11108, 11109, 5, 7, 0, 0, 11109, 11135, 1, 0, 0, 0, 11110, 11135, 3, 1628, 814, 0, 11111, 11135, 3, 1632, 816, 0, 11112, 11135, 3, 1570, 785, 0, 11113, 11135, 3, 1586, 793, 0, 11114, 11135, 3, 1592, 796, 0, 11115, 11135, 3, 1602, 801, 0, 11116, 11135, 3, 1604, 802, 0, 11117, 11135, 3, 1606, 803, 0, 11118, 11135, 3, 1620, 810, 0, 11119, 11135, 3, 1624, 812, 0, 11120, 11135, 3, 1644, 822, 0, 11121, 11135, 3, 1650, 825, 0, 11122, 11135, 3, 1652, 826, 0, 11123, 11135, 3, 1564, 782, 0, 11124, 11135, 3, 1566, 783, 0, 11125, 11135, 3, 1572, 786, 0, 11126, 11135, 3, 1660, 830, 0, 11127, 11135, 3, 1672, 836, 0, 11128, 11135, 3, 1680, 840, 0, 11129, 11135, 3, 1700, 850, 0, 11130, 11135, 3, 1702, 851, 0, 11131, 11135, 3, 1704, 852, 0, 11132, 11135, 3, 1706, 853, 0, 11133, 11135, 3, 1710, 855, 0, 11134, 11107, 1, 0, 0, 0, 11134, 11110, 1, 0, 0, 0, 11134, 11111, 1, 0, 0, 0, 11134, 11112, 1, 0, 0, 0, 11134, 11113, 1, 0, 0, 0, 11134, 11114, 1, 0, 0, 0, 11134, 11115, 1, 0, 0, 0, 11134, 11116, 1, 0, 0, 0, 11134, 11117, 1, 0, 0, 0, 11134, 11118, 1, 0, 0, 0, 11134, 11119, 1, 0, 0, 0, 11134, 11120, 1, 0, 0, 0, 11134, 11121, 1, 0, 0, 0, 11134, 11122, 1, 0, 0, 0, 11134, 11123, 1, 0, 0, 0, 11134, 11124, 1, 0, 0, 0, 11134, 11125, 1, 0, 0, 0, 11134, 11126, 1, 0, 0, 0, 11134, 11127, 1, 0, 0, 0, 11134, 11128, 1, 0, 0, 0, 11134, 11129, 1, 0, 0, 0, 11134, 11130, 1, 0, 0, 0, 11134, 11131, 1, 0, 0, 0, 11134, 11132, 1, 0, 0, 0, 11134, 11133, 1, 0, 0, 0, 11135, 1563, 1, 0, 0, 0, 11136, 11137, 5, 498, 0, 0, 11137, 11138, 3, 1740, 870, 0, 11138, 11139, 5, 7, 0, 0, 11139, 1565, 1, 0, 0, 0, 11140, 11141, 5, 433, 0, 0, 11141, 11147, 3, 1732, 866, 0, 11142, 11143, 5, 2, 0, 0, 11143, 11144, 3, 1568, 784, 0, 11144, 11145, 5, 3, 0, 0, 11145, 11146, 5, 7, 0, 0, 11146, 11148, 1, 0, 0, 0, 11147, 11142, 1, 0, 0, 0, 11147, 11148, 1, 0, 0, 0, 11148, 11157, 1, 0, 0, 0, 11149, 11150, 5, 57, 0, 0, 11150, 11151, 3, 1732, 866, 0, 11151, 11152, 5, 2, 0, 0, 11152, 11153, 3, 1568, 784, 0, 11153, 11154, 5, 3, 0, 0, 11154, 11155, 5, 7, 0, 0, 11155, 11157, 1, 0, 0, 0, 11156, 11140, 1, 0, 0, 0, 11156, 11149, 1, 0, 0, 0, 11157, 1567, 1, 0, 0, 0, 11158, 11161, 1, 0, 0, 0, 11159, 11161, 3, 1328, 664, 0, 11160, 11158, 1, 0, 0, 0, 11160, 11159, 1, 0, 0, 0, 11161, 1569, 1, 0, 0, 0, 11162, 11163, 3, 1584, 792, 0, 11163, 11164, 3, 1558, 779, 0, 11164, 11165, 3, 1736, 868, 0, 11165, 11166, 5, 7, 0, 0, 11166, 1571, 1, 0, 0, 0, 11167, 11168, 5, 499, 0, 0, 11168, 11169, 3, 1574, 787, 0, 11169, 11170, 5, 500, 0, 0, 11170, 11171, 3, 1576, 788, 0, 11171, 11172, 5, 7, 0, 0, 11172, 1573, 1, 0, 0, 0, 11173, 11177, 1, 0, 0, 0, 11174, 11177, 5, 434, 0, 0, 11175, 11177, 5, 501, 0, 0, 11176, 11173, 1, 0, 0, 0, 11176, 11174, 1, 0, 0, 0, 11176, 11175, 1, 0, 0, 0, 11177, 1575, 1, 0, 0, 0, 11178, 11183, 3, 1578, 789, 0, 11179, 11180, 5, 6, 0, 0, 11180, 11182, 3, 1578, 789, 0, 11181, 11179, 1, 0, 0, 0, 11182, 11185, 1, 0, 0, 0, 11183, 11181, 1, 0, 0, 0, 11183, 11184, 1, 0, 0, 0, 11184, 1577, 1, 0, 0, 0, 11185, 11183, 1, 0, 0, 0, 11186, 11187, 3, 1582, 791, 0, 11187, 11188, 3, 1558, 779, 0, 11188, 11189, 3, 1580, 790, 0, 11189, 1579, 1, 0, 0, 0, 11190, 11191, 3, 1474, 737, 0, 11191, 1581, 1, 0, 0, 0, 11192, 11193, 3, 1584, 792, 0, 11193, 1583, 1, 0, 0, 0, 11194, 11197, 3, 558, 279, 0, 11195, 11197, 5, 28, 0, 0, 11196, 11194, 1, 0, 0, 0, 11196, 11195, 1, 0, 0, 0, 11197, 11204, 1, 0, 0, 0, 11198, 11199, 5, 4, 0, 0, 11199, 11200, 3, 1742, 871, 0, 11200, 11201, 5, 5, 0, 0, 11201, 11203, 1, 0, 0, 0, 11202, 11198, 1, 0, 0, 0, 11203, 11206, 1, 0, 0, 0, 11204, 11202, 1, 0, 0, 0, 11204, 11205, 1, 0, 0, 0, 11205, 1585, 1, 0, 0, 0, 11206, 11204, 1, 0, 0, 0, 11207, 11208, 5, 220, 0, 0, 11208, 11209, 3, 1738, 869, 0, 11209, 11210, 5, 93, 0, 0, 11210, 11211, 3, 1560, 780, 0, 11211, 11212, 3, 1588, 794, 0, 11212, 11213, 3, 1590, 795, 0, 11213, 11214, 5, 454, 0, 0, 11214, 11215, 5, 220, 0, 0, 11215, 11216, 5, 7, 0, 0, 11216, 1587, 1, 0, 0, 0, 11217, 11218, 5, 502, 0, 0, 11218, 11219, 3, 1212, 606, 0, 11219, 11220, 5, 93, 0, 0, 11220, 11221, 3, 1560, 780, 0, 11221, 11223, 1, 0, 0, 0, 11222, 11217, 1, 0, 0, 0, 11223, 11226, 1, 0, 0, 0, 11224, 11222, 1, 0, 0, 0, 11224, 11225, 1, 0, 0, 0, 11225, 1589, 1, 0, 0, 0, 11226, 11224, 1, 0, 0, 0, 11227, 11231, 1, 0, 0, 0, 11228, 11229, 5, 58, 0, 0, 11229, 11231, 3, 1560, 780, 0, 11230, 11227, 1, 0, 0, 0, 11230, 11228, 1, 0, 0, 0, 11231, 1591, 1, 0, 0, 0, 11232, 11233, 5, 40, 0, 0, 11233, 11234, 3, 1594, 797, 0, 11234, 11235, 3, 1596, 798, 0, 11235, 11236, 3, 1600, 800, 0, 11236, 11237, 5, 454, 0, 0, 11237, 11238, 5, 40, 0, 0, 11238, 11239, 5, 7, 0, 0, 11239, 1593, 1, 0, 0, 0, 11240, 11243, 1, 0, 0, 0, 11241, 11243, 3, 1736, 868, 0, 11242, 11240, 1, 0, 0, 0, 11242, 11241, 1, 0, 0, 0, 11243, 1595, 1, 0, 0, 0, 11244, 11246, 3, 1598, 799, 0, 11245, 11244, 1, 0, 0, 0, 11246, 11247, 1, 0, 0, 0, 11247, 11245, 1, 0, 0, 0, 11247, 11248, 1, 0, 0, 0, 11248, 1597, 1, 0, 0, 0, 11249, 11250, 5, 102, 0, 0, 11250, 11251, 3, 1328, 664, 0, 11251, 11252, 5, 93, 0, 0, 11252, 11253, 3, 1560, 780, 0, 11253, 1599, 1, 0, 0, 0, 11254, 11258, 1, 0, 0, 0, 11255, 11256, 5, 58, 0, 0, 11256, 11258, 3, 1560, 780, 0, 11257, 11254, 1, 0, 0, 0, 11257, 11255, 1, 0, 0, 0, 11258, 1601, 1, 0, 0, 0, 11259, 11260, 3, 1726, 863, 0, 11260, 11261, 3, 1648, 824, 0, 11261, 1603, 1, 0, 0, 0, 11262, 11263, 3, 1726, 863, 0, 11263, 11264, 5, 503, 0, 0, 11264, 11265, 3, 1744, 872, 0, 11265, 11266, 3, 1648, 824, 0, 11266, 1605, 1, 0, 0, 0, 11267, 11268, 3, 1726, 863, 0, 11268, 11269, 5, 62, 0, 0, 11269, 11270, 3, 1608, 804, 0, 11270, 11271, 3, 1648, 824, 0, 11271, 1607, 1, 0, 0, 0, 11272, 11273, 3, 1618, 809, 0, 11273, 11289, 5, 68, 0, 0, 11274, 11275, 3, 994, 497, 0, 11275, 11276, 3, 1612, 806, 0, 11276, 11290, 1, 0, 0, 0, 11277, 11290, 3, 1000, 500, 0, 11278, 11290, 3, 926, 463, 0, 11279, 11280, 5, 202, 0, 0, 11280, 11281, 3, 1212, 606, 0, 11281, 11282, 3, 1610, 805, 0, 11282, 11290, 1, 0, 0, 0, 11283, 11284, 3, 1614, 807, 0, 11284, 11285, 3, 1212, 606, 0, 11285, 11286, 5, 24, 0, 0, 11286, 11287, 3, 1212, 606, 0, 11287, 11288, 3, 1616, 808, 0, 11288, 11290, 1, 0, 0, 0, 11289, 11274, 1, 0, 0, 0, 11289, 11277, 1, 0, 0, 0, 11289, 11278, 1, 0, 0, 0, 11289, 11279, 1, 0, 0, 0, 11289, 11283, 1, 0, 0, 0, 11290, 1609, 1, 0, 0, 0, 11291, 11295, 1, 0, 0, 0, 11292, 11293, 5, 100, 0, 0, 11293, 11295, 3, 1328, 664, 0, 11294, 11291, 1, 0, 0, 0, 11294, 11292, 1, 0, 0, 0, 11295, 1611, 1, 0, 0, 0, 11296, 11309, 1, 0, 0, 0, 11297, 11298, 5, 2, 0, 0, 11298, 11303, 3, 1212, 606, 0, 11299, 11300, 5, 6, 0, 0, 11300, 11302, 3, 1212, 606, 0, 11301, 11299, 1, 0, 0, 0, 11302, 11305, 1, 0, 0, 0, 11303, 11301, 1, 0, 0, 0, 11303, 11304, 1, 0, 0, 0, 11304, 11306, 1, 0, 0, 0, 11305, 11303, 1, 0, 0, 0, 11306, 11307, 5, 3, 0, 0, 11307, 11309, 1, 0, 0, 0, 11308, 11296, 1, 0, 0, 0, 11308, 11297, 1, 0, 0, 0, 11309, 1613, 1, 0, 0, 0, 11310, 11313, 1, 0, 0, 0, 11311, 11313, 5, 504, 0, 0, 11312, 11310, 1, 0, 0, 0, 11312, 11311, 1, 0, 0, 0, 11313, 1615, 1, 0, 0, 0, 11314, 11318, 1, 0, 0, 0, 11315, 11316, 5, 147, 0, 0, 11316, 11318, 3, 1212, 606, 0, 11317, 11314, 1, 0, 0, 0, 11317, 11315, 1, 0, 0, 0, 11318, 1617, 1, 0, 0, 0, 11319, 11320, 3, 552, 276, 0, 11320, 1619, 1, 0, 0, 0, 11321, 11322, 3, 1726, 863, 0, 11322, 11323, 5, 505, 0, 0, 11323, 11324, 3, 1618, 809, 0, 11324, 11325, 3, 1622, 811, 0, 11325, 11326, 5, 68, 0, 0, 11326, 11327, 5, 35, 0, 0, 11327, 11328, 3, 1212, 606, 0, 11328, 11329, 3, 1648, 824, 0, 11329, 1621, 1, 0, 0, 0, 11330, 11334, 1, 0, 0, 0, 11331, 11332, 5, 506, 0, 0, 11332, 11334, 3, 1456, 728, 0, 11333, 11330, 1, 0, 0, 0, 11333, 11331, 1, 0, 0, 0, 11334, 1623, 1, 0, 0, 0, 11335, 11336, 3, 1626, 813, 0, 11336, 11338, 3, 1728, 864, 0, 11337, 11339, 3, 1730, 865, 0, 11338, 11337, 1, 0, 0, 0, 11338, 11339, 1, 0, 0, 0, 11339, 11340, 1, 0, 0, 0, 11340, 11341, 5, 7, 0, 0, 11341, 1625, 1, 0, 0, 0, 11342, 11343, 7, 83, 0, 0, 11343, 1627, 1, 0, 0, 0, 11344, 11356, 5, 508, 0, 0, 11345, 11346, 5, 268, 0, 0, 11346, 11357, 3, 1736, 868, 0, 11347, 11353, 5, 509, 0, 0, 11348, 11349, 5, 202, 0, 0, 11349, 11350, 3, 1212, 606, 0, 11350, 11351, 3, 1610, 805, 0, 11351, 11354, 1, 0, 0, 0, 11352, 11354, 3, 1000, 500, 0, 11353, 11348, 1, 0, 0, 0, 11353, 11352, 1, 0, 0, 0, 11354, 11357, 1, 0, 0, 0, 11355, 11357, 3, 1630, 815, 0, 11356, 11345, 1, 0, 0, 0, 11356, 11347, 1, 0, 0, 0, 11356, 11355, 1, 0, 0, 0, 11357, 11358, 1, 0, 0, 0, 11358, 11359, 5, 7, 0, 0, 11359, 1629, 1, 0, 0, 0, 11360, 11363, 1, 0, 0, 0, 11361, 11363, 3, 1736, 868, 0, 11362, 11360, 1, 0, 0, 0, 11362, 11361, 1, 0, 0, 0, 11363, 1631, 1, 0, 0, 0, 11364, 11366, 5, 510, 0, 0, 11365, 11367, 3, 1634, 817, 0, 11366, 11365, 1, 0, 0, 0, 11366, 11367, 1, 0, 0, 0, 11367, 11368, 1, 0, 0, 0, 11368, 11369, 3, 1458, 729, 0, 11369, 11370, 3, 1636, 818, 0, 11370, 11371, 3, 1638, 819, 0, 11371, 11372, 5, 7, 0, 0, 11372, 11399, 1, 0, 0, 0, 11373, 11375, 5, 510, 0, 0, 11374, 11376, 3, 1634, 817, 0, 11375, 11374, 1, 0, 0, 0, 11375, 11376, 1, 0, 0, 0, 11376, 11377, 1, 0, 0, 0, 11377, 11378, 3, 1492, 746, 0, 11378, 11379, 3, 1638, 819, 0, 11379, 11380, 5, 7, 0, 0, 11380, 11399, 1, 0, 0, 0, 11381, 11383, 5, 510, 0, 0, 11382, 11384, 3, 1634, 817, 0, 11383, 11382, 1, 0, 0, 0, 11383, 11384, 1, 0, 0, 0, 11384, 11385, 1, 0, 0, 0, 11385, 11386, 5, 511, 0, 0, 11386, 11387, 3, 1458, 729, 0, 11387, 11388, 3, 1638, 819, 0, 11388, 11389, 5, 7, 0, 0, 11389, 11399, 1, 0, 0, 0, 11390, 11392, 5, 510, 0, 0, 11391, 11393, 3, 1634, 817, 0, 11392, 11391, 1, 0, 0, 0, 11392, 11393, 1, 0, 0, 0, 11393, 11394, 1, 0, 0, 0, 11394, 11395, 3, 1638, 819, 0, 11395, 11396, 5, 7, 0, 0, 11396, 11399, 1, 0, 0, 0, 11397, 11399, 5, 510, 0, 0, 11398, 11364, 1, 0, 0, 0, 11398, 11373, 1, 0, 0, 0, 11398, 11381, 1, 0, 0, 0, 11398, 11390, 1, 0, 0, 0, 11398, 11397, 1, 0, 0, 0, 11399, 1633, 1, 0, 0, 0, 11400, 11401, 7, 84, 0, 0, 11401, 1635, 1, 0, 0, 0, 11402, 11410, 1, 0, 0, 0, 11403, 11404, 5, 6, 0, 0, 11404, 11406, 3, 1212, 606, 0, 11405, 11403, 1, 0, 0, 0, 11406, 11407, 1, 0, 0, 0, 11407, 11405, 1, 0, 0, 0, 11407, 11408, 1, 0, 0, 0, 11408, 11410, 1, 0, 0, 0, 11409, 11402, 1, 0, 0, 0, 11409, 11405, 1, 0, 0, 0, 11410, 1637, 1, 0, 0, 0, 11411, 11415, 1, 0, 0, 0, 11412, 11413, 5, 100, 0, 0, 11413, 11415, 3, 1642, 821, 0, 11414, 11411, 1, 0, 0, 0, 11414, 11412, 1, 0, 0, 0, 11415, 1639, 1, 0, 0, 0, 11416, 11417, 3, 1492, 746, 0, 11417, 11418, 5, 10, 0, 0, 11418, 11419, 3, 1212, 606, 0, 11419, 1641, 1, 0, 0, 0, 11420, 11425, 3, 1640, 820, 0, 11421, 11422, 5, 6, 0, 0, 11422, 11424, 3, 1640, 820, 0, 11423, 11421, 1, 0, 0, 0, 11424, 11427, 1, 0, 0, 0, 11425, 11423, 1, 0, 0, 0, 11425, 11426, 1, 0, 0, 0, 11426, 1643, 1, 0, 0, 0, 11427, 11425, 1, 0, 0, 0, 11428, 11429, 5, 518, 0, 0, 11429, 11430, 3, 1736, 868, 0, 11430, 11431, 3, 1646, 823, 0, 11431, 11432, 5, 7, 0, 0, 11432, 1645, 1, 0, 0, 0, 11433, 11437, 1, 0, 0, 0, 11434, 11435, 5, 6, 0, 0, 11435, 11437, 3, 1736, 868, 0, 11436, 11433, 1, 0, 0, 0, 11436, 11434, 1, 0, 0, 0, 11437, 1647, 1, 0, 0, 0, 11438, 11439, 5, 519, 0, 0, 11439, 11440, 3, 1560, 780, 0, 11440, 11441, 5, 454, 0, 0, 11441, 11442, 5, 519, 0, 0, 11442, 11443, 3, 1728, 864, 0, 11443, 11444, 5, 7, 0, 0, 11444, 1649, 1, 0, 0, 0, 11445, 11446, 3, 1746, 873, 0, 11446, 11447, 5, 7, 0, 0, 11447, 1651, 1, 0, 0, 0, 11448, 11449, 5, 202, 0, 0, 11449, 11457, 3, 1212, 606, 0, 11450, 11451, 3, 1658, 829, 0, 11451, 11452, 3, 1654, 827, 0, 11452, 11458, 1, 0, 0, 0, 11453, 11454, 3, 1654, 827, 0, 11454, 11455, 3, 1658, 829, 0, 11455, 11458, 1, 0, 0, 0, 11456, 11458, 1, 0, 0, 0, 11457, 11450, 1, 0, 0, 0, 11457, 11453, 1, 0, 0, 0, 11457, 11456, 1, 0, 0, 0, 11458, 11459, 1, 0, 0, 0, 11459, 11460, 5, 7, 0, 0, 11460, 1653, 1, 0, 0, 0, 11461, 11465, 1, 0, 0, 0, 11462, 11463, 5, 100, 0, 0, 11463, 11465, 3, 1656, 828, 0, 11464, 11461, 1, 0, 0, 0, 11464, 11462, 1, 0, 0, 0, 11465, 1655, 1, 0, 0, 0, 11466, 11471, 3, 1212, 606, 0, 11467, 11468, 5, 6, 0, 0, 11468, 11470, 3, 1212, 606, 0, 11469, 11467, 1, 0, 0, 0, 11470, 11473, 1, 0, 0, 0, 11471, 11469, 1, 0, 0, 0, 11471, 11472, 1, 0, 0, 0, 11472, 1657, 1, 0, 0, 0, 11473, 11471, 1, 0, 0, 0, 11474, 11481, 1, 0, 0, 0, 11475, 11477, 5, 71, 0, 0, 11476, 11478, 5, 346, 0, 0, 11477, 11476, 1, 0, 0, 0, 11477, 11478, 1, 0, 0, 0, 11478, 11479, 1, 0, 0, 0, 11479, 11481, 3, 1674, 837, 0, 11480, 11474, 1, 0, 0, 0, 11480, 11475, 1, 0, 0, 0, 11481, 1659, 1, 0, 0, 0, 11482, 11500, 5, 520, 0, 0, 11483, 11484, 3, 1712, 856, 0, 11484, 11485, 3, 1668, 834, 0, 11485, 11491, 5, 62, 0, 0, 11486, 11492, 3, 1000, 500, 0, 11487, 11488, 5, 202, 0, 0, 11488, 11489, 3, 1736, 868, 0, 11489, 11490, 3, 1666, 833, 0, 11490, 11492, 1, 0, 0, 0, 11491, 11486, 1, 0, 0, 0, 11491, 11487, 1, 0, 0, 0, 11492, 11501, 1, 0, 0, 0, 11493, 11498, 3, 1474, 737, 0, 11494, 11495, 5, 2, 0, 0, 11495, 11496, 3, 1664, 832, 0, 11496, 11497, 5, 3, 0, 0, 11497, 11499, 1, 0, 0, 0, 11498, 11494, 1, 0, 0, 0, 11498, 11499, 1, 0, 0, 0, 11499, 11501, 1, 0, 0, 0, 11500, 11483, 1, 0, 0, 0, 11500, 11493, 1, 0, 0, 0, 11501, 11502, 1, 0, 0, 0, 11502, 11503, 5, 7, 0, 0, 11503, 1661, 1, 0, 0, 0, 11504, 11505, 3, 1474, 737, 0, 11505, 11506, 5, 20, 0, 0, 11506, 11507, 3, 1212, 606, 0, 11507, 11510, 1, 0, 0, 0, 11508, 11510, 3, 1212, 606, 0, 11509, 11504, 1, 0, 0, 0, 11509, 11508, 1, 0, 0, 0, 11510, 1663, 1, 0, 0, 0, 11511, 11516, 3, 1662, 831, 0, 11512, 11513, 5, 6, 0, 0, 11513, 11515, 3, 1662, 831, 0, 11514, 11512, 1, 0, 0, 0, 11515, 11518, 1, 0, 0, 0, 11516, 11514, 1, 0, 0, 0, 11516, 11517, 1, 0, 0, 0, 11517, 1665, 1, 0, 0, 0, 11518, 11516, 1, 0, 0, 0, 11519, 11523, 1, 0, 0, 0, 11520, 11521, 5, 100, 0, 0, 11521, 11523, 3, 1328, 664, 0, 11522, 11519, 1, 0, 0, 0, 11522, 11520, 1, 0, 0, 0, 11523, 1667, 1, 0, 0, 0, 11524, 11529, 1, 0, 0, 0, 11525, 11526, 3, 1670, 835, 0, 11526, 11527, 5, 324, 0, 0, 11527, 11529, 1, 0, 0, 0, 11528, 11524, 1, 0, 0, 0, 11528, 11525, 1, 0, 0, 0, 11529, 1669, 1, 0, 0, 0, 11530, 11533, 1, 0, 0, 0, 11531, 11533, 5, 269, 0, 0, 11532, 11530, 1, 0, 0, 0, 11532, 11531, 1, 0, 0, 0, 11533, 1671, 1, 0, 0, 0, 11534, 11536, 5, 61, 0, 0, 11535, 11537, 3, 1678, 839, 0, 11536, 11535, 1, 0, 0, 0, 11536, 11537, 1, 0, 0, 0, 11537, 11538, 1, 0, 0, 0, 11538, 11539, 3, 1676, 838, 0, 11539, 11540, 3, 1712, 856, 0, 11540, 11541, 5, 71, 0, 0, 11541, 11542, 3, 1674, 837, 0, 11542, 11543, 5, 7, 0, 0, 11543, 1673, 1, 0, 0, 0, 11544, 11545, 3, 1328, 664, 0, 11545, 1675, 1, 0, 0, 0, 11546, 11550, 1, 0, 0, 0, 11547, 11550, 5, 64, 0, 0, 11548, 11550, 5, 68, 0, 0, 11549, 11546, 1, 0, 0, 0, 11549, 11547, 1, 0, 0, 0, 11549, 11548, 1, 0, 0, 0, 11550, 1677, 1, 0, 0, 0, 11551, 11567, 5, 268, 0, 0, 11552, 11567, 5, 293, 0, 0, 11553, 11567, 5, 207, 0, 0, 11554, 11567, 5, 249, 0, 0, 11555, 11556, 5, 130, 0, 0, 11556, 11567, 3, 1212, 606, 0, 11557, 11558, 5, 307, 0, 0, 11558, 11567, 3, 1212, 606, 0, 11559, 11567, 3, 1212, 606, 0, 11560, 11567, 5, 30, 0, 0, 11561, 11564, 7, 85, 0, 0, 11562, 11565, 3, 1212, 606, 0, 11563, 11565, 5, 30, 0, 0, 11564, 11562, 1, 0, 0, 0, 11564, 11563, 1, 0, 0, 0, 11564, 11565, 1, 0, 0, 0, 11565, 11567, 1, 0, 0, 0, 11566, 11551, 1, 0, 0, 0, 11566, 11552, 1, 0, 0, 0, 11566, 11553, 1, 0, 0, 0, 11566, 11554, 1, 0, 0, 0, 11566, 11555, 1, 0, 0, 0, 11566, 11557, 1, 0, 0, 0, 11566, 11559, 1, 0, 0, 0, 11566, 11560, 1, 0, 0, 0, 11566, 11561, 1, 0, 0, 0, 11567, 1679, 1, 0, 0, 0, 11568, 11570, 5, 265, 0, 0, 11569, 11571, 3, 1678, 839, 0, 11570, 11569, 1, 0, 0, 0, 11570, 11571, 1, 0, 0, 0, 11571, 11572, 1, 0, 0, 0, 11572, 11573, 3, 1712, 856, 0, 11573, 11574, 5, 7, 0, 0, 11574, 1681, 1, 0, 0, 0, 11575, 11577, 3, 1014, 507, 0, 11576, 11575, 1, 0, 0, 0, 11576, 11577, 1, 0, 0, 0, 11577, 11578, 1, 0, 0, 0, 11578, 11579, 5, 525, 0, 0, 11579, 11581, 5, 71, 0, 0, 11580, 11582, 5, 81, 0, 0, 11581, 11580, 1, 0, 0, 0, 11581, 11582, 1, 0, 0, 0, 11582, 11583, 1, 0, 0, 0, 11583, 11585, 3, 1406, 703, 0, 11584, 11586, 5, 9, 0, 0, 11585, 11584, 1, 0, 0, 0, 11585, 11586, 1, 0, 0, 0, 11586, 11591, 1, 0, 0, 0, 11587, 11589, 5, 36, 0, 0, 11588, 11587, 1, 0, 0, 0, 11588, 11589, 1, 0, 0, 0, 11589, 11590, 1, 0, 0, 0, 11590, 11592, 3, 1474, 737, 0, 11591, 11588, 1, 0, 0, 0, 11591, 11592, 1, 0, 0, 0, 11592, 11593, 1, 0, 0, 0, 11593, 11594, 5, 100, 0, 0, 11594, 11595, 3, 1684, 842, 0, 11595, 11596, 5, 80, 0, 0, 11596, 11598, 3, 1686, 843, 0, 11597, 11599, 3, 1688, 844, 0, 11598, 11597, 1, 0, 0, 0, 11599, 11600, 1, 0, 0, 0, 11600, 11598, 1, 0, 0, 0, 11600, 11601, 1, 0, 0, 0, 11601, 1683, 1, 0, 0, 0, 11602, 11604, 5, 81, 0, 0, 11603, 11602, 1, 0, 0, 0, 11603, 11604, 1, 0, 0, 0, 11604, 11605, 1, 0, 0, 0, 11605, 11607, 3, 1406, 703, 0, 11606, 11608, 5, 9, 0, 0, 11607, 11606, 1, 0, 0, 0, 11607, 11608, 1, 0, 0, 0, 11608, 11614, 1, 0, 0, 0, 11609, 11612, 3, 1004, 502, 0, 11610, 11612, 3, 1100, 550, 0, 11611, 11609, 1, 0, 0, 0, 11611, 11610, 1, 0, 0, 0, 11612, 11614, 1, 0, 0, 0, 11613, 11603, 1, 0, 0, 0, 11613, 11611, 1, 0, 0, 0, 11614, 11619, 1, 0, 0, 0, 11615, 11617, 5, 36, 0, 0, 11616, 11615, 1, 0, 0, 0, 11616, 11617, 1, 0, 0, 0, 11617, 11618, 1, 0, 0, 0, 11618, 11620, 3, 1474, 737, 0, 11619, 11616, 1, 0, 0, 0, 11619, 11620, 1, 0, 0, 0, 11620, 1685, 1, 0, 0, 0, 11621, 11622, 3, 1212, 606, 0, 11622, 1687, 1, 0, 0, 0, 11623, 11624, 5, 102, 0, 0, 11624, 11627, 5, 526, 0, 0, 11625, 11626, 5, 33, 0, 0, 11626, 11628, 3, 1212, 606, 0, 11627, 11625, 1, 0, 0, 0, 11627, 11628, 1, 0, 0, 0, 11628, 11629, 1, 0, 0, 0, 11629, 11634, 5, 93, 0, 0, 11630, 11635, 3, 1692, 846, 0, 11631, 11635, 5, 182, 0, 0, 11632, 11633, 5, 57, 0, 0, 11633, 11635, 5, 270, 0, 0, 11634, 11630, 1, 0, 0, 0, 11634, 11631, 1, 0, 0, 0, 11634, 11632, 1, 0, 0, 0, 11635, 11650, 1, 0, 0, 0, 11636, 11637, 5, 102, 0, 0, 11637, 11638, 5, 77, 0, 0, 11638, 11641, 5, 526, 0, 0, 11639, 11640, 5, 33, 0, 0, 11640, 11642, 3, 1212, 606, 0, 11641, 11639, 1, 0, 0, 0, 11641, 11642, 1, 0, 0, 0, 11642, 11643, 1, 0, 0, 0, 11643, 11647, 5, 93, 0, 0, 11644, 11648, 3, 1690, 845, 0, 11645, 11646, 5, 57, 0, 0, 11646, 11648, 5, 270, 0, 0, 11647, 11644, 1, 0, 0, 0, 11647, 11645, 1, 0, 0, 0, 11648, 11650, 1, 0, 0, 0, 11649, 11623, 1, 0, 0, 0, 11649, 11636, 1, 0, 0, 0, 11650, 1689, 1, 0, 0, 0, 11651, 11656, 5, 241, 0, 0, 11652, 11653, 5, 2, 0, 0, 11653, 11654, 3, 244, 122, 0, 11654, 11655, 5, 3, 0, 0, 11655, 11657, 1, 0, 0, 0, 11656, 11652, 1, 0, 0, 0, 11656, 11657, 1, 0, 0, 0, 11657, 11661, 1, 0, 0, 0, 11658, 11659, 5, 463, 0, 0, 11659, 11660, 7, 53, 0, 0, 11660, 11662, 5, 450, 0, 0, 11661, 11658, 1, 0, 0, 0, 11661, 11662, 1, 0, 0, 0, 11662, 11663, 1, 0, 0, 0, 11663, 11664, 3, 1694, 847, 0, 11664, 1691, 1, 0, 0, 0, 11665, 11666, 5, 369, 0, 0, 11666, 11679, 5, 333, 0, 0, 11667, 11668, 3, 1432, 716, 0, 11668, 11669, 5, 10, 0, 0, 11669, 11670, 3, 1698, 849, 0, 11670, 11680, 1, 0, 0, 0, 11671, 11672, 5, 2, 0, 0, 11672, 11673, 3, 244, 122, 0, 11673, 11674, 5, 3, 0, 0, 11674, 11675, 5, 10, 0, 0, 11675, 11676, 5, 2, 0, 0, 11676, 11677, 3, 1696, 848, 0, 11677, 11678, 5, 3, 0, 0, 11678, 11680, 1, 0, 0, 0, 11679, 11667, 1, 0, 0, 0, 11679, 11671, 1, 0, 0, 0, 11680, 11681, 1, 0, 0, 0, 11681, 11679, 1, 0, 0, 0, 11681, 11682, 1, 0, 0, 0, 11682, 1693, 1, 0, 0, 0, 11683, 11684, 5, 422, 0, 0, 11684, 11688, 3, 1696, 848, 0, 11685, 11686, 5, 53, 0, 0, 11686, 11688, 5, 422, 0, 0, 11687, 11683, 1, 0, 0, 0, 11687, 11685, 1, 0, 0, 0, 11688, 1695, 1, 0, 0, 0, 11689, 11690, 5, 2, 0, 0, 11690, 11695, 3, 1698, 849, 0, 11691, 11692, 5, 6, 0, 0, 11692, 11694, 3, 1698, 849, 0, 11693, 11691, 1, 0, 0, 0, 11694, 11697, 1, 0, 0, 0, 11695, 11693, 1, 0, 0, 0, 11695, 11696, 1, 0, 0, 0, 11696, 11698, 1, 0, 0, 0, 11697, 11695, 1, 0, 0, 0, 11698, 11699, 5, 3, 0, 0, 11699, 1697, 1, 0, 0, 0, 11700, 11703, 3, 1048, 524, 0, 11701, 11703, 5, 53, 0, 0, 11702, 11700, 1, 0, 0, 0, 11702, 11701, 1, 0, 0, 0, 11703, 1699, 1, 0, 0, 0, 11704, 11705, 5, 157, 0, 0, 11705, 11706, 3, 1712, 856, 0, 11706, 11707, 5, 7, 0, 0, 11707, 1701, 1, 0, 0, 0, 11708, 11709, 5, 78, 0, 0, 11709, 11710, 5, 7, 0, 0, 11710, 1703, 1, 0, 0, 0, 11711, 11713, 5, 161, 0, 0, 11712, 11714, 3, 1708, 854, 0, 11713, 11712, 1, 0, 0, 0, 11713, 11714, 1, 0, 0, 0, 11714, 11715, 1, 0, 0, 0, 11715, 11716, 5, 7, 0, 0, 11716, 1705, 1, 0, 0, 0, 11717, 11719, 5, 319, 0, 0, 11718, 11720, 3, 1708, 854, 0, 11719, 11718, 1, 0, 0, 0, 11719, 11720, 1, 0, 0, 0, 11720, 11721, 1, 0, 0, 0, 11721, 11722, 5, 7, 0, 0, 11722, 1707, 1, 0, 0, 0, 11723, 11725, 5, 33, 0, 0, 11724, 11726, 5, 269, 0, 0, 11725, 11724, 1, 0, 0, 0, 11725, 11726, 1, 0, 0, 0, 11726, 11727, 1, 0, 0, 0, 11727, 11728, 5, 153, 0, 0, 11728, 1709, 1, 0, 0, 0, 11729, 11730, 5, 333, 0, 0, 11730, 11731, 3, 558, 279, 0, 11731, 11732, 5, 94, 0, 0, 11732, 11733, 5, 53, 0, 0, 11733, 11734, 5, 7, 0, 0, 11734, 11742, 1, 0, 0, 0, 11735, 11738, 5, 313, 0, 0, 11736, 11739, 3, 558, 279, 0, 11737, 11739, 5, 30, 0, 0, 11738, 11736, 1, 0, 0, 0, 11738, 11737, 1, 0, 0, 0, 11739, 11740, 1, 0, 0, 0, 11740, 11742, 5, 7, 0, 0, 11741, 11729, 1, 0, 0, 0, 11741, 11735, 1, 0, 0, 0, 11742, 1711, 1, 0, 0, 0, 11743, 11746, 3, 1474, 737, 0, 11744, 11746, 5, 28, 0, 0, 11745, 11743, 1, 0, 0, 0, 11745, 11744, 1, 0, 0, 0, 11746, 1713, 1, 0, 0, 0, 11747, 11751, 1, 0, 0, 0, 11748, 11749, 5, 517, 0, 0, 11749, 11751, 3, 1716, 858, 0, 11750, 11747, 1, 0, 0, 0, 11750, 11748, 1, 0, 0, 0, 11751, 1715, 1, 0, 0, 0, 11752, 11754, 3, 1718, 859, 0, 11753, 11752, 1, 0, 0, 0, 11754, 11755, 1, 0, 0, 0, 11755, 11753, 1, 0, 0, 0, 11755, 11756, 1, 0, 0, 0, 11756, 1717, 1, 0, 0, 0, 11757, 11758, 5, 102, 0, 0, 11758, 11759, 3, 1720, 860, 0, 11759, 11760, 5, 93, 0, 0, 11760, 11761, 3, 1560, 780, 0, 11761, 1719, 1, 0, 0, 0, 11762, 11767, 3, 1722, 861, 0, 11763, 11764, 5, 82, 0, 0, 11764, 11766, 3, 1722, 861, 0, 11765, 11763, 1, 0, 0, 0, 11766, 11769, 1, 0, 0, 0, 11767, 11765, 1, 0, 0, 0, 11767, 11768, 1, 0, 0, 0, 11768, 1721, 1, 0, 0, 0, 11769, 11767, 1, 0, 0, 0, 11770, 11774, 3, 1732, 866, 0, 11771, 11772, 5, 511, 0, 0, 11772, 11774, 3, 1458, 729, 0, 11773, 11770, 1, 0, 0, 0, 11773, 11771, 1, 0, 0, 0, 11774, 1723, 1, 0, 0, 0, 11775, 11778, 1, 0, 0, 0, 11776, 11778, 3, 1524, 762, 0, 11777, 11775, 1, 0, 0, 0, 11777, 11776, 1, 0, 0, 0, 11778, 1725, 1, 0, 0, 0, 11779, 11782, 1, 0, 0, 0, 11780, 11782, 3, 1524, 762, 0, 11781, 11779, 1, 0, 0, 0, 11781, 11780, 1, 0, 0, 0, 11782, 1727, 1, 0, 0, 0, 11783, 11786, 1, 0, 0, 0, 11784, 11786, 3, 1732, 866, 0, 11785, 11783, 1, 0, 0, 0, 11785, 11784, 1, 0, 0, 0, 11786, 1729, 1, 0, 0, 0, 11787, 11788, 5, 102, 0, 0, 11788, 11789, 3, 1740, 870, 0, 11789, 1731, 1, 0, 0, 0, 11790, 11793, 3, 1474, 737, 0, 11791, 11793, 3, 1734, 867, 0, 11792, 11790, 1, 0, 0, 0, 11792, 11791, 1, 0, 0, 0, 11793, 1733, 1, 0, 0, 0, 11794, 11795, 7, 86, 0, 0, 11795, 1735, 1, 0, 0, 0, 11796, 11798, 3, 1384, 692, 0, 11797, 11796, 1, 0, 0, 0, 11797, 11798, 1, 0, 0, 0, 11798, 11800, 1, 0, 0, 0, 11799, 11801, 3, 1028, 514, 0, 11800, 11799, 1, 0, 0, 0, 11800, 11801, 1, 0, 0, 0, 11801, 11803, 1, 0, 0, 0, 11802, 11804, 3, 1102, 551, 0, 11803, 11802, 1, 0, 0, 0, 11803, 11804, 1, 0, 0, 0, 11804, 11806, 1, 0, 0, 0, 11805, 11807, 3, 1144, 572, 0, 11806, 11805, 1, 0, 0, 0, 11806, 11807, 1, 0, 0, 0, 11807, 11809, 1, 0, 0, 0, 11808, 11810, 3, 1072, 536, 0, 11809, 11808, 1, 0, 0, 0, 11809, 11810, 1, 0, 0, 0, 11810, 11812, 1, 0, 0, 0, 11811, 11813, 3, 1086, 543, 0, 11812, 11811, 1, 0, 0, 0, 11812, 11813, 1, 0, 0, 0, 11813, 11815, 1, 0, 0, 0, 11814, 11816, 3, 1288, 644, 0, 11815, 11814, 1, 0, 0, 0, 11815, 11816, 1, 0, 0, 0, 11816, 1737, 1, 0, 0, 0, 11817, 11818, 3, 1736, 868, 0, 11818, 1739, 1, 0, 0, 0, 11819, 11820, 3, 1736, 868, 0, 11820, 1741, 1, 0, 0, 0, 11821, 11822, 3, 1212, 606, 0, 11822, 1743, 1, 0, 0, 0, 11823, 11824, 3, 1212, 606, 0, 11824, 1745, 1, 0, 0, 0, 11825, 11827, 3, 6, 3, 0, 11826, 11828, 3, 1748, 874, 0, 11827, 11826, 1, 0, 0, 0, 11827, 11828, 1, 0, 0, 0, 11828, 1747, 1, 0, 0, 0, 11829, 11830, 5, 71, 0, 0, 11830, 11831, 3, 1030, 515, 0, 11831, 11832, 3, 1674, 837, 0, 11832, 1749, 1, 0, 0, 0, 1282, 1753, 1762, 1881, 1885, 1894, 1903, 1909, 1915, 1947, 1959, 1965, 1973, 1981, 1987, 1996, 2002, 2014, 2020, 2026, 2033, 2037, 2042, 2046, 2059, 2070, 2076, 2092, 2095, 2100, 2106, 2111, 2120, 2124, 2136, 2140, 2143, 2147, 2158, 2176, 2183, 2191, 2196, 2203, 2209, 2215, 2222, 2233, 2237, 2241, 2245, 2258, 2262, 2267, 2272, 2284, 2293, 2305, 2310, 2321, 2327, 2332, 2342, 2347, 2354, 2359, 2364, 2375, 2381, 2386, 2394, 2403, 2418, 2424, 2430, 2435, 2442, 2454, 2462, 2470, 2488, 2497, 2511, 2515, 2530, 2538, 2548, 2588, 2591, 2595, 2599, 2602, 2607, 2614, 2623, 2629, 2633, 2642, 2650, 2659, 2668, 2672, 2679, 2685, 2689, 2693, 2698, 2701, 2705, 2711, 2718, 2734, 2748, 2758, 2760, 2765, 2769, 2772, 2778, 2780, 2808, 2818, 2831, 2838, 2843, 2847, 2853, 2858, 2861, 2863, 2868, 2872, 2876, 2880, 2884, 2887, 2891, 2899, 2903, 2907, 2916, 2923, 2928, 2935, 2940, 2947, 2952, 2970, 2975, 2987, 2992, 3001, 3008, 3015, 3019, 3024, 3028, 3031, 3034, 3037, 3040, 3043, 3048, 3051, 3054, 3057, 3060, 3063, 3069, 3073, 3076, 3079, 3082, 3085, 3087, 3096, 3111, 3119, 3125, 3129, 3134, 3137, 3140, 3144, 3148, 3162, 3167, 3174, 3179, 3183, 3186, 3190, 3193, 3195, 3202, 3205, 3209, 3215, 3218, 3225, 3234, 3241, 3246, 3249, 3252, 3255, 3259, 3266, 3271, 3284, 3294, 3307, 3310, 3313, 3320, 3328, 3331, 3334, 3341, 3345, 3351, 3354, 3357, 3360, 3372, 3375, 3378, 3382, 3400, 3408, 3424, 3435, 3450, 3467, 3469, 3490, 3495, 3498, 3502, 3505, 3511, 3514, 3516, 3527, 3536, 3542, 3545, 3548, 3562, 3565, 3568, 3573, 3581, 3590, 3594, 3600, 3604, 3607, 3610, 3613, 3616, 3622, 3626, 3631, 3637, 3641, 3644, 3647, 3650, 3658, 3662, 3666, 3670, 3674, 3679, 3693, 3702, 3719, 3724, 3727, 3729, 3739, 3746, 3751, 3754, 3757, 3764, 3767, 3769, 3775, 3784, 3794, 3799, 3807, 3811, 3818, 3828, 3839, 3947, 3955, 3958, 3968, 3973, 3983, 3994, 4006, 4019, 4029, 4041, 4045, 4048, 4055, 4063, 4073, 4075, 4081, 4086, 4090, 4095, 4101, 4108, 4114, 4116, 4123, 4131, 4136, 4147, 4154, 4158, 4175, 4178, 4181, 4184, 4187, 4195, 4198, 4201, 4207, 4215, 4219, 4231, 4237, 4240, 4245, 4249, 4256, 4267, 4290, 4310, 4319, 4322, 4325, 4335, 4338, 4347, 4351, 4354, 4362, 4368, 4372, 4383, 4393, 4401, 4406, 4418, 4435, 4439, 4445, 4452, 4460, 4474, 4500, 4507, 4521, 4532, 4535, 4548, 4557, 4582, 4593, 4635, 4643, 4649, 4660, 4666, 4674, 4685, 4699, 4708, 4713, 4724, 4735, 4743, 4753, 4760, 4763, 4769, 4772, 4787, 4800, 4829, 4836, 4851, 4863, 4867, 4872, 4876, 4881, 4885, 4891, 4895, 4900, 4904, 4910, 4914, 4919, 4923, 4928, 4932, 4937, 4941, 4948, 4952, 4959, 4963, 4970, 4974, 4981, 4985, 4991, 4995, 5001, 5005, 5010, 5014, 5021, 5025, 5029, 5033, 5037, 5042, 5046, 5051, 5055, 5060, 5064, 5069, 5075, 5080, 5086, 5091, 5097, 5102, 5106, 5111, 5115, 5121, 5125, 5130, 5138, 5144, 5150, 5156, 5162, 5169, 5174, 5178, 5183, 5187, 5192, 5198, 5205, 5210, 5217, 5227, 5231, 5237, 5239, 5246, 5250, 5255, 5273, 5288, 5306, 5315, 5324, 5328, 5334, 5341, 5346, 5353, 5358, 5361, 5364, 5368, 5439, 5535, 5539, 5544, 5555, 5566, 5577, 5588, 5599, 5611, 5622, 5633, 5643, 5650, 5657, 5663, 5671, 5676, 5681, 5686, 5692, 5699, 5705, 5711, 5716, 5722, 5729, 5734, 5740, 5747, 5750, 5763, 5772, 5784, 5786, 5804, 5811, 5821, 5826, 5830, 5834, 5838, 5840, 5900, 5907, 5913, 5924, 5927, 5934, 5937, 5947, 5950, 5952, 5971, 5983, 5992, 6001, 6013, 6015, 6021, 6025, 6028, 6031, 6036, 6042, 6045, 6048, 6051, 6054, 6070, 6074, 6077, 6080, 6083, 6086, 6091, 6094, 6096, 6109, 6121, 6135, 6139, 6145, 6155, 6157, 6162, 6170, 6180, 6189, 6197, 6206, 6208, 6215, 6224, 6226, 6233, 6242, 6244, 6248, 6257, 6262, 6268, 6273, 6277, 6282, 6300, 6305, 6320, 6329, 6340, 6346, 6383, 6403, 6410, 6421, 6435, 6442, 6450, 6455, 6462, 6466, 6471, 6475, 6480, 6484, 6486, 6491, 6495, 6500, 6504, 6528, 6535, 6545, 6557, 6562, 6575, 6587, 6599, 6601, 6607, 6614, 6659, 6677, 6681, 6686, 6689, 6693, 6698, 6703, 6706, 6713, 6730, 6801, 6832, 6886, 6896, 6906, 6917, 6927, 6938, 6948, 6953, 6962, 6967, 6977, 6982, 6991, 7004, 7009, 7121, 7123, 7132, 7143, 7154, 7167, 7179, 7190, 7197, 7287, 7340, 7350, 7361, 7372, 7386, 7401, 7412, 7419, 7473, 7614, 7620, 7623, 7633, 7673, 7683, 7690, 7713, 7722, 7731, 7740, 7773, 7777, 7787, 7791, 7801, 7804, 7808, 7812, 7820, 7831, 7843, 7847, 7850, 7854, 7857, 7862, 7866, 7869, 7875, 7886, 7889, 7896, 7900, 7905, 7908, 7910, 7924, 7928, 7933, 7940, 7947, 7950, 7955, 7958, 7967, 7969, 7974, 7978, 7990, 7993, 8000, 8004, 8009, 8019, 8029, 8032, 8035, 8037, 8043, 8050, 8070, 8090, 8094, 8099, 8168, 8173, 8179, 8192, 8196, 8200, 8206, 8208, 8216, 8226, 8229, 8232, 8235, 8238, 8245, 8248, 8250, 8254, 8257, 8264, 8266, 8273, 8280, 8284, 8288, 8297, 8303, 8307, 8311, 8316, 8328, 8335, 8345, 8358, 8369, 8376, 8381, 8385, 8389, 8394, 8407, 8412, 8416, 8420, 8427, 8430, 8432, 8440, 8444, 8447, 8454, 8457, 8462, 8468, 8474, 8478, 8487, 8496, 8503, 8506, 8512, 8517, 8523, 8529, 8532, 8535, 8542, 8546, 8549, 8564, 8567, 8574, 8577, 8584, 8587, 8590, 8597, 8609, 8616, 8618, 8628, 8646, 8648, 8656, 8660, 8670, 8674, 8678, 8682, 8684, 8689, 8693, 8697, 8699, 8701, 8705, 8709, 8712, 8715, 8718, 8721, 8723, 8726, 8729, 8732, 8735, 8738, 8741, 8750, 8752, 8757, 8761, 8767, 8771, 8775, 8784, 8789, 8793, 8799, 8802, 8821, 8829, 8838, 8842, 8845, 8849, 8854, 8860, 8872, 8887, 8894, 8897, 8901, 8905, 8909, 8911, 8919, 8928, 8934, 8936, 8943, 8947, 8956, 8960, 8969, 8978, 8990, 9018, 9025, 9029, 9032, 9037, 9041, 9044, 9060, 9071, 9076, 9079, 9082, 9086, 9090, 9094, 9099, 9103, 9107, 9109, 9118, 9123, 9129, 9133, 9135, 9142, 9147, 9153, 9155, 9159, 9166, 9173, 9176, 9182, 9186, 9195, 9198, 9202, 9210, 9216, 9218, 9221, 9225, 9228, 9231, 9235, 9239, 9245, 9248, 9257, 9264, 9266, 9273, 9281, 9286, 9289, 9297, 9306, 9314, 9316, 9320, 9327, 9346, 9355, 9361, 9380, 9389, 9395, 9399, 9404, 9414, 9421, 9430, 9433, 9442, 9444, 9450, 9454, 9459, 9469, 9475, 9477, 9483, 9487, 9490, 9503, 9509, 9513, 9517, 9520, 9528, 9532, 9536, 9544, 9551, 9558, 9562, 9568, 9570, 9579, 9582, 9592, 9608, 9614, 9619, 9626, 9635, 9642, 9650, 9658, 9663, 9667, 9670, 9676, 9681, 9697, 9700, 9702, 9714, 9716, 9720, 9728, 9730, 9734, 9736, 9744, 9748, 9757, 9765, 9771, 9774, 9783, 9788, 9795, 9805, 9831, 9842, 9844, 9846, 9854, 9876, 9885, 9895, 9898, 9903, 9908, 9912, 9915, 9919, 9922, 9925, 9928, 9932, 9946, 9953, 9960, 9967, 9985, 9993, 10005, 10011, 10024, 10063, 10065, 10085, 10095, 10106, 10118, 10125, 10137, 10149, 10155, 10163, 10180, 10205, 10215, 10219, 10222, 10225, 10228, 10241, 10246, 10251, 10253, 10261, 10270, 10279, 10284, 10293, 10298, 10312, 10322, 10330, 10344, 10351, 10359, 10367, 10375, 10379, 10386, 10394, 10401, 10407, 10416, 10431, 10442, 10475, 10484, 10491, 10495, 10499, 10506, 10520, 10525, 10530, 10534, 10536, 10539, 10546, 10551, 10561, 10569, 10572, 10579, 10587, 10595, 10603, 10611, 10616, 10620, 10624, 10628, 10632, 10636, 10640, 10647, 10655, 10660, 10664, 10668, 10678, 10684, 10690, 10694, 10708, 10714, 10720, 10732, 10737, 10745, 10752, 10757, 10769, 10777, 10782, 10792, 10803, 10810, 10817, 10828, 10831, 10833, 10837, 10840, 10846, 10852, 10856, 10862, 10870, 10874, 10882, 10939, 10952, 10975, 10983, 10987, 10999, 11001, 11008, 11017, 11035, 11043, 11052, 11059, 11069, 11075, 11082, 11087, 11093, 11097, 11104, 11134, 11147, 11156, 11160, 11176, 11183, 11196, 11204, 11224, 11230, 11242, 11247, 11257, 11289, 11294, 11303, 11308, 11312, 11317, 11333, 11338, 11353, 11356, 11362, 11366, 11375, 11383, 11392, 11398, 11407, 11409, 11414, 11425, 11436, 11457, 11464, 11471, 11477, 11480, 11491, 11498, 11500, 11509, 11516, 11522, 11528, 11532, 11536, 11549, 11564, 11566, 11570, 11576, 11581, 11585, 11588, 11591, 11600, 11603, 11607, 11611, 11613, 11616, 11619, 11627, 11634, 11641, 11647, 11649, 11656, 11661, 11679, 11681, 11687, 11695, 11702, 11713, 11719, 11725, 11738, 11741, 11745, 11750, 11755, 11767, 11773, 11777, 11781, 11785, 11792, 11797, 11800, 11803, 11806, 11809, 11812, 11815, 11827] \ No newline at end of file +[4, 1, 590, 8504, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 1, 0, 5, 0, 936, 8, 0, 10, 0, 12, 0, 939, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 945, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1065, 8, 2, 3, 2, 1067, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 1076, 8, 4, 1, 4, 5, 4, 1079, 8, 4, 10, 4, 12, 4, 1082, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 1087, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1122, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1132, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1138, 8, 7, 1, 7, 5, 7, 1141, 8, 7, 10, 7, 12, 7, 1144, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1150, 8, 8, 1, 8, 5, 8, 1153, 8, 8, 10, 8, 12, 8, 1156, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1162, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1173, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 5, 11, 1179, 8, 11, 10, 11, 12, 11, 1182, 9, 11, 1, 11, 3, 11, 1185, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1197, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1203, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1209, 8, 12, 1, 12, 1, 12, 3, 12, 1213, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1218, 8, 12, 1, 12, 1, 12, 3, 12, 1222, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1235, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1245, 8, 12, 3, 12, 1247, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1253, 8, 13, 1, 13, 5, 13, 1256, 8, 13, 10, 13, 12, 13, 1259, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1271, 8, 15, 1, 15, 3, 15, 1274, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1279, 8, 15, 1, 15, 5, 15, 1282, 8, 15, 10, 15, 12, 15, 1285, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1295, 8, 17, 1, 18, 1, 18, 3, 18, 1299, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1311, 8, 19, 1, 20, 1, 20, 3, 20, 1315, 8, 20, 1, 20, 3, 20, 1318, 8, 20, 1, 20, 1, 20, 3, 20, 1322, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1334, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1352, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 1357, 8, 22, 10, 22, 12, 22, 1360, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 1365, 8, 23, 10, 23, 12, 23, 1368, 9, 23, 1, 24, 1, 24, 3, 24, 1372, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1379, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1387, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1393, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1401, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1409, 8, 28, 1, 29, 1, 29, 3, 29, 1413, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1427, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 1432, 8, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1437, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1449, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1455, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1467, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1472, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1482, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1488, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1493, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1501, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1506, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1513, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1518, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1523, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1533, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1538, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1543, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1550, 8, 38, 1, 38, 1, 38, 3, 38, 1554, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1568, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1574, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1580, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1585, 8, 38, 1, 39, 1, 39, 1, 39, 5, 39, 1590, 8, 39, 10, 39, 12, 39, 1593, 9, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1604, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1610, 8, 41, 10, 41, 12, 41, 1613, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1620, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1636, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1645, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 1652, 8, 46, 10, 46, 12, 46, 1655, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1663, 8, 46, 1, 46, 1, 46, 3, 46, 1667, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1679, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1687, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1697, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1717, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1722, 8, 46, 1, 46, 3, 46, 1725, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1732, 8, 46, 1, 46, 3, 46, 1735, 8, 46, 1, 46, 1, 46, 3, 46, 1739, 8, 46, 1, 46, 1, 46, 3, 46, 1743, 8, 46, 1, 46, 3, 46, 1746, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1751, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1756, 8, 46, 1, 46, 1, 46, 3, 46, 1760, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1769, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1775, 8, 46, 1, 46, 1, 46, 3, 46, 1779, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1788, 8, 46, 1, 46, 3, 46, 1791, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1797, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1806, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 1816, 8, 46, 11, 46, 12, 46, 1817, 1, 46, 1, 46, 3, 46, 1822, 8, 46, 1, 46, 1, 46, 3, 46, 1826, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1831, 8, 46, 1, 46, 3, 46, 1834, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1840, 8, 46, 4, 46, 1842, 8, 46, 11, 46, 12, 46, 1843, 1, 46, 1, 46, 3, 46, 1848, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1854, 8, 46, 1, 46, 1, 46, 3, 46, 1858, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1863, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1868, 8, 46, 1, 46, 1, 46, 3, 46, 1872, 8, 46, 1, 46, 3, 46, 1875, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1882, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1893, 8, 50, 10, 50, 12, 50, 1896, 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1908, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1920, 8, 53, 10, 53, 12, 53, 1923, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1939, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1947, 8, 54, 10, 54, 12, 54, 1950, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1956, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1961, 8, 55, 1, 55, 1, 55, 3, 55, 1965, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1972, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1977, 8, 55, 1, 55, 3, 55, 1980, 8, 55, 3, 55, 1982, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 1987, 8, 56, 1, 57, 1, 57, 3, 57, 1991, 8, 57, 1, 57, 1, 57, 3, 57, 1995, 8, 57, 1, 57, 1, 57, 3, 57, 1999, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2004, 8, 57, 1, 57, 3, 57, 2007, 8, 57, 1, 57, 1, 57, 3, 57, 2011, 8, 57, 1, 57, 3, 57, 2014, 8, 57, 1, 57, 1, 57, 3, 57, 2018, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2026, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2031, 8, 57, 1, 57, 3, 57, 2034, 8, 57, 1, 57, 1, 57, 3, 57, 2038, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2044, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2053, 8, 58, 1, 58, 1, 58, 3, 58, 2057, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2063, 8, 58, 10, 58, 12, 58, 2066, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2072, 8, 58, 10, 58, 12, 58, 2075, 9, 58, 1, 58, 1, 58, 3, 58, 2079, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2089, 8, 59, 10, 59, 12, 59, 2092, 9, 59, 1, 59, 1, 59, 3, 59, 2096, 8, 59, 1, 60, 1, 60, 3, 60, 2100, 8, 60, 1, 60, 1, 60, 3, 60, 2104, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2109, 8, 60, 1, 60, 1, 60, 3, 60, 2113, 8, 60, 1, 60, 3, 60, 2116, 8, 60, 1, 60, 3, 60, 2119, 8, 60, 1, 60, 3, 60, 2122, 8, 60, 1, 60, 3, 60, 2125, 8, 60, 1, 60, 3, 60, 2128, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2133, 8, 60, 1, 60, 3, 60, 2136, 8, 60, 1, 60, 3, 60, 2139, 8, 60, 1, 60, 3, 60, 2142, 8, 60, 1, 60, 3, 60, 2145, 8, 60, 1, 60, 3, 60, 2148, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2154, 8, 60, 1, 60, 1, 60, 3, 60, 2158, 8, 60, 1, 60, 3, 60, 2161, 8, 60, 1, 60, 3, 60, 2164, 8, 60, 1, 60, 3, 60, 2167, 8, 60, 1, 60, 3, 60, 2170, 8, 60, 3, 60, 2172, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2179, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2185, 8, 62, 10, 62, 12, 62, 2188, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 5, 63, 2195, 8, 63, 10, 63, 12, 63, 2198, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2205, 8, 64, 10, 64, 12, 64, 2208, 9, 64, 1, 64, 1, 64, 3, 64, 2212, 8, 64, 1, 64, 3, 64, 2215, 8, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2220, 8, 65, 1, 65, 5, 65, 2223, 8, 65, 10, 65, 12, 65, 2226, 9, 65, 1, 65, 1, 65, 3, 65, 2230, 8, 65, 1, 65, 3, 65, 2233, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 2238, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2247, 8, 66, 3, 66, 2249, 8, 66, 1, 66, 1, 66, 3, 66, 2253, 8, 66, 1, 66, 3, 66, 2256, 8, 66, 1, 66, 1, 66, 3, 66, 2260, 8, 66, 1, 66, 5, 66, 2263, 8, 66, 10, 66, 12, 66, 2266, 9, 66, 1, 67, 1, 67, 3, 67, 2270, 8, 67, 1, 67, 1, 67, 3, 67, 2274, 8, 67, 1, 67, 3, 67, 2277, 8, 67, 1, 67, 1, 67, 3, 67, 2281, 8, 67, 1, 68, 3, 68, 2284, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2289, 8, 68, 1, 68, 3, 68, 2292, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2297, 8, 68, 1, 68, 3, 68, 2300, 8, 68, 1, 68, 1, 68, 3, 68, 2304, 8, 68, 1, 68, 3, 68, 2307, 8, 68, 1, 68, 3, 68, 2310, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2315, 8, 68, 1, 68, 3, 68, 2318, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2326, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 2336, 8, 68, 11, 68, 12, 68, 2337, 1, 68, 1, 68, 3, 68, 2342, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2349, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2354, 8, 68, 1, 68, 3, 68, 2357, 8, 68, 1, 68, 3, 68, 2360, 8, 68, 1, 68, 3, 68, 2363, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2368, 8, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2377, 8, 71, 10, 71, 12, 71, 2380, 9, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2385, 8, 71, 1, 71, 1, 71, 3, 71, 2389, 8, 71, 1, 71, 3, 71, 2392, 8, 71, 1, 71, 3, 71, 2395, 8, 71, 1, 71, 5, 71, 2398, 8, 71, 10, 71, 12, 71, 2401, 9, 71, 1, 71, 1, 71, 5, 71, 2405, 8, 71, 10, 71, 12, 71, 2408, 9, 71, 3, 71, 2410, 8, 71, 1, 71, 1, 71, 3, 71, 2414, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2420, 8, 71, 10, 71, 12, 71, 2423, 9, 71, 1, 71, 1, 71, 3, 71, 2427, 8, 71, 1, 71, 3, 71, 2430, 8, 71, 1, 71, 3, 71, 2433, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2440, 8, 71, 1, 71, 5, 71, 2443, 8, 71, 10, 71, 12, 71, 2446, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2454, 8, 71, 1, 71, 3, 71, 2457, 8, 71, 1, 71, 3, 71, 2460, 8, 71, 1, 71, 5, 71, 2463, 8, 71, 10, 71, 12, 71, 2466, 9, 71, 3, 71, 2468, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2478, 8, 73, 10, 73, 12, 73, 2481, 9, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 2488, 8, 74, 10, 74, 12, 74, 2491, 9, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2507, 8, 77, 1, 78, 1, 78, 3, 78, 2511, 8, 78, 1, 78, 1, 78, 3, 78, 2515, 8, 78, 3, 78, 2517, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2534, 8, 81, 3, 81, 2536, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 2550, 8, 83, 10, 83, 12, 83, 2553, 9, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2563, 8, 84, 1, 84, 3, 84, 2566, 8, 84, 1, 84, 3, 84, 2569, 8, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2578, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2587, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 3, 91, 2603, 8, 91, 1, 91, 3, 91, 2606, 8, 91, 1, 91, 3, 91, 2609, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 2615, 8, 91, 10, 91, 12, 91, 2618, 9, 91, 1, 91, 3, 91, 2621, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 2628, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 2637, 8, 93, 1, 93, 1, 93, 3, 93, 2641, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2647, 8, 93, 1, 94, 1, 94, 3, 94, 2651, 8, 94, 1, 94, 3, 94, 2654, 8, 94, 1, 94, 3, 94, 2657, 8, 94, 1, 94, 3, 94, 2660, 8, 94, 1, 94, 3, 94, 2663, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2669, 8, 95, 1, 96, 1, 96, 3, 96, 2673, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2678, 8, 96, 1, 96, 1, 96, 3, 96, 2682, 8, 96, 1, 96, 3, 96, 2685, 8, 96, 1, 96, 3, 96, 2688, 8, 96, 1, 96, 3, 96, 2691, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2696, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2702, 8, 97, 1, 97, 1, 97, 3, 97, 2706, 8, 97, 1, 98, 1, 98, 3, 98, 2710, 8, 98, 1, 98, 1, 98, 3, 98, 2714, 8, 98, 1, 98, 1, 98, 4, 98, 2718, 8, 98, 11, 98, 12, 98, 2719, 3, 98, 2722, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 2727, 8, 99, 1, 99, 1, 99, 4, 99, 2731, 8, 99, 11, 99, 12, 99, 2732, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2739, 8, 100, 1, 100, 1, 100, 3, 100, 2743, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2758, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2763, 8, 100, 1, 100, 3, 100, 2766, 8, 100, 3, 100, 2768, 8, 100, 1, 101, 3, 101, 2771, 8, 101, 1, 101, 1, 101, 3, 101, 2775, 8, 101, 1, 102, 1, 102, 3, 102, 2779, 8, 102, 1, 102, 3, 102, 2782, 8, 102, 1, 102, 3, 102, 2785, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2793, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2799, 8, 102, 3, 102, 2801, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2807, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2812, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2817, 8, 104, 1, 104, 1, 104, 3, 104, 2821, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 2828, 8, 104, 10, 104, 12, 104, 2831, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 2839, 8, 105, 10, 105, 12, 105, 2842, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2880, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 4, 107, 2888, 8, 107, 11, 107, 12, 107, 2889, 3, 107, 2892, 8, 107, 1, 107, 3, 107, 2895, 8, 107, 1, 108, 1, 108, 3, 108, 2899, 8, 108, 1, 108, 1, 108, 3, 108, 2903, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 4, 109, 2911, 8, 109, 11, 109, 12, 109, 2912, 3, 109, 2915, 8, 109, 1, 109, 1, 109, 4, 109, 2919, 8, 109, 11, 109, 12, 109, 2920, 3, 109, 2923, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 5, 110, 2930, 8, 110, 10, 110, 12, 110, 2933, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2942, 8, 111, 10, 111, 12, 111, 2945, 9, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 2958, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2963, 8, 114, 1, 114, 3, 114, 2966, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2973, 8, 114, 1, 115, 1, 115, 1, 115, 3, 115, 2978, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2986, 8, 116, 3, 116, 2988, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2994, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2999, 8, 117, 1, 117, 1, 117, 3, 117, 3003, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3008, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3014, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3021, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3027, 8, 117, 3, 117, 3029, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3038, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3044, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3052, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3058, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3063, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3068, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3076, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3091, 8, 121, 3, 121, 3093, 8, 121, 1, 121, 1, 121, 3, 121, 3097, 8, 121, 1, 121, 1, 121, 3, 121, 3101, 8, 121, 1, 121, 3, 121, 3104, 8, 121, 1, 121, 3, 121, 3107, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3116, 8, 122, 1, 122, 3, 122, 3119, 8, 122, 1, 122, 3, 122, 3122, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3128, 8, 123, 1, 123, 1, 123, 5, 123, 3132, 8, 123, 10, 123, 12, 123, 3135, 9, 123, 1, 123, 3, 123, 3138, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3150, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3156, 8, 123, 1, 124, 3, 124, 3159, 8, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3164, 8, 124, 1, 124, 1, 124, 3, 124, 3168, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3175, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3185, 8, 124, 3, 124, 3187, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 3211, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3223, 8, 128, 1, 128, 4, 128, 3226, 8, 128, 11, 128, 12, 128, 3227, 3, 128, 3230, 8, 128, 1, 128, 1, 128, 3, 128, 3234, 8, 128, 1, 128, 3, 128, 3237, 8, 128, 1, 128, 3, 128, 3240, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3250, 8, 128, 1, 128, 3, 128, 3253, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3263, 8, 128, 1, 128, 5, 128, 3266, 8, 128, 10, 128, 12, 128, 3269, 9, 128, 1, 128, 1, 128, 3, 128, 3273, 8, 128, 1, 128, 3, 128, 3276, 8, 128, 1, 128, 3, 128, 3279, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3287, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3293, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 3298, 8, 130, 10, 130, 12, 130, 3301, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3308, 8, 131, 1, 131, 3, 131, 3311, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3322, 8, 133, 1, 134, 1, 134, 3, 134, 3326, 8, 134, 1, 134, 1, 134, 5, 134, 3330, 8, 134, 10, 134, 12, 134, 3333, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3339, 8, 135, 1, 136, 3, 136, 3342, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3351, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 5, 137, 3363, 8, 137, 10, 137, 12, 137, 3366, 9, 137, 3, 137, 3368, 8, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 5, 138, 3380, 8, 138, 10, 138, 12, 138, 3383, 9, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3393, 8, 139, 1, 139, 3, 139, 3396, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 3406, 8, 140, 10, 140, 12, 140, 3409, 9, 140, 1, 141, 1, 141, 3, 141, 3413, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3424, 8, 141, 10, 141, 12, 141, 3427, 9, 141, 1, 141, 1, 141, 3, 141, 3431, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3444, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3451, 8, 141, 10, 141, 12, 141, 3454, 9, 141, 3, 141, 3456, 8, 141, 1, 141, 3, 141, 3459, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3466, 8, 141, 1, 141, 3, 141, 3469, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3481, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3487, 8, 141, 3, 141, 3489, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 3495, 8, 142, 10, 142, 12, 142, 3498, 9, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3505, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3513, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3525, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3530, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3541, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3552, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3560, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 3566, 8, 148, 10, 148, 12, 148, 3569, 9, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3575, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3582, 8, 149, 3, 149, 3584, 8, 149, 1, 149, 3, 149, 3587, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3592, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3597, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3614, 8, 151, 10, 151, 12, 151, 3617, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3623, 8, 151, 10, 151, 12, 151, 3626, 9, 151, 3, 151, 3628, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3655, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3664, 8, 154, 1, 154, 3, 154, 3667, 8, 154, 1, 154, 1, 154, 3, 154, 3671, 8, 154, 1, 154, 1, 154, 3, 154, 3675, 8, 154, 1, 154, 1, 154, 3, 154, 3679, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3684, 8, 154, 10, 154, 12, 154, 3687, 9, 154, 1, 154, 3, 154, 3690, 8, 154, 1, 154, 1, 154, 3, 154, 3694, 8, 154, 1, 154, 1, 154, 3, 154, 3698, 8, 154, 1, 154, 1, 154, 3, 154, 3702, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3707, 8, 154, 1, 154, 1, 154, 3, 154, 3711, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3716, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3722, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3727, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3732, 8, 154, 10, 154, 12, 154, 3735, 9, 154, 1, 154, 3, 154, 3738, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3744, 8, 154, 1, 154, 1, 154, 3, 154, 3748, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3753, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3761, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3767, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3772, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3779, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3784, 8, 154, 1, 154, 1, 154, 3, 154, 3788, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3793, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3799, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3806, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3811, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3818, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3823, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3830, 8, 154, 1, 154, 1, 154, 3, 154, 3834, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3840, 8, 154, 10, 154, 12, 154, 3843, 9, 154, 1, 154, 3, 154, 3846, 8, 154, 3, 154, 3848, 8, 154, 1, 155, 3, 155, 3851, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3856, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3866, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3881, 8, 156, 1, 156, 3, 156, 3884, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3892, 8, 156, 1, 157, 1, 157, 1, 157, 5, 157, 3897, 8, 157, 10, 157, 12, 157, 3900, 9, 157, 1, 158, 1, 158, 3, 158, 3904, 8, 158, 1, 159, 1, 159, 4, 159, 3908, 8, 159, 11, 159, 12, 159, 3909, 1, 160, 1, 160, 3, 160, 3914, 8, 160, 1, 160, 1, 160, 1, 160, 5, 160, 3919, 8, 160, 10, 160, 12, 160, 3922, 9, 160, 1, 160, 1, 160, 3, 160, 3926, 8, 160, 1, 160, 3, 160, 3929, 8, 160, 1, 161, 3, 161, 3932, 8, 161, 1, 161, 1, 161, 3, 161, 3936, 8, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3945, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3963, 8, 162, 1, 162, 3, 162, 3966, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3998, 8, 162, 1, 162, 1, 162, 1, 162, 3, 162, 4003, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4009, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4029, 8, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4034, 8, 163, 1, 164, 1, 164, 1, 164, 1, 165, 3, 165, 4040, 8, 165, 1, 165, 3, 165, 4043, 8, 165, 1, 165, 1, 165, 3, 165, 4047, 8, 165, 1, 165, 1, 165, 3, 165, 4051, 8, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4057, 8, 165, 1, 165, 3, 165, 4060, 8, 165, 1, 165, 1, 165, 3, 165, 4064, 8, 165, 1, 165, 1, 165, 3, 165, 4068, 8, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4073, 8, 165, 1, 165, 3, 165, 4076, 8, 165, 1, 165, 3, 165, 4079, 8, 165, 1, 165, 3, 165, 4082, 8, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 4095, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4101, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4109, 8, 168, 1, 169, 1, 169, 1, 169, 5, 169, 4114, 8, 169, 10, 169, 12, 169, 4117, 9, 169, 1, 169, 1, 169, 3, 169, 4121, 8, 169, 1, 169, 3, 169, 4124, 8, 169, 1, 169, 1, 169, 1, 169, 5, 169, 4129, 8, 169, 10, 169, 12, 169, 4132, 9, 169, 3, 169, 4134, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 4142, 8, 171, 1, 171, 3, 171, 4145, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 4150, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4157, 8, 172, 1, 172, 3, 172, 4160, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 4178, 8, 172, 10, 172, 12, 172, 4181, 9, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4192, 8, 172, 1, 173, 3, 173, 4195, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4201, 8, 173, 1, 173, 5, 173, 4204, 8, 173, 10, 173, 12, 173, 4207, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4213, 8, 174, 10, 174, 12, 174, 4216, 9, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4223, 8, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4228, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4234, 8, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4239, 8, 175, 10, 175, 12, 175, 4242, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4249, 8, 175, 1, 175, 3, 175, 4252, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4263, 8, 176, 10, 176, 12, 176, 4266, 9, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4279, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4285, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4293, 8, 177, 3, 177, 4295, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 4301, 8, 179, 1, 179, 1, 179, 3, 179, 4305, 8, 179, 1, 179, 3, 179, 4308, 8, 179, 1, 179, 3, 179, 4311, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4316, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4321, 8, 179, 1, 179, 1, 179, 3, 179, 4325, 8, 179, 1, 179, 3, 179, 4328, 8, 179, 1, 179, 3, 179, 4331, 8, 179, 1, 179, 3, 179, 4334, 8, 179, 1, 179, 3, 179, 4337, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 4343, 8, 180, 10, 180, 12, 180, 4346, 9, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4356, 8, 181, 1, 181, 3, 181, 4359, 8, 181, 1, 181, 3, 181, 4362, 8, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4367, 8, 181, 1, 181, 3, 181, 4370, 8, 181, 1, 181, 1, 181, 3, 181, 4374, 8, 181, 1, 182, 1, 182, 3, 182, 4378, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4384, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4390, 8, 182, 10, 182, 12, 182, 4393, 9, 182, 3, 182, 4395, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4406, 8, 182, 10, 182, 12, 182, 4409, 9, 182, 1, 182, 1, 182, 3, 182, 4413, 8, 182, 3, 182, 4415, 8, 182, 1, 182, 4, 182, 4418, 8, 182, 11, 182, 12, 182, 4419, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4427, 8, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 3, 184, 4434, 8, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 5, 185, 4441, 8, 185, 10, 185, 12, 185, 4444, 9, 185, 1, 186, 1, 186, 1, 186, 5, 186, 4449, 8, 186, 10, 186, 12, 186, 4452, 9, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 4459, 8, 187, 1, 188, 1, 188, 1, 188, 5, 188, 4464, 8, 188, 10, 188, 12, 188, 4467, 9, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4474, 8, 189, 1, 190, 1, 190, 1, 190, 5, 190, 4479, 8, 190, 10, 190, 12, 190, 4482, 9, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4489, 8, 191, 1, 192, 1, 192, 3, 192, 4493, 8, 192, 1, 192, 1, 192, 3, 192, 4497, 8, 192, 3, 192, 4499, 8, 192, 1, 192, 1, 192, 1, 193, 1, 193, 3, 193, 4505, 8, 193, 1, 193, 1, 193, 1, 193, 3, 193, 4510, 8, 193, 1, 194, 1, 194, 3, 194, 4514, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4521, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 4526, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 4531, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4536, 8, 196, 3, 196, 4538, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 4548, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4558, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4574, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 4590, 8, 199, 10, 199, 12, 199, 4593, 9, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4604, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4611, 8, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4626, 8, 202, 1, 202, 4, 202, 4629, 8, 202, 11, 202, 12, 202, 4630, 1, 202, 3, 202, 4634, 8, 202, 1, 203, 1, 203, 1, 203, 3, 203, 4639, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4644, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4649, 8, 203, 1, 203, 3, 203, 4652, 8, 203, 1, 203, 3, 203, 4655, 8, 203, 1, 204, 1, 204, 1, 204, 3, 204, 4660, 8, 204, 1, 204, 1, 204, 1, 204, 5, 204, 4665, 8, 204, 10, 204, 12, 204, 4668, 9, 204, 1, 204, 3, 204, 4671, 8, 204, 1, 205, 1, 205, 1, 205, 3, 205, 4676, 8, 205, 1, 205, 1, 205, 1, 205, 5, 205, 4681, 8, 205, 10, 205, 12, 205, 4684, 9, 205, 1, 205, 3, 205, 4687, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4693, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4702, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 5, 207, 4709, 8, 207, 10, 207, 12, 207, 4712, 9, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 4, 209, 4723, 8, 209, 11, 209, 12, 209, 4724, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4738, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4744, 8, 210, 1, 210, 1, 210, 3, 210, 4748, 8, 210, 3, 210, 4750, 8, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 3, 212, 4757, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4770, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4777, 8, 212, 3, 212, 4779, 8, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 4793, 8, 214, 10, 214, 12, 214, 4796, 9, 214, 1, 214, 3, 214, 4799, 8, 214, 1, 214, 1, 214, 3, 214, 4803, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4808, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4813, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4818, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4823, 8, 214, 1, 214, 3, 214, 4826, 8, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4838, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4891, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4900, 8, 216, 1, 216, 1, 216, 3, 216, 4904, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4913, 8, 216, 1, 216, 1, 216, 3, 216, 4917, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4926, 8, 216, 1, 216, 1, 216, 3, 216, 4930, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4935, 8, 216, 1, 216, 3, 216, 4938, 8, 216, 1, 216, 1, 216, 3, 216, 4942, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4947, 8, 216, 3, 216, 4949, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4958, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4963, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4974, 8, 216, 1, 216, 1, 216, 3, 216, 4978, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4992, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5000, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5038, 8, 216, 3, 216, 5040, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 5059, 8, 217, 1, 217, 3, 217, 5062, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5089, 8, 218, 1, 218, 1, 218, 3, 218, 5093, 8, 218, 1, 218, 1, 218, 3, 218, 5097, 8, 218, 1, 218, 1, 218, 3, 218, 5101, 8, 218, 1, 218, 1, 218, 3, 218, 5105, 8, 218, 1, 218, 3, 218, 5108, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5123, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5130, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 5142, 8, 220, 10, 220, 12, 220, 5145, 9, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5157, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5182, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5201, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5216, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5232, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5239, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 5250, 8, 224, 1, 224, 3, 224, 5253, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5270, 8, 225, 10, 225, 12, 225, 5273, 9, 225, 3, 225, 5275, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 5286, 8, 226, 10, 226, 12, 226, 5289, 9, 226, 1, 226, 3, 226, 5292, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5312, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5322, 8, 227, 10, 227, 12, 227, 5325, 9, 227, 1, 227, 3, 227, 5328, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5350, 8, 227, 1, 228, 1, 228, 3, 228, 5354, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5364, 8, 228, 1, 228, 1, 228, 3, 228, 5368, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5374, 8, 228, 1, 228, 1, 228, 3, 228, 5378, 8, 228, 5, 228, 5380, 8, 228, 10, 228, 12, 228, 5383, 9, 228, 1, 228, 3, 228, 5386, 8, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 5393, 8, 229, 1, 230, 1, 230, 1, 230, 3, 230, 5398, 8, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 3, 233, 5409, 8, 233, 1, 234, 1, 234, 3, 234, 5413, 8, 234, 1, 234, 3, 234, 5416, 8, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5421, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5427, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5438, 8, 234, 1, 234, 1, 234, 3, 234, 5442, 8, 234, 1, 234, 3, 234, 5445, 8, 234, 1, 234, 1, 234, 3, 234, 5449, 8, 234, 1, 234, 1, 234, 3, 234, 5453, 8, 234, 1, 234, 3, 234, 5456, 8, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5466, 8, 236, 1, 236, 3, 236, 5469, 8, 236, 1, 237, 1, 237, 3, 237, 5473, 8, 237, 1, 237, 5, 237, 5476, 8, 237, 10, 237, 12, 237, 5479, 9, 237, 1, 238, 1, 238, 1, 238, 3, 238, 5484, 8, 238, 1, 238, 3, 238, 5487, 8, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5492, 8, 238, 1, 238, 3, 238, 5495, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5502, 8, 238, 3, 238, 5504, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5510, 8, 238, 1, 238, 1, 238, 3, 238, 5514, 8, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5523, 8, 240, 1, 240, 4, 240, 5526, 8, 240, 11, 240, 12, 240, 5527, 3, 240, 5530, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5540, 8, 241, 1, 241, 3, 241, 5543, 8, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5548, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5556, 8, 242, 1, 242, 3, 242, 5559, 8, 242, 1, 242, 4, 242, 5562, 8, 242, 11, 242, 12, 242, 5563, 3, 242, 5566, 8, 242, 3, 242, 5568, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 5574, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5591, 8, 246, 1, 246, 1, 246, 5, 246, 5595, 8, 246, 10, 246, 12, 246, 5598, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5610, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5616, 8, 247, 1, 247, 1, 247, 3, 247, 5620, 8, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5625, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5655, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5670, 8, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5675, 8, 249, 1, 250, 1, 250, 3, 250, 5679, 8, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 3, 251, 5692, 8, 251, 1, 251, 1, 251, 3, 251, 5696, 8, 251, 3, 251, 5698, 8, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 5705, 8, 251, 10, 251, 12, 251, 5708, 9, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5713, 8, 251, 3, 251, 5715, 8, 251, 1, 252, 1, 252, 3, 252, 5719, 8, 252, 1, 252, 3, 252, 5722, 8, 252, 1, 252, 3, 252, 5725, 8, 252, 1, 252, 3, 252, 5728, 8, 252, 1, 252, 3, 252, 5731, 8, 252, 3, 252, 5733, 8, 252, 1, 252, 3, 252, 5736, 8, 252, 1, 253, 1, 253, 3, 253, 5740, 8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 5, 253, 5746, 8, 253, 10, 253, 12, 253, 5749, 9, 253, 1, 253, 1, 253, 3, 253, 5753, 8, 253, 1, 253, 3, 253, 5756, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 3, 255, 5762, 8, 255, 1, 255, 1, 255, 3, 255, 5766, 8, 255, 1, 256, 1, 256, 3, 256, 5770, 8, 256, 1, 256, 1, 256, 1, 256, 3, 256, 5775, 8, 256, 3, 256, 5777, 8, 256, 1, 257, 1, 257, 3, 257, 5781, 8, 257, 1, 258, 1, 258, 3, 258, 5785, 8, 258, 1, 259, 1, 259, 1, 259, 5, 259, 5790, 8, 259, 10, 259, 12, 259, 5793, 9, 259, 1, 260, 1, 260, 1, 260, 3, 260, 5798, 8, 260, 1, 260, 1, 260, 3, 260, 5802, 8, 260, 3, 260, 5804, 8, 260, 3, 260, 5806, 8, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5819, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 5825, 8, 262, 10, 262, 12, 262, 5828, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 3, 263, 5835, 8, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 5, 264, 5844, 8, 264, 10, 264, 12, 264, 5847, 9, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 5855, 8, 265, 1, 266, 1, 266, 1, 266, 3, 266, 5860, 8, 266, 1, 266, 1, 266, 3, 266, 5864, 8, 266, 1, 266, 1, 266, 3, 266, 5868, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 5875, 8, 266, 1, 266, 3, 266, 5878, 8, 266, 3, 266, 5880, 8, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 5888, 8, 268, 1, 268, 1, 268, 3, 268, 5892, 8, 268, 1, 269, 3, 269, 5895, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5902, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5909, 8, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5914, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5921, 8, 269, 1, 269, 3, 269, 5924, 8, 269, 3, 269, 5926, 8, 269, 1, 269, 3, 269, 5929, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5935, 8, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5940, 8, 270, 1, 270, 1, 270, 3, 270, 5944, 8, 270, 1, 271, 1, 271, 1, 271, 5, 271, 5949, 8, 271, 10, 271, 12, 271, 5952, 9, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 3, 274, 5961, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5968, 8, 274, 1, 274, 3, 274, 5971, 8, 274, 1, 274, 3, 274, 5974, 8, 274, 1, 275, 1, 275, 3, 275, 5978, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 5989, 8, 275, 1, 275, 3, 275, 5992, 8, 275, 1, 275, 3, 275, 5995, 8, 275, 1, 275, 3, 275, 5998, 8, 275, 1, 276, 3, 276, 6001, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6008, 8, 276, 1, 276, 3, 276, 6011, 8, 276, 1, 276, 3, 276, 6014, 8, 276, 1, 277, 1, 277, 1, 277, 5, 277, 6019, 8, 277, 10, 277, 12, 277, 6022, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6033, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6040, 8, 278, 3, 278, 6042, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 6047, 8, 279, 1, 279, 1, 279, 1, 279, 5, 279, 6052, 8, 279, 10, 279, 12, 279, 6055, 9, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6060, 8, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 6067, 8, 280, 1, 281, 1, 281, 1, 281, 3, 281, 6072, 8, 281, 1, 281, 1, 281, 1, 282, 3, 282, 6077, 8, 282, 1, 282, 1, 282, 3, 282, 6081, 8, 282, 1, 282, 1, 282, 3, 282, 6085, 8, 282, 1, 282, 1, 282, 3, 282, 6089, 8, 282, 3, 282, 6091, 8, 282, 1, 283, 1, 283, 3, 283, 6095, 8, 283, 1, 284, 1, 284, 3, 284, 6099, 8, 284, 1, 284, 3, 284, 6102, 8, 284, 1, 284, 3, 284, 6105, 8, 284, 3, 284, 6107, 8, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6117, 8, 284, 3, 284, 6119, 8, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6124, 8, 284, 5, 284, 6126, 8, 284, 10, 284, 12, 284, 6129, 9, 284, 1, 285, 1, 285, 3, 285, 6133, 8, 285, 1, 286, 1, 286, 3, 286, 6137, 8, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6142, 8, 286, 10, 286, 12, 286, 6145, 9, 286, 1, 287, 1, 287, 3, 287, 6149, 8, 287, 1, 287, 1, 287, 3, 287, 6153, 8, 287, 1, 287, 3, 287, 6156, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 6162, 8, 287, 1, 287, 3, 287, 6165, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6184, 8, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 3, 290, 6191, 8, 290, 1, 290, 1, 290, 3, 290, 6195, 8, 290, 1, 291, 3, 291, 6198, 8, 291, 1, 291, 1, 291, 3, 291, 6202, 8, 291, 1, 291, 1, 291, 3, 291, 6206, 8, 291, 1, 291, 3, 291, 6209, 8, 291, 1, 291, 3, 291, 6212, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6217, 8, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 5, 293, 6224, 8, 293, 10, 293, 12, 293, 6227, 9, 293, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6233, 8, 294, 1, 294, 1, 294, 3, 294, 6237, 8, 294, 1, 295, 1, 295, 3, 295, 6241, 8, 295, 1, 295, 1, 295, 3, 295, 6245, 8, 295, 1, 295, 3, 295, 6248, 8, 295, 3, 295, 6250, 8, 295, 1, 296, 1, 296, 1, 296, 3, 296, 6255, 8, 296, 1, 296, 1, 296, 3, 296, 6259, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6264, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6270, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6277, 8, 298, 1, 299, 1, 299, 1, 299, 3, 299, 6282, 8, 299, 1, 300, 1, 300, 1, 300, 3, 300, 6287, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 5, 301, 6294, 8, 301, 10, 301, 12, 301, 6297, 9, 301, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6303, 8, 302, 1, 302, 1, 302, 1, 302, 1, 302, 5, 302, 6309, 8, 302, 10, 302, 12, 302, 6312, 9, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6322, 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6327, 8, 303, 1, 303, 1, 303, 3, 303, 6331, 8, 303, 1, 303, 3, 303, 6334, 8, 303, 1, 303, 1, 303, 3, 303, 6338, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6343, 8, 303, 4, 303, 6345, 8, 303, 11, 303, 12, 303, 6346, 1, 303, 1, 303, 1, 303, 3, 303, 6352, 8, 303, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6358, 8, 304, 10, 304, 12, 304, 6361, 9, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 6369, 8, 306, 10, 306, 12, 306, 6372, 9, 306, 1, 307, 1, 307, 3, 307, 6376, 8, 307, 1, 307, 1, 307, 3, 307, 6380, 8, 307, 1, 307, 3, 307, 6383, 8, 307, 1, 307, 3, 307, 6386, 8, 307, 3, 307, 6388, 8, 307, 1, 307, 3, 307, 6391, 8, 307, 1, 307, 3, 307, 6394, 8, 307, 1, 307, 3, 307, 6397, 8, 307, 1, 307, 1, 307, 3, 307, 6401, 8, 307, 1, 307, 1, 307, 3, 307, 6405, 8, 307, 1, 307, 1, 307, 3, 307, 6409, 8, 307, 3, 307, 6411, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6420, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6425, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6431, 8, 307, 1, 307, 1, 307, 3, 307, 6435, 8, 307, 3, 307, 6437, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6444, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6449, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 5, 307, 6455, 8, 307, 10, 307, 12, 307, 6458, 9, 307, 1, 308, 3, 308, 6461, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6468, 8, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6473, 8, 309, 1, 309, 3, 309, 6476, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 6482, 8, 309, 1, 310, 1, 310, 3, 310, 6486, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6492, 8, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6501, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6507, 8, 312, 3, 312, 6509, 8, 312, 1, 313, 1, 313, 1, 313, 3, 313, 6514, 8, 313, 1, 313, 3, 313, 6517, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6526, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6533, 8, 313, 3, 313, 6535, 8, 313, 1, 314, 1, 314, 1, 314, 5, 314, 6540, 8, 314, 10, 314, 12, 314, 6543, 9, 314, 1, 315, 1, 315, 3, 315, 6547, 8, 315, 1, 315, 3, 315, 6550, 8, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 3, 316, 6560, 8, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 5, 317, 6569, 8, 317, 10, 317, 12, 317, 6572, 9, 317, 1, 317, 1, 317, 3, 317, 6576, 8, 317, 1, 317, 1, 317, 3, 317, 6580, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 6588, 8, 318, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 6598, 8, 320, 1, 321, 1, 321, 1, 321, 5, 321, 6603, 8, 321, 10, 321, 12, 321, 6606, 9, 321, 1, 322, 1, 322, 1, 322, 3, 322, 6611, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6620, 8, 323, 10, 323, 12, 323, 6623, 9, 323, 1, 323, 1, 323, 1, 323, 3, 323, 6628, 8, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6636, 8, 323, 10, 323, 12, 323, 6639, 9, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 3, 324, 6647, 8, 324, 1, 324, 1, 324, 3, 324, 6651, 8, 324, 1, 324, 4, 324, 6654, 8, 324, 11, 324, 12, 324, 6655, 3, 324, 6658, 8, 324, 1, 324, 1, 324, 3, 324, 6662, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 6670, 8, 325, 1, 326, 3, 326, 6673, 8, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6678, 8, 326, 1, 326, 5, 326, 6681, 8, 326, 10, 326, 12, 326, 6684, 9, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6690, 8, 326, 3, 326, 6692, 8, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6698, 8, 326, 1, 327, 1, 327, 3, 327, 6702, 8, 327, 1, 327, 3, 327, 6705, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6710, 8, 327, 1, 327, 3, 327, 6713, 8, 327, 3, 327, 6715, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 6721, 8, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6730, 8, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6736, 8, 329, 1, 329, 3, 329, 6739, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 3, 331, 6747, 8, 331, 1, 331, 3, 331, 6750, 8, 331, 1, 332, 1, 332, 3, 332, 6754, 8, 332, 1, 332, 1, 332, 1, 332, 1, 332, 3, 332, 6760, 8, 332, 3, 332, 6762, 8, 332, 1, 332, 3, 332, 6765, 8, 332, 1, 333, 1, 333, 3, 333, 6769, 8, 333, 1, 333, 1, 333, 1, 333, 3, 333, 6774, 8, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6781, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6788, 8, 334, 3, 334, 6790, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6796, 8, 334, 3, 334, 6798, 8, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6803, 8, 334, 3, 334, 6805, 8, 334, 1, 335, 1, 335, 3, 335, 6809, 8, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 3, 338, 6818, 8, 338, 1, 338, 1, 338, 3, 338, 6822, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 5, 338, 6830, 8, 338, 10, 338, 12, 338, 6833, 9, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6846, 8, 339, 1, 339, 3, 339, 6849, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6857, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 5, 339, 6864, 8, 339, 10, 339, 12, 339, 6867, 9, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6872, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6877, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6885, 8, 339, 3, 339, 6887, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6892, 8, 339, 1, 339, 1, 339, 3, 339, 6896, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6901, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6906, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6912, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 5, 340, 6928, 8, 340, 10, 340, 12, 340, 6931, 9, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6939, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6954, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6959, 8, 341, 1, 341, 3, 341, 6962, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6968, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6973, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6986, 8, 341, 1, 341, 4, 341, 6989, 8, 341, 11, 341, 12, 341, 6990, 1, 341, 1, 341, 3, 341, 6995, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7002, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7021, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7033, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7038, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7046, 8, 341, 5, 341, 7048, 8, 341, 10, 341, 12, 341, 7051, 9, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7059, 8, 342, 1, 342, 3, 342, 7062, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7067, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7072, 8, 342, 1, 342, 1, 342, 3, 342, 7076, 8, 342, 1, 342, 3, 342, 7079, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7088, 8, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7096, 8, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7101, 8, 343, 3, 343, 7103, 8, 343, 1, 343, 3, 343, 7106, 8, 343, 1, 344, 1, 344, 3, 344, 7110, 8, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7121, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7142, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7150, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7163, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7173, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7179, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7185, 8, 345, 1, 345, 3, 345, 7188, 8, 345, 1, 345, 3, 345, 7191, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7217, 8, 345, 3, 345, 7219, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7240, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7250, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7263, 8, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7268, 8, 345, 1, 345, 1, 345, 3, 345, 7272, 8, 345, 3, 345, 7274, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7286, 8, 345, 1, 346, 1, 346, 1, 346, 5, 346, 7291, 8, 346, 10, 346, 12, 346, 7294, 9, 346, 1, 347, 1, 347, 1, 347, 3, 347, 7299, 8, 347, 1, 348, 1, 348, 1, 349, 1, 349, 3, 349, 7305, 8, 349, 1, 349, 1, 349, 3, 349, 7309, 8, 349, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 5, 351, 7318, 8, 351, 10, 351, 12, 351, 7321, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7330, 8, 353, 1, 354, 1, 354, 3, 354, 7334, 8, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7339, 8, 354, 1, 354, 3, 354, 7342, 8, 354, 1, 354, 3, 354, 7345, 8, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7354, 8, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7365, 8, 355, 3, 355, 7367, 8, 355, 1, 356, 1, 356, 3, 356, 7371, 8, 356, 1, 356, 1, 356, 1, 356, 3, 356, 7376, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 7385, 8, 357, 1, 358, 1, 358, 1, 358, 3, 358, 7390, 8, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 7398, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7408, 8, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7416, 8, 363, 1, 364, 1, 364, 3, 364, 7420, 8, 364, 1, 364, 3, 364, 7423, 8, 364, 1, 365, 1, 365, 1, 365, 5, 365, 7428, 8, 365, 10, 365, 12, 365, 7431, 9, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7438, 8, 366, 1, 367, 1, 367, 3, 367, 7442, 8, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7447, 8, 368, 10, 368, 12, 368, 7450, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 3, 369, 7457, 8, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7464, 8, 370, 10, 370, 12, 370, 7467, 9, 370, 3, 370, 7469, 8, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 3, 371, 7481, 8, 371, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7490, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7497, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7506, 8, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 3, 375, 7516, 8, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7521, 8, 375, 1, 375, 1, 375, 3, 375, 7525, 8, 375, 3, 375, 7527, 8, 375, 1, 375, 3, 375, 7530, 8, 375, 1, 376, 4, 376, 7533, 8, 376, 11, 376, 12, 376, 7534, 1, 377, 5, 377, 7538, 8, 377, 10, 377, 12, 377, 7541, 9, 377, 1, 378, 1, 378, 1, 378, 5, 378, 7546, 8, 378, 10, 378, 12, 378, 7549, 9, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 3, 379, 7556, 8, 379, 1, 379, 3, 379, 7559, 8, 379, 1, 380, 1, 380, 1, 380, 5, 380, 7564, 8, 380, 10, 380, 12, 380, 7567, 9, 380, 1, 381, 1, 381, 1, 381, 5, 381, 7572, 8, 381, 10, 381, 12, 381, 7575, 9, 381, 1, 382, 1, 382, 1, 382, 5, 382, 7580, 8, 382, 10, 382, 12, 382, 7583, 9, 382, 1, 383, 1, 383, 1, 383, 5, 383, 7588, 8, 383, 10, 383, 12, 383, 7591, 9, 383, 1, 384, 1, 384, 1, 385, 1, 385, 1, 386, 1, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 389, 1, 389, 1, 390, 1, 390, 3, 390, 7607, 8, 390, 1, 391, 1, 391, 1, 391, 5, 391, 7612, 8, 391, 10, 391, 12, 391, 7615, 9, 391, 1, 392, 1, 392, 1, 392, 5, 392, 7620, 8, 392, 10, 392, 12, 392, 7623, 9, 392, 1, 393, 1, 393, 1, 394, 1, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7639, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 7645, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7651, 8, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7659, 8, 402, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7665, 8, 403, 1, 404, 1, 404, 1, 404, 3, 404, 7670, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 5, 405, 7676, 8, 405, 10, 405, 12, 405, 7679, 9, 405, 1, 405, 1, 405, 3, 405, 7683, 8, 405, 1, 406, 3, 406, 7686, 8, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7695, 8, 407, 1, 408, 1, 408, 1, 408, 5, 408, 7700, 8, 408, 10, 408, 12, 408, 7703, 9, 408, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 7709, 8, 409, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 7715, 8, 410, 1, 411, 1, 411, 1, 411, 1, 411, 3, 411, 7721, 8, 411, 1, 412, 1, 412, 1, 412, 3, 412, 7726, 8, 412, 1, 413, 1, 413, 1, 413, 3, 413, 7731, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7739, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 7794, 8, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 3, 418, 7801, 8, 418, 1, 418, 1, 418, 1, 418, 1, 418, 4, 418, 7807, 8, 418, 11, 418, 12, 418, 7808, 3, 418, 7811, 8, 418, 3, 418, 7813, 8, 418, 1, 418, 1, 418, 5, 418, 7817, 8, 418, 10, 418, 12, 418, 7820, 9, 418, 1, 418, 3, 418, 7823, 8, 418, 1, 418, 1, 418, 3, 418, 7827, 8, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 3, 420, 7838, 8, 420, 1, 420, 3, 420, 7841, 8, 420, 1, 420, 1, 420, 3, 420, 7845, 8, 420, 1, 420, 1, 420, 3, 420, 7849, 8, 420, 1, 420, 1, 420, 3, 420, 7853, 8, 420, 1, 420, 3, 420, 7856, 8, 420, 1, 420, 3, 420, 7859, 8, 420, 1, 420, 3, 420, 7862, 8, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 5, 420, 7869, 8, 420, 10, 420, 12, 420, 7872, 9, 420, 1, 420, 1, 420, 3, 420, 7876, 8, 420, 1, 420, 1, 420, 3, 420, 7880, 8, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 3, 423, 7913, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7923, 8, 425, 1, 425, 1, 425, 3, 425, 7927, 8, 425, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7933, 8, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7938, 8, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 3, 427, 7947, 8, 427, 1, 427, 1, 427, 1, 427, 1, 427, 5, 427, 7953, 8, 427, 10, 427, 12, 427, 7956, 9, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 3, 429, 7966, 8, 429, 1, 429, 1, 429, 1, 429, 1, 429, 5, 429, 7972, 8, 429, 10, 429, 12, 429, 7975, 9, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7981, 8, 430, 10, 430, 12, 430, 7984, 9, 430, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7990, 8, 430, 10, 430, 12, 430, 7993, 9, 430, 5, 430, 7995, 8, 430, 10, 430, 12, 430, 7998, 9, 430, 1, 430, 3, 430, 8001, 8, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 5, 431, 8009, 8, 431, 10, 431, 12, 431, 8012, 9, 431, 1, 432, 1, 432, 3, 432, 8016, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 5, 432, 8022, 8, 432, 10, 432, 12, 432, 8025, 9, 432, 4, 432, 8027, 8, 432, 11, 432, 12, 432, 8028, 1, 432, 3, 432, 8032, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 3, 433, 8039, 8, 433, 1, 433, 1, 433, 1, 433, 1, 433, 3, 433, 8045, 8, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8053, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8061, 8, 434, 1, 434, 3, 434, 8064, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8071, 8, 434, 3, 434, 8073, 8, 434, 1, 435, 3, 435, 8076, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8082, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 3, 436, 8091, 8, 436, 1, 436, 1, 436, 3, 436, 8095, 8, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 3, 437, 8109, 8, 437, 1, 437, 3, 437, 8112, 8, 437, 3, 437, 8114, 8, 437, 1, 437, 1, 437, 1, 438, 1, 438, 3, 438, 8120, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 4, 438, 8128, 8, 438, 11, 438, 12, 438, 8129, 3, 438, 8132, 8, 438, 3, 438, 8134, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 5, 438, 8140, 8, 438, 10, 438, 12, 438, 8143, 9, 438, 3, 438, 8145, 8, 438, 1, 438, 3, 438, 8148, 8, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 3, 440, 8158, 8, 440, 1, 440, 1, 440, 1, 441, 1, 441, 5, 441, 8164, 8, 441, 10, 441, 12, 441, 8167, 9, 441, 1, 441, 1, 441, 1, 441, 3, 441, 8172, 8, 441, 1, 441, 1, 441, 1, 442, 1, 442, 3, 442, 8178, 8, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 3, 443, 8185, 8, 443, 1, 443, 1, 443, 3, 443, 8189, 8, 443, 1, 443, 1, 443, 3, 443, 8193, 8, 443, 1, 443, 3, 443, 8196, 8, 443, 1, 443, 3, 443, 8199, 8, 443, 1, 443, 1, 443, 1, 444, 1, 444, 3, 444, 8205, 8, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 3, 445, 8212, 8, 445, 1, 445, 3, 445, 8215, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 8223, 8, 445, 3, 445, 8225, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 5, 445, 8232, 8, 445, 10, 445, 12, 445, 8235, 9, 445, 1, 445, 1, 445, 3, 445, 8239, 8, 445, 3, 445, 8241, 8, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 3, 446, 8248, 8, 446, 1, 446, 1, 446, 1, 447, 1, 447, 3, 447, 8254, 8, 447, 1, 447, 3, 447, 8257, 8, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8269, 8, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8276, 8, 448, 3, 448, 8278, 8, 448, 1, 449, 1, 449, 3, 449, 8282, 8, 449, 1, 449, 1, 449, 1, 449, 1, 450, 3, 450, 8288, 8, 450, 1, 450, 1, 450, 1, 450, 3, 450, 8293, 8, 450, 1, 450, 1, 450, 3, 450, 8297, 8, 450, 1, 450, 3, 450, 8300, 8, 450, 1, 450, 3, 450, 8303, 8, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 4, 450, 8310, 8, 450, 11, 450, 12, 450, 8311, 1, 451, 3, 451, 8315, 8, 451, 1, 451, 1, 451, 3, 451, 8319, 8, 451, 1, 451, 1, 451, 3, 451, 8323, 8, 451, 3, 451, 8325, 8, 451, 1, 451, 3, 451, 8328, 8, 451, 1, 451, 3, 451, 8331, 8, 451, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8337, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8344, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8351, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8357, 8, 452, 3, 452, 8359, 8, 452, 1, 453, 1, 453, 3, 453, 8363, 8, 453, 1, 453, 1, 453, 1, 453, 3, 453, 8368, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 5, 454, 8384, 8, 454, 10, 454, 12, 454, 8387, 9, 454, 1, 454, 1, 454, 4, 454, 8391, 8, 454, 11, 454, 12, 454, 8392, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 5, 455, 8400, 8, 455, 10, 455, 12, 455, 8403, 9, 455, 1, 455, 1, 455, 1, 455, 1, 455, 3, 455, 8409, 8, 455, 1, 456, 1, 456, 3, 456, 8413, 8, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 3, 459, 8425, 8, 459, 1, 459, 3, 459, 8428, 8, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 3, 460, 8441, 8, 460, 1, 460, 3, 460, 8444, 8, 460, 1, 461, 1, 461, 3, 461, 8448, 8, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 5, 462, 8455, 8, 462, 10, 462, 12, 462, 8458, 9, 462, 1, 462, 1, 462, 5, 462, 8462, 8, 462, 10, 462, 12, 462, 8465, 9, 462, 4, 462, 8467, 8, 462, 11, 462, 12, 462, 8468, 1, 463, 1, 463, 1, 463, 3, 463, 8474, 8, 463, 1, 464, 1, 464, 3, 464, 8478, 8, 464, 1, 465, 1, 465, 1, 466, 3, 466, 8483, 8, 466, 1, 466, 3, 466, 8486, 8, 466, 1, 466, 3, 466, 8489, 8, 466, 1, 466, 3, 466, 8492, 8, 466, 1, 466, 3, 466, 8495, 8, 466, 1, 466, 1, 466, 3, 466, 8499, 8, 466, 1, 466, 3, 466, 8502, 8, 466, 1, 466, 0, 3, 676, 680, 682, 467, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 0, 119, 2, 0, 195, 195, 364, 364, 2, 0, 66, 66, 318, 318, 2, 0, 99, 99, 318, 318, 2, 0, 134, 134, 318, 318, 1, 0, 529, 531, 2, 0, 10, 10, 94, 94, 2, 0, 133, 133, 191, 191, 2, 0, 254, 254, 332, 332, 2, 0, 162, 162, 363, 363, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 288, 288, 329, 329, 352, 352, 354, 354, 2, 0, 109, 109, 532, 532, 2, 0, 158, 158, 277, 277, 2, 0, 367, 367, 439, 439, 2, 0, 139, 139, 312, 312, 2, 0, 191, 191, 333, 333, 2, 0, 313, 313, 333, 333, 2, 0, 150, 150, 315, 315, 2, 0, 64, 64, 94, 94, 4, 0, 78, 78, 183, 183, 197, 197, 298, 298, 2, 0, 213, 213, 254, 254, 2, 0, 352, 352, 354, 354, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 342, 342, 345, 345, 438, 438, 3, 0, 113, 113, 284, 284, 336, 336, 2, 0, 53, 53, 78, 78, 2, 0, 105, 105, 379, 379, 2, 0, 260, 260, 262, 262, 3, 0, 173, 173, 260, 260, 262, 262, 1, 0, 12, 13, 2, 0, 64, 64, 375, 375, 2, 0, 156, 156, 206, 206, 2, 0, 189, 189, 360, 360, 2, 0, 215, 215, 373, 373, 3, 0, 133, 133, 191, 191, 333, 333, 5, 0, 30, 30, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 9, 9, 94, 94, 2, 0, 92, 92, 226, 226, 1, 0, 448, 449, 2, 0, 92, 92, 414, 414, 2, 0, 341, 341, 414, 414, 4, 0, 163, 163, 185, 185, 283, 283, 353, 353, 2, 0, 135, 135, 145, 145, 2, 0, 211, 211, 278, 278, 3, 0, 321, 321, 357, 357, 445, 445, 3, 0, 66, 66, 99, 99, 318, 318, 5, 0, 108, 108, 168, 168, 226, 226, 328, 328, 342, 342, 2, 0, 167, 167, 314, 314, 2, 0, 61, 61, 265, 265, 4, 0, 207, 207, 249, 249, 268, 268, 293, 293, 2, 0, 130, 130, 307, 307, 2, 0, 64, 64, 68, 68, 10, 0, 46, 46, 88, 88, 182, 182, 202, 202, 241, 241, 352, 352, 354, 354, 357, 358, 369, 369, 521, 523, 5, 0, 212, 212, 329, 329, 350, 350, 455, 455, 457, 457, 5, 0, 212, 212, 329, 329, 350, 350, 361, 361, 455, 456, 2, 0, 37, 37, 55, 55, 2, 0, 207, 207, 249, 249, 2, 0, 10, 10, 53, 53, 2, 0, 181, 181, 243, 243, 2, 0, 170, 170, 320, 320, 2, 0, 141, 141, 223, 223, 5, 0, 108, 108, 168, 168, 189, 189, 342, 342, 360, 360, 2, 0, 226, 226, 328, 328, 2, 0, 163, 163, 185, 185, 2, 0, 186, 186, 193, 193, 4, 0, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 137, 137, 242, 242, 2, 0, 161, 161, 319, 319, 4, 0, 129, 129, 161, 161, 319, 319, 454, 454, 2, 0, 356, 356, 380, 380, 2, 0, 81, 81, 382, 382, 2, 0, 151, 151, 254, 254, 2, 0, 133, 133, 138, 138, 1, 0, 31, 32, 2, 0, 128, 128, 547, 547, 2, 0, 60, 60, 96, 96, 2, 0, 99, 99, 349, 349, 2, 0, 131, 131, 414, 414, 2, 0, 201, 201, 334, 334, 3, 0, 59, 59, 70, 70, 97, 97, 2, 0, 30, 30, 56, 56, 1, 0, 527, 528, 2, 0, 207, 207, 268, 268, 2, 0, 320, 320, 414, 414, 2, 0, 571, 571, 573, 573, 1, 0, 468, 469, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 360, 360, 477, 477, 2, 0, 394, 395, 409, 409, 2, 0, 391, 392, 406, 406, 1, 0, 391, 392, 1, 0, 418, 419, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 3, 0, 9, 9, 14, 14, 27, 27, 2, 0, 98, 98, 396, 396, 2, 0, 50, 51, 75, 76, 2, 0, 41, 41, 420, 420, 3, 0, 39, 39, 73, 73, 95, 95, 4, 0, 393, 393, 399, 399, 404, 404, 425, 425, 2, 0, 292, 292, 347, 347, 2, 0, 166, 166, 188, 188, 2, 0, 304, 304, 450, 450, 3, 0, 299, 299, 320, 320, 481, 481, 2, 0, 208, 208, 289, 289, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 114, 114, 120, 120, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 10, 0, 124, 124, 129, 228, 238, 386, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 478, 488, 547, 548, 3, 0, 106, 123, 125, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 434, 434, 501, 501, 2, 0, 167, 167, 507, 507, 1, 0, 512, 517, 2, 0, 144, 144, 210, 210, 36, 0, 33, 33, 35, 35, 43, 43, 45, 45, 53, 53, 57, 57, 61, 61, 116, 116, 123, 123, 130, 130, 144, 144, 153, 153, 157, 157, 161, 161, 167, 167, 172, 172, 207, 207, 210, 210, 241, 241, 249, 249, 265, 265, 268, 269, 279, 279, 293, 293, 307, 307, 313, 313, 319, 319, 323, 324, 333, 333, 360, 360, 433, 434, 477, 477, 490, 502, 504, 504, 506, 518, 520, 520, 9941, 0, 937, 1, 0, 0, 0, 2, 942, 1, 0, 0, 0, 4, 1066, 1, 0, 0, 0, 6, 1068, 1, 0, 0, 0, 8, 1071, 1, 0, 0, 0, 10, 1121, 1, 0, 0, 0, 12, 1131, 1, 0, 0, 0, 14, 1133, 1, 0, 0, 0, 16, 1145, 1, 0, 0, 0, 18, 1157, 1, 0, 0, 0, 20, 1168, 1, 0, 0, 0, 22, 1202, 1, 0, 0, 0, 24, 1246, 1, 0, 0, 0, 26, 1248, 1, 0, 0, 0, 28, 1260, 1, 0, 0, 0, 30, 1267, 1, 0, 0, 0, 32, 1286, 1, 0, 0, 0, 34, 1294, 1, 0, 0, 0, 36, 1296, 1, 0, 0, 0, 38, 1310, 1, 0, 0, 0, 40, 1314, 1, 0, 0, 0, 42, 1351, 1, 0, 0, 0, 44, 1353, 1, 0, 0, 0, 46, 1361, 1, 0, 0, 0, 48, 1371, 1, 0, 0, 0, 50, 1378, 1, 0, 0, 0, 52, 1386, 1, 0, 0, 0, 54, 1392, 1, 0, 0, 0, 56, 1408, 1, 0, 0, 0, 58, 1412, 1, 0, 0, 0, 60, 1414, 1, 0, 0, 0, 62, 1426, 1, 0, 0, 0, 64, 1431, 1, 0, 0, 0, 66, 1436, 1, 0, 0, 0, 68, 1438, 1, 0, 0, 0, 70, 1450, 1, 0, 0, 0, 72, 1458, 1, 0, 0, 0, 74, 1460, 1, 0, 0, 0, 76, 1584, 1, 0, 0, 0, 78, 1586, 1, 0, 0, 0, 80, 1603, 1, 0, 0, 0, 82, 1605, 1, 0, 0, 0, 84, 1619, 1, 0, 0, 0, 86, 1621, 1, 0, 0, 0, 88, 1635, 1, 0, 0, 0, 90, 1637, 1, 0, 0, 0, 92, 1874, 1, 0, 0, 0, 94, 1881, 1, 0, 0, 0, 96, 1883, 1, 0, 0, 0, 98, 1885, 1, 0, 0, 0, 100, 1888, 1, 0, 0, 0, 102, 1899, 1, 0, 0, 0, 104, 1902, 1, 0, 0, 0, 106, 1938, 1, 0, 0, 0, 108, 1940, 1, 0, 0, 0, 110, 1981, 1, 0, 0, 0, 112, 1983, 1, 0, 0, 0, 114, 2037, 1, 0, 0, 0, 116, 2078, 1, 0, 0, 0, 118, 2080, 1, 0, 0, 0, 120, 2097, 1, 0, 0, 0, 122, 2178, 1, 0, 0, 0, 124, 2180, 1, 0, 0, 0, 126, 2191, 1, 0, 0, 0, 128, 2214, 1, 0, 0, 0, 130, 2232, 1, 0, 0, 0, 132, 2234, 1, 0, 0, 0, 134, 2269, 1, 0, 0, 0, 136, 2362, 1, 0, 0, 0, 138, 2367, 1, 0, 0, 0, 140, 2369, 1, 0, 0, 0, 142, 2467, 1, 0, 0, 0, 144, 2469, 1, 0, 0, 0, 146, 2473, 1, 0, 0, 0, 148, 2484, 1, 0, 0, 0, 150, 2492, 1, 0, 0, 0, 152, 2495, 1, 0, 0, 0, 154, 2498, 1, 0, 0, 0, 156, 2516, 1, 0, 0, 0, 158, 2518, 1, 0, 0, 0, 160, 2522, 1, 0, 0, 0, 162, 2535, 1, 0, 0, 0, 164, 2537, 1, 0, 0, 0, 166, 2542, 1, 0, 0, 0, 168, 2562, 1, 0, 0, 0, 170, 2570, 1, 0, 0, 0, 172, 2577, 1, 0, 0, 0, 174, 2579, 1, 0, 0, 0, 176, 2588, 1, 0, 0, 0, 178, 2591, 1, 0, 0, 0, 180, 2595, 1, 0, 0, 0, 182, 2599, 1, 0, 0, 0, 184, 2624, 1, 0, 0, 0, 186, 2634, 1, 0, 0, 0, 188, 2648, 1, 0, 0, 0, 190, 2664, 1, 0, 0, 0, 192, 2670, 1, 0, 0, 0, 194, 2697, 1, 0, 0, 0, 196, 2707, 1, 0, 0, 0, 198, 2723, 1, 0, 0, 0, 200, 2767, 1, 0, 0, 0, 202, 2774, 1, 0, 0, 0, 204, 2776, 1, 0, 0, 0, 206, 2802, 1, 0, 0, 0, 208, 2813, 1, 0, 0, 0, 210, 2832, 1, 0, 0, 0, 212, 2843, 1, 0, 0, 0, 214, 2881, 1, 0, 0, 0, 216, 2902, 1, 0, 0, 0, 218, 2904, 1, 0, 0, 0, 220, 2924, 1, 0, 0, 0, 222, 2936, 1, 0, 0, 0, 224, 2948, 1, 0, 0, 0, 226, 2951, 1, 0, 0, 0, 228, 2954, 1, 0, 0, 0, 230, 2974, 1, 0, 0, 0, 232, 2979, 1, 0, 0, 0, 234, 3028, 1, 0, 0, 0, 236, 3030, 1, 0, 0, 0, 238, 3053, 1, 0, 0, 0, 240, 3069, 1, 0, 0, 0, 242, 3081, 1, 0, 0, 0, 244, 3108, 1, 0, 0, 0, 246, 3123, 1, 0, 0, 0, 248, 3186, 1, 0, 0, 0, 250, 3188, 1, 0, 0, 0, 252, 3193, 1, 0, 0, 0, 254, 3199, 1, 0, 0, 0, 256, 3286, 1, 0, 0, 0, 258, 3292, 1, 0, 0, 0, 260, 3294, 1, 0, 0, 0, 262, 3310, 1, 0, 0, 0, 264, 3312, 1, 0, 0, 0, 266, 3321, 1, 0, 0, 0, 268, 3325, 1, 0, 0, 0, 270, 3338, 1, 0, 0, 0, 272, 3350, 1, 0, 0, 0, 274, 3352, 1, 0, 0, 0, 276, 3374, 1, 0, 0, 0, 278, 3386, 1, 0, 0, 0, 280, 3397, 1, 0, 0, 0, 282, 3488, 1, 0, 0, 0, 284, 3490, 1, 0, 0, 0, 286, 3501, 1, 0, 0, 0, 288, 3512, 1, 0, 0, 0, 290, 3514, 1, 0, 0, 0, 292, 3540, 1, 0, 0, 0, 294, 3542, 1, 0, 0, 0, 296, 3546, 1, 0, 0, 0, 298, 3596, 1, 0, 0, 0, 300, 3598, 1, 0, 0, 0, 302, 3604, 1, 0, 0, 0, 304, 3629, 1, 0, 0, 0, 306, 3633, 1, 0, 0, 0, 308, 3847, 1, 0, 0, 0, 310, 3865, 1, 0, 0, 0, 312, 3891, 1, 0, 0, 0, 314, 3893, 1, 0, 0, 0, 316, 3901, 1, 0, 0, 0, 318, 3907, 1, 0, 0, 0, 320, 3911, 1, 0, 0, 0, 322, 3931, 1, 0, 0, 0, 324, 3937, 1, 0, 0, 0, 326, 4004, 1, 0, 0, 0, 328, 4035, 1, 0, 0, 0, 330, 4081, 1, 0, 0, 0, 332, 4083, 1, 0, 0, 0, 334, 4085, 1, 0, 0, 0, 336, 4096, 1, 0, 0, 0, 338, 4133, 1, 0, 0, 0, 340, 4135, 1, 0, 0, 0, 342, 4141, 1, 0, 0, 0, 344, 4191, 1, 0, 0, 0, 346, 4194, 1, 0, 0, 0, 348, 4208, 1, 0, 0, 0, 350, 4229, 1, 0, 0, 0, 352, 4253, 1, 0, 0, 0, 354, 4294, 1, 0, 0, 0, 356, 4296, 1, 0, 0, 0, 358, 4298, 1, 0, 0, 0, 360, 4338, 1, 0, 0, 0, 362, 4355, 1, 0, 0, 0, 364, 4375, 1, 0, 0, 0, 366, 4428, 1, 0, 0, 0, 368, 4431, 1, 0, 0, 0, 370, 4437, 1, 0, 0, 0, 372, 4445, 1, 0, 0, 0, 374, 4458, 1, 0, 0, 0, 376, 4460, 1, 0, 0, 0, 378, 4473, 1, 0, 0, 0, 380, 4475, 1, 0, 0, 0, 382, 4488, 1, 0, 0, 0, 384, 4498, 1, 0, 0, 0, 386, 4509, 1, 0, 0, 0, 388, 4520, 1, 0, 0, 0, 390, 4522, 1, 0, 0, 0, 392, 4527, 1, 0, 0, 0, 394, 4541, 1, 0, 0, 0, 396, 4573, 1, 0, 0, 0, 398, 4610, 1, 0, 0, 0, 400, 4612, 1, 0, 0, 0, 402, 4615, 1, 0, 0, 0, 404, 4618, 1, 0, 0, 0, 406, 4635, 1, 0, 0, 0, 408, 4656, 1, 0, 0, 0, 410, 4672, 1, 0, 0, 0, 412, 4688, 1, 0, 0, 0, 414, 4710, 1, 0, 0, 0, 416, 4715, 1, 0, 0, 0, 418, 4718, 1, 0, 0, 0, 420, 4726, 1, 0, 0, 0, 422, 4751, 1, 0, 0, 0, 424, 4754, 1, 0, 0, 0, 426, 4782, 1, 0, 0, 0, 428, 4787, 1, 0, 0, 0, 430, 4827, 1, 0, 0, 0, 432, 5039, 1, 0, 0, 0, 434, 5041, 1, 0, 0, 0, 436, 5129, 1, 0, 0, 0, 438, 5131, 1, 0, 0, 0, 440, 5137, 1, 0, 0, 0, 442, 5148, 1, 0, 0, 0, 444, 5158, 1, 0, 0, 0, 446, 5238, 1, 0, 0, 0, 448, 5240, 1, 0, 0, 0, 450, 5254, 1, 0, 0, 0, 452, 5276, 1, 0, 0, 0, 454, 5349, 1, 0, 0, 0, 456, 5351, 1, 0, 0, 0, 458, 5392, 1, 0, 0, 0, 460, 5394, 1, 0, 0, 0, 462, 5399, 1, 0, 0, 0, 464, 5402, 1, 0, 0, 0, 466, 5405, 1, 0, 0, 0, 468, 5455, 1, 0, 0, 0, 470, 5457, 1, 0, 0, 0, 472, 5468, 1, 0, 0, 0, 474, 5470, 1, 0, 0, 0, 476, 5480, 1, 0, 0, 0, 478, 5515, 1, 0, 0, 0, 480, 5518, 1, 0, 0, 0, 482, 5539, 1, 0, 0, 0, 484, 5549, 1, 0, 0, 0, 486, 5569, 1, 0, 0, 0, 488, 5575, 1, 0, 0, 0, 490, 5581, 1, 0, 0, 0, 492, 5586, 1, 0, 0, 0, 494, 5599, 1, 0, 0, 0, 496, 5626, 1, 0, 0, 0, 498, 5674, 1, 0, 0, 0, 500, 5676, 1, 0, 0, 0, 502, 5714, 1, 0, 0, 0, 504, 5716, 1, 0, 0, 0, 506, 5737, 1, 0, 0, 0, 508, 5757, 1, 0, 0, 0, 510, 5761, 1, 0, 0, 0, 512, 5776, 1, 0, 0, 0, 514, 5778, 1, 0, 0, 0, 516, 5782, 1, 0, 0, 0, 518, 5786, 1, 0, 0, 0, 520, 5794, 1, 0, 0, 0, 522, 5818, 1, 0, 0, 0, 524, 5820, 1, 0, 0, 0, 526, 5831, 1, 0, 0, 0, 528, 5839, 1, 0, 0, 0, 530, 5854, 1, 0, 0, 0, 532, 5879, 1, 0, 0, 0, 534, 5881, 1, 0, 0, 0, 536, 5885, 1, 0, 0, 0, 538, 5894, 1, 0, 0, 0, 540, 5934, 1, 0, 0, 0, 542, 5945, 1, 0, 0, 0, 544, 5953, 1, 0, 0, 0, 546, 5956, 1, 0, 0, 0, 548, 5960, 1, 0, 0, 0, 550, 5975, 1, 0, 0, 0, 552, 6000, 1, 0, 0, 0, 554, 6015, 1, 0, 0, 0, 556, 6041, 1, 0, 0, 0, 558, 6043, 1, 0, 0, 0, 560, 6066, 1, 0, 0, 0, 562, 6068, 1, 0, 0, 0, 564, 6076, 1, 0, 0, 0, 566, 6094, 1, 0, 0, 0, 568, 6118, 1, 0, 0, 0, 570, 6130, 1, 0, 0, 0, 572, 6134, 1, 0, 0, 0, 574, 6146, 1, 0, 0, 0, 576, 6166, 1, 0, 0, 0, 578, 6174, 1, 0, 0, 0, 580, 6188, 1, 0, 0, 0, 582, 6211, 1, 0, 0, 0, 584, 6213, 1, 0, 0, 0, 586, 6218, 1, 0, 0, 0, 588, 6228, 1, 0, 0, 0, 590, 6249, 1, 0, 0, 0, 592, 6251, 1, 0, 0, 0, 594, 6260, 1, 0, 0, 0, 596, 6271, 1, 0, 0, 0, 598, 6281, 1, 0, 0, 0, 600, 6283, 1, 0, 0, 0, 602, 6290, 1, 0, 0, 0, 604, 6321, 1, 0, 0, 0, 606, 6351, 1, 0, 0, 0, 608, 6353, 1, 0, 0, 0, 610, 6362, 1, 0, 0, 0, 612, 6365, 1, 0, 0, 0, 614, 6436, 1, 0, 0, 0, 616, 6460, 1, 0, 0, 0, 618, 6481, 1, 0, 0, 0, 620, 6483, 1, 0, 0, 0, 622, 6491, 1, 0, 0, 0, 624, 6508, 1, 0, 0, 0, 626, 6534, 1, 0, 0, 0, 628, 6536, 1, 0, 0, 0, 630, 6544, 1, 0, 0, 0, 632, 6551, 1, 0, 0, 0, 634, 6575, 1, 0, 0, 0, 636, 6581, 1, 0, 0, 0, 638, 6589, 1, 0, 0, 0, 640, 6592, 1, 0, 0, 0, 642, 6599, 1, 0, 0, 0, 644, 6607, 1, 0, 0, 0, 646, 6612, 1, 0, 0, 0, 648, 6642, 1, 0, 0, 0, 650, 6669, 1, 0, 0, 0, 652, 6697, 1, 0, 0, 0, 654, 6714, 1, 0, 0, 0, 656, 6720, 1, 0, 0, 0, 658, 6738, 1, 0, 0, 0, 660, 6740, 1, 0, 0, 0, 662, 6744, 1, 0, 0, 0, 664, 6761, 1, 0, 0, 0, 666, 6766, 1, 0, 0, 0, 668, 6804, 1, 0, 0, 0, 670, 6806, 1, 0, 0, 0, 672, 6810, 1, 0, 0, 0, 674, 6812, 1, 0, 0, 0, 676, 6821, 1, 0, 0, 0, 678, 6905, 1, 0, 0, 0, 680, 6911, 1, 0, 0, 0, 682, 7020, 1, 0, 0, 0, 684, 7052, 1, 0, 0, 0, 686, 7105, 1, 0, 0, 0, 688, 7109, 1, 0, 0, 0, 690, 7285, 1, 0, 0, 0, 692, 7287, 1, 0, 0, 0, 694, 7295, 1, 0, 0, 0, 696, 7300, 1, 0, 0, 0, 698, 7302, 1, 0, 0, 0, 700, 7310, 1, 0, 0, 0, 702, 7313, 1, 0, 0, 0, 704, 7322, 1, 0, 0, 0, 706, 7326, 1, 0, 0, 0, 708, 7331, 1, 0, 0, 0, 710, 7348, 1, 0, 0, 0, 712, 7375, 1, 0, 0, 0, 714, 7384, 1, 0, 0, 0, 716, 7386, 1, 0, 0, 0, 718, 7393, 1, 0, 0, 0, 720, 7397, 1, 0, 0, 0, 722, 7399, 1, 0, 0, 0, 724, 7407, 1, 0, 0, 0, 726, 7415, 1, 0, 0, 0, 728, 7422, 1, 0, 0, 0, 730, 7424, 1, 0, 0, 0, 732, 7437, 1, 0, 0, 0, 734, 7441, 1, 0, 0, 0, 736, 7443, 1, 0, 0, 0, 738, 7456, 1, 0, 0, 0, 740, 7458, 1, 0, 0, 0, 742, 7480, 1, 0, 0, 0, 744, 7482, 1, 0, 0, 0, 746, 7505, 1, 0, 0, 0, 748, 7507, 1, 0, 0, 0, 750, 7529, 1, 0, 0, 0, 752, 7532, 1, 0, 0, 0, 754, 7539, 1, 0, 0, 0, 756, 7542, 1, 0, 0, 0, 758, 7558, 1, 0, 0, 0, 760, 7560, 1, 0, 0, 0, 762, 7568, 1, 0, 0, 0, 764, 7576, 1, 0, 0, 0, 766, 7584, 1, 0, 0, 0, 768, 7592, 1, 0, 0, 0, 770, 7594, 1, 0, 0, 0, 772, 7596, 1, 0, 0, 0, 774, 7598, 1, 0, 0, 0, 776, 7600, 1, 0, 0, 0, 778, 7602, 1, 0, 0, 0, 780, 7604, 1, 0, 0, 0, 782, 7608, 1, 0, 0, 0, 784, 7616, 1, 0, 0, 0, 786, 7624, 1, 0, 0, 0, 788, 7626, 1, 0, 0, 0, 790, 7628, 1, 0, 0, 0, 792, 7630, 1, 0, 0, 0, 794, 7632, 1, 0, 0, 0, 796, 7638, 1, 0, 0, 0, 798, 7644, 1, 0, 0, 0, 800, 7650, 1, 0, 0, 0, 802, 7652, 1, 0, 0, 0, 804, 7658, 1, 0, 0, 0, 806, 7664, 1, 0, 0, 0, 808, 7666, 1, 0, 0, 0, 810, 7682, 1, 0, 0, 0, 812, 7685, 1, 0, 0, 0, 814, 7694, 1, 0, 0, 0, 816, 7696, 1, 0, 0, 0, 818, 7708, 1, 0, 0, 0, 820, 7714, 1, 0, 0, 0, 822, 7720, 1, 0, 0, 0, 824, 7725, 1, 0, 0, 0, 826, 7738, 1, 0, 0, 0, 828, 7740, 1, 0, 0, 0, 830, 7793, 1, 0, 0, 0, 832, 7795, 1, 0, 0, 0, 834, 7797, 1, 0, 0, 0, 836, 7800, 1, 0, 0, 0, 838, 7828, 1, 0, 0, 0, 840, 7832, 1, 0, 0, 0, 842, 7883, 1, 0, 0, 0, 844, 7886, 1, 0, 0, 0, 846, 7912, 1, 0, 0, 0, 848, 7914, 1, 0, 0, 0, 850, 7937, 1, 0, 0, 0, 852, 7939, 1, 0, 0, 0, 854, 7944, 1, 0, 0, 0, 856, 7959, 1, 0, 0, 0, 858, 7965, 1, 0, 0, 0, 860, 7976, 1, 0, 0, 0, 862, 8006, 1, 0, 0, 0, 864, 8013, 1, 0, 0, 0, 866, 8038, 1, 0, 0, 0, 868, 8048, 1, 0, 0, 0, 870, 8075, 1, 0, 0, 0, 872, 8088, 1, 0, 0, 0, 874, 8098, 1, 0, 0, 0, 876, 8117, 1, 0, 0, 0, 878, 8149, 1, 0, 0, 0, 880, 8153, 1, 0, 0, 0, 882, 8161, 1, 0, 0, 0, 884, 8175, 1, 0, 0, 0, 886, 8181, 1, 0, 0, 0, 888, 8202, 1, 0, 0, 0, 890, 8208, 1, 0, 0, 0, 892, 8247, 1, 0, 0, 0, 894, 8251, 1, 0, 0, 0, 896, 8277, 1, 0, 0, 0, 898, 8279, 1, 0, 0, 0, 900, 8287, 1, 0, 0, 0, 902, 8324, 1, 0, 0, 0, 904, 8358, 1, 0, 0, 0, 906, 8360, 1, 0, 0, 0, 908, 8371, 1, 0, 0, 0, 910, 8408, 1, 0, 0, 0, 912, 8412, 1, 0, 0, 0, 914, 8414, 1, 0, 0, 0, 916, 8418, 1, 0, 0, 0, 918, 8421, 1, 0, 0, 0, 920, 8443, 1, 0, 0, 0, 922, 8447, 1, 0, 0, 0, 924, 8449, 1, 0, 0, 0, 926, 8473, 1, 0, 0, 0, 928, 8477, 1, 0, 0, 0, 930, 8479, 1, 0, 0, 0, 932, 8482, 1, 0, 0, 0, 934, 936, 3, 2, 1, 0, 935, 934, 1, 0, 0, 0, 936, 939, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 940, 941, 5, 0, 0, 1, 941, 1, 1, 0, 0, 0, 942, 944, 3, 4, 2, 0, 943, 945, 5, 7, 0, 0, 944, 943, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 3, 1, 0, 0, 0, 946, 1067, 3, 278, 139, 0, 947, 1067, 3, 488, 244, 0, 948, 1067, 3, 484, 242, 0, 949, 1067, 3, 486, 243, 0, 950, 1067, 3, 352, 176, 0, 951, 1067, 3, 494, 247, 0, 952, 1067, 3, 292, 146, 0, 953, 1067, 3, 210, 105, 0, 954, 1067, 3, 212, 106, 0, 955, 1067, 3, 218, 109, 0, 956, 1067, 3, 232, 116, 0, 957, 1067, 3, 404, 202, 0, 958, 1067, 3, 28, 14, 0, 959, 1067, 3, 434, 217, 0, 960, 1067, 3, 436, 218, 0, 961, 1067, 3, 446, 223, 0, 962, 1067, 3, 438, 219, 0, 963, 1067, 3, 444, 222, 0, 964, 1067, 3, 244, 122, 0, 965, 1067, 3, 246, 123, 0, 966, 1067, 3, 198, 99, 0, 967, 1067, 3, 490, 245, 0, 968, 1067, 3, 76, 38, 0, 969, 1067, 3, 430, 215, 0, 970, 1067, 3, 108, 54, 0, 971, 1067, 3, 450, 225, 0, 972, 1067, 3, 18, 9, 0, 973, 1067, 3, 20, 10, 0, 974, 1067, 3, 16, 8, 0, 975, 1067, 3, 454, 227, 0, 976, 1067, 3, 184, 92, 0, 977, 1067, 3, 498, 249, 0, 978, 1067, 3, 496, 248, 0, 979, 1067, 3, 240, 120, 0, 980, 1067, 3, 506, 253, 0, 981, 1067, 3, 6, 3, 0, 982, 1067, 3, 72, 36, 0, 983, 1067, 3, 112, 56, 0, 984, 1067, 3, 502, 251, 0, 985, 1067, 3, 324, 162, 0, 986, 1067, 3, 70, 35, 0, 987, 1067, 3, 114, 57, 0, 988, 1067, 3, 254, 127, 0, 989, 1067, 3, 186, 93, 0, 990, 1067, 3, 280, 140, 0, 991, 1067, 3, 420, 210, 0, 992, 1067, 3, 500, 250, 0, 993, 1067, 3, 492, 246, 0, 994, 1067, 3, 208, 104, 0, 995, 1067, 3, 214, 107, 0, 996, 1067, 3, 228, 114, 0, 997, 1067, 3, 234, 117, 0, 998, 1067, 3, 364, 182, 0, 999, 1067, 3, 26, 13, 0, 1000, 1067, 3, 192, 96, 0, 1001, 1067, 3, 296, 148, 0, 1002, 1067, 3, 300, 150, 0, 1003, 1067, 3, 448, 224, 0, 1004, 1067, 3, 302, 151, 0, 1005, 1067, 3, 242, 121, 0, 1006, 1067, 3, 204, 102, 0, 1007, 1067, 3, 30, 15, 0, 1008, 1067, 3, 196, 98, 0, 1009, 1067, 3, 120, 60, 0, 1010, 1067, 3, 452, 226, 0, 1011, 1067, 3, 182, 91, 0, 1012, 1067, 3, 206, 103, 0, 1013, 1067, 3, 424, 212, 0, 1014, 1067, 3, 256, 128, 0, 1015, 1067, 3, 274, 137, 0, 1016, 1067, 3, 8, 4, 0, 1017, 1067, 3, 14, 7, 0, 1018, 1067, 3, 238, 119, 0, 1019, 1067, 3, 480, 240, 0, 1020, 1067, 3, 536, 268, 0, 1021, 1067, 3, 558, 279, 0, 1022, 1067, 3, 282, 141, 0, 1023, 1067, 3, 548, 274, 0, 1024, 1067, 3, 74, 37, 0, 1025, 1067, 3, 418, 209, 0, 1026, 1067, 3, 308, 154, 0, 1027, 1067, 3, 532, 266, 0, 1028, 1067, 3, 520, 260, 0, 1029, 1067, 3, 328, 164, 0, 1030, 1067, 3, 334, 167, 0, 1031, 1067, 3, 348, 174, 0, 1032, 1067, 3, 900, 450, 0, 1033, 1067, 3, 236, 118, 0, 1034, 1067, 3, 358, 179, 0, 1035, 1067, 3, 538, 269, 0, 1036, 1067, 3, 464, 232, 0, 1037, 1067, 3, 194, 97, 0, 1038, 1067, 3, 478, 239, 0, 1039, 1067, 3, 550, 275, 0, 1040, 1067, 3, 460, 230, 0, 1041, 1067, 3, 526, 263, 0, 1042, 1067, 3, 306, 153, 0, 1043, 1067, 3, 428, 214, 0, 1044, 1067, 3, 408, 204, 0, 1045, 1067, 3, 406, 203, 0, 1046, 1067, 3, 410, 205, 0, 1047, 1067, 3, 432, 216, 0, 1048, 1067, 3, 336, 168, 0, 1049, 1067, 3, 350, 175, 0, 1050, 1067, 3, 456, 228, 0, 1051, 1067, 3, 326, 163, 0, 1052, 1067, 3, 560, 280, 0, 1053, 1067, 3, 468, 234, 0, 1054, 1067, 3, 320, 160, 0, 1055, 1067, 3, 466, 233, 0, 1056, 1067, 3, 552, 276, 0, 1057, 1067, 3, 504, 252, 0, 1058, 1067, 3, 60, 30, 0, 1059, 1067, 3, 36, 18, 0, 1060, 1067, 3, 68, 34, 0, 1061, 1067, 3, 476, 238, 0, 1062, 1064, 5, 581, 0, 0, 1063, 1065, 5, 582, 0, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 946, 1, 0, 0, 0, 1066, 947, 1, 0, 0, 0, 1066, 948, 1, 0, 0, 0, 1066, 949, 1, 0, 0, 0, 1066, 950, 1, 0, 0, 0, 1066, 951, 1, 0, 0, 0, 1066, 952, 1, 0, 0, 0, 1066, 953, 1, 0, 0, 0, 1066, 954, 1, 0, 0, 0, 1066, 955, 1, 0, 0, 0, 1066, 956, 1, 0, 0, 0, 1066, 957, 1, 0, 0, 0, 1066, 958, 1, 0, 0, 0, 1066, 959, 1, 0, 0, 0, 1066, 960, 1, 0, 0, 0, 1066, 961, 1, 0, 0, 0, 1066, 962, 1, 0, 0, 0, 1066, 963, 1, 0, 0, 0, 1066, 964, 1, 0, 0, 0, 1066, 965, 1, 0, 0, 0, 1066, 966, 1, 0, 0, 0, 1066, 967, 1, 0, 0, 0, 1066, 968, 1, 0, 0, 0, 1066, 969, 1, 0, 0, 0, 1066, 970, 1, 0, 0, 0, 1066, 971, 1, 0, 0, 0, 1066, 972, 1, 0, 0, 0, 1066, 973, 1, 0, 0, 0, 1066, 974, 1, 0, 0, 0, 1066, 975, 1, 0, 0, 0, 1066, 976, 1, 0, 0, 0, 1066, 977, 1, 0, 0, 0, 1066, 978, 1, 0, 0, 0, 1066, 979, 1, 0, 0, 0, 1066, 980, 1, 0, 0, 0, 1066, 981, 1, 0, 0, 0, 1066, 982, 1, 0, 0, 0, 1066, 983, 1, 0, 0, 0, 1066, 984, 1, 0, 0, 0, 1066, 985, 1, 0, 0, 0, 1066, 986, 1, 0, 0, 0, 1066, 987, 1, 0, 0, 0, 1066, 988, 1, 0, 0, 0, 1066, 989, 1, 0, 0, 0, 1066, 990, 1, 0, 0, 0, 1066, 991, 1, 0, 0, 0, 1066, 992, 1, 0, 0, 0, 1066, 993, 1, 0, 0, 0, 1066, 994, 1, 0, 0, 0, 1066, 995, 1, 0, 0, 0, 1066, 996, 1, 0, 0, 0, 1066, 997, 1, 0, 0, 0, 1066, 998, 1, 0, 0, 0, 1066, 999, 1, 0, 0, 0, 1066, 1000, 1, 0, 0, 0, 1066, 1001, 1, 0, 0, 0, 1066, 1002, 1, 0, 0, 0, 1066, 1003, 1, 0, 0, 0, 1066, 1004, 1, 0, 0, 0, 1066, 1005, 1, 0, 0, 0, 1066, 1006, 1, 0, 0, 0, 1066, 1007, 1, 0, 0, 0, 1066, 1008, 1, 0, 0, 0, 1066, 1009, 1, 0, 0, 0, 1066, 1010, 1, 0, 0, 0, 1066, 1011, 1, 0, 0, 0, 1066, 1012, 1, 0, 0, 0, 1066, 1013, 1, 0, 0, 0, 1066, 1014, 1, 0, 0, 0, 1066, 1015, 1, 0, 0, 0, 1066, 1016, 1, 0, 0, 0, 1066, 1017, 1, 0, 0, 0, 1066, 1018, 1, 0, 0, 0, 1066, 1019, 1, 0, 0, 0, 1066, 1020, 1, 0, 0, 0, 1066, 1021, 1, 0, 0, 0, 1066, 1022, 1, 0, 0, 0, 1066, 1023, 1, 0, 0, 0, 1066, 1024, 1, 0, 0, 0, 1066, 1025, 1, 0, 0, 0, 1066, 1026, 1, 0, 0, 0, 1066, 1027, 1, 0, 0, 0, 1066, 1028, 1, 0, 0, 0, 1066, 1029, 1, 0, 0, 0, 1066, 1030, 1, 0, 0, 0, 1066, 1031, 1, 0, 0, 0, 1066, 1032, 1, 0, 0, 0, 1066, 1033, 1, 0, 0, 0, 1066, 1034, 1, 0, 0, 0, 1066, 1035, 1, 0, 0, 0, 1066, 1036, 1, 0, 0, 0, 1066, 1037, 1, 0, 0, 0, 1066, 1038, 1, 0, 0, 0, 1066, 1039, 1, 0, 0, 0, 1066, 1040, 1, 0, 0, 0, 1066, 1041, 1, 0, 0, 0, 1066, 1042, 1, 0, 0, 0, 1066, 1043, 1, 0, 0, 0, 1066, 1044, 1, 0, 0, 0, 1066, 1045, 1, 0, 0, 0, 1066, 1046, 1, 0, 0, 0, 1066, 1047, 1, 0, 0, 0, 1066, 1048, 1, 0, 0, 0, 1066, 1049, 1, 0, 0, 0, 1066, 1050, 1, 0, 0, 0, 1066, 1051, 1, 0, 0, 0, 1066, 1052, 1, 0, 0, 0, 1066, 1053, 1, 0, 0, 0, 1066, 1054, 1, 0, 0, 0, 1066, 1055, 1, 0, 0, 0, 1066, 1056, 1, 0, 0, 0, 1066, 1057, 1, 0, 0, 0, 1066, 1058, 1, 0, 0, 0, 1066, 1059, 1, 0, 0, 0, 1066, 1060, 1, 0, 0, 0, 1066, 1061, 1, 0, 0, 0, 1066, 1062, 1, 0, 0, 0, 1067, 5, 1, 0, 0, 0, 1068, 1069, 5, 433, 0, 0, 1069, 1070, 3, 684, 342, 0, 1070, 7, 1, 0, 0, 0, 1071, 1072, 5, 46, 0, 0, 1072, 1073, 5, 318, 0, 0, 1073, 1075, 3, 814, 407, 0, 1074, 1076, 5, 105, 0, 0, 1075, 1074, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1080, 1, 0, 0, 0, 1077, 1079, 3, 12, 6, 0, 1078, 1077, 1, 0, 0, 0, 1079, 1082, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 9, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1083, 1086, 5, 287, 0, 0, 1084, 1087, 3, 808, 404, 0, 1085, 1087, 5, 78, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1085, 1, 0, 0, 0, 1087, 1122, 1, 0, 0, 0, 1088, 1089, 7, 0, 0, 0, 1089, 1090, 5, 287, 0, 0, 1090, 1122, 3, 808, 404, 0, 1091, 1122, 5, 228, 0, 0, 1092, 1122, 5, 229, 0, 0, 1093, 1122, 5, 236, 0, 0, 1094, 1122, 5, 237, 0, 0, 1095, 1122, 5, 234, 0, 0, 1096, 1122, 5, 235, 0, 0, 1097, 1122, 5, 232, 0, 0, 1098, 1122, 5, 233, 0, 0, 1099, 1122, 5, 230, 0, 0, 1100, 1122, 5, 231, 0, 0, 1101, 1122, 5, 535, 0, 0, 1102, 1122, 5, 536, 0, 0, 1103, 1122, 5, 537, 0, 0, 1104, 1122, 5, 538, 0, 0, 1105, 1122, 5, 539, 0, 0, 1106, 1122, 5, 540, 0, 0, 1107, 1108, 5, 164, 0, 0, 1108, 1109, 5, 74, 0, 0, 1109, 1122, 3, 812, 406, 0, 1110, 1111, 5, 371, 0, 0, 1111, 1112, 5, 368, 0, 0, 1112, 1122, 3, 808, 404, 0, 1113, 1114, 5, 68, 0, 0, 1114, 1115, 7, 1, 0, 0, 1115, 1122, 3, 784, 392, 0, 1116, 1117, 7, 2, 0, 0, 1117, 1122, 3, 816, 408, 0, 1118, 1119, 5, 134, 0, 0, 1119, 1122, 3, 784, 392, 0, 1120, 1122, 3, 826, 413, 0, 1121, 1083, 1, 0, 0, 0, 1121, 1088, 1, 0, 0, 0, 1121, 1091, 1, 0, 0, 0, 1121, 1092, 1, 0, 0, 0, 1121, 1093, 1, 0, 0, 0, 1121, 1094, 1, 0, 0, 0, 1121, 1095, 1, 0, 0, 0, 1121, 1096, 1, 0, 0, 0, 1121, 1097, 1, 0, 0, 0, 1121, 1098, 1, 0, 0, 0, 1121, 1099, 1, 0, 0, 0, 1121, 1100, 1, 0, 0, 0, 1121, 1101, 1, 0, 0, 0, 1121, 1102, 1, 0, 0, 0, 1121, 1103, 1, 0, 0, 0, 1121, 1104, 1, 0, 0, 0, 1121, 1105, 1, 0, 0, 0, 1121, 1106, 1, 0, 0, 0, 1121, 1107, 1, 0, 0, 0, 1121, 1110, 1, 0, 0, 0, 1121, 1113, 1, 0, 0, 0, 1121, 1116, 1, 0, 0, 0, 1121, 1118, 1, 0, 0, 0, 1121, 1120, 1, 0, 0, 0, 1122, 11, 1, 0, 0, 0, 1123, 1132, 3, 10, 5, 0, 1124, 1125, 5, 348, 0, 0, 1125, 1132, 5, 571, 0, 0, 1126, 1127, 7, 3, 0, 0, 1127, 1132, 3, 816, 408, 0, 1128, 1129, 5, 68, 0, 0, 1129, 1130, 7, 1, 0, 0, 1130, 1132, 3, 816, 408, 0, 1131, 1123, 1, 0, 0, 0, 1131, 1124, 1, 0, 0, 0, 1131, 1126, 1, 0, 0, 0, 1131, 1128, 1, 0, 0, 0, 1132, 13, 1, 0, 0, 0, 1133, 1134, 5, 46, 0, 0, 1134, 1135, 5, 99, 0, 0, 1135, 1137, 3, 814, 407, 0, 1136, 1138, 5, 105, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1142, 1, 0, 0, 0, 1139, 1141, 3, 12, 6, 0, 1140, 1139, 1, 0, 0, 0, 1141, 1144, 1, 0, 0, 0, 1142, 1140, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 15, 1, 0, 0, 0, 1144, 1142, 1, 0, 0, 0, 1145, 1146, 5, 138, 0, 0, 1146, 1147, 7, 2, 0, 0, 1147, 1149, 3, 814, 407, 0, 1148, 1150, 5, 105, 0, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1154, 1, 0, 0, 0, 1151, 1153, 3, 10, 5, 0, 1152, 1151, 1, 0, 0, 0, 1153, 1156, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 17, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1158, 5, 138, 0, 0, 1158, 1161, 7, 2, 0, 0, 1159, 1162, 5, 30, 0, 0, 1160, 1162, 3, 814, 407, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 68, 0, 0, 1164, 1165, 5, 175, 0, 0, 1165, 1166, 3, 788, 394, 0, 1166, 1167, 3, 64, 32, 0, 1167, 19, 1, 0, 0, 0, 1168, 1169, 5, 138, 0, 0, 1169, 1170, 5, 442, 0, 0, 1170, 1172, 3, 794, 397, 0, 1171, 1173, 3, 368, 184, 0, 1172, 1171, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1175, 3, 22, 11, 0, 1175, 21, 1, 0, 0, 0, 1176, 1180, 3, 24, 12, 0, 1177, 1179, 3, 24, 12, 0, 1178, 1177, 1, 0, 0, 0, 1179, 1182, 1, 0, 0, 0, 1180, 1178, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1184, 1, 0, 0, 0, 1182, 1180, 1, 0, 0, 0, 1183, 1185, 5, 315, 0, 0, 1184, 1183, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1203, 1, 0, 0, 0, 1186, 1187, 5, 309, 0, 0, 1187, 1188, 5, 94, 0, 0, 1188, 1203, 3, 792, 396, 0, 1189, 1190, 5, 282, 0, 0, 1190, 1191, 5, 94, 0, 0, 1191, 1203, 3, 814, 407, 0, 1192, 1193, 5, 333, 0, 0, 1193, 1194, 5, 323, 0, 0, 1194, 1203, 3, 32, 16, 0, 1195, 1197, 5, 269, 0, 0, 1196, 1195, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 5, 462, 0, 0, 1199, 1200, 5, 80, 0, 0, 1200, 1201, 5, 204, 0, 0, 1201, 1203, 3, 818, 409, 0, 1202, 1176, 1, 0, 0, 0, 1202, 1186, 1, 0, 0, 0, 1202, 1189, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1196, 1, 0, 0, 0, 1203, 23, 1, 0, 0, 0, 1204, 1247, 5, 222, 0, 0, 1205, 1247, 5, 338, 0, 0, 1206, 1247, 5, 377, 0, 0, 1207, 1209, 5, 77, 0, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1247, 5, 250, 0, 0, 1211, 1213, 5, 205, 0, 0, 1212, 1211, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 5, 327, 0, 0, 1215, 1222, 5, 243, 0, 0, 1216, 1218, 5, 205, 0, 0, 1217, 1216, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1220, 5, 327, 0, 0, 1220, 1222, 5, 181, 0, 0, 1221, 1212, 1, 0, 0, 0, 1221, 1217, 1, 0, 0, 0, 1222, 1247, 1, 0, 0, 0, 1223, 1224, 5, 460, 0, 0, 1224, 1247, 7, 4, 0, 0, 1225, 1226, 5, 170, 0, 0, 1226, 1247, 3, 824, 412, 0, 1227, 1228, 5, 320, 0, 0, 1228, 1247, 3, 818, 409, 0, 1229, 1230, 5, 333, 0, 0, 1230, 1231, 3, 818, 409, 0, 1231, 1234, 7, 5, 0, 0, 1232, 1235, 3, 818, 409, 0, 1233, 1235, 5, 53, 0, 0, 1234, 1232, 1, 0, 0, 0, 1234, 1233, 1, 0, 0, 0, 1235, 1247, 1, 0, 0, 0, 1236, 1237, 5, 333, 0, 0, 1237, 1238, 3, 818, 409, 0, 1238, 1239, 5, 64, 0, 0, 1239, 1240, 5, 434, 0, 0, 1240, 1247, 1, 0, 0, 0, 1241, 1244, 5, 313, 0, 0, 1242, 1245, 3, 818, 409, 0, 1243, 1245, 5, 30, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1243, 1, 0, 0, 0, 1245, 1247, 1, 0, 0, 0, 1246, 1204, 1, 0, 0, 0, 1246, 1205, 1, 0, 0, 0, 1246, 1206, 1, 0, 0, 0, 1246, 1208, 1, 0, 0, 0, 1246, 1221, 1, 0, 0, 0, 1246, 1223, 1, 0, 0, 0, 1246, 1225, 1, 0, 0, 0, 1246, 1227, 1, 0, 0, 0, 1246, 1229, 1, 0, 0, 0, 1246, 1236, 1, 0, 0, 0, 1246, 1241, 1, 0, 0, 0, 1247, 25, 1, 0, 0, 0, 1248, 1249, 5, 46, 0, 0, 1249, 1250, 5, 66, 0, 0, 1250, 1252, 3, 814, 407, 0, 1251, 1253, 5, 105, 0, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1257, 1, 0, 0, 0, 1254, 1256, 3, 12, 6, 0, 1255, 1254, 1, 0, 0, 0, 1256, 1259, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 27, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1261, 5, 138, 0, 0, 1261, 1262, 5, 66, 0, 0, 1262, 1263, 3, 814, 407, 0, 1263, 1264, 7, 6, 0, 0, 1264, 1265, 5, 99, 0, 0, 1265, 1266, 3, 816, 408, 0, 1266, 29, 1, 0, 0, 0, 1267, 1268, 5, 46, 0, 0, 1268, 1270, 5, 323, 0, 0, 1269, 1271, 3, 294, 147, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1278, 1, 0, 0, 0, 1272, 1274, 3, 32, 16, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 5, 106, 0, 0, 1276, 1279, 3, 814, 407, 0, 1277, 1279, 3, 32, 16, 0, 1278, 1273, 1, 0, 0, 0, 1278, 1277, 1, 0, 0, 0, 1279, 1283, 1, 0, 0, 0, 1280, 1282, 3, 34, 17, 0, 1281, 1280, 1, 0, 0, 0, 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 31, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1287, 3, 316, 158, 0, 1287, 33, 1, 0, 0, 0, 1288, 1295, 3, 120, 60, 0, 1289, 1295, 3, 358, 179, 0, 1290, 1295, 3, 196, 98, 0, 1291, 1295, 3, 256, 128, 0, 1292, 1295, 3, 334, 167, 0, 1293, 1295, 3, 476, 238, 0, 1294, 1288, 1, 0, 0, 0, 1294, 1289, 1, 0, 0, 0, 1294, 1290, 1, 0, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1294, 1293, 1, 0, 0, 0, 1295, 35, 1, 0, 0, 0, 1296, 1298, 5, 333, 0, 0, 1297, 1299, 7, 7, 0, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 3, 38, 19, 0, 1301, 37, 1, 0, 0, 0, 1302, 1303, 5, 356, 0, 0, 1303, 1311, 3, 474, 237, 0, 1304, 1305, 5, 332, 0, 0, 1305, 1306, 5, 154, 0, 0, 1306, 1307, 5, 36, 0, 0, 1307, 1308, 5, 356, 0, 0, 1308, 1311, 3, 474, 237, 0, 1309, 1311, 3, 42, 21, 0, 1310, 1302, 1, 0, 0, 0, 1310, 1304, 1, 0, 0, 0, 1310, 1309, 1, 0, 0, 0, 1311, 39, 1, 0, 0, 0, 1312, 1315, 5, 30, 0, 0, 1313, 1315, 3, 44, 22, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1313, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1318, 7, 5, 0, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1321, 1, 0, 0, 0, 1319, 1322, 5, 53, 0, 0, 1320, 1322, 3, 46, 23, 0, 1321, 1319, 1, 0, 0, 0, 1321, 1320, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 41, 1, 0, 0, 0, 1323, 1324, 5, 418, 0, 0, 1324, 1325, 5, 386, 0, 0, 1325, 1352, 3, 56, 28, 0, 1326, 1327, 5, 152, 0, 0, 1327, 1352, 3, 808, 404, 0, 1328, 1329, 5, 323, 0, 0, 1329, 1352, 3, 790, 395, 0, 1330, 1333, 5, 267, 0, 0, 1331, 1334, 3, 808, 404, 0, 1332, 1334, 5, 53, 0, 0, 1333, 1331, 1, 0, 0, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1352, 1, 0, 0, 0, 1335, 1336, 5, 318, 0, 0, 1336, 1352, 3, 58, 29, 0, 1337, 1338, 5, 332, 0, 0, 1338, 1339, 5, 106, 0, 0, 1339, 1352, 3, 58, 29, 0, 1340, 1341, 5, 383, 0, 0, 1341, 1342, 5, 279, 0, 0, 1342, 1352, 3, 696, 348, 0, 1343, 1344, 5, 356, 0, 0, 1344, 1345, 5, 337, 0, 0, 1345, 1352, 3, 808, 404, 0, 1346, 1347, 3, 44, 22, 0, 1347, 1348, 5, 64, 0, 0, 1348, 1349, 5, 434, 0, 0, 1349, 1352, 1, 0, 0, 0, 1350, 1352, 3, 40, 20, 0, 1351, 1323, 1, 0, 0, 0, 1351, 1326, 1, 0, 0, 0, 1351, 1328, 1, 0, 0, 0, 1351, 1330, 1, 0, 0, 0, 1351, 1335, 1, 0, 0, 0, 1351, 1337, 1, 0, 0, 0, 1351, 1340, 1, 0, 0, 0, 1351, 1343, 1, 0, 0, 0, 1351, 1346, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 43, 1, 0, 0, 0, 1353, 1358, 3, 818, 409, 0, 1354, 1355, 5, 11, 0, 0, 1355, 1357, 3, 818, 409, 0, 1356, 1354, 1, 0, 0, 0, 1357, 1360, 1, 0, 0, 0, 1358, 1356, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 45, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1361, 1366, 3, 48, 24, 0, 1362, 1363, 5, 6, 0, 0, 1363, 1365, 3, 48, 24, 0, 1364, 1362, 1, 0, 0, 0, 1365, 1368, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 47, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1369, 1372, 3, 54, 27, 0, 1370, 1372, 3, 202, 101, 0, 1371, 1369, 1, 0, 0, 0, 1371, 1370, 1, 0, 0, 0, 1372, 49, 1, 0, 0, 0, 1373, 1374, 5, 300, 0, 0, 1374, 1379, 7, 8, 0, 0, 1375, 1376, 5, 310, 0, 0, 1376, 1379, 5, 300, 0, 0, 1377, 1379, 5, 330, 0, 0, 1378, 1373, 1, 0, 0, 0, 1378, 1375, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 51, 1, 0, 0, 0, 1380, 1387, 5, 96, 0, 0, 1381, 1387, 5, 60, 0, 0, 1382, 1387, 5, 80, 0, 0, 1383, 1387, 3, 800, 400, 0, 1384, 1387, 3, 832, 416, 0, 1385, 1387, 3, 808, 404, 0, 1386, 1380, 1, 0, 0, 0, 1386, 1381, 1, 0, 0, 0, 1386, 1382, 1, 0, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1386, 1385, 1, 0, 0, 0, 1387, 53, 1, 0, 0, 0, 1388, 1393, 5, 96, 0, 0, 1389, 1393, 5, 60, 0, 0, 1390, 1393, 5, 80, 0, 0, 1391, 1393, 3, 58, 29, 0, 1392, 1388, 1, 0, 0, 0, 1392, 1389, 1, 0, 0, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1391, 1, 0, 0, 0, 1393, 55, 1, 0, 0, 0, 1394, 1409, 3, 808, 404, 0, 1395, 1409, 5, 53, 0, 0, 1396, 1409, 3, 826, 413, 0, 1397, 1398, 5, 403, 0, 0, 1398, 1400, 3, 808, 404, 0, 1399, 1401, 3, 668, 334, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1409, 1, 0, 0, 0, 1402, 1403, 5, 403, 0, 0, 1403, 1404, 3, 660, 330, 0, 1404, 1405, 3, 808, 404, 0, 1405, 1409, 1, 0, 0, 0, 1406, 1409, 3, 202, 101, 0, 1407, 1409, 5, 254, 0, 0, 1408, 1394, 1, 0, 0, 0, 1408, 1395, 1, 0, 0, 0, 1408, 1396, 1, 0, 0, 0, 1408, 1397, 1, 0, 0, 0, 1408, 1402, 1, 0, 0, 0, 1408, 1406, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409, 57, 1, 0, 0, 0, 1410, 1413, 3, 822, 411, 0, 1411, 1413, 3, 808, 404, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1411, 1, 0, 0, 0, 1413, 59, 1, 0, 0, 0, 1414, 1415, 5, 313, 0, 0, 1415, 1416, 3, 62, 31, 0, 1416, 61, 1, 0, 0, 0, 1417, 1418, 5, 418, 0, 0, 1418, 1427, 5, 386, 0, 0, 1419, 1420, 5, 356, 0, 0, 1420, 1421, 5, 244, 0, 0, 1421, 1427, 5, 251, 0, 0, 1422, 1423, 5, 332, 0, 0, 1423, 1427, 5, 106, 0, 0, 1424, 1427, 5, 30, 0, 0, 1425, 1427, 3, 44, 22, 0, 1426, 1417, 1, 0, 0, 0, 1426, 1419, 1, 0, 0, 0, 1426, 1422, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1425, 1, 0, 0, 0, 1427, 63, 1, 0, 0, 0, 1428, 1429, 5, 333, 0, 0, 1429, 1432, 3, 38, 19, 0, 1430, 1432, 3, 60, 30, 0, 1431, 1428, 1, 0, 0, 0, 1431, 1430, 1, 0, 0, 0, 1432, 65, 1, 0, 0, 0, 1433, 1434, 5, 333, 0, 0, 1434, 1437, 3, 42, 21, 0, 1435, 1437, 3, 60, 30, 0, 1436, 1433, 1, 0, 0, 0, 1436, 1435, 1, 0, 0, 0, 1437, 67, 1, 0, 0, 0, 1438, 1448, 5, 335, 0, 0, 1439, 1449, 3, 44, 22, 0, 1440, 1441, 5, 418, 0, 0, 1441, 1449, 5, 386, 0, 0, 1442, 1443, 5, 356, 0, 0, 1443, 1444, 5, 244, 0, 0, 1444, 1449, 5, 251, 0, 0, 1445, 1446, 5, 332, 0, 0, 1446, 1449, 5, 106, 0, 0, 1447, 1449, 5, 30, 0, 0, 1448, 1439, 1, 0, 0, 0, 1448, 1440, 1, 0, 0, 0, 1448, 1442, 1, 0, 0, 0, 1448, 1445, 1, 0, 0, 0, 1448, 1447, 1, 0, 0, 0, 1449, 69, 1, 0, 0, 0, 1450, 1451, 5, 333, 0, 0, 1451, 1454, 5, 165, 0, 0, 1452, 1455, 5, 30, 0, 0, 1453, 1455, 3, 760, 380, 0, 1454, 1452, 1, 0, 0, 0, 1454, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1457, 7, 9, 0, 0, 1457, 71, 1, 0, 0, 0, 1458, 1459, 5, 155, 0, 0, 1459, 73, 1, 0, 0, 0, 1460, 1461, 5, 187, 0, 0, 1461, 1462, 7, 10, 0, 0, 1462, 75, 1, 0, 0, 0, 1463, 1464, 5, 138, 0, 0, 1464, 1466, 5, 92, 0, 0, 1465, 1467, 3, 422, 211, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1471, 3, 624, 312, 0, 1469, 1472, 3, 78, 39, 0, 1470, 1472, 3, 88, 44, 0, 1471, 1469, 1, 0, 0, 0, 1471, 1470, 1, 0, 0, 0, 1472, 1585, 1, 0, 0, 0, 1473, 1474, 5, 138, 0, 0, 1474, 1475, 5, 92, 0, 0, 1475, 1476, 5, 30, 0, 0, 1476, 1477, 5, 68, 0, 0, 1477, 1481, 3, 176, 88, 0, 1478, 1479, 5, 281, 0, 0, 1479, 1480, 5, 147, 0, 0, 1480, 1482, 3, 816, 408, 0, 1481, 1478, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 5, 333, 0, 0, 1484, 1485, 5, 351, 0, 0, 1485, 1487, 3, 768, 384, 0, 1486, 1488, 5, 272, 0, 0, 1487, 1486, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1585, 1, 0, 0, 0, 1489, 1490, 5, 138, 0, 0, 1490, 1492, 5, 92, 0, 0, 1491, 1493, 3, 422, 211, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 3, 774, 387, 0, 1495, 1500, 3, 90, 45, 0, 1496, 1497, 5, 62, 0, 0, 1497, 1498, 5, 422, 0, 0, 1498, 1501, 3, 80, 40, 0, 1499, 1501, 5, 53, 0, 0, 1500, 1496, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1585, 1, 0, 0, 0, 1502, 1503, 5, 138, 0, 0, 1503, 1505, 5, 92, 0, 0, 1504, 1506, 3, 422, 211, 0, 1505, 1504, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 3, 774, 387, 0, 1508, 1509, 5, 436, 0, 0, 1509, 1510, 5, 285, 0, 0, 1510, 1512, 3, 780, 390, 0, 1511, 1513, 7, 11, 0, 0, 1512, 1511, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1585, 1, 0, 0, 0, 1514, 1515, 5, 138, 0, 0, 1515, 1517, 5, 226, 0, 0, 1516, 1518, 3, 422, 211, 0, 1517, 1516, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1522, 3, 780, 390, 0, 1520, 1523, 3, 78, 39, 0, 1521, 1523, 3, 90, 45, 0, 1522, 1520, 1, 0, 0, 0, 1522, 1521, 1, 0, 0, 0, 1523, 1585, 1, 0, 0, 0, 1524, 1525, 5, 138, 0, 0, 1525, 1526, 5, 226, 0, 0, 1526, 1527, 5, 30, 0, 0, 1527, 1528, 5, 68, 0, 0, 1528, 1532, 3, 176, 88, 0, 1529, 1530, 5, 281, 0, 0, 1530, 1531, 5, 147, 0, 0, 1531, 1533, 3, 816, 408, 0, 1532, 1529, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 5, 333, 0, 0, 1535, 1537, 3, 176, 88, 0, 1536, 1538, 5, 272, 0, 0, 1537, 1536, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1585, 1, 0, 0, 0, 1539, 1540, 5, 138, 0, 0, 1540, 1542, 5, 328, 0, 0, 1541, 1543, 3, 422, 211, 0, 1542, 1541, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1545, 3, 780, 390, 0, 1545, 1546, 3, 78, 39, 0, 1546, 1585, 1, 0, 0, 0, 1547, 1549, 5, 138, 0, 0, 1548, 1550, 5, 259, 0, 0, 1549, 1548, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553, 5, 376, 0, 0, 1552, 1554, 3, 422, 211, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1556, 3, 778, 389, 0, 1556, 1557, 3, 78, 39, 0, 1557, 1585, 1, 0, 0, 0, 1558, 1559, 5, 138, 0, 0, 1559, 1560, 5, 259, 0, 0, 1560, 1561, 5, 376, 0, 0, 1561, 1562, 5, 30, 0, 0, 1562, 1563, 5, 68, 0, 0, 1563, 1567, 3, 176, 88, 0, 1564, 1565, 5, 281, 0, 0, 1565, 1566, 5, 147, 0, 0, 1566, 1568, 3, 816, 408, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1570, 5, 333, 0, 0, 1570, 1571, 5, 351, 0, 0, 1571, 1573, 3, 768, 384, 0, 1572, 1574, 5, 272, 0, 0, 1573, 1572, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1585, 1, 0, 0, 0, 1575, 1576, 5, 138, 0, 0, 1576, 1577, 5, 63, 0, 0, 1577, 1579, 5, 92, 0, 0, 1578, 1580, 3, 422, 211, 0, 1579, 1578, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1582, 3, 624, 312, 0, 1582, 1583, 3, 78, 39, 0, 1583, 1585, 1, 0, 0, 0, 1584, 1463, 1, 0, 0, 0, 1584, 1473, 1, 0, 0, 0, 1584, 1489, 1, 0, 0, 0, 1584, 1502, 1, 0, 0, 0, 1584, 1514, 1, 0, 0, 0, 1584, 1524, 1, 0, 0, 0, 1584, 1539, 1, 0, 0, 0, 1584, 1547, 1, 0, 0, 0, 1584, 1558, 1, 0, 0, 0, 1584, 1575, 1, 0, 0, 0, 1585, 77, 1, 0, 0, 0, 1586, 1591, 3, 92, 46, 0, 1587, 1588, 5, 6, 0, 0, 1588, 1590, 3, 92, 46, 0, 1589, 1587, 1, 0, 0, 0, 1590, 1593, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1591, 1592, 1, 0, 0, 0, 1592, 79, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1594, 1595, 5, 68, 0, 0, 1595, 1604, 3, 534, 267, 0, 1596, 1597, 5, 64, 0, 0, 1597, 1598, 3, 82, 41, 0, 1598, 1599, 5, 94, 0, 0, 1599, 1600, 3, 82, 41, 0, 1600, 1604, 1, 0, 0, 0, 1601, 1602, 5, 105, 0, 0, 1602, 1604, 3, 86, 43, 0, 1603, 1594, 1, 0, 0, 0, 1603, 1596, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1604, 81, 1, 0, 0, 0, 1605, 1606, 5, 2, 0, 0, 1606, 1611, 3, 84, 42, 0, 1607, 1608, 5, 6, 0, 0, 1608, 1610, 3, 84, 42, 0, 1609, 1607, 1, 0, 0, 0, 1610, 1613, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1614, 1615, 5, 3, 0, 0, 1615, 83, 1, 0, 0, 0, 1616, 1620, 3, 534, 267, 0, 1617, 1620, 5, 262, 0, 0, 1618, 1620, 5, 260, 0, 0, 1619, 1616, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1618, 1, 0, 0, 0, 1620, 85, 1, 0, 0, 0, 1621, 1622, 5, 2, 0, 0, 1622, 1623, 5, 533, 0, 0, 1623, 1624, 3, 202, 101, 0, 1624, 1625, 5, 6, 0, 0, 1625, 1626, 5, 534, 0, 0, 1626, 1627, 3, 202, 101, 0, 1627, 1628, 5, 3, 0, 0, 1628, 87, 1, 0, 0, 0, 1629, 1630, 3, 90, 45, 0, 1630, 1631, 3, 106, 53, 0, 1631, 1636, 1, 0, 0, 0, 1632, 1633, 5, 436, 0, 0, 1633, 1634, 5, 285, 0, 0, 1634, 1636, 3, 780, 390, 0, 1635, 1629, 1, 0, 0, 0, 1635, 1632, 1, 0, 0, 0, 1636, 89, 1, 0, 0, 0, 1637, 1638, 5, 435, 0, 0, 1638, 1639, 5, 285, 0, 0, 1639, 1640, 3, 780, 390, 0, 1640, 91, 1, 0, 0, 0, 1641, 1644, 5, 133, 0, 0, 1642, 1643, 5, 45, 0, 0, 1643, 1645, 3, 818, 409, 0, 1644, 1642, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 1875, 3, 142, 71, 0, 1647, 1648, 5, 138, 0, 0, 1648, 1649, 5, 45, 0, 0, 1649, 1653, 3, 818, 409, 0, 1650, 1652, 3, 272, 136, 0, 1651, 1650, 1, 0, 0, 0, 1652, 1655, 1, 0, 0, 0, 1653, 1651, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1875, 1, 0, 0, 0, 1655, 1653, 1, 0, 0, 0, 1656, 1657, 5, 372, 0, 0, 1657, 1658, 5, 45, 0, 0, 1658, 1875, 3, 818, 409, 0, 1659, 1660, 5, 191, 0, 0, 1660, 1662, 5, 45, 0, 0, 1661, 1663, 3, 422, 211, 0, 1662, 1661, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1666, 3, 818, 409, 0, 1665, 1667, 3, 96, 48, 0, 1666, 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1875, 1, 0, 0, 0, 1668, 1669, 5, 333, 0, 0, 1669, 1670, 5, 379, 0, 0, 1670, 1875, 7, 12, 0, 0, 1671, 1672, 5, 158, 0, 0, 1672, 1673, 5, 80, 0, 0, 1673, 1875, 3, 818, 409, 0, 1674, 1675, 5, 333, 0, 0, 1675, 1875, 7, 13, 0, 0, 1676, 1678, 5, 193, 0, 0, 1677, 1679, 7, 14, 0, 0, 1678, 1677, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1875, 5, 357, 0, 0, 1681, 1682, 5, 186, 0, 0, 1682, 1686, 5, 357, 0, 0, 1683, 1687, 5, 30, 0, 0, 1684, 1687, 5, 99, 0, 0, 1685, 1687, 3, 818, 409, 0, 1686, 1683, 1, 0, 0, 0, 1686, 1684, 1, 0, 0, 0, 1686, 1685, 1, 0, 0, 0, 1687, 1875, 1, 0, 0, 0, 1688, 1689, 5, 193, 0, 0, 1689, 1690, 7, 14, 0, 0, 1690, 1691, 5, 321, 0, 0, 1691, 1875, 3, 818, 409, 0, 1692, 1693, 5, 186, 0, 0, 1693, 1694, 5, 321, 0, 0, 1694, 1875, 3, 818, 409, 0, 1695, 1697, 5, 269, 0, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1699, 5, 228, 0, 0, 1699, 1875, 3, 780, 390, 0, 1700, 1701, 5, 275, 0, 0, 1701, 1875, 3, 316, 158, 0, 1702, 1703, 5, 77, 0, 0, 1703, 1875, 5, 275, 0, 0, 1704, 1705, 5, 282, 0, 0, 1705, 1706, 5, 94, 0, 0, 1706, 1875, 3, 814, 407, 0, 1707, 1708, 5, 333, 0, 0, 1708, 1709, 5, 351, 0, 0, 1709, 1875, 3, 768, 384, 0, 1710, 1711, 5, 312, 0, 0, 1711, 1716, 5, 219, 0, 0, 1712, 1717, 5, 270, 0, 0, 1713, 1717, 5, 113, 0, 0, 1714, 1717, 5, 53, 0, 0, 1715, 1717, 3, 180, 90, 0, 1716, 1712, 1, 0, 0, 0, 1716, 1713, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1715, 1, 0, 0, 0, 1717, 1875, 1, 0, 0, 0, 1718, 1725, 5, 193, 0, 0, 1719, 1725, 5, 186, 0, 0, 1720, 1722, 5, 269, 0, 0, 1721, 1720, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1725, 5, 209, 0, 0, 1724, 1718, 1, 0, 0, 0, 1724, 1719, 1, 0, 0, 0, 1724, 1721, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1727, 5, 414, 0, 0, 1727, 1728, 5, 251, 0, 0, 1728, 1875, 5, 327, 0, 0, 1729, 1731, 5, 191, 0, 0, 1730, 1732, 5, 44, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1734, 1, 0, 0, 0, 1733, 1735, 3, 422, 211, 0, 1734, 1733, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1738, 3, 800, 400, 0, 1737, 1739, 3, 96, 48, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1875, 1, 0, 0, 0, 1740, 1742, 5, 133, 0, 0, 1741, 1743, 5, 44, 0, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1746, 3, 294, 147, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1875, 3, 132, 66, 0, 1748, 1750, 5, 138, 0, 0, 1749, 1751, 5, 44, 0, 0, 1750, 1749, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1755, 3, 800, 400, 0, 1753, 1756, 3, 94, 47, 0, 1754, 1756, 3, 222, 111, 0, 1755, 1753, 1, 0, 0, 0, 1755, 1754, 1, 0, 0, 0, 1756, 1875, 1, 0, 0, 0, 1757, 1759, 5, 138, 0, 0, 1758, 1760, 5, 44, 0, 0, 1759, 1758, 1, 0, 0, 0, 1759, 1760, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 3, 800, 400, 0, 1762, 1763, 7, 15, 0, 0, 1763, 1764, 5, 77, 0, 0, 1764, 1765, 5, 78, 0, 0, 1765, 1875, 1, 0, 0, 0, 1766, 1768, 5, 138, 0, 0, 1767, 1769, 5, 44, 0, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1771, 3, 800, 400, 0, 1771, 1772, 5, 191, 0, 0, 1772, 1774, 5, 437, 0, 0, 1773, 1775, 3, 422, 211, 0, 1774, 1773, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1875, 1, 0, 0, 0, 1776, 1778, 5, 138, 0, 0, 1777, 1779, 5, 44, 0, 0, 1778, 1777, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1780, 1, 0, 0, 0, 1780, 1781, 3, 800, 400, 0, 1781, 1782, 5, 333, 0, 0, 1782, 1783, 5, 342, 0, 0, 1783, 1784, 3, 812, 406, 0, 1784, 1875, 1, 0, 0, 0, 1785, 1787, 5, 138, 0, 0, 1786, 1788, 5, 44, 0, 0, 1787, 1786, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1791, 3, 800, 400, 0, 1790, 1785, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 1793, 7, 16, 0, 0, 1793, 1875, 3, 100, 50, 0, 1794, 1796, 5, 138, 0, 0, 1795, 1797, 5, 44, 0, 0, 1796, 1795, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1799, 3, 800, 400, 0, 1799, 1800, 5, 333, 0, 0, 1800, 1801, 5, 345, 0, 0, 1801, 1802, 3, 818, 409, 0, 1802, 1875, 1, 0, 0, 0, 1803, 1805, 5, 138, 0, 0, 1804, 1806, 5, 44, 0, 0, 1805, 1804, 1, 0, 0, 0, 1805, 1806, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 3, 800, 400, 0, 1808, 1809, 5, 133, 0, 0, 1809, 1810, 5, 438, 0, 0, 1810, 1811, 3, 138, 69, 0, 1811, 1812, 5, 36, 0, 0, 1812, 1821, 5, 219, 0, 0, 1813, 1815, 5, 2, 0, 0, 1814, 1816, 3, 200, 100, 0, 1815, 1814, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 5, 3, 0, 0, 1820, 1822, 1, 0, 0, 0, 1821, 1813, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1875, 1, 0, 0, 0, 1823, 1825, 5, 138, 0, 0, 1824, 1826, 5, 44, 0, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1841, 3, 800, 400, 0, 1828, 1833, 5, 314, 0, 0, 1829, 1831, 5, 105, 0, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1834, 3, 202, 101, 0, 1833, 1830, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1842, 1, 0, 0, 0, 1835, 1839, 5, 333, 0, 0, 1836, 1840, 3, 200, 100, 0, 1837, 1838, 5, 438, 0, 0, 1838, 1840, 3, 138, 69, 0, 1839, 1836, 1, 0, 0, 0, 1839, 1837, 1, 0, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1828, 1, 0, 0, 0, 1841, 1835, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1841, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1875, 1, 0, 0, 0, 1845, 1847, 5, 138, 0, 0, 1846, 1848, 5, 44, 0, 0, 1847, 1846, 1, 0, 0, 0, 1847, 1848, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 1850, 3, 800, 400, 0, 1850, 1851, 5, 191, 0, 0, 1851, 1853, 5, 219, 0, 0, 1852, 1854, 3, 422, 211, 0, 1853, 1852, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1875, 1, 0, 0, 0, 1855, 1857, 5, 138, 0, 0, 1856, 1858, 5, 44, 0, 0, 1857, 1856, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1862, 3, 800, 400, 0, 1860, 1861, 5, 333, 0, 0, 1861, 1863, 5, 174, 0, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1865, 5, 360, 0, 0, 1865, 1867, 3, 652, 326, 0, 1866, 1868, 3, 98, 49, 0, 1867, 1866, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1870, 5, 100, 0, 0, 1870, 1872, 3, 674, 337, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1875, 1, 0, 0, 0, 1873, 1875, 3, 222, 111, 0, 1874, 1641, 1, 0, 0, 0, 1874, 1647, 1, 0, 0, 0, 1874, 1656, 1, 0, 0, 0, 1874, 1659, 1, 0, 0, 0, 1874, 1668, 1, 0, 0, 0, 1874, 1671, 1, 0, 0, 0, 1874, 1674, 1, 0, 0, 0, 1874, 1676, 1, 0, 0, 0, 1874, 1681, 1, 0, 0, 0, 1874, 1688, 1, 0, 0, 0, 1874, 1692, 1, 0, 0, 0, 1874, 1696, 1, 0, 0, 0, 1874, 1700, 1, 0, 0, 0, 1874, 1702, 1, 0, 0, 0, 1874, 1704, 1, 0, 0, 0, 1874, 1707, 1, 0, 0, 0, 1874, 1710, 1, 0, 0, 0, 1874, 1724, 1, 0, 0, 0, 1874, 1729, 1, 0, 0, 0, 1874, 1740, 1, 0, 0, 0, 1874, 1748, 1, 0, 0, 0, 1874, 1757, 1, 0, 0, 0, 1874, 1766, 1, 0, 0, 0, 1874, 1776, 1, 0, 0, 0, 1874, 1790, 1, 0, 0, 0, 1874, 1794, 1, 0, 0, 0, 1874, 1803, 1, 0, 0, 0, 1874, 1823, 1, 0, 0, 0, 1874, 1845, 1, 0, 0, 0, 1874, 1855, 1, 0, 0, 0, 1874, 1873, 1, 0, 0, 0, 1875, 93, 1, 0, 0, 0, 1876, 1877, 5, 333, 0, 0, 1877, 1878, 5, 53, 0, 0, 1878, 1882, 3, 674, 337, 0, 1879, 1880, 5, 191, 0, 0, 1880, 1882, 5, 53, 0, 0, 1881, 1876, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1882, 95, 1, 0, 0, 0, 1883, 1884, 7, 17, 0, 0, 1884, 97, 1, 0, 0, 0, 1885, 1886, 5, 43, 0, 0, 1886, 1887, 3, 316, 158, 0, 1887, 99, 1, 0, 0, 0, 1888, 1889, 5, 2, 0, 0, 1889, 1894, 3, 104, 52, 0, 1890, 1891, 5, 6, 0, 0, 1891, 1893, 3, 104, 52, 0, 1892, 1890, 1, 0, 0, 0, 1893, 1896, 1, 0, 0, 0, 1894, 1892, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1897, 1, 0, 0, 0, 1896, 1894, 1, 0, 0, 0, 1897, 1898, 5, 3, 0, 0, 1898, 101, 1, 0, 0, 0, 1899, 1900, 5, 105, 0, 0, 1900, 1901, 3, 100, 50, 0, 1901, 103, 1, 0, 0, 0, 1902, 1907, 3, 824, 412, 0, 1903, 1904, 5, 10, 0, 0, 1904, 1908, 3, 288, 144, 0, 1905, 1906, 5, 11, 0, 0, 1906, 1908, 3, 286, 143, 0, 1907, 1903, 1, 0, 0, 0, 1907, 1905, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 105, 1, 0, 0, 0, 1909, 1910, 5, 62, 0, 0, 1910, 1911, 5, 422, 0, 0, 1911, 1912, 5, 105, 0, 0, 1912, 1913, 5, 2, 0, 0, 1913, 1914, 3, 822, 411, 0, 1914, 1921, 5, 571, 0, 0, 1915, 1916, 5, 6, 0, 0, 1916, 1917, 3, 822, 411, 0, 1917, 1918, 5, 571, 0, 0, 1918, 1920, 1, 0, 0, 0, 1919, 1915, 1, 0, 0, 0, 1920, 1923, 1, 0, 0, 0, 1921, 1919, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1924, 1, 0, 0, 0, 1923, 1921, 1, 0, 0, 0, 1924, 1925, 5, 3, 0, 0, 1925, 1939, 1, 0, 0, 0, 1926, 1927, 5, 62, 0, 0, 1927, 1928, 5, 422, 0, 0, 1928, 1929, 5, 68, 0, 0, 1929, 1939, 3, 534, 267, 0, 1930, 1931, 5, 62, 0, 0, 1931, 1932, 5, 422, 0, 0, 1932, 1933, 5, 64, 0, 0, 1933, 1934, 3, 534, 267, 0, 1934, 1935, 5, 94, 0, 0, 1935, 1936, 3, 534, 267, 0, 1936, 1939, 1, 0, 0, 0, 1937, 1939, 5, 53, 0, 0, 1938, 1909, 1, 0, 0, 0, 1938, 1926, 1, 0, 0, 0, 1938, 1930, 1, 0, 0, 0, 1938, 1937, 1, 0, 0, 0, 1939, 107, 1, 0, 0, 0, 1940, 1941, 5, 138, 0, 0, 1941, 1942, 5, 360, 0, 0, 1942, 1943, 3, 316, 158, 0, 1943, 1948, 3, 110, 55, 0, 1944, 1945, 5, 6, 0, 0, 1945, 1947, 3, 110, 55, 0, 1946, 1944, 1, 0, 0, 0, 1947, 1950, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 109, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1951, 1952, 5, 133, 0, 0, 1952, 1953, 5, 143, 0, 0, 1953, 1955, 3, 644, 322, 0, 1954, 1956, 3, 96, 48, 0, 1955, 1954, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1982, 1, 0, 0, 0, 1957, 1958, 5, 191, 0, 0, 1958, 1960, 5, 143, 0, 0, 1959, 1961, 3, 422, 211, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1964, 3, 818, 409, 0, 1963, 1965, 3, 96, 48, 0, 1964, 1963, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1982, 1, 0, 0, 0, 1966, 1967, 5, 138, 0, 0, 1967, 1968, 5, 143, 0, 0, 1968, 1971, 3, 818, 409, 0, 1969, 1970, 5, 333, 0, 0, 1970, 1972, 5, 174, 0, 0, 1971, 1969, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1974, 5, 360, 0, 0, 1974, 1976, 3, 652, 326, 0, 1975, 1977, 3, 98, 49, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1979, 1, 0, 0, 0, 1978, 1980, 3, 96, 48, 0, 1979, 1978, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1982, 1, 0, 0, 0, 1981, 1951, 1, 0, 0, 0, 1981, 1957, 1, 0, 0, 0, 1981, 1966, 1, 0, 0, 0, 1982, 111, 1, 0, 0, 0, 1983, 1986, 5, 157, 0, 0, 1984, 1987, 3, 818, 409, 0, 1985, 1987, 5, 30, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1985, 1, 0, 0, 0, 1987, 113, 1, 0, 0, 0, 1988, 1990, 5, 169, 0, 0, 1989, 1991, 5, 107, 0, 0, 1990, 1989, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1994, 3, 774, 387, 0, 1993, 1995, 3, 144, 72, 0, 1994, 1993, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 7, 18, 0, 0, 1997, 1999, 5, 297, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2003, 1, 0, 0, 0, 2000, 2004, 3, 808, 404, 0, 2001, 2004, 5, 343, 0, 0, 2002, 2004, 5, 344, 0, 0, 2003, 2000, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2002, 1, 0, 0, 0, 2004, 2010, 1, 0, 0, 0, 2005, 2007, 5, 100, 0, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2009, 5, 184, 0, 0, 2009, 2011, 3, 808, 404, 0, 2010, 2006, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2013, 1, 0, 0, 0, 2012, 2014, 5, 105, 0, 0, 2013, 2012, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2017, 3, 116, 58, 0, 2016, 2018, 3, 638, 319, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2038, 1, 0, 0, 0, 2019, 2020, 5, 169, 0, 0, 2020, 2021, 5, 2, 0, 0, 2021, 2022, 3, 530, 265, 0, 2022, 2023, 5, 3, 0, 0, 2023, 2025, 5, 94, 0, 0, 2024, 2026, 5, 297, 0, 0, 2025, 2024, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2030, 1, 0, 0, 0, 2027, 2031, 3, 808, 404, 0, 2028, 2031, 5, 343, 0, 0, 2029, 2031, 5, 344, 0, 0, 2030, 2027, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2030, 2029, 1, 0, 0, 0, 2031, 2033, 1, 0, 0, 0, 2032, 2034, 5, 105, 0, 0, 2033, 2032, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2036, 3, 116, 58, 0, 2036, 2038, 1, 0, 0, 0, 2037, 1988, 1, 0, 0, 0, 2037, 2019, 1, 0, 0, 0, 2038, 115, 1, 0, 0, 0, 2039, 2063, 5, 107, 0, 0, 2040, 2063, 5, 112, 0, 0, 2041, 2043, 7, 19, 0, 0, 2042, 2044, 5, 36, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2063, 3, 808, 404, 0, 2046, 2063, 5, 171, 0, 0, 2047, 2063, 5, 216, 0, 0, 2048, 2049, 5, 209, 0, 0, 2049, 2052, 5, 298, 0, 0, 2050, 2053, 3, 148, 74, 0, 2051, 2053, 5, 9, 0, 0, 2052, 2050, 1, 0, 0, 0, 2052, 2051, 1, 0, 0, 0, 2053, 2063, 1, 0, 0, 0, 2054, 2056, 5, 209, 0, 0, 2055, 2057, 5, 77, 0, 0, 2056, 2055, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2059, 5, 78, 0, 0, 2059, 2063, 3, 148, 74, 0, 2060, 2061, 5, 194, 0, 0, 2061, 2063, 3, 808, 404, 0, 2062, 2039, 1, 0, 0, 0, 2062, 2040, 1, 0, 0, 0, 2062, 2041, 1, 0, 0, 0, 2062, 2046, 1, 0, 0, 0, 2062, 2047, 1, 0, 0, 0, 2062, 2048, 1, 0, 0, 0, 2062, 2054, 1, 0, 0, 0, 2062, 2060, 1, 0, 0, 0, 2063, 2066, 1, 0, 0, 0, 2064, 2062, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2079, 1, 0, 0, 0, 2066, 2064, 1, 0, 0, 0, 2067, 2068, 5, 2, 0, 0, 2068, 2073, 3, 118, 59, 0, 2069, 2070, 5, 6, 0, 0, 2070, 2072, 3, 118, 59, 0, 2071, 2069, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2076, 1, 0, 0, 0, 2075, 2073, 1, 0, 0, 0, 2076, 2077, 5, 3, 0, 0, 2077, 2079, 1, 0, 0, 0, 2078, 2064, 1, 0, 0, 0, 2078, 2067, 1, 0, 0, 0, 2079, 117, 1, 0, 0, 0, 2080, 2095, 3, 824, 412, 0, 2081, 2096, 3, 54, 27, 0, 2082, 2096, 3, 202, 101, 0, 2083, 2096, 5, 9, 0, 0, 2084, 2085, 5, 2, 0, 0, 2085, 2090, 3, 52, 26, 0, 2086, 2087, 5, 6, 0, 0, 2087, 2089, 3, 52, 26, 0, 2088, 2086, 1, 0, 0, 0, 2089, 2092, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 2093, 1, 0, 0, 0, 2092, 2090, 1, 0, 0, 0, 2093, 2094, 5, 3, 0, 0, 2094, 2096, 1, 0, 0, 0, 2095, 2081, 1, 0, 0, 0, 2095, 2082, 1, 0, 0, 0, 2095, 2083, 1, 0, 0, 0, 2095, 2084, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 119, 1, 0, 0, 0, 2097, 2099, 5, 46, 0, 0, 2098, 2100, 3, 122, 61, 0, 2099, 2098, 1, 0, 0, 0, 2099, 2100, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2103, 5, 92, 0, 0, 2102, 2104, 3, 294, 147, 0, 2103, 2102, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2171, 3, 772, 386, 0, 2106, 2108, 5, 2, 0, 0, 2107, 2109, 3, 126, 63, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 5, 3, 0, 0, 2111, 2113, 3, 164, 82, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2115, 1, 0, 0, 0, 2114, 2116, 3, 166, 83, 0, 2115, 2114, 1, 0, 0, 0, 2115, 2116, 1, 0, 0, 0, 2116, 2118, 1, 0, 0, 0, 2117, 2119, 3, 170, 85, 0, 2118, 2117, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2122, 3, 172, 86, 0, 2121, 2120, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2124, 1, 0, 0, 0, 2123, 2125, 3, 174, 87, 0, 2124, 2123, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 1, 0, 0, 0, 2126, 2128, 3, 176, 88, 0, 2127, 2126, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2172, 1, 0, 0, 0, 2129, 2130, 5, 275, 0, 0, 2130, 2132, 3, 316, 158, 0, 2131, 2133, 3, 124, 62, 0, 2132, 2131, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2135, 1, 0, 0, 0, 2134, 2136, 3, 166, 83, 0, 2135, 2134, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2138, 1, 0, 0, 0, 2137, 2139, 3, 170, 85, 0, 2138, 2137, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2141, 1, 0, 0, 0, 2140, 2142, 3, 172, 86, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2144, 1, 0, 0, 0, 2143, 2145, 3, 174, 87, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2148, 3, 176, 88, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2172, 1, 0, 0, 0, 2149, 2150, 5, 285, 0, 0, 2150, 2151, 5, 275, 0, 0, 2151, 2153, 3, 780, 390, 0, 2152, 2154, 3, 124, 62, 0, 2153, 2152, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2157, 3, 106, 53, 0, 2156, 2158, 3, 166, 83, 0, 2157, 2156, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 1, 0, 0, 0, 2159, 2161, 3, 170, 85, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2163, 1, 0, 0, 0, 2162, 2164, 3, 172, 86, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 1, 0, 0, 0, 2165, 2167, 3, 174, 87, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2169, 1, 0, 0, 0, 2168, 2170, 3, 176, 88, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 1, 0, 0, 0, 2171, 2106, 1, 0, 0, 0, 2171, 2129, 1, 0, 0, 0, 2171, 2149, 1, 0, 0, 0, 2172, 121, 1, 0, 0, 0, 2173, 2179, 5, 354, 0, 0, 2174, 2179, 5, 352, 0, 0, 2175, 2176, 7, 20, 0, 0, 2176, 2179, 7, 21, 0, 0, 2177, 2179, 5, 367, 0, 0, 2178, 2173, 1, 0, 0, 0, 2178, 2174, 1, 0, 0, 0, 2178, 2175, 1, 0, 0, 0, 2178, 2177, 1, 0, 0, 0, 2179, 123, 1, 0, 0, 0, 2180, 2181, 5, 2, 0, 0, 2181, 2186, 3, 130, 65, 0, 2182, 2183, 5, 6, 0, 0, 2183, 2185, 3, 130, 65, 0, 2184, 2182, 1, 0, 0, 0, 2185, 2188, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 2189, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0, 2189, 2190, 5, 3, 0, 0, 2190, 125, 1, 0, 0, 0, 2191, 2196, 3, 128, 64, 0, 2192, 2193, 5, 6, 0, 0, 2193, 2195, 3, 128, 64, 0, 2194, 2192, 1, 0, 0, 0, 2195, 2198, 1, 0, 0, 0, 2196, 2194, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 127, 1, 0, 0, 0, 2198, 2196, 1, 0, 0, 0, 2199, 2215, 3, 132, 66, 0, 2200, 2201, 5, 120, 0, 0, 2201, 2206, 3, 780, 390, 0, 2202, 2203, 7, 22, 0, 0, 2203, 2205, 3, 140, 70, 0, 2204, 2202, 1, 0, 0, 0, 2205, 2208, 1, 0, 0, 0, 2206, 2204, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2215, 1, 0, 0, 0, 2208, 2206, 1, 0, 0, 0, 2209, 2210, 5, 45, 0, 0, 2210, 2212, 3, 818, 409, 0, 2211, 2209, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 3, 142, 71, 0, 2214, 2199, 1, 0, 0, 0, 2214, 2200, 1, 0, 0, 0, 2214, 2211, 1, 0, 0, 0, 2215, 129, 1, 0, 0, 0, 2216, 2219, 3, 802, 401, 0, 2217, 2218, 5, 105, 0, 0, 2218, 2220, 5, 280, 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2224, 1, 0, 0, 0, 2221, 2223, 3, 134, 67, 0, 2222, 2221, 1, 0, 0, 0, 2223, 2226, 1, 0, 0, 0, 2224, 2222, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2233, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2227, 2228, 5, 45, 0, 0, 2228, 2230, 3, 818, 409, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2231, 1, 0, 0, 0, 2231, 2233, 3, 142, 71, 0, 2232, 2216, 1, 0, 0, 0, 2232, 2229, 1, 0, 0, 0, 2233, 131, 1, 0, 0, 0, 2234, 2235, 3, 802, 401, 0, 2235, 2237, 3, 652, 326, 0, 2236, 2238, 3, 220, 110, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2248, 1, 0, 0, 0, 2239, 2246, 5, 345, 0, 0, 2240, 2247, 5, 544, 0, 0, 2241, 2247, 5, 205, 0, 0, 2242, 2247, 5, 545, 0, 0, 2243, 2247, 5, 546, 0, 0, 2244, 2247, 5, 53, 0, 0, 2245, 2247, 3, 818, 409, 0, 2246, 2240, 1, 0, 0, 0, 2246, 2241, 1, 0, 0, 0, 2246, 2242, 1, 0, 0, 0, 2246, 2243, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2246, 2245, 1, 0, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2239, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2252, 1, 0, 0, 0, 2250, 2251, 5, 543, 0, 0, 2251, 2253, 3, 818, 409, 0, 2252, 2250, 1, 0, 0, 0, 2252, 2253, 1, 0, 0, 0, 2253, 2255, 1, 0, 0, 0, 2254, 2256, 3, 98, 49, 0, 2255, 2254, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2259, 1, 0, 0, 0, 2257, 2258, 5, 105, 0, 0, 2258, 2260, 5, 280, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2264, 1, 0, 0, 0, 2261, 2263, 3, 134, 67, 0, 2262, 2261, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 133, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2268, 5, 45, 0, 0, 2268, 2270, 3, 818, 409, 0, 2269, 2267, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 2276, 3, 136, 68, 0, 2272, 2274, 5, 77, 0, 0, 2273, 2272, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 5, 54, 0, 0, 2276, 2273, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2280, 1, 0, 0, 0, 2278, 2279, 5, 69, 0, 0, 2279, 2281, 7, 9, 0, 0, 2280, 2278, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 135, 1, 0, 0, 0, 2282, 2284, 5, 77, 0, 0, 2283, 2282, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2363, 5, 78, 0, 0, 2286, 2288, 5, 98, 0, 0, 2287, 2289, 3, 400, 200, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2291, 1, 0, 0, 0, 2290, 2292, 3, 178, 89, 0, 2291, 2290, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2363, 1, 0, 0, 0, 2293, 2299, 5, 98, 0, 0, 2294, 2296, 5, 273, 0, 0, 2295, 2297, 5, 77, 0, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2300, 5, 56, 0, 0, 2299, 2294, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2302, 5, 441, 0, 0, 2302, 2304, 3, 360, 180, 0, 2303, 2301, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 1, 0, 0, 0, 2305, 2307, 3, 572, 286, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2309, 1, 0, 0, 0, 2308, 2310, 3, 178, 89, 0, 2309, 2308, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2363, 1, 0, 0, 0, 2311, 2312, 5, 85, 0, 0, 2312, 2314, 5, 245, 0, 0, 2313, 2315, 3, 400, 200, 0, 2314, 2313, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, 1, 0, 0, 0, 2316, 2318, 3, 178, 89, 0, 2317, 2316, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2363, 1, 0, 0, 0, 2319, 2320, 5, 42, 0, 0, 2320, 2321, 5, 2, 0, 0, 2321, 2322, 3, 674, 337, 0, 2322, 2325, 5, 3, 0, 0, 2323, 2324, 5, 269, 0, 0, 2324, 2326, 5, 228, 0, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2363, 1, 0, 0, 0, 2327, 2328, 5, 53, 0, 0, 2328, 2363, 3, 682, 341, 0, 2329, 2330, 5, 438, 0, 0, 2330, 2331, 3, 138, 69, 0, 2331, 2348, 5, 36, 0, 0, 2332, 2341, 5, 219, 0, 0, 2333, 2335, 5, 2, 0, 0, 2334, 2336, 3, 200, 100, 0, 2335, 2334, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2339, 1, 0, 0, 0, 2339, 2340, 5, 3, 0, 0, 2340, 2342, 1, 0, 0, 0, 2341, 2333, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2349, 1, 0, 0, 0, 2343, 2344, 5, 2, 0, 0, 2344, 2345, 3, 674, 337, 0, 2345, 2346, 5, 3, 0, 0, 2346, 2347, 5, 440, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2332, 1, 0, 0, 0, 2348, 2343, 1, 0, 0, 0, 2349, 2363, 1, 0, 0, 0, 2350, 2351, 5, 86, 0, 0, 2351, 2353, 3, 780, 390, 0, 2352, 2354, 3, 144, 72, 0, 2353, 2352, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2357, 3, 152, 76, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2360, 3, 156, 78, 0, 2359, 2358, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2363, 1, 0, 0, 0, 2361, 2363, 3, 98, 49, 0, 2362, 2283, 1, 0, 0, 0, 2362, 2286, 1, 0, 0, 0, 2362, 2293, 1, 0, 0, 0, 2362, 2311, 1, 0, 0, 0, 2362, 2319, 1, 0, 0, 0, 2362, 2327, 1, 0, 0, 0, 2362, 2329, 1, 0, 0, 0, 2362, 2350, 1, 0, 0, 0, 2362, 2361, 1, 0, 0, 0, 2363, 137, 1, 0, 0, 0, 2364, 2368, 5, 139, 0, 0, 2365, 2366, 5, 147, 0, 0, 2366, 2368, 5, 53, 0, 0, 2367, 2364, 1, 0, 0, 0, 2367, 2365, 1, 0, 0, 0, 2368, 139, 1, 0, 0, 0, 2369, 2370, 7, 23, 0, 0, 2370, 141, 1, 0, 0, 0, 2371, 2372, 5, 42, 0, 0, 2372, 2373, 5, 2, 0, 0, 2373, 2374, 3, 674, 337, 0, 2374, 2378, 5, 3, 0, 0, 2375, 2377, 3, 272, 136, 0, 2376, 2375, 1, 0, 0, 0, 2377, 2380, 1, 0, 0, 0, 2378, 2376, 1, 0, 0, 0, 2378, 2379, 1, 0, 0, 0, 2379, 2468, 1, 0, 0, 0, 2380, 2378, 1, 0, 0, 0, 2381, 2385, 5, 98, 0, 0, 2382, 2383, 5, 85, 0, 0, 2383, 2385, 5, 245, 0, 0, 2384, 2381, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2385, 2409, 1, 0, 0, 0, 2386, 2388, 3, 144, 72, 0, 2387, 2389, 3, 150, 75, 0, 2388, 2387, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2391, 1, 0, 0, 0, 2390, 2392, 3, 400, 200, 0, 2391, 2390, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2395, 3, 178, 89, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2399, 1, 0, 0, 0, 2396, 2398, 3, 272, 136, 0, 2397, 2396, 1, 0, 0, 0, 2398, 2401, 1, 0, 0, 0, 2399, 2397, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2410, 1, 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2402, 2406, 3, 180, 90, 0, 2403, 2405, 3, 272, 136, 0, 2404, 2403, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2410, 1, 0, 0, 0, 2408, 2406, 1, 0, 0, 0, 2409, 2386, 1, 0, 0, 0, 2409, 2402, 1, 0, 0, 0, 2410, 2468, 1, 0, 0, 0, 2411, 2413, 5, 199, 0, 0, 2412, 2414, 3, 170, 85, 0, 2413, 2412, 1, 0, 0, 0, 2413, 2414, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 5, 2, 0, 0, 2416, 2421, 3, 154, 77, 0, 2417, 2418, 5, 6, 0, 0, 2418, 2420, 3, 154, 77, 0, 2419, 2417, 1, 0, 0, 0, 2420, 2423, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2424, 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2424, 2426, 5, 3, 0, 0, 2425, 2427, 3, 150, 75, 0, 2426, 2425, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2429, 1, 0, 0, 0, 2428, 2430, 3, 400, 200, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2432, 1, 0, 0, 0, 2431, 2433, 3, 178, 89, 0, 2432, 2431, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2439, 1, 0, 0, 0, 2434, 2435, 5, 103, 0, 0, 2435, 2436, 5, 2, 0, 0, 2436, 2437, 3, 674, 337, 0, 2437, 2438, 5, 3, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2434, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2444, 1, 0, 0, 0, 2441, 2443, 3, 272, 136, 0, 2442, 2441, 1, 0, 0, 0, 2443, 2446, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2468, 1, 0, 0, 0, 2446, 2444, 1, 0, 0, 0, 2447, 2448, 5, 63, 0, 0, 2448, 2449, 5, 245, 0, 0, 2449, 2450, 3, 144, 72, 0, 2450, 2451, 5, 86, 0, 0, 2451, 2453, 3, 780, 390, 0, 2452, 2454, 3, 144, 72, 0, 2453, 2452, 1, 0, 0, 0, 2453, 2454, 1, 0, 0, 0, 2454, 2456, 1, 0, 0, 0, 2455, 2457, 3, 152, 76, 0, 2456, 2455, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2459, 1, 0, 0, 0, 2458, 2460, 3, 156, 78, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2464, 1, 0, 0, 0, 2461, 2463, 3, 272, 136, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2468, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2467, 2371, 1, 0, 0, 0, 2467, 2384, 1, 0, 0, 0, 2467, 2411, 1, 0, 0, 0, 2467, 2447, 1, 0, 0, 0, 2468, 143, 1, 0, 0, 0, 2469, 2470, 5, 2, 0, 0, 2470, 2471, 3, 148, 74, 0, 2471, 2472, 5, 3, 0, 0, 2472, 145, 1, 0, 0, 0, 2473, 2474, 5, 2, 0, 0, 2474, 2479, 3, 802, 401, 0, 2475, 2476, 5, 6, 0, 0, 2476, 2478, 3, 802, 401, 0, 2477, 2475, 1, 0, 0, 0, 2478, 2481, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2482, 1, 0, 0, 0, 2481, 2479, 1, 0, 0, 0, 2482, 2483, 5, 3, 0, 0, 2483, 147, 1, 0, 0, 0, 2484, 2489, 3, 800, 400, 0, 2485, 2486, 5, 6, 0, 0, 2486, 2488, 3, 800, 400, 0, 2487, 2485, 1, 0, 0, 0, 2488, 2491, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 149, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2492, 2493, 5, 441, 0, 0, 2493, 2494, 3, 144, 72, 0, 2494, 151, 1, 0, 0, 0, 2495, 2496, 5, 258, 0, 0, 2496, 2497, 7, 24, 0, 0, 2497, 153, 1, 0, 0, 0, 2498, 2499, 3, 362, 181, 0, 2499, 2506, 5, 105, 0, 0, 2500, 2507, 3, 414, 207, 0, 2501, 2502, 5, 278, 0, 0, 2502, 2503, 5, 2, 0, 0, 2503, 2504, 3, 414, 207, 0, 2504, 2505, 5, 3, 0, 0, 2505, 2507, 1, 0, 0, 0, 2506, 2500, 1, 0, 0, 0, 2506, 2501, 1, 0, 0, 0, 2507, 155, 1, 0, 0, 0, 2508, 2510, 3, 158, 79, 0, 2509, 2511, 3, 160, 80, 0, 2510, 2509, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2517, 1, 0, 0, 0, 2512, 2514, 3, 160, 80, 0, 2513, 2515, 3, 158, 79, 0, 2514, 2513, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2508, 1, 0, 0, 0, 2516, 2512, 1, 0, 0, 0, 2517, 157, 1, 0, 0, 0, 2518, 2519, 5, 80, 0, 0, 2519, 2520, 5, 369, 0, 0, 2520, 2521, 3, 162, 81, 0, 2521, 159, 1, 0, 0, 0, 2522, 2523, 5, 80, 0, 0, 2523, 2524, 5, 182, 0, 0, 2524, 2525, 3, 162, 81, 0, 2525, 161, 1, 0, 0, 0, 2526, 2527, 5, 269, 0, 0, 2527, 2536, 5, 132, 0, 0, 2528, 2536, 5, 315, 0, 0, 2529, 2536, 5, 150, 0, 0, 2530, 2531, 5, 333, 0, 0, 2531, 2533, 7, 25, 0, 0, 2532, 2534, 3, 148, 74, 0, 2533, 2532, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2536, 1, 0, 0, 0, 2535, 2526, 1, 0, 0, 0, 2535, 2528, 1, 0, 0, 0, 2535, 2529, 1, 0, 0, 0, 2535, 2530, 1, 0, 0, 0, 2536, 163, 1, 0, 0, 0, 2537, 2538, 5, 238, 0, 0, 2538, 2539, 5, 2, 0, 0, 2539, 2540, 3, 760, 380, 0, 2540, 2541, 5, 3, 0, 0, 2541, 165, 1, 0, 0, 0, 2542, 2543, 5, 285, 0, 0, 2543, 2544, 5, 147, 0, 0, 2544, 2545, 3, 818, 409, 0, 2545, 2546, 5, 2, 0, 0, 2546, 2551, 3, 168, 84, 0, 2547, 2548, 5, 6, 0, 0, 2548, 2550, 3, 168, 84, 0, 2549, 2547, 1, 0, 0, 0, 2550, 2553, 1, 0, 0, 0, 2551, 2549, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2554, 1, 0, 0, 0, 2553, 2551, 1, 0, 0, 0, 2554, 2555, 5, 3, 0, 0, 2555, 167, 1, 0, 0, 0, 2556, 2563, 3, 800, 400, 0, 2557, 2563, 3, 688, 344, 0, 2558, 2559, 5, 2, 0, 0, 2559, 2560, 3, 674, 337, 0, 2560, 2561, 5, 3, 0, 0, 2561, 2563, 1, 0, 0, 0, 2562, 2556, 1, 0, 0, 0, 2562, 2557, 1, 0, 0, 0, 2562, 2558, 1, 0, 0, 0, 2563, 2565, 1, 0, 0, 0, 2564, 2566, 3, 98, 49, 0, 2565, 2564, 1, 0, 0, 0, 2565, 2566, 1, 0, 0, 0, 2566, 2568, 1, 0, 0, 0, 2567, 2569, 3, 316, 158, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 169, 1, 0, 0, 0, 2570, 2571, 5, 100, 0, 0, 2571, 2572, 3, 818, 409, 0, 2572, 171, 1, 0, 0, 0, 2573, 2574, 5, 105, 0, 0, 2574, 2578, 3, 100, 50, 0, 2575, 2576, 7, 26, 0, 0, 2576, 2578, 5, 277, 0, 0, 2577, 2573, 1, 0, 0, 0, 2577, 2575, 1, 0, 0, 0, 2578, 173, 1, 0, 0, 0, 2579, 2580, 5, 80, 0, 0, 2580, 2586, 5, 161, 0, 0, 2581, 2587, 5, 191, 0, 0, 2582, 2583, 5, 182, 0, 0, 2583, 2587, 5, 320, 0, 0, 2584, 2585, 5, 292, 0, 0, 2585, 2587, 5, 320, 0, 0, 2586, 2581, 1, 0, 0, 0, 2586, 2582, 1, 0, 0, 0, 2586, 2584, 1, 0, 0, 0, 2587, 175, 1, 0, 0, 0, 2588, 2589, 5, 351, 0, 0, 2589, 2590, 3, 770, 385, 0, 2590, 177, 1, 0, 0, 0, 2591, 2592, 5, 100, 0, 0, 2592, 2593, 5, 226, 0, 0, 2593, 2594, 3, 176, 88, 0, 2594, 179, 1, 0, 0, 0, 2595, 2596, 5, 100, 0, 0, 2596, 2597, 5, 226, 0, 0, 2597, 2598, 3, 818, 409, 0, 2598, 181, 1, 0, 0, 0, 2599, 2600, 5, 46, 0, 0, 2600, 2605, 5, 342, 0, 0, 2601, 2603, 3, 294, 147, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 3, 316, 158, 0, 2605, 2602, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2608, 1, 0, 0, 0, 2607, 2609, 3, 144, 72, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 2620, 5, 80, 0, 0, 2611, 2616, 3, 732, 366, 0, 2612, 2613, 5, 6, 0, 0, 2613, 2615, 3, 732, 366, 0, 2614, 2612, 1, 0, 0, 0, 2615, 2618, 1, 0, 0, 0, 2616, 2614, 1, 0, 0, 0, 2616, 2617, 1, 0, 0, 0, 2617, 2621, 1, 0, 0, 0, 2618, 2616, 1, 0, 0, 0, 2619, 2621, 3, 730, 365, 0, 2620, 2611, 1, 0, 0, 0, 2620, 2619, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2623, 3, 610, 305, 0, 2623, 183, 1, 0, 0, 0, 2624, 2625, 5, 138, 0, 0, 2625, 2627, 5, 342, 0, 0, 2626, 2628, 3, 422, 211, 0, 2627, 2626, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2630, 3, 316, 158, 0, 2630, 2631, 5, 333, 0, 0, 2631, 2632, 5, 342, 0, 0, 2632, 2633, 3, 812, 406, 0, 2633, 185, 1, 0, 0, 0, 2634, 2636, 5, 46, 0, 0, 2635, 2637, 3, 122, 61, 0, 2636, 2635, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 5, 92, 0, 0, 2639, 2641, 3, 294, 147, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2643, 3, 188, 94, 0, 2643, 2644, 5, 36, 0, 0, 2644, 2646, 3, 560, 280, 0, 2645, 2647, 3, 190, 95, 0, 2646, 2645, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 187, 1, 0, 0, 0, 2648, 2650, 3, 772, 386, 0, 2649, 2651, 3, 146, 73, 0, 2650, 2649, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 2653, 1, 0, 0, 0, 2652, 2654, 3, 170, 85, 0, 2653, 2652, 1, 0, 0, 0, 2653, 2654, 1, 0, 0, 0, 2654, 2656, 1, 0, 0, 0, 2655, 2657, 3, 172, 86, 0, 2656, 2655, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2660, 3, 174, 87, 0, 2659, 2658, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2662, 1, 0, 0, 0, 2661, 2663, 3, 176, 88, 0, 2662, 2661, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 189, 1, 0, 0, 0, 2664, 2668, 5, 105, 0, 0, 2665, 2669, 5, 174, 0, 0, 2666, 2667, 5, 269, 0, 0, 2667, 2669, 5, 174, 0, 0, 2668, 2665, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2669, 191, 1, 0, 0, 0, 2670, 2672, 5, 46, 0, 0, 2671, 2673, 5, 367, 0, 0, 2672, 2671, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2675, 5, 259, 0, 0, 2675, 2677, 5, 376, 0, 0, 2676, 2678, 3, 294, 147, 0, 2677, 2676, 1, 0, 0, 0, 2677, 2678, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2681, 3, 776, 388, 0, 2680, 2682, 3, 146, 73, 0, 2681, 2680, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2684, 1, 0, 0, 0, 2683, 2685, 3, 170, 85, 0, 2684, 2683, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2687, 1, 0, 0, 0, 2686, 2688, 3, 102, 51, 0, 2687, 2686, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2690, 1, 0, 0, 0, 2689, 2691, 3, 176, 88, 0, 2690, 2689, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2693, 5, 36, 0, 0, 2693, 2695, 3, 560, 280, 0, 2694, 2696, 3, 190, 95, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 193, 1, 0, 0, 0, 2697, 2698, 5, 305, 0, 0, 2698, 2699, 5, 259, 0, 0, 2699, 2701, 5, 376, 0, 0, 2700, 2702, 5, 109, 0, 0, 2701, 2700, 1, 0, 0, 0, 2701, 2702, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 3, 778, 389, 0, 2704, 2706, 3, 190, 95, 0, 2705, 2704, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 195, 1, 0, 0, 0, 2707, 2709, 5, 46, 0, 0, 2708, 2710, 3, 122, 61, 0, 2709, 2708, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2711, 1, 0, 0, 0, 2711, 2713, 5, 328, 0, 0, 2712, 2714, 3, 294, 147, 0, 2713, 2712, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 2721, 3, 780, 390, 0, 2716, 2718, 3, 200, 100, 0, 2717, 2716, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2717, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 2722, 1, 0, 0, 0, 2721, 2717, 1, 0, 0, 0, 2721, 2722, 1, 0, 0, 0, 2722, 197, 1, 0, 0, 0, 2723, 2724, 5, 138, 0, 0, 2724, 2726, 5, 328, 0, 0, 2725, 2727, 3, 422, 211, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2730, 3, 780, 390, 0, 2729, 2731, 3, 200, 100, 0, 2730, 2729, 1, 0, 0, 0, 2731, 2732, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 199, 1, 0, 0, 0, 2734, 2735, 5, 36, 0, 0, 2735, 2768, 3, 654, 327, 0, 2736, 2738, 5, 148, 0, 0, 2737, 2739, 3, 202, 101, 0, 2738, 2737, 1, 0, 0, 0, 2738, 2739, 1, 0, 0, 0, 2739, 2768, 1, 0, 0, 0, 2740, 2742, 5, 225, 0, 0, 2741, 2743, 5, 147, 0, 0, 2742, 2741, 1, 0, 0, 0, 2742, 2743, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2768, 3, 202, 101, 0, 2745, 2746, 7, 27, 0, 0, 2746, 2768, 3, 202, 101, 0, 2747, 2748, 5, 269, 0, 0, 2748, 2768, 7, 28, 0, 0, 2749, 2750, 5, 281, 0, 0, 2750, 2751, 5, 147, 0, 0, 2751, 2768, 3, 800, 400, 0, 2752, 2753, 5, 328, 0, 0, 2753, 2754, 5, 266, 0, 0, 2754, 2768, 3, 316, 158, 0, 2755, 2757, 5, 340, 0, 0, 2756, 2758, 5, 105, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2768, 3, 202, 101, 0, 2760, 2762, 5, 314, 0, 0, 2761, 2763, 5, 105, 0, 0, 2762, 2761, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2765, 1, 0, 0, 0, 2764, 2766, 3, 202, 101, 0, 2765, 2764, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2768, 1, 0, 0, 0, 2767, 2734, 1, 0, 0, 0, 2767, 2736, 1, 0, 0, 0, 2767, 2740, 1, 0, 0, 0, 2767, 2745, 1, 0, 0, 0, 2767, 2747, 1, 0, 0, 0, 2767, 2749, 1, 0, 0, 0, 2767, 2752, 1, 0, 0, 0, 2767, 2755, 1, 0, 0, 0, 2767, 2760, 1, 0, 0, 0, 2768, 201, 1, 0, 0, 0, 2769, 2771, 7, 29, 0, 0, 2770, 2769, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2772, 1, 0, 0, 0, 2772, 2775, 5, 573, 0, 0, 2773, 2775, 3, 812, 406, 0, 2774, 2770, 1, 0, 0, 0, 2774, 2773, 1, 0, 0, 0, 2775, 203, 1, 0, 0, 0, 2776, 2778, 5, 46, 0, 0, 2777, 2779, 3, 366, 183, 0, 2778, 2777, 1, 0, 0, 0, 2778, 2779, 1, 0, 0, 0, 2779, 2781, 1, 0, 0, 0, 2780, 2782, 5, 359, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2785, 5, 295, 0, 0, 2784, 2783, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 2787, 5, 247, 0, 0, 2787, 2800, 3, 818, 409, 0, 2788, 2789, 5, 215, 0, 0, 2789, 2792, 3, 316, 158, 0, 2790, 2791, 5, 239, 0, 0, 2791, 2793, 3, 316, 158, 0, 2792, 2790, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2798, 1, 0, 0, 0, 2794, 2795, 5, 373, 0, 0, 2795, 2799, 3, 316, 158, 0, 2796, 2797, 5, 269, 0, 0, 2797, 2799, 5, 373, 0, 0, 2798, 2794, 1, 0, 0, 0, 2798, 2796, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2801, 1, 0, 0, 0, 2800, 2788, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 205, 1, 0, 0, 0, 2802, 2803, 5, 46, 0, 0, 2803, 2806, 3, 176, 88, 0, 2804, 2805, 5, 282, 0, 0, 2805, 2807, 3, 814, 407, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 5, 255, 0, 0, 2809, 2811, 3, 808, 404, 0, 2810, 2812, 3, 102, 51, 0, 2811, 2810, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 207, 1, 0, 0, 0, 2813, 2814, 5, 46, 0, 0, 2814, 2816, 5, 204, 0, 0, 2815, 2817, 3, 294, 147, 0, 2816, 2815, 1, 0, 0, 0, 2816, 2817, 1, 0, 0, 0, 2817, 2818, 1, 0, 0, 0, 2818, 2820, 3, 818, 409, 0, 2819, 2821, 5, 105, 0, 0, 2820, 2819, 1, 0, 0, 0, 2820, 2821, 1, 0, 0, 0, 2821, 2829, 1, 0, 0, 0, 2822, 2823, 5, 323, 0, 0, 2823, 2828, 3, 790, 395, 0, 2824, 2825, 7, 30, 0, 0, 2825, 2828, 3, 58, 29, 0, 2826, 2828, 5, 150, 0, 0, 2827, 2822, 1, 0, 0, 0, 2827, 2824, 1, 0, 0, 0, 2827, 2826, 1, 0, 0, 0, 2828, 2831, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2829, 2830, 1, 0, 0, 0, 2830, 209, 1, 0, 0, 0, 2831, 2829, 1, 0, 0, 0, 2832, 2833, 5, 138, 0, 0, 2833, 2834, 5, 204, 0, 0, 2834, 2835, 3, 818, 409, 0, 2835, 2840, 5, 369, 0, 0, 2836, 2837, 5, 94, 0, 0, 2837, 2839, 3, 58, 29, 0, 2838, 2836, 1, 0, 0, 0, 2839, 2842, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 211, 1, 0, 0, 0, 2842, 2840, 1, 0, 0, 0, 2843, 2844, 5, 138, 0, 0, 2844, 2845, 5, 204, 0, 0, 2845, 2846, 3, 818, 409, 0, 2846, 2879, 7, 6, 0, 0, 2847, 2848, 5, 443, 0, 0, 2848, 2849, 5, 62, 0, 0, 2849, 2850, 3, 652, 326, 0, 2850, 2851, 5, 247, 0, 0, 2851, 2852, 3, 818, 409, 0, 2852, 2880, 1, 0, 0, 0, 2853, 2854, 5, 442, 0, 0, 2854, 2880, 3, 374, 187, 0, 2855, 2856, 5, 296, 0, 0, 2856, 2880, 3, 378, 189, 0, 2857, 2858, 5, 278, 0, 0, 2858, 2859, 7, 31, 0, 0, 2859, 2860, 3, 316, 158, 0, 2860, 2861, 3, 170, 85, 0, 2861, 2880, 1, 0, 0, 0, 2862, 2863, 5, 278, 0, 0, 2863, 2880, 3, 416, 208, 0, 2864, 2865, 5, 211, 0, 0, 2865, 2880, 3, 382, 191, 0, 2866, 2867, 7, 32, 0, 0, 2867, 2880, 3, 652, 326, 0, 2868, 2869, 5, 41, 0, 0, 2869, 2870, 5, 2, 0, 0, 2870, 2871, 3, 652, 326, 0, 2871, 2872, 5, 36, 0, 0, 2872, 2873, 3, 652, 326, 0, 2873, 2874, 5, 3, 0, 0, 2874, 2880, 1, 0, 0, 0, 2875, 2876, 5, 136, 0, 0, 2876, 2880, 3, 394, 197, 0, 2877, 2880, 3, 312, 156, 0, 2878, 2880, 3, 310, 155, 0, 2879, 2847, 1, 0, 0, 0, 2879, 2853, 1, 0, 0, 0, 2879, 2855, 1, 0, 0, 0, 2879, 2857, 1, 0, 0, 0, 2879, 2862, 1, 0, 0, 0, 2879, 2864, 1, 0, 0, 0, 2879, 2866, 1, 0, 0, 0, 2879, 2868, 1, 0, 0, 0, 2879, 2875, 1, 0, 0, 0, 2879, 2877, 1, 0, 0, 0, 2879, 2878, 1, 0, 0, 0, 2880, 213, 1, 0, 0, 0, 2881, 2882, 5, 46, 0, 0, 2882, 2883, 5, 63, 0, 0, 2883, 2884, 5, 174, 0, 0, 2884, 2885, 5, 381, 0, 0, 2885, 2891, 3, 818, 409, 0, 2886, 2888, 3, 216, 108, 0, 2887, 2886, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2887, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2892, 1, 0, 0, 0, 2891, 2887, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2894, 1, 0, 0, 0, 2893, 2895, 3, 220, 110, 0, 2894, 2893, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 215, 1, 0, 0, 0, 2896, 2898, 7, 33, 0, 0, 2897, 2899, 3, 316, 158, 0, 2898, 2897, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 2903, 1, 0, 0, 0, 2900, 2901, 5, 269, 0, 0, 2901, 2903, 7, 33, 0, 0, 2902, 2896, 1, 0, 0, 0, 2902, 2900, 1, 0, 0, 0, 2903, 217, 1, 0, 0, 0, 2904, 2905, 5, 138, 0, 0, 2905, 2906, 5, 63, 0, 0, 2906, 2907, 5, 174, 0, 0, 2907, 2908, 5, 381, 0, 0, 2908, 2922, 3, 818, 409, 0, 2909, 2911, 3, 216, 108, 0, 2910, 2909, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 1, 0, 0, 0, 2914, 2910, 1, 0, 0, 0, 2914, 2915, 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 2923, 3, 222, 111, 0, 2917, 2919, 3, 216, 108, 0, 2918, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0, 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2914, 1, 0, 0, 0, 2922, 2918, 1, 0, 0, 0, 2923, 219, 1, 0, 0, 0, 2924, 2925, 5, 280, 0, 0, 2925, 2926, 5, 2, 0, 0, 2926, 2931, 3, 226, 113, 0, 2927, 2928, 5, 6, 0, 0, 2928, 2930, 3, 226, 113, 0, 2929, 2927, 1, 0, 0, 0, 2930, 2933, 1, 0, 0, 0, 2931, 2929, 1, 0, 0, 0, 2931, 2932, 1, 0, 0, 0, 2932, 2934, 1, 0, 0, 0, 2933, 2931, 1, 0, 0, 0, 2934, 2935, 5, 3, 0, 0, 2935, 221, 1, 0, 0, 0, 2936, 2937, 5, 280, 0, 0, 2937, 2938, 5, 2, 0, 0, 2938, 2943, 3, 224, 112, 0, 2939, 2940, 5, 6, 0, 0, 2940, 2942, 3, 224, 112, 0, 2941, 2939, 1, 0, 0, 0, 2942, 2945, 1, 0, 0, 0, 2943, 2941, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2946, 1, 0, 0, 0, 2945, 2943, 1, 0, 0, 0, 2946, 2947, 5, 3, 0, 0, 2947, 223, 1, 0, 0, 0, 2948, 2949, 7, 34, 0, 0, 2949, 2950, 3, 226, 113, 0, 2950, 225, 1, 0, 0, 0, 2951, 2952, 3, 824, 412, 0, 2952, 2953, 3, 808, 404, 0, 2953, 227, 1, 0, 0, 0, 2954, 2955, 5, 46, 0, 0, 2955, 2957, 5, 331, 0, 0, 2956, 2958, 3, 294, 147, 0, 2957, 2956, 1, 0, 0, 0, 2957, 2958, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2962, 3, 818, 409, 0, 2960, 2961, 5, 360, 0, 0, 2961, 2963, 3, 808, 404, 0, 2962, 2960, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2965, 1, 0, 0, 0, 2964, 2966, 3, 230, 115, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2967, 1, 0, 0, 0, 2967, 2968, 5, 63, 0, 0, 2968, 2969, 5, 174, 0, 0, 2969, 2970, 5, 381, 0, 0, 2970, 2972, 3, 818, 409, 0, 2971, 2973, 3, 220, 110, 0, 2972, 2971, 1, 0, 0, 0, 2972, 2973, 1, 0, 0, 0, 2973, 229, 1, 0, 0, 0, 2974, 2977, 5, 375, 0, 0, 2975, 2978, 3, 808, 404, 0, 2976, 2978, 5, 78, 0, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 231, 1, 0, 0, 0, 2979, 2980, 5, 138, 0, 0, 2980, 2981, 5, 331, 0, 0, 2981, 2987, 3, 818, 409, 0, 2982, 2988, 3, 222, 111, 0, 2983, 2985, 3, 230, 115, 0, 2984, 2986, 3, 222, 111, 0, 2985, 2984, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 2988, 1, 0, 0, 0, 2987, 2982, 1, 0, 0, 0, 2987, 2983, 1, 0, 0, 0, 2988, 233, 1, 0, 0, 0, 2989, 2990, 5, 46, 0, 0, 2990, 2991, 5, 63, 0, 0, 2991, 2993, 5, 92, 0, 0, 2992, 2994, 3, 294, 147, 0, 2993, 2992, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 2996, 3, 772, 386, 0, 2996, 2998, 5, 2, 0, 0, 2997, 2999, 3, 126, 63, 0, 2998, 2997, 1, 0, 0, 0, 2998, 2999, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3002, 5, 3, 0, 0, 3001, 3003, 3, 164, 82, 0, 3002, 3001, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3004, 1, 0, 0, 0, 3004, 3005, 5, 331, 0, 0, 3005, 3007, 3, 818, 409, 0, 3006, 3008, 3, 220, 110, 0, 3007, 3006, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 0, 3008, 3029, 1, 0, 0, 0, 3009, 3010, 5, 46, 0, 0, 3010, 3011, 5, 63, 0, 0, 3011, 3013, 5, 92, 0, 0, 3012, 3014, 3, 294, 147, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3015, 1, 0, 0, 0, 3015, 3016, 3, 772, 386, 0, 3016, 3017, 5, 285, 0, 0, 3017, 3018, 5, 275, 0, 0, 3018, 3020, 3, 774, 387, 0, 3019, 3021, 3, 124, 62, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3023, 3, 106, 53, 0, 3023, 3024, 5, 331, 0, 0, 3024, 3026, 3, 818, 409, 0, 3025, 3027, 3, 220, 110, 0, 3026, 3025, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 3029, 1, 0, 0, 0, 3028, 2989, 1, 0, 0, 0, 3028, 3009, 1, 0, 0, 0, 3029, 235, 1, 0, 0, 0, 3030, 3031, 5, 444, 0, 0, 3031, 3032, 5, 63, 0, 0, 3032, 3033, 5, 323, 0, 0, 3033, 3043, 3, 790, 395, 0, 3034, 3035, 5, 74, 0, 0, 3035, 3038, 5, 94, 0, 0, 3036, 3038, 5, 59, 0, 0, 3037, 3034, 1, 0, 0, 0, 3037, 3036, 1, 0, 0, 0, 3038, 3039, 1, 0, 0, 0, 3039, 3040, 5, 2, 0, 0, 3040, 3041, 3, 628, 314, 0, 3041, 3042, 5, 3, 0, 0, 3042, 3044, 1, 0, 0, 0, 3043, 3037, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 3045, 1, 0, 0, 0, 3045, 3046, 5, 64, 0, 0, 3046, 3047, 5, 331, 0, 0, 3047, 3048, 3, 818, 409, 0, 3048, 3049, 5, 71, 0, 0, 3049, 3051, 3, 818, 409, 0, 3050, 3052, 3, 220, 110, 0, 3051, 3050, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 237, 1, 0, 0, 0, 3053, 3054, 5, 46, 0, 0, 3054, 3055, 5, 99, 0, 0, 3055, 3057, 5, 257, 0, 0, 3056, 3058, 3, 294, 147, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3062, 5, 62, 0, 0, 3060, 3063, 3, 814, 407, 0, 3061, 3063, 5, 99, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3061, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3065, 5, 331, 0, 0, 3065, 3067, 3, 818, 409, 0, 3066, 3068, 3, 220, 110, 0, 3067, 3066, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 239, 1, 0, 0, 0, 3069, 3070, 5, 138, 0, 0, 3070, 3071, 5, 99, 0, 0, 3071, 3072, 5, 257, 0, 0, 3072, 3075, 5, 62, 0, 0, 3073, 3076, 3, 814, 407, 0, 3074, 3076, 5, 99, 0, 0, 3075, 3073, 1, 0, 0, 0, 3075, 3074, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 3078, 5, 331, 0, 0, 3078, 3079, 3, 818, 409, 0, 3079, 3080, 3, 222, 111, 0, 3080, 241, 1, 0, 0, 0, 3081, 3082, 5, 46, 0, 0, 3082, 3083, 5, 445, 0, 0, 3083, 3084, 3, 818, 409, 0, 3084, 3085, 5, 80, 0, 0, 3085, 3092, 3, 780, 390, 0, 3086, 3090, 5, 36, 0, 0, 3087, 3091, 5, 541, 0, 0, 3088, 3091, 5, 542, 0, 0, 3089, 3091, 3, 826, 413, 0, 3090, 3087, 1, 0, 0, 0, 3090, 3088, 1, 0, 0, 0, 3090, 3089, 1, 0, 0, 0, 3091, 3093, 1, 0, 0, 0, 3092, 3086, 1, 0, 0, 0, 3092, 3093, 1, 0, 0, 0, 3093, 3096, 1, 0, 0, 0, 3094, 3095, 5, 62, 0, 0, 3095, 3097, 7, 35, 0, 0, 3096, 3094, 1, 0, 0, 0, 3096, 3097, 1, 0, 0, 0, 3097, 3100, 1, 0, 0, 0, 3098, 3099, 5, 94, 0, 0, 3099, 3101, 3, 816, 408, 0, 3100, 3098, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3104, 3, 250, 125, 0, 3103, 3102, 1, 0, 0, 0, 3103, 3104, 1, 0, 0, 0, 3104, 3106, 1, 0, 0, 0, 3105, 3107, 3, 252, 126, 0, 3106, 3105, 1, 0, 0, 0, 3106, 3107, 1, 0, 0, 0, 3107, 243, 1, 0, 0, 0, 3108, 3109, 5, 138, 0, 0, 3109, 3110, 5, 445, 0, 0, 3110, 3111, 3, 818, 409, 0, 3111, 3112, 5, 80, 0, 0, 3112, 3115, 3, 780, 390, 0, 3113, 3114, 5, 94, 0, 0, 3114, 3116, 3, 816, 408, 0, 3115, 3113, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3118, 1, 0, 0, 0, 3117, 3119, 3, 250, 125, 0, 3118, 3117, 1, 0, 0, 0, 3118, 3119, 1, 0, 0, 0, 3119, 3121, 1, 0, 0, 0, 3120, 3122, 3, 252, 126, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 245, 1, 0, 0, 0, 3123, 3124, 5, 138, 0, 0, 3124, 3125, 5, 296, 0, 0, 3125, 3127, 3, 796, 398, 0, 3126, 3128, 3, 368, 184, 0, 3127, 3126, 1, 0, 0, 0, 3127, 3128, 1, 0, 0, 0, 3128, 3155, 1, 0, 0, 0, 3129, 3133, 3, 248, 124, 0, 3130, 3132, 3, 248, 124, 0, 3131, 3130, 1, 0, 0, 0, 3132, 3135, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3133, 3134, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3136, 3138, 5, 315, 0, 0, 3137, 3136, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 3156, 1, 0, 0, 0, 3139, 3140, 5, 309, 0, 0, 3140, 3141, 5, 94, 0, 0, 3141, 3156, 3, 798, 399, 0, 3142, 3143, 5, 282, 0, 0, 3143, 3144, 5, 94, 0, 0, 3144, 3156, 3, 814, 407, 0, 3145, 3146, 5, 333, 0, 0, 3146, 3147, 5, 323, 0, 0, 3147, 3156, 3, 32, 16, 0, 3148, 3150, 5, 269, 0, 0, 3149, 3148, 1, 0, 0, 0, 3149, 3150, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 3152, 5, 462, 0, 0, 3152, 3153, 5, 80, 0, 0, 3153, 3154, 5, 204, 0, 0, 3154, 3156, 3, 818, 409, 0, 3155, 3129, 1, 0, 0, 0, 3155, 3139, 1, 0, 0, 0, 3155, 3142, 1, 0, 0, 0, 3155, 3145, 1, 0, 0, 0, 3155, 3149, 1, 0, 0, 0, 3156, 247, 1, 0, 0, 0, 3157, 3159, 5, 205, 0, 0, 3158, 3157, 1, 0, 0, 0, 3158, 3159, 1, 0, 0, 0, 3159, 3160, 1, 0, 0, 0, 3160, 3161, 5, 327, 0, 0, 3161, 3168, 5, 243, 0, 0, 3162, 3164, 5, 205, 0, 0, 3163, 3162, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 3166, 5, 327, 0, 0, 3166, 3168, 5, 181, 0, 0, 3167, 3158, 1, 0, 0, 0, 3167, 3163, 1, 0, 0, 0, 3168, 3187, 1, 0, 0, 0, 3169, 3170, 5, 333, 0, 0, 3170, 3171, 3, 818, 409, 0, 3171, 3174, 7, 36, 0, 0, 3172, 3175, 3, 818, 409, 0, 3173, 3175, 5, 53, 0, 0, 3174, 3172, 1, 0, 0, 0, 3174, 3173, 1, 0, 0, 0, 3175, 3187, 1, 0, 0, 0, 3176, 3177, 5, 333, 0, 0, 3177, 3178, 3, 818, 409, 0, 3178, 3179, 5, 64, 0, 0, 3179, 3180, 5, 434, 0, 0, 3180, 3187, 1, 0, 0, 0, 3181, 3184, 5, 313, 0, 0, 3182, 3185, 3, 818, 409, 0, 3183, 3185, 5, 30, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3183, 1, 0, 0, 0, 3185, 3187, 1, 0, 0, 0, 3186, 3167, 1, 0, 0, 0, 3186, 3169, 1, 0, 0, 0, 3186, 3176, 1, 0, 0, 0, 3186, 3181, 1, 0, 0, 0, 3187, 249, 1, 0, 0, 0, 3188, 3189, 5, 100, 0, 0, 3189, 3190, 5, 2, 0, 0, 3190, 3191, 3, 674, 337, 0, 3191, 3192, 5, 3, 0, 0, 3192, 251, 1, 0, 0, 0, 3193, 3194, 5, 105, 0, 0, 3194, 3195, 5, 42, 0, 0, 3195, 3196, 5, 2, 0, 0, 3196, 3197, 3, 674, 337, 0, 3197, 3198, 5, 3, 0, 0, 3198, 253, 1, 0, 0, 0, 3199, 3200, 5, 46, 0, 0, 3200, 3201, 5, 131, 0, 0, 3201, 3202, 5, 446, 0, 0, 3202, 3203, 3, 818, 409, 0, 3203, 3204, 5, 360, 0, 0, 3204, 3205, 7, 37, 0, 0, 3205, 3206, 5, 215, 0, 0, 3206, 3207, 3, 316, 158, 0, 3207, 255, 1, 0, 0, 0, 3208, 3210, 5, 46, 0, 0, 3209, 3211, 3, 366, 183, 0, 3210, 3209, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3212, 1, 0, 0, 0, 3212, 3213, 5, 357, 0, 0, 3213, 3214, 3, 818, 409, 0, 3214, 3215, 3, 258, 129, 0, 3215, 3216, 3, 260, 130, 0, 3216, 3217, 5, 80, 0, 0, 3217, 3229, 3, 774, 387, 0, 3218, 3225, 5, 447, 0, 0, 3219, 3220, 7, 38, 0, 0, 3220, 3222, 7, 39, 0, 0, 3221, 3223, 5, 36, 0, 0, 3222, 3221, 1, 0, 0, 0, 3222, 3223, 1, 0, 0, 0, 3223, 3224, 1, 0, 0, 0, 3224, 3226, 3, 818, 409, 0, 3225, 3219, 1, 0, 0, 0, 3226, 3227, 1, 0, 0, 0, 3227, 3225, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3230, 1, 0, 0, 0, 3229, 3218, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3236, 1, 0, 0, 0, 3231, 3233, 5, 62, 0, 0, 3232, 3234, 5, 192, 0, 0, 3233, 3232, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3237, 7, 40, 0, 0, 3236, 3231, 1, 0, 0, 0, 3236, 3237, 1, 0, 0, 0, 3237, 3239, 1, 0, 0, 0, 3238, 3240, 3, 264, 132, 0, 3239, 3238, 1, 0, 0, 0, 3239, 3240, 1, 0, 0, 0, 3240, 3241, 1, 0, 0, 0, 3241, 3242, 5, 202, 0, 0, 3242, 3243, 3, 266, 133, 0, 3243, 3244, 5, 2, 0, 0, 3244, 3245, 3, 268, 134, 0, 3245, 3246, 5, 3, 0, 0, 3246, 3287, 1, 0, 0, 0, 3247, 3249, 5, 46, 0, 0, 3248, 3250, 3, 366, 183, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3252, 1, 0, 0, 0, 3251, 3253, 5, 45, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3255, 5, 357, 0, 0, 3255, 3256, 3, 818, 409, 0, 3256, 3257, 3, 258, 129, 0, 3257, 3258, 3, 260, 130, 0, 3258, 3259, 5, 80, 0, 0, 3259, 3262, 3, 774, 387, 0, 3260, 3261, 5, 64, 0, 0, 3261, 3263, 3, 780, 390, 0, 3262, 3260, 1, 0, 0, 0, 3262, 3263, 1, 0, 0, 0, 3263, 3267, 1, 0, 0, 0, 3264, 3266, 3, 272, 136, 0, 3265, 3264, 1, 0, 0, 0, 3266, 3269, 1, 0, 0, 0, 3267, 3265, 1, 0, 0, 0, 3267, 3268, 1, 0, 0, 0, 3268, 3275, 1, 0, 0, 0, 3269, 3267, 1, 0, 0, 0, 3270, 3272, 5, 62, 0, 0, 3271, 3273, 5, 192, 0, 0, 3272, 3271, 1, 0, 0, 0, 3272, 3273, 1, 0, 0, 0, 3273, 3274, 1, 0, 0, 0, 3274, 3276, 7, 40, 0, 0, 3275, 3270, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3278, 1, 0, 0, 0, 3277, 3279, 3, 264, 132, 0, 3278, 3277, 1, 0, 0, 0, 3278, 3279, 1, 0, 0, 0, 3279, 3280, 1, 0, 0, 0, 3280, 3281, 5, 202, 0, 0, 3281, 3282, 3, 266, 133, 0, 3282, 3283, 5, 2, 0, 0, 3283, 3284, 3, 268, 134, 0, 3284, 3285, 5, 3, 0, 0, 3285, 3287, 1, 0, 0, 0, 3286, 3208, 1, 0, 0, 0, 3286, 3247, 1, 0, 0, 0, 3287, 257, 1, 0, 0, 0, 3288, 3293, 5, 145, 0, 0, 3289, 3293, 5, 135, 0, 0, 3290, 3291, 5, 242, 0, 0, 3291, 3293, 5, 275, 0, 0, 3292, 3288, 1, 0, 0, 0, 3292, 3289, 1, 0, 0, 0, 3292, 3290, 1, 0, 0, 0, 3293, 259, 1, 0, 0, 0, 3294, 3299, 3, 262, 131, 0, 3295, 3296, 5, 82, 0, 0, 3296, 3298, 3, 262, 131, 0, 3297, 3295, 1, 0, 0, 0, 3298, 3301, 1, 0, 0, 0, 3299, 3297, 1, 0, 0, 0, 3299, 3300, 1, 0, 0, 0, 3300, 261, 1, 0, 0, 0, 3301, 3299, 1, 0, 0, 0, 3302, 3311, 5, 241, 0, 0, 3303, 3311, 5, 182, 0, 0, 3304, 3307, 5, 369, 0, 0, 3305, 3306, 5, 275, 0, 0, 3306, 3308, 3, 148, 74, 0, 3307, 3305, 1, 0, 0, 0, 3307, 3308, 1, 0, 0, 0, 3308, 3311, 1, 0, 0, 0, 3309, 3311, 5, 358, 0, 0, 3310, 3302, 1, 0, 0, 0, 3310, 3303, 1, 0, 0, 0, 3310, 3304, 1, 0, 0, 0, 3310, 3309, 1, 0, 0, 0, 3311, 263, 1, 0, 0, 0, 3312, 3313, 5, 102, 0, 0, 3313, 3314, 5, 2, 0, 0, 3314, 3315, 3, 674, 337, 0, 3315, 3316, 5, 3, 0, 0, 3316, 265, 1, 0, 0, 0, 3317, 3318, 5, 211, 0, 0, 3318, 3322, 3, 806, 403, 0, 3319, 3320, 5, 296, 0, 0, 3320, 3322, 3, 796, 398, 0, 3321, 3317, 1, 0, 0, 0, 3321, 3319, 1, 0, 0, 0, 3322, 267, 1, 0, 0, 0, 3323, 3326, 3, 270, 135, 0, 3324, 3326, 1, 0, 0, 0, 3325, 3323, 1, 0, 0, 0, 3325, 3324, 1, 0, 0, 0, 3326, 3331, 1, 0, 0, 0, 3327, 3328, 5, 6, 0, 0, 3328, 3330, 3, 270, 135, 0, 3329, 3327, 1, 0, 0, 0, 3330, 3333, 1, 0, 0, 0, 3331, 3329, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 269, 1, 0, 0, 0, 3333, 3331, 1, 0, 0, 0, 3334, 3339, 5, 571, 0, 0, 3335, 3339, 5, 573, 0, 0, 3336, 3339, 3, 808, 404, 0, 3337, 3339, 3, 824, 412, 0, 3338, 3334, 1, 0, 0, 0, 3338, 3335, 1, 0, 0, 0, 3338, 3336, 1, 0, 0, 0, 3338, 3337, 1, 0, 0, 0, 3339, 271, 1, 0, 0, 0, 3340, 3342, 5, 77, 0, 0, 3341, 3340, 1, 0, 0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 3343, 1, 0, 0, 0, 3343, 3351, 5, 54, 0, 0, 3344, 3345, 5, 69, 0, 0, 3345, 3351, 7, 9, 0, 0, 3346, 3347, 5, 77, 0, 0, 3347, 3351, 5, 371, 0, 0, 3348, 3349, 5, 269, 0, 0, 3349, 3351, 5, 228, 0, 0, 3350, 3341, 1, 0, 0, 0, 3350, 3344, 1, 0, 0, 0, 3350, 3346, 1, 0, 0, 0, 3350, 3348, 1, 0, 0, 0, 3351, 273, 1, 0, 0, 0, 3352, 3353, 5, 46, 0, 0, 3353, 3354, 5, 198, 0, 0, 3354, 3355, 5, 357, 0, 0, 3355, 3356, 3, 818, 409, 0, 3356, 3357, 5, 80, 0, 0, 3357, 3367, 3, 824, 412, 0, 3358, 3359, 5, 102, 0, 0, 3359, 3364, 3, 276, 138, 0, 3360, 3361, 5, 33, 0, 0, 3361, 3363, 3, 276, 138, 0, 3362, 3360, 1, 0, 0, 0, 3363, 3366, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3364, 3365, 1, 0, 0, 0, 3365, 3368, 1, 0, 0, 0, 3366, 3364, 1, 0, 0, 0, 3367, 3358, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 3369, 1, 0, 0, 0, 3369, 3370, 5, 202, 0, 0, 3370, 3371, 3, 266, 133, 0, 3371, 3372, 5, 2, 0, 0, 3372, 3373, 5, 3, 0, 0, 3373, 275, 1, 0, 0, 0, 3374, 3375, 3, 818, 409, 0, 3375, 3376, 5, 68, 0, 0, 3376, 3377, 5, 2, 0, 0, 3377, 3381, 3, 808, 404, 0, 3378, 3380, 3, 462, 231, 0, 3379, 3378, 1, 0, 0, 0, 3380, 3383, 1, 0, 0, 0, 3381, 3379, 1, 0, 0, 0, 3381, 3382, 1, 0, 0, 0, 3382, 3384, 1, 0, 0, 0, 3383, 3381, 1, 0, 0, 0, 3384, 3385, 5, 3, 0, 0, 3385, 277, 1, 0, 0, 0, 3386, 3387, 5, 138, 0, 0, 3387, 3388, 5, 198, 0, 0, 3388, 3389, 5, 357, 0, 0, 3389, 3395, 3, 818, 409, 0, 3390, 3392, 5, 193, 0, 0, 3391, 3393, 7, 14, 0, 0, 3392, 3391, 1, 0, 0, 0, 3392, 3393, 1, 0, 0, 0, 3393, 3396, 1, 0, 0, 0, 3394, 3396, 5, 186, 0, 0, 3395, 3390, 1, 0, 0, 0, 3395, 3394, 1, 0, 0, 0, 3396, 279, 1, 0, 0, 0, 3397, 3398, 5, 46, 0, 0, 3398, 3399, 5, 140, 0, 0, 3399, 3400, 3, 316, 158, 0, 3400, 3401, 5, 42, 0, 0, 3401, 3402, 5, 2, 0, 0, 3402, 3403, 3, 674, 337, 0, 3403, 3407, 5, 3, 0, 0, 3404, 3406, 3, 272, 136, 0, 3405, 3404, 1, 0, 0, 0, 3406, 3409, 1, 0, 0, 0, 3407, 3405, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 281, 1, 0, 0, 0, 3409, 3407, 1, 0, 0, 0, 3410, 3412, 5, 46, 0, 0, 3411, 3413, 3, 366, 183, 0, 3412, 3411, 1, 0, 0, 0, 3412, 3413, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3415, 5, 136, 0, 0, 3415, 3430, 3, 806, 403, 0, 3416, 3417, 3, 392, 196, 0, 3417, 3418, 3, 284, 142, 0, 3418, 3431, 1, 0, 0, 0, 3419, 3420, 5, 2, 0, 0, 3420, 3425, 3, 290, 145, 0, 3421, 3422, 5, 6, 0, 0, 3422, 3424, 3, 290, 145, 0, 3423, 3421, 1, 0, 0, 0, 3424, 3427, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3428, 1, 0, 0, 0, 3427, 3425, 1, 0, 0, 0, 3428, 3429, 5, 3, 0, 0, 3429, 3431, 1, 0, 0, 0, 3430, 3416, 1, 0, 0, 0, 3430, 3419, 1, 0, 0, 0, 3431, 3489, 1, 0, 0, 0, 3432, 3433, 5, 46, 0, 0, 3433, 3434, 5, 278, 0, 0, 3434, 3435, 3, 414, 207, 0, 3435, 3436, 3, 284, 142, 0, 3436, 3489, 1, 0, 0, 0, 3437, 3438, 5, 46, 0, 0, 3438, 3439, 5, 360, 0, 0, 3439, 3440, 3, 316, 158, 0, 3440, 3458, 5, 36, 0, 0, 3441, 3443, 5, 2, 0, 0, 3442, 3444, 3, 642, 321, 0, 3443, 3442, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3445, 1, 0, 0, 0, 3445, 3459, 5, 3, 0, 0, 3446, 3447, 5, 196, 0, 0, 3447, 3455, 5, 2, 0, 0, 3448, 3452, 3, 808, 404, 0, 3449, 3451, 3, 462, 231, 0, 3450, 3449, 1, 0, 0, 0, 3451, 3454, 1, 0, 0, 0, 3452, 3450, 1, 0, 0, 0, 3452, 3453, 1, 0, 0, 0, 3453, 3456, 1, 0, 0, 0, 3454, 3452, 1, 0, 0, 0, 3455, 3448, 1, 0, 0, 0, 3455, 3456, 1, 0, 0, 0, 3456, 3457, 1, 0, 0, 0, 3457, 3459, 5, 3, 0, 0, 3458, 3441, 1, 0, 0, 0, 3458, 3446, 1, 0, 0, 0, 3459, 3489, 1, 0, 0, 0, 3460, 3461, 5, 46, 0, 0, 3461, 3462, 5, 360, 0, 0, 3462, 3468, 3, 316, 158, 0, 3463, 3464, 5, 36, 0, 0, 3464, 3466, 5, 299, 0, 0, 3465, 3463, 1, 0, 0, 0, 3465, 3466, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3469, 3, 284, 142, 0, 3468, 3465, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3489, 1, 0, 0, 0, 3470, 3471, 5, 46, 0, 0, 3471, 3472, 5, 355, 0, 0, 3472, 3473, 5, 325, 0, 0, 3473, 3474, 7, 41, 0, 0, 3474, 3475, 3, 316, 158, 0, 3475, 3476, 3, 284, 142, 0, 3476, 3489, 1, 0, 0, 0, 3477, 3478, 5, 46, 0, 0, 3478, 3480, 5, 108, 0, 0, 3479, 3481, 3, 294, 147, 0, 3480, 3479, 1, 0, 0, 0, 3480, 3481, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3486, 3, 316, 158, 0, 3483, 3487, 3, 284, 142, 0, 3484, 3485, 5, 64, 0, 0, 3485, 3487, 3, 316, 158, 0, 3486, 3483, 1, 0, 0, 0, 3486, 3484, 1, 0, 0, 0, 3487, 3489, 1, 0, 0, 0, 3488, 3410, 1, 0, 0, 0, 3488, 3432, 1, 0, 0, 0, 3488, 3437, 1, 0, 0, 0, 3488, 3460, 1, 0, 0, 0, 3488, 3470, 1, 0, 0, 0, 3488, 3477, 1, 0, 0, 0, 3489, 283, 1, 0, 0, 0, 3490, 3491, 5, 2, 0, 0, 3491, 3496, 3, 286, 143, 0, 3492, 3493, 5, 6, 0, 0, 3493, 3495, 3, 286, 143, 0, 3494, 3492, 1, 0, 0, 0, 3495, 3498, 1, 0, 0, 0, 3496, 3494, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3496, 1, 0, 0, 0, 3499, 3500, 5, 3, 0, 0, 3500, 285, 1, 0, 0, 0, 3501, 3504, 3, 824, 412, 0, 3502, 3503, 5, 10, 0, 0, 3503, 3505, 3, 288, 144, 0, 3504, 3502, 1, 0, 0, 0, 3504, 3505, 1, 0, 0, 0, 3505, 287, 1, 0, 0, 0, 3506, 3513, 3, 388, 194, 0, 3507, 3513, 3, 834, 417, 0, 3508, 3513, 3, 726, 363, 0, 3509, 3513, 3, 202, 101, 0, 3510, 3513, 3, 808, 404, 0, 3511, 3513, 5, 407, 0, 0, 3512, 3506, 1, 0, 0, 0, 3512, 3507, 1, 0, 0, 0, 3512, 3508, 1, 0, 0, 0, 3512, 3509, 1, 0, 0, 0, 3512, 3510, 1, 0, 0, 0, 3512, 3511, 1, 0, 0, 0, 3513, 289, 1, 0, 0, 0, 3514, 3515, 3, 826, 413, 0, 3515, 3516, 5, 10, 0, 0, 3516, 3517, 3, 288, 144, 0, 3517, 291, 1, 0, 0, 0, 3518, 3519, 5, 138, 0, 0, 3519, 3520, 5, 360, 0, 0, 3520, 3521, 3, 316, 158, 0, 3521, 3522, 5, 133, 0, 0, 3522, 3524, 5, 450, 0, 0, 3523, 3525, 3, 294, 147, 0, 3524, 3523, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 3526, 1, 0, 0, 0, 3526, 3529, 3, 808, 404, 0, 3527, 3528, 7, 42, 0, 0, 3528, 3530, 3, 808, 404, 0, 3529, 3527, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3541, 1, 0, 0, 0, 3531, 3532, 5, 138, 0, 0, 3532, 3533, 5, 360, 0, 0, 3533, 3534, 3, 316, 158, 0, 3534, 3535, 5, 309, 0, 0, 3535, 3536, 5, 450, 0, 0, 3536, 3537, 3, 808, 404, 0, 3537, 3538, 5, 94, 0, 0, 3538, 3539, 3, 808, 404, 0, 3539, 3541, 1, 0, 0, 0, 3540, 3518, 1, 0, 0, 0, 3540, 3531, 1, 0, 0, 0, 3541, 293, 1, 0, 0, 0, 3542, 3543, 5, 220, 0, 0, 3543, 3544, 5, 77, 0, 0, 3544, 3545, 5, 396, 0, 0, 3545, 295, 1, 0, 0, 0, 3546, 3547, 5, 46, 0, 0, 3547, 3548, 5, 278, 0, 0, 3548, 3549, 5, 156, 0, 0, 3549, 3551, 3, 316, 158, 0, 3550, 3552, 5, 53, 0, 0, 3551, 3550, 1, 0, 0, 0, 3551, 3552, 1, 0, 0, 0, 3552, 3553, 1, 0, 0, 0, 3553, 3554, 5, 62, 0, 0, 3554, 3555, 5, 360, 0, 0, 3555, 3556, 3, 652, 326, 0, 3556, 3559, 3, 170, 85, 0, 3557, 3558, 5, 206, 0, 0, 3558, 3560, 3, 316, 158, 0, 3559, 3557, 1, 0, 0, 0, 3559, 3560, 1, 0, 0, 0, 3560, 3561, 1, 0, 0, 0, 3561, 3562, 5, 36, 0, 0, 3562, 3567, 3, 298, 149, 0, 3563, 3564, 5, 6, 0, 0, 3564, 3566, 3, 298, 149, 0, 3565, 3563, 1, 0, 0, 0, 3566, 3569, 1, 0, 0, 0, 3567, 3565, 1, 0, 0, 0, 3567, 3568, 1, 0, 0, 0, 3568, 297, 1, 0, 0, 0, 3569, 3567, 1, 0, 0, 0, 3570, 3571, 5, 278, 0, 0, 3571, 3572, 5, 571, 0, 0, 3572, 3574, 3, 414, 207, 0, 3573, 3575, 3, 412, 206, 0, 3574, 3573, 1, 0, 0, 0, 3574, 3575, 1, 0, 0, 0, 3575, 3583, 1, 0, 0, 0, 3576, 3581, 5, 62, 0, 0, 3577, 3582, 5, 325, 0, 0, 3578, 3579, 5, 83, 0, 0, 3579, 3580, 5, 147, 0, 0, 3580, 3582, 3, 316, 158, 0, 3581, 3577, 1, 0, 0, 0, 3581, 3578, 1, 0, 0, 0, 3582, 3584, 1, 0, 0, 0, 3583, 3576, 1, 0, 0, 0, 3583, 3584, 1, 0, 0, 0, 3584, 3586, 1, 0, 0, 0, 3585, 3587, 5, 302, 0, 0, 3586, 3585, 1, 0, 0, 0, 3586, 3587, 1, 0, 0, 0, 3587, 3597, 1, 0, 0, 0, 3588, 3589, 5, 211, 0, 0, 3589, 3591, 5, 571, 0, 0, 3590, 3592, 3, 528, 264, 0, 3591, 3590, 1, 0, 0, 0, 3591, 3592, 1, 0, 0, 0, 3592, 3593, 1, 0, 0, 0, 3593, 3597, 3, 382, 191, 0, 3594, 3595, 5, 345, 0, 0, 3595, 3597, 3, 652, 326, 0, 3596, 3570, 1, 0, 0, 0, 3596, 3588, 1, 0, 0, 0, 3596, 3594, 1, 0, 0, 0, 3597, 299, 1, 0, 0, 0, 3598, 3599, 5, 46, 0, 0, 3599, 3600, 5, 278, 0, 0, 3600, 3601, 5, 206, 0, 0, 3601, 3602, 3, 316, 158, 0, 3602, 3603, 3, 170, 85, 0, 3603, 301, 1, 0, 0, 0, 3604, 3605, 5, 138, 0, 0, 3605, 3606, 5, 278, 0, 0, 3606, 3607, 5, 206, 0, 0, 3607, 3608, 3, 316, 158, 0, 3608, 3627, 3, 170, 85, 0, 3609, 3610, 5, 133, 0, 0, 3610, 3615, 3, 298, 149, 0, 3611, 3612, 5, 6, 0, 0, 3612, 3614, 3, 298, 149, 0, 3613, 3611, 1, 0, 0, 0, 3614, 3617, 1, 0, 0, 0, 3615, 3613, 1, 0, 0, 0, 3615, 3616, 1, 0, 0, 0, 3616, 3628, 1, 0, 0, 0, 3617, 3615, 1, 0, 0, 0, 3618, 3619, 5, 191, 0, 0, 3619, 3624, 3, 304, 152, 0, 3620, 3621, 5, 6, 0, 0, 3621, 3623, 3, 304, 152, 0, 3622, 3620, 1, 0, 0, 0, 3623, 3626, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3624, 3625, 1, 0, 0, 0, 3625, 3628, 1, 0, 0, 0, 3626, 3624, 1, 0, 0, 0, 3627, 3609, 1, 0, 0, 0, 3627, 3618, 1, 0, 0, 0, 3628, 303, 1, 0, 0, 0, 3629, 3630, 7, 43, 0, 0, 3630, 3631, 5, 571, 0, 0, 3631, 3632, 3, 528, 264, 0, 3632, 305, 1, 0, 0, 0, 3633, 3634, 5, 301, 0, 0, 3634, 3635, 5, 281, 0, 0, 3635, 3636, 5, 147, 0, 0, 3636, 3637, 3, 816, 408, 0, 3637, 3638, 5, 94, 0, 0, 3638, 3639, 3, 814, 407, 0, 3639, 307, 1, 0, 0, 0, 3640, 3663, 5, 191, 0, 0, 3641, 3664, 5, 328, 0, 0, 3642, 3664, 5, 226, 0, 0, 3643, 3664, 5, 108, 0, 0, 3644, 3664, 5, 168, 0, 0, 3645, 3664, 5, 342, 0, 0, 3646, 3664, 5, 452, 0, 0, 3647, 3664, 5, 331, 0, 0, 3648, 3649, 5, 131, 0, 0, 3649, 3664, 5, 446, 0, 0, 3650, 3651, 5, 198, 0, 0, 3651, 3664, 5, 357, 0, 0, 3652, 3664, 5, 204, 0, 0, 3653, 3655, 5, 295, 0, 0, 3654, 3653, 1, 0, 0, 0, 3654, 3655, 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3664, 5, 247, 0, 0, 3657, 3658, 5, 63, 0, 0, 3658, 3659, 5, 174, 0, 0, 3659, 3664, 5, 381, 0, 0, 3660, 3661, 5, 355, 0, 0, 3661, 3662, 5, 325, 0, 0, 3662, 3664, 7, 41, 0, 0, 3663, 3641, 1, 0, 0, 0, 3663, 3642, 1, 0, 0, 0, 3663, 3643, 1, 0, 0, 0, 3663, 3644, 1, 0, 0, 0, 3663, 3645, 1, 0, 0, 0, 3663, 3646, 1, 0, 0, 0, 3663, 3647, 1, 0, 0, 0, 3663, 3648, 1, 0, 0, 0, 3663, 3650, 1, 0, 0, 0, 3663, 3652, 1, 0, 0, 0, 3663, 3654, 1, 0, 0, 0, 3663, 3657, 1, 0, 0, 0, 3663, 3660, 1, 0, 0, 0, 3664, 3666, 1, 0, 0, 0, 3665, 3667, 3, 422, 211, 0, 3666, 3665, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3668, 1, 0, 0, 0, 3668, 3670, 3, 784, 392, 0, 3669, 3671, 3, 96, 48, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3848, 1, 0, 0, 0, 3672, 3674, 5, 191, 0, 0, 3673, 3675, 5, 259, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3678, 5, 376, 0, 0, 3677, 3679, 3, 422, 211, 0, 3678, 3677, 1, 0, 0, 0, 3678, 3679, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3685, 3, 778, 389, 0, 3681, 3682, 5, 6, 0, 0, 3682, 3684, 3, 778, 389, 0, 3683, 3681, 1, 0, 0, 0, 3684, 3687, 1, 0, 0, 0, 3685, 3683, 1, 0, 0, 0, 3685, 3686, 1, 0, 0, 0, 3686, 3689, 1, 0, 0, 0, 3687, 3685, 1, 0, 0, 0, 3688, 3690, 3, 96, 48, 0, 3689, 3688, 1, 0, 0, 0, 3689, 3690, 1, 0, 0, 0, 3690, 3848, 1, 0, 0, 0, 3691, 3693, 5, 191, 0, 0, 3692, 3694, 5, 63, 0, 0, 3693, 3692, 1, 0, 0, 0, 3693, 3694, 1, 0, 0, 0, 3694, 3695, 1, 0, 0, 0, 3695, 3697, 5, 92, 0, 0, 3696, 3698, 3, 422, 211, 0, 3697, 3696, 1, 0, 0, 0, 3697, 3698, 1, 0, 0, 0, 3698, 3699, 1, 0, 0, 0, 3699, 3701, 3, 762, 381, 0, 3700, 3702, 3, 96, 48, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, 0, 0, 0, 3702, 3848, 1, 0, 0, 0, 3703, 3704, 5, 191, 0, 0, 3704, 3706, 5, 323, 0, 0, 3705, 3707, 3, 422, 211, 0, 3706, 3705, 1, 0, 0, 0, 3706, 3707, 1, 0, 0, 0, 3707, 3708, 1, 0, 0, 0, 3708, 3710, 3, 764, 382, 0, 3709, 3711, 3, 96, 48, 0, 3710, 3709, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3848, 1, 0, 0, 0, 3712, 3713, 5, 191, 0, 0, 3713, 3715, 7, 44, 0, 0, 3714, 3716, 3, 422, 211, 0, 3715, 3714, 1, 0, 0, 0, 3715, 3716, 1, 0, 0, 0, 3716, 3717, 1, 0, 0, 0, 3717, 3718, 3, 818, 409, 0, 3718, 3719, 5, 80, 0, 0, 3719, 3721, 3, 316, 158, 0, 3720, 3722, 3, 96, 48, 0, 3721, 3720, 1, 0, 0, 0, 3721, 3722, 1, 0, 0, 0, 3722, 3848, 1, 0, 0, 0, 3723, 3724, 5, 191, 0, 0, 3724, 3726, 7, 32, 0, 0, 3725, 3727, 3, 422, 211, 0, 3726, 3725, 1, 0, 0, 0, 3726, 3727, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3733, 3, 652, 326, 0, 3729, 3730, 5, 6, 0, 0, 3730, 3732, 3, 652, 326, 0, 3731, 3729, 1, 0, 0, 0, 3732, 3735, 1, 0, 0, 0, 3733, 3731, 1, 0, 0, 0, 3733, 3734, 1, 0, 0, 0, 3734, 3737, 1, 0, 0, 0, 3735, 3733, 1, 0, 0, 0, 3736, 3738, 3, 96, 48, 0, 3737, 3736, 1, 0, 0, 0, 3737, 3738, 1, 0, 0, 0, 3738, 3848, 1, 0, 0, 0, 3739, 3740, 5, 191, 0, 0, 3740, 3741, 5, 226, 0, 0, 3741, 3743, 5, 109, 0, 0, 3742, 3744, 3, 422, 211, 0, 3743, 3742, 1, 0, 0, 0, 3743, 3744, 1, 0, 0, 0, 3744, 3745, 1, 0, 0, 0, 3745, 3747, 3, 314, 157, 0, 3746, 3748, 3, 96, 48, 0, 3747, 3746, 1, 0, 0, 0, 3747, 3748, 1, 0, 0, 0, 3748, 3848, 1, 0, 0, 0, 3749, 3750, 5, 191, 0, 0, 3750, 3752, 5, 41, 0, 0, 3751, 3753, 3, 422, 211, 0, 3752, 3751, 1, 0, 0, 0, 3752, 3753, 1, 0, 0, 0, 3753, 3754, 1, 0, 0, 0, 3754, 3755, 5, 2, 0, 0, 3755, 3756, 3, 652, 326, 0, 3756, 3757, 5, 36, 0, 0, 3757, 3758, 3, 652, 326, 0, 3758, 3760, 5, 3, 0, 0, 3759, 3761, 3, 96, 48, 0, 3760, 3759, 1, 0, 0, 0, 3760, 3761, 1, 0, 0, 0, 3761, 3848, 1, 0, 0, 0, 3762, 3763, 5, 191, 0, 0, 3763, 3764, 5, 278, 0, 0, 3764, 3766, 7, 31, 0, 0, 3765, 3767, 3, 422, 211, 0, 3766, 3765, 1, 0, 0, 0, 3766, 3767, 1, 0, 0, 0, 3767, 3768, 1, 0, 0, 0, 3768, 3769, 3, 316, 158, 0, 3769, 3771, 3, 170, 85, 0, 3770, 3772, 3, 96, 48, 0, 3771, 3770, 1, 0, 0, 0, 3771, 3772, 1, 0, 0, 0, 3772, 3848, 1, 0, 0, 0, 3773, 3774, 5, 191, 0, 0, 3774, 3775, 5, 281, 0, 0, 3775, 3776, 5, 147, 0, 0, 3776, 3778, 3, 816, 408, 0, 3777, 3779, 3, 96, 48, 0, 3778, 3777, 1, 0, 0, 0, 3778, 3779, 1, 0, 0, 0, 3779, 3848, 1, 0, 0, 0, 3780, 3781, 5, 191, 0, 0, 3781, 3783, 5, 451, 0, 0, 3782, 3784, 3, 422, 211, 0, 3783, 3782, 1, 0, 0, 0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3787, 3, 818, 409, 0, 3786, 3788, 3, 96, 48, 0, 3787, 3786, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3848, 1, 0, 0, 0, 3789, 3790, 5, 191, 0, 0, 3790, 3792, 5, 351, 0, 0, 3791, 3793, 3, 422, 211, 0, 3792, 3791, 1, 0, 0, 0, 3792, 3793, 1, 0, 0, 0, 3793, 3794, 1, 0, 0, 0, 3794, 3848, 3, 770, 385, 0, 3795, 3796, 5, 191, 0, 0, 3796, 3798, 5, 443, 0, 0, 3797, 3799, 3, 422, 211, 0, 3798, 3797, 1, 0, 0, 0, 3798, 3799, 1, 0, 0, 0, 3799, 3800, 1, 0, 0, 0, 3800, 3801, 5, 62, 0, 0, 3801, 3802, 3, 652, 326, 0, 3802, 3803, 5, 247, 0, 0, 3803, 3805, 3, 818, 409, 0, 3804, 3806, 3, 96, 48, 0, 3805, 3804, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 3848, 1, 0, 0, 0, 3807, 3808, 5, 191, 0, 0, 3808, 3810, 7, 45, 0, 0, 3809, 3811, 3, 422, 211, 0, 3810, 3809, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 3848, 3, 816, 408, 0, 3813, 3814, 5, 191, 0, 0, 3814, 3815, 5, 99, 0, 0, 3815, 3817, 5, 257, 0, 0, 3816, 3818, 3, 422, 211, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3822, 5, 62, 0, 0, 3820, 3823, 3, 814, 407, 0, 3821, 3823, 5, 99, 0, 0, 3822, 3820, 1, 0, 0, 0, 3822, 3821, 1, 0, 0, 0, 3823, 3824, 1, 0, 0, 0, 3824, 3825, 5, 331, 0, 0, 3825, 3848, 3, 818, 409, 0, 3826, 3827, 5, 191, 0, 0, 3827, 3829, 5, 175, 0, 0, 3828, 3830, 3, 422, 211, 0, 3829, 3828, 1, 0, 0, 0, 3829, 3830, 1, 0, 0, 0, 3830, 3831, 1, 0, 0, 0, 3831, 3845, 3, 788, 394, 0, 3832, 3834, 5, 105, 0, 0, 3833, 3832, 1, 0, 0, 0, 3833, 3834, 1, 0, 0, 0, 3834, 3835, 1, 0, 0, 0, 3835, 3836, 5, 2, 0, 0, 3836, 3841, 5, 209, 0, 0, 3837, 3838, 5, 6, 0, 0, 3838, 3840, 5, 209, 0, 0, 3839, 3837, 1, 0, 0, 0, 3840, 3843, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3841, 3842, 1, 0, 0, 0, 3842, 3844, 1, 0, 0, 0, 3843, 3841, 1, 0, 0, 0, 3844, 3846, 5, 3, 0, 0, 3845, 3833, 1, 0, 0, 0, 3845, 3846, 1, 0, 0, 0, 3846, 3848, 1, 0, 0, 0, 3847, 3640, 1, 0, 0, 0, 3847, 3672, 1, 0, 0, 0, 3847, 3691, 1, 0, 0, 0, 3847, 3703, 1, 0, 0, 0, 3847, 3712, 1, 0, 0, 0, 3847, 3723, 1, 0, 0, 0, 3847, 3739, 1, 0, 0, 0, 3847, 3749, 1, 0, 0, 0, 3847, 3762, 1, 0, 0, 0, 3847, 3773, 1, 0, 0, 0, 3847, 3780, 1, 0, 0, 0, 3847, 3789, 1, 0, 0, 0, 3847, 3795, 1, 0, 0, 0, 3847, 3807, 1, 0, 0, 0, 3847, 3813, 1, 0, 0, 0, 3847, 3826, 1, 0, 0, 0, 3848, 309, 1, 0, 0, 0, 3849, 3851, 5, 63, 0, 0, 3850, 3849, 1, 0, 0, 0, 3850, 3851, 1, 0, 0, 0, 3851, 3852, 1, 0, 0, 0, 3852, 3853, 5, 92, 0, 0, 3853, 3866, 3, 774, 387, 0, 3854, 3856, 5, 259, 0, 0, 3855, 3854, 1, 0, 0, 0, 3855, 3856, 1, 0, 0, 0, 3856, 3857, 1, 0, 0, 0, 3857, 3858, 5, 376, 0, 0, 3858, 3866, 3, 778, 389, 0, 3859, 3860, 7, 46, 0, 0, 3860, 3866, 3, 316, 158, 0, 3861, 3862, 5, 355, 0, 0, 3862, 3863, 5, 325, 0, 0, 3863, 3864, 7, 41, 0, 0, 3864, 3866, 3, 316, 158, 0, 3865, 3850, 1, 0, 0, 0, 3865, 3855, 1, 0, 0, 0, 3865, 3859, 1, 0, 0, 0, 3865, 3861, 1, 0, 0, 0, 3866, 311, 1, 0, 0, 0, 3867, 3868, 5, 198, 0, 0, 3868, 3884, 5, 357, 0, 0, 3869, 3870, 5, 131, 0, 0, 3870, 3884, 5, 446, 0, 0, 3871, 3884, 5, 204, 0, 0, 3872, 3884, 5, 452, 0, 0, 3873, 3884, 5, 331, 0, 0, 3874, 3884, 5, 318, 0, 0, 3875, 3884, 5, 451, 0, 0, 3876, 3877, 5, 63, 0, 0, 3877, 3878, 5, 174, 0, 0, 3878, 3884, 5, 381, 0, 0, 3879, 3881, 5, 295, 0, 0, 3880, 3879, 1, 0, 0, 0, 3880, 3881, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 3884, 5, 247, 0, 0, 3883, 3867, 1, 0, 0, 0, 3883, 3869, 1, 0, 0, 0, 3883, 3871, 1, 0, 0, 0, 3883, 3872, 1, 0, 0, 0, 3883, 3873, 1, 0, 0, 0, 3883, 3874, 1, 0, 0, 0, 3883, 3875, 1, 0, 0, 0, 3883, 3876, 1, 0, 0, 0, 3883, 3880, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 3892, 3, 818, 409, 0, 3886, 3887, 5, 323, 0, 0, 3887, 3892, 3, 790, 395, 0, 3888, 3889, 5, 175, 0, 0, 3889, 3892, 3, 788, 394, 0, 3890, 3892, 3, 176, 88, 0, 3891, 3883, 1, 0, 0, 0, 3891, 3886, 1, 0, 0, 0, 3891, 3888, 1, 0, 0, 0, 3891, 3890, 1, 0, 0, 0, 3892, 313, 1, 0, 0, 0, 3893, 3898, 3, 316, 158, 0, 3894, 3895, 5, 6, 0, 0, 3895, 3897, 3, 316, 158, 0, 3896, 3894, 1, 0, 0, 0, 3897, 3900, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3898, 3899, 1, 0, 0, 0, 3899, 315, 1, 0, 0, 0, 3900, 3898, 1, 0, 0, 0, 3901, 3903, 3, 818, 409, 0, 3902, 3904, 3, 318, 159, 0, 3903, 3902, 1, 0, 0, 0, 3903, 3904, 1, 0, 0, 0, 3904, 317, 1, 0, 0, 0, 3905, 3906, 5, 11, 0, 0, 3906, 3908, 3, 824, 412, 0, 3907, 3905, 1, 0, 0, 0, 3908, 3909, 1, 0, 0, 0, 3909, 3907, 1, 0, 0, 0, 3909, 3910, 1, 0, 0, 0, 3910, 319, 1, 0, 0, 0, 3911, 3913, 5, 358, 0, 0, 3912, 3914, 5, 92, 0, 0, 3913, 3912, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3915, 1, 0, 0, 0, 3915, 3920, 3, 322, 161, 0, 3916, 3917, 5, 6, 0, 0, 3917, 3919, 3, 322, 161, 0, 3918, 3916, 1, 0, 0, 0, 3919, 3922, 1, 0, 0, 0, 3920, 3918, 1, 0, 0, 0, 3920, 3921, 1, 0, 0, 0, 3921, 3925, 1, 0, 0, 0, 3922, 3920, 1, 0, 0, 0, 3923, 3924, 7, 47, 0, 0, 3924, 3926, 5, 219, 0, 0, 3925, 3923, 1, 0, 0, 0, 3925, 3926, 1, 0, 0, 0, 3926, 3928, 1, 0, 0, 0, 3927, 3929, 3, 96, 48, 0, 3928, 3927, 1, 0, 0, 0, 3928, 3929, 1, 0, 0, 0, 3929, 321, 1, 0, 0, 0, 3930, 3932, 5, 81, 0, 0, 3931, 3930, 1, 0, 0, 0, 3931, 3932, 1, 0, 0, 0, 3932, 3933, 1, 0, 0, 0, 3933, 3935, 3, 774, 387, 0, 3934, 3936, 5, 9, 0, 0, 3935, 3934, 1, 0, 0, 0, 3935, 3936, 1, 0, 0, 0, 3936, 323, 1, 0, 0, 0, 3937, 3938, 5, 159, 0, 0, 3938, 3997, 5, 80, 0, 0, 3939, 3998, 3, 310, 155, 0, 3940, 3998, 3, 312, 156, 0, 3941, 3942, 5, 44, 0, 0, 3942, 3944, 3, 818, 409, 0, 3943, 3945, 3, 318, 159, 0, 3944, 3943, 1, 0, 0, 0, 3944, 3945, 1, 0, 0, 0, 3945, 3946, 1, 0, 0, 0, 3946, 3947, 5, 11, 0, 0, 3947, 3948, 3, 800, 400, 0, 3948, 3998, 1, 0, 0, 0, 3949, 3950, 7, 32, 0, 0, 3950, 3998, 3, 652, 326, 0, 3951, 3952, 5, 136, 0, 0, 3952, 3998, 3, 394, 197, 0, 3953, 3954, 5, 211, 0, 0, 3954, 3998, 3, 382, 191, 0, 3955, 3956, 5, 278, 0, 0, 3956, 3998, 3, 416, 208, 0, 3957, 3958, 5, 45, 0, 0, 3958, 3959, 3, 818, 409, 0, 3959, 3965, 5, 80, 0, 0, 3960, 3966, 3, 774, 387, 0, 3961, 3963, 5, 189, 0, 0, 3962, 3961, 1, 0, 0, 0, 3962, 3963, 1, 0, 0, 0, 3963, 3964, 1, 0, 0, 0, 3964, 3966, 3, 316, 158, 0, 3965, 3960, 1, 0, 0, 0, 3965, 3962, 1, 0, 0, 0, 3966, 3998, 1, 0, 0, 0, 3967, 3968, 7, 44, 0, 0, 3968, 3969, 3, 818, 409, 0, 3969, 3970, 5, 80, 0, 0, 3970, 3971, 3, 316, 158, 0, 3971, 3998, 1, 0, 0, 0, 3972, 3973, 5, 296, 0, 0, 3973, 3998, 3, 378, 189, 0, 3974, 3975, 5, 442, 0, 0, 3975, 3998, 3, 374, 187, 0, 3976, 3977, 5, 443, 0, 0, 3977, 3978, 5, 62, 0, 0, 3978, 3979, 3, 652, 326, 0, 3979, 3980, 5, 247, 0, 0, 3980, 3981, 3, 818, 409, 0, 3981, 3998, 1, 0, 0, 0, 3982, 3983, 5, 278, 0, 0, 3983, 3984, 7, 31, 0, 0, 3984, 3985, 3, 316, 158, 0, 3985, 3986, 3, 170, 85, 0, 3986, 3998, 1, 0, 0, 0, 3987, 3988, 5, 248, 0, 0, 3988, 3989, 5, 274, 0, 0, 3989, 3998, 3, 202, 101, 0, 3990, 3991, 5, 41, 0, 0, 3991, 3992, 5, 2, 0, 0, 3992, 3993, 3, 652, 326, 0, 3993, 3994, 5, 36, 0, 0, 3994, 3995, 3, 652, 326, 0, 3995, 3996, 5, 3, 0, 0, 3996, 3998, 1, 0, 0, 0, 3997, 3939, 1, 0, 0, 0, 3997, 3940, 1, 0, 0, 0, 3997, 3941, 1, 0, 0, 0, 3997, 3949, 1, 0, 0, 0, 3997, 3951, 1, 0, 0, 0, 3997, 3953, 1, 0, 0, 0, 3997, 3955, 1, 0, 0, 0, 3997, 3957, 1, 0, 0, 0, 3997, 3967, 1, 0, 0, 0, 3997, 3972, 1, 0, 0, 0, 3997, 3974, 1, 0, 0, 0, 3997, 3976, 1, 0, 0, 0, 3997, 3982, 1, 0, 0, 0, 3997, 3987, 1, 0, 0, 0, 3997, 3990, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4002, 5, 116, 0, 0, 4000, 4003, 3, 808, 404, 0, 4001, 4003, 5, 78, 0, 0, 4002, 4000, 1, 0, 0, 0, 4002, 4001, 1, 0, 0, 0, 4003, 325, 1, 0, 0, 0, 4004, 4005, 5, 327, 0, 0, 4005, 4008, 5, 246, 0, 0, 4006, 4007, 5, 62, 0, 0, 4007, 4009, 3, 58, 29, 0, 4008, 4006, 1, 0, 0, 0, 4008, 4009, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, 4028, 5, 80, 0, 0, 4011, 4012, 7, 32, 0, 0, 4012, 4029, 3, 652, 326, 0, 4013, 4014, 5, 136, 0, 0, 4014, 4029, 3, 394, 197, 0, 4015, 4016, 5, 44, 0, 0, 4016, 4029, 3, 800, 400, 0, 4017, 4018, 5, 211, 0, 0, 4018, 4029, 3, 382, 191, 0, 4019, 4020, 5, 248, 0, 0, 4020, 4021, 5, 274, 0, 0, 4021, 4029, 3, 202, 101, 0, 4022, 4023, 5, 296, 0, 0, 4023, 4029, 3, 378, 189, 0, 4024, 4025, 5, 442, 0, 0, 4025, 4029, 3, 374, 187, 0, 4026, 4029, 3, 310, 155, 0, 4027, 4029, 3, 312, 156, 0, 4028, 4011, 1, 0, 0, 0, 4028, 4013, 1, 0, 0, 0, 4028, 4015, 1, 0, 0, 0, 4028, 4017, 1, 0, 0, 0, 4028, 4019, 1, 0, 0, 0, 4028, 4022, 1, 0, 0, 0, 4028, 4024, 1, 0, 0, 0, 4028, 4026, 1, 0, 0, 0, 4028, 4027, 1, 0, 0, 0, 4029, 4030, 1, 0, 0, 0, 4030, 4033, 5, 116, 0, 0, 4031, 4034, 3, 808, 404, 0, 4032, 4034, 5, 78, 0, 0, 4033, 4031, 1, 0, 0, 0, 4033, 4032, 1, 0, 0, 0, 4034, 327, 1, 0, 0, 0, 4035, 4036, 7, 48, 0, 0, 4036, 4037, 3, 330, 165, 0, 4037, 329, 1, 0, 0, 0, 4038, 4040, 7, 49, 0, 0, 4039, 4038, 1, 0, 0, 0, 4039, 4040, 1, 0, 0, 0, 4040, 4042, 1, 0, 0, 0, 4041, 4043, 3, 332, 166, 0, 4042, 4041, 1, 0, 0, 0, 4042, 4043, 1, 0, 0, 0, 4043, 4044, 1, 0, 0, 0, 4044, 4082, 3, 818, 409, 0, 4045, 4047, 7, 50, 0, 0, 4046, 4045, 1, 0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4048, 1, 0, 0, 0, 4048, 4050, 3, 812, 406, 0, 4049, 4051, 3, 332, 166, 0, 4050, 4049, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 4052, 1, 0, 0, 0, 4052, 4053, 3, 818, 409, 0, 4053, 4082, 1, 0, 0, 0, 4054, 4056, 5, 210, 0, 0, 4055, 4057, 3, 812, 406, 0, 4056, 4055, 1, 0, 0, 0, 4056, 4057, 1, 0, 0, 0, 4057, 4059, 1, 0, 0, 0, 4058, 4060, 3, 332, 166, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4082, 3, 818, 409, 0, 4062, 4064, 5, 210, 0, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4065, 1, 0, 0, 0, 4065, 4067, 5, 30, 0, 0, 4066, 4068, 3, 332, 166, 0, 4067, 4066, 1, 0, 0, 0, 4067, 4068, 1, 0, 0, 0, 4068, 4069, 1, 0, 0, 0, 4069, 4082, 3, 818, 409, 0, 4070, 4075, 5, 144, 0, 0, 4071, 4073, 5, 30, 0, 0, 4072, 4071, 1, 0, 0, 0, 4072, 4073, 1, 0, 0, 0, 4073, 4076, 1, 0, 0, 0, 4074, 4076, 3, 812, 406, 0, 4075, 4072, 1, 0, 0, 0, 4075, 4074, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4079, 3, 332, 166, 0, 4078, 4077, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4080, 1, 0, 0, 0, 4080, 4082, 3, 818, 409, 0, 4081, 4039, 1, 0, 0, 0, 4081, 4046, 1, 0, 0, 0, 4081, 4054, 1, 0, 0, 0, 4081, 4063, 1, 0, 0, 0, 4081, 4070, 1, 0, 0, 0, 4082, 331, 1, 0, 0, 0, 4083, 4084, 7, 51, 0, 0, 4084, 333, 1, 0, 0, 0, 4085, 4086, 5, 65, 0, 0, 4086, 4087, 3, 338, 169, 0, 4087, 4088, 5, 80, 0, 0, 4088, 4089, 3, 344, 172, 0, 4089, 4090, 5, 94, 0, 0, 4090, 4094, 3, 346, 173, 0, 4091, 4092, 5, 105, 0, 0, 4092, 4093, 5, 65, 0, 0, 4093, 4095, 5, 279, 0, 0, 4094, 4091, 1, 0, 0, 0, 4094, 4095, 1, 0, 0, 0, 4095, 335, 1, 0, 0, 0, 4096, 4100, 5, 317, 0, 0, 4097, 4098, 5, 65, 0, 0, 4098, 4099, 5, 279, 0, 0, 4099, 4101, 5, 62, 0, 0, 4100, 4097, 1, 0, 0, 0, 4100, 4101, 1, 0, 0, 0, 4101, 4102, 1, 0, 0, 0, 4102, 4103, 3, 338, 169, 0, 4103, 4104, 5, 80, 0, 0, 4104, 4105, 3, 344, 172, 0, 4105, 4106, 5, 64, 0, 0, 4106, 4108, 3, 346, 173, 0, 4107, 4109, 3, 96, 48, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 337, 1, 0, 0, 0, 4110, 4115, 3, 342, 171, 0, 4111, 4112, 5, 6, 0, 0, 4112, 4114, 3, 342, 171, 0, 4113, 4111, 1, 0, 0, 0, 4114, 4117, 1, 0, 0, 0, 4115, 4113, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4134, 1, 0, 0, 0, 4117, 4115, 1, 0, 0, 0, 4118, 4120, 5, 30, 0, 0, 4119, 4121, 5, 294, 0, 0, 4120, 4119, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 4123, 1, 0, 0, 0, 4122, 4124, 3, 144, 72, 0, 4123, 4122, 1, 0, 0, 0, 4123, 4124, 1, 0, 0, 0, 4124, 4134, 1, 0, 0, 0, 4125, 4130, 3, 340, 170, 0, 4126, 4127, 5, 6, 0, 0, 4127, 4129, 3, 340, 170, 0, 4128, 4126, 1, 0, 0, 0, 4129, 4132, 1, 0, 0, 0, 4130, 4128, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4134, 1, 0, 0, 0, 4132, 4130, 1, 0, 0, 0, 4133, 4110, 1, 0, 0, 0, 4133, 4118, 1, 0, 0, 0, 4133, 4125, 1, 0, 0, 0, 4134, 339, 1, 0, 0, 0, 4135, 4136, 7, 52, 0, 0, 4136, 341, 1, 0, 0, 0, 4137, 4142, 5, 88, 0, 0, 4138, 4142, 5, 86, 0, 0, 4139, 4142, 5, 46, 0, 0, 4140, 4142, 3, 818, 409, 0, 4141, 4137, 1, 0, 0, 0, 4141, 4138, 1, 0, 0, 0, 4141, 4139, 1, 0, 0, 0, 4141, 4140, 1, 0, 0, 0, 4142, 4144, 1, 0, 0, 0, 4143, 4145, 3, 144, 72, 0, 4144, 4143, 1, 0, 0, 0, 4144, 4145, 1, 0, 0, 0, 4145, 343, 1, 0, 0, 0, 4146, 4147, 5, 92, 0, 0, 4147, 4192, 3, 762, 381, 0, 4148, 4150, 5, 328, 0, 0, 4149, 4148, 1, 0, 0, 0, 4149, 4150, 1, 0, 0, 0, 4150, 4151, 1, 0, 0, 0, 4151, 4192, 3, 760, 380, 0, 4152, 4156, 5, 63, 0, 0, 4153, 4154, 5, 174, 0, 0, 4154, 4157, 5, 381, 0, 0, 4155, 4157, 5, 331, 0, 0, 4156, 4153, 1, 0, 0, 0, 4156, 4155, 1, 0, 0, 0, 4157, 4160, 1, 0, 0, 0, 4158, 4160, 5, 247, 0, 0, 4159, 4152, 1, 0, 0, 0, 4159, 4158, 1, 0, 0, 0, 4160, 4161, 1, 0, 0, 0, 4161, 4192, 3, 784, 392, 0, 4162, 4163, 5, 211, 0, 0, 4163, 4192, 3, 380, 190, 0, 4164, 4165, 5, 296, 0, 0, 4165, 4192, 3, 376, 188, 0, 4166, 4167, 5, 442, 0, 0, 4167, 4192, 3, 372, 186, 0, 4168, 4169, 5, 175, 0, 0, 4169, 4192, 3, 766, 383, 0, 4170, 4171, 7, 32, 0, 0, 4171, 4192, 3, 314, 157, 0, 4172, 4173, 5, 248, 0, 0, 4173, 4174, 5, 274, 0, 0, 4174, 4179, 3, 202, 101, 0, 4175, 4176, 5, 6, 0, 0, 4176, 4178, 3, 202, 101, 0, 4177, 4175, 1, 0, 0, 0, 4178, 4181, 1, 0, 0, 0, 4179, 4177, 1, 0, 0, 0, 4179, 4180, 1, 0, 0, 0, 4180, 4192, 1, 0, 0, 0, 4181, 4179, 1, 0, 0, 0, 4182, 4183, 5, 323, 0, 0, 4183, 4192, 3, 764, 382, 0, 4184, 4185, 5, 351, 0, 0, 4185, 4192, 3, 782, 391, 0, 4186, 4187, 5, 30, 0, 0, 4187, 4188, 7, 53, 0, 0, 4188, 4189, 5, 68, 0, 0, 4189, 4190, 5, 323, 0, 0, 4190, 4192, 3, 764, 382, 0, 4191, 4146, 1, 0, 0, 0, 4191, 4149, 1, 0, 0, 0, 4191, 4159, 1, 0, 0, 0, 4191, 4162, 1, 0, 0, 0, 4191, 4164, 1, 0, 0, 0, 4191, 4166, 1, 0, 0, 0, 4191, 4168, 1, 0, 0, 0, 4191, 4170, 1, 0, 0, 0, 4191, 4172, 1, 0, 0, 0, 4191, 4182, 1, 0, 0, 0, 4191, 4184, 1, 0, 0, 0, 4191, 4186, 1, 0, 0, 0, 4192, 345, 1, 0, 0, 0, 4193, 4195, 5, 66, 0, 0, 4194, 4193, 1, 0, 0, 0, 4194, 4195, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4197, 3, 814, 407, 0, 4197, 4205, 1, 0, 0, 0, 4198, 4200, 5, 6, 0, 0, 4199, 4201, 5, 66, 0, 0, 4200, 4199, 1, 0, 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4202, 1, 0, 0, 0, 4202, 4204, 3, 814, 407, 0, 4203, 4198, 1, 0, 0, 0, 4204, 4207, 1, 0, 0, 0, 4205, 4203, 1, 0, 0, 0, 4205, 4206, 1, 0, 0, 0, 4206, 347, 1, 0, 0, 0, 4207, 4205, 1, 0, 0, 0, 4208, 4209, 5, 65, 0, 0, 4209, 4214, 3, 342, 171, 0, 4210, 4211, 5, 6, 0, 0, 4211, 4213, 3, 342, 171, 0, 4212, 4210, 1, 0, 0, 0, 4213, 4216, 1, 0, 0, 0, 4214, 4212, 1, 0, 0, 0, 4214, 4215, 1, 0, 0, 0, 4215, 4217, 1, 0, 0, 0, 4216, 4214, 1, 0, 0, 0, 4217, 4218, 5, 94, 0, 0, 4218, 4222, 3, 816, 408, 0, 4219, 4220, 5, 105, 0, 0, 4220, 4221, 5, 134, 0, 0, 4221, 4223, 5, 279, 0, 0, 4222, 4219, 1, 0, 0, 0, 4222, 4223, 1, 0, 0, 0, 4223, 4227, 1, 0, 0, 0, 4224, 4225, 5, 214, 0, 0, 4225, 4226, 5, 147, 0, 0, 4226, 4228, 3, 814, 407, 0, 4227, 4224, 1, 0, 0, 0, 4227, 4228, 1, 0, 0, 0, 4228, 349, 1, 0, 0, 0, 4229, 4233, 5, 317, 0, 0, 4230, 4231, 5, 134, 0, 0, 4231, 4232, 5, 279, 0, 0, 4232, 4234, 5, 62, 0, 0, 4233, 4230, 1, 0, 0, 0, 4233, 4234, 1, 0, 0, 0, 4234, 4235, 1, 0, 0, 0, 4235, 4240, 3, 342, 171, 0, 4236, 4237, 5, 6, 0, 0, 4237, 4239, 3, 342, 171, 0, 4238, 4236, 1, 0, 0, 0, 4239, 4242, 1, 0, 0, 0, 4240, 4238, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4243, 1, 0, 0, 0, 4242, 4240, 1, 0, 0, 0, 4243, 4244, 5, 64, 0, 0, 4244, 4248, 3, 816, 408, 0, 4245, 4246, 5, 214, 0, 0, 4246, 4247, 5, 147, 0, 0, 4247, 4249, 3, 814, 407, 0, 4248, 4245, 1, 0, 0, 0, 4248, 4249, 1, 0, 0, 0, 4249, 4251, 1, 0, 0, 0, 4250, 4252, 3, 96, 48, 0, 4251, 4250, 1, 0, 0, 0, 4251, 4252, 1, 0, 0, 0, 4252, 351, 1, 0, 0, 0, 4253, 4254, 5, 138, 0, 0, 4254, 4255, 5, 53, 0, 0, 4255, 4264, 5, 294, 0, 0, 4256, 4257, 5, 68, 0, 0, 4257, 4258, 5, 323, 0, 0, 4258, 4263, 3, 764, 382, 0, 4259, 4260, 5, 62, 0, 0, 4260, 4261, 7, 2, 0, 0, 4261, 4263, 3, 816, 408, 0, 4262, 4256, 1, 0, 0, 0, 4262, 4259, 1, 0, 0, 0, 4263, 4266, 1, 0, 0, 0, 4264, 4262, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, 0, 4265, 4267, 1, 0, 0, 0, 4266, 4264, 1, 0, 0, 0, 4267, 4268, 3, 354, 177, 0, 4268, 353, 1, 0, 0, 0, 4269, 4270, 5, 65, 0, 0, 4270, 4271, 3, 338, 169, 0, 4271, 4272, 5, 80, 0, 0, 4272, 4273, 3, 356, 178, 0, 4273, 4274, 5, 94, 0, 0, 4274, 4278, 3, 346, 173, 0, 4275, 4276, 5, 105, 0, 0, 4276, 4277, 5, 65, 0, 0, 4277, 4279, 5, 279, 0, 0, 4278, 4275, 1, 0, 0, 0, 4278, 4279, 1, 0, 0, 0, 4279, 4295, 1, 0, 0, 0, 4280, 4284, 5, 317, 0, 0, 4281, 4282, 5, 65, 0, 0, 4282, 4283, 5, 279, 0, 0, 4283, 4285, 5, 62, 0, 0, 4284, 4281, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4286, 1, 0, 0, 0, 4286, 4287, 3, 338, 169, 0, 4287, 4288, 5, 80, 0, 0, 4288, 4289, 3, 356, 178, 0, 4289, 4290, 5, 64, 0, 0, 4290, 4292, 3, 346, 173, 0, 4291, 4293, 3, 96, 48, 0, 4292, 4291, 1, 0, 0, 0, 4292, 4293, 1, 0, 0, 0, 4293, 4295, 1, 0, 0, 0, 4294, 4269, 1, 0, 0, 0, 4294, 4280, 1, 0, 0, 0, 4295, 355, 1, 0, 0, 0, 4296, 4297, 7, 54, 0, 0, 4297, 357, 1, 0, 0, 0, 4298, 4300, 5, 46, 0, 0, 4299, 4301, 5, 98, 0, 0, 4300, 4299, 1, 0, 0, 0, 4300, 4301, 1, 0, 0, 0, 4301, 4302, 1, 0, 0, 0, 4302, 4304, 5, 226, 0, 0, 4303, 4305, 5, 109, 0, 0, 4304, 4303, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 4307, 1, 0, 0, 0, 4306, 4308, 3, 294, 147, 0, 4307, 4306, 1, 0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 4310, 1, 0, 0, 0, 4309, 4311, 3, 818, 409, 0, 4310, 4309, 1, 0, 0, 0, 4310, 4311, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4313, 5, 80, 0, 0, 4313, 4315, 3, 624, 312, 0, 4314, 4316, 3, 170, 85, 0, 4315, 4314, 1, 0, 0, 0, 4315, 4316, 1, 0, 0, 0, 4316, 4317, 1, 0, 0, 0, 4317, 4320, 3, 360, 180, 0, 4318, 4319, 5, 441, 0, 0, 4319, 4321, 3, 360, 180, 0, 4320, 4318, 1, 0, 0, 0, 4320, 4321, 1, 0, 0, 0, 4321, 4327, 1, 0, 0, 0, 4322, 4324, 5, 273, 0, 0, 4323, 4325, 5, 77, 0, 0, 4324, 4323, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 4326, 1, 0, 0, 0, 4326, 4328, 5, 56, 0, 0, 4327, 4322, 1, 0, 0, 0, 4327, 4328, 1, 0, 0, 0, 4328, 4330, 1, 0, 0, 0, 4329, 4331, 3, 102, 51, 0, 4330, 4329, 1, 0, 0, 0, 4330, 4331, 1, 0, 0, 0, 4331, 4333, 1, 0, 0, 0, 4332, 4334, 3, 176, 88, 0, 4333, 4332, 1, 0, 0, 0, 4333, 4334, 1, 0, 0, 0, 4334, 4336, 1, 0, 0, 0, 4335, 4337, 3, 638, 319, 0, 4336, 4335, 1, 0, 0, 0, 4336, 4337, 1, 0, 0, 0, 4337, 359, 1, 0, 0, 0, 4338, 4339, 5, 2, 0, 0, 4339, 4344, 3, 362, 181, 0, 4340, 4341, 5, 6, 0, 0, 4341, 4343, 3, 362, 181, 0, 4342, 4340, 1, 0, 0, 0, 4343, 4346, 1, 0, 0, 0, 4344, 4342, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 4347, 1, 0, 0, 0, 4346, 4344, 1, 0, 0, 0, 4347, 4348, 5, 3, 0, 0, 4348, 361, 1, 0, 0, 0, 4349, 4356, 3, 800, 400, 0, 4350, 4356, 3, 688, 344, 0, 4351, 4352, 5, 2, 0, 0, 4352, 4353, 3, 674, 337, 0, 4353, 4354, 5, 3, 0, 0, 4354, 4356, 1, 0, 0, 0, 4355, 4349, 1, 0, 0, 0, 4355, 4350, 1, 0, 0, 0, 4355, 4351, 1, 0, 0, 0, 4356, 4358, 1, 0, 0, 0, 4357, 4359, 3, 98, 49, 0, 4358, 4357, 1, 0, 0, 0, 4358, 4359, 1, 0, 0, 0, 4359, 4366, 1, 0, 0, 0, 4360, 4362, 3, 316, 158, 0, 4361, 4360, 1, 0, 0, 0, 4361, 4362, 1, 0, 0, 0, 4362, 4367, 1, 0, 0, 0, 4363, 4364, 3, 316, 158, 0, 4364, 4365, 3, 100, 50, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4361, 1, 0, 0, 0, 4366, 4363, 1, 0, 0, 0, 4367, 4369, 1, 0, 0, 0, 4368, 4370, 7, 55, 0, 0, 4369, 4368, 1, 0, 0, 0, 4369, 4370, 1, 0, 0, 0, 4370, 4373, 1, 0, 0, 0, 4371, 4372, 5, 273, 0, 0, 4372, 4374, 7, 56, 0, 0, 4373, 4371, 1, 0, 0, 0, 4373, 4374, 1, 0, 0, 0, 4374, 363, 1, 0, 0, 0, 4375, 4377, 5, 46, 0, 0, 4376, 4378, 3, 366, 183, 0, 4377, 4376, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4383, 1, 0, 0, 0, 4379, 4380, 5, 211, 0, 0, 4380, 4384, 3, 804, 402, 0, 4381, 4382, 5, 296, 0, 0, 4382, 4384, 3, 798, 399, 0, 4383, 4379, 1, 0, 0, 0, 4383, 4381, 1, 0, 0, 0, 4384, 4385, 1, 0, 0, 0, 4385, 4394, 5, 2, 0, 0, 4386, 4391, 3, 390, 195, 0, 4387, 4388, 5, 6, 0, 0, 4388, 4390, 3, 390, 195, 0, 4389, 4387, 1, 0, 0, 0, 4390, 4393, 1, 0, 0, 0, 4391, 4389, 1, 0, 0, 0, 4391, 4392, 1, 0, 0, 0, 4392, 4395, 1, 0, 0, 0, 4393, 4391, 1, 0, 0, 0, 4394, 4386, 1, 0, 0, 0, 4394, 4395, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4397, 5, 3, 0, 0, 4397, 4414, 1, 0, 0, 0, 4398, 4412, 5, 316, 0, 0, 4399, 4413, 3, 388, 194, 0, 4400, 4401, 5, 92, 0, 0, 4401, 4402, 5, 2, 0, 0, 4402, 4407, 3, 402, 201, 0, 4403, 4404, 5, 6, 0, 0, 4404, 4406, 3, 402, 201, 0, 4405, 4403, 1, 0, 0, 0, 4406, 4409, 1, 0, 0, 0, 4407, 4405, 1, 0, 0, 0, 4407, 4408, 1, 0, 0, 0, 4408, 4410, 1, 0, 0, 0, 4409, 4407, 1, 0, 0, 0, 4410, 4411, 5, 3, 0, 0, 4411, 4413, 1, 0, 0, 0, 4412, 4399, 1, 0, 0, 0, 4412, 4400, 1, 0, 0, 0, 4413, 4415, 1, 0, 0, 0, 4414, 4398, 1, 0, 0, 0, 4414, 4415, 1, 0, 0, 0, 4415, 4417, 1, 0, 0, 0, 4416, 4418, 3, 398, 199, 0, 4417, 4416, 1, 0, 0, 0, 4418, 4419, 1, 0, 0, 0, 4419, 4417, 1, 0, 0, 0, 4419, 4420, 1, 0, 0, 0, 4420, 4426, 1, 0, 0, 0, 4421, 4422, 5, 105, 0, 0, 4422, 4423, 5, 2, 0, 0, 4423, 4424, 3, 784, 392, 0, 4424, 4425, 5, 3, 0, 0, 4425, 4427, 1, 0, 0, 0, 4426, 4421, 1, 0, 0, 0, 4426, 4427, 1, 0, 0, 0, 4427, 365, 1, 0, 0, 0, 4428, 4429, 5, 82, 0, 0, 4429, 4430, 5, 311, 0, 0, 4430, 367, 1, 0, 0, 0, 4431, 4433, 5, 2, 0, 0, 4432, 4434, 3, 370, 185, 0, 4433, 4432, 1, 0, 0, 0, 4433, 4434, 1, 0, 0, 0, 4434, 4435, 1, 0, 0, 0, 4435, 4436, 5, 3, 0, 0, 4436, 369, 1, 0, 0, 0, 4437, 4442, 3, 384, 192, 0, 4438, 4439, 5, 6, 0, 0, 4439, 4441, 3, 384, 192, 0, 4440, 4438, 1, 0, 0, 0, 4441, 4444, 1, 0, 0, 0, 4442, 4440, 1, 0, 0, 0, 4442, 4443, 1, 0, 0, 0, 4443, 371, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4445, 4450, 3, 374, 187, 0, 4446, 4447, 5, 6, 0, 0, 4447, 4449, 3, 374, 187, 0, 4448, 4446, 1, 0, 0, 0, 4449, 4452, 1, 0, 0, 0, 4450, 4448, 1, 0, 0, 0, 4450, 4451, 1, 0, 0, 0, 4451, 373, 1, 0, 0, 0, 4452, 4450, 1, 0, 0, 0, 4453, 4454, 3, 794, 397, 0, 4454, 4455, 3, 368, 184, 0, 4455, 4459, 1, 0, 0, 0, 4456, 4459, 3, 832, 416, 0, 4457, 4459, 3, 780, 390, 0, 4458, 4453, 1, 0, 0, 0, 4458, 4456, 1, 0, 0, 0, 4458, 4457, 1, 0, 0, 0, 4459, 375, 1, 0, 0, 0, 4460, 4465, 3, 378, 189, 0, 4461, 4462, 5, 6, 0, 0, 4462, 4464, 3, 378, 189, 0, 4463, 4461, 1, 0, 0, 0, 4464, 4467, 1, 0, 0, 0, 4465, 4463, 1, 0, 0, 0, 4465, 4466, 1, 0, 0, 0, 4466, 377, 1, 0, 0, 0, 4467, 4465, 1, 0, 0, 0, 4468, 4469, 3, 796, 398, 0, 4469, 4470, 3, 368, 184, 0, 4470, 4474, 1, 0, 0, 0, 4471, 4474, 3, 832, 416, 0, 4472, 4474, 3, 780, 390, 0, 4473, 4468, 1, 0, 0, 0, 4473, 4471, 1, 0, 0, 0, 4473, 4472, 1, 0, 0, 0, 4474, 379, 1, 0, 0, 0, 4475, 4480, 3, 382, 191, 0, 4476, 4477, 5, 6, 0, 0, 4477, 4479, 3, 382, 191, 0, 4478, 4476, 1, 0, 0, 0, 4479, 4482, 1, 0, 0, 0, 4480, 4478, 1, 0, 0, 0, 4480, 4481, 1, 0, 0, 0, 4481, 381, 1, 0, 0, 0, 4482, 4480, 1, 0, 0, 0, 4483, 4484, 3, 806, 403, 0, 4484, 4485, 3, 368, 184, 0, 4485, 4489, 1, 0, 0, 0, 4486, 4489, 3, 832, 416, 0, 4487, 4489, 3, 780, 390, 0, 4488, 4483, 1, 0, 0, 0, 4488, 4486, 1, 0, 0, 0, 4488, 4487, 1, 0, 0, 0, 4489, 383, 1, 0, 0, 0, 4490, 4492, 3, 386, 193, 0, 4491, 4493, 3, 820, 410, 0, 4492, 4491, 1, 0, 0, 0, 4492, 4493, 1, 0, 0, 0, 4493, 4499, 1, 0, 0, 0, 4494, 4496, 3, 820, 410, 0, 4495, 4497, 3, 386, 193, 0, 4496, 4495, 1, 0, 0, 0, 4496, 4497, 1, 0, 0, 0, 4497, 4499, 1, 0, 0, 0, 4498, 4490, 1, 0, 0, 0, 4498, 4494, 1, 0, 0, 0, 4498, 4499, 1, 0, 0, 0, 4499, 4500, 1, 0, 0, 0, 4500, 4501, 3, 388, 194, 0, 4501, 385, 1, 0, 0, 0, 4502, 4504, 5, 68, 0, 0, 4503, 4505, 5, 453, 0, 0, 4504, 4503, 1, 0, 0, 0, 4504, 4505, 1, 0, 0, 0, 4505, 4510, 1, 0, 0, 0, 4506, 4510, 5, 453, 0, 0, 4507, 4510, 5, 400, 0, 0, 4508, 4510, 5, 101, 0, 0, 4509, 4502, 1, 0, 0, 0, 4509, 4506, 1, 0, 0, 0, 4509, 4507, 1, 0, 0, 0, 4509, 4508, 1, 0, 0, 0, 4510, 387, 1, 0, 0, 0, 4511, 4521, 3, 652, 326, 0, 4512, 4514, 5, 415, 0, 0, 4513, 4512, 1, 0, 0, 0, 4513, 4514, 1, 0, 0, 0, 4514, 4515, 1, 0, 0, 0, 4515, 4516, 3, 820, 410, 0, 4516, 4517, 3, 318, 159, 0, 4517, 4518, 5, 27, 0, 0, 4518, 4519, 5, 360, 0, 0, 4519, 4521, 1, 0, 0, 0, 4520, 4511, 1, 0, 0, 0, 4520, 4513, 1, 0, 0, 0, 4521, 389, 1, 0, 0, 0, 4522, 4525, 3, 384, 192, 0, 4523, 4524, 7, 57, 0, 0, 4524, 4526, 3, 674, 337, 0, 4525, 4523, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 391, 1, 0, 0, 0, 4527, 4537, 5, 2, 0, 0, 4528, 4538, 5, 9, 0, 0, 4529, 4531, 3, 370, 185, 0, 4530, 4529, 1, 0, 0, 0, 4530, 4531, 1, 0, 0, 0, 4531, 4535, 1, 0, 0, 0, 4532, 4533, 5, 83, 0, 0, 4533, 4534, 5, 147, 0, 0, 4534, 4536, 3, 370, 185, 0, 4535, 4532, 1, 0, 0, 0, 4535, 4536, 1, 0, 0, 0, 4536, 4538, 1, 0, 0, 0, 4537, 4528, 1, 0, 0, 0, 4537, 4530, 1, 0, 0, 0, 4538, 4539, 1, 0, 0, 0, 4539, 4540, 5, 3, 0, 0, 4540, 393, 1, 0, 0, 0, 4541, 4542, 3, 806, 403, 0, 4542, 4543, 3, 392, 196, 0, 4543, 395, 1, 0, 0, 0, 4544, 4545, 5, 316, 0, 0, 4545, 4548, 5, 78, 0, 0, 4546, 4548, 5, 149, 0, 0, 4547, 4544, 1, 0, 0, 0, 4547, 4546, 1, 0, 0, 0, 4548, 4549, 1, 0, 0, 0, 4549, 4550, 5, 80, 0, 0, 4550, 4551, 5, 78, 0, 0, 4551, 4574, 5, 458, 0, 0, 4552, 4574, 5, 346, 0, 0, 4553, 4574, 5, 222, 0, 0, 4554, 4574, 5, 338, 0, 0, 4555, 4574, 5, 377, 0, 0, 4556, 4558, 5, 205, 0, 0, 4557, 4556, 1, 0, 0, 0, 4557, 4558, 1, 0, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4560, 5, 327, 0, 0, 4560, 4574, 7, 58, 0, 0, 4561, 4574, 5, 250, 0, 0, 4562, 4563, 5, 77, 0, 0, 4563, 4574, 5, 250, 0, 0, 4564, 4565, 7, 59, 0, 0, 4565, 4574, 3, 202, 101, 0, 4566, 4567, 5, 459, 0, 0, 4567, 4574, 3, 316, 158, 0, 4568, 4569, 5, 333, 0, 0, 4569, 4574, 3, 42, 21, 0, 4570, 4574, 3, 60, 30, 0, 4571, 4572, 5, 460, 0, 0, 4572, 4574, 3, 818, 409, 0, 4573, 4547, 1, 0, 0, 0, 4573, 4552, 1, 0, 0, 0, 4573, 4553, 1, 0, 0, 0, 4573, 4554, 1, 0, 0, 0, 4573, 4555, 1, 0, 0, 0, 4573, 4557, 1, 0, 0, 0, 4573, 4561, 1, 0, 0, 0, 4573, 4562, 1, 0, 0, 0, 4573, 4564, 1, 0, 0, 0, 4573, 4566, 1, 0, 0, 0, 4573, 4568, 1, 0, 0, 0, 4573, 4570, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, 0, 4574, 397, 1, 0, 0, 0, 4575, 4576, 5, 36, 0, 0, 4576, 4577, 3, 808, 404, 0, 4577, 4578, 3, 462, 231, 0, 4578, 4611, 1, 0, 0, 0, 4579, 4580, 5, 247, 0, 0, 4580, 4611, 3, 58, 29, 0, 4581, 4582, 5, 443, 0, 0, 4582, 4583, 5, 62, 0, 0, 4583, 4584, 5, 360, 0, 0, 4584, 4591, 3, 652, 326, 0, 4585, 4586, 5, 6, 0, 0, 4586, 4587, 5, 62, 0, 0, 4587, 4588, 5, 360, 0, 0, 4588, 4590, 3, 652, 326, 0, 4589, 4585, 1, 0, 0, 0, 4590, 4593, 1, 0, 0, 0, 4591, 4589, 1, 0, 0, 0, 4591, 4592, 1, 0, 0, 0, 4592, 4611, 1, 0, 0, 0, 4593, 4591, 1, 0, 0, 0, 4594, 4611, 5, 104, 0, 0, 4595, 4596, 5, 333, 0, 0, 4596, 4603, 3, 818, 409, 0, 4597, 4598, 5, 94, 0, 0, 4598, 4604, 3, 818, 409, 0, 4599, 4600, 5, 10, 0, 0, 4600, 4604, 3, 818, 409, 0, 4601, 4602, 5, 64, 0, 0, 4602, 4604, 5, 434, 0, 0, 4603, 4597, 1, 0, 0, 0, 4603, 4599, 1, 0, 0, 0, 4603, 4601, 1, 0, 0, 0, 4604, 4611, 1, 0, 0, 0, 4605, 4606, 5, 36, 0, 0, 4606, 4611, 3, 818, 409, 0, 4607, 4611, 3, 4, 2, 0, 4608, 4611, 3, 396, 198, 0, 4609, 4611, 3, 818, 409, 0, 4610, 4575, 1, 0, 0, 0, 4610, 4579, 1, 0, 0, 0, 4610, 4581, 1, 0, 0, 0, 4610, 4594, 1, 0, 0, 0, 4610, 4595, 1, 0, 0, 0, 4610, 4605, 1, 0, 0, 0, 4610, 4607, 1, 0, 0, 0, 4610, 4608, 1, 0, 0, 0, 4610, 4609, 1, 0, 0, 0, 4611, 399, 1, 0, 0, 0, 4612, 4613, 5, 105, 0, 0, 4613, 4614, 3, 284, 142, 0, 4614, 401, 1, 0, 0, 0, 4615, 4616, 3, 800, 400, 0, 4616, 4617, 3, 388, 194, 0, 4617, 403, 1, 0, 0, 0, 4618, 4625, 5, 138, 0, 0, 4619, 4620, 5, 211, 0, 0, 4620, 4626, 3, 382, 191, 0, 4621, 4622, 5, 296, 0, 0, 4622, 4626, 3, 378, 189, 0, 4623, 4624, 5, 442, 0, 0, 4624, 4626, 3, 374, 187, 0, 4625, 4619, 1, 0, 0, 0, 4625, 4621, 1, 0, 0, 0, 4625, 4623, 1, 0, 0, 0, 4626, 4628, 1, 0, 0, 0, 4627, 4629, 3, 396, 198, 0, 4628, 4627, 1, 0, 0, 0, 4629, 4630, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4630, 4631, 1, 0, 0, 0, 4631, 4633, 1, 0, 0, 0, 4632, 4634, 5, 315, 0, 0, 4633, 4632, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, 4634, 405, 1, 0, 0, 0, 4635, 4651, 5, 191, 0, 0, 4636, 4638, 5, 211, 0, 0, 4637, 4639, 3, 422, 211, 0, 4638, 4637, 1, 0, 0, 0, 4638, 4639, 1, 0, 0, 0, 4639, 4640, 1, 0, 0, 0, 4640, 4652, 3, 380, 190, 0, 4641, 4643, 5, 296, 0, 0, 4642, 4644, 3, 422, 211, 0, 4643, 4642, 1, 0, 0, 0, 4643, 4644, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4652, 3, 376, 188, 0, 4646, 4648, 5, 442, 0, 0, 4647, 4649, 3, 422, 211, 0, 4648, 4647, 1, 0, 0, 0, 4648, 4649, 1, 0, 0, 0, 4649, 4650, 1, 0, 0, 0, 4650, 4652, 3, 372, 186, 0, 4651, 4636, 1, 0, 0, 0, 4651, 4641, 1, 0, 0, 0, 4651, 4646, 1, 0, 0, 0, 4652, 4654, 1, 0, 0, 0, 4653, 4655, 3, 96, 48, 0, 4654, 4653, 1, 0, 0, 0, 4654, 4655, 1, 0, 0, 0, 4655, 407, 1, 0, 0, 0, 4656, 4657, 5, 191, 0, 0, 4657, 4659, 5, 136, 0, 0, 4658, 4660, 3, 422, 211, 0, 4659, 4658, 1, 0, 0, 0, 4659, 4660, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 4666, 3, 394, 197, 0, 4662, 4663, 5, 6, 0, 0, 4663, 4665, 3, 394, 197, 0, 4664, 4662, 1, 0, 0, 0, 4665, 4668, 1, 0, 0, 0, 4666, 4664, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 4670, 1, 0, 0, 0, 4668, 4666, 1, 0, 0, 0, 4669, 4671, 3, 96, 48, 0, 4670, 4669, 1, 0, 0, 0, 4670, 4671, 1, 0, 0, 0, 4671, 409, 1, 0, 0, 0, 4672, 4673, 5, 191, 0, 0, 4673, 4675, 5, 278, 0, 0, 4674, 4676, 3, 422, 211, 0, 4675, 4674, 1, 0, 0, 0, 4675, 4676, 1, 0, 0, 0, 4676, 4677, 1, 0, 0, 0, 4677, 4682, 3, 416, 208, 0, 4678, 4679, 5, 6, 0, 0, 4679, 4681, 3, 416, 208, 0, 4680, 4678, 1, 0, 0, 0, 4681, 4684, 1, 0, 0, 0, 4682, 4680, 1, 0, 0, 0, 4682, 4683, 1, 0, 0, 0, 4683, 4686, 1, 0, 0, 0, 4684, 4682, 1, 0, 0, 0, 4685, 4687, 3, 96, 48, 0, 4686, 4685, 1, 0, 0, 0, 4686, 4687, 1, 0, 0, 0, 4687, 411, 1, 0, 0, 0, 4688, 4701, 5, 2, 0, 0, 4689, 4692, 3, 652, 326, 0, 4690, 4691, 5, 6, 0, 0, 4691, 4693, 3, 652, 326, 0, 4692, 4690, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4702, 1, 0, 0, 0, 4694, 4695, 5, 407, 0, 0, 4695, 4696, 5, 6, 0, 0, 4696, 4702, 3, 652, 326, 0, 4697, 4698, 3, 652, 326, 0, 4698, 4699, 5, 6, 0, 0, 4699, 4700, 5, 407, 0, 0, 4700, 4702, 1, 0, 0, 0, 4701, 4689, 1, 0, 0, 0, 4701, 4694, 1, 0, 0, 0, 4701, 4697, 1, 0, 0, 0, 4702, 4703, 1, 0, 0, 0, 4703, 4704, 5, 3, 0, 0, 4704, 413, 1, 0, 0, 0, 4705, 4706, 3, 818, 409, 0, 4706, 4707, 5, 11, 0, 0, 4707, 4709, 1, 0, 0, 0, 4708, 4705, 1, 0, 0, 0, 4709, 4712, 1, 0, 0, 0, 4710, 4708, 1, 0, 0, 0, 4710, 4711, 1, 0, 0, 0, 4711, 4713, 1, 0, 0, 0, 4712, 4710, 1, 0, 0, 0, 4713, 4714, 3, 720, 360, 0, 4714, 415, 1, 0, 0, 0, 4715, 4716, 3, 414, 207, 0, 4716, 4717, 3, 412, 206, 0, 4717, 417, 1, 0, 0, 0, 4718, 4722, 5, 57, 0, 0, 4719, 4723, 3, 808, 404, 0, 4720, 4721, 5, 247, 0, 0, 4721, 4723, 3, 58, 29, 0, 4722, 4719, 1, 0, 0, 0, 4722, 4720, 1, 0, 0, 0, 4723, 4724, 1, 0, 0, 0, 4724, 4722, 1, 0, 0, 0, 4724, 4725, 1, 0, 0, 0, 4725, 419, 1, 0, 0, 0, 4726, 4727, 5, 46, 0, 0, 4727, 4728, 5, 41, 0, 0, 4728, 4729, 5, 2, 0, 0, 4729, 4730, 3, 652, 326, 0, 4730, 4731, 5, 36, 0, 0, 4731, 4732, 3, 652, 326, 0, 4732, 4749, 5, 3, 0, 0, 4733, 4734, 5, 379, 0, 0, 4734, 4737, 5, 211, 0, 0, 4735, 4736, 5, 36, 0, 0, 4736, 4738, 7, 60, 0, 0, 4737, 4735, 1, 0, 0, 0, 4737, 4738, 1, 0, 0, 0, 4738, 4750, 1, 0, 0, 0, 4739, 4743, 5, 105, 0, 0, 4740, 4741, 5, 211, 0, 0, 4741, 4744, 3, 382, 191, 0, 4742, 4744, 5, 400, 0, 0, 4743, 4740, 1, 0, 0, 0, 4743, 4742, 1, 0, 0, 0, 4744, 4747, 1, 0, 0, 0, 4745, 4746, 5, 36, 0, 0, 4746, 4748, 7, 60, 0, 0, 4747, 4745, 1, 0, 0, 0, 4747, 4748, 1, 0, 0, 0, 4748, 4750, 1, 0, 0, 0, 4749, 4733, 1, 0, 0, 0, 4749, 4739, 1, 0, 0, 0, 4750, 421, 1, 0, 0, 0, 4751, 4752, 5, 220, 0, 0, 4752, 4753, 5, 396, 0, 0, 4753, 423, 1, 0, 0, 0, 4754, 4756, 5, 46, 0, 0, 4755, 4757, 3, 366, 183, 0, 4756, 4755, 1, 0, 0, 0, 4756, 4757, 1, 0, 0, 0, 4757, 4758, 1, 0, 0, 0, 4758, 4759, 5, 443, 0, 0, 4759, 4760, 5, 62, 0, 0, 4760, 4761, 3, 652, 326, 0, 4761, 4762, 5, 247, 0, 0, 4762, 4763, 3, 818, 409, 0, 4763, 4778, 5, 2, 0, 0, 4764, 4765, 5, 64, 0, 0, 4765, 4769, 3, 426, 213, 0, 4766, 4767, 5, 6, 0, 0, 4767, 4768, 5, 94, 0, 0, 4768, 4770, 3, 426, 213, 0, 4769, 4766, 1, 0, 0, 0, 4769, 4770, 1, 0, 0, 0, 4770, 4779, 1, 0, 0, 0, 4771, 4772, 5, 94, 0, 0, 4772, 4776, 3, 426, 213, 0, 4773, 4774, 5, 6, 0, 0, 4774, 4775, 5, 64, 0, 0, 4775, 4777, 3, 426, 213, 0, 4776, 4773, 1, 0, 0, 0, 4776, 4777, 1, 0, 0, 0, 4777, 4779, 1, 0, 0, 0, 4778, 4764, 1, 0, 0, 0, 4778, 4771, 1, 0, 0, 0, 4779, 4780, 1, 0, 0, 0, 4780, 4781, 5, 3, 0, 0, 4781, 425, 1, 0, 0, 0, 4782, 4783, 5, 461, 0, 0, 4783, 4784, 5, 105, 0, 0, 4784, 4785, 5, 211, 0, 0, 4785, 4786, 3, 382, 191, 0, 4786, 427, 1, 0, 0, 0, 4787, 4798, 5, 306, 0, 0, 4788, 4789, 5, 2, 0, 0, 4789, 4794, 5, 128, 0, 0, 4790, 4791, 5, 6, 0, 0, 4791, 4793, 5, 128, 0, 0, 4792, 4790, 1, 0, 0, 0, 4793, 4796, 1, 0, 0, 0, 4794, 4792, 1, 0, 0, 0, 4794, 4795, 1, 0, 0, 0, 4795, 4797, 1, 0, 0, 0, 4796, 4794, 1, 0, 0, 0, 4797, 4799, 5, 3, 0, 0, 4798, 4788, 1, 0, 0, 0, 4798, 4799, 1, 0, 0, 0, 4799, 4825, 1, 0, 0, 0, 4800, 4802, 5, 226, 0, 0, 4801, 4803, 5, 109, 0, 0, 4802, 4801, 1, 0, 0, 0, 4802, 4803, 1, 0, 0, 0, 4803, 4804, 1, 0, 0, 0, 4804, 4826, 3, 780, 390, 0, 4805, 4807, 5, 92, 0, 0, 4806, 4808, 5, 109, 0, 0, 4807, 4806, 1, 0, 0, 0, 4807, 4808, 1, 0, 0, 0, 4808, 4809, 1, 0, 0, 0, 4809, 4826, 3, 774, 387, 0, 4810, 4812, 5, 323, 0, 0, 4811, 4813, 5, 109, 0, 0, 4812, 4811, 1, 0, 0, 0, 4812, 4813, 1, 0, 0, 0, 4813, 4814, 1, 0, 0, 0, 4814, 4826, 3, 790, 395, 0, 4815, 4817, 5, 349, 0, 0, 4816, 4818, 5, 109, 0, 0, 4817, 4816, 1, 0, 0, 0, 4817, 4818, 1, 0, 0, 0, 4818, 4819, 1, 0, 0, 0, 4819, 4826, 3, 818, 409, 0, 4820, 4822, 5, 175, 0, 0, 4821, 4823, 5, 109, 0, 0, 4822, 4821, 1, 0, 0, 0, 4822, 4823, 1, 0, 0, 0, 4823, 4824, 1, 0, 0, 0, 4824, 4826, 3, 788, 394, 0, 4825, 4800, 1, 0, 0, 0, 4825, 4805, 1, 0, 0, 0, 4825, 4810, 1, 0, 0, 0, 4825, 4815, 1, 0, 0, 0, 4825, 4820, 1, 0, 0, 0, 4826, 429, 1, 0, 0, 0, 4827, 4828, 5, 138, 0, 0, 4828, 4829, 3, 176, 88, 0, 4829, 4830, 7, 16, 0, 0, 4830, 4831, 3, 100, 50, 0, 4831, 431, 1, 0, 0, 0, 4832, 4837, 5, 138, 0, 0, 4833, 4834, 5, 136, 0, 0, 4834, 4838, 3, 394, 197, 0, 4835, 4836, 5, 442, 0, 0, 4836, 4838, 3, 374, 187, 0, 4837, 4833, 1, 0, 0, 0, 4837, 4835, 1, 0, 0, 0, 4838, 4839, 1, 0, 0, 0, 4839, 4840, 5, 309, 0, 0, 4840, 4841, 5, 94, 0, 0, 4841, 4842, 3, 818, 409, 0, 4842, 5040, 1, 0, 0, 0, 4843, 4844, 5, 138, 0, 0, 4844, 4845, 5, 175, 0, 0, 4845, 4846, 3, 788, 394, 0, 4846, 4847, 5, 309, 0, 0, 4847, 4848, 5, 94, 0, 0, 4848, 4849, 3, 786, 393, 0, 4849, 5040, 1, 0, 0, 0, 4850, 4851, 5, 138, 0, 0, 4851, 4852, 7, 61, 0, 0, 4852, 4853, 3, 316, 158, 0, 4853, 4854, 5, 309, 0, 0, 4854, 4855, 5, 94, 0, 0, 4855, 4856, 3, 818, 409, 0, 4856, 5040, 1, 0, 0, 0, 4857, 4858, 5, 138, 0, 0, 4858, 4859, 5, 211, 0, 0, 4859, 4860, 3, 382, 191, 0, 4860, 4861, 5, 309, 0, 0, 4861, 4862, 5, 94, 0, 0, 4862, 4863, 3, 804, 402, 0, 4863, 5040, 1, 0, 0, 0, 4864, 4865, 5, 138, 0, 0, 4865, 4866, 5, 278, 0, 0, 4866, 4867, 7, 31, 0, 0, 4867, 4868, 3, 316, 158, 0, 4868, 4869, 3, 170, 85, 0, 4869, 4870, 5, 309, 0, 0, 4870, 4871, 5, 94, 0, 0, 4871, 4872, 3, 818, 409, 0, 4872, 5040, 1, 0, 0, 0, 4873, 4874, 5, 138, 0, 0, 4874, 4875, 5, 296, 0, 0, 4875, 4876, 3, 378, 189, 0, 4876, 4877, 5, 309, 0, 0, 4877, 4878, 5, 94, 0, 0, 4878, 4879, 3, 798, 399, 0, 4879, 5040, 1, 0, 0, 0, 4880, 4881, 5, 138, 0, 0, 4881, 4882, 5, 323, 0, 0, 4882, 4883, 3, 790, 395, 0, 4883, 4884, 5, 309, 0, 0, 4884, 4885, 5, 94, 0, 0, 4885, 4886, 3, 32, 16, 0, 4886, 5040, 1, 0, 0, 0, 4887, 4888, 5, 138, 0, 0, 4888, 4890, 7, 62, 0, 0, 4889, 4891, 3, 422, 211, 0, 4890, 4889, 1, 0, 0, 0, 4890, 4891, 1, 0, 0, 0, 4891, 4892, 1, 0, 0, 0, 4892, 4893, 3, 780, 390, 0, 4893, 4894, 5, 309, 0, 0, 4894, 4895, 5, 94, 0, 0, 4895, 4896, 3, 818, 409, 0, 4896, 5040, 1, 0, 0, 0, 4897, 4899, 5, 138, 0, 0, 4898, 4900, 5, 259, 0, 0, 4899, 4898, 1, 0, 0, 0, 4899, 4900, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4903, 5, 376, 0, 0, 4902, 4904, 3, 422, 211, 0, 4903, 4902, 1, 0, 0, 0, 4903, 4904, 1, 0, 0, 0, 4904, 4905, 1, 0, 0, 0, 4905, 4906, 3, 778, 389, 0, 4906, 4907, 5, 309, 0, 0, 4907, 4908, 5, 94, 0, 0, 4908, 4909, 3, 776, 388, 0, 4909, 5040, 1, 0, 0, 0, 4910, 4912, 5, 138, 0, 0, 4911, 4913, 5, 63, 0, 0, 4912, 4911, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 4916, 5, 92, 0, 0, 4915, 4917, 3, 422, 211, 0, 4916, 4915, 1, 0, 0, 0, 4916, 4917, 1, 0, 0, 0, 4917, 4918, 1, 0, 0, 0, 4918, 4919, 3, 624, 312, 0, 4919, 4920, 5, 309, 0, 0, 4920, 4921, 5, 94, 0, 0, 4921, 4922, 3, 772, 386, 0, 4922, 5040, 1, 0, 0, 0, 4923, 4948, 5, 138, 0, 0, 4924, 4926, 5, 63, 0, 0, 4925, 4924, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, 4927, 1, 0, 0, 0, 4927, 4929, 5, 92, 0, 0, 4928, 4930, 3, 422, 211, 0, 4929, 4928, 1, 0, 0, 0, 4929, 4930, 1, 0, 0, 0, 4930, 4931, 1, 0, 0, 0, 4931, 4932, 3, 624, 312, 0, 4932, 4934, 5, 309, 0, 0, 4933, 4935, 5, 44, 0, 0, 4934, 4933, 1, 0, 0, 0, 4934, 4935, 1, 0, 0, 0, 4935, 4949, 1, 0, 0, 0, 4936, 4938, 5, 259, 0, 0, 4937, 4936, 1, 0, 0, 0, 4937, 4938, 1, 0, 0, 0, 4938, 4939, 1, 0, 0, 0, 4939, 4941, 5, 376, 0, 0, 4940, 4942, 3, 422, 211, 0, 4941, 4940, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 4943, 1, 0, 0, 0, 4943, 4944, 3, 778, 389, 0, 4944, 4946, 5, 309, 0, 0, 4945, 4947, 5, 44, 0, 0, 4946, 4945, 1, 0, 0, 0, 4946, 4947, 1, 0, 0, 0, 4947, 4949, 1, 0, 0, 0, 4948, 4925, 1, 0, 0, 0, 4948, 4937, 1, 0, 0, 0, 4949, 4950, 1, 0, 0, 0, 4950, 4951, 3, 800, 400, 0, 4951, 4952, 5, 94, 0, 0, 4952, 4953, 3, 802, 401, 0, 4953, 5040, 1, 0, 0, 0, 4954, 4962, 5, 138, 0, 0, 4955, 4957, 5, 92, 0, 0, 4956, 4958, 3, 422, 211, 0, 4957, 4956, 1, 0, 0, 0, 4957, 4958, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 4963, 3, 624, 312, 0, 4960, 4961, 5, 189, 0, 0, 4961, 4963, 3, 316, 158, 0, 4962, 4955, 1, 0, 0, 0, 4962, 4960, 1, 0, 0, 0, 4963, 4964, 1, 0, 0, 0, 4964, 4965, 5, 309, 0, 0, 4965, 4966, 5, 45, 0, 0, 4966, 4967, 3, 818, 409, 0, 4967, 4968, 5, 94, 0, 0, 4968, 4969, 3, 818, 409, 0, 4969, 5040, 1, 0, 0, 0, 4970, 4977, 5, 138, 0, 0, 4971, 4973, 5, 445, 0, 0, 4972, 4974, 3, 422, 211, 0, 4973, 4972, 1, 0, 0, 0, 4973, 4974, 1, 0, 0, 0, 4974, 4978, 1, 0, 0, 0, 4975, 4978, 5, 321, 0, 0, 4976, 4978, 5, 357, 0, 0, 4977, 4971, 1, 0, 0, 0, 4977, 4975, 1, 0, 0, 0, 4977, 4976, 1, 0, 0, 0, 4978, 4979, 1, 0, 0, 0, 4979, 4980, 3, 818, 409, 0, 4980, 4981, 5, 80, 0, 0, 4981, 4982, 3, 780, 390, 0, 4982, 4983, 5, 309, 0, 0, 4983, 4984, 5, 94, 0, 0, 4984, 4985, 3, 818, 409, 0, 4985, 5040, 1, 0, 0, 0, 4986, 4999, 5, 138, 0, 0, 4987, 4988, 5, 63, 0, 0, 4988, 4989, 5, 174, 0, 0, 4989, 5000, 5, 381, 0, 0, 4990, 4992, 5, 295, 0, 0, 4991, 4990, 1, 0, 0, 0, 4991, 4992, 1, 0, 0, 0, 4992, 4993, 1, 0, 0, 0, 4993, 5000, 5, 247, 0, 0, 4994, 5000, 5, 452, 0, 0, 4995, 5000, 5, 331, 0, 0, 4996, 5000, 5, 451, 0, 0, 4997, 4998, 5, 198, 0, 0, 4998, 5000, 5, 357, 0, 0, 4999, 4987, 1, 0, 0, 0, 4999, 4991, 1, 0, 0, 0, 4999, 4994, 1, 0, 0, 0, 4999, 4995, 1, 0, 0, 0, 4999, 4996, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 5001, 1, 0, 0, 0, 5001, 5002, 3, 818, 409, 0, 5002, 5003, 5, 309, 0, 0, 5003, 5004, 5, 94, 0, 0, 5004, 5005, 3, 818, 409, 0, 5005, 5040, 1, 0, 0, 0, 5006, 5007, 5, 138, 0, 0, 5007, 5008, 7, 45, 0, 0, 5008, 5009, 3, 814, 407, 0, 5009, 5010, 5, 309, 0, 0, 5010, 5011, 5, 94, 0, 0, 5011, 5012, 3, 814, 407, 0, 5012, 5040, 1, 0, 0, 0, 5013, 5014, 5, 138, 0, 0, 5014, 5015, 3, 176, 88, 0, 5015, 5016, 5, 309, 0, 0, 5016, 5017, 5, 94, 0, 0, 5017, 5018, 3, 768, 384, 0, 5018, 5040, 1, 0, 0, 0, 5019, 5020, 5, 138, 0, 0, 5020, 5021, 5, 355, 0, 0, 5021, 5022, 5, 325, 0, 0, 5022, 5023, 7, 41, 0, 0, 5023, 5024, 3, 316, 158, 0, 5024, 5025, 5, 309, 0, 0, 5025, 5026, 5, 94, 0, 0, 5026, 5027, 3, 818, 409, 0, 5027, 5040, 1, 0, 0, 0, 5028, 5029, 5, 138, 0, 0, 5029, 5030, 5, 360, 0, 0, 5030, 5031, 3, 316, 158, 0, 5031, 5032, 5, 309, 0, 0, 5032, 5033, 5, 143, 0, 0, 5033, 5034, 3, 818, 409, 0, 5034, 5035, 5, 94, 0, 0, 5035, 5037, 3, 818, 409, 0, 5036, 5038, 3, 96, 48, 0, 5037, 5036, 1, 0, 0, 0, 5037, 5038, 1, 0, 0, 0, 5038, 5040, 1, 0, 0, 0, 5039, 4832, 1, 0, 0, 0, 5039, 4843, 1, 0, 0, 0, 5039, 4850, 1, 0, 0, 0, 5039, 4857, 1, 0, 0, 0, 5039, 4864, 1, 0, 0, 0, 5039, 4873, 1, 0, 0, 0, 5039, 4880, 1, 0, 0, 0, 5039, 4887, 1, 0, 0, 0, 5039, 4897, 1, 0, 0, 0, 5039, 4910, 1, 0, 0, 0, 5039, 4923, 1, 0, 0, 0, 5039, 4954, 1, 0, 0, 0, 5039, 4970, 1, 0, 0, 0, 5039, 4986, 1, 0, 0, 0, 5039, 5006, 1, 0, 0, 0, 5039, 5013, 1, 0, 0, 0, 5039, 5019, 1, 0, 0, 0, 5039, 5028, 1, 0, 0, 0, 5040, 433, 1, 0, 0, 0, 5041, 5058, 5, 138, 0, 0, 5042, 5043, 5, 211, 0, 0, 5043, 5059, 3, 382, 191, 0, 5044, 5045, 5, 296, 0, 0, 5045, 5059, 3, 378, 189, 0, 5046, 5047, 5, 442, 0, 0, 5047, 5059, 3, 374, 187, 0, 5048, 5049, 5, 357, 0, 0, 5049, 5050, 3, 818, 409, 0, 5050, 5051, 5, 80, 0, 0, 5051, 5052, 3, 780, 390, 0, 5052, 5059, 1, 0, 0, 0, 5053, 5054, 5, 259, 0, 0, 5054, 5055, 5, 376, 0, 0, 5055, 5059, 3, 778, 389, 0, 5056, 5057, 5, 226, 0, 0, 5057, 5059, 3, 780, 390, 0, 5058, 5042, 1, 0, 0, 0, 5058, 5044, 1, 0, 0, 0, 5058, 5046, 1, 0, 0, 0, 5058, 5048, 1, 0, 0, 0, 5058, 5053, 1, 0, 0, 0, 5058, 5056, 1, 0, 0, 0, 5059, 5061, 1, 0, 0, 0, 5060, 5062, 5, 269, 0, 0, 5061, 5060, 1, 0, 0, 0, 5061, 5062, 1, 0, 0, 0, 5062, 5063, 1, 0, 0, 0, 5063, 5064, 5, 462, 0, 0, 5064, 5065, 5, 80, 0, 0, 5065, 5066, 5, 204, 0, 0, 5066, 5067, 3, 818, 409, 0, 5067, 435, 1, 0, 0, 0, 5068, 5107, 5, 138, 0, 0, 5069, 5070, 5, 136, 0, 0, 5070, 5108, 3, 394, 197, 0, 5071, 5072, 5, 204, 0, 0, 5072, 5108, 3, 818, 409, 0, 5073, 5074, 5, 211, 0, 0, 5074, 5108, 3, 382, 191, 0, 5075, 5076, 5, 278, 0, 0, 5076, 5108, 3, 416, 208, 0, 5077, 5078, 5, 278, 0, 0, 5078, 5079, 7, 31, 0, 0, 5079, 5080, 3, 316, 158, 0, 5080, 5081, 3, 170, 85, 0, 5081, 5108, 1, 0, 0, 0, 5082, 5083, 5, 296, 0, 0, 5083, 5108, 3, 378, 189, 0, 5084, 5085, 5, 442, 0, 0, 5085, 5108, 3, 374, 187, 0, 5086, 5088, 5, 328, 0, 0, 5087, 5089, 3, 422, 211, 0, 5088, 5087, 1, 0, 0, 0, 5088, 5089, 1, 0, 0, 0, 5089, 5090, 1, 0, 0, 0, 5090, 5108, 3, 780, 390, 0, 5091, 5093, 5, 259, 0, 0, 5092, 5091, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, 5094, 1, 0, 0, 0, 5094, 5096, 5, 376, 0, 0, 5095, 5097, 3, 422, 211, 0, 5096, 5095, 1, 0, 0, 0, 5096, 5097, 1, 0, 0, 0, 5097, 5098, 1, 0, 0, 0, 5098, 5108, 3, 778, 389, 0, 5099, 5101, 5, 63, 0, 0, 5100, 5099, 1, 0, 0, 0, 5100, 5101, 1, 0, 0, 0, 5101, 5102, 1, 0, 0, 0, 5102, 5104, 5, 92, 0, 0, 5103, 5105, 3, 422, 211, 0, 5104, 5103, 1, 0, 0, 0, 5104, 5105, 1, 0, 0, 0, 5105, 5106, 1, 0, 0, 0, 5106, 5108, 3, 624, 312, 0, 5107, 5069, 1, 0, 0, 0, 5107, 5071, 1, 0, 0, 0, 5107, 5073, 1, 0, 0, 0, 5107, 5075, 1, 0, 0, 0, 5107, 5077, 1, 0, 0, 0, 5107, 5082, 1, 0, 0, 0, 5107, 5084, 1, 0, 0, 0, 5107, 5086, 1, 0, 0, 0, 5107, 5092, 1, 0, 0, 0, 5107, 5100, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5110, 5, 333, 0, 0, 5110, 5111, 5, 323, 0, 0, 5111, 5112, 3, 790, 395, 0, 5112, 5130, 1, 0, 0, 0, 5113, 5122, 5, 138, 0, 0, 5114, 5115, 5, 355, 0, 0, 5115, 5116, 5, 325, 0, 0, 5116, 5123, 7, 41, 0, 0, 5117, 5123, 5, 108, 0, 0, 5118, 5123, 5, 168, 0, 0, 5119, 5123, 5, 189, 0, 0, 5120, 5123, 5, 342, 0, 0, 5121, 5123, 5, 360, 0, 0, 5122, 5114, 1, 0, 0, 0, 5122, 5117, 1, 0, 0, 0, 5122, 5118, 1, 0, 0, 0, 5122, 5119, 1, 0, 0, 0, 5122, 5120, 1, 0, 0, 0, 5122, 5121, 1, 0, 0, 0, 5123, 5124, 1, 0, 0, 0, 5124, 5125, 3, 316, 158, 0, 5125, 5126, 5, 333, 0, 0, 5126, 5127, 5, 323, 0, 0, 5127, 5128, 3, 790, 395, 0, 5128, 5130, 1, 0, 0, 0, 5129, 5068, 1, 0, 0, 0, 5129, 5113, 1, 0, 0, 0, 5130, 437, 1, 0, 0, 0, 5131, 5132, 5, 138, 0, 0, 5132, 5133, 5, 278, 0, 0, 5133, 5134, 3, 416, 208, 0, 5134, 5135, 5, 333, 0, 0, 5135, 5136, 3, 440, 220, 0, 5136, 439, 1, 0, 0, 0, 5137, 5138, 5, 2, 0, 0, 5138, 5143, 3, 442, 221, 0, 5139, 5140, 5, 6, 0, 0, 5140, 5142, 3, 442, 221, 0, 5141, 5139, 1, 0, 0, 0, 5142, 5145, 1, 0, 0, 0, 5143, 5141, 1, 0, 0, 0, 5143, 5144, 1, 0, 0, 0, 5144, 5146, 1, 0, 0, 0, 5145, 5143, 1, 0, 0, 0, 5146, 5147, 5, 3, 0, 0, 5147, 441, 1, 0, 0, 0, 5148, 5149, 3, 824, 412, 0, 5149, 5156, 5, 10, 0, 0, 5150, 5157, 5, 407, 0, 0, 5151, 5157, 3, 388, 194, 0, 5152, 5157, 3, 834, 417, 0, 5153, 5157, 3, 726, 363, 0, 5154, 5157, 3, 202, 101, 0, 5155, 5157, 3, 808, 404, 0, 5156, 5150, 1, 0, 0, 0, 5156, 5151, 1, 0, 0, 0, 5156, 5152, 1, 0, 0, 0, 5156, 5153, 1, 0, 0, 0, 5156, 5154, 1, 0, 0, 0, 5156, 5155, 1, 0, 0, 0, 5157, 443, 1, 0, 0, 0, 5158, 5159, 5, 138, 0, 0, 5159, 5160, 5, 360, 0, 0, 5160, 5161, 3, 316, 158, 0, 5161, 5162, 5, 333, 0, 0, 5162, 5163, 3, 440, 220, 0, 5163, 445, 1, 0, 0, 0, 5164, 5165, 5, 138, 0, 0, 5165, 5166, 5, 278, 0, 0, 5166, 5167, 7, 31, 0, 0, 5167, 5168, 3, 316, 158, 0, 5168, 5169, 3, 170, 85, 0, 5169, 5170, 5, 282, 0, 0, 5170, 5171, 5, 94, 0, 0, 5171, 5172, 3, 814, 407, 0, 5172, 5239, 1, 0, 0, 0, 5173, 5200, 5, 138, 0, 0, 5174, 5175, 5, 136, 0, 0, 5175, 5201, 3, 394, 197, 0, 5176, 5177, 5, 175, 0, 0, 5177, 5201, 3, 788, 394, 0, 5178, 5179, 5, 211, 0, 0, 5179, 5201, 3, 382, 191, 0, 5180, 5182, 5, 295, 0, 0, 5181, 5180, 1, 0, 0, 0, 5181, 5182, 1, 0, 0, 0, 5182, 5183, 1, 0, 0, 0, 5183, 5184, 5, 247, 0, 0, 5184, 5201, 3, 818, 409, 0, 5185, 5186, 5, 248, 0, 0, 5186, 5187, 5, 274, 0, 0, 5187, 5201, 3, 202, 101, 0, 5188, 5189, 5, 248, 0, 0, 5189, 5190, 5, 274, 0, 0, 5190, 5201, 3, 202, 101, 0, 5191, 5192, 5, 278, 0, 0, 5192, 5201, 3, 416, 208, 0, 5193, 5194, 5, 296, 0, 0, 5194, 5201, 3, 378, 189, 0, 5195, 5196, 5, 442, 0, 0, 5196, 5201, 3, 374, 187, 0, 5197, 5198, 5, 323, 0, 0, 5198, 5201, 3, 790, 395, 0, 5199, 5201, 3, 176, 88, 0, 5200, 5174, 1, 0, 0, 0, 5200, 5176, 1, 0, 0, 0, 5200, 5178, 1, 0, 0, 0, 5200, 5181, 1, 0, 0, 0, 5200, 5185, 1, 0, 0, 0, 5200, 5188, 1, 0, 0, 0, 5200, 5191, 1, 0, 0, 0, 5200, 5193, 1, 0, 0, 0, 5200, 5195, 1, 0, 0, 0, 5200, 5197, 1, 0, 0, 0, 5200, 5199, 1, 0, 0, 0, 5201, 5202, 1, 0, 0, 0, 5202, 5203, 5, 282, 0, 0, 5203, 5204, 5, 94, 0, 0, 5204, 5205, 3, 814, 407, 0, 5205, 5239, 1, 0, 0, 0, 5206, 5215, 5, 138, 0, 0, 5207, 5208, 5, 355, 0, 0, 5208, 5209, 5, 325, 0, 0, 5209, 5216, 7, 63, 0, 0, 5210, 5216, 5, 108, 0, 0, 5211, 5216, 5, 168, 0, 0, 5212, 5216, 5, 189, 0, 0, 5213, 5216, 5, 360, 0, 0, 5214, 5216, 5, 342, 0, 0, 5215, 5207, 1, 0, 0, 0, 5215, 5210, 1, 0, 0, 0, 5215, 5211, 1, 0, 0, 0, 5215, 5212, 1, 0, 0, 0, 5215, 5213, 1, 0, 0, 0, 5215, 5214, 1, 0, 0, 0, 5216, 5217, 1, 0, 0, 0, 5217, 5218, 3, 316, 158, 0, 5218, 5219, 5, 282, 0, 0, 5219, 5220, 5, 94, 0, 0, 5220, 5221, 3, 814, 407, 0, 5221, 5239, 1, 0, 0, 0, 5222, 5231, 5, 138, 0, 0, 5223, 5232, 5, 331, 0, 0, 5224, 5225, 5, 63, 0, 0, 5225, 5226, 5, 174, 0, 0, 5226, 5232, 5, 381, 0, 0, 5227, 5228, 5, 198, 0, 0, 5228, 5232, 5, 357, 0, 0, 5229, 5232, 5, 452, 0, 0, 5230, 5232, 5, 451, 0, 0, 5231, 5223, 1, 0, 0, 0, 5231, 5224, 1, 0, 0, 0, 5231, 5227, 1, 0, 0, 0, 5231, 5229, 1, 0, 0, 0, 5231, 5230, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5234, 3, 818, 409, 0, 5234, 5235, 5, 282, 0, 0, 5235, 5236, 5, 94, 0, 0, 5236, 5237, 3, 814, 407, 0, 5237, 5239, 1, 0, 0, 0, 5238, 5164, 1, 0, 0, 0, 5238, 5173, 1, 0, 0, 0, 5238, 5206, 1, 0, 0, 0, 5238, 5222, 1, 0, 0, 0, 5239, 447, 1, 0, 0, 0, 5240, 5241, 5, 46, 0, 0, 5241, 5242, 5, 452, 0, 0, 5242, 5249, 3, 818, 409, 0, 5243, 5244, 5, 62, 0, 0, 5244, 5245, 5, 92, 0, 0, 5245, 5250, 3, 628, 314, 0, 5246, 5247, 5, 62, 0, 0, 5247, 5248, 5, 30, 0, 0, 5248, 5250, 5, 350, 0, 0, 5249, 5243, 1, 0, 0, 0, 5249, 5246, 1, 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5252, 1, 0, 0, 0, 5251, 5253, 3, 400, 200, 0, 5252, 5251, 1, 0, 0, 0, 5252, 5253, 1, 0, 0, 0, 5253, 449, 1, 0, 0, 0, 5254, 5255, 5, 138, 0, 0, 5255, 5256, 5, 452, 0, 0, 5256, 5274, 3, 818, 409, 0, 5257, 5258, 5, 282, 0, 0, 5258, 5259, 5, 94, 0, 0, 5259, 5275, 3, 814, 407, 0, 5260, 5261, 5, 333, 0, 0, 5261, 5275, 3, 284, 142, 0, 5262, 5263, 5, 309, 0, 0, 5263, 5264, 5, 94, 0, 0, 5264, 5275, 3, 818, 409, 0, 5265, 5266, 7, 34, 0, 0, 5266, 5271, 3, 626, 313, 0, 5267, 5268, 5, 6, 0, 0, 5268, 5270, 3, 626, 313, 0, 5269, 5267, 1, 0, 0, 0, 5270, 5273, 1, 0, 0, 0, 5271, 5269, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5275, 1, 0, 0, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5257, 1, 0, 0, 0, 5274, 5260, 1, 0, 0, 0, 5274, 5262, 1, 0, 0, 0, 5274, 5265, 1, 0, 0, 0, 5275, 451, 1, 0, 0, 0, 5276, 5277, 5, 46, 0, 0, 5277, 5278, 5, 451, 0, 0, 5278, 5279, 3, 818, 409, 0, 5279, 5280, 5, 164, 0, 0, 5280, 5281, 3, 808, 404, 0, 5281, 5282, 5, 452, 0, 0, 5282, 5287, 3, 824, 412, 0, 5283, 5284, 5, 6, 0, 0, 5284, 5286, 3, 824, 412, 0, 5285, 5283, 1, 0, 0, 0, 5286, 5289, 1, 0, 0, 0, 5287, 5285, 1, 0, 0, 0, 5287, 5288, 1, 0, 0, 0, 5288, 5291, 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5290, 5292, 3, 400, 200, 0, 5291, 5290, 1, 0, 0, 0, 5291, 5292, 1, 0, 0, 0, 5292, 453, 1, 0, 0, 0, 5293, 5294, 5, 138, 0, 0, 5294, 5295, 5, 451, 0, 0, 5295, 5296, 3, 818, 409, 0, 5296, 5297, 5, 333, 0, 0, 5297, 5298, 3, 284, 142, 0, 5298, 5350, 1, 0, 0, 0, 5299, 5300, 5, 138, 0, 0, 5300, 5301, 5, 451, 0, 0, 5301, 5302, 3, 818, 409, 0, 5302, 5303, 5, 164, 0, 0, 5303, 5304, 3, 808, 404, 0, 5304, 5350, 1, 0, 0, 0, 5305, 5306, 5, 138, 0, 0, 5306, 5307, 5, 451, 0, 0, 5307, 5308, 3, 818, 409, 0, 5308, 5309, 5, 305, 0, 0, 5309, 5311, 5, 452, 0, 0, 5310, 5312, 3, 400, 200, 0, 5311, 5310, 1, 0, 0, 0, 5311, 5312, 1, 0, 0, 0, 5312, 5350, 1, 0, 0, 0, 5313, 5314, 5, 138, 0, 0, 5314, 5315, 5, 451, 0, 0, 5315, 5316, 3, 818, 409, 0, 5316, 5317, 7, 34, 0, 0, 5317, 5318, 5, 452, 0, 0, 5318, 5323, 3, 824, 412, 0, 5319, 5320, 5, 6, 0, 0, 5320, 5322, 3, 824, 412, 0, 5321, 5319, 1, 0, 0, 0, 5322, 5325, 1, 0, 0, 0, 5323, 5321, 1, 0, 0, 0, 5323, 5324, 1, 0, 0, 0, 5324, 5327, 1, 0, 0, 0, 5325, 5323, 1, 0, 0, 0, 5326, 5328, 3, 400, 200, 0, 5327, 5326, 1, 0, 0, 0, 5327, 5328, 1, 0, 0, 0, 5328, 5350, 1, 0, 0, 0, 5329, 5330, 5, 138, 0, 0, 5330, 5331, 5, 451, 0, 0, 5331, 5332, 3, 818, 409, 0, 5332, 5333, 7, 64, 0, 0, 5333, 5350, 1, 0, 0, 0, 5334, 5335, 5, 138, 0, 0, 5335, 5336, 5, 451, 0, 0, 5336, 5337, 3, 818, 409, 0, 5337, 5338, 5, 465, 0, 0, 5338, 5339, 5, 2, 0, 0, 5339, 5340, 3, 290, 145, 0, 5340, 5341, 5, 3, 0, 0, 5341, 5350, 1, 0, 0, 0, 5342, 5343, 5, 138, 0, 0, 5343, 5344, 5, 451, 0, 0, 5344, 5345, 3, 818, 409, 0, 5345, 5346, 5, 282, 0, 0, 5346, 5347, 5, 94, 0, 0, 5347, 5348, 3, 814, 407, 0, 5348, 5350, 1, 0, 0, 0, 5349, 5293, 1, 0, 0, 0, 5349, 5299, 1, 0, 0, 0, 5349, 5305, 1, 0, 0, 0, 5349, 5313, 1, 0, 0, 0, 5349, 5329, 1, 0, 0, 0, 5349, 5334, 1, 0, 0, 0, 5349, 5342, 1, 0, 0, 0, 5350, 455, 1, 0, 0, 0, 5351, 5353, 5, 46, 0, 0, 5352, 5354, 3, 366, 183, 0, 5353, 5352, 1, 0, 0, 0, 5353, 5354, 1, 0, 0, 0, 5354, 5355, 1, 0, 0, 0, 5355, 5356, 5, 321, 0, 0, 5356, 5357, 3, 818, 409, 0, 5357, 5358, 5, 36, 0, 0, 5358, 5359, 5, 80, 0, 0, 5359, 5360, 7, 65, 0, 0, 5360, 5361, 5, 94, 0, 0, 5361, 5363, 3, 780, 390, 0, 5362, 5364, 3, 638, 319, 0, 5363, 5362, 1, 0, 0, 0, 5363, 5364, 1, 0, 0, 0, 5364, 5365, 1, 0, 0, 0, 5365, 5367, 5, 57, 0, 0, 5366, 5368, 7, 66, 0, 0, 5367, 5366, 1, 0, 0, 0, 5367, 5368, 1, 0, 0, 0, 5368, 5385, 1, 0, 0, 0, 5369, 5386, 5, 270, 0, 0, 5370, 5386, 3, 458, 229, 0, 5371, 5373, 5, 2, 0, 0, 5372, 5374, 3, 458, 229, 0, 5373, 5372, 1, 0, 0, 0, 5373, 5374, 1, 0, 0, 0, 5374, 5381, 1, 0, 0, 0, 5375, 5377, 5, 7, 0, 0, 5376, 5378, 3, 458, 229, 0, 5377, 5376, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5380, 1, 0, 0, 0, 5379, 5375, 1, 0, 0, 0, 5380, 5383, 1, 0, 0, 0, 5381, 5379, 1, 0, 0, 0, 5381, 5382, 1, 0, 0, 0, 5382, 5384, 1, 0, 0, 0, 5383, 5381, 1, 0, 0, 0, 5384, 5386, 5, 3, 0, 0, 5385, 5369, 1, 0, 0, 0, 5385, 5370, 1, 0, 0, 0, 5385, 5371, 1, 0, 0, 0, 5386, 457, 1, 0, 0, 0, 5387, 5393, 3, 560, 280, 0, 5388, 5393, 3, 538, 269, 0, 5389, 5393, 3, 552, 276, 0, 5390, 5393, 3, 548, 274, 0, 5391, 5393, 3, 460, 230, 0, 5392, 5387, 1, 0, 0, 0, 5392, 5388, 1, 0, 0, 0, 5392, 5389, 1, 0, 0, 0, 5392, 5390, 1, 0, 0, 0, 5392, 5391, 1, 0, 0, 0, 5393, 459, 1, 0, 0, 0, 5394, 5395, 5, 271, 0, 0, 5395, 5397, 3, 818, 409, 0, 5396, 5398, 3, 462, 231, 0, 5397, 5396, 1, 0, 0, 0, 5397, 5398, 1, 0, 0, 0, 5398, 461, 1, 0, 0, 0, 5399, 5400, 5, 6, 0, 0, 5400, 5401, 3, 808, 404, 0, 5401, 463, 1, 0, 0, 0, 5402, 5403, 5, 252, 0, 0, 5403, 5404, 3, 818, 409, 0, 5404, 465, 1, 0, 0, 0, 5405, 5408, 5, 366, 0, 0, 5406, 5409, 3, 818, 409, 0, 5407, 5409, 5, 9, 0, 0, 5408, 5406, 1, 0, 0, 0, 5408, 5407, 1, 0, 0, 0, 5409, 467, 1, 0, 0, 0, 5410, 5412, 5, 146, 0, 0, 5411, 5413, 3, 470, 235, 0, 5412, 5411, 1, 0, 0, 0, 5412, 5413, 1, 0, 0, 0, 5413, 5415, 1, 0, 0, 0, 5414, 5416, 3, 474, 237, 0, 5415, 5414, 1, 0, 0, 0, 5415, 5416, 1, 0, 0, 0, 5416, 5456, 1, 0, 0, 0, 5417, 5418, 5, 340, 0, 0, 5418, 5420, 5, 356, 0, 0, 5419, 5421, 3, 474, 237, 0, 5420, 5419, 1, 0, 0, 0, 5420, 5421, 1, 0, 0, 0, 5421, 5456, 1, 0, 0, 0, 5422, 5423, 5, 322, 0, 0, 5423, 5456, 3, 818, 409, 0, 5424, 5426, 5, 308, 0, 0, 5425, 5427, 5, 322, 0, 0, 5426, 5425, 1, 0, 0, 0, 5426, 5427, 1, 0, 0, 0, 5427, 5428, 1, 0, 0, 0, 5428, 5456, 3, 818, 409, 0, 5429, 5430, 5, 290, 0, 0, 5430, 5431, 5, 356, 0, 0, 5431, 5456, 3, 808, 404, 0, 5432, 5433, 7, 67, 0, 0, 5433, 5434, 5, 291, 0, 0, 5434, 5456, 3, 808, 404, 0, 5435, 5437, 7, 68, 0, 0, 5436, 5438, 3, 470, 235, 0, 5437, 5436, 1, 0, 0, 0, 5437, 5438, 1, 0, 0, 0, 5438, 5444, 1, 0, 0, 0, 5439, 5441, 5, 33, 0, 0, 5440, 5442, 5, 269, 0, 0, 5441, 5440, 1, 0, 0, 0, 5441, 5442, 1, 0, 0, 0, 5442, 5443, 1, 0, 0, 0, 5443, 5445, 5, 153, 0, 0, 5444, 5439, 1, 0, 0, 0, 5444, 5445, 1, 0, 0, 0, 5445, 5456, 1, 0, 0, 0, 5446, 5448, 5, 319, 0, 0, 5447, 5449, 3, 470, 235, 0, 5448, 5447, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, 5450, 1, 0, 0, 0, 5450, 5452, 5, 94, 0, 0, 5451, 5453, 5, 322, 0, 0, 5452, 5451, 1, 0, 0, 0, 5452, 5453, 1, 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 5456, 3, 818, 409, 0, 5455, 5410, 1, 0, 0, 0, 5455, 5417, 1, 0, 0, 0, 5455, 5422, 1, 0, 0, 0, 5455, 5424, 1, 0, 0, 0, 5455, 5429, 1, 0, 0, 0, 5455, 5432, 1, 0, 0, 0, 5455, 5435, 1, 0, 0, 0, 5455, 5446, 1, 0, 0, 0, 5456, 469, 1, 0, 0, 0, 5457, 5458, 7, 69, 0, 0, 5458, 471, 1, 0, 0, 0, 5459, 5460, 5, 244, 0, 0, 5460, 5461, 5, 251, 0, 0, 5461, 5469, 3, 50, 25, 0, 5462, 5463, 5, 300, 0, 0, 5463, 5469, 7, 70, 0, 0, 5464, 5466, 5, 77, 0, 0, 5465, 5464, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 5467, 1, 0, 0, 0, 5467, 5469, 5, 54, 0, 0, 5468, 5459, 1, 0, 0, 0, 5468, 5462, 1, 0, 0, 0, 5468, 5465, 1, 0, 0, 0, 5469, 473, 1, 0, 0, 0, 5470, 5477, 3, 472, 236, 0, 5471, 5473, 5, 6, 0, 0, 5472, 5471, 1, 0, 0, 0, 5472, 5473, 1, 0, 0, 0, 5473, 5474, 1, 0, 0, 0, 5474, 5476, 3, 472, 236, 0, 5475, 5472, 1, 0, 0, 0, 5476, 5479, 1, 0, 0, 0, 5477, 5475, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 475, 1, 0, 0, 0, 5479, 5477, 1, 0, 0, 0, 5480, 5483, 5, 46, 0, 0, 5481, 5482, 5, 82, 0, 0, 5482, 5484, 5, 311, 0, 0, 5483, 5481, 1, 0, 0, 0, 5483, 5484, 1, 0, 0, 0, 5484, 5486, 1, 0, 0, 0, 5485, 5487, 3, 122, 61, 0, 5486, 5485, 1, 0, 0, 0, 5486, 5487, 1, 0, 0, 0, 5487, 5503, 1, 0, 0, 0, 5488, 5489, 5, 376, 0, 0, 5489, 5491, 3, 776, 388, 0, 5490, 5492, 3, 146, 73, 0, 5491, 5490, 1, 0, 0, 0, 5491, 5492, 1, 0, 0, 0, 5492, 5494, 1, 0, 0, 0, 5493, 5495, 3, 102, 51, 0, 5494, 5493, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5504, 1, 0, 0, 0, 5496, 5497, 5, 303, 0, 0, 5497, 5498, 5, 376, 0, 0, 5498, 5499, 3, 776, 388, 0, 5499, 5501, 3, 144, 72, 0, 5500, 5502, 3, 102, 51, 0, 5501, 5500, 1, 0, 0, 0, 5501, 5502, 1, 0, 0, 0, 5502, 5504, 1, 0, 0, 0, 5503, 5488, 1, 0, 0, 0, 5503, 5496, 1, 0, 0, 0, 5504, 5505, 1, 0, 0, 0, 5505, 5506, 5, 36, 0, 0, 5506, 5513, 3, 560, 280, 0, 5507, 5509, 5, 105, 0, 0, 5508, 5510, 7, 71, 0, 0, 5509, 5508, 1, 0, 0, 0, 5509, 5510, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5512, 5, 42, 0, 0, 5512, 5514, 5, 279, 0, 0, 5513, 5507, 1, 0, 0, 0, 5513, 5514, 1, 0, 0, 0, 5514, 477, 1, 0, 0, 0, 5515, 5516, 5, 253, 0, 0, 5516, 5517, 3, 808, 404, 0, 5517, 479, 1, 0, 0, 0, 5518, 5519, 5, 46, 0, 0, 5519, 5520, 5, 175, 0, 0, 5520, 5522, 3, 786, 393, 0, 5521, 5523, 5, 105, 0, 0, 5522, 5521, 1, 0, 0, 0, 5522, 5523, 1, 0, 0, 0, 5523, 5529, 1, 0, 0, 0, 5524, 5526, 3, 482, 241, 0, 5525, 5524, 1, 0, 0, 0, 5526, 5527, 1, 0, 0, 0, 5527, 5525, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5530, 1, 0, 0, 0, 5529, 5525, 1, 0, 0, 0, 5529, 5530, 1, 0, 0, 0, 5530, 481, 1, 0, 0, 0, 5531, 5532, 5, 164, 0, 0, 5532, 5540, 5, 74, 0, 0, 5533, 5540, 5, 194, 0, 0, 5534, 5540, 5, 255, 0, 0, 5535, 5540, 5, 282, 0, 0, 5536, 5540, 5, 351, 0, 0, 5537, 5540, 5, 353, 0, 0, 5538, 5540, 3, 826, 413, 0, 5539, 5531, 1, 0, 0, 0, 5539, 5533, 1, 0, 0, 0, 5539, 5534, 1, 0, 0, 0, 5539, 5535, 1, 0, 0, 0, 5539, 5536, 1, 0, 0, 0, 5539, 5537, 1, 0, 0, 0, 5539, 5538, 1, 0, 0, 0, 5540, 5542, 1, 0, 0, 0, 5541, 5543, 5, 10, 0, 0, 5542, 5541, 1, 0, 0, 0, 5542, 5543, 1, 0, 0, 0, 5543, 5547, 1, 0, 0, 0, 5544, 5548, 3, 812, 406, 0, 5545, 5548, 3, 54, 27, 0, 5546, 5548, 5, 53, 0, 0, 5547, 5544, 1, 0, 0, 0, 5547, 5545, 1, 0, 0, 0, 5547, 5546, 1, 0, 0, 0, 5548, 483, 1, 0, 0, 0, 5549, 5550, 5, 138, 0, 0, 5550, 5551, 5, 175, 0, 0, 5551, 5567, 3, 788, 394, 0, 5552, 5553, 5, 333, 0, 0, 5553, 5554, 5, 351, 0, 0, 5554, 5556, 3, 768, 384, 0, 5555, 5552, 1, 0, 0, 0, 5555, 5556, 1, 0, 0, 0, 5556, 5568, 1, 0, 0, 0, 5557, 5559, 5, 105, 0, 0, 5558, 5557, 1, 0, 0, 0, 5558, 5559, 1, 0, 0, 0, 5559, 5561, 1, 0, 0, 0, 5560, 5562, 3, 482, 241, 0, 5561, 5560, 1, 0, 0, 0, 5562, 5563, 1, 0, 0, 0, 5563, 5561, 1, 0, 0, 0, 5563, 5564, 1, 0, 0, 0, 5564, 5566, 1, 0, 0, 0, 5565, 5558, 1, 0, 0, 0, 5565, 5566, 1, 0, 0, 0, 5566, 5568, 1, 0, 0, 0, 5567, 5555, 1, 0, 0, 0, 5567, 5565, 1, 0, 0, 0, 5568, 485, 1, 0, 0, 0, 5569, 5570, 5, 138, 0, 0, 5570, 5571, 5, 175, 0, 0, 5571, 5573, 3, 788, 394, 0, 5572, 5574, 3, 64, 32, 0, 5573, 5572, 1, 0, 0, 0, 5573, 5574, 1, 0, 0, 0, 5574, 487, 1, 0, 0, 0, 5575, 5576, 5, 138, 0, 0, 5576, 5577, 5, 108, 0, 0, 5577, 5578, 3, 316, 158, 0, 5578, 5579, 5, 305, 0, 0, 5579, 5580, 5, 375, 0, 0, 5580, 489, 1, 0, 0, 0, 5581, 5582, 5, 138, 0, 0, 5582, 5583, 5, 349, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 3, 40, 20, 0, 5585, 491, 1, 0, 0, 0, 5586, 5587, 5, 46, 0, 0, 5587, 5588, 5, 189, 0, 0, 5588, 5590, 3, 316, 158, 0, 5589, 5591, 5, 36, 0, 0, 5590, 5589, 1, 0, 0, 0, 5590, 5591, 1, 0, 0, 0, 5591, 5592, 1, 0, 0, 0, 5592, 5596, 3, 652, 326, 0, 5593, 5595, 3, 134, 67, 0, 5594, 5593, 1, 0, 0, 0, 5595, 5598, 1, 0, 0, 0, 5596, 5594, 1, 0, 0, 0, 5596, 5597, 1, 0, 0, 0, 5597, 493, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5599, 5600, 5, 138, 0, 0, 5600, 5601, 5, 189, 0, 0, 5601, 5624, 3, 316, 158, 0, 5602, 5625, 3, 94, 47, 0, 5603, 5604, 7, 15, 0, 0, 5604, 5605, 5, 77, 0, 0, 5605, 5625, 5, 78, 0, 0, 5606, 5609, 5, 133, 0, 0, 5607, 5608, 5, 45, 0, 0, 5608, 5610, 3, 818, 409, 0, 5609, 5607, 1, 0, 0, 0, 5609, 5610, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, 5611, 5625, 3, 142, 71, 0, 5612, 5613, 5, 191, 0, 0, 5613, 5615, 5, 45, 0, 0, 5614, 5616, 3, 422, 211, 0, 5615, 5614, 1, 0, 0, 0, 5615, 5616, 1, 0, 0, 0, 5616, 5617, 1, 0, 0, 0, 5617, 5619, 3, 818, 409, 0, 5618, 5620, 3, 96, 48, 0, 5619, 5618, 1, 0, 0, 0, 5619, 5620, 1, 0, 0, 0, 5620, 5625, 1, 0, 0, 0, 5621, 5622, 5, 372, 0, 0, 5622, 5623, 5, 45, 0, 0, 5623, 5625, 3, 818, 409, 0, 5624, 5602, 1, 0, 0, 0, 5624, 5603, 1, 0, 0, 0, 5624, 5606, 1, 0, 0, 0, 5624, 5612, 1, 0, 0, 0, 5624, 5621, 1, 0, 0, 0, 5625, 495, 1, 0, 0, 0, 5626, 5627, 5, 138, 0, 0, 5627, 5628, 5, 355, 0, 0, 5628, 5629, 5, 325, 0, 0, 5629, 5630, 5, 185, 0, 0, 5630, 5631, 3, 316, 158, 0, 5631, 5632, 3, 284, 142, 0, 5632, 497, 1, 0, 0, 0, 5633, 5634, 5, 138, 0, 0, 5634, 5635, 5, 355, 0, 0, 5635, 5636, 5, 325, 0, 0, 5636, 5637, 5, 163, 0, 0, 5637, 5638, 3, 316, 158, 0, 5638, 5639, 7, 72, 0, 0, 5639, 5640, 5, 257, 0, 0, 5640, 5641, 5, 62, 0, 0, 5641, 5642, 3, 784, 392, 0, 5642, 5643, 5, 105, 0, 0, 5643, 5644, 3, 314, 157, 0, 5644, 5675, 1, 0, 0, 0, 5645, 5646, 5, 138, 0, 0, 5646, 5647, 5, 355, 0, 0, 5647, 5648, 5, 325, 0, 0, 5648, 5649, 5, 163, 0, 0, 5649, 5650, 3, 316, 158, 0, 5650, 5651, 5, 138, 0, 0, 5651, 5654, 5, 257, 0, 0, 5652, 5653, 5, 62, 0, 0, 5653, 5655, 3, 784, 392, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, 5656, 1, 0, 0, 0, 5656, 5657, 5, 311, 0, 0, 5657, 5658, 3, 316, 158, 0, 5658, 5659, 5, 105, 0, 0, 5659, 5660, 3, 316, 158, 0, 5660, 5675, 1, 0, 0, 0, 5661, 5662, 5, 138, 0, 0, 5662, 5663, 5, 355, 0, 0, 5663, 5664, 5, 325, 0, 0, 5664, 5665, 5, 163, 0, 0, 5665, 5666, 3, 316, 158, 0, 5666, 5667, 5, 191, 0, 0, 5667, 5669, 5, 257, 0, 0, 5668, 5670, 3, 422, 211, 0, 5669, 5668, 1, 0, 0, 0, 5669, 5670, 1, 0, 0, 0, 5670, 5671, 1, 0, 0, 0, 5671, 5672, 5, 62, 0, 0, 5672, 5673, 3, 784, 392, 0, 5673, 5675, 1, 0, 0, 0, 5674, 5633, 1, 0, 0, 0, 5674, 5645, 1, 0, 0, 0, 5674, 5661, 1, 0, 0, 0, 5675, 499, 1, 0, 0, 0, 5676, 5678, 5, 46, 0, 0, 5677, 5679, 5, 53, 0, 0, 5678, 5677, 1, 0, 0, 0, 5678, 5679, 1, 0, 0, 0, 5679, 5680, 1, 0, 0, 0, 5680, 5681, 5, 168, 0, 0, 5681, 5682, 3, 316, 158, 0, 5682, 5683, 5, 62, 0, 0, 5683, 5684, 3, 808, 404, 0, 5684, 5685, 5, 94, 0, 0, 5685, 5686, 3, 808, 404, 0, 5686, 5687, 5, 64, 0, 0, 5687, 5688, 3, 316, 158, 0, 5688, 501, 1, 0, 0, 0, 5689, 5691, 5, 158, 0, 0, 5690, 5692, 3, 514, 257, 0, 5691, 5690, 1, 0, 0, 0, 5691, 5692, 1, 0, 0, 0, 5692, 5697, 1, 0, 0, 0, 5693, 5695, 3, 774, 387, 0, 5694, 5696, 3, 170, 85, 0, 5695, 5694, 1, 0, 0, 0, 5695, 5696, 1, 0, 0, 0, 5696, 5698, 1, 0, 0, 0, 5697, 5693, 1, 0, 0, 0, 5697, 5698, 1, 0, 0, 0, 5698, 5715, 1, 0, 0, 0, 5699, 5700, 5, 158, 0, 0, 5700, 5701, 5, 2, 0, 0, 5701, 5706, 3, 514, 257, 0, 5702, 5703, 5, 6, 0, 0, 5703, 5705, 3, 514, 257, 0, 5704, 5702, 1, 0, 0, 0, 5705, 5708, 1, 0, 0, 0, 5706, 5704, 1, 0, 0, 0, 5706, 5707, 1, 0, 0, 0, 5707, 5709, 1, 0, 0, 0, 5708, 5706, 1, 0, 0, 0, 5709, 5710, 5, 3, 0, 0, 5710, 5712, 3, 774, 387, 0, 5711, 5713, 3, 170, 85, 0, 5712, 5711, 1, 0, 0, 0, 5712, 5713, 1, 0, 0, 0, 5713, 5715, 1, 0, 0, 0, 5714, 5689, 1, 0, 0, 0, 5714, 5699, 1, 0, 0, 0, 5715, 503, 1, 0, 0, 0, 5716, 5732, 5, 370, 0, 0, 5717, 5719, 5, 113, 0, 0, 5718, 5717, 1, 0, 0, 0, 5718, 5719, 1, 0, 0, 0, 5719, 5721, 1, 0, 0, 0, 5720, 5722, 5, 112, 0, 0, 5721, 5720, 1, 0, 0, 0, 5721, 5722, 1, 0, 0, 0, 5722, 5724, 1, 0, 0, 0, 5723, 5725, 3, 514, 257, 0, 5724, 5723, 1, 0, 0, 0, 5724, 5725, 1, 0, 0, 0, 5725, 5727, 1, 0, 0, 0, 5726, 5728, 3, 508, 254, 0, 5727, 5726, 1, 0, 0, 0, 5727, 5728, 1, 0, 0, 0, 5728, 5733, 1, 0, 0, 0, 5729, 5731, 3, 524, 262, 0, 5730, 5729, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 5733, 1, 0, 0, 0, 5732, 5718, 1, 0, 0, 0, 5732, 5730, 1, 0, 0, 0, 5733, 5735, 1, 0, 0, 0, 5734, 5736, 3, 518, 259, 0, 5735, 5734, 1, 0, 0, 0, 5735, 5736, 1, 0, 0, 0, 5736, 505, 1, 0, 0, 0, 5737, 5752, 3, 508, 254, 0, 5738, 5740, 3, 514, 257, 0, 5739, 5738, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 5753, 1, 0, 0, 0, 5741, 5742, 5, 2, 0, 0, 5742, 5747, 3, 512, 256, 0, 5743, 5744, 5, 6, 0, 0, 5744, 5746, 3, 512, 256, 0, 5745, 5743, 1, 0, 0, 0, 5746, 5749, 1, 0, 0, 0, 5747, 5745, 1, 0, 0, 0, 5747, 5748, 1, 0, 0, 0, 5748, 5750, 1, 0, 0, 0, 5749, 5747, 1, 0, 0, 0, 5750, 5751, 5, 3, 0, 0, 5751, 5753, 1, 0, 0, 0, 5752, 5739, 1, 0, 0, 0, 5752, 5741, 1, 0, 0, 0, 5753, 5755, 1, 0, 0, 0, 5754, 5756, 3, 518, 259, 0, 5755, 5754, 1, 0, 0, 0, 5755, 5756, 1, 0, 0, 0, 5756, 507, 1, 0, 0, 0, 5757, 5758, 7, 73, 0, 0, 5758, 509, 1, 0, 0, 0, 5759, 5762, 3, 822, 411, 0, 5760, 5762, 3, 508, 254, 0, 5761, 5759, 1, 0, 0, 0, 5761, 5760, 1, 0, 0, 0, 5762, 5765, 1, 0, 0, 0, 5763, 5766, 3, 54, 27, 0, 5764, 5766, 3, 202, 101, 0, 5765, 5763, 1, 0, 0, 0, 5765, 5764, 1, 0, 0, 0, 5765, 5766, 1, 0, 0, 0, 5766, 511, 1, 0, 0, 0, 5767, 5769, 7, 74, 0, 0, 5768, 5770, 7, 75, 0, 0, 5769, 5768, 1, 0, 0, 0, 5769, 5770, 1, 0, 0, 0, 5770, 5777, 1, 0, 0, 0, 5771, 5774, 5, 548, 0, 0, 5772, 5775, 3, 202, 101, 0, 5773, 5775, 3, 808, 404, 0, 5774, 5772, 1, 0, 0, 0, 5774, 5773, 1, 0, 0, 0, 5775, 5777, 1, 0, 0, 0, 5776, 5767, 1, 0, 0, 0, 5776, 5771, 1, 0, 0, 0, 5777, 513, 1, 0, 0, 0, 5778, 5780, 5, 128, 0, 0, 5779, 5781, 7, 75, 0, 0, 5780, 5779, 1, 0, 0, 0, 5780, 5781, 1, 0, 0, 0, 5781, 515, 1, 0, 0, 0, 5782, 5784, 3, 774, 387, 0, 5783, 5785, 3, 144, 72, 0, 5784, 5783, 1, 0, 0, 0, 5784, 5785, 1, 0, 0, 0, 5785, 517, 1, 0, 0, 0, 5786, 5791, 3, 516, 258, 0, 5787, 5788, 5, 6, 0, 0, 5788, 5790, 3, 516, 258, 0, 5789, 5787, 1, 0, 0, 0, 5790, 5793, 1, 0, 0, 0, 5791, 5789, 1, 0, 0, 0, 5791, 5792, 1, 0, 0, 0, 5792, 519, 1, 0, 0, 0, 5793, 5791, 1, 0, 0, 0, 5794, 5805, 5, 203, 0, 0, 5795, 5806, 3, 524, 262, 0, 5796, 5798, 5, 128, 0, 0, 5797, 5796, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 5806, 1, 0, 0, 0, 5799, 5801, 3, 508, 254, 0, 5800, 5802, 3, 514, 257, 0, 5801, 5800, 1, 0, 0, 0, 5801, 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5799, 1, 0, 0, 0, 5803, 5804, 1, 0, 0, 0, 5804, 5806, 1, 0, 0, 0, 5805, 5795, 1, 0, 0, 0, 5805, 5797, 1, 0, 0, 0, 5805, 5803, 1, 0, 0, 0, 5806, 5807, 1, 0, 0, 0, 5807, 5808, 3, 522, 261, 0, 5808, 521, 1, 0, 0, 0, 5809, 5819, 3, 560, 280, 0, 5810, 5819, 3, 538, 269, 0, 5811, 5819, 3, 552, 276, 0, 5812, 5819, 3, 548, 274, 0, 5813, 5819, 3, 558, 279, 0, 5814, 5819, 3, 186, 93, 0, 5815, 5819, 3, 192, 96, 0, 5816, 5819, 3, 194, 97, 0, 5817, 5819, 3, 532, 266, 0, 5818, 5809, 1, 0, 0, 0, 5818, 5810, 1, 0, 0, 0, 5818, 5811, 1, 0, 0, 0, 5818, 5812, 1, 0, 0, 0, 5818, 5813, 1, 0, 0, 0, 5818, 5814, 1, 0, 0, 0, 5818, 5815, 1, 0, 0, 0, 5818, 5816, 1, 0, 0, 0, 5818, 5817, 1, 0, 0, 0, 5819, 523, 1, 0, 0, 0, 5820, 5821, 5, 2, 0, 0, 5821, 5826, 3, 510, 255, 0, 5822, 5823, 5, 6, 0, 0, 5823, 5825, 3, 510, 255, 0, 5824, 5822, 1, 0, 0, 0, 5825, 5828, 1, 0, 0, 0, 5826, 5824, 1, 0, 0, 0, 5826, 5827, 1, 0, 0, 0, 5827, 5829, 1, 0, 0, 0, 5828, 5826, 1, 0, 0, 0, 5829, 5830, 5, 3, 0, 0, 5830, 525, 1, 0, 0, 0, 5831, 5832, 5, 290, 0, 0, 5832, 5834, 3, 818, 409, 0, 5833, 5835, 3, 528, 264, 0, 5834, 5833, 1, 0, 0, 0, 5834, 5835, 1, 0, 0, 0, 5835, 5836, 1, 0, 0, 0, 5836, 5837, 5, 36, 0, 0, 5837, 5838, 3, 530, 265, 0, 5838, 527, 1, 0, 0, 0, 5839, 5840, 5, 2, 0, 0, 5840, 5845, 3, 652, 326, 0, 5841, 5842, 5, 6, 0, 0, 5842, 5844, 3, 652, 326, 0, 5843, 5841, 1, 0, 0, 0, 5844, 5847, 1, 0, 0, 0, 5845, 5843, 1, 0, 0, 0, 5845, 5846, 1, 0, 0, 0, 5846, 5848, 1, 0, 0, 0, 5847, 5845, 1, 0, 0, 0, 5848, 5849, 5, 3, 0, 0, 5849, 529, 1, 0, 0, 0, 5850, 5855, 3, 560, 280, 0, 5851, 5855, 3, 538, 269, 0, 5852, 5855, 3, 552, 276, 0, 5853, 5855, 3, 548, 274, 0, 5854, 5850, 1, 0, 0, 0, 5854, 5851, 1, 0, 0, 0, 5854, 5852, 1, 0, 0, 0, 5854, 5853, 1, 0, 0, 0, 5855, 531, 1, 0, 0, 0, 5856, 5857, 5, 202, 0, 0, 5857, 5859, 3, 818, 409, 0, 5858, 5860, 3, 534, 267, 0, 5859, 5858, 1, 0, 0, 0, 5859, 5860, 1, 0, 0, 0, 5860, 5880, 1, 0, 0, 0, 5861, 5863, 5, 46, 0, 0, 5862, 5864, 3, 122, 61, 0, 5863, 5862, 1, 0, 0, 0, 5863, 5864, 1, 0, 0, 0, 5864, 5865, 1, 0, 0, 0, 5865, 5867, 5, 92, 0, 0, 5866, 5868, 3, 294, 147, 0, 5867, 5866, 1, 0, 0, 0, 5867, 5868, 1, 0, 0, 0, 5868, 5869, 1, 0, 0, 0, 5869, 5870, 3, 188, 94, 0, 5870, 5871, 5, 36, 0, 0, 5871, 5872, 5, 202, 0, 0, 5872, 5874, 3, 818, 409, 0, 5873, 5875, 3, 534, 267, 0, 5874, 5873, 1, 0, 0, 0, 5874, 5875, 1, 0, 0, 0, 5875, 5877, 1, 0, 0, 0, 5876, 5878, 3, 190, 95, 0, 5877, 5876, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 5880, 1, 0, 0, 0, 5879, 5856, 1, 0, 0, 0, 5879, 5861, 1, 0, 0, 0, 5880, 533, 1, 0, 0, 0, 5881, 5882, 5, 2, 0, 0, 5882, 5883, 3, 730, 365, 0, 5883, 5884, 5, 3, 0, 0, 5884, 535, 1, 0, 0, 0, 5885, 5887, 5, 177, 0, 0, 5886, 5888, 5, 290, 0, 0, 5887, 5886, 1, 0, 0, 0, 5887, 5888, 1, 0, 0, 0, 5888, 5891, 1, 0, 0, 0, 5889, 5892, 3, 818, 409, 0, 5890, 5892, 5, 30, 0, 0, 5891, 5889, 1, 0, 0, 0, 5891, 5890, 1, 0, 0, 0, 5892, 537, 1, 0, 0, 0, 5893, 5895, 3, 572, 286, 0, 5894, 5893, 1, 0, 0, 0, 5894, 5895, 1, 0, 0, 0, 5895, 5896, 1, 0, 0, 0, 5896, 5897, 5, 241, 0, 0, 5897, 5898, 5, 71, 0, 0, 5898, 5901, 3, 774, 387, 0, 5899, 5900, 5, 36, 0, 0, 5900, 5902, 3, 818, 409, 0, 5901, 5899, 1, 0, 0, 0, 5901, 5902, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, 5903, 5925, 3, 540, 270, 0, 5904, 5905, 5, 80, 0, 0, 5905, 5913, 5, 464, 0, 0, 5906, 5908, 3, 360, 180, 0, 5907, 5909, 3, 638, 319, 0, 5908, 5907, 1, 0, 0, 0, 5908, 5909, 1, 0, 0, 0, 5909, 5914, 1, 0, 0, 0, 5910, 5911, 5, 80, 0, 0, 5911, 5912, 5, 45, 0, 0, 5912, 5914, 3, 818, 409, 0, 5913, 5906, 1, 0, 0, 0, 5913, 5910, 1, 0, 0, 0, 5913, 5914, 1, 0, 0, 0, 5914, 5915, 1, 0, 0, 0, 5915, 5923, 5, 57, 0, 0, 5916, 5917, 5, 369, 0, 0, 5917, 5918, 5, 333, 0, 0, 5918, 5920, 3, 554, 277, 0, 5919, 5921, 3, 638, 319, 0, 5920, 5919, 1, 0, 0, 0, 5920, 5921, 1, 0, 0, 0, 5921, 5924, 1, 0, 0, 0, 5922, 5924, 5, 270, 0, 0, 5923, 5916, 1, 0, 0, 0, 5923, 5922, 1, 0, 0, 0, 5924, 5926, 1, 0, 0, 0, 5925, 5904, 1, 0, 0, 0, 5925, 5926, 1, 0, 0, 0, 5926, 5928, 1, 0, 0, 0, 5927, 5929, 3, 546, 273, 0, 5928, 5927, 1, 0, 0, 0, 5928, 5929, 1, 0, 0, 0, 5929, 539, 1, 0, 0, 0, 5930, 5931, 5, 2, 0, 0, 5931, 5932, 3, 542, 271, 0, 5932, 5933, 5, 3, 0, 0, 5933, 5935, 1, 0, 0, 0, 5934, 5930, 1, 0, 0, 0, 5934, 5935, 1, 0, 0, 0, 5935, 5939, 1, 0, 0, 0, 5936, 5937, 5, 463, 0, 0, 5937, 5938, 7, 76, 0, 0, 5938, 5940, 5, 450, 0, 0, 5939, 5936, 1, 0, 0, 0, 5939, 5940, 1, 0, 0, 0, 5940, 5943, 1, 0, 0, 0, 5941, 5944, 3, 910, 455, 0, 5942, 5944, 3, 560, 280, 0, 5943, 5941, 1, 0, 0, 0, 5943, 5942, 1, 0, 0, 0, 5944, 541, 1, 0, 0, 0, 5945, 5950, 3, 544, 272, 0, 5946, 5947, 5, 6, 0, 0, 5947, 5949, 3, 544, 272, 0, 5948, 5946, 1, 0, 0, 0, 5949, 5952, 1, 0, 0, 0, 5950, 5948, 1, 0, 0, 0, 5950, 5951, 1, 0, 0, 0, 5951, 543, 1, 0, 0, 0, 5952, 5950, 1, 0, 0, 0, 5953, 5954, 3, 800, 400, 0, 5954, 5955, 3, 754, 377, 0, 5955, 545, 1, 0, 0, 0, 5956, 5957, 5, 87, 0, 0, 5957, 5958, 3, 756, 378, 0, 5958, 547, 1, 0, 0, 0, 5959, 5961, 3, 572, 286, 0, 5960, 5959, 1, 0, 0, 0, 5960, 5961, 1, 0, 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5963, 5, 182, 0, 0, 5963, 5964, 5, 64, 0, 0, 5964, 5967, 3, 630, 315, 0, 5965, 5966, 5, 100, 0, 0, 5966, 5968, 3, 612, 306, 0, 5967, 5965, 1, 0, 0, 0, 5967, 5968, 1, 0, 0, 0, 5968, 5970, 1, 0, 0, 0, 5969, 5971, 3, 640, 320, 0, 5970, 5969, 1, 0, 0, 0, 5970, 5971, 1, 0, 0, 0, 5971, 5973, 1, 0, 0, 0, 5972, 5974, 3, 546, 273, 0, 5973, 5972, 1, 0, 0, 0, 5973, 5974, 1, 0, 0, 0, 5974, 549, 1, 0, 0, 0, 5975, 5977, 5, 256, 0, 0, 5976, 5978, 5, 92, 0, 0, 5977, 5976, 1, 0, 0, 0, 5977, 5978, 1, 0, 0, 0, 5978, 5979, 1, 0, 0, 0, 5979, 5994, 3, 628, 314, 0, 5980, 5991, 5, 68, 0, 0, 5981, 5982, 7, 77, 0, 0, 5982, 5992, 7, 78, 0, 0, 5983, 5988, 5, 334, 0, 0, 5984, 5985, 5, 369, 0, 0, 5985, 5989, 5, 201, 0, 0, 5986, 5987, 5, 414, 0, 0, 5987, 5989, 5, 201, 0, 0, 5988, 5984, 1, 0, 0, 0, 5988, 5986, 1, 0, 0, 0, 5988, 5989, 1, 0, 0, 0, 5989, 5992, 1, 0, 0, 0, 5990, 5992, 5, 201, 0, 0, 5991, 5981, 1, 0, 0, 0, 5991, 5983, 1, 0, 0, 0, 5991, 5990, 1, 0, 0, 0, 5992, 5993, 1, 0, 0, 0, 5993, 5995, 5, 263, 0, 0, 5994, 5980, 1, 0, 0, 0, 5994, 5995, 1, 0, 0, 0, 5995, 5997, 1, 0, 0, 0, 5996, 5998, 5, 272, 0, 0, 5997, 5996, 1, 0, 0, 0, 5997, 5998, 1, 0, 0, 0, 5998, 551, 1, 0, 0, 0, 5999, 6001, 3, 572, 286, 0, 6000, 5999, 1, 0, 0, 0, 6000, 6001, 1, 0, 0, 0, 6001, 6002, 1, 0, 0, 0, 6002, 6003, 5, 369, 0, 0, 6003, 6004, 3, 630, 315, 0, 6004, 6005, 5, 333, 0, 0, 6005, 6007, 3, 554, 277, 0, 6006, 6008, 3, 610, 305, 0, 6007, 6006, 1, 0, 0, 0, 6007, 6008, 1, 0, 0, 0, 6008, 6010, 1, 0, 0, 0, 6009, 6011, 3, 640, 320, 0, 6010, 6009, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 6013, 1, 0, 0, 0, 6012, 6014, 3, 546, 273, 0, 6013, 6012, 1, 0, 0, 0, 6013, 6014, 1, 0, 0, 0, 6014, 553, 1, 0, 0, 0, 6015, 6020, 3, 556, 278, 0, 6016, 6017, 5, 6, 0, 0, 6017, 6019, 3, 556, 278, 0, 6018, 6016, 1, 0, 0, 0, 6019, 6022, 1, 0, 0, 0, 6020, 6018, 1, 0, 0, 0, 6020, 6021, 1, 0, 0, 0, 6021, 555, 1, 0, 0, 0, 6022, 6020, 1, 0, 0, 0, 6023, 6024, 3, 544, 272, 0, 6024, 6025, 5, 10, 0, 0, 6025, 6026, 3, 674, 337, 0, 6026, 6042, 1, 0, 0, 0, 6027, 6028, 5, 2, 0, 0, 6028, 6029, 3, 542, 271, 0, 6029, 6030, 5, 3, 0, 0, 6030, 6039, 5, 10, 0, 0, 6031, 6033, 5, 414, 0, 0, 6032, 6031, 1, 0, 0, 0, 6032, 6033, 1, 0, 0, 0, 6033, 6034, 1, 0, 0, 0, 6034, 6040, 3, 674, 337, 0, 6035, 6036, 5, 2, 0, 0, 6036, 6037, 3, 566, 283, 0, 6037, 6038, 5, 3, 0, 0, 6038, 6040, 1, 0, 0, 0, 6039, 6032, 1, 0, 0, 0, 6039, 6035, 1, 0, 0, 0, 6040, 6042, 1, 0, 0, 0, 6041, 6023, 1, 0, 0, 0, 6041, 6027, 1, 0, 0, 0, 6042, 557, 1, 0, 0, 0, 6043, 6044, 5, 178, 0, 0, 6044, 6053, 3, 818, 409, 0, 6045, 6047, 5, 269, 0, 0, 6046, 6045, 1, 0, 0, 0, 6046, 6047, 1, 0, 0, 0, 6047, 6048, 1, 0, 0, 0, 6048, 6052, 5, 324, 0, 0, 6049, 6052, 5, 107, 0, 0, 6050, 6052, 5, 240, 0, 0, 6051, 6046, 1, 0, 0, 0, 6051, 6049, 1, 0, 0, 0, 6051, 6050, 1, 0, 0, 0, 6052, 6055, 1, 0, 0, 0, 6053, 6051, 1, 0, 0, 0, 6053, 6054, 1, 0, 0, 0, 6054, 6056, 1, 0, 0, 0, 6055, 6053, 1, 0, 0, 0, 6056, 6059, 5, 172, 0, 0, 6057, 6058, 7, 26, 0, 0, 6058, 6060, 5, 217, 0, 0, 6059, 6057, 1, 0, 0, 0, 6059, 6060, 1, 0, 0, 0, 6060, 6061, 1, 0, 0, 0, 6061, 6062, 5, 62, 0, 0, 6062, 6063, 3, 560, 280, 0, 6063, 559, 1, 0, 0, 0, 6064, 6067, 3, 564, 282, 0, 6065, 6067, 3, 562, 281, 0, 6066, 6064, 1, 0, 0, 0, 6066, 6065, 1, 0, 0, 0, 6067, 561, 1, 0, 0, 0, 6068, 6071, 5, 2, 0, 0, 6069, 6072, 3, 564, 282, 0, 6070, 6072, 3, 562, 281, 0, 6071, 6069, 1, 0, 0, 0, 6071, 6070, 1, 0, 0, 0, 6072, 6073, 1, 0, 0, 0, 6073, 6074, 5, 3, 0, 0, 6074, 563, 1, 0, 0, 0, 6075, 6077, 3, 572, 286, 0, 6076, 6075, 1, 0, 0, 0, 6076, 6077, 1, 0, 0, 0, 6077, 6078, 1, 0, 0, 0, 6078, 6080, 3, 566, 283, 0, 6079, 6081, 3, 586, 293, 0, 6080, 6079, 1, 0, 0, 0, 6080, 6081, 1, 0, 0, 0, 6081, 6090, 1, 0, 0, 0, 6082, 6084, 3, 606, 303, 0, 6083, 6085, 3, 590, 295, 0, 6084, 6083, 1, 0, 0, 0, 6084, 6085, 1, 0, 0, 0, 6085, 6091, 1, 0, 0, 0, 6086, 6088, 3, 590, 295, 0, 6087, 6089, 3, 606, 303, 0, 6088, 6087, 1, 0, 0, 0, 6088, 6089, 1, 0, 0, 0, 6089, 6091, 1, 0, 0, 0, 6090, 6082, 1, 0, 0, 0, 6090, 6086, 1, 0, 0, 0, 6090, 6091, 1, 0, 0, 0, 6091, 565, 1, 0, 0, 0, 6092, 6095, 3, 568, 284, 0, 6093, 6095, 3, 562, 281, 0, 6094, 6092, 1, 0, 0, 0, 6094, 6093, 1, 0, 0, 0, 6095, 567, 1, 0, 0, 0, 6096, 6106, 5, 88, 0, 0, 6097, 6099, 5, 30, 0, 0, 6098, 6097, 1, 0, 0, 0, 6098, 6099, 1, 0, 0, 0, 6099, 6101, 1, 0, 0, 0, 6100, 6102, 3, 580, 290, 0, 6101, 6100, 1, 0, 0, 0, 6101, 6102, 1, 0, 0, 0, 6102, 6107, 1, 0, 0, 0, 6103, 6105, 3, 584, 292, 0, 6104, 6103, 1, 0, 0, 0, 6104, 6105, 1, 0, 0, 0, 6105, 6107, 1, 0, 0, 0, 6106, 6098, 1, 0, 0, 0, 6106, 6104, 1, 0, 0, 0, 6107, 6108, 1, 0, 0, 0, 6108, 6119, 3, 932, 466, 0, 6109, 6119, 3, 608, 304, 0, 6110, 6111, 5, 92, 0, 0, 6111, 6119, 3, 624, 312, 0, 6112, 6113, 3, 562, 281, 0, 6113, 6116, 3, 570, 285, 0, 6114, 6117, 3, 568, 284, 0, 6115, 6117, 3, 562, 281, 0, 6116, 6114, 1, 0, 0, 0, 6116, 6115, 1, 0, 0, 0, 6117, 6119, 1, 0, 0, 0, 6118, 6096, 1, 0, 0, 0, 6118, 6109, 1, 0, 0, 0, 6118, 6110, 1, 0, 0, 0, 6118, 6112, 1, 0, 0, 0, 6119, 6127, 1, 0, 0, 0, 6120, 6123, 3, 570, 285, 0, 6121, 6124, 3, 568, 284, 0, 6122, 6124, 3, 562, 281, 0, 6123, 6121, 1, 0, 0, 0, 6123, 6122, 1, 0, 0, 0, 6124, 6126, 1, 0, 0, 0, 6125, 6120, 1, 0, 0, 0, 6126, 6129, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6127, 6128, 1, 0, 0, 0, 6128, 569, 1, 0, 0, 0, 6129, 6127, 1, 0, 0, 0, 6130, 6132, 7, 79, 0, 0, 6131, 6133, 7, 80, 0, 0, 6132, 6131, 1, 0, 0, 0, 6132, 6133, 1, 0, 0, 0, 6133, 571, 1, 0, 0, 0, 6134, 6136, 5, 105, 0, 0, 6135, 6137, 5, 303, 0, 0, 6136, 6135, 1, 0, 0, 0, 6136, 6137, 1, 0, 0, 0, 6137, 6138, 1, 0, 0, 0, 6138, 6143, 3, 574, 287, 0, 6139, 6140, 5, 6, 0, 0, 6140, 6142, 3, 574, 287, 0, 6141, 6139, 1, 0, 0, 0, 6142, 6145, 1, 0, 0, 0, 6143, 6141, 1, 0, 0, 0, 6143, 6144, 1, 0, 0, 0, 6144, 573, 1, 0, 0, 0, 6145, 6143, 1, 0, 0, 0, 6146, 6148, 3, 818, 409, 0, 6147, 6149, 3, 144, 72, 0, 6148, 6147, 1, 0, 0, 0, 6148, 6149, 1, 0, 0, 0, 6149, 6150, 1, 0, 0, 0, 6150, 6155, 5, 36, 0, 0, 6151, 6153, 5, 77, 0, 0, 6152, 6151, 1, 0, 0, 0, 6152, 6153, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6156, 5, 259, 0, 0, 6155, 6152, 1, 0, 0, 0, 6155, 6156, 1, 0, 0, 0, 6156, 6157, 1, 0, 0, 0, 6157, 6158, 5, 2, 0, 0, 6158, 6159, 3, 530, 265, 0, 6159, 6161, 5, 3, 0, 0, 6160, 6162, 3, 576, 288, 0, 6161, 6160, 1, 0, 0, 0, 6161, 6162, 1, 0, 0, 0, 6162, 6164, 1, 0, 0, 0, 6163, 6165, 3, 578, 289, 0, 6164, 6163, 1, 0, 0, 0, 6164, 6165, 1, 0, 0, 0, 6165, 575, 1, 0, 0, 0, 6166, 6167, 5, 325, 0, 0, 6167, 6168, 7, 81, 0, 0, 6168, 6169, 5, 207, 0, 0, 6169, 6170, 5, 147, 0, 0, 6170, 6171, 3, 148, 74, 0, 6171, 6172, 5, 333, 0, 0, 6172, 6173, 3, 800, 400, 0, 6173, 577, 1, 0, 0, 0, 6174, 6175, 5, 173, 0, 0, 6175, 6176, 3, 148, 74, 0, 6176, 6177, 5, 333, 0, 0, 6177, 6183, 3, 800, 400, 0, 6178, 6179, 5, 94, 0, 0, 6179, 6180, 3, 818, 409, 0, 6180, 6181, 5, 53, 0, 0, 6181, 6182, 3, 818, 409, 0, 6182, 6184, 1, 0, 0, 0, 6183, 6178, 1, 0, 0, 0, 6183, 6184, 1, 0, 0, 0, 6184, 6185, 1, 0, 0, 0, 6185, 6186, 5, 100, 0, 0, 6186, 6187, 3, 800, 400, 0, 6187, 579, 1, 0, 0, 0, 6188, 6194, 5, 71, 0, 0, 6189, 6191, 5, 346, 0, 0, 6190, 6189, 1, 0, 0, 0, 6190, 6191, 1, 0, 0, 0, 6191, 6192, 1, 0, 0, 0, 6192, 6195, 3, 582, 291, 0, 6193, 6195, 3, 730, 365, 0, 6194, 6190, 1, 0, 0, 0, 6194, 6193, 1, 0, 0, 0, 6195, 581, 1, 0, 0, 0, 6196, 6198, 7, 20, 0, 0, 6197, 6196, 1, 0, 0, 0, 6197, 6198, 1, 0, 0, 0, 6198, 6199, 1, 0, 0, 0, 6199, 6201, 7, 21, 0, 0, 6200, 6202, 5, 92, 0, 0, 6201, 6200, 1, 0, 0, 0, 6201, 6202, 1, 0, 0, 0, 6202, 6203, 1, 0, 0, 0, 6203, 6212, 3, 772, 386, 0, 6204, 6206, 5, 367, 0, 0, 6205, 6204, 1, 0, 0, 0, 6205, 6206, 1, 0, 0, 0, 6206, 6208, 1, 0, 0, 0, 6207, 6209, 5, 92, 0, 0, 6208, 6207, 1, 0, 0, 0, 6208, 6209, 1, 0, 0, 0, 6209, 6210, 1, 0, 0, 0, 6210, 6212, 3, 772, 386, 0, 6211, 6197, 1, 0, 0, 0, 6211, 6205, 1, 0, 0, 0, 6212, 583, 1, 0, 0, 0, 6213, 6216, 5, 56, 0, 0, 6214, 6215, 5, 80, 0, 0, 6215, 6217, 3, 534, 267, 0, 6216, 6214, 1, 0, 0, 0, 6216, 6217, 1, 0, 0, 0, 6217, 585, 1, 0, 0, 0, 6218, 6219, 5, 83, 0, 0, 6219, 6220, 5, 147, 0, 0, 6220, 6225, 3, 588, 294, 0, 6221, 6222, 5, 6, 0, 0, 6222, 6224, 3, 588, 294, 0, 6223, 6221, 1, 0, 0, 0, 6224, 6227, 1, 0, 0, 0, 6225, 6223, 1, 0, 0, 0, 6225, 6226, 1, 0, 0, 0, 6226, 587, 1, 0, 0, 0, 6227, 6225, 1, 0, 0, 0, 6228, 6232, 3, 734, 367, 0, 6229, 6230, 5, 100, 0, 0, 6230, 6233, 3, 726, 363, 0, 6231, 6233, 7, 55, 0, 0, 6232, 6229, 1, 0, 0, 0, 6232, 6231, 1, 0, 0, 0, 6232, 6233, 1, 0, 0, 0, 6233, 6236, 1, 0, 0, 0, 6234, 6235, 5, 273, 0, 0, 6235, 6237, 7, 56, 0, 0, 6236, 6234, 1, 0, 0, 0, 6236, 6237, 1, 0, 0, 0, 6237, 589, 1, 0, 0, 0, 6238, 6240, 3, 596, 298, 0, 6239, 6241, 3, 594, 297, 0, 6240, 6239, 1, 0, 0, 0, 6240, 6241, 1, 0, 0, 0, 6241, 6250, 1, 0, 0, 0, 6242, 6245, 3, 592, 296, 0, 6243, 6245, 3, 594, 297, 0, 6244, 6242, 1, 0, 0, 0, 6244, 6243, 1, 0, 0, 0, 6245, 6247, 1, 0, 0, 0, 6246, 6248, 3, 596, 298, 0, 6247, 6246, 1, 0, 0, 0, 6247, 6248, 1, 0, 0, 0, 6248, 6250, 1, 0, 0, 0, 6249, 6238, 1, 0, 0, 0, 6249, 6244, 1, 0, 0, 0, 6250, 591, 1, 0, 0, 0, 6251, 6254, 5, 74, 0, 0, 6252, 6255, 3, 674, 337, 0, 6253, 6255, 5, 30, 0, 0, 6254, 6252, 1, 0, 0, 0, 6254, 6253, 1, 0, 0, 0, 6255, 6258, 1, 0, 0, 0, 6256, 6257, 5, 6, 0, 0, 6257, 6259, 3, 674, 337, 0, 6258, 6256, 1, 0, 0, 0, 6258, 6259, 1, 0, 0, 0, 6259, 593, 1, 0, 0, 0, 6260, 6261, 5, 61, 0, 0, 6261, 6263, 7, 82, 0, 0, 6262, 6264, 3, 598, 299, 0, 6263, 6262, 1, 0, 0, 0, 6263, 6264, 1, 0, 0, 0, 6264, 6265, 1, 0, 0, 0, 6265, 6269, 7, 83, 0, 0, 6266, 6270, 5, 81, 0, 0, 6267, 6268, 5, 105, 0, 0, 6268, 6270, 5, 467, 0, 0, 6269, 6266, 1, 0, 0, 0, 6269, 6267, 1, 0, 0, 0, 6270, 595, 1, 0, 0, 0, 6271, 6276, 5, 79, 0, 0, 6272, 6273, 3, 598, 299, 0, 6273, 6274, 7, 83, 0, 0, 6274, 6277, 1, 0, 0, 0, 6275, 6277, 3, 674, 337, 0, 6276, 6272, 1, 0, 0, 0, 6276, 6275, 1, 0, 0, 0, 6277, 597, 1, 0, 0, 0, 6278, 6279, 7, 29, 0, 0, 6279, 6282, 7, 84, 0, 0, 6280, 6282, 3, 682, 341, 0, 6281, 6278, 1, 0, 0, 0, 6281, 6280, 1, 0, 0, 0, 6282, 599, 1, 0, 0, 0, 6283, 6284, 5, 66, 0, 0, 6284, 6286, 5, 147, 0, 0, 6285, 6287, 7, 80, 0, 0, 6286, 6285, 1, 0, 0, 0, 6286, 6287, 1, 0, 0, 0, 6287, 6288, 1, 0, 0, 0, 6288, 6289, 3, 602, 301, 0, 6289, 601, 1, 0, 0, 0, 6290, 6295, 3, 604, 302, 0, 6291, 6292, 5, 6, 0, 0, 6292, 6294, 3, 604, 302, 0, 6293, 6291, 1, 0, 0, 0, 6294, 6297, 1, 0, 0, 0, 6295, 6293, 1, 0, 0, 0, 6295, 6296, 1, 0, 0, 0, 6296, 603, 1, 0, 0, 0, 6297, 6295, 1, 0, 0, 0, 6298, 6322, 3, 734, 367, 0, 6299, 6300, 5, 2, 0, 0, 6300, 6322, 5, 3, 0, 0, 6301, 6303, 7, 85, 0, 0, 6302, 6301, 1, 0, 0, 0, 6302, 6303, 1, 0, 0, 0, 6303, 6304, 1, 0, 0, 0, 6304, 6305, 5, 2, 0, 0, 6305, 6310, 3, 734, 367, 0, 6306, 6307, 5, 6, 0, 0, 6307, 6309, 3, 734, 367, 0, 6308, 6306, 1, 0, 0, 0, 6309, 6312, 1, 0, 0, 0, 6310, 6308, 1, 0, 0, 0, 6310, 6311, 1, 0, 0, 0, 6311, 6313, 1, 0, 0, 0, 6312, 6310, 1, 0, 0, 0, 6313, 6314, 5, 3, 0, 0, 6314, 6322, 1, 0, 0, 0, 6315, 6316, 5, 470, 0, 0, 6316, 6317, 5, 471, 0, 0, 6317, 6318, 5, 2, 0, 0, 6318, 6319, 3, 602, 301, 0, 6319, 6320, 5, 3, 0, 0, 6320, 6322, 1, 0, 0, 0, 6321, 6298, 1, 0, 0, 0, 6321, 6299, 1, 0, 0, 0, 6321, 6302, 1, 0, 0, 0, 6321, 6315, 1, 0, 0, 0, 6322, 605, 1, 0, 0, 0, 6323, 6333, 5, 62, 0, 0, 6324, 6325, 5, 269, 0, 0, 6325, 6327, 5, 245, 0, 0, 6326, 6324, 1, 0, 0, 0, 6326, 6327, 1, 0, 0, 0, 6327, 6328, 1, 0, 0, 0, 6328, 6334, 5, 369, 0, 0, 6329, 6331, 5, 245, 0, 0, 6330, 6329, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6332, 1, 0, 0, 0, 6332, 6334, 5, 334, 0, 0, 6333, 6326, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 6337, 1, 0, 0, 0, 6335, 6336, 5, 275, 0, 0, 6336, 6338, 3, 760, 380, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6338, 1, 0, 0, 0, 6338, 6342, 1, 0, 0, 0, 6339, 6343, 5, 272, 0, 0, 6340, 6341, 5, 465, 0, 0, 6341, 6343, 5, 466, 0, 0, 6342, 6339, 1, 0, 0, 0, 6342, 6340, 1, 0, 0, 0, 6342, 6343, 1, 0, 0, 0, 6343, 6345, 1, 0, 0, 0, 6344, 6323, 1, 0, 0, 0, 6345, 6346, 1, 0, 0, 0, 6346, 6344, 1, 0, 0, 0, 6346, 6347, 1, 0, 0, 0, 6347, 6352, 1, 0, 0, 0, 6348, 6349, 5, 62, 0, 0, 6349, 6350, 5, 300, 0, 0, 6350, 6352, 5, 81, 0, 0, 6351, 6344, 1, 0, 0, 0, 6351, 6348, 1, 0, 0, 0, 6352, 607, 1, 0, 0, 0, 6353, 6354, 5, 422, 0, 0, 6354, 6359, 3, 534, 267, 0, 6355, 6356, 5, 6, 0, 0, 6356, 6358, 3, 534, 267, 0, 6357, 6355, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 609, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6363, 5, 64, 0, 0, 6363, 6364, 3, 612, 306, 0, 6364, 611, 1, 0, 0, 0, 6365, 6370, 3, 614, 307, 0, 6366, 6367, 5, 6, 0, 0, 6367, 6369, 3, 614, 307, 0, 6368, 6366, 1, 0, 0, 0, 6369, 6372, 1, 0, 0, 0, 6370, 6368, 1, 0, 0, 0, 6370, 6371, 1, 0, 0, 0, 6371, 613, 1, 0, 0, 0, 6372, 6370, 1, 0, 0, 0, 6373, 6388, 3, 624, 312, 0, 6374, 6376, 5, 81, 0, 0, 6375, 6374, 1, 0, 0, 0, 6375, 6376, 1, 0, 0, 0, 6376, 6377, 1, 0, 0, 0, 6377, 6379, 3, 778, 389, 0, 6378, 6380, 5, 9, 0, 0, 6379, 6378, 1, 0, 0, 0, 6379, 6380, 1, 0, 0, 0, 6380, 6382, 1, 0, 0, 0, 6381, 6383, 3, 148, 74, 0, 6382, 6381, 1, 0, 0, 0, 6382, 6383, 1, 0, 0, 0, 6383, 6385, 1, 0, 0, 0, 6384, 6386, 3, 638, 319, 0, 6385, 6384, 1, 0, 0, 0, 6385, 6386, 1, 0, 0, 0, 6386, 6388, 1, 0, 0, 0, 6387, 6373, 1, 0, 0, 0, 6387, 6375, 1, 0, 0, 0, 6388, 6390, 1, 0, 0, 0, 6389, 6391, 3, 616, 308, 0, 6390, 6389, 1, 0, 0, 0, 6390, 6391, 1, 0, 0, 0, 6391, 6393, 1, 0, 0, 0, 6392, 6394, 3, 632, 316, 0, 6393, 6392, 1, 0, 0, 0, 6393, 6394, 1, 0, 0, 0, 6394, 6437, 1, 0, 0, 0, 6395, 6397, 5, 72, 0, 0, 6396, 6395, 1, 0, 0, 0, 6396, 6397, 1, 0, 0, 0, 6397, 6410, 1, 0, 0, 0, 6398, 6400, 3, 646, 323, 0, 6399, 6401, 3, 616, 308, 0, 6400, 6399, 1, 0, 0, 0, 6400, 6401, 1, 0, 0, 0, 6401, 6411, 1, 0, 0, 0, 6402, 6404, 3, 634, 317, 0, 6403, 6405, 3, 618, 309, 0, 6404, 6403, 1, 0, 0, 0, 6404, 6405, 1, 0, 0, 0, 6405, 6411, 1, 0, 0, 0, 6406, 6408, 3, 562, 281, 0, 6407, 6409, 3, 616, 308, 0, 6408, 6407, 1, 0, 0, 0, 6408, 6409, 1, 0, 0, 0, 6409, 6411, 1, 0, 0, 0, 6410, 6398, 1, 0, 0, 0, 6410, 6402, 1, 0, 0, 0, 6410, 6406, 1, 0, 0, 0, 6411, 6437, 1, 0, 0, 0, 6412, 6413, 5, 2, 0, 0, 6413, 6430, 3, 614, 307, 0, 6414, 6415, 5, 110, 0, 0, 6415, 6416, 5, 118, 0, 0, 6416, 6431, 3, 614, 307, 0, 6417, 6419, 5, 121, 0, 0, 6418, 6420, 3, 620, 310, 0, 6419, 6418, 1, 0, 0, 0, 6419, 6420, 1, 0, 0, 0, 6420, 6421, 1, 0, 0, 0, 6421, 6422, 5, 118, 0, 0, 6422, 6431, 3, 614, 307, 0, 6423, 6425, 3, 620, 310, 0, 6424, 6423, 1, 0, 0, 0, 6424, 6425, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 6427, 5, 118, 0, 0, 6427, 6428, 3, 614, 307, 0, 6428, 6429, 3, 622, 311, 0, 6429, 6431, 1, 0, 0, 0, 6430, 6414, 1, 0, 0, 0, 6430, 6417, 1, 0, 0, 0, 6430, 6424, 1, 0, 0, 0, 6430, 6431, 1, 0, 0, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6434, 5, 3, 0, 0, 6433, 6435, 3, 616, 308, 0, 6434, 6433, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6437, 1, 0, 0, 0, 6436, 6387, 1, 0, 0, 0, 6436, 6396, 1, 0, 0, 0, 6436, 6412, 1, 0, 0, 0, 6437, 6456, 1, 0, 0, 0, 6438, 6439, 5, 110, 0, 0, 6439, 6440, 5, 118, 0, 0, 6440, 6455, 3, 614, 307, 0, 6441, 6443, 5, 121, 0, 0, 6442, 6444, 3, 620, 310, 0, 6443, 6442, 1, 0, 0, 0, 6443, 6444, 1, 0, 0, 0, 6444, 6445, 1, 0, 0, 0, 6445, 6446, 5, 118, 0, 0, 6446, 6455, 3, 614, 307, 0, 6447, 6449, 3, 620, 310, 0, 6448, 6447, 1, 0, 0, 0, 6448, 6449, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 5, 118, 0, 0, 6451, 6452, 3, 614, 307, 0, 6452, 6453, 3, 622, 311, 0, 6453, 6455, 1, 0, 0, 0, 6454, 6438, 1, 0, 0, 0, 6454, 6441, 1, 0, 0, 0, 6454, 6448, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 615, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6461, 5, 36, 0, 0, 6460, 6459, 1, 0, 0, 0, 6460, 6461, 1, 0, 0, 0, 6461, 6462, 1, 0, 0, 0, 6462, 6467, 3, 818, 409, 0, 6463, 6464, 5, 2, 0, 0, 6464, 6465, 3, 784, 392, 0, 6465, 6466, 5, 3, 0, 0, 6466, 6468, 1, 0, 0, 0, 6467, 6463, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 617, 1, 0, 0, 0, 6469, 6482, 3, 616, 308, 0, 6470, 6472, 5, 36, 0, 0, 6471, 6473, 3, 818, 409, 0, 6472, 6471, 1, 0, 0, 0, 6472, 6473, 1, 0, 0, 0, 6473, 6476, 1, 0, 0, 0, 6474, 6476, 3, 818, 409, 0, 6475, 6470, 1, 0, 0, 0, 6475, 6474, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6478, 5, 2, 0, 0, 6478, 6479, 3, 642, 321, 0, 6479, 6480, 5, 3, 0, 0, 6480, 6482, 1, 0, 0, 0, 6481, 6469, 1, 0, 0, 0, 6481, 6475, 1, 0, 0, 0, 6482, 619, 1, 0, 0, 0, 6483, 6485, 7, 86, 0, 0, 6484, 6486, 5, 123, 0, 0, 6485, 6484, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 621, 1, 0, 0, 0, 6487, 6488, 5, 100, 0, 0, 6488, 6492, 3, 144, 72, 0, 6489, 6490, 5, 80, 0, 0, 6490, 6492, 3, 674, 337, 0, 6491, 6487, 1, 0, 0, 0, 6491, 6489, 1, 0, 0, 0, 6492, 623, 1, 0, 0, 0, 6493, 6509, 3, 322, 161, 0, 6494, 6500, 5, 81, 0, 0, 6495, 6501, 3, 774, 387, 0, 6496, 6497, 5, 2, 0, 0, 6497, 6498, 3, 774, 387, 0, 6498, 6499, 5, 3, 0, 0, 6499, 6501, 1, 0, 0, 0, 6500, 6495, 1, 0, 0, 0, 6500, 6496, 1, 0, 0, 0, 6501, 6509, 1, 0, 0, 0, 6502, 6503, 5, 68, 0, 0, 6503, 6506, 5, 323, 0, 0, 6504, 6507, 3, 790, 395, 0, 6505, 6507, 5, 111, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6505, 1, 0, 0, 0, 6507, 6509, 1, 0, 0, 0, 6508, 6493, 1, 0, 0, 0, 6508, 6494, 1, 0, 0, 0, 6508, 6502, 1, 0, 0, 0, 6509, 625, 1, 0, 0, 0, 6510, 6511, 5, 92, 0, 0, 6511, 6513, 3, 322, 161, 0, 6512, 6514, 3, 144, 72, 0, 6513, 6512, 1, 0, 0, 0, 6513, 6514, 1, 0, 0, 0, 6514, 6516, 1, 0, 0, 0, 6515, 6517, 3, 638, 319, 0, 6516, 6515, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6535, 1, 0, 0, 0, 6518, 6519, 5, 92, 0, 0, 6519, 6525, 5, 81, 0, 0, 6520, 6526, 3, 774, 387, 0, 6521, 6522, 5, 2, 0, 0, 6522, 6523, 3, 774, 387, 0, 6523, 6524, 5, 3, 0, 0, 6524, 6526, 1, 0, 0, 0, 6525, 6520, 1, 0, 0, 0, 6525, 6521, 1, 0, 0, 0, 6526, 6535, 1, 0, 0, 0, 6527, 6528, 5, 350, 0, 0, 6528, 6529, 5, 68, 0, 0, 6529, 6532, 5, 323, 0, 0, 6530, 6533, 3, 790, 395, 0, 6531, 6533, 5, 111, 0, 0, 6532, 6530, 1, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6535, 1, 0, 0, 0, 6534, 6510, 1, 0, 0, 0, 6534, 6518, 1, 0, 0, 0, 6534, 6527, 1, 0, 0, 0, 6535, 627, 1, 0, 0, 0, 6536, 6541, 3, 624, 312, 0, 6537, 6538, 5, 6, 0, 0, 6538, 6540, 3, 624, 312, 0, 6539, 6537, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 629, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6549, 3, 624, 312, 0, 6545, 6547, 5, 36, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 818, 409, 0, 6549, 6546, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 631, 1, 0, 0, 0, 6551, 6552, 5, 472, 0, 0, 6552, 6553, 3, 806, 403, 0, 6553, 6559, 3, 534, 267, 0, 6554, 6555, 5, 310, 0, 0, 6555, 6556, 5, 2, 0, 0, 6556, 6557, 3, 674, 337, 0, 6557, 6558, 5, 3, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6554, 1, 0, 0, 0, 6559, 6560, 1, 0, 0, 0, 6560, 633, 1, 0, 0, 0, 6561, 6576, 3, 688, 344, 0, 6562, 6563, 5, 320, 0, 0, 6563, 6564, 5, 64, 0, 0, 6564, 6565, 5, 2, 0, 0, 6565, 6570, 3, 636, 318, 0, 6566, 6567, 5, 6, 0, 0, 6567, 6569, 3, 636, 318, 0, 6568, 6566, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6573, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6573, 6574, 5, 3, 0, 0, 6574, 6576, 1, 0, 0, 0, 6575, 6561, 1, 0, 0, 0, 6575, 6562, 1, 0, 0, 0, 6576, 6579, 1, 0, 0, 0, 6577, 6578, 5, 105, 0, 0, 6578, 6580, 5, 473, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 635, 1, 0, 0, 0, 6581, 6587, 3, 688, 344, 0, 6582, 6583, 5, 36, 0, 0, 6583, 6584, 5, 2, 0, 0, 6584, 6585, 3, 642, 321, 0, 6585, 6586, 5, 3, 0, 0, 6586, 6588, 1, 0, 0, 0, 6587, 6582, 1, 0, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 637, 1, 0, 0, 0, 6589, 6590, 5, 103, 0, 0, 6590, 6591, 3, 734, 367, 0, 6591, 639, 1, 0, 0, 0, 6592, 6597, 5, 103, 0, 0, 6593, 6594, 5, 434, 0, 0, 6594, 6595, 5, 275, 0, 0, 6595, 6598, 3, 818, 409, 0, 6596, 6598, 3, 674, 337, 0, 6597, 6593, 1, 0, 0, 0, 6597, 6596, 1, 0, 0, 0, 6598, 641, 1, 0, 0, 0, 6599, 6604, 3, 644, 322, 0, 6600, 6601, 5, 6, 0, 0, 6601, 6603, 3, 644, 322, 0, 6602, 6600, 1, 0, 0, 0, 6603, 6606, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 643, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6607, 6608, 3, 818, 409, 0, 6608, 6610, 3, 652, 326, 0, 6609, 6611, 3, 98, 49, 0, 6610, 6609, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 645, 1, 0, 0, 0, 6612, 6613, 5, 474, 0, 0, 6613, 6627, 5, 2, 0, 0, 6614, 6615, 5, 476, 0, 0, 6615, 6616, 5, 2, 0, 0, 6616, 6621, 3, 650, 325, 0, 6617, 6618, 5, 6, 0, 0, 6618, 6620, 3, 650, 325, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6623, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6624, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6624, 6625, 5, 3, 0, 0, 6625, 6626, 5, 6, 0, 0, 6626, 6628, 1, 0, 0, 0, 6627, 6614, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6630, 3, 682, 341, 0, 6630, 6631, 3, 698, 349, 0, 6631, 6632, 5, 475, 0, 0, 6632, 6637, 3, 648, 324, 0, 6633, 6634, 5, 6, 0, 0, 6634, 6636, 3, 648, 324, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6639, 1, 0, 0, 0, 6637, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6640, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6640, 6641, 5, 3, 0, 0, 6641, 647, 1, 0, 0, 0, 6642, 6661, 3, 818, 409, 0, 6643, 6657, 3, 652, 326, 0, 6644, 6647, 5, 53, 0, 0, 6645, 6647, 3, 826, 413, 0, 6646, 6644, 1, 0, 0, 0, 6646, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6654, 3, 674, 337, 0, 6649, 6651, 5, 77, 0, 0, 6650, 6649, 1, 0, 0, 0, 6650, 6651, 1, 0, 0, 0, 6651, 6652, 1, 0, 0, 0, 6652, 6654, 5, 78, 0, 0, 6653, 6646, 1, 0, 0, 0, 6653, 6650, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6653, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6662, 1, 0, 0, 0, 6659, 6660, 5, 62, 0, 0, 6660, 6662, 5, 473, 0, 0, 6661, 6643, 1, 0, 0, 0, 6661, 6659, 1, 0, 0, 0, 6662, 649, 1, 0, 0, 0, 6663, 6664, 3, 682, 341, 0, 6664, 6665, 5, 36, 0, 0, 6665, 6666, 3, 824, 412, 0, 6666, 6670, 1, 0, 0, 0, 6667, 6668, 5, 53, 0, 0, 6668, 6670, 3, 682, 341, 0, 6669, 6663, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6670, 651, 1, 0, 0, 0, 6671, 6673, 5, 415, 0, 0, 6672, 6671, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6691, 3, 654, 327, 0, 6675, 6677, 5, 4, 0, 0, 6676, 6678, 5, 571, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6681, 5, 5, 0, 0, 6680, 6675, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6692, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6689, 5, 35, 0, 0, 6686, 6687, 5, 4, 0, 0, 6687, 6688, 5, 571, 0, 0, 6688, 6690, 5, 5, 0, 0, 6689, 6686, 1, 0, 0, 0, 6689, 6690, 1, 0, 0, 0, 6690, 6692, 1, 0, 0, 0, 6691, 6682, 1, 0, 0, 0, 6691, 6685, 1, 0, 0, 0, 6692, 6698, 1, 0, 0, 0, 6693, 6694, 3, 780, 390, 0, 6694, 6695, 5, 27, 0, 0, 6695, 6696, 7, 87, 0, 0, 6696, 6698, 1, 0, 0, 0, 6697, 6672, 1, 0, 0, 0, 6697, 6693, 1, 0, 0, 0, 6698, 653, 1, 0, 0, 0, 6699, 6701, 3, 820, 410, 0, 6700, 6702, 3, 318, 159, 0, 6701, 6700, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6704, 1, 0, 0, 0, 6703, 6705, 3, 534, 267, 0, 6704, 6703, 1, 0, 0, 0, 6704, 6705, 1, 0, 0, 0, 6705, 6715, 1, 0, 0, 0, 6706, 6715, 3, 656, 328, 0, 6707, 6712, 5, 403, 0, 0, 6708, 6710, 3, 668, 334, 0, 6709, 6708, 1, 0, 0, 0, 6709, 6710, 1, 0, 0, 0, 6710, 6713, 1, 0, 0, 0, 6711, 6713, 3, 660, 330, 0, 6712, 6709, 1, 0, 0, 0, 6712, 6711, 1, 0, 0, 0, 6713, 6715, 1, 0, 0, 0, 6714, 6699, 1, 0, 0, 0, 6714, 6706, 1, 0, 0, 0, 6714, 6707, 1, 0, 0, 0, 6715, 655, 1, 0, 0, 0, 6716, 6721, 3, 658, 329, 0, 6717, 6721, 3, 662, 331, 0, 6718, 6721, 3, 664, 332, 0, 6719, 6721, 3, 666, 333, 0, 6720, 6716, 1, 0, 0, 0, 6720, 6717, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6719, 1, 0, 0, 0, 6721, 657, 1, 0, 0, 0, 6722, 6739, 5, 401, 0, 0, 6723, 6739, 5, 402, 0, 0, 6724, 6739, 5, 416, 0, 0, 6725, 6739, 5, 388, 0, 0, 6726, 6739, 5, 413, 0, 0, 6727, 6729, 5, 398, 0, 0, 6728, 6730, 3, 660, 330, 0, 6729, 6728, 1, 0, 0, 0, 6729, 6730, 1, 0, 0, 0, 6730, 6739, 1, 0, 0, 0, 6731, 6732, 5, 190, 0, 0, 6732, 6739, 5, 412, 0, 0, 6733, 6735, 7, 88, 0, 0, 6734, 6736, 3, 534, 267, 0, 6735, 6734, 1, 0, 0, 0, 6735, 6736, 1, 0, 0, 0, 6736, 6739, 1, 0, 0, 0, 6737, 6739, 5, 390, 0, 0, 6738, 6722, 1, 0, 0, 0, 6738, 6723, 1, 0, 0, 0, 6738, 6724, 1, 0, 0, 0, 6738, 6725, 1, 0, 0, 0, 6738, 6726, 1, 0, 0, 0, 6738, 6727, 1, 0, 0, 0, 6738, 6731, 1, 0, 0, 0, 6738, 6733, 1, 0, 0, 0, 6738, 6737, 1, 0, 0, 0, 6739, 659, 1, 0, 0, 0, 6740, 6741, 5, 2, 0, 0, 6741, 6742, 5, 571, 0, 0, 6742, 6743, 5, 3, 0, 0, 6743, 661, 1, 0, 0, 0, 6744, 6746, 5, 389, 0, 0, 6745, 6747, 5, 374, 0, 0, 6746, 6745, 1, 0, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6749, 1, 0, 0, 0, 6748, 6750, 3, 534, 267, 0, 6749, 6748, 1, 0, 0, 0, 6749, 6750, 1, 0, 0, 0, 6750, 663, 1, 0, 0, 0, 6751, 6753, 7, 89, 0, 0, 6752, 6754, 5, 374, 0, 0, 6753, 6752, 1, 0, 0, 0, 6753, 6754, 1, 0, 0, 0, 6754, 6762, 1, 0, 0, 0, 6755, 6762, 5, 423, 0, 0, 6756, 6757, 5, 405, 0, 0, 6757, 6759, 7, 90, 0, 0, 6758, 6760, 5, 374, 0, 0, 6759, 6758, 1, 0, 0, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6762, 1, 0, 0, 0, 6761, 6751, 1, 0, 0, 0, 6761, 6755, 1, 0, 0, 0, 6761, 6756, 1, 0, 0, 0, 6762, 6764, 1, 0, 0, 0, 6763, 6765, 3, 660, 330, 0, 6764, 6763, 1, 0, 0, 0, 6764, 6765, 1, 0, 0, 0, 6765, 665, 1, 0, 0, 0, 6766, 6768, 7, 91, 0, 0, 6767, 6769, 3, 660, 330, 0, 6768, 6767, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6773, 1, 0, 0, 0, 6770, 6771, 7, 26, 0, 0, 6771, 6772, 5, 418, 0, 0, 6772, 6774, 5, 386, 0, 0, 6773, 6770, 1, 0, 0, 0, 6773, 6774, 1, 0, 0, 0, 6774, 667, 1, 0, 0, 0, 6775, 6805, 5, 264, 0, 0, 6776, 6805, 3, 670, 335, 0, 6777, 6780, 5, 384, 0, 0, 6778, 6779, 5, 94, 0, 0, 6779, 6781, 5, 264, 0, 0, 6780, 6778, 1, 0, 0, 0, 6780, 6781, 1, 0, 0, 0, 6781, 6805, 1, 0, 0, 0, 6782, 6789, 5, 176, 0, 0, 6783, 6787, 5, 94, 0, 0, 6784, 6788, 5, 218, 0, 0, 6785, 6788, 5, 261, 0, 0, 6786, 6788, 3, 670, 335, 0, 6787, 6784, 1, 0, 0, 0, 6787, 6785, 1, 0, 0, 0, 6787, 6786, 1, 0, 0, 0, 6788, 6790, 1, 0, 0, 0, 6789, 6783, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6805, 1, 0, 0, 0, 6791, 6797, 5, 218, 0, 0, 6792, 6795, 5, 94, 0, 0, 6793, 6796, 5, 261, 0, 0, 6794, 6796, 3, 670, 335, 0, 6795, 6793, 1, 0, 0, 0, 6795, 6794, 1, 0, 0, 0, 6796, 6798, 1, 0, 0, 0, 6797, 6792, 1, 0, 0, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6805, 1, 0, 0, 0, 6799, 6802, 5, 261, 0, 0, 6800, 6801, 5, 94, 0, 0, 6801, 6803, 3, 670, 335, 0, 6802, 6800, 1, 0, 0, 0, 6802, 6803, 1, 0, 0, 0, 6803, 6805, 1, 0, 0, 0, 6804, 6775, 1, 0, 0, 0, 6804, 6776, 1, 0, 0, 0, 6804, 6777, 1, 0, 0, 0, 6804, 6782, 1, 0, 0, 0, 6804, 6791, 1, 0, 0, 0, 6804, 6799, 1, 0, 0, 0, 6805, 669, 1, 0, 0, 0, 6806, 6808, 5, 326, 0, 0, 6807, 6809, 3, 660, 330, 0, 6808, 6807, 1, 0, 0, 0, 6808, 6809, 1, 0, 0, 0, 6809, 671, 1, 0, 0, 0, 6810, 6811, 7, 92, 0, 0, 6811, 673, 1, 0, 0, 0, 6812, 6813, 3, 676, 338, 0, 6813, 675, 1, 0, 0, 0, 6814, 6815, 6, 338, -1, 0, 6815, 6817, 3, 680, 340, 0, 6816, 6818, 3, 678, 339, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6822, 1, 0, 0, 0, 6819, 6820, 5, 77, 0, 0, 6820, 6822, 3, 676, 338, 3, 6821, 6814, 1, 0, 0, 0, 6821, 6819, 1, 0, 0, 0, 6822, 6831, 1, 0, 0, 0, 6823, 6824, 10, 2, 0, 0, 6824, 6825, 5, 33, 0, 0, 6825, 6830, 3, 676, 338, 3, 6826, 6827, 10, 1, 0, 0, 6827, 6828, 5, 82, 0, 0, 6828, 6830, 3, 676, 338, 2, 6829, 6823, 1, 0, 0, 0, 6829, 6826, 1, 0, 0, 0, 6830, 6833, 1, 0, 0, 0, 6831, 6829, 1, 0, 0, 0, 6831, 6832, 1, 0, 0, 0, 6832, 677, 1, 0, 0, 0, 6833, 6831, 1, 0, 0, 0, 6834, 6835, 3, 672, 336, 0, 6835, 6836, 3, 680, 340, 0, 6836, 6906, 1, 0, 0, 0, 6837, 6838, 3, 672, 336, 0, 6838, 6839, 3, 728, 364, 0, 6839, 6845, 3, 718, 359, 0, 6840, 6846, 3, 562, 281, 0, 6841, 6842, 5, 2, 0, 0, 6842, 6843, 3, 674, 337, 0, 6843, 6844, 5, 3, 0, 0, 6844, 6846, 1, 0, 0, 0, 6845, 6840, 1, 0, 0, 0, 6845, 6841, 1, 0, 0, 0, 6846, 6906, 1, 0, 0, 0, 6847, 6849, 5, 77, 0, 0, 6848, 6847, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6850, 1, 0, 0, 0, 6850, 6851, 5, 387, 0, 0, 6851, 6852, 3, 680, 340, 0, 6852, 6853, 5, 33, 0, 0, 6853, 6854, 3, 680, 340, 0, 6854, 6906, 1, 0, 0, 0, 6855, 6857, 5, 77, 0, 0, 6856, 6855, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 1, 0, 0, 0, 6858, 6859, 5, 68, 0, 0, 6859, 6860, 5, 2, 0, 0, 6860, 6865, 3, 674, 337, 0, 6861, 6862, 5, 6, 0, 0, 6862, 6864, 3, 674, 337, 0, 6863, 6861, 1, 0, 0, 0, 6864, 6867, 1, 0, 0, 0, 6865, 6863, 1, 0, 0, 0, 6865, 6866, 1, 0, 0, 0, 6866, 6868, 1, 0, 0, 0, 6867, 6865, 1, 0, 0, 0, 6868, 6869, 5, 3, 0, 0, 6869, 6906, 1, 0, 0, 0, 6870, 6872, 5, 77, 0, 0, 6871, 6870, 1, 0, 0, 0, 6871, 6872, 1, 0, 0, 0, 6872, 6873, 1, 0, 0, 0, 6873, 6874, 5, 68, 0, 0, 6874, 6906, 3, 562, 281, 0, 6875, 6877, 5, 77, 0, 0, 6876, 6875, 1, 0, 0, 0, 6876, 6877, 1, 0, 0, 0, 6877, 6886, 1, 0, 0, 0, 6878, 6887, 5, 120, 0, 0, 6879, 6887, 5, 114, 0, 0, 6880, 6881, 5, 127, 0, 0, 6881, 6887, 5, 94, 0, 0, 6882, 6884, 5, 387, 0, 0, 6883, 6885, 5, 91, 0, 0, 6884, 6883, 1, 0, 0, 0, 6884, 6885, 1, 0, 0, 0, 6885, 6887, 1, 0, 0, 0, 6886, 6878, 1, 0, 0, 0, 6886, 6879, 1, 0, 0, 0, 6886, 6880, 1, 0, 0, 0, 6886, 6882, 1, 0, 0, 0, 6887, 6888, 1, 0, 0, 0, 6888, 6891, 3, 680, 340, 0, 6889, 6890, 5, 197, 0, 0, 6890, 6892, 3, 680, 340, 0, 6891, 6889, 1, 0, 0, 0, 6891, 6892, 1, 0, 0, 0, 6892, 6906, 1, 0, 0, 0, 6893, 6895, 5, 116, 0, 0, 6894, 6896, 5, 77, 0, 0, 6895, 6894, 1, 0, 0, 0, 6895, 6896, 1, 0, 0, 0, 6896, 6897, 1, 0, 0, 0, 6897, 6906, 5, 78, 0, 0, 6898, 6900, 5, 116, 0, 0, 6899, 6901, 5, 77, 0, 0, 6900, 6899, 1, 0, 0, 0, 6900, 6901, 1, 0, 0, 0, 6901, 6902, 1, 0, 0, 0, 6902, 6903, 5, 56, 0, 0, 6903, 6904, 5, 64, 0, 0, 6904, 6906, 3, 680, 340, 0, 6905, 6834, 1, 0, 0, 0, 6905, 6837, 1, 0, 0, 0, 6905, 6848, 1, 0, 0, 0, 6905, 6856, 1, 0, 0, 0, 6905, 6871, 1, 0, 0, 0, 6905, 6876, 1, 0, 0, 0, 6905, 6893, 1, 0, 0, 0, 6905, 6898, 1, 0, 0, 0, 6906, 679, 1, 0, 0, 0, 6907, 6908, 6, 340, -1, 0, 6908, 6912, 3, 682, 341, 0, 6909, 6910, 7, 29, 0, 0, 6910, 6912, 3, 680, 340, 4, 6911, 6907, 1, 0, 0, 0, 6911, 6909, 1, 0, 0, 0, 6912, 6929, 1, 0, 0, 0, 6913, 6914, 10, 3, 0, 0, 6914, 6915, 7, 93, 0, 0, 6915, 6928, 3, 680, 340, 4, 6916, 6917, 10, 2, 0, 0, 6917, 6918, 7, 29, 0, 0, 6918, 6928, 3, 680, 340, 3, 6919, 6920, 10, 1, 0, 0, 6920, 6921, 5, 15, 0, 0, 6921, 6928, 3, 680, 340, 2, 6922, 6923, 10, 5, 0, 0, 6923, 6924, 5, 142, 0, 0, 6924, 6925, 5, 418, 0, 0, 6925, 6926, 5, 386, 0, 0, 6926, 6928, 3, 674, 337, 0, 6927, 6913, 1, 0, 0, 0, 6927, 6916, 1, 0, 0, 0, 6927, 6919, 1, 0, 0, 0, 6927, 6922, 1, 0, 0, 0, 6928, 6931, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6929, 6930, 1, 0, 0, 0, 6930, 681, 1, 0, 0, 0, 6931, 6929, 1, 0, 0, 0, 6932, 6933, 6, 341, -1, 0, 6933, 6934, 7, 94, 0, 0, 6934, 7021, 3, 562, 281, 0, 6935, 6938, 5, 35, 0, 0, 6936, 6939, 3, 562, 281, 0, 6937, 6939, 3, 740, 370, 0, 6938, 6936, 1, 0, 0, 0, 6938, 6937, 1, 0, 0, 0, 6939, 7021, 1, 0, 0, 0, 6940, 6941, 5, 28, 0, 0, 6941, 7021, 3, 754, 377, 0, 6942, 6943, 5, 470, 0, 0, 6943, 7021, 3, 534, 267, 0, 6944, 7021, 5, 571, 0, 0, 6945, 7021, 5, 573, 0, 0, 6946, 7021, 5, 563, 0, 0, 6947, 7021, 5, 567, 0, 0, 6948, 6958, 3, 806, 403, 0, 6949, 6959, 3, 808, 404, 0, 6950, 6951, 5, 2, 0, 0, 6951, 6953, 3, 736, 368, 0, 6952, 6954, 3, 586, 293, 0, 6953, 6952, 1, 0, 0, 0, 6953, 6954, 1, 0, 0, 0, 6954, 6955, 1, 0, 0, 0, 6955, 6956, 5, 3, 0, 0, 6956, 6957, 3, 808, 404, 0, 6957, 6959, 1, 0, 0, 0, 6958, 6949, 1, 0, 0, 0, 6958, 6950, 1, 0, 0, 0, 6959, 7021, 1, 0, 0, 0, 6960, 6962, 3, 656, 328, 0, 6961, 6960, 1, 0, 0, 0, 6961, 6962, 1, 0, 0, 0, 6962, 6963, 1, 0, 0, 0, 6963, 7021, 3, 808, 404, 0, 6964, 6972, 5, 403, 0, 0, 6965, 6967, 3, 808, 404, 0, 6966, 6968, 3, 668, 334, 0, 6967, 6966, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 6973, 1, 0, 0, 0, 6969, 6970, 3, 660, 330, 0, 6970, 6971, 3, 808, 404, 0, 6971, 6973, 1, 0, 0, 0, 6972, 6965, 1, 0, 0, 0, 6972, 6969, 1, 0, 0, 0, 6973, 7021, 1, 0, 0, 0, 6974, 7021, 5, 96, 0, 0, 6975, 7021, 5, 60, 0, 0, 6976, 7021, 5, 78, 0, 0, 6977, 7021, 5, 574, 0, 0, 6978, 6979, 5, 2, 0, 0, 6979, 6980, 3, 674, 337, 0, 6980, 6981, 5, 3, 0, 0, 6981, 6982, 3, 754, 377, 0, 6982, 7021, 1, 0, 0, 0, 6983, 6985, 5, 40, 0, 0, 6984, 6986, 3, 674, 337, 0, 6985, 6984, 1, 0, 0, 0, 6985, 6986, 1, 0, 0, 0, 6986, 6988, 1, 0, 0, 0, 6987, 6989, 3, 748, 374, 0, 6988, 6987, 1, 0, 0, 0, 6989, 6990, 1, 0, 0, 0, 6990, 6988, 1, 0, 0, 0, 6990, 6991, 1, 0, 0, 0, 6991, 6994, 1, 0, 0, 0, 6992, 6993, 5, 58, 0, 0, 6993, 6995, 3, 674, 337, 0, 6994, 6992, 1, 0, 0, 0, 6994, 6995, 1, 0, 0, 0, 6995, 6996, 1, 0, 0, 0, 6996, 6997, 5, 454, 0, 0, 6997, 7021, 1, 0, 0, 0, 6998, 7021, 3, 686, 343, 0, 6999, 7001, 3, 562, 281, 0, 7000, 7002, 3, 752, 376, 0, 7001, 7000, 1, 0, 0, 0, 7001, 7002, 1, 0, 0, 0, 7002, 7021, 1, 0, 0, 0, 7003, 7021, 3, 716, 358, 0, 7004, 7005, 5, 2, 0, 0, 7005, 7006, 3, 674, 337, 0, 7006, 7007, 5, 6, 0, 0, 7007, 7008, 3, 730, 365, 0, 7008, 7009, 5, 3, 0, 0, 7009, 7021, 1, 0, 0, 0, 7010, 7011, 3, 714, 357, 0, 7011, 7012, 5, 125, 0, 0, 7012, 7013, 3, 714, 357, 0, 7013, 7021, 1, 0, 0, 0, 7014, 7021, 3, 780, 390, 0, 7015, 7016, 7, 29, 0, 0, 7016, 7021, 3, 682, 341, 5, 7017, 7018, 3, 724, 362, 0, 7018, 7019, 3, 682, 341, 2, 7019, 7021, 1, 0, 0, 0, 7020, 6932, 1, 0, 0, 0, 7020, 6935, 1, 0, 0, 0, 7020, 6940, 1, 0, 0, 0, 7020, 6942, 1, 0, 0, 0, 7020, 6944, 1, 0, 0, 0, 7020, 6945, 1, 0, 0, 0, 7020, 6946, 1, 0, 0, 0, 7020, 6947, 1, 0, 0, 0, 7020, 6948, 1, 0, 0, 0, 7020, 6961, 1, 0, 0, 0, 7020, 6964, 1, 0, 0, 0, 7020, 6974, 1, 0, 0, 0, 7020, 6975, 1, 0, 0, 0, 7020, 6976, 1, 0, 0, 0, 7020, 6977, 1, 0, 0, 0, 7020, 6978, 1, 0, 0, 0, 7020, 6983, 1, 0, 0, 0, 7020, 6998, 1, 0, 0, 0, 7020, 6999, 1, 0, 0, 0, 7020, 7003, 1, 0, 0, 0, 7020, 7004, 1, 0, 0, 0, 7020, 7010, 1, 0, 0, 0, 7020, 7014, 1, 0, 0, 0, 7020, 7015, 1, 0, 0, 0, 7020, 7017, 1, 0, 0, 0, 7021, 7049, 1, 0, 0, 0, 7022, 7023, 10, 3, 0, 0, 7023, 7024, 3, 722, 361, 0, 7024, 7025, 3, 682, 341, 4, 7025, 7048, 1, 0, 0, 0, 7026, 7027, 10, 6, 0, 0, 7027, 7028, 5, 26, 0, 0, 7028, 7048, 3, 652, 326, 0, 7029, 7030, 10, 4, 0, 0, 7030, 7032, 3, 724, 362, 0, 7031, 7033, 3, 682, 341, 0, 7032, 7031, 1, 0, 0, 0, 7032, 7033, 1, 0, 0, 0, 7033, 7048, 1, 0, 0, 0, 7034, 7035, 10, 1, 0, 0, 7035, 7037, 5, 116, 0, 0, 7036, 7038, 5, 77, 0, 0, 7037, 7036, 1, 0, 0, 0, 7037, 7038, 1, 0, 0, 0, 7038, 7045, 1, 0, 0, 0, 7039, 7040, 5, 56, 0, 0, 7040, 7041, 5, 64, 0, 0, 7041, 7046, 3, 682, 341, 0, 7042, 7043, 5, 275, 0, 0, 7043, 7046, 3, 528, 264, 0, 7044, 7046, 5, 188, 0, 0, 7045, 7039, 1, 0, 0, 0, 7045, 7042, 1, 0, 0, 0, 7045, 7044, 1, 0, 0, 0, 7046, 7048, 1, 0, 0, 0, 7047, 7022, 1, 0, 0, 0, 7047, 7026, 1, 0, 0, 0, 7047, 7029, 1, 0, 0, 0, 7047, 7034, 1, 0, 0, 0, 7048, 7051, 1, 0, 0, 0, 7049, 7047, 1, 0, 0, 0, 7049, 7050, 1, 0, 0, 0, 7050, 683, 1, 0, 0, 0, 7051, 7049, 1, 0, 0, 0, 7052, 7078, 3, 806, 403, 0, 7053, 7075, 5, 2, 0, 0, 7054, 7058, 3, 736, 368, 0, 7055, 7056, 5, 6, 0, 0, 7056, 7057, 5, 101, 0, 0, 7057, 7059, 3, 738, 369, 0, 7058, 7055, 1, 0, 0, 0, 7058, 7059, 1, 0, 0, 0, 7059, 7061, 1, 0, 0, 0, 7060, 7062, 3, 586, 293, 0, 7061, 7060, 1, 0, 0, 0, 7061, 7062, 1, 0, 0, 0, 7062, 7076, 1, 0, 0, 0, 7063, 7064, 5, 101, 0, 0, 7064, 7066, 3, 738, 369, 0, 7065, 7067, 3, 586, 293, 0, 7066, 7065, 1, 0, 0, 0, 7066, 7067, 1, 0, 0, 0, 7067, 7076, 1, 0, 0, 0, 7068, 7069, 7, 80, 0, 0, 7069, 7071, 3, 736, 368, 0, 7070, 7072, 3, 586, 293, 0, 7071, 7070, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7076, 1, 0, 0, 0, 7073, 7076, 5, 9, 0, 0, 7074, 7076, 1, 0, 0, 0, 7075, 7054, 1, 0, 0, 0, 7075, 7063, 1, 0, 0, 0, 7075, 7068, 1, 0, 0, 0, 7075, 7073, 1, 0, 0, 0, 7075, 7074, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7079, 5, 3, 0, 0, 7078, 7053, 1, 0, 0, 0, 7078, 7079, 1, 0, 0, 0, 7079, 685, 1, 0, 0, 0, 7080, 7087, 3, 684, 342, 0, 7081, 7082, 5, 479, 0, 0, 7082, 7083, 5, 66, 0, 0, 7083, 7084, 5, 2, 0, 0, 7084, 7085, 3, 586, 293, 0, 7085, 7086, 5, 3, 0, 0, 7086, 7088, 1, 0, 0, 0, 7087, 7081, 1, 0, 0, 0, 7087, 7088, 1, 0, 0, 0, 7088, 7095, 1, 0, 0, 0, 7089, 7090, 5, 480, 0, 0, 7090, 7091, 5, 2, 0, 0, 7091, 7092, 5, 103, 0, 0, 7092, 7093, 3, 674, 337, 0, 7093, 7094, 5, 3, 0, 0, 7094, 7096, 1, 0, 0, 0, 7095, 7089, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7102, 1, 0, 0, 0, 7097, 7100, 5, 124, 0, 0, 7098, 7101, 3, 708, 354, 0, 7099, 7101, 3, 818, 409, 0, 7100, 7098, 1, 0, 0, 0, 7100, 7099, 1, 0, 0, 0, 7101, 7103, 1, 0, 0, 0, 7102, 7097, 1, 0, 0, 0, 7102, 7103, 1, 0, 0, 0, 7103, 7106, 1, 0, 0, 0, 7104, 7106, 3, 690, 345, 0, 7105, 7080, 1, 0, 0, 0, 7105, 7104, 1, 0, 0, 0, 7106, 687, 1, 0, 0, 0, 7107, 7110, 3, 684, 342, 0, 7108, 7110, 3, 690, 345, 0, 7109, 7107, 1, 0, 0, 0, 7109, 7108, 1, 0, 0, 0, 7110, 689, 1, 0, 0, 0, 7111, 7112, 5, 108, 0, 0, 7112, 7113, 5, 62, 0, 0, 7113, 7114, 5, 2, 0, 0, 7114, 7115, 3, 674, 337, 0, 7115, 7116, 5, 3, 0, 0, 7116, 7286, 1, 0, 0, 0, 7117, 7286, 5, 48, 0, 0, 7118, 7120, 7, 95, 0, 0, 7119, 7121, 3, 660, 330, 0, 7120, 7119, 1, 0, 0, 0, 7120, 7121, 1, 0, 0, 0, 7121, 7286, 1, 0, 0, 0, 7122, 7286, 5, 49, 0, 0, 7123, 7286, 5, 52, 0, 0, 7124, 7286, 5, 89, 0, 0, 7125, 7286, 5, 99, 0, 0, 7126, 7286, 5, 47, 0, 0, 7127, 7286, 5, 111, 0, 0, 7128, 7129, 7, 96, 0, 0, 7129, 7130, 5, 2, 0, 0, 7130, 7131, 3, 674, 337, 0, 7131, 7132, 5, 36, 0, 0, 7132, 7133, 3, 652, 326, 0, 7133, 7134, 5, 3, 0, 0, 7134, 7286, 1, 0, 0, 0, 7135, 7136, 5, 397, 0, 0, 7136, 7141, 5, 2, 0, 0, 7137, 7138, 3, 742, 371, 0, 7138, 7139, 5, 64, 0, 0, 7139, 7140, 3, 674, 337, 0, 7140, 7142, 1, 0, 0, 0, 7141, 7137, 1, 0, 0, 0, 7141, 7142, 1, 0, 0, 0, 7142, 7143, 1, 0, 0, 0, 7143, 7286, 5, 3, 0, 0, 7144, 7145, 5, 489, 0, 0, 7145, 7146, 5, 2, 0, 0, 7146, 7149, 3, 674, 337, 0, 7147, 7148, 5, 6, 0, 0, 7148, 7150, 3, 744, 372, 0, 7149, 7147, 1, 0, 0, 0, 7149, 7150, 1, 0, 0, 0, 7150, 7151, 1, 0, 0, 0, 7151, 7152, 5, 3, 0, 0, 7152, 7286, 1, 0, 0, 0, 7153, 7154, 5, 410, 0, 0, 7154, 7155, 5, 2, 0, 0, 7155, 7156, 3, 674, 337, 0, 7156, 7157, 5, 84, 0, 0, 7157, 7158, 3, 674, 337, 0, 7158, 7159, 5, 64, 0, 0, 7159, 7162, 3, 674, 337, 0, 7160, 7161, 5, 62, 0, 0, 7161, 7163, 3, 674, 337, 0, 7162, 7160, 1, 0, 0, 0, 7162, 7163, 1, 0, 0, 0, 7163, 7164, 1, 0, 0, 0, 7164, 7165, 5, 3, 0, 0, 7165, 7286, 1, 0, 0, 0, 7166, 7167, 5, 411, 0, 0, 7167, 7172, 5, 2, 0, 0, 7168, 7169, 3, 682, 341, 0, 7169, 7170, 5, 68, 0, 0, 7170, 7171, 3, 682, 341, 0, 7171, 7173, 1, 0, 0, 0, 7172, 7168, 1, 0, 0, 0, 7172, 7173, 1, 0, 0, 0, 7173, 7174, 1, 0, 0, 0, 7174, 7286, 5, 3, 0, 0, 7175, 7176, 5, 417, 0, 0, 7176, 7178, 5, 2, 0, 0, 7177, 7179, 3, 746, 373, 0, 7178, 7177, 1, 0, 0, 0, 7178, 7179, 1, 0, 0, 0, 7179, 7180, 1, 0, 0, 0, 7180, 7286, 5, 3, 0, 0, 7181, 7182, 5, 421, 0, 0, 7182, 7184, 5, 2, 0, 0, 7183, 7185, 7, 97, 0, 0, 7184, 7183, 1, 0, 0, 0, 7184, 7185, 1, 0, 0, 0, 7185, 7190, 1, 0, 0, 0, 7186, 7188, 3, 674, 337, 0, 7187, 7186, 1, 0, 0, 0, 7187, 7188, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7191, 5, 64, 0, 0, 7190, 7187, 1, 0, 0, 0, 7190, 7191, 1, 0, 0, 0, 7191, 7192, 1, 0, 0, 0, 7192, 7193, 3, 730, 365, 0, 7193, 7194, 1, 0, 0, 0, 7194, 7195, 5, 3, 0, 0, 7195, 7286, 1, 0, 0, 0, 7196, 7197, 5, 408, 0, 0, 7197, 7198, 5, 2, 0, 0, 7198, 7199, 3, 674, 337, 0, 7199, 7200, 5, 6, 0, 0, 7200, 7201, 3, 674, 337, 0, 7201, 7202, 5, 3, 0, 0, 7202, 7286, 1, 0, 0, 0, 7203, 7204, 7, 98, 0, 0, 7204, 7286, 3, 534, 267, 0, 7205, 7206, 5, 426, 0, 0, 7206, 7207, 5, 2, 0, 0, 7207, 7208, 5, 266, 0, 0, 7208, 7218, 3, 824, 412, 0, 7209, 7216, 5, 6, 0, 0, 7210, 7211, 5, 424, 0, 0, 7211, 7212, 5, 2, 0, 0, 7212, 7213, 3, 692, 346, 0, 7213, 7214, 5, 3, 0, 0, 7214, 7217, 1, 0, 0, 0, 7215, 7217, 3, 730, 365, 0, 7216, 7210, 1, 0, 0, 0, 7216, 7215, 1, 0, 0, 0, 7217, 7219, 1, 0, 0, 0, 7218, 7209, 1, 0, 0, 0, 7218, 7219, 1, 0, 0, 0, 7219, 7220, 1, 0, 0, 0, 7220, 7221, 5, 3, 0, 0, 7221, 7286, 1, 0, 0, 0, 7222, 7223, 5, 427, 0, 0, 7223, 7224, 5, 2, 0, 0, 7224, 7225, 3, 682, 341, 0, 7225, 7226, 3, 698, 349, 0, 7226, 7227, 5, 3, 0, 0, 7227, 7286, 1, 0, 0, 0, 7228, 7229, 5, 428, 0, 0, 7229, 7230, 5, 2, 0, 0, 7230, 7231, 3, 692, 346, 0, 7231, 7232, 5, 3, 0, 0, 7232, 7286, 1, 0, 0, 0, 7233, 7234, 5, 429, 0, 0, 7234, 7235, 5, 2, 0, 0, 7235, 7236, 3, 696, 348, 0, 7236, 7239, 3, 674, 337, 0, 7237, 7238, 7, 99, 0, 0, 7238, 7240, 5, 378, 0, 0, 7239, 7237, 1, 0, 0, 0, 7239, 7240, 1, 0, 0, 0, 7240, 7241, 1, 0, 0, 0, 7241, 7242, 5, 3, 0, 0, 7242, 7286, 1, 0, 0, 0, 7243, 7244, 5, 430, 0, 0, 7244, 7245, 5, 2, 0, 0, 7245, 7246, 5, 266, 0, 0, 7246, 7249, 3, 824, 412, 0, 7247, 7248, 5, 6, 0, 0, 7248, 7250, 3, 674, 337, 0, 7249, 7247, 1, 0, 0, 0, 7249, 7250, 1, 0, 0, 0, 7250, 7251, 1, 0, 0, 0, 7251, 7252, 5, 3, 0, 0, 7252, 7286, 1, 0, 0, 0, 7253, 7254, 5, 431, 0, 0, 7254, 7255, 5, 2, 0, 0, 7255, 7256, 5, 383, 0, 0, 7256, 7257, 3, 674, 337, 0, 7257, 7258, 5, 6, 0, 0, 7258, 7262, 5, 375, 0, 0, 7259, 7260, 5, 269, 0, 0, 7260, 7263, 5, 450, 0, 0, 7261, 7263, 3, 674, 337, 0, 7262, 7259, 1, 0, 0, 0, 7262, 7261, 1, 0, 0, 0, 7263, 7273, 1, 0, 0, 0, 7264, 7265, 5, 6, 0, 0, 7265, 7271, 5, 339, 0, 0, 7266, 7268, 5, 269, 0, 0, 7267, 7266, 1, 0, 0, 0, 7267, 7268, 1, 0, 0, 0, 7268, 7269, 1, 0, 0, 0, 7269, 7272, 5, 450, 0, 0, 7270, 7272, 5, 385, 0, 0, 7271, 7267, 1, 0, 0, 0, 7271, 7270, 1, 0, 0, 0, 7272, 7274, 1, 0, 0, 0, 7273, 7264, 1, 0, 0, 0, 7273, 7274, 1, 0, 0, 0, 7274, 7275, 1, 0, 0, 0, 7275, 7276, 5, 3, 0, 0, 7276, 7286, 1, 0, 0, 0, 7277, 7278, 5, 432, 0, 0, 7278, 7279, 5, 2, 0, 0, 7279, 7280, 3, 696, 348, 0, 7280, 7281, 3, 674, 337, 0, 7281, 7282, 5, 36, 0, 0, 7282, 7283, 3, 654, 327, 0, 7283, 7284, 5, 3, 0, 0, 7284, 7286, 1, 0, 0, 0, 7285, 7111, 1, 0, 0, 0, 7285, 7117, 1, 0, 0, 0, 7285, 7118, 1, 0, 0, 0, 7285, 7122, 1, 0, 0, 0, 7285, 7123, 1, 0, 0, 0, 7285, 7124, 1, 0, 0, 0, 7285, 7125, 1, 0, 0, 0, 7285, 7126, 1, 0, 0, 0, 7285, 7127, 1, 0, 0, 0, 7285, 7128, 1, 0, 0, 0, 7285, 7135, 1, 0, 0, 0, 7285, 7144, 1, 0, 0, 0, 7285, 7153, 1, 0, 0, 0, 7285, 7166, 1, 0, 0, 0, 7285, 7175, 1, 0, 0, 0, 7285, 7181, 1, 0, 0, 0, 7285, 7196, 1, 0, 0, 0, 7285, 7203, 1, 0, 0, 0, 7285, 7205, 1, 0, 0, 0, 7285, 7222, 1, 0, 0, 0, 7285, 7228, 1, 0, 0, 0, 7285, 7233, 1, 0, 0, 0, 7285, 7243, 1, 0, 0, 0, 7285, 7253, 1, 0, 0, 0, 7285, 7277, 1, 0, 0, 0, 7286, 691, 1, 0, 0, 0, 7287, 7292, 3, 694, 347, 0, 7288, 7289, 5, 6, 0, 0, 7289, 7291, 3, 694, 347, 0, 7290, 7288, 1, 0, 0, 0, 7291, 7294, 1, 0, 0, 0, 7292, 7290, 1, 0, 0, 0, 7292, 7293, 1, 0, 0, 0, 7293, 693, 1, 0, 0, 0, 7294, 7292, 1, 0, 0, 0, 7295, 7298, 3, 674, 337, 0, 7296, 7297, 5, 36, 0, 0, 7297, 7299, 3, 824, 412, 0, 7298, 7296, 1, 0, 0, 0, 7298, 7299, 1, 0, 0, 0, 7299, 695, 1, 0, 0, 0, 7300, 7301, 7, 100, 0, 0, 7301, 697, 1, 0, 0, 0, 7302, 7304, 5, 286, 0, 0, 7303, 7305, 3, 700, 350, 0, 7304, 7303, 1, 0, 0, 0, 7304, 7305, 1, 0, 0, 0, 7305, 7306, 1, 0, 0, 0, 7306, 7308, 3, 682, 341, 0, 7307, 7309, 3, 700, 350, 0, 7308, 7307, 1, 0, 0, 0, 7308, 7309, 1, 0, 0, 0, 7309, 699, 1, 0, 0, 0, 7310, 7311, 5, 147, 0, 0, 7311, 7312, 7, 101, 0, 0, 7312, 701, 1, 0, 0, 0, 7313, 7314, 5, 104, 0, 0, 7314, 7319, 3, 704, 352, 0, 7315, 7316, 5, 6, 0, 0, 7316, 7318, 3, 704, 352, 0, 7317, 7315, 1, 0, 0, 0, 7318, 7321, 1, 0, 0, 0, 7319, 7317, 1, 0, 0, 0, 7319, 7320, 1, 0, 0, 0, 7320, 703, 1, 0, 0, 0, 7321, 7319, 1, 0, 0, 0, 7322, 7323, 3, 818, 409, 0, 7323, 7324, 5, 36, 0, 0, 7324, 7325, 3, 708, 354, 0, 7325, 705, 1, 0, 0, 0, 7326, 7329, 5, 124, 0, 0, 7327, 7330, 3, 708, 354, 0, 7328, 7330, 3, 818, 409, 0, 7329, 7327, 1, 0, 0, 0, 7329, 7328, 1, 0, 0, 0, 7330, 707, 1, 0, 0, 0, 7331, 7333, 5, 2, 0, 0, 7332, 7334, 3, 818, 409, 0, 7333, 7332, 1, 0, 0, 0, 7333, 7334, 1, 0, 0, 0, 7334, 7338, 1, 0, 0, 0, 7335, 7336, 5, 285, 0, 0, 7336, 7337, 5, 147, 0, 0, 7337, 7339, 3, 730, 365, 0, 7338, 7335, 1, 0, 0, 0, 7338, 7339, 1, 0, 0, 0, 7339, 7341, 1, 0, 0, 0, 7340, 7342, 3, 586, 293, 0, 7341, 7340, 1, 0, 0, 0, 7341, 7342, 1, 0, 0, 0, 7342, 7344, 1, 0, 0, 0, 7343, 7345, 3, 710, 355, 0, 7344, 7343, 1, 0, 0, 0, 7344, 7345, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 7347, 5, 3, 0, 0, 7347, 709, 1, 0, 0, 0, 7348, 7353, 7, 102, 0, 0, 7349, 7350, 5, 387, 0, 0, 7350, 7351, 3, 712, 356, 0, 7351, 7352, 5, 33, 0, 0, 7352, 7354, 1, 0, 0, 0, 7353, 7349, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 7355, 1, 0, 0, 0, 7355, 7356, 3, 712, 356, 0, 7356, 7366, 1, 0, 0, 0, 7357, 7364, 5, 199, 0, 0, 7358, 7359, 5, 434, 0, 0, 7359, 7365, 5, 414, 0, 0, 7360, 7365, 5, 66, 0, 0, 7361, 7365, 5, 467, 0, 0, 7362, 7363, 5, 269, 0, 0, 7363, 7365, 5, 482, 0, 0, 7364, 7358, 1, 0, 0, 0, 7364, 7360, 1, 0, 0, 0, 7364, 7361, 1, 0, 0, 0, 7364, 7362, 1, 0, 0, 0, 7365, 7367, 1, 0, 0, 0, 7366, 7357, 1, 0, 0, 0, 7366, 7367, 1, 0, 0, 0, 7367, 711, 1, 0, 0, 0, 7368, 7371, 5, 362, 0, 0, 7369, 7371, 3, 674, 337, 0, 7370, 7368, 1, 0, 0, 0, 7370, 7369, 1, 0, 0, 0, 7371, 7372, 1, 0, 0, 0, 7372, 7376, 7, 103, 0, 0, 7373, 7374, 5, 434, 0, 0, 7374, 7376, 5, 414, 0, 0, 7375, 7370, 1, 0, 0, 0, 7375, 7373, 1, 0, 0, 0, 7376, 713, 1, 0, 0, 0, 7377, 7385, 3, 716, 358, 0, 7378, 7379, 5, 2, 0, 0, 7379, 7380, 3, 730, 365, 0, 7380, 7381, 5, 6, 0, 0, 7381, 7382, 3, 674, 337, 0, 7382, 7383, 5, 3, 0, 0, 7383, 7385, 1, 0, 0, 0, 7384, 7377, 1, 0, 0, 0, 7384, 7378, 1, 0, 0, 0, 7385, 715, 1, 0, 0, 0, 7386, 7387, 5, 414, 0, 0, 7387, 7389, 5, 2, 0, 0, 7388, 7390, 3, 730, 365, 0, 7389, 7388, 1, 0, 0, 0, 7389, 7390, 1, 0, 0, 0, 7390, 7391, 1, 0, 0, 0, 7391, 7392, 5, 3, 0, 0, 7392, 717, 1, 0, 0, 0, 7393, 7394, 7, 104, 0, 0, 7394, 719, 1, 0, 0, 0, 7395, 7398, 5, 29, 0, 0, 7396, 7398, 3, 722, 361, 0, 7397, 7395, 1, 0, 0, 0, 7397, 7396, 1, 0, 0, 0, 7398, 721, 1, 0, 0, 0, 7399, 7400, 7, 105, 0, 0, 7400, 723, 1, 0, 0, 0, 7401, 7408, 5, 29, 0, 0, 7402, 7403, 5, 278, 0, 0, 7403, 7404, 5, 2, 0, 0, 7404, 7405, 3, 414, 207, 0, 7405, 7406, 5, 3, 0, 0, 7406, 7408, 1, 0, 0, 0, 7407, 7401, 1, 0, 0, 0, 7407, 7402, 1, 0, 0, 0, 7408, 725, 1, 0, 0, 0, 7409, 7416, 3, 720, 360, 0, 7410, 7411, 5, 278, 0, 0, 7411, 7412, 5, 2, 0, 0, 7412, 7413, 3, 414, 207, 0, 7413, 7414, 5, 3, 0, 0, 7414, 7416, 1, 0, 0, 0, 7415, 7409, 1, 0, 0, 0, 7415, 7410, 1, 0, 0, 0, 7416, 727, 1, 0, 0, 0, 7417, 7423, 3, 726, 363, 0, 7418, 7420, 5, 77, 0, 0, 7419, 7418, 1, 0, 0, 0, 7419, 7420, 1, 0, 0, 0, 7420, 7421, 1, 0, 0, 0, 7421, 7423, 7, 106, 0, 0, 7422, 7417, 1, 0, 0, 0, 7422, 7419, 1, 0, 0, 0, 7423, 729, 1, 0, 0, 0, 7424, 7429, 3, 674, 337, 0, 7425, 7426, 5, 6, 0, 0, 7426, 7428, 3, 674, 337, 0, 7427, 7425, 1, 0, 0, 0, 7428, 7431, 1, 0, 0, 0, 7429, 7427, 1, 0, 0, 0, 7429, 7430, 1, 0, 0, 0, 7430, 731, 1, 0, 0, 0, 7431, 7429, 1, 0, 0, 0, 7432, 7433, 5, 2, 0, 0, 7433, 7434, 3, 674, 337, 0, 7434, 7435, 5, 3, 0, 0, 7435, 7438, 1, 0, 0, 0, 7436, 7438, 3, 800, 400, 0, 7437, 7432, 1, 0, 0, 0, 7437, 7436, 1, 0, 0, 0, 7438, 733, 1, 0, 0, 0, 7439, 7442, 3, 674, 337, 0, 7440, 7442, 3, 800, 400, 0, 7441, 7439, 1, 0, 0, 0, 7441, 7440, 1, 0, 0, 0, 7442, 735, 1, 0, 0, 0, 7443, 7448, 3, 738, 369, 0, 7444, 7445, 5, 6, 0, 0, 7445, 7447, 3, 738, 369, 0, 7446, 7444, 1, 0, 0, 0, 7447, 7450, 1, 0, 0, 0, 7448, 7446, 1, 0, 0, 0, 7448, 7449, 1, 0, 0, 0, 7449, 737, 1, 0, 0, 0, 7450, 7448, 1, 0, 0, 0, 7451, 7457, 3, 674, 337, 0, 7452, 7453, 3, 820, 410, 0, 7453, 7454, 7, 107, 0, 0, 7454, 7455, 3, 674, 337, 0, 7455, 7457, 1, 0, 0, 0, 7456, 7451, 1, 0, 0, 0, 7456, 7452, 1, 0, 0, 0, 7457, 739, 1, 0, 0, 0, 7458, 7468, 5, 4, 0, 0, 7459, 7469, 3, 730, 365, 0, 7460, 7465, 3, 740, 370, 0, 7461, 7462, 5, 6, 0, 0, 7462, 7464, 3, 740, 370, 0, 7463, 7461, 1, 0, 0, 0, 7464, 7467, 1, 0, 0, 0, 7465, 7463, 1, 0, 0, 0, 7465, 7466, 1, 0, 0, 0, 7466, 7469, 1, 0, 0, 0, 7467, 7465, 1, 0, 0, 0, 7468, 7459, 1, 0, 0, 0, 7468, 7460, 1, 0, 0, 0, 7468, 7469, 1, 0, 0, 0, 7469, 7470, 1, 0, 0, 0, 7470, 7471, 5, 5, 0, 0, 7471, 741, 1, 0, 0, 0, 7472, 7481, 3, 826, 413, 0, 7473, 7481, 5, 384, 0, 0, 7474, 7481, 5, 264, 0, 0, 7475, 7481, 5, 176, 0, 0, 7476, 7481, 5, 218, 0, 0, 7477, 7481, 5, 261, 0, 0, 7478, 7481, 5, 326, 0, 0, 7479, 7481, 3, 808, 404, 0, 7480, 7472, 1, 0, 0, 0, 7480, 7473, 1, 0, 0, 0, 7480, 7474, 1, 0, 0, 0, 7480, 7475, 1, 0, 0, 0, 7480, 7476, 1, 0, 0, 0, 7480, 7477, 1, 0, 0, 0, 7480, 7478, 1, 0, 0, 0, 7480, 7479, 1, 0, 0, 0, 7481, 743, 1, 0, 0, 0, 7482, 7483, 7, 108, 0, 0, 7483, 745, 1, 0, 0, 0, 7484, 7485, 3, 674, 337, 0, 7485, 7486, 5, 64, 0, 0, 7486, 7489, 3, 674, 337, 0, 7487, 7488, 5, 62, 0, 0, 7488, 7490, 3, 674, 337, 0, 7489, 7487, 1, 0, 0, 0, 7489, 7490, 1, 0, 0, 0, 7490, 7506, 1, 0, 0, 0, 7491, 7492, 3, 674, 337, 0, 7492, 7493, 5, 62, 0, 0, 7493, 7496, 3, 674, 337, 0, 7494, 7495, 5, 64, 0, 0, 7495, 7497, 3, 674, 337, 0, 7496, 7494, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7506, 1, 0, 0, 0, 7498, 7499, 3, 674, 337, 0, 7499, 7500, 5, 127, 0, 0, 7500, 7501, 3, 674, 337, 0, 7501, 7502, 5, 197, 0, 0, 7502, 7503, 3, 674, 337, 0, 7503, 7506, 1, 0, 0, 0, 7504, 7506, 3, 730, 365, 0, 7505, 7484, 1, 0, 0, 0, 7505, 7491, 1, 0, 0, 0, 7505, 7498, 1, 0, 0, 0, 7505, 7504, 1, 0, 0, 0, 7506, 747, 1, 0, 0, 0, 7507, 7508, 5, 102, 0, 0, 7508, 7509, 3, 674, 337, 0, 7509, 7510, 5, 93, 0, 0, 7510, 7511, 3, 674, 337, 0, 7511, 749, 1, 0, 0, 0, 7512, 7515, 5, 11, 0, 0, 7513, 7516, 3, 824, 412, 0, 7514, 7516, 5, 9, 0, 0, 7515, 7513, 1, 0, 0, 0, 7515, 7514, 1, 0, 0, 0, 7516, 7530, 1, 0, 0, 0, 7517, 7526, 5, 4, 0, 0, 7518, 7527, 3, 674, 337, 0, 7519, 7521, 3, 674, 337, 0, 7520, 7519, 1, 0, 0, 0, 7520, 7521, 1, 0, 0, 0, 7521, 7522, 1, 0, 0, 0, 7522, 7524, 5, 8, 0, 0, 7523, 7525, 3, 674, 337, 0, 7524, 7523, 1, 0, 0, 0, 7524, 7525, 1, 0, 0, 0, 7525, 7527, 1, 0, 0, 0, 7526, 7518, 1, 0, 0, 0, 7526, 7520, 1, 0, 0, 0, 7527, 7528, 1, 0, 0, 0, 7528, 7530, 5, 5, 0, 0, 7529, 7512, 1, 0, 0, 0, 7529, 7517, 1, 0, 0, 0, 7530, 751, 1, 0, 0, 0, 7531, 7533, 3, 750, 375, 0, 7532, 7531, 1, 0, 0, 0, 7533, 7534, 1, 0, 0, 0, 7534, 7532, 1, 0, 0, 0, 7534, 7535, 1, 0, 0, 0, 7535, 753, 1, 0, 0, 0, 7536, 7538, 3, 750, 375, 0, 7537, 7536, 1, 0, 0, 0, 7538, 7541, 1, 0, 0, 0, 7539, 7537, 1, 0, 0, 0, 7539, 7540, 1, 0, 0, 0, 7540, 755, 1, 0, 0, 0, 7541, 7539, 1, 0, 0, 0, 7542, 7547, 3, 758, 379, 0, 7543, 7544, 5, 6, 0, 0, 7544, 7546, 3, 758, 379, 0, 7545, 7543, 1, 0, 0, 0, 7546, 7549, 1, 0, 0, 0, 7547, 7545, 1, 0, 0, 0, 7547, 7548, 1, 0, 0, 0, 7548, 757, 1, 0, 0, 0, 7549, 7547, 1, 0, 0, 0, 7550, 7555, 3, 734, 367, 0, 7551, 7552, 5, 36, 0, 0, 7552, 7556, 3, 824, 412, 0, 7553, 7556, 3, 826, 413, 0, 7554, 7556, 1, 0, 0, 0, 7555, 7551, 1, 0, 0, 0, 7555, 7553, 1, 0, 0, 0, 7555, 7554, 1, 0, 0, 0, 7556, 7559, 1, 0, 0, 0, 7557, 7559, 5, 9, 0, 0, 7558, 7550, 1, 0, 0, 0, 7558, 7557, 1, 0, 0, 0, 7559, 759, 1, 0, 0, 0, 7560, 7565, 3, 780, 390, 0, 7561, 7562, 5, 6, 0, 0, 7562, 7564, 3, 780, 390, 0, 7563, 7561, 1, 0, 0, 0, 7564, 7567, 1, 0, 0, 0, 7565, 7563, 1, 0, 0, 0, 7565, 7566, 1, 0, 0, 0, 7566, 761, 1, 0, 0, 0, 7567, 7565, 1, 0, 0, 0, 7568, 7573, 3, 774, 387, 0, 7569, 7570, 5, 6, 0, 0, 7570, 7572, 3, 774, 387, 0, 7571, 7569, 1, 0, 0, 0, 7572, 7575, 1, 0, 0, 0, 7573, 7571, 1, 0, 0, 0, 7573, 7574, 1, 0, 0, 0, 7574, 763, 1, 0, 0, 0, 7575, 7573, 1, 0, 0, 0, 7576, 7581, 3, 790, 395, 0, 7577, 7578, 5, 6, 0, 0, 7578, 7580, 3, 790, 395, 0, 7579, 7577, 1, 0, 0, 0, 7580, 7583, 1, 0, 0, 0, 7581, 7579, 1, 0, 0, 0, 7581, 7582, 1, 0, 0, 0, 7582, 765, 1, 0, 0, 0, 7583, 7581, 1, 0, 0, 0, 7584, 7589, 3, 788, 394, 0, 7585, 7586, 5, 6, 0, 0, 7586, 7588, 3, 788, 394, 0, 7587, 7585, 1, 0, 0, 0, 7588, 7591, 1, 0, 0, 0, 7589, 7587, 1, 0, 0, 0, 7589, 7590, 1, 0, 0, 0, 7590, 767, 1, 0, 0, 0, 7591, 7589, 1, 0, 0, 0, 7592, 7593, 3, 780, 390, 0, 7593, 769, 1, 0, 0, 0, 7594, 7595, 3, 780, 390, 0, 7595, 771, 1, 0, 0, 0, 7596, 7597, 3, 780, 390, 0, 7597, 773, 1, 0, 0, 0, 7598, 7599, 3, 780, 390, 0, 7599, 775, 1, 0, 0, 0, 7600, 7601, 3, 780, 390, 0, 7601, 777, 1, 0, 0, 0, 7602, 7603, 3, 316, 158, 0, 7603, 779, 1, 0, 0, 0, 7604, 7606, 3, 818, 409, 0, 7605, 7607, 3, 752, 376, 0, 7606, 7605, 1, 0, 0, 0, 7606, 7607, 1, 0, 0, 0, 7607, 781, 1, 0, 0, 0, 7608, 7613, 3, 770, 385, 0, 7609, 7610, 5, 6, 0, 0, 7610, 7612, 3, 770, 385, 0, 7611, 7609, 1, 0, 0, 0, 7612, 7615, 1, 0, 0, 0, 7613, 7611, 1, 0, 0, 0, 7613, 7614, 1, 0, 0, 0, 7614, 783, 1, 0, 0, 0, 7615, 7613, 1, 0, 0, 0, 7616, 7621, 3, 818, 409, 0, 7617, 7618, 5, 6, 0, 0, 7618, 7620, 3, 818, 409, 0, 7619, 7617, 1, 0, 0, 0, 7620, 7623, 1, 0, 0, 0, 7621, 7619, 1, 0, 0, 0, 7621, 7622, 1, 0, 0, 0, 7622, 785, 1, 0, 0, 0, 7623, 7621, 1, 0, 0, 0, 7624, 7625, 3, 316, 158, 0, 7625, 787, 1, 0, 0, 0, 7626, 7627, 3, 316, 158, 0, 7627, 789, 1, 0, 0, 0, 7628, 7629, 3, 316, 158, 0, 7629, 791, 1, 0, 0, 0, 7630, 7631, 3, 818, 409, 0, 7631, 793, 1, 0, 0, 0, 7632, 7633, 3, 818, 409, 0, 7633, 795, 1, 0, 0, 0, 7634, 7639, 3, 820, 410, 0, 7635, 7636, 3, 818, 409, 0, 7636, 7637, 3, 752, 376, 0, 7637, 7639, 1, 0, 0, 0, 7638, 7634, 1, 0, 0, 0, 7638, 7635, 1, 0, 0, 0, 7639, 797, 1, 0, 0, 0, 7640, 7645, 3, 820, 410, 0, 7641, 7642, 3, 818, 409, 0, 7642, 7643, 3, 752, 376, 0, 7643, 7645, 1, 0, 0, 0, 7644, 7640, 1, 0, 0, 0, 7644, 7641, 1, 0, 0, 0, 7645, 799, 1, 0, 0, 0, 7646, 7647, 3, 818, 409, 0, 7647, 7648, 3, 754, 377, 0, 7648, 7651, 1, 0, 0, 0, 7649, 7651, 4, 400, 10, 0, 7650, 7646, 1, 0, 0, 0, 7650, 7649, 1, 0, 0, 0, 7651, 801, 1, 0, 0, 0, 7652, 7653, 3, 818, 409, 0, 7653, 803, 1, 0, 0, 0, 7654, 7659, 3, 820, 410, 0, 7655, 7656, 3, 818, 409, 0, 7656, 7657, 3, 752, 376, 0, 7657, 7659, 1, 0, 0, 0, 7658, 7654, 1, 0, 0, 0, 7658, 7655, 1, 0, 0, 0, 7659, 805, 1, 0, 0, 0, 7660, 7665, 3, 820, 410, 0, 7661, 7662, 3, 818, 409, 0, 7662, 7663, 3, 752, 376, 0, 7663, 7665, 1, 0, 0, 0, 7664, 7660, 1, 0, 0, 0, 7664, 7661, 1, 0, 0, 0, 7665, 807, 1, 0, 0, 0, 7666, 7669, 3, 810, 405, 0, 7667, 7668, 5, 487, 0, 0, 7668, 7670, 3, 810, 405, 0, 7669, 7667, 1, 0, 0, 0, 7669, 7670, 1, 0, 0, 0, 7670, 809, 1, 0, 0, 0, 7671, 7683, 5, 558, 0, 0, 7672, 7683, 5, 560, 0, 0, 7673, 7677, 5, 562, 0, 0, 7674, 7676, 5, 588, 0, 0, 7675, 7674, 1, 0, 0, 0, 7676, 7679, 1, 0, 0, 0, 7677, 7675, 1, 0, 0, 0, 7677, 7678, 1, 0, 0, 0, 7678, 7680, 1, 0, 0, 0, 7679, 7677, 1, 0, 0, 0, 7680, 7683, 5, 589, 0, 0, 7681, 7683, 5, 584, 0, 0, 7682, 7671, 1, 0, 0, 0, 7682, 7672, 1, 0, 0, 0, 7682, 7673, 1, 0, 0, 0, 7682, 7681, 1, 0, 0, 0, 7683, 811, 1, 0, 0, 0, 7684, 7686, 7, 29, 0, 0, 7685, 7684, 1, 0, 0, 0, 7685, 7686, 1, 0, 0, 0, 7686, 7687, 1, 0, 0, 0, 7687, 7688, 5, 571, 0, 0, 7688, 813, 1, 0, 0, 0, 7689, 7695, 3, 822, 411, 0, 7690, 7695, 5, 52, 0, 0, 7691, 7695, 5, 49, 0, 0, 7692, 7695, 5, 89, 0, 0, 7693, 7695, 5, 524, 0, 0, 7694, 7689, 1, 0, 0, 0, 7694, 7690, 1, 0, 0, 0, 7694, 7691, 1, 0, 0, 0, 7694, 7692, 1, 0, 0, 0, 7694, 7693, 1, 0, 0, 0, 7695, 815, 1, 0, 0, 0, 7696, 7701, 3, 814, 407, 0, 7697, 7698, 5, 6, 0, 0, 7698, 7700, 3, 814, 407, 0, 7699, 7697, 1, 0, 0, 0, 7700, 7703, 1, 0, 0, 0, 7701, 7699, 1, 0, 0, 0, 7701, 7702, 1, 0, 0, 0, 7702, 817, 1, 0, 0, 0, 7703, 7701, 1, 0, 0, 0, 7704, 7709, 3, 826, 413, 0, 7705, 7709, 3, 828, 414, 0, 7706, 7709, 3, 830, 415, 0, 7707, 7709, 3, 930, 465, 0, 7708, 7704, 1, 0, 0, 0, 7708, 7705, 1, 0, 0, 0, 7708, 7706, 1, 0, 0, 0, 7708, 7707, 1, 0, 0, 0, 7709, 819, 1, 0, 0, 0, 7710, 7715, 3, 826, 413, 0, 7711, 7715, 3, 828, 414, 0, 7712, 7715, 3, 930, 465, 0, 7713, 7715, 3, 832, 416, 0, 7714, 7710, 1, 0, 0, 0, 7714, 7711, 1, 0, 0, 0, 7714, 7712, 1, 0, 0, 0, 7714, 7713, 1, 0, 0, 0, 7715, 821, 1, 0, 0, 0, 7716, 7721, 3, 826, 413, 0, 7717, 7721, 3, 828, 414, 0, 7718, 7721, 3, 830, 415, 0, 7719, 7721, 3, 832, 416, 0, 7720, 7716, 1, 0, 0, 0, 7720, 7717, 1, 0, 0, 0, 7720, 7718, 1, 0, 0, 0, 7720, 7719, 1, 0, 0, 0, 7721, 823, 1, 0, 0, 0, 7722, 7726, 3, 822, 411, 0, 7723, 7726, 3, 930, 465, 0, 7724, 7726, 3, 834, 417, 0, 7725, 7722, 1, 0, 0, 0, 7725, 7723, 1, 0, 0, 0, 7725, 7724, 1, 0, 0, 0, 7726, 825, 1, 0, 0, 0, 7727, 7730, 5, 549, 0, 0, 7728, 7729, 5, 487, 0, 0, 7729, 7731, 3, 810, 405, 0, 7730, 7728, 1, 0, 0, 0, 7730, 7731, 1, 0, 0, 0, 7731, 7739, 1, 0, 0, 0, 7732, 7739, 3, 808, 404, 0, 7733, 7739, 5, 550, 0, 0, 7734, 7739, 5, 554, 0, 0, 7735, 7739, 5, 574, 0, 0, 7736, 7739, 5, 575, 0, 0, 7737, 7739, 3, 930, 465, 0, 7738, 7727, 1, 0, 0, 0, 7738, 7732, 1, 0, 0, 0, 7738, 7733, 1, 0, 0, 0, 7738, 7734, 1, 0, 0, 0, 7738, 7735, 1, 0, 0, 0, 7738, 7736, 1, 0, 0, 0, 7738, 7737, 1, 0, 0, 0, 7739, 827, 1, 0, 0, 0, 7740, 7741, 7, 109, 0, 0, 7741, 829, 1, 0, 0, 0, 7742, 7794, 5, 387, 0, 0, 7743, 7794, 5, 388, 0, 0, 7744, 7794, 3, 662, 331, 0, 7745, 7794, 5, 390, 0, 0, 7746, 7794, 5, 391, 0, 0, 7747, 7794, 3, 664, 332, 0, 7748, 7794, 5, 393, 0, 0, 7749, 7794, 5, 394, 0, 0, 7750, 7794, 5, 395, 0, 0, 7751, 7794, 5, 396, 0, 0, 7752, 7794, 5, 397, 0, 0, 7753, 7794, 5, 398, 0, 0, 7754, 7794, 5, 399, 0, 0, 7755, 7794, 5, 470, 0, 0, 7756, 7794, 5, 400, 0, 0, 7757, 7794, 5, 401, 0, 0, 7758, 7794, 5, 402, 0, 0, 7759, 7794, 5, 403, 0, 0, 7760, 7794, 5, 404, 0, 0, 7761, 7794, 5, 405, 0, 0, 7762, 7794, 5, 406, 0, 0, 7763, 7794, 5, 407, 0, 0, 7764, 7794, 5, 489, 0, 0, 7765, 7794, 5, 408, 0, 0, 7766, 7794, 3, 658, 329, 0, 7767, 7794, 5, 453, 0, 0, 7768, 7794, 5, 410, 0, 0, 7769, 7794, 5, 411, 0, 0, 7770, 7794, 5, 412, 0, 0, 7771, 7794, 5, 413, 0, 0, 7772, 7794, 5, 414, 0, 0, 7773, 7794, 5, 415, 0, 0, 7774, 7794, 5, 416, 0, 0, 7775, 7794, 5, 417, 0, 0, 7776, 7794, 5, 418, 0, 0, 7777, 7794, 5, 419, 0, 0, 7778, 7794, 5, 420, 0, 0, 7779, 7794, 5, 421, 0, 0, 7780, 7794, 5, 422, 0, 0, 7781, 7794, 5, 423, 0, 0, 7782, 7794, 5, 424, 0, 0, 7783, 7794, 5, 425, 0, 0, 7784, 7794, 5, 426, 0, 0, 7785, 7794, 5, 427, 0, 0, 7786, 7794, 5, 428, 0, 0, 7787, 7794, 5, 476, 0, 0, 7788, 7794, 5, 429, 0, 0, 7789, 7794, 5, 430, 0, 0, 7790, 7794, 5, 431, 0, 0, 7791, 7794, 5, 432, 0, 0, 7792, 7794, 5, 474, 0, 0, 7793, 7742, 1, 0, 0, 0, 7793, 7743, 1, 0, 0, 0, 7793, 7744, 1, 0, 0, 0, 7793, 7745, 1, 0, 0, 0, 7793, 7746, 1, 0, 0, 0, 7793, 7747, 1, 0, 0, 0, 7793, 7748, 1, 0, 0, 0, 7793, 7749, 1, 0, 0, 0, 7793, 7750, 1, 0, 0, 0, 7793, 7751, 1, 0, 0, 0, 7793, 7752, 1, 0, 0, 0, 7793, 7753, 1, 0, 0, 0, 7793, 7754, 1, 0, 0, 0, 7793, 7755, 1, 0, 0, 0, 7793, 7756, 1, 0, 0, 0, 7793, 7757, 1, 0, 0, 0, 7793, 7758, 1, 0, 0, 0, 7793, 7759, 1, 0, 0, 0, 7793, 7760, 1, 0, 0, 0, 7793, 7761, 1, 0, 0, 0, 7793, 7762, 1, 0, 0, 0, 7793, 7763, 1, 0, 0, 0, 7793, 7764, 1, 0, 0, 0, 7793, 7765, 1, 0, 0, 0, 7793, 7766, 1, 0, 0, 0, 7793, 7767, 1, 0, 0, 0, 7793, 7768, 1, 0, 0, 0, 7793, 7769, 1, 0, 0, 0, 7793, 7770, 1, 0, 0, 0, 7793, 7771, 1, 0, 0, 0, 7793, 7772, 1, 0, 0, 0, 7793, 7773, 1, 0, 0, 0, 7793, 7774, 1, 0, 0, 0, 7793, 7775, 1, 0, 0, 0, 7793, 7776, 1, 0, 0, 0, 7793, 7777, 1, 0, 0, 0, 7793, 7778, 1, 0, 0, 0, 7793, 7779, 1, 0, 0, 0, 7793, 7780, 1, 0, 0, 0, 7793, 7781, 1, 0, 0, 0, 7793, 7782, 1, 0, 0, 0, 7793, 7783, 1, 0, 0, 0, 7793, 7784, 1, 0, 0, 0, 7793, 7785, 1, 0, 0, 0, 7793, 7786, 1, 0, 0, 0, 7793, 7787, 1, 0, 0, 0, 7793, 7788, 1, 0, 0, 0, 7793, 7789, 1, 0, 0, 0, 7793, 7790, 1, 0, 0, 0, 7793, 7791, 1, 0, 0, 0, 7793, 7792, 1, 0, 0, 0, 7794, 831, 1, 0, 0, 0, 7795, 7796, 7, 110, 0, 0, 7796, 833, 1, 0, 0, 0, 7797, 7798, 7, 111, 0, 0, 7798, 835, 1, 0, 0, 0, 7799, 7801, 3, 838, 419, 0, 7800, 7799, 1, 0, 0, 0, 7800, 7801, 1, 0, 0, 0, 7801, 7812, 1, 0, 0, 0, 7802, 7810, 5, 178, 0, 0, 7803, 7807, 3, 840, 420, 0, 7804, 7807, 5, 178, 0, 0, 7805, 7807, 3, 838, 419, 0, 7806, 7803, 1, 0, 0, 0, 7806, 7804, 1, 0, 0, 0, 7806, 7805, 1, 0, 0, 0, 7807, 7808, 1, 0, 0, 0, 7808, 7806, 1, 0, 0, 0, 7808, 7809, 1, 0, 0, 0, 7809, 7811, 1, 0, 0, 0, 7810, 7806, 1, 0, 0, 0, 7810, 7811, 1, 0, 0, 0, 7811, 7813, 1, 0, 0, 0, 7812, 7802, 1, 0, 0, 0, 7812, 7813, 1, 0, 0, 0, 7813, 7814, 1, 0, 0, 0, 7814, 7818, 5, 146, 0, 0, 7815, 7817, 3, 846, 423, 0, 7816, 7815, 1, 0, 0, 0, 7817, 7820, 1, 0, 0, 0, 7818, 7816, 1, 0, 0, 0, 7818, 7819, 1, 0, 0, 0, 7819, 7822, 1, 0, 0, 0, 7820, 7818, 1, 0, 0, 0, 7821, 7823, 3, 924, 462, 0, 7822, 7821, 1, 0, 0, 0, 7822, 7823, 1, 0, 0, 0, 7823, 7824, 1, 0, 0, 0, 7824, 7826, 5, 454, 0, 0, 7825, 7827, 3, 928, 464, 0, 7826, 7825, 1, 0, 0, 0, 7826, 7827, 1, 0, 0, 0, 7827, 837, 1, 0, 0, 0, 7828, 7829, 5, 18, 0, 0, 7829, 7830, 3, 928, 464, 0, 7830, 7831, 5, 19, 0, 0, 7831, 839, 1, 0, 0, 0, 7832, 7879, 3, 928, 464, 0, 7833, 7834, 5, 496, 0, 0, 7834, 7837, 5, 62, 0, 0, 7835, 7838, 5, 28, 0, 0, 7836, 7838, 3, 818, 409, 0, 7837, 7835, 1, 0, 0, 0, 7837, 7836, 1, 0, 0, 0, 7838, 7880, 1, 0, 0, 0, 7839, 7841, 5, 497, 0, 0, 7840, 7839, 1, 0, 0, 0, 7840, 7841, 1, 0, 0, 0, 7841, 7842, 1, 0, 0, 0, 7842, 7844, 3, 652, 326, 0, 7843, 7845, 3, 98, 49, 0, 7844, 7843, 1, 0, 0, 0, 7844, 7845, 1, 0, 0, 0, 7845, 7848, 1, 0, 0, 0, 7846, 7847, 5, 77, 0, 0, 7847, 7849, 5, 78, 0, 0, 7848, 7846, 1, 0, 0, 0, 7848, 7849, 1, 0, 0, 0, 7849, 7855, 1, 0, 0, 0, 7850, 7853, 3, 844, 422, 0, 7851, 7853, 5, 53, 0, 0, 7852, 7850, 1, 0, 0, 0, 7852, 7851, 1, 0, 0, 0, 7853, 7854, 1, 0, 0, 0, 7854, 7856, 3, 932, 466, 0, 7855, 7852, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7880, 1, 0, 0, 0, 7857, 7859, 5, 269, 0, 0, 7858, 7857, 1, 0, 0, 0, 7858, 7859, 1, 0, 0, 0, 7859, 7860, 1, 0, 0, 0, 7860, 7862, 5, 324, 0, 0, 7861, 7858, 1, 0, 0, 0, 7861, 7862, 1, 0, 0, 0, 7862, 7863, 1, 0, 0, 0, 7863, 7875, 5, 172, 0, 0, 7864, 7865, 5, 2, 0, 0, 7865, 7870, 3, 842, 421, 0, 7866, 7867, 5, 6, 0, 0, 7867, 7869, 3, 842, 421, 0, 7868, 7866, 1, 0, 0, 0, 7869, 7872, 1, 0, 0, 0, 7870, 7868, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7873, 1, 0, 0, 0, 7872, 7870, 1, 0, 0, 0, 7873, 7874, 5, 3, 0, 0, 7874, 7876, 1, 0, 0, 0, 7875, 7864, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7877, 1, 0, 0, 0, 7877, 7878, 7, 112, 0, 0, 7878, 7880, 3, 560, 280, 0, 7879, 7833, 1, 0, 0, 0, 7879, 7840, 1, 0, 0, 0, 7879, 7861, 1, 0, 0, 0, 7880, 7881, 1, 0, 0, 0, 7881, 7882, 5, 7, 0, 0, 7882, 841, 1, 0, 0, 0, 7883, 7884, 3, 928, 464, 0, 7884, 7885, 3, 652, 326, 0, 7885, 843, 1, 0, 0, 0, 7886, 7887, 7, 113, 0, 0, 7887, 845, 1, 0, 0, 0, 7888, 7889, 3, 836, 418, 0, 7889, 7890, 5, 7, 0, 0, 7890, 7913, 1, 0, 0, 0, 7891, 7913, 3, 874, 437, 0, 7892, 7913, 3, 876, 438, 0, 7893, 7913, 3, 852, 426, 0, 7894, 7913, 3, 860, 430, 0, 7895, 7913, 3, 864, 432, 0, 7896, 7913, 3, 866, 433, 0, 7897, 7913, 3, 870, 435, 0, 7898, 7913, 3, 872, 436, 0, 7899, 7913, 3, 880, 440, 0, 7900, 7913, 3, 884, 442, 0, 7901, 7913, 3, 886, 443, 0, 7902, 7913, 3, 848, 424, 0, 7903, 7913, 3, 850, 425, 0, 7904, 7913, 3, 854, 427, 0, 7905, 7913, 3, 890, 445, 0, 7906, 7913, 3, 894, 447, 0, 7907, 7913, 3, 898, 449, 0, 7908, 7913, 3, 914, 457, 0, 7909, 7913, 3, 916, 458, 0, 7910, 7913, 3, 918, 459, 0, 7911, 7913, 3, 920, 460, 0, 7912, 7888, 1, 0, 0, 0, 7912, 7891, 1, 0, 0, 0, 7912, 7892, 1, 0, 0, 0, 7912, 7893, 1, 0, 0, 0, 7912, 7894, 1, 0, 0, 0, 7912, 7895, 1, 0, 0, 0, 7912, 7896, 1, 0, 0, 0, 7912, 7897, 1, 0, 0, 0, 7912, 7898, 1, 0, 0, 0, 7912, 7899, 1, 0, 0, 0, 7912, 7900, 1, 0, 0, 0, 7912, 7901, 1, 0, 0, 0, 7912, 7902, 1, 0, 0, 0, 7912, 7903, 1, 0, 0, 0, 7912, 7904, 1, 0, 0, 0, 7912, 7905, 1, 0, 0, 0, 7912, 7906, 1, 0, 0, 0, 7912, 7907, 1, 0, 0, 0, 7912, 7908, 1, 0, 0, 0, 7912, 7909, 1, 0, 0, 0, 7912, 7910, 1, 0, 0, 0, 7912, 7911, 1, 0, 0, 0, 7913, 847, 1, 0, 0, 0, 7914, 7915, 5, 498, 0, 0, 7915, 7916, 3, 932, 466, 0, 7916, 7917, 5, 7, 0, 0, 7917, 849, 1, 0, 0, 0, 7918, 7919, 5, 433, 0, 0, 7919, 7926, 3, 928, 464, 0, 7920, 7922, 5, 2, 0, 0, 7921, 7923, 3, 730, 365, 0, 7922, 7921, 1, 0, 0, 0, 7922, 7923, 1, 0, 0, 0, 7923, 7924, 1, 0, 0, 0, 7924, 7925, 5, 3, 0, 0, 7925, 7927, 5, 7, 0, 0, 7926, 7920, 1, 0, 0, 0, 7926, 7927, 1, 0, 0, 0, 7927, 7938, 1, 0, 0, 0, 7928, 7929, 5, 57, 0, 0, 7929, 7930, 3, 928, 464, 0, 7930, 7932, 5, 2, 0, 0, 7931, 7933, 3, 730, 365, 0, 7932, 7931, 1, 0, 0, 0, 7932, 7933, 1, 0, 0, 0, 7933, 7934, 1, 0, 0, 0, 7934, 7935, 5, 3, 0, 0, 7935, 7936, 5, 7, 0, 0, 7936, 7938, 1, 0, 0, 0, 7937, 7918, 1, 0, 0, 0, 7937, 7928, 1, 0, 0, 0, 7938, 851, 1, 0, 0, 0, 7939, 7940, 3, 858, 429, 0, 7940, 7941, 3, 844, 422, 0, 7941, 7942, 3, 932, 466, 0, 7942, 7943, 5, 7, 0, 0, 7943, 853, 1, 0, 0, 0, 7944, 7946, 5, 499, 0, 0, 7945, 7947, 7, 114, 0, 0, 7946, 7945, 1, 0, 0, 0, 7946, 7947, 1, 0, 0, 0, 7947, 7948, 1, 0, 0, 0, 7948, 7949, 5, 500, 0, 0, 7949, 7954, 3, 856, 428, 0, 7950, 7951, 5, 6, 0, 0, 7951, 7953, 3, 856, 428, 0, 7952, 7950, 1, 0, 0, 0, 7953, 7956, 1, 0, 0, 0, 7954, 7952, 1, 0, 0, 0, 7954, 7955, 1, 0, 0, 0, 7955, 7957, 1, 0, 0, 0, 7956, 7954, 1, 0, 0, 0, 7957, 7958, 5, 7, 0, 0, 7958, 855, 1, 0, 0, 0, 7959, 7960, 3, 858, 429, 0, 7960, 7961, 3, 844, 422, 0, 7961, 7962, 3, 818, 409, 0, 7962, 857, 1, 0, 0, 0, 7963, 7966, 3, 316, 158, 0, 7964, 7966, 5, 28, 0, 0, 7965, 7963, 1, 0, 0, 0, 7965, 7964, 1, 0, 0, 0, 7966, 7973, 1, 0, 0, 0, 7967, 7968, 5, 4, 0, 0, 7968, 7969, 3, 674, 337, 0, 7969, 7970, 5, 5, 0, 0, 7970, 7972, 1, 0, 0, 0, 7971, 7967, 1, 0, 0, 0, 7972, 7975, 1, 0, 0, 0, 7973, 7971, 1, 0, 0, 0, 7973, 7974, 1, 0, 0, 0, 7974, 859, 1, 0, 0, 0, 7975, 7973, 1, 0, 0, 0, 7976, 7977, 5, 220, 0, 0, 7977, 7978, 3, 932, 466, 0, 7978, 7982, 5, 93, 0, 0, 7979, 7981, 3, 846, 423, 0, 7980, 7979, 1, 0, 0, 0, 7981, 7984, 1, 0, 0, 0, 7982, 7980, 1, 0, 0, 0, 7982, 7983, 1, 0, 0, 0, 7983, 7996, 1, 0, 0, 0, 7984, 7982, 1, 0, 0, 0, 7985, 7986, 5, 502, 0, 0, 7986, 7987, 3, 674, 337, 0, 7987, 7991, 5, 93, 0, 0, 7988, 7990, 3, 846, 423, 0, 7989, 7988, 1, 0, 0, 0, 7990, 7993, 1, 0, 0, 0, 7991, 7989, 1, 0, 0, 0, 7991, 7992, 1, 0, 0, 0, 7992, 7995, 1, 0, 0, 0, 7993, 7991, 1, 0, 0, 0, 7994, 7985, 1, 0, 0, 0, 7995, 7998, 1, 0, 0, 0, 7996, 7994, 1, 0, 0, 0, 7996, 7997, 1, 0, 0, 0, 7997, 8000, 1, 0, 0, 0, 7998, 7996, 1, 0, 0, 0, 7999, 8001, 3, 862, 431, 0, 8000, 7999, 1, 0, 0, 0, 8000, 8001, 1, 0, 0, 0, 8001, 8002, 1, 0, 0, 0, 8002, 8003, 5, 454, 0, 0, 8003, 8004, 5, 220, 0, 0, 8004, 8005, 5, 7, 0, 0, 8005, 861, 1, 0, 0, 0, 8006, 8010, 5, 58, 0, 0, 8007, 8009, 3, 846, 423, 0, 8008, 8007, 1, 0, 0, 0, 8009, 8012, 1, 0, 0, 0, 8010, 8008, 1, 0, 0, 0, 8010, 8011, 1, 0, 0, 0, 8011, 863, 1, 0, 0, 0, 8012, 8010, 1, 0, 0, 0, 8013, 8015, 5, 40, 0, 0, 8014, 8016, 3, 932, 466, 0, 8015, 8014, 1, 0, 0, 0, 8015, 8016, 1, 0, 0, 0, 8016, 8026, 1, 0, 0, 0, 8017, 8018, 5, 102, 0, 0, 8018, 8019, 3, 730, 365, 0, 8019, 8023, 5, 93, 0, 0, 8020, 8022, 3, 846, 423, 0, 8021, 8020, 1, 0, 0, 0, 8022, 8025, 1, 0, 0, 0, 8023, 8021, 1, 0, 0, 0, 8023, 8024, 1, 0, 0, 0, 8024, 8027, 1, 0, 0, 0, 8025, 8023, 1, 0, 0, 0, 8026, 8017, 1, 0, 0, 0, 8027, 8028, 1, 0, 0, 0, 8028, 8026, 1, 0, 0, 0, 8028, 8029, 1, 0, 0, 0, 8029, 8031, 1, 0, 0, 0, 8030, 8032, 3, 862, 431, 0, 8031, 8030, 1, 0, 0, 0, 8031, 8032, 1, 0, 0, 0, 8032, 8033, 1, 0, 0, 0, 8033, 8034, 5, 454, 0, 0, 8034, 8035, 5, 40, 0, 0, 8035, 8036, 5, 7, 0, 0, 8036, 865, 1, 0, 0, 0, 8037, 8039, 3, 838, 419, 0, 8038, 8037, 1, 0, 0, 0, 8038, 8039, 1, 0, 0, 0, 8039, 8044, 1, 0, 0, 0, 8040, 8041, 5, 503, 0, 0, 8041, 8045, 3, 674, 337, 0, 8042, 8043, 5, 62, 0, 0, 8043, 8045, 3, 868, 434, 0, 8044, 8040, 1, 0, 0, 0, 8044, 8042, 1, 0, 0, 0, 8044, 8045, 1, 0, 0, 0, 8045, 8046, 1, 0, 0, 0, 8046, 8047, 3, 882, 441, 0, 8047, 867, 1, 0, 0, 0, 8048, 8049, 3, 314, 157, 0, 8049, 8072, 5, 68, 0, 0, 8050, 8052, 3, 818, 409, 0, 8051, 8053, 3, 534, 267, 0, 8052, 8051, 1, 0, 0, 0, 8052, 8053, 1, 0, 0, 0, 8053, 8073, 1, 0, 0, 0, 8054, 8073, 3, 560, 280, 0, 8055, 8073, 3, 520, 260, 0, 8056, 8057, 5, 202, 0, 0, 8057, 8060, 3, 674, 337, 0, 8058, 8059, 5, 100, 0, 0, 8059, 8061, 3, 730, 365, 0, 8060, 8058, 1, 0, 0, 0, 8060, 8061, 1, 0, 0, 0, 8061, 8073, 1, 0, 0, 0, 8062, 8064, 5, 504, 0, 0, 8063, 8062, 1, 0, 0, 0, 8063, 8064, 1, 0, 0, 0, 8064, 8065, 1, 0, 0, 0, 8065, 8066, 3, 674, 337, 0, 8066, 8067, 5, 24, 0, 0, 8067, 8070, 3, 674, 337, 0, 8068, 8069, 5, 147, 0, 0, 8069, 8071, 3, 674, 337, 0, 8070, 8068, 1, 0, 0, 0, 8070, 8071, 1, 0, 0, 0, 8071, 8073, 1, 0, 0, 0, 8072, 8050, 1, 0, 0, 0, 8072, 8054, 1, 0, 0, 0, 8072, 8055, 1, 0, 0, 0, 8072, 8056, 1, 0, 0, 0, 8072, 8063, 1, 0, 0, 0, 8073, 869, 1, 0, 0, 0, 8074, 8076, 3, 838, 419, 0, 8075, 8074, 1, 0, 0, 0, 8075, 8076, 1, 0, 0, 0, 8076, 8077, 1, 0, 0, 0, 8077, 8078, 5, 505, 0, 0, 8078, 8081, 3, 314, 157, 0, 8079, 8080, 5, 506, 0, 0, 8080, 8082, 5, 571, 0, 0, 8081, 8079, 1, 0, 0, 0, 8081, 8082, 1, 0, 0, 0, 8082, 8083, 1, 0, 0, 0, 8083, 8084, 5, 68, 0, 0, 8084, 8085, 5, 35, 0, 0, 8085, 8086, 3, 674, 337, 0, 8086, 8087, 3, 882, 441, 0, 8087, 871, 1, 0, 0, 0, 8088, 8090, 7, 115, 0, 0, 8089, 8091, 3, 928, 464, 0, 8090, 8089, 1, 0, 0, 0, 8090, 8091, 1, 0, 0, 0, 8091, 8094, 1, 0, 0, 0, 8092, 8093, 5, 102, 0, 0, 8093, 8095, 3, 932, 466, 0, 8094, 8092, 1, 0, 0, 0, 8094, 8095, 1, 0, 0, 0, 8095, 8096, 1, 0, 0, 0, 8096, 8097, 5, 7, 0, 0, 8097, 873, 1, 0, 0, 0, 8098, 8113, 5, 508, 0, 0, 8099, 8100, 5, 268, 0, 0, 8100, 8114, 3, 932, 466, 0, 8101, 8108, 5, 509, 0, 0, 8102, 8103, 5, 202, 0, 0, 8103, 8104, 3, 674, 337, 0, 8104, 8105, 5, 100, 0, 0, 8105, 8106, 3, 730, 365, 0, 8106, 8109, 1, 0, 0, 0, 8107, 8109, 3, 560, 280, 0, 8108, 8102, 1, 0, 0, 0, 8108, 8107, 1, 0, 0, 0, 8109, 8114, 1, 0, 0, 0, 8110, 8112, 3, 932, 466, 0, 8111, 8110, 1, 0, 0, 0, 8111, 8112, 1, 0, 0, 0, 8112, 8114, 1, 0, 0, 0, 8113, 8099, 1, 0, 0, 0, 8113, 8101, 1, 0, 0, 0, 8113, 8111, 1, 0, 0, 0, 8114, 8115, 1, 0, 0, 0, 8115, 8116, 5, 7, 0, 0, 8116, 875, 1, 0, 0, 0, 8117, 8147, 5, 510, 0, 0, 8118, 8120, 7, 116, 0, 0, 8119, 8118, 1, 0, 0, 0, 8119, 8120, 1, 0, 0, 0, 8120, 8133, 1, 0, 0, 0, 8121, 8134, 3, 826, 413, 0, 8122, 8123, 5, 511, 0, 0, 8123, 8134, 3, 808, 404, 0, 8124, 8131, 3, 808, 404, 0, 8125, 8126, 5, 6, 0, 0, 8126, 8128, 3, 674, 337, 0, 8127, 8125, 1, 0, 0, 0, 8128, 8129, 1, 0, 0, 0, 8129, 8127, 1, 0, 0, 0, 8129, 8130, 1, 0, 0, 0, 8130, 8132, 1, 0, 0, 0, 8131, 8127, 1, 0, 0, 0, 8131, 8132, 1, 0, 0, 0, 8132, 8134, 1, 0, 0, 0, 8133, 8121, 1, 0, 0, 0, 8133, 8122, 1, 0, 0, 0, 8133, 8124, 1, 0, 0, 0, 8133, 8134, 1, 0, 0, 0, 8134, 8144, 1, 0, 0, 0, 8135, 8136, 5, 100, 0, 0, 8136, 8141, 3, 878, 439, 0, 8137, 8138, 5, 6, 0, 0, 8138, 8140, 3, 878, 439, 0, 8139, 8137, 1, 0, 0, 0, 8140, 8143, 1, 0, 0, 0, 8141, 8139, 1, 0, 0, 0, 8141, 8142, 1, 0, 0, 0, 8142, 8145, 1, 0, 0, 0, 8143, 8141, 1, 0, 0, 0, 8144, 8135, 1, 0, 0, 0, 8144, 8145, 1, 0, 0, 0, 8145, 8146, 1, 0, 0, 0, 8146, 8148, 5, 7, 0, 0, 8147, 8119, 1, 0, 0, 0, 8147, 8148, 1, 0, 0, 0, 8148, 877, 1, 0, 0, 0, 8149, 8150, 3, 826, 413, 0, 8150, 8151, 5, 10, 0, 0, 8151, 8152, 3, 674, 337, 0, 8152, 879, 1, 0, 0, 0, 8153, 8154, 5, 518, 0, 0, 8154, 8157, 3, 932, 466, 0, 8155, 8156, 5, 6, 0, 0, 8156, 8158, 3, 932, 466, 0, 8157, 8155, 1, 0, 0, 0, 8157, 8158, 1, 0, 0, 0, 8158, 8159, 1, 0, 0, 0, 8159, 8160, 5, 7, 0, 0, 8160, 881, 1, 0, 0, 0, 8161, 8165, 5, 519, 0, 0, 8162, 8164, 3, 846, 423, 0, 8163, 8162, 1, 0, 0, 0, 8164, 8167, 1, 0, 0, 0, 8165, 8163, 1, 0, 0, 0, 8165, 8166, 1, 0, 0, 0, 8166, 8168, 1, 0, 0, 0, 8167, 8165, 1, 0, 0, 0, 8168, 8169, 5, 454, 0, 0, 8169, 8171, 5, 519, 0, 0, 8170, 8172, 3, 928, 464, 0, 8171, 8170, 1, 0, 0, 0, 8171, 8172, 1, 0, 0, 0, 8172, 8173, 1, 0, 0, 0, 8173, 8174, 5, 7, 0, 0, 8174, 883, 1, 0, 0, 0, 8175, 8177, 3, 4, 2, 0, 8176, 8178, 3, 888, 444, 0, 8177, 8176, 1, 0, 0, 0, 8177, 8178, 1, 0, 0, 0, 8178, 8179, 1, 0, 0, 0, 8179, 8180, 5, 7, 0, 0, 8180, 885, 1, 0, 0, 0, 8181, 8182, 5, 202, 0, 0, 8182, 8198, 3, 674, 337, 0, 8183, 8185, 3, 888, 444, 0, 8184, 8183, 1, 0, 0, 0, 8184, 8185, 1, 0, 0, 0, 8185, 8188, 1, 0, 0, 0, 8186, 8187, 5, 100, 0, 0, 8187, 8189, 3, 730, 365, 0, 8188, 8186, 1, 0, 0, 0, 8188, 8189, 1, 0, 0, 0, 8189, 8199, 1, 0, 0, 0, 8190, 8191, 5, 100, 0, 0, 8191, 8193, 3, 730, 365, 0, 8192, 8190, 1, 0, 0, 0, 8192, 8193, 1, 0, 0, 0, 8193, 8195, 1, 0, 0, 0, 8194, 8196, 3, 888, 444, 0, 8195, 8194, 1, 0, 0, 0, 8195, 8196, 1, 0, 0, 0, 8196, 8199, 1, 0, 0, 0, 8197, 8199, 1, 0, 0, 0, 8198, 8184, 1, 0, 0, 0, 8198, 8192, 1, 0, 0, 0, 8198, 8197, 1, 0, 0, 0, 8199, 8200, 1, 0, 0, 0, 8200, 8201, 5, 7, 0, 0, 8201, 887, 1, 0, 0, 0, 8202, 8204, 5, 71, 0, 0, 8203, 8205, 5, 346, 0, 0, 8204, 8203, 1, 0, 0, 0, 8204, 8205, 1, 0, 0, 0, 8205, 8206, 1, 0, 0, 0, 8206, 8207, 3, 730, 365, 0, 8207, 889, 1, 0, 0, 0, 8208, 8240, 5, 520, 0, 0, 8209, 8214, 3, 922, 461, 0, 8210, 8212, 5, 269, 0, 0, 8211, 8210, 1, 0, 0, 0, 8211, 8212, 1, 0, 0, 0, 8212, 8213, 1, 0, 0, 0, 8213, 8215, 5, 324, 0, 0, 8214, 8211, 1, 0, 0, 0, 8214, 8215, 1, 0, 0, 0, 8215, 8216, 1, 0, 0, 0, 8216, 8224, 5, 62, 0, 0, 8217, 8225, 3, 560, 280, 0, 8218, 8219, 5, 202, 0, 0, 8219, 8222, 3, 932, 466, 0, 8220, 8221, 5, 100, 0, 0, 8221, 8223, 3, 730, 365, 0, 8222, 8220, 1, 0, 0, 0, 8222, 8223, 1, 0, 0, 0, 8223, 8225, 1, 0, 0, 0, 8224, 8217, 1, 0, 0, 0, 8224, 8218, 1, 0, 0, 0, 8225, 8241, 1, 0, 0, 0, 8226, 8238, 3, 818, 409, 0, 8227, 8228, 5, 2, 0, 0, 8228, 8233, 3, 892, 446, 0, 8229, 8230, 5, 6, 0, 0, 8230, 8232, 3, 892, 446, 0, 8231, 8229, 1, 0, 0, 0, 8232, 8235, 1, 0, 0, 0, 8233, 8231, 1, 0, 0, 0, 8233, 8234, 1, 0, 0, 0, 8234, 8236, 1, 0, 0, 0, 8235, 8233, 1, 0, 0, 0, 8236, 8237, 5, 3, 0, 0, 8237, 8239, 1, 0, 0, 0, 8238, 8227, 1, 0, 0, 0, 8238, 8239, 1, 0, 0, 0, 8239, 8241, 1, 0, 0, 0, 8240, 8209, 1, 0, 0, 0, 8240, 8226, 1, 0, 0, 0, 8241, 8242, 1, 0, 0, 0, 8242, 8243, 5, 7, 0, 0, 8243, 891, 1, 0, 0, 0, 8244, 8245, 3, 818, 409, 0, 8245, 8246, 5, 20, 0, 0, 8246, 8248, 1, 0, 0, 0, 8247, 8244, 1, 0, 0, 0, 8247, 8248, 1, 0, 0, 0, 8248, 8249, 1, 0, 0, 0, 8249, 8250, 3, 674, 337, 0, 8250, 893, 1, 0, 0, 0, 8251, 8253, 5, 61, 0, 0, 8252, 8254, 3, 896, 448, 0, 8253, 8252, 1, 0, 0, 0, 8253, 8254, 1, 0, 0, 0, 8254, 8256, 1, 0, 0, 0, 8255, 8257, 3, 332, 166, 0, 8256, 8255, 1, 0, 0, 0, 8256, 8257, 1, 0, 0, 0, 8257, 8258, 1, 0, 0, 0, 8258, 8259, 3, 922, 461, 0, 8259, 8260, 5, 71, 0, 0, 8260, 8261, 3, 730, 365, 0, 8261, 8262, 5, 7, 0, 0, 8262, 895, 1, 0, 0, 0, 8263, 8278, 5, 268, 0, 0, 8264, 8278, 5, 293, 0, 0, 8265, 8278, 5, 207, 0, 0, 8266, 8278, 5, 249, 0, 0, 8267, 8269, 7, 50, 0, 0, 8268, 8267, 1, 0, 0, 0, 8268, 8269, 1, 0, 0, 0, 8269, 8270, 1, 0, 0, 0, 8270, 8278, 3, 674, 337, 0, 8271, 8278, 5, 30, 0, 0, 8272, 8275, 7, 117, 0, 0, 8273, 8276, 3, 674, 337, 0, 8274, 8276, 5, 30, 0, 0, 8275, 8273, 1, 0, 0, 0, 8275, 8274, 1, 0, 0, 0, 8275, 8276, 1, 0, 0, 0, 8276, 8278, 1, 0, 0, 0, 8277, 8263, 1, 0, 0, 0, 8277, 8264, 1, 0, 0, 0, 8277, 8265, 1, 0, 0, 0, 8277, 8266, 1, 0, 0, 0, 8277, 8268, 1, 0, 0, 0, 8277, 8271, 1, 0, 0, 0, 8277, 8272, 1, 0, 0, 0, 8278, 897, 1, 0, 0, 0, 8279, 8281, 5, 265, 0, 0, 8280, 8282, 3, 896, 448, 0, 8281, 8280, 1, 0, 0, 0, 8281, 8282, 1, 0, 0, 0, 8282, 8283, 1, 0, 0, 0, 8283, 8284, 3, 922, 461, 0, 8284, 8285, 5, 7, 0, 0, 8285, 899, 1, 0, 0, 0, 8286, 8288, 3, 572, 286, 0, 8287, 8286, 1, 0, 0, 0, 8287, 8288, 1, 0, 0, 0, 8288, 8289, 1, 0, 0, 0, 8289, 8290, 5, 525, 0, 0, 8290, 8292, 5, 71, 0, 0, 8291, 8293, 5, 81, 0, 0, 8292, 8291, 1, 0, 0, 0, 8292, 8293, 1, 0, 0, 0, 8293, 8294, 1, 0, 0, 0, 8294, 8296, 3, 774, 387, 0, 8295, 8297, 5, 9, 0, 0, 8296, 8295, 1, 0, 0, 0, 8296, 8297, 1, 0, 0, 0, 8297, 8302, 1, 0, 0, 0, 8298, 8300, 5, 36, 0, 0, 8299, 8298, 1, 0, 0, 0, 8299, 8300, 1, 0, 0, 0, 8300, 8301, 1, 0, 0, 0, 8301, 8303, 3, 818, 409, 0, 8302, 8299, 1, 0, 0, 0, 8302, 8303, 1, 0, 0, 0, 8303, 8304, 1, 0, 0, 0, 8304, 8305, 5, 100, 0, 0, 8305, 8306, 3, 902, 451, 0, 8306, 8307, 5, 80, 0, 0, 8307, 8309, 3, 674, 337, 0, 8308, 8310, 3, 904, 452, 0, 8309, 8308, 1, 0, 0, 0, 8310, 8311, 1, 0, 0, 0, 8311, 8309, 1, 0, 0, 0, 8311, 8312, 1, 0, 0, 0, 8312, 901, 1, 0, 0, 0, 8313, 8315, 5, 81, 0, 0, 8314, 8313, 1, 0, 0, 0, 8314, 8315, 1, 0, 0, 0, 8315, 8316, 1, 0, 0, 0, 8316, 8318, 3, 774, 387, 0, 8317, 8319, 5, 9, 0, 0, 8318, 8317, 1, 0, 0, 0, 8318, 8319, 1, 0, 0, 0, 8319, 8325, 1, 0, 0, 0, 8320, 8323, 3, 564, 282, 0, 8321, 8323, 3, 608, 304, 0, 8322, 8320, 1, 0, 0, 0, 8322, 8321, 1, 0, 0, 0, 8323, 8325, 1, 0, 0, 0, 8324, 8314, 1, 0, 0, 0, 8324, 8322, 1, 0, 0, 0, 8325, 8330, 1, 0, 0, 0, 8326, 8328, 5, 36, 0, 0, 8327, 8326, 1, 0, 0, 0, 8327, 8328, 1, 0, 0, 0, 8328, 8329, 1, 0, 0, 0, 8329, 8331, 3, 818, 409, 0, 8330, 8327, 1, 0, 0, 0, 8330, 8331, 1, 0, 0, 0, 8331, 903, 1, 0, 0, 0, 8332, 8333, 5, 102, 0, 0, 8333, 8336, 5, 526, 0, 0, 8334, 8335, 5, 33, 0, 0, 8335, 8337, 3, 674, 337, 0, 8336, 8334, 1, 0, 0, 0, 8336, 8337, 1, 0, 0, 0, 8337, 8338, 1, 0, 0, 0, 8338, 8343, 5, 93, 0, 0, 8339, 8344, 3, 908, 454, 0, 8340, 8344, 5, 182, 0, 0, 8341, 8342, 5, 57, 0, 0, 8342, 8344, 5, 270, 0, 0, 8343, 8339, 1, 0, 0, 0, 8343, 8340, 1, 0, 0, 0, 8343, 8341, 1, 0, 0, 0, 8344, 8359, 1, 0, 0, 0, 8345, 8346, 5, 102, 0, 0, 8346, 8347, 5, 77, 0, 0, 8347, 8350, 5, 526, 0, 0, 8348, 8349, 5, 33, 0, 0, 8349, 8351, 3, 674, 337, 0, 8350, 8348, 1, 0, 0, 0, 8350, 8351, 1, 0, 0, 0, 8351, 8352, 1, 0, 0, 0, 8352, 8356, 5, 93, 0, 0, 8353, 8357, 3, 906, 453, 0, 8354, 8355, 5, 57, 0, 0, 8355, 8357, 5, 270, 0, 0, 8356, 8353, 1, 0, 0, 0, 8356, 8354, 1, 0, 0, 0, 8357, 8359, 1, 0, 0, 0, 8358, 8332, 1, 0, 0, 0, 8358, 8345, 1, 0, 0, 0, 8359, 905, 1, 0, 0, 0, 8360, 8362, 5, 241, 0, 0, 8361, 8363, 3, 144, 72, 0, 8362, 8361, 1, 0, 0, 0, 8362, 8363, 1, 0, 0, 0, 8363, 8367, 1, 0, 0, 0, 8364, 8365, 5, 463, 0, 0, 8365, 8366, 7, 76, 0, 0, 8366, 8368, 5, 450, 0, 0, 8367, 8364, 1, 0, 0, 0, 8367, 8368, 1, 0, 0, 0, 8368, 8369, 1, 0, 0, 0, 8369, 8370, 3, 910, 455, 0, 8370, 907, 1, 0, 0, 0, 8371, 8372, 5, 369, 0, 0, 8372, 8390, 5, 333, 0, 0, 8373, 8374, 3, 800, 400, 0, 8374, 8375, 5, 10, 0, 0, 8375, 8376, 3, 912, 456, 0, 8376, 8391, 1, 0, 0, 0, 8377, 8378, 3, 144, 72, 0, 8378, 8379, 5, 10, 0, 0, 8379, 8380, 5, 2, 0, 0, 8380, 8385, 3, 912, 456, 0, 8381, 8382, 5, 6, 0, 0, 8382, 8384, 3, 912, 456, 0, 8383, 8381, 1, 0, 0, 0, 8384, 8387, 1, 0, 0, 0, 8385, 8383, 1, 0, 0, 0, 8385, 8386, 1, 0, 0, 0, 8386, 8388, 1, 0, 0, 0, 8387, 8385, 1, 0, 0, 0, 8388, 8389, 5, 3, 0, 0, 8389, 8391, 1, 0, 0, 0, 8390, 8373, 1, 0, 0, 0, 8390, 8377, 1, 0, 0, 0, 8391, 8392, 1, 0, 0, 0, 8392, 8390, 1, 0, 0, 0, 8392, 8393, 1, 0, 0, 0, 8393, 909, 1, 0, 0, 0, 8394, 8395, 5, 422, 0, 0, 8395, 8396, 5, 2, 0, 0, 8396, 8401, 3, 912, 456, 0, 8397, 8398, 5, 6, 0, 0, 8398, 8400, 3, 912, 456, 0, 8399, 8397, 1, 0, 0, 0, 8400, 8403, 1, 0, 0, 0, 8401, 8399, 1, 0, 0, 0, 8401, 8402, 1, 0, 0, 0, 8402, 8404, 1, 0, 0, 0, 8403, 8401, 1, 0, 0, 0, 8404, 8405, 5, 3, 0, 0, 8405, 8409, 1, 0, 0, 0, 8406, 8407, 5, 53, 0, 0, 8407, 8409, 5, 422, 0, 0, 8408, 8394, 1, 0, 0, 0, 8408, 8406, 1, 0, 0, 0, 8409, 911, 1, 0, 0, 0, 8410, 8413, 3, 588, 294, 0, 8411, 8413, 5, 53, 0, 0, 8412, 8410, 1, 0, 0, 0, 8412, 8411, 1, 0, 0, 0, 8413, 913, 1, 0, 0, 0, 8414, 8415, 5, 157, 0, 0, 8415, 8416, 3, 922, 461, 0, 8416, 8417, 5, 7, 0, 0, 8417, 915, 1, 0, 0, 0, 8418, 8419, 5, 78, 0, 0, 8419, 8420, 5, 7, 0, 0, 8420, 917, 1, 0, 0, 0, 8421, 8427, 7, 67, 0, 0, 8422, 8424, 5, 33, 0, 0, 8423, 8425, 5, 269, 0, 0, 8424, 8423, 1, 0, 0, 0, 8424, 8425, 1, 0, 0, 0, 8425, 8426, 1, 0, 0, 0, 8426, 8428, 5, 153, 0, 0, 8427, 8422, 1, 0, 0, 0, 8427, 8428, 1, 0, 0, 0, 8428, 8429, 1, 0, 0, 0, 8429, 8430, 5, 7, 0, 0, 8430, 919, 1, 0, 0, 0, 8431, 8432, 5, 333, 0, 0, 8432, 8433, 3, 316, 158, 0, 8433, 8434, 5, 94, 0, 0, 8434, 8435, 5, 53, 0, 0, 8435, 8436, 5, 7, 0, 0, 8436, 8444, 1, 0, 0, 0, 8437, 8440, 5, 313, 0, 0, 8438, 8441, 3, 316, 158, 0, 8439, 8441, 5, 30, 0, 0, 8440, 8438, 1, 0, 0, 0, 8440, 8439, 1, 0, 0, 0, 8441, 8442, 1, 0, 0, 0, 8442, 8444, 5, 7, 0, 0, 8443, 8431, 1, 0, 0, 0, 8443, 8437, 1, 0, 0, 0, 8444, 921, 1, 0, 0, 0, 8445, 8448, 3, 818, 409, 0, 8446, 8448, 5, 28, 0, 0, 8447, 8445, 1, 0, 0, 0, 8447, 8446, 1, 0, 0, 0, 8448, 923, 1, 0, 0, 0, 8449, 8466, 5, 517, 0, 0, 8450, 8451, 5, 102, 0, 0, 8451, 8456, 3, 926, 463, 0, 8452, 8453, 5, 82, 0, 0, 8453, 8455, 3, 926, 463, 0, 8454, 8452, 1, 0, 0, 0, 8455, 8458, 1, 0, 0, 0, 8456, 8454, 1, 0, 0, 0, 8456, 8457, 1, 0, 0, 0, 8457, 8459, 1, 0, 0, 0, 8458, 8456, 1, 0, 0, 0, 8459, 8463, 5, 93, 0, 0, 8460, 8462, 3, 846, 423, 0, 8461, 8460, 1, 0, 0, 0, 8462, 8465, 1, 0, 0, 0, 8463, 8461, 1, 0, 0, 0, 8463, 8464, 1, 0, 0, 0, 8464, 8467, 1, 0, 0, 0, 8465, 8463, 1, 0, 0, 0, 8466, 8450, 1, 0, 0, 0, 8467, 8468, 1, 0, 0, 0, 8468, 8466, 1, 0, 0, 0, 8468, 8469, 1, 0, 0, 0, 8469, 925, 1, 0, 0, 0, 8470, 8474, 3, 928, 464, 0, 8471, 8472, 5, 511, 0, 0, 8472, 8474, 3, 808, 404, 0, 8473, 8470, 1, 0, 0, 0, 8473, 8471, 1, 0, 0, 0, 8474, 927, 1, 0, 0, 0, 8475, 8478, 3, 818, 409, 0, 8476, 8478, 3, 930, 465, 0, 8477, 8475, 1, 0, 0, 0, 8477, 8476, 1, 0, 0, 0, 8478, 929, 1, 0, 0, 0, 8479, 8480, 7, 118, 0, 0, 8480, 931, 1, 0, 0, 0, 8481, 8483, 3, 756, 378, 0, 8482, 8481, 1, 0, 0, 0, 8482, 8483, 1, 0, 0, 0, 8483, 8485, 1, 0, 0, 0, 8484, 8486, 3, 580, 290, 0, 8485, 8484, 1, 0, 0, 0, 8485, 8486, 1, 0, 0, 0, 8486, 8488, 1, 0, 0, 0, 8487, 8489, 3, 610, 305, 0, 8488, 8487, 1, 0, 0, 0, 8488, 8489, 1, 0, 0, 0, 8489, 8491, 1, 0, 0, 0, 8490, 8492, 3, 638, 319, 0, 8491, 8490, 1, 0, 0, 0, 8491, 8492, 1, 0, 0, 0, 8492, 8494, 1, 0, 0, 0, 8493, 8495, 3, 600, 300, 0, 8494, 8493, 1, 0, 0, 0, 8494, 8495, 1, 0, 0, 0, 8495, 8498, 1, 0, 0, 0, 8496, 8497, 5, 67, 0, 0, 8497, 8499, 3, 674, 337, 0, 8498, 8496, 1, 0, 0, 0, 8498, 8499, 1, 0, 0, 0, 8499, 8501, 1, 0, 0, 0, 8500, 8502, 3, 702, 351, 0, 8501, 8500, 1, 0, 0, 0, 8501, 8502, 1, 0, 0, 0, 8502, 933, 1, 0, 0, 0, 1188, 937, 944, 1064, 1066, 1075, 1080, 1086, 1121, 1131, 1137, 1142, 1149, 1154, 1161, 1172, 1180, 1184, 1196, 1202, 1208, 1212, 1217, 1221, 1234, 1244, 1246, 1252, 1257, 1270, 1273, 1278, 1283, 1294, 1298, 1310, 1314, 1317, 1321, 1333, 1351, 1358, 1366, 1371, 1378, 1386, 1392, 1400, 1408, 1412, 1426, 1431, 1436, 1448, 1454, 1466, 1471, 1481, 1487, 1492, 1500, 1505, 1512, 1517, 1522, 1532, 1537, 1542, 1549, 1553, 1567, 1573, 1579, 1584, 1591, 1603, 1611, 1619, 1635, 1644, 1653, 1662, 1666, 1678, 1686, 1696, 1716, 1721, 1724, 1731, 1734, 1738, 1742, 1745, 1750, 1755, 1759, 1768, 1774, 1778, 1787, 1790, 1796, 1805, 1817, 1821, 1825, 1830, 1833, 1839, 1841, 1843, 1847, 1853, 1857, 1862, 1867, 1871, 1874, 1881, 1894, 1907, 1921, 1938, 1948, 1955, 1960, 1964, 1971, 1976, 1979, 1981, 1986, 1990, 1994, 1998, 2003, 2006, 2010, 2013, 2017, 2025, 2030, 2033, 2037, 2043, 2052, 2056, 2062, 2064, 2073, 2078, 2090, 2095, 2099, 2103, 2108, 2112, 2115, 2118, 2121, 2124, 2127, 2132, 2135, 2138, 2141, 2144, 2147, 2153, 2157, 2160, 2163, 2166, 2169, 2171, 2178, 2186, 2196, 2206, 2211, 2214, 2219, 2224, 2229, 2232, 2237, 2246, 2248, 2252, 2255, 2259, 2264, 2269, 2273, 2276, 2280, 2283, 2288, 2291, 2296, 2299, 2303, 2306, 2309, 2314, 2317, 2325, 2337, 2341, 2348, 2353, 2356, 2359, 2362, 2367, 2378, 2384, 2388, 2391, 2394, 2399, 2406, 2409, 2413, 2421, 2426, 2429, 2432, 2439, 2444, 2453, 2456, 2459, 2464, 2467, 2479, 2489, 2506, 2510, 2514, 2516, 2533, 2535, 2551, 2562, 2565, 2568, 2577, 2586, 2602, 2605, 2608, 2616, 2620, 2627, 2636, 2640, 2646, 2650, 2653, 2656, 2659, 2662, 2668, 2672, 2677, 2681, 2684, 2687, 2690, 2695, 2701, 2705, 2709, 2713, 2719, 2721, 2726, 2732, 2738, 2742, 2757, 2762, 2765, 2767, 2770, 2774, 2778, 2781, 2784, 2792, 2798, 2800, 2806, 2811, 2816, 2820, 2827, 2829, 2840, 2879, 2889, 2891, 2894, 2898, 2902, 2912, 2914, 2920, 2922, 2931, 2943, 2957, 2962, 2965, 2972, 2977, 2985, 2987, 2993, 2998, 3002, 3007, 3013, 3020, 3026, 3028, 3037, 3043, 3051, 3057, 3062, 3067, 3075, 3090, 3092, 3096, 3100, 3103, 3106, 3115, 3118, 3121, 3127, 3133, 3137, 3149, 3155, 3158, 3163, 3167, 3174, 3184, 3186, 3210, 3222, 3227, 3229, 3233, 3236, 3239, 3249, 3252, 3262, 3267, 3272, 3275, 3278, 3286, 3292, 3299, 3307, 3310, 3321, 3325, 3331, 3338, 3341, 3350, 3364, 3367, 3381, 3392, 3395, 3407, 3412, 3425, 3430, 3443, 3452, 3455, 3458, 3465, 3468, 3480, 3486, 3488, 3496, 3504, 3512, 3524, 3529, 3540, 3551, 3559, 3567, 3574, 3581, 3583, 3586, 3591, 3596, 3615, 3624, 3627, 3654, 3663, 3666, 3670, 3674, 3678, 3685, 3689, 3693, 3697, 3701, 3706, 3710, 3715, 3721, 3726, 3733, 3737, 3743, 3747, 3752, 3760, 3766, 3771, 3778, 3783, 3787, 3792, 3798, 3805, 3810, 3817, 3822, 3829, 3833, 3841, 3845, 3847, 3850, 3855, 3865, 3880, 3883, 3891, 3898, 3903, 3909, 3913, 3920, 3925, 3928, 3931, 3935, 3944, 3962, 3965, 3997, 4002, 4008, 4028, 4033, 4039, 4042, 4046, 4050, 4056, 4059, 4063, 4067, 4072, 4075, 4078, 4081, 4094, 4100, 4108, 4115, 4120, 4123, 4130, 4133, 4141, 4144, 4149, 4156, 4159, 4179, 4191, 4194, 4200, 4205, 4214, 4222, 4227, 4233, 4240, 4248, 4251, 4262, 4264, 4278, 4284, 4292, 4294, 4300, 4304, 4307, 4310, 4315, 4320, 4324, 4327, 4330, 4333, 4336, 4344, 4355, 4358, 4361, 4366, 4369, 4373, 4377, 4383, 4391, 4394, 4407, 4412, 4414, 4419, 4426, 4433, 4442, 4450, 4458, 4465, 4473, 4480, 4488, 4492, 4496, 4498, 4504, 4509, 4513, 4520, 4525, 4530, 4535, 4537, 4547, 4557, 4573, 4591, 4603, 4610, 4625, 4630, 4633, 4638, 4643, 4648, 4651, 4654, 4659, 4666, 4670, 4675, 4682, 4686, 4692, 4701, 4710, 4722, 4724, 4737, 4743, 4747, 4749, 4756, 4769, 4776, 4778, 4794, 4798, 4802, 4807, 4812, 4817, 4822, 4825, 4837, 4890, 4899, 4903, 4912, 4916, 4925, 4929, 4934, 4937, 4941, 4946, 4948, 4957, 4962, 4973, 4977, 4991, 4999, 5037, 5039, 5058, 5061, 5088, 5092, 5096, 5100, 5104, 5107, 5122, 5129, 5143, 5156, 5181, 5200, 5215, 5231, 5238, 5249, 5252, 5271, 5274, 5287, 5291, 5311, 5323, 5327, 5349, 5353, 5363, 5367, 5373, 5377, 5381, 5385, 5392, 5397, 5408, 5412, 5415, 5420, 5426, 5437, 5441, 5444, 5448, 5452, 5455, 5465, 5468, 5472, 5477, 5483, 5486, 5491, 5494, 5501, 5503, 5509, 5513, 5522, 5527, 5529, 5539, 5542, 5547, 5555, 5558, 5563, 5565, 5567, 5573, 5590, 5596, 5609, 5615, 5619, 5624, 5654, 5669, 5674, 5678, 5691, 5695, 5697, 5706, 5712, 5714, 5718, 5721, 5724, 5727, 5730, 5732, 5735, 5739, 5747, 5752, 5755, 5761, 5765, 5769, 5774, 5776, 5780, 5784, 5791, 5797, 5801, 5803, 5805, 5818, 5826, 5834, 5845, 5854, 5859, 5863, 5867, 5874, 5877, 5879, 5887, 5891, 5894, 5901, 5908, 5913, 5920, 5923, 5925, 5928, 5934, 5939, 5943, 5950, 5960, 5967, 5970, 5973, 5977, 5988, 5991, 5994, 5997, 6000, 6007, 6010, 6013, 6020, 6032, 6039, 6041, 6046, 6051, 6053, 6059, 6066, 6071, 6076, 6080, 6084, 6088, 6090, 6094, 6098, 6101, 6104, 6106, 6116, 6118, 6123, 6127, 6132, 6136, 6143, 6148, 6152, 6155, 6161, 6164, 6183, 6190, 6194, 6197, 6201, 6205, 6208, 6211, 6216, 6225, 6232, 6236, 6240, 6244, 6247, 6249, 6254, 6258, 6263, 6269, 6276, 6281, 6286, 6295, 6302, 6310, 6321, 6326, 6330, 6333, 6337, 6342, 6346, 6351, 6359, 6370, 6375, 6379, 6382, 6385, 6387, 6390, 6393, 6396, 6400, 6404, 6408, 6410, 6419, 6424, 6430, 6434, 6436, 6443, 6448, 6454, 6456, 6460, 6467, 6472, 6475, 6481, 6485, 6491, 6500, 6506, 6508, 6513, 6516, 6525, 6532, 6534, 6541, 6546, 6549, 6559, 6570, 6575, 6579, 6587, 6597, 6604, 6610, 6621, 6627, 6637, 6646, 6650, 6653, 6655, 6657, 6661, 6669, 6672, 6677, 6682, 6689, 6691, 6697, 6701, 6704, 6709, 6712, 6714, 6720, 6729, 6735, 6738, 6746, 6749, 6753, 6759, 6761, 6764, 6768, 6773, 6780, 6787, 6789, 6795, 6797, 6802, 6804, 6808, 6817, 6821, 6829, 6831, 6845, 6848, 6856, 6865, 6871, 6876, 6884, 6886, 6891, 6895, 6900, 6905, 6911, 6927, 6929, 6938, 6953, 6958, 6961, 6967, 6972, 6985, 6990, 6994, 7001, 7020, 7032, 7037, 7045, 7047, 7049, 7058, 7061, 7066, 7071, 7075, 7078, 7087, 7095, 7100, 7102, 7105, 7109, 7120, 7141, 7149, 7162, 7172, 7178, 7184, 7187, 7190, 7216, 7218, 7239, 7249, 7262, 7267, 7271, 7273, 7285, 7292, 7298, 7304, 7308, 7319, 7329, 7333, 7338, 7341, 7344, 7353, 7364, 7366, 7370, 7375, 7384, 7389, 7397, 7407, 7415, 7419, 7422, 7429, 7437, 7441, 7448, 7456, 7465, 7468, 7480, 7489, 7496, 7505, 7515, 7520, 7524, 7526, 7529, 7534, 7539, 7547, 7555, 7558, 7565, 7573, 7581, 7589, 7606, 7613, 7621, 7638, 7644, 7650, 7658, 7664, 7669, 7677, 7682, 7685, 7694, 7701, 7708, 7714, 7720, 7725, 7730, 7738, 7793, 7800, 7806, 7808, 7810, 7812, 7818, 7822, 7826, 7837, 7840, 7844, 7848, 7852, 7855, 7858, 7861, 7870, 7875, 7879, 7912, 7922, 7926, 7932, 7937, 7946, 7954, 7965, 7973, 7982, 7991, 7996, 8000, 8010, 8015, 8023, 8028, 8031, 8038, 8044, 8052, 8060, 8063, 8070, 8072, 8075, 8081, 8090, 8094, 8108, 8111, 8113, 8119, 8129, 8131, 8133, 8141, 8144, 8147, 8157, 8165, 8171, 8177, 8184, 8188, 8192, 8195, 8198, 8204, 8211, 8214, 8222, 8224, 8233, 8238, 8240, 8247, 8253, 8256, 8268, 8275, 8277, 8281, 8287, 8292, 8296, 8299, 8302, 8311, 8314, 8318, 8322, 8324, 8327, 8330, 8336, 8343, 8350, 8356, 8358, 8362, 8367, 8385, 8390, 8392, 8401, 8408, 8412, 8424, 8427, 8440, 8443, 8447, 8456, 8463, 8468, 8473, 8477, 8482, 8485, 8488, 8491, 8494, 8498, 8501] \ No newline at end of file diff --git a/src/lib/postgresql/PostgreSqlParser.ts b/src/lib/postgresql/PostgreSqlParser.ts index fdcc11d8..908f2837 100644 --- a/src/lib/postgresql/PostgreSqlParser.ts +++ b/src/lib/postgresql/PostgreSqlParser.ts @@ -608,880 +608,472 @@ export class PostgreSqlParser extends SQLParserBase { public static readonly EndDollarStringConstant = 589; public static readonly AfterEscapeStringConstantWithNewlineMode_Continued = 590; public static readonly RULE_program = 0; - public static readonly RULE_plsqlroot = 1; - public static readonly RULE_singleStmt = 2; - public static readonly RULE_stmt = 3; - public static readonly RULE_plsqlconsolecommand = 4; - public static readonly RULE_callstmt = 5; - public static readonly RULE_createrolestmt = 6; - public static readonly RULE_opt_with = 7; - public static readonly RULE_optrolelist = 8; - public static readonly RULE_alteroptrolelist = 9; - public static readonly RULE_alteroptroleelem = 10; - public static readonly RULE_createoptroleelem = 11; - public static readonly RULE_createuserstmt = 12; - public static readonly RULE_alterrolestmt = 13; - public static readonly RULE_opt_in_database = 14; - public static readonly RULE_alterrolesetstmt = 15; - public static readonly RULE_alterroutinestmt = 16; - public static readonly RULE_alter_routine_cluase = 17; - public static readonly RULE_routine_action_list = 18; - public static readonly RULE_routine_action = 19; - public static readonly RULE_creategroupstmt = 20; - public static readonly RULE_altergroupstmt = 21; - public static readonly RULE_add_drop = 22; - public static readonly RULE_createschemastmt = 23; - public static readonly RULE_schema_name_create = 24; - public static readonly RULE_optschemaeltlist = 25; - public static readonly RULE_schema_stmt = 26; - public static readonly RULE_variablesetstmt = 27; - public static readonly RULE_set_rest = 28; - public static readonly RULE_generic_set = 29; - public static readonly RULE_set_rest_more = 30; - public static readonly RULE_var_name = 31; - public static readonly RULE_var_list = 32; - public static readonly RULE_var_value = 33; - public static readonly RULE_iso_level = 34; - public static readonly RULE_opt_boolean_or_string_column = 35; - public static readonly RULE_opt_boolean_or_string = 36; - public static readonly RULE_zone_value = 37; - public static readonly RULE_opt_encoding = 38; - public static readonly RULE_nonreservedword_or_sconst_column = 39; - public static readonly RULE_nonreservedword_or_sconst = 40; - public static readonly RULE_variableresetstmt = 41; - public static readonly RULE_reset_rest = 42; - public static readonly RULE_generic_reset = 43; - public static readonly RULE_setresetclause = 44; - public static readonly RULE_functionsetresetclause = 45; - public static readonly RULE_variableshowstmt = 46; - public static readonly RULE_constraintssetstmt = 47; - public static readonly RULE_constraints_set_list = 48; - public static readonly RULE_constraints_set_mode = 49; - public static readonly RULE_checkpointstmt = 50; - public static readonly RULE_discardstmt = 51; - public static readonly RULE_altertablestmt = 52; - public static readonly RULE_alter_table_cmds = 53; - public static readonly RULE_partition_bound_spec = 54; - public static readonly RULE_partition_bound_cluase = 55; - public static readonly RULE_partition_bound_choose = 56; - public static readonly RULE_partition_with_cluase = 57; - public static readonly RULE_partition_cmd = 58; - public static readonly RULE_index_partition_cmd = 59; - public static readonly RULE_alter_table_cmd = 60; - public static readonly RULE_alter_column_default = 61; - public static readonly RULE_opt_drop_behavior = 62; - public static readonly RULE_opt_collate_clause = 63; - public static readonly RULE_alter_using = 64; - public static readonly RULE_replica_identity = 65; - public static readonly RULE_reloptions = 66; - public static readonly RULE_opt_reloptions = 67; - public static readonly RULE_reloption_list = 68; - public static readonly RULE_reloption_elem = 69; - public static readonly RULE_alter_identity_column_option_list = 70; - public static readonly RULE_alter_identity_column_option = 71; - public static readonly RULE_partitionboundspec = 72; - public static readonly RULE_hash_partbound_elem = 73; - public static readonly RULE_hash_partbound = 74; - public static readonly RULE_altercompositetypestmt = 75; - public static readonly RULE_alter_type_cmds = 76; - public static readonly RULE_alter_type_cmd = 77; - public static readonly RULE_closeportalstmt = 78; - public static readonly RULE_copystmt = 79; - public static readonly RULE_copy_from = 80; - public static readonly RULE_opt_program = 81; - public static readonly RULE_copy_file_name = 82; - public static readonly RULE_copy_options = 83; - public static readonly RULE_copy_opt_list = 84; - public static readonly RULE_copy_opt_item = 85; - public static readonly RULE_opt_binary = 86; - public static readonly RULE_copy_delimiter = 87; - public static readonly RULE_opt_using = 88; - public static readonly RULE_copy_generic_opt_list = 89; - public static readonly RULE_copy_generic_opt_elem = 90; - public static readonly RULE_copy_generic_opt_arg = 91; - public static readonly RULE_copy_generic_opt_arg_list = 92; - public static readonly RULE_copy_generic_opt_arg_list_item = 93; - public static readonly RULE_createstmt = 94; - public static readonly RULE_opttemp = 95; - public static readonly RULE_table_column_list = 96; - public static readonly RULE_opttableelementlist = 97; - public static readonly RULE_opttypedtableelementlist = 98; - public static readonly RULE_tableelementlist = 99; - public static readonly RULE_typedtableelementlist = 100; - public static readonly RULE_tableelement = 101; - public static readonly RULE_typedtableelement = 102; - public static readonly RULE_column_def = 103; - public static readonly RULE_compressionCluase = 104; - public static readonly RULE_storageCluase = 105; - public static readonly RULE_columnOptions = 106; - public static readonly RULE_colquallist = 107; - public static readonly RULE_colconstraint = 108; - public static readonly RULE_colconstraintelem = 109; - public static readonly RULE_nulls_distinct = 110; - public static readonly RULE_generated_when = 111; - public static readonly RULE_deferrable_trigger = 112; - public static readonly RULE_initially_trigger = 113; - public static readonly RULE_tablelikeclause = 114; - public static readonly RULE_tablelikeoptionlist = 115; - public static readonly RULE_tablelikeoption = 116; - public static readonly RULE_tableconstraint = 117; - public static readonly RULE_constraintelem = 118; - public static readonly RULE_opt_no_inherit = 119; - public static readonly RULE_opt_column_list = 120; - public static readonly RULE_opt_column_list_create = 121; - public static readonly RULE_column_list = 122; - public static readonly RULE_column_list_create = 123; - public static readonly RULE_opt_c_include = 124; - public static readonly RULE_key_match = 125; - public static readonly RULE_exclusionconstraintlist = 126; - public static readonly RULE_exclusionconstraintelem = 127; - public static readonly RULE_exclusionwhereclause = 128; - public static readonly RULE_key_actions = 129; - public static readonly RULE_key_update = 130; - public static readonly RULE_key_delete = 131; - public static readonly RULE_key_action = 132; - public static readonly RULE_optinherit = 133; - public static readonly RULE_optpartitionspec = 134; - public static readonly RULE_partitionspec = 135; - public static readonly RULE_part_params = 136; - public static readonly RULE_part_elem = 137; - public static readonly RULE_table_access_method_clause = 138; - public static readonly RULE_optwith = 139; - public static readonly RULE_oncommitoption = 140; - public static readonly RULE_opttablespace = 141; - public static readonly RULE_index_paramenters_create = 142; - public static readonly RULE_optconstablespace = 143; - public static readonly RULE_existingindex = 144; - public static readonly RULE_createstatsstmt = 145; - public static readonly RULE_alterstatsstmt = 146; - public static readonly RULE_createasstmt = 147; - public static readonly RULE_create_as_target = 148; - public static readonly RULE_opt_with_data = 149; - public static readonly RULE_creatematviewstmt = 150; - public static readonly RULE_create_mv_target = 151; - public static readonly RULE_optnolog = 152; - public static readonly RULE_refreshmatviewstmt = 153; - public static readonly RULE_createseqstmt = 154; - public static readonly RULE_alterseqstmt = 155; - public static readonly RULE_optseqoptlist = 156; - public static readonly RULE_optparenthesizedseqoptlist = 157; - public static readonly RULE_seqoptlist = 158; - public static readonly RULE_seqoptelem = 159; - public static readonly RULE_opt_by = 160; - public static readonly RULE_numericonly = 161; - public static readonly RULE_numericonly_list = 162; - public static readonly RULE_createplangstmt = 163; - public static readonly RULE_opt_trusted = 164; - public static readonly RULE_handler_name = 165; - public static readonly RULE_opt_inline_handler = 166; - public static readonly RULE_validator_clause = 167; - public static readonly RULE_opt_validator = 168; - public static readonly RULE_opt_procedural = 169; - public static readonly RULE_createtablespacestmt = 170; - public static readonly RULE_opttablespaceowner = 171; - public static readonly RULE_createextensionstmt = 172; - public static readonly RULE_create_extension_opt_list = 173; - public static readonly RULE_create_extension_opt_item = 174; - public static readonly RULE_alterextensionstmt = 175; - public static readonly RULE_alter_extension_opt_list = 176; - public static readonly RULE_alter_extension_opt_item = 177; - public static readonly RULE_alterextensioncontentsstmt = 178; - public static readonly RULE_createfdwstmt = 179; - public static readonly RULE_fdw_option = 180; - public static readonly RULE_fdw_options = 181; - public static readonly RULE_opt_fdw_options = 182; - public static readonly RULE_alterfdwstmt = 183; - public static readonly RULE_create_generic_options = 184; - public static readonly RULE_generic_option_list = 185; - public static readonly RULE_alter_generic_options = 186; - public static readonly RULE_alter_generic_option_list = 187; - public static readonly RULE_alter_generic_option_elem = 188; - public static readonly RULE_generic_option_elem = 189; - public static readonly RULE_generic_option_name = 190; - public static readonly RULE_generic_option_arg = 191; - public static readonly RULE_createforeignserverstmt = 192; - public static readonly RULE_opt_type = 193; - public static readonly RULE_foreign_server_version = 194; - public static readonly RULE_opt_foreign_server_version = 195; - public static readonly RULE_alterforeignserverstmt = 196; - public static readonly RULE_createforeigntablestmt = 197; - public static readonly RULE_importforeignschemastmt = 198; - public static readonly RULE_import_qualification_type = 199; - public static readonly RULE_import_qualification = 200; - public static readonly RULE_createusermappingstmt = 201; - public static readonly RULE_auth_ident = 202; - public static readonly RULE_alterusermappingstmt = 203; - public static readonly RULE_createpolicystmt = 204; - public static readonly RULE_alterpolicystmt = 205; - public static readonly RULE_alterprocedurestmt = 206; - public static readonly RULE_procedure_cluase = 207; - public static readonly RULE_procedure_action = 208; - public static readonly RULE_rowsecurityoptionalexpr = 209; - public static readonly RULE_rowsecurityoptionalwithcheck = 210; - public static readonly RULE_rowsecuritydefaulttorole = 211; - public static readonly RULE_rowsecurityoptionaltorole = 212; - public static readonly RULE_rowsecuritydefaultpermissive = 213; - public static readonly RULE_rowsecuritydefaultforcmd = 214; - public static readonly RULE_row_security_cmd = 215; - public static readonly RULE_createamstmt = 216; - public static readonly RULE_am_type = 217; - public static readonly RULE_createtrigstmt = 218; - public static readonly RULE_triggeractiontime = 219; - public static readonly RULE_foreachrow = 220; - public static readonly RULE_roworstatment = 221; - public static readonly RULE_triggerevents = 222; - public static readonly RULE_triggeroneevent = 223; - public static readonly RULE_triggerreferencing = 224; - public static readonly RULE_triggertransitions = 225; - public static readonly RULE_triggertransition = 226; - public static readonly RULE_transitionoldornew = 227; - public static readonly RULE_transitionrowortable = 228; - public static readonly RULE_transitionrelname = 229; - public static readonly RULE_triggerforspec = 230; - public static readonly RULE_triggerforopteach = 231; - public static readonly RULE_triggerfortype = 232; - public static readonly RULE_triggerwhen = 233; - public static readonly RULE_function_or_procedure = 234; - public static readonly RULE_triggerfuncargs = 235; - public static readonly RULE_triggerfuncarg = 236; - public static readonly RULE_optconstrfromtable = 237; - public static readonly RULE_constraintattributespec = 238; - public static readonly RULE_constraintattributeElem = 239; - public static readonly RULE_createeventtrigstmt = 240; - public static readonly RULE_event_trigger_when_list = 241; - public static readonly RULE_event_trigger_when_item = 242; - public static readonly RULE_event_trigger_value_list = 243; - public static readonly RULE_altereventtrigstmt = 244; - public static readonly RULE_enable_trigger = 245; - public static readonly RULE_createassertionstmt = 246; - public static readonly RULE_definestmt = 247; - public static readonly RULE_definition = 248; - public static readonly RULE_def_list = 249; - public static readonly RULE_def_elem = 250; - public static readonly RULE_def_arg = 251; - public static readonly RULE_old_aggr_definition = 252; - public static readonly RULE_old_aggr_list = 253; - public static readonly RULE_old_aggr_elem = 254; - public static readonly RULE_opt_enum_val_list = 255; - public static readonly RULE_enum_val_list = 256; - public static readonly RULE_alterenumstmt = 257; - public static readonly RULE_opt_if_not_exists = 258; - public static readonly RULE_createopclassstmt = 259; - public static readonly RULE_opclass_item_list = 260; - public static readonly RULE_opclass_item = 261; - public static readonly RULE_opt_default = 262; - public static readonly RULE_opt_opfamily = 263; - public static readonly RULE_opclass_purpose = 264; - public static readonly RULE_opt_recheck = 265; - public static readonly RULE_createopfamilystmt = 266; - public static readonly RULE_alteropfamilystmt = 267; - public static readonly RULE_opclass_drop_list = 268; - public static readonly RULE_opclass_drop = 269; - public static readonly RULE_reassignownedstmt = 270; - public static readonly RULE_dropstmt = 271; - public static readonly RULE_view_nameList = 272; - public static readonly RULE_object_type_any_name = 273; - public static readonly RULE_object_type_name = 274; - public static readonly RULE_object_type_name_on_any_name = 275; - public static readonly RULE_any_name_list = 276; - public static readonly RULE_relation_column_name = 277; - public static readonly RULE_relation_name = 278; - public static readonly RULE_any_name = 279; - public static readonly RULE_attrs = 280; - public static readonly RULE_type_name_list = 281; - public static readonly RULE_truncatestmt = 282; - public static readonly RULE_truncate_table = 283; - public static readonly RULE_commentstmt = 284; - public static readonly RULE_comment_text = 285; - public static readonly RULE_seclabelstmt = 286; - public static readonly RULE_opt_provider = 287; - public static readonly RULE_security_label = 288; - public static readonly RULE_fetchstmt = 289; - public static readonly RULE_fetch_args = 290; - public static readonly RULE_from_in = 291; - public static readonly RULE_opt_from_in = 292; - public static readonly RULE_grantstmt = 293; - public static readonly RULE_revokestmt = 294; - public static readonly RULE_privileges = 295; - public static readonly RULE_beforeprivilegeselectlist = 296; - public static readonly RULE_beforeprivilegeselect = 297; - public static readonly RULE_privilege_list = 298; - public static readonly RULE_privilege = 299; - public static readonly RULE_privilege_target = 300; - public static readonly RULE_grantee_list = 301; - public static readonly RULE_grantee = 302; - public static readonly RULE_opt_grant_grant_option = 303; - public static readonly RULE_grantrolestmt = 304; - public static readonly RULE_revokerolestmt = 305; - public static readonly RULE_opt_grant_admin_option = 306; - public static readonly RULE_opt_granted_by = 307; - public static readonly RULE_alterdefaultprivilegesstmt = 308; - public static readonly RULE_defacloptionlist = 309; - public static readonly RULE_defacloption = 310; - public static readonly RULE_defaclaction = 311; - public static readonly RULE_defacl_privilege_target = 312; - public static readonly RULE_indexstmt = 313; - public static readonly RULE_opt_unique = 314; - public static readonly RULE_opt_concurrently = 315; - public static readonly RULE_opt_index_name = 316; - public static readonly RULE_access_method_clause = 317; - public static readonly RULE_index_params = 318; - public static readonly RULE_index_elem_options = 319; - public static readonly RULE_index_elem = 320; - public static readonly RULE_opt_include = 321; - public static readonly RULE_index_including_params = 322; - public static readonly RULE_opt_collate = 323; - public static readonly RULE_opt_class = 324; - public static readonly RULE_opt_asc_desc = 325; - public static readonly RULE_opt_nulls_order = 326; - public static readonly RULE_createfunctionstmt = 327; - public static readonly RULE_attrilist = 328; - public static readonly RULE_opt_or_replace = 329; - public static readonly RULE_func_args = 330; - public static readonly RULE_func_args_list = 331; - public static readonly RULE_routine_with_argtypes_list = 332; - public static readonly RULE_routine_with_argtypes = 333; - public static readonly RULE_procedure_with_argtypes_list = 334; - public static readonly RULE_procedure_with_argtypes = 335; - public static readonly RULE_function_with_argtypes_list = 336; - public static readonly RULE_function_with_argtypes = 337; - public static readonly RULE_func_args_with_defaults = 338; - public static readonly RULE_func_args_with_defaults_list = 339; - public static readonly RULE_func_arg = 340; - public static readonly RULE_arg_class = 341; - public static readonly RULE_param_name = 342; - public static readonly RULE_func_return = 343; - public static readonly RULE_func_type = 344; - public static readonly RULE_func_arg_with_default = 345; - public static readonly RULE_aggr_arg = 346; - public static readonly RULE_aggr_args = 347; - public static readonly RULE_aggr_args_list = 348; - public static readonly RULE_aggregate_with_argtypes = 349; - public static readonly RULE_aggregate_with_argtypes_list = 350; - public static readonly RULE_createfunc_opt_list = 351; - public static readonly RULE_common_func_opt_item = 352; - public static readonly RULE_createfunc_opt_item = 353; - public static readonly RULE_transform_type_list = 354; - public static readonly RULE_opt_definition = 355; - public static readonly RULE_table_func_column = 356; - public static readonly RULE_table_func_column_list = 357; - public static readonly RULE_alterfunctionstmt = 358; - public static readonly RULE_alterFunctionTypeClause = 359; - public static readonly RULE_alterfunc_opt_list = 360; - public static readonly RULE_opt_restrict = 361; - public static readonly RULE_removefuncstmt = 362; - public static readonly RULE_removeaggrstmt = 363; - public static readonly RULE_removeoperstmt = 364; - public static readonly RULE_oper_argtypes = 365; - public static readonly RULE_any_operator = 366; - public static readonly RULE_operator_with_argtypes_list = 367; - public static readonly RULE_operator_with_argtypes = 368; - public static readonly RULE_dostmt = 369; - public static readonly RULE_dostmt_opt_list = 370; - public static readonly RULE_dostmt_opt_item = 371; - public static readonly RULE_createcaststmt = 372; - public static readonly RULE_cast_context = 373; - public static readonly RULE_opt_if_exists = 374; - public static readonly RULE_createtransformstmt = 375; - public static readonly RULE_transform_element_list = 376; - public static readonly RULE_reindexstmt = 377; - public static readonly RULE_reindex_target_type = 378; - public static readonly RULE_reindex_target_multitable = 379; - public static readonly RULE_reindex_option_list = 380; - public static readonly RULE_reindex_option_elem = 381; - public static readonly RULE_altertblspcstmt = 382; - public static readonly RULE_renamestmt = 383; - public static readonly RULE_opt_set_data = 384; - public static readonly RULE_alterobjectdependsstmt = 385; - public static readonly RULE_opt_no = 386; - public static readonly RULE_alterobjectschemastmt = 387; - public static readonly RULE_alteroperatorstmt = 388; - public static readonly RULE_operator_def_list = 389; - public static readonly RULE_operator_def_elem = 390; - public static readonly RULE_operator_def_arg = 391; - public static readonly RULE_altertypestmt = 392; - public static readonly RULE_alterownerstmt = 393; - public static readonly RULE_createpublicationstmt = 394; - public static readonly RULE_opt_publication_for_tables = 395; - public static readonly RULE_publication_for_tables = 396; - public static readonly RULE_alterpublicationstmt = 397; - public static readonly RULE_createsubscriptionstmt = 398; - public static readonly RULE_publication_name_list = 399; - public static readonly RULE_publication_name_item = 400; - public static readonly RULE_altersubscriptionstmt = 401; - public static readonly RULE_rulestmt = 402; - public static readonly RULE_ruleactionlist = 403; - public static readonly RULE_ruleactionmulti = 404; - public static readonly RULE_ruleactionstmt = 405; - public static readonly RULE_ruleactionstmtOrEmpty = 406; - public static readonly RULE_event = 407; - public static readonly RULE_opt_instead = 408; - public static readonly RULE_notifystmt = 409; - public static readonly RULE_notify_payload = 410; - public static readonly RULE_listenstmt = 411; - public static readonly RULE_unlistenstmt = 412; - public static readonly RULE_transactionstmt = 413; - public static readonly RULE_opt_transaction = 414; - public static readonly RULE_transaction_mode_item = 415; - public static readonly RULE_transaction_mode_list = 416; - public static readonly RULE_transaction_mode_list_or_empty = 417; - public static readonly RULE_opt_transaction_chain = 418; - public static readonly RULE_viewstmt = 419; - public static readonly RULE_opt_check_option = 420; - public static readonly RULE_loadstmt = 421; - public static readonly RULE_createdbstmt = 422; - public static readonly RULE_createdb_opt_list = 423; - public static readonly RULE_createdb_opt_items = 424; - public static readonly RULE_createdb_opt_item = 425; - public static readonly RULE_createdb_opt_name = 426; - public static readonly RULE_opt_equal = 427; - public static readonly RULE_alterdatabasestmt = 428; - public static readonly RULE_alterdatabasesetstmt = 429; - public static readonly RULE_drop_option_list = 430; - public static readonly RULE_drop_option = 431; - public static readonly RULE_altercollationstmt = 432; - public static readonly RULE_altersystemstmt = 433; - public static readonly RULE_createdomainstmt = 434; - public static readonly RULE_alterdomainstmt = 435; - public static readonly RULE_opt_as = 436; - public static readonly RULE_altertsdictionarystmt = 437; - public static readonly RULE_altertsconfigurationstmt = 438; - public static readonly RULE_any_with = 439; - public static readonly RULE_createconversionstmt = 440; - public static readonly RULE_clusterstmt = 441; - public static readonly RULE_opt_verbose_list = 442; - public static readonly RULE_cluster_index_specification = 443; - public static readonly RULE_vacuumstmt = 444; - public static readonly RULE_analyzestmt = 445; - public static readonly RULE_vac_analyze_option_list = 446; - public static readonly RULE_analyze_keyword = 447; - public static readonly RULE_vac_analyze_option_elem = 448; - public static readonly RULE_vac_analyze_option_name = 449; - public static readonly RULE_vac_analyze_option_arg = 450; - public static readonly RULE_opt_analyze = 451; - public static readonly RULE_analyze_options_list = 452; - public static readonly RULE_analyze_option_elem = 453; - public static readonly RULE_opt_verbose = 454; - public static readonly RULE_opt_skiplock = 455; - public static readonly RULE_opt_buffer_usage_limit = 456; - public static readonly RULE_opt_full = 457; - public static readonly RULE_opt_freeze = 458; - public static readonly RULE_opt_name_list = 459; - public static readonly RULE_vacuum_relation = 460; - public static readonly RULE_vacuum_relation_list = 461; - public static readonly RULE_opt_vacuum_relation_list = 462; - public static readonly RULE_explainstmt = 463; - public static readonly RULE_explainablestmt = 464; - public static readonly RULE_explain_option_list = 465; - public static readonly RULE_explain_option_elem = 466; - public static readonly RULE_explain_option_name = 467; - public static readonly RULE_explain_option_arg = 468; - public static readonly RULE_preparestmt = 469; - public static readonly RULE_prep_type_clause = 470; - public static readonly RULE_preparablestmt = 471; - public static readonly RULE_executestmt = 472; - public static readonly RULE_execute_param_clause = 473; - public static readonly RULE_deallocatestmt = 474; - public static readonly RULE_insertstmt = 475; - public static readonly RULE_insert_target = 476; - public static readonly RULE_insert_rest = 477; - public static readonly RULE_override_kind = 478; - public static readonly RULE_insert_column_list = 479; - public static readonly RULE_insert_column_item = 480; - public static readonly RULE_opt_on_conflict = 481; - public static readonly RULE_opt_conf_expr = 482; - public static readonly RULE_returning_clause = 483; - public static readonly RULE_deletestmt = 484; - public static readonly RULE_using_clause = 485; - public static readonly RULE_lockstmt = 486; - public static readonly RULE_opt_lock = 487; - public static readonly RULE_lock_type = 488; - public static readonly RULE_opt_nowait = 489; - public static readonly RULE_opt_nowait_or_skip = 490; - public static readonly RULE_updatestmt = 491; - public static readonly RULE_set_clause_list = 492; - public static readonly RULE_set_clause = 493; - public static readonly RULE_set_target = 494; - public static readonly RULE_set_target_list = 495; - public static readonly RULE_declarecursorstmt = 496; - public static readonly RULE_cursor_name = 497; - public static readonly RULE_cursor_options = 498; - public static readonly RULE_opt_hold = 499; - public static readonly RULE_selectstmt = 500; - public static readonly RULE_select_with_parens = 501; - public static readonly RULE_select_no_parens = 502; - public static readonly RULE_select_clause = 503; - public static readonly RULE_simple_select = 504; - public static readonly RULE_set_operator = 505; - public static readonly RULE_set_operator_with_all_or_distinct = 506; - public static readonly RULE_with_clause = 507; - public static readonly RULE_cte_list = 508; - public static readonly RULE_common_table_expr = 509; - public static readonly RULE_search_cluase = 510; - public static readonly RULE_cycle_cluase = 511; - public static readonly RULE_opt_materialized = 512; - public static readonly RULE_opt_with_clause = 513; - public static readonly RULE_into_clause = 514; - public static readonly RULE_opt_strict = 515; - public static readonly RULE_opttempTableName = 516; - public static readonly RULE_opt_table = 517; - public static readonly RULE_all_or_distinct = 518; - public static readonly RULE_distinct_clause = 519; - public static readonly RULE_opt_all_clause = 520; - public static readonly RULE_opt_sort_clause = 521; - public static readonly RULE_sort_clause = 522; - public static readonly RULE_sortby_list = 523; - public static readonly RULE_sortby = 524; - public static readonly RULE_select_limit = 525; - public static readonly RULE_opt_select_limit = 526; - public static readonly RULE_limit_clause = 527; - public static readonly RULE_fetch_clause = 528; - public static readonly RULE_offset_clause = 529; - public static readonly RULE_select_limit_value = 530; - public static readonly RULE_select_offset_value = 531; - public static readonly RULE_select_fetch_first_value = 532; - public static readonly RULE_i_or_f_const = 533; - public static readonly RULE_row_or_rows = 534; - public static readonly RULE_first_or_next = 535; - public static readonly RULE_group_clause = 536; - public static readonly RULE_group_by_list = 537; - public static readonly RULE_group_by_item = 538; - public static readonly RULE_empty_grouping_set = 539; - public static readonly RULE_rollup_clause = 540; - public static readonly RULE_cube_clause = 541; - public static readonly RULE_grouping_sets_clause = 542; - public static readonly RULE_having_clause = 543; - public static readonly RULE_for_locking_clause = 544; - public static readonly RULE_opt_for_locking_clause = 545; - public static readonly RULE_for_locking_items = 546; - public static readonly RULE_for_locking_item = 547; - public static readonly RULE_for_locking_strength = 548; - public static readonly RULE_locked_rels_list = 549; - public static readonly RULE_values_clause = 550; - public static readonly RULE_from_clause = 551; - public static readonly RULE_from_list = 552; - public static readonly RULE_table_ref = 553; - public static readonly RULE_alias_clause = 554; - public static readonly RULE_opt_alias_clause = 555; - public static readonly RULE_func_alias_clause = 556; - public static readonly RULE_join_type = 557; - public static readonly RULE_join_qual = 558; - public static readonly RULE_relation_expr = 559; - public static readonly RULE_view_relation_expr = 560; - public static readonly RULE_publication_relation_expr = 561; - public static readonly RULE_relation_expr_list = 562; - public static readonly RULE_publication_relation_expr_list = 563; - public static readonly RULE_relation_expr_opt_alias = 564; - public static readonly RULE_tablesample_clause = 565; - public static readonly RULE_opt_repeatable_clause = 566; - public static readonly RULE_func_table = 567; - public static readonly RULE_rowsfrom_item = 568; - public static readonly RULE_rowsfrom_list = 569; - public static readonly RULE_opt_col_def_list = 570; - public static readonly RULE_opt_ordinality = 571; - public static readonly RULE_where_clause = 572; - public static readonly RULE_where_or_current_clause = 573; - public static readonly RULE_opttablefuncelementlist = 574; - public static readonly RULE_tablefuncelementlist = 575; - public static readonly RULE_tablefuncelement = 576; - public static readonly RULE_xmltable = 577; - public static readonly RULE_xmltable_column_list = 578; - public static readonly RULE_xmltable_column_el = 579; - public static readonly RULE_xmltable_column_option_list = 580; - public static readonly RULE_xmltable_column_option_el = 581; - public static readonly RULE_xml_namespace_list = 582; - public static readonly RULE_xml_namespace_el = 583; - public static readonly RULE_typename = 584; - public static readonly RULE_opt_array_bounds = 585; - public static readonly RULE_simpletypename = 586; - public static readonly RULE_consttypename = 587; - public static readonly RULE_generictype = 588; - public static readonly RULE_opt_type_modifiers = 589; - public static readonly RULE_numeric = 590; - public static readonly RULE_opt_float = 591; - public static readonly RULE_bit = 592; - public static readonly RULE_constbit = 593; - public static readonly RULE_bitwithlength = 594; - public static readonly RULE_bitwithoutlength = 595; - public static readonly RULE_character = 596; - public static readonly RULE_constcharacter = 597; - public static readonly RULE_character_c = 598; - public static readonly RULE_opt_varying = 599; - public static readonly RULE_constdatetime = 600; - public static readonly RULE_constinterval = 601; - public static readonly RULE_opt_timezone = 602; - public static readonly RULE_opt_interval = 603; - public static readonly RULE_interval_second = 604; - public static readonly RULE_opt_escape = 605; - public static readonly RULE_a_expr = 606; - public static readonly RULE_a_expr_qual = 607; - public static readonly RULE_a_expr_lessless = 608; - public static readonly RULE_a_expr_or = 609; - public static readonly RULE_a_expr_and = 610; - public static readonly RULE_a_expr_in = 611; - public static readonly RULE_a_expr_unary_not = 612; - public static readonly RULE_a_expr_isnull = 613; - public static readonly RULE_a_expr_is_not = 614; - public static readonly RULE_a_expr_compare = 615; - public static readonly RULE_a_expr_like = 616; - public static readonly RULE_a_expr_qual_op = 617; - public static readonly RULE_a_expr_unary_qualop = 618; - public static readonly RULE_a_expr_add = 619; - public static readonly RULE_a_expr_mul = 620; - public static readonly RULE_a_expr_caret = 621; - public static readonly RULE_a_expr_unary_sign = 622; - public static readonly RULE_a_expr_at_time_zone = 623; - public static readonly RULE_a_expr_collate = 624; - public static readonly RULE_a_expr_typecast = 625; - public static readonly RULE_b_expr = 626; - public static readonly RULE_c_expr = 627; - public static readonly RULE_plsqlvariablename = 628; - public static readonly RULE_func_application = 629; - public static readonly RULE_func_expr = 630; - public static readonly RULE_func_expr_windowless = 631; - public static readonly RULE_func_expr_common_subexpr = 632; - public static readonly RULE_xml_root_version = 633; - public static readonly RULE_opt_xml_root_standalone = 634; - public static readonly RULE_xml_attributes = 635; - public static readonly RULE_xml_attribute_list = 636; - public static readonly RULE_xml_attribute_el = 637; - public static readonly RULE_document_or_content = 638; - public static readonly RULE_xml_whitespace_option = 639; - public static readonly RULE_xmlexists_argument = 640; - public static readonly RULE_xml_passing_mech = 641; - public static readonly RULE_within_group_clause = 642; - public static readonly RULE_filter_clause = 643; - public static readonly RULE_window_clause = 644; - public static readonly RULE_window_definition_list = 645; - public static readonly RULE_window_definition = 646; - public static readonly RULE_over_clause = 647; - public static readonly RULE_window_specification = 648; - public static readonly RULE_opt_existing_window_name = 649; - public static readonly RULE_opt_partition_clause = 650; - public static readonly RULE_opt_frame_clause = 651; - public static readonly RULE_frame_extent = 652; - public static readonly RULE_frame_bound = 653; - public static readonly RULE_opt_window_exclusion_clause = 654; - public static readonly RULE_row = 655; - public static readonly RULE_explicit_row = 656; - public static readonly RULE_implicit_row = 657; - public static readonly RULE_sub_type = 658; - public static readonly RULE_all_op = 659; - public static readonly RULE_mathop = 660; - public static readonly RULE_qual_op = 661; - public static readonly RULE_qual_all_op = 662; - public static readonly RULE_subquery_Op = 663; - public static readonly RULE_expr_list = 664; - public static readonly RULE_column_expr_list_noparen = 665; - public static readonly RULE_column_expr_list = 666; - public static readonly RULE_column_expr = 667; - public static readonly RULE_column_expr_noparen = 668; - public static readonly RULE_func_arg_list = 669; - public static readonly RULE_func_arg_expr = 670; - public static readonly RULE_type_list = 671; - public static readonly RULE_array_expr = 672; - public static readonly RULE_array_expr_list = 673; - public static readonly RULE_extract_list = 674; - public static readonly RULE_extract_arg = 675; - public static readonly RULE_unicode_normal_form = 676; - public static readonly RULE_overlay_list = 677; - public static readonly RULE_position_list = 678; - public static readonly RULE_substr_list = 679; - public static readonly RULE_trim_list = 680; - public static readonly RULE_in_expr = 681; - public static readonly RULE_case_expr = 682; - public static readonly RULE_when_clause_list = 683; - public static readonly RULE_when_clause = 684; - public static readonly RULE_case_default = 685; - public static readonly RULE_case_arg = 686; - public static readonly RULE_columnref = 687; - public static readonly RULE_indirection_el = 688; - public static readonly RULE_opt_slice_bound = 689; - public static readonly RULE_indirection = 690; - public static readonly RULE_opt_indirection = 691; - public static readonly RULE_opt_target_list = 692; - public static readonly RULE_target_list = 693; - public static readonly RULE_target_el = 694; - public static readonly RULE_qualified_name_list = 695; - public static readonly RULE_table_name_list = 696; - public static readonly RULE_schema_name_list = 697; - public static readonly RULE_database_nameList = 698; - public static readonly RULE_procedure_name_list = 699; - public static readonly RULE_tablespace_name_create = 700; - public static readonly RULE_tablespace_name = 701; - public static readonly RULE_table_name_create = 702; - public static readonly RULE_table_name = 703; - public static readonly RULE_view_name_create = 704; - public static readonly RULE_view_name = 705; - public static readonly RULE_qualified_name = 706; - public static readonly RULE_tablespace_name_list = 707; - public static readonly RULE_name_list = 708; - public static readonly RULE_database_name_create = 709; - public static readonly RULE_database_name = 710; - public static readonly RULE_schema_name = 711; - public static readonly RULE_routine_name_create = 712; - public static readonly RULE_routine_name = 713; - public static readonly RULE_procedure_name = 714; - public static readonly RULE_procedure_name_create = 715; - public static readonly RULE_column_name = 716; - public static readonly RULE_column_name_create = 717; - public static readonly RULE_name = 718; - public static readonly RULE_attr_name = 719; - public static readonly RULE_file_name = 720; - public static readonly RULE_function_name_create = 721; - public static readonly RULE_function_name = 722; - public static readonly RULE_usual_name = 723; - public static readonly RULE_aexprconst = 724; - public static readonly RULE_xconst = 725; - public static readonly RULE_bconst = 726; - public static readonly RULE_fconst = 727; - public static readonly RULE_iconst = 728; - public static readonly RULE_sconst = 729; - public static readonly RULE_anysconst = 730; - public static readonly RULE_opt_uescape = 731; - public static readonly RULE_signediconst = 732; - public static readonly RULE_groupname = 733; - public static readonly RULE_roleid = 734; - public static readonly RULE_rolespec = 735; - public static readonly RULE_role_list = 736; - public static readonly RULE_colid = 737; - public static readonly RULE_index_method_choices = 738; - public static readonly RULE_exclude_element = 739; - public static readonly RULE_index_paramenters = 740; - public static readonly RULE_type_function_name = 741; - public static readonly RULE_type_usual_name = 742; - public static readonly RULE_nonreservedword_column = 743; - public static readonly RULE_nonreservedword = 744; - public static readonly RULE_collabel = 745; - public static readonly RULE_identifier = 746; - public static readonly RULE_plsqlidentifier = 747; - public static readonly RULE_unreserved_keyword = 748; - public static readonly RULE_col_name_keyword = 749; - public static readonly RULE_type_func_name_keyword = 750; - public static readonly RULE_reserved_keyword = 751; - public static readonly RULE_pl_function = 752; - public static readonly RULE_comp_options = 753; - public static readonly RULE_comp_option = 754; - public static readonly RULE_sharp = 755; - public static readonly RULE_option_value = 756; - public static readonly RULE_opt_semi = 757; - public static readonly RULE_pl_block = 758; - public static readonly RULE_decl_sect = 759; - public static readonly RULE_decl_start = 760; - public static readonly RULE_decl_stmts = 761; - public static readonly RULE_label_decl = 762; - public static readonly RULE_decl_stmt = 763; - public static readonly RULE_decl_statement = 764; - public static readonly RULE_opt_scrollable = 765; - public static readonly RULE_decl_cursor_query = 766; - public static readonly RULE_decl_cursor_args = 767; - public static readonly RULE_decl_cursor_arglist = 768; - public static readonly RULE_decl_cursor_arg = 769; - public static readonly RULE_decl_is_for = 770; - public static readonly RULE_decl_aliasitem = 771; - public static readonly RULE_decl_varname = 772; - public static readonly RULE_decl_const = 773; - public static readonly RULE_decl_datatype = 774; - public static readonly RULE_decl_collate = 775; - public static readonly RULE_decl_notnull = 776; - public static readonly RULE_decl_defval = 777; - public static readonly RULE_decl_defkey = 778; - public static readonly RULE_assign_operator = 779; - public static readonly RULE_proc_sect = 780; - public static readonly RULE_proc_stmt = 781; - public static readonly RULE_stmt_perform = 782; - public static readonly RULE_stmt_call = 783; - public static readonly RULE_opt_expr_list = 784; - public static readonly RULE_stmt_assign = 785; - public static readonly RULE_stmt_getdiag = 786; - public static readonly RULE_getdiag_area_opt = 787; - public static readonly RULE_getdiag_list = 788; - public static readonly RULE_getdiag_list_item = 789; - public static readonly RULE_getdiag_item = 790; - public static readonly RULE_getdiag_target = 791; - public static readonly RULE_assign_var = 792; - public static readonly RULE_stmt_if = 793; - public static readonly RULE_stmt_elsifs = 794; - public static readonly RULE_stmt_else = 795; - public static readonly RULE_stmt_case = 796; - public static readonly RULE_opt_expr_until_when = 797; - public static readonly RULE_case_when_list = 798; - public static readonly RULE_case_when = 799; - public static readonly RULE_opt_case_else = 800; - public static readonly RULE_stmt_loop = 801; - public static readonly RULE_stmt_while = 802; - public static readonly RULE_stmt_for = 803; - public static readonly RULE_for_control = 804; - public static readonly RULE_opt_for_using_expression = 805; - public static readonly RULE_opt_cursor_parameters = 806; - public static readonly RULE_opt_reverse = 807; - public static readonly RULE_opt_by_expression = 808; - public static readonly RULE_for_variable = 809; - public static readonly RULE_stmt_foreach_a = 810; - public static readonly RULE_foreach_slice = 811; - public static readonly RULE_stmt_exit = 812; - public static readonly RULE_exit_type = 813; - public static readonly RULE_stmt_return = 814; - public static readonly RULE_opt_return_result = 815; - public static readonly RULE_stmt_raise = 816; - public static readonly RULE_opt_stmt_raise_level = 817; - public static readonly RULE_opt_raise_list = 818; - public static readonly RULE_opt_raise_using = 819; - public static readonly RULE_opt_raise_using_elem = 820; - public static readonly RULE_opt_raise_using_elem_list = 821; - public static readonly RULE_stmt_assert = 822; - public static readonly RULE_opt_stmt_assert_message = 823; - public static readonly RULE_loop_body = 824; - public static readonly RULE_stmt_execsql = 825; - public static readonly RULE_stmt_dynexecute = 826; - public static readonly RULE_opt_execute_using = 827; - public static readonly RULE_opt_execute_using_list = 828; - public static readonly RULE_opt_execute_into = 829; - public static readonly RULE_stmt_open = 830; - public static readonly RULE_opt_open_bound_list_item = 831; - public static readonly RULE_opt_open_bound_list = 832; - public static readonly RULE_opt_open_using = 833; - public static readonly RULE_opt_scroll_option = 834; - public static readonly RULE_opt_scroll_option_no = 835; - public static readonly RULE_stmt_fetch = 836; - public static readonly RULE_into_target = 837; - public static readonly RULE_opt_cursor_from = 838; - public static readonly RULE_opt_fetch_direction = 839; - public static readonly RULE_stmt_move = 840; - public static readonly RULE_mergestmt = 841; - public static readonly RULE_data_source = 842; - public static readonly RULE_join_condition = 843; - public static readonly RULE_merge_when_clause = 844; - public static readonly RULE_merge_insert = 845; - public static readonly RULE_merge_update = 846; - public static readonly RULE_default_values_or_values = 847; - public static readonly RULE_exprofdefaultlist = 848; - public static readonly RULE_exprofdefault = 849; - public static readonly RULE_stmt_close = 850; - public static readonly RULE_stmt_null = 851; - public static readonly RULE_stmt_commit = 852; - public static readonly RULE_stmt_rollback = 853; - public static readonly RULE_plsql_opt_transaction_chain = 854; - public static readonly RULE_stmt_set = 855; - public static readonly RULE_cursor_variable = 856; - public static readonly RULE_exception_sect = 857; - public static readonly RULE_proc_exceptions = 858; - public static readonly RULE_proc_exception = 859; - public static readonly RULE_proc_conditions = 860; - public static readonly RULE_proc_condition = 861; - public static readonly RULE_opt_block_label = 862; - public static readonly RULE_opt_loop_label = 863; - public static readonly RULE_opt_label = 864; - public static readonly RULE_opt_exitcond = 865; - public static readonly RULE_any_identifier = 866; - public static readonly RULE_plsql_unreserved_keyword = 867; - public static readonly RULE_sql_expression = 868; - public static readonly RULE_expr_until_then = 869; - public static readonly RULE_expr_until_semi = 870; - public static readonly RULE_expr_until_rightbracket = 871; - public static readonly RULE_expr_until_loop = 872; - public static readonly RULE_make_execsql_stmt = 873; - public static readonly RULE_opt_returning_clause_into = 874; + public static readonly RULE_singleStmt = 1; + public static readonly RULE_stmt = 2; + public static readonly RULE_callstmt = 3; + public static readonly RULE_createrolestmt = 4; + public static readonly RULE_alteroptroleelem = 5; + public static readonly RULE_createoptroleelem = 6; + public static readonly RULE_createuserstmt = 7; + public static readonly RULE_alterrolestmt = 8; + public static readonly RULE_alterrolesetstmt = 9; + public static readonly RULE_alterroutinestmt = 10; + public static readonly RULE_alter_routine_cluase = 11; + public static readonly RULE_routine_action = 12; + public static readonly RULE_creategroupstmt = 13; + public static readonly RULE_altergroupstmt = 14; + public static readonly RULE_createschemastmt = 15; + public static readonly RULE_schema_name_create = 16; + public static readonly RULE_schema_stmt = 17; + public static readonly RULE_variablesetstmt = 18; + public static readonly RULE_set_rest = 19; + public static readonly RULE_generic_set = 20; + public static readonly RULE_set_rest_more = 21; + public static readonly RULE_var_name = 22; + public static readonly RULE_var_list = 23; + public static readonly RULE_var_value = 24; + public static readonly RULE_iso_level = 25; + public static readonly RULE_opt_boolean_or_string_column = 26; + public static readonly RULE_opt_boolean_or_string = 27; + public static readonly RULE_zone_value = 28; + public static readonly RULE_nonreservedword_or_sconst = 29; + public static readonly RULE_variableresetstmt = 30; + public static readonly RULE_reset_rest = 31; + public static readonly RULE_setresetclause = 32; + public static readonly RULE_functionsetresetclause = 33; + public static readonly RULE_variableshowstmt = 34; + public static readonly RULE_constraintssetstmt = 35; + public static readonly RULE_checkpointstmt = 36; + public static readonly RULE_discardstmt = 37; + public static readonly RULE_altertablestmt = 38; + public static readonly RULE_alter_table_cmds = 39; + public static readonly RULE_partition_bound_spec = 40; + public static readonly RULE_partition_bound_cluase = 41; + public static readonly RULE_partition_bound_choose = 42; + public static readonly RULE_partition_with_cluase = 43; + public static readonly RULE_partition_cmd = 44; + public static readonly RULE_index_partition_cmd = 45; + public static readonly RULE_alter_table_cmd = 46; + public static readonly RULE_alter_column_default = 47; + public static readonly RULE_opt_drop_behavior = 48; + public static readonly RULE_opt_collate_clause = 49; + public static readonly RULE_reloptions = 50; + public static readonly RULE_opt_reloptions = 51; + public static readonly RULE_reloption_elem = 52; + public static readonly RULE_partitionboundspec = 53; + public static readonly RULE_altercompositetypestmt = 54; + public static readonly RULE_alter_type_cmd = 55; + public static readonly RULE_closeportalstmt = 56; + public static readonly RULE_copystmt = 57; + public static readonly RULE_copy_options = 58; + public static readonly RULE_copy_generic_opt_elem = 59; + public static readonly RULE_createstmt = 60; + public static readonly RULE_opttemp = 61; + public static readonly RULE_opttypedtableelementlist = 62; + public static readonly RULE_tableelementlist = 63; + public static readonly RULE_tableelement = 64; + public static readonly RULE_typedtableelement = 65; + public static readonly RULE_column_def = 66; + public static readonly RULE_colconstraint = 67; + public static readonly RULE_colconstraintelem = 68; + public static readonly RULE_generated_when = 69; + public static readonly RULE_tablelikeoption = 70; + public static readonly RULE_constraintelem = 71; + public static readonly RULE_opt_column_list = 72; + public static readonly RULE_opt_column_list_create = 73; + public static readonly RULE_column_list = 74; + public static readonly RULE_opt_c_include = 75; + public static readonly RULE_key_match = 76; + public static readonly RULE_exclusionconstraintelem = 77; + public static readonly RULE_key_actions = 78; + public static readonly RULE_key_update = 79; + public static readonly RULE_key_delete = 80; + public static readonly RULE_key_action = 81; + public static readonly RULE_optinherit = 82; + public static readonly RULE_partitionspec = 83; + public static readonly RULE_part_elem = 84; + public static readonly RULE_table_access_method_clause = 85; + public static readonly RULE_optwith = 86; + public static readonly RULE_oncommitoption = 87; + public static readonly RULE_opttablespace = 88; + public static readonly RULE_optconstablespace = 89; + public static readonly RULE_existingindex = 90; + public static readonly RULE_createstatsstmt = 91; + public static readonly RULE_alterstatsstmt = 92; + public static readonly RULE_createasstmt = 93; + public static readonly RULE_create_as_target = 94; + public static readonly RULE_opt_with_data = 95; + public static readonly RULE_creatematviewstmt = 96; + public static readonly RULE_refreshmatviewstmt = 97; + public static readonly RULE_createseqstmt = 98; + public static readonly RULE_alterseqstmt = 99; + public static readonly RULE_seqoptelem = 100; + public static readonly RULE_numericonly = 101; + public static readonly RULE_createplangstmt = 102; + public static readonly RULE_createtablespacestmt = 103; + public static readonly RULE_createextensionstmt = 104; + public static readonly RULE_alterextensionstmt = 105; + public static readonly RULE_alterextensioncontentsstmt = 106; + public static readonly RULE_createfdwstmt = 107; + public static readonly RULE_fdw_option = 108; + public static readonly RULE_alterfdwstmt = 109; + public static readonly RULE_create_generic_options = 110; + public static readonly RULE_alter_generic_options = 111; + public static readonly RULE_alter_generic_option_elem = 112; + public static readonly RULE_generic_option_elem = 113; + public static readonly RULE_createforeignserverstmt = 114; + public static readonly RULE_foreign_server_version = 115; + public static readonly RULE_alterforeignserverstmt = 116; + public static readonly RULE_createforeigntablestmt = 117; + public static readonly RULE_importforeignschemastmt = 118; + public static readonly RULE_createusermappingstmt = 119; + public static readonly RULE_alterusermappingstmt = 120; + public static readonly RULE_createpolicystmt = 121; + public static readonly RULE_alterpolicystmt = 122; + public static readonly RULE_alterprocedurestmt = 123; + public static readonly RULE_procedure_action = 124; + public static readonly RULE_rowsecurityoptionalexpr = 125; + public static readonly RULE_rowsecurityoptionalwithcheck = 126; + public static readonly RULE_createamstmt = 127; + public static readonly RULE_createtrigstmt = 128; + public static readonly RULE_triggeractiontime = 129; + public static readonly RULE_triggerevents = 130; + public static readonly RULE_triggeroneevent = 131; + public static readonly RULE_triggerwhen = 132; + public static readonly RULE_function_or_procedure = 133; + public static readonly RULE_triggerfuncargs = 134; + public static readonly RULE_triggerfuncarg = 135; + public static readonly RULE_constraintattributeElem = 136; + public static readonly RULE_createeventtrigstmt = 137; + public static readonly RULE_event_trigger_when_item = 138; + public static readonly RULE_altereventtrigstmt = 139; + public static readonly RULE_createassertionstmt = 140; + public static readonly RULE_definestmt = 141; + public static readonly RULE_definition = 142; + public static readonly RULE_def_elem = 143; + public static readonly RULE_def_arg = 144; + public static readonly RULE_old_aggr_elem = 145; + public static readonly RULE_alterenumstmt = 146; + public static readonly RULE_opt_if_not_exists = 147; + public static readonly RULE_createopclassstmt = 148; + public static readonly RULE_opclass_item = 149; + public static readonly RULE_createopfamilystmt = 150; + public static readonly RULE_alteropfamilystmt = 151; + public static readonly RULE_opclass_drop = 152; + public static readonly RULE_reassignownedstmt = 153; + public static readonly RULE_dropstmt = 154; + public static readonly RULE_object_type_any_name = 155; + public static readonly RULE_object_type_name = 156; + public static readonly RULE_any_name_list = 157; + public static readonly RULE_any_name = 158; + public static readonly RULE_attrs = 159; + public static readonly RULE_truncatestmt = 160; + public static readonly RULE_truncate_table = 161; + public static readonly RULE_commentstmt = 162; + public static readonly RULE_seclabelstmt = 163; + public static readonly RULE_fetchstmt = 164; + public static readonly RULE_fetch_args = 165; + public static readonly RULE_from_in = 166; + public static readonly RULE_grantstmt = 167; + public static readonly RULE_revokestmt = 168; + public static readonly RULE_privileges = 169; + public static readonly RULE_beforeprivilegeselect = 170; + public static readonly RULE_privilege = 171; + public static readonly RULE_privilege_target = 172; + public static readonly RULE_grantee_list = 173; + public static readonly RULE_grantrolestmt = 174; + public static readonly RULE_revokerolestmt = 175; + public static readonly RULE_alterdefaultprivilegesstmt = 176; + public static readonly RULE_defaclaction = 177; + public static readonly RULE_defacl_privilege_target = 178; + public static readonly RULE_indexstmt = 179; + public static readonly RULE_index_params = 180; + public static readonly RULE_index_elem = 181; + public static readonly RULE_createfunctionstmt = 182; + public static readonly RULE_opt_or_replace = 183; + public static readonly RULE_func_args = 184; + public static readonly RULE_func_args_list = 185; + public static readonly RULE_routine_with_argtypes_list = 186; + public static readonly RULE_routine_with_argtypes = 187; + public static readonly RULE_procedure_with_argtypes_list = 188; + public static readonly RULE_procedure_with_argtypes = 189; + public static readonly RULE_function_with_argtypes_list = 190; + public static readonly RULE_function_with_argtypes = 191; + public static readonly RULE_func_arg = 192; + public static readonly RULE_arg_class = 193; + public static readonly RULE_func_type = 194; + public static readonly RULE_func_arg_with_default = 195; + public static readonly RULE_aggr_args = 196; + public static readonly RULE_aggregate_with_argtypes = 197; + public static readonly RULE_common_func_opt_item = 198; + public static readonly RULE_createfunc_opt_item = 199; + public static readonly RULE_opt_definition = 200; + public static readonly RULE_table_func_column = 201; + public static readonly RULE_alterfunctionstmt = 202; + public static readonly RULE_removefuncstmt = 203; + public static readonly RULE_removeaggrstmt = 204; + public static readonly RULE_removeoperstmt = 205; + public static readonly RULE_oper_argtypes = 206; + public static readonly RULE_any_operator = 207; + public static readonly RULE_operator_with_argtypes = 208; + public static readonly RULE_dostmt = 209; + public static readonly RULE_createcaststmt = 210; + public static readonly RULE_opt_if_exists = 211; + public static readonly RULE_createtransformstmt = 212; + public static readonly RULE_sql_with_function = 213; + public static readonly RULE_reindexstmt = 214; + public static readonly RULE_altertblspcstmt = 215; + public static readonly RULE_renamestmt = 216; + public static readonly RULE_alterobjectdependsstmt = 217; + public static readonly RULE_alterobjectschemastmt = 218; + public static readonly RULE_alteroperatorstmt = 219; + public static readonly RULE_operator_def_list = 220; + public static readonly RULE_operator_def_elem = 221; + public static readonly RULE_altertypestmt = 222; + public static readonly RULE_alterownerstmt = 223; + public static readonly RULE_createpublicationstmt = 224; + public static readonly RULE_alterpublicationstmt = 225; + public static readonly RULE_createsubscriptionstmt = 226; + public static readonly RULE_altersubscriptionstmt = 227; + public static readonly RULE_rulestmt = 228; + public static readonly RULE_ruleactionstmt = 229; + public static readonly RULE_notifystmt = 230; + public static readonly RULE_notify_payload = 231; + public static readonly RULE_listenstmt = 232; + public static readonly RULE_unlistenstmt = 233; + public static readonly RULE_transactionstmt = 234; + public static readonly RULE_opt_transaction = 235; + public static readonly RULE_transaction_mode_item = 236; + public static readonly RULE_transaction_mode_list = 237; + public static readonly RULE_viewstmt = 238; + public static readonly RULE_loadstmt = 239; + public static readonly RULE_createdbstmt = 240; + public static readonly RULE_createdb_opt_item = 241; + public static readonly RULE_alterdatabasestmt = 242; + public static readonly RULE_alterdatabasesetstmt = 243; + public static readonly RULE_altercollationstmt = 244; + public static readonly RULE_altersystemstmt = 245; + public static readonly RULE_createdomainstmt = 246; + public static readonly RULE_alterdomainstmt = 247; + public static readonly RULE_altertsdictionarystmt = 248; + public static readonly RULE_altertsconfigurationstmt = 249; + public static readonly RULE_createconversionstmt = 250; + public static readonly RULE_clusterstmt = 251; + public static readonly RULE_vacuumstmt = 252; + public static readonly RULE_analyzestmt = 253; + public static readonly RULE_analyze_keyword = 254; + public static readonly RULE_vac_analyze_option_elem = 255; + public static readonly RULE_analyze_option_elem = 256; + public static readonly RULE_opt_verbose = 257; + public static readonly RULE_vacuum_relation = 258; + public static readonly RULE_vacuum_relation_list = 259; + public static readonly RULE_explainstmt = 260; + public static readonly RULE_explainablestmt = 261; + public static readonly RULE_explain_option_list = 262; + public static readonly RULE_preparestmt = 263; + public static readonly RULE_prep_type_clause = 264; + public static readonly RULE_preparablestmt = 265; + public static readonly RULE_executestmt = 266; + public static readonly RULE_execute_param_clause = 267; + public static readonly RULE_deallocatestmt = 268; + public static readonly RULE_insertstmt = 269; + public static readonly RULE_insert_rest = 270; + public static readonly RULE_insert_column_list = 271; + public static readonly RULE_insert_column_item = 272; + public static readonly RULE_returning_clause = 273; + public static readonly RULE_deletestmt = 274; + public static readonly RULE_lockstmt = 275; + public static readonly RULE_updatestmt = 276; + public static readonly RULE_set_clause_list = 277; + public static readonly RULE_set_clause = 278; + public static readonly RULE_declarecursorstmt = 279; + public static readonly RULE_selectstmt = 280; + public static readonly RULE_select_with_parens = 281; + public static readonly RULE_select_no_parens = 282; + public static readonly RULE_select_clause = 283; + public static readonly RULE_simple_select = 284; + public static readonly RULE_set_operator_with_all_or_distinct = 285; + public static readonly RULE_with_clause = 286; + public static readonly RULE_common_table_expr = 287; + public static readonly RULE_search_cluase = 288; + public static readonly RULE_cycle_cluase = 289; + public static readonly RULE_into_clause = 290; + public static readonly RULE_opttempTableName = 291; + public static readonly RULE_distinct_clause = 292; + public static readonly RULE_sort_clause = 293; + public static readonly RULE_sortby = 294; + public static readonly RULE_select_limit = 295; + public static readonly RULE_limit_clause = 296; + public static readonly RULE_fetch_clause = 297; + public static readonly RULE_offset_clause = 298; + public static readonly RULE_select_fetch_first_value = 299; + public static readonly RULE_group_clause = 300; + public static readonly RULE_group_by_list = 301; + public static readonly RULE_group_by_item = 302; + public static readonly RULE_for_locking_clause = 303; + public static readonly RULE_values_clause = 304; + public static readonly RULE_from_clause = 305; + public static readonly RULE_from_list = 306; + public static readonly RULE_table_ref = 307; + public static readonly RULE_alias_clause = 308; + public static readonly RULE_func_alias_clause = 309; + public static readonly RULE_join_type = 310; + public static readonly RULE_join_qual = 311; + public static readonly RULE_relation_expr = 312; + public static readonly RULE_publication_relation_expr = 313; + public static readonly RULE_relation_expr_list = 314; + public static readonly RULE_relation_expr_opt_alias = 315; + public static readonly RULE_tablesample_clause = 316; + public static readonly RULE_func_table = 317; + public static readonly RULE_rowsfrom_item = 318; + public static readonly RULE_where_clause = 319; + public static readonly RULE_where_or_current_clause = 320; + public static readonly RULE_tablefuncelementlist = 321; + public static readonly RULE_tablefuncelement = 322; + public static readonly RULE_xmltable = 323; + public static readonly RULE_xmltable_column_el = 324; + public static readonly RULE_xml_namespace_el = 325; + public static readonly RULE_typename = 326; + public static readonly RULE_simpletypename = 327; + public static readonly RULE_consttypename = 328; + public static readonly RULE_numeric = 329; + public static readonly RULE_opt_float = 330; + public static readonly RULE_bit = 331; + public static readonly RULE_character = 332; + public static readonly RULE_constdatetime = 333; + public static readonly RULE_opt_interval = 334; + public static readonly RULE_interval_second = 335; + public static readonly RULE_comparisonOperator = 336; + public static readonly RULE_expression = 337; + public static readonly RULE_booleanExpression = 338; + public static readonly RULE_predicate = 339; + public static readonly RULE_valueExpression = 340; + public static readonly RULE_primaryExpression = 341; + public static readonly RULE_func_application = 342; + public static readonly RULE_func_expr = 343; + public static readonly RULE_func_expr_windowless = 344; + public static readonly RULE_func_expr_common_subexpr = 345; + public static readonly RULE_xml_attribute_list = 346; + public static readonly RULE_xml_attribute_el = 347; + public static readonly RULE_document_or_content = 348; + public static readonly RULE_xmlexists_argument = 349; + public static readonly RULE_xml_passing_mech = 350; + public static readonly RULE_window_clause = 351; + public static readonly RULE_window_definition = 352; + public static readonly RULE_over_clause = 353; + public static readonly RULE_window_specification = 354; + public static readonly RULE_opt_frame_clause = 355; + public static readonly RULE_frame_bound = 356; + public static readonly RULE_row = 357; + public static readonly RULE_explicit_row = 358; + public static readonly RULE_sub_type = 359; + public static readonly RULE_all_op = 360; + public static readonly RULE_mathop = 361; + public static readonly RULE_qual_op = 362; + public static readonly RULE_qual_all_op = 363; + public static readonly RULE_subquery_Op = 364; + public static readonly RULE_expr_list = 365; + public static readonly RULE_column_expr = 366; + public static readonly RULE_column_expr_noparen = 367; + public static readonly RULE_func_arg_list = 368; + public static readonly RULE_func_arg_expr = 369; + public static readonly RULE_array_expr = 370; + public static readonly RULE_extract_arg = 371; + public static readonly RULE_unicode_normal_form = 372; + public static readonly RULE_substr_list = 373; + public static readonly RULE_when_clause = 374; + public static readonly RULE_indirection_el = 375; + public static readonly RULE_indirection = 376; + public static readonly RULE_opt_indirection = 377; + public static readonly RULE_target_list = 378; + public static readonly RULE_target_el = 379; + public static readonly RULE_qualified_name_list = 380; + public static readonly RULE_table_name_list = 381; + public static readonly RULE_schema_name_list = 382; + public static readonly RULE_database_nameList = 383; + public static readonly RULE_tablespace_name_create = 384; + public static readonly RULE_tablespace_name = 385; + public static readonly RULE_table_name_create = 386; + public static readonly RULE_table_name = 387; + public static readonly RULE_view_name_create = 388; + public static readonly RULE_view_name = 389; + public static readonly RULE_qualified_name = 390; + public static readonly RULE_tablespace_name_list = 391; + public static readonly RULE_name_list = 392; + public static readonly RULE_database_name_create = 393; + public static readonly RULE_database_name = 394; + public static readonly RULE_schema_name = 395; + public static readonly RULE_routine_name_create = 396; + public static readonly RULE_routine_name = 397; + public static readonly RULE_procedure_name = 398; + public static readonly RULE_procedure_name_create = 399; + public static readonly RULE_column_name = 400; + public static readonly RULE_column_name_create = 401; + public static readonly RULE_function_name_create = 402; + public static readonly RULE_function_name = 403; + public static readonly RULE_sconst = 404; + public static readonly RULE_anysconst = 405; + public static readonly RULE_signediconst = 406; + public static readonly RULE_rolespec = 407; + public static readonly RULE_role_list = 408; + public static readonly RULE_colid = 409; + public static readonly RULE_type_function_name = 410; + public static readonly RULE_nonreservedword = 411; + public static readonly RULE_collabel = 412; + public static readonly RULE_identifier = 413; + public static readonly RULE_unreserved_keyword = 414; + public static readonly RULE_col_name_keyword = 415; + public static readonly RULE_type_func_name_keyword = 416; + public static readonly RULE_reserved_keyword = 417; + public static readonly RULE_pl_block = 418; + public static readonly RULE_label_decl = 419; + public static readonly RULE_decl_statement = 420; + public static readonly RULE_decl_cursor_arg = 421; + public static readonly RULE_assign_operator = 422; + public static readonly RULE_proc_stmt = 423; + public static readonly RULE_stmt_perform = 424; + public static readonly RULE_stmt_call = 425; + public static readonly RULE_stmt_assign = 426; + public static readonly RULE_stmt_getdiag = 427; + public static readonly RULE_getdiag_list_item = 428; + public static readonly RULE_assign_var = 429; + public static readonly RULE_stmt_if = 430; + public static readonly RULE_stmt_else = 431; + public static readonly RULE_stmt_case = 432; + public static readonly RULE_stmt_loop_while_for = 433; + public static readonly RULE_for_control = 434; + public static readonly RULE_stmt_foreach_a = 435; + public static readonly RULE_stmt_exit = 436; + public static readonly RULE_stmt_return = 437; + public static readonly RULE_stmt_raise = 438; + public static readonly RULE_opt_raise_using_elem = 439; + public static readonly RULE_stmt_assert = 440; + public static readonly RULE_loop_body = 441; + public static readonly RULE_stmt_execsql = 442; + public static readonly RULE_stmt_dynexecute = 443; + public static readonly RULE_opt_execute_into = 444; + public static readonly RULE_stmt_open = 445; + public static readonly RULE_opt_open_bound_list_item = 446; + public static readonly RULE_stmt_fetch = 447; + public static readonly RULE_opt_fetch_direction = 448; + public static readonly RULE_stmt_move = 449; + public static readonly RULE_mergestmt = 450; + public static readonly RULE_data_source = 451; + public static readonly RULE_merge_when_clause = 452; + public static readonly RULE_merge_insert = 453; + public static readonly RULE_merge_update = 454; + public static readonly RULE_default_values_or_values = 455; + public static readonly RULE_exprofdefault = 456; + public static readonly RULE_stmt_close = 457; + public static readonly RULE_stmt_null = 458; + public static readonly RULE_stmt_commit_or_rollback = 459; + public static readonly RULE_stmt_set = 460; + public static readonly RULE_cursor_variable = 461; + public static readonly RULE_exception_sect = 462; + public static readonly RULE_proc_condition = 463; + public static readonly RULE_any_identifier = 464; + public static readonly RULE_plsql_unreserved_keyword = 465; + public static readonly RULE_sql_expression = 466; public static readonly literalNames = [ null, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", @@ -1712,229 +1304,125 @@ export class PostgreSqlParser extends SQLParserBase { "AfterEscapeStringConstantWithNewlineMode_Continued" ]; public static readonly ruleNames = [ - "program", "plsqlroot", "singleStmt", "stmt", "plsqlconsolecommand", - "callstmt", "createrolestmt", "opt_with", "optrolelist", "alteroptrolelist", - "alteroptroleelem", "createoptroleelem", "createuserstmt", "alterrolestmt", - "opt_in_database", "alterrolesetstmt", "alterroutinestmt", "alter_routine_cluase", - "routine_action_list", "routine_action", "creategroupstmt", "altergroupstmt", - "add_drop", "createschemastmt", "schema_name_create", "optschemaeltlist", - "schema_stmt", "variablesetstmt", "set_rest", "generic_set", "set_rest_more", - "var_name", "var_list", "var_value", "iso_level", "opt_boolean_or_string_column", - "opt_boolean_or_string", "zone_value", "opt_encoding", "nonreservedword_or_sconst_column", - "nonreservedword_or_sconst", "variableresetstmt", "reset_rest", - "generic_reset", "setresetclause", "functionsetresetclause", "variableshowstmt", - "constraintssetstmt", "constraints_set_list", "constraints_set_mode", - "checkpointstmt", "discardstmt", "altertablestmt", "alter_table_cmds", - "partition_bound_spec", "partition_bound_cluase", "partition_bound_choose", - "partition_with_cluase", "partition_cmd", "index_partition_cmd", - "alter_table_cmd", "alter_column_default", "opt_drop_behavior", - "opt_collate_clause", "alter_using", "replica_identity", "reloptions", - "opt_reloptions", "reloption_list", "reloption_elem", "alter_identity_column_option_list", - "alter_identity_column_option", "partitionboundspec", "hash_partbound_elem", - "hash_partbound", "altercompositetypestmt", "alter_type_cmds", "alter_type_cmd", - "closeportalstmt", "copystmt", "copy_from", "opt_program", "copy_file_name", - "copy_options", "copy_opt_list", "copy_opt_item", "opt_binary", - "copy_delimiter", "opt_using", "copy_generic_opt_list", "copy_generic_opt_elem", - "copy_generic_opt_arg", "copy_generic_opt_arg_list", "copy_generic_opt_arg_list_item", - "createstmt", "opttemp", "table_column_list", "opttableelementlist", - "opttypedtableelementlist", "tableelementlist", "typedtableelementlist", - "tableelement", "typedtableelement", "column_def", "compressionCluase", - "storageCluase", "columnOptions", "colquallist", "colconstraint", - "colconstraintelem", "nulls_distinct", "generated_when", "deferrable_trigger", - "initially_trigger", "tablelikeclause", "tablelikeoptionlist", "tablelikeoption", - "tableconstraint", "constraintelem", "opt_no_inherit", "opt_column_list", - "opt_column_list_create", "column_list", "column_list_create", "opt_c_include", - "key_match", "exclusionconstraintlist", "exclusionconstraintelem", - "exclusionwhereclause", "key_actions", "key_update", "key_delete", - "key_action", "optinherit", "optpartitionspec", "partitionspec", - "part_params", "part_elem", "table_access_method_clause", "optwith", - "oncommitoption", "opttablespace", "index_paramenters_create", "optconstablespace", - "existingindex", "createstatsstmt", "alterstatsstmt", "createasstmt", - "create_as_target", "opt_with_data", "creatematviewstmt", "create_mv_target", - "optnolog", "refreshmatviewstmt", "createseqstmt", "alterseqstmt", - "optseqoptlist", "optparenthesizedseqoptlist", "seqoptlist", "seqoptelem", - "opt_by", "numericonly", "numericonly_list", "createplangstmt", - "opt_trusted", "handler_name", "opt_inline_handler", "validator_clause", - "opt_validator", "opt_procedural", "createtablespacestmt", "opttablespaceowner", - "createextensionstmt", "create_extension_opt_list", "create_extension_opt_item", - "alterextensionstmt", "alter_extension_opt_list", "alter_extension_opt_item", - "alterextensioncontentsstmt", "createfdwstmt", "fdw_option", "fdw_options", - "opt_fdw_options", "alterfdwstmt", "create_generic_options", "generic_option_list", - "alter_generic_options", "alter_generic_option_list", "alter_generic_option_elem", - "generic_option_elem", "generic_option_name", "generic_option_arg", - "createforeignserverstmt", "opt_type", "foreign_server_version", - "opt_foreign_server_version", "alterforeignserverstmt", "createforeigntablestmt", - "importforeignschemastmt", "import_qualification_type", "import_qualification", - "createusermappingstmt", "auth_ident", "alterusermappingstmt", "createpolicystmt", - "alterpolicystmt", "alterprocedurestmt", "procedure_cluase", "procedure_action", - "rowsecurityoptionalexpr", "rowsecurityoptionalwithcheck", "rowsecuritydefaulttorole", - "rowsecurityoptionaltorole", "rowsecuritydefaultpermissive", "rowsecuritydefaultforcmd", - "row_security_cmd", "createamstmt", "am_type", "createtrigstmt", - "triggeractiontime", "foreachrow", "roworstatment", "triggerevents", - "triggeroneevent", "triggerreferencing", "triggertransitions", "triggertransition", - "transitionoldornew", "transitionrowortable", "transitionrelname", - "triggerforspec", "triggerforopteach", "triggerfortype", "triggerwhen", - "function_or_procedure", "triggerfuncargs", "triggerfuncarg", "optconstrfromtable", - "constraintattributespec", "constraintattributeElem", "createeventtrigstmt", - "event_trigger_when_list", "event_trigger_when_item", "event_trigger_value_list", - "altereventtrigstmt", "enable_trigger", "createassertionstmt", "definestmt", - "definition", "def_list", "def_elem", "def_arg", "old_aggr_definition", - "old_aggr_list", "old_aggr_elem", "opt_enum_val_list", "enum_val_list", - "alterenumstmt", "opt_if_not_exists", "createopclassstmt", "opclass_item_list", - "opclass_item", "opt_default", "opt_opfamily", "opclass_purpose", - "opt_recheck", "createopfamilystmt", "alteropfamilystmt", "opclass_drop_list", - "opclass_drop", "reassignownedstmt", "dropstmt", "view_nameList", - "object_type_any_name", "object_type_name", "object_type_name_on_any_name", - "any_name_list", "relation_column_name", "relation_name", "any_name", - "attrs", "type_name_list", "truncatestmt", "truncate_table", "commentstmt", - "comment_text", "seclabelstmt", "opt_provider", "security_label", - "fetchstmt", "fetch_args", "from_in", "opt_from_in", "grantstmt", - "revokestmt", "privileges", "beforeprivilegeselectlist", "beforeprivilegeselect", - "privilege_list", "privilege", "privilege_target", "grantee_list", - "grantee", "opt_grant_grant_option", "grantrolestmt", "revokerolestmt", - "opt_grant_admin_option", "opt_granted_by", "alterdefaultprivilegesstmt", - "defacloptionlist", "defacloption", "defaclaction", "defacl_privilege_target", - "indexstmt", "opt_unique", "opt_concurrently", "opt_index_name", - "access_method_clause", "index_params", "index_elem_options", "index_elem", - "opt_include", "index_including_params", "opt_collate", "opt_class", - "opt_asc_desc", "opt_nulls_order", "createfunctionstmt", "attrilist", + "program", "singleStmt", "stmt", "callstmt", "createrolestmt", "alteroptroleelem", + "createoptroleelem", "createuserstmt", "alterrolestmt", "alterrolesetstmt", + "alterroutinestmt", "alter_routine_cluase", "routine_action", "creategroupstmt", + "altergroupstmt", "createschemastmt", "schema_name_create", "schema_stmt", + "variablesetstmt", "set_rest", "generic_set", "set_rest_more", "var_name", + "var_list", "var_value", "iso_level", "opt_boolean_or_string_column", + "opt_boolean_or_string", "zone_value", "nonreservedword_or_sconst", + "variableresetstmt", "reset_rest", "setresetclause", "functionsetresetclause", + "variableshowstmt", "constraintssetstmt", "checkpointstmt", "discardstmt", + "altertablestmt", "alter_table_cmds", "partition_bound_spec", "partition_bound_cluase", + "partition_bound_choose", "partition_with_cluase", "partition_cmd", + "index_partition_cmd", "alter_table_cmd", "alter_column_default", + "opt_drop_behavior", "opt_collate_clause", "reloptions", "opt_reloptions", + "reloption_elem", "partitionboundspec", "altercompositetypestmt", + "alter_type_cmd", "closeportalstmt", "copystmt", "copy_options", + "copy_generic_opt_elem", "createstmt", "opttemp", "opttypedtableelementlist", + "tableelementlist", "tableelement", "typedtableelement", "column_def", + "colconstraint", "colconstraintelem", "generated_when", "tablelikeoption", + "constraintelem", "opt_column_list", "opt_column_list_create", "column_list", + "opt_c_include", "key_match", "exclusionconstraintelem", "key_actions", + "key_update", "key_delete", "key_action", "optinherit", "partitionspec", + "part_elem", "table_access_method_clause", "optwith", "oncommitoption", + "opttablespace", "optconstablespace", "existingindex", "createstatsstmt", + "alterstatsstmt", "createasstmt", "create_as_target", "opt_with_data", + "creatematviewstmt", "refreshmatviewstmt", "createseqstmt", "alterseqstmt", + "seqoptelem", "numericonly", "createplangstmt", "createtablespacestmt", + "createextensionstmt", "alterextensionstmt", "alterextensioncontentsstmt", + "createfdwstmt", "fdw_option", "alterfdwstmt", "create_generic_options", + "alter_generic_options", "alter_generic_option_elem", "generic_option_elem", + "createforeignserverstmt", "foreign_server_version", "alterforeignserverstmt", + "createforeigntablestmt", "importforeignschemastmt", "createusermappingstmt", + "alterusermappingstmt", "createpolicystmt", "alterpolicystmt", "alterprocedurestmt", + "procedure_action", "rowsecurityoptionalexpr", "rowsecurityoptionalwithcheck", + "createamstmt", "createtrigstmt", "triggeractiontime", "triggerevents", + "triggeroneevent", "triggerwhen", "function_or_procedure", "triggerfuncargs", + "triggerfuncarg", "constraintattributeElem", "createeventtrigstmt", + "event_trigger_when_item", "altereventtrigstmt", "createassertionstmt", + "definestmt", "definition", "def_elem", "def_arg", "old_aggr_elem", + "alterenumstmt", "opt_if_not_exists", "createopclassstmt", "opclass_item", + "createopfamilystmt", "alteropfamilystmt", "opclass_drop", "reassignownedstmt", + "dropstmt", "object_type_any_name", "object_type_name", "any_name_list", + "any_name", "attrs", "truncatestmt", "truncate_table", "commentstmt", + "seclabelstmt", "fetchstmt", "fetch_args", "from_in", "grantstmt", + "revokestmt", "privileges", "beforeprivilegeselect", "privilege", + "privilege_target", "grantee_list", "grantrolestmt", "revokerolestmt", + "alterdefaultprivilegesstmt", "defaclaction", "defacl_privilege_target", + "indexstmt", "index_params", "index_elem", "createfunctionstmt", "opt_or_replace", "func_args", "func_args_list", "routine_with_argtypes_list", "routine_with_argtypes", "procedure_with_argtypes_list", "procedure_with_argtypes", - "function_with_argtypes_list", "function_with_argtypes", "func_args_with_defaults", - "func_args_with_defaults_list", "func_arg", "arg_class", "param_name", - "func_return", "func_type", "func_arg_with_default", "aggr_arg", - "aggr_args", "aggr_args_list", "aggregate_with_argtypes", "aggregate_with_argtypes_list", - "createfunc_opt_list", "common_func_opt_item", "createfunc_opt_item", - "transform_type_list", "opt_definition", "table_func_column", "table_func_column_list", - "alterfunctionstmt", "alterFunctionTypeClause", "alterfunc_opt_list", - "opt_restrict", "removefuncstmt", "removeaggrstmt", "removeoperstmt", - "oper_argtypes", "any_operator", "operator_with_argtypes_list", - "operator_with_argtypes", "dostmt", "dostmt_opt_list", "dostmt_opt_item", - "createcaststmt", "cast_context", "opt_if_exists", "createtransformstmt", - "transform_element_list", "reindexstmt", "reindex_target_type", - "reindex_target_multitable", "reindex_option_list", "reindex_option_elem", - "altertblspcstmt", "renamestmt", "opt_set_data", "alterobjectdependsstmt", - "opt_no", "alterobjectschemastmt", "alteroperatorstmt", "operator_def_list", - "operator_def_elem", "operator_def_arg", "altertypestmt", "alterownerstmt", - "createpublicationstmt", "opt_publication_for_tables", "publication_for_tables", - "alterpublicationstmt", "createsubscriptionstmt", "publication_name_list", - "publication_name_item", "altersubscriptionstmt", "rulestmt", "ruleactionlist", - "ruleactionmulti", "ruleactionstmt", "ruleactionstmtOrEmpty", "event", - "opt_instead", "notifystmt", "notify_payload", "listenstmt", "unlistenstmt", - "transactionstmt", "opt_transaction", "transaction_mode_item", "transaction_mode_list", - "transaction_mode_list_or_empty", "opt_transaction_chain", "viewstmt", - "opt_check_option", "loadstmt", "createdbstmt", "createdb_opt_list", - "createdb_opt_items", "createdb_opt_item", "createdb_opt_name", - "opt_equal", "alterdatabasestmt", "alterdatabasesetstmt", "drop_option_list", - "drop_option", "altercollationstmt", "altersystemstmt", "createdomainstmt", - "alterdomainstmt", "opt_as", "altertsdictionarystmt", "altertsconfigurationstmt", - "any_with", "createconversionstmt", "clusterstmt", "opt_verbose_list", - "cluster_index_specification", "vacuumstmt", "analyzestmt", "vac_analyze_option_list", - "analyze_keyword", "vac_analyze_option_elem", "vac_analyze_option_name", - "vac_analyze_option_arg", "opt_analyze", "analyze_options_list", - "analyze_option_elem", "opt_verbose", "opt_skiplock", "opt_buffer_usage_limit", - "opt_full", "opt_freeze", "opt_name_list", "vacuum_relation", "vacuum_relation_list", - "opt_vacuum_relation_list", "explainstmt", "explainablestmt", "explain_option_list", - "explain_option_elem", "explain_option_name", "explain_option_arg", - "preparestmt", "prep_type_clause", "preparablestmt", "executestmt", - "execute_param_clause", "deallocatestmt", "insertstmt", "insert_target", - "insert_rest", "override_kind", "insert_column_list", "insert_column_item", - "opt_on_conflict", "opt_conf_expr", "returning_clause", "deletestmt", - "using_clause", "lockstmt", "opt_lock", "lock_type", "opt_nowait", - "opt_nowait_or_skip", "updatestmt", "set_clause_list", "set_clause", - "set_target", "set_target_list", "declarecursorstmt", "cursor_name", - "cursor_options", "opt_hold", "selectstmt", "select_with_parens", - "select_no_parens", "select_clause", "simple_select", "set_operator", - "set_operator_with_all_or_distinct", "with_clause", "cte_list", - "common_table_expr", "search_cluase", "cycle_cluase", "opt_materialized", - "opt_with_clause", "into_clause", "opt_strict", "opttempTableName", - "opt_table", "all_or_distinct", "distinct_clause", "opt_all_clause", - "opt_sort_clause", "sort_clause", "sortby_list", "sortby", "select_limit", - "opt_select_limit", "limit_clause", "fetch_clause", "offset_clause", - "select_limit_value", "select_offset_value", "select_fetch_first_value", - "i_or_f_const", "row_or_rows", "first_or_next", "group_clause", - "group_by_list", "group_by_item", "empty_grouping_set", "rollup_clause", - "cube_clause", "grouping_sets_clause", "having_clause", "for_locking_clause", - "opt_for_locking_clause", "for_locking_items", "for_locking_item", - "for_locking_strength", "locked_rels_list", "values_clause", "from_clause", - "from_list", "table_ref", "alias_clause", "opt_alias_clause", "func_alias_clause", - "join_type", "join_qual", "relation_expr", "view_relation_expr", - "publication_relation_expr", "relation_expr_list", "publication_relation_expr_list", - "relation_expr_opt_alias", "tablesample_clause", "opt_repeatable_clause", - "func_table", "rowsfrom_item", "rowsfrom_list", "opt_col_def_list", - "opt_ordinality", "where_clause", "where_or_current_clause", "opttablefuncelementlist", - "tablefuncelementlist", "tablefuncelement", "xmltable", "xmltable_column_list", - "xmltable_column_el", "xmltable_column_option_list", "xmltable_column_option_el", - "xml_namespace_list", "xml_namespace_el", "typename", "opt_array_bounds", - "simpletypename", "consttypename", "generictype", "opt_type_modifiers", - "numeric", "opt_float", "bit", "constbit", "bitwithlength", "bitwithoutlength", - "character", "constcharacter", "character_c", "opt_varying", "constdatetime", - "constinterval", "opt_timezone", "opt_interval", "interval_second", - "opt_escape", "a_expr", "a_expr_qual", "a_expr_lessless", "a_expr_or", - "a_expr_and", "a_expr_in", "a_expr_unary_not", "a_expr_isnull", - "a_expr_is_not", "a_expr_compare", "a_expr_like", "a_expr_qual_op", - "a_expr_unary_qualop", "a_expr_add", "a_expr_mul", "a_expr_caret", - "a_expr_unary_sign", "a_expr_at_time_zone", "a_expr_collate", "a_expr_typecast", - "b_expr", "c_expr", "plsqlvariablename", "func_application", "func_expr", - "func_expr_windowless", "func_expr_common_subexpr", "xml_root_version", - "opt_xml_root_standalone", "xml_attributes", "xml_attribute_list", - "xml_attribute_el", "document_or_content", "xml_whitespace_option", - "xmlexists_argument", "xml_passing_mech", "within_group_clause", - "filter_clause", "window_clause", "window_definition_list", "window_definition", - "over_clause", "window_specification", "opt_existing_window_name", - "opt_partition_clause", "opt_frame_clause", "frame_extent", "frame_bound", - "opt_window_exclusion_clause", "row", "explicit_row", "implicit_row", - "sub_type", "all_op", "mathop", "qual_op", "qual_all_op", "subquery_Op", - "expr_list", "column_expr_list_noparen", "column_expr_list", "column_expr", - "column_expr_noparen", "func_arg_list", "func_arg_expr", "type_list", - "array_expr", "array_expr_list", "extract_list", "extract_arg", - "unicode_normal_form", "overlay_list", "position_list", "substr_list", - "trim_list", "in_expr", "case_expr", "when_clause_list", "when_clause", - "case_default", "case_arg", "columnref", "indirection_el", "opt_slice_bound", - "indirection", "opt_indirection", "opt_target_list", "target_list", - "target_el", "qualified_name_list", "table_name_list", "schema_name_list", - "database_nameList", "procedure_name_list", "tablespace_name_create", + "function_with_argtypes_list", "function_with_argtypes", "func_arg", + "arg_class", "func_type", "func_arg_with_default", "aggr_args", + "aggregate_with_argtypes", "common_func_opt_item", "createfunc_opt_item", + "opt_definition", "table_func_column", "alterfunctionstmt", "removefuncstmt", + "removeaggrstmt", "removeoperstmt", "oper_argtypes", "any_operator", + "operator_with_argtypes", "dostmt", "createcaststmt", "opt_if_exists", + "createtransformstmt", "sql_with_function", "reindexstmt", "altertblspcstmt", + "renamestmt", "alterobjectdependsstmt", "alterobjectschemastmt", + "alteroperatorstmt", "operator_def_list", "operator_def_elem", "altertypestmt", + "alterownerstmt", "createpublicationstmt", "alterpublicationstmt", + "createsubscriptionstmt", "altersubscriptionstmt", "rulestmt", "ruleactionstmt", + "notifystmt", "notify_payload", "listenstmt", "unlistenstmt", "transactionstmt", + "opt_transaction", "transaction_mode_item", "transaction_mode_list", + "viewstmt", "loadstmt", "createdbstmt", "createdb_opt_item", "alterdatabasestmt", + "alterdatabasesetstmt", "altercollationstmt", "altersystemstmt", + "createdomainstmt", "alterdomainstmt", "altertsdictionarystmt", + "altertsconfigurationstmt", "createconversionstmt", "clusterstmt", + "vacuumstmt", "analyzestmt", "analyze_keyword", "vac_analyze_option_elem", + "analyze_option_elem", "opt_verbose", "vacuum_relation", "vacuum_relation_list", + "explainstmt", "explainablestmt", "explain_option_list", "preparestmt", + "prep_type_clause", "preparablestmt", "executestmt", "execute_param_clause", + "deallocatestmt", "insertstmt", "insert_rest", "insert_column_list", + "insert_column_item", "returning_clause", "deletestmt", "lockstmt", + "updatestmt", "set_clause_list", "set_clause", "declarecursorstmt", + "selectstmt", "select_with_parens", "select_no_parens", "select_clause", + "simple_select", "set_operator_with_all_or_distinct", "with_clause", + "common_table_expr", "search_cluase", "cycle_cluase", "into_clause", + "opttempTableName", "distinct_clause", "sort_clause", "sortby", + "select_limit", "limit_clause", "fetch_clause", "offset_clause", + "select_fetch_first_value", "group_clause", "group_by_list", "group_by_item", + "for_locking_clause", "values_clause", "from_clause", "from_list", + "table_ref", "alias_clause", "func_alias_clause", "join_type", "join_qual", + "relation_expr", "publication_relation_expr", "relation_expr_list", + "relation_expr_opt_alias", "tablesample_clause", "func_table", "rowsfrom_item", + "where_clause", "where_or_current_clause", "tablefuncelementlist", + "tablefuncelement", "xmltable", "xmltable_column_el", "xml_namespace_el", + "typename", "simpletypename", "consttypename", "numeric", "opt_float", + "bit", "character", "constdatetime", "opt_interval", "interval_second", + "comparisonOperator", "expression", "booleanExpression", "predicate", + "valueExpression", "primaryExpression", "func_application", "func_expr", + "func_expr_windowless", "func_expr_common_subexpr", "xml_attribute_list", + "xml_attribute_el", "document_or_content", "xmlexists_argument", + "xml_passing_mech", "window_clause", "window_definition", "over_clause", + "window_specification", "opt_frame_clause", "frame_bound", "row", + "explicit_row", "sub_type", "all_op", "mathop", "qual_op", "qual_all_op", + "subquery_Op", "expr_list", "column_expr", "column_expr_noparen", + "func_arg_list", "func_arg_expr", "array_expr", "extract_arg", "unicode_normal_form", + "substr_list", "when_clause", "indirection_el", "indirection", "opt_indirection", + "target_list", "target_el", "qualified_name_list", "table_name_list", + "schema_name_list", "database_nameList", "tablespace_name_create", "tablespace_name", "table_name_create", "table_name", "view_name_create", "view_name", "qualified_name", "tablespace_name_list", "name_list", "database_name_create", "database_name", "schema_name", "routine_name_create", "routine_name", "procedure_name", "procedure_name_create", "column_name", - "column_name_create", "name", "attr_name", "file_name", "function_name_create", - "function_name", "usual_name", "aexprconst", "xconst", "bconst", - "fconst", "iconst", "sconst", "anysconst", "opt_uescape", "signediconst", - "groupname", "roleid", "rolespec", "role_list", "colid", "index_method_choices", - "exclude_element", "index_paramenters", "type_function_name", "type_usual_name", - "nonreservedword_column", "nonreservedword", "collabel", "identifier", - "plsqlidentifier", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", - "reserved_keyword", "pl_function", "comp_options", "comp_option", - "sharp", "option_value", "opt_semi", "pl_block", "decl_sect", "decl_start", - "decl_stmts", "label_decl", "decl_stmt", "decl_statement", "opt_scrollable", - "decl_cursor_query", "decl_cursor_args", "decl_cursor_arglist", - "decl_cursor_arg", "decl_is_for", "decl_aliasitem", "decl_varname", - "decl_const", "decl_datatype", "decl_collate", "decl_notnull", "decl_defval", - "decl_defkey", "assign_operator", "proc_sect", "proc_stmt", "stmt_perform", - "stmt_call", "opt_expr_list", "stmt_assign", "stmt_getdiag", "getdiag_area_opt", - "getdiag_list", "getdiag_list_item", "getdiag_item", "getdiag_target", - "assign_var", "stmt_if", "stmt_elsifs", "stmt_else", "stmt_case", - "opt_expr_until_when", "case_when_list", "case_when", "opt_case_else", - "stmt_loop", "stmt_while", "stmt_for", "for_control", "opt_for_using_expression", - "opt_cursor_parameters", "opt_reverse", "opt_by_expression", "for_variable", - "stmt_foreach_a", "foreach_slice", "stmt_exit", "exit_type", "stmt_return", - "opt_return_result", "stmt_raise", "opt_stmt_raise_level", "opt_raise_list", - "opt_raise_using", "opt_raise_using_elem", "opt_raise_using_elem_list", - "stmt_assert", "opt_stmt_assert_message", "loop_body", "stmt_execsql", - "stmt_dynexecute", "opt_execute_using", "opt_execute_using_list", - "opt_execute_into", "stmt_open", "opt_open_bound_list_item", "opt_open_bound_list", - "opt_open_using", "opt_scroll_option", "opt_scroll_option_no", "stmt_fetch", - "into_target", "opt_cursor_from", "opt_fetch_direction", "stmt_move", - "mergestmt", "data_source", "join_condition", "merge_when_clause", - "merge_insert", "merge_update", "default_values_or_values", "exprofdefaultlist", - "exprofdefault", "stmt_close", "stmt_null", "stmt_commit", "stmt_rollback", - "plsql_opt_transaction_chain", "stmt_set", "cursor_variable", "exception_sect", - "proc_exceptions", "proc_exception", "proc_conditions", "proc_condition", - "opt_block_label", "opt_loop_label", "opt_label", "opt_exitcond", - "any_identifier", "plsql_unreserved_keyword", "sql_expression", - "expr_until_then", "expr_until_semi", "expr_until_rightbracket", - "expr_until_loop", "make_execsql_stmt", "opt_returning_clause_into", + "column_name_create", "function_name_create", "function_name", "sconst", + "anysconst", "signediconst", "rolespec", "role_list", "colid", "type_function_name", + "nonreservedword", "collabel", "identifier", "unreserved_keyword", + "col_name_keyword", "type_func_name_keyword", "reserved_keyword", + "pl_block", "label_decl", "decl_statement", "decl_cursor_arg", "assign_operator", + "proc_stmt", "stmt_perform", "stmt_call", "stmt_assign", "stmt_getdiag", + "getdiag_list_item", "assign_var", "stmt_if", "stmt_else", "stmt_case", + "stmt_loop_while_for", "for_control", "stmt_foreach_a", "stmt_exit", + "stmt_return", "stmt_raise", "opt_raise_using_elem", "stmt_assert", + "loop_body", "stmt_execsql", "stmt_dynexecute", "opt_execute_into", + "stmt_open", "opt_open_bound_list_item", "stmt_fetch", "opt_fetch_direction", + "stmt_move", "mergestmt", "data_source", "merge_when_clause", "merge_insert", + "merge_update", "default_values_or_values", "exprofdefault", "stmt_close", + "stmt_null", "stmt_commit_or_rollback", "stmt_set", "cursor_variable", + "exception_sect", "proc_condition", "any_identifier", "plsql_unreserved_keyword", + "sql_expression", ]; public get grammarFileName(): string { return "PostgreSqlParser.g4"; } @@ -1958,21 +1446,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1753; + this.state = 937; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 2 || _la === 31 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 570441729) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 142606337) !== 0) || _la === 105 || _la === 129 || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 2159673601) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 100680739) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1090557953) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 679839745) !== 0) || ((((_la - 322)) & ~0x1F) === 0 && ((1 << (_la - 322)) & 272417) !== 0) || ((((_la - 358)) & ~0x1F) === 0 && ((1 << (_la - 358)) & 6401) !== 0) || ((((_la - 422)) & ~0x1F) === 0 && ((1 << (_la - 422)) & 4196353) !== 0) || _la === 454 || _la === 525 || _la === 581) { { { - this.state = 1750; + this.state = 934; this.singleStmt(); } } - this.state = 1755; + this.state = 939; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1756; + this.state = 940; this.match(PostgreSqlParser.EOF); } } @@ -1990,45 +1478,21 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public plsqlroot(): PlsqlrootContext { - let localContext = new PlsqlrootContext(this.context, this.state); - this.enterRule(localContext, 2, PostgreSqlParser.RULE_plsqlroot); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1758; - this.pl_function(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public singleStmt(): SingleStmtContext { let localContext = new SingleStmtContext(this.context, this.state); - this.enterRule(localContext, 4, PostgreSqlParser.RULE_singleStmt); + this.enterRule(localContext, 2, PostgreSqlParser.RULE_singleStmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1760; + this.state = 942; this.stmt(); - this.state = 1762; + this.state = 944; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7) { { - this.state = 1761; + this.state = 943; this.match(PostgreSqlParser.SEMI); } } @@ -2051,865 +1515,841 @@ export class PostgreSqlParser extends SQLParserBase { } public stmt(): StmtContext { let localContext = new StmtContext(this.context, this.state); - this.enterRule(localContext, 6, PostgreSqlParser.RULE_stmt); + this.enterRule(localContext, 4, PostgreSqlParser.RULE_stmt); + let _la: number; try { - this.state = 1881; + this.state = 1066; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 3, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1764; + this.state = 946; this.altereventtrigstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1765; + this.state = 947; this.altercollationstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1766; + this.state = 948; this.alterdatabasestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1767; + this.state = 949; this.alterdatabasesetstmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1768; + this.state = 950; this.alterdefaultprivilegesstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1769; + this.state = 951; this.alterdomainstmt(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1770; + this.state = 952; this.alterenumstmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1771; + this.state = 953; this.alterextensionstmt(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1772; + this.state = 954; this.alterextensioncontentsstmt(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1773; + this.state = 955; this.alterfdwstmt(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1774; + this.state = 956; this.alterforeignserverstmt(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1775; + this.state = 957; this.alterfunctionstmt(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1776; + this.state = 958; this.altergroupstmt(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1777; + this.state = 959; this.alterobjectdependsstmt(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1778; + this.state = 960; this.alterobjectschemastmt(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1779; + this.state = 961; this.alterownerstmt(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1780; + this.state = 962; this.alteroperatorstmt(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 1781; + this.state = 963; this.altertypestmt(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 1782; + this.state = 964; this.alterpolicystmt(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 1783; + this.state = 965; this.alterprocedurestmt(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 1784; + this.state = 966; this.alterseqstmt(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 1785; + this.state = 967; this.altersystemstmt(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 1786; + this.state = 968; this.altertablestmt(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 1787; + this.state = 969; this.altertblspcstmt(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 1788; + this.state = 970; this.altercompositetypestmt(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 1789; + this.state = 971; this.alterpublicationstmt(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 1790; + this.state = 972; this.alterrolesetstmt(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 1791; + this.state = 973; this.alterroutinestmt(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 1792; + this.state = 974; this.alterrolestmt(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 1793; + this.state = 975; this.altersubscriptionstmt(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 1794; + this.state = 976; this.alterstatsstmt(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 1795; + this.state = 977; this.altertsconfigurationstmt(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 1796; + this.state = 978; this.altertsdictionarystmt(); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 1797; + this.state = 979; this.alterusermappingstmt(); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 1798; + this.state = 980; this.analyzestmt(); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 1799; + this.state = 981; this.callstmt(); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 1800; + this.state = 982; this.checkpointstmt(); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 1801; + this.state = 983; this.closeportalstmt(); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 1802; + this.state = 984; this.clusterstmt(); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 1803; + this.state = 985; this.commentstmt(); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 1804; + this.state = 986; this.constraintssetstmt(); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 1805; + this.state = 987; this.copystmt(); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 1806; + this.state = 988; this.createamstmt(); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 1807; + this.state = 989; this.createasstmt(); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 1808; + this.state = 990; this.createassertionstmt(); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 1809; + this.state = 991; this.createcaststmt(); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 1810; + this.state = 992; this.createconversionstmt(); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 1811; + this.state = 993; this.createdomainstmt(); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 1812; + this.state = 994; this.createextensionstmt(); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 1813; + this.state = 995; this.createfdwstmt(); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 1814; + this.state = 996; this.createforeignserverstmt(); } break; case 52: this.enterOuterAlt(localContext, 52); { - this.state = 1815; + this.state = 997; this.createforeigntablestmt(); } break; case 53: this.enterOuterAlt(localContext, 53); { - this.state = 1816; + this.state = 998; this.createfunctionstmt(); } break; case 54: this.enterOuterAlt(localContext, 54); { - this.state = 1817; + this.state = 999; this.creategroupstmt(); } break; case 55: this.enterOuterAlt(localContext, 55); { - this.state = 1818; + this.state = 1000; this.creatematviewstmt(); } break; case 56: this.enterOuterAlt(localContext, 56); { - this.state = 1819; + this.state = 1001; this.createopclassstmt(); } break; case 57: this.enterOuterAlt(localContext, 57); { - this.state = 1820; + this.state = 1002; this.createopfamilystmt(); } break; case 58: this.enterOuterAlt(localContext, 58); { - this.state = 1821; + this.state = 1003; this.createpublicationstmt(); } break; case 59: this.enterOuterAlt(localContext, 59); { - this.state = 1822; + this.state = 1004; this.alteropfamilystmt(); } break; case 60: this.enterOuterAlt(localContext, 60); { - this.state = 1823; + this.state = 1005; this.createpolicystmt(); } break; case 61: this.enterOuterAlt(localContext, 61); { - this.state = 1824; + this.state = 1006; this.createplangstmt(); } break; case 62: this.enterOuterAlt(localContext, 62); { - this.state = 1825; + this.state = 1007; this.createschemastmt(); } break; case 63: this.enterOuterAlt(localContext, 63); { - this.state = 1826; + this.state = 1008; this.createseqstmt(); } break; case 64: this.enterOuterAlt(localContext, 64); { - this.state = 1827; + this.state = 1009; this.createstmt(); } break; case 65: this.enterOuterAlt(localContext, 65); { - this.state = 1828; + this.state = 1010; this.createsubscriptionstmt(); } break; case 66: this.enterOuterAlt(localContext, 66); { - this.state = 1829; + this.state = 1011; this.createstatsstmt(); } break; case 67: this.enterOuterAlt(localContext, 67); { - this.state = 1830; + this.state = 1012; this.createtablespacestmt(); } break; case 68: this.enterOuterAlt(localContext, 68); { - this.state = 1831; + this.state = 1013; this.createtransformstmt(); } break; case 69: this.enterOuterAlt(localContext, 69); { - this.state = 1832; + this.state = 1014; this.createtrigstmt(); } break; case 70: this.enterOuterAlt(localContext, 70); { - this.state = 1833; + this.state = 1015; this.createeventtrigstmt(); } break; case 71: this.enterOuterAlt(localContext, 71); { - this.state = 1834; + this.state = 1016; this.createrolestmt(); } break; case 72: this.enterOuterAlt(localContext, 72); { - this.state = 1835; + this.state = 1017; this.createuserstmt(); } break; case 73: this.enterOuterAlt(localContext, 73); { - this.state = 1836; + this.state = 1018; this.createusermappingstmt(); } break; case 74: this.enterOuterAlt(localContext, 74); { - this.state = 1837; + this.state = 1019; this.createdbstmt(); } break; case 75: this.enterOuterAlt(localContext, 75); { - this.state = 1838; + this.state = 1020; this.deallocatestmt(); } break; case 76: this.enterOuterAlt(localContext, 76); { - this.state = 1839; + this.state = 1021; this.declarecursorstmt(); } break; case 77: this.enterOuterAlt(localContext, 77); { - this.state = 1840; + this.state = 1022; this.definestmt(); } break; case 78: this.enterOuterAlt(localContext, 78); { - this.state = 1841; + this.state = 1023; this.deletestmt(); } break; case 79: this.enterOuterAlt(localContext, 79); { - this.state = 1842; + this.state = 1024; this.discardstmt(); } break; case 80: this.enterOuterAlt(localContext, 80); { - this.state = 1843; + this.state = 1025; this.dostmt(); } break; case 81: this.enterOuterAlt(localContext, 81); { - this.state = 1844; + this.state = 1026; this.dropstmt(); } break; case 82: this.enterOuterAlt(localContext, 82); { - this.state = 1845; + this.state = 1027; this.executestmt(); } break; case 83: this.enterOuterAlt(localContext, 83); { - this.state = 1846; + this.state = 1028; this.explainstmt(); } break; case 84: this.enterOuterAlt(localContext, 84); { - this.state = 1847; + this.state = 1029; this.fetchstmt(); } break; case 85: this.enterOuterAlt(localContext, 85); { - this.state = 1848; + this.state = 1030; this.grantstmt(); } break; case 86: this.enterOuterAlt(localContext, 86); { - this.state = 1849; + this.state = 1031; this.grantrolestmt(); } break; case 87: this.enterOuterAlt(localContext, 87); { - this.state = 1850; + this.state = 1032; this.mergestmt(); } break; case 88: this.enterOuterAlt(localContext, 88); { - this.state = 1851; + this.state = 1033; this.importforeignschemastmt(); } break; case 89: this.enterOuterAlt(localContext, 89); { - this.state = 1852; + this.state = 1034; this.indexstmt(); } break; case 90: this.enterOuterAlt(localContext, 90); { - this.state = 1853; + this.state = 1035; this.insertstmt(); } break; case 91: this.enterOuterAlt(localContext, 91); { - this.state = 1854; + this.state = 1036; this.listenstmt(); } break; case 92: this.enterOuterAlt(localContext, 92); { - this.state = 1855; + this.state = 1037; this.refreshmatviewstmt(); } break; case 93: this.enterOuterAlt(localContext, 93); { - this.state = 1856; + this.state = 1038; this.loadstmt(); } break; case 94: this.enterOuterAlt(localContext, 94); { - this.state = 1857; + this.state = 1039; this.lockstmt(); } break; case 95: this.enterOuterAlt(localContext, 95); { - this.state = 1858; + this.state = 1040; this.notifystmt(); } break; case 96: this.enterOuterAlt(localContext, 96); { - this.state = 1859; + this.state = 1041; this.preparestmt(); } break; case 97: this.enterOuterAlt(localContext, 97); { - this.state = 1860; + this.state = 1042; this.reassignownedstmt(); } break; case 98: this.enterOuterAlt(localContext, 98); { - this.state = 1861; + this.state = 1043; this.reindexstmt(); } break; case 99: this.enterOuterAlt(localContext, 99); { - this.state = 1862; + this.state = 1044; this.removeaggrstmt(); } break; case 100: this.enterOuterAlt(localContext, 100); { - this.state = 1863; + this.state = 1045; this.removefuncstmt(); } break; case 101: this.enterOuterAlt(localContext, 101); { - this.state = 1864; + this.state = 1046; this.removeoperstmt(); } break; case 102: this.enterOuterAlt(localContext, 102); { - this.state = 1865; + this.state = 1047; this.renamestmt(); } break; case 103: this.enterOuterAlt(localContext, 103); { - this.state = 1866; + this.state = 1048; this.revokestmt(); } break; case 104: this.enterOuterAlt(localContext, 104); { - this.state = 1867; + this.state = 1049; this.revokerolestmt(); } break; case 105: this.enterOuterAlt(localContext, 105); { - this.state = 1868; + this.state = 1050; this.rulestmt(); } break; case 106: this.enterOuterAlt(localContext, 106); { - this.state = 1869; + this.state = 1051; this.seclabelstmt(); } break; case 107: this.enterOuterAlt(localContext, 107); { - this.state = 1870; + this.state = 1052; this.selectstmt(); } break; case 108: this.enterOuterAlt(localContext, 108); { - this.state = 1871; + this.state = 1053; this.transactionstmt(); } break; case 109: this.enterOuterAlt(localContext, 109); { - this.state = 1872; + this.state = 1054; this.truncatestmt(); } break; case 110: this.enterOuterAlt(localContext, 110); { - this.state = 1873; + this.state = 1055; this.unlistenstmt(); } break; case 111: this.enterOuterAlt(localContext, 111); { - this.state = 1874; + this.state = 1056; this.updatestmt(); } break; case 112: this.enterOuterAlt(localContext, 112); { - this.state = 1875; + this.state = 1057; this.vacuumstmt(); } break; case 113: this.enterOuterAlt(localContext, 113); { - this.state = 1876; + this.state = 1058; this.variableresetstmt(); } break; case 114: this.enterOuterAlt(localContext, 114); { - this.state = 1877; + this.state = 1059; this.variablesetstmt(); } break; case 115: this.enterOuterAlt(localContext, 115); { - this.state = 1878; + this.state = 1060; this.variableshowstmt(); } break; case 116: this.enterOuterAlt(localContext, 116); { - this.state = 1879; + this.state = 1061; this.viewstmt(); } break; case 117: this.enterOuterAlt(localContext, 117); { - this.state = 1880; - this.plsqlconsolecommand(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public plsqlconsolecommand(): PlsqlconsolecommandContext { - let localContext = new PlsqlconsolecommandContext(this.context, this.state); - this.enterRule(localContext, 8, PostgreSqlParser.RULE_plsqlconsolecommand); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1883; - this.match(PostgreSqlParser.MetaCommand); - this.state = 1885; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 582) { - { - this.state = 1884; - this.match(PostgreSqlParser.EndMetaCommand); + this.state = 1062; + this.match(PostgreSqlParser.MetaCommand); + this.state = 1064; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 582) { + { + this.state = 1063; + this.match(PostgreSqlParser.EndMetaCommand); + } } - } + } + break; } } catch (re) { @@ -2928,13 +2368,13 @@ export class PostgreSqlParser extends SQLParserBase { } public callstmt(): CallstmtContext { let localContext = new CallstmtContext(this.context, this.state); - this.enterRule(localContext, 10, PostgreSqlParser.RULE_callstmt); + this.enterRule(localContext, 6, PostgreSqlParser.RULE_callstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 1887; + this.state = 1068; this.match(PostgreSqlParser.KW_CALL); - this.state = 1888; + this.state = 1069; this.func_application(); } } @@ -2954,88 +2394,40 @@ export class PostgreSqlParser extends SQLParserBase { } public createrolestmt(): CreaterolestmtContext { let localContext = new CreaterolestmtContext(this.context, this.state); - this.enterRule(localContext, 12, PostgreSqlParser.RULE_createrolestmt); + this.enterRule(localContext, 8, PostgreSqlParser.RULE_createrolestmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1890; + this.state = 1071; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1891; + this.state = 1072; this.match(PostgreSqlParser.KW_ROLE); - this.state = 1892; - this.roleid(); - this.state = 1894; + this.state = 1073; + this.rolespec(); + this.state = 1075; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) { case 1: { - this.state = 1893; - this.opt_with(); + this.state = 1074; + this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1896; - this.optrolelist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_with(): Opt_withContext { - let localContext = new Opt_withContext(this.context, this.state); - this.enterRule(localContext, 14, PostgreSqlParser.RULE_opt_with); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1898; - this.match(PostgreSqlParser.KW_WITH); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public optrolelist(): OptrolelistContext { - let localContext = new OptrolelistContext(this.context, this.state); - this.enterRule(localContext, 16, PostgreSqlParser.RULE_optrolelist); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 1903; + this.state = 1080; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1900; + this.state = 1077; this.createoptroleelem(); } } } - this.state = 1905; + this.state = 1082; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context); } @@ -3055,59 +2447,20 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alteroptrolelist(): AlteroptrolelistContext { - let localContext = new AlteroptrolelistContext(this.context, this.state); - this.enterRule(localContext, 18, PostgreSqlParser.RULE_alteroptrolelist); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 1909; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 6, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 1906; - this.alteroptroleelem(); - } - } - } - this.state = 1911; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 6, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public alteroptroleelem(): AlteroptroleelemContext { let localContext = new AlteroptroleelemContext(this.context, this.state); - this.enterRule(localContext, 20, PostgreSqlParser.RULE_alteroptroleelem); + this.enterRule(localContext, 10, PostgreSqlParser.RULE_alteroptroleelem); let _la: number; try { - this.state = 1947; + this.state = 1121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 8, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_PASSWORD: this.enterOuterAlt(localContext, 1); { - this.state = 1912; + this.state = 1083; this.match(PostgreSqlParser.KW_PASSWORD); - this.state = 1915; + this.state = 1086; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -3115,13 +2468,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1913; + this.state = 1084; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 1914; + this.state = 1085; this.match(PostgreSqlParser.KW_NULL); } break; @@ -3130,10 +2483,11 @@ export class PostgreSqlParser extends SQLParserBase { } } break; - case 2: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_UNENCRYPTED: this.enterOuterAlt(localContext, 2); { - this.state = 1917; + this.state = 1088; _la = this.tokenStream.LA(1); if(!(_la === 195 || _la === 364)) { this.errorHandler.recoverInline(this); @@ -3142,202 +2496,270 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1918; + this.state = 1089; this.match(PostgreSqlParser.KW_PASSWORD); - this.state = 1919; + this.state = 1090; this.sconst(); } break; - case 3: + case PostgreSqlParser.KW_INHERIT: this.enterOuterAlt(localContext, 3); { - this.state = 1920; - _la = this.tokenStream.LA(1); - if(!(_la === 228 || _la === 229)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 1091; + this.match(PostgreSqlParser.KW_INHERIT); } break; - case 4: + case PostgreSqlParser.KW_NOINHERIT: this.enterOuterAlt(localContext, 4); { - this.state = 1921; - _la = this.tokenStream.LA(1); - if(!(_la === 236 || _la === 237)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 1092; + this.match(PostgreSqlParser.KW_NOINHERIT); } break; - case 5: + case PostgreSqlParser.KW_CREATEUSER: this.enterOuterAlt(localContext, 5); { - this.state = 1922; - _la = this.tokenStream.LA(1); - if(!(_la === 234 || _la === 235)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 1093; + this.match(PostgreSqlParser.KW_CREATEUSER); } break; - case 6: + case PostgreSqlParser.KW_NOCREATEUSER: this.enterOuterAlt(localContext, 6); { - this.state = 1923; - _la = this.tokenStream.LA(1); - if(!(_la === 232 || _la === 233)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 1094; + this.match(PostgreSqlParser.KW_NOCREATEUSER); } break; - case 7: + case PostgreSqlParser.KW_CREATEROLE: this.enterOuterAlt(localContext, 7); { - this.state = 1924; - _la = this.tokenStream.LA(1); - if(!(_la === 230 || _la === 231)) { - this.errorHandler.recoverInline(this); + this.state = 1095; + this.match(PostgreSqlParser.KW_CREATEROLE); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + break; + case PostgreSqlParser.KW_NOCREATEROLE: + this.enterOuterAlt(localContext, 8); + { + this.state = 1096; + this.match(PostgreSqlParser.KW_NOCREATEROLE); } + break; + case PostgreSqlParser.KW_CREATEDB: + this.enterOuterAlt(localContext, 9); + { + this.state = 1097; + this.match(PostgreSqlParser.KW_CREATEDB); } break; - case 8: - this.enterOuterAlt(localContext, 8); + case PostgreSqlParser.KW_NOCREATEDB: + this.enterOuterAlt(localContext, 10); { - this.state = 1925; - _la = this.tokenStream.LA(1); - if(!(_la === 535 || _la === 536)) { - this.errorHandler.recoverInline(this); + this.state = 1098; + this.match(PostgreSqlParser.KW_NOCREATEDB); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + break; + case PostgreSqlParser.KW_SUPERUSER: + this.enterOuterAlt(localContext, 11); + { + this.state = 1099; + this.match(PostgreSqlParser.KW_SUPERUSER); } + break; + case PostgreSqlParser.KW_NOSUPERUSER: + this.enterOuterAlt(localContext, 12); + { + this.state = 1100; + this.match(PostgreSqlParser.KW_NOSUPERUSER); } break; - case 9: - this.enterOuterAlt(localContext, 9); + case PostgreSqlParser.KW_LOGIN: + this.enterOuterAlt(localContext, 13); { - this.state = 1926; - _la = this.tokenStream.LA(1); - if(!(_la === 537 || _la === 538)) { - this.errorHandler.recoverInline(this); + this.state = 1101; + this.match(PostgreSqlParser.KW_LOGIN); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + break; + case PostgreSqlParser.KW_NOLOGIN: + this.enterOuterAlt(localContext, 14); + { + this.state = 1102; + this.match(PostgreSqlParser.KW_NOLOGIN); } + break; + case PostgreSqlParser.KW_REPLICATION: + this.enterOuterAlt(localContext, 15); + { + this.state = 1103; + this.match(PostgreSqlParser.KW_REPLICATION); } break; - case 10: - this.enterOuterAlt(localContext, 10); + case PostgreSqlParser.KW_NOREPLICATION: + this.enterOuterAlt(localContext, 16); { - this.state = 1927; - _la = this.tokenStream.LA(1); - if(!(_la === 539 || _la === 540)) { - this.errorHandler.recoverInline(this); + this.state = 1104; + this.match(PostgreSqlParser.KW_NOREPLICATION); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + break; + case PostgreSqlParser.KW_BYPASSRLS: + this.enterOuterAlt(localContext, 17); + { + this.state = 1105; + this.match(PostgreSqlParser.KW_BYPASSRLS); } + break; + case PostgreSqlParser.KW_NOBYPASSRLS: + this.enterOuterAlt(localContext, 18); + { + this.state = 1106; + this.match(PostgreSqlParser.KW_NOBYPASSRLS); } break; - case 11: - this.enterOuterAlt(localContext, 11); + case PostgreSqlParser.KW_CONNECTION: + this.enterOuterAlt(localContext, 19); { - this.state = 1928; + this.state = 1107; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 1929; + this.state = 1108; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 1930; + this.state = 1109; this.signediconst(); } break; - case 12: - this.enterOuterAlt(localContext, 12); + case PostgreSqlParser.KW_VALID: + this.enterOuterAlt(localContext, 20); { - this.state = 1931; + this.state = 1110; this.match(PostgreSqlParser.KW_VALID); - this.state = 1932; + this.state = 1111; this.match(PostgreSqlParser.KW_UNTIL); - this.state = 1933; + this.state = 1112; this.sconst(); } break; - case 13: - this.enterOuterAlt(localContext, 13); + case PostgreSqlParser.KW_IN: + this.enterOuterAlt(localContext, 21); { - this.state = 1934; + this.state = 1113; this.match(PostgreSqlParser.KW_IN); - this.state = 1935; - this.match(PostgreSqlParser.KW_ROLE); - this.state = 1936; - this.name_list(); + this.state = 1114; + _la = this.tokenStream.LA(1); + if(!(_la === 66 || _la === 318)) { + this.errorHandler.recoverInline(this); } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 1937; - this.match(PostgreSqlParser.KW_IN); - this.state = 1938; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 1939; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1115; this.name_list(); } break; - case 15: - this.enterOuterAlt(localContext, 15); + case PostgreSqlParser.KW_USER: + case PostgreSqlParser.KW_ROLE: + this.enterOuterAlt(localContext, 22); { - this.state = 1940; - this.match(PostgreSqlParser.KW_ROLE); - this.state = 1941; + this.state = 1116; + _la = this.tokenStream.LA(1); + if(!(_la === 99 || _la === 318)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1117; this.role_list(); } break; - case 16: - this.enterOuterAlt(localContext, 16); + case PostgreSqlParser.KW_ADMIN: + this.enterOuterAlt(localContext, 23); { - this.state = 1942; + this.state = 1118; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 1943; + this.state = 1119; this.name_list(); } break; - case 17: - this.enterOuterAlt(localContext, 17); - { - this.state = 1944; - this.match(PostgreSqlParser.KW_USER); - this.state = 1945; - this.role_list(); - } - break; - case 18: - this.enterOuterAlt(localContext, 18); + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + this.enterOuterAlt(localContext, 24); { - this.state = 1946; + this.state = 1120; this.identifier(); } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -3356,52 +2778,50 @@ export class PostgreSqlParser extends SQLParserBase { } public createoptroleelem(): CreateoptroleelemContext { let localContext = new CreateoptroleelemContext(this.context, this.state); - this.enterRule(localContext, 22, PostgreSqlParser.RULE_createoptroleelem); + this.enterRule(localContext, 12, PostgreSqlParser.RULE_createoptroleelem); let _la: number; try { - this.state = 1959; + this.state = 1131; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 8, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1949; + this.state = 1123; this.alteroptroleelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1950; + this.state = 1124; this.match(PostgreSqlParser.KW_SYSID); - this.state = 1951; - this.iconst(); + this.state = 1125; + this.match(PostgreSqlParser.Integral); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1952; - this.match(PostgreSqlParser.KW_ADMIN); - this.state = 1953; + this.state = 1126; + _la = this.tokenStream.LA(1); + if(!(_la === 134 || _la === 318)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1127; this.role_list(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1954; - this.match(PostgreSqlParser.KW_ROLE); - this.state = 1955; - this.role_list(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 1956; + this.state = 1128; this.match(PostgreSqlParser.KW_IN); - this.state = 1957; + this.state = 1129; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -3410,7 +2830,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1958; + this.state = 1130; this.role_list(); } break; @@ -3432,28 +2852,43 @@ export class PostgreSqlParser extends SQLParserBase { } public createuserstmt(): CreateuserstmtContext { let localContext = new CreateuserstmtContext(this.context, this.state); - this.enterRule(localContext, 24, PostgreSqlParser.RULE_createuserstmt); + this.enterRule(localContext, 14, PostgreSqlParser.RULE_createuserstmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1961; + this.state = 1133; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1962; + this.state = 1134; this.match(PostgreSqlParser.KW_USER); - this.state = 1963; - this.roleid(); - this.state = 1965; + this.state = 1135; + this.rolespec(); + this.state = 1137; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 10, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: { - this.state = 1964; - this.opt_with(); + this.state = 1136; + this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1967; - this.optrolelist(); + this.state = 1142; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1139; + this.createoptroleelem(); + } + } + } + this.state = 1144; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context); + } } } catch (re) { @@ -3472,14 +2907,15 @@ export class PostgreSqlParser extends SQLParserBase { } public alterrolestmt(): AlterrolestmtContext { let localContext = new AlterrolestmtContext(this.context, this.state); - this.enterRule(localContext, 26, PostgreSqlParser.RULE_alterrolestmt); + this.enterRule(localContext, 16, PostgreSqlParser.RULE_alterrolestmt); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1969; + this.state = 1145; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1970; + this.state = 1146; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -3488,63 +2924,34 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1971; + this.state = 1147; this.rolespec(); - this.state = 1973; + this.state = 1149; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 11, this.context) ) { case 1: { - this.state = 1972; - this.opt_with(); + this.state = 1148; + this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1975; - this.alteroptrolelist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_in_database(): Opt_in_databaseContext { - let localContext = new Opt_in_databaseContext(this.context, this.state); - this.enterRule(localContext, 28, PostgreSqlParser.RULE_opt_in_database); - try { - this.state = 1981; + this.state = 1154; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_IN: - this.enterOuterAlt(localContext, 2); - { - this.state = 1978; - this.match(PostgreSqlParser.KW_IN); - this.state = 1979; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 1980; - this.database_name(); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 12, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1151; + this.alteroptroleelem(); + } + } } - break; - default: - throw new antlr.NoViableAltException(this); + this.state = 1156; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 12, this.context); + } } } catch (re) { @@ -3563,14 +2970,14 @@ export class PostgreSqlParser extends SQLParserBase { } public alterrolesetstmt(): AlterrolesetstmtContext { let localContext = new AlterrolesetstmtContext(this.context, this.state); - this.enterRule(localContext, 30, PostgreSqlParser.RULE_alterrolesetstmt); + this.enterRule(localContext, 18, PostgreSqlParser.RULE_alterrolesetstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1983; + this.state = 1157; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1984; + this.state = 1158; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -3579,12 +2986,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1987; + this.state = 1161; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1985; + this.state = 1159; this.match(PostgreSqlParser.KW_ALL); } break; @@ -4013,16 +3420,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1986; + this.state = 1160; this.rolespec(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1989; - this.opt_in_database(); - this.state = 1990; + this.state = 1163; + this.match(PostgreSqlParser.KW_IN); + this.state = 1164; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 1165; + this.database_name(); + this.state = 1166; this.setresetclause(); } } @@ -4042,28 +3453,28 @@ export class PostgreSqlParser extends SQLParserBase { } public alterroutinestmt(): AlterroutinestmtContext { let localContext = new AlterroutinestmtContext(this.context, this.state); - this.enterRule(localContext, 32, PostgreSqlParser.RULE_alterroutinestmt); + this.enterRule(localContext, 20, PostgreSqlParser.RULE_alterroutinestmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1992; + this.state = 1168; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1993; + this.state = 1169; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 1994; + this.state = 1170; this.routine_name(); - this.state = 1996; + this.state = 1172; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 1995; + this.state = 1171; this.func_args(); } } - this.state = 1998; + this.state = 1174; this.alter_routine_cluase(); } } @@ -4083,23 +3494,40 @@ export class PostgreSqlParser extends SQLParserBase { } public alter_routine_cluase(): Alter_routine_cluaseContext { let localContext = new Alter_routine_cluaseContext(this.context, this.state); - this.enterRule(localContext, 34, PostgreSqlParser.RULE_alter_routine_cluase); + this.enterRule(localContext, 22, PostgreSqlParser.RULE_alter_routine_cluase); let _la: number; try { - this.state = 2020; + let alternative: number; + this.state = 1202; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 17, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2000; - this.routine_action_list(); - this.state = 2002; + this.state = 1176; + this.routine_action(); + this.state = 1180; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1177; + this.routine_action(); + } + } + } + this.state = 1182; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); + } + this.state = 1184; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 15, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 16, this.context) ) { case 1: { - this.state = 2001; + this.state = 1183; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -4109,57 +3537,57 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2004; + this.state = 1186; this.match(PostgreSqlParser.KW_RENAME); - this.state = 2005; + this.state = 1187; this.match(PostgreSqlParser.KW_TO); - this.state = 2006; + this.state = 1188; this.routine_name_create(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2007; + this.state = 1189; this.match(PostgreSqlParser.KW_OWNER); - this.state = 2008; + this.state = 1190; this.match(PostgreSqlParser.KW_TO); - this.state = 2009; + this.state = 1191; this.rolespec(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2010; + this.state = 1192; this.match(PostgreSqlParser.KW_SET); - this.state = 2011; + this.state = 1193; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 2012; + this.state = 1194; this.schema_name_create(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2014; + this.state = 1196; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 2013; + this.state = 1195; this.match(PostgreSqlParser.KW_NO); } } - this.state = 2016; + this.state = 1198; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 2017; + this.state = 1199; this.match(PostgreSqlParser.KW_ON); - this.state = 2018; + this.state = 1200; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2019; - this.name(); + this.state = 1201; + this.colid(); } break; } @@ -4178,132 +3606,91 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public routine_action_list(): Routine_action_listContext { - let localContext = new Routine_action_listContext(this.context, this.state); - this.enterRule(localContext, 36, PostgreSqlParser.RULE_routine_action_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2022; - this.routine_action(); - this.state = 2026; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 18, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 2023; - this.routine_action(); - } - } - } - this.state = 2028; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 18, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public routine_action(): Routine_actionContext { let localContext = new Routine_actionContext(this.context, this.state); - this.enterRule(localContext, 38, PostgreSqlParser.RULE_routine_action); + this.enterRule(localContext, 24, PostgreSqlParser.RULE_routine_action); let _la: number; try { - this.state = 2070; + this.state = 1246; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 24, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2029; + this.state = 1204; this.match(PostgreSqlParser.KW_IMMUTABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2030; + this.state = 1205; this.match(PostgreSqlParser.KW_STABLE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2031; + this.state = 1206; this.match(PostgreSqlParser.KW_VOLATILE); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2033; + this.state = 1208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2032; + this.state = 1207; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2035; + this.state = 1210; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2046; + this.state = 1221; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { case 1: { - this.state = 2037; + this.state = 1212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 2036; + this.state = 1211; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 2039; + this.state = 1214; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 2040; + this.state = 1215; this.match(PostgreSqlParser.KW_INVOKER); } break; case 2: { - this.state = 2042; + this.state = 1217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 2041; + this.state = 1216; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 2044; + this.state = 1219; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 2045; + this.state = 1220; this.match(PostgreSqlParser.KW_DEFINER); } break; @@ -4313,9 +3700,9 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2048; + this.state = 1223; this.match(PostgreSqlParser.KW_PARALLEL); - this.state = 2049; + this.state = 1224; _la = this.tokenStream.LA(1); if(!(((((_la - 529)) & ~0x1F) === 0 && ((1 << (_la - 529)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -4329,29 +3716,29 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2050; + this.state = 1225; this.match(PostgreSqlParser.KW_COST); - this.state = 2051; - this.attr_name(); + this.state = 1226; + this.collabel(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2052; + this.state = 1227; this.match(PostgreSqlParser.KW_ROWS); - this.state = 2053; - this.name(); + this.state = 1228; + this.colid(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2054; + this.state = 1229; this.match(PostgreSqlParser.KW_SET); - this.state = 2055; - this.name(); - this.state = 2056; + this.state = 1230; + this.colid(); + this.state = 1231; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -4360,18 +3747,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2059; + this.state = 1234; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 23, this.context) ) { case 1: { - this.state = 2057; - this.name(); + this.state = 1232; + this.colid(); } break; case 2: { - this.state = 2058; + this.state = 1233; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -4381,450 +3768,444 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 2061; + this.state = 1236; this.match(PostgreSqlParser.KW_SET); - this.state = 2062; - this.name(); - this.state = 2063; + this.state = 1237; + this.colid(); + this.state = 1238; this.match(PostgreSqlParser.KW_FROM); - this.state = 2064; + this.state = 1239; this.match(PostgreSqlParser.KW_CURRENT); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 2066; - this.match(PostgreSqlParser.KW_RESET); - this.state = 2067; - this.name(); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 2068; + this.state = 1241; this.match(PostgreSqlParser.KW_RESET); - this.state = 2069; - this.match(PostgreSqlParser.KW_ALL); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public creategroupstmt(): CreategroupstmtContext { - let localContext = new CreategroupstmtContext(this.context, this.state); - this.enterRule(localContext, 40, PostgreSqlParser.RULE_creategroupstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2072; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 2073; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 2074; - this.groupname(); - this.state = 2076; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { - case 1: - { - this.state = 2075; - this.opt_with(); - } - break; - } - this.state = 2078; - this.optrolelist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public altergroupstmt(): AltergroupstmtContext { - let localContext = new AltergroupstmtContext(this.context, this.state); - this.enterRule(localContext, 42, PostgreSqlParser.RULE_altergroupstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2080; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2081; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 2082; - this.rolespec(); - this.state = 2083; - this.add_drop(); - this.state = 2084; - this.match(PostgreSqlParser.KW_USER); - this.state = 2085; - this.role_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public add_drop(): Add_dropContext { - let localContext = new Add_dropContext(this.context, this.state); - this.enterRule(localContext, 44, PostgreSqlParser.RULE_add_drop); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2087; - _la = this.tokenStream.LA(1); - if(!(_la === 133 || _la === 191)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createschemastmt(): CreateschemastmtContext { - let localContext = new CreateschemastmtContext(this.context, this.state); - this.enterRule(localContext, 46, PostgreSqlParser.RULE_createschemastmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2089; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 2090; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 2092; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { - case 1: - { - this.state = 2091; - this.opt_if_not_exists(); - } - break; - } - this.state = 2100; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { - case 1: - { - this.state = 2095; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 2094; - this.schema_name_create(); - } - } - - this.state = 2097; - this.match(PostgreSqlParser.KW_AUTHORIZATION); - this.state = 2098; - this.rolespec(); - } - break; - case 2: - { - this.state = 2099; - this.schema_name_create(); - } - break; - } - this.state = 2102; - this.optschemaeltlist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public schema_name_create(): Schema_name_createContext { - let localContext = new Schema_name_createContext(this.context, this.state); - this.enterRule(localContext, 48, PostgreSqlParser.RULE_schema_name_create); - let _la: number; - try { - localContext = new SchemaNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2104; - this.colid(); - this.state = 2106; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 11) { - { - this.state = 2105; - this.attrs(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public optschemaeltlist(): OptschemaeltlistContext { - let localContext = new OptschemaeltlistContext(this.context, this.state); - this.enterRule(localContext, 50, PostgreSqlParser.RULE_optschemaeltlist); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2111; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 30, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 2108; - this.schema_stmt(); - } - } - } - this.state = 2113; + this.state = 1244; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 30, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public schema_stmt(): Schema_stmtContext { - let localContext = new Schema_stmtContext(this.context, this.state); - this.enterRule(localContext, 52, PostgreSqlParser.RULE_schema_stmt); - try { - this.state = 2120; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 2114; - this.createstmt(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2115; - this.indexstmt(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2116; - this.createseqstmt(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 2117; - this.createtrigstmt(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 2118; - this.grantstmt(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 2119; - this.viewstmt(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public variablesetstmt(): VariablesetstmtContext { - let localContext = new VariablesetstmtContext(this.context, this.state); - this.enterRule(localContext, 54, PostgreSqlParser.RULE_variablesetstmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2122; - this.match(PostgreSqlParser.KW_SET); - this.state = 2124; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { - case 1: - { - this.state = 2123; - _la = this.tokenStream.LA(1); - if(!(_la === 254 || _la === 332)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - } - this.state = 2126; - this.set_rest(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public set_rest(): Set_restContext { - let localContext = new Set_restContext(this.context, this.state); - this.enterRule(localContext, 56, PostgreSqlParser.RULE_set_rest); - try { - this.state = 2136; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 2128; - this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 2129; - this.transaction_mode_list(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2130; - this.match(PostgreSqlParser.KW_SESSION); - this.state = 2131; - this.match(PostgreSqlParser.KW_CHARACTERISTICS); - this.state = 2132; - this.match(PostgreSqlParser.KW_AS); - this.state = 2133; - this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 2134; - this.transaction_mode_list(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2135; - this.set_rest_more(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 1242; + this.colid(); + } + break; + case PostgreSqlParser.KW_ALL: + { + this.state = 1243; + this.match(PostgreSqlParser.KW_ALL); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; this.errorHandler.reportError(this, re); this.errorHandler.recover(this, re); } else { @@ -4836,20 +4217,387 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public generic_set(): Generic_setContext { - let localContext = new Generic_setContext(this.context, this.state); - this.enterRule(localContext, 58, PostgreSqlParser.RULE_generic_set); + public creategroupstmt(): CreategroupstmtContext { + let localContext = new CreategroupstmtContext(this.context, this.state); + this.enterRule(localContext, 26, PostgreSqlParser.RULE_creategroupstmt); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 1248; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 1249; + this.match(PostgreSqlParser.KW_GROUP); + this.state = 1250; + this.rolespec(); + this.state = 1252; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { + case 1: + { + this.state = 1251; + this.match(PostgreSqlParser.KW_WITH); + } + break; + } + this.state = 1257; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1254; + this.createoptroleelem(); + } + } + } + this.state = 1259; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public altergroupstmt(): AltergroupstmtContext { + let localContext = new AltergroupstmtContext(this.context, this.state); + this.enterRule(localContext, 28, PostgreSqlParser.RULE_altergroupstmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1260; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1261; + this.match(PostgreSqlParser.KW_GROUP); + this.state = 1262; + this.rolespec(); + this.state = 1263; + _la = this.tokenStream.LA(1); + if(!(_la === 133 || _la === 191)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1264; + this.match(PostgreSqlParser.KW_USER); + this.state = 1265; + this.role_list(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createschemastmt(): CreateschemastmtContext { + let localContext = new CreateschemastmtContext(this.context, this.state); + this.enterRule(localContext, 30, PostgreSqlParser.RULE_createschemastmt); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2140; + this.state = 1267; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 1268; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 1270; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ALL: + switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { + case 1: { - this.state = 2138; - this.match(PostgreSqlParser.KW_ALL); + this.state = 1269; + this.opt_if_not_exists(); + } + break; + } + this.state = 1278; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { + case 1: + { + this.state = 1273; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 1272; + this.schema_name_create(); + } + } + + this.state = 1275; + this.match(PostgreSqlParser.KW_AUTHORIZATION); + this.state = 1276; + this.rolespec(); + } + break; + case 2: + { + this.state = 1277; + this.schema_name_create(); + } + break; + } + this.state = 1283; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1280; + this.schema_stmt(); + } + } + } + this.state = 1285; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public schema_name_create(): Schema_name_createContext { + let localContext = new Schema_name_createContext(this.context, this.state); + this.enterRule(localContext, 32, PostgreSqlParser.RULE_schema_name_create); + try { + localContext = new SchemaNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 1286; + this.any_name(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public schema_stmt(): Schema_stmtContext { + let localContext = new Schema_stmtContext(this.context, this.state); + this.enterRule(localContext, 34, PostgreSqlParser.RULE_schema_stmt); + try { + this.state = 1294; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 1288; + this.createstmt(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 1289; + this.indexstmt(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 1290; + this.createseqstmt(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 1291; + this.createtrigstmt(); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 1292; + this.grantstmt(); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 1293; + this.viewstmt(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public variablesetstmt(): VariablesetstmtContext { + let localContext = new VariablesetstmtContext(this.context, this.state); + this.enterRule(localContext, 36, PostgreSqlParser.RULE_variablesetstmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1296; + this.match(PostgreSqlParser.KW_SET); + this.state = 1298; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { + case 1: + { + this.state = 1297; + _la = this.tokenStream.LA(1); + if(!(_la === 254 || _la === 332)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 1300; + this.set_rest(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public set_rest(): Set_restContext { + let localContext = new Set_restContext(this.context, this.state); + this.enterRule(localContext, 38, PostgreSqlParser.RULE_set_rest); + try { + this.state = 1310; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 1302; + this.match(PostgreSqlParser.KW_TRANSACTION); + this.state = 1303; + this.transaction_mode_list(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 1304; + this.match(PostgreSqlParser.KW_SESSION); + this.state = 1305; + this.match(PostgreSqlParser.KW_CHARACTERISTICS); + this.state = 1306; + this.match(PostgreSqlParser.KW_AS); + this.state = 1307; + this.match(PostgreSqlParser.KW_TRANSACTION); + this.state = 1308; + this.transaction_mode_list(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 1309; + this.set_rest_more(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public generic_set(): Generic_setContext { + let localContext = new Generic_setContext(this.context, this.state); + this.enterRule(localContext, 40, PostgreSqlParser.RULE_generic_set); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1314; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ALL: + { + this.state = 1312; + this.match(PostgreSqlParser.KW_ALL); } break; case PostgreSqlParser.KW_AND: @@ -5252,19 +5000,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2139; + this.state = 1313; this.var_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2143; + this.state = 1317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 94) { { - this.state = 2142; + this.state = 1316; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -5276,18 +5024,18 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 2147; + this.state = 1321; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 36, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { case 1: { - this.state = 2145; + this.state = 1319; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 2: { - this.state = 2146; + this.state = 1320; this.var_list(); } break; @@ -5310,52 +5058,58 @@ export class PostgreSqlParser extends SQLParserBase { } public set_rest_more(): Set_rest_moreContext { let localContext = new Set_rest_moreContext(this.context, this.state); - this.enterRule(localContext, 60, PostgreSqlParser.RULE_set_rest_more); + this.enterRule(localContext, 42, PostgreSqlParser.RULE_set_rest_more); try { - this.state = 2176; + this.state = 1351; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 38, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2149; + this.state = 1323; this.match(PostgreSqlParser.KW_TIME); - this.state = 2150; + this.state = 1324; this.match(PostgreSqlParser.KW_ZONE); - this.state = 2151; + this.state = 1325; this.zone_value(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2152; + this.state = 1326; this.match(PostgreSqlParser.KW_CATALOG); - this.state = 2153; + this.state = 1327; this.sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2154; + this.state = 1328; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 2155; + this.state = 1329; this.schema_name(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2156; + this.state = 1330; this.match(PostgreSqlParser.KW_NAMES); - this.state = 2158; + this.state = 1333; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 38, this.context) ) { case 1: { - this.state = 2157; - this.opt_encoding(); + this.state = 1331; + this.sconst(); + } + break; + case 2: + { + this.state = 1332; + this.match(PostgreSqlParser.KW_DEFAULT); } break; } @@ -5364,60 +5118,60 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2160; + this.state = 1335; this.match(PostgreSqlParser.KW_ROLE); - this.state = 2161; + this.state = 1336; this.nonreservedword_or_sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2162; + this.state = 1337; this.match(PostgreSqlParser.KW_SESSION); - this.state = 2163; + this.state = 1338; this.match(PostgreSqlParser.KW_AUTHORIZATION); - this.state = 2164; + this.state = 1339; this.nonreservedword_or_sconst(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2165; + this.state = 1340; this.match(PostgreSqlParser.KW_XML); - this.state = 2166; + this.state = 1341; this.match(PostgreSqlParser.KW_OPTION); - this.state = 2167; + this.state = 1342; this.document_or_content(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2168; + this.state = 1343; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 2169; + this.state = 1344; this.match(PostgreSqlParser.KW_SNAPSHOT); - this.state = 2170; + this.state = 1345; this.sconst(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2171; + this.state = 1346; this.var_name(); - this.state = 2172; + this.state = 1347; this.match(PostgreSqlParser.KW_FROM); - this.state = 2173; + this.state = 1348; this.match(PostgreSqlParser.KW_CURRENT); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 2175; + this.state = 1350; this.generic_set(); } break; @@ -5439,26 +5193,26 @@ export class PostgreSqlParser extends SQLParserBase { } public var_name(): Var_nameContext { let localContext = new Var_nameContext(this.context, this.state); - this.enterRule(localContext, 62, PostgreSqlParser.RULE_var_name); + this.enterRule(localContext, 44, PostgreSqlParser.RULE_var_name); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2178; + this.state = 1353; this.colid(); - this.state = 2183; + this.state = 1358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11) { { { - this.state = 2179; + this.state = 1354; this.match(PostgreSqlParser.DOT); - this.state = 2180; + this.state = 1355; this.colid(); } } - this.state = 2185; + this.state = 1360; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5480,26 +5234,26 @@ export class PostgreSqlParser extends SQLParserBase { } public var_list(): Var_listContext { let localContext = new Var_listContext(this.context, this.state); - this.enterRule(localContext, 64, PostgreSqlParser.RULE_var_list); + this.enterRule(localContext, 46, PostgreSqlParser.RULE_var_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2186; + this.state = 1361; this.var_value(); - this.state = 2191; + this.state = 1366; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2187; + this.state = 1362; this.match(PostgreSqlParser.COMMA); - this.state = 2188; + this.state = 1363; this.var_value(); } } - this.state = 2193; + this.state = 1368; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5521,9 +5275,9 @@ export class PostgreSqlParser extends SQLParserBase { } public var_value(): Var_valueContext { let localContext = new Var_valueContext(this.context, this.state); - this.enterRule(localContext, 66, PostgreSqlParser.RULE_var_value); + this.enterRule(localContext, 48, PostgreSqlParser.RULE_var_value); try { - this.state = 2196; + this.state = 1371; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AND: @@ -5951,7 +5705,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 2194; + this.state = 1369; this.opt_boolean_or_string(); } break; @@ -5961,7 +5715,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Numeric: this.enterOuterAlt(localContext, 2); { - this.state = 2195; + this.state = 1370; this.numericonly(); } break; @@ -5985,18 +5739,18 @@ export class PostgreSqlParser extends SQLParserBase { } public iso_level(): Iso_levelContext { let localContext = new Iso_levelContext(this.context, this.state); - this.enterRule(localContext, 68, PostgreSqlParser.RULE_iso_level); + this.enterRule(localContext, 50, PostgreSqlParser.RULE_iso_level); let _la: number; try { - this.state = 2203; + this.state = 1378; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_READ: this.enterOuterAlt(localContext, 1); { - this.state = 2198; + this.state = 1373; this.match(PostgreSqlParser.KW_READ); - this.state = 2199; + this.state = 1374; _la = this.tokenStream.LA(1); if(!(_la === 162 || _la === 363)) { this.errorHandler.recoverInline(this); @@ -6010,16 +5764,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_REPEATABLE: this.enterOuterAlt(localContext, 2); { - this.state = 2200; + this.state = 1375; this.match(PostgreSqlParser.KW_REPEATABLE); - this.state = 2201; + this.state = 1376; this.match(PostgreSqlParser.KW_READ); } break; case PostgreSqlParser.KW_SERIALIZABLE: this.enterOuterAlt(localContext, 3); { - this.state = 2202; + this.state = 1377; this.match(PostgreSqlParser.KW_SERIALIZABLE); } break; @@ -6043,37 +5797,51 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_boolean_or_string_column(): Opt_boolean_or_string_columnContext { let localContext = new Opt_boolean_or_string_columnContext(this.context, this.state); - this.enterRule(localContext, 70, PostgreSqlParser.RULE_opt_boolean_or_string_column); + this.enterRule(localContext, 52, PostgreSqlParser.RULE_opt_boolean_or_string_column); try { - this.state = 2209; + this.state = 1386; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2205; + this.state = 1380; this.match(PostgreSqlParser.KW_TRUE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2206; + this.state = 1381; this.match(PostgreSqlParser.KW_FALSE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2207; + this.state = 1382; this.match(PostgreSqlParser.KW_ON); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2208; - this.nonreservedword_or_sconst_column(); + this.state = 1383; + this.column_name(); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 1384; + this.type_func_name_keyword(); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 1385; + this.sconst(); } break; } @@ -6094,29 +5862,29 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_boolean_or_string(): Opt_boolean_or_stringContext { let localContext = new Opt_boolean_or_stringContext(this.context, this.state); - this.enterRule(localContext, 72, PostgreSqlParser.RULE_opt_boolean_or_string); + this.enterRule(localContext, 54, PostgreSqlParser.RULE_opt_boolean_or_string); try { - this.state = 2215; + this.state = 1392; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TRUE: this.enterOuterAlt(localContext, 1); { - this.state = 2211; + this.state = 1388; this.match(PostgreSqlParser.KW_TRUE); } break; case PostgreSqlParser.KW_FALSE: this.enterOuterAlt(localContext, 2); { - this.state = 2212; + this.state = 1389; this.match(PostgreSqlParser.KW_FALSE); } break; case PostgreSqlParser.KW_ON: this.enterOuterAlt(localContext, 3); { - this.state = 2213; + this.state = 1390; this.match(PostgreSqlParser.KW_ON); } break; @@ -6542,7 +6310,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 4); { - this.state = 2214; + this.state = 1391; this.nonreservedword_or_sconst(); } break; @@ -6566,77 +6334,73 @@ export class PostgreSqlParser extends SQLParserBase { } public zone_value(): Zone_valueContext { let localContext = new Zone_valueContext(this.context, this.state); - this.enterRule(localContext, 74, PostgreSqlParser.RULE_zone_value); + this.enterRule(localContext, 56, PostgreSqlParser.RULE_zone_value); try { - this.state = 2233; + this.state = 1408; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 46, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2217; + this.state = 1394; this.sconst(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2218; - this.identifier(); + this.state = 1395; + this.match(PostgreSqlParser.KW_DEFAULT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2219; - this.constinterval(); - this.state = 2220; + this.state = 1396; + this.identifier(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 1397; + this.match(PostgreSqlParser.KW_INTERVAL); + this.state = 1398; this.sconst(); - this.state = 2222; + this.state = 1400; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 46, this.context) ) { case 1: { - this.state = 2221; + this.state = 1399; this.opt_interval(); } break; } } break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 2224; - this.constinterval(); - this.state = 2225; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2226; - this.iconst(); - this.state = 2227; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2228; - this.sconst(); - } - break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2230; - this.numericonly(); + this.state = 1402; + this.match(PostgreSqlParser.KW_INTERVAL); + this.state = 1403; + this.opt_float(); + this.state = 1404; + this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2231; - this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 1406; + this.numericonly(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2232; + this.state = 1407; this.match(PostgreSqlParser.KW_LOCAL); } break; @@ -6656,32 +6420,27 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_encoding(): Opt_encodingContext { - let localContext = new Opt_encodingContext(this.context, this.state); - this.enterRule(localContext, 76, PostgreSqlParser.RULE_opt_encoding); + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext { + let localContext = new Nonreservedword_or_sconstContext(this.context, this.state); + this.enterRule(localContext, 58, PostgreSqlParser.RULE_nonreservedword_or_sconst); try { - this.state = 2237; + this.state = 1412; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: + switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2235; - this.sconst(); + this.state = 1410; + this.nonreservedword(); } break; - case PostgreSqlParser.KW_DEFAULT: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2236; - this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 1411; + this.sconst(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -6698,25 +6457,80 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public nonreservedword_or_sconst_column(): Nonreservedword_or_sconst_columnContext { - let localContext = new Nonreservedword_or_sconst_columnContext(this.context, this.state); - this.enterRule(localContext, 78, PostgreSqlParser.RULE_nonreservedword_or_sconst_column); + public variableresetstmt(): VariableresetstmtContext { + let localContext = new VariableresetstmtContext(this.context, this.state); + this.enterRule(localContext, 60, PostgreSqlParser.RULE_variableresetstmt); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1414; + this.match(PostgreSqlParser.KW_RESET); + this.state = 1415; + this.reset_rest(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public reset_rest(): Reset_restContext { + let localContext = new Reset_restContext(this.context, this.state); + this.enterRule(localContext, 62, PostgreSqlParser.RULE_reset_rest); try { - this.state = 2241; + this.state = 1426; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2239; - this.nonreservedword_column(); + this.state = 1417; + this.match(PostgreSqlParser.KW_TIME); + this.state = 1418; + this.match(PostgreSqlParser.KW_ZONE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2240; - this.sconst(); + this.state = 1419; + this.match(PostgreSqlParser.KW_TRANSACTION); + this.state = 1420; + this.match(PostgreSqlParser.KW_ISOLATION); + this.state = 1421; + this.match(PostgreSqlParser.KW_LEVEL); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 1422; + this.match(PostgreSqlParser.KW_SESSION); + this.state = 1423; + this.match(PostgreSqlParser.KW_AUTHORIZATION); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 1424; + this.match(PostgreSqlParser.KW_ALL); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 1425; + this.var_name(); } break; } @@ -6735,27 +6549,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext { - let localContext = new Nonreservedword_or_sconstContext(this.context, this.state); - this.enterRule(localContext, 80, PostgreSqlParser.RULE_nonreservedword_or_sconst); + public setresetclause(): SetresetclauseContext { + let localContext = new SetresetclauseContext(this.context, this.state); + this.enterRule(localContext, 64, PostgreSqlParser.RULE_setresetclause); try { - this.state = 2245; + this.state = 1431; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 2243; - this.nonreservedword(); + this.state = 1428; + this.match(PostgreSqlParser.KW_SET); + this.state = 1429; + this.set_rest(); } break; - case 2: + case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 2244; - this.sconst(); + this.state = 1430; + this.variableresetstmt(); } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -6772,16 +6590,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public variableresetstmt(): VariableresetstmtContext { - let localContext = new VariableresetstmtContext(this.context, this.state); - this.enterRule(localContext, 82, PostgreSqlParser.RULE_variableresetstmt); + public functionsetresetclause(): FunctionsetresetclauseContext { + let localContext = new FunctionsetresetclauseContext(this.context, this.state); + this.enterRule(localContext, 66, PostgreSqlParser.RULE_functionsetresetclause); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2247; - this.match(PostgreSqlParser.KW_RESET); - this.state = 2248; - this.reset_rest(); + this.state = 1436; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SET: + this.enterOuterAlt(localContext, 1); + { + this.state = 1433; + this.match(PostgreSqlParser.KW_SET); + this.state = 1434; + this.set_rest_more(); + } + break; + case PostgreSqlParser.KW_RESET: + this.enterOuterAlt(localContext, 2); + { + this.state = 1435; + this.variableresetstmt(); + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -6798,50 +6631,57 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public reset_rest(): Reset_restContext { - let localContext = new Reset_restContext(this.context, this.state); - this.enterRule(localContext, 84, PostgreSqlParser.RULE_reset_rest); + public variableshowstmt(): VariableshowstmtContext { + let localContext = new VariableshowstmtContext(this.context, this.state); + this.enterRule(localContext, 68, PostgreSqlParser.RULE_variableshowstmt); try { - this.state = 2258; + this.enterOuterAlt(localContext, 1); + { + this.state = 1438; + this.match(PostgreSqlParser.KW_SHOW); + this.state = 1448; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 50, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 2250; + this.state = 1439; + this.var_name(); + } + break; + case 2: + { + this.state = 1440; this.match(PostgreSqlParser.KW_TIME); - this.state = 2251; + this.state = 1441; this.match(PostgreSqlParser.KW_ZONE); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 3: { - this.state = 2252; + this.state = 1442; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 2253; + this.state = 1443; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 2254; + this.state = 1444; this.match(PostgreSqlParser.KW_LEVEL); } break; - case 3: - this.enterOuterAlt(localContext, 3); + case 4: { - this.state = 2255; + this.state = 1445; this.match(PostgreSqlParser.KW_SESSION); - this.state = 2256; + this.state = 1446; this.match(PostgreSqlParser.KW_AUTHORIZATION); } break; - case 4: - this.enterOuterAlt(localContext, 4); + case 5: { - this.state = 2257; - this.generic_reset(); + this.state = 1447; + this.match(PostgreSqlParser.KW_ALL); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -6857,17 +6697,23 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public generic_reset(): Generic_resetContext { - let localContext = new Generic_resetContext(this.context, this.state); - this.enterRule(localContext, 86, PostgreSqlParser.RULE_generic_reset); + public constraintssetstmt(): ConstraintssetstmtContext { + let localContext = new ConstraintssetstmtContext(this.context, this.state); + this.enterRule(localContext, 70, PostgreSqlParser.RULE_constraintssetstmt); + let _la: number; try { - this.state = 2262; + this.enterOuterAlt(localContext, 1); + { + this.state = 1450; + this.match(PostgreSqlParser.KW_SET); + this.state = 1451; + this.match(PostgreSqlParser.KW_CONSTRAINTS); + this.state = 1454; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: - this.enterOuterAlt(localContext, 1); { - this.state = 2260; + this.state = 1452; this.match(PostgreSqlParser.KW_ALL); } break; @@ -7270,15 +7116,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 2); { - this.state = 2261; - this.var_name(); + this.state = 1453; + this.qualified_name_list(); } break; default: throw new antlr.NoViableAltException(this); } + this.state = 1456; + _la = this.tokenStream.LA(1); + if(!(_la === 180 || _la === 221)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -7294,31 +7149,14 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public setresetclause(): SetresetclauseContext { - let localContext = new SetresetclauseContext(this.context, this.state); - this.enterRule(localContext, 88, PostgreSqlParser.RULE_setresetclause); + public checkpointstmt(): CheckpointstmtContext { + let localContext = new CheckpointstmtContext(this.context, this.state); + this.enterRule(localContext, 72, PostgreSqlParser.RULE_checkpointstmt); try { - this.state = 2267; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - { - this.state = 2264; - this.match(PostgreSqlParser.KW_SET); - this.state = 2265; - this.set_rest(); - } - break; - case PostgreSqlParser.KW_RESET: - this.enterOuterAlt(localContext, 2); - { - this.state = 2266; - this.variableresetstmt(); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.enterOuterAlt(localContext, 1); + { + this.state = 1458; + this.match(PostgreSqlParser.KW_CHECKPOINT); } } catch (re) { @@ -7335,31 +7173,24 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public functionsetresetclause(): FunctionsetresetclauseContext { - let localContext = new FunctionsetresetclauseContext(this.context, this.state); - this.enterRule(localContext, 90, PostgreSqlParser.RULE_functionsetresetclause); + public discardstmt(): DiscardstmtContext { + let localContext = new DiscardstmtContext(this.context, this.state); + this.enterRule(localContext, 74, PostgreSqlParser.RULE_discardstmt); + let _la: number; try { - this.state = 2272; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - { - this.state = 2269; - this.match(PostgreSqlParser.KW_SET); - this.state = 2270; - this.set_rest_more(); - } - break; - case PostgreSqlParser.KW_RESET: - this.enterOuterAlt(localContext, 2); - { - this.state = 2271; - this.variableresetstmt(); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.enterOuterAlt(localContext, 1); + { + this.state = 1460; + this.match(PostgreSqlParser.KW_DISCARD); + this.state = 1461; + _la = this.tokenStream.LA(1); + if(!(_la === 30 || _la === 288 || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 41943041) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } catch (re) { @@ -7376,523 +7207,430 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public variableshowstmt(): VariableshowstmtContext { - let localContext = new VariableshowstmtContext(this.context, this.state); - this.enterRule(localContext, 92, PostgreSqlParser.RULE_variableshowstmt); + public altertablestmt(): AltertablestmtContext { + let localContext = new AltertablestmtContext(this.context, this.state); + this.enterRule(localContext, 76, PostgreSqlParser.RULE_altertablestmt); + let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2274; - this.match(PostgreSqlParser.KW_SHOW); - this.state = 2284; + this.state = 1584; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 2275; - this.var_name(); + this.state = 1463; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1464; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 1466; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { + case 1: + { + this.state = 1465; + this.opt_if_exists(); + } + break; + } + this.state = 1468; + this.relation_expr(); + this.state = 1471; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_VALIDATE: + { + this.state = 1469; + this.alter_table_cmds(); + } + break; + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + { + this.state = 1470; + this.partition_cmd(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 2276; - this.match(PostgreSqlParser.KW_TIME); - this.state = 2277; - this.match(PostgreSqlParser.KW_ZONE); + this.state = 1473; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1474; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 1475; + this.match(PostgreSqlParser.KW_ALL); + this.state = 1476; + this.match(PostgreSqlParser.KW_IN); + this.state = 1477; + this.opttablespace(); + this.state = 1481; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 281) { + { + this.state = 1478; + this.match(PostgreSqlParser.KW_OWNED); + this.state = 1479; + this.match(PostgreSqlParser.KW_BY); + this.state = 1480; + this.role_list(); + } + } + + this.state = 1483; + this.match(PostgreSqlParser.KW_SET); + this.state = 1484; + this.match(PostgreSqlParser.KW_TABLESPACE); + this.state = 1485; + this.tablespace_name_create(); + this.state = 1487; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { + case 1: + { + this.state = 1486; + this.match(PostgreSqlParser.KW_NOWAIT); + } + break; + } } break; case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 2278; - this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 2279; - this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 2280; - this.match(PostgreSqlParser.KW_LEVEL); + this.state = 1489; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1490; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 1492; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { + case 1: + { + this.state = 1491; + this.opt_if_exists(); + } + break; + } + this.state = 1494; + this.table_name(); + this.state = 1495; + this.index_partition_cmd(); + this.state = 1500; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FOR: + { + this.state = 1496; + this.match(PostgreSqlParser.KW_FOR); + this.state = 1497; + this.match(PostgreSqlParser.KW_VALUES); + this.state = 1498; + this.partition_bound_spec(); + } + break; + case PostgreSqlParser.KW_DEFAULT: + { + this.state = 1499; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 2281; - this.match(PostgreSqlParser.KW_SESSION); - this.state = 2282; - this.match(PostgreSqlParser.KW_AUTHORIZATION); + this.state = 1502; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1503; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 1505; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { + case 1: + { + this.state = 1504; + this.opt_if_exists(); + } + break; + } + this.state = 1507; + this.table_name(); + this.state = 1508; + this.match(PostgreSqlParser.KW_DETACH); + this.state = 1509; + this.match(PostgreSqlParser.KW_PARTITION); + this.state = 1510; + this.qualified_name(); + this.state = 1512; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 109 || _la === 532) { + { + this.state = 1511; + _la = this.tokenStream.LA(1); + if(!(_la === 109 || _la === 532)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + } break; case 5: + this.enterOuterAlt(localContext, 5); { - this.state = 2283; - this.match(PostgreSqlParser.KW_ALL); + this.state = 1514; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1515; + this.match(PostgreSqlParser.KW_INDEX); + this.state = 1517; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context) ) { + case 1: + { + this.state = 1516; + this.opt_if_exists(); + } + break; + } + this.state = 1519; + this.qualified_name(); + this.state = 1522; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_VALIDATE: + { + this.state = 1520; + this.alter_table_cmds(); + } + break; + case PostgreSqlParser.KW_ATTACH: + { + this.state = 1521; + this.index_partition_cmd(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public constraintssetstmt(): ConstraintssetstmtContext { - let localContext = new ConstraintssetstmtContext(this.context, this.state); - this.enterRule(localContext, 94, PostgreSqlParser.RULE_constraintssetstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2286; - this.match(PostgreSqlParser.KW_SET); - this.state = 2287; - this.match(PostgreSqlParser.KW_CONSTRAINTS); - this.state = 2288; - this.constraints_set_list(); - this.state = 2289; - this.constraints_set_mode(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public constraints_set_list(): Constraints_set_listContext { - let localContext = new Constraints_set_listContext(this.context, this.state); - this.enterRule(localContext, 96, PostgreSqlParser.RULE_constraints_set_list); - try { - this.state = 2293; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ALL: - this.enterOuterAlt(localContext, 1); + case 6: + this.enterOuterAlt(localContext, 6); { - this.state = 2291; + this.state = 1524; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1525; + this.match(PostgreSqlParser.KW_INDEX); + this.state = 1526; this.match(PostgreSqlParser.KW_ALL); + this.state = 1527; + this.match(PostgreSqlParser.KW_IN); + this.state = 1528; + this.opttablespace(); + this.state = 1532; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 281) { + { + this.state = 1529; + this.match(PostgreSqlParser.KW_OWNED); + this.state = 1530; + this.match(PostgreSqlParser.KW_BY); + this.state = 1531; + this.role_list(); + } + } + + this.state = 1534; + this.match(PostgreSqlParser.KW_SET); + this.state = 1535; + this.opttablespace(); + this.state = 1537; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { + case 1: + { + this.state = 1536; + this.match(PostgreSqlParser.KW_NOWAIT); + } + break; + } } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 2); + case 7: + this.enterOuterAlt(localContext, 7); { - this.state = 2292; - this.qualified_name_list(); + this.state = 1539; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1540; + this.match(PostgreSqlParser.KW_SEQUENCE); + this.state = 1542; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { + case 1: + { + this.state = 1541; + this.opt_if_exists(); + } + break; + } + this.state = 1544; + this.qualified_name(); + this.state = 1545; + this.alter_table_cmds(); + } + break; + case 8: + this.enterOuterAlt(localContext, 8); + { + this.state = 1547; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1549; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 259) { + { + this.state = 1548; + this.match(PostgreSqlParser.KW_MATERIALIZED); + } + } + + this.state = 1551; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 1553; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { + case 1: + { + this.state = 1552; + this.opt_if_exists(); + } + break; + } + this.state = 1555; + this.view_name(); + this.state = 1556; + this.alter_table_cmds(); + } + break; + case 9: + this.enterOuterAlt(localContext, 9); + { + this.state = 1558; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1559; + this.match(PostgreSqlParser.KW_MATERIALIZED); + this.state = 1560; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 1561; + this.match(PostgreSqlParser.KW_ALL); + this.state = 1562; + this.match(PostgreSqlParser.KW_IN); + this.state = 1563; + this.opttablespace(); + this.state = 1567; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 281) { + { + this.state = 1564; + this.match(PostgreSqlParser.KW_OWNED); + this.state = 1565; + this.match(PostgreSqlParser.KW_BY); + this.state = 1566; + this.role_list(); + } + } + + this.state = 1569; + this.match(PostgreSqlParser.KW_SET); + this.state = 1570; + this.match(PostgreSqlParser.KW_TABLESPACE); + this.state = 1571; + this.tablespace_name_create(); + this.state = 1573; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { + case 1: + { + this.state = 1572; + this.match(PostgreSqlParser.KW_NOWAIT); + } + break; + } + } + break; + case 10: + this.enterOuterAlt(localContext, 10); + { + this.state = 1575; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1576; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 1577; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 1579; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { + case 1: + { + this.state = 1578; + this.opt_if_exists(); + } + break; + } + this.state = 1581; + this.relation_expr(); + this.state = 1582; + this.alter_table_cmds(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -7909,21 +7647,30 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public constraints_set_mode(): Constraints_set_modeContext { - let localContext = new Constraints_set_modeContext(this.context, this.state); - this.enterRule(localContext, 98, PostgreSqlParser.RULE_constraints_set_mode); + public alter_table_cmds(): Alter_table_cmdsContext { + let localContext = new Alter_table_cmdsContext(this.context, this.state); + this.enterRule(localContext, 78, PostgreSqlParser.RULE_alter_table_cmds); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2295; + this.state = 1586; + this.alter_table_cmd(); + this.state = 1591; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 180 || _la === 221)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + while (_la === 6) { + { + { + this.state = 1587; + this.match(PostgreSqlParser.COMMA); + this.state = 1588; + this.alter_table_cmd(); + } + } + this.state = 1593; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } } } @@ -7941,607 +7688,41 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public checkpointstmt(): CheckpointstmtContext { - let localContext = new CheckpointstmtContext(this.context, this.state); - this.enterRule(localContext, 100, PostgreSqlParser.RULE_checkpointstmt); + public partition_bound_spec(): Partition_bound_specContext { + let localContext = new Partition_bound_specContext(this.context, this.state); + this.enterRule(localContext, 80, PostgreSqlParser.RULE_partition_bound_spec); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2297; - this.match(PostgreSqlParser.KW_CHECKPOINT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public discardstmt(): DiscardstmtContext { - let localContext = new DiscardstmtContext(this.context, this.state); - this.enterRule(localContext, 102, PostgreSqlParser.RULE_discardstmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2299; - this.match(PostgreSqlParser.KW_DISCARD); - this.state = 2300; - _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 288 || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 41943041) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public altertablestmt(): AltertablestmtContext { - let localContext = new AltertablestmtContext(this.context, this.state); - this.enterRule(localContext, 104, PostgreSqlParser.RULE_altertablestmt); - let _la: number; - try { - this.state = 2435; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 2302; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2303; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 2305; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 56, this.context) ) { - case 1: - { - this.state = 2304; - this.opt_if_exists(); - } - break; - } - this.state = 2307; - this.relation_expr(); - this.state = 2310; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_VALIDATE: - { - this.state = 2308; - this.alter_table_cmds(); - } - break; - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - { - this.state = 2309; - this.partition_cmd(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2312; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2313; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 2314; - this.match(PostgreSqlParser.KW_ALL); - this.state = 2315; - this.match(PostgreSqlParser.KW_IN); - this.state = 2316; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2317; - this.tablespace_name(); - this.state = 2321; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 281) { - { - this.state = 2318; - this.match(PostgreSqlParser.KW_OWNED); - this.state = 2319; - this.match(PostgreSqlParser.KW_BY); - this.state = 2320; - this.role_list(); - } - } - - this.state = 2323; - this.match(PostgreSqlParser.KW_SET); - this.state = 2324; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2325; - this.tablespace_name_create(); - this.state = 2327; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context) ) { - case 1: - { - this.state = 2326; - this.opt_nowait(); - } - break; - } - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2329; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2330; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 2332; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { - case 1: - { - this.state = 2331; - this.opt_if_exists(); - } - break; - } - this.state = 2334; - this.table_name(); - this.state = 2335; - this.match(PostgreSqlParser.KW_ATTACH); - this.state = 2336; - this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2337; - this.qualified_name(); - this.state = 2342; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FOR: - { - this.state = 2338; - this.match(PostgreSqlParser.KW_FOR); - this.state = 2339; - this.match(PostgreSqlParser.KW_VALUES); - this.state = 2340; - this.partition_bound_spec(); - } - break; - case PostgreSqlParser.KW_DEFAULT: - { - this.state = 2341; - this.match(PostgreSqlParser.KW_DEFAULT); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 2344; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2345; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 2347; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context) ) { - case 1: - { - this.state = 2346; - this.opt_if_exists(); - } - break; - } - this.state = 2349; - this.table_name(); - this.state = 2350; - this.match(PostgreSqlParser.KW_DETACH); - this.state = 2351; - this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2352; - this.qualified_name(); - this.state = 2354; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 109 || _la === 532) { - { - this.state = 2353; - _la = this.tokenStream.LA(1); - if(!(_la === 109 || _la === 532)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 2356; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2357; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 2359; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context) ) { - case 1: - { - this.state = 2358; - this.opt_if_exists(); - } - break; - } - this.state = 2361; - this.qualified_name(); - this.state = 2364; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_VALIDATE: - { - this.state = 2362; - this.alter_table_cmds(); - } - break; - case PostgreSqlParser.KW_ATTACH: - { - this.state = 2363; - this.index_partition_cmd(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 2366; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2367; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 2368; - this.match(PostgreSqlParser.KW_ALL); - this.state = 2369; - this.match(PostgreSqlParser.KW_IN); - this.state = 2370; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2371; - this.tablespace_name(); - this.state = 2375; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 281) { - { - this.state = 2372; - this.match(PostgreSqlParser.KW_OWNED); - this.state = 2373; - this.match(PostgreSqlParser.KW_BY); - this.state = 2374; - this.role_list(); - } - } - - this.state = 2377; - this.match(PostgreSqlParser.KW_SET); - this.state = 2378; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2379; - this.tablespace_name(); - this.state = 2381; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 67, this.context) ) { - case 1: - { - this.state = 2380; - this.opt_nowait(); - } - break; - } - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 2383; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2384; - this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2386; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { - case 1: - { - this.state = 2385; - this.opt_if_exists(); - } - break; - } - this.state = 2388; - this.qualified_name(); - this.state = 2389; - this.alter_table_cmds(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 2391; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2392; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 2394; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context) ) { - case 1: - { - this.state = 2393; - this.opt_if_exists(); - } - break; - } - this.state = 2396; - this.view_name(); - this.state = 2397; - this.alter_table_cmds(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 2399; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2400; - this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 2401; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 2403; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { - case 1: - { - this.state = 2402; - this.opt_if_exists(); - } - break; - } - this.state = 2405; - this.view_name(); - this.state = 2406; - this.alter_table_cmds(); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 2408; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2409; - this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 2410; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 2411; - this.match(PostgreSqlParser.KW_ALL); - this.state = 2412; - this.match(PostgreSqlParser.KW_IN); - this.state = 2413; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2414; - this.tablespace_name(); - this.state = 2418; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 281) { - { - this.state = 2415; - this.match(PostgreSqlParser.KW_OWNED); - this.state = 2416; - this.match(PostgreSqlParser.KW_BY); - this.state = 2417; - this.role_list(); - } - } - - this.state = 2420; - this.match(PostgreSqlParser.KW_SET); - this.state = 2421; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2422; - this.tablespace_name_create(); - this.state = 2424; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { - case 1: - { - this.state = 2423; - this.opt_nowait(); - } - break; - } - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 2426; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2427; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2428; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 2430; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 73, this.context) ) { - case 1: - { - this.state = 2429; - this.opt_if_exists(); - } - break; - } - this.state = 2432; - this.relation_expr(); - this.state = 2433; - this.alter_table_cmds(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alter_table_cmds(): Alter_table_cmdsContext { - let localContext = new Alter_table_cmdsContext(this.context, this.state); - this.enterRule(localContext, 106, PostgreSqlParser.RULE_alter_table_cmds); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2437; - this.alter_table_cmd(); - this.state = 2442; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 2438; - this.match(PostgreSqlParser.COMMA); - this.state = 2439; - this.alter_table_cmd(); - } - } - this.state = 2444; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public partition_bound_spec(): Partition_bound_specContext { - let localContext = new Partition_bound_specContext(this.context, this.state); - this.enterRule(localContext, 108, PostgreSqlParser.RULE_partition_bound_spec); - try { - this.state = 2454; + this.state = 1603; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 2445; + this.state = 1594; this.match(PostgreSqlParser.KW_IN); - this.state = 2446; - this.opt_type_modifiers(); + this.state = 1595; + this.execute_param_clause(); } break; case PostgreSqlParser.KW_FROM: this.enterOuterAlt(localContext, 2); { - this.state = 2447; + this.state = 1596; this.match(PostgreSqlParser.KW_FROM); - this.state = 2448; + this.state = 1597; this.partition_bound_cluase(); - this.state = 2449; + this.state = 1598; this.match(PostgreSqlParser.KW_TO); - this.state = 2450; + this.state = 1599; this.partition_bound_cluase(); } break; case PostgreSqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 2452; + this.state = 1601; this.match(PostgreSqlParser.KW_WITH); - this.state = 2453; + this.state = 1602; this.partition_with_cluase(); } break; @@ -8565,32 +7746,32 @@ export class PostgreSqlParser extends SQLParserBase { } public partition_bound_cluase(): Partition_bound_cluaseContext { let localContext = new Partition_bound_cluaseContext(this.context, this.state); - this.enterRule(localContext, 110, PostgreSqlParser.RULE_partition_bound_cluase); + this.enterRule(localContext, 82, PostgreSqlParser.RULE_partition_bound_cluase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2456; + this.state = 1605; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2457; + this.state = 1606; this.partition_bound_choose(); - this.state = 2462; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2458; + this.state = 1607; this.match(PostgreSqlParser.COMMA); - this.state = 2459; + this.state = 1608; this.partition_bound_choose(); } } - this.state = 2464; + this.state = 1613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2465; + this.state = 1614; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -8610,29 +7791,29 @@ export class PostgreSqlParser extends SQLParserBase { } public partition_bound_choose(): Partition_bound_chooseContext { let localContext = new Partition_bound_chooseContext(this.context, this.state); - this.enterRule(localContext, 112, PostgreSqlParser.RULE_partition_bound_choose); + this.enterRule(localContext, 84, PostgreSqlParser.RULE_partition_bound_choose); try { - this.state = 2470; + this.state = 1619; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: this.enterOuterAlt(localContext, 1); { - this.state = 2467; - this.opt_type_modifiers(); + this.state = 1616; + this.execute_param_clause(); } break; case PostgreSqlParser.KW_MINVALUE: this.enterOuterAlt(localContext, 2); { - this.state = 2468; + this.state = 1617; this.match(PostgreSqlParser.KW_MINVALUE); } break; case PostgreSqlParser.KW_MAXVALUE: this.enterOuterAlt(localContext, 3); { - this.state = 2469; + this.state = 1618; this.match(PostgreSqlParser.KW_MAXVALUE); } break; @@ -8656,23 +7837,23 @@ export class PostgreSqlParser extends SQLParserBase { } public partition_with_cluase(): Partition_with_cluaseContext { let localContext = new Partition_with_cluaseContext(this.context, this.state); - this.enterRule(localContext, 114, PostgreSqlParser.RULE_partition_with_cluase); + this.enterRule(localContext, 86, PostgreSqlParser.RULE_partition_with_cluase); try { this.enterOuterAlt(localContext, 1); { - this.state = 2472; + this.state = 1621; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2473; + this.state = 1622; this.match(PostgreSqlParser.KW_MODULUS); - this.state = 2474; + this.state = 1623; this.numericonly(); - this.state = 2475; + this.state = 1624; this.match(PostgreSqlParser.COMMA); - this.state = 2476; + this.state = 1625; this.match(PostgreSqlParser.KW_REMAINDER); - this.state = 2477; + this.state = 1626; this.numericonly(); - this.state = 2478; + this.state = 1627; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -8692,32 +7873,28 @@ export class PostgreSqlParser extends SQLParserBase { } public partition_cmd(): Partition_cmdContext { let localContext = new Partition_cmdContext(this.context, this.state); - this.enterRule(localContext, 116, PostgreSqlParser.RULE_partition_cmd); + this.enterRule(localContext, 88, PostgreSqlParser.RULE_partition_cmd); try { - this.state = 2488; + this.state = 1635; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ATTACH: this.enterOuterAlt(localContext, 1); { - this.state = 2480; - this.match(PostgreSqlParser.KW_ATTACH); - this.state = 2481; - this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2482; - this.qualified_name(); - this.state = 2483; + this.state = 1629; + this.index_partition_cmd(); + this.state = 1630; this.partitionboundspec(); } break; case PostgreSqlParser.KW_DETACH: this.enterOuterAlt(localContext, 2); { - this.state = 2485; + this.state = 1632; this.match(PostgreSqlParser.KW_DETACH); - this.state = 2486; + this.state = 1633; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2487; + this.state = 1634; this.qualified_name(); } break; @@ -8741,15 +7918,15 @@ export class PostgreSqlParser extends SQLParserBase { } public index_partition_cmd(): Index_partition_cmdContext { let localContext = new Index_partition_cmdContext(this.context, this.state); - this.enterRule(localContext, 118, PostgreSqlParser.RULE_index_partition_cmd); + this.enterRule(localContext, 90, PostgreSqlParser.RULE_index_partition_cmd); try { this.enterOuterAlt(localContext, 1); { - this.state = 2490; + this.state = 1637; this.match(PostgreSqlParser.KW_ATTACH); - this.state = 2491; + this.state = 1638; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2492; + this.state = 1639; this.qualified_name(); } } @@ -8769,82 +7946,97 @@ export class PostgreSqlParser extends SQLParserBase { } public alter_table_cmd(): Alter_table_cmdContext { let localContext = new Alter_table_cmdContext(this.context, this.state); - this.enterRule(localContext, 120, PostgreSqlParser.RULE_alter_table_cmd); + this.enterRule(localContext, 92, PostgreSqlParser.RULE_alter_table_cmd); let _la: number; try { - this.state = 2711; + let alternative: number; + this.state = 1874; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 108, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2494; + this.state = 1641; this.match(PostgreSqlParser.KW_ADD); - this.state = 2497; + this.state = 1644; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 2495; + this.state = 1642; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2496; - this.name(); + this.state = 1643; + this.colid(); } } - this.state = 2499; + this.state = 1646; this.constraintelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2500; + this.state = 1647; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2501; + this.state = 1648; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2502; - this.name(); - this.state = 2503; - this.constraintattributespec(); + this.state = 1649; + this.colid(); + this.state = 1653; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 79, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1650; + this.constraintattributeElem(); + } + } + } + this.state = 1655; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 79, this.context); + } } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2505; + this.state = 1656; this.match(PostgreSqlParser.KW_VALIDATE); - this.state = 2506; + this.state = 1657; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2507; - this.name(); + this.state = 1658; + this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2508; + this.state = 1659; this.match(PostgreSqlParser.KW_DROP); - this.state = 2509; + this.state = 1660; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2511; + this.state = 1662; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) { case 1: { - this.state = 2510; + this.state = 1661; this.opt_if_exists(); } break; } - this.state = 2513; - this.name(); - this.state = 2515; + this.state = 1664; + this.colid(); + this.state = 1666; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 82, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context) ) { case 1: { - this.state = 2514; + this.state = 1665; this.opt_drop_behavior(); } break; @@ -8854,42 +8046,38 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2517; + this.state = 1668; this.match(PostgreSqlParser.KW_SET); - this.state = 2518; + this.state = 1669; this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 2519; - this.match(PostgreSqlParser.KW_OIDS); + this.state = 1670; + _la = this.tokenStream.LA(1); + if(!(_la === 158 || _la === 277)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2520; + this.state = 1671; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 2521; + this.state = 1672; this.match(PostgreSqlParser.KW_ON); - this.state = 2522; - this.name(); + this.state = 1673; + this.colid(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2523; + this.state = 1674; this.match(PostgreSqlParser.KW_SET); - this.state = 2524; - this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 2525; - this.match(PostgreSqlParser.KW_CLUSTER); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 2526; - this.match(PostgreSqlParser.KW_SET); - this.state = 2527; + this.state = 1675; _la = this.tokenStream.LA(1); if(!(_la === 367 || _la === 439)) { this.errorHandler.recoverInline(this); @@ -8900,17 +8088,17 @@ export class PostgreSqlParser extends SQLParserBase { } } break; - case 9: - this.enterOuterAlt(localContext, 9); + case 8: + this.enterOuterAlt(localContext, 8); { - this.state = 2528; + this.state = 1676; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 2530; + this.state = 1678; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139 || _la === 312) { { - this.state = 2529; + this.state = 1677; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -8922,29 +8110,29 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 2532; + this.state = 1680; this.match(PostgreSqlParser.KW_TRIGGER); } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 9: + this.enterOuterAlt(localContext, 9); { - this.state = 2533; + this.state = 1681; this.match(PostgreSqlParser.KW_DISABLE); - this.state = 2534; + this.state = 1682; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 2538; + this.state = 1686; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 2535; + this.state = 1683; this.match(PostgreSqlParser.KW_ALL); } break; case PostgreSqlParser.KW_USER: { - this.state = 2536; + this.state = 1684; this.match(PostgreSqlParser.KW_USER); } break; @@ -9348,8 +8536,8 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2537; - this.name(); + this.state = 1685; + this.colid(); } break; default: @@ -9357,12 +8545,12 @@ export class PostgreSqlParser extends SQLParserBase { } } break; - case 11: - this.enterOuterAlt(localContext, 11); + case 10: + this.enterOuterAlt(localContext, 10); { - this.state = 2540; + this.state = 1688; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 2541; + this.state = 1689; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -9371,272 +8559,293 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2542; + this.state = 1690; this.match(PostgreSqlParser.KW_RULE); - this.state = 2543; - this.name(); + this.state = 1691; + this.colid(); } break; - case 12: - this.enterOuterAlt(localContext, 12); + case 11: + this.enterOuterAlt(localContext, 11); { - this.state = 2544; + this.state = 1692; this.match(PostgreSqlParser.KW_DISABLE); - this.state = 2545; + this.state = 1693; this.match(PostgreSqlParser.KW_RULE); - this.state = 2546; - this.name(); + this.state = 1694; + this.colid(); } break; - case 13: - this.enterOuterAlt(localContext, 13); + case 12: + this.enterOuterAlt(localContext, 12); { - this.state = 2548; + this.state = 1696; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 2547; + this.state = 1695; this.match(PostgreSqlParser.KW_NO); } } - this.state = 2550; + this.state = 1698; this.match(PostgreSqlParser.KW_INHERIT); - this.state = 2551; + this.state = 1699; this.qualified_name(); } break; - case 14: - this.enterOuterAlt(localContext, 14); + case 13: + this.enterOuterAlt(localContext, 13); { - this.state = 2552; + this.state = 1700; this.match(PostgreSqlParser.KW_OF); - this.state = 2553; + this.state = 1701; this.any_name(); } break; - case 15: - this.enterOuterAlt(localContext, 15); + case 14: + this.enterOuterAlt(localContext, 14); { - this.state = 2554; + this.state = 1702; this.match(PostgreSqlParser.KW_NOT); - this.state = 2555; + this.state = 1703; this.match(PostgreSqlParser.KW_OF); } break; - case 16: - this.enterOuterAlt(localContext, 16); + case 15: + this.enterOuterAlt(localContext, 15); { - this.state = 2556; + this.state = 1704; this.match(PostgreSqlParser.KW_OWNER); - this.state = 2557; + this.state = 1705; this.match(PostgreSqlParser.KW_TO); - this.state = 2558; + this.state = 1706; this.rolespec(); } break; - case 17: - this.enterOuterAlt(localContext, 17); + case 16: + this.enterOuterAlt(localContext, 16); { - this.state = 2559; + this.state = 1707; this.match(PostgreSqlParser.KW_SET); - this.state = 2560; + this.state = 1708; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2561; + this.state = 1709; this.tablespace_name_create(); } break; - case 18: - this.enterOuterAlt(localContext, 18); - { - this.state = 2562; - this.match(PostgreSqlParser.KW_SET); - this.state = 2563; - this.reloptions(); - } - break; - case 19: - this.enterOuterAlt(localContext, 19); - { - this.state = 2564; - this.match(PostgreSqlParser.KW_RESET); - this.state = 2565; - this.reloptions(); - } - break; - case 20: - this.enterOuterAlt(localContext, 20); + case 17: + this.enterOuterAlt(localContext, 17); { - this.state = 2566; + this.state = 1710; this.match(PostgreSqlParser.KW_REPLICA); - this.state = 2567; + this.state = 1711; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 2568; - this.replica_identity(); - } - break; - case 21: - this.enterOuterAlt(localContext, 21); - { - this.state = 2569; - this.match(PostgreSqlParser.KW_ENABLE); - this.state = 2570; - this.match(PostgreSqlParser.KW_ROW); - this.state = 2571; - this.match(PostgreSqlParser.KW_LEVEL); - this.state = 2572; - this.match(PostgreSqlParser.KW_SECURITY); + this.state = 1716; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_NOTHING: + { + this.state = 1712; + this.match(PostgreSqlParser.KW_NOTHING); + } + break; + case PostgreSqlParser.KW_FULL: + { + this.state = 1713; + this.match(PostgreSqlParser.KW_FULL); + } + break; + case PostgreSqlParser.KW_DEFAULT: + { + this.state = 1714; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + case PostgreSqlParser.KW_USING: + { + this.state = 1715; + this.existingindex(); + } + break; + default: + throw new antlr.NoViableAltException(this); } - break; - case 22: - this.enterOuterAlt(localContext, 22); - { - this.state = 2573; - this.match(PostgreSqlParser.KW_DISABLE); - this.state = 2574; - this.match(PostgreSqlParser.KW_ROW); - this.state = 2575; - this.match(PostgreSqlParser.KW_LEVEL); - this.state = 2576; - this.match(PostgreSqlParser.KW_SECURITY); } break; - case 23: - this.enterOuterAlt(localContext, 23); + case 18: + this.enterOuterAlt(localContext, 18); { - this.state = 2577; - this.match(PostgreSqlParser.KW_FORCE); - this.state = 2578; - this.match(PostgreSqlParser.KW_ROW); - this.state = 2579; - this.match(PostgreSqlParser.KW_LEVEL); - this.state = 2580; - this.match(PostgreSqlParser.KW_SECURITY); + this.state = 1724; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ENABLE: + { + this.state = 1718; + this.match(PostgreSqlParser.KW_ENABLE); + } + break; + case PostgreSqlParser.KW_DISABLE: + { + this.state = 1719; + this.match(PostgreSqlParser.KW_DISABLE); + } + break; + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_NO: + { + { + this.state = 1721; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 1720; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 1723; + this.match(PostgreSqlParser.KW_FORCE); + } + } + break; + default: + throw new antlr.NoViableAltException(this); } - break; - case 24: - this.enterOuterAlt(localContext, 24); - { - this.state = 2581; - this.match(PostgreSqlParser.KW_NO); - this.state = 2582; - this.match(PostgreSqlParser.KW_FORCE); - this.state = 2583; + this.state = 1726; this.match(PostgreSqlParser.KW_ROW); - this.state = 2584; + this.state = 1727; this.match(PostgreSqlParser.KW_LEVEL); - this.state = 2585; + this.state = 1728; this.match(PostgreSqlParser.KW_SECURITY); } break; - case 25: - this.enterOuterAlt(localContext, 25); + case 19: + this.enterOuterAlt(localContext, 19); { - this.state = 2586; + this.state = 1729; this.match(PostgreSqlParser.KW_DROP); - this.state = 2588; + this.state = 1731; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 86, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 88, this.context) ) { case 1: { - this.state = 2587; + this.state = 1730; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2591; + this.state = 1734; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 89, this.context) ) { case 1: { - this.state = 2590; + this.state = 1733; this.opt_if_exists(); } break; } - this.state = 2593; + this.state = 1736; this.column_name(); - this.state = 2595; + this.state = 1738; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 88, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) { case 1: { - this.state = 2594; + this.state = 1737; this.opt_drop_behavior(); } break; } } break; - case 26: - this.enterOuterAlt(localContext, 26); + case 20: + this.enterOuterAlt(localContext, 20); { - this.state = 2597; + this.state = 1740; this.match(PostgreSqlParser.KW_ADD); - this.state = 2599; + this.state = 1742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 44) { { - this.state = 2598; + this.state = 1741; this.match(PostgreSqlParser.KW_COLUMN); } } - this.state = 2602; + this.state = 1745; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { case 1: { - this.state = 2601; + this.state = 1744; this.opt_if_not_exists(); } break; } - this.state = 2604; + this.state = 1747; this.column_def(); } break; - case 27: - this.enterOuterAlt(localContext, 27); + case 21: + this.enterOuterAlt(localContext, 21); { - this.state = 2605; + this.state = 1748; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2607; + this.state = 1750; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { case 1: { - this.state = 2606; + this.state = 1749; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2609; + this.state = 1752; this.column_name(); - this.state = 2610; - this.alter_column_default(); + this.state = 1755; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_SET: + { + this.state = 1753; + this.alter_column_default(); + } + break; + case PostgreSqlParser.KW_OPTIONS: + { + this.state = 1754; + this.alter_generic_options(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; - case 28: - this.enterOuterAlt(localContext, 28); + case 22: + this.enterOuterAlt(localContext, 22); { - this.state = 2612; + this.state = 1757; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2614; + this.state = 1759; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 95, this.context) ) { case 1: { - this.state = 2613; + this.state = 1758; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2616; + this.state = 1761; this.column_name(); - this.state = 2617; + this.state = 1762; _la = this.tokenStream.LA(1); if(!(_la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -9645,88 +8854,96 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2618; + this.state = 1763; this.match(PostgreSqlParser.KW_NOT); - this.state = 2619; + this.state = 1764; this.match(PostgreSqlParser.KW_NULL); } break; - case 29: - this.enterOuterAlt(localContext, 29); + case 23: + this.enterOuterAlt(localContext, 23); { - this.state = 2621; + this.state = 1766; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2623; + this.state = 1768; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { case 1: { - this.state = 2622; + this.state = 1767; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2625; + this.state = 1770; this.column_name(); - this.state = 2626; + this.state = 1771; this.match(PostgreSqlParser.KW_DROP); - this.state = 2627; + this.state = 1772; this.match(PostgreSqlParser.KW_EXPRESSION); - this.state = 2629; + this.state = 1774; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 94, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 97, this.context) ) { case 1: { - this.state = 2628; + this.state = 1773; this.opt_if_exists(); } break; } } break; - case 30: - this.enterOuterAlt(localContext, 30); + case 24: + this.enterOuterAlt(localContext, 24); { - this.state = 2631; + this.state = 1776; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2633; + this.state = 1778; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 95, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 98, this.context) ) { case 1: { - this.state = 2632; + this.state = 1777; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2635; + this.state = 1780; this.column_name(); - this.state = 2636; + this.state = 1781; this.match(PostgreSqlParser.KW_SET); - this.state = 2637; + this.state = 1782; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2638; + this.state = 1783; this.signediconst(); } break; - case 31: - this.enterOuterAlt(localContext, 31); + case 25: + this.enterOuterAlt(localContext, 25); { - this.state = 2640; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2642; + this.state = 1790; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 138) { { - this.state = 2641; - this.match(PostgreSqlParser.KW_COLUMN); + this.state = 1785; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 1787; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 99, this.context) ) { + case 1: + { + this.state = 1786; + this.match(PostgreSqlParser.KW_COLUMN); + } + break; + } + this.state = 1789; + this.column_name(); } - break; } - this.state = 2644; - this.column_name(); - this.state = 2645; + + this.state = 1792; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -9735,206 +8952,286 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2646; + this.state = 1793; this.reloptions(); } break; - case 32: - this.enterOuterAlt(localContext, 32); + case 26: + this.enterOuterAlt(localContext, 26); { - this.state = 2648; + this.state = 1794; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2650; + this.state = 1796; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 97, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 101, this.context) ) { case 1: { - this.state = 2649; + this.state = 1795; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2652; + this.state = 1798; this.column_name(); - this.state = 2653; + this.state = 1799; this.match(PostgreSqlParser.KW_SET); - this.state = 2654; + this.state = 1800; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 2655; + this.state = 1801; this.colid(); } break; - case 33: - this.enterOuterAlt(localContext, 33); + case 27: + this.enterOuterAlt(localContext, 27); { - this.state = 2657; + this.state = 1803; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2659; + this.state = 1805; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 98, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { case 1: { - this.state = 2658; + this.state = 1804; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2661; + this.state = 1807; this.column_name(); - this.state = 2662; + this.state = 1808; this.match(PostgreSqlParser.KW_ADD); - this.state = 2663; + this.state = 1809; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 2664; + this.state = 1810; this.generated_when(); - this.state = 2665; + this.state = 1811; this.match(PostgreSqlParser.KW_AS); - this.state = 2666; + this.state = 1812; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 2668; + this.state = 1821; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 99, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 104, this.context) ) { case 1: { - this.state = 2667; - this.optparenthesizedseqoptlist(); + this.state = 1813; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 1815; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 1814; + this.seqoptelem(); + } + } + this.state = 1817; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 36 || _la === 148 || _la === 225 || ((((_la - 260)) & ~0x1F) === 0 && ((1 << (_la - 260)) & 2097669) !== 0) || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67125249) !== 0)); + this.state = 1819; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } } break; - case 34: - this.enterOuterAlt(localContext, 34); + case 28: + this.enterOuterAlt(localContext, 28); { - this.state = 2670; + this.state = 1823; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2672; + this.state = 1825; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 100, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 105, this.context) ) { case 1: { - this.state = 2671; + this.state = 1824; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2674; + this.state = 1827; this.column_name(); - this.state = 2675; - this.alter_identity_column_option_list(); + this.state = 1841; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + this.state = 1841; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_RESTART: + { + this.state = 1828; + this.match(PostgreSqlParser.KW_RESTART); + this.state = 1833; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 107, this.context) ) { + case 1: + { + this.state = 1830; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 1829; + this.match(PostgreSqlParser.KW_WITH); + } + } + + this.state = 1832; + this.numericonly(); + } + break; + } + } + break; + case PostgreSqlParser.KW_SET: + { + this.state = 1835; + this.match(PostgreSqlParser.KW_SET); + this.state = 1839; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AS: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_START: + { + this.state = 1836; + this.seqoptelem(); + } + break; + case PostgreSqlParser.KW_GENERATED: + { + this.state = 1837; + this.match(PostgreSqlParser.KW_GENERATED); + this.state = 1838; + this.generated_when(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 1843; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 110, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; - case 35: - this.enterOuterAlt(localContext, 35); + case 29: + this.enterOuterAlt(localContext, 29); { - this.state = 2677; + this.state = 1845; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2679; + this.state = 1847; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 101, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { case 1: { - this.state = 2678; + this.state = 1846; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2681; + this.state = 1849; this.column_name(); - this.state = 2682; + this.state = 1850; this.match(PostgreSqlParser.KW_DROP); - this.state = 2683; + this.state = 1851; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 2685; + this.state = 1853; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 112, this.context) ) { case 1: { - this.state = 2684; + this.state = 1852; this.opt_if_exists(); } break; } } break; - case 36: - this.enterOuterAlt(localContext, 36); + case 30: + this.enterOuterAlt(localContext, 30); { - this.state = 2687; + this.state = 1855; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2689; + this.state = 1857; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 103, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 113, this.context) ) { case 1: { - this.state = 2688; + this.state = 1856; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 2691; + this.state = 1859; this.column_name(); - this.state = 2693; + this.state = 1862; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 2692; - this.opt_set_data(); + this.state = 1860; + this.match(PostgreSqlParser.KW_SET); + this.state = 1861; + this.match(PostgreSqlParser.KW_DATA); } } - this.state = 2695; + this.state = 1864; this.match(PostgreSqlParser.KW_TYPE); - this.state = 2696; + this.state = 1865; this.typename(); - this.state = 2698; + this.state = 1867; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 105, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 115, this.context) ) { case 1: { - this.state = 2697; + this.state = 1866; this.opt_collate_clause(); } break; } - this.state = 2701; + this.state = 1871; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2700; - this.alter_using(); + this.state = 1869; + this.match(PostgreSqlParser.KW_USING); + this.state = 1870; + this.expression(); } } } break; - case 37: - this.enterOuterAlt(localContext, 37); - { - this.state = 2703; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 2705; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 107, this.context) ) { - case 1: - { - this.state = 2704; - this.match(PostgreSqlParser.KW_COLUMN); - } - break; - } - this.state = 2707; - this.column_name(); - this.state = 2708; - this.alter_generic_options(); - } - break; - case 38: - this.enterOuterAlt(localContext, 38); + case 31: + this.enterOuterAlt(localContext, 31); { - this.state = 2710; + this.state = 1873; this.alter_generic_options(); } break; @@ -9956,28 +9253,28 @@ export class PostgreSqlParser extends SQLParserBase { } public alter_column_default(): Alter_column_defaultContext { let localContext = new Alter_column_defaultContext(this.context, this.state); - this.enterRule(localContext, 122, PostgreSqlParser.RULE_alter_column_default); + this.enterRule(localContext, 94, PostgreSqlParser.RULE_alter_column_default); try { - this.state = 2718; + this.state = 1881; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 2713; + this.state = 1876; this.match(PostgreSqlParser.KW_SET); - this.state = 2714; + this.state = 1877; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 2715; - this.a_expr(); + this.state = 1878; + this.expression(); } break; case PostgreSqlParser.KW_DROP: this.enterOuterAlt(localContext, 2); { - this.state = 2716; + this.state = 1879; this.match(PostgreSqlParser.KW_DROP); - this.state = 2717; + this.state = 1880; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -10001,12 +9298,12 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_drop_behavior(): Opt_drop_behaviorContext { let localContext = new Opt_drop_behaviorContext(this.context, this.state); - this.enterRule(localContext, 124, PostgreSqlParser.RULE_opt_drop_behavior); + this.enterRule(localContext, 96, PostgreSqlParser.RULE_opt_drop_behavior); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2720; + this.state = 1883; _la = this.tokenStream.LA(1); if(!(_la === 150 || _la === 315)) { this.errorHandler.recoverInline(this); @@ -10033,13 +9330,13 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_collate_clause(): Opt_collate_clauseContext { let localContext = new Opt_collate_clauseContext(this.context, this.state); - this.enterRule(localContext, 126, PostgreSqlParser.RULE_opt_collate_clause); + this.enterRule(localContext, 98, PostgreSqlParser.RULE_opt_collate_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 2722; + this.state = 1885; this.match(PostgreSqlParser.KW_COLLATE); - this.state = 2723; + this.state = 1886; this.any_name(); } } @@ -10057,100 +9354,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alter_using(): Alter_usingContext { - let localContext = new Alter_usingContext(this.context, this.state); - this.enterRule(localContext, 128, PostgreSqlParser.RULE_alter_using); + public reloptions(): ReloptionsContext { + let localContext = new ReloptionsContext(this.context, this.state); + this.enterRule(localContext, 100, PostgreSqlParser.RULE_reloptions); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2725; - this.match(PostgreSqlParser.KW_USING); - this.state = 2726; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public replica_identity(): Replica_identityContext { - let localContext = new Replica_identityContext(this.context, this.state); - this.enterRule(localContext, 130, PostgreSqlParser.RULE_replica_identity); - try { - this.state = 2734; + this.state = 1888; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 1889; + this.reloption_elem(); + this.state = 1894; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_NOTHING: - this.enterOuterAlt(localContext, 1); - { - this.state = 2728; - this.match(PostgreSqlParser.KW_NOTHING); - } - break; - case PostgreSqlParser.KW_FULL: - this.enterOuterAlt(localContext, 2); + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 2729; - this.match(PostgreSqlParser.KW_FULL); - } - break; - case PostgreSqlParser.KW_DEFAULT: - this.enterOuterAlt(localContext, 3); { - this.state = 2730; - this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 1890; + this.match(PostgreSqlParser.COMMA); + this.state = 1891; + this.reloption_elem(); } - break; - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 4); - { - this.state = 2731; - this.match(PostgreSqlParser.KW_USING); - this.state = 2732; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 2733; - this.name(); } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.state = 1896; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - } - finally { - this.exitRule(); - } - return localContext; - } - public reloptions(): ReloptionsContext { - let localContext = new ReloptionsContext(this.context, this.state); - this.enterRule(localContext, 132, PostgreSqlParser.RULE_reloptions); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2736; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2737; - this.reloption_list(); - this.state = 2738; + this.state = 1897; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -10170,13 +9401,13 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_reloptions(): Opt_reloptionsContext { let localContext = new Opt_reloptionsContext(this.context, this.state); - this.enterRule(localContext, 134, PostgreSqlParser.RULE_opt_reloptions); + this.enterRule(localContext, 102, PostgreSqlParser.RULE_opt_reloptions); try { this.enterOuterAlt(localContext, 1); { - this.state = 2740; + this.state = 1899; this.match(PostgreSqlParser.KW_WITH); - this.state = 2741; + this.state = 1900; this.reloptions(); } } @@ -10194,85 +9425,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public reloption_list(): Reloption_listContext { - let localContext = new Reloption_listContext(this.context, this.state); - this.enterRule(localContext, 136, PostgreSqlParser.RULE_reloption_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2743; - this.reloption_elem(); - this.state = 2748; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 2744; - this.match(PostgreSqlParser.COMMA); - this.state = 2745; - this.reloption_elem(); - } - } - this.state = 2750; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public reloption_elem(): Reloption_elemContext { let localContext = new Reloption_elemContext(this.context, this.state); - this.enterRule(localContext, 138, PostgreSqlParser.RULE_reloption_elem); - let _la: number; + this.enterRule(localContext, 104, PostgreSqlParser.RULE_reloption_elem); try { this.enterOuterAlt(localContext, 1); { - this.state = 2751; + this.state = 1902; this.collabel(); - this.state = 2760; + this.state = 1907; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.EQUAL: { - this.state = 2752; + this.state = 1903; this.match(PostgreSqlParser.EQUAL); - this.state = 2753; + this.state = 1904; this.def_arg(); } break; case PostgreSqlParser.DOT: { - this.state = 2754; + this.state = 1905; this.match(PostgreSqlParser.DOT); - this.state = 2755; - this.collabel(); - this.state = 2758; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 10) { - { - this.state = 2756; - this.match(PostgreSqlParser.EQUAL); - this.state = 2757; - this.def_arg(); - } - } - + this.state = 1906; + this.def_elem(); } break; case PostgreSqlParser.CLOSE_PAREN: @@ -10297,209 +9474,87 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alter_identity_column_option_list(): Alter_identity_column_option_listContext { - let localContext = new Alter_identity_column_option_listContext(this.context, this.state); - this.enterRule(localContext, 140, PostgreSqlParser.RULE_alter_identity_column_option_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2763; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - { - this.state = 2762; - this.alter_identity_column_option(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 2765; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 114, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alter_identity_column_option(): Alter_identity_column_optionContext { - let localContext = new Alter_identity_column_optionContext(this.context, this.state); - this.enterRule(localContext, 142, PostgreSqlParser.RULE_alter_identity_column_option); - let _la: number; - try { - this.state = 2780; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_RESTART: - this.enterOuterAlt(localContext, 1); - { - this.state = 2767; - this.match(PostgreSqlParser.KW_RESTART); - this.state = 2772; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 116, this.context) ) { - case 1: - { - this.state = 2769; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 2768; - this.opt_with(); - } - } - - this.state = 2771; - this.numericonly(); - } - break; - } - } - break; - case PostgreSqlParser.KW_SET: - this.enterOuterAlt(localContext, 2); - { - this.state = 2774; - this.match(PostgreSqlParser.KW_SET); - this.state = 2778; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AS: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_START: - { - this.state = 2775; - this.seqoptelem(); - } - break; - case PostgreSqlParser.KW_GENERATED: - { - this.state = 2776; - this.match(PostgreSqlParser.KW_GENERATED); - this.state = 2777; - this.generated_when(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public partitionboundspec(): PartitionboundspecContext { let localContext = new PartitionboundspecContext(this.context, this.state); - this.enterRule(localContext, 144, PostgreSqlParser.RULE_partitionboundspec); + this.enterRule(localContext, 106, PostgreSqlParser.RULE_partitionboundspec); + let _la: number; try { - this.state = 2808; + this.state = 1938; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 119, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2782; + this.state = 1909; this.match(PostgreSqlParser.KW_FOR); - this.state = 2783; + this.state = 1910; this.match(PostgreSqlParser.KW_VALUES); - this.state = 2784; + this.state = 1911; this.match(PostgreSqlParser.KW_WITH); - this.state = 2785; + this.state = 1912; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2786; - this.hash_partbound(); - this.state = 2787; + this.state = 1913; + this.nonreservedword(); + this.state = 1914; + this.match(PostgreSqlParser.Integral); + this.state = 1921; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 1915; + this.match(PostgreSqlParser.COMMA); + { + this.state = 1916; + this.nonreservedword(); + this.state = 1917; + this.match(PostgreSqlParser.Integral); + } + } + } + this.state = 1923; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 1924; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2789; + this.state = 1926; this.match(PostgreSqlParser.KW_FOR); - this.state = 2790; + this.state = 1927; this.match(PostgreSqlParser.KW_VALUES); - this.state = 2791; + this.state = 1928; this.match(PostgreSqlParser.KW_IN); - this.state = 2792; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2793; - this.expr_list(); - this.state = 2794; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 1929; + this.execute_param_clause(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2796; + this.state = 1930; this.match(PostgreSqlParser.KW_FOR); - this.state = 2797; + this.state = 1931; this.match(PostgreSqlParser.KW_VALUES); - this.state = 2798; + this.state = 1932; this.match(PostgreSqlParser.KW_FROM); - this.state = 2799; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2800; - this.expr_list(); - this.state = 2801; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2802; + this.state = 1933; + this.execute_param_clause(); + this.state = 1934; this.match(PostgreSqlParser.KW_TO); - this.state = 2803; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2804; - this.expr_list(); - this.state = 2805; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 1935; + this.execute_param_clause(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2807; + this.state = 1937; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -10519,125 +9574,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public hash_partbound_elem(): Hash_partbound_elemContext { - let localContext = new Hash_partbound_elemContext(this.context, this.state); - this.enterRule(localContext, 146, PostgreSqlParser.RULE_hash_partbound_elem); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2810; - this.nonreservedword(); - this.state = 2811; - this.iconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public hash_partbound(): Hash_partboundContext { - let localContext = new Hash_partboundContext(this.context, this.state); - this.enterRule(localContext, 148, PostgreSqlParser.RULE_hash_partbound); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2813; - this.hash_partbound_elem(); - this.state = 2818; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 2814; - this.match(PostgreSqlParser.COMMA); - this.state = 2815; - this.hash_partbound_elem(); - } - } - this.state = 2820; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public altercompositetypestmt(): AltercompositetypestmtContext { let localContext = new AltercompositetypestmtContext(this.context, this.state); - this.enterRule(localContext, 150, PostgreSqlParser.RULE_altercompositetypestmt); + this.enterRule(localContext, 108, PostgreSqlParser.RULE_altercompositetypestmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2821; + this.state = 1940; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2822; + this.state = 1941; this.match(PostgreSqlParser.KW_TYPE); - this.state = 2823; + this.state = 1942; this.any_name(); - this.state = 2824; - this.alter_type_cmds(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alter_type_cmds(): Alter_type_cmdsContext { - let localContext = new Alter_type_cmdsContext(this.context, this.state); - this.enterRule(localContext, 152, PostgreSqlParser.RULE_alter_type_cmds); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2826; + this.state = 1943; this.alter_type_cmd(); - this.state = 2831; + this.state = 1948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2827; + this.state = 1944; this.match(PostgreSqlParser.COMMA); - this.state = 2828; + this.state = 1945; this.alter_type_cmd(); } } - this.state = 2833; + this.state = 1950; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10659,27 +9623,27 @@ export class PostgreSqlParser extends SQLParserBase { } public alter_type_cmd(): Alter_type_cmdContext { let localContext = new Alter_type_cmdContext(this.context, this.state); - this.enterRule(localContext, 154, PostgreSqlParser.RULE_alter_type_cmd); + this.enterRule(localContext, 110, PostgreSqlParser.RULE_alter_type_cmd); let _la: number; try { - this.state = 2863; + this.state = 1981; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ADD: this.enterOuterAlt(localContext, 1); { - this.state = 2834; + this.state = 1951; this.match(PostgreSqlParser.KW_ADD); - this.state = 2835; + this.state = 1952; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 2836; + this.state = 1953; this.tablefuncelement(); - this.state = 2838; + this.state = 1955; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { case 1: { - this.state = 2837; + this.state = 1954; this.opt_drop_behavior(); } break; @@ -10689,28 +9653,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DROP: this.enterOuterAlt(localContext, 2); { - this.state = 2840; + this.state = 1957; this.match(PostgreSqlParser.KW_DROP); - this.state = 2841; + this.state = 1958; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 2843; + this.state = 1960; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 123, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 125, this.context) ) { case 1: { - this.state = 2842; + this.state = 1959; this.opt_if_exists(); } break; } - this.state = 2845; + this.state = 1962; this.colid(); - this.state = 2847; + this.state = 1964; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { case 1: { - this.state = 2846; + this.state = 1963; this.opt_drop_behavior(); } break; @@ -10720,42 +9684,44 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ALTER: this.enterOuterAlt(localContext, 3); { - this.state = 2849; + this.state = 1966; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2850; + this.state = 1967; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 2851; + this.state = 1968; this.colid(); - this.state = 2853; + this.state = 1971; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 2852; - this.opt_set_data(); + this.state = 1969; + this.match(PostgreSqlParser.KW_SET); + this.state = 1970; + this.match(PostgreSqlParser.KW_DATA); } } - this.state = 2855; + this.state = 1973; this.match(PostgreSqlParser.KW_TYPE); - this.state = 2856; + this.state = 1974; this.typename(); - this.state = 2858; + this.state = 1976; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { case 1: { - this.state = 2857; + this.state = 1975; this.opt_collate_clause(); } break; } - this.state = 2861; + this.state = 1979; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) { case 1: { - this.state = 2860; + this.state = 1978; this.opt_drop_behavior(); } break; @@ -10782,13 +9748,13 @@ export class PostgreSqlParser extends SQLParserBase { } public closeportalstmt(): CloseportalstmtContext { let localContext = new CloseportalstmtContext(this.context, this.state); - this.enterRule(localContext, 156, PostgreSqlParser.RULE_closeportalstmt); + this.enterRule(localContext, 112, PostgreSqlParser.RULE_closeportalstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 2865; + this.state = 1983; this.match(PostgreSqlParser.KW_CLOSE); - this.state = 2868; + this.state = 1986; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AND: @@ -11191,13 +10157,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2866; - this.cursor_name(); + this.state = 1984; + this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 2867; + this.state = 1985; this.match(PostgreSqlParser.KW_ALL); } break; @@ -11222,81 +10188,125 @@ export class PostgreSqlParser extends SQLParserBase { } public copystmt(): CopystmtContext { let localContext = new CopystmtContext(this.context, this.state); - this.enterRule(localContext, 158, PostgreSqlParser.RULE_copystmt); + this.enterRule(localContext, 114, PostgreSqlParser.RULE_copystmt); let _la: number; try { - this.state = 2907; + this.state = 2037; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 143, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2870; + this.state = 1988; this.match(PostgreSqlParser.KW_COPY); - this.state = 2872; + this.state = 1990; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 2871; - this.opt_binary(); + this.state = 1989; + this.match(PostgreSqlParser.KW_BINARY); } } - this.state = 2874; + this.state = 1992; this.table_name(); - this.state = 2876; + this.state = 1994; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2875; + this.state = 1993; this.opt_column_list(); } } - this.state = 2878; - this.copy_from(); - this.state = 2880; + this.state = 1996; + _la = this.tokenStream.LA(1); + if(!(_la === 64 || _la === 94)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1998; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 297) { { - this.state = 2879; - this.opt_program(); + this.state = 1997; + this.match(PostgreSqlParser.KW_PROGRAM); } } - this.state = 2882; - this.copy_file_name(); - this.state = 2884; + this.state = 2003; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 2000; + this.sconst(); + } + break; + case PostgreSqlParser.KW_STDIN: + { + this.state = 2001; + this.match(PostgreSqlParser.KW_STDIN); + } + break; + case PostgreSqlParser.KW_STDOUT: + { + this.state = 2002; + this.match(PostgreSqlParser.KW_STDOUT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 2010; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 133, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: { - this.state = 2883; - this.copy_delimiter(); + this.state = 2006; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 2005; + this.match(PostgreSqlParser.KW_USING); + } + } + + this.state = 2008; + this.match(PostgreSqlParser.KW_DELIMITERS); + this.state = 2009; + this.sconst(); } break; } - this.state = 2887; + this.state = 2013; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 134, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { case 1: { - this.state = 2886; - this.opt_with(); + this.state = 2012; + this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2889; + this.state = 2015; this.copy_options(); - this.state = 2891; + this.state = 2017; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 2890; + this.state = 2016; this.where_clause(); } } @@ -11306,39 +10316,64 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2893; + this.state = 2019; this.match(PostgreSqlParser.KW_COPY); - this.state = 2894; + this.state = 2020; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2895; + this.state = 2021; this.preparablestmt(); - this.state = 2896; + this.state = 2022; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2897; + this.state = 2023; this.match(PostgreSqlParser.KW_TO); - this.state = 2899; + this.state = 2025; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 297) { { - this.state = 2898; - this.opt_program(); + this.state = 2024; + this.match(PostgreSqlParser.KW_PROGRAM); } } - this.state = 2901; - this.copy_file_name(); - this.state = 2903; + this.state = 2030; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 2027; + this.sconst(); + } + break; + case PostgreSqlParser.KW_STDIN: + { + this.state = 2028; + this.match(PostgreSqlParser.KW_STDIN); + } + break; + case PostgreSqlParser.KW_STDOUT: + { + this.state = 2029; + this.match(PostgreSqlParser.KW_STDOUT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 2033; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 142, this.context) ) { case 1: { - this.state = 2902; - this.opt_with(); + this.state = 2032; + this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2905; + this.state = 2035; this.copy_options(); } break; @@ -11358,356 +10393,162 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public copy_from(): Copy_fromContext { - let localContext = new Copy_fromContext(this.context, this.state); - this.enterRule(localContext, 160, PostgreSqlParser.RULE_copy_from); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2909; - _la = this.tokenStream.LA(1); - if(!(_la === 64 || _la === 94)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_program(): Opt_programContext { - let localContext = new Opt_programContext(this.context, this.state); - this.enterRule(localContext, 162, PostgreSqlParser.RULE_opt_program); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2911; - this.match(PostgreSqlParser.KW_PROGRAM); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_file_name(): Copy_file_nameContext { - let localContext = new Copy_file_nameContext(this.context, this.state); - this.enterRule(localContext, 164, PostgreSqlParser.RULE_copy_file_name); - try { - this.state = 2916; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); - { - this.state = 2913; - this.sconst(); - } - break; - case PostgreSqlParser.KW_STDIN: - this.enterOuterAlt(localContext, 2); - { - this.state = 2914; - this.match(PostgreSqlParser.KW_STDIN); - } - break; - case PostgreSqlParser.KW_STDOUT: - this.enterOuterAlt(localContext, 3); - { - this.state = 2915; - this.match(PostgreSqlParser.KW_STDOUT); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public copy_options(): Copy_optionsContext { let localContext = new Copy_optionsContext(this.context, this.state); - this.enterRule(localContext, 166, PostgreSqlParser.RULE_copy_options); - try { - this.state = 2923; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 140, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 2918; - this.copy_opt_list(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2919; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2920; - this.copy_generic_opt_list(); - this.state = 2921; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_opt_list(): Copy_opt_listContext { - let localContext = new Copy_opt_listContext(this.context, this.state); - this.enterRule(localContext, 168, PostgreSqlParser.RULE_copy_opt_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2928; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 141, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 2925; - this.copy_opt_item(); - } - } - } - this.state = 2930; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 141, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_opt_item(): Copy_opt_itemContext { - let localContext = new Copy_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 170, PostgreSqlParser.RULE_copy_opt_item); + this.enterRule(localContext, 116, PostgreSqlParser.RULE_copy_options); let _la: number; try { - this.state = 2970; + let alternative: number; + this.state = 2078; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 146, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 150, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2931; - this.match(PostgreSqlParser.KW_BINARY); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2932; - this.match(PostgreSqlParser.KW_FREEZE); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2933; - this.match(PostgreSqlParser.KW_DELIMITER); - this.state = 2935; + this.state = 2064; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 2934; - this.opt_as(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 148, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + this.state = 2062; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 147, this.context) ) { + case 1: + { + this.state = 2039; + this.match(PostgreSqlParser.KW_BINARY); + } + break; + case 2: + { + this.state = 2040; + this.match(PostgreSqlParser.KW_FREEZE); + } + break; + case 3: + { + this.state = 2041; + _la = this.tokenStream.LA(1); + if(!(_la === 78 || _la === 183 || _la === 197 || _la === 298)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2043; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 36) { + { + this.state = 2042; + this.match(PostgreSqlParser.KW_AS); + } + } - this.state = 2937; - this.sconst(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 2938; - this.match(PostgreSqlParser.KW_NULL); - this.state = 2940; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 2939; - this.opt_as(); - } - } + this.state = 2045; + this.sconst(); + } + break; + case 4: + { + this.state = 2046; + this.match(PostgreSqlParser.KW_CSV); + } + break; + case 5: + { + this.state = 2047; + this.match(PostgreSqlParser.KW_HEADER); + } + break; + case 6: + { + this.state = 2048; + this.match(PostgreSqlParser.KW_FORCE); + this.state = 2049; + this.match(PostgreSqlParser.KW_QUOTE); + this.state = 2052; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 145, this.context) ) { + case 1: + { + this.state = 2050; + this.column_list(); + } + break; + case 2: + { + this.state = 2051; + this.match(PostgreSqlParser.STAR); + } + break; + } + } + break; + case 7: + { + this.state = 2054; + this.match(PostgreSqlParser.KW_FORCE); + this.state = 2056; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 2055; + this.match(PostgreSqlParser.KW_NOT); + } + } - this.state = 2942; - this.sconst(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 2943; - this.match(PostgreSqlParser.KW_CSV); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 2944; - this.match(PostgreSqlParser.KW_HEADER); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 2945; - this.match(PostgreSqlParser.KW_QUOTE); - this.state = 2947; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 2946; - this.opt_as(); + this.state = 2058; + this.match(PostgreSqlParser.KW_NULL); + this.state = 2059; + this.column_list(); + } + break; + case 8: + { + this.state = 2060; + this.match(PostgreSqlParser.KW_ENCODING); + this.state = 2061; + this.sconst(); + } + break; + } + } } + this.state = 2066; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 148, this.context); } - - this.state = 2949; - this.sconst(); } break; - case 8: - this.enterOuterAlt(localContext, 8); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 2950; - this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 2952; + this.state = 2067; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2068; + this.copy_generic_opt_elem(); + this.state = 2073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 36) { + while (_la === 6) { + { { - this.state = 2951; - this.opt_as(); + this.state = 2069; + this.match(PostgreSqlParser.COMMA); + this.state = 2070; + this.copy_generic_opt_elem(); } + } + this.state = 2075; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 2954; - this.sconst(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 2955; - this.match(PostgreSqlParser.KW_FORCE); - this.state = 2956; - this.match(PostgreSqlParser.KW_QUOTE); - this.state = 2957; - this.column_list(); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 2958; - this.match(PostgreSqlParser.KW_FORCE); - this.state = 2959; - this.match(PostgreSqlParser.KW_QUOTE); - this.state = 2960; - this.match(PostgreSqlParser.STAR); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 2961; - this.match(PostgreSqlParser.KW_FORCE); - this.state = 2962; - this.match(PostgreSqlParser.KW_NOT); - this.state = 2963; - this.match(PostgreSqlParser.KW_NULL); - this.state = 2964; - this.column_list(); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 2965; - this.match(PostgreSqlParser.KW_FORCE); - this.state = 2966; - this.match(PostgreSqlParser.KW_NULL); - this.state = 2967; - this.column_list(); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 2968; - this.match(PostgreSqlParser.KW_ENCODING); - this.state = 2969; - this.sconst(); + this.state = 2076; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } @@ -11726,172 +10567,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_binary(): Opt_binaryContext { - let localContext = new Opt_binaryContext(this.context, this.state); - this.enterRule(localContext, 172, PostgreSqlParser.RULE_opt_binary); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2972; - this.match(PostgreSqlParser.KW_BINARY); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_delimiter(): Copy_delimiterContext { - let localContext = new Copy_delimiterContext(this.context, this.state); - this.enterRule(localContext, 174, PostgreSqlParser.RULE_copy_delimiter); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2975; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 2974; - this.opt_using(); - } - } - - this.state = 2977; - this.match(PostgreSqlParser.KW_DELIMITERS); - this.state = 2978; - this.sconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_using(): Opt_usingContext { - let localContext = new Opt_usingContext(this.context, this.state); - this.enterRule(localContext, 176, PostgreSqlParser.RULE_opt_using); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2980; - this.match(PostgreSqlParser.KW_USING); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_generic_opt_list(): Copy_generic_opt_listContext { - let localContext = new Copy_generic_opt_listContext(this.context, this.state); - this.enterRule(localContext, 178, PostgreSqlParser.RULE_copy_generic_opt_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2982; - this.copy_generic_opt_elem(); - this.state = 2987; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 2983; - this.match(PostgreSqlParser.COMMA); - this.state = 2984; - this.copy_generic_opt_elem(); - } - } - this.state = 2989; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public copy_generic_opt_elem(): Copy_generic_opt_elemContext { let localContext = new Copy_generic_opt_elemContext(this.context, this.state); - this.enterRule(localContext, 180, PostgreSqlParser.RULE_copy_generic_opt_elem); + this.enterRule(localContext, 118, PostgreSqlParser.RULE_copy_generic_opt_elem); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2990; + this.state = 2080; this.collabel(); - this.state = 2992; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 12804) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 420484101) !== 0) || ((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & 4227923969) !== 0) || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 4294967295) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 4294967295) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 4294967295) !== 0) || ((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 3223322623) !== 0) || ((((_la - 240)) & ~0x1F) === 0 && ((1 << (_la - 240)) & 4294967295) !== 0) || ((((_la - 272)) & ~0x1F) === 0 && ((1 << (_la - 272)) & 4294967295) !== 0) || ((((_la - 304)) & ~0x1F) === 0 && ((1 << (_la - 304)) & 4294967295) !== 0) || ((((_la - 336)) & ~0x1F) === 0 && ((1 << (_la - 336)) & 4294967295) !== 0) || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & 4294967295) !== 0) || ((((_la - 400)) & ~0x1F) === 0 && ((1 << (_la - 400)) & 4294967295) !== 0) || ((((_la - 432)) & ~0x1F) === 0 && ((1 << (_la - 432)) & 4290772991) !== 0) || ((((_la - 464)) & ~0x1F) === 0 && ((1 << (_la - 464)) & 4294967295) !== 0) || ((((_la - 496)) & ~0x1F) === 0 && ((1 << (_la - 496)) & 25165183) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 486582415) !== 0) || _la === 584) { - { - this.state = 2991; - this.copy_generic_opt_arg(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_generic_opt_arg(): Copy_generic_opt_argContext { - let localContext = new Copy_generic_opt_argContext(this.context, this.state); - this.enterRule(localContext, 182, PostgreSqlParser.RULE_copy_generic_opt_arg); - try { - this.state = 3001; + this.state = 2095; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AND: @@ -12317,9 +11002,8 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 2994; + this.state = 2081; this.opt_boolean_or_string(); } break; @@ -12327,97 +11011,49 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: - this.enterOuterAlt(localContext, 2); { - this.state = 2995; + this.state = 2082; this.numericonly(); } break; case PostgreSqlParser.STAR: - this.enterOuterAlt(localContext, 3); { - this.state = 2996; + this.state = 2083; this.match(PostgreSqlParser.STAR); } break; case PostgreSqlParser.OPEN_PAREN: - this.enterOuterAlt(localContext, 4); { - this.state = 2997; + this.state = 2084; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2998; - this.copy_generic_opt_arg_list(); - this.state = 2999; + this.state = 2085; + this.opt_boolean_or_string_column(); + this.state = 2090; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 2086; + this.match(PostgreSqlParser.COMMA); + this.state = 2087; + this.opt_boolean_or_string_column(); + } + } + this.state = 2092; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2093; this.match(PostgreSqlParser.CLOSE_PAREN); } break; + case PostgreSqlParser.CLOSE_PAREN: + case PostgreSqlParser.COMMA: + break; default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_generic_opt_arg_list(): Copy_generic_opt_arg_listContext { - let localContext = new Copy_generic_opt_arg_listContext(this.context, this.state); - this.enterRule(localContext, 184, PostgreSqlParser.RULE_copy_generic_opt_arg_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3003; - this.copy_generic_opt_arg_list_item(); - this.state = 3008; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 3004; - this.match(PostgreSqlParser.COMMA); - this.state = 3005; - this.copy_generic_opt_arg_list_item(); - } - } - this.state = 3010; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + break; } - } - finally { - this.exitRule(); - } - return localContext; - } - public copy_generic_opt_arg_list_item(): Copy_generic_opt_arg_list_itemContext { - let localContext = new Copy_generic_opt_arg_list_itemContext(this.context, this.state); - this.enterRule(localContext, 186, PostgreSqlParser.RULE_copy_generic_opt_arg_list_item); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3011; - this.opt_boolean_or_string_column(); } } catch (re) { @@ -12436,113 +11072,113 @@ export class PostgreSqlParser extends SQLParserBase { } public createstmt(): CreatestmtContext { let localContext = new CreatestmtContext(this.context, this.state); - this.enterRule(localContext, 188, PostgreSqlParser.RULE_createstmt); + this.enterRule(localContext, 120, PostgreSqlParser.RULE_createstmt); let _la: number; try { localContext = new ColumnCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3013; + this.state = 2097; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3015; + this.state = 2099; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 3014; + this.state = 2098; this.opttemp(); } } - this.state = 3017; + this.state = 2101; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3019; + this.state = 2103; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 153, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 154, this.context) ) { case 1: { - this.state = 3018; + this.state = 2102; this.opt_if_not_exists(); } break; } - this.state = 3021; + this.state = 2105; this.table_name_create(); - this.state = 3087; + this.state = 2171; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 3022; + this.state = 2106; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3024; + this.state = 2108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 3023; - this.table_column_list(); + this.state = 2107; + this.tableelementlist(); } } - this.state = 3026; + this.state = 2110; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3028; + this.state = 2112; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 155, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 156, this.context) ) { case 1: { - this.state = 3027; + this.state = 2111; this.optinherit(); } break; } - this.state = 3031; + this.state = 2115; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 156, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { case 1: { - this.state = 3030; - this.optpartitionspec(); + this.state = 2114; + this.partitionspec(); } break; } - this.state = 3034; + this.state = 2118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3033; + this.state = 2117; this.table_access_method_clause(); } } - this.state = 3037; + this.state = 2121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 158, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { case 1: { - this.state = 3036; + this.state = 2120; this.optwith(); } break; } - this.state = 3040; + this.state = 2124; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 3039; + this.state = 2123; this.oncommitoption(); } } - this.state = 3043; + this.state = 2127; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 160, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { case 1: { - this.state = 3042; + this.state = 2126; this.opttablespace(); } break; @@ -12551,66 +11187,66 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_OF: { - this.state = 3045; + this.state = 2129; this.match(PostgreSqlParser.KW_OF); - this.state = 3046; + this.state = 2130; this.any_name(); - this.state = 3048; + this.state = 2132; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 162, this.context) ) { case 1: { - this.state = 3047; + this.state = 2131; this.opttypedtableelementlist(); } break; } - this.state = 3051; + this.state = 2135; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 162, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { case 1: { - this.state = 3050; - this.optpartitionspec(); + this.state = 2134; + this.partitionspec(); } break; } - this.state = 3054; + this.state = 2138; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3053; + this.state = 2137; this.table_access_method_clause(); } } - this.state = 3057; + this.state = 2141; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 164, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { case 1: { - this.state = 3056; + this.state = 2140; this.optwith(); } break; } - this.state = 3060; + this.state = 2144; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 3059; + this.state = 2143; this.oncommitoption(); } } - this.state = 3063; + this.state = 2147; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 166, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: { - this.state = 3062; + this.state = 2146; this.opttablespace(); } break; @@ -12619,70 +11255,70 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_PARTITION: { - this.state = 3065; + this.state = 2149; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 3066; + this.state = 2150; this.match(PostgreSqlParser.KW_OF); - this.state = 3067; + this.state = 2151; this.qualified_name(); - this.state = 3069; + this.state = 2153; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3068; + this.state = 2152; this.opttypedtableelementlist(); } } - this.state = 3071; + this.state = 2155; this.partitionboundspec(); - this.state = 3073; + this.state = 2157; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 168, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { case 1: { - this.state = 3072; - this.optpartitionspec(); + this.state = 2156; + this.partitionspec(); } break; } - this.state = 3076; + this.state = 2160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3075; + this.state = 2159; this.table_access_method_clause(); } } - this.state = 3079; + this.state = 2163; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 170, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: { - this.state = 3078; + this.state = 2162; this.optwith(); } break; } - this.state = 3082; + this.state = 2166; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 3081; + this.state = 2165; this.oncommitoption(); } } - this.state = 3085; + this.state = 2169; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 172, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { case 1: { - this.state = 3084; + this.state = 2168; this.opttablespace(); } break; @@ -12710,48 +11346,40 @@ export class PostgreSqlParser extends SQLParserBase { } public opttemp(): OpttempContext { let localContext = new OpttempContext(this.context, this.state); - this.enterRule(localContext, 190, PostgreSqlParser.RULE_opttemp); + this.enterRule(localContext, 122, PostgreSqlParser.RULE_opttemp); let _la: number; try { - this.state = 3096; + this.state = 2178; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEMPORARY: this.enterOuterAlt(localContext, 1); { - this.state = 3089; + this.state = 2173; this.match(PostgreSqlParser.KW_TEMPORARY); } break; case PostgreSqlParser.KW_TEMP: this.enterOuterAlt(localContext, 2); { - this.state = 3090; + this.state = 2174; this.match(PostgreSqlParser.KW_TEMP); } break; + case PostgreSqlParser.KW_GLOBAL: case PostgreSqlParser.KW_LOCAL: this.enterOuterAlt(localContext, 3); { - this.state = 3091; - this.match(PostgreSqlParser.KW_LOCAL); - this.state = 3092; + this.state = 2175; _la = this.tokenStream.LA(1); - if(!(_la === 352 || _la === 354)) { + if(!(_la === 213 || _la === 254)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - } - break; - case PostgreSqlParser.KW_GLOBAL: - this.enterOuterAlt(localContext, 4); - { - this.state = 3093; - this.match(PostgreSqlParser.KW_GLOBAL); - this.state = 3094; + this.state = 2176; _la = this.tokenStream.LA(1); if(!(_la === 352 || _la === 354)) { this.errorHandler.recoverInline(this); @@ -12763,9 +11391,9 @@ export class PostgreSqlParser extends SQLParserBase { } break; case PostgreSqlParser.KW_UNLOGGED: - this.enterOuterAlt(localContext, 5); + this.enterOuterAlt(localContext, 4); { - this.state = 3095; + this.state = 2177; this.match(PostgreSqlParser.KW_UNLOGGED); } break; @@ -12787,107 +11415,35 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public table_column_list(): Table_column_listContext { - let localContext = new Table_column_listContext(this.context, this.state); - this.enterRule(localContext, 192, PostgreSqlParser.RULE_table_column_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3098; - this.tableelementlist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opttableelementlist(): OpttableelementlistContext { - let localContext = new OpttableelementlistContext(this.context, this.state); - this.enterRule(localContext, 194, PostgreSqlParser.RULE_opttableelementlist); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3100; - this.tableelementlist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public opttypedtableelementlist(): OpttypedtableelementlistContext { let localContext = new OpttypedtableelementlistContext(this.context, this.state); - this.enterRule(localContext, 196, PostgreSqlParser.RULE_opttypedtableelementlist); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3102; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3103; - this.typedtableelementlist(); - this.state = 3104; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tableelementlist(): TableelementlistContext { - let localContext = new TableelementlistContext(this.context, this.state); - this.enterRule(localContext, 198, PostgreSqlParser.RULE_tableelementlist); + this.enterRule(localContext, 124, PostgreSqlParser.RULE_opttypedtableelementlist); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3106; - this.tableelement(); - this.state = 3111; + this.state = 2180; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2181; + this.typedtableelement(); + this.state = 2186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3107; + this.state = 2182; this.match(PostgreSqlParser.COMMA); - this.state = 3108; - this.tableelement(); + this.state = 2183; + this.typedtableelement(); } } - this.state = 3113; + this.state = 2188; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 2189; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -12904,28 +11460,28 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public typedtableelementlist(): TypedtableelementlistContext { - let localContext = new TypedtableelementlistContext(this.context, this.state); - this.enterRule(localContext, 200, PostgreSqlParser.RULE_typedtableelementlist); + public tableelementlist(): TableelementlistContext { + let localContext = new TableelementlistContext(this.context, this.state); + this.enterRule(localContext, 126, PostgreSqlParser.RULE_tableelementlist); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3114; - this.typedtableelement(); - this.state = 3119; + this.state = 2191; + this.tableelement(); + this.state = 2196; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3115; + this.state = 2192; this.match(PostgreSqlParser.COMMA); - this.state = 3116; - this.typedtableelement(); + this.state = 2193; + this.tableelement(); } } - this.state = 3121; + this.state = 2198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12947,30 +11503,68 @@ export class PostgreSqlParser extends SQLParserBase { } public tableelement(): TableelementContext { let localContext = new TableelementContext(this.context, this.state); - this.enterRule(localContext, 202, PostgreSqlParser.RULE_tableelement); + this.enterRule(localContext, 128, PostgreSqlParser.RULE_tableelement); + let _la: number; try { - this.state = 3125; + this.state = 2214; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 177, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 180, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3122; + this.state = 2199; this.column_def(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3123; - this.tablelikeclause(); + this.state = 2200; + this.match(PostgreSqlParser.KW_LIKE); + this.state = 2201; + this.qualified_name(); + this.state = 2206; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 200 || _la === 224) { + { + { + this.state = 2202; + _la = this.tokenStream.LA(1); + if(!(_la === 200 || _la === 224)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2203; + this.tablelikeoption(); + } + } + this.state = 2208; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3124; - this.tableconstraint(); + this.state = 2211; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 45) { + { + this.state = 2209; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 2210; + this.colid(); + } + } + + this.state = 2213; + this.constraintelem(); } break; } @@ -12991,23 +11585,62 @@ export class PostgreSqlParser extends SQLParserBase { } public typedtableelement(): TypedtableelementContext { let localContext = new TypedtableelementContext(this.context, this.state); - this.enterRule(localContext, 204, PostgreSqlParser.RULE_typedtableelement); + this.enterRule(localContext, 130, PostgreSqlParser.RULE_typedtableelement); + let _la: number; try { - this.state = 3129; + this.state = 2232; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 178, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3127; - this.columnOptions(); + this.state = 2216; + this.column_name_create(); + this.state = 2219; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 2217; + this.match(PostgreSqlParser.KW_WITH); + this.state = 2218; + this.match(PostgreSqlParser.KW_OPTIONS); + } + } + + this.state = 2224; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2059) !== 0) || ((((_la - 77)) & ~0x1F) === 0 && ((1 << (_la - 77)) & 2097923) !== 0) || _la === 438) { + { + { + this.state = 2221; + this.colconstraint(); + } + } + this.state = 2226; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3128; - this.tableconstraint(); + this.state = 2229; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 45) { + { + this.state = 2227; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 2228; + this.colid(); + } + } + + this.state = 2231; + this.constraintelem(); } break; } @@ -13028,160 +11661,125 @@ export class PostgreSqlParser extends SQLParserBase { } public column_def(): Column_defContext { let localContext = new Column_defContext(this.context, this.state); - this.enterRule(localContext, 206, PostgreSqlParser.RULE_column_def); + this.enterRule(localContext, 132, PostgreSqlParser.RULE_column_def); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3131; + this.state = 2234; this.column_name_create(); - this.state = 3132; + this.state = 2235; this.typename(); - this.state = 3134; + this.state = 2237; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 179, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: { - this.state = 3133; + this.state = 2236; this.create_generic_options(); } break; } - this.state = 3137; + this.state = 2248; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 180, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: { - this.state = 3136; - this.storageCluase(); + this.state = 2239; + this.match(PostgreSqlParser.KW_STORAGE); + this.state = 2246; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { + case 1: + { + this.state = 2240; + this.match(PostgreSqlParser.KW_PLAIN); + } + break; + case 2: + { + this.state = 2241; + this.match(PostgreSqlParser.KW_EXTERNAL); + } + break; + case 3: + { + this.state = 2242; + this.match(PostgreSqlParser.KW_EXTENDED); + } + break; + case 4: + { + this.state = 2243; + this.match(PostgreSqlParser.KW_MAIN); + } + break; + case 5: + { + this.state = 2244; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + case 6: + { + this.state = 2245; + this.colid(); + } + break; + } } break; } - this.state = 3140; + this.state = 2252; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 543) { { - this.state = 3139; - this.compressionCluase(); + this.state = 2250; + this.match(PostgreSqlParser.KW_COMPRESSION); + this.state = 2251; + this.colid(); } } - this.state = 3144; + this.state = 2255; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 182, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 189, this.context) ) { case 1: { - this.state = 3142; - this.match(PostgreSqlParser.KW_COLLATE); - this.state = 3143; - this.any_name(); + this.state = 2254; + this.opt_collate_clause(); } break; } - this.state = 3148; + this.state = 2259; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { case 1: { - this.state = 3146; + this.state = 2257; this.match(PostgreSqlParser.KW_WITH); - this.state = 3147; + this.state = 2258; this.match(PostgreSqlParser.KW_OPTIONS); } break; } - this.state = 3150; - this.colquallist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public compressionCluase(): CompressionCluaseContext { - let localContext = new CompressionCluaseContext(this.context, this.state); - this.enterRule(localContext, 208, PostgreSqlParser.RULE_compressionCluase); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3152; - this.match(PostgreSqlParser.KW_COMPRESSION); - this.state = 3153; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public storageCluase(): StorageCluaseContext { - let localContext = new StorageCluaseContext(this.context, this.state); - this.enterRule(localContext, 210, PostgreSqlParser.RULE_storageCluase); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3155; - this.match(PostgreSqlParser.KW_STORAGE); - this.state = 3162; + this.state = 2264; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { - case 1: - { - this.state = 3156; - this.match(PostgreSqlParser.KW_PLAIN); - } - break; - case 2: - { - this.state = 3157; - this.match(PostgreSqlParser.KW_EXTERNAL); - } - break; - case 3: - { - this.state = 3158; - this.match(PostgreSqlParser.KW_EXTENDED); - } - break; - case 4: - { - this.state = 3159; - this.match(PostgreSqlParser.KW_MAIN); - } - break; - case 5: - { - this.state = 3160; - this.match(PostgreSqlParser.KW_DEFAULT); - } - break; - case 6: - { - this.state = 3161; - this.colid(); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 191, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 2261; + this.colconstraint(); + } + } } - break; + this.state = 2266; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 191, this.context); } } } @@ -13199,68 +11797,66 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public columnOptions(): ColumnOptionsContext { - let localContext = new ColumnOptionsContext(this.context, this.state); - this.enterRule(localContext, 212, PostgreSqlParser.RULE_columnOptions); + public colconstraint(): ColconstraintContext { + let localContext = new ColconstraintContext(this.context, this.state); + this.enterRule(localContext, 134, PostgreSqlParser.RULE_colconstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3164; - this.column_name_create(); - this.state = 3167; + this.state = 2269; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105) { + if (_la === 45) { { - this.state = 3165; - this.match(PostgreSqlParser.KW_WITH); - this.state = 3166; - this.match(PostgreSqlParser.KW_OPTIONS); + this.state = 2267; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 2268; + this.colid(); } } - this.state = 3169; - this.colquallist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public colquallist(): ColquallistContext { - let localContext = new ColquallistContext(this.context, this.state); - this.enterRule(localContext, 214, PostgreSqlParser.RULE_colquallist); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 3174; + this.state = 2271; + this.colconstraintelem(); + this.state = 2276; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 186, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 194, this.context) ) { + case 1: + { + this.state = 2273; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { { - this.state = 3171; - this.colconstraint(); - } + this.state = 2272; + this.match(PostgreSqlParser.KW_NOT); } } - this.state = 3176; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 186, this.context); + + this.state = 2275; + this.match(PostgreSqlParser.KW_DEFERRABLE); + } + break; + } + this.state = 2280; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 69) { + { + this.state = 2278; + this.match(PostgreSqlParser.KW_INITIALLY); + this.state = 2279; + _la = this.tokenStream.LA(1); + if(!(_la === 180 || _la === 221)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } + } } catch (re) { @@ -13277,250 +11873,223 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public colconstraint(): ColconstraintContext { - let localContext = new ColconstraintContext(this.context, this.state); - this.enterRule(localContext, 216, PostgreSqlParser.RULE_colconstraint); + public colconstraintelem(): ColconstraintelemContext { + let localContext = new ColconstraintelemContext(this.context, this.state); + this.enterRule(localContext, 136, PostgreSqlParser.RULE_colconstraintelem); let _la: number; try { - this.state = 3195; + this.state = 2362; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 192, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3179; + this.state = 2283; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 45) { + if (_la === 77) { { - this.state = 3177; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 3178; - this.name(); + this.state = 2282; + this.match(PostgreSqlParser.KW_NOT); } } - this.state = 3181; - this.colconstraintelem(); - this.state = 3183; + this.state = 2285; + this.match(PostgreSqlParser.KW_NULL); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 2286; + this.match(PostgreSqlParser.KW_UNIQUE); + this.state = 2288; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 188, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 3182; - this.deferrable_trigger(); + this.state = 2287; + this.opt_definition(); } break; } - this.state = 3186; + this.state = 2291; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 69) { + if (_la === 100) { { - this.state = 3185; - this.initially_trigger(); + this.state = 2290; + this.optconstablespace(); } } } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 3188; - this.colconstraintelem(); - this.state = 3190; + this.state = 2293; + this.match(PostgreSqlParser.KW_UNIQUE); + this.state = 2299; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 200, this.context) ) { case 1: { - this.state = 3189; - this.deferrable_trigger(); + this.state = 2294; + this.match(PostgreSqlParser.KW_NULLS); + this.state = 2296; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 2295; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 2298; + this.match(PostgreSqlParser.KW_DISTINCT); } break; } - this.state = 3193; + { + this.state = 2303; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 69) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { + case 1: { - this.state = 3192; - this.initially_trigger(); + this.state = 2301; + this.match(PostgreSqlParser.KW_INCLUDE); + this.state = 2302; + this.index_params(); } + break; } - + this.state = 2306; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { + case 1: + { + this.state = 2305; + this.with_clause(); + } + break; } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public colconstraintelem(): ColconstraintelemContext { - let localContext = new ColconstraintelemContext(this.context, this.state); - this.enterRule(localContext, 218, PostgreSqlParser.RULE_colconstraintelem); - let _la: number; - try { - this.state = 3255; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 3197; - this.match(PostgreSqlParser.KW_NOT); - this.state = 3198; - this.match(PostgreSqlParser.KW_NULL); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 3199; - this.match(PostgreSqlParser.KW_NULL); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 3200; - this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 3202; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 193, this.context) ) { - case 1: - { - this.state = 3201; - this.opt_definition(); - } - break; - } - this.state = 3205; + this.state = 2309; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3204; + this.state = 2308; this.optconstablespace(); } } + } } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3207; - this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 3209; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 195, this.context) ) { - case 1: - { - this.state = 3208; - this.nulls_distinct(); - } - break; - } - this.state = 3211; - this.index_paramenters_create(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 3212; + this.state = 2311; this.match(PostgreSqlParser.KW_PRIMARY); - this.state = 3213; + this.state = 2312; this.match(PostgreSqlParser.KW_KEY); - this.state = 3215; + this.state = 2314; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 196, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) { case 1: { - this.state = 3214; + this.state = 2313; this.opt_definition(); } break; } - this.state = 3218; + this.state = 2317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3217; + this.state = 2316; this.optconstablespace(); } } } break; - case 6: - this.enterOuterAlt(localContext, 6); + case 5: + this.enterOuterAlt(localContext, 5); { - this.state = 3220; + this.state = 2319; this.match(PostgreSqlParser.KW_CHECK); - this.state = 3221; + this.state = 2320; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3222; - this.a_expr(); - this.state = 3223; + this.state = 2321; + this.expression(); + this.state = 2322; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3225; + this.state = 2325; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 198, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 206, this.context) ) { case 1: { - this.state = 3224; - this.opt_no_inherit(); + this.state = 2323; + this.match(PostgreSqlParser.KW_NO); + this.state = 2324; + this.match(PostgreSqlParser.KW_INHERIT); } break; } } break; - case 7: - this.enterOuterAlt(localContext, 7); + case 6: + this.enterOuterAlt(localContext, 6); { - this.state = 3227; + this.state = 2327; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 3228; - this.b_expr(0); + this.state = 2328; + this.primaryExpression(0); } break; - case 8: - this.enterOuterAlt(localContext, 8); + case 7: + this.enterOuterAlt(localContext, 7); { - this.state = 3229; + this.state = 2329; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 3230; + this.state = 2330; this.generated_when(); - this.state = 3231; + this.state = 2331; this.match(PostgreSqlParser.KW_AS); - this.state = 3241; + this.state = 2348; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IDENTITY: { - this.state = 3232; + this.state = 2332; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 3234; + this.state = 2341; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 199, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { case 1: { - this.state = 3233; - this.optparenthesizedseqoptlist(); + this.state = 2333; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2335; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 2334; + this.seqoptelem(); + } + } + this.state = 2337; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 36 || _la === 148 || _la === 225 || ((((_la - 260)) & ~0x1F) === 0 && ((1 << (_la - 260)) & 2097669) !== 0) || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67125249) !== 0)); + this.state = 2339; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } @@ -13528,13 +12097,13 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 3236; + this.state = 2343; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3237; - this.a_expr(); - this.state = 3238; + this.state = 2344; + this.expression(); + this.state = 2345; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3239; + this.state = 2346; this.match(PostgreSqlParser.KW_STORED); } break; @@ -13543,50 +12112,50 @@ export class PostgreSqlParser extends SQLParserBase { } } break; - case 9: - this.enterOuterAlt(localContext, 9); + case 8: + this.enterOuterAlt(localContext, 8); { - this.state = 3243; + this.state = 2350; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 3244; + this.state = 2351; this.qualified_name(); - this.state = 3246; + this.state = 2353; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { case 1: { - this.state = 3245; + this.state = 2352; this.opt_column_list(); } break; } - this.state = 3249; + this.state = 2356; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { case 1: { - this.state = 3248; + this.state = 2355; this.key_match(); } break; } - this.state = 3252; + this.state = 2359; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 3251; + this.state = 2358; this.key_actions(); } } } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 9: + this.enterOuterAlt(localContext, 9); { - this.state = 3254; - this.opt_collate(); + this.state = 2361; + this.opt_collate_clause(); } break; } @@ -13605,63 +12174,26 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public nulls_distinct(): Nulls_distinctContext { - let localContext = new Nulls_distinctContext(this.context, this.state); - this.enterRule(localContext, 220, PostgreSqlParser.RULE_nulls_distinct); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3257; - this.match(PostgreSqlParser.KW_NULLS); - this.state = 3259; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77) { - { - this.state = 3258; - this.match(PostgreSqlParser.KW_NOT); - } - } - - this.state = 3261; - this.match(PostgreSqlParser.KW_DISTINCT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public generated_when(): Generated_whenContext { let localContext = new Generated_whenContext(this.context, this.state); - this.enterRule(localContext, 222, PostgreSqlParser.RULE_generated_when); + this.enterRule(localContext, 138, PostgreSqlParser.RULE_generated_when); try { - this.state = 3266; + this.state = 2367; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALWAYS: this.enterOuterAlt(localContext, 1); { - this.state = 3263; + this.state = 2364; this.match(PostgreSqlParser.KW_ALWAYS); } break; case PostgreSqlParser.KW_BY: this.enterOuterAlt(localContext, 2); { - this.state = 3264; + this.state = 2365; this.match(PostgreSqlParser.KW_BY); - this.state = 3265; + this.state = 2366; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -13683,163 +12215,14 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public deferrable_trigger(): Deferrable_triggerContext { - let localContext = new Deferrable_triggerContext(this.context, this.state); - this.enterRule(localContext, 224, PostgreSqlParser.RULE_deferrable_trigger); - try { - this.state = 3271; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_DEFERRABLE: - this.enterOuterAlt(localContext, 1); - { - this.state = 3268; - this.match(PostgreSqlParser.KW_DEFERRABLE); - } - break; - case PostgreSqlParser.KW_NOT: - this.enterOuterAlt(localContext, 2); - { - this.state = 3269; - this.match(PostgreSqlParser.KW_NOT); - this.state = 3270; - this.match(PostgreSqlParser.KW_DEFERRABLE); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public initially_trigger(): Initially_triggerContext { - let localContext = new Initially_triggerContext(this.context, this.state); - this.enterRule(localContext, 226, PostgreSqlParser.RULE_initially_trigger); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3273; - this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 3274; - _la = this.tokenStream.LA(1); - if(!(_la === 180 || _la === 221)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tablelikeclause(): TablelikeclauseContext { - let localContext = new TablelikeclauseContext(this.context, this.state); - this.enterRule(localContext, 228, PostgreSqlParser.RULE_tablelikeclause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3276; - this.match(PostgreSqlParser.KW_LIKE); - this.state = 3277; - this.qualified_name(); - this.state = 3278; - this.tablelikeoptionlist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tablelikeoptionlist(): TablelikeoptionlistContext { - let localContext = new TablelikeoptionlistContext(this.context, this.state); - this.enterRule(localContext, 230, PostgreSqlParser.RULE_tablelikeoptionlist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3284; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 200 || _la === 224) { - { - { - this.state = 3280; - _la = this.tokenStream.LA(1); - if(!(_la === 200 || _la === 224)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 3281; - this.tablelikeoption(); - } - } - this.state = 3286; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public tablelikeoption(): TablelikeoptionContext { let localContext = new TablelikeoptionContext(this.context, this.state); - this.enterRule(localContext, 232, PostgreSqlParser.RULE_tablelikeoption); + this.enterRule(localContext, 140, PostgreSqlParser.RULE_tablelikeoption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3287; + this.state = 2369; _la = this.tokenStream.LA(1); if(!(_la === 30 || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 524321) !== 0) || _la === 219 || _la === 227 || _la === 342 || _la === 345 || _la === 438)) { this.errorHandler.recoverInline(this); @@ -13864,197 +12247,145 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public tableconstraint(): TableconstraintContext { - let localContext = new TableconstraintContext(this.context, this.state); - this.enterRule(localContext, 234, PostgreSqlParser.RULE_tableconstraint); - try { - this.state = 3294; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CONSTRAINT: - this.enterOuterAlt(localContext, 1); - { - this.state = 3289; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 3290; - this.name(); - this.state = 3291; - this.constraintelem(); - } - break; - case PostgreSqlParser.KW_CHECK: - case PostgreSqlParser.KW_FOREIGN: - case PostgreSqlParser.KW_PRIMARY: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_EXCLUDE: - this.enterOuterAlt(localContext, 2); - { - this.state = 3293; - this.constraintelem(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public constraintelem(): ConstraintelemContext { let localContext = new ConstraintelemContext(this.context, this.state); - this.enterRule(localContext, 236, PostgreSqlParser.RULE_constraintelem); + this.enterRule(localContext, 142, PostgreSqlParser.RULE_constraintelem); let _la: number; try { - this.state = 3382; + let alternative: number; + this.state = 2467; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CHECK: this.enterOuterAlt(localContext, 1); { - this.state = 3296; + this.state = 2371; this.match(PostgreSqlParser.KW_CHECK); - this.state = 3297; + this.state = 2372; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3298; - this.a_expr(); - this.state = 3299; + this.state = 2373; + this.expression(); + this.state = 2374; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3300; - this.constraintattributespec(); + this.state = 2378; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 215, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 2375; + this.constraintattributeElem(); + } + } + } + this.state = 2380; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 215, this.context); + } } break; + case PostgreSqlParser.KW_PRIMARY: case PostgreSqlParser.KW_UNIQUE: this.enterOuterAlt(localContext, 2); { - this.state = 3302; - this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 3320; + this.state = 2384; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.KW_UNIQUE: { - this.state = 3303; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3304; - this.column_list(); - this.state = 3305; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3307; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { - case 1: - { - this.state = 3306; - this.opt_c_include(); - } - break; - } - this.state = 3310; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { - case 1: - { - this.state = 3309; - this.opt_definition(); - } - break; - } - this.state = 3313; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 3312; - this.optconstablespace(); - } - } - - this.state = 3315; - this.constraintattributespec(); + this.state = 2381; + this.match(PostgreSqlParser.KW_UNIQUE); } break; - case PostgreSqlParser.KW_USING: + case PostgreSqlParser.KW_PRIMARY: { - this.state = 3317; - this.existingindex(); - this.state = 3318; - this.constraintattributespec(); + { + this.state = 2382; + this.match(PostgreSqlParser.KW_PRIMARY); + this.state = 2383; + this.match(PostgreSqlParser.KW_KEY); + } } break; default: throw new antlr.NoViableAltException(this); } - } - break; - case PostgreSqlParser.KW_PRIMARY: - this.enterOuterAlt(localContext, 3); - { - this.state = 3322; - this.match(PostgreSqlParser.KW_PRIMARY); - this.state = 3323; - this.match(PostgreSqlParser.KW_KEY); - this.state = 3341; + this.state = 2409; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 3324; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3325; - this.column_list(); - this.state = 3326; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3328; + this.state = 2386; + this.opt_column_list(); + this.state = 2388; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 214, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 217, this.context) ) { case 1: { - this.state = 3327; + this.state = 2387; this.opt_c_include(); } break; } - this.state = 3331; + this.state = 2391; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 215, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { case 1: { - this.state = 3330; + this.state = 2390; this.opt_definition(); } break; } - this.state = 3334; + this.state = 2394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3333; + this.state = 2393; this.optconstablespace(); } } - this.state = 3336; - this.constraintattributespec(); + this.state = 2399; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 220, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 2396; + this.constraintattributeElem(); + } + } + } + this.state = 2401; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 220, this.context); + } } break; case PostgreSqlParser.KW_USING: { - this.state = 3338; + this.state = 2402; this.existingindex(); - this.state = 3339; - this.constraintattributespec(); + this.state = 2406; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 2403; + this.constraintattributeElem(); + } + } + } + this.state = 2408; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); + } } break; default: @@ -14063,119 +12394,165 @@ export class PostgreSqlParser extends SQLParserBase { } break; case PostgreSqlParser.KW_EXCLUDE: - this.enterOuterAlt(localContext, 4); + this.enterOuterAlt(localContext, 3); { - this.state = 3343; + this.state = 2411; this.match(PostgreSqlParser.KW_EXCLUDE); - this.state = 3345; + this.state = 2413; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3344; - this.access_method_clause(); + this.state = 2412; + this.table_access_method_clause(); } } - this.state = 3347; + this.state = 2415; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3348; - this.exclusionconstraintlist(); - this.state = 3349; + this.state = 2416; + this.exclusionconstraintelem(); + this.state = 2421; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 2417; + this.match(PostgreSqlParser.COMMA); + this.state = 2418; + this.exclusionconstraintelem(); + } + } + this.state = 2423; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2424; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3351; + this.state = 2426; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 219, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 225, this.context) ) { case 1: { - this.state = 3350; + this.state = 2425; this.opt_c_include(); } break; } - this.state = 3354; + this.state = 2429; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 226, this.context) ) { case 1: { - this.state = 3353; + this.state = 2428; this.opt_definition(); } break; } - this.state = 3357; + this.state = 2432; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3356; + this.state = 2431; this.optconstablespace(); } } - this.state = 3360; + this.state = 2439; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 3359; - this.exclusionwhereclause(); + this.state = 2434; + this.match(PostgreSqlParser.KW_WHERE); + this.state = 2435; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2436; + this.expression(); + this.state = 2437; + this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 3362; - this.constraintattributespec(); + this.state = 2444; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 229, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 2441; + this.constraintattributeElem(); + } + } + } + this.state = 2446; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 229, this.context); + } } break; case PostgreSqlParser.KW_FOREIGN: - this.enterOuterAlt(localContext, 5); + this.enterOuterAlt(localContext, 4); { - this.state = 3364; + this.state = 2447; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3365; + this.state = 2448; this.match(PostgreSqlParser.KW_KEY); - this.state = 3366; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3367; - this.column_list(); - this.state = 3368; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3369; + this.state = 2449; + this.opt_column_list(); + this.state = 2450; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 3370; + this.state = 2451; this.qualified_name(); - this.state = 3372; + this.state = 2453; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 223, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { - this.state = 3371; + this.state = 2452; this.opt_column_list(); } break; } - this.state = 3375; + this.state = 2456; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 224, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { case 1: { - this.state = 3374; + this.state = 2455; this.key_match(); } break; } - this.state = 3378; + this.state = 2459; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 3377; + this.state = 2458; this.key_actions(); } } - this.state = 3380; - this.constraintattributespec(); + this.state = 2464; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 2461; + this.constraintattributeElem(); + } + } + } + this.state = 2466; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + } } break; default: @@ -14196,43 +12573,17 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_no_inherit(): Opt_no_inheritContext { - let localContext = new Opt_no_inheritContext(this.context, this.state); - this.enterRule(localContext, 238, PostgreSqlParser.RULE_opt_no_inherit); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3384; - this.match(PostgreSqlParser.KW_NO); - this.state = 3385; - this.match(PostgreSqlParser.KW_INHERIT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public opt_column_list(): Opt_column_listContext { let localContext = new Opt_column_listContext(this.context, this.state); - this.enterRule(localContext, 240, PostgreSqlParser.RULE_opt_column_list); + this.enterRule(localContext, 144, PostgreSqlParser.RULE_opt_column_list); try { this.enterOuterAlt(localContext, 1); { - this.state = 3387; + this.state = 2469; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3388; + this.state = 2470; this.column_list(); - this.state = 3389; + this.state = 2471; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14252,15 +12603,32 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_column_list_create(): Opt_column_list_createContext { let localContext = new Opt_column_list_createContext(this.context, this.state); - this.enterRule(localContext, 242, PostgreSqlParser.RULE_opt_column_list_create); + this.enterRule(localContext, 146, PostgreSqlParser.RULE_opt_column_list_create); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3391; + this.state = 2473; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3392; - this.column_list_create(); - this.state = 3393; + this.state = 2474; + this.column_name_create(); + this.state = 2479; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 2475; + this.match(PostgreSqlParser.COMMA); + this.state = 2476; + this.column_name_create(); + } + } + this.state = 2481; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2482; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14280,30 +12648,30 @@ export class PostgreSqlParser extends SQLParserBase { } public column_list(): Column_listContext { let localContext = new Column_listContext(this.context, this.state); - this.enterRule(localContext, 244, PostgreSqlParser.RULE_column_list); + this.enterRule(localContext, 148, PostgreSqlParser.RULE_column_list); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3395; + this.state = 2484; this.column_name(); - this.state = 3400; + this.state = 2489; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 227, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 236, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3396; + this.state = 2485; this.match(PostgreSqlParser.COMMA); - this.state = 3397; + this.state = 2486; this.column_name(); } } } - this.state = 3402; + this.state = 2491; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 227, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 236, this.context); } } } @@ -14321,61 +12689,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public column_list_create(): Column_list_createContext { - let localContext = new Column_list_createContext(this.context, this.state); - this.enterRule(localContext, 246, PostgreSqlParser.RULE_column_list_create); - let _la: number; + public opt_c_include(): Opt_c_includeContext { + let localContext = new Opt_c_includeContext(this.context, this.state); + this.enterRule(localContext, 150, PostgreSqlParser.RULE_opt_c_include); try { this.enterOuterAlt(localContext, 1); { - this.state = 3403; - this.column_name_create(); - this.state = 3408; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 3404; - this.match(PostgreSqlParser.COMMA); - this.state = 3405; - this.column_name_create(); - } - } - this.state = 3410; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_c_include(): Opt_c_includeContext { - let localContext = new Opt_c_includeContext(this.context, this.state); - this.enterRule(localContext, 248, PostgreSqlParser.RULE_opt_c_include); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3411; + this.state = 2492; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 3412; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3413; - this.column_list(); - this.state = 3414; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 2493; + this.opt_column_list(); } } catch (re) { @@ -14394,14 +12717,14 @@ export class PostgreSqlParser extends SQLParserBase { } public key_match(): Key_matchContext { let localContext = new Key_matchContext(this.context, this.state); - this.enterRule(localContext, 250, PostgreSqlParser.RULE_key_match); + this.enterRule(localContext, 152, PostgreSqlParser.RULE_key_match); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3416; + this.state = 2495; this.match(PostgreSqlParser.KW_MATCH); - this.state = 3417; + this.state = 2496; _la = this.tokenStream.LA(1); if(!(_la === 113 || _la === 284 || _la === 336)) { this.errorHandler.recoverInline(this); @@ -14426,75 +12749,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public exclusionconstraintlist(): ExclusionconstraintlistContext { - let localContext = new ExclusionconstraintlistContext(this.context, this.state); - this.enterRule(localContext, 252, PostgreSqlParser.RULE_exclusionconstraintlist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3419; - this.exclusionconstraintelem(); - this.state = 3424; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 3420; - this.match(PostgreSqlParser.COMMA); - this.state = 3421; - this.exclusionconstraintelem(); - } - } - this.state = 3426; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public exclusionconstraintelem(): ExclusionconstraintelemContext { let localContext = new ExclusionconstraintelemContext(this.context, this.state); - this.enterRule(localContext, 254, PostgreSqlParser.RULE_exclusionconstraintelem); + this.enterRule(localContext, 154, PostgreSqlParser.RULE_exclusionconstraintelem); try { this.enterOuterAlt(localContext, 1); { - this.state = 3427; + this.state = 2498; this.index_elem(); - this.state = 3428; + this.state = 2499; this.match(PostgreSqlParser.KW_WITH); - this.state = 3435; + this.state = 2506; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { case 1: { - this.state = 3429; + this.state = 2500; this.any_operator(); } break; case 2: { - this.state = 3430; + this.state = 2501; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3431; + this.state = 2502; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3432; + this.state = 2503; this.any_operator(); - this.state = 3433; + this.state = 2504; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -14515,73 +12797,46 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public exclusionwhereclause(): ExclusionwhereclauseContext { - let localContext = new ExclusionwhereclauseContext(this.context, this.state); - this.enterRule(localContext, 256, PostgreSqlParser.RULE_exclusionwhereclause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3437; - this.match(PostgreSqlParser.KW_WHERE); - this.state = 3438; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3439; - this.a_expr(); - this.state = 3440; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public key_actions(): Key_actionsContext { let localContext = new Key_actionsContext(this.context, this.state); - this.enterRule(localContext, 258, PostgreSqlParser.RULE_key_actions); + this.enterRule(localContext, 156, PostgreSqlParser.RULE_key_actions); + let _la: number; try { - this.state = 3450; + this.state = 2516; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 240, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3442; + this.state = 2508; this.key_update(); + this.state = 2510; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 80) { + { + this.state = 2509; + this.key_delete(); + } + } + } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3443; - this.key_delete(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 3444; - this.key_update(); - this.state = 3445; + this.state = 2512; this.key_delete(); + this.state = 2514; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 80) { + { + this.state = 2513; + this.key_update(); + } } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 3447; - this.key_delete(); - this.state = 3448; - this.key_update(); + } break; } @@ -14602,15 +12857,15 @@ export class PostgreSqlParser extends SQLParserBase { } public key_update(): Key_updateContext { let localContext = new Key_updateContext(this.context, this.state); - this.enterRule(localContext, 260, PostgreSqlParser.RULE_key_update); + this.enterRule(localContext, 158, PostgreSqlParser.RULE_key_update); try { this.enterOuterAlt(localContext, 1); { - this.state = 3452; + this.state = 2518; this.match(PostgreSqlParser.KW_ON); - this.state = 3453; + this.state = 2519; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 3454; + this.state = 2520; this.key_action(); } } @@ -14630,15 +12885,15 @@ export class PostgreSqlParser extends SQLParserBase { } public key_delete(): Key_deleteContext { let localContext = new Key_deleteContext(this.context, this.state); - this.enterRule(localContext, 262, PostgreSqlParser.RULE_key_delete); + this.enterRule(localContext, 160, PostgreSqlParser.RULE_key_delete); try { this.enterOuterAlt(localContext, 1); { - this.state = 3456; + this.state = 2522; this.match(PostgreSqlParser.KW_ON); - this.state = 3457; + this.state = 2523; this.match(PostgreSqlParser.KW_DELETE); - this.state = 3458; + this.state = 2524; this.key_action(); } } @@ -14658,41 +12913,41 @@ export class PostgreSqlParser extends SQLParserBase { } public key_action(): Key_actionContext { let localContext = new Key_actionContext(this.context, this.state); - this.enterRule(localContext, 264, PostgreSqlParser.RULE_key_action); + this.enterRule(localContext, 162, PostgreSqlParser.RULE_key_action); let _la: number; try { - this.state = 3469; + this.state = 2535; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 1); { - this.state = 3460; + this.state = 2526; this.match(PostgreSqlParser.KW_NO); - this.state = 3461; + this.state = 2527; this.match(PostgreSqlParser.KW_ACTION); } break; case PostgreSqlParser.KW_RESTRICT: this.enterOuterAlt(localContext, 2); { - this.state = 3462; + this.state = 2528; this.match(PostgreSqlParser.KW_RESTRICT); } break; case PostgreSqlParser.KW_CASCADE: this.enterOuterAlt(localContext, 3); { - this.state = 3463; + this.state = 2529; this.match(PostgreSqlParser.KW_CASCADE); } break; case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 4); { - this.state = 3464; + this.state = 2530; this.match(PostgreSqlParser.KW_SET); - this.state = 3465; + this.state = 2531; _la = this.tokenStream.LA(1); if(!(_la === 53 || _la === 78)) { this.errorHandler.recoverInline(this); @@ -14701,12 +12956,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3467; + this.state = 2533; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { case 1: { - this.state = 3466; + this.state = 2532; this.column_list(); } break; @@ -14733,17 +12988,17 @@ export class PostgreSqlParser extends SQLParserBase { } public optinherit(): OptinheritContext { let localContext = new OptinheritContext(this.context, this.state); - this.enterRule(localContext, 266, PostgreSqlParser.RULE_optinherit); + this.enterRule(localContext, 164, PostgreSqlParser.RULE_optinherit); try { this.enterOuterAlt(localContext, 1); { - this.state = 3471; + this.state = 2537; this.match(PostgreSqlParser.KW_INHERITS); - this.state = 3472; + this.state = 2538; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3473; + this.state = 2539; this.qualified_name_list(); - this.state = 3474; + this.state = 2540; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14761,89 +13016,41 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public optpartitionspec(): OptpartitionspecContext { - let localContext = new OptpartitionspecContext(this.context, this.state); - this.enterRule(localContext, 268, PostgreSqlParser.RULE_optpartitionspec); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3476; - this.partitionspec(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public partitionspec(): PartitionspecContext { let localContext = new PartitionspecContext(this.context, this.state); - this.enterRule(localContext, 270, PostgreSqlParser.RULE_partitionspec); + this.enterRule(localContext, 166, PostgreSqlParser.RULE_partitionspec); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3478; + this.state = 2542; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 3479; + this.state = 2543; this.match(PostgreSqlParser.KW_BY); - this.state = 3480; + this.state = 2544; this.colid(); - this.state = 3481; + this.state = 2545; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3482; - this.part_params(); - this.state = 3483; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public part_params(): Part_paramsContext { - let localContext = new Part_paramsContext(this.context, this.state); - this.enterRule(localContext, 272, PostgreSqlParser.RULE_part_params); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3485; + this.state = 2546; this.part_elem(); - this.state = 3490; + this.state = 2551; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3486; + this.state = 2547; this.match(PostgreSqlParser.COMMA); - this.state = 3487; + this.state = 2548; this.part_elem(); } } - this.state = 3492; + this.state = 2553; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 2554; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -14862,98 +13069,60 @@ export class PostgreSqlParser extends SQLParserBase { } public part_elem(): Part_elemContext { let localContext = new Part_elemContext(this.context, this.state); - this.enterRule(localContext, 274, PostgreSqlParser.RULE_part_elem); + this.enterRule(localContext, 168, PostgreSqlParser.RULE_part_elem); let _la: number; try { - this.state = 3516; + this.enterOuterAlt(localContext, 1); + { + this.state = 2562; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 3493; + this.state = 2556; this.column_name(); - this.state = 3495; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context) ) { - case 1: - { - this.state = 3494; - this.opt_collate(); - } - break; - } - this.state = 3498; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 3497; - this.opt_class(); - } - } - } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 3500; + this.state = 2557; this.func_expr_windowless(); - this.state = 3502; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { - case 1: - { - this.state = 3501; - this.opt_collate(); - } - break; - } - this.state = 3505; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 3504; - this.opt_class(); - } - } - } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 3507; + { + this.state = 2558; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3508; - this.a_expr(); - this.state = 3509; + this.state = 2559; + this.expression(); + this.state = 2560; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3511; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 239, this.context) ) { - case 1: - { - this.state = 3510; - this.opt_collate(); - } - break; } - this.state = 3514; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 3513; - this.opt_class(); - } } - + break; + } + this.state = 2565; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { + case 1: + { + this.state = 2564; + this.opt_collate_clause(); } break; } + this.state = 2568; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 2567; + this.any_name(); + } + } + + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -14971,14 +13140,14 @@ export class PostgreSqlParser extends SQLParserBase { } public table_access_method_clause(): Table_access_method_clauseContext { let localContext = new Table_access_method_clauseContext(this.context, this.state); - this.enterRule(localContext, 276, PostgreSqlParser.RULE_table_access_method_clause); + this.enterRule(localContext, 170, PostgreSqlParser.RULE_table_access_method_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3518; + this.state = 2570; this.match(PostgreSqlParser.KW_USING); - this.state = 3519; - this.name(); + this.state = 2571; + this.colid(); } } catch (re) { @@ -14997,35 +13166,34 @@ export class PostgreSqlParser extends SQLParserBase { } public optwith(): OptwithContext { let localContext = new OptwithContext(this.context, this.state); - this.enterRule(localContext, 278, PostgreSqlParser.RULE_optwith); + this.enterRule(localContext, 172, PostgreSqlParser.RULE_optwith); + let _la: number; try { - this.state = 3527; + this.state = 2577; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3521; + this.state = 2573; this.match(PostgreSqlParser.KW_WITH); - this.state = 3522; + this.state = 2574; this.reloptions(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3523; - this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 3524; - this.match(PostgreSqlParser.KW_OIDS); + this.state = 2575; + _la = this.tokenStream.LA(1); + if(!(_la === 105 || _la === 379)) { + this.errorHandler.recoverInline(this); } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 3525; - this.match(PostgreSqlParser.KW_WITH); - this.state = 3526; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2576; this.match(PostgreSqlParser.KW_OIDS); } break; @@ -15047,36 +13215,36 @@ export class PostgreSqlParser extends SQLParserBase { } public oncommitoption(): OncommitoptionContext { let localContext = new OncommitoptionContext(this.context, this.state); - this.enterRule(localContext, 280, PostgreSqlParser.RULE_oncommitoption); + this.enterRule(localContext, 174, PostgreSqlParser.RULE_oncommitoption); try { this.enterOuterAlt(localContext, 1); { - this.state = 3529; + this.state = 2579; this.match(PostgreSqlParser.KW_ON); - this.state = 3530; + this.state = 2580; this.match(PostgreSqlParser.KW_COMMIT); - this.state = 3536; + this.state = 2586; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DROP: { - this.state = 3531; + this.state = 2581; this.match(PostgreSqlParser.KW_DROP); } break; case PostgreSqlParser.KW_DELETE: { - this.state = 3532; + this.state = 2582; this.match(PostgreSqlParser.KW_DELETE); - this.state = 3533; + this.state = 2583; this.match(PostgreSqlParser.KW_ROWS); } break; case PostgreSqlParser.KW_PRESERVE: { - this.state = 3534; + this.state = 2584; this.match(PostgreSqlParser.KW_PRESERVE); - this.state = 3535; + this.state = 2585; this.match(PostgreSqlParser.KW_ROWS); } break; @@ -15101,13 +13269,13 @@ export class PostgreSqlParser extends SQLParserBase { } public opttablespace(): OpttablespaceContext { let localContext = new OpttablespaceContext(this.context, this.state); - this.enterRule(localContext, 282, PostgreSqlParser.RULE_opttablespace); + this.enterRule(localContext, 176, PostgreSqlParser.RULE_opttablespace); try { this.enterOuterAlt(localContext, 1); { - this.state = 3538; + this.state = 2588; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 3539; + this.state = 2589; this.tablespace_name(); } } @@ -15125,73 +13293,18 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public index_paramenters_create(): Index_paramenters_createContext { - let localContext = new Index_paramenters_createContext(this.context, this.state); - this.enterRule(localContext, 284, PostgreSqlParser.RULE_index_paramenters_create); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3542; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { - case 1: - { - this.state = 3541; - this.opt_include(); - } - break; - } - this.state = 3545; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { - case 1: - { - this.state = 3544; - this.with_clause(); - } - break; - } - this.state = 3548; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 3547; - this.optconstablespace(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public optconstablespace(): OptconstablespaceContext { let localContext = new OptconstablespaceContext(this.context, this.state); - this.enterRule(localContext, 286, PostgreSqlParser.RULE_optconstablespace); + this.enterRule(localContext, 178, PostgreSqlParser.RULE_optconstablespace); try { this.enterOuterAlt(localContext, 1); { - this.state = 3550; + this.state = 2591; this.match(PostgreSqlParser.KW_USING); - this.state = 3551; + this.state = 2592; this.match(PostgreSqlParser.KW_INDEX); - this.state = 3552; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 3553; - this.tablespace_name(); + this.state = 2593; + this.opttablespace(); } } catch (re) { @@ -15210,16 +13323,16 @@ export class PostgreSqlParser extends SQLParserBase { } public existingindex(): ExistingindexContext { let localContext = new ExistingindexContext(this.context, this.state); - this.enterRule(localContext, 288, PostgreSqlParser.RULE_existingindex); + this.enterRule(localContext, 180, PostgreSqlParser.RULE_existingindex); try { this.enterOuterAlt(localContext, 1); { - this.state = 3555; + this.state = 2595; this.match(PostgreSqlParser.KW_USING); - this.state = 3556; + this.state = 2596; this.match(PostgreSqlParser.KW_INDEX); - this.state = 3557; - this.name(); + this.state = 2597; + this.colid(); } } catch (re) { @@ -15238,67 +13351,81 @@ export class PostgreSqlParser extends SQLParserBase { } public createstatsstmt(): CreatestatsstmtContext { let localContext = new CreatestatsstmtContext(this.context, this.state); - this.enterRule(localContext, 290, PostgreSqlParser.RULE_createstatsstmt); + this.enterRule(localContext, 182, PostgreSqlParser.RULE_createstatsstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3559; + this.state = 2599; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3560; + this.state = 2600; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 3565; + this.state = 2605; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 3562; + this.state = 2602; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { case 1: { - this.state = 3561; + this.state = 2601; this.opt_if_not_exists(); } break; } - this.state = 3564; + this.state = 2604; this.any_name(); } } - this.state = 3568; + this.state = 2608; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3567; - this.opt_name_list(); + this.state = 2607; + this.opt_column_list(); } } - this.state = 3570; + this.state = 2610; this.match(PostgreSqlParser.KW_ON); - this.state = 3573; + this.state = 2620; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { case 1: { - this.state = 3571; - this.column_expr_list(); + this.state = 2611; + this.column_expr(); + this.state = 2616; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 2612; + this.match(PostgreSqlParser.COMMA); + this.state = 2613; + this.column_expr(); + } + } + this.state = 2618; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 2: { - this.state = 3572; + this.state = 2619; this.expr_list(); } break; } - this.state = 3575; - this.match(PostgreSqlParser.KW_FROM); - this.state = 3576; - this.from_list(); + this.state = 2622; + this.from_clause(); } } catch (re) { @@ -15317,31 +13444,31 @@ export class PostgreSqlParser extends SQLParserBase { } public alterstatsstmt(): AlterstatsstmtContext { let localContext = new AlterstatsstmtContext(this.context, this.state); - this.enterRule(localContext, 292, PostgreSqlParser.RULE_alterstatsstmt); + this.enterRule(localContext, 184, PostgreSqlParser.RULE_alterstatsstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 3578; + this.state = 2624; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3579; + this.state = 2625; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 3581; + this.state = 2627; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 251, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 254, this.context) ) { case 1: { - this.state = 3580; + this.state = 2626; this.opt_if_exists(); } break; } - this.state = 3583; + this.state = 2629; this.any_name(); - this.state = 3584; + this.state = 2630; this.match(PostgreSqlParser.KW_SET); - this.state = 3585; + this.state = 2631; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 3586; + this.state = 2632; this.signediconst(); } } @@ -15361,48 +13488,48 @@ export class PostgreSqlParser extends SQLParserBase { } public createasstmt(): CreateasstmtContext { let localContext = new CreateasstmtContext(this.context, this.state); - this.enterRule(localContext, 294, PostgreSqlParser.RULE_createasstmt); + this.enterRule(localContext, 186, PostgreSqlParser.RULE_createasstmt); let _la: number; try { localContext = new QueryCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3588; + this.state = 2634; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3590; + this.state = 2636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 3589; + this.state = 2635; this.opttemp(); } } - this.state = 3592; + this.state = 2638; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3594; + this.state = 2640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { case 1: { - this.state = 3593; + this.state = 2639; this.opt_if_not_exists(); } break; } - this.state = 3596; + this.state = 2642; this.create_as_target(); - this.state = 3597; + this.state = 2643; this.match(PostgreSqlParser.KW_AS); - this.state = 3598; + this.state = 2644; this.selectstmt(); - this.state = 3600; + this.state = 2646; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 254, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 257, this.context) ) { case 1: { - this.state = 3599; + this.state = 2645; this.opt_with_data(); } break; @@ -15425,59 +13552,59 @@ export class PostgreSqlParser extends SQLParserBase { } public create_as_target(): Create_as_targetContext { let localContext = new Create_as_targetContext(this.context, this.state); - this.enterRule(localContext, 296, PostgreSqlParser.RULE_create_as_target); + this.enterRule(localContext, 188, PostgreSqlParser.RULE_create_as_target); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3602; + this.state = 2648; this.table_name_create(); - this.state = 3604; + this.state = 2650; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3603; + this.state = 2649; this.opt_column_list_create(); } } - this.state = 3607; + this.state = 2653; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3606; + this.state = 2652; this.table_access_method_clause(); } } - this.state = 3610; + this.state = 2656; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105 || _la === 379) { { - this.state = 3609; + this.state = 2655; this.optwith(); } } - this.state = 3613; + this.state = 2659; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 3612; + this.state = 2658; this.oncommitoption(); } } - this.state = 3616; + this.state = 2662; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 351) { { - this.state = 3615; + this.state = 2661; this.opttablespace(); } } @@ -15500,26 +13627,26 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_with_data(): Opt_with_dataContext { let localContext = new Opt_with_dataContext(this.context, this.state); - this.enterRule(localContext, 298, PostgreSqlParser.RULE_opt_with_data); + this.enterRule(localContext, 190, PostgreSqlParser.RULE_opt_with_data); try { this.enterOuterAlt(localContext, 1); { - this.state = 3618; + this.state = 2664; this.match(PostgreSqlParser.KW_WITH); - this.state = 3622; + this.state = 2668; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DATA: { - this.state = 3619; + this.state = 2665; this.match(PostgreSqlParser.KW_DATA); } break; case PostgreSqlParser.KW_NO: { - this.state = 3620; + this.state = 2666; this.match(PostgreSqlParser.KW_NO); - this.state = 3621; + this.state = 2667; this.match(PostgreSqlParser.KW_DATA); } break; @@ -15544,143 +13671,94 @@ export class PostgreSqlParser extends SQLParserBase { } public creatematviewstmt(): CreatematviewstmtContext { let localContext = new CreatematviewstmtContext(this.context, this.state); - this.enterRule(localContext, 300, PostgreSqlParser.RULE_creatematviewstmt); + this.enterRule(localContext, 192, PostgreSqlParser.RULE_creatematviewstmt); let _la: number; try { localContext = new CreateMaterializedViewContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3624; + this.state = 2670; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3626; + this.state = 2672; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 367) { { - this.state = 3625; - this.optnolog(); + this.state = 2671; + this.match(PostgreSqlParser.KW_UNLOGGED); } } - this.state = 3628; + this.state = 2674; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 3629; + this.state = 2675; this.match(PostgreSqlParser.KW_VIEW); - this.state = 3631; + this.state = 2677; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 262, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { case 1: { - this.state = 3630; + this.state = 2676; this.opt_if_not_exists(); } break; } - this.state = 3633; - this.create_mv_target(); - this.state = 3634; - this.match(PostgreSqlParser.KW_AS); - this.state = 3635; - this.selectstmt(); - this.state = 3637; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { - case 1: - { - this.state = 3636; - this.opt_with_data(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public create_mv_target(): Create_mv_targetContext { - let localContext = new Create_mv_targetContext(this.context, this.state); - this.enterRule(localContext, 302, PostgreSqlParser.RULE_create_mv_target); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3639; + this.state = 2679; this.view_name_create(); - this.state = 3641; + this.state = 2681; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3640; + this.state = 2680; this.opt_column_list_create(); } } - this.state = 3644; + this.state = 2684; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3643; + this.state = 2683; this.table_access_method_clause(); } } - this.state = 3647; + this.state = 2687; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 3646; + this.state = 2686; this.opt_reloptions(); } } - this.state = 3650; + this.state = 2690; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 351) { { - this.state = 3649; + this.state = 2689; this.opttablespace(); } } + this.state = 2692; + this.match(PostgreSqlParser.KW_AS); + this.state = 2693; + this.selectstmt(); + this.state = 2695; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 270, this.context) ) { + case 1: + { + this.state = 2694; + this.opt_with_data(); + } + break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public optnolog(): OptnologContext { - let localContext = new OptnologContext(this.context, this.state); - this.enterRule(localContext, 304, PostgreSqlParser.RULE_optnolog); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3652; - this.match(PostgreSqlParser.KW_UNLOGGED); } } catch (re) { @@ -15699,35 +13777,35 @@ export class PostgreSqlParser extends SQLParserBase { } public refreshmatviewstmt(): RefreshmatviewstmtContext { let localContext = new RefreshmatviewstmtContext(this.context, this.state); - this.enterRule(localContext, 306, PostgreSqlParser.RULE_refreshmatviewstmt); + this.enterRule(localContext, 194, PostgreSqlParser.RULE_refreshmatviewstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3654; + this.state = 2697; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 3655; + this.state = 2698; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 3656; + this.state = 2699; this.match(PostgreSqlParser.KW_VIEW); - this.state = 3658; + this.state = 2701; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 3657; - this.opt_concurrently(); + this.state = 2700; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 3660; + this.state = 2703; this.view_name(); - this.state = 3662; + this.state = 2705; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 269, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 272, this.context) ) { case 1: { - this.state = 3661; + this.state = 2704; this.opt_with_data(); } break; @@ -15750,44 +13828,63 @@ export class PostgreSqlParser extends SQLParserBase { } public createseqstmt(): CreateseqstmtContext { let localContext = new CreateseqstmtContext(this.context, this.state); - this.enterRule(localContext, 308, PostgreSqlParser.RULE_createseqstmt); + this.enterRule(localContext, 196, PostgreSqlParser.RULE_createseqstmt); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3664; + this.state = 2707; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3666; + this.state = 2709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 3665; + this.state = 2708; this.opttemp(); } } - this.state = 3668; + this.state = 2711; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 3670; + this.state = 2713; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { case 1: { - this.state = 3669; + this.state = 2712; this.opt_if_not_exists(); } break; } - this.state = 3672; + this.state = 2715; this.qualified_name(); - this.state = 3674; + this.state = 2721; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 272, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 276, this.context) ) { case 1: { - this.state = 3673; - this.optseqoptlist(); + this.state = 2717; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 2716; + this.seqoptelem(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 2719; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 275, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; } @@ -15809,104 +13906,28 @@ export class PostgreSqlParser extends SQLParserBase { } public alterseqstmt(): AlterseqstmtContext { let localContext = new AlterseqstmtContext(this.context, this.state); - this.enterRule(localContext, 310, PostgreSqlParser.RULE_alterseqstmt); + this.enterRule(localContext, 198, PostgreSqlParser.RULE_alterseqstmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3676; + this.state = 2723; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3677; + this.state = 2724; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 3679; + this.state = 2726; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { - this.state = 3678; + this.state = 2725; this.opt_if_exists(); } break; } - this.state = 3681; + this.state = 2728; this.qualified_name(); - this.state = 3682; - this.seqoptlist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public optseqoptlist(): OptseqoptlistContext { - let localContext = new OptseqoptlistContext(this.context, this.state); - this.enterRule(localContext, 312, PostgreSqlParser.RULE_optseqoptlist); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3684; - this.seqoptlist(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public optparenthesizedseqoptlist(): OptparenthesizedseqoptlistContext { - let localContext = new OptparenthesizedseqoptlistContext(this.context, this.state); - this.enterRule(localContext, 314, PostgreSqlParser.RULE_optparenthesizedseqoptlist); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3686; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3687; - this.seqoptlist(); - this.state = 3688; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public seqoptlist(): SeqoptlistContext { - let localContext = new SeqoptlistContext(this.context, this.state); - this.enterRule(localContext, 316, PostgreSqlParser.RULE_seqoptlist); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 3691; + this.state = 2730; this.errorHandler.sync(this); alternative = 1; do { @@ -15914,7 +13935,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 3690; + this.state = 2729; this.seqoptelem(); } } @@ -15922,9 +13943,9 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3693; + this.state = 2732; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 274, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -15944,80 +13965,80 @@ export class PostgreSqlParser extends SQLParserBase { } public seqoptelem(): SeqoptelemContext { let localContext = new SeqoptelemContext(this.context, this.state); - this.enterRule(localContext, 318, PostgreSqlParser.RULE_seqoptelem); + this.enterRule(localContext, 200, PostgreSqlParser.RULE_seqoptelem); let _la: number; try { - this.state = 3729; + this.state = 2767; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: this.enterOuterAlt(localContext, 1); { - this.state = 3695; + this.state = 2734; this.match(PostgreSqlParser.KW_AS); - this.state = 3696; + this.state = 2735; this.simpletypename(); } break; case PostgreSqlParser.KW_CACHE: this.enterOuterAlt(localContext, 2); { - this.state = 3697; + this.state = 2736; this.match(PostgreSqlParser.KW_CACHE); - this.state = 3698; - this.numericonly(); + this.state = 2738; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 12 || _la === 13 || _la === 571 || _la === 573) { + { + this.state = 2737; + this.numericonly(); + } } - break; - case PostgreSqlParser.KW_CYCLE: - this.enterOuterAlt(localContext, 3); - { - this.state = 3699; - this.match(PostgreSqlParser.KW_CYCLE); + } break; case PostgreSqlParser.KW_INCREMENT: - this.enterOuterAlt(localContext, 4); + this.enterOuterAlt(localContext, 3); { - this.state = 3700; + this.state = 2740; this.match(PostgreSqlParser.KW_INCREMENT); - this.state = 3702; + this.state = 2742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 3701; - this.opt_by(); + this.state = 2741; + this.match(PostgreSqlParser.KW_BY); } } - this.state = 3704; + this.state = 2744; this.numericonly(); } break; case PostgreSqlParser.KW_MAXVALUE: - this.enterOuterAlt(localContext, 5); - { - this.state = 3705; - this.match(PostgreSqlParser.KW_MAXVALUE); - this.state = 3706; - this.numericonly(); - } - break; case PostgreSqlParser.KW_MINVALUE: - this.enterOuterAlt(localContext, 6); + this.enterOuterAlt(localContext, 4); { - this.state = 3707; - this.match(PostgreSqlParser.KW_MINVALUE); - this.state = 3708; + this.state = 2745; + _la = this.tokenStream.LA(1); + if(!(_la === 260 || _la === 262)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2746; this.numericonly(); } break; case PostgreSqlParser.KW_NO: - this.enterOuterAlt(localContext, 7); + this.enterOuterAlt(localContext, 5); { - this.state = 3709; + this.state = 2747; this.match(PostgreSqlParser.KW_NO); - this.state = 3710; + this.state = 2748; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 260 || _la === 262)) { this.errorHandler.recoverInline(this); @@ -16029,67 +14050,67 @@ export class PostgreSqlParser extends SQLParserBase { } break; case PostgreSqlParser.KW_OWNED: - this.enterOuterAlt(localContext, 8); + this.enterOuterAlt(localContext, 6); { - this.state = 3711; + this.state = 2749; this.match(PostgreSqlParser.KW_OWNED); - this.state = 3712; + this.state = 2750; this.match(PostgreSqlParser.KW_BY); - this.state = 3713; + this.state = 2751; this.column_name(); } break; case PostgreSqlParser.KW_SEQUENCE: - this.enterOuterAlt(localContext, 9); + this.enterOuterAlt(localContext, 7); { - this.state = 3714; + this.state = 2752; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 3715; + this.state = 2753; this.match(PostgreSqlParser.KW_NAME); - this.state = 3716; + this.state = 2754; this.any_name(); } break; case PostgreSqlParser.KW_START: - this.enterOuterAlt(localContext, 10); + this.enterOuterAlt(localContext, 8); { - this.state = 3717; + this.state = 2755; this.match(PostgreSqlParser.KW_START); - this.state = 3719; + this.state = 2757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 3718; - this.opt_with(); + this.state = 2756; + this.match(PostgreSqlParser.KW_WITH); } } - this.state = 3721; + this.state = 2759; this.numericonly(); } break; case PostgreSqlParser.KW_RESTART: - this.enterOuterAlt(localContext, 11); + this.enterOuterAlt(localContext, 9); { - this.state = 3722; + this.state = 2760; this.match(PostgreSqlParser.KW_RESTART); - this.state = 3724; + this.state = 2762; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { case 1: { - this.state = 3723; - this.opt_with(); + this.state = 2761; + this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 3727; + this.state = 2765; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571 || _la === 573) { { - this.state = 3726; + this.state = 2764; this.numericonly(); } } @@ -16114,66 +14135,42 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_by(): Opt_byContext { - let localContext = new Opt_byContext(this.context, this.state); - this.enterRule(localContext, 320, PostgreSqlParser.RULE_opt_by); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3731; - this.match(PostgreSqlParser.KW_BY); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public numericonly(): NumericonlyContext { let localContext = new NumericonlyContext(this.context, this.state); - this.enterRule(localContext, 322, PostgreSqlParser.RULE_numericonly); + this.enterRule(localContext, 202, PostgreSqlParser.RULE_numericonly); + let _la: number; try { - this.state = 3739; + this.state = 2774; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 280, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 286, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3733; - this.fconst(); + this.state = 2770; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 12 || _la === 13) { + { + this.state = 2769; + _la = this.tokenStream.LA(1); + if(!(_la === 12 || _la === 13)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 2772; + this.match(PostgreSqlParser.Numeric); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3734; - this.match(PostgreSqlParser.PLUS); - this.state = 3735; - this.fconst(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 3736; - this.match(PostgreSqlParser.MINUS); - this.state = 3737; - this.fconst(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 3738; + this.state = 2773; this.signediconst(); } break; @@ -16193,116 +14190,87 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public numericonly_list(): Numericonly_listContext { - let localContext = new Numericonly_listContext(this.context, this.state); - this.enterRule(localContext, 324, PostgreSqlParser.RULE_numericonly_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3741; - this.numericonly(); - this.state = 3746; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 3742; - this.match(PostgreSqlParser.COMMA); - this.state = 3743; - this.numericonly(); - } - } - this.state = 3748; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public createplangstmt(): CreateplangstmtContext { let localContext = new CreateplangstmtContext(this.context, this.state); - this.enterRule(localContext, 326, PostgreSqlParser.RULE_createplangstmt); + this.enterRule(localContext, 204, PostgreSqlParser.RULE_createplangstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3749; + this.state = 2776; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3751; + this.state = 2778; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3750; + this.state = 2777; this.opt_or_replace(); } } - this.state = 3754; + this.state = 2781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 359) { { - this.state = 3753; - this.opt_trusted(); + this.state = 2780; + this.match(PostgreSqlParser.KW_TRUSTED); } } - this.state = 3757; + this.state = 2784; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 3756; - this.opt_procedural(); + this.state = 2783; + this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 3759; + this.state = 2786; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 3760; - this.name(); - this.state = 3769; + this.state = 2787; + this.colid(); + this.state = 2800; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 287, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { case 1: { - this.state = 3761; + this.state = 2788; this.match(PostgreSqlParser.KW_HANDLER); - this.state = 3762; - this.handler_name(); - this.state = 3764; + this.state = 2789; + this.any_name(); + this.state = 2792; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 285, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context) ) { case 1: { - this.state = 3763; - this.opt_inline_handler(); + this.state = 2790; + this.match(PostgreSqlParser.KW_INLINE); + this.state = 2791; + this.any_name(); } break; } - this.state = 3767; + this.state = 2798; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 286, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 291, this.context) ) { case 1: { - this.state = 3766; - this.opt_validator(); + this.state = 2794; + this.match(PostgreSqlParser.KW_VALIDATOR); + this.state = 2795; + this.any_name(); + } + break; + case 2: + { + this.state = 2796; + this.match(PostgreSqlParser.KW_NO); + this.state = 2797; + this.match(PostgreSqlParser.KW_VALIDATOR); } break; } @@ -16325,49 +14293,43 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_trusted(): Opt_trustedContext { - let localContext = new Opt_trustedContext(this.context, this.state); - this.enterRule(localContext, 328, PostgreSqlParser.RULE_opt_trusted); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3771; - this.match(PostgreSqlParser.KW_TRUSTED); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public handler_name(): Handler_nameContext { - let localContext = new Handler_nameContext(this.context, this.state); - this.enterRule(localContext, 330, PostgreSqlParser.RULE_handler_name); + public createtablespacestmt(): CreatetablespacestmtContext { + let localContext = new CreatetablespacestmtContext(this.context, this.state); + this.enterRule(localContext, 206, PostgreSqlParser.RULE_createtablespacestmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3773; - this.name(); - this.state = 3775; + this.state = 2802; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 2803; + this.opttablespace(); + this.state = 2806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 11) { + if (_la === 282) { { - this.state = 3774; - this.attrs(); + this.state = 2804; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 2805; + this.rolespec(); } } + this.state = 2808; + this.match(PostgreSqlParser.KW_LOCATION); + this.state = 2809; + this.sconst(); + this.state = 2811; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { + case 1: + { + this.state = 2810; + this.opt_reloptions(); + } + break; + } } } catch (re) { @@ -16384,83 +14346,88 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_inline_handler(): Opt_inline_handlerContext { - let localContext = new Opt_inline_handlerContext(this.context, this.state); - this.enterRule(localContext, 332, PostgreSqlParser.RULE_opt_inline_handler); + public createextensionstmt(): CreateextensionstmtContext { + let localContext = new CreateextensionstmtContext(this.context, this.state); + this.enterRule(localContext, 208, PostgreSqlParser.RULE_createextensionstmt); + let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3777; - this.match(PostgreSqlParser.KW_INLINE); - this.state = 3778; - this.handler_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public validator_clause(): Validator_clauseContext { - let localContext = new Validator_clauseContext(this.context, this.state); - this.enterRule(localContext, 334, PostgreSqlParser.RULE_validator_clause); - try { - this.state = 3784; + this.state = 2813; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 2814; + this.match(PostgreSqlParser.KW_EXTENSION); + this.state = 2816; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_VALIDATOR: - this.enterOuterAlt(localContext, 1); + switch (this.interpreter.adaptivePredict(this.tokenStream, 295, this.context) ) { + case 1: { - this.state = 3780; - this.match(PostgreSqlParser.KW_VALIDATOR); - this.state = 3781; - this.handler_name(); + this.state = 2815; + this.opt_if_not_exists(); } break; - case PostgreSqlParser.KW_NO: - this.enterOuterAlt(localContext, 2); + } + this.state = 2818; + this.colid(); + this.state = 2820; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { + case 1: { - this.state = 3782; - this.match(PostgreSqlParser.KW_NO); - this.state = 3783; - this.match(PostgreSqlParser.KW_VALIDATOR); + this.state = 2819; + this.match(PostgreSqlParser.KW_WITH); } break; - default: - throw new antlr.NoViableAltException(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.state = 2829; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 298, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + this.state = 2827; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SCHEMA: + { + this.state = 2822; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 2823; + this.schema_name(); + } + break; + case PostgreSqlParser.KW_FROM: + case PostgreSqlParser.KW_VERSION: + { + this.state = 2824; + _la = this.tokenStream.LA(1); + if(!(_la === 64 || _la === 375)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2825; + this.nonreservedword_or_sconst(); + } + break; + case PostgreSqlParser.KW_CASCADE: + { + this.state = 2826; + this.match(PostgreSqlParser.KW_CASCADE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + } + this.state = 2831; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 298, this.context); } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_validator(): Opt_validatorContext { - let localContext = new Opt_validatorContext(this.context, this.state); - this.enterRule(localContext, 336, PostgreSqlParser.RULE_opt_validator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3786; - this.validator_clause(); } } catch (re) { @@ -16477,14 +14444,37 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_procedural(): Opt_proceduralContext { - let localContext = new Opt_proceduralContext(this.context, this.state); - this.enterRule(localContext, 338, PostgreSqlParser.RULE_opt_procedural); + public alterextensionstmt(): AlterextensionstmtContext { + let localContext = new AlterextensionstmtContext(this.context, this.state); + this.enterRule(localContext, 210, PostgreSqlParser.RULE_alterextensionstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3788; - this.match(PostgreSqlParser.KW_PROCEDURAL); + this.state = 2832; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 2833; + this.match(PostgreSqlParser.KW_EXTENSION); + this.state = 2834; + this.colid(); + this.state = 2835; + this.match(PostgreSqlParser.KW_UPDATE); + this.state = 2840; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 94) { + { + { + this.state = 2836; + this.match(PostgreSqlParser.KW_TO); + this.state = 2837; + this.nonreservedword_or_sconst(); + } + } + this.state = 2842; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -16501,40 +14491,145 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createtablespacestmt(): CreatetablespacestmtContext { - let localContext = new CreatetablespacestmtContext(this.context, this.state); - this.enterRule(localContext, 340, PostgreSqlParser.RULE_createtablespacestmt); + public alterextensioncontentsstmt(): AlterextensioncontentsstmtContext { + let localContext = new AlterextensioncontentsstmtContext(this.context, this.state); + this.enterRule(localContext, 212, PostgreSqlParser.RULE_alterextensioncontentsstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3790; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 3791; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 3792; - this.tablespace_name(); - this.state = 3794; - this.errorHandler.sync(this); + this.state = 2843; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 2844; + this.match(PostgreSqlParser.KW_EXTENSION); + this.state = 2845; + this.colid(); + this.state = 2846; _la = this.tokenStream.LA(1); - if (_la === 282) { - { - this.state = 3793; - this.opttablespaceowner(); - } + if(!(_la === 133 || _la === 191)) { + this.errorHandler.recoverInline(this); } - - this.state = 3796; - this.match(PostgreSqlParser.KW_LOCATION); - this.state = 3797; - this.sconst(); - this.state = 3799; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2879; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 291, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 300, this.context) ) { case 1: { - this.state = 3798; - this.opt_reloptions(); + this.state = 2847; + this.match(PostgreSqlParser.KW_TRANSFORM); + this.state = 2848; + this.match(PostgreSqlParser.KW_FOR); + this.state = 2849; + this.typename(); + this.state = 2850; + this.match(PostgreSqlParser.KW_LANGUAGE); + this.state = 2851; + this.colid(); + } + break; + case 2: + { + this.state = 2853; + this.match(PostgreSqlParser.KW_ROUTINE); + this.state = 2854; + this.routine_with_argtypes(); + } + break; + case 3: + { + this.state = 2855; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 2856; + this.procedure_with_argtypes(); + } + break; + case 4: + { + this.state = 2857; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 2858; + _la = this.tokenStream.LA(1); + if(!(_la === 156 || _la === 206)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2859; + this.any_name(); + this.state = 2860; + this.table_access_method_clause(); + } + break; + case 5: + { + this.state = 2862; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 2863; + this.operator_with_argtypes(); + } + break; + case 6: + { + this.state = 2864; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 2865; + this.function_with_argtypes(); + } + break; + case 7: + { + this.state = 2866; + _la = this.tokenStream.LA(1); + if(!(_la === 189 || _la === 360)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2867; + this.typename(); + } + break; + case 8: + { + this.state = 2868; + this.match(PostgreSqlParser.KW_CAST); + this.state = 2869; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2870; + this.typename(); + this.state = 2871; + this.match(PostgreSqlParser.KW_AS); + this.state = 2872; + this.typename(); + this.state = 2873; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case 9: + { + this.state = 2875; + this.match(PostgreSqlParser.KW_AGGREGATE); + this.state = 2876; + this.aggregate_with_argtypes(); + } + break; + case 10: + { + this.state = 2877; + this.object_type_name(); + } + break; + case 11: + { + this.state = 2878; + this.object_type_any_name(); } break; } @@ -16554,66 +14649,61 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opttablespaceowner(): OpttablespaceownerContext { - let localContext = new OpttablespaceownerContext(this.context, this.state); - this.enterRule(localContext, 342, PostgreSqlParser.RULE_opttablespaceowner); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3801; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 3802; - this.rolespec(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createextensionstmt(): CreateextensionstmtContext { - let localContext = new CreateextensionstmtContext(this.context, this.state); - this.enterRule(localContext, 344, PostgreSqlParser.RULE_createextensionstmt); + public createfdwstmt(): CreatefdwstmtContext { + let localContext = new CreatefdwstmtContext(this.context, this.state); + this.enterRule(localContext, 214, PostgreSqlParser.RULE_createfdwstmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3804; + this.state = 2881; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3805; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3807; + this.state = 2882; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 2883; + this.match(PostgreSqlParser.KW_DATA); + this.state = 2884; + this.match(PostgreSqlParser.KW_WRAPPER); + this.state = 2885; + this.colid(); + this.state = 2891; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 3806; - this.opt_if_not_exists(); + this.state = 2887; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 2886; + this.fdw_option(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 2889; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 301, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; } - this.state = 3809; - this.name(); - this.state = 3811; + this.state = 2894; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 293, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { case 1: { - this.state = 3810; - this.opt_with(); + this.state = 2893; + this.create_generic_options(); } break; } - this.state = 3813; - this.create_extension_opt_list(); } } catch (re) { @@ -16630,29 +14720,57 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public create_extension_opt_list(): Create_extension_opt_listContext { - let localContext = new Create_extension_opt_listContext(this.context, this.state); - this.enterRule(localContext, 346, PostgreSqlParser.RULE_create_extension_opt_list); + public fdw_option(): Fdw_optionContext { + let localContext = new Fdw_optionContext(this.context, this.state); + this.enterRule(localContext, 216, PostgreSqlParser.RULE_fdw_option); + let _la: number; try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 3818; + this.state = 2902; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 294, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_VALIDATOR: + this.enterOuterAlt(localContext, 1); + { + this.state = 2896; + _la = this.tokenStream.LA(1); + if(!(_la === 215 || _la === 373)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2898; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { + case 1: { - this.state = 3815; - this.create_extension_opt_item(); - } + this.state = 2897; + this.any_name(); } + break; } - this.state = 3820; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 294, this.context); - } + } + break; + case PostgreSqlParser.KW_NO: + this.enterOuterAlt(localContext, 2); + { + this.state = 2900; + this.match(PostgreSqlParser.KW_NO); + this.state = 2901; + _la = this.tokenStream.LA(1); + if(!(_la === 215 || _la === 373)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -16669,49 +14787,80 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public create_extension_opt_item(): Create_extension_opt_itemContext { - let localContext = new Create_extension_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 348, PostgreSqlParser.RULE_create_extension_opt_item); + public alterfdwstmt(): AlterfdwstmtContext { + let localContext = new AlterfdwstmtContext(this.context, this.state); + this.enterRule(localContext, 218, PostgreSqlParser.RULE_alterfdwstmt); + let _la: number; try { - this.state = 3828; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2904; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 2905; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 2906; + this.match(PostgreSqlParser.KW_DATA); + this.state = 2907; + this.match(PostgreSqlParser.KW_WRAPPER); + this.state = 2908; + this.colid(); + this.state = 2922; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_SCHEMA: - this.enterOuterAlt(localContext, 1); - { - this.state = 3821; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3822; - this.schema_name(); - } - break; - case PostgreSqlParser.KW_VERSION: - this.enterOuterAlt(localContext, 2); + switch (this.interpreter.adaptivePredict(this.tokenStream, 309, this.context) ) { + case 1: { - this.state = 3823; - this.match(PostgreSqlParser.KW_VERSION); - this.state = 3824; - this.nonreservedword_or_sconst(); + this.state = 2914; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 215 || _la === 269 || _la === 373) { + { + this.state = 2910; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 2909; + this.fdw_option(); + } + } + this.state = 2912; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 215 || _la === 269 || _la === 373); + } } - break; - case PostgreSqlParser.KW_FROM: - this.enterOuterAlt(localContext, 3); - { - this.state = 3825; - this.match(PostgreSqlParser.KW_FROM); - this.state = 3826; - this.nonreservedword_or_sconst(); + + this.state = 2916; + this.alter_generic_options(); } break; - case PostgreSqlParser.KW_CASCADE: - this.enterOuterAlt(localContext, 4); + case 2: { - this.state = 3827; - this.match(PostgreSqlParser.KW_CASCADE); + this.state = 2918; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 2917; + this.fdw_option(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 2920; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 308, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; - default: - throw new antlr.NoViableAltException(this); + } } } catch (re) { @@ -16728,22 +14877,37 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterextensionstmt(): AlterextensionstmtContext { - let localContext = new AlterextensionstmtContext(this.context, this.state); - this.enterRule(localContext, 350, PostgreSqlParser.RULE_alterextensionstmt); + public create_generic_options(): Create_generic_optionsContext { + let localContext = new Create_generic_optionsContext(this.context, this.state); + this.enterRule(localContext, 220, PostgreSqlParser.RULE_create_generic_options); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3830; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3831; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3832; - this.name(); - this.state = 3833; - this.match(PostgreSqlParser.KW_UPDATE); - this.state = 3834; - this.alter_extension_opt_list(); + this.state = 2924; + this.match(PostgreSqlParser.KW_OPTIONS); + this.state = 2925; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2926; + this.generic_option_elem(); + this.state = 2931; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 2927; + this.match(PostgreSqlParser.COMMA); + this.state = 2928; + this.generic_option_elem(); + } + } + this.state = 2933; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2934; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -16760,27 +14924,37 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alter_extension_opt_list(): Alter_extension_opt_listContext { - let localContext = new Alter_extension_opt_listContext(this.context, this.state); - this.enterRule(localContext, 352, PostgreSqlParser.RULE_alter_extension_opt_list); + public alter_generic_options(): Alter_generic_optionsContext { + let localContext = new Alter_generic_optionsContext(this.context, this.state); + this.enterRule(localContext, 222, PostgreSqlParser.RULE_alter_generic_options); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3839; + this.state = 2936; + this.match(PostgreSqlParser.KW_OPTIONS); + this.state = 2937; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2938; + this.alter_generic_option_elem(); + this.state = 2943; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 94) { + while (_la === 6) { { { - this.state = 3836; - this.alter_extension_opt_item(); + this.state = 2939; + this.match(PostgreSqlParser.COMMA); + this.state = 2940; + this.alter_generic_option_elem(); } } - this.state = 3841; + this.state = 2945; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 2946; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -16797,16 +14971,24 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alter_extension_opt_item(): Alter_extension_opt_itemContext { - let localContext = new Alter_extension_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 354, PostgreSqlParser.RULE_alter_extension_opt_item); + public alter_generic_option_elem(): Alter_generic_option_elemContext { + let localContext = new Alter_generic_option_elemContext(this.context, this.state); + this.enterRule(localContext, 224, PostgreSqlParser.RULE_alter_generic_option_elem); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3842; - this.match(PostgreSqlParser.KW_TO); - this.state = 3843; - this.nonreservedword_or_sconst(); + this.state = 2948; + _la = this.tokenStream.LA(1); + if(!(_la === 133 || _la === 191 || _la === 333)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2949; + this.generic_option_elem(); } } catch (re) { @@ -16823,256 +15005,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterextensioncontentsstmt(): AlterextensioncontentsstmtContext { - let localContext = new AlterextensioncontentsstmtContext(this.context, this.state); - this.enterRule(localContext, 356, PostgreSqlParser.RULE_alterextensioncontentsstmt); + public generic_option_elem(): Generic_option_elemContext { + let localContext = new Generic_option_elemContext(this.context, this.state); + this.enterRule(localContext, 226, PostgreSqlParser.RULE_generic_option_elem); try { - this.state = 3947; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 297, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 3845; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3846; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3847; - this.name(); - this.state = 3848; - this.add_drop(); - this.state = 3849; - this.object_type_name(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 3851; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3852; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3853; - this.name(); - this.state = 3854; - this.add_drop(); - this.state = 3855; - this.object_type_any_name(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 3857; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3858; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3859; - this.name(); - this.state = 3860; - this.add_drop(); - this.state = 3861; - this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 3862; - this.aggregate_with_argtypes(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 3864; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3865; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3866; - this.name(); - this.state = 3867; - this.add_drop(); - this.state = 3868; - this.match(PostgreSqlParser.KW_CAST); - this.state = 3869; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3870; - this.typename(); - this.state = 3871; - this.match(PostgreSqlParser.KW_AS); - this.state = 3872; - this.typename(); - this.state = 3873; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 3875; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3876; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3877; - this.name(); - this.state = 3878; - this.add_drop(); - this.state = 3879; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 3880; - this.typename(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 3882; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3883; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3884; - this.name(); - this.state = 3885; - this.add_drop(); - this.state = 3886; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3887; - this.function_with_argtypes(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 3889; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3890; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3891; - this.name(); - this.state = 3892; - this.add_drop(); - this.state = 3893; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3894; - this.operator_with_argtypes(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 3896; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3897; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3898; - this.name(); - this.state = 3899; - this.add_drop(); - this.state = 3900; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3901; - this.match(PostgreSqlParser.KW_CLASS); - this.state = 3902; - this.any_name(); - this.state = 3903; - this.match(PostgreSqlParser.KW_USING); - this.state = 3904; - this.name(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 3906; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3907; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3908; - this.name(); - this.state = 3909; - this.add_drop(); - this.state = 3910; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3911; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3912; - this.any_name(); - this.state = 3913; - this.match(PostgreSqlParser.KW_USING); - this.state = 3914; - this.name(); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 3916; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3917; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3918; - this.name(); - this.state = 3919; - this.add_drop(); - this.state = 3920; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3921; - this.procedure_with_argtypes(); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 3923; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3924; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3925; - this.name(); - this.state = 3926; - this.add_drop(); - this.state = 3927; - this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 3928; - this.routine_with_argtypes(); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 3930; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3931; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3932; - this.name(); - this.state = 3933; - this.add_drop(); - this.state = 3934; - this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 3935; - this.match(PostgreSqlParser.KW_FOR); - this.state = 3936; - this.typename(); - this.state = 3937; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 3938; - this.name(); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 3940; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3941; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3942; - this.name(); - this.state = 3943; - this.add_drop(); - this.state = 3944; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 3945; - this.typename(); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 2951; + this.collabel(); + this.state = 2952; + this.sconst(); } } catch (re) { @@ -17089,38 +15031,65 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createfdwstmt(): CreatefdwstmtContext { - let localContext = new CreatefdwstmtContext(this.context, this.state); - this.enterRule(localContext, 358, PostgreSqlParser.RULE_createfdwstmt); + public createforeignserverstmt(): CreateforeignserverstmtContext { + let localContext = new CreateforeignserverstmtContext(this.context, this.state); + this.enterRule(localContext, 228, PostgreSqlParser.RULE_createforeignserverstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3949; + this.state = 2954; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3950; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3951; - this.match(PostgreSqlParser.KW_DATA); - this.state = 3952; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 3953; - this.name(); - this.state = 3955; + this.state = 2955; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 2957; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 298, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { case 1: { - this.state = 3954; - this.opt_fdw_options(); + this.state = 2956; + this.opt_if_not_exists(); } break; } - this.state = 3958; + this.state = 2959; + this.colid(); + this.state = 2962; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 360) { + { + this.state = 2960; + this.match(PostgreSqlParser.KW_TYPE); + this.state = 2961; + this.sconst(); + } + } + + this.state = 2965; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 375) { + { + this.state = 2964; + this.foreign_server_version(); + } + } + + this.state = 2967; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 2968; + this.match(PostgreSqlParser.KW_DATA); + this.state = 2969; + this.match(PostgreSqlParser.KW_WRAPPER); + this.state = 2970; + this.colid(); + this.state = 2972; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 299, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { case 1: { - this.state = 3957; + this.state = 2971; this.create_generic_options(); } break; @@ -17141,49 +15110,35 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public fdw_option(): Fdw_optionContext { - let localContext = new Fdw_optionContext(this.context, this.state); - this.enterRule(localContext, 360, PostgreSqlParser.RULE_fdw_option); + public foreign_server_version(): Foreign_server_versionContext { + let localContext = new Foreign_server_versionContext(this.context, this.state); + this.enterRule(localContext, 230, PostgreSqlParser.RULE_foreign_server_version); try { - this.state = 3968; + this.enterOuterAlt(localContext, 1); + { + this.state = 2974; + this.match(PostgreSqlParser.KW_VERSION); + this.state = 2977; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 300, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 3960; - this.match(PostgreSqlParser.KW_HANDLER); - this.state = 3961; - this.handler_name(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 3962; - this.match(PostgreSqlParser.KW_NO); - this.state = 3963; - this.match(PostgreSqlParser.KW_HANDLER); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 3964; - this.match(PostgreSqlParser.KW_VALIDATOR); - this.state = 3965; - this.handler_name(); + this.state = 2975; + this.sconst(); } break; - case 4: - this.enterOuterAlt(localContext, 4); + case PostgreSqlParser.KW_NULL: { - this.state = 3966; - this.match(PostgreSqlParser.KW_NO); - this.state = 3967; - this.match(PostgreSqlParser.KW_VALIDATOR); + this.state = 2976; + this.match(PostgreSqlParser.KW_NULL); } break; + default: + throw new antlr.NoViableAltException(this); + } } } catch (re) { @@ -17200,57 +15155,46 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public fdw_options(): Fdw_optionsContext { - let localContext = new Fdw_optionsContext(this.context, this.state); - this.enterRule(localContext, 362, PostgreSqlParser.RULE_fdw_options); + public alterforeignserverstmt(): AlterforeignserverstmtContext { + let localContext = new AlterforeignserverstmtContext(this.context, this.state); + this.enterRule(localContext, 232, PostgreSqlParser.RULE_alterforeignserverstmt); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3971; + this.state = 2979; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 2980; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 2981; + this.colid(); + this.state = 2987; this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_OPTIONS: + { + this.state = 2982; + this.alter_generic_options(); + } + break; + case PostgreSqlParser.KW_VERSION: + { + this.state = 2983; + this.foreign_server_version(); + this.state = 2985; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { case 1: { - { - this.state = 3970; - this.fdw_option(); - } + this.state = 2984; + this.alter_generic_options(); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 3973; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 301, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + } + break; + default: + throw new antlr.NoViableAltException(this); } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_fdw_options(): Opt_fdw_optionsContext { - let localContext = new Opt_fdw_optionsContext(this.context, this.state); - this.enterRule(localContext, 364, PostgreSqlParser.RULE_opt_fdw_options); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3975; - this.fdw_options(); } } catch (re) { @@ -17267,255 +15211,130 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterfdwstmt(): AlterfdwstmtContext { - let localContext = new AlterfdwstmtContext(this.context, this.state); - this.enterRule(localContext, 366, PostgreSqlParser.RULE_alterfdwstmt); + public createforeigntablestmt(): CreateforeigntablestmtContext { + let localContext = new CreateforeigntablestmtContext(this.context, this.state); + this.enterRule(localContext, 234, PostgreSqlParser.RULE_createforeigntablestmt); let _la: number; try { - this.state = 3994; + this.state = 3028; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { case 1: + localContext = new CreateForeignTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3977; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3978; + this.state = 2989; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 2990; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3979; - this.match(PostgreSqlParser.KW_DATA); - this.state = 3980; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 3981; - this.name(); - this.state = 3983; + this.state = 2991; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 2993; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) { + case 1: + { + this.state = 2992; + this.opt_if_not_exists(); + } + break; + } + this.state = 2995; + this.table_name_create(); + this.state = 2996; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 2998; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 215 || _la === 269 || _la === 373) { + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 3982; - this.opt_fdw_options(); + this.state = 2997; + this.tableelementlist(); } } - this.state = 3985; - this.alter_generic_options(); + this.state = 3000; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 3002; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 238) { + { + this.state = 3001; + this.optinherit(); + } + } + + this.state = 3004; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 3005; + this.colid(); + this.state = 3007; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { + case 1: + { + this.state = 3006; + this.create_generic_options(); + } + break; + } } break; case 2: + localContext = new CreatePartitionForeignTableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3987; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 3988; + this.state = 3009; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3010; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3989; - this.match(PostgreSqlParser.KW_DATA); - this.state = 3990; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 3991; - this.name(); - this.state = 3992; - this.fdw_options(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public create_generic_options(): Create_generic_optionsContext { - let localContext = new Create_generic_optionsContext(this.context, this.state); - this.enterRule(localContext, 368, PostgreSqlParser.RULE_create_generic_options); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3996; - this.match(PostgreSqlParser.KW_OPTIONS); - this.state = 3997; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3998; - this.generic_option_list(); - this.state = 3999; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public generic_option_list(): Generic_option_listContext { - let localContext = new Generic_option_listContext(this.context, this.state); - this.enterRule(localContext, 370, PostgreSqlParser.RULE_generic_option_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4001; - this.generic_option_elem(); - this.state = 4006; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4002; - this.match(PostgreSqlParser.COMMA); - this.state = 4003; - this.generic_option_elem(); - } - } - this.state = 4008; + this.state = 3011; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 3013; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alter_generic_options(): Alter_generic_optionsContext { - let localContext = new Alter_generic_optionsContext(this.context, this.state); - this.enterRule(localContext, 372, PostgreSqlParser.RULE_alter_generic_options); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4009; - this.match(PostgreSqlParser.KW_OPTIONS); - this.state = 4010; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4011; - this.alter_generic_option_list(); - this.state = 4012; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alter_generic_option_list(): Alter_generic_option_listContext { - let localContext = new Alter_generic_option_listContext(this.context, this.state); - this.enterRule(localContext, 374, PostgreSqlParser.RULE_alter_generic_option_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4014; - this.alter_generic_option_elem(); - this.state = 4019; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4015; - this.match(PostgreSqlParser.COMMA); - this.state = 4016; - this.alter_generic_option_elem(); - } + switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { + case 1: + { + this.state = 3012; + this.opt_if_not_exists(); + } + break; } - this.state = 4021; + this.state = 3015; + this.table_name_create(); + this.state = 3016; + this.match(PostgreSqlParser.KW_PARTITION); + this.state = 3017; + this.match(PostgreSqlParser.KW_OF); + this.state = 3018; + this.table_name(); + this.state = 3020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alter_generic_option_elem(): Alter_generic_option_elemContext { - let localContext = new Alter_generic_option_elemContext(this.context, this.state); - this.enterRule(localContext, 376, PostgreSqlParser.RULE_alter_generic_option_elem); - try { - this.state = 4029; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 306, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4022; - this.generic_option_elem(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4023; - this.match(PostgreSqlParser.KW_SET); - this.state = 4024; - this.generic_option_elem(); + if (_la === 2) { + { + this.state = 3019; + this.opttypedtableelementlist(); + } } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4025; - this.match(PostgreSqlParser.KW_ADD); - this.state = 4026; - this.generic_option_elem(); + + this.state = 3022; + this.partitionboundspec(); + this.state = 3023; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 3024; + this.colid(); + this.state = 3026; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { + case 1: + { + this.state = 3025; + this.create_generic_options(); + } + break; } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4027; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4028; - this.generic_option_elem(); } break; } @@ -17534,137 +15353,71 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public generic_option_elem(): Generic_option_elemContext { - let localContext = new Generic_option_elemContext(this.context, this.state); - this.enterRule(localContext, 378, PostgreSqlParser.RULE_generic_option_elem); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4031; - this.generic_option_name(); - this.state = 4032; - this.generic_option_arg(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public generic_option_name(): Generic_option_nameContext { - let localContext = new Generic_option_nameContext(this.context, this.state); - this.enterRule(localContext, 380, PostgreSqlParser.RULE_generic_option_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4034; - this.collabel(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public generic_option_arg(): Generic_option_argContext { - let localContext = new Generic_option_argContext(this.context, this.state); - this.enterRule(localContext, 382, PostgreSqlParser.RULE_generic_option_arg); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4036; - this.sconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createforeignserverstmt(): CreateforeignserverstmtContext { - let localContext = new CreateforeignserverstmtContext(this.context, this.state); - this.enterRule(localContext, 384, PostgreSqlParser.RULE_createforeignserverstmt); + public importforeignschemastmt(): ImportforeignschemastmtContext { + let localContext = new ImportforeignschemastmtContext(this.context, this.state); + this.enterRule(localContext, 236, PostgreSqlParser.RULE_importforeignschemastmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4038; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4039; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 4041; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { - case 1: - { - this.state = 4040; - this.opt_if_not_exists(); - } - break; - } - this.state = 4043; - this.name(); - this.state = 4045; + this.state = 3030; + this.match(PostgreSqlParser.KW_IMPORT); + this.state = 3031; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 3032; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 3033; + this.schema_name(); + this.state = 3043; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 360) { + if (_la === 59 || _la === 74) { { - this.state = 4044; - this.opt_type(); + this.state = 3037; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_LIMIT: + { + this.state = 3034; + this.match(PostgreSqlParser.KW_LIMIT); + this.state = 3035; + this.match(PostgreSqlParser.KW_TO); + } + break; + case PostgreSqlParser.KW_EXCEPT: + { + this.state = 3036; + this.match(PostgreSqlParser.KW_EXCEPT); + } + break; + default: + throw new antlr.NoViableAltException(this); } - } - - this.state = 4048; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 375) { - { - this.state = 4047; - this.opt_foreign_server_version(); + this.state = 3039; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3040; + this.relation_expr_list(); + this.state = 3041; + this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 4050; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4051; - this.match(PostgreSqlParser.KW_DATA); - this.state = 4052; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 4053; - this.name(); - this.state = 4055; + this.state = 3045; + this.match(PostgreSqlParser.KW_FROM); + this.state = 3046; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 3047; + this.colid(); + this.state = 3048; + this.match(PostgreSqlParser.KW_INTO); + this.state = 3049; + this.colid(); + this.state = 3051; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 310, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { case 1: { - this.state = 4054; + this.state = 3050; this.create_generic_options(); } break; @@ -17685,493 +15438,32 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_type(): Opt_typeContext { - let localContext = new Opt_typeContext(this.context, this.state); - this.enterRule(localContext, 386, PostgreSqlParser.RULE_opt_type); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4057; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 4058; - this.sconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public foreign_server_version(): Foreign_server_versionContext { - let localContext = new Foreign_server_versionContext(this.context, this.state); - this.enterRule(localContext, 388, PostgreSqlParser.RULE_foreign_server_version); + public createusermappingstmt(): CreateusermappingstmtContext { + let localContext = new CreateusermappingstmtContext(this.context, this.state); + this.enterRule(localContext, 238, PostgreSqlParser.RULE_createusermappingstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4060; - this.match(PostgreSqlParser.KW_VERSION); - this.state = 4063; + this.state = 3053; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3054; + this.match(PostgreSqlParser.KW_USER); + this.state = 3055; + this.match(PostgreSqlParser.KW_MAPPING); + this.state = 3057; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 4061; - this.sconst(); - } - break; - case PostgreSqlParser.KW_NULL: + _la = this.tokenStream.LA(1); + if (_la === 220) { { - this.state = 4062; - this.match(PostgreSqlParser.KW_NULL); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_foreign_server_version(): Opt_foreign_server_versionContext { - let localContext = new Opt_foreign_server_versionContext(this.context, this.state); - this.enterRule(localContext, 390, PostgreSqlParser.RULE_opt_foreign_server_version); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4065; - this.foreign_server_version(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterforeignserverstmt(): AlterforeignserverstmtContext { - let localContext = new AlterforeignserverstmtContext(this.context, this.state); - this.enterRule(localContext, 392, PostgreSqlParser.RULE_alterforeignserverstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4067; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 4068; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 4069; - this.name(); - this.state = 4075; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_OPTIONS: - { - this.state = 4070; - this.alter_generic_options(); - } - break; - case PostgreSqlParser.KW_VERSION: - { - this.state = 4071; - this.foreign_server_version(); - this.state = 4073; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { - case 1: - { - this.state = 4072; - this.alter_generic_options(); - } - break; - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createforeigntablestmt(): CreateforeigntablestmtContext { - let localContext = new CreateforeigntablestmtContext(this.context, this.state); - this.enterRule(localContext, 394, PostgreSqlParser.RULE_createforeigntablestmt); - let _la: number; - try { - this.state = 4116; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 321, this.context) ) { - case 1: - localContext = new CreateForeignTableContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 4077; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4078; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4079; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 4081; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { - case 1: - { - this.state = 4080; - this.opt_if_not_exists(); - } - break; - } - this.state = 4083; - this.table_name_create(); - this.state = 4084; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4086; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 4085; - this.opttableelementlist(); - } - } - - this.state = 4088; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 4090; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 238) { - { - this.state = 4089; - this.optinherit(); - } - } - - this.state = 4092; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 4093; - this.name(); - this.state = 4095; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { - case 1: - { - this.state = 4094; - this.create_generic_options(); - } - break; - } - } - break; - case 2: - localContext = new CreatePartitionForeignTableContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 4097; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4098; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4099; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 4101; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 318, this.context) ) { - case 1: - { - this.state = 4100; - this.opt_if_not_exists(); - } - break; - } - this.state = 4103; - this.table_name_create(); - this.state = 4104; - this.match(PostgreSqlParser.KW_PARTITION); - this.state = 4105; - this.match(PostgreSqlParser.KW_OF); - this.state = 4106; - this.table_name(); - this.state = 4108; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 4107; - this.opttypedtableelementlist(); - } - } - - this.state = 4110; - this.partitionboundspec(); - this.state = 4111; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 4112; - this.name(); - this.state = 4114; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 320, this.context) ) { - case 1: - { - this.state = 4113; - this.create_generic_options(); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public importforeignschemastmt(): ImportforeignschemastmtContext { - let localContext = new ImportforeignschemastmtContext(this.context, this.state); - this.enterRule(localContext, 396, PostgreSqlParser.RULE_importforeignschemastmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4118; - this.match(PostgreSqlParser.KW_IMPORT); - this.state = 4119; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4120; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4121; - this.schema_name(); - this.state = 4123; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 59 || _la === 74) { - { - this.state = 4122; - this.import_qualification(); - } - } - - this.state = 4125; - this.match(PostgreSqlParser.KW_FROM); - this.state = 4126; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 4127; - this.name(); - this.state = 4128; - this.match(PostgreSqlParser.KW_INTO); - this.state = 4129; - this.name(); - this.state = 4131; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { - case 1: - { - this.state = 4130; - this.create_generic_options(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public import_qualification_type(): Import_qualification_typeContext { - let localContext = new Import_qualification_typeContext(this.context, this.state); - this.enterRule(localContext, 398, PostgreSqlParser.RULE_import_qualification_type); - try { - this.state = 4136; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_LIMIT: - this.enterOuterAlt(localContext, 1); - { - this.state = 4133; - this.match(PostgreSqlParser.KW_LIMIT); - this.state = 4134; - this.match(PostgreSqlParser.KW_TO); - } - break; - case PostgreSqlParser.KW_EXCEPT: - this.enterOuterAlt(localContext, 2); - { - this.state = 4135; - this.match(PostgreSqlParser.KW_EXCEPT); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public import_qualification(): Import_qualificationContext { - let localContext = new Import_qualificationContext(this.context, this.state); - this.enterRule(localContext, 400, PostgreSqlParser.RULE_import_qualification); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4138; - this.import_qualification_type(); - this.state = 4139; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4140; - this.relation_expr_list(); - this.state = 4141; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createusermappingstmt(): CreateusermappingstmtContext { - let localContext = new CreateusermappingstmtContext(this.context, this.state); - this.enterRule(localContext, 402, PostgreSqlParser.RULE_createusermappingstmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4143; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4144; - this.match(PostgreSqlParser.KW_USER); - this.state = 4145; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 4147; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 220) { - { - this.state = 4146; - this.opt_if_not_exists(); + this.state = 3056; + this.opt_if_not_exists(); } } - this.state = 4149; + this.state = 3059; this.match(PostgreSqlParser.KW_FOR); - this.state = 4150; - this.auth_ident(); - this.state = 4151; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 4152; - this.name(); - this.state = 4154; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { - case 1: - { - this.state = 4153; - this.create_generic_options(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public auth_ident(): Auth_identContext { - let localContext = new Auth_identContext(this.context, this.state); - this.enterRule(localContext, 404, PostgreSqlParser.RULE_auth_ident); - try { - this.state = 4158; + this.state = 3062; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AND: @@ -18598,202 +15890,31 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 4156; + this.state = 3060; this.rolespec(); } break; case PostgreSqlParser.KW_USER: - this.enterOuterAlt(localContext, 2); { - this.state = 4157; + this.state = 3061; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterusermappingstmt(): AlterusermappingstmtContext { - let localContext = new AlterusermappingstmtContext(this.context, this.state); - this.enterRule(localContext, 406, PostgreSqlParser.RULE_alterusermappingstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4160; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 4161; - this.match(PostgreSqlParser.KW_USER); - this.state = 4162; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 4163; - this.match(PostgreSqlParser.KW_FOR); - this.state = 4164; - this.auth_ident(); - this.state = 4165; + this.state = 3064; this.match(PostgreSqlParser.KW_SERVER); - this.state = 4166; - this.name(); - this.state = 4167; - this.alter_generic_options(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createpolicystmt(): CreatepolicystmtContext { - let localContext = new CreatepolicystmtContext(this.context, this.state); - this.enterRule(localContext, 408, PostgreSqlParser.RULE_createpolicystmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4169; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4170; - this.match(PostgreSqlParser.KW_POLICY); - this.state = 4171; - this.name(); - this.state = 4172; - this.match(PostgreSqlParser.KW_ON); - this.state = 4173; - this.qualified_name(); - this.state = 4175; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { - case 1: - { - this.state = 4174; - this.rowsecuritydefaultpermissive(); - } - break; - } - this.state = 4178; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 4177; - this.rowsecuritydefaultforcmd(); - } - } - - this.state = 4181; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 94) { - { - this.state = 4180; - this.rowsecuritydefaulttorole(); - } - } - - this.state = 4184; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 4183; - this.rowsecurityoptionalexpr(); - } - } - - this.state = 4187; + this.state = 3065; + this.colid(); + this.state = 3067; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 332, this.context) ) { case 1: { - this.state = 4186; - this.rowsecurityoptionalwithcheck(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterpolicystmt(): AlterpolicystmtContext { - let localContext = new AlterpolicystmtContext(this.context, this.state); - this.enterRule(localContext, 410, PostgreSqlParser.RULE_alterpolicystmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4189; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 4190; - this.match(PostgreSqlParser.KW_POLICY); - this.state = 4191; - this.name(); - this.state = 4192; - this.match(PostgreSqlParser.KW_ON); - this.state = 4193; - this.qualified_name(); - this.state = 4195; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 94) { - { - this.state = 4194; - this.rowsecurityoptionaltorole(); - } - } - - this.state = 4198; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 4197; - this.rowsecurityoptionalexpr(); - } - } - - this.state = 4201; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { - case 1: - { - this.state = 4200; - this.rowsecurityoptionalwithcheck(); + this.state = 3066; + this.create_generic_options(); } break; } @@ -18813,479 +15934,419 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterprocedurestmt(): AlterprocedurestmtContext { - let localContext = new AlterprocedurestmtContext(this.context, this.state); - this.enterRule(localContext, 412, PostgreSqlParser.RULE_alterprocedurestmt); - let _la: number; + public alterusermappingstmt(): AlterusermappingstmtContext { + let localContext = new AlterusermappingstmtContext(this.context, this.state); + this.enterRule(localContext, 240, PostgreSqlParser.RULE_alterusermappingstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 4203; + this.state = 3069; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4204; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4205; - this.procedure_name(); - this.state = 4207; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 4206; - this.func_args(); - } - } - - this.state = 4209; - this.procedure_cluase(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_cluase(): Procedure_cluaseContext { - let localContext = new Procedure_cluaseContext(this.context, this.state); - this.enterRule(localContext, 414, PostgreSqlParser.RULE_procedure_cluase); - let _la: number; - try { - let alternative: number; - this.state = 4237; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4211; - this.procedure_action(); - this.state = 4215; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 337, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 4212; - this.procedure_action(); - } - } - } - this.state = 4217; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 337, this.context); - } - this.state = 4219; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 338, this.context) ) { - case 1: - { - this.state = 4218; - this.match(PostgreSqlParser.KW_RESTRICT); - } - break; - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4221; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 4222; - this.match(PostgreSqlParser.KW_TO); - this.state = 4223; - this.procedure_name_create(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4224; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 4225; - this.match(PostgreSqlParser.KW_TO); - this.state = 4226; - this.rolespec(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4227; - this.match(PostgreSqlParser.KW_SET); - this.state = 4228; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4229; - this.schema_name_create(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 4231; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 4230; - this.match(PostgreSqlParser.KW_NO); - } - } - - this.state = 4233; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 4234; - this.match(PostgreSqlParser.KW_ON); - this.state = 4235; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 4236; - this.name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_action(): Procedure_actionContext { - let localContext = new Procedure_actionContext(this.context, this.state); - this.enterRule(localContext, 416, PostgreSqlParser.RULE_procedure_action); - let _la: number; - try { - this.state = 4267; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4249; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context) ) { - case 1: - { - this.state = 4240; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 205) { - { - this.state = 4239; - this.match(PostgreSqlParser.KW_EXTERNAL); - } - } - - this.state = 4242; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 4243; - this.match(PostgreSqlParser.KW_INVOKER); - } - break; - case 2: - { - this.state = 4245; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 205) { - { - this.state = 4244; - this.match(PostgreSqlParser.KW_EXTERNAL); - } - } - - this.state = 4247; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 4248; - this.match(PostgreSqlParser.KW_DEFINER); - } - break; - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4251; - this.match(PostgreSqlParser.KW_SET); - this.state = 4252; - this.name(); - this.state = 4253; - _la = this.tokenStream.LA(1); - if(!(_la === 9 || _la === 94)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 4256; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { - case 1: - { - this.state = 4254; - this.name(); - } - break; - case 2: - { - this.state = 4255; - this.match(PostgreSqlParser.KW_DEFAULT); - } - break; - } - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4258; - this.match(PostgreSqlParser.KW_SET); - this.state = 4259; - this.name(); - this.state = 4260; - this.match(PostgreSqlParser.KW_FROM); - this.state = 4261; - this.match(PostgreSqlParser.KW_CURRENT); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4263; - this.match(PostgreSqlParser.KW_RESET); - this.state = 4264; - this.name(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 4265; - this.match(PostgreSqlParser.KW_RESET); - this.state = 4266; - this.match(PostgreSqlParser.KW_ALL); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext { - let localContext = new RowsecurityoptionalexprContext(this.context, this.state); - this.enterRule(localContext, 418, PostgreSqlParser.RULE_rowsecurityoptionalexpr); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4269; - this.match(PostgreSqlParser.KW_USING); - this.state = 4270; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4271; - this.a_expr(); - this.state = 4272; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext { - let localContext = new RowsecurityoptionalwithcheckContext(this.context, this.state); - this.enterRule(localContext, 420, PostgreSqlParser.RULE_rowsecurityoptionalwithcheck); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4274; - this.match(PostgreSqlParser.KW_WITH); - this.state = 4275; - this.match(PostgreSqlParser.KW_CHECK); - this.state = 4276; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4277; - this.a_expr(); - this.state = 4278; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rowsecuritydefaulttorole(): RowsecuritydefaulttoroleContext { - let localContext = new RowsecuritydefaulttoroleContext(this.context, this.state); - this.enterRule(localContext, 422, PostgreSqlParser.RULE_rowsecuritydefaulttorole); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4280; - this.match(PostgreSqlParser.KW_TO); - this.state = 4281; - this.role_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rowsecurityoptionaltorole(): RowsecurityoptionaltoroleContext { - let localContext = new RowsecurityoptionaltoroleContext(this.context, this.state); - this.enterRule(localContext, 424, PostgreSqlParser.RULE_rowsecurityoptionaltorole); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4283; - this.match(PostgreSqlParser.KW_TO); - this.state = 4284; - this.role_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rowsecuritydefaultpermissive(): RowsecuritydefaultpermissiveContext { - let localContext = new RowsecuritydefaultpermissiveContext(this.context, this.state); - this.enterRule(localContext, 426, PostgreSqlParser.RULE_rowsecuritydefaultpermissive); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4286; - this.match(PostgreSqlParser.KW_AS); - this.state = 4290; + this.state = 3070; + this.match(PostgreSqlParser.KW_USER); + this.state = 3071; + this.match(PostgreSqlParser.KW_MAPPING); + this.state = 3072; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3075; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_PERMISSIVE: - { - this.state = 4287; - this.match(PostgreSqlParser.KW_PERMISSIVE); - } - break; - case PostgreSqlParser.KW_RESTRICTIVE: - { - this.state = 4288; - this.match(PostgreSqlParser.KW_RESTRICTIVE); - } - break; case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_COLLATE: case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: case PostgreSqlParser.KW_ELSIF: case PostgreSqlParser.KW_REVERSE: case PostgreSqlParser.KW_SLICE: @@ -19302,6 +16363,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: case PostgreSqlParser.QuotedIdentifier: case PostgreSqlParser.UnicodeQuotedIdentifier: @@ -19312,13 +16376,25 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4289; - this.identifier(); + this.state = 3073; + this.rolespec(); + } + break; + case PostgreSqlParser.KW_USER: + { + this.state = 3074; + this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } + this.state = 3077; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 3078; + this.colid(); + this.state = 3079; + this.alter_generic_options(); } } catch (re) { @@ -19335,47 +16411,178 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public rowsecuritydefaultforcmd(): RowsecuritydefaultforcmdContext { - let localContext = new RowsecuritydefaultforcmdContext(this.context, this.state); - this.enterRule(localContext, 428, PostgreSqlParser.RULE_rowsecuritydefaultforcmd); + public createpolicystmt(): CreatepolicystmtContext { + let localContext = new CreatepolicystmtContext(this.context, this.state); + this.enterRule(localContext, 242, PostgreSqlParser.RULE_createpolicystmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4292; - this.match(PostgreSqlParser.KW_FOR); - this.state = 4293; - this.row_security_cmd(); + this.state = 3081; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3082; + this.match(PostgreSqlParser.KW_POLICY); + this.state = 3083; + this.colid(); + this.state = 3084; + this.match(PostgreSqlParser.KW_ON); + this.state = 3085; + this.qualified_name(); + this.state = 3092; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { + case 1: + { + this.state = 3086; + this.match(PostgreSqlParser.KW_AS); + this.state = 3090; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_PERMISSIVE: + { + this.state = 3087; + this.match(PostgreSqlParser.KW_PERMISSIVE); + } + break; + case PostgreSqlParser.KW_RESTRICTIVE: + { + this.state = 3088; + this.match(PostgreSqlParser.KW_RESTRICTIVE); + } + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 3089; + this.identifier(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.state = 3096; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 62) { + { + this.state = 3094; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3095; + _la = this.tokenStream.LA(1); + if(!(_la === 30 || _la === 88 || _la === 182 || _la === 241 || _la === 369)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - } - finally { - this.exitRule(); - } - return localContext; - } - public row_security_cmd(): Row_security_cmdContext { - let localContext = new Row_security_cmdContext(this.context, this.state); - this.enterRule(localContext, 430, PostgreSqlParser.RULE_row_security_cmd); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4295; + + this.state = 3100; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 88 || _la === 182 || _la === 241 || _la === 369)) { - this.errorHandler.recoverInline(this); + if (_la === 94) { + { + this.state = 3098; + this.match(PostgreSqlParser.KW_TO); + this.state = 3099; + this.role_list(); + } } - else { - this.errorHandler.reportMatch(this); - this.consume(); + + this.state = 3103; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 3102; + this.rowsecurityoptionalexpr(); + } + } + + this.state = 3106; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { + case 1: + { + this.state = 3105; + this.rowsecurityoptionalwithcheck(); + } + break; } } } @@ -19393,28 +16600,55 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createamstmt(): CreateamstmtContext { - let localContext = new CreateamstmtContext(this.context, this.state); - this.enterRule(localContext, 432, PostgreSqlParser.RULE_createamstmt); + public alterpolicystmt(): AlterpolicystmtContext { + let localContext = new AlterpolicystmtContext(this.context, this.state); + this.enterRule(localContext, 244, PostgreSqlParser.RULE_alterpolicystmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4297; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4298; - this.match(PostgreSqlParser.KW_ACCESS); - this.state = 4299; - this.match(PostgreSqlParser.KW_METHOD); - this.state = 4300; - this.name(); - this.state = 4301; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 4302; - this.am_type(); - this.state = 4303; - this.match(PostgreSqlParser.KW_HANDLER); - this.state = 4304; - this.handler_name(); + this.state = 3108; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 3109; + this.match(PostgreSqlParser.KW_POLICY); + this.state = 3110; + this.colid(); + this.state = 3111; + this.match(PostgreSqlParser.KW_ON); + this.state = 3112; + this.qualified_name(); + this.state = 3115; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 94) { + { + this.state = 3113; + this.match(PostgreSqlParser.KW_TO); + this.state = 3114; + this.role_list(); + } + } + + this.state = 3118; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 3117; + this.rowsecurityoptionalexpr(); + } + } + + this.state = 3121; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 342, this.context) ) { + case 1: + { + this.state = 3120; + this.rowsecurityoptionalwithcheck(); + } + break; + } } } catch (re) { @@ -19431,21 +16665,117 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public am_type(): Am_typeContext { - let localContext = new Am_typeContext(this.context, this.state); - this.enterRule(localContext, 434, PostgreSqlParser.RULE_am_type); + public alterprocedurestmt(): AlterprocedurestmtContext { + let localContext = new AlterprocedurestmtContext(this.context, this.state); + this.enterRule(localContext, 246, PostgreSqlParser.RULE_alterprocedurestmt); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4306; + this.state = 3123; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 3124; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 3125; + this.procedure_name(); + this.state = 3127; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 92 || _la === 226)) { - this.errorHandler.recoverInline(this); + if (_la === 2) { + { + this.state = 3126; + this.func_args(); + } } - else { - this.errorHandler.reportMatch(this); - this.consume(); + + this.state = 3155; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 347, this.context) ) { + case 1: + { + this.state = 3129; + this.procedure_action(); + this.state = 3133; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 344, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3130; + this.procedure_action(); + } + } + } + this.state = 3135; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 344, this.context); + } + this.state = 3137; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { + case 1: + { + this.state = 3136; + this.match(PostgreSqlParser.KW_RESTRICT); + } + break; + } + } + break; + case 2: + { + this.state = 3139; + this.match(PostgreSqlParser.KW_RENAME); + this.state = 3140; + this.match(PostgreSqlParser.KW_TO); + this.state = 3141; + this.procedure_name_create(); + } + break; + case 3: + { + this.state = 3142; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 3143; + this.match(PostgreSqlParser.KW_TO); + this.state = 3144; + this.rolespec(); + } + break; + case 4: + { + this.state = 3145; + this.match(PostgreSqlParser.KW_SET); + this.state = 3146; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 3147; + this.schema_name_create(); + } + break; + case 5: + { + this.state = 3149; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 3148; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 3151; + this.match(PostgreSqlParser.KW_DEPENDS); + this.state = 3152; + this.match(PostgreSqlParser.KW_ON); + this.state = 3153; + this.match(PostgreSqlParser.KW_EXTENSION); + this.state = 3154; + this.colid(); + } + break; } } } @@ -19463,162 +16793,527 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createtrigstmt(): CreatetrigstmtContext { - let localContext = new CreatetrigstmtContext(this.context, this.state); - this.enterRule(localContext, 436, PostgreSqlParser.RULE_createtrigstmt); + public procedure_action(): Procedure_actionContext { + let localContext = new Procedure_actionContext(this.context, this.state); + this.enterRule(localContext, 248, PostgreSqlParser.RULE_procedure_action); let _la: number; try { - this.state = 4362; + this.state = 3186; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 356, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 353, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4308; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4310; + this.state = 3167; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 82) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 350, this.context) ) { + case 1: { - this.state = 4309; - this.opt_or_replace(); + this.state = 3158; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 3157; + this.match(PostgreSqlParser.KW_EXTERNAL); + } } - } - this.state = 4312; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 4313; - this.name(); - this.state = 4314; - this.triggeractiontime(); - this.state = 4315; - this.triggerevents(); - this.state = 4316; - this.match(PostgreSqlParser.KW_ON); - this.state = 4317; - this.table_name(); - this.state = 4319; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 447) { - { - this.state = 4318; - this.triggerreferencing(); + this.state = 3160; + this.match(PostgreSqlParser.KW_SECURITY); + this.state = 3161; + this.match(PostgreSqlParser.KW_INVOKER); } - } - - this.state = 4322; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { + break; + case 2: { - this.state = 4321; - this.triggerforspec(); + this.state = 3163; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 3162; + this.match(PostgreSqlParser.KW_EXTERNAL); + } } - } - this.state = 4325; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 102) { - { - this.state = 4324; - this.triggerwhen(); + this.state = 3165; + this.match(PostgreSqlParser.KW_SECURITY); + this.state = 3166; + this.match(PostgreSqlParser.KW_DEFINER); } + break; } - - this.state = 4327; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 4328; - this.function_or_procedure(); - this.state = 4329; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4330; - this.triggerfuncargs(); - this.state = 4331; - this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4333; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4335; - this.errorHandler.sync(this); + this.state = 3169; + this.match(PostgreSqlParser.KW_SET); + this.state = 3170; + this.colid(); + this.state = 3171; _la = this.tokenStream.LA(1); - if (_la === 82) { - { - this.state = 4334; - this.opt_or_replace(); - } + if(!(_la === 9 || _la === 94)) { + this.errorHandler.recoverInline(this); } - - this.state = 4338; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3174; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 45) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { + case 1: { - this.state = 4337; - this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 3172; + this.colid(); } - } - - this.state = 4340; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 4341; - this.name(); - this.state = 4342; - this.triggeractiontime(); - this.state = 4343; - this.triggerevents(); - this.state = 4344; - this.match(PostgreSqlParser.KW_ON); - this.state = 4345; - this.table_name(); - this.state = 4347; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64) { + break; + case 2: { - this.state = 4346; - this.optconstrfromtable(); + this.state = 3173; + this.match(PostgreSqlParser.KW_DEFAULT); } + break; } - - this.state = 4349; - this.constraintattributespec(); - this.state = 4351; + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3176; + this.match(PostgreSqlParser.KW_SET); + this.state = 3177; + this.colid(); + this.state = 3178; + this.match(PostgreSqlParser.KW_FROM); + this.state = 3179; + this.match(PostgreSqlParser.KW_CURRENT); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3181; + this.match(PostgreSqlParser.KW_RESET); + this.state = 3184; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 4350; - this.foreachrow(); + this.state = 3182; + this.colid(); } - } - - this.state = 4354; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 102) { + break; + case PostgreSqlParser.KW_ALL: { - this.state = 4353; - this.triggerwhen(); + this.state = 3183; + this.match(PostgreSqlParser.KW_ALL); } + break; + default: + throw new antlr.NoViableAltException(this); } - - this.state = 4356; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 4357; - this.function_or_procedure(); - this.state = 4358; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4359; - this.triggerfuncargs(); - this.state = 4360; - this.match(PostgreSqlParser.CLOSE_PAREN); } break; } @@ -19637,38 +17332,20 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public triggeractiontime(): TriggeractiontimeContext { - let localContext = new TriggeractiontimeContext(this.context, this.state); - this.enterRule(localContext, 438, PostgreSqlParser.RULE_triggeractiontime); + public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext { + let localContext = new RowsecurityoptionalexprContext(this.context, this.state); + this.enterRule(localContext, 250, PostgreSqlParser.RULE_rowsecurityoptionalexpr); try { - this.state = 4368; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_BEFORE: - this.enterOuterAlt(localContext, 1); - { - this.state = 4364; - this.match(PostgreSqlParser.KW_BEFORE); - } - break; - case PostgreSqlParser.KW_AFTER: - this.enterOuterAlt(localContext, 2); - { - this.state = 4365; - this.match(PostgreSqlParser.KW_AFTER); - } - break; - case PostgreSqlParser.KW_INSTEAD: - this.enterOuterAlt(localContext, 3); - { - this.state = 4366; - this.match(PostgreSqlParser.KW_INSTEAD); - this.state = 4367; - this.match(PostgreSqlParser.KW_OF); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.enterOuterAlt(localContext, 1); + { + this.state = 3188; + this.match(PostgreSqlParser.KW_USING); + this.state = 3189; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3190; + this.expression(); + this.state = 3191; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -19685,27 +17362,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public foreachrow(): ForeachrowContext { - let localContext = new ForeachrowContext(this.context, this.state); - this.enterRule(localContext, 440, PostgreSqlParser.RULE_foreachrow); - let _la: number; + public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext { + let localContext = new RowsecurityoptionalwithcheckContext(this.context, this.state); + this.enterRule(localContext, 252, PostgreSqlParser.RULE_rowsecurityoptionalwithcheck); try { this.enterOuterAlt(localContext, 1); { - this.state = 4370; - this.match(PostgreSqlParser.KW_FOR); - this.state = 4372; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 192) { - { - this.state = 4371; - this.match(PostgreSqlParser.KW_EACH); - } - } - - this.state = 4374; - this.roworstatment(); + this.state = 3193; + this.match(PostgreSqlParser.KW_WITH); + this.state = 3194; + this.match(PostgreSqlParser.KW_CHECK); + this.state = 3195; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3196; + this.expression(); + this.state = 3197; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -19722,22 +17394,36 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public roworstatment(): RoworstatmentContext { - let localContext = new RoworstatmentContext(this.context, this.state); - this.enterRule(localContext, 442, PostgreSqlParser.RULE_roworstatment); + public createamstmt(): CreateamstmtContext { + let localContext = new CreateamstmtContext(this.context, this.state); + this.enterRule(localContext, 254, PostgreSqlParser.RULE_createamstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4376; + this.state = 3199; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3200; + this.match(PostgreSqlParser.KW_ACCESS); + this.state = 3201; + this.match(PostgreSqlParser.KW_METHOD); + this.state = 3202; + this.colid(); + this.state = 3203; + this.match(PostgreSqlParser.KW_TYPE); + this.state = 3204; _la = this.tokenStream.LA(1); - if(!(_la === 341 || _la === 414)) { + if(!(_la === 92 || _la === 226)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } + this.state = 3205; + this.match(PostgreSqlParser.KW_HANDLER); + this.state = 3206; + this.any_name(); } } catch (re) { @@ -19754,31 +17440,258 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public triggerevents(): TriggereventsContext { - let localContext = new TriggereventsContext(this.context, this.state); - this.enterRule(localContext, 444, PostgreSqlParser.RULE_triggerevents); + public createtrigstmt(): CreatetrigstmtContext { + let localContext = new CreatetrigstmtContext(this.context, this.state); + this.enterRule(localContext, 256, PostgreSqlParser.RULE_createtrigstmt); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4378; - this.triggeroneevent(); - this.state = 4383; + this.state = 3286; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 82) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 368, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { + this.state = 3208; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3210; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 82) { + { + this.state = 3209; + this.opt_or_replace(); + } + } + + this.state = 3212; + this.match(PostgreSqlParser.KW_TRIGGER); + this.state = 3213; + this.colid(); + this.state = 3214; + this.triggeractiontime(); + this.state = 3215; + this.triggerevents(); + this.state = 3216; + this.match(PostgreSqlParser.KW_ON); + this.state = 3217; + this.table_name(); + this.state = 3229; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 447) { + { + this.state = 3218; + this.match(PostgreSqlParser.KW_REFERENCING); + this.state = 3225; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3219; + _la = this.tokenStream.LA(1); + if(!(_la === 448 || _la === 449)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3220; + _la = this.tokenStream.LA(1); + if(!(_la === 92 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3222; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 36) { + { + this.state = 3221; + this.match(PostgreSqlParser.KW_AS); + } + } + + this.state = 3224; + this.colid(); + } + } + this.state = 3227; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 448 || _la === 449); + } + } + + this.state = 3236; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 62) { + { + this.state = 3231; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3233; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 192) { + { + this.state = 3232; + this.match(PostgreSqlParser.KW_EACH); + } + } + + this.state = 3235; + _la = this.tokenStream.LA(1); + if(!(_la === 341 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 3239; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 102) { + { + this.state = 3238; + this.triggerwhen(); + } + } + + this.state = 3241; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 3242; + this.function_or_procedure(); + this.state = 3243; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3244; + this.triggerfuncargs(); + this.state = 3245; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 4379; - this.match(PostgreSqlParser.KW_OR); - this.state = 4380; - this.triggeroneevent(); + this.state = 3247; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3249; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 82) { + { + this.state = 3248; + this.opt_or_replace(); + } + } + + this.state = 3252; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 45) { + { + this.state = 3251; + this.match(PostgreSqlParser.KW_CONSTRAINT); + } + } + + this.state = 3254; + this.match(PostgreSqlParser.KW_TRIGGER); + this.state = 3255; + this.colid(); + this.state = 3256; + this.triggeractiontime(); + this.state = 3257; + this.triggerevents(); + this.state = 3258; + this.match(PostgreSqlParser.KW_ON); + this.state = 3259; + this.table_name(); + this.state = 3262; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 64) { + { + this.state = 3260; + this.match(PostgreSqlParser.KW_FROM); + this.state = 3261; + this.qualified_name(); + } } + + this.state = 3267; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (((((_la - 54)) & ~0x1F) === 0 && ((1 << (_la - 54)) & 8421377) !== 0) || _la === 269) { + { + { + this.state = 3264; + this.constraintattributeElem(); + } + } + this.state = 3269; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - this.state = 4385; + this.state = 3275; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } + if (_la === 62) { + { + this.state = 3270; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3272; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 192) { + { + this.state = 3271; + this.match(PostgreSqlParser.KW_EACH); + } + } + + this.state = 3274; + _la = this.tokenStream.LA(1); + if(!(_la === 341 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 3278; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 102) { + { + this.state = 3277; + this.triggerwhen(); + } + } + + this.state = 3280; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 3281; + this.function_or_procedure(); + this.state = 3282; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3283; + this.triggerfuncargs(); + this.state = 3284; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; } } catch (re) { @@ -19795,52 +17708,38 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public triggeroneevent(): TriggeroneeventContext { - let localContext = new TriggeroneeventContext(this.context, this.state); - this.enterRule(localContext, 446, PostgreSqlParser.RULE_triggeroneevent); + public triggeractiontime(): TriggeractiontimeContext { + let localContext = new TriggeractiontimeContext(this.context, this.state); + this.enterRule(localContext, 258, PostgreSqlParser.RULE_triggeractiontime); try { - this.state = 4393; + this.state = 3292; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 360, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_BEFORE: this.enterOuterAlt(localContext, 1); { - this.state = 4386; - this.match(PostgreSqlParser.KW_INSERT); + this.state = 3288; + this.match(PostgreSqlParser.KW_BEFORE); } break; - case 2: + case PostgreSqlParser.KW_AFTER: this.enterOuterAlt(localContext, 2); { - this.state = 4387; - this.match(PostgreSqlParser.KW_DELETE); + this.state = 3289; + this.match(PostgreSqlParser.KW_AFTER); } break; - case 3: + case PostgreSqlParser.KW_INSTEAD: this.enterOuterAlt(localContext, 3); { - this.state = 4388; - this.match(PostgreSqlParser.KW_UPDATE); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4389; - this.match(PostgreSqlParser.KW_UPDATE); - this.state = 4390; + this.state = 3290; + this.match(PostgreSqlParser.KW_INSTEAD); + this.state = 3291; this.match(PostgreSqlParser.KW_OF); - this.state = 4391; - this.column_list(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 4392; - this.match(PostgreSqlParser.KW_TRUNCATE); } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -19857,53 +17756,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public triggerreferencing(): TriggerreferencingContext { - let localContext = new TriggerreferencingContext(this.context, this.state); - this.enterRule(localContext, 448, PostgreSqlParser.RULE_triggerreferencing); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4395; - this.match(PostgreSqlParser.KW_REFERENCING); - this.state = 4396; - this.triggertransitions(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggertransitions(): TriggertransitionsContext { - let localContext = new TriggertransitionsContext(this.context, this.state); - this.enterRule(localContext, 450, PostgreSqlParser.RULE_triggertransitions); + public triggerevents(): TriggereventsContext { + let localContext = new TriggereventsContext(this.context, this.state); + this.enterRule(localContext, 260, PostgreSqlParser.RULE_triggerevents); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4399; + this.state = 3294; + this.triggeroneevent(); + this.state = 3299; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - do { + while (_la === 82) { { { - this.state = 4398; - this.triggertransition(); + this.state = 3295; + this.match(PostgreSqlParser.KW_OR); + this.state = 3296; + this.triggeroneevent(); } } - this.state = 4401; + this.state = 3301; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 448 || _la === 449); + } } } catch (re) { @@ -19920,210 +17797,56 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public triggertransition(): TriggertransitionContext { - let localContext = new TriggertransitionContext(this.context, this.state); - this.enterRule(localContext, 452, PostgreSqlParser.RULE_triggertransition); + public triggeroneevent(): TriggeroneeventContext { + let localContext = new TriggeroneeventContext(this.context, this.state); + this.enterRule(localContext, 262, PostgreSqlParser.RULE_triggeroneevent); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4403; - this.transitionoldornew(); - this.state = 4404; - this.transitionrowortable(); - this.state = 4406; + this.state = 3310; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_INSERT: + this.enterOuterAlt(localContext, 1); { - this.state = 4405; - this.opt_as(); + this.state = 3302; + this.match(PostgreSqlParser.KW_INSERT); } - } - - this.state = 4408; - this.transitionrelname(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public transitionoldornew(): TransitionoldornewContext { - let localContext = new TransitionoldornewContext(this.context, this.state); - this.enterRule(localContext, 454, PostgreSqlParser.RULE_transitionoldornew); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4410; - _la = this.tokenStream.LA(1); - if(!(_la === 448 || _la === 449)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public transitionrowortable(): TransitionrowortableContext { - let localContext = new TransitionrowortableContext(this.context, this.state); - this.enterRule(localContext, 456, PostgreSqlParser.RULE_transitionrowortable); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4412; - _la = this.tokenStream.LA(1); - if(!(_la === 92 || _la === 414)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public transitionrelname(): TransitionrelnameContext { - let localContext = new TransitionrelnameContext(this.context, this.state); - this.enterRule(localContext, 458, PostgreSqlParser.RULE_transitionrelname); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4414; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerforspec(): TriggerforspecContext { - let localContext = new TriggerforspecContext(this.context, this.state); - this.enterRule(localContext, 460, PostgreSqlParser.RULE_triggerforspec); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4416; - this.match(PostgreSqlParser.KW_FOR); - this.state = 4418; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 192) { + break; + case PostgreSqlParser.KW_DELETE: + this.enterOuterAlt(localContext, 2); + { + this.state = 3303; + this.match(PostgreSqlParser.KW_DELETE); + } + break; + case PostgreSqlParser.KW_UPDATE: + this.enterOuterAlt(localContext, 3); { - this.state = 4417; - this.triggerforopteach(); + this.state = 3304; + this.match(PostgreSqlParser.KW_UPDATE); + this.state = 3307; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 275) { + { + this.state = 3305; + this.match(PostgreSqlParser.KW_OF); + this.state = 3306; + this.column_list(); + } } - } - this.state = 4420; - this.triggerfortype(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerforopteach(): TriggerforopteachContext { - let localContext = new TriggerforopteachContext(this.context, this.state); - this.enterRule(localContext, 462, PostgreSqlParser.RULE_triggerforopteach); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4422; - this.match(PostgreSqlParser.KW_EACH); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerfortype(): TriggerfortypeContext { - let localContext = new TriggerfortypeContext(this.context, this.state); - this.enterRule(localContext, 464, PostgreSqlParser.RULE_triggerfortype); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4424; - _la = this.tokenStream.LA(1); - if(!(_la === 341 || _la === 414)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + } + break; + case PostgreSqlParser.KW_TRUNCATE: + this.enterOuterAlt(localContext, 4); + { + this.state = 3309; + this.match(PostgreSqlParser.KW_TRUNCATE); + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -20142,17 +17865,17 @@ export class PostgreSqlParser extends SQLParserBase { } public triggerwhen(): TriggerwhenContext { let localContext = new TriggerwhenContext(this.context, this.state); - this.enterRule(localContext, 466, PostgreSqlParser.RULE_triggerwhen); + this.enterRule(localContext, 264, PostgreSqlParser.RULE_triggerwhen); try { this.enterOuterAlt(localContext, 1); { - this.state = 4426; + this.state = 3312; this.match(PostgreSqlParser.KW_WHEN); - this.state = 4427; + this.state = 3313; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4428; - this.a_expr(); - this.state = 4429; + this.state = 3314; + this.expression(); + this.state = 3315; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -20172,26 +17895,26 @@ export class PostgreSqlParser extends SQLParserBase { } public function_or_procedure(): Function_or_procedureContext { let localContext = new Function_or_procedureContext(this.context, this.state); - this.enterRule(localContext, 468, PostgreSqlParser.RULE_function_or_procedure); + this.enterRule(localContext, 266, PostgreSqlParser.RULE_function_or_procedure); try { - this.state = 4435; + this.state = 3321; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 1); { - this.state = 4431; + this.state = 3317; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4432; + this.state = 3318; this.function_name(); } break; case PostgreSqlParser.KW_PROCEDURE: this.enterOuterAlt(localContext, 2); { - this.state = 4433; + this.state = 3319; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4434; + this.state = 3320; this.procedure_name(); } break; @@ -20215,12 +17938,12 @@ export class PostgreSqlParser extends SQLParserBase { } public triggerfuncargs(): TriggerfuncargsContext { let localContext = new TriggerfuncargsContext(this.context, this.state); - this.enterRule(localContext, 470, PostgreSqlParser.RULE_triggerfuncargs); + this.enterRule(localContext, 268, PostgreSqlParser.RULE_triggerfuncargs); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4439; + this.state = 3325; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: @@ -20715,7 +18438,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4437; + this.state = 3323; this.triggerfuncarg(); } break; @@ -20728,19 +18451,19 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4445; + this.state = 3331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4441; + this.state = 3327; this.match(PostgreSqlParser.COMMA); - this.state = 4442; + this.state = 3328; this.triggerfuncarg(); } } - this.state = 4447; + this.state = 3333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -20762,36 +18485,36 @@ export class PostgreSqlParser extends SQLParserBase { } public triggerfuncarg(): TriggerfuncargContext { let localContext = new TriggerfuncargContext(this.context, this.state); - this.enterRule(localContext, 472, PostgreSqlParser.RULE_triggerfuncarg); + this.enterRule(localContext, 270, PostgreSqlParser.RULE_triggerfuncarg); try { - this.state = 4452; + this.state = 3338; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 367, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 376, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4448; - this.iconst(); + this.state = 3334; + this.match(PostgreSqlParser.Integral); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4449; - this.fconst(); + this.state = 3335; + this.match(PostgreSqlParser.Numeric); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4450; + this.state = 3336; this.sconst(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4451; + this.state = 3337; this.collabel(); } break; @@ -20811,127 +18534,62 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public optconstrfromtable(): OptconstrfromtableContext { - let localContext = new OptconstrfromtableContext(this.context, this.state); - this.enterRule(localContext, 474, PostgreSqlParser.RULE_optconstrfromtable); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4454; - this.match(PostgreSqlParser.KW_FROM); - this.state = 4455; - this.qualified_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public constraintattributespec(): ConstraintattributespecContext { - let localContext = new ConstraintattributespecContext(this.context, this.state); - this.enterRule(localContext, 476, PostgreSqlParser.RULE_constraintattributespec); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 4460; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 368, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 4457; - this.constraintattributeElem(); - } - } - } - this.state = 4462; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 368, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public constraintattributeElem(): ConstraintattributeElemContext { let localContext = new ConstraintattributeElemContext(this.context, this.state); - this.enterRule(localContext, 478, PostgreSqlParser.RULE_constraintattributeElem); + this.enterRule(localContext, 272, PostgreSqlParser.RULE_constraintattributeElem); + let _la: number; try { - this.state = 4474; + this.state = 3350; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 369, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4463; - this.match(PostgreSqlParser.KW_NOT); - this.state = 4464; + this.state = 3341; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 3340; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 3343; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4465; - this.match(PostgreSqlParser.KW_DEFERRABLE); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4466; + this.state = 3344; this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 4467; - this.match(PostgreSqlParser.KW_IMMEDIATE); + this.state = 3345; + _la = this.tokenStream.LA(1); + if(!(_la === 180 || _la === 221)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4468; - this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 4469; - this.match(PostgreSqlParser.KW_DEFERRED); } break; - case 5: - this.enterOuterAlt(localContext, 5); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 4470; + this.state = 3346; this.match(PostgreSqlParser.KW_NOT); - this.state = 4471; + this.state = 3347; this.match(PostgreSqlParser.KW_VALID); } break; - case 6: - this.enterOuterAlt(localContext, 6); + case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 4472; + this.state = 3348; this.match(PostgreSqlParser.KW_NO); - this.state = 4473; + this.state = 3349; this.match(PostgreSqlParser.KW_INHERIT); } break; @@ -20953,106 +18611,59 @@ export class PostgreSqlParser extends SQLParserBase { } public createeventtrigstmt(): CreateeventtrigstmtContext { let localContext = new CreateeventtrigstmtContext(this.context, this.state); - this.enterRule(localContext, 480, PostgreSqlParser.RULE_createeventtrigstmt); - try { - this.state = 4500; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 370, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4476; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4477; - this.match(PostgreSqlParser.KW_EVENT); - this.state = 4478; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 4479; - this.name(); - this.state = 4480; - this.match(PostgreSqlParser.KW_ON); - this.state = 4481; - this.collabel(); - this.state = 4482; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 4483; - this.function_or_procedure(); - this.state = 4484; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4485; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4487; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4488; - this.match(PostgreSqlParser.KW_EVENT); - this.state = 4489; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 4490; - this.name(); - this.state = 4491; - this.match(PostgreSqlParser.KW_ON); - this.state = 4492; - this.collabel(); - this.state = 4493; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 4494; - this.event_trigger_when_list(); - this.state = 4495; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 4496; - this.function_or_procedure(); - this.state = 4497; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4498; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public event_trigger_when_list(): Event_trigger_when_listContext { - let localContext = new Event_trigger_when_listContext(this.context, this.state); - this.enterRule(localContext, 482, PostgreSqlParser.RULE_event_trigger_when_list); + this.enterRule(localContext, 274, PostgreSqlParser.RULE_createeventtrigstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4502; - this.event_trigger_when_item(); - this.state = 4507; + this.state = 3352; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 3353; + this.match(PostgreSqlParser.KW_EVENT); + this.state = 3354; + this.match(PostgreSqlParser.KW_TRIGGER); + this.state = 3355; + this.colid(); + this.state = 3356; + this.match(PostgreSqlParser.KW_ON); + this.state = 3357; + this.collabel(); + this.state = 3367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 33) { - { + if (_la === 102) { { - this.state = 4503; - this.match(PostgreSqlParser.KW_AND); - this.state = 4504; + this.state = 3358; + this.match(PostgreSqlParser.KW_WHEN); + this.state = 3359; this.event_trigger_when_item(); - } - } - this.state = 4509; + this.state = 3364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); + while (_la === 33) { + { + { + this.state = 3360; + this.match(PostgreSqlParser.KW_AND); + this.state = 3361; + this.event_trigger_when_item(); + } + } + this.state = 3366; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } + + this.state = 3369; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 3370; + this.function_or_procedure(); + this.state = 3371; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3372; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -21071,61 +18682,35 @@ export class PostgreSqlParser extends SQLParserBase { } public event_trigger_when_item(): Event_trigger_when_itemContext { let localContext = new Event_trigger_when_itemContext(this.context, this.state); - this.enterRule(localContext, 484, PostgreSqlParser.RULE_event_trigger_when_item); + this.enterRule(localContext, 276, PostgreSqlParser.RULE_event_trigger_when_item); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4510; + this.state = 3374; this.colid(); - this.state = 4511; + this.state = 3375; this.match(PostgreSqlParser.KW_IN); - this.state = 4512; + this.state = 3376; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4513; - this.event_trigger_value_list(); - this.state = 4514; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public event_trigger_value_list(): Event_trigger_value_listContext { - let localContext = new Event_trigger_value_listContext(this.context, this.state); - this.enterRule(localContext, 486, PostgreSqlParser.RULE_event_trigger_value_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4516; + this.state = 3377; this.sconst(); - this.state = 4521; + this.state = 3381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4517; - this.match(PostgreSqlParser.COMMA); - this.state = 4518; - this.sconst(); + this.state = 3378; + this.notify_payload(); } } - this.state = 4523; + this.state = 3383; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 3384; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -21144,55 +18729,32 @@ export class PostgreSqlParser extends SQLParserBase { } public altereventtrigstmt(): AltereventtrigstmtContext { let localContext = new AltereventtrigstmtContext(this.context, this.state); - this.enterRule(localContext, 488, PostgreSqlParser.RULE_altereventtrigstmt); + this.enterRule(localContext, 278, PostgreSqlParser.RULE_altereventtrigstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4524; + this.state = 3386; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4525; + this.state = 3387; this.match(PostgreSqlParser.KW_EVENT); - this.state = 4526; + this.state = 3388; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 4527; - this.name(); - this.state = 4528; - this.enable_trigger(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public enable_trigger(): Enable_triggerContext { - let localContext = new Enable_triggerContext(this.context, this.state); - this.enterRule(localContext, 490, PostgreSqlParser.RULE_enable_trigger); - let _la: number; - try { - this.state = 4535; + this.state = 3389; + this.colid(); + this.state = 3395; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ENABLE: - this.enterOuterAlt(localContext, 1); { - this.state = 4530; + this.state = 3390; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 4532; + this.state = 3392; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 373, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { case 1: { - this.state = 4531; + this.state = 3391; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -21207,15 +18769,15 @@ export class PostgreSqlParser extends SQLParserBase { } break; case PostgreSqlParser.KW_DISABLE: - this.enterOuterAlt(localContext, 2); { - this.state = 4534; + this.state = 3394; this.match(PostgreSqlParser.KW_DISABLE); } break; default: throw new antlr.NoViableAltException(this); } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -21233,26 +18795,41 @@ export class PostgreSqlParser extends SQLParserBase { } public createassertionstmt(): CreateassertionstmtContext { let localContext = new CreateassertionstmtContext(this.context, this.state); - this.enterRule(localContext, 492, PostgreSqlParser.RULE_createassertionstmt); + this.enterRule(localContext, 280, PostgreSqlParser.RULE_createassertionstmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4537; + this.state = 3397; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4538; + this.state = 3398; this.match(PostgreSqlParser.KW_ASSERTION); - this.state = 4539; + this.state = 3399; this.any_name(); - this.state = 4540; + this.state = 3400; this.match(PostgreSqlParser.KW_CHECK); - this.state = 4541; + this.state = 3401; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4542; - this.a_expr(); - this.state = 4543; + this.state = 3402; + this.expression(); + this.state = 3403; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 4544; - this.constraintattributespec(); + this.state = 3407; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 384, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3404; + this.constraintattributeElem(); + } + } + } + this.state = 3409; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 384, this.context); + } } } catch (re) { @@ -21271,284 +18848,255 @@ export class PostgreSqlParser extends SQLParserBase { } public definestmt(): DefinestmtContext { let localContext = new DefinestmtContext(this.context, this.state); - this.enterRule(localContext, 494, PostgreSqlParser.RULE_definestmt); + this.enterRule(localContext, 282, PostgreSqlParser.RULE_definestmt); let _la: number; try { - this.state = 4649; + this.state = 3488; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4546; + this.state = 3410; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4548; + this.state = 3412; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 4547; + this.state = 3411; this.opt_or_replace(); } } - this.state = 4550; + this.state = 3414; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4551; + this.state = 3415; this.function_name(); - this.state = 4552; - this.aggr_args(); - this.state = 4553; - this.definition(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4555; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4557; + this.state = 3430; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 82) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { + case 1: { - this.state = 4556; - this.opt_or_replace(); + { + this.state = 3416; + this.aggr_args(); + this.state = 3417; + this.definition(); + } + } + break; + case 2: + { + this.state = 3419; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3420; + this.old_aggr_elem(); + this.state = 3425; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 3421; + this.match(PostgreSqlParser.COMMA); + this.state = 3422; + this.old_aggr_elem(); + } + } + this.state = 3427; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3428; + this.match(PostgreSqlParser.CLOSE_PAREN); } + break; } - - this.state = 4559; - this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4560; - this.function_name(); - this.state = 4561; - this.old_aggr_definition(); } break; - case 3: - this.enterOuterAlt(localContext, 3); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 4563; + this.state = 3432; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4564; + this.state = 3433; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4565; + this.state = 3434; this.any_operator(); - this.state = 4566; - this.definition(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4568; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4569; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 4570; - this.any_name(); - this.state = 4571; + this.state = 3435; this.definition(); } break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 4573; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4574; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 4575; - this.any_name(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 4576; + this.state = 3437; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4577; + this.state = 3438; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4578; + this.state = 3439; this.any_name(); - this.state = 4579; + this.state = 3440; this.match(PostgreSqlParser.KW_AS); - this.state = 4580; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4582; + this.state = 3458; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: { - this.state = 4581; - this.opttablefuncelementlist(); + this.state = 3441; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3443; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 3442; + this.tablefuncelementlist(); + } } - } - this.state = 4584; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 3445; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_ENUM: + { + this.state = 3446; + this.match(PostgreSqlParser.KW_ENUM); + this.state = 3447; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3455; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 67108885) !== 0)) { + { + this.state = 3448; + this.sconst(); + this.state = 3452; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 3449; + this.notify_payload(); + } + } + this.state = 3454; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3457; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; - case 7: - this.enterOuterAlt(localContext, 7); + case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 4586; + this.state = 3460; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4587; + this.state = 3461; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4588; + this.state = 3462; this.any_name(); - this.state = 4589; - this.match(PostgreSqlParser.KW_AS); - this.state = 4590; - this.match(PostgreSqlParser.KW_ENUM); - this.state = 4591; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4593; + this.state = 3468; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 67108885) !== 0)) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 393, this.context) ) { + case 1: { - this.state = 4592; - this.opt_enum_val_list(); + this.state = 3465; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 36) { + { + this.state = 3463; + this.match(PostgreSqlParser.KW_AS); + this.state = 3464; + this.match(PostgreSqlParser.KW_RANGE); + } } - } - this.state = 4595; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 4597; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4598; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 4599; - this.any_name(); - this.state = 4600; - this.match(PostgreSqlParser.KW_AS); - this.state = 4601; - this.match(PostgreSqlParser.KW_RANGE); - this.state = 4602; - this.definition(); + this.state = 3467; + this.definition(); + } + break; } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 4604; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4605; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4606; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4607; - this.match(PostgreSqlParser.KW_PARSER); - this.state = 4608; - this.any_name(); - this.state = 4609; - this.definition(); } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 5: + this.enterOuterAlt(localContext, 5); { - this.state = 4611; + this.state = 3470; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4612; + this.state = 3471; this.match(PostgreSqlParser.KW_TEXT); - this.state = 4613; + this.state = 3472; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4614; - this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 4615; - this.any_name(); - this.state = 4616; - this.definition(); + this.state = 3473; + _la = this.tokenStream.LA(1); + if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { + this.errorHandler.recoverInline(this); } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 4618; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4619; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4620; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4621; - this.match(PostgreSqlParser.KW_TEMPLATE); - this.state = 4622; - this.any_name(); - this.state = 4623; - this.definition(); + else { + this.errorHandler.reportMatch(this); + this.consume(); } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 4625; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4626; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4627; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4628; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 4629; + this.state = 3474; this.any_name(); - this.state = 4630; + this.state = 3475; this.definition(); } break; - case 13: - this.enterOuterAlt(localContext, 13); + case 6: + this.enterOuterAlt(localContext, 6); { - this.state = 4632; + this.state = 3477; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4633; + this.state = 3478; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 4635; + this.state = 3480; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 379, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { case 1: { - this.state = 4634; + this.state = 3479; this.opt_if_not_exists(); } break; } - this.state = 4637; + this.state = 3482; this.any_name(); - this.state = 4638; - this.definition(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 4640; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 4641; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 4643; + this.state = 3486; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: { - this.state = 4642; - this.opt_if_not_exists(); + this.state = 3483; + this.definition(); + } + break; + case PostgreSqlParser.KW_FROM: + { + { + this.state = 3484; + this.match(PostgreSqlParser.KW_FROM); + this.state = 3485; + this.any_name(); + } } break; + default: + throw new antlr.NoViableAltException(this); } - this.state = 4645; - this.any_name(); - this.state = 4646; - this.match(PostgreSqlParser.KW_FROM); - this.state = 4647; - this.any_name(); } break; } @@ -21569,57 +19117,33 @@ export class PostgreSqlParser extends SQLParserBase { } public definition(): DefinitionContext { let localContext = new DefinitionContext(this.context, this.state); - this.enterRule(localContext, 496, PostgreSqlParser.RULE_definition); + this.enterRule(localContext, 284, PostgreSqlParser.RULE_definition); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4651; + this.state = 3490; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4652; - this.def_list(); - this.state = 4653; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public def_list(): Def_listContext { - let localContext = new Def_listContext(this.context, this.state); - this.enterRule(localContext, 498, PostgreSqlParser.RULE_def_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4655; + this.state = 3491; this.def_elem(); - this.state = 4660; + this.state = 3496; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4656; + this.state = 3492; this.match(PostgreSqlParser.COMMA); - this.state = 4657; + this.state = 3493; this.def_elem(); } } - this.state = 4662; + this.state = 3498; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 3499; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -21638,21 +19162,21 @@ export class PostgreSqlParser extends SQLParserBase { } public def_elem(): Def_elemContext { let localContext = new Def_elemContext(this.context, this.state); - this.enterRule(localContext, 500, PostgreSqlParser.RULE_def_elem); + this.enterRule(localContext, 286, PostgreSqlParser.RULE_def_elem); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4663; + this.state = 3501; this.collabel(); - this.state = 4666; + this.state = 3504; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10) { { - this.state = 4664; + this.state = 3502; this.match(PostgreSqlParser.EQUAL); - this.state = 4665; + this.state = 3503; this.def_arg(); } } @@ -21675,50 +19199,50 @@ export class PostgreSqlParser extends SQLParserBase { } public def_arg(): Def_argContext { let localContext = new Def_argContext(this.context, this.state); - this.enterRule(localContext, 502, PostgreSqlParser.RULE_def_arg); + this.enterRule(localContext, 288, PostgreSqlParser.RULE_def_arg); try { - this.state = 4674; + this.state = 3512; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4668; + this.state = 3506; this.func_type(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4669; + this.state = 3507; this.reserved_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4670; + this.state = 3508; this.qual_all_op(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4671; + this.state = 3509; this.numericonly(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4672; + this.state = 3510; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4673; + this.state = 3511; this.match(PostgreSqlParser.KW_NONE); } break; @@ -21738,86 +19262,17 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public old_aggr_definition(): Old_aggr_definitionContext { - let localContext = new Old_aggr_definitionContext(this.context, this.state); - this.enterRule(localContext, 504, PostgreSqlParser.RULE_old_aggr_definition); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4676; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4677; - this.old_aggr_list(); - this.state = 4678; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public old_aggr_list(): Old_aggr_listContext { - let localContext = new Old_aggr_listContext(this.context, this.state); - this.enterRule(localContext, 506, PostgreSqlParser.RULE_old_aggr_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4680; - this.old_aggr_elem(); - this.state = 4685; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4681; - this.match(PostgreSqlParser.COMMA); - this.state = 4682; - this.old_aggr_elem(); - } - } - this.state = 4687; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public old_aggr_elem(): Old_aggr_elemContext { let localContext = new Old_aggr_elemContext(this.context, this.state); - this.enterRule(localContext, 508, PostgreSqlParser.RULE_old_aggr_elem); + this.enterRule(localContext, 290, PostgreSqlParser.RULE_old_aggr_elem); try { this.enterOuterAlt(localContext, 1); { - this.state = 4688; + this.state = 3514; this.identifier(); - this.state = 4689; + this.state = 3515; this.match(PostgreSqlParser.EQUAL); - this.state = 4690; + this.state = 3516; this.def_arg(); } } @@ -21835,110 +19290,45 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_enum_val_list(): Opt_enum_val_listContext { - let localContext = new Opt_enum_val_listContext(this.context, this.state); - this.enterRule(localContext, 510, PostgreSqlParser.RULE_opt_enum_val_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4692; - this.enum_val_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public enum_val_list(): Enum_val_listContext { - let localContext = new Enum_val_listContext(this.context, this.state); - this.enterRule(localContext, 512, PostgreSqlParser.RULE_enum_val_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4694; - this.sconst(); - this.state = 4699; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4695; - this.match(PostgreSqlParser.COMMA); - this.state = 4696; - this.sconst(); - } - } - this.state = 4701; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public alterenumstmt(): AlterenumstmtContext { let localContext = new AlterenumstmtContext(this.context, this.state); - this.enterRule(localContext, 514, PostgreSqlParser.RULE_alterenumstmt); + this.enterRule(localContext, 292, PostgreSqlParser.RULE_alterenumstmt); let _la: number; try { - this.state = 4724; + this.state = 3540; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 389, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 402, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4702; + this.state = 3518; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4703; + this.state = 3519; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4704; + this.state = 3520; this.any_name(); - this.state = 4705; + this.state = 3521; this.match(PostgreSqlParser.KW_ADD); - this.state = 4706; + this.state = 3522; this.match(PostgreSqlParser.KW_VALUE); - this.state = 4708; + this.state = 3524; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 4707; + this.state = 3523; this.opt_if_not_exists(); } } - this.state = 4710; + this.state = 3526; this.sconst(); - this.state = 4713; + this.state = 3529; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 388, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { case 1: { - this.state = 4711; + this.state = 3527; _la = this.tokenStream.LA(1); if(!(_la === 135 || _la === 145)) { this.errorHandler.recoverInline(this); @@ -21947,7 +19337,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4712; + this.state = 3528; this.sconst(); } break; @@ -21957,21 +19347,21 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4715; + this.state = 3531; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4716; + this.state = 3532; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4717; + this.state = 3533; this.any_name(); - this.state = 4718; + this.state = 3534; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4719; + this.state = 3535; this.match(PostgreSqlParser.KW_VALUE); - this.state = 4720; + this.state = 3536; this.sconst(); - this.state = 4721; + this.state = 3537; this.match(PostgreSqlParser.KW_TO); - this.state = 4722; + this.state = 3538; this.sconst(); } break; @@ -21993,15 +19383,15 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_if_not_exists(): Opt_if_not_existsContext { let localContext = new Opt_if_not_existsContext(this.context, this.state); - this.enterRule(localContext, 516, PostgreSqlParser.RULE_opt_if_not_exists); + this.enterRule(localContext, 294, PostgreSqlParser.RULE_opt_if_not_exists); try { this.enterOuterAlt(localContext, 1); { - this.state = 4726; + this.state = 3542; this.match(PostgreSqlParser.KW_IF); - this.state = 4727; + this.state = 3543; this.match(PostgreSqlParser.KW_NOT); - this.state = 4728; + this.state = 3544; this.match(PostgreSqlParser.KW_EXISTS); } } @@ -22021,91 +19411,66 @@ export class PostgreSqlParser extends SQLParserBase { } public createopclassstmt(): CreateopclassstmtContext { let localContext = new CreateopclassstmtContext(this.context, this.state); - this.enterRule(localContext, 518, PostgreSqlParser.RULE_createopclassstmt); + this.enterRule(localContext, 296, PostgreSqlParser.RULE_createopclassstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4730; + this.state = 3546; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4731; + this.state = 3547; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4732; + this.state = 3548; this.match(PostgreSqlParser.KW_CLASS); - this.state = 4733; + this.state = 3549; this.any_name(); - this.state = 4735; + this.state = 3551; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 4734; - this.opt_default(); + this.state = 3550; + this.match(PostgreSqlParser.KW_DEFAULT); } } - this.state = 4737; + this.state = 3553; this.match(PostgreSqlParser.KW_FOR); - this.state = 4738; + this.state = 3554; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4739; + this.state = 3555; this.typename(); - this.state = 4740; - this.match(PostgreSqlParser.KW_USING); - this.state = 4741; - this.name(); - this.state = 4743; + this.state = 3556; + this.table_access_method_clause(); + this.state = 3559; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 206) { { - this.state = 4742; - this.opt_opfamily(); + this.state = 3557; + this.match(PostgreSqlParser.KW_FAMILY); + this.state = 3558; + this.any_name(); } } - this.state = 4745; + this.state = 3561; this.match(PostgreSqlParser.KW_AS); - this.state = 4746; - this.opclass_item_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opclass_item_list(): Opclass_item_listContext { - let localContext = new Opclass_item_listContext(this.context, this.state); - this.enterRule(localContext, 520, PostgreSqlParser.RULE_opclass_item_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4748; + this.state = 3562; this.opclass_item(); - this.state = 4753; + this.state = 3567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4749; + this.state = 3563; this.match(PostgreSqlParser.COMMA); - this.state = 4750; + this.state = 3564; this.opclass_item(); } } - this.state = 4755; + this.state = 3569; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22127,230 +19492,109 @@ export class PostgreSqlParser extends SQLParserBase { } public opclass_item(): Opclass_itemContext { let localContext = new Opclass_itemContext(this.context, this.state); - this.enterRule(localContext, 522, PostgreSqlParser.RULE_opclass_item); + this.enterRule(localContext, 298, PostgreSqlParser.RULE_opclass_item); let _la: number; try { - this.state = 4787; + this.state = 3596; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 397, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 1); { - this.state = 4756; + this.state = 3570; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4757; - this.iconst(); - this.state = 4758; + this.state = 3571; + this.match(PostgreSqlParser.Integral); + this.state = 3572; this.any_operator(); - this.state = 4760; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 4759; - this.opclass_purpose(); - } - } - - this.state = 4763; + this.state = 3574; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 406, this.context) ) { case 1: { - this.state = 4762; - this.opt_recheck(); + this.state = 3573; + this.oper_argtypes(); } break; } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4765; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4766; - this.iconst(); - this.state = 4767; - this.operator_with_argtypes(); - this.state = 4769; + this.state = 3583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 4768; - this.opclass_purpose(); + this.state = 3576; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3581; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SEARCH: + { + this.state = 3577; + this.match(PostgreSqlParser.KW_SEARCH); + } + break; + case PostgreSqlParser.KW_ORDER: + { + { + this.state = 3578; + this.match(PostgreSqlParser.KW_ORDER); + this.state = 3579; + this.match(PostgreSqlParser.KW_BY); + this.state = 3580; + this.any_name(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } } } - this.state = 4772; + this.state = 3586; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { case 1: { - this.state = 4771; - this.opt_recheck(); + this.state = 3585; + this.match(PostgreSqlParser.KW_RECHECK); } break; } } break; - case 3: - this.enterOuterAlt(localContext, 3); + case PostgreSqlParser.KW_FUNCTION: + this.enterOuterAlt(localContext, 2); { - this.state = 4774; + this.state = 3588; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4775; - this.iconst(); - this.state = 4776; - this.function_with_argtypes(); + this.state = 3589; + this.match(PostgreSqlParser.Integral); + this.state = 3591; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 3590; + this.prep_type_clause(); + } } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4778; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4779; - this.iconst(); - this.state = 4780; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4781; - this.type_list(); - this.state = 4782; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 4783; + + this.state = 3593; this.function_with_argtypes(); } break; - case 5: - this.enterOuterAlt(localContext, 5); + case PostgreSqlParser.KW_STORAGE: + this.enterOuterAlt(localContext, 3); { - this.state = 4785; + this.state = 3594; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 4786; + this.state = 3595; this.typename(); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_default(): Opt_defaultContext { - let localContext = new Opt_defaultContext(this.context, this.state); - this.enterRule(localContext, 524, PostgreSqlParser.RULE_opt_default); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4789; - this.match(PostgreSqlParser.KW_DEFAULT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_opfamily(): Opt_opfamilyContext { - let localContext = new Opt_opfamilyContext(this.context, this.state); - this.enterRule(localContext, 526, PostgreSqlParser.RULE_opt_opfamily); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4791; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 4792; - this.any_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opclass_purpose(): Opclass_purposeContext { - let localContext = new Opclass_purposeContext(this.context, this.state); - this.enterRule(localContext, 528, PostgreSqlParser.RULE_opclass_purpose); - try { - this.state = 4800; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 398, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4794; - this.match(PostgreSqlParser.KW_FOR); - this.state = 4795; - this.match(PostgreSqlParser.KW_SEARCH); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4796; - this.match(PostgreSqlParser.KW_FOR); - this.state = 4797; - this.match(PostgreSqlParser.KW_ORDER); - this.state = 4798; - this.match(PostgreSqlParser.KW_BY); - this.state = 4799; - this.any_name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_recheck(): Opt_recheckContext { - let localContext = new Opt_recheckContext(this.context, this.state); - this.enterRule(localContext, 530, PostgreSqlParser.RULE_opt_recheck); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4802; - this.match(PostgreSqlParser.KW_RECHECK); + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -22369,22 +19613,20 @@ export class PostgreSqlParser extends SQLParserBase { } public createopfamilystmt(): CreateopfamilystmtContext { let localContext = new CreateopfamilystmtContext(this.context, this.state); - this.enterRule(localContext, 532, PostgreSqlParser.RULE_createopfamilystmt); + this.enterRule(localContext, 300, PostgreSqlParser.RULE_createopfamilystmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 4804; + this.state = 3598; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4805; + this.state = 3599; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4806; + this.state = 3600; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 4807; + this.state = 3601; this.any_name(); - this.state = 4808; - this.match(PostgreSqlParser.KW_USING); - this.state = 4809; - this.name(); + this.state = 3602; + this.table_access_method_clause(); } } catch (re) { @@ -22403,53 +19645,75 @@ export class PostgreSqlParser extends SQLParserBase { } public alteropfamilystmt(): AlteropfamilystmtContext { let localContext = new AlteropfamilystmtContext(this.context, this.state); - this.enterRule(localContext, 534, PostgreSqlParser.RULE_alteropfamilystmt); + this.enterRule(localContext, 302, PostgreSqlParser.RULE_alteropfamilystmt); + let _la: number; try { - this.state = 4829; + this.enterOuterAlt(localContext, 1); + { + this.state = 3604; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 3605; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 3606; + this.match(PostgreSqlParser.KW_FAMILY); + this.state = 3607; + this.any_name(); + this.state = 3608; + this.table_access_method_clause(); + this.state = 3627; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ADD: { - this.state = 4811; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 4812; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4813; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 4814; - this.any_name(); - this.state = 4815; - this.match(PostgreSqlParser.KW_USING); - this.state = 4816; - this.name(); - this.state = 4817; + this.state = 3609; this.match(PostgreSqlParser.KW_ADD); - this.state = 4818; - this.opclass_item_list(); + this.state = 3610; + this.opclass_item(); + this.state = 3615; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 3611; + this.match(PostgreSqlParser.COMMA); + this.state = 3612; + this.opclass_item(); + } + } + this.state = 3617; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; - case 2: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_DROP: { - this.state = 4820; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 4821; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4822; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 4823; - this.any_name(); - this.state = 4824; - this.match(PostgreSqlParser.KW_USING); - this.state = 4825; - this.name(); - this.state = 4826; + this.state = 3618; this.match(PostgreSqlParser.KW_DROP); - this.state = 4827; - this.opclass_drop_list(); + this.state = 3619; + this.opclass_drop(); + this.state = 3624; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 3620; + this.match(PostgreSqlParser.COMMA); + this.state = 3621; + this.opclass_drop(); + } + } + this.state = 3626; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; + default: + throw new antlr.NoViableAltException(this); + } } } catch (re) { @@ -22466,86 +19730,26 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opclass_drop_list(): Opclass_drop_listContext { - let localContext = new Opclass_drop_listContext(this.context, this.state); - this.enterRule(localContext, 536, PostgreSqlParser.RULE_opclass_drop_list); + public opclass_drop(): Opclass_dropContext { + let localContext = new Opclass_dropContext(this.context, this.state); + this.enterRule(localContext, 304, PostgreSqlParser.RULE_opclass_drop); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4831; - this.opclass_drop(); - this.state = 4836; - this.errorHandler.sync(this); + this.state = 3629; _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4832; - this.match(PostgreSqlParser.COMMA); - this.state = 4833; - this.opclass_drop(); - } - } - this.state = 4838; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + if(!(_la === 211 || _la === 278)) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public opclass_drop(): Opclass_dropContext { - let localContext = new Opclass_dropContext(this.context, this.state); - this.enterRule(localContext, 538, PostgreSqlParser.RULE_opclass_drop); - try { - this.state = 4851; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_OPERATOR: - this.enterOuterAlt(localContext, 1); - { - this.state = 4839; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4840; - this.iconst(); - this.state = 4841; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4842; - this.type_list(); - this.state = 4843; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_FUNCTION: - this.enterOuterAlt(localContext, 2); - { - this.state = 4845; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4846; - this.iconst(); - this.state = 4847; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4848; - this.type_list(); - this.state = 4849; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.state = 3630; + this.match(PostgreSqlParser.Integral); + this.state = 3631; + this.prep_type_clause(); } } catch (re) { @@ -22564,21 +19768,21 @@ export class PostgreSqlParser extends SQLParserBase { } public reassignownedstmt(): ReassignownedstmtContext { let localContext = new ReassignownedstmtContext(this.context, this.state); - this.enterRule(localContext, 540, PostgreSqlParser.RULE_reassignownedstmt); + this.enterRule(localContext, 306, PostgreSqlParser.RULE_reassignownedstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 4853; + this.state = 3633; this.match(PostgreSqlParser.KW_REASSIGN); - this.state = 4854; + this.state = 3634; this.match(PostgreSqlParser.KW_OWNED); - this.state = 4855; + this.state = 3635; this.match(PostgreSqlParser.KW_BY); - this.state = 4856; + this.state = 3636; this.role_list(); - this.state = 4857; + this.state = 3637; this.match(PostgreSqlParser.KW_TO); - this.state = 4858; + this.state = 3638; this.rolespec(); } } @@ -22598,1259 +19802,1417 @@ export class PostgreSqlParser extends SQLParserBase { } public dropstmt(): DropstmtContext { let localContext = new DropstmtContext(this.context, this.state); - this.enterRule(localContext, 542, PostgreSqlParser.RULE_dropstmt); + this.enterRule(localContext, 308, PostgreSqlParser.RULE_dropstmt); let _la: number; try { - this.state = 5239; + this.state = 3847; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4860; + this.state = 3640; this.match(PostgreSqlParser.KW_DROP); - this.state = 4861; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 4863; + this.state = 3663; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 402, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SEQUENCE: { - this.state = 4862; - this.opt_if_exists(); + this.state = 3641; + this.match(PostgreSqlParser.KW_SEQUENCE); } break; - } - this.state = 4865; - this.table_name_list(); - this.state = 4867; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 403, this.context) ) { - case 1: + case PostgreSqlParser.KW_INDEX: { - this.state = 4866; - this.opt_drop_behavior(); + this.state = 3642; + this.match(PostgreSqlParser.KW_INDEX); } break; - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4869; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4870; - this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 4872; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 404, this.context) ) { - case 1: + case PostgreSqlParser.KW_COLLATION: { - this.state = 4871; - this.opt_if_exists(); + this.state = 3643; + this.match(PostgreSqlParser.KW_COLLATION); } break; - } - this.state = 4874; - this.name_list(); - this.state = 4876; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 405, this.context) ) { - case 1: + case PostgreSqlParser.KW_CONVERSION: { - this.state = 4875; - this.opt_drop_behavior(); + this.state = 3644; + this.match(PostgreSqlParser.KW_CONVERSION); } break; - } - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4878; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4879; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 4881; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 406, this.context) ) { - case 1: + case PostgreSqlParser.KW_STATISTICS: { - this.state = 4880; - this.opt_if_exists(); + this.state = 3645; + this.match(PostgreSqlParser.KW_STATISTICS); } break; - } - this.state = 4883; - this.view_nameList(); - this.state = 4885; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 407, this.context) ) { - case 1: + case PostgreSqlParser.KW_PUBLICATION: { - this.state = 4884; - this.opt_drop_behavior(); + this.state = 3646; + this.match(PostgreSqlParser.KW_PUBLICATION); } break; - } - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 4887; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4888; - this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 4889; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 4891; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 408, this.context) ) { - case 1: + case PostgreSqlParser.KW_SERVER: { - this.state = 4890; - this.opt_if_exists(); + this.state = 3647; + this.match(PostgreSqlParser.KW_SERVER); } break; - } - this.state = 4893; - this.view_nameList(); - this.state = 4895; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { - case 1: + case PostgreSqlParser.KW_ACCESS: { - this.state = 4894; - this.opt_drop_behavior(); + this.state = 3648; + this.match(PostgreSqlParser.KW_ACCESS); + this.state = 3649; + this.match(PostgreSqlParser.KW_METHOD); } break; - } - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 4897; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4898; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 4900; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { - case 1: + case PostgreSqlParser.KW_EVENT: { - this.state = 4899; - this.opt_if_exists(); + this.state = 3650; + this.match(PostgreSqlParser.KW_EVENT); + this.state = 3651; + this.match(PostgreSqlParser.KW_TRIGGER); } break; - } - this.state = 4902; - this.name_list(); - this.state = 4904; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 411, this.context) ) { - case 1: + case PostgreSqlParser.KW_EXTENSION: { - this.state = 4903; - this.opt_drop_behavior(); + this.state = 3652; + this.match(PostgreSqlParser.KW_EXTENSION); } break; - } - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 4906; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4907; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4908; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 4910; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 412, this.context) ) { - case 1: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 4909; - this.opt_if_exists(); + this.state = 3654; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 295) { + { + this.state = 3653; + this.match(PostgreSqlParser.KW_PROCEDURAL); + } } - break; - } - this.state = 4912; - this.table_name_list(); - this.state = 4914; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 413, this.context) ) { - case 1: - { - this.state = 4913; - this.opt_drop_behavior(); + + this.state = 3656; + this.match(PostgreSqlParser.KW_LANGUAGE); } break; - } - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 4916; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4917; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 4919; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 414, this.context) ) { - case 1: + case PostgreSqlParser.KW_FOREIGN: { - this.state = 4918; - this.opt_if_exists(); + this.state = 3657; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 3658; + this.match(PostgreSqlParser.KW_DATA); + this.state = 3659; + this.match(PostgreSqlParser.KW_WRAPPER); } break; - } - this.state = 4921; - this.name_list(); - this.state = 4923; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 415, this.context) ) { - case 1: + case PostgreSqlParser.KW_TEXT: { - this.state = 4922; - this.opt_drop_behavior(); + this.state = 3660; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 3661; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 3662; + _la = this.tokenStream.LA(1); + if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; + default: + throw new antlr.NoViableAltException(this); } - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 4925; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4926; - this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 4928; + this.state = 3666; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 416, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { case 1: { - this.state = 4927; + this.state = 3665; this.opt_if_exists(); } break; } - this.state = 4930; + this.state = 3668; this.name_list(); - this.state = 4932; + this.state = 3670; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 418, this.context) ) { case 1: { - this.state = 4931; + this.state = 3669; this.opt_drop_behavior(); } break; } } break; - case 9: - this.enterOuterAlt(localContext, 9); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 4934; + this.state = 3672; this.match(PostgreSqlParser.KW_DROP); - this.state = 4935; - this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 4937; + this.state = 3674; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 418, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 259) { { - this.state = 4936; - this.opt_if_exists(); + this.state = 3673; + this.match(PostgreSqlParser.KW_MATERIALIZED); } - break; } - this.state = 4939; - this.name_list(); - this.state = 4941; + + this.state = 3676; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 3678; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 419, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { case 1: { - this.state = 4940; - this.opt_drop_behavior(); + this.state = 3677; + this.opt_if_exists(); } break; } - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 4943; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4944; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4945; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4946; - this.match(PostgreSqlParser.KW_PARSER); - this.state = 4948; + this.state = 3680; + this.view_name(); + this.state = 3685; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 4947; - this.opt_if_exists(); + { + this.state = 3681; + this.match(PostgreSqlParser.COMMA); + this.state = 3682; + this.view_name(); } - break; + } + this.state = 3687; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - this.state = 4950; - this.name_list(); - this.state = 4952; + this.state = 3689; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 421, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { case 1: { - this.state = 4951; + this.state = 3688; this.opt_drop_behavior(); } break; } } break; - case 11: - this.enterOuterAlt(localContext, 11); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 4954; + this.state = 3691; this.match(PostgreSqlParser.KW_DROP); - this.state = 4955; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4956; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4957; - this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 4959; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { - case 1: - { - this.state = 4958; - this.opt_if_exists(); - } - break; - } - this.state = 4961; - this.name_list(); - this.state = 4963; + this.state = 3693; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 423, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 63) { { - this.state = 4962; - this.opt_drop_behavior(); + this.state = 3692; + this.match(PostgreSqlParser.KW_FOREIGN); } - break; - } } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 4965; - this.match(PostgreSqlParser.KW_DROP); - this.state = 4966; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4967; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4968; - this.match(PostgreSqlParser.KW_TEMPLATE); - this.state = 4970; + + this.state = 3695; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 3697; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { case 1: { - this.state = 4969; + this.state = 3696; this.opt_if_exists(); } break; } - this.state = 4972; - this.name_list(); - this.state = 4974; + this.state = 3699; + this.table_name_list(); + this.state = 3701; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 425, this.context) ) { case 1: { - this.state = 4973; + this.state = 3700; this.opt_drop_behavior(); } break; } } break; - case 13: - this.enterOuterAlt(localContext, 13); + case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 4976; + this.state = 3703; this.match(PostgreSqlParser.KW_DROP); - this.state = 4977; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 4978; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 4979; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 4981; + this.state = 3704; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 3706; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 426, this.context) ) { case 1: { - this.state = 4980; + this.state = 3705; this.opt_if_exists(); } break; } - this.state = 4983; - this.name_list(); - this.state = 4985; + this.state = 3708; + this.schema_name_list(); + this.state = 3710; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { case 1: { - this.state = 4984; + this.state = 3709; this.opt_drop_behavior(); } break; } } break; - case 14: - this.enterOuterAlt(localContext, 14); + case 5: + this.enterOuterAlt(localContext, 5); { - this.state = 4987; + this.state = 3712; this.match(PostgreSqlParser.KW_DROP); - this.state = 4988; - this.match(PostgreSqlParser.KW_ACCESS); - this.state = 4989; - this.match(PostgreSqlParser.KW_METHOD); - this.state = 4991; + this.state = 3713; + _la = this.tokenStream.LA(1); + if(!(_la === 321 || _la === 357 || _la === 445)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3715; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { case 1: { - this.state = 4990; + this.state = 3714; this.opt_if_exists(); } break; } - this.state = 4993; - this.name_list(); - this.state = 4995; + this.state = 3717; + this.colid(); + this.state = 3718; + this.match(PostgreSqlParser.KW_ON); + this.state = 3719; + this.any_name(); + this.state = 3721; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 429, this.context) ) { case 1: { - this.state = 4994; + this.state = 3720; this.opt_drop_behavior(); } break; } } break; - case 15: - this.enterOuterAlt(localContext, 15); + case 6: + this.enterOuterAlt(localContext, 6); { - this.state = 4997; + this.state = 3723; this.match(PostgreSqlParser.KW_DROP); - this.state = 4998; - this.match(PostgreSqlParser.KW_EVENT); - this.state = 4999; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 5001; + this.state = 3724; + _la = this.tokenStream.LA(1); + if(!(_la === 189 || _la === 360)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3726; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 430, this.context) ) { case 1: { - this.state = 5000; + this.state = 3725; this.opt_if_exists(); } break; } - this.state = 5003; - this.name_list(); - this.state = 5005; + this.state = 3728; + this.typename(); + this.state = 3733; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 3729; + this.match(PostgreSqlParser.COMMA); + this.state = 3730; + this.typename(); + } + } + this.state = 3735; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3737; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 431, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { case 1: { - this.state = 5004; + this.state = 3736; this.opt_drop_behavior(); } break; } } break; - case 16: - this.enterOuterAlt(localContext, 16); + case 7: + this.enterOuterAlt(localContext, 7); { - this.state = 5007; + this.state = 3739; this.match(PostgreSqlParser.KW_DROP); - this.state = 5008; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 5010; + this.state = 3740; + this.match(PostgreSqlParser.KW_INDEX); + this.state = 3741; + this.match(PostgreSqlParser.KW_CONCURRENTLY); + this.state = 3743; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 433, this.context) ) { case 1: { - this.state = 5009; + this.state = 3742; this.opt_if_exists(); } break; } - this.state = 5012; - this.name_list(); - this.state = 5014; + this.state = 3745; + this.any_name_list(); + this.state = 3747; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 433, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { case 1: { - this.state = 5013; + this.state = 3746; this.opt_drop_behavior(); } break; } } break; - case 17: - this.enterOuterAlt(localContext, 17); + case 8: + this.enterOuterAlt(localContext, 8); { - this.state = 5016; + this.state = 3749; this.match(PostgreSqlParser.KW_DROP); - this.state = 5017; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 5018; - this.match(PostgreSqlParser.KW_DATA); - this.state = 5019; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 5021; + this.state = 3750; + this.match(PostgreSqlParser.KW_CAST); + this.state = 3752; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 220) { { - this.state = 5020; + this.state = 3751; this.opt_if_exists(); } - break; } - this.state = 5023; - this.name_list(); - this.state = 5025; + + this.state = 3754; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3755; + this.typename(); + this.state = 3756; + this.match(PostgreSqlParser.KW_AS); + this.state = 3757; + this.typename(); + this.state = 3758; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 3760; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 435, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 436, this.context) ) { case 1: { - this.state = 5024; + this.state = 3759; this.opt_drop_behavior(); } break; } } break; - case 18: - this.enterOuterAlt(localContext, 18); + case 9: + this.enterOuterAlt(localContext, 9); { - this.state = 5027; + this.state = 3762; this.match(PostgreSqlParser.KW_DROP); - this.state = 5029; - this.errorHandler.sync(this); + this.state = 3763; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 3764; _la = this.tokenStream.LA(1); - if (_la === 295) { - { - this.state = 5028; - this.opt_procedural(); - } + if(!(_la === 156 || _la === 206)) { + this.errorHandler.recoverInline(this); } - - this.state = 5031; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5033; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3766; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 437, this.context) ) { case 1: { - this.state = 5032; + this.state = 3765; this.opt_if_exists(); } break; } - this.state = 5035; - this.name_list(); - this.state = 5037; + this.state = 3768; + this.any_name(); + this.state = 3769; + this.table_access_method_clause(); + this.state = 3771; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 438, this.context) ) { case 1: { - this.state = 5036; + this.state = 3770; this.opt_drop_behavior(); } break; } } break; - case 19: - this.enterOuterAlt(localContext, 19); + case 10: + this.enterOuterAlt(localContext, 10); { - this.state = 5039; + this.state = 3773; this.match(PostgreSqlParser.KW_DROP); - this.state = 5040; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5042; + this.state = 3774; + this.match(PostgreSqlParser.KW_OWNED); + this.state = 3775; + this.match(PostgreSqlParser.KW_BY); + this.state = 3776; + this.role_list(); + this.state = 3778; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 439, this.context) ) { case 1: { - this.state = 5041; - this.opt_if_exists(); - } - break; - } - this.state = 5044; - this.name_list(); - this.state = 5046; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 440, this.context) ) { - case 1: - { - this.state = 5045; + this.state = 3777; this.opt_drop_behavior(); } break; } } break; - case 20: - this.enterOuterAlt(localContext, 20); + case 11: + this.enterOuterAlt(localContext, 11); { - this.state = 5048; + this.state = 3780; this.match(PostgreSqlParser.KW_DROP); - this.state = 5049; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 5051; + this.state = 3781; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 3783; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 441, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 440, this.context) ) { case 1: { - this.state = 5050; + this.state = 3782; this.opt_if_exists(); } break; } - this.state = 5053; - this.name_list(); - this.state = 5055; + this.state = 3785; + this.colid(); + this.state = 3787; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 442, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 441, this.context) ) { case 1: { - this.state = 5054; + this.state = 3786; this.opt_drop_behavior(); } break; } } break; - case 21: - this.enterOuterAlt(localContext, 21); + case 12: + this.enterOuterAlt(localContext, 12); { - this.state = 5057; + this.state = 3789; this.match(PostgreSqlParser.KW_DROP); - this.state = 5058; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5060; + this.state = 3790; + this.match(PostgreSqlParser.KW_TABLESPACE); + this.state = 3792; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 443, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 442, this.context) ) { case 1: { - this.state = 5059; + this.state = 3791; this.opt_if_exists(); } break; } - this.state = 5062; - this.schema_name_list(); - this.state = 5064; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { - case 1: - { - this.state = 5063; - this.opt_drop_behavior(); - } - break; - } + this.state = 3794; + this.tablespace_name(); } break; - case 22: - this.enterOuterAlt(localContext, 22); + case 13: + this.enterOuterAlt(localContext, 13); { - this.state = 5066; + this.state = 3795; this.match(PostgreSqlParser.KW_DROP); - this.state = 5067; - this.match(PostgreSqlParser.KW_POLICY); - this.state = 5069; + this.state = 3796; + this.match(PostgreSqlParser.KW_TRANSFORM); + this.state = 3798; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 445, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 220) { { - this.state = 5068; + this.state = 3797; this.opt_if_exists(); } - break; } - this.state = 5071; - this.name(); - this.state = 5072; - this.match(PostgreSqlParser.KW_ON); - this.state = 5073; - this.any_name(); - this.state = 5075; + + this.state = 3800; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3801; + this.typename(); + this.state = 3802; + this.match(PostgreSqlParser.KW_LANGUAGE); + this.state = 3803; + this.colid(); + this.state = 3805; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 446, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { case 1: { - this.state = 5074; + this.state = 3804; this.opt_drop_behavior(); } break; } } break; - case 23: - this.enterOuterAlt(localContext, 23); + case 14: + this.enterOuterAlt(localContext, 14); { - this.state = 5077; + this.state = 3807; this.match(PostgreSqlParser.KW_DROP); - this.state = 5078; - this.match(PostgreSqlParser.KW_RULE); - this.state = 5080; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 447, this.context) ) { - case 1: - { - this.state = 5079; - this.opt_if_exists(); - } - break; + this.state = 3808; + _la = this.tokenStream.LA(1); + if(!(_la === 66 || _la === 99 || _la === 318)) { + this.errorHandler.recoverInline(this); } - this.state = 5082; - this.name(); - this.state = 5083; - this.match(PostgreSqlParser.KW_ON); - this.state = 5084; - this.any_name(); - this.state = 5086; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3810; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 448, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 445, this.context) ) { case 1: { - this.state = 5085; - this.opt_drop_behavior(); + this.state = 3809; + this.opt_if_exists(); } break; } + this.state = 3812; + this.role_list(); } break; - case 24: - this.enterOuterAlt(localContext, 24); + case 15: + this.enterOuterAlt(localContext, 15); { - this.state = 5088; + this.state = 3813; this.match(PostgreSqlParser.KW_DROP); - this.state = 5089; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 5091; + this.state = 3814; + this.match(PostgreSqlParser.KW_USER); + this.state = 3815; + this.match(PostgreSqlParser.KW_MAPPING); + this.state = 3817; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 449, this.context) ) { - case 1: - { - this.state = 5090; - this.opt_if_exists(); - } - break; - } - this.state = 5093; - this.name(); - this.state = 5094; - this.match(PostgreSqlParser.KW_ON); - this.state = 5095; - this.any_name(); - this.state = 5097; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 450, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 220) { { - this.state = 5096; - this.opt_drop_behavior(); + this.state = 3816; + this.opt_if_exists(); } - break; - } } - break; - case 25: - this.enterOuterAlt(localContext, 25); - { - this.state = 5099; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5100; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 5102; + + this.state = 3819; + this.match(PostgreSqlParser.KW_FOR); + this.state = 3822; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_USER: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 5101; - this.opt_if_exists(); + this.state = 3820; + this.rolespec(); } break; - } - this.state = 5104; - this.type_name_list(); - this.state = 5106; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { - case 1: + case PostgreSqlParser.KW_USER: { - this.state = 5105; - this.opt_drop_behavior(); + this.state = 3821; + this.match(PostgreSqlParser.KW_USER); } break; + default: + throw new antlr.NoViableAltException(this); } + this.state = 3824; + this.match(PostgreSqlParser.KW_SERVER); + this.state = 3825; + this.colid(); } break; - case 26: - this.enterOuterAlt(localContext, 26); + case 16: + this.enterOuterAlt(localContext, 16); { - this.state = 5108; + this.state = 3826; this.match(PostgreSqlParser.KW_DROP); - this.state = 5109; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5111; + this.state = 3827; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 3829; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 453, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 448, this.context) ) { case 1: { - this.state = 5110; + this.state = 3828; this.opt_if_exists(); } break; } - this.state = 5113; - this.type_name_list(); - this.state = 5115; + this.state = 3831; + this.database_name(); + this.state = 3845; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 454, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { case 1: { - this.state = 5114; - this.opt_drop_behavior(); + this.state = 3833; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 3832; + this.match(PostgreSqlParser.KW_WITH); + } + } + + { + this.state = 3835; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 3836; + this.match(PostgreSqlParser.KW_FORCE); + this.state = 3841; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 3837; + this.match(PostgreSqlParser.COMMA); + this.state = 3838; + this.match(PostgreSqlParser.KW_FORCE); + } + } + this.state = 3843; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3844; + this.match(PostgreSqlParser.CLOSE_PAREN); + } } break; } } break; - case 27: - this.enterOuterAlt(localContext, 27); - { - this.state = 5117; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5118; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 5119; - this.match(PostgreSqlParser.KW_CONCURRENTLY); - this.state = 5121; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { - case 1: - { - this.state = 5120; - this.opt_if_exists(); - } - break; - } - this.state = 5123; - this.any_name_list(); - this.state = 5125; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public object_type_any_name(): Object_type_any_nameContext { + let localContext = new Object_type_any_nameContext(this.context, this.state); + this.enterRule(localContext, 310, PostgreSqlParser.RULE_object_type_any_name); + let _la: number; + try { + this.state = 3865; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FOREIGN: + case PostgreSqlParser.KW_TABLE: + this.enterOuterAlt(localContext, 1); + { + this.state = 3850; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 456, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 63) { { - this.state = 5124; - this.opt_drop_behavior(); + this.state = 3849; + this.match(PostgreSqlParser.KW_FOREIGN); } - break; } + + this.state = 3852; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 3853; + this.table_name(); } break; - case 28: - this.enterOuterAlt(localContext, 28); + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_VIEW: + this.enterOuterAlt(localContext, 2); { - this.state = 5127; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5128; - this.match(PostgreSqlParser.KW_CAST); - this.state = 5130; + this.state = 3855; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 220) { + if (_la === 259) { { - this.state = 5129; - this.opt_if_exists(); + this.state = 3854; + this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 5132; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5133; - this.typename(); - this.state = 5134; - this.match(PostgreSqlParser.KW_AS); - this.state = 5135; - this.typename(); - this.state = 5136; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 5138; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { - case 1: - { - this.state = 5137; - this.opt_drop_behavior(); - } - break; - } + this.state = 3857; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 3858; + this.view_name(); } break; - case 29: - this.enterOuterAlt(localContext, 29); + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_STATISTICS: + this.enterOuterAlt(localContext, 3); { - this.state = 5140; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5141; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5142; - this.match(PostgreSqlParser.KW_CLASS); - this.state = 5144; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { - case 1: - { - this.state = 5143; - this.opt_if_exists(); - } - break; + this.state = 3859; + _la = this.tokenStream.LA(1); + if(!(_la === 108 || _la === 168 || _la === 226 || _la === 328 || _la === 342)) { + this.errorHandler.recoverInline(this); } - this.state = 5146; - this.any_name(); - this.state = 5147; - this.match(PostgreSqlParser.KW_USING); - this.state = 5148; - this.name(); - this.state = 5150; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { - case 1: - { - this.state = 5149; - this.opt_drop_behavior(); - } - break; + else { + this.errorHandler.reportMatch(this); + this.consume(); } + this.state = 3860; + this.any_name(); } break; - case 30: - this.enterOuterAlt(localContext, 30); + case PostgreSqlParser.KW_TEXT: + this.enterOuterAlt(localContext, 4); { - this.state = 5152; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5153; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5154; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 5156; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { - case 1: - { - this.state = 5155; - this.opt_if_exists(); - } - break; + this.state = 3861; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 3862; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 3863; + _la = this.tokenStream.LA(1); + if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { + this.errorHandler.recoverInline(this); } - this.state = 5158; - this.any_name(); - this.state = 5159; - this.match(PostgreSqlParser.KW_USING); - this.state = 5160; - this.name(); - this.state = 5162; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { - case 1: - { - this.state = 5161; - this.opt_drop_behavior(); - } - break; + else { + this.errorHandler.reportMatch(this); + this.consume(); } + this.state = 3864; + this.any_name(); } break; - case 31: - this.enterOuterAlt(localContext, 31); + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public object_type_name(): Object_type_nameContext { + let localContext = new Object_type_nameContext(this.context, this.state); + this.enterRule(localContext, 312, PostgreSqlParser.RULE_object_type_name); + let _la: number; + try { + this.state = 3891; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FOREIGN: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + this.enterOuterAlt(localContext, 1); { - this.state = 5164; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5165; - this.match(PostgreSqlParser.KW_OWNED); - this.state = 5166; - this.match(PostgreSqlParser.KW_BY); - this.state = 5167; - this.role_list(); - this.state = 5169; + this.state = 3883; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_EVENT: { - this.state = 5168; - this.opt_drop_behavior(); + this.state = 3867; + this.match(PostgreSqlParser.KW_EVENT); + this.state = 3868; + this.match(PostgreSqlParser.KW_TRIGGER); } break; - } - } - break; - case 32: - this.enterOuterAlt(localContext, 32); - { - this.state = 5171; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5172; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 5174; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { - case 1: + case PostgreSqlParser.KW_ACCESS: { - this.state = 5173; - this.opt_if_exists(); + this.state = 3869; + this.match(PostgreSqlParser.KW_ACCESS); + this.state = 3870; + this.match(PostgreSqlParser.KW_METHOD); } break; - } - this.state = 5176; - this.view_nameList(); - this.state = 5178; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { - case 1: + case PostgreSqlParser.KW_EXTENSION: { - this.state = 5177; - this.opt_drop_behavior(); + this.state = 3871; + this.match(PostgreSqlParser.KW_EXTENSION); } break; - } - } - break; - case 33: - this.enterOuterAlt(localContext, 33); - { - this.state = 5180; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5181; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5183; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 466, this.context) ) { - case 1: + case PostgreSqlParser.KW_PUBLICATION: { - this.state = 5182; - this.opt_if_exists(); + this.state = 3872; + this.match(PostgreSqlParser.KW_PUBLICATION); } break; - } - this.state = 5185; - this.name(); - this.state = 5187; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 467, this.context) ) { - case 1: + case PostgreSqlParser.KW_SERVER: { - this.state = 5186; - this.opt_drop_behavior(); + this.state = 3873; + this.match(PostgreSqlParser.KW_SERVER); } break; - } - } - break; - case 34: - this.enterOuterAlt(localContext, 34); - { - this.state = 5189; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5190; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 5192; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { - case 1: + case PostgreSqlParser.KW_ROLE: { - this.state = 5191; - this.opt_if_exists(); + this.state = 3874; + this.match(PostgreSqlParser.KW_ROLE); } break; - } - this.state = 5194; - this.tablespace_name(); - } - break; - case 35: - this.enterOuterAlt(localContext, 35); - { - this.state = 5195; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5196; - this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 5198; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 220) { + case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 5197; - this.opt_if_exists(); + this.state = 3875; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); } - } - - this.state = 5200; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5201; - this.typename(); - this.state = 5202; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5203; - this.name(); - this.state = 5205; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { - case 1: + break; + case PostgreSqlParser.KW_FOREIGN: { - this.state = 5204; - this.opt_drop_behavior(); + this.state = 3876; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 3877; + this.match(PostgreSqlParser.KW_DATA); + this.state = 3878; + this.match(PostgreSqlParser.KW_WRAPPER); } break; - } - } - break; - case 36: - this.enterOuterAlt(localContext, 36); - { - this.state = 5207; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5208; - _la = this.tokenStream.LA(1); - if(!(_la === 66 || _la === 99 || _la === 318)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 5210; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { - case 1: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 5209; - this.opt_if_exists(); + this.state = 3880; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 295) { + { + this.state = 3879; + this.match(PostgreSqlParser.KW_PROCEDURAL); + } + } + + this.state = 3882; + this.match(PostgreSqlParser.KW_LANGUAGE); } break; + default: + throw new antlr.NoViableAltException(this); } - this.state = 5212; - this.role_list(); + this.state = 3885; + this.colid(); } break; - case 37: - this.enterOuterAlt(localContext, 37); + case PostgreSqlParser.KW_SCHEMA: + this.enterOuterAlt(localContext, 2); { - this.state = 5213; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5214; - this.match(PostgreSqlParser.KW_USER); - this.state = 5215; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5217; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 220) { - { - this.state = 5216; - this.opt_if_exists(); - } - } - - this.state = 5219; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5220; - this.auth_ident(); - this.state = 5221; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 5222; - this.name(); + this.state = 3886; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 3887; + this.schema_name(); } break; - case 38: - this.enterOuterAlt(localContext, 38); + case PostgreSqlParser.KW_DATABASE: + this.enterOuterAlt(localContext, 3); { - this.state = 5224; - this.match(PostgreSqlParser.KW_DROP); - this.state = 5225; + this.state = 3888; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5227; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 473, this.context) ) { - case 1: - { - this.state = 5226; - this.opt_if_exists(); - } - break; - } - this.state = 5229; + this.state = 3889; this.database_name(); - this.state = 5237; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 475, this.context) ) { - case 1: - { - this.state = 5231; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 5230; - this.opt_with(); - } - } - - this.state = 5233; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5234; - this.drop_option_list(); - this.state = 5235; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; } + break; + case PostgreSqlParser.KW_TABLESPACE: + this.enterOuterAlt(localContext, 4); + { + this.state = 3890; + this.opttablespace(); } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -23867,28 +21229,28 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public view_nameList(): View_nameListContext { - let localContext = new View_nameListContext(this.context, this.state); - this.enterRule(localContext, 544, PostgreSqlParser.RULE_view_nameList); + public any_name_list(): Any_name_listContext { + let localContext = new Any_name_listContext(this.context, this.state); + this.enterRule(localContext, 314, PostgreSqlParser.RULE_any_name_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5241; - this.view_name(); - this.state = 5246; + this.state = 3893; + this.any_name(); + this.state = 3898; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5242; + this.state = 3894; this.match(PostgreSqlParser.COMMA); - this.state = 5243; - this.view_name(); + this.state = 3895; + this.any_name(); } } - this.state = 5248; + this.state = 3900; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -23908,121 +21270,24 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public object_type_any_name(): Object_type_any_nameContext { - let localContext = new Object_type_any_nameContext(this.context, this.state); - this.enterRule(localContext, 546, PostgreSqlParser.RULE_object_type_any_name); - let _la: number; + public any_name(): Any_nameContext { + let localContext = new Any_nameContext(this.context, this.state); + this.enterRule(localContext, 316, PostgreSqlParser.RULE_any_name); try { - this.state = 5273; + this.enterOuterAlt(localContext, 1); + { + this.state = 3901; + this.colid(); + this.state = 3903; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FOREIGN: - case PostgreSqlParser.KW_TABLE: - this.enterOuterAlt(localContext, 1); - { - this.state = 5250; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 63) { - { - this.state = 5249; - this.match(PostgreSqlParser.KW_FOREIGN); - } - } - - this.state = 5252; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 5253; - this.table_name(); - } - break; - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_VIEW: - this.enterOuterAlt(localContext, 2); - { - this.state = 5255; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 259) { - { - this.state = 5254; - this.match(PostgreSqlParser.KW_MATERIALIZED); - } - } - - this.state = 5257; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 5258; - this.view_name(); - } - break; - case PostgreSqlParser.KW_INDEX: - this.enterOuterAlt(localContext, 3); - { - this.state = 5259; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 5260; - this.any_name(); - } - break; - case PostgreSqlParser.KW_COLLATION: - this.enterOuterAlt(localContext, 4); - { - this.state = 5261; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 5262; - this.any_name(); - } - break; - case PostgreSqlParser.KW_CONVERSION: - this.enterOuterAlt(localContext, 5); - { - this.state = 5263; - this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 5264; - this.any_name(); - } - break; - case PostgreSqlParser.KW_STATISTICS: - this.enterOuterAlt(localContext, 6); - { - this.state = 5265; - this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 5266; - this.any_name(); - } - break; - case PostgreSqlParser.KW_SEQUENCE: - this.enterOuterAlt(localContext, 7); - { - this.state = 5267; - this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 5268; - this.any_name(); - } - break; - case PostgreSqlParser.KW_TEXT: - this.enterOuterAlt(localContext, 8); + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { + case 1: { - this.state = 5269; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 5270; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5271; - _la = this.tokenStream.LA(1); - if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 5272; - this.any_name(); + this.state = 3902; + this.attrs(); } break; - default: - throw new antlr.NoViableAltException(this); + } } } catch (re) { @@ -24039,380 +21304,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public object_type_name(): Object_type_nameContext { - let localContext = new Object_type_nameContext(this.context, this.state); - this.enterRule(localContext, 548, PostgreSqlParser.RULE_object_type_name); - let _la: number; + public attrs(): AttrsContext { + let localContext = new AttrsContext(this.context, this.state); + this.enterRule(localContext, 318, PostgreSqlParser.RULE_attrs); try { - this.state = 5306; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3907; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ACCESS: - this.enterOuterAlt(localContext, 1); - { - { - this.state = 5275; - this.match(PostgreSqlParser.KW_ACCESS); - this.state = 5276; - this.match(PostgreSqlParser.KW_METHOD); - this.state = 5277; - this.name(); - } + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 3905; + this.match(PostgreSqlParser.DOT); + this.state = 3906; + this.collabel(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); } - break; - case PostgreSqlParser.KW_EVENT: - this.enterOuterAlt(localContext, 2); - { - { - this.state = 5278; - this.match(PostgreSqlParser.KW_EVENT); - this.state = 5279; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 5280; - this.name(); - } - } - break; - case PostgreSqlParser.KW_EXTENSION: - this.enterOuterAlt(localContext, 3); - { - { - this.state = 5281; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 5282; - this.name(); - } - } - break; - case PostgreSqlParser.KW_FOREIGN: - this.enterOuterAlt(localContext, 4); - { - { - this.state = 5283; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 5284; - this.match(PostgreSqlParser.KW_DATA); - this.state = 5285; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 5286; - this.name(); - } - } - break; - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_PROCEDURAL: - this.enterOuterAlt(localContext, 5); - { - { - this.state = 5288; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 295) { - { - this.state = 5287; - this.opt_procedural(); - } - } - - this.state = 5290; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5291; - this.name(); - } - } - break; - case PostgreSqlParser.KW_PUBLICATION: - this.enterOuterAlt(localContext, 6); - { - { - this.state = 5292; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5293; - this.name(); - } - } - break; - case PostgreSqlParser.KW_SCHEMA: - this.enterOuterAlt(localContext, 7); - { - { - this.state = 5294; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5295; - this.schema_name(); - } - } - break; - case PostgreSqlParser.KW_SERVER: - this.enterOuterAlt(localContext, 8); - { - { - this.state = 5296; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 5297; - this.name(); - } - } - break; - case PostgreSqlParser.KW_DATABASE: - this.enterOuterAlt(localContext, 9); - { - { - this.state = 5298; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5299; - this.database_name(); - } - } - break; - case PostgreSqlParser.KW_ROLE: - this.enterOuterAlt(localContext, 10); - { - { - this.state = 5300; - this.match(PostgreSqlParser.KW_ROLE); - this.state = 5301; - this.name(); - } - } - break; - case PostgreSqlParser.KW_SUBSCRIPTION: - this.enterOuterAlt(localContext, 11); - { - { - this.state = 5302; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5303; - this.name(); - } - } - break; - case PostgreSqlParser.KW_TABLESPACE: - this.enterOuterAlt(localContext, 12); - { - { - this.state = 5304; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 5305; - this.tablespace_name(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public object_type_name_on_any_name(): Object_type_name_on_any_nameContext { - let localContext = new Object_type_name_on_any_nameContext(this.context, this.state); - this.enterRule(localContext, 550, PostgreSqlParser.RULE_object_type_name_on_any_name); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5308; - _la = this.tokenStream.LA(1); - if(!(_la === 321 || _la === 357 || _la === 445)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public any_name_list(): Any_name_listContext { - let localContext = new Any_name_listContext(this.context, this.state); - this.enterRule(localContext, 552, PostgreSqlParser.RULE_any_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5310; - this.any_name(); - this.state = 5315; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 5311; - this.match(PostgreSqlParser.COMMA); - this.state = 5312; - this.any_name(); - } - } - this.state = 5317; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public relation_column_name(): Relation_column_nameContext { - let localContext = new Relation_column_nameContext(this.context, this.state); - this.enterRule(localContext, 554, PostgreSqlParser.RULE_relation_column_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5318; - this.relation_name(); - this.state = 5319; - this.match(PostgreSqlParser.DOT); - this.state = 5320; - this.column_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public relation_name(): Relation_nameContext { - let localContext = new Relation_nameContext(this.context, this.state); - this.enterRule(localContext, 556, PostgreSqlParser.RULE_relation_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5322; - this.colid(); - this.state = 5324; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 484, this.context) ) { - case 1: - { - this.state = 5323; - this.attrs(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public any_name(): Any_nameContext { - let localContext = new Any_nameContext(this.context, this.state); - this.enterRule(localContext, 558, PostgreSqlParser.RULE_any_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5326; - this.colid(); - this.state = 5328; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 485, this.context) ) { - case 1: - { - this.state = 5327; - this.attrs(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public attrs(): AttrsContext { - let localContext = new AttrsContext(this.context, this.state); - this.enterRule(localContext, 560, PostgreSqlParser.RULE_attrs); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 5332; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - { - this.state = 5330; - this.match(PostgreSqlParser.DOT); - this.state = 5331; - this.attr_name(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 5334; + this.state = 3909; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 486, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -24430,90 +21349,49 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public type_name_list(): Type_name_listContext { - let localContext = new Type_name_listContext(this.context, this.state); - this.enterRule(localContext, 562, PostgreSqlParser.RULE_type_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5336; - this.typename(); - this.state = 5341; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 5337; - this.match(PostgreSqlParser.COMMA); - this.state = 5338; - this.typename(); - } - } - this.state = 5343; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public truncatestmt(): TruncatestmtContext { let localContext = new TruncatestmtContext(this.context, this.state); - this.enterRule(localContext, 564, PostgreSqlParser.RULE_truncatestmt); + this.enterRule(localContext, 320, PostgreSqlParser.RULE_truncatestmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5344; + this.state = 3911; this.match(PostgreSqlParser.KW_TRUNCATE); - this.state = 5346; + this.state = 3913; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 5345; + this.state = 3912; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 5348; + this.state = 3915; this.truncate_table(); - this.state = 5353; + this.state = 3920; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5349; + this.state = 3916; this.match(PostgreSqlParser.COMMA); - this.state = 5350; + this.state = 3917; this.truncate_table(); } } - this.state = 5355; + this.state = 3922; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5358; + this.state = 3925; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: { - this.state = 5356; + this.state = 3923; _la = this.tokenStream.LA(1); if(!(_la === 167 || _la === 314)) { this.errorHandler.recoverInline(this); @@ -24522,17 +21400,17 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5357; + this.state = 3924; this.match(PostgreSqlParser.KW_IDENTITY); } break; } - this.state = 5361; + this.state = 3928; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 491, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: { - this.state = 5360; + this.state = 3927; this.opt_drop_behavior(); } break; @@ -24555,29 +21433,29 @@ export class PostgreSqlParser extends SQLParserBase { } public truncate_table(): Truncate_tableContext { let localContext = new Truncate_tableContext(this.context, this.state); - this.enterRule(localContext, 566, PostgreSqlParser.RULE_truncate_table); + this.enterRule(localContext, 322, PostgreSqlParser.RULE_truncate_table); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5364; + this.state = 3931; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 5363; + this.state = 3930; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 5366; + this.state = 3933; this.table_name(); - this.state = 5368; + this.state = 3935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 5367; + this.state = 3934; this.match(PostgreSqlParser.STAR); } } @@ -24600,448 +21478,250 @@ export class PostgreSqlParser extends SQLParserBase { } public commentstmt(): CommentstmtContext { let localContext = new CommentstmtContext(this.context, this.state); - this.enterRule(localContext, 568, PostgreSqlParser.RULE_commentstmt); + this.enterRule(localContext, 324, PostgreSqlParser.RULE_commentstmt); + let _la: number; try { - this.state = 5535; + this.enterOuterAlt(localContext, 1); + { + this.state = 3937; + this.match(PostgreSqlParser.KW_COMMENT); + this.state = 3938; + this.match(PostgreSqlParser.KW_ON); + this.state = 3997; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 495, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 5370; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5371; - this.match(PostgreSqlParser.KW_ON); - this.state = 5372; + this.state = 3939; this.object_type_any_name(); - this.state = 5373; - this.match(PostgreSqlParser.KW_IS); - this.state = 5374; - this.comment_text(); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 5376; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5377; - this.match(PostgreSqlParser.KW_ON); - this.state = 5378; - this.match(PostgreSqlParser.KW_COLUMN); - this.state = 5379; - this.relation_column_name(); - this.state = 5380; - this.match(PostgreSqlParser.KW_IS); - this.state = 5381; - this.comment_text(); + this.state = 3940; + this.object_type_name(); } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 5383; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5384; - this.match(PostgreSqlParser.KW_ON); - this.state = 5385; - this.object_type_name(); - this.state = 5386; - this.match(PostgreSqlParser.KW_IS); - this.state = 5387; - this.comment_text(); + this.state = 3941; + this.match(PostgreSqlParser.KW_COLUMN); + { + this.state = 3942; + this.colid(); + this.state = 3944; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { + case 1: + { + this.state = 3943; + this.attrs(); + } + break; + } + } + this.state = 3946; + this.match(PostgreSqlParser.DOT); + this.state = 3947; + this.column_name(); } break; case 4: - this.enterOuterAlt(localContext, 4); { - this.state = 5389; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5390; - this.match(PostgreSqlParser.KW_ON); - this.state = 5391; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 5392; - this.typename(); - this.state = 5393; - this.match(PostgreSqlParser.KW_IS); - this.state = 5394; - this.comment_text(); + this.state = 3949; + _la = this.tokenStream.LA(1); + if(!(_la === 189 || _la === 360)) { + this.errorHandler.recoverInline(this); } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 5396; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5397; - this.match(PostgreSqlParser.KW_ON); - this.state = 5398; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5399; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3950; this.typename(); - this.state = 5400; - this.match(PostgreSqlParser.KW_IS); - this.state = 5401; - this.comment_text(); } break; - case 6: - this.enterOuterAlt(localContext, 6); + case 5: { - this.state = 5403; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5404; - this.match(PostgreSqlParser.KW_ON); - this.state = 5405; + this.state = 3951; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 5406; + this.state = 3952; this.aggregate_with_argtypes(); - this.state = 5407; - this.match(PostgreSqlParser.KW_IS); - this.state = 5408; - this.comment_text(); } break; - case 7: - this.enterOuterAlt(localContext, 7); + case 6: { - this.state = 5410; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5411; - this.match(PostgreSqlParser.KW_ON); - this.state = 5412; + this.state = 3953; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5413; + this.state = 3954; this.function_with_argtypes(); - this.state = 5414; - this.match(PostgreSqlParser.KW_IS); - this.state = 5415; - this.comment_text(); } break; - case 8: - this.enterOuterAlt(localContext, 8); + case 7: { - this.state = 5417; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5418; - this.match(PostgreSqlParser.KW_ON); - this.state = 5419; + this.state = 3955; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5420; + this.state = 3956; this.operator_with_argtypes(); - this.state = 5421; - this.match(PostgreSqlParser.KW_IS); - this.state = 5422; - this.comment_text(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 5424; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5425; - this.match(PostgreSqlParser.KW_ON); - this.state = 5426; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5427; - this.name(); - this.state = 5428; - this.match(PostgreSqlParser.KW_ON); - this.state = 5429; - this.table_name(); - this.state = 5430; - this.match(PostgreSqlParser.KW_IS); - this.state = 5431; - this.comment_text(); } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 8: { - this.state = 5433; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5434; - this.match(PostgreSqlParser.KW_ON); - this.state = 5435; + this.state = 3957; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5436; - this.name(); - this.state = 5437; + this.state = 3958; + this.colid(); + this.state = 3959; this.match(PostgreSqlParser.KW_ON); - this.state = 5439; + this.state = 3965; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 494, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { case 1: { - this.state = 5438; - this.match(PostgreSqlParser.KW_DOMAIN); + this.state = 3960; + this.table_name(); + } + break; + case 2: + { + { + this.state = 3962; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { + case 1: + { + this.state = 3961; + this.match(PostgreSqlParser.KW_DOMAIN); + } + break; + } + this.state = 3964; + this.any_name(); + } } break; } - this.state = 5441; - this.any_name(); - this.state = 5442; - this.match(PostgreSqlParser.KW_IS); - this.state = 5443; - this.comment_text(); } break; - case 11: - this.enterOuterAlt(localContext, 11); + case 9: { - this.state = 5445; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5446; - this.match(PostgreSqlParser.KW_ON); - this.state = 5447; - this.match(PostgreSqlParser.KW_POLICY); - this.state = 5448; - this.name(); - this.state = 5449; + this.state = 3967; + _la = this.tokenStream.LA(1); + if(!(_la === 321 || _la === 357 || _la === 445)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3968; + this.colid(); + this.state = 3969; this.match(PostgreSqlParser.KW_ON); - this.state = 5450; + this.state = 3970; this.any_name(); - this.state = 5451; - this.match(PostgreSqlParser.KW_IS); - this.state = 5452; - this.comment_text(); } break; - case 12: - this.enterOuterAlt(localContext, 12); + case 10: { - this.state = 5454; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5455; - this.match(PostgreSqlParser.KW_ON); - this.state = 5456; - this.match(PostgreSqlParser.KW_RULE); - this.state = 5457; - this.name(); - this.state = 5458; - this.match(PostgreSqlParser.KW_ON); - this.state = 5459; - this.any_name(); - this.state = 5460; - this.match(PostgreSqlParser.KW_IS); - this.state = 5461; - this.comment_text(); + this.state = 3972; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 3973; + this.procedure_with_argtypes(); } break; - case 13: - this.enterOuterAlt(localContext, 13); + case 11: { - this.state = 5463; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5464; - this.match(PostgreSqlParser.KW_ON); - this.state = 5465; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 5466; - this.name(); - this.state = 5467; - this.match(PostgreSqlParser.KW_ON); - this.state = 5468; - this.any_name(); - this.state = 5469; - this.match(PostgreSqlParser.KW_IS); - this.state = 5470; - this.comment_text(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 5472; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5473; - this.match(PostgreSqlParser.KW_ON); - this.state = 5474; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5475; - this.procedure_with_argtypes(); - this.state = 5476; - this.match(PostgreSqlParser.KW_IS); - this.state = 5477; - this.comment_text(); - } - break; - case 15: - this.enterOuterAlt(localContext, 15); - { - this.state = 5479; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5480; - this.match(PostgreSqlParser.KW_ON); - this.state = 5481; + this.state = 3974; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5482; + this.state = 3975; this.routine_with_argtypes(); - this.state = 5483; - this.match(PostgreSqlParser.KW_IS); - this.state = 5484; - this.comment_text(); } break; - case 16: - this.enterOuterAlt(localContext, 16); + case 12: { - this.state = 5486; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5487; - this.match(PostgreSqlParser.KW_ON); - this.state = 5488; + this.state = 3976; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 5489; + this.state = 3977; this.match(PostgreSqlParser.KW_FOR); - this.state = 5490; + this.state = 3978; this.typename(); - this.state = 5491; + this.state = 3979; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5492; - this.name(); - this.state = 5493; - this.match(PostgreSqlParser.KW_IS); - this.state = 5494; - this.comment_text(); + this.state = 3980; + this.colid(); } break; - case 17: - this.enterOuterAlt(localContext, 17); + case 13: { - this.state = 5496; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5497; - this.match(PostgreSqlParser.KW_ON); - this.state = 5498; + this.state = 3982; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5499; - this.match(PostgreSqlParser.KW_CLASS); - this.state = 5500; - this.any_name(); - this.state = 5501; - this.match(PostgreSqlParser.KW_USING); - this.state = 5502; - this.name(); - this.state = 5503; - this.match(PostgreSqlParser.KW_IS); - this.state = 5504; - this.comment_text(); + this.state = 3983; + _la = this.tokenStream.LA(1); + if(!(_la === 156 || _la === 206)) { + this.errorHandler.recoverInline(this); } - break; - case 18: - this.enterOuterAlt(localContext, 18); - { - this.state = 5506; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5507; - this.match(PostgreSqlParser.KW_ON); - this.state = 5508; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5509; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 5510; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3984; this.any_name(); - this.state = 5511; - this.match(PostgreSqlParser.KW_USING); - this.state = 5512; - this.name(); - this.state = 5513; - this.match(PostgreSqlParser.KW_IS); - this.state = 5514; - this.comment_text(); + this.state = 3985; + this.table_access_method_clause(); } break; - case 19: - this.enterOuterAlt(localContext, 19); + case 14: { - this.state = 5516; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5517; - this.match(PostgreSqlParser.KW_ON); - this.state = 5518; + this.state = 3987; this.match(PostgreSqlParser.KW_LARGE); - this.state = 5519; + this.state = 3988; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5520; + this.state = 3989; this.numericonly(); - this.state = 5521; - this.match(PostgreSqlParser.KW_IS); - this.state = 5522; - this.comment_text(); } break; - case 20: - this.enterOuterAlt(localContext, 20); + case 15: { - this.state = 5524; - this.match(PostgreSqlParser.KW_COMMENT); - this.state = 5525; - this.match(PostgreSqlParser.KW_ON); - this.state = 5526; + this.state = 3990; this.match(PostgreSqlParser.KW_CAST); - this.state = 5527; + this.state = 3991; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5528; + this.state = 3992; this.typename(); - this.state = 5529; + this.state = 3993; this.match(PostgreSqlParser.KW_AS); - this.state = 5530; + this.state = 3994; this.typename(); - this.state = 5531; + this.state = 3995; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 5532; - this.match(PostgreSqlParser.KW_IS); - this.state = 5533; - this.comment_text(); } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comment_text(): Comment_textContext { - let localContext = new Comment_textContext(this.context, this.state); - this.enterRule(localContext, 570, PostgreSqlParser.RULE_comment_text); - try { - this.state = 5539; + this.state = 3999; + this.match(PostgreSqlParser.KW_IS); + this.state = 4002; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: case PostgreSqlParser.UnicodeEscapeStringConstant: case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 5537; + this.state = 4000; this.sconst(); } break; case PostgreSqlParser.KW_NULL: - this.enterOuterAlt(localContext, 2); { - this.state = 5538; + this.state = 4001; this.match(PostgreSqlParser.KW_NULL); } break; default: throw new antlr.NoViableAltException(this); } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -25059,369 +21739,134 @@ export class PostgreSqlParser extends SQLParserBase { } public seclabelstmt(): SeclabelstmtContext { let localContext = new SeclabelstmtContext(this.context, this.state); - this.enterRule(localContext, 572, PostgreSqlParser.RULE_seclabelstmt); + this.enterRule(localContext, 326, PostgreSqlParser.RULE_seclabelstmt); let _la: number; try { - this.state = 5650; + this.enterOuterAlt(localContext, 1); + { + this.state = 4004; + this.match(PostgreSqlParser.KW_SECURITY); + this.state = 4005; + this.match(PostgreSqlParser.KW_LABEL); + this.state = 4008; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 62) { { - this.state = 5541; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5542; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5544; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5543; - this.opt_provider(); - } + this.state = 4006; + this.match(PostgreSqlParser.KW_FOR); + this.state = 4007; + this.nonreservedword_or_sconst(); } + } - this.state = 5546; - this.match(PostgreSqlParser.KW_ON); - this.state = 5547; - this.match(PostgreSqlParser.KW_COLUMN); - this.state = 5548; - this.column_name(); - this.state = 5549; - this.match(PostgreSqlParser.KW_IS); - this.state = 5550; - this.security_label(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); + this.state = 4010; + this.match(PostgreSqlParser.KW_ON); + this.state = 4028; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 474, this.context) ) { + case 1: { - this.state = 5552; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5553; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5555; - this.errorHandler.sync(this); + this.state = 4011; _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5554; - this.opt_provider(); - } - } - - this.state = 5557; - this.match(PostgreSqlParser.KW_ON); - this.state = 5558; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 5559; - this.typename(); - this.state = 5560; - this.match(PostgreSqlParser.KW_IS); - this.state = 5561; - this.security_label(); + if(!(_la === 189 || _la === 360)) { + this.errorHandler.recoverInline(this); } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 5563; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5564; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5566; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5565; - this.opt_provider(); - } + else { + this.errorHandler.reportMatch(this); + this.consume(); } - - this.state = 5568; - this.match(PostgreSqlParser.KW_ON); - this.state = 5569; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5570; + this.state = 4012; this.typename(); - this.state = 5571; - this.match(PostgreSqlParser.KW_IS); - this.state = 5572; - this.security_label(); } break; - case 4: - this.enterOuterAlt(localContext, 4); + case 2: { - this.state = 5574; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5575; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5577; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5576; - this.opt_provider(); - } - } - - this.state = 5579; - this.match(PostgreSqlParser.KW_ON); - this.state = 5580; + this.state = 4013; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 5581; + this.state = 4014; this.aggregate_with_argtypes(); - this.state = 5582; - this.match(PostgreSqlParser.KW_IS); - this.state = 5583; - this.security_label(); } break; - case 5: - this.enterOuterAlt(localContext, 5); + case 3: { - this.state = 5585; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5586; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5588; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5587; - this.opt_provider(); - } + this.state = 4015; + this.match(PostgreSqlParser.KW_COLUMN); + this.state = 4016; + this.column_name(); } - - this.state = 5590; - this.match(PostgreSqlParser.KW_ON); - this.state = 5591; + break; + case 4: + { + this.state = 4017; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5592; + this.state = 4018; this.function_with_argtypes(); - this.state = 5593; - this.match(PostgreSqlParser.KW_IS); - this.state = 5594; - this.security_label(); } break; - case 6: - this.enterOuterAlt(localContext, 6); + case 5: { - this.state = 5596; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5597; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5599; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5598; - this.opt_provider(); - } - } - - this.state = 5601; - this.match(PostgreSqlParser.KW_ON); - this.state = 5602; + this.state = 4019; this.match(PostgreSqlParser.KW_LARGE); - this.state = 5603; + this.state = 4020; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5604; + this.state = 4021; this.numericonly(); - this.state = 5605; - this.match(PostgreSqlParser.KW_IS); - this.state = 5606; - this.security_label(); } break; - case 7: - this.enterOuterAlt(localContext, 7); + case 6: { - this.state = 5608; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5609; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5611; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5610; - this.opt_provider(); - } - } - - this.state = 5613; - this.match(PostgreSqlParser.KW_ON); - this.state = 5614; + this.state = 4022; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5615; + this.state = 4023; this.procedure_with_argtypes(); - this.state = 5616; - this.match(PostgreSqlParser.KW_IS); - this.state = 5617; - this.security_label(); } break; - case 8: - this.enterOuterAlt(localContext, 8); + case 7: { - this.state = 5619; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5620; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5622; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5621; - this.opt_provider(); - } - } - - this.state = 5624; - this.match(PostgreSqlParser.KW_ON); - this.state = 5625; + this.state = 4024; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5626; + this.state = 4025; this.routine_with_argtypes(); - this.state = 5627; - this.match(PostgreSqlParser.KW_IS); - this.state = 5628; - this.security_label(); } break; - case 9: - this.enterOuterAlt(localContext, 9); + case 8: { - this.state = 5630; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5631; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5633; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5632; - this.opt_provider(); - } - } - - this.state = 5635; - this.match(PostgreSqlParser.KW_ON); - this.state = 5636; + this.state = 4026; this.object_type_any_name(); - this.state = 5637; - this.match(PostgreSqlParser.KW_IS); - this.state = 5638; - this.security_label(); } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 9: { - this.state = 5640; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 5641; - this.match(PostgreSqlParser.KW_LABEL); - this.state = 5643; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 5642; - this.opt_provider(); - } - } - - this.state = 5645; - this.match(PostgreSqlParser.KW_ON); - this.state = 5646; + this.state = 4027; this.object_type_name(); - this.state = 5647; - this.match(PostgreSqlParser.KW_IS); - this.state = 5648; - this.security_label(); } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_provider(): Opt_providerContext { - let localContext = new Opt_providerContext(this.context, this.state); - this.enterRule(localContext, 574, PostgreSqlParser.RULE_opt_provider); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5652; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5653; - this.nonreservedword_or_sconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public security_label(): Security_labelContext { - let localContext = new Security_labelContext(this.context, this.state); - this.enterRule(localContext, 576, PostgreSqlParser.RULE_security_label); - try { - this.state = 5657; + this.state = 4030; + this.match(PostgreSqlParser.KW_IS); + this.state = 4033; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: case PostgreSqlParser.UnicodeEscapeStringConstant: case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 5655; + this.state = 4031; this.sconst(); } break; case PostgreSqlParser.KW_NULL: - this.enterOuterAlt(localContext, 2); { - this.state = 5656; + this.state = 4032; this.match(PostgreSqlParser.KW_NULL); } break; default: throw new antlr.NoViableAltException(this); } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -25439,31 +21884,22 @@ export class PostgreSqlParser extends SQLParserBase { } public fetchstmt(): FetchstmtContext { let localContext = new FetchstmtContext(this.context, this.state); - this.enterRule(localContext, 578, PostgreSqlParser.RULE_fetchstmt); + this.enterRule(localContext, 328, PostgreSqlParser.RULE_fetchstmt); + let _la: number; try { - this.state = 5663; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FETCH: - this.enterOuterAlt(localContext, 1); - { - this.state = 5659; - this.match(PostgreSqlParser.KW_FETCH); - this.state = 5660; - this.fetch_args(); - } - break; - case PostgreSqlParser.KW_MOVE: - this.enterOuterAlt(localContext, 2); - { - this.state = 5661; - this.match(PostgreSqlParser.KW_MOVE); - this.state = 5662; - this.fetch_args(); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.enterOuterAlt(localContext, 1); + { + this.state = 4035; + _la = this.tokenStream.LA(1); + if(!(_la === 61 || _la === 265)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4036; + this.fetch_args(); } } catch (re) { @@ -25482,304 +21918,586 @@ export class PostgreSqlParser extends SQLParserBase { } public fetch_args(): Fetch_argsContext { let localContext = new Fetch_argsContext(this.context, this.state); - this.enterRule(localContext, 580, PostgreSqlParser.RULE_fetch_args); + this.enterRule(localContext, 330, PostgreSqlParser.RULE_fetch_args); let _la: number; try { - this.state = 5750; + this.state = 4081; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 487, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5665; - this.cursor_name(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 5666; - this.from_in(); - this.state = 5667; - this.cursor_name(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 5669; - this.match(PostgreSqlParser.KW_NEXT); - this.state = 5671; + this.state = 4039; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { + case 1: { - this.state = 5670; - this.opt_from_in(); + this.state = 4038; + _la = this.tokenStream.LA(1); + if(!(_la === 207 || _la === 249 || _la === 268 || _la === 293)) { + this.errorHandler.recoverInline(this); } - } - - this.state = 5673; - this.cursor_name(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 5674; - this.match(PostgreSqlParser.KW_PRIOR); - this.state = 5676; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { - { - this.state = 5675; - this.opt_from_in(); + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - - this.state = 5678; - this.cursor_name(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 5679; - this.match(PostgreSqlParser.KW_FIRST); - this.state = 5681; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { - { - this.state = 5680; - this.opt_from_in(); } + break; } - - this.state = 5683; - this.cursor_name(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 5684; - this.match(PostgreSqlParser.KW_LAST); - this.state = 5686; + this.state = 4042; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 5685; - this.opt_from_in(); + this.state = 4041; + this.from_in(); } } - this.state = 5688; - this.cursor_name(); + this.state = 4044; + this.colid(); } break; - case 7: - this.enterOuterAlt(localContext, 7); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 5689; - this.match(PostgreSqlParser.KW_ABSOLUTE); - this.state = 5690; - this.signediconst(); - this.state = 5692; + this.state = 4046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { + if (_la === 130 || _la === 307) { { - this.state = 5691; - this.opt_from_in(); + this.state = 4045; + _la = this.tokenStream.LA(1); + if(!(_la === 130 || _la === 307)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - - this.state = 5694; - this.cursor_name(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 5696; - this.match(PostgreSqlParser.KW_RELATIVE); - this.state = 5697; - this.signediconst(); - this.state = 5699; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { - { - this.state = 5698; - this.opt_from_in(); } } - this.state = 5701; - this.cursor_name(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 5703; + this.state = 4048; this.signediconst(); - this.state = 5705; + this.state = 4050; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 5704; - this.opt_from_in(); + this.state = 4049; + this.from_in(); } } - this.state = 5707; - this.cursor_name(); + this.state = 4052; + this.colid(); } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 5709; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5711; + this.state = 4054; + this.match(PostgreSqlParser.KW_FORWARD); + this.state = 4056; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { + if (_la === 12 || _la === 13 || _la === 571) { { - this.state = 5710; - this.opt_from_in(); + this.state = 4055; + this.signediconst(); } } - this.state = 5713; - this.cursor_name(); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 5714; - this.match(PostgreSqlParser.KW_FORWARD); - this.state = 5716; + this.state = 4059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 5715; - this.opt_from_in(); + this.state = 4058; + this.from_in(); } } - this.state = 5718; - this.cursor_name(); + this.state = 4061; + this.colid(); } break; - case 12: - this.enterOuterAlt(localContext, 12); + case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 5719; - this.match(PostgreSqlParser.KW_FORWARD); - this.state = 5720; - this.signediconst(); - this.state = 5722; + this.state = 4063; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { + if (_la === 210) { { - this.state = 5721; - this.opt_from_in(); + this.state = 4062; + this.match(PostgreSqlParser.KW_FORWARD); } } - this.state = 5724; - this.cursor_name(); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 5726; - this.match(PostgreSqlParser.KW_FORWARD); - this.state = 5727; + this.state = 4065; this.match(PostgreSqlParser.KW_ALL); - this.state = 5729; + this.state = 4067; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 5728; - this.opt_from_in(); + this.state = 4066; + this.from_in(); } } - this.state = 5731; - this.cursor_name(); + this.state = 4069; + this.colid(); } break; - case 14: - this.enterOuterAlt(localContext, 14); + case 5: + this.enterOuterAlt(localContext, 5); { - this.state = 5732; + this.state = 4070; this.match(PostgreSqlParser.KW_BACKWARD); - this.state = 5734; + this.state = 4075; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ALL: + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_FROM: + case PostgreSqlParser.KW_IN: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 5733; - this.opt_from_in(); + this.state = 4072; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 30) { + { + this.state = 4071; + this.match(PostgreSqlParser.KW_ALL); + } } - } - this.state = 5736; - this.cursor_name(); - } - break; - case 15: - this.enterOuterAlt(localContext, 15); - { - this.state = 5737; - this.match(PostgreSqlParser.KW_BACKWARD); - this.state = 5738; - this.signediconst(); - this.state = 5740; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64 || _la === 68) { + } + break; + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.Integral: { - this.state = 5739; - this.opt_from_in(); + this.state = 4074; + this.signediconst(); } + break; + default: + throw new antlr.NoViableAltException(this); } - - this.state = 5742; - this.cursor_name(); - } - break; - case 16: - this.enterOuterAlt(localContext, 16); - { - this.state = 5744; - this.match(PostgreSqlParser.KW_BACKWARD); - this.state = 5745; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5747; + this.state = 4078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 5746; - this.opt_from_in(); + this.state = 4077; + this.from_in(); } } - this.state = 5749; - this.cursor_name(); + this.state = 4080; + this.colid(); } break; } @@ -25800,12 +22518,12 @@ export class PostgreSqlParser extends SQLParserBase { } public from_in(): From_inContext { let localContext = new From_inContext(this.context, this.state); - this.enterRule(localContext, 582, PostgreSqlParser.RULE_from_in); + this.enterRule(localContext, 332, PostgreSqlParser.RULE_from_in); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5752; + this.state = 4083; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 68)) { this.errorHandler.recoverInline(this); @@ -25830,14 +22548,38 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_from_in(): Opt_from_inContext { - let localContext = new Opt_from_inContext(this.context, this.state); - this.enterRule(localContext, 584, PostgreSqlParser.RULE_opt_from_in); + public grantstmt(): GrantstmtContext { + let localContext = new GrantstmtContext(this.context, this.state); + this.enterRule(localContext, 334, PostgreSqlParser.RULE_grantstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 5754; - this.from_in(); + this.state = 4085; + this.match(PostgreSqlParser.KW_GRANT); + this.state = 4086; + this.privileges(); + this.state = 4087; + this.match(PostgreSqlParser.KW_ON); + this.state = 4088; + this.privilege_target(); + this.state = 4089; + this.match(PostgreSqlParser.KW_TO); + this.state = 4090; + this.grantee_list(); + this.state = 4094; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) { + case 1: + { + this.state = 4091; + this.match(PostgreSqlParser.KW_WITH); + this.state = 4092; + this.match(PostgreSqlParser.KW_GRANT); + this.state = 4093; + this.match(PostgreSqlParser.KW_OPTION); + } + break; + } } } catch (re) { @@ -25854,31 +22596,46 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public grantstmt(): GrantstmtContext { - let localContext = new GrantstmtContext(this.context, this.state); - this.enterRule(localContext, 586, PostgreSqlParser.RULE_grantstmt); + public revokestmt(): RevokestmtContext { + let localContext = new RevokestmtContext(this.context, this.state); + this.enterRule(localContext, 336, PostgreSqlParser.RULE_revokestmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5756; - this.match(PostgreSqlParser.KW_GRANT); - this.state = 5757; + this.state = 4096; + this.match(PostgreSqlParser.KW_REVOKE); + this.state = 4100; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 65) { + { + this.state = 4097; + this.match(PostgreSqlParser.KW_GRANT); + this.state = 4098; + this.match(PostgreSqlParser.KW_OPTION); + this.state = 4099; + this.match(PostgreSqlParser.KW_FOR); + } + } + + this.state = 4102; this.privileges(); - this.state = 5758; + this.state = 4103; this.match(PostgreSqlParser.KW_ON); - this.state = 5759; + this.state = 4104; this.privilege_target(); - this.state = 5760; - this.match(PostgreSqlParser.KW_TO); - this.state = 5761; + this.state = 4105; + this.match(PostgreSqlParser.KW_FROM); + this.state = 4106; this.grantee_list(); - this.state = 5763; + this.state = 4108; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 525, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { case 1: { - this.state = 5762; - this.opt_grant_grant_option(); + this.state = 4107; + this.opt_drop_behavior(); } break; } @@ -25898,195 +22655,87 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public revokestmt(): RevokestmtContext { - let localContext = new RevokestmtContext(this.context, this.state); - this.enterRule(localContext, 588, PostgreSqlParser.RULE_revokestmt); + public privileges(): PrivilegesContext { + let localContext = new PrivilegesContext(this.context, this.state); + this.enterRule(localContext, 338, PostgreSqlParser.RULE_privileges); + let _la: number; try { - this.state = 5786; + this.state = 4133; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 528, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 495, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5765; - this.match(PostgreSqlParser.KW_REVOKE); - this.state = 5766; - this.privileges(); - this.state = 5767; - this.match(PostgreSqlParser.KW_ON); - this.state = 5768; - this.privilege_target(); - this.state = 5769; - this.match(PostgreSqlParser.KW_FROM); - this.state = 5770; - this.grantee_list(); - this.state = 5772; + this.state = 4110; + this.privilege(); + this.state = 4115; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 526, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 5771; - this.opt_drop_behavior(); + { + this.state = 4111; + this.match(PostgreSqlParser.COMMA); + this.state = 4112; + this.privilege(); } - break; + } + this.state = 4117; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5774; - this.match(PostgreSqlParser.KW_REVOKE); - this.state = 5775; - this.match(PostgreSqlParser.KW_GRANT); - this.state = 5776; - this.match(PostgreSqlParser.KW_OPTION); - this.state = 5777; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5778; - this.privileges(); - this.state = 5779; - this.match(PostgreSqlParser.KW_ON); - this.state = 5780; - this.privilege_target(); - this.state = 5781; - this.match(PostgreSqlParser.KW_FROM); - this.state = 5782; - this.grantee_list(); - this.state = 5784; + this.state = 4118; + this.match(PostgreSqlParser.KW_ALL); + this.state = 4120; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 527, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 294) { { - this.state = 5783; - this.opt_drop_behavior(); + this.state = 4119; + this.match(PostgreSqlParser.KW_PRIVILEGES); } - break; } + + this.state = 4123; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 4122; + this.opt_column_list(); + } } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public privileges(): PrivilegesContext { - let localContext = new PrivilegesContext(this.context, this.state); - this.enterRule(localContext, 590, PostgreSqlParser.RULE_privileges); - try { - this.state = 5804; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 529, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 5788; - this.privilege_list(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 5789; - this.match(PostgreSqlParser.KW_ALL); + } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5790; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5791; - this.match(PostgreSqlParser.KW_PRIVILEGES); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 5792; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5793; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5794; - this.column_list(); - this.state = 5795; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 5797; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5798; - this.match(PostgreSqlParser.KW_PRIVILEGES); - this.state = 5799; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5800; - this.column_list(); - this.state = 5801; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 5803; - this.beforeprivilegeselectlist(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public beforeprivilegeselectlist(): BeforeprivilegeselectlistContext { - let localContext = new BeforeprivilegeselectlistContext(this.context, this.state); - this.enterRule(localContext, 592, PostgreSqlParser.RULE_beforeprivilegeselectlist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5806; - this.beforeprivilegeselect(); - this.state = 5811; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 5807; - this.match(PostgreSqlParser.COMMA); - this.state = 5808; + this.state = 4125; this.beforeprivilegeselect(); - } - } - this.state = 5813; + this.state = 4130; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } + while (_la === 6) { + { + { + this.state = 4126; + this.match(PostgreSqlParser.COMMA); + this.state = 4127; + this.beforeprivilegeselect(); + } + } + this.state = 4132; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + break; } } catch (re) { @@ -26105,12 +22754,12 @@ export class PostgreSqlParser extends SQLParserBase { } public beforeprivilegeselect(): BeforeprivilegeselectContext { let localContext = new BeforeprivilegeselectContext(this.context, this.state); - this.enterRule(localContext, 594, PostgreSqlParser.RULE_beforeprivilegeselect); + this.enterRule(localContext, 340, PostgreSqlParser.RULE_beforeprivilegeselect); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5814; + this.state = 4135; _la = this.tokenStream.LA(1); if(!(_la === 46 || _la === 88 || _la === 182 || _la === 202 || _la === 241 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 131173) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -26135,104 +22784,32 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public privilege_list(): Privilege_listContext { - let localContext = new Privilege_listContext(this.context, this.state); - this.enterRule(localContext, 596, PostgreSqlParser.RULE_privilege_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5816; - this.privilege(); - this.state = 5821; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 5817; - this.match(PostgreSqlParser.COMMA); - this.state = 5818; - this.privilege(); - } - } - this.state = 5823; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public privilege(): PrivilegeContext { let localContext = new PrivilegeContext(this.context, this.state); - this.enterRule(localContext, 598, PostgreSqlParser.RULE_privilege); + this.enterRule(localContext, 342, PostgreSqlParser.RULE_privilege); let _la: number; try { - this.state = 5840; + this.enterOuterAlt(localContext, 1); + { + this.state = 4141; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SELECT: - this.enterOuterAlt(localContext, 1); { - this.state = 5824; + this.state = 4137; this.match(PostgreSqlParser.KW_SELECT); - this.state = 5826; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 5825; - this.opt_column_list(); - } - } - } break; case PostgreSqlParser.KW_REFERENCES: - this.enterOuterAlt(localContext, 2); { - this.state = 5828; + this.state = 4138; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 5830; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 5829; - this.opt_column_list(); - } - } - } break; case PostgreSqlParser.KW_CREATE: - this.enterOuterAlt(localContext, 3); { - this.state = 5832; + this.state = 4139; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5834; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 5833; - this.opt_column_list(); - } - } - } break; case PostgreSqlParser.KW_AND: @@ -26634,25 +23211,25 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 4); { - this.state = 5836; + this.state = 4140; this.colid(); - this.state = 5838; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 5837; - this.opt_column_list(); - } - } - } break; default: throw new antlr.NoViableAltException(this); } + this.state = 4144; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 4143; + this.opt_column_list(); + } + } + + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -26670,227 +23247,267 @@ export class PostgreSqlParser extends SQLParserBase { } public privilege_target(): Privilege_targetContext { let localContext = new Privilege_targetContext(this.context, this.state); - this.enterRule(localContext, 600, PostgreSqlParser.RULE_privilege_target); + this.enterRule(localContext, 344, PostgreSqlParser.RULE_privilege_target); + let _la: number; try { - this.state = 5900; + this.state = 4191; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 537, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 502, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5842; - this.qualified_name_list(); + this.state = 4146; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 4147; + this.table_name_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5843; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 5844; - this.table_name_list(); + this.state = 4149; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 498, this.context) ) { + case 1: + { + this.state = 4148; + this.match(PostgreSqlParser.KW_SEQUENCE); + } + break; + } + this.state = 4151; + this.qualified_name_list(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5845; - this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 5846; - this.qualified_name_list(); + this.state = 4159; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FOREIGN: + { + this.state = 4152; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 4156; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_DATA: + { + this.state = 4153; + this.match(PostgreSqlParser.KW_DATA); + this.state = 4154; + this.match(PostgreSqlParser.KW_WRAPPER); + } + break; + case PostgreSqlParser.KW_SERVER: + { + this.state = 4155; + this.match(PostgreSqlParser.KW_SERVER); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case PostgreSqlParser.KW_LANGUAGE: + { + this.state = 4158; + this.match(PostgreSqlParser.KW_LANGUAGE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4161; + this.name_list(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5847; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 5848; - this.match(PostgreSqlParser.KW_DATA); - this.state = 5849; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 5850; - this.name_list(); + this.state = 4162; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 4163; + this.function_with_argtypes_list(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5851; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 5852; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 5853; - this.name_list(); + this.state = 4164; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 4165; + this.procedure_with_argtypes_list(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5854; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5855; - this.function_with_argtypes_list(); + this.state = 4166; + this.match(PostgreSqlParser.KW_ROUTINE); + this.state = 4167; + this.routine_with_argtypes_list(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5856; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5857; - this.procedure_with_argtypes_list(); + this.state = 4168; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 4169; + this.database_nameList(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5858; - this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5859; - this.routine_with_argtypes_list(); + this.state = 4170; + _la = this.tokenStream.LA(1); + if(!(_la === 189 || _la === 360)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4171; + this.any_name_list(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 5860; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5861; - this.database_nameList(); + this.state = 4172; + this.match(PostgreSqlParser.KW_LARGE); + this.state = 4173; + this.match(PostgreSqlParser.KW_OBJECT); + this.state = 4174; + this.numericonly(); + this.state = 4179; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4175; + this.match(PostgreSqlParser.COMMA); + this.state = 4176; + this.numericonly(); + } + } + this.state = 4181; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 5862; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5863; - this.any_name_list(); + this.state = 4182; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 4183; + this.schema_name_list(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 5864; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5865; - this.name_list(); + this.state = 4184; + this.match(PostgreSqlParser.KW_TABLESPACE); + this.state = 4185; + this.tablespace_name_list(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 5866; - this.match(PostgreSqlParser.KW_LARGE); - this.state = 5867; - this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5868; - this.numericonly_list(); + this.state = 4186; + this.match(PostgreSqlParser.KW_ALL); + this.state = 4187; + _la = this.tokenStream.LA(1); + if(!(_la === 212 || _la === 329 || _la === 350 || _la === 455 || _la === 457)) { + this.errorHandler.recoverInline(this); } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 5869; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4188; + this.match(PostgreSqlParser.KW_IN); + this.state = 4189; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5870; + this.state = 4190; this.schema_name_list(); } break; - case 14: - this.enterOuterAlt(localContext, 14); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grantee_list(): Grantee_listContext { + let localContext = new Grantee_listContext(this.context, this.state); + this.enterRule(localContext, 346, PostgreSqlParser.RULE_grantee_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + { + this.state = 4194; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 66) { { - this.state = 5871; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 5872; - this.tablespace_name_list(); + this.state = 4193; + this.match(PostgreSqlParser.KW_GROUP); } - break; - case 15: - this.enterOuterAlt(localContext, 15); + } + + this.state = 4196; + this.rolespec(); + } + this.state = 4205; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 5873; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 5874; - this.any_name_list(); - } - break; - case 16: - this.enterOuterAlt(localContext, 16); { - this.state = 5875; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5876; - this.match(PostgreSqlParser.KW_TABLES); - this.state = 5877; - this.match(PostgreSqlParser.KW_IN); - this.state = 5878; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5879; - this.schema_name_list(); - } - break; - case 17: - this.enterOuterAlt(localContext, 17); + this.state = 4198; + this.match(PostgreSqlParser.COMMA); { - this.state = 5880; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5881; - this.match(PostgreSqlParser.KW_SEQUENCES); - this.state = 5882; - this.match(PostgreSqlParser.KW_IN); - this.state = 5883; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5884; - this.schema_name_list(); + this.state = 4200; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 66) { + { + this.state = 4199; + this.match(PostgreSqlParser.KW_GROUP); + } } - break; - case 18: - this.enterOuterAlt(localContext, 18); - { - this.state = 5885; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5886; - this.match(PostgreSqlParser.KW_FUNCTIONS); - this.state = 5887; - this.match(PostgreSqlParser.KW_IN); - this.state = 5888; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5889; - this.schema_name_list(); + + this.state = 4202; + this.rolespec(); } - break; - case 19: - this.enterOuterAlt(localContext, 19); - { - this.state = 5890; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5891; - this.match(PostgreSqlParser.KW_PROCEDURES); - this.state = 5892; - this.match(PostgreSqlParser.KW_IN); - this.state = 5893; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5894; - this.schema_name_list(); } - break; - case 20: - this.enterOuterAlt(localContext, 20); - { - this.state = 5895; - this.match(PostgreSqlParser.KW_ALL); - this.state = 5896; - this.match(PostgreSqlParser.KW_ROUTINES); - this.state = 5897; - this.match(PostgreSqlParser.KW_IN); - this.state = 5898; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5899; - this.schema_name_list(); } - break; + this.state = 4207; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -26907,31 +23524,65 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public grantee_list(): Grantee_listContext { - let localContext = new Grantee_listContext(this.context, this.state); - this.enterRule(localContext, 602, PostgreSqlParser.RULE_grantee_list); + public grantrolestmt(): GrantrolestmtContext { + let localContext = new GrantrolestmtContext(this.context, this.state); + this.enterRule(localContext, 348, PostgreSqlParser.RULE_grantrolestmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5902; - this.grantee(); - this.state = 5907; + this.state = 4208; + this.match(PostgreSqlParser.KW_GRANT); + this.state = 4209; + this.privilege(); + this.state = 4214; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5903; + this.state = 4210; this.match(PostgreSqlParser.COMMA); - this.state = 5904; - this.grantee(); + this.state = 4211; + this.privilege(); } } - this.state = 5909; + this.state = 4216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 4217; + this.match(PostgreSqlParser.KW_TO); + this.state = 4218; + this.role_list(); + this.state = 4222; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { + case 1: + { + this.state = 4219; + this.match(PostgreSqlParser.KW_WITH); + this.state = 4220; + this.match(PostgreSqlParser.KW_ADMIN); + this.state = 4221; + this.match(PostgreSqlParser.KW_OPTION); + } + break; + } + this.state = 4227; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 508, this.context) ) { + case 1: + { + this.state = 4224; + this.match(PostgreSqlParser.KW_GRANTED); + this.state = 4225; + this.match(PostgreSqlParser.KW_BY); + this.state = 4226; + this.rolespec(); + } + break; + } } } catch (re) { @@ -26948,482 +23599,75 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public grantee(): GranteeContext { - let localContext = new GranteeContext(this.context, this.state); - this.enterRule(localContext, 604, PostgreSqlParser.RULE_grantee); + public revokerolestmt(): RevokerolestmtContext { + let localContext = new RevokerolestmtContext(this.context, this.state); + this.enterRule(localContext, 350, PostgreSqlParser.RULE_revokerolestmt); + let _la: number; try { - this.state = 5913; + this.enterOuterAlt(localContext, 1); + { + this.state = 4229; + this.match(PostgreSqlParser.KW_REVOKE); + this.state = 4233; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_USER: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_PUBLIC: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); + switch (this.interpreter.adaptivePredict(this.tokenStream, 509, this.context) ) { + case 1: { - this.state = 5910; - this.rolespec(); + this.state = 4230; + this.match(PostgreSqlParser.KW_ADMIN); + this.state = 4231; + this.match(PostgreSqlParser.KW_OPTION); + this.state = 4232; + this.match(PostgreSqlParser.KW_FOR); } break; - case PostgreSqlParser.KW_GROUP: - this.enterOuterAlt(localContext, 2); + } + this.state = 4235; + this.privilege(); + this.state = 4240; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 5911; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 5912; + { + this.state = 4236; + this.match(PostgreSqlParser.COMMA); + this.state = 4237; + this.privilege(); + } + } + this.state = 4242; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 4243; + this.match(PostgreSqlParser.KW_FROM); + this.state = 4244; + this.role_list(); + this.state = 4248; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 511, this.context) ) { + case 1: + { + this.state = 4245; + this.match(PostgreSqlParser.KW_GRANTED); + this.state = 4246; + this.match(PostgreSqlParser.KW_BY); + this.state = 4247; this.rolespec(); } break; - default: - throw new antlr.NoViableAltException(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.state = 4251; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context) ) { + case 1: + { + this.state = 4250; + this.opt_drop_behavior(); + } + break; } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_grant_grant_option(): Opt_grant_grant_optionContext { - let localContext = new Opt_grant_grant_optionContext(this.context, this.state); - this.enterRule(localContext, 606, PostgreSqlParser.RULE_opt_grant_grant_option); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5915; - this.match(PostgreSqlParser.KW_WITH); - this.state = 5916; - this.match(PostgreSqlParser.KW_GRANT); - this.state = 5917; - this.match(PostgreSqlParser.KW_OPTION); } } catch (re) { @@ -27440,40 +23684,64 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public grantrolestmt(): GrantrolestmtContext { - let localContext = new GrantrolestmtContext(this.context, this.state); - this.enterRule(localContext, 608, PostgreSqlParser.RULE_grantrolestmt); + public alterdefaultprivilegesstmt(): AlterdefaultprivilegesstmtContext { + let localContext = new AlterdefaultprivilegesstmtContext(this.context, this.state); + this.enterRule(localContext, 352, PostgreSqlParser.RULE_alterdefaultprivilegesstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5919; - this.match(PostgreSqlParser.KW_GRANT); - this.state = 5920; - this.privilege_list(); - this.state = 5921; - this.match(PostgreSqlParser.KW_TO); - this.state = 5922; - this.role_list(); - this.state = 5924; + this.state = 4253; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 4254; + this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 4255; + this.match(PostgreSqlParser.KW_PRIVILEGES); + this.state = 4264; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 540, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 62 || _la === 68) { { - this.state = 5923; - this.opt_grant_admin_option(); + this.state = 4262; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_IN: + { + this.state = 4256; + this.match(PostgreSqlParser.KW_IN); + this.state = 4257; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 4258; + this.schema_name_list(); + } + break; + case PostgreSqlParser.KW_FOR: + { + this.state = 4259; + this.match(PostgreSqlParser.KW_FOR); + this.state = 4260; + _la = this.tokenStream.LA(1); + if(!(_la === 99 || _la === 318)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4261; + this.role_list(); + } + break; + default: + throw new antlr.NoViableAltException(this); } - break; - } - this.state = 5927; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 541, this.context) ) { - case 1: - { - this.state = 5926; - this.opt_granted_by(); } - break; + this.state = 4266; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } + this.state = 4267; + this.defaclaction(); } } catch (re) { @@ -27490,376 +23758,88 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public revokerolestmt(): RevokerolestmtContext { - let localContext = new RevokerolestmtContext(this.context, this.state); - this.enterRule(localContext, 610, PostgreSqlParser.RULE_revokerolestmt); + public defaclaction(): DefaclactionContext { + let localContext = new DefaclactionContext(this.context, this.state); + this.enterRule(localContext, 354, PostgreSqlParser.RULE_defaclaction); + let _la: number; try { - this.state = 5952; + this.state = 4294; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 546, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_GRANT: this.enterOuterAlt(localContext, 1); { - this.state = 5929; - this.match(PostgreSqlParser.KW_REVOKE); - this.state = 5930; - this.privilege_list(); - this.state = 5931; - this.match(PostgreSqlParser.KW_FROM); - this.state = 5932; - this.role_list(); - this.state = 5934; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 542, this.context) ) { - case 1: - { - this.state = 5933; - this.opt_granted_by(); - } - break; - } - this.state = 5937; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 543, this.context) ) { - case 1: - { - this.state = 5936; - this.opt_drop_behavior(); - } - break; - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 5939; - this.match(PostgreSqlParser.KW_REVOKE); - this.state = 5940; - this.match(PostgreSqlParser.KW_ADMIN); - this.state = 5941; - this.match(PostgreSqlParser.KW_OPTION); - this.state = 5942; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5943; - this.privilege_list(); - this.state = 5944; - this.match(PostgreSqlParser.KW_FROM); - this.state = 5945; - this.role_list(); - this.state = 5947; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 544, this.context) ) { - case 1: - { - this.state = 5946; - this.opt_granted_by(); - } - break; - } - this.state = 5950; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { - case 1: - { - this.state = 5949; - this.opt_drop_behavior(); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_grant_admin_option(): Opt_grant_admin_optionContext { - let localContext = new Opt_grant_admin_optionContext(this.context, this.state); - this.enterRule(localContext, 612, PostgreSqlParser.RULE_opt_grant_admin_option); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5954; - this.match(PostgreSqlParser.KW_WITH); - this.state = 5955; - this.match(PostgreSqlParser.KW_ADMIN); - this.state = 5956; - this.match(PostgreSqlParser.KW_OPTION); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_granted_by(): Opt_granted_byContext { - let localContext = new Opt_granted_byContext(this.context, this.state); - this.enterRule(localContext, 614, PostgreSqlParser.RULE_opt_granted_by); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5958; - this.match(PostgreSqlParser.KW_GRANTED); - this.state = 5959; - this.match(PostgreSqlParser.KW_BY); - this.state = 5960; - this.rolespec(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterdefaultprivilegesstmt(): AlterdefaultprivilegesstmtContext { - let localContext = new AlterdefaultprivilegesstmtContext(this.context, this.state); - this.enterRule(localContext, 616, PostgreSqlParser.RULE_alterdefaultprivilegesstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5962; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 5963; - this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 5964; - this.match(PostgreSqlParser.KW_PRIVILEGES); - this.state = 5965; - this.defacloptionlist(); - this.state = 5966; - this.defaclaction(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public defacloptionlist(): DefacloptionlistContext { - let localContext = new DefacloptionlistContext(this.context, this.state); - this.enterRule(localContext, 618, PostgreSqlParser.RULE_defacloptionlist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5971; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 62 || _la === 68) { - { - { - this.state = 5968; - this.defacloption(); - } - } - this.state = 5973; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public defacloption(): DefacloptionContext { - let localContext = new DefacloptionContext(this.context, this.state); - this.enterRule(localContext, 620, PostgreSqlParser.RULE_defacloption); - try { - this.state = 5983; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 5974; - this.match(PostgreSqlParser.KW_IN); - this.state = 5975; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5976; - this.schema_name_list(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 5977; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5978; - this.match(PostgreSqlParser.KW_ROLE); - this.state = 5979; - this.role_list(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 5980; - this.match(PostgreSqlParser.KW_FOR); - this.state = 5981; - this.match(PostgreSqlParser.KW_USER); - this.state = 5982; - this.role_list(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public defaclaction(): DefaclactionContext { - let localContext = new DefaclactionContext(this.context, this.state); - this.enterRule(localContext, 622, PostgreSqlParser.RULE_defaclaction); - try { - this.state = 6015; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 552, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 5985; + this.state = 4269; this.match(PostgreSqlParser.KW_GRANT); - this.state = 5986; + this.state = 4270; this.privileges(); - this.state = 5987; + this.state = 4271; this.match(PostgreSqlParser.KW_ON); - this.state = 5988; + this.state = 4272; this.defacl_privilege_target(); - this.state = 5989; + this.state = 4273; this.match(PostgreSqlParser.KW_TO); - this.state = 5990; + this.state = 4274; this.grantee_list(); - this.state = 5992; + this.state = 4278; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 515, this.context) ) { case 1: { - this.state = 5991; - this.opt_grant_grant_option(); + this.state = 4275; + this.match(PostgreSqlParser.KW_WITH); + this.state = 4276; + this.match(PostgreSqlParser.KW_GRANT); + this.state = 4277; + this.match(PostgreSqlParser.KW_OPTION); } break; } } break; - case 2: + case PostgreSqlParser.KW_REVOKE: this.enterOuterAlt(localContext, 2); { - this.state = 5994; + this.state = 4280; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 5995; - this.privileges(); - this.state = 5996; - this.match(PostgreSqlParser.KW_ON); - this.state = 5997; - this.defacl_privilege_target(); - this.state = 5998; - this.match(PostgreSqlParser.KW_FROM); - this.state = 5999; - this.grantee_list(); - this.state = 6001; + this.state = 4284; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 550, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 65) { { - this.state = 6000; - this.opt_drop_behavior(); + this.state = 4281; + this.match(PostgreSqlParser.KW_GRANT); + this.state = 4282; + this.match(PostgreSqlParser.KW_OPTION); + this.state = 4283; + this.match(PostgreSqlParser.KW_FOR); } - break; } - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6003; - this.match(PostgreSqlParser.KW_REVOKE); - this.state = 6004; - this.match(PostgreSqlParser.KW_GRANT); - this.state = 6005; - this.match(PostgreSqlParser.KW_OPTION); - this.state = 6006; - this.match(PostgreSqlParser.KW_FOR); - this.state = 6007; + + this.state = 4286; this.privileges(); - this.state = 6008; + this.state = 4287; this.match(PostgreSqlParser.KW_ON); - this.state = 6009; + this.state = 4288; this.defacl_privilege_target(); - this.state = 6010; + this.state = 4289; this.match(PostgreSqlParser.KW_FROM); - this.state = 6011; + this.state = 4290; this.grantee_list(); - this.state = 6013; + this.state = 4292; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 517, this.context) ) { case 1: { - this.state = 6012; + this.state = 4291; this.opt_drop_behavior(); } break; } } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -27878,12 +23858,12 @@ export class PostgreSqlParser extends SQLParserBase { } public defacl_privilege_target(): Defacl_privilege_targetContext { let localContext = new Defacl_privilege_targetContext(this.context, this.state); - this.enterRule(localContext, 624, PostgreSqlParser.RULE_defacl_privilege_target); + this.enterRule(localContext, 356, PostgreSqlParser.RULE_defacl_privilege_target); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6017; + this.state = 4296; _la = this.tokenStream.LA(1); if(!(_la === 212 || _la === 329 || _la === 350 || _la === 361 || _la === 455 || _la === 456)) { this.errorHandler.recoverInline(this); @@ -27910,121 +23890,131 @@ export class PostgreSqlParser extends SQLParserBase { } public indexstmt(): IndexstmtContext { let localContext = new IndexstmtContext(this.context, this.state); - this.enterRule(localContext, 626, PostgreSqlParser.RULE_indexstmt); + this.enterRule(localContext, 358, PostgreSqlParser.RULE_indexstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6019; + this.state = 4298; this.match(PostgreSqlParser.KW_CREATE); - this.state = 6021; + this.state = 4300; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 98) { { - this.state = 6020; - this.opt_unique(); + this.state = 4299; + this.match(PostgreSqlParser.KW_UNIQUE); } } - this.state = 6023; + this.state = 4302; this.match(PostgreSqlParser.KW_INDEX); - this.state = 6025; + this.state = 4304; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 6024; - this.opt_concurrently(); + this.state = 4303; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 6028; + this.state = 4307; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 521, this.context) ) { case 1: { - this.state = 6027; + this.state = 4306; this.opt_if_not_exists(); } break; } - this.state = 6031; + this.state = 4310; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6030; - this.opt_index_name(); + this.state = 4309; + this.colid(); } } - this.state = 6033; + this.state = 4312; this.match(PostgreSqlParser.KW_ON); - this.state = 6034; + this.state = 4313; this.relation_expr(); - this.state = 6036; + this.state = 4315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6035; - this.access_method_clause(); + this.state = 4314; + this.table_access_method_clause(); } } - this.state = 6038; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6039; + this.state = 4317; this.index_params(); - this.state = 6040; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6042; + this.state = 4320; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 558, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { case 1: { - this.state = 6041; - this.opt_include(); + this.state = 4318; + this.match(PostgreSqlParser.KW_INCLUDE); + this.state = 4319; + this.index_params(); } break; } - this.state = 6045; + this.state = 4327; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 559, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 526, this.context) ) { case 1: { - this.state = 6044; - this.nulls_distinct(); + this.state = 4322; + this.match(PostgreSqlParser.KW_NULLS); + this.state = 4324; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 4323; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 4326; + this.match(PostgreSqlParser.KW_DISTINCT); } break; } - this.state = 6048; + this.state = 4330; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 560, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 527, this.context) ) { case 1: { - this.state = 6047; + this.state = 4329; this.opt_reloptions(); } break; } - this.state = 6051; + this.state = 4333; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 561, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 528, this.context) ) { case 1: { - this.state = 6050; + this.state = 4332; this.opttablespace(); } break; } - this.state = 6054; + this.state = 4336; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 6053; + this.state = 4335; this.where_clause(); } } @@ -28045,129 +24035,35 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_unique(): Opt_uniqueContext { - let localContext = new Opt_uniqueContext(this.context, this.state); - this.enterRule(localContext, 628, PostgreSqlParser.RULE_opt_unique); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6056; - this.match(PostgreSqlParser.KW_UNIQUE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_concurrently(): Opt_concurrentlyContext { - let localContext = new Opt_concurrentlyContext(this.context, this.state); - this.enterRule(localContext, 630, PostgreSqlParser.RULE_opt_concurrently); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6058; - this.match(PostgreSqlParser.KW_CONCURRENTLY); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_index_name(): Opt_index_nameContext { - let localContext = new Opt_index_nameContext(this.context, this.state); - this.enterRule(localContext, 632, PostgreSqlParser.RULE_opt_index_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6060; - this.name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public access_method_clause(): Access_method_clauseContext { - let localContext = new Access_method_clauseContext(this.context, this.state); - this.enterRule(localContext, 634, PostgreSqlParser.RULE_access_method_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6062; - this.match(PostgreSqlParser.KW_USING); - this.state = 6063; - this.name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public index_params(): Index_paramsContext { let localContext = new Index_paramsContext(this.context, this.state); - this.enterRule(localContext, 636, PostgreSqlParser.RULE_index_params); + this.enterRule(localContext, 360, PostgreSqlParser.RULE_index_params); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6065; + this.state = 4338; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 4339; this.index_elem(); - this.state = 6070; + this.state = 4344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6066; + this.state = 4340; this.match(PostgreSqlParser.COMMA); - this.state = 6067; + this.state = 4341; this.index_elem(); } } - this.state = 6072; + this.state = 4346; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 4347; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -28184,98 +24080,111 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public index_elem_options(): Index_elem_optionsContext { - let localContext = new Index_elem_optionsContext(this.context, this.state); - this.enterRule(localContext, 638, PostgreSqlParser.RULE_index_elem_options); + public index_elem(): Index_elemContext { + let localContext = new Index_elemContext(this.context, this.state); + this.enterRule(localContext, 362, PostgreSqlParser.RULE_index_elem); let _la: number; try { - this.state = 6096; + this.enterOuterAlt(localContext, 1); + { + this.state = 4355; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 571, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 531, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 6074; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 564, this.context) ) { - case 1: - { - this.state = 6073; - this.opt_collate(); - } - break; - } - this.state = 6077; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 565, this.context) ) { - case 1: - { - this.state = 6076; - this.opt_class(); - } - break; + this.state = 4349; + this.column_name(); } - this.state = 6080; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 37 || _la === 55) { - { - this.state = 6079; - this.opt_asc_desc(); - } + break; + case 2: + { + this.state = 4350; + this.func_expr_windowless(); } - - this.state = 6083; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 273) { - { - this.state = 6082; - this.opt_nulls_order(); - } + break; + case 3: + { + this.state = 4351; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 4352; + this.expression(); + this.state = 4353; + this.match(PostgreSqlParser.CLOSE_PAREN); } - + break; + } + this.state = 4358; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 532, this.context) ) { + case 1: + { + this.state = 4357; + this.opt_collate_clause(); } break; - case 2: - this.enterOuterAlt(localContext, 2); + } + this.state = 4366; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context) ) { + case 1: { - this.state = 6086; + this.state = 4361; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 568, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 533, this.context) ) { case 1: { - this.state = 6085; - this.opt_collate(); + this.state = 4360; + this.any_name(); } break; } - this.state = 6088; + } + break; + case 2: + { + this.state = 4363; this.any_name(); - this.state = 6089; + this.state = 4364; this.reloptions(); - this.state = 6091; - this.errorHandler.sync(this); + } + break; + } + this.state = 4369; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 37 || _la === 55) { + { + this.state = 4368; _la = this.tokenStream.LA(1); - if (_la === 37 || _la === 55) { - { - this.state = 6090; - this.opt_asc_desc(); - } + if(!(_la === 37 || _la === 55)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } + } - this.state = 6094; - this.errorHandler.sync(this); + this.state = 4373; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 273) { + { + this.state = 4371; + this.match(PostgreSqlParser.KW_NULLS); + this.state = 4372; _la = this.tokenStream.LA(1); - if (_la === 273) { - { - this.state = 6093; - this.opt_nulls_order(); - } + if(!(_la === 207 || _la === 249)) { + this.errorHandler.recoverInline(this); } - + else { + this.errorHandler.reportMatch(this); + this.consume(); } - break; + } + } + } } catch (re) { @@ -28292,305 +24201,88 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public index_elem(): Index_elemContext { - let localContext = new Index_elemContext(this.context, this.state); - this.enterRule(localContext, 640, PostgreSqlParser.RULE_index_elem); + public createfunctionstmt(): CreatefunctionstmtContext { + let localContext = new CreatefunctionstmtContext(this.context, this.state); + this.enterRule(localContext, 364, PostgreSqlParser.RULE_createfunctionstmt); + let _la: number; try { - this.state = 6109; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 4375; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 4377; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 572, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 82) { { - this.state = 6098; - this.column_name(); - this.state = 6099; - this.index_elem_options(); + this.state = 4376; + this.opt_or_replace(); } - break; - case 2: - this.enterOuterAlt(localContext, 2); + } + + this.state = 4383; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FUNCTION: { - this.state = 6101; - this.func_expr_windowless(); - this.state = 6102; - this.index_elem_options(); + this.state = 4379; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 4380; + this.function_name_create(); } break; - case 3: - this.enterOuterAlt(localContext, 3); + case PostgreSqlParser.KW_PROCEDURE: { - this.state = 6104; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6105; - this.a_expr(); - this.state = 6106; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6107; - this.index_elem_options(); + this.state = 4381; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 4382; + this.procedure_name_create(); } break; + default: + throw new antlr.NoViableAltException(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_include(): Opt_includeContext { - let localContext = new Opt_includeContext(this.context, this.state); - this.enterRule(localContext, 642, PostgreSqlParser.RULE_opt_include); - try { - this.enterOuterAlt(localContext, 1); { - this.state = 6111; - this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 6112; + this.state = 4385; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6113; - this.index_including_params(); - this.state = 6114; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public index_including_params(): Index_including_paramsContext { - let localContext = new Index_including_paramsContext(this.context, this.state); - this.enterRule(localContext, 644, PostgreSqlParser.RULE_index_including_params); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6116; - this.index_elem(); - this.state = 6121; + this.state = 4394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 6) { - { + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6117; - this.match(PostgreSqlParser.COMMA); - this.state = 6118; - this.index_elem(); - } - } - this.state = 6123; + this.state = 4386; + this.func_arg_with_default(); + this.state = 4391; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_collate(): Opt_collateContext { - let localContext = new Opt_collateContext(this.context, this.state); - this.enterRule(localContext, 646, PostgreSqlParser.RULE_opt_collate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6124; - this.match(PostgreSqlParser.KW_COLLATE); - this.state = 6125; - this.any_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_class(): Opt_classContext { - let localContext = new Opt_classContext(this.context, this.state); - this.enterRule(localContext, 648, PostgreSqlParser.RULE_opt_class); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6127; - this.any_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_asc_desc(): Opt_asc_descContext { - let localContext = new Opt_asc_descContext(this.context, this.state); - this.enterRule(localContext, 650, PostgreSqlParser.RULE_opt_asc_desc); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6129; - _la = this.tokenStream.LA(1); - if(!(_la === 37 || _la === 55)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_nulls_order(): Opt_nulls_orderContext { - let localContext = new Opt_nulls_orderContext(this.context, this.state); - this.enterRule(localContext, 652, PostgreSqlParser.RULE_opt_nulls_order); - try { - this.state = 6135; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 574, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 6131; - this.match(PostgreSqlParser.KW_NULLS); - this.state = 6132; - this.match(PostgreSqlParser.KW_FIRST); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 6133; - this.match(PostgreSqlParser.KW_NULLS); - this.state = 6134; - this.match(PostgreSqlParser.KW_LAST); + while (_la === 6) { + { + { + this.state = 4387; + this.match(PostgreSqlParser.COMMA); + this.state = 4388; + this.func_arg_with_default(); + } + } + this.state = 4393; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createfunctionstmt(): CreatefunctionstmtContext { - let localContext = new CreatefunctionstmtContext(this.context, this.state); - this.enterRule(localContext, 654, PostgreSqlParser.RULE_createfunctionstmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6137; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 6139; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 82) { - { - this.state = 6138; - this.opt_or_replace(); } } - this.state = 6145; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FUNCTION: - { - this.state = 6141; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6142; - this.function_name_create(); - } - break; - case PostgreSqlParser.KW_PROCEDURE: - { - this.state = 6143; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 6144; - this.procedure_name_create(); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.state = 4396; + this.match(PostgreSqlParser.CLOSE_PAREN); } - this.state = 6147; - this.func_args_with_defaults(); - this.state = 6157; + this.state = 4414; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 543, this.context) ) { case 1: { - this.state = 6148; + this.state = 4398; this.match(PostgreSqlParser.KW_RETURNS); - this.state = 6155; + this.state = 4412; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AND: @@ -29014,21 +24706,39 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6149; - this.func_return(); + this.state = 4399; + this.func_type(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 6150; + this.state = 4400; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6151; + { + this.state = 4401; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6152; - this.table_func_column_list(); - this.state = 6153; + this.state = 4402; + this.table_func_column(); + this.state = 4407; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4403; + this.match(PostgreSqlParser.COMMA); + this.state = 4404; + this.table_func_column(); + } + } + this.state = 4409; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 4410; this.match(PostgreSqlParser.CLOSE_PAREN); } + } break; default: throw new antlr.NoViableAltException(this); @@ -29036,17 +24746,39 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6159; - this.createfunc_opt_list(); - this.state = 6162; + this.state = 4417; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 4416; + this.createfunc_opt_item(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4419; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 544, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + this.state = 4426; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { case 1: { - this.state = 6160; + this.state = 4421; this.match(PostgreSqlParser.KW_WITH); - this.state = 6161; - this.attrilist(); + this.state = 4422; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 4423; + this.name_list(); + this.state = 4424; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } @@ -29066,60 +24798,15 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public attrilist(): AttrilistContext { - let localContext = new AttrilistContext(this.context, this.state); - this.enterRule(localContext, 656, PostgreSqlParser.RULE_attrilist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6164; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6165; - this.colid(); - this.state = 6170; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6166; - this.match(PostgreSqlParser.COMMA); - this.state = 6167; - this.colid(); - } - } - this.state = 6172; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 6173; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public opt_or_replace(): Opt_or_replaceContext { let localContext = new Opt_or_replaceContext(this.context, this.state); - this.enterRule(localContext, 658, PostgreSqlParser.RULE_opt_or_replace); + this.enterRule(localContext, 366, PostgreSqlParser.RULE_opt_or_replace); try { this.enterOuterAlt(localContext, 1); { - this.state = 6175; + this.state = 4428; this.match(PostgreSqlParser.KW_OR); - this.state = 6176; + this.state = 4429; this.match(PostgreSqlParser.KW_REPLACE); } } @@ -29139,24 +24826,24 @@ export class PostgreSqlParser extends SQLParserBase { } public func_args(): Func_argsContext { let localContext = new Func_argsContext(this.context, this.state); - this.enterRule(localContext, 660, PostgreSqlParser.RULE_func_args); + this.enterRule(localContext, 368, PostgreSqlParser.RULE_func_args); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6178; + this.state = 4431; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6180; + this.state = 4433; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6179; + this.state = 4432; this.func_args_list(); } } - this.state = 6182; + this.state = 4435; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -29176,26 +24863,26 @@ export class PostgreSqlParser extends SQLParserBase { } public func_args_list(): Func_args_listContext { let localContext = new Func_args_listContext(this.context, this.state); - this.enterRule(localContext, 662, PostgreSqlParser.RULE_func_args_list); + this.enterRule(localContext, 370, PostgreSqlParser.RULE_func_args_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6184; + this.state = 4437; this.func_arg(); - this.state = 6189; + this.state = 4442; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6185; + this.state = 4438; this.match(PostgreSqlParser.COMMA); - this.state = 6186; + this.state = 4439; this.func_arg(); } } - this.state = 6191; + this.state = 4444; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29217,26 +24904,26 @@ export class PostgreSqlParser extends SQLParserBase { } public routine_with_argtypes_list(): Routine_with_argtypes_listContext { let localContext = new Routine_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 664, PostgreSqlParser.RULE_routine_with_argtypes_list); + this.enterRule(localContext, 372, PostgreSqlParser.RULE_routine_with_argtypes_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6192; + this.state = 4445; this.routine_with_argtypes(); - this.state = 6197; + this.state = 4450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6193; + this.state = 4446; this.match(PostgreSqlParser.COMMA); - this.state = 6194; + this.state = 4447; this.routine_with_argtypes(); } } - this.state = 6199; + this.state = 4452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29258,43 +24945,32 @@ export class PostgreSqlParser extends SQLParserBase { } public routine_with_argtypes(): Routine_with_argtypesContext { let localContext = new Routine_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 666, PostgreSqlParser.RULE_routine_with_argtypes); - let _la: number; + this.enterRule(localContext, 374, PostgreSqlParser.RULE_routine_with_argtypes); try { - this.state = 6208; + this.state = 4458; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 585, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6200; + this.state = 4453; this.routine_name(); - this.state = 6201; + this.state = 4454; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6203; + this.state = 4456; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6204; - this.colid(); - this.state = 6206; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 6205; - this.indirection(); - } - } - + this.state = 4457; + this.qualified_name(); } break; } @@ -29315,26 +24991,26 @@ export class PostgreSqlParser extends SQLParserBase { } public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext { let localContext = new Procedure_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 668, PostgreSqlParser.RULE_procedure_with_argtypes_list); + this.enterRule(localContext, 376, PostgreSqlParser.RULE_procedure_with_argtypes_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6210; + this.state = 4460; this.procedure_with_argtypes(); - this.state = 6215; + this.state = 4465; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6211; + this.state = 4461; this.match(PostgreSqlParser.COMMA); - this.state = 6212; + this.state = 4462; this.procedure_with_argtypes(); } } - this.state = 6217; + this.state = 4467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29356,43 +25032,32 @@ export class PostgreSqlParser extends SQLParserBase { } public procedure_with_argtypes(): Procedure_with_argtypesContext { let localContext = new Procedure_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 670, PostgreSqlParser.RULE_procedure_with_argtypes); - let _la: number; + this.enterRule(localContext, 378, PostgreSqlParser.RULE_procedure_with_argtypes); try { - this.state = 6226; + this.state = 4473; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 588, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6218; + this.state = 4468; this.procedure_name(); - this.state = 6219; + this.state = 4469; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6221; + this.state = 4471; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6222; - this.colid(); - this.state = 6224; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 6223; - this.indirection(); - } - } - + this.state = 4472; + this.qualified_name(); } break; } @@ -29413,26 +25078,26 @@ export class PostgreSqlParser extends SQLParserBase { } public function_with_argtypes_list(): Function_with_argtypes_listContext { let localContext = new Function_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 672, PostgreSqlParser.RULE_function_with_argtypes_list); + this.enterRule(localContext, 380, PostgreSqlParser.RULE_function_with_argtypes_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6228; + this.state = 4475; this.function_with_argtypes(); - this.state = 6233; + this.state = 4480; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6229; + this.state = 4476; this.match(PostgreSqlParser.COMMA); - this.state = 6230; + this.state = 4477; this.function_with_argtypes(); } } - this.state = 6235; + this.state = 4482; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29454,43 +25119,32 @@ export class PostgreSqlParser extends SQLParserBase { } public function_with_argtypes(): Function_with_argtypesContext { let localContext = new Function_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 674, PostgreSqlParser.RULE_function_with_argtypes); - let _la: number; + this.enterRule(localContext, 382, PostgreSqlParser.RULE_function_with_argtypes); try { - this.state = 6244; + this.state = 4488; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 591, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6236; + this.state = 4483; this.function_name(); - this.state = 6237; + this.state = 4484; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6239; + this.state = 4486; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6240; - this.colid(); - this.state = 6242; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 6241; - this.indirection(); - } - } - + this.state = 4487; + this.qualified_name(); } break; } @@ -29509,137 +25163,51 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public func_args_with_defaults(): Func_args_with_defaultsContext { - let localContext = new Func_args_with_defaultsContext(this.context, this.state); - this.enterRule(localContext, 676, PostgreSqlParser.RULE_func_args_with_defaults); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6246; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6248; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 6247; - this.func_args_with_defaults_list(); - } - } - - this.state = 6250; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_args_with_defaults_list(): Func_args_with_defaults_listContext { - let localContext = new Func_args_with_defaults_listContext(this.context, this.state); - this.enterRule(localContext, 678, PostgreSqlParser.RULE_func_args_with_defaults_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6252; - this.func_arg_with_default(); - this.state = 6257; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6253; - this.match(PostgreSqlParser.COMMA); - this.state = 6254; - this.func_arg_with_default(); - } - } - this.state = 6259; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public func_arg(): Func_argContext { let localContext = new Func_argContext(this.context, this.state); - this.enterRule(localContext, 680, PostgreSqlParser.RULE_func_arg); + this.enterRule(localContext, 384, PostgreSqlParser.RULE_func_arg); try { - this.state = 6273; + this.enterOuterAlt(localContext, 1); + { + this.state = 4498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 596, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 556, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 6260; + this.state = 4490; this.arg_class(); - this.state = 6262; + this.state = 4492; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 594, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 554, this.context) ) { case 1: { - this.state = 6261; - this.param_name(); + this.state = 4491; + this.type_function_name(); } break; } - this.state = 6264; - this.func_type(); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 6266; - this.param_name(); - this.state = 6268; + this.state = 4494; + this.type_function_name(); + this.state = 4496; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 595, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { case 1: { - this.state = 6267; + this.state = 4495; this.arg_class(); } break; } - this.state = 6270; - this.func_type(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6272; - this.func_type(); } break; } + this.state = 4500; + this.func_type(); + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -29657,22 +25225,22 @@ export class PostgreSqlParser extends SQLParserBase { } public arg_class(): Arg_classContext { let localContext = new Arg_classContext(this.context, this.state); - this.enterRule(localContext, 682, PostgreSqlParser.RULE_arg_class); + this.enterRule(localContext, 386, PostgreSqlParser.RULE_arg_class); try { - this.state = 6282; + this.state = 4509; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 6275; + this.state = 4502; this.match(PostgreSqlParser.KW_IN); - this.state = 6277; + this.state = 4504; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 597, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { case 1: { - this.state = 6276; + this.state = 4503; this.match(PostgreSqlParser.KW_OUT); } break; @@ -29682,21 +25250,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OUT: this.enterOuterAlt(localContext, 2); { - this.state = 6279; + this.state = 4506; this.match(PostgreSqlParser.KW_OUT); } break; case PostgreSqlParser.KW_INOUT: this.enterOuterAlt(localContext, 3); { - this.state = 6280; + this.state = 4507; this.match(PostgreSqlParser.KW_INOUT); } break; case PostgreSqlParser.KW_VARIADIC: this.enterOuterAlt(localContext, 4); { - this.state = 6281; + this.state = 4508; this.match(PostgreSqlParser.KW_VARIADIC); } break; @@ -29718,93 +25286,41 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public param_name(): Param_nameContext { - let localContext = new Param_nameContext(this.context, this.state); - this.enterRule(localContext, 684, PostgreSqlParser.RULE_param_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6284; - this.type_function_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_return(): Func_returnContext { - let localContext = new Func_returnContext(this.context, this.state); - this.enterRule(localContext, 686, PostgreSqlParser.RULE_func_return); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6286; - this.func_type(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public func_type(): Func_typeContext { let localContext = new Func_typeContext(this.context, this.state); - this.enterRule(localContext, 688, PostgreSqlParser.RULE_func_type); + this.enterRule(localContext, 388, PostgreSqlParser.RULE_func_type); + let _la: number; try { - this.state = 6300; + this.state = 4520; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 599, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 560, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6288; + this.state = 4511; this.typename(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6289; - this.type_function_name(); - this.state = 6290; - this.attrs(); - this.state = 6291; - this.match(PostgreSqlParser.PERCENT); - this.state = 6292; - this.match(PostgreSqlParser.KW_TYPE); + this.state = 4513; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 415) { + { + this.state = 4512; + this.match(PostgreSqlParser.KW_SETOF); + } } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6294; - this.match(PostgreSqlParser.KW_SETOF); - this.state = 6295; + + this.state = 4515; this.type_function_name(); - this.state = 6296; + this.state = 4516; this.attrs(); - this.state = 6297; + this.state = 4517; this.match(PostgreSqlParser.PERCENT); - this.state = 6298; + this.state = 4518; this.match(PostgreSqlParser.KW_TYPE); } break; @@ -29826,19 +25342,19 @@ export class PostgreSqlParser extends SQLParserBase { } public func_arg_with_default(): Func_arg_with_defaultContext { let localContext = new Func_arg_with_defaultContext(this.context, this.state); - this.enterRule(localContext, 690, PostgreSqlParser.RULE_func_arg_with_default); + this.enterRule(localContext, 390, PostgreSqlParser.RULE_func_arg_with_default); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6302; + this.state = 4522; this.func_arg(); - this.state = 6305; + this.state = 4525; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 53) { { - this.state = 6303; + this.state = 4523; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 53)) { this.errorHandler.recoverInline(this); @@ -29847,8 +25363,8 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6304; - this.a_expr(); + this.state = 4524; + this.expression(); } } @@ -29868,407 +25384,480 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public aggr_arg(): Aggr_argContext { - let localContext = new Aggr_argContext(this.context, this.state); - this.enterRule(localContext, 692, PostgreSqlParser.RULE_aggr_arg); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6307; - this.func_arg(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public aggr_args(): Aggr_argsContext { let localContext = new Aggr_argsContext(this.context, this.state); - this.enterRule(localContext, 694, PostgreSqlParser.RULE_aggr_args); + this.enterRule(localContext, 392, PostgreSqlParser.RULE_aggr_args); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6309; + this.state = 4527; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6320; + this.state = 4537; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 601, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.STAR: { - this.state = 6310; + this.state = 4528; this.match(PostgreSqlParser.STAR); } break; - case 2: - { - this.state = 6311; - this.aggr_args_list(); - } - break; - case 3: - { - this.state = 6312; - this.match(PostgreSqlParser.KW_ORDER); - this.state = 6313; - this.match(PostgreSqlParser.KW_BY); - this.state = 6314; - this.aggr_args_list(); - } - break; - case 4: - { - this.state = 6315; - this.aggr_args_list(); - this.state = 6316; - this.match(PostgreSqlParser.KW_ORDER); - this.state = 6317; - this.match(PostgreSqlParser.KW_BY); - this.state = 6318; - this.aggr_args_list(); - } - break; - } - this.state = 6322; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public aggr_args_list(): Aggr_args_listContext { - let localContext = new Aggr_args_listContext(this.context, this.state); - this.enterRule(localContext, 696, PostgreSqlParser.RULE_aggr_args_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6324; - this.aggr_arg(); - this.state = 6329; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6325; - this.match(PostgreSqlParser.COMMA); - this.state = 6326; - this.aggr_arg(); - } - } - this.state = 6331; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext { - let localContext = new Aggregate_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 698, PostgreSqlParser.RULE_aggregate_with_argtypes); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6332; - this.function_name(); - this.state = 6333; - this.aggr_args(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public aggregate_with_argtypes_list(): Aggregate_with_argtypes_listContext { - let localContext = new Aggregate_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 700, PostgreSqlParser.RULE_aggregate_with_argtypes_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6335; - this.aggregate_with_argtypes(); - this.state = 6340; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6336; - this.match(PostgreSqlParser.COMMA); - this.state = 6337; - this.aggregate_with_argtypes(); - } - } - this.state = 6342; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createfunc_opt_list(): Createfunc_opt_listContext { - let localContext = new Createfunc_opt_listContext(this.context, this.state); - this.enterRule(localContext, 702, PostgreSqlParser.RULE_createfunc_opt_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 6344; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - { - this.state = 6343; - this.createfunc_opt_item(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 6346; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 604, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public common_func_opt_item(): Common_func_opt_itemContext { - let localContext = new Common_func_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 704, PostgreSqlParser.RULE_common_func_opt_item); - try { - this.state = 6383; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 605, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 6348; - this.match(PostgreSqlParser.KW_CALLED); - this.state = 6349; - this.match(PostgreSqlParser.KW_ON); - this.state = 6350; - this.match(PostgreSqlParser.KW_NULL); - this.state = 6351; - this.match(PostgreSqlParser.KW_INPUT); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 6352; - this.match(PostgreSqlParser.KW_RETURNS); - this.state = 6353; - this.match(PostgreSqlParser.KW_NULL); - this.state = 6354; - this.match(PostgreSqlParser.KW_ON); - this.state = 6355; - this.match(PostgreSqlParser.KW_NULL); - this.state = 6356; - this.match(PostgreSqlParser.KW_INPUT); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6357; - this.match(PostgreSqlParser.KW_STRICT); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 6358; - this.match(PostgreSqlParser.KW_IMMUTABLE); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 6359; - this.match(PostgreSqlParser.KW_STABLE); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 6360; - this.match(PostgreSqlParser.KW_VOLATILE); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 6361; - this.match(PostgreSqlParser.KW_EXTERNAL); - this.state = 6362; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 6363; - this.match(PostgreSqlParser.KW_DEFINER); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 6364; - this.match(PostgreSqlParser.KW_EXTERNAL); - this.state = 6365; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 6366; - this.match(PostgreSqlParser.KW_INVOKER); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 6367; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 6368; - this.match(PostgreSqlParser.KW_DEFINER); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 6369; - this.match(PostgreSqlParser.KW_SECURITY); - this.state = 6370; - this.match(PostgreSqlParser.KW_INVOKER); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 6371; - this.match(PostgreSqlParser.KW_LEAKPROOF); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 6372; - this.match(PostgreSqlParser.KW_NOT); - this.state = 6373; - this.match(PostgreSqlParser.KW_LEAKPROOF); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 6374; - this.match(PostgreSqlParser.KW_COST); - this.state = 6375; - this.numericonly(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 6376; - this.match(PostgreSqlParser.KW_ROWS); - this.state = 6377; - this.numericonly(); - } - break; - case 15: - this.enterOuterAlt(localContext, 15); - { - this.state = 6378; - this.match(PostgreSqlParser.KW_SUPPORT); - this.state = 6379; - this.any_name(); - } - break; - case 16: - this.enterOuterAlt(localContext, 16); + case PostgreSqlParser.CLOSE_PAREN: + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IN: + case PostgreSqlParser.KW_ORDER: + case PostgreSqlParser.KW_VARIADIC: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 6380; - this.functionsetresetclause(); + this.state = 4530; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 4529; + this.func_args_list(); + } } - break; - case 17: - this.enterOuterAlt(localContext, 17); - { - this.state = 6381; - this.match(PostgreSqlParser.KW_PARALLEL); - this.state = 6382; - this.colid(); + + this.state = 4535; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 83) { + { + this.state = 4532; + this.match(PostgreSqlParser.KW_ORDER); + this.state = 4533; + this.match(PostgreSqlParser.KW_BY); + this.state = 4534; + this.func_args_list(); + } + } + } break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4539; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -30285,82 +25874,311 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createfunc_opt_item(): Createfunc_opt_itemContext { - let localContext = new Createfunc_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 706, PostgreSqlParser.RULE_createfunc_opt_item); + public aggregate_with_argtypes(): Aggregate_with_argtypesContext { + let localContext = new Aggregate_with_argtypesContext(this.context, this.state); + this.enterRule(localContext, 394, PostgreSqlParser.RULE_aggregate_with_argtypes); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 4541; + this.function_name(); + this.state = 4542; + this.aggr_args(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public common_func_opt_item(): Common_func_opt_itemContext { + let localContext = new Common_func_opt_itemContext(this.context, this.state); + this.enterRule(localContext, 396, PostgreSqlParser.RULE_common_func_opt_item); + let _la: number; try { - this.state = 6410; + this.state = 4573; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 607, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_RETURNS: this.enterOuterAlt(localContext, 1); { - this.state = 6385; - this.match(PostgreSqlParser.KW_AS); - this.state = 6386; - this.sconst(); - this.state = 6387; - this.match(PostgreSqlParser.COMMA); - this.state = 6388; - this.sconst(); + this.state = 4547; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_RETURNS: + { + this.state = 4544; + this.match(PostgreSqlParser.KW_RETURNS); + this.state = 4545; + this.match(PostgreSqlParser.KW_NULL); + } + break; + case PostgreSqlParser.KW_CALLED: + { + this.state = 4546; + this.match(PostgreSqlParser.KW_CALLED); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4549; + this.match(PostgreSqlParser.KW_ON); + this.state = 4550; + this.match(PostgreSqlParser.KW_NULL); + this.state = 4551; + this.match(PostgreSqlParser.KW_INPUT); } break; - case 2: + case PostgreSqlParser.KW_STRICT: this.enterOuterAlt(localContext, 2); { - this.state = 6390; + this.state = 4552; + this.match(PostgreSqlParser.KW_STRICT); + } + break; + case PostgreSqlParser.KW_IMMUTABLE: + this.enterOuterAlt(localContext, 3); + { + this.state = 4553; + this.match(PostgreSqlParser.KW_IMMUTABLE); + } + break; + case PostgreSqlParser.KW_STABLE: + this.enterOuterAlt(localContext, 4); + { + this.state = 4554; + this.match(PostgreSqlParser.KW_STABLE); + } + break; + case PostgreSqlParser.KW_VOLATILE: + this.enterOuterAlt(localContext, 5); + { + this.state = 4555; + this.match(PostgreSqlParser.KW_VOLATILE); + } + break; + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_SECURITY: + this.enterOuterAlt(localContext, 6); + { + this.state = 4557; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 4556; + this.match(PostgreSqlParser.KW_EXTERNAL); + } + } + + this.state = 4559; + this.match(PostgreSqlParser.KW_SECURITY); + this.state = 4560; + _la = this.tokenStream.LA(1); + if(!(_la === 181 || _la === 243)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case PostgreSqlParser.KW_LEAKPROOF: + this.enterOuterAlt(localContext, 7); + { + this.state = 4561; + this.match(PostgreSqlParser.KW_LEAKPROOF); + } + break; + case PostgreSqlParser.KW_NOT: + this.enterOuterAlt(localContext, 8); + { + this.state = 4562; + this.match(PostgreSqlParser.KW_NOT); + this.state = 4563; + this.match(PostgreSqlParser.KW_LEAKPROOF); + } + break; + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_ROWS: + this.enterOuterAlt(localContext, 9); + { + this.state = 4564; + _la = this.tokenStream.LA(1); + if(!(_la === 170 || _la === 320)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4565; + this.numericonly(); + } + break; + case PostgreSqlParser.KW_SUPPORT: + this.enterOuterAlt(localContext, 10); + { + this.state = 4566; + this.match(PostgreSqlParser.KW_SUPPORT); + this.state = 4567; + this.any_name(); + } + break; + case PostgreSqlParser.KW_SET: + this.enterOuterAlt(localContext, 11); + { + this.state = 4568; + this.match(PostgreSqlParser.KW_SET); + this.state = 4569; + this.set_rest_more(); + } + break; + case PostgreSqlParser.KW_RESET: + this.enterOuterAlt(localContext, 12); + { + this.state = 4570; + this.variableresetstmt(); + } + break; + case PostgreSqlParser.KW_PARALLEL: + this.enterOuterAlt(localContext, 13); + { + this.state = 4571; + this.match(PostgreSqlParser.KW_PARALLEL); + this.state = 4572; + this.colid(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createfunc_opt_item(): Createfunc_opt_itemContext { + let localContext = new Createfunc_opt_itemContext(this.context, this.state); + this.enterRule(localContext, 398, PostgreSqlParser.RULE_createfunc_opt_item); + let _la: number; + try { + this.state = 4610; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 570, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 4575; + this.match(PostgreSqlParser.KW_AS); + this.state = 4576; + this.sconst(); + this.state = 4577; + this.notify_payload(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 4579; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 6391; + this.state = 4580; this.nonreservedword_or_sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6392; + this.state = 4581; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 6393; - this.transform_type_list(); + this.state = 4582; + this.match(PostgreSqlParser.KW_FOR); + this.state = 4583; + this.match(PostgreSqlParser.KW_TYPE); + this.state = 4584; + this.typename(); + this.state = 4591; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4585; + this.match(PostgreSqlParser.COMMA); + this.state = 4586; + this.match(PostgreSqlParser.KW_FOR); + this.state = 4587; + this.match(PostgreSqlParser.KW_TYPE); + this.state = 4588; + this.typename(); + } + } + this.state = 4593; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6394; + this.state = 4594; this.match(PostgreSqlParser.KW_WINDOW); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 6395; + this.state = 4595; this.match(PostgreSqlParser.KW_SET); - this.state = 6396; + this.state = 4596; this.colid(); - this.state = 6403; + this.state = 4603; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TO: { - this.state = 6397; + this.state = 4597; this.match(PostgreSqlParser.KW_TO); - this.state = 6398; + this.state = 4598; this.colid(); } break; case PostgreSqlParser.EQUAL: { - this.state = 6399; + this.state = 4599; this.match(PostgreSqlParser.EQUAL); - this.state = 6400; + this.state = 4600; this.colid(); } break; case PostgreSqlParser.KW_FROM: { - this.state = 6401; + this.state = 4601; this.match(PostgreSqlParser.KW_FROM); - this.state = 6402; + this.state = 4602; this.match(PostgreSqlParser.KW_CURRENT); } break; @@ -30372,30 +26190,30 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 6405; + this.state = 4605; this.match(PostgreSqlParser.KW_AS); - this.state = 6406; + this.state = 4606; this.colid(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 6407; + this.state = 4607; this.stmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 6408; + this.state = 4608; this.common_func_opt_item(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 6409; + this.state = 4609; this.colid(); } break; @@ -30415,64 +26233,15 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public transform_type_list(): Transform_type_listContext { - let localContext = new Transform_type_listContext(this.context, this.state); - this.enterRule(localContext, 708, PostgreSqlParser.RULE_transform_type_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6412; - this.match(PostgreSqlParser.KW_FOR); - this.state = 6413; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 6414; - this.typename(); - this.state = 6421; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6415; - this.match(PostgreSqlParser.COMMA); - this.state = 6416; - this.match(PostgreSqlParser.KW_FOR); - this.state = 6417; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 6418; - this.typename(); - } - } - this.state = 6423; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public opt_definition(): Opt_definitionContext { let localContext = new Opt_definitionContext(this.context, this.state); - this.enterRule(localContext, 710, PostgreSqlParser.RULE_opt_definition); + this.enterRule(localContext, 400, PostgreSqlParser.RULE_opt_definition); try { this.enterOuterAlt(localContext, 1); { - this.state = 6424; + this.state = 4612; this.match(PostgreSqlParser.KW_WITH); - this.state = 6425; + this.state = 4613; this.definition(); } } @@ -30492,13 +26261,13 @@ export class PostgreSqlParser extends SQLParserBase { } public table_func_column(): Table_func_columnContext { let localContext = new Table_func_columnContext(this.context, this.state); - this.enterRule(localContext, 712, PostgreSqlParser.RULE_table_func_column); + this.enterRule(localContext, 402, PostgreSqlParser.RULE_table_func_column); try { this.enterOuterAlt(localContext, 1); { - this.state = 6427; + this.state = 4615; this.column_name(); - this.state = 6428; + this.state = 4616; this.func_type(); } } @@ -30516,145 +26285,46 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public table_func_column_list(): Table_func_column_listContext { - let localContext = new Table_func_column_listContext(this.context, this.state); - this.enterRule(localContext, 714, PostgreSqlParser.RULE_table_func_column_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6430; - this.table_func_column(); - this.state = 6435; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6431; - this.match(PostgreSqlParser.COMMA); - this.state = 6432; - this.table_func_column(); - } - } - this.state = 6437; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public alterfunctionstmt(): AlterfunctionstmtContext { let localContext = new AlterfunctionstmtContext(this.context, this.state); - this.enterRule(localContext, 716, PostgreSqlParser.RULE_alterfunctionstmt); + this.enterRule(localContext, 404, PostgreSqlParser.RULE_alterfunctionstmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6438; + this.state = 4618; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6439; - this.alterFunctionTypeClause(); - this.state = 6440; - this.alterfunc_opt_list(); - this.state = 6442; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 610, this.context) ) { - case 1: - { - this.state = 6441; - this.opt_restrict(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterFunctionTypeClause(): AlterFunctionTypeClauseContext { - let localContext = new AlterFunctionTypeClauseContext(this.context, this.state); - this.enterRule(localContext, 718, PostgreSqlParser.RULE_alterFunctionTypeClause); - try { - this.state = 6450; + this.state = 4625; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: - this.enterOuterAlt(localContext, 1); { - this.state = 6444; + this.state = 4619; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6445; + this.state = 4620; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_PROCEDURE: - this.enterOuterAlt(localContext, 2); { - this.state = 6446; + this.state = 4621; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 6447; + this.state = 4622; this.procedure_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: - this.enterOuterAlt(localContext, 3); { - this.state = 6448; + this.state = 4623; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 6449; + this.state = 4624; this.routine_with_argtypes(); } break; default: throw new antlr.NoViableAltException(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterfunc_opt_list(): Alterfunc_opt_listContext { - let localContext = new Alterfunc_opt_listContext(this.context, this.state); - this.enterRule(localContext, 720, PostgreSqlParser.RULE_alterfunc_opt_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 6453; + this.state = 4628; this.errorHandler.sync(this); alternative = 1; do { @@ -30662,7 +26332,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 6452; + this.state = 4627; this.common_func_opt_item(); } } @@ -30670,34 +26340,20 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6455; + this.state = 4630; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 612, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 572, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + this.state = 4633; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 573, this.context) ) { + case 1: + { + this.state = 4632; + this.match(PostgreSqlParser.KW_RESTRICT); + } + break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_restrict(): Opt_restrictContext { - let localContext = new Opt_restrictContext(this.context, this.state); - this.enterRule(localContext, 722, PostgreSqlParser.RULE_opt_restrict); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6457; - this.match(PostgreSqlParser.KW_RESTRICT); } } catch (re) { @@ -30716,105 +26372,83 @@ export class PostgreSqlParser extends SQLParserBase { } public removefuncstmt(): RemovefuncstmtContext { let localContext = new RemovefuncstmtContext(this.context, this.state); - this.enterRule(localContext, 724, PostgreSqlParser.RULE_removefuncstmt); + this.enterRule(localContext, 406, PostgreSqlParser.RULE_removefuncstmt); try { - this.state = 6486; + this.enterOuterAlt(localContext, 1); + { + this.state = 4635; + this.match(PostgreSqlParser.KW_DROP); + this.state = 4651; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 619, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FUNCTION: { - this.state = 6459; - this.match(PostgreSqlParser.KW_DROP); - this.state = 6460; + this.state = 4636; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6462; + this.state = 4638; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 613, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 574, this.context) ) { case 1: { - this.state = 6461; + this.state = 4637; this.opt_if_exists(); } break; } - this.state = 6464; + this.state = 4640; this.function_with_argtypes_list(); - this.state = 6466; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 614, this.context) ) { - case 1: - { - this.state = 6465; - this.opt_drop_behavior(); - } - break; - } } break; - case 2: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_PROCEDURE: { - this.state = 6468; - this.match(PostgreSqlParser.KW_DROP); - this.state = 6469; + this.state = 4641; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 6471; + this.state = 4643; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 615, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 575, this.context) ) { case 1: { - this.state = 6470; + this.state = 4642; this.opt_if_exists(); } break; } - this.state = 6473; + this.state = 4645; this.procedure_with_argtypes_list(); - this.state = 6475; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { - case 1: - { - this.state = 6474; - this.opt_drop_behavior(); - } - break; - } } break; - case 3: - this.enterOuterAlt(localContext, 3); + case PostgreSqlParser.KW_ROUTINE: { - this.state = 6477; - this.match(PostgreSqlParser.KW_DROP); - this.state = 6478; + this.state = 4646; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 6480; + this.state = 4648; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 576, this.context) ) { case 1: { - this.state = 6479; + this.state = 4647; this.opt_if_exists(); } break; } - this.state = 6482; + this.state = 4650; this.routine_with_argtypes_list(); - this.state = 6484; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 618, this.context) ) { - case 1: - { - this.state = 6483; - this.opt_drop_behavior(); - } - break; } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4654; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { + case 1: + { + this.state = 4653; + this.opt_drop_behavior(); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -30832,32 +26466,51 @@ export class PostgreSqlParser extends SQLParserBase { } public removeaggrstmt(): RemoveaggrstmtContext { let localContext = new RemoveaggrstmtContext(this.context, this.state); - this.enterRule(localContext, 726, PostgreSqlParser.RULE_removeaggrstmt); + this.enterRule(localContext, 408, PostgreSqlParser.RULE_removeaggrstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6488; + this.state = 4656; this.match(PostgreSqlParser.KW_DROP); - this.state = 6489; + this.state = 4657; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 6491; + this.state = 4659; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 620, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { case 1: { - this.state = 6490; + this.state = 4658; this.opt_if_exists(); } break; } - this.state = 6493; - this.aggregate_with_argtypes_list(); - this.state = 6495; + { + this.state = 4661; + this.aggregate_with_argtypes(); + this.state = 4666; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4662; + this.match(PostgreSqlParser.COMMA); + this.state = 4663; + this.aggregate_with_argtypes(); + } + } + this.state = 4668; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 4670; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 621, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) { case 1: { - this.state = 6494; + this.state = 4669; this.opt_drop_behavior(); } break; @@ -30880,32 +26533,51 @@ export class PostgreSqlParser extends SQLParserBase { } public removeoperstmt(): RemoveoperstmtContext { let localContext = new RemoveoperstmtContext(this.context, this.state); - this.enterRule(localContext, 728, PostgreSqlParser.RULE_removeoperstmt); + this.enterRule(localContext, 410, PostgreSqlParser.RULE_removeoperstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6497; + this.state = 4672; this.match(PostgreSqlParser.KW_DROP); - this.state = 6498; + this.state = 4673; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 6500; + this.state = 4675; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 622, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { case 1: { - this.state = 6499; + this.state = 4674; this.opt_if_exists(); } break; } - this.state = 6502; - this.operator_with_argtypes_list(); - this.state = 6504; + { + this.state = 4677; + this.operator_with_argtypes(); + this.state = 4682; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4678; + this.match(PostgreSqlParser.COMMA); + this.state = 4679; + this.operator_with_argtypes(); + } + } + this.state = 4684; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 4686; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 623, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 584, this.context) ) { case 1: { - this.state = 6503; + this.state = 4685; this.opt_drop_behavior(); } break; @@ -30928,68 +26600,58 @@ export class PostgreSqlParser extends SQLParserBase { } public oper_argtypes(): Oper_argtypesContext { let localContext = new Oper_argtypesContext(this.context, this.state); - this.enterRule(localContext, 730, PostgreSqlParser.RULE_oper_argtypes); + this.enterRule(localContext, 412, PostgreSqlParser.RULE_oper_argtypes); + let _la: number; try { - this.state = 6528; + this.enterOuterAlt(localContext, 1); + { + this.state = 4688; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 4701; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 624, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 586, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 6506; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6507; + this.state = 4689; this.typename(); - this.state = 6508; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 4692; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 4690; + this.match(PostgreSqlParser.COMMA); + this.state = 4691; + this.typename(); + } } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 6510; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6511; - this.typename(); - this.state = 6512; - this.match(PostgreSqlParser.COMMA); - this.state = 6513; - this.typename(); - this.state = 6514; - this.match(PostgreSqlParser.CLOSE_PAREN); + } break; - case 3: - this.enterOuterAlt(localContext, 3); + case 2: { - this.state = 6516; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6517; + this.state = 4694; this.match(PostgreSqlParser.KW_NONE); - this.state = 6518; + this.state = 4695; this.match(PostgreSqlParser.COMMA); - this.state = 6519; + this.state = 4696; this.typename(); - this.state = 6520; - this.match(PostgreSqlParser.CLOSE_PAREN); } break; - case 4: - this.enterOuterAlt(localContext, 4); + case 3: { - this.state = 6522; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6523; + this.state = 4697; this.typename(); - this.state = 6524; + this.state = 4698; this.match(PostgreSqlParser.COMMA); - this.state = 6525; + this.state = 4699; this.match(PostgreSqlParser.KW_NONE); - this.state = 6526; - this.match(PostgreSqlParser.CLOSE_PAREN); } break; } + this.state = 4703; + this.match(PostgreSqlParser.CLOSE_PAREN); + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -31007,28 +26669,28 @@ export class PostgreSqlParser extends SQLParserBase { } public any_operator(): Any_operatorContext { let localContext = new Any_operatorContext(this.context, this.state); - this.enterRule(localContext, 732, PostgreSqlParser.RULE_any_operator); + this.enterRule(localContext, 414, PostgreSqlParser.RULE_any_operator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6535; + this.state = 4710; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { { - this.state = 6530; + this.state = 4705; this.colid(); - this.state = 6531; + this.state = 4706; this.match(PostgreSqlParser.DOT); } } - this.state = 6537; + this.state = 4712; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6538; + this.state = 4713; this.all_op(); } } @@ -31046,31 +26708,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public operator_with_argtypes_list(): Operator_with_argtypes_listContext { - let localContext = new Operator_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 734, PostgreSqlParser.RULE_operator_with_argtypes_list); - let _la: number; + public operator_with_argtypes(): Operator_with_argtypesContext { + let localContext = new Operator_with_argtypesContext(this.context, this.state); + this.enterRule(localContext, 416, PostgreSqlParser.RULE_operator_with_argtypes); try { this.enterOuterAlt(localContext, 1); { - this.state = 6540; - this.operator_with_argtypes(); - this.state = 6545; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6541; - this.match(PostgreSqlParser.COMMA); - this.state = 6542; - this.operator_with_argtypes(); - } - } - this.state = 6547; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + this.state = 4715; + this.any_operator(); + this.state = 4716; + this.oper_argtypes(); } } catch (re) { @@ -31087,84 +26734,53 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public operator_with_argtypes(): Operator_with_argtypesContext { - let localContext = new Operator_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 736, PostgreSqlParser.RULE_operator_with_argtypes); + public dostmt(): DostmtContext { + let localContext = new DostmtContext(this.context, this.state); + this.enterRule(localContext, 418, PostgreSqlParser.RULE_dostmt); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6548; - this.any_operator(); - this.state = 6549; - this.oper_argtypes(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dostmt(): DostmtContext { - let localContext = new DostmtContext(this.context, this.state); - this.enterRule(localContext, 738, PostgreSqlParser.RULE_dostmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6551; + this.state = 4718; this.match(PostgreSqlParser.KW_DO); - this.state = 6552; - this.dostmt_opt_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dostmt_opt_list(): Dostmt_opt_listContext { - let localContext = new Dostmt_opt_listContext(this.context, this.state); - this.enterRule(localContext, 740, PostgreSqlParser.RULE_dostmt_opt_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 6555; + this.state = 4722; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - { - this.state = 6554; - this.dostmt_opt_item(); + this.state = 4722; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 4719; + this.sconst(); + } + break; + case PostgreSqlParser.KW_LANGUAGE: + { + this.state = 4720; + this.match(PostgreSqlParser.KW_LANGUAGE); + this.state = 4721; + this.nonreservedword_or_sconst(); + } + break; + default: + throw new antlr.NoViableAltException(this); } } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6557; + this.state = 4724; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 627, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 589, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -31182,199 +26798,109 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public dostmt_opt_item(): Dostmt_opt_itemContext { - let localContext = new Dostmt_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 742, PostgreSqlParser.RULE_dostmt_opt_item); - try { - this.state = 6562; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); - { - this.state = 6559; - this.sconst(); - } - break; - case PostgreSqlParser.KW_LANGUAGE: - this.enterOuterAlt(localContext, 2); - { - this.state = 6560; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 6561; - this.nonreservedword_or_sconst(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public createcaststmt(): CreatecaststmtContext { let localContext = new CreatecaststmtContext(this.context, this.state); - this.enterRule(localContext, 744, PostgreSqlParser.RULE_createcaststmt); + this.enterRule(localContext, 420, PostgreSqlParser.RULE_createcaststmt); + let _la: number; try { - this.state = 6601; + this.enterOuterAlt(localContext, 1); + { + this.state = 4726; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 4727; + this.match(PostgreSqlParser.KW_CAST); + this.state = 4728; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 4729; + this.typename(); + this.state = 4730; + this.match(PostgreSqlParser.KW_AS); + this.state = 4731; + this.typename(); + this.state = 4732; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 4749; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_WITHOUT: { - this.state = 6564; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 6565; - this.match(PostgreSqlParser.KW_CAST); - this.state = 6566; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6567; - this.typename(); - this.state = 6568; - this.match(PostgreSqlParser.KW_AS); - this.state = 6569; - this.typename(); - this.state = 6570; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6571; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6572; + { + this.state = 4733; + this.match(PostgreSqlParser.KW_WITHOUT); + this.state = 4734; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6573; - this.function_with_argtypes(); - this.state = 6575; + this.state = 4737; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 629, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 590, this.context) ) { case 1: { - this.state = 6574; - this.cast_context(); + this.state = 4735; + this.match(PostgreSqlParser.KW_AS); + this.state = 4736; + _la = this.tokenStream.LA(1); + if(!(_la === 141 || _la === 223)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; } } + } break; - case 2: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_WITH: { - this.state = 6577; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 6578; - this.match(PostgreSqlParser.KW_CAST); - this.state = 6579; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6580; - this.typename(); - this.state = 6581; - this.match(PostgreSqlParser.KW_AS); - this.state = 6582; - this.typename(); - this.state = 6583; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6584; - this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 6585; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6587; + { + this.state = 4739; + this.match(PostgreSqlParser.KW_WITH); + this.state = 4743; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 630, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FUNCTION: { - this.state = 6586; - this.cast_context(); + this.state = 4740; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 4741; + this.function_with_argtypes(); } break; + case PostgreSqlParser.KW_INOUT: + { + this.state = 4742; + this.match(PostgreSqlParser.KW_INOUT); + } + break; + default: + throw new antlr.NoViableAltException(this); } - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6589; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 6590; - this.match(PostgreSqlParser.KW_CAST); - this.state = 6591; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6592; - this.typename(); - this.state = 6593; - this.match(PostgreSqlParser.KW_AS); - this.state = 6594; - this.typename(); - this.state = 6595; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6596; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6597; - this.match(PostgreSqlParser.KW_INOUT); - this.state = 6599; + this.state = 4747; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 631, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 592, this.context) ) { case 1: { - this.state = 6598; - this.cast_context(); + this.state = 4745; + this.match(PostgreSqlParser.KW_AS); + this.state = 4746; + _la = this.tokenStream.LA(1); + if(!(_la === 141 || _la === 223)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; } } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public cast_context(): Cast_contextContext { - let localContext = new Cast_contextContext(this.context, this.state); - this.enterRule(localContext, 746, PostgreSqlParser.RULE_cast_context); - try { - this.state = 6607; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 633, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 6603; - this.match(PostgreSqlParser.KW_AS); - this.state = 6604; - this.match(PostgreSqlParser.KW_IMPLICIT); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 6605; - this.match(PostgreSqlParser.KW_AS); - this.state = 6606; - this.match(PostgreSqlParser.KW_ASSIGNMENT); } break; + default: + throw new antlr.NoViableAltException(this); + } } } catch (re) { @@ -31393,13 +26919,13 @@ export class PostgreSqlParser extends SQLParserBase { } public opt_if_exists(): Opt_if_existsContext { let localContext = new Opt_if_existsContext(this.context, this.state); - this.enterRule(localContext, 748, PostgreSqlParser.RULE_opt_if_exists); + this.enterRule(localContext, 422, PostgreSqlParser.RULE_opt_if_exists); try { this.enterOuterAlt(localContext, 1); { - this.state = 6609; + this.state = 4751; this.match(PostgreSqlParser.KW_IF); - this.state = 6610; + this.state = 4752; this.match(PostgreSqlParser.KW_EXISTS); } } @@ -31419,146 +26945,87 @@ export class PostgreSqlParser extends SQLParserBase { } public createtransformstmt(): CreatetransformstmtContext { let localContext = new CreatetransformstmtContext(this.context, this.state); - this.enterRule(localContext, 750, PostgreSqlParser.RULE_createtransformstmt); + this.enterRule(localContext, 424, PostgreSqlParser.RULE_createtransformstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6612; + this.state = 4754; this.match(PostgreSqlParser.KW_CREATE); - this.state = 6614; + this.state = 4756; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 6613; + this.state = 4755; this.opt_or_replace(); } } - this.state = 6616; + this.state = 4758; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 6617; + this.state = 4759; this.match(PostgreSqlParser.KW_FOR); - this.state = 6618; + this.state = 4760; this.typename(); - this.state = 6619; + this.state = 4761; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 6620; - this.name(); - this.state = 6621; + this.state = 4762; + this.colid(); + this.state = 4763; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6622; - this.transform_element_list(); - this.state = 6623; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public transform_element_list(): Transform_element_listContext { - let localContext = new Transform_element_listContext(this.context, this.state); - this.enterRule(localContext, 752, PostgreSqlParser.RULE_transform_element_list); - try { - this.state = 6659; + this.state = 4778; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 635, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 6625; - this.match(PostgreSqlParser.KW_FROM); - this.state = 6626; - this.match(PostgreSqlParser.KW_SQL); - this.state = 6627; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6628; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6629; - this.function_with_argtypes(); - this.state = 6630; - this.match(PostgreSqlParser.COMMA); - this.state = 6631; - this.match(PostgreSqlParser.KW_TO); - this.state = 6632; - this.match(PostgreSqlParser.KW_SQL); - this.state = 6633; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6634; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6635; - this.function_with_argtypes(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FROM: { - this.state = 6637; - this.match(PostgreSqlParser.KW_TO); - this.state = 6638; - this.match(PostgreSqlParser.KW_SQL); - this.state = 6639; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6640; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6641; - this.function_with_argtypes(); - this.state = 6642; - this.match(PostgreSqlParser.COMMA); - this.state = 6643; + this.state = 4764; this.match(PostgreSqlParser.KW_FROM); - this.state = 6644; - this.match(PostgreSqlParser.KW_SQL); - this.state = 6645; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6646; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6647; - this.function_with_argtypes(); + this.state = 4765; + this.sql_with_function(); + this.state = 4769; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 4766; + this.match(PostgreSqlParser.COMMA); + this.state = 4767; + this.match(PostgreSqlParser.KW_TO); + this.state = 4768; + this.sql_with_function(); + } } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6649; - this.match(PostgreSqlParser.KW_FROM); - this.state = 6650; - this.match(PostgreSqlParser.KW_SQL); - this.state = 6651; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6652; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6653; - this.function_with_argtypes(); + } break; - case 4: - this.enterOuterAlt(localContext, 4); + case PostgreSqlParser.KW_TO: { - this.state = 6654; + this.state = 4771; this.match(PostgreSqlParser.KW_TO); - this.state = 6655; - this.match(PostgreSqlParser.KW_SQL); - this.state = 6656; - this.match(PostgreSqlParser.KW_WITH); - this.state = 6657; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6658; - this.function_with_argtypes(); + this.state = 4772; + this.sql_with_function(); + this.state = 4776; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 4773; + this.match(PostgreSqlParser.COMMA); + this.state = 4774; + this.match(PostgreSqlParser.KW_FROM); + this.state = 4775; + this.sql_with_function(); + } + } + } break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4780; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -31575,61 +27042,20 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public reindexstmt(): ReindexstmtContext { - let localContext = new ReindexstmtContext(this.context, this.state); - this.enterRule(localContext, 754, PostgreSqlParser.RULE_reindexstmt); + public sql_with_function(): Sql_with_functionContext { + let localContext = new Sql_with_functionContext(this.context, this.state); + this.enterRule(localContext, 426, PostgreSqlParser.RULE_sql_with_function); try { - this.state = 6677; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 636, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 6661; - this.match(PostgreSqlParser.KW_REINDEX); - this.state = 6662; - this.reindex_target_type(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 6663; - this.match(PostgreSqlParser.KW_REINDEX); - this.state = 6664; - this.reindex_target_multitable(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 6665; - this.match(PostgreSqlParser.KW_REINDEX); - this.state = 6666; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6667; - this.reindex_option_list(); - this.state = 6668; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6669; - this.reindex_target_type(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 6671; - this.match(PostgreSqlParser.KW_REINDEX); - this.state = 6672; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6673; - this.reindex_option_list(); - this.state = 6674; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6675; - this.reindex_target_multitable(); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 4782; + this.match(PostgreSqlParser.KW_SQL); + this.state = 4783; + this.match(PostgreSqlParser.KW_WITH); + this.state = 4784; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 4785; + this.function_with_argtypes(); } } catch (re) { @@ -31646,148 +27072,144 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public reindex_target_type(): Reindex_target_typeContext { - let localContext = new Reindex_target_typeContext(this.context, this.state); - this.enterRule(localContext, 756, PostgreSqlParser.RULE_reindex_target_type); + public reindexstmt(): ReindexstmtContext { + let localContext = new ReindexstmtContext(this.context, this.state); + this.enterRule(localContext, 428, PostgreSqlParser.RULE_reindexstmt); let _la: number; try { - this.state = 6689; + this.enterOuterAlt(localContext, 1); + { + this.state = 4787; + this.match(PostgreSqlParser.KW_REINDEX); + this.state = 4798; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 4788; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 4789; + this.match(PostgreSqlParser.KW_VERBOSE); + this.state = 4794; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4790; + this.match(PostgreSqlParser.COMMA); + this.state = 4791; + this.match(PostgreSqlParser.KW_VERBOSE); + } + } + this.state = 4796; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 4797; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + } + + { + this.state = 4825; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INDEX: - this.enterOuterAlt(localContext, 1); { - { - this.state = 6679; + this.state = 4800; this.match(PostgreSqlParser.KW_INDEX); - this.state = 6681; + this.state = 4802; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 6680; - this.opt_concurrently(); + this.state = 4801; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 6683; + this.state = 4804; this.qualified_name(); } - } break; case PostgreSqlParser.KW_TABLE: - this.enterOuterAlt(localContext, 2); - { { - this.state = 6684; + this.state = 4805; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6686; + this.state = 4807; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 6685; - this.opt_concurrently(); + this.state = 4806; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 6688; + this.state = 4809; this.table_name(); } - } break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public reindex_target_multitable(): Reindex_target_multitableContext { - let localContext = new Reindex_target_multitableContext(this.context, this.state); - this.enterRule(localContext, 758, PostgreSqlParser.RULE_reindex_target_multitable); - let _la: number; - try { - this.state = 6706; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SCHEMA: - this.enterOuterAlt(localContext, 1); - { { - this.state = 6691; + this.state = 4810; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 6693; + this.state = 4812; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 6692; - this.opt_concurrently(); + this.state = 4811; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 6695; + this.state = 4814; this.schema_name(); } - } break; case PostgreSqlParser.KW_SYSTEM: - this.enterOuterAlt(localContext, 2); - { { - this.state = 6696; + this.state = 4815; this.match(PostgreSqlParser.KW_SYSTEM); - this.state = 6698; + this.state = 4817; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 6697; - this.opt_concurrently(); + this.state = 4816; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 6700; - this.name(); - } + this.state = 4819; + this.colid(); } break; case PostgreSqlParser.KW_DATABASE: - this.enterOuterAlt(localContext, 3); - { { - this.state = 6701; + this.state = 4820; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 6703; + this.state = 4822; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 6702; - this.opt_concurrently(); + this.state = 4821; + this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 6705; + this.state = 4824; this.database_name(); } - } break; default: throw new antlr.NoViableAltException(this); } + } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -31803,55 +27225,28 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public reindex_option_list(): Reindex_option_listContext { - let localContext = new Reindex_option_listContext(this.context, this.state); - this.enterRule(localContext, 760, PostgreSqlParser.RULE_reindex_option_list); + public altertblspcstmt(): AltertblspcstmtContext { + let localContext = new AltertblspcstmtContext(this.context, this.state); + this.enterRule(localContext, 430, PostgreSqlParser.RULE_altertblspcstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6708; - this.reindex_option_elem(); - this.state = 6713; - this.errorHandler.sync(this); + this.state = 4827; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 4828; + this.opttablespace(); + this.state = 4829; _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 6709; - this.match(PostgreSqlParser.COMMA); - this.state = 6710; - this.reindex_option_elem(); - } - } - this.state = 6715; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + if(!(_la === 313 || _la === 333)) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public reindex_option_elem(): Reindex_option_elemContext { - let localContext = new Reindex_option_elemContext(this.context, this.state); - this.enterRule(localContext, 762, PostgreSqlParser.RULE_reindex_option_elem); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6716; - this.match(PostgreSqlParser.KW_VERBOSE); + this.state = 4830; + this.reloptions(); } } catch (re) { @@ -31868,1050 +27263,1005 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public altertblspcstmt(): AltertblspcstmtContext { - let localContext = new AltertblspcstmtContext(this.context, this.state); - this.enterRule(localContext, 764, PostgreSqlParser.RULE_altertblspcstmt); + public renamestmt(): RenamestmtContext { + let localContext = new RenamestmtContext(this.context, this.state); + this.enterRule(localContext, 432, PostgreSqlParser.RULE_renamestmt); + let _la: number; try { - this.state = 6730; + this.state = 5039; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 626, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6718; + this.state = 4832; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6719; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 6720; - this.tablespace_name(); - this.state = 6721; - this.match(PostgreSqlParser.KW_SET); - this.state = 6722; - this.reloptions(); + this.state = 4837; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AGGREGATE: + { + this.state = 4833; + this.match(PostgreSqlParser.KW_AGGREGATE); + this.state = 4834; + this.aggregate_with_argtypes(); + } + break; + case PostgreSqlParser.KW_ROUTINE: + { + this.state = 4835; + this.match(PostgreSqlParser.KW_ROUTINE); + this.state = 4836; + this.routine_with_argtypes(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4839; + this.match(PostgreSqlParser.KW_RENAME); + this.state = 4840; + this.match(PostgreSqlParser.KW_TO); + this.state = 4841; + this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6724; + this.state = 4843; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6725; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 6726; - this.tablespace_name(); - this.state = 6727; - this.match(PostgreSqlParser.KW_RESET); - this.state = 6728; - this.reloptions(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public renamestmt(): RenamestmtContext { - let localContext = new RenamestmtContext(this.context, this.state); - this.enterRule(localContext, 766, PostgreSqlParser.RULE_renamestmt); - let _la: number; - try { - this.state = 7123; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 664, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 6732; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6733; - this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 6734; - this.aggregate_with_argtypes(); - this.state = 6735; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6736; - this.match(PostgreSqlParser.KW_TO); - this.state = 6737; - this.name(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 6739; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6740; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 6741; - this.any_name(); - this.state = 6742; + this.state = 4844; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 4845; + this.database_name(); + this.state = 4846; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6743; + this.state = 4847; this.match(PostgreSqlParser.KW_TO); - this.state = 6744; - this.name(); + this.state = 4848; + this.database_name_create(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6746; + this.state = 4850; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6747; - this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 6748; + this.state = 4851; + _la = this.tokenStream.LA(1); + if(!(_la === 108 || _la === 168 || _la === 189 || _la === 342 || _la === 360)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4852; this.any_name(); - this.state = 6749; + this.state = 4853; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6750; + this.state = 4854; this.match(PostgreSqlParser.KW_TO); - this.state = 6751; - this.name(); + this.state = 4855; + this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6753; + this.state = 4857; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6754; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 6755; - this.database_name(); - this.state = 6756; + this.state = 4858; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 4859; + this.function_with_argtypes(); + this.state = 4860; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6757; + this.state = 4861; this.match(PostgreSqlParser.KW_TO); - this.state = 6758; - this.database_name_create(); + this.state = 4862; + this.function_name_create(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 6760; + this.state = 4864; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6761; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 6762; + this.state = 4865; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 4866; + _la = this.tokenStream.LA(1); + if(!(_la === 156 || _la === 206)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4867; this.any_name(); - this.state = 6763; + this.state = 4868; + this.table_access_method_clause(); + this.state = 4869; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6764; + this.state = 4870; this.match(PostgreSqlParser.KW_TO); - this.state = 6765; - this.name(); + this.state = 4871; + this.colid(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 6767; + this.state = 4873; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6768; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 6769; - this.any_name(); - this.state = 6770; + this.state = 4874; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 4875; + this.procedure_with_argtypes(); + this.state = 4876; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6771; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 6772; - this.name(); - this.state = 6773; + this.state = 4877; this.match(PostgreSqlParser.KW_TO); - this.state = 6774; - this.name(); + this.state = 4878; + this.procedure_name_create(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 6776; + this.state = 4880; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6777; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 6778; - this.match(PostgreSqlParser.KW_DATA); - this.state = 6779; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 6780; - this.name(); - this.state = 6781; + this.state = 4881; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 4882; + this.schema_name(); + this.state = 4883; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6782; + this.state = 4884; this.match(PostgreSqlParser.KW_TO); - this.state = 6783; - this.name(); + this.state = 4885; + this.schema_name_create(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 6785; + this.state = 4887; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6786; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 6787; - this.function_with_argtypes(); - this.state = 6788; + this.state = 4888; + _la = this.tokenStream.LA(1); + if(!(_la === 226 || _la === 328)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4890; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 607, this.context) ) { + case 1: + { + this.state = 4889; + this.opt_if_exists(); + } + break; + } + this.state = 4892; + this.qualified_name(); + this.state = 4893; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6789; + this.state = 4894; this.match(PostgreSqlParser.KW_TO); - this.state = 6790; - this.function_name_create(); + this.state = 4895; + this.colid(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 6792; + this.state = 4897; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6793; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 6794; - this.roleid(); - this.state = 6795; + this.state = 4899; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 259) { + { + this.state = 4898; + this.match(PostgreSqlParser.KW_MATERIALIZED); + } + } + + this.state = 4901; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 4903; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 609, this.context) ) { + case 1: + { + this.state = 4902; + this.opt_if_exists(); + } + break; + } + this.state = 4905; + this.view_name(); + this.state = 4906; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6796; + this.state = 4907; this.match(PostgreSqlParser.KW_TO); - this.state = 6797; - this.roleid(); + this.state = 4908; + this.view_name_create(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 6799; + this.state = 4910; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6801; + this.state = 4912; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 295) { + if (_la === 63) { { - this.state = 6800; - this.opt_procedural(); + this.state = 4911; + this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 6803; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 6804; - this.name(); - this.state = 6805; + this.state = 4914; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 4916; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { + case 1: + { + this.state = 4915; + this.opt_if_exists(); + } + break; + } + this.state = 4918; + this.relation_expr(); + this.state = 4919; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6806; + this.state = 4920; this.match(PostgreSqlParser.KW_TO); - this.state = 6807; - this.name(); + this.state = 4921; + this.table_name_create(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 6809; + this.state = 4923; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6810; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 6811; - this.match(PostgreSqlParser.KW_CLASS); - this.state = 6812; - this.any_name(); - this.state = 6813; - this.match(PostgreSqlParser.KW_USING); - this.state = 6814; - this.name(); - this.state = 6815; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6816; + this.state = 4948; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FOREIGN: + case PostgreSqlParser.KW_TABLE: + { + this.state = 4925; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 63) { + { + this.state = 4924; + this.match(PostgreSqlParser.KW_FOREIGN); + } + } + + this.state = 4927; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 4929; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 613, this.context) ) { + case 1: + { + this.state = 4928; + this.opt_if_exists(); + } + break; + } + this.state = 4931; + this.relation_expr(); + this.state = 4932; + this.match(PostgreSqlParser.KW_RENAME); + this.state = 4934; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 614, this.context) ) { + case 1: + { + this.state = 4933; + this.match(PostgreSqlParser.KW_COLUMN); + } + break; + } + } + break; + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_VIEW: + { + this.state = 4937; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 259) { + { + this.state = 4936; + this.match(PostgreSqlParser.KW_MATERIALIZED); + } + } + + this.state = 4939; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 4941; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { + case 1: + { + this.state = 4940; + this.opt_if_exists(); + } + break; + } + this.state = 4943; + this.view_name(); + this.state = 4944; + this.match(PostgreSqlParser.KW_RENAME); + this.state = 4946; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { + case 1: + { + this.state = 4945; + this.match(PostgreSqlParser.KW_COLUMN); + } + break; + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4950; + this.column_name(); + this.state = 4951; this.match(PostgreSqlParser.KW_TO); - this.state = 6817; - this.name(); + this.state = 4952; + this.column_name_create(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 6819; + this.state = 4954; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6820; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 6821; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 6822; - this.any_name(); - this.state = 6823; - this.match(PostgreSqlParser.KW_USING); - this.state = 6824; - this.name(); - this.state = 6825; + this.state = 4962; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_TABLE: + { + this.state = 4955; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 4957; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 619, this.context) ) { + case 1: + { + this.state = 4956; + this.opt_if_exists(); + } + break; + } + this.state = 4959; + this.relation_expr(); + } + break; + case PostgreSqlParser.KW_DOMAIN: + { + this.state = 4960; + this.match(PostgreSqlParser.KW_DOMAIN); + this.state = 4961; + this.any_name(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4964; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6826; + this.state = 4965; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 4966; + this.colid(); + this.state = 4967; this.match(PostgreSqlParser.KW_TO); - this.state = 6827; - this.name(); + this.state = 4968; + this.colid(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 6829; + this.state = 4970; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6830; - this.match(PostgreSqlParser.KW_POLICY); - this.state = 6832; + this.state = 4977; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 647, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_POLICY: { - this.state = 6831; - this.opt_if_exists(); + { + this.state = 4971; + this.match(PostgreSqlParser.KW_POLICY); + this.state = 4973; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 621, this.context) ) { + case 1: + { + this.state = 4972; + this.opt_if_exists(); + } + break; + } + } + } + break; + case PostgreSqlParser.KW_RULE: + { + this.state = 4975; + this.match(PostgreSqlParser.KW_RULE); + } + break; + case PostgreSqlParser.KW_TRIGGER: + { + this.state = 4976; + this.match(PostgreSqlParser.KW_TRIGGER); } break; + default: + throw new antlr.NoViableAltException(this); } - this.state = 6834; - this.name(); - this.state = 6835; + this.state = 4979; + this.colid(); + this.state = 4980; this.match(PostgreSqlParser.KW_ON); - this.state = 6836; + this.state = 4981; this.qualified_name(); - this.state = 6837; + this.state = 4982; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6838; + this.state = 4983; this.match(PostgreSqlParser.KW_TO); - this.state = 6839; - this.name(); + this.state = 4984; + this.colid(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 6841; + this.state = 4986; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6842; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 6843; - this.procedure_with_argtypes(); - this.state = 6844; + this.state = 4999; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FOREIGN: + { + this.state = 4987; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 4988; + this.match(PostgreSqlParser.KW_DATA); + this.state = 4989; + this.match(PostgreSqlParser.KW_WRAPPER); + } + break; + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_PROCEDURAL: + { + this.state = 4991; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 295) { + { + this.state = 4990; + this.match(PostgreSqlParser.KW_PROCEDURAL); + } + } + + this.state = 4993; + this.match(PostgreSqlParser.KW_LANGUAGE); + } + break; + case PostgreSqlParser.KW_PUBLICATION: + { + this.state = 4994; + this.match(PostgreSqlParser.KW_PUBLICATION); + } + break; + case PostgreSqlParser.KW_SERVER: + { + this.state = 4995; + this.match(PostgreSqlParser.KW_SERVER); + } + break; + case PostgreSqlParser.KW_SUBSCRIPTION: + { + this.state = 4996; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + } + break; + case PostgreSqlParser.KW_EVENT: + { + this.state = 4997; + this.match(PostgreSqlParser.KW_EVENT); + this.state = 4998; + this.match(PostgreSqlParser.KW_TRIGGER); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5001; + this.colid(); + this.state = 5002; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6845; + this.state = 5003; this.match(PostgreSqlParser.KW_TO); - this.state = 6846; - this.procedure_name_create(); + this.state = 5004; + this.colid(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 6848; + this.state = 5006; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6849; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 6850; - this.name(); - this.state = 6851; + this.state = 5007; + _la = this.tokenStream.LA(1); + if(!(_la === 66 || _la === 99 || _la === 318)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5008; + this.rolespec(); + this.state = 5009; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6852; + this.state = 5010; this.match(PostgreSqlParser.KW_TO); - this.state = 6853; - this.name(); + this.state = 5011; + this.rolespec(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 6855; + this.state = 5013; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6856; - this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 6857; - this.routine_with_argtypes(); - this.state = 6858; + this.state = 5014; + this.opttablespace(); + this.state = 5015; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6859; + this.state = 5016; this.match(PostgreSqlParser.KW_TO); - this.state = 6860; - this.name(); + this.state = 5017; + this.tablespace_name_create(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 6862; + this.state = 5019; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6863; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 6864; - this.schema_name(); - this.state = 6865; + this.state = 5020; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5021; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5022; + _la = this.tokenStream.LA(1); + if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5023; + this.any_name(); + this.state = 5024; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6866; + this.state = 5025; this.match(PostgreSqlParser.KW_TO); - this.state = 6867; - this.schema_name_create(); + this.state = 5026; + this.colid(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 6869; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6870; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 6871; - this.name(); - this.state = 6872; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6873; - this.match(PostgreSqlParser.KW_TO); - this.state = 6874; - this.name(); - } - break; - case 19: - this.enterOuterAlt(localContext, 19); - { - this.state = 6876; + this.state = 5028; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6877; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 6878; - this.name(); - this.state = 6879; + this.state = 5029; + this.match(PostgreSqlParser.KW_TYPE); + this.state = 5030; + this.any_name(); + this.state = 5031; this.match(PostgreSqlParser.KW_RENAME); - this.state = 6880; + this.state = 5032; + this.match(PostgreSqlParser.KW_ATTRIBUTE); + this.state = 5033; + this.colid(); + this.state = 5034; this.match(PostgreSqlParser.KW_TO); - this.state = 6881; - this.name(); - } - break; - case 20: - this.enterOuterAlt(localContext, 20); - { - this.state = 6883; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6884; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 6886; + this.state = 5035; + this.colid(); + this.state = 5037; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 648, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 625, this.context) ) { case 1: { - this.state = 6885; - this.opt_if_exists(); + this.state = 5036; + this.opt_drop_behavior(); } break; } - this.state = 6888; - this.relation_expr(); - this.state = 6889; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6890; - this.match(PostgreSqlParser.KW_TO); - this.state = 6891; - this.table_name_create(); } break; - case 21: - this.enterOuterAlt(localContext, 21); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public alterobjectdependsstmt(): AlterobjectdependsstmtContext { + let localContext = new AlterobjectdependsstmtContext(this.context, this.state); + this.enterRule(localContext, 434, PostgreSqlParser.RULE_alterobjectdependsstmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 5041; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5058; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_FUNCTION: { - this.state = 6893; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6894; - this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 6896; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 649, this.context) ) { - case 1: - { - this.state = 6895; - this.opt_if_exists(); - } - break; - } - this.state = 6898; - this.qualified_name(); - this.state = 6899; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6900; - this.match(PostgreSqlParser.KW_TO); - this.state = 6901; - this.name(); + this.state = 5042; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 5043; + this.function_with_argtypes(); } break; - case 22: - this.enterOuterAlt(localContext, 22); + case PostgreSqlParser.KW_PROCEDURE: { - this.state = 6903; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6904; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 6906; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 650, this.context) ) { - case 1: - { - this.state = 6905; - this.opt_if_exists(); - } - break; + this.state = 5044; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 5045; + this.procedure_with_argtypes(); } - this.state = 6908; - this.view_name(); - this.state = 6909; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6910; - this.match(PostgreSqlParser.KW_TO); - this.state = 6911; - this.view_name_create(); + break; + case PostgreSqlParser.KW_ROUTINE: + { + this.state = 5046; + this.match(PostgreSqlParser.KW_ROUTINE); + this.state = 5047; + this.routine_with_argtypes(); } break; - case 23: - this.enterOuterAlt(localContext, 23); + case PostgreSqlParser.KW_TRIGGER: { - this.state = 6913; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6914; + this.state = 5048; + this.match(PostgreSqlParser.KW_TRIGGER); + this.state = 5049; + this.colid(); + this.state = 5050; + this.match(PostgreSqlParser.KW_ON); + this.state = 5051; + this.qualified_name(); + } + break; + case PostgreSqlParser.KW_MATERIALIZED: + { + this.state = 5053; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 6915; + this.state = 5054; this.match(PostgreSqlParser.KW_VIEW); - this.state = 6917; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 651, this.context) ) { - case 1: - { - this.state = 6916; - this.opt_if_exists(); - } - break; - } - this.state = 6919; + this.state = 5055; this.view_name(); - this.state = 6920; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6921; - this.match(PostgreSqlParser.KW_TO); - this.state = 6922; - this.view_name_create(); } break; - case 24: - this.enterOuterAlt(localContext, 24); + case PostgreSqlParser.KW_INDEX: { - this.state = 6924; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6925; + this.state = 5056; this.match(PostgreSqlParser.KW_INDEX); - this.state = 6927; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 652, this.context) ) { - case 1: - { - this.state = 6926; - this.opt_if_exists(); - } - break; - } - this.state = 6929; + this.state = 5057; this.qualified_name(); - this.state = 6930; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6931; - this.match(PostgreSqlParser.KW_TO); - this.state = 6932; - this.name(); } break; - case 25: - this.enterOuterAlt(localContext, 25); + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5061; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { { - this.state = 6934; + this.state = 5060; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 5063; + this.match(PostgreSqlParser.KW_DEPENDS); + this.state = 5064; + this.match(PostgreSqlParser.KW_ON); + this.state = 5065; + this.match(PostgreSqlParser.KW_EXTENSION); + this.state = 5066; + this.colid(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public alterobjectschemastmt(): AlterobjectschemastmtContext { + let localContext = new AlterobjectschemastmtContext(this.context, this.state); + this.enterRule(localContext, 436, PostgreSqlParser.RULE_alterobjectschemastmt); + let _la: number; + try { + this.state = 5129; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 636, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 5068; this.match(PostgreSqlParser.KW_ALTER); - this.state = 6935; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 6936; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 6938; + this.state = 5107; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 653, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 634, this.context) ) { case 1: { - this.state = 6937; - this.opt_if_exists(); + this.state = 5069; + this.match(PostgreSqlParser.KW_AGGREGATE); + this.state = 5070; + this.aggregate_with_argtypes(); } break; - } - this.state = 6940; - this.relation_expr(); - this.state = 6941; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6942; - this.match(PostgreSqlParser.KW_TO); - this.state = 6943; - this.table_name_create(); - } - break; - case 26: - this.enterOuterAlt(localContext, 26); - { - this.state = 6945; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6946; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 6948; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 654, this.context) ) { - case 1: + case 2: { - this.state = 6947; - this.opt_if_exists(); + this.state = 5071; + this.match(PostgreSqlParser.KW_EXTENSION); + this.state = 5072; + this.colid(); } break; - } - this.state = 6950; - this.relation_expr(); - this.state = 6951; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6953; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 655, this.context) ) { - case 1: + case 3: { - this.state = 6952; - this.match(PostgreSqlParser.KW_COLUMN); + this.state = 5073; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 5074; + this.function_with_argtypes(); } break; - } - this.state = 6955; - this.column_name(); - this.state = 6956; - this.match(PostgreSqlParser.KW_TO); - this.state = 6957; - this.column_name_create(); - } - break; - case 27: - this.enterOuterAlt(localContext, 27); - { - this.state = 6959; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6960; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 6962; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 656, this.context) ) { - case 1: + case 4: { - this.state = 6961; - this.opt_if_exists(); + this.state = 5075; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 5076; + this.operator_with_argtypes(); } break; - } - this.state = 6964; - this.view_name(); - this.state = 6965; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6967; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 657, this.context) ) { - case 1: + case 5: { - this.state = 6966; - this.match(PostgreSqlParser.KW_COLUMN); + this.state = 5077; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 5078; + _la = this.tokenStream.LA(1); + if(!(_la === 156 || _la === 206)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5079; + this.any_name(); + this.state = 5080; + this.table_access_method_clause(); } break; - } - this.state = 6969; - this.column_name(); - this.state = 6970; - this.match(PostgreSqlParser.KW_TO); - this.state = 6971; - this.column_name_create(); - } - break; - case 28: - this.enterOuterAlt(localContext, 28); - { - this.state = 6973; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6974; - this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 6975; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 6977; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 658, this.context) ) { - case 1: + case 6: { - this.state = 6976; - this.opt_if_exists(); + this.state = 5082; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 5083; + this.procedure_with_argtypes(); } break; - } - this.state = 6979; - this.view_name(); - this.state = 6980; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6982; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 659, this.context) ) { - case 1: + case 7: { - this.state = 6981; - this.match(PostgreSqlParser.KW_COLUMN); + this.state = 5084; + this.match(PostgreSqlParser.KW_ROUTINE); + this.state = 5085; + this.routine_with_argtypes(); } break; - } - this.state = 6984; - this.column_name(); - this.state = 6985; - this.match(PostgreSqlParser.KW_TO); - this.state = 6986; - this.column_name_create(); - } - break; - case 29: - this.enterOuterAlt(localContext, 29); - { - this.state = 6988; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 6989; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 6991; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 660, this.context) ) { - case 1: + case 8: { - this.state = 6990; - this.opt_if_exists(); + this.state = 5086; + this.match(PostgreSqlParser.KW_SEQUENCE); + this.state = 5088; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 629, this.context) ) { + case 1: + { + this.state = 5087; + this.opt_if_exists(); + } + break; + } + this.state = 5090; + this.qualified_name(); } break; - } - this.state = 6993; - this.relation_expr(); - this.state = 6994; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 6995; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 6996; - this.name(); - this.state = 6997; - this.match(PostgreSqlParser.KW_TO); - this.state = 6998; - this.name(); - } - break; - case 30: - this.enterOuterAlt(localContext, 30); - { - this.state = 7000; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7001; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 7002; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 7004; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 661, this.context) ) { - case 1: + case 9: { - this.state = 7003; - this.opt_if_exists(); + this.state = 5092; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 259) { + { + this.state = 5091; + this.match(PostgreSqlParser.KW_MATERIALIZED); + } + } + + this.state = 5094; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 5096; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 631, this.context) ) { + case 1: + { + this.state = 5095; + this.opt_if_exists(); + } + break; + } + this.state = 5098; + this.view_name(); } break; - } - this.state = 7006; - this.relation_expr(); - this.state = 7007; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7009; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 662, this.context) ) { - case 1: + case 10: { - this.state = 7008; - this.match(PostgreSqlParser.KW_COLUMN); + this.state = 5100; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 63) { + { + this.state = 5099; + this.match(PostgreSqlParser.KW_FOREIGN); + } + } + + this.state = 5102; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 5104; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 633, this.context) ) { + case 1: + { + this.state = 5103; + this.opt_if_exists(); + } + break; + } + this.state = 5106; + this.relation_expr(); } break; } - this.state = 7011; - this.column_name(); - this.state = 7012; - this.match(PostgreSqlParser.KW_TO); - this.state = 7013; - this.column_name_create(); - } - break; - case 31: - this.enterOuterAlt(localContext, 31); - { - this.state = 7015; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7016; - this.match(PostgreSqlParser.KW_RULE); - this.state = 7017; - this.name(); - this.state = 7018; - this.match(PostgreSqlParser.KW_ON); - this.state = 7019; - this.qualified_name(); - this.state = 7020; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7021; - this.match(PostgreSqlParser.KW_TO); - this.state = 7022; - this.name(); - } - break; - case 32: - this.enterOuterAlt(localContext, 32); - { - this.state = 7024; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7025; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 7026; - this.name(); - this.state = 7027; - this.match(PostgreSqlParser.KW_ON); - this.state = 7028; - this.qualified_name(); - this.state = 7029; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7030; - this.match(PostgreSqlParser.KW_TO); - this.state = 7031; - this.name(); - } - break; - case 33: - this.enterOuterAlt(localContext, 33); - { - this.state = 7033; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7034; - this.match(PostgreSqlParser.KW_EVENT); - this.state = 7035; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 7036; - this.name(); - this.state = 7037; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7038; - this.match(PostgreSqlParser.KW_TO); - this.state = 7039; - this.name(); - } - break; - case 34: - this.enterOuterAlt(localContext, 34); - { - this.state = 7041; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7042; - this.match(PostgreSqlParser.KW_ROLE); - this.state = 7043; - this.roleid(); - this.state = 7044; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7045; - this.match(PostgreSqlParser.KW_TO); - this.state = 7046; - this.roleid(); - } - break; - case 35: - this.enterOuterAlt(localContext, 35); - { - this.state = 7048; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7049; - this.match(PostgreSqlParser.KW_USER); - this.state = 7050; - this.roleid(); - this.state = 7051; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7052; - this.match(PostgreSqlParser.KW_TO); - this.state = 7053; - this.roleid(); - } - break; - case 36: - this.enterOuterAlt(localContext, 36); - { - this.state = 7055; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7056; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 7057; - this.tablespace_name(); - this.state = 7058; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7059; - this.match(PostgreSqlParser.KW_TO); - this.state = 7060; - this.tablespace_name_create(); - } - break; - case 37: - this.enterOuterAlt(localContext, 37); - { - this.state = 7062; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7063; - this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 7064; - this.any_name(); - this.state = 7065; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7066; - this.match(PostgreSqlParser.KW_TO); - this.state = 7067; - this.name(); - } - break; - case 38: - this.enterOuterAlt(localContext, 38); - { - this.state = 7069; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7070; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7071; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7072; - this.match(PostgreSqlParser.KW_PARSER); - this.state = 7073; - this.any_name(); - this.state = 7074; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7075; - this.match(PostgreSqlParser.KW_TO); - this.state = 7076; - this.name(); - } - break; - case 39: - this.enterOuterAlt(localContext, 39); - { - this.state = 7078; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7079; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7080; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7081; - this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 7082; - this.any_name(); - this.state = 7083; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7084; - this.match(PostgreSqlParser.KW_TO); - this.state = 7085; - this.name(); - } - break; - case 40: - this.enterOuterAlt(localContext, 40); - { - this.state = 7087; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7088; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7089; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7090; - this.match(PostgreSqlParser.KW_TEMPLATE); - this.state = 7091; - this.any_name(); - this.state = 7092; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7093; - this.match(PostgreSqlParser.KW_TO); - this.state = 7094; - this.name(); - } - break; - case 41: - this.enterOuterAlt(localContext, 41); - { - this.state = 7096; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7097; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7098; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7099; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 7100; - this.any_name(); - this.state = 7101; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7102; - this.match(PostgreSqlParser.KW_TO); - this.state = 7103; - this.name(); - } - break; - case 42: - this.enterOuterAlt(localContext, 42); - { - this.state = 7105; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7106; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 7107; - this.any_name(); - this.state = 7108; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7109; - this.match(PostgreSqlParser.KW_TO); - this.state = 7110; - this.name(); + this.state = 5109; + this.match(PostgreSqlParser.KW_SET); + this.state = 5110; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 5111; + this.schema_name(); } break; - case 43: - this.enterOuterAlt(localContext, 43); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 7112; + this.state = 5113; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7113; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 7114; - this.any_name(); - this.state = 7115; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7116; - this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 7117; - this.name(); - this.state = 7118; - this.match(PostgreSqlParser.KW_TO); - this.state = 7119; - this.name(); - this.state = 7121; + this.state = 5122; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 663, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_TEXT: { - this.state = 7120; - this.opt_drop_behavior(); + this.state = 5114; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5115; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5116; + _la = this.tokenStream.LA(1); + if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case PostgreSqlParser.KW_COLLATION: + { + this.state = 5117; + this.match(PostgreSqlParser.KW_COLLATION); + } + break; + case PostgreSqlParser.KW_CONVERSION: + { + this.state = 5118; + this.match(PostgreSqlParser.KW_CONVERSION); + } + break; + case PostgreSqlParser.KW_DOMAIN: + { + this.state = 5119; + this.match(PostgreSqlParser.KW_DOMAIN); + } + break; + case PostgreSqlParser.KW_STATISTICS: + { + this.state = 5120; + this.match(PostgreSqlParser.KW_STATISTICS); + } + break; + case PostgreSqlParser.KW_TYPE: + { + this.state = 5121; + this.match(PostgreSqlParser.KW_TYPE); } break; + default: + throw new antlr.NoViableAltException(this); } + this.state = 5124; + this.any_name(); + this.state = 5125; + this.match(PostgreSqlParser.KW_SET); + this.state = 5126; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 5127; + this.schema_name(); } break; } @@ -32930,16 +28280,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_set_data(): Opt_set_dataContext { - let localContext = new Opt_set_dataContext(this.context, this.state); - this.enterRule(localContext, 768, PostgreSqlParser.RULE_opt_set_data); + public alteroperatorstmt(): AlteroperatorstmtContext { + let localContext = new AlteroperatorstmtContext(this.context, this.state); + this.enterRule(localContext, 438, PostgreSqlParser.RULE_alteroperatorstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 7125; + this.state = 5131; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5132; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 5133; + this.operator_with_argtypes(); + this.state = 5134; this.match(PostgreSqlParser.KW_SET); - this.state = 7126; - this.match(PostgreSqlParser.KW_DATA); + this.state = 5135; + this.operator_def_list(); } } catch (re) { @@ -32956,195 +28312,102 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterobjectdependsstmt(): AlterobjectdependsstmtContext { - let localContext = new AlterobjectdependsstmtContext(this.context, this.state); - this.enterRule(localContext, 770, PostgreSqlParser.RULE_alterobjectdependsstmt); + public operator_def_list(): Operator_def_listContext { + let localContext = new Operator_def_listContext(this.context, this.state); + this.enterRule(localContext, 440, PostgreSqlParser.RULE_operator_def_list); let _la: number; try { - this.state = 7197; + this.enterOuterAlt(localContext, 1); + { + this.state = 5137; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5138; + this.operator_def_elem(); + this.state = 5143; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 671, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 7128; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7129; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 7130; - this.function_with_argtypes(); - this.state = 7132; + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 5139; + this.match(PostgreSqlParser.COMMA); + this.state = 5140; + this.operator_def_elem(); + } + } + this.state = 5145; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 7131; - this.opt_no(); - } - } - - this.state = 7134; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 7135; - this.match(PostgreSqlParser.KW_ON); - this.state = 7136; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7137; - this.name(); + } + this.state = 5146; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public operator_def_elem(): Operator_def_elemContext { + let localContext = new Operator_def_elemContext(this.context, this.state); + this.enterRule(localContext, 442, PostgreSqlParser.RULE_operator_def_elem); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 5148; + this.collabel(); + this.state = 5149; + this.match(PostgreSqlParser.EQUAL); + this.state = 5156; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { + case 1: + { + this.state = 5150; + this.match(PostgreSqlParser.KW_NONE); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 7139; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7140; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 7141; - this.procedure_with_argtypes(); - this.state = 7143; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 7142; - this.opt_no(); - } - } - - this.state = 7145; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 7146; - this.match(PostgreSqlParser.KW_ON); - this.state = 7147; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7148; - this.name(); + this.state = 5151; + this.func_type(); } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 7150; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7151; - this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 7152; - this.routine_with_argtypes(); - this.state = 7154; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 7153; - this.opt_no(); - } - } - - this.state = 7156; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 7157; - this.match(PostgreSqlParser.KW_ON); - this.state = 7158; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7159; - this.name(); + this.state = 5152; + this.reserved_keyword(); } break; case 4: - this.enterOuterAlt(localContext, 4); { - this.state = 7161; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7162; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 7163; - this.name(); - this.state = 7164; - this.match(PostgreSqlParser.KW_ON); - this.state = 7165; - this.qualified_name(); - this.state = 7167; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 7166; - this.opt_no(); - } - } - - this.state = 7169; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 7170; - this.match(PostgreSqlParser.KW_ON); - this.state = 7171; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7172; - this.name(); + this.state = 5153; + this.qual_all_op(); } break; case 5: - this.enterOuterAlt(localContext, 5); { - this.state = 7174; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7175; - this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 7176; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 7177; - this.view_name(); - this.state = 7179; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 7178; - this.opt_no(); - } - } - - this.state = 7181; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 7182; - this.match(PostgreSqlParser.KW_ON); - this.state = 7183; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7184; - this.name(); + this.state = 5154; + this.numericonly(); } break; case 6: - this.enterOuterAlt(localContext, 6); { - this.state = 7186; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7187; - this.match(PostgreSqlParser.KW_INDEX); - this.state = 7188; - this.qualified_name(); - this.state = 7190; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 7189; - this.opt_no(); - } - } - - this.state = 7192; - this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 7193; - this.match(PostgreSqlParser.KW_ON); - this.state = 7194; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7195; - this.name(); + this.state = 5155; + this.sconst(); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -33160,14 +28423,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_no(): Opt_noContext { - let localContext = new Opt_noContext(this.context, this.state); - this.enterRule(localContext, 772, PostgreSqlParser.RULE_opt_no); + public altertypestmt(): AltertypestmtContext { + let localContext = new AltertypestmtContext(this.context, this.state); + this.enterRule(localContext, 444, PostgreSqlParser.RULE_altertypestmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 7199; - this.match(PostgreSqlParser.KW_NO); + this.state = 5158; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5159; + this.match(PostgreSqlParser.KW_TYPE); + this.state = 5160; + this.any_name(); + this.state = 5161; + this.match(PostgreSqlParser.KW_SET); + this.state = 5162; + this.operator_def_list(); } } catch (re) { @@ -33184,467 +28455,698 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterobjectschemastmt(): AlterobjectschemastmtContext { - let localContext = new AlterobjectschemastmtContext(this.context, this.state); - this.enterRule(localContext, 774, PostgreSqlParser.RULE_alterobjectschemastmt); + public alterownerstmt(): AlterownerstmtContext { + let localContext = new AlterownerstmtContext(this.context, this.state); + this.enterRule(localContext, 446, PostgreSqlParser.RULE_alterownerstmt); + let _la: number; try { - this.state = 7386; + this.state = 5238; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 677, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 643, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7201; + this.state = 5164; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7202; - this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 7203; - this.aggregate_with_argtypes(); - this.state = 7204; - this.match(PostgreSqlParser.KW_SET); - this.state = 7205; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7206; - this.schema_name(); + this.state = 5165; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 5166; + _la = this.tokenStream.LA(1); + if(!(_la === 156 || _la === 206)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5167; + this.any_name(); + this.state = 5168; + this.table_access_method_clause(); + this.state = 5169; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 5170; + this.match(PostgreSqlParser.KW_TO); + this.state = 5171; + this.rolespec(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7208; + this.state = 5173; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7209; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 7210; - this.any_name(); - this.state = 7211; - this.match(PostgreSqlParser.KW_SET); - this.state = 7212; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7213; - this.schema_name(); + this.state = 5200; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 640, this.context) ) { + case 1: + { + this.state = 5174; + this.match(PostgreSqlParser.KW_AGGREGATE); + this.state = 5175; + this.aggregate_with_argtypes(); + } + break; + case 2: + { + this.state = 5176; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 5177; + this.database_name(); + } + break; + case 3: + { + this.state = 5178; + this.match(PostgreSqlParser.KW_FUNCTION); + this.state = 5179; + this.function_with_argtypes(); + } + break; + case 4: + { + this.state = 5181; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 295) { + { + this.state = 5180; + this.match(PostgreSqlParser.KW_PROCEDURAL); + } + } + + this.state = 5183; + this.match(PostgreSqlParser.KW_LANGUAGE); + this.state = 5184; + this.colid(); + } + break; + case 5: + { + this.state = 5185; + this.match(PostgreSqlParser.KW_LARGE); + this.state = 5186; + this.match(PostgreSqlParser.KW_OBJECT); + this.state = 5187; + this.numericonly(); + } + break; + case 6: + { + this.state = 5188; + this.match(PostgreSqlParser.KW_LARGE); + this.state = 5189; + this.match(PostgreSqlParser.KW_OBJECT); + this.state = 5190; + this.numericonly(); + } + break; + case 7: + { + this.state = 5191; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 5192; + this.operator_with_argtypes(); + } + break; + case 8: + { + this.state = 5193; + this.match(PostgreSqlParser.KW_PROCEDURE); + this.state = 5194; + this.procedure_with_argtypes(); + } + break; + case 9: + { + this.state = 5195; + this.match(PostgreSqlParser.KW_ROUTINE); + this.state = 5196; + this.routine_with_argtypes(); + } + break; + case 10: + { + this.state = 5197; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 5198; + this.schema_name(); + } + break; + case 11: + { + this.state = 5199; + this.opttablespace(); + } + break; + } + this.state = 5202; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 5203; + this.match(PostgreSqlParser.KW_TO); + this.state = 5204; + this.rolespec(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7215; + this.state = 5206; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7216; - this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 7217; + this.state = 5215; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_TEXT: + { + this.state = 5207; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5208; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5209; + _la = this.tokenStream.LA(1); + if(!(_la === 163 || _la === 185)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case PostgreSqlParser.KW_COLLATION: + { + this.state = 5210; + this.match(PostgreSqlParser.KW_COLLATION); + } + break; + case PostgreSqlParser.KW_CONVERSION: + { + this.state = 5211; + this.match(PostgreSqlParser.KW_CONVERSION); + } + break; + case PostgreSqlParser.KW_DOMAIN: + { + this.state = 5212; + this.match(PostgreSqlParser.KW_DOMAIN); + } + break; + case PostgreSqlParser.KW_TYPE: + { + this.state = 5213; + this.match(PostgreSqlParser.KW_TYPE); + } + break; + case PostgreSqlParser.KW_STATISTICS: + { + this.state = 5214; + this.match(PostgreSqlParser.KW_STATISTICS); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5217; this.any_name(); - this.state = 7218; - this.match(PostgreSqlParser.KW_SET); - this.state = 7219; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7220; - this.schema_name(); + this.state = 5218; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 5219; + this.match(PostgreSqlParser.KW_TO); + this.state = 5220; + this.rolespec(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7222; + this.state = 5222; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7223; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 7224; - this.any_name(); - this.state = 7225; - this.match(PostgreSqlParser.KW_SET); - this.state = 7226; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7227; - this.schema_name(); + this.state = 5231; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SERVER: + { + this.state = 5223; + this.match(PostgreSqlParser.KW_SERVER); + } + break; + case PostgreSqlParser.KW_FOREIGN: + { + { + this.state = 5224; + this.match(PostgreSqlParser.KW_FOREIGN); + this.state = 5225; + this.match(PostgreSqlParser.KW_DATA); + this.state = 5226; + this.match(PostgreSqlParser.KW_WRAPPER); + } + } + break; + case PostgreSqlParser.KW_EVENT: + { + { + this.state = 5227; + this.match(PostgreSqlParser.KW_EVENT); + this.state = 5228; + this.match(PostgreSqlParser.KW_TRIGGER); + } + } + break; + case PostgreSqlParser.KW_PUBLICATION: + { + this.state = 5229; + this.match(PostgreSqlParser.KW_PUBLICATION); + } + break; + case PostgreSqlParser.KW_SUBSCRIPTION: + { + this.state = 5230; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5233; + this.colid(); + this.state = 5234; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 5235; + this.match(PostgreSqlParser.KW_TO); + this.state = 5236; + this.rolespec(); } break; - case 5: - this.enterOuterAlt(localContext, 5); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createpublicationstmt(): CreatepublicationstmtContext { + let localContext = new CreatepublicationstmtContext(this.context, this.state); + this.enterRule(localContext, 448, PostgreSqlParser.RULE_createpublicationstmt); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 5240; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5241; + this.match(PostgreSqlParser.KW_PUBLICATION); + this.state = 5242; + this.colid(); + this.state = 5249; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 644, this.context) ) { + case 1: { - this.state = 7229; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7230; - this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 7231; - this.name(); - this.state = 7232; - this.match(PostgreSqlParser.KW_SET); - this.state = 7233; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7234; - this.schema_name(); + this.state = 5243; + this.match(PostgreSqlParser.KW_FOR); + this.state = 5244; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 5245; + this.relation_expr_list(); } break; - case 6: - this.enterOuterAlt(localContext, 6); + case 2: { - this.state = 7236; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7237; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 7238; - this.function_with_argtypes(); - this.state = 7239; - this.match(PostgreSqlParser.KW_SET); - this.state = 7240; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7241; - this.schema_name(); + this.state = 5246; + this.match(PostgreSqlParser.KW_FOR); + this.state = 5247; + this.match(PostgreSqlParser.KW_ALL); + this.state = 5248; + this.match(PostgreSqlParser.KW_TABLES); } break; - case 7: - this.enterOuterAlt(localContext, 7); + } + this.state = 5252; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { + case 1: { - this.state = 7243; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7244; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7245; - this.operator_with_argtypes(); - this.state = 7246; - this.match(PostgreSqlParser.KW_SET); - this.state = 7247; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7248; - this.schema_name(); + this.state = 5251; + this.opt_definition(); } break; - case 8: - this.enterOuterAlt(localContext, 8); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public alterpublicationstmt(): AlterpublicationstmtContext { + let localContext = new AlterpublicationstmtContext(this.context, this.state); + this.enterRule(localContext, 450, PostgreSqlParser.RULE_alterpublicationstmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 5254; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5255; + this.match(PostgreSqlParser.KW_PUBLICATION); + this.state = 5256; + this.colid(); + this.state = 5274; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 647, this.context) ) { + case 1: { - this.state = 7250; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7251; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7252; - this.match(PostgreSqlParser.KW_CLASS); - this.state = 7253; - this.any_name(); - this.state = 7254; - this.match(PostgreSqlParser.KW_USING); - this.state = 7255; - this.name(); - this.state = 7256; - this.match(PostgreSqlParser.KW_SET); - this.state = 7257; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7258; - this.schema_name(); + { + this.state = 5257; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 5258; + this.match(PostgreSqlParser.KW_TO); + this.state = 5259; + this.rolespec(); + } } break; - case 9: - this.enterOuterAlt(localContext, 9); + case 2: { - this.state = 7260; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7261; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7262; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 7263; - this.any_name(); - this.state = 7264; - this.match(PostgreSqlParser.KW_USING); - this.state = 7265; - this.name(); - this.state = 7266; + { + this.state = 5260; this.match(PostgreSqlParser.KW_SET); - this.state = 7267; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7268; - this.schema_name(); + this.state = 5261; + this.definition(); + } } break; - case 10: - this.enterOuterAlt(localContext, 10); + case 3: { - this.state = 7270; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7271; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 7272; - this.procedure_with_argtypes(); - this.state = 7273; - this.match(PostgreSqlParser.KW_SET); - this.state = 7274; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7275; - this.schema_name(); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); { - this.state = 7277; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7278; - this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 7279; - this.routine_with_argtypes(); - this.state = 7280; - this.match(PostgreSqlParser.KW_SET); - this.state = 7281; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7282; - this.schema_name(); + this.state = 5262; + this.match(PostgreSqlParser.KW_RENAME); + this.state = 5263; + this.match(PostgreSqlParser.KW_TO); + this.state = 5264; + this.colid(); + } } break; - case 12: - this.enterOuterAlt(localContext, 12); + case 4: { - this.state = 7284; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7285; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 7287; + this.state = 5265; + _la = this.tokenStream.LA(1); + if(!(_la === 133 || _la === 191 || _la === 333)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5266; + this.publication_relation_expr(); + this.state = 5271; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 672, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 7286; - this.opt_if_exists(); + { + this.state = 5267; + this.match(PostgreSqlParser.COMMA); + this.state = 5268; + this.publication_relation_expr(); } - break; + } + this.state = 5273; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - this.state = 7289; - this.relation_expr(); - this.state = 7290; - this.match(PostgreSqlParser.KW_SET); - this.state = 7291; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7292; - this.schema_name(); } break; - case 13: - this.enterOuterAlt(localContext, 13); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createsubscriptionstmt(): CreatesubscriptionstmtContext { + let localContext = new CreatesubscriptionstmtContext(this.context, this.state); + this.enterRule(localContext, 452, PostgreSqlParser.RULE_createsubscriptionstmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 5276; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5277; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5278; + this.colid(); + this.state = 5279; + this.match(PostgreSqlParser.KW_CONNECTION); + this.state = 5280; + this.sconst(); + this.state = 5281; + this.match(PostgreSqlParser.KW_PUBLICATION); + { + this.state = 5282; + this.collabel(); + this.state = 5287; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 7294; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7295; - this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 7296; - this.any_name(); - this.state = 7297; - this.match(PostgreSqlParser.KW_SET); - this.state = 7298; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7299; - this.schema_name(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); { - this.state = 7301; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7302; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7303; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7304; - this.match(PostgreSqlParser.KW_PARSER); - this.state = 7305; - this.any_name(); - this.state = 7306; - this.match(PostgreSqlParser.KW_SET); - this.state = 7307; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7308; - this.schema_name(); + this.state = 5283; + this.match(PostgreSqlParser.COMMA); + this.state = 5284; + this.collabel(); } - break; - case 15: - this.enterOuterAlt(localContext, 15); + } + this.state = 5289; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 5291; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 649, this.context) ) { + case 1: { - this.state = 7310; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7311; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7312; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7313; - this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 7314; - this.any_name(); - this.state = 7315; - this.match(PostgreSqlParser.KW_SET); - this.state = 7316; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7317; - this.schema_name(); + this.state = 5290; + this.opt_definition(); } break; - case 16: - this.enterOuterAlt(localContext, 16); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public altersubscriptionstmt(): AltersubscriptionstmtContext { + let localContext = new AltersubscriptionstmtContext(this.context, this.state); + this.enterRule(localContext, 454, PostgreSqlParser.RULE_altersubscriptionstmt); + let _la: number; + try { + this.state = 5349; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 653, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 7319; + this.state = 5293; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7320; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7321; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7322; - this.match(PostgreSqlParser.KW_TEMPLATE); - this.state = 7323; - this.any_name(); - this.state = 7324; + this.state = 5294; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5295; + this.colid(); + this.state = 5296; this.match(PostgreSqlParser.KW_SET); - this.state = 7325; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7326; - this.schema_name(); + this.state = 5297; + this.definition(); } break; - case 17: - this.enterOuterAlt(localContext, 17); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 7328; + this.state = 5299; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7329; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7330; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7331; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 7332; - this.any_name(); - this.state = 7333; - this.match(PostgreSqlParser.KW_SET); - this.state = 7334; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7335; - this.schema_name(); + this.state = 5300; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5301; + this.colid(); + this.state = 5302; + this.match(PostgreSqlParser.KW_CONNECTION); + this.state = 5303; + this.sconst(); } break; - case 18: - this.enterOuterAlt(localContext, 18); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 7337; + this.state = 5305; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7338; - this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 7340; + this.state = 5306; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5307; + this.colid(); + this.state = 5308; + this.match(PostgreSqlParser.KW_REFRESH); + this.state = 5309; + this.match(PostgreSqlParser.KW_PUBLICATION); + this.state = 5311; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 673, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 650, this.context) ) { case 1: { - this.state = 7339; - this.opt_if_exists(); + this.state = 5310; + this.opt_definition(); } break; } - this.state = 7342; - this.qualified_name(); - this.state = 7343; - this.match(PostgreSqlParser.KW_SET); - this.state = 7344; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7345; - this.schema_name(); } break; - case 19: - this.enterOuterAlt(localContext, 19); + case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 7347; + this.state = 5313; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7348; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 7350; + this.state = 5314; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5315; + this.colid(); + this.state = 5316; + _la = this.tokenStream.LA(1); + if(!(_la === 133 || _la === 191 || _la === 333)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5317; + this.match(PostgreSqlParser.KW_PUBLICATION); + { + this.state = 5318; + this.collabel(); + this.state = 5323; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 674, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 7349; - this.opt_if_exists(); + { + this.state = 5319; + this.match(PostgreSqlParser.COMMA); + this.state = 5320; + this.collabel(); } - break; + } + this.state = 5325; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - this.state = 7352; - this.view_name(); - this.state = 7353; - this.match(PostgreSqlParser.KW_SET); - this.state = 7354; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7355; - this.schema_name(); } - break; - case 20: - this.enterOuterAlt(localContext, 20); - { - this.state = 7357; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7358; - this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 7359; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 7361; + this.state = 5327; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 675, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 652, this.context) ) { case 1: { - this.state = 7360; - this.opt_if_exists(); + this.state = 5326; + this.opt_definition(); } break; } - this.state = 7363; - this.view_name(); - this.state = 7364; - this.match(PostgreSqlParser.KW_SET); - this.state = 7365; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7366; - this.schema_name(); } break; - case 21: - this.enterOuterAlt(localContext, 21); + case 5: + this.enterOuterAlt(localContext, 5); { - this.state = 7368; + this.state = 5329; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7369; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 7370; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 7372; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 676, this.context) ) { - case 1: - { - this.state = 7371; - this.opt_if_exists(); - } - break; + this.state = 5330; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5331; + this.colid(); + this.state = 5332; + _la = this.tokenStream.LA(1); + if(!(_la === 186 || _la === 193)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } - this.state = 7374; - this.relation_expr(); - this.state = 7375; - this.match(PostgreSqlParser.KW_SET); - this.state = 7376; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7377; - this.schema_name(); } break; - case 22: - this.enterOuterAlt(localContext, 22); + case 6: + this.enterOuterAlt(localContext, 6); { - this.state = 7379; + this.state = 5334; this.match(PostgreSqlParser.KW_ALTER); - this.state = 7380; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 7381; - this.any_name(); - this.state = 7382; - this.match(PostgreSqlParser.KW_SET); - this.state = 7383; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7384; - this.schema_name(); + this.state = 5335; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5336; + this.colid(); + this.state = 5337; + this.match(PostgreSqlParser.KW_SKIP); + this.state = 5338; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5339; + this.old_aggr_elem(); + this.state = 5340; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 5342; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5343; + this.match(PostgreSqlParser.KW_SUBSCRIPTION); + this.state = 5344; + this.colid(); + this.state = 5345; + this.match(PostgreSqlParser.KW_OWNER); + this.state = 5346; + this.match(PostgreSqlParser.KW_TO); + this.state = 5347; + this.rolespec(); } break; } @@ -33663,113 +29165,136 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alteroperatorstmt(): AlteroperatorstmtContext { - let localContext = new AlteroperatorstmtContext(this.context, this.state); - this.enterRule(localContext, 776, PostgreSqlParser.RULE_alteroperatorstmt); + public rulestmt(): RulestmtContext { + let localContext = new RulestmtContext(this.context, this.state); + this.enterRule(localContext, 456, PostgreSqlParser.RULE_rulestmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7388; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7389; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7390; - this.operator_with_argtypes(); - this.state = 7391; - this.match(PostgreSqlParser.KW_SET); - this.state = 7392; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7393; - this.operator_def_list(); - this.state = 7394; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 5351; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5353; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 82) { + { + this.state = 5352; + this.opt_or_replace(); + } } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + + this.state = 5355; + this.match(PostgreSqlParser.KW_RULE); + this.state = 5356; + this.colid(); + this.state = 5357; + this.match(PostgreSqlParser.KW_AS); + this.state = 5358; + this.match(PostgreSqlParser.KW_ON); + this.state = 5359; + _la = this.tokenStream.LA(1); + if(!(_la === 88 || _la === 182 || _la === 241 || _la === 369)) { + this.errorHandler.recoverInline(this); } - } - finally { - this.exitRule(); - } - return localContext; - } - public operator_def_list(): Operator_def_listContext { - let localContext = new Operator_def_listContext(this.context, this.state); - this.enterRule(localContext, 778, PostgreSqlParser.RULE_operator_def_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7396; - this.operator_def_elem(); - this.state = 7401; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5360; + this.match(PostgreSqlParser.KW_TO); + this.state = 5361; + this.qualified_name(); + this.state = 5363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 6) { + if (_la === 103) { { + this.state = 5362; + this.where_clause(); + } + } + + this.state = 5365; + this.match(PostgreSqlParser.KW_DO); + this.state = 5367; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 137 || _la === 242) { { - this.state = 7397; - this.match(PostgreSqlParser.COMMA); - this.state = 7398; - this.operator_def_elem(); + this.state = 5366; + _la = this.tokenStream.LA(1); + if(!(_la === 137 || _la === 242)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } } - this.state = 7403; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; } - } - finally { - this.exitRule(); - } - return localContext; - } - public operator_def_elem(): Operator_def_elemContext { - let localContext = new Operator_def_elemContext(this.context, this.state); - this.enterRule(localContext, 780, PostgreSqlParser.RULE_operator_def_elem); - try { - this.state = 7412; + + this.state = 5385; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 679, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 660, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 7404; - this.collabel(); - this.state = 7405; - this.match(PostgreSqlParser.EQUAL); - this.state = 7406; - this.match(PostgreSqlParser.KW_NONE); + this.state = 5369; + this.match(PostgreSqlParser.KW_NOTHING); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 7408; - this.collabel(); - this.state = 7409; - this.match(PostgreSqlParser.EQUAL); - this.state = 7410; - this.operator_def_arg(); + this.state = 5370; + this.ruleactionstmt(); + } + break; + case 3: + { + this.state = 5371; + this.match(PostgreSqlParser.OPEN_PAREN); + { + this.state = 5373; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { + { + this.state = 5372; + this.ruleactionstmt(); + } + } + + this.state = 5381; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 7) { + { + { + this.state = 5375; + this.match(PostgreSqlParser.SEMI); + this.state = 5377; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { + { + this.state = 5376; + this.ruleactionstmt(); + } + } + + } + } + this.state = 5383; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 5384; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -33785,46 +29310,46 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public operator_def_arg(): Operator_def_argContext { - let localContext = new Operator_def_argContext(this.context, this.state); - this.enterRule(localContext, 782, PostgreSqlParser.RULE_operator_def_arg); + public ruleactionstmt(): RuleactionstmtContext { + let localContext = new RuleactionstmtContext(this.context, this.state); + this.enterRule(localContext, 458, PostgreSqlParser.RULE_ruleactionstmt); try { - this.state = 7419; + this.state = 5392; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 680, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 661, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7414; - this.func_type(); + this.state = 5387; + this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7415; - this.reserved_keyword(); + this.state = 5388; + this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7416; - this.qual_all_op(); + this.state = 5389; + this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7417; - this.numericonly(); + this.state = 5390; + this.deletestmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7418; - this.sconst(); + this.state = 5391; + this.notifystmt(); } break; } @@ -33843,545 +29368,27 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public altertypestmt(): AltertypestmtContext { - let localContext = new AltertypestmtContext(this.context, this.state); - this.enterRule(localContext, 784, PostgreSqlParser.RULE_altertypestmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7421; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7422; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 7423; - this.any_name(); - this.state = 7424; - this.match(PostgreSqlParser.KW_SET); - this.state = 7425; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7426; - this.operator_def_list(); - this.state = 7427; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterownerstmt(): AlterownerstmtContext { - let localContext = new AlterownerstmtContext(this.context, this.state); - this.enterRule(localContext, 786, PostgreSqlParser.RULE_alterownerstmt); - let _la: number; - try { - this.state = 7614; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 682, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 7429; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7430; - this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 7431; - this.aggregate_with_argtypes(); - this.state = 7432; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7433; - this.match(PostgreSqlParser.KW_TO); - this.state = 7434; - this.rolespec(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 7436; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7437; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 7438; - this.any_name(); - this.state = 7439; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7440; - this.match(PostgreSqlParser.KW_TO); - this.state = 7441; - this.rolespec(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7443; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7444; - this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 7445; - this.any_name(); - this.state = 7446; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7447; - this.match(PostgreSqlParser.KW_TO); - this.state = 7448; - this.rolespec(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7450; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7451; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 7452; - this.database_name(); - this.state = 7453; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7454; - this.match(PostgreSqlParser.KW_TO); - this.state = 7455; - this.rolespec(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 7457; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7458; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 7459; - this.any_name(); - this.state = 7460; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7461; - this.match(PostgreSqlParser.KW_TO); - this.state = 7462; - this.rolespec(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 7464; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7465; - this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 7466; - this.function_with_argtypes(); - this.state = 7467; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7468; - this.match(PostgreSqlParser.KW_TO); - this.state = 7469; - this.rolespec(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 7471; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7473; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 295) { - { - this.state = 7472; - this.opt_procedural(); - } - } - - this.state = 7475; - this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 7476; - this.name(); - this.state = 7477; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7478; - this.match(PostgreSqlParser.KW_TO); - this.state = 7479; - this.rolespec(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 7481; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7482; - this.match(PostgreSqlParser.KW_LARGE); - this.state = 7483; - this.match(PostgreSqlParser.KW_OBJECT); - this.state = 7484; - this.numericonly(); - this.state = 7485; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7486; - this.match(PostgreSqlParser.KW_TO); - this.state = 7487; - this.rolespec(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 7489; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7490; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7491; - this.operator_with_argtypes(); - this.state = 7492; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7493; - this.match(PostgreSqlParser.KW_TO); - this.state = 7494; - this.rolespec(); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 7496; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7497; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7498; - this.match(PostgreSqlParser.KW_CLASS); - this.state = 7499; - this.any_name(); - this.state = 7500; - this.match(PostgreSqlParser.KW_USING); - this.state = 7501; - this.name(); - this.state = 7502; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7503; - this.match(PostgreSqlParser.KW_TO); - this.state = 7504; - this.rolespec(); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 7506; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7507; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7508; - this.match(PostgreSqlParser.KW_FAMILY); - this.state = 7509; - this.any_name(); - this.state = 7510; - this.match(PostgreSqlParser.KW_USING); - this.state = 7511; - this.name(); - this.state = 7512; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7513; - this.match(PostgreSqlParser.KW_TO); - this.state = 7514; - this.rolespec(); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 7516; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7517; - this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 7518; - this.procedure_with_argtypes(); - this.state = 7519; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7520; - this.match(PostgreSqlParser.KW_TO); - this.state = 7521; - this.rolespec(); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 7523; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7524; - this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 7525; - this.routine_with_argtypes(); - this.state = 7526; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7527; - this.match(PostgreSqlParser.KW_TO); - this.state = 7528; - this.rolespec(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 7530; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7531; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 7532; - this.schema_name(); - this.state = 7533; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7534; - this.match(PostgreSqlParser.KW_TO); - this.state = 7535; - this.rolespec(); - } - break; - case 15: - this.enterOuterAlt(localContext, 15); - { - this.state = 7537; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7538; - this.match(PostgreSqlParser.KW_TYPE); - this.state = 7539; - this.any_name(); - this.state = 7540; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7541; - this.match(PostgreSqlParser.KW_TO); - this.state = 7542; - this.rolespec(); - } - break; - case 16: - this.enterOuterAlt(localContext, 16); - { - this.state = 7544; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7545; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 7546; - this.tablespace_name(); - this.state = 7547; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7548; - this.match(PostgreSqlParser.KW_TO); - this.state = 7549; - this.rolespec(); - } - break; - case 17: - this.enterOuterAlt(localContext, 17); - { - this.state = 7551; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7552; - this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 7553; - this.any_name(); - this.state = 7554; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7555; - this.match(PostgreSqlParser.KW_TO); - this.state = 7556; - this.rolespec(); - } - break; - case 18: - this.enterOuterAlt(localContext, 18); - { - this.state = 7558; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7559; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7560; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7561; - this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 7562; - this.any_name(); - this.state = 7563; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7564; - this.match(PostgreSqlParser.KW_TO); - this.state = 7565; - this.rolespec(); - } - break; - case 19: - this.enterOuterAlt(localContext, 19); - { - this.state = 7567; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7568; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 7569; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 7570; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 7571; - this.any_name(); - this.state = 7572; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7573; - this.match(PostgreSqlParser.KW_TO); - this.state = 7574; - this.rolespec(); - } - break; - case 20: - this.enterOuterAlt(localContext, 20); - { - this.state = 7576; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7577; - this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 7578; - this.match(PostgreSqlParser.KW_DATA); - this.state = 7579; - this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 7580; - this.name(); - this.state = 7581; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7582; - this.match(PostgreSqlParser.KW_TO); - this.state = 7583; - this.rolespec(); - } - break; - case 21: - this.enterOuterAlt(localContext, 21); - { - this.state = 7585; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7586; - this.match(PostgreSqlParser.KW_SERVER); - this.state = 7587; - this.name(); - this.state = 7588; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7589; - this.match(PostgreSqlParser.KW_TO); - this.state = 7590; - this.rolespec(); - } - break; - case 22: - this.enterOuterAlt(localContext, 22); - { - this.state = 7592; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7593; - this.match(PostgreSqlParser.KW_EVENT); - this.state = 7594; - this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 7595; - this.name(); - this.state = 7596; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7597; - this.match(PostgreSqlParser.KW_TO); - this.state = 7598; - this.rolespec(); - } - break; - case 23: - this.enterOuterAlt(localContext, 23); - { - this.state = 7600; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7601; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7602; - this.name(); - this.state = 7603; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7604; - this.match(PostgreSqlParser.KW_TO); - this.state = 7605; - this.rolespec(); - } - break; - case 24: - this.enterOuterAlt(localContext, 24); - { - this.state = 7607; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7608; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7609; - this.name(); - this.state = 7610; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7611; - this.match(PostgreSqlParser.KW_TO); - this.state = 7612; - this.rolespec(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createpublicationstmt(): CreatepublicationstmtContext { - let localContext = new CreatepublicationstmtContext(this.context, this.state); - this.enterRule(localContext, 788, PostgreSqlParser.RULE_createpublicationstmt); + public notifystmt(): NotifystmtContext { + let localContext = new NotifystmtContext(this.context, this.state); + this.enterRule(localContext, 460, PostgreSqlParser.RULE_notifystmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7616; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 7617; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7618; - this.name(); - this.state = 7620; + this.state = 5394; + this.match(PostgreSqlParser.KW_NOTIFY); + this.state = 5395; + this.colid(); + this.state = 5397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 62) { + if (_la === 6) { { - this.state = 7619; - this.opt_publication_for_tables(); + this.state = 5396; + this.notify_payload(); } } - this.state = 7623; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 684, this.context) ) { - case 1: - { - this.state = 7622; - this.opt_definition(); - } - break; - } } } catch (re) { @@ -34398,14 +29405,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_publication_for_tables(): Opt_publication_for_tablesContext { - let localContext = new Opt_publication_for_tablesContext(this.context, this.state); - this.enterRule(localContext, 790, PostgreSqlParser.RULE_opt_publication_for_tables); + public notify_payload(): Notify_payloadContext { + let localContext = new Notify_payloadContext(this.context, this.state); + this.enterRule(localContext, 462, PostgreSqlParser.RULE_notify_payload); try { this.enterOuterAlt(localContext, 1); { - this.state = 7625; - this.publication_for_tables(); + this.state = 5399; + this.match(PostgreSqlParser.COMMA); + this.state = 5400; + this.sconst(); } } catch (re) { @@ -34422,35 +29431,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public publication_for_tables(): Publication_for_tablesContext { - let localContext = new Publication_for_tablesContext(this.context, this.state); - this.enterRule(localContext, 792, PostgreSqlParser.RULE_publication_for_tables); + public listenstmt(): ListenstmtContext { + let localContext = new ListenstmtContext(this.context, this.state); + this.enterRule(localContext, 464, PostgreSqlParser.RULE_listenstmt); try { - this.state = 7633; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 685, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 7627; - this.match(PostgreSqlParser.KW_FOR); - this.state = 7628; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 7629; - this.relation_expr_list(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 7630; - this.match(PostgreSqlParser.KW_FOR); - this.state = 7631; - this.match(PostgreSqlParser.KW_ALL); - this.state = 7632; - this.match(PostgreSqlParser.KW_TABLES); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 5402; + this.match(PostgreSqlParser.KW_LISTEN); + this.state = 5403; + this.colid(); } } catch (re) { @@ -34467,218 +29457,430 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterpublicationstmt(): AlterpublicationstmtContext { - let localContext = new AlterpublicationstmtContext(this.context, this.state); - this.enterRule(localContext, 794, PostgreSqlParser.RULE_alterpublicationstmt); + public unlistenstmt(): UnlistenstmtContext { + let localContext = new UnlistenstmtContext(this.context, this.state); + this.enterRule(localContext, 466, PostgreSqlParser.RULE_unlistenstmt); try { - this.state = 7673; + this.enterOuterAlt(localContext, 1); + { + this.state = 5405; + this.match(PostgreSqlParser.KW_UNLISTEN); + this.state = 5408; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 686, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 7635; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7636; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7637; - this.name(); - this.state = 7638; - this.match(PostgreSqlParser.KW_SET); - this.state = 7639; - this.definition(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 7641; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7642; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7643; - this.name(); - this.state = 7644; - this.match(PostgreSqlParser.KW_ADD); - this.state = 7645; - this.publication_relation_expr_list(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7647; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7648; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7649; - this.name(); - this.state = 7650; - this.match(PostgreSqlParser.KW_SET); - this.state = 7651; - this.publication_relation_expr_list(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7653; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7654; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7655; - this.name(); - this.state = 7656; - this.match(PostgreSqlParser.KW_DROP); - this.state = 7657; - this.publication_relation_expr_list(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 7659; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7660; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7661; - this.name(); - this.state = 7662; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7663; - this.match(PostgreSqlParser.KW_TO); - this.state = 7664; - this.rolespec(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 7666; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7667; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7668; - this.name(); - this.state = 7669; - this.match(PostgreSqlParser.KW_RENAME); - this.state = 7670; - this.match(PostgreSqlParser.KW_TO); - this.state = 7671; - this.name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createsubscriptionstmt(): CreatesubscriptionstmtContext { - let localContext = new CreatesubscriptionstmtContext(this.context, this.state); - this.enterRule(localContext, 796, PostgreSqlParser.RULE_createsubscriptionstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7675; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 7676; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7677; - this.name(); - this.state = 7678; - this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 7679; - this.sconst(); - this.state = 7680; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7681; - this.publication_name_list(); - this.state = 7683; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 687, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 7682; - this.opt_definition(); + this.state = 5406; + this.colid(); } break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public publication_name_list(): Publication_name_listContext { - let localContext = new Publication_name_listContext(this.context, this.state); - this.enterRule(localContext, 798, PostgreSqlParser.RULE_publication_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7685; - this.publication_name_item(); - this.state = 7690; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { + case PostgreSqlParser.STAR: { - this.state = 7686; - this.match(PostgreSqlParser.COMMA); - this.state = 7687; - this.publication_name_item(); - } + this.state = 5407; + this.match(PostgreSqlParser.STAR); } - this.state = 7692; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + break; + default: + throw new antlr.NoViableAltException(this); } - } - finally { - this.exitRule(); - } - return localContext; - } - public publication_name_item(): Publication_name_itemContext { - let localContext = new Publication_name_itemContext(this.context, this.state); - this.enterRule(localContext, 800, PostgreSqlParser.RULE_publication_name_item); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7693; - this.collabel(); } } catch (re) { @@ -34695,224 +29897,192 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public altersubscriptionstmt(): AltersubscriptionstmtContext { - let localContext = new AltersubscriptionstmtContext(this.context, this.state); - this.enterRule(localContext, 802, PostgreSqlParser.RULE_altersubscriptionstmt); + public transactionstmt(): TransactionstmtContext { + let localContext = new TransactionstmtContext(this.context, this.state); + this.enterRule(localContext, 468, PostgreSqlParser.RULE_transactionstmt); + let _la: number; try { - this.state = 7773; + this.state = 5455; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 693, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 673, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7695; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7696; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7697; - this.name(); - this.state = 7698; - this.match(PostgreSqlParser.KW_SET); - this.state = 7699; - this.definition(); + this.state = 5410; + this.match(PostgreSqlParser.KW_BEGIN); + this.state = 5412; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 664, this.context) ) { + case 1: + { + this.state = 5411; + this.opt_transaction(); + } + break; + } + this.state = 5415; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 665, this.context) ) { + case 1: + { + this.state = 5414; + this.transaction_mode_list(); + } + break; + } } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7701; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7702; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7703; - this.name(); - this.state = 7704; - this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 7705; - this.sconst(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7707; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7708; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7709; - this.name(); - this.state = 7710; - this.match(PostgreSqlParser.KW_REFRESH); - this.state = 7711; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7713; + this.state = 5417; + this.match(PostgreSqlParser.KW_START); + this.state = 5418; + this.match(PostgreSqlParser.KW_TRANSACTION); + this.state = 5420; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 689, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 666, this.context) ) { case 1: { - this.state = 7712; - this.opt_definition(); + this.state = 5419; + this.transaction_mode_list(); } break; } } break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 5422; + this.match(PostgreSqlParser.KW_SAVEPOINT); + this.state = 5423; + this.colid(); + } + break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7715; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7716; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7717; - this.name(); - this.state = 7718; - this.match(PostgreSqlParser.KW_SET); - this.state = 7719; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7720; - this.publication_name_list(); - this.state = 7722; + this.state = 5424; + this.match(PostgreSqlParser.KW_RELEASE); + this.state = 5426; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 690, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 667, this.context) ) { case 1: { - this.state = 7721; - this.opt_definition(); + this.state = 5425; + this.match(PostgreSqlParser.KW_SAVEPOINT); } break; } + this.state = 5428; + this.colid(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7724; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7725; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7726; - this.name(); - this.state = 7727; - this.match(PostgreSqlParser.KW_ADD); - this.state = 7728; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7729; - this.publication_name_list(); - this.state = 7731; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 691, this.context) ) { - case 1: - { - this.state = 7730; - this.opt_definition(); - } - break; - } + this.state = 5429; + this.match(PostgreSqlParser.KW_PREPARE); + this.state = 5430; + this.match(PostgreSqlParser.KW_TRANSACTION); + this.state = 5431; + this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7733; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7734; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7735; - this.name(); - this.state = 7736; - this.match(PostgreSqlParser.KW_DROP); - this.state = 7737; - this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 7738; - this.publication_name_list(); - this.state = 7740; + this.state = 5432; + _la = this.tokenStream.LA(1); + if(!(_la === 161 || _la === 319)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5433; + this.match(PostgreSqlParser.KW_PREPARED); + this.state = 5434; + this.sconst(); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 5435; + _la = this.tokenStream.LA(1); + if(!(_la === 129 || _la === 161 || _la === 319 || _la === 454)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5437; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 692, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 668, this.context) ) { case 1: { - this.state = 7739; - this.opt_definition(); + this.state = 5436; + this.opt_transaction(); } break; } + this.state = 5444; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 670, this.context) ) { + case 1: + { + this.state = 5439; + this.match(PostgreSqlParser.KW_AND); + this.state = 5441; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 5440; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 5443; + this.match(PostgreSqlParser.KW_CHAIN); + } + break; } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 7742; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7743; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7744; - this.name(); - this.state = 7745; - this.match(PostgreSqlParser.KW_ENABLE); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7747; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7748; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7749; - this.name(); - this.state = 7750; - this.match(PostgreSqlParser.KW_DISABLE); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 7752; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7753; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7754; - this.name(); - this.state = 7755; - this.match(PostgreSqlParser.KW_SET); - this.state = 7756; - this.definition(); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 7758; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7759; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7760; - this.name(); - this.state = 7761; - this.match(PostgreSqlParser.KW_SKIP); - this.state = 7762; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7763; - this.old_aggr_elem(); - this.state = 7764; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 5446; + this.match(PostgreSqlParser.KW_ROLLBACK); + this.state = 5448; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 356 || _la === 380) { + { + this.state = 5447; + this.opt_transaction(); + } } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 7766; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 7767; - this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 7768; - this.name(); - this.state = 7769; - this.match(PostgreSqlParser.KW_OWNER); - this.state = 7770; + + this.state = 5450; this.match(PostgreSqlParser.KW_TO); - this.state = 7771; - this.rolespec(); + this.state = 5452; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 672, this.context) ) { + case 1: + { + this.state = 5451; + this.match(PostgreSqlParser.KW_SAVEPOINT); + } + break; + } + this.state = 5454; + this.colid(); } break; } @@ -34931,63 +30101,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public rulestmt(): RulestmtContext { - let localContext = new RulestmtContext(this.context, this.state); - this.enterRule(localContext, 804, PostgreSqlParser.RULE_rulestmt); + public opt_transaction(): Opt_transactionContext { + let localContext = new Opt_transactionContext(this.context, this.state); + this.enterRule(localContext, 470, PostgreSqlParser.RULE_opt_transaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7775; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 7777; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 82) { - { - this.state = 7776; - this.opt_or_replace(); - } - } - - this.state = 7779; - this.match(PostgreSqlParser.KW_RULE); - this.state = 7780; - this.name(); - this.state = 7781; - this.match(PostgreSqlParser.KW_AS); - this.state = 7782; - this.match(PostgreSqlParser.KW_ON); - this.state = 7783; - this.event(); - this.state = 7784; - this.match(PostgreSqlParser.KW_TO); - this.state = 7785; - this.qualified_name(); - this.state = 7787; - this.errorHandler.sync(this); + this.state = 5457; _la = this.tokenStream.LA(1); - if (_la === 103) { - { - this.state = 7786; - this.where_clause(); - } + if(!(_la === 356 || _la === 380)) { + this.errorHandler.recoverInline(this); } - - this.state = 7789; - this.match(PostgreSqlParser.KW_DO); - this.state = 7791; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 137 || _la === 242) { - { - this.state = 7790; - this.opt_instead(); - } + else { + this.errorHandler.reportMatch(this); + this.consume(); } - - this.state = 7793; - this.ruleactionlist(); } } catch (re) { @@ -35004,38 +30133,61 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public ruleactionlist(): RuleactionlistContext { - let localContext = new RuleactionlistContext(this.context, this.state); - this.enterRule(localContext, 806, PostgreSqlParser.RULE_ruleactionlist); + public transaction_mode_item(): Transaction_mode_itemContext { + let localContext = new Transaction_mode_itemContext(this.context, this.state); + this.enterRule(localContext, 472, PostgreSqlParser.RULE_transaction_mode_item); + let _la: number; try { - this.state = 7801; + this.state = 5468; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 697, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ISOLATION: this.enterOuterAlt(localContext, 1); { - this.state = 7795; - this.match(PostgreSqlParser.KW_NOTHING); + this.state = 5459; + this.match(PostgreSqlParser.KW_ISOLATION); + this.state = 5460; + this.match(PostgreSqlParser.KW_LEVEL); + this.state = 5461; + this.iso_level(); } break; - case 2: + case PostgreSqlParser.KW_READ: this.enterOuterAlt(localContext, 2); { - this.state = 7796; - this.ruleactionstmt(); + this.state = 5462; + this.match(PostgreSqlParser.KW_READ); + this.state = 5463; + _la = this.tokenStream.LA(1); + if(!(_la === 81 || _la === 382)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; - case 3: + case PostgreSqlParser.KW_DEFERRABLE: + case PostgreSqlParser.KW_NOT: this.enterOuterAlt(localContext, 3); { - this.state = 7797; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7798; - this.ruleactionmulti(); - this.state = 7799; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 5465; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 5464; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 5467; + this.match(PostgreSqlParser.KW_DEFERRABLE); } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -35052,46 +30204,41 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public ruleactionmulti(): RuleactionmultiContext { - let localContext = new RuleactionmultiContext(this.context, this.state); - this.enterRule(localContext, 808, PostgreSqlParser.RULE_ruleactionmulti); + public transaction_mode_list(): Transaction_mode_listContext { + let localContext = new Transaction_mode_listContext(this.context, this.state); + this.enterRule(localContext, 474, PostgreSqlParser.RULE_transaction_mode_list); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7804; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { - { - this.state = 7803; - this.ruleactionstmtOrEmpty(); - } - } - - this.state = 7812; + this.state = 5470; + this.transaction_mode_item(); + this.state = 5477; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 7) { - { - { - this.state = 7806; - this.match(PostgreSqlParser.SEMI); - this.state = 7808; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { + alternative = this.interpreter.adaptivePredict(this.tokenStream, 677, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { { - this.state = 7807; - this.ruleactionstmtOrEmpty(); + this.state = 5472; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 5471; + this.match(PostgreSqlParser.COMMA); + } } - } + this.state = 5474; + this.transaction_mode_item(); + } + } } - } - this.state = 7814; + this.state = 5479; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 677, this.context); } } } @@ -35109,72 +30256,129 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public ruleactionstmt(): RuleactionstmtContext { - let localContext = new RuleactionstmtContext(this.context, this.state); - this.enterRule(localContext, 810, PostgreSqlParser.RULE_ruleactionstmt); + public viewstmt(): ViewstmtContext { + let localContext = new ViewstmtContext(this.context, this.state); + this.enterRule(localContext, 476, PostgreSqlParser.RULE_viewstmt); + let _la: number; try { - this.state = 7820; + localContext = new CreateViewContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 5480; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5483; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 701, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 82) { { - this.state = 7815; - this.selectstmt(); + this.state = 5481; + this.match(PostgreSqlParser.KW_OR); + this.state = 5482; + this.match(PostgreSqlParser.KW_REPLACE); } - break; - case 2: - this.enterOuterAlt(localContext, 2); + } + + this.state = 5486; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 7816; - this.insertstmt(); + this.state = 5485; + this.opttemp(); } - break; - case 3: - this.enterOuterAlt(localContext, 3); + } + + this.state = 5503; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_VIEW: { - this.state = 7817; - this.updatestmt(); + this.state = 5488; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 5489; + this.view_name_create(); + this.state = 5491; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 5490; + this.opt_column_list_create(); + } + } + + this.state = 5494; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 5493; + this.opt_reloptions(); + } + } + } break; - case 4: - this.enterOuterAlt(localContext, 4); + case PostgreSqlParser.KW_RECURSIVE: { - this.state = 7818; - this.deletestmt(); + this.state = 5496; + this.match(PostgreSqlParser.KW_RECURSIVE); + this.state = 5497; + this.match(PostgreSqlParser.KW_VIEW); + this.state = 5498; + this.view_name_create(); + this.state = 5499; + this.opt_column_list(); + this.state = 5501; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 5500; + this.opt_reloptions(); + } + } + } break; - case 5: - this.enterOuterAlt(localContext, 5); + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5505; + this.match(PostgreSqlParser.KW_AS); + this.state = 5506; + this.selectstmt(); + this.state = 5513; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 685, this.context) ) { + case 1: { - this.state = 7819; - this.notifystmt(); + this.state = 5507; + this.match(PostgreSqlParser.KW_WITH); + this.state = 5509; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151 || _la === 254) { + { + this.state = 5508; + _la = this.tokenStream.LA(1); + if(!(_la === 151 || _la === 254)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 5511; + this.match(PostgreSqlParser.KW_CHECK); + this.state = 5512; + this.match(PostgreSqlParser.KW_OPTION); } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public ruleactionstmtOrEmpty(): RuleactionstmtOrEmptyContext { - let localContext = new RuleactionstmtOrEmptyContext(this.context, this.state); - this.enterRule(localContext, 812, PostgreSqlParser.RULE_ruleactionstmtOrEmpty); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7822; - this.ruleactionstmt(); } } catch (re) { @@ -35191,22 +30395,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public event(): EventContext { - let localContext = new EventContext(this.context, this.state); - this.enterRule(localContext, 814, PostgreSqlParser.RULE_event); - let _la: number; + public loadstmt(): LoadstmtContext { + let localContext = new LoadstmtContext(this.context, this.state); + this.enterRule(localContext, 478, PostgreSqlParser.RULE_loadstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 7824; - _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 182 || _la === 241 || _la === 369)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 5515; + this.match(PostgreSqlParser.KW_LOAD); + this.state = 5516; + this.sconst(); } } catch (re) { @@ -35223,21 +30421,57 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_instead(): Opt_insteadContext { - let localContext = new Opt_insteadContext(this.context, this.state); - this.enterRule(localContext, 816, PostgreSqlParser.RULE_opt_instead); - let _la: number; + public createdbstmt(): CreatedbstmtContext { + let localContext = new CreatedbstmtContext(this.context, this.state); + this.enterRule(localContext, 480, PostgreSqlParser.RULE_createdbstmt); try { + let alternative: number; + localContext = new CreateDatabaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7826; - _la = this.tokenStream.LA(1); - if(!(_la === 137 || _la === 242)) { - this.errorHandler.recoverInline(this); + this.state = 5518; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5519; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 5520; + this.database_name_create(); + this.state = 5522; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 686, this.context) ) { + case 1: + { + this.state = 5521; + this.match(PostgreSqlParser.KW_WITH); + } + break; } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 5529; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 688, this.context) ) { + case 1: + { + this.state = 5525; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 5524; + this.createdb_opt_item(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5527; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 687, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } + break; } } } @@ -35255,27 +30489,260 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public notifystmt(): NotifystmtContext { - let localContext = new NotifystmtContext(this.context, this.state); - this.enterRule(localContext, 818, PostgreSqlParser.RULE_notifystmt); + public createdb_opt_item(): Createdb_opt_itemContext { + let localContext = new Createdb_opt_itemContext(this.context, this.state); + this.enterRule(localContext, 482, PostgreSqlParser.RULE_createdb_opt_item); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7828; - this.match(PostgreSqlParser.KW_NOTIFY); - this.state = 7829; - this.colid(); - this.state = 7831; + this.state = 5539; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_CONNECTION: { - this.state = 7830; - this.notify_payload(); - } - } + this.state = 5531; + this.match(PostgreSqlParser.KW_CONNECTION); + this.state = 5532; + this.match(PostgreSqlParser.KW_LIMIT); + } + break; + case PostgreSqlParser.KW_ENCODING: + { + this.state = 5533; + this.match(PostgreSqlParser.KW_ENCODING); + } + break; + case PostgreSqlParser.KW_LOCATION: + { + this.state = 5534; + this.match(PostgreSqlParser.KW_LOCATION); + } + break; + case PostgreSqlParser.KW_OWNER: + { + this.state = 5535; + this.match(PostgreSqlParser.KW_OWNER); + } + break; + case PostgreSqlParser.KW_TABLESPACE: + { + this.state = 5536; + this.match(PostgreSqlParser.KW_TABLESPACE); + } + break; + case PostgreSqlParser.KW_TEMPLATE: + { + this.state = 5537; + this.match(PostgreSqlParser.KW_TEMPLATE); + } + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 5538; + this.identifier(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5542; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 10) { + { + this.state = 5541; + this.match(PostgreSqlParser.EQUAL); + } + } + + this.state = 5547; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 691, this.context) ) { + case 1: + { + this.state = 5544; + this.signediconst(); + } + break; + case 2: + { + this.state = 5545; + this.opt_boolean_or_string(); + } + break; + case 3: + { + this.state = 5546; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public alterdatabasestmt(): AlterdatabasestmtContext { + let localContext = new AlterdatabasestmtContext(this.context, this.state); + this.enterRule(localContext, 484, PostgreSqlParser.RULE_alterdatabasestmt); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 5549; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5550; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 5551; + this.database_name(); + this.state = 5567; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 696, this.context) ) { + case 1: + { + this.state = 5555; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 692, this.context) ) { + case 1: + { + this.state = 5552; + this.match(PostgreSqlParser.KW_SET); + this.state = 5553; + this.match(PostgreSqlParser.KW_TABLESPACE); + this.state = 5554; + this.tablespace_name_create(); + } + break; + } + } + break; + case 2: + { + this.state = 5565; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 695, this.context) ) { + case 1: + { + this.state = 5558; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 5557; + this.match(PostgreSqlParser.KW_WITH); + } + } + this.state = 5561; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 5560; + this.createdb_opt_item(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5563; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 694, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } + break; + } + } + break; + } } } catch (re) { @@ -35292,16 +30759,28 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public notify_payload(): Notify_payloadContext { - let localContext = new Notify_payloadContext(this.context, this.state); - this.enterRule(localContext, 820, PostgreSqlParser.RULE_notify_payload); + public alterdatabasesetstmt(): AlterdatabasesetstmtContext { + let localContext = new AlterdatabasesetstmtContext(this.context, this.state); + this.enterRule(localContext, 486, PostgreSqlParser.RULE_alterdatabasesetstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 7833; - this.match(PostgreSqlParser.COMMA); - this.state = 7834; - this.sconst(); + this.state = 5569; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5570; + this.match(PostgreSqlParser.KW_DATABASE); + this.state = 5571; + this.database_name(); + this.state = 5573; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 697, this.context) ) { + case 1: + { + this.state = 5572; + this.setresetclause(); + } + break; + } } } catch (re) { @@ -35318,16 +30797,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public listenstmt(): ListenstmtContext { - let localContext = new ListenstmtContext(this.context, this.state); - this.enterRule(localContext, 822, PostgreSqlParser.RULE_listenstmt); + public altercollationstmt(): AltercollationstmtContext { + let localContext = new AltercollationstmtContext(this.context, this.state); + this.enterRule(localContext, 488, PostgreSqlParser.RULE_altercollationstmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 7836; - this.match(PostgreSqlParser.KW_LISTEN); - this.state = 7837; - this.colid(); + this.state = 5575; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5576; + this.match(PostgreSqlParser.KW_COLLATION); + this.state = 5577; + this.any_name(); + this.state = 5578; + this.match(PostgreSqlParser.KW_REFRESH); + this.state = 5579; + this.match(PostgreSqlParser.KW_VERSION); } } catch (re) { @@ -35344,31 +30829,86 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public unlistenstmt(): UnlistenstmtContext { - let localContext = new UnlistenstmtContext(this.context, this.state); - this.enterRule(localContext, 824, PostgreSqlParser.RULE_unlistenstmt); + public altersystemstmt(): AltersystemstmtContext { + let localContext = new AltersystemstmtContext(this.context, this.state); + this.enterRule(localContext, 490, PostgreSqlParser.RULE_altersystemstmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 5581; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5582; + this.match(PostgreSqlParser.KW_SYSTEM); + this.state = 5583; + _la = this.tokenStream.LA(1); + if(!(_la === 313 || _la === 333)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5584; + this.generic_set(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createdomainstmt(): CreatedomainstmtContext { + let localContext = new CreatedomainstmtContext(this.context, this.state); + this.enterRule(localContext, 492, PostgreSqlParser.RULE_createdomainstmt); + let _la: number; try { - this.state = 7843; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 5586; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5587; + this.match(PostgreSqlParser.KW_DOMAIN); + this.state = 5588; + this.any_name(); + this.state = 5590; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 703, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 36) { { - this.state = 7839; - this.match(PostgreSqlParser.KW_UNLISTEN); - this.state = 7840; - this.colid(); + this.state = 5589; + this.match(PostgreSqlParser.KW_AS); } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 7841; - this.match(PostgreSqlParser.KW_UNLISTEN); - this.state = 7842; - this.match(PostgreSqlParser.STAR); + } + + this.state = 5592; + this.typename(); + this.state = 5596; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 5593; + this.colconstraint(); + } + } } - break; + this.state = 5598; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); + } } } catch (re) { @@ -35385,260 +30925,106 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public transactionstmt(): TransactionstmtContext { - let localContext = new TransactionstmtContext(this.context, this.state); - this.enterRule(localContext, 826, PostgreSqlParser.RULE_transactionstmt); + public alterdomainstmt(): AlterdomainstmtContext { + let localContext = new AlterdomainstmtContext(this.context, this.state); + this.enterRule(localContext, 494, PostgreSqlParser.RULE_alterdomainstmt); let _la: number; try { - this.state = 7910; + this.enterOuterAlt(localContext, 1); + { + this.state = 5599; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5600; + this.match(PostgreSqlParser.KW_DOMAIN); + this.state = 5601; + this.any_name(); + this.state = 5624; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 718, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 703, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 7845; - this.match(PostgreSqlParser.KW_ABORT); - this.state = 7847; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 704, this.context) ) { - case 1: - { - this.state = 7846; - this.opt_transaction(); - } - break; - } - this.state = 7850; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 705, this.context) ) { - case 1: - { - this.state = 7849; - this.opt_transaction_chain(); - } - break; - } + this.state = 5602; + this.alter_column_default(); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 7852; - this.match(PostgreSqlParser.KW_BEGIN); - this.state = 7854; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 706, this.context) ) { - case 1: - { - this.state = 7853; - this.opt_transaction(); - } - break; + this.state = 5603; + _la = this.tokenStream.LA(1); + if(!(_la === 191 || _la === 333)) { + this.errorHandler.recoverInline(this); } - this.state = 7857; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 707, this.context) ) { - case 1: - { - this.state = 7856; - this.transaction_mode_list_or_empty(); - } - break; + else { + this.errorHandler.reportMatch(this); + this.consume(); } + this.state = 5604; + this.match(PostgreSqlParser.KW_NOT); + this.state = 5605; + this.match(PostgreSqlParser.KW_NULL); } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 7859; - this.match(PostgreSqlParser.KW_START); - this.state = 7860; - this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 7862; + this.state = 5606; + this.match(PostgreSqlParser.KW_ADD); + this.state = 5609; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 708, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 45) { { - this.state = 7861; - this.transaction_mode_list_or_empty(); + this.state = 5607; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 5608; + this.colid(); } - break; } + + this.state = 5611; + this.constraintelem(); } break; case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7864; - this.match(PostgreSqlParser.KW_END); - this.state = 7866; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 709, this.context) ) { - case 1: - { - this.state = 7865; - this.opt_transaction(); - } - break; - } - this.state = 7869; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 710, this.context) ) { - case 1: - { - this.state = 7868; - this.opt_transaction_chain(); - } - break; - } - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 7871; - this.match(PostgreSqlParser.KW_SAVEPOINT); - this.state = 7872; - this.colid(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); { - this.state = 7873; - this.match(PostgreSqlParser.KW_RELEASE); - this.state = 7875; + this.state = 5612; + this.match(PostgreSqlParser.KW_DROP); + this.state = 5613; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 5615; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 711, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 701, this.context) ) { case 1: { - this.state = 7874; - this.match(PostgreSqlParser.KW_SAVEPOINT); + this.state = 5614; + this.opt_if_exists(); } break; } - this.state = 7877; + this.state = 5617; this.colid(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 7878; - this.match(PostgreSqlParser.KW_PREPARE); - this.state = 7879; - this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 7880; - this.sconst(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 7881; - this.match(PostgreSqlParser.KW_COMMIT); - this.state = 7882; - this.match(PostgreSqlParser.KW_PREPARED); - this.state = 7883; - this.sconst(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 7884; - this.match(PostgreSqlParser.KW_COMMIT); - this.state = 7886; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 712, this.context) ) { - case 1: - { - this.state = 7885; - this.opt_transaction(); - } - break; - } - this.state = 7889; + this.state = 5619; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 713, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 702, this.context) ) { case 1: { - this.state = 7888; - this.opt_transaction_chain(); + this.state = 5618; + this.opt_drop_behavior(); } break; } } break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 7891; - this.match(PostgreSqlParser.KW_ROLLBACK); - this.state = 7892; - this.match(PostgreSqlParser.KW_PREPARED); - this.state = 7893; - this.sconst(); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); + case 5: { - this.state = 7894; - this.match(PostgreSqlParser.KW_ROLLBACK); - this.state = 7896; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 356 || _la === 380) { - { - this.state = 7895; - this.opt_transaction(); - } - } - - this.state = 7898; - this.match(PostgreSqlParser.KW_TO); - this.state = 7900; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 715, this.context) ) { - case 1: - { - this.state = 7899; - this.match(PostgreSqlParser.KW_SAVEPOINT); - } - break; - } - this.state = 7902; + this.state = 5621; + this.match(PostgreSqlParser.KW_VALIDATE); + this.state = 5622; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 5623; this.colid(); } break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 7903; - this.match(PostgreSqlParser.KW_ROLLBACK); - this.state = 7905; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 716, this.context) ) { - case 1: - { - this.state = 7904; - this.opt_transaction(); - } - break; - } - this.state = 7908; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 717, this.context) ) { - case 1: - { - this.state = 7907; - this.opt_transaction_chain(); - } - break; - } - } - break; + } } } catch (re) { @@ -35655,22 +31041,24 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_transaction(): Opt_transactionContext { - let localContext = new Opt_transactionContext(this.context, this.state); - this.enterRule(localContext, 828, PostgreSqlParser.RULE_opt_transaction); - let _la: number; + public altertsdictionarystmt(): AltertsdictionarystmtContext { + let localContext = new AltertsdictionarystmtContext(this.context, this.state); + this.enterRule(localContext, 496, PostgreSqlParser.RULE_altertsdictionarystmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 7912; - _la = this.tokenStream.LA(1); - if(!(_la === 356 || _la === 380)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 5626; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5627; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5628; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5629; + this.match(PostgreSqlParser.KW_DICTIONARY); + this.state = 5630; + this.any_name(); + this.state = 5631; + this.definition(); } } catch (re) { @@ -35687,56 +31075,118 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public transaction_mode_item(): Transaction_mode_itemContext { - let localContext = new Transaction_mode_itemContext(this.context, this.state); - this.enterRule(localContext, 830, PostgreSqlParser.RULE_transaction_mode_item); + public altertsconfigurationstmt(): AltertsconfigurationstmtContext { + let localContext = new AltertsconfigurationstmtContext(this.context, this.state); + this.enterRule(localContext, 498, PostgreSqlParser.RULE_altertsconfigurationstmt); + let _la: number; try { - this.state = 7924; + this.state = 5674; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 719, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 706, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7914; - this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 7915; - this.match(PostgreSqlParser.KW_LEVEL); - this.state = 7916; - this.iso_level(); + this.state = 5633; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5634; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5635; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5636; + this.match(PostgreSqlParser.KW_CONFIGURATION); + this.state = 5637; + this.any_name(); + this.state = 5638; + _la = this.tokenStream.LA(1); + if(!(_la === 133 || _la === 138)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5639; + this.match(PostgreSqlParser.KW_MAPPING); + this.state = 5640; + this.match(PostgreSqlParser.KW_FOR); + this.state = 5641; + this.name_list(); + this.state = 5642; + this.match(PostgreSqlParser.KW_WITH); + this.state = 5643; + this.any_name_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7917; - this.match(PostgreSqlParser.KW_READ); - this.state = 7918; - this.match(PostgreSqlParser.KW_ONLY); + this.state = 5645; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5646; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5647; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5648; + this.match(PostgreSqlParser.KW_CONFIGURATION); + this.state = 5649; + this.any_name(); + this.state = 5650; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5651; + this.match(PostgreSqlParser.KW_MAPPING); + this.state = 5654; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 62) { + { + this.state = 5652; + this.match(PostgreSqlParser.KW_FOR); + this.state = 5653; + this.name_list(); + } + } + + this.state = 5656; + this.match(PostgreSqlParser.KW_REPLACE); + this.state = 5657; + this.any_name(); + this.state = 5658; + this.match(PostgreSqlParser.KW_WITH); + this.state = 5659; + this.any_name(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7919; - this.match(PostgreSqlParser.KW_READ); - this.state = 7920; - this.match(PostgreSqlParser.KW_WRITE); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7921; - this.match(PostgreSqlParser.KW_DEFERRABLE); + this.state = 5661; + this.match(PostgreSqlParser.KW_ALTER); + this.state = 5662; + this.match(PostgreSqlParser.KW_TEXT); + this.state = 5663; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 5664; + this.match(PostgreSqlParser.KW_CONFIGURATION); + this.state = 5665; + this.any_name(); + this.state = 5666; + this.match(PostgreSqlParser.KW_DROP); + this.state = 5667; + this.match(PostgreSqlParser.KW_MAPPING); + this.state = 5669; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 220) { + { + this.state = 5668; + this.opt_if_exists(); + } } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 7922; - this.match(PostgreSqlParser.KW_NOT); - this.state = 7923; - this.match(PostgreSqlParser.KW_DEFERRABLE); + + this.state = 5671; + this.match(PostgreSqlParser.KW_FOR); + this.state = 5672; + this.name_list(); } break; } @@ -35755,66 +31205,41 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public transaction_mode_list(): Transaction_mode_listContext { - let localContext = new Transaction_mode_listContext(this.context, this.state); - this.enterRule(localContext, 832, PostgreSqlParser.RULE_transaction_mode_list); + public createconversionstmt(): CreateconversionstmtContext { + let localContext = new CreateconversionstmtContext(this.context, this.state); + this.enterRule(localContext, 500, PostgreSqlParser.RULE_createconversionstmt); let _la: number; try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7926; - this.transaction_mode_item(); - this.state = 7933; + this.state = 5676; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5678; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 721, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 7928; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 7927; - this.match(PostgreSqlParser.COMMA); - } - } - - this.state = 7930; - this.transaction_mode_item(); - } - } + _la = this.tokenStream.LA(1); + if (_la === 53) { + { + this.state = 5677; + this.match(PostgreSqlParser.KW_DEFAULT); } - this.state = 7935; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 721, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; } - } - finally { - this.exitRule(); - } - return localContext; - } - public transaction_mode_list_or_empty(): Transaction_mode_list_or_emptyContext { - let localContext = new Transaction_mode_list_or_emptyContext(this.context, this.state); - this.enterRule(localContext, 834, PostgreSqlParser.RULE_transaction_mode_list_or_empty); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7936; - this.transaction_mode_list(); + + this.state = 5680; + this.match(PostgreSqlParser.KW_CONVERSION); + this.state = 5681; + this.any_name(); + this.state = 5682; + this.match(PostgreSqlParser.KW_FOR); + this.state = 5683; + this.sconst(); + this.state = 5684; + this.match(PostgreSqlParser.KW_TO); + this.state = 5685; + this.sconst(); + this.state = 5686; + this.match(PostgreSqlParser.KW_FROM); + this.state = 5687; + this.any_name(); } } catch (re) { @@ -35831,27 +31256,92 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_transaction_chain(): Opt_transaction_chainContext { - let localContext = new Opt_transaction_chainContext(this.context, this.state); - this.enterRule(localContext, 836, PostgreSqlParser.RULE_opt_transaction_chain); + public clusterstmt(): ClusterstmtContext { + let localContext = new ClusterstmtContext(this.context, this.state); + this.enterRule(localContext, 502, PostgreSqlParser.RULE_clusterstmt); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7938; - this.match(PostgreSqlParser.KW_AND); - this.state = 7940; + this.state = 5714; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 713, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 7939; - this.match(PostgreSqlParser.KW_NO); + this.state = 5689; + this.match(PostgreSqlParser.KW_CLUSTER); + this.state = 5691; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 128) { + { + this.state = 5690; + this.opt_verbose(); + } } - } - this.state = 7942; - this.match(PostgreSqlParser.KW_CHAIN); + this.state = 5697; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 710, this.context) ) { + case 1: + { + this.state = 5693; + this.table_name(); + this.state = 5695; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 5694; + this.table_access_method_clause(); + } + } + + } + break; + } + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 5699; + this.match(PostgreSqlParser.KW_CLUSTER); + this.state = 5700; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5701; + this.opt_verbose(); + this.state = 5706; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 5702; + this.match(PostgreSqlParser.COMMA); + this.state = 5703; + this.opt_verbose(); + } + } + this.state = 5708; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 5709; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 5710; + this.table_name(); + this.state = 5712; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 5711; + this.table_access_method_clause(); + } + } + + } + break; } } catch (re) { @@ -35868,109 +31358,86 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public viewstmt(): ViewstmtContext { - let localContext = new ViewstmtContext(this.context, this.state); - this.enterRule(localContext, 838, PostgreSqlParser.RULE_viewstmt); + public vacuumstmt(): VacuumstmtContext { + let localContext = new VacuumstmtContext(this.context, this.state); + this.enterRule(localContext, 504, PostgreSqlParser.RULE_vacuumstmt); let _la: number; try { - localContext = new CreateViewContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7944; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 7947; + this.state = 5716; + this.match(PostgreSqlParser.KW_VACUUM); + this.state = 5732; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 82) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 719, this.context) ) { + case 1: { - this.state = 7945; - this.match(PostgreSqlParser.KW_OR); - this.state = 7946; - this.match(PostgreSqlParser.KW_REPLACE); - } - } - - this.state = 7950; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 7949; - this.opttemp(); + this.state = 5718; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 113) { + { + this.state = 5717; + this.match(PostgreSqlParser.KW_FULL); + } } - } - this.state = 7969; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_VIEW: - { - this.state = 7952; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 7953; - this.view_name_create(); - this.state = 7955; + this.state = 5721; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 2) { + if (_la === 112) { { - this.state = 7954; - this.opt_column_list_create(); + this.state = 5720; + this.match(PostgreSqlParser.KW_FREEZE); } } - this.state = 7958; + this.state = 5724; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105) { + if (_la === 128) { { - this.state = 7957; - this.opt_reloptions(); + this.state = 5723; + this.opt_verbose(); } } + this.state = 5727; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 717, this.context) ) { + case 1: + { + this.state = 5726; + this.analyze_keyword(); + } + break; + } + } } break; - case PostgreSqlParser.KW_RECURSIVE: + case 2: { - this.state = 7960; - this.match(PostgreSqlParser.KW_RECURSIVE); - this.state = 7961; - this.match(PostgreSqlParser.KW_VIEW); - this.state = 7962; - this.view_name_create(); - this.state = 7963; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7964; - this.column_list(); - this.state = 7965; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 7967; + this.state = 5730; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 718, this.context) ) { + case 1: { - this.state = 7966; - this.opt_reloptions(); + this.state = 5729; + this.explain_option_list(); } + break; } - } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 7971; - this.match(PostgreSqlParser.KW_AS); - this.state = 7972; - this.selectstmt(); - this.state = 7974; + this.state = 5735; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 729, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 720, this.context) ) { case 1: { - this.state = 7973; - this.opt_check_option(); + this.state = 5734; + this.vacuum_relation_list(); } break; } @@ -35990,108 +31457,66 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_check_option(): Opt_check_optionContext { - let localContext = new Opt_check_optionContext(this.context, this.state); - this.enterRule(localContext, 840, PostgreSqlParser.RULE_opt_check_option); + public analyzestmt(): AnalyzestmtContext { + let localContext = new AnalyzestmtContext(this.context, this.state); + this.enterRule(localContext, 506, PostgreSqlParser.RULE_analyzestmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7976; - this.match(PostgreSqlParser.KW_WITH); - this.state = 7978; + this.state = 5737; + this.analyze_keyword(); + this.state = 5752; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 151 || _la === 254) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 723, this.context) ) { + case 1: { - this.state = 7977; + this.state = 5739; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 151 || _la === 254)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + if (_la === 128) { + { + this.state = 5738; + this.opt_verbose(); + } } - } - this.state = 7980; - this.match(PostgreSqlParser.KW_CHECK); - this.state = 7981; - this.match(PostgreSqlParser.KW_OPTION); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public loadstmt(): LoadstmtContext { - let localContext = new LoadstmtContext(this.context, this.state); - this.enterRule(localContext, 842, PostgreSqlParser.RULE_loadstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7983; - this.match(PostgreSqlParser.KW_LOAD); - this.state = 7984; - this.file_name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createdbstmt(): CreatedbstmtContext { - let localContext = new CreatedbstmtContext(this.context, this.state); - this.enterRule(localContext, 844, PostgreSqlParser.RULE_createdbstmt); - try { - localContext = new CreateDatabaseContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 7986; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 7987; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 7988; - this.database_name_create(); - this.state = 7990; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 731, this.context) ) { - case 1: + } + break; + case 2: { - this.state = 7989; - this.opt_with(); + this.state = 5741; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5742; + this.analyze_option_elem(); + this.state = 5747; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 5743; + this.match(PostgreSqlParser.COMMA); + this.state = 5744; + this.analyze_option_elem(); + } + } + this.state = 5749; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 5750; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 7993; + this.state = 5755; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 732, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 724, this.context) ) { case 1: { - this.state = 7992; - this.createdb_opt_list(); + this.state = 5754; + this.vacuum_relation_list(); } break; } @@ -36111,113 +31536,21 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createdb_opt_list(): Createdb_opt_listContext { - let localContext = new Createdb_opt_listContext(this.context, this.state); - this.enterRule(localContext, 846, PostgreSqlParser.RULE_createdb_opt_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 7995; - this.createdb_opt_items(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createdb_opt_items(): Createdb_opt_itemsContext { - let localContext = new Createdb_opt_itemsContext(this.context, this.state); - this.enterRule(localContext, 848, PostgreSqlParser.RULE_createdb_opt_items); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 7998; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - { - this.state = 7997; - this.createdb_opt_item(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 8000; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 733, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createdb_opt_item(): Createdb_opt_itemContext { - let localContext = new Createdb_opt_itemContext(this.context, this.state); - this.enterRule(localContext, 850, PostgreSqlParser.RULE_createdb_opt_item); + public analyze_keyword(): Analyze_keywordContext { + let localContext = new Analyze_keywordContext(this.context, this.state); + this.enterRule(localContext, 508, PostgreSqlParser.RULE_analyze_keyword); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8002; - this.createdb_opt_name(); - this.state = 8004; - this.errorHandler.sync(this); + this.state = 5757; _la = this.tokenStream.LA(1); - if (_la === 10) { - { - this.state = 8003; - this.opt_equal(); - } + if(!(_la === 31 || _la === 32)) { + this.errorHandler.recoverInline(this); } - - this.state = 8009; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 735, this.context) ) { - case 1: - { - this.state = 8006; - this.signediconst(); - } - break; - case 2: - { - this.state = 8007; - this.opt_boolean_or_string(); - } - break; - case 3: - { - this.state = 8008; - this.match(PostgreSqlParser.KW_DEFAULT); - } - break; + else { + this.errorHandler.reportMatch(this); + this.consume(); } } } @@ -36235,57 +31568,15 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createdb_opt_name(): Createdb_opt_nameContext { - let localContext = new Createdb_opt_nameContext(this.context, this.state); - this.enterRule(localContext, 852, PostgreSqlParser.RULE_createdb_opt_name); + public vac_analyze_option_elem(): Vac_analyze_option_elemContext { + let localContext = new Vac_analyze_option_elemContext(this.context, this.state); + this.enterRule(localContext, 510, PostgreSqlParser.RULE_vac_analyze_option_elem); try { - this.state = 8019; + this.enterOuterAlt(localContext, 1); + { + this.state = 5761; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CONNECTION: - this.enterOuterAlt(localContext, 1); - { - this.state = 8011; - this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 8012; - this.match(PostgreSqlParser.KW_LIMIT); - } - break; - case PostgreSqlParser.KW_ENCODING: - this.enterOuterAlt(localContext, 2); - { - this.state = 8013; - this.match(PostgreSqlParser.KW_ENCODING); - } - break; - case PostgreSqlParser.KW_LOCATION: - this.enterOuterAlt(localContext, 3); - { - this.state = 8014; - this.match(PostgreSqlParser.KW_LOCATION); - } - break; - case PostgreSqlParser.KW_OWNER: - this.enterOuterAlt(localContext, 4); - { - this.state = 8015; - this.match(PostgreSqlParser.KW_OWNER); - } - break; - case PostgreSqlParser.KW_TABLESPACE: - this.enterOuterAlt(localContext, 5); - { - this.state = 8016; - this.match(PostgreSqlParser.KW_TABLESPACE); - } - break; - case PostgreSqlParser.KW_TEMPLATE: - this.enterOuterAlt(localContext, 6); - { - this.state = 8017; - this.match(PostgreSqlParser.KW_TEMPLATE); - } - break; case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_COLLATE: @@ -36293,34 +31584,380 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DEFAULT: case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -36349,6 +31986,8 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: case PostgreSqlParser.QuotedIdentifier: case PostgreSqlParser.UnicodeQuotedIdentifier: @@ -36358,191 +31997,466 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 7); - { - this.state = 8018; - this.identifier(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_equal(): Opt_equalContext { - let localContext = new Opt_equalContext(this.context, this.state); - this.enterRule(localContext, 854, PostgreSqlParser.RULE_opt_equal); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8021; - this.match(PostgreSqlParser.EQUAL); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterdatabasestmt(): AlterdatabasestmtContext { - let localContext = new AlterdatabasestmtContext(this.context, this.state); - this.enterRule(localContext, 856, PostgreSqlParser.RULE_alterdatabasestmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8023; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8024; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 8025; - this.database_name(); - this.state = 8037; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 740, this.context) ) { - case 1: { - this.state = 8029; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 737, this.context) ) { - case 1: - { - this.state = 8026; - this.match(PostgreSqlParser.KW_SET); - this.state = 8027; - this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 8028; - this.tablespace_name_create(); - } - break; - } + this.state = 5759; + this.nonreservedword(); } break; - case 2: + case PostgreSqlParser.KW_ANALYSE: + case PostgreSqlParser.KW_ANALYZE: { - this.state = 8035; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 739, this.context) ) { - case 1: - { - this.state = 8032; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 8031; - this.match(PostgreSqlParser.KW_WITH); - } - } - - this.state = 8034; - this.createdb_opt_list(); - } - break; - } + this.state = 5760; + this.analyze_keyword(); } break; + default: + throw new antlr.NoViableAltException(this); } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterdatabasesetstmt(): AlterdatabasesetstmtContext { - let localContext = new AlterdatabasesetstmtContext(this.context, this.state); - this.enterRule(localContext, 858, PostgreSqlParser.RULE_alterdatabasesetstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8039; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8040; - this.match(PostgreSqlParser.KW_DATABASE); - this.state = 8041; - this.database_name(); - this.state = 8043; + this.state = 5765; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 741, this.context) ) { - case 1: - { - this.state = 8042; - this.setresetclause(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public drop_option_list(): Drop_option_listContext { - let localContext = new Drop_option_listContext(this.context, this.state); - this.enterRule(localContext, 860, PostgreSqlParser.RULE_drop_option_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8045; - this.drop_option(); - this.state = 8050; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FALSE: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_ON: + case PostgreSqlParser.KW_TRUE: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 8046; - this.match(PostgreSqlParser.COMMA); - this.state = 8047; - this.drop_option(); + this.state = 5763; + this.opt_boolean_or_string(); } + break; + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.Integral: + case PostgreSqlParser.Numeric: + { + this.state = 5764; + this.numericonly(); } - this.state = 8052; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + break; + case PostgreSqlParser.CLOSE_PAREN: + case PostgreSqlParser.COMMA: + break; + default: + break; } } } @@ -36560,14 +32474,79 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public drop_option(): Drop_optionContext { - let localContext = new Drop_optionContext(this.context, this.state); - this.enterRule(localContext, 862, PostgreSqlParser.RULE_drop_option); + public analyze_option_elem(): Analyze_option_elemContext { + let localContext = new Analyze_option_elemContext(this.context, this.state); + this.enterRule(localContext, 512, PostgreSqlParser.RULE_analyze_option_elem); + let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8053; - this.match(PostgreSqlParser.KW_FORCE); + this.state = 5776; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_SKIP_LOCKED: + this.enterOuterAlt(localContext, 1); + { + this.state = 5767; + _la = this.tokenStream.LA(1); + if(!(_la === 128 || _la === 547)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5769; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 60 || _la === 96) { + { + this.state = 5768; + _la = this.tokenStream.LA(1); + if(!(_la === 60 || _la === 96)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + } + break; + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + this.enterOuterAlt(localContext, 2); + { + this.state = 5771; + this.match(PostgreSqlParser.KW_BUFFER_USAGE_LIMIT); + this.state = 5774; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.Integral: + case PostgreSqlParser.Numeric: + { + this.state = 5772; + this.numericonly(); + } + break; + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 5773; + this.sconst(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -36584,22 +32563,32 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public altercollationstmt(): AltercollationstmtContext { - let localContext = new AltercollationstmtContext(this.context, this.state); - this.enterRule(localContext, 864, PostgreSqlParser.RULE_altercollationstmt); + public opt_verbose(): Opt_verboseContext { + let localContext = new Opt_verboseContext(this.context, this.state); + this.enterRule(localContext, 514, PostgreSqlParser.RULE_opt_verbose); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8055; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8056; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 8057; - this.any_name(); - this.state = 8058; - this.match(PostgreSqlParser.KW_REFRESH); - this.state = 8059; - this.match(PostgreSqlParser.KW_VERSION); + this.state = 5778; + this.match(PostgreSqlParser.KW_VERBOSE); + this.state = 5780; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 60 || _la === 96) { + { + this.state = 5779; + _la = this.tokenStream.LA(1); + if(!(_la === 60 || _la === 96)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + } } catch (re) { @@ -36616,28 +32605,24 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public altersystemstmt(): AltersystemstmtContext { - let localContext = new AltersystemstmtContext(this.context, this.state); - this.enterRule(localContext, 866, PostgreSqlParser.RULE_altersystemstmt); - let _la: number; + public vacuum_relation(): Vacuum_relationContext { + let localContext = new Vacuum_relationContext(this.context, this.state); + this.enterRule(localContext, 516, PostgreSqlParser.RULE_vacuum_relation); try { this.enterOuterAlt(localContext, 1); { - this.state = 8061; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8062; - this.match(PostgreSqlParser.KW_SYSTEM); - this.state = 8063; - _la = this.tokenStream.LA(1); - if(!(_la === 313 || _la === 333)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 5782; + this.table_name(); + this.state = 5784; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 731, this.context) ) { + case 1: + { + this.state = 5783; + this.opt_column_list(); + } + break; } - this.state = 8064; - this.generic_set(); } } catch (re) { @@ -36654,33 +32639,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public createdomainstmt(): CreatedomainstmtContext { - let localContext = new CreatedomainstmtContext(this.context, this.state); - this.enterRule(localContext, 868, PostgreSqlParser.RULE_createdomainstmt); + public vacuum_relation_list(): Vacuum_relation_listContext { + let localContext = new Vacuum_relation_listContext(this.context, this.state); + this.enterRule(localContext, 518, PostgreSqlParser.RULE_vacuum_relation_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8066; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 8067; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 8068; - this.any_name(); - this.state = 8070; + this.state = 5786; + this.vacuum_relation(); + this.state = 5791; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 36) { + while (_la === 6) { { - this.state = 8069; - this.opt_as(); + { + this.state = 5787; + this.match(PostgreSqlParser.COMMA); + this.state = 5788; + this.vacuum_relation(); } + } + this.state = 5793; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 8072; - this.typename(); - this.state = 8073; - this.colquallist(); } } catch (re) { @@ -36697,154 +32680,65 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public alterdomainstmt(): AlterdomainstmtContext { - let localContext = new AlterdomainstmtContext(this.context, this.state); - this.enterRule(localContext, 870, PostgreSqlParser.RULE_alterdomainstmt); + public explainstmt(): ExplainstmtContext { + let localContext = new ExplainstmtContext(this.context, this.state); + this.enterRule(localContext, 520, PostgreSqlParser.RULE_explainstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8075; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8076; - this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 8077; - this.any_name(); - this.state = 8099; + this.state = 5794; + this.match(PostgreSqlParser.KW_EXPLAIN); + this.state = 5805; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 746, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 736, this.context) ) { case 1: { - this.state = 8078; - this.alter_column_default(); + this.state = 5795; + this.explain_option_list(); } break; case 2: { - this.state = 8079; - this.match(PostgreSqlParser.KW_DROP); - this.state = 8080; - this.match(PostgreSqlParser.KW_NOT); - this.state = 8081; - this.match(PostgreSqlParser.KW_NULL); - } - break; - case 3: - { - this.state = 8082; - this.match(PostgreSqlParser.KW_SET); - this.state = 8083; - this.match(PostgreSqlParser.KW_NOT); - this.state = 8084; - this.match(PostgreSqlParser.KW_NULL); + this.state = 5797; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 128) { + { + this.state = 5796; + this.match(PostgreSqlParser.KW_VERBOSE); + } } - break; - case 4: - { - this.state = 8085; - this.match(PostgreSqlParser.KW_ADD); - this.state = 8086; - this.tableconstraint(); + } break; - case 5: + case 3: { - this.state = 8087; - this.match(PostgreSqlParser.KW_DROP); - this.state = 8088; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 8090; + this.state = 5803; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 744, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 31 || _la === 32) { { - this.state = 8089; - this.opt_if_exists(); + this.state = 5799; + this.analyze_keyword(); + this.state = 5801; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 128) { + { + this.state = 5800; + this.opt_verbose(); + } } - break; - } - this.state = 8092; - this.name(); - this.state = 8094; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 745, this.context) ) { - case 1: - { - this.state = 8093; - this.opt_drop_behavior(); + } - break; } + } break; - case 6: - { - this.state = 8096; - this.match(PostgreSqlParser.KW_VALIDATE); - this.state = 8097; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 8098; - this.name(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_as(): Opt_asContext { - let localContext = new Opt_asContext(this.context, this.state); - this.enterRule(localContext, 872, PostgreSqlParser.RULE_opt_as); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8101; - this.match(PostgreSqlParser.KW_AS); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; } - } - finally { - this.exitRule(); - } - return localContext; - } - public altertsdictionarystmt(): AltertsdictionarystmtContext { - let localContext = new AltertsdictionarystmtContext(this.context, this.state); - this.enterRule(localContext, 874, PostgreSqlParser.RULE_altertsdictionarystmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8103; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8104; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 8105; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8106; - this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 8107; - this.any_name(); - this.state = 8108; - this.definition(); + this.state = 5807; + this.explainablestmt(); } } catch (re) { @@ -36861,157 +32755,74 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public altertsconfigurationstmt(): AltertsconfigurationstmtContext { - let localContext = new AltertsconfigurationstmtContext(this.context, this.state); - this.enterRule(localContext, 876, PostgreSqlParser.RULE_altertsconfigurationstmt); - let _la: number; + public explainablestmt(): ExplainablestmtContext { + let localContext = new ExplainablestmtContext(this.context, this.state); + this.enterRule(localContext, 522, PostgreSqlParser.RULE_explainablestmt); try { - this.state = 8173; + this.state = 5818; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 748, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 737, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8110; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8111; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 8112; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8113; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 8114; - this.any_name(); - this.state = 8115; - this.match(PostgreSqlParser.KW_ADD); - this.state = 8116; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 8117; - this.match(PostgreSqlParser.KW_FOR); - this.state = 8118; - this.name_list(); - this.state = 8119; - this.any_with(); - this.state = 8120; - this.any_name_list(); + this.state = 5809; + this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8122; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8123; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 8124; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8125; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 8126; - this.any_name(); - this.state = 8127; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8128; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 8129; - this.match(PostgreSqlParser.KW_FOR); - this.state = 8130; - this.name_list(); - this.state = 8131; - this.any_with(); - this.state = 8132; - this.any_name_list(); + this.state = 5810; + this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 8134; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8135; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 8136; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8137; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 8138; - this.any_name(); - this.state = 8139; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8140; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 8141; - this.match(PostgreSqlParser.KW_REPLACE); - this.state = 8142; - this.any_name(); - this.state = 8143; - this.any_with(); - this.state = 8144; - this.any_name(); + this.state = 5811; + this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 8146; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8147; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 8148; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8149; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 8150; - this.any_name(); - this.state = 8151; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8152; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 8153; - this.match(PostgreSqlParser.KW_FOR); - this.state = 8154; - this.name_list(); - this.state = 8155; - this.match(PostgreSqlParser.KW_REPLACE); - this.state = 8156; - this.any_name(); - this.state = 8157; - this.any_with(); - this.state = 8158; - this.any_name(); + this.state = 5812; + this.deletestmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 8160; - this.match(PostgreSqlParser.KW_ALTER); - this.state = 8161; - this.match(PostgreSqlParser.KW_TEXT); - this.state = 8162; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8163; - this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 8164; - this.any_name(); - this.state = 8165; - this.match(PostgreSqlParser.KW_DROP); - this.state = 8166; - this.match(PostgreSqlParser.KW_MAPPING); - this.state = 8168; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 220) { - { - this.state = 8167; - this.opt_if_exists(); - } + this.state = 5813; + this.declarecursorstmt(); } - - this.state = 8170; - this.match(PostgreSqlParser.KW_FOR); - this.state = 8171; - this.name_list(); + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 5814; + this.createasstmt(); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 5815; + this.creatematviewstmt(); + } + break; + case 8: + this.enterOuterAlt(localContext, 8); + { + this.state = 5816; + this.refreshmatviewstmt(); + } + break; + case 9: + this.enterOuterAlt(localContext, 9); + { + this.state = 5817; + this.executestmt(); } break; } @@ -37030,65 +32841,35 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public any_with(): Any_withContext { - let localContext = new Any_withContext(this.context, this.state); - this.enterRule(localContext, 878, PostgreSqlParser.RULE_any_with); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8175; - this.match(PostgreSqlParser.KW_WITH); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createconversionstmt(): CreateconversionstmtContext { - let localContext = new CreateconversionstmtContext(this.context, this.state); - this.enterRule(localContext, 880, PostgreSqlParser.RULE_createconversionstmt); + public explain_option_list(): Explain_option_listContext { + let localContext = new Explain_option_listContext(this.context, this.state); + this.enterRule(localContext, 524, PostgreSqlParser.RULE_explain_option_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8177; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 8179; + this.state = 5820; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5821; + this.vac_analyze_option_elem(); + this.state = 5826; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 53) { + while (_la === 6) { + { { - this.state = 8178; - this.opt_default(); + this.state = 5822; + this.match(PostgreSqlParser.COMMA); + this.state = 5823; + this.vac_analyze_option_elem(); + } } + this.state = 5828; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 8181; - this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 8182; - this.any_name(); - this.state = 8183; - this.match(PostgreSqlParser.KW_FOR); - this.state = 8184; - this.sconst(); - this.state = 8185; - this.match(PostgreSqlParser.KW_TO); - this.state = 8186; - this.sconst(); - this.state = 8187; - this.match(PostgreSqlParser.KW_FROM); - this.state = 8188; - this.any_name(); + this.state = 5829; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -37105,81 +32886,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public clusterstmt(): ClusterstmtContext { - let localContext = new ClusterstmtContext(this.context, this.state); - this.enterRule(localContext, 882, PostgreSqlParser.RULE_clusterstmt); + public preparestmt(): PreparestmtContext { + let localContext = new PreparestmtContext(this.context, this.state); + this.enterRule(localContext, 526, PostgreSqlParser.RULE_preparestmt); let _la: number; try { - this.state = 8208; + this.enterOuterAlt(localContext, 1); + { + this.state = 5831; + this.match(PostgreSqlParser.KW_PREPARE); + this.state = 5832; + this.colid(); + this.state = 5834; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 754, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 8190; - this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 8192; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 128) { - { - this.state = 8191; - this.opt_verbose(); - } - } - - this.state = 8194; - this.table_name(); - this.state = 8196; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 8195; - this.cluster_index_specification(); - } - } - - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 8198; - this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 8200; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 128) { - { - this.state = 8199; - this.opt_verbose(); - } - } - - } - break; - case 3: - this.enterOuterAlt(localContext, 3); + _la = this.tokenStream.LA(1); + if (_la === 2) { { - this.state = 8202; - this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 8203; - this.opt_verbose_list(); - this.state = 8204; - this.table_name(); - this.state = 8206; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 8205; - this.cluster_index_specification(); - } + this.state = 5833; + this.prep_type_clause(); } + } - } - break; + this.state = 5836; + this.match(PostgreSqlParser.KW_AS); + this.state = 5837; + this.preparablestmt(); } } catch (re) { @@ -37196,34 +32927,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_verbose_list(): Opt_verbose_listContext { - let localContext = new Opt_verbose_listContext(this.context, this.state); - this.enterRule(localContext, 884, PostgreSqlParser.RULE_opt_verbose_list); + public prep_type_clause(): Prep_type_clauseContext { + let localContext = new Prep_type_clauseContext(this.context, this.state); + this.enterRule(localContext, 528, PostgreSqlParser.RULE_prep_type_clause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8210; + this.state = 5839; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8211; - this.opt_verbose(); - this.state = 8216; + this.state = 5840; + this.typename(); + this.state = 5845; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8212; + this.state = 5841; this.match(PostgreSqlParser.COMMA); - this.state = 8213; - this.opt_verbose(); + this.state = 5842; + this.typename(); } } - this.state = 8218; + this.state = 5847; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 8219; + this.state = 5848; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -37241,16 +32972,41 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public cluster_index_specification(): Cluster_index_specificationContext { - let localContext = new Cluster_index_specificationContext(this.context, this.state); - this.enterRule(localContext, 886, PostgreSqlParser.RULE_cluster_index_specification); + public preparablestmt(): PreparablestmtContext { + let localContext = new PreparablestmtContext(this.context, this.state); + this.enterRule(localContext, 530, PostgreSqlParser.RULE_preparablestmt); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8221; - this.match(PostgreSqlParser.KW_USING); - this.state = 8222; - this.name(); + this.state = 5854; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 741, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 5850; + this.selectstmt(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 5851; + this.insertstmt(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 5852; + this.updatestmt(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 5853; + this.deletestmt(); + } + break; } } catch (re) { @@ -37267,217 +33023,92 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public vacuumstmt(): VacuumstmtContext { - let localContext = new VacuumstmtContext(this.context, this.state); - this.enterRule(localContext, 888, PostgreSqlParser.RULE_vacuumstmt); + public executestmt(): ExecutestmtContext { + let localContext = new ExecutestmtContext(this.context, this.state); + this.enterRule(localContext, 532, PostgreSqlParser.RULE_executestmt); let _la: number; try { - this.state = 8250; + this.state = 5879; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 763, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_EXECUTE: this.enterOuterAlt(localContext, 1); { - this.state = 8224; - this.match(PostgreSqlParser.KW_VACUUM); - this.state = 8226; + this.state = 5856; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 5857; + this.colid(); + this.state = 5859; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 113) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 742, this.context) ) { + case 1: { - this.state = 8225; - this.opt_full(); + this.state = 5858; + this.execute_param_clause(); } + break; } - - this.state = 8229; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 112) { - { - this.state = 8228; - this.opt_freeze(); - } } - - this.state = 8232; + break; + case PostgreSqlParser.KW_CREATE: + this.enterOuterAlt(localContext, 2); + { + this.state = 5861; + this.match(PostgreSqlParser.KW_CREATE); + this.state = 5863; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 128) { + if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 8231; - this.opt_verbose(); + this.state = 5862; + this.opttemp(); } } - this.state = 8235; + this.state = 5865; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 5867; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 759, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 744, this.context) ) { case 1: { - this.state = 8234; - this.opt_analyze(); + this.state = 5866; + this.opt_if_not_exists(); } break; } - this.state = 8238; + this.state = 5869; + this.create_as_target(); + this.state = 5870; + this.match(PostgreSqlParser.KW_AS); + this.state = 5871; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 5872; + this.colid(); + this.state = 5874; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 760, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 745, this.context) ) { case 1: { - this.state = 8237; - this.opt_vacuum_relation_list(); + this.state = 5873; + this.execute_param_clause(); } break; } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 8240; - this.match(PostgreSqlParser.KW_VACUUM); - this.state = 8245; + this.state = 5877; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 761, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 746, this.context) ) { case 1: { - this.state = 8241; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8242; - this.vac_analyze_option_list(); - this.state = 8243; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - this.state = 8248; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 762, this.context) ) { - case 1: - { - this.state = 8247; - this.opt_vacuum_relation_list(); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public analyzestmt(): AnalyzestmtContext { - let localContext = new AnalyzestmtContext(this.context, this.state); - this.enterRule(localContext, 890, PostgreSqlParser.RULE_analyzestmt); - let _la: number; - try { - this.state = 8266; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 767, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 8252; - this.analyze_keyword(); - this.state = 8254; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 128) { - { - this.state = 8253; - this.opt_verbose(); - } - } - - this.state = 8257; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 765, this.context) ) { - case 1: - { - this.state = 8256; - this.opt_vacuum_relation_list(); + this.state = 5876; + this.opt_with_data(); } break; } } break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 8259; - this.analyze_keyword(); - this.state = 8260; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8261; - this.analyze_options_list(); - this.state = 8262; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 8264; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 766, this.context) ) { - case 1: - { - this.state = 8263; - this.opt_vacuum_relation_list(); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public vac_analyze_option_list(): Vac_analyze_option_listContext { - let localContext = new Vac_analyze_option_listContext(this.context, this.state); - this.enterRule(localContext, 892, PostgreSqlParser.RULE_vac_analyze_option_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8268; - this.vac_analyze_option_elem(); - this.state = 8273; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 8269; - this.match(PostgreSqlParser.COMMA); - this.state = 8270; - this.vac_analyze_option_elem(); - } - } - this.state = 8275; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -37494,22 +33125,18 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public analyze_keyword(): Analyze_keywordContext { - let localContext = new Analyze_keywordContext(this.context, this.state); - this.enterRule(localContext, 894, PostgreSqlParser.RULE_analyze_keyword); - let _la: number; + public execute_param_clause(): Execute_param_clauseContext { + let localContext = new Execute_param_clauseContext(this.context, this.state); + this.enterRule(localContext, 534, PostgreSqlParser.RULE_execute_param_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 8276; - _la = this.tokenStream.LA(1); - if(!(_la === 31 || _la === 32)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 5881; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5882; + this.expr_list(); + this.state = 5883; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -37526,46 +33153,25 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public vac_analyze_option_elem(): Vac_analyze_option_elemContext { - let localContext = new Vac_analyze_option_elemContext(this.context, this.state); - this.enterRule(localContext, 896, PostgreSqlParser.RULE_vac_analyze_option_elem); - let _la: number; + public deallocatestmt(): DeallocatestmtContext { + let localContext = new DeallocatestmtContext(this.context, this.state); + this.enterRule(localContext, 536, PostgreSqlParser.RULE_deallocatestmt); try { this.enterOuterAlt(localContext, 1); { - this.state = 8278; - this.vac_analyze_option_name(); - this.state = 8280; + this.state = 5885; + this.match(PostgreSqlParser.KW_DEALLOCATE); + this.state = 5887; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 12 || _la === 13 || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 420484101) !== 0) || ((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & 4227923969) !== 0) || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 4294967295) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 4294967295) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 4294967295) !== 0) || ((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 3223322623) !== 0) || ((((_la - 240)) & ~0x1F) === 0 && ((1 << (_la - 240)) & 4294967295) !== 0) || ((((_la - 272)) & ~0x1F) === 0 && ((1 << (_la - 272)) & 4294967295) !== 0) || ((((_la - 304)) & ~0x1F) === 0 && ((1 << (_la - 304)) & 4294967295) !== 0) || ((((_la - 336)) & ~0x1F) === 0 && ((1 << (_la - 336)) & 4294967295) !== 0) || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & 4294967295) !== 0) || ((((_la - 400)) & ~0x1F) === 0 && ((1 << (_la - 400)) & 4294967295) !== 0) || ((((_la - 432)) & ~0x1F) === 0 && ((1 << (_la - 432)) & 4290772991) !== 0) || ((((_la - 464)) & ~0x1F) === 0 && ((1 << (_la - 464)) & 4294967295) !== 0) || ((((_la - 496)) & ~0x1F) === 0 && ((1 << (_la - 496)) & 25165183) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 486582415) !== 0) || _la === 584) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 748, this.context) ) { + case 1: { - this.state = 8279; - this.vac_analyze_option_arg(); + this.state = 5886; + this.match(PostgreSqlParser.KW_PREPARE); } + break; } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public vac_analyze_option_name(): Vac_analyze_option_nameContext { - let localContext = new Vac_analyze_option_nameContext(this.context, this.state); - this.enterRule(localContext, 898, PostgreSqlParser.RULE_vac_analyze_option_name); - try { - this.state = 8284; + this.state = 5891; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AND: @@ -37575,29 +33181,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DEFAULT: case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: case PostgreSqlParser.KW_ACCESS: @@ -37931,7 +33517,6 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CUBE: case PostgreSqlParser.KW_GROUPING: case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: case PostgreSqlParser.KW_ORDINALITY: case PostgreSqlParser.KW_XMLTABLE: case PostgreSqlParser.KW_COLUMNS: @@ -37988,23 +33573,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 8282; - this.nonreservedword(); + this.state = 5889; + this.colid(); } break; - case PostgreSqlParser.KW_ANALYSE: - case PostgreSqlParser.KW_ANALYZE: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_ALL: { - this.state = 8283; - this.analyze_keyword(); + this.state = 5890; + this.match(PostgreSqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -38020,454 +33603,134 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public vac_analyze_option_arg(): Vac_analyze_option_argContext { - let localContext = new Vac_analyze_option_argContext(this.context, this.state); - this.enterRule(localContext, 900, PostgreSqlParser.RULE_vac_analyze_option_arg); + public insertstmt(): InsertstmtContext { + let localContext = new InsertstmtContext(this.context, this.state); + this.enterRule(localContext, 538, PostgreSqlParser.RULE_insertstmt); + let _la: number; try { - this.state = 8288; + localContext = new InsertStatementContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 5894; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_ON: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 105) { { - this.state = 8286; - this.opt_boolean_or_string(); + this.state = 5893; + this.with_clause(); } - break; - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: - this.enterOuterAlt(localContext, 2); + } + + this.state = 5896; + this.match(PostgreSqlParser.KW_INSERT); + this.state = 5897; + this.match(PostgreSqlParser.KW_INTO); + this.state = 5898; + this.table_name(); + this.state = 5901; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 36) { { - this.state = 8287; - this.numericonly(); + this.state = 5899; + this.match(PostgreSqlParser.KW_AS); + this.state = 5900; + this.colid(); } - break; - default: - throw new antlr.NoViableAltException(this); + } + + this.state = 5903; + this.insert_rest(); + this.state = 5925; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 80) { + { + this.state = 5904; + this.match(PostgreSqlParser.KW_ON); + this.state = 5905; + this.match(PostgreSqlParser.KW_CONFLICT); + this.state = 5913; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + { + this.state = 5906; + this.index_params(); + this.state = 5908; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 103) { + { + this.state = 5907; + this.where_clause(); + } + } + + } + break; + case PostgreSqlParser.KW_ON: + { + this.state = 5910; + this.match(PostgreSqlParser.KW_ON); + this.state = 5911; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 5912; + this.colid(); + } + break; + case PostgreSqlParser.KW_DO: + break; + default: + break; + } + this.state = 5915; + this.match(PostgreSqlParser.KW_DO); + this.state = 5923; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_UPDATE: + { + this.state = 5916; + this.match(PostgreSqlParser.KW_UPDATE); + this.state = 5917; + this.match(PostgreSqlParser.KW_SET); + this.state = 5918; + this.set_clause_list(); + this.state = 5920; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 103) { + { + this.state = 5919; + this.where_clause(); + } + } + + } + break; + case PostgreSqlParser.KW_NOTHING: + { + this.state = 5922; + this.match(PostgreSqlParser.KW_NOTHING); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + } + + this.state = 5928; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 87) { + { + this.state = 5927; + this.returning_clause(); + } + } + } } catch (re) { @@ -38484,14 +33747,64 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_analyze(): Opt_analyzeContext { - let localContext = new Opt_analyzeContext(this.context, this.state); - this.enterRule(localContext, 902, PostgreSqlParser.RULE_opt_analyze); + public insert_rest(): Insert_restContext { + let localContext = new Insert_restContext(this.context, this.state); + this.enterRule(localContext, 540, PostgreSqlParser.RULE_insert_rest); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8290; - this.analyze_keyword(); + this.state = 5934; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 758, this.context) ) { + case 1: + { + this.state = 5930; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 5931; + this.insert_column_list(); + this.state = 5932; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + } + this.state = 5939; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 463) { + { + this.state = 5936; + this.match(PostgreSqlParser.KW_OVERRIDING); + this.state = 5937; + _la = this.tokenStream.LA(1); + if(!(_la === 99 || _la === 349)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5938; + this.match(PostgreSqlParser.KW_VALUE); + } + } + + this.state = 5943; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 760, this.context) ) { + case 1: + { + this.state = 5941; + this.default_values_or_values(); + } + break; + case 2: + { + this.state = 5942; + this.selectstmt(); + } + break; + } } } catch (re) { @@ -38508,28 +33821,28 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public analyze_options_list(): Analyze_options_listContext { - let localContext = new Analyze_options_listContext(this.context, this.state); - this.enterRule(localContext, 904, PostgreSqlParser.RULE_analyze_options_list); + public insert_column_list(): Insert_column_listContext { + let localContext = new Insert_column_listContext(this.context, this.state); + this.enterRule(localContext, 542, PostgreSqlParser.RULE_insert_column_list); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8292; - this.analyze_option_elem(); - this.state = 8297; + this.state = 5945; + this.insert_column_item(); + this.state = 5950; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8293; + this.state = 5946; this.match(PostgreSqlParser.COMMA); - this.state = 8294; - this.analyze_option_elem(); + this.state = 5947; + this.insert_column_item(); } } - this.state = 8299; + this.state = 5952; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -38549,36 +33862,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public analyze_option_elem(): Analyze_option_elemContext { - let localContext = new Analyze_option_elemContext(this.context, this.state); - this.enterRule(localContext, 906, PostgreSqlParser.RULE_analyze_option_elem); + public insert_column_item(): Insert_column_itemContext { + let localContext = new Insert_column_itemContext(this.context, this.state); + this.enterRule(localContext, 544, PostgreSqlParser.RULE_insert_column_item); try { - this.state = 8303; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_VERBOSE: - this.enterOuterAlt(localContext, 1); - { - this.state = 8300; - this.opt_verbose(); - } - break; - case PostgreSqlParser.KW_SKIP_LOCKED: - this.enterOuterAlt(localContext, 2); - { - this.state = 8301; - this.opt_skiplock(); - } - break; - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - this.enterOuterAlt(localContext, 3); - { - this.state = 8302; - this.opt_buffer_usage_limit(); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.enterOuterAlt(localContext, 1); + { + this.state = 5953; + this.column_name(); + this.state = 5954; + this.opt_indirection(); } } catch (re) { @@ -38595,32 +33888,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_verbose(): Opt_verboseContext { - let localContext = new Opt_verboseContext(this.context, this.state); - this.enterRule(localContext, 908, PostgreSqlParser.RULE_opt_verbose); - let _la: number; + public returning_clause(): Returning_clauseContext { + let localContext = new Returning_clauseContext(this.context, this.state); + this.enterRule(localContext, 546, PostgreSqlParser.RULE_returning_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 8305; - this.match(PostgreSqlParser.KW_VERBOSE); - this.state = 8307; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 60 || _la === 96) { - { - this.state = 8306; - _la = this.tokenStream.LA(1); - if(!(_la === 60 || _la === 96)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - + this.state = 5956; + this.match(PostgreSqlParser.KW_RETURNING); + this.state = 5957; + this.target_list(); } } catch (re) { @@ -38637,29 +33914,58 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_skiplock(): Opt_skiplockContext { - let localContext = new Opt_skiplockContext(this.context, this.state); - this.enterRule(localContext, 910, PostgreSqlParser.RULE_opt_skiplock); + public deletestmt(): DeletestmtContext { + let localContext = new DeletestmtContext(this.context, this.state); + this.enterRule(localContext, 548, PostgreSqlParser.RULE_deletestmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8309; - this.match(PostgreSqlParser.KW_SKIP_LOCKED); - this.state = 8311; + this.state = 5960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 60 || _la === 96) { + if (_la === 105) { { - this.state = 8310; - _la = this.tokenStream.LA(1); - if(!(_la === 60 || _la === 96)) { - this.errorHandler.recoverInline(this); + this.state = 5959; + this.with_clause(); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + } + + this.state = 5962; + this.match(PostgreSqlParser.KW_DELETE); + this.state = 5963; + this.match(PostgreSqlParser.KW_FROM); + this.state = 5964; + this.relation_expr_opt_alias(); + this.state = 5967; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 5965; + this.match(PostgreSqlParser.KW_USING); + this.state = 5966; + this.from_list(); + } + } + + this.state = 5970; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 103) { + { + this.state = 5969; + this.where_or_current_clause(); } + } + + this.state = 5973; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 87) { + { + this.state = 5972; + this.returning_clause(); } } @@ -38679,37 +33985,113 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_buffer_usage_limit(): Opt_buffer_usage_limitContext { - let localContext = new Opt_buffer_usage_limitContext(this.context, this.state); - this.enterRule(localContext, 912, PostgreSqlParser.RULE_opt_buffer_usage_limit); + public lockstmt(): LockstmtContext { + let localContext = new LockstmtContext(this.context, this.state); + this.enterRule(localContext, 550, PostgreSqlParser.RULE_lockstmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8313; - this.match(PostgreSqlParser.KW_BUFFER_USAGE_LIMIT); - this.state = 8316; + this.state = 5975; + this.match(PostgreSqlParser.KW_LOCK); + this.state = 5977; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: + _la = this.tokenStream.LA(1); + if (_la === 92) { { - this.state = 8314; - this.numericonly(); + this.state = 5976; + this.match(PostgreSqlParser.KW_TABLE); } - break; - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: + } + + this.state = 5979; + this.relation_expr_list(); + this.state = 5994; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 68) { { - this.state = 8315; - this.sconst(); + this.state = 5980; + this.match(PostgreSqlParser.KW_IN); + this.state = 5991; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ROW: + { + this.state = 5981; + _la = this.tokenStream.LA(1); + if(!(_la === 131 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 5982; + _la = this.tokenStream.LA(1); + if(!(_la === 201 || _la === 334)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case PostgreSqlParser.KW_SHARE: + { + this.state = 5983; + this.match(PostgreSqlParser.KW_SHARE); + this.state = 5988; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_UPDATE: + { + this.state = 5984; + this.match(PostgreSqlParser.KW_UPDATE); + this.state = 5985; + this.match(PostgreSqlParser.KW_EXCLUSIVE); + } + break; + case PostgreSqlParser.KW_ROW: + { + this.state = 5986; + this.match(PostgreSqlParser.KW_ROW); + this.state = 5987; + this.match(PostgreSqlParser.KW_EXCLUSIVE); + } + break; + case PostgreSqlParser.KW_MODE: + break; + default: + break; + } + } + break; + case PostgreSqlParser.KW_EXCLUSIVE: + { + this.state = 5990; + this.match(PostgreSqlParser.KW_EXCLUSIVE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 5993; + this.match(PostgreSqlParser.KW_MODE); + } + } + + this.state = 5997; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 770, this.context) ) { + case 1: + { + this.state = 5996; + this.match(PostgreSqlParser.KW_NOWAIT); } break; - default: - throw new antlr.NoViableAltException(this); } } } @@ -38727,38 +34109,61 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_full(): Opt_fullContext { - let localContext = new Opt_fullContext(this.context, this.state); - this.enterRule(localContext, 914, PostgreSqlParser.RULE_opt_full); + public updatestmt(): UpdatestmtContext { + let localContext = new UpdatestmtContext(this.context, this.state); + this.enterRule(localContext, 552, PostgreSqlParser.RULE_updatestmt); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8318; - this.match(PostgreSqlParser.KW_FULL); + this.state = 6000; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 5999; + this.with_clause(); + } } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + + this.state = 6002; + this.match(PostgreSqlParser.KW_UPDATE); + this.state = 6003; + this.relation_expr_opt_alias(); + this.state = 6004; + this.match(PostgreSqlParser.KW_SET); + this.state = 6005; + this.set_clause_list(); + this.state = 6007; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 64) { + { + this.state = 6006; + this.from_clause(); + } } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_freeze(): Opt_freezeContext { - let localContext = new Opt_freezeContext(this.context, this.state); - this.enterRule(localContext, 916, PostgreSqlParser.RULE_opt_freeze); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8320; - this.match(PostgreSqlParser.KW_FREEZE); + + this.state = 6010; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 103) { + { + this.state = 6009; + this.where_or_current_clause(); + } + } + + this.state = 6013; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 87) { + { + this.state = 6012; + this.returning_clause(); + } + } + } } catch (re) { @@ -38775,18 +34180,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_name_list(): Opt_name_listContext { - let localContext = new Opt_name_listContext(this.context, this.state); - this.enterRule(localContext, 918, PostgreSqlParser.RULE_opt_name_list); + public set_clause_list(): Set_clause_listContext { + let localContext = new Set_clause_listContext(this.context, this.state); + this.enterRule(localContext, 554, PostgreSqlParser.RULE_set_clause_list); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8322; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8323; - this.column_list(); - this.state = 8324; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6015; + this.set_clause(); + this.state = 6020; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 6016; + this.match(PostgreSqlParser.COMMA); + this.state = 6017; + this.set_clause(); + } + } + this.state = 6022; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -38803,24 +34221,67 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public vacuum_relation(): Vacuum_relationContext { - let localContext = new Vacuum_relationContext(this.context, this.state); - this.enterRule(localContext, 920, PostgreSqlParser.RULE_vacuum_relation); + public set_clause(): Set_clauseContext { + let localContext = new Set_clauseContext(this.context, this.state); + this.enterRule(localContext, 556, PostgreSqlParser.RULE_set_clause); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8326; - this.table_name(); - this.state = 8328; + this.state = 6041; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 778, this.context) ) { case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 8327; - this.opt_name_list(); + this.state = 6023; + this.insert_column_item(); + this.state = 6024; + this.match(PostgreSqlParser.EQUAL); + this.state = 6025; + this.expression(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 6027; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6028; + this.insert_column_list(); + this.state = 6029; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6030; + this.match(PostgreSqlParser.EQUAL); + this.state = 6039; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { + case 1: + { + this.state = 6032; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 776, this.context) ) { + case 1: + { + this.state = 6031; + this.match(PostgreSqlParser.KW_ROW); + } + break; + } + this.state = 6034; + this.expression(); + } + break; + case 2: + { + this.state = 6035; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6036; + this.select_clause(); + this.state = 6037; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + } } break; - } } } catch (re) { @@ -38837,32 +34298,131 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public vacuum_relation_list(): Vacuum_relation_listContext { - let localContext = new Vacuum_relation_listContext(this.context, this.state); - this.enterRule(localContext, 922, PostgreSqlParser.RULE_vacuum_relation_list); + public declarecursorstmt(): DeclarecursorstmtContext { + let localContext = new DeclarecursorstmtContext(this.context, this.state); + this.enterRule(localContext, 558, PostgreSqlParser.RULE_declarecursorstmt); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8330; - this.vacuum_relation(); - this.state = 8335; + this.state = 6043; + this.match(PostgreSqlParser.KW_DECLARE); + this.state = 6044; + this.colid(); + { + this.state = 6053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 6) { - { + while (_la === 107 || _la === 240 || _la === 269 || _la === 324) { { - this.state = 8331; - this.match(PostgreSqlParser.COMMA); - this.state = 8332; - this.vacuum_relation(); + this.state = 6051; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_SCROLL: + { + { + this.state = 6046; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 6045; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 6048; + this.match(PostgreSqlParser.KW_SCROLL); + } + } + break; + case PostgreSqlParser.KW_BINARY: + { + this.state = 6049; + this.match(PostgreSqlParser.KW_BINARY); + } + break; + case PostgreSqlParser.KW_INSENSITIVE: + { + this.state = 6050; + this.match(PostgreSqlParser.KW_INSENSITIVE); + } + break; + default: + throw new antlr.NoViableAltException(this); } } - this.state = 8337; + this.state = 6055; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } + this.state = 6056; + this.match(PostgreSqlParser.KW_CURSOR); + this.state = 6059; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105 || _la === 379) { + { + this.state = 6057; + _la = this.tokenStream.LA(1); + if(!(_la === 105 || _la === 379)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6058; + this.match(PostgreSqlParser.KW_HOLD); + } + } + + this.state = 6061; + this.match(PostgreSqlParser.KW_FOR); + this.state = 6062; + this.selectstmt(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public selectstmt(): SelectstmtContext { + let localContext = new SelectstmtContext(this.context, this.state); + this.enterRule(localContext, 560, PostgreSqlParser.RULE_selectstmt); + try { + this.state = 6066; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 783, this.context) ) { + case 1: + localContext = new SelectStatementContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 6064; + this.select_no_parens(); + } + break; + case 2: + localContext = new SelectStatementContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 6065; + this.select_with_parens(); + } + break; + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -38878,14 +34438,32 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_vacuum_relation_list(): Opt_vacuum_relation_listContext { - let localContext = new Opt_vacuum_relation_listContext(this.context, this.state); - this.enterRule(localContext, 924, PostgreSqlParser.RULE_opt_vacuum_relation_list); + public select_with_parens(): Select_with_parensContext { + let localContext = new Select_with_parensContext(this.context, this.state); + this.enterRule(localContext, 562, PostgreSqlParser.RULE_select_with_parens); try { this.enterOuterAlt(localContext, 1); { - this.state = 8338; - this.vacuum_relation_list(); + this.state = 6068; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6071; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 784, this.context) ) { + case 1: + { + this.state = 6069; + this.select_no_parens(); + } + break; + case 2: + { + this.state = 6070; + this.select_with_parens(); + } + break; + } + this.state = 6073; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -38902,71 +34480,72 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public explainstmt(): ExplainstmtContext { - let localContext = new ExplainstmtContext(this.context, this.state); - this.enterRule(localContext, 926, PostgreSqlParser.RULE_explainstmt); + public select_no_parens(): Select_no_parensContext { + let localContext = new Select_no_parensContext(this.context, this.state); + this.enterRule(localContext, 564, PostgreSqlParser.RULE_select_no_parens); let _la: number; try { - this.state = 8358; + this.enterOuterAlt(localContext, 1); + { + this.state = 6076; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 6075; + this.with_clause(); + } + } + + this.state = 6078; + this.select_clause(); + this.state = 6080; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 83) { + { + this.state = 6079; + this.sort_clause(); + } + } + + this.state = 6090; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 780, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 789, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 8340; - this.match(PostgreSqlParser.KW_EXPLAIN); - this.state = 8341; - this.explainablestmt(); + this.state = 6082; + this.for_locking_clause(); + this.state = 6084; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 787, this.context) ) { + case 1: + { + this.state = 6083; + this.select_limit(); + } + break; + } } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 8342; - this.match(PostgreSqlParser.KW_EXPLAIN); - this.state = 8343; - this.analyze_keyword(); - this.state = 8345; + this.state = 6086; + this.select_limit(); + this.state = 6088; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 128) { + if (_la === 62) { { - this.state = 8344; - this.opt_verbose(); + this.state = 6087; + this.for_locking_clause(); } } - this.state = 8347; - this.explainablestmt(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 8349; - this.match(PostgreSqlParser.KW_EXPLAIN); - this.state = 8350; - this.match(PostgreSqlParser.KW_VERBOSE); - this.state = 8351; - this.explainablestmt(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 8352; - this.match(PostgreSqlParser.KW_EXPLAIN); - this.state = 8353; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8354; - this.explain_option_list(); - this.state = 8355; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 8356; - this.explainablestmt(); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -38982,76 +34561,176 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public explainablestmt(): ExplainablestmtContext { - let localContext = new ExplainablestmtContext(this.context, this.state); - this.enterRule(localContext, 928, PostgreSqlParser.RULE_explainablestmt); + public select_clause(): Select_clauseContext { + let localContext = new Select_clauseContext(this.context, this.state); + this.enterRule(localContext, 566, PostgreSqlParser.RULE_select_clause); try { - this.state = 8369; + this.state = 6094; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 781, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 790, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8360; - this.selectstmt(); + this.state = 6092; + this.simple_select(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8361; - this.insertstmt(); + this.state = 6093; + this.select_with_parens(); } break; - case 3: - this.enterOuterAlt(localContext, 3); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public simple_select(): Simple_selectContext { + let localContext = new Simple_selectContext(this.context, this.state); + this.enterRule(localContext, 568, PostgreSqlParser.RULE_simple_select); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 6118; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SELECT: { - this.state = 8362; - this.updatestmt(); + this.state = 6096; + this.match(PostgreSqlParser.KW_SELECT); + this.state = 6106; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 794, this.context) ) { + case 1: + { + this.state = 6098; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 791, this.context) ) { + case 1: + { + this.state = 6097; + this.match(PostgreSqlParser.KW_ALL); + } + break; + } + this.state = 6101; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 792, this.context) ) { + case 1: + { + this.state = 6100; + this.into_clause(); + } + break; + } + } + break; + case 2: + { + this.state = 6104; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 793, this.context) ) { + case 1: + { + this.state = 6103; + this.distinct_clause(); + } + break; + } + } + break; } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 8363; - this.deletestmt(); + this.state = 6108; + this.sql_expression(); } break; - case 5: - this.enterOuterAlt(localContext, 5); + case PostgreSqlParser.KW_VALUES: { - this.state = 8364; - this.declarecursorstmt(); + this.state = 6109; + this.values_clause(); } break; - case 6: - this.enterOuterAlt(localContext, 6); + case PostgreSqlParser.KW_TABLE: { - this.state = 8365; - this.createasstmt(); + this.state = 6110; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 6111; + this.relation_expr(); } break; - case 7: - this.enterOuterAlt(localContext, 7); + case PostgreSqlParser.OPEN_PAREN: { - this.state = 8366; - this.creatematviewstmt(); + this.state = 6112; + this.select_with_parens(); + this.state = 6113; + this.set_operator_with_all_or_distinct(); + this.state = 6116; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 795, this.context) ) { + case 1: + { + this.state = 6114; + this.simple_select(); + } + break; + case 2: + { + this.state = 6115; + this.select_with_parens(); + } + break; } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 8367; - this.refreshmatviewstmt(); } break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 8368; - this.executestmt(); + default: + throw new antlr.NoViableAltException(this); + } + this.state = 6127; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 798, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 6120; + this.set_operator_with_all_or_distinct(); + this.state = 6123; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 797, this.context) ) { + case 1: + { + this.state = 6121; + this.simple_select(); + } + break; + case 2: + { + this.state = 6122; + this.select_with_parens(); + } + break; + } + } + } } - break; + this.state = 6129; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 798, this.context); + } } } catch (re) { @@ -39068,30 +34747,95 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public explain_option_list(): Explain_option_listContext { - let localContext = new Explain_option_listContext(this.context, this.state); - this.enterRule(localContext, 930, PostgreSqlParser.RULE_explain_option_list); + public set_operator_with_all_or_distinct(): Set_operator_with_all_or_distinctContext { + let localContext = new Set_operator_with_all_or_distinctContext(this.context, this.state); + this.enterRule(localContext, 570, PostgreSqlParser.RULE_set_operator_with_all_or_distinct); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8371; - this.explain_option_elem(); - this.state = 8376; + this.state = 6130; + _la = this.tokenStream.LA(1); + if(!(_la === 59 || _la === 70 || _la === 97)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6132; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 6) { + if (_la === 30 || _la === 56) { { + this.state = 6131; + _la = this.tokenStream.LA(1); + if(!(_la === 30 || _la === 56)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public with_clause(): With_clauseContext { + let localContext = new With_clauseContext(this.context, this.state); + this.enterRule(localContext, 572, PostgreSqlParser.RULE_with_clause); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 6134; + this.match(PostgreSqlParser.KW_WITH); + this.state = 6136; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 800, this.context) ) { + case 1: { - this.state = 8372; - this.match(PostgreSqlParser.COMMA); - this.state = 8373; - this.explain_option_elem(); + this.state = 6135; + this.match(PostgreSqlParser.KW_RECURSIVE); } + break; + } + { + this.state = 6138; + this.common_table_expr(); + this.state = 6143; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 801, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 6139; + this.match(PostgreSqlParser.COMMA); + this.state = 6140; + this.common_table_expr(); + } + } } - this.state = 8378; + this.state = 6145; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 801, this.context); + } } } } @@ -39109,25 +34853,73 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public explain_option_elem(): Explain_option_elemContext { - let localContext = new Explain_option_elemContext(this.context, this.state); - this.enterRule(localContext, 932, PostgreSqlParser.RULE_explain_option_elem); + public common_table_expr(): Common_table_exprContext { + let localContext = new Common_table_exprContext(this.context, this.state); + this.enterRule(localContext, 574, PostgreSqlParser.RULE_common_table_expr); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8379; - this.explain_option_name(); - this.state = 8381; + this.state = 6146; + this.colid(); + this.state = 6148; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 6147; + this.opt_column_list(); + } + } + + this.state = 6150; + this.match(PostgreSqlParser.KW_AS); + this.state = 6155; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 12 || _la === 13 || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 420484101) !== 0) || ((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & 4227923969) !== 0) || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 4294967295) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & 4294967295) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 4294967295) !== 0) || ((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 3223322623) !== 0) || ((((_la - 240)) & ~0x1F) === 0 && ((1 << (_la - 240)) & 4294967295) !== 0) || ((((_la - 272)) & ~0x1F) === 0 && ((1 << (_la - 272)) & 4294967295) !== 0) || ((((_la - 304)) & ~0x1F) === 0 && ((1 << (_la - 304)) & 4294967295) !== 0) || ((((_la - 336)) & ~0x1F) === 0 && ((1 << (_la - 336)) & 4294967295) !== 0) || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & 4294967295) !== 0) || ((((_la - 400)) & ~0x1F) === 0 && ((1 << (_la - 400)) & 4294967295) !== 0) || ((((_la - 432)) & ~0x1F) === 0 && ((1 << (_la - 432)) & 4290772991) !== 0) || ((((_la - 464)) & ~0x1F) === 0 && ((1 << (_la - 464)) & 4294967295) !== 0) || ((((_la - 496)) & ~0x1F) === 0 && ((1 << (_la - 496)) & 25165183) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 486582415) !== 0) || _la === 584) { + if (_la === 77 || _la === 259) { { - this.state = 8380; - this.explain_option_arg(); + this.state = 6152; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 6151; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 6154; + this.match(PostgreSqlParser.KW_MATERIALIZED); } } + this.state = 6157; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6158; + this.preparablestmt(); + this.state = 6159; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6161; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 805, this.context) ) { + case 1: + { + this.state = 6160; + this.search_cluase(); + } + break; + } + this.state = 6164; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 806, this.context) ) { + case 1: + { + this.state = 6163; + this.cycle_cluase(); + } + break; + } } } catch (re) { @@ -39144,52 +34936,545 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public explain_option_name(): Explain_option_nameContext { - let localContext = new Explain_option_nameContext(this.context, this.state); - this.enterRule(localContext, 934, PostgreSqlParser.RULE_explain_option_name); + public search_cluase(): Search_cluaseContext { + let localContext = new Search_cluaseContext(this.context, this.state); + this.enterRule(localContext, 576, PostgreSqlParser.RULE_search_cluase); + let _la: number; try { - this.state = 8385; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: + this.enterOuterAlt(localContext, 1); + { + this.state = 6166; + this.match(PostgreSqlParser.KW_SEARCH); + this.state = 6167; + _la = this.tokenStream.LA(1); + if(!(_la === 527 || _la === 528)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6168; + this.match(PostgreSqlParser.KW_FIRST); + this.state = 6169; + this.match(PostgreSqlParser.KW_BY); + this.state = 6170; + this.column_list(); + this.state = 6171; + this.match(PostgreSqlParser.KW_SET); + this.state = 6172; + this.column_name(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public cycle_cluase(): Cycle_cluaseContext { + let localContext = new Cycle_cluaseContext(this.context, this.state); + this.enterRule(localContext, 578, PostgreSqlParser.RULE_cycle_cluase); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6174; + this.match(PostgreSqlParser.KW_CYCLE); + this.state = 6175; + this.column_list(); + this.state = 6176; + this.match(PostgreSqlParser.KW_SET); + this.state = 6177; + this.column_name(); + this.state = 6183; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 94) { + { + this.state = 6178; + this.match(PostgreSqlParser.KW_TO); + this.state = 6179; + this.colid(); + this.state = 6180; + this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 6181; + this.colid(); + } + } + + this.state = 6185; + this.match(PostgreSqlParser.KW_USING); + this.state = 6186; + this.column_name(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public into_clause(): Into_clauseContext { + let localContext = new Into_clauseContext(this.context, this.state); + this.enterRule(localContext, 580, PostgreSqlParser.RULE_into_clause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6188; + this.match(PostgreSqlParser.KW_INTO); + this.state = 6194; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 809, this.context) ) { + case 1: + { + this.state = 6190; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 808, this.context) ) { + case 1: + { + this.state = 6189; + this.match(PostgreSqlParser.KW_STRICT); + } + break; + } + this.state = 6192; + this.opttempTableName(); + } + break; + case 2: + { + this.state = 6193; + this.expr_list(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public opttempTableName(): OpttempTableNameContext { + let localContext = new OpttempTableNameContext(this.context, this.state); + this.enterRule(localContext, 582, PostgreSqlParser.RULE_opttempTableName); + let _la: number; + try { + this.state = 6211; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 814, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 6197; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 213 || _la === 254) { + { + this.state = 6196; + _la = this.tokenStream.LA(1); + if(!(_la === 213 || _la === 254)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 6199; + _la = this.tokenStream.LA(1); + if(!(_la === 352 || _la === 354)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6201; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 92) { + { + this.state = 6200; + this.match(PostgreSqlParser.KW_TABLE); + } + } + + this.state = 6203; + this.table_name_create(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 6205; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 812, this.context) ) { + case 1: + { + this.state = 6204; + this.match(PostgreSqlParser.KW_UNLOGGED); + } + break; + } + this.state = 6208; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 92) { + { + this.state = 6207; + this.match(PostgreSqlParser.KW_TABLE); + } + } + + this.state = 6210; + this.table_name_create(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public distinct_clause(): Distinct_clauseContext { + let localContext = new Distinct_clauseContext(this.context, this.state); + this.enterRule(localContext, 584, PostgreSqlParser.RULE_distinct_clause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6213; + this.match(PostgreSqlParser.KW_DISTINCT); + this.state = 6216; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 815, this.context) ) { + case 1: + { + this.state = 6214; + this.match(PostgreSqlParser.KW_ON); + this.state = 6215; + this.execute_param_clause(); + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public sort_clause(): Sort_clauseContext { + let localContext = new Sort_clauseContext(this.context, this.state); + this.enterRule(localContext, 586, PostgreSqlParser.RULE_sort_clause); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6218; + this.match(PostgreSqlParser.KW_ORDER); + this.state = 6219; + this.match(PostgreSqlParser.KW_BY); + this.state = 6220; + this.sortby(); + this.state = 6225; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 6221; + this.match(PostgreSqlParser.COMMA); + this.state = 6222; + this.sortby(); + } + } + this.state = 6227; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public sortby(): SortbyContext { + let localContext = new SortbyContext(this.context, this.state); + this.enterRule(localContext, 588, PostgreSqlParser.RULE_sortby); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6228; + this.column_expr_noparen(); + this.state = 6232; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 817, this.context) ) { + case 1: + { + this.state = 6229; + this.match(PostgreSqlParser.KW_USING); + this.state = 6230; + this.qual_all_op(); + } + break; + case 2: + { + this.state = 6231; + _la = this.tokenStream.LA(1); + if(!(_la === 37 || _la === 55)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 6236; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 818, this.context) ) { + case 1: + { + this.state = 6234; + this.match(PostgreSqlParser.KW_NULLS); + this.state = 6235; + _la = this.tokenStream.LA(1); + if(!(_la === 207 || _la === 249)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public select_limit(): Select_limitContext { + let localContext = new Select_limitContext(this.context, this.state); + this.enterRule(localContext, 590, PostgreSqlParser.RULE_select_limit); + let _la: number; + try { + this.state = 6249; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_OFFSET: + this.enterOuterAlt(localContext, 1); + { + this.state = 6238; + this.offset_clause(); + this.state = 6240; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 819, this.context) ) { + case 1: + { + this.state = 6239; + this.fetch_clause(); + } + break; + } + } + break; + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_LIMIT: + this.enterOuterAlt(localContext, 2); + { + this.state = 6244; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_LIMIT: + { + this.state = 6242; + this.limit_clause(); + } + break; + case PostgreSqlParser.KW_FETCH: + { + this.state = 6243; + this.fetch_clause(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 6247; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 79) { + { + this.state = 6246; + this.offset_clause(); + } + } + + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public limit_clause(): Limit_clauseContext { + let localContext = new Limit_clauseContext(this.context, this.state); + this.enterRule(localContext, 592, PostgreSqlParser.RULE_limit_clause); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6251; + this.match(PostgreSqlParser.KW_LIMIT); + this.state = 6254; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.PARAM: + case PostgreSqlParser.Operator: + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_CASE: + case PostgreSqlParser.KW_CAST: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CURRENT_CATALOG: + case PostgreSqlParser.KW_CURRENT_DATE: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_TIME: + case PostgreSqlParser.KW_CURRENT_TIMESTAMP: + case PostgreSqlParser.KW_CURRENT_USER: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FALSE: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_LOCALTIME: + case PostgreSqlParser.KW_LOCALTIMESTAMP: + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_NULL: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_TRUE: + case PostgreSqlParser.KW_UNIQUE: + case PostgreSqlParser.KW_USER: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: case PostgreSqlParser.KW_ALTER: case PostgreSqlParser.KW_ALWAYS: case PostgreSqlParser.KW_ASSERTION: @@ -39568,26 +35853,40 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.StringConstant: case PostgreSqlParser.UnicodeEscapeStringConstant: case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.BinaryStringConstant: + case PostgreSqlParser.HexadecimalStringConstant: + case PostgreSqlParser.Integral: + case PostgreSqlParser.Numeric: case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 8383; - this.nonreservedword(); + this.state = 6252; + this.expression(); } break; - case PostgreSqlParser.KW_ANALYSE: - case PostgreSqlParser.KW_ANALYZE: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_ALL: { - this.state = 8384; - this.analyze_keyword(); + this.state = 6253; + this.match(PostgreSqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } + this.state = 6258; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 6256; + this.match(PostgreSqlParser.COMMA); + this.state = 6257; + this.expression(); + } + } + + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -39603,455 +35902,66 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public explain_option_arg(): Explain_option_argContext { - let localContext = new Explain_option_argContext(this.context, this.state); - this.enterRule(localContext, 936, PostgreSqlParser.RULE_explain_option_arg); + public fetch_clause(): Fetch_clauseContext { + let localContext = new Fetch_clauseContext(this.context, this.state); + this.enterRule(localContext, 594, PostgreSqlParser.RULE_fetch_clause); + let _la: number; try { - this.state = 8389; + this.enterOuterAlt(localContext, 1); + { + this.state = 6260; + this.match(PostgreSqlParser.KW_FETCH); + this.state = 6261; + _la = this.tokenStream.LA(1); + if(!(_la === 207 || _la === 268)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + { + this.state = 6263; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_ON: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); + switch (this.interpreter.adaptivePredict(this.tokenStream, 825, this.context) ) { + case 1: { - this.state = 8387; - this.opt_boolean_or_string(); + this.state = 6262; + this.select_fetch_first_value(); } break; - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: - this.enterOuterAlt(localContext, 2); + } + this.state = 6265; + _la = this.tokenStream.LA(1); + if(!(_la === 320 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6269; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ONLY: { - this.state = 8388; - this.numericonly(); + this.state = 6266; + this.match(PostgreSqlParser.KW_ONLY); + } + break; + case PostgreSqlParser.KW_WITH: + { + this.state = 6267; + this.match(PostgreSqlParser.KW_WITH); + this.state = 6268; + this.match(PostgreSqlParser.KW_TIES); } break; default: throw new antlr.NoViableAltException(this); } + } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -40067,31 +35977,40 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public preparestmt(): PreparestmtContext { - let localContext = new PreparestmtContext(this.context, this.state); - this.enterRule(localContext, 938, PostgreSqlParser.RULE_preparestmt); + public offset_clause(): Offset_clauseContext { + let localContext = new Offset_clauseContext(this.context, this.state); + this.enterRule(localContext, 596, PostgreSqlParser.RULE_offset_clause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8391; - this.match(PostgreSqlParser.KW_PREPARE); - this.state = 8392; - this.name(); - this.state = 8394; + this.state = 6271; + this.match(PostgreSqlParser.KW_OFFSET); + this.state = 6276; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 827, this.context) ) { + case 1: { - this.state = 8393; - this.prep_type_clause(); + this.state = 6272; + this.select_fetch_first_value(); + this.state = 6273; + _la = this.tokenStream.LA(1); + if(!(_la === 320 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case 2: + { + this.state = 6275; + this.expression(); } + break; } - - this.state = 8396; - this.match(PostgreSqlParser.KW_AS); - this.state = 8397; - this.preparablestmt(); } } catch (re) { @@ -40108,18 +36027,44 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public prep_type_clause(): Prep_type_clauseContext { - let localContext = new Prep_type_clauseContext(this.context, this.state); - this.enterRule(localContext, 940, PostgreSqlParser.RULE_prep_type_clause); + public select_fetch_first_value(): Select_fetch_first_valueContext { + let localContext = new Select_fetch_first_valueContext(this.context, this.state); + this.enterRule(localContext, 598, PostgreSqlParser.RULE_select_fetch_first_value); + let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8399; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8400; - this.type_list(); - this.state = 8401; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6281; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 828, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 6278; + _la = this.tokenStream.LA(1); + if(!(_la === 12 || _la === 13)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6279; + _la = this.tokenStream.LA(1); + if(!(_la === 571 || _la === 573)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 6280; + this.primaryExpression(0); + } + break; } } catch (re) { @@ -40136,39 +36081,178 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public preparablestmt(): PreparablestmtContext { - let localContext = new PreparablestmtContext(this.context, this.state); - this.enterRule(localContext, 942, PostgreSqlParser.RULE_preparablestmt); + public group_clause(): Group_clauseContext { + let localContext = new Group_clauseContext(this.context, this.state); + this.enterRule(localContext, 600, PostgreSqlParser.RULE_group_clause); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6283; + this.match(PostgreSqlParser.KW_GROUP); + this.state = 6284; + this.match(PostgreSqlParser.KW_BY); + this.state = 6286; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 829, this.context) ) { + case 1: + { + this.state = 6285; + _la = this.tokenStream.LA(1); + if(!(_la === 30 || _la === 56)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 6288; + this.group_by_list(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public group_by_list(): Group_by_listContext { + let localContext = new Group_by_listContext(this.context, this.state); + this.enterRule(localContext, 602, PostgreSqlParser.RULE_group_by_list); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 6290; + this.group_by_item(); + this.state = 6295; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 830, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 6291; + this.match(PostgreSqlParser.COMMA); + this.state = 6292; + this.group_by_item(); + } + } + } + this.state = 6297; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 830, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public group_by_item(): Group_by_itemContext { + let localContext = new Group_by_itemContext(this.context, this.state); + this.enterRule(localContext, 604, PostgreSqlParser.RULE_group_by_item); + let _la: number; try { - this.state = 8407; + this.state = 6321; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 787, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 833, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8403; - this.selectstmt(); + this.state = 6298; + this.column_expr_noparen(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8404; - this.insertstmt(); + this.state = 6299; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6300; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 8405; - this.updatestmt(); + this.state = 6302; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 468 || _la === 469) { + { + this.state = 6301; + _la = this.tokenStream.LA(1); + if(!(_la === 468 || _la === 469)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 6304; + this.match(PostgreSqlParser.OPEN_PAREN); + { + this.state = 6305; + this.column_expr_noparen(); + this.state = 6310; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 6306; + this.match(PostgreSqlParser.COMMA); + this.state = 6307; + this.column_expr_noparen(); + } + } + this.state = 6312; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 6313; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 8406; - this.deletestmt(); + this.state = 6315; + this.match(PostgreSqlParser.KW_GROUPING); + this.state = 6316; + this.match(PostgreSqlParser.KW_SETS); + this.state = 6317; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6318; + this.group_by_list(); + this.state = 6319; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; } @@ -40187,92 +36271,159 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public executestmt(): ExecutestmtContext { - let localContext = new ExecutestmtContext(this.context, this.state); - this.enterRule(localContext, 944, PostgreSqlParser.RULE_executestmt); + public for_locking_clause(): For_locking_clauseContext { + let localContext = new For_locking_clauseContext(this.context, this.state); + this.enterRule(localContext, 606, PostgreSqlParser.RULE_for_locking_clause); let _la: number; try { - this.state = 8432; + this.state = 6351; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_EXECUTE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 840, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8409; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8410; - this.name(); - this.state = 8412; + this.state = 6344; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 788, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + do { { - this.state = 8411; - this.execute_param_clause(); + { + this.state = 6323; + this.match(PostgreSqlParser.KW_FOR); + this.state = 6333; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_UPDATE: + { + this.state = 6326; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 6324; + this.match(PostgreSqlParser.KW_NO); + this.state = 6325; + this.match(PostgreSqlParser.KW_KEY); + } + } + + this.state = 6328; + this.match(PostgreSqlParser.KW_UPDATE); + } + break; + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_SHARE: + { + this.state = 6330; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 245) { + { + this.state = 6329; + this.match(PostgreSqlParser.KW_KEY); + } + } + + this.state = 6332; + this.match(PostgreSqlParser.KW_SHARE); + } + break; + default: + throw new antlr.NoViableAltException(this); } - break; - } + this.state = 6337; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 837, this.context) ) { + case 1: + { + this.state = 6335; + this.match(PostgreSqlParser.KW_OF); + this.state = 6336; + this.qualified_name_list(); + } + break; + } + this.state = 6342; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 838, this.context) ) { + case 1: + { + this.state = 6339; + this.match(PostgreSqlParser.KW_NOWAIT); + } + break; + case 2: + { + this.state = 6340; + this.match(PostgreSqlParser.KW_SKIP); + this.state = 6341; + this.match(PostgreSqlParser.KW_LOCKED); + } + break; + } + } + } + this.state = 6346; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 62); } break; - case PostgreSqlParser.KW_CREATE: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8414; - this.match(PostgreSqlParser.KW_CREATE); - this.state = 8416; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { - { - this.state = 8415; - this.opttemp(); - } + this.state = 6348; + this.match(PostgreSqlParser.KW_FOR); + this.state = 6349; + this.match(PostgreSqlParser.KW_READ); + this.state = 6350; + this.match(PostgreSqlParser.KW_ONLY); } - - this.state = 8418; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 8420; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 790, this.context) ) { - case 1: - { - this.state = 8419; - this.opt_if_not_exists(); - } - break; + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public values_clause(): Values_clauseContext { + let localContext = new Values_clauseContext(this.context, this.state); + this.enterRule(localContext, 608, PostgreSqlParser.RULE_values_clause); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 6353; + this.match(PostgreSqlParser.KW_VALUES); + this.state = 6354; + this.execute_param_clause(); + this.state = 6359; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 6355; + this.match(PostgreSqlParser.COMMA); + this.state = 6356; + this.execute_param_clause(); } - this.state = 8422; - this.create_as_target(); - this.state = 8423; - this.match(PostgreSqlParser.KW_AS); - this.state = 8424; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8425; - this.name(); - this.state = 8427; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 791, this.context) ) { - case 1: - { - this.state = 8426; - this.execute_param_clause(); - } - break; } - this.state = 8430; + this.state = 6361; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 792, this.context) ) { - case 1: - { - this.state = 8429; - this.opt_with_data(); - } - break; - } - } - break; - default: - throw new antlr.NoViableAltException(this); + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -40289,18 +36440,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public execute_param_clause(): Execute_param_clauseContext { - let localContext = new Execute_param_clauseContext(this.context, this.state); - this.enterRule(localContext, 946, PostgreSqlParser.RULE_execute_param_clause); + public from_clause(): From_clauseContext { + let localContext = new From_clauseContext(this.context, this.state); + this.enterRule(localContext, 610, PostgreSqlParser.RULE_from_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 8434; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8435; - this.expr_list(); - this.state = 8436; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6362; + this.match(PostgreSqlParser.KW_FROM); + this.state = 6363; + this.from_list(); } } catch (re) { @@ -40317,439 +36466,362 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public deallocatestmt(): DeallocatestmtContext { - let localContext = new DeallocatestmtContext(this.context, this.state); - this.enterRule(localContext, 948, PostgreSqlParser.RULE_deallocatestmt); + public from_list(): From_listContext { + let localContext = new From_listContext(this.context, this.state); + this.enterRule(localContext, 612, PostgreSqlParser.RULE_from_list); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8438; - this.match(PostgreSqlParser.KW_DEALLOCATE); - this.state = 8440; + this.state = 6365; + this.table_ref(); + this.state = 6370; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 842, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 6366; + this.match(PostgreSqlParser.COMMA); + this.state = 6367; + this.table_ref(); + } + } + } + this.state = 6372; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 842, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public table_ref(): Table_refContext { + let localContext = new Table_refContext(this.context, this.state); + this.enterRule(localContext, 614, PostgreSqlParser.RULE_table_ref); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 6436; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 794, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 859, this.context) ) { case 1: { - this.state = 8439; - this.match(PostgreSqlParser.KW_PREPARE); + this.state = 6387; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 847, this.context) ) { + case 1: + { + this.state = 6373; + this.relation_expr(); + } + break; + case 2: + { + { + this.state = 6375; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 81) { + { + this.state = 6374; + this.match(PostgreSqlParser.KW_ONLY); + } + } + + this.state = 6377; + this.view_name(); + this.state = 6379; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 844, this.context) ) { + case 1: + { + this.state = 6378; + this.match(PostgreSqlParser.STAR); + } + break; + } + this.state = 6382; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 845, this.context) ) { + case 1: + { + this.state = 6381; + this.column_list(); + } + break; + } + this.state = 6385; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 846, this.context) ) { + case 1: + { + this.state = 6384; + this.where_clause(); + } + break; + } + } + } + break; + } + this.state = 6390; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 848, this.context) ) { + case 1: + { + this.state = 6389; + this.alias_clause(); + } + break; + } + this.state = 6393; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 472) { + { + this.state = 6392; + this.tablesample_clause(); + } + } + + } + break; + case 2: + { + this.state = 6396; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 72) { + { + this.state = 6395; + this.match(PostgreSqlParser.KW_LATERAL); + } + } + + this.state = 6410; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 854, this.context) ) { + case 1: + { + this.state = 6398; + this.xmltable(); + this.state = 6400; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 851, this.context) ) { + case 1: + { + this.state = 6399; + this.alias_clause(); + } + break; + } + } + break; + case 2: + { + this.state = 6402; + this.func_table(); + this.state = 6404; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 852, this.context) ) { + case 1: + { + this.state = 6403; + this.func_alias_clause(); + } + break; + } + } + break; + case 3: + { + this.state = 6406; + this.select_with_parens(); + this.state = 6408; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 853, this.context) ) { + case 1: + { + this.state = 6407; + this.alias_clause(); + } + break; + } + } + break; + } + } + break; + case 3: + { + this.state = 6412; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6413; + this.table_ref(); + this.state = 6430; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_CROSS: + { + this.state = 6414; + this.match(PostgreSqlParser.KW_CROSS); + this.state = 6415; + this.match(PostgreSqlParser.KW_JOIN); + this.state = 6416; + this.table_ref(); + } + break; + case PostgreSqlParser.KW_NATURAL: + { + this.state = 6417; + this.match(PostgreSqlParser.KW_NATURAL); + this.state = 6419; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { + { + this.state = 6418; + this.join_type(); + } + } + + this.state = 6421; + this.match(PostgreSqlParser.KW_JOIN); + this.state = 6422; + this.table_ref(); + } + break; + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_RIGHT: + { + this.state = 6424; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { + { + this.state = 6423; + this.join_type(); + } + } + + this.state = 6426; + this.match(PostgreSqlParser.KW_JOIN); + this.state = 6427; + this.table_ref(); + this.state = 6428; + this.join_qual(); + } + break; + case PostgreSqlParser.CLOSE_PAREN: + break; + default: + break; + } + this.state = 6432; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6434; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 858, this.context) ) { + case 1: + { + this.state = 6433; + this.alias_clause(); + } + break; + } } break; } - this.state = 8444; + this.state = 6456; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 8442; - this.name(); - } - break; - case PostgreSqlParser.KW_ALL: - { - this.state = 8443; - this.match(PostgreSqlParser.KW_ALL); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 863, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + this.state = 6454; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_CROSS: + { + this.state = 6438; + this.match(PostgreSqlParser.KW_CROSS); + this.state = 6439; + this.match(PostgreSqlParser.KW_JOIN); + this.state = 6440; + this.table_ref(); + } + break; + case PostgreSqlParser.KW_NATURAL: + { + this.state = 6441; + this.match(PostgreSqlParser.KW_NATURAL); + this.state = 6443; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { + { + this.state = 6442; + this.join_type(); + } + } + + this.state = 6445; + this.match(PostgreSqlParser.KW_JOIN); + this.state = 6446; + this.table_ref(); + } + break; + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_RIGHT: + { + this.state = 6448; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { + { + this.state = 6447; + this.join_type(); + } + } + + this.state = 6450; + this.match(PostgreSqlParser.KW_JOIN); + this.state = 6451; + this.table_ref(); + this.state = 6452; + this.join_qual(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } } - break; - default: - throw new antlr.NoViableAltException(this); + this.state = 6458; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 863, this.context); } } } @@ -40767,52 +36839,39 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public insertstmt(): InsertstmtContext { - let localContext = new InsertstmtContext(this.context, this.state); - this.enterRule(localContext, 950, PostgreSqlParser.RULE_insertstmt); + public alias_clause(): Alias_clauseContext { + let localContext = new Alias_clauseContext(this.context, this.state); + this.enterRule(localContext, 616, PostgreSqlParser.RULE_alias_clause); let _la: number; try { - localContext = new InsertStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 8447; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 8446; - this.opt_with_clause(); - } - } - - this.state = 8449; - this.match(PostgreSqlParser.KW_INSERT); - this.state = 8450; - this.match(PostgreSqlParser.KW_INTO); - this.state = 8451; - this.insert_target(); - this.state = 8452; - this.insert_rest(); - this.state = 8454; + this.state = 6460; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 80) { + if (_la === 36) { { - this.state = 8453; - this.opt_on_conflict(); + this.state = 6459; + this.match(PostgreSqlParser.KW_AS); } } - this.state = 8457; + this.state = 6462; + this.colid(); + this.state = 6467; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 87) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 865, this.context) ) { + case 1: { - this.state = 8456; - this.returning_clause(); + this.state = 6463; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6464; + this.name_list(); + this.state = 6465; + this.match(PostgreSqlParser.CLOSE_PAREN); } + break; } - } } catch (re) { @@ -40829,95 +36888,459 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public insert_target(): Insert_targetContext { - let localContext = new Insert_targetContext(this.context, this.state); - this.enterRule(localContext, 952, PostgreSqlParser.RULE_insert_target); + public func_alias_clause(): Func_alias_clauseContext { + let localContext = new Func_alias_clauseContext(this.context, this.state); + this.enterRule(localContext, 618, PostgreSqlParser.RULE_func_alias_clause); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8459; - this.table_name(); - this.state = 8462; + this.state = 6481; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 868, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 8460; - this.match(PostgreSqlParser.KW_AS); - this.state = 8461; - this.colid(); + this.state = 6469; + this.alias_clause(); } - } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 6475; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AS: + { + this.state = 6470; + this.match(PostgreSqlParser.KW_AS); + this.state = 6472; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 6471; + this.colid(); + } + } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public insert_rest(): Insert_restContext { - let localContext = new Insert_restContext(this.context, this.state); - this.enterRule(localContext, 954, PostgreSqlParser.RULE_insert_rest); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8468; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 800, this.context) ) { - case 1: - { - this.state = 8464; + } + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 6474; + this.colid(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 6477; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8465; - this.insert_column_list(); - this.state = 8466; + this.state = 6478; + this.tablefuncelementlist(); + this.state = 6479; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 8474; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 463) { - { - this.state = 8470; - this.match(PostgreSqlParser.KW_OVERRIDING); - this.state = 8471; - this.override_kind(); - this.state = 8472; - this.match(PostgreSqlParser.KW_VALUE); - } - } - - this.state = 8478; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 802, this.context) ) { - case 1: - { - this.state = 8476; - this.default_values_or_values(); - } - break; - case 2: - { - this.state = 8477; - this.selectstmt(); - } - break; - } - } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -40933,22 +37356,32 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public override_kind(): Override_kindContext { - let localContext = new Override_kindContext(this.context, this.state); - this.enterRule(localContext, 956, PostgreSqlParser.RULE_override_kind); + public join_type(): Join_typeContext { + let localContext = new Join_typeContext(this.context, this.state); + this.enterRule(localContext, 620, PostgreSqlParser.RULE_join_type); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8480; + this.state = 6483; _la = this.tokenStream.LA(1); - if(!(_la === 99 || _la === 349)) { + if(!(((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0))) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } + this.state = 6485; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 123) { + { + this.state = 6484; + this.match(PostgreSqlParser.KW_OUTER); + } + } + } } catch (re) { @@ -40965,31 +37398,33 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public insert_column_list(): Insert_column_listContext { - let localContext = new Insert_column_listContext(this.context, this.state); - this.enterRule(localContext, 958, PostgreSqlParser.RULE_insert_column_list); - let _la: number; + public join_qual(): Join_qualContext { + let localContext = new Join_qualContext(this.context, this.state); + this.enterRule(localContext, 622, PostgreSqlParser.RULE_join_qual); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8482; - this.insert_column_item(); - this.state = 8487; + this.state = 6491; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_USING: + this.enterOuterAlt(localContext, 1); { - this.state = 8483; - this.match(PostgreSqlParser.COMMA); - this.state = 8484; - this.insert_column_item(); + this.state = 6487; + this.match(PostgreSqlParser.KW_USING); + this.state = 6488; + this.opt_column_list(); } + break; + case PostgreSqlParser.KW_ON: + this.enterOuterAlt(localContext, 2); + { + this.state = 6489; + this.match(PostgreSqlParser.KW_ON); + this.state = 6490; + this.expression(); } - this.state = 8489; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -41006,171 +37441,872 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public insert_column_item(): Insert_column_itemContext { - let localContext = new Insert_column_itemContext(this.context, this.state); - this.enterRule(localContext, 960, PostgreSqlParser.RULE_insert_column_item); + public relation_expr(): Relation_exprContext { + let localContext = new Relation_exprContext(this.context, this.state); + this.enterRule(localContext, 624, PostgreSqlParser.RULE_relation_expr); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8490; - this.column_name(); - this.state = 8491; - this.opt_indirection(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_on_conflict(): Opt_on_conflictContext { - let localContext = new Opt_on_conflictContext(this.context, this.state); - this.enterRule(localContext, 962, PostgreSqlParser.RULE_opt_on_conflict); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8493; - this.match(PostgreSqlParser.KW_ON); - this.state = 8494; - this.match(PostgreSqlParser.KW_CONFLICT); - this.state = 8496; + this.state = 6508; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2 || _la === 80) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 873, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 8495; - this.opt_conf_expr(); + this.state = 6493; + this.truncate_table(); } - } - - this.state = 8498; - this.match(PostgreSqlParser.KW_DO); - this.state = 8506; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_UPDATE: + break; + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 8499; - this.match(PostgreSqlParser.KW_UPDATE); - this.state = 8500; - this.match(PostgreSqlParser.KW_SET); - this.state = 8501; - this.set_clause_list(); - this.state = 8503; + this.state = 6494; + this.match(PostgreSqlParser.KW_ONLY); + this.state = 6500; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 8502; - this.where_clause(); + this.state = 6495; + this.table_name(); } - } - - } - break; - case PostgreSqlParser.KW_NOTHING: - { - this.state = 8505; - this.match(PostgreSqlParser.KW_NOTHING); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_conf_expr(): Opt_conf_exprContext { - let localContext = new Opt_conf_exprContext(this.context, this.state); - this.enterRule(localContext, 964, PostgreSqlParser.RULE_opt_conf_expr); - let _la: number; - try { - this.state = 8517; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - this.enterOuterAlt(localContext, 1); - { - this.state = 8508; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8509; - this.index_params(); - this.state = 8510; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 8512; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { + break; + case PostgreSqlParser.OPEN_PAREN: { - this.state = 8511; - this.where_clause(); + this.state = 6496; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6497; + this.table_name(); + this.state = 6498; + this.match(PostgreSqlParser.CLOSE_PAREN); } + break; + default: + throw new antlr.NoViableAltException(this); } - } break; - case PostgreSqlParser.KW_ON: - this.enterOuterAlt(localContext, 2); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 8514; - this.match(PostgreSqlParser.KW_ON); - this.state = 8515; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 8516; - this.name(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public returning_clause(): Returning_clauseContext { - let localContext = new Returning_clauseContext(this.context, this.state); - this.enterRule(localContext, 966, PostgreSqlParser.RULE_returning_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8519; - this.match(PostgreSqlParser.KW_RETURNING); - this.state = 8520; - this.target_list(); + this.state = 6502; + this.match(PostgreSqlParser.KW_IN); + this.state = 6503; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 6506; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 6504; + this.schema_name(); + } + break; + case PostgreSqlParser.KW_CURRENT_SCHEMA: + { + this.state = 6505; + this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; } } catch (re) { @@ -41187,982 +38323,899 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public deletestmt(): DeletestmtContext { - let localContext = new DeletestmtContext(this.context, this.state); - this.enterRule(localContext, 968, PostgreSqlParser.RULE_deletestmt); + public publication_relation_expr(): Publication_relation_exprContext { + let localContext = new Publication_relation_exprContext(this.context, this.state); + this.enterRule(localContext, 626, PostgreSqlParser.RULE_publication_relation_expr); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8523; + this.state = 6534; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 8522; - this.opt_with_clause(); + this.state = 6510; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 6511; + this.truncate_table(); + this.state = 6513; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 874, this.context) ) { + case 1: + { + this.state = 6512; + this.opt_column_list(); + } + break; } - } - - this.state = 8525; - this.match(PostgreSqlParser.KW_DELETE); - this.state = 8526; - this.match(PostgreSqlParser.KW_FROM); - this.state = 8527; - this.relation_expr_opt_alias(); - this.state = 8529; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 8528; - this.using_clause(); + this.state = 6516; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 103) { + { + this.state = 6515; + this.where_clause(); + } } - } - this.state = 8532; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { - { - this.state = 8531; - this.where_or_current_clause(); } - } - - this.state = 8535; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 87) { + break; + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 8534; - this.returning_clause(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public using_clause(): Using_clauseContext { - let localContext = new Using_clauseContext(this.context, this.state); - this.enterRule(localContext, 970, PostgreSqlParser.RULE_using_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8537; - this.match(PostgreSqlParser.KW_USING); - this.state = 8538; - this.from_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public lockstmt(): LockstmtContext { - let localContext = new LockstmtContext(this.context, this.state); - this.enterRule(localContext, 972, PostgreSqlParser.RULE_lockstmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8540; - this.match(PostgreSqlParser.KW_LOCK); - this.state = 8542; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 92) { - { - this.state = 8541; - this.opt_table(); - } - } - - this.state = 8544; - this.relation_expr_list(); - this.state = 8546; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 68) { - { - this.state = 8545; - this.opt_lock(); - } - } - - this.state = 8549; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 815, this.context) ) { - case 1: - { - this.state = 8548; - this.opt_nowait(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_lock(): Opt_lockContext { - let localContext = new Opt_lockContext(this.context, this.state); - this.enterRule(localContext, 974, PostgreSqlParser.RULE_opt_lock); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8551; - this.match(PostgreSqlParser.KW_IN); - this.state = 8552; - this.lock_type(); - this.state = 8553; - this.match(PostgreSqlParser.KW_MODE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public lock_type(): Lock_typeContext { - let localContext = new Lock_typeContext(this.context, this.state); - this.enterRule(localContext, 976, PostgreSqlParser.RULE_lock_type); - let _la: number; - try { - this.state = 8567; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ACCESS: - this.enterOuterAlt(localContext, 1); - { - this.state = 8555; - this.match(PostgreSqlParser.KW_ACCESS); - this.state = 8556; - _la = this.tokenStream.LA(1); - if(!(_la === 201 || _la === 334)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - case PostgreSqlParser.KW_ROW: - this.enterOuterAlt(localContext, 2); - { - this.state = 8557; - this.match(PostgreSqlParser.KW_ROW); - this.state = 8558; - _la = this.tokenStream.LA(1); - if(!(_la === 201 || _la === 334)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - case PostgreSqlParser.KW_SHARE: - this.enterOuterAlt(localContext, 3); - { - this.state = 8559; - this.match(PostgreSqlParser.KW_SHARE); - this.state = 8564; + this.state = 6518; + this.match(PostgreSqlParser.KW_TABLE); + this.state = 6519; + this.match(PostgreSqlParser.KW_ONLY); + this.state = 6525; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: case PostgreSqlParser.KW_UPDATE: - { - this.state = 8560; - this.match(PostgreSqlParser.KW_UPDATE); - this.state = 8561; - this.match(PostgreSqlParser.KW_EXCLUSIVE); - } - break; + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 8562; - this.match(PostgreSqlParser.KW_ROW); - this.state = 8563; - this.match(PostgreSqlParser.KW_EXCLUSIVE); - } - break; - case PostgreSqlParser.KW_MODE: - break; - default: - break; - } - } - break; - case PostgreSqlParser.KW_EXCLUSIVE: - this.enterOuterAlt(localContext, 4); - { - this.state = 8566; - this.match(PostgreSqlParser.KW_EXCLUSIVE); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_nowait(): Opt_nowaitContext { - let localContext = new Opt_nowaitContext(this.context, this.state); - this.enterRule(localContext, 978, PostgreSqlParser.RULE_opt_nowait); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8569; - this.match(PostgreSqlParser.KW_NOWAIT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_nowait_or_skip(): Opt_nowait_or_skipContext { - let localContext = new Opt_nowait_or_skipContext(this.context, this.state); - this.enterRule(localContext, 980, PostgreSqlParser.RULE_opt_nowait_or_skip); - try { - this.state = 8574; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_NOWAIT: - this.enterOuterAlt(localContext, 1); - { - this.state = 8571; - this.match(PostgreSqlParser.KW_NOWAIT); - } - break; - case PostgreSqlParser.KW_SKIP: - this.enterOuterAlt(localContext, 2); - { - this.state = 8572; - this.match(PostgreSqlParser.KW_SKIP); - this.state = 8573; - this.match(PostgreSqlParser.KW_LOCKED); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public updatestmt(): UpdatestmtContext { - let localContext = new UpdatestmtContext(this.context, this.state); - this.enterRule(localContext, 982, PostgreSqlParser.RULE_updatestmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8577; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 8576; - this.opt_with_clause(); - } - } - - this.state = 8579; - this.match(PostgreSqlParser.KW_UPDATE); - this.state = 8580; - this.relation_expr_opt_alias(); - this.state = 8581; - this.match(PostgreSqlParser.KW_SET); - this.state = 8582; - this.set_clause_list(); - this.state = 8584; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64) { - { - this.state = 8583; - this.from_clause(); - } - } - - this.state = 8587; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { - { - this.state = 8586; - this.where_or_current_clause(); - } - } - - this.state = 8590; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 87) { - { - this.state = 8589; - this.returning_clause(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public set_clause_list(): Set_clause_listContext { - let localContext = new Set_clause_listContext(this.context, this.state); - this.enterRule(localContext, 984, PostgreSqlParser.RULE_set_clause_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8592; - this.set_clause(); - this.state = 8597; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 8593; - this.match(PostgreSqlParser.COMMA); - this.state = 8594; - this.set_clause(); - } - } - this.state = 8599; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public set_clause(): Set_clauseContext { - let localContext = new Set_clauseContext(this.context, this.state); - this.enterRule(localContext, 986, PostgreSqlParser.RULE_set_clause); - try { - this.state = 8618; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 826, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 8600; - this.set_target(); - this.state = 8601; - this.match(PostgreSqlParser.EQUAL); - this.state = 8602; - this.a_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 8604; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8605; - this.set_target_list(); - this.state = 8606; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 8607; - this.match(PostgreSqlParser.EQUAL); - this.state = 8616; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 825, this.context) ) { - case 1: - { - this.state = 8609; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 824, this.context) ) { - case 1: - { - this.state = 8608; - this.match(PostgreSqlParser.KW_ROW); - } - break; - } - this.state = 8611; - this.a_expr(); + this.state = 6520; + this.table_name(); } break; - case 2: + case PostgreSqlParser.OPEN_PAREN: { - this.state = 8612; + this.state = 6521; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8613; - this.select_clause(); - this.state = 8614; + this.state = 6522; + this.table_name(); + this.state = 6523; this.match(PostgreSqlParser.CLOSE_PAREN); } break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public set_target(): Set_targetContext { - let localContext = new Set_targetContext(this.context, this.state); - this.enterRule(localContext, 988, PostgreSqlParser.RULE_set_target); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8620; - this.column_name(); - this.state = 8621; - this.opt_indirection(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public set_target_list(): Set_target_listContext { - let localContext = new Set_target_listContext(this.context, this.state); - this.enterRule(localContext, 990, PostgreSqlParser.RULE_set_target_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8623; - this.set_target(); - this.state = 8628; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 8624; - this.match(PostgreSqlParser.COMMA); - this.state = 8625; - this.set_target(); - } - } - this.state = 8630; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public declarecursorstmt(): DeclarecursorstmtContext { - let localContext = new DeclarecursorstmtContext(this.context, this.state); - this.enterRule(localContext, 992, PostgreSqlParser.RULE_declarecursorstmt); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8631; - this.match(PostgreSqlParser.KW_DECLARE); - this.state = 8632; - this.cursor_name(); - this.state = 8633; - this.cursor_options(); - this.state = 8634; - this.match(PostgreSqlParser.KW_CURSOR); - this.state = 8635; - this.opt_hold(); - this.state = 8636; - this.match(PostgreSqlParser.KW_FOR); - this.state = 8637; - this.selectstmt(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public cursor_name(): Cursor_nameContext { - let localContext = new Cursor_nameContext(this.context, this.state); - this.enterRule(localContext, 994, PostgreSqlParser.RULE_cursor_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8639; - this.name(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public cursor_options(): Cursor_optionsContext { - let localContext = new Cursor_optionsContext(this.context, this.state); - this.enterRule(localContext, 996, PostgreSqlParser.RULE_cursor_options); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8648; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 107 || _la === 240 || _la === 269 || _la === 324) { - { - this.state = 8646; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_NO: - { - this.state = 8641; - this.match(PostgreSqlParser.KW_NO); - this.state = 8642; - this.match(PostgreSqlParser.KW_SCROLL); - } - break; - case PostgreSqlParser.KW_SCROLL: - { - this.state = 8643; - this.match(PostgreSqlParser.KW_SCROLL); - } - break; - case PostgreSqlParser.KW_BINARY: - { - this.state = 8644; - this.match(PostgreSqlParser.KW_BINARY); - } - break; - case PostgreSqlParser.KW_INSENSITIVE: - { - this.state = 8645; - this.match(PostgreSqlParser.KW_INSENSITIVE); - } - break; default: throw new antlr.NoViableAltException(this); } } - this.state = 8650; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_hold(): Opt_holdContext { - let localContext = new Opt_holdContext(this.context, this.state); - this.enterRule(localContext, 998, PostgreSqlParser.RULE_opt_hold); - try { - this.state = 8656; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FOR: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_WITH: - this.enterOuterAlt(localContext, 2); - { - this.state = 8652; - this.match(PostgreSqlParser.KW_WITH); - this.state = 8653; - this.match(PostgreSqlParser.KW_HOLD); - } break; - case PostgreSqlParser.KW_WITHOUT: + case 3: this.enterOuterAlt(localContext, 3); { - this.state = 8654; - this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 8655; - this.match(PostgreSqlParser.KW_HOLD); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public selectstmt(): SelectstmtContext { - let localContext = new SelectstmtContext(this.context, this.state); - this.enterRule(localContext, 1000, PostgreSqlParser.RULE_selectstmt); - try { - this.state = 8660; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 831, this.context) ) { - case 1: - localContext = new SelectStatementContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 8658; - this.select_no_parens(); - } - break; - case 2: - localContext = new SelectStatementContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 8659; - this.select_with_parens(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public select_with_parens(): Select_with_parensContext { - let localContext = new Select_with_parensContext(this.context, this.state); - this.enterRule(localContext, 1002, PostgreSqlParser.RULE_select_with_parens); - try { - this.state = 8670; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 832, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 8662; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8663; - this.select_no_parens(); - this.state = 8664; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 8666; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8667; - this.select_with_parens(); - this.state = 8668; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public select_no_parens(): Select_no_parensContext { - let localContext = new Select_no_parensContext(this.context, this.state); - this.enterRule(localContext, 1004, PostgreSqlParser.RULE_select_no_parens); - let _la: number; - try { - this.state = 8701; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.KW_SELECT: - case PostgreSqlParser.KW_TABLE: - case PostgreSqlParser.KW_VALUES: - this.enterOuterAlt(localContext, 1); - { - this.state = 8672; - this.select_clause(); - this.state = 8674; + this.state = 6527; + this.match(PostgreSqlParser.KW_TABLES); + this.state = 6528; + this.match(PostgreSqlParser.KW_IN); + this.state = 6529; + this.match(PostgreSqlParser.KW_SCHEMA); + this.state = 6532; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 8673; - this.opt_sort_clause(); - } - } - - this.state = 8684; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 836, this.context) ) { - case 1: - { - this.state = 8676; - this.for_locking_clause(); - this.state = 8678; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 834, this.context) ) { - case 1: - { - this.state = 8677; - this.opt_select_limit(); - } - break; - } - } - break; - case 2: - { - this.state = 8680; - this.select_limit(); - this.state = 8682; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 8681; - this.opt_for_locking_clause(); - } - } - - } - break; - } - } - break; - case PostgreSqlParser.KW_WITH: - this.enterOuterAlt(localContext, 2); - { - this.state = 8686; - this.with_clause(); - this.state = 8687; - this.select_clause(); - this.state = 8689; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 8688; - this.opt_sort_clause(); - } - } - - this.state = 8699; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 840, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 8691; - this.for_locking_clause(); - this.state = 8693; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 838, this.context) ) { - case 1: - { - this.state = 8692; - this.opt_select_limit(); - } - break; - } + this.state = 6530; + this.schema_name(); } break; - case 2: + case PostgreSqlParser.KW_CURRENT_SCHEMA: { - this.state = 8695; - this.select_limit(); - this.state = 8697; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 8696; - this.opt_for_locking_clause(); - } - } - + this.state = 6531; + this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; + default: + throw new antlr.NoViableAltException(this); } } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -42179,27 +39232,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public select_clause(): Select_clauseContext { - let localContext = new Select_clauseContext(this.context, this.state); - this.enterRule(localContext, 1006, PostgreSqlParser.RULE_select_clause); + public relation_expr_list(): Relation_expr_listContext { + let localContext = new Relation_expr_listContext(this.context, this.state); + this.enterRule(localContext, 628, PostgreSqlParser.RULE_relation_expr_list); + let _la: number; try { - this.state = 8705; + this.enterOuterAlt(localContext, 1); + { + this.state = 6536; + this.relation_expr(); + this.state = 6541; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 842, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 8703; - this.simple_select(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 8704; - this.select_with_parens(); + this.state = 6537; + this.match(PostgreSqlParser.COMMA); + this.state = 6538; + this.relation_expr(); } - break; + } + this.state = 6543; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -42216,267 +39273,35 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public simple_select(): Simple_selectContext { - let localContext = new Simple_selectContext(this.context, this.state); - this.enterRule(localContext, 1008, PostgreSqlParser.RULE_simple_select); + public relation_expr_opt_alias(): Relation_expr_opt_aliasContext { + let localContext = new Relation_expr_opt_aliasContext(this.context, this.state); + this.enterRule(localContext, 630, PostgreSqlParser.RULE_relation_expr_opt_alias); let _la: number; try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8752; + this.state = 6544; + this.relation_expr(); + this.state = 6549; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_SELECT: + switch (this.interpreter.adaptivePredict(this.tokenStream, 881, this.context) ) { + case 1: { - this.state = 8707; - this.match(PostgreSqlParser.KW_SELECT); - this.state = 8723; + this.state = 6546; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 848, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 36) { { - this.state = 8709; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 843, this.context) ) { - case 1: - { - this.state = 8708; - this.opt_all_clause(); - } - break; - } - this.state = 8712; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 844, this.context) ) { - case 1: - { - this.state = 8711; - this.into_clause(); - } - break; - } - this.state = 8715; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 845, this.context) ) { - case 1: - { - this.state = 8714; - this.opt_target_list(); - } - break; - } - } - break; - case 2: - { - this.state = 8718; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 846, this.context) ) { - case 1: - { - this.state = 8717; - this.distinct_clause(); - } - break; - } - this.state = 8721; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 847, this.context) ) { - case 1: - { - this.state = 8720; - this.target_list(); - } - break; - } - } - break; - } - this.state = 8726; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 849, this.context) ) { - case 1: - { - this.state = 8725; - this.into_clause(); - } - break; - } - this.state = 8729; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64) { - { - this.state = 8728; - this.from_clause(); - } - } - - this.state = 8732; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { - { - this.state = 8731; - this.where_clause(); - } - } - - this.state = 8735; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 66) { - { - this.state = 8734; - this.group_clause(); - } - } - - this.state = 8738; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 67) { - { - this.state = 8737; - this.having_clause(); + this.state = 6545; + this.match(PostgreSqlParser.KW_AS); } } - this.state = 8741; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 854, this.context) ) { - case 1: - { - this.state = 8740; - this.window_clause(); - } - break; - } - } - break; - case PostgreSqlParser.KW_VALUES: - { - this.state = 8743; - this.values_clause(); - } - break; - case PostgreSqlParser.KW_TABLE: - { - this.state = 8744; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 8745; - this.relation_expr(); - } - break; - case PostgreSqlParser.OPEN_PAREN: - { - this.state = 8746; - this.select_with_parens(); - this.state = 8747; - this.set_operator_with_all_or_distinct(); - this.state = 8750; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 855, this.context) ) { - case 1: - { - this.state = 8748; - this.simple_select(); - } - break; - case 2: - { - this.state = 8749; - this.select_with_parens(); - } - break; - } + this.state = 6548; + this.colid(); } break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 8761; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 858, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 8754; - this.set_operator_with_all_or_distinct(); - this.state = 8757; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 857, this.context) ) { - case 1: - { - this.state = 8755; - this.simple_select(); - } - break; - case 2: - { - this.state = 8756; - this.select_with_parens(); - } - break; - } - } - } - } - this.state = 8763; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 858, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; } - } - finally { - this.exitRule(); - } - return localContext; - } - public set_operator(): Set_operatorContext { - let localContext = new Set_operatorContext(this.context, this.state); - this.enterRule(localContext, 1010, PostgreSqlParser.RULE_set_operator); - try { - this.state = 8767; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_UNION: - localContext = new UnionContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 8764; - this.match(PostgreSqlParser.KW_UNION); - } - break; - case PostgreSqlParser.KW_INTERSECT: - localContext = new IntersectContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 8765; - this.match(PostgreSqlParser.KW_INTERSECT); - } - break; - case PostgreSqlParser.KW_EXCEPT: - localContext = new ExceptContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 8766; - this.match(PostgreSqlParser.KW_EXCEPT); - } - break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -42493,25 +39318,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public set_operator_with_all_or_distinct(): Set_operator_with_all_or_distinctContext { - let localContext = new Set_operator_with_all_or_distinctContext(this.context, this.state); - this.enterRule(localContext, 1012, PostgreSqlParser.RULE_set_operator_with_all_or_distinct); - let _la: number; + public tablesample_clause(): Tablesample_clauseContext { + let localContext = new Tablesample_clauseContext(this.context, this.state); + this.enterRule(localContext, 632, PostgreSqlParser.RULE_tablesample_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 8769; - this.set_operator(); - this.state = 8771; + this.state = 6551; + this.match(PostgreSqlParser.KW_TABLESAMPLE); + this.state = 6552; + this.function_name(); + this.state = 6553; + this.execute_param_clause(); + this.state = 6559; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 30 || _la === 56) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 882, this.context) ) { + case 1: { - this.state = 8770; - this.all_or_distinct(); + this.state = 6554; + this.match(PostgreSqlParser.KW_REPEATABLE); + this.state = 6555; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6556; + this.expression(); + this.state = 6557; + this.match(PostgreSqlParser.CLOSE_PAREN); } + break; } - } } catch (re) { @@ -42528,139 +39362,64 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public with_clause(): With_clauseContext { - let localContext = new With_clauseContext(this.context, this.state); - this.enterRule(localContext, 1014, PostgreSqlParser.RULE_with_clause); + public func_table(): Func_tableContext { + let localContext = new Func_tableContext(this.context, this.state); + this.enterRule(localContext, 634, PostgreSqlParser.RULE_func_table); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8773; - this.match(PostgreSqlParser.KW_WITH); - this.state = 8775; + this.state = 6575; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 861, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 884, this.context) ) { case 1: { - this.state = 8774; - this.match(PostgreSqlParser.KW_RECURSIVE); + this.state = 6561; + this.func_expr_windowless(); } break; - } - this.state = 8777; - this.cte_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public cte_list(): Cte_listContext { - let localContext = new Cte_listContext(this.context, this.state); - this.enterRule(localContext, 1016, PostgreSqlParser.RULE_cte_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 8779; - this.common_table_expr(); - this.state = 8784; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 862, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { + case 2: + { + { + this.state = 6562; + this.match(PostgreSqlParser.KW_ROWS); + this.state = 6563; + this.match(PostgreSqlParser.KW_FROM); + this.state = 6564; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6565; + this.rowsfrom_item(); + this.state = 6570; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { { { - this.state = 8780; + this.state = 6566; this.match(PostgreSqlParser.COMMA); - this.state = 8781; - this.common_table_expr(); + this.state = 6567; + this.rowsfrom_item(); } } + this.state = 6572; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - this.state = 8786; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 862, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public common_table_expr(): Common_table_exprContext { - let localContext = new Common_table_exprContext(this.context, this.state); - this.enterRule(localContext, 1018, PostgreSqlParser.RULE_common_table_expr); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8787; - this.name(); - this.state = 8789; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 8788; - this.opt_name_list(); - } - } - - this.state = 8791; - this.match(PostgreSqlParser.KW_AS); - this.state = 8793; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77 || _la === 259) { - { - this.state = 8792; - this.opt_materialized(); + this.state = 6573; + this.match(PostgreSqlParser.CLOSE_PAREN); } - } - - this.state = 8795; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8796; - this.preparablestmt(); - this.state = 8797; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 8799; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 865, this.context) ) { - case 1: - { - this.state = 8798; - this.search_cluase(); } break; } - this.state = 8802; + this.state = 6579; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 866, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 885, this.context) ) { case 1: { - this.state = 8801; - this.cycle_cluase(); + this.state = 6577; + this.match(PostgreSqlParser.KW_WITH); + this.state = 6578; + this.match(PostgreSqlParser.KW_ORDINALITY); } break; } @@ -42680,34 +39439,31 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public search_cluase(): Search_cluaseContext { - let localContext = new Search_cluaseContext(this.context, this.state); - this.enterRule(localContext, 1020, PostgreSqlParser.RULE_search_cluase); + public rowsfrom_item(): Rowsfrom_itemContext { + let localContext = new Rowsfrom_itemContext(this.context, this.state); + this.enterRule(localContext, 636, PostgreSqlParser.RULE_rowsfrom_item); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8804; - this.match(PostgreSqlParser.KW_SEARCH); - this.state = 8805; + this.state = 6581; + this.func_expr_windowless(); + this.state = 6587; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 527 || _la === 528)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + if (_la === 36) { + { + this.state = 6582; + this.match(PostgreSqlParser.KW_AS); + this.state = 6583; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6584; + this.tablefuncelementlist(); + this.state = 6585; + this.match(PostgreSqlParser.CLOSE_PAREN); + } } - this.state = 8806; - this.match(PostgreSqlParser.KW_FIRST); - this.state = 8807; - this.match(PostgreSqlParser.KW_BY); - this.state = 8808; - this.column_list(); - this.state = 8809; - this.match(PostgreSqlParser.KW_SET); - this.state = 8810; - this.column_name(); + } } catch (re) { @@ -42724,41 +39480,16 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public cycle_cluase(): Cycle_cluaseContext { - let localContext = new Cycle_cluaseContext(this.context, this.state); - this.enterRule(localContext, 1022, PostgreSqlParser.RULE_cycle_cluase); - let _la: number; + public where_clause(): Where_clauseContext { + let localContext = new Where_clauseContext(this.context, this.state); + this.enterRule(localContext, 638, PostgreSqlParser.RULE_where_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 8812; - this.match(PostgreSqlParser.KW_CYCLE); - this.state = 8813; - this.column_list(); - this.state = 8814; - this.match(PostgreSqlParser.KW_SET); - this.state = 8815; - this.column_name(); - this.state = 8821; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 94) { - { - this.state = 8816; - this.match(PostgreSqlParser.KW_TO); - this.state = 8817; - this.name(); - this.state = 8818; - this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 8819; - this.name(); - } - } - - this.state = 8823; - this.match(PostgreSqlParser.KW_USING); - this.state = 8824; - this.column_name(); + this.state = 6589; + this.match(PostgreSqlParser.KW_WHERE); + this.state = 6590; + this.column_expr_noparen(); } } catch (re) { @@ -42775,55 +39506,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_materialized(): Opt_materializedContext { - let localContext = new Opt_materializedContext(this.context, this.state); - this.enterRule(localContext, 1024, PostgreSqlParser.RULE_opt_materialized); + public where_or_current_clause(): Where_or_current_clauseContext { + let localContext = new Where_or_current_clauseContext(this.context, this.state); + this.enterRule(localContext, 640, PostgreSqlParser.RULE_where_or_current_clause); try { - this.state = 8829; + this.enterOuterAlt(localContext, 1); + { + this.state = 6592; + this.match(PostgreSqlParser.KW_WHERE); + this.state = 6597; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_MATERIALIZED: - this.enterOuterAlt(localContext, 1); + switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { + case 1: { - this.state = 8826; - this.match(PostgreSqlParser.KW_MATERIALIZED); + this.state = 6593; + this.match(PostgreSqlParser.KW_CURRENT); + this.state = 6594; + this.match(PostgreSqlParser.KW_OF); + this.state = 6595; + this.colid(); } break; - case PostgreSqlParser.KW_NOT: - this.enterOuterAlt(localContext, 2); + case 2: { - this.state = 8827; - this.match(PostgreSqlParser.KW_NOT); - this.state = 8828; - this.match(PostgreSqlParser.KW_MATERIALIZED); + this.state = 6596; + this.expression(); } break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_with_clause(): Opt_with_clauseContext { - let localContext = new Opt_with_clauseContext(this.context, this.state); - this.enterRule(localContext, 1026, PostgreSqlParser.RULE_opt_with_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8831; - this.with_clause(); } } catch (re) { @@ -42840,31 +39550,30 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public into_clause(): Into_clauseContext { - let localContext = new Into_clauseContext(this.context, this.state); - this.enterRule(localContext, 1028, PostgreSqlParser.RULE_into_clause); + public tablefuncelementlist(): TablefuncelementlistContext { + let localContext = new TablefuncelementlistContext(this.context, this.state); + this.enterRule(localContext, 642, PostgreSqlParser.RULE_tablefuncelementlist); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8833; - this.match(PostgreSqlParser.KW_INTO); - this.state = 8838; + this.state = 6599; + this.tablefuncelement(); + this.state = 6604; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 869, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 8834; - this.opt_strict(); - this.state = 8835; - this.opttempTableName(); - } - break; - case 2: { - this.state = 8837; - this.into_target(); + this.state = 6600; + this.match(PostgreSqlParser.COMMA); + this.state = 6601; + this.tablefuncelement(); } - break; + } + this.state = 6606; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } } } @@ -42882,27 +39591,27 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_strict(): Opt_strictContext { - let localContext = new Opt_strictContext(this.context, this.state); - this.enterRule(localContext, 1030, PostgreSqlParser.RULE_opt_strict); + public tablefuncelement(): TablefuncelementContext { + let localContext = new TablefuncelementContext(this.context, this.state); + this.enterRule(localContext, 644, PostgreSqlParser.RULE_tablefuncelement); try { - this.state = 8842; + this.enterOuterAlt(localContext, 1); + { + this.state = 6607; + this.colid(); + this.state = 6608; + this.typename(); + this.state = 6610; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 870, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 889, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 8841; - this.match(PostgreSqlParser.KW_STRICT); + this.state = 6609; + this.opt_collate_clause(); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -42918,92 +39627,79 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opttempTableName(): OpttempTableNameContext { - let localContext = new OpttempTableNameContext(this.context, this.state); - this.enterRule(localContext, 1032, PostgreSqlParser.RULE_opttempTableName); + public xmltable(): XmltableContext { + let localContext = new XmltableContext(this.context, this.state); + this.enterRule(localContext, 646, PostgreSqlParser.RULE_xmltable); let _la: number; try { - this.state = 8860; + this.enterOuterAlt(localContext, 1); + { + this.state = 6612; + this.match(PostgreSqlParser.KW_XMLTABLE); + this.state = 6613; + this.match(PostgreSqlParser.OPEN_PAREN); + { + this.state = 6627; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 874, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 891, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 8845; + this.state = 6614; + this.match(PostgreSqlParser.KW_XMLNAMESPACES); + this.state = 6615; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6616; + this.xml_namespace_el(); + this.state = 6621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 213 || _la === 254) { + while (_la === 6) { { - this.state = 8844; - _la = this.tokenStream.LA(1); - if(!(_la === 213 || _la === 254)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 8847; - _la = this.tokenStream.LA(1); - if(!(_la === 352 || _la === 354)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 8849; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 92) { { - this.state = 8848; - this.opt_table(); + this.state = 6617; + this.match(PostgreSqlParser.COMMA); + this.state = 6618; + this.xml_namespace_el(); } - } - - this.state = 8851; - this.table_name_create(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 8852; - this.match(PostgreSqlParser.KW_UNLOGGED); - this.state = 8854; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 92) { - { - this.state = 8853; - this.opt_table(); } + this.state = 6623; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 8856; - this.table_name_create(); + this.state = 6624; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6625; + this.match(PostgreSqlParser.COMMA); } break; - case 3: - this.enterOuterAlt(localContext, 3); + } + this.state = 6629; + this.primaryExpression(0); + this.state = 6630; + this.xmlexists_argument(); + this.state = 6631; + this.match(PostgreSqlParser.KW_COLUMNS); + this.state = 6632; + this.xmltable_column_el(); + this.state = 6637; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { { - this.state = 8857; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 8858; - this.table_name_create(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); { - this.state = 8859; - this.table_name_create(); + this.state = 6633; + this.match(PostgreSqlParser.COMMA); + this.state = 6634; + this.xmltable_column_el(); } - break; + } + this.state = 6639; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 6640; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -43020,573 +39716,25 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_table(): Opt_tableContext { - let localContext = new Opt_tableContext(this.context, this.state); - this.enterRule(localContext, 1034, PostgreSqlParser.RULE_opt_table); + public xmltable_column_el(): Xmltable_column_elContext { + let localContext = new Xmltable_column_elContext(this.context, this.state); + this.enterRule(localContext, 648, PostgreSqlParser.RULE_xmltable_column_el); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8862; - this.match(PostgreSqlParser.KW_TABLE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public all_or_distinct(): All_or_distinctContext { - let localContext = new All_or_distinctContext(this.context, this.state); - this.enterRule(localContext, 1036, PostgreSqlParser.RULE_all_or_distinct); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8864; - _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 56)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public distinct_clause(): Distinct_clauseContext { - let localContext = new Distinct_clauseContext(this.context, this.state); - this.enterRule(localContext, 1038, PostgreSqlParser.RULE_distinct_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8866; - this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 8872; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 875, this.context) ) { - case 1: - { - this.state = 8867; - this.match(PostgreSqlParser.KW_ON); - this.state = 8868; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8869; - this.expr_list(); - this.state = 8870; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_all_clause(): Opt_all_clauseContext { - let localContext = new Opt_all_clauseContext(this.context, this.state); - this.enterRule(localContext, 1040, PostgreSqlParser.RULE_opt_all_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8874; - this.match(PostgreSqlParser.KW_ALL); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_sort_clause(): Opt_sort_clauseContext { - let localContext = new Opt_sort_clauseContext(this.context, this.state); - this.enterRule(localContext, 1042, PostgreSqlParser.RULE_opt_sort_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8876; - this.sort_clause(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sort_clause(): Sort_clauseContext { - let localContext = new Sort_clauseContext(this.context, this.state); - this.enterRule(localContext, 1044, PostgreSqlParser.RULE_sort_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8878; - this.match(PostgreSqlParser.KW_ORDER); - this.state = 8879; - this.match(PostgreSqlParser.KW_BY); - this.state = 8880; - this.sortby_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sortby_list(): Sortby_listContext { - let localContext = new Sortby_listContext(this.context, this.state); - this.enterRule(localContext, 1046, PostgreSqlParser.RULE_sortby_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8882; - this.sortby(); - this.state = 8887; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 8883; - this.match(PostgreSqlParser.COMMA); - this.state = 8884; - this.sortby(); - } - } - this.state = 8889; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sortby(): SortbyContext { - let localContext = new SortbyContext(this.context, this.state); - this.enterRule(localContext, 1048, PostgreSqlParser.RULE_sortby); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8890; - this.column_expr_noparen(); - this.state = 8894; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 877, this.context) ) { - case 1: - { - this.state = 8891; - this.match(PostgreSqlParser.KW_USING); - this.state = 8892; - this.qual_all_op(); - } - break; - case 2: - { - this.state = 8893; - this.opt_asc_desc(); - } - break; - } - this.state = 8897; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { - case 1: - { - this.state = 8896; - this.opt_nulls_order(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public select_limit(): Select_limitContext { - let localContext = new Select_limitContext(this.context, this.state); - this.enterRule(localContext, 1050, PostgreSqlParser.RULE_select_limit); - let _la: number; - try { - this.state = 8911; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_LIMIT: - this.enterOuterAlt(localContext, 1); - { - this.state = 8899; - this.limit_clause(); - this.state = 8901; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 79) { - { - this.state = 8900; - this.offset_clause(); - } - } - - } - break; - case PostgreSqlParser.KW_OFFSET: - this.enterOuterAlt(localContext, 2); - { - this.state = 8903; - this.offset_clause(); - this.state = 8905; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 880, this.context) ) { - case 1: - { - this.state = 8904; - this.fetch_clause(); - } - break; - } - } - break; - case PostgreSqlParser.KW_FETCH: - this.enterOuterAlt(localContext, 3); - { - this.state = 8907; - this.fetch_clause(); - this.state = 8909; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 79) { - { - this.state = 8908; - this.offset_clause(); - } - } - - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_select_limit(): Opt_select_limitContext { - let localContext = new Opt_select_limitContext(this.context, this.state); - this.enterRule(localContext, 1052, PostgreSqlParser.RULE_opt_select_limit); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8913; - this.select_limit(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public limit_clause(): Limit_clauseContext { - let localContext = new Limit_clauseContext(this.context, this.state); - this.enterRule(localContext, 1054, PostgreSqlParser.RULE_limit_clause); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8915; - this.match(PostgreSqlParser.KW_LIMIT); - this.state = 8916; - this.select_limit_value(); - this.state = 8919; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 8917; - this.match(PostgreSqlParser.COMMA); - this.state = 8918; - this.select_offset_value(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public fetch_clause(): Fetch_clauseContext { - let localContext = new Fetch_clauseContext(this.context, this.state); - this.enterRule(localContext, 1056, PostgreSqlParser.RULE_fetch_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8921; - this.match(PostgreSqlParser.KW_FETCH); - this.state = 8922; - this.first_or_next(); - this.state = 8936; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 886, this.context) ) { - case 1: - { - this.state = 8923; - this.select_fetch_first_value(); - this.state = 8924; - this.row_or_rows(); - this.state = 8928; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ONLY: - { - this.state = 8925; - this.match(PostgreSqlParser.KW_ONLY); - } - break; - case PostgreSqlParser.KW_WITH: - { - this.state = 8926; - this.match(PostgreSqlParser.KW_WITH); - this.state = 8927; - this.match(PostgreSqlParser.KW_TIES); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 2: - { - this.state = 8930; - this.row_or_rows(); - this.state = 8934; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ONLY: - { - this.state = 8931; - this.match(PostgreSqlParser.KW_ONLY); - } - break; - case PostgreSqlParser.KW_WITH: - { - this.state = 8932; - this.match(PostgreSqlParser.KW_WITH); - this.state = 8933; - this.match(PostgreSqlParser.KW_TIES); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public offset_clause(): Offset_clauseContext { - let localContext = new Offset_clauseContext(this.context, this.state); - this.enterRule(localContext, 1058, PostgreSqlParser.RULE_offset_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8938; - this.match(PostgreSqlParser.KW_OFFSET); - this.state = 8943; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { - case 1: - { - this.state = 8939; - this.select_fetch_first_value(); - this.state = 8940; - this.row_or_rows(); - } - break; - case 2: - { - this.state = 8942; - this.select_offset_value(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public select_limit_value(): Select_limit_valueContext { - let localContext = new Select_limit_valueContext(this.context, this.state); - this.enterRule(localContext, 1060, PostgreSqlParser.RULE_select_limit_value); - try { - this.state = 8947; + this.state = 6642; + this.colid(); + this.state = 6661; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.PARAM: - case PostgreSqlParser.Operator: case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_CASE: - case PostgreSqlParser.KW_CAST: case PostgreSqlParser.KW_COLLATE: case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CURRENT_CATALOG: - case PostgreSqlParser.KW_CURRENT_DATE: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_TIME: - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_LOCALTIME: - case PostgreSqlParser.KW_LOCALTIMESTAMP: - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_NULL: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -43997,29 +40145,160 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.StringConstant: case PostgreSqlParser.UnicodeEscapeStringConstant: case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.BinaryStringConstant: - case PostgreSqlParser.HexadecimalStringConstant: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); { - this.state = 8945; - this.a_expr(); + this.state = 6643; + this.typename(); + this.state = 6657; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { + { + this.state = 6653; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + this.state = 6653; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 6646; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 893, this.context) ) { + case 1: + { + this.state = 6644; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + case 2: + { + this.state = 6645; + this.identifier(); + } + break; + } + this.state = 6648; + this.expression(); + } + break; + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_NULL: + { + this.state = 6650; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 6649; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 6652; + this.match(PostgreSqlParser.KW_NULL); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + this.state = 6655; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584); + } + } + } break; - case PostgreSqlParser.KW_ALL: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_FOR: { - this.state = 8946; - this.match(PostgreSqlParser.KW_ALL); + this.state = 6659; + this.match(PostgreSqlParser.KW_FOR); + this.state = 6660; + this.match(PostgreSqlParser.KW_ORDINALITY); } break; default: throw new antlr.NoViableAltException(this); } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -44035,14 +40314,33 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public select_offset_value(): Select_offset_valueContext { - let localContext = new Select_offset_valueContext(this.context, this.state); - this.enterRule(localContext, 1062, PostgreSqlParser.RULE_select_offset_value); + public xml_namespace_el(): Xml_namespace_elContext { + let localContext = new Xml_namespace_elContext(this.context, this.state); + this.enterRule(localContext, 650, PostgreSqlParser.RULE_xml_namespace_el); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8949; - this.a_expr(); + this.state = 6669; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 899, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 6663; + this.primaryExpression(0); + this.state = 6664; + this.match(PostgreSqlParser.KW_AS); + this.state = 6665; + this.collabel(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 6667; + this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 6668; + this.primaryExpression(0); + } + break; } } catch (re) { @@ -44059,477 +40357,260 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public select_fetch_first_value(): Select_fetch_first_valueContext { - let localContext = new Select_fetch_first_valueContext(this.context, this.state); - this.enterRule(localContext, 1064, PostgreSqlParser.RULE_select_fetch_first_value); + public typename(): TypenameContext { + let localContext = new TypenameContext(this.context, this.state); + this.enterRule(localContext, 652, PostgreSqlParser.RULE_typename); + let _la: number; try { - this.state = 8956; + let alternative: number; + this.state = 6697; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.PLUS: + switch (this.interpreter.adaptivePredict(this.tokenStream, 905, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8951; - this.match(PostgreSqlParser.PLUS); - this.state = 8952; - this.i_or_f_const(); + this.state = 6672; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 415) { + { + this.state = 6671; + this.match(PostgreSqlParser.KW_SETOF); + } + } + + this.state = 6674; + this.simpletypename(); + this.state = 6691; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 904, this.context) ) { + case 1: + { + { + this.state = 6682; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 6675; + this.match(PostgreSqlParser.OPEN_BRACKET); + this.state = 6677; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 571) { + { + this.state = 6676; + this.match(PostgreSqlParser.Integral); + } + } + + this.state = 6679; + this.match(PostgreSqlParser.CLOSE_BRACKET); + } + } + } + this.state = 6684; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); + } + } + } + break; + case 2: + { + this.state = 6685; + this.match(PostgreSqlParser.KW_ARRAY); + this.state = 6689; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 903, this.context) ) { + case 1: + { + this.state = 6686; + this.match(PostgreSqlParser.OPEN_BRACKET); + this.state = 6687; + this.match(PostgreSqlParser.Integral); + this.state = 6688; + this.match(PostgreSqlParser.CLOSE_BRACKET); + } + break; + } + } + break; + } } break; - case PostgreSqlParser.MINUS: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8953; - this.match(PostgreSqlParser.MINUS); - this.state = 8954; - this.i_or_f_const(); + this.state = 6693; + this.qualified_name(); + this.state = 6694; + this.match(PostgreSqlParser.PERCENT); + this.state = 6695; + _la = this.tokenStream.LA(1); + if(!(_la === 360 || _la === 477)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.PARAM: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_CASE: - case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CURRENT_CATALOG: - case PostgreSqlParser.KW_CURRENT_DATE: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_TIME: - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - case PostgreSqlParser.KW_CURRENT_USER: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_LOCALTIME: - case PostgreSqlParser.KW_LOCALTIMESTAMP: - case PostgreSqlParser.KW_NULL: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public simpletypename(): SimpletypenameContext { + let localContext = new SimpletypenameContext(this.context, this.state); + this.enterRule(localContext, 654, PostgreSqlParser.RULE_simpletypename); + try { + this.state = 6714; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 910, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 6699; + this.type_function_name(); + this.state = 6701; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 906, this.context) ) { + case 1: + { + this.state = 6700; + this.attrs(); + } + break; + } + this.state = 6704; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 907, this.context) ) { + case 1: + { + this.state = 6703; + this.execute_param_clause(); + } + break; + } + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 6706; + this.consttypename(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 6707; + this.match(PostgreSqlParser.KW_INTERVAL); + this.state = 6712; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 909, this.context) ) { + case 1: + { + this.state = 6709; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 908, this.context) ) { + case 1: + { + this.state = 6708; + this.opt_interval(); + } + break; + } + } + break; + case 2: + { + this.state = 6711; + this.opt_float(); + } + break; + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public consttypename(): ConsttypenameContext { + let localContext = new ConsttypenameContext(this.context, this.state); + this.enterRule(localContext, 656, PostgreSqlParser.RULE_consttypename); + try { + this.state = 6720; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: case PostgreSqlParser.KW_DEC: case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: case PostgreSqlParser.KW_INT: case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: + this.enterOuterAlt(localContext, 1); + { + this.state = 6716; + this.numeric(); + } + break; + case PostgreSqlParser.KW_BIT: + this.enterOuterAlt(localContext, 2); + { + this.state = 6717; + this.bit(); + } + break; + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_VARCHAR: + this.enterOuterAlt(localContext, 3); + { + this.state = 6718; + this.character(); + } + break; case PostgreSqlParser.KW_TIME: case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.BinaryStringConstant: - case PostgreSqlParser.HexadecimalStringConstant: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 3); + this.enterOuterAlt(localContext, 4); { - this.state = 8955; - this.c_expr(); + this.state = 6719; + this.constdatetime(); } break; default: @@ -44550,25 +40631,106 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public i_or_f_const(): I_or_f_constContext { - let localContext = new I_or_f_constContext(this.context, this.state); - this.enterRule(localContext, 1066, PostgreSqlParser.RULE_i_or_f_const); + public numeric(): NumericContext { + let localContext = new NumericContext(this.context, this.state); + this.enterRule(localContext, 658, PostgreSqlParser.RULE_numeric); + let _la: number; try { - this.state = 8960; + this.state = 6738; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.Integral: + case PostgreSqlParser.KW_INT: this.enterOuterAlt(localContext, 1); { - this.state = 8958; - this.iconst(); + this.state = 6722; + this.match(PostgreSqlParser.KW_INT); } break; - case PostgreSqlParser.Numeric: + case PostgreSqlParser.KW_INTEGER: this.enterOuterAlt(localContext, 2); { - this.state = 8959; - this.fconst(); + this.state = 6723; + this.match(PostgreSqlParser.KW_INTEGER); + } + break; + case PostgreSqlParser.KW_SMALLINT: + this.enterOuterAlt(localContext, 3); + { + this.state = 6724; + this.match(PostgreSqlParser.KW_SMALLINT); + } + break; + case PostgreSqlParser.KW_BIGINT: + this.enterOuterAlt(localContext, 4); + { + this.state = 6725; + this.match(PostgreSqlParser.KW_BIGINT); + } + break; + case PostgreSqlParser.KW_REAL: + this.enterOuterAlt(localContext, 5); + { + this.state = 6726; + this.match(PostgreSqlParser.KW_REAL); + } + break; + case PostgreSqlParser.KW_FLOAT: + this.enterOuterAlt(localContext, 6); + { + this.state = 6727; + this.match(PostgreSqlParser.KW_FLOAT); + this.state = 6729; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 912, this.context) ) { + case 1: + { + this.state = 6728; + this.opt_float(); + } + break; + } + } + break; + case PostgreSqlParser.KW_DOUBLE: + this.enterOuterAlt(localContext, 7); + { + this.state = 6731; + this.match(PostgreSqlParser.KW_DOUBLE); + this.state = 6732; + this.match(PostgreSqlParser.KW_PRECISION); + } + break; + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_NUMERIC: + this.enterOuterAlt(localContext, 8); + { + this.state = 6733; + _la = this.tokenStream.LA(1); + if(!(((((_la - 394)) & ~0x1F) === 0 && ((1 << (_la - 394)) & 32771) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6735; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 913, this.context) ) { + case 1: + { + this.state = 6734; + this.execute_param_clause(); + } + break; + } + } + break; + case PostgreSqlParser.KW_BOOLEAN: + this.enterOuterAlt(localContext, 9); + { + this.state = 6737; + this.match(PostgreSqlParser.KW_BOOLEAN); } break; default: @@ -44589,22 +40751,18 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public row_or_rows(): Row_or_rowsContext { - let localContext = new Row_or_rowsContext(this.context, this.state); - this.enterRule(localContext, 1068, PostgreSqlParser.RULE_row_or_rows); - let _la: number; + public opt_float(): Opt_floatContext { + let localContext = new Opt_floatContext(this.context, this.state); + this.enterRule(localContext, 660, PostgreSqlParser.RULE_opt_float); try { this.enterOuterAlt(localContext, 1); { - this.state = 8962; - _la = this.tokenStream.LA(1); - if(!(_la === 320 || _la === 414)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 6740; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6741; + this.match(PostgreSqlParser.Integral); + this.state = 6742; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -44621,21 +40779,33 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public first_or_next(): First_or_nextContext { - let localContext = new First_or_nextContext(this.context, this.state); - this.enterRule(localContext, 1070, PostgreSqlParser.RULE_first_or_next); - let _la: number; + public bit(): BitContext { + let localContext = new BitContext(this.context, this.state); + this.enterRule(localContext, 662, PostgreSqlParser.RULE_bit); try { this.enterOuterAlt(localContext, 1); { - this.state = 8964; - _la = this.tokenStream.LA(1); - if(!(_la === 207 || _la === 268)) { - this.errorHandler.recoverInline(this); + this.state = 6744; + this.match(PostgreSqlParser.KW_BIT); + this.state = 6746; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 915, this.context) ) { + case 1: + { + this.state = 6745; + this.match(PostgreSqlParser.KW_VARYING); + } + break; } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 6749; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 916, this.context) ) { + case 1: + { + this.state = 6748; + this.execute_param_clause(); + } + break; } } } @@ -44653,28 +40823,85 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public group_clause(): Group_clauseContext { - let localContext = new Group_clauseContext(this.context, this.state); - this.enterRule(localContext, 1072, PostgreSqlParser.RULE_group_clause); + public character(): CharacterContext { + let localContext = new CharacterContext(this.context, this.state); + this.enterRule(localContext, 664, PostgreSqlParser.RULE_character); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8966; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 8967; - this.match(PostgreSqlParser.KW_BY); - this.state = 8969; + this.state = 6761; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 891, this.context) ) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_NCHAR: + { + this.state = 6751; + _la = this.tokenStream.LA(1); + if(!(((((_la - 391)) & ~0x1F) === 0 && ((1 << (_la - 391)) & 32771) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6753; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 917, this.context) ) { + case 1: + { + this.state = 6752; + this.match(PostgreSqlParser.KW_VARYING); + } + break; + } + } + break; + case PostgreSqlParser.KW_VARCHAR: + { + this.state = 6755; + this.match(PostgreSqlParser.KW_VARCHAR); + } + break; + case PostgreSqlParser.KW_NATIONAL: + { + this.state = 6756; + this.match(PostgreSqlParser.KW_NATIONAL); + this.state = 6757; + _la = this.tokenStream.LA(1); + if(!(_la === 391 || _la === 392)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6759; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 918, this.context) ) { + case 1: + { + this.state = 6758; + this.match(PostgreSqlParser.KW_VARYING); + } + break; + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 6764; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 920, this.context) ) { case 1: { - this.state = 8968; - this.all_or_distinct(); + this.state = 6763; + this.opt_float(); } break; } - this.state = 8971; - this.group_by_list(); } } catch (re) { @@ -44691,32 +40918,52 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public group_by_list(): Group_by_listContext { - let localContext = new Group_by_listContext(this.context, this.state); - this.enterRule(localContext, 1074, PostgreSqlParser.RULE_group_by_list); + public constdatetime(): ConstdatetimeContext { + let localContext = new ConstdatetimeContext(this.context, this.state); + this.enterRule(localContext, 666, PostgreSqlParser.RULE_constdatetime); + let _la: number; try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8973; - this.group_by_item(); - this.state = 8978; + this.state = 6766; + _la = this.tokenStream.LA(1); + if(!(_la === 418 || _la === 419)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6768; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 892, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 8974; - this.match(PostgreSqlParser.COMMA); - this.state = 8975; - this.group_by_item(); - } - } + switch (this.interpreter.adaptivePredict(this.tokenStream, 921, this.context) ) { + case 1: + { + this.state = 6767; + this.opt_float(); } - this.state = 8980; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 892, this.context); + break; + } + this.state = 6773; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 922, this.context) ) { + case 1: + { + this.state = 6770; + _la = this.tokenStream.LA(1); + if(!(_la === 105 || _la === 379)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6771; + this.match(PostgreSqlParser.KW_TIME); + this.state = 6772; + this.match(PostgreSqlParser.KW_ZONE); + } + break; } } } @@ -44734,59 +40981,143 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public group_by_item(): Group_by_itemContext { - let localContext = new Group_by_itemContext(this.context, this.state); - this.enterRule(localContext, 1076, PostgreSqlParser.RULE_group_by_item); + public opt_interval(): Opt_intervalContext { + let localContext = new Opt_intervalContext(this.context, this.state); + this.enterRule(localContext, 668, PostgreSqlParser.RULE_opt_interval); try { - this.state = 8990; + this.state = 6804; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 893, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_MONTH: this.enterOuterAlt(localContext, 1); { - this.state = 8981; - this.column_expr_noparen(); + this.state = 6775; + this.match(PostgreSqlParser.KW_MONTH); } break; - case 2: + case PostgreSqlParser.KW_SECOND: this.enterOuterAlt(localContext, 2); { - this.state = 8982; - this.empty_grouping_set(); + this.state = 6776; + this.interval_second(); } break; - case 3: + case PostgreSqlParser.KW_YEAR: this.enterOuterAlt(localContext, 3); { - this.state = 8983; - this.cube_clause(); + this.state = 6777; + this.match(PostgreSqlParser.KW_YEAR); + this.state = 6780; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 923, this.context) ) { + case 1: + { + this.state = 6778; + this.match(PostgreSqlParser.KW_TO); + this.state = 6779; + this.match(PostgreSqlParser.KW_MONTH); + } + break; + } } break; - case 4: + case PostgreSqlParser.KW_DAY: this.enterOuterAlt(localContext, 4); { - this.state = 8984; - this.rollup_clause(); + this.state = 6782; + this.match(PostgreSqlParser.KW_DAY); + this.state = 6789; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 925, this.context) ) { + case 1: + { + this.state = 6783; + this.match(PostgreSqlParser.KW_TO); + this.state = 6787; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_HOUR: + { + this.state = 6784; + this.match(PostgreSqlParser.KW_HOUR); + } + break; + case PostgreSqlParser.KW_MINUTE: + { + this.state = 6785; + this.match(PostgreSqlParser.KW_MINUTE); + } + break; + case PostgreSqlParser.KW_SECOND: + { + this.state = 6786; + this.interval_second(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + } } break; - case 5: + case PostgreSqlParser.KW_HOUR: this.enterOuterAlt(localContext, 5); { - this.state = 8985; - this.grouping_sets_clause(); + this.state = 6791; + this.match(PostgreSqlParser.KW_HOUR); + this.state = 6797; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 927, this.context) ) { + case 1: + { + this.state = 6792; + this.match(PostgreSqlParser.KW_TO); + this.state = 6795; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_MINUTE: + { + this.state = 6793; + this.match(PostgreSqlParser.KW_MINUTE); + } + break; + case PostgreSqlParser.KW_SECOND: + { + this.state = 6794; + this.interval_second(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + } } break; - case 6: + case PostgreSqlParser.KW_MINUTE: this.enterOuterAlt(localContext, 6); { - this.state = 8986; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8987; - this.column_expr_list_noparen(); - this.state = 8988; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6799; + this.match(PostgreSqlParser.KW_MINUTE); + this.state = 6802; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 928, this.context) ) { + case 1: + { + this.state = 6800; + this.match(PostgreSqlParser.KW_TO); + this.state = 6801; + this.interval_second(); + } + break; + } } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -44803,16 +41134,24 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public empty_grouping_set(): Empty_grouping_setContext { - let localContext = new Empty_grouping_setContext(this.context, this.state); - this.enterRule(localContext, 1078, PostgreSqlParser.RULE_empty_grouping_set); + public interval_second(): Interval_secondContext { + let localContext = new Interval_secondContext(this.context, this.state); + this.enterRule(localContext, 670, PostgreSqlParser.RULE_interval_second); try { this.enterOuterAlt(localContext, 1); { - this.state = 8992; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8993; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6806; + this.match(PostgreSqlParser.KW_SECOND); + this.state = 6808; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 930, this.context) ) { + case 1: + { + this.state = 6807; + this.opt_float(); + } + break; + } } } catch (re) { @@ -44829,50 +41168,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public rollup_clause(): Rollup_clauseContext { - let localContext = new Rollup_clauseContext(this.context, this.state); - this.enterRule(localContext, 1080, PostgreSqlParser.RULE_rollup_clause); + public comparisonOperator(): ComparisonOperatorContext { + let localContext = new ComparisonOperatorContext(this.context, this.state); + this.enterRule(localContext, 672, PostgreSqlParser.RULE_comparisonOperator); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8995; - this.match(PostgreSqlParser.KW_ROLLUP); - this.state = 8996; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8997; - this.column_expr_list_noparen(); - this.state = 8998; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6810; + _la = this.tokenStream.LA(1); + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 44237824) !== 0))) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public cube_clause(): Cube_clauseContext { - let localContext = new Cube_clauseContext(this.context, this.state); - this.enterRule(localContext, 1082, PostgreSqlParser.RULE_cube_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9000; - this.match(PostgreSqlParser.KW_CUBE); - this.state = 9001; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9002; - this.column_expr_list_noparen(); - this.state = 9003; - this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -44889,22 +41200,14 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public grouping_sets_clause(): Grouping_sets_clauseContext { - let localContext = new Grouping_sets_clauseContext(this.context, this.state); - this.enterRule(localContext, 1084, PostgreSqlParser.RULE_grouping_sets_clause); + public expression(): ExpressionContext { + let localContext = new ExpressionContext(this.context, this.state); + this.enterRule(localContext, 674, PostgreSqlParser.RULE_expression); try { this.enterOuterAlt(localContext, 1); { - this.state = 9005; - this.match(PostgreSqlParser.KW_GROUPING); - this.state = 9006; - this.match(PostgreSqlParser.KW_SETS); - this.state = 9007; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9008; - this.group_by_list(); - this.state = 9009; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6812; + this.booleanExpression(0); } } catch (re) { @@ -44921,81 +41224,556 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public having_clause(): Having_clauseContext { - let localContext = new Having_clauseContext(this.context, this.state); - this.enterRule(localContext, 1086, PostgreSqlParser.RULE_having_clause); + + public booleanExpression(): BooleanExpressionContext; + public booleanExpression(_p: number): BooleanExpressionContext; + public booleanExpression(_p?: number): BooleanExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new BooleanExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 676; + this.enterRecursionRule(localContext, 676, PostgreSqlParser.RULE_booleanExpression, _p); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 9011; - this.match(PostgreSqlParser.KW_HAVING); - this.state = 9012; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public for_locking_clause(): For_locking_clauseContext { - let localContext = new For_locking_clauseContext(this.context, this.state); - this.enterRule(localContext, 1088, PostgreSqlParser.RULE_for_locking_clause); - try { - this.state = 9018; + this.state = 6821; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 894, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9014; - this.for_locking_items(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9015; - this.match(PostgreSqlParser.KW_FOR); - this.state = 9016; - this.match(PostgreSqlParser.KW_READ); - this.state = 9017; - this.match(PostgreSqlParser.KW_ONLY); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.PARAM: + case PostgreSqlParser.Operator: + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_CASE: + case PostgreSqlParser.KW_CAST: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CURRENT_CATALOG: + case PostgreSqlParser.KW_CURRENT_DATE: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_TIME: + case PostgreSqlParser.KW_CURRENT_TIMESTAMP: + case PostgreSqlParser.KW_CURRENT_USER: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FALSE: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_LOCALTIME: + case PostgreSqlParser.KW_LOCALTIMESTAMP: + case PostgreSqlParser.KW_NULL: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_TRUE: + case PostgreSqlParser.KW_UNIQUE: + case PostgreSqlParser.KW_USER: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.BinaryStringConstant: + case PostgreSqlParser.HexadecimalStringConstant: + case PostgreSqlParser.Integral: + case PostgreSqlParser.Numeric: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + localContext = new PredicatedContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 6815; + (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); + this.state = 6817; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 931, this.context) ) { + case 1: + { + this.state = 6816; + this.predicate((localContext as PredicatedContext)._valueExpression); + } + break; + } + } + break; + case PostgreSqlParser.KW_NOT: + { + localContext = new LogicalNotContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 6819; + this.match(PostgreSqlParser.KW_NOT); + this.state = 6820; + this.booleanExpression(3); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 6831; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 934, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 6829; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 933, this.context) ) { + case 1: + { + localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); + (localContext as LogicalBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_booleanExpression); + this.state = 6823; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 6824; + (localContext as LogicalBinaryContext)._operator = this.match(PostgreSqlParser.KW_AND); + this.state = 6825; + (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); + } + break; + case 2: + { + localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); + (localContext as LogicalBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_booleanExpression); + this.state = 6826; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 6827; + (localContext as LogicalBinaryContext)._operator = this.match(PostgreSqlParser.KW_OR); + this.state = 6828; + (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); + } + break; + } + } + } + this.state = 6833; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 934, this.context); } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_for_locking_clause(): Opt_for_locking_clauseContext { - let localContext = new Opt_for_locking_clauseContext(this.context, this.state); - this.enterRule(localContext, 1090, PostgreSqlParser.RULE_opt_for_locking_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9020; - this.for_locking_clause(); } } catch (re) { @@ -45008,142 +41786,260 @@ export class PostgreSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public for_locking_items(): For_locking_itemsContext { - let localContext = new For_locking_itemsContext(this.context, this.state); - this.enterRule(localContext, 1092, PostgreSqlParser.RULE_for_locking_items); + public predicate(value: antlr.ParserRuleContext): PredicateContext { + let localContext = new PredicateContext(this.context, this.state, value); + this.enterRule(localContext, 678, PostgreSqlParser.RULE_predicate); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9023; + this.state = 6905; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { + switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { + case 1: + localContext = new ComparisonContext(localContext); + this.enterOuterAlt(localContext, 1); { + this.state = 6834; + this.comparisonOperator(); + this.state = 6835; + (localContext as ComparisonContext)._right = this.valueExpression(0); + } + break; + case 2: + localContext = new QuantifiedComparisonContext(localContext); + this.enterOuterAlt(localContext, 2); { - this.state = 9022; - this.for_locking_item(); + this.state = 6837; + this.comparisonOperator(); + this.state = 6838; + this.subquery_Op(); + this.state = 6839; + this.sub_type(); + this.state = 6845; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 935, this.context) ) { + case 1: + { + this.state = 6840; + this.select_with_parens(); + } + break; + case 2: + { + this.state = 6841; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6842; + this.expression(); + this.state = 6843; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; } } - this.state = 9025; + break; + case 3: + localContext = new BetweenContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 6848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 62); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public for_locking_item(): For_locking_itemContext { - let localContext = new For_locking_itemContext(this.context, this.state); - this.enterRule(localContext, 1094, PostgreSqlParser.RULE_for_locking_item); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9027; - this.for_locking_strength(); - this.state = 9029; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 896, this.context) ) { - case 1: + if (_la === 77) { + { + this.state = 6847; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 6850; + this.match(PostgreSqlParser.KW_BETWEEN); + this.state = 6851; + (localContext as BetweenContext)._lower = this.valueExpression(0); + this.state = 6852; + this.match(PostgreSqlParser.KW_AND); + this.state = 6853; + (localContext as BetweenContext)._upper = this.valueExpression(0); + } + break; + case 4: + localContext = new InListContext(localContext); + this.enterOuterAlt(localContext, 4); { - this.state = 9028; - this.locked_rels_list(); + this.state = 6856; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 6855; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 6858; + this.match(PostgreSqlParser.KW_IN); + this.state = 6859; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6860; + this.expression(); + this.state = 6865; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 6861; + this.match(PostgreSqlParser.COMMA); + this.state = 6862; + this.expression(); + } + } + this.state = 6867; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 6868; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; - } - this.state = 9032; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 897, this.context) ) { - case 1: + case 5: + localContext = new InSubqueryContext(localContext); + this.enterOuterAlt(localContext, 5); { - this.state = 9031; - this.opt_nowait_or_skip(); + this.state = 6871; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 6870; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 6873; + this.match(PostgreSqlParser.KW_IN); + this.state = 6874; + this.select_with_parens(); } break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public for_locking_strength(): For_locking_strengthContext { - let localContext = new For_locking_strengthContext(this.context, this.state); - this.enterRule(localContext, 1096, PostgreSqlParser.RULE_for_locking_strength); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9034; - this.match(PostgreSqlParser.KW_FOR); - this.state = 9044; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_UPDATE: + case 6: + localContext = new LikeContext(localContext); + this.enterOuterAlt(localContext, 6); { - this.state = 9037; + this.state = 6876; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 269) { + if (_la === 77) { { - this.state = 9035; - this.match(PostgreSqlParser.KW_NO); - this.state = 9036; - this.match(PostgreSqlParser.KW_KEY); + this.state = 6875; + this.match(PostgreSqlParser.KW_NOT); } } - this.state = 9039; - this.match(PostgreSqlParser.KW_UPDATE); + this.state = 6886; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_LIKE: + { + this.state = 6878; + this.match(PostgreSqlParser.KW_LIKE); + } + break; + case PostgreSqlParser.KW_ILIKE: + { + this.state = 6879; + this.match(PostgreSqlParser.KW_ILIKE); + } + break; + case PostgreSqlParser.KW_SIMILAR: + { + this.state = 6880; + this.match(PostgreSqlParser.KW_SIMILAR); + this.state = 6881; + this.match(PostgreSqlParser.KW_TO); + } + break; + case PostgreSqlParser.KW_BETWEEN: + { + this.state = 6882; + this.match(PostgreSqlParser.KW_BETWEEN); + this.state = 6884; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 91) { + { + this.state = 6883; + this.match(PostgreSqlParser.KW_SYMMETRIC); + } + } + + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 6888; + (localContext as LikeContext)._pattern = this.valueExpression(0); + this.state = 6891; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 943, this.context) ) { + case 1: + { + this.state = 6889; + this.match(PostgreSqlParser.KW_ESCAPE); + this.state = 6890; + (localContext as LikeContext)._escape = this.valueExpression(0); + } + break; + } } break; - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_SHARE: + case 7: + localContext = new NullPredicateContext(localContext); + this.enterOuterAlt(localContext, 7); { - this.state = 9041; + this.state = 6893; + this.match(PostgreSqlParser.KW_IS); + this.state = 6895; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 245) { + if (_la === 77) { { - this.state = 9040; - this.match(PostgreSqlParser.KW_KEY); + this.state = 6894; + this.match(PostgreSqlParser.KW_NOT); } } - this.state = 9043; - this.match(PostgreSqlParser.KW_SHARE); + this.state = 6897; + this.match(PostgreSqlParser.KW_NULL); + } + break; + case 8: + localContext = new DistinctFromContext(localContext); + this.enterOuterAlt(localContext, 8); + { + this.state = 6898; + this.match(PostgreSqlParser.KW_IS); + this.state = 6900; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 6899; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 6902; + this.match(PostgreSqlParser.KW_DISTINCT); + this.state = 6903; + this.match(PostgreSqlParser.KW_FROM); + this.state = 6904; + (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; - default: - throw new antlr.NoViableAltException(this); - } } } catch (re) { @@ -45160,135 +42056,157 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public locked_rels_list(): Locked_rels_listContext { - let localContext = new Locked_rels_listContext(this.context, this.state); - this.enterRule(localContext, 1098, PostgreSqlParser.RULE_locked_rels_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9046; - this.match(PostgreSqlParser.KW_OF); - this.state = 9047; - this.qualified_name_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); + + public valueExpression(): ValueExpressionContext; + public valueExpression(_p: number): ValueExpressionContext; + public valueExpression(_p?: number): ValueExpressionContext { + if (_p === undefined) { + _p = 0; } - return localContext; - } - public values_clause(): Values_clauseContext { - let localContext = new Values_clauseContext(this.context, this.state); - this.enterRule(localContext, 1100, PostgreSqlParser.RULE_values_clause); + + let parentContext = this.context; + let parentState = this.state; + let localContext = new ValueExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 680; + this.enterRecursionRule(localContext, 680, PostgreSqlParser.RULE_valueExpression, _p); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 9049; - this.match(PostgreSqlParser.KW_VALUES); - this.state = 9050; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9051; - this.expr_list(); - this.state = 9052; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 9060; + this.state = 6911; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 947, this.context) ) { + case 1: { + localContext = new ValueExpressionDefaultContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 6908; + this.primaryExpression(0); + } + break; + case 2: { - this.state = 9053; - this.match(PostgreSqlParser.COMMA); - this.state = 9054; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9055; - this.expr_list(); - this.state = 9056; - this.match(PostgreSqlParser.CLOSE_PAREN); + localContext = new ArithmeticUnaryContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 6909; + (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 12 || _la === 13)) { + (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); } + else { + this.errorHandler.reportMatch(this); + this.consume(); } - this.state = 9062; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public from_clause(): From_clauseContext { - let localContext = new From_clauseContext(this.context, this.state); - this.enterRule(localContext, 1102, PostgreSqlParser.RULE_from_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9063; - this.match(PostgreSqlParser.KW_FROM); - this.state = 9064; - this.from_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.state = 6910; + this.valueExpression(4); + } + break; } - } - finally { - this.exitRule(); - } - return localContext; - } - public from_list(): From_listContext { - let localContext = new From_listContext(this.context, this.state); - this.enterRule(localContext, 1104, PostgreSqlParser.RULE_from_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9066; - this.table_ref(); - this.state = 9071; + this.context!.stop = this.tokenStream.LT(-1); + this.state = 6929; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 949, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; { - { - this.state = 9067; - this.match(PostgreSqlParser.COMMA); - this.state = 9068; - this.table_ref(); + this.state = 6927; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 948, this.context) ) { + case 1: + { + localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); + this.state = 6913; + if (!(this.precpred(this.context, 3))) { + throw this.createFailedPredicateException("this.precpred(this.context, 3)"); + } + this.state = 6914; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 134234624) !== 0))) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6915; + (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); + } + break; + case 2: + { + localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); + this.state = 6916; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 6917; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 12 || _la === 13)) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6918; + (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); + } + break; + case 3: + { + localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ConcatenationContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); + this.state = 6919; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 6920; + this.match(PostgreSqlParser.CARET); + this.state = 6921; + (localContext as ConcatenationContext)._right = this.valueExpression(2); + } + break; + case 4: + { + localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); + this.state = 6922; + if (!(this.precpred(this.context, 5))) { + throw this.createFailedPredicateException("this.precpred(this.context, 5)"); + } + this.state = 6923; + this.match(PostgreSqlParser.KW_AT); + this.state = 6924; + this.match(PostgreSqlParser.KW_TIME); + this.state = 6925; + this.match(PostgreSqlParser.KW_ZONE); + this.state = 6926; + this.expression(); + } + break; } } } - this.state = 9073; + this.state = 6931; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 949, this.context); } } } @@ -45302,321 +42220,493 @@ export class PostgreSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public table_ref(): Table_refContext { - let localContext = new Table_refContext(this.context, this.state); - this.enterRule(localContext, 1106, PostgreSqlParser.RULE_table_ref); + + public primaryExpression(): PrimaryExpressionContext; + public primaryExpression(_p: number): PrimaryExpressionContext; + public primaryExpression(_p?: number): PrimaryExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new PrimaryExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 682; + this.enterRecursionRule(localContext, 682, PostgreSqlParser.RULE_primaryExpression, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 9135; + this.state = 7020; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 917, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 960, this.context) ) { case 1: { - this.state = 9076; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 903, this.context) ) { - case 1: - { - this.state = 9074; - this.relation_expr(); - } - break; - case 2: - { - this.state = 9075; - this.view_relation_expr(); - } - break; - } - this.state = 9079; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 904, this.context) ) { - case 1: - { - this.state = 9078; - this.opt_alias_clause(); - } - break; - } - this.state = 9082; - this.errorHandler.sync(this); + this.state = 6933; _la = this.tokenStream.LA(1); - if (_la === 472) { - { - this.state = 9081; - this.tablesample_clause(); - } + if(!(_la === 98 || _la === 396)) { + this.errorHandler.recoverInline(this); } - + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 6934; + this.select_with_parens(); } break; case 2: { - this.state = 9084; - this.func_table(); - this.state = 9086; + this.state = 6935; + this.match(PostgreSqlParser.KW_ARRAY); + this.state = 6938; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 906, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + { + this.state = 6936; + this.select_with_parens(); + } + break; + case PostgreSqlParser.OPEN_BRACKET: { - this.state = 9085; - this.func_alias_clause(); + this.state = 6937; + this.array_expr(); } break; + default: + throw new antlr.NoViableAltException(this); } } break; case 3: { - this.state = 9088; - this.xmltable(); - this.state = 9090; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 907, this.context) ) { - case 1: - { - this.state = 9089; - this.opt_alias_clause(); - } - break; - } + this.state = 6940; + this.match(PostgreSqlParser.PARAM); + this.state = 6941; + this.opt_indirection(); } break; case 4: { - this.state = 9092; - this.select_with_parens(); - this.state = 9094; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 908, this.context) ) { - case 1: - { - this.state = 9093; - this.opt_alias_clause(); - } - break; - } + this.state = 6942; + this.match(PostgreSqlParser.KW_GROUPING); + this.state = 6943; + this.execute_param_clause(); } break; case 5: { - this.state = 9096; - this.match(PostgreSqlParser.KW_LATERAL); - this.state = 9109; + this.state = 6944; + this.match(PostgreSqlParser.Integral); + } + break; + case 6: + { + this.state = 6945; + this.match(PostgreSqlParser.Numeric); + } + break; + case 7: + { + this.state = 6946; + this.match(PostgreSqlParser.BinaryStringConstant); + } + break; + case 8: + { + this.state = 6947; + this.match(PostgreSqlParser.HexadecimalStringConstant); + } + break; + case 9: + { + this.state = 6948; + this.function_name(); + this.state = 6958; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 912, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: { - this.state = 9097; - this.xmltable(); - this.state = 9099; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 909, this.context) ) { - case 1: - { - this.state = 9098; - this.opt_alias_clause(); - } - break; - } + this.state = 6949; + this.sconst(); } break; - case 2: + case PostgreSqlParser.OPEN_PAREN: { - this.state = 9101; - this.func_table(); - this.state = 9103; + this.state = 6950; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 6951; + this.func_arg_list(); + this.state = 6953; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 910, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 83) { { - this.state = 9102; - this.func_alias_clause(); + this.state = 6952; + this.sort_clause(); } - break; } + + this.state = 6955; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6956; + this.sconst(); } break; - case 3: - { - this.state = 9105; - this.select_with_parens(); - this.state = 9107; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 911, this.context) ) { - case 1: - { - this.state = 9106; - this.opt_alias_clause(); + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case 10: + { + this.state = 6961; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190 || ((((_la - 388)) & ~0x1F) === 0 && ((1 << (_la - 388)) & 3525731551) !== 0) || _la === 423) { + { + this.state = 6960; + this.consttypename(); + } + } + + this.state = 6963; + this.sconst(); + } + break; + case 11: + { + this.state = 6964; + this.match(PostgreSqlParser.KW_INTERVAL); + this.state = 6972; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 6965; + this.sconst(); + this.state = 6967; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { + case 1: + { + this.state = 6966; + this.opt_interval(); } break; } } break; + case PostgreSqlParser.OPEN_PAREN: + { + this.state = 6969; + this.opt_float(); + this.state = 6970; + this.sconst(); + } + break; + default: + throw new antlr.NoViableAltException(this); } } break; - case 6: + case 12: + { + this.state = 6974; + this.match(PostgreSqlParser.KW_TRUE); + } + break; + case 13: + { + this.state = 6975; + this.match(PostgreSqlParser.KW_FALSE); + } + break; + case 14: + { + this.state = 6976; + this.match(PostgreSqlParser.KW_NULL); + } + break; + case 15: + { + this.state = 6977; + this.match(PostgreSqlParser.PLSQLVARIABLENAME); + } + break; + case 16: { - this.state = 9111; + this.state = 6978; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9112; - this.table_ref(); - this.state = 9129; + this.state = 6979; + localContext._a_expr_in_parens = this.expression(); + this.state = 6980; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 6981; + this.opt_indirection(); + } + break; + case 17: + { + this.state = 6983; + this.match(PostgreSqlParser.KW_CASE); + this.state = 6985; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CROSS: + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 9113; - this.match(PostgreSqlParser.KW_CROSS); - this.state = 9114; - this.match(PostgreSqlParser.KW_JOIN); - this.state = 9115; - this.table_ref(); + this.state = 6984; + this.expression(); } - break; - case PostgreSqlParser.KW_NATURAL: + } + + this.state = 6988; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { { - this.state = 9116; - this.match(PostgreSqlParser.KW_NATURAL); - this.state = 9118; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { - { - this.state = 9117; - this.join_type(); - } + { + this.state = 6987; + this.when_clause(); } - - this.state = 9120; - this.match(PostgreSqlParser.KW_JOIN); - this.state = 9121; - this.table_ref(); } - break; - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_RIGHT: - { - this.state = 9123; + this.state = 6990; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { - { - this.state = 9122; - this.join_type(); - } + } while (_la === 102); + this.state = 6994; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 58) { + { + this.state = 6992; + this.match(PostgreSqlParser.KW_ELSE); + this.state = 6993; + this.expression(); } + } - this.state = 9125; - this.match(PostgreSqlParser.KW_JOIN); - this.state = 9126; - this.table_ref(); - this.state = 9127; - this.join_qual(); - } - break; - case PostgreSqlParser.CLOSE_PAREN: - break; - default: - break; + this.state = 6996; + this.match(PostgreSqlParser.KW_END); } - this.state = 9131; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 9133; + break; + case 18: + { + this.state = 6998; + this.func_expr(); + } + break; + case 19: + { + this.state = 6999; + this.select_with_parens(); + this.state = 7001; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 916, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 959, this.context) ) { case 1: { - this.state = 9132; - this.opt_alias_clause(); + this.state = 7000; + this.indirection(); } break; } } break; + case 20: + { + this.state = 7003; + this.explicit_row(); + } + break; + case 21: + { + this.state = 7004; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7005; + this.expression(); + this.state = 7006; + this.match(PostgreSqlParser.COMMA); + this.state = 7007; + this.expr_list(); + this.state = 7008; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case 22: + { + this.state = 7010; + this.row(); + this.state = 7011; + this.match(PostgreSqlParser.KW_OVERLAPS); + this.state = 7012; + this.row(); + } + break; + case 23: + { + this.state = 7014; + this.qualified_name(); + } + break; + case 24: + { + this.state = 7015; + _la = this.tokenStream.LA(1); + if(!(_la === 12 || _la === 13)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7016; + this.primaryExpression(5); + } + break; + case 25: + { + this.state = 7017; + this.qual_op(); + this.state = 7018; + this.primaryExpression(2); + } + break; } - this.state = 9155; + this.context!.stop = this.tokenStream.LT(-1); + this.state = 7049; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 921, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 965, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; { - this.state = 9153; + this.state = 7047; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CROSS: + switch (this.interpreter.adaptivePredict(this.tokenStream, 964, this.context) ) { + case 1: { - this.state = 9137; - this.match(PostgreSqlParser.KW_CROSS); - this.state = 9138; - this.match(PostgreSqlParser.KW_JOIN); - this.state = 9139; - this.table_ref(); + localContext = new PrimaryExpressionContext(parentContext, parentState); + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); + this.state = 7022; + if (!(this.precpred(this.context, 3))) { + throw this.createFailedPredicateException("this.precpred(this.context, 3)"); + } + this.state = 7023; + this.mathop(); + this.state = 7024; + this.primaryExpression(4); } break; - case PostgreSqlParser.KW_NATURAL: + case 2: { - this.state = 9140; - this.match(PostgreSqlParser.KW_NATURAL); - this.state = 9142; + localContext = new PrimaryExpressionContext(parentContext, parentState); + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); + this.state = 7026; + if (!(this.precpred(this.context, 6))) { + throw this.createFailedPredicateException("this.precpred(this.context, 6)"); + } + this.state = 7027; + this.match(PostgreSqlParser.TYPECAST); + this.state = 7028; + this.typename(); + } + break; + case 3: + { + localContext = new PrimaryExpressionContext(parentContext, parentState); + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); + this.state = 7029; + if (!(this.precpred(this.context, 4))) { + throw this.createFailedPredicateException("this.precpred(this.context, 4)"); + } + this.state = 7030; + this.qual_op(); + this.state = 7032; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 961, this.context) ) { + case 1: { - this.state = 9141; - this.join_type(); + this.state = 7031; + this.primaryExpression(0); } + break; } - - this.state = 9144; - this.match(PostgreSqlParser.KW_JOIN); - this.state = 9145; - this.table_ref(); } break; - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_RIGHT: + case 4: { - this.state = 9147; + localContext = new PrimaryExpressionContext(parentContext, parentState); + this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); + this.state = 7034; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 7035; + this.match(PostgreSqlParser.KW_IS); + this.state = 7037; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { + if (_la === 77) { { - this.state = 9146; - this.join_type(); + this.state = 7036; + this.match(PostgreSqlParser.KW_NOT); } } - this.state = 9149; - this.match(PostgreSqlParser.KW_JOIN); - this.state = 9150; - this.table_ref(); - this.state = 9151; - this.join_qual(); + this.state = 7045; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_DISTINCT: + { + this.state = 7039; + this.match(PostgreSqlParser.KW_DISTINCT); + this.state = 7040; + this.match(PostgreSqlParser.KW_FROM); + this.state = 7041; + this.primaryExpression(0); + } + break; + case PostgreSqlParser.KW_OF: + { + this.state = 7042; + this.match(PostgreSqlParser.KW_OF); + this.state = 7043; + this.prep_type_clause(); + } + break; + case PostgreSqlParser.KW_DOCUMENT: + { + this.state = 7044; + this.match(PostgreSqlParser.KW_DOCUMENT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; - default: - throw new antlr.NoViableAltException(this); } } } - this.state = 9157; + this.state = 7051; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 921, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 965, this.context); } } } @@ -45630,130 +42720,81 @@ export class PostgreSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public alias_clause(): Alias_clauseContext { - let localContext = new Alias_clauseContext(this.context, this.state); - this.enterRule(localContext, 1108, PostgreSqlParser.RULE_alias_clause); + public func_application(): Func_applicationContext { + let localContext = new Func_applicationContext(this.context, this.state); + this.enterRule(localContext, 684, PostgreSqlParser.RULE_func_application); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9159; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 9158; - this.match(PostgreSqlParser.KW_AS); - } - } - - this.state = 9161; - this.colid(); - this.state = 9166; + this.state = 7052; + this.function_name(); + this.state = 7078; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 923, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 971, this.context) ) { case 1: { - this.state = 9162; + this.state = 7053; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9163; - this.name_list(); - this.state = 9164; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_alias_clause(): Opt_alias_clauseContext { - let localContext = new Opt_alias_clauseContext(this.context, this.state); - this.enterRule(localContext, 1110, PostgreSqlParser.RULE_opt_alias_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9168; - this.alias_clause(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_alias_clause(): Func_alias_clauseContext { - let localContext = new Func_alias_clauseContext(this.context, this.state); - this.enterRule(localContext, 1112, PostgreSqlParser.RULE_func_alias_clause); - let _la: number; - try { - this.state = 9182; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 926, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9170; - this.alias_clause(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9176; + this.state = 7075; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AS: - { - this.state = 9171; - this.match(PostgreSqlParser.KW_AS); - this.state = 9173; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 9172; - this.colid(); - } - } - - } - break; + case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.PARAM: + case PostgreSqlParser.Operator: case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_CASE: + case PostgreSqlParser.KW_CAST: case PostgreSqlParser.KW_COLLATE: case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CURRENT_CATALOG: + case PostgreSqlParser.KW_CURRENT_DATE: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_TIME: + case PostgreSqlParser.KW_CURRENT_TIMESTAMP: + case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FALSE: case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_LOCALTIME: + case PostgreSqlParser.KW_LOCALTIMESTAMP: + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_NULL: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_TRUE: + case PostgreSqlParser.KW_UNIQUE: + case PostgreSqlParser.KW_USER: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: case PostgreSqlParser.KW_ACCESS: @@ -46087,6 +43128,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CUBE: case PostgreSqlParser.KW_GROUPING: case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: case PostgreSqlParser.KW_ORDINALITY: case PostgreSqlParser.KW_XMLTABLE: case PostgreSqlParser.KW_COLUMNS: @@ -46140,67 +43182,105 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.StringConstant: case PostgreSqlParser.UnicodeEscapeStringConstant: case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.BinaryStringConstant: + case PostgreSqlParser.HexadecimalStringConstant: + case PostgreSqlParser.Integral: + case PostgreSqlParser.Numeric: case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 9175; - this.colid(); + this.state = 7054; + this.func_arg_list(); + this.state = 7058; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 7055; + this.match(PostgreSqlParser.COMMA); + this.state = 7056; + this.match(PostgreSqlParser.KW_VARIADIC); + this.state = 7057; + this.func_arg_expr(); + } + } + + this.state = 7061; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 83) { + { + this.state = 7060; + this.sort_clause(); + } + } + + } + break; + case PostgreSqlParser.KW_VARIADIC: + { + this.state = 7063; + this.match(PostgreSqlParser.KW_VARIADIC); + this.state = 7064; + this.func_arg_expr(); + this.state = 7066; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 83) { + { + this.state = 7065; + this.sort_clause(); + } + } + + } + break; + case PostgreSqlParser.KW_ALL: + case PostgreSqlParser.KW_DISTINCT: + { + this.state = 7068; + _la = this.tokenStream.LA(1); + if(!(_la === 30 || _la === 56)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7069; + this.func_arg_list(); + this.state = 7071; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 83) { + { + this.state = 7070; + this.sort_clause(); + } + } + + } + break; + case PostgreSqlParser.STAR: + { + this.state = 7073; + this.match(PostgreSqlParser.STAR); + } + break; + case PostgreSqlParser.CLOSE_PAREN: + // tslint:disable-next-line:no-empty + { } break; default: throw new antlr.NoViableAltException(this); } - this.state = 9178; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9179; - this.tablefuncelementlist(); - this.state = 9180; + this.state = 7077; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public join_type(): Join_typeContext { - let localContext = new Join_typeContext(this.context, this.state); - this.enterRule(localContext, 1114, PostgreSqlParser.RULE_join_type); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9184; - _la = this.tokenStream.LA(1); - if(!(((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9186; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 123) { - { - this.state = 9185; - this.match(PostgreSqlParser.KW_OUTER); - } - } - } } catch (re) { @@ -46217,37 +43297,489 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public join_qual(): Join_qualContext { - let localContext = new Join_qualContext(this.context, this.state); - this.enterRule(localContext, 1116, PostgreSqlParser.RULE_join_qual); + public func_expr(): Func_exprContext { + let localContext = new Func_exprContext(this.context, this.state); + this.enterRule(localContext, 686, PostgreSqlParser.RULE_func_expr); try { - this.state = 9195; + this.state = 7105; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_USING: + switch (this.interpreter.adaptivePredict(this.tokenStream, 976, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 9188; - this.match(PostgreSqlParser.KW_USING); - this.state = 9189; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9190; - this.column_list(); - this.state = 9191; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 7080; + this.func_application(); + this.state = 7087; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 972, this.context) ) { + case 1: + { + this.state = 7081; + this.match(PostgreSqlParser.KW_WITHIN); + this.state = 7082; + this.match(PostgreSqlParser.KW_GROUP); + this.state = 7083; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7084; + this.sort_clause(); + this.state = 7085; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + } + this.state = 7095; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 973, this.context) ) { + case 1: + { + this.state = 7089; + this.match(PostgreSqlParser.KW_FILTER); + this.state = 7090; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7091; + this.match(PostgreSqlParser.KW_WHERE); + this.state = 7092; + this.expression(); + this.state = 7093; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + } + this.state = 7102; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 975, this.context) ) { + case 1: + { + this.state = 7097; + this.match(PostgreSqlParser.KW_OVER); + this.state = 7100; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + { + this.state = 7098; + this.window_specification(); + } + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 7099; + this.colid(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + } } break; - case PostgreSqlParser.KW_ON: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 9193; - this.match(PostgreSqlParser.KW_ON); - this.state = 9194; - this.a_expr(); + this.state = 7104; + this.func_expr_common_subexpr(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -46264,893 +43796,668 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public relation_expr(): Relation_exprContext { - let localContext = new Relation_exprContext(this.context, this.state); - this.enterRule(localContext, 1118, PostgreSqlParser.RULE_relation_expr); - let _la: number; + public func_expr_windowless(): Func_expr_windowlessContext { + let localContext = new Func_expr_windowlessContext(this.context, this.state); + this.enterRule(localContext, 688, PostgreSqlParser.RULE_func_expr_windowless); try { - this.state = 9218; + this.state = 7109; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 933, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 977, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 9198; + this.state = 7107; + this.func_application(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7108; + this.func_expr_common_subexpr(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public func_expr_common_subexpr(): Func_expr_common_subexprContext { + let localContext = new Func_expr_common_subexprContext(this.context, this.state); + this.enterRule(localContext, 690, PostgreSqlParser.RULE_func_expr_common_subexpr); + let _la: number; + try { + this.state = 7285; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_COLLATION: + this.enterOuterAlt(localContext, 1); + { + this.state = 7111; + this.match(PostgreSqlParser.KW_COLLATION); + this.state = 7112; + this.match(PostgreSqlParser.KW_FOR); + this.state = 7113; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7114; + this.expression(); + this.state = 7115; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_CURRENT_DATE: + this.enterOuterAlt(localContext, 2); + { + this.state = 7117; + this.match(PostgreSqlParser.KW_CURRENT_DATE); + } + break; + case PostgreSqlParser.KW_CURRENT_TIME: + case PostgreSqlParser.KW_CURRENT_TIMESTAMP: + case PostgreSqlParser.KW_LOCALTIME: + case PostgreSqlParser.KW_LOCALTIMESTAMP: + this.enterOuterAlt(localContext, 3); + { + this.state = 7118; + _la = this.tokenStream.LA(1); + if(!(((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 100663299) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7120; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 978, this.context) ) { + case 1: + { + this.state = 7119; + this.opt_float(); + } + break; + } + } + break; + case PostgreSqlParser.KW_CURRENT_ROLE: + this.enterOuterAlt(localContext, 4); + { + this.state = 7122; + this.match(PostgreSqlParser.KW_CURRENT_ROLE); + } + break; + case PostgreSqlParser.KW_CURRENT_USER: + this.enterOuterAlt(localContext, 5); + { + this.state = 7123; + this.match(PostgreSqlParser.KW_CURRENT_USER); + } + break; + case PostgreSqlParser.KW_SESSION_USER: + this.enterOuterAlt(localContext, 6); + { + this.state = 7124; + this.match(PostgreSqlParser.KW_SESSION_USER); + } + break; + case PostgreSqlParser.KW_USER: + this.enterOuterAlt(localContext, 7); + { + this.state = 7125; + this.match(PostgreSqlParser.KW_USER); + } + break; + case PostgreSqlParser.KW_CURRENT_CATALOG: + this.enterOuterAlt(localContext, 8); + { + this.state = 7126; + this.match(PostgreSqlParser.KW_CURRENT_CATALOG); + } + break; + case PostgreSqlParser.KW_CURRENT_SCHEMA: + this.enterOuterAlt(localContext, 9); + { + this.state = 7127; + this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); + } + break; + case PostgreSqlParser.KW_CAST: + case PostgreSqlParser.KW_TREAT: + this.enterOuterAlt(localContext, 10); + { + this.state = 7128; + _la = this.tokenStream.LA(1); + if(!(_la === 41 || _la === 420)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7129; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7130; + this.expression(); + this.state = 7131; + this.match(PostgreSqlParser.KW_AS); + this.state = 7132; + this.typename(); + this.state = 7133; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_EXTRACT: + this.enterOuterAlt(localContext, 11); + { + this.state = 7135; + this.match(PostgreSqlParser.KW_EXTRACT); + this.state = 7136; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7141; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 81) { + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8929553) !== 0) || ((((_la - 207)) & ~0x1F) === 0 && ((1 << (_la - 207)) & 2057) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 428867841) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1059905) !== 0) || _la === 360 || _la === 384 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { { - this.state = 9197; - this.match(PostgreSqlParser.KW_ONLY); + this.state = 7137; + this.extract_arg(); + this.state = 7138; + this.match(PostgreSqlParser.KW_FROM); + this.state = 7139; + this.expression(); } } - this.state = 9200; - this.table_name(); - this.state = 9202; + this.state = 7143; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_NORMALIZE: + this.enterOuterAlt(localContext, 12); + { + this.state = 7144; + this.match(PostgreSqlParser.KW_NORMALIZE); + this.state = 7145; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7146; + this.expression(); + this.state = 7149; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 9) { + if (_la === 6) { { - this.state = 9201; - this.match(PostgreSqlParser.STAR); + this.state = 7147; + this.match(PostgreSqlParser.COMMA); + this.state = 7148; + this.unicode_normal_form(); } } + this.state = 7151; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case PostgreSqlParser.KW_OVERLAY: + this.enterOuterAlt(localContext, 13); { - this.state = 9204; - this.match(PostgreSqlParser.KW_ONLY); - this.state = 9210; + this.state = 7153; + this.match(PostgreSqlParser.KW_OVERLAY); + this.state = 7154; + this.match(PostgreSqlParser.OPEN_PAREN); + { + this.state = 7155; + this.expression(); + this.state = 7156; + this.match(PostgreSqlParser.KW_PLACING); + this.state = 7157; + this.expression(); + this.state = 7158; + this.match(PostgreSqlParser.KW_FROM); + this.state = 7159; + this.expression(); + this.state = 7162; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + _la = this.tokenStream.LA(1); + if (_la === 62) { { - this.state = 9205; - this.table_name(); + this.state = 7160; + this.match(PostgreSqlParser.KW_FOR); + this.state = 7161; + this.expression(); + } + } + + } + this.state = 7164; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_POSITION: + this.enterOuterAlt(localContext, 14); + { + this.state = 7166; + this.match(PostgreSqlParser.KW_POSITION); + this.state = 7167; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7172; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763019) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7168; + this.primaryExpression(0); + this.state = 7169; + this.match(PostgreSqlParser.KW_IN); + this.state = 7170; + this.primaryExpression(0); + } + } + + this.state = 7174; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_SUBSTRING: + this.enterOuterAlt(localContext, 15); + { + this.state = 7175; + this.match(PostgreSqlParser.KW_SUBSTRING); + this.state = 7176; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7178; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7177; + this.substr_list(); + } + } + + this.state = 7180; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_TRIM: + this.enterOuterAlt(localContext, 16); + { + this.state = 7181; + this.match(PostgreSqlParser.KW_TRIM); + this.state = 7182; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7184; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 39 || _la === 73 || _la === 95) { + { + this.state = 7183; + _la = this.tokenStream.LA(1); + if(!(_la === 39 || _la === 73 || _la === 95)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + { + this.state = 7190; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 986, this.context) ) { + case 1: + { + this.state = 7187; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7186; + this.expression(); + } + } + + this.state = 7189; + this.match(PostgreSqlParser.KW_FROM); } break; - case PostgreSqlParser.OPEN_PAREN: + } + this.state = 7192; + this.expr_list(); + } + this.state = 7194; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_NULLIF: + this.enterOuterAlt(localContext, 17); + { + this.state = 7196; + this.match(PostgreSqlParser.KW_NULLIF); + this.state = 7197; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7198; + this.expression(); + this.state = 7199; + this.match(PostgreSqlParser.COMMA); + this.state = 7200; + this.expression(); + this.state = 7201; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_XMLCONCAT: + this.enterOuterAlt(localContext, 18); + { + this.state = 7203; + _la = this.tokenStream.LA(1); + if(!(((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 2113) !== 0) || _la === 425)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7204; + this.execute_param_clause(); + } + break; + case PostgreSqlParser.KW_XMLELEMENT: + this.enterOuterAlt(localContext, 19); + { + this.state = 7205; + this.match(PostgreSqlParser.KW_XMLELEMENT); + this.state = 7206; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7207; + this.match(PostgreSqlParser.KW_NAME); + this.state = 7208; + this.collabel(); + this.state = 7218; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { { - this.state = 9206; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9207; - this.table_name(); - this.state = 9208; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 7209; + this.match(PostgreSqlParser.COMMA); + this.state = 7216; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 987, this.context) ) { + case 1: + { + { + this.state = 7210; + this.match(PostgreSqlParser.KW_XMLATTRIBUTES); + this.state = 7211; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7212; + this.xml_attribute_list(); + this.state = 7213; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + } + break; + case 2: + { + this.state = 7215; + this.expr_list(); + } + break; + } + } + } + + this.state = 7220; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_XMLEXISTS: + this.enterOuterAlt(localContext, 20); + { + this.state = 7222; + this.match(PostgreSqlParser.KW_XMLEXISTS); + this.state = 7223; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7224; + this.primaryExpression(0); + this.state = 7225; + this.xmlexists_argument(); + this.state = 7226; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_XMLFOREST: + this.enterOuterAlt(localContext, 21); + { + this.state = 7228; + this.match(PostgreSqlParser.KW_XMLFOREST); + this.state = 7229; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7230; + this.xml_attribute_list(); + this.state = 7231; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_XMLPARSE: + this.enterOuterAlt(localContext, 22); + { + this.state = 7233; + this.match(PostgreSqlParser.KW_XMLPARSE); + this.state = 7234; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7235; + this.document_or_content(); + this.state = 7236; + this.expression(); + this.state = 7239; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 292 || _la === 347) { + { + this.state = 7237; + _la = this.tokenStream.LA(1); + if(!(_la === 292 || _la === 347)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7238; + this.match(PostgreSqlParser.KW_WHITESPACE); + } + } + + this.state = 7241; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_XMLPI: + this.enterOuterAlt(localContext, 23); + { + this.state = 7243; + this.match(PostgreSqlParser.KW_XMLPI); + this.state = 7244; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7245; + this.match(PostgreSqlParser.KW_NAME); + this.state = 7246; + this.collabel(); + this.state = 7249; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 7247; + this.match(PostgreSqlParser.COMMA); + this.state = 7248; + this.expression(); + } + } + + this.state = 7251; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_XMLROOT: + this.enterOuterAlt(localContext, 24); + { + this.state = 7253; + this.match(PostgreSqlParser.KW_XMLROOT); + this.state = 7254; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7255; + this.match(PostgreSqlParser.KW_XML); + this.state = 7256; + this.expression(); + this.state = 7257; + this.match(PostgreSqlParser.COMMA); + this.state = 7258; + this.match(PostgreSqlParser.KW_VERSION); + this.state = 7262; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 991, this.context) ) { + case 1: + { + { + this.state = 7259; + this.match(PostgreSqlParser.KW_NO); + this.state = 7260; + this.match(PostgreSqlParser.KW_VALUE); + } } break; - default: - throw new antlr.NoViableAltException(this); + case 2: + { + this.state = 7261; + this.expression(); + } + break; + } + this.state = 7273; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 7264; + this.match(PostgreSqlParser.COMMA); + this.state = 7265; + this.match(PostgreSqlParser.KW_STANDALONE); + this.state = 7271; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_VALUE: + { + { + this.state = 7267; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 7266; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 7269; + this.match(PostgreSqlParser.KW_VALUE); + } + } + break; + case PostgreSqlParser.KW_YES: + { + this.state = 7270; + this.match(PostgreSqlParser.KW_YES); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } } + + this.state = 7275; + this.match(PostgreSqlParser.CLOSE_PAREN); } break; - case 3: - this.enterOuterAlt(localContext, 3); + case PostgreSqlParser.KW_XMLSERIALIZE: + this.enterOuterAlt(localContext, 25); { - this.state = 9212; - this.match(PostgreSqlParser.KW_IN); - this.state = 9213; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 9216; + this.state = 7277; + this.match(PostgreSqlParser.KW_XMLSERIALIZE); + this.state = 7278; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7279; + this.document_or_content(); + this.state = 7280; + this.expression(); + this.state = 7281; + this.match(PostgreSqlParser.KW_AS); + this.state = 7282; + this.simpletypename(); + this.state = 7283; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public xml_attribute_list(): Xml_attribute_listContext { + let localContext = new Xml_attribute_listContext(this.context, this.state); + this.enterRule(localContext, 692, PostgreSqlParser.RULE_xml_attribute_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7287; + this.xml_attribute_el(); + this.state = 7292; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7288; + this.match(PostgreSqlParser.COMMA); + this.state = 7289; + this.xml_attribute_el(); + } + } + this.state = 7294; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 9214; - this.schema_name(); - } - break; - case PostgreSqlParser.KW_CURRENT_SCHEMA: - { - this.state = 9215; - this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -47167,55 +44474,106 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public view_relation_expr(): View_relation_exprContext { - let localContext = new View_relation_exprContext(this.context, this.state); - this.enterRule(localContext, 1120, PostgreSqlParser.RULE_view_relation_expr); + public xml_attribute_el(): Xml_attribute_elContext { + let localContext = new Xml_attribute_elContext(this.context, this.state); + this.enterRule(localContext, 694, PostgreSqlParser.RULE_xml_attribute_el); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9221; + this.state = 7295; + this.expression(); + this.state = 7298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 81) { + if (_la === 36) { { - this.state = 9220; - this.match(PostgreSqlParser.KW_ONLY); + this.state = 7296; + this.match(PostgreSqlParser.KW_AS); + this.state = 7297; + this.collabel(); } } - this.state = 9223; - this.view_name(); - this.state = 9225; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 935, this.context) ) { - case 1: - { - this.state = 9224; - this.match(PostgreSqlParser.STAR); - } - break; } - this.state = 9228; + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public document_or_content(): Document_or_contentContext { + let localContext = new Document_or_contentContext(this.context, this.state); + this.enterRule(localContext, 696, PostgreSqlParser.RULE_document_or_content); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7300; + _la = this.tokenStream.LA(1); + if(!(_la === 166 || _la === 188)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public xmlexists_argument(): Xmlexists_argumentContext { + let localContext = new Xmlexists_argumentContext(this.context, this.state); + this.enterRule(localContext, 698, PostgreSqlParser.RULE_xmlexists_argument); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7302; + this.match(PostgreSqlParser.KW_PASSING); + this.state = 7304; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 936, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { case 1: { - this.state = 9227; - this.column_list(); + this.state = 7303; + this.xml_passing_mech(); } break; } - this.state = 9231; + this.state = 7306; + this.primaryExpression(0); + this.state = 7308; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 937, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 147) { { - this.state = 9230; - this.where_clause(); + this.state = 7307; + this.xml_passing_mech(); } - break; } + } } catch (re) { @@ -47232,921 +44590,763 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public publication_relation_expr(): Publication_relation_exprContext { - let localContext = new Publication_relation_exprContext(this.context, this.state); - this.enterRule(localContext, 1122, PostgreSqlParser.RULE_publication_relation_expr); + public xml_passing_mech(): Xml_passing_mechContext { + let localContext = new Xml_passing_mechContext(this.context, this.state); + this.enterRule(localContext, 700, PostgreSqlParser.RULE_xml_passing_mech); let _la: number; try { - this.state = 9266; + this.enterOuterAlt(localContext, 1); + { + this.state = 7310; + this.match(PostgreSqlParser.KW_BY); + this.state = 7311; + _la = this.tokenStream.LA(1); + if(!(_la === 304 || _la === 450)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public window_clause(): Window_clauseContext { + let localContext = new Window_clauseContext(this.context, this.state); + this.enterRule(localContext, 702, PostgreSqlParser.RULE_window_clause); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 7313; + this.match(PostgreSqlParser.KW_WINDOW); + this.state = 7314; + this.window_definition(); + this.state = 7319; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 944, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9233; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 9235; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 81) { + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { { - this.state = 9234; - this.match(PostgreSqlParser.KW_ONLY); + { + this.state = 7315; + this.match(PostgreSqlParser.COMMA); + this.state = 7316; + this.window_definition(); + } } } - - this.state = 9237; - this.table_name(); - this.state = 9239; + this.state = 7321; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 9) { - { - this.state = 9238; - this.match(PostgreSqlParser.STAR); - } - } - - this.state = 9245; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 940, this.context) ) { - case 1: - { - this.state = 9241; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9242; - this.column_list(); - this.state = 9243; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - this.state = 9248; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { - { - this.state = 9247; - this.where_clause(); - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public window_definition(): Window_definitionContext { + let localContext = new Window_definitionContext(this.context, this.state); + this.enterRule(localContext, 704, PostgreSqlParser.RULE_window_definition); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7322; + this.colid(); + this.state = 7323; + this.match(PostgreSqlParser.KW_AS); + this.state = 7324; + this.window_specification(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public over_clause(): Over_clauseContext { + let localContext = new Over_clauseContext(this.context, this.state); + this.enterRule(localContext, 706, PostgreSqlParser.RULE_over_clause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7326; + this.match(PostgreSqlParser.KW_OVER); + this.state = 7329; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + { + this.state = 7327; + this.window_specification(); } - + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 7328; + this.colid(); } break; - case 2: - this.enterOuterAlt(localContext, 2); + default: + throw new antlr.NoViableAltException(this); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public window_specification(): Window_specificationContext { + let localContext = new Window_specificationContext(this.context, this.state); + this.enterRule(localContext, 708, PostgreSqlParser.RULE_window_specification); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7331; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7333; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context) ) { + case 1: { - this.state = 9250; - this.match(PostgreSqlParser.KW_TABLE); - this.state = 9251; - this.match(PostgreSqlParser.KW_ONLY); - this.state = 9257; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: + this.state = 7332; + this.colid(); + } + break; + } + this.state = 7338; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 285) { + { + this.state = 7335; + this.match(PostgreSqlParser.KW_PARTITION); + this.state = 7336; + this.match(PostgreSqlParser.KW_BY); + this.state = 7337; + this.expr_list(); + } + } + + this.state = 7341; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 83) { + { + this.state = 7340; + this.sort_clause(); + } + } + + this.state = 7344; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 299 || _la === 320 || _la === 481) { + { + this.state = 7343; + this.opt_frame_clause(); + } + } + + this.state = 7346; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public opt_frame_clause(): Opt_frame_clauseContext { + let localContext = new Opt_frame_clauseContext(this.context, this.state); + this.enterRule(localContext, 710, PostgreSqlParser.RULE_opt_frame_clause); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7348; + _la = this.tokenStream.LA(1); + if(!(_la === 299 || _la === 320 || _la === 481)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + { + this.state = 7353; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1006, this.context) ) { + case 1: + { + this.state = 7349; + this.match(PostgreSqlParser.KW_BETWEEN); + this.state = 7350; + this.frame_bound(); + this.state = 7351; + this.match(PostgreSqlParser.KW_AND); + } + break; + } + this.state = 7355; + this.frame_bound(); + } + this.state = 7366; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 199) { + { + this.state = 7357; + this.match(PostgreSqlParser.KW_EXCLUDE); + this.state = 7364; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: + { + this.state = 7358; + this.match(PostgreSqlParser.KW_CURRENT); + this.state = 7359; + this.match(PostgreSqlParser.KW_ROW); + } + break; + case PostgreSqlParser.KW_GROUP: + { + this.state = 7360; + this.match(PostgreSqlParser.KW_GROUP); + } + break; case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: { - this.state = 9252; - this.table_name(); + this.state = 7361; + this.match(PostgreSqlParser.KW_TIES); } break; - case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.KW_NO: { - this.state = 9253; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9254; - this.table_name(); - this.state = 9255; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 7362; + this.match(PostgreSqlParser.KW_NO); + this.state = 7363; + this.match(PostgreSqlParser.KW_OTHERS); } break; default: throw new antlr.NoViableAltException(this); } } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 9259; - this.match(PostgreSqlParser.KW_TABLES); - this.state = 9260; - this.match(PostgreSqlParser.KW_IN); - this.state = 9261; - this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 9264; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public frame_bound(): Frame_boundContext { + let localContext = new Frame_boundContext(this.context, this.state); + this.enterRule(localContext, 712, PostgreSqlParser.RULE_frame_bound); + let _la: number; + try { + this.state = 7375; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1010, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7370; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1009, this.context) ) { + case 1: { - this.state = 9262; - this.schema_name(); + this.state = 7368; + this.match(PostgreSqlParser.KW_UNBOUNDED); } break; - case PostgreSqlParser.KW_CURRENT_SCHEMA: + case 2: { - this.state = 9263; - this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); + this.state = 7369; + this.expression(); } break; - default: - throw new antlr.NoViableAltException(this); } + this.state = 7372; + _la = this.tokenStream.LA(1); + if(!(_la === 208 || _la === 289)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7373; + this.match(PostgreSqlParser.KW_CURRENT); + this.state = 7374; + this.match(PostgreSqlParser.KW_ROW); } break; } @@ -48165,31 +45365,37 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public relation_expr_list(): Relation_expr_listContext { - let localContext = new Relation_expr_listContext(this.context, this.state); - this.enterRule(localContext, 1124, PostgreSqlParser.RULE_relation_expr_list); - let _la: number; + public row(): RowContext { + let localContext = new RowContext(this.context, this.state); + this.enterRule(localContext, 714, PostgreSqlParser.RULE_row); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9268; - this.relation_expr(); - this.state = 9273; + this.state = 7384; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ROW: + this.enterOuterAlt(localContext, 1); { + this.state = 7377; + this.explicit_row(); + } + break; + case PostgreSqlParser.OPEN_PAREN: + this.enterOuterAlt(localContext, 2); { - this.state = 9269; + this.state = 7378; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7379; + this.expr_list(); + this.state = 7380; this.match(PostgreSqlParser.COMMA); - this.state = 9270; - this.relation_expr(); - } + this.state = 7381; + this.expression(); + this.state = 7382; + this.match(PostgreSqlParser.CLOSE_PAREN); } - this.state = 9275; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48206,31 +45412,29 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public publication_relation_expr_list(): Publication_relation_expr_listContext { - let localContext = new Publication_relation_expr_listContext(this.context, this.state); - this.enterRule(localContext, 1126, PostgreSqlParser.RULE_publication_relation_expr_list); + public explicit_row(): Explicit_rowContext { + let localContext = new Explicit_rowContext(this.context, this.state); + this.enterRule(localContext, 716, PostgreSqlParser.RULE_explicit_row); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9276; - this.publication_relation_expr(); - this.state = 9281; + this.state = 7386; + this.match(PostgreSqlParser.KW_ROW); + this.state = 7387; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7389; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 6) { - { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 9277; - this.match(PostgreSqlParser.COMMA); - this.state = 9278; - this.publication_relation_expr(); - } + this.state = 7388; + this.expr_list(); } - this.state = 9283; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); } + + this.state = 7391; + this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -48247,34 +45451,21 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public relation_expr_opt_alias(): Relation_expr_opt_aliasContext { - let localContext = new Relation_expr_opt_aliasContext(this.context, this.state); - this.enterRule(localContext, 1128, PostgreSqlParser.RULE_relation_expr_opt_alias); + public sub_type(): Sub_typeContext { + let localContext = new Sub_typeContext(this.context, this.state); + this.enterRule(localContext, 718, PostgreSqlParser.RULE_sub_type); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9284; - this.relation_expr(); - this.state = 9289; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 948, this.context) ) { - case 1: - { - this.state = 9286; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 9285; - this.match(PostgreSqlParser.KW_AS); - } - } - - this.state = 9288; - this.colid(); - } - break; + this.state = 7393; + _la = this.tokenStream.LA(1); + if(!(_la === 30 || _la === 34 || _la === 90)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } } } @@ -48292,32 +45483,40 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public tablesample_clause(): Tablesample_clauseContext { - let localContext = new Tablesample_clauseContext(this.context, this.state); - this.enterRule(localContext, 1130, PostgreSqlParser.RULE_tablesample_clause); + public all_op(): All_opContext { + let localContext = new All_opContext(this.context, this.state); + this.enterRule(localContext, 720, PostgreSqlParser.RULE_all_op); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9291; - this.match(PostgreSqlParser.KW_TABLESAMPLE); - this.state = 9292; - this.function_name(); - this.state = 9293; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9294; - this.expr_list(); - this.state = 9295; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 9297; + this.state = 7397; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 949, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.Operator: + this.enterOuterAlt(localContext, 1); { - this.state = 9296; - this.opt_repeatable_clause(); + this.state = 7395; + this.match(PostgreSqlParser.Operator); } break; - } + case PostgreSqlParser.STAR: + case PostgreSqlParser.EQUAL: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.SLASH: + case PostgreSqlParser.CARET: + case PostgreSqlParser.LT: + case PostgreSqlParser.GT: + case PostgreSqlParser.LESS_EQUALS: + case PostgreSqlParser.GREATER_EQUALS: + case PostgreSqlParser.NOT_EQUALS: + case PostgreSqlParser.PERCENT: + this.enterOuterAlt(localContext, 2); + { + this.state = 7396; + this.mathop(); + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48334,20 +45533,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_repeatable_clause(): Opt_repeatable_clauseContext { - let localContext = new Opt_repeatable_clauseContext(this.context, this.state); - this.enterRule(localContext, 1132, PostgreSqlParser.RULE_opt_repeatable_clause); + public mathop(): MathopContext { + let localContext = new MathopContext(this.context, this.state); + this.enterRule(localContext, 722, PostgreSqlParser.RULE_mathop); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9299; - this.match(PostgreSqlParser.KW_REPEATABLE); - this.state = 9300; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9301; - this.a_expr(); - this.state = 9302; - this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 7399; + _la = this.tokenStream.LA(1); + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 178517504) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } catch (re) { @@ -48364,55 +45565,35 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public func_table(): Func_tableContext { - let localContext = new Func_tableContext(this.context, this.state); - this.enterRule(localContext, 1134, PostgreSqlParser.RULE_func_table); + public qual_op(): Qual_opContext { + let localContext = new Qual_opContext(this.context, this.state); + this.enterRule(localContext, 724, PostgreSqlParser.RULE_qual_op); try { - this.state = 9316; + this.state = 7407; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 952, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 9304; - this.func_expr_windowless(); - this.state = 9306; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 950, this.context) ) { - case 1: - { - this.state = 9305; - this.opt_ordinality(); - } - break; - } + this.state = 7401; + this.match(PostgreSqlParser.Operator); } break; - case 2: + case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 2); { - this.state = 9308; - this.match(PostgreSqlParser.KW_ROWS); - this.state = 9309; - this.match(PostgreSqlParser.KW_FROM); - this.state = 9310; + this.state = 7402; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 7403; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9311; - this.rowsfrom_list(); - this.state = 9312; + this.state = 7404; + this.any_operator(); + this.state = 7405; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 9314; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 951, this.context) ) { - case 1: - { - this.state = 9313; - this.opt_ordinality(); - } - break; - } } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48429,25 +45610,47 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public rowsfrom_item(): Rowsfrom_itemContext { - let localContext = new Rowsfrom_itemContext(this.context, this.state); - this.enterRule(localContext, 1136, PostgreSqlParser.RULE_rowsfrom_item); - let _la: number; + public qual_all_op(): Qual_all_opContext { + let localContext = new Qual_all_opContext(this.context, this.state); + this.enterRule(localContext, 726, PostgreSqlParser.RULE_qual_all_op); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9318; - this.func_expr_windowless(); - this.state = 9320; + this.state = 7415; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.STAR: + case PostgreSqlParser.EQUAL: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.SLASH: + case PostgreSqlParser.CARET: + case PostgreSqlParser.LT: + case PostgreSqlParser.GT: + case PostgreSqlParser.LESS_EQUALS: + case PostgreSqlParser.GREATER_EQUALS: + case PostgreSqlParser.NOT_EQUALS: + case PostgreSqlParser.PERCENT: + case PostgreSqlParser.Operator: + this.enterOuterAlt(localContext, 1); { - this.state = 9319; - this.opt_col_def_list(); + this.state = 7409; + this.all_op(); } - } - + break; + case PostgreSqlParser.KW_OPERATOR: + this.enterOuterAlt(localContext, 2); + { + this.state = 7410; + this.match(PostgreSqlParser.KW_OPERATOR); + this.state = 7411; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7412; + this.any_operator(); + this.state = 7413; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48464,61 +45667,62 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public rowsfrom_list(): Rowsfrom_listContext { - let localContext = new Rowsfrom_listContext(this.context, this.state); - this.enterRule(localContext, 1138, PostgreSqlParser.RULE_rowsfrom_list); + public subquery_Op(): Subquery_OpContext { + let localContext = new Subquery_OpContext(this.context, this.state); + this.enterRule(localContext, 728, PostgreSqlParser.RULE_subquery_Op); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9322; - this.rowsfrom_item(); - this.state = 9327; + this.state = 7422; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.STAR: + case PostgreSqlParser.EQUAL: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.SLASH: + case PostgreSqlParser.CARET: + case PostgreSqlParser.LT: + case PostgreSqlParser.GT: + case PostgreSqlParser.LESS_EQUALS: + case PostgreSqlParser.GREATER_EQUALS: + case PostgreSqlParser.NOT_EQUALS: + case PostgreSqlParser.PERCENT: + case PostgreSqlParser.Operator: + case PostgreSqlParser.KW_OPERATOR: + this.enterOuterAlt(localContext, 1); { - this.state = 9323; - this.match(PostgreSqlParser.COMMA); - this.state = 9324; - this.rowsfrom_item(); - } + this.state = 7417; + this.qual_all_op(); } - this.state = 9329; + break; + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_LIKE: + this.enterOuterAlt(localContext, 2); + { + this.state = 7419; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_col_def_list(): Opt_col_def_listContext { - let localContext = new Opt_col_def_listContext(this.context, this.state); - this.enterRule(localContext, 1140, PostgreSqlParser.RULE_opt_col_def_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9330; - this.match(PostgreSqlParser.KW_AS); - this.state = 9331; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9332; - this.tablefuncelementlist(); - this.state = 9333; - this.match(PostgreSqlParser.CLOSE_PAREN); + if (_la === 77) { + { + this.state = 7418; + this.match(PostgreSqlParser.KW_NOT); + } + } + + this.state = 7421; + _la = this.tokenStream.LA(1); + if(!(_la === 114 || _la === 120)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48535,42 +45739,33 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_ordinality(): Opt_ordinalityContext { - let localContext = new Opt_ordinalityContext(this.context, this.state); - this.enterRule(localContext, 1142, PostgreSqlParser.RULE_opt_ordinality); + public expr_list(): Expr_listContext { + let localContext = new Expr_listContext(this.context, this.state); + this.enterRule(localContext, 730, PostgreSqlParser.RULE_expr_list); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 9335; - this.match(PostgreSqlParser.KW_WITH); - this.state = 9336; - this.match(PostgreSqlParser.KW_ORDINALITY); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.state = 7424; + this.expression(); + this.state = 7429; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7425; + this.match(PostgreSqlParser.COMMA); + this.state = 7426; + this.expression(); + } + } + } + this.state = 7431; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); } - } - finally { - this.exitRule(); - } - return localContext; - } - public where_clause(): Where_clauseContext { - let localContext = new Where_clauseContext(this.context, this.state); - this.enterRule(localContext, 1144, PostgreSqlParser.RULE_where_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9338; - this.match(PostgreSqlParser.KW_WHERE); - this.state = 9339; - this.column_expr_noparen(); } } catch (re) { @@ -48587,59 +45782,34 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public where_or_current_clause(): Where_or_current_clauseContext { - let localContext = new Where_or_current_clauseContext(this.context, this.state); - this.enterRule(localContext, 1146, PostgreSqlParser.RULE_where_or_current_clause); + public column_expr(): Column_exprContext { + let localContext = new Column_exprContext(this.context, this.state); + this.enterRule(localContext, 732, PostgreSqlParser.RULE_column_expr); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9341; - this.match(PostgreSqlParser.KW_WHERE); - this.state = 9346; + this.state = 7437; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 955, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1019, this.context) ) { case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 9342; - this.match(PostgreSqlParser.KW_CURRENT); - this.state = 9343; - this.match(PostgreSqlParser.KW_OF); - this.state = 9344; - this.cursor_name(); + { + this.state = 7432; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7433; + this.expression(); + this.state = 7434; + this.match(PostgreSqlParser.CLOSE_PAREN); + } } break; case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 9345; - this.a_expr(); + this.state = 7436; + this.column_name(); } break; } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opttablefuncelementlist(): OpttablefuncelementlistContext { - let localContext = new OpttablefuncelementlistContext(this.context, this.state); - this.enterRule(localContext, 1148, PostgreSqlParser.RULE_opttablefuncelementlist); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9348; - this.tablefuncelementlist(); - } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -48655,31 +45825,27 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public tablefuncelementlist(): TablefuncelementlistContext { - let localContext = new TablefuncelementlistContext(this.context, this.state); - this.enterRule(localContext, 1150, PostgreSqlParser.RULE_tablefuncelementlist); - let _la: number; + public column_expr_noparen(): Column_expr_noparenContext { + let localContext = new Column_expr_noparenContext(this.context, this.state); + this.enterRule(localContext, 734, PostgreSqlParser.RULE_column_expr_noparen); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9350; - this.tablefuncelement(); - this.state = 9355; + this.state = 7441; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1020, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 9351; - this.match(PostgreSqlParser.COMMA); - this.state = 9352; - this.tablefuncelement(); + this.state = 7439; + this.expression(); } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7440; + this.column_name(); } - this.state = 9357; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + break; } } catch (re) { @@ -48696,25 +45862,32 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public tablefuncelement(): TablefuncelementContext { - let localContext = new TablefuncelementContext(this.context, this.state); - this.enterRule(localContext, 1152, PostgreSqlParser.RULE_tablefuncelement); + public func_arg_list(): Func_arg_listContext { + let localContext = new Func_arg_listContext(this.context, this.state); + this.enterRule(localContext, 736, PostgreSqlParser.RULE_func_arg_list); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 9358; - this.colid(); - this.state = 9359; - this.typename(); - this.state = 9361; + this.state = 7443; + this.func_arg_expr(); + this.state = 7448; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 957, this.context) ) { - case 1: - { - this.state = 9360; - this.opt_collate_clause(); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7444; + this.match(PostgreSqlParser.COMMA); + this.state = 7445; + this.func_arg_expr(); + } + } } - break; + this.state = 7450; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); } } } @@ -48732,97 +45905,39 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public xmltable(): XmltableContext { - let localContext = new XmltableContext(this.context, this.state); - this.enterRule(localContext, 1154, PostgreSqlParser.RULE_xmltable); + public func_arg_expr(): Func_arg_exprContext { + let localContext = new Func_arg_exprContext(this.context, this.state); + this.enterRule(localContext, 738, PostgreSqlParser.RULE_func_arg_expr); + let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9363; - this.match(PostgreSqlParser.KW_XMLTABLE); - this.state = 9364; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9380; + this.state = 7456; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 958, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1022, this.context) ) { case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 9365; - this.c_expr(); - this.state = 9366; - this.xmlexists_argument(); - this.state = 9367; - this.match(PostgreSqlParser.KW_COLUMNS); - this.state = 9368; - this.xmltable_column_list(); + this.state = 7451; + this.expression(); } break; case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 9370; - this.match(PostgreSqlParser.KW_XMLNAMESPACES); - this.state = 9371; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9372; - this.xml_namespace_list(); - this.state = 9373; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 9374; - this.match(PostgreSqlParser.COMMA); - this.state = 9375; - this.c_expr(); - this.state = 9376; - this.xmlexists_argument(); - this.state = 9377; - this.match(PostgreSqlParser.KW_COLUMNS); - this.state = 9378; - this.xmltable_column_list(); + this.state = 7452; + this.type_function_name(); + this.state = 7453; + _la = this.tokenStream.LA(1); + if(!(_la === 20 || _la === 22)) { + this.errorHandler.recoverInline(this); } - break; - } - this.state = 9382; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xmltable_column_list(): Xmltable_column_listContext { - let localContext = new Xmltable_column_listContext(this.context, this.state); - this.enterRule(localContext, 1156, PostgreSqlParser.RULE_xmltable_column_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9384; - this.xmltable_column_el(); - this.state = 9389; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 9385; - this.match(PostgreSqlParser.COMMA); - this.state = 9386; - this.xmltable_column_el(); + else { + this.errorHandler.reportMatch(this); + this.consume(); } + this.state = 7454; + this.expression(); } - this.state = 9391; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + break; } } catch (re) { @@ -48839,25 +45954,47 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public xmltable_column_el(): Xmltable_column_elContext { - let localContext = new Xmltable_column_elContext(this.context, this.state); - this.enterRule(localContext, 1158, PostgreSqlParser.RULE_xmltable_column_el); + public array_expr(): Array_exprContext { + let localContext = new Array_exprContext(this.context, this.state); + this.enterRule(localContext, 740, PostgreSqlParser.RULE_array_expr); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9392; - this.colid(); - this.state = 9399; + this.state = 7458; + this.match(PostgreSqlParser.OPEN_BRACKET); + this.state = 7468; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.PLUS: + case PostgreSqlParser.MINUS: + case PostgreSqlParser.PARAM: + case PostgreSqlParser.Operator: case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_CASE: + case PostgreSqlParser.KW_CAST: case PostgreSqlParser.KW_COLLATE: case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CURRENT_CATALOG: + case PostgreSqlParser.KW_CURRENT_DATE: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_TIME: + case PostgreSqlParser.KW_CURRENT_TIMESTAMP: + case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FALSE: case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_LOCALTIME: + case PostgreSqlParser.KW_LOCALTIMESTAMP: + case PostgreSqlParser.KW_NOT: + case PostgreSqlParser.KW_NULL: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_TRUE: + case PostgreSqlParser.KW_UNIQUE: + case PostgreSqlParser.KW_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -49268,72 +46405,49 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.StringConstant: case PostgreSqlParser.UnicodeEscapeStringConstant: case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.BinaryStringConstant: + case PostgreSqlParser.HexadecimalStringConstant: + case PostgreSqlParser.Integral: + case PostgreSqlParser.Numeric: case PostgreSqlParser.PLSQLVARIABLENAME: case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 9393; - this.typename(); - this.state = 9395; + this.state = 7459; + this.expr_list(); + } + break; + case PostgreSqlParser.OPEN_BRACKET: + { + { + this.state = 7460; + this.array_expr(); + this.state = 7465; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { + while (_la === 6) { { - this.state = 9394; - this.xmltable_column_option_list(); + { + this.state = 7461; + this.match(PostgreSqlParser.COMMA); + this.state = 7462; + this.array_expr(); + } } + this.state = 7467; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - } - break; - case PostgreSqlParser.KW_FOR: - { - this.state = 9397; - this.match(PostgreSqlParser.KW_FOR); - this.state = 9398; - this.match(PostgreSqlParser.KW_ORDINALITY); } break; + case PostgreSqlParser.CLOSE_BRACKET: + break; default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + break; } - } - finally { - this.exitRule(); - } - return localContext; - } - public xmltable_column_option_list(): Xmltable_column_option_listContext { - let localContext = new Xmltable_column_option_listContext(this.context, this.state); - this.enterRule(localContext, 1160, PostgreSqlParser.RULE_xmltable_column_option_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9402; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 9401; - this.xmltable_column_option_el(); - } - } - this.state = 9404; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584); + this.state = 7470; + this.match(PostgreSqlParser.CLOSE_BRACKET); } } catch (re) { @@ -49350,433 +46464,69 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public xmltable_column_option_el(): Xmltable_column_option_elContext { - let localContext = new Xmltable_column_option_elContext(this.context, this.state); - this.enterRule(localContext, 1162, PostgreSqlParser.RULE_xmltable_column_option_el); + public extract_arg(): Extract_argContext { + let localContext = new Extract_argContext(this.context, this.state); + this.enterRule(localContext, 742, PostgreSqlParser.RULE_extract_arg); try { - this.state = 9414; + this.state = 7480; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 963, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1025, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 9406; - this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 9407; - this.a_expr(); + this.state = 7472; + this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 9408; - this.identifier(); - this.state = 9409; - this.a_expr(); + this.state = 7473; + this.match(PostgreSqlParser.KW_YEAR); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 9411; - this.match(PostgreSqlParser.KW_NOT); - this.state = 9412; - this.match(PostgreSqlParser.KW_NULL); + this.state = 7474; + this.match(PostgreSqlParser.KW_MONTH); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 9413; - this.match(PostgreSqlParser.KW_NULL); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_namespace_list(): Xml_namespace_listContext { - let localContext = new Xml_namespace_listContext(this.context, this.state); - this.enterRule(localContext, 1164, PostgreSqlParser.RULE_xml_namespace_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9416; - this.xml_namespace_el(); - this.state = 9421; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 9417; - this.match(PostgreSqlParser.COMMA); - this.state = 9418; - this.xml_namespace_el(); - } - } - this.state = 9423; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_namespace_el(): Xml_namespace_elContext { - let localContext = new Xml_namespace_elContext(this.context, this.state); - this.enterRule(localContext, 1166, PostgreSqlParser.RULE_xml_namespace_el); - try { - this.state = 9430; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 965, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9424; - this.b_expr(0); - this.state = 9425; - this.match(PostgreSqlParser.KW_AS); - this.state = 9426; - this.collabel(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9428; - this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 9429; - this.b_expr(0); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public typename(): TypenameContext { - let localContext = new TypenameContext(this.context, this.state); - this.enterRule(localContext, 1168, PostgreSqlParser.RULE_typename); - let _la: number; - try { - this.state = 9450; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 969, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9433; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 415) { - { - this.state = 9432; - this.match(PostgreSqlParser.KW_SETOF); - } - } - - this.state = 9435; - this.simpletypename(); - this.state = 9444; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 968, this.context) ) { - case 1: - { - this.state = 9436; - this.opt_array_bounds(); - } - break; - case 2: - { - this.state = 9437; - this.match(PostgreSqlParser.KW_ARRAY); - this.state = 9442; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 967, this.context) ) { - case 1: - { - this.state = 9438; - this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 9439; - this.iconst(); - this.state = 9440; - this.match(PostgreSqlParser.CLOSE_BRACKET); - } - break; - } - } - break; - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9446; - this.qualified_name(); - this.state = 9447; - this.match(PostgreSqlParser.PERCENT); - this.state = 9448; - _la = this.tokenStream.LA(1); - if(!(_la === 360 || _la === 477)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_array_bounds(): Opt_array_boundsContext { - let localContext = new Opt_array_boundsContext(this.context, this.state); - this.enterRule(localContext, 1170, PostgreSqlParser.RULE_opt_array_bounds); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9459; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 971, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9452; - this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 9454; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 571) { - { - this.state = 9453; - this.iconst(); - } - } - - this.state = 9456; - this.match(PostgreSqlParser.CLOSE_BRACKET); - } - } - } - this.state = 9461; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 971, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public simpletypename(): SimpletypenameContext { - let localContext = new SimpletypenameContext(this.context, this.state); - this.enterRule(localContext, 1172, PostgreSqlParser.RULE_simpletypename); - try { - this.state = 9477; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 974, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9462; - this.generictype(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9463; - this.numeric(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 9464; - this.bit(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 9465; - this.character(); + this.state = 7475; + this.match(PostgreSqlParser.KW_DAY); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 9466; - this.constdatetime(); + this.state = 7476; + this.match(PostgreSqlParser.KW_HOUR); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 9467; - this.constinterval(); - this.state = 9475; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 973, this.context) ) { - case 1: - { - this.state = 9469; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 972, this.context) ) { - case 1: - { - this.state = 9468; - this.opt_interval(); - } - break; - } - } - break; - case 2: - { - this.state = 9471; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9472; - this.iconst(); - this.state = 9473; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public consttypename(): ConsttypenameContext { - let localContext = new ConsttypenameContext(this.context, this.state); - this.enterRule(localContext, 1174, PostgreSqlParser.RULE_consttypename); - try { - this.state = 9483; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_SMALLINT: - this.enterOuterAlt(localContext, 1); - { - this.state = 9479; - this.numeric(); - } - break; - case PostgreSqlParser.KW_BIT: - this.enterOuterAlt(localContext, 2); - { - this.state = 9480; - this.constbit(); + this.state = 7477; + this.match(PostgreSqlParser.KW_MINUTE); } break; - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_VARCHAR: - this.enterOuterAlt(localContext, 3); + case 7: + this.enterOuterAlt(localContext, 7); { - this.state = 9481; - this.constcharacter(); + this.state = 7478; + this.match(PostgreSqlParser.KW_SECOND); } break; - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - this.enterOuterAlt(localContext, 4); + case 8: + this.enterOuterAlt(localContext, 8); { - this.state = 9482; - this.constdatetime(); + this.state = 7479; + this.sconst(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -49793,62 +46543,22 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public generictype(): GenerictypeContext { - let localContext = new GenerictypeContext(this.context, this.state); - this.enterRule(localContext, 1176, PostgreSqlParser.RULE_generictype); + public unicode_normal_form(): Unicode_normal_formContext { + let localContext = new Unicode_normal_formContext(this.context, this.state); + this.enterRule(localContext, 744, PostgreSqlParser.RULE_unicode_normal_form); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 9485; - this.type_function_name(); - this.state = 9487; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 976, this.context) ) { - case 1: - { - this.state = 9486; - this.attrs(); - } - break; - } - this.state = 9490; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 977, this.context) ) { - case 1: - { - this.state = 9489; - this.opt_type_modifiers(); - } - break; - } + this.state = 7482; + _la = this.tokenStream.LA(1); + if(!(((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & 15) !== 0))) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_type_modifiers(): Opt_type_modifiersContext { - let localContext = new Opt_type_modifiersContext(this.context, this.state); - this.enterRule(localContext, 1178, PostgreSqlParser.RULE_opt_type_modifiers); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9492; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9493; - this.expr_list(); - this.state = 9494; - this.match(PostgreSqlParser.CLOSE_PAREN); } } catch (re) { @@ -49865,134 +46575,82 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public numeric(): NumericContext { - let localContext = new NumericContext(this.context, this.state); - this.enterRule(localContext, 1180, PostgreSqlParser.RULE_numeric); + public substr_list(): Substr_listContext { + let localContext = new Substr_listContext(this.context, this.state); + this.enterRule(localContext, 746, PostgreSqlParser.RULE_substr_list); + let _la: number; try { - this.state = 9520; + this.state = 7505; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_INT: + switch (this.interpreter.adaptivePredict(this.tokenStream, 1028, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 9496; - this.match(PostgreSqlParser.KW_INT); - } - break; - case PostgreSqlParser.KW_INTEGER: - this.enterOuterAlt(localContext, 2); - { - this.state = 9497; - this.match(PostgreSqlParser.KW_INTEGER); - } - break; - case PostgreSqlParser.KW_SMALLINT: - this.enterOuterAlt(localContext, 3); - { - this.state = 9498; - this.match(PostgreSqlParser.KW_SMALLINT); - } - break; - case PostgreSqlParser.KW_BIGINT: - this.enterOuterAlt(localContext, 4); - { - this.state = 9499; - this.match(PostgreSqlParser.KW_BIGINT); - } - break; - case PostgreSqlParser.KW_REAL: - this.enterOuterAlt(localContext, 5); - { - this.state = 9500; - this.match(PostgreSqlParser.KW_REAL); - } - break; - case PostgreSqlParser.KW_FLOAT: - this.enterOuterAlt(localContext, 6); - { - this.state = 9501; - this.match(PostgreSqlParser.KW_FLOAT); - this.state = 9503; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 978, this.context) ) { - case 1: - { - this.state = 9502; - this.opt_float(); - } - break; - } - } - break; - case PostgreSqlParser.KW_DOUBLE: - this.enterOuterAlt(localContext, 7); - { - this.state = 9505; - this.match(PostgreSqlParser.KW_DOUBLE); - this.state = 9506; - this.match(PostgreSqlParser.KW_PRECISION); - } - break; - case PostgreSqlParser.KW_DECIMAL: - this.enterOuterAlt(localContext, 8); - { - this.state = 9507; - this.match(PostgreSqlParser.KW_DECIMAL); - this.state = 9509; + this.state = 7484; + this.expression(); + this.state = 7485; + this.match(PostgreSqlParser.KW_FROM); + this.state = 7486; + this.expression(); + this.state = 7489; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 979, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 62) { { - this.state = 9508; - this.opt_type_modifiers(); + this.state = 7487; + this.match(PostgreSqlParser.KW_FOR); + this.state = 7488; + this.expression(); } - break; } + } break; - case PostgreSqlParser.KW_DEC: - this.enterOuterAlt(localContext, 9); + case 2: + this.enterOuterAlt(localContext, 2); { - this.state = 9511; - this.match(PostgreSqlParser.KW_DEC); - this.state = 9513; + this.state = 7491; + this.expression(); + this.state = 7492; + this.match(PostgreSqlParser.KW_FOR); + this.state = 7493; + this.expression(); + this.state = 7496; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 980, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 64) { { - this.state = 9512; - this.opt_type_modifiers(); + this.state = 7494; + this.match(PostgreSqlParser.KW_FROM); + this.state = 7495; + this.expression(); } - break; } + } break; - case PostgreSqlParser.KW_NUMERIC: - this.enterOuterAlt(localContext, 10); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 9515; - this.match(PostgreSqlParser.KW_NUMERIC); - this.state = 9517; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 981, this.context) ) { - case 1: - { - this.state = 9516; - this.opt_type_modifiers(); - } - break; - } + this.state = 7498; + this.expression(); + this.state = 7499; + this.match(PostgreSqlParser.KW_SIMILAR); + this.state = 7500; + this.expression(); + this.state = 7501; + this.match(PostgreSqlParser.KW_ESCAPE); + this.state = 7502; + this.expression(); } break; - case PostgreSqlParser.KW_BOOLEAN: - this.enterOuterAlt(localContext, 11); + case 4: + this.enterOuterAlt(localContext, 4); { - this.state = 9519; - this.match(PostgreSqlParser.KW_BOOLEAN); + this.state = 7504; + this.expr_list(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -50009,55 +46667,20 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public opt_float(): Opt_floatContext { - let localContext = new Opt_floatContext(this.context, this.state); - this.enterRule(localContext, 1182, PostgreSqlParser.RULE_opt_float); + public when_clause(): When_clauseContext { + let localContext = new When_clauseContext(this.context, this.state); + this.enterRule(localContext, 748, PostgreSqlParser.RULE_when_clause); try { this.enterOuterAlt(localContext, 1); { - this.state = 9522; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9523; - this.iconst(); - this.state = 9524; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public bit(): BitContext { - let localContext = new BitContext(this.context, this.state); - this.enterRule(localContext, 1184, PostgreSqlParser.RULE_bit); - try { - this.state = 9528; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 983, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9526; - this.bitwithlength(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9527; - this.bitwithoutlength(); - } - break; + this.state = 7507; + this.match(PostgreSqlParser.KW_WHEN); + this.state = 7508; + this.expression(); + this.state = 7509; + this.match(PostgreSqlParser.KW_THEN); + this.state = 7510; + this.expression(); } } catch (re) { @@ -50074,34111 +46697,11996 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public constbit(): ConstbitContext { - let localContext = new ConstbitContext(this.context, this.state); - this.enterRule(localContext, 1186, PostgreSqlParser.RULE_constbit); + public indirection_el(): Indirection_elContext { + let localContext = new Indirection_elContext(this.context, this.state); + this.enterRule(localContext, 750, PostgreSqlParser.RULE_indirection_el); + let _la: number; try { - this.state = 9532; + this.state = 7529; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 984, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.DOT: this.enterOuterAlt(localContext, 1); { - this.state = 9530; - this.bitwithlength(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9531; - this.bitwithoutlength(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public bitwithlength(): BitwithlengthContext { - let localContext = new BitwithlengthContext(this.context, this.state); - this.enterRule(localContext, 1188, PostgreSqlParser.RULE_bitwithlength); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9534; - this.match(PostgreSqlParser.KW_BIT); - this.state = 9536; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 374) { - { - this.state = 9535; - this.opt_varying(); - } - } - - this.state = 9538; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9539; - this.expr_list(); - this.state = 9540; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public bitwithoutlength(): BitwithoutlengthContext { - let localContext = new BitwithoutlengthContext(this.context, this.state); - this.enterRule(localContext, 1190, PostgreSqlParser.RULE_bitwithoutlength); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9542; - this.match(PostgreSqlParser.KW_BIT); - this.state = 9544; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 986, this.context) ) { - case 1: - { - this.state = 9543; - this.opt_varying(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public character(): CharacterContext { - let localContext = new CharacterContext(this.context, this.state); - this.enterRule(localContext, 1192, PostgreSqlParser.RULE_character); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9546; - this.character_c(); - this.state = 9551; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 987, this.context) ) { - case 1: - { - this.state = 9547; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9548; - this.iconst(); - this.state = 9549; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public constcharacter(): ConstcharacterContext { - let localContext = new ConstcharacterContext(this.context, this.state); - this.enterRule(localContext, 1194, PostgreSqlParser.RULE_constcharacter); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9553; - this.character_c(); - this.state = 9558; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 9554; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9555; - this.iconst(); - this.state = 9556; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public character_c(): Character_cContext { - let localContext = new Character_cContext(this.context, this.state); - this.enterRule(localContext, 1196, PostgreSqlParser.RULE_character_c); - let _la: number; - try { - this.state = 9570; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_NCHAR: - this.enterOuterAlt(localContext, 1); - { - this.state = 9560; - _la = this.tokenStream.LA(1); - if(!(((((_la - 391)) & ~0x1F) === 0 && ((1 << (_la - 391)) & 32771) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9562; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 989, this.context) ) { - case 1: - { - this.state = 9561; - this.opt_varying(); - } - break; - } - } - break; - case PostgreSqlParser.KW_VARCHAR: - this.enterOuterAlt(localContext, 2); - { - this.state = 9564; - this.match(PostgreSqlParser.KW_VARCHAR); - } - break; - case PostgreSqlParser.KW_NATIONAL: - this.enterOuterAlt(localContext, 3); - { - this.state = 9565; - this.match(PostgreSqlParser.KW_NATIONAL); - this.state = 9566; - _la = this.tokenStream.LA(1); - if(!(_la === 391 || _la === 392)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9568; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 990, this.context) ) { - case 1: - { - this.state = 9567; - this.opt_varying(); - } - break; - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_varying(): Opt_varyingContext { - let localContext = new Opt_varyingContext(this.context, this.state); - this.enterRule(localContext, 1198, PostgreSqlParser.RULE_opt_varying); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9572; - this.match(PostgreSqlParser.KW_VARYING); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public constdatetime(): ConstdatetimeContext { - let localContext = new ConstdatetimeContext(this.context, this.state); - this.enterRule(localContext, 1200, PostgreSqlParser.RULE_constdatetime); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9574; - _la = this.tokenStream.LA(1); - if(!(_la === 418 || _la === 419)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9579; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 992, this.context) ) { - case 1: - { - this.state = 9575; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9576; - this.iconst(); - this.state = 9577; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - this.state = 9582; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 993, this.context) ) { - case 1: - { - this.state = 9581; - this.opt_timezone(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public constinterval(): ConstintervalContext { - let localContext = new ConstintervalContext(this.context, this.state); - this.enterRule(localContext, 1202, PostgreSqlParser.RULE_constinterval); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9584; - this.match(PostgreSqlParser.KW_INTERVAL); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_timezone(): Opt_timezoneContext { - let localContext = new Opt_timezoneContext(this.context, this.state); - this.enterRule(localContext, 1204, PostgreSqlParser.RULE_opt_timezone); - try { - this.state = 9592; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_WITH: - this.enterOuterAlt(localContext, 1); - { - this.state = 9586; - this.match(PostgreSqlParser.KW_WITH); - this.state = 9587; - this.match(PostgreSqlParser.KW_TIME); - this.state = 9588; - this.match(PostgreSqlParser.KW_ZONE); - } - break; - case PostgreSqlParser.KW_WITHOUT: - this.enterOuterAlt(localContext, 2); - { - this.state = 9589; - this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 9590; - this.match(PostgreSqlParser.KW_TIME); - this.state = 9591; - this.match(PostgreSqlParser.KW_ZONE); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_interval(): Opt_intervalContext { - let localContext = new Opt_intervalContext(this.context, this.state); - this.enterRule(localContext, 1206, PostgreSqlParser.RULE_opt_interval); - try { - this.state = 9619; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 997, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9594; - this.match(PostgreSqlParser.KW_YEAR); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9595; - this.match(PostgreSqlParser.KW_MONTH); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 9596; - this.match(PostgreSqlParser.KW_DAY); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 9597; - this.match(PostgreSqlParser.KW_HOUR); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 9598; - this.match(PostgreSqlParser.KW_MINUTE); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 9599; - this.interval_second(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 9600; - this.match(PostgreSqlParser.KW_YEAR); - this.state = 9601; - this.match(PostgreSqlParser.KW_TO); - this.state = 9602; - this.match(PostgreSqlParser.KW_MONTH); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 9603; - this.match(PostgreSqlParser.KW_DAY); - this.state = 9604; - this.match(PostgreSqlParser.KW_TO); - this.state = 9608; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_HOUR: - { - this.state = 9605; - this.match(PostgreSqlParser.KW_HOUR); - } - break; - case PostgreSqlParser.KW_MINUTE: - { - this.state = 9606; - this.match(PostgreSqlParser.KW_MINUTE); - } - break; - case PostgreSqlParser.KW_SECOND: - { - this.state = 9607; - this.interval_second(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 9610; - this.match(PostgreSqlParser.KW_HOUR); - this.state = 9611; - this.match(PostgreSqlParser.KW_TO); - this.state = 9614; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_MINUTE: - { - this.state = 9612; - this.match(PostgreSqlParser.KW_MINUTE); - } - break; - case PostgreSqlParser.KW_SECOND: - { - this.state = 9613; - this.interval_second(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 9616; - this.match(PostgreSqlParser.KW_MINUTE); - this.state = 9617; - this.match(PostgreSqlParser.KW_TO); - this.state = 9618; - this.interval_second(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public interval_second(): Interval_secondContext { - let localContext = new Interval_secondContext(this.context, this.state); - this.enterRule(localContext, 1208, PostgreSqlParser.RULE_interval_second); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9621; - this.match(PostgreSqlParser.KW_SECOND); - this.state = 9626; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { - case 1: - { - this.state = 9622; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9623; - this.iconst(); - this.state = 9624; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_escape(): Opt_escapeContext { - let localContext = new Opt_escapeContext(this.context, this.state); - this.enterRule(localContext, 1210, PostgreSqlParser.RULE_opt_escape); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9628; - this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 9629; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr(): A_exprContext { - let localContext = new A_exprContext(this.context, this.state); - this.enterRule(localContext, 1212, PostgreSqlParser.RULE_a_expr); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9631; - this.a_expr_qual(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_qual(): A_expr_qualContext { - let localContext = new A_expr_qualContext(this.context, this.state); - this.enterRule(localContext, 1214, PostgreSqlParser.RULE_a_expr_qual); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9633; - this.a_expr_lessless(); - this.state = 9635; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 999, this.context) ) { - case 1: - { - this.state = 9634; - this.qual_op(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_lessless(): A_expr_lesslessContext { - let localContext = new A_expr_lesslessContext(this.context, this.state); - this.enterRule(localContext, 1216, PostgreSqlParser.RULE_a_expr_lessless); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9637; - this.a_expr_or(); - this.state = 9642; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9638; - _la = this.tokenStream.LA(1); - if(!(_la === 18 || _la === 19)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9639; - this.a_expr_or(); - } - } - } - this.state = 9644; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_or(): A_expr_orContext { - let localContext = new A_expr_orContext(this.context, this.state); - this.enterRule(localContext, 1218, PostgreSqlParser.RULE_a_expr_or); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9645; - this.a_expr_and(); - this.state = 9650; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1001, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9646; - this.match(PostgreSqlParser.KW_OR); - this.state = 9647; - this.a_expr_and(); - } - } - } - this.state = 9652; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1001, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_and(): A_expr_andContext { - let localContext = new A_expr_andContext(this.context, this.state); - this.enterRule(localContext, 1220, PostgreSqlParser.RULE_a_expr_and); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9653; - this.a_expr_in(); - this.state = 9658; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9654; - this.match(PostgreSqlParser.KW_AND); - this.state = 9655; - this.a_expr_in(); - } - } - } - this.state = 9660; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_in(): A_expr_inContext { - let localContext = new A_expr_inContext(this.context, this.state); - this.enterRule(localContext, 1222, PostgreSqlParser.RULE_a_expr_in); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9661; - this.a_expr_unary_not(); - this.state = 9667; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1004, this.context) ) { - case 1: - { - this.state = 9663; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77) { - { - this.state = 9662; - this.match(PostgreSqlParser.KW_NOT); - } - } - - this.state = 9665; - this.match(PostgreSqlParser.KW_IN); - this.state = 9666; - this.in_expr(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_unary_not(): A_expr_unary_notContext { - let localContext = new A_expr_unary_notContext(this.context, this.state); - this.enterRule(localContext, 1224, PostgreSqlParser.RULE_a_expr_unary_not); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9670; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77) { - { - this.state = 9669; - this.match(PostgreSqlParser.KW_NOT); - } - } - - this.state = 9672; - this.a_expr_isnull(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_isnull(): A_expr_isnullContext { - let localContext = new A_expr_isnullContext(this.context, this.state); - this.enterRule(localContext, 1226, PostgreSqlParser.RULE_a_expr_isnull); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9674; - this.a_expr_is_not(); - this.state = 9676; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1006, this.context) ) { - case 1: - { - this.state = 9675; - _la = this.tokenStream.LA(1); - if(!(_la === 117 || _la === 122)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_is_not(): A_expr_is_notContext { - let localContext = new A_expr_is_notContext(this.context, this.state); - this.enterRule(localContext, 1228, PostgreSqlParser.RULE_a_expr_is_not); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9678; - this.a_expr_compare(); - this.state = 9702; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1010, this.context) ) { - case 1: - { - this.state = 9679; - this.match(PostgreSqlParser.KW_IS); - this.state = 9681; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77) { - { - this.state = 9680; - this.match(PostgreSqlParser.KW_NOT); - } - } - - this.state = 9700; + this.state = 7512; + this.match(PostgreSqlParser.DOT); + this.state = 7515; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_ALL: + case PostgreSqlParser.KW_ANALYSE: + case PostgreSqlParser.KW_ANALYZE: + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ANY: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_AS: + case PostgreSqlParser.KW_ASC: + case PostgreSqlParser.KW_ASYMMETRIC: + case PostgreSqlParser.KW_BOTH: + case PostgreSqlParser.KW_CASE: + case PostgreSqlParser.KW_CAST: + case PostgreSqlParser.KW_CHECK: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_COLUMN: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_CREATE: + case PostgreSqlParser.KW_CURRENT_CATALOG: + case PostgreSqlParser.KW_CURRENT_DATE: + case PostgreSqlParser.KW_CURRENT_ROLE: + case PostgreSqlParser.KW_CURRENT_TIME: + case PostgreSqlParser.KW_CURRENT_TIMESTAMP: + case PostgreSqlParser.KW_CURRENT_USER: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DEFERRABLE: + case PostgreSqlParser.KW_DESC: + case PostgreSqlParser.KW_DISTINCT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_ELSE: + case PostgreSqlParser.KW_EXCEPT: + case PostgreSqlParser.KW_FALSE: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_FOR: + case PostgreSqlParser.KW_FOREIGN: + case PostgreSqlParser.KW_FROM: + case PostgreSqlParser.KW_GRANT: + case PostgreSqlParser.KW_GROUP: + case PostgreSqlParser.KW_HAVING: + case PostgreSqlParser.KW_IN: + case PostgreSqlParser.KW_INITIALLY: + case PostgreSqlParser.KW_INTERSECT: + case PostgreSqlParser.KW_LATERAL: + case PostgreSqlParser.KW_LEADING: + case PostgreSqlParser.KW_LIMIT: + case PostgreSqlParser.KW_LOCALTIME: + case PostgreSqlParser.KW_LOCALTIMESTAMP: + case PostgreSqlParser.KW_NOT: case PostgreSqlParser.KW_NULL: - { - this.state = 9683; - this.match(PostgreSqlParser.KW_NULL); - } - break; + case PostgreSqlParser.KW_OFFSET: + case PostgreSqlParser.KW_ON: + case PostgreSqlParser.KW_ONLY: + case PostgreSqlParser.KW_OR: + case PostgreSqlParser.KW_ORDER: + case PostgreSqlParser.KW_PLACING: + case PostgreSqlParser.KW_PRIMARY: + case PostgreSqlParser.KW_REFERENCES: + case PostgreSqlParser.KW_RETURNING: + case PostgreSqlParser.KW_SELECT: + case PostgreSqlParser.KW_SESSION_USER: + case PostgreSqlParser.KW_SOME: + case PostgreSqlParser.KW_SYMMETRIC: + case PostgreSqlParser.KW_TABLE: + case PostgreSqlParser.KW_THEN: + case PostgreSqlParser.KW_TO: + case PostgreSqlParser.KW_TRAILING: case PostgreSqlParser.KW_TRUE: - { - this.state = 9684; - this.match(PostgreSqlParser.KW_TRUE); - } - break; - case PostgreSqlParser.KW_FALSE: - { - this.state = 9685; - this.match(PostgreSqlParser.KW_FALSE); - } - break; - case PostgreSqlParser.KW_UNKNOWN: - { - this.state = 9686; - this.match(PostgreSqlParser.KW_UNKNOWN); - } - break; - case PostgreSqlParser.KW_DISTINCT: - { - this.state = 9687; - this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 9688; - this.match(PostgreSqlParser.KW_FROM); - this.state = 9689; - this.a_expr(); - } - break; - case PostgreSqlParser.KW_OF: - { - this.state = 9690; - this.match(PostgreSqlParser.KW_OF); - this.state = 9691; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9692; - this.type_list(); - this.state = 9693; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_DOCUMENT: - { - this.state = 9695; - this.match(PostgreSqlParser.KW_DOCUMENT); - } - break; - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - { - this.state = 9697; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & 15) !== 0)) { - { - this.state = 9696; - this.unicode_normal_form(); - } - } - - this.state = 9699; - this.match(PostgreSqlParser.KW_NORMALIZED); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_compare(): A_expr_compareContext { - let localContext = new A_expr_compareContext(this.context, this.state); - this.enterRule(localContext, 1230, PostgreSqlParser.RULE_a_expr_compare); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9704; - this.a_expr_like(); - this.state = 9716; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1012, this.context) ) { - case 1: - { - this.state = 9705; - _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 44237824) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9706; - this.a_expr_like(); - } - break; - case 2: - { - this.state = 9707; - this.subquery_Op(); - this.state = 9708; - this.sub_type(); - this.state = 9714; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1011, this.context) ) { - case 1: - { - this.state = 9709; - this.select_with_parens(); - } - break; - case 2: - { - this.state = 9710; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9711; - this.a_expr(); - this.state = 9712; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_like(): A_expr_likeContext { - let localContext = new A_expr_likeContext(this.context, this.state); - this.enterRule(localContext, 1232, PostgreSqlParser.RULE_a_expr_like); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9718; - this.a_expr_qual_op(); - this.state = 9736; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1017, this.context) ) { - case 1: - { - this.state = 9720; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77) { - { - this.state = 9719; - this.match(PostgreSqlParser.KW_NOT); - } - } - - this.state = 9730; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_LIKE: - { - this.state = 9722; - this.match(PostgreSqlParser.KW_LIKE); - } - break; + case PostgreSqlParser.KW_UNION: + case PostgreSqlParser.KW_UNIQUE: + case PostgreSqlParser.KW_USER: + case PostgreSqlParser.KW_USING: + case PostgreSqlParser.KW_VARIADIC: + case PostgreSqlParser.KW_WHEN: + case PostgreSqlParser.KW_WHERE: + case PostgreSqlParser.KW_WINDOW: + case PostgreSqlParser.KW_WITH: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: case PostgreSqlParser.KW_ILIKE: - { - this.state = 9723; - this.match(PostgreSqlParser.KW_ILIKE); - } - break; - case PostgreSqlParser.KW_SIMILAR: - { - this.state = 9724; - this.match(PostgreSqlParser.KW_SIMILAR); - this.state = 9725; - this.match(PostgreSqlParser.KW_TO); - } - break; - case PostgreSqlParser.KW_BETWEEN: - { - this.state = 9726; - this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 9728; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 91) { - { - this.state = 9727; - this.match(PostgreSqlParser.KW_SYMMETRIC); - } - } - - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 9732; - this.a_expr_qual_op(); - this.state = 9734; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1016, this.context) ) { - case 1: - { - this.state = 9733; - this.opt_escape(); - } - break; - } - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_qual_op(): A_expr_qual_opContext { - let localContext = new A_expr_qual_opContext(this.context, this.state); - this.enterRule(localContext, 1234, PostgreSqlParser.RULE_a_expr_qual_op); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9738; - this.a_expr_unary_qualop(); - this.state = 9744; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9739; - this.qual_op(); - this.state = 9740; - this.a_expr_unary_qualop(); - } - } - } - this.state = 9746; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_unary_qualop(): A_expr_unary_qualopContext { - let localContext = new A_expr_unary_qualopContext(this.context, this.state); - this.enterRule(localContext, 1236, PostgreSqlParser.RULE_a_expr_unary_qualop); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9748; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1019, this.context) ) { - case 1: - { - this.state = 9747; - this.qual_op(); - } - break; - } - this.state = 9750; - this.a_expr_add(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_add(): A_expr_addContext { - let localContext = new A_expr_addContext(this.context, this.state); - this.enterRule(localContext, 1238, PostgreSqlParser.RULE_a_expr_add); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9752; - this.a_expr_mul(); - this.state = 9757; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1020, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9753; - _la = this.tokenStream.LA(1); - if(!(_la === 12 || _la === 13)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9754; - this.a_expr_mul(); - } - } - } - this.state = 9759; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1020, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_mul(): A_expr_mulContext { - let localContext = new A_expr_mulContext(this.context, this.state); - this.enterRule(localContext, 1240, PostgreSqlParser.RULE_a_expr_mul); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9760; - this.a_expr_caret(); - this.state = 9765; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9761; - _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 134234624) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9762; - this.a_expr_caret(); - } - } - } - this.state = 9767; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_caret(): A_expr_caretContext { - let localContext = new A_expr_caretContext(this.context, this.state); - this.enterRule(localContext, 1242, PostgreSqlParser.RULE_a_expr_caret); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9768; - this.a_expr_unary_sign(); - this.state = 9771; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1022, this.context) ) { - case 1: - { - this.state = 9769; - this.match(PostgreSqlParser.CARET); - this.state = 9770; - this.a_expr(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_unary_sign(): A_expr_unary_signContext { - let localContext = new A_expr_unary_signContext(this.context, this.state); - this.enterRule(localContext, 1244, PostgreSqlParser.RULE_a_expr_unary_sign); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9774; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 12 || _la === 13) { - { - this.state = 9773; - _la = this.tokenStream.LA(1); - if(!(_la === 12 || _la === 13)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 9776; - this.a_expr_at_time_zone(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_at_time_zone(): A_expr_at_time_zoneContext { - let localContext = new A_expr_at_time_zoneContext(this.context, this.state); - this.enterRule(localContext, 1246, PostgreSqlParser.RULE_a_expr_at_time_zone); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9778; - this.a_expr_collate(); - this.state = 9783; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1024, this.context) ) { - case 1: - { - this.state = 9779; - this.match(PostgreSqlParser.KW_AT); - this.state = 9780; - this.match(PostgreSqlParser.KW_TIME); - this.state = 9781; - this.match(PostgreSqlParser.KW_ZONE); - this.state = 9782; - this.a_expr(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_collate(): A_expr_collateContext { - let localContext = new A_expr_collateContext(this.context, this.state); - this.enterRule(localContext, 1248, PostgreSqlParser.RULE_a_expr_collate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9785; - this.a_expr_typecast(); - this.state = 9788; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1025, this.context) ) { - case 1: - { - this.state = 9786; - this.match(PostgreSqlParser.KW_COLLATE); - this.state = 9787; - this.any_name(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public a_expr_typecast(): A_expr_typecastContext { - let localContext = new A_expr_typecastContext(this.context, this.state); - this.enterRule(localContext, 1250, PostgreSqlParser.RULE_a_expr_typecast); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9790; - this.c_expr(); - this.state = 9795; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1026, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 9791; - this.match(PostgreSqlParser.TYPECAST); - this.state = 9792; - this.typename(); - } - } - } - this.state = 9797; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1026, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - - public b_expr(): B_exprContext; - public b_expr(_p: number): B_exprContext; - public b_expr(_p?: number): B_exprContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new B_exprContext(this.context, parentState); - let previousContext = localContext; - let _startState = 1252; - this.enterRecursionRule(localContext, 1252, PostgreSqlParser.RULE_b_expr, _p); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 9805; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1027, this.context) ) { - case 1: - { - this.state = 9799; - this.c_expr(); - } - break; - case 2: - { - this.state = 9800; - _la = this.tokenStream.LA(1); - if(!(_la === 12 || _la === 13)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9801; - this.b_expr(9); - } - break; - case 3: - { - this.state = 9802; - this.qual_op(); - this.state = 9803; - this.b_expr(3); - } - break; - } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 9846; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1031, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 9844; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1030, this.context) ) { - case 1: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9807; - if (!(this.precpred(this.context, 8))) { - throw this.createFailedPredicateException("this.precpred(this.context, 8)"); - } - this.state = 9808; - this.match(PostgreSqlParser.CARET); - this.state = 9809; - this.b_expr(9); - } - break; - case 2: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9810; - if (!(this.precpred(this.context, 7))) { - throw this.createFailedPredicateException("this.precpred(this.context, 7)"); - } - this.state = 9811; - _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 134234624) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9812; - this.b_expr(8); - } - break; - case 3: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9813; - if (!(this.precpred(this.context, 6))) { - throw this.createFailedPredicateException("this.precpred(this.context, 6)"); - } - this.state = 9814; - _la = this.tokenStream.LA(1); - if(!(_la === 12 || _la === 13)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9815; - this.b_expr(7); - } - break; - case 4: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9816; - if (!(this.precpred(this.context, 5))) { - throw this.createFailedPredicateException("this.precpred(this.context, 5)"); - } - this.state = 9817; - this.qual_op(); - this.state = 9818; - this.b_expr(6); - } - break; - case 5: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9820; - if (!(this.precpred(this.context, 4))) { - throw this.createFailedPredicateException("this.precpred(this.context, 4)"); - } - this.state = 9821; - _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 44237824) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9822; - this.b_expr(5); - } - break; - case 6: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9823; - if (!(this.precpred(this.context, 10))) { - throw this.createFailedPredicateException("this.precpred(this.context, 10)"); - } - this.state = 9824; - this.match(PostgreSqlParser.TYPECAST); - this.state = 9825; - this.typename(); - } - break; - case 7: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9826; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 9827; - this.qual_op(); - } - break; - case 8: - { - localContext = new B_exprContext(parentContext, parentState); - this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_b_expr); - this.state = 9828; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 9829; - this.match(PostgreSqlParser.KW_IS); - this.state = 9831; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 77) { - { - this.state = 9830; - this.match(PostgreSqlParser.KW_NOT); - } - } - - this.state = 9842; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_DISTINCT: - { - this.state = 9833; - this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 9834; - this.match(PostgreSqlParser.KW_FROM); - this.state = 9835; - this.b_expr(0); - } - break; - case PostgreSqlParser.KW_OF: - { - this.state = 9836; - this.match(PostgreSqlParser.KW_OF); - this.state = 9837; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9838; - this.type_list(); - this.state = 9839; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_DOCUMENT: - { - this.state = 9841; - this.match(PostgreSqlParser.KW_DOCUMENT); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - } - } - } - this.state = 9848; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1031, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(parentContext); - } - return localContext; - } - public c_expr(): C_exprContext { - let localContext = new C_exprContext(this.context, this.state); - this.enterRule(localContext, 1254, PostgreSqlParser.RULE_c_expr); - try { - this.state = 9885; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context) ) { - case 1: - localContext = new C_expr_existsContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 9849; - this.match(PostgreSqlParser.KW_EXISTS); - this.state = 9850; - this.select_with_parens(); - } - break; - case 2: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 9851; - this.match(PostgreSqlParser.KW_ARRAY); - this.state = 9854; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - { - this.state = 9852; - this.select_with_parens(); - } - break; - case PostgreSqlParser.OPEN_BRACKET: - { - this.state = 9853; - this.array_expr(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 3: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 9856; - this.match(PostgreSqlParser.PARAM); - this.state = 9857; - this.opt_indirection(); - } - break; - case 4: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 4); - { - this.state = 9858; - this.match(PostgreSqlParser.KW_GROUPING); - this.state = 9859; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9860; - this.expr_list(); - this.state = 9861; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 5: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 5); - { - this.state = 9863; - this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 9864; - this.select_with_parens(); - } - break; - case 6: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 6); - { - this.state = 9865; - this.aexprconst(); - } - break; - case 7: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 7); - { - this.state = 9866; - this.plsqlvariablename(); - } - break; - case 8: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 8); - { - this.state = 9867; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9868; - (localContext as C_expr_exprContext)._a_expr_in_parens = this.a_expr(); - this.state = 9869; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 9870; - this.opt_indirection(); - } - break; - case 9: - localContext = new C_expr_caseContext(localContext); - this.enterOuterAlt(localContext, 9); - { - this.state = 9872; - this.case_expr(); - } - break; - case 10: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 10); - { - this.state = 9873; - this.func_expr(); - } - break; - case 11: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 11); - { - this.state = 9874; - this.select_with_parens(); - this.state = 9876; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1033, this.context) ) { - case 1: - { - this.state = 9875; - this.indirection(); - } - break; - } - } - break; - case 12: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 12); - { - this.state = 9878; - this.explicit_row(); - } - break; - case 13: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 13); - { - this.state = 9879; - this.implicit_row(); - } - break; - case 14: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 14); - { - this.state = 9880; - this.row(); - this.state = 9881; - this.match(PostgreSqlParser.KW_OVERLAPS); - this.state = 9882; - this.row(); - } - break; - case 15: - localContext = new C_expr_exprContext(localContext); - this.enterOuterAlt(localContext, 15); - { - this.state = 9884; - this.columnref(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public plsqlvariablename(): PlsqlvariablenameContext { - let localContext = new PlsqlvariablenameContext(this.context, this.state); - this.enterRule(localContext, 1256, PostgreSqlParser.RULE_plsqlvariablename); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9887; - this.match(PostgreSqlParser.PLSQLVARIABLENAME); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_application(): Func_applicationContext { - let localContext = new Func_applicationContext(this.context, this.state); - this.enterRule(localContext, 1258, PostgreSqlParser.RULE_func_application); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 9889; - this.function_name(); - this.state = 9915; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1040, this.context) ) { - case 1: - { - this.state = 9890; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9912; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.PARAM: - case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_CASE: - case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CURRENT_CATALOG: - case PostgreSqlParser.KW_CURRENT_DATE: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_TIME: - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - case PostgreSqlParser.KW_CURRENT_USER: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_LOCALTIME: - case PostgreSqlParser.KW_LOCALTIMESTAMP: - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_NULL: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.BinaryStringConstant: - case PostgreSqlParser.HexadecimalStringConstant: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 9891; - this.func_arg_list(); - this.state = 9895; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 9892; - this.match(PostgreSqlParser.COMMA); - this.state = 9893; - this.match(PostgreSqlParser.KW_VARIADIC); - this.state = 9894; - this.func_arg_expr(); - } - } - - this.state = 9898; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 9897; - this.opt_sort_clause(); - } - } - - } - break; - case PostgreSqlParser.KW_VARIADIC: - { - this.state = 9900; - this.match(PostgreSqlParser.KW_VARIADIC); - this.state = 9901; - this.func_arg_expr(); - this.state = 9903; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 9902; - this.opt_sort_clause(); - } - } - - } - break; - case PostgreSqlParser.KW_ALL: - case PostgreSqlParser.KW_DISTINCT: - { - this.state = 9905; - _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 56)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 9906; - this.func_arg_list(); - this.state = 9908; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 9907; - this.opt_sort_clause(); - } - } - - } - break; - case PostgreSqlParser.STAR: - { - this.state = 9910; - this.match(PostgreSqlParser.STAR); - } - break; - case PostgreSqlParser.CLOSE_PAREN: - // tslint:disable-next-line:no-empty - { - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 9914; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_expr(): Func_exprContext { - let localContext = new Func_exprContext(this.context, this.state); - this.enterRule(localContext, 1260, PostgreSqlParser.RULE_func_expr); - try { - this.state = 9928; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1044, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9917; - this.func_application(); - this.state = 9919; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1041, this.context) ) { - case 1: - { - this.state = 9918; - this.within_group_clause(); - } - break; - } - this.state = 9922; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1042, this.context) ) { - case 1: - { - this.state = 9921; - this.filter_clause(); - } - break; - } - this.state = 9925; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { - case 1: - { - this.state = 9924; - this.over_clause(); - } - break; - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9927; - this.func_expr_common_subexpr(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_expr_windowless(): Func_expr_windowlessContext { - let localContext = new Func_expr_windowlessContext(this.context, this.state); - this.enterRule(localContext, 1262, PostgreSqlParser.RULE_func_expr_windowless); - try { - this.state = 9932; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1045, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 9930; - this.func_application(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 9931; - this.func_expr_common_subexpr(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_expr_common_subexpr(): Func_expr_common_subexprContext { - let localContext = new Func_expr_common_subexprContext(this.context, this.state); - this.enterRule(localContext, 1264, PostgreSqlParser.RULE_func_expr_common_subexpr); - let _la: number; - try { - this.state = 10118; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_COLLATION: - this.enterOuterAlt(localContext, 1); - { - this.state = 9934; - this.match(PostgreSqlParser.KW_COLLATION); - this.state = 9935; - this.match(PostgreSqlParser.KW_FOR); - this.state = 9936; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9937; - this.a_expr(); - this.state = 9938; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_CURRENT_DATE: - this.enterOuterAlt(localContext, 2); - { - this.state = 9940; - this.match(PostgreSqlParser.KW_CURRENT_DATE); - } - break; - case PostgreSqlParser.KW_CURRENT_TIME: - this.enterOuterAlt(localContext, 3); - { - this.state = 9941; - this.match(PostgreSqlParser.KW_CURRENT_TIME); - this.state = 9946; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context) ) { - case 1: - { - this.state = 9942; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9943; - this.iconst(); - this.state = 9944; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - this.enterOuterAlt(localContext, 4); - { - this.state = 9948; - this.match(PostgreSqlParser.KW_CURRENT_TIMESTAMP); - this.state = 9953; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1047, this.context) ) { - case 1: - { - this.state = 9949; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9950; - this.iconst(); - this.state = 9951; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - case PostgreSqlParser.KW_LOCALTIME: - this.enterOuterAlt(localContext, 5); - { - this.state = 9955; - this.match(PostgreSqlParser.KW_LOCALTIME); - this.state = 9960; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1048, this.context) ) { - case 1: - { - this.state = 9956; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9957; - this.iconst(); - this.state = 9958; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - case PostgreSqlParser.KW_LOCALTIMESTAMP: - this.enterOuterAlt(localContext, 6); - { - this.state = 9962; - this.match(PostgreSqlParser.KW_LOCALTIMESTAMP); - this.state = 9967; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context) ) { - case 1: - { - this.state = 9963; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9964; - this.iconst(); - this.state = 9965; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - case PostgreSqlParser.KW_CURRENT_ROLE: - this.enterOuterAlt(localContext, 7); - { - this.state = 9969; - this.match(PostgreSqlParser.KW_CURRENT_ROLE); - } - break; - case PostgreSqlParser.KW_CURRENT_USER: - this.enterOuterAlt(localContext, 8); - { - this.state = 9970; - this.match(PostgreSqlParser.KW_CURRENT_USER); - } - break; - case PostgreSqlParser.KW_SESSION_USER: - this.enterOuterAlt(localContext, 9); - { - this.state = 9971; - this.match(PostgreSqlParser.KW_SESSION_USER); - } - break; - case PostgreSqlParser.KW_USER: - this.enterOuterAlt(localContext, 10); - { - this.state = 9972; - this.match(PostgreSqlParser.KW_USER); - } - break; - case PostgreSqlParser.KW_CURRENT_CATALOG: - this.enterOuterAlt(localContext, 11); - { - this.state = 9973; - this.match(PostgreSqlParser.KW_CURRENT_CATALOG); - } - break; - case PostgreSqlParser.KW_CURRENT_SCHEMA: - this.enterOuterAlt(localContext, 12); - { - this.state = 9974; - this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); - } - break; - case PostgreSqlParser.KW_CAST: - this.enterOuterAlt(localContext, 13); - { - this.state = 9975; - this.match(PostgreSqlParser.KW_CAST); - this.state = 9976; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9977; - this.a_expr(); - this.state = 9978; - this.match(PostgreSqlParser.KW_AS); - this.state = 9979; - this.typename(); - this.state = 9980; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_EXTRACT: - this.enterOuterAlt(localContext, 14); - { - this.state = 9982; - this.match(PostgreSqlParser.KW_EXTRACT); - this.state = 9983; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9985; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8929553) !== 0) || ((((_la - 207)) & ~0x1F) === 0 && ((1 << (_la - 207)) & 2057) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 428867841) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1059905) !== 0) || _la === 360 || _la === 384 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { - { - this.state = 9984; - this.extract_list(); - } - } - - this.state = 9987; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_NORMALIZE: - this.enterOuterAlt(localContext, 15); - { - this.state = 9988; - this.match(PostgreSqlParser.KW_NORMALIZE); - this.state = 9989; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9990; - this.a_expr(); - this.state = 9993; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 9991; - this.match(PostgreSqlParser.COMMA); - this.state = 9992; - this.unicode_normal_form(); - } - } - - this.state = 9995; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_OVERLAY: - this.enterOuterAlt(localContext, 16); - { - this.state = 9997; - this.match(PostgreSqlParser.KW_OVERLAY); - this.state = 9998; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 9999; - this.overlay_list(); - this.state = 10000; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_POSITION: - this.enterOuterAlt(localContext, 17); - { - this.state = 10002; - this.match(PostgreSqlParser.KW_POSITION); - this.state = 10003; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10005; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763019) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10004; - this.position_list(); - } - } - - this.state = 10007; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_SUBSTRING: - this.enterOuterAlt(localContext, 18); - { - this.state = 10008; - this.match(PostgreSqlParser.KW_SUBSTRING); - this.state = 10009; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10011; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10010; - this.substr_list(); - } - } - - this.state = 10013; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_TREAT: - this.enterOuterAlt(localContext, 19); - { - this.state = 10014; - this.match(PostgreSqlParser.KW_TREAT); - this.state = 10015; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10016; - this.a_expr(); - this.state = 10017; - this.match(PostgreSqlParser.KW_AS); - this.state = 10018; - this.typename(); - this.state = 10019; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_TRIM: - this.enterOuterAlt(localContext, 20); - { - this.state = 10021; - this.match(PostgreSqlParser.KW_TRIM); - this.state = 10022; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10024; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 39 || _la === 73 || _la === 95) { - { - this.state = 10023; - _la = this.tokenStream.LA(1); - if(!(_la === 39 || _la === 73 || _la === 95)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 10026; - this.trim_list(); - this.state = 10027; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_NULLIF: - this.enterOuterAlt(localContext, 21); - { - this.state = 10029; - this.match(PostgreSqlParser.KW_NULLIF); - this.state = 10030; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10031; - this.a_expr(); - this.state = 10032; - this.match(PostgreSqlParser.COMMA); - this.state = 10033; - this.a_expr(); - this.state = 10034; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_COALESCE: - this.enterOuterAlt(localContext, 22); - { - this.state = 10036; - this.match(PostgreSqlParser.KW_COALESCE); - this.state = 10037; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10038; - this.expr_list(); - this.state = 10039; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_GREATEST: - this.enterOuterAlt(localContext, 23); - { - this.state = 10041; - this.match(PostgreSqlParser.KW_GREATEST); - this.state = 10042; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10043; - this.expr_list(); - this.state = 10044; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_LEAST: - this.enterOuterAlt(localContext, 24); - { - this.state = 10046; - this.match(PostgreSqlParser.KW_LEAST); - this.state = 10047; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10048; - this.expr_list(); - this.state = 10049; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLCONCAT: - this.enterOuterAlt(localContext, 25); - { - this.state = 10051; - this.match(PostgreSqlParser.KW_XMLCONCAT); - this.state = 10052; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10053; - this.expr_list(); - this.state = 10054; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLELEMENT: - this.enterOuterAlt(localContext, 26); - { - this.state = 10056; - this.match(PostgreSqlParser.KW_XMLELEMENT); - this.state = 10057; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10058; - this.match(PostgreSqlParser.KW_NAME); - this.state = 10059; - this.collabel(); - this.state = 10065; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 10060; - this.match(PostgreSqlParser.COMMA); - this.state = 10063; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1055, this.context) ) { - case 1: - { - this.state = 10061; - this.xml_attributes(); - } - break; - case 2: - { - this.state = 10062; - this.expr_list(); - } - break; - } - } - } - - this.state = 10067; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLEXISTS: - this.enterOuterAlt(localContext, 27); - { - this.state = 10069; - this.match(PostgreSqlParser.KW_XMLEXISTS); - this.state = 10070; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10071; - this.c_expr(); - this.state = 10072; - this.xmlexists_argument(); - this.state = 10073; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLFOREST: - this.enterOuterAlt(localContext, 28); - { - this.state = 10075; - this.match(PostgreSqlParser.KW_XMLFOREST); - this.state = 10076; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10077; - this.xml_attribute_list(); - this.state = 10078; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLPARSE: - this.enterOuterAlt(localContext, 29); - { - this.state = 10080; - this.match(PostgreSqlParser.KW_XMLPARSE); - this.state = 10081; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10082; - this.document_or_content(); - this.state = 10083; - this.a_expr(); - this.state = 10085; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 292 || _la === 347) { - { - this.state = 10084; - this.xml_whitespace_option(); - } - } - - this.state = 10087; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLPI: - this.enterOuterAlt(localContext, 30); - { - this.state = 10089; - this.match(PostgreSqlParser.KW_XMLPI); - this.state = 10090; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10091; - this.match(PostgreSqlParser.KW_NAME); - this.state = 10092; - this.collabel(); - this.state = 10095; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 10093; - this.match(PostgreSqlParser.COMMA); - this.state = 10094; - this.a_expr(); - } - } - - this.state = 10097; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLROOT: - this.enterOuterAlt(localContext, 31); - { - this.state = 10099; - this.match(PostgreSqlParser.KW_XMLROOT); - this.state = 10100; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10101; - this.match(PostgreSqlParser.KW_XML); - this.state = 10102; - this.a_expr(); - this.state = 10103; - this.match(PostgreSqlParser.COMMA); - this.state = 10104; - this.xml_root_version(); - this.state = 10106; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6) { - { - this.state = 10105; - this.opt_xml_root_standalone(); - } - } - - this.state = 10108; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.KW_XMLSERIALIZE: - this.enterOuterAlt(localContext, 32); - { - this.state = 10110; - this.match(PostgreSqlParser.KW_XMLSERIALIZE); - this.state = 10111; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10112; - this.document_or_content(); - this.state = 10113; - this.a_expr(); - this.state = 10114; - this.match(PostgreSqlParser.KW_AS); - this.state = 10115; - this.simpletypename(); - this.state = 10116; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_root_version(): Xml_root_versionContext { - let localContext = new Xml_root_versionContext(this.context, this.state); - this.enterRule(localContext, 1266, PostgreSqlParser.RULE_xml_root_version); - try { - this.state = 10125; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1061, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10120; - this.match(PostgreSqlParser.KW_VERSION); - this.state = 10121; - this.a_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10122; - this.match(PostgreSqlParser.KW_VERSION); - this.state = 10123; - this.match(PostgreSqlParser.KW_NO); - this.state = 10124; - this.match(PostgreSqlParser.KW_VALUE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_xml_root_standalone(): Opt_xml_root_standaloneContext { - let localContext = new Opt_xml_root_standaloneContext(this.context, this.state); - this.enterRule(localContext, 1268, PostgreSqlParser.RULE_opt_xml_root_standalone); - try { - this.state = 10137; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1062, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10127; - this.match(PostgreSqlParser.COMMA); - this.state = 10128; - this.match(PostgreSqlParser.KW_STANDALONE); - this.state = 10129; - this.match(PostgreSqlParser.KW_YES); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10130; - this.match(PostgreSqlParser.COMMA); - this.state = 10131; - this.match(PostgreSqlParser.KW_STANDALONE); - this.state = 10132; - this.match(PostgreSqlParser.KW_NO); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10133; - this.match(PostgreSqlParser.COMMA); - this.state = 10134; - this.match(PostgreSqlParser.KW_STANDALONE); - this.state = 10135; - this.match(PostgreSqlParser.KW_NO); - this.state = 10136; - this.match(PostgreSqlParser.KW_VALUE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_attributes(): Xml_attributesContext { - let localContext = new Xml_attributesContext(this.context, this.state); - this.enterRule(localContext, 1270, PostgreSqlParser.RULE_xml_attributes); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10139; - this.match(PostgreSqlParser.KW_XMLATTRIBUTES); - this.state = 10140; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10141; - this.xml_attribute_list(); - this.state = 10142; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_attribute_list(): Xml_attribute_listContext { - let localContext = new Xml_attribute_listContext(this.context, this.state); - this.enterRule(localContext, 1272, PostgreSqlParser.RULE_xml_attribute_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10144; - this.xml_attribute_el(); - this.state = 10149; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10145; - this.match(PostgreSqlParser.COMMA); - this.state = 10146; - this.xml_attribute_el(); - } - } - this.state = 10151; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_attribute_el(): Xml_attribute_elContext { - let localContext = new Xml_attribute_elContext(this.context, this.state); - this.enterRule(localContext, 1274, PostgreSqlParser.RULE_xml_attribute_el); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10152; - this.a_expr(); - this.state = 10155; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 10153; - this.match(PostgreSqlParser.KW_AS); - this.state = 10154; - this.collabel(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public document_or_content(): Document_or_contentContext { - let localContext = new Document_or_contentContext(this.context, this.state); - this.enterRule(localContext, 1276, PostgreSqlParser.RULE_document_or_content); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10157; - _la = this.tokenStream.LA(1); - if(!(_la === 166 || _la === 188)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_whitespace_option(): Xml_whitespace_optionContext { - let localContext = new Xml_whitespace_optionContext(this.context, this.state); - this.enterRule(localContext, 1278, PostgreSqlParser.RULE_xml_whitespace_option); - try { - this.state = 10163; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_PRESERVE: - this.enterOuterAlt(localContext, 1); - { - this.state = 10159; - this.match(PostgreSqlParser.KW_PRESERVE); - this.state = 10160; - this.match(PostgreSqlParser.KW_WHITESPACE); - } - break; - case PostgreSqlParser.KW_STRIP: - this.enterOuterAlt(localContext, 2); - { - this.state = 10161; - this.match(PostgreSqlParser.KW_STRIP); - this.state = 10162; - this.match(PostgreSqlParser.KW_WHITESPACE); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xmlexists_argument(): Xmlexists_argumentContext { - let localContext = new Xmlexists_argumentContext(this.context, this.state); - this.enterRule(localContext, 1280, PostgreSqlParser.RULE_xmlexists_argument); - try { - this.state = 10180; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1066, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10165; - this.match(PostgreSqlParser.KW_PASSING); - this.state = 10166; - this.c_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10167; - this.match(PostgreSqlParser.KW_PASSING); - this.state = 10168; - this.c_expr(); - this.state = 10169; - this.xml_passing_mech(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10171; - this.match(PostgreSqlParser.KW_PASSING); - this.state = 10172; - this.xml_passing_mech(); - this.state = 10173; - this.c_expr(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10175; - this.match(PostgreSqlParser.KW_PASSING); - this.state = 10176; - this.xml_passing_mech(); - this.state = 10177; - this.c_expr(); - this.state = 10178; - this.xml_passing_mech(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xml_passing_mech(): Xml_passing_mechContext { - let localContext = new Xml_passing_mechContext(this.context, this.state); - this.enterRule(localContext, 1282, PostgreSqlParser.RULE_xml_passing_mech); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10182; - this.match(PostgreSqlParser.KW_BY); - this.state = 10183; - _la = this.tokenStream.LA(1); - if(!(_la === 304 || _la === 450)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public within_group_clause(): Within_group_clauseContext { - let localContext = new Within_group_clauseContext(this.context, this.state); - this.enterRule(localContext, 1284, PostgreSqlParser.RULE_within_group_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10185; - this.match(PostgreSqlParser.KW_WITHIN); - this.state = 10186; - this.match(PostgreSqlParser.KW_GROUP); - this.state = 10187; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10188; - this.sort_clause(); - this.state = 10189; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public filter_clause(): Filter_clauseContext { - let localContext = new Filter_clauseContext(this.context, this.state); - this.enterRule(localContext, 1286, PostgreSqlParser.RULE_filter_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10191; - this.match(PostgreSqlParser.KW_FILTER); - this.state = 10192; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10193; - this.match(PostgreSqlParser.KW_WHERE); - this.state = 10194; - this.a_expr(); - this.state = 10195; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public window_clause(): Window_clauseContext { - let localContext = new Window_clauseContext(this.context, this.state); - this.enterRule(localContext, 1288, PostgreSqlParser.RULE_window_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10197; - this.match(PostgreSqlParser.KW_WINDOW); - this.state = 10198; - this.window_definition_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public window_definition_list(): Window_definition_listContext { - let localContext = new Window_definition_listContext(this.context, this.state); - this.enterRule(localContext, 1290, PostgreSqlParser.RULE_window_definition_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 10200; - this.window_definition(); - this.state = 10205; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1067, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 10201; - this.match(PostgreSqlParser.COMMA); - this.state = 10202; - this.window_definition(); - } - } - } - this.state = 10207; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1067, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public window_definition(): Window_definitionContext { - let localContext = new Window_definitionContext(this.context, this.state); - this.enterRule(localContext, 1292, PostgreSqlParser.RULE_window_definition); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10208; - this.colid(); - this.state = 10209; - this.match(PostgreSqlParser.KW_AS); - this.state = 10210; - this.window_specification(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public over_clause(): Over_clauseContext { - let localContext = new Over_clauseContext(this.context, this.state); - this.enterRule(localContext, 1294, PostgreSqlParser.RULE_over_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10212; - this.match(PostgreSqlParser.KW_OVER); - this.state = 10215; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - { - this.state = 10213; - this.window_specification(); - } - break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 10214; - this.colid(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public window_specification(): Window_specificationContext { - let localContext = new Window_specificationContext(this.context, this.state); - this.enterRule(localContext, 1296, PostgreSqlParser.RULE_window_specification); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10217; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10219; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context) ) { - case 1: - { - this.state = 10218; - this.opt_existing_window_name(); - } - break; - } - this.state = 10222; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 285) { - { - this.state = 10221; - this.opt_partition_clause(); - } - } - - this.state = 10225; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 10224; - this.opt_sort_clause(); - } - } - - this.state = 10228; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 299 || _la === 320 || _la === 481) { - { - this.state = 10227; - this.opt_frame_clause(); - } - } - - this.state = 10230; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_existing_window_name(): Opt_existing_window_nameContext { - let localContext = new Opt_existing_window_nameContext(this.context, this.state); - this.enterRule(localContext, 1298, PostgreSqlParser.RULE_opt_existing_window_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10232; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_partition_clause(): Opt_partition_clauseContext { - let localContext = new Opt_partition_clauseContext(this.context, this.state); - this.enterRule(localContext, 1300, PostgreSqlParser.RULE_opt_partition_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10234; - this.match(PostgreSqlParser.KW_PARTITION); - this.state = 10235; - this.match(PostgreSqlParser.KW_BY); - this.state = 10236; - this.expr_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_frame_clause(): Opt_frame_clauseContext { - let localContext = new Opt_frame_clauseContext(this.context, this.state); - this.enterRule(localContext, 1302, PostgreSqlParser.RULE_opt_frame_clause); - let _la: number; - try { - this.state = 10253; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_RANGE: - this.enterOuterAlt(localContext, 1); - { - this.state = 10238; - this.match(PostgreSqlParser.KW_RANGE); - this.state = 10239; - this.frame_extent(); - this.state = 10241; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 199) { - { - this.state = 10240; - this.opt_window_exclusion_clause(); - } - } - - } - break; - case PostgreSqlParser.KW_ROWS: - this.enterOuterAlt(localContext, 2); - { - this.state = 10243; - this.match(PostgreSqlParser.KW_ROWS); - this.state = 10244; - this.frame_extent(); - this.state = 10246; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 199) { - { - this.state = 10245; - this.opt_window_exclusion_clause(); - } - } - - } - break; - case PostgreSqlParser.KW_GROUPS: - this.enterOuterAlt(localContext, 3); - { - this.state = 10248; - this.match(PostgreSqlParser.KW_GROUPS); - this.state = 10249; - this.frame_extent(); - this.state = 10251; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 199) { - { - this.state = 10250; - this.opt_window_exclusion_clause(); - } - } - - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public frame_extent(): Frame_extentContext { - let localContext = new Frame_extentContext(this.context, this.state); - this.enterRule(localContext, 1304, PostgreSqlParser.RULE_frame_extent); - try { - this.state = 10261; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1077, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10255; - this.frame_bound(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10256; - this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 10257; - this.frame_bound(); - this.state = 10258; - this.match(PostgreSqlParser.KW_AND); - this.state = 10259; - this.frame_bound(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public frame_bound(): Frame_boundContext { - let localContext = new Frame_boundContext(this.context, this.state); - this.enterRule(localContext, 1306, PostgreSqlParser.RULE_frame_bound); - let _la: number; - try { - this.state = 10270; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1078, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10263; - this.match(PostgreSqlParser.KW_UNBOUNDED); - this.state = 10264; - _la = this.tokenStream.LA(1); - if(!(_la === 208 || _la === 289)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10265; - this.match(PostgreSqlParser.KW_CURRENT); - this.state = 10266; - this.match(PostgreSqlParser.KW_ROW); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10267; - this.a_expr(); - this.state = 10268; - _la = this.tokenStream.LA(1); - if(!(_la === 208 || _la === 289)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_window_exclusion_clause(): Opt_window_exclusion_clauseContext { - let localContext = new Opt_window_exclusion_clauseContext(this.context, this.state); - this.enterRule(localContext, 1308, PostgreSqlParser.RULE_opt_window_exclusion_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10272; - this.match(PostgreSqlParser.KW_EXCLUDE); - this.state = 10279; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CURRENT: - { - this.state = 10273; - this.match(PostgreSqlParser.KW_CURRENT); - this.state = 10274; - this.match(PostgreSqlParser.KW_ROW); - } - break; - case PostgreSqlParser.KW_GROUP: - { - this.state = 10275; - this.match(PostgreSqlParser.KW_GROUP); - } - break; - case PostgreSqlParser.KW_TIES: - { - this.state = 10276; - this.match(PostgreSqlParser.KW_TIES); - } - break; - case PostgreSqlParser.KW_NO: - { - this.state = 10277; - this.match(PostgreSqlParser.KW_NO); - this.state = 10278; - this.match(PostgreSqlParser.KW_OTHERS); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public row(): RowContext { - let localContext = new RowContext(this.context, this.state); - this.enterRule(localContext, 1310, PostgreSqlParser.RULE_row); - let _la: number; - try { - this.state = 10293; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ROW: - this.enterOuterAlt(localContext, 1); - { - this.state = 10281; - this.match(PostgreSqlParser.KW_ROW); - this.state = 10282; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10284; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10283; - this.expr_list(); - } - } - - this.state = 10286; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case PostgreSqlParser.OPEN_PAREN: - this.enterOuterAlt(localContext, 2); - { - this.state = 10287; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10288; - this.expr_list(); - this.state = 10289; - this.match(PostgreSqlParser.COMMA); - this.state = 10290; - this.a_expr(); - this.state = 10291; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public explicit_row(): Explicit_rowContext { - let localContext = new Explicit_rowContext(this.context, this.state); - this.enterRule(localContext, 1312, PostgreSqlParser.RULE_explicit_row); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10295; - this.match(PostgreSqlParser.KW_ROW); - this.state = 10296; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10298; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10297; - this.expr_list(); - } - } - - this.state = 10300; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public implicit_row(): Implicit_rowContext { - let localContext = new Implicit_rowContext(this.context, this.state); - this.enterRule(localContext, 1314, PostgreSqlParser.RULE_implicit_row); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10302; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10303; - this.a_expr(); - this.state = 10304; - this.match(PostgreSqlParser.COMMA); - this.state = 10305; - this.expr_list(); - this.state = 10306; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sub_type(): Sub_typeContext { - let localContext = new Sub_typeContext(this.context, this.state); - this.enterRule(localContext, 1316, PostgreSqlParser.RULE_sub_type); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10308; - _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 34 || _la === 90)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public all_op(): All_opContext { - let localContext = new All_opContext(this.context, this.state); - this.enterRule(localContext, 1318, PostgreSqlParser.RULE_all_op); - try { - this.state = 10312; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.Operator: - this.enterOuterAlt(localContext, 1); - { - this.state = 10310; - this.match(PostgreSqlParser.Operator); - } - break; - case PostgreSqlParser.STAR: - case PostgreSqlParser.EQUAL: - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.SLASH: - case PostgreSqlParser.CARET: - case PostgreSqlParser.LT: - case PostgreSqlParser.GT: - case PostgreSqlParser.LESS_EQUALS: - case PostgreSqlParser.GREATER_EQUALS: - case PostgreSqlParser.NOT_EQUALS: - case PostgreSqlParser.PERCENT: - this.enterOuterAlt(localContext, 2); - { - this.state = 10311; - this.mathop(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public mathop(): MathopContext { - let localContext = new MathopContext(this.context, this.state); - this.enterRule(localContext, 1320, PostgreSqlParser.RULE_mathop); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10314; - _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 178517504) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public qual_op(): Qual_opContext { - let localContext = new Qual_opContext(this.context, this.state); - this.enterRule(localContext, 1322, PostgreSqlParser.RULE_qual_op); - try { - this.state = 10322; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.Operator: - this.enterOuterAlt(localContext, 1); - { - this.state = 10316; - this.match(PostgreSqlParser.Operator); - } - break; - case PostgreSqlParser.KW_OPERATOR: - this.enterOuterAlt(localContext, 2); - { - this.state = 10317; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 10318; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10319; - this.any_operator(); - this.state = 10320; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public qual_all_op(): Qual_all_opContext { - let localContext = new Qual_all_opContext(this.context, this.state); - this.enterRule(localContext, 1324, PostgreSqlParser.RULE_qual_all_op); - try { - this.state = 10330; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.STAR: - case PostgreSqlParser.EQUAL: - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.SLASH: - case PostgreSqlParser.CARET: - case PostgreSqlParser.LT: - case PostgreSqlParser.GT: - case PostgreSqlParser.LESS_EQUALS: - case PostgreSqlParser.GREATER_EQUALS: - case PostgreSqlParser.NOT_EQUALS: - case PostgreSqlParser.PERCENT: - case PostgreSqlParser.Operator: - this.enterOuterAlt(localContext, 1); - { - this.state = 10324; - this.all_op(); - } - break; - case PostgreSqlParser.KW_OPERATOR: - this.enterOuterAlt(localContext, 2); - { - this.state = 10325; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 10326; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10327; - this.any_operator(); - this.state = 10328; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public subquery_Op(): Subquery_OpContext { - let localContext = new Subquery_OpContext(this.context, this.state); - this.enterRule(localContext, 1326, PostgreSqlParser.RULE_subquery_Op); - try { - this.state = 10344; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1086, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10332; - this.all_op(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10333; - this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 10334; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10335; - this.any_operator(); - this.state = 10336; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10338; - this.match(PostgreSqlParser.KW_LIKE); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10339; - this.match(PostgreSqlParser.KW_NOT); - this.state = 10340; - this.match(PostgreSqlParser.KW_LIKE); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10341; - this.match(PostgreSqlParser.KW_ILIKE); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 10342; - this.match(PostgreSqlParser.KW_NOT); - this.state = 10343; - this.match(PostgreSqlParser.KW_ILIKE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expr_list(): Expr_listContext { - let localContext = new Expr_listContext(this.context, this.state); - this.enterRule(localContext, 1328, PostgreSqlParser.RULE_expr_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 10346; - this.a_expr(); - this.state = 10351; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1087, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 10347; - this.match(PostgreSqlParser.COMMA); - this.state = 10348; - this.a_expr(); - } - } - } - this.state = 10353; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1087, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public column_expr_list_noparen(): Column_expr_list_noparenContext { - let localContext = new Column_expr_list_noparenContext(this.context, this.state); - this.enterRule(localContext, 1330, PostgreSqlParser.RULE_column_expr_list_noparen); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10354; - this.column_expr_noparen(); - this.state = 10359; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10355; - this.match(PostgreSqlParser.COMMA); - this.state = 10356; - this.column_expr_noparen(); - } - } - this.state = 10361; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public column_expr_list(): Column_expr_listContext { - let localContext = new Column_expr_listContext(this.context, this.state); - this.enterRule(localContext, 1332, PostgreSqlParser.RULE_column_expr_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10362; - this.column_expr(); - this.state = 10367; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10363; - this.match(PostgreSqlParser.COMMA); - this.state = 10364; - this.column_expr(); - } - } - this.state = 10369; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public column_expr(): Column_exprContext { - let localContext = new Column_exprContext(this.context, this.state); - this.enterRule(localContext, 1334, PostgreSqlParser.RULE_column_expr); - try { - this.state = 10375; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1090, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - { - this.state = 10370; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10371; - this.a_expr(); - this.state = 10372; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10374; - this.column_name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public column_expr_noparen(): Column_expr_noparenContext { - let localContext = new Column_expr_noparenContext(this.context, this.state); - this.enterRule(localContext, 1336, PostgreSqlParser.RULE_column_expr_noparen); - try { - this.state = 10379; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1091, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10377; - this.a_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10378; - this.column_name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_arg_list(): Func_arg_listContext { - let localContext = new Func_arg_listContext(this.context, this.state); - this.enterRule(localContext, 1338, PostgreSqlParser.RULE_func_arg_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 10381; - this.func_arg_expr(); - this.state = 10386; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 10382; - this.match(PostgreSqlParser.COMMA); - this.state = 10383; - this.func_arg_expr(); - } - } - } - this.state = 10388; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public func_arg_expr(): Func_arg_exprContext { - let localContext = new Func_arg_exprContext(this.context, this.state); - this.enterRule(localContext, 1340, PostgreSqlParser.RULE_func_arg_expr); - let _la: number; - try { - this.state = 10394; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10389; - this.a_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10390; - this.param_name(); - this.state = 10391; - _la = this.tokenStream.LA(1); - if(!(_la === 20 || _la === 22)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 10392; - this.a_expr(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public type_list(): Type_listContext { - let localContext = new Type_listContext(this.context, this.state); - this.enterRule(localContext, 1342, PostgreSqlParser.RULE_type_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10396; - this.typename(); - this.state = 10401; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10397; - this.match(PostgreSqlParser.COMMA); - this.state = 10398; - this.typename(); - } - } - this.state = 10403; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public array_expr(): Array_exprContext { - let localContext = new Array_exprContext(this.context, this.state); - this.enterRule(localContext, 1344, PostgreSqlParser.RULE_array_expr); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10404; - this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 10407; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.PARAM: - case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_CASE: - case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CURRENT_CATALOG: - case PostgreSqlParser.KW_CURRENT_DATE: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_TIME: - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - case PostgreSqlParser.KW_CURRENT_USER: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_LOCALTIME: - case PostgreSqlParser.KW_LOCALTIMESTAMP: - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_NULL: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.BinaryStringConstant: - case PostgreSqlParser.HexadecimalStringConstant: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 10405; - this.expr_list(); - } - break; - case PostgreSqlParser.OPEN_BRACKET: - { - this.state = 10406; - this.array_expr_list(); - } - break; - case PostgreSqlParser.CLOSE_BRACKET: - break; - default: - break; - } - this.state = 10409; - this.match(PostgreSqlParser.CLOSE_BRACKET); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public array_expr_list(): Array_expr_listContext { - let localContext = new Array_expr_listContext(this.context, this.state); - this.enterRule(localContext, 1346, PostgreSqlParser.RULE_array_expr_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10411; - this.array_expr(); - this.state = 10416; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10412; - this.match(PostgreSqlParser.COMMA); - this.state = 10413; - this.array_expr(); - } - } - this.state = 10418; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public extract_list(): Extract_listContext { - let localContext = new Extract_listContext(this.context, this.state); - this.enterRule(localContext, 1348, PostgreSqlParser.RULE_extract_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10419; - this.extract_arg(); - this.state = 10420; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10421; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public extract_arg(): Extract_argContext { - let localContext = new Extract_argContext(this.context, this.state); - this.enterRule(localContext, 1350, PostgreSqlParser.RULE_extract_arg); - try { - this.state = 10431; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1097, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10423; - this.identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10424; - this.match(PostgreSqlParser.KW_YEAR); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10425; - this.match(PostgreSqlParser.KW_MONTH); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10426; - this.match(PostgreSqlParser.KW_DAY); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10427; - this.match(PostgreSqlParser.KW_HOUR); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 10428; - this.match(PostgreSqlParser.KW_MINUTE); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 10429; - this.match(PostgreSqlParser.KW_SECOND); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 10430; - this.sconst(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public unicode_normal_form(): Unicode_normal_formContext { - let localContext = new Unicode_normal_formContext(this.context, this.state); - this.enterRule(localContext, 1352, PostgreSqlParser.RULE_unicode_normal_form); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10433; - _la = this.tokenStream.LA(1); - if(!(((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & 15) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public overlay_list(): Overlay_listContext { - let localContext = new Overlay_listContext(this.context, this.state); - this.enterRule(localContext, 1354, PostgreSqlParser.RULE_overlay_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10435; - this.a_expr(); - this.state = 10436; - this.match(PostgreSqlParser.KW_PLACING); - this.state = 10437; - this.a_expr(); - this.state = 10438; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10439; - this.a_expr(); - this.state = 10442; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 62) { - { - this.state = 10440; - this.match(PostgreSqlParser.KW_FOR); - this.state = 10441; - this.a_expr(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public position_list(): Position_listContext { - let localContext = new Position_listContext(this.context, this.state); - this.enterRule(localContext, 1356, PostgreSqlParser.RULE_position_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10444; - this.b_expr(0); - this.state = 10445; - this.match(PostgreSqlParser.KW_IN); - this.state = 10446; - this.b_expr(0); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public substr_list(): Substr_listContext { - let localContext = new Substr_listContext(this.context, this.state); - this.enterRule(localContext, 1358, PostgreSqlParser.RULE_substr_list); - try { - this.state = 10475; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1099, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10448; - this.a_expr(); - this.state = 10449; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10450; - this.a_expr(); - this.state = 10451; - this.match(PostgreSqlParser.KW_FOR); - this.state = 10452; - this.a_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10454; - this.a_expr(); - this.state = 10455; - this.match(PostgreSqlParser.KW_FOR); - this.state = 10456; - this.a_expr(); - this.state = 10457; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10458; - this.a_expr(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10460; - this.a_expr(); - this.state = 10461; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10462; - this.a_expr(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10464; - this.a_expr(); - this.state = 10465; - this.match(PostgreSqlParser.KW_FOR); - this.state = 10466; - this.a_expr(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10468; - this.a_expr(); - this.state = 10469; - this.match(PostgreSqlParser.KW_SIMILAR); - this.state = 10470; - this.a_expr(); - this.state = 10471; - this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 10472; - this.a_expr(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 10474; - this.expr_list(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public trim_list(): Trim_listContext { - let localContext = new Trim_listContext(this.context, this.state); - this.enterRule(localContext, 1360, PostgreSqlParser.RULE_trim_list); - try { - this.state = 10484; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1100, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10477; - this.a_expr(); - this.state = 10478; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10479; - this.expr_list(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10481; - this.match(PostgreSqlParser.KW_FROM); - this.state = 10482; - this.expr_list(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10483; - this.expr_list(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public in_expr(): In_exprContext { - let localContext = new In_exprContext(this.context, this.state); - this.enterRule(localContext, 1362, PostgreSqlParser.RULE_in_expr); - try { - this.state = 10491; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1101, this.context) ) { - case 1: - localContext = new In_expr_selectContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10486; - this.select_with_parens(); - } - break; - case 2: - localContext = new In_expr_listContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10487; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10488; - this.expr_list(); - this.state = 10489; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public case_expr(): Case_exprContext { - let localContext = new Case_exprContext(this.context, this.state); - this.enterRule(localContext, 1364, PostgreSqlParser.RULE_case_expr); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10493; - this.match(PostgreSqlParser.KW_CASE); - this.state = 10495; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10494; - this.case_arg(); - } - } - - this.state = 10497; - this.when_clause_list(); - this.state = 10499; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 58) { - { - this.state = 10498; - this.case_default(); - } - } - - this.state = 10501; - this.match(PostgreSqlParser.KW_END); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public when_clause_list(): When_clause_listContext { - let localContext = new When_clause_listContext(this.context, this.state); - this.enterRule(localContext, 1366, PostgreSqlParser.RULE_when_clause_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10504; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 10503; - this.when_clause(); - } - } - this.state = 10506; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 102); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public when_clause(): When_clauseContext { - let localContext = new When_clauseContext(this.context, this.state); - this.enterRule(localContext, 1368, PostgreSqlParser.RULE_when_clause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10508; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 10509; - this.a_expr(); - this.state = 10510; - this.match(PostgreSqlParser.KW_THEN); - this.state = 10511; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public case_default(): Case_defaultContext { - let localContext = new Case_defaultContext(this.context, this.state); - this.enterRule(localContext, 1370, PostgreSqlParser.RULE_case_default); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10513; - this.match(PostgreSqlParser.KW_ELSE); - this.state = 10514; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public case_arg(): Case_argContext { - let localContext = new Case_argContext(this.context, this.state); - this.enterRule(localContext, 1372, PostgreSqlParser.RULE_case_arg); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10516; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public columnref(): ColumnrefContext { - let localContext = new ColumnrefContext(this.context, this.state); - this.enterRule(localContext, 1374, PostgreSqlParser.RULE_columnref); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10518; - this.colid(); - this.state = 10520; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1105, this.context) ) { - case 1: - { - this.state = 10519; - this.indirection(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public indirection_el(): Indirection_elContext { - let localContext = new Indirection_elContext(this.context, this.state); - this.enterRule(localContext, 1376, PostgreSqlParser.RULE_indirection_el); - let _la: number; - try { - this.state = 10539; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.DOT: - this.enterOuterAlt(localContext, 1); - { - this.state = 10522; - this.match(PostgreSqlParser.DOT); - this.state = 10525; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_ALL: - case PostgreSqlParser.KW_ANALYSE: - case PostgreSqlParser.KW_ANALYZE: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ANY: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_AS: - case PostgreSqlParser.KW_ASC: - case PostgreSqlParser.KW_ASYMMETRIC: - case PostgreSqlParser.KW_BOTH: - case PostgreSqlParser.KW_CASE: - case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_CHECK: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_COLUMN: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CREATE: - case PostgreSqlParser.KW_CURRENT_CATALOG: - case PostgreSqlParser.KW_CURRENT_DATE: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_TIME: - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - case PostgreSqlParser.KW_CURRENT_USER: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DEFERRABLE: - case PostgreSqlParser.KW_DESC: - case PostgreSqlParser.KW_DISTINCT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_ELSE: - case PostgreSqlParser.KW_EXCEPT: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_FOR: - case PostgreSqlParser.KW_FOREIGN: - case PostgreSqlParser.KW_FROM: - case PostgreSqlParser.KW_GRANT: - case PostgreSqlParser.KW_GROUP: - case PostgreSqlParser.KW_HAVING: - case PostgreSqlParser.KW_IN: - case PostgreSqlParser.KW_INITIALLY: - case PostgreSqlParser.KW_INTERSECT: - case PostgreSqlParser.KW_LATERAL: - case PostgreSqlParser.KW_LEADING: - case PostgreSqlParser.KW_LIMIT: - case PostgreSqlParser.KW_LOCALTIME: - case PostgreSqlParser.KW_LOCALTIMESTAMP: - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_NULL: - case PostgreSqlParser.KW_OFFSET: - case PostgreSqlParser.KW_ON: - case PostgreSqlParser.KW_ONLY: - case PostgreSqlParser.KW_OR: - case PostgreSqlParser.KW_ORDER: - case PostgreSqlParser.KW_PLACING: - case PostgreSqlParser.KW_PRIMARY: - case PostgreSqlParser.KW_REFERENCES: - case PostgreSqlParser.KW_RETURNING: - case PostgreSqlParser.KW_SELECT: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_SOME: - case PostgreSqlParser.KW_SYMMETRIC: - case PostgreSqlParser.KW_TABLE: - case PostgreSqlParser.KW_THEN: - case PostgreSqlParser.KW_TO: - case PostgreSqlParser.KW_TRAILING: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_UNION: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_USING: - case PostgreSqlParser.KW_VARIADIC: - case PostgreSqlParser.KW_WHEN: - case PostgreSqlParser.KW_WHERE: - case PostgreSqlParser.KW_WINDOW: - case PostgreSqlParser.KW_WITH: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_END: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 10523; - this.attr_name(); - } - break; - case PostgreSqlParser.STAR: - { - this.state = 10524; - this.match(PostgreSqlParser.STAR); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case PostgreSqlParser.OPEN_BRACKET: - this.enterOuterAlt(localContext, 2); - { - this.state = 10527; - this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 10536; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1109, this.context) ) { - case 1: - { - this.state = 10528; - this.a_expr(); - } - break; - case 2: - { - this.state = 10530; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10529; - this.opt_slice_bound(); - } - } - - this.state = 10532; - this.match(PostgreSqlParser.COLON); - this.state = 10534; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { - { - this.state = 10533; - this.opt_slice_bound(); - } - } - - } - break; - } - this.state = 10538; - this.match(PostgreSqlParser.CLOSE_BRACKET); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_slice_bound(): Opt_slice_boundContext { - let localContext = new Opt_slice_boundContext(this.context, this.state); - this.enterRule(localContext, 1378, PostgreSqlParser.RULE_opt_slice_bound); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10541; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public indirection(): IndirectionContext { - let localContext = new IndirectionContext(this.context, this.state); - this.enterRule(localContext, 1380, PostgreSqlParser.RULE_indirection); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 10544; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - { - this.state = 10543; - this.indirection_el(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 10546; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1111, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_indirection(): Opt_indirectionContext { - let localContext = new Opt_indirectionContext(this.context, this.state); - this.enterRule(localContext, 1382, PostgreSqlParser.RULE_opt_indirection); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 10551; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1112, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 10548; - this.indirection_el(); - } - } - } - this.state = 10553; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1112, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_target_list(): Opt_target_listContext { - let localContext = new Opt_target_listContext(this.context, this.state); - this.enterRule(localContext, 1384, PostgreSqlParser.RULE_opt_target_list); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10554; - this.target_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public target_list(): Target_listContext { - let localContext = new Target_listContext(this.context, this.state); - this.enterRule(localContext, 1386, PostgreSqlParser.RULE_target_list); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 10556; - this.target_el(); - this.state = 10561; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 10557; - this.match(PostgreSqlParser.COMMA); - this.state = 10558; - this.target_el(); - } - } - } - this.state = 10563; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public target_el(): Target_elContext { - let localContext = new Target_elContext(this.context, this.state); - this.enterRule(localContext, 1388, PostgreSqlParser.RULE_target_el); - try { - this.state = 10572; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1115, this.context) ) { - case 1: - localContext = new Target_labelContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10564; - this.column_expr_noparen(); - this.state = 10569; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1114, this.context) ) { - case 1: - { - this.state = 10565; - this.match(PostgreSqlParser.KW_AS); - this.state = 10566; - this.collabel(); - } - break; - case 2: - { - this.state = 10567; - this.identifier(); - } - break; - case 3: - // tslint:disable-next-line:no-empty - { - } - break; - } - } - break; - case 2: - localContext = new Target_starContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10571; - this.match(PostgreSqlParser.STAR); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public qualified_name_list(): Qualified_name_listContext { - let localContext = new Qualified_name_listContext(this.context, this.state); - this.enterRule(localContext, 1390, PostgreSqlParser.RULE_qualified_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10574; - this.qualified_name(); - this.state = 10579; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10575; - this.match(PostgreSqlParser.COMMA); - this.state = 10576; - this.qualified_name(); - } - } - this.state = 10581; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public table_name_list(): Table_name_listContext { - let localContext = new Table_name_listContext(this.context, this.state); - this.enterRule(localContext, 1392, PostgreSqlParser.RULE_table_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10582; - this.table_name(); - this.state = 10587; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10583; - this.match(PostgreSqlParser.COMMA); - this.state = 10584; - this.table_name(); - } - } - this.state = 10589; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public schema_name_list(): Schema_name_listContext { - let localContext = new Schema_name_listContext(this.context, this.state); - this.enterRule(localContext, 1394, PostgreSqlParser.RULE_schema_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10590; - this.schema_name(); - this.state = 10595; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10591; - this.match(PostgreSqlParser.COMMA); - this.state = 10592; - this.schema_name(); - } - } - this.state = 10597; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public database_nameList(): Database_nameListContext { - let localContext = new Database_nameListContext(this.context, this.state); - this.enterRule(localContext, 1396, PostgreSqlParser.RULE_database_nameList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10598; - this.database_name(); - this.state = 10603; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10599; - this.match(PostgreSqlParser.COMMA); - this.state = 10600; - this.database_name(); - } - } - this.state = 10605; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_name_list(): Procedure_name_listContext { - let localContext = new Procedure_name_listContext(this.context, this.state); - this.enterRule(localContext, 1398, PostgreSqlParser.RULE_procedure_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10606; - this.procedure_name(); - this.state = 10611; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10607; - this.match(PostgreSqlParser.COMMA); - this.state = 10608; - this.procedure_name(); - } - } - this.state = 10613; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tablespace_name_create(): Tablespace_name_createContext { - let localContext = new Tablespace_name_createContext(this.context, this.state); - this.enterRule(localContext, 1400, PostgreSqlParser.RULE_tablespace_name_create); - let _la: number; - try { - localContext = new TablespaceNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10614; - this.colid(); - this.state = 10616; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 10615; - this.indirection(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tablespace_name(): Tablespace_nameContext { - let localContext = new Tablespace_nameContext(this.context, this.state); - this.enterRule(localContext, 1402, PostgreSqlParser.RULE_tablespace_name); - let _la: number; - try { - localContext = new TablespaceNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10618; - this.colid(); - this.state = 10620; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 10619; - this.indirection(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public table_name_create(): Table_name_createContext { - let localContext = new Table_name_createContext(this.context, this.state); - this.enterRule(localContext, 1404, PostgreSqlParser.RULE_table_name_create); - try { - localContext = new TableNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10622; - this.colid(); - this.state = 10624; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context) ) { - case 1: - { - this.state = 10623; - this.indirection(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public table_name(): Table_nameContext { - let localContext = new Table_nameContext(this.context, this.state); - this.enterRule(localContext, 1406, PostgreSqlParser.RULE_table_name); - let _la: number; - try { - localContext = new TableNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10626; - this.colid(); - this.state = 10628; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 10627; - this.indirection(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public view_name_create(): View_name_createContext { - let localContext = new View_name_createContext(this.context, this.state); - this.enterRule(localContext, 1408, PostgreSqlParser.RULE_view_name_create); - let _la: number; - try { - localContext = new ViewNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10630; - this.colid(); - this.state = 10632; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 10631; - this.indirection(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public view_name(): View_nameContext { - let localContext = new View_nameContext(this.context, this.state); - this.enterRule(localContext, 1410, PostgreSqlParser.RULE_view_name); - try { - localContext = new ViewNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10634; - this.colid(); - this.state = 10636; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1126, this.context) ) { - case 1: - { - this.state = 10635; - this.attrs(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public qualified_name(): Qualified_nameContext { - let localContext = new Qualified_nameContext(this.context, this.state); - this.enterRule(localContext, 1412, PostgreSqlParser.RULE_qualified_name); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10638; - this.colid(); - this.state = 10640; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 4 || _la === 11) { - { - this.state = 10639; - this.indirection(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tablespace_name_list(): Tablespace_name_listContext { - let localContext = new Tablespace_name_listContext(this.context, this.state); - this.enterRule(localContext, 1414, PostgreSqlParser.RULE_tablespace_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10642; - this.tablespace_name(); - this.state = 10647; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10643; - this.match(PostgreSqlParser.COMMA); - this.state = 10644; - this.tablespace_name(); - } - } - this.state = 10649; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public name_list(): Name_listContext { - let localContext = new Name_listContext(this.context, this.state); - this.enterRule(localContext, 1416, PostgreSqlParser.RULE_name_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10650; - this.name(); - this.state = 10655; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10651; - this.match(PostgreSqlParser.COMMA); - this.state = 10652; - this.name(); - } - } - this.state = 10657; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public database_name_create(): Database_name_createContext { - let localContext = new Database_name_createContext(this.context, this.state); - this.enterRule(localContext, 1418, PostgreSqlParser.RULE_database_name_create); - let _la: number; - try { - localContext = new DatabaseNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10658; - this.colid(); - this.state = 10660; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 11) { - { - this.state = 10659; - this.attrs(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public database_name(): Database_nameContext { - let localContext = new Database_nameContext(this.context, this.state); - this.enterRule(localContext, 1420, PostgreSqlParser.RULE_database_name); - let _la: number; - try { - localContext = new DatabaseNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10662; - this.colid(); - this.state = 10664; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 11) { - { - this.state = 10663; - this.attrs(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public schema_name(): Schema_nameContext { - let localContext = new Schema_nameContext(this.context, this.state); - this.enterRule(localContext, 1422, PostgreSqlParser.RULE_schema_name); - let _la: number; - try { - localContext = new SchemaNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10666; - this.colid(); - this.state = 10668; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 11) { - { - this.state = 10667; - this.attrs(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public routine_name_create(): Routine_name_createContext { - let localContext = new Routine_name_createContext(this.context, this.state); - this.enterRule(localContext, 1424, PostgreSqlParser.RULE_routine_name_create); - try { - localContext = new RoutineNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10670; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public routine_name(): Routine_nameContext { - let localContext = new Routine_nameContext(this.context, this.state); - this.enterRule(localContext, 1426, PostgreSqlParser.RULE_routine_name); - try { - localContext = new RoutineNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10672; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_name(): Procedure_nameContext { - let localContext = new Procedure_nameContext(this.context, this.state); - this.enterRule(localContext, 1428, PostgreSqlParser.RULE_procedure_name); - try { - this.state = 10678; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1133, this.context) ) { - case 1: - localContext = new ProcedureNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10674; - this.type_function_name(); - } - break; - case 2: - localContext = new ProcedureNameContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10675; - this.colid(); - this.state = 10676; - this.indirection(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_name_create(): Procedure_name_createContext { - let localContext = new Procedure_name_createContext(this.context, this.state); - this.enterRule(localContext, 1430, PostgreSqlParser.RULE_procedure_name_create); - try { - this.state = 10684; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1134, this.context) ) { - case 1: - localContext = new ProcedureNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10680; - this.type_function_name(); - } - break; - case 2: - localContext = new ProcedureNameCreateContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10681; - this.colid(); - this.state = 10682; - this.indirection(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public column_name(): Column_nameContext { - let localContext = new Column_nameContext(this.context, this.state); - this.enterRule(localContext, 1432, PostgreSqlParser.RULE_column_name); - try { - let alternative: number; - this.state = 10694; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1136, this.context) ) { - case 1: - localContext = new ColumnNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10686; - this.colid(); - this.state = 10690; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1135, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 10687; - this.indirection_el(); - } - } - } - this.state = 10692; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1135, this.context); - } - } - break; - case 2: - localContext = new ColumnNameMatchContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10693; - if (!(this.shouldMatchEmpty())) { - throw this.createFailedPredicateException("this.shouldMatchEmpty()"); - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public column_name_create(): Column_name_createContext { - let localContext = new Column_name_createContext(this.context, this.state); - this.enterRule(localContext, 1434, PostgreSqlParser.RULE_column_name_create); - try { - localContext = new ColumnNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10696; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public name(): NameContext { - let localContext = new NameContext(this.context, this.state); - this.enterRule(localContext, 1436, PostgreSqlParser.RULE_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10698; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public attr_name(): Attr_nameContext { - let localContext = new Attr_nameContext(this.context, this.state); - this.enterRule(localContext, 1438, PostgreSqlParser.RULE_attr_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10700; - this.collabel(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public file_name(): File_nameContext { - let localContext = new File_nameContext(this.context, this.state); - this.enterRule(localContext, 1440, PostgreSqlParser.RULE_file_name); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10702; - this.sconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public function_name_create(): Function_name_createContext { - let localContext = new Function_name_createContext(this.context, this.state); - this.enterRule(localContext, 1442, PostgreSqlParser.RULE_function_name_create); - try { - this.state = 10708; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1137, this.context) ) { - case 1: - localContext = new FunctionNameCreateContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10704; - this.type_function_name(); - } - break; - case 2: - localContext = new FunctionNameCreateContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10705; - this.colid(); - this.state = 10706; - this.indirection(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public function_name(): Function_nameContext { - let localContext = new Function_nameContext(this.context, this.state); - this.enterRule(localContext, 1444, PostgreSqlParser.RULE_function_name); - try { - this.state = 10714; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1138, this.context) ) { - case 1: - localContext = new FunctionNameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 10710; - this.type_function_name(); - } - break; - case 2: - localContext = new FunctionNameContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 10711; - this.colid(); - this.state = 10712; - this.indirection(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public usual_name(): Usual_nameContext { - let localContext = new Usual_nameContext(this.context, this.state); - this.enterRule(localContext, 1446, PostgreSqlParser.RULE_usual_name); - try { - this.state = 10720; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1139, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10716; - this.type_usual_name(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10717; - this.colid(); - this.state = 10718; - this.indirection(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public aexprconst(): AexprconstContext { - let localContext = new AexprconstContext(this.context, this.state); - this.enterRule(localContext, 1448, PostgreSqlParser.RULE_aexprconst); - let _la: number; - try { - this.state = 10757; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1144, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10722; - this.iconst(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10723; - this.fconst(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10724; - this.sconst(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10725; - this.bconst(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10726; - this.xconst(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 10727; - this.function_name(); - this.state = 10737; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 10728; - this.sconst(); - } - break; - case PostgreSqlParser.OPEN_PAREN: - { - this.state = 10729; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10730; - this.func_arg_list(); - this.state = 10732; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 83) { - { - this.state = 10731; - this.opt_sort_clause(); - } - } - - this.state = 10734; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 10735; - this.sconst(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 10739; - this.consttypename(); - this.state = 10740; - this.sconst(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 10742; - this.constinterval(); - this.state = 10752; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 10743; - this.sconst(); - this.state = 10745; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { - case 1: - { - this.state = 10744; - this.opt_interval(); - } - break; - } - } - break; - case PostgreSqlParser.OPEN_PAREN: - { - this.state = 10747; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10748; - this.iconst(); - this.state = 10749; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 10750; - this.sconst(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 10754; - this.match(PostgreSqlParser.KW_TRUE); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 10755; - this.match(PostgreSqlParser.KW_FALSE); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 10756; - this.match(PostgreSqlParser.KW_NULL); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public xconst(): XconstContext { - let localContext = new XconstContext(this.context, this.state); - this.enterRule(localContext, 1450, PostgreSqlParser.RULE_xconst); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10759; - this.match(PostgreSqlParser.HexadecimalStringConstant); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public bconst(): BconstContext { - let localContext = new BconstContext(this.context, this.state); - this.enterRule(localContext, 1452, PostgreSqlParser.RULE_bconst); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10761; - this.match(PostgreSqlParser.BinaryStringConstant); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public fconst(): FconstContext { - let localContext = new FconstContext(this.context, this.state); - this.enterRule(localContext, 1454, PostgreSqlParser.RULE_fconst); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10763; - this.match(PostgreSqlParser.Numeric); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public iconst(): IconstContext { - let localContext = new IconstContext(this.context, this.state); - this.enterRule(localContext, 1456, PostgreSqlParser.RULE_iconst); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10765; - this.match(PostgreSqlParser.Integral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sconst(): SconstContext { - let localContext = new SconstContext(this.context, this.state); - this.enterRule(localContext, 1458, PostgreSqlParser.RULE_sconst); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10767; - this.anysconst(); - this.state = 10769; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1145, this.context) ) { - case 1: - { - this.state = 10768; - this.opt_uescape(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public anysconst(): AnysconstContext { - let localContext = new AnysconstContext(this.context, this.state); - this.enterRule(localContext, 1460, PostgreSqlParser.RULE_anysconst); - let _la: number; - try { - this.state = 10782; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.StringConstant: - this.enterOuterAlt(localContext, 1); - { - this.state = 10771; - this.match(PostgreSqlParser.StringConstant); - } - break; - case PostgreSqlParser.UnicodeEscapeStringConstant: - this.enterOuterAlt(localContext, 2); - { - this.state = 10772; - this.match(PostgreSqlParser.UnicodeEscapeStringConstant); - } - break; - case PostgreSqlParser.BeginDollarStringConstant: - this.enterOuterAlt(localContext, 3); - { - this.state = 10773; - this.match(PostgreSqlParser.BeginDollarStringConstant); - this.state = 10777; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 588) { - { - { - this.state = 10774; - this.match(PostgreSqlParser.DollarText); - } - } - this.state = 10779; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 10780; - this.match(PostgreSqlParser.EndDollarStringConstant); - } - break; - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 4); - { - this.state = 10781; - this.match(PostgreSqlParser.EscapeStringConstant); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_uescape(): Opt_uescapeContext { - let localContext = new Opt_uescapeContext(this.context, this.state); - this.enterRule(localContext, 1462, PostgreSqlParser.RULE_opt_uescape); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10784; - this.match(PostgreSqlParser.KW_UESCAPE); - this.state = 10785; - this.anysconst(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public signediconst(): SignediconstContext { - let localContext = new SignediconstContext(this.context, this.state); - this.enterRule(localContext, 1464, PostgreSqlParser.RULE_signediconst); - try { - this.state = 10792; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.Integral: - this.enterOuterAlt(localContext, 1); - { - this.state = 10787; - this.iconst(); - } - break; - case PostgreSqlParser.PLUS: - this.enterOuterAlt(localContext, 2); - { - this.state = 10788; - this.match(PostgreSqlParser.PLUS); - this.state = 10789; - this.iconst(); - } - break; - case PostgreSqlParser.MINUS: - this.enterOuterAlt(localContext, 3); - { - this.state = 10790; - this.match(PostgreSqlParser.MINUS); - this.state = 10791; - this.iconst(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public groupname(): GroupnameContext { - let localContext = new GroupnameContext(this.context, this.state); - this.enterRule(localContext, 1466, PostgreSqlParser.RULE_groupname); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10794; - this.rolespec(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public roleid(): RoleidContext { - let localContext = new RoleidContext(this.context, this.state); - this.enterRule(localContext, 1468, PostgreSqlParser.RULE_roleid); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10796; - this.rolespec(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rolespec(): RolespecContext { - let localContext = new RolespecContext(this.context, this.state); - this.enterRule(localContext, 1470, PostgreSqlParser.RULE_rolespec); - try { - this.state = 10803; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); - { - this.state = 10798; - this.nonreservedword(); - } - break; - case PostgreSqlParser.KW_CURRENT_USER: - this.enterOuterAlt(localContext, 2); - { - this.state = 10799; - this.match(PostgreSqlParser.KW_CURRENT_USER); - } - break; - case PostgreSqlParser.KW_CURRENT_ROLE: - this.enterOuterAlt(localContext, 3); - { - this.state = 10800; - this.match(PostgreSqlParser.KW_CURRENT_ROLE); - } - break; - case PostgreSqlParser.KW_SESSION_USER: - this.enterOuterAlt(localContext, 4); - { - this.state = 10801; - this.match(PostgreSqlParser.KW_SESSION_USER); - } - break; - case PostgreSqlParser.KW_PUBLIC: - this.enterOuterAlt(localContext, 5); - { - this.state = 10802; - this.match(PostgreSqlParser.KW_PUBLIC); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public role_list(): Role_listContext { - let localContext = new Role_listContext(this.context, this.state); - this.enterRule(localContext, 1472, PostgreSqlParser.RULE_role_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10805; - this.rolespec(); - this.state = 10810; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 10806; - this.match(PostgreSqlParser.COMMA); - this.state = 10807; - this.rolespec(); - } - } - this.state = 10812; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public colid(): ColidContext { - let localContext = new ColidContext(this.context, this.state); - this.enterRule(localContext, 1474, PostgreSqlParser.RULE_colid); - try { - this.state = 10817; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1151, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10813; - this.identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10814; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10815; - this.col_name_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10816; - this.plsql_unreserved_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public index_method_choices(): Index_method_choicesContext { - let localContext = new Index_method_choicesContext(this.context, this.state); - this.enterRule(localContext, 1476, PostgreSqlParser.RULE_index_method_choices); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10819; - this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public exclude_element(): Exclude_elementContext { - let localContext = new Exclude_elementContext(this.context, this.state); - this.enterRule(localContext, 1478, PostgreSqlParser.RULE_exclude_element); - let _la: number; - try { - this.state = 10833; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_WITH: - this.enterOuterAlt(localContext, 1); - { - this.state = 10821; - this.opt_definition(); - } - break; - case PostgreSqlParser.OPEN_PAREN: - this.enterOuterAlt(localContext, 2); - { - { - this.state = 10822; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 10823; - this.a_expr(); - this.state = 10824; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - this.state = 10826; - this.identifier(); - this.state = 10828; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 37 || _la === 55) { - { - this.state = 10827; - this.opt_asc_desc(); - } - } - - this.state = 10831; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 273) { - { - this.state = 10830; - this.opt_nulls_order(); - } - } - - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public index_paramenters(): Index_paramentersContext { - let localContext = new Index_paramentersContext(this.context, this.state); - this.enterRule(localContext, 1480, PostgreSqlParser.RULE_index_paramenters); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10837; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 10835; - this.match(PostgreSqlParser.KW_WITH); - this.state = 10836; - this.reloptions(); - } - } - - this.state = 10840; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 100) { - { - this.state = 10839; - this.optconstablespace(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public type_function_name(): Type_function_nameContext { - let localContext = new Type_function_nameContext(this.context, this.state); - this.enterRule(localContext, 1482, PostgreSqlParser.RULE_type_function_name); - try { - this.state = 10846; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1157, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10842; - this.identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10843; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10844; - this.plsql_unreserved_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10845; - this.type_func_name_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public type_usual_name(): Type_usual_nameContext { - let localContext = new Type_usual_nameContext(this.context, this.state); - this.enterRule(localContext, 1484, PostgreSqlParser.RULE_type_usual_name); - try { - this.state = 10852; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1158, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10848; - this.identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10849; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10850; - this.plsql_unreserved_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10851; - this.type_func_name_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public nonreservedword_column(): Nonreservedword_columnContext { - let localContext = new Nonreservedword_columnContext(this.context, this.state); - this.enterRule(localContext, 1486, PostgreSqlParser.RULE_nonreservedword_column); - try { - this.state = 10856; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1159, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10854; - this.column_name(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10855; - this.type_func_name_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public nonreservedword(): NonreservedwordContext { - let localContext = new NonreservedwordContext(this.context, this.state); - this.enterRule(localContext, 1488, PostgreSqlParser.RULE_nonreservedword); - try { - this.state = 10862; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1160, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10858; - this.identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10859; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10860; - this.col_name_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10861; - this.type_func_name_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public collabel(): CollabelContext { - let localContext = new CollabelContext(this.context, this.state); - this.enterRule(localContext, 1490, PostgreSqlParser.RULE_collabel); - try { - this.state = 10870; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1161, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10864; - this.identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10865; - this.plsql_unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10866; - this.unreserved_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10867; - this.col_name_keyword(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10868; - this.type_func_name_keyword(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 10869; - this.reserved_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public identifier(): IdentifierContext { - let localContext = new IdentifierContext(this.context, this.state); - this.enterRule(localContext, 1492, PostgreSqlParser.RULE_identifier); - try { - this.state = 10882; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.Identifier: - this.enterOuterAlt(localContext, 1); - { - this.state = 10872; - this.match(PostgreSqlParser.Identifier); - this.state = 10874; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1162, this.context) ) { - case 1: - { - this.state = 10873; - this.opt_uescape(); - } - break; - } - } - break; - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 2); - { - this.state = 10876; - this.sconst(); - } - break; - case PostgreSqlParser.QuotedIdentifier: - this.enterOuterAlt(localContext, 3); - { - this.state = 10877; - this.match(PostgreSqlParser.QuotedIdentifier); - } - break; - case PostgreSqlParser.UnicodeQuotedIdentifier: - this.enterOuterAlt(localContext, 4); - { - this.state = 10878; - this.match(PostgreSqlParser.UnicodeQuotedIdentifier); - } - break; - case PostgreSqlParser.PLSQLVARIABLENAME: - this.enterOuterAlt(localContext, 5); - { - this.state = 10879; - this.plsqlvariablename(); - } - break; - case PostgreSqlParser.PLSQLIDENTIFIER: - this.enterOuterAlt(localContext, 6); - { - this.state = 10880; - this.plsqlidentifier(); - } - break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - this.enterOuterAlt(localContext, 7); - { - this.state = 10881; - this.plsql_unreserved_keyword(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public plsqlidentifier(): PlsqlidentifierContext { - let localContext = new PlsqlidentifierContext(this.context, this.state); - this.enterRule(localContext, 1494, PostgreSqlParser.RULE_plsqlidentifier); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10884; - this.match(PostgreSqlParser.PLSQLIDENTIFIER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public unreserved_keyword(): Unreserved_keywordContext { - let localContext = new Unreserved_keywordContext(this.context, this.state); - this.enterRule(localContext, 1496, PostgreSqlParser.RULE_unreserved_keyword); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10886; - _la = this.tokenStream.LA(1); - if(!(((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & 4294967265) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 4294967295) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4294967295) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 4294705663) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & 4294967295) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & 4294967295) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & 4294967295) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & 4294967295) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 127) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 16770399) !== 0) || _la === 547 || _la === 548)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public col_name_keyword(): Col_name_keywordContext { - let localContext = new Col_name_keywordContext(this.context, this.state); - this.enterRule(localContext, 1498, PostgreSqlParser.RULE_col_name_keyword); - try { - this.state = 10939; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1164, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10888; - this.match(PostgreSqlParser.KW_BETWEEN); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10889; - this.match(PostgreSqlParser.KW_BIGINT); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10890; - this.bit(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10891; - this.match(PostgreSqlParser.KW_BOOLEAN); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10892; - this.match(PostgreSqlParser.KW_CHAR); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 10893; - this.character(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 10894; - this.match(PostgreSqlParser.KW_COALESCE); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 10895; - this.match(PostgreSqlParser.KW_DEC); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 10896; - this.match(PostgreSqlParser.KW_DECIMAL); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 10897; - this.match(PostgreSqlParser.KW_EXISTS); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 10898; - this.match(PostgreSqlParser.KW_EXTRACT); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 10899; - this.match(PostgreSqlParser.KW_FLOAT); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 10900; - this.match(PostgreSqlParser.KW_GREATEST); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 10901; - this.match(PostgreSqlParser.KW_GROUPING); - } - break; - case 15: - this.enterOuterAlt(localContext, 15); - { - this.state = 10902; - this.match(PostgreSqlParser.KW_INOUT); - } - break; - case 16: - this.enterOuterAlt(localContext, 16); - { - this.state = 10903; - this.match(PostgreSqlParser.KW_INT); - } - break; - case 17: - this.enterOuterAlt(localContext, 17); - { - this.state = 10904; - this.match(PostgreSqlParser.KW_INTEGER); - } - break; - case 18: - this.enterOuterAlt(localContext, 18); - { - this.state = 10905; - this.match(PostgreSqlParser.KW_INTERVAL); - } - break; - case 19: - this.enterOuterAlt(localContext, 19); - { - this.state = 10906; - this.match(PostgreSqlParser.KW_LEAST); - } - break; - case 20: - this.enterOuterAlt(localContext, 20); - { - this.state = 10907; - this.match(PostgreSqlParser.KW_NATIONAL); - } - break; - case 21: - this.enterOuterAlt(localContext, 21); - { - this.state = 10908; - this.match(PostgreSqlParser.KW_NCHAR); - } - break; - case 22: - this.enterOuterAlt(localContext, 22); - { - this.state = 10909; - this.match(PostgreSqlParser.KW_NONE); - } - break; - case 23: - this.enterOuterAlt(localContext, 23); - { - this.state = 10910; - this.match(PostgreSqlParser.KW_NORMALIZE); - } - break; - case 24: - this.enterOuterAlt(localContext, 24); - { - this.state = 10911; - this.match(PostgreSqlParser.KW_NULLIF); - } - break; - case 25: - this.enterOuterAlt(localContext, 25); - { - this.state = 10912; - this.numeric(); - } - break; - case 26: - this.enterOuterAlt(localContext, 26); - { - this.state = 10913; - this.match(PostgreSqlParser.KW_OUT); - } - break; - case 27: - this.enterOuterAlt(localContext, 27); - { - this.state = 10914; - this.match(PostgreSqlParser.KW_OVERLAY); - } - break; - case 28: - this.enterOuterAlt(localContext, 28); - { - this.state = 10915; - this.match(PostgreSqlParser.KW_POSITION); - } - break; - case 29: - this.enterOuterAlt(localContext, 29); - { - this.state = 10916; - this.match(PostgreSqlParser.KW_PRECISION); - } - break; - case 30: - this.enterOuterAlt(localContext, 30); - { - this.state = 10917; - this.match(PostgreSqlParser.KW_REAL); - } - break; - case 31: - this.enterOuterAlt(localContext, 31); - { - this.state = 10918; - this.match(PostgreSqlParser.KW_ROW); - } - break; - case 32: - this.enterOuterAlt(localContext, 32); - { - this.state = 10919; - this.match(PostgreSqlParser.KW_SETOF); - } - break; - case 33: - this.enterOuterAlt(localContext, 33); - { - this.state = 10920; - this.match(PostgreSqlParser.KW_SMALLINT); - } - break; - case 34: - this.enterOuterAlt(localContext, 34); - { - this.state = 10921; - this.match(PostgreSqlParser.KW_SUBSTRING); - } - break; - case 35: - this.enterOuterAlt(localContext, 35); - { - this.state = 10922; - this.match(PostgreSqlParser.KW_TIME); - } - break; - case 36: - this.enterOuterAlt(localContext, 36); - { - this.state = 10923; - this.match(PostgreSqlParser.KW_TIMESTAMP); - } - break; - case 37: - this.enterOuterAlt(localContext, 37); - { - this.state = 10924; - this.match(PostgreSqlParser.KW_TREAT); - } - break; - case 38: - this.enterOuterAlt(localContext, 38); - { - this.state = 10925; - this.match(PostgreSqlParser.KW_TRIM); - } - break; - case 39: - this.enterOuterAlt(localContext, 39); - { - this.state = 10926; - this.match(PostgreSqlParser.KW_VALUES); - } - break; - case 40: - this.enterOuterAlt(localContext, 40); - { - this.state = 10927; - this.match(PostgreSqlParser.KW_VARCHAR); - } - break; - case 41: - this.enterOuterAlt(localContext, 41); - { - this.state = 10928; - this.match(PostgreSqlParser.KW_XMLATTRIBUTES); - } - break; - case 42: - this.enterOuterAlt(localContext, 42); - { - this.state = 10929; - this.match(PostgreSqlParser.KW_XMLCONCAT); - } - break; - case 43: - this.enterOuterAlt(localContext, 43); - { - this.state = 10930; - this.match(PostgreSqlParser.KW_XMLELEMENT); - } - break; - case 44: - this.enterOuterAlt(localContext, 44); - { - this.state = 10931; - this.match(PostgreSqlParser.KW_XMLEXISTS); - } - break; - case 45: - this.enterOuterAlt(localContext, 45); - { - this.state = 10932; - this.match(PostgreSqlParser.KW_XMLFOREST); - } - break; - case 46: - this.enterOuterAlt(localContext, 46); - { - this.state = 10933; - this.match(PostgreSqlParser.KW_XMLNAMESPACES); - } - break; - case 47: - this.enterOuterAlt(localContext, 47); - { - this.state = 10934; - this.match(PostgreSqlParser.KW_XMLPARSE); - } - break; - case 48: - this.enterOuterAlt(localContext, 48); - { - this.state = 10935; - this.match(PostgreSqlParser.KW_XMLPI); - } - break; - case 49: - this.enterOuterAlt(localContext, 49); - { - this.state = 10936; - this.match(PostgreSqlParser.KW_XMLROOT); - } - break; - case 50: - this.enterOuterAlt(localContext, 50); - { - this.state = 10937; - this.match(PostgreSqlParser.KW_XMLSERIALIZE); - } - break; - case 51: - this.enterOuterAlt(localContext, 51); - { - this.state = 10938; - this.match(PostgreSqlParser.KW_XMLTABLE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public type_func_name_keyword(): Type_func_name_keywordContext { - let localContext = new Type_func_name_keywordContext(this.context, this.state); - this.enterRule(localContext, 1500, PostgreSqlParser.RULE_type_func_name_keyword); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10941; - _la = this.tokenStream.LA(1); - if(!(((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 8126463) !== 0) || _la === 472)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public reserved_keyword(): Reserved_keywordContext { - let localContext = new Reserved_keywordContext(this.context, this.state); - this.enterRule(localContext, 1502, PostgreSqlParser.RULE_reserved_keyword); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10943; - _la = this.tokenStream.LA(1); - if(!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & 4286578687) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & 4294966783) !== 0) || ((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 4095) !== 0) || _la === 454)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public pl_function(): Pl_functionContext { - let localContext = new Pl_functionContext(this.context, this.state); - this.enterRule(localContext, 1504, PostgreSqlParser.RULE_pl_function); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10945; - this.comp_options(); - this.state = 10946; - this.pl_block(); - this.state = 10947; - this.opt_semi(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comp_options(): Comp_optionsContext { - let localContext = new Comp_optionsContext(this.context, this.state); - this.enterRule(localContext, 1506, PostgreSqlParser.RULE_comp_options); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10952; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 29) { - { - { - this.state = 10949; - this.comp_option(); - } - } - this.state = 10954; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comp_option(): Comp_optionContext { - let localContext = new Comp_optionContext(this.context, this.state); - this.enterRule(localContext, 1508, PostgreSqlParser.RULE_comp_option); - try { - this.state = 10975; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1166, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10955; - this.sharp(); - this.state = 10956; - this.match(PostgreSqlParser.KW_OPTION); - this.state = 10957; - this.match(PostgreSqlParser.KW_DUMP); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10959; - this.sharp(); - this.state = 10960; - this.match(PostgreSqlParser.KW_PRINT_STRICT_PARAMS); - this.state = 10961; - this.option_value(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10963; - this.sharp(); - this.state = 10964; - this.match(PostgreSqlParser.KW_VARIABLE_CONFLICT); - this.state = 10965; - this.match(PostgreSqlParser.KW_ERROR); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10967; - this.sharp(); - this.state = 10968; - this.match(PostgreSqlParser.KW_VARIABLE_CONFLICT); - this.state = 10969; - this.match(PostgreSqlParser.KW_USE_VARIABLE); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 10971; - this.sharp(); - this.state = 10972; - this.match(PostgreSqlParser.KW_VARIABLE_CONFLICT); - this.state = 10973; - this.match(PostgreSqlParser.KW_USE_COLUMN); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sharp(): SharpContext { - let localContext = new SharpContext(this.context, this.state); - this.enterRule(localContext, 1510, PostgreSqlParser.RULE_sharp); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10977; - this.match(PostgreSqlParser.Operator); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public option_value(): Option_valueContext { - let localContext = new Option_valueContext(this.context, this.state); - this.enterRule(localContext, 1512, PostgreSqlParser.RULE_option_value); - try { - this.state = 10983; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1167, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 10979; - this.sconst(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 10980; - this.reserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 10981; - this.plsql_unreserved_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 10982; - this.unreserved_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_semi(): Opt_semiContext { - let localContext = new Opt_semiContext(this.context, this.state); - this.enterRule(localContext, 1514, PostgreSqlParser.RULE_opt_semi); - try { - this.state = 10987; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.EOF: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.SEMI: - this.enterOuterAlt(localContext, 2); - { - this.state = 10986; - this.match(PostgreSqlParser.SEMI); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public pl_block(): Pl_blockContext { - let localContext = new Pl_blockContext(this.context, this.state); - this.enterRule(localContext, 1516, PostgreSqlParser.RULE_pl_block); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10989; - this.decl_sect(); - this.state = 10990; - this.match(PostgreSqlParser.KW_BEGIN); - this.state = 10991; - this.proc_sect(); - this.state = 10992; - this.exception_sect(); - this.state = 10993; - this.match(PostgreSqlParser.KW_END); - this.state = 10994; - this.opt_label(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_sect(): Decl_sectContext { - let localContext = new Decl_sectContext(this.context, this.state); - this.enterRule(localContext, 1518, PostgreSqlParser.RULE_decl_sect); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 10996; - this.opt_block_label(); - this.state = 11001; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 178) { - { - this.state = 10997; - this.decl_start(); - this.state = 10999; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1169, this.context) ) { - case 1: - { - this.state = 10998; - this.decl_stmts(); - } - break; - } - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_start(): Decl_startContext { - let localContext = new Decl_startContext(this.context, this.state); - this.enterRule(localContext, 1520, PostgreSqlParser.RULE_decl_start); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11003; - this.match(PostgreSqlParser.KW_DECLARE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_stmts(): Decl_stmtsContext { - let localContext = new Decl_stmtsContext(this.context, this.state); - this.enterRule(localContext, 1522, PostgreSqlParser.RULE_decl_stmts); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 11006; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - { - this.state = 11005; - this.decl_stmt(); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 11008; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1171, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public label_decl(): Label_declContext { - let localContext = new Label_declContext(this.context, this.state); - this.enterRule(localContext, 1524, PostgreSqlParser.RULE_label_decl); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11010; - this.match(PostgreSqlParser.LESS_LESS); - this.state = 11011; - this.any_identifier(); - this.state = 11012; - this.match(PostgreSqlParser.GREATER_GREATER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_stmt(): Decl_stmtContext { - let localContext = new Decl_stmtContext(this.context, this.state); - this.enterRule(localContext, 1526, PostgreSqlParser.RULE_decl_stmt); - try { - this.state = 11017; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1172, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11014; - this.decl_statement(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11015; - this.match(PostgreSqlParser.KW_DECLARE); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 11016; - this.label_decl(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_statement(): Decl_statementContext { - let localContext = new Decl_statementContext(this.context, this.state); - this.enterRule(localContext, 1528, PostgreSqlParser.RULE_decl_statement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11019; - this.decl_varname(); - this.state = 11035; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1173, this.context) ) { - case 1: - { - this.state = 11020; - this.match(PostgreSqlParser.KW_ALIAS); - this.state = 11021; - this.match(PostgreSqlParser.KW_FOR); - this.state = 11022; - this.decl_aliasitem(); - } - break; - case 2: - { - this.state = 11023; - this.decl_const(); - this.state = 11024; - this.decl_datatype(); - this.state = 11025; - this.decl_collate(); - this.state = 11026; - this.decl_notnull(); - this.state = 11027; - this.decl_defval(); - } - break; - case 3: - { - this.state = 11029; - this.opt_scrollable(); - this.state = 11030; - this.match(PostgreSqlParser.KW_CURSOR); - this.state = 11031; - this.decl_cursor_args(); - this.state = 11032; - this.decl_is_for(); - this.state = 11033; - this.decl_cursor_query(); - } - break; - } - this.state = 11037; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_scrollable(): Opt_scrollableContext { - let localContext = new Opt_scrollableContext(this.context, this.state); - this.enterRule(localContext, 1530, PostgreSqlParser.RULE_opt_scrollable); - try { - this.state = 11043; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CURSOR: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_NO: - this.enterOuterAlt(localContext, 2); - { - this.state = 11040; - this.match(PostgreSqlParser.KW_NO); - this.state = 11041; - this.match(PostgreSqlParser.KW_SCROLL); - } - break; - case PostgreSqlParser.KW_SCROLL: - this.enterOuterAlt(localContext, 3); - { - this.state = 11042; - this.match(PostgreSqlParser.KW_SCROLL); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_cursor_query(): Decl_cursor_queryContext { - let localContext = new Decl_cursor_queryContext(this.context, this.state); - this.enterRule(localContext, 1532, PostgreSqlParser.RULE_decl_cursor_query); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11045; - this.selectstmt(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_cursor_args(): Decl_cursor_argsContext { - let localContext = new Decl_cursor_argsContext(this.context, this.state); - this.enterRule(localContext, 1534, PostgreSqlParser.RULE_decl_cursor_args); - try { - this.state = 11052; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FOR: - case PostgreSqlParser.KW_IS: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.OPEN_PAREN: - this.enterOuterAlt(localContext, 2); - { - this.state = 11048; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11049; - this.decl_cursor_arglist(); - this.state = 11050; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_cursor_arglist(): Decl_cursor_arglistContext { - let localContext = new Decl_cursor_arglistContext(this.context, this.state); - this.enterRule(localContext, 1536, PostgreSqlParser.RULE_decl_cursor_arglist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11054; - this.decl_cursor_arg(); - this.state = 11059; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11055; - this.match(PostgreSqlParser.COMMA); - this.state = 11056; - this.decl_cursor_arg(); - } - } - this.state = 11061; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_cursor_arg(): Decl_cursor_argContext { - let localContext = new Decl_cursor_argContext(this.context, this.state); - this.enterRule(localContext, 1538, PostgreSqlParser.RULE_decl_cursor_arg); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11062; - this.decl_varname(); - this.state = 11063; - this.decl_datatype(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_is_for(): Decl_is_forContext { - let localContext = new Decl_is_forContext(this.context, this.state); - this.enterRule(localContext, 1540, PostgreSqlParser.RULE_decl_is_for); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11065; - _la = this.tokenStream.LA(1); - if(!(_la === 62 || _la === 116)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_aliasitem(): Decl_aliasitemContext { - let localContext = new Decl_aliasitemContext(this.context, this.state); - this.enterRule(localContext, 1542, PostgreSqlParser.RULE_decl_aliasitem); - try { - this.state = 11069; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.PARAM: - this.enterOuterAlt(localContext, 1); - { - this.state = 11067; - this.match(PostgreSqlParser.PARAM); - } - break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 2); - { - this.state = 11068; - this.colid(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_varname(): Decl_varnameContext { - let localContext = new Decl_varnameContext(this.context, this.state); - this.enterRule(localContext, 1544, PostgreSqlParser.RULE_decl_varname); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11071; - this.any_identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_const(): Decl_constContext { - let localContext = new Decl_constContext(this.context, this.state); - this.enterRule(localContext, 1546, PostgreSqlParser.RULE_decl_const); - try { - this.state = 11075; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1178, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11074; - this.match(PostgreSqlParser.KW_CONSTANT); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_datatype(): Decl_datatypeContext { - let localContext = new Decl_datatypeContext(this.context, this.state); - this.enterRule(localContext, 1548, PostgreSqlParser.RULE_decl_datatype); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11077; - this.typename(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_collate(): Decl_collateContext { - let localContext = new Decl_collateContext(this.context, this.state); - this.enterRule(localContext, 1550, PostgreSqlParser.RULE_decl_collate); - try { - this.state = 11082; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - case PostgreSqlParser.EQUAL: - case PostgreSqlParser.COLON_EQUALS: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_NOT: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_COLLATE: - this.enterOuterAlt(localContext, 2); - { - this.state = 11080; - this.match(PostgreSqlParser.KW_COLLATE); - this.state = 11081; - this.any_name(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_notnull(): Decl_notnullContext { - let localContext = new Decl_notnullContext(this.context, this.state); - this.enterRule(localContext, 1552, PostgreSqlParser.RULE_decl_notnull); - try { - this.state = 11087; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - case PostgreSqlParser.EQUAL: - case PostgreSqlParser.COLON_EQUALS: - case PostgreSqlParser.KW_DEFAULT: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_NOT: - this.enterOuterAlt(localContext, 2); - { - this.state = 11085; - this.match(PostgreSqlParser.KW_NOT); - this.state = 11086; - this.match(PostgreSqlParser.KW_NULL); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_defval(): Decl_defvalContext { - let localContext = new Decl_defvalContext(this.context, this.state); - this.enterRule(localContext, 1554, PostgreSqlParser.RULE_decl_defval); - try { - this.state = 11093; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.EQUAL: - case PostgreSqlParser.COLON_EQUALS: - case PostgreSqlParser.KW_DEFAULT: - this.enterOuterAlt(localContext, 2); - { - this.state = 11090; - this.decl_defkey(); - this.state = 11091; - this.sql_expression(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public decl_defkey(): Decl_defkeyContext { - let localContext = new Decl_defkeyContext(this.context, this.state); - this.enterRule(localContext, 1556, PostgreSqlParser.RULE_decl_defkey); - try { - this.state = 11097; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.EQUAL: - case PostgreSqlParser.COLON_EQUALS: - this.enterOuterAlt(localContext, 1); - { - this.state = 11095; - this.assign_operator(); - } - break; - case PostgreSqlParser.KW_DEFAULT: - this.enterOuterAlt(localContext, 2); - { - this.state = 11096; - this.match(PostgreSqlParser.KW_DEFAULT); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public assign_operator(): Assign_operatorContext { - let localContext = new Assign_operatorContext(this.context, this.state); - this.enterRule(localContext, 1558, PostgreSqlParser.RULE_assign_operator); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11099; - _la = this.tokenStream.LA(1); - if(!(_la === 10 || _la === 20)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public proc_sect(): Proc_sectContext { - let localContext = new Proc_sectContext(this.context, this.state); - this.enterRule(localContext, 1560, PostgreSqlParser.RULE_proc_sect); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 11104; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1183, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 11101; - this.proc_stmt(); - } - } - } - this.state = 11106; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1183, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public proc_stmt(): Proc_stmtContext { - let localContext = new Proc_stmtContext(this.context, this.state); - this.enterRule(localContext, 1562, PostgreSqlParser.RULE_proc_stmt); - try { - this.state = 11134; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1184, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11107; - this.pl_block(); - this.state = 11108; - this.match(PostgreSqlParser.SEMI); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11110; - this.stmt_return(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 11111; - this.stmt_raise(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 11112; - this.stmt_assign(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 11113; - this.stmt_if(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 11114; - this.stmt_case(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 11115; - this.stmt_loop(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 11116; - this.stmt_while(); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 11117; - this.stmt_for(); - } - break; - case 10: - this.enterOuterAlt(localContext, 10); - { - this.state = 11118; - this.stmt_foreach_a(); - } - break; - case 11: - this.enterOuterAlt(localContext, 11); - { - this.state = 11119; - this.stmt_exit(); - } - break; - case 12: - this.enterOuterAlt(localContext, 12); - { - this.state = 11120; - this.stmt_assert(); - } - break; - case 13: - this.enterOuterAlt(localContext, 13); - { - this.state = 11121; - this.stmt_execsql(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 11122; - this.stmt_dynexecute(); - } - break; - case 15: - this.enterOuterAlt(localContext, 15); - { - this.state = 11123; - this.stmt_perform(); - } - break; - case 16: - this.enterOuterAlt(localContext, 16); - { - this.state = 11124; - this.stmt_call(); - } - break; - case 17: - this.enterOuterAlt(localContext, 17); - { - this.state = 11125; - this.stmt_getdiag(); - } - break; - case 18: - this.enterOuterAlt(localContext, 18); - { - this.state = 11126; - this.stmt_open(); - } - break; - case 19: - this.enterOuterAlt(localContext, 19); - { - this.state = 11127; - this.stmt_fetch(); - } - break; - case 20: - this.enterOuterAlt(localContext, 20); - { - this.state = 11128; - this.stmt_move(); - } - break; - case 21: - this.enterOuterAlt(localContext, 21); - { - this.state = 11129; - this.stmt_close(); - } - break; - case 22: - this.enterOuterAlt(localContext, 22); - { - this.state = 11130; - this.stmt_null(); - } - break; - case 23: - this.enterOuterAlt(localContext, 23); - { - this.state = 11131; - this.stmt_commit(); - } - break; - case 24: - this.enterOuterAlt(localContext, 24); - { - this.state = 11132; - this.stmt_rollback(); - } - break; - case 25: - this.enterOuterAlt(localContext, 25); - { - this.state = 11133; - this.stmt_set(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_perform(): Stmt_performContext { - let localContext = new Stmt_performContext(this.context, this.state); - this.enterRule(localContext, 1564, PostgreSqlParser.RULE_stmt_perform); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11136; - this.match(PostgreSqlParser.KW_PERFORM); - this.state = 11137; - this.expr_until_semi(); - this.state = 11138; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_call(): Stmt_callContext { - let localContext = new Stmt_callContext(this.context, this.state); - this.enterRule(localContext, 1566, PostgreSqlParser.RULE_stmt_call); - try { - this.state = 11156; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CALL: - this.enterOuterAlt(localContext, 1); - { - this.state = 11140; - this.match(PostgreSqlParser.KW_CALL); - this.state = 11141; - this.any_identifier(); - this.state = 11147; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1185, this.context) ) { - case 1: - { - this.state = 11142; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11143; - this.opt_expr_list(); - this.state = 11144; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 11145; - this.match(PostgreSqlParser.SEMI); - } - break; - } - } - break; - case PostgreSqlParser.KW_DO: - this.enterOuterAlt(localContext, 2); - { - this.state = 11149; - this.match(PostgreSqlParser.KW_DO); - this.state = 11150; - this.any_identifier(); - this.state = 11151; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11152; - this.opt_expr_list(); - this.state = 11153; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 11154; - this.match(PostgreSqlParser.SEMI); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_expr_list(): Opt_expr_listContext { - let localContext = new Opt_expr_listContext(this.context, this.state); - this.enterRule(localContext, 1568, PostgreSqlParser.RULE_opt_expr_list); - try { - this.state = 11160; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.CLOSE_PAREN: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.PLUS: - case PostgreSqlParser.MINUS: - case PostgreSqlParser.PARAM: - case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_CASE: - case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_CURRENT_CATALOG: - case PostgreSqlParser.KW_CURRENT_DATE: - case PostgreSqlParser.KW_CURRENT_ROLE: - case PostgreSqlParser.KW_CURRENT_TIME: - case PostgreSqlParser.KW_CURRENT_TIMESTAMP: - case PostgreSqlParser.KW_CURRENT_USER: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_LOCALTIME: - case PostgreSqlParser.KW_LOCALTIMESTAMP: - case PostgreSqlParser.KW_NOT: - case PostgreSqlParser.KW_NULL: - case PostgreSqlParser.KW_SESSION_USER: - case PostgreSqlParser.KW_TRUE: - case PostgreSqlParser.KW_UNIQUE: - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.BinaryStringConstant: - case PostgreSqlParser.HexadecimalStringConstant: - case PostgreSqlParser.Integral: - case PostgreSqlParser.Numeric: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 2); - { - this.state = 11159; - this.expr_list(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_assign(): Stmt_assignContext { - let localContext = new Stmt_assignContext(this.context, this.state); - this.enterRule(localContext, 1570, PostgreSqlParser.RULE_stmt_assign); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11162; - this.assign_var(); - this.state = 11163; - this.assign_operator(); - this.state = 11164; - this.sql_expression(); - this.state = 11165; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_getdiag(): Stmt_getdiagContext { - let localContext = new Stmt_getdiagContext(this.context, this.state); - this.enterRule(localContext, 1572, PostgreSqlParser.RULE_stmt_getdiag); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11167; - this.match(PostgreSqlParser.KW_GET); - this.state = 11168; - this.getdiag_area_opt(); - this.state = 11169; - this.match(PostgreSqlParser.KW_DIAGNOSTICS); - this.state = 11170; - this.getdiag_list(); - this.state = 11171; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public getdiag_area_opt(): Getdiag_area_optContext { - let localContext = new Getdiag_area_optContext(this.context, this.state); - this.enterRule(localContext, 1574, PostgreSqlParser.RULE_getdiag_area_opt); - try { - this.state = 11176; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_DIAGNOSTICS: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_CURRENT: - this.enterOuterAlt(localContext, 2); - { - this.state = 11174; - this.match(PostgreSqlParser.KW_CURRENT); - } - break; - case PostgreSqlParser.KW_STACKED: - this.enterOuterAlt(localContext, 3); - { - this.state = 11175; - this.match(PostgreSqlParser.KW_STACKED); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public getdiag_list(): Getdiag_listContext { - let localContext = new Getdiag_listContext(this.context, this.state); - this.enterRule(localContext, 1576, PostgreSqlParser.RULE_getdiag_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11178; - this.getdiag_list_item(); - this.state = 11183; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11179; - this.match(PostgreSqlParser.COMMA); - this.state = 11180; - this.getdiag_list_item(); - } - } - this.state = 11185; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public getdiag_list_item(): Getdiag_list_itemContext { - let localContext = new Getdiag_list_itemContext(this.context, this.state); - this.enterRule(localContext, 1578, PostgreSqlParser.RULE_getdiag_list_item); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11186; - this.getdiag_target(); - this.state = 11187; - this.assign_operator(); - this.state = 11188; - this.getdiag_item(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public getdiag_item(): Getdiag_itemContext { - let localContext = new Getdiag_itemContext(this.context, this.state); - this.enterRule(localContext, 1580, PostgreSqlParser.RULE_getdiag_item); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11190; - this.colid(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public getdiag_target(): Getdiag_targetContext { - let localContext = new Getdiag_targetContext(this.context, this.state); - this.enterRule(localContext, 1582, PostgreSqlParser.RULE_getdiag_target); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11192; - this.assign_var(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public assign_var(): Assign_varContext { - let localContext = new Assign_varContext(this.context, this.state); - this.enterRule(localContext, 1584, PostgreSqlParser.RULE_assign_var); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11196; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 11194; - this.any_name(); - } - break; - case PostgreSqlParser.PARAM: - { - this.state = 11195; - this.match(PostgreSqlParser.PARAM); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 11204; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 4) { - { - { - this.state = 11198; - this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 11199; - this.expr_until_rightbracket(); - this.state = 11200; - this.match(PostgreSqlParser.CLOSE_BRACKET); - } - } - this.state = 11206; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_if(): Stmt_ifContext { - let localContext = new Stmt_ifContext(this.context, this.state); - this.enterRule(localContext, 1586, PostgreSqlParser.RULE_stmt_if); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11207; - this.match(PostgreSqlParser.KW_IF); - this.state = 11208; - this.expr_until_then(); - this.state = 11209; - this.match(PostgreSqlParser.KW_THEN); - this.state = 11210; - this.proc_sect(); - this.state = 11211; - this.stmt_elsifs(); - this.state = 11212; - this.stmt_else(); - this.state = 11213; - this.match(PostgreSqlParser.KW_END); - this.state = 11214; - this.match(PostgreSqlParser.KW_IF); - this.state = 11215; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_elsifs(): Stmt_elsifsContext { - let localContext = new Stmt_elsifsContext(this.context, this.state); - this.enterRule(localContext, 1588, PostgreSqlParser.RULE_stmt_elsifs); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11224; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 502) { - { - { - this.state = 11217; - this.match(PostgreSqlParser.KW_ELSIF); - this.state = 11218; - this.a_expr(); - this.state = 11219; - this.match(PostgreSqlParser.KW_THEN); - this.state = 11220; - this.proc_sect(); - } - } - this.state = 11226; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_else(): Stmt_elseContext { - let localContext = new Stmt_elseContext(this.context, this.state); - this.enterRule(localContext, 1590, PostgreSqlParser.RULE_stmt_else); - try { - this.state = 11230; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_END: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_ELSE: - this.enterOuterAlt(localContext, 2); - { - this.state = 11228; - this.match(PostgreSqlParser.KW_ELSE); - this.state = 11229; - this.proc_sect(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_case(): Stmt_caseContext { - let localContext = new Stmt_caseContext(this.context, this.state); - this.enterRule(localContext, 1592, PostgreSqlParser.RULE_stmt_case); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11232; - this.match(PostgreSqlParser.KW_CASE); - this.state = 11233; - this.opt_expr_until_when(); - this.state = 11234; - this.case_when_list(); - this.state = 11235; - this.opt_case_else(); - this.state = 11236; - this.match(PostgreSqlParser.KW_END); - this.state = 11237; - this.match(PostgreSqlParser.KW_CASE); - this.state = 11238; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_expr_until_when(): Opt_expr_until_whenContext { - let localContext = new Opt_expr_until_whenContext(this.context, this.state); - this.enterRule(localContext, 1594, PostgreSqlParser.RULE_opt_expr_until_when); - try { - this.state = 11242; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1194, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11241; - this.sql_expression(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public case_when_list(): Case_when_listContext { - let localContext = new Case_when_listContext(this.context, this.state); - this.enterRule(localContext, 1596, PostgreSqlParser.RULE_case_when_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11245; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 11244; - this.case_when(); - } - } - this.state = 11247; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 102); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public case_when(): Case_whenContext { - let localContext = new Case_whenContext(this.context, this.state); - this.enterRule(localContext, 1598, PostgreSqlParser.RULE_case_when); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11249; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 11250; - this.expr_list(); - this.state = 11251; - this.match(PostgreSqlParser.KW_THEN); - this.state = 11252; - this.proc_sect(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_case_else(): Opt_case_elseContext { - let localContext = new Opt_case_elseContext(this.context, this.state); - this.enterRule(localContext, 1600, PostgreSqlParser.RULE_opt_case_else); - try { - this.state = 11257; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_END: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_ELSE: - this.enterOuterAlt(localContext, 2); - { - this.state = 11255; - this.match(PostgreSqlParser.KW_ELSE); - this.state = 11256; - this.proc_sect(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_loop(): Stmt_loopContext { - let localContext = new Stmt_loopContext(this.context, this.state); - this.enterRule(localContext, 1602, PostgreSqlParser.RULE_stmt_loop); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11259; - this.opt_loop_label(); - this.state = 11260; - this.loop_body(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_while(): Stmt_whileContext { - let localContext = new Stmt_whileContext(this.context, this.state); - this.enterRule(localContext, 1604, PostgreSqlParser.RULE_stmt_while); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11262; - this.opt_loop_label(); - this.state = 11263; - this.match(PostgreSqlParser.KW_WHILE); - this.state = 11264; - this.expr_until_loop(); - this.state = 11265; - this.loop_body(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_for(): Stmt_forContext { - let localContext = new Stmt_forContext(this.context, this.state); - this.enterRule(localContext, 1606, PostgreSqlParser.RULE_stmt_for); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11267; - this.opt_loop_label(); - this.state = 11268; - this.match(PostgreSqlParser.KW_FOR); - this.state = 11269; - this.for_control(); - this.state = 11270; - this.loop_body(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public for_control(): For_controlContext { - let localContext = new For_controlContext(this.context, this.state); - this.enterRule(localContext, 1608, PostgreSqlParser.RULE_for_control); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11272; - this.for_variable(); - this.state = 11273; - this.match(PostgreSqlParser.KW_IN); - this.state = 11289; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1197, this.context) ) { - case 1: - { - this.state = 11274; - this.cursor_name(); - this.state = 11275; - this.opt_cursor_parameters(); - } - break; - case 2: - { - this.state = 11277; - this.selectstmt(); - } - break; - case 3: - { - this.state = 11278; - this.explainstmt(); - } - break; - case 4: - { - this.state = 11279; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 11280; - this.a_expr(); - this.state = 11281; - this.opt_for_using_expression(); - } - break; - case 5: - { - this.state = 11283; - this.opt_reverse(); - this.state = 11284; - this.a_expr(); - this.state = 11285; - this.match(PostgreSqlParser.DOT_DOT); - this.state = 11286; - this.a_expr(); - this.state = 11287; - this.opt_by_expression(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_for_using_expression(): Opt_for_using_expressionContext { - let localContext = new Opt_for_using_expressionContext(this.context, this.state); - this.enterRule(localContext, 1610, PostgreSqlParser.RULE_opt_for_using_expression); - try { - this.state = 11294; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - case PostgreSqlParser.KW_LOOP: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 2); - { - this.state = 11292; - this.match(PostgreSqlParser.KW_USING); - this.state = 11293; - this.expr_list(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_cursor_parameters(): Opt_cursor_parametersContext { - let localContext = new Opt_cursor_parametersContext(this.context, this.state); - this.enterRule(localContext, 1612, PostgreSqlParser.RULE_opt_cursor_parameters); - let _la: number; - try { - this.state = 11308; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_LOOP: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.OPEN_PAREN: - this.enterOuterAlt(localContext, 2); - { - this.state = 11297; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11298; - this.a_expr(); - this.state = 11303; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11299; - this.match(PostgreSqlParser.COMMA); - this.state = 11300; - this.a_expr(); - } - } - this.state = 11305; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 11306; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_reverse(): Opt_reverseContext { - let localContext = new Opt_reverseContext(this.context, this.state); - this.enterRule(localContext, 1614, PostgreSqlParser.RULE_opt_reverse); - try { - this.state = 11312; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1201, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11311; - this.match(PostgreSqlParser.KW_REVERSE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_by_expression(): Opt_by_expressionContext { - let localContext = new Opt_by_expressionContext(this.context, this.state); - this.enterRule(localContext, 1616, PostgreSqlParser.RULE_opt_by_expression); - try { - this.state = 11317; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_LOOP: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_BY: - this.enterOuterAlt(localContext, 2); - { - this.state = 11315; - this.match(PostgreSqlParser.KW_BY); - this.state = 11316; - this.a_expr(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public for_variable(): For_variableContext { - let localContext = new For_variableContext(this.context, this.state); - this.enterRule(localContext, 1618, PostgreSqlParser.RULE_for_variable); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11319; - this.any_name_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_foreach_a(): Stmt_foreach_aContext { - let localContext = new Stmt_foreach_aContext(this.context, this.state); - this.enterRule(localContext, 1620, PostgreSqlParser.RULE_stmt_foreach_a); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11321; - this.opt_loop_label(); - this.state = 11322; - this.match(PostgreSqlParser.KW_FOREACH); - this.state = 11323; - this.for_variable(); - this.state = 11324; - this.foreach_slice(); - this.state = 11325; - this.match(PostgreSqlParser.KW_IN); - this.state = 11326; - this.match(PostgreSqlParser.KW_ARRAY); - this.state = 11327; - this.a_expr(); - this.state = 11328; - this.loop_body(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public foreach_slice(): Foreach_sliceContext { - let localContext = new Foreach_sliceContext(this.context, this.state); - this.enterRule(localContext, 1622, PostgreSqlParser.RULE_foreach_slice); - try { - this.state = 11333; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_IN: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_SLICE: - this.enterOuterAlt(localContext, 2); - { - this.state = 11331; - this.match(PostgreSqlParser.KW_SLICE); - this.state = 11332; - this.iconst(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_exit(): Stmt_exitContext { - let localContext = new Stmt_exitContext(this.context, this.state); - this.enterRule(localContext, 1624, PostgreSqlParser.RULE_stmt_exit); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11335; - this.exit_type(); - this.state = 11336; - this.opt_label(); - this.state = 11338; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 102) { - { - this.state = 11337; - this.opt_exitcond(); - } - } - - this.state = 11340; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public exit_type(): Exit_typeContext { - let localContext = new Exit_typeContext(this.context, this.state); - this.enterRule(localContext, 1626, PostgreSqlParser.RULE_exit_type); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11342; - _la = this.tokenStream.LA(1); - if(!(_la === 167 || _la === 507)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_return(): Stmt_returnContext { - let localContext = new Stmt_returnContext(this.context, this.state); - this.enterRule(localContext, 1628, PostgreSqlParser.RULE_stmt_return); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11344; - this.match(PostgreSqlParser.KW_RETURN); - this.state = 11356; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1206, this.context) ) { - case 1: - { - this.state = 11345; - this.match(PostgreSqlParser.KW_NEXT); - this.state = 11346; - this.sql_expression(); - } - break; - case 2: - { - this.state = 11347; - this.match(PostgreSqlParser.KW_QUERY); - this.state = 11353; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_EXECUTE: - { - this.state = 11348; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 11349; - this.a_expr(); - this.state = 11350; - this.opt_for_using_expression(); - } - break; - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.KW_SELECT: - case PostgreSqlParser.KW_TABLE: - case PostgreSqlParser.KW_WITH: - case PostgreSqlParser.KW_VALUES: - { - this.state = 11352; - this.selectstmt(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 3: - { - this.state = 11355; - this.opt_return_result(); - } - break; - } - this.state = 11358; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_return_result(): Opt_return_resultContext { - let localContext = new Opt_return_resultContext(this.context, this.state); - this.enterRule(localContext, 1630, PostgreSqlParser.RULE_opt_return_result); - try { - this.state = 11362; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1207, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11361; - this.sql_expression(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_raise(): Stmt_raiseContext { - let localContext = new Stmt_raiseContext(this.context, this.state); - this.enterRule(localContext, 1632, PostgreSqlParser.RULE_stmt_raise); - let _la: number; - try { - this.state = 11398; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1212, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11364; - this.match(PostgreSqlParser.KW_RAISE); - this.state = 11366; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0)) { - { - this.state = 11365; - this.opt_stmt_raise_level(); - } - } - - this.state = 11368; - this.sconst(); - this.state = 11369; - this.opt_raise_list(); - this.state = 11370; - this.opt_raise_using(); - this.state = 11371; - this.match(PostgreSqlParser.SEMI); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11373; - this.match(PostgreSqlParser.KW_RAISE); - this.state = 11375; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1209, this.context) ) { - case 1: - { - this.state = 11374; - this.opt_stmt_raise_level(); - } - break; - } - this.state = 11377; - this.identifier(); - this.state = 11378; - this.opt_raise_using(); - this.state = 11379; - this.match(PostgreSqlParser.SEMI); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 11381; - this.match(PostgreSqlParser.KW_RAISE); - this.state = 11383; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0)) { - { - this.state = 11382; - this.opt_stmt_raise_level(); - } - } - - this.state = 11385; - this.match(PostgreSqlParser.KW_SQLSTATE); - this.state = 11386; - this.sconst(); - this.state = 11387; - this.opt_raise_using(); - this.state = 11388; - this.match(PostgreSqlParser.SEMI); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 11390; - this.match(PostgreSqlParser.KW_RAISE); - this.state = 11392; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0)) { - { - this.state = 11391; - this.opt_stmt_raise_level(); - } - } - - this.state = 11394; - this.opt_raise_using(); - this.state = 11395; - this.match(PostgreSqlParser.SEMI); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 11397; - this.match(PostgreSqlParser.KW_RAISE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_stmt_raise_level(): Opt_stmt_raise_levelContext { - let localContext = new Opt_stmt_raise_levelContext(this.context, this.state); - this.enterRule(localContext, 1634, PostgreSqlParser.RULE_opt_stmt_raise_level); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11400; - _la = this.tokenStream.LA(1); - if(!(((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_raise_list(): Opt_raise_listContext { - let localContext = new Opt_raise_listContext(this.context, this.state); - this.enterRule(localContext, 1636, PostgreSqlParser.RULE_opt_raise_list); - let _la: number; - try { - this.state = 11409; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.COMMA: - this.enterOuterAlt(localContext, 2); - { - this.state = 11405; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 11403; - this.match(PostgreSqlParser.COMMA); - this.state = 11404; - this.a_expr(); - } - } - this.state = 11407; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 6); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_raise_using(): Opt_raise_usingContext { - let localContext = new Opt_raise_usingContext(this.context, this.state); - this.enterRule(localContext, 1638, PostgreSqlParser.RULE_opt_raise_using); - try { - this.state = 11414; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 2); - { - this.state = 11412; - this.match(PostgreSqlParser.KW_USING); - this.state = 11413; - this.opt_raise_using_elem_list(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_raise_using_elem(): Opt_raise_using_elemContext { - let localContext = new Opt_raise_using_elemContext(this.context, this.state); - this.enterRule(localContext, 1640, PostgreSqlParser.RULE_opt_raise_using_elem); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11416; - this.identifier(); - this.state = 11417; - this.match(PostgreSqlParser.EQUAL); - this.state = 11418; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_raise_using_elem_list(): Opt_raise_using_elem_listContext { - let localContext = new Opt_raise_using_elem_listContext(this.context, this.state); - this.enterRule(localContext, 1642, PostgreSqlParser.RULE_opt_raise_using_elem_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11420; - this.opt_raise_using_elem(); - this.state = 11425; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11421; - this.match(PostgreSqlParser.COMMA); - this.state = 11422; - this.opt_raise_using_elem(); - } - } - this.state = 11427; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_assert(): Stmt_assertContext { - let localContext = new Stmt_assertContext(this.context, this.state); - this.enterRule(localContext, 1644, PostgreSqlParser.RULE_stmt_assert); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11428; - this.match(PostgreSqlParser.KW_ASSERT); - this.state = 11429; - this.sql_expression(); - this.state = 11430; - this.opt_stmt_assert_message(); - this.state = 11431; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_stmt_assert_message(): Opt_stmt_assert_messageContext { - let localContext = new Opt_stmt_assert_messageContext(this.context, this.state); - this.enterRule(localContext, 1646, PostgreSqlParser.RULE_opt_stmt_assert_message); - try { - this.state = 11436; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.COMMA: - this.enterOuterAlt(localContext, 2); - { - this.state = 11434; - this.match(PostgreSqlParser.COMMA); - this.state = 11435; - this.sql_expression(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public loop_body(): Loop_bodyContext { - let localContext = new Loop_bodyContext(this.context, this.state); - this.enterRule(localContext, 1648, PostgreSqlParser.RULE_loop_body); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11438; - this.match(PostgreSqlParser.KW_LOOP); - this.state = 11439; - this.proc_sect(); - this.state = 11440; - this.match(PostgreSqlParser.KW_END); - this.state = 11441; - this.match(PostgreSqlParser.KW_LOOP); - this.state = 11442; - this.opt_label(); - this.state = 11443; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_execsql(): Stmt_execsqlContext { - let localContext = new Stmt_execsqlContext(this.context, this.state); - this.enterRule(localContext, 1650, PostgreSqlParser.RULE_stmt_execsql); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11445; - this.make_execsql_stmt(); - this.state = 11446; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_dynexecute(): Stmt_dynexecuteContext { - let localContext = new Stmt_dynexecuteContext(this.context, this.state); - this.enterRule(localContext, 1652, PostgreSqlParser.RULE_stmt_dynexecute); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11448; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 11449; - this.a_expr(); - this.state = 11457; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1218, this.context) ) { - case 1: - { - this.state = 11450; - this.opt_execute_into(); - this.state = 11451; - this.opt_execute_using(); - } - break; - case 2: - { - this.state = 11453; - this.opt_execute_using(); - this.state = 11454; - this.opt_execute_into(); - } - break; - case 3: - // tslint:disable-next-line:no-empty - { - } - break; - } - this.state = 11459; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_execute_using(): Opt_execute_usingContext { - let localContext = new Opt_execute_usingContext(this.context, this.state); - this.enterRule(localContext, 1654, PostgreSqlParser.RULE_opt_execute_using); - try { - this.state = 11464; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - case PostgreSqlParser.KW_INTO: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 2); - { - this.state = 11462; - this.match(PostgreSqlParser.KW_USING); - this.state = 11463; - this.opt_execute_using_list(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_execute_using_list(): Opt_execute_using_listContext { - let localContext = new Opt_execute_using_listContext(this.context, this.state); - this.enterRule(localContext, 1656, PostgreSqlParser.RULE_opt_execute_using_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11466; - this.a_expr(); - this.state = 11471; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11467; - this.match(PostgreSqlParser.COMMA); - this.state = 11468; - this.a_expr(); - } - } - this.state = 11473; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_execute_into(): Opt_execute_intoContext { - let localContext = new Opt_execute_intoContext(this.context, this.state); - this.enterRule(localContext, 1658, PostgreSqlParser.RULE_opt_execute_into); - try { - this.state = 11480; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_INTO: - this.enterOuterAlt(localContext, 2); - { - this.state = 11475; - this.match(PostgreSqlParser.KW_INTO); - this.state = 11477; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1221, this.context) ) { - case 1: - { - this.state = 11476; - this.match(PostgreSqlParser.KW_STRICT); - } - break; - } - this.state = 11479; - this.into_target(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_open(): Stmt_openContext { - let localContext = new Stmt_openContext(this.context, this.state); - this.enterRule(localContext, 1660, PostgreSqlParser.RULE_stmt_open); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11482; - this.match(PostgreSqlParser.KW_OPEN); - this.state = 11500; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1225, this.context) ) { - case 1: - { - this.state = 11483; - this.cursor_variable(); - this.state = 11484; - this.opt_scroll_option(); - this.state = 11485; - this.match(PostgreSqlParser.KW_FOR); - this.state = 11491; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.OPEN_PAREN: - case PostgreSqlParser.KW_SELECT: - case PostgreSqlParser.KW_TABLE: - case PostgreSqlParser.KW_WITH: - case PostgreSqlParser.KW_VALUES: - { - this.state = 11486; - this.selectstmt(); - } - break; - case PostgreSqlParser.KW_EXECUTE: - { - this.state = 11487; - this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 11488; - this.sql_expression(); - this.state = 11489; - this.opt_open_using(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 2: - { - this.state = 11493; - this.colid(); - this.state = 11498; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 11494; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11495; - this.opt_open_bound_list(); - this.state = 11496; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - - } - break; - } - this.state = 11502; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_open_bound_list_item(): Opt_open_bound_list_itemContext { - let localContext = new Opt_open_bound_list_itemContext(this.context, this.state); - this.enterRule(localContext, 1662, PostgreSqlParser.RULE_opt_open_bound_list_item); - try { - this.state = 11509; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1226, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11504; - this.colid(); - this.state = 11505; - this.match(PostgreSqlParser.COLON_EQUALS); - this.state = 11506; - this.a_expr(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11508; - this.a_expr(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_open_bound_list(): Opt_open_bound_listContext { - let localContext = new Opt_open_bound_listContext(this.context, this.state); - this.enterRule(localContext, 1664, PostgreSqlParser.RULE_opt_open_bound_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11511; - this.opt_open_bound_list_item(); - this.state = 11516; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11512; - this.match(PostgreSqlParser.COMMA); - this.state = 11513; - this.opt_open_bound_list_item(); - } - } - this.state = 11518; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_open_using(): Opt_open_usingContext { - let localContext = new Opt_open_usingContext(this.context, this.state); - this.enterRule(localContext, 1666, PostgreSqlParser.RULE_opt_open_using); - try { - this.state = 11522; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.SEMI: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_USING: - this.enterOuterAlt(localContext, 2); - { - this.state = 11520; - this.match(PostgreSqlParser.KW_USING); - this.state = 11521; - this.expr_list(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_scroll_option(): Opt_scroll_optionContext { - let localContext = new Opt_scroll_optionContext(this.context, this.state); - this.enterRule(localContext, 1668, PostgreSqlParser.RULE_opt_scroll_option); - try { - this.state = 11528; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FOR: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_SCROLL: - this.enterOuterAlt(localContext, 2); - { - this.state = 11525; - this.opt_scroll_option_no(); - this.state = 11526; - this.match(PostgreSqlParser.KW_SCROLL); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_scroll_option_no(): Opt_scroll_option_noContext { - let localContext = new Opt_scroll_option_noContext(this.context, this.state); - this.enterRule(localContext, 1670, PostgreSqlParser.RULE_opt_scroll_option_no); - try { - this.state = 11532; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_SCROLL: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_NO: - this.enterOuterAlt(localContext, 2); - { - this.state = 11531; - this.match(PostgreSqlParser.KW_NO); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_fetch(): Stmt_fetchContext { - let localContext = new Stmt_fetchContext(this.context, this.state); - this.enterRule(localContext, 1672, PostgreSqlParser.RULE_stmt_fetch); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11534; - this.match(PostgreSqlParser.KW_FETCH); - this.state = 11536; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1231, this.context) ) { - case 1: - { - this.state = 11535; - localContext._direction = this.opt_fetch_direction(); - } - break; - } - this.state = 11538; - this.opt_cursor_from(); - this.state = 11539; - this.cursor_variable(); - this.state = 11540; - this.match(PostgreSqlParser.KW_INTO); - this.state = 11541; - this.into_target(); - this.state = 11542; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public into_target(): Into_targetContext { - let localContext = new Into_targetContext(this.context, this.state); - this.enterRule(localContext, 1674, PostgreSqlParser.RULE_into_target); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11544; - this.expr_list(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_cursor_from(): Opt_cursor_fromContext { - let localContext = new Opt_cursor_fromContext(this.context, this.state); - this.enterRule(localContext, 1676, PostgreSqlParser.RULE_opt_cursor_from); - try { - this.state = 11549; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.PARAM: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_FROM: - this.enterOuterAlt(localContext, 2); - { - this.state = 11547; - this.match(PostgreSqlParser.KW_FROM); - } - break; - case PostgreSqlParser.KW_IN: - this.enterOuterAlt(localContext, 3); - { - this.state = 11548; - this.match(PostgreSqlParser.KW_IN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_fetch_direction(): Opt_fetch_directionContext { - let localContext = new Opt_fetch_directionContext(this.context, this.state); - this.enterRule(localContext, 1678, PostgreSqlParser.RULE_opt_fetch_direction); - let _la: number; - try { - this.state = 11566; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1234, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11551; - this.match(PostgreSqlParser.KW_NEXT); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11552; - this.match(PostgreSqlParser.KW_PRIOR); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 11553; - this.match(PostgreSqlParser.KW_FIRST); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 11554; - this.match(PostgreSqlParser.KW_LAST); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 11555; - this.match(PostgreSqlParser.KW_ABSOLUTE); - this.state = 11556; - this.a_expr(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 11557; - this.match(PostgreSqlParser.KW_RELATIVE); - this.state = 11558; - this.a_expr(); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 11559; - this.a_expr(); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 11560; - this.match(PostgreSqlParser.KW_ALL); - } - break; - case 9: - this.enterOuterAlt(localContext, 9); - { - this.state = 11561; - _la = this.tokenStream.LA(1); - if(!(_la === 144 || _la === 210)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 11564; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1233, this.context) ) { - case 1: - { - this.state = 11562; - this.a_expr(); - } - break; - case 2: - { - this.state = 11563; - this.match(PostgreSqlParser.KW_ALL); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_move(): Stmt_moveContext { - let localContext = new Stmt_moveContext(this.context, this.state); - this.enterRule(localContext, 1680, PostgreSqlParser.RULE_stmt_move); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11568; - this.match(PostgreSqlParser.KW_MOVE); - this.state = 11570; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1235, this.context) ) { - case 1: - { - this.state = 11569; - this.opt_fetch_direction(); - } - break; - } - this.state = 11572; - this.cursor_variable(); - this.state = 11573; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public mergestmt(): MergestmtContext { - let localContext = new MergestmtContext(this.context, this.state); - this.enterRule(localContext, 1682, PostgreSqlParser.RULE_mergestmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11576; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105) { - { - this.state = 11575; - this.with_clause(); - } - } - - this.state = 11578; - this.match(PostgreSqlParser.KW_MERGE); - this.state = 11579; - this.match(PostgreSqlParser.KW_INTO); - this.state = 11581; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 81) { - { - this.state = 11580; - this.match(PostgreSqlParser.KW_ONLY); - } - } - - this.state = 11583; - this.table_name(); - this.state = 11585; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 9) { - { - this.state = 11584; - this.match(PostgreSqlParser.STAR); - } - } - - this.state = 11591; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 11588; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 11587; - this.match(PostgreSqlParser.KW_AS); - } - } - - this.state = 11590; - this.colid(); - } - } - - this.state = 11593; - this.match(PostgreSqlParser.KW_USING); - this.state = 11594; - this.data_source(); - this.state = 11595; - this.match(PostgreSqlParser.KW_ON); - this.state = 11596; - this.join_condition(); - this.state = 11598; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 11597; - this.merge_when_clause(); - } - } - this.state = 11600; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 102); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public data_source(): Data_sourceContext { - let localContext = new Data_sourceContext(this.context, this.state); - this.enterRule(localContext, 1684, PostgreSqlParser.RULE_data_source); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11613; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1245, this.context) ) { - case 1: - { - this.state = 11603; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 81) { - { - this.state = 11602; - this.match(PostgreSqlParser.KW_ONLY); - } - } - - this.state = 11605; - this.table_name(); - this.state = 11607; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 9) { - { - this.state = 11606; - this.match(PostgreSqlParser.STAR); - } - } - - } - break; - case 2: - { - this.state = 11611; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1244, this.context) ) { - case 1: - { - this.state = 11609; - this.select_no_parens(); - } - break; - case 2: - { - this.state = 11610; - this.values_clause(); - } - break; - } - } - break; - } - this.state = 11619; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { - { - this.state = 11616; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 36) { - { - this.state = 11615; - this.match(PostgreSqlParser.KW_AS); - } - } - - this.state = 11618; - this.colid(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public join_condition(): Join_conditionContext { - let localContext = new Join_conditionContext(this.context, this.state); - this.enterRule(localContext, 1686, PostgreSqlParser.RULE_join_condition); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11621; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public merge_when_clause(): Merge_when_clauseContext { - let localContext = new Merge_when_clauseContext(this.context, this.state); - this.enterRule(localContext, 1688, PostgreSqlParser.RULE_merge_when_clause); - let _la: number; - try { - this.state = 11649; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1252, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11623; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 11624; - this.match(PostgreSqlParser.KW_MATCHED); - this.state = 11627; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 33) { - { - this.state = 11625; - this.match(PostgreSqlParser.KW_AND); - this.state = 11626; - this.a_expr(); - } - } - - this.state = 11629; - this.match(PostgreSqlParser.KW_THEN); - this.state = 11634; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_UPDATE: - { - this.state = 11630; - this.merge_update(); - } - break; - case PostgreSqlParser.KW_DELETE: - { - this.state = 11631; - this.match(PostgreSqlParser.KW_DELETE); - } - break; - case PostgreSqlParser.KW_DO: - { - this.state = 11632; - this.match(PostgreSqlParser.KW_DO); - this.state = 11633; - this.match(PostgreSqlParser.KW_NOTHING); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11636; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 11637; - this.match(PostgreSqlParser.KW_NOT); - this.state = 11638; - this.match(PostgreSqlParser.KW_MATCHED); - this.state = 11641; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 33) { - { - this.state = 11639; - this.match(PostgreSqlParser.KW_AND); - this.state = 11640; - this.a_expr(); - } - } - - this.state = 11643; - this.match(PostgreSqlParser.KW_THEN); - this.state = 11647; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_INSERT: - { - this.state = 11644; - this.merge_insert(); - } - break; - case PostgreSqlParser.KW_DO: - { - this.state = 11645; - this.match(PostgreSqlParser.KW_DO); - this.state = 11646; - this.match(PostgreSqlParser.KW_NOTHING); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public merge_insert(): Merge_insertContext { - let localContext = new Merge_insertContext(this.context, this.state); - this.enterRule(localContext, 1690, PostgreSqlParser.RULE_merge_insert); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11651; - this.match(PostgreSqlParser.KW_INSERT); - this.state = 11656; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 11652; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11653; - this.column_list(); - this.state = 11654; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - - this.state = 11661; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 463) { - { - this.state = 11658; - this.match(PostgreSqlParser.KW_OVERRIDING); - this.state = 11659; - _la = this.tokenStream.LA(1); - if(!(_la === 99 || _la === 349)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 11660; - this.match(PostgreSqlParser.KW_VALUE); - } - } - - this.state = 11663; - this.default_values_or_values(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public merge_update(): Merge_updateContext { - let localContext = new Merge_updateContext(this.context, this.state); - this.enterRule(localContext, 1692, PostgreSqlParser.RULE_merge_update); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 11665; - this.match(PostgreSqlParser.KW_UPDATE); - this.state = 11666; - this.match(PostgreSqlParser.KW_SET); - this.state = 11679; - this.errorHandler.sync(this); - alternative = 1; - do { - switch (alternative) { - case 1: - { - this.state = 11679; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1255, this.context) ) { - case 1: - { - this.state = 11667; - this.column_name(); - this.state = 11668; - this.match(PostgreSqlParser.EQUAL); - this.state = 11669; - this.exprofdefault(); - } - break; - case 2: - { - this.state = 11671; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11672; - this.column_list(); - this.state = 11673; - this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 11674; - this.match(PostgreSqlParser.EQUAL); - this.state = 11675; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11676; - this.exprofdefaultlist(); - this.state = 11677; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - break; - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 11681; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1256, this.context); - } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public default_values_or_values(): Default_values_or_valuesContext { - let localContext = new Default_values_or_valuesContext(this.context, this.state); - this.enterRule(localContext, 1694, PostgreSqlParser.RULE_default_values_or_values); - try { - this.state = 11687; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_VALUES: - this.enterOuterAlt(localContext, 1); - { - this.state = 11683; - this.match(PostgreSqlParser.KW_VALUES); - this.state = 11684; - this.exprofdefaultlist(); - } - break; - case PostgreSqlParser.KW_DEFAULT: - this.enterOuterAlt(localContext, 2); - { - this.state = 11685; - this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 11686; - this.match(PostgreSqlParser.KW_VALUES); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public exprofdefaultlist(): ExprofdefaultlistContext { - let localContext = new ExprofdefaultlistContext(this.context, this.state); - this.enterRule(localContext, 1696, PostgreSqlParser.RULE_exprofdefaultlist); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11689; - this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 11690; - this.exprofdefault(); - this.state = 11695; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 11691; - this.match(PostgreSqlParser.COMMA); - this.state = 11692; - this.exprofdefault(); - } - } - this.state = 11697; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 11698; - this.match(PostgreSqlParser.CLOSE_PAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public exprofdefault(): ExprofdefaultContext { - let localContext = new ExprofdefaultContext(this.context, this.state); - this.enterRule(localContext, 1698, PostgreSqlParser.RULE_exprofdefault); - try { - this.state = 11702; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1259, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11700; - this.sortby(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11701; - this.match(PostgreSqlParser.KW_DEFAULT); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_close(): Stmt_closeContext { - let localContext = new Stmt_closeContext(this.context, this.state); - this.enterRule(localContext, 1700, PostgreSqlParser.RULE_stmt_close); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11704; - this.match(PostgreSqlParser.KW_CLOSE); - this.state = 11705; - this.cursor_variable(); - this.state = 11706; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_null(): Stmt_nullContext { - let localContext = new Stmt_nullContext(this.context, this.state); - this.enterRule(localContext, 1702, PostgreSqlParser.RULE_stmt_null); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11708; - this.match(PostgreSqlParser.KW_NULL); - this.state = 11709; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_commit(): Stmt_commitContext { - let localContext = new Stmt_commitContext(this.context, this.state); - this.enterRule(localContext, 1704, PostgreSqlParser.RULE_stmt_commit); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11711; - this.match(PostgreSqlParser.KW_COMMIT); - this.state = 11713; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 33) { - { - this.state = 11712; - this.plsql_opt_transaction_chain(); - } - } - - this.state = 11715; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_rollback(): Stmt_rollbackContext { - let localContext = new Stmt_rollbackContext(this.context, this.state); - this.enterRule(localContext, 1706, PostgreSqlParser.RULE_stmt_rollback); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11717; - this.match(PostgreSqlParser.KW_ROLLBACK); - this.state = 11719; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 33) { - { - this.state = 11718; - this.plsql_opt_transaction_chain(); - } - } - - this.state = 11721; - this.match(PostgreSqlParser.SEMI); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public plsql_opt_transaction_chain(): Plsql_opt_transaction_chainContext { - let localContext = new Plsql_opt_transaction_chainContext(this.context, this.state); - this.enterRule(localContext, 1708, PostgreSqlParser.RULE_plsql_opt_transaction_chain); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11723; - this.match(PostgreSqlParser.KW_AND); - this.state = 11725; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 269) { - { - this.state = 11724; - this.match(PostgreSqlParser.KW_NO); - } - } - - this.state = 11727; - this.match(PostgreSqlParser.KW_CHAIN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stmt_set(): Stmt_setContext { - let localContext = new Stmt_setContext(this.context, this.state); - this.enterRule(localContext, 1710, PostgreSqlParser.RULE_stmt_set); - try { - this.state = 11741; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - { - this.state = 11729; - this.match(PostgreSqlParser.KW_SET); - this.state = 11730; - this.any_name(); - this.state = 11731; - this.match(PostgreSqlParser.KW_TO); - this.state = 11732; - this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 11733; - this.match(PostgreSqlParser.SEMI); - } - break; - case PostgreSqlParser.KW_RESET: - this.enterOuterAlt(localContext, 2); - { - this.state = 11735; - this.match(PostgreSqlParser.KW_RESET); - this.state = 11738; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - { - this.state = 11736; - this.any_name(); - } - break; - case PostgreSqlParser.KW_ALL: - { - this.state = 11737; - this.match(PostgreSqlParser.KW_ALL); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 11740; - this.match(PostgreSqlParser.SEMI); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public cursor_variable(): Cursor_variableContext { - let localContext = new Cursor_variableContext(this.context, this.state); - this.enterRule(localContext, 1712, PostgreSqlParser.RULE_cursor_variable); - try { - this.state = 11745; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 1); - { - this.state = 11743; - this.colid(); - } - break; - case PostgreSqlParser.PARAM: - this.enterOuterAlt(localContext, 2); - { - this.state = 11744; - this.match(PostgreSqlParser.PARAM); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public exception_sect(): Exception_sectContext { - let localContext = new Exception_sectContext(this.context, this.state); - this.enterRule(localContext, 1714, PostgreSqlParser.RULE_exception_sect); - try { - this.state = 11750; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_END: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_EXCEPTION: - this.enterOuterAlt(localContext, 2); - { - this.state = 11748; - this.match(PostgreSqlParser.KW_EXCEPTION); - this.state = 11749; - this.proc_exceptions(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public proc_exceptions(): Proc_exceptionsContext { - let localContext = new Proc_exceptionsContext(this.context, this.state); - this.enterRule(localContext, 1716, PostgreSqlParser.RULE_proc_exceptions); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11753; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 11752; - this.proc_exception(); - } - } - this.state = 11755; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 102); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public proc_exception(): Proc_exceptionContext { - let localContext = new Proc_exceptionContext(this.context, this.state); - this.enterRule(localContext, 1718, PostgreSqlParser.RULE_proc_exception); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11757; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 11758; - this.proc_conditions(); - this.state = 11759; - this.match(PostgreSqlParser.KW_THEN); - this.state = 11760; - this.proc_sect(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public proc_conditions(): Proc_conditionsContext { - let localContext = new Proc_conditionsContext(this.context, this.state); - this.enterRule(localContext, 1720, PostgreSqlParser.RULE_proc_conditions); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11762; - this.proc_condition(); - this.state = 11767; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 82) { - { - { - this.state = 11763; - this.match(PostgreSqlParser.KW_OR); - this.state = 11764; - this.proc_condition(); - } - } - this.state = 11769; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public proc_condition(): Proc_conditionContext { - let localContext = new Proc_conditionContext(this.context, this.state); - this.enterRule(localContext, 1722, PostgreSqlParser.RULE_proc_condition); - try { - this.state = 11773; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1269, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11770; - this.any_identifier(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11771; - this.match(PostgreSqlParser.KW_SQLSTATE); - this.state = 11772; - this.sconst(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_block_label(): Opt_block_labelContext { - let localContext = new Opt_block_labelContext(this.context, this.state); - this.enterRule(localContext, 1724, PostgreSqlParser.RULE_opt_block_label); - try { - this.state = 11777; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_DECLARE: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.LESS_LESS: - this.enterOuterAlt(localContext, 2); - { - this.state = 11776; - this.label_decl(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_loop_label(): Opt_loop_labelContext { - let localContext = new Opt_loop_labelContext(this.context, this.state); - this.enterRule(localContext, 1726, PostgreSqlParser.RULE_opt_loop_label); - try { - this.state = 11781; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_FOR: - case PostgreSqlParser.KW_WHILE: - case PostgreSqlParser.KW_FOREACH: - case PostgreSqlParser.KW_LOOP: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.LESS_LESS: - this.enterOuterAlt(localContext, 2); - { - this.state = 11780; - this.label_decl(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_label(): Opt_labelContext { - let localContext = new Opt_labelContext(this.context, this.state); - this.enterRule(localContext, 1728, PostgreSqlParser.RULE_opt_label); - try { - this.state = 11785; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.EOF: - case PostgreSqlParser.SEMI: - case PostgreSqlParser.KW_WHEN: - this.enterOuterAlt(localContext, 1); - // tslint:disable-next-line:no-empty - { - } - break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: - this.enterOuterAlt(localContext, 2); - { - this.state = 11784; - this.any_identifier(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_exitcond(): Opt_exitcondContext { - let localContext = new Opt_exitcondContext(this.context, this.state); - this.enterRule(localContext, 1730, PostgreSqlParser.RULE_opt_exitcond); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11787; - this.match(PostgreSqlParser.KW_WHEN); - this.state = 11788; - this.expr_until_semi(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public any_identifier(): Any_identifierContext { - let localContext = new Any_identifierContext(this.context, this.state); - this.enterRule(localContext, 1732, PostgreSqlParser.RULE_any_identifier); - try { - this.state = 11792; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1273, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 11790; - this.colid(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 11791; - this.plsql_unreserved_keyword(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext { - let localContext = new Plsql_unreserved_keywordContext(this.context, this.state); - this.enterRule(localContext, 1734, PostgreSqlParser.RULE_plsql_unreserved_keyword); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11794; - _la = this.tokenStream.LA(1); - if(!(((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public sql_expression(): Sql_expressionContext { - let localContext = new Sql_expressionContext(this.context, this.state); - this.enterRule(localContext, 1736, PostgreSqlParser.RULE_sql_expression); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11797; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1274, this.context) ) { - case 1: - { - this.state = 11796; - this.opt_target_list(); - } - break; - } - this.state = 11800; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 71) { - { - this.state = 11799; - this.into_clause(); - } - } - - this.state = 11803; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 64) { - { - this.state = 11802; - this.from_clause(); - } - } - - this.state = 11806; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { - { - this.state = 11805; - this.where_clause(); - } - } - - this.state = 11809; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 66) { - { - this.state = 11808; - this.group_clause(); - } - } - - this.state = 11812; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 67) { - { - this.state = 11811; - this.having_clause(); - } - } - - this.state = 11815; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 104) { - { - this.state = 11814; - this.window_clause(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expr_until_then(): Expr_until_thenContext { - let localContext = new Expr_until_thenContext(this.context, this.state); - this.enterRule(localContext, 1738, PostgreSqlParser.RULE_expr_until_then); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11817; - this.sql_expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expr_until_semi(): Expr_until_semiContext { - let localContext = new Expr_until_semiContext(this.context, this.state); - this.enterRule(localContext, 1740, PostgreSqlParser.RULE_expr_until_semi); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11819; - this.sql_expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expr_until_rightbracket(): Expr_until_rightbracketContext { - let localContext = new Expr_until_rightbracketContext(this.context, this.state); - this.enterRule(localContext, 1742, PostgreSqlParser.RULE_expr_until_rightbracket); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11821; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expr_until_loop(): Expr_until_loopContext { - let localContext = new Expr_until_loopContext(this.context, this.state); - this.enterRule(localContext, 1744, PostgreSqlParser.RULE_expr_until_loop); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11823; - this.a_expr(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public make_execsql_stmt(): Make_execsql_stmtContext { - let localContext = new Make_execsql_stmtContext(this.context, this.state); - this.enterRule(localContext, 1746, PostgreSqlParser.RULE_make_execsql_stmt); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11825; - this.stmt(); - this.state = 11827; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 71) { - { - this.state = 11826; - this.opt_returning_clause_into(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public opt_returning_clause_into(): Opt_returning_clause_intoContext { - let localContext = new Opt_returning_clause_intoContext(this.context, this.state); - this.enterRule(localContext, 1748, PostgreSqlParser.RULE_opt_returning_clause_into); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 11829; - this.match(PostgreSqlParser.KW_INTO); - this.state = 11830; - this.opt_strict(); - this.state = 11831; - this.into_target(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - - public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 626: - return this.b_expr_sempred(localContext as B_exprContext, predIndex); - case 716: - return this.column_name_sempred(localContext as Column_nameContext, predIndex); - } - return true; - } - private b_expr_sempred(localContext: B_exprContext | null, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this.precpred(this.context, 8); - case 1: - return this.precpred(this.context, 7); - case 2: - return this.precpred(this.context, 6); - case 3: - return this.precpred(this.context, 5); - case 4: - return this.precpred(this.context, 4); - case 5: - return this.precpred(this.context, 10); - case 6: - return this.precpred(this.context, 2); - case 7: - return this.precpred(this.context, 1); - } - return true; - } - private column_name_sempred(localContext: Column_nameContext | null, predIndex: number): boolean { - switch (predIndex) { - case 8: - return this.shouldMatchEmpty(); - } - return true; - } - - public static readonly _serializedATN: number[] = [ - 4,1,590,11834,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2, - 6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13, - 7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19, - 2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26, - 7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32, - 2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39, - 7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45, - 2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52, - 7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58, - 2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65, - 7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71, - 2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78, - 7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84, - 2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91, - 7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97, - 2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7, - 103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, - 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, - 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, - 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, - 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, - 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, - 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, - 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, - 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, - 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, - 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, - 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, - 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, - 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, - 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, - 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, - 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, - 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, - 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, - 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, - 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, - 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, - 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229, - 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, - 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, - 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, - 7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251, - 2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257, - 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, - 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, - 7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273, - 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279, - 7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284, - 2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, - 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295, - 2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, - 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306, - 2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312, - 7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317, - 2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323, - 7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328, - 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, - 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, - 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, - 7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350, - 2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356, - 7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361, - 2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367, - 7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372, - 2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378, - 7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383, - 2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389, - 7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394, - 2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400, - 7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405, - 2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411, - 7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416, - 2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422, - 7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427, - 2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433, - 7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438, - 2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444, - 7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449, - 2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455, - 7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460, - 2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466, - 7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471, - 2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477, - 7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482, - 2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488, - 7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493, - 2,494,7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499, - 7,499,2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504, - 2,505,7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510, - 7,510,2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515, - 2,516,7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,2,521, - 7,521,2,522,7,522,2,523,7,523,2,524,7,524,2,525,7,525,2,526,7,526, - 2,527,7,527,2,528,7,528,2,529,7,529,2,530,7,530,2,531,7,531,2,532, - 7,532,2,533,7,533,2,534,7,534,2,535,7,535,2,536,7,536,2,537,7,537, - 2,538,7,538,2,539,7,539,2,540,7,540,2,541,7,541,2,542,7,542,2,543, - 7,543,2,544,7,544,2,545,7,545,2,546,7,546,2,547,7,547,2,548,7,548, - 2,549,7,549,2,550,7,550,2,551,7,551,2,552,7,552,2,553,7,553,2,554, - 7,554,2,555,7,555,2,556,7,556,2,557,7,557,2,558,7,558,2,559,7,559, - 2,560,7,560,2,561,7,561,2,562,7,562,2,563,7,563,2,564,7,564,2,565, - 7,565,2,566,7,566,2,567,7,567,2,568,7,568,2,569,7,569,2,570,7,570, - 2,571,7,571,2,572,7,572,2,573,7,573,2,574,7,574,2,575,7,575,2,576, - 7,576,2,577,7,577,2,578,7,578,2,579,7,579,2,580,7,580,2,581,7,581, - 2,582,7,582,2,583,7,583,2,584,7,584,2,585,7,585,2,586,7,586,2,587, - 7,587,2,588,7,588,2,589,7,589,2,590,7,590,2,591,7,591,2,592,7,592, - 2,593,7,593,2,594,7,594,2,595,7,595,2,596,7,596,2,597,7,597,2,598, - 7,598,2,599,7,599,2,600,7,600,2,601,7,601,2,602,7,602,2,603,7,603, - 2,604,7,604,2,605,7,605,2,606,7,606,2,607,7,607,2,608,7,608,2,609, - 7,609,2,610,7,610,2,611,7,611,2,612,7,612,2,613,7,613,2,614,7,614, - 2,615,7,615,2,616,7,616,2,617,7,617,2,618,7,618,2,619,7,619,2,620, - 7,620,2,621,7,621,2,622,7,622,2,623,7,623,2,624,7,624,2,625,7,625, - 2,626,7,626,2,627,7,627,2,628,7,628,2,629,7,629,2,630,7,630,2,631, - 7,631,2,632,7,632,2,633,7,633,2,634,7,634,2,635,7,635,2,636,7,636, - 2,637,7,637,2,638,7,638,2,639,7,639,2,640,7,640,2,641,7,641,2,642, - 7,642,2,643,7,643,2,644,7,644,2,645,7,645,2,646,7,646,2,647,7,647, - 2,648,7,648,2,649,7,649,2,650,7,650,2,651,7,651,2,652,7,652,2,653, - 7,653,2,654,7,654,2,655,7,655,2,656,7,656,2,657,7,657,2,658,7,658, - 2,659,7,659,2,660,7,660,2,661,7,661,2,662,7,662,2,663,7,663,2,664, - 7,664,2,665,7,665,2,666,7,666,2,667,7,667,2,668,7,668,2,669,7,669, - 2,670,7,670,2,671,7,671,2,672,7,672,2,673,7,673,2,674,7,674,2,675, - 7,675,2,676,7,676,2,677,7,677,2,678,7,678,2,679,7,679,2,680,7,680, - 2,681,7,681,2,682,7,682,2,683,7,683,2,684,7,684,2,685,7,685,2,686, - 7,686,2,687,7,687,2,688,7,688,2,689,7,689,2,690,7,690,2,691,7,691, - 2,692,7,692,2,693,7,693,2,694,7,694,2,695,7,695,2,696,7,696,2,697, - 7,697,2,698,7,698,2,699,7,699,2,700,7,700,2,701,7,701,2,702,7,702, - 2,703,7,703,2,704,7,704,2,705,7,705,2,706,7,706,2,707,7,707,2,708, - 7,708,2,709,7,709,2,710,7,710,2,711,7,711,2,712,7,712,2,713,7,713, - 2,714,7,714,2,715,7,715,2,716,7,716,2,717,7,717,2,718,7,718,2,719, - 7,719,2,720,7,720,2,721,7,721,2,722,7,722,2,723,7,723,2,724,7,724, - 2,725,7,725,2,726,7,726,2,727,7,727,2,728,7,728,2,729,7,729,2,730, - 7,730,2,731,7,731,2,732,7,732,2,733,7,733,2,734,7,734,2,735,7,735, - 2,736,7,736,2,737,7,737,2,738,7,738,2,739,7,739,2,740,7,740,2,741, - 7,741,2,742,7,742,2,743,7,743,2,744,7,744,2,745,7,745,2,746,7,746, - 2,747,7,747,2,748,7,748,2,749,7,749,2,750,7,750,2,751,7,751,2,752, - 7,752,2,753,7,753,2,754,7,754,2,755,7,755,2,756,7,756,2,757,7,757, - 2,758,7,758,2,759,7,759,2,760,7,760,2,761,7,761,2,762,7,762,2,763, - 7,763,2,764,7,764,2,765,7,765,2,766,7,766,2,767,7,767,2,768,7,768, - 2,769,7,769,2,770,7,770,2,771,7,771,2,772,7,772,2,773,7,773,2,774, - 7,774,2,775,7,775,2,776,7,776,2,777,7,777,2,778,7,778,2,779,7,779, - 2,780,7,780,2,781,7,781,2,782,7,782,2,783,7,783,2,784,7,784,2,785, - 7,785,2,786,7,786,2,787,7,787,2,788,7,788,2,789,7,789,2,790,7,790, - 2,791,7,791,2,792,7,792,2,793,7,793,2,794,7,794,2,795,7,795,2,796, - 7,796,2,797,7,797,2,798,7,798,2,799,7,799,2,800,7,800,2,801,7,801, - 2,802,7,802,2,803,7,803,2,804,7,804,2,805,7,805,2,806,7,806,2,807, - 7,807,2,808,7,808,2,809,7,809,2,810,7,810,2,811,7,811,2,812,7,812, - 2,813,7,813,2,814,7,814,2,815,7,815,2,816,7,816,2,817,7,817,2,818, - 7,818,2,819,7,819,2,820,7,820,2,821,7,821,2,822,7,822,2,823,7,823, - 2,824,7,824,2,825,7,825,2,826,7,826,2,827,7,827,2,828,7,828,2,829, - 7,829,2,830,7,830,2,831,7,831,2,832,7,832,2,833,7,833,2,834,7,834, - 2,835,7,835,2,836,7,836,2,837,7,837,2,838,7,838,2,839,7,839,2,840, - 7,840,2,841,7,841,2,842,7,842,2,843,7,843,2,844,7,844,2,845,7,845, - 2,846,7,846,2,847,7,847,2,848,7,848,2,849,7,849,2,850,7,850,2,851, - 7,851,2,852,7,852,2,853,7,853,2,854,7,854,2,855,7,855,2,856,7,856, - 2,857,7,857,2,858,7,858,2,859,7,859,2,860,7,860,2,861,7,861,2,862, - 7,862,2,863,7,863,2,864,7,864,2,865,7,865,2,866,7,866,2,867,7,867, - 2,868,7,868,2,869,7,869,2,870,7,870,2,871,7,871,2,872,7,872,2,873, - 7,873,2,874,7,874,1,0,5,0,1752,8,0,10,0,12,0,1755,9,0,1,0,1,0,1, - 1,1,1,1,2,1,2,3,2,1763,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, - 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,1882,8,3,1,4,1, - 4,3,4,1886,8,4,1,5,1,5,1,5,1,6,1,6,1,6,1,6,3,6,1895,8,6,1,6,1,6, - 1,7,1,7,1,8,5,8,1902,8,8,10,8,12,8,1905,9,8,1,9,5,9,1908,8,9,10, - 9,12,9,1911,9,9,1,10,1,10,1,10,3,10,1916,8,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 3,10,1948,8,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11, - 3,11,1960,8,11,1,12,1,12,1,12,1,12,3,12,1966,8,12,1,12,1,12,1,13, - 1,13,1,13,1,13,3,13,1974,8,13,1,13,1,13,1,14,1,14,1,14,1,14,3,14, - 1982,8,14,1,15,1,15,1,15,1,15,3,15,1988,8,15,1,15,1,15,1,15,1,16, - 1,16,1,16,1,16,3,16,1997,8,16,1,16,1,16,1,17,1,17,3,17,2003,8,17, - 1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,2015,8,17, - 1,17,1,17,1,17,1,17,3,17,2021,8,17,1,18,1,18,5,18,2025,8,18,10,18, - 12,18,2028,9,18,1,19,1,19,1,19,1,19,3,19,2034,8,19,1,19,1,19,3,19, - 2038,8,19,1,19,1,19,1,19,3,19,2043,8,19,1,19,1,19,3,19,2047,8,19, - 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,2060, - 8,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,2071,8,19, - 1,20,1,20,1,20,1,20,3,20,2077,8,20,1,20,1,20,1,21,1,21,1,21,1,21, - 1,21,1,21,1,21,1,22,1,22,1,23,1,23,1,23,3,23,2093,8,23,1,23,3,23, - 2096,8,23,1,23,1,23,1,23,3,23,2101,8,23,1,23,1,23,1,24,1,24,3,24, - 2107,8,24,1,25,5,25,2110,8,25,10,25,12,25,2113,9,25,1,26,1,26,1, - 26,1,26,1,26,1,26,3,26,2121,8,26,1,27,1,27,3,27,2125,8,27,1,27,1, - 27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,2137,8,28,1,29,1, - 29,3,29,2141,8,29,1,29,3,29,2144,8,29,1,29,1,29,3,29,2148,8,29,1, - 30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,3,30,2159,8,30,1,30,1, - 30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, - 30,1,30,3,30,2177,8,30,1,31,1,31,1,31,5,31,2182,8,31,10,31,12,31, - 2185,9,31,1,32,1,32,1,32,5,32,2190,8,32,10,32,12,32,2193,9,32,1, - 33,1,33,3,33,2197,8,33,1,34,1,34,1,34,1,34,1,34,3,34,2204,8,34,1, - 35,1,35,1,35,1,35,3,35,2210,8,35,1,36,1,36,1,36,1,36,3,36,2216,8, - 36,1,37,1,37,1,37,1,37,1,37,3,37,2223,8,37,1,37,1,37,1,37,1,37,1, - 37,1,37,1,37,1,37,1,37,3,37,2234,8,37,1,38,1,38,3,38,2238,8,38,1, - 39,1,39,3,39,2242,8,39,1,40,1,40,3,40,2246,8,40,1,41,1,41,1,41,1, - 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,2259,8,42,1,43,1,43,3, - 43,2263,8,43,1,44,1,44,1,44,3,44,2268,8,44,1,45,1,45,1,45,3,45,2273, - 8,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,2285, - 8,46,1,47,1,47,1,47,1,47,1,47,1,48,1,48,3,48,2294,8,48,1,49,1,49, - 1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,3,52,2306,8,52,1,52,1,52, - 1,52,3,52,2311,8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52, - 3,52,2322,8,52,1,52,1,52,1,52,1,52,3,52,2328,8,52,1,52,1,52,1,52, - 3,52,2333,8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,2343, - 8,52,1,52,1,52,1,52,3,52,2348,8,52,1,52,1,52,1,52,1,52,1,52,3,52, - 2355,8,52,1,52,1,52,1,52,3,52,2360,8,52,1,52,1,52,1,52,3,52,2365, - 8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,2376,8,52, - 1,52,1,52,1,52,1,52,3,52,2382,8,52,1,52,1,52,1,52,3,52,2387,8,52, - 1,52,1,52,1,52,1,52,1,52,1,52,3,52,2395,8,52,1,52,1,52,1,52,1,52, - 1,52,1,52,1,52,3,52,2404,8,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52, - 1,52,1,52,1,52,1,52,1,52,1,52,3,52,2419,8,52,1,52,1,52,1,52,1,52, - 3,52,2425,8,52,1,52,1,52,1,52,1,52,3,52,2431,8,52,1,52,1,52,1,52, - 3,52,2436,8,52,1,53,1,53,1,53,5,53,2441,8,53,10,53,12,53,2444,9, - 53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,3,54,2455,8,54,1, - 55,1,55,1,55,1,55,5,55,2461,8,55,10,55,12,55,2464,9,55,1,55,1,55, - 1,56,1,56,1,56,3,56,2471,8,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57, - 1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,3,58,2489,8,58,1,59, - 1,59,1,59,1,59,1,60,1,60,1,60,3,60,2498,8,60,1,60,1,60,1,60,1,60, - 1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,2512,8,60,1,60,1,60, - 3,60,2516,8,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60, - 1,60,1,60,1,60,3,60,2531,8,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60, - 2539,8,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,2549,8,60, - 1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60, - 1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60, - 1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60, - 2589,8,60,1,60,3,60,2592,8,60,1,60,1,60,3,60,2596,8,60,1,60,1,60, - 3,60,2600,8,60,1,60,3,60,2603,8,60,1,60,1,60,1,60,3,60,2608,8,60, - 1,60,1,60,1,60,1,60,1,60,3,60,2615,8,60,1,60,1,60,1,60,1,60,1,60, - 1,60,1,60,3,60,2624,8,60,1,60,1,60,1,60,1,60,3,60,2630,8,60,1,60, - 1,60,3,60,2634,8,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,2643, - 8,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,2651,8,60,1,60,1,60,1,60, - 1,60,1,60,1,60,1,60,3,60,2660,8,60,1,60,1,60,1,60,1,60,1,60,1,60, - 1,60,3,60,2669,8,60,1,60,1,60,3,60,2673,8,60,1,60,1,60,1,60,1,60, - 1,60,3,60,2680,8,60,1,60,1,60,1,60,1,60,3,60,2686,8,60,1,60,1,60, - 3,60,2690,8,60,1,60,1,60,3,60,2694,8,60,1,60,1,60,1,60,3,60,2699, - 8,60,1,60,3,60,2702,8,60,1,60,1,60,3,60,2706,8,60,1,60,1,60,1,60, - 1,60,3,60,2712,8,60,1,61,1,61,1,61,1,61,1,61,3,61,2719,8,61,1,62, - 1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65, - 3,65,2735,8,65,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,68, - 5,68,2747,8,68,10,68,12,68,2750,9,68,1,69,1,69,1,69,1,69,1,69,1, - 69,1,69,3,69,2759,8,69,3,69,2761,8,69,1,70,4,70,2764,8,70,11,70, - 12,70,2765,1,71,1,71,3,71,2770,8,71,1,71,3,71,2773,8,71,1,71,1,71, - 1,71,1,71,3,71,2779,8,71,3,71,2781,8,71,1,72,1,72,1,72,1,72,1,72, - 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, - 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2809,8,72,1,73,1,73, - 1,73,1,74,1,74,1,74,5,74,2817,8,74,10,74,12,74,2820,9,74,1,75,1, - 75,1,75,1,75,1,75,1,76,1,76,1,76,5,76,2830,8,76,10,76,12,76,2833, - 9,76,1,77,1,77,1,77,1,77,3,77,2839,8,77,1,77,1,77,1,77,3,77,2844, - 8,77,1,77,1,77,3,77,2848,8,77,1,77,1,77,1,77,1,77,3,77,2854,8,77, - 1,77,1,77,1,77,3,77,2859,8,77,1,77,3,77,2862,8,77,3,77,2864,8,77, - 1,78,1,78,1,78,3,78,2869,8,78,1,79,1,79,3,79,2873,8,79,1,79,1,79, - 3,79,2877,8,79,1,79,1,79,3,79,2881,8,79,1,79,1,79,3,79,2885,8,79, - 1,79,3,79,2888,8,79,1,79,1,79,3,79,2892,8,79,1,79,1,79,1,79,1,79, - 1,79,1,79,3,79,2900,8,79,1,79,1,79,3,79,2904,8,79,1,79,1,79,3,79, - 2908,8,79,1,80,1,80,1,81,1,81,1,82,1,82,1,82,3,82,2917,8,82,1,83, - 1,83,1,83,1,83,1,83,3,83,2924,8,83,1,84,5,84,2927,8,84,10,84,12, - 84,2930,9,84,1,85,1,85,1,85,1,85,3,85,2936,8,85,1,85,1,85,1,85,3, - 85,2941,8,85,1,85,1,85,1,85,1,85,1,85,3,85,2948,8,85,1,85,1,85,1, - 85,3,85,2953,8,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1, - 85,1,85,1,85,1,85,1,85,1,85,1,85,3,85,2971,8,85,1,86,1,86,1,87,3, - 87,2976,8,87,1,87,1,87,1,87,1,88,1,88,1,89,1,89,1,89,5,89,2986,8, - 89,10,89,12,89,2989,9,89,1,90,1,90,3,90,2993,8,90,1,91,1,91,1,91, - 1,91,1,91,1,91,1,91,3,91,3002,8,91,1,92,1,92,1,92,5,92,3007,8,92, - 10,92,12,92,3010,9,92,1,93,1,93,1,94,1,94,3,94,3016,8,94,1,94,1, - 94,3,94,3020,8,94,1,94,1,94,1,94,3,94,3025,8,94,1,94,1,94,3,94,3029, - 8,94,1,94,3,94,3032,8,94,1,94,3,94,3035,8,94,1,94,3,94,3038,8,94, - 1,94,3,94,3041,8,94,1,94,3,94,3044,8,94,1,94,1,94,1,94,3,94,3049, - 8,94,1,94,3,94,3052,8,94,1,94,3,94,3055,8,94,1,94,3,94,3058,8,94, - 1,94,3,94,3061,8,94,1,94,3,94,3064,8,94,1,94,1,94,1,94,1,94,3,94, - 3070,8,94,1,94,1,94,3,94,3074,8,94,1,94,3,94,3077,8,94,1,94,3,94, - 3080,8,94,1,94,3,94,3083,8,94,1,94,3,94,3086,8,94,3,94,3088,8,94, - 1,95,1,95,1,95,1,95,1,95,1,95,1,95,3,95,3097,8,95,1,96,1,96,1,97, - 1,97,1,98,1,98,1,98,1,98,1,99,1,99,1,99,5,99,3110,8,99,10,99,12, - 99,3113,9,99,1,100,1,100,1,100,5,100,3118,8,100,10,100,12,100,3121, - 9,100,1,101,1,101,1,101,3,101,3126,8,101,1,102,1,102,3,102,3130, - 8,102,1,103,1,103,1,103,3,103,3135,8,103,1,103,3,103,3138,8,103, - 1,103,3,103,3141,8,103,1,103,1,103,3,103,3145,8,103,1,103,1,103, - 3,103,3149,8,103,1,103,1,103,1,104,1,104,1,104,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,3,105,3163,8,105,1,106,1,106,1,106,3,106, - 3168,8,106,1,106,1,106,1,107,5,107,3173,8,107,10,107,12,107,3176, - 9,107,1,108,1,108,3,108,3180,8,108,1,108,1,108,3,108,3184,8,108, - 1,108,3,108,3187,8,108,1,108,1,108,3,108,3191,8,108,1,108,3,108, - 3194,8,108,3,108,3196,8,108,1,109,1,109,1,109,1,109,1,109,3,109, - 3203,8,109,1,109,3,109,3206,8,109,1,109,1,109,3,109,3210,8,109,1, - 109,1,109,1,109,1,109,3,109,3216,8,109,1,109,3,109,3219,8,109,1, - 109,1,109,1,109,1,109,1,109,3,109,3226,8,109,1,109,1,109,1,109,1, - 109,1,109,1,109,1,109,3,109,3235,8,109,1,109,1,109,1,109,1,109,1, - 109,3,109,3242,8,109,1,109,1,109,1,109,3,109,3247,8,109,1,109,3, - 109,3250,8,109,1,109,3,109,3253,8,109,1,109,3,109,3256,8,109,1,110, - 1,110,3,110,3260,8,110,1,110,1,110,1,111,1,111,1,111,3,111,3267, - 8,111,1,112,1,112,1,112,3,112,3272,8,112,1,113,1,113,1,113,1,114, - 1,114,1,114,1,114,1,115,1,115,5,115,3283,8,115,10,115,12,115,3286, - 9,115,1,116,1,116,1,117,1,117,1,117,1,117,1,117,3,117,3295,8,117, - 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 3,118,3308,8,118,1,118,3,118,3311,8,118,1,118,3,118,3314,8,118,1, - 118,1,118,1,118,1,118,1,118,3,118,3321,8,118,1,118,1,118,1,118,1, - 118,1,118,1,118,3,118,3329,8,118,1,118,3,118,3332,8,118,1,118,3, - 118,3335,8,118,1,118,1,118,1,118,1,118,1,118,3,118,3342,8,118,1, - 118,1,118,3,118,3346,8,118,1,118,1,118,1,118,1,118,3,118,3352,8, - 118,1,118,3,118,3355,8,118,1,118,3,118,3358,8,118,1,118,3,118,3361, - 8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 3,118,3373,8,118,1,118,3,118,3376,8,118,1,118,3,118,3379,8,118,1, - 118,1,118,3,118,3383,8,118,1,119,1,119,1,119,1,120,1,120,1,120,1, - 120,1,121,1,121,1,121,1,121,1,122,1,122,1,122,5,122,3399,8,122,10, - 122,12,122,3402,9,122,1,123,1,123,1,123,5,123,3407,8,123,10,123, - 12,123,3410,9,123,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125, - 1,126,1,126,1,126,5,126,3423,8,126,10,126,12,126,3426,9,126,1,127, - 1,127,1,127,1,127,1,127,1,127,1,127,1,127,3,127,3436,8,127,1,128, - 1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129, - 1,129,3,129,3451,8,129,1,130,1,130,1,130,1,130,1,131,1,131,1,131, - 1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,3,132,3468,8,132, - 3,132,3470,8,132,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,135, - 1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,5,136,3489, - 8,136,10,136,12,136,3492,9,136,1,137,1,137,3,137,3496,8,137,1,137, - 3,137,3499,8,137,1,137,1,137,3,137,3503,8,137,1,137,3,137,3506,8, - 137,1,137,1,137,1,137,1,137,3,137,3512,8,137,1,137,3,137,3515,8, - 137,3,137,3517,8,137,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1, - 139,1,139,3,139,3528,8,139,1,140,1,140,1,140,1,140,1,140,1,140,1, - 140,3,140,3537,8,140,1,141,1,141,1,141,1,142,3,142,3543,8,142,1, - 142,3,142,3546,8,142,1,142,3,142,3549,8,142,1,143,1,143,1,143,1, - 143,1,143,1,144,1,144,1,144,1,144,1,145,1,145,1,145,3,145,3563,8, - 145,1,145,3,145,3566,8,145,1,145,3,145,3569,8,145,1,145,1,145,1, - 145,3,145,3574,8,145,1,145,1,145,1,145,1,146,1,146,1,146,3,146,3582, - 8,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,3,147,3591,8,147, - 1,147,1,147,3,147,3595,8,147,1,147,1,147,1,147,1,147,3,147,3601, - 8,147,1,148,1,148,3,148,3605,8,148,1,148,3,148,3608,8,148,1,148, - 3,148,3611,8,148,1,148,3,148,3614,8,148,1,148,3,148,3617,8,148,1, - 149,1,149,1,149,1,149,3,149,3623,8,149,1,150,1,150,3,150,3627,8, - 150,1,150,1,150,1,150,3,150,3632,8,150,1,150,1,150,1,150,1,150,3, - 150,3638,8,150,1,151,1,151,3,151,3642,8,151,1,151,3,151,3645,8,151, - 1,151,3,151,3648,8,151,1,151,3,151,3651,8,151,1,152,1,152,1,153, - 1,153,1,153,1,153,3,153,3659,8,153,1,153,1,153,3,153,3663,8,153, - 1,154,1,154,3,154,3667,8,154,1,154,1,154,3,154,3671,8,154,1,154, - 1,154,3,154,3675,8,154,1,155,1,155,1,155,3,155,3680,8,155,1,155, - 1,155,1,155,1,156,1,156,1,157,1,157,1,157,1,157,1,158,4,158,3692, - 8,158,11,158,12,158,3693,1,159,1,159,1,159,1,159,1,159,1,159,1,159, - 3,159,3703,8,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, - 1,159,1,159,1,159,1,159,1,159,1,159,1,159,3,159,3720,8,159,1,159, - 1,159,1,159,3,159,3725,8,159,1,159,3,159,3728,8,159,3,159,3730,8, - 159,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,3,161,3740,8, - 161,1,162,1,162,1,162,5,162,3745,8,162,10,162,12,162,3748,9,162, - 1,163,1,163,3,163,3752,8,163,1,163,3,163,3755,8,163,1,163,3,163, - 3758,8,163,1,163,1,163,1,163,1,163,1,163,3,163,3765,8,163,1,163, - 3,163,3768,8,163,3,163,3770,8,163,1,164,1,164,1,165,1,165,3,165, - 3776,8,165,1,166,1,166,1,166,1,167,1,167,1,167,1,167,3,167,3785, - 8,167,1,168,1,168,1,169,1,169,1,170,1,170,1,170,1,170,3,170,3795, - 8,170,1,170,1,170,1,170,3,170,3800,8,170,1,171,1,171,1,171,1,172, - 1,172,1,172,3,172,3808,8,172,1,172,1,172,3,172,3812,8,172,1,172, - 1,172,1,173,5,173,3817,8,173,10,173,12,173,3820,9,173,1,174,1,174, - 1,174,1,174,1,174,1,174,1,174,3,174,3829,8,174,1,175,1,175,1,175, - 1,175,1,175,1,175,1,176,5,176,3838,8,176,10,176,12,176,3841,9,176, - 1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,3,178,3948,8,178,1,179,1,179, - 1,179,1,179,1,179,1,179,3,179,3956,8,179,1,179,3,179,3959,8,179, - 1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,3,180,3969,8,180, - 1,181,4,181,3972,8,181,11,181,12,181,3973,1,182,1,182,1,183,1,183, - 1,183,1,183,1,183,1,183,3,183,3984,8,183,1,183,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,3,183,3995,8,183,1,184,1,184,1,184, - 1,184,1,184,1,185,1,185,1,185,5,185,4005,8,185,10,185,12,185,4008, - 9,185,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,5,187,4018, - 8,187,10,187,12,187,4021,9,187,1,188,1,188,1,188,1,188,1,188,1,188, - 1,188,3,188,4030,8,188,1,189,1,189,1,189,1,190,1,190,1,191,1,191, - 1,192,1,192,1,192,3,192,4042,8,192,1,192,1,192,3,192,4046,8,192, - 1,192,3,192,4049,8,192,1,192,1,192,1,192,1,192,1,192,3,192,4056, - 8,192,1,193,1,193,1,193,1,194,1,194,1,194,3,194,4064,8,194,1,195, - 1,195,1,196,1,196,1,196,1,196,1,196,1,196,3,196,4074,8,196,3,196, - 4076,8,196,1,197,1,197,1,197,1,197,3,197,4082,8,197,1,197,1,197, - 1,197,3,197,4087,8,197,1,197,1,197,3,197,4091,8,197,1,197,1,197, - 1,197,3,197,4096,8,197,1,197,1,197,1,197,1,197,3,197,4102,8,197, - 1,197,1,197,1,197,1,197,1,197,3,197,4109,8,197,1,197,1,197,1,197, - 1,197,3,197,4115,8,197,3,197,4117,8,197,1,198,1,198,1,198,1,198, - 1,198,3,198,4124,8,198,1,198,1,198,1,198,1,198,1,198,1,198,3,198, - 4132,8,198,1,199,1,199,1,199,3,199,4137,8,199,1,200,1,200,1,200, - 1,200,1,200,1,201,1,201,1,201,1,201,3,201,4148,8,201,1,201,1,201, - 1,201,1,201,1,201,3,201,4155,8,201,1,202,1,202,3,202,4159,8,202, - 1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,204,1,204, - 1,204,1,204,1,204,1,204,3,204,4176,8,204,1,204,3,204,4179,8,204, - 1,204,3,204,4182,8,204,1,204,3,204,4185,8,204,1,204,3,204,4188,8, - 204,1,205,1,205,1,205,1,205,1,205,1,205,3,205,4196,8,205,1,205,3, - 205,4199,8,205,1,205,3,205,4202,8,205,1,206,1,206,1,206,1,206,3, - 206,4208,8,206,1,206,1,206,1,207,1,207,5,207,4214,8,207,10,207,12, - 207,4217,9,207,1,207,3,207,4220,8,207,1,207,1,207,1,207,1,207,1, - 207,1,207,1,207,1,207,1,207,1,207,3,207,4232,8,207,1,207,1,207,1, - 207,1,207,3,207,4238,8,207,1,208,3,208,4241,8,208,1,208,1,208,1, - 208,3,208,4246,8,208,1,208,1,208,3,208,4250,8,208,1,208,1,208,1, - 208,1,208,1,208,3,208,4257,8,208,1,208,1,208,1,208,1,208,1,208,1, - 208,1,208,1,208,1,208,3,208,4268,8,208,1,209,1,209,1,209,1,209,1, - 209,1,210,1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,212, - 1,212,1,212,1,213,1,213,1,213,1,213,3,213,4291,8,213,1,214,1,214, - 1,214,1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,217,1,217,1,218,1,218,3,218,4311,8,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,3,218,4320,8,218,1,218,3,218,4323,8,218, - 1,218,3,218,4326,8,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, - 1,218,3,218,4336,8,218,1,218,3,218,4339,8,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,3,218,4348,8,218,1,218,1,218,3,218,4352, - 8,218,1,218,3,218,4355,8,218,1,218,1,218,1,218,1,218,1,218,1,218, - 3,218,4363,8,218,1,219,1,219,1,219,1,219,3,219,4369,8,219,1,220, - 1,220,3,220,4373,8,220,1,220,1,220,1,221,1,221,1,222,1,222,1,222, - 5,222,4382,8,222,10,222,12,222,4385,9,222,1,223,1,223,1,223,1,223, - 1,223,1,223,1,223,3,223,4394,8,223,1,224,1,224,1,224,1,225,4,225, - 4400,8,225,11,225,12,225,4401,1,226,1,226,1,226,3,226,4407,8,226, - 1,226,1,226,1,227,1,227,1,228,1,228,1,229,1,229,1,230,1,230,3,230, - 4419,8,230,1,230,1,230,1,231,1,231,1,232,1,232,1,233,1,233,1,233, - 1,233,1,233,1,234,1,234,1,234,1,234,3,234,4436,8,234,1,235,1,235, - 3,235,4440,8,235,1,235,1,235,5,235,4444,8,235,10,235,12,235,4447, - 9,235,1,236,1,236,1,236,1,236,3,236,4453,8,236,1,237,1,237,1,237, - 1,238,5,238,4459,8,238,10,238,12,238,4462,9,238,1,239,1,239,1,239, - 1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,3,239,4475,8,239, - 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, - 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, - 1,240,1,240,3,240,4501,8,240,1,241,1,241,1,241,5,241,4506,8,241, - 10,241,12,241,4509,9,241,1,242,1,242,1,242,1,242,1,242,1,242,1,243, - 1,243,1,243,5,243,4520,8,243,10,243,12,243,4523,9,243,1,244,1,244, - 1,244,1,244,1,244,1,244,1,245,1,245,3,245,4533,8,245,1,245,3,245, - 4536,8,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246, - 1,247,1,247,3,247,4549,8,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,3,247,4558,8,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,3,247,4583,8,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,1,247,3,247,4594,8,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,1,247,3,247,4636,8,247,1,247,1,247,1,247, - 1,247,1,247,1,247,3,247,4644,8,247,1,247,1,247,1,247,1,247,3,247, - 4650,8,247,1,248,1,248,1,248,1,248,1,249,1,249,1,249,5,249,4659, - 8,249,10,249,12,249,4662,9,249,1,250,1,250,1,250,3,250,4667,8,250, - 1,251,1,251,1,251,1,251,1,251,1,251,3,251,4675,8,251,1,252,1,252, - 1,252,1,252,1,253,1,253,1,253,5,253,4684,8,253,10,253,12,253,4687, - 9,253,1,254,1,254,1,254,1,254,1,255,1,255,1,256,1,256,1,256,5,256, - 4698,8,256,10,256,12,256,4701,9,256,1,257,1,257,1,257,1,257,1,257, - 1,257,3,257,4709,8,257,1,257,1,257,1,257,3,257,4714,8,257,1,257, - 1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,3,257,4725,8,257, - 1,258,1,258,1,258,1,258,1,259,1,259,1,259,1,259,1,259,3,259,4736, - 8,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,4744,8,259,1,259, - 1,259,1,259,1,260,1,260,1,260,5,260,4752,8,260,10,260,12,260,4755, - 9,260,1,261,1,261,1,261,1,261,3,261,4761,8,261,1,261,3,261,4764, - 8,261,1,261,1,261,1,261,1,261,3,261,4770,8,261,1,261,3,261,4773, - 8,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, - 1,261,1,261,1,261,3,261,4788,8,261,1,262,1,262,1,263,1,263,1,263, - 1,264,1,264,1,264,1,264,1,264,1,264,3,264,4801,8,264,1,265,1,265, - 1,266,1,266,1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,3,267,4830,8,267,1,268,1,268,1,268,5,268,4835, - 8,268,10,268,12,268,4838,9,268,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,3,269,4852,8,269,1,270,1,270, - 1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,3,271,4864,8,271, - 1,271,1,271,3,271,4868,8,271,1,271,1,271,1,271,3,271,4873,8,271, - 1,271,1,271,3,271,4877,8,271,1,271,1,271,1,271,3,271,4882,8,271, - 1,271,1,271,3,271,4886,8,271,1,271,1,271,1,271,1,271,3,271,4892, - 8,271,1,271,1,271,3,271,4896,8,271,1,271,1,271,1,271,3,271,4901, - 8,271,1,271,1,271,3,271,4905,8,271,1,271,1,271,1,271,1,271,3,271, - 4911,8,271,1,271,1,271,3,271,4915,8,271,1,271,1,271,1,271,3,271, - 4920,8,271,1,271,1,271,3,271,4924,8,271,1,271,1,271,1,271,3,271, - 4929,8,271,1,271,1,271,3,271,4933,8,271,1,271,1,271,1,271,3,271, - 4938,8,271,1,271,1,271,3,271,4942,8,271,1,271,1,271,1,271,1,271, - 1,271,3,271,4949,8,271,1,271,1,271,3,271,4953,8,271,1,271,1,271, - 1,271,1,271,1,271,3,271,4960,8,271,1,271,1,271,3,271,4964,8,271, - 1,271,1,271,1,271,1,271,1,271,3,271,4971,8,271,1,271,1,271,3,271, - 4975,8,271,1,271,1,271,1,271,1,271,1,271,3,271,4982,8,271,1,271, - 1,271,3,271,4986,8,271,1,271,1,271,1,271,1,271,3,271,4992,8,271, - 1,271,1,271,3,271,4996,8,271,1,271,1,271,1,271,1,271,3,271,5002, - 8,271,1,271,1,271,3,271,5006,8,271,1,271,1,271,1,271,3,271,5011, - 8,271,1,271,1,271,3,271,5015,8,271,1,271,1,271,1,271,1,271,1,271, - 3,271,5022,8,271,1,271,1,271,3,271,5026,8,271,1,271,1,271,3,271, - 5030,8,271,1,271,1,271,3,271,5034,8,271,1,271,1,271,3,271,5038,8, - 271,1,271,1,271,1,271,3,271,5043,8,271,1,271,1,271,3,271,5047,8, - 271,1,271,1,271,1,271,3,271,5052,8,271,1,271,1,271,3,271,5056,8, - 271,1,271,1,271,1,271,3,271,5061,8,271,1,271,1,271,3,271,5065,8, - 271,1,271,1,271,1,271,3,271,5070,8,271,1,271,1,271,1,271,1,271,3, - 271,5076,8,271,1,271,1,271,1,271,3,271,5081,8,271,1,271,1,271,1, - 271,1,271,3,271,5087,8,271,1,271,1,271,1,271,3,271,5092,8,271,1, - 271,1,271,1,271,1,271,3,271,5098,8,271,1,271,1,271,1,271,3,271,5103, - 8,271,1,271,1,271,3,271,5107,8,271,1,271,1,271,1,271,3,271,5112, - 8,271,1,271,1,271,3,271,5116,8,271,1,271,1,271,1,271,1,271,3,271, - 5122,8,271,1,271,1,271,3,271,5126,8,271,1,271,1,271,1,271,3,271, - 5131,8,271,1,271,1,271,1,271,1,271,1,271,1,271,3,271,5139,8,271, - 1,271,1,271,1,271,1,271,3,271,5145,8,271,1,271,1,271,1,271,1,271, - 3,271,5151,8,271,1,271,1,271,1,271,1,271,3,271,5157,8,271,1,271, - 1,271,1,271,1,271,3,271,5163,8,271,1,271,1,271,1,271,1,271,1,271, - 3,271,5170,8,271,1,271,1,271,1,271,3,271,5175,8,271,1,271,1,271, - 3,271,5179,8,271,1,271,1,271,1,271,3,271,5184,8,271,1,271,1,271, - 3,271,5188,8,271,1,271,1,271,1,271,3,271,5193,8,271,1,271,1,271, - 1,271,1,271,3,271,5199,8,271,1,271,1,271,1,271,1,271,1,271,3,271, - 5206,8,271,1,271,1,271,1,271,3,271,5211,8,271,1,271,1,271,1,271, - 1,271,1,271,3,271,5218,8,271,1,271,1,271,1,271,1,271,1,271,1,271, - 1,271,1,271,3,271,5228,8,271,1,271,1,271,3,271,5232,8,271,1,271, - 1,271,1,271,1,271,3,271,5238,8,271,3,271,5240,8,271,1,272,1,272, - 1,272,5,272,5245,8,272,10,272,12,272,5248,9,272,1,273,3,273,5251, - 8,273,1,273,1,273,1,273,3,273,5256,8,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,3,273,5274,8,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274, - 1,274,1,274,1,274,1,274,1,274,1,274,3,274,5289,8,274,1,274,1,274, - 1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274, - 1,274,1,274,1,274,3,274,5307,8,274,1,275,1,275,1,276,1,276,1,276, - 5,276,5314,8,276,10,276,12,276,5317,9,276,1,277,1,277,1,277,1,277, - 1,278,1,278,3,278,5325,8,278,1,279,1,279,3,279,5329,8,279,1,280, - 1,280,4,280,5333,8,280,11,280,12,280,5334,1,281,1,281,1,281,5,281, - 5340,8,281,10,281,12,281,5343,9,281,1,282,1,282,3,282,5347,8,282, - 1,282,1,282,1,282,5,282,5352,8,282,10,282,12,282,5355,9,282,1,282, - 1,282,3,282,5359,8,282,1,282,3,282,5362,8,282,1,283,3,283,5365,8, - 283,1,283,1,283,3,283,5369,8,283,1,284,1,284,1,284,1,284,1,284,1, - 284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,3,284,5440, - 8,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,284,1,284,1,284,1,284,1,284,1,284,1,284,3,284,5536,8,284,1,285, - 1,285,3,285,5540,8,285,1,286,1,286,1,286,3,286,5545,8,286,1,286, - 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,3,286,5556,8,286, - 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,3,286,5567, - 8,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,3,286, - 5578,8,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, - 3,286,5589,8,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, - 1,286,3,286,5600,8,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, - 1,286,1,286,1,286,3,286,5612,8,286,1,286,1,286,1,286,1,286,1,286, - 1,286,1,286,1,286,1,286,3,286,5623,8,286,1,286,1,286,1,286,1,286, - 1,286,1,286,1,286,1,286,1,286,3,286,5634,8,286,1,286,1,286,1,286, - 1,286,1,286,1,286,1,286,1,286,3,286,5644,8,286,1,286,1,286,1,286, - 1,286,1,286,3,286,5651,8,286,1,287,1,287,1,287,1,288,1,288,3,288, - 5658,8,288,1,289,1,289,1,289,1,289,3,289,5664,8,289,1,290,1,290, - 1,290,1,290,1,290,1,290,3,290,5672,8,290,1,290,1,290,1,290,3,290, - 5677,8,290,1,290,1,290,1,290,3,290,5682,8,290,1,290,1,290,1,290, - 3,290,5687,8,290,1,290,1,290,1,290,1,290,3,290,5693,8,290,1,290, - 1,290,1,290,1,290,1,290,3,290,5700,8,290,1,290,1,290,1,290,1,290, - 3,290,5706,8,290,1,290,1,290,1,290,1,290,3,290,5712,8,290,1,290, - 1,290,1,290,3,290,5717,8,290,1,290,1,290,1,290,1,290,3,290,5723, - 8,290,1,290,1,290,1,290,1,290,1,290,3,290,5730,8,290,1,290,1,290, - 1,290,3,290,5735,8,290,1,290,1,290,1,290,1,290,3,290,5741,8,290, - 1,290,1,290,1,290,1,290,1,290,3,290,5748,8,290,1,290,3,290,5751, - 8,290,1,291,1,291,1,292,1,292,1,293,1,293,1,293,1,293,1,293,1,293, - 1,293,3,293,5764,8,293,1,294,1,294,1,294,1,294,1,294,1,294,1,294, - 3,294,5773,8,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294, - 1,294,1,294,3,294,5785,8,294,3,294,5787,8,294,1,295,1,295,1,295, - 1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295,1,295, - 1,295,1,295,3,295,5805,8,295,1,296,1,296,1,296,5,296,5810,8,296, - 10,296,12,296,5813,9,296,1,297,1,297,1,298,1,298,1,298,5,298,5820, - 8,298,10,298,12,298,5823,9,298,1,299,1,299,3,299,5827,8,299,1,299, - 1,299,3,299,5831,8,299,1,299,1,299,3,299,5835,8,299,1,299,1,299, - 3,299,5839,8,299,3,299,5841,8,299,1,300,1,300,1,300,1,300,1,300, - 1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, - 1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, - 1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, - 1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300, - 1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,3,300,5901, - 8,300,1,301,1,301,1,301,5,301,5906,8,301,10,301,12,301,5909,9,301, - 1,302,1,302,1,302,3,302,5914,8,302,1,303,1,303,1,303,1,303,1,304, - 1,304,1,304,1,304,1,304,3,304,5925,8,304,1,304,3,304,5928,8,304, - 1,305,1,305,1,305,1,305,1,305,3,305,5935,8,305,1,305,3,305,5938, - 8,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305,3,305,5948, - 8,305,1,305,3,305,5951,8,305,3,305,5953,8,305,1,306,1,306,1,306, - 1,306,1,307,1,307,1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308, - 1,309,5,309,5970,8,309,10,309,12,309,5973,9,309,1,310,1,310,1,310, - 1,310,1,310,1,310,1,310,1,310,1,310,3,310,5984,8,310,1,311,1,311, - 1,311,1,311,1,311,1,311,1,311,3,311,5993,8,311,1,311,1,311,1,311, - 1,311,1,311,1,311,1,311,3,311,6002,8,311,1,311,1,311,1,311,1,311, - 1,311,1,311,1,311,1,311,1,311,1,311,3,311,6014,8,311,3,311,6016, - 8,311,1,312,1,312,1,313,1,313,3,313,6022,8,313,1,313,1,313,3,313, - 6026,8,313,1,313,3,313,6029,8,313,1,313,3,313,6032,8,313,1,313,1, - 313,1,313,3,313,6037,8,313,1,313,1,313,1,313,1,313,3,313,6043,8, - 313,1,313,3,313,6046,8,313,1,313,3,313,6049,8,313,1,313,3,313,6052, - 8,313,1,313,3,313,6055,8,313,1,314,1,314,1,315,1,315,1,316,1,316, - 1,317,1,317,1,317,1,318,1,318,1,318,5,318,6069,8,318,10,318,12,318, - 6072,9,318,1,319,3,319,6075,8,319,1,319,3,319,6078,8,319,1,319,3, - 319,6081,8,319,1,319,3,319,6084,8,319,1,319,3,319,6087,8,319,1,319, - 1,319,1,319,3,319,6092,8,319,1,319,3,319,6095,8,319,3,319,6097,8, - 319,1,320,1,320,1,320,1,320,1,320,1,320,1,320,1,320,1,320,1,320, - 1,320,3,320,6110,8,320,1,321,1,321,1,321,1,321,1,321,1,322,1,322, - 1,322,5,322,6120,8,322,10,322,12,322,6123,9,322,1,323,1,323,1,323, - 1,324,1,324,1,325,1,325,1,326,1,326,1,326,1,326,3,326,6136,8,326, - 1,327,1,327,3,327,6140,8,327,1,327,1,327,1,327,1,327,3,327,6146, - 8,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,327,3,327,6156, - 8,327,3,327,6158,8,327,1,327,1,327,1,327,3,327,6163,8,327,1,328, - 1,328,1,328,1,328,5,328,6169,8,328,10,328,12,328,6172,9,328,1,328, - 1,328,1,329,1,329,1,329,1,330,1,330,3,330,6181,8,330,1,330,1,330, - 1,331,1,331,1,331,5,331,6188,8,331,10,331,12,331,6191,9,331,1,332, - 1,332,1,332,5,332,6196,8,332,10,332,12,332,6199,9,332,1,333,1,333, - 1,333,1,333,1,333,1,333,3,333,6207,8,333,3,333,6209,8,333,1,334, - 1,334,1,334,5,334,6214,8,334,10,334,12,334,6217,9,334,1,335,1,335, - 1,335,1,335,1,335,1,335,3,335,6225,8,335,3,335,6227,8,335,1,336, - 1,336,1,336,5,336,6232,8,336,10,336,12,336,6235,9,336,1,337,1,337, - 1,337,1,337,1,337,1,337,3,337,6243,8,337,3,337,6245,8,337,1,338, - 1,338,3,338,6249,8,338,1,338,1,338,1,339,1,339,1,339,5,339,6256, - 8,339,10,339,12,339,6259,9,339,1,340,1,340,3,340,6263,8,340,1,340, - 1,340,1,340,1,340,3,340,6269,8,340,1,340,1,340,1,340,3,340,6274, - 8,340,1,341,1,341,3,341,6278,8,341,1,341,1,341,1,341,3,341,6283, - 8,341,1,342,1,342,1,343,1,343,1,344,1,344,1,344,1,344,1,344,1,344, - 1,344,1,344,1,344,1,344,1,344,1,344,3,344,6301,8,344,1,345,1,345, - 1,345,3,345,6306,8,345,1,346,1,346,1,347,1,347,1,347,1,347,1,347, - 1,347,1,347,1,347,1,347,1,347,1,347,3,347,6321,8,347,1,347,1,347, - 1,348,1,348,1,348,5,348,6328,8,348,10,348,12,348,6331,9,348,1,349, - 1,349,1,349,1,350,1,350,1,350,5,350,6339,8,350,10,350,12,350,6342, - 9,350,1,351,4,351,6345,8,351,11,351,12,351,6346,1,352,1,352,1,352, - 1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352, - 1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352, - 1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,3,352, - 6384,8,352,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353, - 1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,3,353,6404, - 8,353,1,353,1,353,1,353,1,353,1,353,3,353,6411,8,353,1,354,1,354, - 1,354,1,354,1,354,1,354,1,354,5,354,6420,8,354,10,354,12,354,6423, - 9,354,1,355,1,355,1,355,1,356,1,356,1,356,1,357,1,357,1,357,5,357, - 6434,8,357,10,357,12,357,6437,9,357,1,358,1,358,1,358,1,358,3,358, - 6443,8,358,1,359,1,359,1,359,1,359,1,359,1,359,3,359,6451,8,359, - 1,360,4,360,6454,8,360,11,360,12,360,6455,1,361,1,361,1,362,1,362, - 1,362,3,362,6463,8,362,1,362,1,362,3,362,6467,8,362,1,362,1,362, - 1,362,3,362,6472,8,362,1,362,1,362,3,362,6476,8,362,1,362,1,362, - 1,362,3,362,6481,8,362,1,362,1,362,3,362,6485,8,362,3,362,6487,8, - 362,1,363,1,363,1,363,3,363,6492,8,363,1,363,1,363,3,363,6496,8, - 363,1,364,1,364,1,364,3,364,6501,8,364,1,364,1,364,3,364,6505,8, - 364,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365, - 1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,365, - 1,365,3,365,6529,8,365,1,366,1,366,1,366,5,366,6534,8,366,10,366, - 12,366,6537,9,366,1,366,1,366,1,367,1,367,1,367,5,367,6544,8,367, - 10,367,12,367,6547,9,367,1,368,1,368,1,368,1,369,1,369,1,369,1,370, - 4,370,6556,8,370,11,370,12,370,6557,1,371,1,371,1,371,3,371,6563, - 8,371,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,3,372,6576,8,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,3,372,6588,8,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,3,372,6600,8,372,3,372,6602,8,372, - 1,373,1,373,1,373,1,373,3,373,6608,8,373,1,374,1,374,1,374,1,375, - 1,375,3,375,6615,8,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375, - 1,375,1,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376, - 1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376, - 1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376, - 1,376,1,376,1,376,3,376,6660,8,376,1,377,1,377,1,377,1,377,1,377, - 1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377, - 3,377,6678,8,377,1,378,1,378,3,378,6682,8,378,1,378,1,378,1,378, - 3,378,6687,8,378,1,378,3,378,6690,8,378,1,379,1,379,3,379,6694,8, - 379,1,379,1,379,1,379,3,379,6699,8,379,1,379,1,379,1,379,3,379,6704, - 8,379,1,379,3,379,6707,8,379,1,380,1,380,1,380,5,380,6712,8,380, - 10,380,12,380,6715,9,380,1,381,1,381,1,382,1,382,1,382,1,382,1,382, - 1,382,1,382,1,382,1,382,1,382,1,382,1,382,3,382,6731,8,382,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,3,383,6802,8,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,3,383,6833,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,3,383,6887,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,3,383,6897,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,3,383,6907,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,3,383,6918,8,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,3,383,6928,8,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,3,383,6939,8,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,3,383,6949,8,383,1,383,1,383,1,383,3,383,6954, - 8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,6963,8,383, - 1,383,1,383,1,383,3,383,6968,8,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,3,383,6978,8,383,1,383,1,383,1,383,3,383,6983, - 8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,6992,8,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 3,383,7005,8,383,1,383,1,383,1,383,3,383,7010,8,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7122, - 8,383,3,383,7124,8,383,1,384,1,384,1,384,1,385,1,385,1,385,1,385, - 3,385,7133,8,385,1,385,1,385,1,385,1,385,1,385,1,385,1,385,1,385, - 1,385,3,385,7144,8,385,1,385,1,385,1,385,1,385,1,385,1,385,1,385, - 1,385,1,385,3,385,7155,8,385,1,385,1,385,1,385,1,385,1,385,1,385, - 1,385,1,385,1,385,1,385,1,385,3,385,7168,8,385,1,385,1,385,1,385, - 1,385,1,385,1,385,1,385,1,385,1,385,1,385,3,385,7180,8,385,1,385, - 1,385,1,385,1,385,1,385,1,385,1,385,1,385,1,385,3,385,7191,8,385, - 1,385,1,385,1,385,1,385,1,385,3,385,7198,8,385,1,386,1,386,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,3,387,7288,8,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,3,387,7341,8,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,3,387,7351,8,387,1,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,3,387,7362,8,387, - 1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,3,387,7373, - 8,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387,1,387, - 1,387,1,387,3,387,7387,8,387,1,388,1,388,1,388,1,388,1,388,1,388, - 1,388,1,388,1,389,1,389,1,389,5,389,7400,8,389,10,389,12,389,7403, - 9,389,1,390,1,390,1,390,1,390,1,390,1,390,1,390,1,390,3,390,7413, - 8,390,1,391,1,391,1,391,1,391,1,391,3,391,7420,8,391,1,392,1,392, - 1,392,1,392,1,392,1,392,1,392,1,392,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,3,393,7474,8,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,3,393,7615,8,393,1,394,1,394,1,394, - 1,394,3,394,7621,8,394,1,394,3,394,7624,8,394,1,395,1,395,1,396, - 1,396,1,396,1,396,1,396,1,396,3,396,7634,8,396,1,397,1,397,1,397, - 1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397, - 1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397, - 1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397,1,397, - 1,397,1,397,3,397,7674,8,397,1,398,1,398,1,398,1,398,1,398,1,398, - 1,398,1,398,3,398,7684,8,398,1,399,1,399,1,399,5,399,7689,8,399, - 10,399,12,399,7692,9,399,1,400,1,400,1,401,1,401,1,401,1,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401, - 1,401,1,401,3,401,7714,8,401,1,401,1,401,1,401,1,401,1,401,1,401, - 1,401,3,401,7723,8,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401, - 3,401,7732,8,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401, - 7741,8,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401, - 3,401,7774,8,401,1,402,1,402,3,402,7778,8,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,3,402,7788,8,402,1,402,1,402,3,402, - 7792,8,402,1,402,1,402,1,403,1,403,1,403,1,403,1,403,1,403,3,403, - 7802,8,403,1,404,3,404,7805,8,404,1,404,1,404,3,404,7809,8,404,5, - 404,7811,8,404,10,404,12,404,7814,9,404,1,405,1,405,1,405,1,405, - 1,405,3,405,7821,8,405,1,406,1,406,1,407,1,407,1,408,1,408,1,409, - 1,409,1,409,3,409,7832,8,409,1,410,1,410,1,410,1,411,1,411,1,411, - 1,412,1,412,1,412,1,412,3,412,7844,8,412,1,413,1,413,3,413,7848, - 8,413,1,413,3,413,7851,8,413,1,413,1,413,3,413,7855,8,413,1,413, - 3,413,7858,8,413,1,413,1,413,1,413,3,413,7863,8,413,1,413,1,413, - 3,413,7867,8,413,1,413,3,413,7870,8,413,1,413,1,413,1,413,1,413, - 3,413,7876,8,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413, - 1,413,3,413,7887,8,413,1,413,3,413,7890,8,413,1,413,1,413,1,413, - 1,413,1,413,3,413,7897,8,413,1,413,1,413,3,413,7901,8,413,1,413, - 1,413,1,413,3,413,7906,8,413,1,413,3,413,7909,8,413,3,413,7911,8, - 413,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, - 1,415,1,415,3,415,7925,8,415,1,416,1,416,3,416,7929,8,416,1,416, - 5,416,7932,8,416,10,416,12,416,7935,9,416,1,417,1,417,1,418,1,418, - 3,418,7941,8,418,1,418,1,418,1,419,1,419,1,419,3,419,7948,8,419, - 1,419,3,419,7951,8,419,1,419,1,419,1,419,3,419,7956,8,419,1,419, - 3,419,7959,8,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,3,419, - 7968,8,419,3,419,7970,8,419,1,419,1,419,1,419,3,419,7975,8,419,1, - 420,1,420,3,420,7979,8,420,1,420,1,420,1,420,1,421,1,421,1,421,1, - 422,1,422,1,422,1,422,3,422,7991,8,422,1,422,3,422,7994,8,422,1, - 423,1,423,1,424,4,424,7999,8,424,11,424,12,424,8000,1,425,1,425, - 3,425,8005,8,425,1,425,1,425,1,425,3,425,8010,8,425,1,426,1,426, - 1,426,1,426,1,426,1,426,1,426,1,426,3,426,8020,8,426,1,427,1,427, - 1,428,1,428,1,428,1,428,1,428,1,428,3,428,8030,8,428,1,428,3,428, - 8033,8,428,1,428,3,428,8036,8,428,3,428,8038,8,428,1,429,1,429,1, - 429,1,429,3,429,8044,8,429,1,430,1,430,1,430,5,430,8049,8,430,10, - 430,12,430,8052,9,430,1,431,1,431,1,432,1,432,1,432,1,432,1,432, - 1,432,1,433,1,433,1,433,1,433,1,433,1,434,1,434,1,434,1,434,3,434, - 8071,8,434,1,434,1,434,1,434,1,435,1,435,1,435,1,435,1,435,1,435, - 1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,3,435,8091, - 8,435,1,435,1,435,3,435,8095,8,435,1,435,1,435,1,435,3,435,8100, - 8,435,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,438, - 1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438, - 1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438, - 1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438, - 1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438, - 1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,438, - 1,438,1,438,3,438,8169,8,438,1,438,1,438,1,438,3,438,8174,8,438, - 1,439,1,439,1,440,1,440,3,440,8180,8,440,1,440,1,440,1,440,1,440, - 1,440,1,440,1,440,1,440,1,440,1,441,1,441,3,441,8193,8,441,1,441, - 1,441,3,441,8197,8,441,1,441,1,441,3,441,8201,8,441,1,441,1,441, - 1,441,1,441,3,441,8207,8,441,3,441,8209,8,441,1,442,1,442,1,442, - 1,442,5,442,8215,8,442,10,442,12,442,8218,9,442,1,442,1,442,1,443, - 1,443,1,443,1,444,1,444,3,444,8227,8,444,1,444,3,444,8230,8,444, - 1,444,3,444,8233,8,444,1,444,3,444,8236,8,444,1,444,3,444,8239,8, - 444,1,444,1,444,1,444,1,444,1,444,3,444,8246,8,444,1,444,3,444,8249, - 8,444,3,444,8251,8,444,1,445,1,445,3,445,8255,8,445,1,445,3,445, - 8258,8,445,1,445,1,445,1,445,1,445,1,445,3,445,8265,8,445,3,445, - 8267,8,445,1,446,1,446,1,446,5,446,8272,8,446,10,446,12,446,8275, - 9,446,1,447,1,447,1,448,1,448,3,448,8281,8,448,1,449,1,449,3,449, - 8285,8,449,1,450,1,450,3,450,8289,8,450,1,451,1,451,1,452,1,452, - 1,452,5,452,8296,8,452,10,452,12,452,8299,9,452,1,453,1,453,1,453, - 3,453,8304,8,453,1,454,1,454,3,454,8308,8,454,1,455,1,455,3,455, - 8312,8,455,1,456,1,456,1,456,3,456,8317,8,456,1,457,1,457,1,458, - 1,458,1,459,1,459,1,459,1,459,1,460,1,460,3,460,8329,8,460,1,461, - 1,461,1,461,5,461,8334,8,461,10,461,12,461,8337,9,461,1,462,1,462, - 1,463,1,463,1,463,1,463,1,463,3,463,8346,8,463,1,463,1,463,1,463, - 1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,3,463,8359,8,463, - 1,464,1,464,1,464,1,464,1,464,1,464,1,464,1,464,1,464,3,464,8370, - 8,464,1,465,1,465,1,465,5,465,8375,8,465,10,465,12,465,8378,9,465, - 1,466,1,466,3,466,8382,8,466,1,467,1,467,3,467,8386,8,467,1,468, - 1,468,3,468,8390,8,468,1,469,1,469,1,469,3,469,8395,8,469,1,469, - 1,469,1,469,1,470,1,470,1,470,1,470,1,471,1,471,1,471,1,471,3,471, - 8408,8,471,1,472,1,472,1,472,3,472,8413,8,472,1,472,1,472,3,472, - 8417,8,472,1,472,1,472,3,472,8421,8,472,1,472,1,472,1,472,1,472, - 1,472,3,472,8428,8,472,1,472,3,472,8431,8,472,3,472,8433,8,472,1, - 473,1,473,1,473,1,473,1,474,1,474,3,474,8441,8,474,1,474,1,474,3, - 474,8445,8,474,1,475,3,475,8448,8,475,1,475,1,475,1,475,1,475,1, - 475,3,475,8455,8,475,1,475,3,475,8458,8,475,1,476,1,476,1,476,3, - 476,8463,8,476,1,477,1,477,1,477,1,477,3,477,8469,8,477,1,477,1, - 477,1,477,1,477,3,477,8475,8,477,1,477,1,477,3,477,8479,8,477,1, - 478,1,478,1,479,1,479,1,479,5,479,8486,8,479,10,479,12,479,8489, - 9,479,1,480,1,480,1,480,1,481,1,481,1,481,3,481,8497,8,481,1,481, - 1,481,1,481,1,481,1,481,3,481,8504,8,481,1,481,3,481,8507,8,481, - 1,482,1,482,1,482,1,482,3,482,8513,8,482,1,482,1,482,1,482,3,482, - 8518,8,482,1,483,1,483,1,483,1,484,3,484,8524,8,484,1,484,1,484, - 1,484,1,484,3,484,8530,8,484,1,484,3,484,8533,8,484,1,484,3,484, - 8536,8,484,1,485,1,485,1,485,1,486,1,486,3,486,8543,8,486,1,486, - 1,486,3,486,8547,8,486,1,486,3,486,8550,8,486,1,487,1,487,1,487, - 1,487,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,3,488, - 8565,8,488,1,488,3,488,8568,8,488,1,489,1,489,1,490,1,490,1,490, - 3,490,8575,8,490,1,491,3,491,8578,8,491,1,491,1,491,1,491,1,491, - 1,491,3,491,8585,8,491,1,491,3,491,8588,8,491,1,491,3,491,8591,8, - 491,1,492,1,492,1,492,5,492,8596,8,492,10,492,12,492,8599,9,492, - 1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,3,493,8610, - 8,493,1,493,1,493,1,493,1,493,1,493,3,493,8617,8,493,3,493,8619, - 8,493,1,494,1,494,1,494,1,495,1,495,1,495,5,495,8627,8,495,10,495, - 12,495,8630,9,495,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496, - 1,497,1,497,1,498,1,498,1,498,1,498,1,498,5,498,8647,8,498,10,498, - 12,498,8650,9,498,1,499,1,499,1,499,1,499,1,499,3,499,8657,8,499, - 1,500,1,500,3,500,8661,8,500,1,501,1,501,1,501,1,501,1,501,1,501, - 1,501,1,501,3,501,8671,8,501,1,502,1,502,3,502,8675,8,502,1,502, - 1,502,3,502,8679,8,502,1,502,1,502,3,502,8683,8,502,3,502,8685,8, - 502,1,502,1,502,1,502,3,502,8690,8,502,1,502,1,502,3,502,8694,8, - 502,1,502,1,502,3,502,8698,8,502,3,502,8700,8,502,3,502,8702,8,502, - 1,503,1,503,3,503,8706,8,503,1,504,1,504,3,504,8710,8,504,1,504, - 3,504,8713,8,504,1,504,3,504,8716,8,504,1,504,3,504,8719,8,504,1, - 504,3,504,8722,8,504,3,504,8724,8,504,1,504,3,504,8727,8,504,1,504, - 3,504,8730,8,504,1,504,3,504,8733,8,504,1,504,3,504,8736,8,504,1, - 504,3,504,8739,8,504,1,504,3,504,8742,8,504,1,504,1,504,1,504,1, - 504,1,504,1,504,1,504,3,504,8751,8,504,3,504,8753,8,504,1,504,1, - 504,1,504,3,504,8758,8,504,5,504,8760,8,504,10,504,12,504,8763,9, - 504,1,505,1,505,1,505,3,505,8768,8,505,1,506,1,506,3,506,8772,8, - 506,1,507,1,507,3,507,8776,8,507,1,507,1,507,1,508,1,508,1,508,5, - 508,8783,8,508,10,508,12,508,8786,9,508,1,509,1,509,3,509,8790,8, - 509,1,509,1,509,3,509,8794,8,509,1,509,1,509,1,509,1,509,3,509,8800, - 8,509,1,509,3,509,8803,8,509,1,510,1,510,1,510,1,510,1,510,1,510, - 1,510,1,510,1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,511, - 3,511,8822,8,511,1,511,1,511,1,511,1,512,1,512,1,512,3,512,8830, - 8,512,1,513,1,513,1,514,1,514,1,514,1,514,1,514,3,514,8839,8,514, - 1,515,1,515,3,515,8843,8,515,1,516,3,516,8846,8,516,1,516,1,516, - 3,516,8850,8,516,1,516,1,516,1,516,3,516,8855,8,516,1,516,1,516, - 1,516,1,516,3,516,8861,8,516,1,517,1,517,1,518,1,518,1,519,1,519, - 1,519,1,519,1,519,1,519,3,519,8873,8,519,1,520,1,520,1,521,1,521, - 1,522,1,522,1,522,1,522,1,523,1,523,1,523,5,523,8886,8,523,10,523, - 12,523,8889,9,523,1,524,1,524,1,524,1,524,3,524,8895,8,524,1,524, - 3,524,8898,8,524,1,525,1,525,3,525,8902,8,525,1,525,1,525,3,525, - 8906,8,525,1,525,1,525,3,525,8910,8,525,3,525,8912,8,525,1,526,1, - 526,1,527,1,527,1,527,1,527,3,527,8920,8,527,1,528,1,528,1,528,1, - 528,1,528,1,528,1,528,3,528,8929,8,528,1,528,1,528,1,528,1,528,3, - 528,8935,8,528,3,528,8937,8,528,1,529,1,529,1,529,1,529,1,529,3, - 529,8944,8,529,1,530,1,530,3,530,8948,8,530,1,531,1,531,1,532,1, - 532,1,532,1,532,1,532,3,532,8957,8,532,1,533,1,533,3,533,8961,8, - 533,1,534,1,534,1,535,1,535,1,536,1,536,1,536,3,536,8970,8,536,1, - 536,1,536,1,537,1,537,1,537,5,537,8977,8,537,10,537,12,537,8980, - 9,537,1,538,1,538,1,538,1,538,1,538,1,538,1,538,1,538,1,538,3,538, - 8991,8,538,1,539,1,539,1,539,1,540,1,540,1,540,1,540,1,540,1,541, - 1,541,1,541,1,541,1,541,1,542,1,542,1,542,1,542,1,542,1,542,1,543, - 1,543,1,543,1,544,1,544,1,544,1,544,3,544,9019,8,544,1,545,1,545, - 1,546,4,546,9024,8,546,11,546,12,546,9025,1,547,1,547,3,547,9030, - 8,547,1,547,3,547,9033,8,547,1,548,1,548,1,548,3,548,9038,8,548, - 1,548,1,548,3,548,9042,8,548,1,548,3,548,9045,8,548,1,549,1,549, - 1,549,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,550,1,550,5,550, - 9059,8,550,10,550,12,550,9062,9,550,1,551,1,551,1,551,1,552,1,552, - 1,552,5,552,9070,8,552,10,552,12,552,9073,9,552,1,553,1,553,3,553, - 9077,8,553,1,553,3,553,9080,8,553,1,553,3,553,9083,8,553,1,553,1, - 553,3,553,9087,8,553,1,553,1,553,3,553,9091,8,553,1,553,1,553,3, - 553,9095,8,553,1,553,1,553,1,553,3,553,9100,8,553,1,553,1,553,3, - 553,9104,8,553,1,553,1,553,3,553,9108,8,553,3,553,9110,8,553,1,553, - 1,553,1,553,1,553,1,553,1,553,1,553,3,553,9119,8,553,1,553,1,553, - 1,553,3,553,9124,8,553,1,553,1,553,1,553,1,553,3,553,9130,8,553, - 1,553,1,553,3,553,9134,8,553,3,553,9136,8,553,1,553,1,553,1,553, - 1,553,1,553,3,553,9143,8,553,1,553,1,553,1,553,3,553,9148,8,553, - 1,553,1,553,1,553,1,553,5,553,9154,8,553,10,553,12,553,9157,9,553, - 1,554,3,554,9160,8,554,1,554,1,554,1,554,1,554,1,554,3,554,9167, - 8,554,1,555,1,555,1,556,1,556,1,556,3,556,9174,8,556,1,556,3,556, - 9177,8,556,1,556,1,556,1,556,1,556,3,556,9183,8,556,1,557,1,557, - 3,557,9187,8,557,1,558,1,558,1,558,1,558,1,558,1,558,1,558,3,558, - 9196,8,558,1,559,3,559,9199,8,559,1,559,1,559,3,559,9203,8,559,1, - 559,1,559,1,559,1,559,1,559,1,559,3,559,9211,8,559,1,559,1,559,1, - 559,1,559,3,559,9217,8,559,3,559,9219,8,559,1,560,3,560,9222,8,560, - 1,560,1,560,3,560,9226,8,560,1,560,3,560,9229,8,560,1,560,3,560, - 9232,8,560,1,561,1,561,3,561,9236,8,561,1,561,1,561,3,561,9240,8, - 561,1,561,1,561,1,561,1,561,3,561,9246,8,561,1,561,3,561,9249,8, - 561,1,561,1,561,1,561,1,561,1,561,1,561,1,561,3,561,9258,8,561,1, - 561,1,561,1,561,1,561,1,561,3,561,9265,8,561,3,561,9267,8,561,1, - 562,1,562,1,562,5,562,9272,8,562,10,562,12,562,9275,9,562,1,563, - 1,563,1,563,5,563,9280,8,563,10,563,12,563,9283,9,563,1,564,1,564, - 3,564,9287,8,564,1,564,3,564,9290,8,564,1,565,1,565,1,565,1,565, - 1,565,1,565,3,565,9298,8,565,1,566,1,566,1,566,1,566,1,566,1,567, - 1,567,3,567,9307,8,567,1,567,1,567,1,567,1,567,1,567,1,567,3,567, - 9315,8,567,3,567,9317,8,567,1,568,1,568,3,568,9321,8,568,1,569,1, - 569,1,569,5,569,9326,8,569,10,569,12,569,9329,9,569,1,570,1,570, - 1,570,1,570,1,570,1,571,1,571,1,571,1,572,1,572,1,572,1,573,1,573, - 1,573,1,573,1,573,3,573,9347,8,573,1,574,1,574,1,575,1,575,1,575, - 5,575,9354,8,575,10,575,12,575,9357,9,575,1,576,1,576,1,576,3,576, - 9362,8,576,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577, - 1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,3,577,9381,8,577, - 1,577,1,577,1,578,1,578,1,578,5,578,9388,8,578,10,578,12,578,9391, - 9,578,1,579,1,579,1,579,3,579,9396,8,579,1,579,1,579,3,579,9400, - 8,579,1,580,4,580,9403,8,580,11,580,12,580,9404,1,581,1,581,1,581, - 1,581,1,581,1,581,1,581,1,581,3,581,9415,8,581,1,582,1,582,1,582, - 5,582,9420,8,582,10,582,12,582,9423,9,582,1,583,1,583,1,583,1,583, - 1,583,1,583,3,583,9431,8,583,1,584,3,584,9434,8,584,1,584,1,584, - 1,584,1,584,1,584,1,584,1,584,3,584,9443,8,584,3,584,9445,8,584, - 1,584,1,584,1,584,1,584,3,584,9451,8,584,1,585,1,585,3,585,9455, - 8,585,1,585,5,585,9458,8,585,10,585,12,585,9461,9,585,1,586,1,586, - 1,586,1,586,1,586,1,586,1,586,3,586,9470,8,586,1,586,1,586,1,586, - 1,586,3,586,9476,8,586,3,586,9478,8,586,1,587,1,587,1,587,1,587, - 3,587,9484,8,587,1,588,1,588,3,588,9488,8,588,1,588,3,588,9491,8, - 588,1,589,1,589,1,589,1,589,1,590,1,590,1,590,1,590,1,590,1,590, - 1,590,3,590,9504,8,590,1,590,1,590,1,590,1,590,3,590,9510,8,590, - 1,590,1,590,3,590,9514,8,590,1,590,1,590,3,590,9518,8,590,1,590, - 3,590,9521,8,590,1,591,1,591,1,591,1,591,1,592,1,592,3,592,9529, - 8,592,1,593,1,593,3,593,9533,8,593,1,594,1,594,3,594,9537,8,594, - 1,594,1,594,1,594,1,594,1,595,1,595,3,595,9545,8,595,1,596,1,596, - 1,596,1,596,1,596,3,596,9552,8,596,1,597,1,597,1,597,1,597,1,597, - 3,597,9559,8,597,1,598,1,598,3,598,9563,8,598,1,598,1,598,1,598, - 1,598,3,598,9569,8,598,3,598,9571,8,598,1,599,1,599,1,600,1,600, - 1,600,1,600,1,600,3,600,9580,8,600,1,600,3,600,9583,8,600,1,601, - 1,601,1,602,1,602,1,602,1,602,1,602,1,602,3,602,9593,8,602,1,603, - 1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603, - 1,603,1,603,3,603,9609,8,603,1,603,1,603,1,603,1,603,3,603,9615, - 8,603,1,603,1,603,1,603,3,603,9620,8,603,1,604,1,604,1,604,1,604, - 1,604,3,604,9627,8,604,1,605,1,605,1,605,1,606,1,606,1,607,1,607, - 3,607,9636,8,607,1,608,1,608,1,608,5,608,9641,8,608,10,608,12,608, - 9644,9,608,1,609,1,609,1,609,5,609,9649,8,609,10,609,12,609,9652, - 9,609,1,610,1,610,1,610,5,610,9657,8,610,10,610,12,610,9660,9,610, - 1,611,1,611,3,611,9664,8,611,1,611,1,611,3,611,9668,8,611,1,612, - 3,612,9671,8,612,1,612,1,612,1,613,1,613,3,613,9677,8,613,1,614, - 1,614,1,614,3,614,9682,8,614,1,614,1,614,1,614,1,614,1,614,1,614, - 1,614,1,614,1,614,1,614,1,614,1,614,1,614,1,614,3,614,9698,8,614, - 1,614,3,614,9701,8,614,3,614,9703,8,614,1,615,1,615,1,615,1,615, - 1,615,1,615,1,615,1,615,1,615,1,615,3,615,9715,8,615,3,615,9717, - 8,615,1,616,1,616,3,616,9721,8,616,1,616,1,616,1,616,1,616,1,616, - 1,616,3,616,9729,8,616,3,616,9731,8,616,1,616,1,616,3,616,9735,8, - 616,3,616,9737,8,616,1,617,1,617,1,617,1,617,5,617,9743,8,617,10, - 617,12,617,9746,9,617,1,618,3,618,9749,8,618,1,618,1,618,1,619,1, - 619,1,619,5,619,9756,8,619,10,619,12,619,9759,9,619,1,620,1,620, - 1,620,5,620,9764,8,620,10,620,12,620,9767,9,620,1,621,1,621,1,621, - 3,621,9772,8,621,1,622,3,622,9775,8,622,1,622,1,622,1,623,1,623, - 1,623,1,623,1,623,3,623,9784,8,623,1,624,1,624,1,624,3,624,9789, - 8,624,1,625,1,625,1,625,5,625,9794,8,625,10,625,12,625,9797,9,625, - 1,626,1,626,1,626,1,626,1,626,1,626,1,626,3,626,9806,8,626,1,626, - 1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626, - 1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626, - 1,626,3,626,9832,8,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626, - 1,626,1,626,3,626,9843,8,626,5,626,9845,8,626,10,626,12,626,9848, - 9,626,1,627,1,627,1,627,1,627,1,627,3,627,9855,8,627,1,627,1,627, - 1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627, - 1,627,1,627,1,627,1,627,1,627,1,627,1,627,3,627,9877,8,627,1,627, - 1,627,1,627,1,627,1,627,1,627,1,627,3,627,9886,8,627,1,628,1,628, - 1,629,1,629,1,629,1,629,1,629,1,629,3,629,9896,8,629,1,629,3,629, - 9899,8,629,1,629,1,629,1,629,3,629,9904,8,629,1,629,1,629,1,629, - 3,629,9909,8,629,1,629,1,629,3,629,9913,8,629,1,629,3,629,9916,8, - 629,1,630,1,630,3,630,9920,8,630,1,630,3,630,9923,8,630,1,630,3, - 630,9926,8,630,1,630,3,630,9929,8,630,1,631,1,631,3,631,9933,8,631, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 1,632,3,632,9947,8,632,1,632,1,632,1,632,1,632,1,632,3,632,9954, - 8,632,1,632,1,632,1,632,1,632,1,632,3,632,9961,8,632,1,632,1,632, - 1,632,1,632,1,632,3,632,9968,8,632,1,632,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 3,632,9986,8,632,1,632,1,632,1,632,1,632,1,632,1,632,3,632,9994, - 8,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 3,632,10006,8,632,1,632,1,632,1,632,1,632,3,632,10012,8,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,3,632, - 10025,8,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,3,632,10064,8,632,3,632,10066, - 8,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,3,632,10086,8,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,3,632,10096,8,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,3,632,10107, - 8,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 3,632,10119,8,632,1,633,1,633,1,633,1,633,1,633,3,633,10126,8,633, - 1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,3,634, - 10138,8,634,1,635,1,635,1,635,1,635,1,635,1,636,1,636,1,636,5,636, - 10148,8,636,10,636,12,636,10151,9,636,1,637,1,637,1,637,3,637,10156, - 8,637,1,638,1,638,1,639,1,639,1,639,1,639,3,639,10164,8,639,1,640, - 1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640,1,640, - 1,640,1,640,1,640,3,640,10181,8,640,1,641,1,641,1,641,1,642,1,642, - 1,642,1,642,1,642,1,642,1,643,1,643,1,643,1,643,1,643,1,643,1,644, - 1,644,1,644,1,645,1,645,1,645,5,645,10204,8,645,10,645,12,645,10207, - 9,645,1,646,1,646,1,646,1,646,1,647,1,647,1,647,3,647,10216,8,647, - 1,648,1,648,3,648,10220,8,648,1,648,3,648,10223,8,648,1,648,3,648, - 10226,8,648,1,648,3,648,10229,8,648,1,648,1,648,1,649,1,649,1,650, - 1,650,1,650,1,650,1,651,1,651,1,651,3,651,10242,8,651,1,651,1,651, - 1,651,3,651,10247,8,651,1,651,1,651,1,651,3,651,10252,8,651,3,651, - 10254,8,651,1,652,1,652,1,652,1,652,1,652,1,652,3,652,10262,8,652, - 1,653,1,653,1,653,1,653,1,653,1,653,1,653,3,653,10271,8,653,1,654, - 1,654,1,654,1,654,1,654,1,654,1,654,3,654,10280,8,654,1,655,1,655, - 1,655,3,655,10285,8,655,1,655,1,655,1,655,1,655,1,655,1,655,1,655, - 3,655,10294,8,655,1,656,1,656,1,656,3,656,10299,8,656,1,656,1,656, - 1,657,1,657,1,657,1,657,1,657,1,657,1,658,1,658,1,659,1,659,3,659, - 10313,8,659,1,660,1,660,1,661,1,661,1,661,1,661,1,661,1,661,3,661, - 10323,8,661,1,662,1,662,1,662,1,662,1,662,1,662,3,662,10331,8,662, - 1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,663,1,663, - 1,663,3,663,10345,8,663,1,664,1,664,1,664,5,664,10350,8,664,10,664, - 12,664,10353,9,664,1,665,1,665,1,665,5,665,10358,8,665,10,665,12, - 665,10361,9,665,1,666,1,666,1,666,5,666,10366,8,666,10,666,12,666, - 10369,9,666,1,667,1,667,1,667,1,667,1,667,3,667,10376,8,667,1,668, - 1,668,3,668,10380,8,668,1,669,1,669,1,669,5,669,10385,8,669,10,669, - 12,669,10388,9,669,1,670,1,670,1,670,1,670,1,670,3,670,10395,8,670, - 1,671,1,671,1,671,5,671,10400,8,671,10,671,12,671,10403,9,671,1, - 672,1,672,1,672,3,672,10408,8,672,1,672,1,672,1,673,1,673,1,673, - 5,673,10415,8,673,10,673,12,673,10418,9,673,1,674,1,674,1,674,1, - 674,1,675,1,675,1,675,1,675,1,675,1,675,1,675,1,675,3,675,10432, - 8,675,1,676,1,676,1,677,1,677,1,677,1,677,1,677,1,677,1,677,3,677, - 10443,8,677,1,678,1,678,1,678,1,678,1,679,1,679,1,679,1,679,1,679, - 1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679, - 1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679,1,679, - 3,679,10476,8,679,1,680,1,680,1,680,1,680,1,680,1,680,1,680,3,680, - 10485,8,680,1,681,1,681,1,681,1,681,1,681,3,681,10492,8,681,1,682, - 1,682,3,682,10496,8,682,1,682,1,682,3,682,10500,8,682,1,682,1,682, - 1,683,4,683,10505,8,683,11,683,12,683,10506,1,684,1,684,1,684,1, - 684,1,684,1,685,1,685,1,685,1,686,1,686,1,687,1,687,3,687,10521, - 8,687,1,688,1,688,1,688,3,688,10526,8,688,1,688,1,688,1,688,3,688, - 10531,8,688,1,688,1,688,3,688,10535,8,688,3,688,10537,8,688,1,688, - 3,688,10540,8,688,1,689,1,689,1,690,4,690,10545,8,690,11,690,12, - 690,10546,1,691,5,691,10550,8,691,10,691,12,691,10553,9,691,1,692, - 1,692,1,693,1,693,1,693,5,693,10560,8,693,10,693,12,693,10563,9, - 693,1,694,1,694,1,694,1,694,1,694,3,694,10570,8,694,1,694,3,694, - 10573,8,694,1,695,1,695,1,695,5,695,10578,8,695,10,695,12,695,10581, - 9,695,1,696,1,696,1,696,5,696,10586,8,696,10,696,12,696,10589,9, - 696,1,697,1,697,1,697,5,697,10594,8,697,10,697,12,697,10597,9,697, - 1,698,1,698,1,698,5,698,10602,8,698,10,698,12,698,10605,9,698,1, - 699,1,699,1,699,5,699,10610,8,699,10,699,12,699,10613,9,699,1,700, - 1,700,3,700,10617,8,700,1,701,1,701,3,701,10621,8,701,1,702,1,702, - 3,702,10625,8,702,1,703,1,703,3,703,10629,8,703,1,704,1,704,3,704, - 10633,8,704,1,705,1,705,3,705,10637,8,705,1,706,1,706,3,706,10641, - 8,706,1,707,1,707,1,707,5,707,10646,8,707,10,707,12,707,10649,9, - 707,1,708,1,708,1,708,5,708,10654,8,708,10,708,12,708,10657,9,708, - 1,709,1,709,3,709,10661,8,709,1,710,1,710,3,710,10665,8,710,1,711, - 1,711,3,711,10669,8,711,1,712,1,712,1,713,1,713,1,714,1,714,1,714, - 1,714,3,714,10679,8,714,1,715,1,715,1,715,1,715,3,715,10685,8,715, - 1,716,1,716,5,716,10689,8,716,10,716,12,716,10692,9,716,1,716,3, - 716,10695,8,716,1,717,1,717,1,718,1,718,1,719,1,719,1,720,1,720, - 1,721,1,721,1,721,1,721,3,721,10709,8,721,1,722,1,722,1,722,1,722, - 3,722,10715,8,722,1,723,1,723,1,723,1,723,3,723,10721,8,723,1,724, - 1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,1,724,3,724,10733, - 8,724,1,724,1,724,1,724,3,724,10738,8,724,1,724,1,724,1,724,1,724, - 1,724,1,724,3,724,10746,8,724,1,724,1,724,1,724,1,724,1,724,3,724, - 10753,8,724,1,724,1,724,1,724,3,724,10758,8,724,1,725,1,725,1,726, - 1,726,1,727,1,727,1,728,1,728,1,729,1,729,3,729,10770,8,729,1,730, - 1,730,1,730,1,730,5,730,10776,8,730,10,730,12,730,10779,9,730,1, - 730,1,730,3,730,10783,8,730,1,731,1,731,1,731,1,732,1,732,1,732, - 1,732,1,732,3,732,10793,8,732,1,733,1,733,1,734,1,734,1,735,1,735, - 1,735,1,735,1,735,3,735,10804,8,735,1,736,1,736,1,736,5,736,10809, - 8,736,10,736,12,736,10812,9,736,1,737,1,737,1,737,1,737,3,737,10818, - 8,737,1,738,1,738,1,739,1,739,1,739,1,739,1,739,1,739,1,739,3,739, - 10829,8,739,1,739,3,739,10832,8,739,3,739,10834,8,739,1,740,1,740, - 3,740,10838,8,740,1,740,3,740,10841,8,740,1,741,1,741,1,741,1,741, - 3,741,10847,8,741,1,742,1,742,1,742,1,742,3,742,10853,8,742,1,743, - 1,743,3,743,10857,8,743,1,744,1,744,1,744,1,744,3,744,10863,8,744, - 1,745,1,745,1,745,1,745,1,745,1,745,3,745,10871,8,745,1,746,1,746, - 3,746,10875,8,746,1,746,1,746,1,746,1,746,1,746,1,746,3,746,10883, - 8,746,1,747,1,747,1,748,1,748,1,749,1,749,1,749,1,749,1,749,1,749, - 1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749, - 1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749, - 1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749, - 1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749,1,749, - 1,749,3,749,10940,8,749,1,750,1,750,1,751,1,751,1,752,1,752,1,752, - 1,752,1,753,5,753,10951,8,753,10,753,12,753,10954,9,753,1,754,1, - 754,1,754,1,754,1,754,1,754,1,754,1,754,1,754,1,754,1,754,1,754, - 1,754,1,754,1,754,1,754,1,754,1,754,1,754,1,754,3,754,10976,8,754, - 1,755,1,755,1,756,1,756,1,756,1,756,3,756,10984,8,756,1,757,1,757, - 3,757,10988,8,757,1,758,1,758,1,758,1,758,1,758,1,758,1,758,1,759, - 1,759,1,759,3,759,11000,8,759,3,759,11002,8,759,1,760,1,760,1,761, - 4,761,11007,8,761,11,761,12,761,11008,1,762,1,762,1,762,1,762,1, - 763,1,763,1,763,3,763,11018,8,763,1,764,1,764,1,764,1,764,1,764, - 1,764,1,764,1,764,1,764,1,764,1,764,1,764,1,764,1,764,1,764,1,764, - 3,764,11036,8,764,1,764,1,764,1,765,1,765,1,765,1,765,3,765,11044, - 8,765,1,766,1,766,1,767,1,767,1,767,1,767,1,767,3,767,11053,8,767, - 1,768,1,768,1,768,5,768,11058,8,768,10,768,12,768,11061,9,768,1, - 769,1,769,1,769,1,770,1,770,1,771,1,771,3,771,11070,8,771,1,772, - 1,772,1,773,1,773,3,773,11076,8,773,1,774,1,774,1,775,1,775,1,775, - 3,775,11083,8,775,1,776,1,776,1,776,3,776,11088,8,776,1,777,1,777, - 1,777,1,777,3,777,11094,8,777,1,778,1,778,3,778,11098,8,778,1,779, - 1,779,1,780,5,780,11103,8,780,10,780,12,780,11106,9,780,1,781,1, - 781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781, - 1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781,1,781, - 1,781,1,781,1,781,1,781,3,781,11135,8,781,1,782,1,782,1,782,1,782, - 1,783,1,783,1,783,1,783,1,783,1,783,1,783,3,783,11148,8,783,1,783, - 1,783,1,783,1,783,1,783,1,783,1,783,3,783,11157,8,783,1,784,1,784, - 3,784,11161,8,784,1,785,1,785,1,785,1,785,1,785,1,786,1,786,1,786, - 1,786,1,786,1,786,1,787,1,787,1,787,3,787,11177,8,787,1,788,1,788, - 1,788,5,788,11182,8,788,10,788,12,788,11185,9,788,1,789,1,789,1, - 789,1,789,1,790,1,790,1,791,1,791,1,792,1,792,3,792,11197,8,792, - 1,792,1,792,1,792,1,792,5,792,11203,8,792,10,792,12,792,11206,9, - 792,1,793,1,793,1,793,1,793,1,793,1,793,1,793,1,793,1,793,1,793, - 1,794,1,794,1,794,1,794,1,794,5,794,11223,8,794,10,794,12,794,11226, - 9,794,1,795,1,795,1,795,3,795,11231,8,795,1,796,1,796,1,796,1,796, - 1,796,1,796,1,796,1,796,1,797,1,797,3,797,11243,8,797,1,798,4,798, - 11246,8,798,11,798,12,798,11247,1,799,1,799,1,799,1,799,1,799,1, - 800,1,800,1,800,3,800,11258,8,800,1,801,1,801,1,801,1,802,1,802, - 1,802,1,802,1,802,1,803,1,803,1,803,1,803,1,803,1,804,1,804,1,804, - 1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804,1,804, - 1,804,1,804,1,804,3,804,11290,8,804,1,805,1,805,1,805,3,805,11295, - 8,805,1,806,1,806,1,806,1,806,1,806,5,806,11302,8,806,10,806,12, - 806,11305,9,806,1,806,1,806,3,806,11309,8,806,1,807,1,807,3,807, - 11313,8,807,1,808,1,808,1,808,3,808,11318,8,808,1,809,1,809,1,810, - 1,810,1,810,1,810,1,810,1,810,1,810,1,810,1,810,1,811,1,811,1,811, - 3,811,11334,8,811,1,812,1,812,1,812,3,812,11339,8,812,1,812,1,812, - 1,813,1,813,1,814,1,814,1,814,1,814,1,814,1,814,1,814,1,814,1,814, - 3,814,11354,8,814,1,814,3,814,11357,8,814,1,814,1,814,1,815,1,815, - 3,815,11363,8,815,1,816,1,816,3,816,11367,8,816,1,816,1,816,1,816, - 1,816,1,816,1,816,1,816,3,816,11376,8,816,1,816,1,816,1,816,1,816, - 1,816,1,816,3,816,11384,8,816,1,816,1,816,1,816,1,816,1,816,1,816, - 1,816,3,816,11393,8,816,1,816,1,816,1,816,1,816,3,816,11399,8,816, - 1,817,1,817,1,818,1,818,1,818,4,818,11406,8,818,11,818,12,818,11407, - 3,818,11410,8,818,1,819,1,819,1,819,3,819,11415,8,819,1,820,1,820, - 1,820,1,820,1,821,1,821,1,821,5,821,11424,8,821,10,821,12,821,11427, - 9,821,1,822,1,822,1,822,1,822,1,822,1,823,1,823,1,823,3,823,11437, - 8,823,1,824,1,824,1,824,1,824,1,824,1,824,1,824,1,825,1,825,1,825, - 1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,1,826,3,826,11458, - 8,826,1,826,1,826,1,827,1,827,1,827,3,827,11465,8,827,1,828,1,828, - 1,828,5,828,11470,8,828,10,828,12,828,11473,9,828,1,829,1,829,1, - 829,3,829,11478,8,829,1,829,3,829,11481,8,829,1,830,1,830,1,830, - 1,830,1,830,1,830,1,830,1,830,1,830,3,830,11492,8,830,1,830,1,830, - 1,830,1,830,1,830,3,830,11499,8,830,3,830,11501,8,830,1,830,1,830, - 1,831,1,831,1,831,1,831,1,831,3,831,11510,8,831,1,832,1,832,1,832, - 5,832,11515,8,832,10,832,12,832,11518,9,832,1,833,1,833,1,833,3, - 833,11523,8,833,1,834,1,834,1,834,1,834,3,834,11529,8,834,1,835, - 1,835,3,835,11533,8,835,1,836,1,836,3,836,11537,8,836,1,836,1,836, - 1,836,1,836,1,836,1,836,1,837,1,837,1,838,1,838,1,838,3,838,11550, - 8,838,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839,1,839, - 1,839,1,839,1,839,3,839,11565,8,839,3,839,11567,8,839,1,840,1,840, - 3,840,11571,8,840,1,840,1,840,1,840,1,841,3,841,11577,8,841,1,841, - 1,841,1,841,3,841,11582,8,841,1,841,1,841,3,841,11586,8,841,1,841, - 3,841,11589,8,841,1,841,3,841,11592,8,841,1,841,1,841,1,841,1,841, - 1,841,4,841,11599,8,841,11,841,12,841,11600,1,842,3,842,11604,8, - 842,1,842,1,842,3,842,11608,8,842,1,842,1,842,3,842,11612,8,842, - 3,842,11614,8,842,1,842,3,842,11617,8,842,1,842,3,842,11620,8,842, - 1,843,1,843,1,844,1,844,1,844,1,844,3,844,11628,8,844,1,844,1,844, - 1,844,1,844,1,844,3,844,11635,8,844,1,844,1,844,1,844,1,844,1,844, - 3,844,11642,8,844,1,844,1,844,1,844,1,844,3,844,11648,8,844,3,844, - 11650,8,844,1,845,1,845,1,845,1,845,1,845,3,845,11657,8,845,1,845, - 1,845,1,845,3,845,11662,8,845,1,845,1,845,1,846,1,846,1,846,1,846, - 1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,846,1,846,4,846, - 11680,8,846,11,846,12,846,11681,1,847,1,847,1,847,1,847,3,847,11688, - 8,847,1,848,1,848,1,848,1,848,5,848,11694,8,848,10,848,12,848,11697, - 9,848,1,848,1,848,1,849,1,849,3,849,11703,8,849,1,850,1,850,1,850, - 1,850,1,851,1,851,1,851,1,852,1,852,3,852,11714,8,852,1,852,1,852, - 1,853,1,853,3,853,11720,8,853,1,853,1,853,1,854,1,854,3,854,11726, - 8,854,1,854,1,854,1,855,1,855,1,855,1,855,1,855,1,855,1,855,1,855, - 1,855,3,855,11739,8,855,1,855,3,855,11742,8,855,1,856,1,856,3,856, - 11746,8,856,1,857,1,857,1,857,3,857,11751,8,857,1,858,4,858,11754, - 8,858,11,858,12,858,11755,1,859,1,859,1,859,1,859,1,859,1,860,1, - 860,1,860,5,860,11766,8,860,10,860,12,860,11769,9,860,1,861,1,861, - 1,861,3,861,11774,8,861,1,862,1,862,3,862,11778,8,862,1,863,1,863, - 3,863,11782,8,863,1,864,1,864,3,864,11786,8,864,1,865,1,865,1,865, - 1,866,1,866,3,866,11793,8,866,1,867,1,867,1,868,3,868,11798,8,868, - 1,868,3,868,11801,8,868,1,868,3,868,11804,8,868,1,868,3,868,11807, - 8,868,1,868,3,868,11810,8,868,1,868,3,868,11813,8,868,1,868,3,868, - 11816,8,868,1,869,1,869,1,870,1,870,1,871,1,871,1,872,1,872,1,873, - 1,873,3,873,11828,8,873,1,874,1,874,1,874,1,874,1,874,0,1,1252,875, - 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44, - 46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88, - 90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124, - 126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156, - 158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188, - 190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220, - 222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252, - 254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284, - 286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316, - 318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348, - 350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380, - 382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412, - 414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444, - 446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476, - 478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508, - 510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540, - 542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572, - 574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604, - 606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636, - 638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668, - 670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700, - 702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732, - 734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764, - 766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796, - 798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828, - 830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860, - 862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892, - 894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924, - 926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956, - 958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988, - 990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016, - 1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042, - 1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068, - 1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094, - 1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120, - 1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146, - 1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172, - 1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198, - 1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224, - 1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250, - 1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276, - 1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302, - 1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328, - 1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354, - 1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380, - 1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406, - 1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432, - 1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458, - 1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484, - 1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510, - 1512,1514,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536, - 1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562, - 1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588, - 1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1614, - 1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640, - 1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666, - 1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692, - 1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718, - 1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744, - 1746,1748,0,87,2,0,195,195,364,364,1,0,228,229,1,0,236,237,1,0,234, - 235,1,0,232,233,1,0,230,231,1,0,535,536,1,0,537,538,1,0,539,540, - 2,0,66,66,318,318,2,0,99,99,318,318,1,0,529,531,2,0,10,10,94,94, - 2,0,133,133,191,191,2,0,254,254,332,332,2,0,162,162,363,363,2,0, - 180,180,221,221,5,0,30,30,288,288,329,329,352,352,354,354,2,0,109, - 109,532,532,2,0,367,367,439,439,2,0,139,139,312,312,2,0,191,191, - 333,333,2,0,313,313,333,333,2,0,150,150,315,315,2,0,64,64,94,94, - 2,0,352,352,354,354,2,0,200,200,224,224,9,0,30,30,160,160,165,165, - 179,179,219,219,227,227,342,342,345,345,438,438,3,0,113,113,284, - 284,336,336,2,0,53,53,78,78,3,0,173,173,260,260,262,262,2,0,9,9, - 94,94,5,0,30,30,88,88,182,182,241,241,369,369,2,0,92,92,226,226, - 2,0,341,341,414,414,1,0,448,449,2,0,92,92,414,414,2,0,135,135,145, - 145,3,0,66,66,99,99,318,318,4,0,163,163,185,185,283,283,353,353, - 3,0,321,321,357,357,445,445,2,0,167,167,314,314,2,0,64,64,68,68, - 10,0,46,46,88,88,182,182,202,202,241,241,352,352,354,354,357,358, - 369,369,521,523,5,0,212,212,329,329,350,350,361,361,455,456,2,0, - 37,37,55,55,2,0,10,10,53,53,4,0,88,88,182,182,241,241,369,369,2, - 0,137,137,242,242,2,0,356,356,380,380,2,0,151,151,254,254,1,0,31, - 32,2,0,60,60,96,96,2,0,99,99,349,349,2,0,201,201,334,334,1,0,527, - 528,2,0,213,213,254,254,2,0,30,30,56,56,2,0,320,320,414,414,2,0, - 207,207,268,268,4,0,113,113,115,115,119,119,126,126,2,0,360,360, - 477,477,2,0,391,392,406,406,1,0,391,392,1,0,418,419,1,0,18,19,2, - 0,117,117,122,122,5,0,10,10,16,17,21,21,23,23,25,25,1,0,12,13,3, - 0,9,9,14,14,27,27,3,0,39,39,73,73,95,95,2,0,166,166,188,188,2,0, - 304,304,450,450,2,0,208,208,289,289,3,0,30,30,34,34,90,90,6,0,9, - 10,12,17,21,21,23,23,25,25,27,27,2,0,20,20,22,22,1,0,483,486,10, - 0,124,124,129,228,238,386,433,452,455,469,471,471,473,473,475,475, - 478,488,547,548,3,0,106,123,125,128,472,472,4,0,30,52,54,70,72,105, - 454,454,2,0,62,62,116,116,2,0,10,10,20,20,2,0,167,167,507,507,1, - 0,512,517,2,0,144,144,210,210,36,0,33,33,35,35,43,43,45,45,53,53, - 57,57,61,61,116,116,123,123,130,130,144,144,153,153,157,157,161, - 161,167,167,172,172,207,207,210,210,241,241,249,249,265,265,268, - 269,279,279,293,293,307,307,313,313,319,319,323,324,333,333,360, - 360,433,434,477,477,490,502,504,504,506,518,520,520,13157,0,1753, - 1,0,0,0,2,1758,1,0,0,0,4,1760,1,0,0,0,6,1881,1,0,0,0,8,1883,1,0, - 0,0,10,1887,1,0,0,0,12,1890,1,0,0,0,14,1898,1,0,0,0,16,1903,1,0, - 0,0,18,1909,1,0,0,0,20,1947,1,0,0,0,22,1959,1,0,0,0,24,1961,1,0, - 0,0,26,1969,1,0,0,0,28,1981,1,0,0,0,30,1983,1,0,0,0,32,1992,1,0, - 0,0,34,2020,1,0,0,0,36,2022,1,0,0,0,38,2070,1,0,0,0,40,2072,1,0, - 0,0,42,2080,1,0,0,0,44,2087,1,0,0,0,46,2089,1,0,0,0,48,2104,1,0, - 0,0,50,2111,1,0,0,0,52,2120,1,0,0,0,54,2122,1,0,0,0,56,2136,1,0, - 0,0,58,2140,1,0,0,0,60,2176,1,0,0,0,62,2178,1,0,0,0,64,2186,1,0, - 0,0,66,2196,1,0,0,0,68,2203,1,0,0,0,70,2209,1,0,0,0,72,2215,1,0, - 0,0,74,2233,1,0,0,0,76,2237,1,0,0,0,78,2241,1,0,0,0,80,2245,1,0, - 0,0,82,2247,1,0,0,0,84,2258,1,0,0,0,86,2262,1,0,0,0,88,2267,1,0, - 0,0,90,2272,1,0,0,0,92,2274,1,0,0,0,94,2286,1,0,0,0,96,2293,1,0, - 0,0,98,2295,1,0,0,0,100,2297,1,0,0,0,102,2299,1,0,0,0,104,2435,1, - 0,0,0,106,2437,1,0,0,0,108,2454,1,0,0,0,110,2456,1,0,0,0,112,2470, - 1,0,0,0,114,2472,1,0,0,0,116,2488,1,0,0,0,118,2490,1,0,0,0,120,2711, - 1,0,0,0,122,2718,1,0,0,0,124,2720,1,0,0,0,126,2722,1,0,0,0,128,2725, - 1,0,0,0,130,2734,1,0,0,0,132,2736,1,0,0,0,134,2740,1,0,0,0,136,2743, - 1,0,0,0,138,2751,1,0,0,0,140,2763,1,0,0,0,142,2780,1,0,0,0,144,2808, - 1,0,0,0,146,2810,1,0,0,0,148,2813,1,0,0,0,150,2821,1,0,0,0,152,2826, - 1,0,0,0,154,2863,1,0,0,0,156,2865,1,0,0,0,158,2907,1,0,0,0,160,2909, - 1,0,0,0,162,2911,1,0,0,0,164,2916,1,0,0,0,166,2923,1,0,0,0,168,2928, - 1,0,0,0,170,2970,1,0,0,0,172,2972,1,0,0,0,174,2975,1,0,0,0,176,2980, - 1,0,0,0,178,2982,1,0,0,0,180,2990,1,0,0,0,182,3001,1,0,0,0,184,3003, - 1,0,0,0,186,3011,1,0,0,0,188,3013,1,0,0,0,190,3096,1,0,0,0,192,3098, - 1,0,0,0,194,3100,1,0,0,0,196,3102,1,0,0,0,198,3106,1,0,0,0,200,3114, - 1,0,0,0,202,3125,1,0,0,0,204,3129,1,0,0,0,206,3131,1,0,0,0,208,3152, - 1,0,0,0,210,3155,1,0,0,0,212,3164,1,0,0,0,214,3174,1,0,0,0,216,3195, - 1,0,0,0,218,3255,1,0,0,0,220,3257,1,0,0,0,222,3266,1,0,0,0,224,3271, - 1,0,0,0,226,3273,1,0,0,0,228,3276,1,0,0,0,230,3284,1,0,0,0,232,3287, - 1,0,0,0,234,3294,1,0,0,0,236,3382,1,0,0,0,238,3384,1,0,0,0,240,3387, - 1,0,0,0,242,3391,1,0,0,0,244,3395,1,0,0,0,246,3403,1,0,0,0,248,3411, - 1,0,0,0,250,3416,1,0,0,0,252,3419,1,0,0,0,254,3427,1,0,0,0,256,3437, - 1,0,0,0,258,3450,1,0,0,0,260,3452,1,0,0,0,262,3456,1,0,0,0,264,3469, - 1,0,0,0,266,3471,1,0,0,0,268,3476,1,0,0,0,270,3478,1,0,0,0,272,3485, - 1,0,0,0,274,3516,1,0,0,0,276,3518,1,0,0,0,278,3527,1,0,0,0,280,3529, - 1,0,0,0,282,3538,1,0,0,0,284,3542,1,0,0,0,286,3550,1,0,0,0,288,3555, - 1,0,0,0,290,3559,1,0,0,0,292,3578,1,0,0,0,294,3588,1,0,0,0,296,3602, - 1,0,0,0,298,3618,1,0,0,0,300,3624,1,0,0,0,302,3639,1,0,0,0,304,3652, - 1,0,0,0,306,3654,1,0,0,0,308,3664,1,0,0,0,310,3676,1,0,0,0,312,3684, - 1,0,0,0,314,3686,1,0,0,0,316,3691,1,0,0,0,318,3729,1,0,0,0,320,3731, - 1,0,0,0,322,3739,1,0,0,0,324,3741,1,0,0,0,326,3749,1,0,0,0,328,3771, - 1,0,0,0,330,3773,1,0,0,0,332,3777,1,0,0,0,334,3784,1,0,0,0,336,3786, - 1,0,0,0,338,3788,1,0,0,0,340,3790,1,0,0,0,342,3801,1,0,0,0,344,3804, - 1,0,0,0,346,3818,1,0,0,0,348,3828,1,0,0,0,350,3830,1,0,0,0,352,3839, - 1,0,0,0,354,3842,1,0,0,0,356,3947,1,0,0,0,358,3949,1,0,0,0,360,3968, - 1,0,0,0,362,3971,1,0,0,0,364,3975,1,0,0,0,366,3994,1,0,0,0,368,3996, - 1,0,0,0,370,4001,1,0,0,0,372,4009,1,0,0,0,374,4014,1,0,0,0,376,4029, - 1,0,0,0,378,4031,1,0,0,0,380,4034,1,0,0,0,382,4036,1,0,0,0,384,4038, - 1,0,0,0,386,4057,1,0,0,0,388,4060,1,0,0,0,390,4065,1,0,0,0,392,4067, - 1,0,0,0,394,4116,1,0,0,0,396,4118,1,0,0,0,398,4136,1,0,0,0,400,4138, - 1,0,0,0,402,4143,1,0,0,0,404,4158,1,0,0,0,406,4160,1,0,0,0,408,4169, - 1,0,0,0,410,4189,1,0,0,0,412,4203,1,0,0,0,414,4237,1,0,0,0,416,4267, - 1,0,0,0,418,4269,1,0,0,0,420,4274,1,0,0,0,422,4280,1,0,0,0,424,4283, - 1,0,0,0,426,4286,1,0,0,0,428,4292,1,0,0,0,430,4295,1,0,0,0,432,4297, - 1,0,0,0,434,4306,1,0,0,0,436,4362,1,0,0,0,438,4368,1,0,0,0,440,4370, - 1,0,0,0,442,4376,1,0,0,0,444,4378,1,0,0,0,446,4393,1,0,0,0,448,4395, - 1,0,0,0,450,4399,1,0,0,0,452,4403,1,0,0,0,454,4410,1,0,0,0,456,4412, - 1,0,0,0,458,4414,1,0,0,0,460,4416,1,0,0,0,462,4422,1,0,0,0,464,4424, - 1,0,0,0,466,4426,1,0,0,0,468,4435,1,0,0,0,470,4439,1,0,0,0,472,4452, - 1,0,0,0,474,4454,1,0,0,0,476,4460,1,0,0,0,478,4474,1,0,0,0,480,4500, - 1,0,0,0,482,4502,1,0,0,0,484,4510,1,0,0,0,486,4516,1,0,0,0,488,4524, - 1,0,0,0,490,4535,1,0,0,0,492,4537,1,0,0,0,494,4649,1,0,0,0,496,4651, - 1,0,0,0,498,4655,1,0,0,0,500,4663,1,0,0,0,502,4674,1,0,0,0,504,4676, - 1,0,0,0,506,4680,1,0,0,0,508,4688,1,0,0,0,510,4692,1,0,0,0,512,4694, - 1,0,0,0,514,4724,1,0,0,0,516,4726,1,0,0,0,518,4730,1,0,0,0,520,4748, - 1,0,0,0,522,4787,1,0,0,0,524,4789,1,0,0,0,526,4791,1,0,0,0,528,4800, - 1,0,0,0,530,4802,1,0,0,0,532,4804,1,0,0,0,534,4829,1,0,0,0,536,4831, - 1,0,0,0,538,4851,1,0,0,0,540,4853,1,0,0,0,542,5239,1,0,0,0,544,5241, - 1,0,0,0,546,5273,1,0,0,0,548,5306,1,0,0,0,550,5308,1,0,0,0,552,5310, - 1,0,0,0,554,5318,1,0,0,0,556,5322,1,0,0,0,558,5326,1,0,0,0,560,5332, - 1,0,0,0,562,5336,1,0,0,0,564,5344,1,0,0,0,566,5364,1,0,0,0,568,5535, - 1,0,0,0,570,5539,1,0,0,0,572,5650,1,0,0,0,574,5652,1,0,0,0,576,5657, - 1,0,0,0,578,5663,1,0,0,0,580,5750,1,0,0,0,582,5752,1,0,0,0,584,5754, - 1,0,0,0,586,5756,1,0,0,0,588,5786,1,0,0,0,590,5804,1,0,0,0,592,5806, - 1,0,0,0,594,5814,1,0,0,0,596,5816,1,0,0,0,598,5840,1,0,0,0,600,5900, - 1,0,0,0,602,5902,1,0,0,0,604,5913,1,0,0,0,606,5915,1,0,0,0,608,5919, - 1,0,0,0,610,5952,1,0,0,0,612,5954,1,0,0,0,614,5958,1,0,0,0,616,5962, - 1,0,0,0,618,5971,1,0,0,0,620,5983,1,0,0,0,622,6015,1,0,0,0,624,6017, - 1,0,0,0,626,6019,1,0,0,0,628,6056,1,0,0,0,630,6058,1,0,0,0,632,6060, - 1,0,0,0,634,6062,1,0,0,0,636,6065,1,0,0,0,638,6096,1,0,0,0,640,6109, - 1,0,0,0,642,6111,1,0,0,0,644,6116,1,0,0,0,646,6124,1,0,0,0,648,6127, - 1,0,0,0,650,6129,1,0,0,0,652,6135,1,0,0,0,654,6137,1,0,0,0,656,6164, - 1,0,0,0,658,6175,1,0,0,0,660,6178,1,0,0,0,662,6184,1,0,0,0,664,6192, - 1,0,0,0,666,6208,1,0,0,0,668,6210,1,0,0,0,670,6226,1,0,0,0,672,6228, - 1,0,0,0,674,6244,1,0,0,0,676,6246,1,0,0,0,678,6252,1,0,0,0,680,6273, - 1,0,0,0,682,6282,1,0,0,0,684,6284,1,0,0,0,686,6286,1,0,0,0,688,6300, - 1,0,0,0,690,6302,1,0,0,0,692,6307,1,0,0,0,694,6309,1,0,0,0,696,6324, - 1,0,0,0,698,6332,1,0,0,0,700,6335,1,0,0,0,702,6344,1,0,0,0,704,6383, - 1,0,0,0,706,6410,1,0,0,0,708,6412,1,0,0,0,710,6424,1,0,0,0,712,6427, - 1,0,0,0,714,6430,1,0,0,0,716,6438,1,0,0,0,718,6450,1,0,0,0,720,6453, - 1,0,0,0,722,6457,1,0,0,0,724,6486,1,0,0,0,726,6488,1,0,0,0,728,6497, - 1,0,0,0,730,6528,1,0,0,0,732,6535,1,0,0,0,734,6540,1,0,0,0,736,6548, - 1,0,0,0,738,6551,1,0,0,0,740,6555,1,0,0,0,742,6562,1,0,0,0,744,6601, - 1,0,0,0,746,6607,1,0,0,0,748,6609,1,0,0,0,750,6612,1,0,0,0,752,6659, - 1,0,0,0,754,6677,1,0,0,0,756,6689,1,0,0,0,758,6706,1,0,0,0,760,6708, - 1,0,0,0,762,6716,1,0,0,0,764,6730,1,0,0,0,766,7123,1,0,0,0,768,7125, - 1,0,0,0,770,7197,1,0,0,0,772,7199,1,0,0,0,774,7386,1,0,0,0,776,7388, - 1,0,0,0,778,7396,1,0,0,0,780,7412,1,0,0,0,782,7419,1,0,0,0,784,7421, - 1,0,0,0,786,7614,1,0,0,0,788,7616,1,0,0,0,790,7625,1,0,0,0,792,7633, - 1,0,0,0,794,7673,1,0,0,0,796,7675,1,0,0,0,798,7685,1,0,0,0,800,7693, - 1,0,0,0,802,7773,1,0,0,0,804,7775,1,0,0,0,806,7801,1,0,0,0,808,7804, - 1,0,0,0,810,7820,1,0,0,0,812,7822,1,0,0,0,814,7824,1,0,0,0,816,7826, - 1,0,0,0,818,7828,1,0,0,0,820,7833,1,0,0,0,822,7836,1,0,0,0,824,7843, - 1,0,0,0,826,7910,1,0,0,0,828,7912,1,0,0,0,830,7924,1,0,0,0,832,7926, - 1,0,0,0,834,7936,1,0,0,0,836,7938,1,0,0,0,838,7944,1,0,0,0,840,7976, - 1,0,0,0,842,7983,1,0,0,0,844,7986,1,0,0,0,846,7995,1,0,0,0,848,7998, - 1,0,0,0,850,8002,1,0,0,0,852,8019,1,0,0,0,854,8021,1,0,0,0,856,8023, - 1,0,0,0,858,8039,1,0,0,0,860,8045,1,0,0,0,862,8053,1,0,0,0,864,8055, - 1,0,0,0,866,8061,1,0,0,0,868,8066,1,0,0,0,870,8075,1,0,0,0,872,8101, - 1,0,0,0,874,8103,1,0,0,0,876,8173,1,0,0,0,878,8175,1,0,0,0,880,8177, - 1,0,0,0,882,8208,1,0,0,0,884,8210,1,0,0,0,886,8221,1,0,0,0,888,8250, - 1,0,0,0,890,8266,1,0,0,0,892,8268,1,0,0,0,894,8276,1,0,0,0,896,8278, - 1,0,0,0,898,8284,1,0,0,0,900,8288,1,0,0,0,902,8290,1,0,0,0,904,8292, - 1,0,0,0,906,8303,1,0,0,0,908,8305,1,0,0,0,910,8309,1,0,0,0,912,8313, - 1,0,0,0,914,8318,1,0,0,0,916,8320,1,0,0,0,918,8322,1,0,0,0,920,8326, - 1,0,0,0,922,8330,1,0,0,0,924,8338,1,0,0,0,926,8358,1,0,0,0,928,8369, - 1,0,0,0,930,8371,1,0,0,0,932,8379,1,0,0,0,934,8385,1,0,0,0,936,8389, - 1,0,0,0,938,8391,1,0,0,0,940,8399,1,0,0,0,942,8407,1,0,0,0,944,8432, - 1,0,0,0,946,8434,1,0,0,0,948,8438,1,0,0,0,950,8447,1,0,0,0,952,8459, - 1,0,0,0,954,8468,1,0,0,0,956,8480,1,0,0,0,958,8482,1,0,0,0,960,8490, - 1,0,0,0,962,8493,1,0,0,0,964,8517,1,0,0,0,966,8519,1,0,0,0,968,8523, - 1,0,0,0,970,8537,1,0,0,0,972,8540,1,0,0,0,974,8551,1,0,0,0,976,8567, - 1,0,0,0,978,8569,1,0,0,0,980,8574,1,0,0,0,982,8577,1,0,0,0,984,8592, - 1,0,0,0,986,8618,1,0,0,0,988,8620,1,0,0,0,990,8623,1,0,0,0,992,8631, - 1,0,0,0,994,8639,1,0,0,0,996,8648,1,0,0,0,998,8656,1,0,0,0,1000, - 8660,1,0,0,0,1002,8670,1,0,0,0,1004,8701,1,0,0,0,1006,8705,1,0,0, - 0,1008,8752,1,0,0,0,1010,8767,1,0,0,0,1012,8769,1,0,0,0,1014,8773, - 1,0,0,0,1016,8779,1,0,0,0,1018,8787,1,0,0,0,1020,8804,1,0,0,0,1022, - 8812,1,0,0,0,1024,8829,1,0,0,0,1026,8831,1,0,0,0,1028,8833,1,0,0, - 0,1030,8842,1,0,0,0,1032,8860,1,0,0,0,1034,8862,1,0,0,0,1036,8864, - 1,0,0,0,1038,8866,1,0,0,0,1040,8874,1,0,0,0,1042,8876,1,0,0,0,1044, - 8878,1,0,0,0,1046,8882,1,0,0,0,1048,8890,1,0,0,0,1050,8911,1,0,0, - 0,1052,8913,1,0,0,0,1054,8915,1,0,0,0,1056,8921,1,0,0,0,1058,8938, - 1,0,0,0,1060,8947,1,0,0,0,1062,8949,1,0,0,0,1064,8956,1,0,0,0,1066, - 8960,1,0,0,0,1068,8962,1,0,0,0,1070,8964,1,0,0,0,1072,8966,1,0,0, - 0,1074,8973,1,0,0,0,1076,8990,1,0,0,0,1078,8992,1,0,0,0,1080,8995, - 1,0,0,0,1082,9000,1,0,0,0,1084,9005,1,0,0,0,1086,9011,1,0,0,0,1088, - 9018,1,0,0,0,1090,9020,1,0,0,0,1092,9023,1,0,0,0,1094,9027,1,0,0, - 0,1096,9034,1,0,0,0,1098,9046,1,0,0,0,1100,9049,1,0,0,0,1102,9063, - 1,0,0,0,1104,9066,1,0,0,0,1106,9135,1,0,0,0,1108,9159,1,0,0,0,1110, - 9168,1,0,0,0,1112,9182,1,0,0,0,1114,9184,1,0,0,0,1116,9195,1,0,0, - 0,1118,9218,1,0,0,0,1120,9221,1,0,0,0,1122,9266,1,0,0,0,1124,9268, - 1,0,0,0,1126,9276,1,0,0,0,1128,9284,1,0,0,0,1130,9291,1,0,0,0,1132, - 9299,1,0,0,0,1134,9316,1,0,0,0,1136,9318,1,0,0,0,1138,9322,1,0,0, - 0,1140,9330,1,0,0,0,1142,9335,1,0,0,0,1144,9338,1,0,0,0,1146,9341, - 1,0,0,0,1148,9348,1,0,0,0,1150,9350,1,0,0,0,1152,9358,1,0,0,0,1154, - 9363,1,0,0,0,1156,9384,1,0,0,0,1158,9392,1,0,0,0,1160,9402,1,0,0, - 0,1162,9414,1,0,0,0,1164,9416,1,0,0,0,1166,9430,1,0,0,0,1168,9450, - 1,0,0,0,1170,9459,1,0,0,0,1172,9477,1,0,0,0,1174,9483,1,0,0,0,1176, - 9485,1,0,0,0,1178,9492,1,0,0,0,1180,9520,1,0,0,0,1182,9522,1,0,0, - 0,1184,9528,1,0,0,0,1186,9532,1,0,0,0,1188,9534,1,0,0,0,1190,9542, - 1,0,0,0,1192,9546,1,0,0,0,1194,9553,1,0,0,0,1196,9570,1,0,0,0,1198, - 9572,1,0,0,0,1200,9574,1,0,0,0,1202,9584,1,0,0,0,1204,9592,1,0,0, - 0,1206,9619,1,0,0,0,1208,9621,1,0,0,0,1210,9628,1,0,0,0,1212,9631, - 1,0,0,0,1214,9633,1,0,0,0,1216,9637,1,0,0,0,1218,9645,1,0,0,0,1220, - 9653,1,0,0,0,1222,9661,1,0,0,0,1224,9670,1,0,0,0,1226,9674,1,0,0, - 0,1228,9678,1,0,0,0,1230,9704,1,0,0,0,1232,9718,1,0,0,0,1234,9738, - 1,0,0,0,1236,9748,1,0,0,0,1238,9752,1,0,0,0,1240,9760,1,0,0,0,1242, - 9768,1,0,0,0,1244,9774,1,0,0,0,1246,9778,1,0,0,0,1248,9785,1,0,0, - 0,1250,9790,1,0,0,0,1252,9805,1,0,0,0,1254,9885,1,0,0,0,1256,9887, - 1,0,0,0,1258,9889,1,0,0,0,1260,9928,1,0,0,0,1262,9932,1,0,0,0,1264, - 10118,1,0,0,0,1266,10125,1,0,0,0,1268,10137,1,0,0,0,1270,10139,1, - 0,0,0,1272,10144,1,0,0,0,1274,10152,1,0,0,0,1276,10157,1,0,0,0,1278, - 10163,1,0,0,0,1280,10180,1,0,0,0,1282,10182,1,0,0,0,1284,10185,1, - 0,0,0,1286,10191,1,0,0,0,1288,10197,1,0,0,0,1290,10200,1,0,0,0,1292, - 10208,1,0,0,0,1294,10212,1,0,0,0,1296,10217,1,0,0,0,1298,10232,1, - 0,0,0,1300,10234,1,0,0,0,1302,10253,1,0,0,0,1304,10261,1,0,0,0,1306, - 10270,1,0,0,0,1308,10272,1,0,0,0,1310,10293,1,0,0,0,1312,10295,1, - 0,0,0,1314,10302,1,0,0,0,1316,10308,1,0,0,0,1318,10312,1,0,0,0,1320, - 10314,1,0,0,0,1322,10322,1,0,0,0,1324,10330,1,0,0,0,1326,10344,1, - 0,0,0,1328,10346,1,0,0,0,1330,10354,1,0,0,0,1332,10362,1,0,0,0,1334, - 10375,1,0,0,0,1336,10379,1,0,0,0,1338,10381,1,0,0,0,1340,10394,1, - 0,0,0,1342,10396,1,0,0,0,1344,10404,1,0,0,0,1346,10411,1,0,0,0,1348, - 10419,1,0,0,0,1350,10431,1,0,0,0,1352,10433,1,0,0,0,1354,10435,1, - 0,0,0,1356,10444,1,0,0,0,1358,10475,1,0,0,0,1360,10484,1,0,0,0,1362, - 10491,1,0,0,0,1364,10493,1,0,0,0,1366,10504,1,0,0,0,1368,10508,1, - 0,0,0,1370,10513,1,0,0,0,1372,10516,1,0,0,0,1374,10518,1,0,0,0,1376, - 10539,1,0,0,0,1378,10541,1,0,0,0,1380,10544,1,0,0,0,1382,10551,1, - 0,0,0,1384,10554,1,0,0,0,1386,10556,1,0,0,0,1388,10572,1,0,0,0,1390, - 10574,1,0,0,0,1392,10582,1,0,0,0,1394,10590,1,0,0,0,1396,10598,1, - 0,0,0,1398,10606,1,0,0,0,1400,10614,1,0,0,0,1402,10618,1,0,0,0,1404, - 10622,1,0,0,0,1406,10626,1,0,0,0,1408,10630,1,0,0,0,1410,10634,1, - 0,0,0,1412,10638,1,0,0,0,1414,10642,1,0,0,0,1416,10650,1,0,0,0,1418, - 10658,1,0,0,0,1420,10662,1,0,0,0,1422,10666,1,0,0,0,1424,10670,1, - 0,0,0,1426,10672,1,0,0,0,1428,10678,1,0,0,0,1430,10684,1,0,0,0,1432, - 10694,1,0,0,0,1434,10696,1,0,0,0,1436,10698,1,0,0,0,1438,10700,1, - 0,0,0,1440,10702,1,0,0,0,1442,10708,1,0,0,0,1444,10714,1,0,0,0,1446, - 10720,1,0,0,0,1448,10757,1,0,0,0,1450,10759,1,0,0,0,1452,10761,1, - 0,0,0,1454,10763,1,0,0,0,1456,10765,1,0,0,0,1458,10767,1,0,0,0,1460, - 10782,1,0,0,0,1462,10784,1,0,0,0,1464,10792,1,0,0,0,1466,10794,1, - 0,0,0,1468,10796,1,0,0,0,1470,10803,1,0,0,0,1472,10805,1,0,0,0,1474, - 10817,1,0,0,0,1476,10819,1,0,0,0,1478,10833,1,0,0,0,1480,10837,1, - 0,0,0,1482,10846,1,0,0,0,1484,10852,1,0,0,0,1486,10856,1,0,0,0,1488, - 10862,1,0,0,0,1490,10870,1,0,0,0,1492,10882,1,0,0,0,1494,10884,1, - 0,0,0,1496,10886,1,0,0,0,1498,10939,1,0,0,0,1500,10941,1,0,0,0,1502, - 10943,1,0,0,0,1504,10945,1,0,0,0,1506,10952,1,0,0,0,1508,10975,1, - 0,0,0,1510,10977,1,0,0,0,1512,10983,1,0,0,0,1514,10987,1,0,0,0,1516, - 10989,1,0,0,0,1518,10996,1,0,0,0,1520,11003,1,0,0,0,1522,11006,1, - 0,0,0,1524,11010,1,0,0,0,1526,11017,1,0,0,0,1528,11019,1,0,0,0,1530, - 11043,1,0,0,0,1532,11045,1,0,0,0,1534,11052,1,0,0,0,1536,11054,1, - 0,0,0,1538,11062,1,0,0,0,1540,11065,1,0,0,0,1542,11069,1,0,0,0,1544, - 11071,1,0,0,0,1546,11075,1,0,0,0,1548,11077,1,0,0,0,1550,11082,1, - 0,0,0,1552,11087,1,0,0,0,1554,11093,1,0,0,0,1556,11097,1,0,0,0,1558, - 11099,1,0,0,0,1560,11104,1,0,0,0,1562,11134,1,0,0,0,1564,11136,1, - 0,0,0,1566,11156,1,0,0,0,1568,11160,1,0,0,0,1570,11162,1,0,0,0,1572, - 11167,1,0,0,0,1574,11176,1,0,0,0,1576,11178,1,0,0,0,1578,11186,1, - 0,0,0,1580,11190,1,0,0,0,1582,11192,1,0,0,0,1584,11196,1,0,0,0,1586, - 11207,1,0,0,0,1588,11224,1,0,0,0,1590,11230,1,0,0,0,1592,11232,1, - 0,0,0,1594,11242,1,0,0,0,1596,11245,1,0,0,0,1598,11249,1,0,0,0,1600, - 11257,1,0,0,0,1602,11259,1,0,0,0,1604,11262,1,0,0,0,1606,11267,1, - 0,0,0,1608,11272,1,0,0,0,1610,11294,1,0,0,0,1612,11308,1,0,0,0,1614, - 11312,1,0,0,0,1616,11317,1,0,0,0,1618,11319,1,0,0,0,1620,11321,1, - 0,0,0,1622,11333,1,0,0,0,1624,11335,1,0,0,0,1626,11342,1,0,0,0,1628, - 11344,1,0,0,0,1630,11362,1,0,0,0,1632,11398,1,0,0,0,1634,11400,1, - 0,0,0,1636,11409,1,0,0,0,1638,11414,1,0,0,0,1640,11416,1,0,0,0,1642, - 11420,1,0,0,0,1644,11428,1,0,0,0,1646,11436,1,0,0,0,1648,11438,1, - 0,0,0,1650,11445,1,0,0,0,1652,11448,1,0,0,0,1654,11464,1,0,0,0,1656, - 11466,1,0,0,0,1658,11480,1,0,0,0,1660,11482,1,0,0,0,1662,11509,1, - 0,0,0,1664,11511,1,0,0,0,1666,11522,1,0,0,0,1668,11528,1,0,0,0,1670, - 11532,1,0,0,0,1672,11534,1,0,0,0,1674,11544,1,0,0,0,1676,11549,1, - 0,0,0,1678,11566,1,0,0,0,1680,11568,1,0,0,0,1682,11576,1,0,0,0,1684, - 11613,1,0,0,0,1686,11621,1,0,0,0,1688,11649,1,0,0,0,1690,11651,1, - 0,0,0,1692,11665,1,0,0,0,1694,11687,1,0,0,0,1696,11689,1,0,0,0,1698, - 11702,1,0,0,0,1700,11704,1,0,0,0,1702,11708,1,0,0,0,1704,11711,1, - 0,0,0,1706,11717,1,0,0,0,1708,11723,1,0,0,0,1710,11741,1,0,0,0,1712, - 11745,1,0,0,0,1714,11750,1,0,0,0,1716,11753,1,0,0,0,1718,11757,1, - 0,0,0,1720,11762,1,0,0,0,1722,11773,1,0,0,0,1724,11777,1,0,0,0,1726, - 11781,1,0,0,0,1728,11785,1,0,0,0,1730,11787,1,0,0,0,1732,11792,1, - 0,0,0,1734,11794,1,0,0,0,1736,11797,1,0,0,0,1738,11817,1,0,0,0,1740, - 11819,1,0,0,0,1742,11821,1,0,0,0,1744,11823,1,0,0,0,1746,11825,1, - 0,0,0,1748,11829,1,0,0,0,1750,1752,3,4,2,0,1751,1750,1,0,0,0,1752, - 1755,1,0,0,0,1753,1751,1,0,0,0,1753,1754,1,0,0,0,1754,1756,1,0,0, - 0,1755,1753,1,0,0,0,1756,1757,5,0,0,1,1757,1,1,0,0,0,1758,1759,3, - 1504,752,0,1759,3,1,0,0,0,1760,1762,3,6,3,0,1761,1763,5,7,0,0,1762, - 1761,1,0,0,0,1762,1763,1,0,0,0,1763,5,1,0,0,0,1764,1882,3,488,244, - 0,1765,1882,3,864,432,0,1766,1882,3,856,428,0,1767,1882,3,858,429, - 0,1768,1882,3,616,308,0,1769,1882,3,870,435,0,1770,1882,3,514,257, - 0,1771,1882,3,350,175,0,1772,1882,3,356,178,0,1773,1882,3,366,183, - 0,1774,1882,3,392,196,0,1775,1882,3,716,358,0,1776,1882,3,42,21, - 0,1777,1882,3,770,385,0,1778,1882,3,774,387,0,1779,1882,3,786,393, - 0,1780,1882,3,776,388,0,1781,1882,3,784,392,0,1782,1882,3,410,205, - 0,1783,1882,3,412,206,0,1784,1882,3,310,155,0,1785,1882,3,866,433, - 0,1786,1882,3,104,52,0,1787,1882,3,764,382,0,1788,1882,3,150,75, - 0,1789,1882,3,794,397,0,1790,1882,3,30,15,0,1791,1882,3,32,16,0, - 1792,1882,3,26,13,0,1793,1882,3,802,401,0,1794,1882,3,292,146,0, - 1795,1882,3,876,438,0,1796,1882,3,874,437,0,1797,1882,3,406,203, - 0,1798,1882,3,890,445,0,1799,1882,3,10,5,0,1800,1882,3,100,50,0, - 1801,1882,3,156,78,0,1802,1882,3,882,441,0,1803,1882,3,568,284,0, - 1804,1882,3,94,47,0,1805,1882,3,158,79,0,1806,1882,3,432,216,0,1807, - 1882,3,294,147,0,1808,1882,3,492,246,0,1809,1882,3,744,372,0,1810, - 1882,3,880,440,0,1811,1882,3,868,434,0,1812,1882,3,344,172,0,1813, - 1882,3,358,179,0,1814,1882,3,384,192,0,1815,1882,3,394,197,0,1816, - 1882,3,654,327,0,1817,1882,3,40,20,0,1818,1882,3,300,150,0,1819, - 1882,3,518,259,0,1820,1882,3,532,266,0,1821,1882,3,788,394,0,1822, - 1882,3,534,267,0,1823,1882,3,408,204,0,1824,1882,3,326,163,0,1825, - 1882,3,46,23,0,1826,1882,3,308,154,0,1827,1882,3,188,94,0,1828,1882, - 3,796,398,0,1829,1882,3,290,145,0,1830,1882,3,340,170,0,1831,1882, - 3,750,375,0,1832,1882,3,436,218,0,1833,1882,3,480,240,0,1834,1882, - 3,12,6,0,1835,1882,3,24,12,0,1836,1882,3,402,201,0,1837,1882,3,844, - 422,0,1838,1882,3,948,474,0,1839,1882,3,992,496,0,1840,1882,3,494, - 247,0,1841,1882,3,968,484,0,1842,1882,3,102,51,0,1843,1882,3,738, - 369,0,1844,1882,3,542,271,0,1845,1882,3,944,472,0,1846,1882,3,926, - 463,0,1847,1882,3,578,289,0,1848,1882,3,586,293,0,1849,1882,3,608, - 304,0,1850,1882,3,1682,841,0,1851,1882,3,396,198,0,1852,1882,3,626, - 313,0,1853,1882,3,950,475,0,1854,1882,3,822,411,0,1855,1882,3,306, - 153,0,1856,1882,3,842,421,0,1857,1882,3,972,486,0,1858,1882,3,818, - 409,0,1859,1882,3,938,469,0,1860,1882,3,540,270,0,1861,1882,3,754, - 377,0,1862,1882,3,726,363,0,1863,1882,3,724,362,0,1864,1882,3,728, - 364,0,1865,1882,3,766,383,0,1866,1882,3,588,294,0,1867,1882,3,610, - 305,0,1868,1882,3,804,402,0,1869,1882,3,572,286,0,1870,1882,3,1000, - 500,0,1871,1882,3,826,413,0,1872,1882,3,564,282,0,1873,1882,3,824, - 412,0,1874,1882,3,982,491,0,1875,1882,3,888,444,0,1876,1882,3,82, - 41,0,1877,1882,3,54,27,0,1878,1882,3,92,46,0,1879,1882,3,838,419, - 0,1880,1882,3,8,4,0,1881,1764,1,0,0,0,1881,1765,1,0,0,0,1881,1766, - 1,0,0,0,1881,1767,1,0,0,0,1881,1768,1,0,0,0,1881,1769,1,0,0,0,1881, - 1770,1,0,0,0,1881,1771,1,0,0,0,1881,1772,1,0,0,0,1881,1773,1,0,0, - 0,1881,1774,1,0,0,0,1881,1775,1,0,0,0,1881,1776,1,0,0,0,1881,1777, - 1,0,0,0,1881,1778,1,0,0,0,1881,1779,1,0,0,0,1881,1780,1,0,0,0,1881, - 1781,1,0,0,0,1881,1782,1,0,0,0,1881,1783,1,0,0,0,1881,1784,1,0,0, - 0,1881,1785,1,0,0,0,1881,1786,1,0,0,0,1881,1787,1,0,0,0,1881,1788, - 1,0,0,0,1881,1789,1,0,0,0,1881,1790,1,0,0,0,1881,1791,1,0,0,0,1881, - 1792,1,0,0,0,1881,1793,1,0,0,0,1881,1794,1,0,0,0,1881,1795,1,0,0, - 0,1881,1796,1,0,0,0,1881,1797,1,0,0,0,1881,1798,1,0,0,0,1881,1799, - 1,0,0,0,1881,1800,1,0,0,0,1881,1801,1,0,0,0,1881,1802,1,0,0,0,1881, - 1803,1,0,0,0,1881,1804,1,0,0,0,1881,1805,1,0,0,0,1881,1806,1,0,0, - 0,1881,1807,1,0,0,0,1881,1808,1,0,0,0,1881,1809,1,0,0,0,1881,1810, - 1,0,0,0,1881,1811,1,0,0,0,1881,1812,1,0,0,0,1881,1813,1,0,0,0,1881, - 1814,1,0,0,0,1881,1815,1,0,0,0,1881,1816,1,0,0,0,1881,1817,1,0,0, - 0,1881,1818,1,0,0,0,1881,1819,1,0,0,0,1881,1820,1,0,0,0,1881,1821, - 1,0,0,0,1881,1822,1,0,0,0,1881,1823,1,0,0,0,1881,1824,1,0,0,0,1881, - 1825,1,0,0,0,1881,1826,1,0,0,0,1881,1827,1,0,0,0,1881,1828,1,0,0, - 0,1881,1829,1,0,0,0,1881,1830,1,0,0,0,1881,1831,1,0,0,0,1881,1832, - 1,0,0,0,1881,1833,1,0,0,0,1881,1834,1,0,0,0,1881,1835,1,0,0,0,1881, - 1836,1,0,0,0,1881,1837,1,0,0,0,1881,1838,1,0,0,0,1881,1839,1,0,0, - 0,1881,1840,1,0,0,0,1881,1841,1,0,0,0,1881,1842,1,0,0,0,1881,1843, - 1,0,0,0,1881,1844,1,0,0,0,1881,1845,1,0,0,0,1881,1846,1,0,0,0,1881, - 1847,1,0,0,0,1881,1848,1,0,0,0,1881,1849,1,0,0,0,1881,1850,1,0,0, - 0,1881,1851,1,0,0,0,1881,1852,1,0,0,0,1881,1853,1,0,0,0,1881,1854, - 1,0,0,0,1881,1855,1,0,0,0,1881,1856,1,0,0,0,1881,1857,1,0,0,0,1881, - 1858,1,0,0,0,1881,1859,1,0,0,0,1881,1860,1,0,0,0,1881,1861,1,0,0, - 0,1881,1862,1,0,0,0,1881,1863,1,0,0,0,1881,1864,1,0,0,0,1881,1865, - 1,0,0,0,1881,1866,1,0,0,0,1881,1867,1,0,0,0,1881,1868,1,0,0,0,1881, - 1869,1,0,0,0,1881,1870,1,0,0,0,1881,1871,1,0,0,0,1881,1872,1,0,0, - 0,1881,1873,1,0,0,0,1881,1874,1,0,0,0,1881,1875,1,0,0,0,1881,1876, - 1,0,0,0,1881,1877,1,0,0,0,1881,1878,1,0,0,0,1881,1879,1,0,0,0,1881, - 1880,1,0,0,0,1882,7,1,0,0,0,1883,1885,5,581,0,0,1884,1886,5,582, - 0,0,1885,1884,1,0,0,0,1885,1886,1,0,0,0,1886,9,1,0,0,0,1887,1888, - 5,433,0,0,1888,1889,3,1258,629,0,1889,11,1,0,0,0,1890,1891,5,46, - 0,0,1891,1892,5,318,0,0,1892,1894,3,1468,734,0,1893,1895,3,14,7, - 0,1894,1893,1,0,0,0,1894,1895,1,0,0,0,1895,1896,1,0,0,0,1896,1897, - 3,16,8,0,1897,13,1,0,0,0,1898,1899,5,105,0,0,1899,15,1,0,0,0,1900, - 1902,3,22,11,0,1901,1900,1,0,0,0,1902,1905,1,0,0,0,1903,1901,1,0, - 0,0,1903,1904,1,0,0,0,1904,17,1,0,0,0,1905,1903,1,0,0,0,1906,1908, - 3,20,10,0,1907,1906,1,0,0,0,1908,1911,1,0,0,0,1909,1907,1,0,0,0, - 1909,1910,1,0,0,0,1910,19,1,0,0,0,1911,1909,1,0,0,0,1912,1915,5, - 287,0,0,1913,1916,3,1458,729,0,1914,1916,5,78,0,0,1915,1913,1,0, - 0,0,1915,1914,1,0,0,0,1916,1948,1,0,0,0,1917,1918,7,0,0,0,1918,1919, - 5,287,0,0,1919,1948,3,1458,729,0,1920,1948,7,1,0,0,1921,1948,7,2, - 0,0,1922,1948,7,3,0,0,1923,1948,7,4,0,0,1924,1948,7,5,0,0,1925,1948, - 7,6,0,0,1926,1948,7,7,0,0,1927,1948,7,8,0,0,1928,1929,5,164,0,0, - 1929,1930,5,74,0,0,1930,1948,3,1464,732,0,1931,1932,5,371,0,0,1932, - 1933,5,368,0,0,1933,1948,3,1458,729,0,1934,1935,5,68,0,0,1935,1936, - 5,318,0,0,1936,1948,3,1416,708,0,1937,1938,5,68,0,0,1938,1939,5, - 66,0,0,1939,1948,3,1416,708,0,1940,1941,5,318,0,0,1941,1948,3,1472, - 736,0,1942,1943,5,134,0,0,1943,1948,3,1416,708,0,1944,1945,5,99, - 0,0,1945,1948,3,1472,736,0,1946,1948,3,1492,746,0,1947,1912,1,0, - 0,0,1947,1917,1,0,0,0,1947,1920,1,0,0,0,1947,1921,1,0,0,0,1947,1922, - 1,0,0,0,1947,1923,1,0,0,0,1947,1924,1,0,0,0,1947,1925,1,0,0,0,1947, - 1926,1,0,0,0,1947,1927,1,0,0,0,1947,1928,1,0,0,0,1947,1931,1,0,0, - 0,1947,1934,1,0,0,0,1947,1937,1,0,0,0,1947,1940,1,0,0,0,1947,1942, - 1,0,0,0,1947,1944,1,0,0,0,1947,1946,1,0,0,0,1948,21,1,0,0,0,1949, - 1960,3,20,10,0,1950,1951,5,348,0,0,1951,1960,3,1456,728,0,1952,1953, - 5,134,0,0,1953,1960,3,1472,736,0,1954,1955,5,318,0,0,1955,1960,3, - 1472,736,0,1956,1957,5,68,0,0,1957,1958,7,9,0,0,1958,1960,3,1472, - 736,0,1959,1949,1,0,0,0,1959,1950,1,0,0,0,1959,1952,1,0,0,0,1959, - 1954,1,0,0,0,1959,1956,1,0,0,0,1960,23,1,0,0,0,1961,1962,5,46,0, - 0,1962,1963,5,99,0,0,1963,1965,3,1468,734,0,1964,1966,3,14,7,0,1965, - 1964,1,0,0,0,1965,1966,1,0,0,0,1966,1967,1,0,0,0,1967,1968,3,16, - 8,0,1968,25,1,0,0,0,1969,1970,5,138,0,0,1970,1971,7,10,0,0,1971, - 1973,3,1470,735,0,1972,1974,3,14,7,0,1973,1972,1,0,0,0,1973,1974, - 1,0,0,0,1974,1975,1,0,0,0,1975,1976,3,18,9,0,1976,27,1,0,0,0,1977, - 1982,1,0,0,0,1978,1979,5,68,0,0,1979,1980,5,175,0,0,1980,1982,3, - 1420,710,0,1981,1977,1,0,0,0,1981,1978,1,0,0,0,1982,29,1,0,0,0,1983, - 1984,5,138,0,0,1984,1987,7,10,0,0,1985,1988,5,30,0,0,1986,1988,3, - 1470,735,0,1987,1985,1,0,0,0,1987,1986,1,0,0,0,1988,1989,1,0,0,0, - 1989,1990,3,28,14,0,1990,1991,3,88,44,0,1991,31,1,0,0,0,1992,1993, - 5,138,0,0,1993,1994,5,442,0,0,1994,1996,3,1426,713,0,1995,1997,3, - 660,330,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997,1998,1,0,0,0, - 1998,1999,3,34,17,0,1999,33,1,0,0,0,2000,2002,3,36,18,0,2001,2003, - 5,315,0,0,2002,2001,1,0,0,0,2002,2003,1,0,0,0,2003,2021,1,0,0,0, - 2004,2005,5,309,0,0,2005,2006,5,94,0,0,2006,2021,3,1424,712,0,2007, - 2008,5,282,0,0,2008,2009,5,94,0,0,2009,2021,3,1470,735,0,2010,2011, - 5,333,0,0,2011,2012,5,323,0,0,2012,2021,3,48,24,0,2013,2015,5,269, - 0,0,2014,2013,1,0,0,0,2014,2015,1,0,0,0,2015,2016,1,0,0,0,2016,2017, - 5,462,0,0,2017,2018,5,80,0,0,2018,2019,5,204,0,0,2019,2021,3,1436, - 718,0,2020,2000,1,0,0,0,2020,2004,1,0,0,0,2020,2007,1,0,0,0,2020, - 2010,1,0,0,0,2020,2014,1,0,0,0,2021,35,1,0,0,0,2022,2026,3,38,19, - 0,2023,2025,3,38,19,0,2024,2023,1,0,0,0,2025,2028,1,0,0,0,2026,2024, - 1,0,0,0,2026,2027,1,0,0,0,2027,37,1,0,0,0,2028,2026,1,0,0,0,2029, - 2071,5,222,0,0,2030,2071,5,338,0,0,2031,2071,5,377,0,0,2032,2034, - 5,77,0,0,2033,2032,1,0,0,0,2033,2034,1,0,0,0,2034,2035,1,0,0,0,2035, - 2071,5,250,0,0,2036,2038,5,205,0,0,2037,2036,1,0,0,0,2037,2038,1, - 0,0,0,2038,2039,1,0,0,0,2039,2040,5,327,0,0,2040,2047,5,243,0,0, - 2041,2043,5,205,0,0,2042,2041,1,0,0,0,2042,2043,1,0,0,0,2043,2044, - 1,0,0,0,2044,2045,5,327,0,0,2045,2047,5,181,0,0,2046,2037,1,0,0, - 0,2046,2042,1,0,0,0,2047,2071,1,0,0,0,2048,2049,5,460,0,0,2049,2071, - 7,11,0,0,2050,2051,5,170,0,0,2051,2071,3,1438,719,0,2052,2053,5, - 320,0,0,2053,2071,3,1436,718,0,2054,2055,5,333,0,0,2055,2056,3,1436, - 718,0,2056,2059,7,12,0,0,2057,2060,3,1436,718,0,2058,2060,5,53,0, - 0,2059,2057,1,0,0,0,2059,2058,1,0,0,0,2060,2071,1,0,0,0,2061,2062, - 5,333,0,0,2062,2063,3,1436,718,0,2063,2064,5,64,0,0,2064,2065,5, - 434,0,0,2065,2071,1,0,0,0,2066,2067,5,313,0,0,2067,2071,3,1436,718, - 0,2068,2069,5,313,0,0,2069,2071,5,30,0,0,2070,2029,1,0,0,0,2070, - 2030,1,0,0,0,2070,2031,1,0,0,0,2070,2033,1,0,0,0,2070,2046,1,0,0, - 0,2070,2048,1,0,0,0,2070,2050,1,0,0,0,2070,2052,1,0,0,0,2070,2054, - 1,0,0,0,2070,2061,1,0,0,0,2070,2066,1,0,0,0,2070,2068,1,0,0,0,2071, - 39,1,0,0,0,2072,2073,5,46,0,0,2073,2074,5,66,0,0,2074,2076,3,1466, - 733,0,2075,2077,3,14,7,0,2076,2075,1,0,0,0,2076,2077,1,0,0,0,2077, - 2078,1,0,0,0,2078,2079,3,16,8,0,2079,41,1,0,0,0,2080,2081,5,138, - 0,0,2081,2082,5,66,0,0,2082,2083,3,1470,735,0,2083,2084,3,44,22, - 0,2084,2085,5,99,0,0,2085,2086,3,1472,736,0,2086,43,1,0,0,0,2087, - 2088,7,13,0,0,2088,45,1,0,0,0,2089,2090,5,46,0,0,2090,2092,5,323, - 0,0,2091,2093,3,516,258,0,2092,2091,1,0,0,0,2092,2093,1,0,0,0,2093, - 2100,1,0,0,0,2094,2096,3,48,24,0,2095,2094,1,0,0,0,2095,2096,1,0, - 0,0,2096,2097,1,0,0,0,2097,2098,5,106,0,0,2098,2101,3,1470,735,0, - 2099,2101,3,48,24,0,2100,2095,1,0,0,0,2100,2099,1,0,0,0,2101,2102, - 1,0,0,0,2102,2103,3,50,25,0,2103,47,1,0,0,0,2104,2106,3,1474,737, - 0,2105,2107,3,560,280,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107, - 49,1,0,0,0,2108,2110,3,52,26,0,2109,2108,1,0,0,0,2110,2113,1,0,0, - 0,2111,2109,1,0,0,0,2111,2112,1,0,0,0,2112,51,1,0,0,0,2113,2111, - 1,0,0,0,2114,2121,3,188,94,0,2115,2121,3,626,313,0,2116,2121,3,308, - 154,0,2117,2121,3,436,218,0,2118,2121,3,586,293,0,2119,2121,3,838, - 419,0,2120,2114,1,0,0,0,2120,2115,1,0,0,0,2120,2116,1,0,0,0,2120, - 2117,1,0,0,0,2120,2118,1,0,0,0,2120,2119,1,0,0,0,2121,53,1,0,0,0, - 2122,2124,5,333,0,0,2123,2125,7,14,0,0,2124,2123,1,0,0,0,2124,2125, - 1,0,0,0,2125,2126,1,0,0,0,2126,2127,3,56,28,0,2127,55,1,0,0,0,2128, - 2129,5,356,0,0,2129,2137,3,832,416,0,2130,2131,5,332,0,0,2131,2132, - 5,154,0,0,2132,2133,5,36,0,0,2133,2134,5,356,0,0,2134,2137,3,832, - 416,0,2135,2137,3,60,30,0,2136,2128,1,0,0,0,2136,2130,1,0,0,0,2136, - 2135,1,0,0,0,2137,57,1,0,0,0,2138,2141,5,30,0,0,2139,2141,3,62,31, - 0,2140,2138,1,0,0,0,2140,2139,1,0,0,0,2141,2143,1,0,0,0,2142,2144, - 7,12,0,0,2143,2142,1,0,0,0,2143,2144,1,0,0,0,2144,2147,1,0,0,0,2145, - 2148,5,53,0,0,2146,2148,3,64,32,0,2147,2145,1,0,0,0,2147,2146,1, - 0,0,0,2147,2148,1,0,0,0,2148,59,1,0,0,0,2149,2150,5,418,0,0,2150, - 2151,5,386,0,0,2151,2177,3,74,37,0,2152,2153,5,152,0,0,2153,2177, - 3,1458,729,0,2154,2155,5,323,0,0,2155,2177,3,1422,711,0,2156,2158, - 5,267,0,0,2157,2159,3,76,38,0,2158,2157,1,0,0,0,2158,2159,1,0,0, - 0,2159,2177,1,0,0,0,2160,2161,5,318,0,0,2161,2177,3,80,40,0,2162, - 2163,5,332,0,0,2163,2164,5,106,0,0,2164,2177,3,80,40,0,2165,2166, - 5,383,0,0,2166,2167,5,279,0,0,2167,2177,3,1276,638,0,2168,2169,5, - 356,0,0,2169,2170,5,337,0,0,2170,2177,3,1458,729,0,2171,2172,3,62, - 31,0,2172,2173,5,64,0,0,2173,2174,5,434,0,0,2174,2177,1,0,0,0,2175, - 2177,3,58,29,0,2176,2149,1,0,0,0,2176,2152,1,0,0,0,2176,2154,1,0, - 0,0,2176,2156,1,0,0,0,2176,2160,1,0,0,0,2176,2162,1,0,0,0,2176,2165, - 1,0,0,0,2176,2168,1,0,0,0,2176,2171,1,0,0,0,2176,2175,1,0,0,0,2177, - 61,1,0,0,0,2178,2183,3,1474,737,0,2179,2180,5,11,0,0,2180,2182,3, - 1474,737,0,2181,2179,1,0,0,0,2182,2185,1,0,0,0,2183,2181,1,0,0,0, - 2183,2184,1,0,0,0,2184,63,1,0,0,0,2185,2183,1,0,0,0,2186,2191,3, - 66,33,0,2187,2188,5,6,0,0,2188,2190,3,66,33,0,2189,2187,1,0,0,0, - 2190,2193,1,0,0,0,2191,2189,1,0,0,0,2191,2192,1,0,0,0,2192,65,1, - 0,0,0,2193,2191,1,0,0,0,2194,2197,3,72,36,0,2195,2197,3,322,161, - 0,2196,2194,1,0,0,0,2196,2195,1,0,0,0,2197,67,1,0,0,0,2198,2199, - 5,300,0,0,2199,2204,7,15,0,0,2200,2201,5,310,0,0,2201,2204,5,300, - 0,0,2202,2204,5,330,0,0,2203,2198,1,0,0,0,2203,2200,1,0,0,0,2203, - 2202,1,0,0,0,2204,69,1,0,0,0,2205,2210,5,96,0,0,2206,2210,5,60,0, - 0,2207,2210,5,80,0,0,2208,2210,3,78,39,0,2209,2205,1,0,0,0,2209, - 2206,1,0,0,0,2209,2207,1,0,0,0,2209,2208,1,0,0,0,2210,71,1,0,0,0, - 2211,2216,5,96,0,0,2212,2216,5,60,0,0,2213,2216,5,80,0,0,2214,2216, - 3,80,40,0,2215,2211,1,0,0,0,2215,2212,1,0,0,0,2215,2213,1,0,0,0, - 2215,2214,1,0,0,0,2216,73,1,0,0,0,2217,2234,3,1458,729,0,2218,2234, - 3,1492,746,0,2219,2220,3,1202,601,0,2220,2222,3,1458,729,0,2221, - 2223,3,1206,603,0,2222,2221,1,0,0,0,2222,2223,1,0,0,0,2223,2234, - 1,0,0,0,2224,2225,3,1202,601,0,2225,2226,5,2,0,0,2226,2227,3,1456, - 728,0,2227,2228,5,3,0,0,2228,2229,3,1458,729,0,2229,2234,1,0,0,0, - 2230,2234,3,322,161,0,2231,2234,5,53,0,0,2232,2234,5,254,0,0,2233, - 2217,1,0,0,0,2233,2218,1,0,0,0,2233,2219,1,0,0,0,2233,2224,1,0,0, - 0,2233,2230,1,0,0,0,2233,2231,1,0,0,0,2233,2232,1,0,0,0,2234,75, - 1,0,0,0,2235,2238,3,1458,729,0,2236,2238,5,53,0,0,2237,2235,1,0, - 0,0,2237,2236,1,0,0,0,2238,77,1,0,0,0,2239,2242,3,1486,743,0,2240, - 2242,3,1458,729,0,2241,2239,1,0,0,0,2241,2240,1,0,0,0,2242,79,1, - 0,0,0,2243,2246,3,1488,744,0,2244,2246,3,1458,729,0,2245,2243,1, - 0,0,0,2245,2244,1,0,0,0,2246,81,1,0,0,0,2247,2248,5,313,0,0,2248, - 2249,3,84,42,0,2249,83,1,0,0,0,2250,2251,5,418,0,0,2251,2259,5,386, - 0,0,2252,2253,5,356,0,0,2253,2254,5,244,0,0,2254,2259,5,251,0,0, - 2255,2256,5,332,0,0,2256,2259,5,106,0,0,2257,2259,3,86,43,0,2258, - 2250,1,0,0,0,2258,2252,1,0,0,0,2258,2255,1,0,0,0,2258,2257,1,0,0, - 0,2259,85,1,0,0,0,2260,2263,5,30,0,0,2261,2263,3,62,31,0,2262,2260, - 1,0,0,0,2262,2261,1,0,0,0,2263,87,1,0,0,0,2264,2265,5,333,0,0,2265, - 2268,3,56,28,0,2266,2268,3,82,41,0,2267,2264,1,0,0,0,2267,2266,1, - 0,0,0,2268,89,1,0,0,0,2269,2270,5,333,0,0,2270,2273,3,60,30,0,2271, - 2273,3,82,41,0,2272,2269,1,0,0,0,2272,2271,1,0,0,0,2273,91,1,0,0, - 0,2274,2284,5,335,0,0,2275,2285,3,62,31,0,2276,2277,5,418,0,0,2277, - 2285,5,386,0,0,2278,2279,5,356,0,0,2279,2280,5,244,0,0,2280,2285, - 5,251,0,0,2281,2282,5,332,0,0,2282,2285,5,106,0,0,2283,2285,5,30, - 0,0,2284,2275,1,0,0,0,2284,2276,1,0,0,0,2284,2278,1,0,0,0,2284,2281, - 1,0,0,0,2284,2283,1,0,0,0,2285,93,1,0,0,0,2286,2287,5,333,0,0,2287, - 2288,5,165,0,0,2288,2289,3,96,48,0,2289,2290,3,98,49,0,2290,95,1, - 0,0,0,2291,2294,5,30,0,0,2292,2294,3,1390,695,0,2293,2291,1,0,0, - 0,2293,2292,1,0,0,0,2294,97,1,0,0,0,2295,2296,7,16,0,0,2296,99,1, - 0,0,0,2297,2298,5,155,0,0,2298,101,1,0,0,0,2299,2300,5,187,0,0,2300, - 2301,7,17,0,0,2301,103,1,0,0,0,2302,2303,5,138,0,0,2303,2305,5,92, - 0,0,2304,2306,3,748,374,0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306, - 2307,1,0,0,0,2307,2310,3,1118,559,0,2308,2311,3,106,53,0,2309,2311, - 3,116,58,0,2310,2308,1,0,0,0,2310,2309,1,0,0,0,2311,2436,1,0,0,0, - 2312,2313,5,138,0,0,2313,2314,5,92,0,0,2314,2315,5,30,0,0,2315,2316, - 5,68,0,0,2316,2317,5,351,0,0,2317,2321,3,1402,701,0,2318,2319,5, - 281,0,0,2319,2320,5,147,0,0,2320,2322,3,1472,736,0,2321,2318,1,0, - 0,0,2321,2322,1,0,0,0,2322,2323,1,0,0,0,2323,2324,5,333,0,0,2324, - 2325,5,351,0,0,2325,2327,3,1400,700,0,2326,2328,3,978,489,0,2327, - 2326,1,0,0,0,2327,2328,1,0,0,0,2328,2436,1,0,0,0,2329,2330,5,138, - 0,0,2330,2332,5,92,0,0,2331,2333,3,748,374,0,2332,2331,1,0,0,0,2332, - 2333,1,0,0,0,2333,2334,1,0,0,0,2334,2335,3,1406,703,0,2335,2336, - 5,435,0,0,2336,2337,5,285,0,0,2337,2342,3,1412,706,0,2338,2339,5, - 62,0,0,2339,2340,5,422,0,0,2340,2343,3,108,54,0,2341,2343,5,53,0, - 0,2342,2338,1,0,0,0,2342,2341,1,0,0,0,2343,2436,1,0,0,0,2344,2345, - 5,138,0,0,2345,2347,5,92,0,0,2346,2348,3,748,374,0,2347,2346,1,0, - 0,0,2347,2348,1,0,0,0,2348,2349,1,0,0,0,2349,2350,3,1406,703,0,2350, - 2351,5,436,0,0,2351,2352,5,285,0,0,2352,2354,3,1412,706,0,2353,2355, - 7,18,0,0,2354,2353,1,0,0,0,2354,2355,1,0,0,0,2355,2436,1,0,0,0,2356, - 2357,5,138,0,0,2357,2359,5,226,0,0,2358,2360,3,748,374,0,2359,2358, - 1,0,0,0,2359,2360,1,0,0,0,2360,2361,1,0,0,0,2361,2364,3,1412,706, - 0,2362,2365,3,106,53,0,2363,2365,3,118,59,0,2364,2362,1,0,0,0,2364, - 2363,1,0,0,0,2365,2436,1,0,0,0,2366,2367,5,138,0,0,2367,2368,5,226, - 0,0,2368,2369,5,30,0,0,2369,2370,5,68,0,0,2370,2371,5,351,0,0,2371, - 2375,3,1402,701,0,2372,2373,5,281,0,0,2373,2374,5,147,0,0,2374,2376, - 3,1472,736,0,2375,2372,1,0,0,0,2375,2376,1,0,0,0,2376,2377,1,0,0, - 0,2377,2378,5,333,0,0,2378,2379,5,351,0,0,2379,2381,3,1402,701,0, - 2380,2382,3,978,489,0,2381,2380,1,0,0,0,2381,2382,1,0,0,0,2382,2436, - 1,0,0,0,2383,2384,5,138,0,0,2384,2386,5,328,0,0,2385,2387,3,748, - 374,0,2386,2385,1,0,0,0,2386,2387,1,0,0,0,2387,2388,1,0,0,0,2388, - 2389,3,1412,706,0,2389,2390,3,106,53,0,2390,2436,1,0,0,0,2391,2392, - 5,138,0,0,2392,2394,5,376,0,0,2393,2395,3,748,374,0,2394,2393,1, - 0,0,0,2394,2395,1,0,0,0,2395,2396,1,0,0,0,2396,2397,3,1410,705,0, - 2397,2398,3,106,53,0,2398,2436,1,0,0,0,2399,2400,5,138,0,0,2400, - 2401,5,259,0,0,2401,2403,5,376,0,0,2402,2404,3,748,374,0,2403,2402, - 1,0,0,0,2403,2404,1,0,0,0,2404,2405,1,0,0,0,2405,2406,3,1410,705, - 0,2406,2407,3,106,53,0,2407,2436,1,0,0,0,2408,2409,5,138,0,0,2409, - 2410,5,259,0,0,2410,2411,5,376,0,0,2411,2412,5,30,0,0,2412,2413, - 5,68,0,0,2413,2414,5,351,0,0,2414,2418,3,1402,701,0,2415,2416,5, - 281,0,0,2416,2417,5,147,0,0,2417,2419,3,1472,736,0,2418,2415,1,0, - 0,0,2418,2419,1,0,0,0,2419,2420,1,0,0,0,2420,2421,5,333,0,0,2421, - 2422,5,351,0,0,2422,2424,3,1400,700,0,2423,2425,3,978,489,0,2424, - 2423,1,0,0,0,2424,2425,1,0,0,0,2425,2436,1,0,0,0,2426,2427,5,138, - 0,0,2427,2428,5,63,0,0,2428,2430,5,92,0,0,2429,2431,3,748,374,0, - 2430,2429,1,0,0,0,2430,2431,1,0,0,0,2431,2432,1,0,0,0,2432,2433, - 3,1118,559,0,2433,2434,3,106,53,0,2434,2436,1,0,0,0,2435,2302,1, - 0,0,0,2435,2312,1,0,0,0,2435,2329,1,0,0,0,2435,2344,1,0,0,0,2435, - 2356,1,0,0,0,2435,2366,1,0,0,0,2435,2383,1,0,0,0,2435,2391,1,0,0, - 0,2435,2399,1,0,0,0,2435,2408,1,0,0,0,2435,2426,1,0,0,0,2436,105, - 1,0,0,0,2437,2442,3,120,60,0,2438,2439,5,6,0,0,2439,2441,3,120,60, - 0,2440,2438,1,0,0,0,2441,2444,1,0,0,0,2442,2440,1,0,0,0,2442,2443, - 1,0,0,0,2443,107,1,0,0,0,2444,2442,1,0,0,0,2445,2446,5,68,0,0,2446, - 2455,3,1178,589,0,2447,2448,5,64,0,0,2448,2449,3,110,55,0,2449,2450, - 5,94,0,0,2450,2451,3,110,55,0,2451,2455,1,0,0,0,2452,2453,5,105, - 0,0,2453,2455,3,114,57,0,2454,2445,1,0,0,0,2454,2447,1,0,0,0,2454, - 2452,1,0,0,0,2455,109,1,0,0,0,2456,2457,5,2,0,0,2457,2462,3,112, - 56,0,2458,2459,5,6,0,0,2459,2461,3,112,56,0,2460,2458,1,0,0,0,2461, - 2464,1,0,0,0,2462,2460,1,0,0,0,2462,2463,1,0,0,0,2463,2465,1,0,0, - 0,2464,2462,1,0,0,0,2465,2466,5,3,0,0,2466,111,1,0,0,0,2467,2471, - 3,1178,589,0,2468,2471,5,262,0,0,2469,2471,5,260,0,0,2470,2467,1, - 0,0,0,2470,2468,1,0,0,0,2470,2469,1,0,0,0,2471,113,1,0,0,0,2472, - 2473,5,2,0,0,2473,2474,5,533,0,0,2474,2475,3,322,161,0,2475,2476, - 5,6,0,0,2476,2477,5,534,0,0,2477,2478,3,322,161,0,2478,2479,5,3, - 0,0,2479,115,1,0,0,0,2480,2481,5,435,0,0,2481,2482,5,285,0,0,2482, - 2483,3,1412,706,0,2483,2484,3,144,72,0,2484,2489,1,0,0,0,2485,2486, - 5,436,0,0,2486,2487,5,285,0,0,2487,2489,3,1412,706,0,2488,2480,1, - 0,0,0,2488,2485,1,0,0,0,2489,117,1,0,0,0,2490,2491,5,435,0,0,2491, - 2492,5,285,0,0,2492,2493,3,1412,706,0,2493,119,1,0,0,0,2494,2497, - 5,133,0,0,2495,2496,5,45,0,0,2496,2498,3,1436,718,0,2497,2495,1, - 0,0,0,2497,2498,1,0,0,0,2498,2499,1,0,0,0,2499,2712,3,236,118,0, - 2500,2501,5,138,0,0,2501,2502,5,45,0,0,2502,2503,3,1436,718,0,2503, - 2504,3,476,238,0,2504,2712,1,0,0,0,2505,2506,5,372,0,0,2506,2507, - 5,45,0,0,2507,2712,3,1436,718,0,2508,2509,5,191,0,0,2509,2511,5, - 45,0,0,2510,2512,3,748,374,0,2511,2510,1,0,0,0,2511,2512,1,0,0,0, - 2512,2513,1,0,0,0,2513,2515,3,1436,718,0,2514,2516,3,124,62,0,2515, - 2514,1,0,0,0,2515,2516,1,0,0,0,2516,2712,1,0,0,0,2517,2518,5,333, - 0,0,2518,2519,5,379,0,0,2519,2712,5,277,0,0,2520,2521,5,158,0,0, - 2521,2522,5,80,0,0,2522,2712,3,1436,718,0,2523,2524,5,333,0,0,2524, - 2525,5,379,0,0,2525,2712,5,158,0,0,2526,2527,5,333,0,0,2527,2712, - 7,19,0,0,2528,2530,5,193,0,0,2529,2531,7,20,0,0,2530,2529,1,0,0, - 0,2530,2531,1,0,0,0,2531,2532,1,0,0,0,2532,2712,5,357,0,0,2533,2534, - 5,186,0,0,2534,2538,5,357,0,0,2535,2539,5,30,0,0,2536,2539,5,99, - 0,0,2537,2539,3,1436,718,0,2538,2535,1,0,0,0,2538,2536,1,0,0,0,2538, - 2537,1,0,0,0,2539,2712,1,0,0,0,2540,2541,5,193,0,0,2541,2542,7,20, - 0,0,2542,2543,5,321,0,0,2543,2712,3,1436,718,0,2544,2545,5,186,0, - 0,2545,2546,5,321,0,0,2546,2712,3,1436,718,0,2547,2549,5,269,0,0, - 2548,2547,1,0,0,0,2548,2549,1,0,0,0,2549,2550,1,0,0,0,2550,2551, - 5,228,0,0,2551,2712,3,1412,706,0,2552,2553,5,275,0,0,2553,2712,3, - 558,279,0,2554,2555,5,77,0,0,2555,2712,5,275,0,0,2556,2557,5,282, - 0,0,2557,2558,5,94,0,0,2558,2712,3,1470,735,0,2559,2560,5,333,0, - 0,2560,2561,5,351,0,0,2561,2712,3,1400,700,0,2562,2563,5,333,0,0, - 2563,2712,3,132,66,0,2564,2565,5,313,0,0,2565,2712,3,132,66,0,2566, - 2567,5,312,0,0,2567,2568,5,219,0,0,2568,2712,3,130,65,0,2569,2570, - 5,193,0,0,2570,2571,5,414,0,0,2571,2572,5,251,0,0,2572,2712,5,327, - 0,0,2573,2574,5,186,0,0,2574,2575,5,414,0,0,2575,2576,5,251,0,0, - 2576,2712,5,327,0,0,2577,2578,5,209,0,0,2578,2579,5,414,0,0,2579, - 2580,5,251,0,0,2580,2712,5,327,0,0,2581,2582,5,269,0,0,2582,2583, - 5,209,0,0,2583,2584,5,414,0,0,2584,2585,5,251,0,0,2585,2712,5,327, - 0,0,2586,2588,5,191,0,0,2587,2589,5,44,0,0,2588,2587,1,0,0,0,2588, - 2589,1,0,0,0,2589,2591,1,0,0,0,2590,2592,3,748,374,0,2591,2590,1, - 0,0,0,2591,2592,1,0,0,0,2592,2593,1,0,0,0,2593,2595,3,1432,716,0, - 2594,2596,3,124,62,0,2595,2594,1,0,0,0,2595,2596,1,0,0,0,2596,2712, - 1,0,0,0,2597,2599,5,133,0,0,2598,2600,5,44,0,0,2599,2598,1,0,0,0, - 2599,2600,1,0,0,0,2600,2602,1,0,0,0,2601,2603,3,516,258,0,2602,2601, - 1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,0,0,2604,2712,3,206,103, - 0,2605,2607,5,138,0,0,2606,2608,5,44,0,0,2607,2606,1,0,0,0,2607, - 2608,1,0,0,0,2608,2609,1,0,0,0,2609,2610,3,1432,716,0,2610,2611, - 3,122,61,0,2611,2712,1,0,0,0,2612,2614,5,138,0,0,2613,2615,5,44, - 0,0,2614,2613,1,0,0,0,2614,2615,1,0,0,0,2615,2616,1,0,0,0,2616,2617, - 3,1432,716,0,2617,2618,7,21,0,0,2618,2619,5,77,0,0,2619,2620,5,78, - 0,0,2620,2712,1,0,0,0,2621,2623,5,138,0,0,2622,2624,5,44,0,0,2623, - 2622,1,0,0,0,2623,2624,1,0,0,0,2624,2625,1,0,0,0,2625,2626,3,1432, - 716,0,2626,2627,5,191,0,0,2627,2629,5,437,0,0,2628,2630,3,748,374, - 0,2629,2628,1,0,0,0,2629,2630,1,0,0,0,2630,2712,1,0,0,0,2631,2633, - 5,138,0,0,2632,2634,5,44,0,0,2633,2632,1,0,0,0,2633,2634,1,0,0,0, - 2634,2635,1,0,0,0,2635,2636,3,1432,716,0,2636,2637,5,333,0,0,2637, - 2638,5,342,0,0,2638,2639,3,1464,732,0,2639,2712,1,0,0,0,2640,2642, - 5,138,0,0,2641,2643,5,44,0,0,2642,2641,1,0,0,0,2642,2643,1,0,0,0, - 2643,2644,1,0,0,0,2644,2645,3,1432,716,0,2645,2646,7,22,0,0,2646, - 2647,3,132,66,0,2647,2712,1,0,0,0,2648,2650,5,138,0,0,2649,2651, - 5,44,0,0,2650,2649,1,0,0,0,2650,2651,1,0,0,0,2651,2652,1,0,0,0,2652, - 2653,3,1432,716,0,2653,2654,5,333,0,0,2654,2655,5,345,0,0,2655,2656, - 3,1474,737,0,2656,2712,1,0,0,0,2657,2659,5,138,0,0,2658,2660,5,44, - 0,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0,2660,2661,1,0,0,0,2661,2662, - 3,1432,716,0,2662,2663,5,133,0,0,2663,2664,5,438,0,0,2664,2665,3, - 222,111,0,2665,2666,5,36,0,0,2666,2668,5,219,0,0,2667,2669,3,314, - 157,0,2668,2667,1,0,0,0,2668,2669,1,0,0,0,2669,2712,1,0,0,0,2670, - 2672,5,138,0,0,2671,2673,5,44,0,0,2672,2671,1,0,0,0,2672,2673,1, - 0,0,0,2673,2674,1,0,0,0,2674,2675,3,1432,716,0,2675,2676,3,140,70, - 0,2676,2712,1,0,0,0,2677,2679,5,138,0,0,2678,2680,5,44,0,0,2679, - 2678,1,0,0,0,2679,2680,1,0,0,0,2680,2681,1,0,0,0,2681,2682,3,1432, - 716,0,2682,2683,5,191,0,0,2683,2685,5,219,0,0,2684,2686,3,748,374, - 0,2685,2684,1,0,0,0,2685,2686,1,0,0,0,2686,2712,1,0,0,0,2687,2689, - 5,138,0,0,2688,2690,5,44,0,0,2689,2688,1,0,0,0,2689,2690,1,0,0,0, - 2690,2691,1,0,0,0,2691,2693,3,1432,716,0,2692,2694,3,768,384,0,2693, - 2692,1,0,0,0,2693,2694,1,0,0,0,2694,2695,1,0,0,0,2695,2696,5,360, - 0,0,2696,2698,3,1168,584,0,2697,2699,3,126,63,0,2698,2697,1,0,0, - 0,2698,2699,1,0,0,0,2699,2701,1,0,0,0,2700,2702,3,128,64,0,2701, - 2700,1,0,0,0,2701,2702,1,0,0,0,2702,2712,1,0,0,0,2703,2705,5,138, - 0,0,2704,2706,5,44,0,0,2705,2704,1,0,0,0,2705,2706,1,0,0,0,2706, - 2707,1,0,0,0,2707,2708,3,1432,716,0,2708,2709,3,372,186,0,2709,2712, - 1,0,0,0,2710,2712,3,372,186,0,2711,2494,1,0,0,0,2711,2500,1,0,0, - 0,2711,2505,1,0,0,0,2711,2508,1,0,0,0,2711,2517,1,0,0,0,2711,2520, - 1,0,0,0,2711,2523,1,0,0,0,2711,2526,1,0,0,0,2711,2528,1,0,0,0,2711, - 2533,1,0,0,0,2711,2540,1,0,0,0,2711,2544,1,0,0,0,2711,2548,1,0,0, - 0,2711,2552,1,0,0,0,2711,2554,1,0,0,0,2711,2556,1,0,0,0,2711,2559, - 1,0,0,0,2711,2562,1,0,0,0,2711,2564,1,0,0,0,2711,2566,1,0,0,0,2711, - 2569,1,0,0,0,2711,2573,1,0,0,0,2711,2577,1,0,0,0,2711,2581,1,0,0, - 0,2711,2586,1,0,0,0,2711,2597,1,0,0,0,2711,2605,1,0,0,0,2711,2612, - 1,0,0,0,2711,2621,1,0,0,0,2711,2631,1,0,0,0,2711,2640,1,0,0,0,2711, - 2648,1,0,0,0,2711,2657,1,0,0,0,2711,2670,1,0,0,0,2711,2677,1,0,0, - 0,2711,2687,1,0,0,0,2711,2703,1,0,0,0,2711,2710,1,0,0,0,2712,121, - 1,0,0,0,2713,2714,5,333,0,0,2714,2715,5,53,0,0,2715,2719,3,1212, - 606,0,2716,2717,5,191,0,0,2717,2719,5,53,0,0,2718,2713,1,0,0,0,2718, - 2716,1,0,0,0,2719,123,1,0,0,0,2720,2721,7,23,0,0,2721,125,1,0,0, - 0,2722,2723,5,43,0,0,2723,2724,3,558,279,0,2724,127,1,0,0,0,2725, - 2726,5,100,0,0,2726,2727,3,1212,606,0,2727,129,1,0,0,0,2728,2735, - 5,270,0,0,2729,2735,5,113,0,0,2730,2735,5,53,0,0,2731,2732,5,100, - 0,0,2732,2733,5,226,0,0,2733,2735,3,1436,718,0,2734,2728,1,0,0,0, - 2734,2729,1,0,0,0,2734,2730,1,0,0,0,2734,2731,1,0,0,0,2735,131,1, - 0,0,0,2736,2737,5,2,0,0,2737,2738,3,136,68,0,2738,2739,5,3,0,0,2739, - 133,1,0,0,0,2740,2741,5,105,0,0,2741,2742,3,132,66,0,2742,135,1, - 0,0,0,2743,2748,3,138,69,0,2744,2745,5,6,0,0,2745,2747,3,138,69, - 0,2746,2744,1,0,0,0,2747,2750,1,0,0,0,2748,2746,1,0,0,0,2748,2749, - 1,0,0,0,2749,137,1,0,0,0,2750,2748,1,0,0,0,2751,2760,3,1490,745, - 0,2752,2753,5,10,0,0,2753,2761,3,502,251,0,2754,2755,5,11,0,0,2755, - 2758,3,1490,745,0,2756,2757,5,10,0,0,2757,2759,3,502,251,0,2758, - 2756,1,0,0,0,2758,2759,1,0,0,0,2759,2761,1,0,0,0,2760,2752,1,0,0, - 0,2760,2754,1,0,0,0,2760,2761,1,0,0,0,2761,139,1,0,0,0,2762,2764, - 3,142,71,0,2763,2762,1,0,0,0,2764,2765,1,0,0,0,2765,2763,1,0,0,0, - 2765,2766,1,0,0,0,2766,141,1,0,0,0,2767,2772,5,314,0,0,2768,2770, - 3,14,7,0,2769,2768,1,0,0,0,2769,2770,1,0,0,0,2770,2771,1,0,0,0,2771, - 2773,3,322,161,0,2772,2769,1,0,0,0,2772,2773,1,0,0,0,2773,2781,1, - 0,0,0,2774,2778,5,333,0,0,2775,2779,3,318,159,0,2776,2777,5,438, - 0,0,2777,2779,3,222,111,0,2778,2775,1,0,0,0,2778,2776,1,0,0,0,2779, - 2781,1,0,0,0,2780,2767,1,0,0,0,2780,2774,1,0,0,0,2781,143,1,0,0, - 0,2782,2783,5,62,0,0,2783,2784,5,422,0,0,2784,2785,5,105,0,0,2785, - 2786,5,2,0,0,2786,2787,3,148,74,0,2787,2788,5,3,0,0,2788,2809,1, - 0,0,0,2789,2790,5,62,0,0,2790,2791,5,422,0,0,2791,2792,5,68,0,0, - 2792,2793,5,2,0,0,2793,2794,3,1328,664,0,2794,2795,5,3,0,0,2795, - 2809,1,0,0,0,2796,2797,5,62,0,0,2797,2798,5,422,0,0,2798,2799,5, - 64,0,0,2799,2800,5,2,0,0,2800,2801,3,1328,664,0,2801,2802,5,3,0, - 0,2802,2803,5,94,0,0,2803,2804,5,2,0,0,2804,2805,3,1328,664,0,2805, - 2806,5,3,0,0,2806,2809,1,0,0,0,2807,2809,5,53,0,0,2808,2782,1,0, - 0,0,2808,2789,1,0,0,0,2808,2796,1,0,0,0,2808,2807,1,0,0,0,2809,145, - 1,0,0,0,2810,2811,3,1488,744,0,2811,2812,3,1456,728,0,2812,147,1, - 0,0,0,2813,2818,3,146,73,0,2814,2815,5,6,0,0,2815,2817,3,146,73, - 0,2816,2814,1,0,0,0,2817,2820,1,0,0,0,2818,2816,1,0,0,0,2818,2819, - 1,0,0,0,2819,149,1,0,0,0,2820,2818,1,0,0,0,2821,2822,5,138,0,0,2822, - 2823,5,360,0,0,2823,2824,3,558,279,0,2824,2825,3,152,76,0,2825,151, - 1,0,0,0,2826,2831,3,154,77,0,2827,2828,5,6,0,0,2828,2830,3,154,77, - 0,2829,2827,1,0,0,0,2830,2833,1,0,0,0,2831,2829,1,0,0,0,2831,2832, - 1,0,0,0,2832,153,1,0,0,0,2833,2831,1,0,0,0,2834,2835,5,133,0,0,2835, - 2836,5,143,0,0,2836,2838,3,1152,576,0,2837,2839,3,124,62,0,2838, - 2837,1,0,0,0,2838,2839,1,0,0,0,2839,2864,1,0,0,0,2840,2841,5,191, - 0,0,2841,2843,5,143,0,0,2842,2844,3,748,374,0,2843,2842,1,0,0,0, - 2843,2844,1,0,0,0,2844,2845,1,0,0,0,2845,2847,3,1474,737,0,2846, - 2848,3,124,62,0,2847,2846,1,0,0,0,2847,2848,1,0,0,0,2848,2864,1, - 0,0,0,2849,2850,5,138,0,0,2850,2851,5,143,0,0,2851,2853,3,1474,737, - 0,2852,2854,3,768,384,0,2853,2852,1,0,0,0,2853,2854,1,0,0,0,2854, - 2855,1,0,0,0,2855,2856,5,360,0,0,2856,2858,3,1168,584,0,2857,2859, - 3,126,63,0,2858,2857,1,0,0,0,2858,2859,1,0,0,0,2859,2861,1,0,0,0, - 2860,2862,3,124,62,0,2861,2860,1,0,0,0,2861,2862,1,0,0,0,2862,2864, - 1,0,0,0,2863,2834,1,0,0,0,2863,2840,1,0,0,0,2863,2849,1,0,0,0,2864, - 155,1,0,0,0,2865,2868,5,157,0,0,2866,2869,3,994,497,0,2867,2869, - 5,30,0,0,2868,2866,1,0,0,0,2868,2867,1,0,0,0,2869,157,1,0,0,0,2870, - 2872,5,169,0,0,2871,2873,3,172,86,0,2872,2871,1,0,0,0,2872,2873, - 1,0,0,0,2873,2874,1,0,0,0,2874,2876,3,1406,703,0,2875,2877,3,240, - 120,0,2876,2875,1,0,0,0,2876,2877,1,0,0,0,2877,2878,1,0,0,0,2878, - 2880,3,160,80,0,2879,2881,3,162,81,0,2880,2879,1,0,0,0,2880,2881, - 1,0,0,0,2881,2882,1,0,0,0,2882,2884,3,164,82,0,2883,2885,3,174,87, - 0,2884,2883,1,0,0,0,2884,2885,1,0,0,0,2885,2887,1,0,0,0,2886,2888, - 3,14,7,0,2887,2886,1,0,0,0,2887,2888,1,0,0,0,2888,2889,1,0,0,0,2889, - 2891,3,166,83,0,2890,2892,3,1144,572,0,2891,2890,1,0,0,0,2891,2892, - 1,0,0,0,2892,2908,1,0,0,0,2893,2894,5,169,0,0,2894,2895,5,2,0,0, - 2895,2896,3,942,471,0,2896,2897,5,3,0,0,2897,2899,5,94,0,0,2898, - 2900,3,162,81,0,2899,2898,1,0,0,0,2899,2900,1,0,0,0,2900,2901,1, - 0,0,0,2901,2903,3,164,82,0,2902,2904,3,14,7,0,2903,2902,1,0,0,0, - 2903,2904,1,0,0,0,2904,2905,1,0,0,0,2905,2906,3,166,83,0,2906,2908, - 1,0,0,0,2907,2870,1,0,0,0,2907,2893,1,0,0,0,2908,159,1,0,0,0,2909, - 2910,7,24,0,0,2910,161,1,0,0,0,2911,2912,5,297,0,0,2912,163,1,0, - 0,0,2913,2917,3,1458,729,0,2914,2917,5,343,0,0,2915,2917,5,344,0, - 0,2916,2913,1,0,0,0,2916,2914,1,0,0,0,2916,2915,1,0,0,0,2917,165, - 1,0,0,0,2918,2924,3,168,84,0,2919,2920,5,2,0,0,2920,2921,3,178,89, - 0,2921,2922,5,3,0,0,2922,2924,1,0,0,0,2923,2918,1,0,0,0,2923,2919, - 1,0,0,0,2924,167,1,0,0,0,2925,2927,3,170,85,0,2926,2925,1,0,0,0, - 2927,2930,1,0,0,0,2928,2926,1,0,0,0,2928,2929,1,0,0,0,2929,169,1, - 0,0,0,2930,2928,1,0,0,0,2931,2971,5,107,0,0,2932,2971,5,112,0,0, - 2933,2935,5,183,0,0,2934,2936,3,872,436,0,2935,2934,1,0,0,0,2935, - 2936,1,0,0,0,2936,2937,1,0,0,0,2937,2971,3,1458,729,0,2938,2940, - 5,78,0,0,2939,2941,3,872,436,0,2940,2939,1,0,0,0,2940,2941,1,0,0, - 0,2941,2942,1,0,0,0,2942,2971,3,1458,729,0,2943,2971,5,171,0,0,2944, - 2971,5,216,0,0,2945,2947,5,298,0,0,2946,2948,3,872,436,0,2947,2946, - 1,0,0,0,2947,2948,1,0,0,0,2948,2949,1,0,0,0,2949,2971,3,1458,729, - 0,2950,2952,5,197,0,0,2951,2953,3,872,436,0,2952,2951,1,0,0,0,2952, - 2953,1,0,0,0,2953,2954,1,0,0,0,2954,2971,3,1458,729,0,2955,2956, - 5,209,0,0,2956,2957,5,298,0,0,2957,2971,3,244,122,0,2958,2959,5, - 209,0,0,2959,2960,5,298,0,0,2960,2971,5,9,0,0,2961,2962,5,209,0, - 0,2962,2963,5,77,0,0,2963,2964,5,78,0,0,2964,2971,3,244,122,0,2965, - 2966,5,209,0,0,2966,2967,5,78,0,0,2967,2971,3,244,122,0,2968,2969, - 5,194,0,0,2969,2971,3,1458,729,0,2970,2931,1,0,0,0,2970,2932,1,0, - 0,0,2970,2933,1,0,0,0,2970,2938,1,0,0,0,2970,2943,1,0,0,0,2970,2944, - 1,0,0,0,2970,2945,1,0,0,0,2970,2950,1,0,0,0,2970,2955,1,0,0,0,2970, - 2958,1,0,0,0,2970,2961,1,0,0,0,2970,2965,1,0,0,0,2970,2968,1,0,0, - 0,2971,171,1,0,0,0,2972,2973,5,107,0,0,2973,173,1,0,0,0,2974,2976, - 3,176,88,0,2975,2974,1,0,0,0,2975,2976,1,0,0,0,2976,2977,1,0,0,0, - 2977,2978,5,184,0,0,2978,2979,3,1458,729,0,2979,175,1,0,0,0,2980, - 2981,5,100,0,0,2981,177,1,0,0,0,2982,2987,3,180,90,0,2983,2984,5, - 6,0,0,2984,2986,3,180,90,0,2985,2983,1,0,0,0,2986,2989,1,0,0,0,2987, - 2985,1,0,0,0,2987,2988,1,0,0,0,2988,179,1,0,0,0,2989,2987,1,0,0, - 0,2990,2992,3,1490,745,0,2991,2993,3,182,91,0,2992,2991,1,0,0,0, - 2992,2993,1,0,0,0,2993,181,1,0,0,0,2994,3002,3,72,36,0,2995,3002, - 3,322,161,0,2996,3002,5,9,0,0,2997,2998,5,2,0,0,2998,2999,3,184, - 92,0,2999,3000,5,3,0,0,3000,3002,1,0,0,0,3001,2994,1,0,0,0,3001, - 2995,1,0,0,0,3001,2996,1,0,0,0,3001,2997,1,0,0,0,3002,183,1,0,0, - 0,3003,3008,3,186,93,0,3004,3005,5,6,0,0,3005,3007,3,186,93,0,3006, - 3004,1,0,0,0,3007,3010,1,0,0,0,3008,3006,1,0,0,0,3008,3009,1,0,0, - 0,3009,185,1,0,0,0,3010,3008,1,0,0,0,3011,3012,3,70,35,0,3012,187, - 1,0,0,0,3013,3015,5,46,0,0,3014,3016,3,190,95,0,3015,3014,1,0,0, - 0,3015,3016,1,0,0,0,3016,3017,1,0,0,0,3017,3019,5,92,0,0,3018,3020, - 3,516,258,0,3019,3018,1,0,0,0,3019,3020,1,0,0,0,3020,3021,1,0,0, - 0,3021,3087,3,1404,702,0,3022,3024,5,2,0,0,3023,3025,3,192,96,0, - 3024,3023,1,0,0,0,3024,3025,1,0,0,0,3025,3026,1,0,0,0,3026,3028, - 5,3,0,0,3027,3029,3,266,133,0,3028,3027,1,0,0,0,3028,3029,1,0,0, - 0,3029,3031,1,0,0,0,3030,3032,3,268,134,0,3031,3030,1,0,0,0,3031, - 3032,1,0,0,0,3032,3034,1,0,0,0,3033,3035,3,276,138,0,3034,3033,1, - 0,0,0,3034,3035,1,0,0,0,3035,3037,1,0,0,0,3036,3038,3,278,139,0, - 3037,3036,1,0,0,0,3037,3038,1,0,0,0,3038,3040,1,0,0,0,3039,3041, - 3,280,140,0,3040,3039,1,0,0,0,3040,3041,1,0,0,0,3041,3043,1,0,0, - 0,3042,3044,3,282,141,0,3043,3042,1,0,0,0,3043,3044,1,0,0,0,3044, - 3088,1,0,0,0,3045,3046,5,275,0,0,3046,3048,3,558,279,0,3047,3049, - 3,196,98,0,3048,3047,1,0,0,0,3048,3049,1,0,0,0,3049,3051,1,0,0,0, - 3050,3052,3,268,134,0,3051,3050,1,0,0,0,3051,3052,1,0,0,0,3052,3054, - 1,0,0,0,3053,3055,3,276,138,0,3054,3053,1,0,0,0,3054,3055,1,0,0, - 0,3055,3057,1,0,0,0,3056,3058,3,278,139,0,3057,3056,1,0,0,0,3057, - 3058,1,0,0,0,3058,3060,1,0,0,0,3059,3061,3,280,140,0,3060,3059,1, - 0,0,0,3060,3061,1,0,0,0,3061,3063,1,0,0,0,3062,3064,3,282,141,0, - 3063,3062,1,0,0,0,3063,3064,1,0,0,0,3064,3088,1,0,0,0,3065,3066, - 5,285,0,0,3066,3067,5,275,0,0,3067,3069,3,1412,706,0,3068,3070,3, - 196,98,0,3069,3068,1,0,0,0,3069,3070,1,0,0,0,3070,3071,1,0,0,0,3071, - 3073,3,144,72,0,3072,3074,3,268,134,0,3073,3072,1,0,0,0,3073,3074, - 1,0,0,0,3074,3076,1,0,0,0,3075,3077,3,276,138,0,3076,3075,1,0,0, - 0,3076,3077,1,0,0,0,3077,3079,1,0,0,0,3078,3080,3,278,139,0,3079, - 3078,1,0,0,0,3079,3080,1,0,0,0,3080,3082,1,0,0,0,3081,3083,3,280, - 140,0,3082,3081,1,0,0,0,3082,3083,1,0,0,0,3083,3085,1,0,0,0,3084, - 3086,3,282,141,0,3085,3084,1,0,0,0,3085,3086,1,0,0,0,3086,3088,1, - 0,0,0,3087,3022,1,0,0,0,3087,3045,1,0,0,0,3087,3065,1,0,0,0,3088, - 189,1,0,0,0,3089,3097,5,354,0,0,3090,3097,5,352,0,0,3091,3092,5, - 254,0,0,3092,3097,7,25,0,0,3093,3094,5,213,0,0,3094,3097,7,25,0, - 0,3095,3097,5,367,0,0,3096,3089,1,0,0,0,3096,3090,1,0,0,0,3096,3091, - 1,0,0,0,3096,3093,1,0,0,0,3096,3095,1,0,0,0,3097,191,1,0,0,0,3098, - 3099,3,198,99,0,3099,193,1,0,0,0,3100,3101,3,198,99,0,3101,195,1, - 0,0,0,3102,3103,5,2,0,0,3103,3104,3,200,100,0,3104,3105,5,3,0,0, - 3105,197,1,0,0,0,3106,3111,3,202,101,0,3107,3108,5,6,0,0,3108,3110, - 3,202,101,0,3109,3107,1,0,0,0,3110,3113,1,0,0,0,3111,3109,1,0,0, - 0,3111,3112,1,0,0,0,3112,199,1,0,0,0,3113,3111,1,0,0,0,3114,3119, - 3,204,102,0,3115,3116,5,6,0,0,3116,3118,3,204,102,0,3117,3115,1, - 0,0,0,3118,3121,1,0,0,0,3119,3117,1,0,0,0,3119,3120,1,0,0,0,3120, - 201,1,0,0,0,3121,3119,1,0,0,0,3122,3126,3,206,103,0,3123,3126,3, - 228,114,0,3124,3126,3,234,117,0,3125,3122,1,0,0,0,3125,3123,1,0, - 0,0,3125,3124,1,0,0,0,3126,203,1,0,0,0,3127,3130,3,212,106,0,3128, - 3130,3,234,117,0,3129,3127,1,0,0,0,3129,3128,1,0,0,0,3130,205,1, - 0,0,0,3131,3132,3,1434,717,0,3132,3134,3,1168,584,0,3133,3135,3, - 368,184,0,3134,3133,1,0,0,0,3134,3135,1,0,0,0,3135,3137,1,0,0,0, - 3136,3138,3,210,105,0,3137,3136,1,0,0,0,3137,3138,1,0,0,0,3138,3140, - 1,0,0,0,3139,3141,3,208,104,0,3140,3139,1,0,0,0,3140,3141,1,0,0, - 0,3141,3144,1,0,0,0,3142,3143,5,43,0,0,3143,3145,3,558,279,0,3144, - 3142,1,0,0,0,3144,3145,1,0,0,0,3145,3148,1,0,0,0,3146,3147,5,105, - 0,0,3147,3149,5,280,0,0,3148,3146,1,0,0,0,3148,3149,1,0,0,0,3149, - 3150,1,0,0,0,3150,3151,3,214,107,0,3151,207,1,0,0,0,3152,3153,5, - 543,0,0,3153,3154,3,1474,737,0,3154,209,1,0,0,0,3155,3162,5,345, - 0,0,3156,3163,5,544,0,0,3157,3163,5,205,0,0,3158,3163,5,545,0,0, - 3159,3163,5,546,0,0,3160,3163,5,53,0,0,3161,3163,3,1474,737,0,3162, - 3156,1,0,0,0,3162,3157,1,0,0,0,3162,3158,1,0,0,0,3162,3159,1,0,0, - 0,3162,3160,1,0,0,0,3162,3161,1,0,0,0,3163,211,1,0,0,0,3164,3167, - 3,1434,717,0,3165,3166,5,105,0,0,3166,3168,5,280,0,0,3167,3165,1, - 0,0,0,3167,3168,1,0,0,0,3168,3169,1,0,0,0,3169,3170,3,214,107,0, - 3170,213,1,0,0,0,3171,3173,3,216,108,0,3172,3171,1,0,0,0,3173,3176, - 1,0,0,0,3174,3172,1,0,0,0,3174,3175,1,0,0,0,3175,215,1,0,0,0,3176, - 3174,1,0,0,0,3177,3178,5,45,0,0,3178,3180,3,1436,718,0,3179,3177, - 1,0,0,0,3179,3180,1,0,0,0,3180,3181,1,0,0,0,3181,3183,3,218,109, - 0,3182,3184,3,224,112,0,3183,3182,1,0,0,0,3183,3184,1,0,0,0,3184, - 3186,1,0,0,0,3185,3187,3,226,113,0,3186,3185,1,0,0,0,3186,3187,1, - 0,0,0,3187,3196,1,0,0,0,3188,3190,3,218,109,0,3189,3191,3,224,112, - 0,3190,3189,1,0,0,0,3190,3191,1,0,0,0,3191,3193,1,0,0,0,3192,3194, - 3,226,113,0,3193,3192,1,0,0,0,3193,3194,1,0,0,0,3194,3196,1,0,0, - 0,3195,3179,1,0,0,0,3195,3188,1,0,0,0,3196,217,1,0,0,0,3197,3198, - 5,77,0,0,3198,3256,5,78,0,0,3199,3256,5,78,0,0,3200,3202,5,98,0, - 0,3201,3203,3,710,355,0,3202,3201,1,0,0,0,3202,3203,1,0,0,0,3203, - 3205,1,0,0,0,3204,3206,3,286,143,0,3205,3204,1,0,0,0,3205,3206,1, - 0,0,0,3206,3256,1,0,0,0,3207,3209,5,98,0,0,3208,3210,3,220,110,0, - 3209,3208,1,0,0,0,3209,3210,1,0,0,0,3210,3211,1,0,0,0,3211,3256, - 3,284,142,0,3212,3213,5,85,0,0,3213,3215,5,245,0,0,3214,3216,3,710, - 355,0,3215,3214,1,0,0,0,3215,3216,1,0,0,0,3216,3218,1,0,0,0,3217, - 3219,3,286,143,0,3218,3217,1,0,0,0,3218,3219,1,0,0,0,3219,3256,1, - 0,0,0,3220,3221,5,42,0,0,3221,3222,5,2,0,0,3222,3223,3,1212,606, - 0,3223,3225,5,3,0,0,3224,3226,3,238,119,0,3225,3224,1,0,0,0,3225, - 3226,1,0,0,0,3226,3256,1,0,0,0,3227,3228,5,53,0,0,3228,3256,3,1252, - 626,0,3229,3230,5,438,0,0,3230,3231,3,222,111,0,3231,3241,5,36,0, - 0,3232,3234,5,219,0,0,3233,3235,3,314,157,0,3234,3233,1,0,0,0,3234, - 3235,1,0,0,0,3235,3242,1,0,0,0,3236,3237,5,2,0,0,3237,3238,3,1212, - 606,0,3238,3239,5,3,0,0,3239,3240,5,440,0,0,3240,3242,1,0,0,0,3241, - 3232,1,0,0,0,3241,3236,1,0,0,0,3242,3256,1,0,0,0,3243,3244,5,86, - 0,0,3244,3246,3,1412,706,0,3245,3247,3,240,120,0,3246,3245,1,0,0, - 0,3246,3247,1,0,0,0,3247,3249,1,0,0,0,3248,3250,3,250,125,0,3249, - 3248,1,0,0,0,3249,3250,1,0,0,0,3250,3252,1,0,0,0,3251,3253,3,258, - 129,0,3252,3251,1,0,0,0,3252,3253,1,0,0,0,3253,3256,1,0,0,0,3254, - 3256,3,646,323,0,3255,3197,1,0,0,0,3255,3199,1,0,0,0,3255,3200,1, - 0,0,0,3255,3207,1,0,0,0,3255,3212,1,0,0,0,3255,3220,1,0,0,0,3255, - 3227,1,0,0,0,3255,3229,1,0,0,0,3255,3243,1,0,0,0,3255,3254,1,0,0, - 0,3256,219,1,0,0,0,3257,3259,5,273,0,0,3258,3260,5,77,0,0,3259,3258, - 1,0,0,0,3259,3260,1,0,0,0,3260,3261,1,0,0,0,3261,3262,5,56,0,0,3262, - 221,1,0,0,0,3263,3267,5,139,0,0,3264,3265,5,147,0,0,3265,3267,5, - 53,0,0,3266,3263,1,0,0,0,3266,3264,1,0,0,0,3267,223,1,0,0,0,3268, - 3272,5,54,0,0,3269,3270,5,77,0,0,3270,3272,5,54,0,0,3271,3268,1, - 0,0,0,3271,3269,1,0,0,0,3272,225,1,0,0,0,3273,3274,5,69,0,0,3274, - 3275,7,16,0,0,3275,227,1,0,0,0,3276,3277,5,120,0,0,3277,3278,3,1412, - 706,0,3278,3279,3,230,115,0,3279,229,1,0,0,0,3280,3281,7,26,0,0, - 3281,3283,3,232,116,0,3282,3280,1,0,0,0,3283,3286,1,0,0,0,3284,3282, - 1,0,0,0,3284,3285,1,0,0,0,3285,231,1,0,0,0,3286,3284,1,0,0,0,3287, - 3288,7,27,0,0,3288,233,1,0,0,0,3289,3290,5,45,0,0,3290,3291,3,1436, - 718,0,3291,3292,3,236,118,0,3292,3295,1,0,0,0,3293,3295,3,236,118, - 0,3294,3289,1,0,0,0,3294,3293,1,0,0,0,3295,235,1,0,0,0,3296,3297, - 5,42,0,0,3297,3298,5,2,0,0,3298,3299,3,1212,606,0,3299,3300,5,3, - 0,0,3300,3301,3,476,238,0,3301,3383,1,0,0,0,3302,3320,5,98,0,0,3303, - 3304,5,2,0,0,3304,3305,3,244,122,0,3305,3307,5,3,0,0,3306,3308,3, - 248,124,0,3307,3306,1,0,0,0,3307,3308,1,0,0,0,3308,3310,1,0,0,0, - 3309,3311,3,710,355,0,3310,3309,1,0,0,0,3310,3311,1,0,0,0,3311,3313, - 1,0,0,0,3312,3314,3,286,143,0,3313,3312,1,0,0,0,3313,3314,1,0,0, - 0,3314,3315,1,0,0,0,3315,3316,3,476,238,0,3316,3321,1,0,0,0,3317, - 3318,3,288,144,0,3318,3319,3,476,238,0,3319,3321,1,0,0,0,3320,3303, - 1,0,0,0,3320,3317,1,0,0,0,3321,3383,1,0,0,0,3322,3323,5,85,0,0,3323, - 3341,5,245,0,0,3324,3325,5,2,0,0,3325,3326,3,244,122,0,3326,3328, - 5,3,0,0,3327,3329,3,248,124,0,3328,3327,1,0,0,0,3328,3329,1,0,0, - 0,3329,3331,1,0,0,0,3330,3332,3,710,355,0,3331,3330,1,0,0,0,3331, - 3332,1,0,0,0,3332,3334,1,0,0,0,3333,3335,3,286,143,0,3334,3333,1, - 0,0,0,3334,3335,1,0,0,0,3335,3336,1,0,0,0,3336,3337,3,476,238,0, - 3337,3342,1,0,0,0,3338,3339,3,288,144,0,3339,3340,3,476,238,0,3340, - 3342,1,0,0,0,3341,3324,1,0,0,0,3341,3338,1,0,0,0,3342,3383,1,0,0, - 0,3343,3345,5,199,0,0,3344,3346,3,634,317,0,3345,3344,1,0,0,0,3345, - 3346,1,0,0,0,3346,3347,1,0,0,0,3347,3348,5,2,0,0,3348,3349,3,252, - 126,0,3349,3351,5,3,0,0,3350,3352,3,248,124,0,3351,3350,1,0,0,0, - 3351,3352,1,0,0,0,3352,3354,1,0,0,0,3353,3355,3,710,355,0,3354,3353, - 1,0,0,0,3354,3355,1,0,0,0,3355,3357,1,0,0,0,3356,3358,3,286,143, - 0,3357,3356,1,0,0,0,3357,3358,1,0,0,0,3358,3360,1,0,0,0,3359,3361, - 3,256,128,0,3360,3359,1,0,0,0,3360,3361,1,0,0,0,3361,3362,1,0,0, - 0,3362,3363,3,476,238,0,3363,3383,1,0,0,0,3364,3365,5,63,0,0,3365, - 3366,5,245,0,0,3366,3367,5,2,0,0,3367,3368,3,244,122,0,3368,3369, - 5,3,0,0,3369,3370,5,86,0,0,3370,3372,3,1412,706,0,3371,3373,3,240, - 120,0,3372,3371,1,0,0,0,3372,3373,1,0,0,0,3373,3375,1,0,0,0,3374, - 3376,3,250,125,0,3375,3374,1,0,0,0,3375,3376,1,0,0,0,3376,3378,1, - 0,0,0,3377,3379,3,258,129,0,3378,3377,1,0,0,0,3378,3379,1,0,0,0, - 3379,3380,1,0,0,0,3380,3381,3,476,238,0,3381,3383,1,0,0,0,3382,3296, - 1,0,0,0,3382,3302,1,0,0,0,3382,3322,1,0,0,0,3382,3343,1,0,0,0,3382, - 3364,1,0,0,0,3383,237,1,0,0,0,3384,3385,5,269,0,0,3385,3386,5,228, - 0,0,3386,239,1,0,0,0,3387,3388,5,2,0,0,3388,3389,3,244,122,0,3389, - 3390,5,3,0,0,3390,241,1,0,0,0,3391,3392,5,2,0,0,3392,3393,3,246, - 123,0,3393,3394,5,3,0,0,3394,243,1,0,0,0,3395,3400,3,1432,716,0, - 3396,3397,5,6,0,0,3397,3399,3,1432,716,0,3398,3396,1,0,0,0,3399, - 3402,1,0,0,0,3400,3398,1,0,0,0,3400,3401,1,0,0,0,3401,245,1,0,0, - 0,3402,3400,1,0,0,0,3403,3408,3,1434,717,0,3404,3405,5,6,0,0,3405, - 3407,3,1434,717,0,3406,3404,1,0,0,0,3407,3410,1,0,0,0,3408,3406, - 1,0,0,0,3408,3409,1,0,0,0,3409,247,1,0,0,0,3410,3408,1,0,0,0,3411, - 3412,5,441,0,0,3412,3413,5,2,0,0,3413,3414,3,244,122,0,3414,3415, - 5,3,0,0,3415,249,1,0,0,0,3416,3417,5,258,0,0,3417,3418,7,28,0,0, - 3418,251,1,0,0,0,3419,3424,3,254,127,0,3420,3421,5,6,0,0,3421,3423, - 3,254,127,0,3422,3420,1,0,0,0,3423,3426,1,0,0,0,3424,3422,1,0,0, - 0,3424,3425,1,0,0,0,3425,253,1,0,0,0,3426,3424,1,0,0,0,3427,3428, - 3,640,320,0,3428,3435,5,105,0,0,3429,3436,3,732,366,0,3430,3431, - 5,278,0,0,3431,3432,5,2,0,0,3432,3433,3,732,366,0,3433,3434,5,3, - 0,0,3434,3436,1,0,0,0,3435,3429,1,0,0,0,3435,3430,1,0,0,0,3436,255, - 1,0,0,0,3437,3438,5,103,0,0,3438,3439,5,2,0,0,3439,3440,3,1212,606, - 0,3440,3441,5,3,0,0,3441,257,1,0,0,0,3442,3451,3,260,130,0,3443, - 3451,3,262,131,0,3444,3445,3,260,130,0,3445,3446,3,262,131,0,3446, - 3451,1,0,0,0,3447,3448,3,262,131,0,3448,3449,3,260,130,0,3449,3451, - 1,0,0,0,3450,3442,1,0,0,0,3450,3443,1,0,0,0,3450,3444,1,0,0,0,3450, - 3447,1,0,0,0,3451,259,1,0,0,0,3452,3453,5,80,0,0,3453,3454,5,369, - 0,0,3454,3455,3,264,132,0,3455,261,1,0,0,0,3456,3457,5,80,0,0,3457, - 3458,5,182,0,0,3458,3459,3,264,132,0,3459,263,1,0,0,0,3460,3461, - 5,269,0,0,3461,3470,5,132,0,0,3462,3470,5,315,0,0,3463,3470,5,150, - 0,0,3464,3465,5,333,0,0,3465,3467,7,29,0,0,3466,3468,3,244,122,0, - 3467,3466,1,0,0,0,3467,3468,1,0,0,0,3468,3470,1,0,0,0,3469,3460, - 1,0,0,0,3469,3462,1,0,0,0,3469,3463,1,0,0,0,3469,3464,1,0,0,0,3470, - 265,1,0,0,0,3471,3472,5,238,0,0,3472,3473,5,2,0,0,3473,3474,3,1390, - 695,0,3474,3475,5,3,0,0,3475,267,1,0,0,0,3476,3477,3,270,135,0,3477, - 269,1,0,0,0,3478,3479,5,285,0,0,3479,3480,5,147,0,0,3480,3481,3, - 1474,737,0,3481,3482,5,2,0,0,3482,3483,3,272,136,0,3483,3484,5,3, - 0,0,3484,271,1,0,0,0,3485,3490,3,274,137,0,3486,3487,5,6,0,0,3487, - 3489,3,274,137,0,3488,3486,1,0,0,0,3489,3492,1,0,0,0,3490,3488,1, - 0,0,0,3490,3491,1,0,0,0,3491,273,1,0,0,0,3492,3490,1,0,0,0,3493, - 3495,3,1432,716,0,3494,3496,3,646,323,0,3495,3494,1,0,0,0,3495,3496, - 1,0,0,0,3496,3498,1,0,0,0,3497,3499,3,648,324,0,3498,3497,1,0,0, - 0,3498,3499,1,0,0,0,3499,3517,1,0,0,0,3500,3502,3,1262,631,0,3501, - 3503,3,646,323,0,3502,3501,1,0,0,0,3502,3503,1,0,0,0,3503,3505,1, - 0,0,0,3504,3506,3,648,324,0,3505,3504,1,0,0,0,3505,3506,1,0,0,0, - 3506,3517,1,0,0,0,3507,3508,5,2,0,0,3508,3509,3,1212,606,0,3509, - 3511,5,3,0,0,3510,3512,3,646,323,0,3511,3510,1,0,0,0,3511,3512,1, - 0,0,0,3512,3514,1,0,0,0,3513,3515,3,648,324,0,3514,3513,1,0,0,0, - 3514,3515,1,0,0,0,3515,3517,1,0,0,0,3516,3493,1,0,0,0,3516,3500, - 1,0,0,0,3516,3507,1,0,0,0,3517,275,1,0,0,0,3518,3519,5,100,0,0,3519, - 3520,3,1436,718,0,3520,277,1,0,0,0,3521,3522,5,105,0,0,3522,3528, - 3,132,66,0,3523,3524,5,379,0,0,3524,3528,5,277,0,0,3525,3526,5,105, - 0,0,3526,3528,5,277,0,0,3527,3521,1,0,0,0,3527,3523,1,0,0,0,3527, - 3525,1,0,0,0,3528,279,1,0,0,0,3529,3530,5,80,0,0,3530,3536,5,161, - 0,0,3531,3537,5,191,0,0,3532,3533,5,182,0,0,3533,3537,5,320,0,0, - 3534,3535,5,292,0,0,3535,3537,5,320,0,0,3536,3531,1,0,0,0,3536,3532, - 1,0,0,0,3536,3534,1,0,0,0,3537,281,1,0,0,0,3538,3539,5,351,0,0,3539, - 3540,3,1402,701,0,3540,283,1,0,0,0,3541,3543,3,642,321,0,3542,3541, - 1,0,0,0,3542,3543,1,0,0,0,3543,3545,1,0,0,0,3544,3546,3,1014,507, - 0,3545,3544,1,0,0,0,3545,3546,1,0,0,0,3546,3548,1,0,0,0,3547,3549, - 3,286,143,0,3548,3547,1,0,0,0,3548,3549,1,0,0,0,3549,285,1,0,0,0, - 3550,3551,5,100,0,0,3551,3552,5,226,0,0,3552,3553,5,351,0,0,3553, - 3554,3,1402,701,0,3554,287,1,0,0,0,3555,3556,5,100,0,0,3556,3557, - 5,226,0,0,3557,3558,3,1436,718,0,3558,289,1,0,0,0,3559,3560,5,46, - 0,0,3560,3565,5,342,0,0,3561,3563,3,516,258,0,3562,3561,1,0,0,0, - 3562,3563,1,0,0,0,3563,3564,1,0,0,0,3564,3566,3,558,279,0,3565,3562, - 1,0,0,0,3565,3566,1,0,0,0,3566,3568,1,0,0,0,3567,3569,3,918,459, - 0,3568,3567,1,0,0,0,3568,3569,1,0,0,0,3569,3570,1,0,0,0,3570,3573, - 5,80,0,0,3571,3574,3,1332,666,0,3572,3574,3,1328,664,0,3573,3571, - 1,0,0,0,3573,3572,1,0,0,0,3574,3575,1,0,0,0,3575,3576,5,64,0,0,3576, - 3577,3,1104,552,0,3577,291,1,0,0,0,3578,3579,5,138,0,0,3579,3581, - 5,342,0,0,3580,3582,3,748,374,0,3581,3580,1,0,0,0,3581,3582,1,0, - 0,0,3582,3583,1,0,0,0,3583,3584,3,558,279,0,3584,3585,5,333,0,0, - 3585,3586,5,342,0,0,3586,3587,3,1464,732,0,3587,293,1,0,0,0,3588, - 3590,5,46,0,0,3589,3591,3,190,95,0,3590,3589,1,0,0,0,3590,3591,1, - 0,0,0,3591,3592,1,0,0,0,3592,3594,5,92,0,0,3593,3595,3,516,258,0, - 3594,3593,1,0,0,0,3594,3595,1,0,0,0,3595,3596,1,0,0,0,3596,3597, - 3,296,148,0,3597,3598,5,36,0,0,3598,3600,3,1000,500,0,3599,3601, - 3,298,149,0,3600,3599,1,0,0,0,3600,3601,1,0,0,0,3601,295,1,0,0,0, - 3602,3604,3,1404,702,0,3603,3605,3,242,121,0,3604,3603,1,0,0,0,3604, - 3605,1,0,0,0,3605,3607,1,0,0,0,3606,3608,3,276,138,0,3607,3606,1, - 0,0,0,3607,3608,1,0,0,0,3608,3610,1,0,0,0,3609,3611,3,278,139,0, - 3610,3609,1,0,0,0,3610,3611,1,0,0,0,3611,3613,1,0,0,0,3612,3614, - 3,280,140,0,3613,3612,1,0,0,0,3613,3614,1,0,0,0,3614,3616,1,0,0, - 0,3615,3617,3,282,141,0,3616,3615,1,0,0,0,3616,3617,1,0,0,0,3617, - 297,1,0,0,0,3618,3622,5,105,0,0,3619,3623,5,174,0,0,3620,3621,5, - 269,0,0,3621,3623,5,174,0,0,3622,3619,1,0,0,0,3622,3620,1,0,0,0, - 3623,299,1,0,0,0,3624,3626,5,46,0,0,3625,3627,3,304,152,0,3626,3625, - 1,0,0,0,3626,3627,1,0,0,0,3627,3628,1,0,0,0,3628,3629,5,259,0,0, - 3629,3631,5,376,0,0,3630,3632,3,516,258,0,3631,3630,1,0,0,0,3631, - 3632,1,0,0,0,3632,3633,1,0,0,0,3633,3634,3,302,151,0,3634,3635,5, - 36,0,0,3635,3637,3,1000,500,0,3636,3638,3,298,149,0,3637,3636,1, - 0,0,0,3637,3638,1,0,0,0,3638,301,1,0,0,0,3639,3641,3,1408,704,0, - 3640,3642,3,242,121,0,3641,3640,1,0,0,0,3641,3642,1,0,0,0,3642,3644, - 1,0,0,0,3643,3645,3,276,138,0,3644,3643,1,0,0,0,3644,3645,1,0,0, - 0,3645,3647,1,0,0,0,3646,3648,3,134,67,0,3647,3646,1,0,0,0,3647, - 3648,1,0,0,0,3648,3650,1,0,0,0,3649,3651,3,282,141,0,3650,3649,1, - 0,0,0,3650,3651,1,0,0,0,3651,303,1,0,0,0,3652,3653,5,367,0,0,3653, - 305,1,0,0,0,3654,3655,5,305,0,0,3655,3656,5,259,0,0,3656,3658,5, - 376,0,0,3657,3659,3,630,315,0,3658,3657,1,0,0,0,3658,3659,1,0,0, - 0,3659,3660,1,0,0,0,3660,3662,3,1410,705,0,3661,3663,3,298,149,0, - 3662,3661,1,0,0,0,3662,3663,1,0,0,0,3663,307,1,0,0,0,3664,3666,5, - 46,0,0,3665,3667,3,190,95,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0, - 3667,3668,1,0,0,0,3668,3670,5,328,0,0,3669,3671,3,516,258,0,3670, - 3669,1,0,0,0,3670,3671,1,0,0,0,3671,3672,1,0,0,0,3672,3674,3,1412, - 706,0,3673,3675,3,312,156,0,3674,3673,1,0,0,0,3674,3675,1,0,0,0, - 3675,309,1,0,0,0,3676,3677,5,138,0,0,3677,3679,5,328,0,0,3678,3680, - 3,748,374,0,3679,3678,1,0,0,0,3679,3680,1,0,0,0,3680,3681,1,0,0, - 0,3681,3682,3,1412,706,0,3682,3683,3,316,158,0,3683,311,1,0,0,0, - 3684,3685,3,316,158,0,3685,313,1,0,0,0,3686,3687,5,2,0,0,3687,3688, - 3,316,158,0,3688,3689,5,3,0,0,3689,315,1,0,0,0,3690,3692,3,318,159, - 0,3691,3690,1,0,0,0,3692,3693,1,0,0,0,3693,3691,1,0,0,0,3693,3694, - 1,0,0,0,3694,317,1,0,0,0,3695,3696,5,36,0,0,3696,3730,3,1172,586, - 0,3697,3698,5,148,0,0,3698,3730,3,322,161,0,3699,3730,5,173,0,0, - 3700,3702,5,225,0,0,3701,3703,3,320,160,0,3702,3701,1,0,0,0,3702, - 3703,1,0,0,0,3703,3704,1,0,0,0,3704,3730,3,322,161,0,3705,3706,5, - 260,0,0,3706,3730,3,322,161,0,3707,3708,5,262,0,0,3708,3730,3,322, - 161,0,3709,3710,5,269,0,0,3710,3730,7,30,0,0,3711,3712,5,281,0,0, - 3712,3713,5,147,0,0,3713,3730,3,1432,716,0,3714,3715,5,328,0,0,3715, - 3716,5,266,0,0,3716,3730,3,558,279,0,3717,3719,5,340,0,0,3718,3720, - 3,14,7,0,3719,3718,1,0,0,0,3719,3720,1,0,0,0,3720,3721,1,0,0,0,3721, - 3730,3,322,161,0,3722,3724,5,314,0,0,3723,3725,3,14,7,0,3724,3723, - 1,0,0,0,3724,3725,1,0,0,0,3725,3727,1,0,0,0,3726,3728,3,322,161, - 0,3727,3726,1,0,0,0,3727,3728,1,0,0,0,3728,3730,1,0,0,0,3729,3695, - 1,0,0,0,3729,3697,1,0,0,0,3729,3699,1,0,0,0,3729,3700,1,0,0,0,3729, - 3705,1,0,0,0,3729,3707,1,0,0,0,3729,3709,1,0,0,0,3729,3711,1,0,0, - 0,3729,3714,1,0,0,0,3729,3717,1,0,0,0,3729,3722,1,0,0,0,3730,319, - 1,0,0,0,3731,3732,5,147,0,0,3732,321,1,0,0,0,3733,3740,3,1454,727, - 0,3734,3735,5,12,0,0,3735,3740,3,1454,727,0,3736,3737,5,13,0,0,3737, - 3740,3,1454,727,0,3738,3740,3,1464,732,0,3739,3733,1,0,0,0,3739, - 3734,1,0,0,0,3739,3736,1,0,0,0,3739,3738,1,0,0,0,3740,323,1,0,0, - 0,3741,3746,3,322,161,0,3742,3743,5,6,0,0,3743,3745,3,322,161,0, - 3744,3742,1,0,0,0,3745,3748,1,0,0,0,3746,3744,1,0,0,0,3746,3747, - 1,0,0,0,3747,325,1,0,0,0,3748,3746,1,0,0,0,3749,3751,5,46,0,0,3750, - 3752,3,658,329,0,3751,3750,1,0,0,0,3751,3752,1,0,0,0,3752,3754,1, - 0,0,0,3753,3755,3,328,164,0,3754,3753,1,0,0,0,3754,3755,1,0,0,0, - 3755,3757,1,0,0,0,3756,3758,3,338,169,0,3757,3756,1,0,0,0,3757,3758, - 1,0,0,0,3758,3759,1,0,0,0,3759,3760,5,247,0,0,3760,3769,3,1436,718, - 0,3761,3762,5,215,0,0,3762,3764,3,330,165,0,3763,3765,3,332,166, - 0,3764,3763,1,0,0,0,3764,3765,1,0,0,0,3765,3767,1,0,0,0,3766,3768, - 3,336,168,0,3767,3766,1,0,0,0,3767,3768,1,0,0,0,3768,3770,1,0,0, - 0,3769,3761,1,0,0,0,3769,3770,1,0,0,0,3770,327,1,0,0,0,3771,3772, - 5,359,0,0,3772,329,1,0,0,0,3773,3775,3,1436,718,0,3774,3776,3,560, - 280,0,3775,3774,1,0,0,0,3775,3776,1,0,0,0,3776,331,1,0,0,0,3777, - 3778,5,239,0,0,3778,3779,3,330,165,0,3779,333,1,0,0,0,3780,3781, - 5,373,0,0,3781,3785,3,330,165,0,3782,3783,5,269,0,0,3783,3785,5, - 373,0,0,3784,3780,1,0,0,0,3784,3782,1,0,0,0,3785,335,1,0,0,0,3786, - 3787,3,334,167,0,3787,337,1,0,0,0,3788,3789,5,295,0,0,3789,339,1, - 0,0,0,3790,3791,5,46,0,0,3791,3792,5,351,0,0,3792,3794,3,1402,701, - 0,3793,3795,3,342,171,0,3794,3793,1,0,0,0,3794,3795,1,0,0,0,3795, - 3796,1,0,0,0,3796,3797,5,255,0,0,3797,3799,3,1458,729,0,3798,3800, - 3,134,67,0,3799,3798,1,0,0,0,3799,3800,1,0,0,0,3800,341,1,0,0,0, - 3801,3802,5,282,0,0,3802,3803,3,1470,735,0,3803,343,1,0,0,0,3804, - 3805,5,46,0,0,3805,3807,5,204,0,0,3806,3808,3,516,258,0,3807,3806, - 1,0,0,0,3807,3808,1,0,0,0,3808,3809,1,0,0,0,3809,3811,3,1436,718, - 0,3810,3812,3,14,7,0,3811,3810,1,0,0,0,3811,3812,1,0,0,0,3812,3813, - 1,0,0,0,3813,3814,3,346,173,0,3814,345,1,0,0,0,3815,3817,3,348,174, - 0,3816,3815,1,0,0,0,3817,3820,1,0,0,0,3818,3816,1,0,0,0,3818,3819, - 1,0,0,0,3819,347,1,0,0,0,3820,3818,1,0,0,0,3821,3822,5,323,0,0,3822, - 3829,3,1422,711,0,3823,3824,5,375,0,0,3824,3829,3,80,40,0,3825,3826, - 5,64,0,0,3826,3829,3,80,40,0,3827,3829,5,150,0,0,3828,3821,1,0,0, - 0,3828,3823,1,0,0,0,3828,3825,1,0,0,0,3828,3827,1,0,0,0,3829,349, - 1,0,0,0,3830,3831,5,138,0,0,3831,3832,5,204,0,0,3832,3833,3,1436, - 718,0,3833,3834,5,369,0,0,3834,3835,3,352,176,0,3835,351,1,0,0,0, - 3836,3838,3,354,177,0,3837,3836,1,0,0,0,3838,3841,1,0,0,0,3839,3837, - 1,0,0,0,3839,3840,1,0,0,0,3840,353,1,0,0,0,3841,3839,1,0,0,0,3842, - 3843,5,94,0,0,3843,3844,3,80,40,0,3844,355,1,0,0,0,3845,3846,5,138, - 0,0,3846,3847,5,204,0,0,3847,3848,3,1436,718,0,3848,3849,3,44,22, - 0,3849,3850,3,548,274,0,3850,3948,1,0,0,0,3851,3852,5,138,0,0,3852, - 3853,5,204,0,0,3853,3854,3,1436,718,0,3854,3855,3,44,22,0,3855,3856, - 3,546,273,0,3856,3948,1,0,0,0,3857,3858,5,138,0,0,3858,3859,5,204, - 0,0,3859,3860,3,1436,718,0,3860,3861,3,44,22,0,3861,3862,5,136,0, - 0,3862,3863,3,698,349,0,3863,3948,1,0,0,0,3864,3865,5,138,0,0,3865, - 3866,5,204,0,0,3866,3867,3,1436,718,0,3867,3868,3,44,22,0,3868,3869, - 5,41,0,0,3869,3870,5,2,0,0,3870,3871,3,1168,584,0,3871,3872,5,36, - 0,0,3872,3873,3,1168,584,0,3873,3874,5,3,0,0,3874,3948,1,0,0,0,3875, - 3876,5,138,0,0,3876,3877,5,204,0,0,3877,3878,3,1436,718,0,3878,3879, - 3,44,22,0,3879,3880,5,189,0,0,3880,3881,3,1168,584,0,3881,3948,1, - 0,0,0,3882,3883,5,138,0,0,3883,3884,5,204,0,0,3884,3885,3,1436,718, - 0,3885,3886,3,44,22,0,3886,3887,5,211,0,0,3887,3888,3,674,337,0, - 3888,3948,1,0,0,0,3889,3890,5,138,0,0,3890,3891,5,204,0,0,3891,3892, - 3,1436,718,0,3892,3893,3,44,22,0,3893,3894,5,278,0,0,3894,3895,3, - 736,368,0,3895,3948,1,0,0,0,3896,3897,5,138,0,0,3897,3898,5,204, - 0,0,3898,3899,3,1436,718,0,3899,3900,3,44,22,0,3900,3901,5,278,0, - 0,3901,3902,5,156,0,0,3902,3903,3,558,279,0,3903,3904,5,100,0,0, - 3904,3905,3,1436,718,0,3905,3948,1,0,0,0,3906,3907,5,138,0,0,3907, - 3908,5,204,0,0,3908,3909,3,1436,718,0,3909,3910,3,44,22,0,3910,3911, - 5,278,0,0,3911,3912,5,206,0,0,3912,3913,3,558,279,0,3913,3914,5, - 100,0,0,3914,3915,3,1436,718,0,3915,3948,1,0,0,0,3916,3917,5,138, - 0,0,3917,3918,5,204,0,0,3918,3919,3,1436,718,0,3919,3920,3,44,22, - 0,3920,3921,5,296,0,0,3921,3922,3,670,335,0,3922,3948,1,0,0,0,3923, - 3924,5,138,0,0,3924,3925,5,204,0,0,3925,3926,3,1436,718,0,3926,3927, - 3,44,22,0,3927,3928,5,442,0,0,3928,3929,3,666,333,0,3929,3948,1, - 0,0,0,3930,3931,5,138,0,0,3931,3932,5,204,0,0,3932,3933,3,1436,718, - 0,3933,3934,3,44,22,0,3934,3935,5,443,0,0,3935,3936,5,62,0,0,3936, - 3937,3,1168,584,0,3937,3938,5,247,0,0,3938,3939,3,1436,718,0,3939, - 3948,1,0,0,0,3940,3941,5,138,0,0,3941,3942,5,204,0,0,3942,3943,3, - 1436,718,0,3943,3944,3,44,22,0,3944,3945,5,360,0,0,3945,3946,3,1168, - 584,0,3946,3948,1,0,0,0,3947,3845,1,0,0,0,3947,3851,1,0,0,0,3947, - 3857,1,0,0,0,3947,3864,1,0,0,0,3947,3875,1,0,0,0,3947,3882,1,0,0, - 0,3947,3889,1,0,0,0,3947,3896,1,0,0,0,3947,3906,1,0,0,0,3947,3916, - 1,0,0,0,3947,3923,1,0,0,0,3947,3930,1,0,0,0,3947,3940,1,0,0,0,3948, - 357,1,0,0,0,3949,3950,5,46,0,0,3950,3951,5,63,0,0,3951,3952,5,174, - 0,0,3952,3953,5,381,0,0,3953,3955,3,1436,718,0,3954,3956,3,364,182, - 0,3955,3954,1,0,0,0,3955,3956,1,0,0,0,3956,3958,1,0,0,0,3957,3959, - 3,368,184,0,3958,3957,1,0,0,0,3958,3959,1,0,0,0,3959,359,1,0,0,0, - 3960,3961,5,215,0,0,3961,3969,3,330,165,0,3962,3963,5,269,0,0,3963, - 3969,5,215,0,0,3964,3965,5,373,0,0,3965,3969,3,330,165,0,3966,3967, - 5,269,0,0,3967,3969,5,373,0,0,3968,3960,1,0,0,0,3968,3962,1,0,0, - 0,3968,3964,1,0,0,0,3968,3966,1,0,0,0,3969,361,1,0,0,0,3970,3972, - 3,360,180,0,3971,3970,1,0,0,0,3972,3973,1,0,0,0,3973,3971,1,0,0, - 0,3973,3974,1,0,0,0,3974,363,1,0,0,0,3975,3976,3,362,181,0,3976, - 365,1,0,0,0,3977,3978,5,138,0,0,3978,3979,5,63,0,0,3979,3980,5,174, - 0,0,3980,3981,5,381,0,0,3981,3983,3,1436,718,0,3982,3984,3,364,182, - 0,3983,3982,1,0,0,0,3983,3984,1,0,0,0,3984,3985,1,0,0,0,3985,3986, - 3,372,186,0,3986,3995,1,0,0,0,3987,3988,5,138,0,0,3988,3989,5,63, - 0,0,3989,3990,5,174,0,0,3990,3991,5,381,0,0,3991,3992,3,1436,718, - 0,3992,3993,3,362,181,0,3993,3995,1,0,0,0,3994,3977,1,0,0,0,3994, - 3987,1,0,0,0,3995,367,1,0,0,0,3996,3997,5,280,0,0,3997,3998,5,2, - 0,0,3998,3999,3,370,185,0,3999,4000,5,3,0,0,4000,369,1,0,0,0,4001, - 4006,3,378,189,0,4002,4003,5,6,0,0,4003,4005,3,378,189,0,4004,4002, - 1,0,0,0,4005,4008,1,0,0,0,4006,4004,1,0,0,0,4006,4007,1,0,0,0,4007, - 371,1,0,0,0,4008,4006,1,0,0,0,4009,4010,5,280,0,0,4010,4011,5,2, - 0,0,4011,4012,3,374,187,0,4012,4013,5,3,0,0,4013,373,1,0,0,0,4014, - 4019,3,376,188,0,4015,4016,5,6,0,0,4016,4018,3,376,188,0,4017,4015, - 1,0,0,0,4018,4021,1,0,0,0,4019,4017,1,0,0,0,4019,4020,1,0,0,0,4020, - 375,1,0,0,0,4021,4019,1,0,0,0,4022,4030,3,378,189,0,4023,4024,5, - 333,0,0,4024,4030,3,378,189,0,4025,4026,5,133,0,0,4026,4030,3,378, - 189,0,4027,4028,5,191,0,0,4028,4030,3,378,189,0,4029,4022,1,0,0, - 0,4029,4023,1,0,0,0,4029,4025,1,0,0,0,4029,4027,1,0,0,0,4030,377, - 1,0,0,0,4031,4032,3,380,190,0,4032,4033,3,382,191,0,4033,379,1,0, - 0,0,4034,4035,3,1490,745,0,4035,381,1,0,0,0,4036,4037,3,1458,729, - 0,4037,383,1,0,0,0,4038,4039,5,46,0,0,4039,4041,5,331,0,0,4040,4042, - 3,516,258,0,4041,4040,1,0,0,0,4041,4042,1,0,0,0,4042,4043,1,0,0, - 0,4043,4045,3,1436,718,0,4044,4046,3,386,193,0,4045,4044,1,0,0,0, - 4045,4046,1,0,0,0,4046,4048,1,0,0,0,4047,4049,3,390,195,0,4048,4047, - 1,0,0,0,4048,4049,1,0,0,0,4049,4050,1,0,0,0,4050,4051,5,63,0,0,4051, - 4052,5,174,0,0,4052,4053,5,381,0,0,4053,4055,3,1436,718,0,4054,4056, - 3,368,184,0,4055,4054,1,0,0,0,4055,4056,1,0,0,0,4056,385,1,0,0,0, - 4057,4058,5,360,0,0,4058,4059,3,1458,729,0,4059,387,1,0,0,0,4060, - 4063,5,375,0,0,4061,4064,3,1458,729,0,4062,4064,5,78,0,0,4063,4061, - 1,0,0,0,4063,4062,1,0,0,0,4064,389,1,0,0,0,4065,4066,3,388,194,0, - 4066,391,1,0,0,0,4067,4068,5,138,0,0,4068,4069,5,331,0,0,4069,4075, - 3,1436,718,0,4070,4076,3,372,186,0,4071,4073,3,388,194,0,4072,4074, - 3,372,186,0,4073,4072,1,0,0,0,4073,4074,1,0,0,0,4074,4076,1,0,0, - 0,4075,4070,1,0,0,0,4075,4071,1,0,0,0,4076,393,1,0,0,0,4077,4078, - 5,46,0,0,4078,4079,5,63,0,0,4079,4081,5,92,0,0,4080,4082,3,516,258, - 0,4081,4080,1,0,0,0,4081,4082,1,0,0,0,4082,4083,1,0,0,0,4083,4084, - 3,1404,702,0,4084,4086,5,2,0,0,4085,4087,3,194,97,0,4086,4085,1, - 0,0,0,4086,4087,1,0,0,0,4087,4088,1,0,0,0,4088,4090,5,3,0,0,4089, - 4091,3,266,133,0,4090,4089,1,0,0,0,4090,4091,1,0,0,0,4091,4092,1, - 0,0,0,4092,4093,5,331,0,0,4093,4095,3,1436,718,0,4094,4096,3,368, - 184,0,4095,4094,1,0,0,0,4095,4096,1,0,0,0,4096,4117,1,0,0,0,4097, - 4098,5,46,0,0,4098,4099,5,63,0,0,4099,4101,5,92,0,0,4100,4102,3, - 516,258,0,4101,4100,1,0,0,0,4101,4102,1,0,0,0,4102,4103,1,0,0,0, - 4103,4104,3,1404,702,0,4104,4105,5,285,0,0,4105,4106,5,275,0,0,4106, - 4108,3,1406,703,0,4107,4109,3,196,98,0,4108,4107,1,0,0,0,4108,4109, - 1,0,0,0,4109,4110,1,0,0,0,4110,4111,3,144,72,0,4111,4112,5,331,0, - 0,4112,4114,3,1436,718,0,4113,4115,3,368,184,0,4114,4113,1,0,0,0, - 4114,4115,1,0,0,0,4115,4117,1,0,0,0,4116,4077,1,0,0,0,4116,4097, - 1,0,0,0,4117,395,1,0,0,0,4118,4119,5,444,0,0,4119,4120,5,63,0,0, - 4120,4121,5,323,0,0,4121,4123,3,1422,711,0,4122,4124,3,400,200,0, - 4123,4122,1,0,0,0,4123,4124,1,0,0,0,4124,4125,1,0,0,0,4125,4126, - 5,64,0,0,4126,4127,5,331,0,0,4127,4128,3,1436,718,0,4128,4129,5, - 71,0,0,4129,4131,3,1436,718,0,4130,4132,3,368,184,0,4131,4130,1, - 0,0,0,4131,4132,1,0,0,0,4132,397,1,0,0,0,4133,4134,5,74,0,0,4134, - 4137,5,94,0,0,4135,4137,5,59,0,0,4136,4133,1,0,0,0,4136,4135,1,0, - 0,0,4137,399,1,0,0,0,4138,4139,3,398,199,0,4139,4140,5,2,0,0,4140, - 4141,3,1124,562,0,4141,4142,5,3,0,0,4142,401,1,0,0,0,4143,4144,5, - 46,0,0,4144,4145,5,99,0,0,4145,4147,5,257,0,0,4146,4148,3,516,258, - 0,4147,4146,1,0,0,0,4147,4148,1,0,0,0,4148,4149,1,0,0,0,4149,4150, - 5,62,0,0,4150,4151,3,404,202,0,4151,4152,5,331,0,0,4152,4154,3,1436, - 718,0,4153,4155,3,368,184,0,4154,4153,1,0,0,0,4154,4155,1,0,0,0, - 4155,403,1,0,0,0,4156,4159,3,1470,735,0,4157,4159,5,99,0,0,4158, - 4156,1,0,0,0,4158,4157,1,0,0,0,4159,405,1,0,0,0,4160,4161,5,138, - 0,0,4161,4162,5,99,0,0,4162,4163,5,257,0,0,4163,4164,5,62,0,0,4164, - 4165,3,404,202,0,4165,4166,5,331,0,0,4166,4167,3,1436,718,0,4167, - 4168,3,372,186,0,4168,407,1,0,0,0,4169,4170,5,46,0,0,4170,4171,5, - 445,0,0,4171,4172,3,1436,718,0,4172,4173,5,80,0,0,4173,4175,3,1412, - 706,0,4174,4176,3,426,213,0,4175,4174,1,0,0,0,4175,4176,1,0,0,0, - 4176,4178,1,0,0,0,4177,4179,3,428,214,0,4178,4177,1,0,0,0,4178,4179, - 1,0,0,0,4179,4181,1,0,0,0,4180,4182,3,422,211,0,4181,4180,1,0,0, - 0,4181,4182,1,0,0,0,4182,4184,1,0,0,0,4183,4185,3,418,209,0,4184, - 4183,1,0,0,0,4184,4185,1,0,0,0,4185,4187,1,0,0,0,4186,4188,3,420, - 210,0,4187,4186,1,0,0,0,4187,4188,1,0,0,0,4188,409,1,0,0,0,4189, - 4190,5,138,0,0,4190,4191,5,445,0,0,4191,4192,3,1436,718,0,4192,4193, - 5,80,0,0,4193,4195,3,1412,706,0,4194,4196,3,424,212,0,4195,4194, - 1,0,0,0,4195,4196,1,0,0,0,4196,4198,1,0,0,0,4197,4199,3,418,209, - 0,4198,4197,1,0,0,0,4198,4199,1,0,0,0,4199,4201,1,0,0,0,4200,4202, - 3,420,210,0,4201,4200,1,0,0,0,4201,4202,1,0,0,0,4202,411,1,0,0,0, - 4203,4204,5,138,0,0,4204,4205,5,296,0,0,4205,4207,3,1428,714,0,4206, - 4208,3,660,330,0,4207,4206,1,0,0,0,4207,4208,1,0,0,0,4208,4209,1, - 0,0,0,4209,4210,3,414,207,0,4210,413,1,0,0,0,4211,4215,3,416,208, - 0,4212,4214,3,416,208,0,4213,4212,1,0,0,0,4214,4217,1,0,0,0,4215, - 4213,1,0,0,0,4215,4216,1,0,0,0,4216,4219,1,0,0,0,4217,4215,1,0,0, - 0,4218,4220,5,315,0,0,4219,4218,1,0,0,0,4219,4220,1,0,0,0,4220,4238, - 1,0,0,0,4221,4222,5,309,0,0,4222,4223,5,94,0,0,4223,4238,3,1430, - 715,0,4224,4225,5,282,0,0,4225,4226,5,94,0,0,4226,4238,3,1470,735, - 0,4227,4228,5,333,0,0,4228,4229,5,323,0,0,4229,4238,3,48,24,0,4230, - 4232,5,269,0,0,4231,4230,1,0,0,0,4231,4232,1,0,0,0,4232,4233,1,0, - 0,0,4233,4234,5,462,0,0,4234,4235,5,80,0,0,4235,4236,5,204,0,0,4236, - 4238,3,1436,718,0,4237,4211,1,0,0,0,4237,4221,1,0,0,0,4237,4224, - 1,0,0,0,4237,4227,1,0,0,0,4237,4231,1,0,0,0,4238,415,1,0,0,0,4239, - 4241,5,205,0,0,4240,4239,1,0,0,0,4240,4241,1,0,0,0,4241,4242,1,0, - 0,0,4242,4243,5,327,0,0,4243,4250,5,243,0,0,4244,4246,5,205,0,0, - 4245,4244,1,0,0,0,4245,4246,1,0,0,0,4246,4247,1,0,0,0,4247,4248, - 5,327,0,0,4248,4250,5,181,0,0,4249,4240,1,0,0,0,4249,4245,1,0,0, - 0,4250,4268,1,0,0,0,4251,4252,5,333,0,0,4252,4253,3,1436,718,0,4253, - 4256,7,31,0,0,4254,4257,3,1436,718,0,4255,4257,5,53,0,0,4256,4254, - 1,0,0,0,4256,4255,1,0,0,0,4257,4268,1,0,0,0,4258,4259,5,333,0,0, - 4259,4260,3,1436,718,0,4260,4261,5,64,0,0,4261,4262,5,434,0,0,4262, - 4268,1,0,0,0,4263,4264,5,313,0,0,4264,4268,3,1436,718,0,4265,4266, - 5,313,0,0,4266,4268,5,30,0,0,4267,4249,1,0,0,0,4267,4251,1,0,0,0, - 4267,4258,1,0,0,0,4267,4263,1,0,0,0,4267,4265,1,0,0,0,4268,417,1, - 0,0,0,4269,4270,5,100,0,0,4270,4271,5,2,0,0,4271,4272,3,1212,606, - 0,4272,4273,5,3,0,0,4273,419,1,0,0,0,4274,4275,5,105,0,0,4275,4276, - 5,42,0,0,4276,4277,5,2,0,0,4277,4278,3,1212,606,0,4278,4279,5,3, - 0,0,4279,421,1,0,0,0,4280,4281,5,94,0,0,4281,4282,3,1472,736,0,4282, - 423,1,0,0,0,4283,4284,5,94,0,0,4284,4285,3,1472,736,0,4285,425,1, - 0,0,0,4286,4290,5,36,0,0,4287,4291,5,541,0,0,4288,4291,5,542,0,0, - 4289,4291,3,1492,746,0,4290,4287,1,0,0,0,4290,4288,1,0,0,0,4290, - 4289,1,0,0,0,4291,427,1,0,0,0,4292,4293,5,62,0,0,4293,4294,3,430, - 215,0,4294,429,1,0,0,0,4295,4296,7,32,0,0,4296,431,1,0,0,0,4297, - 4298,5,46,0,0,4298,4299,5,131,0,0,4299,4300,5,446,0,0,4300,4301, - 3,1436,718,0,4301,4302,5,360,0,0,4302,4303,3,434,217,0,4303,4304, - 5,215,0,0,4304,4305,3,330,165,0,4305,433,1,0,0,0,4306,4307,7,33, - 0,0,4307,435,1,0,0,0,4308,4310,5,46,0,0,4309,4311,3,658,329,0,4310, - 4309,1,0,0,0,4310,4311,1,0,0,0,4311,4312,1,0,0,0,4312,4313,5,357, - 0,0,4313,4314,3,1436,718,0,4314,4315,3,438,219,0,4315,4316,3,444, - 222,0,4316,4317,5,80,0,0,4317,4319,3,1406,703,0,4318,4320,3,448, - 224,0,4319,4318,1,0,0,0,4319,4320,1,0,0,0,4320,4322,1,0,0,0,4321, - 4323,3,460,230,0,4322,4321,1,0,0,0,4322,4323,1,0,0,0,4323,4325,1, - 0,0,0,4324,4326,3,466,233,0,4325,4324,1,0,0,0,4325,4326,1,0,0,0, - 4326,4327,1,0,0,0,4327,4328,5,202,0,0,4328,4329,3,468,234,0,4329, - 4330,5,2,0,0,4330,4331,3,470,235,0,4331,4332,5,3,0,0,4332,4363,1, - 0,0,0,4333,4335,5,46,0,0,4334,4336,3,658,329,0,4335,4334,1,0,0,0, - 4335,4336,1,0,0,0,4336,4338,1,0,0,0,4337,4339,5,45,0,0,4338,4337, - 1,0,0,0,4338,4339,1,0,0,0,4339,4340,1,0,0,0,4340,4341,5,357,0,0, - 4341,4342,3,1436,718,0,4342,4343,3,438,219,0,4343,4344,3,444,222, - 0,4344,4345,5,80,0,0,4345,4347,3,1406,703,0,4346,4348,3,474,237, - 0,4347,4346,1,0,0,0,4347,4348,1,0,0,0,4348,4349,1,0,0,0,4349,4351, - 3,476,238,0,4350,4352,3,440,220,0,4351,4350,1,0,0,0,4351,4352,1, - 0,0,0,4352,4354,1,0,0,0,4353,4355,3,466,233,0,4354,4353,1,0,0,0, - 4354,4355,1,0,0,0,4355,4356,1,0,0,0,4356,4357,5,202,0,0,4357,4358, - 3,468,234,0,4358,4359,5,2,0,0,4359,4360,3,470,235,0,4360,4361,5, - 3,0,0,4361,4363,1,0,0,0,4362,4308,1,0,0,0,4362,4333,1,0,0,0,4363, - 437,1,0,0,0,4364,4369,5,145,0,0,4365,4369,5,135,0,0,4366,4367,5, - 242,0,0,4367,4369,5,275,0,0,4368,4364,1,0,0,0,4368,4365,1,0,0,0, - 4368,4366,1,0,0,0,4369,439,1,0,0,0,4370,4372,5,62,0,0,4371,4373, - 5,192,0,0,4372,4371,1,0,0,0,4372,4373,1,0,0,0,4373,4374,1,0,0,0, - 4374,4375,3,442,221,0,4375,441,1,0,0,0,4376,4377,7,34,0,0,4377,443, - 1,0,0,0,4378,4383,3,446,223,0,4379,4380,5,82,0,0,4380,4382,3,446, - 223,0,4381,4379,1,0,0,0,4382,4385,1,0,0,0,4383,4381,1,0,0,0,4383, - 4384,1,0,0,0,4384,445,1,0,0,0,4385,4383,1,0,0,0,4386,4394,5,241, - 0,0,4387,4394,5,182,0,0,4388,4394,5,369,0,0,4389,4390,5,369,0,0, - 4390,4391,5,275,0,0,4391,4394,3,244,122,0,4392,4394,5,358,0,0,4393, - 4386,1,0,0,0,4393,4387,1,0,0,0,4393,4388,1,0,0,0,4393,4389,1,0,0, - 0,4393,4392,1,0,0,0,4394,447,1,0,0,0,4395,4396,5,447,0,0,4396,4397, - 3,450,225,0,4397,449,1,0,0,0,4398,4400,3,452,226,0,4399,4398,1,0, - 0,0,4400,4401,1,0,0,0,4401,4399,1,0,0,0,4401,4402,1,0,0,0,4402,451, - 1,0,0,0,4403,4404,3,454,227,0,4404,4406,3,456,228,0,4405,4407,3, - 872,436,0,4406,4405,1,0,0,0,4406,4407,1,0,0,0,4407,4408,1,0,0,0, - 4408,4409,3,458,229,0,4409,453,1,0,0,0,4410,4411,7,35,0,0,4411,455, - 1,0,0,0,4412,4413,7,36,0,0,4413,457,1,0,0,0,4414,4415,3,1474,737, - 0,4415,459,1,0,0,0,4416,4418,5,62,0,0,4417,4419,3,462,231,0,4418, - 4417,1,0,0,0,4418,4419,1,0,0,0,4419,4420,1,0,0,0,4420,4421,3,464, - 232,0,4421,461,1,0,0,0,4422,4423,5,192,0,0,4423,463,1,0,0,0,4424, - 4425,7,34,0,0,4425,465,1,0,0,0,4426,4427,5,102,0,0,4427,4428,5,2, - 0,0,4428,4429,3,1212,606,0,4429,4430,5,3,0,0,4430,467,1,0,0,0,4431, - 4432,5,211,0,0,4432,4436,3,1444,722,0,4433,4434,5,296,0,0,4434,4436, - 3,1428,714,0,4435,4431,1,0,0,0,4435,4433,1,0,0,0,4436,469,1,0,0, - 0,4437,4440,3,472,236,0,4438,4440,1,0,0,0,4439,4437,1,0,0,0,4439, - 4438,1,0,0,0,4440,4445,1,0,0,0,4441,4442,5,6,0,0,4442,4444,3,472, - 236,0,4443,4441,1,0,0,0,4444,4447,1,0,0,0,4445,4443,1,0,0,0,4445, - 4446,1,0,0,0,4446,471,1,0,0,0,4447,4445,1,0,0,0,4448,4453,3,1456, - 728,0,4449,4453,3,1454,727,0,4450,4453,3,1458,729,0,4451,4453,3, - 1490,745,0,4452,4448,1,0,0,0,4452,4449,1,0,0,0,4452,4450,1,0,0,0, - 4452,4451,1,0,0,0,4453,473,1,0,0,0,4454,4455,5,64,0,0,4455,4456, - 3,1412,706,0,4456,475,1,0,0,0,4457,4459,3,478,239,0,4458,4457,1, - 0,0,0,4459,4462,1,0,0,0,4460,4458,1,0,0,0,4460,4461,1,0,0,0,4461, - 477,1,0,0,0,4462,4460,1,0,0,0,4463,4464,5,77,0,0,4464,4475,5,54, - 0,0,4465,4475,5,54,0,0,4466,4467,5,69,0,0,4467,4475,5,221,0,0,4468, - 4469,5,69,0,0,4469,4475,5,180,0,0,4470,4471,5,77,0,0,4471,4475,5, - 371,0,0,4472,4473,5,269,0,0,4473,4475,5,228,0,0,4474,4463,1,0,0, - 0,4474,4465,1,0,0,0,4474,4466,1,0,0,0,4474,4468,1,0,0,0,4474,4470, - 1,0,0,0,4474,4472,1,0,0,0,4475,479,1,0,0,0,4476,4477,5,46,0,0,4477, - 4478,5,198,0,0,4478,4479,5,357,0,0,4479,4480,3,1436,718,0,4480,4481, - 5,80,0,0,4481,4482,3,1490,745,0,4482,4483,5,202,0,0,4483,4484,3, - 468,234,0,4484,4485,5,2,0,0,4485,4486,5,3,0,0,4486,4501,1,0,0,0, - 4487,4488,5,46,0,0,4488,4489,5,198,0,0,4489,4490,5,357,0,0,4490, - 4491,3,1436,718,0,4491,4492,5,80,0,0,4492,4493,3,1490,745,0,4493, - 4494,5,102,0,0,4494,4495,3,482,241,0,4495,4496,5,202,0,0,4496,4497, - 3,468,234,0,4497,4498,5,2,0,0,4498,4499,5,3,0,0,4499,4501,1,0,0, - 0,4500,4476,1,0,0,0,4500,4487,1,0,0,0,4501,481,1,0,0,0,4502,4507, - 3,484,242,0,4503,4504,5,33,0,0,4504,4506,3,484,242,0,4505,4503,1, - 0,0,0,4506,4509,1,0,0,0,4507,4505,1,0,0,0,4507,4508,1,0,0,0,4508, - 483,1,0,0,0,4509,4507,1,0,0,0,4510,4511,3,1474,737,0,4511,4512,5, - 68,0,0,4512,4513,5,2,0,0,4513,4514,3,486,243,0,4514,4515,5,3,0,0, - 4515,485,1,0,0,0,4516,4521,3,1458,729,0,4517,4518,5,6,0,0,4518,4520, - 3,1458,729,0,4519,4517,1,0,0,0,4520,4523,1,0,0,0,4521,4519,1,0,0, - 0,4521,4522,1,0,0,0,4522,487,1,0,0,0,4523,4521,1,0,0,0,4524,4525, - 5,138,0,0,4525,4526,5,198,0,0,4526,4527,5,357,0,0,4527,4528,3,1436, - 718,0,4528,4529,3,490,245,0,4529,489,1,0,0,0,4530,4532,5,193,0,0, - 4531,4533,7,20,0,0,4532,4531,1,0,0,0,4532,4533,1,0,0,0,4533,4536, - 1,0,0,0,4534,4536,5,186,0,0,4535,4530,1,0,0,0,4535,4534,1,0,0,0, - 4536,491,1,0,0,0,4537,4538,5,46,0,0,4538,4539,5,140,0,0,4539,4540, - 3,558,279,0,4540,4541,5,42,0,0,4541,4542,5,2,0,0,4542,4543,3,1212, - 606,0,4543,4544,5,3,0,0,4544,4545,3,476,238,0,4545,493,1,0,0,0,4546, - 4548,5,46,0,0,4547,4549,3,658,329,0,4548,4547,1,0,0,0,4548,4549, - 1,0,0,0,4549,4550,1,0,0,0,4550,4551,5,136,0,0,4551,4552,3,1444,722, - 0,4552,4553,3,694,347,0,4553,4554,3,496,248,0,4554,4650,1,0,0,0, - 4555,4557,5,46,0,0,4556,4558,3,658,329,0,4557,4556,1,0,0,0,4557, - 4558,1,0,0,0,4558,4559,1,0,0,0,4559,4560,5,136,0,0,4560,4561,3,1444, - 722,0,4561,4562,3,504,252,0,4562,4650,1,0,0,0,4563,4564,5,46,0,0, - 4564,4565,5,278,0,0,4565,4566,3,732,366,0,4566,4567,3,496,248,0, - 4567,4650,1,0,0,0,4568,4569,5,46,0,0,4569,4570,5,360,0,0,4570,4571, - 3,558,279,0,4571,4572,3,496,248,0,4572,4650,1,0,0,0,4573,4574,5, - 46,0,0,4574,4575,5,360,0,0,4575,4650,3,558,279,0,4576,4577,5,46, - 0,0,4577,4578,5,360,0,0,4578,4579,3,558,279,0,4579,4580,5,36,0,0, - 4580,4582,5,2,0,0,4581,4583,3,1148,574,0,4582,4581,1,0,0,0,4582, - 4583,1,0,0,0,4583,4584,1,0,0,0,4584,4585,5,3,0,0,4585,4650,1,0,0, - 0,4586,4587,5,46,0,0,4587,4588,5,360,0,0,4588,4589,3,558,279,0,4589, - 4590,5,36,0,0,4590,4591,5,196,0,0,4591,4593,5,2,0,0,4592,4594,3, - 510,255,0,4593,4592,1,0,0,0,4593,4594,1,0,0,0,4594,4595,1,0,0,0, - 4595,4596,5,3,0,0,4596,4650,1,0,0,0,4597,4598,5,46,0,0,4598,4599, - 5,360,0,0,4599,4600,3,558,279,0,4600,4601,5,36,0,0,4601,4602,5,299, - 0,0,4602,4603,3,496,248,0,4603,4650,1,0,0,0,4604,4605,5,46,0,0,4605, - 4606,5,355,0,0,4606,4607,5,325,0,0,4607,4608,5,283,0,0,4608,4609, - 3,558,279,0,4609,4610,3,496,248,0,4610,4650,1,0,0,0,4611,4612,5, - 46,0,0,4612,4613,5,355,0,0,4613,4614,5,325,0,0,4614,4615,5,185,0, - 0,4615,4616,3,558,279,0,4616,4617,3,496,248,0,4617,4650,1,0,0,0, - 4618,4619,5,46,0,0,4619,4620,5,355,0,0,4620,4621,5,325,0,0,4621, - 4622,5,353,0,0,4622,4623,3,558,279,0,4623,4624,3,496,248,0,4624, - 4650,1,0,0,0,4625,4626,5,46,0,0,4626,4627,5,355,0,0,4627,4628,5, - 325,0,0,4628,4629,5,163,0,0,4629,4630,3,558,279,0,4630,4631,3,496, - 248,0,4631,4650,1,0,0,0,4632,4633,5,46,0,0,4633,4635,5,108,0,0,4634, - 4636,3,516,258,0,4635,4634,1,0,0,0,4635,4636,1,0,0,0,4636,4637,1, - 0,0,0,4637,4638,3,558,279,0,4638,4639,3,496,248,0,4639,4650,1,0, - 0,0,4640,4641,5,46,0,0,4641,4643,5,108,0,0,4642,4644,3,516,258,0, - 4643,4642,1,0,0,0,4643,4644,1,0,0,0,4644,4645,1,0,0,0,4645,4646, - 3,558,279,0,4646,4647,5,64,0,0,4647,4648,3,558,279,0,4648,4650,1, - 0,0,0,4649,4546,1,0,0,0,4649,4555,1,0,0,0,4649,4563,1,0,0,0,4649, - 4568,1,0,0,0,4649,4573,1,0,0,0,4649,4576,1,0,0,0,4649,4586,1,0,0, - 0,4649,4597,1,0,0,0,4649,4604,1,0,0,0,4649,4611,1,0,0,0,4649,4618, - 1,0,0,0,4649,4625,1,0,0,0,4649,4632,1,0,0,0,4649,4640,1,0,0,0,4650, - 495,1,0,0,0,4651,4652,5,2,0,0,4652,4653,3,498,249,0,4653,4654,5, - 3,0,0,4654,497,1,0,0,0,4655,4660,3,500,250,0,4656,4657,5,6,0,0,4657, - 4659,3,500,250,0,4658,4656,1,0,0,0,4659,4662,1,0,0,0,4660,4658,1, - 0,0,0,4660,4661,1,0,0,0,4661,499,1,0,0,0,4662,4660,1,0,0,0,4663, - 4666,3,1490,745,0,4664,4665,5,10,0,0,4665,4667,3,502,251,0,4666, - 4664,1,0,0,0,4666,4667,1,0,0,0,4667,501,1,0,0,0,4668,4675,3,688, - 344,0,4669,4675,3,1502,751,0,4670,4675,3,1324,662,0,4671,4675,3, - 322,161,0,4672,4675,3,1458,729,0,4673,4675,5,407,0,0,4674,4668,1, - 0,0,0,4674,4669,1,0,0,0,4674,4670,1,0,0,0,4674,4671,1,0,0,0,4674, - 4672,1,0,0,0,4674,4673,1,0,0,0,4675,503,1,0,0,0,4676,4677,5,2,0, - 0,4677,4678,3,506,253,0,4678,4679,5,3,0,0,4679,505,1,0,0,0,4680, - 4685,3,508,254,0,4681,4682,5,6,0,0,4682,4684,3,508,254,0,4683,4681, - 1,0,0,0,4684,4687,1,0,0,0,4685,4683,1,0,0,0,4685,4686,1,0,0,0,4686, - 507,1,0,0,0,4687,4685,1,0,0,0,4688,4689,3,1492,746,0,4689,4690,5, - 10,0,0,4690,4691,3,502,251,0,4691,509,1,0,0,0,4692,4693,3,512,256, - 0,4693,511,1,0,0,0,4694,4699,3,1458,729,0,4695,4696,5,6,0,0,4696, - 4698,3,1458,729,0,4697,4695,1,0,0,0,4698,4701,1,0,0,0,4699,4697, - 1,0,0,0,4699,4700,1,0,0,0,4700,513,1,0,0,0,4701,4699,1,0,0,0,4702, - 4703,5,138,0,0,4703,4704,5,360,0,0,4704,4705,3,558,279,0,4705,4706, - 5,133,0,0,4706,4708,5,450,0,0,4707,4709,3,516,258,0,4708,4707,1, - 0,0,0,4708,4709,1,0,0,0,4709,4710,1,0,0,0,4710,4713,3,1458,729,0, - 4711,4712,7,37,0,0,4712,4714,3,1458,729,0,4713,4711,1,0,0,0,4713, - 4714,1,0,0,0,4714,4725,1,0,0,0,4715,4716,5,138,0,0,4716,4717,5,360, - 0,0,4717,4718,3,558,279,0,4718,4719,5,309,0,0,4719,4720,5,450,0, - 0,4720,4721,3,1458,729,0,4721,4722,5,94,0,0,4722,4723,3,1458,729, - 0,4723,4725,1,0,0,0,4724,4702,1,0,0,0,4724,4715,1,0,0,0,4725,515, - 1,0,0,0,4726,4727,5,220,0,0,4727,4728,5,77,0,0,4728,4729,5,396,0, - 0,4729,517,1,0,0,0,4730,4731,5,46,0,0,4731,4732,5,278,0,0,4732,4733, - 5,156,0,0,4733,4735,3,558,279,0,4734,4736,3,524,262,0,4735,4734, - 1,0,0,0,4735,4736,1,0,0,0,4736,4737,1,0,0,0,4737,4738,5,62,0,0,4738, - 4739,5,360,0,0,4739,4740,3,1168,584,0,4740,4741,5,100,0,0,4741,4743, - 3,1436,718,0,4742,4744,3,526,263,0,4743,4742,1,0,0,0,4743,4744,1, - 0,0,0,4744,4745,1,0,0,0,4745,4746,5,36,0,0,4746,4747,3,520,260,0, - 4747,519,1,0,0,0,4748,4753,3,522,261,0,4749,4750,5,6,0,0,4750,4752, - 3,522,261,0,4751,4749,1,0,0,0,4752,4755,1,0,0,0,4753,4751,1,0,0, - 0,4753,4754,1,0,0,0,4754,521,1,0,0,0,4755,4753,1,0,0,0,4756,4757, - 5,278,0,0,4757,4758,3,1456,728,0,4758,4760,3,732,366,0,4759,4761, - 3,528,264,0,4760,4759,1,0,0,0,4760,4761,1,0,0,0,4761,4763,1,0,0, - 0,4762,4764,3,530,265,0,4763,4762,1,0,0,0,4763,4764,1,0,0,0,4764, - 4788,1,0,0,0,4765,4766,5,278,0,0,4766,4767,3,1456,728,0,4767,4769, - 3,736,368,0,4768,4770,3,528,264,0,4769,4768,1,0,0,0,4769,4770,1, - 0,0,0,4770,4772,1,0,0,0,4771,4773,3,530,265,0,4772,4771,1,0,0,0, - 4772,4773,1,0,0,0,4773,4788,1,0,0,0,4774,4775,5,211,0,0,4775,4776, - 3,1456,728,0,4776,4777,3,674,337,0,4777,4788,1,0,0,0,4778,4779,5, - 211,0,0,4779,4780,3,1456,728,0,4780,4781,5,2,0,0,4781,4782,3,1342, - 671,0,4782,4783,5,3,0,0,4783,4784,3,674,337,0,4784,4788,1,0,0,0, - 4785,4786,5,345,0,0,4786,4788,3,1168,584,0,4787,4756,1,0,0,0,4787, - 4765,1,0,0,0,4787,4774,1,0,0,0,4787,4778,1,0,0,0,4787,4785,1,0,0, - 0,4788,523,1,0,0,0,4789,4790,5,53,0,0,4790,525,1,0,0,0,4791,4792, - 5,206,0,0,4792,4793,3,558,279,0,4793,527,1,0,0,0,4794,4795,5,62, - 0,0,4795,4801,5,325,0,0,4796,4797,5,62,0,0,4797,4798,5,83,0,0,4798, - 4799,5,147,0,0,4799,4801,3,558,279,0,4800,4794,1,0,0,0,4800,4796, - 1,0,0,0,4801,529,1,0,0,0,4802,4803,5,302,0,0,4803,531,1,0,0,0,4804, - 4805,5,46,0,0,4805,4806,5,278,0,0,4806,4807,5,206,0,0,4807,4808, - 3,558,279,0,4808,4809,5,100,0,0,4809,4810,3,1436,718,0,4810,533, - 1,0,0,0,4811,4812,5,138,0,0,4812,4813,5,278,0,0,4813,4814,5,206, - 0,0,4814,4815,3,558,279,0,4815,4816,5,100,0,0,4816,4817,3,1436,718, - 0,4817,4818,5,133,0,0,4818,4819,3,520,260,0,4819,4830,1,0,0,0,4820, - 4821,5,138,0,0,4821,4822,5,278,0,0,4822,4823,5,206,0,0,4823,4824, - 3,558,279,0,4824,4825,5,100,0,0,4825,4826,3,1436,718,0,4826,4827, - 5,191,0,0,4827,4828,3,536,268,0,4828,4830,1,0,0,0,4829,4811,1,0, - 0,0,4829,4820,1,0,0,0,4830,535,1,0,0,0,4831,4836,3,538,269,0,4832, - 4833,5,6,0,0,4833,4835,3,538,269,0,4834,4832,1,0,0,0,4835,4838,1, - 0,0,0,4836,4834,1,0,0,0,4836,4837,1,0,0,0,4837,537,1,0,0,0,4838, - 4836,1,0,0,0,4839,4840,5,278,0,0,4840,4841,3,1456,728,0,4841,4842, - 5,2,0,0,4842,4843,3,1342,671,0,4843,4844,5,3,0,0,4844,4852,1,0,0, - 0,4845,4846,5,211,0,0,4846,4847,3,1456,728,0,4847,4848,5,2,0,0,4848, - 4849,3,1342,671,0,4849,4850,5,3,0,0,4850,4852,1,0,0,0,4851,4839, - 1,0,0,0,4851,4845,1,0,0,0,4852,539,1,0,0,0,4853,4854,5,301,0,0,4854, - 4855,5,281,0,0,4855,4856,5,147,0,0,4856,4857,3,1472,736,0,4857,4858, - 5,94,0,0,4858,4859,3,1470,735,0,4859,541,1,0,0,0,4860,4861,5,191, - 0,0,4861,4863,5,92,0,0,4862,4864,3,748,374,0,4863,4862,1,0,0,0,4863, - 4864,1,0,0,0,4864,4865,1,0,0,0,4865,4867,3,1392,696,0,4866,4868, - 3,124,62,0,4867,4866,1,0,0,0,4867,4868,1,0,0,0,4868,5240,1,0,0,0, - 4869,4870,5,191,0,0,4870,4872,5,328,0,0,4871,4873,3,748,374,0,4872, - 4871,1,0,0,0,4872,4873,1,0,0,0,4873,4874,1,0,0,0,4874,4876,3,1416, - 708,0,4875,4877,3,124,62,0,4876,4875,1,0,0,0,4876,4877,1,0,0,0,4877, - 5240,1,0,0,0,4878,4879,5,191,0,0,4879,4881,5,376,0,0,4880,4882,3, - 748,374,0,4881,4880,1,0,0,0,4881,4882,1,0,0,0,4882,4883,1,0,0,0, - 4883,4885,3,544,272,0,4884,4886,3,124,62,0,4885,4884,1,0,0,0,4885, - 4886,1,0,0,0,4886,5240,1,0,0,0,4887,4888,5,191,0,0,4888,4889,5,259, - 0,0,4889,4891,5,376,0,0,4890,4892,3,748,374,0,4891,4890,1,0,0,0, - 4891,4892,1,0,0,0,4892,4893,1,0,0,0,4893,4895,3,544,272,0,4894,4896, - 3,124,62,0,4895,4894,1,0,0,0,4895,4896,1,0,0,0,4896,5240,1,0,0,0, - 4897,4898,5,191,0,0,4898,4900,5,226,0,0,4899,4901,3,748,374,0,4900, - 4899,1,0,0,0,4900,4901,1,0,0,0,4901,4902,1,0,0,0,4902,4904,3,1416, - 708,0,4903,4905,3,124,62,0,4904,4903,1,0,0,0,4904,4905,1,0,0,0,4905, - 5240,1,0,0,0,4906,4907,5,191,0,0,4907,4908,5,63,0,0,4908,4910,5, - 92,0,0,4909,4911,3,748,374,0,4910,4909,1,0,0,0,4910,4911,1,0,0,0, - 4911,4912,1,0,0,0,4912,4914,3,1392,696,0,4913,4915,3,124,62,0,4914, - 4913,1,0,0,0,4914,4915,1,0,0,0,4915,5240,1,0,0,0,4916,4917,5,191, - 0,0,4917,4919,5,108,0,0,4918,4920,3,748,374,0,4919,4918,1,0,0,0, - 4919,4920,1,0,0,0,4920,4921,1,0,0,0,4921,4923,3,1416,708,0,4922, - 4924,3,124,62,0,4923,4922,1,0,0,0,4923,4924,1,0,0,0,4924,5240,1, - 0,0,0,4925,4926,5,191,0,0,4926,4928,5,168,0,0,4927,4929,3,748,374, - 0,4928,4927,1,0,0,0,4928,4929,1,0,0,0,4929,4930,1,0,0,0,4930,4932, - 3,1416,708,0,4931,4933,3,124,62,0,4932,4931,1,0,0,0,4932,4933,1, - 0,0,0,4933,5240,1,0,0,0,4934,4935,5,191,0,0,4935,4937,5,342,0,0, - 4936,4938,3,748,374,0,4937,4936,1,0,0,0,4937,4938,1,0,0,0,4938,4939, - 1,0,0,0,4939,4941,3,1416,708,0,4940,4942,3,124,62,0,4941,4940,1, - 0,0,0,4941,4942,1,0,0,0,4942,5240,1,0,0,0,4943,4944,5,191,0,0,4944, - 4945,5,355,0,0,4945,4946,5,325,0,0,4946,4948,5,283,0,0,4947,4949, - 3,748,374,0,4948,4947,1,0,0,0,4948,4949,1,0,0,0,4949,4950,1,0,0, - 0,4950,4952,3,1416,708,0,4951,4953,3,124,62,0,4952,4951,1,0,0,0, - 4952,4953,1,0,0,0,4953,5240,1,0,0,0,4954,4955,5,191,0,0,4955,4956, - 5,355,0,0,4956,4957,5,325,0,0,4957,4959,5,185,0,0,4958,4960,3,748, - 374,0,4959,4958,1,0,0,0,4959,4960,1,0,0,0,4960,4961,1,0,0,0,4961, - 4963,3,1416,708,0,4962,4964,3,124,62,0,4963,4962,1,0,0,0,4963,4964, - 1,0,0,0,4964,5240,1,0,0,0,4965,4966,5,191,0,0,4966,4967,5,355,0, - 0,4967,4968,5,325,0,0,4968,4970,5,353,0,0,4969,4971,3,748,374,0, - 4970,4969,1,0,0,0,4970,4971,1,0,0,0,4971,4972,1,0,0,0,4972,4974, - 3,1416,708,0,4973,4975,3,124,62,0,4974,4973,1,0,0,0,4974,4975,1, - 0,0,0,4975,5240,1,0,0,0,4976,4977,5,191,0,0,4977,4978,5,355,0,0, - 4978,4979,5,325,0,0,4979,4981,5,163,0,0,4980,4982,3,748,374,0,4981, - 4980,1,0,0,0,4981,4982,1,0,0,0,4982,4983,1,0,0,0,4983,4985,3,1416, - 708,0,4984,4986,3,124,62,0,4985,4984,1,0,0,0,4985,4986,1,0,0,0,4986, - 5240,1,0,0,0,4987,4988,5,191,0,0,4988,4989,5,131,0,0,4989,4991,5, - 446,0,0,4990,4992,3,748,374,0,4991,4990,1,0,0,0,4991,4992,1,0,0, - 0,4992,4993,1,0,0,0,4993,4995,3,1416,708,0,4994,4996,3,124,62,0, - 4995,4994,1,0,0,0,4995,4996,1,0,0,0,4996,5240,1,0,0,0,4997,4998, - 5,191,0,0,4998,4999,5,198,0,0,4999,5001,5,357,0,0,5000,5002,3,748, - 374,0,5001,5000,1,0,0,0,5001,5002,1,0,0,0,5002,5003,1,0,0,0,5003, - 5005,3,1416,708,0,5004,5006,3,124,62,0,5005,5004,1,0,0,0,5005,5006, - 1,0,0,0,5006,5240,1,0,0,0,5007,5008,5,191,0,0,5008,5010,5,204,0, - 0,5009,5011,3,748,374,0,5010,5009,1,0,0,0,5010,5011,1,0,0,0,5011, - 5012,1,0,0,0,5012,5014,3,1416,708,0,5013,5015,3,124,62,0,5014,5013, - 1,0,0,0,5014,5015,1,0,0,0,5015,5240,1,0,0,0,5016,5017,5,191,0,0, - 5017,5018,5,63,0,0,5018,5019,5,174,0,0,5019,5021,5,381,0,0,5020, - 5022,3,748,374,0,5021,5020,1,0,0,0,5021,5022,1,0,0,0,5022,5023,1, - 0,0,0,5023,5025,3,1416,708,0,5024,5026,3,124,62,0,5025,5024,1,0, - 0,0,5025,5026,1,0,0,0,5026,5240,1,0,0,0,5027,5029,5,191,0,0,5028, - 5030,3,338,169,0,5029,5028,1,0,0,0,5029,5030,1,0,0,0,5030,5031,1, - 0,0,0,5031,5033,5,247,0,0,5032,5034,3,748,374,0,5033,5032,1,0,0, - 0,5033,5034,1,0,0,0,5034,5035,1,0,0,0,5035,5037,3,1416,708,0,5036, - 5038,3,124,62,0,5037,5036,1,0,0,0,5037,5038,1,0,0,0,5038,5240,1, - 0,0,0,5039,5040,5,191,0,0,5040,5042,5,452,0,0,5041,5043,3,748,374, - 0,5042,5041,1,0,0,0,5042,5043,1,0,0,0,5043,5044,1,0,0,0,5044,5046, - 3,1416,708,0,5045,5047,3,124,62,0,5046,5045,1,0,0,0,5046,5047,1, - 0,0,0,5047,5240,1,0,0,0,5048,5049,5,191,0,0,5049,5051,5,331,0,0, - 5050,5052,3,748,374,0,5051,5050,1,0,0,0,5051,5052,1,0,0,0,5052,5053, - 1,0,0,0,5053,5055,3,1416,708,0,5054,5056,3,124,62,0,5055,5054,1, - 0,0,0,5055,5056,1,0,0,0,5056,5240,1,0,0,0,5057,5058,5,191,0,0,5058, - 5060,5,323,0,0,5059,5061,3,748,374,0,5060,5059,1,0,0,0,5060,5061, - 1,0,0,0,5061,5062,1,0,0,0,5062,5064,3,1394,697,0,5063,5065,3,124, - 62,0,5064,5063,1,0,0,0,5064,5065,1,0,0,0,5065,5240,1,0,0,0,5066, - 5067,5,191,0,0,5067,5069,5,445,0,0,5068,5070,3,748,374,0,5069,5068, - 1,0,0,0,5069,5070,1,0,0,0,5070,5071,1,0,0,0,5071,5072,3,1436,718, - 0,5072,5073,5,80,0,0,5073,5075,3,558,279,0,5074,5076,3,124,62,0, - 5075,5074,1,0,0,0,5075,5076,1,0,0,0,5076,5240,1,0,0,0,5077,5078, - 5,191,0,0,5078,5080,5,321,0,0,5079,5081,3,748,374,0,5080,5079,1, - 0,0,0,5080,5081,1,0,0,0,5081,5082,1,0,0,0,5082,5083,3,1436,718,0, - 5083,5084,5,80,0,0,5084,5086,3,558,279,0,5085,5087,3,124,62,0,5086, - 5085,1,0,0,0,5086,5087,1,0,0,0,5087,5240,1,0,0,0,5088,5089,5,191, - 0,0,5089,5091,5,357,0,0,5090,5092,3,748,374,0,5091,5090,1,0,0,0, - 5091,5092,1,0,0,0,5092,5093,1,0,0,0,5093,5094,3,1436,718,0,5094, - 5095,5,80,0,0,5095,5097,3,558,279,0,5096,5098,3,124,62,0,5097,5096, - 1,0,0,0,5097,5098,1,0,0,0,5098,5240,1,0,0,0,5099,5100,5,191,0,0, - 5100,5102,5,360,0,0,5101,5103,3,748,374,0,5102,5101,1,0,0,0,5102, - 5103,1,0,0,0,5103,5104,1,0,0,0,5104,5106,3,562,281,0,5105,5107,3, - 124,62,0,5106,5105,1,0,0,0,5106,5107,1,0,0,0,5107,5240,1,0,0,0,5108, - 5109,5,191,0,0,5109,5111,5,189,0,0,5110,5112,3,748,374,0,5111,5110, - 1,0,0,0,5111,5112,1,0,0,0,5112,5113,1,0,0,0,5113,5115,3,562,281, - 0,5114,5116,3,124,62,0,5115,5114,1,0,0,0,5115,5116,1,0,0,0,5116, - 5240,1,0,0,0,5117,5118,5,191,0,0,5118,5119,5,226,0,0,5119,5121,5, - 109,0,0,5120,5122,3,748,374,0,5121,5120,1,0,0,0,5121,5122,1,0,0, - 0,5122,5123,1,0,0,0,5123,5125,3,552,276,0,5124,5126,3,124,62,0,5125, - 5124,1,0,0,0,5125,5126,1,0,0,0,5126,5240,1,0,0,0,5127,5128,5,191, - 0,0,5128,5130,5,41,0,0,5129,5131,3,748,374,0,5130,5129,1,0,0,0,5130, - 5131,1,0,0,0,5131,5132,1,0,0,0,5132,5133,5,2,0,0,5133,5134,3,1168, - 584,0,5134,5135,5,36,0,0,5135,5136,3,1168,584,0,5136,5138,5,3,0, - 0,5137,5139,3,124,62,0,5138,5137,1,0,0,0,5138,5139,1,0,0,0,5139, - 5240,1,0,0,0,5140,5141,5,191,0,0,5141,5142,5,278,0,0,5142,5144,5, - 156,0,0,5143,5145,3,748,374,0,5144,5143,1,0,0,0,5144,5145,1,0,0, - 0,5145,5146,1,0,0,0,5146,5147,3,558,279,0,5147,5148,5,100,0,0,5148, - 5150,3,1436,718,0,5149,5151,3,124,62,0,5150,5149,1,0,0,0,5150,5151, - 1,0,0,0,5151,5240,1,0,0,0,5152,5153,5,191,0,0,5153,5154,5,278,0, - 0,5154,5156,5,206,0,0,5155,5157,3,748,374,0,5156,5155,1,0,0,0,5156, - 5157,1,0,0,0,5157,5158,1,0,0,0,5158,5159,3,558,279,0,5159,5160,5, - 100,0,0,5160,5162,3,1436,718,0,5161,5163,3,124,62,0,5162,5161,1, - 0,0,0,5162,5163,1,0,0,0,5163,5240,1,0,0,0,5164,5165,5,191,0,0,5165, - 5166,5,281,0,0,5166,5167,5,147,0,0,5167,5169,3,1472,736,0,5168,5170, - 3,124,62,0,5169,5168,1,0,0,0,5169,5170,1,0,0,0,5170,5240,1,0,0,0, - 5171,5172,5,191,0,0,5172,5174,5,376,0,0,5173,5175,3,748,374,0,5174, - 5173,1,0,0,0,5174,5175,1,0,0,0,5175,5176,1,0,0,0,5176,5178,3,544, - 272,0,5177,5179,3,124,62,0,5178,5177,1,0,0,0,5178,5179,1,0,0,0,5179, - 5240,1,0,0,0,5180,5181,5,191,0,0,5181,5183,5,451,0,0,5182,5184,3, - 748,374,0,5183,5182,1,0,0,0,5183,5184,1,0,0,0,5184,5185,1,0,0,0, - 5185,5187,3,1436,718,0,5186,5188,3,124,62,0,5187,5186,1,0,0,0,5187, - 5188,1,0,0,0,5188,5240,1,0,0,0,5189,5190,5,191,0,0,5190,5192,5,351, - 0,0,5191,5193,3,748,374,0,5192,5191,1,0,0,0,5192,5193,1,0,0,0,5193, - 5194,1,0,0,0,5194,5240,3,1402,701,0,5195,5196,5,191,0,0,5196,5198, - 5,443,0,0,5197,5199,3,748,374,0,5198,5197,1,0,0,0,5198,5199,1,0, - 0,0,5199,5200,1,0,0,0,5200,5201,5,62,0,0,5201,5202,3,1168,584,0, - 5202,5203,5,247,0,0,5203,5205,3,1436,718,0,5204,5206,3,124,62,0, - 5205,5204,1,0,0,0,5205,5206,1,0,0,0,5206,5240,1,0,0,0,5207,5208, - 5,191,0,0,5208,5210,7,38,0,0,5209,5211,3,748,374,0,5210,5209,1,0, - 0,0,5210,5211,1,0,0,0,5211,5212,1,0,0,0,5212,5240,3,1472,736,0,5213, - 5214,5,191,0,0,5214,5215,5,99,0,0,5215,5217,5,257,0,0,5216,5218, - 3,748,374,0,5217,5216,1,0,0,0,5217,5218,1,0,0,0,5218,5219,1,0,0, - 0,5219,5220,5,62,0,0,5220,5221,3,404,202,0,5221,5222,5,331,0,0,5222, - 5223,3,1436,718,0,5223,5240,1,0,0,0,5224,5225,5,191,0,0,5225,5227, - 5,175,0,0,5226,5228,3,748,374,0,5227,5226,1,0,0,0,5227,5228,1,0, - 0,0,5228,5229,1,0,0,0,5229,5237,3,1420,710,0,5230,5232,3,14,7,0, - 5231,5230,1,0,0,0,5231,5232,1,0,0,0,5232,5233,1,0,0,0,5233,5234, - 5,2,0,0,5234,5235,3,860,430,0,5235,5236,5,3,0,0,5236,5238,1,0,0, - 0,5237,5231,1,0,0,0,5237,5238,1,0,0,0,5238,5240,1,0,0,0,5239,4860, - 1,0,0,0,5239,4869,1,0,0,0,5239,4878,1,0,0,0,5239,4887,1,0,0,0,5239, - 4897,1,0,0,0,5239,4906,1,0,0,0,5239,4916,1,0,0,0,5239,4925,1,0,0, - 0,5239,4934,1,0,0,0,5239,4943,1,0,0,0,5239,4954,1,0,0,0,5239,4965, - 1,0,0,0,5239,4976,1,0,0,0,5239,4987,1,0,0,0,5239,4997,1,0,0,0,5239, - 5007,1,0,0,0,5239,5016,1,0,0,0,5239,5027,1,0,0,0,5239,5039,1,0,0, - 0,5239,5048,1,0,0,0,5239,5057,1,0,0,0,5239,5066,1,0,0,0,5239,5077, - 1,0,0,0,5239,5088,1,0,0,0,5239,5099,1,0,0,0,5239,5108,1,0,0,0,5239, - 5117,1,0,0,0,5239,5127,1,0,0,0,5239,5140,1,0,0,0,5239,5152,1,0,0, - 0,5239,5164,1,0,0,0,5239,5171,1,0,0,0,5239,5180,1,0,0,0,5239,5189, - 1,0,0,0,5239,5195,1,0,0,0,5239,5207,1,0,0,0,5239,5213,1,0,0,0,5239, - 5224,1,0,0,0,5240,543,1,0,0,0,5241,5246,3,1410,705,0,5242,5243,5, - 6,0,0,5243,5245,3,1410,705,0,5244,5242,1,0,0,0,5245,5248,1,0,0,0, - 5246,5244,1,0,0,0,5246,5247,1,0,0,0,5247,545,1,0,0,0,5248,5246,1, - 0,0,0,5249,5251,5,63,0,0,5250,5249,1,0,0,0,5250,5251,1,0,0,0,5251, - 5252,1,0,0,0,5252,5253,5,92,0,0,5253,5274,3,1406,703,0,5254,5256, - 5,259,0,0,5255,5254,1,0,0,0,5255,5256,1,0,0,0,5256,5257,1,0,0,0, - 5257,5258,5,376,0,0,5258,5274,3,1410,705,0,5259,5260,5,226,0,0,5260, - 5274,3,558,279,0,5261,5262,5,108,0,0,5262,5274,3,558,279,0,5263, - 5264,5,168,0,0,5264,5274,3,558,279,0,5265,5266,5,342,0,0,5266,5274, - 3,558,279,0,5267,5268,5,328,0,0,5268,5274,3,558,279,0,5269,5270, - 5,355,0,0,5270,5271,5,325,0,0,5271,5272,7,39,0,0,5272,5274,3,558, - 279,0,5273,5250,1,0,0,0,5273,5255,1,0,0,0,5273,5259,1,0,0,0,5273, - 5261,1,0,0,0,5273,5263,1,0,0,0,5273,5265,1,0,0,0,5273,5267,1,0,0, - 0,5273,5269,1,0,0,0,5274,547,1,0,0,0,5275,5276,5,131,0,0,5276,5277, - 5,446,0,0,5277,5307,3,1436,718,0,5278,5279,5,198,0,0,5279,5280,5, - 357,0,0,5280,5307,3,1436,718,0,5281,5282,5,204,0,0,5282,5307,3,1436, - 718,0,5283,5284,5,63,0,0,5284,5285,5,174,0,0,5285,5286,5,381,0,0, - 5286,5307,3,1436,718,0,5287,5289,3,338,169,0,5288,5287,1,0,0,0,5288, - 5289,1,0,0,0,5289,5290,1,0,0,0,5290,5291,5,247,0,0,5291,5307,3,1436, - 718,0,5292,5293,5,452,0,0,5293,5307,3,1436,718,0,5294,5295,5,323, - 0,0,5295,5307,3,1422,711,0,5296,5297,5,331,0,0,5297,5307,3,1436, - 718,0,5298,5299,5,175,0,0,5299,5307,3,1420,710,0,5300,5301,5,318, - 0,0,5301,5307,3,1436,718,0,5302,5303,5,451,0,0,5303,5307,3,1436, - 718,0,5304,5305,5,351,0,0,5305,5307,3,1402,701,0,5306,5275,1,0,0, - 0,5306,5278,1,0,0,0,5306,5281,1,0,0,0,5306,5283,1,0,0,0,5306,5288, - 1,0,0,0,5306,5292,1,0,0,0,5306,5294,1,0,0,0,5306,5296,1,0,0,0,5306, - 5298,1,0,0,0,5306,5300,1,0,0,0,5306,5302,1,0,0,0,5306,5304,1,0,0, - 0,5307,549,1,0,0,0,5308,5309,7,40,0,0,5309,551,1,0,0,0,5310,5315, - 3,558,279,0,5311,5312,5,6,0,0,5312,5314,3,558,279,0,5313,5311,1, - 0,0,0,5314,5317,1,0,0,0,5315,5313,1,0,0,0,5315,5316,1,0,0,0,5316, - 553,1,0,0,0,5317,5315,1,0,0,0,5318,5319,3,556,278,0,5319,5320,5, - 11,0,0,5320,5321,3,1432,716,0,5321,555,1,0,0,0,5322,5324,3,1474, - 737,0,5323,5325,3,560,280,0,5324,5323,1,0,0,0,5324,5325,1,0,0,0, - 5325,557,1,0,0,0,5326,5328,3,1474,737,0,5327,5329,3,560,280,0,5328, - 5327,1,0,0,0,5328,5329,1,0,0,0,5329,559,1,0,0,0,5330,5331,5,11,0, - 0,5331,5333,3,1438,719,0,5332,5330,1,0,0,0,5333,5334,1,0,0,0,5334, - 5332,1,0,0,0,5334,5335,1,0,0,0,5335,561,1,0,0,0,5336,5341,3,1168, - 584,0,5337,5338,5,6,0,0,5338,5340,3,1168,584,0,5339,5337,1,0,0,0, - 5340,5343,1,0,0,0,5341,5339,1,0,0,0,5341,5342,1,0,0,0,5342,563,1, - 0,0,0,5343,5341,1,0,0,0,5344,5346,5,358,0,0,5345,5347,5,92,0,0,5346, - 5345,1,0,0,0,5346,5347,1,0,0,0,5347,5348,1,0,0,0,5348,5353,3,566, - 283,0,5349,5350,5,6,0,0,5350,5352,3,566,283,0,5351,5349,1,0,0,0, - 5352,5355,1,0,0,0,5353,5351,1,0,0,0,5353,5354,1,0,0,0,5354,5358, - 1,0,0,0,5355,5353,1,0,0,0,5356,5357,7,41,0,0,5357,5359,5,219,0,0, - 5358,5356,1,0,0,0,5358,5359,1,0,0,0,5359,5361,1,0,0,0,5360,5362, - 3,124,62,0,5361,5360,1,0,0,0,5361,5362,1,0,0,0,5362,565,1,0,0,0, - 5363,5365,5,81,0,0,5364,5363,1,0,0,0,5364,5365,1,0,0,0,5365,5366, - 1,0,0,0,5366,5368,3,1406,703,0,5367,5369,5,9,0,0,5368,5367,1,0,0, - 0,5368,5369,1,0,0,0,5369,567,1,0,0,0,5370,5371,5,159,0,0,5371,5372, - 5,80,0,0,5372,5373,3,546,273,0,5373,5374,5,116,0,0,5374,5375,3,570, - 285,0,5375,5536,1,0,0,0,5376,5377,5,159,0,0,5377,5378,5,80,0,0,5378, - 5379,5,44,0,0,5379,5380,3,554,277,0,5380,5381,5,116,0,0,5381,5382, - 3,570,285,0,5382,5536,1,0,0,0,5383,5384,5,159,0,0,5384,5385,5,80, - 0,0,5385,5386,3,548,274,0,5386,5387,5,116,0,0,5387,5388,3,570,285, - 0,5388,5536,1,0,0,0,5389,5390,5,159,0,0,5390,5391,5,80,0,0,5391, - 5392,5,360,0,0,5392,5393,3,1168,584,0,5393,5394,5,116,0,0,5394,5395, - 3,570,285,0,5395,5536,1,0,0,0,5396,5397,5,159,0,0,5397,5398,5,80, - 0,0,5398,5399,5,189,0,0,5399,5400,3,1168,584,0,5400,5401,5,116,0, - 0,5401,5402,3,570,285,0,5402,5536,1,0,0,0,5403,5404,5,159,0,0,5404, - 5405,5,80,0,0,5405,5406,5,136,0,0,5406,5407,3,698,349,0,5407,5408, - 5,116,0,0,5408,5409,3,570,285,0,5409,5536,1,0,0,0,5410,5411,5,159, - 0,0,5411,5412,5,80,0,0,5412,5413,5,211,0,0,5413,5414,3,674,337,0, - 5414,5415,5,116,0,0,5415,5416,3,570,285,0,5416,5536,1,0,0,0,5417, - 5418,5,159,0,0,5418,5419,5,80,0,0,5419,5420,5,278,0,0,5420,5421, - 3,736,368,0,5421,5422,5,116,0,0,5422,5423,3,570,285,0,5423,5536, - 1,0,0,0,5424,5425,5,159,0,0,5425,5426,5,80,0,0,5426,5427,5,45,0, - 0,5427,5428,3,1436,718,0,5428,5429,5,80,0,0,5429,5430,3,1406,703, - 0,5430,5431,5,116,0,0,5431,5432,3,570,285,0,5432,5536,1,0,0,0,5433, - 5434,5,159,0,0,5434,5435,5,80,0,0,5435,5436,5,45,0,0,5436,5437,3, - 1436,718,0,5437,5439,5,80,0,0,5438,5440,5,189,0,0,5439,5438,1,0, - 0,0,5439,5440,1,0,0,0,5440,5441,1,0,0,0,5441,5442,3,558,279,0,5442, - 5443,5,116,0,0,5443,5444,3,570,285,0,5444,5536,1,0,0,0,5445,5446, - 5,159,0,0,5446,5447,5,80,0,0,5447,5448,5,445,0,0,5448,5449,3,1436, - 718,0,5449,5450,5,80,0,0,5450,5451,3,558,279,0,5451,5452,5,116,0, - 0,5452,5453,3,570,285,0,5453,5536,1,0,0,0,5454,5455,5,159,0,0,5455, - 5456,5,80,0,0,5456,5457,5,321,0,0,5457,5458,3,1436,718,0,5458,5459, - 5,80,0,0,5459,5460,3,558,279,0,5460,5461,5,116,0,0,5461,5462,3,570, - 285,0,5462,5536,1,0,0,0,5463,5464,5,159,0,0,5464,5465,5,80,0,0,5465, - 5466,5,357,0,0,5466,5467,3,1436,718,0,5467,5468,5,80,0,0,5468,5469, - 3,558,279,0,5469,5470,5,116,0,0,5470,5471,3,570,285,0,5471,5536, - 1,0,0,0,5472,5473,5,159,0,0,5473,5474,5,80,0,0,5474,5475,5,296,0, - 0,5475,5476,3,670,335,0,5476,5477,5,116,0,0,5477,5478,3,570,285, - 0,5478,5536,1,0,0,0,5479,5480,5,159,0,0,5480,5481,5,80,0,0,5481, - 5482,5,442,0,0,5482,5483,3,666,333,0,5483,5484,5,116,0,0,5484,5485, - 3,570,285,0,5485,5536,1,0,0,0,5486,5487,5,159,0,0,5487,5488,5,80, - 0,0,5488,5489,5,443,0,0,5489,5490,5,62,0,0,5490,5491,3,1168,584, - 0,5491,5492,5,247,0,0,5492,5493,3,1436,718,0,5493,5494,5,116,0,0, - 5494,5495,3,570,285,0,5495,5536,1,0,0,0,5496,5497,5,159,0,0,5497, - 5498,5,80,0,0,5498,5499,5,278,0,0,5499,5500,5,156,0,0,5500,5501, - 3,558,279,0,5501,5502,5,100,0,0,5502,5503,3,1436,718,0,5503,5504, - 5,116,0,0,5504,5505,3,570,285,0,5505,5536,1,0,0,0,5506,5507,5,159, - 0,0,5507,5508,5,80,0,0,5508,5509,5,278,0,0,5509,5510,5,206,0,0,5510, - 5511,3,558,279,0,5511,5512,5,100,0,0,5512,5513,3,1436,718,0,5513, - 5514,5,116,0,0,5514,5515,3,570,285,0,5515,5536,1,0,0,0,5516,5517, - 5,159,0,0,5517,5518,5,80,0,0,5518,5519,5,248,0,0,5519,5520,5,274, - 0,0,5520,5521,3,322,161,0,5521,5522,5,116,0,0,5522,5523,3,570,285, - 0,5523,5536,1,0,0,0,5524,5525,5,159,0,0,5525,5526,5,80,0,0,5526, - 5527,5,41,0,0,5527,5528,5,2,0,0,5528,5529,3,1168,584,0,5529,5530, - 5,36,0,0,5530,5531,3,1168,584,0,5531,5532,5,3,0,0,5532,5533,5,116, - 0,0,5533,5534,3,570,285,0,5534,5536,1,0,0,0,5535,5370,1,0,0,0,5535, - 5376,1,0,0,0,5535,5383,1,0,0,0,5535,5389,1,0,0,0,5535,5396,1,0,0, - 0,5535,5403,1,0,0,0,5535,5410,1,0,0,0,5535,5417,1,0,0,0,5535,5424, - 1,0,0,0,5535,5433,1,0,0,0,5535,5445,1,0,0,0,5535,5454,1,0,0,0,5535, - 5463,1,0,0,0,5535,5472,1,0,0,0,5535,5479,1,0,0,0,5535,5486,1,0,0, - 0,5535,5496,1,0,0,0,5535,5506,1,0,0,0,5535,5516,1,0,0,0,5535,5524, - 1,0,0,0,5536,569,1,0,0,0,5537,5540,3,1458,729,0,5538,5540,5,78,0, - 0,5539,5537,1,0,0,0,5539,5538,1,0,0,0,5540,571,1,0,0,0,5541,5542, - 5,327,0,0,5542,5544,5,246,0,0,5543,5545,3,574,287,0,5544,5543,1, - 0,0,0,5544,5545,1,0,0,0,5545,5546,1,0,0,0,5546,5547,5,80,0,0,5547, - 5548,5,44,0,0,5548,5549,3,1432,716,0,5549,5550,5,116,0,0,5550,5551, - 3,576,288,0,5551,5651,1,0,0,0,5552,5553,5,327,0,0,5553,5555,5,246, - 0,0,5554,5556,3,574,287,0,5555,5554,1,0,0,0,5555,5556,1,0,0,0,5556, - 5557,1,0,0,0,5557,5558,5,80,0,0,5558,5559,5,360,0,0,5559,5560,3, - 1168,584,0,5560,5561,5,116,0,0,5561,5562,3,576,288,0,5562,5651,1, - 0,0,0,5563,5564,5,327,0,0,5564,5566,5,246,0,0,5565,5567,3,574,287, - 0,5566,5565,1,0,0,0,5566,5567,1,0,0,0,5567,5568,1,0,0,0,5568,5569, - 5,80,0,0,5569,5570,5,189,0,0,5570,5571,3,1168,584,0,5571,5572,5, - 116,0,0,5572,5573,3,576,288,0,5573,5651,1,0,0,0,5574,5575,5,327, - 0,0,5575,5577,5,246,0,0,5576,5578,3,574,287,0,5577,5576,1,0,0,0, - 5577,5578,1,0,0,0,5578,5579,1,0,0,0,5579,5580,5,80,0,0,5580,5581, - 5,136,0,0,5581,5582,3,698,349,0,5582,5583,5,116,0,0,5583,5584,3, - 576,288,0,5584,5651,1,0,0,0,5585,5586,5,327,0,0,5586,5588,5,246, - 0,0,5587,5589,3,574,287,0,5588,5587,1,0,0,0,5588,5589,1,0,0,0,5589, - 5590,1,0,0,0,5590,5591,5,80,0,0,5591,5592,5,211,0,0,5592,5593,3, - 674,337,0,5593,5594,5,116,0,0,5594,5595,3,576,288,0,5595,5651,1, - 0,0,0,5596,5597,5,327,0,0,5597,5599,5,246,0,0,5598,5600,3,574,287, - 0,5599,5598,1,0,0,0,5599,5600,1,0,0,0,5600,5601,1,0,0,0,5601,5602, - 5,80,0,0,5602,5603,5,248,0,0,5603,5604,5,274,0,0,5604,5605,3,322, - 161,0,5605,5606,5,116,0,0,5606,5607,3,576,288,0,5607,5651,1,0,0, - 0,5608,5609,5,327,0,0,5609,5611,5,246,0,0,5610,5612,3,574,287,0, - 5611,5610,1,0,0,0,5611,5612,1,0,0,0,5612,5613,1,0,0,0,5613,5614, - 5,80,0,0,5614,5615,5,296,0,0,5615,5616,3,670,335,0,5616,5617,5,116, - 0,0,5617,5618,3,576,288,0,5618,5651,1,0,0,0,5619,5620,5,327,0,0, - 5620,5622,5,246,0,0,5621,5623,3,574,287,0,5622,5621,1,0,0,0,5622, - 5623,1,0,0,0,5623,5624,1,0,0,0,5624,5625,5,80,0,0,5625,5626,5,442, - 0,0,5626,5627,3,666,333,0,5627,5628,5,116,0,0,5628,5629,3,576,288, - 0,5629,5651,1,0,0,0,5630,5631,5,327,0,0,5631,5633,5,246,0,0,5632, - 5634,3,574,287,0,5633,5632,1,0,0,0,5633,5634,1,0,0,0,5634,5635,1, - 0,0,0,5635,5636,5,80,0,0,5636,5637,3,546,273,0,5637,5638,5,116,0, - 0,5638,5639,3,576,288,0,5639,5651,1,0,0,0,5640,5641,5,327,0,0,5641, - 5643,5,246,0,0,5642,5644,3,574,287,0,5643,5642,1,0,0,0,5643,5644, - 1,0,0,0,5644,5645,1,0,0,0,5645,5646,5,80,0,0,5646,5647,3,548,274, - 0,5647,5648,5,116,0,0,5648,5649,3,576,288,0,5649,5651,1,0,0,0,5650, - 5541,1,0,0,0,5650,5552,1,0,0,0,5650,5563,1,0,0,0,5650,5574,1,0,0, - 0,5650,5585,1,0,0,0,5650,5596,1,0,0,0,5650,5608,1,0,0,0,5650,5619, - 1,0,0,0,5650,5630,1,0,0,0,5650,5640,1,0,0,0,5651,573,1,0,0,0,5652, - 5653,5,62,0,0,5653,5654,3,80,40,0,5654,575,1,0,0,0,5655,5658,3,1458, - 729,0,5656,5658,5,78,0,0,5657,5655,1,0,0,0,5657,5656,1,0,0,0,5658, - 577,1,0,0,0,5659,5660,5,61,0,0,5660,5664,3,580,290,0,5661,5662,5, - 265,0,0,5662,5664,3,580,290,0,5663,5659,1,0,0,0,5663,5661,1,0,0, - 0,5664,579,1,0,0,0,5665,5751,3,994,497,0,5666,5667,3,582,291,0,5667, - 5668,3,994,497,0,5668,5751,1,0,0,0,5669,5671,5,268,0,0,5670,5672, - 3,584,292,0,5671,5670,1,0,0,0,5671,5672,1,0,0,0,5672,5673,1,0,0, - 0,5673,5751,3,994,497,0,5674,5676,5,293,0,0,5675,5677,3,584,292, - 0,5676,5675,1,0,0,0,5676,5677,1,0,0,0,5677,5678,1,0,0,0,5678,5751, - 3,994,497,0,5679,5681,5,207,0,0,5680,5682,3,584,292,0,5681,5680, - 1,0,0,0,5681,5682,1,0,0,0,5682,5683,1,0,0,0,5683,5751,3,994,497, - 0,5684,5686,5,249,0,0,5685,5687,3,584,292,0,5686,5685,1,0,0,0,5686, - 5687,1,0,0,0,5687,5688,1,0,0,0,5688,5751,3,994,497,0,5689,5690,5, - 130,0,0,5690,5692,3,1464,732,0,5691,5693,3,584,292,0,5692,5691,1, - 0,0,0,5692,5693,1,0,0,0,5693,5694,1,0,0,0,5694,5695,3,994,497,0, - 5695,5751,1,0,0,0,5696,5697,5,307,0,0,5697,5699,3,1464,732,0,5698, - 5700,3,584,292,0,5699,5698,1,0,0,0,5699,5700,1,0,0,0,5700,5701,1, - 0,0,0,5701,5702,3,994,497,0,5702,5751,1,0,0,0,5703,5705,3,1464,732, - 0,5704,5706,3,584,292,0,5705,5704,1,0,0,0,5705,5706,1,0,0,0,5706, - 5707,1,0,0,0,5707,5708,3,994,497,0,5708,5751,1,0,0,0,5709,5711,5, - 30,0,0,5710,5712,3,584,292,0,5711,5710,1,0,0,0,5711,5712,1,0,0,0, - 5712,5713,1,0,0,0,5713,5751,3,994,497,0,5714,5716,5,210,0,0,5715, - 5717,3,584,292,0,5716,5715,1,0,0,0,5716,5717,1,0,0,0,5717,5718,1, - 0,0,0,5718,5751,3,994,497,0,5719,5720,5,210,0,0,5720,5722,3,1464, - 732,0,5721,5723,3,584,292,0,5722,5721,1,0,0,0,5722,5723,1,0,0,0, - 5723,5724,1,0,0,0,5724,5725,3,994,497,0,5725,5751,1,0,0,0,5726,5727, - 5,210,0,0,5727,5729,5,30,0,0,5728,5730,3,584,292,0,5729,5728,1,0, - 0,0,5729,5730,1,0,0,0,5730,5731,1,0,0,0,5731,5751,3,994,497,0,5732, - 5734,5,144,0,0,5733,5735,3,584,292,0,5734,5733,1,0,0,0,5734,5735, - 1,0,0,0,5735,5736,1,0,0,0,5736,5751,3,994,497,0,5737,5738,5,144, - 0,0,5738,5740,3,1464,732,0,5739,5741,3,584,292,0,5740,5739,1,0,0, - 0,5740,5741,1,0,0,0,5741,5742,1,0,0,0,5742,5743,3,994,497,0,5743, - 5751,1,0,0,0,5744,5745,5,144,0,0,5745,5747,5,30,0,0,5746,5748,3, - 584,292,0,5747,5746,1,0,0,0,5747,5748,1,0,0,0,5748,5749,1,0,0,0, - 5749,5751,3,994,497,0,5750,5665,1,0,0,0,5750,5666,1,0,0,0,5750,5669, - 1,0,0,0,5750,5674,1,0,0,0,5750,5679,1,0,0,0,5750,5684,1,0,0,0,5750, - 5689,1,0,0,0,5750,5696,1,0,0,0,5750,5703,1,0,0,0,5750,5709,1,0,0, - 0,5750,5714,1,0,0,0,5750,5719,1,0,0,0,5750,5726,1,0,0,0,5750,5732, - 1,0,0,0,5750,5737,1,0,0,0,5750,5744,1,0,0,0,5751,581,1,0,0,0,5752, - 5753,7,42,0,0,5753,583,1,0,0,0,5754,5755,3,582,291,0,5755,585,1, - 0,0,0,5756,5757,5,65,0,0,5757,5758,3,590,295,0,5758,5759,5,80,0, - 0,5759,5760,3,600,300,0,5760,5761,5,94,0,0,5761,5763,3,602,301,0, - 5762,5764,3,606,303,0,5763,5762,1,0,0,0,5763,5764,1,0,0,0,5764,587, - 1,0,0,0,5765,5766,5,317,0,0,5766,5767,3,590,295,0,5767,5768,5,80, - 0,0,5768,5769,3,600,300,0,5769,5770,5,64,0,0,5770,5772,3,602,301, - 0,5771,5773,3,124,62,0,5772,5771,1,0,0,0,5772,5773,1,0,0,0,5773, - 5787,1,0,0,0,5774,5775,5,317,0,0,5775,5776,5,65,0,0,5776,5777,5, - 279,0,0,5777,5778,5,62,0,0,5778,5779,3,590,295,0,5779,5780,5,80, - 0,0,5780,5781,3,600,300,0,5781,5782,5,64,0,0,5782,5784,3,602,301, - 0,5783,5785,3,124,62,0,5784,5783,1,0,0,0,5784,5785,1,0,0,0,5785, - 5787,1,0,0,0,5786,5765,1,0,0,0,5786,5774,1,0,0,0,5787,589,1,0,0, - 0,5788,5805,3,596,298,0,5789,5805,5,30,0,0,5790,5791,5,30,0,0,5791, - 5805,5,294,0,0,5792,5793,5,30,0,0,5793,5794,5,2,0,0,5794,5795,3, - 244,122,0,5795,5796,5,3,0,0,5796,5805,1,0,0,0,5797,5798,5,30,0,0, - 5798,5799,5,294,0,0,5799,5800,5,2,0,0,5800,5801,3,244,122,0,5801, - 5802,5,3,0,0,5802,5805,1,0,0,0,5803,5805,3,592,296,0,5804,5788,1, - 0,0,0,5804,5789,1,0,0,0,5804,5790,1,0,0,0,5804,5792,1,0,0,0,5804, - 5797,1,0,0,0,5804,5803,1,0,0,0,5805,591,1,0,0,0,5806,5811,3,594, - 297,0,5807,5808,5,6,0,0,5808,5810,3,594,297,0,5809,5807,1,0,0,0, - 5810,5813,1,0,0,0,5811,5809,1,0,0,0,5811,5812,1,0,0,0,5812,593,1, - 0,0,0,5813,5811,1,0,0,0,5814,5815,7,43,0,0,5815,595,1,0,0,0,5816, - 5821,3,598,299,0,5817,5818,5,6,0,0,5818,5820,3,598,299,0,5819,5817, - 1,0,0,0,5820,5823,1,0,0,0,5821,5819,1,0,0,0,5821,5822,1,0,0,0,5822, - 597,1,0,0,0,5823,5821,1,0,0,0,5824,5826,5,88,0,0,5825,5827,3,240, - 120,0,5826,5825,1,0,0,0,5826,5827,1,0,0,0,5827,5841,1,0,0,0,5828, - 5830,5,86,0,0,5829,5831,3,240,120,0,5830,5829,1,0,0,0,5830,5831, - 1,0,0,0,5831,5841,1,0,0,0,5832,5834,5,46,0,0,5833,5835,3,240,120, - 0,5834,5833,1,0,0,0,5834,5835,1,0,0,0,5835,5841,1,0,0,0,5836,5838, - 3,1474,737,0,5837,5839,3,240,120,0,5838,5837,1,0,0,0,5838,5839,1, - 0,0,0,5839,5841,1,0,0,0,5840,5824,1,0,0,0,5840,5828,1,0,0,0,5840, - 5832,1,0,0,0,5840,5836,1,0,0,0,5841,599,1,0,0,0,5842,5901,3,1390, - 695,0,5843,5844,5,92,0,0,5844,5901,3,1392,696,0,5845,5846,5,328, - 0,0,5846,5901,3,1390,695,0,5847,5848,5,63,0,0,5848,5849,5,174,0, - 0,5849,5850,5,381,0,0,5850,5901,3,1416,708,0,5851,5852,5,63,0,0, - 5852,5853,5,331,0,0,5853,5901,3,1416,708,0,5854,5855,5,211,0,0,5855, - 5901,3,672,336,0,5856,5857,5,296,0,0,5857,5901,3,668,334,0,5858, - 5859,5,442,0,0,5859,5901,3,664,332,0,5860,5861,5,175,0,0,5861,5901, - 3,1396,698,0,5862,5863,5,189,0,0,5863,5901,3,552,276,0,5864,5865, - 5,247,0,0,5865,5901,3,1416,708,0,5866,5867,5,248,0,0,5867,5868,5, - 274,0,0,5868,5901,3,324,162,0,5869,5870,5,323,0,0,5870,5901,3,1394, - 697,0,5871,5872,5,351,0,0,5872,5901,3,1414,707,0,5873,5874,5,360, - 0,0,5874,5901,3,552,276,0,5875,5876,5,30,0,0,5876,5877,5,350,0,0, - 5877,5878,5,68,0,0,5878,5879,5,323,0,0,5879,5901,3,1394,697,0,5880, - 5881,5,30,0,0,5881,5882,5,329,0,0,5882,5883,5,68,0,0,5883,5884,5, - 323,0,0,5884,5901,3,1394,697,0,5885,5886,5,30,0,0,5886,5887,5,212, - 0,0,5887,5888,5,68,0,0,5888,5889,5,323,0,0,5889,5901,3,1394,697, - 0,5890,5891,5,30,0,0,5891,5892,5,457,0,0,5892,5893,5,68,0,0,5893, - 5894,5,323,0,0,5894,5901,3,1394,697,0,5895,5896,5,30,0,0,5896,5897, - 5,455,0,0,5897,5898,5,68,0,0,5898,5899,5,323,0,0,5899,5901,3,1394, - 697,0,5900,5842,1,0,0,0,5900,5843,1,0,0,0,5900,5845,1,0,0,0,5900, - 5847,1,0,0,0,5900,5851,1,0,0,0,5900,5854,1,0,0,0,5900,5856,1,0,0, - 0,5900,5858,1,0,0,0,5900,5860,1,0,0,0,5900,5862,1,0,0,0,5900,5864, - 1,0,0,0,5900,5866,1,0,0,0,5900,5869,1,0,0,0,5900,5871,1,0,0,0,5900, - 5873,1,0,0,0,5900,5875,1,0,0,0,5900,5880,1,0,0,0,5900,5885,1,0,0, - 0,5900,5890,1,0,0,0,5900,5895,1,0,0,0,5901,601,1,0,0,0,5902,5907, - 3,604,302,0,5903,5904,5,6,0,0,5904,5906,3,604,302,0,5905,5903,1, - 0,0,0,5906,5909,1,0,0,0,5907,5905,1,0,0,0,5907,5908,1,0,0,0,5908, - 603,1,0,0,0,5909,5907,1,0,0,0,5910,5914,3,1470,735,0,5911,5912,5, - 66,0,0,5912,5914,3,1470,735,0,5913,5910,1,0,0,0,5913,5911,1,0,0, - 0,5914,605,1,0,0,0,5915,5916,5,105,0,0,5916,5917,5,65,0,0,5917,5918, - 5,279,0,0,5918,607,1,0,0,0,5919,5920,5,65,0,0,5920,5921,3,596,298, - 0,5921,5922,5,94,0,0,5922,5924,3,1472,736,0,5923,5925,3,612,306, - 0,5924,5923,1,0,0,0,5924,5925,1,0,0,0,5925,5927,1,0,0,0,5926,5928, - 3,614,307,0,5927,5926,1,0,0,0,5927,5928,1,0,0,0,5928,609,1,0,0,0, - 5929,5930,5,317,0,0,5930,5931,3,596,298,0,5931,5932,5,64,0,0,5932, - 5934,3,1472,736,0,5933,5935,3,614,307,0,5934,5933,1,0,0,0,5934,5935, - 1,0,0,0,5935,5937,1,0,0,0,5936,5938,3,124,62,0,5937,5936,1,0,0,0, - 5937,5938,1,0,0,0,5938,5953,1,0,0,0,5939,5940,5,317,0,0,5940,5941, - 5,134,0,0,5941,5942,5,279,0,0,5942,5943,5,62,0,0,5943,5944,3,596, - 298,0,5944,5945,5,64,0,0,5945,5947,3,1472,736,0,5946,5948,3,614, - 307,0,5947,5946,1,0,0,0,5947,5948,1,0,0,0,5948,5950,1,0,0,0,5949, - 5951,3,124,62,0,5950,5949,1,0,0,0,5950,5951,1,0,0,0,5951,5953,1, - 0,0,0,5952,5929,1,0,0,0,5952,5939,1,0,0,0,5953,611,1,0,0,0,5954, - 5955,5,105,0,0,5955,5956,5,134,0,0,5956,5957,5,279,0,0,5957,613, - 1,0,0,0,5958,5959,5,214,0,0,5959,5960,5,147,0,0,5960,5961,3,1470, - 735,0,5961,615,1,0,0,0,5962,5963,5,138,0,0,5963,5964,5,53,0,0,5964, - 5965,5,294,0,0,5965,5966,3,618,309,0,5966,5967,3,622,311,0,5967, - 617,1,0,0,0,5968,5970,3,620,310,0,5969,5968,1,0,0,0,5970,5973,1, - 0,0,0,5971,5969,1,0,0,0,5971,5972,1,0,0,0,5972,619,1,0,0,0,5973, - 5971,1,0,0,0,5974,5975,5,68,0,0,5975,5976,5,323,0,0,5976,5984,3, - 1394,697,0,5977,5978,5,62,0,0,5978,5979,5,318,0,0,5979,5984,3,1472, - 736,0,5980,5981,5,62,0,0,5981,5982,5,99,0,0,5982,5984,3,1472,736, - 0,5983,5974,1,0,0,0,5983,5977,1,0,0,0,5983,5980,1,0,0,0,5984,621, - 1,0,0,0,5985,5986,5,65,0,0,5986,5987,3,590,295,0,5987,5988,5,80, - 0,0,5988,5989,3,624,312,0,5989,5990,5,94,0,0,5990,5992,3,602,301, - 0,5991,5993,3,606,303,0,5992,5991,1,0,0,0,5992,5993,1,0,0,0,5993, - 6016,1,0,0,0,5994,5995,5,317,0,0,5995,5996,3,590,295,0,5996,5997, - 5,80,0,0,5997,5998,3,624,312,0,5998,5999,5,64,0,0,5999,6001,3,602, - 301,0,6000,6002,3,124,62,0,6001,6000,1,0,0,0,6001,6002,1,0,0,0,6002, - 6016,1,0,0,0,6003,6004,5,317,0,0,6004,6005,5,65,0,0,6005,6006,5, - 279,0,0,6006,6007,5,62,0,0,6007,6008,3,590,295,0,6008,6009,5,80, - 0,0,6009,6010,3,624,312,0,6010,6011,5,64,0,0,6011,6013,3,602,301, - 0,6012,6014,3,124,62,0,6013,6012,1,0,0,0,6013,6014,1,0,0,0,6014, - 6016,1,0,0,0,6015,5985,1,0,0,0,6015,5994,1,0,0,0,6015,6003,1,0,0, - 0,6016,623,1,0,0,0,6017,6018,7,44,0,0,6018,625,1,0,0,0,6019,6021, - 5,46,0,0,6020,6022,3,628,314,0,6021,6020,1,0,0,0,6021,6022,1,0,0, - 0,6022,6023,1,0,0,0,6023,6025,5,226,0,0,6024,6026,3,630,315,0,6025, - 6024,1,0,0,0,6025,6026,1,0,0,0,6026,6028,1,0,0,0,6027,6029,3,516, - 258,0,6028,6027,1,0,0,0,6028,6029,1,0,0,0,6029,6031,1,0,0,0,6030, - 6032,3,632,316,0,6031,6030,1,0,0,0,6031,6032,1,0,0,0,6032,6033,1, - 0,0,0,6033,6034,5,80,0,0,6034,6036,3,1118,559,0,6035,6037,3,634, - 317,0,6036,6035,1,0,0,0,6036,6037,1,0,0,0,6037,6038,1,0,0,0,6038, - 6039,5,2,0,0,6039,6040,3,636,318,0,6040,6042,5,3,0,0,6041,6043,3, - 642,321,0,6042,6041,1,0,0,0,6042,6043,1,0,0,0,6043,6045,1,0,0,0, - 6044,6046,3,220,110,0,6045,6044,1,0,0,0,6045,6046,1,0,0,0,6046,6048, - 1,0,0,0,6047,6049,3,134,67,0,6048,6047,1,0,0,0,6048,6049,1,0,0,0, - 6049,6051,1,0,0,0,6050,6052,3,282,141,0,6051,6050,1,0,0,0,6051,6052, - 1,0,0,0,6052,6054,1,0,0,0,6053,6055,3,1144,572,0,6054,6053,1,0,0, - 0,6054,6055,1,0,0,0,6055,627,1,0,0,0,6056,6057,5,98,0,0,6057,629, - 1,0,0,0,6058,6059,5,109,0,0,6059,631,1,0,0,0,6060,6061,3,1436,718, - 0,6061,633,1,0,0,0,6062,6063,5,100,0,0,6063,6064,3,1436,718,0,6064, - 635,1,0,0,0,6065,6070,3,640,320,0,6066,6067,5,6,0,0,6067,6069,3, - 640,320,0,6068,6066,1,0,0,0,6069,6072,1,0,0,0,6070,6068,1,0,0,0, - 6070,6071,1,0,0,0,6071,637,1,0,0,0,6072,6070,1,0,0,0,6073,6075,3, - 646,323,0,6074,6073,1,0,0,0,6074,6075,1,0,0,0,6075,6077,1,0,0,0, - 6076,6078,3,648,324,0,6077,6076,1,0,0,0,6077,6078,1,0,0,0,6078,6080, - 1,0,0,0,6079,6081,3,650,325,0,6080,6079,1,0,0,0,6080,6081,1,0,0, - 0,6081,6083,1,0,0,0,6082,6084,3,652,326,0,6083,6082,1,0,0,0,6083, - 6084,1,0,0,0,6084,6097,1,0,0,0,6085,6087,3,646,323,0,6086,6085,1, - 0,0,0,6086,6087,1,0,0,0,6087,6088,1,0,0,0,6088,6089,3,558,279,0, - 6089,6091,3,132,66,0,6090,6092,3,650,325,0,6091,6090,1,0,0,0,6091, - 6092,1,0,0,0,6092,6094,1,0,0,0,6093,6095,3,652,326,0,6094,6093,1, - 0,0,0,6094,6095,1,0,0,0,6095,6097,1,0,0,0,6096,6074,1,0,0,0,6096, - 6086,1,0,0,0,6097,639,1,0,0,0,6098,6099,3,1432,716,0,6099,6100,3, - 638,319,0,6100,6110,1,0,0,0,6101,6102,3,1262,631,0,6102,6103,3,638, - 319,0,6103,6110,1,0,0,0,6104,6105,5,2,0,0,6105,6106,3,1212,606,0, - 6106,6107,5,3,0,0,6107,6108,3,638,319,0,6108,6110,1,0,0,0,6109,6098, - 1,0,0,0,6109,6101,1,0,0,0,6109,6104,1,0,0,0,6110,641,1,0,0,0,6111, - 6112,5,441,0,0,6112,6113,5,2,0,0,6113,6114,3,644,322,0,6114,6115, - 5,3,0,0,6115,643,1,0,0,0,6116,6121,3,640,320,0,6117,6118,5,6,0,0, - 6118,6120,3,640,320,0,6119,6117,1,0,0,0,6120,6123,1,0,0,0,6121,6119, - 1,0,0,0,6121,6122,1,0,0,0,6122,645,1,0,0,0,6123,6121,1,0,0,0,6124, - 6125,5,43,0,0,6125,6126,3,558,279,0,6126,647,1,0,0,0,6127,6128,3, - 558,279,0,6128,649,1,0,0,0,6129,6130,7,45,0,0,6130,651,1,0,0,0,6131, - 6132,5,273,0,0,6132,6136,5,207,0,0,6133,6134,5,273,0,0,6134,6136, - 5,249,0,0,6135,6131,1,0,0,0,6135,6133,1,0,0,0,6136,653,1,0,0,0,6137, - 6139,5,46,0,0,6138,6140,3,658,329,0,6139,6138,1,0,0,0,6139,6140, - 1,0,0,0,6140,6145,1,0,0,0,6141,6142,5,211,0,0,6142,6146,3,1442,721, - 0,6143,6144,5,296,0,0,6144,6146,3,1430,715,0,6145,6141,1,0,0,0,6145, - 6143,1,0,0,0,6146,6147,1,0,0,0,6147,6157,3,676,338,0,6148,6155,5, - 316,0,0,6149,6156,3,686,343,0,6150,6151,5,92,0,0,6151,6152,5,2,0, - 0,6152,6153,3,714,357,0,6153,6154,5,3,0,0,6154,6156,1,0,0,0,6155, - 6149,1,0,0,0,6155,6150,1,0,0,0,6156,6158,1,0,0,0,6157,6148,1,0,0, - 0,6157,6158,1,0,0,0,6158,6159,1,0,0,0,6159,6162,3,702,351,0,6160, - 6161,5,105,0,0,6161,6163,3,656,328,0,6162,6160,1,0,0,0,6162,6163, - 1,0,0,0,6163,655,1,0,0,0,6164,6165,5,2,0,0,6165,6170,3,1474,737, - 0,6166,6167,5,6,0,0,6167,6169,3,1474,737,0,6168,6166,1,0,0,0,6169, - 6172,1,0,0,0,6170,6168,1,0,0,0,6170,6171,1,0,0,0,6171,6173,1,0,0, - 0,6172,6170,1,0,0,0,6173,6174,5,3,0,0,6174,657,1,0,0,0,6175,6176, - 5,82,0,0,6176,6177,5,311,0,0,6177,659,1,0,0,0,6178,6180,5,2,0,0, - 6179,6181,3,662,331,0,6180,6179,1,0,0,0,6180,6181,1,0,0,0,6181,6182, - 1,0,0,0,6182,6183,5,3,0,0,6183,661,1,0,0,0,6184,6189,3,680,340,0, - 6185,6186,5,6,0,0,6186,6188,3,680,340,0,6187,6185,1,0,0,0,6188,6191, - 1,0,0,0,6189,6187,1,0,0,0,6189,6190,1,0,0,0,6190,663,1,0,0,0,6191, - 6189,1,0,0,0,6192,6197,3,666,333,0,6193,6194,5,6,0,0,6194,6196,3, - 666,333,0,6195,6193,1,0,0,0,6196,6199,1,0,0,0,6197,6195,1,0,0,0, - 6197,6198,1,0,0,0,6198,665,1,0,0,0,6199,6197,1,0,0,0,6200,6201,3, - 1426,713,0,6201,6202,3,660,330,0,6202,6209,1,0,0,0,6203,6209,3,1500, - 750,0,6204,6206,3,1474,737,0,6205,6207,3,1380,690,0,6206,6205,1, - 0,0,0,6206,6207,1,0,0,0,6207,6209,1,0,0,0,6208,6200,1,0,0,0,6208, - 6203,1,0,0,0,6208,6204,1,0,0,0,6209,667,1,0,0,0,6210,6215,3,670, - 335,0,6211,6212,5,6,0,0,6212,6214,3,670,335,0,6213,6211,1,0,0,0, - 6214,6217,1,0,0,0,6215,6213,1,0,0,0,6215,6216,1,0,0,0,6216,669,1, - 0,0,0,6217,6215,1,0,0,0,6218,6219,3,1428,714,0,6219,6220,3,660,330, - 0,6220,6227,1,0,0,0,6221,6227,3,1500,750,0,6222,6224,3,1474,737, - 0,6223,6225,3,1380,690,0,6224,6223,1,0,0,0,6224,6225,1,0,0,0,6225, - 6227,1,0,0,0,6226,6218,1,0,0,0,6226,6221,1,0,0,0,6226,6222,1,0,0, - 0,6227,671,1,0,0,0,6228,6233,3,674,337,0,6229,6230,5,6,0,0,6230, - 6232,3,674,337,0,6231,6229,1,0,0,0,6232,6235,1,0,0,0,6233,6231,1, - 0,0,0,6233,6234,1,0,0,0,6234,673,1,0,0,0,6235,6233,1,0,0,0,6236, - 6237,3,1444,722,0,6237,6238,3,660,330,0,6238,6245,1,0,0,0,6239,6245, - 3,1500,750,0,6240,6242,3,1474,737,0,6241,6243,3,1380,690,0,6242, - 6241,1,0,0,0,6242,6243,1,0,0,0,6243,6245,1,0,0,0,6244,6236,1,0,0, - 0,6244,6239,1,0,0,0,6244,6240,1,0,0,0,6245,675,1,0,0,0,6246,6248, - 5,2,0,0,6247,6249,3,678,339,0,6248,6247,1,0,0,0,6248,6249,1,0,0, - 0,6249,6250,1,0,0,0,6250,6251,5,3,0,0,6251,677,1,0,0,0,6252,6257, - 3,690,345,0,6253,6254,5,6,0,0,6254,6256,3,690,345,0,6255,6253,1, - 0,0,0,6256,6259,1,0,0,0,6257,6255,1,0,0,0,6257,6258,1,0,0,0,6258, - 679,1,0,0,0,6259,6257,1,0,0,0,6260,6262,3,682,341,0,6261,6263,3, - 684,342,0,6262,6261,1,0,0,0,6262,6263,1,0,0,0,6263,6264,1,0,0,0, - 6264,6265,3,688,344,0,6265,6274,1,0,0,0,6266,6268,3,684,342,0,6267, - 6269,3,682,341,0,6268,6267,1,0,0,0,6268,6269,1,0,0,0,6269,6270,1, - 0,0,0,6270,6271,3,688,344,0,6271,6274,1,0,0,0,6272,6274,3,688,344, - 0,6273,6260,1,0,0,0,6273,6266,1,0,0,0,6273,6272,1,0,0,0,6274,681, - 1,0,0,0,6275,6277,5,68,0,0,6276,6278,5,453,0,0,6277,6276,1,0,0,0, - 6277,6278,1,0,0,0,6278,6283,1,0,0,0,6279,6283,5,453,0,0,6280,6283, - 5,400,0,0,6281,6283,5,101,0,0,6282,6275,1,0,0,0,6282,6279,1,0,0, - 0,6282,6280,1,0,0,0,6282,6281,1,0,0,0,6283,683,1,0,0,0,6284,6285, - 3,1482,741,0,6285,685,1,0,0,0,6286,6287,3,688,344,0,6287,687,1,0, - 0,0,6288,6301,3,1168,584,0,6289,6290,3,1482,741,0,6290,6291,3,560, - 280,0,6291,6292,5,27,0,0,6292,6293,5,360,0,0,6293,6301,1,0,0,0,6294, - 6295,5,415,0,0,6295,6296,3,1482,741,0,6296,6297,3,560,280,0,6297, - 6298,5,27,0,0,6298,6299,5,360,0,0,6299,6301,1,0,0,0,6300,6288,1, - 0,0,0,6300,6289,1,0,0,0,6300,6294,1,0,0,0,6301,689,1,0,0,0,6302, - 6305,3,680,340,0,6303,6304,7,46,0,0,6304,6306,3,1212,606,0,6305, - 6303,1,0,0,0,6305,6306,1,0,0,0,6306,691,1,0,0,0,6307,6308,3,680, - 340,0,6308,693,1,0,0,0,6309,6320,5,2,0,0,6310,6321,5,9,0,0,6311, - 6321,3,696,348,0,6312,6313,5,83,0,0,6313,6314,5,147,0,0,6314,6321, - 3,696,348,0,6315,6316,3,696,348,0,6316,6317,5,83,0,0,6317,6318,5, - 147,0,0,6318,6319,3,696,348,0,6319,6321,1,0,0,0,6320,6310,1,0,0, - 0,6320,6311,1,0,0,0,6320,6312,1,0,0,0,6320,6315,1,0,0,0,6321,6322, - 1,0,0,0,6322,6323,5,3,0,0,6323,695,1,0,0,0,6324,6329,3,692,346,0, - 6325,6326,5,6,0,0,6326,6328,3,692,346,0,6327,6325,1,0,0,0,6328,6331, - 1,0,0,0,6329,6327,1,0,0,0,6329,6330,1,0,0,0,6330,697,1,0,0,0,6331, - 6329,1,0,0,0,6332,6333,3,1444,722,0,6333,6334,3,694,347,0,6334,699, - 1,0,0,0,6335,6340,3,698,349,0,6336,6337,5,6,0,0,6337,6339,3,698, - 349,0,6338,6336,1,0,0,0,6339,6342,1,0,0,0,6340,6338,1,0,0,0,6340, - 6341,1,0,0,0,6341,701,1,0,0,0,6342,6340,1,0,0,0,6343,6345,3,706, - 353,0,6344,6343,1,0,0,0,6345,6346,1,0,0,0,6346,6344,1,0,0,0,6346, - 6347,1,0,0,0,6347,703,1,0,0,0,6348,6349,5,149,0,0,6349,6350,5,80, - 0,0,6350,6351,5,78,0,0,6351,6384,5,458,0,0,6352,6353,5,316,0,0,6353, - 6354,5,78,0,0,6354,6355,5,80,0,0,6355,6356,5,78,0,0,6356,6384,5, - 458,0,0,6357,6384,5,346,0,0,6358,6384,5,222,0,0,6359,6384,5,338, - 0,0,6360,6384,5,377,0,0,6361,6362,5,205,0,0,6362,6363,5,327,0,0, - 6363,6384,5,181,0,0,6364,6365,5,205,0,0,6365,6366,5,327,0,0,6366, - 6384,5,243,0,0,6367,6368,5,327,0,0,6368,6384,5,181,0,0,6369,6370, - 5,327,0,0,6370,6384,5,243,0,0,6371,6384,5,250,0,0,6372,6373,5,77, - 0,0,6373,6384,5,250,0,0,6374,6375,5,170,0,0,6375,6384,3,322,161, - 0,6376,6377,5,320,0,0,6377,6384,3,322,161,0,6378,6379,5,459,0,0, - 6379,6384,3,558,279,0,6380,6384,3,90,45,0,6381,6382,5,460,0,0,6382, - 6384,3,1474,737,0,6383,6348,1,0,0,0,6383,6352,1,0,0,0,6383,6357, - 1,0,0,0,6383,6358,1,0,0,0,6383,6359,1,0,0,0,6383,6360,1,0,0,0,6383, - 6361,1,0,0,0,6383,6364,1,0,0,0,6383,6367,1,0,0,0,6383,6369,1,0,0, - 0,6383,6371,1,0,0,0,6383,6372,1,0,0,0,6383,6374,1,0,0,0,6383,6376, - 1,0,0,0,6383,6378,1,0,0,0,6383,6380,1,0,0,0,6383,6381,1,0,0,0,6384, - 705,1,0,0,0,6385,6386,5,36,0,0,6386,6387,3,1458,729,0,6387,6388, - 5,6,0,0,6388,6389,3,1458,729,0,6389,6411,1,0,0,0,6390,6391,5,247, - 0,0,6391,6411,3,80,40,0,6392,6393,5,443,0,0,6393,6411,3,708,354, - 0,6394,6411,5,104,0,0,6395,6396,5,333,0,0,6396,6403,3,1474,737,0, - 6397,6398,5,94,0,0,6398,6404,3,1474,737,0,6399,6400,5,10,0,0,6400, - 6404,3,1474,737,0,6401,6402,5,64,0,0,6402,6404,5,434,0,0,6403,6397, - 1,0,0,0,6403,6399,1,0,0,0,6403,6401,1,0,0,0,6404,6411,1,0,0,0,6405, - 6406,5,36,0,0,6406,6411,3,1474,737,0,6407,6411,3,6,3,0,6408,6411, - 3,704,352,0,6409,6411,3,1474,737,0,6410,6385,1,0,0,0,6410,6390,1, - 0,0,0,6410,6392,1,0,0,0,6410,6394,1,0,0,0,6410,6395,1,0,0,0,6410, - 6405,1,0,0,0,6410,6407,1,0,0,0,6410,6408,1,0,0,0,6410,6409,1,0,0, - 0,6411,707,1,0,0,0,6412,6413,5,62,0,0,6413,6414,5,360,0,0,6414,6421, - 3,1168,584,0,6415,6416,5,6,0,0,6416,6417,5,62,0,0,6417,6418,5,360, - 0,0,6418,6420,3,1168,584,0,6419,6415,1,0,0,0,6420,6423,1,0,0,0,6421, - 6419,1,0,0,0,6421,6422,1,0,0,0,6422,709,1,0,0,0,6423,6421,1,0,0, - 0,6424,6425,5,105,0,0,6425,6426,3,496,248,0,6426,711,1,0,0,0,6427, - 6428,3,1432,716,0,6428,6429,3,688,344,0,6429,713,1,0,0,0,6430,6435, - 3,712,356,0,6431,6432,5,6,0,0,6432,6434,3,712,356,0,6433,6431,1, - 0,0,0,6434,6437,1,0,0,0,6435,6433,1,0,0,0,6435,6436,1,0,0,0,6436, - 715,1,0,0,0,6437,6435,1,0,0,0,6438,6439,5,138,0,0,6439,6440,3,718, - 359,0,6440,6442,3,720,360,0,6441,6443,3,722,361,0,6442,6441,1,0, - 0,0,6442,6443,1,0,0,0,6443,717,1,0,0,0,6444,6445,5,211,0,0,6445, - 6451,3,674,337,0,6446,6447,5,296,0,0,6447,6451,3,670,335,0,6448, - 6449,5,442,0,0,6449,6451,3,666,333,0,6450,6444,1,0,0,0,6450,6446, - 1,0,0,0,6450,6448,1,0,0,0,6451,719,1,0,0,0,6452,6454,3,704,352,0, - 6453,6452,1,0,0,0,6454,6455,1,0,0,0,6455,6453,1,0,0,0,6455,6456, - 1,0,0,0,6456,721,1,0,0,0,6457,6458,5,315,0,0,6458,723,1,0,0,0,6459, - 6460,5,191,0,0,6460,6462,5,211,0,0,6461,6463,3,748,374,0,6462,6461, - 1,0,0,0,6462,6463,1,0,0,0,6463,6464,1,0,0,0,6464,6466,3,672,336, - 0,6465,6467,3,124,62,0,6466,6465,1,0,0,0,6466,6467,1,0,0,0,6467, - 6487,1,0,0,0,6468,6469,5,191,0,0,6469,6471,5,296,0,0,6470,6472,3, - 748,374,0,6471,6470,1,0,0,0,6471,6472,1,0,0,0,6472,6473,1,0,0,0, - 6473,6475,3,668,334,0,6474,6476,3,124,62,0,6475,6474,1,0,0,0,6475, - 6476,1,0,0,0,6476,6487,1,0,0,0,6477,6478,5,191,0,0,6478,6480,5,442, - 0,0,6479,6481,3,748,374,0,6480,6479,1,0,0,0,6480,6481,1,0,0,0,6481, - 6482,1,0,0,0,6482,6484,3,664,332,0,6483,6485,3,124,62,0,6484,6483, - 1,0,0,0,6484,6485,1,0,0,0,6485,6487,1,0,0,0,6486,6459,1,0,0,0,6486, - 6468,1,0,0,0,6486,6477,1,0,0,0,6487,725,1,0,0,0,6488,6489,5,191, - 0,0,6489,6491,5,136,0,0,6490,6492,3,748,374,0,6491,6490,1,0,0,0, - 6491,6492,1,0,0,0,6492,6493,1,0,0,0,6493,6495,3,700,350,0,6494,6496, - 3,124,62,0,6495,6494,1,0,0,0,6495,6496,1,0,0,0,6496,727,1,0,0,0, - 6497,6498,5,191,0,0,6498,6500,5,278,0,0,6499,6501,3,748,374,0,6500, - 6499,1,0,0,0,6500,6501,1,0,0,0,6501,6502,1,0,0,0,6502,6504,3,734, - 367,0,6503,6505,3,124,62,0,6504,6503,1,0,0,0,6504,6505,1,0,0,0,6505, - 729,1,0,0,0,6506,6507,5,2,0,0,6507,6508,3,1168,584,0,6508,6509,5, - 3,0,0,6509,6529,1,0,0,0,6510,6511,5,2,0,0,6511,6512,3,1168,584,0, - 6512,6513,5,6,0,0,6513,6514,3,1168,584,0,6514,6515,5,3,0,0,6515, - 6529,1,0,0,0,6516,6517,5,2,0,0,6517,6518,5,407,0,0,6518,6519,5,6, - 0,0,6519,6520,3,1168,584,0,6520,6521,5,3,0,0,6521,6529,1,0,0,0,6522, - 6523,5,2,0,0,6523,6524,3,1168,584,0,6524,6525,5,6,0,0,6525,6526, - 5,407,0,0,6526,6527,5,3,0,0,6527,6529,1,0,0,0,6528,6506,1,0,0,0, - 6528,6510,1,0,0,0,6528,6516,1,0,0,0,6528,6522,1,0,0,0,6529,731,1, - 0,0,0,6530,6531,3,1474,737,0,6531,6532,5,11,0,0,6532,6534,1,0,0, - 0,6533,6530,1,0,0,0,6534,6537,1,0,0,0,6535,6533,1,0,0,0,6535,6536, - 1,0,0,0,6536,6538,1,0,0,0,6537,6535,1,0,0,0,6538,6539,3,1318,659, - 0,6539,733,1,0,0,0,6540,6545,3,736,368,0,6541,6542,5,6,0,0,6542, - 6544,3,736,368,0,6543,6541,1,0,0,0,6544,6547,1,0,0,0,6545,6543,1, - 0,0,0,6545,6546,1,0,0,0,6546,735,1,0,0,0,6547,6545,1,0,0,0,6548, - 6549,3,732,366,0,6549,6550,3,730,365,0,6550,737,1,0,0,0,6551,6552, - 5,57,0,0,6552,6553,3,740,370,0,6553,739,1,0,0,0,6554,6556,3,742, - 371,0,6555,6554,1,0,0,0,6556,6557,1,0,0,0,6557,6555,1,0,0,0,6557, - 6558,1,0,0,0,6558,741,1,0,0,0,6559,6563,3,1458,729,0,6560,6561,5, - 247,0,0,6561,6563,3,80,40,0,6562,6559,1,0,0,0,6562,6560,1,0,0,0, - 6563,743,1,0,0,0,6564,6565,5,46,0,0,6565,6566,5,41,0,0,6566,6567, - 5,2,0,0,6567,6568,3,1168,584,0,6568,6569,5,36,0,0,6569,6570,3,1168, - 584,0,6570,6571,5,3,0,0,6571,6572,5,105,0,0,6572,6573,5,211,0,0, - 6573,6575,3,674,337,0,6574,6576,3,746,373,0,6575,6574,1,0,0,0,6575, - 6576,1,0,0,0,6576,6602,1,0,0,0,6577,6578,5,46,0,0,6578,6579,5,41, - 0,0,6579,6580,5,2,0,0,6580,6581,3,1168,584,0,6581,6582,5,36,0,0, - 6582,6583,3,1168,584,0,6583,6584,5,3,0,0,6584,6585,5,379,0,0,6585, - 6587,5,211,0,0,6586,6588,3,746,373,0,6587,6586,1,0,0,0,6587,6588, - 1,0,0,0,6588,6602,1,0,0,0,6589,6590,5,46,0,0,6590,6591,5,41,0,0, - 6591,6592,5,2,0,0,6592,6593,3,1168,584,0,6593,6594,5,36,0,0,6594, - 6595,3,1168,584,0,6595,6596,5,3,0,0,6596,6597,5,105,0,0,6597,6599, - 5,400,0,0,6598,6600,3,746,373,0,6599,6598,1,0,0,0,6599,6600,1,0, - 0,0,6600,6602,1,0,0,0,6601,6564,1,0,0,0,6601,6577,1,0,0,0,6601,6589, - 1,0,0,0,6602,745,1,0,0,0,6603,6604,5,36,0,0,6604,6608,5,223,0,0, - 6605,6606,5,36,0,0,6606,6608,5,141,0,0,6607,6603,1,0,0,0,6607,6605, - 1,0,0,0,6608,747,1,0,0,0,6609,6610,5,220,0,0,6610,6611,5,396,0,0, - 6611,749,1,0,0,0,6612,6614,5,46,0,0,6613,6615,3,658,329,0,6614,6613, - 1,0,0,0,6614,6615,1,0,0,0,6615,6616,1,0,0,0,6616,6617,5,443,0,0, - 6617,6618,5,62,0,0,6618,6619,3,1168,584,0,6619,6620,5,247,0,0,6620, - 6621,3,1436,718,0,6621,6622,5,2,0,0,6622,6623,3,752,376,0,6623,6624, - 5,3,0,0,6624,751,1,0,0,0,6625,6626,5,64,0,0,6626,6627,5,461,0,0, - 6627,6628,5,105,0,0,6628,6629,5,211,0,0,6629,6630,3,674,337,0,6630, - 6631,5,6,0,0,6631,6632,5,94,0,0,6632,6633,5,461,0,0,6633,6634,5, - 105,0,0,6634,6635,5,211,0,0,6635,6636,3,674,337,0,6636,6660,1,0, - 0,0,6637,6638,5,94,0,0,6638,6639,5,461,0,0,6639,6640,5,105,0,0,6640, - 6641,5,211,0,0,6641,6642,3,674,337,0,6642,6643,5,6,0,0,6643,6644, - 5,64,0,0,6644,6645,5,461,0,0,6645,6646,5,105,0,0,6646,6647,5,211, - 0,0,6647,6648,3,674,337,0,6648,6660,1,0,0,0,6649,6650,5,64,0,0,6650, - 6651,5,461,0,0,6651,6652,5,105,0,0,6652,6653,5,211,0,0,6653,6660, - 3,674,337,0,6654,6655,5,94,0,0,6655,6656,5,461,0,0,6656,6657,5,105, - 0,0,6657,6658,5,211,0,0,6658,6660,3,674,337,0,6659,6625,1,0,0,0, - 6659,6637,1,0,0,0,6659,6649,1,0,0,0,6659,6654,1,0,0,0,6660,753,1, - 0,0,0,6661,6662,5,306,0,0,6662,6678,3,756,378,0,6663,6664,5,306, - 0,0,6664,6678,3,758,379,0,6665,6666,5,306,0,0,6666,6667,5,2,0,0, - 6667,6668,3,760,380,0,6668,6669,5,3,0,0,6669,6670,3,756,378,0,6670, - 6678,1,0,0,0,6671,6672,5,306,0,0,6672,6673,5,2,0,0,6673,6674,3,760, - 380,0,6674,6675,5,3,0,0,6675,6676,3,758,379,0,6676,6678,1,0,0,0, - 6677,6661,1,0,0,0,6677,6663,1,0,0,0,6677,6665,1,0,0,0,6677,6671, - 1,0,0,0,6678,755,1,0,0,0,6679,6681,5,226,0,0,6680,6682,3,630,315, - 0,6681,6680,1,0,0,0,6681,6682,1,0,0,0,6682,6683,1,0,0,0,6683,6690, - 3,1412,706,0,6684,6686,5,92,0,0,6685,6687,3,630,315,0,6686,6685, - 1,0,0,0,6686,6687,1,0,0,0,6687,6688,1,0,0,0,6688,6690,3,1406,703, - 0,6689,6679,1,0,0,0,6689,6684,1,0,0,0,6690,757,1,0,0,0,6691,6693, - 5,323,0,0,6692,6694,3,630,315,0,6693,6692,1,0,0,0,6693,6694,1,0, - 0,0,6694,6695,1,0,0,0,6695,6707,3,1422,711,0,6696,6698,5,349,0,0, - 6697,6699,3,630,315,0,6698,6697,1,0,0,0,6698,6699,1,0,0,0,6699,6700, - 1,0,0,0,6700,6707,3,1436,718,0,6701,6703,5,175,0,0,6702,6704,3,630, - 315,0,6703,6702,1,0,0,0,6703,6704,1,0,0,0,6704,6705,1,0,0,0,6705, - 6707,3,1420,710,0,6706,6691,1,0,0,0,6706,6696,1,0,0,0,6706,6701, - 1,0,0,0,6707,759,1,0,0,0,6708,6713,3,762,381,0,6709,6710,5,6,0,0, - 6710,6712,3,762,381,0,6711,6709,1,0,0,0,6712,6715,1,0,0,0,6713,6711, - 1,0,0,0,6713,6714,1,0,0,0,6714,761,1,0,0,0,6715,6713,1,0,0,0,6716, - 6717,5,128,0,0,6717,763,1,0,0,0,6718,6719,5,138,0,0,6719,6720,5, - 351,0,0,6720,6721,3,1402,701,0,6721,6722,5,333,0,0,6722,6723,3,132, - 66,0,6723,6731,1,0,0,0,6724,6725,5,138,0,0,6725,6726,5,351,0,0,6726, - 6727,3,1402,701,0,6727,6728,5,313,0,0,6728,6729,3,132,66,0,6729, - 6731,1,0,0,0,6730,6718,1,0,0,0,6730,6724,1,0,0,0,6731,765,1,0,0, - 0,6732,6733,5,138,0,0,6733,6734,5,136,0,0,6734,6735,3,698,349,0, - 6735,6736,5,309,0,0,6736,6737,5,94,0,0,6737,6738,3,1436,718,0,6738, - 7124,1,0,0,0,6739,6740,5,138,0,0,6740,6741,5,108,0,0,6741,6742,3, - 558,279,0,6742,6743,5,309,0,0,6743,6744,5,94,0,0,6744,6745,3,1436, - 718,0,6745,7124,1,0,0,0,6746,6747,5,138,0,0,6747,6748,5,168,0,0, - 6748,6749,3,558,279,0,6749,6750,5,309,0,0,6750,6751,5,94,0,0,6751, - 6752,3,1436,718,0,6752,7124,1,0,0,0,6753,6754,5,138,0,0,6754,6755, - 5,175,0,0,6755,6756,3,1420,710,0,6756,6757,5,309,0,0,6757,6758,5, - 94,0,0,6758,6759,3,1418,709,0,6759,7124,1,0,0,0,6760,6761,5,138, - 0,0,6761,6762,5,189,0,0,6762,6763,3,558,279,0,6763,6764,5,309,0, - 0,6764,6765,5,94,0,0,6765,6766,3,1436,718,0,6766,7124,1,0,0,0,6767, - 6768,5,138,0,0,6768,6769,5,189,0,0,6769,6770,3,558,279,0,6770,6771, - 5,309,0,0,6771,6772,5,45,0,0,6772,6773,3,1436,718,0,6773,6774,5, - 94,0,0,6774,6775,3,1436,718,0,6775,7124,1,0,0,0,6776,6777,5,138, - 0,0,6777,6778,5,63,0,0,6778,6779,5,174,0,0,6779,6780,5,381,0,0,6780, - 6781,3,1436,718,0,6781,6782,5,309,0,0,6782,6783,5,94,0,0,6783,6784, - 3,1436,718,0,6784,7124,1,0,0,0,6785,6786,5,138,0,0,6786,6787,5,211, - 0,0,6787,6788,3,674,337,0,6788,6789,5,309,0,0,6789,6790,5,94,0,0, - 6790,6791,3,1442,721,0,6791,7124,1,0,0,0,6792,6793,5,138,0,0,6793, - 6794,5,66,0,0,6794,6795,3,1468,734,0,6795,6796,5,309,0,0,6796,6797, - 5,94,0,0,6797,6798,3,1468,734,0,6798,7124,1,0,0,0,6799,6801,5,138, - 0,0,6800,6802,3,338,169,0,6801,6800,1,0,0,0,6801,6802,1,0,0,0,6802, - 6803,1,0,0,0,6803,6804,5,247,0,0,6804,6805,3,1436,718,0,6805,6806, - 5,309,0,0,6806,6807,5,94,0,0,6807,6808,3,1436,718,0,6808,7124,1, - 0,0,0,6809,6810,5,138,0,0,6810,6811,5,278,0,0,6811,6812,5,156,0, - 0,6812,6813,3,558,279,0,6813,6814,5,100,0,0,6814,6815,3,1436,718, - 0,6815,6816,5,309,0,0,6816,6817,5,94,0,0,6817,6818,3,1436,718,0, - 6818,7124,1,0,0,0,6819,6820,5,138,0,0,6820,6821,5,278,0,0,6821,6822, - 5,206,0,0,6822,6823,3,558,279,0,6823,6824,5,100,0,0,6824,6825,3, - 1436,718,0,6825,6826,5,309,0,0,6826,6827,5,94,0,0,6827,6828,3,1436, - 718,0,6828,7124,1,0,0,0,6829,6830,5,138,0,0,6830,6832,5,445,0,0, - 6831,6833,3,748,374,0,6832,6831,1,0,0,0,6832,6833,1,0,0,0,6833,6834, - 1,0,0,0,6834,6835,3,1436,718,0,6835,6836,5,80,0,0,6836,6837,3,1412, - 706,0,6837,6838,5,309,0,0,6838,6839,5,94,0,0,6839,6840,3,1436,718, - 0,6840,7124,1,0,0,0,6841,6842,5,138,0,0,6842,6843,5,296,0,0,6843, - 6844,3,670,335,0,6844,6845,5,309,0,0,6845,6846,5,94,0,0,6846,6847, - 3,1430,715,0,6847,7124,1,0,0,0,6848,6849,5,138,0,0,6849,6850,5,452, - 0,0,6850,6851,3,1436,718,0,6851,6852,5,309,0,0,6852,6853,5,94,0, - 0,6853,6854,3,1436,718,0,6854,7124,1,0,0,0,6855,6856,5,138,0,0,6856, - 6857,5,442,0,0,6857,6858,3,666,333,0,6858,6859,5,309,0,0,6859,6860, - 5,94,0,0,6860,6861,3,1436,718,0,6861,7124,1,0,0,0,6862,6863,5,138, - 0,0,6863,6864,5,323,0,0,6864,6865,3,1422,711,0,6865,6866,5,309,0, - 0,6866,6867,5,94,0,0,6867,6868,3,48,24,0,6868,7124,1,0,0,0,6869, - 6870,5,138,0,0,6870,6871,5,331,0,0,6871,6872,3,1436,718,0,6872,6873, - 5,309,0,0,6873,6874,5,94,0,0,6874,6875,3,1436,718,0,6875,7124,1, - 0,0,0,6876,6877,5,138,0,0,6877,6878,5,451,0,0,6878,6879,3,1436,718, - 0,6879,6880,5,309,0,0,6880,6881,5,94,0,0,6881,6882,3,1436,718,0, - 6882,7124,1,0,0,0,6883,6884,5,138,0,0,6884,6886,5,92,0,0,6885,6887, - 3,748,374,0,6886,6885,1,0,0,0,6886,6887,1,0,0,0,6887,6888,1,0,0, - 0,6888,6889,3,1118,559,0,6889,6890,5,309,0,0,6890,6891,5,94,0,0, - 6891,6892,3,1404,702,0,6892,7124,1,0,0,0,6893,6894,5,138,0,0,6894, - 6896,5,328,0,0,6895,6897,3,748,374,0,6896,6895,1,0,0,0,6896,6897, - 1,0,0,0,6897,6898,1,0,0,0,6898,6899,3,1412,706,0,6899,6900,5,309, - 0,0,6900,6901,5,94,0,0,6901,6902,3,1436,718,0,6902,7124,1,0,0,0, - 6903,6904,5,138,0,0,6904,6906,5,376,0,0,6905,6907,3,748,374,0,6906, - 6905,1,0,0,0,6906,6907,1,0,0,0,6907,6908,1,0,0,0,6908,6909,3,1410, - 705,0,6909,6910,5,309,0,0,6910,6911,5,94,0,0,6911,6912,3,1408,704, - 0,6912,7124,1,0,0,0,6913,6914,5,138,0,0,6914,6915,5,259,0,0,6915, - 6917,5,376,0,0,6916,6918,3,748,374,0,6917,6916,1,0,0,0,6917,6918, - 1,0,0,0,6918,6919,1,0,0,0,6919,6920,3,1410,705,0,6920,6921,5,309, - 0,0,6921,6922,5,94,0,0,6922,6923,3,1408,704,0,6923,7124,1,0,0,0, - 6924,6925,5,138,0,0,6925,6927,5,226,0,0,6926,6928,3,748,374,0,6927, - 6926,1,0,0,0,6927,6928,1,0,0,0,6928,6929,1,0,0,0,6929,6930,3,1412, - 706,0,6930,6931,5,309,0,0,6931,6932,5,94,0,0,6932,6933,3,1436,718, - 0,6933,7124,1,0,0,0,6934,6935,5,138,0,0,6935,6936,5,63,0,0,6936, - 6938,5,92,0,0,6937,6939,3,748,374,0,6938,6937,1,0,0,0,6938,6939, - 1,0,0,0,6939,6940,1,0,0,0,6940,6941,3,1118,559,0,6941,6942,5,309, - 0,0,6942,6943,5,94,0,0,6943,6944,3,1404,702,0,6944,7124,1,0,0,0, - 6945,6946,5,138,0,0,6946,6948,5,92,0,0,6947,6949,3,748,374,0,6948, - 6947,1,0,0,0,6948,6949,1,0,0,0,6949,6950,1,0,0,0,6950,6951,3,1118, - 559,0,6951,6953,5,309,0,0,6952,6954,5,44,0,0,6953,6952,1,0,0,0,6953, - 6954,1,0,0,0,6954,6955,1,0,0,0,6955,6956,3,1432,716,0,6956,6957, - 5,94,0,0,6957,6958,3,1434,717,0,6958,7124,1,0,0,0,6959,6960,5,138, - 0,0,6960,6962,5,376,0,0,6961,6963,3,748,374,0,6962,6961,1,0,0,0, - 6962,6963,1,0,0,0,6963,6964,1,0,0,0,6964,6965,3,1410,705,0,6965, - 6967,5,309,0,0,6966,6968,5,44,0,0,6967,6966,1,0,0,0,6967,6968,1, - 0,0,0,6968,6969,1,0,0,0,6969,6970,3,1432,716,0,6970,6971,5,94,0, - 0,6971,6972,3,1434,717,0,6972,7124,1,0,0,0,6973,6974,5,138,0,0,6974, - 6975,5,259,0,0,6975,6977,5,376,0,0,6976,6978,3,748,374,0,6977,6976, - 1,0,0,0,6977,6978,1,0,0,0,6978,6979,1,0,0,0,6979,6980,3,1410,705, - 0,6980,6982,5,309,0,0,6981,6983,5,44,0,0,6982,6981,1,0,0,0,6982, - 6983,1,0,0,0,6983,6984,1,0,0,0,6984,6985,3,1432,716,0,6985,6986, - 5,94,0,0,6986,6987,3,1434,717,0,6987,7124,1,0,0,0,6988,6989,5,138, - 0,0,6989,6991,5,92,0,0,6990,6992,3,748,374,0,6991,6990,1,0,0,0,6991, - 6992,1,0,0,0,6992,6993,1,0,0,0,6993,6994,3,1118,559,0,6994,6995, - 5,309,0,0,6995,6996,5,45,0,0,6996,6997,3,1436,718,0,6997,6998,5, - 94,0,0,6998,6999,3,1436,718,0,6999,7124,1,0,0,0,7000,7001,5,138, - 0,0,7001,7002,5,63,0,0,7002,7004,5,92,0,0,7003,7005,3,748,374,0, - 7004,7003,1,0,0,0,7004,7005,1,0,0,0,7005,7006,1,0,0,0,7006,7007, - 3,1118,559,0,7007,7009,5,309,0,0,7008,7010,5,44,0,0,7009,7008,1, - 0,0,0,7009,7010,1,0,0,0,7010,7011,1,0,0,0,7011,7012,3,1432,716,0, - 7012,7013,5,94,0,0,7013,7014,3,1434,717,0,7014,7124,1,0,0,0,7015, - 7016,5,138,0,0,7016,7017,5,321,0,0,7017,7018,3,1436,718,0,7018,7019, - 5,80,0,0,7019,7020,3,1412,706,0,7020,7021,5,309,0,0,7021,7022,5, - 94,0,0,7022,7023,3,1436,718,0,7023,7124,1,0,0,0,7024,7025,5,138, - 0,0,7025,7026,5,357,0,0,7026,7027,3,1436,718,0,7027,7028,5,80,0, - 0,7028,7029,3,1412,706,0,7029,7030,5,309,0,0,7030,7031,5,94,0,0, - 7031,7032,3,1436,718,0,7032,7124,1,0,0,0,7033,7034,5,138,0,0,7034, - 7035,5,198,0,0,7035,7036,5,357,0,0,7036,7037,3,1436,718,0,7037,7038, - 5,309,0,0,7038,7039,5,94,0,0,7039,7040,3,1436,718,0,7040,7124,1, - 0,0,0,7041,7042,5,138,0,0,7042,7043,5,318,0,0,7043,7044,3,1468,734, - 0,7044,7045,5,309,0,0,7045,7046,5,94,0,0,7046,7047,3,1468,734,0, - 7047,7124,1,0,0,0,7048,7049,5,138,0,0,7049,7050,5,99,0,0,7050,7051, - 3,1468,734,0,7051,7052,5,309,0,0,7052,7053,5,94,0,0,7053,7054,3, - 1468,734,0,7054,7124,1,0,0,0,7055,7056,5,138,0,0,7056,7057,5,351, - 0,0,7057,7058,3,1402,701,0,7058,7059,5,309,0,0,7059,7060,5,94,0, - 0,7060,7061,3,1400,700,0,7061,7124,1,0,0,0,7062,7063,5,138,0,0,7063, - 7064,5,342,0,0,7064,7065,3,558,279,0,7065,7066,5,309,0,0,7066,7067, - 5,94,0,0,7067,7068,3,1436,718,0,7068,7124,1,0,0,0,7069,7070,5,138, - 0,0,7070,7071,5,355,0,0,7071,7072,5,325,0,0,7072,7073,5,283,0,0, - 7073,7074,3,558,279,0,7074,7075,5,309,0,0,7075,7076,5,94,0,0,7076, - 7077,3,1436,718,0,7077,7124,1,0,0,0,7078,7079,5,138,0,0,7079,7080, - 5,355,0,0,7080,7081,5,325,0,0,7081,7082,5,185,0,0,7082,7083,3,558, - 279,0,7083,7084,5,309,0,0,7084,7085,5,94,0,0,7085,7086,3,1436,718, - 0,7086,7124,1,0,0,0,7087,7088,5,138,0,0,7088,7089,5,355,0,0,7089, - 7090,5,325,0,0,7090,7091,5,353,0,0,7091,7092,3,558,279,0,7092,7093, - 5,309,0,0,7093,7094,5,94,0,0,7094,7095,3,1436,718,0,7095,7124,1, - 0,0,0,7096,7097,5,138,0,0,7097,7098,5,355,0,0,7098,7099,5,325,0, - 0,7099,7100,5,163,0,0,7100,7101,3,558,279,0,7101,7102,5,309,0,0, - 7102,7103,5,94,0,0,7103,7104,3,1436,718,0,7104,7124,1,0,0,0,7105, - 7106,5,138,0,0,7106,7107,5,360,0,0,7107,7108,3,558,279,0,7108,7109, - 5,309,0,0,7109,7110,5,94,0,0,7110,7111,3,1436,718,0,7111,7124,1, - 0,0,0,7112,7113,5,138,0,0,7113,7114,5,360,0,0,7114,7115,3,558,279, - 0,7115,7116,5,309,0,0,7116,7117,5,143,0,0,7117,7118,3,1436,718,0, - 7118,7119,5,94,0,0,7119,7121,3,1436,718,0,7120,7122,3,124,62,0,7121, - 7120,1,0,0,0,7121,7122,1,0,0,0,7122,7124,1,0,0,0,7123,6732,1,0,0, - 0,7123,6739,1,0,0,0,7123,6746,1,0,0,0,7123,6753,1,0,0,0,7123,6760, - 1,0,0,0,7123,6767,1,0,0,0,7123,6776,1,0,0,0,7123,6785,1,0,0,0,7123, - 6792,1,0,0,0,7123,6799,1,0,0,0,7123,6809,1,0,0,0,7123,6819,1,0,0, - 0,7123,6829,1,0,0,0,7123,6841,1,0,0,0,7123,6848,1,0,0,0,7123,6855, - 1,0,0,0,7123,6862,1,0,0,0,7123,6869,1,0,0,0,7123,6876,1,0,0,0,7123, - 6883,1,0,0,0,7123,6893,1,0,0,0,7123,6903,1,0,0,0,7123,6913,1,0,0, - 0,7123,6924,1,0,0,0,7123,6934,1,0,0,0,7123,6945,1,0,0,0,7123,6959, - 1,0,0,0,7123,6973,1,0,0,0,7123,6988,1,0,0,0,7123,7000,1,0,0,0,7123, - 7015,1,0,0,0,7123,7024,1,0,0,0,7123,7033,1,0,0,0,7123,7041,1,0,0, - 0,7123,7048,1,0,0,0,7123,7055,1,0,0,0,7123,7062,1,0,0,0,7123,7069, - 1,0,0,0,7123,7078,1,0,0,0,7123,7087,1,0,0,0,7123,7096,1,0,0,0,7123, - 7105,1,0,0,0,7123,7112,1,0,0,0,7124,767,1,0,0,0,7125,7126,5,333, - 0,0,7126,7127,5,174,0,0,7127,769,1,0,0,0,7128,7129,5,138,0,0,7129, - 7130,5,211,0,0,7130,7132,3,674,337,0,7131,7133,3,772,386,0,7132, - 7131,1,0,0,0,7132,7133,1,0,0,0,7133,7134,1,0,0,0,7134,7135,5,462, - 0,0,7135,7136,5,80,0,0,7136,7137,5,204,0,0,7137,7138,3,1436,718, - 0,7138,7198,1,0,0,0,7139,7140,5,138,0,0,7140,7141,5,296,0,0,7141, - 7143,3,670,335,0,7142,7144,3,772,386,0,7143,7142,1,0,0,0,7143,7144, - 1,0,0,0,7144,7145,1,0,0,0,7145,7146,5,462,0,0,7146,7147,5,80,0,0, - 7147,7148,5,204,0,0,7148,7149,3,1436,718,0,7149,7198,1,0,0,0,7150, - 7151,5,138,0,0,7151,7152,5,442,0,0,7152,7154,3,666,333,0,7153,7155, - 3,772,386,0,7154,7153,1,0,0,0,7154,7155,1,0,0,0,7155,7156,1,0,0, - 0,7156,7157,5,462,0,0,7157,7158,5,80,0,0,7158,7159,5,204,0,0,7159, - 7160,3,1436,718,0,7160,7198,1,0,0,0,7161,7162,5,138,0,0,7162,7163, - 5,357,0,0,7163,7164,3,1436,718,0,7164,7165,5,80,0,0,7165,7167,3, - 1412,706,0,7166,7168,3,772,386,0,7167,7166,1,0,0,0,7167,7168,1,0, - 0,0,7168,7169,1,0,0,0,7169,7170,5,462,0,0,7170,7171,5,80,0,0,7171, - 7172,5,204,0,0,7172,7173,3,1436,718,0,7173,7198,1,0,0,0,7174,7175, - 5,138,0,0,7175,7176,5,259,0,0,7176,7177,5,376,0,0,7177,7179,3,1410, - 705,0,7178,7180,3,772,386,0,7179,7178,1,0,0,0,7179,7180,1,0,0,0, - 7180,7181,1,0,0,0,7181,7182,5,462,0,0,7182,7183,5,80,0,0,7183,7184, - 5,204,0,0,7184,7185,3,1436,718,0,7185,7198,1,0,0,0,7186,7187,5,138, - 0,0,7187,7188,5,226,0,0,7188,7190,3,1412,706,0,7189,7191,3,772,386, - 0,7190,7189,1,0,0,0,7190,7191,1,0,0,0,7191,7192,1,0,0,0,7192,7193, - 5,462,0,0,7193,7194,5,80,0,0,7194,7195,5,204,0,0,7195,7196,3,1436, - 718,0,7196,7198,1,0,0,0,7197,7128,1,0,0,0,7197,7139,1,0,0,0,7197, - 7150,1,0,0,0,7197,7161,1,0,0,0,7197,7174,1,0,0,0,7197,7186,1,0,0, - 0,7198,771,1,0,0,0,7199,7200,5,269,0,0,7200,773,1,0,0,0,7201,7202, - 5,138,0,0,7202,7203,5,136,0,0,7203,7204,3,698,349,0,7204,7205,5, - 333,0,0,7205,7206,5,323,0,0,7206,7207,3,1422,711,0,7207,7387,1,0, - 0,0,7208,7209,5,138,0,0,7209,7210,5,108,0,0,7210,7211,3,558,279, - 0,7211,7212,5,333,0,0,7212,7213,5,323,0,0,7213,7214,3,1422,711,0, - 7214,7387,1,0,0,0,7215,7216,5,138,0,0,7216,7217,5,168,0,0,7217,7218, - 3,558,279,0,7218,7219,5,333,0,0,7219,7220,5,323,0,0,7220,7221,3, - 1422,711,0,7221,7387,1,0,0,0,7222,7223,5,138,0,0,7223,7224,5,189, - 0,0,7224,7225,3,558,279,0,7225,7226,5,333,0,0,7226,7227,5,323,0, - 0,7227,7228,3,1422,711,0,7228,7387,1,0,0,0,7229,7230,5,138,0,0,7230, - 7231,5,204,0,0,7231,7232,3,1436,718,0,7232,7233,5,333,0,0,7233,7234, - 5,323,0,0,7234,7235,3,1422,711,0,7235,7387,1,0,0,0,7236,7237,5,138, - 0,0,7237,7238,5,211,0,0,7238,7239,3,674,337,0,7239,7240,5,333,0, - 0,7240,7241,5,323,0,0,7241,7242,3,1422,711,0,7242,7387,1,0,0,0,7243, - 7244,5,138,0,0,7244,7245,5,278,0,0,7245,7246,3,736,368,0,7246,7247, - 5,333,0,0,7247,7248,5,323,0,0,7248,7249,3,1422,711,0,7249,7387,1, - 0,0,0,7250,7251,5,138,0,0,7251,7252,5,278,0,0,7252,7253,5,156,0, - 0,7253,7254,3,558,279,0,7254,7255,5,100,0,0,7255,7256,3,1436,718, - 0,7256,7257,5,333,0,0,7257,7258,5,323,0,0,7258,7259,3,1422,711,0, - 7259,7387,1,0,0,0,7260,7261,5,138,0,0,7261,7262,5,278,0,0,7262,7263, - 5,206,0,0,7263,7264,3,558,279,0,7264,7265,5,100,0,0,7265,7266,3, - 1436,718,0,7266,7267,5,333,0,0,7267,7268,5,323,0,0,7268,7269,3,1422, - 711,0,7269,7387,1,0,0,0,7270,7271,5,138,0,0,7271,7272,5,296,0,0, - 7272,7273,3,670,335,0,7273,7274,5,333,0,0,7274,7275,5,323,0,0,7275, - 7276,3,1422,711,0,7276,7387,1,0,0,0,7277,7278,5,138,0,0,7278,7279, - 5,442,0,0,7279,7280,3,666,333,0,7280,7281,5,333,0,0,7281,7282,5, - 323,0,0,7282,7283,3,1422,711,0,7283,7387,1,0,0,0,7284,7285,5,138, - 0,0,7285,7287,5,92,0,0,7286,7288,3,748,374,0,7287,7286,1,0,0,0,7287, - 7288,1,0,0,0,7288,7289,1,0,0,0,7289,7290,3,1118,559,0,7290,7291, - 5,333,0,0,7291,7292,5,323,0,0,7292,7293,3,1422,711,0,7293,7387,1, - 0,0,0,7294,7295,5,138,0,0,7295,7296,5,342,0,0,7296,7297,3,558,279, - 0,7297,7298,5,333,0,0,7298,7299,5,323,0,0,7299,7300,3,1422,711,0, - 7300,7387,1,0,0,0,7301,7302,5,138,0,0,7302,7303,5,355,0,0,7303,7304, - 5,325,0,0,7304,7305,5,283,0,0,7305,7306,3,558,279,0,7306,7307,5, - 333,0,0,7307,7308,5,323,0,0,7308,7309,3,1422,711,0,7309,7387,1,0, - 0,0,7310,7311,5,138,0,0,7311,7312,5,355,0,0,7312,7313,5,325,0,0, - 7313,7314,5,185,0,0,7314,7315,3,558,279,0,7315,7316,5,333,0,0,7316, - 7317,5,323,0,0,7317,7318,3,1422,711,0,7318,7387,1,0,0,0,7319,7320, - 5,138,0,0,7320,7321,5,355,0,0,7321,7322,5,325,0,0,7322,7323,5,353, - 0,0,7323,7324,3,558,279,0,7324,7325,5,333,0,0,7325,7326,5,323,0, - 0,7326,7327,3,1422,711,0,7327,7387,1,0,0,0,7328,7329,5,138,0,0,7329, - 7330,5,355,0,0,7330,7331,5,325,0,0,7331,7332,5,163,0,0,7332,7333, - 3,558,279,0,7333,7334,5,333,0,0,7334,7335,5,323,0,0,7335,7336,3, - 1422,711,0,7336,7387,1,0,0,0,7337,7338,5,138,0,0,7338,7340,5,328, - 0,0,7339,7341,3,748,374,0,7340,7339,1,0,0,0,7340,7341,1,0,0,0,7341, - 7342,1,0,0,0,7342,7343,3,1412,706,0,7343,7344,5,333,0,0,7344,7345, - 5,323,0,0,7345,7346,3,1422,711,0,7346,7387,1,0,0,0,7347,7348,5,138, - 0,0,7348,7350,5,376,0,0,7349,7351,3,748,374,0,7350,7349,1,0,0,0, - 7350,7351,1,0,0,0,7351,7352,1,0,0,0,7352,7353,3,1410,705,0,7353, - 7354,5,333,0,0,7354,7355,5,323,0,0,7355,7356,3,1422,711,0,7356,7387, - 1,0,0,0,7357,7358,5,138,0,0,7358,7359,5,259,0,0,7359,7361,5,376, - 0,0,7360,7362,3,748,374,0,7361,7360,1,0,0,0,7361,7362,1,0,0,0,7362, - 7363,1,0,0,0,7363,7364,3,1410,705,0,7364,7365,5,333,0,0,7365,7366, - 5,323,0,0,7366,7367,3,1422,711,0,7367,7387,1,0,0,0,7368,7369,5,138, - 0,0,7369,7370,5,63,0,0,7370,7372,5,92,0,0,7371,7373,3,748,374,0, - 7372,7371,1,0,0,0,7372,7373,1,0,0,0,7373,7374,1,0,0,0,7374,7375, - 3,1118,559,0,7375,7376,5,333,0,0,7376,7377,5,323,0,0,7377,7378,3, - 1422,711,0,7378,7387,1,0,0,0,7379,7380,5,138,0,0,7380,7381,5,360, - 0,0,7381,7382,3,558,279,0,7382,7383,5,333,0,0,7383,7384,5,323,0, - 0,7384,7385,3,1422,711,0,7385,7387,1,0,0,0,7386,7201,1,0,0,0,7386, - 7208,1,0,0,0,7386,7215,1,0,0,0,7386,7222,1,0,0,0,7386,7229,1,0,0, - 0,7386,7236,1,0,0,0,7386,7243,1,0,0,0,7386,7250,1,0,0,0,7386,7260, - 1,0,0,0,7386,7270,1,0,0,0,7386,7277,1,0,0,0,7386,7284,1,0,0,0,7386, - 7294,1,0,0,0,7386,7301,1,0,0,0,7386,7310,1,0,0,0,7386,7319,1,0,0, - 0,7386,7328,1,0,0,0,7386,7337,1,0,0,0,7386,7347,1,0,0,0,7386,7357, - 1,0,0,0,7386,7368,1,0,0,0,7386,7379,1,0,0,0,7387,775,1,0,0,0,7388, - 7389,5,138,0,0,7389,7390,5,278,0,0,7390,7391,3,736,368,0,7391,7392, - 5,333,0,0,7392,7393,5,2,0,0,7393,7394,3,778,389,0,7394,7395,5,3, - 0,0,7395,777,1,0,0,0,7396,7401,3,780,390,0,7397,7398,5,6,0,0,7398, - 7400,3,780,390,0,7399,7397,1,0,0,0,7400,7403,1,0,0,0,7401,7399,1, - 0,0,0,7401,7402,1,0,0,0,7402,779,1,0,0,0,7403,7401,1,0,0,0,7404, - 7405,3,1490,745,0,7405,7406,5,10,0,0,7406,7407,5,407,0,0,7407,7413, - 1,0,0,0,7408,7409,3,1490,745,0,7409,7410,5,10,0,0,7410,7411,3,782, - 391,0,7411,7413,1,0,0,0,7412,7404,1,0,0,0,7412,7408,1,0,0,0,7413, - 781,1,0,0,0,7414,7420,3,688,344,0,7415,7420,3,1502,751,0,7416,7420, - 3,1324,662,0,7417,7420,3,322,161,0,7418,7420,3,1458,729,0,7419,7414, - 1,0,0,0,7419,7415,1,0,0,0,7419,7416,1,0,0,0,7419,7417,1,0,0,0,7419, - 7418,1,0,0,0,7420,783,1,0,0,0,7421,7422,5,138,0,0,7422,7423,5,360, - 0,0,7423,7424,3,558,279,0,7424,7425,5,333,0,0,7425,7426,5,2,0,0, - 7426,7427,3,778,389,0,7427,7428,5,3,0,0,7428,785,1,0,0,0,7429,7430, - 5,138,0,0,7430,7431,5,136,0,0,7431,7432,3,698,349,0,7432,7433,5, - 282,0,0,7433,7434,5,94,0,0,7434,7435,3,1470,735,0,7435,7615,1,0, - 0,0,7436,7437,5,138,0,0,7437,7438,5,108,0,0,7438,7439,3,558,279, - 0,7439,7440,5,282,0,0,7440,7441,5,94,0,0,7441,7442,3,1470,735,0, - 7442,7615,1,0,0,0,7443,7444,5,138,0,0,7444,7445,5,168,0,0,7445,7446, - 3,558,279,0,7446,7447,5,282,0,0,7447,7448,5,94,0,0,7448,7449,3,1470, - 735,0,7449,7615,1,0,0,0,7450,7451,5,138,0,0,7451,7452,5,175,0,0, - 7452,7453,3,1420,710,0,7453,7454,5,282,0,0,7454,7455,5,94,0,0,7455, - 7456,3,1470,735,0,7456,7615,1,0,0,0,7457,7458,5,138,0,0,7458,7459, - 5,189,0,0,7459,7460,3,558,279,0,7460,7461,5,282,0,0,7461,7462,5, - 94,0,0,7462,7463,3,1470,735,0,7463,7615,1,0,0,0,7464,7465,5,138, - 0,0,7465,7466,5,211,0,0,7466,7467,3,674,337,0,7467,7468,5,282,0, - 0,7468,7469,5,94,0,0,7469,7470,3,1470,735,0,7470,7615,1,0,0,0,7471, - 7473,5,138,0,0,7472,7474,3,338,169,0,7473,7472,1,0,0,0,7473,7474, - 1,0,0,0,7474,7475,1,0,0,0,7475,7476,5,247,0,0,7476,7477,3,1436,718, - 0,7477,7478,5,282,0,0,7478,7479,5,94,0,0,7479,7480,3,1470,735,0, - 7480,7615,1,0,0,0,7481,7482,5,138,0,0,7482,7483,5,248,0,0,7483,7484, - 5,274,0,0,7484,7485,3,322,161,0,7485,7486,5,282,0,0,7486,7487,5, - 94,0,0,7487,7488,3,1470,735,0,7488,7615,1,0,0,0,7489,7490,5,138, - 0,0,7490,7491,5,278,0,0,7491,7492,3,736,368,0,7492,7493,5,282,0, - 0,7493,7494,5,94,0,0,7494,7495,3,1470,735,0,7495,7615,1,0,0,0,7496, - 7497,5,138,0,0,7497,7498,5,278,0,0,7498,7499,5,156,0,0,7499,7500, - 3,558,279,0,7500,7501,5,100,0,0,7501,7502,3,1436,718,0,7502,7503, - 5,282,0,0,7503,7504,5,94,0,0,7504,7505,3,1470,735,0,7505,7615,1, - 0,0,0,7506,7507,5,138,0,0,7507,7508,5,278,0,0,7508,7509,5,206,0, - 0,7509,7510,3,558,279,0,7510,7511,5,100,0,0,7511,7512,3,1436,718, - 0,7512,7513,5,282,0,0,7513,7514,5,94,0,0,7514,7515,3,1470,735,0, - 7515,7615,1,0,0,0,7516,7517,5,138,0,0,7517,7518,5,296,0,0,7518,7519, - 3,670,335,0,7519,7520,5,282,0,0,7520,7521,5,94,0,0,7521,7522,3,1470, - 735,0,7522,7615,1,0,0,0,7523,7524,5,138,0,0,7524,7525,5,442,0,0, - 7525,7526,3,666,333,0,7526,7527,5,282,0,0,7527,7528,5,94,0,0,7528, - 7529,3,1470,735,0,7529,7615,1,0,0,0,7530,7531,5,138,0,0,7531,7532, - 5,323,0,0,7532,7533,3,1422,711,0,7533,7534,5,282,0,0,7534,7535,5, - 94,0,0,7535,7536,3,1470,735,0,7536,7615,1,0,0,0,7537,7538,5,138, - 0,0,7538,7539,5,360,0,0,7539,7540,3,558,279,0,7540,7541,5,282,0, - 0,7541,7542,5,94,0,0,7542,7543,3,1470,735,0,7543,7615,1,0,0,0,7544, - 7545,5,138,0,0,7545,7546,5,351,0,0,7546,7547,3,1402,701,0,7547,7548, - 5,282,0,0,7548,7549,5,94,0,0,7549,7550,3,1470,735,0,7550,7615,1, - 0,0,0,7551,7552,5,138,0,0,7552,7553,5,342,0,0,7553,7554,3,558,279, - 0,7554,7555,5,282,0,0,7555,7556,5,94,0,0,7556,7557,3,1470,735,0, - 7557,7615,1,0,0,0,7558,7559,5,138,0,0,7559,7560,5,355,0,0,7560,7561, - 5,325,0,0,7561,7562,5,185,0,0,7562,7563,3,558,279,0,7563,7564,5, - 282,0,0,7564,7565,5,94,0,0,7565,7566,3,1470,735,0,7566,7615,1,0, - 0,0,7567,7568,5,138,0,0,7568,7569,5,355,0,0,7569,7570,5,325,0,0, - 7570,7571,5,163,0,0,7571,7572,3,558,279,0,7572,7573,5,282,0,0,7573, - 7574,5,94,0,0,7574,7575,3,1470,735,0,7575,7615,1,0,0,0,7576,7577, - 5,138,0,0,7577,7578,5,63,0,0,7578,7579,5,174,0,0,7579,7580,5,381, - 0,0,7580,7581,3,1436,718,0,7581,7582,5,282,0,0,7582,7583,5,94,0, - 0,7583,7584,3,1470,735,0,7584,7615,1,0,0,0,7585,7586,5,138,0,0,7586, - 7587,5,331,0,0,7587,7588,3,1436,718,0,7588,7589,5,282,0,0,7589,7590, - 5,94,0,0,7590,7591,3,1470,735,0,7591,7615,1,0,0,0,7592,7593,5,138, - 0,0,7593,7594,5,198,0,0,7594,7595,5,357,0,0,7595,7596,3,1436,718, - 0,7596,7597,5,282,0,0,7597,7598,5,94,0,0,7598,7599,3,1470,735,0, - 7599,7615,1,0,0,0,7600,7601,5,138,0,0,7601,7602,5,452,0,0,7602,7603, - 3,1436,718,0,7603,7604,5,282,0,0,7604,7605,5,94,0,0,7605,7606,3, - 1470,735,0,7606,7615,1,0,0,0,7607,7608,5,138,0,0,7608,7609,5,451, - 0,0,7609,7610,3,1436,718,0,7610,7611,5,282,0,0,7611,7612,5,94,0, - 0,7612,7613,3,1470,735,0,7613,7615,1,0,0,0,7614,7429,1,0,0,0,7614, - 7436,1,0,0,0,7614,7443,1,0,0,0,7614,7450,1,0,0,0,7614,7457,1,0,0, - 0,7614,7464,1,0,0,0,7614,7471,1,0,0,0,7614,7481,1,0,0,0,7614,7489, - 1,0,0,0,7614,7496,1,0,0,0,7614,7506,1,0,0,0,7614,7516,1,0,0,0,7614, - 7523,1,0,0,0,7614,7530,1,0,0,0,7614,7537,1,0,0,0,7614,7544,1,0,0, - 0,7614,7551,1,0,0,0,7614,7558,1,0,0,0,7614,7567,1,0,0,0,7614,7576, - 1,0,0,0,7614,7585,1,0,0,0,7614,7592,1,0,0,0,7614,7600,1,0,0,0,7614, - 7607,1,0,0,0,7615,787,1,0,0,0,7616,7617,5,46,0,0,7617,7618,5,452, - 0,0,7618,7620,3,1436,718,0,7619,7621,3,790,395,0,7620,7619,1,0,0, - 0,7620,7621,1,0,0,0,7621,7623,1,0,0,0,7622,7624,3,710,355,0,7623, - 7622,1,0,0,0,7623,7624,1,0,0,0,7624,789,1,0,0,0,7625,7626,3,792, - 396,0,7626,791,1,0,0,0,7627,7628,5,62,0,0,7628,7629,5,92,0,0,7629, - 7634,3,1124,562,0,7630,7631,5,62,0,0,7631,7632,5,30,0,0,7632,7634, - 5,350,0,0,7633,7627,1,0,0,0,7633,7630,1,0,0,0,7634,793,1,0,0,0,7635, - 7636,5,138,0,0,7636,7637,5,452,0,0,7637,7638,3,1436,718,0,7638,7639, - 5,333,0,0,7639,7640,3,496,248,0,7640,7674,1,0,0,0,7641,7642,5,138, - 0,0,7642,7643,5,452,0,0,7643,7644,3,1436,718,0,7644,7645,5,133,0, - 0,7645,7646,3,1126,563,0,7646,7674,1,0,0,0,7647,7648,5,138,0,0,7648, - 7649,5,452,0,0,7649,7650,3,1436,718,0,7650,7651,5,333,0,0,7651,7652, - 3,1126,563,0,7652,7674,1,0,0,0,7653,7654,5,138,0,0,7654,7655,5,452, - 0,0,7655,7656,3,1436,718,0,7656,7657,5,191,0,0,7657,7658,3,1126, - 563,0,7658,7674,1,0,0,0,7659,7660,5,138,0,0,7660,7661,5,452,0,0, - 7661,7662,3,1436,718,0,7662,7663,5,282,0,0,7663,7664,5,94,0,0,7664, - 7665,3,1470,735,0,7665,7674,1,0,0,0,7666,7667,5,138,0,0,7667,7668, - 5,452,0,0,7668,7669,3,1436,718,0,7669,7670,5,309,0,0,7670,7671,5, - 94,0,0,7671,7672,3,1436,718,0,7672,7674,1,0,0,0,7673,7635,1,0,0, - 0,7673,7641,1,0,0,0,7673,7647,1,0,0,0,7673,7653,1,0,0,0,7673,7659, - 1,0,0,0,7673,7666,1,0,0,0,7674,795,1,0,0,0,7675,7676,5,46,0,0,7676, - 7677,5,451,0,0,7677,7678,3,1436,718,0,7678,7679,5,164,0,0,7679,7680, - 3,1458,729,0,7680,7681,5,452,0,0,7681,7683,3,798,399,0,7682,7684, - 3,710,355,0,7683,7682,1,0,0,0,7683,7684,1,0,0,0,7684,797,1,0,0,0, - 7685,7690,3,800,400,0,7686,7687,5,6,0,0,7687,7689,3,800,400,0,7688, - 7686,1,0,0,0,7689,7692,1,0,0,0,7690,7688,1,0,0,0,7690,7691,1,0,0, - 0,7691,799,1,0,0,0,7692,7690,1,0,0,0,7693,7694,3,1490,745,0,7694, - 801,1,0,0,0,7695,7696,5,138,0,0,7696,7697,5,451,0,0,7697,7698,3, - 1436,718,0,7698,7699,5,333,0,0,7699,7700,3,496,248,0,7700,7774,1, - 0,0,0,7701,7702,5,138,0,0,7702,7703,5,451,0,0,7703,7704,3,1436,718, - 0,7704,7705,5,164,0,0,7705,7706,3,1458,729,0,7706,7774,1,0,0,0,7707, - 7708,5,138,0,0,7708,7709,5,451,0,0,7709,7710,3,1436,718,0,7710,7711, - 5,305,0,0,7711,7713,5,452,0,0,7712,7714,3,710,355,0,7713,7712,1, - 0,0,0,7713,7714,1,0,0,0,7714,7774,1,0,0,0,7715,7716,5,138,0,0,7716, - 7717,5,451,0,0,7717,7718,3,1436,718,0,7718,7719,5,333,0,0,7719,7720, - 5,452,0,0,7720,7722,3,798,399,0,7721,7723,3,710,355,0,7722,7721, - 1,0,0,0,7722,7723,1,0,0,0,7723,7774,1,0,0,0,7724,7725,5,138,0,0, - 7725,7726,5,451,0,0,7726,7727,3,1436,718,0,7727,7728,5,133,0,0,7728, - 7729,5,452,0,0,7729,7731,3,798,399,0,7730,7732,3,710,355,0,7731, - 7730,1,0,0,0,7731,7732,1,0,0,0,7732,7774,1,0,0,0,7733,7734,5,138, - 0,0,7734,7735,5,451,0,0,7735,7736,3,1436,718,0,7736,7737,5,191,0, - 0,7737,7738,5,452,0,0,7738,7740,3,798,399,0,7739,7741,3,710,355, - 0,7740,7739,1,0,0,0,7740,7741,1,0,0,0,7741,7774,1,0,0,0,7742,7743, - 5,138,0,0,7743,7744,5,451,0,0,7744,7745,3,1436,718,0,7745,7746,5, - 193,0,0,7746,7774,1,0,0,0,7747,7748,5,138,0,0,7748,7749,5,451,0, - 0,7749,7750,3,1436,718,0,7750,7751,5,186,0,0,7751,7774,1,0,0,0,7752, - 7753,5,138,0,0,7753,7754,5,451,0,0,7754,7755,3,1436,718,0,7755,7756, - 5,333,0,0,7756,7757,3,496,248,0,7757,7774,1,0,0,0,7758,7759,5,138, - 0,0,7759,7760,5,451,0,0,7760,7761,3,1436,718,0,7761,7762,5,465,0, - 0,7762,7763,5,2,0,0,7763,7764,3,508,254,0,7764,7765,5,3,0,0,7765, - 7774,1,0,0,0,7766,7767,5,138,0,0,7767,7768,5,451,0,0,7768,7769,3, - 1436,718,0,7769,7770,5,282,0,0,7770,7771,5,94,0,0,7771,7772,3,1470, - 735,0,7772,7774,1,0,0,0,7773,7695,1,0,0,0,7773,7701,1,0,0,0,7773, - 7707,1,0,0,0,7773,7715,1,0,0,0,7773,7724,1,0,0,0,7773,7733,1,0,0, - 0,7773,7742,1,0,0,0,7773,7747,1,0,0,0,7773,7752,1,0,0,0,7773,7758, - 1,0,0,0,7773,7766,1,0,0,0,7774,803,1,0,0,0,7775,7777,5,46,0,0,7776, - 7778,3,658,329,0,7777,7776,1,0,0,0,7777,7778,1,0,0,0,7778,7779,1, - 0,0,0,7779,7780,5,321,0,0,7780,7781,3,1436,718,0,7781,7782,5,36, - 0,0,7782,7783,5,80,0,0,7783,7784,3,814,407,0,7784,7785,5,94,0,0, - 7785,7787,3,1412,706,0,7786,7788,3,1144,572,0,7787,7786,1,0,0,0, - 7787,7788,1,0,0,0,7788,7789,1,0,0,0,7789,7791,5,57,0,0,7790,7792, - 3,816,408,0,7791,7790,1,0,0,0,7791,7792,1,0,0,0,7792,7793,1,0,0, - 0,7793,7794,3,806,403,0,7794,805,1,0,0,0,7795,7802,5,270,0,0,7796, - 7802,3,810,405,0,7797,7798,5,2,0,0,7798,7799,3,808,404,0,7799,7800, - 5,3,0,0,7800,7802,1,0,0,0,7801,7795,1,0,0,0,7801,7796,1,0,0,0,7801, - 7797,1,0,0,0,7802,807,1,0,0,0,7803,7805,3,812,406,0,7804,7803,1, - 0,0,0,7804,7805,1,0,0,0,7805,7812,1,0,0,0,7806,7808,5,7,0,0,7807, - 7809,3,812,406,0,7808,7807,1,0,0,0,7808,7809,1,0,0,0,7809,7811,1, - 0,0,0,7810,7806,1,0,0,0,7811,7814,1,0,0,0,7812,7810,1,0,0,0,7812, - 7813,1,0,0,0,7813,809,1,0,0,0,7814,7812,1,0,0,0,7815,7821,3,1000, - 500,0,7816,7821,3,950,475,0,7817,7821,3,982,491,0,7818,7821,3,968, - 484,0,7819,7821,3,818,409,0,7820,7815,1,0,0,0,7820,7816,1,0,0,0, - 7820,7817,1,0,0,0,7820,7818,1,0,0,0,7820,7819,1,0,0,0,7821,811,1, - 0,0,0,7822,7823,3,810,405,0,7823,813,1,0,0,0,7824,7825,7,47,0,0, - 7825,815,1,0,0,0,7826,7827,7,48,0,0,7827,817,1,0,0,0,7828,7829,5, - 271,0,0,7829,7831,3,1474,737,0,7830,7832,3,820,410,0,7831,7830,1, - 0,0,0,7831,7832,1,0,0,0,7832,819,1,0,0,0,7833,7834,5,6,0,0,7834, - 7835,3,1458,729,0,7835,821,1,0,0,0,7836,7837,5,252,0,0,7837,7838, - 3,1474,737,0,7838,823,1,0,0,0,7839,7840,5,366,0,0,7840,7844,3,1474, - 737,0,7841,7842,5,366,0,0,7842,7844,5,9,0,0,7843,7839,1,0,0,0,7843, - 7841,1,0,0,0,7844,825,1,0,0,0,7845,7847,5,129,0,0,7846,7848,3,828, - 414,0,7847,7846,1,0,0,0,7847,7848,1,0,0,0,7848,7850,1,0,0,0,7849, - 7851,3,836,418,0,7850,7849,1,0,0,0,7850,7851,1,0,0,0,7851,7911,1, - 0,0,0,7852,7854,5,146,0,0,7853,7855,3,828,414,0,7854,7853,1,0,0, - 0,7854,7855,1,0,0,0,7855,7857,1,0,0,0,7856,7858,3,834,417,0,7857, - 7856,1,0,0,0,7857,7858,1,0,0,0,7858,7911,1,0,0,0,7859,7860,5,340, - 0,0,7860,7862,5,356,0,0,7861,7863,3,834,417,0,7862,7861,1,0,0,0, - 7862,7863,1,0,0,0,7863,7911,1,0,0,0,7864,7866,5,454,0,0,7865,7867, - 3,828,414,0,7866,7865,1,0,0,0,7866,7867,1,0,0,0,7867,7869,1,0,0, - 0,7868,7870,3,836,418,0,7869,7868,1,0,0,0,7869,7870,1,0,0,0,7870, - 7911,1,0,0,0,7871,7872,5,322,0,0,7872,7911,3,1474,737,0,7873,7875, - 5,308,0,0,7874,7876,5,322,0,0,7875,7874,1,0,0,0,7875,7876,1,0,0, - 0,7876,7877,1,0,0,0,7877,7911,3,1474,737,0,7878,7879,5,290,0,0,7879, - 7880,5,356,0,0,7880,7911,3,1458,729,0,7881,7882,5,161,0,0,7882,7883, - 5,291,0,0,7883,7911,3,1458,729,0,7884,7886,5,161,0,0,7885,7887,3, - 828,414,0,7886,7885,1,0,0,0,7886,7887,1,0,0,0,7887,7889,1,0,0,0, - 7888,7890,3,836,418,0,7889,7888,1,0,0,0,7889,7890,1,0,0,0,7890,7911, - 1,0,0,0,7891,7892,5,319,0,0,7892,7893,5,291,0,0,7893,7911,3,1458, - 729,0,7894,7896,5,319,0,0,7895,7897,3,828,414,0,7896,7895,1,0,0, - 0,7896,7897,1,0,0,0,7897,7898,1,0,0,0,7898,7900,5,94,0,0,7899,7901, - 5,322,0,0,7900,7899,1,0,0,0,7900,7901,1,0,0,0,7901,7902,1,0,0,0, - 7902,7911,3,1474,737,0,7903,7905,5,319,0,0,7904,7906,3,828,414,0, - 7905,7904,1,0,0,0,7905,7906,1,0,0,0,7906,7908,1,0,0,0,7907,7909, - 3,836,418,0,7908,7907,1,0,0,0,7908,7909,1,0,0,0,7909,7911,1,0,0, - 0,7910,7845,1,0,0,0,7910,7852,1,0,0,0,7910,7859,1,0,0,0,7910,7864, - 1,0,0,0,7910,7871,1,0,0,0,7910,7873,1,0,0,0,7910,7878,1,0,0,0,7910, - 7881,1,0,0,0,7910,7884,1,0,0,0,7910,7891,1,0,0,0,7910,7894,1,0,0, - 0,7910,7903,1,0,0,0,7911,827,1,0,0,0,7912,7913,7,49,0,0,7913,829, - 1,0,0,0,7914,7915,5,244,0,0,7915,7916,5,251,0,0,7916,7925,3,68,34, - 0,7917,7918,5,300,0,0,7918,7925,5,81,0,0,7919,7920,5,300,0,0,7920, - 7925,5,382,0,0,7921,7925,5,54,0,0,7922,7923,5,77,0,0,7923,7925,5, - 54,0,0,7924,7914,1,0,0,0,7924,7917,1,0,0,0,7924,7919,1,0,0,0,7924, - 7921,1,0,0,0,7924,7922,1,0,0,0,7925,831,1,0,0,0,7926,7933,3,830, - 415,0,7927,7929,5,6,0,0,7928,7927,1,0,0,0,7928,7929,1,0,0,0,7929, - 7930,1,0,0,0,7930,7932,3,830,415,0,7931,7928,1,0,0,0,7932,7935,1, - 0,0,0,7933,7931,1,0,0,0,7933,7934,1,0,0,0,7934,833,1,0,0,0,7935, - 7933,1,0,0,0,7936,7937,3,832,416,0,7937,835,1,0,0,0,7938,7940,5, - 33,0,0,7939,7941,5,269,0,0,7940,7939,1,0,0,0,7940,7941,1,0,0,0,7941, - 7942,1,0,0,0,7942,7943,5,153,0,0,7943,837,1,0,0,0,7944,7947,5,46, - 0,0,7945,7946,5,82,0,0,7946,7948,5,311,0,0,7947,7945,1,0,0,0,7947, - 7948,1,0,0,0,7948,7950,1,0,0,0,7949,7951,3,190,95,0,7950,7949,1, - 0,0,0,7950,7951,1,0,0,0,7951,7969,1,0,0,0,7952,7953,5,376,0,0,7953, - 7955,3,1408,704,0,7954,7956,3,242,121,0,7955,7954,1,0,0,0,7955,7956, - 1,0,0,0,7956,7958,1,0,0,0,7957,7959,3,134,67,0,7958,7957,1,0,0,0, - 7958,7959,1,0,0,0,7959,7970,1,0,0,0,7960,7961,5,303,0,0,7961,7962, - 5,376,0,0,7962,7963,3,1408,704,0,7963,7964,5,2,0,0,7964,7965,3,244, - 122,0,7965,7967,5,3,0,0,7966,7968,3,134,67,0,7967,7966,1,0,0,0,7967, - 7968,1,0,0,0,7968,7970,1,0,0,0,7969,7952,1,0,0,0,7969,7960,1,0,0, - 0,7970,7971,1,0,0,0,7971,7972,5,36,0,0,7972,7974,3,1000,500,0,7973, - 7975,3,840,420,0,7974,7973,1,0,0,0,7974,7975,1,0,0,0,7975,839,1, - 0,0,0,7976,7978,5,105,0,0,7977,7979,7,50,0,0,7978,7977,1,0,0,0,7978, - 7979,1,0,0,0,7979,7980,1,0,0,0,7980,7981,5,42,0,0,7981,7982,5,279, - 0,0,7982,841,1,0,0,0,7983,7984,5,253,0,0,7984,7985,3,1440,720,0, - 7985,843,1,0,0,0,7986,7987,5,46,0,0,7987,7988,5,175,0,0,7988,7990, - 3,1418,709,0,7989,7991,3,14,7,0,7990,7989,1,0,0,0,7990,7991,1,0, - 0,0,7991,7993,1,0,0,0,7992,7994,3,846,423,0,7993,7992,1,0,0,0,7993, - 7994,1,0,0,0,7994,845,1,0,0,0,7995,7996,3,848,424,0,7996,847,1,0, - 0,0,7997,7999,3,850,425,0,7998,7997,1,0,0,0,7999,8000,1,0,0,0,8000, - 7998,1,0,0,0,8000,8001,1,0,0,0,8001,849,1,0,0,0,8002,8004,3,852, - 426,0,8003,8005,3,854,427,0,8004,8003,1,0,0,0,8004,8005,1,0,0,0, - 8005,8009,1,0,0,0,8006,8010,3,1464,732,0,8007,8010,3,72,36,0,8008, - 8010,5,53,0,0,8009,8006,1,0,0,0,8009,8007,1,0,0,0,8009,8008,1,0, - 0,0,8010,851,1,0,0,0,8011,8012,5,164,0,0,8012,8020,5,74,0,0,8013, - 8020,5,194,0,0,8014,8020,5,255,0,0,8015,8020,5,282,0,0,8016,8020, - 5,351,0,0,8017,8020,5,353,0,0,8018,8020,3,1492,746,0,8019,8011,1, - 0,0,0,8019,8013,1,0,0,0,8019,8014,1,0,0,0,8019,8015,1,0,0,0,8019, - 8016,1,0,0,0,8019,8017,1,0,0,0,8019,8018,1,0,0,0,8020,853,1,0,0, - 0,8021,8022,5,10,0,0,8022,855,1,0,0,0,8023,8024,5,138,0,0,8024,8025, - 5,175,0,0,8025,8037,3,1420,710,0,8026,8027,5,333,0,0,8027,8028,5, - 351,0,0,8028,8030,3,1400,700,0,8029,8026,1,0,0,0,8029,8030,1,0,0, - 0,8030,8038,1,0,0,0,8031,8033,5,105,0,0,8032,8031,1,0,0,0,8032,8033, - 1,0,0,0,8033,8034,1,0,0,0,8034,8036,3,846,423,0,8035,8032,1,0,0, - 0,8035,8036,1,0,0,0,8036,8038,1,0,0,0,8037,8029,1,0,0,0,8037,8035, - 1,0,0,0,8038,857,1,0,0,0,8039,8040,5,138,0,0,8040,8041,5,175,0,0, - 8041,8043,3,1420,710,0,8042,8044,3,88,44,0,8043,8042,1,0,0,0,8043, - 8044,1,0,0,0,8044,859,1,0,0,0,8045,8050,3,862,431,0,8046,8047,5, - 6,0,0,8047,8049,3,862,431,0,8048,8046,1,0,0,0,8049,8052,1,0,0,0, - 8050,8048,1,0,0,0,8050,8051,1,0,0,0,8051,861,1,0,0,0,8052,8050,1, - 0,0,0,8053,8054,5,209,0,0,8054,863,1,0,0,0,8055,8056,5,138,0,0,8056, - 8057,5,108,0,0,8057,8058,3,558,279,0,8058,8059,5,305,0,0,8059,8060, - 5,375,0,0,8060,865,1,0,0,0,8061,8062,5,138,0,0,8062,8063,5,349,0, - 0,8063,8064,7,22,0,0,8064,8065,3,58,29,0,8065,867,1,0,0,0,8066,8067, - 5,46,0,0,8067,8068,5,189,0,0,8068,8070,3,558,279,0,8069,8071,3,872, - 436,0,8070,8069,1,0,0,0,8070,8071,1,0,0,0,8071,8072,1,0,0,0,8072, - 8073,3,1168,584,0,8073,8074,3,214,107,0,8074,869,1,0,0,0,8075,8076, - 5,138,0,0,8076,8077,5,189,0,0,8077,8099,3,558,279,0,8078,8100,3, - 122,61,0,8079,8080,5,191,0,0,8080,8081,5,77,0,0,8081,8100,5,78,0, - 0,8082,8083,5,333,0,0,8083,8084,5,77,0,0,8084,8100,5,78,0,0,8085, - 8086,5,133,0,0,8086,8100,3,234,117,0,8087,8088,5,191,0,0,8088,8090, - 5,45,0,0,8089,8091,3,748,374,0,8090,8089,1,0,0,0,8090,8091,1,0,0, - 0,8091,8092,1,0,0,0,8092,8094,3,1436,718,0,8093,8095,3,124,62,0, - 8094,8093,1,0,0,0,8094,8095,1,0,0,0,8095,8100,1,0,0,0,8096,8097, - 5,372,0,0,8097,8098,5,45,0,0,8098,8100,3,1436,718,0,8099,8078,1, - 0,0,0,8099,8079,1,0,0,0,8099,8082,1,0,0,0,8099,8085,1,0,0,0,8099, - 8087,1,0,0,0,8099,8096,1,0,0,0,8100,871,1,0,0,0,8101,8102,5,36,0, - 0,8102,873,1,0,0,0,8103,8104,5,138,0,0,8104,8105,5,355,0,0,8105, - 8106,5,325,0,0,8106,8107,5,185,0,0,8107,8108,3,558,279,0,8108,8109, - 3,496,248,0,8109,875,1,0,0,0,8110,8111,5,138,0,0,8111,8112,5,355, - 0,0,8112,8113,5,325,0,0,8113,8114,5,163,0,0,8114,8115,3,558,279, - 0,8115,8116,5,133,0,0,8116,8117,5,257,0,0,8117,8118,5,62,0,0,8118, - 8119,3,1416,708,0,8119,8120,3,878,439,0,8120,8121,3,552,276,0,8121, - 8174,1,0,0,0,8122,8123,5,138,0,0,8123,8124,5,355,0,0,8124,8125,5, - 325,0,0,8125,8126,5,163,0,0,8126,8127,3,558,279,0,8127,8128,5,138, - 0,0,8128,8129,5,257,0,0,8129,8130,5,62,0,0,8130,8131,3,1416,708, - 0,8131,8132,3,878,439,0,8132,8133,3,552,276,0,8133,8174,1,0,0,0, - 8134,8135,5,138,0,0,8135,8136,5,355,0,0,8136,8137,5,325,0,0,8137, - 8138,5,163,0,0,8138,8139,3,558,279,0,8139,8140,5,138,0,0,8140,8141, - 5,257,0,0,8141,8142,5,311,0,0,8142,8143,3,558,279,0,8143,8144,3, - 878,439,0,8144,8145,3,558,279,0,8145,8174,1,0,0,0,8146,8147,5,138, - 0,0,8147,8148,5,355,0,0,8148,8149,5,325,0,0,8149,8150,5,163,0,0, - 8150,8151,3,558,279,0,8151,8152,5,138,0,0,8152,8153,5,257,0,0,8153, - 8154,5,62,0,0,8154,8155,3,1416,708,0,8155,8156,5,311,0,0,8156,8157, - 3,558,279,0,8157,8158,3,878,439,0,8158,8159,3,558,279,0,8159,8174, - 1,0,0,0,8160,8161,5,138,0,0,8161,8162,5,355,0,0,8162,8163,5,325, - 0,0,8163,8164,5,163,0,0,8164,8165,3,558,279,0,8165,8166,5,191,0, - 0,8166,8168,5,257,0,0,8167,8169,3,748,374,0,8168,8167,1,0,0,0,8168, - 8169,1,0,0,0,8169,8170,1,0,0,0,8170,8171,5,62,0,0,8171,8172,3,1416, - 708,0,8172,8174,1,0,0,0,8173,8110,1,0,0,0,8173,8122,1,0,0,0,8173, - 8134,1,0,0,0,8173,8146,1,0,0,0,8173,8160,1,0,0,0,8174,877,1,0,0, - 0,8175,8176,5,105,0,0,8176,879,1,0,0,0,8177,8179,5,46,0,0,8178,8180, - 3,524,262,0,8179,8178,1,0,0,0,8179,8180,1,0,0,0,8180,8181,1,0,0, - 0,8181,8182,5,168,0,0,8182,8183,3,558,279,0,8183,8184,5,62,0,0,8184, - 8185,3,1458,729,0,8185,8186,5,94,0,0,8186,8187,3,1458,729,0,8187, - 8188,5,64,0,0,8188,8189,3,558,279,0,8189,881,1,0,0,0,8190,8192,5, - 158,0,0,8191,8193,3,908,454,0,8192,8191,1,0,0,0,8192,8193,1,0,0, - 0,8193,8194,1,0,0,0,8194,8196,3,1406,703,0,8195,8197,3,886,443,0, - 8196,8195,1,0,0,0,8196,8197,1,0,0,0,8197,8209,1,0,0,0,8198,8200, - 5,158,0,0,8199,8201,3,908,454,0,8200,8199,1,0,0,0,8200,8201,1,0, - 0,0,8201,8209,1,0,0,0,8202,8203,5,158,0,0,8203,8204,3,884,442,0, - 8204,8206,3,1406,703,0,8205,8207,3,886,443,0,8206,8205,1,0,0,0,8206, - 8207,1,0,0,0,8207,8209,1,0,0,0,8208,8190,1,0,0,0,8208,8198,1,0,0, - 0,8208,8202,1,0,0,0,8209,883,1,0,0,0,8210,8211,5,2,0,0,8211,8216, - 3,908,454,0,8212,8213,5,6,0,0,8213,8215,3,908,454,0,8214,8212,1, - 0,0,0,8215,8218,1,0,0,0,8216,8214,1,0,0,0,8216,8217,1,0,0,0,8217, - 8219,1,0,0,0,8218,8216,1,0,0,0,8219,8220,5,3,0,0,8220,885,1,0,0, - 0,8221,8222,5,100,0,0,8222,8223,3,1436,718,0,8223,887,1,0,0,0,8224, - 8226,5,370,0,0,8225,8227,3,914,457,0,8226,8225,1,0,0,0,8226,8227, - 1,0,0,0,8227,8229,1,0,0,0,8228,8230,3,916,458,0,8229,8228,1,0,0, - 0,8229,8230,1,0,0,0,8230,8232,1,0,0,0,8231,8233,3,908,454,0,8232, - 8231,1,0,0,0,8232,8233,1,0,0,0,8233,8235,1,0,0,0,8234,8236,3,902, - 451,0,8235,8234,1,0,0,0,8235,8236,1,0,0,0,8236,8238,1,0,0,0,8237, - 8239,3,924,462,0,8238,8237,1,0,0,0,8238,8239,1,0,0,0,8239,8251,1, - 0,0,0,8240,8245,5,370,0,0,8241,8242,5,2,0,0,8242,8243,3,892,446, - 0,8243,8244,5,3,0,0,8244,8246,1,0,0,0,8245,8241,1,0,0,0,8245,8246, - 1,0,0,0,8246,8248,1,0,0,0,8247,8249,3,924,462,0,8248,8247,1,0,0, - 0,8248,8249,1,0,0,0,8249,8251,1,0,0,0,8250,8224,1,0,0,0,8250,8240, - 1,0,0,0,8251,889,1,0,0,0,8252,8254,3,894,447,0,8253,8255,3,908,454, - 0,8254,8253,1,0,0,0,8254,8255,1,0,0,0,8255,8257,1,0,0,0,8256,8258, - 3,924,462,0,8257,8256,1,0,0,0,8257,8258,1,0,0,0,8258,8267,1,0,0, - 0,8259,8260,3,894,447,0,8260,8261,5,2,0,0,8261,8262,3,904,452,0, - 8262,8264,5,3,0,0,8263,8265,3,924,462,0,8264,8263,1,0,0,0,8264,8265, - 1,0,0,0,8265,8267,1,0,0,0,8266,8252,1,0,0,0,8266,8259,1,0,0,0,8267, - 891,1,0,0,0,8268,8273,3,896,448,0,8269,8270,5,6,0,0,8270,8272,3, - 896,448,0,8271,8269,1,0,0,0,8272,8275,1,0,0,0,8273,8271,1,0,0,0, - 8273,8274,1,0,0,0,8274,893,1,0,0,0,8275,8273,1,0,0,0,8276,8277,7, - 51,0,0,8277,895,1,0,0,0,8278,8280,3,898,449,0,8279,8281,3,900,450, - 0,8280,8279,1,0,0,0,8280,8281,1,0,0,0,8281,897,1,0,0,0,8282,8285, - 3,1488,744,0,8283,8285,3,894,447,0,8284,8282,1,0,0,0,8284,8283,1, - 0,0,0,8285,899,1,0,0,0,8286,8289,3,72,36,0,8287,8289,3,322,161,0, - 8288,8286,1,0,0,0,8288,8287,1,0,0,0,8289,901,1,0,0,0,8290,8291,3, - 894,447,0,8291,903,1,0,0,0,8292,8297,3,906,453,0,8293,8294,5,6,0, - 0,8294,8296,3,906,453,0,8295,8293,1,0,0,0,8296,8299,1,0,0,0,8297, - 8295,1,0,0,0,8297,8298,1,0,0,0,8298,905,1,0,0,0,8299,8297,1,0,0, - 0,8300,8304,3,908,454,0,8301,8304,3,910,455,0,8302,8304,3,912,456, - 0,8303,8300,1,0,0,0,8303,8301,1,0,0,0,8303,8302,1,0,0,0,8304,907, - 1,0,0,0,8305,8307,5,128,0,0,8306,8308,7,52,0,0,8307,8306,1,0,0,0, - 8307,8308,1,0,0,0,8308,909,1,0,0,0,8309,8311,5,547,0,0,8310,8312, - 7,52,0,0,8311,8310,1,0,0,0,8311,8312,1,0,0,0,8312,911,1,0,0,0,8313, - 8316,5,548,0,0,8314,8317,3,322,161,0,8315,8317,3,1458,729,0,8316, - 8314,1,0,0,0,8316,8315,1,0,0,0,8317,913,1,0,0,0,8318,8319,5,113, - 0,0,8319,915,1,0,0,0,8320,8321,5,112,0,0,8321,917,1,0,0,0,8322,8323, - 5,2,0,0,8323,8324,3,244,122,0,8324,8325,5,3,0,0,8325,919,1,0,0,0, - 8326,8328,3,1406,703,0,8327,8329,3,918,459,0,8328,8327,1,0,0,0,8328, - 8329,1,0,0,0,8329,921,1,0,0,0,8330,8335,3,920,460,0,8331,8332,5, - 6,0,0,8332,8334,3,920,460,0,8333,8331,1,0,0,0,8334,8337,1,0,0,0, - 8335,8333,1,0,0,0,8335,8336,1,0,0,0,8336,923,1,0,0,0,8337,8335,1, - 0,0,0,8338,8339,3,922,461,0,8339,925,1,0,0,0,8340,8341,5,203,0,0, - 8341,8359,3,928,464,0,8342,8343,5,203,0,0,8343,8345,3,894,447,0, - 8344,8346,3,908,454,0,8345,8344,1,0,0,0,8345,8346,1,0,0,0,8346,8347, - 1,0,0,0,8347,8348,3,928,464,0,8348,8359,1,0,0,0,8349,8350,5,203, - 0,0,8350,8351,5,128,0,0,8351,8359,3,928,464,0,8352,8353,5,203,0, - 0,8353,8354,5,2,0,0,8354,8355,3,930,465,0,8355,8356,5,3,0,0,8356, - 8357,3,928,464,0,8357,8359,1,0,0,0,8358,8340,1,0,0,0,8358,8342,1, - 0,0,0,8358,8349,1,0,0,0,8358,8352,1,0,0,0,8359,927,1,0,0,0,8360, - 8370,3,1000,500,0,8361,8370,3,950,475,0,8362,8370,3,982,491,0,8363, - 8370,3,968,484,0,8364,8370,3,992,496,0,8365,8370,3,294,147,0,8366, - 8370,3,300,150,0,8367,8370,3,306,153,0,8368,8370,3,944,472,0,8369, - 8360,1,0,0,0,8369,8361,1,0,0,0,8369,8362,1,0,0,0,8369,8363,1,0,0, - 0,8369,8364,1,0,0,0,8369,8365,1,0,0,0,8369,8366,1,0,0,0,8369,8367, - 1,0,0,0,8369,8368,1,0,0,0,8370,929,1,0,0,0,8371,8376,3,932,466,0, - 8372,8373,5,6,0,0,8373,8375,3,932,466,0,8374,8372,1,0,0,0,8375,8378, - 1,0,0,0,8376,8374,1,0,0,0,8376,8377,1,0,0,0,8377,931,1,0,0,0,8378, - 8376,1,0,0,0,8379,8381,3,934,467,0,8380,8382,3,936,468,0,8381,8380, - 1,0,0,0,8381,8382,1,0,0,0,8382,933,1,0,0,0,8383,8386,3,1488,744, - 0,8384,8386,3,894,447,0,8385,8383,1,0,0,0,8385,8384,1,0,0,0,8386, - 935,1,0,0,0,8387,8390,3,72,36,0,8388,8390,3,322,161,0,8389,8387, - 1,0,0,0,8389,8388,1,0,0,0,8390,937,1,0,0,0,8391,8392,5,290,0,0,8392, - 8394,3,1436,718,0,8393,8395,3,940,470,0,8394,8393,1,0,0,0,8394,8395, - 1,0,0,0,8395,8396,1,0,0,0,8396,8397,5,36,0,0,8397,8398,3,942,471, - 0,8398,939,1,0,0,0,8399,8400,5,2,0,0,8400,8401,3,1342,671,0,8401, - 8402,5,3,0,0,8402,941,1,0,0,0,8403,8408,3,1000,500,0,8404,8408,3, - 950,475,0,8405,8408,3,982,491,0,8406,8408,3,968,484,0,8407,8403, - 1,0,0,0,8407,8404,1,0,0,0,8407,8405,1,0,0,0,8407,8406,1,0,0,0,8408, - 943,1,0,0,0,8409,8410,5,202,0,0,8410,8412,3,1436,718,0,8411,8413, - 3,946,473,0,8412,8411,1,0,0,0,8412,8413,1,0,0,0,8413,8433,1,0,0, - 0,8414,8416,5,46,0,0,8415,8417,3,190,95,0,8416,8415,1,0,0,0,8416, - 8417,1,0,0,0,8417,8418,1,0,0,0,8418,8420,5,92,0,0,8419,8421,3,516, - 258,0,8420,8419,1,0,0,0,8420,8421,1,0,0,0,8421,8422,1,0,0,0,8422, - 8423,3,296,148,0,8423,8424,5,36,0,0,8424,8425,5,202,0,0,8425,8427, - 3,1436,718,0,8426,8428,3,946,473,0,8427,8426,1,0,0,0,8427,8428,1, - 0,0,0,8428,8430,1,0,0,0,8429,8431,3,298,149,0,8430,8429,1,0,0,0, - 8430,8431,1,0,0,0,8431,8433,1,0,0,0,8432,8409,1,0,0,0,8432,8414, - 1,0,0,0,8433,945,1,0,0,0,8434,8435,5,2,0,0,8435,8436,3,1328,664, - 0,8436,8437,5,3,0,0,8437,947,1,0,0,0,8438,8440,5,177,0,0,8439,8441, - 5,290,0,0,8440,8439,1,0,0,0,8440,8441,1,0,0,0,8441,8444,1,0,0,0, - 8442,8445,3,1436,718,0,8443,8445,5,30,0,0,8444,8442,1,0,0,0,8444, - 8443,1,0,0,0,8445,949,1,0,0,0,8446,8448,3,1026,513,0,8447,8446,1, - 0,0,0,8447,8448,1,0,0,0,8448,8449,1,0,0,0,8449,8450,5,241,0,0,8450, - 8451,5,71,0,0,8451,8452,3,952,476,0,8452,8454,3,954,477,0,8453,8455, - 3,962,481,0,8454,8453,1,0,0,0,8454,8455,1,0,0,0,8455,8457,1,0,0, - 0,8456,8458,3,966,483,0,8457,8456,1,0,0,0,8457,8458,1,0,0,0,8458, - 951,1,0,0,0,8459,8462,3,1406,703,0,8460,8461,5,36,0,0,8461,8463, - 3,1474,737,0,8462,8460,1,0,0,0,8462,8463,1,0,0,0,8463,953,1,0,0, - 0,8464,8465,5,2,0,0,8465,8466,3,958,479,0,8466,8467,5,3,0,0,8467, - 8469,1,0,0,0,8468,8464,1,0,0,0,8468,8469,1,0,0,0,8469,8474,1,0,0, - 0,8470,8471,5,463,0,0,8471,8472,3,956,478,0,8472,8473,5,450,0,0, - 8473,8475,1,0,0,0,8474,8470,1,0,0,0,8474,8475,1,0,0,0,8475,8478, - 1,0,0,0,8476,8479,3,1694,847,0,8477,8479,3,1000,500,0,8478,8476, - 1,0,0,0,8478,8477,1,0,0,0,8479,955,1,0,0,0,8480,8481,7,53,0,0,8481, - 957,1,0,0,0,8482,8487,3,960,480,0,8483,8484,5,6,0,0,8484,8486,3, - 960,480,0,8485,8483,1,0,0,0,8486,8489,1,0,0,0,8487,8485,1,0,0,0, - 8487,8488,1,0,0,0,8488,959,1,0,0,0,8489,8487,1,0,0,0,8490,8491,3, - 1432,716,0,8491,8492,3,1382,691,0,8492,961,1,0,0,0,8493,8494,5,80, - 0,0,8494,8496,5,464,0,0,8495,8497,3,964,482,0,8496,8495,1,0,0,0, - 8496,8497,1,0,0,0,8497,8498,1,0,0,0,8498,8506,5,57,0,0,8499,8500, - 5,369,0,0,8500,8501,5,333,0,0,8501,8503,3,984,492,0,8502,8504,3, - 1144,572,0,8503,8502,1,0,0,0,8503,8504,1,0,0,0,8504,8507,1,0,0,0, - 8505,8507,5,270,0,0,8506,8499,1,0,0,0,8506,8505,1,0,0,0,8507,963, - 1,0,0,0,8508,8509,5,2,0,0,8509,8510,3,636,318,0,8510,8512,5,3,0, - 0,8511,8513,3,1144,572,0,8512,8511,1,0,0,0,8512,8513,1,0,0,0,8513, - 8518,1,0,0,0,8514,8515,5,80,0,0,8515,8516,5,45,0,0,8516,8518,3,1436, - 718,0,8517,8508,1,0,0,0,8517,8514,1,0,0,0,8518,965,1,0,0,0,8519, - 8520,5,87,0,0,8520,8521,3,1386,693,0,8521,967,1,0,0,0,8522,8524, - 3,1026,513,0,8523,8522,1,0,0,0,8523,8524,1,0,0,0,8524,8525,1,0,0, - 0,8525,8526,5,182,0,0,8526,8527,5,64,0,0,8527,8529,3,1128,564,0, - 8528,8530,3,970,485,0,8529,8528,1,0,0,0,8529,8530,1,0,0,0,8530,8532, - 1,0,0,0,8531,8533,3,1146,573,0,8532,8531,1,0,0,0,8532,8533,1,0,0, - 0,8533,8535,1,0,0,0,8534,8536,3,966,483,0,8535,8534,1,0,0,0,8535, - 8536,1,0,0,0,8536,969,1,0,0,0,8537,8538,5,100,0,0,8538,8539,3,1104, - 552,0,8539,971,1,0,0,0,8540,8542,5,256,0,0,8541,8543,3,1034,517, - 0,8542,8541,1,0,0,0,8542,8543,1,0,0,0,8543,8544,1,0,0,0,8544,8546, - 3,1124,562,0,8545,8547,3,974,487,0,8546,8545,1,0,0,0,8546,8547,1, - 0,0,0,8547,8549,1,0,0,0,8548,8550,3,978,489,0,8549,8548,1,0,0,0, - 8549,8550,1,0,0,0,8550,973,1,0,0,0,8551,8552,5,68,0,0,8552,8553, - 3,976,488,0,8553,8554,5,263,0,0,8554,975,1,0,0,0,8555,8556,5,131, - 0,0,8556,8568,7,54,0,0,8557,8558,5,414,0,0,8558,8568,7,54,0,0,8559, - 8564,5,334,0,0,8560,8561,5,369,0,0,8561,8565,5,201,0,0,8562,8563, - 5,414,0,0,8563,8565,5,201,0,0,8564,8560,1,0,0,0,8564,8562,1,0,0, - 0,8564,8565,1,0,0,0,8565,8568,1,0,0,0,8566,8568,5,201,0,0,8567,8555, - 1,0,0,0,8567,8557,1,0,0,0,8567,8559,1,0,0,0,8567,8566,1,0,0,0,8568, - 977,1,0,0,0,8569,8570,5,272,0,0,8570,979,1,0,0,0,8571,8575,5,272, - 0,0,8572,8573,5,465,0,0,8573,8575,5,466,0,0,8574,8571,1,0,0,0,8574, - 8572,1,0,0,0,8575,981,1,0,0,0,8576,8578,3,1026,513,0,8577,8576,1, - 0,0,0,8577,8578,1,0,0,0,8578,8579,1,0,0,0,8579,8580,5,369,0,0,8580, - 8581,3,1128,564,0,8581,8582,5,333,0,0,8582,8584,3,984,492,0,8583, - 8585,3,1102,551,0,8584,8583,1,0,0,0,8584,8585,1,0,0,0,8585,8587, - 1,0,0,0,8586,8588,3,1146,573,0,8587,8586,1,0,0,0,8587,8588,1,0,0, - 0,8588,8590,1,0,0,0,8589,8591,3,966,483,0,8590,8589,1,0,0,0,8590, - 8591,1,0,0,0,8591,983,1,0,0,0,8592,8597,3,986,493,0,8593,8594,5, - 6,0,0,8594,8596,3,986,493,0,8595,8593,1,0,0,0,8596,8599,1,0,0,0, - 8597,8595,1,0,0,0,8597,8598,1,0,0,0,8598,985,1,0,0,0,8599,8597,1, - 0,0,0,8600,8601,3,988,494,0,8601,8602,5,10,0,0,8602,8603,3,1212, - 606,0,8603,8619,1,0,0,0,8604,8605,5,2,0,0,8605,8606,3,990,495,0, - 8606,8607,5,3,0,0,8607,8616,5,10,0,0,8608,8610,5,414,0,0,8609,8608, - 1,0,0,0,8609,8610,1,0,0,0,8610,8611,1,0,0,0,8611,8617,3,1212,606, - 0,8612,8613,5,2,0,0,8613,8614,3,1006,503,0,8614,8615,5,3,0,0,8615, - 8617,1,0,0,0,8616,8609,1,0,0,0,8616,8612,1,0,0,0,8617,8619,1,0,0, - 0,8618,8600,1,0,0,0,8618,8604,1,0,0,0,8619,987,1,0,0,0,8620,8621, - 3,1432,716,0,8621,8622,3,1382,691,0,8622,989,1,0,0,0,8623,8628,3, - 988,494,0,8624,8625,5,6,0,0,8625,8627,3,988,494,0,8626,8624,1,0, - 0,0,8627,8630,1,0,0,0,8628,8626,1,0,0,0,8628,8629,1,0,0,0,8629,991, - 1,0,0,0,8630,8628,1,0,0,0,8631,8632,5,178,0,0,8632,8633,3,994,497, - 0,8633,8634,3,996,498,0,8634,8635,5,172,0,0,8635,8636,3,998,499, - 0,8636,8637,5,62,0,0,8637,8638,3,1000,500,0,8638,993,1,0,0,0,8639, - 8640,3,1436,718,0,8640,995,1,0,0,0,8641,8642,5,269,0,0,8642,8647, - 5,324,0,0,8643,8647,5,324,0,0,8644,8647,5,107,0,0,8645,8647,5,240, - 0,0,8646,8641,1,0,0,0,8646,8643,1,0,0,0,8646,8644,1,0,0,0,8646,8645, - 1,0,0,0,8647,8650,1,0,0,0,8648,8646,1,0,0,0,8648,8649,1,0,0,0,8649, - 997,1,0,0,0,8650,8648,1,0,0,0,8651,8657,1,0,0,0,8652,8653,5,105, - 0,0,8653,8657,5,217,0,0,8654,8655,5,379,0,0,8655,8657,5,217,0,0, - 8656,8651,1,0,0,0,8656,8652,1,0,0,0,8656,8654,1,0,0,0,8657,999,1, - 0,0,0,8658,8661,3,1004,502,0,8659,8661,3,1002,501,0,8660,8658,1, - 0,0,0,8660,8659,1,0,0,0,8661,1001,1,0,0,0,8662,8663,5,2,0,0,8663, - 8664,3,1004,502,0,8664,8665,5,3,0,0,8665,8671,1,0,0,0,8666,8667, - 5,2,0,0,8667,8668,3,1002,501,0,8668,8669,5,3,0,0,8669,8671,1,0,0, - 0,8670,8662,1,0,0,0,8670,8666,1,0,0,0,8671,1003,1,0,0,0,8672,8674, - 3,1006,503,0,8673,8675,3,1042,521,0,8674,8673,1,0,0,0,8674,8675, - 1,0,0,0,8675,8684,1,0,0,0,8676,8678,3,1088,544,0,8677,8679,3,1052, - 526,0,8678,8677,1,0,0,0,8678,8679,1,0,0,0,8679,8685,1,0,0,0,8680, - 8682,3,1050,525,0,8681,8683,3,1090,545,0,8682,8681,1,0,0,0,8682, - 8683,1,0,0,0,8683,8685,1,0,0,0,8684,8676,1,0,0,0,8684,8680,1,0,0, - 0,8684,8685,1,0,0,0,8685,8702,1,0,0,0,8686,8687,3,1014,507,0,8687, - 8689,3,1006,503,0,8688,8690,3,1042,521,0,8689,8688,1,0,0,0,8689, - 8690,1,0,0,0,8690,8699,1,0,0,0,8691,8693,3,1088,544,0,8692,8694, - 3,1052,526,0,8693,8692,1,0,0,0,8693,8694,1,0,0,0,8694,8700,1,0,0, - 0,8695,8697,3,1050,525,0,8696,8698,3,1090,545,0,8697,8696,1,0,0, - 0,8697,8698,1,0,0,0,8698,8700,1,0,0,0,8699,8691,1,0,0,0,8699,8695, - 1,0,0,0,8699,8700,1,0,0,0,8700,8702,1,0,0,0,8701,8672,1,0,0,0,8701, - 8686,1,0,0,0,8702,1005,1,0,0,0,8703,8706,3,1008,504,0,8704,8706, - 3,1002,501,0,8705,8703,1,0,0,0,8705,8704,1,0,0,0,8706,1007,1,0,0, - 0,8707,8723,5,88,0,0,8708,8710,3,1040,520,0,8709,8708,1,0,0,0,8709, - 8710,1,0,0,0,8710,8712,1,0,0,0,8711,8713,3,1028,514,0,8712,8711, - 1,0,0,0,8712,8713,1,0,0,0,8713,8715,1,0,0,0,8714,8716,3,1384,692, - 0,8715,8714,1,0,0,0,8715,8716,1,0,0,0,8716,8724,1,0,0,0,8717,8719, - 3,1038,519,0,8718,8717,1,0,0,0,8718,8719,1,0,0,0,8719,8721,1,0,0, - 0,8720,8722,3,1386,693,0,8721,8720,1,0,0,0,8721,8722,1,0,0,0,8722, - 8724,1,0,0,0,8723,8709,1,0,0,0,8723,8718,1,0,0,0,8724,8726,1,0,0, - 0,8725,8727,3,1028,514,0,8726,8725,1,0,0,0,8726,8727,1,0,0,0,8727, - 8729,1,0,0,0,8728,8730,3,1102,551,0,8729,8728,1,0,0,0,8729,8730, - 1,0,0,0,8730,8732,1,0,0,0,8731,8733,3,1144,572,0,8732,8731,1,0,0, - 0,8732,8733,1,0,0,0,8733,8735,1,0,0,0,8734,8736,3,1072,536,0,8735, - 8734,1,0,0,0,8735,8736,1,0,0,0,8736,8738,1,0,0,0,8737,8739,3,1086, - 543,0,8738,8737,1,0,0,0,8738,8739,1,0,0,0,8739,8741,1,0,0,0,8740, - 8742,3,1288,644,0,8741,8740,1,0,0,0,8741,8742,1,0,0,0,8742,8753, - 1,0,0,0,8743,8753,3,1100,550,0,8744,8745,5,92,0,0,8745,8753,3,1118, - 559,0,8746,8747,3,1002,501,0,8747,8750,3,1012,506,0,8748,8751,3, - 1008,504,0,8749,8751,3,1002,501,0,8750,8748,1,0,0,0,8750,8749,1, - 0,0,0,8751,8753,1,0,0,0,8752,8707,1,0,0,0,8752,8743,1,0,0,0,8752, - 8744,1,0,0,0,8752,8746,1,0,0,0,8753,8761,1,0,0,0,8754,8757,3,1012, - 506,0,8755,8758,3,1008,504,0,8756,8758,3,1002,501,0,8757,8755,1, - 0,0,0,8757,8756,1,0,0,0,8758,8760,1,0,0,0,8759,8754,1,0,0,0,8760, - 8763,1,0,0,0,8761,8759,1,0,0,0,8761,8762,1,0,0,0,8762,1009,1,0,0, - 0,8763,8761,1,0,0,0,8764,8768,5,97,0,0,8765,8768,5,70,0,0,8766,8768, - 5,59,0,0,8767,8764,1,0,0,0,8767,8765,1,0,0,0,8767,8766,1,0,0,0,8768, - 1011,1,0,0,0,8769,8771,3,1010,505,0,8770,8772,3,1036,518,0,8771, - 8770,1,0,0,0,8771,8772,1,0,0,0,8772,1013,1,0,0,0,8773,8775,5,105, - 0,0,8774,8776,5,303,0,0,8775,8774,1,0,0,0,8775,8776,1,0,0,0,8776, - 8777,1,0,0,0,8777,8778,3,1016,508,0,8778,1015,1,0,0,0,8779,8784, - 3,1018,509,0,8780,8781,5,6,0,0,8781,8783,3,1018,509,0,8782,8780, - 1,0,0,0,8783,8786,1,0,0,0,8784,8782,1,0,0,0,8784,8785,1,0,0,0,8785, - 1017,1,0,0,0,8786,8784,1,0,0,0,8787,8789,3,1436,718,0,8788,8790, - 3,918,459,0,8789,8788,1,0,0,0,8789,8790,1,0,0,0,8790,8791,1,0,0, - 0,8791,8793,5,36,0,0,8792,8794,3,1024,512,0,8793,8792,1,0,0,0,8793, - 8794,1,0,0,0,8794,8795,1,0,0,0,8795,8796,5,2,0,0,8796,8797,3,942, - 471,0,8797,8799,5,3,0,0,8798,8800,3,1020,510,0,8799,8798,1,0,0,0, - 8799,8800,1,0,0,0,8800,8802,1,0,0,0,8801,8803,3,1022,511,0,8802, - 8801,1,0,0,0,8802,8803,1,0,0,0,8803,1019,1,0,0,0,8804,8805,5,325, - 0,0,8805,8806,7,55,0,0,8806,8807,5,207,0,0,8807,8808,5,147,0,0,8808, - 8809,3,244,122,0,8809,8810,5,333,0,0,8810,8811,3,1432,716,0,8811, - 1021,1,0,0,0,8812,8813,5,173,0,0,8813,8814,3,244,122,0,8814,8815, - 5,333,0,0,8815,8821,3,1432,716,0,8816,8817,5,94,0,0,8817,8818,3, - 1436,718,0,8818,8819,5,53,0,0,8819,8820,3,1436,718,0,8820,8822,1, - 0,0,0,8821,8816,1,0,0,0,8821,8822,1,0,0,0,8822,8823,1,0,0,0,8823, - 8824,5,100,0,0,8824,8825,3,1432,716,0,8825,1023,1,0,0,0,8826,8830, - 5,259,0,0,8827,8828,5,77,0,0,8828,8830,5,259,0,0,8829,8826,1,0,0, - 0,8829,8827,1,0,0,0,8830,1025,1,0,0,0,8831,8832,3,1014,507,0,8832, - 1027,1,0,0,0,8833,8838,5,71,0,0,8834,8835,3,1030,515,0,8835,8836, - 3,1032,516,0,8836,8839,1,0,0,0,8837,8839,3,1674,837,0,8838,8834, - 1,0,0,0,8838,8837,1,0,0,0,8839,1029,1,0,0,0,8840,8843,1,0,0,0,8841, - 8843,5,346,0,0,8842,8840,1,0,0,0,8842,8841,1,0,0,0,8843,1031,1,0, - 0,0,8844,8846,7,56,0,0,8845,8844,1,0,0,0,8845,8846,1,0,0,0,8846, - 8847,1,0,0,0,8847,8849,7,25,0,0,8848,8850,3,1034,517,0,8849,8848, - 1,0,0,0,8849,8850,1,0,0,0,8850,8851,1,0,0,0,8851,8861,3,1404,702, - 0,8852,8854,5,367,0,0,8853,8855,3,1034,517,0,8854,8853,1,0,0,0,8854, - 8855,1,0,0,0,8855,8856,1,0,0,0,8856,8861,3,1404,702,0,8857,8858, - 5,92,0,0,8858,8861,3,1404,702,0,8859,8861,3,1404,702,0,8860,8845, - 1,0,0,0,8860,8852,1,0,0,0,8860,8857,1,0,0,0,8860,8859,1,0,0,0,8861, - 1033,1,0,0,0,8862,8863,5,92,0,0,8863,1035,1,0,0,0,8864,8865,7,57, - 0,0,8865,1037,1,0,0,0,8866,8872,5,56,0,0,8867,8868,5,80,0,0,8868, - 8869,5,2,0,0,8869,8870,3,1328,664,0,8870,8871,5,3,0,0,8871,8873, - 1,0,0,0,8872,8867,1,0,0,0,8872,8873,1,0,0,0,8873,1039,1,0,0,0,8874, - 8875,5,30,0,0,8875,1041,1,0,0,0,8876,8877,3,1044,522,0,8877,1043, - 1,0,0,0,8878,8879,5,83,0,0,8879,8880,5,147,0,0,8880,8881,3,1046, - 523,0,8881,1045,1,0,0,0,8882,8887,3,1048,524,0,8883,8884,5,6,0,0, - 8884,8886,3,1048,524,0,8885,8883,1,0,0,0,8886,8889,1,0,0,0,8887, - 8885,1,0,0,0,8887,8888,1,0,0,0,8888,1047,1,0,0,0,8889,8887,1,0,0, - 0,8890,8894,3,1336,668,0,8891,8892,5,100,0,0,8892,8895,3,1324,662, - 0,8893,8895,3,650,325,0,8894,8891,1,0,0,0,8894,8893,1,0,0,0,8894, - 8895,1,0,0,0,8895,8897,1,0,0,0,8896,8898,3,652,326,0,8897,8896,1, - 0,0,0,8897,8898,1,0,0,0,8898,1049,1,0,0,0,8899,8901,3,1054,527,0, - 8900,8902,3,1058,529,0,8901,8900,1,0,0,0,8901,8902,1,0,0,0,8902, - 8912,1,0,0,0,8903,8905,3,1058,529,0,8904,8906,3,1056,528,0,8905, - 8904,1,0,0,0,8905,8906,1,0,0,0,8906,8912,1,0,0,0,8907,8909,3,1056, - 528,0,8908,8910,3,1058,529,0,8909,8908,1,0,0,0,8909,8910,1,0,0,0, - 8910,8912,1,0,0,0,8911,8899,1,0,0,0,8911,8903,1,0,0,0,8911,8907, - 1,0,0,0,8912,1051,1,0,0,0,8913,8914,3,1050,525,0,8914,1053,1,0,0, - 0,8915,8916,5,74,0,0,8916,8919,3,1060,530,0,8917,8918,5,6,0,0,8918, - 8920,3,1062,531,0,8919,8917,1,0,0,0,8919,8920,1,0,0,0,8920,1055, - 1,0,0,0,8921,8922,5,61,0,0,8922,8936,3,1070,535,0,8923,8924,3,1064, - 532,0,8924,8928,3,1068,534,0,8925,8929,5,81,0,0,8926,8927,5,105, - 0,0,8927,8929,5,467,0,0,8928,8925,1,0,0,0,8928,8926,1,0,0,0,8929, - 8937,1,0,0,0,8930,8934,3,1068,534,0,8931,8935,5,81,0,0,8932,8933, - 5,105,0,0,8933,8935,5,467,0,0,8934,8931,1,0,0,0,8934,8932,1,0,0, - 0,8935,8937,1,0,0,0,8936,8923,1,0,0,0,8936,8930,1,0,0,0,8937,1057, - 1,0,0,0,8938,8943,5,79,0,0,8939,8940,3,1064,532,0,8940,8941,3,1068, - 534,0,8941,8944,1,0,0,0,8942,8944,3,1062,531,0,8943,8939,1,0,0,0, - 8943,8942,1,0,0,0,8944,1059,1,0,0,0,8945,8948,3,1212,606,0,8946, - 8948,5,30,0,0,8947,8945,1,0,0,0,8947,8946,1,0,0,0,8948,1061,1,0, - 0,0,8949,8950,3,1212,606,0,8950,1063,1,0,0,0,8951,8952,5,12,0,0, - 8952,8957,3,1066,533,0,8953,8954,5,13,0,0,8954,8957,3,1066,533,0, - 8955,8957,3,1254,627,0,8956,8951,1,0,0,0,8956,8953,1,0,0,0,8956, - 8955,1,0,0,0,8957,1065,1,0,0,0,8958,8961,3,1456,728,0,8959,8961, - 3,1454,727,0,8960,8958,1,0,0,0,8960,8959,1,0,0,0,8961,1067,1,0,0, - 0,8962,8963,7,58,0,0,8963,1069,1,0,0,0,8964,8965,7,59,0,0,8965,1071, - 1,0,0,0,8966,8967,5,66,0,0,8967,8969,5,147,0,0,8968,8970,3,1036, - 518,0,8969,8968,1,0,0,0,8969,8970,1,0,0,0,8970,8971,1,0,0,0,8971, - 8972,3,1074,537,0,8972,1073,1,0,0,0,8973,8978,3,1076,538,0,8974, - 8975,5,6,0,0,8975,8977,3,1076,538,0,8976,8974,1,0,0,0,8977,8980, - 1,0,0,0,8978,8976,1,0,0,0,8978,8979,1,0,0,0,8979,1075,1,0,0,0,8980, - 8978,1,0,0,0,8981,8991,3,1336,668,0,8982,8991,3,1078,539,0,8983, - 8991,3,1082,541,0,8984,8991,3,1080,540,0,8985,8991,3,1084,542,0, - 8986,8987,5,2,0,0,8987,8988,3,1330,665,0,8988,8989,5,3,0,0,8989, - 8991,1,0,0,0,8990,8981,1,0,0,0,8990,8982,1,0,0,0,8990,8983,1,0,0, - 0,8990,8984,1,0,0,0,8990,8985,1,0,0,0,8990,8986,1,0,0,0,8991,1077, - 1,0,0,0,8992,8993,5,2,0,0,8993,8994,5,3,0,0,8994,1079,1,0,0,0,8995, - 8996,5,468,0,0,8996,8997,5,2,0,0,8997,8998,3,1330,665,0,8998,8999, - 5,3,0,0,8999,1081,1,0,0,0,9000,9001,5,469,0,0,9001,9002,5,2,0,0, - 9002,9003,3,1330,665,0,9003,9004,5,3,0,0,9004,1083,1,0,0,0,9005, - 9006,5,470,0,0,9006,9007,5,471,0,0,9007,9008,5,2,0,0,9008,9009,3, - 1074,537,0,9009,9010,5,3,0,0,9010,1085,1,0,0,0,9011,9012,5,67,0, - 0,9012,9013,3,1212,606,0,9013,1087,1,0,0,0,9014,9019,3,1092,546, - 0,9015,9016,5,62,0,0,9016,9017,5,300,0,0,9017,9019,5,81,0,0,9018, - 9014,1,0,0,0,9018,9015,1,0,0,0,9019,1089,1,0,0,0,9020,9021,3,1088, - 544,0,9021,1091,1,0,0,0,9022,9024,3,1094,547,0,9023,9022,1,0,0,0, - 9024,9025,1,0,0,0,9025,9023,1,0,0,0,9025,9026,1,0,0,0,9026,1093, - 1,0,0,0,9027,9029,3,1096,548,0,9028,9030,3,1098,549,0,9029,9028, - 1,0,0,0,9029,9030,1,0,0,0,9030,9032,1,0,0,0,9031,9033,3,980,490, - 0,9032,9031,1,0,0,0,9032,9033,1,0,0,0,9033,1095,1,0,0,0,9034,9044, - 5,62,0,0,9035,9036,5,269,0,0,9036,9038,5,245,0,0,9037,9035,1,0,0, - 0,9037,9038,1,0,0,0,9038,9039,1,0,0,0,9039,9045,5,369,0,0,9040,9042, - 5,245,0,0,9041,9040,1,0,0,0,9041,9042,1,0,0,0,9042,9043,1,0,0,0, - 9043,9045,5,334,0,0,9044,9037,1,0,0,0,9044,9041,1,0,0,0,9045,1097, - 1,0,0,0,9046,9047,5,275,0,0,9047,9048,3,1390,695,0,9048,1099,1,0, - 0,0,9049,9050,5,422,0,0,9050,9051,5,2,0,0,9051,9052,3,1328,664,0, - 9052,9060,5,3,0,0,9053,9054,5,6,0,0,9054,9055,5,2,0,0,9055,9056, - 3,1328,664,0,9056,9057,5,3,0,0,9057,9059,1,0,0,0,9058,9053,1,0,0, - 0,9059,9062,1,0,0,0,9060,9058,1,0,0,0,9060,9061,1,0,0,0,9061,1101, - 1,0,0,0,9062,9060,1,0,0,0,9063,9064,5,64,0,0,9064,9065,3,1104,552, - 0,9065,1103,1,0,0,0,9066,9071,3,1106,553,0,9067,9068,5,6,0,0,9068, - 9070,3,1106,553,0,9069,9067,1,0,0,0,9070,9073,1,0,0,0,9071,9069, - 1,0,0,0,9071,9072,1,0,0,0,9072,1105,1,0,0,0,9073,9071,1,0,0,0,9074, - 9077,3,1118,559,0,9075,9077,3,1120,560,0,9076,9074,1,0,0,0,9076, - 9075,1,0,0,0,9077,9079,1,0,0,0,9078,9080,3,1110,555,0,9079,9078, - 1,0,0,0,9079,9080,1,0,0,0,9080,9082,1,0,0,0,9081,9083,3,1130,565, - 0,9082,9081,1,0,0,0,9082,9083,1,0,0,0,9083,9136,1,0,0,0,9084,9086, - 3,1134,567,0,9085,9087,3,1112,556,0,9086,9085,1,0,0,0,9086,9087, - 1,0,0,0,9087,9136,1,0,0,0,9088,9090,3,1154,577,0,9089,9091,3,1110, - 555,0,9090,9089,1,0,0,0,9090,9091,1,0,0,0,9091,9136,1,0,0,0,9092, - 9094,3,1002,501,0,9093,9095,3,1110,555,0,9094,9093,1,0,0,0,9094, - 9095,1,0,0,0,9095,9136,1,0,0,0,9096,9109,5,72,0,0,9097,9099,3,1154, - 577,0,9098,9100,3,1110,555,0,9099,9098,1,0,0,0,9099,9100,1,0,0,0, - 9100,9110,1,0,0,0,9101,9103,3,1134,567,0,9102,9104,3,1112,556,0, - 9103,9102,1,0,0,0,9103,9104,1,0,0,0,9104,9110,1,0,0,0,9105,9107, - 3,1002,501,0,9106,9108,3,1110,555,0,9107,9106,1,0,0,0,9107,9108, - 1,0,0,0,9108,9110,1,0,0,0,9109,9097,1,0,0,0,9109,9101,1,0,0,0,9109, - 9105,1,0,0,0,9110,9136,1,0,0,0,9111,9112,5,2,0,0,9112,9129,3,1106, - 553,0,9113,9114,5,110,0,0,9114,9115,5,118,0,0,9115,9130,3,1106,553, - 0,9116,9118,5,121,0,0,9117,9119,3,1114,557,0,9118,9117,1,0,0,0,9118, - 9119,1,0,0,0,9119,9120,1,0,0,0,9120,9121,5,118,0,0,9121,9130,3,1106, - 553,0,9122,9124,3,1114,557,0,9123,9122,1,0,0,0,9123,9124,1,0,0,0, - 9124,9125,1,0,0,0,9125,9126,5,118,0,0,9126,9127,3,1106,553,0,9127, - 9128,3,1116,558,0,9128,9130,1,0,0,0,9129,9113,1,0,0,0,9129,9116, - 1,0,0,0,9129,9123,1,0,0,0,9129,9130,1,0,0,0,9130,9131,1,0,0,0,9131, - 9133,5,3,0,0,9132,9134,3,1110,555,0,9133,9132,1,0,0,0,9133,9134, - 1,0,0,0,9134,9136,1,0,0,0,9135,9076,1,0,0,0,9135,9084,1,0,0,0,9135, - 9088,1,0,0,0,9135,9092,1,0,0,0,9135,9096,1,0,0,0,9135,9111,1,0,0, - 0,9136,9155,1,0,0,0,9137,9138,5,110,0,0,9138,9139,5,118,0,0,9139, - 9154,3,1106,553,0,9140,9142,5,121,0,0,9141,9143,3,1114,557,0,9142, - 9141,1,0,0,0,9142,9143,1,0,0,0,9143,9144,1,0,0,0,9144,9145,5,118, - 0,0,9145,9154,3,1106,553,0,9146,9148,3,1114,557,0,9147,9146,1,0, - 0,0,9147,9148,1,0,0,0,9148,9149,1,0,0,0,9149,9150,5,118,0,0,9150, - 9151,3,1106,553,0,9151,9152,3,1116,558,0,9152,9154,1,0,0,0,9153, - 9137,1,0,0,0,9153,9140,1,0,0,0,9153,9147,1,0,0,0,9154,9157,1,0,0, - 0,9155,9153,1,0,0,0,9155,9156,1,0,0,0,9156,1107,1,0,0,0,9157,9155, - 1,0,0,0,9158,9160,5,36,0,0,9159,9158,1,0,0,0,9159,9160,1,0,0,0,9160, - 9161,1,0,0,0,9161,9166,3,1474,737,0,9162,9163,5,2,0,0,9163,9164, - 3,1416,708,0,9164,9165,5,3,0,0,9165,9167,1,0,0,0,9166,9162,1,0,0, - 0,9166,9167,1,0,0,0,9167,1109,1,0,0,0,9168,9169,3,1108,554,0,9169, - 1111,1,0,0,0,9170,9183,3,1108,554,0,9171,9173,5,36,0,0,9172,9174, - 3,1474,737,0,9173,9172,1,0,0,0,9173,9174,1,0,0,0,9174,9177,1,0,0, - 0,9175,9177,3,1474,737,0,9176,9171,1,0,0,0,9176,9175,1,0,0,0,9177, - 9178,1,0,0,0,9178,9179,5,2,0,0,9179,9180,3,1150,575,0,9180,9181, - 5,3,0,0,9181,9183,1,0,0,0,9182,9170,1,0,0,0,9182,9176,1,0,0,0,9183, - 1113,1,0,0,0,9184,9186,7,60,0,0,9185,9187,5,123,0,0,9186,9185,1, - 0,0,0,9186,9187,1,0,0,0,9187,1115,1,0,0,0,9188,9189,5,100,0,0,9189, - 9190,5,2,0,0,9190,9191,3,244,122,0,9191,9192,5,3,0,0,9192,9196,1, - 0,0,0,9193,9194,5,80,0,0,9194,9196,3,1212,606,0,9195,9188,1,0,0, - 0,9195,9193,1,0,0,0,9196,1117,1,0,0,0,9197,9199,5,81,0,0,9198,9197, - 1,0,0,0,9198,9199,1,0,0,0,9199,9200,1,0,0,0,9200,9202,3,1406,703, - 0,9201,9203,5,9,0,0,9202,9201,1,0,0,0,9202,9203,1,0,0,0,9203,9219, - 1,0,0,0,9204,9210,5,81,0,0,9205,9211,3,1406,703,0,9206,9207,5,2, - 0,0,9207,9208,3,1406,703,0,9208,9209,5,3,0,0,9209,9211,1,0,0,0,9210, - 9205,1,0,0,0,9210,9206,1,0,0,0,9211,9219,1,0,0,0,9212,9213,5,68, - 0,0,9213,9216,5,323,0,0,9214,9217,3,1422,711,0,9215,9217,5,111,0, - 0,9216,9214,1,0,0,0,9216,9215,1,0,0,0,9217,9219,1,0,0,0,9218,9198, - 1,0,0,0,9218,9204,1,0,0,0,9218,9212,1,0,0,0,9219,1119,1,0,0,0,9220, - 9222,5,81,0,0,9221,9220,1,0,0,0,9221,9222,1,0,0,0,9222,9223,1,0, - 0,0,9223,9225,3,1410,705,0,9224,9226,5,9,0,0,9225,9224,1,0,0,0,9225, - 9226,1,0,0,0,9226,9228,1,0,0,0,9227,9229,3,244,122,0,9228,9227,1, - 0,0,0,9228,9229,1,0,0,0,9229,9231,1,0,0,0,9230,9232,3,1144,572,0, - 9231,9230,1,0,0,0,9231,9232,1,0,0,0,9232,1121,1,0,0,0,9233,9235, - 5,92,0,0,9234,9236,5,81,0,0,9235,9234,1,0,0,0,9235,9236,1,0,0,0, - 9236,9237,1,0,0,0,9237,9239,3,1406,703,0,9238,9240,5,9,0,0,9239, - 9238,1,0,0,0,9239,9240,1,0,0,0,9240,9245,1,0,0,0,9241,9242,5,2,0, - 0,9242,9243,3,244,122,0,9243,9244,5,3,0,0,9244,9246,1,0,0,0,9245, - 9241,1,0,0,0,9245,9246,1,0,0,0,9246,9248,1,0,0,0,9247,9249,3,1144, - 572,0,9248,9247,1,0,0,0,9248,9249,1,0,0,0,9249,9267,1,0,0,0,9250, - 9251,5,92,0,0,9251,9257,5,81,0,0,9252,9258,3,1406,703,0,9253,9254, - 5,2,0,0,9254,9255,3,1406,703,0,9255,9256,5,3,0,0,9256,9258,1,0,0, - 0,9257,9252,1,0,0,0,9257,9253,1,0,0,0,9258,9267,1,0,0,0,9259,9260, - 5,350,0,0,9260,9261,5,68,0,0,9261,9264,5,323,0,0,9262,9265,3,1422, - 711,0,9263,9265,5,111,0,0,9264,9262,1,0,0,0,9264,9263,1,0,0,0,9265, - 9267,1,0,0,0,9266,9233,1,0,0,0,9266,9250,1,0,0,0,9266,9259,1,0,0, - 0,9267,1123,1,0,0,0,9268,9273,3,1118,559,0,9269,9270,5,6,0,0,9270, - 9272,3,1118,559,0,9271,9269,1,0,0,0,9272,9275,1,0,0,0,9273,9271, - 1,0,0,0,9273,9274,1,0,0,0,9274,1125,1,0,0,0,9275,9273,1,0,0,0,9276, - 9281,3,1122,561,0,9277,9278,5,6,0,0,9278,9280,3,1122,561,0,9279, - 9277,1,0,0,0,9280,9283,1,0,0,0,9281,9279,1,0,0,0,9281,9282,1,0,0, - 0,9282,1127,1,0,0,0,9283,9281,1,0,0,0,9284,9289,3,1118,559,0,9285, - 9287,5,36,0,0,9286,9285,1,0,0,0,9286,9287,1,0,0,0,9287,9288,1,0, - 0,0,9288,9290,3,1474,737,0,9289,9286,1,0,0,0,9289,9290,1,0,0,0,9290, - 1129,1,0,0,0,9291,9292,5,472,0,0,9292,9293,3,1444,722,0,9293,9294, - 5,2,0,0,9294,9295,3,1328,664,0,9295,9297,5,3,0,0,9296,9298,3,1132, - 566,0,9297,9296,1,0,0,0,9297,9298,1,0,0,0,9298,1131,1,0,0,0,9299, - 9300,5,310,0,0,9300,9301,5,2,0,0,9301,9302,3,1212,606,0,9302,9303, - 5,3,0,0,9303,1133,1,0,0,0,9304,9306,3,1262,631,0,9305,9307,3,1142, - 571,0,9306,9305,1,0,0,0,9306,9307,1,0,0,0,9307,9317,1,0,0,0,9308, - 9309,5,320,0,0,9309,9310,5,64,0,0,9310,9311,5,2,0,0,9311,9312,3, - 1138,569,0,9312,9314,5,3,0,0,9313,9315,3,1142,571,0,9314,9313,1, - 0,0,0,9314,9315,1,0,0,0,9315,9317,1,0,0,0,9316,9304,1,0,0,0,9316, - 9308,1,0,0,0,9317,1135,1,0,0,0,9318,9320,3,1262,631,0,9319,9321, - 3,1140,570,0,9320,9319,1,0,0,0,9320,9321,1,0,0,0,9321,1137,1,0,0, - 0,9322,9327,3,1136,568,0,9323,9324,5,6,0,0,9324,9326,3,1136,568, - 0,9325,9323,1,0,0,0,9326,9329,1,0,0,0,9327,9325,1,0,0,0,9327,9328, - 1,0,0,0,9328,1139,1,0,0,0,9329,9327,1,0,0,0,9330,9331,5,36,0,0,9331, - 9332,5,2,0,0,9332,9333,3,1150,575,0,9333,9334,5,3,0,0,9334,1141, - 1,0,0,0,9335,9336,5,105,0,0,9336,9337,5,473,0,0,9337,1143,1,0,0, - 0,9338,9339,5,103,0,0,9339,9340,3,1336,668,0,9340,1145,1,0,0,0,9341, - 9346,5,103,0,0,9342,9343,5,434,0,0,9343,9344,5,275,0,0,9344,9347, - 3,994,497,0,9345,9347,3,1212,606,0,9346,9342,1,0,0,0,9346,9345,1, - 0,0,0,9347,1147,1,0,0,0,9348,9349,3,1150,575,0,9349,1149,1,0,0,0, - 9350,9355,3,1152,576,0,9351,9352,5,6,0,0,9352,9354,3,1152,576,0, - 9353,9351,1,0,0,0,9354,9357,1,0,0,0,9355,9353,1,0,0,0,9355,9356, - 1,0,0,0,9356,1151,1,0,0,0,9357,9355,1,0,0,0,9358,9359,3,1474,737, - 0,9359,9361,3,1168,584,0,9360,9362,3,126,63,0,9361,9360,1,0,0,0, - 9361,9362,1,0,0,0,9362,1153,1,0,0,0,9363,9364,5,474,0,0,9364,9380, - 5,2,0,0,9365,9366,3,1254,627,0,9366,9367,3,1280,640,0,9367,9368, - 5,475,0,0,9368,9369,3,1156,578,0,9369,9381,1,0,0,0,9370,9371,5,476, - 0,0,9371,9372,5,2,0,0,9372,9373,3,1164,582,0,9373,9374,5,3,0,0,9374, - 9375,5,6,0,0,9375,9376,3,1254,627,0,9376,9377,3,1280,640,0,9377, - 9378,5,475,0,0,9378,9379,3,1156,578,0,9379,9381,1,0,0,0,9380,9365, - 1,0,0,0,9380,9370,1,0,0,0,9381,9382,1,0,0,0,9382,9383,5,3,0,0,9383, - 1155,1,0,0,0,9384,9389,3,1158,579,0,9385,9386,5,6,0,0,9386,9388, - 3,1158,579,0,9387,9385,1,0,0,0,9388,9391,1,0,0,0,9389,9387,1,0,0, - 0,9389,9390,1,0,0,0,9390,1157,1,0,0,0,9391,9389,1,0,0,0,9392,9399, - 3,1474,737,0,9393,9395,3,1168,584,0,9394,9396,3,1160,580,0,9395, - 9394,1,0,0,0,9395,9396,1,0,0,0,9396,9400,1,0,0,0,9397,9398,5,62, - 0,0,9398,9400,5,473,0,0,9399,9393,1,0,0,0,9399,9397,1,0,0,0,9400, - 1159,1,0,0,0,9401,9403,3,1162,581,0,9402,9401,1,0,0,0,9403,9404, - 1,0,0,0,9404,9402,1,0,0,0,9404,9405,1,0,0,0,9405,1161,1,0,0,0,9406, - 9407,5,53,0,0,9407,9415,3,1212,606,0,9408,9409,3,1492,746,0,9409, - 9410,3,1212,606,0,9410,9415,1,0,0,0,9411,9412,5,77,0,0,9412,9415, - 5,78,0,0,9413,9415,5,78,0,0,9414,9406,1,0,0,0,9414,9408,1,0,0,0, - 9414,9411,1,0,0,0,9414,9413,1,0,0,0,9415,1163,1,0,0,0,9416,9421, - 3,1166,583,0,9417,9418,5,6,0,0,9418,9420,3,1166,583,0,9419,9417, - 1,0,0,0,9420,9423,1,0,0,0,9421,9419,1,0,0,0,9421,9422,1,0,0,0,9422, - 1165,1,0,0,0,9423,9421,1,0,0,0,9424,9425,3,1252,626,0,9425,9426, - 5,36,0,0,9426,9427,3,1490,745,0,9427,9431,1,0,0,0,9428,9429,5,53, - 0,0,9429,9431,3,1252,626,0,9430,9424,1,0,0,0,9430,9428,1,0,0,0,9431, - 1167,1,0,0,0,9432,9434,5,415,0,0,9433,9432,1,0,0,0,9433,9434,1,0, - 0,0,9434,9435,1,0,0,0,9435,9444,3,1172,586,0,9436,9445,3,1170,585, - 0,9437,9442,5,35,0,0,9438,9439,5,4,0,0,9439,9440,3,1456,728,0,9440, - 9441,5,5,0,0,9441,9443,1,0,0,0,9442,9438,1,0,0,0,9442,9443,1,0,0, - 0,9443,9445,1,0,0,0,9444,9436,1,0,0,0,9444,9437,1,0,0,0,9445,9451, - 1,0,0,0,9446,9447,3,1412,706,0,9447,9448,5,27,0,0,9448,9449,7,61, - 0,0,9449,9451,1,0,0,0,9450,9433,1,0,0,0,9450,9446,1,0,0,0,9451,1169, - 1,0,0,0,9452,9454,5,4,0,0,9453,9455,3,1456,728,0,9454,9453,1,0,0, - 0,9454,9455,1,0,0,0,9455,9456,1,0,0,0,9456,9458,5,5,0,0,9457,9452, - 1,0,0,0,9458,9461,1,0,0,0,9459,9457,1,0,0,0,9459,9460,1,0,0,0,9460, - 1171,1,0,0,0,9461,9459,1,0,0,0,9462,9478,3,1176,588,0,9463,9478, - 3,1180,590,0,9464,9478,3,1184,592,0,9465,9478,3,1192,596,0,9466, - 9478,3,1200,600,0,9467,9475,3,1202,601,0,9468,9470,3,1206,603,0, - 9469,9468,1,0,0,0,9469,9470,1,0,0,0,9470,9476,1,0,0,0,9471,9472, - 5,2,0,0,9472,9473,3,1456,728,0,9473,9474,5,3,0,0,9474,9476,1,0,0, - 0,9475,9469,1,0,0,0,9475,9471,1,0,0,0,9476,9478,1,0,0,0,9477,9462, - 1,0,0,0,9477,9463,1,0,0,0,9477,9464,1,0,0,0,9477,9465,1,0,0,0,9477, - 9466,1,0,0,0,9477,9467,1,0,0,0,9478,1173,1,0,0,0,9479,9484,3,1180, - 590,0,9480,9484,3,1186,593,0,9481,9484,3,1194,597,0,9482,9484,3, - 1200,600,0,9483,9479,1,0,0,0,9483,9480,1,0,0,0,9483,9481,1,0,0,0, - 9483,9482,1,0,0,0,9484,1175,1,0,0,0,9485,9487,3,1482,741,0,9486, - 9488,3,560,280,0,9487,9486,1,0,0,0,9487,9488,1,0,0,0,9488,9490,1, - 0,0,0,9489,9491,3,1178,589,0,9490,9489,1,0,0,0,9490,9491,1,0,0,0, - 9491,1177,1,0,0,0,9492,9493,5,2,0,0,9493,9494,3,1328,664,0,9494, - 9495,5,3,0,0,9495,1179,1,0,0,0,9496,9521,5,401,0,0,9497,9521,5,402, - 0,0,9498,9521,5,416,0,0,9499,9521,5,388,0,0,9500,9521,5,413,0,0, - 9501,9503,5,398,0,0,9502,9504,3,1182,591,0,9503,9502,1,0,0,0,9503, - 9504,1,0,0,0,9504,9521,1,0,0,0,9505,9506,5,190,0,0,9506,9521,5,412, - 0,0,9507,9509,5,395,0,0,9508,9510,3,1178,589,0,9509,9508,1,0,0,0, - 9509,9510,1,0,0,0,9510,9521,1,0,0,0,9511,9513,5,394,0,0,9512,9514, - 3,1178,589,0,9513,9512,1,0,0,0,9513,9514,1,0,0,0,9514,9521,1,0,0, - 0,9515,9517,5,409,0,0,9516,9518,3,1178,589,0,9517,9516,1,0,0,0,9517, - 9518,1,0,0,0,9518,9521,1,0,0,0,9519,9521,5,390,0,0,9520,9496,1,0, - 0,0,9520,9497,1,0,0,0,9520,9498,1,0,0,0,9520,9499,1,0,0,0,9520,9500, - 1,0,0,0,9520,9501,1,0,0,0,9520,9505,1,0,0,0,9520,9507,1,0,0,0,9520, - 9511,1,0,0,0,9520,9515,1,0,0,0,9520,9519,1,0,0,0,9521,1181,1,0,0, - 0,9522,9523,5,2,0,0,9523,9524,3,1456,728,0,9524,9525,5,3,0,0,9525, - 1183,1,0,0,0,9526,9529,3,1188,594,0,9527,9529,3,1190,595,0,9528, - 9526,1,0,0,0,9528,9527,1,0,0,0,9529,1185,1,0,0,0,9530,9533,3,1188, - 594,0,9531,9533,3,1190,595,0,9532,9530,1,0,0,0,9532,9531,1,0,0,0, - 9533,1187,1,0,0,0,9534,9536,5,389,0,0,9535,9537,3,1198,599,0,9536, - 9535,1,0,0,0,9536,9537,1,0,0,0,9537,9538,1,0,0,0,9538,9539,5,2,0, - 0,9539,9540,3,1328,664,0,9540,9541,5,3,0,0,9541,1189,1,0,0,0,9542, - 9544,5,389,0,0,9543,9545,3,1198,599,0,9544,9543,1,0,0,0,9544,9545, - 1,0,0,0,9545,1191,1,0,0,0,9546,9551,3,1196,598,0,9547,9548,5,2,0, - 0,9548,9549,3,1456,728,0,9549,9550,5,3,0,0,9550,9552,1,0,0,0,9551, - 9547,1,0,0,0,9551,9552,1,0,0,0,9552,1193,1,0,0,0,9553,9558,3,1196, - 598,0,9554,9555,5,2,0,0,9555,9556,3,1456,728,0,9556,9557,5,3,0,0, - 9557,9559,1,0,0,0,9558,9554,1,0,0,0,9558,9559,1,0,0,0,9559,1195, - 1,0,0,0,9560,9562,7,62,0,0,9561,9563,3,1198,599,0,9562,9561,1,0, - 0,0,9562,9563,1,0,0,0,9563,9571,1,0,0,0,9564,9571,5,423,0,0,9565, - 9566,5,405,0,0,9566,9568,7,63,0,0,9567,9569,3,1198,599,0,9568,9567, - 1,0,0,0,9568,9569,1,0,0,0,9569,9571,1,0,0,0,9570,9560,1,0,0,0,9570, - 9564,1,0,0,0,9570,9565,1,0,0,0,9571,1197,1,0,0,0,9572,9573,5,374, - 0,0,9573,1199,1,0,0,0,9574,9579,7,64,0,0,9575,9576,5,2,0,0,9576, - 9577,3,1456,728,0,9577,9578,5,3,0,0,9578,9580,1,0,0,0,9579,9575, - 1,0,0,0,9579,9580,1,0,0,0,9580,9582,1,0,0,0,9581,9583,3,1204,602, - 0,9582,9581,1,0,0,0,9582,9583,1,0,0,0,9583,1201,1,0,0,0,9584,9585, - 5,403,0,0,9585,1203,1,0,0,0,9586,9587,5,105,0,0,9587,9588,5,418, - 0,0,9588,9593,5,386,0,0,9589,9590,5,379,0,0,9590,9591,5,418,0,0, - 9591,9593,5,386,0,0,9592,9586,1,0,0,0,9592,9589,1,0,0,0,9593,1205, - 1,0,0,0,9594,9620,5,384,0,0,9595,9620,5,264,0,0,9596,9620,5,176, - 0,0,9597,9620,5,218,0,0,9598,9620,5,261,0,0,9599,9620,3,1208,604, - 0,9600,9601,5,384,0,0,9601,9602,5,94,0,0,9602,9620,5,264,0,0,9603, - 9604,5,176,0,0,9604,9608,5,94,0,0,9605,9609,5,218,0,0,9606,9609, - 5,261,0,0,9607,9609,3,1208,604,0,9608,9605,1,0,0,0,9608,9606,1,0, - 0,0,9608,9607,1,0,0,0,9609,9620,1,0,0,0,9610,9611,5,218,0,0,9611, - 9614,5,94,0,0,9612,9615,5,261,0,0,9613,9615,3,1208,604,0,9614,9612, - 1,0,0,0,9614,9613,1,0,0,0,9615,9620,1,0,0,0,9616,9617,5,261,0,0, - 9617,9618,5,94,0,0,9618,9620,3,1208,604,0,9619,9594,1,0,0,0,9619, - 9595,1,0,0,0,9619,9596,1,0,0,0,9619,9597,1,0,0,0,9619,9598,1,0,0, - 0,9619,9599,1,0,0,0,9619,9600,1,0,0,0,9619,9603,1,0,0,0,9619,9610, - 1,0,0,0,9619,9616,1,0,0,0,9620,1207,1,0,0,0,9621,9626,5,326,0,0, - 9622,9623,5,2,0,0,9623,9624,3,1456,728,0,9624,9625,5,3,0,0,9625, - 9627,1,0,0,0,9626,9622,1,0,0,0,9626,9627,1,0,0,0,9627,1209,1,0,0, - 0,9628,9629,5,197,0,0,9629,9630,3,1212,606,0,9630,1211,1,0,0,0,9631, - 9632,3,1214,607,0,9632,1213,1,0,0,0,9633,9635,3,1216,608,0,9634, - 9636,3,1322,661,0,9635,9634,1,0,0,0,9635,9636,1,0,0,0,9636,1215, - 1,0,0,0,9637,9642,3,1218,609,0,9638,9639,7,65,0,0,9639,9641,3,1218, - 609,0,9640,9638,1,0,0,0,9641,9644,1,0,0,0,9642,9640,1,0,0,0,9642, - 9643,1,0,0,0,9643,1217,1,0,0,0,9644,9642,1,0,0,0,9645,9650,3,1220, - 610,0,9646,9647,5,82,0,0,9647,9649,3,1220,610,0,9648,9646,1,0,0, - 0,9649,9652,1,0,0,0,9650,9648,1,0,0,0,9650,9651,1,0,0,0,9651,1219, - 1,0,0,0,9652,9650,1,0,0,0,9653,9658,3,1222,611,0,9654,9655,5,33, - 0,0,9655,9657,3,1222,611,0,9656,9654,1,0,0,0,9657,9660,1,0,0,0,9658, - 9656,1,0,0,0,9658,9659,1,0,0,0,9659,1221,1,0,0,0,9660,9658,1,0,0, - 0,9661,9667,3,1224,612,0,9662,9664,5,77,0,0,9663,9662,1,0,0,0,9663, - 9664,1,0,0,0,9664,9665,1,0,0,0,9665,9666,5,68,0,0,9666,9668,3,1362, - 681,0,9667,9663,1,0,0,0,9667,9668,1,0,0,0,9668,1223,1,0,0,0,9669, - 9671,5,77,0,0,9670,9669,1,0,0,0,9670,9671,1,0,0,0,9671,9672,1,0, - 0,0,9672,9673,3,1226,613,0,9673,1225,1,0,0,0,9674,9676,3,1228,614, - 0,9675,9677,7,66,0,0,9676,9675,1,0,0,0,9676,9677,1,0,0,0,9677,1227, - 1,0,0,0,9678,9702,3,1230,615,0,9679,9681,5,116,0,0,9680,9682,5,77, - 0,0,9681,9680,1,0,0,0,9681,9682,1,0,0,0,9682,9700,1,0,0,0,9683,9701, - 5,78,0,0,9684,9701,5,96,0,0,9685,9701,5,60,0,0,9686,9701,5,365,0, - 0,9687,9688,5,56,0,0,9688,9689,5,64,0,0,9689,9701,3,1212,606,0,9690, - 9691,5,275,0,0,9691,9692,5,2,0,0,9692,9693,3,1342,671,0,9693,9694, - 5,3,0,0,9694,9701,1,0,0,0,9695,9701,5,188,0,0,9696,9698,3,1352,676, - 0,9697,9696,1,0,0,0,9697,9698,1,0,0,0,9698,9699,1,0,0,0,9699,9701, - 5,478,0,0,9700,9683,1,0,0,0,9700,9684,1,0,0,0,9700,9685,1,0,0,0, - 9700,9686,1,0,0,0,9700,9687,1,0,0,0,9700,9690,1,0,0,0,9700,9695, - 1,0,0,0,9700,9697,1,0,0,0,9701,9703,1,0,0,0,9702,9679,1,0,0,0,9702, - 9703,1,0,0,0,9703,1229,1,0,0,0,9704,9716,3,1232,616,0,9705,9706, - 7,67,0,0,9706,9717,3,1232,616,0,9707,9708,3,1326,663,0,9708,9714, - 3,1316,658,0,9709,9715,3,1002,501,0,9710,9711,5,2,0,0,9711,9712, - 3,1212,606,0,9712,9713,5,3,0,0,9713,9715,1,0,0,0,9714,9709,1,0,0, - 0,9714,9710,1,0,0,0,9715,9717,1,0,0,0,9716,9705,1,0,0,0,9716,9707, - 1,0,0,0,9716,9717,1,0,0,0,9717,1231,1,0,0,0,9718,9736,3,1234,617, - 0,9719,9721,5,77,0,0,9720,9719,1,0,0,0,9720,9721,1,0,0,0,9721,9730, - 1,0,0,0,9722,9731,5,120,0,0,9723,9731,5,114,0,0,9724,9725,5,127, - 0,0,9725,9731,5,94,0,0,9726,9728,5,387,0,0,9727,9729,5,91,0,0,9728, - 9727,1,0,0,0,9728,9729,1,0,0,0,9729,9731,1,0,0,0,9730,9722,1,0,0, - 0,9730,9723,1,0,0,0,9730,9724,1,0,0,0,9730,9726,1,0,0,0,9731,9732, - 1,0,0,0,9732,9734,3,1234,617,0,9733,9735,3,1210,605,0,9734,9733, - 1,0,0,0,9734,9735,1,0,0,0,9735,9737,1,0,0,0,9736,9720,1,0,0,0,9736, - 9737,1,0,0,0,9737,1233,1,0,0,0,9738,9744,3,1236,618,0,9739,9740, - 3,1322,661,0,9740,9741,3,1236,618,0,9741,9743,1,0,0,0,9742,9739, - 1,0,0,0,9743,9746,1,0,0,0,9744,9742,1,0,0,0,9744,9745,1,0,0,0,9745, - 1235,1,0,0,0,9746,9744,1,0,0,0,9747,9749,3,1322,661,0,9748,9747, - 1,0,0,0,9748,9749,1,0,0,0,9749,9750,1,0,0,0,9750,9751,3,1238,619, - 0,9751,1237,1,0,0,0,9752,9757,3,1240,620,0,9753,9754,7,68,0,0,9754, - 9756,3,1240,620,0,9755,9753,1,0,0,0,9756,9759,1,0,0,0,9757,9755, - 1,0,0,0,9757,9758,1,0,0,0,9758,1239,1,0,0,0,9759,9757,1,0,0,0,9760, - 9765,3,1242,621,0,9761,9762,7,69,0,0,9762,9764,3,1242,621,0,9763, - 9761,1,0,0,0,9764,9767,1,0,0,0,9765,9763,1,0,0,0,9765,9766,1,0,0, - 0,9766,1241,1,0,0,0,9767,9765,1,0,0,0,9768,9771,3,1244,622,0,9769, - 9770,5,15,0,0,9770,9772,3,1212,606,0,9771,9769,1,0,0,0,9771,9772, - 1,0,0,0,9772,1243,1,0,0,0,9773,9775,7,68,0,0,9774,9773,1,0,0,0,9774, - 9775,1,0,0,0,9775,9776,1,0,0,0,9776,9777,3,1246,623,0,9777,1245, - 1,0,0,0,9778,9783,3,1248,624,0,9779,9780,5,142,0,0,9780,9781,5,418, - 0,0,9781,9782,5,386,0,0,9782,9784,3,1212,606,0,9783,9779,1,0,0,0, - 9783,9784,1,0,0,0,9784,1247,1,0,0,0,9785,9788,3,1250,625,0,9786, - 9787,5,43,0,0,9787,9789,3,558,279,0,9788,9786,1,0,0,0,9788,9789, - 1,0,0,0,9789,1249,1,0,0,0,9790,9795,3,1254,627,0,9791,9792,5,26, - 0,0,9792,9794,3,1168,584,0,9793,9791,1,0,0,0,9794,9797,1,0,0,0,9795, - 9793,1,0,0,0,9795,9796,1,0,0,0,9796,1251,1,0,0,0,9797,9795,1,0,0, - 0,9798,9799,6,626,-1,0,9799,9806,3,1254,627,0,9800,9801,7,68,0,0, - 9801,9806,3,1252,626,9,9802,9803,3,1322,661,0,9803,9804,3,1252,626, - 3,9804,9806,1,0,0,0,9805,9798,1,0,0,0,9805,9800,1,0,0,0,9805,9802, - 1,0,0,0,9806,9846,1,0,0,0,9807,9808,10,8,0,0,9808,9809,5,15,0,0, - 9809,9845,3,1252,626,9,9810,9811,10,7,0,0,9811,9812,7,69,0,0,9812, - 9845,3,1252,626,8,9813,9814,10,6,0,0,9814,9815,7,68,0,0,9815,9845, - 3,1252,626,7,9816,9817,10,5,0,0,9817,9818,3,1322,661,0,9818,9819, - 3,1252,626,6,9819,9845,1,0,0,0,9820,9821,10,4,0,0,9821,9822,7,67, - 0,0,9822,9845,3,1252,626,5,9823,9824,10,10,0,0,9824,9825,5,26,0, - 0,9825,9845,3,1168,584,0,9826,9827,10,2,0,0,9827,9845,3,1322,661, - 0,9828,9829,10,1,0,0,9829,9831,5,116,0,0,9830,9832,5,77,0,0,9831, - 9830,1,0,0,0,9831,9832,1,0,0,0,9832,9842,1,0,0,0,9833,9834,5,56, - 0,0,9834,9835,5,64,0,0,9835,9843,3,1252,626,0,9836,9837,5,275,0, - 0,9837,9838,5,2,0,0,9838,9839,3,1342,671,0,9839,9840,5,3,0,0,9840, - 9843,1,0,0,0,9841,9843,5,188,0,0,9842,9833,1,0,0,0,9842,9836,1,0, - 0,0,9842,9841,1,0,0,0,9843,9845,1,0,0,0,9844,9807,1,0,0,0,9844,9810, - 1,0,0,0,9844,9813,1,0,0,0,9844,9816,1,0,0,0,9844,9820,1,0,0,0,9844, - 9823,1,0,0,0,9844,9826,1,0,0,0,9844,9828,1,0,0,0,9845,9848,1,0,0, - 0,9846,9844,1,0,0,0,9846,9847,1,0,0,0,9847,1253,1,0,0,0,9848,9846, - 1,0,0,0,9849,9850,5,396,0,0,9850,9886,3,1002,501,0,9851,9854,5,35, - 0,0,9852,9855,3,1002,501,0,9853,9855,3,1344,672,0,9854,9852,1,0, - 0,0,9854,9853,1,0,0,0,9855,9886,1,0,0,0,9856,9857,5,28,0,0,9857, - 9886,3,1382,691,0,9858,9859,5,470,0,0,9859,9860,5,2,0,0,9860,9861, - 3,1328,664,0,9861,9862,5,3,0,0,9862,9886,1,0,0,0,9863,9864,5,98, - 0,0,9864,9886,3,1002,501,0,9865,9886,3,1448,724,0,9866,9886,3,1256, - 628,0,9867,9868,5,2,0,0,9868,9869,3,1212,606,0,9869,9870,5,3,0,0, - 9870,9871,3,1382,691,0,9871,9886,1,0,0,0,9872,9886,3,1364,682,0, - 9873,9886,3,1260,630,0,9874,9876,3,1002,501,0,9875,9877,3,1380,690, - 0,9876,9875,1,0,0,0,9876,9877,1,0,0,0,9877,9886,1,0,0,0,9878,9886, - 3,1312,656,0,9879,9886,3,1314,657,0,9880,9881,3,1310,655,0,9881, - 9882,5,125,0,0,9882,9883,3,1310,655,0,9883,9886,1,0,0,0,9884,9886, - 3,1374,687,0,9885,9849,1,0,0,0,9885,9851,1,0,0,0,9885,9856,1,0,0, - 0,9885,9858,1,0,0,0,9885,9863,1,0,0,0,9885,9865,1,0,0,0,9885,9866, - 1,0,0,0,9885,9867,1,0,0,0,9885,9872,1,0,0,0,9885,9873,1,0,0,0,9885, - 9874,1,0,0,0,9885,9878,1,0,0,0,9885,9879,1,0,0,0,9885,9880,1,0,0, - 0,9885,9884,1,0,0,0,9886,1255,1,0,0,0,9887,9888,5,574,0,0,9888,1257, - 1,0,0,0,9889,9915,3,1444,722,0,9890,9912,5,2,0,0,9891,9895,3,1338, - 669,0,9892,9893,5,6,0,0,9893,9894,5,101,0,0,9894,9896,3,1340,670, - 0,9895,9892,1,0,0,0,9895,9896,1,0,0,0,9896,9898,1,0,0,0,9897,9899, - 3,1042,521,0,9898,9897,1,0,0,0,9898,9899,1,0,0,0,9899,9913,1,0,0, - 0,9900,9901,5,101,0,0,9901,9903,3,1340,670,0,9902,9904,3,1042,521, - 0,9903,9902,1,0,0,0,9903,9904,1,0,0,0,9904,9913,1,0,0,0,9905,9906, - 7,57,0,0,9906,9908,3,1338,669,0,9907,9909,3,1042,521,0,9908,9907, - 1,0,0,0,9908,9909,1,0,0,0,9909,9913,1,0,0,0,9910,9913,5,9,0,0,9911, - 9913,1,0,0,0,9912,9891,1,0,0,0,9912,9900,1,0,0,0,9912,9905,1,0,0, - 0,9912,9910,1,0,0,0,9912,9911,1,0,0,0,9913,9914,1,0,0,0,9914,9916, - 5,3,0,0,9915,9890,1,0,0,0,9915,9916,1,0,0,0,9916,1259,1,0,0,0,9917, - 9919,3,1258,629,0,9918,9920,3,1284,642,0,9919,9918,1,0,0,0,9919, - 9920,1,0,0,0,9920,9922,1,0,0,0,9921,9923,3,1286,643,0,9922,9921, - 1,0,0,0,9922,9923,1,0,0,0,9923,9925,1,0,0,0,9924,9926,3,1294,647, - 0,9925,9924,1,0,0,0,9925,9926,1,0,0,0,9926,9929,1,0,0,0,9927,9929, - 3,1264,632,0,9928,9917,1,0,0,0,9928,9927,1,0,0,0,9929,1261,1,0,0, - 0,9930,9933,3,1258,629,0,9931,9933,3,1264,632,0,9932,9930,1,0,0, - 0,9932,9931,1,0,0,0,9933,1263,1,0,0,0,9934,9935,5,108,0,0,9935,9936, - 5,62,0,0,9936,9937,5,2,0,0,9937,9938,3,1212,606,0,9938,9939,5,3, - 0,0,9939,10119,1,0,0,0,9940,10119,5,48,0,0,9941,9946,5,50,0,0,9942, - 9943,5,2,0,0,9943,9944,3,1456,728,0,9944,9945,5,3,0,0,9945,9947, - 1,0,0,0,9946,9942,1,0,0,0,9946,9947,1,0,0,0,9947,10119,1,0,0,0,9948, - 9953,5,51,0,0,9949,9950,5,2,0,0,9950,9951,3,1456,728,0,9951,9952, - 5,3,0,0,9952,9954,1,0,0,0,9953,9949,1,0,0,0,9953,9954,1,0,0,0,9954, - 10119,1,0,0,0,9955,9960,5,75,0,0,9956,9957,5,2,0,0,9957,9958,3,1456, - 728,0,9958,9959,5,3,0,0,9959,9961,1,0,0,0,9960,9956,1,0,0,0,9960, - 9961,1,0,0,0,9961,10119,1,0,0,0,9962,9967,5,76,0,0,9963,9964,5,2, - 0,0,9964,9965,3,1456,728,0,9965,9966,5,3,0,0,9966,9968,1,0,0,0,9967, - 9963,1,0,0,0,9967,9968,1,0,0,0,9968,10119,1,0,0,0,9969,10119,5,49, - 0,0,9970,10119,5,52,0,0,9971,10119,5,89,0,0,9972,10119,5,99,0,0, - 9973,10119,5,47,0,0,9974,10119,5,111,0,0,9975,9976,5,41,0,0,9976, - 9977,5,2,0,0,9977,9978,3,1212,606,0,9978,9979,5,36,0,0,9979,9980, - 3,1168,584,0,9980,9981,5,3,0,0,9981,10119,1,0,0,0,9982,9983,5,397, - 0,0,9983,9985,5,2,0,0,9984,9986,3,1348,674,0,9985,9984,1,0,0,0,9985, - 9986,1,0,0,0,9986,9987,1,0,0,0,9987,10119,5,3,0,0,9988,9989,5,489, - 0,0,9989,9990,5,2,0,0,9990,9993,3,1212,606,0,9991,9992,5,6,0,0,9992, - 9994,3,1352,676,0,9993,9991,1,0,0,0,9993,9994,1,0,0,0,9994,9995, - 1,0,0,0,9995,9996,5,3,0,0,9996,10119,1,0,0,0,9997,9998,5,410,0,0, - 9998,9999,5,2,0,0,9999,10000,3,1354,677,0,10000,10001,5,3,0,0,10001, - 10119,1,0,0,0,10002,10003,5,411,0,0,10003,10005,5,2,0,0,10004,10006, - 3,1356,678,0,10005,10004,1,0,0,0,10005,10006,1,0,0,0,10006,10007, - 1,0,0,0,10007,10119,5,3,0,0,10008,10009,5,417,0,0,10009,10011,5, - 2,0,0,10010,10012,3,1358,679,0,10011,10010,1,0,0,0,10011,10012,1, - 0,0,0,10012,10013,1,0,0,0,10013,10119,5,3,0,0,10014,10015,5,420, - 0,0,10015,10016,5,2,0,0,10016,10017,3,1212,606,0,10017,10018,5,36, - 0,0,10018,10019,3,1168,584,0,10019,10020,5,3,0,0,10020,10119,1,0, - 0,0,10021,10022,5,421,0,0,10022,10024,5,2,0,0,10023,10025,7,70,0, - 0,10024,10023,1,0,0,0,10024,10025,1,0,0,0,10025,10026,1,0,0,0,10026, - 10027,3,1360,680,0,10027,10028,5,3,0,0,10028,10119,1,0,0,0,10029, - 10030,5,408,0,0,10030,10031,5,2,0,0,10031,10032,3,1212,606,0,10032, - 10033,5,6,0,0,10033,10034,3,1212,606,0,10034,10035,5,3,0,0,10035, - 10119,1,0,0,0,10036,10037,5,393,0,0,10037,10038,5,2,0,0,10038,10039, - 3,1328,664,0,10039,10040,5,3,0,0,10040,10119,1,0,0,0,10041,10042, - 5,399,0,0,10042,10043,5,2,0,0,10043,10044,3,1328,664,0,10044,10045, - 5,3,0,0,10045,10119,1,0,0,0,10046,10047,5,404,0,0,10047,10048,5, - 2,0,0,10048,10049,3,1328,664,0,10049,10050,5,3,0,0,10050,10119,1, - 0,0,0,10051,10052,5,425,0,0,10052,10053,5,2,0,0,10053,10054,3,1328, - 664,0,10054,10055,5,3,0,0,10055,10119,1,0,0,0,10056,10057,5,426, - 0,0,10057,10058,5,2,0,0,10058,10059,5,266,0,0,10059,10065,3,1490, - 745,0,10060,10063,5,6,0,0,10061,10064,3,1270,635,0,10062,10064,3, - 1328,664,0,10063,10061,1,0,0,0,10063,10062,1,0,0,0,10064,10066,1, - 0,0,0,10065,10060,1,0,0,0,10065,10066,1,0,0,0,10066,10067,1,0,0, - 0,10067,10068,5,3,0,0,10068,10119,1,0,0,0,10069,10070,5,427,0,0, - 10070,10071,5,2,0,0,10071,10072,3,1254,627,0,10072,10073,3,1280, - 640,0,10073,10074,5,3,0,0,10074,10119,1,0,0,0,10075,10076,5,428, - 0,0,10076,10077,5,2,0,0,10077,10078,3,1272,636,0,10078,10079,5,3, - 0,0,10079,10119,1,0,0,0,10080,10081,5,429,0,0,10081,10082,5,2,0, - 0,10082,10083,3,1276,638,0,10083,10085,3,1212,606,0,10084,10086, - 3,1278,639,0,10085,10084,1,0,0,0,10085,10086,1,0,0,0,10086,10087, - 1,0,0,0,10087,10088,5,3,0,0,10088,10119,1,0,0,0,10089,10090,5,430, - 0,0,10090,10091,5,2,0,0,10091,10092,5,266,0,0,10092,10095,3,1490, - 745,0,10093,10094,5,6,0,0,10094,10096,3,1212,606,0,10095,10093,1, - 0,0,0,10095,10096,1,0,0,0,10096,10097,1,0,0,0,10097,10098,5,3,0, - 0,10098,10119,1,0,0,0,10099,10100,5,431,0,0,10100,10101,5,2,0,0, - 10101,10102,5,383,0,0,10102,10103,3,1212,606,0,10103,10104,5,6,0, - 0,10104,10106,3,1266,633,0,10105,10107,3,1268,634,0,10106,10105, - 1,0,0,0,10106,10107,1,0,0,0,10107,10108,1,0,0,0,10108,10109,5,3, - 0,0,10109,10119,1,0,0,0,10110,10111,5,432,0,0,10111,10112,5,2,0, - 0,10112,10113,3,1276,638,0,10113,10114,3,1212,606,0,10114,10115, - 5,36,0,0,10115,10116,3,1172,586,0,10116,10117,5,3,0,0,10117,10119, - 1,0,0,0,10118,9934,1,0,0,0,10118,9940,1,0,0,0,10118,9941,1,0,0,0, - 10118,9948,1,0,0,0,10118,9955,1,0,0,0,10118,9962,1,0,0,0,10118,9969, - 1,0,0,0,10118,9970,1,0,0,0,10118,9971,1,0,0,0,10118,9972,1,0,0,0, - 10118,9973,1,0,0,0,10118,9974,1,0,0,0,10118,9975,1,0,0,0,10118,9982, - 1,0,0,0,10118,9988,1,0,0,0,10118,9997,1,0,0,0,10118,10002,1,0,0, - 0,10118,10008,1,0,0,0,10118,10014,1,0,0,0,10118,10021,1,0,0,0,10118, - 10029,1,0,0,0,10118,10036,1,0,0,0,10118,10041,1,0,0,0,10118,10046, - 1,0,0,0,10118,10051,1,0,0,0,10118,10056,1,0,0,0,10118,10069,1,0, - 0,0,10118,10075,1,0,0,0,10118,10080,1,0,0,0,10118,10089,1,0,0,0, - 10118,10099,1,0,0,0,10118,10110,1,0,0,0,10119,1265,1,0,0,0,10120, - 10121,5,375,0,0,10121,10126,3,1212,606,0,10122,10123,5,375,0,0,10123, - 10124,5,269,0,0,10124,10126,5,450,0,0,10125,10120,1,0,0,0,10125, - 10122,1,0,0,0,10126,1267,1,0,0,0,10127,10128,5,6,0,0,10128,10129, - 5,339,0,0,10129,10138,5,385,0,0,10130,10131,5,6,0,0,10131,10132, - 5,339,0,0,10132,10138,5,269,0,0,10133,10134,5,6,0,0,10134,10135, - 5,339,0,0,10135,10136,5,269,0,0,10136,10138,5,450,0,0,10137,10127, - 1,0,0,0,10137,10130,1,0,0,0,10137,10133,1,0,0,0,10138,1269,1,0,0, - 0,10139,10140,5,424,0,0,10140,10141,5,2,0,0,10141,10142,3,1272,636, - 0,10142,10143,5,3,0,0,10143,1271,1,0,0,0,10144,10149,3,1274,637, - 0,10145,10146,5,6,0,0,10146,10148,3,1274,637,0,10147,10145,1,0,0, - 0,10148,10151,1,0,0,0,10149,10147,1,0,0,0,10149,10150,1,0,0,0,10150, - 1273,1,0,0,0,10151,10149,1,0,0,0,10152,10155,3,1212,606,0,10153, - 10154,5,36,0,0,10154,10156,3,1490,745,0,10155,10153,1,0,0,0,10155, - 10156,1,0,0,0,10156,1275,1,0,0,0,10157,10158,7,71,0,0,10158,1277, - 1,0,0,0,10159,10160,5,292,0,0,10160,10164,5,378,0,0,10161,10162, - 5,347,0,0,10162,10164,5,378,0,0,10163,10159,1,0,0,0,10163,10161, - 1,0,0,0,10164,1279,1,0,0,0,10165,10166,5,286,0,0,10166,10181,3,1254, - 627,0,10167,10168,5,286,0,0,10168,10169,3,1254,627,0,10169,10170, - 3,1282,641,0,10170,10181,1,0,0,0,10171,10172,5,286,0,0,10172,10173, - 3,1282,641,0,10173,10174,3,1254,627,0,10174,10181,1,0,0,0,10175, - 10176,5,286,0,0,10176,10177,3,1282,641,0,10177,10178,3,1254,627, - 0,10178,10179,3,1282,641,0,10179,10181,1,0,0,0,10180,10165,1,0,0, - 0,10180,10167,1,0,0,0,10180,10171,1,0,0,0,10180,10175,1,0,0,0,10181, - 1281,1,0,0,0,10182,10183,5,147,0,0,10183,10184,7,72,0,0,10184,1283, - 1,0,0,0,10185,10186,5,479,0,0,10186,10187,5,66,0,0,10187,10188,5, - 2,0,0,10188,10189,3,1044,522,0,10189,10190,5,3,0,0,10190,1285,1, - 0,0,0,10191,10192,5,480,0,0,10192,10193,5,2,0,0,10193,10194,5,103, - 0,0,10194,10195,3,1212,606,0,10195,10196,5,3,0,0,10196,1287,1,0, - 0,0,10197,10198,5,104,0,0,10198,10199,3,1290,645,0,10199,1289,1, - 0,0,0,10200,10205,3,1292,646,0,10201,10202,5,6,0,0,10202,10204,3, - 1292,646,0,10203,10201,1,0,0,0,10204,10207,1,0,0,0,10205,10203,1, - 0,0,0,10205,10206,1,0,0,0,10206,1291,1,0,0,0,10207,10205,1,0,0,0, - 10208,10209,3,1474,737,0,10209,10210,5,36,0,0,10210,10211,3,1296, - 648,0,10211,1293,1,0,0,0,10212,10215,5,124,0,0,10213,10216,3,1296, - 648,0,10214,10216,3,1474,737,0,10215,10213,1,0,0,0,10215,10214,1, - 0,0,0,10216,1295,1,0,0,0,10217,10219,5,2,0,0,10218,10220,3,1298, - 649,0,10219,10218,1,0,0,0,10219,10220,1,0,0,0,10220,10222,1,0,0, - 0,10221,10223,3,1300,650,0,10222,10221,1,0,0,0,10222,10223,1,0,0, - 0,10223,10225,1,0,0,0,10224,10226,3,1042,521,0,10225,10224,1,0,0, - 0,10225,10226,1,0,0,0,10226,10228,1,0,0,0,10227,10229,3,1302,651, - 0,10228,10227,1,0,0,0,10228,10229,1,0,0,0,10229,10230,1,0,0,0,10230, - 10231,5,3,0,0,10231,1297,1,0,0,0,10232,10233,3,1474,737,0,10233, - 1299,1,0,0,0,10234,10235,5,285,0,0,10235,10236,5,147,0,0,10236,10237, - 3,1328,664,0,10237,1301,1,0,0,0,10238,10239,5,299,0,0,10239,10241, - 3,1304,652,0,10240,10242,3,1308,654,0,10241,10240,1,0,0,0,10241, - 10242,1,0,0,0,10242,10254,1,0,0,0,10243,10244,5,320,0,0,10244,10246, - 3,1304,652,0,10245,10247,3,1308,654,0,10246,10245,1,0,0,0,10246, - 10247,1,0,0,0,10247,10254,1,0,0,0,10248,10249,5,481,0,0,10249,10251, - 3,1304,652,0,10250,10252,3,1308,654,0,10251,10250,1,0,0,0,10251, - 10252,1,0,0,0,10252,10254,1,0,0,0,10253,10238,1,0,0,0,10253,10243, - 1,0,0,0,10253,10248,1,0,0,0,10254,1303,1,0,0,0,10255,10262,3,1306, - 653,0,10256,10257,5,387,0,0,10257,10258,3,1306,653,0,10258,10259, - 5,33,0,0,10259,10260,3,1306,653,0,10260,10262,1,0,0,0,10261,10255, - 1,0,0,0,10261,10256,1,0,0,0,10262,1305,1,0,0,0,10263,10264,5,362, - 0,0,10264,10271,7,73,0,0,10265,10266,5,434,0,0,10266,10271,5,414, - 0,0,10267,10268,3,1212,606,0,10268,10269,7,73,0,0,10269,10271,1, - 0,0,0,10270,10263,1,0,0,0,10270,10265,1,0,0,0,10270,10267,1,0,0, - 0,10271,1307,1,0,0,0,10272,10279,5,199,0,0,10273,10274,5,434,0,0, - 10274,10280,5,414,0,0,10275,10280,5,66,0,0,10276,10280,5,467,0,0, - 10277,10278,5,269,0,0,10278,10280,5,482,0,0,10279,10273,1,0,0,0, - 10279,10275,1,0,0,0,10279,10276,1,0,0,0,10279,10277,1,0,0,0,10280, - 1309,1,0,0,0,10281,10282,5,414,0,0,10282,10284,5,2,0,0,10283,10285, - 3,1328,664,0,10284,10283,1,0,0,0,10284,10285,1,0,0,0,10285,10286, - 1,0,0,0,10286,10294,5,3,0,0,10287,10288,5,2,0,0,10288,10289,3,1328, - 664,0,10289,10290,5,6,0,0,10290,10291,3,1212,606,0,10291,10292,5, - 3,0,0,10292,10294,1,0,0,0,10293,10281,1,0,0,0,10293,10287,1,0,0, - 0,10294,1311,1,0,0,0,10295,10296,5,414,0,0,10296,10298,5,2,0,0,10297, - 10299,3,1328,664,0,10298,10297,1,0,0,0,10298,10299,1,0,0,0,10299, - 10300,1,0,0,0,10300,10301,5,3,0,0,10301,1313,1,0,0,0,10302,10303, - 5,2,0,0,10303,10304,3,1212,606,0,10304,10305,5,6,0,0,10305,10306, - 3,1328,664,0,10306,10307,5,3,0,0,10307,1315,1,0,0,0,10308,10309, - 7,74,0,0,10309,1317,1,0,0,0,10310,10313,5,29,0,0,10311,10313,3,1320, - 660,0,10312,10310,1,0,0,0,10312,10311,1,0,0,0,10313,1319,1,0,0,0, - 10314,10315,7,75,0,0,10315,1321,1,0,0,0,10316,10323,5,29,0,0,10317, - 10318,5,278,0,0,10318,10319,5,2,0,0,10319,10320,3,732,366,0,10320, - 10321,5,3,0,0,10321,10323,1,0,0,0,10322,10316,1,0,0,0,10322,10317, - 1,0,0,0,10323,1323,1,0,0,0,10324,10331,3,1318,659,0,10325,10326, - 5,278,0,0,10326,10327,5,2,0,0,10327,10328,3,732,366,0,10328,10329, - 5,3,0,0,10329,10331,1,0,0,0,10330,10324,1,0,0,0,10330,10325,1,0, - 0,0,10331,1325,1,0,0,0,10332,10345,3,1318,659,0,10333,10334,5,278, - 0,0,10334,10335,5,2,0,0,10335,10336,3,732,366,0,10336,10337,5,3, - 0,0,10337,10345,1,0,0,0,10338,10345,5,120,0,0,10339,10340,5,77,0, - 0,10340,10345,5,120,0,0,10341,10345,5,114,0,0,10342,10343,5,77,0, - 0,10343,10345,5,114,0,0,10344,10332,1,0,0,0,10344,10333,1,0,0,0, - 10344,10338,1,0,0,0,10344,10339,1,0,0,0,10344,10341,1,0,0,0,10344, - 10342,1,0,0,0,10345,1327,1,0,0,0,10346,10351,3,1212,606,0,10347, - 10348,5,6,0,0,10348,10350,3,1212,606,0,10349,10347,1,0,0,0,10350, - 10353,1,0,0,0,10351,10349,1,0,0,0,10351,10352,1,0,0,0,10352,1329, - 1,0,0,0,10353,10351,1,0,0,0,10354,10359,3,1336,668,0,10355,10356, - 5,6,0,0,10356,10358,3,1336,668,0,10357,10355,1,0,0,0,10358,10361, - 1,0,0,0,10359,10357,1,0,0,0,10359,10360,1,0,0,0,10360,1331,1,0,0, - 0,10361,10359,1,0,0,0,10362,10367,3,1334,667,0,10363,10364,5,6,0, - 0,10364,10366,3,1334,667,0,10365,10363,1,0,0,0,10366,10369,1,0,0, - 0,10367,10365,1,0,0,0,10367,10368,1,0,0,0,10368,1333,1,0,0,0,10369, - 10367,1,0,0,0,10370,10371,5,2,0,0,10371,10372,3,1212,606,0,10372, - 10373,5,3,0,0,10373,10376,1,0,0,0,10374,10376,3,1432,716,0,10375, - 10370,1,0,0,0,10375,10374,1,0,0,0,10376,1335,1,0,0,0,10377,10380, - 3,1212,606,0,10378,10380,3,1432,716,0,10379,10377,1,0,0,0,10379, - 10378,1,0,0,0,10380,1337,1,0,0,0,10381,10386,3,1340,670,0,10382, - 10383,5,6,0,0,10383,10385,3,1340,670,0,10384,10382,1,0,0,0,10385, - 10388,1,0,0,0,10386,10384,1,0,0,0,10386,10387,1,0,0,0,10387,1339, - 1,0,0,0,10388,10386,1,0,0,0,10389,10395,3,1212,606,0,10390,10391, - 3,684,342,0,10391,10392,7,76,0,0,10392,10393,3,1212,606,0,10393, - 10395,1,0,0,0,10394,10389,1,0,0,0,10394,10390,1,0,0,0,10395,1341, - 1,0,0,0,10396,10401,3,1168,584,0,10397,10398,5,6,0,0,10398,10400, - 3,1168,584,0,10399,10397,1,0,0,0,10400,10403,1,0,0,0,10401,10399, - 1,0,0,0,10401,10402,1,0,0,0,10402,1343,1,0,0,0,10403,10401,1,0,0, - 0,10404,10407,5,4,0,0,10405,10408,3,1328,664,0,10406,10408,3,1346, - 673,0,10407,10405,1,0,0,0,10407,10406,1,0,0,0,10407,10408,1,0,0, - 0,10408,10409,1,0,0,0,10409,10410,5,5,0,0,10410,1345,1,0,0,0,10411, - 10416,3,1344,672,0,10412,10413,5,6,0,0,10413,10415,3,1344,672,0, - 10414,10412,1,0,0,0,10415,10418,1,0,0,0,10416,10414,1,0,0,0,10416, - 10417,1,0,0,0,10417,1347,1,0,0,0,10418,10416,1,0,0,0,10419,10420, - 3,1350,675,0,10420,10421,5,64,0,0,10421,10422,3,1212,606,0,10422, - 1349,1,0,0,0,10423,10432,3,1492,746,0,10424,10432,5,384,0,0,10425, - 10432,5,264,0,0,10426,10432,5,176,0,0,10427,10432,5,218,0,0,10428, - 10432,5,261,0,0,10429,10432,5,326,0,0,10430,10432,3,1458,729,0,10431, - 10423,1,0,0,0,10431,10424,1,0,0,0,10431,10425,1,0,0,0,10431,10426, - 1,0,0,0,10431,10427,1,0,0,0,10431,10428,1,0,0,0,10431,10429,1,0, - 0,0,10431,10430,1,0,0,0,10432,1351,1,0,0,0,10433,10434,7,77,0,0, - 10434,1353,1,0,0,0,10435,10436,3,1212,606,0,10436,10437,5,84,0,0, - 10437,10438,3,1212,606,0,10438,10439,5,64,0,0,10439,10442,3,1212, - 606,0,10440,10441,5,62,0,0,10441,10443,3,1212,606,0,10442,10440, - 1,0,0,0,10442,10443,1,0,0,0,10443,1355,1,0,0,0,10444,10445,3,1252, - 626,0,10445,10446,5,68,0,0,10446,10447,3,1252,626,0,10447,1357,1, - 0,0,0,10448,10449,3,1212,606,0,10449,10450,5,64,0,0,10450,10451, - 3,1212,606,0,10451,10452,5,62,0,0,10452,10453,3,1212,606,0,10453, - 10476,1,0,0,0,10454,10455,3,1212,606,0,10455,10456,5,62,0,0,10456, - 10457,3,1212,606,0,10457,10458,5,64,0,0,10458,10459,3,1212,606,0, - 10459,10476,1,0,0,0,10460,10461,3,1212,606,0,10461,10462,5,64,0, - 0,10462,10463,3,1212,606,0,10463,10476,1,0,0,0,10464,10465,3,1212, - 606,0,10465,10466,5,62,0,0,10466,10467,3,1212,606,0,10467,10476, - 1,0,0,0,10468,10469,3,1212,606,0,10469,10470,5,127,0,0,10470,10471, - 3,1212,606,0,10471,10472,5,197,0,0,10472,10473,3,1212,606,0,10473, - 10476,1,0,0,0,10474,10476,3,1328,664,0,10475,10448,1,0,0,0,10475, - 10454,1,0,0,0,10475,10460,1,0,0,0,10475,10464,1,0,0,0,10475,10468, - 1,0,0,0,10475,10474,1,0,0,0,10476,1359,1,0,0,0,10477,10478,3,1212, - 606,0,10478,10479,5,64,0,0,10479,10480,3,1328,664,0,10480,10485, - 1,0,0,0,10481,10482,5,64,0,0,10482,10485,3,1328,664,0,10483,10485, - 3,1328,664,0,10484,10477,1,0,0,0,10484,10481,1,0,0,0,10484,10483, - 1,0,0,0,10485,1361,1,0,0,0,10486,10492,3,1002,501,0,10487,10488, - 5,2,0,0,10488,10489,3,1328,664,0,10489,10490,5,3,0,0,10490,10492, - 1,0,0,0,10491,10486,1,0,0,0,10491,10487,1,0,0,0,10492,1363,1,0,0, - 0,10493,10495,5,40,0,0,10494,10496,3,1372,686,0,10495,10494,1,0, - 0,0,10495,10496,1,0,0,0,10496,10497,1,0,0,0,10497,10499,3,1366,683, - 0,10498,10500,3,1370,685,0,10499,10498,1,0,0,0,10499,10500,1,0,0, - 0,10500,10501,1,0,0,0,10501,10502,5,454,0,0,10502,1365,1,0,0,0,10503, - 10505,3,1368,684,0,10504,10503,1,0,0,0,10505,10506,1,0,0,0,10506, - 10504,1,0,0,0,10506,10507,1,0,0,0,10507,1367,1,0,0,0,10508,10509, - 5,102,0,0,10509,10510,3,1212,606,0,10510,10511,5,93,0,0,10511,10512, - 3,1212,606,0,10512,1369,1,0,0,0,10513,10514,5,58,0,0,10514,10515, - 3,1212,606,0,10515,1371,1,0,0,0,10516,10517,3,1212,606,0,10517,1373, - 1,0,0,0,10518,10520,3,1474,737,0,10519,10521,3,1380,690,0,10520, - 10519,1,0,0,0,10520,10521,1,0,0,0,10521,1375,1,0,0,0,10522,10525, - 5,11,0,0,10523,10526,3,1438,719,0,10524,10526,5,9,0,0,10525,10523, - 1,0,0,0,10525,10524,1,0,0,0,10526,10540,1,0,0,0,10527,10536,5,4, - 0,0,10528,10537,3,1212,606,0,10529,10531,3,1378,689,0,10530,10529, - 1,0,0,0,10530,10531,1,0,0,0,10531,10532,1,0,0,0,10532,10534,5,8, - 0,0,10533,10535,3,1378,689,0,10534,10533,1,0,0,0,10534,10535,1,0, - 0,0,10535,10537,1,0,0,0,10536,10528,1,0,0,0,10536,10530,1,0,0,0, - 10537,10538,1,0,0,0,10538,10540,5,5,0,0,10539,10522,1,0,0,0,10539, - 10527,1,0,0,0,10540,1377,1,0,0,0,10541,10542,3,1212,606,0,10542, - 1379,1,0,0,0,10543,10545,3,1376,688,0,10544,10543,1,0,0,0,10545, - 10546,1,0,0,0,10546,10544,1,0,0,0,10546,10547,1,0,0,0,10547,1381, - 1,0,0,0,10548,10550,3,1376,688,0,10549,10548,1,0,0,0,10550,10553, - 1,0,0,0,10551,10549,1,0,0,0,10551,10552,1,0,0,0,10552,1383,1,0,0, - 0,10553,10551,1,0,0,0,10554,10555,3,1386,693,0,10555,1385,1,0,0, - 0,10556,10561,3,1388,694,0,10557,10558,5,6,0,0,10558,10560,3,1388, - 694,0,10559,10557,1,0,0,0,10560,10563,1,0,0,0,10561,10559,1,0,0, - 0,10561,10562,1,0,0,0,10562,1387,1,0,0,0,10563,10561,1,0,0,0,10564, - 10569,3,1336,668,0,10565,10566,5,36,0,0,10566,10570,3,1490,745,0, - 10567,10570,3,1492,746,0,10568,10570,1,0,0,0,10569,10565,1,0,0,0, - 10569,10567,1,0,0,0,10569,10568,1,0,0,0,10570,10573,1,0,0,0,10571, - 10573,5,9,0,0,10572,10564,1,0,0,0,10572,10571,1,0,0,0,10573,1389, - 1,0,0,0,10574,10579,3,1412,706,0,10575,10576,5,6,0,0,10576,10578, - 3,1412,706,0,10577,10575,1,0,0,0,10578,10581,1,0,0,0,10579,10577, - 1,0,0,0,10579,10580,1,0,0,0,10580,1391,1,0,0,0,10581,10579,1,0,0, - 0,10582,10587,3,1406,703,0,10583,10584,5,6,0,0,10584,10586,3,1406, - 703,0,10585,10583,1,0,0,0,10586,10589,1,0,0,0,10587,10585,1,0,0, - 0,10587,10588,1,0,0,0,10588,1393,1,0,0,0,10589,10587,1,0,0,0,10590, - 10595,3,1422,711,0,10591,10592,5,6,0,0,10592,10594,3,1422,711,0, - 10593,10591,1,0,0,0,10594,10597,1,0,0,0,10595,10593,1,0,0,0,10595, - 10596,1,0,0,0,10596,1395,1,0,0,0,10597,10595,1,0,0,0,10598,10603, - 3,1420,710,0,10599,10600,5,6,0,0,10600,10602,3,1420,710,0,10601, - 10599,1,0,0,0,10602,10605,1,0,0,0,10603,10601,1,0,0,0,10603,10604, - 1,0,0,0,10604,1397,1,0,0,0,10605,10603,1,0,0,0,10606,10611,3,1428, - 714,0,10607,10608,5,6,0,0,10608,10610,3,1428,714,0,10609,10607,1, - 0,0,0,10610,10613,1,0,0,0,10611,10609,1,0,0,0,10611,10612,1,0,0, - 0,10612,1399,1,0,0,0,10613,10611,1,0,0,0,10614,10616,3,1474,737, - 0,10615,10617,3,1380,690,0,10616,10615,1,0,0,0,10616,10617,1,0,0, - 0,10617,1401,1,0,0,0,10618,10620,3,1474,737,0,10619,10621,3,1380, - 690,0,10620,10619,1,0,0,0,10620,10621,1,0,0,0,10621,1403,1,0,0,0, - 10622,10624,3,1474,737,0,10623,10625,3,1380,690,0,10624,10623,1, - 0,0,0,10624,10625,1,0,0,0,10625,1405,1,0,0,0,10626,10628,3,1474, - 737,0,10627,10629,3,1380,690,0,10628,10627,1,0,0,0,10628,10629,1, - 0,0,0,10629,1407,1,0,0,0,10630,10632,3,1474,737,0,10631,10633,3, - 1380,690,0,10632,10631,1,0,0,0,10632,10633,1,0,0,0,10633,1409,1, - 0,0,0,10634,10636,3,1474,737,0,10635,10637,3,560,280,0,10636,10635, - 1,0,0,0,10636,10637,1,0,0,0,10637,1411,1,0,0,0,10638,10640,3,1474, - 737,0,10639,10641,3,1380,690,0,10640,10639,1,0,0,0,10640,10641,1, - 0,0,0,10641,1413,1,0,0,0,10642,10647,3,1402,701,0,10643,10644,5, - 6,0,0,10644,10646,3,1402,701,0,10645,10643,1,0,0,0,10646,10649,1, - 0,0,0,10647,10645,1,0,0,0,10647,10648,1,0,0,0,10648,1415,1,0,0,0, - 10649,10647,1,0,0,0,10650,10655,3,1436,718,0,10651,10652,5,6,0,0, - 10652,10654,3,1436,718,0,10653,10651,1,0,0,0,10654,10657,1,0,0,0, - 10655,10653,1,0,0,0,10655,10656,1,0,0,0,10656,1417,1,0,0,0,10657, - 10655,1,0,0,0,10658,10660,3,1474,737,0,10659,10661,3,560,280,0,10660, - 10659,1,0,0,0,10660,10661,1,0,0,0,10661,1419,1,0,0,0,10662,10664, - 3,1474,737,0,10663,10665,3,560,280,0,10664,10663,1,0,0,0,10664,10665, - 1,0,0,0,10665,1421,1,0,0,0,10666,10668,3,1474,737,0,10667,10669, - 3,560,280,0,10668,10667,1,0,0,0,10668,10669,1,0,0,0,10669,1423,1, - 0,0,0,10670,10671,3,1474,737,0,10671,1425,1,0,0,0,10672,10673,3, - 1474,737,0,10673,1427,1,0,0,0,10674,10679,3,1482,741,0,10675,10676, - 3,1474,737,0,10676,10677,3,1380,690,0,10677,10679,1,0,0,0,10678, - 10674,1,0,0,0,10678,10675,1,0,0,0,10679,1429,1,0,0,0,10680,10685, - 3,1482,741,0,10681,10682,3,1474,737,0,10682,10683,3,1380,690,0,10683, - 10685,1,0,0,0,10684,10680,1,0,0,0,10684,10681,1,0,0,0,10685,1431, - 1,0,0,0,10686,10690,3,1474,737,0,10687,10689,3,1376,688,0,10688, - 10687,1,0,0,0,10689,10692,1,0,0,0,10690,10688,1,0,0,0,10690,10691, - 1,0,0,0,10691,10695,1,0,0,0,10692,10690,1,0,0,0,10693,10695,4,716, - 8,0,10694,10686,1,0,0,0,10694,10693,1,0,0,0,10695,1433,1,0,0,0,10696, - 10697,3,1474,737,0,10697,1435,1,0,0,0,10698,10699,3,1474,737,0,10699, - 1437,1,0,0,0,10700,10701,3,1490,745,0,10701,1439,1,0,0,0,10702,10703, - 3,1458,729,0,10703,1441,1,0,0,0,10704,10709,3,1482,741,0,10705,10706, - 3,1474,737,0,10706,10707,3,1380,690,0,10707,10709,1,0,0,0,10708, - 10704,1,0,0,0,10708,10705,1,0,0,0,10709,1443,1,0,0,0,10710,10715, - 3,1482,741,0,10711,10712,3,1474,737,0,10712,10713,3,1380,690,0,10713, - 10715,1,0,0,0,10714,10710,1,0,0,0,10714,10711,1,0,0,0,10715,1445, - 1,0,0,0,10716,10721,3,1484,742,0,10717,10718,3,1474,737,0,10718, - 10719,3,1380,690,0,10719,10721,1,0,0,0,10720,10716,1,0,0,0,10720, - 10717,1,0,0,0,10721,1447,1,0,0,0,10722,10758,3,1456,728,0,10723, - 10758,3,1454,727,0,10724,10758,3,1458,729,0,10725,10758,3,1452,726, - 0,10726,10758,3,1450,725,0,10727,10737,3,1444,722,0,10728,10738, - 3,1458,729,0,10729,10730,5,2,0,0,10730,10732,3,1338,669,0,10731, - 10733,3,1042,521,0,10732,10731,1,0,0,0,10732,10733,1,0,0,0,10733, - 10734,1,0,0,0,10734,10735,5,3,0,0,10735,10736,3,1458,729,0,10736, - 10738,1,0,0,0,10737,10728,1,0,0,0,10737,10729,1,0,0,0,10738,10758, - 1,0,0,0,10739,10740,3,1174,587,0,10740,10741,3,1458,729,0,10741, - 10758,1,0,0,0,10742,10752,3,1202,601,0,10743,10745,3,1458,729,0, - 10744,10746,3,1206,603,0,10745,10744,1,0,0,0,10745,10746,1,0,0,0, - 10746,10753,1,0,0,0,10747,10748,5,2,0,0,10748,10749,3,1456,728,0, - 10749,10750,5,3,0,0,10750,10751,3,1458,729,0,10751,10753,1,0,0,0, - 10752,10743,1,0,0,0,10752,10747,1,0,0,0,10753,10758,1,0,0,0,10754, - 10758,5,96,0,0,10755,10758,5,60,0,0,10756,10758,5,78,0,0,10757,10722, - 1,0,0,0,10757,10723,1,0,0,0,10757,10724,1,0,0,0,10757,10725,1,0, - 0,0,10757,10726,1,0,0,0,10757,10727,1,0,0,0,10757,10739,1,0,0,0, - 10757,10742,1,0,0,0,10757,10754,1,0,0,0,10757,10755,1,0,0,0,10757, - 10756,1,0,0,0,10758,1449,1,0,0,0,10759,10760,5,567,0,0,10760,1451, - 1,0,0,0,10761,10762,5,563,0,0,10762,1453,1,0,0,0,10763,10764,5,573, - 0,0,10764,1455,1,0,0,0,10765,10766,5,571,0,0,10766,1457,1,0,0,0, - 10767,10769,3,1460,730,0,10768,10770,3,1462,731,0,10769,10768,1, - 0,0,0,10769,10770,1,0,0,0,10770,1459,1,0,0,0,10771,10783,5,558,0, - 0,10772,10783,5,560,0,0,10773,10777,5,562,0,0,10774,10776,5,588, - 0,0,10775,10774,1,0,0,0,10776,10779,1,0,0,0,10777,10775,1,0,0,0, - 10777,10778,1,0,0,0,10778,10780,1,0,0,0,10779,10777,1,0,0,0,10780, - 10783,5,589,0,0,10781,10783,5,584,0,0,10782,10771,1,0,0,0,10782, - 10772,1,0,0,0,10782,10773,1,0,0,0,10782,10781,1,0,0,0,10783,1461, - 1,0,0,0,10784,10785,5,487,0,0,10785,10786,3,1460,730,0,10786,1463, - 1,0,0,0,10787,10793,3,1456,728,0,10788,10789,5,12,0,0,10789,10793, - 3,1456,728,0,10790,10791,5,13,0,0,10791,10793,3,1456,728,0,10792, - 10787,1,0,0,0,10792,10788,1,0,0,0,10792,10790,1,0,0,0,10793,1465, - 1,0,0,0,10794,10795,3,1470,735,0,10795,1467,1,0,0,0,10796,10797, - 3,1470,735,0,10797,1469,1,0,0,0,10798,10804,3,1488,744,0,10799,10804, - 5,52,0,0,10800,10804,5,49,0,0,10801,10804,5,89,0,0,10802,10804,5, - 524,0,0,10803,10798,1,0,0,0,10803,10799,1,0,0,0,10803,10800,1,0, - 0,0,10803,10801,1,0,0,0,10803,10802,1,0,0,0,10804,1471,1,0,0,0,10805, - 10810,3,1470,735,0,10806,10807,5,6,0,0,10807,10809,3,1470,735,0, - 10808,10806,1,0,0,0,10809,10812,1,0,0,0,10810,10808,1,0,0,0,10810, - 10811,1,0,0,0,10811,1473,1,0,0,0,10812,10810,1,0,0,0,10813,10818, - 3,1492,746,0,10814,10818,3,1496,748,0,10815,10818,3,1498,749,0,10816, - 10818,3,1734,867,0,10817,10813,1,0,0,0,10817,10814,1,0,0,0,10817, - 10815,1,0,0,0,10817,10816,1,0,0,0,10818,1475,1,0,0,0,10819,10820, - 3,1492,746,0,10820,1477,1,0,0,0,10821,10834,3,710,355,0,10822,10823, - 5,2,0,0,10823,10824,3,1212,606,0,10824,10825,5,3,0,0,10825,10826, - 1,0,0,0,10826,10828,3,1492,746,0,10827,10829,3,650,325,0,10828,10827, - 1,0,0,0,10828,10829,1,0,0,0,10829,10831,1,0,0,0,10830,10832,3,652, - 326,0,10831,10830,1,0,0,0,10831,10832,1,0,0,0,10832,10834,1,0,0, - 0,10833,10821,1,0,0,0,10833,10822,1,0,0,0,10834,1479,1,0,0,0,10835, - 10836,5,105,0,0,10836,10838,3,132,66,0,10837,10835,1,0,0,0,10837, - 10838,1,0,0,0,10838,10840,1,0,0,0,10839,10841,3,286,143,0,10840, - 10839,1,0,0,0,10840,10841,1,0,0,0,10841,1481,1,0,0,0,10842,10847, - 3,1492,746,0,10843,10847,3,1496,748,0,10844,10847,3,1734,867,0,10845, - 10847,3,1500,750,0,10846,10842,1,0,0,0,10846,10843,1,0,0,0,10846, - 10844,1,0,0,0,10846,10845,1,0,0,0,10847,1483,1,0,0,0,10848,10853, - 3,1492,746,0,10849,10853,3,1496,748,0,10850,10853,3,1734,867,0,10851, - 10853,3,1500,750,0,10852,10848,1,0,0,0,10852,10849,1,0,0,0,10852, - 10850,1,0,0,0,10852,10851,1,0,0,0,10853,1485,1,0,0,0,10854,10857, - 3,1432,716,0,10855,10857,3,1500,750,0,10856,10854,1,0,0,0,10856, - 10855,1,0,0,0,10857,1487,1,0,0,0,10858,10863,3,1492,746,0,10859, - 10863,3,1496,748,0,10860,10863,3,1498,749,0,10861,10863,3,1500,750, - 0,10862,10858,1,0,0,0,10862,10859,1,0,0,0,10862,10860,1,0,0,0,10862, - 10861,1,0,0,0,10863,1489,1,0,0,0,10864,10871,3,1492,746,0,10865, - 10871,3,1734,867,0,10866,10871,3,1496,748,0,10867,10871,3,1498,749, - 0,10868,10871,3,1500,750,0,10869,10871,3,1502,751,0,10870,10864, - 1,0,0,0,10870,10865,1,0,0,0,10870,10866,1,0,0,0,10870,10867,1,0, - 0,0,10870,10868,1,0,0,0,10870,10869,1,0,0,0,10871,1491,1,0,0,0,10872, - 10874,5,549,0,0,10873,10875,3,1462,731,0,10874,10873,1,0,0,0,10874, - 10875,1,0,0,0,10875,10883,1,0,0,0,10876,10883,3,1458,729,0,10877, - 10883,5,550,0,0,10878,10883,5,554,0,0,10879,10883,3,1256,628,0,10880, - 10883,3,1494,747,0,10881,10883,3,1734,867,0,10882,10872,1,0,0,0, - 10882,10876,1,0,0,0,10882,10877,1,0,0,0,10882,10878,1,0,0,0,10882, - 10879,1,0,0,0,10882,10880,1,0,0,0,10882,10881,1,0,0,0,10883,1493, - 1,0,0,0,10884,10885,5,575,0,0,10885,1495,1,0,0,0,10886,10887,7,78, - 0,0,10887,1497,1,0,0,0,10888,10940,5,387,0,0,10889,10940,5,388,0, - 0,10890,10940,3,1184,592,0,10891,10940,5,390,0,0,10892,10940,5,391, - 0,0,10893,10940,3,1192,596,0,10894,10940,5,393,0,0,10895,10940,5, - 394,0,0,10896,10940,5,395,0,0,10897,10940,5,396,0,0,10898,10940, - 5,397,0,0,10899,10940,5,398,0,0,10900,10940,5,399,0,0,10901,10940, - 5,470,0,0,10902,10940,5,400,0,0,10903,10940,5,401,0,0,10904,10940, - 5,402,0,0,10905,10940,5,403,0,0,10906,10940,5,404,0,0,10907,10940, - 5,405,0,0,10908,10940,5,406,0,0,10909,10940,5,407,0,0,10910,10940, - 5,489,0,0,10911,10940,5,408,0,0,10912,10940,3,1180,590,0,10913,10940, - 5,453,0,0,10914,10940,5,410,0,0,10915,10940,5,411,0,0,10916,10940, - 5,412,0,0,10917,10940,5,413,0,0,10918,10940,5,414,0,0,10919,10940, - 5,415,0,0,10920,10940,5,416,0,0,10921,10940,5,417,0,0,10922,10940, - 5,418,0,0,10923,10940,5,419,0,0,10924,10940,5,420,0,0,10925,10940, - 5,421,0,0,10926,10940,5,422,0,0,10927,10940,5,423,0,0,10928,10940, - 5,424,0,0,10929,10940,5,425,0,0,10930,10940,5,426,0,0,10931,10940, - 5,427,0,0,10932,10940,5,428,0,0,10933,10940,5,476,0,0,10934,10940, - 5,429,0,0,10935,10940,5,430,0,0,10936,10940,5,431,0,0,10937,10940, - 5,432,0,0,10938,10940,5,474,0,0,10939,10888,1,0,0,0,10939,10889, - 1,0,0,0,10939,10890,1,0,0,0,10939,10891,1,0,0,0,10939,10892,1,0, - 0,0,10939,10893,1,0,0,0,10939,10894,1,0,0,0,10939,10895,1,0,0,0, - 10939,10896,1,0,0,0,10939,10897,1,0,0,0,10939,10898,1,0,0,0,10939, - 10899,1,0,0,0,10939,10900,1,0,0,0,10939,10901,1,0,0,0,10939,10902, - 1,0,0,0,10939,10903,1,0,0,0,10939,10904,1,0,0,0,10939,10905,1,0, - 0,0,10939,10906,1,0,0,0,10939,10907,1,0,0,0,10939,10908,1,0,0,0, - 10939,10909,1,0,0,0,10939,10910,1,0,0,0,10939,10911,1,0,0,0,10939, - 10912,1,0,0,0,10939,10913,1,0,0,0,10939,10914,1,0,0,0,10939,10915, - 1,0,0,0,10939,10916,1,0,0,0,10939,10917,1,0,0,0,10939,10918,1,0, - 0,0,10939,10919,1,0,0,0,10939,10920,1,0,0,0,10939,10921,1,0,0,0, - 10939,10922,1,0,0,0,10939,10923,1,0,0,0,10939,10924,1,0,0,0,10939, - 10925,1,0,0,0,10939,10926,1,0,0,0,10939,10927,1,0,0,0,10939,10928, - 1,0,0,0,10939,10929,1,0,0,0,10939,10930,1,0,0,0,10939,10931,1,0, - 0,0,10939,10932,1,0,0,0,10939,10933,1,0,0,0,10939,10934,1,0,0,0, - 10939,10935,1,0,0,0,10939,10936,1,0,0,0,10939,10937,1,0,0,0,10939, - 10938,1,0,0,0,10940,1499,1,0,0,0,10941,10942,7,79,0,0,10942,1501, - 1,0,0,0,10943,10944,7,80,0,0,10944,1503,1,0,0,0,10945,10946,3,1506, - 753,0,10946,10947,3,1516,758,0,10947,10948,3,1514,757,0,10948,1505, - 1,0,0,0,10949,10951,3,1508,754,0,10950,10949,1,0,0,0,10951,10954, - 1,0,0,0,10952,10950,1,0,0,0,10952,10953,1,0,0,0,10953,1507,1,0,0, - 0,10954,10952,1,0,0,0,10955,10956,3,1510,755,0,10956,10957,5,279, - 0,0,10957,10958,5,490,0,0,10958,10976,1,0,0,0,10959,10960,3,1510, - 755,0,10960,10961,5,491,0,0,10961,10962,3,1512,756,0,10962,10976, - 1,0,0,0,10963,10964,3,1510,755,0,10964,10965,5,492,0,0,10965,10966, - 5,493,0,0,10966,10976,1,0,0,0,10967,10968,3,1510,755,0,10968,10969, - 5,492,0,0,10969,10970,5,494,0,0,10970,10976,1,0,0,0,10971,10972, - 3,1510,755,0,10972,10973,5,492,0,0,10973,10974,5,495,0,0,10974,10976, - 1,0,0,0,10975,10955,1,0,0,0,10975,10959,1,0,0,0,10975,10963,1,0, - 0,0,10975,10967,1,0,0,0,10975,10971,1,0,0,0,10976,1509,1,0,0,0,10977, - 10978,5,29,0,0,10978,1511,1,0,0,0,10979,10984,3,1458,729,0,10980, - 10984,3,1502,751,0,10981,10984,3,1734,867,0,10982,10984,3,1496,748, - 0,10983,10979,1,0,0,0,10983,10980,1,0,0,0,10983,10981,1,0,0,0,10983, - 10982,1,0,0,0,10984,1513,1,0,0,0,10985,10988,1,0,0,0,10986,10988, - 5,7,0,0,10987,10985,1,0,0,0,10987,10986,1,0,0,0,10988,1515,1,0,0, - 0,10989,10990,3,1518,759,0,10990,10991,5,146,0,0,10991,10992,3,1560, - 780,0,10992,10993,3,1714,857,0,10993,10994,5,454,0,0,10994,10995, - 3,1728,864,0,10995,1517,1,0,0,0,10996,11001,3,1724,862,0,10997,10999, - 3,1520,760,0,10998,11000,3,1522,761,0,10999,10998,1,0,0,0,10999, - 11000,1,0,0,0,11000,11002,1,0,0,0,11001,10997,1,0,0,0,11001,11002, - 1,0,0,0,11002,1519,1,0,0,0,11003,11004,5,178,0,0,11004,1521,1,0, - 0,0,11005,11007,3,1526,763,0,11006,11005,1,0,0,0,11007,11008,1,0, - 0,0,11008,11006,1,0,0,0,11008,11009,1,0,0,0,11009,1523,1,0,0,0,11010, - 11011,5,18,0,0,11011,11012,3,1732,866,0,11012,11013,5,19,0,0,11013, - 1525,1,0,0,0,11014,11018,3,1528,764,0,11015,11018,5,178,0,0,11016, - 11018,3,1524,762,0,11017,11014,1,0,0,0,11017,11015,1,0,0,0,11017, - 11016,1,0,0,0,11018,1527,1,0,0,0,11019,11035,3,1544,772,0,11020, - 11021,5,496,0,0,11021,11022,5,62,0,0,11022,11036,3,1542,771,0,11023, - 11024,3,1546,773,0,11024,11025,3,1548,774,0,11025,11026,3,1550,775, - 0,11026,11027,3,1552,776,0,11027,11028,3,1554,777,0,11028,11036, - 1,0,0,0,11029,11030,3,1530,765,0,11030,11031,5,172,0,0,11031,11032, - 3,1534,767,0,11032,11033,3,1540,770,0,11033,11034,3,1532,766,0,11034, - 11036,1,0,0,0,11035,11020,1,0,0,0,11035,11023,1,0,0,0,11035,11029, - 1,0,0,0,11036,11037,1,0,0,0,11037,11038,5,7,0,0,11038,1529,1,0,0, - 0,11039,11044,1,0,0,0,11040,11041,5,269,0,0,11041,11044,5,324,0, - 0,11042,11044,5,324,0,0,11043,11039,1,0,0,0,11043,11040,1,0,0,0, - 11043,11042,1,0,0,0,11044,1531,1,0,0,0,11045,11046,3,1000,500,0, - 11046,1533,1,0,0,0,11047,11053,1,0,0,0,11048,11049,5,2,0,0,11049, - 11050,3,1536,768,0,11050,11051,5,3,0,0,11051,11053,1,0,0,0,11052, - 11047,1,0,0,0,11052,11048,1,0,0,0,11053,1535,1,0,0,0,11054,11059, - 3,1538,769,0,11055,11056,5,6,0,0,11056,11058,3,1538,769,0,11057, - 11055,1,0,0,0,11058,11061,1,0,0,0,11059,11057,1,0,0,0,11059,11060, - 1,0,0,0,11060,1537,1,0,0,0,11061,11059,1,0,0,0,11062,11063,3,1544, - 772,0,11063,11064,3,1548,774,0,11064,1539,1,0,0,0,11065,11066,7, - 81,0,0,11066,1541,1,0,0,0,11067,11070,5,28,0,0,11068,11070,3,1474, - 737,0,11069,11067,1,0,0,0,11069,11068,1,0,0,0,11070,1543,1,0,0,0, - 11071,11072,3,1732,866,0,11072,1545,1,0,0,0,11073,11076,1,0,0,0, - 11074,11076,5,497,0,0,11075,11073,1,0,0,0,11075,11074,1,0,0,0,11076, - 1547,1,0,0,0,11077,11078,3,1168,584,0,11078,1549,1,0,0,0,11079,11083, - 1,0,0,0,11080,11081,5,43,0,0,11081,11083,3,558,279,0,11082,11079, - 1,0,0,0,11082,11080,1,0,0,0,11083,1551,1,0,0,0,11084,11088,1,0,0, - 0,11085,11086,5,77,0,0,11086,11088,5,78,0,0,11087,11084,1,0,0,0, - 11087,11085,1,0,0,0,11088,1553,1,0,0,0,11089,11094,1,0,0,0,11090, - 11091,3,1556,778,0,11091,11092,3,1736,868,0,11092,11094,1,0,0,0, - 11093,11089,1,0,0,0,11093,11090,1,0,0,0,11094,1555,1,0,0,0,11095, - 11098,3,1558,779,0,11096,11098,5,53,0,0,11097,11095,1,0,0,0,11097, - 11096,1,0,0,0,11098,1557,1,0,0,0,11099,11100,7,82,0,0,11100,1559, - 1,0,0,0,11101,11103,3,1562,781,0,11102,11101,1,0,0,0,11103,11106, - 1,0,0,0,11104,11102,1,0,0,0,11104,11105,1,0,0,0,11105,1561,1,0,0, - 0,11106,11104,1,0,0,0,11107,11108,3,1516,758,0,11108,11109,5,7,0, - 0,11109,11135,1,0,0,0,11110,11135,3,1628,814,0,11111,11135,3,1632, - 816,0,11112,11135,3,1570,785,0,11113,11135,3,1586,793,0,11114,11135, - 3,1592,796,0,11115,11135,3,1602,801,0,11116,11135,3,1604,802,0,11117, - 11135,3,1606,803,0,11118,11135,3,1620,810,0,11119,11135,3,1624,812, - 0,11120,11135,3,1644,822,0,11121,11135,3,1650,825,0,11122,11135, - 3,1652,826,0,11123,11135,3,1564,782,0,11124,11135,3,1566,783,0,11125, - 11135,3,1572,786,0,11126,11135,3,1660,830,0,11127,11135,3,1672,836, - 0,11128,11135,3,1680,840,0,11129,11135,3,1700,850,0,11130,11135, - 3,1702,851,0,11131,11135,3,1704,852,0,11132,11135,3,1706,853,0,11133, - 11135,3,1710,855,0,11134,11107,1,0,0,0,11134,11110,1,0,0,0,11134, - 11111,1,0,0,0,11134,11112,1,0,0,0,11134,11113,1,0,0,0,11134,11114, - 1,0,0,0,11134,11115,1,0,0,0,11134,11116,1,0,0,0,11134,11117,1,0, - 0,0,11134,11118,1,0,0,0,11134,11119,1,0,0,0,11134,11120,1,0,0,0, - 11134,11121,1,0,0,0,11134,11122,1,0,0,0,11134,11123,1,0,0,0,11134, - 11124,1,0,0,0,11134,11125,1,0,0,0,11134,11126,1,0,0,0,11134,11127, - 1,0,0,0,11134,11128,1,0,0,0,11134,11129,1,0,0,0,11134,11130,1,0, - 0,0,11134,11131,1,0,0,0,11134,11132,1,0,0,0,11134,11133,1,0,0,0, - 11135,1563,1,0,0,0,11136,11137,5,498,0,0,11137,11138,3,1740,870, - 0,11138,11139,5,7,0,0,11139,1565,1,0,0,0,11140,11141,5,433,0,0,11141, - 11147,3,1732,866,0,11142,11143,5,2,0,0,11143,11144,3,1568,784,0, - 11144,11145,5,3,0,0,11145,11146,5,7,0,0,11146,11148,1,0,0,0,11147, - 11142,1,0,0,0,11147,11148,1,0,0,0,11148,11157,1,0,0,0,11149,11150, - 5,57,0,0,11150,11151,3,1732,866,0,11151,11152,5,2,0,0,11152,11153, - 3,1568,784,0,11153,11154,5,3,0,0,11154,11155,5,7,0,0,11155,11157, - 1,0,0,0,11156,11140,1,0,0,0,11156,11149,1,0,0,0,11157,1567,1,0,0, - 0,11158,11161,1,0,0,0,11159,11161,3,1328,664,0,11160,11158,1,0,0, - 0,11160,11159,1,0,0,0,11161,1569,1,0,0,0,11162,11163,3,1584,792, - 0,11163,11164,3,1558,779,0,11164,11165,3,1736,868,0,11165,11166, - 5,7,0,0,11166,1571,1,0,0,0,11167,11168,5,499,0,0,11168,11169,3,1574, - 787,0,11169,11170,5,500,0,0,11170,11171,3,1576,788,0,11171,11172, - 5,7,0,0,11172,1573,1,0,0,0,11173,11177,1,0,0,0,11174,11177,5,434, - 0,0,11175,11177,5,501,0,0,11176,11173,1,0,0,0,11176,11174,1,0,0, - 0,11176,11175,1,0,0,0,11177,1575,1,0,0,0,11178,11183,3,1578,789, - 0,11179,11180,5,6,0,0,11180,11182,3,1578,789,0,11181,11179,1,0,0, - 0,11182,11185,1,0,0,0,11183,11181,1,0,0,0,11183,11184,1,0,0,0,11184, - 1577,1,0,0,0,11185,11183,1,0,0,0,11186,11187,3,1582,791,0,11187, - 11188,3,1558,779,0,11188,11189,3,1580,790,0,11189,1579,1,0,0,0,11190, - 11191,3,1474,737,0,11191,1581,1,0,0,0,11192,11193,3,1584,792,0,11193, - 1583,1,0,0,0,11194,11197,3,558,279,0,11195,11197,5,28,0,0,11196, - 11194,1,0,0,0,11196,11195,1,0,0,0,11197,11204,1,0,0,0,11198,11199, - 5,4,0,0,11199,11200,3,1742,871,0,11200,11201,5,5,0,0,11201,11203, - 1,0,0,0,11202,11198,1,0,0,0,11203,11206,1,0,0,0,11204,11202,1,0, - 0,0,11204,11205,1,0,0,0,11205,1585,1,0,0,0,11206,11204,1,0,0,0,11207, - 11208,5,220,0,0,11208,11209,3,1738,869,0,11209,11210,5,93,0,0,11210, - 11211,3,1560,780,0,11211,11212,3,1588,794,0,11212,11213,3,1590,795, - 0,11213,11214,5,454,0,0,11214,11215,5,220,0,0,11215,11216,5,7,0, - 0,11216,1587,1,0,0,0,11217,11218,5,502,0,0,11218,11219,3,1212,606, - 0,11219,11220,5,93,0,0,11220,11221,3,1560,780,0,11221,11223,1,0, - 0,0,11222,11217,1,0,0,0,11223,11226,1,0,0,0,11224,11222,1,0,0,0, - 11224,11225,1,0,0,0,11225,1589,1,0,0,0,11226,11224,1,0,0,0,11227, - 11231,1,0,0,0,11228,11229,5,58,0,0,11229,11231,3,1560,780,0,11230, - 11227,1,0,0,0,11230,11228,1,0,0,0,11231,1591,1,0,0,0,11232,11233, - 5,40,0,0,11233,11234,3,1594,797,0,11234,11235,3,1596,798,0,11235, - 11236,3,1600,800,0,11236,11237,5,454,0,0,11237,11238,5,40,0,0,11238, - 11239,5,7,0,0,11239,1593,1,0,0,0,11240,11243,1,0,0,0,11241,11243, - 3,1736,868,0,11242,11240,1,0,0,0,11242,11241,1,0,0,0,11243,1595, - 1,0,0,0,11244,11246,3,1598,799,0,11245,11244,1,0,0,0,11246,11247, - 1,0,0,0,11247,11245,1,0,0,0,11247,11248,1,0,0,0,11248,1597,1,0,0, - 0,11249,11250,5,102,0,0,11250,11251,3,1328,664,0,11251,11252,5,93, - 0,0,11252,11253,3,1560,780,0,11253,1599,1,0,0,0,11254,11258,1,0, - 0,0,11255,11256,5,58,0,0,11256,11258,3,1560,780,0,11257,11254,1, - 0,0,0,11257,11255,1,0,0,0,11258,1601,1,0,0,0,11259,11260,3,1726, - 863,0,11260,11261,3,1648,824,0,11261,1603,1,0,0,0,11262,11263,3, - 1726,863,0,11263,11264,5,503,0,0,11264,11265,3,1744,872,0,11265, - 11266,3,1648,824,0,11266,1605,1,0,0,0,11267,11268,3,1726,863,0,11268, - 11269,5,62,0,0,11269,11270,3,1608,804,0,11270,11271,3,1648,824,0, - 11271,1607,1,0,0,0,11272,11273,3,1618,809,0,11273,11289,5,68,0,0, - 11274,11275,3,994,497,0,11275,11276,3,1612,806,0,11276,11290,1,0, - 0,0,11277,11290,3,1000,500,0,11278,11290,3,926,463,0,11279,11280, - 5,202,0,0,11280,11281,3,1212,606,0,11281,11282,3,1610,805,0,11282, - 11290,1,0,0,0,11283,11284,3,1614,807,0,11284,11285,3,1212,606,0, - 11285,11286,5,24,0,0,11286,11287,3,1212,606,0,11287,11288,3,1616, - 808,0,11288,11290,1,0,0,0,11289,11274,1,0,0,0,11289,11277,1,0,0, - 0,11289,11278,1,0,0,0,11289,11279,1,0,0,0,11289,11283,1,0,0,0,11290, - 1609,1,0,0,0,11291,11295,1,0,0,0,11292,11293,5,100,0,0,11293,11295, - 3,1328,664,0,11294,11291,1,0,0,0,11294,11292,1,0,0,0,11295,1611, - 1,0,0,0,11296,11309,1,0,0,0,11297,11298,5,2,0,0,11298,11303,3,1212, - 606,0,11299,11300,5,6,0,0,11300,11302,3,1212,606,0,11301,11299,1, - 0,0,0,11302,11305,1,0,0,0,11303,11301,1,0,0,0,11303,11304,1,0,0, - 0,11304,11306,1,0,0,0,11305,11303,1,0,0,0,11306,11307,5,3,0,0,11307, - 11309,1,0,0,0,11308,11296,1,0,0,0,11308,11297,1,0,0,0,11309,1613, - 1,0,0,0,11310,11313,1,0,0,0,11311,11313,5,504,0,0,11312,11310,1, - 0,0,0,11312,11311,1,0,0,0,11313,1615,1,0,0,0,11314,11318,1,0,0,0, - 11315,11316,5,147,0,0,11316,11318,3,1212,606,0,11317,11314,1,0,0, - 0,11317,11315,1,0,0,0,11318,1617,1,0,0,0,11319,11320,3,552,276,0, - 11320,1619,1,0,0,0,11321,11322,3,1726,863,0,11322,11323,5,505,0, - 0,11323,11324,3,1618,809,0,11324,11325,3,1622,811,0,11325,11326, - 5,68,0,0,11326,11327,5,35,0,0,11327,11328,3,1212,606,0,11328,11329, - 3,1648,824,0,11329,1621,1,0,0,0,11330,11334,1,0,0,0,11331,11332, - 5,506,0,0,11332,11334,3,1456,728,0,11333,11330,1,0,0,0,11333,11331, - 1,0,0,0,11334,1623,1,0,0,0,11335,11336,3,1626,813,0,11336,11338, - 3,1728,864,0,11337,11339,3,1730,865,0,11338,11337,1,0,0,0,11338, - 11339,1,0,0,0,11339,11340,1,0,0,0,11340,11341,5,7,0,0,11341,1625, - 1,0,0,0,11342,11343,7,83,0,0,11343,1627,1,0,0,0,11344,11356,5,508, - 0,0,11345,11346,5,268,0,0,11346,11357,3,1736,868,0,11347,11353,5, - 509,0,0,11348,11349,5,202,0,0,11349,11350,3,1212,606,0,11350,11351, - 3,1610,805,0,11351,11354,1,0,0,0,11352,11354,3,1000,500,0,11353, - 11348,1,0,0,0,11353,11352,1,0,0,0,11354,11357,1,0,0,0,11355,11357, - 3,1630,815,0,11356,11345,1,0,0,0,11356,11347,1,0,0,0,11356,11355, - 1,0,0,0,11357,11358,1,0,0,0,11358,11359,5,7,0,0,11359,1629,1,0,0, - 0,11360,11363,1,0,0,0,11361,11363,3,1736,868,0,11362,11360,1,0,0, - 0,11362,11361,1,0,0,0,11363,1631,1,0,0,0,11364,11366,5,510,0,0,11365, - 11367,3,1634,817,0,11366,11365,1,0,0,0,11366,11367,1,0,0,0,11367, - 11368,1,0,0,0,11368,11369,3,1458,729,0,11369,11370,3,1636,818,0, - 11370,11371,3,1638,819,0,11371,11372,5,7,0,0,11372,11399,1,0,0,0, - 11373,11375,5,510,0,0,11374,11376,3,1634,817,0,11375,11374,1,0,0, - 0,11375,11376,1,0,0,0,11376,11377,1,0,0,0,11377,11378,3,1492,746, - 0,11378,11379,3,1638,819,0,11379,11380,5,7,0,0,11380,11399,1,0,0, - 0,11381,11383,5,510,0,0,11382,11384,3,1634,817,0,11383,11382,1,0, - 0,0,11383,11384,1,0,0,0,11384,11385,1,0,0,0,11385,11386,5,511,0, - 0,11386,11387,3,1458,729,0,11387,11388,3,1638,819,0,11388,11389, - 5,7,0,0,11389,11399,1,0,0,0,11390,11392,5,510,0,0,11391,11393,3, - 1634,817,0,11392,11391,1,0,0,0,11392,11393,1,0,0,0,11393,11394,1, - 0,0,0,11394,11395,3,1638,819,0,11395,11396,5,7,0,0,11396,11399,1, - 0,0,0,11397,11399,5,510,0,0,11398,11364,1,0,0,0,11398,11373,1,0, - 0,0,11398,11381,1,0,0,0,11398,11390,1,0,0,0,11398,11397,1,0,0,0, - 11399,1633,1,0,0,0,11400,11401,7,84,0,0,11401,1635,1,0,0,0,11402, - 11410,1,0,0,0,11403,11404,5,6,0,0,11404,11406,3,1212,606,0,11405, - 11403,1,0,0,0,11406,11407,1,0,0,0,11407,11405,1,0,0,0,11407,11408, - 1,0,0,0,11408,11410,1,0,0,0,11409,11402,1,0,0,0,11409,11405,1,0, - 0,0,11410,1637,1,0,0,0,11411,11415,1,0,0,0,11412,11413,5,100,0,0, - 11413,11415,3,1642,821,0,11414,11411,1,0,0,0,11414,11412,1,0,0,0, - 11415,1639,1,0,0,0,11416,11417,3,1492,746,0,11417,11418,5,10,0,0, - 11418,11419,3,1212,606,0,11419,1641,1,0,0,0,11420,11425,3,1640,820, - 0,11421,11422,5,6,0,0,11422,11424,3,1640,820,0,11423,11421,1,0,0, - 0,11424,11427,1,0,0,0,11425,11423,1,0,0,0,11425,11426,1,0,0,0,11426, - 1643,1,0,0,0,11427,11425,1,0,0,0,11428,11429,5,518,0,0,11429,11430, - 3,1736,868,0,11430,11431,3,1646,823,0,11431,11432,5,7,0,0,11432, - 1645,1,0,0,0,11433,11437,1,0,0,0,11434,11435,5,6,0,0,11435,11437, - 3,1736,868,0,11436,11433,1,0,0,0,11436,11434,1,0,0,0,11437,1647, - 1,0,0,0,11438,11439,5,519,0,0,11439,11440,3,1560,780,0,11440,11441, - 5,454,0,0,11441,11442,5,519,0,0,11442,11443,3,1728,864,0,11443,11444, - 5,7,0,0,11444,1649,1,0,0,0,11445,11446,3,1746,873,0,11446,11447, - 5,7,0,0,11447,1651,1,0,0,0,11448,11449,5,202,0,0,11449,11457,3,1212, - 606,0,11450,11451,3,1658,829,0,11451,11452,3,1654,827,0,11452,11458, - 1,0,0,0,11453,11454,3,1654,827,0,11454,11455,3,1658,829,0,11455, - 11458,1,0,0,0,11456,11458,1,0,0,0,11457,11450,1,0,0,0,11457,11453, - 1,0,0,0,11457,11456,1,0,0,0,11458,11459,1,0,0,0,11459,11460,5,7, - 0,0,11460,1653,1,0,0,0,11461,11465,1,0,0,0,11462,11463,5,100,0,0, - 11463,11465,3,1656,828,0,11464,11461,1,0,0,0,11464,11462,1,0,0,0, - 11465,1655,1,0,0,0,11466,11471,3,1212,606,0,11467,11468,5,6,0,0, - 11468,11470,3,1212,606,0,11469,11467,1,0,0,0,11470,11473,1,0,0,0, - 11471,11469,1,0,0,0,11471,11472,1,0,0,0,11472,1657,1,0,0,0,11473, - 11471,1,0,0,0,11474,11481,1,0,0,0,11475,11477,5,71,0,0,11476,11478, - 5,346,0,0,11477,11476,1,0,0,0,11477,11478,1,0,0,0,11478,11479,1, - 0,0,0,11479,11481,3,1674,837,0,11480,11474,1,0,0,0,11480,11475,1, - 0,0,0,11481,1659,1,0,0,0,11482,11500,5,520,0,0,11483,11484,3,1712, - 856,0,11484,11485,3,1668,834,0,11485,11491,5,62,0,0,11486,11492, - 3,1000,500,0,11487,11488,5,202,0,0,11488,11489,3,1736,868,0,11489, - 11490,3,1666,833,0,11490,11492,1,0,0,0,11491,11486,1,0,0,0,11491, - 11487,1,0,0,0,11492,11501,1,0,0,0,11493,11498,3,1474,737,0,11494, - 11495,5,2,0,0,11495,11496,3,1664,832,0,11496,11497,5,3,0,0,11497, - 11499,1,0,0,0,11498,11494,1,0,0,0,11498,11499,1,0,0,0,11499,11501, - 1,0,0,0,11500,11483,1,0,0,0,11500,11493,1,0,0,0,11501,11502,1,0, - 0,0,11502,11503,5,7,0,0,11503,1661,1,0,0,0,11504,11505,3,1474,737, - 0,11505,11506,5,20,0,0,11506,11507,3,1212,606,0,11507,11510,1,0, - 0,0,11508,11510,3,1212,606,0,11509,11504,1,0,0,0,11509,11508,1,0, - 0,0,11510,1663,1,0,0,0,11511,11516,3,1662,831,0,11512,11513,5,6, - 0,0,11513,11515,3,1662,831,0,11514,11512,1,0,0,0,11515,11518,1,0, - 0,0,11516,11514,1,0,0,0,11516,11517,1,0,0,0,11517,1665,1,0,0,0,11518, - 11516,1,0,0,0,11519,11523,1,0,0,0,11520,11521,5,100,0,0,11521,11523, - 3,1328,664,0,11522,11519,1,0,0,0,11522,11520,1,0,0,0,11523,1667, - 1,0,0,0,11524,11529,1,0,0,0,11525,11526,3,1670,835,0,11526,11527, - 5,324,0,0,11527,11529,1,0,0,0,11528,11524,1,0,0,0,11528,11525,1, - 0,0,0,11529,1669,1,0,0,0,11530,11533,1,0,0,0,11531,11533,5,269,0, - 0,11532,11530,1,0,0,0,11532,11531,1,0,0,0,11533,1671,1,0,0,0,11534, - 11536,5,61,0,0,11535,11537,3,1678,839,0,11536,11535,1,0,0,0,11536, - 11537,1,0,0,0,11537,11538,1,0,0,0,11538,11539,3,1676,838,0,11539, - 11540,3,1712,856,0,11540,11541,5,71,0,0,11541,11542,3,1674,837,0, - 11542,11543,5,7,0,0,11543,1673,1,0,0,0,11544,11545,3,1328,664,0, - 11545,1675,1,0,0,0,11546,11550,1,0,0,0,11547,11550,5,64,0,0,11548, - 11550,5,68,0,0,11549,11546,1,0,0,0,11549,11547,1,0,0,0,11549,11548, - 1,0,0,0,11550,1677,1,0,0,0,11551,11567,5,268,0,0,11552,11567,5,293, - 0,0,11553,11567,5,207,0,0,11554,11567,5,249,0,0,11555,11556,5,130, - 0,0,11556,11567,3,1212,606,0,11557,11558,5,307,0,0,11558,11567,3, - 1212,606,0,11559,11567,3,1212,606,0,11560,11567,5,30,0,0,11561,11564, - 7,85,0,0,11562,11565,3,1212,606,0,11563,11565,5,30,0,0,11564,11562, - 1,0,0,0,11564,11563,1,0,0,0,11564,11565,1,0,0,0,11565,11567,1,0, - 0,0,11566,11551,1,0,0,0,11566,11552,1,0,0,0,11566,11553,1,0,0,0, - 11566,11554,1,0,0,0,11566,11555,1,0,0,0,11566,11557,1,0,0,0,11566, - 11559,1,0,0,0,11566,11560,1,0,0,0,11566,11561,1,0,0,0,11567,1679, - 1,0,0,0,11568,11570,5,265,0,0,11569,11571,3,1678,839,0,11570,11569, - 1,0,0,0,11570,11571,1,0,0,0,11571,11572,1,0,0,0,11572,11573,3,1712, - 856,0,11573,11574,5,7,0,0,11574,1681,1,0,0,0,11575,11577,3,1014, - 507,0,11576,11575,1,0,0,0,11576,11577,1,0,0,0,11577,11578,1,0,0, - 0,11578,11579,5,525,0,0,11579,11581,5,71,0,0,11580,11582,5,81,0, - 0,11581,11580,1,0,0,0,11581,11582,1,0,0,0,11582,11583,1,0,0,0,11583, - 11585,3,1406,703,0,11584,11586,5,9,0,0,11585,11584,1,0,0,0,11585, - 11586,1,0,0,0,11586,11591,1,0,0,0,11587,11589,5,36,0,0,11588,11587, - 1,0,0,0,11588,11589,1,0,0,0,11589,11590,1,0,0,0,11590,11592,3,1474, - 737,0,11591,11588,1,0,0,0,11591,11592,1,0,0,0,11592,11593,1,0,0, - 0,11593,11594,5,100,0,0,11594,11595,3,1684,842,0,11595,11596,5,80, - 0,0,11596,11598,3,1686,843,0,11597,11599,3,1688,844,0,11598,11597, - 1,0,0,0,11599,11600,1,0,0,0,11600,11598,1,0,0,0,11600,11601,1,0, - 0,0,11601,1683,1,0,0,0,11602,11604,5,81,0,0,11603,11602,1,0,0,0, - 11603,11604,1,0,0,0,11604,11605,1,0,0,0,11605,11607,3,1406,703,0, - 11606,11608,5,9,0,0,11607,11606,1,0,0,0,11607,11608,1,0,0,0,11608, - 11614,1,0,0,0,11609,11612,3,1004,502,0,11610,11612,3,1100,550,0, - 11611,11609,1,0,0,0,11611,11610,1,0,0,0,11612,11614,1,0,0,0,11613, - 11603,1,0,0,0,11613,11611,1,0,0,0,11614,11619,1,0,0,0,11615,11617, - 5,36,0,0,11616,11615,1,0,0,0,11616,11617,1,0,0,0,11617,11618,1,0, - 0,0,11618,11620,3,1474,737,0,11619,11616,1,0,0,0,11619,11620,1,0, - 0,0,11620,1685,1,0,0,0,11621,11622,3,1212,606,0,11622,1687,1,0,0, - 0,11623,11624,5,102,0,0,11624,11627,5,526,0,0,11625,11626,5,33,0, - 0,11626,11628,3,1212,606,0,11627,11625,1,0,0,0,11627,11628,1,0,0, - 0,11628,11629,1,0,0,0,11629,11634,5,93,0,0,11630,11635,3,1692,846, - 0,11631,11635,5,182,0,0,11632,11633,5,57,0,0,11633,11635,5,270,0, - 0,11634,11630,1,0,0,0,11634,11631,1,0,0,0,11634,11632,1,0,0,0,11635, - 11650,1,0,0,0,11636,11637,5,102,0,0,11637,11638,5,77,0,0,11638,11641, - 5,526,0,0,11639,11640,5,33,0,0,11640,11642,3,1212,606,0,11641,11639, - 1,0,0,0,11641,11642,1,0,0,0,11642,11643,1,0,0,0,11643,11647,5,93, - 0,0,11644,11648,3,1690,845,0,11645,11646,5,57,0,0,11646,11648,5, - 270,0,0,11647,11644,1,0,0,0,11647,11645,1,0,0,0,11648,11650,1,0, - 0,0,11649,11623,1,0,0,0,11649,11636,1,0,0,0,11650,1689,1,0,0,0,11651, - 11656,5,241,0,0,11652,11653,5,2,0,0,11653,11654,3,244,122,0,11654, - 11655,5,3,0,0,11655,11657,1,0,0,0,11656,11652,1,0,0,0,11656,11657, - 1,0,0,0,11657,11661,1,0,0,0,11658,11659,5,463,0,0,11659,11660,7, - 53,0,0,11660,11662,5,450,0,0,11661,11658,1,0,0,0,11661,11662,1,0, - 0,0,11662,11663,1,0,0,0,11663,11664,3,1694,847,0,11664,1691,1,0, - 0,0,11665,11666,5,369,0,0,11666,11679,5,333,0,0,11667,11668,3,1432, - 716,0,11668,11669,5,10,0,0,11669,11670,3,1698,849,0,11670,11680, - 1,0,0,0,11671,11672,5,2,0,0,11672,11673,3,244,122,0,11673,11674, - 5,3,0,0,11674,11675,5,10,0,0,11675,11676,5,2,0,0,11676,11677,3,1696, - 848,0,11677,11678,5,3,0,0,11678,11680,1,0,0,0,11679,11667,1,0,0, - 0,11679,11671,1,0,0,0,11680,11681,1,0,0,0,11681,11679,1,0,0,0,11681, - 11682,1,0,0,0,11682,1693,1,0,0,0,11683,11684,5,422,0,0,11684,11688, - 3,1696,848,0,11685,11686,5,53,0,0,11686,11688,5,422,0,0,11687,11683, - 1,0,0,0,11687,11685,1,0,0,0,11688,1695,1,0,0,0,11689,11690,5,2,0, - 0,11690,11695,3,1698,849,0,11691,11692,5,6,0,0,11692,11694,3,1698, - 849,0,11693,11691,1,0,0,0,11694,11697,1,0,0,0,11695,11693,1,0,0, - 0,11695,11696,1,0,0,0,11696,11698,1,0,0,0,11697,11695,1,0,0,0,11698, - 11699,5,3,0,0,11699,1697,1,0,0,0,11700,11703,3,1048,524,0,11701, - 11703,5,53,0,0,11702,11700,1,0,0,0,11702,11701,1,0,0,0,11703,1699, - 1,0,0,0,11704,11705,5,157,0,0,11705,11706,3,1712,856,0,11706,11707, - 5,7,0,0,11707,1701,1,0,0,0,11708,11709,5,78,0,0,11709,11710,5,7, - 0,0,11710,1703,1,0,0,0,11711,11713,5,161,0,0,11712,11714,3,1708, - 854,0,11713,11712,1,0,0,0,11713,11714,1,0,0,0,11714,11715,1,0,0, - 0,11715,11716,5,7,0,0,11716,1705,1,0,0,0,11717,11719,5,319,0,0,11718, - 11720,3,1708,854,0,11719,11718,1,0,0,0,11719,11720,1,0,0,0,11720, - 11721,1,0,0,0,11721,11722,5,7,0,0,11722,1707,1,0,0,0,11723,11725, - 5,33,0,0,11724,11726,5,269,0,0,11725,11724,1,0,0,0,11725,11726,1, - 0,0,0,11726,11727,1,0,0,0,11727,11728,5,153,0,0,11728,1709,1,0,0, - 0,11729,11730,5,333,0,0,11730,11731,3,558,279,0,11731,11732,5,94, - 0,0,11732,11733,5,53,0,0,11733,11734,5,7,0,0,11734,11742,1,0,0,0, - 11735,11738,5,313,0,0,11736,11739,3,558,279,0,11737,11739,5,30,0, - 0,11738,11736,1,0,0,0,11738,11737,1,0,0,0,11739,11740,1,0,0,0,11740, - 11742,5,7,0,0,11741,11729,1,0,0,0,11741,11735,1,0,0,0,11742,1711, - 1,0,0,0,11743,11746,3,1474,737,0,11744,11746,5,28,0,0,11745,11743, - 1,0,0,0,11745,11744,1,0,0,0,11746,1713,1,0,0,0,11747,11751,1,0,0, - 0,11748,11749,5,517,0,0,11749,11751,3,1716,858,0,11750,11747,1,0, - 0,0,11750,11748,1,0,0,0,11751,1715,1,0,0,0,11752,11754,3,1718,859, - 0,11753,11752,1,0,0,0,11754,11755,1,0,0,0,11755,11753,1,0,0,0,11755, - 11756,1,0,0,0,11756,1717,1,0,0,0,11757,11758,5,102,0,0,11758,11759, - 3,1720,860,0,11759,11760,5,93,0,0,11760,11761,3,1560,780,0,11761, - 1719,1,0,0,0,11762,11767,3,1722,861,0,11763,11764,5,82,0,0,11764, - 11766,3,1722,861,0,11765,11763,1,0,0,0,11766,11769,1,0,0,0,11767, - 11765,1,0,0,0,11767,11768,1,0,0,0,11768,1721,1,0,0,0,11769,11767, - 1,0,0,0,11770,11774,3,1732,866,0,11771,11772,5,511,0,0,11772,11774, - 3,1458,729,0,11773,11770,1,0,0,0,11773,11771,1,0,0,0,11774,1723, - 1,0,0,0,11775,11778,1,0,0,0,11776,11778,3,1524,762,0,11777,11775, - 1,0,0,0,11777,11776,1,0,0,0,11778,1725,1,0,0,0,11779,11782,1,0,0, - 0,11780,11782,3,1524,762,0,11781,11779,1,0,0,0,11781,11780,1,0,0, - 0,11782,1727,1,0,0,0,11783,11786,1,0,0,0,11784,11786,3,1732,866, - 0,11785,11783,1,0,0,0,11785,11784,1,0,0,0,11786,1729,1,0,0,0,11787, - 11788,5,102,0,0,11788,11789,3,1740,870,0,11789,1731,1,0,0,0,11790, - 11793,3,1474,737,0,11791,11793,3,1734,867,0,11792,11790,1,0,0,0, - 11792,11791,1,0,0,0,11793,1733,1,0,0,0,11794,11795,7,86,0,0,11795, - 1735,1,0,0,0,11796,11798,3,1384,692,0,11797,11796,1,0,0,0,11797, - 11798,1,0,0,0,11798,11800,1,0,0,0,11799,11801,3,1028,514,0,11800, - 11799,1,0,0,0,11800,11801,1,0,0,0,11801,11803,1,0,0,0,11802,11804, - 3,1102,551,0,11803,11802,1,0,0,0,11803,11804,1,0,0,0,11804,11806, - 1,0,0,0,11805,11807,3,1144,572,0,11806,11805,1,0,0,0,11806,11807, - 1,0,0,0,11807,11809,1,0,0,0,11808,11810,3,1072,536,0,11809,11808, - 1,0,0,0,11809,11810,1,0,0,0,11810,11812,1,0,0,0,11811,11813,3,1086, - 543,0,11812,11811,1,0,0,0,11812,11813,1,0,0,0,11813,11815,1,0,0, - 0,11814,11816,3,1288,644,0,11815,11814,1,0,0,0,11815,11816,1,0,0, - 0,11816,1737,1,0,0,0,11817,11818,3,1736,868,0,11818,1739,1,0,0,0, - 11819,11820,3,1736,868,0,11820,1741,1,0,0,0,11821,11822,3,1212,606, - 0,11822,1743,1,0,0,0,11823,11824,3,1212,606,0,11824,1745,1,0,0,0, - 11825,11827,3,6,3,0,11826,11828,3,1748,874,0,11827,11826,1,0,0,0, - 11827,11828,1,0,0,0,11828,1747,1,0,0,0,11829,11830,5,71,0,0,11830, - 11831,3,1030,515,0,11831,11832,3,1674,837,0,11832,1749,1,0,0,0,1282, - 1753,1762,1881,1885,1894,1903,1909,1915,1947,1959,1965,1973,1981, - 1987,1996,2002,2014,2020,2026,2033,2037,2042,2046,2059,2070,2076, - 2092,2095,2100,2106,2111,2120,2124,2136,2140,2143,2147,2158,2176, - 2183,2191,2196,2203,2209,2215,2222,2233,2237,2241,2245,2258,2262, - 2267,2272,2284,2293,2305,2310,2321,2327,2332,2342,2347,2354,2359, - 2364,2375,2381,2386,2394,2403,2418,2424,2430,2435,2442,2454,2462, - 2470,2488,2497,2511,2515,2530,2538,2548,2588,2591,2595,2599,2602, - 2607,2614,2623,2629,2633,2642,2650,2659,2668,2672,2679,2685,2689, - 2693,2698,2701,2705,2711,2718,2734,2748,2758,2760,2765,2769,2772, - 2778,2780,2808,2818,2831,2838,2843,2847,2853,2858,2861,2863,2868, - 2872,2876,2880,2884,2887,2891,2899,2903,2907,2916,2923,2928,2935, - 2940,2947,2952,2970,2975,2987,2992,3001,3008,3015,3019,3024,3028, - 3031,3034,3037,3040,3043,3048,3051,3054,3057,3060,3063,3069,3073, - 3076,3079,3082,3085,3087,3096,3111,3119,3125,3129,3134,3137,3140, - 3144,3148,3162,3167,3174,3179,3183,3186,3190,3193,3195,3202,3205, - 3209,3215,3218,3225,3234,3241,3246,3249,3252,3255,3259,3266,3271, - 3284,3294,3307,3310,3313,3320,3328,3331,3334,3341,3345,3351,3354, - 3357,3360,3372,3375,3378,3382,3400,3408,3424,3435,3450,3467,3469, - 3490,3495,3498,3502,3505,3511,3514,3516,3527,3536,3542,3545,3548, - 3562,3565,3568,3573,3581,3590,3594,3600,3604,3607,3610,3613,3616, - 3622,3626,3631,3637,3641,3644,3647,3650,3658,3662,3666,3670,3674, - 3679,3693,3702,3719,3724,3727,3729,3739,3746,3751,3754,3757,3764, - 3767,3769,3775,3784,3794,3799,3807,3811,3818,3828,3839,3947,3955, - 3958,3968,3973,3983,3994,4006,4019,4029,4041,4045,4048,4055,4063, - 4073,4075,4081,4086,4090,4095,4101,4108,4114,4116,4123,4131,4136, - 4147,4154,4158,4175,4178,4181,4184,4187,4195,4198,4201,4207,4215, - 4219,4231,4237,4240,4245,4249,4256,4267,4290,4310,4319,4322,4325, - 4335,4338,4347,4351,4354,4362,4368,4372,4383,4393,4401,4406,4418, - 4435,4439,4445,4452,4460,4474,4500,4507,4521,4532,4535,4548,4557, - 4582,4593,4635,4643,4649,4660,4666,4674,4685,4699,4708,4713,4724, - 4735,4743,4753,4760,4763,4769,4772,4787,4800,4829,4836,4851,4863, - 4867,4872,4876,4881,4885,4891,4895,4900,4904,4910,4914,4919,4923, - 4928,4932,4937,4941,4948,4952,4959,4963,4970,4974,4981,4985,4991, - 4995,5001,5005,5010,5014,5021,5025,5029,5033,5037,5042,5046,5051, - 5055,5060,5064,5069,5075,5080,5086,5091,5097,5102,5106,5111,5115, - 5121,5125,5130,5138,5144,5150,5156,5162,5169,5174,5178,5183,5187, - 5192,5198,5205,5210,5217,5227,5231,5237,5239,5246,5250,5255,5273, - 5288,5306,5315,5324,5328,5334,5341,5346,5353,5358,5361,5364,5368, - 5439,5535,5539,5544,5555,5566,5577,5588,5599,5611,5622,5633,5643, - 5650,5657,5663,5671,5676,5681,5686,5692,5699,5705,5711,5716,5722, - 5729,5734,5740,5747,5750,5763,5772,5784,5786,5804,5811,5821,5826, - 5830,5834,5838,5840,5900,5907,5913,5924,5927,5934,5937,5947,5950, - 5952,5971,5983,5992,6001,6013,6015,6021,6025,6028,6031,6036,6042, - 6045,6048,6051,6054,6070,6074,6077,6080,6083,6086,6091,6094,6096, - 6109,6121,6135,6139,6145,6155,6157,6162,6170,6180,6189,6197,6206, - 6208,6215,6224,6226,6233,6242,6244,6248,6257,6262,6268,6273,6277, - 6282,6300,6305,6320,6329,6340,6346,6383,6403,6410,6421,6435,6442, - 6450,6455,6462,6466,6471,6475,6480,6484,6486,6491,6495,6500,6504, - 6528,6535,6545,6557,6562,6575,6587,6599,6601,6607,6614,6659,6677, - 6681,6686,6689,6693,6698,6703,6706,6713,6730,6801,6832,6886,6896, - 6906,6917,6927,6938,6948,6953,6962,6967,6977,6982,6991,7004,7009, - 7121,7123,7132,7143,7154,7167,7179,7190,7197,7287,7340,7350,7361, - 7372,7386,7401,7412,7419,7473,7614,7620,7623,7633,7673,7683,7690, - 7713,7722,7731,7740,7773,7777,7787,7791,7801,7804,7808,7812,7820, - 7831,7843,7847,7850,7854,7857,7862,7866,7869,7875,7886,7889,7896, - 7900,7905,7908,7910,7924,7928,7933,7940,7947,7950,7955,7958,7967, - 7969,7974,7978,7990,7993,8000,8004,8009,8019,8029,8032,8035,8037, - 8043,8050,8070,8090,8094,8099,8168,8173,8179,8192,8196,8200,8206, - 8208,8216,8226,8229,8232,8235,8238,8245,8248,8250,8254,8257,8264, - 8266,8273,8280,8284,8288,8297,8303,8307,8311,8316,8328,8335,8345, - 8358,8369,8376,8381,8385,8389,8394,8407,8412,8416,8420,8427,8430, - 8432,8440,8444,8447,8454,8457,8462,8468,8474,8478,8487,8496,8503, - 8506,8512,8517,8523,8529,8532,8535,8542,8546,8549,8564,8567,8574, - 8577,8584,8587,8590,8597,8609,8616,8618,8628,8646,8648,8656,8660, - 8670,8674,8678,8682,8684,8689,8693,8697,8699,8701,8705,8709,8712, - 8715,8718,8721,8723,8726,8729,8732,8735,8738,8741,8750,8752,8757, - 8761,8767,8771,8775,8784,8789,8793,8799,8802,8821,8829,8838,8842, - 8845,8849,8854,8860,8872,8887,8894,8897,8901,8905,8909,8911,8919, - 8928,8934,8936,8943,8947,8956,8960,8969,8978,8990,9018,9025,9029, - 9032,9037,9041,9044,9060,9071,9076,9079,9082,9086,9090,9094,9099, - 9103,9107,9109,9118,9123,9129,9133,9135,9142,9147,9153,9155,9159, - 9166,9173,9176,9182,9186,9195,9198,9202,9210,9216,9218,9221,9225, - 9228,9231,9235,9239,9245,9248,9257,9264,9266,9273,9281,9286,9289, - 9297,9306,9314,9316,9320,9327,9346,9355,9361,9380,9389,9395,9399, - 9404,9414,9421,9430,9433,9442,9444,9450,9454,9459,9469,9475,9477, - 9483,9487,9490,9503,9509,9513,9517,9520,9528,9532,9536,9544,9551, - 9558,9562,9568,9570,9579,9582,9592,9608,9614,9619,9626,9635,9642, - 9650,9658,9663,9667,9670,9676,9681,9697,9700,9702,9714,9716,9720, - 9728,9730,9734,9736,9744,9748,9757,9765,9771,9774,9783,9788,9795, - 9805,9831,9842,9844,9846,9854,9876,9885,9895,9898,9903,9908,9912, - 9915,9919,9922,9925,9928,9932,9946,9953,9960,9967,9985,9993,10005, - 10011,10024,10063,10065,10085,10095,10106,10118,10125,10137,10149, - 10155,10163,10180,10205,10215,10219,10222,10225,10228,10241,10246, - 10251,10253,10261,10270,10279,10284,10293,10298,10312,10322,10330, - 10344,10351,10359,10367,10375,10379,10386,10394,10401,10407,10416, - 10431,10442,10475,10484,10491,10495,10499,10506,10520,10525,10530, - 10534,10536,10539,10546,10551,10561,10569,10572,10579,10587,10595, - 10603,10611,10616,10620,10624,10628,10632,10636,10640,10647,10655, - 10660,10664,10668,10678,10684,10690,10694,10708,10714,10720,10732, - 10737,10745,10752,10757,10769,10777,10782,10792,10803,10810,10817, - 10828,10831,10833,10837,10840,10846,10852,10856,10862,10870,10874, - 10882,10939,10952,10975,10983,10987,10999,11001,11008,11017,11035, - 11043,11052,11059,11069,11075,11082,11087,11093,11097,11104,11134, - 11147,11156,11160,11176,11183,11196,11204,11224,11230,11242,11247, - 11257,11289,11294,11303,11308,11312,11317,11333,11338,11353,11356, - 11362,11366,11375,11383,11392,11398,11407,11409,11414,11425,11436, - 11457,11464,11471,11477,11480,11491,11498,11500,11509,11516,11522, - 11528,11532,11536,11549,11564,11566,11570,11576,11581,11585,11588, - 11591,11600,11603,11607,11611,11613,11616,11619,11627,11634,11641, - 11647,11649,11656,11661,11679,11681,11687,11695,11702,11713,11719, - 11725,11738,11741,11745,11750,11755,11767,11773,11777,11781,11785, - 11792,11797,11800,11803,11806,11809,11812,11815,11827 - ]; - - private static __ATN: antlr.ATN; - public static get _ATN(): antlr.ATN { - if (!PostgreSqlParser.__ATN) { - PostgreSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(PostgreSqlParser._serializedATN); - } - - return PostgreSqlParser.__ATN; - } - - - private static readonly vocabulary = new antlr.Vocabulary(PostgreSqlParser.literalNames, PostgreSqlParser.symbolicNames, []); - - public override get vocabulary(): antlr.Vocabulary { - return PostgreSqlParser.vocabulary; - } - - private static readonly decisionsToDFA = PostgreSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); -} - -export class ProgramContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public EOF(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.EOF, 0)!; - } - public singleStmt(): SingleStmtContext[]; - public singleStmt(i: number): SingleStmtContext | null; - public singleStmt(i?: number): SingleStmtContext[] | SingleStmtContext | null { - if (i === undefined) { - return this.getRuleContexts(SingleStmtContext); - } - - return this.getRuleContext(i, SingleStmtContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_program; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProgram) { - listener.enterProgram(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProgram) { - listener.exitProgram(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProgram) { - return visitor.visitProgram(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PlsqlrootContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public pl_function(): Pl_functionContext { - return this.getRuleContext(0, Pl_functionContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsqlroot; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsqlroot) { - listener.enterPlsqlroot(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsqlroot) { - listener.exitPlsqlroot(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsqlroot) { - return visitor.visitPlsqlroot(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SingleStmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public stmt(): StmtContext { - return this.getRuleContext(0, StmtContext)!; - } - public SEMI(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.SEMI, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_singleStmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSingleStmt) { - listener.enterSingleStmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSingleStmt) { - listener.exitSingleStmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSingleStmt) { - return visitor.visitSingleStmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public altereventtrigstmt(): AltereventtrigstmtContext | null { - return this.getRuleContext(0, AltereventtrigstmtContext); - } - public altercollationstmt(): AltercollationstmtContext | null { - return this.getRuleContext(0, AltercollationstmtContext); - } - public alterdatabasestmt(): AlterdatabasestmtContext | null { - return this.getRuleContext(0, AlterdatabasestmtContext); - } - public alterdatabasesetstmt(): AlterdatabasesetstmtContext | null { - return this.getRuleContext(0, AlterdatabasesetstmtContext); - } - public alterdefaultprivilegesstmt(): AlterdefaultprivilegesstmtContext | null { - return this.getRuleContext(0, AlterdefaultprivilegesstmtContext); - } - public alterdomainstmt(): AlterdomainstmtContext | null { - return this.getRuleContext(0, AlterdomainstmtContext); - } - public alterenumstmt(): AlterenumstmtContext | null { - return this.getRuleContext(0, AlterenumstmtContext); - } - public alterextensionstmt(): AlterextensionstmtContext | null { - return this.getRuleContext(0, AlterextensionstmtContext); - } - public alterextensioncontentsstmt(): AlterextensioncontentsstmtContext | null { - return this.getRuleContext(0, AlterextensioncontentsstmtContext); - } - public alterfdwstmt(): AlterfdwstmtContext | null { - return this.getRuleContext(0, AlterfdwstmtContext); - } - public alterforeignserverstmt(): AlterforeignserverstmtContext | null { - return this.getRuleContext(0, AlterforeignserverstmtContext); - } - public alterfunctionstmt(): AlterfunctionstmtContext | null { - return this.getRuleContext(0, AlterfunctionstmtContext); - } - public altergroupstmt(): AltergroupstmtContext | null { - return this.getRuleContext(0, AltergroupstmtContext); - } - public alterobjectdependsstmt(): AlterobjectdependsstmtContext | null { - return this.getRuleContext(0, AlterobjectdependsstmtContext); - } - public alterobjectschemastmt(): AlterobjectschemastmtContext | null { - return this.getRuleContext(0, AlterobjectschemastmtContext); - } - public alterownerstmt(): AlterownerstmtContext | null { - return this.getRuleContext(0, AlterownerstmtContext); - } - public alteroperatorstmt(): AlteroperatorstmtContext | null { - return this.getRuleContext(0, AlteroperatorstmtContext); - } - public altertypestmt(): AltertypestmtContext | null { - return this.getRuleContext(0, AltertypestmtContext); - } - public alterpolicystmt(): AlterpolicystmtContext | null { - return this.getRuleContext(0, AlterpolicystmtContext); - } - public alterprocedurestmt(): AlterprocedurestmtContext | null { - return this.getRuleContext(0, AlterprocedurestmtContext); - } - public alterseqstmt(): AlterseqstmtContext | null { - return this.getRuleContext(0, AlterseqstmtContext); - } - public altersystemstmt(): AltersystemstmtContext | null { - return this.getRuleContext(0, AltersystemstmtContext); - } - public altertablestmt(): AltertablestmtContext | null { - return this.getRuleContext(0, AltertablestmtContext); - } - public altertblspcstmt(): AltertblspcstmtContext | null { - return this.getRuleContext(0, AltertblspcstmtContext); - } - public altercompositetypestmt(): AltercompositetypestmtContext | null { - return this.getRuleContext(0, AltercompositetypestmtContext); - } - public alterpublicationstmt(): AlterpublicationstmtContext | null { - return this.getRuleContext(0, AlterpublicationstmtContext); - } - public alterrolesetstmt(): AlterrolesetstmtContext | null { - return this.getRuleContext(0, AlterrolesetstmtContext); - } - public alterroutinestmt(): AlterroutinestmtContext | null { - return this.getRuleContext(0, AlterroutinestmtContext); - } - public alterrolestmt(): AlterrolestmtContext | null { - return this.getRuleContext(0, AlterrolestmtContext); - } - public altersubscriptionstmt(): AltersubscriptionstmtContext | null { - return this.getRuleContext(0, AltersubscriptionstmtContext); - } - public alterstatsstmt(): AlterstatsstmtContext | null { - return this.getRuleContext(0, AlterstatsstmtContext); - } - public altertsconfigurationstmt(): AltertsconfigurationstmtContext | null { - return this.getRuleContext(0, AltertsconfigurationstmtContext); - } - public altertsdictionarystmt(): AltertsdictionarystmtContext | null { - return this.getRuleContext(0, AltertsdictionarystmtContext); - } - public alterusermappingstmt(): AlterusermappingstmtContext | null { - return this.getRuleContext(0, AlterusermappingstmtContext); - } - public analyzestmt(): AnalyzestmtContext | null { - return this.getRuleContext(0, AnalyzestmtContext); - } - public callstmt(): CallstmtContext | null { - return this.getRuleContext(0, CallstmtContext); - } - public checkpointstmt(): CheckpointstmtContext | null { - return this.getRuleContext(0, CheckpointstmtContext); - } - public closeportalstmt(): CloseportalstmtContext | null { - return this.getRuleContext(0, CloseportalstmtContext); - } - public clusterstmt(): ClusterstmtContext | null { - return this.getRuleContext(0, ClusterstmtContext); - } - public commentstmt(): CommentstmtContext | null { - return this.getRuleContext(0, CommentstmtContext); - } - public constraintssetstmt(): ConstraintssetstmtContext | null { - return this.getRuleContext(0, ConstraintssetstmtContext); - } - public copystmt(): CopystmtContext | null { - return this.getRuleContext(0, CopystmtContext); - } - public createamstmt(): CreateamstmtContext | null { - return this.getRuleContext(0, CreateamstmtContext); - } - public createasstmt(): CreateasstmtContext | null { - return this.getRuleContext(0, CreateasstmtContext); - } - public createassertionstmt(): CreateassertionstmtContext | null { - return this.getRuleContext(0, CreateassertionstmtContext); - } - public createcaststmt(): CreatecaststmtContext | null { - return this.getRuleContext(0, CreatecaststmtContext); - } - public createconversionstmt(): CreateconversionstmtContext | null { - return this.getRuleContext(0, CreateconversionstmtContext); - } - public createdomainstmt(): CreatedomainstmtContext | null { - return this.getRuleContext(0, CreatedomainstmtContext); - } - public createextensionstmt(): CreateextensionstmtContext | null { - return this.getRuleContext(0, CreateextensionstmtContext); - } - public createfdwstmt(): CreatefdwstmtContext | null { - return this.getRuleContext(0, CreatefdwstmtContext); - } - public createforeignserverstmt(): CreateforeignserverstmtContext | null { - return this.getRuleContext(0, CreateforeignserverstmtContext); - } - public createforeigntablestmt(): CreateforeigntablestmtContext | null { - return this.getRuleContext(0, CreateforeigntablestmtContext); - } - public createfunctionstmt(): CreatefunctionstmtContext | null { - return this.getRuleContext(0, CreatefunctionstmtContext); - } - public creategroupstmt(): CreategroupstmtContext | null { - return this.getRuleContext(0, CreategroupstmtContext); - } - public creatematviewstmt(): CreatematviewstmtContext | null { - return this.getRuleContext(0, CreatematviewstmtContext); - } - public createopclassstmt(): CreateopclassstmtContext | null { - return this.getRuleContext(0, CreateopclassstmtContext); - } - public createopfamilystmt(): CreateopfamilystmtContext | null { - return this.getRuleContext(0, CreateopfamilystmtContext); - } - public createpublicationstmt(): CreatepublicationstmtContext | null { - return this.getRuleContext(0, CreatepublicationstmtContext); - } - public alteropfamilystmt(): AlteropfamilystmtContext | null { - return this.getRuleContext(0, AlteropfamilystmtContext); - } - public createpolicystmt(): CreatepolicystmtContext | null { - return this.getRuleContext(0, CreatepolicystmtContext); - } - public createplangstmt(): CreateplangstmtContext | null { - return this.getRuleContext(0, CreateplangstmtContext); - } - public createschemastmt(): CreateschemastmtContext | null { - return this.getRuleContext(0, CreateschemastmtContext); - } - public createseqstmt(): CreateseqstmtContext | null { - return this.getRuleContext(0, CreateseqstmtContext); - } - public createstmt(): CreatestmtContext | null { - return this.getRuleContext(0, CreatestmtContext); - } - public createsubscriptionstmt(): CreatesubscriptionstmtContext | null { - return this.getRuleContext(0, CreatesubscriptionstmtContext); - } - public createstatsstmt(): CreatestatsstmtContext | null { - return this.getRuleContext(0, CreatestatsstmtContext); - } - public createtablespacestmt(): CreatetablespacestmtContext | null { - return this.getRuleContext(0, CreatetablespacestmtContext); - } - public createtransformstmt(): CreatetransformstmtContext | null { - return this.getRuleContext(0, CreatetransformstmtContext); - } - public createtrigstmt(): CreatetrigstmtContext | null { - return this.getRuleContext(0, CreatetrigstmtContext); - } - public createeventtrigstmt(): CreateeventtrigstmtContext | null { - return this.getRuleContext(0, CreateeventtrigstmtContext); - } - public createrolestmt(): CreaterolestmtContext | null { - return this.getRuleContext(0, CreaterolestmtContext); - } - public createuserstmt(): CreateuserstmtContext | null { - return this.getRuleContext(0, CreateuserstmtContext); - } - public createusermappingstmt(): CreateusermappingstmtContext | null { - return this.getRuleContext(0, CreateusermappingstmtContext); - } - public createdbstmt(): CreatedbstmtContext | null { - return this.getRuleContext(0, CreatedbstmtContext); - } - public deallocatestmt(): DeallocatestmtContext | null { - return this.getRuleContext(0, DeallocatestmtContext); - } - public declarecursorstmt(): DeclarecursorstmtContext | null { - return this.getRuleContext(0, DeclarecursorstmtContext); - } - public definestmt(): DefinestmtContext | null { - return this.getRuleContext(0, DefinestmtContext); - } - public deletestmt(): DeletestmtContext | null { - return this.getRuleContext(0, DeletestmtContext); - } - public discardstmt(): DiscardstmtContext | null { - return this.getRuleContext(0, DiscardstmtContext); - } - public dostmt(): DostmtContext | null { - return this.getRuleContext(0, DostmtContext); - } - public dropstmt(): DropstmtContext | null { - return this.getRuleContext(0, DropstmtContext); - } - public executestmt(): ExecutestmtContext | null { - return this.getRuleContext(0, ExecutestmtContext); - } - public explainstmt(): ExplainstmtContext | null { - return this.getRuleContext(0, ExplainstmtContext); - } - public fetchstmt(): FetchstmtContext | null { - return this.getRuleContext(0, FetchstmtContext); - } - public grantstmt(): GrantstmtContext | null { - return this.getRuleContext(0, GrantstmtContext); - } - public grantrolestmt(): GrantrolestmtContext | null { - return this.getRuleContext(0, GrantrolestmtContext); - } - public mergestmt(): MergestmtContext | null { - return this.getRuleContext(0, MergestmtContext); - } - public importforeignschemastmt(): ImportforeignschemastmtContext | null { - return this.getRuleContext(0, ImportforeignschemastmtContext); - } - public indexstmt(): IndexstmtContext | null { - return this.getRuleContext(0, IndexstmtContext); - } - public insertstmt(): InsertstmtContext | null { - return this.getRuleContext(0, InsertstmtContext); - } - public listenstmt(): ListenstmtContext | null { - return this.getRuleContext(0, ListenstmtContext); - } - public refreshmatviewstmt(): RefreshmatviewstmtContext | null { - return this.getRuleContext(0, RefreshmatviewstmtContext); - } - public loadstmt(): LoadstmtContext | null { - return this.getRuleContext(0, LoadstmtContext); - } - public lockstmt(): LockstmtContext | null { - return this.getRuleContext(0, LockstmtContext); - } - public notifystmt(): NotifystmtContext | null { - return this.getRuleContext(0, NotifystmtContext); - } - public preparestmt(): PreparestmtContext | null { - return this.getRuleContext(0, PreparestmtContext); - } - public reassignownedstmt(): ReassignownedstmtContext | null { - return this.getRuleContext(0, ReassignownedstmtContext); - } - public reindexstmt(): ReindexstmtContext | null { - return this.getRuleContext(0, ReindexstmtContext); - } - public removeaggrstmt(): RemoveaggrstmtContext | null { - return this.getRuleContext(0, RemoveaggrstmtContext); - } - public removefuncstmt(): RemovefuncstmtContext | null { - return this.getRuleContext(0, RemovefuncstmtContext); - } - public removeoperstmt(): RemoveoperstmtContext | null { - return this.getRuleContext(0, RemoveoperstmtContext); - } - public renamestmt(): RenamestmtContext | null { - return this.getRuleContext(0, RenamestmtContext); - } - public revokestmt(): RevokestmtContext | null { - return this.getRuleContext(0, RevokestmtContext); - } - public revokerolestmt(): RevokerolestmtContext | null { - return this.getRuleContext(0, RevokerolestmtContext); - } - public rulestmt(): RulestmtContext | null { - return this.getRuleContext(0, RulestmtContext); - } - public seclabelstmt(): SeclabelstmtContext | null { - return this.getRuleContext(0, SeclabelstmtContext); - } - public selectstmt(): SelectstmtContext | null { - return this.getRuleContext(0, SelectstmtContext); - } - public transactionstmt(): TransactionstmtContext | null { - return this.getRuleContext(0, TransactionstmtContext); - } - public truncatestmt(): TruncatestmtContext | null { - return this.getRuleContext(0, TruncatestmtContext); - } - public unlistenstmt(): UnlistenstmtContext | null { - return this.getRuleContext(0, UnlistenstmtContext); - } - public updatestmt(): UpdatestmtContext | null { - return this.getRuleContext(0, UpdatestmtContext); - } - public vacuumstmt(): VacuumstmtContext | null { - return this.getRuleContext(0, VacuumstmtContext); - } - public variableresetstmt(): VariableresetstmtContext | null { - return this.getRuleContext(0, VariableresetstmtContext); - } - public variablesetstmt(): VariablesetstmtContext | null { - return this.getRuleContext(0, VariablesetstmtContext); - } - public variableshowstmt(): VariableshowstmtContext | null { - return this.getRuleContext(0, VariableshowstmtContext); - } - public viewstmt(): ViewstmtContext | null { - return this.getRuleContext(0, ViewstmtContext); - } - public plsqlconsolecommand(): PlsqlconsolecommandContext | null { - return this.getRuleContext(0, PlsqlconsolecommandContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt) { - listener.enterStmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt) { - listener.exitStmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt) { - return visitor.visitStmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PlsqlconsolecommandContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public MetaCommand(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.MetaCommand, 0)!; - } - public EndMetaCommand(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EndMetaCommand, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsqlconsolecommand; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsqlconsolecommand) { - listener.enterPlsqlconsolecommand(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsqlconsolecommand) { - listener.exitPlsqlconsolecommand(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsqlconsolecommand) { - return visitor.visitPlsqlconsolecommand(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CallstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CALL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CALL, 0)!; - } - public func_application(): Func_applicationContext { - return this.getRuleContext(0, Func_applicationContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_callstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCallstmt) { - listener.enterCallstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCallstmt) { - listener.exitCallstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCallstmt) { - return visitor.visitCallstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreaterolestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ROLE, 0)!; - } - public roleid(): RoleidContext { - return this.getRuleContext(0, RoleidContext)!; - } - public optrolelist(): OptrolelistContext { - return this.getRuleContext(0, OptrolelistContext)!; - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createrolestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreaterolestmt) { - listener.enterCreaterolestmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreaterolestmt) { - listener.exitCreaterolestmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreaterolestmt) { - return visitor.visitCreaterolestmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_withContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_with; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_with) { - listener.enterOpt_with(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_with) { - listener.exitOpt_with(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_with) { - return visitor.visitOpt_with(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OptrolelistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public createoptroleelem(): CreateoptroleelemContext[]; - public createoptroleelem(i: number): CreateoptroleelemContext | null; - public createoptroleelem(i?: number): CreateoptroleelemContext[] | CreateoptroleelemContext | null { - if (i === undefined) { - return this.getRuleContexts(CreateoptroleelemContext); - } - - return this.getRuleContext(i, CreateoptroleelemContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optrolelist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptrolelist) { - listener.enterOptrolelist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptrolelist) { - listener.exitOptrolelist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptrolelist) { - return visitor.visitOptrolelist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlteroptrolelistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alteroptroleelem(): AlteroptroleelemContext[]; - public alteroptroleelem(i: number): AlteroptroleelemContext | null; - public alteroptroleelem(i?: number): AlteroptroleelemContext[] | AlteroptroleelemContext | null { - if (i === undefined) { - return this.getRuleContexts(AlteroptroleelemContext); - } - - return this.getRuleContext(i, AlteroptroleelemContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alteroptrolelist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlteroptrolelist) { - listener.enterAlteroptrolelist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlteroptrolelist) { - listener.exitAlteroptrolelist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlteroptrolelist) { - return visitor.visitAlteroptrolelist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlteroptroleelemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PASSWORD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PASSWORD, 0); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_ENCRYPTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENCRYPTED, 0); - } - public KW_UNENCRYPTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNENCRYPTED, 0); - } - public KW_INHERIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INHERIT, 0); - } - public KW_NOINHERIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOINHERIT, 0); - } - public KW_CREATEUSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATEUSER, 0); - } - public KW_NOCREATEUSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOCREATEUSER, 0); - } - public KW_CREATEROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATEROLE, 0); - } - public KW_NOCREATEROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOCREATEROLE, 0); - } - public KW_CREATEDB(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATEDB, 0); - } - public KW_NOCREATEDB(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOCREATEDB, 0); - } - public KW_SUPERUSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUPERUSER, 0); - } - public KW_NOSUPERUSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOSUPERUSER, 0); - } - public KW_LOGIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOGIN, 0); - } - public KW_NOLOGIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOLOGIN, 0); - } - public KW_REPLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLICATION, 0); - } - public KW_NOREPLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOREPLICATION, 0); - } - public KW_BYPASSRLS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BYPASSRLS, 0); - } - public KW_NOBYPASSRLS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOBYPASSRLS, 0); - } - public KW_CONNECTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONNECTION, 0); - } - public KW_LIMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LIMIT, 0); - } - public signediconst(): SignediconstContext | null { - return this.getRuleContext(0, SignediconstContext); - } - public KW_VALID(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALID, 0); - } - public KW_UNTIL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNTIL, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public name_list(): Name_listContext | null { - return this.getRuleContext(0, Name_listContext); - } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); - } - public role_list(): Role_listContext | null { - return this.getRuleContext(0, Role_listContext); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADMIN, 0); - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alteroptroleelem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlteroptroleelem) { - listener.enterAlteroptroleelem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlteroptroleelem) { - listener.exitAlteroptroleelem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlteroptroleelem) { - return visitor.visitAlteroptroleelem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreateoptroleelemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alteroptroleelem(): AlteroptroleelemContext | null { - return this.getRuleContext(0, AlteroptroleelemContext); - } - public KW_SYSID(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SYSID, 0); - } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADMIN, 0); - } - public role_list(): Role_listContext | null { - return this.getRuleContext(0, Role_listContext); - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createoptroleelem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateoptroleelem) { - listener.enterCreateoptroleelem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateoptroleelem) { - listener.exitCreateoptroleelem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateoptroleelem) { - return visitor.visitCreateoptroleelem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreateuserstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_USER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USER, 0)!; - } - public roleid(): RoleidContext { - return this.getRuleContext(0, RoleidContext)!; - } - public optrolelist(): OptrolelistContext { - return this.getRuleContext(0, OptrolelistContext)!; - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createuserstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateuserstmt) { - listener.enterCreateuserstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateuserstmt) { - listener.exitCreateuserstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateuserstmt) { - return visitor.visitCreateuserstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterrolestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; - } - public alteroptrolelist(): AlteroptrolelistContext { - return this.getRuleContext(0, AlteroptrolelistContext)!; - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterrolestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterrolestmt) { - listener.enterAlterrolestmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterrolestmt) { - listener.exitAlterrolestmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterrolestmt) { - return visitor.visitAlterrolestmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_in_databaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); - } - public database_name(): Database_nameContext | null { - return this.getRuleContext(0, Database_nameContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_in_database; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_in_database) { - listener.enterOpt_in_database(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_in_database) { - listener.exitOpt_in_database(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_in_database) { - return visitor.visitOpt_in_database(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterrolesetstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public opt_in_database(): Opt_in_databaseContext { - return this.getRuleContext(0, Opt_in_databaseContext)!; - } - public setresetclause(): SetresetclauseContext { - return this.getRuleContext(0, SetresetclauseContext)!; - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterrolesetstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterrolesetstmt) { - listener.enterAlterrolesetstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterrolesetstmt) { - listener.exitAlterrolesetstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterrolesetstmt) { - return visitor.visitAlterrolesetstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterroutinestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_ROUTINE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0)!; - } - public routine_name(): Routine_nameContext { - return this.getRuleContext(0, Routine_nameContext)!; - } - public alter_routine_cluase(): Alter_routine_cluaseContext { - return this.getRuleContext(0, Alter_routine_cluaseContext)!; - } - public func_args(): Func_argsContext | null { - return this.getRuleContext(0, Func_argsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterroutinestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterroutinestmt) { - listener.enterAlterroutinestmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterroutinestmt) { - listener.exitAlterroutinestmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterroutinestmt) { - return visitor.visitAlterroutinestmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_routine_cluaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public routine_action_list(): Routine_action_listContext | null { - return this.getRuleContext(0, Routine_action_listContext); - } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); - } - public KW_RENAME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RENAME, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public routine_name_create(): Routine_name_createContext | null { - return this.getRuleContext(0, Routine_name_createContext); - } - public KW_OWNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNER, 0); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name_create(): Schema_name_createContext | null { - return this.getRuleContext(0, Schema_name_createContext); - } - public KW_DEPENDS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEPENDS, 0); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); - } - public KW_EXTENSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_routine_cluase; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_routine_cluase) { - listener.enterAlter_routine_cluase(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_routine_cluase) { - listener.exitAlter_routine_cluase(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_routine_cluase) { - return visitor.visitAlter_routine_cluase(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Routine_action_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public routine_action(): Routine_actionContext[]; - public routine_action(i: number): Routine_actionContext | null; - public routine_action(i?: number): Routine_actionContext[] | Routine_actionContext | null { - if (i === undefined) { - return this.getRuleContexts(Routine_actionContext); - } - - return this.getRuleContext(i, Routine_actionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_routine_action_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRoutine_action_list) { - listener.enterRoutine_action_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRoutine_action_list) { - listener.exitRoutine_action_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRoutine_action_list) { - return visitor.visitRoutine_action_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Routine_actionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_IMMUTABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IMMUTABLE, 0); - } - public KW_STABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STABLE, 0); - } - public KW_VOLATILE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VOLATILE, 0); - } - public KW_LEAKPROOF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEAKPROOF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SECURITY, 0); - } - public KW_INVOKER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INVOKER, 0); - } - public KW_DEFINER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFINER, 0); - } - public KW_EXTERNAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); - } - public KW_PARALLEL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARALLEL, 0); - } - public KW_UNSAFE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNSAFE, 0); - } - public KW_RESTRICTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICTED, 0); - } - public KW_SAFE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SAFE, 0); - } - public KW_COST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COST, 0); - } - public attr_name(): Attr_nameContext | null { - return this.getRuleContext(0, Attr_nameContext); - } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWS, 0); - } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { - if (i === undefined) { - return this.getRuleContexts(NameContext); - } - - return this.getRuleContext(i, NameContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); - } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_routine_action; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRoutine_action) { - listener.enterRoutine_action(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRoutine_action) { - listener.exitRoutine_action(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRoutine_action) { - return visitor.visitRoutine_action(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreategroupstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_GROUP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; - } - public groupname(): GroupnameContext { - return this.getRuleContext(0, GroupnameContext)!; - } - public optrolelist(): OptrolelistContext { - return this.getRuleContext(0, OptrolelistContext)!; - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_creategroupstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreategroupstmt) { - listener.enterCreategroupstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreategroupstmt) { - listener.exitCreategroupstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreategroupstmt) { - return visitor.visitCreategroupstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AltergroupstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_GROUP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; - } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; - } - public add_drop(): Add_dropContext { - return this.getRuleContext(0, Add_dropContext)!; - } - public KW_USER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USER, 0)!; - } - public role_list(): Role_listContext { - return this.getRuleContext(0, Role_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altergroupstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltergroupstmt) { - listener.enterAltergroupstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltergroupstmt) { - listener.exitAltergroupstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltergroupstmt) { - return visitor.visitAltergroupstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Add_dropContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_add_drop; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAdd_drop) { - listener.enterAdd_drop(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAdd_drop) { - listener.exitAdd_drop(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAdd_drop) { - return visitor.visitAdd_drop(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreateschemastmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0)!; - } - public optschemaeltlist(): OptschemaeltlistContext { - return this.getRuleContext(0, OptschemaeltlistContext)!; - } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); - } - public schema_name_create(): Schema_name_createContext | null { - return this.getRuleContext(0, Schema_name_createContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createschemastmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateschemastmt) { - listener.enterCreateschemastmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateschemastmt) { - listener.exitCreateschemastmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateschemastmt) { - return visitor.visitCreateschemastmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Schema_name_createContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_schema_name_create; - } - public override copyFrom(ctx: Schema_name_createContext): void { - super.copyFrom(ctx); - } -} -export class SchemaNameCreateContext extends Schema_name_createContext { - public constructor(ctx: Schema_name_createContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSchemaNameCreate) { - listener.enterSchemaNameCreate(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSchemaNameCreate) { - listener.exitSchemaNameCreate(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSchemaNameCreate) { - return visitor.visitSchemaNameCreate(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OptschemaeltlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public schema_stmt(): Schema_stmtContext[]; - public schema_stmt(i: number): Schema_stmtContext | null; - public schema_stmt(i?: number): Schema_stmtContext[] | Schema_stmtContext | null { - if (i === undefined) { - return this.getRuleContexts(Schema_stmtContext); - } - - return this.getRuleContext(i, Schema_stmtContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optschemaeltlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptschemaeltlist) { - listener.enterOptschemaeltlist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptschemaeltlist) { - listener.exitOptschemaeltlist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptschemaeltlist) { - return visitor.visitOptschemaeltlist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Schema_stmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public createstmt(): CreatestmtContext | null { - return this.getRuleContext(0, CreatestmtContext); - } - public indexstmt(): IndexstmtContext | null { - return this.getRuleContext(0, IndexstmtContext); - } - public createseqstmt(): CreateseqstmtContext | null { - return this.getRuleContext(0, CreateseqstmtContext); - } - public createtrigstmt(): CreatetrigstmtContext | null { - return this.getRuleContext(0, CreatetrigstmtContext); - } - public grantstmt(): GrantstmtContext | null { - return this.getRuleContext(0, GrantstmtContext); - } - public viewstmt(): ViewstmtContext | null { - return this.getRuleContext(0, ViewstmtContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_schema_stmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSchema_stmt) { - listener.enterSchema_stmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSchema_stmt) { - listener.exitSchema_stmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSchema_stmt) { - return visitor.visitSchema_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VariablesetstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; - } - public set_rest(): Set_restContext { - return this.getRuleContext(0, Set_restContext)!; - } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCAL, 0); - } - public KW_SESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_variablesetstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVariablesetstmt) { - listener.enterVariablesetstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVariablesetstmt) { - listener.exitVariablesetstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVariablesetstmt) { - return visitor.visitVariablesetstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Set_restContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); - } - public transaction_mode_list(): Transaction_mode_listContext | null { - return this.getRuleContext(0, Transaction_mode_listContext); - } - public KW_SESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION, 0); - } - public KW_CHARACTERISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHARACTERISTICS, 0); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public set_rest_more(): Set_rest_moreContext | null { - return this.getRuleContext(0, Set_rest_moreContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_rest; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_rest) { - listener.enterSet_rest(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_rest) { - listener.exitSet_rest(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_rest) { - return visitor.visitSet_rest(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Generic_setContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public var_name(): Var_nameContext | null { - return this.getRuleContext(0, Var_nameContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public var_list(): Var_listContext | null { - return this.getRuleContext(0, Var_listContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generic_set; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGeneric_set) { - listener.enterGeneric_set(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGeneric_set) { - listener.exitGeneric_set(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGeneric_set) { - return visitor.visitGeneric_set(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Set_rest_moreContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIME, 0); - } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ZONE, 0); - } - public zone_value(): Zone_valueContext | null { - return this.getRuleContext(0, Zone_valueContext); - } - public KW_CATALOG(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CATALOG, 0); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); - } - public KW_NAMES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NAMES, 0); - } - public opt_encoding(): Opt_encodingContext | null { - return this.getRuleContext(0, Opt_encodingContext); - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { - return this.getRuleContext(0, Nonreservedword_or_sconstContext); - } - public KW_SESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION, 0); - } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); - } - public KW_XML(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XML, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); - } - public document_or_content(): Document_or_contentContext | null { - return this.getRuleContext(0, Document_or_contentContext); - } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); - } - public KW_SNAPSHOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SNAPSHOT, 0); - } - public var_name(): Var_nameContext | null { - return this.getRuleContext(0, Var_nameContext); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); - } - public generic_set(): Generic_setContext | null { - return this.getRuleContext(0, Generic_setContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_rest_more; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_rest_more) { - listener.enterSet_rest_more(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_rest_more) { - listener.exitSet_rest_more(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_rest_more) { - return visitor.visitSet_rest_more(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Var_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colid(): ColidContext[]; - public colid(i: number): ColidContext | null; - public colid(i?: number): ColidContext[] | ColidContext | null { - if (i === undefined) { - return this.getRuleContexts(ColidContext); - } - - return this.getRuleContext(i, ColidContext); - } - public DOT(): antlr.TerminalNode[]; - public DOT(i: number): antlr.TerminalNode | null; - public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.DOT); - } else { - return this.getToken(PostgreSqlParser.DOT, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_var_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVar_name) { - listener.enterVar_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVar_name) { - listener.exitVar_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVar_name) { - return visitor.visitVar_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Var_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public var_value(): Var_valueContext[]; - public var_value(i: number): Var_valueContext | null; - public var_value(i?: number): Var_valueContext[] | Var_valueContext | null { - if (i === undefined) { - return this.getRuleContexts(Var_valueContext); - } - - return this.getRuleContext(i, Var_valueContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_var_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVar_list) { - listener.enterVar_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVar_list) { - listener.exitVar_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVar_list) { - return visitor.visitVar_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Var_valueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { - return this.getRuleContext(0, Opt_boolean_or_stringContext); - } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_var_value; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVar_value) { - listener.enterVar_value(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVar_value) { - listener.exitVar_value(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVar_value) { - return visitor.visitVar_value(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Iso_levelContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_READ(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_READ, 0); - } - public KW_UNCOMMITTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNCOMMITTED, 0); - } - public KW_COMMITTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COMMITTED, 0); - } - public KW_REPEATABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPEATABLE, 0); - } - public KW_SERIALIZABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERIALIZABLE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_iso_level; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIso_level) { - listener.enterIso_level(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIso_level) { - listener.exitIso_level(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIso_level) { - return visitor.visitIso_level(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_boolean_or_string_columnContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); - } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); - } - public nonreservedword_or_sconst_column(): Nonreservedword_or_sconst_columnContext | null { - return this.getRuleContext(0, Nonreservedword_or_sconst_columnContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_boolean_or_string_column; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_boolean_or_string_column) { - listener.enterOpt_boolean_or_string_column(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_boolean_or_string_column) { - listener.exitOpt_boolean_or_string_column(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_boolean_or_string_column) { - return visitor.visitOpt_boolean_or_string_column(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_boolean_or_stringContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); - } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); - } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { - return this.getRuleContext(0, Nonreservedword_or_sconstContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_boolean_or_string; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_boolean_or_string) { - listener.enterOpt_boolean_or_string(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_boolean_or_string) { - listener.exitOpt_boolean_or_string(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_boolean_or_string) { - return visitor.visitOpt_boolean_or_string(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Zone_valueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public constinterval(): ConstintervalContext | null { - return this.getRuleContext(0, ConstintervalContext); - } - public opt_interval(): Opt_intervalContext | null { - return this.getRuleContext(0, Opt_intervalContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCAL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_zone_value; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterZone_value) { - listener.enterZone_value(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitZone_value) { - listener.exitZone_value(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitZone_value) { - return visitor.visitZone_value(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_encodingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_encoding; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_encoding) { - listener.enterOpt_encoding(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_encoding) { - listener.exitOpt_encoding(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_encoding) { - return visitor.visitOpt_encoding(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Nonreservedword_or_sconst_columnContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public nonreservedword_column(): Nonreservedword_columnContext | null { - return this.getRuleContext(0, Nonreservedword_columnContext); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_nonreservedword_or_sconst_column; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNonreservedword_or_sconst_column) { - listener.enterNonreservedword_or_sconst_column(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNonreservedword_or_sconst_column) { - listener.exitNonreservedword_or_sconst_column(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNonreservedword_or_sconst_column) { - return visitor.visitNonreservedword_or_sconst_column(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Nonreservedword_or_sconstContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public nonreservedword(): NonreservedwordContext | null { - return this.getRuleContext(0, NonreservedwordContext); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_nonreservedword_or_sconst; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNonreservedword_or_sconst) { - listener.enterNonreservedword_or_sconst(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNonreservedword_or_sconst) { - listener.exitNonreservedword_or_sconst(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNonreservedword_or_sconst) { - return visitor.visitNonreservedword_or_sconst(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VariableresetstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RESET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_RESET, 0)!; - } - public reset_rest(): Reset_restContext { - return this.getRuleContext(0, Reset_restContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_variableresetstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVariableresetstmt) { - listener.enterVariableresetstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVariableresetstmt) { - listener.exitVariableresetstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVariableresetstmt) { - return visitor.visitVariableresetstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Reset_restContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIME, 0); - } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ZONE, 0); - } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); - } - public KW_ISOLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ISOLATION, 0); - } - public KW_LEVEL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEVEL, 0); - } - public KW_SESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION, 0); - } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); - } - public generic_reset(): Generic_resetContext | null { - return this.getRuleContext(0, Generic_resetContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reset_rest; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReset_rest) { - listener.enterReset_rest(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReset_rest) { - listener.exitReset_rest(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReset_rest) { - return visitor.visitReset_rest(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Generic_resetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public var_name(): Var_nameContext | null { - return this.getRuleContext(0, Var_nameContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generic_reset; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGeneric_reset) { - listener.enterGeneric_reset(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGeneric_reset) { - listener.exitGeneric_reset(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGeneric_reset) { - return visitor.visitGeneric_reset(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SetresetclauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public set_rest(): Set_restContext | null { - return this.getRuleContext(0, Set_restContext); - } - public variableresetstmt(): VariableresetstmtContext | null { - return this.getRuleContext(0, VariableresetstmtContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_setresetclause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSetresetclause) { - listener.enterSetresetclause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSetresetclause) { - listener.exitSetresetclause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSetresetclause) { - return visitor.visitSetresetclause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionsetresetclauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public set_rest_more(): Set_rest_moreContext | null { - return this.getRuleContext(0, Set_rest_moreContext); - } - public variableresetstmt(): VariableresetstmtContext | null { - return this.getRuleContext(0, VariableresetstmtContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_functionsetresetclause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunctionsetresetclause) { - listener.enterFunctionsetresetclause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunctionsetresetclause) { - listener.exitFunctionsetresetclause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunctionsetresetclause) { - return visitor.visitFunctionsetresetclause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VariableshowstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SHOW, 0)!; - } - public var_name(): Var_nameContext | null { - return this.getRuleContext(0, Var_nameContext); - } - public KW_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIME, 0); - } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ZONE, 0); - } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); - } - public KW_ISOLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ISOLATION, 0); - } - public KW_LEVEL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEVEL, 0); - } - public KW_SESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION, 0); - } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_variableshowstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVariableshowstmt) { - listener.enterVariableshowstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVariableshowstmt) { - listener.exitVariableshowstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVariableshowstmt) { - return visitor.visitVariableshowstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstraintssetstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; - } - public KW_CONSTRAINTS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CONSTRAINTS, 0)!; - } - public constraints_set_list(): Constraints_set_listContext { - return this.getRuleContext(0, Constraints_set_listContext)!; - } - public constraints_set_mode(): Constraints_set_modeContext { - return this.getRuleContext(0, Constraints_set_modeContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constraintssetstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstraintssetstmt) { - listener.enterConstraintssetstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstraintssetstmt) { - listener.exitConstraintssetstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstraintssetstmt) { - return visitor.visitConstraintssetstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Constraints_set_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public qualified_name_list(): Qualified_name_listContext | null { - return this.getRuleContext(0, Qualified_name_listContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constraints_set_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstraints_set_list) { - listener.enterConstraints_set_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstraints_set_list) { - listener.exitConstraints_set_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstraints_set_list) { - return visitor.visitConstraints_set_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Constraints_set_modeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DEFERRED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFERRED, 0); - } - public KW_IMMEDIATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IMMEDIATE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constraints_set_mode; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstraints_set_mode) { - listener.enterConstraints_set_mode(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstraints_set_mode) { - listener.exitConstraints_set_mode(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstraints_set_mode) { - return visitor.visitConstraints_set_mode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CheckpointstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CHECKPOINT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CHECKPOINT, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_checkpointstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCheckpointstmt) { - listener.enterCheckpointstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCheckpointstmt) { - listener.exitCheckpointstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCheckpointstmt) { - return visitor.visitCheckpointstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DiscardstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DISCARD(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DISCARD, 0)!; - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public KW_TEMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMP, 0); - } - public KW_TEMPORARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); - } - public KW_PLANS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PLANS, 0); - } - public KW_SEQUENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_discardstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDiscardstmt) { - listener.enterDiscardstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDiscardstmt) { - listener.exitDiscardstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDiscardstmt) { - return visitor.visitDiscardstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AltertablestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); - } - public relation_expr(): Relation_exprContext | null { - return this.getRuleContext(0, Relation_exprContext); - } - public alter_table_cmds(): Alter_table_cmdsContext | null { - return this.getRuleContext(0, Alter_table_cmdsContext); - } - public partition_cmd(): Partition_cmdContext | null { - return this.getRuleContext(0, Partition_cmdContext); - } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_TABLESPACE(): antlr.TerminalNode[]; - public KW_TABLESPACE(i: number): antlr.TerminalNode | null; - public KW_TABLESPACE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_TABLESPACE); - } else { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, i); - } - } - public tablespace_name(): Tablespace_nameContext[]; - public tablespace_name(i: number): Tablespace_nameContext | null; - public tablespace_name(i?: number): Tablespace_nameContext[] | Tablespace_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Tablespace_nameContext); - } - - return this.getRuleContext(i, Tablespace_nameContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public tablespace_name_create(): Tablespace_name_createContext | null { - return this.getRuleContext(0, Tablespace_name_createContext); - } - public KW_OWNED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNED, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BY, 0); - } - public role_list(): Role_listContext | null { - return this.getRuleContext(0, Role_listContext); - } - public opt_nowait(): Opt_nowaitContext | null { - return this.getRuleContext(0, Opt_nowaitContext); - } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); - } - public KW_ATTACH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ATTACH, 0); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0); - } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public KW_VALUES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUES, 0); - } - public partition_bound_spec(): Partition_bound_specContext | null { - return this.getRuleContext(0, Partition_bound_specContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_DETACH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DETACH, 0); - } - public KW_CONCURRENTLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); - } - public KW_FINALIZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FINALIZE, 0); - } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); - } - public index_partition_cmd(): Index_partition_cmdContext | null { - return this.getRuleContext(0, Index_partition_cmdContext); - } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); - } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); - } - public view_name(): View_nameContext | null { - return this.getRuleContext(0, View_nameContext); - } - public KW_MATERIALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); - } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altertablestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltertablestmt) { - listener.enterAltertablestmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltertablestmt) { - listener.exitAltertablestmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltertablestmt) { - return visitor.visitAltertablestmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_table_cmdsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alter_table_cmd(): Alter_table_cmdContext[]; - public alter_table_cmd(i: number): Alter_table_cmdContext | null; - public alter_table_cmd(i?: number): Alter_table_cmdContext[] | Alter_table_cmdContext | null { - if (i === undefined) { - return this.getRuleContexts(Alter_table_cmdContext); - } - - return this.getRuleContext(i, Alter_table_cmdContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_table_cmds; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_table_cmds) { - listener.enterAlter_table_cmds(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_table_cmds) { - listener.exitAlter_table_cmds(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_table_cmds) { - return visitor.visitAlter_table_cmds(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Partition_bound_specContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public opt_type_modifiers(): Opt_type_modifiersContext | null { - return this.getRuleContext(0, Opt_type_modifiersContext); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public partition_bound_cluase(): Partition_bound_cluaseContext[]; - public partition_bound_cluase(i: number): Partition_bound_cluaseContext | null; - public partition_bound_cluase(i?: number): Partition_bound_cluaseContext[] | Partition_bound_cluaseContext | null { - if (i === undefined) { - return this.getRuleContexts(Partition_bound_cluaseContext); - } - - return this.getRuleContext(i, Partition_bound_cluaseContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public partition_with_cluase(): Partition_with_cluaseContext | null { - return this.getRuleContext(0, Partition_with_cluaseContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partition_bound_spec; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartition_bound_spec) { - listener.enterPartition_bound_spec(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartition_bound_spec) { - listener.exitPartition_bound_spec(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartition_bound_spec) { - return visitor.visitPartition_bound_spec(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Partition_bound_cluaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public partition_bound_choose(): Partition_bound_chooseContext[]; - public partition_bound_choose(i: number): Partition_bound_chooseContext | null; - public partition_bound_choose(i?: number): Partition_bound_chooseContext[] | Partition_bound_chooseContext | null { - if (i === undefined) { - return this.getRuleContexts(Partition_bound_chooseContext); - } - - return this.getRuleContext(i, Partition_bound_chooseContext); - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partition_bound_cluase; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartition_bound_cluase) { - listener.enterPartition_bound_cluase(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartition_bound_cluase) { - listener.exitPartition_bound_cluase(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartition_bound_cluase) { - return visitor.visitPartition_bound_cluase(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Partition_bound_chooseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_type_modifiers(): Opt_type_modifiersContext | null { - return this.getRuleContext(0, Opt_type_modifiersContext); - } - public KW_MINVALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MINVALUE, 0); - } - public KW_MAXVALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MAXVALUE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partition_bound_choose; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartition_bound_choose) { - listener.enterPartition_bound_choose(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartition_bound_choose) { - listener.exitPartition_bound_choose(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartition_bound_choose) { - return visitor.visitPartition_bound_choose(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Partition_with_cluaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public KW_MODULUS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MODULUS, 0)!; - } - public numericonly(): NumericonlyContext[]; - public numericonly(i: number): NumericonlyContext | null; - public numericonly(i?: number): NumericonlyContext[] | NumericonlyContext | null { - if (i === undefined) { - return this.getRuleContexts(NumericonlyContext); - } - - return this.getRuleContext(i, NumericonlyContext); - } - public COMMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.COMMA, 0)!; - } - public KW_REMAINDER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REMAINDER, 0)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partition_with_cluase; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartition_with_cluase) { - listener.enterPartition_with_cluase(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartition_with_cluase) { - listener.exitPartition_with_cluase(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartition_with_cluase) { - return visitor.visitPartition_with_cluase(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Partition_cmdContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ATTACH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ATTACH, 0); - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public partitionboundspec(): PartitionboundspecContext | null { - return this.getRuleContext(0, PartitionboundspecContext); - } - public KW_DETACH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DETACH, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partition_cmd; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartition_cmd) { - listener.enterPartition_cmd(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartition_cmd) { - listener.exitPartition_cmd(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartition_cmd) { - return visitor.visitPartition_cmd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Index_partition_cmdContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ATTACH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ATTACH, 0)!; - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_partition_cmd; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_partition_cmd) { - listener.enterIndex_partition_cmd(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_partition_cmd) { - listener.exitIndex_partition_cmd(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_partition_cmd) { - return visitor.visitIndex_partition_cmd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_table_cmdContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public constraintelem(): ConstraintelemContext | null { - return this.getRuleContext(0, ConstraintelemContext); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public KW_ALTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALTER, 0); - } - public constraintattributespec(): ConstraintattributespecContext | null { - return this.getRuleContext(0, ConstraintattributespecContext); - } - public KW_VALIDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALIDATE, 0); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); - } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); - } - public KW_OIDS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OIDS, 0); - } - public KW_CLUSTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLUSTER, 0); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); - } - public KW_LOGGED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOGGED, 0); - } - public KW_UNLOGGED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); - } - public KW_ENABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENABLE, 0); - } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); - } - public KW_REPLICA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLICA, 0); - } - public KW_ALWAYS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALWAYS, 0); - } - public KW_DISABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISABLE, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); - } - public KW_RULE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RULE, 0); - } - public KW_INHERIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INHERIT, 0); - } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public KW_OWNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNER, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); - } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); - } - public tablespace_name_create(): Tablespace_name_createContext | null { - return this.getRuleContext(0, Tablespace_name_createContext); - } - public reloptions(): ReloptionsContext | null { - return this.getRuleContext(0, ReloptionsContext); - } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); - } - public KW_IDENTITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); - } - public replica_identity(): Replica_identityContext | null { - return this.getRuleContext(0, Replica_identityContext); - } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); - } - public KW_LEVEL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEVEL, 0); - } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SECURITY, 0); - } - public KW_FORCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FORCE, 0); - } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); - } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLUMN, 0); - } - public column_def(): Column_defContext | null { - return this.getRuleContext(0, Column_defContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public alter_column_default(): Alter_column_defaultContext | null { - return this.getRuleContext(0, Alter_column_defaultContext); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_EXPRESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXPRESSION, 0); - } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); - } - public signediconst(): SignediconstContext | null { - return this.getRuleContext(0, SignediconstContext); - } - public KW_STORAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STORAGE, 0); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } - public KW_GENERATED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GENERATED, 0); - } - public generated_when(): Generated_whenContext | null { - return this.getRuleContext(0, Generated_whenContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public optparenthesizedseqoptlist(): OptparenthesizedseqoptlistContext | null { - return this.getRuleContext(0, OptparenthesizedseqoptlistContext); - } - public alter_identity_column_option_list(): Alter_identity_column_option_listContext | null { - return this.getRuleContext(0, Alter_identity_column_option_listContext); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); - } - public opt_set_data(): Opt_set_dataContext | null { - return this.getRuleContext(0, Opt_set_dataContext); - } - public opt_collate_clause(): Opt_collate_clauseContext | null { - return this.getRuleContext(0, Opt_collate_clauseContext); - } - public alter_using(): Alter_usingContext | null { - return this.getRuleContext(0, Alter_usingContext); - } - public alter_generic_options(): Alter_generic_optionsContext | null { - return this.getRuleContext(0, Alter_generic_optionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_table_cmd; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_table_cmd) { - listener.enterAlter_table_cmd(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_table_cmd) { - listener.exitAlter_table_cmd(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_table_cmd) { - return visitor.visitAlter_table_cmd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_column_defaultContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_DEFAULT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0)!; - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_column_default; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_column_default) { - listener.enterAlter_column_default(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_column_default) { - listener.exitAlter_column_default(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_column_default) { - return visitor.visitAlter_column_default(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_drop_behaviorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CASCADE, 0); - } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_drop_behavior; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_drop_behavior) { - listener.enterOpt_drop_behavior(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_drop_behavior) { - listener.exitOpt_drop_behavior(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_drop_behavior) { - return visitor.visitOpt_drop_behavior(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_collate_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COLLATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_collate_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_collate_clause) { - listener.enterOpt_collate_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_collate_clause) { - listener.exitOpt_collate_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_collate_clause) { - return visitor.visitOpt_collate_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_usingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_using; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_using) { - listener.enterAlter_using(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_using) { - listener.exitAlter_using(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_using) { - return visitor.visitAlter_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Replica_identityContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NOTHING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTHING, 0); - } - public KW_FULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FULL, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_replica_identity; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReplica_identity) { - listener.enterReplica_identity(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReplica_identity) { - listener.exitReplica_identity(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReplica_identity) { - return visitor.visitReplica_identity(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReloptionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public reloption_list(): Reloption_listContext { - return this.getRuleContext(0, Reloption_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reloptions; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReloptions) { - listener.enterReloptions(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReloptions) { - listener.exitReloptions(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReloptions) { - return visitor.visitReloptions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_reloptionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; - } - public reloptions(): ReloptionsContext { - return this.getRuleContext(0, ReloptionsContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_reloptions; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_reloptions) { - listener.enterOpt_reloptions(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_reloptions) { - listener.exitOpt_reloptions(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_reloptions) { - return visitor.visitOpt_reloptions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Reloption_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public reloption_elem(): Reloption_elemContext[]; - public reloption_elem(i: number): Reloption_elemContext | null; - public reloption_elem(i?: number): Reloption_elemContext[] | Reloption_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Reloption_elemContext); - } - - return this.getRuleContext(i, Reloption_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reloption_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReloption_list) { - listener.enterReloption_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReloption_list) { - listener.exitReloption_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReloption_list) { - return visitor.visitReloption_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Reloption_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public collabel(): CollabelContext[]; - public collabel(i: number): CollabelContext | null; - public collabel(i?: number): CollabelContext[] | CollabelContext | null { - if (i === undefined) { - return this.getRuleContexts(CollabelContext); - } - - return this.getRuleContext(i, CollabelContext); - } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); - } - public def_arg(): Def_argContext | null { - return this.getRuleContext(0, Def_argContext); - } - public DOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.DOT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reloption_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReloption_elem) { - listener.enterReloption_elem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReloption_elem) { - listener.exitReloption_elem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReloption_elem) { - return visitor.visitReloption_elem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_identity_column_option_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alter_identity_column_option(): Alter_identity_column_optionContext[]; - public alter_identity_column_option(i: number): Alter_identity_column_optionContext | null; - public alter_identity_column_option(i?: number): Alter_identity_column_optionContext[] | Alter_identity_column_optionContext | null { - if (i === undefined) { - return this.getRuleContexts(Alter_identity_column_optionContext); - } - - return this.getRuleContext(i, Alter_identity_column_optionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_identity_column_option_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_identity_column_option_list) { - listener.enterAlter_identity_column_option_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_identity_column_option_list) { - listener.exitAlter_identity_column_option_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_identity_column_option_list) { - return visitor.visitAlter_identity_column_option_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_identity_column_optionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RESTART(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTART, 0); - } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public seqoptelem(): SeqoptelemContext | null { - return this.getRuleContext(0, SeqoptelemContext); - } - public KW_GENERATED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GENERATED, 0); - } - public generated_when(): Generated_whenContext | null { - return this.getRuleContext(0, Generated_whenContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_identity_column_option; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_identity_column_option) { - listener.enterAlter_identity_column_option(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_identity_column_option) { - listener.exitAlter_identity_column_option(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_identity_column_option) { - return visitor.visitAlter_identity_column_option(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PartitionboundspecContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public KW_VALUES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUES, 0); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public OPEN_PAREN(): antlr.TerminalNode[]; - public OPEN_PAREN(i: number): antlr.TerminalNode | null; - public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.OPEN_PAREN); - } else { - return this.getToken(PostgreSqlParser.OPEN_PAREN, i); - } - } - public hash_partbound(): Hash_partboundContext | null { - return this.getRuleContext(0, Hash_partboundContext); - } - public CLOSE_PAREN(): antlr.TerminalNode[]; - public CLOSE_PAREN(i: number): antlr.TerminalNode | null; - public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.CLOSE_PAREN); - } else { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); - } - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public expr_list(): Expr_listContext[]; - public expr_list(i: number): Expr_listContext | null; - public expr_list(i?: number): Expr_listContext[] | Expr_listContext | null { - if (i === undefined) { - return this.getRuleContexts(Expr_listContext); - } - - return this.getRuleContext(i, Expr_listContext); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partitionboundspec; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartitionboundspec) { - listener.enterPartitionboundspec(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartitionboundspec) { - listener.exitPartitionboundspec(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartitionboundspec) { - return visitor.visitPartitionboundspec(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Hash_partbound_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public nonreservedword(): NonreservedwordContext { - return this.getRuleContext(0, NonreservedwordContext)!; - } - public iconst(): IconstContext { - return this.getRuleContext(0, IconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_hash_partbound_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterHash_partbound_elem) { - listener.enterHash_partbound_elem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitHash_partbound_elem) { - listener.exitHash_partbound_elem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitHash_partbound_elem) { - return visitor.visitHash_partbound_elem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Hash_partboundContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public hash_partbound_elem(): Hash_partbound_elemContext[]; - public hash_partbound_elem(i: number): Hash_partbound_elemContext | null; - public hash_partbound_elem(i?: number): Hash_partbound_elemContext[] | Hash_partbound_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Hash_partbound_elemContext); - } - - return this.getRuleContext(i, Hash_partbound_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_hash_partbound; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterHash_partbound) { - listener.enterHash_partbound(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitHash_partbound) { - listener.exitHash_partbound(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitHash_partbound) { - return visitor.visitHash_partbound(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AltercompositetypestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public alter_type_cmds(): Alter_type_cmdsContext { - return this.getRuleContext(0, Alter_type_cmdsContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altercompositetypestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltercompositetypestmt) { - listener.enterAltercompositetypestmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltercompositetypestmt) { - listener.exitAltercompositetypestmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltercompositetypestmt) { - return visitor.visitAltercompositetypestmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_type_cmdsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alter_type_cmd(): Alter_type_cmdContext[]; - public alter_type_cmd(i: number): Alter_type_cmdContext | null; - public alter_type_cmd(i?: number): Alter_type_cmdContext[] | Alter_type_cmdContext | null { - if (i === undefined) { - return this.getRuleContexts(Alter_type_cmdContext); - } - - return this.getRuleContext(i, Alter_type_cmdContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_type_cmds; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_type_cmds) { - listener.enterAlter_type_cmds(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_type_cmds) { - listener.exitAlter_type_cmds(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_type_cmds) { - return visitor.visitAlter_type_cmds(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Alter_type_cmdContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public KW_ATTRIBUTE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ATTRIBUTE, 0)!; - } - public tablefuncelement(): TablefuncelementContext | null { - return this.getRuleContext(0, TablefuncelementContext); - } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); - } - public KW_ALTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALTER, 0); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); - } - public opt_set_data(): Opt_set_dataContext | null { - return this.getRuleContext(0, Opt_set_dataContext); - } - public opt_collate_clause(): Opt_collate_clauseContext | null { - return this.getRuleContext(0, Opt_collate_clauseContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_type_cmd; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_type_cmd) { - listener.enterAlter_type_cmd(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_type_cmd) { - listener.exitAlter_type_cmd(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_type_cmd) { - return visitor.visitAlter_type_cmd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CloseportalstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CLOSE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CLOSE, 0)!; - } - public cursor_name(): Cursor_nameContext | null { - return this.getRuleContext(0, Cursor_nameContext); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_closeportalstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCloseportalstmt) { - listener.enterCloseportalstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCloseportalstmt) { - listener.exitCloseportalstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCloseportalstmt) { - return visitor.visitCloseportalstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CopystmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COPY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COPY, 0)!; - } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); - } - public copy_from(): Copy_fromContext | null { - return this.getRuleContext(0, Copy_fromContext); - } - public copy_file_name(): Copy_file_nameContext { - return this.getRuleContext(0, Copy_file_nameContext)!; - } - public copy_options(): Copy_optionsContext { - return this.getRuleContext(0, Copy_optionsContext)!; - } - public opt_binary(): Opt_binaryContext | null { - return this.getRuleContext(0, Opt_binaryContext); - } - public opt_column_list(): Opt_column_listContext | null { - return this.getRuleContext(0, Opt_column_listContext); - } - public opt_program(): Opt_programContext | null { - return this.getRuleContext(0, Opt_programContext); - } - public copy_delimiter(): Copy_delimiterContext | null { - return this.getRuleContext(0, Copy_delimiterContext); - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public preparablestmt(): PreparablestmtContext | null { - return this.getRuleContext(0, PreparablestmtContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copystmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopystmt) { - listener.enterCopystmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopystmt) { - listener.exitCopystmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopystmt) { - return visitor.visitCopystmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_fromContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_from; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_from) { - listener.enterCopy_from(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_from) { - listener.exitCopy_from(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_from) { - return visitor.visitCopy_from(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_programContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PROGRAM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PROGRAM, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_program; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_program) { - listener.enterOpt_program(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_program) { - listener.exitOpt_program(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_program) { - return visitor.visitOpt_program(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_file_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public KW_STDIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STDIN, 0); - } - public KW_STDOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STDOUT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_file_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_file_name) { - listener.enterCopy_file_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_file_name) { - listener.exitCopy_file_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_file_name) { - return visitor.visitCopy_file_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public copy_opt_list(): Copy_opt_listContext | null { - return this.getRuleContext(0, Copy_opt_listContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public copy_generic_opt_list(): Copy_generic_opt_listContext | null { - return this.getRuleContext(0, Copy_generic_opt_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_options; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_options) { - listener.enterCopy_options(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_options) { - listener.exitCopy_options(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_options) { - return visitor.visitCopy_options(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_opt_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public copy_opt_item(): Copy_opt_itemContext[]; - public copy_opt_item(i: number): Copy_opt_itemContext | null; - public copy_opt_item(i?: number): Copy_opt_itemContext[] | Copy_opt_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Copy_opt_itemContext); - } - - return this.getRuleContext(i, Copy_opt_itemContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_opt_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_opt_list) { - listener.enterCopy_opt_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_opt_list) { - listener.exitCopy_opt_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_opt_list) { - return visitor.visitCopy_opt_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_opt_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_BINARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BINARY, 0); - } - public KW_FREEZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FREEZE, 0); - } - public KW_DELIMITER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DELIMITER, 0); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public opt_as(): Opt_asContext | null { - return this.getRuleContext(0, Opt_asContext); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_CSV(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CSV, 0); - } - public KW_HEADER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_HEADER, 0); - } - public KW_QUOTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_QUOTE, 0); - } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ESCAPE, 0); - } - public KW_FORCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FORCE, 0); - } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); - } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public KW_ENCODING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENCODING, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_opt_item; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_opt_item) { - listener.enterCopy_opt_item(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_opt_item) { - listener.exitCopy_opt_item(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_opt_item) { - return visitor.visitCopy_opt_item(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_binaryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_BINARY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BINARY, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_binary; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_binary) { - listener.enterOpt_binary(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_binary) { - listener.exitOpt_binary(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_binary) { - return visitor.visitOpt_binary(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_delimiterContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DELIMITERS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DELIMITERS, 0)!; - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public opt_using(): Opt_usingContext | null { - return this.getRuleContext(0, Opt_usingContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_delimiter; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_delimiter) { - listener.enterCopy_delimiter(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_delimiter) { - listener.exitCopy_delimiter(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_delimiter) { - return visitor.visitCopy_delimiter(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_usingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_using; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_using) { - listener.enterOpt_using(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_using) { - listener.exitOpt_using(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_using) { - return visitor.visitOpt_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_generic_opt_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public copy_generic_opt_elem(): Copy_generic_opt_elemContext[]; - public copy_generic_opt_elem(i: number): Copy_generic_opt_elemContext | null; - public copy_generic_opt_elem(i?: number): Copy_generic_opt_elemContext[] | Copy_generic_opt_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Copy_generic_opt_elemContext); - } - - return this.getRuleContext(i, Copy_generic_opt_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_generic_opt_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_generic_opt_list) { - listener.enterCopy_generic_opt_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_generic_opt_list) { - listener.exitCopy_generic_opt_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_generic_opt_list) { - return visitor.visitCopy_generic_opt_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_generic_opt_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; - } - public copy_generic_opt_arg(): Copy_generic_opt_argContext | null { - return this.getRuleContext(0, Copy_generic_opt_argContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_generic_opt_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_generic_opt_elem) { - listener.enterCopy_generic_opt_elem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_generic_opt_elem) { - listener.exitCopy_generic_opt_elem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_generic_opt_elem) { - return visitor.visitCopy_generic_opt_elem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_generic_opt_argContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { - return this.getRuleContext(0, Opt_boolean_or_stringContext); - } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); - } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public copy_generic_opt_arg_list(): Copy_generic_opt_arg_listContext | null { - return this.getRuleContext(0, Copy_generic_opt_arg_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_generic_opt_arg; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_generic_opt_arg) { - listener.enterCopy_generic_opt_arg(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_generic_opt_arg) { - listener.exitCopy_generic_opt_arg(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_generic_opt_arg) { - return visitor.visitCopy_generic_opt_arg(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_generic_opt_arg_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public copy_generic_opt_arg_list_item(): Copy_generic_opt_arg_list_itemContext[]; - public copy_generic_opt_arg_list_item(i: number): Copy_generic_opt_arg_list_itemContext | null; - public copy_generic_opt_arg_list_item(i?: number): Copy_generic_opt_arg_list_itemContext[] | Copy_generic_opt_arg_list_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Copy_generic_opt_arg_list_itemContext); - } - - return this.getRuleContext(i, Copy_generic_opt_arg_list_itemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_generic_opt_arg_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_generic_opt_arg_list) { - listener.enterCopy_generic_opt_arg_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_generic_opt_arg_list) { - listener.exitCopy_generic_opt_arg_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_generic_opt_arg_list) { - return visitor.visitCopy_generic_opt_arg_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Copy_generic_opt_arg_list_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_boolean_or_string_column(): Opt_boolean_or_string_columnContext { - return this.getRuleContext(0, Opt_boolean_or_string_columnContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_copy_generic_opt_arg_list_item; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCopy_generic_opt_arg_list_item) { - listener.enterCopy_generic_opt_arg_list_item(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCopy_generic_opt_arg_list_item) { - listener.exitCopy_generic_opt_arg_list_item(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCopy_generic_opt_arg_list_item) { - return visitor.visitCopy_generic_opt_arg_list_item(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreatestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createstmt; - } - public override copyFrom(ctx: CreatestmtContext): void { - super.copyFrom(ctx); - } -} -export class ColumnCreateTableContext extends CreatestmtContext { - public constructor(ctx: CreatestmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; - } - public table_name_create(): Table_name_createContext { - return this.getRuleContext(0, Table_name_createContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0); - } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); - } - public partitionboundspec(): PartitionboundspecContext | null { - return this.getRuleContext(0, PartitionboundspecContext); - } - public opttemp(): OpttempContext | null { - return this.getRuleContext(0, OpttempContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public table_column_list(): Table_column_listContext | null { - return this.getRuleContext(0, Table_column_listContext); - } - public optinherit(): OptinheritContext | null { - return this.getRuleContext(0, OptinheritContext); - } - public optpartitionspec(): OptpartitionspecContext | null { - return this.getRuleContext(0, OptpartitionspecContext); - } - public table_access_method_clause(): Table_access_method_clauseContext | null { - return this.getRuleContext(0, Table_access_method_clauseContext); - } - public optwith(): OptwithContext | null { - return this.getRuleContext(0, OptwithContext); - } - public oncommitoption(): OncommitoptionContext | null { - return this.getRuleContext(0, OncommitoptionContext); - } - public opttablespace(): OpttablespaceContext | null { - return this.getRuleContext(0, OpttablespaceContext); - } - public opttypedtableelementlist(): OpttypedtableelementlistContext | null { - return this.getRuleContext(0, OpttypedtableelementlistContext); - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumnCreateTable) { - listener.enterColumnCreateTable(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumnCreateTable) { - listener.exitColumnCreateTable(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumnCreateTable) { - return visitor.visitColumnCreateTable(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OpttempContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TEMPORARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); - } - public KW_TEMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMP, 0); - } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCAL, 0); - } - public KW_GLOBAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GLOBAL, 0); - } - public KW_UNLOGGED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttemp; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttemp) { - listener.enterOpttemp(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttemp) { - listener.exitOpttemp(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttemp) { - return visitor.visitOpttemp(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Table_column_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableelementlist(): TableelementlistContext { - return this.getRuleContext(0, TableelementlistContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_table_column_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTable_column_list) { - listener.enterTable_column_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTable_column_list) { - listener.exitTable_column_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTable_column_list) { - return visitor.visitTable_column_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OpttableelementlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableelementlist(): TableelementlistContext { - return this.getRuleContext(0, TableelementlistContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttableelementlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttableelementlist) { - listener.enterOpttableelementlist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttableelementlist) { - listener.exitOpttableelementlist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttableelementlist) { - return visitor.visitOpttableelementlist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OpttypedtableelementlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public typedtableelementlist(): TypedtableelementlistContext { - return this.getRuleContext(0, TypedtableelementlistContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttypedtableelementlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttypedtableelementlist) { - listener.enterOpttypedtableelementlist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttypedtableelementlist) { - listener.exitOpttypedtableelementlist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttypedtableelementlist) { - return visitor.visitOpttypedtableelementlist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TableelementlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableelement(): TableelementContext[]; - public tableelement(i: number): TableelementContext | null; - public tableelement(i?: number): TableelementContext[] | TableelementContext | null { - if (i === undefined) { - return this.getRuleContexts(TableelementContext); - } - - return this.getRuleContext(i, TableelementContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tableelementlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTableelementlist) { - listener.enterTableelementlist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTableelementlist) { - listener.exitTableelementlist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTableelementlist) { - return visitor.visitTableelementlist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypedtableelementlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public typedtableelement(): TypedtableelementContext[]; - public typedtableelement(i: number): TypedtableelementContext | null; - public typedtableelement(i?: number): TypedtableelementContext[] | TypedtableelementContext | null { - if (i === undefined) { - return this.getRuleContexts(TypedtableelementContext); - } - - return this.getRuleContext(i, TypedtableelementContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_typedtableelementlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTypedtableelementlist) { - listener.enterTypedtableelementlist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTypedtableelementlist) { - listener.exitTypedtableelementlist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTypedtableelementlist) { - return visitor.visitTypedtableelementlist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TableelementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_def(): Column_defContext | null { - return this.getRuleContext(0, Column_defContext); - } - public tablelikeclause(): TablelikeclauseContext | null { - return this.getRuleContext(0, TablelikeclauseContext); - } - public tableconstraint(): TableconstraintContext | null { - return this.getRuleContext(0, TableconstraintContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tableelement; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTableelement) { - listener.enterTableelement(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTableelement) { - listener.exitTableelement(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTableelement) { - return visitor.visitTableelement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypedtableelementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public columnOptions(): ColumnOptionsContext | null { - return this.getRuleContext(0, ColumnOptionsContext); - } - public tableconstraint(): TableconstraintContext | null { - return this.getRuleContext(0, TableconstraintContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_typedtableelement; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTypedtableelement) { - listener.enterTypedtableelement(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTypedtableelement) { - listener.exitTypedtableelement(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTypedtableelement) { - return visitor.visitTypedtableelement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Column_defContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_name_create(): Column_name_createContext { - return this.getRuleContext(0, Column_name_createContext)!; - } - public typename(): TypenameContext { - return this.getRuleContext(0, TypenameContext)!; - } - public colquallist(): ColquallistContext { - return this.getRuleContext(0, ColquallistContext)!; - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public storageCluase(): StorageCluaseContext | null { - return this.getRuleContext(0, StorageCluaseContext); - } - public compressionCluase(): CompressionCluaseContext | null { - return this.getRuleContext(0, CompressionCluaseContext); - } - public KW_COLLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public KW_OPTIONS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTIONS, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_column_def; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumn_def) { - listener.enterColumn_def(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumn_def) { - listener.exitColumn_def(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumn_def) { - return visitor.visitColumn_def(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CompressionCluaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMPRESSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COMPRESSION, 0)!; - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_compressionCluase; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCompressionCluase) { - listener.enterCompressionCluase(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCompressionCluase) { - listener.exitCompressionCluase(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCompressionCluase) { - return visitor.visitCompressionCluase(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StorageCluaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_STORAGE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_STORAGE, 0)!; - } - public KW_PLAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PLAIN, 0); - } - public KW_EXTERNAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); - } - public KW_EXTENDED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTENDED, 0); - } - public KW_MAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MAIN, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_storageCluase; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStorageCluase) { - listener.enterStorageCluase(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStorageCluase) { - listener.exitStorageCluase(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStorageCluase) { - return visitor.visitStorageCluase(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColumnOptionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_name_create(): Column_name_createContext { - return this.getRuleContext(0, Column_name_createContext)!; - } - public colquallist(): ColquallistContext { - return this.getRuleContext(0, ColquallistContext)!; - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public KW_OPTIONS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTIONS, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_columnOptions; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumnOptions) { - listener.enterColumnOptions(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumnOptions) { - listener.exitColumnOptions(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumnOptions) { - return visitor.visitColumnOptions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColquallistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colconstraint(): ColconstraintContext[]; - public colconstraint(i: number): ColconstraintContext | null; - public colconstraint(i?: number): ColconstraintContext[] | ColconstraintContext | null { - if (i === undefined) { - return this.getRuleContexts(ColconstraintContext); - } - - return this.getRuleContext(i, ColconstraintContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_colquallist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColquallist) { - listener.enterColquallist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColquallist) { - listener.exitColquallist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColquallist) { - return visitor.visitColquallist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColconstraintContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colconstraintelem(): ColconstraintelemContext { - return this.getRuleContext(0, ColconstraintelemContext)!; - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public deferrable_trigger(): Deferrable_triggerContext | null { - return this.getRuleContext(0, Deferrable_triggerContext); - } - public initially_trigger(): Initially_triggerContext | null { - return this.getRuleContext(0, Initially_triggerContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_colconstraint; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColconstraint) { - listener.enterColconstraint(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColconstraint) { - listener.exitColconstraint(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColconstraint) { - return visitor.visitColconstraint(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColconstraintelemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_UNIQUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); - } - public opt_definition(): Opt_definitionContext | null { - return this.getRuleContext(0, Opt_definitionContext); - } - public optconstablespace(): OptconstablespaceContext | null { - return this.getRuleContext(0, OptconstablespaceContext); - } - public index_paramenters_create(): Index_paramenters_createContext | null { - return this.getRuleContext(0, Index_paramenters_createContext); - } - public nulls_distinct(): Nulls_distinctContext | null { - return this.getRuleContext(0, Nulls_distinctContext); - } - public KW_PRIMARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIMARY, 0); - } - public KW_KEY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_KEY, 0); - } - public KW_CHECK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHECK, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public opt_no_inherit(): Opt_no_inheritContext | null { - return this.getRuleContext(0, Opt_no_inheritContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public b_expr(): B_exprContext | null { - return this.getRuleContext(0, B_exprContext); - } - public KW_GENERATED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GENERATED, 0); - } - public generated_when(): Generated_whenContext | null { - return this.getRuleContext(0, Generated_whenContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public KW_IDENTITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); - } - public KW_STORED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STORED, 0); - } - public optparenthesizedseqoptlist(): OptparenthesizedseqoptlistContext | null { - return this.getRuleContext(0, OptparenthesizedseqoptlistContext); - } - public KW_REFERENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); - } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); - } - public opt_column_list(): Opt_column_listContext | null { - return this.getRuleContext(0, Opt_column_listContext); - } - public key_match(): Key_matchContext | null { - return this.getRuleContext(0, Key_matchContext); - } - public key_actions(): Key_actionsContext | null { - return this.getRuleContext(0, Key_actionsContext); - } - public opt_collate(): Opt_collateContext | null { - return this.getRuleContext(0, Opt_collateContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_colconstraintelem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColconstraintelem) { - listener.enterColconstraintelem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColconstraintelem) { - listener.exitColconstraintelem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColconstraintelem) { - return visitor.visitColconstraintelem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Nulls_distinctContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NULLS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NULLS, 0)!; - } - public KW_DISTINCT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DISTINCT, 0)!; - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_nulls_distinct; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNulls_distinct) { - listener.enterNulls_distinct(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNulls_distinct) { - listener.exitNulls_distinct(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNulls_distinct) { - return visitor.visitNulls_distinct(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Generated_whenContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALWAYS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALWAYS, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BY, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generated_when; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGenerated_when) { - listener.enterGenerated_when(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGenerated_when) { - listener.exitGenerated_when(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGenerated_when) { - return visitor.visitGenerated_when(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Deferrable_triggerContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DEFERRABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0)!; - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_deferrable_trigger; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDeferrable_trigger) { - listener.enterDeferrable_trigger(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDeferrable_trigger) { - listener.exitDeferrable_trigger(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDeferrable_trigger) { - return visitor.visitDeferrable_trigger(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Initially_triggerContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INITIALLY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INITIALLY, 0)!; - } - public KW_DEFERRED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFERRED, 0); - } - public KW_IMMEDIATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IMMEDIATE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_initially_trigger; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInitially_trigger) { - listener.enterInitially_trigger(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInitially_trigger) { - listener.exitInitially_trigger(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInitially_trigger) { - return visitor.visitInitially_trigger(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TablelikeclauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LIKE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LIKE, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public tablelikeoptionlist(): TablelikeoptionlistContext { - return this.getRuleContext(0, TablelikeoptionlistContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tablelikeclause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTablelikeclause) { - listener.enterTablelikeclause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTablelikeclause) { - listener.exitTablelikeclause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTablelikeclause) { - return visitor.visitTablelikeclause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TablelikeoptionlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tablelikeoption(): TablelikeoptionContext[]; - public tablelikeoption(i: number): TablelikeoptionContext | null; - public tablelikeoption(i?: number): TablelikeoptionContext[] | TablelikeoptionContext | null { - if (i === undefined) { - return this.getRuleContexts(TablelikeoptionContext); - } - - return this.getRuleContext(i, TablelikeoptionContext); - } - public KW_INCLUDING(): antlr.TerminalNode[]; - public KW_INCLUDING(i: number): antlr.TerminalNode | null; - public KW_INCLUDING(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_INCLUDING); - } else { - return this.getToken(PostgreSqlParser.KW_INCLUDING, i); - } - } - public KW_EXCLUDING(): antlr.TerminalNode[]; - public KW_EXCLUDING(i: number): antlr.TerminalNode | null; - public KW_EXCLUDING(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_EXCLUDING); - } else { - return this.getToken(PostgreSqlParser.KW_EXCLUDING, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tablelikeoptionlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTablelikeoptionlist) { - listener.enterTablelikeoptionlist(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTablelikeoptionlist) { - listener.exitTablelikeoptionlist(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTablelikeoptionlist) { - return visitor.visitTablelikeoptionlist(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TablelikeoptionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMMENTS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COMMENTS, 0); - } - public KW_CONSTRAINTS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINTS, 0); - } - public KW_DEFAULTS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULTS, 0); - } - public KW_IDENTITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); - } - public KW_GENERATED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GENERATED, 0); - } - public KW_INDEXES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEXES, 0); - } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); - } - public KW_STORAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STORAGE, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tablelikeoption; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTablelikeoption) { - listener.enterTablelikeoption(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTablelikeoption) { - listener.exitTablelikeoption(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTablelikeoption) { - return visitor.visitTablelikeoption(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TableconstraintContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public constraintelem(): ConstraintelemContext { - return this.getRuleContext(0, ConstraintelemContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tableconstraint; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTableconstraint) { - listener.enterTableconstraint(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTableconstraint) { - listener.exitTableconstraint(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTableconstraint) { - return visitor.visitTableconstraint(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstraintelemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CHECK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHECK, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public constraintattributespec(): ConstraintattributespecContext | null { - return this.getRuleContext(0, ConstraintattributespecContext); - } - public KW_UNIQUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); - } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); - } - public existingindex(): ExistingindexContext | null { - return this.getRuleContext(0, ExistingindexContext); - } - public opt_c_include(): Opt_c_includeContext | null { - return this.getRuleContext(0, Opt_c_includeContext); - } - public opt_definition(): Opt_definitionContext | null { - return this.getRuleContext(0, Opt_definitionContext); - } - public optconstablespace(): OptconstablespaceContext | null { - return this.getRuleContext(0, OptconstablespaceContext); - } - public KW_PRIMARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIMARY, 0); - } - public KW_KEY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_KEY, 0); - } - public KW_EXCLUDE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCLUDE, 0); - } - public exclusionconstraintlist(): ExclusionconstraintlistContext | null { - return this.getRuleContext(0, ExclusionconstraintlistContext); - } - public access_method_clause(): Access_method_clauseContext | null { - return this.getRuleContext(0, Access_method_clauseContext); - } - public exclusionwhereclause(): ExclusionwhereclauseContext | null { - return this.getRuleContext(0, ExclusionwhereclauseContext); - } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); - } - public KW_REFERENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); - } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); - } - public opt_column_list(): Opt_column_listContext | null { - return this.getRuleContext(0, Opt_column_listContext); - } - public key_match(): Key_matchContext | null { - return this.getRuleContext(0, Key_matchContext); - } - public key_actions(): Key_actionsContext | null { - return this.getRuleContext(0, Key_actionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constraintelem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstraintelem) { - listener.enterConstraintelem(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstraintelem) { - listener.exitConstraintelem(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstraintelem) { - return visitor.visitConstraintelem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_no_inheritContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NO, 0)!; - } - public KW_INHERIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INHERIT, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_no_inherit; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_no_inherit) { - listener.enterOpt_no_inherit(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_no_inherit) { - listener.exitOpt_no_inherit(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_no_inherit) { - return visitor.visitOpt_no_inherit(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_column_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public column_list(): Column_listContext { - return this.getRuleContext(0, Column_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_column_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_column_list) { - listener.enterOpt_column_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_column_list) { - listener.exitOpt_column_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_column_list) { - return visitor.visitOpt_column_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_column_list_createContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public column_list_create(): Column_list_createContext { - return this.getRuleContext(0, Column_list_createContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_column_list_create; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_column_list_create) { - listener.enterOpt_column_list_create(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_column_list_create) { - listener.exitOpt_column_list_create(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_column_list_create) { - return visitor.visitOpt_column_list_create(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Column_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_name(): Column_nameContext[]; - public column_name(i: number): Column_nameContext | null; - public column_name(i?: number): Column_nameContext[] | Column_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Column_nameContext); - } - - return this.getRuleContext(i, Column_nameContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_column_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumn_list) { - listener.enterColumn_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumn_list) { - listener.exitColumn_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumn_list) { - return visitor.visitColumn_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_END: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 7513; + this.collabel(); + } + break; + case PostgreSqlParser.STAR: + { + this.state = 7514; + this.match(PostgreSqlParser.STAR); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case PostgreSqlParser.OPEN_BRACKET: + this.enterOuterAlt(localContext, 2); + { + this.state = 7517; + this.match(PostgreSqlParser.OPEN_BRACKET); + this.state = 7526; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1032, this.context) ) { + case 1: + { + this.state = 7518; + this.expression(); + } + break; + case 2: + { + this.state = 7520; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7519; + this.expression(); + } + } -export class Column_list_createContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_name_create(): Column_name_createContext[]; - public column_name_create(i: number): Column_name_createContext | null; - public column_name_create(i?: number): Column_name_createContext[] | Column_name_createContext | null { - if (i === undefined) { - return this.getRuleContexts(Column_name_createContext); - } + this.state = 7522; + this.match(PostgreSqlParser.COLON); + this.state = 7524; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7523; + this.expression(); + } + } - return this.getRuleContext(i, Column_name_createContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_column_list_create; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumn_list_create) { - listener.enterColumn_list_create(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumn_list_create) { - listener.exitColumn_list_create(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumn_list_create) { - return visitor.visitColumn_list_create(this); - } else { - return visitor.visitChildren(this); + } + break; + } + this.state = 7528; + this.match(PostgreSqlParser.CLOSE_BRACKET); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } - } -} - - -export class Opt_c_includeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INCLUDE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INCLUDE, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public column_list(): Column_listContext { - return this.getRuleContext(0, Column_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_c_include; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_c_include) { - listener.enterOpt_c_include(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_c_include) { - listener.exitOpt_c_include(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_c_include) { - return visitor.visitOpt_c_include(this); - } else { - return visitor.visitChildren(this); + public indirection(): IndirectionContext { + let localContext = new IndirectionContext(this.context, this.state); + this.enterRule(localContext, 752, PostgreSqlParser.RULE_indirection); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 7532; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 7531; + this.indirection_el(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 7534; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } } - } -} - - -export class Key_matchContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_MATCH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MATCH, 0)!; - } - public KW_FULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FULL, 0); - } - public KW_PARTIAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARTIAL, 0); - } - public KW_SIMPLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SIMPLE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_key_match; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterKey_match) { - listener.enterKey_match(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitKey_match) { - listener.exitKey_match(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitKey_match) { - return visitor.visitKey_match(this); - } else { - return visitor.visitChildren(this); + public opt_indirection(): Opt_indirectionContext { + let localContext = new Opt_indirectionContext(this.context, this.state); + this.enterRule(localContext, 754, PostgreSqlParser.RULE_opt_indirection); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 7539; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7536; + this.indirection_el(); + } + } + } + this.state = 7541; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context); + } + } } - } -} - - -export class ExclusionconstraintlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public exclusionconstraintelem(): ExclusionconstraintelemContext[]; - public exclusionconstraintelem(i: number): ExclusionconstraintelemContext | null; - public exclusionconstraintelem(i?: number): ExclusionconstraintelemContext[] | ExclusionconstraintelemContext | null { - if (i === undefined) { - return this.getRuleContexts(ExclusionconstraintelemContext); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - - return this.getRuleContext(i, ExclusionconstraintelemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exclusionconstraintlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExclusionconstraintlist) { - listener.enterExclusionconstraintlist(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExclusionconstraintlist) { - listener.exitExclusionconstraintlist(this); + public target_list(): Target_listContext { + let localContext = new Target_listContext(this.context, this.state); + this.enterRule(localContext, 756, PostgreSqlParser.RULE_target_list); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 7542; + this.target_el(); + this.state = 7547; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7543; + this.match(PostgreSqlParser.COMMA); + this.state = 7544; + this.target_el(); + } + } + } + this.state = 7549; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context); + } + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExclusionconstraintlist) { - return visitor.visitExclusionconstraintlist(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class ExclusionconstraintelemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public index_elem(): Index_elemContext { - return this.getRuleContext(0, Index_elemContext)!; - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; - } - public any_operator(): Any_operatorContext | null { - return this.getRuleContext(0, Any_operatorContext); - } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exclusionconstraintelem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExclusionconstraintelem) { - listener.enterExclusionconstraintelem(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExclusionconstraintelem) { - listener.exitExclusionconstraintelem(this); + public target_el(): Target_elContext { + let localContext = new Target_elContext(this.context, this.state); + this.enterRule(localContext, 758, PostgreSqlParser.RULE_target_el); + try { + this.state = 7558; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1038, this.context) ) { + case 1: + localContext = new Target_labelContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7550; + this.column_expr_noparen(); + this.state = 7555; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1037, this.context) ) { + case 1: + { + this.state = 7551; + this.match(PostgreSqlParser.KW_AS); + this.state = 7552; + this.collabel(); + } + break; + case 2: + { + this.state = 7553; + this.identifier(); + } + break; + case 3: + // tslint:disable-next-line:no-empty + { + } + break; + } + } + break; + case 2: + localContext = new Target_starContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 7557; + this.match(PostgreSqlParser.STAR); + } + break; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExclusionconstraintelem) { - return visitor.visitExclusionconstraintelem(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class ExclusionwhereclauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WHERE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHERE, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exclusionwhereclause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExclusionwhereclause) { - listener.enterExclusionwhereclause(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExclusionwhereclause) { - listener.exitExclusionwhereclause(this); + public qualified_name_list(): Qualified_name_listContext { + let localContext = new Qualified_name_listContext(this.context, this.state); + this.enterRule(localContext, 760, PostgreSqlParser.RULE_qualified_name_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7560; + this.qualified_name(); + this.state = 7565; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7561; + this.match(PostgreSqlParser.COMMA); + this.state = 7562; + this.qualified_name(); + } + } + this.state = 7567; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExclusionwhereclause) { - return visitor.visitExclusionwhereclause(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class Key_actionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public key_update(): Key_updateContext | null { - return this.getRuleContext(0, Key_updateContext); - } - public key_delete(): Key_deleteContext | null { - return this.getRuleContext(0, Key_deleteContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_key_actions; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterKey_actions) { - listener.enterKey_actions(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitKey_actions) { - listener.exitKey_actions(this); + public table_name_list(): Table_name_listContext { + let localContext = new Table_name_listContext(this.context, this.state); + this.enterRule(localContext, 762, PostgreSqlParser.RULE_table_name_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7568; + this.table_name(); + this.state = 7573; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7569; + this.match(PostgreSqlParser.COMMA); + this.state = 7570; + this.table_name(); + } + } + this.state = 7575; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitKey_actions) { - return visitor.visitKey_actions(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class Key_updateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0)!; - } - public key_action(): Key_actionContext { - return this.getRuleContext(0, Key_actionContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_key_update; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterKey_update) { - listener.enterKey_update(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitKey_update) { - listener.exitKey_update(this); + public schema_name_list(): Schema_name_listContext { + let localContext = new Schema_name_listContext(this.context, this.state); + this.enterRule(localContext, 764, PostgreSqlParser.RULE_schema_name_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7576; + this.schema_name(); + this.state = 7581; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7577; + this.match(PostgreSqlParser.COMMA); + this.state = 7578; + this.schema_name(); + } + } + this.state = 7583; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitKey_update) { - return visitor.visitKey_update(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class Key_deleteContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DELETE, 0)!; - } - public key_action(): Key_actionContext { - return this.getRuleContext(0, Key_actionContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_key_delete; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterKey_delete) { - listener.enterKey_delete(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitKey_delete) { - listener.exitKey_delete(this); + public database_nameList(): Database_nameListContext { + let localContext = new Database_nameListContext(this.context, this.state); + this.enterRule(localContext, 766, PostgreSqlParser.RULE_database_nameList); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7584; + this.database_name(); + this.state = 7589; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7585; + this.match(PostgreSqlParser.COMMA); + this.state = 7586; + this.database_name(); + } + } + this.state = 7591; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitKey_delete) { - return visitor.visitKey_delete(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Key_actionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_ACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ACTION, 0); - } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); - } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CASCADE, 0); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_key_action; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterKey_action) { - listener.enterKey_action(this); + public tablespace_name_create(): Tablespace_name_createContext { + let localContext = new Tablespace_name_createContext(this.context, this.state); + this.enterRule(localContext, 768, PostgreSqlParser.RULE_tablespace_name_create); + try { + localContext = new TablespaceNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7592; + this.qualified_name(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitKey_action) { - listener.exitKey_action(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitKey_action) { - return visitor.visitKey_action(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class OptinheritContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INHERITS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INHERITS, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public qualified_name_list(): Qualified_name_listContext { - return this.getRuleContext(0, Qualified_name_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optinherit; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptinherit) { - listener.enterOptinherit(this); + public tablespace_name(): Tablespace_nameContext { + let localContext = new Tablespace_nameContext(this.context, this.state); + this.enterRule(localContext, 770, PostgreSqlParser.RULE_tablespace_name); + try { + localContext = new TablespaceNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7594; + this.qualified_name(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptinherit) { - listener.exitOptinherit(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptinherit) { - return visitor.visitOptinherit(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class OptpartitionspecContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public partitionspec(): PartitionspecContext { - return this.getRuleContext(0, PartitionspecContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optpartitionspec; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptpartitionspec) { - listener.enterOptpartitionspec(this); + public table_name_create(): Table_name_createContext { + let localContext = new Table_name_createContext(this.context, this.state); + this.enterRule(localContext, 772, PostgreSqlParser.RULE_table_name_create); + try { + localContext = new TableNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7596; + this.qualified_name(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptpartitionspec) { - listener.exitOptpartitionspec(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptpartitionspec) { - return visitor.visitOptpartitionspec(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class PartitionspecContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; - } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public part_params(): Part_paramsContext { - return this.getRuleContext(0, Part_paramsContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_partitionspec; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPartitionspec) { - listener.enterPartitionspec(this); + public table_name(): Table_nameContext { + let localContext = new Table_nameContext(this.context, this.state); + this.enterRule(localContext, 774, PostgreSqlParser.RULE_table_name); + try { + localContext = new TableNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7598; + this.qualified_name(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPartitionspec) { - listener.exitPartitionspec(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPartitionspec) { - return visitor.visitPartitionspec(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Part_paramsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public part_elem(): Part_elemContext[]; - public part_elem(i: number): Part_elemContext | null; - public part_elem(i?: number): Part_elemContext[] | Part_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Part_elemContext); + public view_name_create(): View_name_createContext { + let localContext = new View_name_createContext(this.context, this.state); + this.enterRule(localContext, 776, PostgreSqlParser.RULE_view_name_create); + try { + localContext = new ViewNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7600; + this.qualified_name(); + } } - - return this.getRuleContext(i, Part_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_part_params; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPart_params) { - listener.enterPart_params(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPart_params) { - listener.exitPart_params(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPart_params) { - return visitor.visitPart_params(this); - } else { - return visitor.visitChildren(this); + public view_name(): View_nameContext { + let localContext = new View_nameContext(this.context, this.state); + this.enterRule(localContext, 778, PostgreSqlParser.RULE_view_name); + try { + localContext = new ViewNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7602; + this.any_name(); + } } - } -} - - -export class Part_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); - } - public opt_collate(): Opt_collateContext | null { - return this.getRuleContext(0, Opt_collateContext); - } - public opt_class(): Opt_classContext | null { - return this.getRuleContext(0, Opt_classContext); - } - public func_expr_windowless(): Func_expr_windowlessContext | null { - return this.getRuleContext(0, Func_expr_windowlessContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_part_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPart_elem) { - listener.enterPart_elem(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPart_elem) { - listener.exitPart_elem(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPart_elem) { - return visitor.visitPart_elem(this); - } else { - return visitor.visitChildren(this); + public qualified_name(): Qualified_nameContext { + let localContext = new Qualified_nameContext(this.context, this.state); + this.enterRule(localContext, 780, PostgreSqlParser.RULE_qualified_name); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7604; + this.colid(); + this.state = 7606; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { + case 1: + { + this.state = 7605; + this.indirection(); + } + break; + } + } } - } -} - - -export class Table_access_method_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_table_access_method_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTable_access_method_clause) { - listener.enterTable_access_method_clause(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTable_access_method_clause) { - listener.exitTable_access_method_clause(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTable_access_method_clause) { - return visitor.visitTable_access_method_clause(this); - } else { - return visitor.visitChildren(this); + public tablespace_name_list(): Tablespace_name_listContext { + let localContext = new Tablespace_name_listContext(this.context, this.state); + this.enterRule(localContext, 782, PostgreSqlParser.RULE_tablespace_name_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7608; + this.tablespace_name(); + this.state = 7613; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7609; + this.match(PostgreSqlParser.COMMA); + this.state = 7610; + this.tablespace_name(); + } + } + this.state = 7615; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } -} - - -export class OptwithContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public reloptions(): ReloptionsContext | null { - return this.getRuleContext(0, ReloptionsContext); - } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); - } - public KW_OIDS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OIDS, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optwith; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptwith) { - listener.enterOptwith(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptwith) { - listener.exitOptwith(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptwith) { - return visitor.visitOptwith(this); - } else { - return visitor.visitChildren(this); + public name_list(): Name_listContext { + let localContext = new Name_listContext(this.context, this.state); + this.enterRule(localContext, 784, PostgreSqlParser.RULE_name_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7616; + this.colid(); + this.state = 7621; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7617; + this.match(PostgreSqlParser.COMMA); + this.state = 7618; + this.colid(); + } + } + this.state = 7623; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } -} - - -export class OncommitoptionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public KW_COMMIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COMMIT, 0)!; - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public KW_DELETE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DELETE, 0); - } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWS, 0); - } - public KW_PRESERVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRESERVE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_oncommitoption; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOncommitoption) { - listener.enterOncommitoption(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOncommitoption) { - listener.exitOncommitoption(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOncommitoption) { - return visitor.visitOncommitoption(this); - } else { - return visitor.visitChildren(this); + public database_name_create(): Database_name_createContext { + let localContext = new Database_name_createContext(this.context, this.state); + this.enterRule(localContext, 786, PostgreSqlParser.RULE_database_name_create); + try { + localContext = new DatabaseNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7624; + this.any_name(); + } } - } -} - - -export class OpttablespaceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TABLESPACE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0)!; - } - public tablespace_name(): Tablespace_nameContext { - return this.getRuleContext(0, Tablespace_nameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttablespace; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttablespace) { - listener.enterOpttablespace(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttablespace) { - listener.exitOpttablespace(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttablespace) { - return visitor.visitOpttablespace(this); - } else { - return visitor.visitChildren(this); + public database_name(): Database_nameContext { + let localContext = new Database_nameContext(this.context, this.state); + this.enterRule(localContext, 788, PostgreSqlParser.RULE_database_name); + try { + localContext = new DatabaseNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7626; + this.any_name(); + } } - } -} - - -export class Index_paramenters_createContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_include(): Opt_includeContext | null { - return this.getRuleContext(0, Opt_includeContext); - } - public with_clause(): With_clauseContext | null { - return this.getRuleContext(0, With_clauseContext); - } - public optconstablespace(): OptconstablespaceContext | null { - return this.getRuleContext(0, OptconstablespaceContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_paramenters_create; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_paramenters_create) { - listener.enterIndex_paramenters_create(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_paramenters_create) { - listener.exitIndex_paramenters_create(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_paramenters_create) { - return visitor.visitIndex_paramenters_create(this); - } else { - return visitor.visitChildren(this); + public schema_name(): Schema_nameContext { + let localContext = new Schema_nameContext(this.context, this.state); + this.enterRule(localContext, 790, PostgreSqlParser.RULE_schema_name); + try { + localContext = new SchemaNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7628; + this.any_name(); + } } - } -} - - -export class OptconstablespaceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public KW_INDEX(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INDEX, 0)!; - } - public KW_TABLESPACE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0)!; - } - public tablespace_name(): Tablespace_nameContext { - return this.getRuleContext(0, Tablespace_nameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optconstablespace; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptconstablespace) { - listener.enterOptconstablespace(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptconstablespace) { - listener.exitOptconstablespace(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptconstablespace) { - return visitor.visitOptconstablespace(this); - } else { - return visitor.visitChildren(this); + public routine_name_create(): Routine_name_createContext { + let localContext = new Routine_name_createContext(this.context, this.state); + this.enterRule(localContext, 792, PostgreSqlParser.RULE_routine_name_create); + try { + localContext = new RoutineNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7630; + this.colid(); + } } - } -} - - -export class ExistingindexContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public KW_INDEX(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INDEX, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_existingindex; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExistingindex) { - listener.enterExistingindex(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExistingindex) { - listener.exitExistingindex(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExistingindex) { - return visitor.visitExistingindex(this); - } else { - return visitor.visitChildren(this); + public routine_name(): Routine_nameContext { + let localContext = new Routine_nameContext(this.context, this.state); + this.enterRule(localContext, 794, PostgreSqlParser.RULE_routine_name); + try { + localContext = new RoutineNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7632; + this.colid(); + } } - } -} - - -export class CreatestatsstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_STATISTICS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; - } - public from_list(): From_listContext { - return this.getRuleContext(0, From_listContext)!; - } - public column_expr_list(): Column_expr_listContext | null { - return this.getRuleContext(0, Column_expr_listContext); - } - public expr_list(): Expr_listContext | null { - return this.getRuleContext(0, Expr_listContext); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public opt_name_list(): Opt_name_listContext | null { - return this.getRuleContext(0, Opt_name_listContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createstatsstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatestatsstmt) { - listener.enterCreatestatsstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatestatsstmt) { - listener.exitCreatestatsstmt(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatestatsstmt) { - return visitor.visitCreatestatsstmt(this); - } else { - return visitor.visitChildren(this); + public procedure_name(): Procedure_nameContext { + let localContext = new Procedure_nameContext(this.context, this.state); + this.enterRule(localContext, 796, PostgreSqlParser.RULE_procedure_name); + try { + this.state = 7638; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context) ) { + case 1: + localContext = new ProcedureNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7634; + this.type_function_name(); + } + break; + case 2: + localContext = new ProcedureNameContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 7635; + this.colid(); + this.state = 7636; + this.indirection(); + } + break; + } } - } -} - - -export class AlterstatsstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_STATISTICS(): antlr.TerminalNode[]; - public KW_STATISTICS(i: number): antlr.TerminalNode | null; - public KW_STATISTICS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_STATISTICS); - } else { - return this.getToken(PostgreSqlParser.KW_STATISTICS, i); - } - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; - } - public signediconst(): SignediconstContext { - return this.getRuleContext(0, SignediconstContext)!; - } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterstatsstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterstatsstmt) { - listener.enterAlterstatsstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterstatsstmt) { - listener.exitAlterstatsstmt(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterstatsstmt) { - return visitor.visitAlterstatsstmt(this); - } else { - return visitor.visitChildren(this); + public procedure_name_create(): Procedure_name_createContext { + let localContext = new Procedure_name_createContext(this.context, this.state); + this.enterRule(localContext, 798, PostgreSqlParser.RULE_procedure_name_create); + try { + this.state = 7644; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1047, this.context) ) { + case 1: + localContext = new ProcedureNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7640; + this.type_function_name(); + } + break; + case 2: + localContext = new ProcedureNameCreateContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 7641; + this.colid(); + this.state = 7642; + this.indirection(); + } + break; + } } - } -} - - -export class CreateasstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createasstmt; - } - public override copyFrom(ctx: CreateasstmtContext): void { - super.copyFrom(ctx); - } -} -export class QueryCreateTableContext extends CreateasstmtContext { - public constructor(ctx: CreateasstmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; - } - public create_as_target(): Create_as_targetContext { - return this.getRuleContext(0, Create_as_targetContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; - } - public selectstmt(): SelectstmtContext { - return this.getRuleContext(0, SelectstmtContext)!; - } - public opttemp(): OpttempContext | null { - return this.getRuleContext(0, OpttempContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opt_with_data(): Opt_with_dataContext | null { - return this.getRuleContext(0, Opt_with_dataContext); - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterQueryCreateTable) { - listener.enterQueryCreateTable(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitQueryCreateTable) { - listener.exitQueryCreateTable(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitQueryCreateTable) { - return visitor.visitQueryCreateTable(this); - } else { - return visitor.visitChildren(this); + public column_name(): Column_nameContext { + let localContext = new Column_nameContext(this.context, this.state); + this.enterRule(localContext, 800, PostgreSqlParser.RULE_column_name); + try { + this.state = 7650; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1048, this.context) ) { + case 1: + localContext = new ColumnNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7646; + this.colid(); + this.state = 7647; + this.opt_indirection(); + } + break; + case 2: + localContext = new ColumnNameMatchContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 7649; + if (!(this.shouldMatchEmpty())) { + throw this.createFailedPredicateException("this.shouldMatchEmpty()"); + } + } + break; + } } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; } -} - - -export class Create_as_targetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public table_name_create(): Table_name_createContext { - return this.getRuleContext(0, Table_name_createContext)!; - } - public opt_column_list_create(): Opt_column_list_createContext | null { - return this.getRuleContext(0, Opt_column_list_createContext); - } - public table_access_method_clause(): Table_access_method_clauseContext | null { - return this.getRuleContext(0, Table_access_method_clauseContext); - } - public optwith(): OptwithContext | null { - return this.getRuleContext(0, OptwithContext); - } - public oncommitoption(): OncommitoptionContext | null { - return this.getRuleContext(0, OncommitoptionContext); - } - public opttablespace(): OpttablespaceContext | null { - return this.getRuleContext(0, OpttablespaceContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_create_as_target; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreate_as_target) { - listener.enterCreate_as_target(this); + public column_name_create(): Column_name_createContext { + let localContext = new Column_name_createContext(this.context, this.state); + this.enterRule(localContext, 802, PostgreSqlParser.RULE_column_name_create); + try { + localContext = new ColumnNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7652; + this.colid(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreate_as_target) { - listener.exitCreate_as_target(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreate_as_target) { - return visitor.visitCreate_as_target(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Opt_with_dataContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; - } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATA, 0); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_with_data; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_with_data) { - listener.enterOpt_with_data(this); + public function_name_create(): Function_name_createContext { + let localContext = new Function_name_createContext(this.context, this.state); + this.enterRule(localContext, 804, PostgreSqlParser.RULE_function_name_create); + try { + this.state = 7658; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context) ) { + case 1: + localContext = new FunctionNameCreateContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7654; + this.type_function_name(); + } + break; + case 2: + localContext = new FunctionNameCreateContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 7655; + this.colid(); + this.state = 7656; + this.indirection(); + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_with_data) { - listener.exitOpt_with_data(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_with_data) { - return visitor.visitOpt_with_data(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class CreatematviewstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_creatematviewstmt; - } - public override copyFrom(ctx: CreatematviewstmtContext): void { - super.copyFrom(ctx); - } -} -export class CreateMaterializedViewContext extends CreatematviewstmtContext { - public constructor(ctx: CreatematviewstmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VIEW, 0)!; - } - public create_mv_target(): Create_mv_targetContext { - return this.getRuleContext(0, Create_mv_targetContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; - } - public selectstmt(): SelectstmtContext { - return this.getRuleContext(0, SelectstmtContext)!; - } - public optnolog(): OptnologContext | null { - return this.getRuleContext(0, OptnologContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opt_with_data(): Opt_with_dataContext | null { - return this.getRuleContext(0, Opt_with_dataContext); - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateMaterializedView) { - listener.enterCreateMaterializedView(this); + public function_name(): Function_nameContext { + let localContext = new Function_nameContext(this.context, this.state); + this.enterRule(localContext, 806, PostgreSqlParser.RULE_function_name); + try { + this.state = 7664; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { + case 1: + localContext = new FunctionNameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 7660; + this.type_function_name(); + } + break; + case 2: + localContext = new FunctionNameContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 7661; + this.colid(); + this.state = 7662; + this.indirection(); + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateMaterializedView) { - listener.exitCreateMaterializedView(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateMaterializedView) { - return visitor.visitCreateMaterializedView(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Create_mv_targetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public view_name_create(): View_name_createContext { - return this.getRuleContext(0, View_name_createContext)!; - } - public opt_column_list_create(): Opt_column_list_createContext | null { - return this.getRuleContext(0, Opt_column_list_createContext); - } - public table_access_method_clause(): Table_access_method_clauseContext | null { - return this.getRuleContext(0, Table_access_method_clauseContext); - } - public opt_reloptions(): Opt_reloptionsContext | null { - return this.getRuleContext(0, Opt_reloptionsContext); - } - public opttablespace(): OpttablespaceContext | null { - return this.getRuleContext(0, OpttablespaceContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_create_mv_target; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreate_mv_target) { - listener.enterCreate_mv_target(this); + public sconst(): SconstContext { + let localContext = new SconstContext(this.context, this.state); + this.enterRule(localContext, 808, PostgreSqlParser.RULE_sconst); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7666; + this.anysconst(); + this.state = 7669; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context) ) { + case 1: + { + this.state = 7667; + this.match(PostgreSqlParser.KW_UESCAPE); + this.state = 7668; + this.anysconst(); + } + break; + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreate_mv_target) { - listener.exitCreate_mv_target(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreate_mv_target) { - return visitor.visitCreate_mv_target(this); - } else { - return visitor.visitChildren(this); + public anysconst(): AnysconstContext { + let localContext = new AnysconstContext(this.context, this.state); + this.enterRule(localContext, 810, PostgreSqlParser.RULE_anysconst); + let _la: number; + try { + this.state = 7682; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.StringConstant: + this.enterOuterAlt(localContext, 1); + { + this.state = 7671; + this.match(PostgreSqlParser.StringConstant); + } + break; + case PostgreSqlParser.UnicodeEscapeStringConstant: + this.enterOuterAlt(localContext, 2); + { + this.state = 7672; + this.match(PostgreSqlParser.UnicodeEscapeStringConstant); + } + break; + case PostgreSqlParser.BeginDollarStringConstant: + this.enterOuterAlt(localContext, 3); + { + this.state = 7673; + this.match(PostgreSqlParser.BeginDollarStringConstant); + this.state = 7677; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 588) { + { + { + this.state = 7674; + this.match(PostgreSqlParser.DollarText); + } + } + this.state = 7679; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 7680; + this.match(PostgreSqlParser.EndDollarStringConstant); + } + break; + case PostgreSqlParser.EscapeStringConstant: + this.enterOuterAlt(localContext, 4); + { + this.state = 7681; + this.match(PostgreSqlParser.EscapeStringConstant); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } + finally { + this.exitRule(); + } + return localContext; } -} - + public signediconst(): SignediconstContext { + let localContext = new SignediconstContext(this.context, this.state); + this.enterRule(localContext, 812, PostgreSqlParser.RULE_signediconst); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7685; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 12 || _la === 13) { + { + this.state = 7684; + _la = this.tokenStream.LA(1); + if(!(_la === 12 || _la === 13)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } -export class OptnologContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UNLOGGED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optnolog; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptnolog) { - listener.enterOptnolog(this); + this.state = 7687; + this.match(PostgreSqlParser.Integral); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptnolog) { - listener.exitOptnolog(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptnolog) { - return visitor.visitOptnolog(this); - } else { - return visitor.visitChildren(this); + public rolespec(): RolespecContext { + let localContext = new RolespecContext(this.context, this.state); + this.enterRule(localContext, 814, PostgreSqlParser.RULE_rolespec); + try { + this.state = 7694; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_AUTHORIZATION: + case PostgreSqlParser.KW_BINARY: + case PostgreSqlParser.KW_COLLATION: + case PostgreSqlParser.KW_CONCURRENTLY: + case PostgreSqlParser.KW_CROSS: + case PostgreSqlParser.KW_CURRENT_SCHEMA: + case PostgreSqlParser.KW_FREEZE: + case PostgreSqlParser.KW_FULL: + case PostgreSqlParser.KW_ILIKE: + case PostgreSqlParser.KW_INNER: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_ISNULL: + case PostgreSqlParser.KW_JOIN: + case PostgreSqlParser.KW_LEFT: + case PostgreSqlParser.KW_LIKE: + case PostgreSqlParser.KW_NATURAL: + case PostgreSqlParser.KW_NOTNULL: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_OVERLAPS: + case PostgreSqlParser.KW_RIGHT: + case PostgreSqlParser.KW_SIMILAR: + case PostgreSqlParser.KW_VERBOSE: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_TABLESAMPLE: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + this.enterOuterAlt(localContext, 1); + { + this.state = 7689; + this.nonreservedword(); + } + break; + case PostgreSqlParser.KW_CURRENT_USER: + this.enterOuterAlt(localContext, 2); + { + this.state = 7690; + this.match(PostgreSqlParser.KW_CURRENT_USER); + } + break; + case PostgreSqlParser.KW_CURRENT_ROLE: + this.enterOuterAlt(localContext, 3); + { + this.state = 7691; + this.match(PostgreSqlParser.KW_CURRENT_ROLE); + } + break; + case PostgreSqlParser.KW_SESSION_USER: + this.enterOuterAlt(localContext, 4); + { + this.state = 7692; + this.match(PostgreSqlParser.KW_SESSION_USER); + } + break; + case PostgreSqlParser.KW_PUBLIC: + this.enterOuterAlt(localContext, 5); + { + this.state = 7693; + this.match(PostgreSqlParser.KW_PUBLIC); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } - } -} - - -export class RefreshmatviewstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_REFRESH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REFRESH, 0)!; - } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VIEW, 0)!; - } - public view_name(): View_nameContext { - return this.getRuleContext(0, View_nameContext)!; - } - public opt_concurrently(): Opt_concurrentlyContext | null { - return this.getRuleContext(0, Opt_concurrentlyContext); - } - public opt_with_data(): Opt_with_dataContext | null { - return this.getRuleContext(0, Opt_with_dataContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_refreshmatviewstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRefreshmatviewstmt) { - listener.enterRefreshmatviewstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRefreshmatviewstmt) { - listener.exitRefreshmatviewstmt(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRefreshmatviewstmt) { - return visitor.visitRefreshmatviewstmt(this); - } else { - return visitor.visitChildren(this); + public role_list(): Role_listContext { + let localContext = new Role_listContext(this.context, this.state); + this.enterRule(localContext, 816, PostgreSqlParser.RULE_role_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7696; + this.rolespec(); + this.state = 7701; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7697; + this.match(PostgreSqlParser.COMMA); + this.state = 7698; + this.rolespec(); + } + } + this.state = 7703; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } -} - - -export class CreateseqstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_SEQUENCE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public opttemp(): OpttempContext | null { - return this.getRuleContext(0, OpttempContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public optseqoptlist(): OptseqoptlistContext | null { - return this.getRuleContext(0, OptseqoptlistContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createseqstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateseqstmt) { - listener.enterCreateseqstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateseqstmt) { - listener.exitCreateseqstmt(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateseqstmt) { - return visitor.visitCreateseqstmt(this); - } else { - return visitor.visitChildren(this); + public colid(): ColidContext { + let localContext = new ColidContext(this.context, this.state); + this.enterRule(localContext, 818, PostgreSqlParser.RULE_colid); + try { + this.state = 7708; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1057, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7704; + this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7705; + this.unreserved_keyword(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 7706; + this.col_name_keyword(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7707; + this.plsql_unreserved_keyword(); + } + break; + } } - } -} - - -export class AlterseqstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_SEQUENCE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public seqoptlist(): SeqoptlistContext { - return this.getRuleContext(0, SeqoptlistContext)!; - } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterseqstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterseqstmt) { - listener.enterAlterseqstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterseqstmt) { - listener.exitAlterseqstmt(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterseqstmt) { - return visitor.visitAlterseqstmt(this); - } else { - return visitor.visitChildren(this); + public type_function_name(): Type_function_nameContext { + let localContext = new Type_function_nameContext(this.context, this.state); + this.enterRule(localContext, 820, PostgreSqlParser.RULE_type_function_name); + try { + this.state = 7714; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1058, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7710; + this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7711; + this.unreserved_keyword(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 7712; + this.plsql_unreserved_keyword(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7713; + this.type_func_name_keyword(); + } + break; + } } - } -} - - -export class OptseqoptlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public seqoptlist(): SeqoptlistContext { - return this.getRuleContext(0, SeqoptlistContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optseqoptlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptseqoptlist) { - listener.enterOptseqoptlist(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptseqoptlist) { - listener.exitOptseqoptlist(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptseqoptlist) { - return visitor.visitOptseqoptlist(this); - } else { - return visitor.visitChildren(this); + public nonreservedword(): NonreservedwordContext { + let localContext = new NonreservedwordContext(this.context, this.state); + this.enterRule(localContext, 822, PostgreSqlParser.RULE_nonreservedword); + try { + this.state = 7720; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1059, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7716; + this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7717; + this.unreserved_keyword(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 7718; + this.col_name_keyword(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7719; + this.type_func_name_keyword(); + } + break; + } } - } -} - - -export class OptparenthesizedseqoptlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public seqoptlist(): SeqoptlistContext { - return this.getRuleContext(0, SeqoptlistContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optparenthesizedseqoptlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptparenthesizedseqoptlist) { - listener.enterOptparenthesizedseqoptlist(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptparenthesizedseqoptlist) { - listener.exitOptparenthesizedseqoptlist(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptparenthesizedseqoptlist) { - return visitor.visitOptparenthesizedseqoptlist(this); - } else { - return visitor.visitChildren(this); + public collabel(): CollabelContext { + let localContext = new CollabelContext(this.context, this.state); + this.enterRule(localContext, 824, PostgreSqlParser.RULE_collabel); + try { + this.state = 7725; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1060, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7722; + this.nonreservedword(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7723; + this.plsql_unreserved_keyword(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 7724; + this.reserved_keyword(); + } + break; + } } - } -} - - -export class SeqoptlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public seqoptelem(): SeqoptelemContext[]; - public seqoptelem(i: number): SeqoptelemContext | null; - public seqoptelem(i?: number): SeqoptelemContext[] | SeqoptelemContext | null { - if (i === undefined) { - return this.getRuleContexts(SeqoptelemContext); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - - return this.getRuleContext(i, SeqoptelemContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_seqoptlist; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSeqoptlist) { - listener.enterSeqoptlist(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSeqoptlist) { - listener.exitSeqoptlist(this); + public identifier(): IdentifierContext { + let localContext = new IdentifierContext(this.context, this.state); + this.enterRule(localContext, 826, PostgreSqlParser.RULE_identifier); + try { + this.state = 7738; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.Identifier: + this.enterOuterAlt(localContext, 1); + { + this.state = 7727; + this.match(PostgreSqlParser.Identifier); + this.state = 7730; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1061, this.context) ) { + case 1: + { + this.state = 7728; + this.match(PostgreSqlParser.KW_UESCAPE); + this.state = 7729; + this.anysconst(); + } + break; + } + } + break; + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.EscapeStringConstant: + this.enterOuterAlt(localContext, 2); + { + this.state = 7732; + this.sconst(); + } + break; + case PostgreSqlParser.QuotedIdentifier: + this.enterOuterAlt(localContext, 3); + { + this.state = 7733; + this.match(PostgreSqlParser.QuotedIdentifier); + } + break; + case PostgreSqlParser.UnicodeQuotedIdentifier: + this.enterOuterAlt(localContext, 4); + { + this.state = 7734; + this.match(PostgreSqlParser.UnicodeQuotedIdentifier); + } + break; + case PostgreSqlParser.PLSQLVARIABLENAME: + this.enterOuterAlt(localContext, 5); + { + this.state = 7735; + this.match(PostgreSqlParser.PLSQLVARIABLENAME); + } + break; + case PostgreSqlParser.PLSQLIDENTIFIER: + this.enterOuterAlt(localContext, 6); + { + this.state = 7736; + this.match(PostgreSqlParser.PLSQLIDENTIFIER); + } + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + this.enterOuterAlt(localContext, 7); + { + this.state = 7737; + this.plsql_unreserved_keyword(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSeqoptlist) { - return visitor.visitSeqoptlist(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class SeqoptelemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public simpletypename(): SimpletypenameContext | null { - return this.getRuleContext(0, SimpletypenameContext); - } - public KW_CACHE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CACHE, 0); - } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); - } - public KW_CYCLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CYCLE, 0); - } - public KW_INCREMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INCREMENT, 0); - } - public opt_by(): Opt_byContext | null { - return this.getRuleContext(0, Opt_byContext); - } - public KW_MAXVALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MAXVALUE, 0); - } - public KW_MINVALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MINVALUE, 0); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_OWNED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNED, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BY, 0); - } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); - } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); - } - public KW_NAME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NAME, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_START(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_START, 0); - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public KW_RESTART(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTART, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_seqoptelem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSeqoptelem) { - listener.enterSeqoptelem(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSeqoptelem) { - listener.exitSeqoptelem(this); + public unreserved_keyword(): Unreserved_keywordContext { + let localContext = new Unreserved_keywordContext(this.context, this.state); + this.enterRule(localContext, 828, PostgreSqlParser.RULE_unreserved_keyword); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7740; + _la = this.tokenStream.LA(1); + if(!(((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & 4294967265) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 4294967295) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4294967295) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 4294705663) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & 4294967295) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & 4294967295) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & 4294967295) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & 4294967295) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 127) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 16770399) !== 0) || _la === 547 || _la === 548)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSeqoptelem) { - return visitor.visitSeqoptelem(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class Opt_byContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_by; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_by) { - listener.enterOpt_by(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_by) { - listener.exitOpt_by(this); + public col_name_keyword(): Col_name_keywordContext { + let localContext = new Col_name_keywordContext(this.context, this.state); + this.enterRule(localContext, 830, PostgreSqlParser.RULE_col_name_keyword); + try { + this.state = 7793; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1063, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7742; + this.match(PostgreSqlParser.KW_BETWEEN); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7743; + this.match(PostgreSqlParser.KW_BIGINT); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 7744; + this.bit(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7745; + this.match(PostgreSqlParser.KW_BOOLEAN); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 7746; + this.match(PostgreSqlParser.KW_CHAR); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 7747; + this.character(); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 7748; + this.match(PostgreSqlParser.KW_COALESCE); + } + break; + case 8: + this.enterOuterAlt(localContext, 8); + { + this.state = 7749; + this.match(PostgreSqlParser.KW_DEC); + } + break; + case 9: + this.enterOuterAlt(localContext, 9); + { + this.state = 7750; + this.match(PostgreSqlParser.KW_DECIMAL); + } + break; + case 10: + this.enterOuterAlt(localContext, 10); + { + this.state = 7751; + this.match(PostgreSqlParser.KW_EXISTS); + } + break; + case 11: + this.enterOuterAlt(localContext, 11); + { + this.state = 7752; + this.match(PostgreSqlParser.KW_EXTRACT); + } + break; + case 12: + this.enterOuterAlt(localContext, 12); + { + this.state = 7753; + this.match(PostgreSqlParser.KW_FLOAT); + } + break; + case 13: + this.enterOuterAlt(localContext, 13); + { + this.state = 7754; + this.match(PostgreSqlParser.KW_GREATEST); + } + break; + case 14: + this.enterOuterAlt(localContext, 14); + { + this.state = 7755; + this.match(PostgreSqlParser.KW_GROUPING); + } + break; + case 15: + this.enterOuterAlt(localContext, 15); + { + this.state = 7756; + this.match(PostgreSqlParser.KW_INOUT); + } + break; + case 16: + this.enterOuterAlt(localContext, 16); + { + this.state = 7757; + this.match(PostgreSqlParser.KW_INT); + } + break; + case 17: + this.enterOuterAlt(localContext, 17); + { + this.state = 7758; + this.match(PostgreSqlParser.KW_INTEGER); + } + break; + case 18: + this.enterOuterAlt(localContext, 18); + { + this.state = 7759; + this.match(PostgreSqlParser.KW_INTERVAL); + } + break; + case 19: + this.enterOuterAlt(localContext, 19); + { + this.state = 7760; + this.match(PostgreSqlParser.KW_LEAST); + } + break; + case 20: + this.enterOuterAlt(localContext, 20); + { + this.state = 7761; + this.match(PostgreSqlParser.KW_NATIONAL); + } + break; + case 21: + this.enterOuterAlt(localContext, 21); + { + this.state = 7762; + this.match(PostgreSqlParser.KW_NCHAR); + } + break; + case 22: + this.enterOuterAlt(localContext, 22); + { + this.state = 7763; + this.match(PostgreSqlParser.KW_NONE); + } + break; + case 23: + this.enterOuterAlt(localContext, 23); + { + this.state = 7764; + this.match(PostgreSqlParser.KW_NORMALIZE); + } + break; + case 24: + this.enterOuterAlt(localContext, 24); + { + this.state = 7765; + this.match(PostgreSqlParser.KW_NULLIF); + } + break; + case 25: + this.enterOuterAlt(localContext, 25); + { + this.state = 7766; + this.numeric(); + } + break; + case 26: + this.enterOuterAlt(localContext, 26); + { + this.state = 7767; + this.match(PostgreSqlParser.KW_OUT); + } + break; + case 27: + this.enterOuterAlt(localContext, 27); + { + this.state = 7768; + this.match(PostgreSqlParser.KW_OVERLAY); + } + break; + case 28: + this.enterOuterAlt(localContext, 28); + { + this.state = 7769; + this.match(PostgreSqlParser.KW_POSITION); + } + break; + case 29: + this.enterOuterAlt(localContext, 29); + { + this.state = 7770; + this.match(PostgreSqlParser.KW_PRECISION); + } + break; + case 30: + this.enterOuterAlt(localContext, 30); + { + this.state = 7771; + this.match(PostgreSqlParser.KW_REAL); + } + break; + case 31: + this.enterOuterAlt(localContext, 31); + { + this.state = 7772; + this.match(PostgreSqlParser.KW_ROW); + } + break; + case 32: + this.enterOuterAlt(localContext, 32); + { + this.state = 7773; + this.match(PostgreSqlParser.KW_SETOF); + } + break; + case 33: + this.enterOuterAlt(localContext, 33); + { + this.state = 7774; + this.match(PostgreSqlParser.KW_SMALLINT); + } + break; + case 34: + this.enterOuterAlt(localContext, 34); + { + this.state = 7775; + this.match(PostgreSqlParser.KW_SUBSTRING); + } + break; + case 35: + this.enterOuterAlt(localContext, 35); + { + this.state = 7776; + this.match(PostgreSqlParser.KW_TIME); + } + break; + case 36: + this.enterOuterAlt(localContext, 36); + { + this.state = 7777; + this.match(PostgreSqlParser.KW_TIMESTAMP); + } + break; + case 37: + this.enterOuterAlt(localContext, 37); + { + this.state = 7778; + this.match(PostgreSqlParser.KW_TREAT); + } + break; + case 38: + this.enterOuterAlt(localContext, 38); + { + this.state = 7779; + this.match(PostgreSqlParser.KW_TRIM); + } + break; + case 39: + this.enterOuterAlt(localContext, 39); + { + this.state = 7780; + this.match(PostgreSqlParser.KW_VALUES); + } + break; + case 40: + this.enterOuterAlt(localContext, 40); + { + this.state = 7781; + this.match(PostgreSqlParser.KW_VARCHAR); + } + break; + case 41: + this.enterOuterAlt(localContext, 41); + { + this.state = 7782; + this.match(PostgreSqlParser.KW_XMLATTRIBUTES); + } + break; + case 42: + this.enterOuterAlt(localContext, 42); + { + this.state = 7783; + this.match(PostgreSqlParser.KW_XMLCONCAT); + } + break; + case 43: + this.enterOuterAlt(localContext, 43); + { + this.state = 7784; + this.match(PostgreSqlParser.KW_XMLELEMENT); + } + break; + case 44: + this.enterOuterAlt(localContext, 44); + { + this.state = 7785; + this.match(PostgreSqlParser.KW_XMLEXISTS); + } + break; + case 45: + this.enterOuterAlt(localContext, 45); + { + this.state = 7786; + this.match(PostgreSqlParser.KW_XMLFOREST); + } + break; + case 46: + this.enterOuterAlt(localContext, 46); + { + this.state = 7787; + this.match(PostgreSqlParser.KW_XMLNAMESPACES); + } + break; + case 47: + this.enterOuterAlt(localContext, 47); + { + this.state = 7788; + this.match(PostgreSqlParser.KW_XMLPARSE); + } + break; + case 48: + this.enterOuterAlt(localContext, 48); + { + this.state = 7789; + this.match(PostgreSqlParser.KW_XMLPI); + } + break; + case 49: + this.enterOuterAlt(localContext, 49); + { + this.state = 7790; + this.match(PostgreSqlParser.KW_XMLROOT); + } + break; + case 50: + this.enterOuterAlt(localContext, 50); + { + this.state = 7791; + this.match(PostgreSqlParser.KW_XMLSERIALIZE); + } + break; + case 51: + this.enterOuterAlt(localContext, 51); + { + this.state = 7792; + this.match(PostgreSqlParser.KW_XMLTABLE); + } + break; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_by) { - return visitor.visitOpt_by(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class NumericonlyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public fconst(): FconstContext | null { - return this.getRuleContext(0, FconstContext); - } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PLUS, 0); - } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.MINUS, 0); - } - public signediconst(): SignediconstContext | null { - return this.getRuleContext(0, SignediconstContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_numericonly; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNumericonly) { - listener.enterNumericonly(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNumericonly) { - listener.exitNumericonly(this); + public type_func_name_keyword(): Type_func_name_keywordContext { + let localContext = new Type_func_name_keywordContext(this.context, this.state); + this.enterRule(localContext, 832, PostgreSqlParser.RULE_type_func_name_keyword); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7795; + _la = this.tokenStream.LA(1); + if(!(((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 8126463) !== 0) || _la === 472)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNumericonly) { - return visitor.visitNumericonly(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class Numericonly_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public numericonly(): NumericonlyContext[]; - public numericonly(i: number): NumericonlyContext | null; - public numericonly(i?: number): NumericonlyContext[] | NumericonlyContext | null { - if (i === undefined) { - return this.getRuleContexts(NumericonlyContext); + finally { + this.exitRule(); } - - return this.getRuleContext(i, NumericonlyContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_numericonly_list; + return localContext; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNumericonly_list) { - listener.enterNumericonly_list(this); + public reserved_keyword(): Reserved_keywordContext { + let localContext = new Reserved_keywordContext(this.context, this.state); + this.enterRule(localContext, 834, PostgreSqlParser.RULE_reserved_keyword); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7797; + _la = this.tokenStream.LA(1); + if(!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & 4286578687) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & 4294966783) !== 0) || ((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 4095) !== 0) || _la === 454)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNumericonly_list) { - listener.exitNumericonly_list(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNumericonly_list) { - return visitor.visitNumericonly_list(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public pl_block(): Pl_blockContext { + let localContext = new Pl_blockContext(this.context, this.state); + this.enterRule(localContext, 836, PostgreSqlParser.RULE_pl_block); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + { + this.state = 7800; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 18) { + { + this.state = 7799; + this.label_decl(); + } + } + this.state = 7812; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 178) { + { + this.state = 7802; + this.match(PostgreSqlParser.KW_DECLARE); + this.state = 7810; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1067, this.context) ) { + case 1: + { + this.state = 7806; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + this.state = 7806; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1065, this.context) ) { + case 1: + { + this.state = 7803; + this.decl_statement(); + } + break; + case 2: + { + this.state = 7804; + this.match(PostgreSqlParser.KW_DECLARE); + } + break; + case 3: + { + this.state = 7805; + this.label_decl(); + } + break; + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 7808; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1066, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } + break; + } + } + } -export class CreateplangstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_LANGUAGE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public opt_or_replace(): Opt_or_replaceContext | null { - return this.getRuleContext(0, Opt_or_replaceContext); - } - public opt_trusted(): Opt_trustedContext | null { - return this.getRuleContext(0, Opt_trustedContext); - } - public opt_procedural(): Opt_proceduralContext | null { - return this.getRuleContext(0, Opt_proceduralContext); - } - public KW_HANDLER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_HANDLER, 0); - } - public handler_name(): Handler_nameContext | null { - return this.getRuleContext(0, Handler_nameContext); - } - public opt_inline_handler(): Opt_inline_handlerContext | null { - return this.getRuleContext(0, Opt_inline_handlerContext); - } - public opt_validator(): Opt_validatorContext | null { - return this.getRuleContext(0, Opt_validatorContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createplangstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateplangstmt) { - listener.enterCreateplangstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateplangstmt) { - listener.exitCreateplangstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateplangstmt) { - return visitor.visitCreateplangstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} + } + this.state = 7814; + this.match(PostgreSqlParser.KW_BEGIN); + this.state = 7818; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7815; + this.proc_stmt(); + } + } + } + this.state = 7820; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context); + } + this.state = 7822; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 517) { + { + this.state = 7821; + this.exception_sect(); + } + } + this.state = 7824; + this.match(PostgreSqlParser.KW_END); + this.state = 7826; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 7825; + this.any_identifier(); + } + } -export class Opt_trustedContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TRUSTED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TRUSTED, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_trusted; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_trusted) { - listener.enterOpt_trusted(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_trusted) { - listener.exitOpt_trusted(this); + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_trusted) { - return visitor.visitOpt_trusted(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class Handler_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_handler_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterHandler_name) { - listener.enterHandler_name(this); + finally { + this.exitRule(); } + return localContext; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitHandler_name) { - listener.exitHandler_name(this); + public label_decl(): Label_declContext { + let localContext = new Label_declContext(this.context, this.state); + this.enterRule(localContext, 838, PostgreSqlParser.RULE_label_decl); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7828; + this.match(PostgreSqlParser.LESS_LESS); + this.state = 7829; + this.any_identifier(); + this.state = 7830; + this.match(PostgreSqlParser.GREATER_GREATER); + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitHandler_name) { - return visitor.visitHandler_name(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); } + return localContext; } -} + public decl_statement(): Decl_statementContext { + let localContext = new Decl_statementContext(this.context, this.state); + this.enterRule(localContext, 840, PostgreSqlParser.RULE_decl_statement); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7832; + this.any_identifier(); + this.state = 7879; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1082, this.context) ) { + case 1: + { + this.state = 7833; + this.match(PostgreSqlParser.KW_ALIAS); + this.state = 7834; + this.match(PostgreSqlParser.KW_FOR); + this.state = 7837; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.PARAM: + { + this.state = 7835; + this.match(PostgreSqlParser.PARAM); + } + break; + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 7836; + this.colid(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case 2: + { + this.state = 7840; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1073, this.context) ) { + case 1: + { + this.state = 7839; + this.match(PostgreSqlParser.KW_CONSTANT); + } + break; + } + this.state = 7842; + this.typename(); + this.state = 7844; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 43) { + { + this.state = 7843; + this.opt_collate_clause(); + } + } + + this.state = 7848; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 77) { + { + this.state = 7846; + this.match(PostgreSqlParser.KW_NOT); + this.state = 7847; + this.match(PostgreSqlParser.KW_NULL); + } + } + + this.state = 7855; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 10 || _la === 20 || _la === 53) { + { + this.state = 7852; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.EQUAL: + case PostgreSqlParser.COLON_EQUALS: + { + this.state = 7850; + this.assign_operator(); + } + break; + case PostgreSqlParser.KW_DEFAULT: + { + this.state = 7851; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 7854; + this.sql_expression(); + } + } + + } + break; + case 3: + { + this.state = 7861; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269 || _la === 324) { + { + this.state = 7858; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 7857; + this.match(PostgreSqlParser.KW_NO); + } + } + this.state = 7860; + this.match(PostgreSqlParser.KW_SCROLL); + } + } -export class Opt_inline_handlerContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INLINE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INLINE, 0)!; - } - public handler_name(): Handler_nameContext { - return this.getRuleContext(0, Handler_nameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_inline_handler; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_inline_handler) { - listener.enterOpt_inline_handler(this); + this.state = 7863; + this.match(PostgreSqlParser.KW_CURSOR); + this.state = 7875; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 7864; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7865; + this.decl_cursor_arg(); + this.state = 7870; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7866; + this.match(PostgreSqlParser.COMMA); + this.state = 7867; + this.decl_cursor_arg(); + } + } + this.state = 7872; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 7873; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + } + + this.state = 7877; + _la = this.tokenStream.LA(1); + if(!(_la === 62 || _la === 116)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 7878; + this.selectstmt(); + } + break; + } + this.state = 7881; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_inline_handler) { - listener.exitOpt_inline_handler(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_inline_handler) { - return visitor.visitOpt_inline_handler(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Validator_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_VALIDATOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VALIDATOR, 0)!; - } - public handler_name(): Handler_nameContext | null { - return this.getRuleContext(0, Handler_nameContext); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_validator_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterValidator_clause) { - listener.enterValidator_clause(this); + public decl_cursor_arg(): Decl_cursor_argContext { + let localContext = new Decl_cursor_argContext(this.context, this.state); + this.enterRule(localContext, 842, PostgreSqlParser.RULE_decl_cursor_arg); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7883; + this.any_identifier(); + this.state = 7884; + this.typename(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitValidator_clause) { - listener.exitValidator_clause(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitValidator_clause) { - return visitor.visitValidator_clause(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Opt_validatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public validator_clause(): Validator_clauseContext { - return this.getRuleContext(0, Validator_clauseContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_validator; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_validator) { - listener.enterOpt_validator(this); + public assign_operator(): Assign_operatorContext { + let localContext = new Assign_operatorContext(this.context, this.state); + this.enterRule(localContext, 844, PostgreSqlParser.RULE_assign_operator); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7886; + _la = this.tokenStream.LA(1); + if(!(_la === 10 || _la === 20)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_validator) { - listener.exitOpt_validator(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_validator) { - return visitor.visitOpt_validator(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Opt_proceduralContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PROCEDURAL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_procedural; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_procedural) { - listener.enterOpt_procedural(this); + public proc_stmt(): Proc_stmtContext { + let localContext = new Proc_stmtContext(this.context, this.state); + this.enterRule(localContext, 846, PostgreSqlParser.RULE_proc_stmt); + try { + this.state = 7912; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1083, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 7888; + this.pl_block(); + this.state = 7889; + this.match(PostgreSqlParser.SEMI); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 7891; + this.stmt_return(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 7892; + this.stmt_raise(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7893; + this.stmt_assign(); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 7894; + this.stmt_if(); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 7895; + this.stmt_case(); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 7896; + this.stmt_loop_while_for(); + } + break; + case 8: + this.enterOuterAlt(localContext, 8); + { + this.state = 7897; + this.stmt_foreach_a(); + } + break; + case 9: + this.enterOuterAlt(localContext, 9); + { + this.state = 7898; + this.stmt_exit(); + } + break; + case 10: + this.enterOuterAlt(localContext, 10); + { + this.state = 7899; + this.stmt_assert(); + } + break; + case 11: + this.enterOuterAlt(localContext, 11); + { + this.state = 7900; + this.stmt_execsql(); + } + break; + case 12: + this.enterOuterAlt(localContext, 12); + { + this.state = 7901; + this.stmt_dynexecute(); + } + break; + case 13: + this.enterOuterAlt(localContext, 13); + { + this.state = 7902; + this.stmt_perform(); + } + break; + case 14: + this.enterOuterAlt(localContext, 14); + { + this.state = 7903; + this.stmt_call(); + } + break; + case 15: + this.enterOuterAlt(localContext, 15); + { + this.state = 7904; + this.stmt_getdiag(); + } + break; + case 16: + this.enterOuterAlt(localContext, 16); + { + this.state = 7905; + this.stmt_open(); + } + break; + case 17: + this.enterOuterAlt(localContext, 17); + { + this.state = 7906; + this.stmt_fetch(); + } + break; + case 18: + this.enterOuterAlt(localContext, 18); + { + this.state = 7907; + this.stmt_move(); + } + break; + case 19: + this.enterOuterAlt(localContext, 19); + { + this.state = 7908; + this.stmt_close(); + } + break; + case 20: + this.enterOuterAlt(localContext, 20); + { + this.state = 7909; + this.stmt_null(); + } + break; + case 21: + this.enterOuterAlt(localContext, 21); + { + this.state = 7910; + this.stmt_commit_or_rollback(); + } + break; + case 22: + this.enterOuterAlt(localContext, 22); + { + this.state = 7911; + this.stmt_set(); + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_procedural) { - listener.exitOpt_procedural(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_procedural) { - return visitor.visitOpt_procedural(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class CreatetablespacestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_TABLESPACE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0)!; - } - public tablespace_name(): Tablespace_nameContext { - return this.getRuleContext(0, Tablespace_nameContext)!; - } - public KW_LOCATION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LOCATION, 0)!; - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public opttablespaceowner(): OpttablespaceownerContext | null { - return this.getRuleContext(0, OpttablespaceownerContext); - } - public opt_reloptions(): Opt_reloptionsContext | null { - return this.getRuleContext(0, Opt_reloptionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createtablespacestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatetablespacestmt) { - listener.enterCreatetablespacestmt(this); + public stmt_perform(): Stmt_performContext { + let localContext = new Stmt_performContext(this.context, this.state); + this.enterRule(localContext, 848, PostgreSqlParser.RULE_stmt_perform); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7914; + this.match(PostgreSqlParser.KW_PERFORM); + this.state = 7915; + this.sql_expression(); + this.state = 7916; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatetablespacestmt) { - listener.exitCreatetablespacestmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatetablespacestmt) { - return visitor.visitCreatetablespacestmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public stmt_call(): Stmt_callContext { + let localContext = new Stmt_callContext(this.context, this.state); + this.enterRule(localContext, 850, PostgreSqlParser.RULE_stmt_call); + let _la: number; + try { + this.state = 7937; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_CALL: + this.enterOuterAlt(localContext, 1); + { + this.state = 7918; + this.match(PostgreSqlParser.KW_CALL); + this.state = 7919; + this.any_identifier(); + this.state = 7926; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { + case 1: + { + this.state = 7920; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7922; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7921; + this.expr_list(); + } + } + this.state = 7924; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 7925; + this.match(PostgreSqlParser.SEMI); + } + break; + } + } + break; + case PostgreSqlParser.KW_DO: + this.enterOuterAlt(localContext, 2); + { + this.state = 7928; + this.match(PostgreSqlParser.KW_DO); + this.state = 7929; + this.any_identifier(); + this.state = 7930; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 7932; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + { + this.state = 7931; + this.expr_list(); + } + } -export class OpttablespaceownerContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_OWNER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OWNER, 0)!; - } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttablespaceowner; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttablespaceowner) { - listener.enterOpttablespaceowner(this); + this.state = 7934; + this.match(PostgreSqlParser.CLOSE_PAREN); + this.state = 7935; + this.match(PostgreSqlParser.SEMI); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttablespaceowner) { - listener.exitOpttablespaceowner(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttablespaceowner) { - return visitor.visitOpttablespaceowner(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class CreateextensionstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_EXTENSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public create_extension_opt_list(): Create_extension_opt_listContext { - return this.getRuleContext(0, Create_extension_opt_listContext)!; - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createextensionstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateextensionstmt) { - listener.enterCreateextensionstmt(this); + public stmt_assign(): Stmt_assignContext { + let localContext = new Stmt_assignContext(this.context, this.state); + this.enterRule(localContext, 852, PostgreSqlParser.RULE_stmt_assign); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7939; + this.assign_var(); + this.state = 7940; + this.assign_operator(); + this.state = 7941; + this.sql_expression(); + this.state = 7942; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateextensionstmt) { - listener.exitCreateextensionstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateextensionstmt) { - return visitor.visitCreateextensionstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - + public stmt_getdiag(): Stmt_getdiagContext { + let localContext = new Stmt_getdiagContext(this.context, this.state); + this.enterRule(localContext, 854, PostgreSqlParser.RULE_stmt_getdiag); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7944; + this.match(PostgreSqlParser.KW_GET); + this.state = 7946; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 434 || _la === 501) { + { + this.state = 7945; + _la = this.tokenStream.LA(1); + if(!(_la === 434 || _la === 501)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } -export class Create_extension_opt_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public create_extension_opt_item(): Create_extension_opt_itemContext[]; - public create_extension_opt_item(i: number): Create_extension_opt_itemContext | null; - public create_extension_opt_item(i?: number): Create_extension_opt_itemContext[] | Create_extension_opt_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Create_extension_opt_itemContext); + this.state = 7948; + this.match(PostgreSqlParser.KW_DIAGNOSTICS); + { + this.state = 7949; + this.getdiag_list_item(); + this.state = 7954; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 7950; + this.match(PostgreSqlParser.COMMA); + this.state = 7951; + this.getdiag_list_item(); + } + } + this.state = 7956; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 7957; + this.match(PostgreSqlParser.SEMI); + } } - - return this.getRuleContext(i, Create_extension_opt_itemContext); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_create_extension_opt_list; + public getdiag_list_item(): Getdiag_list_itemContext { + let localContext = new Getdiag_list_itemContext(this.context, this.state); + this.enterRule(localContext, 856, PostgreSqlParser.RULE_getdiag_list_item); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7959; + this.assign_var(); + this.state = 7960; + this.assign_operator(); + this.state = 7961; + this.colid(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreate_extension_opt_list) { - listener.enterCreate_extension_opt_list(this); + public assign_var(): Assign_varContext { + let localContext = new Assign_varContext(this.context, this.state); + this.enterRule(localContext, 858, PostgreSqlParser.RULE_assign_var); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 7965; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 7963; + this.any_name(); + } + break; + case PostgreSqlParser.PARAM: + { + this.state = 7964; + this.match(PostgreSqlParser.PARAM); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 7973; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 4) { + { + { + this.state = 7967; + this.match(PostgreSqlParser.OPEN_BRACKET); + this.state = 7968; + this.expression(); + this.state = 7969; + this.match(PostgreSqlParser.CLOSE_BRACKET); + } + } + this.state = 7975; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreate_extension_opt_list) { - listener.exitCreate_extension_opt_list(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreate_extension_opt_list) { - return visitor.visitCreate_extension_opt_list(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - + public stmt_if(): Stmt_ifContext { + let localContext = new Stmt_ifContext(this.context, this.state); + this.enterRule(localContext, 860, PostgreSqlParser.RULE_stmt_if); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 7976; + this.match(PostgreSqlParser.KW_IF); + this.state = 7977; + this.sql_expression(); + this.state = 7978; + this.match(PostgreSqlParser.KW_THEN); + this.state = 7982; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7979; + this.proc_stmt(); + } + } + } + this.state = 7984; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); + } + { + this.state = 7996; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 502) { + { + { + this.state = 7985; + this.match(PostgreSqlParser.KW_ELSIF); + this.state = 7986; + this.expression(); + this.state = 7987; + this.match(PostgreSqlParser.KW_THEN); + this.state = 7991; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7988; + this.proc_stmt(); + } + } + } + this.state = 7993; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context); + } + } + } + this.state = 7998; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 8000; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 58) { + { + this.state = 7999; + this.stmt_else(); + } + } -export class Create_extension_opt_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); - } - public KW_VERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VERSION, 0); - } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { - return this.getRuleContext(0, Nonreservedword_or_sconstContext); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CASCADE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_create_extension_opt_item; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreate_extension_opt_item) { - listener.enterCreate_extension_opt_item(this); + this.state = 8002; + this.match(PostgreSqlParser.KW_END); + this.state = 8003; + this.match(PostgreSqlParser.KW_IF); + this.state = 8004; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreate_extension_opt_item) { - listener.exitCreate_extension_opt_item(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreate_extension_opt_item) { - return visitor.visitCreate_extension_opt_item(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class AlterextensionstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_EXTENSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0)!; - } - public alter_extension_opt_list(): Alter_extension_opt_listContext { - return this.getRuleContext(0, Alter_extension_opt_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterextensionstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterextensionstmt) { - listener.enterAlterextensionstmt(this); + public stmt_else(): Stmt_elseContext { + let localContext = new Stmt_elseContext(this.context, this.state); + this.enterRule(localContext, 862, PostgreSqlParser.RULE_stmt_else); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 8006; + this.match(PostgreSqlParser.KW_ELSE); + this.state = 8010; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 8007; + this.proc_stmt(); + } + } + } + this.state = 8012; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context); + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterextensionstmt) { - listener.exitAlterextensionstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterextensionstmt) { - return visitor.visitAlterextensionstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Alter_extension_opt_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alter_extension_opt_item(): Alter_extension_opt_itemContext[]; - public alter_extension_opt_item(i: number): Alter_extension_opt_itemContext | null; - public alter_extension_opt_item(i?: number): Alter_extension_opt_itemContext[] | Alter_extension_opt_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Alter_extension_opt_itemContext); - } + public stmt_case(): Stmt_caseContext { + let localContext = new Stmt_caseContext(this.context, this.state); + this.enterRule(localContext, 864, PostgreSqlParser.RULE_stmt_case); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 8013; + this.match(PostgreSqlParser.KW_CASE); + this.state = 8015; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1097, this.context) ) { + case 1: + { + this.state = 8014; + this.sql_expression(); + } + break; + } + this.state = 8026; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 8017; + this.match(PostgreSqlParser.KW_WHEN); + this.state = 8018; + this.expr_list(); + this.state = 8019; + this.match(PostgreSqlParser.KW_THEN); + this.state = 8023; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 8020; + this.proc_stmt(); + } + } + } + this.state = 8025; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context); + } + } + } + this.state = 8028; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 102); + this.state = 8031; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 58) { + { + this.state = 8030; + this.stmt_else(); + } + } - return this.getRuleContext(i, Alter_extension_opt_itemContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_extension_opt_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_extension_opt_list) { - listener.enterAlter_extension_opt_list(this); + this.state = 8033; + this.match(PostgreSqlParser.KW_END); + this.state = 8034; + this.match(PostgreSqlParser.KW_CASE); + this.state = 8035; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_extension_opt_list) { - listener.exitAlter_extension_opt_list(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_extension_opt_list) { - return visitor.visitAlter_extension_opt_list(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - + public stmt_loop_while_for(): Stmt_loop_while_forContext { + let localContext = new Stmt_loop_while_forContext(this.context, this.state); + this.enterRule(localContext, 866, PostgreSqlParser.RULE_stmt_loop_while_for); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8038; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 18) { + { + this.state = 8037; + this.label_decl(); + } + } -export class Alter_extension_opt_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; - } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext { - return this.getRuleContext(0, Nonreservedword_or_sconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_extension_opt_item; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_extension_opt_item) { - listener.enterAlter_extension_opt_item(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_extension_opt_item) { - listener.exitAlter_extension_opt_item(this); + this.state = 8044; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_WHILE: + { + { + this.state = 8040; + this.match(PostgreSqlParser.KW_WHILE); + this.state = 8041; + this.expression(); + } + } + break; + case PostgreSqlParser.KW_FOR: + { + { + this.state = 8042; + this.match(PostgreSqlParser.KW_FOR); + this.state = 8043; + this.for_control(); + } + } + break; + case PostgreSqlParser.KW_LOOP: + break; + default: + break; + } + this.state = 8046; + this.loop_body(); + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_extension_opt_item) { - return visitor.visitAlter_extension_opt_item(this); - } else { - return visitor.visitChildren(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } -} - - -export class AlterextensioncontentsstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_EXTENSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; - } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { - if (i === undefined) { - return this.getRuleContexts(NameContext); + finally { + this.exitRule(); } - - return this.getRuleContext(i, NameContext); - } - public add_drop(): Add_dropContext { - return this.getRuleContext(0, Add_dropContext)!; - } - public object_type_name(): Object_type_nameContext | null { - return this.getRuleContext(0, Object_type_nameContext); - } - public object_type_any_name(): Object_type_any_nameContext | null { - return this.getRuleContext(0, Object_type_any_nameContext); - } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); - } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { - return this.getRuleContext(0, Aggregate_with_argtypesContext); - } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CAST, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + return localContext; } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } + public for_control(): For_controlContext { + let localContext = new For_controlContext(this.context, this.state); + this.enterRule(localContext, 868, PostgreSqlParser.RULE_for_control); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8048; + this.any_name_list(); + this.state = 8049; + this.match(PostgreSqlParser.KW_IN); + this.state = 8072; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { + case 1: + { + this.state = 8050; + this.colid(); + this.state = 8052; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 8051; + this.execute_param_clause(); + } + } - return this.getRuleContext(i, TypenameContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); - } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); - } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); - } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); - } - public operator_with_argtypes(): Operator_with_argtypesContext | null { - return this.getRuleContext(0, Operator_with_argtypesContext); - } - public KW_CLASS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLASS, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public KW_FAMILY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0); - } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); - } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); - } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); - } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); - } - public KW_TRANSFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterextensioncontentsstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterextensioncontentsstmt) { - listener.enterAlterextensioncontentsstmt(this); + } + break; + case 2: + { + this.state = 8054; + this.selectstmt(); + } + break; + case 3: + { + this.state = 8055; + this.explainstmt(); + } + break; + case 4: + { + this.state = 8056; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 8057; + this.expression(); + this.state = 8060; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 8058; + this.match(PostgreSqlParser.KW_USING); + this.state = 8059; + this.expr_list(); + } + } + + } + break; + case 5: + { + this.state = 8063; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1105, this.context) ) { + case 1: + { + this.state = 8062; + this.match(PostgreSqlParser.KW_REVERSE); + } + break; + } + this.state = 8065; + this.expression(); + this.state = 8066; + this.match(PostgreSqlParser.DOT_DOT); + this.state = 8067; + this.expression(); + this.state = 8070; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 147) { + { + this.state = 8068; + this.match(PostgreSqlParser.KW_BY); + this.state = 8069; + this.expression(); + } + } + + } + break; + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterextensioncontentsstmt) { - listener.exitAlterextensioncontentsstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterextensioncontentsstmt) { - return visitor.visitAlterextensioncontentsstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public stmt_foreach_a(): Stmt_foreach_aContext { + let localContext = new Stmt_foreach_aContext(this.context, this.state); + this.enterRule(localContext, 870, PostgreSqlParser.RULE_stmt_foreach_a); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8075; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 18) { + { + this.state = 8074; + this.label_decl(); + } + } + this.state = 8077; + this.match(PostgreSqlParser.KW_FOREACH); + this.state = 8078; + this.any_name_list(); + this.state = 8081; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 506) { + { + this.state = 8079; + this.match(PostgreSqlParser.KW_SLICE); + this.state = 8080; + this.match(PostgreSqlParser.Integral); + } + } -export class CreatefdwstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_FOREIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; - } - public KW_DATA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATA, 0)!; - } - public KW_WRAPPER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public opt_fdw_options(): Opt_fdw_optionsContext | null { - return this.getRuleContext(0, Opt_fdw_optionsContext); - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createfdwstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatefdwstmt) { - listener.enterCreatefdwstmt(this); + this.state = 8083; + this.match(PostgreSqlParser.KW_IN); + this.state = 8084; + this.match(PostgreSqlParser.KW_ARRAY); + this.state = 8085; + this.expression(); + this.state = 8086; + this.loop_body(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatefdwstmt) { - listener.exitCreatefdwstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatefdwstmt) { - return visitor.visitCreatefdwstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public stmt_exit(): Stmt_exitContext { + let localContext = new Stmt_exitContext(this.context, this.state); + this.enterRule(localContext, 872, PostgreSqlParser.RULE_stmt_exit); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8088; + _la = this.tokenStream.LA(1); + if(!(_la === 167 || _la === 507)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 8090; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 8089; + this.any_identifier(); + } + } + this.state = 8094; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 102) { + { + this.state = 8092; + this.match(PostgreSqlParser.KW_WHEN); + this.state = 8093; + this.sql_expression(); + } + } -export class Fdw_optionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_HANDLER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_HANDLER, 0); - } - public handler_name(): Handler_nameContext | null { - return this.getRuleContext(0, Handler_nameContext); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_VALIDATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALIDATOR, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_fdw_option; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFdw_option) { - listener.enterFdw_option(this); + this.state = 8096; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFdw_option) { - listener.exitFdw_option(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } + finally { + this.exitRule(); + } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFdw_option) { - return visitor.visitFdw_option(this); - } else { - return visitor.visitChildren(this); + public stmt_return(): Stmt_returnContext { + let localContext = new Stmt_returnContext(this.context, this.state); + this.enterRule(localContext, 874, PostgreSqlParser.RULE_stmt_return); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8098; + this.match(PostgreSqlParser.KW_RETURN); + this.state = 8113; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1114, this.context) ) { + case 1: + { + this.state = 8099; + this.match(PostgreSqlParser.KW_NEXT); + this.state = 8100; + this.sql_expression(); + } + break; + case 2: + { + this.state = 8101; + this.match(PostgreSqlParser.KW_QUERY); + this.state = 8108; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_EXECUTE: + { + this.state = 8102; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 8103; + this.expression(); + this.state = 8104; + this.match(PostgreSqlParser.KW_USING); + this.state = 8105; + this.expr_list(); + } + break; + case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.KW_SELECT: + case PostgreSqlParser.KW_TABLE: + case PostgreSqlParser.KW_WITH: + case PostgreSqlParser.KW_VALUES: + { + this.state = 8107; + this.selectstmt(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case 3: + { + this.state = 8111; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { + case 1: + { + this.state = 8110; + this.sql_expression(); + } + break; + } + } + break; + } + this.state = 8115; + this.match(PostgreSqlParser.SEMI); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); } + return localContext; } -} + public stmt_raise(): Stmt_raiseContext { + let localContext = new Stmt_raiseContext(this.context, this.state); + this.enterRule(localContext, 876, PostgreSqlParser.RULE_stmt_raise); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8117; + this.match(PostgreSqlParser.KW_RAISE); + this.state = 8147; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1121, this.context) ) { + case 1: + { + this.state = 8119; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1115, this.context) ) { + case 1: + { + this.state = 8118; + _la = this.tokenStream.LA(1); + if(!(((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 8133; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { + case 1: + { + this.state = 8121; + this.identifier(); + } + break; + case 2: + { + { + this.state = 8122; + this.match(PostgreSqlParser.KW_SQLSTATE); + this.state = 8123; + this.sconst(); + } + } + break; + case 3: + { + { + this.state = 8124; + this.sconst(); + this.state = 8131; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 8127; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 8125; + this.match(PostgreSqlParser.COMMA); + this.state = 8126; + this.expression(); + } + } + this.state = 8129; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 6); + } + } + } + } + break; + } + this.state = 8144; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 8135; + this.match(PostgreSqlParser.KW_USING); + { + this.state = 8136; + this.opt_raise_using_elem(); + this.state = 8141; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 8137; + this.match(PostgreSqlParser.COMMA); + this.state = 8138; + this.opt_raise_using_elem(); + } + } + this.state = 8143; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + } -export class Fdw_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public fdw_option(): Fdw_optionContext[]; - public fdw_option(i: number): Fdw_optionContext | null; - public fdw_option(i?: number): Fdw_optionContext[] | Fdw_optionContext | null { - if (i === undefined) { - return this.getRuleContexts(Fdw_optionContext); + this.state = 8146; + this.match(PostgreSqlParser.SEMI); + } + break; + } + } } - - return this.getRuleContext(i, Fdw_optionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_fdw_options; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFdw_options) { - listener.enterFdw_options(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFdw_options) { - listener.exitFdw_options(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFdw_options) { - return visitor.visitFdw_options(this); - } else { - return visitor.visitChildren(this); + public opt_raise_using_elem(): Opt_raise_using_elemContext { + let localContext = new Opt_raise_using_elemContext(this.context, this.state); + this.enterRule(localContext, 878, PostgreSqlParser.RULE_opt_raise_using_elem); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8149; + this.identifier(); + this.state = 8150; + this.match(PostgreSqlParser.EQUAL); + this.state = 8151; + this.expression(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } + finally { + this.exitRule(); + } + return localContext; } -} - + public stmt_assert(): Stmt_assertContext { + let localContext = new Stmt_assertContext(this.context, this.state); + this.enterRule(localContext, 880, PostgreSqlParser.RULE_stmt_assert); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8153; + this.match(PostgreSqlParser.KW_ASSERT); + this.state = 8154; + this.sql_expression(); + this.state = 8157; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 6) { + { + this.state = 8155; + this.match(PostgreSqlParser.COMMA); + this.state = 8156; + this.sql_expression(); + } + } -export class Opt_fdw_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public fdw_options(): Fdw_optionsContext { - return this.getRuleContext(0, Fdw_optionsContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_fdw_options; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_fdw_options) { - listener.enterOpt_fdw_options(this); + this.state = 8159; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_fdw_options) { - listener.exitOpt_fdw_options(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_fdw_options) { - return visitor.visitOpt_fdw_options(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - + public loop_body(): Loop_bodyContext { + let localContext = new Loop_bodyContext(this.context, this.state); + this.enterRule(localContext, 882, PostgreSqlParser.RULE_loop_body); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 8161; + this.match(PostgreSqlParser.KW_LOOP); + this.state = 8165; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 8162; + this.proc_stmt(); + } + } + } + this.state = 8167; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context); + } + this.state = 8168; + this.match(PostgreSqlParser.KW_END); + this.state = 8169; + this.match(PostgreSqlParser.KW_LOOP); + this.state = 8171; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 8170; + this.any_identifier(); + } + } -export class AlterfdwstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_FOREIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; - } - public KW_DATA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATA, 0)!; - } - public KW_WRAPPER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public alter_generic_options(): Alter_generic_optionsContext | null { - return this.getRuleContext(0, Alter_generic_optionsContext); - } - public opt_fdw_options(): Opt_fdw_optionsContext | null { - return this.getRuleContext(0, Opt_fdw_optionsContext); - } - public fdw_options(): Fdw_optionsContext | null { - return this.getRuleContext(0, Fdw_optionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterfdwstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterfdwstmt) { - listener.enterAlterfdwstmt(this); + this.state = 8173; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterfdwstmt) { - listener.exitAlterfdwstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterfdwstmt) { - return visitor.visitAlterfdwstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - + public stmt_execsql(): Stmt_execsqlContext { + let localContext = new Stmt_execsqlContext(this.context, this.state); + this.enterRule(localContext, 884, PostgreSqlParser.RULE_stmt_execsql); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8175; + this.stmt(); + this.state = 8177; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 71) { + { + this.state = 8176; + this.opt_execute_into(); + } + } -export class Create_generic_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_OPTIONS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPTIONS, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public generic_option_list(): Generic_option_listContext { - return this.getRuleContext(0, Generic_option_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_create_generic_options; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreate_generic_options) { - listener.enterCreate_generic_options(this); + this.state = 8179; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreate_generic_options) { - listener.exitCreate_generic_options(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreate_generic_options) { - return visitor.visitCreate_generic_options(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public stmt_dynexecute(): Stmt_dynexecuteContext { + let localContext = new Stmt_dynexecuteContext(this.context, this.state); + this.enterRule(localContext, 886, PostgreSqlParser.RULE_stmt_dynexecute); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8181; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 8182; + this.expression(); + this.state = 8198; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1130, this.context) ) { + case 1: + { + this.state = 8184; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 71) { + { + this.state = 8183; + this.opt_execute_into(); + } + } + this.state = 8188; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 8186; + this.match(PostgreSqlParser.KW_USING); + this.state = 8187; + this.expr_list(); + } + } -export class Generic_option_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public generic_option_elem(): Generic_option_elemContext[]; - public generic_option_elem(i: number): Generic_option_elemContext | null; - public generic_option_elem(i?: number): Generic_option_elemContext[] | Generic_option_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Generic_option_elemContext); - } + } + break; + case 2: + { + this.state = 8192; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 8190; + this.match(PostgreSqlParser.KW_USING); + this.state = 8191; + this.expr_list(); + } + } - return this.getRuleContext(i, Generic_option_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generic_option_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGeneric_option_list) { - listener.enterGeneric_option_list(this); + this.state = 8195; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 71) { + { + this.state = 8194; + this.opt_execute_into(); + } + } + + } + break; + case 3: + // tslint:disable-next-line:no-empty + { + } + break; + } + this.state = 8200; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGeneric_option_list) { - listener.exitGeneric_option_list(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGeneric_option_list) { - return visitor.visitGeneric_option_list(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Alter_generic_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_OPTIONS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPTIONS, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public alter_generic_option_list(): Alter_generic_option_listContext { - return this.getRuleContext(0, Alter_generic_option_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_generic_options; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_generic_options) { - listener.enterAlter_generic_options(this); + public opt_execute_into(): Opt_execute_intoContext { + let localContext = new Opt_execute_intoContext(this.context, this.state); + this.enterRule(localContext, 888, PostgreSqlParser.RULE_opt_execute_into); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8202; + this.match(PostgreSqlParser.KW_INTO); + this.state = 8204; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { + case 1: + { + this.state = 8203; + this.match(PostgreSqlParser.KW_STRICT); + } + break; + } + this.state = 8206; + this.expr_list(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_generic_options) { - listener.exitAlter_generic_options(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_generic_options) { - return visitor.visitAlter_generic_options(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public stmt_open(): Stmt_openContext { + let localContext = new Stmt_openContext(this.context, this.state); + this.enterRule(localContext, 890, PostgreSqlParser.RULE_stmt_open); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8208; + this.match(PostgreSqlParser.KW_OPEN); + this.state = 8240; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1138, this.context) ) { + case 1: + { + this.state = 8209; + this.cursor_variable(); + this.state = 8214; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269 || _la === 324) { + { + this.state = 8211; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 8210; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 8213; + this.match(PostgreSqlParser.KW_SCROLL); + } + } + this.state = 8216; + this.match(PostgreSqlParser.KW_FOR); + this.state = 8224; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.OPEN_PAREN: + case PostgreSqlParser.KW_SELECT: + case PostgreSqlParser.KW_TABLE: + case PostgreSqlParser.KW_WITH: + case PostgreSqlParser.KW_VALUES: + { + this.state = 8217; + this.selectstmt(); + } + break; + case PostgreSqlParser.KW_EXECUTE: + { + this.state = 8218; + this.match(PostgreSqlParser.KW_EXECUTE); + this.state = 8219; + this.sql_expression(); + this.state = 8222; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 100) { + { + this.state = 8220; + this.match(PostgreSqlParser.KW_USING); + this.state = 8221; + this.expr_list(); + } + } -export class Alter_generic_option_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alter_generic_option_elem(): Alter_generic_option_elemContext[]; - public alter_generic_option_elem(i: number): Alter_generic_option_elemContext | null; - public alter_generic_option_elem(i?: number): Alter_generic_option_elemContext[] | Alter_generic_option_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Alter_generic_option_elemContext); - } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case 2: + { + this.state = 8226; + this.colid(); + this.state = 8238; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 8227; + this.match(PostgreSqlParser.OPEN_PAREN); + { + this.state = 8228; + this.opt_open_bound_list_item(); + this.state = 8233; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 8229; + this.match(PostgreSqlParser.COMMA); + this.state = 8230; + this.opt_open_bound_list_item(); + } + } + this.state = 8235; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 8236; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + } - return this.getRuleContext(i, Alter_generic_option_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_generic_option_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_generic_option_list) { - listener.enterAlter_generic_option_list(this); + } + break; + } + this.state = 8242; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_generic_option_list) { - listener.exitAlter_generic_option_list(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_generic_option_list) { - return visitor.visitAlter_generic_option_list(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Alter_generic_option_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public generic_option_elem(): Generic_option_elemContext { - return this.getRuleContext(0, Generic_option_elemContext)!; - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alter_generic_option_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlter_generic_option_elem) { - listener.enterAlter_generic_option_elem(this); + public opt_open_bound_list_item(): Opt_open_bound_list_itemContext { + let localContext = new Opt_open_bound_list_itemContext(this.context, this.state); + this.enterRule(localContext, 892, PostgreSqlParser.RULE_opt_open_bound_list_item); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8247; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1139, this.context) ) { + case 1: + { + this.state = 8244; + this.colid(); + this.state = 8245; + this.match(PostgreSqlParser.COLON_EQUALS); + } + break; + } + this.state = 8249; + this.expression(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlter_generic_option_elem) { - listener.exitAlter_generic_option_elem(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlter_generic_option_elem) { - return visitor.visitAlter_generic_option_elem(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - + public stmt_fetch(): Stmt_fetchContext { + let localContext = new Stmt_fetchContext(this.context, this.state); + this.enterRule(localContext, 894, PostgreSqlParser.RULE_stmt_fetch); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8251; + this.match(PostgreSqlParser.KW_FETCH); + this.state = 8253; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1140, this.context) ) { + case 1: + { + this.state = 8252; + localContext._direction = this.opt_fetch_direction(); + } + break; + } + this.state = 8256; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 64 || _la === 68) { + { + this.state = 8255; + this.from_in(); + } + } -export class Generic_option_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public generic_option_name(): Generic_option_nameContext { - return this.getRuleContext(0, Generic_option_nameContext)!; - } - public generic_option_arg(): Generic_option_argContext { - return this.getRuleContext(0, Generic_option_argContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generic_option_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGeneric_option_elem) { - listener.enterGeneric_option_elem(this); + this.state = 8258; + this.cursor_variable(); + this.state = 8259; + this.match(PostgreSqlParser.KW_INTO); + this.state = 8260; + this.expr_list(); + this.state = 8261; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGeneric_option_elem) { - listener.exitGeneric_option_elem(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGeneric_option_elem) { - return visitor.visitGeneric_option_elem(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Generic_option_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generic_option_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGeneric_option_name) { - listener.enterGeneric_option_name(this); + public opt_fetch_direction(): Opt_fetch_directionContext { + let localContext = new Opt_fetch_directionContext(this.context, this.state); + this.enterRule(localContext, 896, PostgreSqlParser.RULE_opt_fetch_direction); + let _la: number; + try { + this.state = 8277; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1144, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 8263; + this.match(PostgreSqlParser.KW_NEXT); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 8264; + this.match(PostgreSqlParser.KW_PRIOR); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 8265; + this.match(PostgreSqlParser.KW_FIRST); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 8266; + this.match(PostgreSqlParser.KW_LAST); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 8268; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { + case 1: + { + this.state = 8267; + _la = this.tokenStream.LA(1); + if(!(_la === 130 || _la === 307)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + this.state = 8270; + this.expression(); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 8271; + this.match(PostgreSqlParser.KW_ALL); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 8272; + _la = this.tokenStream.LA(1); + if(!(_la === 144 || _la === 210)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 8275; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context) ) { + case 1: + { + this.state = 8273; + this.expression(); + } + break; + case 2: + { + this.state = 8274; + this.match(PostgreSqlParser.KW_ALL); + } + break; + } + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGeneric_option_name) { - listener.exitGeneric_option_name(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGeneric_option_name) { - return visitor.visitGeneric_option_name(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Generic_option_argContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generic_option_arg; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGeneric_option_arg) { - listener.enterGeneric_option_arg(this); + public stmt_move(): Stmt_moveContext { + let localContext = new Stmt_moveContext(this.context, this.state); + this.enterRule(localContext, 898, PostgreSqlParser.RULE_stmt_move); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8279; + this.match(PostgreSqlParser.KW_MOVE); + this.state = 8281; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1145, this.context) ) { + case 1: + { + this.state = 8280; + this.opt_fetch_direction(); + } + break; + } + this.state = 8283; + this.cursor_variable(); + this.state = 8284; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGeneric_option_arg) { - listener.exitGeneric_option_arg(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGeneric_option_arg) { - return visitor.visitGeneric_option_arg(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public mergestmt(): MergestmtContext { + let localContext = new MergestmtContext(this.context, this.state); + this.enterRule(localContext, 900, PostgreSqlParser.RULE_mergestmt); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8287; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 105) { + { + this.state = 8286; + this.with_clause(); + } + } + this.state = 8289; + this.match(PostgreSqlParser.KW_MERGE); + this.state = 8290; + this.match(PostgreSqlParser.KW_INTO); + this.state = 8292; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 81) { + { + this.state = 8291; + this.match(PostgreSqlParser.KW_ONLY); + } + } -export class CreateforeignserverstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { - if (i === undefined) { - return this.getRuleContexts(NameContext); - } + this.state = 8294; + this.table_name(); + this.state = 8296; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 9) { + { + this.state = 8295; + this.match(PostgreSqlParser.STAR); + } + } - return this.getRuleContext(i, NameContext); - } - public KW_FOREIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; - } - public KW_DATA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATA, 0)!; - } - public KW_WRAPPER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0)!; - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opt_type(): Opt_typeContext | null { - return this.getRuleContext(0, Opt_typeContext); - } - public opt_foreign_server_version(): Opt_foreign_server_versionContext | null { - return this.getRuleContext(0, Opt_foreign_server_versionContext); - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createforeignserverstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateforeignserverstmt) { - listener.enterCreateforeignserverstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateforeignserverstmt) { - listener.exitCreateforeignserverstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateforeignserverstmt) { - return visitor.visitCreateforeignserverstmt(this); - } else { - return visitor.visitChildren(this); - } - } -} + this.state = 8302; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 8299; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 36) { + { + this.state = 8298; + this.match(PostgreSqlParser.KW_AS); + } + } + this.state = 8301; + this.colid(); + } + } -export class Opt_typeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_type; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_type) { - listener.enterOpt_type(this); + this.state = 8304; + this.match(PostgreSqlParser.KW_USING); + this.state = 8305; + this.data_source(); + this.state = 8306; + this.match(PostgreSqlParser.KW_ON); + this.state = 8307; + this.expression(); + this.state = 8309; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 8308; + this.merge_when_clause(); + } + } + this.state = 8311; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 102); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_type) { - listener.exitOpt_type(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_type) { - return visitor.visitOpt_type(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public data_source(): Data_sourceContext { + let localContext = new Data_sourceContext(this.context, this.state); + this.enterRule(localContext, 902, PostgreSqlParser.RULE_data_source); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8324; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1155, this.context) ) { + case 1: + { + this.state = 8314; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 81) { + { + this.state = 8313; + this.match(PostgreSqlParser.KW_ONLY); + } + } + this.state = 8316; + this.table_name(); + this.state = 8318; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 9) { + { + this.state = 8317; + this.match(PostgreSqlParser.STAR); + } + } -export class Foreign_server_versionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_VERSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VERSION, 0)!; - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_foreign_server_version; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterForeign_server_version) { - listener.enterForeign_server_version(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitForeign_server_version) { - listener.exitForeign_server_version(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitForeign_server_version) { - return visitor.visitForeign_server_version(this); - } else { - return visitor.visitChildren(this); - } - } -} + } + break; + case 2: + { + this.state = 8322; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1154, this.context) ) { + case 1: + { + this.state = 8320; + this.select_no_parens(); + } + break; + case 2: + { + this.state = 8321; + this.values_clause(); + } + break; + } + } + break; + } + this.state = 8330; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + { + this.state = 8327; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 36) { + { + this.state = 8326; + this.match(PostgreSqlParser.KW_AS); + } + } + this.state = 8329; + this.colid(); + } + } -export class Opt_foreign_server_versionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public foreign_server_version(): Foreign_server_versionContext { - return this.getRuleContext(0, Foreign_server_versionContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_foreign_server_version; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_foreign_server_version) { - listener.enterOpt_foreign_server_version(this); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_foreign_server_version) { - listener.exitOpt_foreign_server_version(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_foreign_server_version) { - return visitor.visitOpt_foreign_server_version(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public merge_when_clause(): Merge_when_clauseContext { + let localContext = new Merge_when_clauseContext(this.context, this.state); + this.enterRule(localContext, 904, PostgreSqlParser.RULE_merge_when_clause); + let _la: number; + try { + this.state = 8358; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1162, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 8332; + this.match(PostgreSqlParser.KW_WHEN); + this.state = 8333; + this.match(PostgreSqlParser.KW_MATCHED); + this.state = 8336; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 33) { + { + this.state = 8334; + this.match(PostgreSqlParser.KW_AND); + this.state = 8335; + this.expression(); + } + } + this.state = 8338; + this.match(PostgreSqlParser.KW_THEN); + this.state = 8343; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_UPDATE: + { + this.state = 8339; + this.merge_update(); + } + break; + case PostgreSqlParser.KW_DELETE: + { + this.state = 8340; + this.match(PostgreSqlParser.KW_DELETE); + } + break; + case PostgreSqlParser.KW_DO: + { + this.state = 8341; + this.match(PostgreSqlParser.KW_DO); + this.state = 8342; + this.match(PostgreSqlParser.KW_NOTHING); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 8345; + this.match(PostgreSqlParser.KW_WHEN); + this.state = 8346; + this.match(PostgreSqlParser.KW_NOT); + this.state = 8347; + this.match(PostgreSqlParser.KW_MATCHED); + this.state = 8350; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 33) { + { + this.state = 8348; + this.match(PostgreSqlParser.KW_AND); + this.state = 8349; + this.expression(); + } + } -export class AlterforeignserverstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public alter_generic_options(): Alter_generic_optionsContext | null { - return this.getRuleContext(0, Alter_generic_optionsContext); - } - public foreign_server_version(): Foreign_server_versionContext | null { - return this.getRuleContext(0, Foreign_server_versionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterforeignserverstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterforeignserverstmt) { - listener.enterAlterforeignserverstmt(this); + this.state = 8352; + this.match(PostgreSqlParser.KW_THEN); + this.state = 8356; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_INSERT: + { + this.state = 8353; + this.merge_insert(); + } + break; + case PostgreSqlParser.KW_DO: + { + this.state = 8354; + this.match(PostgreSqlParser.KW_DO); + this.state = 8355; + this.match(PostgreSqlParser.KW_NOTHING); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterforeignserverstmt) { - listener.exitAlterforeignserverstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterforeignserverstmt) { - return visitor.visitAlterforeignserverstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public merge_insert(): Merge_insertContext { + let localContext = new Merge_insertContext(this.context, this.state); + this.enterRule(localContext, 906, PostgreSqlParser.RULE_merge_insert); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8360; + this.match(PostgreSqlParser.KW_INSERT); + this.state = 8362; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 8361; + this.opt_column_list(); + } + } + this.state = 8367; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 463) { + { + this.state = 8364; + this.match(PostgreSqlParser.KW_OVERRIDING); + this.state = 8365; + _la = this.tokenStream.LA(1); + if(!(_la === 99 || _la === 349)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 8366; + this.match(PostgreSqlParser.KW_VALUE); + } + } -export class CreateforeigntablestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createforeigntablestmt; - } - public override copyFrom(ctx: CreateforeigntablestmtContext): void { - super.copyFrom(ctx); - } -} -export class CreateForeignTableContext extends CreateforeigntablestmtContext { - public constructor(ctx: CreateforeigntablestmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_FOREIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; - } - public table_name_create(): Table_name_createContext { - return this.getRuleContext(0, Table_name_createContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opttableelementlist(): OpttableelementlistContext | null { - return this.getRuleContext(0, OpttableelementlistContext); - } - public optinherit(): OptinheritContext | null { - return this.getRuleContext(0, OptinheritContext); - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateForeignTable) { - listener.enterCreateForeignTable(this); + this.state = 8369; + this.default_values_or_values(); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateForeignTable) { - listener.exitCreateForeignTable(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateForeignTable) { - return visitor.visitCreateForeignTable(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} -export class CreatePartitionForeignTableContext extends CreateforeigntablestmtContext { - public constructor(ctx: CreateforeigntablestmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_FOREIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; - } - public table_name_create(): Table_name_createContext { - return this.getRuleContext(0, Table_name_createContext)!; - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; - } - public KW_OF(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OF, 0)!; - } - public table_name(): Table_nameContext { - return this.getRuleContext(0, Table_nameContext)!; - } - public partitionboundspec(): PartitionboundspecContext { - return this.getRuleContext(0, PartitionboundspecContext)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opttypedtableelementlist(): OpttypedtableelementlistContext | null { - return this.getRuleContext(0, OpttypedtableelementlistContext); - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatePartitionForeignTable) { - listener.enterCreatePartitionForeignTable(this); + public merge_update(): Merge_updateContext { + let localContext = new Merge_updateContext(this.context, this.state); + this.enterRule(localContext, 908, PostgreSqlParser.RULE_merge_update); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 8371; + this.match(PostgreSqlParser.KW_UPDATE); + this.state = 8372; + this.match(PostgreSqlParser.KW_SET); + this.state = 8390; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + this.state = 8390; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1166, this.context) ) { + case 1: + { + this.state = 8373; + this.column_name(); + this.state = 8374; + this.match(PostgreSqlParser.EQUAL); + this.state = 8375; + this.exprofdefault(); + } + break; + case 2: + { + this.state = 8377; + this.opt_column_list(); + this.state = 8378; + this.match(PostgreSqlParser.EQUAL); + this.state = 8379; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 8380; + this.exprofdefault(); + this.state = 8385; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 8381; + this.match(PostgreSqlParser.COMMA); + this.state = 8382; + this.exprofdefault(); + } + } + this.state = 8387; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 8388; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 8392; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1167, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatePartitionForeignTable) { - listener.exitCreatePartitionForeignTable(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatePartitionForeignTable) { - return visitor.visitCreatePartitionForeignTable(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class ImportforeignschemastmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_IMPORT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IMPORT, 0)!; - } - public KW_FOREIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0)!; - } - public schema_name(): Schema_nameContext { - return this.getRuleContext(0, Schema_nameContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { - if (i === undefined) { - return this.getRuleContexts(NameContext); + public default_values_or_values(): Default_values_or_valuesContext { + let localContext = new Default_values_or_valuesContext(this.context, this.state); + this.enterRule(localContext, 910, PostgreSqlParser.RULE_default_values_or_values); + let _la: number; + try { + this.state = 8408; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_VALUES: + this.enterOuterAlt(localContext, 1); + { + this.state = 8394; + this.match(PostgreSqlParser.KW_VALUES); + this.state = 8395; + this.match(PostgreSqlParser.OPEN_PAREN); + this.state = 8396; + this.exprofdefault(); + this.state = 8401; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 8397; + this.match(PostgreSqlParser.COMMA); + this.state = 8398; + this.exprofdefault(); + } + } + this.state = 8403; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 8404; + this.match(PostgreSqlParser.CLOSE_PAREN); + } + break; + case PostgreSqlParser.KW_DEFAULT: + this.enterOuterAlt(localContext, 2); + { + this.state = 8406; + this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 8407; + this.match(PostgreSqlParser.KW_VALUES); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } - - return this.getRuleContext(i, NameContext); - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INTO, 0)!; - } - public import_qualification(): Import_qualificationContext | null { - return this.getRuleContext(0, Import_qualificationContext); - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_importforeignschemastmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterImportforeignschemastmt) { - listener.enterImportforeignschemastmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitImportforeignschemastmt) { - listener.exitImportforeignschemastmt(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitImportforeignschemastmt) { - return visitor.visitImportforeignschemastmt(this); - } else { - return visitor.visitChildren(this); + public exprofdefault(): ExprofdefaultContext { + let localContext = new ExprofdefaultContext(this.context, this.state); + this.enterRule(localContext, 912, PostgreSqlParser.RULE_exprofdefault); + try { + this.state = 8412; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1170, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 8410; + this.sortby(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 8411; + this.match(PostgreSqlParser.KW_DEFAULT); + } + break; + } } - } -} - - -export class Import_qualification_typeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LIMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LIMIT, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public KW_EXCEPT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCEPT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_import_qualification_type; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterImport_qualification_type) { - listener.enterImport_qualification_type(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitImport_qualification_type) { - listener.exitImport_qualification_type(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitImport_qualification_type) { - return visitor.visitImport_qualification_type(this); - } else { - return visitor.visitChildren(this); + public stmt_close(): Stmt_closeContext { + let localContext = new Stmt_closeContext(this.context, this.state); + this.enterRule(localContext, 914, PostgreSqlParser.RULE_stmt_close); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8414; + this.match(PostgreSqlParser.KW_CLOSE); + this.state = 8415; + this.cursor_variable(); + this.state = 8416; + this.match(PostgreSqlParser.SEMI); + } } - } -} - - -export class Import_qualificationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public import_qualification_type(): Import_qualification_typeContext { - return this.getRuleContext(0, Import_qualification_typeContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public relation_expr_list(): Relation_expr_listContext { - return this.getRuleContext(0, Relation_expr_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_import_qualification; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterImport_qualification) { - listener.enterImport_qualification(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitImport_qualification) { - listener.exitImport_qualification(this); + finally { + this.exitRule(); } + return localContext; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitImport_qualification) { - return visitor.visitImport_qualification(this); - } else { - return visitor.visitChildren(this); + public stmt_null(): Stmt_nullContext { + let localContext = new Stmt_nullContext(this.context, this.state); + this.enterRule(localContext, 916, PostgreSqlParser.RULE_stmt_null); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8418; + this.match(PostgreSqlParser.KW_NULL); + this.state = 8419; + this.match(PostgreSqlParser.SEMI); + } } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; } -} - - -export class CreateusermappingstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_USER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USER, 0)!; - } - public KW_MAPPING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MAPPING, 0)!; - } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; - } - public auth_ident(): Auth_identContext { - return this.getRuleContext(0, Auth_identContext)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public create_generic_options(): Create_generic_optionsContext | null { - return this.getRuleContext(0, Create_generic_optionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createusermappingstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateusermappingstmt) { - listener.enterCreateusermappingstmt(this); + public stmt_commit_or_rollback(): Stmt_commit_or_rollbackContext { + let localContext = new Stmt_commit_or_rollbackContext(this.context, this.state); + this.enterRule(localContext, 918, PostgreSqlParser.RULE_stmt_commit_or_rollback); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8421; + _la = this.tokenStream.LA(1); + if(!(_la === 161 || _la === 319)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 8427; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 33) { + { + this.state = 8422; + this.match(PostgreSqlParser.KW_AND); + this.state = 8424; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 269) { + { + this.state = 8423; + this.match(PostgreSqlParser.KW_NO); + } + } + + this.state = 8426; + this.match(PostgreSqlParser.KW_CHAIN); + } + } + + this.state = 8429; + this.match(PostgreSqlParser.SEMI); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateusermappingstmt) { - listener.exitCreateusermappingstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateusermappingstmt) { - return visitor.visitCreateusermappingstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Auth_identContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_auth_ident; + public stmt_set(): Stmt_setContext { + let localContext = new Stmt_setContext(this.context, this.state); + this.enterRule(localContext, 920, PostgreSqlParser.RULE_stmt_set); + try { + this.state = 8443; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_SET: + this.enterOuterAlt(localContext, 1); + { + this.state = 8431; + this.match(PostgreSqlParser.KW_SET); + this.state = 8432; + this.any_name(); + this.state = 8433; + this.match(PostgreSqlParser.KW_TO); + this.state = 8434; + this.match(PostgreSqlParser.KW_DEFAULT); + this.state = 8435; + this.match(PostgreSqlParser.SEMI); + } + break; + case PostgreSqlParser.KW_RESET: + this.enterOuterAlt(localContext, 2); + { + this.state = 8437; + this.match(PostgreSqlParser.KW_RESET); + this.state = 8440; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + { + this.state = 8438; + this.any_name(); + } + break; + case PostgreSqlParser.KW_ALL: + { + this.state = 8439; + this.match(PostgreSqlParser.KW_ALL); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 8442; + this.match(PostgreSqlParser.SEMI); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAuth_ident) { - listener.enterAuth_ident(this); + public cursor_variable(): Cursor_variableContext { + let localContext = new Cursor_variableContext(this.context, this.state); + this.enterRule(localContext, 922, PostgreSqlParser.RULE_cursor_variable); + try { + this.state = 8447; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case PostgreSqlParser.KW_AND: + case PostgreSqlParser.KW_ARRAY: + case PostgreSqlParser.KW_COLLATE: + case PostgreSqlParser.KW_CONSTRAINT: + case PostgreSqlParser.KW_DEFAULT: + case PostgreSqlParser.KW_DO: + case PostgreSqlParser.KW_FETCH: + case PostgreSqlParser.KW_IS: + case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: + case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: + case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: + case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: + case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: + case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: + case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: + case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: + case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: + case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: + case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: + case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: + case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: + case PostgreSqlParser.KW_NEXT: + case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: + case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: + case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: + case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: + case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: + case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: + case PostgreSqlParser.KW_SCHEMA: + case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: + case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: + case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: + case PostgreSqlParser.KW_BETWEEN: + case PostgreSqlParser.KW_BIGINT: + case PostgreSqlParser.KW_BIT: + case PostgreSqlParser.KW_BOOLEAN: + case PostgreSqlParser.KW_CHAR: + case PostgreSqlParser.KW_CHARACTER: + case PostgreSqlParser.KW_COALESCE: + case PostgreSqlParser.KW_DEC: + case PostgreSqlParser.KW_DECIMAL: + case PostgreSqlParser.KW_EXISTS: + case PostgreSqlParser.KW_EXTRACT: + case PostgreSqlParser.KW_FLOAT: + case PostgreSqlParser.KW_GREATEST: + case PostgreSqlParser.KW_INOUT: + case PostgreSqlParser.KW_INT: + case PostgreSqlParser.KW_INTEGER: + case PostgreSqlParser.KW_INTERVAL: + case PostgreSqlParser.KW_LEAST: + case PostgreSqlParser.KW_NATIONAL: + case PostgreSqlParser.KW_NCHAR: + case PostgreSqlParser.KW_NONE: + case PostgreSqlParser.KW_NULLIF: + case PostgreSqlParser.KW_NUMERIC: + case PostgreSqlParser.KW_OVERLAY: + case PostgreSqlParser.KW_POSITION: + case PostgreSqlParser.KW_PRECISION: + case PostgreSqlParser.KW_REAL: + case PostgreSqlParser.KW_ROW: + case PostgreSqlParser.KW_SETOF: + case PostgreSqlParser.KW_SMALLINT: + case PostgreSqlParser.KW_SUBSTRING: + case PostgreSqlParser.KW_TIME: + case PostgreSqlParser.KW_TIMESTAMP: + case PostgreSqlParser.KW_TREAT: + case PostgreSqlParser.KW_TRIM: + case PostgreSqlParser.KW_VALUES: + case PostgreSqlParser.KW_VARCHAR: + case PostgreSqlParser.KW_XMLATTRIBUTES: + case PostgreSqlParser.KW_XMLCONCAT: + case PostgreSqlParser.KW_XMLELEMENT: + case PostgreSqlParser.KW_XMLEXISTS: + case PostgreSqlParser.KW_XMLFOREST: + case PostgreSqlParser.KW_XMLPARSE: + case PostgreSqlParser.KW_XMLPI: + case PostgreSqlParser.KW_XMLROOT: + case PostgreSqlParser.KW_XMLSERIALIZE: + case PostgreSqlParser.KW_CALL: + case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_OUT: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_GROUPING: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_XMLTABLE: + case PostgreSqlParser.KW_COLUMNS: + case PostgreSqlParser.KW_XMLNAMESPACES: + case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: + case PostgreSqlParser.KW_NORMALIZE: + case PostgreSqlParser.KW_DUMP: + case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: + case PostgreSqlParser.KW_VARIABLE_CONFLICT: + case PostgreSqlParser.KW_ERROR: + case PostgreSqlParser.KW_USE_VARIABLE: + case PostgreSqlParser.KW_USE_COLUMN: + case PostgreSqlParser.KW_ALIAS: + case PostgreSqlParser.KW_CONSTANT: + case PostgreSqlParser.KW_PERFORM: + case PostgreSqlParser.KW_GET: + case PostgreSqlParser.KW_DIAGNOSTICS: + case PostgreSqlParser.KW_STACKED: + case PostgreSqlParser.KW_ELSIF: + case PostgreSqlParser.KW_REVERSE: + case PostgreSqlParser.KW_SLICE: + case PostgreSqlParser.KW_EXIT: + case PostgreSqlParser.KW_RETURN: + case PostgreSqlParser.KW_QUERY: + case PostgreSqlParser.KW_RAISE: + case PostgreSqlParser.KW_SQLSTATE: + case PostgreSqlParser.KW_DEBUG: + case PostgreSqlParser.KW_LOG: + case PostgreSqlParser.KW_INFO: + case PostgreSqlParser.KW_NOTICE: + case PostgreSqlParser.KW_WARNING: + case PostgreSqlParser.KW_EXCEPTION: + case PostgreSqlParser.KW_ASSERT: + case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: + case PostgreSqlParser.Identifier: + case PostgreSqlParser.QuotedIdentifier: + case PostgreSqlParser.UnicodeQuotedIdentifier: + case PostgreSqlParser.StringConstant: + case PostgreSqlParser.UnicodeEscapeStringConstant: + case PostgreSqlParser.BeginDollarStringConstant: + case PostgreSqlParser.PLSQLVARIABLENAME: + case PostgreSqlParser.PLSQLIDENTIFIER: + case PostgreSqlParser.EscapeStringConstant: + this.enterOuterAlt(localContext, 1); + { + this.state = 8445; + this.colid(); + } + break; + case PostgreSqlParser.PARAM: + this.enterOuterAlt(localContext, 2); + { + this.state = 8446; + this.match(PostgreSqlParser.PARAM); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAuth_ident) { - listener.exitAuth_ident(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAuth_ident) { - return visitor.visitAuth_ident(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class AlterusermappingstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_USER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USER, 0)!; - } - public KW_MAPPING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MAPPING, 0)!; - } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; - } - public auth_ident(): Auth_identContext { - return this.getRuleContext(0, Auth_identContext)!; - } - public KW_SERVER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public alter_generic_options(): Alter_generic_optionsContext { - return this.getRuleContext(0, Alter_generic_optionsContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterusermappingstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterusermappingstmt) { - listener.enterAlterusermappingstmt(this); + public exception_sect(): Exception_sectContext { + let localContext = new Exception_sectContext(this.context, this.state); + this.enterRule(localContext, 924, PostgreSqlParser.RULE_exception_sect); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 8449; + this.match(PostgreSqlParser.KW_EXCEPTION); + this.state = 8466; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 8450; + this.match(PostgreSqlParser.KW_WHEN); + { + this.state = 8451; + this.proc_condition(); + this.state = 8456; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 82) { + { + { + this.state = 8452; + this.match(PostgreSqlParser.KW_OR); + this.state = 8453; + this.proc_condition(); + } + } + this.state = 8458; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + this.state = 8459; + this.match(PostgreSqlParser.KW_THEN); + this.state = 8463; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1177, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 8460; + this.proc_stmt(); + } + } + } + this.state = 8465; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1177, this.context); + } + } + } + this.state = 8468; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 102); + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterusermappingstmt) { - listener.exitAlterusermappingstmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterusermappingstmt) { - return visitor.visitAlterusermappingstmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class CreatepolicystmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_POLICY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_POLICY, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public rowsecuritydefaultpermissive(): RowsecuritydefaultpermissiveContext | null { - return this.getRuleContext(0, RowsecuritydefaultpermissiveContext); - } - public rowsecuritydefaultforcmd(): RowsecuritydefaultforcmdContext | null { - return this.getRuleContext(0, RowsecuritydefaultforcmdContext); - } - public rowsecuritydefaulttorole(): RowsecuritydefaulttoroleContext | null { - return this.getRuleContext(0, RowsecuritydefaulttoroleContext); - } - public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext | null { - return this.getRuleContext(0, RowsecurityoptionalexprContext); - } - public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext | null { - return this.getRuleContext(0, RowsecurityoptionalwithcheckContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createpolicystmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatepolicystmt) { - listener.enterCreatepolicystmt(this); + public proc_condition(): Proc_conditionContext { + let localContext = new Proc_conditionContext(this.context, this.state); + this.enterRule(localContext, 926, PostgreSqlParser.RULE_proc_condition); + try { + this.state = 8473; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1179, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 8470; + this.any_identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 8471; + this.match(PostgreSqlParser.KW_SQLSTATE); + this.state = 8472; + this.sconst(); + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatepolicystmt) { - listener.exitCreatepolicystmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatepolicystmt) { - return visitor.visitCreatepolicystmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class AlterpolicystmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_POLICY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_POLICY, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; - } - public rowsecurityoptionaltorole(): RowsecurityoptionaltoroleContext | null { - return this.getRuleContext(0, RowsecurityoptionaltoroleContext); - } - public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext | null { - return this.getRuleContext(0, RowsecurityoptionalexprContext); - } - public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext | null { - return this.getRuleContext(0, RowsecurityoptionalwithcheckContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterpolicystmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterpolicystmt) { - listener.enterAlterpolicystmt(this); + public any_identifier(): Any_identifierContext { + let localContext = new Any_identifierContext(this.context, this.state); + this.enterRule(localContext, 928, PostgreSqlParser.RULE_any_identifier); + try { + this.state = 8477; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1180, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 8475; + this.colid(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 8476; + this.plsql_unreserved_keyword(); + } + break; + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterpolicystmt) { - listener.exitAlterpolicystmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterpolicystmt) { - return visitor.visitAlterpolicystmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class AlterprocedurestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_PROCEDURE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0)!; - } - public procedure_name(): Procedure_nameContext { - return this.getRuleContext(0, Procedure_nameContext)!; - } - public procedure_cluase(): Procedure_cluaseContext { - return this.getRuleContext(0, Procedure_cluaseContext)!; - } - public func_args(): Func_argsContext | null { - return this.getRuleContext(0, Func_argsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterprocedurestmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterprocedurestmt) { - listener.enterAlterprocedurestmt(this); + public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext { + let localContext = new Plsql_unreserved_keywordContext(this.context, this.state); + this.enterRule(localContext, 930, PostgreSqlParser.RULE_plsql_unreserved_keyword); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8479; + _la = this.tokenStream.LA(1); + if(!(((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterprocedurestmt) { - listener.exitAlterprocedurestmt(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterprocedurestmt) { - return visitor.visitAlterprocedurestmt(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} + public sql_expression(): Sql_expressionContext { + let localContext = new Sql_expressionContext(this.context, this.state); + this.enterRule(localContext, 932, PostgreSqlParser.RULE_sql_expression); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 8482; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1181, this.context) ) { + case 1: + { + this.state = 8481; + this.target_list(); + } + break; + } + this.state = 8485; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1182, this.context) ) { + case 1: + { + this.state = 8484; + this.into_clause(); + } + break; + } + this.state = 8488; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 64) { + { + this.state = 8487; + this.from_clause(); + } + } + + this.state = 8491; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 103) { + { + this.state = 8490; + this.where_clause(); + } + } + this.state = 8494; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 66) { + { + this.state = 8493; + this.group_clause(); + } + } -export class Procedure_cluaseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public procedure_action(): Procedure_actionContext[]; - public procedure_action(i: number): Procedure_actionContext | null; - public procedure_action(i?: number): Procedure_actionContext[] | Procedure_actionContext | null { - if (i === undefined) { - return this.getRuleContexts(Procedure_actionContext); - } + this.state = 8498; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 67) { + { + this.state = 8496; + this.match(PostgreSqlParser.KW_HAVING); + this.state = 8497; + this.expression(); + } + } - return this.getRuleContext(i, Procedure_actionContext); - } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); - } - public KW_RENAME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RENAME, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public procedure_name_create(): Procedure_name_createContext | null { - return this.getRuleContext(0, Procedure_name_createContext); - } - public KW_OWNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNER, 0); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name_create(): Schema_name_createContext | null { - return this.getRuleContext(0, Schema_name_createContext); - } - public KW_DEPENDS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEPENDS, 0); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); - } - public KW_EXTENSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_procedure_cluase; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProcedure_cluase) { - listener.enterProcedure_cluase(this); + this.state = 8501; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 1187, this.context) ) { + case 1: + { + this.state = 8500; + this.window_clause(); + } + break; + } + } } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProcedure_cluase) { - listener.exitProcedure_cluase(this); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProcedure_cluase) { - return visitor.visitProcedure_cluase(this); - } else { - return visitor.visitChildren(this); + finally { + this.exitRule(); } + return localContext; } -} - - -export class Procedure_actionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SECURITY, 0); - } - public KW_INVOKER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INVOKER, 0); - } - public KW_DEFINER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFINER, 0); - } - public KW_EXTERNAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { - if (i === undefined) { - return this.getRuleContexts(NameContext); - } - return this.getRuleContext(i, NameContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); - } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_procedure_action; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProcedure_action) { - listener.enterProcedure_action(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProcedure_action) { - listener.exitProcedure_action(this); + public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 338: + return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); + case 340: + return this.valueExpression_sempred(localContext as ValueExpressionContext, predIndex); + case 341: + return this.primaryExpression_sempred(localContext as PrimaryExpressionContext, predIndex); + case 400: + return this.column_name_sempred(localContext as Column_nameContext, predIndex); } + return true; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProcedure_action) { - return visitor.visitProcedure_action(this); - } else { - return visitor.visitChildren(this); + private booleanExpression_sempred(localContext: BooleanExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.precpred(this.context, 2); + case 1: + return this.precpred(this.context, 1); } + return true; } -} - - -export class RowsecurityoptionalexprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsecurityoptionalexpr; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsecurityoptionalexpr) { - listener.enterRowsecurityoptionalexpr(this); + private valueExpression_sempred(localContext: ValueExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 2: + return this.precpred(this.context, 3); + case 3: + return this.precpred(this.context, 2); + case 4: + return this.precpred(this.context, 1); + case 5: + return this.precpred(this.context, 5); } + return true; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsecurityoptionalexpr) { - listener.exitRowsecurityoptionalexpr(this); + private primaryExpression_sempred(localContext: PrimaryExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 6: + return this.precpred(this.context, 3); + case 7: + return this.precpred(this.context, 6); + case 8: + return this.precpred(this.context, 4); + case 9: + return this.precpred(this.context, 1); } + return true; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsecurityoptionalexpr) { - return visitor.visitRowsecurityoptionalexpr(this); - } else { - return visitor.visitChildren(this); + private column_name_sempred(localContext: Column_nameContext | null, predIndex: number): boolean { + switch (predIndex) { + case 10: + return this.shouldMatchEmpty(); } + return true; } -} + public static readonly _serializedATN: number[] = [ + 4,1,590,8504,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, + 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, + 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, + 26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2, + 33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7, + 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, + 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, + 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2, + 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7, + 65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2, + 72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7, + 78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2, + 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, + 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, + 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103, + 2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109, + 7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114, + 2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120, + 7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125, + 2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131, + 7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136, + 2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142, + 7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147, + 2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153, + 7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158, + 2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164, + 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169, + 2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175, + 7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180, + 2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186, + 7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191, + 2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197, + 7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202, + 2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208, + 7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213, + 2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219, + 7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224, + 2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230, + 7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235, + 2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241, + 7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246, + 2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252, + 7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257, + 2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263, + 7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268, + 2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274, + 7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279, + 2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285, + 7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290, + 2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296, + 7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301, + 2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307, + 7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312, + 2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318, + 7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323, + 2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329, + 7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334, + 2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340, + 7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345, + 2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351, + 7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356, + 2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362, + 7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367, + 2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373, + 7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378, + 2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384, + 7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389, + 2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395, + 7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400, + 2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406, + 7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411, + 2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417, + 7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422, + 2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428, + 7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433, + 2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439, + 7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444, + 2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450, + 7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455, + 2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461, + 7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466, + 1,0,5,0,936,8,0,10,0,12,0,939,9,0,1,0,1,0,1,1,1,1,3,1,945,8,1,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,3,2,1065,8,2,3,2,1067,8,2,1,3,1,3,1,3,1,4, + 1,4,1,4,1,4,3,4,1076,8,4,1,4,5,4,1079,8,4,10,4,12,4,1082,9,4,1,5, + 1,5,1,5,3,5,1087,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,3,5,1122,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,3,6,1132,8,6,1,7,1,7,1,7,1,7,3,7,1138,8,7,1,7,5,7,1141,8,7,10, + 7,12,7,1144,9,7,1,8,1,8,1,8,1,8,3,8,1150,8,8,1,8,5,8,1153,8,8,10, + 8,12,8,1156,9,8,1,9,1,9,1,9,1,9,3,9,1162,8,9,1,9,1,9,1,9,1,9,1,9, + 1,10,1,10,1,10,1,10,3,10,1173,8,10,1,10,1,10,1,11,1,11,5,11,1179, + 8,11,10,11,12,11,1182,9,11,1,11,3,11,1185,8,11,1,11,1,11,1,11,1, + 11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,1197,8,11,1,11,1,11,1,11,1, + 11,3,11,1203,8,11,1,12,1,12,1,12,1,12,3,12,1209,8,12,1,12,1,12,3, + 12,1213,8,12,1,12,1,12,1,12,3,12,1218,8,12,1,12,1,12,3,12,1222,8, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1235, + 8,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1245,8,12,3,12, + 1247,8,12,1,13,1,13,1,13,1,13,3,13,1253,8,13,1,13,5,13,1256,8,13, + 10,13,12,13,1259,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1, + 15,1,15,3,15,1271,8,15,1,15,3,15,1274,8,15,1,15,1,15,1,15,3,15,1279, + 8,15,1,15,5,15,1282,8,15,10,15,12,15,1285,9,15,1,16,1,16,1,17,1, + 17,1,17,1,17,1,17,1,17,3,17,1295,8,17,1,18,1,18,3,18,1299,8,18,1, + 18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1311,8,19,1, + 20,1,20,3,20,1315,8,20,1,20,3,20,1318,8,20,1,20,1,20,3,20,1322,8, + 20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1334,8, + 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, + 21,1,21,1,21,1,21,3,21,1352,8,21,1,22,1,22,1,22,5,22,1357,8,22,10, + 22,12,22,1360,9,22,1,23,1,23,1,23,5,23,1365,8,23,10,23,12,23,1368, + 9,23,1,24,1,24,3,24,1372,8,24,1,25,1,25,1,25,1,25,1,25,3,25,1379, + 8,25,1,26,1,26,1,26,1,26,1,26,1,26,3,26,1387,8,26,1,27,1,27,1,27, + 1,27,3,27,1393,8,27,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1401,8,28, + 1,28,1,28,1,28,1,28,1,28,1,28,3,28,1409,8,28,1,29,1,29,3,29,1413, + 8,29,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, + 3,31,1427,8,31,1,32,1,32,1,32,3,32,1432,8,32,1,33,1,33,1,33,3,33, + 1437,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34, + 1449,8,34,1,35,1,35,1,35,1,35,3,35,1455,8,35,1,35,1,35,1,36,1,36, + 1,37,1,37,1,37,1,38,1,38,1,38,3,38,1467,8,38,1,38,1,38,1,38,3,38, + 1472,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1482,8,38, + 1,38,1,38,1,38,1,38,3,38,1488,8,38,1,38,1,38,1,38,3,38,1493,8,38, + 1,38,1,38,1,38,1,38,1,38,1,38,3,38,1501,8,38,1,38,1,38,1,38,3,38, + 1506,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1513,8,38,1,38,1,38,1,38, + 3,38,1518,8,38,1,38,1,38,1,38,3,38,1523,8,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,3,38,1533,8,38,1,38,1,38,1,38,3,38,1538,8,38, + 1,38,1,38,1,38,3,38,1543,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1550, + 8,38,1,38,1,38,3,38,1554,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,1,38,3,38,1568,8,38,1,38,1,38,1,38,1,38,3,38, + 1574,8,38,1,38,1,38,1,38,1,38,3,38,1580,8,38,1,38,1,38,1,38,3,38, + 1585,8,38,1,39,1,39,1,39,5,39,1590,8,39,10,39,12,39,1593,9,39,1, + 40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1604,8,40,1,41,1, + 41,1,41,1,41,5,41,1610,8,41,10,41,12,41,1613,9,41,1,41,1,41,1,42, + 1,42,1,42,3,42,1620,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, + 1,44,1,44,1,44,1,44,1,44,1,44,3,44,1636,8,44,1,45,1,45,1,45,1,45, + 1,46,1,46,1,46,3,46,1645,8,46,1,46,1,46,1,46,1,46,1,46,5,46,1652, + 8,46,10,46,12,46,1655,9,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1663, + 8,46,1,46,1,46,3,46,1667,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,46,3,46,1679,8,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46, + 1687,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1697,8,46, + 1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,1,46,3,46,1717,8,46,1,46,1,46,1,46,3,46,1722, + 8,46,1,46,3,46,1725,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1732,8,46, + 1,46,3,46,1735,8,46,1,46,1,46,3,46,1739,8,46,1,46,1,46,3,46,1743, + 8,46,1,46,3,46,1746,8,46,1,46,1,46,1,46,3,46,1751,8,46,1,46,1,46, + 1,46,3,46,1756,8,46,1,46,1,46,3,46,1760,8,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,46,3,46,1769,8,46,1,46,1,46,1,46,1,46,3,46,1775,8,46, + 1,46,1,46,3,46,1779,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46, + 1788,8,46,1,46,3,46,1791,8,46,1,46,1,46,1,46,1,46,3,46,1797,8,46, + 1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1806,8,46,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,1,46,4,46,1816,8,46,11,46,12,46,1817,1,46,1, + 46,3,46,1822,8,46,1,46,1,46,3,46,1826,8,46,1,46,1,46,1,46,3,46,1831, + 8,46,1,46,3,46,1834,8,46,1,46,1,46,1,46,1,46,3,46,1840,8,46,4,46, + 1842,8,46,11,46,12,46,1843,1,46,1,46,3,46,1848,8,46,1,46,1,46,1, + 46,1,46,3,46,1854,8,46,1,46,1,46,3,46,1858,8,46,1,46,1,46,1,46,3, + 46,1863,8,46,1,46,1,46,1,46,3,46,1868,8,46,1,46,1,46,3,46,1872,8, + 46,1,46,3,46,1875,8,46,1,47,1,47,1,47,1,47,1,47,3,47,1882,8,47,1, + 48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,5,50,1893,8,50,10,50, + 12,50,1896,9,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52, + 3,52,1908,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, + 5,53,1920,8,53,10,53,12,53,1923,9,53,1,53,1,53,1,53,1,53,1,53,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1939,8,53,1,54,1, + 54,1,54,1,54,1,54,1,54,5,54,1947,8,54,10,54,12,54,1950,9,54,1,55, + 1,55,1,55,1,55,3,55,1956,8,55,1,55,1,55,1,55,3,55,1961,8,55,1,55, + 1,55,3,55,1965,8,55,1,55,1,55,1,55,1,55,1,55,3,55,1972,8,55,1,55, + 1,55,1,55,3,55,1977,8,55,1,55,3,55,1980,8,55,3,55,1982,8,55,1,56, + 1,56,1,56,3,56,1987,8,56,1,57,1,57,3,57,1991,8,57,1,57,1,57,3,57, + 1995,8,57,1,57,1,57,3,57,1999,8,57,1,57,1,57,1,57,3,57,2004,8,57, + 1,57,3,57,2007,8,57,1,57,1,57,3,57,2011,8,57,1,57,3,57,2014,8,57, + 1,57,1,57,3,57,2018,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2026, + 8,57,1,57,1,57,1,57,3,57,2031,8,57,1,57,3,57,2034,8,57,1,57,1,57, + 3,57,2038,8,57,1,58,1,58,1,58,1,58,3,58,2044,8,58,1,58,1,58,1,58, + 1,58,1,58,1,58,1,58,3,58,2053,8,58,1,58,1,58,3,58,2057,8,58,1,58, + 1,58,1,58,1,58,5,58,2063,8,58,10,58,12,58,2066,9,58,1,58,1,58,1, + 58,1,58,5,58,2072,8,58,10,58,12,58,2075,9,58,1,58,1,58,3,58,2079, + 8,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,5,59,2089,8,59,10,59, + 12,59,2092,9,59,1,59,1,59,3,59,2096,8,59,1,60,1,60,3,60,2100,8,60, + 1,60,1,60,3,60,2104,8,60,1,60,1,60,1,60,3,60,2109,8,60,1,60,1,60, + 3,60,2113,8,60,1,60,3,60,2116,8,60,1,60,3,60,2119,8,60,1,60,3,60, + 2122,8,60,1,60,3,60,2125,8,60,1,60,3,60,2128,8,60,1,60,1,60,1,60, + 3,60,2133,8,60,1,60,3,60,2136,8,60,1,60,3,60,2139,8,60,1,60,3,60, + 2142,8,60,1,60,3,60,2145,8,60,1,60,3,60,2148,8,60,1,60,1,60,1,60, + 1,60,3,60,2154,8,60,1,60,1,60,3,60,2158,8,60,1,60,3,60,2161,8,60, + 1,60,3,60,2164,8,60,1,60,3,60,2167,8,60,1,60,3,60,2170,8,60,3,60, + 2172,8,60,1,61,1,61,1,61,1,61,1,61,3,61,2179,8,61,1,62,1,62,1,62, + 1,62,5,62,2185,8,62,10,62,12,62,2188,9,62,1,62,1,62,1,63,1,63,1, + 63,5,63,2195,8,63,10,63,12,63,2198,9,63,1,64,1,64,1,64,1,64,1,64, + 5,64,2205,8,64,10,64,12,64,2208,9,64,1,64,1,64,3,64,2212,8,64,1, + 64,3,64,2215,8,64,1,65,1,65,1,65,3,65,2220,8,65,1,65,5,65,2223,8, + 65,10,65,12,65,2226,9,65,1,65,1,65,3,65,2230,8,65,1,65,3,65,2233, + 8,65,1,66,1,66,1,66,3,66,2238,8,66,1,66,1,66,1,66,1,66,1,66,1,66, + 1,66,3,66,2247,8,66,3,66,2249,8,66,1,66,1,66,3,66,2253,8,66,1,66, + 3,66,2256,8,66,1,66,1,66,3,66,2260,8,66,1,66,5,66,2263,8,66,10,66, + 12,66,2266,9,66,1,67,1,67,3,67,2270,8,67,1,67,1,67,3,67,2274,8,67, + 1,67,3,67,2277,8,67,1,67,1,67,3,67,2281,8,67,1,68,3,68,2284,8,68, + 1,68,1,68,1,68,3,68,2289,8,68,1,68,3,68,2292,8,68,1,68,1,68,1,68, + 3,68,2297,8,68,1,68,3,68,2300,8,68,1,68,1,68,3,68,2304,8,68,1,68, + 3,68,2307,8,68,1,68,3,68,2310,8,68,1,68,1,68,1,68,3,68,2315,8,68, + 1,68,3,68,2318,8,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2326,8,68, + 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,4,68,2336,8,68,11,68,12, + 68,2337,1,68,1,68,3,68,2342,8,68,1,68,1,68,1,68,1,68,1,68,3,68,2349, + 8,68,1,68,1,68,1,68,3,68,2354,8,68,1,68,3,68,2357,8,68,1,68,3,68, + 2360,8,68,1,68,3,68,2363,8,68,1,69,1,69,1,69,3,69,2368,8,69,1,70, + 1,70,1,71,1,71,1,71,1,71,1,71,5,71,2377,8,71,10,71,12,71,2380,9, + 71,1,71,1,71,1,71,3,71,2385,8,71,1,71,1,71,3,71,2389,8,71,1,71,3, + 71,2392,8,71,1,71,3,71,2395,8,71,1,71,5,71,2398,8,71,10,71,12,71, + 2401,9,71,1,71,1,71,5,71,2405,8,71,10,71,12,71,2408,9,71,3,71,2410, + 8,71,1,71,1,71,3,71,2414,8,71,1,71,1,71,1,71,1,71,5,71,2420,8,71, + 10,71,12,71,2423,9,71,1,71,1,71,3,71,2427,8,71,1,71,3,71,2430,8, + 71,1,71,3,71,2433,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2440,8,71,1, + 71,5,71,2443,8,71,10,71,12,71,2446,9,71,1,71,1,71,1,71,1,71,1,71, + 1,71,3,71,2454,8,71,1,71,3,71,2457,8,71,1,71,3,71,2460,8,71,1,71, + 5,71,2463,8,71,10,71,12,71,2466,9,71,3,71,2468,8,71,1,72,1,72,1, + 72,1,72,1,73,1,73,1,73,1,73,5,73,2478,8,73,10,73,12,73,2481,9,73, + 1,73,1,73,1,74,1,74,1,74,5,74,2488,8,74,10,74,12,74,2491,9,74,1, + 75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, + 77,3,77,2507,8,77,1,78,1,78,3,78,2511,8,78,1,78,1,78,3,78,2515,8, + 78,3,78,2517,8,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1, + 81,1,81,1,81,1,81,1,81,1,81,3,81,2534,8,81,3,81,2536,8,81,1,82,1, + 82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,5,83,2550,8, + 83,10,83,12,83,2553,9,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84, + 3,84,2563,8,84,1,84,3,84,2566,8,84,1,84,3,84,2569,8,84,1,85,1,85, + 1,85,1,86,1,86,1,86,1,86,3,86,2578,8,86,1,87,1,87,1,87,1,87,1,87, + 1,87,1,87,3,87,2587,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,90, + 1,90,1,90,1,90,1,91,1,91,1,91,3,91,2603,8,91,1,91,3,91,2606,8,91, + 1,91,3,91,2609,8,91,1,91,1,91,1,91,1,91,5,91,2615,8,91,10,91,12, + 91,2618,9,91,1,91,3,91,2621,8,91,1,91,1,91,1,92,1,92,1,92,3,92,2628, + 8,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,3,93,2637,8,93,1,93,1,93, + 3,93,2641,8,93,1,93,1,93,1,93,1,93,3,93,2647,8,93,1,94,1,94,3,94, + 2651,8,94,1,94,3,94,2654,8,94,1,94,3,94,2657,8,94,1,94,3,94,2660, + 8,94,1,94,3,94,2663,8,94,1,95,1,95,1,95,1,95,3,95,2669,8,95,1,96, + 1,96,3,96,2673,8,96,1,96,1,96,1,96,3,96,2678,8,96,1,96,1,96,3,96, + 2682,8,96,1,96,3,96,2685,8,96,1,96,3,96,2688,8,96,1,96,3,96,2691, + 8,96,1,96,1,96,1,96,3,96,2696,8,96,1,97,1,97,1,97,1,97,3,97,2702, + 8,97,1,97,1,97,3,97,2706,8,97,1,98,1,98,3,98,2710,8,98,1,98,1,98, + 3,98,2714,8,98,1,98,1,98,4,98,2718,8,98,11,98,12,98,2719,3,98,2722, + 8,98,1,99,1,99,1,99,3,99,2727,8,99,1,99,1,99,4,99,2731,8,99,11,99, + 12,99,2732,1,100,1,100,1,100,1,100,3,100,2739,8,100,1,100,1,100, + 3,100,2743,8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,100,3,100,2758,8,100,1,100,1,100,1,100, + 3,100,2763,8,100,1,100,3,100,2766,8,100,3,100,2768,8,100,1,101,3, + 101,2771,8,101,1,101,1,101,3,101,2775,8,101,1,102,1,102,3,102,2779, + 8,102,1,102,3,102,2782,8,102,1,102,3,102,2785,8,102,1,102,1,102, + 1,102,1,102,1,102,1,102,3,102,2793,8,102,1,102,1,102,1,102,1,102, + 3,102,2799,8,102,3,102,2801,8,102,1,103,1,103,1,103,1,103,3,103, + 2807,8,103,1,103,1,103,1,103,3,103,2812,8,103,1,104,1,104,1,104, + 3,104,2817,8,104,1,104,1,104,3,104,2821,8,104,1,104,1,104,1,104, + 1,104,1,104,5,104,2828,8,104,10,104,12,104,2831,9,104,1,105,1,105, + 1,105,1,105,1,105,1,105,5,105,2839,8,105,10,105,12,105,2842,9,105, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,3,106,2880,8,106,1,107,1,107,1,107,1,107,1,107, + 1,107,4,107,2888,8,107,11,107,12,107,2889,3,107,2892,8,107,1,107, + 3,107,2895,8,107,1,108,1,108,3,108,2899,8,108,1,108,1,108,3,108, + 2903,8,108,1,109,1,109,1,109,1,109,1,109,1,109,4,109,2911,8,109, + 11,109,12,109,2912,3,109,2915,8,109,1,109,1,109,4,109,2919,8,109, + 11,109,12,109,2920,3,109,2923,8,109,1,110,1,110,1,110,1,110,1,110, + 5,110,2930,8,110,10,110,12,110,2933,9,110,1,110,1,110,1,111,1,111, + 1,111,1,111,1,111,5,111,2942,8,111,10,111,12,111,2945,9,111,1,111, + 1,111,1,112,1,112,1,112,1,113,1,113,1,113,1,114,1,114,1,114,3,114, + 2958,8,114,1,114,1,114,1,114,3,114,2963,8,114,1,114,3,114,2966,8, + 114,1,114,1,114,1,114,1,114,1,114,3,114,2973,8,114,1,115,1,115,1, + 115,3,115,2978,8,115,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2986, + 8,116,3,116,2988,8,116,1,117,1,117,1,117,1,117,3,117,2994,8,117, + 1,117,1,117,1,117,3,117,2999,8,117,1,117,1,117,3,117,3003,8,117, + 1,117,1,117,1,117,3,117,3008,8,117,1,117,1,117,1,117,1,117,3,117, + 3014,8,117,1,117,1,117,1,117,1,117,1,117,3,117,3021,8,117,1,117, + 1,117,1,117,1,117,3,117,3027,8,117,3,117,3029,8,117,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,3,118,3038,8,118,1,118,1,118,1,118, + 1,118,3,118,3044,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, + 3052,8,118,1,119,1,119,1,119,1,119,3,119,3058,8,119,1,119,1,119, + 1,119,3,119,3063,8,119,1,119,1,119,1,119,3,119,3068,8,119,1,120, + 1,120,1,120,1,120,1,120,1,120,3,120,3076,8,120,1,120,1,120,1,120, + 1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121, + 3091,8,121,3,121,3093,8,121,1,121,1,121,3,121,3097,8,121,1,121,1, + 121,3,121,3101,8,121,1,121,3,121,3104,8,121,1,121,3,121,3107,8,121, + 1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,3116,8,122,1,122, + 3,122,3119,8,122,1,122,3,122,3122,8,122,1,123,1,123,1,123,1,123, + 3,123,3128,8,123,1,123,1,123,5,123,3132,8,123,10,123,12,123,3135, + 9,123,1,123,3,123,3138,8,123,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,3,123,3150,8,123,1,123,1,123,1,123,1,123, + 3,123,3156,8,123,1,124,3,124,3159,8,124,1,124,1,124,1,124,3,124, + 3164,8,124,1,124,1,124,3,124,3168,8,124,1,124,1,124,1,124,1,124, + 1,124,3,124,3175,8,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, + 1,124,3,124,3185,8,124,3,124,3187,8,124,1,125,1,125,1,125,1,125, + 1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,128,1,128,3,128,3211,8,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3223, + 8,128,1,128,4,128,3226,8,128,11,128,12,128,3227,3,128,3230,8,128, + 1,128,1,128,3,128,3234,8,128,1,128,3,128,3237,8,128,1,128,3,128, + 3240,8,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128, + 3250,8,128,1,128,3,128,3253,8,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,3,128,3263,8,128,1,128,5,128,3266,8,128,10,128, + 12,128,3269,9,128,1,128,1,128,3,128,3273,8,128,1,128,3,128,3276, + 8,128,1,128,3,128,3279,8,128,1,128,1,128,1,128,1,128,1,128,1,128, + 3,128,3287,8,128,1,129,1,129,1,129,1,129,3,129,3293,8,129,1,130, + 1,130,1,130,5,130,3298,8,130,10,130,12,130,3301,9,130,1,131,1,131, + 1,131,1,131,1,131,3,131,3308,8,131,1,131,3,131,3311,8,131,1,132, + 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,3,133,3322,8,133, + 1,134,1,134,3,134,3326,8,134,1,134,1,134,5,134,3330,8,134,10,134, + 12,134,3333,9,134,1,135,1,135,1,135,1,135,3,135,3339,8,135,1,136, + 3,136,3342,8,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136, + 3351,8,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137, + 1,137,5,137,3363,8,137,10,137,12,137,3366,9,137,3,137,3368,8,137, + 1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,5,138, + 3380,8,138,10,138,12,138,3383,9,138,1,138,1,138,1,139,1,139,1,139, + 1,139,1,139,1,139,3,139,3393,8,139,1,139,3,139,3396,8,139,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,5,140,3406,8,140,10,140, + 12,140,3409,9,140,1,141,1,141,3,141,3413,8,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,141,5,141,3424,8,141,10,141,12,141, + 3427,9,141,1,141,1,141,3,141,3431,8,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,3444,8,141,1,141, + 1,141,1,141,1,141,1,141,5,141,3451,8,141,10,141,12,141,3454,9,141, + 3,141,3456,8,141,1,141,3,141,3459,8,141,1,141,1,141,1,141,1,141, + 1,141,3,141,3466,8,141,1,141,3,141,3469,8,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,3481,8,141,1,141, + 1,141,1,141,1,141,3,141,3487,8,141,3,141,3489,8,141,1,142,1,142, + 1,142,1,142,5,142,3495,8,142,10,142,12,142,3498,9,142,1,142,1,142, + 1,143,1,143,1,143,3,143,3505,8,143,1,144,1,144,1,144,1,144,1,144, + 1,144,3,144,3513,8,144,1,145,1,145,1,145,1,145,1,146,1,146,1,146, + 1,146,1,146,1,146,3,146,3525,8,146,1,146,1,146,1,146,3,146,3530, + 8,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,3,146, + 3541,8,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148, + 3,148,3552,8,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,3560, + 8,148,1,148,1,148,1,148,1,148,5,148,3566,8,148,10,148,12,148,3569, + 9,148,1,149,1,149,1,149,1,149,3,149,3575,8,149,1,149,1,149,1,149, + 1,149,1,149,3,149,3582,8,149,3,149,3584,8,149,1,149,3,149,3587,8, + 149,1,149,1,149,1,149,3,149,3592,8,149,1,149,1,149,1,149,3,149,3597, + 8,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,5,151,3614,8,151,10,151,12,151,3617, + 9,151,1,151,1,151,1,151,1,151,5,151,3623,8,151,10,151,12,151,3626, + 9,151,3,151,3628,8,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153, + 1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154,3655,8,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,3,154,3664,8,154,1,154,3,154, + 3667,8,154,1,154,1,154,3,154,3671,8,154,1,154,1,154,3,154,3675,8, + 154,1,154,1,154,3,154,3679,8,154,1,154,1,154,1,154,5,154,3684,8, + 154,10,154,12,154,3687,9,154,1,154,3,154,3690,8,154,1,154,1,154, + 3,154,3694,8,154,1,154,1,154,3,154,3698,8,154,1,154,1,154,3,154, + 3702,8,154,1,154,1,154,1,154,3,154,3707,8,154,1,154,1,154,3,154, + 3711,8,154,1,154,1,154,1,154,3,154,3716,8,154,1,154,1,154,1,154, + 1,154,3,154,3722,8,154,1,154,1,154,1,154,3,154,3727,8,154,1,154, + 1,154,1,154,5,154,3732,8,154,10,154,12,154,3735,9,154,1,154,3,154, + 3738,8,154,1,154,1,154,1,154,1,154,3,154,3744,8,154,1,154,1,154, + 3,154,3748,8,154,1,154,1,154,1,154,3,154,3753,8,154,1,154,1,154, + 1,154,1,154,1,154,1,154,3,154,3761,8,154,1,154,1,154,1,154,1,154, + 3,154,3767,8,154,1,154,1,154,1,154,3,154,3772,8,154,1,154,1,154, + 1,154,1,154,1,154,3,154,3779,8,154,1,154,1,154,1,154,3,154,3784, + 8,154,1,154,1,154,3,154,3788,8,154,1,154,1,154,1,154,3,154,3793, + 8,154,1,154,1,154,1,154,1,154,3,154,3799,8,154,1,154,1,154,1,154, + 1,154,1,154,3,154,3806,8,154,1,154,1,154,1,154,3,154,3811,8,154, + 1,154,1,154,1,154,1,154,1,154,3,154,3818,8,154,1,154,1,154,1,154, + 3,154,3823,8,154,1,154,1,154,1,154,1,154,1,154,3,154,3830,8,154, + 1,154,1,154,3,154,3834,8,154,1,154,1,154,1,154,1,154,5,154,3840, + 8,154,10,154,12,154,3843,9,154,1,154,3,154,3846,8,154,3,154,3848, + 8,154,1,155,3,155,3851,8,155,1,155,1,155,1,155,3,155,3856,8,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,3,155,3866,8,155, + 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,3,156,3881,8,156,1,156,3,156,3884,8,156,1,156,1,156, + 1,156,1,156,1,156,1,156,3,156,3892,8,156,1,157,1,157,1,157,5,157, + 3897,8,157,10,157,12,157,3900,9,157,1,158,1,158,3,158,3904,8,158, + 1,159,1,159,4,159,3908,8,159,11,159,12,159,3909,1,160,1,160,3,160, + 3914,8,160,1,160,1,160,1,160,5,160,3919,8,160,10,160,12,160,3922, + 9,160,1,160,1,160,3,160,3926,8,160,1,160,3,160,3929,8,160,1,161, + 3,161,3932,8,161,1,161,1,161,3,161,3936,8,161,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,3,162,3945,8,162,1,162,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, + 1,162,3,162,3963,8,162,1,162,3,162,3966,8,162,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, + 1,162,1,162,1,162,1,162,1,162,3,162,3998,8,162,1,162,1,162,1,162, + 3,162,4003,8,162,1,163,1,163,1,163,1,163,3,163,4009,8,163,1,163, + 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163, + 1,163,1,163,1,163,1,163,1,163,1,163,3,163,4029,8,163,1,163,1,163, + 1,163,3,163,4034,8,163,1,164,1,164,1,164,1,165,3,165,4040,8,165, + 1,165,3,165,4043,8,165,1,165,1,165,3,165,4047,8,165,1,165,1,165, + 3,165,4051,8,165,1,165,1,165,1,165,1,165,3,165,4057,8,165,1,165, + 3,165,4060,8,165,1,165,1,165,3,165,4064,8,165,1,165,1,165,3,165, + 4068,8,165,1,165,1,165,1,165,3,165,4073,8,165,1,165,3,165,4076,8, + 165,1,165,3,165,4079,8,165,1,165,3,165,4082,8,165,1,166,1,166,1, + 167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,4095,8, + 167,1,168,1,168,1,168,1,168,3,168,4101,8,168,1,168,1,168,1,168,1, + 168,1,168,1,168,3,168,4109,8,168,1,169,1,169,1,169,5,169,4114,8, + 169,10,169,12,169,4117,9,169,1,169,1,169,3,169,4121,8,169,1,169, + 3,169,4124,8,169,1,169,1,169,1,169,5,169,4129,8,169,10,169,12,169, + 4132,9,169,3,169,4134,8,169,1,170,1,170,1,171,1,171,1,171,1,171, + 3,171,4142,8,171,1,171,3,171,4145,8,171,1,172,1,172,1,172,3,172, + 4150,8,172,1,172,1,172,1,172,1,172,1,172,3,172,4157,8,172,1,172, + 3,172,4160,8,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,5,172,4178,8,172, + 10,172,12,172,4181,9,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,3,172,4192,8,172,1,173,3,173,4195,8,173,1,173,1,173, + 1,173,1,173,3,173,4201,8,173,1,173,5,173,4204,8,173,10,173,12,173, + 4207,9,173,1,174,1,174,1,174,1,174,5,174,4213,8,174,10,174,12,174, + 4216,9,174,1,174,1,174,1,174,1,174,1,174,3,174,4223,8,174,1,174, + 1,174,1,174,3,174,4228,8,174,1,175,1,175,1,175,1,175,3,175,4234, + 8,175,1,175,1,175,1,175,5,175,4239,8,175,10,175,12,175,4242,9,175, + 1,175,1,175,1,175,1,175,1,175,3,175,4249,8,175,1,175,3,175,4252, + 8,175,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,5,176, + 4263,8,176,10,176,12,176,4266,9,176,1,176,1,176,1,177,1,177,1,177, + 1,177,1,177,1,177,1,177,1,177,1,177,3,177,4279,8,177,1,177,1,177, + 1,177,1,177,3,177,4285,8,177,1,177,1,177,1,177,1,177,1,177,1,177, + 3,177,4293,8,177,3,177,4295,8,177,1,178,1,178,1,179,1,179,3,179, + 4301,8,179,1,179,1,179,3,179,4305,8,179,1,179,3,179,4308,8,179,1, + 179,3,179,4311,8,179,1,179,1,179,1,179,3,179,4316,8,179,1,179,1, + 179,1,179,3,179,4321,8,179,1,179,1,179,3,179,4325,8,179,1,179,3, + 179,4328,8,179,1,179,3,179,4331,8,179,1,179,3,179,4334,8,179,1,179, + 3,179,4337,8,179,1,180,1,180,1,180,1,180,5,180,4343,8,180,10,180, + 12,180,4346,9,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181, + 3,181,4356,8,181,1,181,3,181,4359,8,181,1,181,3,181,4362,8,181,1, + 181,1,181,1,181,3,181,4367,8,181,1,181,3,181,4370,8,181,1,181,1, + 181,3,181,4374,8,181,1,182,1,182,3,182,4378,8,182,1,182,1,182,1, + 182,1,182,3,182,4384,8,182,1,182,1,182,1,182,1,182,5,182,4390,8, + 182,10,182,12,182,4393,9,182,3,182,4395,8,182,1,182,1,182,1,182, + 1,182,1,182,1,182,1,182,1,182,1,182,5,182,4406,8,182,10,182,12,182, + 4409,9,182,1,182,1,182,3,182,4413,8,182,3,182,4415,8,182,1,182,4, + 182,4418,8,182,11,182,12,182,4419,1,182,1,182,1,182,1,182,1,182, + 3,182,4427,8,182,1,183,1,183,1,183,1,184,1,184,3,184,4434,8,184, + 1,184,1,184,1,185,1,185,1,185,5,185,4441,8,185,10,185,12,185,4444, + 9,185,1,186,1,186,1,186,5,186,4449,8,186,10,186,12,186,4452,9,186, + 1,187,1,187,1,187,1,187,1,187,3,187,4459,8,187,1,188,1,188,1,188, + 5,188,4464,8,188,10,188,12,188,4467,9,188,1,189,1,189,1,189,1,189, + 1,189,3,189,4474,8,189,1,190,1,190,1,190,5,190,4479,8,190,10,190, + 12,190,4482,9,190,1,191,1,191,1,191,1,191,1,191,3,191,4489,8,191, + 1,192,1,192,3,192,4493,8,192,1,192,1,192,3,192,4497,8,192,3,192, + 4499,8,192,1,192,1,192,1,193,1,193,3,193,4505,8,193,1,193,1,193, + 1,193,3,193,4510,8,193,1,194,1,194,3,194,4514,8,194,1,194,1,194, + 1,194,1,194,1,194,3,194,4521,8,194,1,195,1,195,1,195,3,195,4526, + 8,195,1,196,1,196,1,196,3,196,4531,8,196,1,196,1,196,1,196,3,196, + 4536,8,196,3,196,4538,8,196,1,196,1,196,1,197,1,197,1,197,1,198, + 1,198,1,198,3,198,4548,8,198,1,198,1,198,1,198,1,198,1,198,1,198, + 1,198,1,198,3,198,4558,8,198,1,198,1,198,1,198,1,198,1,198,1,198, + 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,3,198,4574,8,198, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,5,199,4590,8,199,10,199,12,199,4593,9,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,3,199,4604,8,199, + 1,199,1,199,1,199,1,199,1,199,3,199,4611,8,199,1,200,1,200,1,200, + 1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,3,202, + 4626,8,202,1,202,4,202,4629,8,202,11,202,12,202,4630,1,202,3,202, + 4634,8,202,1,203,1,203,1,203,3,203,4639,8,203,1,203,1,203,1,203, + 3,203,4644,8,203,1,203,1,203,1,203,3,203,4649,8,203,1,203,3,203, + 4652,8,203,1,203,3,203,4655,8,203,1,204,1,204,1,204,3,204,4660,8, + 204,1,204,1,204,1,204,5,204,4665,8,204,10,204,12,204,4668,9,204, + 1,204,3,204,4671,8,204,1,205,1,205,1,205,3,205,4676,8,205,1,205, + 1,205,1,205,5,205,4681,8,205,10,205,12,205,4684,9,205,1,205,3,205, + 4687,8,205,1,206,1,206,1,206,1,206,3,206,4693,8,206,1,206,1,206, + 1,206,1,206,1,206,1,206,1,206,3,206,4702,8,206,1,206,1,206,1,207, + 1,207,1,207,5,207,4709,8,207,10,207,12,207,4712,9,207,1,207,1,207, + 1,208,1,208,1,208,1,209,1,209,1,209,1,209,4,209,4723,8,209,11,209, + 12,209,4724,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210, + 1,210,1,210,3,210,4738,8,210,1,210,1,210,1,210,1,210,3,210,4744, + 8,210,1,210,1,210,3,210,4748,8,210,3,210,4750,8,210,1,211,1,211, + 1,211,1,212,1,212,3,212,4757,8,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,1,212,1,212,1,212,1,212,3,212,4770,8,212,1,212,1,212, + 1,212,1,212,1,212,3,212,4777,8,212,3,212,4779,8,212,1,212,1,212, + 1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,5,214, + 4793,8,214,10,214,12,214,4796,9,214,1,214,3,214,4799,8,214,1,214, + 1,214,3,214,4803,8,214,1,214,1,214,1,214,3,214,4808,8,214,1,214, + 1,214,1,214,3,214,4813,8,214,1,214,1,214,1,214,3,214,4818,8,214, + 1,214,1,214,1,214,3,214,4823,8,214,1,214,3,214,4826,8,214,1,215, + 1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,3,216,4838, + 8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4891,8,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4900,8,216,1,216, + 1,216,3,216,4904,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 3,216,4913,8,216,1,216,1,216,3,216,4917,8,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,3,216,4926,8,216,1,216,1,216,3,216,4930, + 8,216,1,216,1,216,1,216,3,216,4935,8,216,1,216,3,216,4938,8,216, + 1,216,1,216,3,216,4942,8,216,1,216,1,216,1,216,3,216,4947,8,216, + 3,216,4949,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, + 4958,8,216,1,216,1,216,1,216,3,216,4963,8,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,3,216,4974,8,216,1,216,1,216, + 3,216,4978,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,3,216,4992,8,216,1,216,1,216,1,216,1,216, + 1,216,1,216,3,216,5000,8,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,5038,8,216, + 3,216,5040,8,216,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217, + 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,3,217,5059, + 8,217,1,217,3,217,5062,8,217,1,217,1,217,1,217,1,217,1,217,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218,5089,8,218, + 1,218,1,218,3,218,5093,8,218,1,218,1,218,3,218,5097,8,218,1,218, + 1,218,3,218,5101,8,218,1,218,1,218,3,218,5105,8,218,1,218,3,218, + 5108,8,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,3,218,5123,8,218,1,218,1,218,1,218,1,218, + 1,218,3,218,5130,8,218,1,219,1,219,1,219,1,219,1,219,1,219,1,220, + 1,220,1,220,1,220,5,220,5142,8,220,10,220,12,220,5145,9,220,1,220, + 1,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,3,221,5157, + 8,221,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,3,223,5182,8,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 3,223,5201,8,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,3,223,5216,8,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 3,223,5232,8,223,1,223,1,223,1,223,1,223,1,223,3,223,5239,8,223, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,3,224,5250, + 8,224,1,224,3,224,5253,8,224,1,225,1,225,1,225,1,225,1,225,1,225, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,5,225,5270, + 8,225,10,225,12,225,5273,9,225,3,225,5275,8,225,1,226,1,226,1,226, + 1,226,1,226,1,226,1,226,1,226,1,226,5,226,5286,8,226,10,226,12,226, + 5289,9,226,1,226,3,226,5292,8,226,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,3,227,5312,8,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,5,227,5322,8,227,10,227,12,227,5325,9,227,1,227,3,227, + 5328,8,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 3,227,5350,8,227,1,228,1,228,3,228,5354,8,228,1,228,1,228,1,228, + 1,228,1,228,1,228,1,228,1,228,3,228,5364,8,228,1,228,1,228,3,228, + 5368,8,228,1,228,1,228,1,228,1,228,3,228,5374,8,228,1,228,1,228, + 3,228,5378,8,228,5,228,5380,8,228,10,228,12,228,5383,9,228,1,228, + 3,228,5386,8,228,1,229,1,229,1,229,1,229,1,229,3,229,5393,8,229, + 1,230,1,230,1,230,3,230,5398,8,230,1,231,1,231,1,231,1,232,1,232, + 1,232,1,233,1,233,1,233,3,233,5409,8,233,1,234,1,234,3,234,5413, + 8,234,1,234,3,234,5416,8,234,1,234,1,234,1,234,3,234,5421,8,234, + 1,234,1,234,1,234,1,234,3,234,5427,8,234,1,234,1,234,1,234,1,234, + 1,234,1,234,1,234,1,234,1,234,3,234,5438,8,234,1,234,1,234,3,234, + 5442,8,234,1,234,3,234,5445,8,234,1,234,1,234,3,234,5449,8,234,1, + 234,1,234,3,234,5453,8,234,1,234,3,234,5456,8,234,1,235,1,235,1, + 236,1,236,1,236,1,236,1,236,1,236,3,236,5466,8,236,1,236,3,236,5469, + 8,236,1,237,1,237,3,237,5473,8,237,1,237,5,237,5476,8,237,10,237, + 12,237,5479,9,237,1,238,1,238,1,238,3,238,5484,8,238,1,238,3,238, + 5487,8,238,1,238,1,238,1,238,3,238,5492,8,238,1,238,3,238,5495,8, + 238,1,238,1,238,1,238,1,238,1,238,3,238,5502,8,238,3,238,5504,8, + 238,1,238,1,238,1,238,1,238,3,238,5510,8,238,1,238,1,238,3,238,5514, + 8,238,1,239,1,239,1,239,1,240,1,240,1,240,1,240,3,240,5523,8,240, + 1,240,4,240,5526,8,240,11,240,12,240,5527,3,240,5530,8,240,1,241, + 1,241,1,241,1,241,1,241,1,241,1,241,1,241,3,241,5540,8,241,1,241, + 3,241,5543,8,241,1,241,1,241,1,241,3,241,5548,8,241,1,242,1,242, + 1,242,1,242,1,242,1,242,3,242,5556,8,242,1,242,3,242,5559,8,242, + 1,242,4,242,5562,8,242,11,242,12,242,5563,3,242,5566,8,242,3,242, + 5568,8,242,1,243,1,243,1,243,1,243,3,243,5574,8,243,1,244,1,244, + 1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245,1,246,1,246, + 1,246,1,246,3,246,5591,8,246,1,246,1,246,5,246,5595,8,246,10,246, + 12,246,5598,9,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, + 1,247,1,247,3,247,5610,8,247,1,247,1,247,1,247,1,247,3,247,5616, + 8,247,1,247,1,247,3,247,5620,8,247,1,247,1,247,1,247,3,247,5625, + 8,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,3,249,5655,8,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, + 1,249,3,249,5670,8,249,1,249,1,249,1,249,3,249,5675,8,249,1,250, + 1,250,3,250,5679,8,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250, + 1,250,1,250,1,251,1,251,3,251,5692,8,251,1,251,1,251,3,251,5696, + 8,251,3,251,5698,8,251,1,251,1,251,1,251,1,251,1,251,5,251,5705, + 8,251,10,251,12,251,5708,9,251,1,251,1,251,1,251,3,251,5713,8,251, + 3,251,5715,8,251,1,252,1,252,3,252,5719,8,252,1,252,3,252,5722,8, + 252,1,252,3,252,5725,8,252,1,252,3,252,5728,8,252,1,252,3,252,5731, + 8,252,3,252,5733,8,252,1,252,3,252,5736,8,252,1,253,1,253,3,253, + 5740,8,253,1,253,1,253,1,253,1,253,5,253,5746,8,253,10,253,12,253, + 5749,9,253,1,253,1,253,3,253,5753,8,253,1,253,3,253,5756,8,253,1, + 254,1,254,1,255,1,255,3,255,5762,8,255,1,255,1,255,3,255,5766,8, + 255,1,256,1,256,3,256,5770,8,256,1,256,1,256,1,256,3,256,5775,8, + 256,3,256,5777,8,256,1,257,1,257,3,257,5781,8,257,1,258,1,258,3, + 258,5785,8,258,1,259,1,259,1,259,5,259,5790,8,259,10,259,12,259, + 5793,9,259,1,260,1,260,1,260,3,260,5798,8,260,1,260,1,260,3,260, + 5802,8,260,3,260,5804,8,260,3,260,5806,8,260,1,260,1,260,1,261,1, + 261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,3,261,5819,8,261,1, + 262,1,262,1,262,1,262,5,262,5825,8,262,10,262,12,262,5828,9,262, + 1,262,1,262,1,263,1,263,1,263,3,263,5835,8,263,1,263,1,263,1,263, + 1,264,1,264,1,264,1,264,5,264,5844,8,264,10,264,12,264,5847,9,264, + 1,264,1,264,1,265,1,265,1,265,1,265,3,265,5855,8,265,1,266,1,266, + 1,266,3,266,5860,8,266,1,266,1,266,3,266,5864,8,266,1,266,1,266, + 3,266,5868,8,266,1,266,1,266,1,266,1,266,1,266,3,266,5875,8,266, + 1,266,3,266,5878,8,266,3,266,5880,8,266,1,267,1,267,1,267,1,267, + 1,268,1,268,3,268,5888,8,268,1,268,1,268,3,268,5892,8,268,1,269, + 3,269,5895,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5902,8,269, + 1,269,1,269,1,269,1,269,1,269,3,269,5909,8,269,1,269,1,269,1,269, + 3,269,5914,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5921,8,269, + 1,269,3,269,5924,8,269,3,269,5926,8,269,1,269,3,269,5929,8,269,1, + 270,1,270,1,270,1,270,3,270,5935,8,270,1,270,1,270,1,270,3,270,5940, + 8,270,1,270,1,270,3,270,5944,8,270,1,271,1,271,1,271,5,271,5949, + 8,271,10,271,12,271,5952,9,271,1,272,1,272,1,272,1,273,1,273,1,273, + 1,274,3,274,5961,8,274,1,274,1,274,1,274,1,274,1,274,3,274,5968, + 8,274,1,274,3,274,5971,8,274,1,274,3,274,5974,8,274,1,275,1,275, + 3,275,5978,8,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, + 1,275,3,275,5989,8,275,1,275,3,275,5992,8,275,1,275,3,275,5995,8, + 275,1,275,3,275,5998,8,275,1,276,3,276,6001,8,276,1,276,1,276,1, + 276,1,276,1,276,3,276,6008,8,276,1,276,3,276,6011,8,276,1,276,3, + 276,6014,8,276,1,277,1,277,1,277,5,277,6019,8,277,10,277,12,277, + 6022,9,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 3,278,6033,8,278,1,278,1,278,1,278,1,278,1,278,3,278,6040,8,278, + 3,278,6042,8,278,1,279,1,279,1,279,3,279,6047,8,279,1,279,1,279, + 1,279,5,279,6052,8,279,10,279,12,279,6055,9,279,1,279,1,279,1,279, + 3,279,6060,8,279,1,279,1,279,1,279,1,280,1,280,3,280,6067,8,280, + 1,281,1,281,1,281,3,281,6072,8,281,1,281,1,281,1,282,3,282,6077, + 8,282,1,282,1,282,3,282,6081,8,282,1,282,1,282,3,282,6085,8,282, + 1,282,1,282,3,282,6089,8,282,3,282,6091,8,282,1,283,1,283,3,283, + 6095,8,283,1,284,1,284,3,284,6099,8,284,1,284,3,284,6102,8,284,1, + 284,3,284,6105,8,284,3,284,6107,8,284,1,284,1,284,1,284,1,284,1, + 284,1,284,1,284,1,284,3,284,6117,8,284,3,284,6119,8,284,1,284,1, + 284,1,284,3,284,6124,8,284,5,284,6126,8,284,10,284,12,284,6129,9, + 284,1,285,1,285,3,285,6133,8,285,1,286,1,286,3,286,6137,8,286,1, + 286,1,286,1,286,5,286,6142,8,286,10,286,12,286,6145,9,286,1,287, + 1,287,3,287,6149,8,287,1,287,1,287,3,287,6153,8,287,1,287,3,287, + 6156,8,287,1,287,1,287,1,287,1,287,3,287,6162,8,287,1,287,3,287, + 6165,8,287,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,289, + 1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289,3,289,6184,8,289, + 1,289,1,289,1,289,1,290,1,290,3,290,6191,8,290,1,290,1,290,3,290, + 6195,8,290,1,291,3,291,6198,8,291,1,291,1,291,3,291,6202,8,291,1, + 291,1,291,3,291,6206,8,291,1,291,3,291,6209,8,291,1,291,3,291,6212, + 8,291,1,292,1,292,1,292,3,292,6217,8,292,1,293,1,293,1,293,1,293, + 1,293,5,293,6224,8,293,10,293,12,293,6227,9,293,1,294,1,294,1,294, + 1,294,3,294,6233,8,294,1,294,1,294,3,294,6237,8,294,1,295,1,295, + 3,295,6241,8,295,1,295,1,295,3,295,6245,8,295,1,295,3,295,6248,8, + 295,3,295,6250,8,295,1,296,1,296,1,296,3,296,6255,8,296,1,296,1, + 296,3,296,6259,8,296,1,297,1,297,1,297,3,297,6264,8,297,1,297,1, + 297,1,297,1,297,3,297,6270,8,297,1,298,1,298,1,298,1,298,1,298,3, + 298,6277,8,298,1,299,1,299,1,299,3,299,6282,8,299,1,300,1,300,1, + 300,3,300,6287,8,300,1,300,1,300,1,301,1,301,1,301,5,301,6294,8, + 301,10,301,12,301,6297,9,301,1,302,1,302,1,302,1,302,3,302,6303, + 8,302,1,302,1,302,1,302,1,302,5,302,6309,8,302,10,302,12,302,6312, + 9,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,3,302,6322, + 8,302,1,303,1,303,1,303,3,303,6327,8,303,1,303,1,303,3,303,6331, + 8,303,1,303,3,303,6334,8,303,1,303,1,303,3,303,6338,8,303,1,303, + 1,303,1,303,3,303,6343,8,303,4,303,6345,8,303,11,303,12,303,6346, + 1,303,1,303,1,303,3,303,6352,8,303,1,304,1,304,1,304,1,304,5,304, + 6358,8,304,10,304,12,304,6361,9,304,1,305,1,305,1,305,1,306,1,306, + 1,306,5,306,6369,8,306,10,306,12,306,6372,9,306,1,307,1,307,3,307, + 6376,8,307,1,307,1,307,3,307,6380,8,307,1,307,3,307,6383,8,307,1, + 307,3,307,6386,8,307,3,307,6388,8,307,1,307,3,307,6391,8,307,1,307, + 3,307,6394,8,307,1,307,3,307,6397,8,307,1,307,1,307,3,307,6401,8, + 307,1,307,1,307,3,307,6405,8,307,1,307,1,307,3,307,6409,8,307,3, + 307,6411,8,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,3,307,6420, + 8,307,1,307,1,307,1,307,3,307,6425,8,307,1,307,1,307,1,307,1,307, + 3,307,6431,8,307,1,307,1,307,3,307,6435,8,307,3,307,6437,8,307,1, + 307,1,307,1,307,1,307,1,307,3,307,6444,8,307,1,307,1,307,1,307,3, + 307,6449,8,307,1,307,1,307,1,307,1,307,5,307,6455,8,307,10,307,12, + 307,6458,9,307,1,308,3,308,6461,8,308,1,308,1,308,1,308,1,308,1, + 308,3,308,6468,8,308,1,309,1,309,1,309,3,309,6473,8,309,1,309,3, + 309,6476,8,309,1,309,1,309,1,309,1,309,3,309,6482,8,309,1,310,1, + 310,3,310,6486,8,310,1,311,1,311,1,311,1,311,3,311,6492,8,311,1, + 312,1,312,1,312,1,312,1,312,1,312,1,312,3,312,6501,8,312,1,312,1, + 312,1,312,1,312,3,312,6507,8,312,3,312,6509,8,312,1,313,1,313,1, + 313,3,313,6514,8,313,1,313,3,313,6517,8,313,1,313,1,313,1,313,1, + 313,1,313,1,313,1,313,3,313,6526,8,313,1,313,1,313,1,313,1,313,1, + 313,3,313,6533,8,313,3,313,6535,8,313,1,314,1,314,1,314,5,314,6540, + 8,314,10,314,12,314,6543,9,314,1,315,1,315,3,315,6547,8,315,1,315, + 3,315,6550,8,315,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316, + 3,316,6560,8,316,1,317,1,317,1,317,1,317,1,317,1,317,1,317,5,317, + 6569,8,317,10,317,12,317,6572,9,317,1,317,1,317,3,317,6576,8,317, + 1,317,1,317,3,317,6580,8,317,1,318,1,318,1,318,1,318,1,318,1,318, + 3,318,6588,8,318,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320, + 3,320,6598,8,320,1,321,1,321,1,321,5,321,6603,8,321,10,321,12,321, + 6606,9,321,1,322,1,322,1,322,3,322,6611,8,322,1,323,1,323,1,323, + 1,323,1,323,1,323,1,323,5,323,6620,8,323,10,323,12,323,6623,9,323, + 1,323,1,323,1,323,3,323,6628,8,323,1,323,1,323,1,323,1,323,1,323, + 1,323,5,323,6636,8,323,10,323,12,323,6639,9,323,1,323,1,323,1,324, + 1,324,1,324,1,324,3,324,6647,8,324,1,324,1,324,3,324,6651,8,324, + 1,324,4,324,6654,8,324,11,324,12,324,6655,3,324,6658,8,324,1,324, + 1,324,3,324,6662,8,324,1,325,1,325,1,325,1,325,1,325,1,325,3,325, + 6670,8,325,1,326,3,326,6673,8,326,1,326,1,326,1,326,3,326,6678,8, + 326,1,326,5,326,6681,8,326,10,326,12,326,6684,9,326,1,326,1,326, + 1,326,1,326,3,326,6690,8,326,3,326,6692,8,326,1,326,1,326,1,326, + 1,326,3,326,6698,8,326,1,327,1,327,3,327,6702,8,327,1,327,3,327, + 6705,8,327,1,327,1,327,1,327,3,327,6710,8,327,1,327,3,327,6713,8, + 327,3,327,6715,8,327,1,328,1,328,1,328,1,328,3,328,6721,8,328,1, + 329,1,329,1,329,1,329,1,329,1,329,1,329,3,329,6730,8,329,1,329,1, + 329,1,329,1,329,3,329,6736,8,329,1,329,3,329,6739,8,329,1,330,1, + 330,1,330,1,330,1,331,1,331,3,331,6747,8,331,1,331,3,331,6750,8, + 331,1,332,1,332,3,332,6754,8,332,1,332,1,332,1,332,1,332,3,332,6760, + 8,332,3,332,6762,8,332,1,332,3,332,6765,8,332,1,333,1,333,3,333, + 6769,8,333,1,333,1,333,1,333,3,333,6774,8,333,1,334,1,334,1,334, + 1,334,1,334,3,334,6781,8,334,1,334,1,334,1,334,1,334,1,334,3,334, + 6788,8,334,3,334,6790,8,334,1,334,1,334,1,334,1,334,3,334,6796,8, + 334,3,334,6798,8,334,1,334,1,334,1,334,3,334,6803,8,334,3,334,6805, + 8,334,1,335,1,335,3,335,6809,8,335,1,336,1,336,1,337,1,337,1,338, + 1,338,1,338,3,338,6818,8,338,1,338,1,338,3,338,6822,8,338,1,338, + 1,338,1,338,1,338,1,338,1,338,5,338,6830,8,338,10,338,12,338,6833, + 9,338,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339, + 1,339,3,339,6846,8,339,1,339,3,339,6849,8,339,1,339,1,339,1,339, + 1,339,1,339,1,339,3,339,6857,8,339,1,339,1,339,1,339,1,339,1,339, + 5,339,6864,8,339,10,339,12,339,6867,9,339,1,339,1,339,1,339,3,339, + 6872,8,339,1,339,1,339,1,339,3,339,6877,8,339,1,339,1,339,1,339, + 1,339,1,339,1,339,3,339,6885,8,339,3,339,6887,8,339,1,339,1,339, + 1,339,3,339,6892,8,339,1,339,1,339,3,339,6896,8,339,1,339,1,339, + 1,339,3,339,6901,8,339,1,339,1,339,1,339,3,339,6906,8,339,1,340, + 1,340,1,340,1,340,3,340,6912,8,340,1,340,1,340,1,340,1,340,1,340, + 1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,5,340,6928, + 8,340,10,340,12,340,6931,9,340,1,341,1,341,1,341,1,341,1,341,1,341, + 3,341,6939,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,3,341,6954,8,341,1,341,1,341,1,341, + 3,341,6959,8,341,1,341,3,341,6962,8,341,1,341,1,341,1,341,1,341, + 3,341,6968,8,341,1,341,1,341,1,341,3,341,6973,8,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,6986, + 8,341,1,341,4,341,6989,8,341,11,341,12,341,6990,1,341,1,341,3,341, + 6995,8,341,1,341,1,341,1,341,1,341,1,341,3,341,7002,8,341,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,3,341,7021,8,341,1,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,7033,8,341,1,341, + 1,341,1,341,3,341,7038,8,341,1,341,1,341,1,341,1,341,1,341,1,341, + 3,341,7046,8,341,5,341,7048,8,341,10,341,12,341,7051,9,341,1,342, + 1,342,1,342,1,342,1,342,1,342,3,342,7059,8,342,1,342,3,342,7062, + 8,342,1,342,1,342,1,342,3,342,7067,8,342,1,342,1,342,1,342,3,342, + 7072,8,342,1,342,1,342,3,342,7076,8,342,1,342,3,342,7079,8,342,1, + 343,1,343,1,343,1,343,1,343,1,343,1,343,3,343,7088,8,343,1,343,1, + 343,1,343,1,343,1,343,1,343,3,343,7096,8,343,1,343,1,343,1,343,3, + 343,7101,8,343,3,343,7103,8,343,1,343,3,343,7106,8,343,1,344,1,344, + 3,344,7110,8,344,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,3,345,7121,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,3,345,7142,8,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, + 7150,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,3,345,7163,8,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,3,345,7173,8,345,1,345,1,345,1,345,1,345,3,345,7179, + 8,345,1,345,1,345,1,345,1,345,3,345,7185,8,345,1,345,3,345,7188, + 8,345,1,345,3,345,7191,8,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7217,8,345,3,345, + 7219,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, + 7240,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, + 7250,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,3,345,7263,8,345,1,345,1,345,1,345,3,345,7268,8,345, + 1,345,1,345,3,345,7272,8,345,3,345,7274,8,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7286,8,345,1,346, + 1,346,1,346,5,346,7291,8,346,10,346,12,346,7294,9,346,1,347,1,347, + 1,347,3,347,7299,8,347,1,348,1,348,1,349,1,349,3,349,7305,8,349, + 1,349,1,349,3,349,7309,8,349,1,350,1,350,1,350,1,351,1,351,1,351, + 1,351,5,351,7318,8,351,10,351,12,351,7321,9,351,1,352,1,352,1,352, + 1,352,1,353,1,353,1,353,3,353,7330,8,353,1,354,1,354,3,354,7334, + 8,354,1,354,1,354,1,354,3,354,7339,8,354,1,354,3,354,7342,8,354, + 1,354,3,354,7345,8,354,1,354,1,354,1,355,1,355,1,355,1,355,1,355, + 3,355,7354,8,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355, + 1,355,3,355,7365,8,355,3,355,7367,8,355,1,356,1,356,3,356,7371,8, + 356,1,356,1,356,1,356,3,356,7376,8,356,1,357,1,357,1,357,1,357,1, + 357,1,357,1,357,3,357,7385,8,357,1,358,1,358,1,358,3,358,7390,8, + 358,1,358,1,358,1,359,1,359,1,360,1,360,3,360,7398,8,360,1,361,1, + 361,1,362,1,362,1,362,1,362,1,362,1,362,3,362,7408,8,362,1,363,1, + 363,1,363,1,363,1,363,1,363,3,363,7416,8,363,1,364,1,364,3,364,7420, + 8,364,1,364,3,364,7423,8,364,1,365,1,365,1,365,5,365,7428,8,365, + 10,365,12,365,7431,9,365,1,366,1,366,1,366,1,366,1,366,3,366,7438, + 8,366,1,367,1,367,3,367,7442,8,367,1,368,1,368,1,368,5,368,7447, + 8,368,10,368,12,368,7450,9,368,1,369,1,369,1,369,1,369,1,369,3,369, + 7457,8,369,1,370,1,370,1,370,1,370,1,370,5,370,7464,8,370,10,370, + 12,370,7467,9,370,3,370,7469,8,370,1,370,1,370,1,371,1,371,1,371, + 1,371,1,371,1,371,1,371,1,371,3,371,7481,8,371,1,372,1,372,1,373, + 1,373,1,373,1,373,1,373,3,373,7490,8,373,1,373,1,373,1,373,1,373, + 1,373,3,373,7497,8,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373, + 3,373,7506,8,373,1,374,1,374,1,374,1,374,1,374,1,375,1,375,1,375, + 3,375,7516,8,375,1,375,1,375,1,375,3,375,7521,8,375,1,375,1,375, + 3,375,7525,8,375,3,375,7527,8,375,1,375,3,375,7530,8,375,1,376,4, + 376,7533,8,376,11,376,12,376,7534,1,377,5,377,7538,8,377,10,377, + 12,377,7541,9,377,1,378,1,378,1,378,5,378,7546,8,378,10,378,12,378, + 7549,9,378,1,379,1,379,1,379,1,379,1,379,3,379,7556,8,379,1,379, + 3,379,7559,8,379,1,380,1,380,1,380,5,380,7564,8,380,10,380,12,380, + 7567,9,380,1,381,1,381,1,381,5,381,7572,8,381,10,381,12,381,7575, + 9,381,1,382,1,382,1,382,5,382,7580,8,382,10,382,12,382,7583,9,382, + 1,383,1,383,1,383,5,383,7588,8,383,10,383,12,383,7591,9,383,1,384, + 1,384,1,385,1,385,1,386,1,386,1,387,1,387,1,388,1,388,1,389,1,389, + 1,390,1,390,3,390,7607,8,390,1,391,1,391,1,391,5,391,7612,8,391, + 10,391,12,391,7615,9,391,1,392,1,392,1,392,5,392,7620,8,392,10,392, + 12,392,7623,9,392,1,393,1,393,1,394,1,394,1,395,1,395,1,396,1,396, + 1,397,1,397,1,398,1,398,1,398,1,398,3,398,7639,8,398,1,399,1,399, + 1,399,1,399,3,399,7645,8,399,1,400,1,400,1,400,1,400,3,400,7651, + 8,400,1,401,1,401,1,402,1,402,1,402,1,402,3,402,7659,8,402,1,403, + 1,403,1,403,1,403,3,403,7665,8,403,1,404,1,404,1,404,3,404,7670, + 8,404,1,405,1,405,1,405,1,405,5,405,7676,8,405,10,405,12,405,7679, + 9,405,1,405,1,405,3,405,7683,8,405,1,406,3,406,7686,8,406,1,406, + 1,406,1,407,1,407,1,407,1,407,1,407,3,407,7695,8,407,1,408,1,408, + 1,408,5,408,7700,8,408,10,408,12,408,7703,9,408,1,409,1,409,1,409, + 1,409,3,409,7709,8,409,1,410,1,410,1,410,1,410,3,410,7715,8,410, + 1,411,1,411,1,411,1,411,3,411,7721,8,411,1,412,1,412,1,412,3,412, + 7726,8,412,1,413,1,413,1,413,3,413,7731,8,413,1,413,1,413,1,413, + 1,413,1,413,1,413,3,413,7739,8,413,1,414,1,414,1,415,1,415,1,415, + 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, + 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, + 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, + 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, + 1,415,1,415,1,415,1,415,3,415,7794,8,415,1,416,1,416,1,417,1,417, + 1,418,3,418,7801,8,418,1,418,1,418,1,418,1,418,4,418,7807,8,418, + 11,418,12,418,7808,3,418,7811,8,418,3,418,7813,8,418,1,418,1,418, + 5,418,7817,8,418,10,418,12,418,7820,9,418,1,418,3,418,7823,8,418, + 1,418,1,418,3,418,7827,8,418,1,419,1,419,1,419,1,419,1,420,1,420, + 1,420,1,420,1,420,3,420,7838,8,420,1,420,3,420,7841,8,420,1,420, + 1,420,3,420,7845,8,420,1,420,1,420,3,420,7849,8,420,1,420,1,420, + 3,420,7853,8,420,1,420,3,420,7856,8,420,1,420,3,420,7859,8,420,1, + 420,3,420,7862,8,420,1,420,1,420,1,420,1,420,1,420,5,420,7869,8, + 420,10,420,12,420,7872,9,420,1,420,1,420,3,420,7876,8,420,1,420, + 1,420,3,420,7880,8,420,1,420,1,420,1,421,1,421,1,421,1,422,1,422, + 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, + 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, + 1,423,1,423,3,423,7913,8,423,1,424,1,424,1,424,1,424,1,425,1,425, + 1,425,1,425,3,425,7923,8,425,1,425,1,425,3,425,7927,8,425,1,425, + 1,425,1,425,1,425,3,425,7933,8,425,1,425,1,425,1,425,3,425,7938, + 8,425,1,426,1,426,1,426,1,426,1,426,1,427,1,427,3,427,7947,8,427, + 1,427,1,427,1,427,1,427,5,427,7953,8,427,10,427,12,427,7956,9,427, + 1,427,1,427,1,428,1,428,1,428,1,428,1,429,1,429,3,429,7966,8,429, + 1,429,1,429,1,429,1,429,5,429,7972,8,429,10,429,12,429,7975,9,429, + 1,430,1,430,1,430,1,430,5,430,7981,8,430,10,430,12,430,7984,9,430, + 1,430,1,430,1,430,1,430,5,430,7990,8,430,10,430,12,430,7993,9,430, + 5,430,7995,8,430,10,430,12,430,7998,9,430,1,430,3,430,8001,8,430, + 1,430,1,430,1,430,1,430,1,431,1,431,5,431,8009,8,431,10,431,12,431, + 8012,9,431,1,432,1,432,3,432,8016,8,432,1,432,1,432,1,432,1,432, + 5,432,8022,8,432,10,432,12,432,8025,9,432,4,432,8027,8,432,11,432, + 12,432,8028,1,432,3,432,8032,8,432,1,432,1,432,1,432,1,432,1,433, + 3,433,8039,8,433,1,433,1,433,1,433,1,433,3,433,8045,8,433,1,433, + 1,433,1,434,1,434,1,434,1,434,3,434,8053,8,434,1,434,1,434,1,434, + 1,434,1,434,1,434,3,434,8061,8,434,1,434,3,434,8064,8,434,1,434, + 1,434,1,434,1,434,1,434,3,434,8071,8,434,3,434,8073,8,434,1,435, + 3,435,8076,8,435,1,435,1,435,1,435,1,435,3,435,8082,8,435,1,435, + 1,435,1,435,1,435,1,435,1,436,1,436,3,436,8091,8,436,1,436,1,436, + 3,436,8095,8,436,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437, + 1,437,1,437,1,437,1,437,3,437,8109,8,437,1,437,3,437,8112,8,437, + 3,437,8114,8,437,1,437,1,437,1,438,1,438,3,438,8120,8,438,1,438, + 1,438,1,438,1,438,1,438,1,438,4,438,8128,8,438,11,438,12,438,8129, + 3,438,8132,8,438,3,438,8134,8,438,1,438,1,438,1,438,1,438,5,438, + 8140,8,438,10,438,12,438,8143,9,438,3,438,8145,8,438,1,438,3,438, + 8148,8,438,1,439,1,439,1,439,1,439,1,440,1,440,1,440,1,440,3,440, + 8158,8,440,1,440,1,440,1,441,1,441,5,441,8164,8,441,10,441,12,441, + 8167,9,441,1,441,1,441,1,441,3,441,8172,8,441,1,441,1,441,1,442, + 1,442,3,442,8178,8,442,1,442,1,442,1,443,1,443,1,443,3,443,8185, + 8,443,1,443,1,443,3,443,8189,8,443,1,443,1,443,3,443,8193,8,443, + 1,443,3,443,8196,8,443,1,443,3,443,8199,8,443,1,443,1,443,1,444, + 1,444,3,444,8205,8,444,1,444,1,444,1,445,1,445,1,445,3,445,8212, + 8,445,1,445,3,445,8215,8,445,1,445,1,445,1,445,1,445,1,445,1,445, + 3,445,8223,8,445,3,445,8225,8,445,1,445,1,445,1,445,1,445,1,445, + 5,445,8232,8,445,10,445,12,445,8235,9,445,1,445,1,445,3,445,8239, + 8,445,3,445,8241,8,445,1,445,1,445,1,446,1,446,1,446,3,446,8248, + 8,446,1,446,1,446,1,447,1,447,3,447,8254,8,447,1,447,3,447,8257, + 8,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448, + 3,448,8269,8,448,1,448,1,448,1,448,1,448,1,448,3,448,8276,8,448, + 3,448,8278,8,448,1,449,1,449,3,449,8282,8,449,1,449,1,449,1,449, + 1,450,3,450,8288,8,450,1,450,1,450,1,450,3,450,8293,8,450,1,450, + 1,450,3,450,8297,8,450,1,450,3,450,8300,8,450,1,450,3,450,8303,8, + 450,1,450,1,450,1,450,1,450,1,450,4,450,8310,8,450,11,450,12,450, + 8311,1,451,3,451,8315,8,451,1,451,1,451,3,451,8319,8,451,1,451,1, + 451,3,451,8323,8,451,3,451,8325,8,451,1,451,3,451,8328,8,451,1,451, + 3,451,8331,8,451,1,452,1,452,1,452,1,452,3,452,8337,8,452,1,452, + 1,452,1,452,1,452,1,452,3,452,8344,8,452,1,452,1,452,1,452,1,452, + 1,452,3,452,8351,8,452,1,452,1,452,1,452,1,452,3,452,8357,8,452, + 3,452,8359,8,452,1,453,1,453,3,453,8363,8,453,1,453,1,453,1,453, + 3,453,8368,8,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,454, + 1,454,1,454,1,454,1,454,1,454,1,454,5,454,8384,8,454,10,454,12,454, + 8387,9,454,1,454,1,454,4,454,8391,8,454,11,454,12,454,8392,1,455, + 1,455,1,455,1,455,1,455,5,455,8400,8,455,10,455,12,455,8403,9,455, + 1,455,1,455,1,455,1,455,3,455,8409,8,455,1,456,1,456,3,456,8413, + 8,456,1,457,1,457,1,457,1,457,1,458,1,458,1,458,1,459,1,459,1,459, + 3,459,8425,8,459,1,459,3,459,8428,8,459,1,459,1,459,1,460,1,460, + 1,460,1,460,1,460,1,460,1,460,1,460,1,460,3,460,8441,8,460,1,460, + 3,460,8444,8,460,1,461,1,461,3,461,8448,8,461,1,462,1,462,1,462, + 1,462,1,462,5,462,8455,8,462,10,462,12,462,8458,9,462,1,462,1,462, + 5,462,8462,8,462,10,462,12,462,8465,9,462,4,462,8467,8,462,11,462, + 12,462,8468,1,463,1,463,1,463,3,463,8474,8,463,1,464,1,464,3,464, + 8478,8,464,1,465,1,465,1,466,3,466,8483,8,466,1,466,3,466,8486,8, + 466,1,466,3,466,8489,8,466,1,466,3,466,8492,8,466,1,466,3,466,8495, + 8,466,1,466,1,466,3,466,8499,8,466,1,466,3,466,8502,8,466,1,466, + 0,3,676,680,682,467,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32, + 34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76, + 78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114, + 116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146, + 148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178, + 180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210, + 212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242, + 244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274, + 276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306, + 308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338, + 340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370, + 372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402, + 404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434, + 436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466, + 468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498, + 500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530, + 532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562, + 564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594, + 596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626, + 628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658, + 660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690, + 692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722, + 724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754, + 756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786, + 788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818, + 820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850, + 852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882, + 884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914, + 916,918,920,922,924,926,928,930,932,0,119,2,0,195,195,364,364,2, + 0,66,66,318,318,2,0,99,99,318,318,2,0,134,134,318,318,1,0,529,531, + 2,0,10,10,94,94,2,0,133,133,191,191,2,0,254,254,332,332,2,0,162, + 162,363,363,2,0,180,180,221,221,5,0,30,30,288,288,329,329,352,352, + 354,354,2,0,109,109,532,532,2,0,158,158,277,277,2,0,367,367,439, + 439,2,0,139,139,312,312,2,0,191,191,333,333,2,0,313,313,333,333, + 2,0,150,150,315,315,2,0,64,64,94,94,4,0,78,78,183,183,197,197,298, + 298,2,0,213,213,254,254,2,0,352,352,354,354,2,0,200,200,224,224, + 9,0,30,30,160,160,165,165,179,179,219,219,227,227,342,342,345,345, + 438,438,3,0,113,113,284,284,336,336,2,0,53,53,78,78,2,0,105,105, + 379,379,2,0,260,260,262,262,3,0,173,173,260,260,262,262,1,0,12,13, + 2,0,64,64,375,375,2,0,156,156,206,206,2,0,189,189,360,360,2,0,215, + 215,373,373,3,0,133,133,191,191,333,333,5,0,30,30,88,88,182,182, + 241,241,369,369,2,0,9,9,94,94,2,0,92,92,226,226,1,0,448,449,2,0, + 92,92,414,414,2,0,341,341,414,414,4,0,163,163,185,185,283,283,353, + 353,2,0,135,135,145,145,2,0,211,211,278,278,3,0,321,321,357,357, + 445,445,3,0,66,66,99,99,318,318,5,0,108,108,168,168,226,226,328, + 328,342,342,2,0,167,167,314,314,2,0,61,61,265,265,4,0,207,207,249, + 249,268,268,293,293,2,0,130,130,307,307,2,0,64,64,68,68,10,0,46, + 46,88,88,182,182,202,202,241,241,352,352,354,354,357,358,369,369, + 521,523,5,0,212,212,329,329,350,350,455,455,457,457,5,0,212,212, + 329,329,350,350,361,361,455,456,2,0,37,37,55,55,2,0,207,207,249, + 249,2,0,10,10,53,53,2,0,181,181,243,243,2,0,170,170,320,320,2,0, + 141,141,223,223,5,0,108,108,168,168,189,189,342,342,360,360,2,0, + 226,226,328,328,2,0,163,163,185,185,2,0,186,186,193,193,4,0,88,88, + 182,182,241,241,369,369,2,0,137,137,242,242,2,0,161,161,319,319, + 4,0,129,129,161,161,319,319,454,454,2,0,356,356,380,380,2,0,81,81, + 382,382,2,0,151,151,254,254,2,0,133,133,138,138,1,0,31,32,2,0,128, + 128,547,547,2,0,60,60,96,96,2,0,99,99,349,349,2,0,131,131,414,414, + 2,0,201,201,334,334,3,0,59,59,70,70,97,97,2,0,30,30,56,56,1,0,527, + 528,2,0,207,207,268,268,2,0,320,320,414,414,2,0,571,571,573,573, + 1,0,468,469,4,0,113,113,115,115,119,119,126,126,2,0,360,360,477, + 477,2,0,394,395,409,409,2,0,391,392,406,406,1,0,391,392,1,0,418, + 419,5,0,10,10,16,17,21,21,23,23,25,25,3,0,9,9,14,14,27,27,2,0,98, + 98,396,396,2,0,50,51,75,76,2,0,41,41,420,420,3,0,39,39,73,73,95, + 95,4,0,393,393,399,399,404,404,425,425,2,0,292,292,347,347,2,0,166, + 166,188,188,2,0,304,304,450,450,3,0,299,299,320,320,481,481,2,0, + 208,208,289,289,3,0,30,30,34,34,90,90,6,0,9,10,12,17,21,21,23,23, + 25,25,27,27,2,0,114,114,120,120,2,0,20,20,22,22,1,0,483,486,10,0, + 124,124,129,228,238,386,433,452,455,469,471,471,473,473,475,475, + 478,488,547,548,3,0,106,123,125,128,472,472,4,0,30,52,54,70,72,105, + 454,454,2,0,62,62,116,116,2,0,10,10,20,20,2,0,434,434,501,501,2, + 0,167,167,507,507,1,0,512,517,2,0,144,144,210,210,36,0,33,33,35, + 35,43,43,45,45,53,53,57,57,61,61,116,116,123,123,130,130,144,144, + 153,153,157,157,161,161,167,167,172,172,207,207,210,210,241,241, + 249,249,265,265,268,269,279,279,293,293,307,307,313,313,319,319, + 323,324,333,333,360,360,433,434,477,477,490,502,504,504,506,518, + 520,520,9941,0,937,1,0,0,0,2,942,1,0,0,0,4,1066,1,0,0,0,6,1068,1, + 0,0,0,8,1071,1,0,0,0,10,1121,1,0,0,0,12,1131,1,0,0,0,14,1133,1,0, + 0,0,16,1145,1,0,0,0,18,1157,1,0,0,0,20,1168,1,0,0,0,22,1202,1,0, + 0,0,24,1246,1,0,0,0,26,1248,1,0,0,0,28,1260,1,0,0,0,30,1267,1,0, + 0,0,32,1286,1,0,0,0,34,1294,1,0,0,0,36,1296,1,0,0,0,38,1310,1,0, + 0,0,40,1314,1,0,0,0,42,1351,1,0,0,0,44,1353,1,0,0,0,46,1361,1,0, + 0,0,48,1371,1,0,0,0,50,1378,1,0,0,0,52,1386,1,0,0,0,54,1392,1,0, + 0,0,56,1408,1,0,0,0,58,1412,1,0,0,0,60,1414,1,0,0,0,62,1426,1,0, + 0,0,64,1431,1,0,0,0,66,1436,1,0,0,0,68,1438,1,0,0,0,70,1450,1,0, + 0,0,72,1458,1,0,0,0,74,1460,1,0,0,0,76,1584,1,0,0,0,78,1586,1,0, + 0,0,80,1603,1,0,0,0,82,1605,1,0,0,0,84,1619,1,0,0,0,86,1621,1,0, + 0,0,88,1635,1,0,0,0,90,1637,1,0,0,0,92,1874,1,0,0,0,94,1881,1,0, + 0,0,96,1883,1,0,0,0,98,1885,1,0,0,0,100,1888,1,0,0,0,102,1899,1, + 0,0,0,104,1902,1,0,0,0,106,1938,1,0,0,0,108,1940,1,0,0,0,110,1981, + 1,0,0,0,112,1983,1,0,0,0,114,2037,1,0,0,0,116,2078,1,0,0,0,118,2080, + 1,0,0,0,120,2097,1,0,0,0,122,2178,1,0,0,0,124,2180,1,0,0,0,126,2191, + 1,0,0,0,128,2214,1,0,0,0,130,2232,1,0,0,0,132,2234,1,0,0,0,134,2269, + 1,0,0,0,136,2362,1,0,0,0,138,2367,1,0,0,0,140,2369,1,0,0,0,142,2467, + 1,0,0,0,144,2469,1,0,0,0,146,2473,1,0,0,0,148,2484,1,0,0,0,150,2492, + 1,0,0,0,152,2495,1,0,0,0,154,2498,1,0,0,0,156,2516,1,0,0,0,158,2518, + 1,0,0,0,160,2522,1,0,0,0,162,2535,1,0,0,0,164,2537,1,0,0,0,166,2542, + 1,0,0,0,168,2562,1,0,0,0,170,2570,1,0,0,0,172,2577,1,0,0,0,174,2579, + 1,0,0,0,176,2588,1,0,0,0,178,2591,1,0,0,0,180,2595,1,0,0,0,182,2599, + 1,0,0,0,184,2624,1,0,0,0,186,2634,1,0,0,0,188,2648,1,0,0,0,190,2664, + 1,0,0,0,192,2670,1,0,0,0,194,2697,1,0,0,0,196,2707,1,0,0,0,198,2723, + 1,0,0,0,200,2767,1,0,0,0,202,2774,1,0,0,0,204,2776,1,0,0,0,206,2802, + 1,0,0,0,208,2813,1,0,0,0,210,2832,1,0,0,0,212,2843,1,0,0,0,214,2881, + 1,0,0,0,216,2902,1,0,0,0,218,2904,1,0,0,0,220,2924,1,0,0,0,222,2936, + 1,0,0,0,224,2948,1,0,0,0,226,2951,1,0,0,0,228,2954,1,0,0,0,230,2974, + 1,0,0,0,232,2979,1,0,0,0,234,3028,1,0,0,0,236,3030,1,0,0,0,238,3053, + 1,0,0,0,240,3069,1,0,0,0,242,3081,1,0,0,0,244,3108,1,0,0,0,246,3123, + 1,0,0,0,248,3186,1,0,0,0,250,3188,1,0,0,0,252,3193,1,0,0,0,254,3199, + 1,0,0,0,256,3286,1,0,0,0,258,3292,1,0,0,0,260,3294,1,0,0,0,262,3310, + 1,0,0,0,264,3312,1,0,0,0,266,3321,1,0,0,0,268,3325,1,0,0,0,270,3338, + 1,0,0,0,272,3350,1,0,0,0,274,3352,1,0,0,0,276,3374,1,0,0,0,278,3386, + 1,0,0,0,280,3397,1,0,0,0,282,3488,1,0,0,0,284,3490,1,0,0,0,286,3501, + 1,0,0,0,288,3512,1,0,0,0,290,3514,1,0,0,0,292,3540,1,0,0,0,294,3542, + 1,0,0,0,296,3546,1,0,0,0,298,3596,1,0,0,0,300,3598,1,0,0,0,302,3604, + 1,0,0,0,304,3629,1,0,0,0,306,3633,1,0,0,0,308,3847,1,0,0,0,310,3865, + 1,0,0,0,312,3891,1,0,0,0,314,3893,1,0,0,0,316,3901,1,0,0,0,318,3907, + 1,0,0,0,320,3911,1,0,0,0,322,3931,1,0,0,0,324,3937,1,0,0,0,326,4004, + 1,0,0,0,328,4035,1,0,0,0,330,4081,1,0,0,0,332,4083,1,0,0,0,334,4085, + 1,0,0,0,336,4096,1,0,0,0,338,4133,1,0,0,0,340,4135,1,0,0,0,342,4141, + 1,0,0,0,344,4191,1,0,0,0,346,4194,1,0,0,0,348,4208,1,0,0,0,350,4229, + 1,0,0,0,352,4253,1,0,0,0,354,4294,1,0,0,0,356,4296,1,0,0,0,358,4298, + 1,0,0,0,360,4338,1,0,0,0,362,4355,1,0,0,0,364,4375,1,0,0,0,366,4428, + 1,0,0,0,368,4431,1,0,0,0,370,4437,1,0,0,0,372,4445,1,0,0,0,374,4458, + 1,0,0,0,376,4460,1,0,0,0,378,4473,1,0,0,0,380,4475,1,0,0,0,382,4488, + 1,0,0,0,384,4498,1,0,0,0,386,4509,1,0,0,0,388,4520,1,0,0,0,390,4522, + 1,0,0,0,392,4527,1,0,0,0,394,4541,1,0,0,0,396,4573,1,0,0,0,398,4610, + 1,0,0,0,400,4612,1,0,0,0,402,4615,1,0,0,0,404,4618,1,0,0,0,406,4635, + 1,0,0,0,408,4656,1,0,0,0,410,4672,1,0,0,0,412,4688,1,0,0,0,414,4710, + 1,0,0,0,416,4715,1,0,0,0,418,4718,1,0,0,0,420,4726,1,0,0,0,422,4751, + 1,0,0,0,424,4754,1,0,0,0,426,4782,1,0,0,0,428,4787,1,0,0,0,430,4827, + 1,0,0,0,432,5039,1,0,0,0,434,5041,1,0,0,0,436,5129,1,0,0,0,438,5131, + 1,0,0,0,440,5137,1,0,0,0,442,5148,1,0,0,0,444,5158,1,0,0,0,446,5238, + 1,0,0,0,448,5240,1,0,0,0,450,5254,1,0,0,0,452,5276,1,0,0,0,454,5349, + 1,0,0,0,456,5351,1,0,0,0,458,5392,1,0,0,0,460,5394,1,0,0,0,462,5399, + 1,0,0,0,464,5402,1,0,0,0,466,5405,1,0,0,0,468,5455,1,0,0,0,470,5457, + 1,0,0,0,472,5468,1,0,0,0,474,5470,1,0,0,0,476,5480,1,0,0,0,478,5515, + 1,0,0,0,480,5518,1,0,0,0,482,5539,1,0,0,0,484,5549,1,0,0,0,486,5569, + 1,0,0,0,488,5575,1,0,0,0,490,5581,1,0,0,0,492,5586,1,0,0,0,494,5599, + 1,0,0,0,496,5626,1,0,0,0,498,5674,1,0,0,0,500,5676,1,0,0,0,502,5714, + 1,0,0,0,504,5716,1,0,0,0,506,5737,1,0,0,0,508,5757,1,0,0,0,510,5761, + 1,0,0,0,512,5776,1,0,0,0,514,5778,1,0,0,0,516,5782,1,0,0,0,518,5786, + 1,0,0,0,520,5794,1,0,0,0,522,5818,1,0,0,0,524,5820,1,0,0,0,526,5831, + 1,0,0,0,528,5839,1,0,0,0,530,5854,1,0,0,0,532,5879,1,0,0,0,534,5881, + 1,0,0,0,536,5885,1,0,0,0,538,5894,1,0,0,0,540,5934,1,0,0,0,542,5945, + 1,0,0,0,544,5953,1,0,0,0,546,5956,1,0,0,0,548,5960,1,0,0,0,550,5975, + 1,0,0,0,552,6000,1,0,0,0,554,6015,1,0,0,0,556,6041,1,0,0,0,558,6043, + 1,0,0,0,560,6066,1,0,0,0,562,6068,1,0,0,0,564,6076,1,0,0,0,566,6094, + 1,0,0,0,568,6118,1,0,0,0,570,6130,1,0,0,0,572,6134,1,0,0,0,574,6146, + 1,0,0,0,576,6166,1,0,0,0,578,6174,1,0,0,0,580,6188,1,0,0,0,582,6211, + 1,0,0,0,584,6213,1,0,0,0,586,6218,1,0,0,0,588,6228,1,0,0,0,590,6249, + 1,0,0,0,592,6251,1,0,0,0,594,6260,1,0,0,0,596,6271,1,0,0,0,598,6281, + 1,0,0,0,600,6283,1,0,0,0,602,6290,1,0,0,0,604,6321,1,0,0,0,606,6351, + 1,0,0,0,608,6353,1,0,0,0,610,6362,1,0,0,0,612,6365,1,0,0,0,614,6436, + 1,0,0,0,616,6460,1,0,0,0,618,6481,1,0,0,0,620,6483,1,0,0,0,622,6491, + 1,0,0,0,624,6508,1,0,0,0,626,6534,1,0,0,0,628,6536,1,0,0,0,630,6544, + 1,0,0,0,632,6551,1,0,0,0,634,6575,1,0,0,0,636,6581,1,0,0,0,638,6589, + 1,0,0,0,640,6592,1,0,0,0,642,6599,1,0,0,0,644,6607,1,0,0,0,646,6612, + 1,0,0,0,648,6642,1,0,0,0,650,6669,1,0,0,0,652,6697,1,0,0,0,654,6714, + 1,0,0,0,656,6720,1,0,0,0,658,6738,1,0,0,0,660,6740,1,0,0,0,662,6744, + 1,0,0,0,664,6761,1,0,0,0,666,6766,1,0,0,0,668,6804,1,0,0,0,670,6806, + 1,0,0,0,672,6810,1,0,0,0,674,6812,1,0,0,0,676,6821,1,0,0,0,678,6905, + 1,0,0,0,680,6911,1,0,0,0,682,7020,1,0,0,0,684,7052,1,0,0,0,686,7105, + 1,0,0,0,688,7109,1,0,0,0,690,7285,1,0,0,0,692,7287,1,0,0,0,694,7295, + 1,0,0,0,696,7300,1,0,0,0,698,7302,1,0,0,0,700,7310,1,0,0,0,702,7313, + 1,0,0,0,704,7322,1,0,0,0,706,7326,1,0,0,0,708,7331,1,0,0,0,710,7348, + 1,0,0,0,712,7375,1,0,0,0,714,7384,1,0,0,0,716,7386,1,0,0,0,718,7393, + 1,0,0,0,720,7397,1,0,0,0,722,7399,1,0,0,0,724,7407,1,0,0,0,726,7415, + 1,0,0,0,728,7422,1,0,0,0,730,7424,1,0,0,0,732,7437,1,0,0,0,734,7441, + 1,0,0,0,736,7443,1,0,0,0,738,7456,1,0,0,0,740,7458,1,0,0,0,742,7480, + 1,0,0,0,744,7482,1,0,0,0,746,7505,1,0,0,0,748,7507,1,0,0,0,750,7529, + 1,0,0,0,752,7532,1,0,0,0,754,7539,1,0,0,0,756,7542,1,0,0,0,758,7558, + 1,0,0,0,760,7560,1,0,0,0,762,7568,1,0,0,0,764,7576,1,0,0,0,766,7584, + 1,0,0,0,768,7592,1,0,0,0,770,7594,1,0,0,0,772,7596,1,0,0,0,774,7598, + 1,0,0,0,776,7600,1,0,0,0,778,7602,1,0,0,0,780,7604,1,0,0,0,782,7608, + 1,0,0,0,784,7616,1,0,0,0,786,7624,1,0,0,0,788,7626,1,0,0,0,790,7628, + 1,0,0,0,792,7630,1,0,0,0,794,7632,1,0,0,0,796,7638,1,0,0,0,798,7644, + 1,0,0,0,800,7650,1,0,0,0,802,7652,1,0,0,0,804,7658,1,0,0,0,806,7664, + 1,0,0,0,808,7666,1,0,0,0,810,7682,1,0,0,0,812,7685,1,0,0,0,814,7694, + 1,0,0,0,816,7696,1,0,0,0,818,7708,1,0,0,0,820,7714,1,0,0,0,822,7720, + 1,0,0,0,824,7725,1,0,0,0,826,7738,1,0,0,0,828,7740,1,0,0,0,830,7793, + 1,0,0,0,832,7795,1,0,0,0,834,7797,1,0,0,0,836,7800,1,0,0,0,838,7828, + 1,0,0,0,840,7832,1,0,0,0,842,7883,1,0,0,0,844,7886,1,0,0,0,846,7912, + 1,0,0,0,848,7914,1,0,0,0,850,7937,1,0,0,0,852,7939,1,0,0,0,854,7944, + 1,0,0,0,856,7959,1,0,0,0,858,7965,1,0,0,0,860,7976,1,0,0,0,862,8006, + 1,0,0,0,864,8013,1,0,0,0,866,8038,1,0,0,0,868,8048,1,0,0,0,870,8075, + 1,0,0,0,872,8088,1,0,0,0,874,8098,1,0,0,0,876,8117,1,0,0,0,878,8149, + 1,0,0,0,880,8153,1,0,0,0,882,8161,1,0,0,0,884,8175,1,0,0,0,886,8181, + 1,0,0,0,888,8202,1,0,0,0,890,8208,1,0,0,0,892,8247,1,0,0,0,894,8251, + 1,0,0,0,896,8277,1,0,0,0,898,8279,1,0,0,0,900,8287,1,0,0,0,902,8324, + 1,0,0,0,904,8358,1,0,0,0,906,8360,1,0,0,0,908,8371,1,0,0,0,910,8408, + 1,0,0,0,912,8412,1,0,0,0,914,8414,1,0,0,0,916,8418,1,0,0,0,918,8421, + 1,0,0,0,920,8443,1,0,0,0,922,8447,1,0,0,0,924,8449,1,0,0,0,926,8473, + 1,0,0,0,928,8477,1,0,0,0,930,8479,1,0,0,0,932,8482,1,0,0,0,934,936, + 3,2,1,0,935,934,1,0,0,0,936,939,1,0,0,0,937,935,1,0,0,0,937,938, + 1,0,0,0,938,940,1,0,0,0,939,937,1,0,0,0,940,941,5,0,0,1,941,1,1, + 0,0,0,942,944,3,4,2,0,943,945,5,7,0,0,944,943,1,0,0,0,944,945,1, + 0,0,0,945,3,1,0,0,0,946,1067,3,278,139,0,947,1067,3,488,244,0,948, + 1067,3,484,242,0,949,1067,3,486,243,0,950,1067,3,352,176,0,951,1067, + 3,494,247,0,952,1067,3,292,146,0,953,1067,3,210,105,0,954,1067,3, + 212,106,0,955,1067,3,218,109,0,956,1067,3,232,116,0,957,1067,3,404, + 202,0,958,1067,3,28,14,0,959,1067,3,434,217,0,960,1067,3,436,218, + 0,961,1067,3,446,223,0,962,1067,3,438,219,0,963,1067,3,444,222,0, + 964,1067,3,244,122,0,965,1067,3,246,123,0,966,1067,3,198,99,0,967, + 1067,3,490,245,0,968,1067,3,76,38,0,969,1067,3,430,215,0,970,1067, + 3,108,54,0,971,1067,3,450,225,0,972,1067,3,18,9,0,973,1067,3,20, + 10,0,974,1067,3,16,8,0,975,1067,3,454,227,0,976,1067,3,184,92,0, + 977,1067,3,498,249,0,978,1067,3,496,248,0,979,1067,3,240,120,0,980, + 1067,3,506,253,0,981,1067,3,6,3,0,982,1067,3,72,36,0,983,1067,3, + 112,56,0,984,1067,3,502,251,0,985,1067,3,324,162,0,986,1067,3,70, + 35,0,987,1067,3,114,57,0,988,1067,3,254,127,0,989,1067,3,186,93, + 0,990,1067,3,280,140,0,991,1067,3,420,210,0,992,1067,3,500,250,0, + 993,1067,3,492,246,0,994,1067,3,208,104,0,995,1067,3,214,107,0,996, + 1067,3,228,114,0,997,1067,3,234,117,0,998,1067,3,364,182,0,999,1067, + 3,26,13,0,1000,1067,3,192,96,0,1001,1067,3,296,148,0,1002,1067,3, + 300,150,0,1003,1067,3,448,224,0,1004,1067,3,302,151,0,1005,1067, + 3,242,121,0,1006,1067,3,204,102,0,1007,1067,3,30,15,0,1008,1067, + 3,196,98,0,1009,1067,3,120,60,0,1010,1067,3,452,226,0,1011,1067, + 3,182,91,0,1012,1067,3,206,103,0,1013,1067,3,424,212,0,1014,1067, + 3,256,128,0,1015,1067,3,274,137,0,1016,1067,3,8,4,0,1017,1067,3, + 14,7,0,1018,1067,3,238,119,0,1019,1067,3,480,240,0,1020,1067,3,536, + 268,0,1021,1067,3,558,279,0,1022,1067,3,282,141,0,1023,1067,3,548, + 274,0,1024,1067,3,74,37,0,1025,1067,3,418,209,0,1026,1067,3,308, + 154,0,1027,1067,3,532,266,0,1028,1067,3,520,260,0,1029,1067,3,328, + 164,0,1030,1067,3,334,167,0,1031,1067,3,348,174,0,1032,1067,3,900, + 450,0,1033,1067,3,236,118,0,1034,1067,3,358,179,0,1035,1067,3,538, + 269,0,1036,1067,3,464,232,0,1037,1067,3,194,97,0,1038,1067,3,478, + 239,0,1039,1067,3,550,275,0,1040,1067,3,460,230,0,1041,1067,3,526, + 263,0,1042,1067,3,306,153,0,1043,1067,3,428,214,0,1044,1067,3,408, + 204,0,1045,1067,3,406,203,0,1046,1067,3,410,205,0,1047,1067,3,432, + 216,0,1048,1067,3,336,168,0,1049,1067,3,350,175,0,1050,1067,3,456, + 228,0,1051,1067,3,326,163,0,1052,1067,3,560,280,0,1053,1067,3,468, + 234,0,1054,1067,3,320,160,0,1055,1067,3,466,233,0,1056,1067,3,552, + 276,0,1057,1067,3,504,252,0,1058,1067,3,60,30,0,1059,1067,3,36,18, + 0,1060,1067,3,68,34,0,1061,1067,3,476,238,0,1062,1064,5,581,0,0, + 1063,1065,5,582,0,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1067, + 1,0,0,0,1066,946,1,0,0,0,1066,947,1,0,0,0,1066,948,1,0,0,0,1066, + 949,1,0,0,0,1066,950,1,0,0,0,1066,951,1,0,0,0,1066,952,1,0,0,0,1066, + 953,1,0,0,0,1066,954,1,0,0,0,1066,955,1,0,0,0,1066,956,1,0,0,0,1066, + 957,1,0,0,0,1066,958,1,0,0,0,1066,959,1,0,0,0,1066,960,1,0,0,0,1066, + 961,1,0,0,0,1066,962,1,0,0,0,1066,963,1,0,0,0,1066,964,1,0,0,0,1066, + 965,1,0,0,0,1066,966,1,0,0,0,1066,967,1,0,0,0,1066,968,1,0,0,0,1066, + 969,1,0,0,0,1066,970,1,0,0,0,1066,971,1,0,0,0,1066,972,1,0,0,0,1066, + 973,1,0,0,0,1066,974,1,0,0,0,1066,975,1,0,0,0,1066,976,1,0,0,0,1066, + 977,1,0,0,0,1066,978,1,0,0,0,1066,979,1,0,0,0,1066,980,1,0,0,0,1066, + 981,1,0,0,0,1066,982,1,0,0,0,1066,983,1,0,0,0,1066,984,1,0,0,0,1066, + 985,1,0,0,0,1066,986,1,0,0,0,1066,987,1,0,0,0,1066,988,1,0,0,0,1066, + 989,1,0,0,0,1066,990,1,0,0,0,1066,991,1,0,0,0,1066,992,1,0,0,0,1066, + 993,1,0,0,0,1066,994,1,0,0,0,1066,995,1,0,0,0,1066,996,1,0,0,0,1066, + 997,1,0,0,0,1066,998,1,0,0,0,1066,999,1,0,0,0,1066,1000,1,0,0,0, + 1066,1001,1,0,0,0,1066,1002,1,0,0,0,1066,1003,1,0,0,0,1066,1004, + 1,0,0,0,1066,1005,1,0,0,0,1066,1006,1,0,0,0,1066,1007,1,0,0,0,1066, + 1008,1,0,0,0,1066,1009,1,0,0,0,1066,1010,1,0,0,0,1066,1011,1,0,0, + 0,1066,1012,1,0,0,0,1066,1013,1,0,0,0,1066,1014,1,0,0,0,1066,1015, + 1,0,0,0,1066,1016,1,0,0,0,1066,1017,1,0,0,0,1066,1018,1,0,0,0,1066, + 1019,1,0,0,0,1066,1020,1,0,0,0,1066,1021,1,0,0,0,1066,1022,1,0,0, + 0,1066,1023,1,0,0,0,1066,1024,1,0,0,0,1066,1025,1,0,0,0,1066,1026, + 1,0,0,0,1066,1027,1,0,0,0,1066,1028,1,0,0,0,1066,1029,1,0,0,0,1066, + 1030,1,0,0,0,1066,1031,1,0,0,0,1066,1032,1,0,0,0,1066,1033,1,0,0, + 0,1066,1034,1,0,0,0,1066,1035,1,0,0,0,1066,1036,1,0,0,0,1066,1037, + 1,0,0,0,1066,1038,1,0,0,0,1066,1039,1,0,0,0,1066,1040,1,0,0,0,1066, + 1041,1,0,0,0,1066,1042,1,0,0,0,1066,1043,1,0,0,0,1066,1044,1,0,0, + 0,1066,1045,1,0,0,0,1066,1046,1,0,0,0,1066,1047,1,0,0,0,1066,1048, + 1,0,0,0,1066,1049,1,0,0,0,1066,1050,1,0,0,0,1066,1051,1,0,0,0,1066, + 1052,1,0,0,0,1066,1053,1,0,0,0,1066,1054,1,0,0,0,1066,1055,1,0,0, + 0,1066,1056,1,0,0,0,1066,1057,1,0,0,0,1066,1058,1,0,0,0,1066,1059, + 1,0,0,0,1066,1060,1,0,0,0,1066,1061,1,0,0,0,1066,1062,1,0,0,0,1067, + 5,1,0,0,0,1068,1069,5,433,0,0,1069,1070,3,684,342,0,1070,7,1,0,0, + 0,1071,1072,5,46,0,0,1072,1073,5,318,0,0,1073,1075,3,814,407,0,1074, + 1076,5,105,0,0,1075,1074,1,0,0,0,1075,1076,1,0,0,0,1076,1080,1,0, + 0,0,1077,1079,3,12,6,0,1078,1077,1,0,0,0,1079,1082,1,0,0,0,1080, + 1078,1,0,0,0,1080,1081,1,0,0,0,1081,9,1,0,0,0,1082,1080,1,0,0,0, + 1083,1086,5,287,0,0,1084,1087,3,808,404,0,1085,1087,5,78,0,0,1086, + 1084,1,0,0,0,1086,1085,1,0,0,0,1087,1122,1,0,0,0,1088,1089,7,0,0, + 0,1089,1090,5,287,0,0,1090,1122,3,808,404,0,1091,1122,5,228,0,0, + 1092,1122,5,229,0,0,1093,1122,5,236,0,0,1094,1122,5,237,0,0,1095, + 1122,5,234,0,0,1096,1122,5,235,0,0,1097,1122,5,232,0,0,1098,1122, + 5,233,0,0,1099,1122,5,230,0,0,1100,1122,5,231,0,0,1101,1122,5,535, + 0,0,1102,1122,5,536,0,0,1103,1122,5,537,0,0,1104,1122,5,538,0,0, + 1105,1122,5,539,0,0,1106,1122,5,540,0,0,1107,1108,5,164,0,0,1108, + 1109,5,74,0,0,1109,1122,3,812,406,0,1110,1111,5,371,0,0,1111,1112, + 5,368,0,0,1112,1122,3,808,404,0,1113,1114,5,68,0,0,1114,1115,7,1, + 0,0,1115,1122,3,784,392,0,1116,1117,7,2,0,0,1117,1122,3,816,408, + 0,1118,1119,5,134,0,0,1119,1122,3,784,392,0,1120,1122,3,826,413, + 0,1121,1083,1,0,0,0,1121,1088,1,0,0,0,1121,1091,1,0,0,0,1121,1092, + 1,0,0,0,1121,1093,1,0,0,0,1121,1094,1,0,0,0,1121,1095,1,0,0,0,1121, + 1096,1,0,0,0,1121,1097,1,0,0,0,1121,1098,1,0,0,0,1121,1099,1,0,0, + 0,1121,1100,1,0,0,0,1121,1101,1,0,0,0,1121,1102,1,0,0,0,1121,1103, + 1,0,0,0,1121,1104,1,0,0,0,1121,1105,1,0,0,0,1121,1106,1,0,0,0,1121, + 1107,1,0,0,0,1121,1110,1,0,0,0,1121,1113,1,0,0,0,1121,1116,1,0,0, + 0,1121,1118,1,0,0,0,1121,1120,1,0,0,0,1122,11,1,0,0,0,1123,1132, + 3,10,5,0,1124,1125,5,348,0,0,1125,1132,5,571,0,0,1126,1127,7,3,0, + 0,1127,1132,3,816,408,0,1128,1129,5,68,0,0,1129,1130,7,1,0,0,1130, + 1132,3,816,408,0,1131,1123,1,0,0,0,1131,1124,1,0,0,0,1131,1126,1, + 0,0,0,1131,1128,1,0,0,0,1132,13,1,0,0,0,1133,1134,5,46,0,0,1134, + 1135,5,99,0,0,1135,1137,3,814,407,0,1136,1138,5,105,0,0,1137,1136, + 1,0,0,0,1137,1138,1,0,0,0,1138,1142,1,0,0,0,1139,1141,3,12,6,0,1140, + 1139,1,0,0,0,1141,1144,1,0,0,0,1142,1140,1,0,0,0,1142,1143,1,0,0, + 0,1143,15,1,0,0,0,1144,1142,1,0,0,0,1145,1146,5,138,0,0,1146,1147, + 7,2,0,0,1147,1149,3,814,407,0,1148,1150,5,105,0,0,1149,1148,1,0, + 0,0,1149,1150,1,0,0,0,1150,1154,1,0,0,0,1151,1153,3,10,5,0,1152, + 1151,1,0,0,0,1153,1156,1,0,0,0,1154,1152,1,0,0,0,1154,1155,1,0,0, + 0,1155,17,1,0,0,0,1156,1154,1,0,0,0,1157,1158,5,138,0,0,1158,1161, + 7,2,0,0,1159,1162,5,30,0,0,1160,1162,3,814,407,0,1161,1159,1,0,0, + 0,1161,1160,1,0,0,0,1162,1163,1,0,0,0,1163,1164,5,68,0,0,1164,1165, + 5,175,0,0,1165,1166,3,788,394,0,1166,1167,3,64,32,0,1167,19,1,0, + 0,0,1168,1169,5,138,0,0,1169,1170,5,442,0,0,1170,1172,3,794,397, + 0,1171,1173,3,368,184,0,1172,1171,1,0,0,0,1172,1173,1,0,0,0,1173, + 1174,1,0,0,0,1174,1175,3,22,11,0,1175,21,1,0,0,0,1176,1180,3,24, + 12,0,1177,1179,3,24,12,0,1178,1177,1,0,0,0,1179,1182,1,0,0,0,1180, + 1178,1,0,0,0,1180,1181,1,0,0,0,1181,1184,1,0,0,0,1182,1180,1,0,0, + 0,1183,1185,5,315,0,0,1184,1183,1,0,0,0,1184,1185,1,0,0,0,1185,1203, + 1,0,0,0,1186,1187,5,309,0,0,1187,1188,5,94,0,0,1188,1203,3,792,396, + 0,1189,1190,5,282,0,0,1190,1191,5,94,0,0,1191,1203,3,814,407,0,1192, + 1193,5,333,0,0,1193,1194,5,323,0,0,1194,1203,3,32,16,0,1195,1197, + 5,269,0,0,1196,1195,1,0,0,0,1196,1197,1,0,0,0,1197,1198,1,0,0,0, + 1198,1199,5,462,0,0,1199,1200,5,80,0,0,1200,1201,5,204,0,0,1201, + 1203,3,818,409,0,1202,1176,1,0,0,0,1202,1186,1,0,0,0,1202,1189,1, + 0,0,0,1202,1192,1,0,0,0,1202,1196,1,0,0,0,1203,23,1,0,0,0,1204,1247, + 5,222,0,0,1205,1247,5,338,0,0,1206,1247,5,377,0,0,1207,1209,5,77, + 0,0,1208,1207,1,0,0,0,1208,1209,1,0,0,0,1209,1210,1,0,0,0,1210,1247, + 5,250,0,0,1211,1213,5,205,0,0,1212,1211,1,0,0,0,1212,1213,1,0,0, + 0,1213,1214,1,0,0,0,1214,1215,5,327,0,0,1215,1222,5,243,0,0,1216, + 1218,5,205,0,0,1217,1216,1,0,0,0,1217,1218,1,0,0,0,1218,1219,1,0, + 0,0,1219,1220,5,327,0,0,1220,1222,5,181,0,0,1221,1212,1,0,0,0,1221, + 1217,1,0,0,0,1222,1247,1,0,0,0,1223,1224,5,460,0,0,1224,1247,7,4, + 0,0,1225,1226,5,170,0,0,1226,1247,3,824,412,0,1227,1228,5,320,0, + 0,1228,1247,3,818,409,0,1229,1230,5,333,0,0,1230,1231,3,818,409, + 0,1231,1234,7,5,0,0,1232,1235,3,818,409,0,1233,1235,5,53,0,0,1234, + 1232,1,0,0,0,1234,1233,1,0,0,0,1235,1247,1,0,0,0,1236,1237,5,333, + 0,0,1237,1238,3,818,409,0,1238,1239,5,64,0,0,1239,1240,5,434,0,0, + 1240,1247,1,0,0,0,1241,1244,5,313,0,0,1242,1245,3,818,409,0,1243, + 1245,5,30,0,0,1244,1242,1,0,0,0,1244,1243,1,0,0,0,1245,1247,1,0, + 0,0,1246,1204,1,0,0,0,1246,1205,1,0,0,0,1246,1206,1,0,0,0,1246,1208, + 1,0,0,0,1246,1221,1,0,0,0,1246,1223,1,0,0,0,1246,1225,1,0,0,0,1246, + 1227,1,0,0,0,1246,1229,1,0,0,0,1246,1236,1,0,0,0,1246,1241,1,0,0, + 0,1247,25,1,0,0,0,1248,1249,5,46,0,0,1249,1250,5,66,0,0,1250,1252, + 3,814,407,0,1251,1253,5,105,0,0,1252,1251,1,0,0,0,1252,1253,1,0, + 0,0,1253,1257,1,0,0,0,1254,1256,3,12,6,0,1255,1254,1,0,0,0,1256, + 1259,1,0,0,0,1257,1255,1,0,0,0,1257,1258,1,0,0,0,1258,27,1,0,0,0, + 1259,1257,1,0,0,0,1260,1261,5,138,0,0,1261,1262,5,66,0,0,1262,1263, + 3,814,407,0,1263,1264,7,6,0,0,1264,1265,5,99,0,0,1265,1266,3,816, + 408,0,1266,29,1,0,0,0,1267,1268,5,46,0,0,1268,1270,5,323,0,0,1269, + 1271,3,294,147,0,1270,1269,1,0,0,0,1270,1271,1,0,0,0,1271,1278,1, + 0,0,0,1272,1274,3,32,16,0,1273,1272,1,0,0,0,1273,1274,1,0,0,0,1274, + 1275,1,0,0,0,1275,1276,5,106,0,0,1276,1279,3,814,407,0,1277,1279, + 3,32,16,0,1278,1273,1,0,0,0,1278,1277,1,0,0,0,1279,1283,1,0,0,0, + 1280,1282,3,34,17,0,1281,1280,1,0,0,0,1282,1285,1,0,0,0,1283,1281, + 1,0,0,0,1283,1284,1,0,0,0,1284,31,1,0,0,0,1285,1283,1,0,0,0,1286, + 1287,3,316,158,0,1287,33,1,0,0,0,1288,1295,3,120,60,0,1289,1295, + 3,358,179,0,1290,1295,3,196,98,0,1291,1295,3,256,128,0,1292,1295, + 3,334,167,0,1293,1295,3,476,238,0,1294,1288,1,0,0,0,1294,1289,1, + 0,0,0,1294,1290,1,0,0,0,1294,1291,1,0,0,0,1294,1292,1,0,0,0,1294, + 1293,1,0,0,0,1295,35,1,0,0,0,1296,1298,5,333,0,0,1297,1299,7,7,0, + 0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300,1301, + 3,38,19,0,1301,37,1,0,0,0,1302,1303,5,356,0,0,1303,1311,3,474,237, + 0,1304,1305,5,332,0,0,1305,1306,5,154,0,0,1306,1307,5,36,0,0,1307, + 1308,5,356,0,0,1308,1311,3,474,237,0,1309,1311,3,42,21,0,1310,1302, + 1,0,0,0,1310,1304,1,0,0,0,1310,1309,1,0,0,0,1311,39,1,0,0,0,1312, + 1315,5,30,0,0,1313,1315,3,44,22,0,1314,1312,1,0,0,0,1314,1313,1, + 0,0,0,1315,1317,1,0,0,0,1316,1318,7,5,0,0,1317,1316,1,0,0,0,1317, + 1318,1,0,0,0,1318,1321,1,0,0,0,1319,1322,5,53,0,0,1320,1322,3,46, + 23,0,1321,1319,1,0,0,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322, + 41,1,0,0,0,1323,1324,5,418,0,0,1324,1325,5,386,0,0,1325,1352,3,56, + 28,0,1326,1327,5,152,0,0,1327,1352,3,808,404,0,1328,1329,5,323,0, + 0,1329,1352,3,790,395,0,1330,1333,5,267,0,0,1331,1334,3,808,404, + 0,1332,1334,5,53,0,0,1333,1331,1,0,0,0,1333,1332,1,0,0,0,1333,1334, + 1,0,0,0,1334,1352,1,0,0,0,1335,1336,5,318,0,0,1336,1352,3,58,29, + 0,1337,1338,5,332,0,0,1338,1339,5,106,0,0,1339,1352,3,58,29,0,1340, + 1341,5,383,0,0,1341,1342,5,279,0,0,1342,1352,3,696,348,0,1343,1344, + 5,356,0,0,1344,1345,5,337,0,0,1345,1352,3,808,404,0,1346,1347,3, + 44,22,0,1347,1348,5,64,0,0,1348,1349,5,434,0,0,1349,1352,1,0,0,0, + 1350,1352,3,40,20,0,1351,1323,1,0,0,0,1351,1326,1,0,0,0,1351,1328, + 1,0,0,0,1351,1330,1,0,0,0,1351,1335,1,0,0,0,1351,1337,1,0,0,0,1351, + 1340,1,0,0,0,1351,1343,1,0,0,0,1351,1346,1,0,0,0,1351,1350,1,0,0, + 0,1352,43,1,0,0,0,1353,1358,3,818,409,0,1354,1355,5,11,0,0,1355, + 1357,3,818,409,0,1356,1354,1,0,0,0,1357,1360,1,0,0,0,1358,1356,1, + 0,0,0,1358,1359,1,0,0,0,1359,45,1,0,0,0,1360,1358,1,0,0,0,1361,1366, + 3,48,24,0,1362,1363,5,6,0,0,1363,1365,3,48,24,0,1364,1362,1,0,0, + 0,1365,1368,1,0,0,0,1366,1364,1,0,0,0,1366,1367,1,0,0,0,1367,47, + 1,0,0,0,1368,1366,1,0,0,0,1369,1372,3,54,27,0,1370,1372,3,202,101, + 0,1371,1369,1,0,0,0,1371,1370,1,0,0,0,1372,49,1,0,0,0,1373,1374, + 5,300,0,0,1374,1379,7,8,0,0,1375,1376,5,310,0,0,1376,1379,5,300, + 0,0,1377,1379,5,330,0,0,1378,1373,1,0,0,0,1378,1375,1,0,0,0,1378, + 1377,1,0,0,0,1379,51,1,0,0,0,1380,1387,5,96,0,0,1381,1387,5,60,0, + 0,1382,1387,5,80,0,0,1383,1387,3,800,400,0,1384,1387,3,832,416,0, + 1385,1387,3,808,404,0,1386,1380,1,0,0,0,1386,1381,1,0,0,0,1386,1382, + 1,0,0,0,1386,1383,1,0,0,0,1386,1384,1,0,0,0,1386,1385,1,0,0,0,1387, + 53,1,0,0,0,1388,1393,5,96,0,0,1389,1393,5,60,0,0,1390,1393,5,80, + 0,0,1391,1393,3,58,29,0,1392,1388,1,0,0,0,1392,1389,1,0,0,0,1392, + 1390,1,0,0,0,1392,1391,1,0,0,0,1393,55,1,0,0,0,1394,1409,3,808,404, + 0,1395,1409,5,53,0,0,1396,1409,3,826,413,0,1397,1398,5,403,0,0,1398, + 1400,3,808,404,0,1399,1401,3,668,334,0,1400,1399,1,0,0,0,1400,1401, + 1,0,0,0,1401,1409,1,0,0,0,1402,1403,5,403,0,0,1403,1404,3,660,330, + 0,1404,1405,3,808,404,0,1405,1409,1,0,0,0,1406,1409,3,202,101,0, + 1407,1409,5,254,0,0,1408,1394,1,0,0,0,1408,1395,1,0,0,0,1408,1396, + 1,0,0,0,1408,1397,1,0,0,0,1408,1402,1,0,0,0,1408,1406,1,0,0,0,1408, + 1407,1,0,0,0,1409,57,1,0,0,0,1410,1413,3,822,411,0,1411,1413,3,808, + 404,0,1412,1410,1,0,0,0,1412,1411,1,0,0,0,1413,59,1,0,0,0,1414,1415, + 5,313,0,0,1415,1416,3,62,31,0,1416,61,1,0,0,0,1417,1418,5,418,0, + 0,1418,1427,5,386,0,0,1419,1420,5,356,0,0,1420,1421,5,244,0,0,1421, + 1427,5,251,0,0,1422,1423,5,332,0,0,1423,1427,5,106,0,0,1424,1427, + 5,30,0,0,1425,1427,3,44,22,0,1426,1417,1,0,0,0,1426,1419,1,0,0,0, + 1426,1422,1,0,0,0,1426,1424,1,0,0,0,1426,1425,1,0,0,0,1427,63,1, + 0,0,0,1428,1429,5,333,0,0,1429,1432,3,38,19,0,1430,1432,3,60,30, + 0,1431,1428,1,0,0,0,1431,1430,1,0,0,0,1432,65,1,0,0,0,1433,1434, + 5,333,0,0,1434,1437,3,42,21,0,1435,1437,3,60,30,0,1436,1433,1,0, + 0,0,1436,1435,1,0,0,0,1437,67,1,0,0,0,1438,1448,5,335,0,0,1439,1449, + 3,44,22,0,1440,1441,5,418,0,0,1441,1449,5,386,0,0,1442,1443,5,356, + 0,0,1443,1444,5,244,0,0,1444,1449,5,251,0,0,1445,1446,5,332,0,0, + 1446,1449,5,106,0,0,1447,1449,5,30,0,0,1448,1439,1,0,0,0,1448,1440, + 1,0,0,0,1448,1442,1,0,0,0,1448,1445,1,0,0,0,1448,1447,1,0,0,0,1449, + 69,1,0,0,0,1450,1451,5,333,0,0,1451,1454,5,165,0,0,1452,1455,5,30, + 0,0,1453,1455,3,760,380,0,1454,1452,1,0,0,0,1454,1453,1,0,0,0,1455, + 1456,1,0,0,0,1456,1457,7,9,0,0,1457,71,1,0,0,0,1458,1459,5,155,0, + 0,1459,73,1,0,0,0,1460,1461,5,187,0,0,1461,1462,7,10,0,0,1462,75, + 1,0,0,0,1463,1464,5,138,0,0,1464,1466,5,92,0,0,1465,1467,3,422,211, + 0,1466,1465,1,0,0,0,1466,1467,1,0,0,0,1467,1468,1,0,0,0,1468,1471, + 3,624,312,0,1469,1472,3,78,39,0,1470,1472,3,88,44,0,1471,1469,1, + 0,0,0,1471,1470,1,0,0,0,1472,1585,1,0,0,0,1473,1474,5,138,0,0,1474, + 1475,5,92,0,0,1475,1476,5,30,0,0,1476,1477,5,68,0,0,1477,1481,3, + 176,88,0,1478,1479,5,281,0,0,1479,1480,5,147,0,0,1480,1482,3,816, + 408,0,1481,1478,1,0,0,0,1481,1482,1,0,0,0,1482,1483,1,0,0,0,1483, + 1484,5,333,0,0,1484,1485,5,351,0,0,1485,1487,3,768,384,0,1486,1488, + 5,272,0,0,1487,1486,1,0,0,0,1487,1488,1,0,0,0,1488,1585,1,0,0,0, + 1489,1490,5,138,0,0,1490,1492,5,92,0,0,1491,1493,3,422,211,0,1492, + 1491,1,0,0,0,1492,1493,1,0,0,0,1493,1494,1,0,0,0,1494,1495,3,774, + 387,0,1495,1500,3,90,45,0,1496,1497,5,62,0,0,1497,1498,5,422,0,0, + 1498,1501,3,80,40,0,1499,1501,5,53,0,0,1500,1496,1,0,0,0,1500,1499, + 1,0,0,0,1501,1585,1,0,0,0,1502,1503,5,138,0,0,1503,1505,5,92,0,0, + 1504,1506,3,422,211,0,1505,1504,1,0,0,0,1505,1506,1,0,0,0,1506,1507, + 1,0,0,0,1507,1508,3,774,387,0,1508,1509,5,436,0,0,1509,1510,5,285, + 0,0,1510,1512,3,780,390,0,1511,1513,7,11,0,0,1512,1511,1,0,0,0,1512, + 1513,1,0,0,0,1513,1585,1,0,0,0,1514,1515,5,138,0,0,1515,1517,5,226, + 0,0,1516,1518,3,422,211,0,1517,1516,1,0,0,0,1517,1518,1,0,0,0,1518, + 1519,1,0,0,0,1519,1522,3,780,390,0,1520,1523,3,78,39,0,1521,1523, + 3,90,45,0,1522,1520,1,0,0,0,1522,1521,1,0,0,0,1523,1585,1,0,0,0, + 1524,1525,5,138,0,0,1525,1526,5,226,0,0,1526,1527,5,30,0,0,1527, + 1528,5,68,0,0,1528,1532,3,176,88,0,1529,1530,5,281,0,0,1530,1531, + 5,147,0,0,1531,1533,3,816,408,0,1532,1529,1,0,0,0,1532,1533,1,0, + 0,0,1533,1534,1,0,0,0,1534,1535,5,333,0,0,1535,1537,3,176,88,0,1536, + 1538,5,272,0,0,1537,1536,1,0,0,0,1537,1538,1,0,0,0,1538,1585,1,0, + 0,0,1539,1540,5,138,0,0,1540,1542,5,328,0,0,1541,1543,3,422,211, + 0,1542,1541,1,0,0,0,1542,1543,1,0,0,0,1543,1544,1,0,0,0,1544,1545, + 3,780,390,0,1545,1546,3,78,39,0,1546,1585,1,0,0,0,1547,1549,5,138, + 0,0,1548,1550,5,259,0,0,1549,1548,1,0,0,0,1549,1550,1,0,0,0,1550, + 1551,1,0,0,0,1551,1553,5,376,0,0,1552,1554,3,422,211,0,1553,1552, + 1,0,0,0,1553,1554,1,0,0,0,1554,1555,1,0,0,0,1555,1556,3,778,389, + 0,1556,1557,3,78,39,0,1557,1585,1,0,0,0,1558,1559,5,138,0,0,1559, + 1560,5,259,0,0,1560,1561,5,376,0,0,1561,1562,5,30,0,0,1562,1563, + 5,68,0,0,1563,1567,3,176,88,0,1564,1565,5,281,0,0,1565,1566,5,147, + 0,0,1566,1568,3,816,408,0,1567,1564,1,0,0,0,1567,1568,1,0,0,0,1568, + 1569,1,0,0,0,1569,1570,5,333,0,0,1570,1571,5,351,0,0,1571,1573,3, + 768,384,0,1572,1574,5,272,0,0,1573,1572,1,0,0,0,1573,1574,1,0,0, + 0,1574,1585,1,0,0,0,1575,1576,5,138,0,0,1576,1577,5,63,0,0,1577, + 1579,5,92,0,0,1578,1580,3,422,211,0,1579,1578,1,0,0,0,1579,1580, + 1,0,0,0,1580,1581,1,0,0,0,1581,1582,3,624,312,0,1582,1583,3,78,39, + 0,1583,1585,1,0,0,0,1584,1463,1,0,0,0,1584,1473,1,0,0,0,1584,1489, + 1,0,0,0,1584,1502,1,0,0,0,1584,1514,1,0,0,0,1584,1524,1,0,0,0,1584, + 1539,1,0,0,0,1584,1547,1,0,0,0,1584,1558,1,0,0,0,1584,1575,1,0,0, + 0,1585,77,1,0,0,0,1586,1591,3,92,46,0,1587,1588,5,6,0,0,1588,1590, + 3,92,46,0,1589,1587,1,0,0,0,1590,1593,1,0,0,0,1591,1589,1,0,0,0, + 1591,1592,1,0,0,0,1592,79,1,0,0,0,1593,1591,1,0,0,0,1594,1595,5, + 68,0,0,1595,1604,3,534,267,0,1596,1597,5,64,0,0,1597,1598,3,82,41, + 0,1598,1599,5,94,0,0,1599,1600,3,82,41,0,1600,1604,1,0,0,0,1601, + 1602,5,105,0,0,1602,1604,3,86,43,0,1603,1594,1,0,0,0,1603,1596,1, + 0,0,0,1603,1601,1,0,0,0,1604,81,1,0,0,0,1605,1606,5,2,0,0,1606,1611, + 3,84,42,0,1607,1608,5,6,0,0,1608,1610,3,84,42,0,1609,1607,1,0,0, + 0,1610,1613,1,0,0,0,1611,1609,1,0,0,0,1611,1612,1,0,0,0,1612,1614, + 1,0,0,0,1613,1611,1,0,0,0,1614,1615,5,3,0,0,1615,83,1,0,0,0,1616, + 1620,3,534,267,0,1617,1620,5,262,0,0,1618,1620,5,260,0,0,1619,1616, + 1,0,0,0,1619,1617,1,0,0,0,1619,1618,1,0,0,0,1620,85,1,0,0,0,1621, + 1622,5,2,0,0,1622,1623,5,533,0,0,1623,1624,3,202,101,0,1624,1625, + 5,6,0,0,1625,1626,5,534,0,0,1626,1627,3,202,101,0,1627,1628,5,3, + 0,0,1628,87,1,0,0,0,1629,1630,3,90,45,0,1630,1631,3,106,53,0,1631, + 1636,1,0,0,0,1632,1633,5,436,0,0,1633,1634,5,285,0,0,1634,1636,3, + 780,390,0,1635,1629,1,0,0,0,1635,1632,1,0,0,0,1636,89,1,0,0,0,1637, + 1638,5,435,0,0,1638,1639,5,285,0,0,1639,1640,3,780,390,0,1640,91, + 1,0,0,0,1641,1644,5,133,0,0,1642,1643,5,45,0,0,1643,1645,3,818,409, + 0,1644,1642,1,0,0,0,1644,1645,1,0,0,0,1645,1646,1,0,0,0,1646,1875, + 3,142,71,0,1647,1648,5,138,0,0,1648,1649,5,45,0,0,1649,1653,3,818, + 409,0,1650,1652,3,272,136,0,1651,1650,1,0,0,0,1652,1655,1,0,0,0, + 1653,1651,1,0,0,0,1653,1654,1,0,0,0,1654,1875,1,0,0,0,1655,1653, + 1,0,0,0,1656,1657,5,372,0,0,1657,1658,5,45,0,0,1658,1875,3,818,409, + 0,1659,1660,5,191,0,0,1660,1662,5,45,0,0,1661,1663,3,422,211,0,1662, + 1661,1,0,0,0,1662,1663,1,0,0,0,1663,1664,1,0,0,0,1664,1666,3,818, + 409,0,1665,1667,3,96,48,0,1666,1665,1,0,0,0,1666,1667,1,0,0,0,1667, + 1875,1,0,0,0,1668,1669,5,333,0,0,1669,1670,5,379,0,0,1670,1875,7, + 12,0,0,1671,1672,5,158,0,0,1672,1673,5,80,0,0,1673,1875,3,818,409, + 0,1674,1675,5,333,0,0,1675,1875,7,13,0,0,1676,1678,5,193,0,0,1677, + 1679,7,14,0,0,1678,1677,1,0,0,0,1678,1679,1,0,0,0,1679,1680,1,0, + 0,0,1680,1875,5,357,0,0,1681,1682,5,186,0,0,1682,1686,5,357,0,0, + 1683,1687,5,30,0,0,1684,1687,5,99,0,0,1685,1687,3,818,409,0,1686, + 1683,1,0,0,0,1686,1684,1,0,0,0,1686,1685,1,0,0,0,1687,1875,1,0,0, + 0,1688,1689,5,193,0,0,1689,1690,7,14,0,0,1690,1691,5,321,0,0,1691, + 1875,3,818,409,0,1692,1693,5,186,0,0,1693,1694,5,321,0,0,1694,1875, + 3,818,409,0,1695,1697,5,269,0,0,1696,1695,1,0,0,0,1696,1697,1,0, + 0,0,1697,1698,1,0,0,0,1698,1699,5,228,0,0,1699,1875,3,780,390,0, + 1700,1701,5,275,0,0,1701,1875,3,316,158,0,1702,1703,5,77,0,0,1703, + 1875,5,275,0,0,1704,1705,5,282,0,0,1705,1706,5,94,0,0,1706,1875, + 3,814,407,0,1707,1708,5,333,0,0,1708,1709,5,351,0,0,1709,1875,3, + 768,384,0,1710,1711,5,312,0,0,1711,1716,5,219,0,0,1712,1717,5,270, + 0,0,1713,1717,5,113,0,0,1714,1717,5,53,0,0,1715,1717,3,180,90,0, + 1716,1712,1,0,0,0,1716,1713,1,0,0,0,1716,1714,1,0,0,0,1716,1715, + 1,0,0,0,1717,1875,1,0,0,0,1718,1725,5,193,0,0,1719,1725,5,186,0, + 0,1720,1722,5,269,0,0,1721,1720,1,0,0,0,1721,1722,1,0,0,0,1722,1723, + 1,0,0,0,1723,1725,5,209,0,0,1724,1718,1,0,0,0,1724,1719,1,0,0,0, + 1724,1721,1,0,0,0,1725,1726,1,0,0,0,1726,1727,5,414,0,0,1727,1728, + 5,251,0,0,1728,1875,5,327,0,0,1729,1731,5,191,0,0,1730,1732,5,44, + 0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732,1734,1,0,0,0,1733,1735, + 3,422,211,0,1734,1733,1,0,0,0,1734,1735,1,0,0,0,1735,1736,1,0,0, + 0,1736,1738,3,800,400,0,1737,1739,3,96,48,0,1738,1737,1,0,0,0,1738, + 1739,1,0,0,0,1739,1875,1,0,0,0,1740,1742,5,133,0,0,1741,1743,5,44, + 0,0,1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1745,1,0,0,0,1744,1746, + 3,294,147,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0, + 0,1747,1875,3,132,66,0,1748,1750,5,138,0,0,1749,1751,5,44,0,0,1750, + 1749,1,0,0,0,1750,1751,1,0,0,0,1751,1752,1,0,0,0,1752,1755,3,800, + 400,0,1753,1756,3,94,47,0,1754,1756,3,222,111,0,1755,1753,1,0,0, + 0,1755,1754,1,0,0,0,1756,1875,1,0,0,0,1757,1759,5,138,0,0,1758,1760, + 5,44,0,0,1759,1758,1,0,0,0,1759,1760,1,0,0,0,1760,1761,1,0,0,0,1761, + 1762,3,800,400,0,1762,1763,7,15,0,0,1763,1764,5,77,0,0,1764,1765, + 5,78,0,0,1765,1875,1,0,0,0,1766,1768,5,138,0,0,1767,1769,5,44,0, + 0,1768,1767,1,0,0,0,1768,1769,1,0,0,0,1769,1770,1,0,0,0,1770,1771, + 3,800,400,0,1771,1772,5,191,0,0,1772,1774,5,437,0,0,1773,1775,3, + 422,211,0,1774,1773,1,0,0,0,1774,1775,1,0,0,0,1775,1875,1,0,0,0, + 1776,1778,5,138,0,0,1777,1779,5,44,0,0,1778,1777,1,0,0,0,1778,1779, + 1,0,0,0,1779,1780,1,0,0,0,1780,1781,3,800,400,0,1781,1782,5,333, + 0,0,1782,1783,5,342,0,0,1783,1784,3,812,406,0,1784,1875,1,0,0,0, + 1785,1787,5,138,0,0,1786,1788,5,44,0,0,1787,1786,1,0,0,0,1787,1788, + 1,0,0,0,1788,1789,1,0,0,0,1789,1791,3,800,400,0,1790,1785,1,0,0, + 0,1790,1791,1,0,0,0,1791,1792,1,0,0,0,1792,1793,7,16,0,0,1793,1875, + 3,100,50,0,1794,1796,5,138,0,0,1795,1797,5,44,0,0,1796,1795,1,0, + 0,0,1796,1797,1,0,0,0,1797,1798,1,0,0,0,1798,1799,3,800,400,0,1799, + 1800,5,333,0,0,1800,1801,5,345,0,0,1801,1802,3,818,409,0,1802,1875, + 1,0,0,0,1803,1805,5,138,0,0,1804,1806,5,44,0,0,1805,1804,1,0,0,0, + 1805,1806,1,0,0,0,1806,1807,1,0,0,0,1807,1808,3,800,400,0,1808,1809, + 5,133,0,0,1809,1810,5,438,0,0,1810,1811,3,138,69,0,1811,1812,5,36, + 0,0,1812,1821,5,219,0,0,1813,1815,5,2,0,0,1814,1816,3,200,100,0, + 1815,1814,1,0,0,0,1816,1817,1,0,0,0,1817,1815,1,0,0,0,1817,1818, + 1,0,0,0,1818,1819,1,0,0,0,1819,1820,5,3,0,0,1820,1822,1,0,0,0,1821, + 1813,1,0,0,0,1821,1822,1,0,0,0,1822,1875,1,0,0,0,1823,1825,5,138, + 0,0,1824,1826,5,44,0,0,1825,1824,1,0,0,0,1825,1826,1,0,0,0,1826, + 1827,1,0,0,0,1827,1841,3,800,400,0,1828,1833,5,314,0,0,1829,1831, + 5,105,0,0,1830,1829,1,0,0,0,1830,1831,1,0,0,0,1831,1832,1,0,0,0, + 1832,1834,3,202,101,0,1833,1830,1,0,0,0,1833,1834,1,0,0,0,1834,1842, + 1,0,0,0,1835,1839,5,333,0,0,1836,1840,3,200,100,0,1837,1838,5,438, + 0,0,1838,1840,3,138,69,0,1839,1836,1,0,0,0,1839,1837,1,0,0,0,1840, + 1842,1,0,0,0,1841,1828,1,0,0,0,1841,1835,1,0,0,0,1842,1843,1,0,0, + 0,1843,1841,1,0,0,0,1843,1844,1,0,0,0,1844,1875,1,0,0,0,1845,1847, + 5,138,0,0,1846,1848,5,44,0,0,1847,1846,1,0,0,0,1847,1848,1,0,0,0, + 1848,1849,1,0,0,0,1849,1850,3,800,400,0,1850,1851,5,191,0,0,1851, + 1853,5,219,0,0,1852,1854,3,422,211,0,1853,1852,1,0,0,0,1853,1854, + 1,0,0,0,1854,1875,1,0,0,0,1855,1857,5,138,0,0,1856,1858,5,44,0,0, + 1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1862, + 3,800,400,0,1860,1861,5,333,0,0,1861,1863,5,174,0,0,1862,1860,1, + 0,0,0,1862,1863,1,0,0,0,1863,1864,1,0,0,0,1864,1865,5,360,0,0,1865, + 1867,3,652,326,0,1866,1868,3,98,49,0,1867,1866,1,0,0,0,1867,1868, + 1,0,0,0,1868,1871,1,0,0,0,1869,1870,5,100,0,0,1870,1872,3,674,337, + 0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1875,1,0,0,0,1873,1875, + 3,222,111,0,1874,1641,1,0,0,0,1874,1647,1,0,0,0,1874,1656,1,0,0, + 0,1874,1659,1,0,0,0,1874,1668,1,0,0,0,1874,1671,1,0,0,0,1874,1674, + 1,0,0,0,1874,1676,1,0,0,0,1874,1681,1,0,0,0,1874,1688,1,0,0,0,1874, + 1692,1,0,0,0,1874,1696,1,0,0,0,1874,1700,1,0,0,0,1874,1702,1,0,0, + 0,1874,1704,1,0,0,0,1874,1707,1,0,0,0,1874,1710,1,0,0,0,1874,1724, + 1,0,0,0,1874,1729,1,0,0,0,1874,1740,1,0,0,0,1874,1748,1,0,0,0,1874, + 1757,1,0,0,0,1874,1766,1,0,0,0,1874,1776,1,0,0,0,1874,1790,1,0,0, + 0,1874,1794,1,0,0,0,1874,1803,1,0,0,0,1874,1823,1,0,0,0,1874,1845, + 1,0,0,0,1874,1855,1,0,0,0,1874,1873,1,0,0,0,1875,93,1,0,0,0,1876, + 1877,5,333,0,0,1877,1878,5,53,0,0,1878,1882,3,674,337,0,1879,1880, + 5,191,0,0,1880,1882,5,53,0,0,1881,1876,1,0,0,0,1881,1879,1,0,0,0, + 1882,95,1,0,0,0,1883,1884,7,17,0,0,1884,97,1,0,0,0,1885,1886,5,43, + 0,0,1886,1887,3,316,158,0,1887,99,1,0,0,0,1888,1889,5,2,0,0,1889, + 1894,3,104,52,0,1890,1891,5,6,0,0,1891,1893,3,104,52,0,1892,1890, + 1,0,0,0,1893,1896,1,0,0,0,1894,1892,1,0,0,0,1894,1895,1,0,0,0,1895, + 1897,1,0,0,0,1896,1894,1,0,0,0,1897,1898,5,3,0,0,1898,101,1,0,0, + 0,1899,1900,5,105,0,0,1900,1901,3,100,50,0,1901,103,1,0,0,0,1902, + 1907,3,824,412,0,1903,1904,5,10,0,0,1904,1908,3,288,144,0,1905,1906, + 5,11,0,0,1906,1908,3,286,143,0,1907,1903,1,0,0,0,1907,1905,1,0,0, + 0,1907,1908,1,0,0,0,1908,105,1,0,0,0,1909,1910,5,62,0,0,1910,1911, + 5,422,0,0,1911,1912,5,105,0,0,1912,1913,5,2,0,0,1913,1914,3,822, + 411,0,1914,1921,5,571,0,0,1915,1916,5,6,0,0,1916,1917,3,822,411, + 0,1917,1918,5,571,0,0,1918,1920,1,0,0,0,1919,1915,1,0,0,0,1920,1923, + 1,0,0,0,1921,1919,1,0,0,0,1921,1922,1,0,0,0,1922,1924,1,0,0,0,1923, + 1921,1,0,0,0,1924,1925,5,3,0,0,1925,1939,1,0,0,0,1926,1927,5,62, + 0,0,1927,1928,5,422,0,0,1928,1929,5,68,0,0,1929,1939,3,534,267,0, + 1930,1931,5,62,0,0,1931,1932,5,422,0,0,1932,1933,5,64,0,0,1933,1934, + 3,534,267,0,1934,1935,5,94,0,0,1935,1936,3,534,267,0,1936,1939,1, + 0,0,0,1937,1939,5,53,0,0,1938,1909,1,0,0,0,1938,1926,1,0,0,0,1938, + 1930,1,0,0,0,1938,1937,1,0,0,0,1939,107,1,0,0,0,1940,1941,5,138, + 0,0,1941,1942,5,360,0,0,1942,1943,3,316,158,0,1943,1948,3,110,55, + 0,1944,1945,5,6,0,0,1945,1947,3,110,55,0,1946,1944,1,0,0,0,1947, + 1950,1,0,0,0,1948,1946,1,0,0,0,1948,1949,1,0,0,0,1949,109,1,0,0, + 0,1950,1948,1,0,0,0,1951,1952,5,133,0,0,1952,1953,5,143,0,0,1953, + 1955,3,644,322,0,1954,1956,3,96,48,0,1955,1954,1,0,0,0,1955,1956, + 1,0,0,0,1956,1982,1,0,0,0,1957,1958,5,191,0,0,1958,1960,5,143,0, + 0,1959,1961,3,422,211,0,1960,1959,1,0,0,0,1960,1961,1,0,0,0,1961, + 1962,1,0,0,0,1962,1964,3,818,409,0,1963,1965,3,96,48,0,1964,1963, + 1,0,0,0,1964,1965,1,0,0,0,1965,1982,1,0,0,0,1966,1967,5,138,0,0, + 1967,1968,5,143,0,0,1968,1971,3,818,409,0,1969,1970,5,333,0,0,1970, + 1972,5,174,0,0,1971,1969,1,0,0,0,1971,1972,1,0,0,0,1972,1973,1,0, + 0,0,1973,1974,5,360,0,0,1974,1976,3,652,326,0,1975,1977,3,98,49, + 0,1976,1975,1,0,0,0,1976,1977,1,0,0,0,1977,1979,1,0,0,0,1978,1980, + 3,96,48,0,1979,1978,1,0,0,0,1979,1980,1,0,0,0,1980,1982,1,0,0,0, + 1981,1951,1,0,0,0,1981,1957,1,0,0,0,1981,1966,1,0,0,0,1982,111,1, + 0,0,0,1983,1986,5,157,0,0,1984,1987,3,818,409,0,1985,1987,5,30,0, + 0,1986,1984,1,0,0,0,1986,1985,1,0,0,0,1987,113,1,0,0,0,1988,1990, + 5,169,0,0,1989,1991,5,107,0,0,1990,1989,1,0,0,0,1990,1991,1,0,0, + 0,1991,1992,1,0,0,0,1992,1994,3,774,387,0,1993,1995,3,144,72,0,1994, + 1993,1,0,0,0,1994,1995,1,0,0,0,1995,1996,1,0,0,0,1996,1998,7,18, + 0,0,1997,1999,5,297,0,0,1998,1997,1,0,0,0,1998,1999,1,0,0,0,1999, + 2003,1,0,0,0,2000,2004,3,808,404,0,2001,2004,5,343,0,0,2002,2004, + 5,344,0,0,2003,2000,1,0,0,0,2003,2001,1,0,0,0,2003,2002,1,0,0,0, + 2004,2010,1,0,0,0,2005,2007,5,100,0,0,2006,2005,1,0,0,0,2006,2007, + 1,0,0,0,2007,2008,1,0,0,0,2008,2009,5,184,0,0,2009,2011,3,808,404, + 0,2010,2006,1,0,0,0,2010,2011,1,0,0,0,2011,2013,1,0,0,0,2012,2014, + 5,105,0,0,2013,2012,1,0,0,0,2013,2014,1,0,0,0,2014,2015,1,0,0,0, + 2015,2017,3,116,58,0,2016,2018,3,638,319,0,2017,2016,1,0,0,0,2017, + 2018,1,0,0,0,2018,2038,1,0,0,0,2019,2020,5,169,0,0,2020,2021,5,2, + 0,0,2021,2022,3,530,265,0,2022,2023,5,3,0,0,2023,2025,5,94,0,0,2024, + 2026,5,297,0,0,2025,2024,1,0,0,0,2025,2026,1,0,0,0,2026,2030,1,0, + 0,0,2027,2031,3,808,404,0,2028,2031,5,343,0,0,2029,2031,5,344,0, + 0,2030,2027,1,0,0,0,2030,2028,1,0,0,0,2030,2029,1,0,0,0,2031,2033, + 1,0,0,0,2032,2034,5,105,0,0,2033,2032,1,0,0,0,2033,2034,1,0,0,0, + 2034,2035,1,0,0,0,2035,2036,3,116,58,0,2036,2038,1,0,0,0,2037,1988, + 1,0,0,0,2037,2019,1,0,0,0,2038,115,1,0,0,0,2039,2063,5,107,0,0,2040, + 2063,5,112,0,0,2041,2043,7,19,0,0,2042,2044,5,36,0,0,2043,2042,1, + 0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,0,0,2045,2063,3,808,404,0, + 2046,2063,5,171,0,0,2047,2063,5,216,0,0,2048,2049,5,209,0,0,2049, + 2052,5,298,0,0,2050,2053,3,148,74,0,2051,2053,5,9,0,0,2052,2050, + 1,0,0,0,2052,2051,1,0,0,0,2053,2063,1,0,0,0,2054,2056,5,209,0,0, + 2055,2057,5,77,0,0,2056,2055,1,0,0,0,2056,2057,1,0,0,0,2057,2058, + 1,0,0,0,2058,2059,5,78,0,0,2059,2063,3,148,74,0,2060,2061,5,194, + 0,0,2061,2063,3,808,404,0,2062,2039,1,0,0,0,2062,2040,1,0,0,0,2062, + 2041,1,0,0,0,2062,2046,1,0,0,0,2062,2047,1,0,0,0,2062,2048,1,0,0, + 0,2062,2054,1,0,0,0,2062,2060,1,0,0,0,2063,2066,1,0,0,0,2064,2062, + 1,0,0,0,2064,2065,1,0,0,0,2065,2079,1,0,0,0,2066,2064,1,0,0,0,2067, + 2068,5,2,0,0,2068,2073,3,118,59,0,2069,2070,5,6,0,0,2070,2072,3, + 118,59,0,2071,2069,1,0,0,0,2072,2075,1,0,0,0,2073,2071,1,0,0,0,2073, + 2074,1,0,0,0,2074,2076,1,0,0,0,2075,2073,1,0,0,0,2076,2077,5,3,0, + 0,2077,2079,1,0,0,0,2078,2064,1,0,0,0,2078,2067,1,0,0,0,2079,117, + 1,0,0,0,2080,2095,3,824,412,0,2081,2096,3,54,27,0,2082,2096,3,202, + 101,0,2083,2096,5,9,0,0,2084,2085,5,2,0,0,2085,2090,3,52,26,0,2086, + 2087,5,6,0,0,2087,2089,3,52,26,0,2088,2086,1,0,0,0,2089,2092,1,0, + 0,0,2090,2088,1,0,0,0,2090,2091,1,0,0,0,2091,2093,1,0,0,0,2092,2090, + 1,0,0,0,2093,2094,5,3,0,0,2094,2096,1,0,0,0,2095,2081,1,0,0,0,2095, + 2082,1,0,0,0,2095,2083,1,0,0,0,2095,2084,1,0,0,0,2095,2096,1,0,0, + 0,2096,119,1,0,0,0,2097,2099,5,46,0,0,2098,2100,3,122,61,0,2099, + 2098,1,0,0,0,2099,2100,1,0,0,0,2100,2101,1,0,0,0,2101,2103,5,92, + 0,0,2102,2104,3,294,147,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104, + 2105,1,0,0,0,2105,2171,3,772,386,0,2106,2108,5,2,0,0,2107,2109,3, + 126,63,0,2108,2107,1,0,0,0,2108,2109,1,0,0,0,2109,2110,1,0,0,0,2110, + 2112,5,3,0,0,2111,2113,3,164,82,0,2112,2111,1,0,0,0,2112,2113,1, + 0,0,0,2113,2115,1,0,0,0,2114,2116,3,166,83,0,2115,2114,1,0,0,0,2115, + 2116,1,0,0,0,2116,2118,1,0,0,0,2117,2119,3,170,85,0,2118,2117,1, + 0,0,0,2118,2119,1,0,0,0,2119,2121,1,0,0,0,2120,2122,3,172,86,0,2121, + 2120,1,0,0,0,2121,2122,1,0,0,0,2122,2124,1,0,0,0,2123,2125,3,174, + 87,0,2124,2123,1,0,0,0,2124,2125,1,0,0,0,2125,2127,1,0,0,0,2126, + 2128,3,176,88,0,2127,2126,1,0,0,0,2127,2128,1,0,0,0,2128,2172,1, + 0,0,0,2129,2130,5,275,0,0,2130,2132,3,316,158,0,2131,2133,3,124, + 62,0,2132,2131,1,0,0,0,2132,2133,1,0,0,0,2133,2135,1,0,0,0,2134, + 2136,3,166,83,0,2135,2134,1,0,0,0,2135,2136,1,0,0,0,2136,2138,1, + 0,0,0,2137,2139,3,170,85,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139, + 2141,1,0,0,0,2140,2142,3,172,86,0,2141,2140,1,0,0,0,2141,2142,1, + 0,0,0,2142,2144,1,0,0,0,2143,2145,3,174,87,0,2144,2143,1,0,0,0,2144, + 2145,1,0,0,0,2145,2147,1,0,0,0,2146,2148,3,176,88,0,2147,2146,1, + 0,0,0,2147,2148,1,0,0,0,2148,2172,1,0,0,0,2149,2150,5,285,0,0,2150, + 2151,5,275,0,0,2151,2153,3,780,390,0,2152,2154,3,124,62,0,2153,2152, + 1,0,0,0,2153,2154,1,0,0,0,2154,2155,1,0,0,0,2155,2157,3,106,53,0, + 2156,2158,3,166,83,0,2157,2156,1,0,0,0,2157,2158,1,0,0,0,2158,2160, + 1,0,0,0,2159,2161,3,170,85,0,2160,2159,1,0,0,0,2160,2161,1,0,0,0, + 2161,2163,1,0,0,0,2162,2164,3,172,86,0,2163,2162,1,0,0,0,2163,2164, + 1,0,0,0,2164,2166,1,0,0,0,2165,2167,3,174,87,0,2166,2165,1,0,0,0, + 2166,2167,1,0,0,0,2167,2169,1,0,0,0,2168,2170,3,176,88,0,2169,2168, + 1,0,0,0,2169,2170,1,0,0,0,2170,2172,1,0,0,0,2171,2106,1,0,0,0,2171, + 2129,1,0,0,0,2171,2149,1,0,0,0,2172,121,1,0,0,0,2173,2179,5,354, + 0,0,2174,2179,5,352,0,0,2175,2176,7,20,0,0,2176,2179,7,21,0,0,2177, + 2179,5,367,0,0,2178,2173,1,0,0,0,2178,2174,1,0,0,0,2178,2175,1,0, + 0,0,2178,2177,1,0,0,0,2179,123,1,0,0,0,2180,2181,5,2,0,0,2181,2186, + 3,130,65,0,2182,2183,5,6,0,0,2183,2185,3,130,65,0,2184,2182,1,0, + 0,0,2185,2188,1,0,0,0,2186,2184,1,0,0,0,2186,2187,1,0,0,0,2187,2189, + 1,0,0,0,2188,2186,1,0,0,0,2189,2190,5,3,0,0,2190,125,1,0,0,0,2191, + 2196,3,128,64,0,2192,2193,5,6,0,0,2193,2195,3,128,64,0,2194,2192, + 1,0,0,0,2195,2198,1,0,0,0,2196,2194,1,0,0,0,2196,2197,1,0,0,0,2197, + 127,1,0,0,0,2198,2196,1,0,0,0,2199,2215,3,132,66,0,2200,2201,5,120, + 0,0,2201,2206,3,780,390,0,2202,2203,7,22,0,0,2203,2205,3,140,70, + 0,2204,2202,1,0,0,0,2205,2208,1,0,0,0,2206,2204,1,0,0,0,2206,2207, + 1,0,0,0,2207,2215,1,0,0,0,2208,2206,1,0,0,0,2209,2210,5,45,0,0,2210, + 2212,3,818,409,0,2211,2209,1,0,0,0,2211,2212,1,0,0,0,2212,2213,1, + 0,0,0,2213,2215,3,142,71,0,2214,2199,1,0,0,0,2214,2200,1,0,0,0,2214, + 2211,1,0,0,0,2215,129,1,0,0,0,2216,2219,3,802,401,0,2217,2218,5, + 105,0,0,2218,2220,5,280,0,0,2219,2217,1,0,0,0,2219,2220,1,0,0,0, + 2220,2224,1,0,0,0,2221,2223,3,134,67,0,2222,2221,1,0,0,0,2223,2226, + 1,0,0,0,2224,2222,1,0,0,0,2224,2225,1,0,0,0,2225,2233,1,0,0,0,2226, + 2224,1,0,0,0,2227,2228,5,45,0,0,2228,2230,3,818,409,0,2229,2227, + 1,0,0,0,2229,2230,1,0,0,0,2230,2231,1,0,0,0,2231,2233,3,142,71,0, + 2232,2216,1,0,0,0,2232,2229,1,0,0,0,2233,131,1,0,0,0,2234,2235,3, + 802,401,0,2235,2237,3,652,326,0,2236,2238,3,220,110,0,2237,2236, + 1,0,0,0,2237,2238,1,0,0,0,2238,2248,1,0,0,0,2239,2246,5,345,0,0, + 2240,2247,5,544,0,0,2241,2247,5,205,0,0,2242,2247,5,545,0,0,2243, + 2247,5,546,0,0,2244,2247,5,53,0,0,2245,2247,3,818,409,0,2246,2240, + 1,0,0,0,2246,2241,1,0,0,0,2246,2242,1,0,0,0,2246,2243,1,0,0,0,2246, + 2244,1,0,0,0,2246,2245,1,0,0,0,2247,2249,1,0,0,0,2248,2239,1,0,0, + 0,2248,2249,1,0,0,0,2249,2252,1,0,0,0,2250,2251,5,543,0,0,2251,2253, + 3,818,409,0,2252,2250,1,0,0,0,2252,2253,1,0,0,0,2253,2255,1,0,0, + 0,2254,2256,3,98,49,0,2255,2254,1,0,0,0,2255,2256,1,0,0,0,2256,2259, + 1,0,0,0,2257,2258,5,105,0,0,2258,2260,5,280,0,0,2259,2257,1,0,0, + 0,2259,2260,1,0,0,0,2260,2264,1,0,0,0,2261,2263,3,134,67,0,2262, + 2261,1,0,0,0,2263,2266,1,0,0,0,2264,2262,1,0,0,0,2264,2265,1,0,0, + 0,2265,133,1,0,0,0,2266,2264,1,0,0,0,2267,2268,5,45,0,0,2268,2270, + 3,818,409,0,2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270,2271,1,0,0, + 0,2271,2276,3,136,68,0,2272,2274,5,77,0,0,2273,2272,1,0,0,0,2273, + 2274,1,0,0,0,2274,2275,1,0,0,0,2275,2277,5,54,0,0,2276,2273,1,0, + 0,0,2276,2277,1,0,0,0,2277,2280,1,0,0,0,2278,2279,5,69,0,0,2279, + 2281,7,9,0,0,2280,2278,1,0,0,0,2280,2281,1,0,0,0,2281,135,1,0,0, + 0,2282,2284,5,77,0,0,2283,2282,1,0,0,0,2283,2284,1,0,0,0,2284,2285, + 1,0,0,0,2285,2363,5,78,0,0,2286,2288,5,98,0,0,2287,2289,3,400,200, + 0,2288,2287,1,0,0,0,2288,2289,1,0,0,0,2289,2291,1,0,0,0,2290,2292, + 3,178,89,0,2291,2290,1,0,0,0,2291,2292,1,0,0,0,2292,2363,1,0,0,0, + 2293,2299,5,98,0,0,2294,2296,5,273,0,0,2295,2297,5,77,0,0,2296,2295, + 1,0,0,0,2296,2297,1,0,0,0,2297,2298,1,0,0,0,2298,2300,5,56,0,0,2299, + 2294,1,0,0,0,2299,2300,1,0,0,0,2300,2303,1,0,0,0,2301,2302,5,441, + 0,0,2302,2304,3,360,180,0,2303,2301,1,0,0,0,2303,2304,1,0,0,0,2304, + 2306,1,0,0,0,2305,2307,3,572,286,0,2306,2305,1,0,0,0,2306,2307,1, + 0,0,0,2307,2309,1,0,0,0,2308,2310,3,178,89,0,2309,2308,1,0,0,0,2309, + 2310,1,0,0,0,2310,2363,1,0,0,0,2311,2312,5,85,0,0,2312,2314,5,245, + 0,0,2313,2315,3,400,200,0,2314,2313,1,0,0,0,2314,2315,1,0,0,0,2315, + 2317,1,0,0,0,2316,2318,3,178,89,0,2317,2316,1,0,0,0,2317,2318,1, + 0,0,0,2318,2363,1,0,0,0,2319,2320,5,42,0,0,2320,2321,5,2,0,0,2321, + 2322,3,674,337,0,2322,2325,5,3,0,0,2323,2324,5,269,0,0,2324,2326, + 5,228,0,0,2325,2323,1,0,0,0,2325,2326,1,0,0,0,2326,2363,1,0,0,0, + 2327,2328,5,53,0,0,2328,2363,3,682,341,0,2329,2330,5,438,0,0,2330, + 2331,3,138,69,0,2331,2348,5,36,0,0,2332,2341,5,219,0,0,2333,2335, + 5,2,0,0,2334,2336,3,200,100,0,2335,2334,1,0,0,0,2336,2337,1,0,0, + 0,2337,2335,1,0,0,0,2337,2338,1,0,0,0,2338,2339,1,0,0,0,2339,2340, + 5,3,0,0,2340,2342,1,0,0,0,2341,2333,1,0,0,0,2341,2342,1,0,0,0,2342, + 2349,1,0,0,0,2343,2344,5,2,0,0,2344,2345,3,674,337,0,2345,2346,5, + 3,0,0,2346,2347,5,440,0,0,2347,2349,1,0,0,0,2348,2332,1,0,0,0,2348, + 2343,1,0,0,0,2349,2363,1,0,0,0,2350,2351,5,86,0,0,2351,2353,3,780, + 390,0,2352,2354,3,144,72,0,2353,2352,1,0,0,0,2353,2354,1,0,0,0,2354, + 2356,1,0,0,0,2355,2357,3,152,76,0,2356,2355,1,0,0,0,2356,2357,1, + 0,0,0,2357,2359,1,0,0,0,2358,2360,3,156,78,0,2359,2358,1,0,0,0,2359, + 2360,1,0,0,0,2360,2363,1,0,0,0,2361,2363,3,98,49,0,2362,2283,1,0, + 0,0,2362,2286,1,0,0,0,2362,2293,1,0,0,0,2362,2311,1,0,0,0,2362,2319, + 1,0,0,0,2362,2327,1,0,0,0,2362,2329,1,0,0,0,2362,2350,1,0,0,0,2362, + 2361,1,0,0,0,2363,137,1,0,0,0,2364,2368,5,139,0,0,2365,2366,5,147, + 0,0,2366,2368,5,53,0,0,2367,2364,1,0,0,0,2367,2365,1,0,0,0,2368, + 139,1,0,0,0,2369,2370,7,23,0,0,2370,141,1,0,0,0,2371,2372,5,42,0, + 0,2372,2373,5,2,0,0,2373,2374,3,674,337,0,2374,2378,5,3,0,0,2375, + 2377,3,272,136,0,2376,2375,1,0,0,0,2377,2380,1,0,0,0,2378,2376,1, + 0,0,0,2378,2379,1,0,0,0,2379,2468,1,0,0,0,2380,2378,1,0,0,0,2381, + 2385,5,98,0,0,2382,2383,5,85,0,0,2383,2385,5,245,0,0,2384,2381,1, + 0,0,0,2384,2382,1,0,0,0,2385,2409,1,0,0,0,2386,2388,3,144,72,0,2387, + 2389,3,150,75,0,2388,2387,1,0,0,0,2388,2389,1,0,0,0,2389,2391,1, + 0,0,0,2390,2392,3,400,200,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0, + 2392,2394,1,0,0,0,2393,2395,3,178,89,0,2394,2393,1,0,0,0,2394,2395, + 1,0,0,0,2395,2399,1,0,0,0,2396,2398,3,272,136,0,2397,2396,1,0,0, + 0,2398,2401,1,0,0,0,2399,2397,1,0,0,0,2399,2400,1,0,0,0,2400,2410, + 1,0,0,0,2401,2399,1,0,0,0,2402,2406,3,180,90,0,2403,2405,3,272,136, + 0,2404,2403,1,0,0,0,2405,2408,1,0,0,0,2406,2404,1,0,0,0,2406,2407, + 1,0,0,0,2407,2410,1,0,0,0,2408,2406,1,0,0,0,2409,2386,1,0,0,0,2409, + 2402,1,0,0,0,2410,2468,1,0,0,0,2411,2413,5,199,0,0,2412,2414,3,170, + 85,0,2413,2412,1,0,0,0,2413,2414,1,0,0,0,2414,2415,1,0,0,0,2415, + 2416,5,2,0,0,2416,2421,3,154,77,0,2417,2418,5,6,0,0,2418,2420,3, + 154,77,0,2419,2417,1,0,0,0,2420,2423,1,0,0,0,2421,2419,1,0,0,0,2421, + 2422,1,0,0,0,2422,2424,1,0,0,0,2423,2421,1,0,0,0,2424,2426,5,3,0, + 0,2425,2427,3,150,75,0,2426,2425,1,0,0,0,2426,2427,1,0,0,0,2427, + 2429,1,0,0,0,2428,2430,3,400,200,0,2429,2428,1,0,0,0,2429,2430,1, + 0,0,0,2430,2432,1,0,0,0,2431,2433,3,178,89,0,2432,2431,1,0,0,0,2432, + 2433,1,0,0,0,2433,2439,1,0,0,0,2434,2435,5,103,0,0,2435,2436,5,2, + 0,0,2436,2437,3,674,337,0,2437,2438,5,3,0,0,2438,2440,1,0,0,0,2439, + 2434,1,0,0,0,2439,2440,1,0,0,0,2440,2444,1,0,0,0,2441,2443,3,272, + 136,0,2442,2441,1,0,0,0,2443,2446,1,0,0,0,2444,2442,1,0,0,0,2444, + 2445,1,0,0,0,2445,2468,1,0,0,0,2446,2444,1,0,0,0,2447,2448,5,63, + 0,0,2448,2449,5,245,0,0,2449,2450,3,144,72,0,2450,2451,5,86,0,0, + 2451,2453,3,780,390,0,2452,2454,3,144,72,0,2453,2452,1,0,0,0,2453, + 2454,1,0,0,0,2454,2456,1,0,0,0,2455,2457,3,152,76,0,2456,2455,1, + 0,0,0,2456,2457,1,0,0,0,2457,2459,1,0,0,0,2458,2460,3,156,78,0,2459, + 2458,1,0,0,0,2459,2460,1,0,0,0,2460,2464,1,0,0,0,2461,2463,3,272, + 136,0,2462,2461,1,0,0,0,2463,2466,1,0,0,0,2464,2462,1,0,0,0,2464, + 2465,1,0,0,0,2465,2468,1,0,0,0,2466,2464,1,0,0,0,2467,2371,1,0,0, + 0,2467,2384,1,0,0,0,2467,2411,1,0,0,0,2467,2447,1,0,0,0,2468,143, + 1,0,0,0,2469,2470,5,2,0,0,2470,2471,3,148,74,0,2471,2472,5,3,0,0, + 2472,145,1,0,0,0,2473,2474,5,2,0,0,2474,2479,3,802,401,0,2475,2476, + 5,6,0,0,2476,2478,3,802,401,0,2477,2475,1,0,0,0,2478,2481,1,0,0, + 0,2479,2477,1,0,0,0,2479,2480,1,0,0,0,2480,2482,1,0,0,0,2481,2479, + 1,0,0,0,2482,2483,5,3,0,0,2483,147,1,0,0,0,2484,2489,3,800,400,0, + 2485,2486,5,6,0,0,2486,2488,3,800,400,0,2487,2485,1,0,0,0,2488,2491, + 1,0,0,0,2489,2487,1,0,0,0,2489,2490,1,0,0,0,2490,149,1,0,0,0,2491, + 2489,1,0,0,0,2492,2493,5,441,0,0,2493,2494,3,144,72,0,2494,151,1, + 0,0,0,2495,2496,5,258,0,0,2496,2497,7,24,0,0,2497,153,1,0,0,0,2498, + 2499,3,362,181,0,2499,2506,5,105,0,0,2500,2507,3,414,207,0,2501, + 2502,5,278,0,0,2502,2503,5,2,0,0,2503,2504,3,414,207,0,2504,2505, + 5,3,0,0,2505,2507,1,0,0,0,2506,2500,1,0,0,0,2506,2501,1,0,0,0,2507, + 155,1,0,0,0,2508,2510,3,158,79,0,2509,2511,3,160,80,0,2510,2509, + 1,0,0,0,2510,2511,1,0,0,0,2511,2517,1,0,0,0,2512,2514,3,160,80,0, + 2513,2515,3,158,79,0,2514,2513,1,0,0,0,2514,2515,1,0,0,0,2515,2517, + 1,0,0,0,2516,2508,1,0,0,0,2516,2512,1,0,0,0,2517,157,1,0,0,0,2518, + 2519,5,80,0,0,2519,2520,5,369,0,0,2520,2521,3,162,81,0,2521,159, + 1,0,0,0,2522,2523,5,80,0,0,2523,2524,5,182,0,0,2524,2525,3,162,81, + 0,2525,161,1,0,0,0,2526,2527,5,269,0,0,2527,2536,5,132,0,0,2528, + 2536,5,315,0,0,2529,2536,5,150,0,0,2530,2531,5,333,0,0,2531,2533, + 7,25,0,0,2532,2534,3,148,74,0,2533,2532,1,0,0,0,2533,2534,1,0,0, + 0,2534,2536,1,0,0,0,2535,2526,1,0,0,0,2535,2528,1,0,0,0,2535,2529, + 1,0,0,0,2535,2530,1,0,0,0,2536,163,1,0,0,0,2537,2538,5,238,0,0,2538, + 2539,5,2,0,0,2539,2540,3,760,380,0,2540,2541,5,3,0,0,2541,165,1, + 0,0,0,2542,2543,5,285,0,0,2543,2544,5,147,0,0,2544,2545,3,818,409, + 0,2545,2546,5,2,0,0,2546,2551,3,168,84,0,2547,2548,5,6,0,0,2548, + 2550,3,168,84,0,2549,2547,1,0,0,0,2550,2553,1,0,0,0,2551,2549,1, + 0,0,0,2551,2552,1,0,0,0,2552,2554,1,0,0,0,2553,2551,1,0,0,0,2554, + 2555,5,3,0,0,2555,167,1,0,0,0,2556,2563,3,800,400,0,2557,2563,3, + 688,344,0,2558,2559,5,2,0,0,2559,2560,3,674,337,0,2560,2561,5,3, + 0,0,2561,2563,1,0,0,0,2562,2556,1,0,0,0,2562,2557,1,0,0,0,2562,2558, + 1,0,0,0,2563,2565,1,0,0,0,2564,2566,3,98,49,0,2565,2564,1,0,0,0, + 2565,2566,1,0,0,0,2566,2568,1,0,0,0,2567,2569,3,316,158,0,2568,2567, + 1,0,0,0,2568,2569,1,0,0,0,2569,169,1,0,0,0,2570,2571,5,100,0,0,2571, + 2572,3,818,409,0,2572,171,1,0,0,0,2573,2574,5,105,0,0,2574,2578, + 3,100,50,0,2575,2576,7,26,0,0,2576,2578,5,277,0,0,2577,2573,1,0, + 0,0,2577,2575,1,0,0,0,2578,173,1,0,0,0,2579,2580,5,80,0,0,2580,2586, + 5,161,0,0,2581,2587,5,191,0,0,2582,2583,5,182,0,0,2583,2587,5,320, + 0,0,2584,2585,5,292,0,0,2585,2587,5,320,0,0,2586,2581,1,0,0,0,2586, + 2582,1,0,0,0,2586,2584,1,0,0,0,2587,175,1,0,0,0,2588,2589,5,351, + 0,0,2589,2590,3,770,385,0,2590,177,1,0,0,0,2591,2592,5,100,0,0,2592, + 2593,5,226,0,0,2593,2594,3,176,88,0,2594,179,1,0,0,0,2595,2596,5, + 100,0,0,2596,2597,5,226,0,0,2597,2598,3,818,409,0,2598,181,1,0,0, + 0,2599,2600,5,46,0,0,2600,2605,5,342,0,0,2601,2603,3,294,147,0,2602, + 2601,1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,0,0,2604,2606,3,316, + 158,0,2605,2602,1,0,0,0,2605,2606,1,0,0,0,2606,2608,1,0,0,0,2607, + 2609,3,144,72,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2610,1, + 0,0,0,2610,2620,5,80,0,0,2611,2616,3,732,366,0,2612,2613,5,6,0,0, + 2613,2615,3,732,366,0,2614,2612,1,0,0,0,2615,2618,1,0,0,0,2616,2614, + 1,0,0,0,2616,2617,1,0,0,0,2617,2621,1,0,0,0,2618,2616,1,0,0,0,2619, + 2621,3,730,365,0,2620,2611,1,0,0,0,2620,2619,1,0,0,0,2621,2622,1, + 0,0,0,2622,2623,3,610,305,0,2623,183,1,0,0,0,2624,2625,5,138,0,0, + 2625,2627,5,342,0,0,2626,2628,3,422,211,0,2627,2626,1,0,0,0,2627, + 2628,1,0,0,0,2628,2629,1,0,0,0,2629,2630,3,316,158,0,2630,2631,5, + 333,0,0,2631,2632,5,342,0,0,2632,2633,3,812,406,0,2633,185,1,0,0, + 0,2634,2636,5,46,0,0,2635,2637,3,122,61,0,2636,2635,1,0,0,0,2636, + 2637,1,0,0,0,2637,2638,1,0,0,0,2638,2640,5,92,0,0,2639,2641,3,294, + 147,0,2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0,2642, + 2643,3,188,94,0,2643,2644,5,36,0,0,2644,2646,3,560,280,0,2645,2647, + 3,190,95,0,2646,2645,1,0,0,0,2646,2647,1,0,0,0,2647,187,1,0,0,0, + 2648,2650,3,772,386,0,2649,2651,3,146,73,0,2650,2649,1,0,0,0,2650, + 2651,1,0,0,0,2651,2653,1,0,0,0,2652,2654,3,170,85,0,2653,2652,1, + 0,0,0,2653,2654,1,0,0,0,2654,2656,1,0,0,0,2655,2657,3,172,86,0,2656, + 2655,1,0,0,0,2656,2657,1,0,0,0,2657,2659,1,0,0,0,2658,2660,3,174, + 87,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0,2660,2662,1,0,0,0,2661, + 2663,3,176,88,0,2662,2661,1,0,0,0,2662,2663,1,0,0,0,2663,189,1,0, + 0,0,2664,2668,5,105,0,0,2665,2669,5,174,0,0,2666,2667,5,269,0,0, + 2667,2669,5,174,0,0,2668,2665,1,0,0,0,2668,2666,1,0,0,0,2669,191, + 1,0,0,0,2670,2672,5,46,0,0,2671,2673,5,367,0,0,2672,2671,1,0,0,0, + 2672,2673,1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,259,0,0,2675,2677, + 5,376,0,0,2676,2678,3,294,147,0,2677,2676,1,0,0,0,2677,2678,1,0, + 0,0,2678,2679,1,0,0,0,2679,2681,3,776,388,0,2680,2682,3,146,73,0, + 2681,2680,1,0,0,0,2681,2682,1,0,0,0,2682,2684,1,0,0,0,2683,2685, + 3,170,85,0,2684,2683,1,0,0,0,2684,2685,1,0,0,0,2685,2687,1,0,0,0, + 2686,2688,3,102,51,0,2687,2686,1,0,0,0,2687,2688,1,0,0,0,2688,2690, + 1,0,0,0,2689,2691,3,176,88,0,2690,2689,1,0,0,0,2690,2691,1,0,0,0, + 2691,2692,1,0,0,0,2692,2693,5,36,0,0,2693,2695,3,560,280,0,2694, + 2696,3,190,95,0,2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696,193,1,0, + 0,0,2697,2698,5,305,0,0,2698,2699,5,259,0,0,2699,2701,5,376,0,0, + 2700,2702,5,109,0,0,2701,2700,1,0,0,0,2701,2702,1,0,0,0,2702,2703, + 1,0,0,0,2703,2705,3,778,389,0,2704,2706,3,190,95,0,2705,2704,1,0, + 0,0,2705,2706,1,0,0,0,2706,195,1,0,0,0,2707,2709,5,46,0,0,2708,2710, + 3,122,61,0,2709,2708,1,0,0,0,2709,2710,1,0,0,0,2710,2711,1,0,0,0, + 2711,2713,5,328,0,0,2712,2714,3,294,147,0,2713,2712,1,0,0,0,2713, + 2714,1,0,0,0,2714,2715,1,0,0,0,2715,2721,3,780,390,0,2716,2718,3, + 200,100,0,2717,2716,1,0,0,0,2718,2719,1,0,0,0,2719,2717,1,0,0,0, + 2719,2720,1,0,0,0,2720,2722,1,0,0,0,2721,2717,1,0,0,0,2721,2722, + 1,0,0,0,2722,197,1,0,0,0,2723,2724,5,138,0,0,2724,2726,5,328,0,0, + 2725,2727,3,422,211,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727,2728, + 1,0,0,0,2728,2730,3,780,390,0,2729,2731,3,200,100,0,2730,2729,1, + 0,0,0,2731,2732,1,0,0,0,2732,2730,1,0,0,0,2732,2733,1,0,0,0,2733, + 199,1,0,0,0,2734,2735,5,36,0,0,2735,2768,3,654,327,0,2736,2738,5, + 148,0,0,2737,2739,3,202,101,0,2738,2737,1,0,0,0,2738,2739,1,0,0, + 0,2739,2768,1,0,0,0,2740,2742,5,225,0,0,2741,2743,5,147,0,0,2742, + 2741,1,0,0,0,2742,2743,1,0,0,0,2743,2744,1,0,0,0,2744,2768,3,202, + 101,0,2745,2746,7,27,0,0,2746,2768,3,202,101,0,2747,2748,5,269,0, + 0,2748,2768,7,28,0,0,2749,2750,5,281,0,0,2750,2751,5,147,0,0,2751, + 2768,3,800,400,0,2752,2753,5,328,0,0,2753,2754,5,266,0,0,2754,2768, + 3,316,158,0,2755,2757,5,340,0,0,2756,2758,5,105,0,0,2757,2756,1, + 0,0,0,2757,2758,1,0,0,0,2758,2759,1,0,0,0,2759,2768,3,202,101,0, + 2760,2762,5,314,0,0,2761,2763,5,105,0,0,2762,2761,1,0,0,0,2762,2763, + 1,0,0,0,2763,2765,1,0,0,0,2764,2766,3,202,101,0,2765,2764,1,0,0, + 0,2765,2766,1,0,0,0,2766,2768,1,0,0,0,2767,2734,1,0,0,0,2767,2736, + 1,0,0,0,2767,2740,1,0,0,0,2767,2745,1,0,0,0,2767,2747,1,0,0,0,2767, + 2749,1,0,0,0,2767,2752,1,0,0,0,2767,2755,1,0,0,0,2767,2760,1,0,0, + 0,2768,201,1,0,0,0,2769,2771,7,29,0,0,2770,2769,1,0,0,0,2770,2771, + 1,0,0,0,2771,2772,1,0,0,0,2772,2775,5,573,0,0,2773,2775,3,812,406, + 0,2774,2770,1,0,0,0,2774,2773,1,0,0,0,2775,203,1,0,0,0,2776,2778, + 5,46,0,0,2777,2779,3,366,183,0,2778,2777,1,0,0,0,2778,2779,1,0,0, + 0,2779,2781,1,0,0,0,2780,2782,5,359,0,0,2781,2780,1,0,0,0,2781,2782, + 1,0,0,0,2782,2784,1,0,0,0,2783,2785,5,295,0,0,2784,2783,1,0,0,0, + 2784,2785,1,0,0,0,2785,2786,1,0,0,0,2786,2787,5,247,0,0,2787,2800, + 3,818,409,0,2788,2789,5,215,0,0,2789,2792,3,316,158,0,2790,2791, + 5,239,0,0,2791,2793,3,316,158,0,2792,2790,1,0,0,0,2792,2793,1,0, + 0,0,2793,2798,1,0,0,0,2794,2795,5,373,0,0,2795,2799,3,316,158,0, + 2796,2797,5,269,0,0,2797,2799,5,373,0,0,2798,2794,1,0,0,0,2798,2796, + 1,0,0,0,2798,2799,1,0,0,0,2799,2801,1,0,0,0,2800,2788,1,0,0,0,2800, + 2801,1,0,0,0,2801,205,1,0,0,0,2802,2803,5,46,0,0,2803,2806,3,176, + 88,0,2804,2805,5,282,0,0,2805,2807,3,814,407,0,2806,2804,1,0,0,0, + 2806,2807,1,0,0,0,2807,2808,1,0,0,0,2808,2809,5,255,0,0,2809,2811, + 3,808,404,0,2810,2812,3,102,51,0,2811,2810,1,0,0,0,2811,2812,1,0, + 0,0,2812,207,1,0,0,0,2813,2814,5,46,0,0,2814,2816,5,204,0,0,2815, + 2817,3,294,147,0,2816,2815,1,0,0,0,2816,2817,1,0,0,0,2817,2818,1, + 0,0,0,2818,2820,3,818,409,0,2819,2821,5,105,0,0,2820,2819,1,0,0, + 0,2820,2821,1,0,0,0,2821,2829,1,0,0,0,2822,2823,5,323,0,0,2823,2828, + 3,790,395,0,2824,2825,7,30,0,0,2825,2828,3,58,29,0,2826,2828,5,150, + 0,0,2827,2822,1,0,0,0,2827,2824,1,0,0,0,2827,2826,1,0,0,0,2828,2831, + 1,0,0,0,2829,2827,1,0,0,0,2829,2830,1,0,0,0,2830,209,1,0,0,0,2831, + 2829,1,0,0,0,2832,2833,5,138,0,0,2833,2834,5,204,0,0,2834,2835,3, + 818,409,0,2835,2840,5,369,0,0,2836,2837,5,94,0,0,2837,2839,3,58, + 29,0,2838,2836,1,0,0,0,2839,2842,1,0,0,0,2840,2838,1,0,0,0,2840, + 2841,1,0,0,0,2841,211,1,0,0,0,2842,2840,1,0,0,0,2843,2844,5,138, + 0,0,2844,2845,5,204,0,0,2845,2846,3,818,409,0,2846,2879,7,6,0,0, + 2847,2848,5,443,0,0,2848,2849,5,62,0,0,2849,2850,3,652,326,0,2850, + 2851,5,247,0,0,2851,2852,3,818,409,0,2852,2880,1,0,0,0,2853,2854, + 5,442,0,0,2854,2880,3,374,187,0,2855,2856,5,296,0,0,2856,2880,3, + 378,189,0,2857,2858,5,278,0,0,2858,2859,7,31,0,0,2859,2860,3,316, + 158,0,2860,2861,3,170,85,0,2861,2880,1,0,0,0,2862,2863,5,278,0,0, + 2863,2880,3,416,208,0,2864,2865,5,211,0,0,2865,2880,3,382,191,0, + 2866,2867,7,32,0,0,2867,2880,3,652,326,0,2868,2869,5,41,0,0,2869, + 2870,5,2,0,0,2870,2871,3,652,326,0,2871,2872,5,36,0,0,2872,2873, + 3,652,326,0,2873,2874,5,3,0,0,2874,2880,1,0,0,0,2875,2876,5,136, + 0,0,2876,2880,3,394,197,0,2877,2880,3,312,156,0,2878,2880,3,310, + 155,0,2879,2847,1,0,0,0,2879,2853,1,0,0,0,2879,2855,1,0,0,0,2879, + 2857,1,0,0,0,2879,2862,1,0,0,0,2879,2864,1,0,0,0,2879,2866,1,0,0, + 0,2879,2868,1,0,0,0,2879,2875,1,0,0,0,2879,2877,1,0,0,0,2879,2878, + 1,0,0,0,2880,213,1,0,0,0,2881,2882,5,46,0,0,2882,2883,5,63,0,0,2883, + 2884,5,174,0,0,2884,2885,5,381,0,0,2885,2891,3,818,409,0,2886,2888, + 3,216,108,0,2887,2886,1,0,0,0,2888,2889,1,0,0,0,2889,2887,1,0,0, + 0,2889,2890,1,0,0,0,2890,2892,1,0,0,0,2891,2887,1,0,0,0,2891,2892, + 1,0,0,0,2892,2894,1,0,0,0,2893,2895,3,220,110,0,2894,2893,1,0,0, + 0,2894,2895,1,0,0,0,2895,215,1,0,0,0,2896,2898,7,33,0,0,2897,2899, + 3,316,158,0,2898,2897,1,0,0,0,2898,2899,1,0,0,0,2899,2903,1,0,0, + 0,2900,2901,5,269,0,0,2901,2903,7,33,0,0,2902,2896,1,0,0,0,2902, + 2900,1,0,0,0,2903,217,1,0,0,0,2904,2905,5,138,0,0,2905,2906,5,63, + 0,0,2906,2907,5,174,0,0,2907,2908,5,381,0,0,2908,2922,3,818,409, + 0,2909,2911,3,216,108,0,2910,2909,1,0,0,0,2911,2912,1,0,0,0,2912, + 2910,1,0,0,0,2912,2913,1,0,0,0,2913,2915,1,0,0,0,2914,2910,1,0,0, + 0,2914,2915,1,0,0,0,2915,2916,1,0,0,0,2916,2923,3,222,111,0,2917, + 2919,3,216,108,0,2918,2917,1,0,0,0,2919,2920,1,0,0,0,2920,2918,1, + 0,0,0,2920,2921,1,0,0,0,2921,2923,1,0,0,0,2922,2914,1,0,0,0,2922, + 2918,1,0,0,0,2923,219,1,0,0,0,2924,2925,5,280,0,0,2925,2926,5,2, + 0,0,2926,2931,3,226,113,0,2927,2928,5,6,0,0,2928,2930,3,226,113, + 0,2929,2927,1,0,0,0,2930,2933,1,0,0,0,2931,2929,1,0,0,0,2931,2932, + 1,0,0,0,2932,2934,1,0,0,0,2933,2931,1,0,0,0,2934,2935,5,3,0,0,2935, + 221,1,0,0,0,2936,2937,5,280,0,0,2937,2938,5,2,0,0,2938,2943,3,224, + 112,0,2939,2940,5,6,0,0,2940,2942,3,224,112,0,2941,2939,1,0,0,0, + 2942,2945,1,0,0,0,2943,2941,1,0,0,0,2943,2944,1,0,0,0,2944,2946, + 1,0,0,0,2945,2943,1,0,0,0,2946,2947,5,3,0,0,2947,223,1,0,0,0,2948, + 2949,7,34,0,0,2949,2950,3,226,113,0,2950,225,1,0,0,0,2951,2952,3, + 824,412,0,2952,2953,3,808,404,0,2953,227,1,0,0,0,2954,2955,5,46, + 0,0,2955,2957,5,331,0,0,2956,2958,3,294,147,0,2957,2956,1,0,0,0, + 2957,2958,1,0,0,0,2958,2959,1,0,0,0,2959,2962,3,818,409,0,2960,2961, + 5,360,0,0,2961,2963,3,808,404,0,2962,2960,1,0,0,0,2962,2963,1,0, + 0,0,2963,2965,1,0,0,0,2964,2966,3,230,115,0,2965,2964,1,0,0,0,2965, + 2966,1,0,0,0,2966,2967,1,0,0,0,2967,2968,5,63,0,0,2968,2969,5,174, + 0,0,2969,2970,5,381,0,0,2970,2972,3,818,409,0,2971,2973,3,220,110, + 0,2972,2971,1,0,0,0,2972,2973,1,0,0,0,2973,229,1,0,0,0,2974,2977, + 5,375,0,0,2975,2978,3,808,404,0,2976,2978,5,78,0,0,2977,2975,1,0, + 0,0,2977,2976,1,0,0,0,2978,231,1,0,0,0,2979,2980,5,138,0,0,2980, + 2981,5,331,0,0,2981,2987,3,818,409,0,2982,2988,3,222,111,0,2983, + 2985,3,230,115,0,2984,2986,3,222,111,0,2985,2984,1,0,0,0,2985,2986, + 1,0,0,0,2986,2988,1,0,0,0,2987,2982,1,0,0,0,2987,2983,1,0,0,0,2988, + 233,1,0,0,0,2989,2990,5,46,0,0,2990,2991,5,63,0,0,2991,2993,5,92, + 0,0,2992,2994,3,294,147,0,2993,2992,1,0,0,0,2993,2994,1,0,0,0,2994, + 2995,1,0,0,0,2995,2996,3,772,386,0,2996,2998,5,2,0,0,2997,2999,3, + 126,63,0,2998,2997,1,0,0,0,2998,2999,1,0,0,0,2999,3000,1,0,0,0,3000, + 3002,5,3,0,0,3001,3003,3,164,82,0,3002,3001,1,0,0,0,3002,3003,1, + 0,0,0,3003,3004,1,0,0,0,3004,3005,5,331,0,0,3005,3007,3,818,409, + 0,3006,3008,3,220,110,0,3007,3006,1,0,0,0,3007,3008,1,0,0,0,3008, + 3029,1,0,0,0,3009,3010,5,46,0,0,3010,3011,5,63,0,0,3011,3013,5,92, + 0,0,3012,3014,3,294,147,0,3013,3012,1,0,0,0,3013,3014,1,0,0,0,3014, + 3015,1,0,0,0,3015,3016,3,772,386,0,3016,3017,5,285,0,0,3017,3018, + 5,275,0,0,3018,3020,3,774,387,0,3019,3021,3,124,62,0,3020,3019,1, + 0,0,0,3020,3021,1,0,0,0,3021,3022,1,0,0,0,3022,3023,3,106,53,0,3023, + 3024,5,331,0,0,3024,3026,3,818,409,0,3025,3027,3,220,110,0,3026, + 3025,1,0,0,0,3026,3027,1,0,0,0,3027,3029,1,0,0,0,3028,2989,1,0,0, + 0,3028,3009,1,0,0,0,3029,235,1,0,0,0,3030,3031,5,444,0,0,3031,3032, + 5,63,0,0,3032,3033,5,323,0,0,3033,3043,3,790,395,0,3034,3035,5,74, + 0,0,3035,3038,5,94,0,0,3036,3038,5,59,0,0,3037,3034,1,0,0,0,3037, + 3036,1,0,0,0,3038,3039,1,0,0,0,3039,3040,5,2,0,0,3040,3041,3,628, + 314,0,3041,3042,5,3,0,0,3042,3044,1,0,0,0,3043,3037,1,0,0,0,3043, + 3044,1,0,0,0,3044,3045,1,0,0,0,3045,3046,5,64,0,0,3046,3047,5,331, + 0,0,3047,3048,3,818,409,0,3048,3049,5,71,0,0,3049,3051,3,818,409, + 0,3050,3052,3,220,110,0,3051,3050,1,0,0,0,3051,3052,1,0,0,0,3052, + 237,1,0,0,0,3053,3054,5,46,0,0,3054,3055,5,99,0,0,3055,3057,5,257, + 0,0,3056,3058,3,294,147,0,3057,3056,1,0,0,0,3057,3058,1,0,0,0,3058, + 3059,1,0,0,0,3059,3062,5,62,0,0,3060,3063,3,814,407,0,3061,3063, + 5,99,0,0,3062,3060,1,0,0,0,3062,3061,1,0,0,0,3063,3064,1,0,0,0,3064, + 3065,5,331,0,0,3065,3067,3,818,409,0,3066,3068,3,220,110,0,3067, + 3066,1,0,0,0,3067,3068,1,0,0,0,3068,239,1,0,0,0,3069,3070,5,138, + 0,0,3070,3071,5,99,0,0,3071,3072,5,257,0,0,3072,3075,5,62,0,0,3073, + 3076,3,814,407,0,3074,3076,5,99,0,0,3075,3073,1,0,0,0,3075,3074, + 1,0,0,0,3076,3077,1,0,0,0,3077,3078,5,331,0,0,3078,3079,3,818,409, + 0,3079,3080,3,222,111,0,3080,241,1,0,0,0,3081,3082,5,46,0,0,3082, + 3083,5,445,0,0,3083,3084,3,818,409,0,3084,3085,5,80,0,0,3085,3092, + 3,780,390,0,3086,3090,5,36,0,0,3087,3091,5,541,0,0,3088,3091,5,542, + 0,0,3089,3091,3,826,413,0,3090,3087,1,0,0,0,3090,3088,1,0,0,0,3090, + 3089,1,0,0,0,3091,3093,1,0,0,0,3092,3086,1,0,0,0,3092,3093,1,0,0, + 0,3093,3096,1,0,0,0,3094,3095,5,62,0,0,3095,3097,7,35,0,0,3096,3094, + 1,0,0,0,3096,3097,1,0,0,0,3097,3100,1,0,0,0,3098,3099,5,94,0,0,3099, + 3101,3,816,408,0,3100,3098,1,0,0,0,3100,3101,1,0,0,0,3101,3103,1, + 0,0,0,3102,3104,3,250,125,0,3103,3102,1,0,0,0,3103,3104,1,0,0,0, + 3104,3106,1,0,0,0,3105,3107,3,252,126,0,3106,3105,1,0,0,0,3106,3107, + 1,0,0,0,3107,243,1,0,0,0,3108,3109,5,138,0,0,3109,3110,5,445,0,0, + 3110,3111,3,818,409,0,3111,3112,5,80,0,0,3112,3115,3,780,390,0,3113, + 3114,5,94,0,0,3114,3116,3,816,408,0,3115,3113,1,0,0,0,3115,3116, + 1,0,0,0,3116,3118,1,0,0,0,3117,3119,3,250,125,0,3118,3117,1,0,0, + 0,3118,3119,1,0,0,0,3119,3121,1,0,0,0,3120,3122,3,252,126,0,3121, + 3120,1,0,0,0,3121,3122,1,0,0,0,3122,245,1,0,0,0,3123,3124,5,138, + 0,0,3124,3125,5,296,0,0,3125,3127,3,796,398,0,3126,3128,3,368,184, + 0,3127,3126,1,0,0,0,3127,3128,1,0,0,0,3128,3155,1,0,0,0,3129,3133, + 3,248,124,0,3130,3132,3,248,124,0,3131,3130,1,0,0,0,3132,3135,1, + 0,0,0,3133,3131,1,0,0,0,3133,3134,1,0,0,0,3134,3137,1,0,0,0,3135, + 3133,1,0,0,0,3136,3138,5,315,0,0,3137,3136,1,0,0,0,3137,3138,1,0, + 0,0,3138,3156,1,0,0,0,3139,3140,5,309,0,0,3140,3141,5,94,0,0,3141, + 3156,3,798,399,0,3142,3143,5,282,0,0,3143,3144,5,94,0,0,3144,3156, + 3,814,407,0,3145,3146,5,333,0,0,3146,3147,5,323,0,0,3147,3156,3, + 32,16,0,3148,3150,5,269,0,0,3149,3148,1,0,0,0,3149,3150,1,0,0,0, + 3150,3151,1,0,0,0,3151,3152,5,462,0,0,3152,3153,5,80,0,0,3153,3154, + 5,204,0,0,3154,3156,3,818,409,0,3155,3129,1,0,0,0,3155,3139,1,0, + 0,0,3155,3142,1,0,0,0,3155,3145,1,0,0,0,3155,3149,1,0,0,0,3156,247, + 1,0,0,0,3157,3159,5,205,0,0,3158,3157,1,0,0,0,3158,3159,1,0,0,0, + 3159,3160,1,0,0,0,3160,3161,5,327,0,0,3161,3168,5,243,0,0,3162,3164, + 5,205,0,0,3163,3162,1,0,0,0,3163,3164,1,0,0,0,3164,3165,1,0,0,0, + 3165,3166,5,327,0,0,3166,3168,5,181,0,0,3167,3158,1,0,0,0,3167,3163, + 1,0,0,0,3168,3187,1,0,0,0,3169,3170,5,333,0,0,3170,3171,3,818,409, + 0,3171,3174,7,36,0,0,3172,3175,3,818,409,0,3173,3175,5,53,0,0,3174, + 3172,1,0,0,0,3174,3173,1,0,0,0,3175,3187,1,0,0,0,3176,3177,5,333, + 0,0,3177,3178,3,818,409,0,3178,3179,5,64,0,0,3179,3180,5,434,0,0, + 3180,3187,1,0,0,0,3181,3184,5,313,0,0,3182,3185,3,818,409,0,3183, + 3185,5,30,0,0,3184,3182,1,0,0,0,3184,3183,1,0,0,0,3185,3187,1,0, + 0,0,3186,3167,1,0,0,0,3186,3169,1,0,0,0,3186,3176,1,0,0,0,3186,3181, + 1,0,0,0,3187,249,1,0,0,0,3188,3189,5,100,0,0,3189,3190,5,2,0,0,3190, + 3191,3,674,337,0,3191,3192,5,3,0,0,3192,251,1,0,0,0,3193,3194,5, + 105,0,0,3194,3195,5,42,0,0,3195,3196,5,2,0,0,3196,3197,3,674,337, + 0,3197,3198,5,3,0,0,3198,253,1,0,0,0,3199,3200,5,46,0,0,3200,3201, + 5,131,0,0,3201,3202,5,446,0,0,3202,3203,3,818,409,0,3203,3204,5, + 360,0,0,3204,3205,7,37,0,0,3205,3206,5,215,0,0,3206,3207,3,316,158, + 0,3207,255,1,0,0,0,3208,3210,5,46,0,0,3209,3211,3,366,183,0,3210, + 3209,1,0,0,0,3210,3211,1,0,0,0,3211,3212,1,0,0,0,3212,3213,5,357, + 0,0,3213,3214,3,818,409,0,3214,3215,3,258,129,0,3215,3216,3,260, + 130,0,3216,3217,5,80,0,0,3217,3229,3,774,387,0,3218,3225,5,447,0, + 0,3219,3220,7,38,0,0,3220,3222,7,39,0,0,3221,3223,5,36,0,0,3222, + 3221,1,0,0,0,3222,3223,1,0,0,0,3223,3224,1,0,0,0,3224,3226,3,818, + 409,0,3225,3219,1,0,0,0,3226,3227,1,0,0,0,3227,3225,1,0,0,0,3227, + 3228,1,0,0,0,3228,3230,1,0,0,0,3229,3218,1,0,0,0,3229,3230,1,0,0, + 0,3230,3236,1,0,0,0,3231,3233,5,62,0,0,3232,3234,5,192,0,0,3233, + 3232,1,0,0,0,3233,3234,1,0,0,0,3234,3235,1,0,0,0,3235,3237,7,40, + 0,0,3236,3231,1,0,0,0,3236,3237,1,0,0,0,3237,3239,1,0,0,0,3238,3240, + 3,264,132,0,3239,3238,1,0,0,0,3239,3240,1,0,0,0,3240,3241,1,0,0, + 0,3241,3242,5,202,0,0,3242,3243,3,266,133,0,3243,3244,5,2,0,0,3244, + 3245,3,268,134,0,3245,3246,5,3,0,0,3246,3287,1,0,0,0,3247,3249,5, + 46,0,0,3248,3250,3,366,183,0,3249,3248,1,0,0,0,3249,3250,1,0,0,0, + 3250,3252,1,0,0,0,3251,3253,5,45,0,0,3252,3251,1,0,0,0,3252,3253, + 1,0,0,0,3253,3254,1,0,0,0,3254,3255,5,357,0,0,3255,3256,3,818,409, + 0,3256,3257,3,258,129,0,3257,3258,3,260,130,0,3258,3259,5,80,0,0, + 3259,3262,3,774,387,0,3260,3261,5,64,0,0,3261,3263,3,780,390,0,3262, + 3260,1,0,0,0,3262,3263,1,0,0,0,3263,3267,1,0,0,0,3264,3266,3,272, + 136,0,3265,3264,1,0,0,0,3266,3269,1,0,0,0,3267,3265,1,0,0,0,3267, + 3268,1,0,0,0,3268,3275,1,0,0,0,3269,3267,1,0,0,0,3270,3272,5,62, + 0,0,3271,3273,5,192,0,0,3272,3271,1,0,0,0,3272,3273,1,0,0,0,3273, + 3274,1,0,0,0,3274,3276,7,40,0,0,3275,3270,1,0,0,0,3275,3276,1,0, + 0,0,3276,3278,1,0,0,0,3277,3279,3,264,132,0,3278,3277,1,0,0,0,3278, + 3279,1,0,0,0,3279,3280,1,0,0,0,3280,3281,5,202,0,0,3281,3282,3,266, + 133,0,3282,3283,5,2,0,0,3283,3284,3,268,134,0,3284,3285,5,3,0,0, + 3285,3287,1,0,0,0,3286,3208,1,0,0,0,3286,3247,1,0,0,0,3287,257,1, + 0,0,0,3288,3293,5,145,0,0,3289,3293,5,135,0,0,3290,3291,5,242,0, + 0,3291,3293,5,275,0,0,3292,3288,1,0,0,0,3292,3289,1,0,0,0,3292,3290, + 1,0,0,0,3293,259,1,0,0,0,3294,3299,3,262,131,0,3295,3296,5,82,0, + 0,3296,3298,3,262,131,0,3297,3295,1,0,0,0,3298,3301,1,0,0,0,3299, + 3297,1,0,0,0,3299,3300,1,0,0,0,3300,261,1,0,0,0,3301,3299,1,0,0, + 0,3302,3311,5,241,0,0,3303,3311,5,182,0,0,3304,3307,5,369,0,0,3305, + 3306,5,275,0,0,3306,3308,3,148,74,0,3307,3305,1,0,0,0,3307,3308, + 1,0,0,0,3308,3311,1,0,0,0,3309,3311,5,358,0,0,3310,3302,1,0,0,0, + 3310,3303,1,0,0,0,3310,3304,1,0,0,0,3310,3309,1,0,0,0,3311,263,1, + 0,0,0,3312,3313,5,102,0,0,3313,3314,5,2,0,0,3314,3315,3,674,337, + 0,3315,3316,5,3,0,0,3316,265,1,0,0,0,3317,3318,5,211,0,0,3318,3322, + 3,806,403,0,3319,3320,5,296,0,0,3320,3322,3,796,398,0,3321,3317, + 1,0,0,0,3321,3319,1,0,0,0,3322,267,1,0,0,0,3323,3326,3,270,135,0, + 3324,3326,1,0,0,0,3325,3323,1,0,0,0,3325,3324,1,0,0,0,3326,3331, + 1,0,0,0,3327,3328,5,6,0,0,3328,3330,3,270,135,0,3329,3327,1,0,0, + 0,3330,3333,1,0,0,0,3331,3329,1,0,0,0,3331,3332,1,0,0,0,3332,269, + 1,0,0,0,3333,3331,1,0,0,0,3334,3339,5,571,0,0,3335,3339,5,573,0, + 0,3336,3339,3,808,404,0,3337,3339,3,824,412,0,3338,3334,1,0,0,0, + 3338,3335,1,0,0,0,3338,3336,1,0,0,0,3338,3337,1,0,0,0,3339,271,1, + 0,0,0,3340,3342,5,77,0,0,3341,3340,1,0,0,0,3341,3342,1,0,0,0,3342, + 3343,1,0,0,0,3343,3351,5,54,0,0,3344,3345,5,69,0,0,3345,3351,7,9, + 0,0,3346,3347,5,77,0,0,3347,3351,5,371,0,0,3348,3349,5,269,0,0,3349, + 3351,5,228,0,0,3350,3341,1,0,0,0,3350,3344,1,0,0,0,3350,3346,1,0, + 0,0,3350,3348,1,0,0,0,3351,273,1,0,0,0,3352,3353,5,46,0,0,3353,3354, + 5,198,0,0,3354,3355,5,357,0,0,3355,3356,3,818,409,0,3356,3357,5, + 80,0,0,3357,3367,3,824,412,0,3358,3359,5,102,0,0,3359,3364,3,276, + 138,0,3360,3361,5,33,0,0,3361,3363,3,276,138,0,3362,3360,1,0,0,0, + 3363,3366,1,0,0,0,3364,3362,1,0,0,0,3364,3365,1,0,0,0,3365,3368, + 1,0,0,0,3366,3364,1,0,0,0,3367,3358,1,0,0,0,3367,3368,1,0,0,0,3368, + 3369,1,0,0,0,3369,3370,5,202,0,0,3370,3371,3,266,133,0,3371,3372, + 5,2,0,0,3372,3373,5,3,0,0,3373,275,1,0,0,0,3374,3375,3,818,409,0, + 3375,3376,5,68,0,0,3376,3377,5,2,0,0,3377,3381,3,808,404,0,3378, + 3380,3,462,231,0,3379,3378,1,0,0,0,3380,3383,1,0,0,0,3381,3379,1, + 0,0,0,3381,3382,1,0,0,0,3382,3384,1,0,0,0,3383,3381,1,0,0,0,3384, + 3385,5,3,0,0,3385,277,1,0,0,0,3386,3387,5,138,0,0,3387,3388,5,198, + 0,0,3388,3389,5,357,0,0,3389,3395,3,818,409,0,3390,3392,5,193,0, + 0,3391,3393,7,14,0,0,3392,3391,1,0,0,0,3392,3393,1,0,0,0,3393,3396, + 1,0,0,0,3394,3396,5,186,0,0,3395,3390,1,0,0,0,3395,3394,1,0,0,0, + 3396,279,1,0,0,0,3397,3398,5,46,0,0,3398,3399,5,140,0,0,3399,3400, + 3,316,158,0,3400,3401,5,42,0,0,3401,3402,5,2,0,0,3402,3403,3,674, + 337,0,3403,3407,5,3,0,0,3404,3406,3,272,136,0,3405,3404,1,0,0,0, + 3406,3409,1,0,0,0,3407,3405,1,0,0,0,3407,3408,1,0,0,0,3408,281,1, + 0,0,0,3409,3407,1,0,0,0,3410,3412,5,46,0,0,3411,3413,3,366,183,0, + 3412,3411,1,0,0,0,3412,3413,1,0,0,0,3413,3414,1,0,0,0,3414,3415, + 5,136,0,0,3415,3430,3,806,403,0,3416,3417,3,392,196,0,3417,3418, + 3,284,142,0,3418,3431,1,0,0,0,3419,3420,5,2,0,0,3420,3425,3,290, + 145,0,3421,3422,5,6,0,0,3422,3424,3,290,145,0,3423,3421,1,0,0,0, + 3424,3427,1,0,0,0,3425,3423,1,0,0,0,3425,3426,1,0,0,0,3426,3428, + 1,0,0,0,3427,3425,1,0,0,0,3428,3429,5,3,0,0,3429,3431,1,0,0,0,3430, + 3416,1,0,0,0,3430,3419,1,0,0,0,3431,3489,1,0,0,0,3432,3433,5,46, + 0,0,3433,3434,5,278,0,0,3434,3435,3,414,207,0,3435,3436,3,284,142, + 0,3436,3489,1,0,0,0,3437,3438,5,46,0,0,3438,3439,5,360,0,0,3439, + 3440,3,316,158,0,3440,3458,5,36,0,0,3441,3443,5,2,0,0,3442,3444, + 3,642,321,0,3443,3442,1,0,0,0,3443,3444,1,0,0,0,3444,3445,1,0,0, + 0,3445,3459,5,3,0,0,3446,3447,5,196,0,0,3447,3455,5,2,0,0,3448,3452, + 3,808,404,0,3449,3451,3,462,231,0,3450,3449,1,0,0,0,3451,3454,1, + 0,0,0,3452,3450,1,0,0,0,3452,3453,1,0,0,0,3453,3456,1,0,0,0,3454, + 3452,1,0,0,0,3455,3448,1,0,0,0,3455,3456,1,0,0,0,3456,3457,1,0,0, + 0,3457,3459,5,3,0,0,3458,3441,1,0,0,0,3458,3446,1,0,0,0,3459,3489, + 1,0,0,0,3460,3461,5,46,0,0,3461,3462,5,360,0,0,3462,3468,3,316,158, + 0,3463,3464,5,36,0,0,3464,3466,5,299,0,0,3465,3463,1,0,0,0,3465, + 3466,1,0,0,0,3466,3467,1,0,0,0,3467,3469,3,284,142,0,3468,3465,1, + 0,0,0,3468,3469,1,0,0,0,3469,3489,1,0,0,0,3470,3471,5,46,0,0,3471, + 3472,5,355,0,0,3472,3473,5,325,0,0,3473,3474,7,41,0,0,3474,3475, + 3,316,158,0,3475,3476,3,284,142,0,3476,3489,1,0,0,0,3477,3478,5, + 46,0,0,3478,3480,5,108,0,0,3479,3481,3,294,147,0,3480,3479,1,0,0, + 0,3480,3481,1,0,0,0,3481,3482,1,0,0,0,3482,3486,3,316,158,0,3483, + 3487,3,284,142,0,3484,3485,5,64,0,0,3485,3487,3,316,158,0,3486,3483, + 1,0,0,0,3486,3484,1,0,0,0,3487,3489,1,0,0,0,3488,3410,1,0,0,0,3488, + 3432,1,0,0,0,3488,3437,1,0,0,0,3488,3460,1,0,0,0,3488,3470,1,0,0, + 0,3488,3477,1,0,0,0,3489,283,1,0,0,0,3490,3491,5,2,0,0,3491,3496, + 3,286,143,0,3492,3493,5,6,0,0,3493,3495,3,286,143,0,3494,3492,1, + 0,0,0,3495,3498,1,0,0,0,3496,3494,1,0,0,0,3496,3497,1,0,0,0,3497, + 3499,1,0,0,0,3498,3496,1,0,0,0,3499,3500,5,3,0,0,3500,285,1,0,0, + 0,3501,3504,3,824,412,0,3502,3503,5,10,0,0,3503,3505,3,288,144,0, + 3504,3502,1,0,0,0,3504,3505,1,0,0,0,3505,287,1,0,0,0,3506,3513,3, + 388,194,0,3507,3513,3,834,417,0,3508,3513,3,726,363,0,3509,3513, + 3,202,101,0,3510,3513,3,808,404,0,3511,3513,5,407,0,0,3512,3506, + 1,0,0,0,3512,3507,1,0,0,0,3512,3508,1,0,0,0,3512,3509,1,0,0,0,3512, + 3510,1,0,0,0,3512,3511,1,0,0,0,3513,289,1,0,0,0,3514,3515,3,826, + 413,0,3515,3516,5,10,0,0,3516,3517,3,288,144,0,3517,291,1,0,0,0, + 3518,3519,5,138,0,0,3519,3520,5,360,0,0,3520,3521,3,316,158,0,3521, + 3522,5,133,0,0,3522,3524,5,450,0,0,3523,3525,3,294,147,0,3524,3523, + 1,0,0,0,3524,3525,1,0,0,0,3525,3526,1,0,0,0,3526,3529,3,808,404, + 0,3527,3528,7,42,0,0,3528,3530,3,808,404,0,3529,3527,1,0,0,0,3529, + 3530,1,0,0,0,3530,3541,1,0,0,0,3531,3532,5,138,0,0,3532,3533,5,360, + 0,0,3533,3534,3,316,158,0,3534,3535,5,309,0,0,3535,3536,5,450,0, + 0,3536,3537,3,808,404,0,3537,3538,5,94,0,0,3538,3539,3,808,404,0, + 3539,3541,1,0,0,0,3540,3518,1,0,0,0,3540,3531,1,0,0,0,3541,293,1, + 0,0,0,3542,3543,5,220,0,0,3543,3544,5,77,0,0,3544,3545,5,396,0,0, + 3545,295,1,0,0,0,3546,3547,5,46,0,0,3547,3548,5,278,0,0,3548,3549, + 5,156,0,0,3549,3551,3,316,158,0,3550,3552,5,53,0,0,3551,3550,1,0, + 0,0,3551,3552,1,0,0,0,3552,3553,1,0,0,0,3553,3554,5,62,0,0,3554, + 3555,5,360,0,0,3555,3556,3,652,326,0,3556,3559,3,170,85,0,3557,3558, + 5,206,0,0,3558,3560,3,316,158,0,3559,3557,1,0,0,0,3559,3560,1,0, + 0,0,3560,3561,1,0,0,0,3561,3562,5,36,0,0,3562,3567,3,298,149,0,3563, + 3564,5,6,0,0,3564,3566,3,298,149,0,3565,3563,1,0,0,0,3566,3569,1, + 0,0,0,3567,3565,1,0,0,0,3567,3568,1,0,0,0,3568,297,1,0,0,0,3569, + 3567,1,0,0,0,3570,3571,5,278,0,0,3571,3572,5,571,0,0,3572,3574,3, + 414,207,0,3573,3575,3,412,206,0,3574,3573,1,0,0,0,3574,3575,1,0, + 0,0,3575,3583,1,0,0,0,3576,3581,5,62,0,0,3577,3582,5,325,0,0,3578, + 3579,5,83,0,0,3579,3580,5,147,0,0,3580,3582,3,316,158,0,3581,3577, + 1,0,0,0,3581,3578,1,0,0,0,3582,3584,1,0,0,0,3583,3576,1,0,0,0,3583, + 3584,1,0,0,0,3584,3586,1,0,0,0,3585,3587,5,302,0,0,3586,3585,1,0, + 0,0,3586,3587,1,0,0,0,3587,3597,1,0,0,0,3588,3589,5,211,0,0,3589, + 3591,5,571,0,0,3590,3592,3,528,264,0,3591,3590,1,0,0,0,3591,3592, + 1,0,0,0,3592,3593,1,0,0,0,3593,3597,3,382,191,0,3594,3595,5,345, + 0,0,3595,3597,3,652,326,0,3596,3570,1,0,0,0,3596,3588,1,0,0,0,3596, + 3594,1,0,0,0,3597,299,1,0,0,0,3598,3599,5,46,0,0,3599,3600,5,278, + 0,0,3600,3601,5,206,0,0,3601,3602,3,316,158,0,3602,3603,3,170,85, + 0,3603,301,1,0,0,0,3604,3605,5,138,0,0,3605,3606,5,278,0,0,3606, + 3607,5,206,0,0,3607,3608,3,316,158,0,3608,3627,3,170,85,0,3609,3610, + 5,133,0,0,3610,3615,3,298,149,0,3611,3612,5,6,0,0,3612,3614,3,298, + 149,0,3613,3611,1,0,0,0,3614,3617,1,0,0,0,3615,3613,1,0,0,0,3615, + 3616,1,0,0,0,3616,3628,1,0,0,0,3617,3615,1,0,0,0,3618,3619,5,191, + 0,0,3619,3624,3,304,152,0,3620,3621,5,6,0,0,3621,3623,3,304,152, + 0,3622,3620,1,0,0,0,3623,3626,1,0,0,0,3624,3622,1,0,0,0,3624,3625, + 1,0,0,0,3625,3628,1,0,0,0,3626,3624,1,0,0,0,3627,3609,1,0,0,0,3627, + 3618,1,0,0,0,3628,303,1,0,0,0,3629,3630,7,43,0,0,3630,3631,5,571, + 0,0,3631,3632,3,528,264,0,3632,305,1,0,0,0,3633,3634,5,301,0,0,3634, + 3635,5,281,0,0,3635,3636,5,147,0,0,3636,3637,3,816,408,0,3637,3638, + 5,94,0,0,3638,3639,3,814,407,0,3639,307,1,0,0,0,3640,3663,5,191, + 0,0,3641,3664,5,328,0,0,3642,3664,5,226,0,0,3643,3664,5,108,0,0, + 3644,3664,5,168,0,0,3645,3664,5,342,0,0,3646,3664,5,452,0,0,3647, + 3664,5,331,0,0,3648,3649,5,131,0,0,3649,3664,5,446,0,0,3650,3651, + 5,198,0,0,3651,3664,5,357,0,0,3652,3664,5,204,0,0,3653,3655,5,295, + 0,0,3654,3653,1,0,0,0,3654,3655,1,0,0,0,3655,3656,1,0,0,0,3656,3664, + 5,247,0,0,3657,3658,5,63,0,0,3658,3659,5,174,0,0,3659,3664,5,381, + 0,0,3660,3661,5,355,0,0,3661,3662,5,325,0,0,3662,3664,7,41,0,0,3663, + 3641,1,0,0,0,3663,3642,1,0,0,0,3663,3643,1,0,0,0,3663,3644,1,0,0, + 0,3663,3645,1,0,0,0,3663,3646,1,0,0,0,3663,3647,1,0,0,0,3663,3648, + 1,0,0,0,3663,3650,1,0,0,0,3663,3652,1,0,0,0,3663,3654,1,0,0,0,3663, + 3657,1,0,0,0,3663,3660,1,0,0,0,3664,3666,1,0,0,0,3665,3667,3,422, + 211,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0,3667,3668,1,0,0,0,3668, + 3670,3,784,392,0,3669,3671,3,96,48,0,3670,3669,1,0,0,0,3670,3671, + 1,0,0,0,3671,3848,1,0,0,0,3672,3674,5,191,0,0,3673,3675,5,259,0, + 0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3678, + 5,376,0,0,3677,3679,3,422,211,0,3678,3677,1,0,0,0,3678,3679,1,0, + 0,0,3679,3680,1,0,0,0,3680,3685,3,778,389,0,3681,3682,5,6,0,0,3682, + 3684,3,778,389,0,3683,3681,1,0,0,0,3684,3687,1,0,0,0,3685,3683,1, + 0,0,0,3685,3686,1,0,0,0,3686,3689,1,0,0,0,3687,3685,1,0,0,0,3688, + 3690,3,96,48,0,3689,3688,1,0,0,0,3689,3690,1,0,0,0,3690,3848,1,0, + 0,0,3691,3693,5,191,0,0,3692,3694,5,63,0,0,3693,3692,1,0,0,0,3693, + 3694,1,0,0,0,3694,3695,1,0,0,0,3695,3697,5,92,0,0,3696,3698,3,422, + 211,0,3697,3696,1,0,0,0,3697,3698,1,0,0,0,3698,3699,1,0,0,0,3699, + 3701,3,762,381,0,3700,3702,3,96,48,0,3701,3700,1,0,0,0,3701,3702, + 1,0,0,0,3702,3848,1,0,0,0,3703,3704,5,191,0,0,3704,3706,5,323,0, + 0,3705,3707,3,422,211,0,3706,3705,1,0,0,0,3706,3707,1,0,0,0,3707, + 3708,1,0,0,0,3708,3710,3,764,382,0,3709,3711,3,96,48,0,3710,3709, + 1,0,0,0,3710,3711,1,0,0,0,3711,3848,1,0,0,0,3712,3713,5,191,0,0, + 3713,3715,7,44,0,0,3714,3716,3,422,211,0,3715,3714,1,0,0,0,3715, + 3716,1,0,0,0,3716,3717,1,0,0,0,3717,3718,3,818,409,0,3718,3719,5, + 80,0,0,3719,3721,3,316,158,0,3720,3722,3,96,48,0,3721,3720,1,0,0, + 0,3721,3722,1,0,0,0,3722,3848,1,0,0,0,3723,3724,5,191,0,0,3724,3726, + 7,32,0,0,3725,3727,3,422,211,0,3726,3725,1,0,0,0,3726,3727,1,0,0, + 0,3727,3728,1,0,0,0,3728,3733,3,652,326,0,3729,3730,5,6,0,0,3730, + 3732,3,652,326,0,3731,3729,1,0,0,0,3732,3735,1,0,0,0,3733,3731,1, + 0,0,0,3733,3734,1,0,0,0,3734,3737,1,0,0,0,3735,3733,1,0,0,0,3736, + 3738,3,96,48,0,3737,3736,1,0,0,0,3737,3738,1,0,0,0,3738,3848,1,0, + 0,0,3739,3740,5,191,0,0,3740,3741,5,226,0,0,3741,3743,5,109,0,0, + 3742,3744,3,422,211,0,3743,3742,1,0,0,0,3743,3744,1,0,0,0,3744,3745, + 1,0,0,0,3745,3747,3,314,157,0,3746,3748,3,96,48,0,3747,3746,1,0, + 0,0,3747,3748,1,0,0,0,3748,3848,1,0,0,0,3749,3750,5,191,0,0,3750, + 3752,5,41,0,0,3751,3753,3,422,211,0,3752,3751,1,0,0,0,3752,3753, + 1,0,0,0,3753,3754,1,0,0,0,3754,3755,5,2,0,0,3755,3756,3,652,326, + 0,3756,3757,5,36,0,0,3757,3758,3,652,326,0,3758,3760,5,3,0,0,3759, + 3761,3,96,48,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3848,1,0, + 0,0,3762,3763,5,191,0,0,3763,3764,5,278,0,0,3764,3766,7,31,0,0,3765, + 3767,3,422,211,0,3766,3765,1,0,0,0,3766,3767,1,0,0,0,3767,3768,1, + 0,0,0,3768,3769,3,316,158,0,3769,3771,3,170,85,0,3770,3772,3,96, + 48,0,3771,3770,1,0,0,0,3771,3772,1,0,0,0,3772,3848,1,0,0,0,3773, + 3774,5,191,0,0,3774,3775,5,281,0,0,3775,3776,5,147,0,0,3776,3778, + 3,816,408,0,3777,3779,3,96,48,0,3778,3777,1,0,0,0,3778,3779,1,0, + 0,0,3779,3848,1,0,0,0,3780,3781,5,191,0,0,3781,3783,5,451,0,0,3782, + 3784,3,422,211,0,3783,3782,1,0,0,0,3783,3784,1,0,0,0,3784,3785,1, + 0,0,0,3785,3787,3,818,409,0,3786,3788,3,96,48,0,3787,3786,1,0,0, + 0,3787,3788,1,0,0,0,3788,3848,1,0,0,0,3789,3790,5,191,0,0,3790,3792, + 5,351,0,0,3791,3793,3,422,211,0,3792,3791,1,0,0,0,3792,3793,1,0, + 0,0,3793,3794,1,0,0,0,3794,3848,3,770,385,0,3795,3796,5,191,0,0, + 3796,3798,5,443,0,0,3797,3799,3,422,211,0,3798,3797,1,0,0,0,3798, + 3799,1,0,0,0,3799,3800,1,0,0,0,3800,3801,5,62,0,0,3801,3802,3,652, + 326,0,3802,3803,5,247,0,0,3803,3805,3,818,409,0,3804,3806,3,96,48, + 0,3805,3804,1,0,0,0,3805,3806,1,0,0,0,3806,3848,1,0,0,0,3807,3808, + 5,191,0,0,3808,3810,7,45,0,0,3809,3811,3,422,211,0,3810,3809,1,0, + 0,0,3810,3811,1,0,0,0,3811,3812,1,0,0,0,3812,3848,3,816,408,0,3813, + 3814,5,191,0,0,3814,3815,5,99,0,0,3815,3817,5,257,0,0,3816,3818, + 3,422,211,0,3817,3816,1,0,0,0,3817,3818,1,0,0,0,3818,3819,1,0,0, + 0,3819,3822,5,62,0,0,3820,3823,3,814,407,0,3821,3823,5,99,0,0,3822, + 3820,1,0,0,0,3822,3821,1,0,0,0,3823,3824,1,0,0,0,3824,3825,5,331, + 0,0,3825,3848,3,818,409,0,3826,3827,5,191,0,0,3827,3829,5,175,0, + 0,3828,3830,3,422,211,0,3829,3828,1,0,0,0,3829,3830,1,0,0,0,3830, + 3831,1,0,0,0,3831,3845,3,788,394,0,3832,3834,5,105,0,0,3833,3832, + 1,0,0,0,3833,3834,1,0,0,0,3834,3835,1,0,0,0,3835,3836,5,2,0,0,3836, + 3841,5,209,0,0,3837,3838,5,6,0,0,3838,3840,5,209,0,0,3839,3837,1, + 0,0,0,3840,3843,1,0,0,0,3841,3839,1,0,0,0,3841,3842,1,0,0,0,3842, + 3844,1,0,0,0,3843,3841,1,0,0,0,3844,3846,5,3,0,0,3845,3833,1,0,0, + 0,3845,3846,1,0,0,0,3846,3848,1,0,0,0,3847,3640,1,0,0,0,3847,3672, + 1,0,0,0,3847,3691,1,0,0,0,3847,3703,1,0,0,0,3847,3712,1,0,0,0,3847, + 3723,1,0,0,0,3847,3739,1,0,0,0,3847,3749,1,0,0,0,3847,3762,1,0,0, + 0,3847,3773,1,0,0,0,3847,3780,1,0,0,0,3847,3789,1,0,0,0,3847,3795, + 1,0,0,0,3847,3807,1,0,0,0,3847,3813,1,0,0,0,3847,3826,1,0,0,0,3848, + 309,1,0,0,0,3849,3851,5,63,0,0,3850,3849,1,0,0,0,3850,3851,1,0,0, + 0,3851,3852,1,0,0,0,3852,3853,5,92,0,0,3853,3866,3,774,387,0,3854, + 3856,5,259,0,0,3855,3854,1,0,0,0,3855,3856,1,0,0,0,3856,3857,1,0, + 0,0,3857,3858,5,376,0,0,3858,3866,3,778,389,0,3859,3860,7,46,0,0, + 3860,3866,3,316,158,0,3861,3862,5,355,0,0,3862,3863,5,325,0,0,3863, + 3864,7,41,0,0,3864,3866,3,316,158,0,3865,3850,1,0,0,0,3865,3855, + 1,0,0,0,3865,3859,1,0,0,0,3865,3861,1,0,0,0,3866,311,1,0,0,0,3867, + 3868,5,198,0,0,3868,3884,5,357,0,0,3869,3870,5,131,0,0,3870,3884, + 5,446,0,0,3871,3884,5,204,0,0,3872,3884,5,452,0,0,3873,3884,5,331, + 0,0,3874,3884,5,318,0,0,3875,3884,5,451,0,0,3876,3877,5,63,0,0,3877, + 3878,5,174,0,0,3878,3884,5,381,0,0,3879,3881,5,295,0,0,3880,3879, + 1,0,0,0,3880,3881,1,0,0,0,3881,3882,1,0,0,0,3882,3884,5,247,0,0, + 3883,3867,1,0,0,0,3883,3869,1,0,0,0,3883,3871,1,0,0,0,3883,3872, + 1,0,0,0,3883,3873,1,0,0,0,3883,3874,1,0,0,0,3883,3875,1,0,0,0,3883, + 3876,1,0,0,0,3883,3880,1,0,0,0,3884,3885,1,0,0,0,3885,3892,3,818, + 409,0,3886,3887,5,323,0,0,3887,3892,3,790,395,0,3888,3889,5,175, + 0,0,3889,3892,3,788,394,0,3890,3892,3,176,88,0,3891,3883,1,0,0,0, + 3891,3886,1,0,0,0,3891,3888,1,0,0,0,3891,3890,1,0,0,0,3892,313,1, + 0,0,0,3893,3898,3,316,158,0,3894,3895,5,6,0,0,3895,3897,3,316,158, + 0,3896,3894,1,0,0,0,3897,3900,1,0,0,0,3898,3896,1,0,0,0,3898,3899, + 1,0,0,0,3899,315,1,0,0,0,3900,3898,1,0,0,0,3901,3903,3,818,409,0, + 3902,3904,3,318,159,0,3903,3902,1,0,0,0,3903,3904,1,0,0,0,3904,317, + 1,0,0,0,3905,3906,5,11,0,0,3906,3908,3,824,412,0,3907,3905,1,0,0, + 0,3908,3909,1,0,0,0,3909,3907,1,0,0,0,3909,3910,1,0,0,0,3910,319, + 1,0,0,0,3911,3913,5,358,0,0,3912,3914,5,92,0,0,3913,3912,1,0,0,0, + 3913,3914,1,0,0,0,3914,3915,1,0,0,0,3915,3920,3,322,161,0,3916,3917, + 5,6,0,0,3917,3919,3,322,161,0,3918,3916,1,0,0,0,3919,3922,1,0,0, + 0,3920,3918,1,0,0,0,3920,3921,1,0,0,0,3921,3925,1,0,0,0,3922,3920, + 1,0,0,0,3923,3924,7,47,0,0,3924,3926,5,219,0,0,3925,3923,1,0,0,0, + 3925,3926,1,0,0,0,3926,3928,1,0,0,0,3927,3929,3,96,48,0,3928,3927, + 1,0,0,0,3928,3929,1,0,0,0,3929,321,1,0,0,0,3930,3932,5,81,0,0,3931, + 3930,1,0,0,0,3931,3932,1,0,0,0,3932,3933,1,0,0,0,3933,3935,3,774, + 387,0,3934,3936,5,9,0,0,3935,3934,1,0,0,0,3935,3936,1,0,0,0,3936, + 323,1,0,0,0,3937,3938,5,159,0,0,3938,3997,5,80,0,0,3939,3998,3,310, + 155,0,3940,3998,3,312,156,0,3941,3942,5,44,0,0,3942,3944,3,818,409, + 0,3943,3945,3,318,159,0,3944,3943,1,0,0,0,3944,3945,1,0,0,0,3945, + 3946,1,0,0,0,3946,3947,5,11,0,0,3947,3948,3,800,400,0,3948,3998, + 1,0,0,0,3949,3950,7,32,0,0,3950,3998,3,652,326,0,3951,3952,5,136, + 0,0,3952,3998,3,394,197,0,3953,3954,5,211,0,0,3954,3998,3,382,191, + 0,3955,3956,5,278,0,0,3956,3998,3,416,208,0,3957,3958,5,45,0,0,3958, + 3959,3,818,409,0,3959,3965,5,80,0,0,3960,3966,3,774,387,0,3961,3963, + 5,189,0,0,3962,3961,1,0,0,0,3962,3963,1,0,0,0,3963,3964,1,0,0,0, + 3964,3966,3,316,158,0,3965,3960,1,0,0,0,3965,3962,1,0,0,0,3966,3998, + 1,0,0,0,3967,3968,7,44,0,0,3968,3969,3,818,409,0,3969,3970,5,80, + 0,0,3970,3971,3,316,158,0,3971,3998,1,0,0,0,3972,3973,5,296,0,0, + 3973,3998,3,378,189,0,3974,3975,5,442,0,0,3975,3998,3,374,187,0, + 3976,3977,5,443,0,0,3977,3978,5,62,0,0,3978,3979,3,652,326,0,3979, + 3980,5,247,0,0,3980,3981,3,818,409,0,3981,3998,1,0,0,0,3982,3983, + 5,278,0,0,3983,3984,7,31,0,0,3984,3985,3,316,158,0,3985,3986,3,170, + 85,0,3986,3998,1,0,0,0,3987,3988,5,248,0,0,3988,3989,5,274,0,0,3989, + 3998,3,202,101,0,3990,3991,5,41,0,0,3991,3992,5,2,0,0,3992,3993, + 3,652,326,0,3993,3994,5,36,0,0,3994,3995,3,652,326,0,3995,3996,5, + 3,0,0,3996,3998,1,0,0,0,3997,3939,1,0,0,0,3997,3940,1,0,0,0,3997, + 3941,1,0,0,0,3997,3949,1,0,0,0,3997,3951,1,0,0,0,3997,3953,1,0,0, + 0,3997,3955,1,0,0,0,3997,3957,1,0,0,0,3997,3967,1,0,0,0,3997,3972, + 1,0,0,0,3997,3974,1,0,0,0,3997,3976,1,0,0,0,3997,3982,1,0,0,0,3997, + 3987,1,0,0,0,3997,3990,1,0,0,0,3998,3999,1,0,0,0,3999,4002,5,116, + 0,0,4000,4003,3,808,404,0,4001,4003,5,78,0,0,4002,4000,1,0,0,0,4002, + 4001,1,0,0,0,4003,325,1,0,0,0,4004,4005,5,327,0,0,4005,4008,5,246, + 0,0,4006,4007,5,62,0,0,4007,4009,3,58,29,0,4008,4006,1,0,0,0,4008, + 4009,1,0,0,0,4009,4010,1,0,0,0,4010,4028,5,80,0,0,4011,4012,7,32, + 0,0,4012,4029,3,652,326,0,4013,4014,5,136,0,0,4014,4029,3,394,197, + 0,4015,4016,5,44,0,0,4016,4029,3,800,400,0,4017,4018,5,211,0,0,4018, + 4029,3,382,191,0,4019,4020,5,248,0,0,4020,4021,5,274,0,0,4021,4029, + 3,202,101,0,4022,4023,5,296,0,0,4023,4029,3,378,189,0,4024,4025, + 5,442,0,0,4025,4029,3,374,187,0,4026,4029,3,310,155,0,4027,4029, + 3,312,156,0,4028,4011,1,0,0,0,4028,4013,1,0,0,0,4028,4015,1,0,0, + 0,4028,4017,1,0,0,0,4028,4019,1,0,0,0,4028,4022,1,0,0,0,4028,4024, + 1,0,0,0,4028,4026,1,0,0,0,4028,4027,1,0,0,0,4029,4030,1,0,0,0,4030, + 4033,5,116,0,0,4031,4034,3,808,404,0,4032,4034,5,78,0,0,4033,4031, + 1,0,0,0,4033,4032,1,0,0,0,4034,327,1,0,0,0,4035,4036,7,48,0,0,4036, + 4037,3,330,165,0,4037,329,1,0,0,0,4038,4040,7,49,0,0,4039,4038,1, + 0,0,0,4039,4040,1,0,0,0,4040,4042,1,0,0,0,4041,4043,3,332,166,0, + 4042,4041,1,0,0,0,4042,4043,1,0,0,0,4043,4044,1,0,0,0,4044,4082, + 3,818,409,0,4045,4047,7,50,0,0,4046,4045,1,0,0,0,4046,4047,1,0,0, + 0,4047,4048,1,0,0,0,4048,4050,3,812,406,0,4049,4051,3,332,166,0, + 4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4052,1,0,0,0,4052,4053, + 3,818,409,0,4053,4082,1,0,0,0,4054,4056,5,210,0,0,4055,4057,3,812, + 406,0,4056,4055,1,0,0,0,4056,4057,1,0,0,0,4057,4059,1,0,0,0,4058, + 4060,3,332,166,0,4059,4058,1,0,0,0,4059,4060,1,0,0,0,4060,4061,1, + 0,0,0,4061,4082,3,818,409,0,4062,4064,5,210,0,0,4063,4062,1,0,0, + 0,4063,4064,1,0,0,0,4064,4065,1,0,0,0,4065,4067,5,30,0,0,4066,4068, + 3,332,166,0,4067,4066,1,0,0,0,4067,4068,1,0,0,0,4068,4069,1,0,0, + 0,4069,4082,3,818,409,0,4070,4075,5,144,0,0,4071,4073,5,30,0,0,4072, + 4071,1,0,0,0,4072,4073,1,0,0,0,4073,4076,1,0,0,0,4074,4076,3,812, + 406,0,4075,4072,1,0,0,0,4075,4074,1,0,0,0,4076,4078,1,0,0,0,4077, + 4079,3,332,166,0,4078,4077,1,0,0,0,4078,4079,1,0,0,0,4079,4080,1, + 0,0,0,4080,4082,3,818,409,0,4081,4039,1,0,0,0,4081,4046,1,0,0,0, + 4081,4054,1,0,0,0,4081,4063,1,0,0,0,4081,4070,1,0,0,0,4082,331,1, + 0,0,0,4083,4084,7,51,0,0,4084,333,1,0,0,0,4085,4086,5,65,0,0,4086, + 4087,3,338,169,0,4087,4088,5,80,0,0,4088,4089,3,344,172,0,4089,4090, + 5,94,0,0,4090,4094,3,346,173,0,4091,4092,5,105,0,0,4092,4093,5,65, + 0,0,4093,4095,5,279,0,0,4094,4091,1,0,0,0,4094,4095,1,0,0,0,4095, + 335,1,0,0,0,4096,4100,5,317,0,0,4097,4098,5,65,0,0,4098,4099,5,279, + 0,0,4099,4101,5,62,0,0,4100,4097,1,0,0,0,4100,4101,1,0,0,0,4101, + 4102,1,0,0,0,4102,4103,3,338,169,0,4103,4104,5,80,0,0,4104,4105, + 3,344,172,0,4105,4106,5,64,0,0,4106,4108,3,346,173,0,4107,4109,3, + 96,48,0,4108,4107,1,0,0,0,4108,4109,1,0,0,0,4109,337,1,0,0,0,4110, + 4115,3,342,171,0,4111,4112,5,6,0,0,4112,4114,3,342,171,0,4113,4111, + 1,0,0,0,4114,4117,1,0,0,0,4115,4113,1,0,0,0,4115,4116,1,0,0,0,4116, + 4134,1,0,0,0,4117,4115,1,0,0,0,4118,4120,5,30,0,0,4119,4121,5,294, + 0,0,4120,4119,1,0,0,0,4120,4121,1,0,0,0,4121,4123,1,0,0,0,4122,4124, + 3,144,72,0,4123,4122,1,0,0,0,4123,4124,1,0,0,0,4124,4134,1,0,0,0, + 4125,4130,3,340,170,0,4126,4127,5,6,0,0,4127,4129,3,340,170,0,4128, + 4126,1,0,0,0,4129,4132,1,0,0,0,4130,4128,1,0,0,0,4130,4131,1,0,0, + 0,4131,4134,1,0,0,0,4132,4130,1,0,0,0,4133,4110,1,0,0,0,4133,4118, + 1,0,0,0,4133,4125,1,0,0,0,4134,339,1,0,0,0,4135,4136,7,52,0,0,4136, + 341,1,0,0,0,4137,4142,5,88,0,0,4138,4142,5,86,0,0,4139,4142,5,46, + 0,0,4140,4142,3,818,409,0,4141,4137,1,0,0,0,4141,4138,1,0,0,0,4141, + 4139,1,0,0,0,4141,4140,1,0,0,0,4142,4144,1,0,0,0,4143,4145,3,144, + 72,0,4144,4143,1,0,0,0,4144,4145,1,0,0,0,4145,343,1,0,0,0,4146,4147, + 5,92,0,0,4147,4192,3,762,381,0,4148,4150,5,328,0,0,4149,4148,1,0, + 0,0,4149,4150,1,0,0,0,4150,4151,1,0,0,0,4151,4192,3,760,380,0,4152, + 4156,5,63,0,0,4153,4154,5,174,0,0,4154,4157,5,381,0,0,4155,4157, + 5,331,0,0,4156,4153,1,0,0,0,4156,4155,1,0,0,0,4157,4160,1,0,0,0, + 4158,4160,5,247,0,0,4159,4152,1,0,0,0,4159,4158,1,0,0,0,4160,4161, + 1,0,0,0,4161,4192,3,784,392,0,4162,4163,5,211,0,0,4163,4192,3,380, + 190,0,4164,4165,5,296,0,0,4165,4192,3,376,188,0,4166,4167,5,442, + 0,0,4167,4192,3,372,186,0,4168,4169,5,175,0,0,4169,4192,3,766,383, + 0,4170,4171,7,32,0,0,4171,4192,3,314,157,0,4172,4173,5,248,0,0,4173, + 4174,5,274,0,0,4174,4179,3,202,101,0,4175,4176,5,6,0,0,4176,4178, + 3,202,101,0,4177,4175,1,0,0,0,4178,4181,1,0,0,0,4179,4177,1,0,0, + 0,4179,4180,1,0,0,0,4180,4192,1,0,0,0,4181,4179,1,0,0,0,4182,4183, + 5,323,0,0,4183,4192,3,764,382,0,4184,4185,5,351,0,0,4185,4192,3, + 782,391,0,4186,4187,5,30,0,0,4187,4188,7,53,0,0,4188,4189,5,68,0, + 0,4189,4190,5,323,0,0,4190,4192,3,764,382,0,4191,4146,1,0,0,0,4191, + 4149,1,0,0,0,4191,4159,1,0,0,0,4191,4162,1,0,0,0,4191,4164,1,0,0, + 0,4191,4166,1,0,0,0,4191,4168,1,0,0,0,4191,4170,1,0,0,0,4191,4172, + 1,0,0,0,4191,4182,1,0,0,0,4191,4184,1,0,0,0,4191,4186,1,0,0,0,4192, + 345,1,0,0,0,4193,4195,5,66,0,0,4194,4193,1,0,0,0,4194,4195,1,0,0, + 0,4195,4196,1,0,0,0,4196,4197,3,814,407,0,4197,4205,1,0,0,0,4198, + 4200,5,6,0,0,4199,4201,5,66,0,0,4200,4199,1,0,0,0,4200,4201,1,0, + 0,0,4201,4202,1,0,0,0,4202,4204,3,814,407,0,4203,4198,1,0,0,0,4204, + 4207,1,0,0,0,4205,4203,1,0,0,0,4205,4206,1,0,0,0,4206,347,1,0,0, + 0,4207,4205,1,0,0,0,4208,4209,5,65,0,0,4209,4214,3,342,171,0,4210, + 4211,5,6,0,0,4211,4213,3,342,171,0,4212,4210,1,0,0,0,4213,4216,1, + 0,0,0,4214,4212,1,0,0,0,4214,4215,1,0,0,0,4215,4217,1,0,0,0,4216, + 4214,1,0,0,0,4217,4218,5,94,0,0,4218,4222,3,816,408,0,4219,4220, + 5,105,0,0,4220,4221,5,134,0,0,4221,4223,5,279,0,0,4222,4219,1,0, + 0,0,4222,4223,1,0,0,0,4223,4227,1,0,0,0,4224,4225,5,214,0,0,4225, + 4226,5,147,0,0,4226,4228,3,814,407,0,4227,4224,1,0,0,0,4227,4228, + 1,0,0,0,4228,349,1,0,0,0,4229,4233,5,317,0,0,4230,4231,5,134,0,0, + 4231,4232,5,279,0,0,4232,4234,5,62,0,0,4233,4230,1,0,0,0,4233,4234, + 1,0,0,0,4234,4235,1,0,0,0,4235,4240,3,342,171,0,4236,4237,5,6,0, + 0,4237,4239,3,342,171,0,4238,4236,1,0,0,0,4239,4242,1,0,0,0,4240, + 4238,1,0,0,0,4240,4241,1,0,0,0,4241,4243,1,0,0,0,4242,4240,1,0,0, + 0,4243,4244,5,64,0,0,4244,4248,3,816,408,0,4245,4246,5,214,0,0,4246, + 4247,5,147,0,0,4247,4249,3,814,407,0,4248,4245,1,0,0,0,4248,4249, + 1,0,0,0,4249,4251,1,0,0,0,4250,4252,3,96,48,0,4251,4250,1,0,0,0, + 4251,4252,1,0,0,0,4252,351,1,0,0,0,4253,4254,5,138,0,0,4254,4255, + 5,53,0,0,4255,4264,5,294,0,0,4256,4257,5,68,0,0,4257,4258,5,323, + 0,0,4258,4263,3,764,382,0,4259,4260,5,62,0,0,4260,4261,7,2,0,0,4261, + 4263,3,816,408,0,4262,4256,1,0,0,0,4262,4259,1,0,0,0,4263,4266,1, + 0,0,0,4264,4262,1,0,0,0,4264,4265,1,0,0,0,4265,4267,1,0,0,0,4266, + 4264,1,0,0,0,4267,4268,3,354,177,0,4268,353,1,0,0,0,4269,4270,5, + 65,0,0,4270,4271,3,338,169,0,4271,4272,5,80,0,0,4272,4273,3,356, + 178,0,4273,4274,5,94,0,0,4274,4278,3,346,173,0,4275,4276,5,105,0, + 0,4276,4277,5,65,0,0,4277,4279,5,279,0,0,4278,4275,1,0,0,0,4278, + 4279,1,0,0,0,4279,4295,1,0,0,0,4280,4284,5,317,0,0,4281,4282,5,65, + 0,0,4282,4283,5,279,0,0,4283,4285,5,62,0,0,4284,4281,1,0,0,0,4284, + 4285,1,0,0,0,4285,4286,1,0,0,0,4286,4287,3,338,169,0,4287,4288,5, + 80,0,0,4288,4289,3,356,178,0,4289,4290,5,64,0,0,4290,4292,3,346, + 173,0,4291,4293,3,96,48,0,4292,4291,1,0,0,0,4292,4293,1,0,0,0,4293, + 4295,1,0,0,0,4294,4269,1,0,0,0,4294,4280,1,0,0,0,4295,355,1,0,0, + 0,4296,4297,7,54,0,0,4297,357,1,0,0,0,4298,4300,5,46,0,0,4299,4301, + 5,98,0,0,4300,4299,1,0,0,0,4300,4301,1,0,0,0,4301,4302,1,0,0,0,4302, + 4304,5,226,0,0,4303,4305,5,109,0,0,4304,4303,1,0,0,0,4304,4305,1, + 0,0,0,4305,4307,1,0,0,0,4306,4308,3,294,147,0,4307,4306,1,0,0,0, + 4307,4308,1,0,0,0,4308,4310,1,0,0,0,4309,4311,3,818,409,0,4310,4309, + 1,0,0,0,4310,4311,1,0,0,0,4311,4312,1,0,0,0,4312,4313,5,80,0,0,4313, + 4315,3,624,312,0,4314,4316,3,170,85,0,4315,4314,1,0,0,0,4315,4316, + 1,0,0,0,4316,4317,1,0,0,0,4317,4320,3,360,180,0,4318,4319,5,441, + 0,0,4319,4321,3,360,180,0,4320,4318,1,0,0,0,4320,4321,1,0,0,0,4321, + 4327,1,0,0,0,4322,4324,5,273,0,0,4323,4325,5,77,0,0,4324,4323,1, + 0,0,0,4324,4325,1,0,0,0,4325,4326,1,0,0,0,4326,4328,5,56,0,0,4327, + 4322,1,0,0,0,4327,4328,1,0,0,0,4328,4330,1,0,0,0,4329,4331,3,102, + 51,0,4330,4329,1,0,0,0,4330,4331,1,0,0,0,4331,4333,1,0,0,0,4332, + 4334,3,176,88,0,4333,4332,1,0,0,0,4333,4334,1,0,0,0,4334,4336,1, + 0,0,0,4335,4337,3,638,319,0,4336,4335,1,0,0,0,4336,4337,1,0,0,0, + 4337,359,1,0,0,0,4338,4339,5,2,0,0,4339,4344,3,362,181,0,4340,4341, + 5,6,0,0,4341,4343,3,362,181,0,4342,4340,1,0,0,0,4343,4346,1,0,0, + 0,4344,4342,1,0,0,0,4344,4345,1,0,0,0,4345,4347,1,0,0,0,4346,4344, + 1,0,0,0,4347,4348,5,3,0,0,4348,361,1,0,0,0,4349,4356,3,800,400,0, + 4350,4356,3,688,344,0,4351,4352,5,2,0,0,4352,4353,3,674,337,0,4353, + 4354,5,3,0,0,4354,4356,1,0,0,0,4355,4349,1,0,0,0,4355,4350,1,0,0, + 0,4355,4351,1,0,0,0,4356,4358,1,0,0,0,4357,4359,3,98,49,0,4358,4357, + 1,0,0,0,4358,4359,1,0,0,0,4359,4366,1,0,0,0,4360,4362,3,316,158, + 0,4361,4360,1,0,0,0,4361,4362,1,0,0,0,4362,4367,1,0,0,0,4363,4364, + 3,316,158,0,4364,4365,3,100,50,0,4365,4367,1,0,0,0,4366,4361,1,0, + 0,0,4366,4363,1,0,0,0,4367,4369,1,0,0,0,4368,4370,7,55,0,0,4369, + 4368,1,0,0,0,4369,4370,1,0,0,0,4370,4373,1,0,0,0,4371,4372,5,273, + 0,0,4372,4374,7,56,0,0,4373,4371,1,0,0,0,4373,4374,1,0,0,0,4374, + 363,1,0,0,0,4375,4377,5,46,0,0,4376,4378,3,366,183,0,4377,4376,1, + 0,0,0,4377,4378,1,0,0,0,4378,4383,1,0,0,0,4379,4380,5,211,0,0,4380, + 4384,3,804,402,0,4381,4382,5,296,0,0,4382,4384,3,798,399,0,4383, + 4379,1,0,0,0,4383,4381,1,0,0,0,4384,4385,1,0,0,0,4385,4394,5,2,0, + 0,4386,4391,3,390,195,0,4387,4388,5,6,0,0,4388,4390,3,390,195,0, + 4389,4387,1,0,0,0,4390,4393,1,0,0,0,4391,4389,1,0,0,0,4391,4392, + 1,0,0,0,4392,4395,1,0,0,0,4393,4391,1,0,0,0,4394,4386,1,0,0,0,4394, + 4395,1,0,0,0,4395,4396,1,0,0,0,4396,4397,5,3,0,0,4397,4414,1,0,0, + 0,4398,4412,5,316,0,0,4399,4413,3,388,194,0,4400,4401,5,92,0,0,4401, + 4402,5,2,0,0,4402,4407,3,402,201,0,4403,4404,5,6,0,0,4404,4406,3, + 402,201,0,4405,4403,1,0,0,0,4406,4409,1,0,0,0,4407,4405,1,0,0,0, + 4407,4408,1,0,0,0,4408,4410,1,0,0,0,4409,4407,1,0,0,0,4410,4411, + 5,3,0,0,4411,4413,1,0,0,0,4412,4399,1,0,0,0,4412,4400,1,0,0,0,4413, + 4415,1,0,0,0,4414,4398,1,0,0,0,4414,4415,1,0,0,0,4415,4417,1,0,0, + 0,4416,4418,3,398,199,0,4417,4416,1,0,0,0,4418,4419,1,0,0,0,4419, + 4417,1,0,0,0,4419,4420,1,0,0,0,4420,4426,1,0,0,0,4421,4422,5,105, + 0,0,4422,4423,5,2,0,0,4423,4424,3,784,392,0,4424,4425,5,3,0,0,4425, + 4427,1,0,0,0,4426,4421,1,0,0,0,4426,4427,1,0,0,0,4427,365,1,0,0, + 0,4428,4429,5,82,0,0,4429,4430,5,311,0,0,4430,367,1,0,0,0,4431,4433, + 5,2,0,0,4432,4434,3,370,185,0,4433,4432,1,0,0,0,4433,4434,1,0,0, + 0,4434,4435,1,0,0,0,4435,4436,5,3,0,0,4436,369,1,0,0,0,4437,4442, + 3,384,192,0,4438,4439,5,6,0,0,4439,4441,3,384,192,0,4440,4438,1, + 0,0,0,4441,4444,1,0,0,0,4442,4440,1,0,0,0,4442,4443,1,0,0,0,4443, + 371,1,0,0,0,4444,4442,1,0,0,0,4445,4450,3,374,187,0,4446,4447,5, + 6,0,0,4447,4449,3,374,187,0,4448,4446,1,0,0,0,4449,4452,1,0,0,0, + 4450,4448,1,0,0,0,4450,4451,1,0,0,0,4451,373,1,0,0,0,4452,4450,1, + 0,0,0,4453,4454,3,794,397,0,4454,4455,3,368,184,0,4455,4459,1,0, + 0,0,4456,4459,3,832,416,0,4457,4459,3,780,390,0,4458,4453,1,0,0, + 0,4458,4456,1,0,0,0,4458,4457,1,0,0,0,4459,375,1,0,0,0,4460,4465, + 3,378,189,0,4461,4462,5,6,0,0,4462,4464,3,378,189,0,4463,4461,1, + 0,0,0,4464,4467,1,0,0,0,4465,4463,1,0,0,0,4465,4466,1,0,0,0,4466, + 377,1,0,0,0,4467,4465,1,0,0,0,4468,4469,3,796,398,0,4469,4470,3, + 368,184,0,4470,4474,1,0,0,0,4471,4474,3,832,416,0,4472,4474,3,780, + 390,0,4473,4468,1,0,0,0,4473,4471,1,0,0,0,4473,4472,1,0,0,0,4474, + 379,1,0,0,0,4475,4480,3,382,191,0,4476,4477,5,6,0,0,4477,4479,3, + 382,191,0,4478,4476,1,0,0,0,4479,4482,1,0,0,0,4480,4478,1,0,0,0, + 4480,4481,1,0,0,0,4481,381,1,0,0,0,4482,4480,1,0,0,0,4483,4484,3, + 806,403,0,4484,4485,3,368,184,0,4485,4489,1,0,0,0,4486,4489,3,832, + 416,0,4487,4489,3,780,390,0,4488,4483,1,0,0,0,4488,4486,1,0,0,0, + 4488,4487,1,0,0,0,4489,383,1,0,0,0,4490,4492,3,386,193,0,4491,4493, + 3,820,410,0,4492,4491,1,0,0,0,4492,4493,1,0,0,0,4493,4499,1,0,0, + 0,4494,4496,3,820,410,0,4495,4497,3,386,193,0,4496,4495,1,0,0,0, + 4496,4497,1,0,0,0,4497,4499,1,0,0,0,4498,4490,1,0,0,0,4498,4494, + 1,0,0,0,4498,4499,1,0,0,0,4499,4500,1,0,0,0,4500,4501,3,388,194, + 0,4501,385,1,0,0,0,4502,4504,5,68,0,0,4503,4505,5,453,0,0,4504,4503, + 1,0,0,0,4504,4505,1,0,0,0,4505,4510,1,0,0,0,4506,4510,5,453,0,0, + 4507,4510,5,400,0,0,4508,4510,5,101,0,0,4509,4502,1,0,0,0,4509,4506, + 1,0,0,0,4509,4507,1,0,0,0,4509,4508,1,0,0,0,4510,387,1,0,0,0,4511, + 4521,3,652,326,0,4512,4514,5,415,0,0,4513,4512,1,0,0,0,4513,4514, + 1,0,0,0,4514,4515,1,0,0,0,4515,4516,3,820,410,0,4516,4517,3,318, + 159,0,4517,4518,5,27,0,0,4518,4519,5,360,0,0,4519,4521,1,0,0,0,4520, + 4511,1,0,0,0,4520,4513,1,0,0,0,4521,389,1,0,0,0,4522,4525,3,384, + 192,0,4523,4524,7,57,0,0,4524,4526,3,674,337,0,4525,4523,1,0,0,0, + 4525,4526,1,0,0,0,4526,391,1,0,0,0,4527,4537,5,2,0,0,4528,4538,5, + 9,0,0,4529,4531,3,370,185,0,4530,4529,1,0,0,0,4530,4531,1,0,0,0, + 4531,4535,1,0,0,0,4532,4533,5,83,0,0,4533,4534,5,147,0,0,4534,4536, + 3,370,185,0,4535,4532,1,0,0,0,4535,4536,1,0,0,0,4536,4538,1,0,0, + 0,4537,4528,1,0,0,0,4537,4530,1,0,0,0,4538,4539,1,0,0,0,4539,4540, + 5,3,0,0,4540,393,1,0,0,0,4541,4542,3,806,403,0,4542,4543,3,392,196, + 0,4543,395,1,0,0,0,4544,4545,5,316,0,0,4545,4548,5,78,0,0,4546,4548, + 5,149,0,0,4547,4544,1,0,0,0,4547,4546,1,0,0,0,4548,4549,1,0,0,0, + 4549,4550,5,80,0,0,4550,4551,5,78,0,0,4551,4574,5,458,0,0,4552,4574, + 5,346,0,0,4553,4574,5,222,0,0,4554,4574,5,338,0,0,4555,4574,5,377, + 0,0,4556,4558,5,205,0,0,4557,4556,1,0,0,0,4557,4558,1,0,0,0,4558, + 4559,1,0,0,0,4559,4560,5,327,0,0,4560,4574,7,58,0,0,4561,4574,5, + 250,0,0,4562,4563,5,77,0,0,4563,4574,5,250,0,0,4564,4565,7,59,0, + 0,4565,4574,3,202,101,0,4566,4567,5,459,0,0,4567,4574,3,316,158, + 0,4568,4569,5,333,0,0,4569,4574,3,42,21,0,4570,4574,3,60,30,0,4571, + 4572,5,460,0,0,4572,4574,3,818,409,0,4573,4547,1,0,0,0,4573,4552, + 1,0,0,0,4573,4553,1,0,0,0,4573,4554,1,0,0,0,4573,4555,1,0,0,0,4573, + 4557,1,0,0,0,4573,4561,1,0,0,0,4573,4562,1,0,0,0,4573,4564,1,0,0, + 0,4573,4566,1,0,0,0,4573,4568,1,0,0,0,4573,4570,1,0,0,0,4573,4571, + 1,0,0,0,4574,397,1,0,0,0,4575,4576,5,36,0,0,4576,4577,3,808,404, + 0,4577,4578,3,462,231,0,4578,4611,1,0,0,0,4579,4580,5,247,0,0,4580, + 4611,3,58,29,0,4581,4582,5,443,0,0,4582,4583,5,62,0,0,4583,4584, + 5,360,0,0,4584,4591,3,652,326,0,4585,4586,5,6,0,0,4586,4587,5,62, + 0,0,4587,4588,5,360,0,0,4588,4590,3,652,326,0,4589,4585,1,0,0,0, + 4590,4593,1,0,0,0,4591,4589,1,0,0,0,4591,4592,1,0,0,0,4592,4611, + 1,0,0,0,4593,4591,1,0,0,0,4594,4611,5,104,0,0,4595,4596,5,333,0, + 0,4596,4603,3,818,409,0,4597,4598,5,94,0,0,4598,4604,3,818,409,0, + 4599,4600,5,10,0,0,4600,4604,3,818,409,0,4601,4602,5,64,0,0,4602, + 4604,5,434,0,0,4603,4597,1,0,0,0,4603,4599,1,0,0,0,4603,4601,1,0, + 0,0,4604,4611,1,0,0,0,4605,4606,5,36,0,0,4606,4611,3,818,409,0,4607, + 4611,3,4,2,0,4608,4611,3,396,198,0,4609,4611,3,818,409,0,4610,4575, + 1,0,0,0,4610,4579,1,0,0,0,4610,4581,1,0,0,0,4610,4594,1,0,0,0,4610, + 4595,1,0,0,0,4610,4605,1,0,0,0,4610,4607,1,0,0,0,4610,4608,1,0,0, + 0,4610,4609,1,0,0,0,4611,399,1,0,0,0,4612,4613,5,105,0,0,4613,4614, + 3,284,142,0,4614,401,1,0,0,0,4615,4616,3,800,400,0,4616,4617,3,388, + 194,0,4617,403,1,0,0,0,4618,4625,5,138,0,0,4619,4620,5,211,0,0,4620, + 4626,3,382,191,0,4621,4622,5,296,0,0,4622,4626,3,378,189,0,4623, + 4624,5,442,0,0,4624,4626,3,374,187,0,4625,4619,1,0,0,0,4625,4621, + 1,0,0,0,4625,4623,1,0,0,0,4626,4628,1,0,0,0,4627,4629,3,396,198, + 0,4628,4627,1,0,0,0,4629,4630,1,0,0,0,4630,4628,1,0,0,0,4630,4631, + 1,0,0,0,4631,4633,1,0,0,0,4632,4634,5,315,0,0,4633,4632,1,0,0,0, + 4633,4634,1,0,0,0,4634,405,1,0,0,0,4635,4651,5,191,0,0,4636,4638, + 5,211,0,0,4637,4639,3,422,211,0,4638,4637,1,0,0,0,4638,4639,1,0, + 0,0,4639,4640,1,0,0,0,4640,4652,3,380,190,0,4641,4643,5,296,0,0, + 4642,4644,3,422,211,0,4643,4642,1,0,0,0,4643,4644,1,0,0,0,4644,4645, + 1,0,0,0,4645,4652,3,376,188,0,4646,4648,5,442,0,0,4647,4649,3,422, + 211,0,4648,4647,1,0,0,0,4648,4649,1,0,0,0,4649,4650,1,0,0,0,4650, + 4652,3,372,186,0,4651,4636,1,0,0,0,4651,4641,1,0,0,0,4651,4646,1, + 0,0,0,4652,4654,1,0,0,0,4653,4655,3,96,48,0,4654,4653,1,0,0,0,4654, + 4655,1,0,0,0,4655,407,1,0,0,0,4656,4657,5,191,0,0,4657,4659,5,136, + 0,0,4658,4660,3,422,211,0,4659,4658,1,0,0,0,4659,4660,1,0,0,0,4660, + 4661,1,0,0,0,4661,4666,3,394,197,0,4662,4663,5,6,0,0,4663,4665,3, + 394,197,0,4664,4662,1,0,0,0,4665,4668,1,0,0,0,4666,4664,1,0,0,0, + 4666,4667,1,0,0,0,4667,4670,1,0,0,0,4668,4666,1,0,0,0,4669,4671, + 3,96,48,0,4670,4669,1,0,0,0,4670,4671,1,0,0,0,4671,409,1,0,0,0,4672, + 4673,5,191,0,0,4673,4675,5,278,0,0,4674,4676,3,422,211,0,4675,4674, + 1,0,0,0,4675,4676,1,0,0,0,4676,4677,1,0,0,0,4677,4682,3,416,208, + 0,4678,4679,5,6,0,0,4679,4681,3,416,208,0,4680,4678,1,0,0,0,4681, + 4684,1,0,0,0,4682,4680,1,0,0,0,4682,4683,1,0,0,0,4683,4686,1,0,0, + 0,4684,4682,1,0,0,0,4685,4687,3,96,48,0,4686,4685,1,0,0,0,4686,4687, + 1,0,0,0,4687,411,1,0,0,0,4688,4701,5,2,0,0,4689,4692,3,652,326,0, + 4690,4691,5,6,0,0,4691,4693,3,652,326,0,4692,4690,1,0,0,0,4692,4693, + 1,0,0,0,4693,4702,1,0,0,0,4694,4695,5,407,0,0,4695,4696,5,6,0,0, + 4696,4702,3,652,326,0,4697,4698,3,652,326,0,4698,4699,5,6,0,0,4699, + 4700,5,407,0,0,4700,4702,1,0,0,0,4701,4689,1,0,0,0,4701,4694,1,0, + 0,0,4701,4697,1,0,0,0,4702,4703,1,0,0,0,4703,4704,5,3,0,0,4704,413, + 1,0,0,0,4705,4706,3,818,409,0,4706,4707,5,11,0,0,4707,4709,1,0,0, + 0,4708,4705,1,0,0,0,4709,4712,1,0,0,0,4710,4708,1,0,0,0,4710,4711, + 1,0,0,0,4711,4713,1,0,0,0,4712,4710,1,0,0,0,4713,4714,3,720,360, + 0,4714,415,1,0,0,0,4715,4716,3,414,207,0,4716,4717,3,412,206,0,4717, + 417,1,0,0,0,4718,4722,5,57,0,0,4719,4723,3,808,404,0,4720,4721,5, + 247,0,0,4721,4723,3,58,29,0,4722,4719,1,0,0,0,4722,4720,1,0,0,0, + 4723,4724,1,0,0,0,4724,4722,1,0,0,0,4724,4725,1,0,0,0,4725,419,1, + 0,0,0,4726,4727,5,46,0,0,4727,4728,5,41,0,0,4728,4729,5,2,0,0,4729, + 4730,3,652,326,0,4730,4731,5,36,0,0,4731,4732,3,652,326,0,4732,4749, + 5,3,0,0,4733,4734,5,379,0,0,4734,4737,5,211,0,0,4735,4736,5,36,0, + 0,4736,4738,7,60,0,0,4737,4735,1,0,0,0,4737,4738,1,0,0,0,4738,4750, + 1,0,0,0,4739,4743,5,105,0,0,4740,4741,5,211,0,0,4741,4744,3,382, + 191,0,4742,4744,5,400,0,0,4743,4740,1,0,0,0,4743,4742,1,0,0,0,4744, + 4747,1,0,0,0,4745,4746,5,36,0,0,4746,4748,7,60,0,0,4747,4745,1,0, + 0,0,4747,4748,1,0,0,0,4748,4750,1,0,0,0,4749,4733,1,0,0,0,4749,4739, + 1,0,0,0,4750,421,1,0,0,0,4751,4752,5,220,0,0,4752,4753,5,396,0,0, + 4753,423,1,0,0,0,4754,4756,5,46,0,0,4755,4757,3,366,183,0,4756,4755, + 1,0,0,0,4756,4757,1,0,0,0,4757,4758,1,0,0,0,4758,4759,5,443,0,0, + 4759,4760,5,62,0,0,4760,4761,3,652,326,0,4761,4762,5,247,0,0,4762, + 4763,3,818,409,0,4763,4778,5,2,0,0,4764,4765,5,64,0,0,4765,4769, + 3,426,213,0,4766,4767,5,6,0,0,4767,4768,5,94,0,0,4768,4770,3,426, + 213,0,4769,4766,1,0,0,0,4769,4770,1,0,0,0,4770,4779,1,0,0,0,4771, + 4772,5,94,0,0,4772,4776,3,426,213,0,4773,4774,5,6,0,0,4774,4775, + 5,64,0,0,4775,4777,3,426,213,0,4776,4773,1,0,0,0,4776,4777,1,0,0, + 0,4777,4779,1,0,0,0,4778,4764,1,0,0,0,4778,4771,1,0,0,0,4779,4780, + 1,0,0,0,4780,4781,5,3,0,0,4781,425,1,0,0,0,4782,4783,5,461,0,0,4783, + 4784,5,105,0,0,4784,4785,5,211,0,0,4785,4786,3,382,191,0,4786,427, + 1,0,0,0,4787,4798,5,306,0,0,4788,4789,5,2,0,0,4789,4794,5,128,0, + 0,4790,4791,5,6,0,0,4791,4793,5,128,0,0,4792,4790,1,0,0,0,4793,4796, + 1,0,0,0,4794,4792,1,0,0,0,4794,4795,1,0,0,0,4795,4797,1,0,0,0,4796, + 4794,1,0,0,0,4797,4799,5,3,0,0,4798,4788,1,0,0,0,4798,4799,1,0,0, + 0,4799,4825,1,0,0,0,4800,4802,5,226,0,0,4801,4803,5,109,0,0,4802, + 4801,1,0,0,0,4802,4803,1,0,0,0,4803,4804,1,0,0,0,4804,4826,3,780, + 390,0,4805,4807,5,92,0,0,4806,4808,5,109,0,0,4807,4806,1,0,0,0,4807, + 4808,1,0,0,0,4808,4809,1,0,0,0,4809,4826,3,774,387,0,4810,4812,5, + 323,0,0,4811,4813,5,109,0,0,4812,4811,1,0,0,0,4812,4813,1,0,0,0, + 4813,4814,1,0,0,0,4814,4826,3,790,395,0,4815,4817,5,349,0,0,4816, + 4818,5,109,0,0,4817,4816,1,0,0,0,4817,4818,1,0,0,0,4818,4819,1,0, + 0,0,4819,4826,3,818,409,0,4820,4822,5,175,0,0,4821,4823,5,109,0, + 0,4822,4821,1,0,0,0,4822,4823,1,0,0,0,4823,4824,1,0,0,0,4824,4826, + 3,788,394,0,4825,4800,1,0,0,0,4825,4805,1,0,0,0,4825,4810,1,0,0, + 0,4825,4815,1,0,0,0,4825,4820,1,0,0,0,4826,429,1,0,0,0,4827,4828, + 5,138,0,0,4828,4829,3,176,88,0,4829,4830,7,16,0,0,4830,4831,3,100, + 50,0,4831,431,1,0,0,0,4832,4837,5,138,0,0,4833,4834,5,136,0,0,4834, + 4838,3,394,197,0,4835,4836,5,442,0,0,4836,4838,3,374,187,0,4837, + 4833,1,0,0,0,4837,4835,1,0,0,0,4838,4839,1,0,0,0,4839,4840,5,309, + 0,0,4840,4841,5,94,0,0,4841,4842,3,818,409,0,4842,5040,1,0,0,0,4843, + 4844,5,138,0,0,4844,4845,5,175,0,0,4845,4846,3,788,394,0,4846,4847, + 5,309,0,0,4847,4848,5,94,0,0,4848,4849,3,786,393,0,4849,5040,1,0, + 0,0,4850,4851,5,138,0,0,4851,4852,7,61,0,0,4852,4853,3,316,158,0, + 4853,4854,5,309,0,0,4854,4855,5,94,0,0,4855,4856,3,818,409,0,4856, + 5040,1,0,0,0,4857,4858,5,138,0,0,4858,4859,5,211,0,0,4859,4860,3, + 382,191,0,4860,4861,5,309,0,0,4861,4862,5,94,0,0,4862,4863,3,804, + 402,0,4863,5040,1,0,0,0,4864,4865,5,138,0,0,4865,4866,5,278,0,0, + 4866,4867,7,31,0,0,4867,4868,3,316,158,0,4868,4869,3,170,85,0,4869, + 4870,5,309,0,0,4870,4871,5,94,0,0,4871,4872,3,818,409,0,4872,5040, + 1,0,0,0,4873,4874,5,138,0,0,4874,4875,5,296,0,0,4875,4876,3,378, + 189,0,4876,4877,5,309,0,0,4877,4878,5,94,0,0,4878,4879,3,798,399, + 0,4879,5040,1,0,0,0,4880,4881,5,138,0,0,4881,4882,5,323,0,0,4882, + 4883,3,790,395,0,4883,4884,5,309,0,0,4884,4885,5,94,0,0,4885,4886, + 3,32,16,0,4886,5040,1,0,0,0,4887,4888,5,138,0,0,4888,4890,7,62,0, + 0,4889,4891,3,422,211,0,4890,4889,1,0,0,0,4890,4891,1,0,0,0,4891, + 4892,1,0,0,0,4892,4893,3,780,390,0,4893,4894,5,309,0,0,4894,4895, + 5,94,0,0,4895,4896,3,818,409,0,4896,5040,1,0,0,0,4897,4899,5,138, + 0,0,4898,4900,5,259,0,0,4899,4898,1,0,0,0,4899,4900,1,0,0,0,4900, + 4901,1,0,0,0,4901,4903,5,376,0,0,4902,4904,3,422,211,0,4903,4902, + 1,0,0,0,4903,4904,1,0,0,0,4904,4905,1,0,0,0,4905,4906,3,778,389, + 0,4906,4907,5,309,0,0,4907,4908,5,94,0,0,4908,4909,3,776,388,0,4909, + 5040,1,0,0,0,4910,4912,5,138,0,0,4911,4913,5,63,0,0,4912,4911,1, + 0,0,0,4912,4913,1,0,0,0,4913,4914,1,0,0,0,4914,4916,5,92,0,0,4915, + 4917,3,422,211,0,4916,4915,1,0,0,0,4916,4917,1,0,0,0,4917,4918,1, + 0,0,0,4918,4919,3,624,312,0,4919,4920,5,309,0,0,4920,4921,5,94,0, + 0,4921,4922,3,772,386,0,4922,5040,1,0,0,0,4923,4948,5,138,0,0,4924, + 4926,5,63,0,0,4925,4924,1,0,0,0,4925,4926,1,0,0,0,4926,4927,1,0, + 0,0,4927,4929,5,92,0,0,4928,4930,3,422,211,0,4929,4928,1,0,0,0,4929, + 4930,1,0,0,0,4930,4931,1,0,0,0,4931,4932,3,624,312,0,4932,4934,5, + 309,0,0,4933,4935,5,44,0,0,4934,4933,1,0,0,0,4934,4935,1,0,0,0,4935, + 4949,1,0,0,0,4936,4938,5,259,0,0,4937,4936,1,0,0,0,4937,4938,1,0, + 0,0,4938,4939,1,0,0,0,4939,4941,5,376,0,0,4940,4942,3,422,211,0, + 4941,4940,1,0,0,0,4941,4942,1,0,0,0,4942,4943,1,0,0,0,4943,4944, + 3,778,389,0,4944,4946,5,309,0,0,4945,4947,5,44,0,0,4946,4945,1,0, + 0,0,4946,4947,1,0,0,0,4947,4949,1,0,0,0,4948,4925,1,0,0,0,4948,4937, + 1,0,0,0,4949,4950,1,0,0,0,4950,4951,3,800,400,0,4951,4952,5,94,0, + 0,4952,4953,3,802,401,0,4953,5040,1,0,0,0,4954,4962,5,138,0,0,4955, + 4957,5,92,0,0,4956,4958,3,422,211,0,4957,4956,1,0,0,0,4957,4958, + 1,0,0,0,4958,4959,1,0,0,0,4959,4963,3,624,312,0,4960,4961,5,189, + 0,0,4961,4963,3,316,158,0,4962,4955,1,0,0,0,4962,4960,1,0,0,0,4963, + 4964,1,0,0,0,4964,4965,5,309,0,0,4965,4966,5,45,0,0,4966,4967,3, + 818,409,0,4967,4968,5,94,0,0,4968,4969,3,818,409,0,4969,5040,1,0, + 0,0,4970,4977,5,138,0,0,4971,4973,5,445,0,0,4972,4974,3,422,211, + 0,4973,4972,1,0,0,0,4973,4974,1,0,0,0,4974,4978,1,0,0,0,4975,4978, + 5,321,0,0,4976,4978,5,357,0,0,4977,4971,1,0,0,0,4977,4975,1,0,0, + 0,4977,4976,1,0,0,0,4978,4979,1,0,0,0,4979,4980,3,818,409,0,4980, + 4981,5,80,0,0,4981,4982,3,780,390,0,4982,4983,5,309,0,0,4983,4984, + 5,94,0,0,4984,4985,3,818,409,0,4985,5040,1,0,0,0,4986,4999,5,138, + 0,0,4987,4988,5,63,0,0,4988,4989,5,174,0,0,4989,5000,5,381,0,0,4990, + 4992,5,295,0,0,4991,4990,1,0,0,0,4991,4992,1,0,0,0,4992,4993,1,0, + 0,0,4993,5000,5,247,0,0,4994,5000,5,452,0,0,4995,5000,5,331,0,0, + 4996,5000,5,451,0,0,4997,4998,5,198,0,0,4998,5000,5,357,0,0,4999, + 4987,1,0,0,0,4999,4991,1,0,0,0,4999,4994,1,0,0,0,4999,4995,1,0,0, + 0,4999,4996,1,0,0,0,4999,4997,1,0,0,0,5000,5001,1,0,0,0,5001,5002, + 3,818,409,0,5002,5003,5,309,0,0,5003,5004,5,94,0,0,5004,5005,3,818, + 409,0,5005,5040,1,0,0,0,5006,5007,5,138,0,0,5007,5008,7,45,0,0,5008, + 5009,3,814,407,0,5009,5010,5,309,0,0,5010,5011,5,94,0,0,5011,5012, + 3,814,407,0,5012,5040,1,0,0,0,5013,5014,5,138,0,0,5014,5015,3,176, + 88,0,5015,5016,5,309,0,0,5016,5017,5,94,0,0,5017,5018,3,768,384, + 0,5018,5040,1,0,0,0,5019,5020,5,138,0,0,5020,5021,5,355,0,0,5021, + 5022,5,325,0,0,5022,5023,7,41,0,0,5023,5024,3,316,158,0,5024,5025, + 5,309,0,0,5025,5026,5,94,0,0,5026,5027,3,818,409,0,5027,5040,1,0, + 0,0,5028,5029,5,138,0,0,5029,5030,5,360,0,0,5030,5031,3,316,158, + 0,5031,5032,5,309,0,0,5032,5033,5,143,0,0,5033,5034,3,818,409,0, + 5034,5035,5,94,0,0,5035,5037,3,818,409,0,5036,5038,3,96,48,0,5037, + 5036,1,0,0,0,5037,5038,1,0,0,0,5038,5040,1,0,0,0,5039,4832,1,0,0, + 0,5039,4843,1,0,0,0,5039,4850,1,0,0,0,5039,4857,1,0,0,0,5039,4864, + 1,0,0,0,5039,4873,1,0,0,0,5039,4880,1,0,0,0,5039,4887,1,0,0,0,5039, + 4897,1,0,0,0,5039,4910,1,0,0,0,5039,4923,1,0,0,0,5039,4954,1,0,0, + 0,5039,4970,1,0,0,0,5039,4986,1,0,0,0,5039,5006,1,0,0,0,5039,5013, + 1,0,0,0,5039,5019,1,0,0,0,5039,5028,1,0,0,0,5040,433,1,0,0,0,5041, + 5058,5,138,0,0,5042,5043,5,211,0,0,5043,5059,3,382,191,0,5044,5045, + 5,296,0,0,5045,5059,3,378,189,0,5046,5047,5,442,0,0,5047,5059,3, + 374,187,0,5048,5049,5,357,0,0,5049,5050,3,818,409,0,5050,5051,5, + 80,0,0,5051,5052,3,780,390,0,5052,5059,1,0,0,0,5053,5054,5,259,0, + 0,5054,5055,5,376,0,0,5055,5059,3,778,389,0,5056,5057,5,226,0,0, + 5057,5059,3,780,390,0,5058,5042,1,0,0,0,5058,5044,1,0,0,0,5058,5046, + 1,0,0,0,5058,5048,1,0,0,0,5058,5053,1,0,0,0,5058,5056,1,0,0,0,5059, + 5061,1,0,0,0,5060,5062,5,269,0,0,5061,5060,1,0,0,0,5061,5062,1,0, + 0,0,5062,5063,1,0,0,0,5063,5064,5,462,0,0,5064,5065,5,80,0,0,5065, + 5066,5,204,0,0,5066,5067,3,818,409,0,5067,435,1,0,0,0,5068,5107, + 5,138,0,0,5069,5070,5,136,0,0,5070,5108,3,394,197,0,5071,5072,5, + 204,0,0,5072,5108,3,818,409,0,5073,5074,5,211,0,0,5074,5108,3,382, + 191,0,5075,5076,5,278,0,0,5076,5108,3,416,208,0,5077,5078,5,278, + 0,0,5078,5079,7,31,0,0,5079,5080,3,316,158,0,5080,5081,3,170,85, + 0,5081,5108,1,0,0,0,5082,5083,5,296,0,0,5083,5108,3,378,189,0,5084, + 5085,5,442,0,0,5085,5108,3,374,187,0,5086,5088,5,328,0,0,5087,5089, + 3,422,211,0,5088,5087,1,0,0,0,5088,5089,1,0,0,0,5089,5090,1,0,0, + 0,5090,5108,3,780,390,0,5091,5093,5,259,0,0,5092,5091,1,0,0,0,5092, + 5093,1,0,0,0,5093,5094,1,0,0,0,5094,5096,5,376,0,0,5095,5097,3,422, + 211,0,5096,5095,1,0,0,0,5096,5097,1,0,0,0,5097,5098,1,0,0,0,5098, + 5108,3,778,389,0,5099,5101,5,63,0,0,5100,5099,1,0,0,0,5100,5101, + 1,0,0,0,5101,5102,1,0,0,0,5102,5104,5,92,0,0,5103,5105,3,422,211, + 0,5104,5103,1,0,0,0,5104,5105,1,0,0,0,5105,5106,1,0,0,0,5106,5108, + 3,624,312,0,5107,5069,1,0,0,0,5107,5071,1,0,0,0,5107,5073,1,0,0, + 0,5107,5075,1,0,0,0,5107,5077,1,0,0,0,5107,5082,1,0,0,0,5107,5084, + 1,0,0,0,5107,5086,1,0,0,0,5107,5092,1,0,0,0,5107,5100,1,0,0,0,5108, + 5109,1,0,0,0,5109,5110,5,333,0,0,5110,5111,5,323,0,0,5111,5112,3, + 790,395,0,5112,5130,1,0,0,0,5113,5122,5,138,0,0,5114,5115,5,355, + 0,0,5115,5116,5,325,0,0,5116,5123,7,41,0,0,5117,5123,5,108,0,0,5118, + 5123,5,168,0,0,5119,5123,5,189,0,0,5120,5123,5,342,0,0,5121,5123, + 5,360,0,0,5122,5114,1,0,0,0,5122,5117,1,0,0,0,5122,5118,1,0,0,0, + 5122,5119,1,0,0,0,5122,5120,1,0,0,0,5122,5121,1,0,0,0,5123,5124, + 1,0,0,0,5124,5125,3,316,158,0,5125,5126,5,333,0,0,5126,5127,5,323, + 0,0,5127,5128,3,790,395,0,5128,5130,1,0,0,0,5129,5068,1,0,0,0,5129, + 5113,1,0,0,0,5130,437,1,0,0,0,5131,5132,5,138,0,0,5132,5133,5,278, + 0,0,5133,5134,3,416,208,0,5134,5135,5,333,0,0,5135,5136,3,440,220, + 0,5136,439,1,0,0,0,5137,5138,5,2,0,0,5138,5143,3,442,221,0,5139, + 5140,5,6,0,0,5140,5142,3,442,221,0,5141,5139,1,0,0,0,5142,5145,1, + 0,0,0,5143,5141,1,0,0,0,5143,5144,1,0,0,0,5144,5146,1,0,0,0,5145, + 5143,1,0,0,0,5146,5147,5,3,0,0,5147,441,1,0,0,0,5148,5149,3,824, + 412,0,5149,5156,5,10,0,0,5150,5157,5,407,0,0,5151,5157,3,388,194, + 0,5152,5157,3,834,417,0,5153,5157,3,726,363,0,5154,5157,3,202,101, + 0,5155,5157,3,808,404,0,5156,5150,1,0,0,0,5156,5151,1,0,0,0,5156, + 5152,1,0,0,0,5156,5153,1,0,0,0,5156,5154,1,0,0,0,5156,5155,1,0,0, + 0,5157,443,1,0,0,0,5158,5159,5,138,0,0,5159,5160,5,360,0,0,5160, + 5161,3,316,158,0,5161,5162,5,333,0,0,5162,5163,3,440,220,0,5163, + 445,1,0,0,0,5164,5165,5,138,0,0,5165,5166,5,278,0,0,5166,5167,7, + 31,0,0,5167,5168,3,316,158,0,5168,5169,3,170,85,0,5169,5170,5,282, + 0,0,5170,5171,5,94,0,0,5171,5172,3,814,407,0,5172,5239,1,0,0,0,5173, + 5200,5,138,0,0,5174,5175,5,136,0,0,5175,5201,3,394,197,0,5176,5177, + 5,175,0,0,5177,5201,3,788,394,0,5178,5179,5,211,0,0,5179,5201,3, + 382,191,0,5180,5182,5,295,0,0,5181,5180,1,0,0,0,5181,5182,1,0,0, + 0,5182,5183,1,0,0,0,5183,5184,5,247,0,0,5184,5201,3,818,409,0,5185, + 5186,5,248,0,0,5186,5187,5,274,0,0,5187,5201,3,202,101,0,5188,5189, + 5,248,0,0,5189,5190,5,274,0,0,5190,5201,3,202,101,0,5191,5192,5, + 278,0,0,5192,5201,3,416,208,0,5193,5194,5,296,0,0,5194,5201,3,378, + 189,0,5195,5196,5,442,0,0,5196,5201,3,374,187,0,5197,5198,5,323, + 0,0,5198,5201,3,790,395,0,5199,5201,3,176,88,0,5200,5174,1,0,0,0, + 5200,5176,1,0,0,0,5200,5178,1,0,0,0,5200,5181,1,0,0,0,5200,5185, + 1,0,0,0,5200,5188,1,0,0,0,5200,5191,1,0,0,0,5200,5193,1,0,0,0,5200, + 5195,1,0,0,0,5200,5197,1,0,0,0,5200,5199,1,0,0,0,5201,5202,1,0,0, + 0,5202,5203,5,282,0,0,5203,5204,5,94,0,0,5204,5205,3,814,407,0,5205, + 5239,1,0,0,0,5206,5215,5,138,0,0,5207,5208,5,355,0,0,5208,5209,5, + 325,0,0,5209,5216,7,63,0,0,5210,5216,5,108,0,0,5211,5216,5,168,0, + 0,5212,5216,5,189,0,0,5213,5216,5,360,0,0,5214,5216,5,342,0,0,5215, + 5207,1,0,0,0,5215,5210,1,0,0,0,5215,5211,1,0,0,0,5215,5212,1,0,0, + 0,5215,5213,1,0,0,0,5215,5214,1,0,0,0,5216,5217,1,0,0,0,5217,5218, + 3,316,158,0,5218,5219,5,282,0,0,5219,5220,5,94,0,0,5220,5221,3,814, + 407,0,5221,5239,1,0,0,0,5222,5231,5,138,0,0,5223,5232,5,331,0,0, + 5224,5225,5,63,0,0,5225,5226,5,174,0,0,5226,5232,5,381,0,0,5227, + 5228,5,198,0,0,5228,5232,5,357,0,0,5229,5232,5,452,0,0,5230,5232, + 5,451,0,0,5231,5223,1,0,0,0,5231,5224,1,0,0,0,5231,5227,1,0,0,0, + 5231,5229,1,0,0,0,5231,5230,1,0,0,0,5232,5233,1,0,0,0,5233,5234, + 3,818,409,0,5234,5235,5,282,0,0,5235,5236,5,94,0,0,5236,5237,3,814, + 407,0,5237,5239,1,0,0,0,5238,5164,1,0,0,0,5238,5173,1,0,0,0,5238, + 5206,1,0,0,0,5238,5222,1,0,0,0,5239,447,1,0,0,0,5240,5241,5,46,0, + 0,5241,5242,5,452,0,0,5242,5249,3,818,409,0,5243,5244,5,62,0,0,5244, + 5245,5,92,0,0,5245,5250,3,628,314,0,5246,5247,5,62,0,0,5247,5248, + 5,30,0,0,5248,5250,5,350,0,0,5249,5243,1,0,0,0,5249,5246,1,0,0,0, + 5249,5250,1,0,0,0,5250,5252,1,0,0,0,5251,5253,3,400,200,0,5252,5251, + 1,0,0,0,5252,5253,1,0,0,0,5253,449,1,0,0,0,5254,5255,5,138,0,0,5255, + 5256,5,452,0,0,5256,5274,3,818,409,0,5257,5258,5,282,0,0,5258,5259, + 5,94,0,0,5259,5275,3,814,407,0,5260,5261,5,333,0,0,5261,5275,3,284, + 142,0,5262,5263,5,309,0,0,5263,5264,5,94,0,0,5264,5275,3,818,409, + 0,5265,5266,7,34,0,0,5266,5271,3,626,313,0,5267,5268,5,6,0,0,5268, + 5270,3,626,313,0,5269,5267,1,0,0,0,5270,5273,1,0,0,0,5271,5269,1, + 0,0,0,5271,5272,1,0,0,0,5272,5275,1,0,0,0,5273,5271,1,0,0,0,5274, + 5257,1,0,0,0,5274,5260,1,0,0,0,5274,5262,1,0,0,0,5274,5265,1,0,0, + 0,5275,451,1,0,0,0,5276,5277,5,46,0,0,5277,5278,5,451,0,0,5278,5279, + 3,818,409,0,5279,5280,5,164,0,0,5280,5281,3,808,404,0,5281,5282, + 5,452,0,0,5282,5287,3,824,412,0,5283,5284,5,6,0,0,5284,5286,3,824, + 412,0,5285,5283,1,0,0,0,5286,5289,1,0,0,0,5287,5285,1,0,0,0,5287, + 5288,1,0,0,0,5288,5291,1,0,0,0,5289,5287,1,0,0,0,5290,5292,3,400, + 200,0,5291,5290,1,0,0,0,5291,5292,1,0,0,0,5292,453,1,0,0,0,5293, + 5294,5,138,0,0,5294,5295,5,451,0,0,5295,5296,3,818,409,0,5296,5297, + 5,333,0,0,5297,5298,3,284,142,0,5298,5350,1,0,0,0,5299,5300,5,138, + 0,0,5300,5301,5,451,0,0,5301,5302,3,818,409,0,5302,5303,5,164,0, + 0,5303,5304,3,808,404,0,5304,5350,1,0,0,0,5305,5306,5,138,0,0,5306, + 5307,5,451,0,0,5307,5308,3,818,409,0,5308,5309,5,305,0,0,5309,5311, + 5,452,0,0,5310,5312,3,400,200,0,5311,5310,1,0,0,0,5311,5312,1,0, + 0,0,5312,5350,1,0,0,0,5313,5314,5,138,0,0,5314,5315,5,451,0,0,5315, + 5316,3,818,409,0,5316,5317,7,34,0,0,5317,5318,5,452,0,0,5318,5323, + 3,824,412,0,5319,5320,5,6,0,0,5320,5322,3,824,412,0,5321,5319,1, + 0,0,0,5322,5325,1,0,0,0,5323,5321,1,0,0,0,5323,5324,1,0,0,0,5324, + 5327,1,0,0,0,5325,5323,1,0,0,0,5326,5328,3,400,200,0,5327,5326,1, + 0,0,0,5327,5328,1,0,0,0,5328,5350,1,0,0,0,5329,5330,5,138,0,0,5330, + 5331,5,451,0,0,5331,5332,3,818,409,0,5332,5333,7,64,0,0,5333,5350, + 1,0,0,0,5334,5335,5,138,0,0,5335,5336,5,451,0,0,5336,5337,3,818, + 409,0,5337,5338,5,465,0,0,5338,5339,5,2,0,0,5339,5340,3,290,145, + 0,5340,5341,5,3,0,0,5341,5350,1,0,0,0,5342,5343,5,138,0,0,5343,5344, + 5,451,0,0,5344,5345,3,818,409,0,5345,5346,5,282,0,0,5346,5347,5, + 94,0,0,5347,5348,3,814,407,0,5348,5350,1,0,0,0,5349,5293,1,0,0,0, + 5349,5299,1,0,0,0,5349,5305,1,0,0,0,5349,5313,1,0,0,0,5349,5329, + 1,0,0,0,5349,5334,1,0,0,0,5349,5342,1,0,0,0,5350,455,1,0,0,0,5351, + 5353,5,46,0,0,5352,5354,3,366,183,0,5353,5352,1,0,0,0,5353,5354, + 1,0,0,0,5354,5355,1,0,0,0,5355,5356,5,321,0,0,5356,5357,3,818,409, + 0,5357,5358,5,36,0,0,5358,5359,5,80,0,0,5359,5360,7,65,0,0,5360, + 5361,5,94,0,0,5361,5363,3,780,390,0,5362,5364,3,638,319,0,5363,5362, + 1,0,0,0,5363,5364,1,0,0,0,5364,5365,1,0,0,0,5365,5367,5,57,0,0,5366, + 5368,7,66,0,0,5367,5366,1,0,0,0,5367,5368,1,0,0,0,5368,5385,1,0, + 0,0,5369,5386,5,270,0,0,5370,5386,3,458,229,0,5371,5373,5,2,0,0, + 5372,5374,3,458,229,0,5373,5372,1,0,0,0,5373,5374,1,0,0,0,5374,5381, + 1,0,0,0,5375,5377,5,7,0,0,5376,5378,3,458,229,0,5377,5376,1,0,0, + 0,5377,5378,1,0,0,0,5378,5380,1,0,0,0,5379,5375,1,0,0,0,5380,5383, + 1,0,0,0,5381,5379,1,0,0,0,5381,5382,1,0,0,0,5382,5384,1,0,0,0,5383, + 5381,1,0,0,0,5384,5386,5,3,0,0,5385,5369,1,0,0,0,5385,5370,1,0,0, + 0,5385,5371,1,0,0,0,5386,457,1,0,0,0,5387,5393,3,560,280,0,5388, + 5393,3,538,269,0,5389,5393,3,552,276,0,5390,5393,3,548,274,0,5391, + 5393,3,460,230,0,5392,5387,1,0,0,0,5392,5388,1,0,0,0,5392,5389,1, + 0,0,0,5392,5390,1,0,0,0,5392,5391,1,0,0,0,5393,459,1,0,0,0,5394, + 5395,5,271,0,0,5395,5397,3,818,409,0,5396,5398,3,462,231,0,5397, + 5396,1,0,0,0,5397,5398,1,0,0,0,5398,461,1,0,0,0,5399,5400,5,6,0, + 0,5400,5401,3,808,404,0,5401,463,1,0,0,0,5402,5403,5,252,0,0,5403, + 5404,3,818,409,0,5404,465,1,0,0,0,5405,5408,5,366,0,0,5406,5409, + 3,818,409,0,5407,5409,5,9,0,0,5408,5406,1,0,0,0,5408,5407,1,0,0, + 0,5409,467,1,0,0,0,5410,5412,5,146,0,0,5411,5413,3,470,235,0,5412, + 5411,1,0,0,0,5412,5413,1,0,0,0,5413,5415,1,0,0,0,5414,5416,3,474, + 237,0,5415,5414,1,0,0,0,5415,5416,1,0,0,0,5416,5456,1,0,0,0,5417, + 5418,5,340,0,0,5418,5420,5,356,0,0,5419,5421,3,474,237,0,5420,5419, + 1,0,0,0,5420,5421,1,0,0,0,5421,5456,1,0,0,0,5422,5423,5,322,0,0, + 5423,5456,3,818,409,0,5424,5426,5,308,0,0,5425,5427,5,322,0,0,5426, + 5425,1,0,0,0,5426,5427,1,0,0,0,5427,5428,1,0,0,0,5428,5456,3,818, + 409,0,5429,5430,5,290,0,0,5430,5431,5,356,0,0,5431,5456,3,808,404, + 0,5432,5433,7,67,0,0,5433,5434,5,291,0,0,5434,5456,3,808,404,0,5435, + 5437,7,68,0,0,5436,5438,3,470,235,0,5437,5436,1,0,0,0,5437,5438, + 1,0,0,0,5438,5444,1,0,0,0,5439,5441,5,33,0,0,5440,5442,5,269,0,0, + 5441,5440,1,0,0,0,5441,5442,1,0,0,0,5442,5443,1,0,0,0,5443,5445, + 5,153,0,0,5444,5439,1,0,0,0,5444,5445,1,0,0,0,5445,5456,1,0,0,0, + 5446,5448,5,319,0,0,5447,5449,3,470,235,0,5448,5447,1,0,0,0,5448, + 5449,1,0,0,0,5449,5450,1,0,0,0,5450,5452,5,94,0,0,5451,5453,5,322, + 0,0,5452,5451,1,0,0,0,5452,5453,1,0,0,0,5453,5454,1,0,0,0,5454,5456, + 3,818,409,0,5455,5410,1,0,0,0,5455,5417,1,0,0,0,5455,5422,1,0,0, + 0,5455,5424,1,0,0,0,5455,5429,1,0,0,0,5455,5432,1,0,0,0,5455,5435, + 1,0,0,0,5455,5446,1,0,0,0,5456,469,1,0,0,0,5457,5458,7,69,0,0,5458, + 471,1,0,0,0,5459,5460,5,244,0,0,5460,5461,5,251,0,0,5461,5469,3, + 50,25,0,5462,5463,5,300,0,0,5463,5469,7,70,0,0,5464,5466,5,77,0, + 0,5465,5464,1,0,0,0,5465,5466,1,0,0,0,5466,5467,1,0,0,0,5467,5469, + 5,54,0,0,5468,5459,1,0,0,0,5468,5462,1,0,0,0,5468,5465,1,0,0,0,5469, + 473,1,0,0,0,5470,5477,3,472,236,0,5471,5473,5,6,0,0,5472,5471,1, + 0,0,0,5472,5473,1,0,0,0,5473,5474,1,0,0,0,5474,5476,3,472,236,0, + 5475,5472,1,0,0,0,5476,5479,1,0,0,0,5477,5475,1,0,0,0,5477,5478, + 1,0,0,0,5478,475,1,0,0,0,5479,5477,1,0,0,0,5480,5483,5,46,0,0,5481, + 5482,5,82,0,0,5482,5484,5,311,0,0,5483,5481,1,0,0,0,5483,5484,1, + 0,0,0,5484,5486,1,0,0,0,5485,5487,3,122,61,0,5486,5485,1,0,0,0,5486, + 5487,1,0,0,0,5487,5503,1,0,0,0,5488,5489,5,376,0,0,5489,5491,3,776, + 388,0,5490,5492,3,146,73,0,5491,5490,1,0,0,0,5491,5492,1,0,0,0,5492, + 5494,1,0,0,0,5493,5495,3,102,51,0,5494,5493,1,0,0,0,5494,5495,1, + 0,0,0,5495,5504,1,0,0,0,5496,5497,5,303,0,0,5497,5498,5,376,0,0, + 5498,5499,3,776,388,0,5499,5501,3,144,72,0,5500,5502,3,102,51,0, + 5501,5500,1,0,0,0,5501,5502,1,0,0,0,5502,5504,1,0,0,0,5503,5488, + 1,0,0,0,5503,5496,1,0,0,0,5504,5505,1,0,0,0,5505,5506,5,36,0,0,5506, + 5513,3,560,280,0,5507,5509,5,105,0,0,5508,5510,7,71,0,0,5509,5508, + 1,0,0,0,5509,5510,1,0,0,0,5510,5511,1,0,0,0,5511,5512,5,42,0,0,5512, + 5514,5,279,0,0,5513,5507,1,0,0,0,5513,5514,1,0,0,0,5514,477,1,0, + 0,0,5515,5516,5,253,0,0,5516,5517,3,808,404,0,5517,479,1,0,0,0,5518, + 5519,5,46,0,0,5519,5520,5,175,0,0,5520,5522,3,786,393,0,5521,5523, + 5,105,0,0,5522,5521,1,0,0,0,5522,5523,1,0,0,0,5523,5529,1,0,0,0, + 5524,5526,3,482,241,0,5525,5524,1,0,0,0,5526,5527,1,0,0,0,5527,5525, + 1,0,0,0,5527,5528,1,0,0,0,5528,5530,1,0,0,0,5529,5525,1,0,0,0,5529, + 5530,1,0,0,0,5530,481,1,0,0,0,5531,5532,5,164,0,0,5532,5540,5,74, + 0,0,5533,5540,5,194,0,0,5534,5540,5,255,0,0,5535,5540,5,282,0,0, + 5536,5540,5,351,0,0,5537,5540,5,353,0,0,5538,5540,3,826,413,0,5539, + 5531,1,0,0,0,5539,5533,1,0,0,0,5539,5534,1,0,0,0,5539,5535,1,0,0, + 0,5539,5536,1,0,0,0,5539,5537,1,0,0,0,5539,5538,1,0,0,0,5540,5542, + 1,0,0,0,5541,5543,5,10,0,0,5542,5541,1,0,0,0,5542,5543,1,0,0,0,5543, + 5547,1,0,0,0,5544,5548,3,812,406,0,5545,5548,3,54,27,0,5546,5548, + 5,53,0,0,5547,5544,1,0,0,0,5547,5545,1,0,0,0,5547,5546,1,0,0,0,5548, + 483,1,0,0,0,5549,5550,5,138,0,0,5550,5551,5,175,0,0,5551,5567,3, + 788,394,0,5552,5553,5,333,0,0,5553,5554,5,351,0,0,5554,5556,3,768, + 384,0,5555,5552,1,0,0,0,5555,5556,1,0,0,0,5556,5568,1,0,0,0,5557, + 5559,5,105,0,0,5558,5557,1,0,0,0,5558,5559,1,0,0,0,5559,5561,1,0, + 0,0,5560,5562,3,482,241,0,5561,5560,1,0,0,0,5562,5563,1,0,0,0,5563, + 5561,1,0,0,0,5563,5564,1,0,0,0,5564,5566,1,0,0,0,5565,5558,1,0,0, + 0,5565,5566,1,0,0,0,5566,5568,1,0,0,0,5567,5555,1,0,0,0,5567,5565, + 1,0,0,0,5568,485,1,0,0,0,5569,5570,5,138,0,0,5570,5571,5,175,0,0, + 5571,5573,3,788,394,0,5572,5574,3,64,32,0,5573,5572,1,0,0,0,5573, + 5574,1,0,0,0,5574,487,1,0,0,0,5575,5576,5,138,0,0,5576,5577,5,108, + 0,0,5577,5578,3,316,158,0,5578,5579,5,305,0,0,5579,5580,5,375,0, + 0,5580,489,1,0,0,0,5581,5582,5,138,0,0,5582,5583,5,349,0,0,5583, + 5584,7,16,0,0,5584,5585,3,40,20,0,5585,491,1,0,0,0,5586,5587,5,46, + 0,0,5587,5588,5,189,0,0,5588,5590,3,316,158,0,5589,5591,5,36,0,0, + 5590,5589,1,0,0,0,5590,5591,1,0,0,0,5591,5592,1,0,0,0,5592,5596, + 3,652,326,0,5593,5595,3,134,67,0,5594,5593,1,0,0,0,5595,5598,1,0, + 0,0,5596,5594,1,0,0,0,5596,5597,1,0,0,0,5597,493,1,0,0,0,5598,5596, + 1,0,0,0,5599,5600,5,138,0,0,5600,5601,5,189,0,0,5601,5624,3,316, + 158,0,5602,5625,3,94,47,0,5603,5604,7,15,0,0,5604,5605,5,77,0,0, + 5605,5625,5,78,0,0,5606,5609,5,133,0,0,5607,5608,5,45,0,0,5608,5610, + 3,818,409,0,5609,5607,1,0,0,0,5609,5610,1,0,0,0,5610,5611,1,0,0, + 0,5611,5625,3,142,71,0,5612,5613,5,191,0,0,5613,5615,5,45,0,0,5614, + 5616,3,422,211,0,5615,5614,1,0,0,0,5615,5616,1,0,0,0,5616,5617,1, + 0,0,0,5617,5619,3,818,409,0,5618,5620,3,96,48,0,5619,5618,1,0,0, + 0,5619,5620,1,0,0,0,5620,5625,1,0,0,0,5621,5622,5,372,0,0,5622,5623, + 5,45,0,0,5623,5625,3,818,409,0,5624,5602,1,0,0,0,5624,5603,1,0,0, + 0,5624,5606,1,0,0,0,5624,5612,1,0,0,0,5624,5621,1,0,0,0,5625,495, + 1,0,0,0,5626,5627,5,138,0,0,5627,5628,5,355,0,0,5628,5629,5,325, + 0,0,5629,5630,5,185,0,0,5630,5631,3,316,158,0,5631,5632,3,284,142, + 0,5632,497,1,0,0,0,5633,5634,5,138,0,0,5634,5635,5,355,0,0,5635, + 5636,5,325,0,0,5636,5637,5,163,0,0,5637,5638,3,316,158,0,5638,5639, + 7,72,0,0,5639,5640,5,257,0,0,5640,5641,5,62,0,0,5641,5642,3,784, + 392,0,5642,5643,5,105,0,0,5643,5644,3,314,157,0,5644,5675,1,0,0, + 0,5645,5646,5,138,0,0,5646,5647,5,355,0,0,5647,5648,5,325,0,0,5648, + 5649,5,163,0,0,5649,5650,3,316,158,0,5650,5651,5,138,0,0,5651,5654, + 5,257,0,0,5652,5653,5,62,0,0,5653,5655,3,784,392,0,5654,5652,1,0, + 0,0,5654,5655,1,0,0,0,5655,5656,1,0,0,0,5656,5657,5,311,0,0,5657, + 5658,3,316,158,0,5658,5659,5,105,0,0,5659,5660,3,316,158,0,5660, + 5675,1,0,0,0,5661,5662,5,138,0,0,5662,5663,5,355,0,0,5663,5664,5, + 325,0,0,5664,5665,5,163,0,0,5665,5666,3,316,158,0,5666,5667,5,191, + 0,0,5667,5669,5,257,0,0,5668,5670,3,422,211,0,5669,5668,1,0,0,0, + 5669,5670,1,0,0,0,5670,5671,1,0,0,0,5671,5672,5,62,0,0,5672,5673, + 3,784,392,0,5673,5675,1,0,0,0,5674,5633,1,0,0,0,5674,5645,1,0,0, + 0,5674,5661,1,0,0,0,5675,499,1,0,0,0,5676,5678,5,46,0,0,5677,5679, + 5,53,0,0,5678,5677,1,0,0,0,5678,5679,1,0,0,0,5679,5680,1,0,0,0,5680, + 5681,5,168,0,0,5681,5682,3,316,158,0,5682,5683,5,62,0,0,5683,5684, + 3,808,404,0,5684,5685,5,94,0,0,5685,5686,3,808,404,0,5686,5687,5, + 64,0,0,5687,5688,3,316,158,0,5688,501,1,0,0,0,5689,5691,5,158,0, + 0,5690,5692,3,514,257,0,5691,5690,1,0,0,0,5691,5692,1,0,0,0,5692, + 5697,1,0,0,0,5693,5695,3,774,387,0,5694,5696,3,170,85,0,5695,5694, + 1,0,0,0,5695,5696,1,0,0,0,5696,5698,1,0,0,0,5697,5693,1,0,0,0,5697, + 5698,1,0,0,0,5698,5715,1,0,0,0,5699,5700,5,158,0,0,5700,5701,5,2, + 0,0,5701,5706,3,514,257,0,5702,5703,5,6,0,0,5703,5705,3,514,257, + 0,5704,5702,1,0,0,0,5705,5708,1,0,0,0,5706,5704,1,0,0,0,5706,5707, + 1,0,0,0,5707,5709,1,0,0,0,5708,5706,1,0,0,0,5709,5710,5,3,0,0,5710, + 5712,3,774,387,0,5711,5713,3,170,85,0,5712,5711,1,0,0,0,5712,5713, + 1,0,0,0,5713,5715,1,0,0,0,5714,5689,1,0,0,0,5714,5699,1,0,0,0,5715, + 503,1,0,0,0,5716,5732,5,370,0,0,5717,5719,5,113,0,0,5718,5717,1, + 0,0,0,5718,5719,1,0,0,0,5719,5721,1,0,0,0,5720,5722,5,112,0,0,5721, + 5720,1,0,0,0,5721,5722,1,0,0,0,5722,5724,1,0,0,0,5723,5725,3,514, + 257,0,5724,5723,1,0,0,0,5724,5725,1,0,0,0,5725,5727,1,0,0,0,5726, + 5728,3,508,254,0,5727,5726,1,0,0,0,5727,5728,1,0,0,0,5728,5733,1, + 0,0,0,5729,5731,3,524,262,0,5730,5729,1,0,0,0,5730,5731,1,0,0,0, + 5731,5733,1,0,0,0,5732,5718,1,0,0,0,5732,5730,1,0,0,0,5733,5735, + 1,0,0,0,5734,5736,3,518,259,0,5735,5734,1,0,0,0,5735,5736,1,0,0, + 0,5736,505,1,0,0,0,5737,5752,3,508,254,0,5738,5740,3,514,257,0,5739, + 5738,1,0,0,0,5739,5740,1,0,0,0,5740,5753,1,0,0,0,5741,5742,5,2,0, + 0,5742,5747,3,512,256,0,5743,5744,5,6,0,0,5744,5746,3,512,256,0, + 5745,5743,1,0,0,0,5746,5749,1,0,0,0,5747,5745,1,0,0,0,5747,5748, + 1,0,0,0,5748,5750,1,0,0,0,5749,5747,1,0,0,0,5750,5751,5,3,0,0,5751, + 5753,1,0,0,0,5752,5739,1,0,0,0,5752,5741,1,0,0,0,5753,5755,1,0,0, + 0,5754,5756,3,518,259,0,5755,5754,1,0,0,0,5755,5756,1,0,0,0,5756, + 507,1,0,0,0,5757,5758,7,73,0,0,5758,509,1,0,0,0,5759,5762,3,822, + 411,0,5760,5762,3,508,254,0,5761,5759,1,0,0,0,5761,5760,1,0,0,0, + 5762,5765,1,0,0,0,5763,5766,3,54,27,0,5764,5766,3,202,101,0,5765, + 5763,1,0,0,0,5765,5764,1,0,0,0,5765,5766,1,0,0,0,5766,511,1,0,0, + 0,5767,5769,7,74,0,0,5768,5770,7,75,0,0,5769,5768,1,0,0,0,5769,5770, + 1,0,0,0,5770,5777,1,0,0,0,5771,5774,5,548,0,0,5772,5775,3,202,101, + 0,5773,5775,3,808,404,0,5774,5772,1,0,0,0,5774,5773,1,0,0,0,5775, + 5777,1,0,0,0,5776,5767,1,0,0,0,5776,5771,1,0,0,0,5777,513,1,0,0, + 0,5778,5780,5,128,0,0,5779,5781,7,75,0,0,5780,5779,1,0,0,0,5780, + 5781,1,0,0,0,5781,515,1,0,0,0,5782,5784,3,774,387,0,5783,5785,3, + 144,72,0,5784,5783,1,0,0,0,5784,5785,1,0,0,0,5785,517,1,0,0,0,5786, + 5791,3,516,258,0,5787,5788,5,6,0,0,5788,5790,3,516,258,0,5789,5787, + 1,0,0,0,5790,5793,1,0,0,0,5791,5789,1,0,0,0,5791,5792,1,0,0,0,5792, + 519,1,0,0,0,5793,5791,1,0,0,0,5794,5805,5,203,0,0,5795,5806,3,524, + 262,0,5796,5798,5,128,0,0,5797,5796,1,0,0,0,5797,5798,1,0,0,0,5798, + 5806,1,0,0,0,5799,5801,3,508,254,0,5800,5802,3,514,257,0,5801,5800, + 1,0,0,0,5801,5802,1,0,0,0,5802,5804,1,0,0,0,5803,5799,1,0,0,0,5803, + 5804,1,0,0,0,5804,5806,1,0,0,0,5805,5795,1,0,0,0,5805,5797,1,0,0, + 0,5805,5803,1,0,0,0,5806,5807,1,0,0,0,5807,5808,3,522,261,0,5808, + 521,1,0,0,0,5809,5819,3,560,280,0,5810,5819,3,538,269,0,5811,5819, + 3,552,276,0,5812,5819,3,548,274,0,5813,5819,3,558,279,0,5814,5819, + 3,186,93,0,5815,5819,3,192,96,0,5816,5819,3,194,97,0,5817,5819,3, + 532,266,0,5818,5809,1,0,0,0,5818,5810,1,0,0,0,5818,5811,1,0,0,0, + 5818,5812,1,0,0,0,5818,5813,1,0,0,0,5818,5814,1,0,0,0,5818,5815, + 1,0,0,0,5818,5816,1,0,0,0,5818,5817,1,0,0,0,5819,523,1,0,0,0,5820, + 5821,5,2,0,0,5821,5826,3,510,255,0,5822,5823,5,6,0,0,5823,5825,3, + 510,255,0,5824,5822,1,0,0,0,5825,5828,1,0,0,0,5826,5824,1,0,0,0, + 5826,5827,1,0,0,0,5827,5829,1,0,0,0,5828,5826,1,0,0,0,5829,5830, + 5,3,0,0,5830,525,1,0,0,0,5831,5832,5,290,0,0,5832,5834,3,818,409, + 0,5833,5835,3,528,264,0,5834,5833,1,0,0,0,5834,5835,1,0,0,0,5835, + 5836,1,0,0,0,5836,5837,5,36,0,0,5837,5838,3,530,265,0,5838,527,1, + 0,0,0,5839,5840,5,2,0,0,5840,5845,3,652,326,0,5841,5842,5,6,0,0, + 5842,5844,3,652,326,0,5843,5841,1,0,0,0,5844,5847,1,0,0,0,5845,5843, + 1,0,0,0,5845,5846,1,0,0,0,5846,5848,1,0,0,0,5847,5845,1,0,0,0,5848, + 5849,5,3,0,0,5849,529,1,0,0,0,5850,5855,3,560,280,0,5851,5855,3, + 538,269,0,5852,5855,3,552,276,0,5853,5855,3,548,274,0,5854,5850, + 1,0,0,0,5854,5851,1,0,0,0,5854,5852,1,0,0,0,5854,5853,1,0,0,0,5855, + 531,1,0,0,0,5856,5857,5,202,0,0,5857,5859,3,818,409,0,5858,5860, + 3,534,267,0,5859,5858,1,0,0,0,5859,5860,1,0,0,0,5860,5880,1,0,0, + 0,5861,5863,5,46,0,0,5862,5864,3,122,61,0,5863,5862,1,0,0,0,5863, + 5864,1,0,0,0,5864,5865,1,0,0,0,5865,5867,5,92,0,0,5866,5868,3,294, + 147,0,5867,5866,1,0,0,0,5867,5868,1,0,0,0,5868,5869,1,0,0,0,5869, + 5870,3,188,94,0,5870,5871,5,36,0,0,5871,5872,5,202,0,0,5872,5874, + 3,818,409,0,5873,5875,3,534,267,0,5874,5873,1,0,0,0,5874,5875,1, + 0,0,0,5875,5877,1,0,0,0,5876,5878,3,190,95,0,5877,5876,1,0,0,0,5877, + 5878,1,0,0,0,5878,5880,1,0,0,0,5879,5856,1,0,0,0,5879,5861,1,0,0, + 0,5880,533,1,0,0,0,5881,5882,5,2,0,0,5882,5883,3,730,365,0,5883, + 5884,5,3,0,0,5884,535,1,0,0,0,5885,5887,5,177,0,0,5886,5888,5,290, + 0,0,5887,5886,1,0,0,0,5887,5888,1,0,0,0,5888,5891,1,0,0,0,5889,5892, + 3,818,409,0,5890,5892,5,30,0,0,5891,5889,1,0,0,0,5891,5890,1,0,0, + 0,5892,537,1,0,0,0,5893,5895,3,572,286,0,5894,5893,1,0,0,0,5894, + 5895,1,0,0,0,5895,5896,1,0,0,0,5896,5897,5,241,0,0,5897,5898,5,71, + 0,0,5898,5901,3,774,387,0,5899,5900,5,36,0,0,5900,5902,3,818,409, + 0,5901,5899,1,0,0,0,5901,5902,1,0,0,0,5902,5903,1,0,0,0,5903,5925, + 3,540,270,0,5904,5905,5,80,0,0,5905,5913,5,464,0,0,5906,5908,3,360, + 180,0,5907,5909,3,638,319,0,5908,5907,1,0,0,0,5908,5909,1,0,0,0, + 5909,5914,1,0,0,0,5910,5911,5,80,0,0,5911,5912,5,45,0,0,5912,5914, + 3,818,409,0,5913,5906,1,0,0,0,5913,5910,1,0,0,0,5913,5914,1,0,0, + 0,5914,5915,1,0,0,0,5915,5923,5,57,0,0,5916,5917,5,369,0,0,5917, + 5918,5,333,0,0,5918,5920,3,554,277,0,5919,5921,3,638,319,0,5920, + 5919,1,0,0,0,5920,5921,1,0,0,0,5921,5924,1,0,0,0,5922,5924,5,270, + 0,0,5923,5916,1,0,0,0,5923,5922,1,0,0,0,5924,5926,1,0,0,0,5925,5904, + 1,0,0,0,5925,5926,1,0,0,0,5926,5928,1,0,0,0,5927,5929,3,546,273, + 0,5928,5927,1,0,0,0,5928,5929,1,0,0,0,5929,539,1,0,0,0,5930,5931, + 5,2,0,0,5931,5932,3,542,271,0,5932,5933,5,3,0,0,5933,5935,1,0,0, + 0,5934,5930,1,0,0,0,5934,5935,1,0,0,0,5935,5939,1,0,0,0,5936,5937, + 5,463,0,0,5937,5938,7,76,0,0,5938,5940,5,450,0,0,5939,5936,1,0,0, + 0,5939,5940,1,0,0,0,5940,5943,1,0,0,0,5941,5944,3,910,455,0,5942, + 5944,3,560,280,0,5943,5941,1,0,0,0,5943,5942,1,0,0,0,5944,541,1, + 0,0,0,5945,5950,3,544,272,0,5946,5947,5,6,0,0,5947,5949,3,544,272, + 0,5948,5946,1,0,0,0,5949,5952,1,0,0,0,5950,5948,1,0,0,0,5950,5951, + 1,0,0,0,5951,543,1,0,0,0,5952,5950,1,0,0,0,5953,5954,3,800,400,0, + 5954,5955,3,754,377,0,5955,545,1,0,0,0,5956,5957,5,87,0,0,5957,5958, + 3,756,378,0,5958,547,1,0,0,0,5959,5961,3,572,286,0,5960,5959,1,0, + 0,0,5960,5961,1,0,0,0,5961,5962,1,0,0,0,5962,5963,5,182,0,0,5963, + 5964,5,64,0,0,5964,5967,3,630,315,0,5965,5966,5,100,0,0,5966,5968, + 3,612,306,0,5967,5965,1,0,0,0,5967,5968,1,0,0,0,5968,5970,1,0,0, + 0,5969,5971,3,640,320,0,5970,5969,1,0,0,0,5970,5971,1,0,0,0,5971, + 5973,1,0,0,0,5972,5974,3,546,273,0,5973,5972,1,0,0,0,5973,5974,1, + 0,0,0,5974,549,1,0,0,0,5975,5977,5,256,0,0,5976,5978,5,92,0,0,5977, + 5976,1,0,0,0,5977,5978,1,0,0,0,5978,5979,1,0,0,0,5979,5994,3,628, + 314,0,5980,5991,5,68,0,0,5981,5982,7,77,0,0,5982,5992,7,78,0,0,5983, + 5988,5,334,0,0,5984,5985,5,369,0,0,5985,5989,5,201,0,0,5986,5987, + 5,414,0,0,5987,5989,5,201,0,0,5988,5984,1,0,0,0,5988,5986,1,0,0, + 0,5988,5989,1,0,0,0,5989,5992,1,0,0,0,5990,5992,5,201,0,0,5991,5981, + 1,0,0,0,5991,5983,1,0,0,0,5991,5990,1,0,0,0,5992,5993,1,0,0,0,5993, + 5995,5,263,0,0,5994,5980,1,0,0,0,5994,5995,1,0,0,0,5995,5997,1,0, + 0,0,5996,5998,5,272,0,0,5997,5996,1,0,0,0,5997,5998,1,0,0,0,5998, + 551,1,0,0,0,5999,6001,3,572,286,0,6000,5999,1,0,0,0,6000,6001,1, + 0,0,0,6001,6002,1,0,0,0,6002,6003,5,369,0,0,6003,6004,3,630,315, + 0,6004,6005,5,333,0,0,6005,6007,3,554,277,0,6006,6008,3,610,305, + 0,6007,6006,1,0,0,0,6007,6008,1,0,0,0,6008,6010,1,0,0,0,6009,6011, + 3,640,320,0,6010,6009,1,0,0,0,6010,6011,1,0,0,0,6011,6013,1,0,0, + 0,6012,6014,3,546,273,0,6013,6012,1,0,0,0,6013,6014,1,0,0,0,6014, + 553,1,0,0,0,6015,6020,3,556,278,0,6016,6017,5,6,0,0,6017,6019,3, + 556,278,0,6018,6016,1,0,0,0,6019,6022,1,0,0,0,6020,6018,1,0,0,0, + 6020,6021,1,0,0,0,6021,555,1,0,0,0,6022,6020,1,0,0,0,6023,6024,3, + 544,272,0,6024,6025,5,10,0,0,6025,6026,3,674,337,0,6026,6042,1,0, + 0,0,6027,6028,5,2,0,0,6028,6029,3,542,271,0,6029,6030,5,3,0,0,6030, + 6039,5,10,0,0,6031,6033,5,414,0,0,6032,6031,1,0,0,0,6032,6033,1, + 0,0,0,6033,6034,1,0,0,0,6034,6040,3,674,337,0,6035,6036,5,2,0,0, + 6036,6037,3,566,283,0,6037,6038,5,3,0,0,6038,6040,1,0,0,0,6039,6032, + 1,0,0,0,6039,6035,1,0,0,0,6040,6042,1,0,0,0,6041,6023,1,0,0,0,6041, + 6027,1,0,0,0,6042,557,1,0,0,0,6043,6044,5,178,0,0,6044,6053,3,818, + 409,0,6045,6047,5,269,0,0,6046,6045,1,0,0,0,6046,6047,1,0,0,0,6047, + 6048,1,0,0,0,6048,6052,5,324,0,0,6049,6052,5,107,0,0,6050,6052,5, + 240,0,0,6051,6046,1,0,0,0,6051,6049,1,0,0,0,6051,6050,1,0,0,0,6052, + 6055,1,0,0,0,6053,6051,1,0,0,0,6053,6054,1,0,0,0,6054,6056,1,0,0, + 0,6055,6053,1,0,0,0,6056,6059,5,172,0,0,6057,6058,7,26,0,0,6058, + 6060,5,217,0,0,6059,6057,1,0,0,0,6059,6060,1,0,0,0,6060,6061,1,0, + 0,0,6061,6062,5,62,0,0,6062,6063,3,560,280,0,6063,559,1,0,0,0,6064, + 6067,3,564,282,0,6065,6067,3,562,281,0,6066,6064,1,0,0,0,6066,6065, + 1,0,0,0,6067,561,1,0,0,0,6068,6071,5,2,0,0,6069,6072,3,564,282,0, + 6070,6072,3,562,281,0,6071,6069,1,0,0,0,6071,6070,1,0,0,0,6072,6073, + 1,0,0,0,6073,6074,5,3,0,0,6074,563,1,0,0,0,6075,6077,3,572,286,0, + 6076,6075,1,0,0,0,6076,6077,1,0,0,0,6077,6078,1,0,0,0,6078,6080, + 3,566,283,0,6079,6081,3,586,293,0,6080,6079,1,0,0,0,6080,6081,1, + 0,0,0,6081,6090,1,0,0,0,6082,6084,3,606,303,0,6083,6085,3,590,295, + 0,6084,6083,1,0,0,0,6084,6085,1,0,0,0,6085,6091,1,0,0,0,6086,6088, + 3,590,295,0,6087,6089,3,606,303,0,6088,6087,1,0,0,0,6088,6089,1, + 0,0,0,6089,6091,1,0,0,0,6090,6082,1,0,0,0,6090,6086,1,0,0,0,6090, + 6091,1,0,0,0,6091,565,1,0,0,0,6092,6095,3,568,284,0,6093,6095,3, + 562,281,0,6094,6092,1,0,0,0,6094,6093,1,0,0,0,6095,567,1,0,0,0,6096, + 6106,5,88,0,0,6097,6099,5,30,0,0,6098,6097,1,0,0,0,6098,6099,1,0, + 0,0,6099,6101,1,0,0,0,6100,6102,3,580,290,0,6101,6100,1,0,0,0,6101, + 6102,1,0,0,0,6102,6107,1,0,0,0,6103,6105,3,584,292,0,6104,6103,1, + 0,0,0,6104,6105,1,0,0,0,6105,6107,1,0,0,0,6106,6098,1,0,0,0,6106, + 6104,1,0,0,0,6107,6108,1,0,0,0,6108,6119,3,932,466,0,6109,6119,3, + 608,304,0,6110,6111,5,92,0,0,6111,6119,3,624,312,0,6112,6113,3,562, + 281,0,6113,6116,3,570,285,0,6114,6117,3,568,284,0,6115,6117,3,562, + 281,0,6116,6114,1,0,0,0,6116,6115,1,0,0,0,6117,6119,1,0,0,0,6118, + 6096,1,0,0,0,6118,6109,1,0,0,0,6118,6110,1,0,0,0,6118,6112,1,0,0, + 0,6119,6127,1,0,0,0,6120,6123,3,570,285,0,6121,6124,3,568,284,0, + 6122,6124,3,562,281,0,6123,6121,1,0,0,0,6123,6122,1,0,0,0,6124,6126, + 1,0,0,0,6125,6120,1,0,0,0,6126,6129,1,0,0,0,6127,6125,1,0,0,0,6127, + 6128,1,0,0,0,6128,569,1,0,0,0,6129,6127,1,0,0,0,6130,6132,7,79,0, + 0,6131,6133,7,80,0,0,6132,6131,1,0,0,0,6132,6133,1,0,0,0,6133,571, + 1,0,0,0,6134,6136,5,105,0,0,6135,6137,5,303,0,0,6136,6135,1,0,0, + 0,6136,6137,1,0,0,0,6137,6138,1,0,0,0,6138,6143,3,574,287,0,6139, + 6140,5,6,0,0,6140,6142,3,574,287,0,6141,6139,1,0,0,0,6142,6145,1, + 0,0,0,6143,6141,1,0,0,0,6143,6144,1,0,0,0,6144,573,1,0,0,0,6145, + 6143,1,0,0,0,6146,6148,3,818,409,0,6147,6149,3,144,72,0,6148,6147, + 1,0,0,0,6148,6149,1,0,0,0,6149,6150,1,0,0,0,6150,6155,5,36,0,0,6151, + 6153,5,77,0,0,6152,6151,1,0,0,0,6152,6153,1,0,0,0,6153,6154,1,0, + 0,0,6154,6156,5,259,0,0,6155,6152,1,0,0,0,6155,6156,1,0,0,0,6156, + 6157,1,0,0,0,6157,6158,5,2,0,0,6158,6159,3,530,265,0,6159,6161,5, + 3,0,0,6160,6162,3,576,288,0,6161,6160,1,0,0,0,6161,6162,1,0,0,0, + 6162,6164,1,0,0,0,6163,6165,3,578,289,0,6164,6163,1,0,0,0,6164,6165, + 1,0,0,0,6165,575,1,0,0,0,6166,6167,5,325,0,0,6167,6168,7,81,0,0, + 6168,6169,5,207,0,0,6169,6170,5,147,0,0,6170,6171,3,148,74,0,6171, + 6172,5,333,0,0,6172,6173,3,800,400,0,6173,577,1,0,0,0,6174,6175, + 5,173,0,0,6175,6176,3,148,74,0,6176,6177,5,333,0,0,6177,6183,3,800, + 400,0,6178,6179,5,94,0,0,6179,6180,3,818,409,0,6180,6181,5,53,0, + 0,6181,6182,3,818,409,0,6182,6184,1,0,0,0,6183,6178,1,0,0,0,6183, + 6184,1,0,0,0,6184,6185,1,0,0,0,6185,6186,5,100,0,0,6186,6187,3,800, + 400,0,6187,579,1,0,0,0,6188,6194,5,71,0,0,6189,6191,5,346,0,0,6190, + 6189,1,0,0,0,6190,6191,1,0,0,0,6191,6192,1,0,0,0,6192,6195,3,582, + 291,0,6193,6195,3,730,365,0,6194,6190,1,0,0,0,6194,6193,1,0,0,0, + 6195,581,1,0,0,0,6196,6198,7,20,0,0,6197,6196,1,0,0,0,6197,6198, + 1,0,0,0,6198,6199,1,0,0,0,6199,6201,7,21,0,0,6200,6202,5,92,0,0, + 6201,6200,1,0,0,0,6201,6202,1,0,0,0,6202,6203,1,0,0,0,6203,6212, + 3,772,386,0,6204,6206,5,367,0,0,6205,6204,1,0,0,0,6205,6206,1,0, + 0,0,6206,6208,1,0,0,0,6207,6209,5,92,0,0,6208,6207,1,0,0,0,6208, + 6209,1,0,0,0,6209,6210,1,0,0,0,6210,6212,3,772,386,0,6211,6197,1, + 0,0,0,6211,6205,1,0,0,0,6212,583,1,0,0,0,6213,6216,5,56,0,0,6214, + 6215,5,80,0,0,6215,6217,3,534,267,0,6216,6214,1,0,0,0,6216,6217, + 1,0,0,0,6217,585,1,0,0,0,6218,6219,5,83,0,0,6219,6220,5,147,0,0, + 6220,6225,3,588,294,0,6221,6222,5,6,0,0,6222,6224,3,588,294,0,6223, + 6221,1,0,0,0,6224,6227,1,0,0,0,6225,6223,1,0,0,0,6225,6226,1,0,0, + 0,6226,587,1,0,0,0,6227,6225,1,0,0,0,6228,6232,3,734,367,0,6229, + 6230,5,100,0,0,6230,6233,3,726,363,0,6231,6233,7,55,0,0,6232,6229, + 1,0,0,0,6232,6231,1,0,0,0,6232,6233,1,0,0,0,6233,6236,1,0,0,0,6234, + 6235,5,273,0,0,6235,6237,7,56,0,0,6236,6234,1,0,0,0,6236,6237,1, + 0,0,0,6237,589,1,0,0,0,6238,6240,3,596,298,0,6239,6241,3,594,297, + 0,6240,6239,1,0,0,0,6240,6241,1,0,0,0,6241,6250,1,0,0,0,6242,6245, + 3,592,296,0,6243,6245,3,594,297,0,6244,6242,1,0,0,0,6244,6243,1, + 0,0,0,6245,6247,1,0,0,0,6246,6248,3,596,298,0,6247,6246,1,0,0,0, + 6247,6248,1,0,0,0,6248,6250,1,0,0,0,6249,6238,1,0,0,0,6249,6244, + 1,0,0,0,6250,591,1,0,0,0,6251,6254,5,74,0,0,6252,6255,3,674,337, + 0,6253,6255,5,30,0,0,6254,6252,1,0,0,0,6254,6253,1,0,0,0,6255,6258, + 1,0,0,0,6256,6257,5,6,0,0,6257,6259,3,674,337,0,6258,6256,1,0,0, + 0,6258,6259,1,0,0,0,6259,593,1,0,0,0,6260,6261,5,61,0,0,6261,6263, + 7,82,0,0,6262,6264,3,598,299,0,6263,6262,1,0,0,0,6263,6264,1,0,0, + 0,6264,6265,1,0,0,0,6265,6269,7,83,0,0,6266,6270,5,81,0,0,6267,6268, + 5,105,0,0,6268,6270,5,467,0,0,6269,6266,1,0,0,0,6269,6267,1,0,0, + 0,6270,595,1,0,0,0,6271,6276,5,79,0,0,6272,6273,3,598,299,0,6273, + 6274,7,83,0,0,6274,6277,1,0,0,0,6275,6277,3,674,337,0,6276,6272, + 1,0,0,0,6276,6275,1,0,0,0,6277,597,1,0,0,0,6278,6279,7,29,0,0,6279, + 6282,7,84,0,0,6280,6282,3,682,341,0,6281,6278,1,0,0,0,6281,6280, + 1,0,0,0,6282,599,1,0,0,0,6283,6284,5,66,0,0,6284,6286,5,147,0,0, + 6285,6287,7,80,0,0,6286,6285,1,0,0,0,6286,6287,1,0,0,0,6287,6288, + 1,0,0,0,6288,6289,3,602,301,0,6289,601,1,0,0,0,6290,6295,3,604,302, + 0,6291,6292,5,6,0,0,6292,6294,3,604,302,0,6293,6291,1,0,0,0,6294, + 6297,1,0,0,0,6295,6293,1,0,0,0,6295,6296,1,0,0,0,6296,603,1,0,0, + 0,6297,6295,1,0,0,0,6298,6322,3,734,367,0,6299,6300,5,2,0,0,6300, + 6322,5,3,0,0,6301,6303,7,85,0,0,6302,6301,1,0,0,0,6302,6303,1,0, + 0,0,6303,6304,1,0,0,0,6304,6305,5,2,0,0,6305,6310,3,734,367,0,6306, + 6307,5,6,0,0,6307,6309,3,734,367,0,6308,6306,1,0,0,0,6309,6312,1, + 0,0,0,6310,6308,1,0,0,0,6310,6311,1,0,0,0,6311,6313,1,0,0,0,6312, + 6310,1,0,0,0,6313,6314,5,3,0,0,6314,6322,1,0,0,0,6315,6316,5,470, + 0,0,6316,6317,5,471,0,0,6317,6318,5,2,0,0,6318,6319,3,602,301,0, + 6319,6320,5,3,0,0,6320,6322,1,0,0,0,6321,6298,1,0,0,0,6321,6299, + 1,0,0,0,6321,6302,1,0,0,0,6321,6315,1,0,0,0,6322,605,1,0,0,0,6323, + 6333,5,62,0,0,6324,6325,5,269,0,0,6325,6327,5,245,0,0,6326,6324, + 1,0,0,0,6326,6327,1,0,0,0,6327,6328,1,0,0,0,6328,6334,5,369,0,0, + 6329,6331,5,245,0,0,6330,6329,1,0,0,0,6330,6331,1,0,0,0,6331,6332, + 1,0,0,0,6332,6334,5,334,0,0,6333,6326,1,0,0,0,6333,6330,1,0,0,0, + 6334,6337,1,0,0,0,6335,6336,5,275,0,0,6336,6338,3,760,380,0,6337, + 6335,1,0,0,0,6337,6338,1,0,0,0,6338,6342,1,0,0,0,6339,6343,5,272, + 0,0,6340,6341,5,465,0,0,6341,6343,5,466,0,0,6342,6339,1,0,0,0,6342, + 6340,1,0,0,0,6342,6343,1,0,0,0,6343,6345,1,0,0,0,6344,6323,1,0,0, + 0,6345,6346,1,0,0,0,6346,6344,1,0,0,0,6346,6347,1,0,0,0,6347,6352, + 1,0,0,0,6348,6349,5,62,0,0,6349,6350,5,300,0,0,6350,6352,5,81,0, + 0,6351,6344,1,0,0,0,6351,6348,1,0,0,0,6352,607,1,0,0,0,6353,6354, + 5,422,0,0,6354,6359,3,534,267,0,6355,6356,5,6,0,0,6356,6358,3,534, + 267,0,6357,6355,1,0,0,0,6358,6361,1,0,0,0,6359,6357,1,0,0,0,6359, + 6360,1,0,0,0,6360,609,1,0,0,0,6361,6359,1,0,0,0,6362,6363,5,64,0, + 0,6363,6364,3,612,306,0,6364,611,1,0,0,0,6365,6370,3,614,307,0,6366, + 6367,5,6,0,0,6367,6369,3,614,307,0,6368,6366,1,0,0,0,6369,6372,1, + 0,0,0,6370,6368,1,0,0,0,6370,6371,1,0,0,0,6371,613,1,0,0,0,6372, + 6370,1,0,0,0,6373,6388,3,624,312,0,6374,6376,5,81,0,0,6375,6374, + 1,0,0,0,6375,6376,1,0,0,0,6376,6377,1,0,0,0,6377,6379,3,778,389, + 0,6378,6380,5,9,0,0,6379,6378,1,0,0,0,6379,6380,1,0,0,0,6380,6382, + 1,0,0,0,6381,6383,3,148,74,0,6382,6381,1,0,0,0,6382,6383,1,0,0,0, + 6383,6385,1,0,0,0,6384,6386,3,638,319,0,6385,6384,1,0,0,0,6385,6386, + 1,0,0,0,6386,6388,1,0,0,0,6387,6373,1,0,0,0,6387,6375,1,0,0,0,6388, + 6390,1,0,0,0,6389,6391,3,616,308,0,6390,6389,1,0,0,0,6390,6391,1, + 0,0,0,6391,6393,1,0,0,0,6392,6394,3,632,316,0,6393,6392,1,0,0,0, + 6393,6394,1,0,0,0,6394,6437,1,0,0,0,6395,6397,5,72,0,0,6396,6395, + 1,0,0,0,6396,6397,1,0,0,0,6397,6410,1,0,0,0,6398,6400,3,646,323, + 0,6399,6401,3,616,308,0,6400,6399,1,0,0,0,6400,6401,1,0,0,0,6401, + 6411,1,0,0,0,6402,6404,3,634,317,0,6403,6405,3,618,309,0,6404,6403, + 1,0,0,0,6404,6405,1,0,0,0,6405,6411,1,0,0,0,6406,6408,3,562,281, + 0,6407,6409,3,616,308,0,6408,6407,1,0,0,0,6408,6409,1,0,0,0,6409, + 6411,1,0,0,0,6410,6398,1,0,0,0,6410,6402,1,0,0,0,6410,6406,1,0,0, + 0,6411,6437,1,0,0,0,6412,6413,5,2,0,0,6413,6430,3,614,307,0,6414, + 6415,5,110,0,0,6415,6416,5,118,0,0,6416,6431,3,614,307,0,6417,6419, + 5,121,0,0,6418,6420,3,620,310,0,6419,6418,1,0,0,0,6419,6420,1,0, + 0,0,6420,6421,1,0,0,0,6421,6422,5,118,0,0,6422,6431,3,614,307,0, + 6423,6425,3,620,310,0,6424,6423,1,0,0,0,6424,6425,1,0,0,0,6425,6426, + 1,0,0,0,6426,6427,5,118,0,0,6427,6428,3,614,307,0,6428,6429,3,622, + 311,0,6429,6431,1,0,0,0,6430,6414,1,0,0,0,6430,6417,1,0,0,0,6430, + 6424,1,0,0,0,6430,6431,1,0,0,0,6431,6432,1,0,0,0,6432,6434,5,3,0, + 0,6433,6435,3,616,308,0,6434,6433,1,0,0,0,6434,6435,1,0,0,0,6435, + 6437,1,0,0,0,6436,6387,1,0,0,0,6436,6396,1,0,0,0,6436,6412,1,0,0, + 0,6437,6456,1,0,0,0,6438,6439,5,110,0,0,6439,6440,5,118,0,0,6440, + 6455,3,614,307,0,6441,6443,5,121,0,0,6442,6444,3,620,310,0,6443, + 6442,1,0,0,0,6443,6444,1,0,0,0,6444,6445,1,0,0,0,6445,6446,5,118, + 0,0,6446,6455,3,614,307,0,6447,6449,3,620,310,0,6448,6447,1,0,0, + 0,6448,6449,1,0,0,0,6449,6450,1,0,0,0,6450,6451,5,118,0,0,6451,6452, + 3,614,307,0,6452,6453,3,622,311,0,6453,6455,1,0,0,0,6454,6438,1, + 0,0,0,6454,6441,1,0,0,0,6454,6448,1,0,0,0,6455,6458,1,0,0,0,6456, + 6454,1,0,0,0,6456,6457,1,0,0,0,6457,615,1,0,0,0,6458,6456,1,0,0, + 0,6459,6461,5,36,0,0,6460,6459,1,0,0,0,6460,6461,1,0,0,0,6461,6462, + 1,0,0,0,6462,6467,3,818,409,0,6463,6464,5,2,0,0,6464,6465,3,784, + 392,0,6465,6466,5,3,0,0,6466,6468,1,0,0,0,6467,6463,1,0,0,0,6467, + 6468,1,0,0,0,6468,617,1,0,0,0,6469,6482,3,616,308,0,6470,6472,5, + 36,0,0,6471,6473,3,818,409,0,6472,6471,1,0,0,0,6472,6473,1,0,0,0, + 6473,6476,1,0,0,0,6474,6476,3,818,409,0,6475,6470,1,0,0,0,6475,6474, + 1,0,0,0,6476,6477,1,0,0,0,6477,6478,5,2,0,0,6478,6479,3,642,321, + 0,6479,6480,5,3,0,0,6480,6482,1,0,0,0,6481,6469,1,0,0,0,6481,6475, + 1,0,0,0,6482,619,1,0,0,0,6483,6485,7,86,0,0,6484,6486,5,123,0,0, + 6485,6484,1,0,0,0,6485,6486,1,0,0,0,6486,621,1,0,0,0,6487,6488,5, + 100,0,0,6488,6492,3,144,72,0,6489,6490,5,80,0,0,6490,6492,3,674, + 337,0,6491,6487,1,0,0,0,6491,6489,1,0,0,0,6492,623,1,0,0,0,6493, + 6509,3,322,161,0,6494,6500,5,81,0,0,6495,6501,3,774,387,0,6496,6497, + 5,2,0,0,6497,6498,3,774,387,0,6498,6499,5,3,0,0,6499,6501,1,0,0, + 0,6500,6495,1,0,0,0,6500,6496,1,0,0,0,6501,6509,1,0,0,0,6502,6503, + 5,68,0,0,6503,6506,5,323,0,0,6504,6507,3,790,395,0,6505,6507,5,111, + 0,0,6506,6504,1,0,0,0,6506,6505,1,0,0,0,6507,6509,1,0,0,0,6508,6493, + 1,0,0,0,6508,6494,1,0,0,0,6508,6502,1,0,0,0,6509,625,1,0,0,0,6510, + 6511,5,92,0,0,6511,6513,3,322,161,0,6512,6514,3,144,72,0,6513,6512, + 1,0,0,0,6513,6514,1,0,0,0,6514,6516,1,0,0,0,6515,6517,3,638,319, + 0,6516,6515,1,0,0,0,6516,6517,1,0,0,0,6517,6535,1,0,0,0,6518,6519, + 5,92,0,0,6519,6525,5,81,0,0,6520,6526,3,774,387,0,6521,6522,5,2, + 0,0,6522,6523,3,774,387,0,6523,6524,5,3,0,0,6524,6526,1,0,0,0,6525, + 6520,1,0,0,0,6525,6521,1,0,0,0,6526,6535,1,0,0,0,6527,6528,5,350, + 0,0,6528,6529,5,68,0,0,6529,6532,5,323,0,0,6530,6533,3,790,395,0, + 6531,6533,5,111,0,0,6532,6530,1,0,0,0,6532,6531,1,0,0,0,6533,6535, + 1,0,0,0,6534,6510,1,0,0,0,6534,6518,1,0,0,0,6534,6527,1,0,0,0,6535, + 627,1,0,0,0,6536,6541,3,624,312,0,6537,6538,5,6,0,0,6538,6540,3, + 624,312,0,6539,6537,1,0,0,0,6540,6543,1,0,0,0,6541,6539,1,0,0,0, + 6541,6542,1,0,0,0,6542,629,1,0,0,0,6543,6541,1,0,0,0,6544,6549,3, + 624,312,0,6545,6547,5,36,0,0,6546,6545,1,0,0,0,6546,6547,1,0,0,0, + 6547,6548,1,0,0,0,6548,6550,3,818,409,0,6549,6546,1,0,0,0,6549,6550, + 1,0,0,0,6550,631,1,0,0,0,6551,6552,5,472,0,0,6552,6553,3,806,403, + 0,6553,6559,3,534,267,0,6554,6555,5,310,0,0,6555,6556,5,2,0,0,6556, + 6557,3,674,337,0,6557,6558,5,3,0,0,6558,6560,1,0,0,0,6559,6554,1, + 0,0,0,6559,6560,1,0,0,0,6560,633,1,0,0,0,6561,6576,3,688,344,0,6562, + 6563,5,320,0,0,6563,6564,5,64,0,0,6564,6565,5,2,0,0,6565,6570,3, + 636,318,0,6566,6567,5,6,0,0,6567,6569,3,636,318,0,6568,6566,1,0, + 0,0,6569,6572,1,0,0,0,6570,6568,1,0,0,0,6570,6571,1,0,0,0,6571,6573, + 1,0,0,0,6572,6570,1,0,0,0,6573,6574,5,3,0,0,6574,6576,1,0,0,0,6575, + 6561,1,0,0,0,6575,6562,1,0,0,0,6576,6579,1,0,0,0,6577,6578,5,105, + 0,0,6578,6580,5,473,0,0,6579,6577,1,0,0,0,6579,6580,1,0,0,0,6580, + 635,1,0,0,0,6581,6587,3,688,344,0,6582,6583,5,36,0,0,6583,6584,5, + 2,0,0,6584,6585,3,642,321,0,6585,6586,5,3,0,0,6586,6588,1,0,0,0, + 6587,6582,1,0,0,0,6587,6588,1,0,0,0,6588,637,1,0,0,0,6589,6590,5, + 103,0,0,6590,6591,3,734,367,0,6591,639,1,0,0,0,6592,6597,5,103,0, + 0,6593,6594,5,434,0,0,6594,6595,5,275,0,0,6595,6598,3,818,409,0, + 6596,6598,3,674,337,0,6597,6593,1,0,0,0,6597,6596,1,0,0,0,6598,641, + 1,0,0,0,6599,6604,3,644,322,0,6600,6601,5,6,0,0,6601,6603,3,644, + 322,0,6602,6600,1,0,0,0,6603,6606,1,0,0,0,6604,6602,1,0,0,0,6604, + 6605,1,0,0,0,6605,643,1,0,0,0,6606,6604,1,0,0,0,6607,6608,3,818, + 409,0,6608,6610,3,652,326,0,6609,6611,3,98,49,0,6610,6609,1,0,0, + 0,6610,6611,1,0,0,0,6611,645,1,0,0,0,6612,6613,5,474,0,0,6613,6627, + 5,2,0,0,6614,6615,5,476,0,0,6615,6616,5,2,0,0,6616,6621,3,650,325, + 0,6617,6618,5,6,0,0,6618,6620,3,650,325,0,6619,6617,1,0,0,0,6620, + 6623,1,0,0,0,6621,6619,1,0,0,0,6621,6622,1,0,0,0,6622,6624,1,0,0, + 0,6623,6621,1,0,0,0,6624,6625,5,3,0,0,6625,6626,5,6,0,0,6626,6628, + 1,0,0,0,6627,6614,1,0,0,0,6627,6628,1,0,0,0,6628,6629,1,0,0,0,6629, + 6630,3,682,341,0,6630,6631,3,698,349,0,6631,6632,5,475,0,0,6632, + 6637,3,648,324,0,6633,6634,5,6,0,0,6634,6636,3,648,324,0,6635,6633, + 1,0,0,0,6636,6639,1,0,0,0,6637,6635,1,0,0,0,6637,6638,1,0,0,0,6638, + 6640,1,0,0,0,6639,6637,1,0,0,0,6640,6641,5,3,0,0,6641,647,1,0,0, + 0,6642,6661,3,818,409,0,6643,6657,3,652,326,0,6644,6647,5,53,0,0, + 6645,6647,3,826,413,0,6646,6644,1,0,0,0,6646,6645,1,0,0,0,6647,6648, + 1,0,0,0,6648,6654,3,674,337,0,6649,6651,5,77,0,0,6650,6649,1,0,0, + 0,6650,6651,1,0,0,0,6651,6652,1,0,0,0,6652,6654,5,78,0,0,6653,6646, + 1,0,0,0,6653,6650,1,0,0,0,6654,6655,1,0,0,0,6655,6653,1,0,0,0,6655, + 6656,1,0,0,0,6656,6658,1,0,0,0,6657,6653,1,0,0,0,6657,6658,1,0,0, + 0,6658,6662,1,0,0,0,6659,6660,5,62,0,0,6660,6662,5,473,0,0,6661, + 6643,1,0,0,0,6661,6659,1,0,0,0,6662,649,1,0,0,0,6663,6664,3,682, + 341,0,6664,6665,5,36,0,0,6665,6666,3,824,412,0,6666,6670,1,0,0,0, + 6667,6668,5,53,0,0,6668,6670,3,682,341,0,6669,6663,1,0,0,0,6669, + 6667,1,0,0,0,6670,651,1,0,0,0,6671,6673,5,415,0,0,6672,6671,1,0, + 0,0,6672,6673,1,0,0,0,6673,6674,1,0,0,0,6674,6691,3,654,327,0,6675, + 6677,5,4,0,0,6676,6678,5,571,0,0,6677,6676,1,0,0,0,6677,6678,1,0, + 0,0,6678,6679,1,0,0,0,6679,6681,5,5,0,0,6680,6675,1,0,0,0,6681,6684, + 1,0,0,0,6682,6680,1,0,0,0,6682,6683,1,0,0,0,6683,6692,1,0,0,0,6684, + 6682,1,0,0,0,6685,6689,5,35,0,0,6686,6687,5,4,0,0,6687,6688,5,571, + 0,0,6688,6690,5,5,0,0,6689,6686,1,0,0,0,6689,6690,1,0,0,0,6690,6692, + 1,0,0,0,6691,6682,1,0,0,0,6691,6685,1,0,0,0,6692,6698,1,0,0,0,6693, + 6694,3,780,390,0,6694,6695,5,27,0,0,6695,6696,7,87,0,0,6696,6698, + 1,0,0,0,6697,6672,1,0,0,0,6697,6693,1,0,0,0,6698,653,1,0,0,0,6699, + 6701,3,820,410,0,6700,6702,3,318,159,0,6701,6700,1,0,0,0,6701,6702, + 1,0,0,0,6702,6704,1,0,0,0,6703,6705,3,534,267,0,6704,6703,1,0,0, + 0,6704,6705,1,0,0,0,6705,6715,1,0,0,0,6706,6715,3,656,328,0,6707, + 6712,5,403,0,0,6708,6710,3,668,334,0,6709,6708,1,0,0,0,6709,6710, + 1,0,0,0,6710,6713,1,0,0,0,6711,6713,3,660,330,0,6712,6709,1,0,0, + 0,6712,6711,1,0,0,0,6713,6715,1,0,0,0,6714,6699,1,0,0,0,6714,6706, + 1,0,0,0,6714,6707,1,0,0,0,6715,655,1,0,0,0,6716,6721,3,658,329,0, + 6717,6721,3,662,331,0,6718,6721,3,664,332,0,6719,6721,3,666,333, + 0,6720,6716,1,0,0,0,6720,6717,1,0,0,0,6720,6718,1,0,0,0,6720,6719, + 1,0,0,0,6721,657,1,0,0,0,6722,6739,5,401,0,0,6723,6739,5,402,0,0, + 6724,6739,5,416,0,0,6725,6739,5,388,0,0,6726,6739,5,413,0,0,6727, + 6729,5,398,0,0,6728,6730,3,660,330,0,6729,6728,1,0,0,0,6729,6730, + 1,0,0,0,6730,6739,1,0,0,0,6731,6732,5,190,0,0,6732,6739,5,412,0, + 0,6733,6735,7,88,0,0,6734,6736,3,534,267,0,6735,6734,1,0,0,0,6735, + 6736,1,0,0,0,6736,6739,1,0,0,0,6737,6739,5,390,0,0,6738,6722,1,0, + 0,0,6738,6723,1,0,0,0,6738,6724,1,0,0,0,6738,6725,1,0,0,0,6738,6726, + 1,0,0,0,6738,6727,1,0,0,0,6738,6731,1,0,0,0,6738,6733,1,0,0,0,6738, + 6737,1,0,0,0,6739,659,1,0,0,0,6740,6741,5,2,0,0,6741,6742,5,571, + 0,0,6742,6743,5,3,0,0,6743,661,1,0,0,0,6744,6746,5,389,0,0,6745, + 6747,5,374,0,0,6746,6745,1,0,0,0,6746,6747,1,0,0,0,6747,6749,1,0, + 0,0,6748,6750,3,534,267,0,6749,6748,1,0,0,0,6749,6750,1,0,0,0,6750, + 663,1,0,0,0,6751,6753,7,89,0,0,6752,6754,5,374,0,0,6753,6752,1,0, + 0,0,6753,6754,1,0,0,0,6754,6762,1,0,0,0,6755,6762,5,423,0,0,6756, + 6757,5,405,0,0,6757,6759,7,90,0,0,6758,6760,5,374,0,0,6759,6758, + 1,0,0,0,6759,6760,1,0,0,0,6760,6762,1,0,0,0,6761,6751,1,0,0,0,6761, + 6755,1,0,0,0,6761,6756,1,0,0,0,6762,6764,1,0,0,0,6763,6765,3,660, + 330,0,6764,6763,1,0,0,0,6764,6765,1,0,0,0,6765,665,1,0,0,0,6766, + 6768,7,91,0,0,6767,6769,3,660,330,0,6768,6767,1,0,0,0,6768,6769, + 1,0,0,0,6769,6773,1,0,0,0,6770,6771,7,26,0,0,6771,6772,5,418,0,0, + 6772,6774,5,386,0,0,6773,6770,1,0,0,0,6773,6774,1,0,0,0,6774,667, + 1,0,0,0,6775,6805,5,264,0,0,6776,6805,3,670,335,0,6777,6780,5,384, + 0,0,6778,6779,5,94,0,0,6779,6781,5,264,0,0,6780,6778,1,0,0,0,6780, + 6781,1,0,0,0,6781,6805,1,0,0,0,6782,6789,5,176,0,0,6783,6787,5,94, + 0,0,6784,6788,5,218,0,0,6785,6788,5,261,0,0,6786,6788,3,670,335, + 0,6787,6784,1,0,0,0,6787,6785,1,0,0,0,6787,6786,1,0,0,0,6788,6790, + 1,0,0,0,6789,6783,1,0,0,0,6789,6790,1,0,0,0,6790,6805,1,0,0,0,6791, + 6797,5,218,0,0,6792,6795,5,94,0,0,6793,6796,5,261,0,0,6794,6796, + 3,670,335,0,6795,6793,1,0,0,0,6795,6794,1,0,0,0,6796,6798,1,0,0, + 0,6797,6792,1,0,0,0,6797,6798,1,0,0,0,6798,6805,1,0,0,0,6799,6802, + 5,261,0,0,6800,6801,5,94,0,0,6801,6803,3,670,335,0,6802,6800,1,0, + 0,0,6802,6803,1,0,0,0,6803,6805,1,0,0,0,6804,6775,1,0,0,0,6804,6776, + 1,0,0,0,6804,6777,1,0,0,0,6804,6782,1,0,0,0,6804,6791,1,0,0,0,6804, + 6799,1,0,0,0,6805,669,1,0,0,0,6806,6808,5,326,0,0,6807,6809,3,660, + 330,0,6808,6807,1,0,0,0,6808,6809,1,0,0,0,6809,671,1,0,0,0,6810, + 6811,7,92,0,0,6811,673,1,0,0,0,6812,6813,3,676,338,0,6813,675,1, + 0,0,0,6814,6815,6,338,-1,0,6815,6817,3,680,340,0,6816,6818,3,678, + 339,0,6817,6816,1,0,0,0,6817,6818,1,0,0,0,6818,6822,1,0,0,0,6819, + 6820,5,77,0,0,6820,6822,3,676,338,3,6821,6814,1,0,0,0,6821,6819, + 1,0,0,0,6822,6831,1,0,0,0,6823,6824,10,2,0,0,6824,6825,5,33,0,0, + 6825,6830,3,676,338,3,6826,6827,10,1,0,0,6827,6828,5,82,0,0,6828, + 6830,3,676,338,2,6829,6823,1,0,0,0,6829,6826,1,0,0,0,6830,6833,1, + 0,0,0,6831,6829,1,0,0,0,6831,6832,1,0,0,0,6832,677,1,0,0,0,6833, + 6831,1,0,0,0,6834,6835,3,672,336,0,6835,6836,3,680,340,0,6836,6906, + 1,0,0,0,6837,6838,3,672,336,0,6838,6839,3,728,364,0,6839,6845,3, + 718,359,0,6840,6846,3,562,281,0,6841,6842,5,2,0,0,6842,6843,3,674, + 337,0,6843,6844,5,3,0,0,6844,6846,1,0,0,0,6845,6840,1,0,0,0,6845, + 6841,1,0,0,0,6846,6906,1,0,0,0,6847,6849,5,77,0,0,6848,6847,1,0, + 0,0,6848,6849,1,0,0,0,6849,6850,1,0,0,0,6850,6851,5,387,0,0,6851, + 6852,3,680,340,0,6852,6853,5,33,0,0,6853,6854,3,680,340,0,6854,6906, + 1,0,0,0,6855,6857,5,77,0,0,6856,6855,1,0,0,0,6856,6857,1,0,0,0,6857, + 6858,1,0,0,0,6858,6859,5,68,0,0,6859,6860,5,2,0,0,6860,6865,3,674, + 337,0,6861,6862,5,6,0,0,6862,6864,3,674,337,0,6863,6861,1,0,0,0, + 6864,6867,1,0,0,0,6865,6863,1,0,0,0,6865,6866,1,0,0,0,6866,6868, + 1,0,0,0,6867,6865,1,0,0,0,6868,6869,5,3,0,0,6869,6906,1,0,0,0,6870, + 6872,5,77,0,0,6871,6870,1,0,0,0,6871,6872,1,0,0,0,6872,6873,1,0, + 0,0,6873,6874,5,68,0,0,6874,6906,3,562,281,0,6875,6877,5,77,0,0, + 6876,6875,1,0,0,0,6876,6877,1,0,0,0,6877,6886,1,0,0,0,6878,6887, + 5,120,0,0,6879,6887,5,114,0,0,6880,6881,5,127,0,0,6881,6887,5,94, + 0,0,6882,6884,5,387,0,0,6883,6885,5,91,0,0,6884,6883,1,0,0,0,6884, + 6885,1,0,0,0,6885,6887,1,0,0,0,6886,6878,1,0,0,0,6886,6879,1,0,0, + 0,6886,6880,1,0,0,0,6886,6882,1,0,0,0,6887,6888,1,0,0,0,6888,6891, + 3,680,340,0,6889,6890,5,197,0,0,6890,6892,3,680,340,0,6891,6889, + 1,0,0,0,6891,6892,1,0,0,0,6892,6906,1,0,0,0,6893,6895,5,116,0,0, + 6894,6896,5,77,0,0,6895,6894,1,0,0,0,6895,6896,1,0,0,0,6896,6897, + 1,0,0,0,6897,6906,5,78,0,0,6898,6900,5,116,0,0,6899,6901,5,77,0, + 0,6900,6899,1,0,0,0,6900,6901,1,0,0,0,6901,6902,1,0,0,0,6902,6903, + 5,56,0,0,6903,6904,5,64,0,0,6904,6906,3,680,340,0,6905,6834,1,0, + 0,0,6905,6837,1,0,0,0,6905,6848,1,0,0,0,6905,6856,1,0,0,0,6905,6871, + 1,0,0,0,6905,6876,1,0,0,0,6905,6893,1,0,0,0,6905,6898,1,0,0,0,6906, + 679,1,0,0,0,6907,6908,6,340,-1,0,6908,6912,3,682,341,0,6909,6910, + 7,29,0,0,6910,6912,3,680,340,4,6911,6907,1,0,0,0,6911,6909,1,0,0, + 0,6912,6929,1,0,0,0,6913,6914,10,3,0,0,6914,6915,7,93,0,0,6915,6928, + 3,680,340,4,6916,6917,10,2,0,0,6917,6918,7,29,0,0,6918,6928,3,680, + 340,3,6919,6920,10,1,0,0,6920,6921,5,15,0,0,6921,6928,3,680,340, + 2,6922,6923,10,5,0,0,6923,6924,5,142,0,0,6924,6925,5,418,0,0,6925, + 6926,5,386,0,0,6926,6928,3,674,337,0,6927,6913,1,0,0,0,6927,6916, + 1,0,0,0,6927,6919,1,0,0,0,6927,6922,1,0,0,0,6928,6931,1,0,0,0,6929, + 6927,1,0,0,0,6929,6930,1,0,0,0,6930,681,1,0,0,0,6931,6929,1,0,0, + 0,6932,6933,6,341,-1,0,6933,6934,7,94,0,0,6934,7021,3,562,281,0, + 6935,6938,5,35,0,0,6936,6939,3,562,281,0,6937,6939,3,740,370,0,6938, + 6936,1,0,0,0,6938,6937,1,0,0,0,6939,7021,1,0,0,0,6940,6941,5,28, + 0,0,6941,7021,3,754,377,0,6942,6943,5,470,0,0,6943,7021,3,534,267, + 0,6944,7021,5,571,0,0,6945,7021,5,573,0,0,6946,7021,5,563,0,0,6947, + 7021,5,567,0,0,6948,6958,3,806,403,0,6949,6959,3,808,404,0,6950, + 6951,5,2,0,0,6951,6953,3,736,368,0,6952,6954,3,586,293,0,6953,6952, + 1,0,0,0,6953,6954,1,0,0,0,6954,6955,1,0,0,0,6955,6956,5,3,0,0,6956, + 6957,3,808,404,0,6957,6959,1,0,0,0,6958,6949,1,0,0,0,6958,6950,1, + 0,0,0,6959,7021,1,0,0,0,6960,6962,3,656,328,0,6961,6960,1,0,0,0, + 6961,6962,1,0,0,0,6962,6963,1,0,0,0,6963,7021,3,808,404,0,6964,6972, + 5,403,0,0,6965,6967,3,808,404,0,6966,6968,3,668,334,0,6967,6966, + 1,0,0,0,6967,6968,1,0,0,0,6968,6973,1,0,0,0,6969,6970,3,660,330, + 0,6970,6971,3,808,404,0,6971,6973,1,0,0,0,6972,6965,1,0,0,0,6972, + 6969,1,0,0,0,6973,7021,1,0,0,0,6974,7021,5,96,0,0,6975,7021,5,60, + 0,0,6976,7021,5,78,0,0,6977,7021,5,574,0,0,6978,6979,5,2,0,0,6979, + 6980,3,674,337,0,6980,6981,5,3,0,0,6981,6982,3,754,377,0,6982,7021, + 1,0,0,0,6983,6985,5,40,0,0,6984,6986,3,674,337,0,6985,6984,1,0,0, + 0,6985,6986,1,0,0,0,6986,6988,1,0,0,0,6987,6989,3,748,374,0,6988, + 6987,1,0,0,0,6989,6990,1,0,0,0,6990,6988,1,0,0,0,6990,6991,1,0,0, + 0,6991,6994,1,0,0,0,6992,6993,5,58,0,0,6993,6995,3,674,337,0,6994, + 6992,1,0,0,0,6994,6995,1,0,0,0,6995,6996,1,0,0,0,6996,6997,5,454, + 0,0,6997,7021,1,0,0,0,6998,7021,3,686,343,0,6999,7001,3,562,281, + 0,7000,7002,3,752,376,0,7001,7000,1,0,0,0,7001,7002,1,0,0,0,7002, + 7021,1,0,0,0,7003,7021,3,716,358,0,7004,7005,5,2,0,0,7005,7006,3, + 674,337,0,7006,7007,5,6,0,0,7007,7008,3,730,365,0,7008,7009,5,3, + 0,0,7009,7021,1,0,0,0,7010,7011,3,714,357,0,7011,7012,5,125,0,0, + 7012,7013,3,714,357,0,7013,7021,1,0,0,0,7014,7021,3,780,390,0,7015, + 7016,7,29,0,0,7016,7021,3,682,341,5,7017,7018,3,724,362,0,7018,7019, + 3,682,341,2,7019,7021,1,0,0,0,7020,6932,1,0,0,0,7020,6935,1,0,0, + 0,7020,6940,1,0,0,0,7020,6942,1,0,0,0,7020,6944,1,0,0,0,7020,6945, + 1,0,0,0,7020,6946,1,0,0,0,7020,6947,1,0,0,0,7020,6948,1,0,0,0,7020, + 6961,1,0,0,0,7020,6964,1,0,0,0,7020,6974,1,0,0,0,7020,6975,1,0,0, + 0,7020,6976,1,0,0,0,7020,6977,1,0,0,0,7020,6978,1,0,0,0,7020,6983, + 1,0,0,0,7020,6998,1,0,0,0,7020,6999,1,0,0,0,7020,7003,1,0,0,0,7020, + 7004,1,0,0,0,7020,7010,1,0,0,0,7020,7014,1,0,0,0,7020,7015,1,0,0, + 0,7020,7017,1,0,0,0,7021,7049,1,0,0,0,7022,7023,10,3,0,0,7023,7024, + 3,722,361,0,7024,7025,3,682,341,4,7025,7048,1,0,0,0,7026,7027,10, + 6,0,0,7027,7028,5,26,0,0,7028,7048,3,652,326,0,7029,7030,10,4,0, + 0,7030,7032,3,724,362,0,7031,7033,3,682,341,0,7032,7031,1,0,0,0, + 7032,7033,1,0,0,0,7033,7048,1,0,0,0,7034,7035,10,1,0,0,7035,7037, + 5,116,0,0,7036,7038,5,77,0,0,7037,7036,1,0,0,0,7037,7038,1,0,0,0, + 7038,7045,1,0,0,0,7039,7040,5,56,0,0,7040,7041,5,64,0,0,7041,7046, + 3,682,341,0,7042,7043,5,275,0,0,7043,7046,3,528,264,0,7044,7046, + 5,188,0,0,7045,7039,1,0,0,0,7045,7042,1,0,0,0,7045,7044,1,0,0,0, + 7046,7048,1,0,0,0,7047,7022,1,0,0,0,7047,7026,1,0,0,0,7047,7029, + 1,0,0,0,7047,7034,1,0,0,0,7048,7051,1,0,0,0,7049,7047,1,0,0,0,7049, + 7050,1,0,0,0,7050,683,1,0,0,0,7051,7049,1,0,0,0,7052,7078,3,806, + 403,0,7053,7075,5,2,0,0,7054,7058,3,736,368,0,7055,7056,5,6,0,0, + 7056,7057,5,101,0,0,7057,7059,3,738,369,0,7058,7055,1,0,0,0,7058, + 7059,1,0,0,0,7059,7061,1,0,0,0,7060,7062,3,586,293,0,7061,7060,1, + 0,0,0,7061,7062,1,0,0,0,7062,7076,1,0,0,0,7063,7064,5,101,0,0,7064, + 7066,3,738,369,0,7065,7067,3,586,293,0,7066,7065,1,0,0,0,7066,7067, + 1,0,0,0,7067,7076,1,0,0,0,7068,7069,7,80,0,0,7069,7071,3,736,368, + 0,7070,7072,3,586,293,0,7071,7070,1,0,0,0,7071,7072,1,0,0,0,7072, + 7076,1,0,0,0,7073,7076,5,9,0,0,7074,7076,1,0,0,0,7075,7054,1,0,0, + 0,7075,7063,1,0,0,0,7075,7068,1,0,0,0,7075,7073,1,0,0,0,7075,7074, + 1,0,0,0,7076,7077,1,0,0,0,7077,7079,5,3,0,0,7078,7053,1,0,0,0,7078, + 7079,1,0,0,0,7079,685,1,0,0,0,7080,7087,3,684,342,0,7081,7082,5, + 479,0,0,7082,7083,5,66,0,0,7083,7084,5,2,0,0,7084,7085,3,586,293, + 0,7085,7086,5,3,0,0,7086,7088,1,0,0,0,7087,7081,1,0,0,0,7087,7088, + 1,0,0,0,7088,7095,1,0,0,0,7089,7090,5,480,0,0,7090,7091,5,2,0,0, + 7091,7092,5,103,0,0,7092,7093,3,674,337,0,7093,7094,5,3,0,0,7094, + 7096,1,0,0,0,7095,7089,1,0,0,0,7095,7096,1,0,0,0,7096,7102,1,0,0, + 0,7097,7100,5,124,0,0,7098,7101,3,708,354,0,7099,7101,3,818,409, + 0,7100,7098,1,0,0,0,7100,7099,1,0,0,0,7101,7103,1,0,0,0,7102,7097, + 1,0,0,0,7102,7103,1,0,0,0,7103,7106,1,0,0,0,7104,7106,3,690,345, + 0,7105,7080,1,0,0,0,7105,7104,1,0,0,0,7106,687,1,0,0,0,7107,7110, + 3,684,342,0,7108,7110,3,690,345,0,7109,7107,1,0,0,0,7109,7108,1, + 0,0,0,7110,689,1,0,0,0,7111,7112,5,108,0,0,7112,7113,5,62,0,0,7113, + 7114,5,2,0,0,7114,7115,3,674,337,0,7115,7116,5,3,0,0,7116,7286,1, + 0,0,0,7117,7286,5,48,0,0,7118,7120,7,95,0,0,7119,7121,3,660,330, + 0,7120,7119,1,0,0,0,7120,7121,1,0,0,0,7121,7286,1,0,0,0,7122,7286, + 5,49,0,0,7123,7286,5,52,0,0,7124,7286,5,89,0,0,7125,7286,5,99,0, + 0,7126,7286,5,47,0,0,7127,7286,5,111,0,0,7128,7129,7,96,0,0,7129, + 7130,5,2,0,0,7130,7131,3,674,337,0,7131,7132,5,36,0,0,7132,7133, + 3,652,326,0,7133,7134,5,3,0,0,7134,7286,1,0,0,0,7135,7136,5,397, + 0,0,7136,7141,5,2,0,0,7137,7138,3,742,371,0,7138,7139,5,64,0,0,7139, + 7140,3,674,337,0,7140,7142,1,0,0,0,7141,7137,1,0,0,0,7141,7142,1, + 0,0,0,7142,7143,1,0,0,0,7143,7286,5,3,0,0,7144,7145,5,489,0,0,7145, + 7146,5,2,0,0,7146,7149,3,674,337,0,7147,7148,5,6,0,0,7148,7150,3, + 744,372,0,7149,7147,1,0,0,0,7149,7150,1,0,0,0,7150,7151,1,0,0,0, + 7151,7152,5,3,0,0,7152,7286,1,0,0,0,7153,7154,5,410,0,0,7154,7155, + 5,2,0,0,7155,7156,3,674,337,0,7156,7157,5,84,0,0,7157,7158,3,674, + 337,0,7158,7159,5,64,0,0,7159,7162,3,674,337,0,7160,7161,5,62,0, + 0,7161,7163,3,674,337,0,7162,7160,1,0,0,0,7162,7163,1,0,0,0,7163, + 7164,1,0,0,0,7164,7165,5,3,0,0,7165,7286,1,0,0,0,7166,7167,5,411, + 0,0,7167,7172,5,2,0,0,7168,7169,3,682,341,0,7169,7170,5,68,0,0,7170, + 7171,3,682,341,0,7171,7173,1,0,0,0,7172,7168,1,0,0,0,7172,7173,1, + 0,0,0,7173,7174,1,0,0,0,7174,7286,5,3,0,0,7175,7176,5,417,0,0,7176, + 7178,5,2,0,0,7177,7179,3,746,373,0,7178,7177,1,0,0,0,7178,7179,1, + 0,0,0,7179,7180,1,0,0,0,7180,7286,5,3,0,0,7181,7182,5,421,0,0,7182, + 7184,5,2,0,0,7183,7185,7,97,0,0,7184,7183,1,0,0,0,7184,7185,1,0, + 0,0,7185,7190,1,0,0,0,7186,7188,3,674,337,0,7187,7186,1,0,0,0,7187, + 7188,1,0,0,0,7188,7189,1,0,0,0,7189,7191,5,64,0,0,7190,7187,1,0, + 0,0,7190,7191,1,0,0,0,7191,7192,1,0,0,0,7192,7193,3,730,365,0,7193, + 7194,1,0,0,0,7194,7195,5,3,0,0,7195,7286,1,0,0,0,7196,7197,5,408, + 0,0,7197,7198,5,2,0,0,7198,7199,3,674,337,0,7199,7200,5,6,0,0,7200, + 7201,3,674,337,0,7201,7202,5,3,0,0,7202,7286,1,0,0,0,7203,7204,7, + 98,0,0,7204,7286,3,534,267,0,7205,7206,5,426,0,0,7206,7207,5,2,0, + 0,7207,7208,5,266,0,0,7208,7218,3,824,412,0,7209,7216,5,6,0,0,7210, + 7211,5,424,0,0,7211,7212,5,2,0,0,7212,7213,3,692,346,0,7213,7214, + 5,3,0,0,7214,7217,1,0,0,0,7215,7217,3,730,365,0,7216,7210,1,0,0, + 0,7216,7215,1,0,0,0,7217,7219,1,0,0,0,7218,7209,1,0,0,0,7218,7219, + 1,0,0,0,7219,7220,1,0,0,0,7220,7221,5,3,0,0,7221,7286,1,0,0,0,7222, + 7223,5,427,0,0,7223,7224,5,2,0,0,7224,7225,3,682,341,0,7225,7226, + 3,698,349,0,7226,7227,5,3,0,0,7227,7286,1,0,0,0,7228,7229,5,428, + 0,0,7229,7230,5,2,0,0,7230,7231,3,692,346,0,7231,7232,5,3,0,0,7232, + 7286,1,0,0,0,7233,7234,5,429,0,0,7234,7235,5,2,0,0,7235,7236,3,696, + 348,0,7236,7239,3,674,337,0,7237,7238,7,99,0,0,7238,7240,5,378,0, + 0,7239,7237,1,0,0,0,7239,7240,1,0,0,0,7240,7241,1,0,0,0,7241,7242, + 5,3,0,0,7242,7286,1,0,0,0,7243,7244,5,430,0,0,7244,7245,5,2,0,0, + 7245,7246,5,266,0,0,7246,7249,3,824,412,0,7247,7248,5,6,0,0,7248, + 7250,3,674,337,0,7249,7247,1,0,0,0,7249,7250,1,0,0,0,7250,7251,1, + 0,0,0,7251,7252,5,3,0,0,7252,7286,1,0,0,0,7253,7254,5,431,0,0,7254, + 7255,5,2,0,0,7255,7256,5,383,0,0,7256,7257,3,674,337,0,7257,7258, + 5,6,0,0,7258,7262,5,375,0,0,7259,7260,5,269,0,0,7260,7263,5,450, + 0,0,7261,7263,3,674,337,0,7262,7259,1,0,0,0,7262,7261,1,0,0,0,7263, + 7273,1,0,0,0,7264,7265,5,6,0,0,7265,7271,5,339,0,0,7266,7268,5,269, + 0,0,7267,7266,1,0,0,0,7267,7268,1,0,0,0,7268,7269,1,0,0,0,7269,7272, + 5,450,0,0,7270,7272,5,385,0,0,7271,7267,1,0,0,0,7271,7270,1,0,0, + 0,7272,7274,1,0,0,0,7273,7264,1,0,0,0,7273,7274,1,0,0,0,7274,7275, + 1,0,0,0,7275,7276,5,3,0,0,7276,7286,1,0,0,0,7277,7278,5,432,0,0, + 7278,7279,5,2,0,0,7279,7280,3,696,348,0,7280,7281,3,674,337,0,7281, + 7282,5,36,0,0,7282,7283,3,654,327,0,7283,7284,5,3,0,0,7284,7286, + 1,0,0,0,7285,7111,1,0,0,0,7285,7117,1,0,0,0,7285,7118,1,0,0,0,7285, + 7122,1,0,0,0,7285,7123,1,0,0,0,7285,7124,1,0,0,0,7285,7125,1,0,0, + 0,7285,7126,1,0,0,0,7285,7127,1,0,0,0,7285,7128,1,0,0,0,7285,7135, + 1,0,0,0,7285,7144,1,0,0,0,7285,7153,1,0,0,0,7285,7166,1,0,0,0,7285, + 7175,1,0,0,0,7285,7181,1,0,0,0,7285,7196,1,0,0,0,7285,7203,1,0,0, + 0,7285,7205,1,0,0,0,7285,7222,1,0,0,0,7285,7228,1,0,0,0,7285,7233, + 1,0,0,0,7285,7243,1,0,0,0,7285,7253,1,0,0,0,7285,7277,1,0,0,0,7286, + 691,1,0,0,0,7287,7292,3,694,347,0,7288,7289,5,6,0,0,7289,7291,3, + 694,347,0,7290,7288,1,0,0,0,7291,7294,1,0,0,0,7292,7290,1,0,0,0, + 7292,7293,1,0,0,0,7293,693,1,0,0,0,7294,7292,1,0,0,0,7295,7298,3, + 674,337,0,7296,7297,5,36,0,0,7297,7299,3,824,412,0,7298,7296,1,0, + 0,0,7298,7299,1,0,0,0,7299,695,1,0,0,0,7300,7301,7,100,0,0,7301, + 697,1,0,0,0,7302,7304,5,286,0,0,7303,7305,3,700,350,0,7304,7303, + 1,0,0,0,7304,7305,1,0,0,0,7305,7306,1,0,0,0,7306,7308,3,682,341, + 0,7307,7309,3,700,350,0,7308,7307,1,0,0,0,7308,7309,1,0,0,0,7309, + 699,1,0,0,0,7310,7311,5,147,0,0,7311,7312,7,101,0,0,7312,701,1,0, + 0,0,7313,7314,5,104,0,0,7314,7319,3,704,352,0,7315,7316,5,6,0,0, + 7316,7318,3,704,352,0,7317,7315,1,0,0,0,7318,7321,1,0,0,0,7319,7317, + 1,0,0,0,7319,7320,1,0,0,0,7320,703,1,0,0,0,7321,7319,1,0,0,0,7322, + 7323,3,818,409,0,7323,7324,5,36,0,0,7324,7325,3,708,354,0,7325,705, + 1,0,0,0,7326,7329,5,124,0,0,7327,7330,3,708,354,0,7328,7330,3,818, + 409,0,7329,7327,1,0,0,0,7329,7328,1,0,0,0,7330,707,1,0,0,0,7331, + 7333,5,2,0,0,7332,7334,3,818,409,0,7333,7332,1,0,0,0,7333,7334,1, + 0,0,0,7334,7338,1,0,0,0,7335,7336,5,285,0,0,7336,7337,5,147,0,0, + 7337,7339,3,730,365,0,7338,7335,1,0,0,0,7338,7339,1,0,0,0,7339,7341, + 1,0,0,0,7340,7342,3,586,293,0,7341,7340,1,0,0,0,7341,7342,1,0,0, + 0,7342,7344,1,0,0,0,7343,7345,3,710,355,0,7344,7343,1,0,0,0,7344, + 7345,1,0,0,0,7345,7346,1,0,0,0,7346,7347,5,3,0,0,7347,709,1,0,0, + 0,7348,7353,7,102,0,0,7349,7350,5,387,0,0,7350,7351,3,712,356,0, + 7351,7352,5,33,0,0,7352,7354,1,0,0,0,7353,7349,1,0,0,0,7353,7354, + 1,0,0,0,7354,7355,1,0,0,0,7355,7356,3,712,356,0,7356,7366,1,0,0, + 0,7357,7364,5,199,0,0,7358,7359,5,434,0,0,7359,7365,5,414,0,0,7360, + 7365,5,66,0,0,7361,7365,5,467,0,0,7362,7363,5,269,0,0,7363,7365, + 5,482,0,0,7364,7358,1,0,0,0,7364,7360,1,0,0,0,7364,7361,1,0,0,0, + 7364,7362,1,0,0,0,7365,7367,1,0,0,0,7366,7357,1,0,0,0,7366,7367, + 1,0,0,0,7367,711,1,0,0,0,7368,7371,5,362,0,0,7369,7371,3,674,337, + 0,7370,7368,1,0,0,0,7370,7369,1,0,0,0,7371,7372,1,0,0,0,7372,7376, + 7,103,0,0,7373,7374,5,434,0,0,7374,7376,5,414,0,0,7375,7370,1,0, + 0,0,7375,7373,1,0,0,0,7376,713,1,0,0,0,7377,7385,3,716,358,0,7378, + 7379,5,2,0,0,7379,7380,3,730,365,0,7380,7381,5,6,0,0,7381,7382,3, + 674,337,0,7382,7383,5,3,0,0,7383,7385,1,0,0,0,7384,7377,1,0,0,0, + 7384,7378,1,0,0,0,7385,715,1,0,0,0,7386,7387,5,414,0,0,7387,7389, + 5,2,0,0,7388,7390,3,730,365,0,7389,7388,1,0,0,0,7389,7390,1,0,0, + 0,7390,7391,1,0,0,0,7391,7392,5,3,0,0,7392,717,1,0,0,0,7393,7394, + 7,104,0,0,7394,719,1,0,0,0,7395,7398,5,29,0,0,7396,7398,3,722,361, + 0,7397,7395,1,0,0,0,7397,7396,1,0,0,0,7398,721,1,0,0,0,7399,7400, + 7,105,0,0,7400,723,1,0,0,0,7401,7408,5,29,0,0,7402,7403,5,278,0, + 0,7403,7404,5,2,0,0,7404,7405,3,414,207,0,7405,7406,5,3,0,0,7406, + 7408,1,0,0,0,7407,7401,1,0,0,0,7407,7402,1,0,0,0,7408,725,1,0,0, + 0,7409,7416,3,720,360,0,7410,7411,5,278,0,0,7411,7412,5,2,0,0,7412, + 7413,3,414,207,0,7413,7414,5,3,0,0,7414,7416,1,0,0,0,7415,7409,1, + 0,0,0,7415,7410,1,0,0,0,7416,727,1,0,0,0,7417,7423,3,726,363,0,7418, + 7420,5,77,0,0,7419,7418,1,0,0,0,7419,7420,1,0,0,0,7420,7421,1,0, + 0,0,7421,7423,7,106,0,0,7422,7417,1,0,0,0,7422,7419,1,0,0,0,7423, + 729,1,0,0,0,7424,7429,3,674,337,0,7425,7426,5,6,0,0,7426,7428,3, + 674,337,0,7427,7425,1,0,0,0,7428,7431,1,0,0,0,7429,7427,1,0,0,0, + 7429,7430,1,0,0,0,7430,731,1,0,0,0,7431,7429,1,0,0,0,7432,7433,5, + 2,0,0,7433,7434,3,674,337,0,7434,7435,5,3,0,0,7435,7438,1,0,0,0, + 7436,7438,3,800,400,0,7437,7432,1,0,0,0,7437,7436,1,0,0,0,7438,733, + 1,0,0,0,7439,7442,3,674,337,0,7440,7442,3,800,400,0,7441,7439,1, + 0,0,0,7441,7440,1,0,0,0,7442,735,1,0,0,0,7443,7448,3,738,369,0,7444, + 7445,5,6,0,0,7445,7447,3,738,369,0,7446,7444,1,0,0,0,7447,7450,1, + 0,0,0,7448,7446,1,0,0,0,7448,7449,1,0,0,0,7449,737,1,0,0,0,7450, + 7448,1,0,0,0,7451,7457,3,674,337,0,7452,7453,3,820,410,0,7453,7454, + 7,107,0,0,7454,7455,3,674,337,0,7455,7457,1,0,0,0,7456,7451,1,0, + 0,0,7456,7452,1,0,0,0,7457,739,1,0,0,0,7458,7468,5,4,0,0,7459,7469, + 3,730,365,0,7460,7465,3,740,370,0,7461,7462,5,6,0,0,7462,7464,3, + 740,370,0,7463,7461,1,0,0,0,7464,7467,1,0,0,0,7465,7463,1,0,0,0, + 7465,7466,1,0,0,0,7466,7469,1,0,0,0,7467,7465,1,0,0,0,7468,7459, + 1,0,0,0,7468,7460,1,0,0,0,7468,7469,1,0,0,0,7469,7470,1,0,0,0,7470, + 7471,5,5,0,0,7471,741,1,0,0,0,7472,7481,3,826,413,0,7473,7481,5, + 384,0,0,7474,7481,5,264,0,0,7475,7481,5,176,0,0,7476,7481,5,218, + 0,0,7477,7481,5,261,0,0,7478,7481,5,326,0,0,7479,7481,3,808,404, + 0,7480,7472,1,0,0,0,7480,7473,1,0,0,0,7480,7474,1,0,0,0,7480,7475, + 1,0,0,0,7480,7476,1,0,0,0,7480,7477,1,0,0,0,7480,7478,1,0,0,0,7480, + 7479,1,0,0,0,7481,743,1,0,0,0,7482,7483,7,108,0,0,7483,745,1,0,0, + 0,7484,7485,3,674,337,0,7485,7486,5,64,0,0,7486,7489,3,674,337,0, + 7487,7488,5,62,0,0,7488,7490,3,674,337,0,7489,7487,1,0,0,0,7489, + 7490,1,0,0,0,7490,7506,1,0,0,0,7491,7492,3,674,337,0,7492,7493,5, + 62,0,0,7493,7496,3,674,337,0,7494,7495,5,64,0,0,7495,7497,3,674, + 337,0,7496,7494,1,0,0,0,7496,7497,1,0,0,0,7497,7506,1,0,0,0,7498, + 7499,3,674,337,0,7499,7500,5,127,0,0,7500,7501,3,674,337,0,7501, + 7502,5,197,0,0,7502,7503,3,674,337,0,7503,7506,1,0,0,0,7504,7506, + 3,730,365,0,7505,7484,1,0,0,0,7505,7491,1,0,0,0,7505,7498,1,0,0, + 0,7505,7504,1,0,0,0,7506,747,1,0,0,0,7507,7508,5,102,0,0,7508,7509, + 3,674,337,0,7509,7510,5,93,0,0,7510,7511,3,674,337,0,7511,749,1, + 0,0,0,7512,7515,5,11,0,0,7513,7516,3,824,412,0,7514,7516,5,9,0,0, + 7515,7513,1,0,0,0,7515,7514,1,0,0,0,7516,7530,1,0,0,0,7517,7526, + 5,4,0,0,7518,7527,3,674,337,0,7519,7521,3,674,337,0,7520,7519,1, + 0,0,0,7520,7521,1,0,0,0,7521,7522,1,0,0,0,7522,7524,5,8,0,0,7523, + 7525,3,674,337,0,7524,7523,1,0,0,0,7524,7525,1,0,0,0,7525,7527,1, + 0,0,0,7526,7518,1,0,0,0,7526,7520,1,0,0,0,7527,7528,1,0,0,0,7528, + 7530,5,5,0,0,7529,7512,1,0,0,0,7529,7517,1,0,0,0,7530,751,1,0,0, + 0,7531,7533,3,750,375,0,7532,7531,1,0,0,0,7533,7534,1,0,0,0,7534, + 7532,1,0,0,0,7534,7535,1,0,0,0,7535,753,1,0,0,0,7536,7538,3,750, + 375,0,7537,7536,1,0,0,0,7538,7541,1,0,0,0,7539,7537,1,0,0,0,7539, + 7540,1,0,0,0,7540,755,1,0,0,0,7541,7539,1,0,0,0,7542,7547,3,758, + 379,0,7543,7544,5,6,0,0,7544,7546,3,758,379,0,7545,7543,1,0,0,0, + 7546,7549,1,0,0,0,7547,7545,1,0,0,0,7547,7548,1,0,0,0,7548,757,1, + 0,0,0,7549,7547,1,0,0,0,7550,7555,3,734,367,0,7551,7552,5,36,0,0, + 7552,7556,3,824,412,0,7553,7556,3,826,413,0,7554,7556,1,0,0,0,7555, + 7551,1,0,0,0,7555,7553,1,0,0,0,7555,7554,1,0,0,0,7556,7559,1,0,0, + 0,7557,7559,5,9,0,0,7558,7550,1,0,0,0,7558,7557,1,0,0,0,7559,759, + 1,0,0,0,7560,7565,3,780,390,0,7561,7562,5,6,0,0,7562,7564,3,780, + 390,0,7563,7561,1,0,0,0,7564,7567,1,0,0,0,7565,7563,1,0,0,0,7565, + 7566,1,0,0,0,7566,761,1,0,0,0,7567,7565,1,0,0,0,7568,7573,3,774, + 387,0,7569,7570,5,6,0,0,7570,7572,3,774,387,0,7571,7569,1,0,0,0, + 7572,7575,1,0,0,0,7573,7571,1,0,0,0,7573,7574,1,0,0,0,7574,763,1, + 0,0,0,7575,7573,1,0,0,0,7576,7581,3,790,395,0,7577,7578,5,6,0,0, + 7578,7580,3,790,395,0,7579,7577,1,0,0,0,7580,7583,1,0,0,0,7581,7579, + 1,0,0,0,7581,7582,1,0,0,0,7582,765,1,0,0,0,7583,7581,1,0,0,0,7584, + 7589,3,788,394,0,7585,7586,5,6,0,0,7586,7588,3,788,394,0,7587,7585, + 1,0,0,0,7588,7591,1,0,0,0,7589,7587,1,0,0,0,7589,7590,1,0,0,0,7590, + 767,1,0,0,0,7591,7589,1,0,0,0,7592,7593,3,780,390,0,7593,769,1,0, + 0,0,7594,7595,3,780,390,0,7595,771,1,0,0,0,7596,7597,3,780,390,0, + 7597,773,1,0,0,0,7598,7599,3,780,390,0,7599,775,1,0,0,0,7600,7601, + 3,780,390,0,7601,777,1,0,0,0,7602,7603,3,316,158,0,7603,779,1,0, + 0,0,7604,7606,3,818,409,0,7605,7607,3,752,376,0,7606,7605,1,0,0, + 0,7606,7607,1,0,0,0,7607,781,1,0,0,0,7608,7613,3,770,385,0,7609, + 7610,5,6,0,0,7610,7612,3,770,385,0,7611,7609,1,0,0,0,7612,7615,1, + 0,0,0,7613,7611,1,0,0,0,7613,7614,1,0,0,0,7614,783,1,0,0,0,7615, + 7613,1,0,0,0,7616,7621,3,818,409,0,7617,7618,5,6,0,0,7618,7620,3, + 818,409,0,7619,7617,1,0,0,0,7620,7623,1,0,0,0,7621,7619,1,0,0,0, + 7621,7622,1,0,0,0,7622,785,1,0,0,0,7623,7621,1,0,0,0,7624,7625,3, + 316,158,0,7625,787,1,0,0,0,7626,7627,3,316,158,0,7627,789,1,0,0, + 0,7628,7629,3,316,158,0,7629,791,1,0,0,0,7630,7631,3,818,409,0,7631, + 793,1,0,0,0,7632,7633,3,818,409,0,7633,795,1,0,0,0,7634,7639,3,820, + 410,0,7635,7636,3,818,409,0,7636,7637,3,752,376,0,7637,7639,1,0, + 0,0,7638,7634,1,0,0,0,7638,7635,1,0,0,0,7639,797,1,0,0,0,7640,7645, + 3,820,410,0,7641,7642,3,818,409,0,7642,7643,3,752,376,0,7643,7645, + 1,0,0,0,7644,7640,1,0,0,0,7644,7641,1,0,0,0,7645,799,1,0,0,0,7646, + 7647,3,818,409,0,7647,7648,3,754,377,0,7648,7651,1,0,0,0,7649,7651, + 4,400,10,0,7650,7646,1,0,0,0,7650,7649,1,0,0,0,7651,801,1,0,0,0, + 7652,7653,3,818,409,0,7653,803,1,0,0,0,7654,7659,3,820,410,0,7655, + 7656,3,818,409,0,7656,7657,3,752,376,0,7657,7659,1,0,0,0,7658,7654, + 1,0,0,0,7658,7655,1,0,0,0,7659,805,1,0,0,0,7660,7665,3,820,410,0, + 7661,7662,3,818,409,0,7662,7663,3,752,376,0,7663,7665,1,0,0,0,7664, + 7660,1,0,0,0,7664,7661,1,0,0,0,7665,807,1,0,0,0,7666,7669,3,810, + 405,0,7667,7668,5,487,0,0,7668,7670,3,810,405,0,7669,7667,1,0,0, + 0,7669,7670,1,0,0,0,7670,809,1,0,0,0,7671,7683,5,558,0,0,7672,7683, + 5,560,0,0,7673,7677,5,562,0,0,7674,7676,5,588,0,0,7675,7674,1,0, + 0,0,7676,7679,1,0,0,0,7677,7675,1,0,0,0,7677,7678,1,0,0,0,7678,7680, + 1,0,0,0,7679,7677,1,0,0,0,7680,7683,5,589,0,0,7681,7683,5,584,0, + 0,7682,7671,1,0,0,0,7682,7672,1,0,0,0,7682,7673,1,0,0,0,7682,7681, + 1,0,0,0,7683,811,1,0,0,0,7684,7686,7,29,0,0,7685,7684,1,0,0,0,7685, + 7686,1,0,0,0,7686,7687,1,0,0,0,7687,7688,5,571,0,0,7688,813,1,0, + 0,0,7689,7695,3,822,411,0,7690,7695,5,52,0,0,7691,7695,5,49,0,0, + 7692,7695,5,89,0,0,7693,7695,5,524,0,0,7694,7689,1,0,0,0,7694,7690, + 1,0,0,0,7694,7691,1,0,0,0,7694,7692,1,0,0,0,7694,7693,1,0,0,0,7695, + 815,1,0,0,0,7696,7701,3,814,407,0,7697,7698,5,6,0,0,7698,7700,3, + 814,407,0,7699,7697,1,0,0,0,7700,7703,1,0,0,0,7701,7699,1,0,0,0, + 7701,7702,1,0,0,0,7702,817,1,0,0,0,7703,7701,1,0,0,0,7704,7709,3, + 826,413,0,7705,7709,3,828,414,0,7706,7709,3,830,415,0,7707,7709, + 3,930,465,0,7708,7704,1,0,0,0,7708,7705,1,0,0,0,7708,7706,1,0,0, + 0,7708,7707,1,0,0,0,7709,819,1,0,0,0,7710,7715,3,826,413,0,7711, + 7715,3,828,414,0,7712,7715,3,930,465,0,7713,7715,3,832,416,0,7714, + 7710,1,0,0,0,7714,7711,1,0,0,0,7714,7712,1,0,0,0,7714,7713,1,0,0, + 0,7715,821,1,0,0,0,7716,7721,3,826,413,0,7717,7721,3,828,414,0,7718, + 7721,3,830,415,0,7719,7721,3,832,416,0,7720,7716,1,0,0,0,7720,7717, + 1,0,0,0,7720,7718,1,0,0,0,7720,7719,1,0,0,0,7721,823,1,0,0,0,7722, + 7726,3,822,411,0,7723,7726,3,930,465,0,7724,7726,3,834,417,0,7725, + 7722,1,0,0,0,7725,7723,1,0,0,0,7725,7724,1,0,0,0,7726,825,1,0,0, + 0,7727,7730,5,549,0,0,7728,7729,5,487,0,0,7729,7731,3,810,405,0, + 7730,7728,1,0,0,0,7730,7731,1,0,0,0,7731,7739,1,0,0,0,7732,7739, + 3,808,404,0,7733,7739,5,550,0,0,7734,7739,5,554,0,0,7735,7739,5, + 574,0,0,7736,7739,5,575,0,0,7737,7739,3,930,465,0,7738,7727,1,0, + 0,0,7738,7732,1,0,0,0,7738,7733,1,0,0,0,7738,7734,1,0,0,0,7738,7735, + 1,0,0,0,7738,7736,1,0,0,0,7738,7737,1,0,0,0,7739,827,1,0,0,0,7740, + 7741,7,109,0,0,7741,829,1,0,0,0,7742,7794,5,387,0,0,7743,7794,5, + 388,0,0,7744,7794,3,662,331,0,7745,7794,5,390,0,0,7746,7794,5,391, + 0,0,7747,7794,3,664,332,0,7748,7794,5,393,0,0,7749,7794,5,394,0, + 0,7750,7794,5,395,0,0,7751,7794,5,396,0,0,7752,7794,5,397,0,0,7753, + 7794,5,398,0,0,7754,7794,5,399,0,0,7755,7794,5,470,0,0,7756,7794, + 5,400,0,0,7757,7794,5,401,0,0,7758,7794,5,402,0,0,7759,7794,5,403, + 0,0,7760,7794,5,404,0,0,7761,7794,5,405,0,0,7762,7794,5,406,0,0, + 7763,7794,5,407,0,0,7764,7794,5,489,0,0,7765,7794,5,408,0,0,7766, + 7794,3,658,329,0,7767,7794,5,453,0,0,7768,7794,5,410,0,0,7769,7794, + 5,411,0,0,7770,7794,5,412,0,0,7771,7794,5,413,0,0,7772,7794,5,414, + 0,0,7773,7794,5,415,0,0,7774,7794,5,416,0,0,7775,7794,5,417,0,0, + 7776,7794,5,418,0,0,7777,7794,5,419,0,0,7778,7794,5,420,0,0,7779, + 7794,5,421,0,0,7780,7794,5,422,0,0,7781,7794,5,423,0,0,7782,7794, + 5,424,0,0,7783,7794,5,425,0,0,7784,7794,5,426,0,0,7785,7794,5,427, + 0,0,7786,7794,5,428,0,0,7787,7794,5,476,0,0,7788,7794,5,429,0,0, + 7789,7794,5,430,0,0,7790,7794,5,431,0,0,7791,7794,5,432,0,0,7792, + 7794,5,474,0,0,7793,7742,1,0,0,0,7793,7743,1,0,0,0,7793,7744,1,0, + 0,0,7793,7745,1,0,0,0,7793,7746,1,0,0,0,7793,7747,1,0,0,0,7793,7748, + 1,0,0,0,7793,7749,1,0,0,0,7793,7750,1,0,0,0,7793,7751,1,0,0,0,7793, + 7752,1,0,0,0,7793,7753,1,0,0,0,7793,7754,1,0,0,0,7793,7755,1,0,0, + 0,7793,7756,1,0,0,0,7793,7757,1,0,0,0,7793,7758,1,0,0,0,7793,7759, + 1,0,0,0,7793,7760,1,0,0,0,7793,7761,1,0,0,0,7793,7762,1,0,0,0,7793, + 7763,1,0,0,0,7793,7764,1,0,0,0,7793,7765,1,0,0,0,7793,7766,1,0,0, + 0,7793,7767,1,0,0,0,7793,7768,1,0,0,0,7793,7769,1,0,0,0,7793,7770, + 1,0,0,0,7793,7771,1,0,0,0,7793,7772,1,0,0,0,7793,7773,1,0,0,0,7793, + 7774,1,0,0,0,7793,7775,1,0,0,0,7793,7776,1,0,0,0,7793,7777,1,0,0, + 0,7793,7778,1,0,0,0,7793,7779,1,0,0,0,7793,7780,1,0,0,0,7793,7781, + 1,0,0,0,7793,7782,1,0,0,0,7793,7783,1,0,0,0,7793,7784,1,0,0,0,7793, + 7785,1,0,0,0,7793,7786,1,0,0,0,7793,7787,1,0,0,0,7793,7788,1,0,0, + 0,7793,7789,1,0,0,0,7793,7790,1,0,0,0,7793,7791,1,0,0,0,7793,7792, + 1,0,0,0,7794,831,1,0,0,0,7795,7796,7,110,0,0,7796,833,1,0,0,0,7797, + 7798,7,111,0,0,7798,835,1,0,0,0,7799,7801,3,838,419,0,7800,7799, + 1,0,0,0,7800,7801,1,0,0,0,7801,7812,1,0,0,0,7802,7810,5,178,0,0, + 7803,7807,3,840,420,0,7804,7807,5,178,0,0,7805,7807,3,838,419,0, + 7806,7803,1,0,0,0,7806,7804,1,0,0,0,7806,7805,1,0,0,0,7807,7808, + 1,0,0,0,7808,7806,1,0,0,0,7808,7809,1,0,0,0,7809,7811,1,0,0,0,7810, + 7806,1,0,0,0,7810,7811,1,0,0,0,7811,7813,1,0,0,0,7812,7802,1,0,0, + 0,7812,7813,1,0,0,0,7813,7814,1,0,0,0,7814,7818,5,146,0,0,7815,7817, + 3,846,423,0,7816,7815,1,0,0,0,7817,7820,1,0,0,0,7818,7816,1,0,0, + 0,7818,7819,1,0,0,0,7819,7822,1,0,0,0,7820,7818,1,0,0,0,7821,7823, + 3,924,462,0,7822,7821,1,0,0,0,7822,7823,1,0,0,0,7823,7824,1,0,0, + 0,7824,7826,5,454,0,0,7825,7827,3,928,464,0,7826,7825,1,0,0,0,7826, + 7827,1,0,0,0,7827,837,1,0,0,0,7828,7829,5,18,0,0,7829,7830,3,928, + 464,0,7830,7831,5,19,0,0,7831,839,1,0,0,0,7832,7879,3,928,464,0, + 7833,7834,5,496,0,0,7834,7837,5,62,0,0,7835,7838,5,28,0,0,7836,7838, + 3,818,409,0,7837,7835,1,0,0,0,7837,7836,1,0,0,0,7838,7880,1,0,0, + 0,7839,7841,5,497,0,0,7840,7839,1,0,0,0,7840,7841,1,0,0,0,7841,7842, + 1,0,0,0,7842,7844,3,652,326,0,7843,7845,3,98,49,0,7844,7843,1,0, + 0,0,7844,7845,1,0,0,0,7845,7848,1,0,0,0,7846,7847,5,77,0,0,7847, + 7849,5,78,0,0,7848,7846,1,0,0,0,7848,7849,1,0,0,0,7849,7855,1,0, + 0,0,7850,7853,3,844,422,0,7851,7853,5,53,0,0,7852,7850,1,0,0,0,7852, + 7851,1,0,0,0,7853,7854,1,0,0,0,7854,7856,3,932,466,0,7855,7852,1, + 0,0,0,7855,7856,1,0,0,0,7856,7880,1,0,0,0,7857,7859,5,269,0,0,7858, + 7857,1,0,0,0,7858,7859,1,0,0,0,7859,7860,1,0,0,0,7860,7862,5,324, + 0,0,7861,7858,1,0,0,0,7861,7862,1,0,0,0,7862,7863,1,0,0,0,7863,7875, + 5,172,0,0,7864,7865,5,2,0,0,7865,7870,3,842,421,0,7866,7867,5,6, + 0,0,7867,7869,3,842,421,0,7868,7866,1,0,0,0,7869,7872,1,0,0,0,7870, + 7868,1,0,0,0,7870,7871,1,0,0,0,7871,7873,1,0,0,0,7872,7870,1,0,0, + 0,7873,7874,5,3,0,0,7874,7876,1,0,0,0,7875,7864,1,0,0,0,7875,7876, + 1,0,0,0,7876,7877,1,0,0,0,7877,7878,7,112,0,0,7878,7880,3,560,280, + 0,7879,7833,1,0,0,0,7879,7840,1,0,0,0,7879,7861,1,0,0,0,7880,7881, + 1,0,0,0,7881,7882,5,7,0,0,7882,841,1,0,0,0,7883,7884,3,928,464,0, + 7884,7885,3,652,326,0,7885,843,1,0,0,0,7886,7887,7,113,0,0,7887, + 845,1,0,0,0,7888,7889,3,836,418,0,7889,7890,5,7,0,0,7890,7913,1, + 0,0,0,7891,7913,3,874,437,0,7892,7913,3,876,438,0,7893,7913,3,852, + 426,0,7894,7913,3,860,430,0,7895,7913,3,864,432,0,7896,7913,3,866, + 433,0,7897,7913,3,870,435,0,7898,7913,3,872,436,0,7899,7913,3,880, + 440,0,7900,7913,3,884,442,0,7901,7913,3,886,443,0,7902,7913,3,848, + 424,0,7903,7913,3,850,425,0,7904,7913,3,854,427,0,7905,7913,3,890, + 445,0,7906,7913,3,894,447,0,7907,7913,3,898,449,0,7908,7913,3,914, + 457,0,7909,7913,3,916,458,0,7910,7913,3,918,459,0,7911,7913,3,920, + 460,0,7912,7888,1,0,0,0,7912,7891,1,0,0,0,7912,7892,1,0,0,0,7912, + 7893,1,0,0,0,7912,7894,1,0,0,0,7912,7895,1,0,0,0,7912,7896,1,0,0, + 0,7912,7897,1,0,0,0,7912,7898,1,0,0,0,7912,7899,1,0,0,0,7912,7900, + 1,0,0,0,7912,7901,1,0,0,0,7912,7902,1,0,0,0,7912,7903,1,0,0,0,7912, + 7904,1,0,0,0,7912,7905,1,0,0,0,7912,7906,1,0,0,0,7912,7907,1,0,0, + 0,7912,7908,1,0,0,0,7912,7909,1,0,0,0,7912,7910,1,0,0,0,7912,7911, + 1,0,0,0,7913,847,1,0,0,0,7914,7915,5,498,0,0,7915,7916,3,932,466, + 0,7916,7917,5,7,0,0,7917,849,1,0,0,0,7918,7919,5,433,0,0,7919,7926, + 3,928,464,0,7920,7922,5,2,0,0,7921,7923,3,730,365,0,7922,7921,1, + 0,0,0,7922,7923,1,0,0,0,7923,7924,1,0,0,0,7924,7925,5,3,0,0,7925, + 7927,5,7,0,0,7926,7920,1,0,0,0,7926,7927,1,0,0,0,7927,7938,1,0,0, + 0,7928,7929,5,57,0,0,7929,7930,3,928,464,0,7930,7932,5,2,0,0,7931, + 7933,3,730,365,0,7932,7931,1,0,0,0,7932,7933,1,0,0,0,7933,7934,1, + 0,0,0,7934,7935,5,3,0,0,7935,7936,5,7,0,0,7936,7938,1,0,0,0,7937, + 7918,1,0,0,0,7937,7928,1,0,0,0,7938,851,1,0,0,0,7939,7940,3,858, + 429,0,7940,7941,3,844,422,0,7941,7942,3,932,466,0,7942,7943,5,7, + 0,0,7943,853,1,0,0,0,7944,7946,5,499,0,0,7945,7947,7,114,0,0,7946, + 7945,1,0,0,0,7946,7947,1,0,0,0,7947,7948,1,0,0,0,7948,7949,5,500, + 0,0,7949,7954,3,856,428,0,7950,7951,5,6,0,0,7951,7953,3,856,428, + 0,7952,7950,1,0,0,0,7953,7956,1,0,0,0,7954,7952,1,0,0,0,7954,7955, + 1,0,0,0,7955,7957,1,0,0,0,7956,7954,1,0,0,0,7957,7958,5,7,0,0,7958, + 855,1,0,0,0,7959,7960,3,858,429,0,7960,7961,3,844,422,0,7961,7962, + 3,818,409,0,7962,857,1,0,0,0,7963,7966,3,316,158,0,7964,7966,5,28, + 0,0,7965,7963,1,0,0,0,7965,7964,1,0,0,0,7966,7973,1,0,0,0,7967,7968, + 5,4,0,0,7968,7969,3,674,337,0,7969,7970,5,5,0,0,7970,7972,1,0,0, + 0,7971,7967,1,0,0,0,7972,7975,1,0,0,0,7973,7971,1,0,0,0,7973,7974, + 1,0,0,0,7974,859,1,0,0,0,7975,7973,1,0,0,0,7976,7977,5,220,0,0,7977, + 7978,3,932,466,0,7978,7982,5,93,0,0,7979,7981,3,846,423,0,7980,7979, + 1,0,0,0,7981,7984,1,0,0,0,7982,7980,1,0,0,0,7982,7983,1,0,0,0,7983, + 7996,1,0,0,0,7984,7982,1,0,0,0,7985,7986,5,502,0,0,7986,7987,3,674, + 337,0,7987,7991,5,93,0,0,7988,7990,3,846,423,0,7989,7988,1,0,0,0, + 7990,7993,1,0,0,0,7991,7989,1,0,0,0,7991,7992,1,0,0,0,7992,7995, + 1,0,0,0,7993,7991,1,0,0,0,7994,7985,1,0,0,0,7995,7998,1,0,0,0,7996, + 7994,1,0,0,0,7996,7997,1,0,0,0,7997,8000,1,0,0,0,7998,7996,1,0,0, + 0,7999,8001,3,862,431,0,8000,7999,1,0,0,0,8000,8001,1,0,0,0,8001, + 8002,1,0,0,0,8002,8003,5,454,0,0,8003,8004,5,220,0,0,8004,8005,5, + 7,0,0,8005,861,1,0,0,0,8006,8010,5,58,0,0,8007,8009,3,846,423,0, + 8008,8007,1,0,0,0,8009,8012,1,0,0,0,8010,8008,1,0,0,0,8010,8011, + 1,0,0,0,8011,863,1,0,0,0,8012,8010,1,0,0,0,8013,8015,5,40,0,0,8014, + 8016,3,932,466,0,8015,8014,1,0,0,0,8015,8016,1,0,0,0,8016,8026,1, + 0,0,0,8017,8018,5,102,0,0,8018,8019,3,730,365,0,8019,8023,5,93,0, + 0,8020,8022,3,846,423,0,8021,8020,1,0,0,0,8022,8025,1,0,0,0,8023, + 8021,1,0,0,0,8023,8024,1,0,0,0,8024,8027,1,0,0,0,8025,8023,1,0,0, + 0,8026,8017,1,0,0,0,8027,8028,1,0,0,0,8028,8026,1,0,0,0,8028,8029, + 1,0,0,0,8029,8031,1,0,0,0,8030,8032,3,862,431,0,8031,8030,1,0,0, + 0,8031,8032,1,0,0,0,8032,8033,1,0,0,0,8033,8034,5,454,0,0,8034,8035, + 5,40,0,0,8035,8036,5,7,0,0,8036,865,1,0,0,0,8037,8039,3,838,419, + 0,8038,8037,1,0,0,0,8038,8039,1,0,0,0,8039,8044,1,0,0,0,8040,8041, + 5,503,0,0,8041,8045,3,674,337,0,8042,8043,5,62,0,0,8043,8045,3,868, + 434,0,8044,8040,1,0,0,0,8044,8042,1,0,0,0,8044,8045,1,0,0,0,8045, + 8046,1,0,0,0,8046,8047,3,882,441,0,8047,867,1,0,0,0,8048,8049,3, + 314,157,0,8049,8072,5,68,0,0,8050,8052,3,818,409,0,8051,8053,3,534, + 267,0,8052,8051,1,0,0,0,8052,8053,1,0,0,0,8053,8073,1,0,0,0,8054, + 8073,3,560,280,0,8055,8073,3,520,260,0,8056,8057,5,202,0,0,8057, + 8060,3,674,337,0,8058,8059,5,100,0,0,8059,8061,3,730,365,0,8060, + 8058,1,0,0,0,8060,8061,1,0,0,0,8061,8073,1,0,0,0,8062,8064,5,504, + 0,0,8063,8062,1,0,0,0,8063,8064,1,0,0,0,8064,8065,1,0,0,0,8065,8066, + 3,674,337,0,8066,8067,5,24,0,0,8067,8070,3,674,337,0,8068,8069,5, + 147,0,0,8069,8071,3,674,337,0,8070,8068,1,0,0,0,8070,8071,1,0,0, + 0,8071,8073,1,0,0,0,8072,8050,1,0,0,0,8072,8054,1,0,0,0,8072,8055, + 1,0,0,0,8072,8056,1,0,0,0,8072,8063,1,0,0,0,8073,869,1,0,0,0,8074, + 8076,3,838,419,0,8075,8074,1,0,0,0,8075,8076,1,0,0,0,8076,8077,1, + 0,0,0,8077,8078,5,505,0,0,8078,8081,3,314,157,0,8079,8080,5,506, + 0,0,8080,8082,5,571,0,0,8081,8079,1,0,0,0,8081,8082,1,0,0,0,8082, + 8083,1,0,0,0,8083,8084,5,68,0,0,8084,8085,5,35,0,0,8085,8086,3,674, + 337,0,8086,8087,3,882,441,0,8087,871,1,0,0,0,8088,8090,7,115,0,0, + 8089,8091,3,928,464,0,8090,8089,1,0,0,0,8090,8091,1,0,0,0,8091,8094, + 1,0,0,0,8092,8093,5,102,0,0,8093,8095,3,932,466,0,8094,8092,1,0, + 0,0,8094,8095,1,0,0,0,8095,8096,1,0,0,0,8096,8097,5,7,0,0,8097,873, + 1,0,0,0,8098,8113,5,508,0,0,8099,8100,5,268,0,0,8100,8114,3,932, + 466,0,8101,8108,5,509,0,0,8102,8103,5,202,0,0,8103,8104,3,674,337, + 0,8104,8105,5,100,0,0,8105,8106,3,730,365,0,8106,8109,1,0,0,0,8107, + 8109,3,560,280,0,8108,8102,1,0,0,0,8108,8107,1,0,0,0,8109,8114,1, + 0,0,0,8110,8112,3,932,466,0,8111,8110,1,0,0,0,8111,8112,1,0,0,0, + 8112,8114,1,0,0,0,8113,8099,1,0,0,0,8113,8101,1,0,0,0,8113,8111, + 1,0,0,0,8114,8115,1,0,0,0,8115,8116,5,7,0,0,8116,875,1,0,0,0,8117, + 8147,5,510,0,0,8118,8120,7,116,0,0,8119,8118,1,0,0,0,8119,8120,1, + 0,0,0,8120,8133,1,0,0,0,8121,8134,3,826,413,0,8122,8123,5,511,0, + 0,8123,8134,3,808,404,0,8124,8131,3,808,404,0,8125,8126,5,6,0,0, + 8126,8128,3,674,337,0,8127,8125,1,0,0,0,8128,8129,1,0,0,0,8129,8127, + 1,0,0,0,8129,8130,1,0,0,0,8130,8132,1,0,0,0,8131,8127,1,0,0,0,8131, + 8132,1,0,0,0,8132,8134,1,0,0,0,8133,8121,1,0,0,0,8133,8122,1,0,0, + 0,8133,8124,1,0,0,0,8133,8134,1,0,0,0,8134,8144,1,0,0,0,8135,8136, + 5,100,0,0,8136,8141,3,878,439,0,8137,8138,5,6,0,0,8138,8140,3,878, + 439,0,8139,8137,1,0,0,0,8140,8143,1,0,0,0,8141,8139,1,0,0,0,8141, + 8142,1,0,0,0,8142,8145,1,0,0,0,8143,8141,1,0,0,0,8144,8135,1,0,0, + 0,8144,8145,1,0,0,0,8145,8146,1,0,0,0,8146,8148,5,7,0,0,8147,8119, + 1,0,0,0,8147,8148,1,0,0,0,8148,877,1,0,0,0,8149,8150,3,826,413,0, + 8150,8151,5,10,0,0,8151,8152,3,674,337,0,8152,879,1,0,0,0,8153,8154, + 5,518,0,0,8154,8157,3,932,466,0,8155,8156,5,6,0,0,8156,8158,3,932, + 466,0,8157,8155,1,0,0,0,8157,8158,1,0,0,0,8158,8159,1,0,0,0,8159, + 8160,5,7,0,0,8160,881,1,0,0,0,8161,8165,5,519,0,0,8162,8164,3,846, + 423,0,8163,8162,1,0,0,0,8164,8167,1,0,0,0,8165,8163,1,0,0,0,8165, + 8166,1,0,0,0,8166,8168,1,0,0,0,8167,8165,1,0,0,0,8168,8169,5,454, + 0,0,8169,8171,5,519,0,0,8170,8172,3,928,464,0,8171,8170,1,0,0,0, + 8171,8172,1,0,0,0,8172,8173,1,0,0,0,8173,8174,5,7,0,0,8174,883,1, + 0,0,0,8175,8177,3,4,2,0,8176,8178,3,888,444,0,8177,8176,1,0,0,0, + 8177,8178,1,0,0,0,8178,8179,1,0,0,0,8179,8180,5,7,0,0,8180,885,1, + 0,0,0,8181,8182,5,202,0,0,8182,8198,3,674,337,0,8183,8185,3,888, + 444,0,8184,8183,1,0,0,0,8184,8185,1,0,0,0,8185,8188,1,0,0,0,8186, + 8187,5,100,0,0,8187,8189,3,730,365,0,8188,8186,1,0,0,0,8188,8189, + 1,0,0,0,8189,8199,1,0,0,0,8190,8191,5,100,0,0,8191,8193,3,730,365, + 0,8192,8190,1,0,0,0,8192,8193,1,0,0,0,8193,8195,1,0,0,0,8194,8196, + 3,888,444,0,8195,8194,1,0,0,0,8195,8196,1,0,0,0,8196,8199,1,0,0, + 0,8197,8199,1,0,0,0,8198,8184,1,0,0,0,8198,8192,1,0,0,0,8198,8197, + 1,0,0,0,8199,8200,1,0,0,0,8200,8201,5,7,0,0,8201,887,1,0,0,0,8202, + 8204,5,71,0,0,8203,8205,5,346,0,0,8204,8203,1,0,0,0,8204,8205,1, + 0,0,0,8205,8206,1,0,0,0,8206,8207,3,730,365,0,8207,889,1,0,0,0,8208, + 8240,5,520,0,0,8209,8214,3,922,461,0,8210,8212,5,269,0,0,8211,8210, + 1,0,0,0,8211,8212,1,0,0,0,8212,8213,1,0,0,0,8213,8215,5,324,0,0, + 8214,8211,1,0,0,0,8214,8215,1,0,0,0,8215,8216,1,0,0,0,8216,8224, + 5,62,0,0,8217,8225,3,560,280,0,8218,8219,5,202,0,0,8219,8222,3,932, + 466,0,8220,8221,5,100,0,0,8221,8223,3,730,365,0,8222,8220,1,0,0, + 0,8222,8223,1,0,0,0,8223,8225,1,0,0,0,8224,8217,1,0,0,0,8224,8218, + 1,0,0,0,8225,8241,1,0,0,0,8226,8238,3,818,409,0,8227,8228,5,2,0, + 0,8228,8233,3,892,446,0,8229,8230,5,6,0,0,8230,8232,3,892,446,0, + 8231,8229,1,0,0,0,8232,8235,1,0,0,0,8233,8231,1,0,0,0,8233,8234, + 1,0,0,0,8234,8236,1,0,0,0,8235,8233,1,0,0,0,8236,8237,5,3,0,0,8237, + 8239,1,0,0,0,8238,8227,1,0,0,0,8238,8239,1,0,0,0,8239,8241,1,0,0, + 0,8240,8209,1,0,0,0,8240,8226,1,0,0,0,8241,8242,1,0,0,0,8242,8243, + 5,7,0,0,8243,891,1,0,0,0,8244,8245,3,818,409,0,8245,8246,5,20,0, + 0,8246,8248,1,0,0,0,8247,8244,1,0,0,0,8247,8248,1,0,0,0,8248,8249, + 1,0,0,0,8249,8250,3,674,337,0,8250,893,1,0,0,0,8251,8253,5,61,0, + 0,8252,8254,3,896,448,0,8253,8252,1,0,0,0,8253,8254,1,0,0,0,8254, + 8256,1,0,0,0,8255,8257,3,332,166,0,8256,8255,1,0,0,0,8256,8257,1, + 0,0,0,8257,8258,1,0,0,0,8258,8259,3,922,461,0,8259,8260,5,71,0,0, + 8260,8261,3,730,365,0,8261,8262,5,7,0,0,8262,895,1,0,0,0,8263,8278, + 5,268,0,0,8264,8278,5,293,0,0,8265,8278,5,207,0,0,8266,8278,5,249, + 0,0,8267,8269,7,50,0,0,8268,8267,1,0,0,0,8268,8269,1,0,0,0,8269, + 8270,1,0,0,0,8270,8278,3,674,337,0,8271,8278,5,30,0,0,8272,8275, + 7,117,0,0,8273,8276,3,674,337,0,8274,8276,5,30,0,0,8275,8273,1,0, + 0,0,8275,8274,1,0,0,0,8275,8276,1,0,0,0,8276,8278,1,0,0,0,8277,8263, + 1,0,0,0,8277,8264,1,0,0,0,8277,8265,1,0,0,0,8277,8266,1,0,0,0,8277, + 8268,1,0,0,0,8277,8271,1,0,0,0,8277,8272,1,0,0,0,8278,897,1,0,0, + 0,8279,8281,5,265,0,0,8280,8282,3,896,448,0,8281,8280,1,0,0,0,8281, + 8282,1,0,0,0,8282,8283,1,0,0,0,8283,8284,3,922,461,0,8284,8285,5, + 7,0,0,8285,899,1,0,0,0,8286,8288,3,572,286,0,8287,8286,1,0,0,0,8287, + 8288,1,0,0,0,8288,8289,1,0,0,0,8289,8290,5,525,0,0,8290,8292,5,71, + 0,0,8291,8293,5,81,0,0,8292,8291,1,0,0,0,8292,8293,1,0,0,0,8293, + 8294,1,0,0,0,8294,8296,3,774,387,0,8295,8297,5,9,0,0,8296,8295,1, + 0,0,0,8296,8297,1,0,0,0,8297,8302,1,0,0,0,8298,8300,5,36,0,0,8299, + 8298,1,0,0,0,8299,8300,1,0,0,0,8300,8301,1,0,0,0,8301,8303,3,818, + 409,0,8302,8299,1,0,0,0,8302,8303,1,0,0,0,8303,8304,1,0,0,0,8304, + 8305,5,100,0,0,8305,8306,3,902,451,0,8306,8307,5,80,0,0,8307,8309, + 3,674,337,0,8308,8310,3,904,452,0,8309,8308,1,0,0,0,8310,8311,1, + 0,0,0,8311,8309,1,0,0,0,8311,8312,1,0,0,0,8312,901,1,0,0,0,8313, + 8315,5,81,0,0,8314,8313,1,0,0,0,8314,8315,1,0,0,0,8315,8316,1,0, + 0,0,8316,8318,3,774,387,0,8317,8319,5,9,0,0,8318,8317,1,0,0,0,8318, + 8319,1,0,0,0,8319,8325,1,0,0,0,8320,8323,3,564,282,0,8321,8323,3, + 608,304,0,8322,8320,1,0,0,0,8322,8321,1,0,0,0,8323,8325,1,0,0,0, + 8324,8314,1,0,0,0,8324,8322,1,0,0,0,8325,8330,1,0,0,0,8326,8328, + 5,36,0,0,8327,8326,1,0,0,0,8327,8328,1,0,0,0,8328,8329,1,0,0,0,8329, + 8331,3,818,409,0,8330,8327,1,0,0,0,8330,8331,1,0,0,0,8331,903,1, + 0,0,0,8332,8333,5,102,0,0,8333,8336,5,526,0,0,8334,8335,5,33,0,0, + 8335,8337,3,674,337,0,8336,8334,1,0,0,0,8336,8337,1,0,0,0,8337,8338, + 1,0,0,0,8338,8343,5,93,0,0,8339,8344,3,908,454,0,8340,8344,5,182, + 0,0,8341,8342,5,57,0,0,8342,8344,5,270,0,0,8343,8339,1,0,0,0,8343, + 8340,1,0,0,0,8343,8341,1,0,0,0,8344,8359,1,0,0,0,8345,8346,5,102, + 0,0,8346,8347,5,77,0,0,8347,8350,5,526,0,0,8348,8349,5,33,0,0,8349, + 8351,3,674,337,0,8350,8348,1,0,0,0,8350,8351,1,0,0,0,8351,8352,1, + 0,0,0,8352,8356,5,93,0,0,8353,8357,3,906,453,0,8354,8355,5,57,0, + 0,8355,8357,5,270,0,0,8356,8353,1,0,0,0,8356,8354,1,0,0,0,8357,8359, + 1,0,0,0,8358,8332,1,0,0,0,8358,8345,1,0,0,0,8359,905,1,0,0,0,8360, + 8362,5,241,0,0,8361,8363,3,144,72,0,8362,8361,1,0,0,0,8362,8363, + 1,0,0,0,8363,8367,1,0,0,0,8364,8365,5,463,0,0,8365,8366,7,76,0,0, + 8366,8368,5,450,0,0,8367,8364,1,0,0,0,8367,8368,1,0,0,0,8368,8369, + 1,0,0,0,8369,8370,3,910,455,0,8370,907,1,0,0,0,8371,8372,5,369,0, + 0,8372,8390,5,333,0,0,8373,8374,3,800,400,0,8374,8375,5,10,0,0,8375, + 8376,3,912,456,0,8376,8391,1,0,0,0,8377,8378,3,144,72,0,8378,8379, + 5,10,0,0,8379,8380,5,2,0,0,8380,8385,3,912,456,0,8381,8382,5,6,0, + 0,8382,8384,3,912,456,0,8383,8381,1,0,0,0,8384,8387,1,0,0,0,8385, + 8383,1,0,0,0,8385,8386,1,0,0,0,8386,8388,1,0,0,0,8387,8385,1,0,0, + 0,8388,8389,5,3,0,0,8389,8391,1,0,0,0,8390,8373,1,0,0,0,8390,8377, + 1,0,0,0,8391,8392,1,0,0,0,8392,8390,1,0,0,0,8392,8393,1,0,0,0,8393, + 909,1,0,0,0,8394,8395,5,422,0,0,8395,8396,5,2,0,0,8396,8401,3,912, + 456,0,8397,8398,5,6,0,0,8398,8400,3,912,456,0,8399,8397,1,0,0,0, + 8400,8403,1,0,0,0,8401,8399,1,0,0,0,8401,8402,1,0,0,0,8402,8404, + 1,0,0,0,8403,8401,1,0,0,0,8404,8405,5,3,0,0,8405,8409,1,0,0,0,8406, + 8407,5,53,0,0,8407,8409,5,422,0,0,8408,8394,1,0,0,0,8408,8406,1, + 0,0,0,8409,911,1,0,0,0,8410,8413,3,588,294,0,8411,8413,5,53,0,0, + 8412,8410,1,0,0,0,8412,8411,1,0,0,0,8413,913,1,0,0,0,8414,8415,5, + 157,0,0,8415,8416,3,922,461,0,8416,8417,5,7,0,0,8417,915,1,0,0,0, + 8418,8419,5,78,0,0,8419,8420,5,7,0,0,8420,917,1,0,0,0,8421,8427, + 7,67,0,0,8422,8424,5,33,0,0,8423,8425,5,269,0,0,8424,8423,1,0,0, + 0,8424,8425,1,0,0,0,8425,8426,1,0,0,0,8426,8428,5,153,0,0,8427,8422, + 1,0,0,0,8427,8428,1,0,0,0,8428,8429,1,0,0,0,8429,8430,5,7,0,0,8430, + 919,1,0,0,0,8431,8432,5,333,0,0,8432,8433,3,316,158,0,8433,8434, + 5,94,0,0,8434,8435,5,53,0,0,8435,8436,5,7,0,0,8436,8444,1,0,0,0, + 8437,8440,5,313,0,0,8438,8441,3,316,158,0,8439,8441,5,30,0,0,8440, + 8438,1,0,0,0,8440,8439,1,0,0,0,8441,8442,1,0,0,0,8442,8444,5,7,0, + 0,8443,8431,1,0,0,0,8443,8437,1,0,0,0,8444,921,1,0,0,0,8445,8448, + 3,818,409,0,8446,8448,5,28,0,0,8447,8445,1,0,0,0,8447,8446,1,0,0, + 0,8448,923,1,0,0,0,8449,8466,5,517,0,0,8450,8451,5,102,0,0,8451, + 8456,3,926,463,0,8452,8453,5,82,0,0,8453,8455,3,926,463,0,8454,8452, + 1,0,0,0,8455,8458,1,0,0,0,8456,8454,1,0,0,0,8456,8457,1,0,0,0,8457, + 8459,1,0,0,0,8458,8456,1,0,0,0,8459,8463,5,93,0,0,8460,8462,3,846, + 423,0,8461,8460,1,0,0,0,8462,8465,1,0,0,0,8463,8461,1,0,0,0,8463, + 8464,1,0,0,0,8464,8467,1,0,0,0,8465,8463,1,0,0,0,8466,8450,1,0,0, + 0,8467,8468,1,0,0,0,8468,8466,1,0,0,0,8468,8469,1,0,0,0,8469,925, + 1,0,0,0,8470,8474,3,928,464,0,8471,8472,5,511,0,0,8472,8474,3,808, + 404,0,8473,8470,1,0,0,0,8473,8471,1,0,0,0,8474,927,1,0,0,0,8475, + 8478,3,818,409,0,8476,8478,3,930,465,0,8477,8475,1,0,0,0,8477,8476, + 1,0,0,0,8478,929,1,0,0,0,8479,8480,7,118,0,0,8480,931,1,0,0,0,8481, + 8483,3,756,378,0,8482,8481,1,0,0,0,8482,8483,1,0,0,0,8483,8485,1, + 0,0,0,8484,8486,3,580,290,0,8485,8484,1,0,0,0,8485,8486,1,0,0,0, + 8486,8488,1,0,0,0,8487,8489,3,610,305,0,8488,8487,1,0,0,0,8488,8489, + 1,0,0,0,8489,8491,1,0,0,0,8490,8492,3,638,319,0,8491,8490,1,0,0, + 0,8491,8492,1,0,0,0,8492,8494,1,0,0,0,8493,8495,3,600,300,0,8494, + 8493,1,0,0,0,8494,8495,1,0,0,0,8495,8498,1,0,0,0,8496,8497,5,67, + 0,0,8497,8499,3,674,337,0,8498,8496,1,0,0,0,8498,8499,1,0,0,0,8499, + 8501,1,0,0,0,8500,8502,3,702,351,0,8501,8500,1,0,0,0,8501,8502,1, + 0,0,0,8502,933,1,0,0,0,1188,937,944,1064,1066,1075,1080,1086,1121, + 1131,1137,1142,1149,1154,1161,1172,1180,1184,1196,1202,1208,1212, + 1217,1221,1234,1244,1246,1252,1257,1270,1273,1278,1283,1294,1298, + 1310,1314,1317,1321,1333,1351,1358,1366,1371,1378,1386,1392,1400, + 1408,1412,1426,1431,1436,1448,1454,1466,1471,1481,1487,1492,1500, + 1505,1512,1517,1522,1532,1537,1542,1549,1553,1567,1573,1579,1584, + 1591,1603,1611,1619,1635,1644,1653,1662,1666,1678,1686,1696,1716, + 1721,1724,1731,1734,1738,1742,1745,1750,1755,1759,1768,1774,1778, + 1787,1790,1796,1805,1817,1821,1825,1830,1833,1839,1841,1843,1847, + 1853,1857,1862,1867,1871,1874,1881,1894,1907,1921,1938,1948,1955, + 1960,1964,1971,1976,1979,1981,1986,1990,1994,1998,2003,2006,2010, + 2013,2017,2025,2030,2033,2037,2043,2052,2056,2062,2064,2073,2078, + 2090,2095,2099,2103,2108,2112,2115,2118,2121,2124,2127,2132,2135, + 2138,2141,2144,2147,2153,2157,2160,2163,2166,2169,2171,2178,2186, + 2196,2206,2211,2214,2219,2224,2229,2232,2237,2246,2248,2252,2255, + 2259,2264,2269,2273,2276,2280,2283,2288,2291,2296,2299,2303,2306, + 2309,2314,2317,2325,2337,2341,2348,2353,2356,2359,2362,2367,2378, + 2384,2388,2391,2394,2399,2406,2409,2413,2421,2426,2429,2432,2439, + 2444,2453,2456,2459,2464,2467,2479,2489,2506,2510,2514,2516,2533, + 2535,2551,2562,2565,2568,2577,2586,2602,2605,2608,2616,2620,2627, + 2636,2640,2646,2650,2653,2656,2659,2662,2668,2672,2677,2681,2684, + 2687,2690,2695,2701,2705,2709,2713,2719,2721,2726,2732,2738,2742, + 2757,2762,2765,2767,2770,2774,2778,2781,2784,2792,2798,2800,2806, + 2811,2816,2820,2827,2829,2840,2879,2889,2891,2894,2898,2902,2912, + 2914,2920,2922,2931,2943,2957,2962,2965,2972,2977,2985,2987,2993, + 2998,3002,3007,3013,3020,3026,3028,3037,3043,3051,3057,3062,3067, + 3075,3090,3092,3096,3100,3103,3106,3115,3118,3121,3127,3133,3137, + 3149,3155,3158,3163,3167,3174,3184,3186,3210,3222,3227,3229,3233, + 3236,3239,3249,3252,3262,3267,3272,3275,3278,3286,3292,3299,3307, + 3310,3321,3325,3331,3338,3341,3350,3364,3367,3381,3392,3395,3407, + 3412,3425,3430,3443,3452,3455,3458,3465,3468,3480,3486,3488,3496, + 3504,3512,3524,3529,3540,3551,3559,3567,3574,3581,3583,3586,3591, + 3596,3615,3624,3627,3654,3663,3666,3670,3674,3678,3685,3689,3693, + 3697,3701,3706,3710,3715,3721,3726,3733,3737,3743,3747,3752,3760, + 3766,3771,3778,3783,3787,3792,3798,3805,3810,3817,3822,3829,3833, + 3841,3845,3847,3850,3855,3865,3880,3883,3891,3898,3903,3909,3913, + 3920,3925,3928,3931,3935,3944,3962,3965,3997,4002,4008,4028,4033, + 4039,4042,4046,4050,4056,4059,4063,4067,4072,4075,4078,4081,4094, + 4100,4108,4115,4120,4123,4130,4133,4141,4144,4149,4156,4159,4179, + 4191,4194,4200,4205,4214,4222,4227,4233,4240,4248,4251,4262,4264, + 4278,4284,4292,4294,4300,4304,4307,4310,4315,4320,4324,4327,4330, + 4333,4336,4344,4355,4358,4361,4366,4369,4373,4377,4383,4391,4394, + 4407,4412,4414,4419,4426,4433,4442,4450,4458,4465,4473,4480,4488, + 4492,4496,4498,4504,4509,4513,4520,4525,4530,4535,4537,4547,4557, + 4573,4591,4603,4610,4625,4630,4633,4638,4643,4648,4651,4654,4659, + 4666,4670,4675,4682,4686,4692,4701,4710,4722,4724,4737,4743,4747, + 4749,4756,4769,4776,4778,4794,4798,4802,4807,4812,4817,4822,4825, + 4837,4890,4899,4903,4912,4916,4925,4929,4934,4937,4941,4946,4948, + 4957,4962,4973,4977,4991,4999,5037,5039,5058,5061,5088,5092,5096, + 5100,5104,5107,5122,5129,5143,5156,5181,5200,5215,5231,5238,5249, + 5252,5271,5274,5287,5291,5311,5323,5327,5349,5353,5363,5367,5373, + 5377,5381,5385,5392,5397,5408,5412,5415,5420,5426,5437,5441,5444, + 5448,5452,5455,5465,5468,5472,5477,5483,5486,5491,5494,5501,5503, + 5509,5513,5522,5527,5529,5539,5542,5547,5555,5558,5563,5565,5567, + 5573,5590,5596,5609,5615,5619,5624,5654,5669,5674,5678,5691,5695, + 5697,5706,5712,5714,5718,5721,5724,5727,5730,5732,5735,5739,5747, + 5752,5755,5761,5765,5769,5774,5776,5780,5784,5791,5797,5801,5803, + 5805,5818,5826,5834,5845,5854,5859,5863,5867,5874,5877,5879,5887, + 5891,5894,5901,5908,5913,5920,5923,5925,5928,5934,5939,5943,5950, + 5960,5967,5970,5973,5977,5988,5991,5994,5997,6000,6007,6010,6013, + 6020,6032,6039,6041,6046,6051,6053,6059,6066,6071,6076,6080,6084, + 6088,6090,6094,6098,6101,6104,6106,6116,6118,6123,6127,6132,6136, + 6143,6148,6152,6155,6161,6164,6183,6190,6194,6197,6201,6205,6208, + 6211,6216,6225,6232,6236,6240,6244,6247,6249,6254,6258,6263,6269, + 6276,6281,6286,6295,6302,6310,6321,6326,6330,6333,6337,6342,6346, + 6351,6359,6370,6375,6379,6382,6385,6387,6390,6393,6396,6400,6404, + 6408,6410,6419,6424,6430,6434,6436,6443,6448,6454,6456,6460,6467, + 6472,6475,6481,6485,6491,6500,6506,6508,6513,6516,6525,6532,6534, + 6541,6546,6549,6559,6570,6575,6579,6587,6597,6604,6610,6621,6627, + 6637,6646,6650,6653,6655,6657,6661,6669,6672,6677,6682,6689,6691, + 6697,6701,6704,6709,6712,6714,6720,6729,6735,6738,6746,6749,6753, + 6759,6761,6764,6768,6773,6780,6787,6789,6795,6797,6802,6804,6808, + 6817,6821,6829,6831,6845,6848,6856,6865,6871,6876,6884,6886,6891, + 6895,6900,6905,6911,6927,6929,6938,6953,6958,6961,6967,6972,6985, + 6990,6994,7001,7020,7032,7037,7045,7047,7049,7058,7061,7066,7071, + 7075,7078,7087,7095,7100,7102,7105,7109,7120,7141,7149,7162,7172, + 7178,7184,7187,7190,7216,7218,7239,7249,7262,7267,7271,7273,7285, + 7292,7298,7304,7308,7319,7329,7333,7338,7341,7344,7353,7364,7366, + 7370,7375,7384,7389,7397,7407,7415,7419,7422,7429,7437,7441,7448, + 7456,7465,7468,7480,7489,7496,7505,7515,7520,7524,7526,7529,7534, + 7539,7547,7555,7558,7565,7573,7581,7589,7606,7613,7621,7638,7644, + 7650,7658,7664,7669,7677,7682,7685,7694,7701,7708,7714,7720,7725, + 7730,7738,7793,7800,7806,7808,7810,7812,7818,7822,7826,7837,7840, + 7844,7848,7852,7855,7858,7861,7870,7875,7879,7912,7922,7926,7932, + 7937,7946,7954,7965,7973,7982,7991,7996,8000,8010,8015,8023,8028, + 8031,8038,8044,8052,8060,8063,8070,8072,8075,8081,8090,8094,8108, + 8111,8113,8119,8129,8131,8133,8141,8144,8147,8157,8165,8171,8177, + 8184,8188,8192,8195,8198,8204,8211,8214,8222,8224,8233,8238,8240, + 8247,8253,8256,8268,8275,8277,8281,8287,8292,8296,8299,8302,8311, + 8314,8318,8322,8324,8327,8330,8336,8343,8350,8356,8358,8362,8367, + 8385,8390,8392,8401,8408,8412,8424,8427,8440,8443,8447,8456,8463, + 8468,8473,8477,8482,8485,8488,8491,8494,8498,8501 + ]; -export class RowsecurityoptionalwithcheckContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; - } - public KW_CHECK(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CHECK, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsecurityoptionalwithcheck; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsecurityoptionalwithcheck) { - listener.enterRowsecurityoptionalwithcheck(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsecurityoptionalwithcheck) { - listener.exitRowsecurityoptionalwithcheck(this); + private static __ATN: antlr.ATN; + public static get _ATN(): antlr.ATN { + if (!PostgreSqlParser.__ATN) { + PostgreSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(PostgreSqlParser._serializedATN); } + + return PostgreSqlParser.__ATN; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsecurityoptionalwithcheck) { - return visitor.visitRowsecurityoptionalwithcheck(this); - } else { - return visitor.visitChildren(this); - } + + + private static readonly vocabulary = new antlr.Vocabulary(PostgreSqlParser.literalNames, PostgreSqlParser.symbolicNames, []); + + public override get vocabulary(): antlr.Vocabulary { + return PostgreSqlParser.vocabulary; } -} + private static readonly decisionsToDFA = PostgreSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); +} -export class RowsecuritydefaulttoroleContext extends antlr.ParserRuleContext { +export class ProgramContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public EOF(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.EOF, 0)!; } - public role_list(): Role_listContext { - return this.getRuleContext(0, Role_listContext)!; + public singleStmt(): SingleStmtContext[]; + public singleStmt(i: number): SingleStmtContext | null; + public singleStmt(i?: number): SingleStmtContext[] | SingleStmtContext | null { + if (i === undefined) { + return this.getRuleContexts(SingleStmtContext); + } + + return this.getRuleContext(i, SingleStmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsecuritydefaulttorole; + return PostgreSqlParser.RULE_program; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsecuritydefaulttorole) { - listener.enterRowsecuritydefaulttorole(this); + if(listener.enterProgram) { + listener.enterProgram(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsecuritydefaulttorole) { - listener.exitRowsecuritydefaulttorole(this); + if(listener.exitProgram) { + listener.exitProgram(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsecuritydefaulttorole) { - return visitor.visitRowsecuritydefaulttorole(this); + if (visitor.visitProgram) { + return visitor.visitProgram(this); } else { return visitor.visitChildren(this); } @@ -84186,32 +58694,32 @@ export class RowsecuritydefaulttoroleContext extends antlr.ParserRuleContext { } -export class RowsecurityoptionaltoroleContext extends antlr.ParserRuleContext { +export class SingleStmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public stmt(): StmtContext { + return this.getRuleContext(0, StmtContext)!; } - public role_list(): Role_listContext { - return this.getRuleContext(0, Role_listContext)!; + public SEMI(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.SEMI, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsecurityoptionaltorole; + return PostgreSqlParser.RULE_singleStmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsecurityoptionaltorole) { - listener.enterRowsecurityoptionaltorole(this); + if(listener.enterSingleStmt) { + listener.enterSingleStmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsecurityoptionaltorole) { - listener.exitRowsecurityoptionaltorole(this); + if(listener.exitSingleStmt) { + listener.exitSingleStmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsecurityoptionaltorole) { - return visitor.visitRowsecurityoptionaltorole(this); + if (visitor.visitSingleStmt) { + return visitor.visitSingleStmt(this); } else { return visitor.visitChildren(this); } @@ -84219,359 +58727,380 @@ export class RowsecurityoptionaltoroleContext extends antlr.ParserRuleContext { } -export class RowsecuritydefaultpermissiveContext extends antlr.ParserRuleContext { +export class StmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public altereventtrigstmt(): AltereventtrigstmtContext | null { + return this.getRuleContext(0, AltereventtrigstmtContext); } - public KW_PERMISSIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PERMISSIVE, 0); + public altercollationstmt(): AltercollationstmtContext | null { + return this.getRuleContext(0, AltercollationstmtContext); } - public KW_RESTRICTIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICTIVE, 0); + public alterdatabasestmt(): AlterdatabasestmtContext | null { + return this.getRuleContext(0, AlterdatabasestmtContext); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public alterdatabasesetstmt(): AlterdatabasesetstmtContext | null { + return this.getRuleContext(0, AlterdatabasesetstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsecuritydefaultpermissive; + public alterdefaultprivilegesstmt(): AlterdefaultprivilegesstmtContext | null { + return this.getRuleContext(0, AlterdefaultprivilegesstmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsecuritydefaultpermissive) { - listener.enterRowsecuritydefaultpermissive(this); - } + public alterdomainstmt(): AlterdomainstmtContext | null { + return this.getRuleContext(0, AlterdomainstmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsecuritydefaultpermissive) { - listener.exitRowsecuritydefaultpermissive(this); - } + public alterenumstmt(): AlterenumstmtContext | null { + return this.getRuleContext(0, AlterenumstmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsecuritydefaultpermissive) { - return visitor.visitRowsecuritydefaultpermissive(this); - } else { - return visitor.visitChildren(this); - } + public alterextensionstmt(): AlterextensionstmtContext | null { + return this.getRuleContext(0, AlterextensionstmtContext); } -} - - -export class RowsecuritydefaultforcmdContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public alterextensioncontentsstmt(): AlterextensioncontentsstmtContext | null { + return this.getRuleContext(0, AlterextensioncontentsstmtContext); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public alterfdwstmt(): AlterfdwstmtContext | null { + return this.getRuleContext(0, AlterfdwstmtContext); } - public row_security_cmd(): Row_security_cmdContext { - return this.getRuleContext(0, Row_security_cmdContext)!; + public alterforeignserverstmt(): AlterforeignserverstmtContext | null { + return this.getRuleContext(0, AlterforeignserverstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsecuritydefaultforcmd; + public alterfunctionstmt(): AlterfunctionstmtContext | null { + return this.getRuleContext(0, AlterfunctionstmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsecuritydefaultforcmd) { - listener.enterRowsecuritydefaultforcmd(this); - } + public altergroupstmt(): AltergroupstmtContext | null { + return this.getRuleContext(0, AltergroupstmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsecuritydefaultforcmd) { - listener.exitRowsecuritydefaultforcmd(this); - } + public alterobjectdependsstmt(): AlterobjectdependsstmtContext | null { + return this.getRuleContext(0, AlterobjectdependsstmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsecuritydefaultforcmd) { - return visitor.visitRowsecuritydefaultforcmd(this); - } else { - return visitor.visitChildren(this); - } + public alterobjectschemastmt(): AlterobjectschemastmtContext | null { + return this.getRuleContext(0, AlterobjectschemastmtContext); } -} - - -export class Row_security_cmdContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public alterownerstmt(): AlterownerstmtContext | null { + return this.getRuleContext(0, AlterownerstmtContext); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public alteroperatorstmt(): AlteroperatorstmtContext | null { + return this.getRuleContext(0, AlteroperatorstmtContext); } - public KW_SELECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SELECT, 0); + public altertypestmt(): AltertypestmtContext | null { + return this.getRuleContext(0, AltertypestmtContext); } - public KW_INSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSERT, 0); + public alterpolicystmt(): AlterpolicystmtContext | null { + return this.getRuleContext(0, AlterpolicystmtContext); } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + public alterprocedurestmt(): AlterprocedurestmtContext | null { + return this.getRuleContext(0, AlterprocedurestmtContext); } - public KW_DELETE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DELETE, 0); + public alterseqstmt(): AlterseqstmtContext | null { + return this.getRuleContext(0, AlterseqstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_row_security_cmd; + public altersystemstmt(): AltersystemstmtContext | null { + return this.getRuleContext(0, AltersystemstmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRow_security_cmd) { - listener.enterRow_security_cmd(this); - } + public altertablestmt(): AltertablestmtContext | null { + return this.getRuleContext(0, AltertablestmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRow_security_cmd) { - listener.exitRow_security_cmd(this); - } + public altertblspcstmt(): AltertblspcstmtContext | null { + return this.getRuleContext(0, AltertblspcstmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRow_security_cmd) { - return visitor.visitRow_security_cmd(this); - } else { - return visitor.visitChildren(this); - } + public altercompositetypestmt(): AltercompositetypestmtContext | null { + return this.getRuleContext(0, AltercompositetypestmtContext); } -} - - -export class CreateamstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public alterpublicationstmt(): AlterpublicationstmtContext | null { + return this.getRuleContext(0, AlterpublicationstmtContext); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + public alterrolesetstmt(): AlterrolesetstmtContext | null { + return this.getRuleContext(0, AlterrolesetstmtContext); } - public KW_ACCESS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ACCESS, 0)!; + public alterroutinestmt(): AlterroutinestmtContext | null { + return this.getRuleContext(0, AlterroutinestmtContext); } - public KW_METHOD(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_METHOD, 0)!; + public alterrolestmt(): AlterrolestmtContext | null { + return this.getRuleContext(0, AlterrolestmtContext); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public altersubscriptionstmt(): AltersubscriptionstmtContext | null { + return this.getRuleContext(0, AltersubscriptionstmtContext); } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; + public alterstatsstmt(): AlterstatsstmtContext | null { + return this.getRuleContext(0, AlterstatsstmtContext); } - public am_type(): Am_typeContext { - return this.getRuleContext(0, Am_typeContext)!; + public altertsconfigurationstmt(): AltertsconfigurationstmtContext | null { + return this.getRuleContext(0, AltertsconfigurationstmtContext); } - public KW_HANDLER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_HANDLER, 0)!; + public altertsdictionarystmt(): AltertsdictionarystmtContext | null { + return this.getRuleContext(0, AltertsdictionarystmtContext); } - public handler_name(): Handler_nameContext { - return this.getRuleContext(0, Handler_nameContext)!; + public alterusermappingstmt(): AlterusermappingstmtContext | null { + return this.getRuleContext(0, AlterusermappingstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createamstmt; + public analyzestmt(): AnalyzestmtContext | null { + return this.getRuleContext(0, AnalyzestmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateamstmt) { - listener.enterCreateamstmt(this); - } + public callstmt(): CallstmtContext | null { + return this.getRuleContext(0, CallstmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateamstmt) { - listener.exitCreateamstmt(this); - } + public checkpointstmt(): CheckpointstmtContext | null { + return this.getRuleContext(0, CheckpointstmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateamstmt) { - return visitor.visitCreateamstmt(this); - } else { - return visitor.visitChildren(this); - } + public closeportalstmt(): CloseportalstmtContext | null { + return this.getRuleContext(0, CloseportalstmtContext); } -} - - -export class Am_typeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public clusterstmt(): ClusterstmtContext | null { + return this.getRuleContext(0, ClusterstmtContext); } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); + public commentstmt(): CommentstmtContext | null { + return this.getRuleContext(0, CommentstmtContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public constraintssetstmt(): ConstraintssetstmtContext | null { + return this.getRuleContext(0, ConstraintssetstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_am_type; + public copystmt(): CopystmtContext | null { + return this.getRuleContext(0, CopystmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAm_type) { - listener.enterAm_type(this); - } + public createamstmt(): CreateamstmtContext | null { + return this.getRuleContext(0, CreateamstmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAm_type) { - listener.exitAm_type(this); - } + public createasstmt(): CreateasstmtContext | null { + return this.getRuleContext(0, CreateasstmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAm_type) { - return visitor.visitAm_type(this); - } else { - return visitor.visitChildren(this); - } + public createassertionstmt(): CreateassertionstmtContext | null { + return this.getRuleContext(0, CreateassertionstmtContext); } -} - - -export class CreatetrigstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public createcaststmt(): CreatecaststmtContext | null { + return this.getRuleContext(0, CreatecaststmtContext); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + public createconversionstmt(): CreateconversionstmtContext | null { + return this.getRuleContext(0, CreateconversionstmtContext); } - public KW_TRIGGER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0)!; + public createdomainstmt(): CreatedomainstmtContext | null { + return this.getRuleContext(0, CreatedomainstmtContext); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public createextensionstmt(): CreateextensionstmtContext | null { + return this.getRuleContext(0, CreateextensionstmtContext); } - public triggeractiontime(): TriggeractiontimeContext { - return this.getRuleContext(0, TriggeractiontimeContext)!; + public createfdwstmt(): CreatefdwstmtContext | null { + return this.getRuleContext(0, CreatefdwstmtContext); } - public triggerevents(): TriggereventsContext { - return this.getRuleContext(0, TriggereventsContext)!; + public createforeignserverstmt(): CreateforeignserverstmtContext | null { + return this.getRuleContext(0, CreateforeignserverstmtContext); } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; + public createforeigntablestmt(): CreateforeigntablestmtContext | null { + return this.getRuleContext(0, CreateforeigntablestmtContext); } - public table_name(): Table_nameContext { - return this.getRuleContext(0, Table_nameContext)!; + public createfunctionstmt(): CreatefunctionstmtContext | null { + return this.getRuleContext(0, CreatefunctionstmtContext); } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; + public creategroupstmt(): CreategroupstmtContext | null { + return this.getRuleContext(0, CreategroupstmtContext); } - public function_or_procedure(): Function_or_procedureContext { - return this.getRuleContext(0, Function_or_procedureContext)!; + public creatematviewstmt(): CreatematviewstmtContext | null { + return this.getRuleContext(0, CreatematviewstmtContext); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public createopclassstmt(): CreateopclassstmtContext | null { + return this.getRuleContext(0, CreateopclassstmtContext); } - public triggerfuncargs(): TriggerfuncargsContext { - return this.getRuleContext(0, TriggerfuncargsContext)!; + public createopfamilystmt(): CreateopfamilystmtContext | null { + return this.getRuleContext(0, CreateopfamilystmtContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public createpublicationstmt(): CreatepublicationstmtContext | null { + return this.getRuleContext(0, CreatepublicationstmtContext); } - public opt_or_replace(): Opt_or_replaceContext | null { - return this.getRuleContext(0, Opt_or_replaceContext); + public alteropfamilystmt(): AlteropfamilystmtContext | null { + return this.getRuleContext(0, AlteropfamilystmtContext); } - public triggerreferencing(): TriggerreferencingContext | null { - return this.getRuleContext(0, TriggerreferencingContext); + public createpolicystmt(): CreatepolicystmtContext | null { + return this.getRuleContext(0, CreatepolicystmtContext); } - public triggerforspec(): TriggerforspecContext | null { - return this.getRuleContext(0, TriggerforspecContext); + public createplangstmt(): CreateplangstmtContext | null { + return this.getRuleContext(0, CreateplangstmtContext); } - public triggerwhen(): TriggerwhenContext | null { - return this.getRuleContext(0, TriggerwhenContext); + public createschemastmt(): CreateschemastmtContext | null { + return this.getRuleContext(0, CreateschemastmtContext); } - public constraintattributespec(): ConstraintattributespecContext | null { - return this.getRuleContext(0, ConstraintattributespecContext); + public createseqstmt(): CreateseqstmtContext | null { + return this.getRuleContext(0, CreateseqstmtContext); } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + public createstmt(): CreatestmtContext | null { + return this.getRuleContext(0, CreatestmtContext); } - public optconstrfromtable(): OptconstrfromtableContext | null { - return this.getRuleContext(0, OptconstrfromtableContext); + public createsubscriptionstmt(): CreatesubscriptionstmtContext | null { + return this.getRuleContext(0, CreatesubscriptionstmtContext); } - public foreachrow(): ForeachrowContext | null { - return this.getRuleContext(0, ForeachrowContext); + public createstatsstmt(): CreatestatsstmtContext | null { + return this.getRuleContext(0, CreatestatsstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createtrigstmt; + public createtablespacestmt(): CreatetablespacestmtContext | null { + return this.getRuleContext(0, CreatetablespacestmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatetrigstmt) { - listener.enterCreatetrigstmt(this); - } + public createtransformstmt(): CreatetransformstmtContext | null { + return this.getRuleContext(0, CreatetransformstmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatetrigstmt) { - listener.exitCreatetrigstmt(this); - } + public createtrigstmt(): CreatetrigstmtContext | null { + return this.getRuleContext(0, CreatetrigstmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatetrigstmt) { - return visitor.visitCreatetrigstmt(this); - } else { - return visitor.visitChildren(this); - } + public createeventtrigstmt(): CreateeventtrigstmtContext | null { + return this.getRuleContext(0, CreateeventtrigstmtContext); } -} - - -export class TriggeractiontimeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public createrolestmt(): CreaterolestmtContext | null { + return this.getRuleContext(0, CreaterolestmtContext); } - public KW_BEFORE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BEFORE, 0); + public createuserstmt(): CreateuserstmtContext | null { + return this.getRuleContext(0, CreateuserstmtContext); } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AFTER, 0); + public createusermappingstmt(): CreateusermappingstmtContext | null { + return this.getRuleContext(0, CreateusermappingstmtContext); } - public KW_INSTEAD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSTEAD, 0); + public createdbstmt(): CreatedbstmtContext | null { + return this.getRuleContext(0, CreatedbstmtContext); } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); + public deallocatestmt(): DeallocatestmtContext | null { + return this.getRuleContext(0, DeallocatestmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggeractiontime; + public declarecursorstmt(): DeclarecursorstmtContext | null { + return this.getRuleContext(0, DeclarecursorstmtContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggeractiontime) { - listener.enterTriggeractiontime(this); - } + public definestmt(): DefinestmtContext | null { + return this.getRuleContext(0, DefinestmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggeractiontime) { - listener.exitTriggeractiontime(this); - } + public deletestmt(): DeletestmtContext | null { + return this.getRuleContext(0, DeletestmtContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggeractiontime) { - return visitor.visitTriggeractiontime(this); - } else { - return visitor.visitChildren(this); - } + public discardstmt(): DiscardstmtContext | null { + return this.getRuleContext(0, DiscardstmtContext); } -} - - -export class ForeachrowContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public dostmt(): DostmtContext | null { + return this.getRuleContext(0, DostmtContext); + } + public dropstmt(): DropstmtContext | null { + return this.getRuleContext(0, DropstmtContext); + } + public executestmt(): ExecutestmtContext | null { + return this.getRuleContext(0, ExecutestmtContext); + } + public explainstmt(): ExplainstmtContext | null { + return this.getRuleContext(0, ExplainstmtContext); + } + public fetchstmt(): FetchstmtContext | null { + return this.getRuleContext(0, FetchstmtContext); + } + public grantstmt(): GrantstmtContext | null { + return this.getRuleContext(0, GrantstmtContext); + } + public grantrolestmt(): GrantrolestmtContext | null { + return this.getRuleContext(0, GrantrolestmtContext); + } + public mergestmt(): MergestmtContext | null { + return this.getRuleContext(0, MergestmtContext); + } + public importforeignschemastmt(): ImportforeignschemastmtContext | null { + return this.getRuleContext(0, ImportforeignschemastmtContext); + } + public indexstmt(): IndexstmtContext | null { + return this.getRuleContext(0, IndexstmtContext); + } + public insertstmt(): InsertstmtContext | null { + return this.getRuleContext(0, InsertstmtContext); + } + public listenstmt(): ListenstmtContext | null { + return this.getRuleContext(0, ListenstmtContext); + } + public refreshmatviewstmt(): RefreshmatviewstmtContext | null { + return this.getRuleContext(0, RefreshmatviewstmtContext); + } + public loadstmt(): LoadstmtContext | null { + return this.getRuleContext(0, LoadstmtContext); + } + public lockstmt(): LockstmtContext | null { + return this.getRuleContext(0, LockstmtContext); + } + public notifystmt(): NotifystmtContext | null { + return this.getRuleContext(0, NotifystmtContext); + } + public preparestmt(): PreparestmtContext | null { + return this.getRuleContext(0, PreparestmtContext); + } + public reassignownedstmt(): ReassignownedstmtContext | null { + return this.getRuleContext(0, ReassignownedstmtContext); + } + public reindexstmt(): ReindexstmtContext | null { + return this.getRuleContext(0, ReindexstmtContext); + } + public removeaggrstmt(): RemoveaggrstmtContext | null { + return this.getRuleContext(0, RemoveaggrstmtContext); + } + public removefuncstmt(): RemovefuncstmtContext | null { + return this.getRuleContext(0, RemovefuncstmtContext); + } + public removeoperstmt(): RemoveoperstmtContext | null { + return this.getRuleContext(0, RemoveoperstmtContext); + } + public renamestmt(): RenamestmtContext | null { + return this.getRuleContext(0, RenamestmtContext); + } + public revokestmt(): RevokestmtContext | null { + return this.getRuleContext(0, RevokestmtContext); + } + public revokerolestmt(): RevokerolestmtContext | null { + return this.getRuleContext(0, RevokerolestmtContext); + } + public rulestmt(): RulestmtContext | null { + return this.getRuleContext(0, RulestmtContext); + } + public seclabelstmt(): SeclabelstmtContext | null { + return this.getRuleContext(0, SeclabelstmtContext); + } + public selectstmt(): SelectstmtContext | null { + return this.getRuleContext(0, SelectstmtContext); + } + public transactionstmt(): TransactionstmtContext | null { + return this.getRuleContext(0, TransactionstmtContext); + } + public truncatestmt(): TruncatestmtContext | null { + return this.getRuleContext(0, TruncatestmtContext); + } + public unlistenstmt(): UnlistenstmtContext | null { + return this.getRuleContext(0, UnlistenstmtContext); + } + public updatestmt(): UpdatestmtContext | null { + return this.getRuleContext(0, UpdatestmtContext); + } + public vacuumstmt(): VacuumstmtContext | null { + return this.getRuleContext(0, VacuumstmtContext); + } + public variableresetstmt(): VariableresetstmtContext | null { + return this.getRuleContext(0, VariableresetstmtContext); + } + public variablesetstmt(): VariablesetstmtContext | null { + return this.getRuleContext(0, VariablesetstmtContext); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public variableshowstmt(): VariableshowstmtContext | null { + return this.getRuleContext(0, VariableshowstmtContext); + } + public viewstmt(): ViewstmtContext | null { + return this.getRuleContext(0, ViewstmtContext); } - public roworstatment(): RoworstatmentContext { - return this.getRuleContext(0, RoworstatmentContext)!; + public MetaCommand(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.MetaCommand, 0); } - public KW_EACH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EACH, 0); + public EndMetaCommand(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EndMetaCommand, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_foreachrow; + return PostgreSqlParser.RULE_stmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterForeachrow) { - listener.enterForeachrow(this); + if(listener.enterStmt) { + listener.enterStmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitForeachrow) { - listener.exitForeachrow(this); + if(listener.exitStmt) { + listener.exitStmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitForeachrow) { - return visitor.visitForeachrow(this); + if (visitor.visitStmt) { + return visitor.visitStmt(this); } else { return visitor.visitChildren(this); } @@ -84579,32 +59108,32 @@ export class ForeachrowContext extends antlr.ParserRuleContext { } -export class RoworstatmentContext extends antlr.ParserRuleContext { +export class CallstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); + public KW_CALL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CALL, 0)!; } - public KW_STATEMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATEMENT, 0); + public func_application(): Func_applicationContext { + return this.getRuleContext(0, Func_applicationContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_roworstatment; + return PostgreSqlParser.RULE_callstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRoworstatment) { - listener.enterRoworstatment(this); + if(listener.enterCallstmt) { + listener.enterCallstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRoworstatment) { - listener.exitRoworstatment(this); + if(listener.exitCallstmt) { + listener.exitCallstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRoworstatment) { - return visitor.visitRoworstatment(this); + if (visitor.visitCallstmt) { + return visitor.visitCallstmt(this); } else { return visitor.visitChildren(this); } @@ -84612,44 +59141,47 @@ export class RoworstatmentContext extends antlr.ParserRuleContext { } -export class TriggereventsContext extends antlr.ParserRuleContext { +export class CreaterolestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public triggeroneevent(): TriggeroneeventContext[]; - public triggeroneevent(i: number): TriggeroneeventContext | null; - public triggeroneevent(i?: number): TriggeroneeventContext[] | TriggeroneeventContext | null { + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ROLE, 0)!; + } + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public createoptroleelem(): CreateoptroleelemContext[]; + public createoptroleelem(i: number): CreateoptroleelemContext | null; + public createoptroleelem(i?: number): CreateoptroleelemContext[] | CreateoptroleelemContext | null { if (i === undefined) { - return this.getRuleContexts(TriggeroneeventContext); + return this.getRuleContexts(CreateoptroleelemContext); } - return this.getRuleContext(i, TriggeroneeventContext); - } - public KW_OR(): antlr.TerminalNode[]; - public KW_OR(i: number): antlr.TerminalNode | null; - public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_OR); - } else { - return this.getToken(PostgreSqlParser.KW_OR, i); - } + return this.getRuleContext(i, CreateoptroleelemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerevents; + return PostgreSqlParser.RULE_createrolestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerevents) { - listener.enterTriggerevents(this); + if(listener.enterCreaterolestmt) { + listener.enterCreaterolestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerevents) { - listener.exitTriggerevents(this); + if(listener.exitCreaterolestmt) { + listener.exitCreaterolestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerevents) { - return visitor.visitTriggerevents(this); + if (visitor.visitCreaterolestmt) { + return visitor.visitCreaterolestmt(this); } else { return visitor.visitChildren(this); } @@ -84657,44 +59189,128 @@ export class TriggereventsContext extends antlr.ParserRuleContext { } -export class TriggeroneeventContext extends antlr.ParserRuleContext { +export class AlteroptroleelemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_INSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSERT, 0); + public KW_PASSWORD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PASSWORD, 0); } - public KW_DELETE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DELETE, 0); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); + public KW_ENCRYPTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ENCRYPTED, 0); } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); + public KW_UNENCRYPTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNENCRYPTED, 0); } - public KW_TRUNCATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0); + public KW_INHERIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INHERIT, 0); + } + public KW_NOINHERIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOINHERIT, 0); + } + public KW_CREATEUSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATEUSER, 0); + } + public KW_NOCREATEUSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOCREATEUSER, 0); + } + public KW_CREATEROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATEROLE, 0); + } + public KW_NOCREATEROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOCREATEROLE, 0); + } + public KW_CREATEDB(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATEDB, 0); + } + public KW_NOCREATEDB(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOCREATEDB, 0); + } + public KW_SUPERUSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUPERUSER, 0); + } + public KW_NOSUPERUSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOSUPERUSER, 0); + } + public KW_LOGIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOGIN, 0); + } + public KW_NOLOGIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOLOGIN, 0); + } + public KW_REPLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLICATION, 0); + } + public KW_NOREPLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOREPLICATION, 0); + } + public KW_BYPASSRLS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BYPASSRLS, 0); + } + public KW_NOBYPASSRLS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOBYPASSRLS, 0); + } + public KW_CONNECTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONNECTION, 0); + } + public KW_LIMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LIMIT, 0); + } + public signediconst(): SignediconstContext | null { + return this.getRuleContext(0, SignediconstContext); + } + public KW_VALID(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALID, 0); + } + public KW_UNTIL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNTIL, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public name_list(): Name_listContext | null { + return this.getRuleContext(0, Name_listContext); + } + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); + } + public role_list(): Role_listContext | null { + return this.getRuleContext(0, Role_listContext); + } + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADMIN, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggeroneevent; + return PostgreSqlParser.RULE_alteroptroleelem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggeroneevent) { - listener.enterTriggeroneevent(this); + if(listener.enterAlteroptroleelem) { + listener.enterAlteroptroleelem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggeroneevent) { - listener.exitTriggeroneevent(this); + if(listener.exitAlteroptroleelem) { + listener.exitAlteroptroleelem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggeroneevent) { - return visitor.visitTriggeroneevent(this); + if (visitor.visitAlteroptroleelem) { + return visitor.visitAlteroptroleelem(this); } else { return visitor.visitChildren(this); } @@ -84702,32 +59318,50 @@ export class TriggeroneeventContext extends antlr.ParserRuleContext { } -export class TriggerreferencingContext extends antlr.ParserRuleContext { +export class CreateoptroleelemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_REFERENCING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REFERENCING, 0)!; + public alteroptroleelem(): AlteroptroleelemContext | null { + return this.getRuleContext(0, AlteroptroleelemContext); + } + public KW_SYSID(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SYSID, 0); + } + public Integral(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Integral, 0); + } + public role_list(): Role_listContext | null { + return this.getRuleContext(0, Role_listContext); + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADMIN, 0); + } + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); } - public triggertransitions(): TriggertransitionsContext { - return this.getRuleContext(0, TriggertransitionsContext)!; + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerreferencing; + return PostgreSqlParser.RULE_createoptroleelem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerreferencing) { - listener.enterTriggerreferencing(this); + if(listener.enterCreateoptroleelem) { + listener.enterCreateoptroleelem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerreferencing) { - listener.exitTriggerreferencing(this); + if(listener.exitCreateoptroleelem) { + listener.exitCreateoptroleelem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerreferencing) { - return visitor.visitTriggerreferencing(this); + if (visitor.visitCreateoptroleelem) { + return visitor.visitCreateoptroleelem(this); } else { return visitor.visitChildren(this); } @@ -84735,35 +59369,47 @@ export class TriggerreferencingContext extends antlr.ParserRuleContext { } -export class TriggertransitionsContext extends antlr.ParserRuleContext { +export class CreateuserstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public triggertransition(): TriggertransitionContext[]; - public triggertransition(i: number): TriggertransitionContext | null; - public triggertransition(i?: number): TriggertransitionContext[] | TriggertransitionContext | null { + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_USER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USER, 0)!; + } + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public createoptroleelem(): CreateoptroleelemContext[]; + public createoptroleelem(i: number): CreateoptroleelemContext | null; + public createoptroleelem(i?: number): CreateoptroleelemContext[] | CreateoptroleelemContext | null { if (i === undefined) { - return this.getRuleContexts(TriggertransitionContext); + return this.getRuleContexts(CreateoptroleelemContext); } - return this.getRuleContext(i, TriggertransitionContext); + return this.getRuleContext(i, CreateoptroleelemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggertransitions; + return PostgreSqlParser.RULE_createuserstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggertransitions) { - listener.enterTriggertransitions(this); + if(listener.enterCreateuserstmt) { + listener.enterCreateuserstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggertransitions) { - listener.exitTriggertransitions(this); + if(listener.exitCreateuserstmt) { + listener.exitCreateuserstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggertransitions) { - return visitor.visitTriggertransitions(this); + if (visitor.visitCreateuserstmt) { + return visitor.visitCreateuserstmt(this); } else { return visitor.visitChildren(this); } @@ -84771,38 +59417,50 @@ export class TriggertransitionsContext extends antlr.ParserRuleContext { } -export class TriggertransitionContext extends antlr.ParserRuleContext { +export class AlterrolestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public transitionoldornew(): TransitionoldornewContext { - return this.getRuleContext(0, TransitionoldornewContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; + } + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); } - public transitionrowortable(): TransitionrowortableContext { - return this.getRuleContext(0, TransitionrowortableContext)!; + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); } - public transitionrelname(): TransitionrelnameContext { - return this.getRuleContext(0, TransitionrelnameContext)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public opt_as(): Opt_asContext | null { - return this.getRuleContext(0, Opt_asContext); + public alteroptroleelem(): AlteroptroleelemContext[]; + public alteroptroleelem(i: number): AlteroptroleelemContext | null; + public alteroptroleelem(i?: number): AlteroptroleelemContext[] | AlteroptroleelemContext | null { + if (i === undefined) { + return this.getRuleContexts(AlteroptroleelemContext); + } + + return this.getRuleContext(i, AlteroptroleelemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggertransition; + return PostgreSqlParser.RULE_alterrolestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggertransition) { - listener.enterTriggertransition(this); + if(listener.enterAlterrolestmt) { + listener.enterAlterrolestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggertransition) { - listener.exitTriggertransition(this); + if(listener.exitAlterrolestmt) { + listener.exitAlterrolestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggertransition) { - return visitor.visitTriggertransition(this); + if (visitor.visitAlterrolestmt) { + return visitor.visitAlterrolestmt(this); } else { return visitor.visitChildren(this); } @@ -84810,65 +59468,53 @@ export class TriggertransitionContext extends antlr.ParserRuleContext { } -export class TransitionoldornewContext extends antlr.ParserRuleContext { +export class AlterrolesetstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_NEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NEW, 0); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public KW_OLD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OLD, 0); + public KW_IN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IN, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transitionoldornew; + public KW_DATABASE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransitionoldornew) { - listener.enterTransitionoldornew(this); - } + public database_name(): Database_nameContext { + return this.getRuleContext(0, Database_nameContext)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransitionoldornew) { - listener.exitTransitionoldornew(this); - } + public setresetclause(): SetresetclauseContext { + return this.getRuleContext(0, SetresetclauseContext)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransitionoldornew) { - return visitor.visitTransitionoldornew(this); - } else { - return visitor.visitChildren(this); - } + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); } -} - - -export class TransitionrowortableContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transitionrowortable; + return PostgreSqlParser.RULE_alterrolesetstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransitionrowortable) { - listener.enterTransitionrowortable(this); + if(listener.enterAlterrolesetstmt) { + listener.enterAlterrolesetstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransitionrowortable) { - listener.exitTransitionrowortable(this); + if(listener.exitAlterrolesetstmt) { + listener.exitAlterrolesetstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransitionrowortable) { - return visitor.visitTransitionrowortable(this); + if (visitor.visitAlterrolesetstmt) { + return visitor.visitAlterrolesetstmt(this); } else { return visitor.visitChildren(this); } @@ -84876,29 +59522,41 @@ export class TransitionrowortableContext extends antlr.ParserRuleContext { } -export class TransitionrelnameContext extends antlr.ParserRuleContext { +export class AlterroutinestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_ROUTINE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0)!; + } + public routine_name(): Routine_nameContext { + return this.getRuleContext(0, Routine_nameContext)!; + } + public alter_routine_cluase(): Alter_routine_cluaseContext { + return this.getRuleContext(0, Alter_routine_cluaseContext)!; + } + public func_args(): Func_argsContext | null { + return this.getRuleContext(0, Func_argsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transitionrelname; + return PostgreSqlParser.RULE_alterroutinestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransitionrelname) { - listener.enterTransitionrelname(this); + if(listener.enterAlterroutinestmt) { + listener.enterAlterroutinestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransitionrelname) { - listener.exitTransitionrelname(this); + if(listener.exitAlterroutinestmt) { + listener.exitAlterroutinestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransitionrelname) { - return visitor.visitTransitionrelname(this); + if (visitor.visitAlterroutinestmt) { + return visitor.visitAlterroutinestmt(this); } else { return visitor.visitChildren(this); } @@ -84906,35 +59564,77 @@ export class TransitionrelnameContext extends antlr.ParserRuleContext { } -export class TriggerforspecContext extends antlr.ParserRuleContext { +export class Alter_routine_cluaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public routine_action(): Routine_actionContext[]; + public routine_action(i: number): Routine_actionContext | null; + public routine_action(i?: number): Routine_actionContext[] | Routine_actionContext | null { + if (i === undefined) { + return this.getRuleContexts(Routine_actionContext); + } + + return this.getRuleContext(i, Routine_actionContext); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); + } + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RENAME, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public routine_name_create(): Routine_name_createContext | null { + return this.getRuleContext(0, Routine_name_createContext); + } + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + } + public schema_name_create(): Schema_name_createContext | null { + return this.getRuleContext(0, Schema_name_createContext); + } + public KW_DEPENDS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEPENDS, 0); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } - public triggerfortype(): TriggerfortypeContext { - return this.getRuleContext(0, TriggerfortypeContext)!; + public KW_EXTENSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public triggerforopteach(): TriggerforopteachContext | null { - return this.getRuleContext(0, TriggerforopteachContext); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerforspec; + return PostgreSqlParser.RULE_alter_routine_cluase; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerforspec) { - listener.enterTriggerforspec(this); + if(listener.enterAlter_routine_cluase) { + listener.enterAlter_routine_cluase(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerforspec) { - listener.exitTriggerforspec(this); + if(listener.exitAlter_routine_cluase) { + listener.exitAlter_routine_cluase(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerforspec) { - return visitor.visitTriggerforspec(this); + if (visitor.visitAlter_routine_cluase) { + return visitor.visitAlter_routine_cluase(this); } else { return visitor.visitChildren(this); } @@ -84942,62 +59642,107 @@ export class TriggerforspecContext extends antlr.ParserRuleContext { } -export class TriggerforopteachContext extends antlr.ParserRuleContext { +export class Routine_actionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_EACH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EACH, 0)!; + public KW_IMMUTABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IMMUTABLE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerforopteach; + public KW_STABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STABLE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerforopteach) { - listener.enterTriggerforopteach(this); - } + public KW_VOLATILE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VOLATILE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerforopteach) { - listener.exitTriggerforopteach(this); - } + public KW_LEAKPROOF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEAKPROOF, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerforopteach) { - return visitor.visitTriggerforopteach(this); - } else { - return visitor.visitChildren(this); - } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } -} - + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SECURITY, 0); + } + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INVOKER, 0); + } + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFINER, 0); + } + public KW_EXTERNAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); + } + public KW_PARALLEL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARALLEL, 0); + } + public KW_UNSAFE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNSAFE, 0); + } + public KW_RESTRICTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICTED, 0); + } + public KW_SAFE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SAFE, 0); + } + public KW_COST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COST, 0); + } + public collabel(): CollabelContext | null { + return this.getRuleContext(0, CollabelContext); + } + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); + } + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); + } -export class TriggerfortypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, ColidContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public KW_STATEMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATEMENT, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public KW_RESET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESET, 0); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerfortype; + return PostgreSqlParser.RULE_routine_action; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerfortype) { - listener.enterTriggerfortype(this); + if(listener.enterRoutine_action) { + listener.enterRoutine_action(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerfortype) { - listener.exitTriggerfortype(this); + if(listener.exitRoutine_action) { + listener.exitRoutine_action(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerfortype) { - return visitor.visitTriggerfortype(this); + if (visitor.visitRoutine_action) { + return visitor.visitRoutine_action(this); } else { return visitor.visitChildren(this); } @@ -85005,38 +59750,47 @@ export class TriggerfortypeContext extends antlr.ParserRuleContext { } -export class TriggerwhenContext extends antlr.ParserRuleContext { +export class CreategroupstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHEN, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_GROUP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public createoptroleelem(): CreateoptroleelemContext[]; + public createoptroleelem(i: number): CreateoptroleelemContext | null; + public createoptroleelem(i?: number): CreateoptroleelemContext[] | CreateoptroleelemContext | null { + if (i === undefined) { + return this.getRuleContexts(CreateoptroleelemContext); + } + + return this.getRuleContext(i, CreateoptroleelemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerwhen; + return PostgreSqlParser.RULE_creategroupstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerwhen) { - listener.enterTriggerwhen(this); + if(listener.enterCreategroupstmt) { + listener.enterCreategroupstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerwhen) { - listener.exitTriggerwhen(this); + if(listener.exitCreategroupstmt) { + listener.exitCreategroupstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerwhen) { - return visitor.visitTriggerwhen(this); + if (visitor.visitCreategroupstmt) { + return visitor.visitCreategroupstmt(this); } else { return visitor.visitChildren(this); } @@ -85044,38 +59798,47 @@ export class TriggerwhenContext extends antlr.ParserRuleContext { } -export class Function_or_procedureContext extends antlr.ParserRuleContext { +export class AltergroupstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public function_name(): Function_nameContext | null { - return this.getRuleContext(0, Function_nameContext); + public KW_GROUP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; } - public procedure_name(): Procedure_nameContext | null { - return this.getRuleContext(0, Procedure_nameContext); + public KW_USER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USER, 0)!; + } + public role_list(): Role_listContext { + return this.getRuleContext(0, Role_listContext)!; + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_function_or_procedure; + return PostgreSqlParser.RULE_altergroupstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunction_or_procedure) { - listener.enterFunction_or_procedure(this); + if(listener.enterAltergroupstmt) { + listener.enterAltergroupstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunction_or_procedure) { - listener.exitFunction_or_procedure(this); + if(listener.exitAltergroupstmt) { + listener.exitAltergroupstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunction_or_procedure) { - return visitor.visitFunction_or_procedure(this); + if (visitor.visitAltergroupstmt) { + return visitor.visitAltergroupstmt(this); } else { return visitor.visitChildren(this); } @@ -85083,44 +59846,53 @@ export class Function_or_procedureContext extends antlr.ParserRuleContext { } -export class TriggerfuncargsContext extends antlr.ParserRuleContext { +export class CreateschemastmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public triggerfuncarg(): TriggerfuncargContext[]; - public triggerfuncarg(i: number): TriggerfuncargContext | null; - public triggerfuncarg(i?: number): TriggerfuncargContext[] | TriggerfuncargContext | null { + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public schema_name_create(): Schema_name_createContext | null { + return this.getRuleContext(0, Schema_name_createContext); + } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } + public schema_stmt(): Schema_stmtContext[]; + public schema_stmt(i: number): Schema_stmtContext | null; + public schema_stmt(i?: number): Schema_stmtContext[] | Schema_stmtContext | null { if (i === undefined) { - return this.getRuleContexts(TriggerfuncargContext); + return this.getRuleContexts(Schema_stmtContext); } - return this.getRuleContext(i, TriggerfuncargContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + return this.getRuleContext(i, Schema_stmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerfuncargs; + return PostgreSqlParser.RULE_createschemastmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerfuncargs) { - listener.enterTriggerfuncargs(this); + if(listener.enterCreateschemastmt) { + listener.enterCreateschemastmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerfuncargs) { - listener.exitTriggerfuncargs(this); + if(listener.exitCreateschemastmt) { + listener.exitCreateschemastmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerfuncargs) { - return visitor.visitTriggerfuncargs(this); + if (visitor.visitCreateschemastmt) { + return visitor.visitCreateschemastmt(this); } else { return visitor.visitChildren(this); } @@ -85128,38 +59900,38 @@ export class TriggerfuncargsContext extends antlr.ParserRuleContext { } -export class TriggerfuncargContext extends antlr.ParserRuleContext { +export class Schema_name_createContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } - public fconst(): FconstContext | null { - return this.getRuleContext(0, FconstContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_schema_name_create; } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public override copyFrom(ctx: Schema_name_createContext): void { + super.copyFrom(ctx); } - public collabel(): CollabelContext | null { - return this.getRuleContext(0, CollabelContext); +} +export class SchemaNameCreateContext extends Schema_name_createContext { + public constructor(ctx: Schema_name_createContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_triggerfuncarg; + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTriggerfuncarg) { - listener.enterTriggerfuncarg(this); + if(listener.enterSchemaNameCreate) { + listener.enterSchemaNameCreate(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTriggerfuncarg) { - listener.exitTriggerfuncarg(this); + if(listener.exitSchemaNameCreate) { + listener.exitSchemaNameCreate(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTriggerfuncarg) { - return visitor.visitTriggerfuncarg(this); + if (visitor.visitSchemaNameCreate) { + return visitor.visitSchemaNameCreate(this); } else { return visitor.visitChildren(this); } @@ -85167,32 +59939,44 @@ export class TriggerfuncargContext extends antlr.ParserRuleContext { } -export class OptconstrfromtableContext extends antlr.ParserRuleContext { +export class Schema_stmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + public createstmt(): CreatestmtContext | null { + return this.getRuleContext(0, CreatestmtContext); } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; + public indexstmt(): IndexstmtContext | null { + return this.getRuleContext(0, IndexstmtContext); + } + public createseqstmt(): CreateseqstmtContext | null { + return this.getRuleContext(0, CreateseqstmtContext); + } + public createtrigstmt(): CreatetrigstmtContext | null { + return this.getRuleContext(0, CreatetrigstmtContext); + } + public grantstmt(): GrantstmtContext | null { + return this.getRuleContext(0, GrantstmtContext); + } + public viewstmt(): ViewstmtContext | null { + return this.getRuleContext(0, ViewstmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_optconstrfromtable; + return PostgreSqlParser.RULE_schema_stmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOptconstrfromtable) { - listener.enterOptconstrfromtable(this); + if(listener.enterSchema_stmt) { + listener.enterSchema_stmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOptconstrfromtable) { - listener.exitOptconstrfromtable(this); + if(listener.exitSchema_stmt) { + listener.exitSchema_stmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOptconstrfromtable) { - return visitor.visitOptconstrfromtable(this); + if (visitor.visitSchema_stmt) { + return visitor.visitSchema_stmt(this); } else { return visitor.visitChildren(this); } @@ -85200,35 +59984,38 @@ export class OptconstrfromtableContext extends antlr.ParserRuleContext { } -export class ConstraintattributespecContext extends antlr.ParserRuleContext { +export class VariablesetstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public constraintattributeElem(): ConstraintattributeElemContext[]; - public constraintattributeElem(i: number): ConstraintattributeElemContext | null; - public constraintattributeElem(i?: number): ConstraintattributeElemContext[] | ConstraintattributeElemContext | null { - if (i === undefined) { - return this.getRuleContexts(ConstraintattributeElemContext); - } - - return this.getRuleContext(i, ConstraintattributeElemContext); + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; + } + public set_rest(): Set_restContext { + return this.getRuleContext(0, Set_restContext)!; + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCAL, 0); + } + public KW_SESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constraintattributespec; + return PostgreSqlParser.RULE_variablesetstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstraintattributespec) { - listener.enterConstraintattributespec(this); + if(listener.enterVariablesetstmt) { + listener.enterVariablesetstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstraintattributespec) { - listener.exitConstraintattributespec(this); + if(listener.exitVariablesetstmt) { + listener.exitVariablesetstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstraintattributespec) { - return visitor.visitConstraintattributespec(this); + if (visitor.visitVariablesetstmt) { + return visitor.visitVariablesetstmt(this); } else { return visitor.visitChildren(this); } @@ -85236,50 +60023,44 @@ export class ConstraintattributespecContext extends antlr.ParserRuleContext { } -export class ConstraintattributeElemContext extends antlr.ParserRuleContext { +export class Set_restContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public KW_DEFERRABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); - } - public KW_INITIALLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INITIALLY, 0); + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); } - public KW_IMMEDIATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IMMEDIATE, 0); + public transaction_mode_list(): Transaction_mode_listContext | null { + return this.getRuleContext(0, Transaction_mode_listContext); } - public KW_DEFERRED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFERRED, 0); + public KW_SESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION, 0); } - public KW_VALID(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALID, 0); + public KW_CHARACTERISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHARACTERISTICS, 0); } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public KW_INHERIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INHERIT, 0); + public set_rest_more(): Set_rest_moreContext | null { + return this.getRuleContext(0, Set_rest_moreContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constraintattributeElem; + return PostgreSqlParser.RULE_set_rest; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstraintattributeElem) { - listener.enterConstraintattributeElem(this); + if(listener.enterSet_rest) { + listener.enterSet_rest(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstraintattributeElem) { - listener.exitConstraintattributeElem(this); + if(listener.exitSet_rest) { + listener.exitSet_rest(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstraintattributeElem) { - return visitor.visitConstraintattributeElem(this); + if (visitor.visitSet_rest) { + return visitor.visitSet_rest(this); } else { return visitor.visitChildren(this); } @@ -85287,62 +60068,44 @@ export class ConstraintattributeElemContext extends antlr.ParserRuleContext { } -export class CreateeventtrigstmtContext extends antlr.ParserRuleContext { +export class Generic_setContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_EVENT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EVENT, 0)!; - } - public KW_TRIGGER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; - } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public function_or_procedure(): Function_or_procedureContext { - return this.getRuleContext(0, Function_or_procedureContext)!; + public var_name(): Var_nameContext | null { + return this.getRuleContext(0, Var_nameContext); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public var_list(): Var_listContext | null { + return this.getRuleContext(0, Var_listContext); } - public KW_WHEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WHEN, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public event_trigger_when_list(): Event_trigger_when_listContext | null { - return this.getRuleContext(0, Event_trigger_when_listContext); + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createeventtrigstmt; + return PostgreSqlParser.RULE_generic_set; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateeventtrigstmt) { - listener.enterCreateeventtrigstmt(this); + if(listener.enterGeneric_set) { + listener.enterGeneric_set(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateeventtrigstmt) { - listener.exitCreateeventtrigstmt(this); + if(listener.exitGeneric_set) { + listener.exitGeneric_set(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateeventtrigstmt) { - return visitor.visitCreateeventtrigstmt(this); + if (visitor.visitGeneric_set) { + return visitor.visitGeneric_set(this); } else { return visitor.visitChildren(this); } @@ -85350,86 +60113,92 @@ export class CreateeventtrigstmtContext extends antlr.ParserRuleContext { } -export class Event_trigger_when_listContext extends antlr.ParserRuleContext { +export class Set_rest_moreContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public event_trigger_when_item(): Event_trigger_when_itemContext[]; - public event_trigger_when_item(i: number): Event_trigger_when_itemContext | null; - public event_trigger_when_item(i?: number): Event_trigger_when_itemContext[] | Event_trigger_when_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Event_trigger_when_itemContext); - } - - return this.getRuleContext(i, Event_trigger_when_itemContext); + public KW_TIME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIME, 0); } - public KW_AND(): antlr.TerminalNode[]; - public KW_AND(i: number): antlr.TerminalNode | null; - public KW_AND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_AND); - } else { - return this.getToken(PostgreSqlParser.KW_AND, i); - } + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ZONE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_event_trigger_when_list; + public zone_value(): Zone_valueContext | null { + return this.getRuleContext(0, Zone_valueContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEvent_trigger_when_list) { - listener.enterEvent_trigger_when_list(this); - } + public KW_CATALOG(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CATALOG, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEvent_trigger_when_list) { - listener.exitEvent_trigger_when_list(this); - } + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEvent_trigger_when_list) { - return visitor.visitEvent_trigger_when_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } -} - - -export class Event_trigger_when_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public KW_NAMES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NAMES, 0); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IN, 0)!; + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); } - public event_trigger_value_list(): Event_trigger_value_listContext { - return this.getRuleContext(0, Event_trigger_value_listContext)!; + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { + return this.getRuleContext(0, Nonreservedword_or_sconstContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_SESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION, 0); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); + } + public KW_XML(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XML, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); + } + public document_or_content(): Document_or_contentContext | null { + return this.getRuleContext(0, Document_or_contentContext); + } + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); + } + public KW_SNAPSHOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SNAPSHOT, 0); + } + public var_name(): Var_nameContext | null { + return this.getRuleContext(0, Var_nameContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public generic_set(): Generic_setContext | null { + return this.getRuleContext(0, Generic_setContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_event_trigger_when_item; + return PostgreSqlParser.RULE_set_rest_more; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEvent_trigger_when_item) { - listener.enterEvent_trigger_when_item(this); + if(listener.enterSet_rest_more) { + listener.enterSet_rest_more(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEvent_trigger_when_item) { - listener.exitEvent_trigger_when_item(this); + if(listener.exitSet_rest_more) { + listener.exitSet_rest_more(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEvent_trigger_when_item) { - return visitor.visitEvent_trigger_when_item(this); + if (visitor.visitSet_rest_more) { + return visitor.visitSet_rest_more(this); } else { return visitor.visitChildren(this); } @@ -85437,44 +60206,44 @@ export class Event_trigger_when_itemContext extends antlr.ParserRuleContext { } -export class Event_trigger_value_listContext extends antlr.ParserRuleContext { +export class Var_nameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sconst(): SconstContext[]; - public sconst(i: number): SconstContext | null; - public sconst(i?: number): SconstContext[] | SconstContext | null { + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { if (i === undefined) { - return this.getRuleContexts(SconstContext); + return this.getRuleContexts(ColidContext); } - return this.getRuleContext(i, SconstContext); + return this.getRuleContext(i, ColidContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public DOT(): antlr.TerminalNode[]; + public DOT(i: number): antlr.TerminalNode | null; + public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); + return this.getTokens(PostgreSqlParser.DOT); } else { - return this.getToken(PostgreSqlParser.COMMA, i); + return this.getToken(PostgreSqlParser.DOT, i); } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_event_trigger_value_list; + return PostgreSqlParser.RULE_var_name; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEvent_trigger_value_list) { - listener.enterEvent_trigger_value_list(this); + if(listener.enterVar_name) { + listener.enterVar_name(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEvent_trigger_value_list) { - listener.exitEvent_trigger_value_list(this); + if(listener.exitVar_name) { + listener.exitVar_name(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEvent_trigger_value_list) { - return visitor.visitEvent_trigger_value_list(this); + if (visitor.visitVar_name) { + return visitor.visitVar_name(this); } else { return visitor.visitChildren(this); } @@ -85482,80 +60251,44 @@ export class Event_trigger_value_listContext extends antlr.ParserRuleContext { } -export class AltereventtrigstmtContext extends antlr.ParserRuleContext { +export class Var_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_EVENT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EVENT, 0)!; - } - public KW_TRIGGER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public enable_trigger(): Enable_triggerContext { - return this.getRuleContext(0, Enable_triggerContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altereventtrigstmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltereventtrigstmt) { - listener.enterAltereventtrigstmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltereventtrigstmt) { - listener.exitAltereventtrigstmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltereventtrigstmt) { - return visitor.visitAltereventtrigstmt(this); - } else { - return visitor.visitChildren(this); + public var_value(): Var_valueContext[]; + public var_value(i: number): Var_valueContext | null; + public var_value(i?: number): Var_valueContext[] | Var_valueContext | null { + if (i === undefined) { + return this.getRuleContexts(Var_valueContext); } - } -} - -export class Enable_triggerContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ENABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENABLE, 0); - } - public KW_REPLICA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLICA, 0); - } - public KW_ALWAYS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALWAYS, 0); + return this.getRuleContext(i, Var_valueContext); } - public KW_DISABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISABLE, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_enable_trigger; + return PostgreSqlParser.RULE_var_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEnable_trigger) { - listener.enterEnable_trigger(this); + if(listener.enterVar_list) { + listener.enterVar_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEnable_trigger) { - listener.exitEnable_trigger(this); + if(listener.exitVar_list) { + listener.exitVar_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEnable_trigger) { - return visitor.visitEnable_trigger(this); + if (visitor.visitVar_list) { + return visitor.visitVar_list(this); } else { return visitor.visitChildren(this); } @@ -85563,50 +60296,32 @@ export class Enable_triggerContext extends antlr.ParserRuleContext { } -export class CreateassertionstmtContext extends antlr.ParserRuleContext { +export class Var_valueContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_ASSERTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ASSERTION, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public KW_CHECK(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CHECK, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { + return this.getRuleContext(0, Opt_boolean_or_stringContext); } - public constraintattributespec(): ConstraintattributespecContext { - return this.getRuleContext(0, ConstraintattributespecContext)!; + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createassertionstmt; + return PostgreSqlParser.RULE_var_value; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateassertionstmt) { - listener.enterCreateassertionstmt(this); + if(listener.enterVar_value) { + listener.enterVar_value(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateassertionstmt) { - listener.exitCreateassertionstmt(this); + if(listener.exitVar_value) { + listener.exitVar_value(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateassertionstmt) { - return visitor.visitCreateassertionstmt(this); + if (visitor.visitVar_value) { + return visitor.visitVar_value(this); } else { return visitor.visitChildren(this); } @@ -85614,113 +60329,41 @@ export class CreateassertionstmtContext extends antlr.ParserRuleContext { } -export class DefinestmtContext extends antlr.ParserRuleContext { +export class Iso_levelContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); - } - public function_name(): Function_nameContext | null { - return this.getRuleContext(0, Function_nameContext); - } - public aggr_args(): Aggr_argsContext | null { - return this.getRuleContext(0, Aggr_argsContext); - } - public definition(): DefinitionContext | null { - return this.getRuleContext(0, DefinitionContext); - } - public opt_or_replace(): Opt_or_replaceContext | null { - return this.getRuleContext(0, Opt_or_replaceContext); - } - public old_aggr_definition(): Old_aggr_definitionContext | null { - return this.getRuleContext(0, Old_aggr_definitionContext); - } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); - } - public any_operator(): Any_operatorContext | null { - return this.getRuleContext(0, Any_operatorContext); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public any_name(): Any_nameContext[]; - public any_name(i: number): Any_nameContext | null; - public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Any_nameContext); - } - - return this.getRuleContext(i, Any_nameContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public opttablefuncelementlist(): OpttablefuncelementlistContext | null { - return this.getRuleContext(0, OpttablefuncelementlistContext); - } - public KW_ENUM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENUM, 0); - } - public opt_enum_val_list(): Opt_enum_val_listContext | null { - return this.getRuleContext(0, Opt_enum_val_listContext); - } - public KW_RANGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RANGE, 0); - } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); - } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); - } - public KW_PARSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARSER, 0); - } - public KW_DICTIONARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); - } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + public KW_READ(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_READ, 0); } - public KW_CONFIGURATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + public KW_UNCOMMITTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNCOMMITTED, 0); } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); + public KW_COMMITTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COMMITTED, 0); } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); + public KW_REPEATABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPEATABLE, 0); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); + public KW_SERIALIZABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERIALIZABLE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_definestmt; + return PostgreSqlParser.RULE_iso_level; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefinestmt) { - listener.enterDefinestmt(this); + if(listener.enterIso_level) { + listener.enterIso_level(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefinestmt) { - listener.exitDefinestmt(this); + if(listener.exitIso_level) { + listener.exitIso_level(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefinestmt) { - return visitor.visitDefinestmt(this); + if (visitor.visitIso_level) { + return visitor.visitIso_level(this); } else { return visitor.visitChildren(this); } @@ -85728,35 +60371,44 @@ export class DefinestmtContext extends antlr.ParserRuleContext { } -export class DefinitionContext extends antlr.ParserRuleContext { +export class Opt_boolean_or_string_columnContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUE, 0); } - public def_list(): Def_listContext { - return this.getRuleContext(0, Def_listContext)!; + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FALSE, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); + } + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); + } + public type_func_name_keyword(): Type_func_name_keywordContext | null { + return this.getRuleContext(0, Type_func_name_keywordContext); + } + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_definition; + return PostgreSqlParser.RULE_opt_boolean_or_string_column; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefinition) { - listener.enterDefinition(this); + if(listener.enterOpt_boolean_or_string_column) { + listener.enterOpt_boolean_or_string_column(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefinition) { - listener.exitDefinition(this); + if(listener.exitOpt_boolean_or_string_column) { + listener.exitOpt_boolean_or_string_column(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefinition) { - return visitor.visitDefinition(this); + if (visitor.visitOpt_boolean_or_string_column) { + return visitor.visitOpt_boolean_or_string_column(this); } else { return visitor.visitChildren(this); } @@ -85764,44 +60416,38 @@ export class DefinitionContext extends antlr.ParserRuleContext { } -export class Def_listContext extends antlr.ParserRuleContext { +export class Opt_boolean_or_stringContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public def_elem(): Def_elemContext[]; - public def_elem(i: number): Def_elemContext | null; - public def_elem(i?: number): Def_elemContext[] | Def_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Def_elemContext); - } - - return this.getRuleContext(i, Def_elemContext); + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUE, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FALSE, 0); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); + } + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { + return this.getRuleContext(0, Nonreservedword_or_sconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_def_list; + return PostgreSqlParser.RULE_opt_boolean_or_string; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDef_list) { - listener.enterDef_list(this); + if(listener.enterOpt_boolean_or_string) { + listener.enterOpt_boolean_or_string(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDef_list) { - listener.exitDef_list(this); + if(listener.exitOpt_boolean_or_string) { + listener.exitOpt_boolean_or_string(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDef_list) { - return visitor.visitDef_list(this); + if (visitor.visitOpt_boolean_or_string) { + return visitor.visitOpt_boolean_or_string(this); } else { return visitor.visitChildren(this); } @@ -85809,35 +60455,50 @@ export class Def_listContext extends antlr.ParserRuleContext { } -export class Def_elemContext extends antlr.ParserRuleContext { +export class Zone_valueContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public def_arg(): Def_argContext | null { - return this.getRuleContext(0, Def_argContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_INTERVAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTERVAL, 0); + } + public opt_interval(): Opt_intervalContext | null { + return this.getRuleContext(0, Opt_intervalContext); + } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); + } + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCAL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_def_elem; + return PostgreSqlParser.RULE_zone_value; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDef_elem) { - listener.enterDef_elem(this); + if(listener.enterZone_value) { + listener.enterZone_value(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDef_elem) { - listener.exitDef_elem(this); + if(listener.exitZone_value) { + listener.exitZone_value(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDef_elem) { - return visitor.visitDef_elem(this); + if (visitor.visitZone_value) { + return visitor.visitZone_value(this); } else { return visitor.visitChildren(this); } @@ -85845,44 +60506,32 @@ export class Def_elemContext extends antlr.ParserRuleContext { } -export class Def_argContext extends antlr.ParserRuleContext { +export class Nonreservedword_or_sconstContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_type(): Func_typeContext | null { - return this.getRuleContext(0, Func_typeContext); - } - public reserved_keyword(): Reserved_keywordContext | null { - return this.getRuleContext(0, Reserved_keywordContext); - } - public qual_all_op(): Qual_all_opContext | null { - return this.getRuleContext(0, Qual_all_opContext); - } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public nonreservedword(): NonreservedwordContext | null { + return this.getRuleContext(0, NonreservedwordContext); } public sconst(): SconstContext | null { return this.getRuleContext(0, SconstContext); } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NONE, 0); - } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_def_arg; + return PostgreSqlParser.RULE_nonreservedword_or_sconst; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDef_arg) { - listener.enterDef_arg(this); + if(listener.enterNonreservedword_or_sconst) { + listener.enterNonreservedword_or_sconst(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDef_arg) { - listener.exitDef_arg(this); + if(listener.exitNonreservedword_or_sconst) { + listener.exitNonreservedword_or_sconst(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDef_arg) { - return visitor.visitDef_arg(this); + if (visitor.visitNonreservedword_or_sconst) { + return visitor.visitNonreservedword_or_sconst(this); } else { return visitor.visitChildren(this); } @@ -85890,35 +60539,32 @@ export class Def_argContext extends antlr.ParserRuleContext { } -export class Old_aggr_definitionContext extends antlr.ParserRuleContext { +export class VariableresetstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public old_aggr_list(): Old_aggr_listContext { - return this.getRuleContext(0, Old_aggr_listContext)!; + public KW_RESET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_RESET, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public reset_rest(): Reset_restContext { + return this.getRuleContext(0, Reset_restContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_old_aggr_definition; + return PostgreSqlParser.RULE_variableresetstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOld_aggr_definition) { - listener.enterOld_aggr_definition(this); + if(listener.enterVariableresetstmt) { + listener.enterVariableresetstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOld_aggr_definition) { - listener.exitOld_aggr_definition(this); + if(listener.exitVariableresetstmt) { + listener.exitVariableresetstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOld_aggr_definition) { - return visitor.visitOld_aggr_definition(this); + if (visitor.visitVariableresetstmt) { + return visitor.visitVariableresetstmt(this); } else { return visitor.visitChildren(this); } @@ -85926,44 +60572,53 @@ export class Old_aggr_definitionContext extends antlr.ParserRuleContext { } -export class Old_aggr_listContext extends antlr.ParserRuleContext { +export class Reset_restContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public old_aggr_elem(): Old_aggr_elemContext[]; - public old_aggr_elem(i: number): Old_aggr_elemContext | null; - public old_aggr_elem(i?: number): Old_aggr_elemContext[] | Old_aggr_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Old_aggr_elemContext); - } - - return this.getRuleContext(i, Old_aggr_elemContext); + public KW_TIME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIME, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ZONE, 0); + } + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); + } + public KW_ISOLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ISOLATION, 0); + } + public KW_LEVEL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEVEL, 0); + } + public KW_SESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION, 0); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); + } + public var_name(): Var_nameContext | null { + return this.getRuleContext(0, Var_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_old_aggr_list; + return PostgreSqlParser.RULE_reset_rest; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOld_aggr_list) { - listener.enterOld_aggr_list(this); + if(listener.enterReset_rest) { + listener.enterReset_rest(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOld_aggr_list) { - listener.exitOld_aggr_list(this); + if(listener.exitReset_rest) { + listener.exitReset_rest(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOld_aggr_list) { - return visitor.visitOld_aggr_list(this); + if (visitor.visitReset_rest) { + return visitor.visitReset_rest(this); } else { return visitor.visitChildren(this); } @@ -85971,35 +60626,35 @@ export class Old_aggr_listContext extends antlr.ParserRuleContext { } -export class Old_aggr_elemContext extends antlr.ParserRuleContext { +export class SetresetclauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public EQUAL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.EQUAL, 0)!; + public set_rest(): Set_restContext | null { + return this.getRuleContext(0, Set_restContext); } - public def_arg(): Def_argContext { - return this.getRuleContext(0, Def_argContext)!; + public variableresetstmt(): VariableresetstmtContext | null { + return this.getRuleContext(0, VariableresetstmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_old_aggr_elem; + return PostgreSqlParser.RULE_setresetclause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOld_aggr_elem) { - listener.enterOld_aggr_elem(this); + if(listener.enterSetresetclause) { + listener.enterSetresetclause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOld_aggr_elem) { - listener.exitOld_aggr_elem(this); + if(listener.exitSetresetclause) { + listener.exitSetresetclause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOld_aggr_elem) { - return visitor.visitOld_aggr_elem(this); + if (visitor.visitSetresetclause) { + return visitor.visitSetresetclause(this); } else { return visitor.visitChildren(this); } @@ -86007,29 +60662,35 @@ export class Old_aggr_elemContext extends antlr.ParserRuleContext { } -export class Opt_enum_val_listContext extends antlr.ParserRuleContext { +export class FunctionsetresetclauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public enum_val_list(): Enum_val_listContext { - return this.getRuleContext(0, Enum_val_listContext)!; + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public set_rest_more(): Set_rest_moreContext | null { + return this.getRuleContext(0, Set_rest_moreContext); + } + public variableresetstmt(): VariableresetstmtContext | null { + return this.getRuleContext(0, VariableresetstmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_enum_val_list; + return PostgreSqlParser.RULE_functionsetresetclause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_enum_val_list) { - listener.enterOpt_enum_val_list(this); + if(listener.enterFunctionsetresetclause) { + listener.enterFunctionsetresetclause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_enum_val_list) { - listener.exitOpt_enum_val_list(this); + if(listener.exitFunctionsetresetclause) { + listener.exitFunctionsetresetclause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_enum_val_list) { - return visitor.visitOpt_enum_val_list(this); + if (visitor.visitFunctionsetresetclause) { + return visitor.visitFunctionsetresetclause(this); } else { return visitor.visitChildren(this); } @@ -86037,44 +60698,56 @@ export class Opt_enum_val_listContext extends antlr.ParserRuleContext { } -export class Enum_val_listContext extends antlr.ParserRuleContext { +export class VariableshowstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sconst(): SconstContext[]; - public sconst(i: number): SconstContext | null; - public sconst(i?: number): SconstContext[] | SconstContext | null { - if (i === undefined) { - return this.getRuleContexts(SconstContext); - } - - return this.getRuleContext(i, SconstContext); + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SHOW, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public var_name(): Var_nameContext | null { + return this.getRuleContext(0, Var_nameContext); + } + public KW_TIME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIME, 0); + } + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ZONE, 0); + } + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); + } + public KW_ISOLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ISOLATION, 0); + } + public KW_LEVEL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEVEL, 0); + } + public KW_SESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION, 0); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_enum_val_list; + return PostgreSqlParser.RULE_variableshowstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEnum_val_list) { - listener.enterEnum_val_list(this); + if(listener.enterVariableshowstmt) { + listener.enterVariableshowstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEnum_val_list) { - listener.exitEnum_val_list(this); + if(listener.exitVariableshowstmt) { + listener.exitVariableshowstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEnum_val_list) { - return visitor.visitEnum_val_list(this); + if (visitor.visitVariableshowstmt) { + return visitor.visitVariableshowstmt(this); } else { return visitor.visitChildren(this); } @@ -86082,65 +60755,44 @@ export class Enum_val_listContext extends antlr.ParserRuleContext { } -export class AlterenumstmtContext extends antlr.ParserRuleContext { +export class ConstraintssetstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public KW_VALUE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VALUE, 0)!; - } - public sconst(): SconstContext[]; - public sconst(i: number): SconstContext | null; - public sconst(i?: number): SconstContext[] | SconstContext | null { - if (i === undefined) { - return this.getRuleContexts(SconstContext); - } - - return this.getRuleContext(i, SconstContext); + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); + public KW_CONSTRAINTS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CONSTRAINTS, 0)!; } - public KW_BEFORE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BEFORE, 0); + public KW_DEFERRED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRED, 0); } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AFTER, 0); + public KW_IMMEDIATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IMMEDIATE, 0); } - public KW_RENAME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RENAME, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public qualified_name_list(): Qualified_name_listContext | null { + return this.getRuleContext(0, Qualified_name_listContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterenumstmt; + return PostgreSqlParser.RULE_constraintssetstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterenumstmt) { - listener.enterAlterenumstmt(this); + if(listener.enterConstraintssetstmt) { + listener.enterConstraintssetstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterenumstmt) { - listener.exitAlterenumstmt(this); + if(listener.exitConstraintssetstmt) { + listener.exitConstraintssetstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterenumstmt) { - return visitor.visitAlterenumstmt(this); + if (visitor.visitConstraintssetstmt) { + return visitor.visitConstraintssetstmt(this); } else { return visitor.visitChildren(this); } @@ -86148,35 +60800,29 @@ export class AlterenumstmtContext extends antlr.ParserRuleContext { } -export class Opt_if_not_existsContext extends antlr.ParserRuleContext { +export class CheckpointstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IF, 0)!; - } - public KW_NOT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NOT, 0)!; - } - public KW_EXISTS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXISTS, 0)!; + public KW_CHECKPOINT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CHECKPOINT, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_if_not_exists; + return PostgreSqlParser.RULE_checkpointstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_if_not_exists) { - listener.enterOpt_if_not_exists(this); + if(listener.enterCheckpointstmt) { + listener.enterCheckpointstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_if_not_exists) { - listener.exitOpt_if_not_exists(this); + if(listener.exitCheckpointstmt) { + listener.exitCheckpointstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_if_not_exists) { - return visitor.visitOpt_if_not_exists(this); + if (visitor.visitCheckpointstmt) { + return visitor.visitCheckpointstmt(this); } else { return visitor.visitChildren(this); } @@ -86184,65 +60830,44 @@ export class Opt_if_not_existsContext extends antlr.ParserRuleContext { } -export class CreateopclassstmtContext extends antlr.ParserRuleContext { +export class DiscardstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_OPERATOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; - } - public KW_CLASS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CLASS, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; - } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; - } - public typename(): TypenameContext { - return this.getRuleContext(0, TypenameContext)!; - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; + public KW_DISCARD(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DISCARD, 0)!; } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public KW_TEMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMP, 0); } - public opclass_item_list(): Opclass_item_listContext { - return this.getRuleContext(0, Opclass_item_listContext)!; + public KW_TEMPORARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); } - public opt_default(): Opt_defaultContext | null { - return this.getRuleContext(0, Opt_defaultContext); + public KW_PLANS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PLANS, 0); } - public opt_opfamily(): Opt_opfamilyContext | null { - return this.getRuleContext(0, Opt_opfamilyContext); + public KW_SEQUENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createopclassstmt; + return PostgreSqlParser.RULE_discardstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateopclassstmt) { - listener.enterCreateopclassstmt(this); + if(listener.enterDiscardstmt) { + listener.enterDiscardstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateopclassstmt) { - listener.exitCreateopclassstmt(this); + if(listener.exitDiscardstmt) { + listener.exitDiscardstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateopclassstmt) { - return visitor.visitCreateopclassstmt(this); + if (visitor.visitDiscardstmt) { + return visitor.visitDiscardstmt(this); } else { return visitor.visitChildren(this); } @@ -86250,140 +60875,131 @@ export class CreateopclassstmtContext extends antlr.ParserRuleContext { } -export class Opclass_item_listContext extends antlr.ParserRuleContext { +export class AltertablestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opclass_item(): Opclass_itemContext[]; - public opclass_item(i: number): Opclass_itemContext | null; - public opclass_item(i?: number): Opclass_itemContext[] | Opclass_itemContext | null { + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); + } + public relation_expr(): Relation_exprContext | null { + return this.getRuleContext(0, Relation_exprContext); + } + public alter_table_cmds(): Alter_table_cmdsContext | null { + return this.getRuleContext(0, Alter_table_cmdsContext); + } + public partition_cmd(): Partition_cmdContext | null { + return this.getRuleContext(0, Partition_cmdContext); + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public opttablespace(): OpttablespaceContext[]; + public opttablespace(i: number): OpttablespaceContext | null; + public opttablespace(i?: number): OpttablespaceContext[] | OpttablespaceContext | null { if (i === undefined) { - return this.getRuleContexts(Opclass_itemContext); + return this.getRuleContexts(OpttablespaceContext); } - return this.getRuleContext(i, Opclass_itemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + return this.getRuleContext(i, OpttablespaceContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opclass_item_list; + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpclass_item_list) { - listener.enterOpclass_item_list(this); - } + public KW_TABLESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpclass_item_list) { - listener.exitOpclass_item_list(this); - } + public tablespace_name_create(): Tablespace_name_createContext | null { + return this.getRuleContext(0, Tablespace_name_createContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpclass_item_list) { - return visitor.visitOpclass_item_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_OWNED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNED, 0); } -} - - -export class Opclass_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); + public role_list(): Role_listContext | null { + return this.getRuleContext(0, Role_listContext); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public KW_NOWAIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOWAIT, 0); } - public any_operator(): Any_operatorContext | null { - return this.getRuleContext(0, Any_operatorContext); + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); } - public opclass_purpose(): Opclass_purposeContext | null { - return this.getRuleContext(0, Opclass_purposeContext); + public index_partition_cmd(): Index_partition_cmdContext | null { + return this.getRuleContext(0, Index_partition_cmdContext); } - public opt_recheck(): Opt_recheckContext | null { - return this.getRuleContext(0, Opt_recheckContext); + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public operator_with_argtypes(): Operator_with_argtypesContext | null { - return this.getRuleContext(0, Operator_with_argtypesContext); + public KW_VALUES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALUES, 0); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public partition_bound_spec(): Partition_bound_specContext | null { + return this.getRuleContext(0, Partition_bound_specContext); } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_DETACH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DETACH, 0); } - public type_list(): Type_listContext | null { - return this.getRuleContext(0, Type_listContext); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public KW_STORAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STORAGE, 0); + public KW_CONCURRENTLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); + public KW_FINALIZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FINALIZE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opclass_item; + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpclass_item) { - listener.enterOpclass_item(this); - } + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpclass_item) { - listener.exitOpclass_item(this); - } + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpclass_item) { - return visitor.visitOpclass_item(this); - } else { - return visitor.visitChildren(this); - } + public view_name(): View_nameContext | null { + return this.getRuleContext(0, View_nameContext); } -} - - -export class Opt_defaultContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); } - public KW_DEFAULT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0)!; + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_default; + return PostgreSqlParser.RULE_altertablestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_default) { - listener.enterOpt_default(this); + if(listener.enterAltertablestmt) { + listener.enterAltertablestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_default) { - listener.exitOpt_default(this); + if(listener.exitAltertablestmt) { + listener.exitAltertablestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_default) { - return visitor.visitOpt_default(this); + if (visitor.visitAltertablestmt) { + return visitor.visitAltertablestmt(this); } else { return visitor.visitChildren(this); } @@ -86391,32 +61007,44 @@ export class Opt_defaultContext extends antlr.ParserRuleContext { } -export class Opt_opfamilyContext extends antlr.ParserRuleContext { +export class Alter_table_cmdsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FAMILY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0)!; + public alter_table_cmd(): Alter_table_cmdContext[]; + public alter_table_cmd(i: number): Alter_table_cmdContext | null; + public alter_table_cmd(i?: number): Alter_table_cmdContext[] | Alter_table_cmdContext | null { + if (i === undefined) { + return this.getRuleContexts(Alter_table_cmdContext); + } + + return this.getRuleContext(i, Alter_table_cmdContext); } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_opfamily; + return PostgreSqlParser.RULE_alter_table_cmds; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_opfamily) { - listener.enterOpt_opfamily(this); + if(listener.enterAlter_table_cmds) { + listener.enterAlter_table_cmds(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_opfamily) { - listener.exitOpt_opfamily(this); + if(listener.exitAlter_table_cmds) { + listener.exitAlter_table_cmds(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_opfamily) { - return visitor.visitOpt_opfamily(this); + if (visitor.visitAlter_table_cmds) { + return visitor.visitAlter_table_cmds(this); } else { return visitor.visitChildren(this); } @@ -86424,71 +61052,53 @@ export class Opt_opfamilyContext extends antlr.ParserRuleContext { } -export class Opclass_purposeContext extends antlr.ParserRuleContext { +export class Partition_bound_specContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; - } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ORDER, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BY, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opclass_purpose; + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpclass_purpose) { - listener.enterOpclass_purpose(this); - } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpclass_purpose) { - listener.exitOpclass_purpose(this); + public partition_bound_cluase(): Partition_bound_cluaseContext[]; + public partition_bound_cluase(i: number): Partition_bound_cluaseContext | null; + public partition_bound_cluase(i?: number): Partition_bound_cluaseContext[] | Partition_bound_cluaseContext | null { + if (i === undefined) { + return this.getRuleContexts(Partition_bound_cluaseContext); } + + return this.getRuleContext(i, Partition_bound_cluaseContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpclass_purpose) { - return visitor.visitOpclass_purpose(this); - } else { - return visitor.visitChildren(this); - } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } -} - - -export class Opt_recheckContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public KW_RECHECK(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_RECHECK, 0)!; + public partition_with_cluase(): Partition_with_cluaseContext | null { + return this.getRuleContext(0, Partition_with_cluaseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_recheck; + return PostgreSqlParser.RULE_partition_bound_spec; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_recheck) { - listener.enterOpt_recheck(this); + if(listener.enterPartition_bound_spec) { + listener.enterPartition_bound_spec(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_recheck) { - listener.exitOpt_recheck(this); + if(listener.exitPartition_bound_spec) { + listener.exitPartition_bound_spec(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_recheck) { - return visitor.visitOpt_recheck(this); + if (visitor.visitPartition_bound_spec) { + return visitor.visitPartition_bound_spec(this); } else { return visitor.visitChildren(this); } @@ -86496,44 +61106,50 @@ export class Opt_recheckContext extends antlr.ParserRuleContext { } -export class CreateopfamilystmtContext extends antlr.ParserRuleContext { +export class Partition_bound_cluaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_OPERATOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; - } - public KW_FAMILY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; + public partition_bound_choose(): Partition_bound_chooseContext[]; + public partition_bound_choose(i: number): Partition_bound_chooseContext | null; + public partition_bound_choose(i?: number): Partition_bound_chooseContext[] | Partition_bound_chooseContext | null { + if (i === undefined) { + return this.getRuleContexts(Partition_bound_chooseContext); + } + + return this.getRuleContext(i, Partition_bound_chooseContext); } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createopfamilystmt; + return PostgreSqlParser.RULE_partition_bound_cluase; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateopfamilystmt) { - listener.enterCreateopfamilystmt(this); + if(listener.enterPartition_bound_cluase) { + listener.enterPartition_bound_cluase(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateopfamilystmt) { - listener.exitCreateopfamilystmt(this); + if(listener.exitPartition_bound_cluase) { + listener.exitPartition_bound_cluase(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateopfamilystmt) { - return visitor.visitCreateopfamilystmt(this); + if (visitor.visitPartition_bound_cluase) { + return visitor.visitPartition_bound_cluase(this); } else { return visitor.visitChildren(this); } @@ -86541,56 +61157,35 @@ export class CreateopfamilystmtContext extends antlr.ParserRuleContext { } -export class AlteropfamilystmtContext extends antlr.ParserRuleContext { +export class Partition_bound_chooseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_OPERATOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; - } - public KW_FAMILY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public opclass_item_list(): Opclass_item_listContext | null { - return this.getRuleContext(0, Opclass_item_listContext); + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); + public KW_MINVALUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MINVALUE, 0); } - public opclass_drop_list(): Opclass_drop_listContext | null { - return this.getRuleContext(0, Opclass_drop_listContext); + public KW_MAXVALUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MAXVALUE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alteropfamilystmt; + return PostgreSqlParser.RULE_partition_bound_choose; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlteropfamilystmt) { - listener.enterAlteropfamilystmt(this); + if(listener.enterPartition_bound_choose) { + listener.enterPartition_bound_choose(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlteropfamilystmt) { - listener.exitAlteropfamilystmt(this); + if(listener.exitPartition_bound_choose) { + listener.exitPartition_bound_choose(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlteropfamilystmt) { - return visitor.visitAlteropfamilystmt(this); + if (visitor.visitPartition_bound_choose) { + return visitor.visitPartition_bound_choose(this); } else { return visitor.visitChildren(this); } @@ -86598,44 +61193,50 @@ export class AlteropfamilystmtContext extends antlr.ParserRuleContext { } -export class Opclass_drop_listContext extends antlr.ParserRuleContext { +export class Partition_with_cluaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opclass_drop(): Opclass_dropContext[]; - public opclass_drop(i: number): Opclass_dropContext | null; - public opclass_drop(i?: number): Opclass_dropContext[] | Opclass_dropContext | null { + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public KW_MODULUS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MODULUS, 0)!; + } + public numericonly(): NumericonlyContext[]; + public numericonly(i: number): NumericonlyContext | null; + public numericonly(i?: number): NumericonlyContext[] | NumericonlyContext | null { if (i === undefined) { - return this.getRuleContexts(Opclass_dropContext); + return this.getRuleContexts(NumericonlyContext); } - return this.getRuleContext(i, Opclass_dropContext); + return this.getRuleContext(i, NumericonlyContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public COMMA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.COMMA, 0)!; + } + public KW_REMAINDER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REMAINDER, 0)!; + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opclass_drop_list; + return PostgreSqlParser.RULE_partition_with_cluase; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpclass_drop_list) { - listener.enterOpclass_drop_list(this); + if(listener.enterPartition_with_cluase) { + listener.enterPartition_with_cluase(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpclass_drop_list) { - listener.exitOpclass_drop_list(this); + if(listener.exitPartition_with_cluase) { + listener.exitPartition_with_cluase(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpclass_drop_list) { - return visitor.visitOpclass_drop_list(this); + if (visitor.visitPartition_with_cluase) { + return visitor.visitPartition_with_cluase(this); } else { return visitor.visitChildren(this); } @@ -86643,44 +61244,41 @@ export class Opclass_drop_listContext extends antlr.ParserRuleContext { } -export class Opclass_dropContext extends antlr.ParserRuleContext { +export class Partition_cmdContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); - } - public iconst(): IconstContext { - return this.getRuleContext(0, IconstContext)!; + public index_partition_cmd(): Index_partition_cmdContext | null { + return this.getRuleContext(0, Index_partition_cmdContext); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public partitionboundspec(): PartitionboundspecContext | null { + return this.getRuleContext(0, PartitionboundspecContext); } - public type_list(): Type_listContext { - return this.getRuleContext(0, Type_listContext)!; + public KW_DETACH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DETACH, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opclass_drop; + return PostgreSqlParser.RULE_partition_cmd; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpclass_drop) { - listener.enterOpclass_drop(this); + if(listener.enterPartition_cmd) { + listener.enterPartition_cmd(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpclass_drop) { - listener.exitOpclass_drop(this); + if(listener.exitPartition_cmd) { + listener.exitPartition_cmd(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpclass_drop) { - return visitor.visitOpclass_drop(this); + if (visitor.visitPartition_cmd) { + return visitor.visitPartition_cmd(this); } else { return visitor.visitChildren(this); } @@ -86688,44 +61286,35 @@ export class Opclass_dropContext extends antlr.ParserRuleContext { } -export class ReassignownedstmtContext extends antlr.ParserRuleContext { +export class Index_partition_cmdContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_REASSIGN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REASSIGN, 0)!; - } - public KW_OWNED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OWNED, 0)!; - } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; - } - public role_list(): Role_listContext { - return this.getRuleContext(0, Role_listContext)!; + public KW_ATTACH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ATTACH, 0)!; } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public KW_PARTITION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reassignownedstmt; + return PostgreSqlParser.RULE_index_partition_cmd; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReassignownedstmt) { - listener.enterReassignownedstmt(this); + if(listener.enterIndex_partition_cmd) { + listener.enterIndex_partition_cmd(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReassignownedstmt) { - listener.exitReassignownedstmt(this); + if(listener.exitIndex_partition_cmd) { + listener.exitIndex_partition_cmd(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReassignownedstmt) { - return visitor.visitReassignownedstmt(this); + if (visitor.visitIndex_partition_cmd) { + return visitor.visitIndex_partition_cmd(this); } else { return visitor.visitChildren(this); } @@ -86733,287 +61322,293 @@ export class ReassignownedstmtContext extends antlr.ParserRuleContext { } -export class DropstmtContext extends antlr.ParserRuleContext { +export class Alter_table_cmdContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DROP, 0)!; - } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); - } - public table_name_list(): Table_name_listContext | null { - return this.getRuleContext(0, Table_name_listContext); - } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); - } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); - } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); - } - public name_list(): Name_listContext | null { - return this.getRuleContext(0, Name_listContext); + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); + public constraintelem(): ConstraintelemContext | null { + return this.getRuleContext(0, ConstraintelemContext); } - public view_nameList(): View_nameListContext | null { - return this.getRuleContext(0, View_nameListContext); + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public KW_MATERIALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); + public KW_ALTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALTER, 0); } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + public constraintattributeElem(): ConstraintattributeElemContext[]; + public constraintattributeElem(i: number): ConstraintattributeElemContext | null; + public constraintattributeElem(i?: number): ConstraintattributeElemContext[] | ConstraintattributeElemContext | null { + if (i === undefined) { + return this.getRuleContexts(ConstraintattributeElemContext); + } + + return this.getRuleContext(i, ConstraintattributeElemContext); } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); + public KW_VALIDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALIDATE, 0); } - public KW_CONVERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); + public KW_SET(): antlr.TerminalNode[]; + public KW_SET(i: number): antlr.TerminalNode | null; + public KW_SET(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_SET); + } else { + return this.getToken(PostgreSqlParser.KW_SET, i); + } } - public KW_PARSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARSER, 0); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); } - public KW_DICTIONARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + public KW_OIDS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OIDS, 0); } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + public KW_CLUSTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CLUSTER, 0); } - public KW_CONFIGURATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } - public KW_ACCESS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ACCESS, 0); + public KW_LOGGED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOGGED, 0); } - public KW_METHOD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_METHOD, 0); + public KW_UNLOGGED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); } - public KW_EVENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EVENT, 0); + public KW_ENABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ENABLE, 0); } public KW_TRIGGER(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); } - public KW_EXTENSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); - } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATA, 0); - } - public KW_WRAPPER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); + public KW_REPLICA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLICA, 0); } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + public KW_ALWAYS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALWAYS, 0); } - public opt_procedural(): Opt_proceduralContext | null { - return this.getRuleContext(0, Opt_proceduralContext); + public KW_DISABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISABLE, 0); } - public KW_PUBLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_SERVER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERVER, 0); + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + public KW_RULE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RULE, 0); } - public schema_name_list(): Schema_name_listContext | null { - return this.getRuleContext(0, Schema_name_listContext); + public KW_INHERIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INHERIT, 0); } - public KW_POLICY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_POLICY, 0); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OF, 0); } public any_name(): Any_nameContext | null { return this.getRuleContext(0, Any_nameContext); } - public KW_RULE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RULE, 0); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public type_name_list(): Type_name_listContext | null { - return this.getRuleContext(0, Type_name_listContext); + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); } - public KW_CONCURRENTLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public any_name_list(): Any_name_listContext | null { - return this.getRuleContext(0, Any_name_listContext); + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CAST, 0); + public KW_TABLESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public tablespace_name_create(): Tablespace_name_createContext | null { + return this.getRuleContext(0, Tablespace_name_createContext); } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } - - return this.getRuleContext(i, TypenameContext); + public KW_IDENTITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public KW_NOTHING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOTHING, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FULL, 0); } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public KW_CLASS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLASS, 0); + public existingindex(): ExistingindexContext | null { + return this.getRuleContext(0, ExistingindexContext); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); } - public KW_FAMILY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0); + public KW_LEVEL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEVEL, 0); } - public KW_OWNED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNED, 0); + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SECURITY, 0); } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BY, 0); + public KW_FORCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FORCE, 0); } - public role_list(): Role_listContext | null { - return this.getRuleContext(0, Role_listContext); + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); } - public KW_SUBSCRIPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLUMN, 0); } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); + public column_def(): Column_defContext | null { + return this.getRuleContext(0, Column_defContext); } - public tablespace_name(): Tablespace_nameContext | null { - return this.getRuleContext(0, Tablespace_nameContext); + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public KW_TRANSFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); + public alter_column_default(): Alter_column_defaultContext | null { + return this.getRuleContext(0, Alter_column_defaultContext); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public alter_generic_options(): Alter_generic_optionsContext | null { + return this.getRuleContext(0, Alter_generic_optionsContext); } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); + public KW_EXPRESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXPRESSION, 0); } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); } - public KW_MAPPING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MAPPING, 0); + public signediconst(): SignediconstContext | null { + return this.getRuleContext(0, SignediconstContext); } - public auth_ident(): Auth_identContext | null { - return this.getRuleContext(0, Auth_identContext); + public reloptions(): ReloptionsContext | null { + return this.getRuleContext(0, ReloptionsContext); } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); + public KW_RESET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESET, 0); } - public database_name(): Database_nameContext | null { - return this.getRuleContext(0, Database_nameContext); + public KW_STORAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORAGE, 0); } - public drop_option_list(): Drop_option_listContext | null { - return this.getRuleContext(0, Drop_option_listContext); + public KW_GENERATED(): antlr.TerminalNode[]; + public KW_GENERATED(i: number): antlr.TerminalNode | null; + public KW_GENERATED(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_GENERATED); + } else { + return this.getToken(PostgreSqlParser.KW_GENERATED, i); + } } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); + public generated_when(): Generated_whenContext[]; + public generated_when(i: number): Generated_whenContext | null; + public generated_when(i?: number): Generated_whenContext[] | Generated_whenContext | null { + if (i === undefined) { + return this.getRuleContexts(Generated_whenContext); + } + + return this.getRuleContext(i, Generated_whenContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_dropstmt; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDropstmt) { - listener.enterDropstmt(this); - } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDropstmt) { - listener.exitDropstmt(this); - } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDropstmt) { - return visitor.visitDropstmt(this); - } else { - return visitor.visitChildren(this); + public seqoptelem(): SeqoptelemContext[]; + public seqoptelem(i: number): SeqoptelemContext | null; + public seqoptelem(i?: number): SeqoptelemContext[] | SeqoptelemContext | null { + if (i === undefined) { + return this.getRuleContexts(SeqoptelemContext); } - } -} - -export class View_nameListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, SeqoptelemContext); } - public view_name(): View_nameContext[]; - public view_name(i: number): View_nameContext | null; - public view_name(i?: number): View_nameContext[] | View_nameContext | null { + public KW_RESTART(): antlr.TerminalNode[]; + public KW_RESTART(i: number): antlr.TerminalNode | null; + public KW_RESTART(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_RESTART); + } else { + return this.getToken(PostgreSqlParser.KW_RESTART, i); + } + } + public numericonly(): NumericonlyContext[]; + public numericonly(i: number): NumericonlyContext | null; + public numericonly(i?: number): NumericonlyContext[] | NumericonlyContext | null { if (i === undefined) { - return this.getRuleContexts(View_nameContext); + return this.getRuleContexts(NumericonlyContext); } - return this.getRuleContext(i, View_nameContext); + return this.getRuleContext(i, NumericonlyContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_WITH(): antlr.TerminalNode[]; + public KW_WITH(i: number): antlr.TerminalNode | null; + public KW_WITH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); + return this.getTokens(PostgreSqlParser.KW_WITH); } else { - return this.getToken(PostgreSqlParser.COMMA, i); + return this.getToken(PostgreSqlParser.KW_WITH, i); } } + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); + } + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); + } + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_view_nameList; + return PostgreSqlParser.RULE_alter_table_cmd; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterView_nameList) { - listener.enterView_nameList(this); + if(listener.enterAlter_table_cmd) { + listener.enterAlter_table_cmd(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitView_nameList) { - listener.exitView_nameList(this); + if(listener.exitAlter_table_cmd) { + listener.exitAlter_table_cmd(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitView_nameList) { - return visitor.visitView_nameList(this); + if (visitor.visitAlter_table_cmd) { + return visitor.visitAlter_table_cmd(this); } else { return visitor.visitChildren(this); } @@ -87021,80 +61616,38 @@ export class View_nameListContext extends antlr.ParserRuleContext { } -export class Object_type_any_nameContext extends antlr.ParserRuleContext { +export class Alter_column_defaultContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); - } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); - } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); - } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); - } - public view_name(): View_nameContext | null { - return this.getRuleContext(0, View_nameContext); - } - public KW_MATERIALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); - } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); - } - public KW_CONVERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); - } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); - } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); - } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); - } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); - } - public KW_PARSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARSER, 0); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public KW_DICTIONARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + public KW_DEFAULT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0)!; } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public KW_CONFIGURATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_object_type_any_name; + return PostgreSqlParser.RULE_alter_column_default; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterObject_type_any_name) { - listener.enterObject_type_any_name(this); + if(listener.enterAlter_column_default) { + listener.enterAlter_column_default(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitObject_type_any_name) { - listener.exitObject_type_any_name(this); + if(listener.exitAlter_column_default) { + listener.exitAlter_column_default(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitObject_type_any_name) { - return visitor.visitObject_type_any_name(this); + if (visitor.visitAlter_column_default) { + return visitor.visitAlter_column_default(this); } else { return visitor.visitChildren(this); } @@ -87102,89 +61655,32 @@ export class Object_type_any_nameContext extends antlr.ParserRuleContext { } -export class Object_type_nameContext extends antlr.ParserRuleContext { +export class Opt_drop_behaviorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ACCESS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ACCESS, 0); - } - public KW_METHOD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_METHOD, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); - } - public KW_EVENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EVENT, 0); - } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); - } - public KW_EXTENSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); - } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); - } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATA, 0); - } - public KW_WRAPPER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); - } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); - } - public opt_procedural(): Opt_proceduralContext | null { - return this.getRuleContext(0, Opt_proceduralContext); - } - public KW_PUBLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); - } - public KW_SERVER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERVER, 0); - } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); - } - public database_name(): Database_nameContext | null { - return this.getRuleContext(0, Database_nameContext); - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public KW_SUBSCRIPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); - } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CASCADE, 0); } - public tablespace_name(): Tablespace_nameContext | null { - return this.getRuleContext(0, Tablespace_nameContext); + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_object_type_name; + return PostgreSqlParser.RULE_opt_drop_behavior; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterObject_type_name) { - listener.enterObject_type_name(this); + if(listener.enterOpt_drop_behavior) { + listener.enterOpt_drop_behavior(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitObject_type_name) { - listener.exitObject_type_name(this); + if(listener.exitOpt_drop_behavior) { + listener.exitOpt_drop_behavior(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitObject_type_name) { - return visitor.visitObject_type_name(this); + if (visitor.visitOpt_drop_behavior) { + return visitor.visitOpt_drop_behavior(this); } else { return visitor.visitChildren(this); } @@ -87192,35 +61688,32 @@ export class Object_type_nameContext extends antlr.ParserRuleContext { } -export class Object_type_name_on_any_nameContext extends antlr.ParserRuleContext { +export class Opt_collate_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_POLICY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_POLICY, 0); - } - public KW_RULE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RULE, 0); - } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + public KW_COLLATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_COLLATE, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_object_type_name_on_any_name; + return PostgreSqlParser.RULE_opt_collate_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterObject_type_name_on_any_name) { - listener.enterObject_type_name_on_any_name(this); + if(listener.enterOpt_collate_clause) { + listener.enterOpt_collate_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitObject_type_name_on_any_name) { - listener.exitObject_type_name_on_any_name(this); + if(listener.exitOpt_collate_clause) { + listener.exitOpt_collate_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitObject_type_name_on_any_name) { - return visitor.visitObject_type_name_on_any_name(this); + if (visitor.visitOpt_collate_clause) { + return visitor.visitOpt_collate_clause(this); } else { return visitor.visitChildren(this); } @@ -87228,18 +61721,24 @@ export class Object_type_name_on_any_nameContext extends antlr.ParserRuleContext } -export class Any_name_listContext extends antlr.ParserRuleContext { +export class ReloptionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public any_name(): Any_nameContext[]; - public any_name(i: number): Any_nameContext | null; - public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public reloption_elem(): Reloption_elemContext[]; + public reloption_elem(i: number): Reloption_elemContext | null; + public reloption_elem(i?: number): Reloption_elemContext[] | Reloption_elemContext | null { if (i === undefined) { - return this.getRuleContexts(Any_nameContext); + return this.getRuleContexts(Reloption_elemContext); } - return this.getRuleContext(i, Any_nameContext); + return this.getRuleContext(i, Reloption_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -87251,21 +61750,21 @@ export class Any_name_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_any_name_list; + return PostgreSqlParser.RULE_reloptions; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAny_name_list) { - listener.enterAny_name_list(this); + if(listener.enterReloptions) { + listener.enterReloptions(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAny_name_list) { - listener.exitAny_name_list(this); + if(listener.exitReloptions) { + listener.exitReloptions(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAny_name_list) { - return visitor.visitAny_name_list(this); + if (visitor.visitReloptions) { + return visitor.visitReloptions(this); } else { return visitor.visitChildren(this); } @@ -87273,35 +61772,32 @@ export class Any_name_listContext extends antlr.ParserRuleContext { } -export class Relation_column_nameContext extends antlr.ParserRuleContext { +export class Opt_reloptionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public relation_name(): Relation_nameContext { - return this.getRuleContext(0, Relation_nameContext)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.DOT, 0)!; + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public column_name(): Column_nameContext { - return this.getRuleContext(0, Column_nameContext)!; + public reloptions(): ReloptionsContext { + return this.getRuleContext(0, ReloptionsContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_relation_column_name; + return PostgreSqlParser.RULE_opt_reloptions; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRelation_column_name) { - listener.enterRelation_column_name(this); + if(listener.enterOpt_reloptions) { + listener.enterOpt_reloptions(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRelation_column_name) { - listener.exitRelation_column_name(this); + if(listener.exitOpt_reloptions) { + listener.exitOpt_reloptions(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRelation_column_name) { - return visitor.visitRelation_column_name(this); + if (visitor.visitOpt_reloptions) { + return visitor.visitOpt_reloptions(this); } else { return visitor.visitChildren(this); } @@ -87309,32 +61805,41 @@ export class Relation_column_nameContext extends antlr.ParserRuleContext { } -export class Relation_nameContext extends antlr.ParserRuleContext { +export class Reloption_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public collabel(): CollabelContext { + return this.getRuleContext(0, CollabelContext)!; } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); + } + public def_arg(): Def_argContext | null { + return this.getRuleContext(0, Def_argContext); + } + public DOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.DOT, 0); + } + public def_elem(): Def_elemContext | null { + return this.getRuleContext(0, Def_elemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_relation_name; + return PostgreSqlParser.RULE_reloption_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRelation_name) { - listener.enterRelation_name(this); + if(listener.enterReloption_elem) { + listener.enterReloption_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRelation_name) { - listener.exitRelation_name(this); + if(listener.exitReloption_elem) { + listener.exitReloption_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRelation_name) { - return visitor.visitRelation_name(this); + if (visitor.visitReloption_elem) { + return visitor.visitReloption_elem(this); } else { return visitor.visitChildren(this); } @@ -87342,77 +61847,89 @@ export class Relation_nameContext extends antlr.ParserRuleContext { } -export class Any_nameContext extends antlr.ParserRuleContext { +export class PartitionboundspecContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public KW_VALUES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALUES, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_any_name; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAny_name) { - listener.enterAny_name(this); - } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAny_name) { - listener.exitAny_name(this); + public nonreservedword(): NonreservedwordContext[]; + public nonreservedword(i: number): NonreservedwordContext | null; + public nonreservedword(i?: number): NonreservedwordContext[] | NonreservedwordContext | null { + if (i === undefined) { + return this.getRuleContexts(NonreservedwordContext); } + + return this.getRuleContext(i, NonreservedwordContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAny_name) { - return visitor.visitAny_name(this); - } else { - return visitor.visitChildren(this); - } + public Integral(): antlr.TerminalNode[]; + public Integral(i: number): antlr.TerminalNode | null; + public Integral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.Integral); + } else { + return this.getToken(PostgreSqlParser.Integral, i); + } } -} - - -export class AttrsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public DOT(): antlr.TerminalNode[]; - public DOT(i: number): antlr.TerminalNode | null; - public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.DOT); + return this.getTokens(PostgreSqlParser.COMMA); } else { - return this.getToken(PostgreSqlParser.DOT, i); + return this.getToken(PostgreSqlParser.COMMA, i); } } - public attr_name(): Attr_nameContext[]; - public attr_name(i: number): Attr_nameContext | null; - public attr_name(i?: number): Attr_nameContext[] | Attr_nameContext | null { + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public execute_param_clause(): Execute_param_clauseContext[]; + public execute_param_clause(i: number): Execute_param_clauseContext | null; + public execute_param_clause(i?: number): Execute_param_clauseContext[] | Execute_param_clauseContext | null { if (i === undefined) { - return this.getRuleContexts(Attr_nameContext); + return this.getRuleContexts(Execute_param_clauseContext); } - return this.getRuleContext(i, Attr_nameContext); + return this.getRuleContext(i, Execute_param_clauseContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_attrs; + return PostgreSqlParser.RULE_partitionboundspec; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAttrs) { - listener.enterAttrs(this); + if(listener.enterPartitionboundspec) { + listener.enterPartitionboundspec(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAttrs) { - listener.exitAttrs(this); + if(listener.exitPartitionboundspec) { + listener.exitPartitionboundspec(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAttrs) { - return visitor.visitAttrs(this); + if (visitor.visitPartitionboundspec) { + return visitor.visitPartitionboundspec(this); } else { return visitor.visitChildren(this); } @@ -87420,18 +61937,27 @@ export class AttrsContext extends antlr.ParserRuleContext { } -export class Type_name_listContext extends antlr.ParserRuleContext { +export class AltercompositetypestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } + public alter_type_cmd(): Alter_type_cmdContext[]; + public alter_type_cmd(i: number): Alter_type_cmdContext | null; + public alter_type_cmd(i?: number): Alter_type_cmdContext[] | Alter_type_cmdContext | null { if (i === undefined) { - return this.getRuleContexts(TypenameContext); + return this.getRuleContexts(Alter_type_cmdContext); } - return this.getRuleContext(i, TypenameContext); + return this.getRuleContext(i, Alter_type_cmdContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -87443,21 +61969,21 @@ export class Type_name_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_type_name_list; + return PostgreSqlParser.RULE_altercompositetypestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterType_name_list) { - listener.enterType_name_list(this); + if(listener.enterAltercompositetypestmt) { + listener.enterAltercompositetypestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitType_name_list) { - listener.exitType_name_list(this); + if(listener.exitAltercompositetypestmt) { + listener.exitAltercompositetypestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitType_name_list) { - return visitor.visitType_name_list(this); + if (visitor.visitAltercompositetypestmt) { + return visitor.visitAltercompositetypestmt(this); } else { return visitor.visitChildren(this); } @@ -87465,62 +61991,65 @@ export class Type_name_listContext extends antlr.ParserRuleContext { } -export class TruncatestmtContext extends antlr.ParserRuleContext { +export class Alter_type_cmdContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TRUNCATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0)!; - } - public truncate_table(): Truncate_tableContext[]; - public truncate_table(i: number): Truncate_tableContext | null; - public truncate_table(i?: number): Truncate_tableContext[] | Truncate_tableContext | null { - if (i === undefined) { - return this.getRuleContexts(Truncate_tableContext); - } - - return this.getRuleContext(i, Truncate_tableContext); - } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_ATTRIBUTE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ATTRIBUTE, 0)!; } - public KW_IDENTITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); + public tablefuncelement(): TablefuncelementContext | null { + return this.getRuleContext(0, TablefuncelementContext); } public opt_drop_behavior(): Opt_drop_behaviorContext | null { return this.getRuleContext(0, Opt_drop_behaviorContext); } - public KW_CONTINUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONTINUE, 0); + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } - public KW_RESTART(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTART, 0); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); + } + public KW_ALTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALTER, 0); + } + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); + } + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); + } + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_truncatestmt; + return PostgreSqlParser.RULE_alter_type_cmd; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTruncatestmt) { - listener.enterTruncatestmt(this); + if(listener.enterAlter_type_cmd) { + listener.enterAlter_type_cmd(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTruncatestmt) { - listener.exitTruncatestmt(this); + if(listener.exitAlter_type_cmd) { + listener.exitAlter_type_cmd(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTruncatestmt) { - return visitor.visitTruncatestmt(this); + if (visitor.visitAlter_type_cmd) { + return visitor.visitAlter_type_cmd(this); } else { return visitor.visitChildren(this); } @@ -87528,35 +62057,35 @@ export class TruncatestmtContext extends antlr.ParserRuleContext { } -export class Truncate_tableContext extends antlr.ParserRuleContext { +export class CloseportalstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public table_name(): Table_nameContext { - return this.getRuleContext(0, Table_nameContext)!; + public KW_CLOSE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CLOSE, 0)!; } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_truncate_table; + return PostgreSqlParser.RULE_closeportalstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTruncate_table) { - listener.enterTruncate_table(this); + if(listener.enterCloseportalstmt) { + listener.enterCloseportalstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTruncate_table) { - listener.exitTruncate_table(this); + if(listener.exitCloseportalstmt) { + listener.exitCloseportalstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTruncate_table) { - return visitor.visitTruncate_table(this); + if (visitor.visitCloseportalstmt) { + return visitor.visitCloseportalstmt(this); } else { return visitor.visitChildren(this); } @@ -87564,161 +62093,272 @@ export class Truncate_tableContext extends antlr.ParserRuleContext { } -export class CommentstmtContext extends antlr.ParserRuleContext { +export class CopystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COMMENT, 0)!; + public KW_COPY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_COPY, 0)!; } - public KW_ON(): antlr.TerminalNode[]; - public KW_ON(i: number): antlr.TerminalNode | null; - public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_ON); - } else { - return this.getToken(PostgreSqlParser.KW_ON, i); - } + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); } - public object_type_any_name(): Object_type_any_nameContext | null { - return this.getRuleContext(0, Object_type_any_nameContext); + public copy_options(): Copy_optionsContext { + return this.getRuleContext(0, Copy_optionsContext)!; } - public KW_IS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IS, 0)!; + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public comment_text(): Comment_textContext { - return this.getRuleContext(0, Comment_textContext)!; + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLUMN, 0); + public sconst(): SconstContext[]; + public sconst(i: number): SconstContext | null; + public sconst(i?: number): SconstContext[] | SconstContext | null { + if (i === undefined) { + return this.getRuleContexts(SconstContext); + } + + return this.getRuleContext(i, SconstContext); } - public relation_column_name(): Relation_column_nameContext | null { - return this.getRuleContext(0, Relation_column_nameContext); + public KW_STDIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STDIN, 0); } - public object_type_name(): Object_type_nameContext | null { - return this.getRuleContext(0, Object_type_nameContext); + public KW_STDOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STDOUT, 0); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public KW_BINARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BINARY, 0); } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } - - return this.getRuleContext(i, TypenameContext); + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + public KW_PROGRAM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROGRAM, 0); } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); + public KW_DELIMITERS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DELIMITERS, 0); } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { - return this.getRuleContext(0, Aggregate_with_argtypesContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public where_clause(): Where_clauseContext | null { + return this.getRuleContext(0, Where_clauseContext); } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public operator_with_argtypes(): Operator_with_argtypesContext | null { - return this.getRuleContext(0, Operator_with_argtypesContext); + public preparablestmt(): PreparablestmtContext | null { + return this.getRuleContext(0, PreparablestmtContext); } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_copystmt; } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterCopystmt) { + listener.enterCopystmt(this); + } } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitCopystmt) { + listener.exitCopystmt(this); + } } - public KW_POLICY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_POLICY, 0); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitCopystmt) { + return visitor.visitCopystmt(this); + } else { + return visitor.visitChildren(this); + } } - public KW_RULE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RULE, 0); +} + + +export class Copy_optionsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + public KW_BINARY(): antlr.TerminalNode[]; + public KW_BINARY(i: number): antlr.TerminalNode | null; + public KW_BINARY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_BINARY); + } else { + return this.getToken(PostgreSqlParser.KW_BINARY, i); + } } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public KW_FREEZE(): antlr.TerminalNode[]; + public KW_FREEZE(i: number): antlr.TerminalNode | null; + public KW_FREEZE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FREEZE); + } else { + return this.getToken(PostgreSqlParser.KW_FREEZE, i); + } } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); + public sconst(): SconstContext[]; + public sconst(i: number): SconstContext | null; + public sconst(i?: number): SconstContext[] | SconstContext | null { + if (i === undefined) { + return this.getRuleContexts(SconstContext); + } + + return this.getRuleContext(i, SconstContext); } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + public KW_CSV(): antlr.TerminalNode[]; + public KW_CSV(i: number): antlr.TerminalNode | null; + public KW_CSV(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_CSV); + } else { + return this.getToken(PostgreSqlParser.KW_CSV, i); + } } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); + public KW_HEADER(): antlr.TerminalNode[]; + public KW_HEADER(i: number): antlr.TerminalNode | null; + public KW_HEADER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_HEADER); + } else { + return this.getToken(PostgreSqlParser.KW_HEADER, i); + } } - public KW_TRANSFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); + public KW_FORCE(): antlr.TerminalNode[]; + public KW_FORCE(i: number): antlr.TerminalNode | null; + public KW_FORCE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FORCE); + } else { + return this.getToken(PostgreSqlParser.KW_FORCE, i); + } } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public KW_QUOTE(): antlr.TerminalNode[]; + public KW_QUOTE(i: number): antlr.TerminalNode | null; + public KW_QUOTE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_QUOTE); + } else { + return this.getToken(PostgreSqlParser.KW_QUOTE, i); + } } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NULL); + } else { + return this.getToken(PostgreSqlParser.KW_NULL, i); + } } - public KW_CLASS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLASS, 0); + public column_list(): Column_listContext[]; + public column_list(i: number): Column_listContext | null; + public column_list(i?: number): Column_listContext[] | Column_listContext | null { + if (i === undefined) { + return this.getRuleContexts(Column_listContext); + } + + return this.getRuleContext(i, Column_listContext); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); + public KW_ENCODING(): antlr.TerminalNode[]; + public KW_ENCODING(i: number): antlr.TerminalNode | null; + public KW_ENCODING(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ENCODING); + } else { + return this.getToken(PostgreSqlParser.KW_ENCODING, i); + } } - public KW_FAMILY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0); + public KW_DELIMITER(): antlr.TerminalNode[]; + public KW_DELIMITER(i: number): antlr.TerminalNode | null; + public KW_DELIMITER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_DELIMITER); + } else { + return this.getToken(PostgreSqlParser.KW_DELIMITER, i); + } } - public KW_LARGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LARGE, 0); + public KW_ESCAPE(): antlr.TerminalNode[]; + public KW_ESCAPE(i: number): antlr.TerminalNode | null; + public KW_ESCAPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ESCAPE); + } else { + return this.getToken(PostgreSqlParser.KW_ESCAPE, i); + } } - public KW_OBJECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OBJECT, 0); + public STAR(): antlr.TerminalNode[]; + public STAR(i: number): antlr.TerminalNode | null; + public STAR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.STAR); + } else { + return this.getToken(PostgreSqlParser.STAR, i); + } } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public KW_AS(): antlr.TerminalNode[]; + public KW_AS(i: number): antlr.TerminalNode | null; + public KW_AS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_AS); + } else { + return this.getToken(PostgreSqlParser.KW_AS, i); + } } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CAST, 0); + public KW_NOT(): antlr.TerminalNode[]; + public KW_NOT(i: number): antlr.TerminalNode | null; + public KW_NOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NOT); + } else { + return this.getToken(PostgreSqlParser.KW_NOT, i); + } } public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public copy_generic_opt_elem(): Copy_generic_opt_elemContext[]; + public copy_generic_opt_elem(i: number): Copy_generic_opt_elemContext | null; + public copy_generic_opt_elem(i?: number): Copy_generic_opt_elemContext[] | Copy_generic_opt_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Copy_generic_opt_elemContext); + } + + return this.getRuleContext(i, Copy_generic_opt_elemContext); } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_commentstmt; + return PostgreSqlParser.RULE_copy_options; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCommentstmt) { - listener.enterCommentstmt(this); + if(listener.enterCopy_options) { + listener.enterCopy_options(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCommentstmt) { - listener.exitCommentstmt(this); + if(listener.exitCopy_options) { + listener.exitCopy_options(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCommentstmt) { - return visitor.visitCommentstmt(this); + if (visitor.visitCopy_options) { + return visitor.visitCopy_options(this); } else { return visitor.visitChildren(this); } @@ -87726,32 +62366,62 @@ export class CommentstmtContext extends antlr.ParserRuleContext { } -export class Comment_textContext extends antlr.ParserRuleContext { +export class Copy_generic_opt_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public collabel(): CollabelContext { + return this.getRuleContext(0, CollabelContext)!; } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); + public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { + return this.getRuleContext(0, Opt_boolean_or_stringContext); + } + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); + } + public STAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.STAR, 0); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public opt_boolean_or_string_column(): Opt_boolean_or_string_columnContext[]; + public opt_boolean_or_string_column(i: number): Opt_boolean_or_string_columnContext | null; + public opt_boolean_or_string_column(i?: number): Opt_boolean_or_string_columnContext[] | Opt_boolean_or_string_columnContext | null { + if (i === undefined) { + return this.getRuleContexts(Opt_boolean_or_string_columnContext); + } + + return this.getRuleContext(i, Opt_boolean_or_string_columnContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_comment_text; + return PostgreSqlParser.RULE_copy_generic_opt_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterComment_text) { - listener.enterComment_text(this); + if(listener.enterCopy_generic_opt_elem) { + listener.enterCopy_generic_opt_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitComment_text) { - listener.exitComment_text(this); + if(listener.exitCopy_generic_opt_elem) { + listener.exitCopy_generic_opt_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitComment_text) { - return visitor.visitComment_text(this); + if (visitor.visitCopy_generic_opt_elem) { + return visitor.visitCopy_generic_opt_elem(this); } else { return visitor.visitChildren(this); } @@ -87759,98 +62429,95 @@ export class Comment_textContext extends antlr.ParserRuleContext { } -export class SeclabelstmtContext extends antlr.ParserRuleContext { +export class CreatestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SECURITY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SECURITY, 0)!; - } - public KW_LABEL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LABEL, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_createstmt; } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLUMN, 0); + public override copyFrom(ctx: CreatestmtContext): void { + super.copyFrom(ctx); } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); +} +export class ColumnCreateTableContext extends CreatestmtContext { + public constructor(ctx: CreatestmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IS, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public security_label(): Security_labelContext { - return this.getRuleContext(0, Security_labelContext)!; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; } - public opt_provider(): Opt_providerContext | null { - return this.getRuleContext(0, Opt_providerContext); + public table_name_create(): Table_name_createContext { + return this.getRuleContext(0, Table_name_createContext)!; } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OF, 0); } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { - return this.getRuleContext(0, Aggregate_with_argtypesContext); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public partitionboundspec(): PartitionboundspecContext | null { + return this.getRuleContext(0, PartitionboundspecContext); } - public KW_LARGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LARGE, 0); + public opttemp(): OpttempContext | null { + return this.getRuleContext(0, OpttempContext); } - public KW_OBJECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OBJECT, 0); + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public tableelementlist(): TableelementlistContext | null { + return this.getRuleContext(0, TableelementlistContext); } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public optinherit(): OptinheritContext | null { + return this.getRuleContext(0, OptinheritContext); } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); + public partitionspec(): PartitionspecContext | null { + return this.getRuleContext(0, PartitionspecContext); } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); + public optwith(): OptwithContext | null { + return this.getRuleContext(0, OptwithContext); } - public object_type_any_name(): Object_type_any_nameContext | null { - return this.getRuleContext(0, Object_type_any_nameContext); + public oncommitoption(): OncommitoptionContext | null { + return this.getRuleContext(0, OncommitoptionContext); } - public object_type_name(): Object_type_nameContext | null { - return this.getRuleContext(0, Object_type_nameContext); + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_seclabelstmt; + public opttypedtableelementlist(): OpttypedtableelementlistContext | null { + return this.getRuleContext(0, OpttypedtableelementlistContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSeclabelstmt) { - listener.enterSeclabelstmt(this); + if(listener.enterColumnCreateTable) { + listener.enterColumnCreateTable(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSeclabelstmt) { - listener.exitSeclabelstmt(this); + if(listener.exitColumnCreateTable) { + listener.exitColumnCreateTable(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSeclabelstmt) { - return visitor.visitSeclabelstmt(this); + if (visitor.visitColumnCreateTable) { + return visitor.visitColumnCreateTable(this); } else { return visitor.visitChildren(this); } @@ -87858,32 +62525,41 @@ export class SeclabelstmtContext extends antlr.ParserRuleContext { } -export class Opt_providerContext extends antlr.ParserRuleContext { +export class OpttempContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public KW_TEMPORARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext { - return this.getRuleContext(0, Nonreservedword_or_sconstContext)!; + public KW_TEMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMP, 0); + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCAL, 0); + } + public KW_GLOBAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GLOBAL, 0); + } + public KW_UNLOGGED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_provider; + return PostgreSqlParser.RULE_opttemp; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_provider) { - listener.enterOpt_provider(this); + if(listener.enterOpttemp) { + listener.enterOpttemp(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_provider) { - listener.exitOpt_provider(this); + if(listener.exitOpttemp) { + listener.exitOpttemp(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_provider) { - return visitor.visitOpt_provider(this); + if (visitor.visitOpttemp) { + return visitor.visitOpttemp(this); } else { return visitor.visitChildren(this); } @@ -87891,32 +62567,50 @@ export class Opt_providerContext extends antlr.ParserRuleContext { } -export class Security_labelContext extends antlr.ParserRuleContext { +export class OpttypedtableelementlistContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); + public typedtableelement(): TypedtableelementContext[]; + public typedtableelement(i: number): TypedtableelementContext | null; + public typedtableelement(i?: number): TypedtableelementContext[] | TypedtableelementContext | null { + if (i === undefined) { + return this.getRuleContexts(TypedtableelementContext); + } + + return this.getRuleContext(i, TypedtableelementContext); + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_security_label; + return PostgreSqlParser.RULE_opttypedtableelementlist; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSecurity_label) { - listener.enterSecurity_label(this); + if(listener.enterOpttypedtableelementlist) { + listener.enterOpttypedtableelementlist(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSecurity_label) { - listener.exitSecurity_label(this); + if(listener.exitOpttypedtableelementlist) { + listener.exitOpttypedtableelementlist(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSecurity_label) { - return visitor.visitSecurity_label(this); + if (visitor.visitOpttypedtableelementlist) { + return visitor.visitOpttypedtableelementlist(this); } else { return visitor.visitChildren(this); } @@ -87924,35 +62618,44 @@ export class Security_labelContext extends antlr.ParserRuleContext { } -export class FetchstmtContext extends antlr.ParserRuleContext { +export class TableelementlistContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FETCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FETCH, 0); - } - public fetch_args(): Fetch_argsContext { - return this.getRuleContext(0, Fetch_argsContext)!; + public tableelement(): TableelementContext[]; + public tableelement(i: number): TableelementContext | null; + public tableelement(i?: number): TableelementContext[] | TableelementContext | null { + if (i === undefined) { + return this.getRuleContexts(TableelementContext); + } + + return this.getRuleContext(i, TableelementContext); } - public KW_MOVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MOVE, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_fetchstmt; + return PostgreSqlParser.RULE_tableelementlist; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFetchstmt) { - listener.enterFetchstmt(this); + if(listener.enterTableelementlist) { + listener.enterTableelementlist(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFetchstmt) { - listener.exitFetchstmt(this); + if(listener.exitTableelementlist) { + listener.exitTableelementlist(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFetchstmt) { - return visitor.visitFetchstmt(this); + if (visitor.visitTableelementlist) { + return visitor.visitTableelementlist(this); } else { return visitor.visitChildren(this); } @@ -87960,65 +62663,71 @@ export class FetchstmtContext extends antlr.ParserRuleContext { } -export class Fetch_argsContext extends antlr.ParserRuleContext { +export class TableelementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public cursor_name(): Cursor_nameContext { - return this.getRuleContext(0, Cursor_nameContext)!; - } - public from_in(): From_inContext | null { - return this.getRuleContext(0, From_inContext); - } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NEXT, 0); - } - public opt_from_in(): Opt_from_inContext | null { - return this.getRuleContext(0, Opt_from_inContext); - } - public KW_PRIOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIOR, 0); + public column_def(): Column_defContext | null { + return this.getRuleContext(0, Column_defContext); } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FIRST, 0); + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LIKE, 0); } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LAST, 0); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public KW_ABSOLUTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ABSOLUTE, 0); + public tablelikeoption(): TablelikeoptionContext[]; + public tablelikeoption(i: number): TablelikeoptionContext | null; + public tablelikeoption(i?: number): TablelikeoptionContext[] | TablelikeoptionContext | null { + if (i === undefined) { + return this.getRuleContexts(TablelikeoptionContext); + } + + return this.getRuleContext(i, TablelikeoptionContext); } - public signediconst(): SignediconstContext | null { - return this.getRuleContext(0, SignediconstContext); + public KW_INCLUDING(): antlr.TerminalNode[]; + public KW_INCLUDING(i: number): antlr.TerminalNode | null; + public KW_INCLUDING(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_INCLUDING); + } else { + return this.getToken(PostgreSqlParser.KW_INCLUDING, i); + } } - public KW_RELATIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); + public KW_EXCLUDING(): antlr.TerminalNode[]; + public KW_EXCLUDING(i: number): antlr.TerminalNode | null; + public KW_EXCLUDING(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_EXCLUDING); + } else { + return this.getToken(PostgreSqlParser.KW_EXCLUDING, i); + } } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public constraintelem(): ConstraintelemContext | null { + return this.getRuleContext(0, ConstraintelemContext); } - public KW_FORWARD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FORWARD, 0); + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public KW_BACKWARD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BACKWARD, 0); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_fetch_args; + return PostgreSqlParser.RULE_tableelement; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFetch_args) { - listener.enterFetch_args(this); + if(listener.enterTableelement) { + listener.enterTableelement(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFetch_args) { - listener.exitFetch_args(this); + if(listener.exitTableelement) { + listener.exitTableelement(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFetch_args) { - return visitor.visitFetch_args(this); + if (visitor.visitTableelement) { + return visitor.visitTableelement(this); } else { return visitor.visitChildren(this); } @@ -88026,62 +62735,53 @@ export class Fetch_argsContext extends antlr.ParserRuleContext { } -export class From_inContext extends antlr.ParserRuleContext { +export class TypedtableelementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); + public column_name_create(): Column_name_createContext | null { + return this.getRuleContext(0, Column_name_createContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_from_in; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFrom_in) { - listener.enterFrom_in(this); - } + public KW_OPTIONS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTIONS, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFrom_in) { - listener.exitFrom_in(this); + public colconstraint(): ColconstraintContext[]; + public colconstraint(i: number): ColconstraintContext | null; + public colconstraint(i?: number): ColconstraintContext[] | ColconstraintContext | null { + if (i === undefined) { + return this.getRuleContexts(ColconstraintContext); } + + return this.getRuleContext(i, ColconstraintContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFrom_in) { - return visitor.visitFrom_in(this); - } else { - return visitor.visitChildren(this); - } + public constraintelem(): ConstraintelemContext | null { + return this.getRuleContext(0, ConstraintelemContext); } -} - - -export class Opt_from_inContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public from_in(): From_inContext { - return this.getRuleContext(0, From_inContext)!; + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_from_in; + return PostgreSqlParser.RULE_typedtableelement; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_from_in) { - listener.enterOpt_from_in(this); + if(listener.enterTypedtableelement) { + listener.enterTypedtableelement(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_from_in) { - listener.exitOpt_from_in(this); + if(listener.exitTypedtableelement) { + listener.exitTypedtableelement(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_from_in) { - return visitor.visitOpt_from_in(this); + if (visitor.visitTypedtableelement) { + return visitor.visitTypedtableelement(this); } else { return visitor.visitChildren(this); } @@ -88089,104 +62789,83 @@ export class Opt_from_inContext extends antlr.ParserRuleContext { } -export class GrantstmtContext extends antlr.ParserRuleContext { +export class Column_defContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_GRANT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GRANT, 0)!; - } - public privileges(): PrivilegesContext { - return this.getRuleContext(0, PrivilegesContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public privilege_target(): Privilege_targetContext { - return this.getRuleContext(0, Privilege_targetContext)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; - } - public grantee_list(): Grantee_listContext { - return this.getRuleContext(0, Grantee_listContext)!; + public column_name_create(): Column_name_createContext { + return this.getRuleContext(0, Column_name_createContext)!; } - public opt_grant_grant_option(): Opt_grant_grant_optionContext | null { - return this.getRuleContext(0, Opt_grant_grant_optionContext); + public typename(): TypenameContext { + return this.getRuleContext(0, TypenameContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_grantstmt; + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGrantstmt) { - listener.enterGrantstmt(this); - } + public KW_STORAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORAGE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGrantstmt) { - listener.exitGrantstmt(this); - } + public KW_COMPRESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COMPRESSION, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGrantstmt) { - return visitor.visitGrantstmt(this); - } else { - return visitor.visitChildren(this); + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); } - } -} - -export class RevokestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_REVOKE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REVOKE, 0)!; + return this.getRuleContext(i, ColidContext); } - public privileges(): PrivilegesContext { - return this.getRuleContext(0, PrivilegesContext)!; + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public privilege_target(): Privilege_targetContext { - return this.getRuleContext(0, Privilege_targetContext)!; + public KW_OPTIONS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTIONS, 0); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + public colconstraint(): ColconstraintContext[]; + public colconstraint(i: number): ColconstraintContext | null; + public colconstraint(i?: number): ColconstraintContext[] | ColconstraintContext | null { + if (i === undefined) { + return this.getRuleContexts(ColconstraintContext); + } + + return this.getRuleContext(i, ColconstraintContext); } - public grantee_list(): Grantee_listContext { - return this.getRuleContext(0, Grantee_listContext)!; + public KW_PLAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PLAIN, 0); } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public KW_EXTERNAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); } - public KW_GRANT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GRANT, 0); + public KW_EXTENDED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTENDED, 0); } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); + public KW_MAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MAIN, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_revokestmt; + return PostgreSqlParser.RULE_column_def; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRevokestmt) { - listener.enterRevokestmt(this); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterColumn_def) { + listener.enterColumn_def(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRevokestmt) { - listener.exitRevokestmt(this); + if(listener.exitColumn_def) { + listener.exitColumn_def(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRevokestmt) { - return visitor.visitRevokestmt(this); + if (visitor.visitColumn_def) { + return visitor.visitColumn_def(this); } else { return visitor.visitChildren(this); } @@ -88194,47 +62873,50 @@ export class RevokestmtContext extends antlr.ParserRuleContext { } -export class PrivilegesContext extends antlr.ParserRuleContext { +export class ColconstraintContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public privilege_list(): Privilege_listContext | null { - return this.getRuleContext(0, Privilege_listContext); + public colconstraintelem(): ColconstraintelemContext { + return this.getRuleContext(0, ColconstraintelemContext)!; } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIVILEGES, 0); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_DEFERRABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); + public KW_INITIALLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INITIALLY, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_DEFERRED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRED, 0); + } + public KW_IMMEDIATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IMMEDIATE, 0); } - public beforeprivilegeselectlist(): BeforeprivilegeselectlistContext | null { - return this.getRuleContext(0, BeforeprivilegeselectlistContext); + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_privileges; + return PostgreSqlParser.RULE_colconstraint; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPrivileges) { - listener.enterPrivileges(this); + if(listener.enterColconstraint) { + listener.enterColconstraint(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPrivileges) { - listener.exitPrivileges(this); + if(listener.exitColconstraint) { + listener.exitColconstraint(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPrivileges) { - return visitor.visitPrivileges(this); + if (visitor.visitColconstraint) { + return visitor.visitColconstraint(this); } else { return visitor.visitChildren(this); } @@ -88242,155 +62924,128 @@ export class PrivilegesContext extends antlr.ParserRuleContext { } -export class BeforeprivilegeselectlistContext extends antlr.ParserRuleContext { +export class ColconstraintelemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public beforeprivilegeselect(): BeforeprivilegeselectContext[]; - public beforeprivilegeselect(i: number): BeforeprivilegeselectContext | null; - public beforeprivilegeselect(i?: number): BeforeprivilegeselectContext[] | BeforeprivilegeselectContext | null { - if (i === undefined) { - return this.getRuleContexts(BeforeprivilegeselectContext); - } - - return this.getRuleContext(i, BeforeprivilegeselectContext); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_beforeprivilegeselectlist; + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterBeforeprivilegeselectlist) { - listener.enterBeforeprivilegeselectlist(this); - } + public opt_definition(): Opt_definitionContext | null { + return this.getRuleContext(0, Opt_definitionContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitBeforeprivilegeselectlist) { - listener.exitBeforeprivilegeselectlist(this); - } + public optconstablespace(): OptconstablespaceContext | null { + return this.getRuleContext(0, OptconstablespaceContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitBeforeprivilegeselectlist) { - return visitor.visitBeforeprivilegeselectlist(this); - } else { - return visitor.visitChildren(this); - } + public KW_NULLS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULLS, 0); } -} - - -export class BeforeprivilegeselectContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); } - public KW_SELECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SELECT, 0); + public KW_INCLUDE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INCLUDE, 0); } - public KW_INSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSERT, 0); + public index_params(): Index_paramsContext | null { + return this.getRuleContext(0, Index_paramsContext); } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + public with_clause(): With_clauseContext | null { + return this.getRuleContext(0, With_clauseContext); } - public KW_DELETE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DELETE, 0); + public KW_PRIMARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIMARY, 0); } - public KW_TRUNCATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0); + public KW_KEY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_KEY, 0); } - public KW_PEFERENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PEFERENCES, 0); + public KW_CHECK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHECK, 0); } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_USAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USAGE, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public KW_CREATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATE, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_CONNECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONNECT, 0); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } - public KW_TEMPORARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); + public KW_INHERIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INHERIT, 0); } - public KW_TEMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMP, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public KW_EXECUTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXECUTE, 0); + public primaryExpression(): PrimaryExpressionContext | null { + return this.getRuleContext(0, PrimaryExpressionContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_beforeprivilegeselect; + public KW_GENERATED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GENERATED, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterBeforeprivilegeselect) { - listener.enterBeforeprivilegeselect(this); - } + public generated_when(): Generated_whenContext | null { + return this.getRuleContext(0, Generated_whenContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitBeforeprivilegeselect) { - listener.exitBeforeprivilegeselect(this); - } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitBeforeprivilegeselect) { - return visitor.visitBeforeprivilegeselect(this); - } else { - return visitor.visitChildren(this); - } + public KW_IDENTITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); } -} - - -export class Privilege_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_STORED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORED, 0); } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { + public seqoptelem(): SeqoptelemContext[]; + public seqoptelem(i: number): SeqoptelemContext | null; + public seqoptelem(i?: number): SeqoptelemContext[] | SeqoptelemContext | null { if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); + return this.getRuleContexts(SeqoptelemContext); } - return this.getRuleContext(i, PrivilegeContext); + return this.getRuleContext(i, SeqoptelemContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_REFERENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); + } + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); + } + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); + } + public key_match(): Key_matchContext | null { + return this.getRuleContext(0, Key_matchContext); + } + public key_actions(): Key_actionsContext | null { + return this.getRuleContext(0, Key_actionsContext); + } + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_privilege_list; + return PostgreSqlParser.RULE_colconstraintelem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPrivilege_list) { - listener.enterPrivilege_list(this); + if(listener.enterColconstraintelem) { + listener.enterColconstraintelem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPrivilege_list) { - listener.exitPrivilege_list(this); + if(listener.exitColconstraintelem) { + listener.exitColconstraintelem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPrivilege_list) { - return visitor.visitPrivilege_list(this); + if (visitor.visitColconstraintelem) { + return visitor.visitColconstraintelem(this); } else { return visitor.visitChildren(this); } @@ -88398,41 +63053,35 @@ export class Privilege_listContext extends antlr.ParserRuleContext { } -export class PrivilegeContext extends antlr.ParserRuleContext { +export class Generated_whenContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SELECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SELECT, 0); - } - public opt_column_list(): Opt_column_listContext | null { - return this.getRuleContext(0, Opt_column_listContext); - } - public KW_REFERENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); + public KW_ALWAYS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALWAYS, 0); } - public KW_CREATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATE, 0); + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_privilege; + return PostgreSqlParser.RULE_generated_when; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPrivilege) { - listener.enterPrivilege(this); + if(listener.enterGenerated_when) { + listener.enterGenerated_when(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPrivilege) { - listener.exitPrivilege(this); + if(listener.exitGenerated_when) { + listener.exitGenerated_when(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPrivilege) { - return visitor.visitPrivilege(this); + if (visitor.visitGenerated_when) { + return visitor.visitGenerated_when(this); } else { return visitor.visitChildren(this); } @@ -88440,131 +63089,53 @@ export class PrivilegeContext extends antlr.ParserRuleContext { } -export class Privilege_targetContext extends antlr.ParserRuleContext { +export class TablelikeoptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public qualified_name_list(): Qualified_name_listContext | null { - return this.getRuleContext(0, Qualified_name_listContext); - } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); - } - public table_name_list(): Table_name_listContext | null { - return this.getRuleContext(0, Table_name_listContext); - } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); - } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); - } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATA, 0); - } - public KW_WRAPPER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); - } - public name_list(): Name_listContext | null { - return this.getRuleContext(0, Name_listContext); - } - public KW_SERVER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERVER, 0); - } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); - } - public function_with_argtypes_list(): Function_with_argtypes_listContext | null { - return this.getRuleContext(0, Function_with_argtypes_listContext); - } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); - } - public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext | null { - return this.getRuleContext(0, Procedure_with_argtypes_listContext); - } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); - } - public routine_with_argtypes_list(): Routine_with_argtypes_listContext | null { - return this.getRuleContext(0, Routine_with_argtypes_listContext); - } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); - } - public database_nameList(): Database_nameListContext | null { - return this.getRuleContext(0, Database_nameListContext); - } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); - } - public any_name_list(): Any_name_listContext | null { - return this.getRuleContext(0, Any_name_listContext); - } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); - } - public KW_LARGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LARGE, 0); + public KW_COMMENTS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COMMENTS, 0); } - public KW_OBJECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OBJECT, 0); + public KW_CONSTRAINTS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINTS, 0); } - public numericonly_list(): Numericonly_listContext | null { - return this.getRuleContext(0, Numericonly_listContext); + public KW_DEFAULTS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULTS, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + public KW_IDENTITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); } - public schema_name_list(): Schema_name_listContext | null { - return this.getRuleContext(0, Schema_name_listContext); + public KW_GENERATED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GENERATED, 0); } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); + public KW_INDEXES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEXES, 0); } - public tablespace_name_list(): Tablespace_name_listContext | null { - return this.getRuleContext(0, Tablespace_name_listContext); + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public KW_STORAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORAGE, 0); } public KW_ALL(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_TABLES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLES, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_SEQUENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); - } - public KW_FUNCTIONS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTIONS, 0); - } - public KW_PROCEDURES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURES, 0); - } - public KW_ROUTINES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINES, 0); - } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_privilege_target; + return PostgreSqlParser.RULE_tablelikeoption; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPrivilege_target) { - listener.enterPrivilege_target(this); + if(listener.enterTablelikeoption) { + listener.enterTablelikeoption(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPrivilege_target) { - listener.exitPrivilege_target(this); + if(listener.exitTablelikeoption) { + listener.exitTablelikeoption(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPrivilege_target) { - return visitor.visitPrivilege_target(this); + if (visitor.visitTablelikeoption) { + return visitor.visitTablelikeoption(this); } else { return visitor.visitChildren(this); } @@ -88572,18 +63143,87 @@ export class Privilege_targetContext extends antlr.ParserRuleContext { } -export class Grantee_listContext extends antlr.ParserRuleContext { +export class ConstraintelemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public grantee(): GranteeContext[]; - public grantee(i: number): GranteeContext | null; - public grantee(i?: number): GranteeContext[] | GranteeContext | null { + public KW_CHECK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHECK, 0); + } + public OPEN_PAREN(): antlr.TerminalNode[]; + public OPEN_PAREN(i: number): antlr.TerminalNode | null; + public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.OPEN_PAREN); + } else { + return this.getToken(PostgreSqlParser.OPEN_PAREN, i); + } + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public CLOSE_PAREN(): antlr.TerminalNode[]; + public CLOSE_PAREN(i: number): antlr.TerminalNode | null; + public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.CLOSE_PAREN); + } else { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); + } + } + public constraintattributeElem(): ConstraintattributeElemContext[]; + public constraintattributeElem(i: number): ConstraintattributeElemContext | null; + public constraintattributeElem(i?: number): ConstraintattributeElemContext[] | ConstraintattributeElemContext | null { + if (i === undefined) { + return this.getRuleContexts(ConstraintattributeElemContext); + } + + return this.getRuleContext(i, ConstraintattributeElemContext); + } + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); + } + public opt_column_list(): Opt_column_listContext[]; + public opt_column_list(i: number): Opt_column_listContext | null; + public opt_column_list(i?: number): Opt_column_listContext[] | Opt_column_listContext | null { + if (i === undefined) { + return this.getRuleContexts(Opt_column_listContext); + } + + return this.getRuleContext(i, Opt_column_listContext); + } + public existingindex(): ExistingindexContext | null { + return this.getRuleContext(0, ExistingindexContext); + } + public KW_PRIMARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIMARY, 0); + } + public KW_KEY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_KEY, 0); + } + public opt_c_include(): Opt_c_includeContext | null { + return this.getRuleContext(0, Opt_c_includeContext); + } + public opt_definition(): Opt_definitionContext | null { + return this.getRuleContext(0, Opt_definitionContext); + } + public optconstablespace(): OptconstablespaceContext | null { + return this.getRuleContext(0, OptconstablespaceContext); + } + public KW_EXCLUDE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCLUDE, 0); + } + public exclusionconstraintelem(): ExclusionconstraintelemContext[]; + public exclusionconstraintelem(i: number): ExclusionconstraintelemContext | null; + public exclusionconstraintelem(i?: number): ExclusionconstraintelemContext[] | ExclusionconstraintelemContext | null { if (i === undefined) { - return this.getRuleContexts(GranteeContext); + return this.getRuleContexts(ExclusionconstraintelemContext); } - return this.getRuleContext(i, GranteeContext); + return this.getRuleContext(i, ExclusionconstraintelemContext); + } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -88594,22 +63234,40 @@ export class Grantee_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHERE, 0); + } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + } + public KW_REFERENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); + } + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); + } + public key_match(): Key_matchContext | null { + return this.getRuleContext(0, Key_matchContext); + } + public key_actions(): Key_actionsContext | null { + return this.getRuleContext(0, Key_actionsContext); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_grantee_list; + return PostgreSqlParser.RULE_constraintelem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGrantee_list) { - listener.enterGrantee_list(this); + if(listener.enterConstraintelem) { + listener.enterConstraintelem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGrantee_list) { - listener.exitGrantee_list(this); + if(listener.exitConstraintelem) { + listener.exitConstraintelem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGrantee_list) { - return visitor.visitGrantee_list(this); + if (visitor.visitConstraintelem) { + return visitor.visitConstraintelem(this); } else { return visitor.visitChildren(this); } @@ -88617,32 +63275,35 @@ export class Grantee_listContext extends antlr.ParserRuleContext { } -export class GranteeContext extends antlr.ParserRuleContext { +export class Opt_column_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); + public column_list(): Column_listContext { + return this.getRuleContext(0, Column_listContext)!; + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_grantee; + return PostgreSqlParser.RULE_opt_column_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGrantee) { - listener.enterGrantee(this); + if(listener.enterOpt_column_list) { + listener.enterOpt_column_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGrantee) { - listener.exitGrantee(this); + if(listener.exitOpt_column_list) { + listener.exitOpt_column_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGrantee) { - return visitor.visitGrantee(this); + if (visitor.visitOpt_column_list) { + return visitor.visitOpt_column_list(this); } else { return visitor.visitChildren(this); } @@ -88650,35 +63311,50 @@ export class GranteeContext extends antlr.ParserRuleContext { } -export class Opt_grant_grant_optionContext extends antlr.ParserRuleContext { +export class Opt_column_list_createContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public column_name_create(): Column_name_createContext[]; + public column_name_create(i: number): Column_name_createContext | null; + public column_name_create(i?: number): Column_name_createContext[] | Column_name_createContext | null { + if (i === undefined) { + return this.getRuleContexts(Column_name_createContext); + } + + return this.getRuleContext(i, Column_name_createContext); } - public KW_GRANT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GRANT, 0)!; + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public KW_OPTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPTION, 0)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_grant_grant_option; + return PostgreSqlParser.RULE_opt_column_list_create; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_grant_grant_option) { - listener.enterOpt_grant_grant_option(this); + if(listener.enterOpt_column_list_create) { + listener.enterOpt_column_list_create(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_grant_grant_option) { - listener.exitOpt_grant_grant_option(this); + if(listener.exitOpt_column_list_create) { + listener.exitOpt_column_list_create(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_grant_grant_option) { - return visitor.visitOpt_grant_grant_option(this); + if (visitor.visitOpt_column_list_create) { + return visitor.visitOpt_column_list_create(this); } else { return visitor.visitChildren(this); } @@ -88686,44 +63362,44 @@ export class Opt_grant_grant_optionContext extends antlr.ParserRuleContext { } -export class GrantrolestmtContext extends antlr.ParserRuleContext { +export class Column_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_GRANT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GRANT, 0)!; - } - public privilege_list(): Privilege_listContext { - return this.getRuleContext(0, Privilege_listContext)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; - } - public role_list(): Role_listContext { - return this.getRuleContext(0, Role_listContext)!; - } - public opt_grant_admin_option(): Opt_grant_admin_optionContext | null { - return this.getRuleContext(0, Opt_grant_admin_optionContext); + public column_name(): Column_nameContext[]; + public column_name(i: number): Column_nameContext | null; + public column_name(i?: number): Column_nameContext[] | Column_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(Column_nameContext); + } + + return this.getRuleContext(i, Column_nameContext); } - public opt_granted_by(): Opt_granted_byContext | null { - return this.getRuleContext(0, Opt_granted_byContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_grantrolestmt; + return PostgreSqlParser.RULE_column_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGrantrolestmt) { - listener.enterGrantrolestmt(this); + if(listener.enterColumn_list) { + listener.enterColumn_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGrantrolestmt) { - listener.exitGrantrolestmt(this); + if(listener.exitColumn_list) { + listener.exitColumn_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGrantrolestmt) { - return visitor.visitGrantrolestmt(this); + if (visitor.visitColumn_list) { + return visitor.visitColumn_list(this); } else { return visitor.visitChildren(this); } @@ -88731,53 +63407,32 @@ export class GrantrolestmtContext extends antlr.ParserRuleContext { } -export class RevokerolestmtContext extends antlr.ParserRuleContext { +export class Opt_c_includeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_REVOKE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REVOKE, 0)!; - } - public privilege_list(): Privilege_listContext { - return this.getRuleContext(0, Privilege_listContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; - } - public role_list(): Role_listContext { - return this.getRuleContext(0, Role_listContext)!; - } - public opt_granted_by(): Opt_granted_byContext | null { - return this.getRuleContext(0, Opt_granted_byContext); - } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADMIN, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); + public KW_INCLUDE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INCLUDE, 0)!; } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public opt_column_list(): Opt_column_listContext { + return this.getRuleContext(0, Opt_column_listContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_revokerolestmt; + return PostgreSqlParser.RULE_opt_c_include; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRevokerolestmt) { - listener.enterRevokerolestmt(this); + if(listener.enterOpt_c_include) { + listener.enterOpt_c_include(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRevokerolestmt) { - listener.exitRevokerolestmt(this); + if(listener.exitOpt_c_include) { + listener.exitOpt_c_include(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRevokerolestmt) { - return visitor.visitRevokerolestmt(this); + if (visitor.visitOpt_c_include) { + return visitor.visitOpt_c_include(this); } else { return visitor.visitChildren(this); } @@ -88785,35 +63440,38 @@ export class RevokerolestmtContext extends antlr.ParserRuleContext { } -export class Opt_grant_admin_optionContext extends antlr.ParserRuleContext { +export class Key_matchContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public KW_MATCH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MATCH, 0)!; + } + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FULL, 0); } - public KW_ADMIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ADMIN, 0)!; + public KW_PARTIAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTIAL, 0); } - public KW_OPTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPTION, 0)!; + public KW_SIMPLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SIMPLE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_grant_admin_option; + return PostgreSqlParser.RULE_key_match; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_grant_admin_option) { - listener.enterOpt_grant_admin_option(this); + if(listener.enterKey_match) { + listener.enterKey_match(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_grant_admin_option) { - listener.exitOpt_grant_admin_option(this); + if(listener.exitKey_match) { + listener.exitKey_match(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_grant_admin_option) { - return visitor.visitOpt_grant_admin_option(this); + if (visitor.visitKey_match) { + return visitor.visitKey_match(this); } else { return visitor.visitChildren(this); } @@ -88821,35 +63479,44 @@ export class Opt_grant_admin_optionContext extends antlr.ParserRuleContext { } -export class Opt_granted_byContext extends antlr.ParserRuleContext { +export class ExclusionconstraintelemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_GRANTED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GRANTED, 0)!; + public index_elem(): Index_elemContext { + return this.getRuleContext(0, Index_elemContext)!; } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; + public any_operator(): Any_operatorContext | null { + return this.getRuleContext(0, Any_operatorContext); + } + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_granted_by; + return PostgreSqlParser.RULE_exclusionconstraintelem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_granted_by) { - listener.enterOpt_granted_by(this); + if(listener.enterExclusionconstraintelem) { + listener.enterExclusionconstraintelem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_granted_by) { - listener.exitOpt_granted_by(this); + if(listener.exitExclusionconstraintelem) { + listener.exitExclusionconstraintelem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_granted_by) { - return visitor.visitOpt_granted_by(this); + if (visitor.visitExclusionconstraintelem) { + return visitor.visitExclusionconstraintelem(this); } else { return visitor.visitChildren(this); } @@ -88857,41 +63524,32 @@ export class Opt_granted_byContext extends antlr.ParserRuleContext { } -export class AlterdefaultprivilegesstmtContext extends antlr.ParserRuleContext { +export class Key_actionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_DEFAULT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0)!; - } - public KW_PRIVILEGES(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PRIVILEGES, 0)!; - } - public defacloptionlist(): DefacloptionlistContext { - return this.getRuleContext(0, DefacloptionlistContext)!; + public key_update(): Key_updateContext | null { + return this.getRuleContext(0, Key_updateContext); } - public defaclaction(): DefaclactionContext { - return this.getRuleContext(0, DefaclactionContext)!; + public key_delete(): Key_deleteContext | null { + return this.getRuleContext(0, Key_deleteContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterdefaultprivilegesstmt; + return PostgreSqlParser.RULE_key_actions; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterdefaultprivilegesstmt) { - listener.enterAlterdefaultprivilegesstmt(this); + if(listener.enterKey_actions) { + listener.enterKey_actions(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterdefaultprivilegesstmt) { - listener.exitAlterdefaultprivilegesstmt(this); + if(listener.exitKey_actions) { + listener.exitKey_actions(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterdefaultprivilegesstmt) { - return visitor.visitAlterdefaultprivilegesstmt(this); + if (visitor.visitKey_actions) { + return visitor.visitKey_actions(this); } else { return visitor.visitChildren(this); } @@ -88899,35 +63557,35 @@ export class AlterdefaultprivilegesstmtContext extends antlr.ParserRuleContext { } -export class DefacloptionlistContext extends antlr.ParserRuleContext { +export class Key_updateContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public defacloption(): DefacloptionContext[]; - public defacloption(i: number): DefacloptionContext | null; - public defacloption(i?: number): DefacloptionContext[] | DefacloptionContext | null { - if (i === undefined) { - return this.getRuleContexts(DefacloptionContext); - } - - return this.getRuleContext(i, DefacloptionContext); + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; + } + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0)!; + } + public key_action(): Key_actionContext { + return this.getRuleContext(0, Key_actionContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_defacloptionlist; + return PostgreSqlParser.RULE_key_update; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefacloptionlist) { - listener.enterDefacloptionlist(this); + if(listener.enterKey_update) { + listener.enterKey_update(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefacloptionlist) { - listener.exitDefacloptionlist(this); + if(listener.exitKey_update) { + listener.exitKey_update(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefacloptionlist) { - return visitor.visitDefacloptionlist(this); + if (visitor.visitKey_update) { + return visitor.visitKey_update(this); } else { return visitor.visitChildren(this); } @@ -88935,47 +63593,35 @@ export class DefacloptionlistContext extends antlr.ParserRuleContext { } -export class DefacloptionContext extends antlr.ParserRuleContext { +export class Key_deleteContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name_list(): Schema_name_listContext | null { - return this.getRuleContext(0, Schema_name_listContext); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public role_list(): Role_listContext | null { - return this.getRuleContext(0, Role_listContext); + public KW_DELETE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DELETE, 0)!; } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); + public key_action(): Key_actionContext { + return this.getRuleContext(0, Key_actionContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_defacloption; + return PostgreSqlParser.RULE_key_delete; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefacloption) { - listener.enterDefacloption(this); + if(listener.enterKey_delete) { + listener.enterKey_delete(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefacloption) { - listener.exitDefacloption(this); + if(listener.exitKey_delete) { + listener.exitKey_delete(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefacloption) { - return visitor.visitDefacloption(this); + if (visitor.visitKey_delete) { + return visitor.visitKey_delete(this); } else { return visitor.visitChildren(this); } @@ -88983,62 +63629,50 @@ export class DefacloptionContext extends antlr.ParserRuleContext { } -export class DefaclactionContext extends antlr.ParserRuleContext { +export class Key_actionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_GRANT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GRANT, 0); - } - public privileges(): PrivilegesContext { - return this.getRuleContext(0, PrivilegesContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; - } - public defacl_privilege_target(): Defacl_privilege_targetContext { - return this.getRuleContext(0, Defacl_privilege_targetContext)!; - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } - public grantee_list(): Grantee_listContext { - return this.getRuleContext(0, Grantee_listContext)!; + public KW_ACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ACTION, 0); } - public opt_grant_grant_option(): Opt_grant_grant_optionContext | null { - return this.getRuleContext(0, Opt_grant_grant_optionContext); + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); } - public KW_REVOKE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REVOKE, 0); + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CASCADE, 0); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public column_list(): Column_listContext | null { + return this.getRuleContext(0, Column_listContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_defaclaction; + return PostgreSqlParser.RULE_key_action; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefaclaction) { - listener.enterDefaclaction(this); + if(listener.enterKey_action) { + listener.enterKey_action(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefaclaction) { - listener.exitDefaclaction(this); + if(listener.exitKey_action) { + listener.exitKey_action(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefaclaction) { - return visitor.visitDefaclaction(this); + if (visitor.visitKey_action) { + return visitor.visitKey_action(this); } else { return visitor.visitChildren(this); } @@ -89046,44 +63680,38 @@ export class DefaclactionContext extends antlr.ParserRuleContext { } -export class Defacl_privilege_targetContext extends antlr.ParserRuleContext { +export class OptinheritContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TABLES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLES, 0); - } - public KW_FUNCTIONS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTIONS, 0); - } - public KW_ROUTINES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINES, 0); + public KW_INHERITS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INHERITS, 0)!; } - public KW_SEQUENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_TYPES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPES, 0); + public qualified_name_list(): Qualified_name_listContext { + return this.getRuleContext(0, Qualified_name_listContext)!; } - public KW_SCHEMAS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMAS, 0); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_defacl_privilege_target; + return PostgreSqlParser.RULE_optinherit; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefacl_privilege_target) { - listener.enterDefacl_privilege_target(this); + if(listener.enterOptinherit) { + listener.enterOptinherit(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefacl_privilege_target) { - listener.exitDefacl_privilege_target(this); + if(listener.exitOptinherit) { + listener.exitOptinherit(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefacl_privilege_target) { - return visitor.visitDefacl_privilege_target(this); + if (visitor.visitOptinherit) { + return visitor.visitOptinherit(this); } else { return visitor.visitChildren(this); } @@ -89091,77 +63719,59 @@ export class Defacl_privilege_targetContext extends antlr.ParserRuleContext { } -export class IndexstmtContext extends antlr.ParserRuleContext { +export class PartitionspecContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_INDEX(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INDEX, 0)!; + public KW_PARTITION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; + public KW_BY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BY, 0)!; } - public relation_expr(): Relation_exprContext { - return this.getRuleContext(0, Relation_exprContext)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } public OPEN_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public index_params(): Index_paramsContext { - return this.getRuleContext(0, Index_paramsContext)!; + public part_elem(): Part_elemContext[]; + public part_elem(i: number): Part_elemContext | null; + public part_elem(i?: number): Part_elemContext[] | Part_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Part_elemContext); + } + + return this.getRuleContext(i, Part_elemContext); } public CLOSE_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public opt_unique(): Opt_uniqueContext | null { - return this.getRuleContext(0, Opt_uniqueContext); - } - public opt_concurrently(): Opt_concurrentlyContext | null { - return this.getRuleContext(0, Opt_concurrentlyContext); - } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); - } - public opt_index_name(): Opt_index_nameContext | null { - return this.getRuleContext(0, Opt_index_nameContext); - } - public access_method_clause(): Access_method_clauseContext | null { - return this.getRuleContext(0, Access_method_clauseContext); - } - public opt_include(): Opt_includeContext | null { - return this.getRuleContext(0, Opt_includeContext); - } - public nulls_distinct(): Nulls_distinctContext | null { - return this.getRuleContext(0, Nulls_distinctContext); - } - public opt_reloptions(): Opt_reloptionsContext | null { - return this.getRuleContext(0, Opt_reloptionsContext); - } - public opttablespace(): OpttablespaceContext | null { - return this.getRuleContext(0, OpttablespaceContext); - } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_indexstmt; + return PostgreSqlParser.RULE_partitionspec; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndexstmt) { - listener.enterIndexstmt(this); + if(listener.enterPartitionspec) { + listener.enterPartitionspec(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndexstmt) { - listener.exitIndexstmt(this); + if(listener.exitPartitionspec) { + listener.exitPartitionspec(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndexstmt) { - return visitor.visitIndexstmt(this); + if (visitor.visitPartitionspec) { + return visitor.visitPartitionspec(this); } else { return visitor.visitChildren(this); } @@ -89169,59 +63779,47 @@ export class IndexstmtContext extends antlr.ParserRuleContext { } -export class Opt_uniqueContext extends antlr.ParserRuleContext { +export class Part_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_UNIQUE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UNIQUE, 0)!; + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_unique; + public func_expr_windowless(): Func_expr_windowlessContext | null { + return this.getRuleContext(0, Func_expr_windowlessContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_unique) { - listener.enterOpt_unique(this); - } + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_unique) { - listener.exitOpt_unique(this); - } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_unique) { - return visitor.visitOpt_unique(this); - } else { - return visitor.visitChildren(this); - } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } -} - - -export class Opt_concurrentlyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public KW_CONCURRENTLY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0)!; + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_concurrently; + return PostgreSqlParser.RULE_part_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_concurrently) { - listener.enterOpt_concurrently(this); + if(listener.enterPart_elem) { + listener.enterPart_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_concurrently) { - listener.exitOpt_concurrently(this); + if(listener.exitPart_elem) { + listener.exitPart_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_concurrently) { - return visitor.visitOpt_concurrently(this); + if (visitor.visitPart_elem) { + return visitor.visitPart_elem(this); } else { return visitor.visitChildren(this); } @@ -89229,29 +63827,32 @@ export class Opt_concurrentlyContext extends antlr.ParserRuleContext { } -export class Opt_index_nameContext extends antlr.ParserRuleContext { +export class Table_access_method_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_USING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USING, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_index_name; + return PostgreSqlParser.RULE_table_access_method_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_index_name) { - listener.enterOpt_index_name(this); + if(listener.enterTable_access_method_clause) { + listener.enterTable_access_method_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_index_name) { - listener.exitOpt_index_name(this); + if(listener.exitTable_access_method_clause) { + listener.exitTable_access_method_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_index_name) { - return visitor.visitOpt_index_name(this); + if (visitor.visitTable_access_method_clause) { + return visitor.visitTable_access_method_clause(this); } else { return visitor.visitChildren(this); } @@ -89259,32 +63860,38 @@ export class Opt_index_nameContext extends antlr.ParserRuleContext { } -export class Access_method_clauseContext extends antlr.ParserRuleContext { +export class OptwithContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public reloptions(): ReloptionsContext | null { + return this.getRuleContext(0, ReloptionsContext); + } + public KW_OIDS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OIDS, 0); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_access_method_clause; + return PostgreSqlParser.RULE_optwith; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAccess_method_clause) { - listener.enterAccess_method_clause(this); + if(listener.enterOptwith) { + listener.enterOptwith(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAccess_method_clause) { - listener.exitAccess_method_clause(this); + if(listener.exitOptwith) { + listener.exitOptwith(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAccess_method_clause) { - return visitor.visitAccess_method_clause(this); + if (visitor.visitOptwith) { + return visitor.visitOptwith(this); } else { return visitor.visitChildren(this); } @@ -89292,44 +63899,44 @@ export class Access_method_clauseContext extends antlr.ParserRuleContext { } -export class Index_paramsContext extends antlr.ParserRuleContext { +export class OncommitoptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public index_elem(): Index_elemContext[]; - public index_elem(i: number): Index_elemContext | null; - public index_elem(i?: number): Index_elemContext[] | Index_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Index_elemContext); - } - - return this.getRuleContext(i, Index_elemContext); + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_COMMIT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_COMMIT, 0)!; + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); + } + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DELETE, 0); + } + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); + } + public KW_PRESERVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRESERVE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_params; + return PostgreSqlParser.RULE_oncommitoption; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_params) { - listener.enterIndex_params(this); + if(listener.enterOncommitoption) { + listener.enterOncommitoption(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_params) { - listener.exitIndex_params(this); + if(listener.exitOncommitoption) { + listener.exitOncommitoption(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_params) { - return visitor.visitIndex_params(this); + if (visitor.visitOncommitoption) { + return visitor.visitOncommitoption(this); } else { return visitor.visitChildren(this); } @@ -89337,44 +63944,32 @@ export class Index_paramsContext extends antlr.ParserRuleContext { } -export class Index_elem_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_collate(): Opt_collateContext | null { - return this.getRuleContext(0, Opt_collateContext); - } - public opt_class(): Opt_classContext | null { - return this.getRuleContext(0, Opt_classContext); - } - public opt_asc_desc(): Opt_asc_descContext | null { - return this.getRuleContext(0, Opt_asc_descContext); - } - public opt_nulls_order(): Opt_nulls_orderContext | null { - return this.getRuleContext(0, Opt_nulls_orderContext); +export class OpttablespaceContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); + public KW_TABLESPACE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0)!; } - public reloptions(): ReloptionsContext | null { - return this.getRuleContext(0, ReloptionsContext); + public tablespace_name(): Tablespace_nameContext { + return this.getRuleContext(0, Tablespace_nameContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_elem_options; + return PostgreSqlParser.RULE_opttablespace; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_elem_options) { - listener.enterIndex_elem_options(this); + if(listener.enterOpttablespace) { + listener.enterOpttablespace(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_elem_options) { - listener.exitIndex_elem_options(this); + if(listener.exitOpttablespace) { + listener.exitOpttablespace(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_elem_options) { - return visitor.visitIndex_elem_options(this); + if (visitor.visitOpttablespace) { + return visitor.visitOpttablespace(this); } else { return visitor.visitChildren(this); } @@ -89382,44 +63977,35 @@ export class Index_elem_optionsContext extends antlr.ParserRuleContext { } -export class Index_elemContext extends antlr.ParserRuleContext { +export class OptconstablespaceContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); - } - public index_elem_options(): Index_elem_optionsContext { - return this.getRuleContext(0, Index_elem_optionsContext)!; - } - public func_expr_windowless(): Func_expr_windowlessContext | null { - return this.getRuleContext(0, Func_expr_windowlessContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_USING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USING, 0)!; } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public KW_INDEX(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INDEX, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public opttablespace(): OpttablespaceContext { + return this.getRuleContext(0, OpttablespaceContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_elem; + return PostgreSqlParser.RULE_optconstablespace; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_elem) { - listener.enterIndex_elem(this); + if(listener.enterOptconstablespace) { + listener.enterOptconstablespace(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_elem) { - listener.exitIndex_elem(this); + if(listener.exitOptconstablespace) { + listener.exitOptconstablespace(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_elem) { - return visitor.visitIndex_elem(this); + if (visitor.visitOptconstablespace) { + return visitor.visitOptconstablespace(this); } else { return visitor.visitChildren(this); } @@ -89427,38 +64013,35 @@ export class Index_elemContext extends antlr.ParserRuleContext { } -export class Opt_includeContext extends antlr.ParserRuleContext { +export class ExistingindexContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_INCLUDE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INCLUDE, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_USING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USING, 0)!; } - public index_including_params(): Index_including_paramsContext { - return this.getRuleContext(0, Index_including_paramsContext)!; + public KW_INDEX(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INDEX, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_include; + return PostgreSqlParser.RULE_existingindex; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_include) { - listener.enterOpt_include(this); + if(listener.enterExistingindex) { + listener.enterExistingindex(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_include) { - listener.exitOpt_include(this); + if(listener.exitExistingindex) { + listener.exitExistingindex(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_include) { - return visitor.visitOpt_include(this); + if (visitor.visitExistingindex) { + return visitor.visitExistingindex(this); } else { return visitor.visitChildren(this); } @@ -89466,18 +64049,39 @@ export class Opt_includeContext extends antlr.ParserRuleContext { } -export class Index_including_paramsContext extends antlr.ParserRuleContext { +export class CreatestatsstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public index_elem(): Index_elemContext[]; - public index_elem(i: number): Index_elemContext | null; - public index_elem(i?: number): Index_elemContext[] | Index_elemContext | null { + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_STATISTICS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; + } + public from_clause(): From_clauseContext { + return this.getRuleContext(0, From_clauseContext)!; + } + public column_expr(): Column_exprContext[]; + public column_expr(i: number): Column_exprContext | null; + public column_expr(i?: number): Column_exprContext[] | Column_exprContext | null { if (i === undefined) { - return this.getRuleContexts(Index_elemContext); + return this.getRuleContexts(Column_exprContext); } - return this.getRuleContext(i, Index_elemContext); + return this.getRuleContext(i, Column_exprContext); + } + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); + } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -89488,22 +64092,25 @@ export class Index_including_paramsContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_including_params; + return PostgreSqlParser.RULE_createstatsstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_including_params) { - listener.enterIndex_including_params(this); + if(listener.enterCreatestatsstmt) { + listener.enterCreatestatsstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_including_params) { - listener.exitIndex_including_params(this); + if(listener.exitCreatestatsstmt) { + listener.exitCreatestatsstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_including_params) { - return visitor.visitIndex_including_params(this); + if (visitor.visitCreatestatsstmt) { + return visitor.visitCreatestatsstmt(this); } else { return visitor.visitChildren(this); } @@ -89511,32 +64118,50 @@ export class Index_including_paramsContext extends antlr.ParserRuleContext { } -export class Opt_collateContext extends antlr.ParserRuleContext { +export class AlterstatsstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_COLLATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_STATISTICS(): antlr.TerminalNode[]; + public KW_STATISTICS(i: number): antlr.TerminalNode | null; + public KW_STATISTICS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_STATISTICS); + } else { + return this.getToken(PostgreSqlParser.KW_STATISTICS, i); + } } public any_name(): Any_nameContext { return this.getRuleContext(0, Any_nameContext)!; } + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; + } + public signediconst(): SignediconstContext { + return this.getRuleContext(0, SignediconstContext)!; + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_collate; + return PostgreSqlParser.RULE_alterstatsstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_collate) { - listener.enterOpt_collate(this); + if(listener.enterAlterstatsstmt) { + listener.enterAlterstatsstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_collate) { - listener.exitOpt_collate(this); + if(listener.exitAlterstatsstmt) { + listener.exitAlterstatsstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_collate) { - return visitor.visitOpt_collate(this); + if (visitor.visitAlterstatsstmt) { + return visitor.visitAlterstatsstmt(this); } else { return visitor.visitChildren(this); } @@ -89544,29 +64169,59 @@ export class Opt_collateContext extends antlr.ParserRuleContext { } -export class Opt_classContext extends antlr.ParserRuleContext { +export class CreateasstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_class; + return PostgreSqlParser.RULE_createasstmt; + } + public override copyFrom(ctx: CreateasstmtContext): void { + super.copyFrom(ctx); + } +} +export class QueryCreateTableContext extends CreateasstmtContext { + public constructor(ctx: CreateasstmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; + } + public create_as_target(): Create_as_targetContext { + return this.getRuleContext(0, Create_as_targetContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; + } + public selectstmt(): SelectstmtContext { + return this.getRuleContext(0, SelectstmtContext)!; + } + public opttemp(): OpttempContext | null { + return this.getRuleContext(0, OpttempContext); + } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } + public opt_with_data(): Opt_with_dataContext | null { + return this.getRuleContext(0, Opt_with_dataContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_class) { - listener.enterOpt_class(this); + if(listener.enterQueryCreateTable) { + listener.enterQueryCreateTable(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_class) { - listener.exitOpt_class(this); + if(listener.exitQueryCreateTable) { + listener.exitQueryCreateTable(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_class) { - return visitor.visitOpt_class(this); + if (visitor.visitQueryCreateTable) { + return visitor.visitQueryCreateTable(this); } else { return visitor.visitChildren(this); } @@ -89574,32 +64229,44 @@ export class Opt_classContext extends antlr.ParserRuleContext { } -export class Opt_asc_descContext extends antlr.ParserRuleContext { +export class Create_as_targetContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ASC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ASC, 0); + public table_name_create(): Table_name_createContext { + return this.getRuleContext(0, Table_name_createContext)!; } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DESC, 0); + public opt_column_list_create(): Opt_column_list_createContext | null { + return this.getRuleContext(0, Opt_column_list_createContext); + } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); + } + public optwith(): OptwithContext | null { + return this.getRuleContext(0, OptwithContext); + } + public oncommitoption(): OncommitoptionContext | null { + return this.getRuleContext(0, OncommitoptionContext); + } + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_asc_desc; + return PostgreSqlParser.RULE_create_as_target; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_asc_desc) { - listener.enterOpt_asc_desc(this); + if(listener.enterCreate_as_target) { + listener.enterCreate_as_target(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_asc_desc) { - listener.exitOpt_asc_desc(this); + if(listener.exitCreate_as_target) { + listener.exitCreate_as_target(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_asc_desc) { - return visitor.visitOpt_asc_desc(this); + if (visitor.visitCreate_as_target) { + return visitor.visitCreate_as_target(this); } else { return visitor.visitChildren(this); } @@ -89607,35 +64274,35 @@ export class Opt_asc_descContext extends antlr.ParserRuleContext { } -export class Opt_nulls_orderContext extends antlr.ParserRuleContext { +export class Opt_with_dataContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_NULLS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NULLS, 0)!; + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FIRST, 0); + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LAST, 0); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_nulls_order; + return PostgreSqlParser.RULE_opt_with_data; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_nulls_order) { - listener.enterOpt_nulls_order(this); + if(listener.enterOpt_with_data) { + listener.enterOpt_with_data(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_nulls_order) { - listener.exitOpt_nulls_order(this); + if(listener.exitOpt_with_data) { + listener.exitOpt_with_data(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_nulls_order) { - return visitor.visitOpt_nulls_order(this); + if (visitor.visitOpt_with_data) { + return visitor.visitOpt_with_data(this); } else { return visitor.visitChildren(this); } @@ -89643,74 +64310,74 @@ export class Opt_nulls_orderContext extends antlr.ParserRuleContext { } -export class CreatefunctionstmtContext extends antlr.ParserRuleContext { +export class CreatematviewstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public func_args_with_defaults(): Func_args_with_defaultsContext { - return this.getRuleContext(0, Func_args_with_defaultsContext)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_creatematviewstmt; } - public createfunc_opt_list(): Createfunc_opt_listContext { - return this.getRuleContext(0, Createfunc_opt_listContext)!; + public override copyFrom(ctx: CreatematviewstmtContext): void { + super.copyFrom(ctx); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); +} +export class CreateMaterializedViewContext extends CreatematviewstmtContext { + public constructor(ctx: CreatematviewstmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public function_name_create(): Function_name_createContext | null { - return this.getRuleContext(0, Function_name_createContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0)!; } - public procedure_name_create(): Procedure_name_createContext | null { - return this.getRuleContext(0, Procedure_name_createContext); + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VIEW, 0)!; } - public opt_or_replace(): Opt_or_replaceContext | null { - return this.getRuleContext(0, Opt_or_replaceContext); + public view_name_create(): View_name_createContext { + return this.getRuleContext(0, View_name_createContext)!; } - public KW_RETURNS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RETURNS, 0); + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); + public selectstmt(): SelectstmtContext { + return this.getRuleContext(0, SelectstmtContext)!; } - public attrilist(): AttrilistContext | null { - return this.getRuleContext(0, AttrilistContext); + public KW_UNLOGGED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); } - public func_return(): Func_returnContext | null { - return this.getRuleContext(0, Func_returnContext); + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public opt_column_list_create(): Opt_column_list_createContext | null { + return this.getRuleContext(0, Opt_column_list_createContext); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } - public table_func_column_list(): Table_func_column_listContext | null { - return this.getRuleContext(0, Table_func_column_listContext); + public opt_reloptions(): Opt_reloptionsContext | null { + return this.getRuleContext(0, Opt_reloptionsContext); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createfunctionstmt; + public opt_with_data(): Opt_with_dataContext | null { + return this.getRuleContext(0, Opt_with_dataContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatefunctionstmt) { - listener.enterCreatefunctionstmt(this); + if(listener.enterCreateMaterializedView) { + listener.enterCreateMaterializedView(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatefunctionstmt) { - listener.exitCreatefunctionstmt(this); + if(listener.exitCreateMaterializedView) { + listener.exitCreateMaterializedView(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatefunctionstmt) { - return visitor.visitCreatefunctionstmt(this); + if (visitor.visitCreateMaterializedView) { + return visitor.visitCreateMaterializedView(this); } else { return visitor.visitChildren(this); } @@ -89718,50 +64385,44 @@ export class CreatefunctionstmtContext extends antlr.ParserRuleContext { } -export class AttrilistContext extends antlr.ParserRuleContext { +export class RefreshmatviewstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_REFRESH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REFRESH, 0)!; } - public colid(): ColidContext[]; - public colid(i: number): ColidContext | null; - public colid(i?: number): ColidContext[] | ColidContext | null { - if (i === undefined) { - return this.getRuleContexts(ColidContext); - } - - return this.getRuleContext(i, ColidContext); + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VIEW, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public view_name(): View_nameContext { + return this.getRuleContext(0, View_nameContext)!; + } + public KW_CONCURRENTLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); + } + public opt_with_data(): Opt_with_dataContext | null { + return this.getRuleContext(0, Opt_with_dataContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_attrilist; + return PostgreSqlParser.RULE_refreshmatviewstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAttrilist) { - listener.enterAttrilist(this); + if(listener.enterRefreshmatviewstmt) { + listener.enterRefreshmatviewstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAttrilist) { - listener.exitAttrilist(this); + if(listener.exitRefreshmatviewstmt) { + listener.exitRefreshmatviewstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAttrilist) { - return visitor.visitAttrilist(this); + if (visitor.visitRefreshmatviewstmt) { + return visitor.visitRefreshmatviewstmt(this); } else { return visitor.visitChildren(this); } @@ -89769,68 +64430,50 @@ export class AttrilistContext extends antlr.ParserRuleContext { } -export class Opt_or_replaceContext extends antlr.ParserRuleContext { +export class CreateseqstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_OR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OR, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_REPLACE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REPLACE, 0)!; + public KW_SEQUENCE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_or_replace; + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_or_replace) { - listener.enterOpt_or_replace(this); - } + public opttemp(): OpttempContext | null { + return this.getRuleContext(0, OpttempContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_or_replace) { - listener.exitOpt_or_replace(this); - } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_or_replace) { - return visitor.visitOpt_or_replace(this); - } else { - return visitor.visitChildren(this); + public seqoptelem(): SeqoptelemContext[]; + public seqoptelem(i: number): SeqoptelemContext | null; + public seqoptelem(i?: number): SeqoptelemContext[] | SeqoptelemContext | null { + if (i === undefined) { + return this.getRuleContexts(SeqoptelemContext); } - } -} - -export class Func_argsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public func_args_list(): Func_args_listContext | null { - return this.getRuleContext(0, Func_args_listContext); + return this.getRuleContext(i, SeqoptelemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_args; + return PostgreSqlParser.RULE_createseqstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_args) { - listener.enterFunc_args(this); + if(listener.enterCreateseqstmt) { + listener.enterCreateseqstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_args) { - listener.exitFunc_args(this); + if(listener.exitCreateseqstmt) { + listener.exitCreateseqstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_args) { - return visitor.visitFunc_args(this); + if (visitor.visitCreateseqstmt) { + return visitor.visitCreateseqstmt(this); } else { return visitor.visitChildren(this); } @@ -89838,44 +64481,47 @@ export class Func_argsContext extends antlr.ParserRuleContext { } -export class Func_args_listContext extends antlr.ParserRuleContext { +export class AlterseqstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_arg(): Func_argContext[]; - public func_arg(i: number): Func_argContext | null; - public func_arg(i?: number): Func_argContext[] | Func_argContext | null { + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_SEQUENCE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0)!; + } + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); + } + public seqoptelem(): SeqoptelemContext[]; + public seqoptelem(i: number): SeqoptelemContext | null; + public seqoptelem(i?: number): SeqoptelemContext[] | SeqoptelemContext | null { if (i === undefined) { - return this.getRuleContexts(Func_argContext); + return this.getRuleContexts(SeqoptelemContext); } - return this.getRuleContext(i, Func_argContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + return this.getRuleContext(i, SeqoptelemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_args_list; + return PostgreSqlParser.RULE_alterseqstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_args_list) { - listener.enterFunc_args_list(this); + if(listener.enterAlterseqstmt) { + listener.enterAlterseqstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_args_list) { - listener.exitFunc_args_list(this); + if(listener.exitAlterseqstmt) { + listener.exitAlterseqstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_args_list) { - return visitor.visitFunc_args_list(this); + if (visitor.visitAlterseqstmt) { + return visitor.visitAlterseqstmt(this); } else { return visitor.visitChildren(this); } @@ -89883,44 +64529,80 @@ export class Func_args_listContext extends antlr.ParserRuleContext { } -export class Routine_with_argtypes_listContext extends antlr.ParserRuleContext { +export class SeqoptelemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public routine_with_argtypes(): Routine_with_argtypesContext[]; - public routine_with_argtypes(i: number): Routine_with_argtypesContext | null; - public routine_with_argtypes(i?: number): Routine_with_argtypesContext[] | Routine_with_argtypesContext | null { - if (i === undefined) { - return this.getRuleContexts(Routine_with_argtypesContext); - } - - return this.getRuleContext(i, Routine_with_argtypesContext); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public simpletypename(): SimpletypenameContext | null { + return this.getRuleContext(0, SimpletypenameContext); + } + public KW_CACHE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CACHE, 0); + } + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); + } + public KW_INCREMENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INCREMENT, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); + } + public KW_MAXVALUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MAXVALUE, 0); + } + public KW_MINVALUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MINVALUE, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); + } + public KW_CYCLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CYCLE, 0); + } + public KW_OWNED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNED, 0); + } + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); + } + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); + } + public KW_NAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NAME, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public KW_START(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_START, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public KW_RESTART(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTART, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_routine_with_argtypes_list; + return PostgreSqlParser.RULE_seqoptelem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRoutine_with_argtypes_list) { - listener.enterRoutine_with_argtypes_list(this); + if(listener.enterSeqoptelem) { + listener.enterSeqoptelem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRoutine_with_argtypes_list) { - listener.exitRoutine_with_argtypes_list(this); + if(listener.exitSeqoptelem) { + listener.exitSeqoptelem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRoutine_with_argtypes_list) { - return visitor.visitRoutine_with_argtypes_list(this); + if (visitor.visitSeqoptelem) { + return visitor.visitSeqoptelem(this); } else { return visitor.visitChildren(this); } @@ -89928,41 +64610,38 @@ export class Routine_with_argtypes_listContext extends antlr.ParserRuleContext { } -export class Routine_with_argtypesContext extends antlr.ParserRuleContext { +export class NumericonlyContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public routine_name(): Routine_nameContext | null { - return this.getRuleContext(0, Routine_nameContext); - } - public func_args(): Func_argsContext | null { - return this.getRuleContext(0, Func_argsContext); + public Numeric(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Numeric, 0); } - public type_func_name_keyword(): Type_func_name_keywordContext | null { - return this.getRuleContext(0, Type_func_name_keywordContext); + public PLUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLUS, 0); } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public MINUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.MINUS, 0); } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public signediconst(): SignediconstContext | null { + return this.getRuleContext(0, SignediconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_routine_with_argtypes; + return PostgreSqlParser.RULE_numericonly; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRoutine_with_argtypes) { - listener.enterRoutine_with_argtypes(this); + if(listener.enterNumericonly) { + listener.enterNumericonly(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRoutine_with_argtypes) { - listener.exitRoutine_with_argtypes(this); + if(listener.exitNumericonly) { + listener.exitNumericonly(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRoutine_with_argtypes) { - return visitor.visitRoutine_with_argtypes(this); + if (visitor.visitNumericonly) { + return visitor.visitNumericonly(this); } else { return visitor.visitChildren(this); } @@ -89970,44 +64649,65 @@ export class Routine_with_argtypesContext extends antlr.ParserRuleContext { } -export class Procedure_with_argtypes_listContext extends antlr.ParserRuleContext { +export class CreateplangstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public procedure_with_argtypes(): Procedure_with_argtypesContext[]; - public procedure_with_argtypes(i: number): Procedure_with_argtypesContext | null; - public procedure_with_argtypes(i?: number): Procedure_with_argtypesContext[] | Procedure_with_argtypesContext | null { + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_LANGUAGE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public opt_or_replace(): Opt_or_replaceContext | null { + return this.getRuleContext(0, Opt_or_replaceContext); + } + public KW_TRUSTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUSTED, 0); + } + public KW_PROCEDURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); + } + public KW_HANDLER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_HANDLER, 0); + } + public any_name(): Any_nameContext[]; + public any_name(i: number): Any_nameContext | null; + public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { if (i === undefined) { - return this.getRuleContexts(Procedure_with_argtypesContext); + return this.getRuleContexts(Any_nameContext); } - return this.getRuleContext(i, Procedure_with_argtypesContext); + return this.getRuleContext(i, Any_nameContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_INLINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INLINE, 0); + } + public KW_VALIDATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALIDATOR, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_procedure_with_argtypes_list; + return PostgreSqlParser.RULE_createplangstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProcedure_with_argtypes_list) { - listener.enterProcedure_with_argtypes_list(this); + if(listener.enterCreateplangstmt) { + listener.enterCreateplangstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProcedure_with_argtypes_list) { - listener.exitProcedure_with_argtypes_list(this); + if(listener.exitCreateplangstmt) { + listener.exitCreateplangstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProcedure_with_argtypes_list) { - return visitor.visitProcedure_with_argtypes_list(this); + if (visitor.visitCreateplangstmt) { + return visitor.visitCreateplangstmt(this); } else { return visitor.visitChildren(this); } @@ -90015,41 +64715,47 @@ export class Procedure_with_argtypes_listContext extends antlr.ParserRuleContext } -export class Procedure_with_argtypesContext extends antlr.ParserRuleContext { +export class CreatetablespacestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public procedure_name(): Procedure_nameContext | null { - return this.getRuleContext(0, Procedure_nameContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public func_args(): Func_argsContext | null { - return this.getRuleContext(0, Func_argsContext); + public opttablespace(): OpttablespaceContext { + return this.getRuleContext(0, OpttablespaceContext)!; } - public type_func_name_keyword(): Type_func_name_keywordContext | null { - return this.getRuleContext(0, Type_func_name_keywordContext); + public KW_LOCATION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LOCATION, 0)!; } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public sconst(): SconstContext { + return this.getRuleContext(0, SconstContext)!; } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public opt_reloptions(): Opt_reloptionsContext | null { + return this.getRuleContext(0, Opt_reloptionsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_procedure_with_argtypes; + return PostgreSqlParser.RULE_createtablespacestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProcedure_with_argtypes) { - listener.enterProcedure_with_argtypes(this); + if(listener.enterCreatetablespacestmt) { + listener.enterCreatetablespacestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProcedure_with_argtypes) { - listener.exitProcedure_with_argtypes(this); + if(listener.exitCreatetablespacestmt) { + listener.exitCreatetablespacestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProcedure_with_argtypes) { - return visitor.visitProcedure_with_argtypes(this); + if (visitor.visitCreatetablespacestmt) { + return visitor.visitCreatetablespacestmt(this); } else { return visitor.visitChildren(this); } @@ -90057,44 +64763,95 @@ export class Procedure_with_argtypesContext extends antlr.ParserRuleContext { } -export class Function_with_argtypes_listContext extends antlr.ParserRuleContext { +export class CreateextensionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public function_with_argtypes(): Function_with_argtypesContext[]; - public function_with_argtypes(i: number): Function_with_argtypesContext | null; - public function_with_argtypes(i?: number): Function_with_argtypesContext[] | Function_with_argtypesContext | null { + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_EXTENSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public KW_SCHEMA(): antlr.TerminalNode[]; + public KW_SCHEMA(i: number): antlr.TerminalNode | null; + public KW_SCHEMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_SCHEMA); + } else { + return this.getToken(PostgreSqlParser.KW_SCHEMA, i); + } + } + public schema_name(): Schema_nameContext[]; + public schema_name(i: number): Schema_nameContext | null; + public schema_name(i?: number): Schema_nameContext[] | Schema_nameContext | null { if (i === undefined) { - return this.getRuleContexts(Function_with_argtypesContext); + return this.getRuleContexts(Schema_nameContext); } - return this.getRuleContext(i, Function_with_argtypesContext); + return this.getRuleContext(i, Schema_nameContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext[]; + public nonreservedword_or_sconst(i: number): Nonreservedword_or_sconstContext | null; + public nonreservedword_or_sconst(i?: number): Nonreservedword_or_sconstContext[] | Nonreservedword_or_sconstContext | null { + if (i === undefined) { + return this.getRuleContexts(Nonreservedword_or_sconstContext); + } + + return this.getRuleContext(i, Nonreservedword_or_sconstContext); + } + public KW_CASCADE(): antlr.TerminalNode[]; + public KW_CASCADE(i: number): antlr.TerminalNode | null; + public KW_CASCADE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); + return this.getTokens(PostgreSqlParser.KW_CASCADE); } else { - return this.getToken(PostgreSqlParser.COMMA, i); + return this.getToken(PostgreSqlParser.KW_CASCADE, i); + } + } + public KW_VERSION(): antlr.TerminalNode[]; + public KW_VERSION(i: number): antlr.TerminalNode | null; + public KW_VERSION(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_VERSION); + } else { + return this.getToken(PostgreSqlParser.KW_VERSION, i); + } + } + public KW_FROM(): antlr.TerminalNode[]; + public KW_FROM(i: number): antlr.TerminalNode | null; + public KW_FROM(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FROM); + } else { + return this.getToken(PostgreSqlParser.KW_FROM, i); } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_function_with_argtypes_list; + return PostgreSqlParser.RULE_createextensionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunction_with_argtypes_list) { - listener.enterFunction_with_argtypes_list(this); + if(listener.enterCreateextensionstmt) { + listener.enterCreateextensionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunction_with_argtypes_list) { - listener.exitFunction_with_argtypes_list(this); + if(listener.exitCreateextensionstmt) { + listener.exitCreateextensionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunction_with_argtypes_list) { - return visitor.visitFunction_with_argtypes_list(this); + if (visitor.visitCreateextensionstmt) { + return visitor.visitCreateextensionstmt(this); } else { return visitor.visitChildren(this); } @@ -90102,41 +64859,56 @@ export class Function_with_argtypes_listContext extends antlr.ParserRuleContext } -export class Function_with_argtypesContext extends antlr.ParserRuleContext { +export class AlterextensionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public function_name(): Function_nameContext | null { - return this.getRuleContext(0, Function_nameContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public func_args(): Func_argsContext | null { - return this.getRuleContext(0, Func_argsContext); + public KW_EXTENSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; } - public type_func_name_keyword(): Type_func_name_keywordContext | null { - return this.getRuleContext(0, Type_func_name_keywordContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0)!; } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public KW_TO(): antlr.TerminalNode[]; + public KW_TO(i: number): antlr.TerminalNode | null; + public KW_TO(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_TO); + } else { + return this.getToken(PostgreSqlParser.KW_TO, i); + } + } + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext[]; + public nonreservedword_or_sconst(i: number): Nonreservedword_or_sconstContext | null; + public nonreservedword_or_sconst(i?: number): Nonreservedword_or_sconstContext[] | Nonreservedword_or_sconstContext | null { + if (i === undefined) { + return this.getRuleContexts(Nonreservedword_or_sconstContext); + } + + return this.getRuleContext(i, Nonreservedword_or_sconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_function_with_argtypes; + return PostgreSqlParser.RULE_alterextensionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunction_with_argtypes) { - listener.enterFunction_with_argtypes(this); + if(listener.enterAlterextensionstmt) { + listener.enterAlterextensionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunction_with_argtypes) { - listener.exitFunction_with_argtypes(this); + if(listener.exitAlterextensionstmt) { + listener.exitAlterextensionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunction_with_argtypes) { - return visitor.visitFunction_with_argtypes(this); + if (visitor.visitAlterextensionstmt) { + return visitor.visitAlterextensionstmt(this); } else { return visitor.visitChildren(this); } @@ -90144,80 +64916,131 @@ export class Function_with_argtypesContext extends antlr.ParserRuleContext { } -export class Func_args_with_defaultsContext extends antlr.ParserRuleContext { +export class AlterextensioncontentsstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public func_args_with_defaults_list(): Func_args_with_defaults_listContext | null { - return this.getRuleContext(0, Func_args_with_defaults_listContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_args_with_defaults; + public KW_EXTENSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_args_with_defaults) { - listener.enterFunc_args_with_defaults(this); + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); } + + return this.getRuleContext(i, ColidContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_args_with_defaults) { - listener.exitFunc_args_with_defaults(this); - } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_args_with_defaults) { - return visitor.visitFunc_args_with_defaults(this); - } else { - return visitor.visitChildren(this); - } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } -} - - -export class Func_args_with_defaults_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_TRANSFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); } - public func_arg_with_default(): Func_arg_with_defaultContext[]; - public func_arg_with_default(i: number): Func_arg_with_defaultContext | null; - public func_arg_with_default(i?: number): Func_arg_with_defaultContext[] | Func_arg_with_defaultContext | null { + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); + } + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { if (i === undefined) { - return this.getRuleContexts(Func_arg_with_defaultContext); + return this.getRuleContexts(TypenameContext); } - return this.getRuleContext(i, Func_arg_with_defaultContext); + return this.getRuleContext(i, TypenameContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + } + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + } + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); + } + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + } + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); + } + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); + } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); + } + public operator_with_argtypes(): Operator_with_argtypesContext | null { + return this.getRuleContext(0, Operator_with_argtypesContext); + } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + } + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); + } + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CAST, 0); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); + } + public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { + return this.getRuleContext(0, Aggregate_with_argtypesContext); + } + public object_type_name(): Object_type_nameContext | null { + return this.getRuleContext(0, Object_type_nameContext); + } + public object_type_any_name(): Object_type_any_nameContext | null { + return this.getRuleContext(0, Object_type_any_nameContext); + } + public KW_CLASS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CLASS, 0); + } + public KW_FAMILY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0); + } + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + } + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_args_with_defaults_list; + return PostgreSqlParser.RULE_alterextensioncontentsstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_args_with_defaults_list) { - listener.enterFunc_args_with_defaults_list(this); + if(listener.enterAlterextensioncontentsstmt) { + listener.enterAlterextensioncontentsstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_args_with_defaults_list) { - listener.exitFunc_args_with_defaults_list(this); + if(listener.exitAlterextensioncontentsstmt) { + listener.exitAlterextensioncontentsstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_args_with_defaults_list) { - return visitor.visitFunc_args_with_defaults_list(this); + if (visitor.visitAlterextensioncontentsstmt) { + return visitor.visitAlterextensioncontentsstmt(this); } else { return visitor.visitChildren(this); } @@ -90225,35 +65048,53 @@ export class Func_args_with_defaults_listContext extends antlr.ParserRuleContext } -export class Func_argContext extends antlr.ParserRuleContext { +export class CreatefdwstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public arg_class(): Arg_classContext | null { - return this.getRuleContext(0, Arg_classContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public func_type(): Func_typeContext { - return this.getRuleContext(0, Func_typeContext)!; + public KW_FOREIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; } - public param_name(): Param_nameContext | null { - return this.getRuleContext(0, Param_nameContext); + public KW_DATA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATA, 0)!; + } + public KW_WRAPPER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); + } + public fdw_option(): Fdw_optionContext[]; + public fdw_option(i: number): Fdw_optionContext | null; + public fdw_option(i?: number): Fdw_optionContext[] | Fdw_optionContext | null { + if (i === undefined) { + return this.getRuleContexts(Fdw_optionContext); + } + + return this.getRuleContext(i, Fdw_optionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_arg; + return PostgreSqlParser.RULE_createfdwstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_arg) { - listener.enterFunc_arg(this); + if(listener.enterCreatefdwstmt) { + listener.enterCreatefdwstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_arg) { - listener.exitFunc_arg(this); + if(listener.exitCreatefdwstmt) { + listener.exitCreatefdwstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_arg) { - return visitor.visitFunc_arg(this); + if (visitor.visitCreatefdwstmt) { + return visitor.visitCreatefdwstmt(this); } else { return visitor.visitChildren(this); } @@ -90261,38 +65102,38 @@ export class Func_argContext extends antlr.ParserRuleContext { } -export class Arg_classContext extends antlr.ParserRuleContext { +export class Fdw_optionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); + public KW_HANDLER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_HANDLER, 0); } - public KW_OUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OUT, 0); + public KW_VALIDATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALIDATOR, 0); } - public KW_INOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INOUT, 0); + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public KW_VARIADIC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARIADIC, 0); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_arg_class; + return PostgreSqlParser.RULE_fdw_option; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterArg_class) { - listener.enterArg_class(this); + if(listener.enterFdw_option) { + listener.enterFdw_option(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitArg_class) { - listener.exitArg_class(this); + if(listener.exitFdw_option) { + listener.exitFdw_option(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitArg_class) { - return visitor.visitArg_class(this); + if (visitor.visitFdw_option) { + return visitor.visitFdw_option(this); } else { return visitor.visitChildren(this); } @@ -90300,29 +65141,53 @@ export class Arg_classContext extends antlr.ParserRuleContext { } -export class Param_nameContext extends antlr.ParserRuleContext { +export class AlterfdwstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public type_function_name(): Type_function_nameContext { - return this.getRuleContext(0, Type_function_nameContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_FOREIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; + } + public KW_DATA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATA, 0)!; + } + public KW_WRAPPER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public alter_generic_options(): Alter_generic_optionsContext | null { + return this.getRuleContext(0, Alter_generic_optionsContext); + } + public fdw_option(): Fdw_optionContext[]; + public fdw_option(i: number): Fdw_optionContext | null; + public fdw_option(i?: number): Fdw_optionContext[] | Fdw_optionContext | null { + if (i === undefined) { + return this.getRuleContexts(Fdw_optionContext); + } + + return this.getRuleContext(i, Fdw_optionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_param_name; + return PostgreSqlParser.RULE_alterfdwstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterParam_name) { - listener.enterParam_name(this); + if(listener.enterAlterfdwstmt) { + listener.enterAlterfdwstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitParam_name) { - listener.exitParam_name(this); + if(listener.exitAlterfdwstmt) { + listener.exitAlterfdwstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitParam_name) { - return visitor.visitParam_name(this); + if (visitor.visitAlterfdwstmt) { + return visitor.visitAlterfdwstmt(this); } else { return visitor.visitChildren(this); } @@ -90330,29 +65195,53 @@ export class Param_nameContext extends antlr.ParserRuleContext { } -export class Func_returnContext extends antlr.ParserRuleContext { +export class Create_generic_optionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_type(): Func_typeContext { - return this.getRuleContext(0, Func_typeContext)!; + public KW_OPTIONS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OPTIONS, 0)!; + } + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public generic_option_elem(): Generic_option_elemContext[]; + public generic_option_elem(i: number): Generic_option_elemContext | null; + public generic_option_elem(i?: number): Generic_option_elemContext[] | Generic_option_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Generic_option_elemContext); + } + + return this.getRuleContext(i, Generic_option_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_return; + return PostgreSqlParser.RULE_create_generic_options; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_return) { - listener.enterFunc_return(this); + if(listener.enterCreate_generic_options) { + listener.enterCreate_generic_options(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_return) { - listener.exitFunc_return(this); + if(listener.exitCreate_generic_options) { + listener.exitCreate_generic_options(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_return) { - return visitor.visitFunc_return(this); + if (visitor.visitCreate_generic_options) { + return visitor.visitCreate_generic_options(this); } else { return visitor.visitChildren(this); } @@ -90360,44 +65249,53 @@ export class Func_returnContext extends antlr.ParserRuleContext { } -export class Func_typeContext extends antlr.ParserRuleContext { +export class Alter_generic_optionsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); - } - public type_function_name(): Type_function_nameContext | null { - return this.getRuleContext(0, Type_function_nameContext); + public KW_OPTIONS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OPTIONS, 0)!; } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public PERCENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PERCENT, 0); + public alter_generic_option_elem(): Alter_generic_option_elemContext[]; + public alter_generic_option_elem(i: number): Alter_generic_option_elemContext | null; + public alter_generic_option_elem(i?: number): Alter_generic_option_elemContext[] | Alter_generic_option_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Alter_generic_option_elemContext); + } + + return this.getRuleContext(i, Alter_generic_option_elemContext); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public KW_SETOF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SETOF, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_type; + return PostgreSqlParser.RULE_alter_generic_options; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_type) { - listener.enterFunc_type(this); + if(listener.enterAlter_generic_options) { + listener.enterAlter_generic_options(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_type) { - listener.exitFunc_type(this); + if(listener.exitAlter_generic_options) { + listener.exitAlter_generic_options(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_type) { - return visitor.visitFunc_type(this); + if (visitor.visitAlter_generic_options) { + return visitor.visitAlter_generic_options(this); } else { return visitor.visitChildren(this); } @@ -90405,38 +65303,38 @@ export class Func_typeContext extends antlr.ParserRuleContext { } -export class Func_arg_with_defaultContext extends antlr.ParserRuleContext { +export class Alter_generic_option_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_arg(): Func_argContext { - return this.getRuleContext(0, Func_argContext)!; + public generic_option_elem(): Generic_option_elemContext { + return this.getRuleContext(0, Generic_option_elemContext)!; } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_arg_with_default; + return PostgreSqlParser.RULE_alter_generic_option_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_arg_with_default) { - listener.enterFunc_arg_with_default(this); + if(listener.enterAlter_generic_option_elem) { + listener.enterAlter_generic_option_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_arg_with_default) { - listener.exitFunc_arg_with_default(this); + if(listener.exitAlter_generic_option_elem) { + listener.exitAlter_generic_option_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_arg_with_default) { - return visitor.visitFunc_arg_with_default(this); + if (visitor.visitAlter_generic_option_elem) { + return visitor.visitAlter_generic_option_elem(this); } else { return visitor.visitChildren(this); } @@ -90444,29 +65342,32 @@ export class Func_arg_with_defaultContext extends antlr.ParserRuleContext { } -export class Aggr_argContext extends antlr.ParserRuleContext { +export class Generic_option_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_arg(): Func_argContext { - return this.getRuleContext(0, Func_argContext)!; + public collabel(): CollabelContext { + return this.getRuleContext(0, CollabelContext)!; + } + public sconst(): SconstContext { + return this.getRuleContext(0, SconstContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_aggr_arg; + return PostgreSqlParser.RULE_generic_option_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAggr_arg) { - listener.enterAggr_arg(this); + if(listener.enterGeneric_option_elem) { + listener.enterGeneric_option_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAggr_arg) { - listener.exitAggr_arg(this); + if(listener.exitGeneric_option_elem) { + listener.exitGeneric_option_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAggr_arg) { - return visitor.visitAggr_arg(this); + if (visitor.visitGeneric_option_elem) { + return visitor.visitGeneric_option_elem(this); } else { return visitor.visitChildren(this); } @@ -90474,95 +65375,65 @@ export class Aggr_argContext extends antlr.ParserRuleContext { } -export class Aggr_argsContext extends antlr.ParserRuleContext { +export class CreateforeignserverstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; } - public aggr_args_list(): Aggr_args_listContext[]; - public aggr_args_list(i: number): Aggr_args_listContext | null; - public aggr_args_list(i?: number): Aggr_args_listContext[] | Aggr_args_listContext | null { + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { if (i === undefined) { - return this.getRuleContexts(Aggr_args_listContext); + return this.getRuleContexts(ColidContext); } - return this.getRuleContext(i, Aggr_args_listContext); - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ORDER, 0); + return this.getRuleContext(i, ColidContext); } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BY, 0); + public KW_FOREIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_aggr_args; + public KW_DATA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATA, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAggr_args) { - listener.enterAggr_args(this); - } + public KW_WRAPPER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAggr_args) { - listener.exitAggr_args(this); - } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAggr_args) { - return visitor.visitAggr_args(this); - } else { - return visitor.visitChildren(this); - } + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } -} - - -export class Aggr_args_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public aggr_arg(): Aggr_argContext[]; - public aggr_arg(i: number): Aggr_argContext | null; - public aggr_arg(i?: number): Aggr_argContext[] | Aggr_argContext | null { - if (i === undefined) { - return this.getRuleContexts(Aggr_argContext); - } - - return this.getRuleContext(i, Aggr_argContext); + public foreign_server_version(): Foreign_server_versionContext | null { + return this.getRuleContext(0, Foreign_server_versionContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_aggr_args_list; + return PostgreSqlParser.RULE_createforeignserverstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAggr_args_list) { - listener.enterAggr_args_list(this); + if(listener.enterCreateforeignserverstmt) { + listener.enterCreateforeignserverstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAggr_args_list) { - listener.exitAggr_args_list(this); + if(listener.exitCreateforeignserverstmt) { + listener.exitCreateforeignserverstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAggr_args_list) { - return visitor.visitAggr_args_list(this); + if (visitor.visitCreateforeignserverstmt) { + return visitor.visitCreateforeignserverstmt(this); } else { return visitor.visitChildren(this); } @@ -90570,32 +65441,35 @@ export class Aggr_args_listContext extends antlr.ParserRuleContext { } -export class Aggregate_with_argtypesContext extends antlr.ParserRuleContext { +export class Foreign_server_versionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public function_name(): Function_nameContext { - return this.getRuleContext(0, Function_nameContext)!; + public KW_VERSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VERSION, 0)!; } - public aggr_args(): Aggr_argsContext { - return this.getRuleContext(0, Aggr_argsContext)!; + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_aggregate_with_argtypes; + return PostgreSqlParser.RULE_foreign_server_version; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAggregate_with_argtypes) { - listener.enterAggregate_with_argtypes(this); + if(listener.enterForeign_server_version) { + listener.enterForeign_server_version(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAggregate_with_argtypes) { - listener.exitAggregate_with_argtypes(this); + if(listener.exitForeign_server_version) { + listener.exitForeign_server_version(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAggregate_with_argtypes) { - return visitor.visitAggregate_with_argtypes(this); + if (visitor.visitForeign_server_version) { + return visitor.visitForeign_server_version(this); } else { return visitor.visitChildren(this); } @@ -90603,44 +65477,41 @@ export class Aggregate_with_argtypesContext extends antlr.ParserRuleContext { } -export class Aggregate_with_argtypes_listContext extends antlr.ParserRuleContext { +export class AlterforeignserverstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext[]; - public aggregate_with_argtypes(i: number): Aggregate_with_argtypesContext | null; - public aggregate_with_argtypes(i?: number): Aggregate_with_argtypesContext[] | Aggregate_with_argtypesContext | null { - if (i === undefined) { - return this.getRuleContexts(Aggregate_with_argtypesContext); - } - - return this.getRuleContext(i, Aggregate_with_argtypesContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public alter_generic_options(): Alter_generic_optionsContext | null { + return this.getRuleContext(0, Alter_generic_optionsContext); + } + public foreign_server_version(): Foreign_server_versionContext | null { + return this.getRuleContext(0, Foreign_server_versionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_aggregate_with_argtypes_list; + return PostgreSqlParser.RULE_alterforeignserverstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAggregate_with_argtypes_list) { - listener.enterAggregate_with_argtypes_list(this); + if(listener.enterAlterforeignserverstmt) { + listener.enterAlterforeignserverstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAggregate_with_argtypes_list) { - listener.exitAggregate_with_argtypes_list(this); + if(listener.exitAlterforeignserverstmt) { + listener.exitAlterforeignserverstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAggregate_with_argtypes_list) { - return visitor.visitAggregate_with_argtypes_list(this); + if (visitor.visitAlterforeignserverstmt) { + return visitor.visitAlterforeignserverstmt(this); } else { return visitor.visitChildren(this); } @@ -90648,137 +65519,133 @@ export class Aggregate_with_argtypes_listContext extends antlr.ParserRuleContext } -export class Createfunc_opt_listContext extends antlr.ParserRuleContext { +export class CreateforeigntablestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public createfunc_opt_item(): Createfunc_opt_itemContext[]; - public createfunc_opt_item(i: number): Createfunc_opt_itemContext | null; - public createfunc_opt_item(i?: number): Createfunc_opt_itemContext[] | Createfunc_opt_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Createfunc_opt_itemContext); - } - - return this.getRuleContext(i, Createfunc_opt_itemContext); - } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createfunc_opt_list; + return PostgreSqlParser.RULE_createforeigntablestmt; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatefunc_opt_list) { - listener.enterCreatefunc_opt_list(this); - } + public override copyFrom(ctx: CreateforeigntablestmtContext): void { + super.copyFrom(ctx); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatefunc_opt_list) { - listener.exitCreatefunc_opt_list(this); - } +} +export class CreateForeignTableContext extends CreateforeigntablestmtContext { + public constructor(ctx: CreateforeigntablestmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatefunc_opt_list) { - return visitor.visitCreatefunc_opt_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } -} - - -export class Common_func_opt_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_FOREIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; } - public KW_CALLED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CALLED, 0); + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + public table_name_create(): Table_name_createContext { + return this.getRuleContext(0, Table_name_createContext)!; } - public KW_NULL(): antlr.TerminalNode[]; - public KW_NULL(i: number): antlr.TerminalNode | null; - public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_NULL); - } else { - return this.getToken(PostgreSqlParser.KW_NULL, i); - } + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_INPUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INPUT, 0); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public KW_RETURNS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RETURNS, 0); + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; } - public KW_STRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STRICT, 0); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public KW_IMMUTABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IMMUTABLE, 0); + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public KW_STABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STABLE, 0); + public tableelementlist(): TableelementlistContext | null { + return this.getRuleContext(0, TableelementlistContext); } - public KW_VOLATILE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VOLATILE, 0); + public optinherit(): OptinheritContext | null { + return this.getRuleContext(0, OptinheritContext); } - public KW_EXTERNAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SECURITY, 0); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterCreateForeignTable) { + listener.enterCreateForeignTable(this); + } } - public KW_DEFINER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFINER, 0); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitCreateForeignTable) { + listener.exitCreateForeignTable(this); + } } - public KW_INVOKER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INVOKER, 0); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitCreateForeignTable) { + return visitor.visitCreateForeignTable(this); + } else { + return visitor.visitChildren(this); + } } - public KW_LEAKPROOF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEAKPROOF, 0); +} +export class CreatePartitionForeignTableContext extends CreateforeigntablestmtContext { + public constructor(ctx: CreateforeigntablestmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_COST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COST, 0); + public KW_FOREIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWS, 0); + public table_name_create(): Table_name_createContext { + return this.getRuleContext(0, Table_name_createContext)!; } - public KW_SUPPORT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUPPORT, 0); + public KW_PARTITION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); + public KW_OF(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OF, 0)!; } - public functionsetresetclause(): FunctionsetresetclauseContext | null { - return this.getRuleContext(0, FunctionsetresetclauseContext); + public table_name(): Table_nameContext { + return this.getRuleContext(0, Table_nameContext)!; } - public KW_PARALLEL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARALLEL, 0); + public partitionboundspec(): PartitionboundspecContext { + return this.getRuleContext(0, PartitionboundspecContext)!; } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_common_func_opt_item; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } + public opttypedtableelementlist(): OpttypedtableelementlistContext | null { + return this.getRuleContext(0, OpttypedtableelementlistContext); + } + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCommon_func_opt_item) { - listener.enterCommon_func_opt_item(this); + if(listener.enterCreatePartitionForeignTable) { + listener.enterCreatePartitionForeignTable(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCommon_func_opt_item) { - listener.exitCommon_func_opt_item(this); + if(listener.exitCreatePartitionForeignTable) { + listener.exitCreatePartitionForeignTable(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCommon_func_opt_item) { - return visitor.visitCommon_func_opt_item(this); + if (visitor.visitCreatePartitionForeignTable) { + return visitor.visitCreatePartitionForeignTable(this); } else { return visitor.visitChildren(this); } @@ -90786,42 +65653,27 @@ export class Common_func_opt_itemContext extends antlr.ParserRuleContext { } -export class Createfunc_opt_itemContext extends antlr.ParserRuleContext { +export class ImportforeignschemastmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); - } - public sconst(): SconstContext[]; - public sconst(i: number): SconstContext | null; - public sconst(i?: number): SconstContext[] | SconstContext | null { - if (i === undefined) { - return this.getRuleContexts(SconstContext); - } - - return this.getRuleContext(i, SconstContext); - } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); - } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + public KW_IMPORT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IMPORT, 0)!; } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { - return this.getRuleContext(0, Nonreservedword_or_sconstContext); + public KW_FOREIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0)!; } - public KW_TRANSFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0)!; } - public transform_type_list(): Transform_type_listContext | null { - return this.getRuleContext(0, Transform_type_listContext); + public schema_name(): Schema_nameContext { + return this.getRuleContext(0, Schema_nameContext)!; } - public KW_WINDOW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WINDOW, 0); + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; } public colid(): ColidContext[]; public colid(i: number): ColidContext | null; @@ -90832,40 +65684,46 @@ export class Createfunc_opt_itemContext extends antlr.ParserRuleContext { return this.getRuleContext(i, ColidContext); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_INTO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INTO, 0)!; } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); + public relation_expr_list(): Relation_expr_listContext | null { + return this.getRuleContext(0, Relation_expr_listContext); } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public stmt(): StmtContext | null { - return this.getRuleContext(0, StmtContext); + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); } - public common_func_opt_item(): Common_func_opt_itemContext | null { - return this.getRuleContext(0, Common_func_opt_itemContext); + public KW_LIMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LIMIT, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public KW_EXCEPT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCEPT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createfunc_opt_item; + return PostgreSqlParser.RULE_importforeignschemastmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatefunc_opt_item) { - listener.enterCreatefunc_opt_item(this); + if(listener.enterImportforeignschemastmt) { + listener.enterImportforeignschemastmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatefunc_opt_item) { - listener.exitCreatefunc_opt_item(this); + if(listener.exitImportforeignschemastmt) { + listener.exitImportforeignschemastmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatefunc_opt_item) { - return visitor.visitCreatefunc_opt_item(this); + if (visitor.visitImportforeignschemastmt) { + return visitor.visitImportforeignschemastmt(this); } else { return visitor.visitChildren(this); } @@ -90873,62 +65731,59 @@ export class Createfunc_opt_itemContext extends antlr.ParserRuleContext { } -export class Transform_type_listContext extends antlr.ParserRuleContext { +export class CreateusermappingstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode[]; - public KW_FOR(i: number): antlr.TerminalNode | null; - public KW_FOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_FOR); - } else { - return this.getToken(PostgreSqlParser.KW_FOR, i); - } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_TYPE(): antlr.TerminalNode[]; - public KW_TYPE(i: number): antlr.TerminalNode | null; - public KW_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_USER(): antlr.TerminalNode[]; + public KW_USER(i: number): antlr.TerminalNode | null; + public KW_USER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_TYPE); + return this.getTokens(PostgreSqlParser.KW_USER); } else { - return this.getToken(PostgreSqlParser.KW_TYPE, i); + return this.getToken(PostgreSqlParser.KW_USER, i); } } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } - - return this.getRuleContext(i, TypenameContext); + public KW_MAPPING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MAPPING, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + } + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } + public create_generic_options(): Create_generic_optionsContext | null { + return this.getRuleContext(0, Create_generic_optionsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transform_type_list; + return PostgreSqlParser.RULE_createusermappingstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransform_type_list) { - listener.enterTransform_type_list(this); + if(listener.enterCreateusermappingstmt) { + listener.enterCreateusermappingstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransform_type_list) { - listener.exitTransform_type_list(this); + if(listener.exitCreateusermappingstmt) { + listener.exitCreateusermappingstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransform_type_list) { - return visitor.visitTransform_type_list(this); + if (visitor.visitCreateusermappingstmt) { + return visitor.visitCreateusermappingstmt(this); } else { return visitor.visitChildren(this); } @@ -90936,32 +65791,56 @@ export class Transform_type_listContext extends antlr.ParserRuleContext { } -export class Opt_definitionContext extends antlr.ParserRuleContext { +export class AlterusermappingstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public definition(): DefinitionContext { - return this.getRuleContext(0, DefinitionContext)!; + public KW_USER(): antlr.TerminalNode[]; + public KW_USER(i: number): antlr.TerminalNode | null; + public KW_USER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_USER); + } else { + return this.getToken(PostgreSqlParser.KW_USER, i); + } + } + public KW_MAPPING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MAPPING, 0)!; + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + } + public KW_SERVER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SERVER, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public alter_generic_options(): Alter_generic_optionsContext { + return this.getRuleContext(0, Alter_generic_optionsContext)!; + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_definition; + return PostgreSqlParser.RULE_alterusermappingstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_definition) { - listener.enterOpt_definition(this); + if(listener.enterAlterusermappingstmt) { + listener.enterAlterusermappingstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_definition) { - listener.exitOpt_definition(this); + if(listener.exitAlterusermappingstmt) { + listener.exitAlterusermappingstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_definition) { - return visitor.visitOpt_definition(this); + if (visitor.visitAlterusermappingstmt) { + return visitor.visitAlterusermappingstmt(this); } else { return visitor.visitChildren(this); } @@ -90969,116 +65848,83 @@ export class Opt_definitionContext extends antlr.ParserRuleContext { } -export class Table_func_columnContext extends antlr.ParserRuleContext { +export class CreatepolicystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public column_name(): Column_nameContext { - return this.getRuleContext(0, Column_nameContext)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public func_type(): Func_typeContext { - return this.getRuleContext(0, Func_typeContext)!; + public KW_POLICY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_POLICY, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_table_func_column; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTable_func_column) { - listener.enterTable_func_column(this); - } + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTable_func_column) { - listener.exitTable_func_column(this); - } + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTable_func_column) { - return visitor.visitTable_func_column(this); - } else { - return visitor.visitChildren(this); - } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } -} - - -export class Table_func_column_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public table_func_column(): Table_func_columnContext[]; - public table_func_column(i: number): Table_func_columnContext | null; - public table_func_column(i?: number): Table_func_columnContext[] | Table_func_columnContext | null { - if (i === undefined) { - return this.getRuleContexts(Table_func_columnContext); - } - - return this.getRuleContext(i, Table_func_columnContext); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public role_list(): Role_listContext | null { + return this.getRuleContext(0, Role_listContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_table_func_column_list; + public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext | null { + return this.getRuleContext(0, RowsecurityoptionalexprContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTable_func_column_list) { - listener.enterTable_func_column_list(this); - } + public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext | null { + return this.getRuleContext(0, RowsecurityoptionalwithcheckContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTable_func_column_list) { - listener.exitTable_func_column_list(this); - } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTable_func_column_list) { - return visitor.visitTable_func_column_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SELECT, 0); } -} - - -export class AlterfunctionstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INSERT, 0); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + } + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DELETE, 0); } - public alterFunctionTypeClause(): AlterFunctionTypeClauseContext { - return this.getRuleContext(0, AlterFunctionTypeClauseContext)!; + public KW_PERMISSIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PERMISSIVE, 0); } - public alterfunc_opt_list(): Alterfunc_opt_listContext { - return this.getRuleContext(0, Alterfunc_opt_listContext)!; + public KW_RESTRICTIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICTIVE, 0); } - public opt_restrict(): Opt_restrictContext | null { - return this.getRuleContext(0, Opt_restrictContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterfunctionstmt; + return PostgreSqlParser.RULE_createpolicystmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterfunctionstmt) { - listener.enterAlterfunctionstmt(this); + if(listener.enterCreatepolicystmt) { + listener.enterCreatepolicystmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterfunctionstmt) { - listener.exitAlterfunctionstmt(this); + if(listener.exitCreatepolicystmt) { + listener.exitCreatepolicystmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterfunctionstmt) { - return visitor.visitAlterfunctionstmt(this); + if (visitor.visitCreatepolicystmt) { + return visitor.visitCreatepolicystmt(this); } else { return visitor.visitChildren(this); } @@ -91086,44 +65932,53 @@ export class AlterfunctionstmtContext extends antlr.ParserRuleContext { } -export class AlterFunctionTypeClauseContext extends antlr.ParserRuleContext { +export class AlterpolicystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public KW_POLICY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_POLICY, 0)!; } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public role_list(): Role_listContext | null { + return this.getRuleContext(0, Role_listContext); + } + public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext | null { + return this.getRuleContext(0, RowsecurityoptionalexprContext); + } + public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext | null { + return this.getRuleContext(0, RowsecurityoptionalwithcheckContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterFunctionTypeClause; + return PostgreSqlParser.RULE_alterpolicystmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterFunctionTypeClause) { - listener.enterAlterFunctionTypeClause(this); + if(listener.enterAlterpolicystmt) { + listener.enterAlterpolicystmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterFunctionTypeClause) { - listener.exitAlterFunctionTypeClause(this); + if(listener.exitAlterpolicystmt) { + listener.exitAlterpolicystmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterFunctionTypeClause) { - return visitor.visitAlterFunctionTypeClause(this); + if (visitor.visitAlterpolicystmt) { + return visitor.visitAlterpolicystmt(this); } else { return visitor.visitChildren(this); } @@ -91131,65 +65986,89 @@ export class AlterFunctionTypeClauseContext extends antlr.ParserRuleContext { } -export class Alterfunc_opt_listContext extends antlr.ParserRuleContext { +export class AlterprocedurestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public common_func_opt_item(): Common_func_opt_itemContext[]; - public common_func_opt_item(i: number): Common_func_opt_itemContext | null; - public common_func_opt_item(i?: number): Common_func_opt_itemContext[] | Common_func_opt_itemContext | null { + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_PROCEDURE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0)!; + } + public procedure_name(): Procedure_nameContext { + return this.getRuleContext(0, Procedure_nameContext)!; + } + public procedure_action(): Procedure_actionContext[]; + public procedure_action(i: number): Procedure_actionContext | null; + public procedure_action(i?: number): Procedure_actionContext[] | Procedure_actionContext | null { if (i === undefined) { - return this.getRuleContexts(Common_func_opt_itemContext); + return this.getRuleContexts(Procedure_actionContext); } - return this.getRuleContext(i, Common_func_opt_itemContext); + return this.getRuleContext(i, Procedure_actionContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterfunc_opt_list; + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RENAME, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterfunc_opt_list) { - listener.enterAlterfunc_opt_list(this); - } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterfunc_opt_list) { - listener.exitAlterfunc_opt_list(this); - } + public procedure_name_create(): Procedure_name_createContext | null { + return this.getRuleContext(0, Procedure_name_createContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterfunc_opt_list) { - return visitor.visitAlterfunc_opt_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); } -} - - -export class Opt_restrictContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + } + public schema_name_create(): Schema_name_createContext | null { + return this.getRuleContext(0, Schema_name_createContext); + } + public KW_DEPENDS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEPENDS, 0); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); + } + public KW_EXTENSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public KW_RESTRICT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_RESTRICT, 0)!; + public func_args(): Func_argsContext | null { + return this.getRuleContext(0, Func_argsContext); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_restrict; + return PostgreSqlParser.RULE_alterprocedurestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_restrict) { - listener.enterOpt_restrict(this); + if(listener.enterAlterprocedurestmt) { + listener.enterAlterprocedurestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_restrict) { - listener.exitOpt_restrict(this); + if(listener.exitAlterprocedurestmt) { + listener.exitAlterprocedurestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_restrict) { - return visitor.visitOpt_restrict(this); + if (visitor.visitAlterprocedurestmt) { + return visitor.visitAlterprocedurestmt(this); } else { return visitor.visitChildren(this); } @@ -91197,53 +66076,71 @@ export class Opt_restrictContext extends antlr.ParserRuleContext { } -export class RemovefuncstmtContext extends antlr.ParserRuleContext { +export class Procedure_actionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DROP, 0)!; + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SECURITY, 0); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INVOKER, 0); } - public function_with_argtypes_list(): Function_with_argtypes_listContext | null { - return this.getRuleContext(0, Function_with_argtypes_listContext); + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFINER, 0); } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public KW_EXTERNAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); + } + + return this.getRuleContext(i, ColidContext); } - public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext | null { - return this.getRuleContext(0, Procedure_with_argtypes_listContext); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + public STAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.STAR, 0); } - public routine_with_argtypes_list(): Routine_with_argtypes_listContext | null { - return this.getRuleContext(0, Routine_with_argtypes_listContext); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public KW_RESET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESET, 0); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_removefuncstmt; + return PostgreSqlParser.RULE_procedure_action; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRemovefuncstmt) { - listener.enterRemovefuncstmt(this); + if(listener.enterProcedure_action) { + listener.enterProcedure_action(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRemovefuncstmt) { - listener.exitRemovefuncstmt(this); + if(listener.exitProcedure_action) { + listener.exitProcedure_action(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRemovefuncstmt) { - return visitor.visitRemovefuncstmt(this); + if (visitor.visitProcedure_action) { + return visitor.visitProcedure_action(this); } else { return visitor.visitChildren(this); } @@ -91251,41 +66148,38 @@ export class RemovefuncstmtContext extends antlr.ParserRuleContext { } -export class RemoveaggrstmtContext extends antlr.ParserRuleContext { +export class RowsecurityoptionalexprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DROP, 0)!; - } - public KW_AGGREGATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0)!; + public KW_USING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USING, 0)!; } - public aggregate_with_argtypes_list(): Aggregate_with_argtypes_listContext { - return this.getRuleContext(0, Aggregate_with_argtypes_listContext)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_removeaggrstmt; + return PostgreSqlParser.RULE_rowsecurityoptionalexpr; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRemoveaggrstmt) { - listener.enterRemoveaggrstmt(this); + if(listener.enterRowsecurityoptionalexpr) { + listener.enterRowsecurityoptionalexpr(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRemoveaggrstmt) { - listener.exitRemoveaggrstmt(this); + if(listener.exitRowsecurityoptionalexpr) { + listener.exitRowsecurityoptionalexpr(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRemoveaggrstmt) { - return visitor.visitRemoveaggrstmt(this); + if (visitor.visitRowsecurityoptionalexpr) { + return visitor.visitRowsecurityoptionalexpr(this); } else { return visitor.visitChildren(this); } @@ -91293,41 +66187,41 @@ export class RemoveaggrstmtContext extends antlr.ParserRuleContext { } -export class RemoveoperstmtContext extends antlr.ParserRuleContext { +export class RowsecurityoptionalwithcheckContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DROP, 0)!; + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public KW_OPERATOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; + public KW_CHECK(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CHECK, 0)!; } - public operator_with_argtypes_list(): Operator_with_argtypes_listContext { - return this.getRuleContext(0, Operator_with_argtypes_listContext)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_removeoperstmt; + return PostgreSqlParser.RULE_rowsecurityoptionalwithcheck; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRemoveoperstmt) { - listener.enterRemoveoperstmt(this); + if(listener.enterRowsecurityoptionalwithcheck) { + listener.enterRowsecurityoptionalwithcheck(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRemoveoperstmt) { - listener.exitRemoveoperstmt(this); + if(listener.exitRowsecurityoptionalwithcheck) { + listener.exitRowsecurityoptionalwithcheck(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRemoveoperstmt) { - return visitor.visitRemoveoperstmt(this); + if (visitor.visitRowsecurityoptionalwithcheck) { + return visitor.visitRowsecurityoptionalwithcheck(this); } else { return visitor.visitChildren(this); } @@ -91335,47 +66229,53 @@ export class RemoveoperstmtContext extends antlr.ParserRuleContext { } -export class Oper_argtypesContext extends antlr.ParserRuleContext { +export class CreateamstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } - - return this.getRuleContext(i, TypenameContext); + public KW_ACCESS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ACCESS, 0)!; + } + public KW_METHOD(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_METHOD, 0)!; + } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; + } + public KW_HANDLER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_HANDLER, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NONE, 0); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_oper_argtypes; + return PostgreSqlParser.RULE_createamstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOper_argtypes) { - listener.enterOper_argtypes(this); + if(listener.enterCreateamstmt) { + listener.enterCreateamstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOper_argtypes) { - listener.exitOper_argtypes(this); + if(listener.exitCreateamstmt) { + listener.exitCreateamstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOper_argtypes) { - return visitor.visitOper_argtypes(this); + if (visitor.visitCreateamstmt) { + return visitor.visitCreateamstmt(this); } else { return visitor.visitChildren(this); } @@ -91383,12 +66283,15 @@ export class Oper_argtypesContext extends antlr.ParserRuleContext { } -export class Any_operatorContext extends antlr.ParserRuleContext { +export class CreatetrigstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public all_op(): All_opContext { - return this.getRuleContext(0, All_opContext)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_TRIGGER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0)!; } public colid(): ColidContext[]; public colid(i: number): ColidContext | null; @@ -91399,109 +66302,130 @@ export class Any_operatorContext extends antlr.ParserRuleContext { return this.getRuleContext(i, ColidContext); } - public DOT(): antlr.TerminalNode[]; - public DOT(i: number): antlr.TerminalNode | null; - public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public triggeractiontime(): TriggeractiontimeContext { + return this.getRuleContext(0, TriggeractiontimeContext)!; + } + public triggerevents(): TriggereventsContext { + return this.getRuleContext(0, TriggereventsContext)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; + } + public table_name(): Table_nameContext { + return this.getRuleContext(0, Table_nameContext)!; + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; + } + public function_or_procedure(): Function_or_procedureContext { + return this.getRuleContext(0, Function_or_procedureContext)!; + } + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public triggerfuncargs(): TriggerfuncargsContext { + return this.getRuleContext(0, TriggerfuncargsContext)!; + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public opt_or_replace(): Opt_or_replaceContext | null { + return this.getRuleContext(0, Opt_or_replaceContext); + } + public KW_REFERENCING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFERENCING, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); + } + public triggerwhen(): TriggerwhenContext | null { + return this.getRuleContext(0, TriggerwhenContext); + } + public KW_ROW(): antlr.TerminalNode[]; + public KW_ROW(i: number): antlr.TerminalNode | null; + public KW_ROW(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.DOT); + return this.getTokens(PostgreSqlParser.KW_ROW); } else { - return this.getToken(PostgreSqlParser.DOT, i); + return this.getToken(PostgreSqlParser.KW_ROW, i); } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_any_operator; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAny_operator) { - listener.enterAny_operator(this); - } + public KW_STATEMENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATEMENT, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAny_operator) { - listener.exitAny_operator(this); - } + public KW_EACH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EACH, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAny_operator) { - return visitor.visitAny_operator(this); - } else { - return visitor.visitChildren(this); - } + public KW_NEW(): antlr.TerminalNode[]; + public KW_NEW(i: number): antlr.TerminalNode | null; + public KW_NEW(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NEW); + } else { + return this.getToken(PostgreSqlParser.KW_NEW, i); + } } -} - - -export class Operator_with_argtypes_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_OLD(): antlr.TerminalNode[]; + public KW_OLD(i: number): antlr.TerminalNode | null; + public KW_OLD(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_OLD); + } else { + return this.getToken(PostgreSqlParser.KW_OLD, i); + } } - public operator_with_argtypes(): Operator_with_argtypesContext[]; - public operator_with_argtypes(i: number): Operator_with_argtypesContext | null; - public operator_with_argtypes(i?: number): Operator_with_argtypesContext[] | Operator_with_argtypesContext | null { - if (i === undefined) { - return this.getRuleContexts(Operator_with_argtypesContext); - } - - return this.getRuleContext(i, Operator_with_argtypesContext); + public KW_TABLE(): antlr.TerminalNode[]; + public KW_TABLE(i: number): antlr.TerminalNode | null; + public KW_TABLE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_TABLE); + } else { + return this.getToken(PostgreSqlParser.KW_TABLE, i); + } } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_AS(): antlr.TerminalNode[]; + public KW_AS(i: number): antlr.TerminalNode | null; + public KW_AS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); + return this.getTokens(PostgreSqlParser.KW_AS); } else { - return this.getToken(PostgreSqlParser.COMMA, i); + return this.getToken(PostgreSqlParser.KW_AS, i); } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_operator_with_argtypes_list; + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOperator_with_argtypes_list) { - listener.enterOperator_with_argtypes_list(this); - } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOperator_with_argtypes_list) { - listener.exitOperator_with_argtypes_list(this); - } + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOperator_with_argtypes_list) { - return visitor.visitOperator_with_argtypes_list(this); - } else { - return visitor.visitChildren(this); + public constraintattributeElem(): ConstraintattributeElemContext[]; + public constraintattributeElem(i: number): ConstraintattributeElemContext | null; + public constraintattributeElem(i?: number): ConstraintattributeElemContext[] | ConstraintattributeElemContext | null { + if (i === undefined) { + return this.getRuleContexts(ConstraintattributeElemContext); } - } -} - -export class Operator_with_argtypesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public any_operator(): Any_operatorContext { - return this.getRuleContext(0, Any_operatorContext)!; - } - public oper_argtypes(): Oper_argtypesContext { - return this.getRuleContext(0, Oper_argtypesContext)!; + return this.getRuleContext(i, ConstraintattributeElemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_operator_with_argtypes; + return PostgreSqlParser.RULE_createtrigstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOperator_with_argtypes) { - listener.enterOperator_with_argtypes(this); + if(listener.enterCreatetrigstmt) { + listener.enterCreatetrigstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOperator_with_argtypes) { - listener.exitOperator_with_argtypes(this); + if(listener.exitCreatetrigstmt) { + listener.exitCreatetrigstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOperator_with_argtypes) { - return visitor.visitOperator_with_argtypes(this); + if (visitor.visitCreatetrigstmt) { + return visitor.visitCreatetrigstmt(this); } else { return visitor.visitChildren(this); } @@ -91509,32 +66433,38 @@ export class Operator_with_argtypesContext extends antlr.ParserRuleContext { } -export class DostmtContext extends antlr.ParserRuleContext { +export class TriggeractiontimeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DO, 0)!; + public KW_BEFORE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BEFORE, 0); + } + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AFTER, 0); + } + public KW_INSTEAD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INSTEAD, 0); } - public dostmt_opt_list(): Dostmt_opt_listContext { - return this.getRuleContext(0, Dostmt_opt_listContext)!; + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OF, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_dostmt; + return PostgreSqlParser.RULE_triggeractiontime; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDostmt) { - listener.enterDostmt(this); + if(listener.enterTriggeractiontime) { + listener.enterTriggeractiontime(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDostmt) { - listener.exitDostmt(this); + if(listener.exitTriggeractiontime) { + listener.exitTriggeractiontime(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDostmt) { - return visitor.visitDostmt(this); + if (visitor.visitTriggeractiontime) { + return visitor.visitTriggeractiontime(this); } else { return visitor.visitChildren(this); } @@ -91542,35 +66472,44 @@ export class DostmtContext extends antlr.ParserRuleContext { } -export class Dostmt_opt_listContext extends antlr.ParserRuleContext { +export class TriggereventsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public dostmt_opt_item(): Dostmt_opt_itemContext[]; - public dostmt_opt_item(i: number): Dostmt_opt_itemContext | null; - public dostmt_opt_item(i?: number): Dostmt_opt_itemContext[] | Dostmt_opt_itemContext | null { + public triggeroneevent(): TriggeroneeventContext[]; + public triggeroneevent(i: number): TriggeroneeventContext | null; + public triggeroneevent(i?: number): TriggeroneeventContext[] | TriggeroneeventContext | null { if (i === undefined) { - return this.getRuleContexts(Dostmt_opt_itemContext); + return this.getRuleContexts(TriggeroneeventContext); } - return this.getRuleContext(i, Dostmt_opt_itemContext); + return this.getRuleContext(i, TriggeroneeventContext); + } + public KW_OR(): antlr.TerminalNode[]; + public KW_OR(i: number): antlr.TerminalNode | null; + public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_OR); + } else { + return this.getToken(PostgreSqlParser.KW_OR, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_dostmt_opt_list; + return PostgreSqlParser.RULE_triggerevents; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDostmt_opt_list) { - listener.enterDostmt_opt_list(this); + if(listener.enterTriggerevents) { + listener.enterTriggerevents(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDostmt_opt_list) { - listener.exitDostmt_opt_list(this); + if(listener.exitTriggerevents) { + listener.exitTriggerevents(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDostmt_opt_list) { - return visitor.visitDostmt_opt_list(this); + if (visitor.visitTriggerevents) { + return visitor.visitTriggerevents(this); } else { return visitor.visitChildren(this); } @@ -91578,35 +66517,44 @@ export class Dostmt_opt_listContext extends antlr.ParserRuleContext { } -export class Dostmt_opt_itemContext extends antlr.ParserRuleContext { +export class TriggeroneeventContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INSERT, 0); } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DELETE, 0); } - public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { - return this.getRuleContext(0, Nonreservedword_or_sconstContext); + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + } + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OF, 0); + } + public column_list(): Column_listContext | null { + return this.getRuleContext(0, Column_listContext); + } + public KW_TRUNCATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_dostmt_opt_item; + return PostgreSqlParser.RULE_triggeroneevent; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDostmt_opt_item) { - listener.enterDostmt_opt_item(this); + if(listener.enterTriggeroneevent) { + listener.enterTriggeroneevent(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDostmt_opt_item) { - listener.exitDostmt_opt_item(this); + if(listener.exitTriggeroneevent) { + listener.exitTriggeroneevent(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDostmt_opt_item) { - return visitor.visitDostmt_opt_item(this); + if (visitor.visitTriggeroneevent) { + return visitor.visitTriggeroneevent(this); } else { return visitor.visitChildren(this); } @@ -91614,68 +66562,38 @@ export class Dostmt_opt_itemContext extends antlr.ParserRuleContext { } -export class CreatecaststmtContext extends antlr.ParserRuleContext { +export class TriggerwhenContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_CAST(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CAST, 0)!; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WHEN, 0)!; } public OPEN_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } - - return this.getRuleContext(i, TypenameContext); - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public CLOSE_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); - } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); - } - public cast_context(): Cast_contextContext | null { - return this.getRuleContext(0, Cast_contextContext); - } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); - } - public KW_INOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INOUT, 0); - } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createcaststmt; + return PostgreSqlParser.RULE_triggerwhen; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatecaststmt) { - listener.enterCreatecaststmt(this); + if(listener.enterTriggerwhen) { + listener.enterTriggerwhen(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatecaststmt) { - listener.exitCreatecaststmt(this); + if(listener.exitTriggerwhen) { + listener.exitTriggerwhen(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatecaststmt) { - return visitor.visitCreatecaststmt(this); + if (visitor.visitTriggerwhen) { + return visitor.visitTriggerwhen(this); } else { return visitor.visitChildren(this); } @@ -91683,35 +66601,38 @@ export class CreatecaststmtContext extends antlr.ParserRuleContext { } -export class Cast_contextContext extends antlr.ParserRuleContext { +export class Function_or_procedureContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public KW_IMPLICIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IMPLICIT, 0); + public function_name(): Function_nameContext | null { + return this.getRuleContext(0, Function_nameContext); } - public KW_ASSIGNMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ASSIGNMENT, 0); + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + } + public procedure_name(): Procedure_nameContext | null { + return this.getRuleContext(0, Procedure_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cast_context; + return PostgreSqlParser.RULE_function_or_procedure; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCast_context) { - listener.enterCast_context(this); + if(listener.enterFunction_or_procedure) { + listener.enterFunction_or_procedure(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCast_context) { - listener.exitCast_context(this); + if(listener.exitFunction_or_procedure) { + listener.exitFunction_or_procedure(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCast_context) { - return visitor.visitCast_context(this); + if (visitor.visitFunction_or_procedure) { + return visitor.visitFunction_or_procedure(this); } else { return visitor.visitChildren(this); } @@ -91719,32 +66640,44 @@ export class Cast_contextContext extends antlr.ParserRuleContext { } -export class Opt_if_existsContext extends antlr.ParserRuleContext { +export class TriggerfuncargsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IF, 0)!; + public triggerfuncarg(): TriggerfuncargContext[]; + public triggerfuncarg(i: number): TriggerfuncargContext | null; + public triggerfuncarg(i?: number): TriggerfuncargContext[] | TriggerfuncargContext | null { + if (i === undefined) { + return this.getRuleContexts(TriggerfuncargContext); + } + + return this.getRuleContext(i, TriggerfuncargContext); } - public KW_EXISTS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXISTS, 0)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_if_exists; + return PostgreSqlParser.RULE_triggerfuncargs; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_if_exists) { - listener.enterOpt_if_exists(this); + if(listener.enterTriggerfuncargs) { + listener.enterTriggerfuncargs(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_if_exists) { - listener.exitOpt_if_exists(this); + if(listener.exitTriggerfuncargs) { + listener.exitTriggerfuncargs(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_if_exists) { - return visitor.visitOpt_if_exists(this); + if (visitor.visitTriggerfuncargs) { + return visitor.visitTriggerfuncargs(this); } else { return visitor.visitChildren(this); } @@ -91752,56 +66685,38 @@ export class Opt_if_existsContext extends antlr.ParserRuleContext { } -export class CreatetransformstmtContext extends antlr.ParserRuleContext { +export class TriggerfuncargContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_TRANSFORM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0)!; - } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; - } - public typename(): TypenameContext { - return this.getRuleContext(0, TypenameContext)!; - } - public KW_LANGUAGE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public Integral(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Integral, 0); } - public transform_element_list(): Transform_element_listContext { - return this.getRuleContext(0, Transform_element_listContext)!; + public Numeric(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Numeric, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public opt_or_replace(): Opt_or_replaceContext | null { - return this.getRuleContext(0, Opt_or_replaceContext); + public collabel(): CollabelContext | null { + return this.getRuleContext(0, CollabelContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createtransformstmt; + return PostgreSqlParser.RULE_triggerfuncarg; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatetransformstmt) { - listener.enterCreatetransformstmt(this); + if(listener.enterTriggerfuncarg) { + listener.enterTriggerfuncarg(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatetransformstmt) { - listener.exitCreatetransformstmt(this); + if(listener.exitTriggerfuncarg) { + listener.exitTriggerfuncarg(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatetransformstmt) { - return visitor.visitCreatetransformstmt(this); + if (visitor.visitTriggerfuncarg) { + return visitor.visitTriggerfuncarg(this); } else { return visitor.visitChildren(this); } @@ -91809,71 +66724,50 @@ export class CreatetransformstmtContext extends antlr.ParserRuleContext { } -export class Transform_element_listContext extends antlr.ParserRuleContext { +export class ConstraintattributeElemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); + public KW_DEFERRABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); } - public KW_SQL(): antlr.TerminalNode[]; - public KW_SQL(i: number): antlr.TerminalNode | null; - public KW_SQL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_SQL); - } else { - return this.getToken(PostgreSqlParser.KW_SQL, i); - } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public KW_WITH(): antlr.TerminalNode[]; - public KW_WITH(i: number): antlr.TerminalNode | null; - public KW_WITH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_WITH); - } else { - return this.getToken(PostgreSqlParser.KW_WITH, i); - } + public KW_INITIALLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INITIALLY, 0); } - public KW_FUNCTION(): antlr.TerminalNode[]; - public KW_FUNCTION(i: number): antlr.TerminalNode | null; - public KW_FUNCTION(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_FUNCTION); - } else { - return this.getToken(PostgreSqlParser.KW_FUNCTION, i); - } + public KW_IMMEDIATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IMMEDIATE, 0); } - public function_with_argtypes(): Function_with_argtypesContext[]; - public function_with_argtypes(i: number): Function_with_argtypesContext | null; - public function_with_argtypes(i?: number): Function_with_argtypesContext[] | Function_with_argtypesContext | null { - if (i === undefined) { - return this.getRuleContexts(Function_with_argtypesContext); - } - - return this.getRuleContext(i, Function_with_argtypesContext); + public KW_DEFERRED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRED, 0); } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); + public KW_VALID(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALID, 0); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); + } + public KW_INHERIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INHERIT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transform_element_list; + return PostgreSqlParser.RULE_constraintattributeElem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransform_element_list) { - listener.enterTransform_element_list(this); + if(listener.enterConstraintattributeElem) { + listener.enterConstraintattributeElem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransform_element_list) { - listener.exitTransform_element_list(this); + if(listener.exitConstraintattributeElem) { + listener.exitConstraintattributeElem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransform_element_list) { - return visitor.visitTransform_element_list(this); + if (visitor.visitConstraintattributeElem) { + return visitor.visitConstraintattributeElem(this); } else { return visitor.visitChildren(this); } @@ -91881,86 +66775,77 @@ export class Transform_element_listContext extends antlr.ParserRuleContext { } -export class ReindexstmtContext extends antlr.ParserRuleContext { +export class CreateeventtrigstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_REINDEX(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REINDEX, 0)!; - } - public reindex_target_type(): Reindex_target_typeContext | null { - return this.getRuleContext(0, Reindex_target_typeContext); - } - public reindex_target_multitable(): Reindex_target_multitableContext | null { - return this.getRuleContext(0, Reindex_target_multitableContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public reindex_option_list(): Reindex_option_listContext | null { - return this.getRuleContext(0, Reindex_option_listContext); + public KW_EVENT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EVENT, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_TRIGGER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reindexstmt; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReindexstmt) { - listener.enterReindexstmt(this); - } + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReindexstmt) { - listener.exitReindexstmt(this); - } + public collabel(): CollabelContext { + return this.getRuleContext(0, CollabelContext)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReindexstmt) { - return visitor.visitReindexstmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; } -} - - -export class Reindex_target_typeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public function_or_procedure(): Function_or_procedureContext { + return this.getRuleContext(0, Function_or_procedureContext)!; } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public opt_concurrently(): Opt_concurrentlyContext | null { - return this.getRuleContext(0, Opt_concurrentlyContext); + public KW_WHEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHEN, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public event_trigger_when_item(): Event_trigger_when_itemContext[]; + public event_trigger_when_item(i: number): Event_trigger_when_itemContext | null; + public event_trigger_when_item(i?: number): Event_trigger_when_itemContext[] | Event_trigger_when_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Event_trigger_when_itemContext); + } + + return this.getRuleContext(i, Event_trigger_when_itemContext); } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); + public KW_AND(): antlr.TerminalNode[]; + public KW_AND(i: number): antlr.TerminalNode | null; + public KW_AND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_AND); + } else { + return this.getToken(PostgreSqlParser.KW_AND, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reindex_target_type; + return PostgreSqlParser.RULE_createeventtrigstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReindex_target_type) { - listener.enterReindex_target_type(this); + if(listener.enterCreateeventtrigstmt) { + listener.enterCreateeventtrigstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReindex_target_type) { - listener.exitReindex_target_type(this); + if(listener.exitCreateeventtrigstmt) { + listener.exitCreateeventtrigstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReindex_target_type) { - return visitor.visitReindex_target_type(this); + if (visitor.visitCreateeventtrigstmt) { + return visitor.visitCreateeventtrigstmt(this); } else { return visitor.visitChildren(this); } @@ -91968,47 +66853,50 @@ export class Reindex_target_typeContext extends antlr.ParserRuleContext { } -export class Reindex_target_multitableContext extends antlr.ParserRuleContext { +export class Event_trigger_when_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public opt_concurrently(): Opt_concurrentlyContext | null { - return this.getRuleContext(0, Opt_concurrentlyContext); + public KW_IN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IN, 0)!; } - public KW_SYSTEM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SYSTEM, 0); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public sconst(): SconstContext { + return this.getRuleContext(0, SconstContext)!; } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public database_name(): Database_nameContext | null { - return this.getRuleContext(0, Database_nameContext); + public notify_payload(): Notify_payloadContext[]; + public notify_payload(i: number): Notify_payloadContext | null; + public notify_payload(i?: number): Notify_payloadContext[] | Notify_payloadContext | null { + if (i === undefined) { + return this.getRuleContexts(Notify_payloadContext); + } + + return this.getRuleContext(i, Notify_payloadContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reindex_target_multitable; + return PostgreSqlParser.RULE_event_trigger_when_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReindex_target_multitable) { - listener.enterReindex_target_multitable(this); + if(listener.enterEvent_trigger_when_item) { + listener.enterEvent_trigger_when_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReindex_target_multitable) { - listener.exitReindex_target_multitable(this); + if(listener.exitEvent_trigger_when_item) { + listener.exitEvent_trigger_when_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReindex_target_multitable) { - return visitor.visitReindex_target_multitable(this); + if (visitor.visitEvent_trigger_when_item) { + return visitor.visitEvent_trigger_when_item(this); } else { return visitor.visitChildren(this); } @@ -92016,74 +66904,50 @@ export class Reindex_target_multitableContext extends antlr.ParserRuleContext { } -export class Reindex_option_listContext extends antlr.ParserRuleContext { +export class AltereventtrigstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public reindex_option_elem(): Reindex_option_elemContext[]; - public reindex_option_elem(i: number): Reindex_option_elemContext | null; - public reindex_option_elem(i?: number): Reindex_option_elemContext[] | Reindex_option_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Reindex_option_elemContext); - } - - return this.getRuleContext(i, Reindex_option_elemContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_EVENT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EVENT, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reindex_option_list; + public KW_TRIGGER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReindex_option_list) { - listener.enterReindex_option_list(this); - } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReindex_option_list) { - listener.exitReindex_option_list(this); - } + public KW_ENABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ENABLE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReindex_option_list) { - return visitor.visitReindex_option_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_DISABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISABLE, 0); } -} - - -export class Reindex_option_elemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_REPLICA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLICA, 0); } - public KW_VERBOSE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VERBOSE, 0)!; + public KW_ALWAYS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALWAYS, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reindex_option_elem; + return PostgreSqlParser.RULE_altereventtrigstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReindex_option_elem) { - listener.enterReindex_option_elem(this); + if(listener.enterAltereventtrigstmt) { + listener.enterAltereventtrigstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReindex_option_elem) { - listener.exitReindex_option_elem(this); + if(listener.exitAltereventtrigstmt) { + listener.exitAltereventtrigstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReindex_option_elem) { - return visitor.visitReindex_option_elem(this); + if (visitor.visitAltereventtrigstmt) { + return visitor.visitAltereventtrigstmt(this); } else { return visitor.visitChildren(this); } @@ -92091,44 +66955,56 @@ export class Reindex_option_elemContext extends antlr.ParserRuleContext { } -export class AltertblspcstmtContext extends antlr.ParserRuleContext { +export class CreateassertionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_TABLESPACE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0)!; + public KW_ASSERTION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ASSERTION, 0)!; } - public tablespace_name(): Tablespace_nameContext { - return this.getRuleContext(0, Tablespace_nameContext)!; + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); + public KW_CHECK(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CHECK, 0)!; } - public reloptions(): ReloptionsContext { - return this.getRuleContext(0, ReloptionsContext)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public constraintattributeElem(): ConstraintattributeElemContext[]; + public constraintattributeElem(i: number): ConstraintattributeElemContext | null; + public constraintattributeElem(i?: number): ConstraintattributeElemContext[] | ConstraintattributeElemContext | null { + if (i === undefined) { + return this.getRuleContexts(ConstraintattributeElemContext); + } + + return this.getRuleContext(i, ConstraintattributeElemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altertblspcstmt; + return PostgreSqlParser.RULE_createassertionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltertblspcstmt) { - listener.enterAltertblspcstmt(this); + if(listener.enterCreateassertionstmt) { + listener.enterCreateassertionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltertblspcstmt) { - listener.exitAltertblspcstmt(this); + if(listener.exitCreateassertionstmt) { + listener.exitCreateassertionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltertblspcstmt) { - return visitor.visitAltertblspcstmt(this); + if (visitor.visitCreateassertionstmt) { + return visitor.visitCreateassertionstmt(this); } else { return visitor.visitChildren(this); } @@ -92136,257 +67012,269 @@ export class AltertblspcstmtContext extends antlr.ParserRuleContext { } -export class RenamestmtContext extends antlr.ParserRuleContext { +export class DefinestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } public KW_AGGREGATE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { - return this.getRuleContext(0, Aggregate_with_argtypesContext); - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_RENAME, 0)!; + public function_name(): Function_nameContext | null { + return this.getRuleContext(0, Function_nameContext); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { + public old_aggr_elem(): Old_aggr_elemContext[]; + public old_aggr_elem(i: number): Old_aggr_elemContext | null; + public old_aggr_elem(i?: number): Old_aggr_elemContext[] | Old_aggr_elemContext | null { if (i === undefined) { - return this.getRuleContexts(NameContext); + return this.getRuleContexts(Old_aggr_elemContext); } - return this.getRuleContext(i, NameContext); - } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); - } - public KW_CONVERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); - } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); - } - public database_name(): Database_nameContext | null { - return this.getRuleContext(0, Database_nameContext); - } - public database_name_create(): Database_name_createContext | null { - return this.getRuleContext(0, Database_name_createContext); - } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + return this.getRuleContext(i, Old_aggr_elemContext); } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + public opt_or_replace(): Opt_or_replaceContext | null { + return this.getRuleContext(0, Opt_or_replaceContext); } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATA, 0); + public aggr_args(): Aggr_argsContext | null { + return this.getRuleContext(0, Aggr_argsContext); } - public KW_WRAPPER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); + public definition(): DefinitionContext | null { + return this.getRuleContext(0, DefinitionContext); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public function_name_create(): Function_name_createContext | null { - return this.getRuleContext(0, Function_name_createContext); + public any_operator(): Any_operatorContext | null { + return this.getRuleContext(0, Any_operatorContext); } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public roleid(): RoleidContext[]; - public roleid(i: number): RoleidContext | null; - public roleid(i?: number): RoleidContext[] | RoleidContext | null { + public any_name(): Any_nameContext[]; + public any_name(i: number): Any_nameContext | null; + public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { if (i === undefined) { - return this.getRuleContexts(RoleidContext); + return this.getRuleContexts(Any_nameContext); } - return this.getRuleContext(i, RoleidContext); - } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); - } - public opt_procedural(): Opt_proceduralContext | null { - return this.getRuleContext(0, Opt_proceduralContext); - } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); - } - public KW_CLASS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLASS, 0); - } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public KW_FAMILY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FAMILY, 0); - } - public KW_POLICY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_POLICY, 0); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + return this.getRuleContext(i, Any_nameContext); } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public KW_ENUM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ENUM, 0); } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public tablefuncelementlist(): TablefuncelementlistContext | null { + return this.getRuleContext(0, TablefuncelementlistContext); } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public procedure_name_create(): Procedure_name_createContext | null { - return this.getRuleContext(0, Procedure_name_createContext); + public notify_payload(): Notify_payloadContext[]; + public notify_payload(i: number): Notify_payloadContext | null; + public notify_payload(i?: number): Notify_payloadContext[] | Notify_payloadContext | null { + if (i === undefined) { + return this.getRuleContexts(Notify_payloadContext); + } + + return this.getRuleContext(i, Notify_payloadContext); } - public KW_PUBLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + public KW_RANGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RANGE, 0); } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + public KW_PARSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARSER, 0); } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); + public KW_DICTIONARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); } - public schema_name_create(): Schema_name_createContext | null { - return this.getRuleContext(0, Schema_name_createContext); + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); } - public KW_SERVER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERVER, 0); + public KW_CONFIGURATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); } - public KW_SUBSCRIPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public relation_expr(): Relation_exprContext | null { - return this.getRuleContext(0, Relation_exprContext); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public table_name_create(): Table_name_createContext | null { - return this.getRuleContext(0, Table_name_createContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_definestmt; } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterDefinestmt) { + listener.enterDefinestmt(this); + } } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitDefinestmt) { + listener.exitDefinestmt(this); + } } - public view_name(): View_nameContext | null { - return this.getRuleContext(0, View_nameContext); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitDefinestmt) { + return visitor.visitDefinestmt(this); + } else { + return visitor.visitChildren(this); + } } - public view_name_create(): View_name_createContext | null { - return this.getRuleContext(0, View_name_createContext); +} + + +export class DefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_MATERIALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); + public def_elem(): Def_elemContext[]; + public def_elem(i: number): Def_elemContext | null; + public def_elem(i?: number): Def_elemContext[] | Def_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Def_elemContext); + } + + return this.getRuleContext(i, Def_elemContext); } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public column_name_create(): Column_name_createContext | null { - return this.getRuleContext(0, Column_name_createContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLUMN, 0); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_definition; } - public KW_RULE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RULE, 0); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterDefinition) { + listener.enterDefinition(this); + } } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitDefinition) { + listener.exitDefinition(this); + } } - public KW_EVENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EVENT, 0); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitDefinition) { + return visitor.visitDefinition(this); + } else { + return visitor.visitChildren(this); + } } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); +} + + +export class Def_elemContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); + public collabel(): CollabelContext { + return this.getRuleContext(0, CollabelContext)!; } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); } - public tablespace_name(): Tablespace_nameContext | null { - return this.getRuleContext(0, Tablespace_nameContext); + public def_arg(): Def_argContext | null { + return this.getRuleContext(0, Def_argContext); } - public tablespace_name_create(): Tablespace_name_createContext | null { - return this.getRuleContext(0, Tablespace_name_createContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_def_elem; } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterDef_elem) { + listener.enterDef_elem(this); + } } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitDef_elem) { + listener.exitDef_elem(this); + } } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitDef_elem) { + return visitor.visitDef_elem(this); + } else { + return visitor.visitChildren(this); + } } - public KW_PARSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARSER, 0); +} + + +export class Def_argContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_DICTIONARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + public func_type(): Func_typeContext | null { + return this.getRuleContext(0, Func_typeContext); } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + public reserved_keyword(): Reserved_keywordContext | null { + return this.getRuleContext(0, Reserved_keywordContext); } - public KW_CONFIGURATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + public qual_all_op(): Qual_all_opContext | null { + return this.getRuleContext(0, Qual_all_opContext); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } - public KW_ATTRIBUTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ATTRIBUTE, 0); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public KW_NONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NONE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_renamestmt; + return PostgreSqlParser.RULE_def_arg; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRenamestmt) { - listener.enterRenamestmt(this); + if(listener.enterDef_arg) { + listener.enterDef_arg(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRenamestmt) { - listener.exitRenamestmt(this); + if(listener.exitDef_arg) { + listener.exitDef_arg(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRenamestmt) { - return visitor.visitRenamestmt(this); + if (visitor.visitDef_arg) { + return visitor.visitDef_arg(this); } else { return visitor.visitChildren(this); } @@ -92394,32 +67282,35 @@ export class RenamestmtContext extends antlr.ParserRuleContext { } -export class Opt_set_dataContext extends antlr.ParserRuleContext { +export class Old_aggr_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_DATA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATA, 0)!; + public EQUAL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.EQUAL, 0)!; + } + public def_arg(): Def_argContext { + return this.getRuleContext(0, Def_argContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_set_data; + return PostgreSqlParser.RULE_old_aggr_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_set_data) { - listener.enterOpt_set_data(this); + if(listener.enterOld_aggr_elem) { + listener.enterOld_aggr_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_set_data) { - listener.exitOpt_set_data(this); + if(listener.exitOld_aggr_elem) { + listener.exitOld_aggr_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_set_data) { - return visitor.visitOpt_set_data(this); + if (visitor.visitOld_aggr_elem) { + return visitor.visitOld_aggr_elem(this); } else { return visitor.visitChildren(this); } @@ -92427,92 +67318,65 @@ export class Opt_set_dataContext extends antlr.ParserRuleContext { } -export class AlterobjectdependsstmtContext extends antlr.ParserRuleContext { +export class AlterenumstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public KW_ALTER(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); - } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; } - public KW_DEPENDS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DEPENDS, 0)!; + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } - public KW_ON(): antlr.TerminalNode[]; - public KW_ON(i: number): antlr.TerminalNode | null; - public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_ON); - } else { - return this.getToken(PostgreSqlParser.KW_ON, i); - } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); } - public KW_EXTENSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; + public KW_VALUE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VALUE, 0)!; } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { + public sconst(): SconstContext[]; + public sconst(i: number): SconstContext | null; + public sconst(i?: number): SconstContext[] | SconstContext | null { if (i === undefined) { - return this.getRuleContexts(NameContext); + return this.getRuleContexts(SconstContext); } - return this.getRuleContext(i, NameContext); - } - public opt_no(): Opt_noContext | null { - return this.getRuleContext(0, Opt_noContext); - } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); - } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); - } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); - } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); - } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + return this.getRuleContext(i, SconstContext); } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public KW_MATERIALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); + public KW_BEFORE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BEFORE, 0); } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AFTER, 0); } - public view_name(): View_nameContext | null { - return this.getRuleContext(0, View_nameContext); + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RENAME, 0); } - public KW_INDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INDEX, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterobjectdependsstmt; + return PostgreSqlParser.RULE_alterenumstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterobjectdependsstmt) { - listener.enterAlterobjectdependsstmt(this); + if(listener.enterAlterenumstmt) { + listener.enterAlterenumstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterobjectdependsstmt) { - listener.exitAlterobjectdependsstmt(this); + if(listener.exitAlterenumstmt) { + listener.exitAlterenumstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterobjectdependsstmt) { - return visitor.visitAlterobjectdependsstmt(this); + if (visitor.visitAlterenumstmt) { + return visitor.visitAlterenumstmt(this); } else { return visitor.visitChildren(this); } @@ -92520,29 +67384,35 @@ export class AlterobjectdependsstmtContext extends antlr.ParserRuleContext { } -export class Opt_noContext extends antlr.ParserRuleContext { +export class Opt_if_not_existsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_NO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NO, 0)!; + public KW_IF(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IF, 0)!; + } + public KW_NOT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_NOT, 0)!; + } + public KW_EXISTS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXISTS, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_no; + return PostgreSqlParser.RULE_opt_if_not_exists; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_no) { - listener.enterOpt_no(this); + if(listener.enterOpt_if_not_exists) { + listener.enterOpt_if_not_exists(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_no) { - listener.exitOpt_no(this); + if(listener.exitOpt_if_not_exists) { + listener.exitOpt_if_not_exists(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_no) { - return visitor.visitOpt_no(this); + if (visitor.visitOpt_if_not_exists) { + return visitor.visitOpt_if_not_exists(this); } else { return visitor.visitChildren(this); } @@ -92550,146 +67420,155 @@ export class Opt_noContext extends antlr.ParserRuleContext { } -export class AlterobjectschemastmtContext extends antlr.ParserRuleContext { +export class CreateopclassstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); - } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { - return this.getRuleContext(0, Aggregate_with_argtypesContext); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0)!; - } - public schema_name(): Schema_nameContext { - return this.getRuleContext(0, Schema_nameContext)!; - } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); - } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_CONVERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); + public KW_OPERATOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; } - public KW_DOMAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + public KW_CLASS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CLASS, 0)!; } - public KW_EXTENSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); + public any_name(): Any_nameContext[]; + public any_name(i: number): Any_nameContext | null; + public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(Any_nameContext); + } + + return this.getRuleContext(i, Any_nameContext); } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public KW_FOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOR, 0)!; } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); + public typename(): TypenameContext { + return this.getRuleContext(0, TypenameContext)!; } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); + public table_access_method_clause(): Table_access_method_clauseContext { + return this.getRuleContext(0, Table_access_method_clauseContext)!; } - public operator_with_argtypes(): Operator_with_argtypesContext | null { - return this.getRuleContext(0, Operator_with_argtypesContext); + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; } - public KW_CLASS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLASS, 0); + public opclass_item(): Opclass_itemContext[]; + public opclass_item(i: number): Opclass_itemContext | null; + public opclass_item(i?: number): Opclass_itemContext[] | Opclass_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Opclass_itemContext); + } + + return this.getRuleContext(i, Opclass_itemContext); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public KW_FAMILY(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_FAMILY, 0); } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_createopclassstmt; } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterCreateopclassstmt) { + listener.enterCreateopclassstmt(this); + } } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitCreateopclassstmt) { + listener.exitCreateopclassstmt(this); + } } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitCreateopclassstmt) { + return visitor.visitCreateopclassstmt(this); + } else { + return visitor.visitChildren(this); + } } - public relation_expr(): Relation_exprContext | null { - return this.getRuleContext(0, Relation_exprContext); +} + + +export class Opclass_itemContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); + public Integral(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Integral, 0); } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); + public any_operator(): Any_operatorContext | null { + return this.getRuleContext(0, Any_operatorContext); } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); + public oper_argtypes(): Oper_argtypesContext | null { + return this.getRuleContext(0, Oper_argtypesContext); } - public KW_PARSER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARSER, 0); + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public KW_DICTIONARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + public KW_RECHECK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RECHECK, 0); } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } - public KW_CONFIGURATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ORDER, 0); } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public view_name(): View_nameContext | null { - return this.getRuleContext(0, View_nameContext); + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); } - public KW_MATERIALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); + public prep_type_clause(): Prep_type_clauseContext | null { + return this.getRuleContext(0, Prep_type_clauseContext); } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + public KW_STORAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORAGE, 0); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterobjectschemastmt; + return PostgreSqlParser.RULE_opclass_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterobjectschemastmt) { - listener.enterAlterobjectschemastmt(this); + if(listener.enterOpclass_item) { + listener.enterOpclass_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterobjectschemastmt) { - listener.exitAlterobjectschemastmt(this); + if(listener.exitOpclass_item) { + listener.exitOpclass_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterobjectschemastmt) { - return visitor.visitAlterobjectschemastmt(this); + if (visitor.visitOpclass_item) { + return visitor.visitOpclass_item(this); } else { return visitor.visitChildren(this); } @@ -92697,47 +67576,41 @@ export class AlterobjectschemastmtContext extends antlr.ParserRuleContext { } -export class AlteroperatorstmtContext extends antlr.ParserRuleContext { +export class CreateopfamilystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } public KW_OPERATOR(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; } - public operator_with_argtypes(): Operator_with_argtypesContext { - return this.getRuleContext(0, Operator_with_argtypesContext)!; - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_FAMILY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0)!; } - public operator_def_list(): Operator_def_listContext { - return this.getRuleContext(0, Operator_def_listContext)!; + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public table_access_method_clause(): Table_access_method_clauseContext { + return this.getRuleContext(0, Table_access_method_clauseContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alteroperatorstmt; + return PostgreSqlParser.RULE_createopfamilystmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlteroperatorstmt) { - listener.enterAlteroperatorstmt(this); + if(listener.enterCreateopfamilystmt) { + listener.enterCreateopfamilystmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlteroperatorstmt) { - listener.exitAlteroperatorstmt(this); + if(listener.exitCreateopfamilystmt) { + listener.exitCreateopfamilystmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlteroperatorstmt) { - return visitor.visitAlteroperatorstmt(this); + if (visitor.visitCreateopfamilystmt) { + return visitor.visitCreateopfamilystmt(this); } else { return visitor.visitChildren(this); } @@ -92745,18 +67618,48 @@ export class AlteroperatorstmtContext extends antlr.ParserRuleContext { } -export class Operator_def_listContext extends antlr.ParserRuleContext { +export class AlteropfamilystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public operator_def_elem(): Operator_def_elemContext[]; - public operator_def_elem(i: number): Operator_def_elemContext | null; - public operator_def_elem(i?: number): Operator_def_elemContext[] | Operator_def_elemContext | null { + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_OPERATOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; + } + public KW_FAMILY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } + public table_access_method_clause(): Table_access_method_clauseContext { + return this.getRuleContext(0, Table_access_method_clauseContext)!; + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); + } + public opclass_item(): Opclass_itemContext[]; + public opclass_item(i: number): Opclass_itemContext | null; + public opclass_item(i?: number): Opclass_itemContext[] | Opclass_itemContext | null { if (i === undefined) { - return this.getRuleContexts(Operator_def_elemContext); + return this.getRuleContexts(Opclass_itemContext); } - return this.getRuleContext(i, Operator_def_elemContext); + return this.getRuleContext(i, Opclass_itemContext); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); + } + public opclass_drop(): Opclass_dropContext[]; + public opclass_drop(i: number): Opclass_dropContext | null; + public opclass_drop(i?: number): Opclass_dropContext[] | Opclass_dropContext | null { + if (i === undefined) { + return this.getRuleContexts(Opclass_dropContext); + } + + return this.getRuleContext(i, Opclass_dropContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -92768,21 +67671,21 @@ export class Operator_def_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_operator_def_list; + return PostgreSqlParser.RULE_alteropfamilystmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOperator_def_list) { - listener.enterOperator_def_list(this); + if(listener.enterAlteropfamilystmt) { + listener.enterAlteropfamilystmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOperator_def_list) { - listener.exitOperator_def_list(this); + if(listener.exitAlteropfamilystmt) { + listener.exitAlteropfamilystmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOperator_def_list) { - return visitor.visitOperator_def_list(this); + if (visitor.visitAlteropfamilystmt) { + return visitor.visitAlteropfamilystmt(this); } else { return visitor.visitChildren(this); } @@ -92790,38 +67693,38 @@ export class Operator_def_listContext extends antlr.ParserRuleContext { } -export class Operator_def_elemContext extends antlr.ParserRuleContext { +export class Opclass_dropContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; + public Integral(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.Integral, 0)!; } - public EQUAL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.EQUAL, 0)!; + public prep_type_clause(): Prep_type_clauseContext { + return this.getRuleContext(0, Prep_type_clauseContext)!; } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NONE, 0); + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public operator_def_arg(): Operator_def_argContext | null { - return this.getRuleContext(0, Operator_def_argContext); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_operator_def_elem; + return PostgreSqlParser.RULE_opclass_drop; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOperator_def_elem) { - listener.enterOperator_def_elem(this); + if(listener.enterOpclass_drop) { + listener.enterOpclass_drop(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOperator_def_elem) { - listener.exitOperator_def_elem(this); + if(listener.exitOpclass_drop) { + listener.exitOpclass_drop(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOperator_def_elem) { - return visitor.visitOperator_def_elem(this); + if (visitor.visitOpclass_drop) { + return visitor.visitOpclass_drop(this); } else { return visitor.visitChildren(this); } @@ -92829,41 +67732,44 @@ export class Operator_def_elemContext extends antlr.ParserRuleContext { } -export class Operator_def_argContext extends antlr.ParserRuleContext { +export class ReassignownedstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_type(): Func_typeContext | null { - return this.getRuleContext(0, Func_typeContext); + public KW_REASSIGN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REASSIGN, 0)!; } - public reserved_keyword(): Reserved_keywordContext | null { - return this.getRuleContext(0, Reserved_keywordContext); + public KW_OWNED(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OWNED, 0)!; } - public qual_all_op(): Qual_all_opContext | null { - return this.getRuleContext(0, Qual_all_opContext); + public KW_BY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BY, 0)!; } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public role_list(): Role_listContext { + return this.getRuleContext(0, Role_listContext)!; } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; + } + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_operator_def_arg; + return PostgreSqlParser.RULE_reassignownedstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOperator_def_arg) { - listener.enterOperator_def_arg(this); + if(listener.enterReassignownedstmt) { + listener.enterReassignownedstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOperator_def_arg) { - listener.exitOperator_def_arg(this); + if(listener.exitReassignownedstmt) { + listener.exitReassignownedstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOperator_def_arg) { - return visitor.visitOperator_def_arg(this); + if (visitor.visitReassignownedstmt) { + return visitor.visitReassignownedstmt(this); } else { return visitor.visitChildren(this); } @@ -92871,153 +67777,198 @@ export class Operator_def_argContext extends antlr.ParserRuleContext { } -export class AltertypestmtContext extends antlr.ParserRuleContext { +export class DropstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_DROP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DROP, 0)!; } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; + public name_list(): Name_listContext | null { + return this.getRuleContext(0, Name_listContext); + } + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); + } + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); + } + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); + } + public KW_CONVERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); + } + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); + } + public KW_PUBLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + } + public KW_SERVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERVER, 0); + } + public KW_ACCESS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ACCESS, 0); + } + public KW_METHOD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_METHOD, 0); + } + public KW_EVENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EVENT, 0); + } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + } + public KW_EXTENSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); + } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); + } + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); + } + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); + } + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; + public KW_PARSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARSER, 0); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; + public KW_DICTIONARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); } - public operator_def_list(): Operator_def_listContext { - return this.getRuleContext(0, Operator_def_listContext)!; + public KW_CONFIGURATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altertypestmt; + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltertypestmt) { - listener.enterAltertypestmt(this); - } + public KW_PROCEDURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltertypestmt) { - listener.exitAltertypestmt(this); - } + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltertypestmt) { - return visitor.visitAltertypestmt(this); - } else { - return visitor.visitChildren(this); + public view_name(): View_nameContext[]; + public view_name(i: number): View_nameContext | null; + public view_name(i?: number): View_nameContext[] | View_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(View_nameContext); } - } -} - -export class AlterownerstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, View_nameContext); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } - public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { - return this.getRuleContext(0, Aggregate_with_argtypesContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public KW_OWNER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OWNER, 0)!; + public table_name_list(): Table_name_listContext | null { + return this.getRuleContext(0, Table_name_listContext); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; + public schema_name_list(): Schema_name_listContext | null { + return this.getRuleContext(0, Schema_name_listContext); } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } public any_name(): Any_nameContext | null { return this.getRuleContext(0, Any_nameContext); } - public KW_CONVERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); + public KW_POLICY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_POLICY, 0); } - public KW_DATABASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0); + public KW_RULE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RULE, 0); } - public database_name(): Database_nameContext | null { - return this.getRuleContext(0, Database_nameContext); + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { + if (i === undefined) { + return this.getRuleContexts(TypenameContext); + } + + return this.getRuleContext(i, TypenameContext); + } + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } public KW_DOMAIN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); } - public KW_FUNCTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); - } - public function_with_argtypes(): Function_with_argtypesContext | null { - return this.getRuleContext(0, Function_with_argtypesContext); - } - public KW_LANGUAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + public KW_CONCURRENTLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public any_name_list(): Any_name_listContext | null { + return this.getRuleContext(0, Any_name_listContext); } - public opt_procedural(): Opt_proceduralContext | null { - return this.getRuleContext(0, Opt_proceduralContext); + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CAST, 0); } - public KW_LARGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LARGE, 0); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_OBJECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OBJECT, 0); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public KW_OPERATOR(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public operator_with_argtypes(): Operator_with_argtypesContext | null { - return this.getRuleContext(0, Operator_with_argtypesContext); + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } public KW_CLASS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CLASS, 0); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } public KW_FAMILY(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_FAMILY, 0); } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); - } - public procedure_with_argtypes(): Procedure_with_argtypesContext | null { - return this.getRuleContext(0, Procedure_with_argtypesContext); - } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); - } - public routine_with_argtypes(): Routine_with_argtypesContext | null { - return this.getRuleContext(0, Routine_with_argtypesContext); + public KW_OWNED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNED, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); + public role_list(): Role_listContext | null { + return this.getRuleContext(0, Role_listContext); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public KW_SUBSCRIPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); } public KW_TABLESPACE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); @@ -93025,61 +67976,67 @@ export class AlterownerstmtContext extends antlr.ParserRuleContext { public tablespace_name(): Tablespace_nameContext | null { return this.getRuleContext(0, Tablespace_nameContext); } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); - } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); - } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); + public KW_TRANSFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); } - public KW_DICTIONARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public KW_CONFIGURATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + public KW_USER(): antlr.TerminalNode[]; + public KW_USER(i: number): antlr.TerminalNode | null; + public KW_USER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_USER); + } else { + return this.getToken(PostgreSqlParser.KW_USER, i); + } } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DATA, 0); + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); } - public KW_WRAPPER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); + public KW_MAPPING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MAPPING, 0); } - public KW_SERVER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERVER, 0); + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); } - public KW_EVENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EVENT, 0); + public KW_DATABASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0); } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + public database_name(): Database_nameContext | null { + return this.getRuleContext(0, Database_nameContext); } - public KW_PUBLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + public KW_FORCE(): antlr.TerminalNode[]; + public KW_FORCE(i: number): antlr.TerminalNode | null; + public KW_FORCE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FORCE); + } else { + return this.getToken(PostgreSqlParser.KW_FORCE, i); + } } - public KW_SUBSCRIPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterownerstmt; + return PostgreSqlParser.RULE_dropstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterownerstmt) { - listener.enterAlterownerstmt(this); + if(listener.enterDropstmt) { + listener.enterDropstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterownerstmt) { - listener.exitAlterownerstmt(this); + if(listener.exitDropstmt) { + listener.exitDropstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterownerstmt) { - return visitor.visitAlterownerstmt(this); + if (visitor.visitDropstmt) { + return visitor.visitDropstmt(this); } else { return visitor.visitChildren(this); } @@ -93087,41 +68044,80 @@ export class AlterownerstmtContext extends antlr.ParserRuleContext { } -export class CreatepublicationstmtContext extends antlr.ParserRuleContext { +export class Object_type_any_nameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public KW_PUBLICATION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0)!; + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); + } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public opt_publication_for_tables(): Opt_publication_for_tablesContext | null { - return this.getRuleContext(0, Opt_publication_for_tablesContext); + public view_name(): View_nameContext | null { + return this.getRuleContext(0, View_nameContext); } - public opt_definition(): Opt_definitionContext | null { - return this.getRuleContext(0, Opt_definitionContext); + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); + } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); + } + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); + } + public KW_CONVERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); + } + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); + } + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); + } + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); + } + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); + } + public KW_PARSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARSER, 0); + } + public KW_DICTIONARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + } + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + } + public KW_CONFIGURATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createpublicationstmt; + return PostgreSqlParser.RULE_object_type_any_name; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatepublicationstmt) { - listener.enterCreatepublicationstmt(this); + if(listener.enterObject_type_any_name) { + listener.enterObject_type_any_name(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatepublicationstmt) { - listener.exitCreatepublicationstmt(this); + if(listener.exitObject_type_any_name) { + listener.exitObject_type_any_name(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatepublicationstmt) { - return visitor.visitCreatepublicationstmt(this); + if (visitor.visitObject_type_any_name) { + return visitor.visitObject_type_any_name(this); } else { return visitor.visitChildren(this); } @@ -93129,29 +68125,86 @@ export class CreatepublicationstmtContext extends antlr.ParserRuleContext { } -export class Opt_publication_for_tablesContext extends antlr.ParserRuleContext { +export class Object_type_nameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public publication_for_tables(): Publication_for_tablesContext { - return this.getRuleContext(0, Publication_for_tablesContext)!; + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public KW_EVENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EVENT, 0); + } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + } + public KW_ACCESS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ACCESS, 0); + } + public KW_METHOD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_METHOD, 0); + } + public KW_EXTENSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); + } + public KW_PUBLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + } + public KW_SERVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERVER, 0); + } + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); + } + public KW_SUBSCRIPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); + } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); + } + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); + } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + } + public KW_PROCEDURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + } + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); + } + public KW_DATABASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0); + } + public database_name(): Database_nameContext | null { + return this.getRuleContext(0, Database_nameContext); + } + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_publication_for_tables; + return PostgreSqlParser.RULE_object_type_name; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_publication_for_tables) { - listener.enterOpt_publication_for_tables(this); + if(listener.enterObject_type_name) { + listener.enterObject_type_name(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_publication_for_tables) { - listener.exitOpt_publication_for_tables(this); + if(listener.exitObject_type_name) { + listener.exitObject_type_name(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_publication_for_tables) { - return visitor.visitOpt_publication_for_tables(this); + if (visitor.visitObject_type_name) { + return visitor.visitObject_type_name(this); } else { return visitor.visitChildren(this); } @@ -93159,41 +68212,44 @@ export class Opt_publication_for_tablesContext extends antlr.ParserRuleContext { } -export class Publication_for_tablesContext extends antlr.ParserRuleContext { +export class Any_name_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; - } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); - } - public relation_expr_list(): Relation_expr_listContext | null { - return this.getRuleContext(0, Relation_expr_listContext); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public any_name(): Any_nameContext[]; + public any_name(i: number): Any_nameContext | null; + public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(Any_nameContext); + } + + return this.getRuleContext(i, Any_nameContext); } - public KW_TABLES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLES, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_publication_for_tables; + return PostgreSqlParser.RULE_any_name_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPublication_for_tables) { - listener.enterPublication_for_tables(this); + if(listener.enterAny_name_list) { + listener.enterAny_name_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPublication_for_tables) { - listener.exitPublication_for_tables(this); + if(listener.exitAny_name_list) { + listener.exitAny_name_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPublication_for_tables) { - return visitor.visitPublication_for_tables(this); + if (visitor.visitAny_name_list) { + return visitor.visitAny_name_list(this); } else { return visitor.visitChildren(this); } @@ -93201,68 +68257,32 @@ export class Publication_for_tablesContext extends antlr.ParserRuleContext { } -export class AlterpublicationstmtContext extends antlr.ParserRuleContext { +export class Any_nameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_PUBLICATION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0)!; - } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { - if (i === undefined) { - return this.getRuleContexts(NameContext); - } - - return this.getRuleContext(i, NameContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public definition(): DefinitionContext | null { - return this.getRuleContext(0, DefinitionContext); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public publication_relation_expr_list(): Publication_relation_expr_listContext | null { - return this.getRuleContext(0, Publication_relation_expr_listContext); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public KW_OWNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNER, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); - } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public KW_RENAME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RENAME, 0); + public attrs(): AttrsContext | null { + return this.getRuleContext(0, AttrsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterpublicationstmt; + return PostgreSqlParser.RULE_any_name; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterpublicationstmt) { - listener.enterAlterpublicationstmt(this); + if(listener.enterAny_name) { + listener.enterAny_name(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterpublicationstmt) { - listener.exitAlterpublicationstmt(this); + if(listener.exitAny_name) { + listener.exitAny_name(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterpublicationstmt) { - return visitor.visitAlterpublicationstmt(this); + if (visitor.visitAny_name) { + return visitor.visitAny_name(this); } else { return visitor.visitChildren(this); } @@ -93270,50 +68290,44 @@ export class AlterpublicationstmtContext extends antlr.ParserRuleContext { } -export class CreatesubscriptionstmtContext extends antlr.ParserRuleContext { +export class AttrsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_SUBSCRIPTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_CONNECTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CONNECTION, 0)!; - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public KW_PUBLICATION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0)!; - } - public publication_name_list(): Publication_name_listContext { - return this.getRuleContext(0, Publication_name_listContext)!; + public DOT(): antlr.TerminalNode[]; + public DOT(i: number): antlr.TerminalNode | null; + public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.DOT); + } else { + return this.getToken(PostgreSqlParser.DOT, i); + } } - public opt_definition(): Opt_definitionContext | null { - return this.getRuleContext(0, Opt_definitionContext); + public collabel(): CollabelContext[]; + public collabel(i: number): CollabelContext | null; + public collabel(i?: number): CollabelContext[] | CollabelContext | null { + if (i === undefined) { + return this.getRuleContexts(CollabelContext); + } + + return this.getRuleContext(i, CollabelContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createsubscriptionstmt; + return PostgreSqlParser.RULE_attrs; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatesubscriptionstmt) { - listener.enterCreatesubscriptionstmt(this); + if(listener.enterAttrs) { + listener.enterAttrs(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatesubscriptionstmt) { - listener.exitCreatesubscriptionstmt(this); + if(listener.exitAttrs) { + listener.exitAttrs(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatesubscriptionstmt) { - return visitor.visitCreatesubscriptionstmt(this); + if (visitor.visitAttrs) { + return visitor.visitAttrs(this); } else { return visitor.visitChildren(this); } @@ -93321,18 +68335,24 @@ export class CreatesubscriptionstmtContext extends antlr.ParserRuleContext { } -export class Publication_name_listContext extends antlr.ParserRuleContext { +export class TruncatestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public publication_name_item(): Publication_name_itemContext[]; - public publication_name_item(i: number): Publication_name_itemContext | null; - public publication_name_item(i?: number): Publication_name_itemContext[] | Publication_name_itemContext | null { + public KW_TRUNCATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0)!; + } + public truncate_table(): Truncate_tableContext[]; + public truncate_table(i: number): Truncate_tableContext | null; + public truncate_table(i?: number): Truncate_tableContext[] | Truncate_tableContext | null { if (i === undefined) { - return this.getRuleContexts(Publication_name_itemContext); + return this.getRuleContexts(Truncate_tableContext); } - return this.getRuleContext(i, Publication_name_itemContext); + return this.getRuleContext(i, Truncate_tableContext); + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -93343,22 +68363,34 @@ export class Publication_name_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public KW_IDENTITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IDENTITY, 0); + } + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); + } + public KW_CONTINUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONTINUE, 0); + } + public KW_RESTART(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTART, 0); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_publication_name_list; + return PostgreSqlParser.RULE_truncatestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPublication_name_list) { - listener.enterPublication_name_list(this); + if(listener.enterTruncatestmt) { + listener.enterTruncatestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPublication_name_list) { - listener.exitPublication_name_list(this); + if(listener.exitTruncatestmt) { + listener.exitTruncatestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPublication_name_list) { - return visitor.visitPublication_name_list(this); + if (visitor.visitTruncatestmt) { + return visitor.visitTruncatestmt(this); } else { return visitor.visitChildren(this); } @@ -93366,29 +68398,35 @@ export class Publication_name_listContext extends antlr.ParserRuleContext { } -export class Publication_name_itemContext extends antlr.ParserRuleContext { +export class Truncate_tableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; + public table_name(): Table_nameContext { + return this.getRuleContext(0, Table_nameContext)!; + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); + } + public STAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.STAR, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_publication_name_item; + return PostgreSqlParser.RULE_truncate_table; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPublication_name_item) { - listener.enterPublication_name_item(this); + if(listener.enterTruncate_table) { + listener.enterTruncate_table(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPublication_name_item) { - listener.exitPublication_name_item(this); + if(listener.exitTruncate_table) { + listener.exitTruncate_table(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPublication_name_item) { - return visitor.visitPublication_name_item(this); + if (visitor.visitTruncate_table) { + return visitor.visitTruncate_table(this); } else { return visitor.visitChildren(this); } @@ -93396,92 +68434,170 @@ export class Publication_name_itemContext extends antlr.ParserRuleContext { } -export class AltersubscriptionstmtContext extends antlr.ParserRuleContext { +export class CommentstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_COMMENT, 0)!; } - public KW_SUBSCRIPTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0)!; + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ON); + } else { + return this.getToken(PostgreSqlParser.KW_ON, i); + } } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_IS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IS, 0)!; } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); + public object_type_any_name(): Object_type_any_nameContext | null { + return this.getRuleContext(0, Object_type_any_nameContext); } - public definition(): DefinitionContext | null { - return this.getRuleContext(0, DefinitionContext); + public object_type_name(): Object_type_nameContext | null { + return this.getRuleContext(0, Object_type_nameContext); } - public KW_CONNECTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONNECTION, 0); + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLUMN, 0); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public DOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.DOT, 0); } - public KW_REFRESH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFRESH, 0); + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); } - public KW_PUBLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { + if (i === undefined) { + return this.getRuleContexts(TypenameContext); + } + + return this.getRuleContext(i, TypenameContext); } - public opt_definition(): Opt_definitionContext | null { - return this.getRuleContext(0, Opt_definitionContext); + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); } - public publication_name_list(): Publication_name_listContext | null { - return this.getRuleContext(0, Publication_name_listContext); + public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { + return this.getRuleContext(0, Aggregate_with_argtypesContext); } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); } - public KW_ENABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENABLE, 0); + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public KW_DISABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISABLE, 0); + public operator_with_argtypes(): Operator_with_argtypesContext | null { + return this.getRuleContext(0, Operator_with_argtypesContext); } - public KW_SKIP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SKIP, 0); + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + } + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); + } + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + } + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); + } + public KW_TRANSFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); + } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); + } + public KW_LARGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LARGE, 0); + } + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OBJECT, 0); + } + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); + } + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CAST, 0); } public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public old_aggr_elem(): Old_aggr_elemContext | null { - return this.getRuleContext(0, Old_aggr_elemContext); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_OWNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNER, 0); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public rolespec(): RolespecContext | null { - return this.getRuleContext(0, RolespecContext); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); + } + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); + } + public KW_POLICY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_POLICY, 0); + } + public KW_RULE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RULE, 0); + } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); + } + public KW_CLASS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CLASS, 0); + } + public KW_FAMILY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0); + } + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); + } + public attrs(): AttrsContext | null { + return this.getRuleContext(0, AttrsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altersubscriptionstmt; + return PostgreSqlParser.RULE_commentstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltersubscriptionstmt) { - listener.enterAltersubscriptionstmt(this); + if(listener.enterCommentstmt) { + listener.enterCommentstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltersubscriptionstmt) { - listener.exitAltersubscriptionstmt(this); + if(listener.exitCommentstmt) { + listener.exitCommentstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltersubscriptionstmt) { - return visitor.visitAltersubscriptionstmt(this); + if (visitor.visitCommentstmt) { + return visitor.visitCommentstmt(this); } else { return visitor.visitChildren(this); } @@ -93489,65 +68605,140 @@ export class AltersubscriptionstmtContext extends antlr.ParserRuleContext { } -export class RulestmtContext extends antlr.ParserRuleContext { +export class SeclabelstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_RULE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_RULE, 0)!; - } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_SECURITY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SECURITY, 0)!; } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public KW_LABEL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LABEL, 0)!; } public KW_ON(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public event(): EventContext { - return this.getRuleContext(0, EventContext)!; + public KW_IS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IS, 0)!; } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); } - public qualified_name(): Qualified_nameContext { - return this.getRuleContext(0, Qualified_nameContext)!; + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); } - public KW_DO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DO, 0)!; + public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { + return this.getRuleContext(0, Aggregate_with_argtypesContext); } - public ruleactionlist(): RuleactionlistContext { - return this.getRuleContext(0, RuleactionlistContext)!; + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLUMN, 0); } - public opt_or_replace(): Opt_or_replaceContext | null { - return this.getRuleContext(0, Opt_or_replaceContext); + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + } + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); + } + public KW_LARGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LARGE, 0); + } + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OBJECT, 0); + } + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); + } + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + } + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); + } + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + } + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); + } + public object_type_any_name(): Object_type_any_nameContext | null { + return this.getRuleContext(0, Object_type_any_nameContext); + } + public object_type_name(): Object_type_nameContext | null { + return this.getRuleContext(0, Object_type_nameContext); } - public opt_instead(): Opt_insteadContext | null { - return this.getRuleContext(0, Opt_insteadContext); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); + } + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { + return this.getRuleContext(0, Nonreservedword_or_sconstContext); + } + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); + } + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rulestmt; + return PostgreSqlParser.RULE_seclabelstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRulestmt) { - listener.enterRulestmt(this); + if(listener.enterSeclabelstmt) { + listener.enterSeclabelstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRulestmt) { - listener.exitRulestmt(this); + if(listener.exitSeclabelstmt) { + listener.exitSeclabelstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRulestmt) { - return visitor.visitRulestmt(this); + if (visitor.visitSeclabelstmt) { + return visitor.visitSeclabelstmt(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FetchstmtContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public fetch_args(): Fetch_argsContext { + return this.getRuleContext(0, Fetch_argsContext)!; + } + public KW_FETCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FETCH, 0); + } + public KW_MOVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MOVE, 0); + } + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_fetchstmt; + } + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterFetchstmt) { + listener.enterFetchstmt(this); + } + } + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitFetchstmt) { + listener.exitFetchstmt(this); + } + } + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitFetchstmt) { + return visitor.visitFetchstmt(this); } else { return visitor.visitChildren(this); } @@ -93555,41 +68746,62 @@ export class RulestmtContext extends antlr.ParserRuleContext { } -export class RuleactionlistContext extends antlr.ParserRuleContext { +export class Fetch_argsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_NOTHING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTHING, 0); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public ruleactionstmt(): RuleactionstmtContext | null { - return this.getRuleContext(0, RuleactionstmtContext); + public from_in(): From_inContext | null { + return this.getRuleContext(0, From_inContext); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_NEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NEXT, 0); + } + public KW_PRIOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIOR, 0); } - public ruleactionmulti(): RuleactionmultiContext | null { - return this.getRuleContext(0, RuleactionmultiContext); + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FIRST, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LAST, 0); + } + public signediconst(): SignediconstContext | null { + return this.getRuleContext(0, SignediconstContext); + } + public KW_ABSOLUTE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ABSOLUTE, 0); + } + public KW_RELATIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); + } + public KW_FORWARD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FORWARD, 0); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); + } + public KW_BACKWARD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BACKWARD, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_ruleactionlist; + return PostgreSqlParser.RULE_fetch_args; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRuleactionlist) { - listener.enterRuleactionlist(this); + if(listener.enterFetch_args) { + listener.enterFetch_args(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRuleactionlist) { - listener.exitRuleactionlist(this); + if(listener.exitFetch_args) { + listener.exitFetch_args(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRuleactionlist) { - return visitor.visitRuleactionlist(this); + if (visitor.visitFetch_args) { + return visitor.visitFetch_args(this); } else { return visitor.visitChildren(this); } @@ -93597,44 +68809,89 @@ export class RuleactionlistContext extends antlr.ParserRuleContext { } -export class RuleactionmultiContext extends antlr.ParserRuleContext { +export class From_inContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public ruleactionstmtOrEmpty(): RuleactionstmtOrEmptyContext[]; - public ruleactionstmtOrEmpty(i: number): RuleactionstmtOrEmptyContext | null; - public ruleactionstmtOrEmpty(i?: number): RuleactionstmtOrEmptyContext[] | RuleactionstmtOrEmptyContext | null { - if (i === undefined) { - return this.getRuleContexts(RuleactionstmtOrEmptyContext); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_from_in; + } + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterFrom_in) { + listener.enterFrom_in(this); + } + } + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitFrom_in) { + listener.exitFrom_in(this); + } + } + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitFrom_in) { + return visitor.visitFrom_in(this); + } else { + return visitor.visitChildren(this); } + } +} - return this.getRuleContext(i, RuleactionstmtOrEmptyContext); + +export class GrantstmtContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public SEMI(): antlr.TerminalNode[]; - public SEMI(i: number): antlr.TerminalNode | null; - public SEMI(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_GRANT(): antlr.TerminalNode[]; + public KW_GRANT(i: number): antlr.TerminalNode | null; + public KW_GRANT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.SEMI); + return this.getTokens(PostgreSqlParser.KW_GRANT); } else { - return this.getToken(PostgreSqlParser.SEMI, i); + return this.getToken(PostgreSqlParser.KW_GRANT, i); } } + public privileges(): PrivilegesContext { + return this.getRuleContext(0, PrivilegesContext)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; + } + public privilege_target(): Privilege_targetContext { + return this.getRuleContext(0, Privilege_targetContext)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; + } + public grantee_list(): Grantee_listContext { + return this.getRuleContext(0, Grantee_listContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_ruleactionmulti; + return PostgreSqlParser.RULE_grantstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRuleactionmulti) { - listener.enterRuleactionmulti(this); + if(listener.enterGrantstmt) { + listener.enterGrantstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRuleactionmulti) { - listener.exitRuleactionmulti(this); + if(listener.exitGrantstmt) { + listener.exitGrantstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRuleactionmulti) { - return visitor.visitRuleactionmulti(this); + if (visitor.visitGrantstmt) { + return visitor.visitGrantstmt(this); } else { return visitor.visitChildren(this); } @@ -93642,41 +68899,56 @@ export class RuleactionmultiContext extends antlr.ParserRuleContext { } -export class RuleactionstmtContext extends antlr.ParserRuleContext { +export class RevokestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public selectstmt(): SelectstmtContext | null { - return this.getRuleContext(0, SelectstmtContext); + public KW_REVOKE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REVOKE, 0)!; } - public insertstmt(): InsertstmtContext | null { - return this.getRuleContext(0, InsertstmtContext); + public privileges(): PrivilegesContext { + return this.getRuleContext(0, PrivilegesContext)!; } - public updatestmt(): UpdatestmtContext | null { - return this.getRuleContext(0, UpdatestmtContext); + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public deletestmt(): DeletestmtContext | null { - return this.getRuleContext(0, DeletestmtContext); + public privilege_target(): Privilege_targetContext { + return this.getRuleContext(0, Privilege_targetContext)!; } - public notifystmt(): NotifystmtContext | null { - return this.getRuleContext(0, NotifystmtContext); + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + } + public grantee_list(): Grantee_listContext { + return this.getRuleContext(0, Grantee_listContext)!; + } + public KW_GRANT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GRANT, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); + } + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_ruleactionstmt; + return PostgreSqlParser.RULE_revokestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRuleactionstmt) { - listener.enterRuleactionstmt(this); + if(listener.enterRevokestmt) { + listener.enterRevokestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRuleactionstmt) { - listener.exitRuleactionstmt(this); + if(listener.exitRevokestmt) { + listener.exitRevokestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRuleactionstmt) { - return visitor.visitRuleactionstmt(this); + if (visitor.visitRevokestmt) { + return visitor.visitRevokestmt(this); } else { return visitor.visitChildren(this); } @@ -93684,29 +68956,62 @@ export class RuleactionstmtContext extends antlr.ParserRuleContext { } -export class RuleactionstmtOrEmptyContext extends antlr.ParserRuleContext { +export class PrivilegesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public ruleactionstmt(): RuleactionstmtContext { - return this.getRuleContext(0, RuleactionstmtContext)!; + public privilege(): PrivilegeContext[]; + public privilege(i: number): PrivilegeContext | null; + public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeContext); + } + + return this.getRuleContext(i, PrivilegeContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIVILEGES, 0); + } + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); + } + public beforeprivilegeselect(): BeforeprivilegeselectContext[]; + public beforeprivilegeselect(i: number): BeforeprivilegeselectContext | null; + public beforeprivilegeselect(i?: number): BeforeprivilegeselectContext[] | BeforeprivilegeselectContext | null { + if (i === undefined) { + return this.getRuleContexts(BeforeprivilegeselectContext); + } + + return this.getRuleContext(i, BeforeprivilegeselectContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_ruleactionstmtOrEmpty; + return PostgreSqlParser.RULE_privileges; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRuleactionstmtOrEmpty) { - listener.enterRuleactionstmtOrEmpty(this); + if(listener.enterPrivileges) { + listener.enterPrivileges(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRuleactionstmtOrEmpty) { - listener.exitRuleactionstmtOrEmpty(this); + if(listener.exitPrivileges) { + listener.exitPrivileges(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRuleactionstmtOrEmpty) { - return visitor.visitRuleactionstmtOrEmpty(this); + if (visitor.visitPrivileges) { + return visitor.visitPrivileges(this); } else { return visitor.visitChildren(this); } @@ -93714,71 +69019,65 @@ export class RuleactionstmtOrEmptyContext extends antlr.ParserRuleContext { } -export class EventContext extends antlr.ParserRuleContext { +export class BeforeprivilegeselectContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public KW_SELECT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_SELECT, 0); } + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INSERT, 0); + } public KW_UPDATE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_UPDATE, 0); } public KW_DELETE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_DELETE, 0); } - public KW_INSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSERT, 0); + public KW_TRUNCATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_event; + public KW_PEFERENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PEFERENCES, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEvent) { - listener.enterEvent(this); - } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEvent) { - listener.exitEvent(this); - } + public KW_USAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USAGE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEvent) { - return visitor.visitEvent(this); - } else { - return visitor.visitChildren(this); - } + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATE, 0); } -} - - -export class Opt_insteadContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_CONNECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONNECT, 0); } - public KW_INSTEAD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSTEAD, 0); + public KW_TEMPORARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); } - public KW_ALSO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALSO, 0); + public KW_TEMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMP, 0); + } + public KW_EXECUTE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXECUTE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_instead; + return PostgreSqlParser.RULE_beforeprivilegeselect; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_instead) { - listener.enterOpt_instead(this); + if(listener.enterBeforeprivilegeselect) { + listener.enterBeforeprivilegeselect(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_instead) { - listener.exitOpt_instead(this); + if(listener.exitBeforeprivilegeselect) { + listener.exitBeforeprivilegeselect(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_instead) { - return visitor.visitOpt_instead(this); + if (visitor.visitBeforeprivilegeselect) { + return visitor.visitBeforeprivilegeselect(this); } else { return visitor.visitChildren(this); } @@ -93786,35 +69085,41 @@ export class Opt_insteadContext extends antlr.ParserRuleContext { } -export class NotifystmtContext extends antlr.ParserRuleContext { +export class PrivilegeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_NOTIFY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NOTIFY, 0)!; + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SELECT, 0); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public KW_REFERENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); } - public notify_payload(): Notify_payloadContext | null { - return this.getRuleContext(0, Notify_payloadContext); + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATE, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_notifystmt; + return PostgreSqlParser.RULE_privilege; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNotifystmt) { - listener.enterNotifystmt(this); + if(listener.enterPrivilege) { + listener.enterPrivilege(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNotifystmt) { - listener.exitNotifystmt(this); + if(listener.exitPrivilege) { + listener.exitPrivilege(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNotifystmt) { - return visitor.visitNotifystmt(this); + if (visitor.visitPrivilege) { + return visitor.visitPrivilege(this); } else { return visitor.visitChildren(this); } @@ -93822,179 +69127,146 @@ export class NotifystmtContext extends antlr.ParserRuleContext { } -export class Notify_payloadContext extends antlr.ParserRuleContext { +export class Privilege_targetContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public COMMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.COMMA, 0)!; - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_notify_payload; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNotify_payload) { - listener.enterNotify_payload(this); - } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNotify_payload) { - listener.exitNotify_payload(this); - } + public table_name_list(): Table_name_listContext | null { + return this.getRuleContext(0, Table_name_listContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNotify_payload) { - return visitor.visitNotify_payload(this); - } else { - return visitor.visitChildren(this); - } + public qualified_name_list(): Qualified_name_listContext | null { + return this.getRuleContext(0, Qualified_name_listContext); } -} - - -export class ListenstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); } - public KW_LISTEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LISTEN, 0)!; + public name_list(): Name_listContext | null { + return this.getRuleContext(0, Name_listContext); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_listenstmt; + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterListenstmt) { - listener.enterListenstmt(this); - } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitListenstmt) { - listener.exitListenstmt(this); - } + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitListenstmt) { - return visitor.visitListenstmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_SERVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERVER, 0); } -} - - -export class UnlistenstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public KW_UNLISTEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UNLISTEN, 0)!; + public function_with_argtypes_list(): Function_with_argtypes_listContext | null { + return this.getRuleContext(0, Function_with_argtypes_listContext); } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); + public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext | null { + return this.getRuleContext(0, Procedure_with_argtypes_listContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_unlistenstmt; + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterUnlistenstmt) { - listener.enterUnlistenstmt(this); - } + public routine_with_argtypes_list(): Routine_with_argtypes_listContext | null { + return this.getRuleContext(0, Routine_with_argtypes_listContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitUnlistenstmt) { - listener.exitUnlistenstmt(this); - } + public KW_DATABASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitUnlistenstmt) { - return visitor.visitUnlistenstmt(this); - } else { - return visitor.visitChildren(this); - } + public database_nameList(): Database_nameListContext | null { + return this.getRuleContext(0, Database_nameListContext); } -} - - -export class TransactionstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public any_name_list(): Any_name_listContext | null { + return this.getRuleContext(0, Any_name_listContext); } - public KW_ABORT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ABORT, 0); + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); } - public opt_transaction(): Opt_transactionContext | null { - return this.getRuleContext(0, Opt_transactionContext); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public opt_transaction_chain(): Opt_transaction_chainContext | null { - return this.getRuleContext(0, Opt_transaction_chainContext); + public KW_LARGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LARGE, 0); } - public KW_BEGIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BEGIN, 0); + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OBJECT, 0); } - public transaction_mode_list_or_empty(): Transaction_mode_list_or_emptyContext | null { - return this.getRuleContext(0, Transaction_mode_list_or_emptyContext); + public numericonly(): NumericonlyContext[]; + public numericonly(i: number): NumericonlyContext | null; + public numericonly(i?: number): NumericonlyContext[] | NumericonlyContext | null { + if (i === undefined) { + return this.getRuleContexts(NumericonlyContext); + } + + return this.getRuleContext(i, NumericonlyContext); } - public KW_START(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_START, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } - public KW_END(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_END, 0); + public schema_name_list(): Schema_name_listContext | null { + return this.getRuleContext(0, Schema_name_listContext); } - public KW_SAVEPOINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SAVEPOINT, 0); + public KW_TABLESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public tablespace_name_list(): Tablespace_name_listContext | null { + return this.getRuleContext(0, Tablespace_name_listContext); } - public KW_RELEASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RELEASE, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_PREPARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PREPARE, 0); + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public KW_TABLES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLES, 0); } - public KW_COMMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COMMIT, 0); + public KW_SEQUENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); } - public KW_PREPARED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PREPARED, 0); + public KW_FUNCTIONS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTIONS, 0); } - public KW_ROLLBACK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); + public KW_PROCEDURES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURES, 0); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_ROUTINES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINES, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transactionstmt; + return PostgreSqlParser.RULE_privilege_target; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransactionstmt) { - listener.enterTransactionstmt(this); + if(listener.enterPrivilege_target) { + listener.enterPrivilege_target(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransactionstmt) { - listener.exitTransactionstmt(this); + if(listener.exitPrivilege_target) { + listener.exitPrivilege_target(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransactionstmt) { - return visitor.visitTransactionstmt(this); + if (visitor.visitPrivilege_target) { + return visitor.visitPrivilege_target(this); } else { return visitor.visitChildren(this); } @@ -94002,32 +69274,53 @@ export class TransactionstmtContext extends antlr.ParserRuleContext { } -export class Opt_transactionContext extends antlr.ParserRuleContext { +export class Grantee_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WORK, 0); + public rolespec(): RolespecContext[]; + public rolespec(i: number): RolespecContext | null; + public rolespec(i?: number): RolespecContext[] | RolespecContext | null { + if (i === undefined) { + return this.getRuleContexts(RolespecContext); + } + + return this.getRuleContext(i, RolespecContext); } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } + } + public KW_GROUP(): antlr.TerminalNode[]; + public KW_GROUP(i: number): antlr.TerminalNode | null; + public KW_GROUP(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_GROUP); + } else { + return this.getToken(PostgreSqlParser.KW_GROUP, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_transaction; + return PostgreSqlParser.RULE_grantee_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_transaction) { - listener.enterOpt_transaction(this); + if(listener.enterGrantee_list) { + listener.enterGrantee_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_transaction) { - listener.exitOpt_transaction(this); + if(listener.exitGrantee_list) { + listener.exitGrantee_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_transaction) { - return visitor.visitOpt_transaction(this); + if (visitor.visitGrantee_list) { + return visitor.visitGrantee_list(this); } else { return visitor.visitChildren(this); } @@ -94035,50 +69328,71 @@ export class Opt_transactionContext extends antlr.ParserRuleContext { } -export class Transaction_mode_itemContext extends antlr.ParserRuleContext { +export class GrantrolestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ISOLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ISOLATION, 0); + public KW_GRANT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_GRANT, 0)!; } - public KW_LEVEL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEVEL, 0); + public privilege(): PrivilegeContext[]; + public privilege(i: number): PrivilegeContext | null; + public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeContext); + } + + return this.getRuleContext(i, PrivilegeContext); } - public iso_level(): Iso_levelContext | null { - return this.getRuleContext(0, Iso_levelContext); + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; } - public KW_READ(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_READ, 0); + public role_list(): Role_listContext { + return this.getRuleContext(0, Role_listContext)!; } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } - public KW_WRITE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRITE, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public KW_DEFERRABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADMIN, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); + } + public KW_GRANTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GRANTED, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transaction_mode_item; + return PostgreSqlParser.RULE_grantrolestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransaction_mode_item) { - listener.enterTransaction_mode_item(this); + if(listener.enterGrantrolestmt) { + listener.enterGrantrolestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransaction_mode_item) { - listener.exitTransaction_mode_item(this); + if(listener.exitGrantrolestmt) { + listener.exitGrantrolestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransaction_mode_item) { - return visitor.visitTransaction_mode_item(this); + if (visitor.visitGrantrolestmt) { + return visitor.visitGrantrolestmt(this); } else { return visitor.visitChildren(this); } @@ -94086,18 +69400,36 @@ export class Transaction_mode_itemContext extends antlr.ParserRuleContext { } -export class Transaction_mode_listContext extends antlr.ParserRuleContext { +export class RevokerolestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public transaction_mode_item(): Transaction_mode_itemContext[]; - public transaction_mode_item(i: number): Transaction_mode_itemContext | null; - public transaction_mode_item(i?: number): Transaction_mode_itemContext[] | Transaction_mode_itemContext | null { + public KW_REVOKE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REVOKE, 0)!; + } + public privilege(): PrivilegeContext[]; + public privilege(i: number): PrivilegeContext | null; + public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { if (i === undefined) { - return this.getRuleContexts(Transaction_mode_itemContext); + return this.getRuleContexts(PrivilegeContext); } - return this.getRuleContext(i, Transaction_mode_itemContext); + return this.getRuleContext(i, PrivilegeContext); + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + } + public role_list(): Role_listContext { + return this.getRuleContext(0, Role_listContext)!; + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADMIN, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -94108,52 +69440,34 @@ export class Transaction_mode_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transaction_mode_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransaction_mode_list) { - listener.enterTransaction_mode_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransaction_mode_list) { - listener.exitTransaction_mode_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransaction_mode_list) { - return visitor.visitTransaction_mode_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_GRANTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GRANTED, 0); } -} - - -export class Transaction_mode_list_or_emptyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } - public transaction_mode_list(): Transaction_mode_listContext { - return this.getRuleContext(0, Transaction_mode_listContext)!; + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_transaction_mode_list_or_empty; + return PostgreSqlParser.RULE_revokerolestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTransaction_mode_list_or_empty) { - listener.enterTransaction_mode_list_or_empty(this); + if(listener.enterRevokerolestmt) { + listener.enterRevokerolestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTransaction_mode_list_or_empty) { - listener.exitTransaction_mode_list_or_empty(this); + if(listener.exitRevokerolestmt) { + listener.exitRevokerolestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTransaction_mode_list_or_empty) { - return visitor.visitTransaction_mode_list_or_empty(this); + if (visitor.visitRevokerolestmt) { + return visitor.visitRevokerolestmt(this); } else { return visitor.visitChildren(this); } @@ -94161,35 +69475,101 @@ export class Transaction_mode_list_or_emptyContext extends antlr.ParserRuleConte } -export class Opt_transaction_chainContext extends antlr.ParserRuleContext { +export class AlterdefaultprivilegesstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AND(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AND, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public KW_CHAIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CHAIN, 0)!; + public KW_DEFAULT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0)!; } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); + public KW_PRIVILEGES(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PRIVILEGES, 0)!; + } + public defaclaction(): DefaclactionContext { + return this.getRuleContext(0, DefaclactionContext)!; + } + public KW_IN(): antlr.TerminalNode[]; + public KW_IN(i: number): antlr.TerminalNode | null; + public KW_IN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_IN); + } else { + return this.getToken(PostgreSqlParser.KW_IN, i); + } + } + public KW_SCHEMA(): antlr.TerminalNode[]; + public KW_SCHEMA(i: number): antlr.TerminalNode | null; + public KW_SCHEMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_SCHEMA); + } else { + return this.getToken(PostgreSqlParser.KW_SCHEMA, i); + } + } + public schema_name_list(): Schema_name_listContext[]; + public schema_name_list(i: number): Schema_name_listContext | null; + public schema_name_list(i?: number): Schema_name_listContext[] | Schema_name_listContext | null { + if (i === undefined) { + return this.getRuleContexts(Schema_name_listContext); + } + + return this.getRuleContext(i, Schema_name_listContext); + } + public KW_FOR(): antlr.TerminalNode[]; + public KW_FOR(i: number): antlr.TerminalNode | null; + public KW_FOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FOR); + } else { + return this.getToken(PostgreSqlParser.KW_FOR, i); + } + } + public role_list(): Role_listContext[]; + public role_list(i: number): Role_listContext | null; + public role_list(i?: number): Role_listContext[] | Role_listContext | null { + if (i === undefined) { + return this.getRuleContexts(Role_listContext); + } + + return this.getRuleContext(i, Role_listContext); + } + public KW_ROLE(): antlr.TerminalNode[]; + public KW_ROLE(i: number): antlr.TerminalNode | null; + public KW_ROLE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ROLE); + } else { + return this.getToken(PostgreSqlParser.KW_ROLE, i); + } + } + public KW_USER(): antlr.TerminalNode[]; + public KW_USER(i: number): antlr.TerminalNode | null; + public KW_USER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_USER); + } else { + return this.getToken(PostgreSqlParser.KW_USER, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_transaction_chain; + return PostgreSqlParser.RULE_alterdefaultprivilegesstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_transaction_chain) { - listener.enterOpt_transaction_chain(this); + if(listener.enterAlterdefaultprivilegesstmt) { + listener.enterAlterdefaultprivilegesstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_transaction_chain) { - listener.exitOpt_transaction_chain(this); + if(listener.exitAlterdefaultprivilegesstmt) { + listener.exitAlterdefaultprivilegesstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_transaction_chain) { - return visitor.visitOpt_transaction_chain(this); + if (visitor.visitAlterdefaultprivilegesstmt) { + return visitor.visitAlterdefaultprivilegesstmt(this); } else { return visitor.visitChildren(this); } @@ -94197,80 +69577,68 @@ export class Opt_transaction_chainContext extends antlr.ParserRuleContext { } -export class ViewstmtContext extends antlr.ParserRuleContext { +export class DefaclactionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_viewstmt; - } - public override copyFrom(ctx: ViewstmtContext): void { - super.copyFrom(ctx); - } -} -export class CreateViewContext extends ViewstmtContext { - public constructor(ctx: ViewstmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; - } - public selectstmt(): SelectstmtContext { - return this.getRuleContext(0, SelectstmtContext)!; + public KW_GRANT(): antlr.TerminalNode[]; + public KW_GRANT(i: number): antlr.TerminalNode | null; + public KW_GRANT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_GRANT); + } else { + return this.getToken(PostgreSqlParser.KW_GRANT, i); + } } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); + public privileges(): PrivilegesContext { + return this.getRuleContext(0, PrivilegesContext)!; } - public view_name_create(): View_name_createContext | null { - return this.getRuleContext(0, View_name_createContext); + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public KW_RECURSIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RECURSIVE, 0); + public defacl_privilege_target(): Defacl_privilege_targetContext { + return this.getRuleContext(0, Defacl_privilege_targetContext)!; } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); + public grantee_list(): Grantee_listContext { + return this.getRuleContext(0, Grantee_listContext)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OR, 0); + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLACE, 0); + public KW_REVOKE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REVOKE, 0); } - public opttemp(): OpttempContext | null { - return this.getRuleContext(0, OpttempContext); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public opt_check_option(): Opt_check_optionContext | null { - return this.getRuleContext(0, Opt_check_optionContext); + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public opt_column_list_create(): Opt_column_list_createContext | null { - return this.getRuleContext(0, Opt_column_list_createContext); + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } - public opt_reloptions(): Opt_reloptionsContext | null { - return this.getRuleContext(0, Opt_reloptionsContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_defaclaction; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateView) { - listener.enterCreateView(this); + if(listener.enterDefaclaction) { + listener.enterDefaclaction(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateView) { - listener.exitCreateView(this); + if(listener.exitDefaclaction) { + listener.exitDefaclaction(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateView) { - return visitor.visitCreateView(this); + if (visitor.visitDefaclaction) { + return visitor.visitDefaclaction(this); } else { return visitor.visitChildren(this); } @@ -94278,41 +69646,44 @@ export class CreateViewContext extends ViewstmtContext { } -export class Opt_check_optionContext extends antlr.ParserRuleContext { +export class Defacl_privilege_targetContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public KW_TABLES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLES, 0); } - public KW_CHECK(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CHECK, 0)!; + public KW_FUNCTIONS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTIONS, 0); + } + public KW_ROUTINES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINES, 0); } - public KW_OPTION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OPTION, 0)!; + public KW_SEQUENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); } - public KW_CASCADED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CASCADED, 0); + public KW_TYPES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPES, 0); } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCAL, 0); + public KW_SCHEMAS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMAS, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_check_option; + return PostgreSqlParser.RULE_defacl_privilege_target; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_check_option) { - listener.enterOpt_check_option(this); + if(listener.enterDefacl_privilege_target) { + listener.enterDefacl_privilege_target(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_check_option) { - listener.exitOpt_check_option(this); + if(listener.exitDefacl_privilege_target) { + listener.exitDefacl_privilege_target(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_check_option) { - return visitor.visitOpt_check_option(this); + if (visitor.visitDefacl_privilege_target) { + return visitor.visitDefacl_privilege_target(this); } else { return visitor.visitChildren(this); } @@ -94320,113 +69691,83 @@ export class Opt_check_optionContext extends antlr.ParserRuleContext { } -export class LoadstmtContext extends antlr.ParserRuleContext { +export class IndexstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_LOAD(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LOAD, 0)!; - } - public file_name(): File_nameContext { - return this.getRuleContext(0, File_nameContext)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_loadstmt; + public KW_INDEX(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INDEX, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterLoadstmt) { - listener.enterLoadstmt(this); - } + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitLoadstmt) { - listener.exitLoadstmt(this); - } + public relation_expr(): Relation_exprContext { + return this.getRuleContext(0, Relation_exprContext)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitLoadstmt) { - return visitor.visitLoadstmt(this); - } else { - return visitor.visitChildren(this); + public index_params(): Index_paramsContext[]; + public index_params(i: number): Index_paramsContext | null; + public index_params(i?: number): Index_paramsContext[] | Index_paramsContext | null { + if (i === undefined) { + return this.getRuleContexts(Index_paramsContext); } - } -} - -export class CreatedbstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createdbstmt; + return this.getRuleContext(i, Index_paramsContext); } - public override copyFrom(ctx: CreatedbstmtContext): void { - super.copyFrom(ctx); + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); } -} -export class CreateDatabaseContext extends CreatedbstmtContext { - public constructor(ctx: CreatedbstmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_CONCURRENTLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); } - public KW_DATABASE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public database_name_create(): Database_name_createContext { - return this.getRuleContext(0, Database_name_createContext)!; + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } - public opt_with(): Opt_withContext | null { - return this.getRuleContext(0, Opt_withContext); + public KW_INCLUDE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INCLUDE, 0); } - public createdb_opt_list(): Createdb_opt_listContext | null { - return this.getRuleContext(0, Createdb_opt_listContext); + public KW_NULLS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULLS, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateDatabase) { - listener.enterCreateDatabase(this); - } + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateDatabase) { - listener.exitCreateDatabase(this); - } + public opt_reloptions(): Opt_reloptionsContext | null { + return this.getRuleContext(0, Opt_reloptionsContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateDatabase) { - return visitor.visitCreateDatabase(this); - } else { - return visitor.visitChildren(this); - } + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } -} - - -export class Createdb_opt_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public where_clause(): Where_clauseContext | null { + return this.getRuleContext(0, Where_clauseContext); } - public createdb_opt_items(): Createdb_opt_itemsContext { - return this.getRuleContext(0, Createdb_opt_itemsContext)!; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createdb_opt_list; + return PostgreSqlParser.RULE_indexstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatedb_opt_list) { - listener.enterCreatedb_opt_list(this); + if(listener.enterIndexstmt) { + listener.enterIndexstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatedb_opt_list) { - listener.exitCreatedb_opt_list(this); + if(listener.exitIndexstmt) { + listener.exitIndexstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatedb_opt_list) { - return visitor.visitCreatedb_opt_list(this); + if (visitor.visitIndexstmt) { + return visitor.visitIndexstmt(this); } else { return visitor.visitChildren(this); } @@ -94434,35 +69775,50 @@ export class Createdb_opt_listContext extends antlr.ParserRuleContext { } -export class Createdb_opt_itemsContext extends antlr.ParserRuleContext { +export class Index_paramsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public createdb_opt_item(): Createdb_opt_itemContext[]; - public createdb_opt_item(i: number): Createdb_opt_itemContext | null; - public createdb_opt_item(i?: number): Createdb_opt_itemContext[] | Createdb_opt_itemContext | null { + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public index_elem(): Index_elemContext[]; + public index_elem(i: number): Index_elemContext | null; + public index_elem(i?: number): Index_elemContext[] | Index_elemContext | null { if (i === undefined) { - return this.getRuleContexts(Createdb_opt_itemContext); + return this.getRuleContexts(Index_elemContext); } - return this.getRuleContext(i, Createdb_opt_itemContext); + return this.getRuleContext(i, Index_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createdb_opt_items; + return PostgreSqlParser.RULE_index_params; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatedb_opt_items) { - listener.enterCreatedb_opt_items(this); + if(listener.enterIndex_params) { + listener.enterIndex_params(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatedb_opt_items) { - listener.exitCreatedb_opt_items(this); + if(listener.exitIndex_params) { + listener.exitIndex_params(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatedb_opt_items) { - return visitor.visitCreatedb_opt_items(this); + if (visitor.visitIndex_params) { + return visitor.visitIndex_params(this); } else { return visitor.visitChildren(this); } @@ -94470,41 +69826,65 @@ export class Createdb_opt_itemsContext extends antlr.ParserRuleContext { } -export class Createdb_opt_itemContext extends antlr.ParserRuleContext { +export class Index_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public createdb_opt_name(): Createdb_opt_nameContext { - return this.getRuleContext(0, Createdb_opt_nameContext)!; + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); } - public signediconst(): SignediconstContext | null { - return this.getRuleContext(0, SignediconstContext); + public func_expr_windowless(): Func_expr_windowlessContext | null { + return this.getRuleContext(0, Func_expr_windowlessContext); } - public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { - return this.getRuleContext(0, Opt_boolean_or_stringContext); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public reloptions(): ReloptionsContext | null { + return this.getRuleContext(0, ReloptionsContext); } - public opt_equal(): Opt_equalContext | null { - return this.getRuleContext(0, Opt_equalContext); + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); + } + public KW_NULLS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULLS, 0); + } + public KW_ASC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASC, 0); + } + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DESC, 0); + } + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FIRST, 0); + } + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LAST, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createdb_opt_item; + return PostgreSqlParser.RULE_index_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatedb_opt_item) { - listener.enterCreatedb_opt_item(this); + if(listener.enterIndex_elem) { + listener.enterIndex_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatedb_opt_item) { - listener.exitCreatedb_opt_item(this); + if(listener.exitIndex_elem) { + listener.exitIndex_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatedb_opt_item) { - return visitor.visitCreatedb_opt_item(this); + if (visitor.visitIndex_elem) { + return visitor.visitIndex_elem(this); } else { return visitor.visitChildren(this); } @@ -94512,80 +69892,113 @@ export class Createdb_opt_itemContext extends antlr.ParserRuleContext { } -export class Createdb_opt_nameContext extends antlr.ParserRuleContext { +export class CreatefunctionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CONNECTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONNECTION, 0); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public KW_LIMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LIMIT, 0); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public KW_ENCODING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ENCODING, 0); + public function_name_create(): Function_name_createContext | null { + return this.getRuleContext(0, Function_name_createContext); } - public KW_LOCATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCATION, 0); + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public KW_OWNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OWNER, 0); + public procedure_name_create(): Procedure_name_createContext | null { + return this.getRuleContext(0, Procedure_name_createContext); } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); + public OPEN_PAREN(): antlr.TerminalNode[]; + public OPEN_PAREN(i: number): antlr.TerminalNode | null; + public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.OPEN_PAREN); + } else { + return this.getToken(PostgreSqlParser.OPEN_PAREN, i); + } } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); + public CLOSE_PAREN(): antlr.TerminalNode[]; + public CLOSE_PAREN(i: number): antlr.TerminalNode | null; + public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.CLOSE_PAREN); + } else { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); + } } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public opt_or_replace(): Opt_or_replaceContext | null { + return this.getRuleContext(0, Opt_or_replaceContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createdb_opt_name; + public KW_RETURNS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RETURNS, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatedb_opt_name) { - listener.enterCreatedb_opt_name(this); + public createfunc_opt_item(): Createfunc_opt_itemContext[]; + public createfunc_opt_item(i: number): Createfunc_opt_itemContext | null; + public createfunc_opt_item(i?: number): Createfunc_opt_itemContext[] | Createfunc_opt_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Createfunc_opt_itemContext); } + + return this.getRuleContext(i, Createfunc_opt_itemContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatedb_opt_name) { - listener.exitCreatedb_opt_name(this); - } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatedb_opt_name) { - return visitor.visitCreatedb_opt_name(this); - } else { - return visitor.visitChildren(this); - } + public name_list(): Name_listContext | null { + return this.getRuleContext(0, Name_listContext); } -} + public func_arg_with_default(): Func_arg_with_defaultContext[]; + public func_arg_with_default(i: number): Func_arg_with_defaultContext | null; + public func_arg_with_default(i?: number): Func_arg_with_defaultContext[] | Func_arg_with_defaultContext | null { + if (i === undefined) { + return this.getRuleContexts(Func_arg_with_defaultContext); + } + return this.getRuleContext(i, Func_arg_with_defaultContext); + } + public func_type(): Func_typeContext | null { + return this.getRuleContext(0, Func_typeContext); + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); + } + public table_func_column(): Table_func_columnContext[]; + public table_func_column(i: number): Table_func_columnContext | null; + public table_func_column(i?: number): Table_func_columnContext[] | Table_func_columnContext | null { + if (i === undefined) { + return this.getRuleContexts(Table_func_columnContext); + } -export class Opt_equalContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Table_func_columnContext); } - public EQUAL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.EQUAL, 0)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_equal; + return PostgreSqlParser.RULE_createfunctionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_equal) { - listener.enterOpt_equal(this); + if(listener.enterCreatefunctionstmt) { + listener.enterCreatefunctionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_equal) { - listener.exitOpt_equal(this); + if(listener.exitCreatefunctionstmt) { + listener.exitCreatefunctionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_equal) { - return visitor.visitOpt_equal(this); + if (visitor.visitCreatefunctionstmt) { + return visitor.visitCreatefunctionstmt(this); } else { return visitor.visitChildren(this); } @@ -94593,50 +70006,32 @@ export class Opt_equalContext extends antlr.ParserRuleContext { } -export class AlterdatabasestmtContext extends antlr.ParserRuleContext { +export class Opt_or_replaceContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_DATABASE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; - } - public database_name(): Database_nameContext { - return this.getRuleContext(0, Database_nameContext)!; - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); - } - public tablespace_name_create(): Tablespace_name_createContext | null { - return this.getRuleContext(0, Tablespace_name_createContext); - } - public createdb_opt_list(): Createdb_opt_listContext | null { - return this.getRuleContext(0, Createdb_opt_listContext); + public KW_OR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OR, 0)!; } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); + public KW_REPLACE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REPLACE, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterdatabasestmt; + return PostgreSqlParser.RULE_opt_or_replace; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterdatabasestmt) { - listener.enterAlterdatabasestmt(this); + if(listener.enterOpt_or_replace) { + listener.enterOpt_or_replace(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterdatabasestmt) { - listener.exitAlterdatabasestmt(this); + if(listener.exitOpt_or_replace) { + listener.exitOpt_or_replace(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterdatabasestmt) { - return visitor.visitAlterdatabasestmt(this); + if (visitor.visitOpt_or_replace) { + return visitor.visitOpt_or_replace(this); } else { return visitor.visitChildren(this); } @@ -94644,38 +70039,35 @@ export class AlterdatabasestmtContext extends antlr.ParserRuleContext { } -export class AlterdatabasesetstmtContext extends antlr.ParserRuleContext { +export class Func_argsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_DATABASE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public database_name(): Database_nameContext { - return this.getRuleContext(0, Database_nameContext)!; + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public setresetclause(): SetresetclauseContext | null { - return this.getRuleContext(0, SetresetclauseContext); + public func_args_list(): Func_args_listContext | null { + return this.getRuleContext(0, Func_args_listContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterdatabasesetstmt; + return PostgreSqlParser.RULE_func_args; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterdatabasesetstmt) { - listener.enterAlterdatabasesetstmt(this); + if(listener.enterFunc_args) { + listener.enterFunc_args(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterdatabasesetstmt) { - listener.exitAlterdatabasesetstmt(this); + if(listener.exitFunc_args) { + listener.exitFunc_args(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterdatabasesetstmt) { - return visitor.visitAlterdatabasesetstmt(this); + if (visitor.visitFunc_args) { + return visitor.visitFunc_args(this); } else { return visitor.visitChildren(this); } @@ -94683,18 +70075,18 @@ export class AlterdatabasesetstmtContext extends antlr.ParserRuleContext { } -export class Drop_option_listContext extends antlr.ParserRuleContext { +export class Func_args_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public drop_option(): Drop_optionContext[]; - public drop_option(i: number): Drop_optionContext | null; - public drop_option(i?: number): Drop_optionContext[] | Drop_optionContext | null { + public func_arg(): Func_argContext[]; + public func_arg(i: number): Func_argContext | null; + public func_arg(i?: number): Func_argContext[] | Func_argContext | null { if (i === undefined) { - return this.getRuleContexts(Drop_optionContext); + return this.getRuleContexts(Func_argContext); } - return this.getRuleContext(i, Drop_optionContext); + return this.getRuleContext(i, Func_argContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -94706,21 +70098,21 @@ export class Drop_option_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_drop_option_list; + return PostgreSqlParser.RULE_func_args_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDrop_option_list) { - listener.enterDrop_option_list(this); + if(listener.enterFunc_args_list) { + listener.enterFunc_args_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDrop_option_list) { - listener.exitDrop_option_list(this); + if(listener.exitFunc_args_list) { + listener.exitFunc_args_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDrop_option_list) { - return visitor.visitDrop_option_list(this); + if (visitor.visitFunc_args_list) { + return visitor.visitFunc_args_list(this); } else { return visitor.visitChildren(this); } @@ -94728,71 +70120,44 @@ export class Drop_option_listContext extends antlr.ParserRuleContext { } -export class Drop_optionContext extends antlr.ParserRuleContext { +export class Routine_with_argtypes_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FORCE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FORCE, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_drop_option; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDrop_option) { - listener.enterDrop_option(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDrop_option) { - listener.exitDrop_option(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDrop_option) { - return visitor.visitDrop_option(this); - } else { - return visitor.visitChildren(this); + public routine_with_argtypes(): Routine_with_argtypesContext[]; + public routine_with_argtypes(i: number): Routine_with_argtypesContext | null; + public routine_with_argtypes(i?: number): Routine_with_argtypesContext[] | Routine_with_argtypesContext | null { + if (i === undefined) { + return this.getRuleContexts(Routine_with_argtypesContext); } - } -} - -export class AltercollationstmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_COLLATION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public KW_REFRESH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REFRESH, 0)!; + return this.getRuleContext(i, Routine_with_argtypesContext); } - public KW_VERSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VERSION, 0)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altercollationstmt; + return PostgreSqlParser.RULE_routine_with_argtypes_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltercollationstmt) { - listener.enterAltercollationstmt(this); + if(listener.enterRoutine_with_argtypes_list) { + listener.enterRoutine_with_argtypes_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltercollationstmt) { - listener.exitAltercollationstmt(this); + if(listener.exitRoutine_with_argtypes_list) { + listener.exitRoutine_with_argtypes_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltercollationstmt) { - return visitor.visitAltercollationstmt(this); + if (visitor.visitRoutine_with_argtypes_list) { + return visitor.visitRoutine_with_argtypes_list(this); } else { return visitor.visitChildren(this); } @@ -94800,41 +70165,38 @@ export class AltercollationstmtContext extends antlr.ParserRuleContext { } -export class AltersystemstmtContext extends antlr.ParserRuleContext { +export class Routine_with_argtypesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_SYSTEM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SYSTEM, 0)!; + public routine_name(): Routine_nameContext | null { + return this.getRuleContext(0, Routine_nameContext); } - public generic_set(): Generic_setContext { - return this.getRuleContext(0, Generic_setContext)!; + public func_args(): Func_argsContext | null { + return this.getRuleContext(0, Func_argsContext); } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); + public type_func_name_keyword(): Type_func_name_keywordContext | null { + return this.getRuleContext(0, Type_func_name_keywordContext); } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altersystemstmt; + return PostgreSqlParser.RULE_routine_with_argtypes; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltersystemstmt) { - listener.enterAltersystemstmt(this); + if(listener.enterRoutine_with_argtypes) { + listener.enterRoutine_with_argtypes(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltersystemstmt) { - listener.exitAltersystemstmt(this); + if(listener.exitRoutine_with_argtypes) { + listener.exitRoutine_with_argtypes(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltersystemstmt) { - return visitor.visitAltersystemstmt(this); + if (visitor.visitRoutine_with_argtypes) { + return visitor.visitRoutine_with_argtypes(this); } else { return visitor.visitChildren(this); } @@ -94842,44 +70204,44 @@ export class AltersystemstmtContext extends antlr.ParserRuleContext { } -export class CreatedomainstmtContext extends antlr.ParserRuleContext { +export class Procedure_with_argtypes_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_DOMAIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public typename(): TypenameContext { - return this.getRuleContext(0, TypenameContext)!; - } - public colquallist(): ColquallistContext { - return this.getRuleContext(0, ColquallistContext)!; + public procedure_with_argtypes(): Procedure_with_argtypesContext[]; + public procedure_with_argtypes(i: number): Procedure_with_argtypesContext | null; + public procedure_with_argtypes(i?: number): Procedure_with_argtypesContext[] | Procedure_with_argtypesContext | null { + if (i === undefined) { + return this.getRuleContexts(Procedure_with_argtypesContext); + } + + return this.getRuleContext(i, Procedure_with_argtypesContext); } - public opt_as(): Opt_asContext | null { - return this.getRuleContext(0, Opt_asContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createdomainstmt; + return PostgreSqlParser.RULE_procedure_with_argtypes_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreatedomainstmt) { - listener.enterCreatedomainstmt(this); + if(listener.enterProcedure_with_argtypes_list) { + listener.enterProcedure_with_argtypes_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreatedomainstmt) { - listener.exitCreatedomainstmt(this); + if(listener.exitProcedure_with_argtypes_list) { + listener.exitProcedure_with_argtypes_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreatedomainstmt) { - return visitor.visitCreatedomainstmt(this); + if (visitor.visitProcedure_with_argtypes_list) { + return visitor.visitProcedure_with_argtypes_list(this); } else { return visitor.visitChildren(this); } @@ -94887,71 +70249,38 @@ export class CreatedomainstmtContext extends antlr.ParserRuleContext { } -export class AlterdomainstmtContext extends antlr.ParserRuleContext { +export class Procedure_with_argtypesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_DOMAIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DOMAIN, 0)!; - } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; - } - public alter_column_default(): Alter_column_defaultContext | null { - return this.getRuleContext(0, Alter_column_defaultContext); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public tableconstraint(): TableconstraintContext | null { - return this.getRuleContext(0, TableconstraintContext); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public procedure_name(): Procedure_nameContext | null { + return this.getRuleContext(0, Procedure_nameContext); } - public KW_VALIDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALIDATE, 0); + public func_args(): Func_argsContext | null { + return this.getRuleContext(0, Func_argsContext); } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public type_func_name_keyword(): Type_func_name_keywordContext | null { + return this.getRuleContext(0, Type_func_name_keywordContext); } - public opt_drop_behavior(): Opt_drop_behaviorContext | null { - return this.getRuleContext(0, Opt_drop_behaviorContext); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alterdomainstmt; + return PostgreSqlParser.RULE_procedure_with_argtypes; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlterdomainstmt) { - listener.enterAlterdomainstmt(this); + if(listener.enterProcedure_with_argtypes) { + listener.enterProcedure_with_argtypes(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlterdomainstmt) { - listener.exitAlterdomainstmt(this); + if(listener.exitProcedure_with_argtypes) { + listener.exitProcedure_with_argtypes(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlterdomainstmt) { - return visitor.visitAlterdomainstmt(this); + if (visitor.visitProcedure_with_argtypes) { + return visitor.visitProcedure_with_argtypes(this); } else { return visitor.visitChildren(this); } @@ -94959,29 +70288,44 @@ export class AlterdomainstmtContext extends antlr.ParserRuleContext { } -export class Opt_asContext extends antlr.ParserRuleContext { +export class Function_with_argtypes_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public function_with_argtypes(): Function_with_argtypesContext[]; + public function_with_argtypes(i: number): Function_with_argtypesContext | null; + public function_with_argtypes(i?: number): Function_with_argtypesContext[] | Function_with_argtypesContext | null { + if (i === undefined) { + return this.getRuleContexts(Function_with_argtypesContext); + } + + return this.getRuleContext(i, Function_with_argtypesContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_as; + return PostgreSqlParser.RULE_function_with_argtypes_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_as) { - listener.enterOpt_as(this); + if(listener.enterFunction_with_argtypes_list) { + listener.enterFunction_with_argtypes_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_as) { - listener.exitOpt_as(this); + if(listener.exitFunction_with_argtypes_list) { + listener.exitFunction_with_argtypes_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_as) { - return visitor.visitOpt_as(this); + if (visitor.visitFunction_with_argtypes_list) { + return visitor.visitFunction_with_argtypes_list(this); } else { return visitor.visitChildren(this); } @@ -94989,44 +70333,38 @@ export class Opt_asContext extends antlr.ParserRuleContext { } -export class AltertsdictionarystmtContext extends antlr.ParserRuleContext { +export class Function_with_argtypesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; - } - public KW_TEXT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TEXT, 0)!; - } - public KW_SEARCH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0)!; + public function_name(): Function_nameContext | null { + return this.getRuleContext(0, Function_nameContext); } - public KW_DICTIONARY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0)!; + public func_args(): Func_argsContext | null { + return this.getRuleContext(0, Func_argsContext); } - public any_name(): Any_nameContext { - return this.getRuleContext(0, Any_nameContext)!; + public type_func_name_keyword(): Type_func_name_keywordContext | null { + return this.getRuleContext(0, Type_func_name_keywordContext); } - public definition(): DefinitionContext { - return this.getRuleContext(0, DefinitionContext)!; + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altertsdictionarystmt; + return PostgreSqlParser.RULE_function_with_argtypes; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltertsdictionarystmt) { - listener.enterAltertsdictionarystmt(this); + if(listener.enterFunction_with_argtypes) { + listener.enterFunction_with_argtypes(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltertsdictionarystmt) { - listener.exitAltertsdictionarystmt(this); + if(listener.exitFunction_with_argtypes) { + listener.exitFunction_with_argtypes(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltertsdictionarystmt) { - return visitor.visitAltertsdictionarystmt(this); + if (visitor.visitFunction_with_argtypes) { + return visitor.visitFunction_with_argtypes(this); } else { return visitor.visitChildren(this); } @@ -95034,80 +70372,35 @@ export class AltertsdictionarystmtContext extends antlr.ParserRuleContext { } -export class AltertsconfigurationstmtContext extends antlr.ParserRuleContext { +export class Func_argContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode[]; - public KW_ALTER(i: number): antlr.TerminalNode | null; - public KW_ALTER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_ALTER); - } else { - return this.getToken(PostgreSqlParser.KW_ALTER, i); - } - } - public KW_TEXT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TEXT, 0)!; - } - public KW_SEARCH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0)!; - } - public KW_CONFIGURATION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0)!; - } - public any_name(): Any_nameContext[]; - public any_name(i: number): Any_nameContext | null; - public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Any_nameContext); - } - - return this.getRuleContext(i, Any_nameContext); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ADD, 0); - } - public KW_MAPPING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MAPPING, 0)!; - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public name_list(): Name_listContext | null { - return this.getRuleContext(0, Name_listContext); - } - public any_with(): Any_withContext | null { - return this.getRuleContext(0, Any_withContext); - } - public any_name_list(): Any_name_listContext | null { - return this.getRuleContext(0, Any_name_listContext); - } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLACE, 0); + public func_type(): Func_typeContext { + return this.getRuleContext(0, Func_typeContext)!; } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DROP, 0); + public arg_class(): Arg_classContext | null { + return this.getRuleContext(0, Arg_classContext); } - public opt_if_exists(): Opt_if_existsContext | null { - return this.getRuleContext(0, Opt_if_existsContext); + public type_function_name(): Type_function_nameContext | null { + return this.getRuleContext(0, Type_function_nameContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_altertsconfigurationstmt; + return PostgreSqlParser.RULE_func_arg; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAltertsconfigurationstmt) { - listener.enterAltertsconfigurationstmt(this); + if(listener.enterFunc_arg) { + listener.enterFunc_arg(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAltertsconfigurationstmt) { - listener.exitAltertsconfigurationstmt(this); + if(listener.exitFunc_arg) { + listener.exitFunc_arg(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAltertsconfigurationstmt) { - return visitor.visitAltertsconfigurationstmt(this); + if (visitor.visitFunc_arg) { + return visitor.visitFunc_arg(this); } else { return visitor.visitChildren(this); } @@ -95115,29 +70408,38 @@ export class AltertsconfigurationstmtContext extends antlr.ParserRuleContext { } -export class Any_withContext extends antlr.ParserRuleContext { +export class Arg_classContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public KW_OUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OUT, 0); + } + public KW_INOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INOUT, 0); + } + public KW_VARIADIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARIADIC, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_any_with; + return PostgreSqlParser.RULE_arg_class; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAny_with) { - listener.enterAny_with(this); + if(listener.enterArg_class) { + listener.enterArg_class(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAny_with) { - listener.exitAny_with(this); + if(listener.exitArg_class) { + listener.exitArg_class(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAny_with) { - return visitor.visitAny_with(this); + if (visitor.visitArg_class) { + return visitor.visitArg_class(this); } else { return visitor.visitChildren(this); } @@ -95145,62 +70447,44 @@ export class Any_withContext extends antlr.ParserRuleContext { } -export class CreateconversionstmtContext extends antlr.ParserRuleContext { +export class Func_typeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; - } - public KW_CONVERSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CONVERSION, 0)!; - } - public any_name(): Any_nameContext[]; - public any_name(i: number): Any_nameContext | null; - public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Any_nameContext); - } - - return this.getRuleContext(i, Any_nameContext); + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public type_function_name(): Type_function_nameContext | null { + return this.getRuleContext(0, Type_function_nameContext); } - public sconst(): SconstContext[]; - public sconst(i: number): SconstContext | null; - public sconst(i?: number): SconstContext[] | SconstContext | null { - if (i === undefined) { - return this.getRuleContexts(SconstContext); - } - - return this.getRuleContext(i, SconstContext); + public attrs(): AttrsContext | null { + return this.getRuleContext(0, AttrsContext); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TO, 0)!; + public PERCENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PERCENT, 0); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public opt_default(): Opt_defaultContext | null { - return this.getRuleContext(0, Opt_defaultContext); + public KW_SETOF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SETOF, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_createconversionstmt; + return PostgreSqlParser.RULE_func_type; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCreateconversionstmt) { - listener.enterCreateconversionstmt(this); + if(listener.enterFunc_type) { + listener.enterFunc_type(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCreateconversionstmt) { - listener.exitCreateconversionstmt(this); + if(listener.exitFunc_type) { + listener.exitFunc_type(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCreateconversionstmt) { - return visitor.visitCreateconversionstmt(this); + if (visitor.visitFunc_type) { + return visitor.visitFunc_type(this); } else { return visitor.visitChildren(this); } @@ -95208,41 +70492,38 @@ export class CreateconversionstmtContext extends antlr.ParserRuleContext { } -export class ClusterstmtContext extends antlr.ParserRuleContext { +export class Func_arg_with_defaultContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CLUSTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CLUSTER, 0)!; - } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); + public func_arg(): Func_argContext { + return this.getRuleContext(0, Func_argContext)!; } - public opt_verbose(): Opt_verboseContext | null { - return this.getRuleContext(0, Opt_verboseContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public cluster_index_specification(): Cluster_index_specificationContext | null { - return this.getRuleContext(0, Cluster_index_specificationContext); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } - public opt_verbose_list(): Opt_verbose_listContext | null { - return this.getRuleContext(0, Opt_verbose_listContext); + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_clusterstmt; + return PostgreSqlParser.RULE_func_arg_with_default; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterClusterstmt) { - listener.enterClusterstmt(this); + if(listener.enterFunc_arg_with_default) { + listener.enterFunc_arg_with_default(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitClusterstmt) { - listener.exitClusterstmt(this); + if(listener.exitFunc_arg_with_default) { + listener.exitFunc_arg_with_default(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitClusterstmt) { - return visitor.visitClusterstmt(this); + if (visitor.visitFunc_arg_with_default) { + return visitor.visitFunc_arg_with_default(this); } else { return visitor.visitChildren(this); } @@ -95250,50 +70531,50 @@ export class ClusterstmtContext extends antlr.ParserRuleContext { } -export class Opt_verbose_listContext extends antlr.ParserRuleContext { +export class Aggr_argsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public OPEN_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public opt_verbose(): Opt_verboseContext[]; - public opt_verbose(i: number): Opt_verboseContext | null; - public opt_verbose(i?: number): Opt_verboseContext[] | Opt_verboseContext | null { + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public STAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.STAR, 0); + } + public func_args_list(): Func_args_listContext[]; + public func_args_list(i: number): Func_args_listContext | null; + public func_args_list(i?: number): Func_args_listContext[] | Func_args_listContext | null { if (i === undefined) { - return this.getRuleContexts(Opt_verboseContext); + return this.getRuleContexts(Func_args_listContext); } - return this.getRuleContext(i, Opt_verboseContext); - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + return this.getRuleContext(i, Func_args_listContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ORDER, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_verbose_list; + return PostgreSqlParser.RULE_aggr_args; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_verbose_list) { - listener.enterOpt_verbose_list(this); + if(listener.enterAggr_args) { + listener.enterAggr_args(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_verbose_list) { - listener.exitOpt_verbose_list(this); + if(listener.exitAggr_args) { + listener.exitAggr_args(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_verbose_list) { - return visitor.visitOpt_verbose_list(this); + if (visitor.visitAggr_args) { + return visitor.visitAggr_args(this); } else { return visitor.visitChildren(this); } @@ -95301,32 +70582,32 @@ export class Opt_verbose_listContext extends antlr.ParserRuleContext { } -export class Cluster_index_specificationContext extends antlr.ParserRuleContext { +export class Aggregate_with_argtypesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; + public function_name(): Function_nameContext { + return this.getRuleContext(0, Function_nameContext)!; } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public aggr_args(): Aggr_argsContext { + return this.getRuleContext(0, Aggr_argsContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cluster_index_specification; + return PostgreSqlParser.RULE_aggregate_with_argtypes; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCluster_index_specification) { - listener.enterCluster_index_specification(this); + if(listener.enterAggregate_with_argtypes) { + listener.enterAggregate_with_argtypes(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCluster_index_specification) { - listener.exitCluster_index_specification(this); + if(listener.exitAggregate_with_argtypes) { + listener.exitAggregate_with_argtypes(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCluster_index_specification) { - return visitor.visitCluster_index_specification(this); + if (visitor.visitAggregate_with_argtypes) { + return visitor.visitAggregate_with_argtypes(this); } else { return visitor.visitChildren(this); } @@ -95334,98 +70615,107 @@ export class Cluster_index_specificationContext extends antlr.ParserRuleContext } -export class VacuumstmtContext extends antlr.ParserRuleContext { +export class Common_func_opt_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_VACUUM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VACUUM, 0)!; + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } - public opt_full(): Opt_fullContext | null { - return this.getRuleContext(0, Opt_fullContext); + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NULL); + } else { + return this.getToken(PostgreSqlParser.KW_NULL, i); + } } - public opt_freeze(): Opt_freezeContext | null { - return this.getRuleContext(0, Opt_freezeContext); + public KW_INPUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INPUT, 0); } - public opt_verbose(): Opt_verboseContext | null { - return this.getRuleContext(0, Opt_verboseContext); + public KW_RETURNS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RETURNS, 0); } - public opt_analyze(): Opt_analyzeContext | null { - return this.getRuleContext(0, Opt_analyzeContext); + public KW_CALLED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CALLED, 0); } - public opt_vacuum_relation_list(): Opt_vacuum_relation_listContext | null { - return this.getRuleContext(0, Opt_vacuum_relation_listContext); + public KW_STRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STRICT, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_IMMUTABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IMMUTABLE, 0); } - public vac_analyze_option_list(): Vac_analyze_option_listContext | null { - return this.getRuleContext(0, Vac_analyze_option_listContext); + public KW_STABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STABLE, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_VOLATILE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VOLATILE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vacuumstmt; + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SECURITY, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVacuumstmt) { - listener.enterVacuumstmt(this); - } + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFINER, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVacuumstmt) { - listener.exitVacuumstmt(this); - } + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INVOKER, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVacuumstmt) { - return visitor.visitVacuumstmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_EXTERNAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTERNAL, 0); } -} - - -export class AnalyzestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_LEAKPROOF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEAKPROOF, 0); } - public analyze_keyword(): Analyze_keywordContext { - return this.getRuleContext(0, Analyze_keywordContext)!; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public opt_verbose(): Opt_verboseContext | null { - return this.getRuleContext(0, Opt_verboseContext); + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } - public opt_vacuum_relation_list(): Opt_vacuum_relation_listContext | null { - return this.getRuleContext(0, Opt_vacuum_relation_listContext); + public KW_COST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COST, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); } - public analyze_options_list(): Analyze_options_listContext | null { - return this.getRuleContext(0, Analyze_options_listContext); + public KW_SUPPORT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUPPORT, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public set_rest_more(): Set_rest_moreContext | null { + return this.getRuleContext(0, Set_rest_moreContext); + } + public variableresetstmt(): VariableresetstmtContext | null { + return this.getRuleContext(0, VariableresetstmtContext); + } + public KW_PARALLEL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARALLEL, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_analyzestmt; + return PostgreSqlParser.RULE_common_func_opt_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAnalyzestmt) { - listener.enterAnalyzestmt(this); + if(listener.enterCommon_func_opt_item) { + listener.enterCommon_func_opt_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAnalyzestmt) { - listener.exitAnalyzestmt(this); + if(listener.exitCommon_func_opt_item) { + listener.exitCommon_func_opt_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAnalyzestmt) { - return visitor.visitAnalyzestmt(this); + if (visitor.visitCommon_func_opt_item) { + return visitor.visitCommon_func_opt_item(this); } else { return visitor.visitChildren(this); } @@ -95433,18 +70723,54 @@ export class AnalyzestmtContext extends antlr.ParserRuleContext { } -export class Vac_analyze_option_listContext extends antlr.ParserRuleContext { +export class Createfunc_opt_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public vac_analyze_option_elem(): Vac_analyze_option_elemContext[]; - public vac_analyze_option_elem(i: number): Vac_analyze_option_elemContext | null; - public vac_analyze_option_elem(i?: number): Vac_analyze_option_elemContext[] | Vac_analyze_option_elemContext | null { + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); + } + public notify_payload(): Notify_payloadContext | null { + return this.getRuleContext(0, Notify_payloadContext); + } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); + } + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | null { + return this.getRuleContext(0, Nonreservedword_or_sconstContext); + } + public KW_TRANSFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); + } + public KW_FOR(): antlr.TerminalNode[]; + public KW_FOR(i: number): antlr.TerminalNode | null; + public KW_FOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FOR); + } else { + return this.getToken(PostgreSqlParser.KW_FOR, i); + } + } + public KW_TYPE(): antlr.TerminalNode[]; + public KW_TYPE(i: number): antlr.TerminalNode | null; + public KW_TYPE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_TYPE); + } else { + return this.getToken(PostgreSqlParser.KW_TYPE, i); + } + } + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { if (i === undefined) { - return this.getRuleContexts(Vac_analyze_option_elemContext); + return this.getRuleContexts(TypenameContext); } - return this.getRuleContext(i, Vac_analyze_option_elemContext); + return this.getRuleContext(i, TypenameContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -95455,55 +70781,55 @@ export class Vac_analyze_option_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vac_analyze_option_list; + public KW_WINDOW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WINDOW, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVac_analyze_option_list) { - listener.enterVac_analyze_option_list(this); - } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVac_analyze_option_list) { - listener.exitVac_analyze_option_list(this); + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); } + + return this.getRuleContext(i, ColidContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVac_analyze_option_list) { - return visitor.visitVac_analyze_option_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } -} - - -export class Analyze_keywordContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); } - public KW_ANALYZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ANALYZE, 0); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public KW_ANALYSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ANALYSE, 0); + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public stmt(): StmtContext | null { + return this.getRuleContext(0, StmtContext); + } + public common_func_opt_item(): Common_func_opt_itemContext | null { + return this.getRuleContext(0, Common_func_opt_itemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_analyze_keyword; + return PostgreSqlParser.RULE_createfunc_opt_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAnalyze_keyword) { - listener.enterAnalyze_keyword(this); + if(listener.enterCreatefunc_opt_item) { + listener.enterCreatefunc_opt_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAnalyze_keyword) { - listener.exitAnalyze_keyword(this); + if(listener.exitCreatefunc_opt_item) { + listener.exitCreatefunc_opt_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAnalyze_keyword) { - return visitor.visitAnalyze_keyword(this); + if (visitor.visitCreatefunc_opt_item) { + return visitor.visitCreatefunc_opt_item(this); } else { return visitor.visitChildren(this); } @@ -95511,32 +70837,32 @@ export class Analyze_keywordContext extends antlr.ParserRuleContext { } -export class Vac_analyze_option_elemContext extends antlr.ParserRuleContext { +export class Opt_definitionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public vac_analyze_option_name(): Vac_analyze_option_nameContext { - return this.getRuleContext(0, Vac_analyze_option_nameContext)!; + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public vac_analyze_option_arg(): Vac_analyze_option_argContext | null { - return this.getRuleContext(0, Vac_analyze_option_argContext); + public definition(): DefinitionContext { + return this.getRuleContext(0, DefinitionContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vac_analyze_option_elem; + return PostgreSqlParser.RULE_opt_definition; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVac_analyze_option_elem) { - listener.enterVac_analyze_option_elem(this); + if(listener.enterOpt_definition) { + listener.enterOpt_definition(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVac_analyze_option_elem) { - listener.exitVac_analyze_option_elem(this); + if(listener.exitOpt_definition) { + listener.exitOpt_definition(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVac_analyze_option_elem) { - return visitor.visitVac_analyze_option_elem(this); + if (visitor.visitOpt_definition) { + return visitor.visitOpt_definition(this); } else { return visitor.visitChildren(this); } @@ -95544,32 +70870,32 @@ export class Vac_analyze_option_elemContext extends antlr.ParserRuleContext { } -export class Vac_analyze_option_nameContext extends antlr.ParserRuleContext { +export class Table_func_columnContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public nonreservedword(): NonreservedwordContext | null { - return this.getRuleContext(0, NonreservedwordContext); + public column_name(): Column_nameContext { + return this.getRuleContext(0, Column_nameContext)!; } - public analyze_keyword(): Analyze_keywordContext | null { - return this.getRuleContext(0, Analyze_keywordContext); + public func_type(): Func_typeContext { + return this.getRuleContext(0, Func_typeContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vac_analyze_option_name; + return PostgreSqlParser.RULE_table_func_column; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVac_analyze_option_name) { - listener.enterVac_analyze_option_name(this); + if(listener.enterTable_func_column) { + listener.enterTable_func_column(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVac_analyze_option_name) { - listener.exitVac_analyze_option_name(this); + if(listener.exitTable_func_column) { + listener.exitTable_func_column(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVac_analyze_option_name) { - return visitor.visitVac_analyze_option_name(this); + if (visitor.visitTable_func_column) { + return visitor.visitTable_func_column(this); } else { return visitor.visitChildren(this); } @@ -95577,32 +70903,59 @@ export class Vac_analyze_option_nameContext extends antlr.ParserRuleContext { } -export class Vac_analyze_option_argContext extends antlr.ParserRuleContext { +export class AlterfunctionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { - return this.getRuleContext(0, Opt_boolean_or_stringContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + } + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); + } + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + } + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); + } + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + } + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); + } + public common_func_opt_item(): Common_func_opt_itemContext[]; + public common_func_opt_item(i: number): Common_func_opt_itemContext | null; + public common_func_opt_item(i?: number): Common_func_opt_itemContext[] | Common_func_opt_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Common_func_opt_itemContext); + } + + return this.getRuleContext(i, Common_func_opt_itemContext); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vac_analyze_option_arg; + return PostgreSqlParser.RULE_alterfunctionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVac_analyze_option_arg) { - listener.enterVac_analyze_option_arg(this); + if(listener.enterAlterfunctionstmt) { + listener.enterAlterfunctionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVac_analyze_option_arg) { - listener.exitVac_analyze_option_arg(this); + if(listener.exitAlterfunctionstmt) { + listener.exitAlterfunctionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVac_analyze_option_arg) { - return visitor.visitVac_analyze_option_arg(this); + if (visitor.visitAlterfunctionstmt) { + return visitor.visitAlterfunctionstmt(this); } else { return visitor.visitChildren(this); } @@ -95610,29 +70963,53 @@ export class Vac_analyze_option_argContext extends antlr.ParserRuleContext { } -export class Opt_analyzeContext extends antlr.ParserRuleContext { +export class RemovefuncstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public analyze_keyword(): Analyze_keywordContext { - return this.getRuleContext(0, Analyze_keywordContext)!; + public KW_DROP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DROP, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + } + public function_with_argtypes_list(): Function_with_argtypes_listContext | null { + return this.getRuleContext(0, Function_with_argtypes_listContext); + } + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); + } + public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext | null { + return this.getRuleContext(0, Procedure_with_argtypes_listContext); + } + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); + } + public routine_with_argtypes_list(): Routine_with_argtypes_listContext | null { + return this.getRuleContext(0, Routine_with_argtypes_listContext); + } + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_analyze; + return PostgreSqlParser.RULE_removefuncstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_analyze) { - listener.enterOpt_analyze(this); + if(listener.enterRemovefuncstmt) { + listener.enterRemovefuncstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_analyze) { - listener.exitOpt_analyze(this); + if(listener.exitRemovefuncstmt) { + listener.exitRemovefuncstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_analyze) { - return visitor.visitOpt_analyze(this); + if (visitor.visitRemovefuncstmt) { + return visitor.visitRemovefuncstmt(this); } else { return visitor.visitChildren(this); } @@ -95640,18 +71017,30 @@ export class Opt_analyzeContext extends antlr.ParserRuleContext { } -export class Analyze_options_listContext extends antlr.ParserRuleContext { +export class RemoveaggrstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public analyze_option_elem(): Analyze_option_elemContext[]; - public analyze_option_elem(i: number): Analyze_option_elemContext | null; - public analyze_option_elem(i?: number): Analyze_option_elemContext[] | Analyze_option_elemContext | null { + public KW_DROP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DROP, 0)!; + } + public KW_AGGREGATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0)!; + } + public aggregate_with_argtypes(): Aggregate_with_argtypesContext[]; + public aggregate_with_argtypes(i: number): Aggregate_with_argtypesContext | null; + public aggregate_with_argtypes(i?: number): Aggregate_with_argtypesContext[] | Aggregate_with_argtypesContext | null { if (i === undefined) { - return this.getRuleContexts(Analyze_option_elemContext); + return this.getRuleContexts(Aggregate_with_argtypesContext); } - return this.getRuleContext(i, Analyze_option_elemContext); + return this.getRuleContext(i, Aggregate_with_argtypesContext); + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); + } + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -95663,21 +71052,21 @@ export class Analyze_options_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_analyze_options_list; + return PostgreSqlParser.RULE_removeaggrstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAnalyze_options_list) { - listener.enterAnalyze_options_list(this); + if(listener.enterRemoveaggrstmt) { + listener.enterRemoveaggrstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAnalyze_options_list) { - listener.exitAnalyze_options_list(this); + if(listener.exitRemoveaggrstmt) { + listener.exitRemoveaggrstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAnalyze_options_list) { - return visitor.visitAnalyze_options_list(this); + if (visitor.visitRemoveaggrstmt) { + return visitor.visitRemoveaggrstmt(this); } else { return visitor.visitChildren(this); } @@ -95685,71 +71074,56 @@ export class Analyze_options_listContext extends antlr.ParserRuleContext { } -export class Analyze_option_elemContext extends antlr.ParserRuleContext { +export class RemoveoperstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opt_verbose(): Opt_verboseContext | null { - return this.getRuleContext(0, Opt_verboseContext); - } - public opt_skiplock(): Opt_skiplockContext | null { - return this.getRuleContext(0, Opt_skiplockContext); - } - public opt_buffer_usage_limit(): Opt_buffer_usage_limitContext | null { - return this.getRuleContext(0, Opt_buffer_usage_limitContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_analyze_option_elem; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAnalyze_option_elem) { - listener.enterAnalyze_option_elem(this); - } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DROP, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAnalyze_option_elem) { - listener.exitAnalyze_option_elem(this); - } + public KW_OPERATOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAnalyze_option_elem) { - return visitor.visitAnalyze_option_elem(this); - } else { - return visitor.visitChildren(this); + public operator_with_argtypes(): Operator_with_argtypesContext[]; + public operator_with_argtypes(i: number): Operator_with_argtypesContext | null; + public operator_with_argtypes(i?: number): Operator_with_argtypesContext[] | Operator_with_argtypesContext | null { + if (i === undefined) { + return this.getRuleContexts(Operator_with_argtypesContext); } - } -} - -export class Opt_verboseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Operator_with_argtypesContext); } - public KW_VERBOSE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VERBOSE, 0)!; + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_verbose; + return PostgreSqlParser.RULE_removeoperstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_verbose) { - listener.enterOpt_verbose(this); + if(listener.enterRemoveoperstmt) { + listener.enterRemoveoperstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_verbose) { - listener.exitOpt_verbose(this); + if(listener.exitRemoveoperstmt) { + listener.exitRemoveoperstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_verbose) { - return visitor.visitOpt_verbose(this); + if (visitor.visitRemoveoperstmt) { + return visitor.visitRemoveoperstmt(this); } else { return visitor.visitChildren(this); } @@ -95757,35 +71131,47 @@ export class Opt_verboseContext extends antlr.ParserRuleContext { } -export class Opt_skiplockContext extends antlr.ParserRuleContext { +export class Oper_argtypesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SKIP_LOCKED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SKIP_LOCKED, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { + if (i === undefined) { + return this.getRuleContexts(TypenameContext); + } + + return this.getRuleContext(i, TypenameContext); } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); + public KW_NONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NONE, 0); + } + public COMMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COMMA, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_skiplock; + return PostgreSqlParser.RULE_oper_argtypes; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_skiplock) { - listener.enterOpt_skiplock(this); + if(listener.enterOper_argtypes) { + listener.enterOper_argtypes(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_skiplock) { - listener.exitOpt_skiplock(this); + if(listener.exitOper_argtypes) { + listener.exitOper_argtypes(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_skiplock) { - return visitor.visitOpt_skiplock(this); + if (visitor.visitOper_argtypes) { + return visitor.visitOper_argtypes(this); } else { return visitor.visitChildren(this); } @@ -95793,35 +71179,47 @@ export class Opt_skiplockContext extends antlr.ParserRuleContext { } -export class Opt_buffer_usage_limitContext extends antlr.ParserRuleContext { +export class Any_operatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_BUFFER_USAGE_LIMIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BUFFER_USAGE_LIMIT, 0)!; + public all_op(): All_opContext { + return this.getRuleContext(0, All_opContext)!; } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); + } + + return this.getRuleContext(i, ColidContext); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public DOT(): antlr.TerminalNode[]; + public DOT(i: number): antlr.TerminalNode | null; + public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.DOT); + } else { + return this.getToken(PostgreSqlParser.DOT, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_buffer_usage_limit; + return PostgreSqlParser.RULE_any_operator; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_buffer_usage_limit) { - listener.enterOpt_buffer_usage_limit(this); + if(listener.enterAny_operator) { + listener.enterAny_operator(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_buffer_usage_limit) { - listener.exitOpt_buffer_usage_limit(this); + if(listener.exitAny_operator) { + listener.exitAny_operator(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_buffer_usage_limit) { - return visitor.visitOpt_buffer_usage_limit(this); + if (visitor.visitAny_operator) { + return visitor.visitAny_operator(this); } else { return visitor.visitChildren(this); } @@ -95829,29 +71227,32 @@ export class Opt_buffer_usage_limitContext extends antlr.ParserRuleContext { } -export class Opt_fullContext extends antlr.ParserRuleContext { +export class Operator_with_argtypesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FULL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FULL, 0)!; + public any_operator(): Any_operatorContext { + return this.getRuleContext(0, Any_operatorContext)!; + } + public oper_argtypes(): Oper_argtypesContext { + return this.getRuleContext(0, Oper_argtypesContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_full; + return PostgreSqlParser.RULE_operator_with_argtypes; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_full) { - listener.enterOpt_full(this); + if(listener.enterOperator_with_argtypes) { + listener.enterOperator_with_argtypes(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_full) { - listener.exitOpt_full(this); + if(listener.exitOperator_with_argtypes) { + listener.exitOperator_with_argtypes(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_full) { - return visitor.visitOpt_full(this); + if (visitor.visitOperator_with_argtypes) { + return visitor.visitOperator_with_argtypes(this); } else { return visitor.visitChildren(this); } @@ -95859,29 +71260,56 @@ export class Opt_fullContext extends antlr.ParserRuleContext { } -export class Opt_freezeContext extends antlr.ParserRuleContext { +export class DostmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FREEZE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FREEZE, 0)!; + public KW_DO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DO, 0)!; + } + public sconst(): SconstContext[]; + public sconst(i: number): SconstContext | null; + public sconst(i?: number): SconstContext[] | SconstContext | null { + if (i === undefined) { + return this.getRuleContexts(SconstContext); + } + + return this.getRuleContext(i, SconstContext); + } + public KW_LANGUAGE(): antlr.TerminalNode[]; + public KW_LANGUAGE(i: number): antlr.TerminalNode | null; + public KW_LANGUAGE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_LANGUAGE); + } else { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, i); + } + } + public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext[]; + public nonreservedword_or_sconst(i: number): Nonreservedword_or_sconstContext | null; + public nonreservedword_or_sconst(i?: number): Nonreservedword_or_sconstContext[] | Nonreservedword_or_sconstContext | null { + if (i === undefined) { + return this.getRuleContexts(Nonreservedword_or_sconstContext); + } + + return this.getRuleContext(i, Nonreservedword_or_sconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_freeze; + return PostgreSqlParser.RULE_dostmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_freeze) { - listener.enterOpt_freeze(this); + if(listener.enterDostmt) { + listener.enterDostmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_freeze) { - listener.exitOpt_freeze(this); + if(listener.exitDostmt) { + listener.exitDostmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_freeze) { - return visitor.visitOpt_freeze(this); + if (visitor.visitDostmt) { + return visitor.visitDostmt(this); } else { return visitor.visitChildren(this); } @@ -95889,35 +71317,77 @@ export class Opt_freezeContext extends antlr.ParserRuleContext { } -export class Opt_name_listContext extends antlr.ParserRuleContext { +export class CreatecaststmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_CAST(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CAST, 0)!; + } public OPEN_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public column_list(): Column_listContext { - return this.getRuleContext(0, Column_listContext)!; + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { + if (i === undefined) { + return this.getRuleContexts(TypenameContext); + } + + return this.getRuleContext(i, TypenameContext); + } + public KW_AS(): antlr.TerminalNode[]; + public KW_AS(i: number): antlr.TerminalNode | null; + public KW_AS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_AS); + } else { + return this.getToken(PostgreSqlParser.KW_AS, i); + } } public CLOSE_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); + } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); + } + public KW_INOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INOUT, 0); + } + public KW_ASSIGNMENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASSIGNMENT, 0); + } + public KW_IMPLICIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IMPLICIT, 0); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_name_list; + return PostgreSqlParser.RULE_createcaststmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_name_list) { - listener.enterOpt_name_list(this); + if(listener.enterCreatecaststmt) { + listener.enterCreatecaststmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_name_list) { - listener.exitOpt_name_list(this); + if(listener.exitCreatecaststmt) { + listener.exitCreatecaststmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_name_list) { - return visitor.visitOpt_name_list(this); + if (visitor.visitCreatecaststmt) { + return visitor.visitCreatecaststmt(this); } else { return visitor.visitChildren(this); } @@ -95925,32 +71395,32 @@ export class Opt_name_listContext extends antlr.ParserRuleContext { } -export class Vacuum_relationContext extends antlr.ParserRuleContext { +export class Opt_if_existsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public table_name(): Table_nameContext { - return this.getRuleContext(0, Table_nameContext)!; + public KW_IF(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IF, 0)!; } - public opt_name_list(): Opt_name_listContext | null { - return this.getRuleContext(0, Opt_name_listContext); + public KW_EXISTS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXISTS, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vacuum_relation; + return PostgreSqlParser.RULE_opt_if_exists; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVacuum_relation) { - listener.enterVacuum_relation(this); + if(listener.enterOpt_if_exists) { + listener.enterOpt_if_exists(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVacuum_relation) { - listener.exitVacuum_relation(this); + if(listener.exitOpt_if_exists) { + listener.exitOpt_if_exists(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVacuum_relation) { - return visitor.visitVacuum_relation(this); + if (visitor.visitOpt_if_exists) { + return visitor.visitOpt_if_exists(this); } else { return visitor.visitChildren(this); } @@ -95958,74 +71428,71 @@ export class Vacuum_relationContext extends antlr.ParserRuleContext { } -export class Vacuum_relation_listContext extends antlr.ParserRuleContext { +export class CreatetransformstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public vacuum_relation(): Vacuum_relationContext[]; - public vacuum_relation(i: number): Vacuum_relationContext | null; - public vacuum_relation(i?: number): Vacuum_relationContext[] | Vacuum_relationContext | null { - if (i === undefined) { - return this.getRuleContexts(Vacuum_relationContext); - } - - return this.getRuleContext(i, Vacuum_relationContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_TRANSFORM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_vacuum_relation_list; + public KW_FOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOR, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterVacuum_relation_list) { - listener.enterVacuum_relation_list(this); - } + public typename(): TypenameContext { + return this.getRuleContext(0, TypenameContext)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitVacuum_relation_list) { - listener.exitVacuum_relation_list(this); - } + public KW_LANGUAGE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitVacuum_relation_list) { - return visitor.visitVacuum_relation_list(this); - } else { - return visitor.visitChildren(this); - } + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } -} - + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public sql_with_function(): Sql_with_functionContext[]; + public sql_with_function(i: number): Sql_with_functionContext | null; + public sql_with_function(i?: number): Sql_with_functionContext[] | Sql_with_functionContext | null { + if (i === undefined) { + return this.getRuleContexts(Sql_with_functionContext); + } -export class Opt_vacuum_relation_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Sql_with_functionContext); } - public vacuum_relation_list(): Vacuum_relation_listContext { - return this.getRuleContext(0, Vacuum_relation_listContext)!; + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public opt_or_replace(): Opt_or_replaceContext | null { + return this.getRuleContext(0, Opt_or_replaceContext); + } + public COMMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COMMA, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_vacuum_relation_list; + return PostgreSqlParser.RULE_createtransformstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_vacuum_relation_list) { - listener.enterOpt_vacuum_relation_list(this); + if(listener.enterCreatetransformstmt) { + listener.enterCreatetransformstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_vacuum_relation_list) { - listener.exitOpt_vacuum_relation_list(this); + if(listener.exitCreatetransformstmt) { + listener.exitCreatetransformstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_vacuum_relation_list) { - return visitor.visitOpt_vacuum_relation_list(this); + if (visitor.visitCreatetransformstmt) { + return visitor.visitCreatetransformstmt(this); } else { return visitor.visitChildren(this); } @@ -96033,50 +71500,38 @@ export class Opt_vacuum_relation_listContext extends antlr.ParserRuleContext { } -export class ExplainstmtContext extends antlr.ParserRuleContext { +export class Sql_with_functionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_EXPLAIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXPLAIN, 0)!; - } - public explainablestmt(): ExplainablestmtContext { - return this.getRuleContext(0, ExplainablestmtContext)!; - } - public analyze_keyword(): Analyze_keywordContext | null { - return this.getRuleContext(0, Analyze_keywordContext); - } - public opt_verbose(): Opt_verboseContext | null { - return this.getRuleContext(0, Opt_verboseContext); - } - public KW_VERBOSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VERBOSE, 0); + public KW_SQL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SQL, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public explain_option_list(): Explain_option_listContext | null { - return this.getRuleContext(0, Explain_option_listContext); + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public function_with_argtypes(): Function_with_argtypesContext { + return this.getRuleContext(0, Function_with_argtypesContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_explainstmt; + return PostgreSqlParser.RULE_sql_with_function; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExplainstmt) { - listener.enterExplainstmt(this); + if(listener.enterSql_with_function) { + listener.enterSql_with_function(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExplainstmt) { - listener.exitExplainstmt(this); + if(listener.exitSql_with_function) { + listener.exitSql_with_function(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExplainstmt) { - return visitor.visitExplainstmt(this); + if (visitor.visitSql_with_function) { + return visitor.visitSql_with_function(this); } else { return visitor.visitChildren(this); } @@ -96084,72 +71539,57 @@ export class ExplainstmtContext extends antlr.ParserRuleContext { } -export class ExplainablestmtContext extends antlr.ParserRuleContext { +export class ReindexstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public selectstmt(): SelectstmtContext | null { - return this.getRuleContext(0, SelectstmtContext); - } - public insertstmt(): InsertstmtContext | null { - return this.getRuleContext(0, InsertstmtContext); + public KW_REINDEX(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REINDEX, 0)!; } - public updatestmt(): UpdatestmtContext | null { - return this.getRuleContext(0, UpdatestmtContext); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public deletestmt(): DeletestmtContext | null { - return this.getRuleContext(0, DeletestmtContext); + public KW_VERBOSE(): antlr.TerminalNode[]; + public KW_VERBOSE(i: number): antlr.TerminalNode | null; + public KW_VERBOSE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_VERBOSE); + } else { + return this.getToken(PostgreSqlParser.KW_VERBOSE, i); + } } - public declarecursorstmt(): DeclarecursorstmtContext | null { - return this.getRuleContext(0, DeclarecursorstmtContext); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public createasstmt(): CreateasstmtContext | null { - return this.getRuleContext(0, CreateasstmtContext); + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); } - public creatematviewstmt(): CreatematviewstmtContext | null { - return this.getRuleContext(0, CreatematviewstmtContext); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public refreshmatviewstmt(): RefreshmatviewstmtContext | null { - return this.getRuleContext(0, RefreshmatviewstmtContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public executestmt(): ExecutestmtContext | null { - return this.getRuleContext(0, ExecutestmtContext); + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_explainablestmt; + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExplainablestmt) { - listener.enterExplainablestmt(this); - } + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExplainablestmt) { - listener.exitExplainablestmt(this); - } + public KW_SYSTEM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SYSTEM, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExplainablestmt) { - return visitor.visitExplainablestmt(this); - } else { - return visitor.visitChildren(this); - } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } -} - - -export class Explain_option_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_DATABASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0); } - public explain_option_elem(): Explain_option_elemContext[]; - public explain_option_elem(i: number): Explain_option_elemContext | null; - public explain_option_elem(i?: number): Explain_option_elemContext[] | Explain_option_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Explain_option_elemContext); - } - - return this.getRuleContext(i, Explain_option_elemContext); + public database_name(): Database_nameContext | null { + return this.getRuleContext(0, Database_nameContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -96160,22 +71600,25 @@ export class Explain_option_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public KW_CONCURRENTLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_explain_option_list; + return PostgreSqlParser.RULE_reindexstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExplain_option_list) { - listener.enterExplain_option_list(this); + if(listener.enterReindexstmt) { + listener.enterReindexstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExplain_option_list) { - listener.exitExplain_option_list(this); + if(listener.exitReindexstmt) { + listener.exitReindexstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExplain_option_list) { - return visitor.visitExplain_option_list(this); + if (visitor.visitReindexstmt) { + return visitor.visitReindexstmt(this); } else { return visitor.visitChildren(this); } @@ -96183,32 +71626,41 @@ export class Explain_option_listContext extends antlr.ParserRuleContext { } -export class Explain_option_elemContext extends antlr.ParserRuleContext { +export class AltertblspcstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public explain_option_name(): Explain_option_nameContext { - return this.getRuleContext(0, Explain_option_nameContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public opttablespace(): OpttablespaceContext { + return this.getRuleContext(0, OpttablespaceContext)!; + } + public reloptions(): ReloptionsContext { + return this.getRuleContext(0, ReloptionsContext)!; + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public explain_option_arg(): Explain_option_argContext | null { - return this.getRuleContext(0, Explain_option_argContext); + public KW_RESET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESET, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_explain_option_elem; + return PostgreSqlParser.RULE_altertblspcstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExplain_option_elem) { - listener.enterExplain_option_elem(this); + if(listener.enterAltertblspcstmt) { + listener.enterAltertblspcstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExplain_option_elem) { - listener.exitExplain_option_elem(this); + if(listener.exitAltertblspcstmt) { + listener.exitAltertblspcstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExplain_option_elem) { - return visitor.visitExplain_option_elem(this); + if (visitor.visitAltertblspcstmt) { + return visitor.visitAltertblspcstmt(this); } else { return visitor.visitChildren(this); } @@ -96216,314 +71668,254 @@ export class Explain_option_elemContext extends antlr.ParserRuleContext { } -export class Explain_option_nameContext extends antlr.ParserRuleContext { +export class RenamestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public nonreservedword(): NonreservedwordContext | null { - return this.getRuleContext(0, NonreservedwordContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public analyze_keyword(): Analyze_keywordContext | null { - return this.getRuleContext(0, Analyze_keywordContext); + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RENAME, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_explain_option_name; + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExplain_option_name) { - listener.enterExplain_option_name(this); + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); } + + return this.getRuleContext(i, ColidContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExplain_option_name) { - listener.exitExplain_option_name(this); - } + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExplain_option_name) { - return visitor.visitExplain_option_name(this); - } else { - return visitor.visitChildren(this); - } + public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { + return this.getRuleContext(0, Aggregate_with_argtypesContext); } -} - - -export class Explain_option_argContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); } - public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { - return this.getRuleContext(0, Opt_boolean_or_stringContext); + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); } - public numericonly(): NumericonlyContext | null { - return this.getRuleContext(0, NumericonlyContext); + public KW_DATABASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_explain_option_arg; + public database_name(): Database_nameContext | null { + return this.getRuleContext(0, Database_nameContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExplain_option_arg) { - listener.enterExplain_option_arg(this); - } + public database_name_create(): Database_name_createContext | null { + return this.getRuleContext(0, Database_name_createContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExplain_option_arg) { - listener.exitExplain_option_arg(this); - } + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExplain_option_arg) { - return visitor.visitExplain_option_arg(this); - } else { - return visitor.visitChildren(this); - } + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); } -} - - -export class PreparestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); } - public KW_PREPARE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PREPARE, 0)!; + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_CONVERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); } - public preparablestmt(): PreparablestmtContext { - return this.getRuleContext(0, PreparablestmtContext)!; + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public prep_type_clause(): Prep_type_clauseContext | null { - return this.getRuleContext(0, Prep_type_clauseContext); + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_preparestmt; + public function_name_create(): Function_name_createContext | null { + return this.getRuleContext(0, Function_name_createContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPreparestmt) { - listener.enterPreparestmt(this); - } + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPreparestmt) { - listener.exitPreparestmt(this); - } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPreparestmt) { - return visitor.visitPreparestmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_CLASS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CLASS, 0); } -} - - -export class Prep_type_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_FAMILY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public type_list(): Type_listContext { - return this.getRuleContext(0, Type_listContext)!; + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public procedure_name_create(): Procedure_name_createContext | null { + return this.getRuleContext(0, Procedure_name_createContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_prep_type_clause; + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPrep_type_clause) { - listener.enterPrep_type_clause(this); - } + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPrep_type_clause) { - listener.exitPrep_type_clause(this); - } + public schema_name_create(): Schema_name_createContext | null { + return this.getRuleContext(0, Schema_name_createContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPrep_type_clause) { - return visitor.visitPrep_type_clause(this); - } else { - return visitor.visitChildren(this); - } + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } -} - - -export class PreparablestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); + } + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); + } + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); + } + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); + } + public view_name(): View_nameContext | null { + return this.getRuleContext(0, View_nameContext); } - public selectstmt(): SelectstmtContext | null { - return this.getRuleContext(0, SelectstmtContext); + public view_name_create(): View_name_createContext | null { + return this.getRuleContext(0, View_name_createContext); } - public insertstmt(): InsertstmtContext | null { - return this.getRuleContext(0, InsertstmtContext); + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); } - public updatestmt(): UpdatestmtContext | null { - return this.getRuleContext(0, UpdatestmtContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public deletestmt(): DeletestmtContext | null { - return this.getRuleContext(0, DeletestmtContext); + public relation_expr(): Relation_exprContext | null { + return this.getRuleContext(0, Relation_exprContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_preparablestmt; + public table_name_create(): Table_name_createContext | null { + return this.getRuleContext(0, Table_name_createContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPreparablestmt) { - listener.enterPreparablestmt(this); - } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPreparablestmt) { - listener.exitPreparablestmt(this); - } + public column_name(): Column_nameContext | null { + return this.getRuleContext(0, Column_nameContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPreparablestmt) { - return visitor.visitPreparablestmt(this); - } else { - return visitor.visitChildren(this); - } + public column_name_create(): Column_name_createContext | null { + return this.getRuleContext(0, Column_name_createContext); } -} - - -export class ExecutestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLUMN, 0); } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } - public execute_param_clause(): Execute_param_clauseContext | null { - return this.getRuleContext(0, Execute_param_clauseContext); + public KW_RULE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RULE, 0); } - public KW_CREATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATE, 0); + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public KW_POLICY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_POLICY, 0); } - public create_as_target(): Create_as_targetContext | null { - return this.getRuleContext(0, Create_as_targetContext); + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); } - public opttemp(): OpttempContext | null { - return this.getRuleContext(0, OpttempContext); + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); } - public opt_if_not_exists(): Opt_if_not_existsContext | null { - return this.getRuleContext(0, Opt_if_not_existsContext); + public KW_PUBLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); } - public opt_with_data(): Opt_with_dataContext | null { - return this.getRuleContext(0, Opt_with_dataContext); + public KW_SERVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERVER, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_executestmt; + public KW_SUBSCRIPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExecutestmt) { - listener.enterExecutestmt(this); - } + public KW_EVENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EVENT, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExecutestmt) { - listener.exitExecutestmt(this); - } + public KW_PROCEDURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExecutestmt) { - return visitor.visitExecutestmt(this); - } else { - return visitor.visitChildren(this); + public rolespec(): RolespecContext[]; + public rolespec(i: number): RolespecContext | null; + public rolespec(i?: number): RolespecContext[] | RolespecContext | null { + if (i === undefined) { + return this.getRuleContexts(RolespecContext); } - } -} - -export class Execute_param_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, RolespecContext); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_execute_param_clause; + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExecute_param_clause) { - listener.enterExecute_param_clause(this); - } + public tablespace_name_create(): Tablespace_name_createContext | null { + return this.getRuleContext(0, Tablespace_name_createContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExecute_param_clause) { - listener.exitExecute_param_clause(this); - } + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExecute_param_clause) { - return visitor.visitExecute_param_clause(this); - } else { - return visitor.visitChildren(this); - } + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } -} - - -export class DeallocatestmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_PARSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARSER, 0); } - public KW_DEALLOCATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DEALLOCATE, 0)!; + public KW_DICTIONARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public KW_CONFIGURATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); } - public KW_PREPARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PREPARE, 0); + public KW_ATTRIBUTE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ATTRIBUTE, 0); + } + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_deallocatestmt; + return PostgreSqlParser.RULE_renamestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDeallocatestmt) { - listener.enterDeallocatestmt(this); + if(listener.enterRenamestmt) { + listener.enterRenamestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDeallocatestmt) { - listener.exitDeallocatestmt(this); + if(listener.exitRenamestmt) { + listener.exitRenamestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDeallocatestmt) { - return visitor.visitDeallocatestmt(this); + if (visitor.visitRenamestmt) { + return visitor.visitRenamestmt(this); } else { return visitor.visitChildren(this); } @@ -96531,92 +71923,92 @@ export class DeallocatestmtContext extends antlr.ParserRuleContext { } -export class InsertstmtContext extends antlr.ParserRuleContext { +export class AlterobjectdependsstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_insertstmt; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public override copyFrom(ctx: InsertstmtContext): void { - super.copyFrom(ctx); + public KW_DEPENDS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DEPENDS, 0)!; } -} -export class InsertStatementContext extends InsertstmtContext { - public constructor(ctx: InsertstmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ON); + } else { + return this.getToken(PostgreSqlParser.KW_ON, i); + } } - public KW_INSERT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INSERT, 0)!; + public KW_EXTENSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0)!; } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INTO, 0)!; + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); + } + + return this.getRuleContext(i, ColidContext); } - public insert_target(): Insert_targetContext { - return this.getRuleContext(0, Insert_targetContext)!; + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public insert_rest(): Insert_restContext { - return this.getRuleContext(0, Insert_restContext)!; + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); } - public opt_with_clause(): Opt_with_clauseContext | null { - return this.getRuleContext(0, Opt_with_clauseContext); + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public opt_on_conflict(): Opt_on_conflictContext | null { - return this.getRuleContext(0, Opt_on_conflictContext); + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); } - public returning_clause(): Returning_clauseContext | null { - return this.getRuleContext(0, Returning_clauseContext); + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInsertStatement) { - listener.enterInsertStatement(this); - } + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInsertStatement) { - listener.exitInsertStatement(this); - } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInsertStatement) { - return visitor.visitInsertStatement(this); - } else { - return visitor.visitChildren(this); - } + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } -} - - -export class Insert_targetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); } - public table_name(): Table_nameContext { - return this.getRuleContext(0, Table_nameContext)!; + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public view_name(): View_nameContext | null { + return this.getRuleContext(0, View_nameContext); } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_INDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INDEX, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_insert_target; + return PostgreSqlParser.RULE_alterobjectdependsstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInsert_target) { - listener.enterInsert_target(this); + if(listener.enterAlterobjectdependsstmt) { + listener.enterAlterobjectdependsstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInsert_target) { - listener.exitInsert_target(this); + if(listener.exitAlterobjectdependsstmt) { + listener.exitAlterobjectdependsstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInsert_target) { - return visitor.visitInsert_target(this); + if (visitor.visitAlterobjectdependsstmt) { + return visitor.visitAlterobjectdependsstmt(this); } else { return visitor.visitChildren(this); } @@ -96624,215 +72016,146 @@ export class Insert_targetContext extends antlr.ParserRuleContext { } -export class Insert_restContext extends antlr.ParserRuleContext { +export class AlterobjectschemastmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public default_values_or_values(): Default_values_or_valuesContext | null { - return this.getRuleContext(0, Default_values_or_valuesContext); - } - public selectstmt(): SelectstmtContext | null { - return this.getRuleContext(0, SelectstmtContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public insert_column_list(): Insert_column_listContext | null { - return this.getRuleContext(0, Insert_column_listContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; } - public KW_OVERRIDING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OVERRIDING, 0); + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0)!; } - public override_kind(): Override_kindContext | null { - return this.getRuleContext(0, Override_kindContext); + public schema_name(): Schema_nameContext { + return this.getRuleContext(0, Schema_nameContext)!; } - public KW_VALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUE, 0); + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_insert_rest; + public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { + return this.getRuleContext(0, Aggregate_with_argtypesContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInsert_rest) { - listener.enterInsert_rest(this); - } + public KW_EXTENSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTENSION, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInsert_rest) { - listener.exitInsert_rest(this); - } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInsert_rest) { - return visitor.visitInsert_rest(this); - } else { - return visitor.visitChildren(this); - } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } -} - - -export class Override_kindContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public KW_SYSTEM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SYSTEM, 0); + public operator_with_argtypes(): Operator_with_argtypesContext | null { + return this.getRuleContext(0, Operator_with_argtypesContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_override_kind; + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOverride_kind) { - listener.enterOverride_kind(this); - } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOverride_kind) { - listener.exitOverride_kind(this); - } + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOverride_kind) { - return visitor.visitOverride_kind(this); - } else { - return visitor.visitChildren(this); - } + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); } -} - - -export class Insert_column_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); } - public insert_column_item(): Insert_column_itemContext[]; - public insert_column_item(i: number): Insert_column_itemContext | null; - public insert_column_item(i?: number): Insert_column_itemContext[] | Insert_column_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Insert_column_itemContext); - } - - return this.getRuleContext(i, Insert_column_itemContext); + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_insert_column_list; + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInsert_column_list) { - listener.enterInsert_column_list(this); - } + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInsert_column_list) { - listener.exitInsert_column_list(this); - } + public view_name(): View_nameContext | null { + return this.getRuleContext(0, View_nameContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInsert_column_list) { - return visitor.visitInsert_column_list(this); - } else { - return visitor.visitChildren(this); - } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } -} - - -export class Insert_column_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public relation_expr(): Relation_exprContext | null { + return this.getRuleContext(0, Relation_exprContext); } - public column_name(): Column_nameContext { - return this.getRuleContext(0, Column_nameContext)!; + public KW_CLASS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CLASS, 0); } - public opt_indirection(): Opt_indirectionContext { - return this.getRuleContext(0, Opt_indirectionContext)!; + public KW_FAMILY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_insert_column_item; + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInsert_column_item) { - listener.enterInsert_column_item(this); - } + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInsert_column_item) { - listener.exitInsert_column_item(this); - } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInsert_column_item) { - return visitor.visitInsert_column_item(this); - } else { - return visitor.visitChildren(this); - } + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); } -} - - -export class Opt_on_conflictContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } - public KW_ON(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ON, 0)!; + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); } - public KW_CONFLICT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CONFLICT, 0)!; + public KW_CONVERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); } - public KW_DO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DO, 0)!; + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public set_clause_list(): Set_clause_listContext | null { - return this.getRuleContext(0, Set_clause_listContext); + public KW_PARSER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARSER, 0); } - public KW_NOTHING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTHING, 0); + public KW_DICTIONARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); } - public opt_conf_expr(): Opt_conf_exprContext | null { - return this.getRuleContext(0, Opt_conf_exprContext); + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); + public KW_CONFIGURATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_on_conflict; + return PostgreSqlParser.RULE_alterobjectschemastmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_on_conflict) { - listener.enterOpt_on_conflict(this); + if(listener.enterAlterobjectschemastmt) { + listener.enterAlterobjectschemastmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_on_conflict) { - listener.exitOpt_on_conflict(this); + if(listener.exitAlterobjectschemastmt) { + listener.exitAlterobjectschemastmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_on_conflict) { - return visitor.visitOpt_on_conflict(this); + if (visitor.visitAlterobjectschemastmt) { + return visitor.visitAlterobjectschemastmt(this); } else { return visitor.visitChildren(this); } @@ -96840,47 +72163,41 @@ export class Opt_on_conflictContext extends antlr.ParserRuleContext { } -export class Opt_conf_exprContext extends antlr.ParserRuleContext { +export class AlteroperatorstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public index_params(): Index_paramsContext | null { - return this.getRuleContext(0, Index_paramsContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); + public KW_OPERATOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0)!; } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + public operator_with_argtypes(): Operator_with_argtypesContext { + return this.getRuleContext(0, Operator_with_argtypesContext)!; } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; } - public name(): NameContext | null { - return this.getRuleContext(0, NameContext); + public operator_def_list(): Operator_def_listContext { + return this.getRuleContext(0, Operator_def_listContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_conf_expr; + return PostgreSqlParser.RULE_alteroperatorstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_conf_expr) { - listener.enterOpt_conf_expr(this); + if(listener.enterAlteroperatorstmt) { + listener.enterAlteroperatorstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_conf_expr) { - listener.exitOpt_conf_expr(this); + if(listener.exitAlteroperatorstmt) { + listener.exitAlteroperatorstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_conf_expr) { - return visitor.visitOpt_conf_expr(this); + if (visitor.visitAlteroperatorstmt) { + return visitor.visitAlteroperatorstmt(this); } else { return visitor.visitChildren(this); } @@ -96888,32 +72205,50 @@ export class Opt_conf_exprContext extends antlr.ParserRuleContext { } -export class Returning_clauseContext extends antlr.ParserRuleContext { +export class Operator_def_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_RETURNING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_RETURNING, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public target_list(): Target_listContext { - return this.getRuleContext(0, Target_listContext)!; + public operator_def_elem(): Operator_def_elemContext[]; + public operator_def_elem(i: number): Operator_def_elemContext | null; + public operator_def_elem(i?: number): Operator_def_elemContext[] | Operator_def_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Operator_def_elemContext); + } + + return this.getRuleContext(i, Operator_def_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_returning_clause; + return PostgreSqlParser.RULE_operator_def_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReturning_clause) { - listener.enterReturning_clause(this); + if(listener.enterOperator_def_list) { + listener.enterOperator_def_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReturning_clause) { - listener.exitReturning_clause(this); + if(listener.exitOperator_def_list) { + listener.exitOperator_def_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReturning_clause) { - return visitor.visitReturning_clause(this); + if (visitor.visitOperator_def_list) { + return visitor.visitOperator_def_list(this); } else { return visitor.visitChildren(this); } @@ -96921,47 +72256,50 @@ export class Returning_clauseContext extends antlr.ParserRuleContext { } -export class DeletestmtContext extends antlr.ParserRuleContext { +export class Operator_def_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DELETE, 0)!; + public collabel(): CollabelContext { + return this.getRuleContext(0, CollabelContext)!; } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + public EQUAL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.EQUAL, 0)!; } - public relation_expr_opt_alias(): Relation_expr_opt_aliasContext { - return this.getRuleContext(0, Relation_expr_opt_aliasContext)!; + public KW_NONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NONE, 0); + } + public func_type(): Func_typeContext | null { + return this.getRuleContext(0, Func_typeContext); } - public opt_with_clause(): Opt_with_clauseContext | null { - return this.getRuleContext(0, Opt_with_clauseContext); + public reserved_keyword(): Reserved_keywordContext | null { + return this.getRuleContext(0, Reserved_keywordContext); } - public using_clause(): Using_clauseContext | null { - return this.getRuleContext(0, Using_clauseContext); + public qual_all_op(): Qual_all_opContext | null { + return this.getRuleContext(0, Qual_all_opContext); } - public where_or_current_clause(): Where_or_current_clauseContext | null { - return this.getRuleContext(0, Where_or_current_clauseContext); + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } - public returning_clause(): Returning_clauseContext | null { - return this.getRuleContext(0, Returning_clauseContext); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_deletestmt; + return PostgreSqlParser.RULE_operator_def_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDeletestmt) { - listener.enterDeletestmt(this); + if(listener.enterOperator_def_elem) { + listener.enterOperator_def_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDeletestmt) { - listener.exitDeletestmt(this); + if(listener.exitOperator_def_elem) { + listener.exitOperator_def_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDeletestmt) { - return visitor.visitDeletestmt(this); + if (visitor.visitOperator_def_elem) { + return visitor.visitOperator_def_elem(this); } else { return visitor.visitChildren(this); } @@ -96969,32 +72307,41 @@ export class DeletestmtContext extends antlr.ParserRuleContext { } -export class Using_clauseContext extends antlr.ParserRuleContext { +export class AltertypestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public from_list(): From_listContext { - return this.getRuleContext(0, From_listContext)!; + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TYPE, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; + } + public operator_def_list(): Operator_def_listContext { + return this.getRuleContext(0, Operator_def_listContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_using_clause; + return PostgreSqlParser.RULE_altertypestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterUsing_clause) { - listener.enterUsing_clause(this); + if(listener.enterAltertypestmt) { + listener.enterAltertypestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitUsing_clause) { - listener.exitUsing_clause(this); + if(listener.exitAltertypestmt) { + listener.exitAltertypestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitUsing_clause) { - return visitor.visitUsing_clause(this); + if (visitor.visitAltertypestmt) { + return visitor.visitAltertypestmt(this); } else { return visitor.visitChildren(this); } @@ -97002,185 +72349,164 @@ export class Using_clauseContext extends antlr.ParserRuleContext { } -export class LockstmtContext extends antlr.ParserRuleContext { +export class AlterownerstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_LOCK(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LOCK, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public relation_expr_list(): Relation_expr_listContext { - return this.getRuleContext(0, Relation_expr_listContext)!; + public KW_OPERATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); } - public opt_table(): Opt_tableContext | null { - return this.getRuleContext(0, Opt_tableContext); + public any_name(): Any_nameContext | null { + return this.getRuleContext(0, Any_nameContext); } - public opt_lock(): Opt_lockContext | null { - return this.getRuleContext(0, Opt_lockContext); + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); } - public opt_nowait(): Opt_nowaitContext | null { - return this.getRuleContext(0, Opt_nowaitContext); + public KW_OWNER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OWNER, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_lockstmt; + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterLockstmt) { - listener.enterLockstmt(this); - } + public rolespec(): RolespecContext { + return this.getRuleContext(0, RolespecContext)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitLockstmt) { - listener.exitLockstmt(this); - } + public KW_CLASS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CLASS, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitLockstmt) { - return visitor.visitLockstmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_FAMILY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FAMILY, 0); } -} - - -export class Opt_lockContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AGGREGATE, 0); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IN, 0)!; + public aggregate_with_argtypes(): Aggregate_with_argtypesContext | null { + return this.getRuleContext(0, Aggregate_with_argtypesContext); } - public lock_type(): Lock_typeContext { - return this.getRuleContext(0, Lock_typeContext)!; + public KW_DATABASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0); } - public KW_MODE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MODE, 0)!; + public database_name(): Database_nameContext | null { + return this.getRuleContext(0, Database_nameContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_lock; + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FUNCTION, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_lock) { - listener.enterOpt_lock(this); - } + public function_with_argtypes(): Function_with_argtypesContext | null { + return this.getRuleContext(0, Function_with_argtypesContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_lock) { - listener.exitOpt_lock(this); - } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LANGUAGE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_lock) { - return visitor.visitOpt_lock(this); - } else { - return visitor.visitChildren(this); - } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } -} - - -export class Lock_typeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_LARGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LARGE, 0); } - public KW_ACCESS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ACCESS, 0); + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OBJECT, 0); } - public KW_SHARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SHARE, 0); + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } - public KW_EXCLUSIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCLUSIVE, 0); + public operator_with_argtypes(): Operator_with_argtypesContext | null { + return this.getRuleContext(0, Operator_with_argtypesContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + public procedure_with_argtypes(): Procedure_with_argtypesContext | null { + return this.getRuleContext(0, Procedure_with_argtypesContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_lock_type; + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterLock_type) { - listener.enterLock_type(this); - } + public routine_with_argtypes(): Routine_with_argtypesContext | null { + return this.getRuleContext(0, Routine_with_argtypesContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitLock_type) { - listener.exitLock_type(this); - } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitLock_type) { - return visitor.visitLock_type(this); - } else { - return visitor.visitChildren(this); - } + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); } -} - - -export class Opt_nowaitContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public opttablespace(): OpttablespaceContext | null { + return this.getRuleContext(0, OpttablespaceContext); } - public KW_NOWAIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_NOWAIT, 0)!; + public KW_PROCEDURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_nowait; + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_nowait) { - listener.enterOpt_nowait(this); - } + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_nowait) { - listener.exitOpt_nowait(this); - } + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_nowait) { - return visitor.visitOpt_nowait(this); - } else { - return visitor.visitChildren(this); - } + public KW_CONVERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONVERSION, 0); } -} - - -export class Opt_nowait_or_skipContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_DOMAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0); } - public KW_NOWAIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOWAIT, 0); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public KW_SKIP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SKIP, 0); + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); } - public KW_LOCKED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCKED, 0); + public KW_DICTIONARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0); + } + public KW_CONFIGURATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0); + } + public KW_SERVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERVER, 0); + } + public KW_PUBLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + } + public KW_SUBSCRIPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); + } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DATA, 0); + } + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); + } + public KW_EVENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EVENT, 0); + } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_nowait_or_skip; + return PostgreSqlParser.RULE_alterownerstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_nowait_or_skip) { - listener.enterOpt_nowait_or_skip(this); + if(listener.enterAlterownerstmt) { + listener.enterAlterownerstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_nowait_or_skip) { - listener.exitOpt_nowait_or_skip(this); + if(listener.exitAlterownerstmt) { + listener.exitAlterownerstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_nowait_or_skip) { - return visitor.visitOpt_nowait_or_skip(this); + if (visitor.visitAlterownerstmt) { + return visitor.visitAlterownerstmt(this); } else { return visitor.visitChildren(this); } @@ -97188,50 +72514,53 @@ export class Opt_nowait_or_skipContext extends antlr.ParserRuleContext { } -export class UpdatestmtContext extends antlr.ParserRuleContext { +export class CreatepublicationstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public relation_expr_opt_alias(): Relation_expr_opt_aliasContext { - return this.getRuleContext(0, Relation_expr_opt_aliasContext)!; + public KW_PUBLICATION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public set_clause_list(): Set_clause_listContext { - return this.getRuleContext(0, Set_clause_listContext)!; + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public opt_with_clause(): Opt_with_clauseContext | null { - return this.getRuleContext(0, Opt_with_clauseContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public from_clause(): From_clauseContext | null { - return this.getRuleContext(0, From_clauseContext); + public relation_expr_list(): Relation_expr_listContext | null { + return this.getRuleContext(0, Relation_expr_listContext); } - public where_or_current_clause(): Where_or_current_clauseContext | null { - return this.getRuleContext(0, Where_or_current_clauseContext); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public returning_clause(): Returning_clauseContext | null { - return this.getRuleContext(0, Returning_clauseContext); + public KW_TABLES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLES, 0); + } + public opt_definition(): Opt_definitionContext | null { + return this.getRuleContext(0, Opt_definitionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_updatestmt; + return PostgreSqlParser.RULE_createpublicationstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterUpdatestmt) { - listener.enterUpdatestmt(this); + if(listener.enterCreatepublicationstmt) { + listener.enterCreatepublicationstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitUpdatestmt) { - listener.exitUpdatestmt(this); + if(listener.exitCreatepublicationstmt) { + listener.exitCreatepublicationstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitUpdatestmt) { - return visitor.visitUpdatestmt(this); + if (visitor.visitCreatepublicationstmt) { + return visitor.visitCreatepublicationstmt(this); } else { return visitor.visitChildren(this); } @@ -97239,18 +72568,57 @@ export class UpdatestmtContext extends antlr.ParserRuleContext { } -export class Set_clause_listContext extends antlr.ParserRuleContext { +export class AlterpublicationstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public set_clause(): Set_clauseContext[]; - public set_clause(i: number): Set_clauseContext | null; - public set_clause(i?: number): Set_clauseContext[] | Set_clauseContext | null { + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_PUBLICATION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0)!; + } + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { if (i === undefined) { - return this.getRuleContexts(Set_clauseContext); + return this.getRuleContexts(ColidContext); } - return this.getRuleContext(i, Set_clauseContext); + return this.getRuleContext(i, ColidContext); + } + public publication_relation_expr(): Publication_relation_exprContext[]; + public publication_relation_expr(i: number): Publication_relation_exprContext | null; + public publication_relation_expr(i?: number): Publication_relation_exprContext[] | Publication_relation_exprContext | null { + if (i === undefined) { + return this.getRuleContexts(Publication_relation_exprContext); + } + + return this.getRuleContext(i, Publication_relation_exprContext); + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); + } + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } + public definition(): DefinitionContext | null { + return this.getRuleContext(0, DefinitionContext); + } + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RENAME, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -97262,21 +72630,21 @@ export class Set_clause_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_clause_list; + return PostgreSqlParser.RULE_alterpublicationstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_clause_list) { - listener.enterSet_clause_list(this); + if(listener.enterAlterpublicationstmt) { + listener.enterAlterpublicationstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_clause_list) { - listener.exitSet_clause_list(this); + if(listener.exitAlterpublicationstmt) { + listener.exitAlterpublicationstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_clause_list) { - return visitor.visitSet_clause_list(this); + if (visitor.visitAlterpublicationstmt) { + return visitor.visitAlterpublicationstmt(this); } else { return visitor.visitChildren(this); } @@ -97284,62 +72652,65 @@ export class Set_clause_listContext extends antlr.ParserRuleContext { } -export class Set_clauseContext extends antlr.ParserRuleContext { +export class CreatesubscriptionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public set_target(): Set_targetContext | null { - return this.getRuleContext(0, Set_targetContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public EQUAL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.EQUAL, 0)!; + public KW_SUBSCRIPTION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0)!; } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public OPEN_PAREN(): antlr.TerminalNode[]; - public OPEN_PAREN(i: number): antlr.TerminalNode | null; - public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.OPEN_PAREN); - } else { - return this.getToken(PostgreSqlParser.OPEN_PAREN, i); - } + public KW_CONNECTION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CONNECTION, 0)!; + } + public sconst(): SconstContext { + return this.getRuleContext(0, SconstContext)!; } - public set_target_list(): Set_target_listContext | null { - return this.getRuleContext(0, Set_target_listContext); + public KW_PUBLICATION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode[]; - public CLOSE_PAREN(i: number): antlr.TerminalNode | null; - public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.CLOSE_PAREN); - } else { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); - } + public collabel(): CollabelContext[]; + public collabel(i: number): CollabelContext | null; + public collabel(i?: number): CollabelContext[] | CollabelContext | null { + if (i === undefined) { + return this.getRuleContexts(CollabelContext); + } + + return this.getRuleContext(i, CollabelContext); } - public select_clause(): Select_clauseContext | null { - return this.getRuleContext(0, Select_clauseContext); + public opt_definition(): Opt_definitionContext | null { + return this.getRuleContext(0, Opt_definitionContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_clause; + return PostgreSqlParser.RULE_createsubscriptionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_clause) { - listener.enterSet_clause(this); + if(listener.enterCreatesubscriptionstmt) { + listener.enterCreatesubscriptionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_clause) { - listener.exitSet_clause(this); + if(listener.exitCreatesubscriptionstmt) { + listener.exitCreatesubscriptionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_clause) { - return visitor.visitSet_clause(this); + if (visitor.visitCreatesubscriptionstmt) { + return visitor.visitCreatesubscriptionstmt(this); } else { return visitor.visitChildren(this); } @@ -97347,51 +72718,54 @@ export class Set_clauseContext extends antlr.ParserRuleContext { } -export class Set_targetContext extends antlr.ParserRuleContext { +export class AltersubscriptionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public column_name(): Column_nameContext { - return this.getRuleContext(0, Column_nameContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public opt_indirection(): Opt_indirectionContext { - return this.getRuleContext(0, Opt_indirectionContext)!; + public KW_SUBSCRIPTION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_target; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_target) { - listener.enterSet_target(this); - } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_target) { - listener.exitSet_target(this); - } + public definition(): DefinitionContext | null { + return this.getRuleContext(0, DefinitionContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_target) { - return visitor.visitSet_target(this); - } else { - return visitor.visitChildren(this); - } + public KW_CONNECTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONNECTION, 0); } -} - - -export class Set_target_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public set_target(): Set_targetContext[]; - public set_target(i: number): Set_targetContext | null; - public set_target(i?: number): Set_targetContext[] | Set_targetContext | null { + public KW_REFRESH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFRESH, 0); + } + public KW_PUBLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); + } + public opt_definition(): Opt_definitionContext | null { + return this.getRuleContext(0, Opt_definitionContext); + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); + } + public collabel(): CollabelContext[]; + public collabel(i: number): CollabelContext | null; + public collabel(i?: number): CollabelContext[] | CollabelContext | null { if (i === undefined) { - return this.getRuleContexts(Set_targetContext); + return this.getRuleContexts(CollabelContext); } - return this.getRuleContext(i, Set_targetContext); + return this.getRuleContext(i, CollabelContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -97402,22 +72776,49 @@ export class Set_target_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public KW_ENABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ENABLE, 0); + } + public KW_DISABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISABLE, 0); + } + public KW_SKIP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SKIP, 0); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public old_aggr_elem(): Old_aggr_elemContext | null { + return this.getRuleContext(0, Old_aggr_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public rolespec(): RolespecContext | null { + return this.getRuleContext(0, RolespecContext); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_target_list; + return PostgreSqlParser.RULE_altersubscriptionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_target_list) { - listener.enterSet_target_list(this); + if(listener.enterAltersubscriptionstmt) { + listener.enterAltersubscriptionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_target_list) { - listener.exitSet_target_list(this); + if(listener.exitAltersubscriptionstmt) { + listener.exitAltersubscriptionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_target_list) { - return visitor.visitSet_target_list(this); + if (visitor.visitAltersubscriptionstmt) { + return visitor.visitAltersubscriptionstmt(this); } else { return visitor.visitChildren(this); } @@ -97425,140 +72826,101 @@ export class Set_target_listContext extends antlr.ParserRuleContext { } -export class DeclarecursorstmtContext extends antlr.ParserRuleContext { +export class RulestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DECLARE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DECLARE, 0)!; - } - public cursor_name(): Cursor_nameContext { - return this.getRuleContext(0, Cursor_nameContext)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public cursor_options(): Cursor_optionsContext { - return this.getRuleContext(0, Cursor_optionsContext)!; + public KW_RULE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_RULE, 0)!; } - public KW_CURSOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CURSOR, 0)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public opt_hold(): Opt_holdContext { - return this.getRuleContext(0, Opt_holdContext)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public KW_ON(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public selectstmt(): SelectstmtContext { - return this.getRuleContext(0, SelectstmtContext)!; + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_declarecursorstmt; + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDeclarecursorstmt) { - listener.enterDeclarecursorstmt(this); - } + public KW_DO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DO, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDeclarecursorstmt) { - listener.exitDeclarecursorstmt(this); - } + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SELECT, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDeclarecursorstmt) { - return visitor.visitDeclarecursorstmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0); } -} - - -export class Cursor_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DELETE, 0); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INSERT, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cursor_name; + public KW_NOTHING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOTHING, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCursor_name) { - listener.enterCursor_name(this); + public ruleactionstmt(): RuleactionstmtContext[]; + public ruleactionstmt(i: number): RuleactionstmtContext | null; + public ruleactionstmt(i?: number): RuleactionstmtContext[] | RuleactionstmtContext | null { + if (i === undefined) { + return this.getRuleContexts(RuleactionstmtContext); } + + return this.getRuleContext(i, RuleactionstmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCursor_name) { - listener.exitCursor_name(this); - } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCursor_name) { - return visitor.visitCursor_name(this); - } else { - return visitor.visitChildren(this); - } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } -} - - -export class Cursor_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public opt_or_replace(): Opt_or_replaceContext | null { + return this.getRuleContext(0, Opt_or_replaceContext); } - public KW_NO(): antlr.TerminalNode[]; - public KW_NO(i: number): antlr.TerminalNode | null; - public KW_NO(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_NO); - } else { - return this.getToken(PostgreSqlParser.KW_NO, i); - } + public where_clause(): Where_clauseContext | null { + return this.getRuleContext(0, Where_clauseContext); } - public KW_SCROLL(): antlr.TerminalNode[]; - public KW_SCROLL(i: number): antlr.TerminalNode | null; - public KW_SCROLL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_SCROLL); - } else { - return this.getToken(PostgreSqlParser.KW_SCROLL, i); - } + public KW_INSTEAD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INSTEAD, 0); } - public KW_BINARY(): antlr.TerminalNode[]; - public KW_BINARY(i: number): antlr.TerminalNode | null; - public KW_BINARY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_BINARY); - } else { - return this.getToken(PostgreSqlParser.KW_BINARY, i); - } + public KW_ALSO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALSO, 0); } - public KW_INSENSITIVE(): antlr.TerminalNode[]; - public KW_INSENSITIVE(i: number): antlr.TerminalNode | null; - public KW_INSENSITIVE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public SEMI(): antlr.TerminalNode[]; + public SEMI(i: number): antlr.TerminalNode | null; + public SEMI(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_INSENSITIVE); + return this.getTokens(PostgreSqlParser.SEMI); } else { - return this.getToken(PostgreSqlParser.KW_INSENSITIVE, i); + return this.getToken(PostgreSqlParser.SEMI, i); } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cursor_options; + return PostgreSqlParser.RULE_rulestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCursor_options) { - listener.enterCursor_options(this); + if(listener.enterRulestmt) { + listener.enterRulestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCursor_options) { - listener.exitCursor_options(this); + if(listener.exitRulestmt) { + listener.exitRulestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCursor_options) { - return visitor.visitCursor_options(this); + if (visitor.visitRulestmt) { + return visitor.visitRulestmt(this); } else { return visitor.visitChildren(this); } @@ -97566,35 +72928,41 @@ export class Cursor_optionsContext extends antlr.ParserRuleContext { } -export class Opt_holdContext extends antlr.ParserRuleContext { +export class RuleactionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); + public selectstmt(): SelectstmtContext | null { + return this.getRuleContext(0, SelectstmtContext); } - public KW_HOLD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_HOLD, 0); + public insertstmt(): InsertstmtContext | null { + return this.getRuleContext(0, InsertstmtContext); } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); + public updatestmt(): UpdatestmtContext | null { + return this.getRuleContext(0, UpdatestmtContext); + } + public deletestmt(): DeletestmtContext | null { + return this.getRuleContext(0, DeletestmtContext); + } + public notifystmt(): NotifystmtContext | null { + return this.getRuleContext(0, NotifystmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_hold; + return PostgreSqlParser.RULE_ruleactionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_hold) { - listener.enterOpt_hold(this); + if(listener.enterRuleactionstmt) { + listener.enterRuleactionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_hold) { - listener.exitOpt_hold(this); + if(listener.exitRuleactionstmt) { + listener.exitRuleactionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_hold) { - return visitor.visitOpt_hold(this); + if (visitor.visitRuleactionstmt) { + return visitor.visitRuleactionstmt(this); } else { return visitor.visitChildren(this); } @@ -97602,41 +72970,35 @@ export class Opt_holdContext extends antlr.ParserRuleContext { } -export class SelectstmtContext extends antlr.ParserRuleContext { +export class NotifystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_selectstmt; - } - public override copyFrom(ctx: SelectstmtContext): void { - super.copyFrom(ctx); + public KW_NOTIFY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_NOTIFY, 0)!; } -} -export class SelectStatementContext extends SelectstmtContext { - public constructor(ctx: SelectstmtContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public select_no_parens(): Select_no_parensContext | null { - return this.getRuleContext(0, Select_no_parensContext); + public notify_payload(): Notify_payloadContext | null { + return this.getRuleContext(0, Notify_payloadContext); } - public select_with_parens(): Select_with_parensContext | null { - return this.getRuleContext(0, Select_with_parensContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_notifystmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelectStatement) { - listener.enterSelectStatement(this); + if(listener.enterNotifystmt) { + listener.enterNotifystmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelectStatement) { - listener.exitSelectStatement(this); + if(listener.exitNotifystmt) { + listener.exitNotifystmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelectStatement) { - return visitor.visitSelectStatement(this); + if (visitor.visitNotifystmt) { + return visitor.visitNotifystmt(this); } else { return visitor.visitChildren(this); } @@ -97644,38 +73006,32 @@ export class SelectStatementContext extends SelectstmtContext { } -export class Select_with_parensContext extends antlr.ParserRuleContext { +export class Notify_payloadContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public select_no_parens(): Select_no_parensContext | null { - return this.getRuleContext(0, Select_no_parensContext); - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public COMMA(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.COMMA, 0)!; } - public select_with_parens(): Select_with_parensContext | null { - return this.getRuleContext(0, Select_with_parensContext); + public sconst(): SconstContext { + return this.getRuleContext(0, SconstContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_with_parens; + return PostgreSqlParser.RULE_notify_payload; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_with_parens) { - listener.enterSelect_with_parens(this); + if(listener.enterNotify_payload) { + listener.enterNotify_payload(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_with_parens) { - listener.exitSelect_with_parens(this); + if(listener.exitNotify_payload) { + listener.exitNotify_payload(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_with_parens) { - return visitor.visitSelect_with_parens(this); + if (visitor.visitNotify_payload) { + return visitor.visitNotify_payload(this); } else { return visitor.visitChildren(this); } @@ -97683,47 +73039,32 @@ export class Select_with_parensContext extends antlr.ParserRuleContext { } -export class Select_no_parensContext extends antlr.ParserRuleContext { +export class ListenstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public select_clause(): Select_clauseContext { - return this.getRuleContext(0, Select_clauseContext)!; - } - public opt_sort_clause(): Opt_sort_clauseContext | null { - return this.getRuleContext(0, Opt_sort_clauseContext); - } - public for_locking_clause(): For_locking_clauseContext | null { - return this.getRuleContext(0, For_locking_clauseContext); - } - public select_limit(): Select_limitContext | null { - return this.getRuleContext(0, Select_limitContext); - } - public opt_select_limit(): Opt_select_limitContext | null { - return this.getRuleContext(0, Opt_select_limitContext); - } - public opt_for_locking_clause(): Opt_for_locking_clauseContext | null { - return this.getRuleContext(0, Opt_for_locking_clauseContext); + public KW_LISTEN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LISTEN, 0)!; } - public with_clause(): With_clauseContext | null { - return this.getRuleContext(0, With_clauseContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_no_parens; + return PostgreSqlParser.RULE_listenstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_no_parens) { - listener.enterSelect_no_parens(this); + if(listener.enterListenstmt) { + listener.enterListenstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_no_parens) { - listener.exitSelect_no_parens(this); + if(listener.exitListenstmt) { + listener.exitListenstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_no_parens) { - return visitor.visitSelect_no_parens(this); + if (visitor.visitListenstmt) { + return visitor.visitListenstmt(this); } else { return visitor.visitChildren(this); } @@ -97731,32 +73072,35 @@ export class Select_no_parensContext extends antlr.ParserRuleContext { } -export class Select_clauseContext extends antlr.ParserRuleContext { +export class UnlistenstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public simple_select(): Simple_selectContext | null { - return this.getRuleContext(0, Simple_selectContext); + public KW_UNLISTEN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_UNLISTEN, 0)!; } - public select_with_parens(): Select_with_parensContext | null { - return this.getRuleContext(0, Select_with_parensContext); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public STAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.STAR, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_clause; + return PostgreSqlParser.RULE_unlistenstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_clause) { - listener.enterSelect_clause(this); + if(listener.enterUnlistenstmt) { + listener.enterUnlistenstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_clause) { - listener.exitSelect_clause(this); + if(listener.exitUnlistenstmt) { + listener.exitUnlistenstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_clause) { - return visitor.visitSelect_clause(this); + if (visitor.visitUnlistenstmt) { + return visitor.visitUnlistenstmt(this); } else { return visitor.visitChildren(this); } @@ -97764,101 +73108,83 @@ export class Select_clauseContext extends antlr.ParserRuleContext { } -export class Simple_selectContext extends antlr.ParserRuleContext { +export class TransactionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SELECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SELECT, 0); + public KW_BEGIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BEGIN, 0); } - public values_clause(): Values_clauseContext | null { - return this.getRuleContext(0, Values_clauseContext); + public opt_transaction(): Opt_transactionContext | null { + return this.getRuleContext(0, Opt_transactionContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public transaction_mode_list(): Transaction_mode_listContext | null { + return this.getRuleContext(0, Transaction_mode_listContext); } - public relation_expr(): Relation_exprContext | null { - return this.getRuleContext(0, Relation_exprContext); + public KW_START(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_START, 0); } - public select_with_parens(): Select_with_parensContext[]; - public select_with_parens(i: number): Select_with_parensContext | null; - public select_with_parens(i?: number): Select_with_parensContext[] | Select_with_parensContext | null { - if (i === undefined) { - return this.getRuleContexts(Select_with_parensContext); - } - - return this.getRuleContext(i, Select_with_parensContext); + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); } - public set_operator_with_all_or_distinct(): Set_operator_with_all_or_distinctContext[]; - public set_operator_with_all_or_distinct(i: number): Set_operator_with_all_or_distinctContext | null; - public set_operator_with_all_or_distinct(i?: number): Set_operator_with_all_or_distinctContext[] | Set_operator_with_all_or_distinctContext | null { - if (i === undefined) { - return this.getRuleContexts(Set_operator_with_all_or_distinctContext); - } - - return this.getRuleContext(i, Set_operator_with_all_or_distinctContext); + public KW_SAVEPOINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SAVEPOINT, 0); } - public simple_select(): Simple_selectContext[]; - public simple_select(i: number): Simple_selectContext | null; - public simple_select(i?: number): Simple_selectContext[] | Simple_selectContext | null { - if (i === undefined) { - return this.getRuleContexts(Simple_selectContext); - } - - return this.getRuleContext(i, Simple_selectContext); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public into_clause(): Into_clauseContext[]; - public into_clause(i: number): Into_clauseContext | null; - public into_clause(i?: number): Into_clauseContext[] | Into_clauseContext | null { - if (i === undefined) { - return this.getRuleContexts(Into_clauseContext); - } - - return this.getRuleContext(i, Into_clauseContext); + public KW_RELEASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RELEASE, 0); } - public from_clause(): From_clauseContext | null { - return this.getRuleContext(0, From_clauseContext); + public KW_PREPARE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PREPARE, 0); } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public group_clause(): Group_clauseContext | null { - return this.getRuleContext(0, Group_clauseContext); + public KW_PREPARED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PREPARED, 0); } - public having_clause(): Having_clauseContext | null { - return this.getRuleContext(0, Having_clauseContext); + public KW_COMMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COMMIT, 0); } - public window_clause(): Window_clauseContext | null { - return this.getRuleContext(0, Window_clauseContext); + public KW_ROLLBACK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); } - public opt_all_clause(): Opt_all_clauseContext | null { - return this.getRuleContext(0, Opt_all_clauseContext); + public KW_ABORT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ABORT, 0); } - public opt_target_list(): Opt_target_listContext | null { - return this.getRuleContext(0, Opt_target_listContext); + public KW_END(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_END, 0); } - public distinct_clause(): Distinct_clauseContext | null { - return this.getRuleContext(0, Distinct_clauseContext); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AND, 0); } - public target_list(): Target_listContext | null { - return this.getRuleContext(0, Target_listContext); + public KW_CHAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHAIN, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_simple_select; + return PostgreSqlParser.RULE_transactionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSimple_select) { - listener.enterSimple_select(this); + if(listener.enterTransactionstmt) { + listener.enterTransactionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSimple_select) { - listener.exitSimple_select(this); + if(listener.exitTransactionstmt) { + listener.exitTransactionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSimple_select) { - return visitor.visitSimple_select(this); + if (visitor.visitTransactionstmt) { + return visitor.visitTransactionstmt(this); } else { return visitor.visitChildren(this); } @@ -97866,90 +73192,83 @@ export class Simple_selectContext extends antlr.ParserRuleContext { } -export class Set_operatorContext extends antlr.ParserRuleContext { +export class Opt_transactionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_operator; - } - public override copyFrom(ctx: Set_operatorContext): void { - super.copyFrom(ctx); + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WORK, 0); } -} -export class IntersectContext extends Set_operatorContext { - public constructor(ctx: Set_operatorContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); } - public KW_INTERSECT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INTERSECT, 0)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_opt_transaction; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIntersect) { - listener.enterIntersect(this); + if(listener.enterOpt_transaction) { + listener.enterOpt_transaction(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIntersect) { - listener.exitIntersect(this); + if(listener.exitOpt_transaction) { + listener.exitOpt_transaction(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIntersect) { - return visitor.visitIntersect(this); + if (visitor.visitOpt_transaction) { + return visitor.visitOpt_transaction(this); } else { return visitor.visitChildren(this); } } -} -export class ExceptContext extends Set_operatorContext { - public constructor(ctx: Set_operatorContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); +} + + +export class Transaction_mode_itemContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_ISOLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ISOLATION, 0); + } + public KW_LEVEL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEVEL, 0); } - public KW_EXCEPT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXCEPT, 0)!; + public iso_level(): Iso_levelContext | null { + return this.getRuleContext(0, Iso_levelContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExcept) { - listener.enterExcept(this); - } + public KW_READ(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_READ, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExcept) { - listener.exitExcept(this); - } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExcept) { - return visitor.visitExcept(this); - } else { - return visitor.visitChildren(this); - } + public KW_WRITE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRITE, 0); } -} -export class UnionContext extends Set_operatorContext { - public constructor(ctx: Set_operatorContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_DEFERRABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public KW_UNION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UNION, 0)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_transaction_mode_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterUnion) { - listener.enterUnion(this); + if(listener.enterTransaction_mode_item) { + listener.enterTransaction_mode_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitUnion) { - listener.exitUnion(this); + if(listener.exitTransaction_mode_item) { + listener.exitTransaction_mode_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitUnion) { - return visitor.visitUnion(this); + if (visitor.visitTransaction_mode_item) { + return visitor.visitTransaction_mode_item(this); } else { return visitor.visitChildren(this); } @@ -97957,32 +73276,44 @@ export class UnionContext extends Set_operatorContext { } -export class Set_operator_with_all_or_distinctContext extends antlr.ParserRuleContext { +export class Transaction_mode_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public set_operator(): Set_operatorContext { - return this.getRuleContext(0, Set_operatorContext)!; + public transaction_mode_item(): Transaction_mode_itemContext[]; + public transaction_mode_item(i: number): Transaction_mode_itemContext | null; + public transaction_mode_item(i?: number): Transaction_mode_itemContext[] | Transaction_mode_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Transaction_mode_itemContext); + } + + return this.getRuleContext(i, Transaction_mode_itemContext); } - public all_or_distinct(): All_or_distinctContext | null { - return this.getRuleContext(0, All_or_distinctContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_set_operator_with_all_or_distinct; + return PostgreSqlParser.RULE_transaction_mode_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSet_operator_with_all_or_distinct) { - listener.enterSet_operator_with_all_or_distinct(this); + if(listener.enterTransaction_mode_list) { + listener.enterTransaction_mode_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSet_operator_with_all_or_distinct) { - listener.exitSet_operator_with_all_or_distinct(this); + if(listener.exitTransaction_mode_list) { + listener.exitTransaction_mode_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSet_operator_with_all_or_distinct) { - return visitor.visitSet_operator_with_all_or_distinct(this); + if (visitor.visitTransaction_mode_list) { + return visitor.visitTransaction_mode_list(this); } else { return visitor.visitChildren(this); } @@ -97990,35 +73321,86 @@ export class Set_operator_with_all_or_distinctContext extends antlr.ParserRuleCo } -export class With_clauseContext extends antlr.ParserRuleContext { +export class ViewstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_viewstmt; + } + public override copyFrom(ctx: ViewstmtContext): void { + super.copyFrom(ctx); + } +} +export class CreateViewContext extends ViewstmtContext { + public constructor(ctx: ViewstmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; + } + public selectstmt(): SelectstmtContext { + return this.getRuleContext(0, SelectstmtContext)!; + } + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public cte_list(): Cte_listContext { - return this.getRuleContext(0, Cte_listContext)!; + public view_name_create(): View_name_createContext | null { + return this.getRuleContext(0, View_name_createContext); } public KW_RECURSIVE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_RECURSIVE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_with_clause; + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLACE, 0); + } + public opttemp(): OpttempContext | null { + return this.getRuleContext(0, OpttempContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public KW_CHECK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHECK, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPTION, 0); + } + public opt_column_list_create(): Opt_column_list_createContext | null { + return this.getRuleContext(0, Opt_column_list_createContext); + } + public opt_reloptions(): Opt_reloptionsContext | null { + return this.getRuleContext(0, Opt_reloptionsContext); + } + public KW_CASCADED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CASCADED, 0); + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCAL, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWith_clause) { - listener.enterWith_clause(this); + if(listener.enterCreateView) { + listener.enterCreateView(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWith_clause) { - listener.exitWith_clause(this); + if(listener.exitCreateView) { + listener.exitCreateView(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWith_clause) { - return visitor.visitWith_clause(this); + if (visitor.visitCreateView) { + return visitor.visitCreateView(this); } else { return visitor.visitChildren(this); } @@ -98026,44 +73408,32 @@ export class With_clauseContext extends antlr.ParserRuleContext { } -export class Cte_listContext extends antlr.ParserRuleContext { +export class LoadstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public common_table_expr(): Common_table_exprContext[]; - public common_table_expr(i: number): Common_table_exprContext | null; - public common_table_expr(i?: number): Common_table_exprContext[] | Common_table_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(Common_table_exprContext); - } - - return this.getRuleContext(i, Common_table_exprContext); + public KW_LOAD(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LOAD, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public sconst(): SconstContext { + return this.getRuleContext(0, SconstContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cte_list; + return PostgreSqlParser.RULE_loadstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCte_list) { - listener.enterCte_list(this); + if(listener.enterLoadstmt) { + listener.enterLoadstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCte_list) { - listener.exitCte_list(this); + if(listener.exitLoadstmt) { + listener.exitLoadstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCte_list) { - return visitor.visitCte_list(this); + if (visitor.visitLoadstmt) { + return visitor.visitLoadstmt(this); } else { return visitor.visitChildren(this); } @@ -98071,53 +73441,56 @@ export class Cte_listContext extends antlr.ParserRuleContext { } -export class Common_table_exprContext extends antlr.ParserRuleContext { +export class CreatedbstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public name(): NameContext { - return this.getRuleContext(0, NameContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_createdbstmt; } - public preparablestmt(): PreparablestmtContext { - return this.getRuleContext(0, PreparablestmtContext)!; + public override copyFrom(ctx: CreatedbstmtContext): void { + super.copyFrom(ctx); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; +} +export class CreateDatabaseContext extends CreatedbstmtContext { + public constructor(ctx: CreatedbstmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public opt_name_list(): Opt_name_listContext | null { - return this.getRuleContext(0, Opt_name_listContext); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public opt_materialized(): Opt_materializedContext | null { - return this.getRuleContext(0, Opt_materializedContext); + public KW_DATABASE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; } - public search_cluase(): Search_cluaseContext | null { - return this.getRuleContext(0, Search_cluaseContext); + public database_name_create(): Database_name_createContext { + return this.getRuleContext(0, Database_name_createContext)!; } - public cycle_cluase(): Cycle_cluaseContext | null { - return this.getRuleContext(0, Cycle_cluaseContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_common_table_expr; + public createdb_opt_item(): Createdb_opt_itemContext[]; + public createdb_opt_item(i: number): Createdb_opt_itemContext | null; + public createdb_opt_item(i?: number): Createdb_opt_itemContext[] | Createdb_opt_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Createdb_opt_itemContext); + } + + return this.getRuleContext(i, Createdb_opt_itemContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCommon_table_expr) { - listener.enterCommon_table_expr(this); + if(listener.enterCreateDatabase) { + listener.enterCreateDatabase(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCommon_table_expr) { - listener.exitCommon_table_expr(this); + if(listener.exitCreateDatabase) { + listener.exitCreateDatabase(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCommon_table_expr) { - return visitor.visitCommon_table_expr(this); + if (visitor.visitCreateDatabase) { + return visitor.visitCreateDatabase(this); } else { return visitor.visitChildren(this); } @@ -98125,50 +73498,62 @@ export class Common_table_exprContext extends antlr.ParserRuleContext { } -export class Search_cluaseContext extends antlr.ParserRuleContext { +export class Createdb_opt_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SEARCH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0)!; + public KW_CONNECTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONNECTION, 0); } - public KW_FIRST(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FIRST, 0)!; + public KW_LIMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LIMIT, 0); } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; + public KW_ENCODING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ENCODING, 0); } - public column_list(): Column_listContext { - return this.getRuleContext(0, Column_listContext)!; + public KW_LOCATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCATION, 0); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OWNER, 0); } - public column_name(): Column_nameContext { - return this.getRuleContext(0, Column_nameContext)!; + public KW_TABLESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); } - public KW_BREADTH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BREADTH, 0); + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); } - public KW_DEPTH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEPTH, 0); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public signediconst(): SignediconstContext | null { + return this.getRuleContext(0, SignediconstContext); + } + public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { + return this.getRuleContext(0, Opt_boolean_or_stringContext); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_search_cluase; + return PostgreSqlParser.RULE_createdb_opt_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSearch_cluase) { - listener.enterSearch_cluase(this); + if(listener.enterCreatedb_opt_item) { + listener.enterCreatedb_opt_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSearch_cluase) { - listener.exitSearch_cluase(this); + if(listener.exitCreatedb_opt_item) { + listener.exitCreatedb_opt_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSearch_cluase) { - return visitor.visitSearch_cluase(this); + if (visitor.visitCreatedb_opt_item) { + return visitor.visitCreatedb_opt_item(this); } else { return visitor.visitChildren(this); } @@ -98176,62 +73561,56 @@ export class Search_cluaseContext extends antlr.ParserRuleContext { } -export class Cycle_cluaseContext extends antlr.ParserRuleContext { +export class AlterdatabasestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CYCLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CYCLE, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public column_list(): Column_listContext { - return this.getRuleContext(0, Column_listContext)!; + public KW_DATABASE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SET, 0)!; + public database_name(): Database_nameContext { + return this.getRuleContext(0, Database_nameContext)!; } - public column_name(): Column_nameContext[]; - public column_name(i: number): Column_nameContext | null; - public column_name(i?: number): Column_nameContext[] | Column_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Column_nameContext); - } - - return this.getRuleContext(i, Column_nameContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public KW_USING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_USING, 0)!; + public KW_TABLESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public tablespace_name_create(): Tablespace_name_createContext | null { + return this.getRuleContext(0, Tablespace_name_createContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { + public createdb_opt_item(): Createdb_opt_itemContext[]; + public createdb_opt_item(i: number): Createdb_opt_itemContext | null; + public createdb_opt_item(i?: number): Createdb_opt_itemContext[] | Createdb_opt_itemContext | null { if (i === undefined) { - return this.getRuleContexts(NameContext); + return this.getRuleContexts(Createdb_opt_itemContext); } - return this.getRuleContext(i, NameContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + return this.getRuleContext(i, Createdb_opt_itemContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cycle_cluase; + return PostgreSqlParser.RULE_alterdatabasestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCycle_cluase) { - listener.enterCycle_cluase(this); + if(listener.enterAlterdatabasestmt) { + listener.enterAlterdatabasestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCycle_cluase) { - listener.exitCycle_cluase(this); + if(listener.exitAlterdatabasestmt) { + listener.exitAlterdatabasestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCycle_cluase) { - return visitor.visitCycle_cluase(this); + if (visitor.visitAlterdatabasestmt) { + return visitor.visitAlterdatabasestmt(this); } else { return visitor.visitChildren(this); } @@ -98239,32 +73618,38 @@ export class Cycle_cluaseContext extends antlr.ParserRuleContext { } -export class Opt_materializedContext extends antlr.ParserRuleContext { +export class AlterdatabasesetstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public KW_DATABASE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DATABASE, 0)!; + } + public database_name(): Database_nameContext { + return this.getRuleContext(0, Database_nameContext)!; + } + public setresetclause(): SetresetclauseContext | null { + return this.getRuleContext(0, SetresetclauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_materialized; + return PostgreSqlParser.RULE_alterdatabasesetstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_materialized) { - listener.enterOpt_materialized(this); + if(listener.enterAlterdatabasesetstmt) { + listener.enterAlterdatabasesetstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_materialized) { - listener.exitOpt_materialized(this); + if(listener.exitAlterdatabasesetstmt) { + listener.exitAlterdatabasesetstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_materialized) { - return visitor.visitOpt_materialized(this); + if (visitor.visitAlterdatabasesetstmt) { + return visitor.visitAlterdatabasesetstmt(this); } else { return visitor.visitChildren(this); } @@ -98272,29 +73657,41 @@ export class Opt_materializedContext extends antlr.ParserRuleContext { } -export class Opt_with_clauseContext extends antlr.ParserRuleContext { +export class AltercollationstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public with_clause(): With_clauseContext { - return this.getRuleContext(0, With_clauseContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; + } + public KW_COLLATION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } + public KW_REFRESH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_REFRESH, 0)!; + } + public KW_VERSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VERSION, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_with_clause; + return PostgreSqlParser.RULE_altercollationstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_with_clause) { - listener.enterOpt_with_clause(this); + if(listener.enterAltercollationstmt) { + listener.enterAltercollationstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_with_clause) { - listener.exitOpt_with_clause(this); + if(listener.exitAltercollationstmt) { + listener.exitAltercollationstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_with_clause) { - return visitor.visitOpt_with_clause(this); + if (visitor.visitAltercollationstmt) { + return visitor.visitAltercollationstmt(this); } else { return visitor.visitChildren(this); } @@ -98302,38 +73699,41 @@ export class Opt_with_clauseContext extends antlr.ParserRuleContext { } -export class Into_clauseContext extends antlr.ParserRuleContext { +export class AltersystemstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INTO, 0)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public opt_strict(): Opt_strictContext | null { - return this.getRuleContext(0, Opt_strictContext); + public KW_SYSTEM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SYSTEM, 0)!; } - public opttempTableName(): OpttempTableNameContext | null { - return this.getRuleContext(0, OpttempTableNameContext); + public generic_set(): Generic_setContext { + return this.getRuleContext(0, Generic_setContext)!; + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public into_target(): Into_targetContext | null { - return this.getRuleContext(0, Into_targetContext); + public KW_RESET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESET, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_into_clause; + return PostgreSqlParser.RULE_altersystemstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInto_clause) { - listener.enterInto_clause(this); + if(listener.enterAltersystemstmt) { + listener.enterAltersystemstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInto_clause) { - listener.exitInto_clause(this); + if(listener.exitAltersystemstmt) { + listener.exitAltersystemstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInto_clause) { - return visitor.visitInto_clause(this); + if (visitor.visitAltersystemstmt) { + return visitor.visitAltersystemstmt(this); } else { return visitor.visitChildren(this); } @@ -98341,29 +73741,50 @@ export class Into_clauseContext extends antlr.ParserRuleContext { } -export class Opt_strictContext extends antlr.ParserRuleContext { +export class CreatedomainstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_STRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STRICT, 0); + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; + } + public KW_DOMAIN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } + public typename(): TypenameContext { + return this.getRuleContext(0, TypenameContext)!; + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public colconstraint(): ColconstraintContext[]; + public colconstraint(i: number): ColconstraintContext | null; + public colconstraint(i?: number): ColconstraintContext[] | ColconstraintContext | null { + if (i === undefined) { + return this.getRuleContexts(ColconstraintContext); + } + + return this.getRuleContext(i, ColconstraintContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_strict; + return PostgreSqlParser.RULE_createdomainstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_strict) { - listener.enterOpt_strict(this); + if(listener.enterCreatedomainstmt) { + listener.enterCreatedomainstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_strict) { - listener.exitOpt_strict(this); + if(listener.exitCreatedomainstmt) { + listener.exitCreatedomainstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_strict) { - return visitor.visitOpt_strict(this); + if (visitor.visitCreatedomainstmt) { + return visitor.visitCreatedomainstmt(this); } else { return visitor.visitChildren(this); } @@ -98371,80 +73792,71 @@ export class Opt_strictContext extends antlr.ParserRuleContext { } -export class OpttempTableNameContext extends antlr.ParserRuleContext { +export class AlterdomainstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public table_name_create(): Table_name_createContext { - return this.getRuleContext(0, Table_name_createContext)!; + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public KW_TEMPORARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); + public KW_DOMAIN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DOMAIN, 0)!; } - public KW_TEMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMP, 0); + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } - public opt_table(): Opt_tableContext | null { - return this.getRuleContext(0, Opt_tableContext); + public alter_column_default(): Alter_column_defaultContext | null { + return this.getRuleContext(0, Alter_column_defaultContext); } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCAL, 0); + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public KW_GLOBAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GLOBAL, 0); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public KW_UNLOGGED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public constraintelem(): ConstraintelemContext | null { + return this.getRuleContext(0, ConstraintelemContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttempTableName; + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttempTableName) { - listener.enterOpttempTableName(this); - } + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttempTableName) { - listener.exitOpttempTableName(this); - } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttempTableName) { - return visitor.visitOpttempTableName(this); - } else { - return visitor.visitChildren(this); - } + public KW_VALIDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALIDATE, 0); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } -} - - -export class Opt_tableContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLE, 0)!; + public opt_drop_behavior(): Opt_drop_behaviorContext | null { + return this.getRuleContext(0, Opt_drop_behaviorContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_table; + return PostgreSqlParser.RULE_alterdomainstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_table) { - listener.enterOpt_table(this); + if(listener.enterAlterdomainstmt) { + listener.enterAlterdomainstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_table) { - listener.exitOpt_table(this); + if(listener.exitAlterdomainstmt) { + listener.exitAlterdomainstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_table) { - return visitor.visitOpt_table(this); + if (visitor.visitAlterdomainstmt) { + return visitor.visitAlterdomainstmt(this); } else { return visitor.visitChildren(this); } @@ -98452,32 +73864,44 @@ export class Opt_tableContext extends antlr.ParserRuleContext { } -export class All_or_distinctContext extends antlr.ParserRuleContext { +export class AltertsdictionarystmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ALTER, 0)!; } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); + public KW_TEXT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TEXT, 0)!; + } + public KW_SEARCH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0)!; + } + public KW_DICTIONARY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DICTIONARY, 0)!; + } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } + public definition(): DefinitionContext { + return this.getRuleContext(0, DefinitionContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_all_or_distinct; + return PostgreSqlParser.RULE_altertsdictionarystmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAll_or_distinct) { - listener.enterAll_or_distinct(this); + if(listener.enterAltertsdictionarystmt) { + listener.enterAltertsdictionarystmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAll_or_distinct) { - listener.exitAll_or_distinct(this); + if(listener.exitAltertsdictionarystmt) { + listener.exitAltertsdictionarystmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAll_or_distinct) { - return visitor.visitAll_or_distinct(this); + if (visitor.visitAltertsdictionarystmt) { + return visitor.visitAltertsdictionarystmt(this); } else { return visitor.visitChildren(this); } @@ -98485,71 +73909,80 @@ export class All_or_distinctContext extends antlr.ParserRuleContext { } -export class Distinct_clauseContext extends antlr.ParserRuleContext { +export class AltertsconfigurationstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DISTINCT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DISTINCT, 0)!; + public KW_ALTER(): antlr.TerminalNode[]; + public KW_ALTER(i: number): antlr.TerminalNode | null; + public KW_ALTER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ALTER); + } else { + return this.getToken(PostgreSqlParser.KW_ALTER, i); + } } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + public KW_TEXT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TEXT, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_SEARCH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0)!; } - public expr_list(): Expr_listContext | null { - return this.getRuleContext(0, Expr_listContext); + public KW_CONFIGURATION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CONFIGURATION, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public any_name(): Any_nameContext[]; + public any_name(i: number): Any_nameContext | null; + public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(Any_nameContext); + } + + return this.getRuleContext(i, Any_nameContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_distinct_clause; + public KW_MAPPING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_MAPPING, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDistinct_clause) { - listener.enterDistinct_clause(this); - } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDistinct_clause) { - listener.exitDistinct_clause(this); - } + public name_list(): Name_listContext | null { + return this.getRuleContext(0, Name_listContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDistinct_clause) { - return visitor.visitDistinct_clause(this); - } else { - return visitor.visitChildren(this); - } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } -} - - -export class Opt_all_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public any_name_list(): Any_name_listContext | null { + return this.getRuleContext(0, Any_name_listContext); + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ADD, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLACE, 0); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DROP, 0); } - public KW_ALL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ALL, 0)!; + public opt_if_exists(): Opt_if_existsContext | null { + return this.getRuleContext(0, Opt_if_existsContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_all_clause; + return PostgreSqlParser.RULE_altertsconfigurationstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_all_clause) { - listener.enterOpt_all_clause(this); + if(listener.enterAltertsconfigurationstmt) { + listener.enterAltertsconfigurationstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_all_clause) { - listener.exitOpt_all_clause(this); + if(listener.exitAltertsconfigurationstmt) { + listener.exitAltertsconfigurationstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_all_clause) { - return visitor.visitOpt_all_clause(this); + if (visitor.visitAltertsconfigurationstmt) { + return visitor.visitAltertsconfigurationstmt(this); } else { return visitor.visitChildren(this); } @@ -98557,65 +73990,62 @@ export class Opt_all_clauseContext extends antlr.ParserRuleContext { } -export class Opt_sort_clauseContext extends antlr.ParserRuleContext { +export class CreateconversionstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sort_clause(): Sort_clauseContext { - return this.getRuleContext(0, Sort_clauseContext)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CREATE, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_sort_clause; + public KW_CONVERSION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CONVERSION, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_sort_clause) { - listener.enterOpt_sort_clause(this); + public any_name(): Any_nameContext[]; + public any_name(i: number): Any_nameContext | null; + public any_name(i?: number): Any_nameContext[] | Any_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(Any_nameContext); } + + return this.getRuleContext(i, Any_nameContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_sort_clause) { - listener.exitOpt_sort_clause(this); - } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOR, 0)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_sort_clause) { - return visitor.visitOpt_sort_clause(this); - } else { - return visitor.visitChildren(this); + public sconst(): SconstContext[]; + public sconst(i: number): SconstContext | null; + public sconst(i?: number): SconstContext[] | SconstContext | null { + if (i === undefined) { + return this.getRuleContexts(SconstContext); } - } -} - -export class Sort_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, SconstContext); } - public KW_ORDER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ORDER, 0)!; + public KW_TO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TO, 0)!; } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; } - public sortby_list(): Sortby_listContext { - return this.getRuleContext(0, Sortby_listContext)!; + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_sort_clause; + return PostgreSqlParser.RULE_createconversionstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSort_clause) { - listener.enterSort_clause(this); + if(listener.enterCreateconversionstmt) { + listener.enterCreateconversionstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSort_clause) { - listener.exitSort_clause(this); + if(listener.exitCreateconversionstmt) { + listener.exitCreateconversionstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSort_clause) { - return visitor.visitSort_clause(this); + if (visitor.visitCreateconversionstmt) { + return visitor.visitCreateconversionstmt(this); } else { return visitor.visitChildren(this); } @@ -98623,18 +74053,33 @@ export class Sort_clauseContext extends antlr.ParserRuleContext { } -export class Sortby_listContext extends antlr.ParserRuleContext { +export class ClusterstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public sortby(): SortbyContext[]; - public sortby(i: number): SortbyContext | null; - public sortby(i?: number): SortbyContext[] | SortbyContext | null { + public KW_CLUSTER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CLUSTER, 0)!; + } + public opt_verbose(): Opt_verboseContext[]; + public opt_verbose(i: number): Opt_verboseContext | null; + public opt_verbose(i?: number): Opt_verboseContext[] | Opt_verboseContext | null { if (i === undefined) { - return this.getRuleContexts(SortbyContext); + return this.getRuleContexts(Opt_verboseContext); } - return this.getRuleContext(i, SortbyContext); + return this.getRuleContext(i, Opt_verboseContext); + } + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); + } + public table_access_method_clause(): Table_access_method_clauseContext | null { + return this.getRuleContext(0, Table_access_method_clauseContext); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -98646,21 +74091,21 @@ export class Sortby_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_sortby_list; + return PostgreSqlParser.RULE_clusterstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSortby_list) { - listener.enterSortby_list(this); + if(listener.enterClusterstmt) { + listener.enterClusterstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSortby_list) { - listener.exitSortby_list(this); + if(listener.exitClusterstmt) { + listener.exitClusterstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSortby_list) { - return visitor.visitSortby_list(this); + if (visitor.visitClusterstmt) { + return visitor.visitClusterstmt(this); } else { return visitor.visitChildren(this); } @@ -98668,41 +74113,47 @@ export class Sortby_listContext extends antlr.ParserRuleContext { } -export class SortbyContext extends antlr.ParserRuleContext { +export class VacuumstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public column_expr_noparen(): Column_expr_noparenContext { - return this.getRuleContext(0, Column_expr_noparenContext)!; + public KW_VACUUM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VACUUM, 0)!; } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); + public vacuum_relation_list(): Vacuum_relation_listContext | null { + return this.getRuleContext(0, Vacuum_relation_listContext); } - public qual_all_op(): Qual_all_opContext | null { - return this.getRuleContext(0, Qual_all_opContext); + public explain_option_list(): Explain_option_listContext | null { + return this.getRuleContext(0, Explain_option_listContext); } - public opt_asc_desc(): Opt_asc_descContext | null { - return this.getRuleContext(0, Opt_asc_descContext); + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FULL, 0); + } + public KW_FREEZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FREEZE, 0); + } + public opt_verbose(): Opt_verboseContext | null { + return this.getRuleContext(0, Opt_verboseContext); } - public opt_nulls_order(): Opt_nulls_orderContext | null { - return this.getRuleContext(0, Opt_nulls_orderContext); + public analyze_keyword(): Analyze_keywordContext | null { + return this.getRuleContext(0, Analyze_keywordContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_sortby; + return PostgreSqlParser.RULE_vacuumstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSortby) { - listener.enterSortby(this); + if(listener.enterVacuumstmt) { + listener.enterVacuumstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSortby) { - listener.exitSortby(this); + if(listener.exitVacuumstmt) { + listener.exitVacuumstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSortby) { - return visitor.visitSortby(this); + if (visitor.visitVacuumstmt) { + return visitor.visitVacuumstmt(this); } else { return visitor.visitChildren(this); } @@ -98710,35 +74161,59 @@ export class SortbyContext extends antlr.ParserRuleContext { } -export class Select_limitContext extends antlr.ParserRuleContext { +export class AnalyzestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public limit_clause(): Limit_clauseContext | null { - return this.getRuleContext(0, Limit_clauseContext); + public analyze_keyword(): Analyze_keywordContext { + return this.getRuleContext(0, Analyze_keywordContext)!; } - public offset_clause(): Offset_clauseContext | null { - return this.getRuleContext(0, Offset_clauseContext); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public fetch_clause(): Fetch_clauseContext | null { - return this.getRuleContext(0, Fetch_clauseContext); + public analyze_option_elem(): Analyze_option_elemContext[]; + public analyze_option_elem(i: number): Analyze_option_elemContext | null; + public analyze_option_elem(i?: number): Analyze_option_elemContext[] | Analyze_option_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Analyze_option_elemContext); + } + + return this.getRuleContext(i, Analyze_option_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public vacuum_relation_list(): Vacuum_relation_listContext | null { + return this.getRuleContext(0, Vacuum_relation_listContext); + } + public opt_verbose(): Opt_verboseContext | null { + return this.getRuleContext(0, Opt_verboseContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_limit; + return PostgreSqlParser.RULE_analyzestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_limit) { - listener.enterSelect_limit(this); + if(listener.enterAnalyzestmt) { + listener.enterAnalyzestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_limit) { - listener.exitSelect_limit(this); + if(listener.exitAnalyzestmt) { + listener.exitAnalyzestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_limit) { - return visitor.visitSelect_limit(this); + if (visitor.visitAnalyzestmt) { + return visitor.visitAnalyzestmt(this); } else { return visitor.visitChildren(this); } @@ -98746,29 +74221,32 @@ export class Select_limitContext extends antlr.ParserRuleContext { } -export class Opt_select_limitContext extends antlr.ParserRuleContext { +export class Analyze_keywordContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public select_limit(): Select_limitContext { - return this.getRuleContext(0, Select_limitContext)!; + public KW_ANALYZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ANALYZE, 0); + } + public KW_ANALYSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ANALYSE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_select_limit; + return PostgreSqlParser.RULE_analyze_keyword; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_select_limit) { - listener.enterOpt_select_limit(this); + if(listener.enterAnalyze_keyword) { + listener.enterAnalyze_keyword(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_select_limit) { - listener.exitOpt_select_limit(this); + if(listener.exitAnalyze_keyword) { + listener.exitAnalyze_keyword(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_select_limit) { - return visitor.visitOpt_select_limit(this); + if (visitor.visitAnalyze_keyword) { + return visitor.visitAnalyze_keyword(this); } else { return visitor.visitChildren(this); } @@ -98776,38 +74254,38 @@ export class Opt_select_limitContext extends antlr.ParserRuleContext { } -export class Limit_clauseContext extends antlr.ParserRuleContext { +export class Vac_analyze_option_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_LIMIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_LIMIT, 0)!; + public nonreservedword(): NonreservedwordContext | null { + return this.getRuleContext(0, NonreservedwordContext); } - public select_limit_value(): Select_limit_valueContext { - return this.getRuleContext(0, Select_limit_valueContext)!; + public analyze_keyword(): Analyze_keywordContext | null { + return this.getRuleContext(0, Analyze_keywordContext); } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); + public opt_boolean_or_string(): Opt_boolean_or_stringContext | null { + return this.getRuleContext(0, Opt_boolean_or_stringContext); } - public select_offset_value(): Select_offset_valueContext | null { - return this.getRuleContext(0, Select_offset_valueContext); + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_limit_clause; + return PostgreSqlParser.RULE_vac_analyze_option_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterLimit_clause) { - listener.enterLimit_clause(this); + if(listener.enterVac_analyze_option_elem) { + listener.enterVac_analyze_option_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitLimit_clause) { - listener.exitLimit_clause(this); + if(listener.exitVac_analyze_option_elem) { + listener.exitVac_analyze_option_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitLimit_clause) { - return visitor.visitLimit_clause(this); + if (visitor.visitVac_analyze_option_elem) { + return visitor.visitVac_analyze_option_elem(this); } else { return visitor.visitChildren(this); } @@ -98815,47 +74293,47 @@ export class Limit_clauseContext extends antlr.ParserRuleContext { } -export class Fetch_clauseContext extends antlr.ParserRuleContext { +export class Analyze_option_elemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FETCH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FETCH, 0)!; + public KW_SKIP_LOCKED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SKIP_LOCKED, 0); } - public first_or_next(): First_or_nextContext { - return this.getRuleContext(0, First_or_nextContext)!; + public KW_VERBOSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VERBOSE, 0); } - public select_fetch_first_value(): Select_fetch_first_valueContext | null { - return this.getRuleContext(0, Select_fetch_first_valueContext); + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FALSE, 0); } - public row_or_rows(): Row_or_rowsContext | null { - return this.getRuleContext(0, Row_or_rowsContext); + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUE, 0); } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public KW_BUFFER_USAGE_LIMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BUFFER_USAGE_LIMIT, 0); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); + public numericonly(): NumericonlyContext | null { + return this.getRuleContext(0, NumericonlyContext); } - public KW_TIES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIES, 0); + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_fetch_clause; + return PostgreSqlParser.RULE_analyze_option_elem; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFetch_clause) { - listener.enterFetch_clause(this); + if(listener.enterAnalyze_option_elem) { + listener.enterAnalyze_option_elem(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFetch_clause) { - listener.exitFetch_clause(this); + if(listener.exitAnalyze_option_elem) { + listener.exitAnalyze_option_elem(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFetch_clause) { - return visitor.visitFetch_clause(this); + if (visitor.visitAnalyze_option_elem) { + return visitor.visitAnalyze_option_elem(this); } else { return visitor.visitChildren(this); } @@ -98863,38 +74341,35 @@ export class Fetch_clauseContext extends antlr.ParserRuleContext { } -export class Offset_clauseContext extends antlr.ParserRuleContext { +export class Opt_verboseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_OFFSET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OFFSET, 0)!; - } - public select_fetch_first_value(): Select_fetch_first_valueContext | null { - return this.getRuleContext(0, Select_fetch_first_valueContext); + public KW_VERBOSE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VERBOSE, 0)!; } - public row_or_rows(): Row_or_rowsContext | null { - return this.getRuleContext(0, Row_or_rowsContext); + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FALSE, 0); } - public select_offset_value(): Select_offset_valueContext | null { - return this.getRuleContext(0, Select_offset_valueContext); + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_offset_clause; + return PostgreSqlParser.RULE_opt_verbose; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOffset_clause) { - listener.enterOffset_clause(this); + if(listener.enterOpt_verbose) { + listener.enterOpt_verbose(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOffset_clause) { - listener.exitOffset_clause(this); + if(listener.exitOpt_verbose) { + listener.exitOpt_verbose(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOffset_clause) { - return visitor.visitOffset_clause(this); + if (visitor.visitOpt_verbose) { + return visitor.visitOpt_verbose(this); } else { return visitor.visitChildren(this); } @@ -98902,32 +74377,32 @@ export class Offset_clauseContext extends antlr.ParserRuleContext { } -export class Select_limit_valueContext extends antlr.ParserRuleContext { +export class Vacuum_relationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public table_name(): Table_nameContext { + return this.getRuleContext(0, Table_nameContext)!; } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_limit_value; + return PostgreSqlParser.RULE_vacuum_relation; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_limit_value) { - listener.enterSelect_limit_value(this); + if(listener.enterVacuum_relation) { + listener.enterVacuum_relation(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_limit_value) { - listener.exitSelect_limit_value(this); + if(listener.exitVacuum_relation) { + listener.exitVacuum_relation(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_limit_value) { - return visitor.visitSelect_limit_value(this); + if (visitor.visitVacuum_relation) { + return visitor.visitVacuum_relation(this); } else { return visitor.visitChildren(this); } @@ -98935,29 +74410,44 @@ export class Select_limit_valueContext extends antlr.ParserRuleContext { } -export class Select_offset_valueContext extends antlr.ParserRuleContext { +export class Vacuum_relation_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public vacuum_relation(): Vacuum_relationContext[]; + public vacuum_relation(i: number): Vacuum_relationContext | null; + public vacuum_relation(i?: number): Vacuum_relationContext[] | Vacuum_relationContext | null { + if (i === undefined) { + return this.getRuleContexts(Vacuum_relationContext); + } + + return this.getRuleContext(i, Vacuum_relationContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_offset_value; + return PostgreSqlParser.RULE_vacuum_relation_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_offset_value) { - listener.enterSelect_offset_value(this); + if(listener.enterVacuum_relation_list) { + listener.enterVacuum_relation_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_offset_value) { - listener.exitSelect_offset_value(this); + if(listener.exitVacuum_relation_list) { + listener.exitVacuum_relation_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_offset_value) { - return visitor.visitSelect_offset_value(this); + if (visitor.visitVacuum_relation_list) { + return visitor.visitVacuum_relation_list(this); } else { return visitor.visitChildren(this); } @@ -98965,71 +74455,98 @@ export class Select_offset_valueContext extends antlr.ParserRuleContext { } -export class Select_fetch_first_valueContext extends antlr.ParserRuleContext { +export class ExplainstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PLUS, 0); + public KW_EXPLAIN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXPLAIN, 0)!; } - public i_or_f_const(): I_or_f_constContext | null { - return this.getRuleContext(0, I_or_f_constContext); + public explainablestmt(): ExplainablestmtContext { + return this.getRuleContext(0, ExplainablestmtContext)!; } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.MINUS, 0); + public explain_option_list(): Explain_option_listContext | null { + return this.getRuleContext(0, Explain_option_listContext); + } + public KW_VERBOSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VERBOSE, 0); + } + public analyze_keyword(): Analyze_keywordContext | null { + return this.getRuleContext(0, Analyze_keywordContext); } - public c_expr(): C_exprContext | null { - return this.getRuleContext(0, C_exprContext); + public opt_verbose(): Opt_verboseContext | null { + return this.getRuleContext(0, Opt_verboseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_select_fetch_first_value; + return PostgreSqlParser.RULE_explainstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSelect_fetch_first_value) { - listener.enterSelect_fetch_first_value(this); + if(listener.enterExplainstmt) { + listener.enterExplainstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSelect_fetch_first_value) { - listener.exitSelect_fetch_first_value(this); + if(listener.exitExplainstmt) { + listener.exitExplainstmt(this); + } + } + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitExplainstmt) { + return visitor.visitExplainstmt(this); + } else { + return visitor.visitChildren(this); } } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSelect_fetch_first_value) { - return visitor.visitSelect_fetch_first_value(this); - } else { - return visitor.visitChildren(this); - } +} + + +export class ExplainablestmtContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public selectstmt(): SelectstmtContext | null { + return this.getRuleContext(0, SelectstmtContext); + } + public insertstmt(): InsertstmtContext | null { + return this.getRuleContext(0, InsertstmtContext); + } + public updatestmt(): UpdatestmtContext | null { + return this.getRuleContext(0, UpdatestmtContext); + } + public deletestmt(): DeletestmtContext | null { + return this.getRuleContext(0, DeletestmtContext); + } + public declarecursorstmt(): DeclarecursorstmtContext | null { + return this.getRuleContext(0, DeclarecursorstmtContext); + } + public createasstmt(): CreateasstmtContext | null { + return this.getRuleContext(0, CreateasstmtContext); } -} - - -export class I_or_f_constContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public creatematviewstmt(): CreatematviewstmtContext | null { + return this.getRuleContext(0, CreatematviewstmtContext); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public refreshmatviewstmt(): RefreshmatviewstmtContext | null { + return this.getRuleContext(0, RefreshmatviewstmtContext); } - public fconst(): FconstContext | null { - return this.getRuleContext(0, FconstContext); + public executestmt(): ExecutestmtContext | null { + return this.getRuleContext(0, ExecutestmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_i_or_f_const; + return PostgreSqlParser.RULE_explainablestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterI_or_f_const) { - listener.enterI_or_f_const(this); + if(listener.enterExplainablestmt) { + listener.enterExplainablestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitI_or_f_const) { - listener.exitI_or_f_const(this); + if(listener.exitExplainablestmt) { + listener.exitExplainablestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitI_or_f_const) { - return visitor.visitI_or_f_const(this); + if (visitor.visitExplainablestmt) { + return visitor.visitExplainablestmt(this); } else { return visitor.visitChildren(this); } @@ -99037,32 +74554,50 @@ export class I_or_f_constContext extends antlr.ParserRuleContext { } -export class Row_or_rowsContext extends antlr.ParserRuleContext { +export class Explain_option_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWS, 0); + public vac_analyze_option_elem(): Vac_analyze_option_elemContext[]; + public vac_analyze_option_elem(i: number): Vac_analyze_option_elemContext | null; + public vac_analyze_option_elem(i?: number): Vac_analyze_option_elemContext[] | Vac_analyze_option_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Vac_analyze_option_elemContext); + } + + return this.getRuleContext(i, Vac_analyze_option_elemContext); + } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_row_or_rows; + return PostgreSqlParser.RULE_explain_option_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRow_or_rows) { - listener.enterRow_or_rows(this); + if(listener.enterExplain_option_list) { + listener.enterExplain_option_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRow_or_rows) { - listener.exitRow_or_rows(this); + if(listener.exitExplain_option_list) { + listener.exitExplain_option_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRow_or_rows) { - return visitor.visitRow_or_rows(this); + if (visitor.visitExplain_option_list) { + return visitor.visitExplain_option_list(this); } else { return visitor.visitChildren(this); } @@ -99070,32 +74605,41 @@ export class Row_or_rowsContext extends antlr.ParserRuleContext { } -export class First_or_nextContext extends antlr.ParserRuleContext { +export class PreparestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FIRST, 0); + public KW_PREPARE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_PREPARE, 0)!; } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NEXT, 0); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; + } + public preparablestmt(): PreparablestmtContext { + return this.getRuleContext(0, PreparablestmtContext)!; + } + public prep_type_clause(): Prep_type_clauseContext | null { + return this.getRuleContext(0, Prep_type_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_first_or_next; + return PostgreSqlParser.RULE_preparestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFirst_or_next) { - listener.enterFirst_or_next(this); + if(listener.enterPreparestmt) { + listener.enterPreparestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFirst_or_next) { - listener.exitFirst_or_next(this); + if(listener.exitPreparestmt) { + listener.exitPreparestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFirst_or_next) { - return visitor.visitFirst_or_next(this); + if (visitor.visitPreparestmt) { + return visitor.visitPreparestmt(this); } else { return visitor.visitChildren(this); } @@ -99103,38 +74647,50 @@ export class First_or_nextContext extends antlr.ParserRuleContext { } -export class Group_clauseContext extends antlr.ParserRuleContext { +export class Prep_type_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_GROUP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; + public typename(): TypenameContext[]; + public typename(i: number): TypenameContext | null; + public typename(i?: number): TypenameContext[] | TypenameContext | null { + if (i === undefined) { + return this.getRuleContexts(TypenameContext); + } + + return this.getRuleContext(i, TypenameContext); } - public group_by_list(): Group_by_listContext { - return this.getRuleContext(0, Group_by_listContext)!; + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public all_or_distinct(): All_or_distinctContext | null { - return this.getRuleContext(0, All_or_distinctContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_group_clause; + return PostgreSqlParser.RULE_prep_type_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGroup_clause) { - listener.enterGroup_clause(this); + if(listener.enterPrep_type_clause) { + listener.enterPrep_type_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGroup_clause) { - listener.exitGroup_clause(this); + if(listener.exitPrep_type_clause) { + listener.exitPrep_type_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGroup_clause) { - return visitor.visitGroup_clause(this); + if (visitor.visitPrep_type_clause) { + return visitor.visitPrep_type_clause(this); } else { return visitor.visitChildren(this); } @@ -99142,44 +74698,38 @@ export class Group_clauseContext extends antlr.ParserRuleContext { } -export class Group_by_listContext extends antlr.ParserRuleContext { +export class PreparablestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public group_by_item(): Group_by_itemContext[]; - public group_by_item(i: number): Group_by_itemContext | null; - public group_by_item(i?: number): Group_by_itemContext[] | Group_by_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(Group_by_itemContext); - } - - return this.getRuleContext(i, Group_by_itemContext); + public selectstmt(): SelectstmtContext | null { + return this.getRuleContext(0, SelectstmtContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public insertstmt(): InsertstmtContext | null { + return this.getRuleContext(0, InsertstmtContext); + } + public updatestmt(): UpdatestmtContext | null { + return this.getRuleContext(0, UpdatestmtContext); + } + public deletestmt(): DeletestmtContext | null { + return this.getRuleContext(0, DeletestmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_group_by_list; + return PostgreSqlParser.RULE_preparablestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGroup_by_list) { - listener.enterGroup_by_list(this); + if(listener.enterPreparablestmt) { + listener.enterPreparablestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGroup_by_list) { - listener.exitGroup_by_list(this); + if(listener.exitPreparablestmt) { + listener.exitPreparablestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGroup_by_list) { - return visitor.visitGroup_by_list(this); + if (visitor.visitPreparablestmt) { + return visitor.visitPreparablestmt(this); } else { return visitor.visitChildren(this); } @@ -99187,50 +74737,56 @@ export class Group_by_listContext extends antlr.ParserRuleContext { } -export class Group_by_itemContext extends antlr.ParserRuleContext { +export class ExecutestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public column_expr_noparen(): Column_expr_noparenContext | null { - return this.getRuleContext(0, Column_expr_noparenContext); + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; } - public empty_grouping_set(): Empty_grouping_setContext | null { - return this.getRuleContext(0, Empty_grouping_setContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public cube_clause(): Cube_clauseContext | null { - return this.getRuleContext(0, Cube_clauseContext); + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } - public rollup_clause(): Rollup_clauseContext | null { - return this.getRuleContext(0, Rollup_clauseContext); + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATE, 0); } - public grouping_sets_clause(): Grouping_sets_clauseContext | null { - return this.getRuleContext(0, Grouping_sets_clauseContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public create_as_target(): Create_as_targetContext | null { + return this.getRuleContext(0, Create_as_targetContext); } - public column_expr_list_noparen(): Column_expr_list_noparenContext | null { - return this.getRuleContext(0, Column_expr_list_noparenContext); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public opttemp(): OpttempContext | null { + return this.getRuleContext(0, OpttempContext); + } + public opt_if_not_exists(): Opt_if_not_existsContext | null { + return this.getRuleContext(0, Opt_if_not_existsContext); + } + public opt_with_data(): Opt_with_dataContext | null { + return this.getRuleContext(0, Opt_with_dataContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_group_by_item; + return PostgreSqlParser.RULE_executestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGroup_by_item) { - listener.enterGroup_by_item(this); + if(listener.enterExecutestmt) { + listener.enterExecutestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGroup_by_item) { - listener.exitGroup_by_item(this); + if(listener.exitExecutestmt) { + listener.exitExecutestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGroup_by_item) { - return visitor.visitGroup_by_item(this); + if (visitor.visitExecutestmt) { + return visitor.visitExecutestmt(this); } else { return visitor.visitChildren(this); } @@ -99238,32 +74794,35 @@ export class Group_by_itemContext extends antlr.ParserRuleContext { } -export class Empty_grouping_setContext extends antlr.ParserRuleContext { +export class Execute_param_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public OPEN_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } + public expr_list(): Expr_listContext { + return this.getRuleContext(0, Expr_listContext)!; + } public CLOSE_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_empty_grouping_set; + return PostgreSqlParser.RULE_execute_param_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterEmpty_grouping_set) { - listener.enterEmpty_grouping_set(this); + if(listener.enterExecute_param_clause) { + listener.enterExecute_param_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitEmpty_grouping_set) { - listener.exitEmpty_grouping_set(this); + if(listener.exitExecute_param_clause) { + listener.exitExecute_param_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitEmpty_grouping_set) { - return visitor.visitEmpty_grouping_set(this); + if (visitor.visitExecute_param_clause) { + return visitor.visitExecute_param_clause(this); } else { return visitor.visitChildren(this); } @@ -99271,38 +74830,38 @@ export class Empty_grouping_setContext extends antlr.ParserRuleContext { } -export class Rollup_clauseContext extends antlr.ParserRuleContext { +export class DeallocatestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ROLLUP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ROLLUP, 0)!; + public KW_DEALLOCATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DEALLOCATE, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public column_expr_list_noparen(): Column_expr_list_noparenContext { - return this.getRuleContext(0, Column_expr_list_noparenContext)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_PREPARE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PREPARE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rollup_clause; + return PostgreSqlParser.RULE_deallocatestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRollup_clause) { - listener.enterRollup_clause(this); + if(listener.enterDeallocatestmt) { + listener.enterDeallocatestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRollup_clause) { - listener.exitRollup_clause(this); + if(listener.exitDeallocatestmt) { + listener.exitDeallocatestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRollup_clause) { - return visitor.visitRollup_clause(this); + if (visitor.visitDeallocatestmt) { + return visitor.visitDeallocatestmt(this); } else { return visitor.visitChildren(this); } @@ -99310,38 +74869,107 @@ export class Rollup_clauseContext extends antlr.ParserRuleContext { } -export class Cube_clauseContext extends antlr.ParserRuleContext { +export class InsertstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CUBE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CUBE, 0)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_insertstmt; } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public override copyFrom(ctx: InsertstmtContext): void { + super.copyFrom(ctx); } - public column_expr_list_noparen(): Column_expr_list_noparenContext { - return this.getRuleContext(0, Column_expr_list_noparenContext)!; +} +export class InsertStatementContext extends InsertstmtContext { + public constructor(ctx: InsertstmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_INSERT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INSERT, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_cube_clause; + public KW_INTO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INTO, 0)!; + } + public table_name(): Table_nameContext { + return this.getRuleContext(0, Table_nameContext)!; + } + public insert_rest(): Insert_restContext { + return this.getRuleContext(0, Insert_restContext)!; + } + public with_clause(): With_clauseContext | null { + return this.getRuleContext(0, With_clauseContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { + if (i === undefined) { + return this.getRuleContexts(ColidContext); + } + + return this.getRuleContext(i, ColidContext); + } + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_ON); + } else { + return this.getToken(PostgreSqlParser.KW_ON, i); + } + } + public KW_CONFLICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONFLICT, 0); + } + public KW_DO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DO, 0); + } + public returning_clause(): Returning_clauseContext | null { + return this.getRuleContext(0, Returning_clauseContext); + } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); + } + public set_clause_list(): Set_clause_listContext | null { + return this.getRuleContext(0, Set_clause_listContext); + } + public KW_NOTHING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOTHING, 0); + } + public index_params(): Index_paramsContext | null { + return this.getRuleContext(0, Index_paramsContext); + } + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + } + public where_clause(): Where_clauseContext[]; + public where_clause(i: number): Where_clauseContext | null; + public where_clause(i?: number): Where_clauseContext[] | Where_clauseContext | null { + if (i === undefined) { + return this.getRuleContexts(Where_clauseContext); + } + + return this.getRuleContext(i, Where_clauseContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCube_clause) { - listener.enterCube_clause(this); + if(listener.enterInsertStatement) { + listener.enterInsertStatement(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCube_clause) { - listener.exitCube_clause(this); + if(listener.exitInsertStatement) { + listener.exitInsertStatement(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCube_clause) { - return visitor.visitCube_clause(this); + if (visitor.visitInsertStatement) { + return visitor.visitInsertStatement(this); } else { return visitor.visitChildren(this); } @@ -99349,41 +74977,53 @@ export class Cube_clauseContext extends antlr.ParserRuleContext { } -export class Grouping_sets_clauseContext extends antlr.ParserRuleContext { +export class Insert_restContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_GROUPING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GROUPING, 0)!; + public default_values_or_values(): Default_values_or_valuesContext | null { + return this.getRuleContext(0, Default_values_or_valuesContext); } - public KW_SETS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SETS, 0)!; + public selectstmt(): SelectstmtContext | null { + return this.getRuleContext(0, SelectstmtContext); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public group_by_list(): Group_by_listContext { - return this.getRuleContext(0, Group_by_listContext)!; + public insert_column_list(): Insert_column_listContext | null { + return this.getRuleContext(0, Insert_column_listContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public KW_OVERRIDING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OVERRIDING, 0); + } + public KW_VALUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALUE, 0); + } + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); + } + public KW_SYSTEM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SYSTEM, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_grouping_sets_clause; + return PostgreSqlParser.RULE_insert_rest; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGrouping_sets_clause) { - listener.enterGrouping_sets_clause(this); + if(listener.enterInsert_rest) { + listener.enterInsert_rest(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGrouping_sets_clause) { - listener.exitGrouping_sets_clause(this); + if(listener.exitInsert_rest) { + listener.exitInsert_rest(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGrouping_sets_clause) { - return visitor.visitGrouping_sets_clause(this); + if (visitor.visitInsert_rest) { + return visitor.visitInsert_rest(this); } else { return visitor.visitChildren(this); } @@ -99391,32 +75031,44 @@ export class Grouping_sets_clauseContext extends antlr.ParserRuleContext { } -export class Having_clauseContext extends antlr.ParserRuleContext { +export class Insert_column_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_HAVING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_HAVING, 0)!; + public insert_column_item(): Insert_column_itemContext[]; + public insert_column_item(i: number): Insert_column_itemContext | null; + public insert_column_item(i?: number): Insert_column_itemContext[] | Insert_column_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Insert_column_itemContext); + } + + return this.getRuleContext(i, Insert_column_itemContext); } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_having_clause; + return PostgreSqlParser.RULE_insert_column_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterHaving_clause) { - listener.enterHaving_clause(this); + if(listener.enterInsert_column_list) { + listener.enterInsert_column_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitHaving_clause) { - listener.exitHaving_clause(this); + if(listener.exitInsert_column_list) { + listener.exitInsert_column_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitHaving_clause) { - return visitor.visitHaving_clause(this); + if (visitor.visitInsert_column_list) { + return visitor.visitInsert_column_list(this); } else { return visitor.visitChildren(this); } @@ -99424,38 +75076,32 @@ export class Having_clauseContext extends antlr.ParserRuleContext { } -export class For_locking_clauseContext extends antlr.ParserRuleContext { +export class Insert_column_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public for_locking_items(): For_locking_itemsContext | null { - return this.getRuleContext(0, For_locking_itemsContext); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public KW_READ(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_READ, 0); + public column_name(): Column_nameContext { + return this.getRuleContext(0, Column_nameContext)!; } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public opt_indirection(): Opt_indirectionContext { + return this.getRuleContext(0, Opt_indirectionContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_for_locking_clause; + return PostgreSqlParser.RULE_insert_column_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFor_locking_clause) { - listener.enterFor_locking_clause(this); + if(listener.enterInsert_column_item) { + listener.enterInsert_column_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFor_locking_clause) { - listener.exitFor_locking_clause(this); + if(listener.exitInsert_column_item) { + listener.exitInsert_column_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFor_locking_clause) { - return visitor.visitFor_locking_clause(this); + if (visitor.visitInsert_column_item) { + return visitor.visitInsert_column_item(this); } else { return visitor.visitChildren(this); } @@ -99463,29 +75109,32 @@ export class For_locking_clauseContext extends antlr.ParserRuleContext { } -export class Opt_for_locking_clauseContext extends antlr.ParserRuleContext { +export class Returning_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public for_locking_clause(): For_locking_clauseContext { - return this.getRuleContext(0, For_locking_clauseContext)!; + public KW_RETURNING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_RETURNING, 0)!; + } + public target_list(): Target_listContext { + return this.getRuleContext(0, Target_listContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_for_locking_clause; + return PostgreSqlParser.RULE_returning_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_for_locking_clause) { - listener.enterOpt_for_locking_clause(this); + if(listener.enterReturning_clause) { + listener.enterReturning_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_for_locking_clause) { - listener.exitOpt_for_locking_clause(this); + if(listener.exitReturning_clause) { + listener.exitReturning_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_for_locking_clause) { - return visitor.visitOpt_for_locking_clause(this); + if (visitor.visitReturning_clause) { + return visitor.visitReturning_clause(this); } else { return visitor.visitChildren(this); } @@ -99493,35 +75142,50 @@ export class Opt_for_locking_clauseContext extends antlr.ParserRuleContext { } -export class For_locking_itemsContext extends antlr.ParserRuleContext { +export class DeletestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public for_locking_item(): For_locking_itemContext[]; - public for_locking_item(i: number): For_locking_itemContext | null; - public for_locking_item(i?: number): For_locking_itemContext[] | For_locking_itemContext | null { - if (i === undefined) { - return this.getRuleContexts(For_locking_itemContext); - } - - return this.getRuleContext(i, For_locking_itemContext); + public KW_DELETE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DELETE, 0)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + } + public relation_expr_opt_alias(): Relation_expr_opt_aliasContext { + return this.getRuleContext(0, Relation_expr_opt_aliasContext)!; + } + public with_clause(): With_clauseContext | null { + return this.getRuleContext(0, With_clauseContext); + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); + } + public from_list(): From_listContext | null { + return this.getRuleContext(0, From_listContext); + } + public where_or_current_clause(): Where_or_current_clauseContext | null { + return this.getRuleContext(0, Where_or_current_clauseContext); + } + public returning_clause(): Returning_clauseContext | null { + return this.getRuleContext(0, Returning_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_for_locking_items; + return PostgreSqlParser.RULE_deletestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFor_locking_items) { - listener.enterFor_locking_items(this); + if(listener.enterDeletestmt) { + listener.enterDeletestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFor_locking_items) { - listener.exitFor_locking_items(this); + if(listener.exitDeletestmt) { + listener.exitDeletestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFor_locking_items) { - return visitor.visitFor_locking_items(this); + if (visitor.visitDeletestmt) { + return visitor.visitDeletestmt(this); } else { return visitor.visitChildren(this); } @@ -99529,35 +75193,59 @@ export class For_locking_itemsContext extends antlr.ParserRuleContext { } -export class For_locking_itemContext extends antlr.ParserRuleContext { +export class LockstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public for_locking_strength(): For_locking_strengthContext { - return this.getRuleContext(0, For_locking_strengthContext)!; + public KW_LOCK(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LOCK, 0)!; + } + public relation_expr_list(): Relation_expr_listContext { + return this.getRuleContext(0, Relation_expr_listContext)!; + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public KW_MODE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MODE, 0); + } + public KW_NOWAIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOWAIT, 0); + } + public KW_SHARE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SHARE, 0); + } + public KW_EXCLUSIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCLUSIVE, 0); + } + public KW_ACCESS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ACCESS, 0); } - public locked_rels_list(): Locked_rels_listContext | null { - return this.getRuleContext(0, Locked_rels_listContext); + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); } - public opt_nowait_or_skip(): Opt_nowait_or_skipContext | null { - return this.getRuleContext(0, Opt_nowait_or_skipContext); + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_for_locking_item; + return PostgreSqlParser.RULE_lockstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFor_locking_item) { - listener.enterFor_locking_item(this); + if(listener.enterLockstmt) { + listener.enterLockstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFor_locking_item) { - listener.exitFor_locking_item(this); + if(listener.exitLockstmt) { + listener.exitLockstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFor_locking_item) { - return visitor.visitFor_locking_item(this); + if (visitor.visitLockstmt) { + return visitor.visitLockstmt(this); } else { return visitor.visitChildren(this); } @@ -99565,41 +75253,50 @@ export class For_locking_itemContext extends antlr.ParserRuleContext { } -export class For_locking_strengthContext extends antlr.ParserRuleContext { +export class UpdatestmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0)!; + } + public relation_expr_opt_alias(): Relation_expr_opt_aliasContext { + return this.getRuleContext(0, Relation_expr_opt_aliasContext)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); + public set_clause_list(): Set_clause_listContext { + return this.getRuleContext(0, Set_clause_listContext)!; } - public KW_SHARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SHARE, 0); + public with_clause(): With_clauseContext | null { + return this.getRuleContext(0, With_clauseContext); } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); + public from_clause(): From_clauseContext | null { + return this.getRuleContext(0, From_clauseContext); } - public KW_KEY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_KEY, 0); + public where_or_current_clause(): Where_or_current_clauseContext | null { + return this.getRuleContext(0, Where_or_current_clauseContext); + } + public returning_clause(): Returning_clauseContext | null { + return this.getRuleContext(0, Returning_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_for_locking_strength; + return PostgreSqlParser.RULE_updatestmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFor_locking_strength) { - listener.enterFor_locking_strength(this); + if(listener.enterUpdatestmt) { + listener.enterUpdatestmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFor_locking_strength) { - listener.exitFor_locking_strength(this); + if(listener.exitUpdatestmt) { + listener.exitUpdatestmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFor_locking_strength) { - return visitor.visitFor_locking_strength(this); + if (visitor.visitUpdatestmt) { + return visitor.visitUpdatestmt(this); } else { return visitor.visitChildren(this); } @@ -99607,32 +75304,44 @@ export class For_locking_strengthContext extends antlr.ParserRuleContext { } -export class Locked_rels_listContext extends antlr.ParserRuleContext { +export class Set_clause_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_OF(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_OF, 0)!; + public set_clause(): Set_clauseContext[]; + public set_clause(i: number): Set_clauseContext | null; + public set_clause(i?: number): Set_clauseContext[] | Set_clauseContext | null { + if (i === undefined) { + return this.getRuleContexts(Set_clauseContext); + } + + return this.getRuleContext(i, Set_clauseContext); } - public qualified_name_list(): Qualified_name_listContext { - return this.getRuleContext(0, Qualified_name_listContext)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_locked_rels_list; + return PostgreSqlParser.RULE_set_clause_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterLocked_rels_list) { - listener.enterLocked_rels_list(this); + if(listener.enterSet_clause_list) { + listener.enterSet_clause_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitLocked_rels_list) { - listener.exitLocked_rels_list(this); + if(listener.exitSet_clause_list) { + listener.exitSet_clause_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitLocked_rels_list) { - return visitor.visitLocked_rels_list(this); + if (visitor.visitSet_clause_list) { + return visitor.visitSet_clause_list(this); } else { return visitor.visitChildren(this); } @@ -99640,12 +75349,18 @@ export class Locked_rels_listContext extends antlr.ParserRuleContext { } -export class Values_clauseContext extends antlr.ParserRuleContext { +export class Set_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_VALUES(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VALUES, 0)!; + public insert_column_item(): Insert_column_itemContext | null { + return this.getRuleContext(0, Insert_column_itemContext); + } + public EQUAL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.EQUAL, 0)!; + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public OPEN_PAREN(): antlr.TerminalNode[]; public OPEN_PAREN(i: number): antlr.TerminalNode | null; @@ -99656,14 +75371,8 @@ export class Values_clauseContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.OPEN_PAREN, i); } } - public expr_list(): Expr_listContext[]; - public expr_list(i: number): Expr_listContext | null; - public expr_list(i?: number): Expr_listContext[] | Expr_listContext | null { - if (i === undefined) { - return this.getRuleContexts(Expr_listContext); - } - - return this.getRuleContext(i, Expr_listContext); + public insert_column_list(): Insert_column_listContext | null { + return this.getRuleContext(0, Insert_column_listContext); } public CLOSE_PAREN(): antlr.TerminalNode[]; public CLOSE_PAREN(i: number): antlr.TerminalNode | null; @@ -99674,31 +75383,28 @@ export class Values_clauseContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); } } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public select_clause(): Select_clauseContext | null { + return this.getRuleContext(0, Select_clauseContext); + } + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_values_clause; + return PostgreSqlParser.RULE_set_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterValues_clause) { - listener.enterValues_clause(this); + if(listener.enterSet_clause) { + listener.enterSet_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitValues_clause) { - listener.exitValues_clause(this); + if(listener.exitSet_clause) { + listener.exitSet_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitValues_clause) { - return visitor.visitValues_clause(this); + if (visitor.visitSet_clause) { + return visitor.visitSet_clause(this); } else { return visitor.visitChildren(this); } @@ -99706,77 +75412,86 @@ export class Values_clauseContext extends antlr.ParserRuleContext { } -export class From_clauseContext extends antlr.ParserRuleContext { +export class DeclarecursorstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; + public KW_DECLARE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DECLARE, 0)!; } - public from_list(): From_listContext { - return this.getRuleContext(0, From_listContext)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_from_clause; + public KW_CURSOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CURSOR, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFrom_clause) { - listener.enterFrom_clause(this); - } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FOR, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFrom_clause) { - listener.exitFrom_clause(this); - } + public selectstmt(): SelectstmtContext { + return this.getRuleContext(0, SelectstmtContext)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFrom_clause) { - return visitor.visitFrom_clause(this); - } else { - return visitor.visitChildren(this); - } + public KW_HOLD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_HOLD, 0); } -} - - -export class From_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public table_ref(): Table_refContext[]; - public table_ref(i: number): Table_refContext | null; - public table_ref(i?: number): Table_refContext[] | Table_refContext | null { - if (i === undefined) { - return this.getRuleContexts(Table_refContext); - } - - return this.getRuleContext(i, Table_refContext); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_BINARY(): antlr.TerminalNode[]; + public KW_BINARY(i: number): antlr.TerminalNode | null; + public KW_BINARY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); + return this.getTokens(PostgreSqlParser.KW_BINARY); } else { - return this.getToken(PostgreSqlParser.COMMA, i); + return this.getToken(PostgreSqlParser.KW_BINARY, i); + } + } + public KW_INSENSITIVE(): antlr.TerminalNode[]; + public KW_INSENSITIVE(i: number): antlr.TerminalNode | null; + public KW_INSENSITIVE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_INSENSITIVE); + } else { + return this.getToken(PostgreSqlParser.KW_INSENSITIVE, i); + } + } + public KW_SCROLL(): antlr.TerminalNode[]; + public KW_SCROLL(i: number): antlr.TerminalNode | null; + public KW_SCROLL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_SCROLL); + } else { + return this.getToken(PostgreSqlParser.KW_SCROLL, i); + } + } + public KW_NO(): antlr.TerminalNode[]; + public KW_NO(i: number): antlr.TerminalNode | null; + public KW_NO(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NO); + } else { + return this.getToken(PostgreSqlParser.KW_NO, i); } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_from_list; + return PostgreSqlParser.RULE_declarecursorstmt; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFrom_list) { - listener.enterFrom_list(this); + if(listener.enterDeclarecursorstmt) { + listener.enterDeclarecursorstmt(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFrom_list) { - listener.exitFrom_list(this); + if(listener.exitDeclarecursorstmt) { + listener.exitDeclarecursorstmt(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFrom_list) { - return visitor.visitFrom_list(this); + if (visitor.visitDeclarecursorstmt) { + return visitor.visitDeclarecursorstmt(this); } else { return visitor.visitChildren(this); } @@ -99784,113 +75499,80 @@ export class From_listContext extends antlr.ParserRuleContext { } -export class Table_refContext extends antlr.ParserRuleContext { +export class SelectstmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_table(): Func_tableContext | null { - return this.getRuleContext(0, Func_tableContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_selectstmt; } - public xmltable(): XmltableContext | null { - return this.getRuleContext(0, XmltableContext); + public override copyFrom(ctx: SelectstmtContext): void { + super.copyFrom(ctx); } - public select_with_parens(): Select_with_parensContext | null { - return this.getRuleContext(0, Select_with_parensContext); +} +export class SelectStatementContext extends SelectstmtContext { + public constructor(ctx: SelectstmtContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_LATERAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LATERAL, 0); + public select_no_parens(): Select_no_parensContext | null { + return this.getRuleContext(0, Select_no_parensContext); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public select_with_parens(): Select_with_parensContext | null { + return this.getRuleContext(0, Select_with_parensContext); } - public table_ref(): Table_refContext[]; - public table_ref(i: number): Table_refContext | null; - public table_ref(i?: number): Table_refContext[] | Table_refContext | null { - if (i === undefined) { - return this.getRuleContexts(Table_refContext); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterSelectStatement) { + listener.enterSelectStatement(this); } - - return this.getRuleContext(i, Table_refContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public KW_CROSS(): antlr.TerminalNode[]; - public KW_CROSS(i: number): antlr.TerminalNode | null; - public KW_CROSS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_CROSS); - } else { - return this.getToken(PostgreSqlParser.KW_CROSS, i); - } - } - public KW_JOIN(): antlr.TerminalNode[]; - public KW_JOIN(i: number): antlr.TerminalNode | null; - public KW_JOIN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_JOIN); - } else { - return this.getToken(PostgreSqlParser.KW_JOIN, i); - } - } - public KW_NATURAL(): antlr.TerminalNode[]; - public KW_NATURAL(i: number): antlr.TerminalNode | null; - public KW_NATURAL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_NATURAL); - } else { - return this.getToken(PostgreSqlParser.KW_NATURAL, i); - } } - public join_qual(): Join_qualContext[]; - public join_qual(i: number): Join_qualContext | null; - public join_qual(i?: number): Join_qualContext[] | Join_qualContext | null { - if (i === undefined) { - return this.getRuleContexts(Join_qualContext); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitSelectStatement) { + listener.exitSelectStatement(this); } - - return this.getRuleContext(i, Join_qualContext); } - public relation_expr(): Relation_exprContext | null { - return this.getRuleContext(0, Relation_exprContext); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitSelectStatement) { + return visitor.visitSelectStatement(this); + } else { + return visitor.visitChildren(this); + } } - public view_relation_expr(): View_relation_exprContext | null { - return this.getRuleContext(0, View_relation_exprContext); +} + + +export class Select_with_parensContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public opt_alias_clause(): Opt_alias_clauseContext | null { - return this.getRuleContext(0, Opt_alias_clauseContext); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public tablesample_clause(): Tablesample_clauseContext | null { - return this.getRuleContext(0, Tablesample_clauseContext); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public func_alias_clause(): Func_alias_clauseContext | null { - return this.getRuleContext(0, Func_alias_clauseContext); + public select_no_parens(): Select_no_parensContext | null { + return this.getRuleContext(0, Select_no_parensContext); } - public join_type(): Join_typeContext[]; - public join_type(i: number): Join_typeContext | null; - public join_type(i?: number): Join_typeContext[] | Join_typeContext | null { - if (i === undefined) { - return this.getRuleContexts(Join_typeContext); - } - - return this.getRuleContext(i, Join_typeContext); + public select_with_parens(): Select_with_parensContext | null { + return this.getRuleContext(0, Select_with_parensContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_table_ref; + return PostgreSqlParser.RULE_select_with_parens; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTable_ref) { - listener.enterTable_ref(this); + if(listener.enterSelect_with_parens) { + listener.enterSelect_with_parens(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTable_ref) { - listener.exitTable_ref(this); + if(listener.exitSelect_with_parens) { + listener.exitSelect_with_parens(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTable_ref) { - return visitor.visitTable_ref(this); + if (visitor.visitSelect_with_parens) { + return visitor.visitSelect_with_parens(this); } else { return visitor.visitChildren(this); } @@ -99898,41 +75580,41 @@ export class Table_refContext extends antlr.ParserRuleContext { } -export class Alias_clauseContext extends antlr.ParserRuleContext { +export class Select_no_parensContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public select_clause(): Select_clauseContext { + return this.getRuleContext(0, Select_clauseContext)!; } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public with_clause(): With_clauseContext | null { + return this.getRuleContext(0, With_clauseContext); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public sort_clause(): Sort_clauseContext | null { + return this.getRuleContext(0, Sort_clauseContext); } - public name_list(): Name_listContext | null { - return this.getRuleContext(0, Name_listContext); + public for_locking_clause(): For_locking_clauseContext | null { + return this.getRuleContext(0, For_locking_clauseContext); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public select_limit(): Select_limitContext | null { + return this.getRuleContext(0, Select_limitContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_alias_clause; + return PostgreSqlParser.RULE_select_no_parens; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAlias_clause) { - listener.enterAlias_clause(this); + if(listener.enterSelect_no_parens) { + listener.enterSelect_no_parens(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAlias_clause) { - listener.exitAlias_clause(this); + if(listener.exitSelect_no_parens) { + listener.exitSelect_no_parens(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAlias_clause) { - return visitor.visitAlias_clause(this); + if (visitor.visitSelect_no_parens) { + return visitor.visitSelect_no_parens(this); } else { return visitor.visitChildren(this); } @@ -99940,29 +75622,32 @@ export class Alias_clauseContext extends antlr.ParserRuleContext { } -export class Opt_alias_clauseContext extends antlr.ParserRuleContext { +export class Select_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public alias_clause(): Alias_clauseContext { - return this.getRuleContext(0, Alias_clauseContext)!; + public simple_select(): Simple_selectContext | null { + return this.getRuleContext(0, Simple_selectContext); + } + public select_with_parens(): Select_with_parensContext | null { + return this.getRuleContext(0, Select_with_parensContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_alias_clause; + return PostgreSqlParser.RULE_select_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_alias_clause) { - listener.enterOpt_alias_clause(this); + if(listener.enterSelect_clause) { + listener.enterSelect_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_alias_clause) { - listener.exitOpt_alias_clause(this); + if(listener.exitSelect_clause) { + listener.exitSelect_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_alias_clause) { - return visitor.visitOpt_alias_clause(this); + if (visitor.visitSelect_clause) { + return visitor.visitSelect_clause(this); } else { return visitor.visitChildren(this); } @@ -99970,44 +75655,77 @@ export class Opt_alias_clauseContext extends antlr.ParserRuleContext { } -export class Func_alias_clauseContext extends antlr.ParserRuleContext { +export class Simple_selectContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public alias_clause(): Alias_clauseContext | null { - return this.getRuleContext(0, Alias_clauseContext); + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SELECT, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public sql_expression(): Sql_expressionContext | null { + return this.getRuleContext(0, Sql_expressionContext); } - public tablefuncelementlist(): TablefuncelementlistContext | null { - return this.getRuleContext(0, TablefuncelementlistContext); + public values_clause(): Values_clauseContext | null { + return this.getRuleContext(0, Values_clauseContext); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public relation_expr(): Relation_exprContext | null { + return this.getRuleContext(0, Relation_exprContext); } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public select_with_parens(): Select_with_parensContext[]; + public select_with_parens(i: number): Select_with_parensContext | null; + public select_with_parens(i?: number): Select_with_parensContext[] | Select_with_parensContext | null { + if (i === undefined) { + return this.getRuleContexts(Select_with_parensContext); + } + + return this.getRuleContext(i, Select_with_parensContext); + } + public set_operator_with_all_or_distinct(): Set_operator_with_all_or_distinctContext[]; + public set_operator_with_all_or_distinct(i: number): Set_operator_with_all_or_distinctContext | null; + public set_operator_with_all_or_distinct(i?: number): Set_operator_with_all_or_distinctContext[] | Set_operator_with_all_or_distinctContext | null { + if (i === undefined) { + return this.getRuleContexts(Set_operator_with_all_or_distinctContext); + } + + return this.getRuleContext(i, Set_operator_with_all_or_distinctContext); + } + public simple_select(): Simple_selectContext[]; + public simple_select(i: number): Simple_selectContext | null; + public simple_select(i?: number): Simple_selectContext[] | Simple_selectContext | null { + if (i === undefined) { + return this.getRuleContexts(Simple_selectContext); + } + + return this.getRuleContext(i, Simple_selectContext); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); + } + public into_clause(): Into_clauseContext | null { + return this.getRuleContext(0, Into_clauseContext); + } + public distinct_clause(): Distinct_clauseContext | null { + return this.getRuleContext(0, Distinct_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_alias_clause; + return PostgreSqlParser.RULE_simple_select; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_alias_clause) { - listener.enterFunc_alias_clause(this); + if(listener.enterSimple_select) { + listener.enterSimple_select(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_alias_clause) { - listener.exitFunc_alias_clause(this); + if(listener.exitSimple_select) { + listener.exitSimple_select(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_alias_clause) { - return visitor.visitFunc_alias_clause(this); + if (visitor.visitSimple_select) { + return visitor.visitSimple_select(this); } else { return visitor.visitChildren(this); } @@ -100015,41 +75733,41 @@ export class Func_alias_clauseContext extends antlr.ParserRuleContext { } -export class Join_typeContext extends antlr.ParserRuleContext { +export class Set_operator_with_all_or_distinctContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FULL, 0); + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNION, 0); } - public KW_LEFT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEFT, 0); + public KW_INTERSECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTERSECT, 0); } - public KW_RIGHT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RIGHT, 0); + public KW_EXCEPT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCEPT, 0); } - public KW_INNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INNER, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public KW_OUTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OUTER, 0); + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_join_type; + return PostgreSqlParser.RULE_set_operator_with_all_or_distinct; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterJoin_type) { - listener.enterJoin_type(this); + if(listener.enterSet_operator_with_all_or_distinct) { + listener.enterSet_operator_with_all_or_distinct(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitJoin_type) { - listener.exitJoin_type(this); + if(listener.exitSet_operator_with_all_or_distinct) { + listener.exitSet_operator_with_all_or_distinct(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitJoin_type) { - return visitor.visitJoin_type(this); + if (visitor.visitSet_operator_with_all_or_distinct) { + return visitor.visitSet_operator_with_all_or_distinct(this); } else { return visitor.visitChildren(this); } @@ -100057,44 +75775,50 @@ export class Join_typeContext extends antlr.ParserRuleContext { } -export class Join_qualContext extends antlr.ParserRuleContext { +export class With_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); + public KW_WITH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WITH, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public common_table_expr(): Common_table_exprContext[]; + public common_table_expr(i: number): Common_table_exprContext | null; + public common_table_expr(i?: number): Common_table_exprContext[] | Common_table_exprContext | null { + if (i === undefined) { + return this.getRuleContexts(Common_table_exprContext); + } + + return this.getRuleContext(i, Common_table_exprContext); } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + public KW_RECURSIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RECURSIVE, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_join_qual; + return PostgreSqlParser.RULE_with_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterJoin_qual) { - listener.enterJoin_qual(this); + if(listener.enterWith_clause) { + listener.enterWith_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitJoin_qual) { - listener.exitJoin_qual(this); + if(listener.exitWith_clause) { + listener.exitWith_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitJoin_qual) { - return visitor.visitJoin_qual(this); + if (visitor.visitWith_clause) { + return visitor.visitWith_clause(this); } else { return visitor.visitChildren(this); } @@ -100102,53 +75826,56 @@ export class Join_qualContext extends antlr.ParserRuleContext { } -export class Relation_exprContext extends antlr.ParserRuleContext { +export class Common_table_exprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public KW_AS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AS, 0)!; } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public preparablestmt(): PreparablestmtContext { + return this.getRuleContext(0, PreparablestmtContext)!; } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + public KW_MATERIALIZED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MATERIALIZED, 0); } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); + public search_cluase(): Search_cluaseContext | null { + return this.getRuleContext(0, Search_cluaseContext); } - public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); + public cycle_cluase(): Cycle_cluaseContext | null { + return this.getRuleContext(0, Cycle_cluaseContext); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_relation_expr; + return PostgreSqlParser.RULE_common_table_expr; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRelation_expr) { - listener.enterRelation_expr(this); + if(listener.enterCommon_table_expr) { + listener.enterCommon_table_expr(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRelation_expr) { - listener.exitRelation_expr(this); + if(listener.exitCommon_table_expr) { + listener.exitCommon_table_expr(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRelation_expr) { - return visitor.visitRelation_expr(this); + if (visitor.visitCommon_table_expr) { + return visitor.visitCommon_table_expr(this); } else { return visitor.visitChildren(this); } @@ -100156,41 +75883,50 @@ export class Relation_exprContext extends antlr.ParserRuleContext { } -export class View_relation_exprContext extends antlr.ParserRuleContext { +export class Search_cluaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public view_name(): View_nameContext { - return this.getRuleContext(0, View_nameContext)!; + public KW_SEARCH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0)!; } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public KW_FIRST(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FIRST, 0)!; } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); + public KW_BY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BY, 0)!; } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); + public column_list(): Column_listContext { + return this.getRuleContext(0, Column_listContext)!; } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; + } + public column_name(): Column_nameContext { + return this.getRuleContext(0, Column_nameContext)!; + } + public KW_BREADTH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BREADTH, 0); + } + public KW_DEPTH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEPTH, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_view_relation_expr; + return PostgreSqlParser.RULE_search_cluase; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterView_relation_expr) { - listener.enterView_relation_expr(this); + if(listener.enterSearch_cluase) { + listener.enterSearch_cluase(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitView_relation_expr) { - listener.exitView_relation_expr(this); + if(listener.exitSearch_cluase) { + listener.exitSearch_cluase(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitView_relation_expr) { - return visitor.visitView_relation_expr(this); + if (visitor.visitSearch_cluase) { + return visitor.visitSearch_cluase(this); } else { return visitor.visitChildren(this); } @@ -100198,110 +75934,62 @@ export class View_relation_exprContext extends antlr.ParserRuleContext { } -export class Publication_relation_exprContext extends antlr.ParserRuleContext { +export class Cycle_cluaseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); - } - public table_name(): Table_nameContext | null { - return this.getRuleContext(0, Table_nameContext); - } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); - } - public STAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.STAR, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public where_clause(): Where_clauseContext | null { - return this.getRuleContext(0, Where_clauseContext); - } - public KW_TABLES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLES, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public schema_name(): Schema_nameContext | null { - return this.getRuleContext(0, Schema_nameContext); - } - public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); + public KW_CYCLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_CYCLE, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_publication_relation_expr; + public column_list(): Column_listContext { + return this.getRuleContext(0, Column_listContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPublication_relation_expr) { - listener.enterPublication_relation_expr(this); - } + public KW_SET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SET, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPublication_relation_expr) { - listener.exitPublication_relation_expr(this); + public column_name(): Column_nameContext[]; + public column_name(i: number): Column_nameContext | null; + public column_name(i?: number): Column_nameContext[] | Column_nameContext | null { + if (i === undefined) { + return this.getRuleContexts(Column_nameContext); } + + return this.getRuleContext(i, Column_nameContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPublication_relation_expr) { - return visitor.visitPublication_relation_expr(this); - } else { - return visitor.visitChildren(this); - } + public KW_USING(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_USING, 0)!; } -} - - -export class Relation_expr_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public relation_expr(): Relation_exprContext[]; - public relation_expr(i: number): Relation_exprContext | null; - public relation_expr(i?: number): Relation_exprContext[] | Relation_exprContext | null { + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { if (i === undefined) { - return this.getRuleContexts(Relation_exprContext); + return this.getRuleContexts(ColidContext); } - return this.getRuleContext(i, Relation_exprContext); + return this.getRuleContext(i, ColidContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_relation_expr_list; + return PostgreSqlParser.RULE_cycle_cluase; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRelation_expr_list) { - listener.enterRelation_expr_list(this); + if(listener.enterCycle_cluase) { + listener.enterCycle_cluase(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRelation_expr_list) { - listener.exitRelation_expr_list(this); + if(listener.exitCycle_cluase) { + listener.exitCycle_cluase(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRelation_expr_list) { - return visitor.visitRelation_expr_list(this); + if (visitor.visitCycle_cluase) { + return visitor.visitCycle_cluase(this); } else { return visitor.visitChildren(this); } @@ -100309,44 +75997,38 @@ export class Relation_expr_listContext extends antlr.ParserRuleContext { } -export class Publication_relation_expr_listContext extends antlr.ParserRuleContext { +export class Into_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public publication_relation_expr(): Publication_relation_exprContext[]; - public publication_relation_expr(i: number): Publication_relation_exprContext | null; - public publication_relation_expr(i?: number): Publication_relation_exprContext[] | Publication_relation_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(Publication_relation_exprContext); - } - - return this.getRuleContext(i, Publication_relation_exprContext); + public KW_INTO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INTO, 0)!; } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public opttempTableName(): OpttempTableNameContext | null { + return this.getRuleContext(0, OpttempTableNameContext); + } + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); + } + public KW_STRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STRICT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_publication_relation_expr_list; + return PostgreSqlParser.RULE_into_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPublication_relation_expr_list) { - listener.enterPublication_relation_expr_list(this); + if(listener.enterInto_clause) { + listener.enterInto_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPublication_relation_expr_list) { - listener.exitPublication_relation_expr_list(this); + if(listener.exitInto_clause) { + listener.exitInto_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPublication_relation_expr_list) { - return visitor.visitPublication_relation_expr_list(this); + if (visitor.visitInto_clause) { + return visitor.visitInto_clause(this); } else { return visitor.visitChildren(this); } @@ -100354,35 +76036,47 @@ export class Publication_relation_expr_listContext extends antlr.ParserRuleConte } -export class Relation_expr_opt_aliasContext extends antlr.ParserRuleContext { +export class OpttempTableNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public relation_expr(): Relation_exprContext { - return this.getRuleContext(0, Relation_exprContext)!; + public table_name_create(): Table_name_createContext { + return this.getRuleContext(0, Table_name_createContext)!; } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_TEMPORARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public KW_TEMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMP, 0); + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCAL, 0); + } + public KW_GLOBAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GLOBAL, 0); + } + public KW_UNLOGGED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_relation_expr_opt_alias; + return PostgreSqlParser.RULE_opttempTableName; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRelation_expr_opt_alias) { - listener.enterRelation_expr_opt_alias(this); + if(listener.enterOpttempTableName) { + listener.enterOpttempTableName(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRelation_expr_opt_alias) { - listener.exitRelation_expr_opt_alias(this); + if(listener.exitOpttempTableName) { + listener.exitOpttempTableName(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRelation_expr_opt_alias) { - return visitor.visitRelation_expr_opt_alias(this); + if (visitor.visitOpttempTableName) { + return visitor.visitOpttempTableName(this); } else { return visitor.visitChildren(this); } @@ -100390,44 +76084,35 @@ export class Relation_expr_opt_aliasContext extends antlr.ParserRuleContext { } -export class Tablesample_clauseContext extends antlr.ParserRuleContext { +export class Distinct_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TABLESAMPLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TABLESAMPLE, 0)!; - } - public function_name(): Function_nameContext { - return this.getRuleContext(0, Function_nameContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; + public KW_DISTINCT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } - public opt_repeatable_clause(): Opt_repeatable_clauseContext | null { - return this.getRuleContext(0, Opt_repeatable_clauseContext); + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tablesample_clause; + return PostgreSqlParser.RULE_distinct_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTablesample_clause) { - listener.enterTablesample_clause(this); + if(listener.enterDistinct_clause) { + listener.enterDistinct_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTablesample_clause) { - listener.exitTablesample_clause(this); + if(listener.exitDistinct_clause) { + listener.exitDistinct_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTablesample_clause) { - return visitor.visitTablesample_clause(this); + if (visitor.visitDistinct_clause) { + return visitor.visitDistinct_clause(this); } else { return visitor.visitChildren(this); } @@ -100435,38 +76120,50 @@ export class Tablesample_clauseContext extends antlr.ParserRuleContext { } -export class Opt_repeatable_clauseContext extends antlr.ParserRuleContext { +export class Sort_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_REPEATABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_REPEATABLE, 0)!; + public KW_ORDER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ORDER, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_BY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BY, 0)!; } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public sortby(): SortbyContext[]; + public sortby(i: number): SortbyContext | null; + public sortby(i?: number): SortbyContext[] | SortbyContext | null { + if (i === undefined) { + return this.getRuleContexts(SortbyContext); + } + + return this.getRuleContext(i, SortbyContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_repeatable_clause; + return PostgreSqlParser.RULE_sort_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_repeatable_clause) { - listener.enterOpt_repeatable_clause(this); + if(listener.enterSort_clause) { + listener.enterSort_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_repeatable_clause) { - listener.exitOpt_repeatable_clause(this); + if(listener.exitSort_clause) { + listener.exitSort_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_repeatable_clause) { - return visitor.visitOpt_repeatable_clause(this); + if (visitor.visitSort_clause) { + return visitor.visitSort_clause(this); } else { return visitor.visitChildren(this); } @@ -100474,47 +76171,50 @@ export class Opt_repeatable_clauseContext extends antlr.ParserRuleContext { } -export class Func_tableContext extends antlr.ParserRuleContext { +export class SortbyContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_expr_windowless(): Func_expr_windowlessContext | null { - return this.getRuleContext(0, Func_expr_windowlessContext); + public column_expr_noparen(): Column_expr_noparenContext { + return this.getRuleContext(0, Column_expr_noparenContext)!; } - public opt_ordinality(): Opt_ordinalityContext | null { - return this.getRuleContext(0, Opt_ordinalityContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWS, 0); + public qual_all_op(): Qual_all_opContext | null { + return this.getRuleContext(0, Qual_all_opContext); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); + public KW_NULLS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULLS, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_ASC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASC, 0); + } + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DESC, 0); } - public rowsfrom_list(): Rowsfrom_listContext | null { - return this.getRuleContext(0, Rowsfrom_listContext); + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FIRST, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LAST, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_func_table; + return PostgreSqlParser.RULE_sortby; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFunc_table) { - listener.enterFunc_table(this); + if(listener.enterSortby) { + listener.enterSortby(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFunc_table) { - listener.exitFunc_table(this); + if(listener.exitSortby) { + listener.exitSortby(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_table) { - return visitor.visitFunc_table(this); + if (visitor.visitSortby) { + return visitor.visitSortby(this); } else { return visitor.visitChildren(this); } @@ -100522,32 +76222,35 @@ export class Func_tableContext extends antlr.ParserRuleContext { } -export class Rowsfrom_itemContext extends antlr.ParserRuleContext { +export class Select_limitContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public func_expr_windowless(): Func_expr_windowlessContext { - return this.getRuleContext(0, Func_expr_windowlessContext)!; + public offset_clause(): Offset_clauseContext | null { + return this.getRuleContext(0, Offset_clauseContext); } - public opt_col_def_list(): Opt_col_def_listContext | null { - return this.getRuleContext(0, Opt_col_def_listContext); + public fetch_clause(): Fetch_clauseContext | null { + return this.getRuleContext(0, Fetch_clauseContext); + } + public limit_clause(): Limit_clauseContext | null { + return this.getRuleContext(0, Limit_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsfrom_item; + return PostgreSqlParser.RULE_select_limit; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsfrom_item) { - listener.enterRowsfrom_item(this); + if(listener.enterSelect_limit) { + listener.enterSelect_limit(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsfrom_item) { - listener.exitRowsfrom_item(this); + if(listener.exitSelect_limit) { + listener.exitSelect_limit(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsfrom_item) { - return visitor.visitRowsfrom_item(this); + if (visitor.visitSelect_limit) { + return visitor.visitSelect_limit(this); } else { return visitor.visitChildren(this); } @@ -100555,44 +76258,44 @@ export class Rowsfrom_itemContext extends antlr.ParserRuleContext { } -export class Rowsfrom_listContext extends antlr.ParserRuleContext { +export class Limit_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public rowsfrom_item(): Rowsfrom_itemContext[]; - public rowsfrom_item(i: number): Rowsfrom_itemContext | null; - public rowsfrom_item(i?: number): Rowsfrom_itemContext[] | Rowsfrom_itemContext | null { + public KW_LIMIT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_LIMIT, 0)!; + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(Rowsfrom_itemContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, Rowsfrom_itemContext); + return this.getRuleContext(i, ExpressionContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); + } + public COMMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COMMA, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_rowsfrom_list; + return PostgreSqlParser.RULE_limit_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRowsfrom_list) { - listener.enterRowsfrom_list(this); + if(listener.enterLimit_clause) { + listener.enterLimit_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRowsfrom_list) { - listener.exitRowsfrom_list(this); + if(listener.exitLimit_clause) { + listener.exitLimit_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRowsfrom_list) { - return visitor.visitRowsfrom_list(this); + if (visitor.visitLimit_clause) { + return visitor.visitLimit_clause(this); } else { return visitor.visitChildren(this); } @@ -100600,38 +76303,53 @@ export class Rowsfrom_listContext extends antlr.ParserRuleContext { } -export class Opt_col_def_listContext extends antlr.ParserRuleContext { +export class Fetch_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AS, 0)!; + public KW_FETCH(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FETCH, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FIRST, 0); } - public tablefuncelementlist(): TablefuncelementlistContext { - return this.getRuleContext(0, TablefuncelementlistContext)!; + public KW_NEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NEXT, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); + } + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public KW_TIES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIES, 0); + } + public select_fetch_first_value(): Select_fetch_first_valueContext | null { + return this.getRuleContext(0, Select_fetch_first_valueContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_col_def_list; + return PostgreSqlParser.RULE_fetch_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_col_def_list) { - listener.enterOpt_col_def_list(this); + if(listener.enterFetch_clause) { + listener.enterFetch_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_col_def_list) { - listener.exitOpt_col_def_list(this); + if(listener.exitFetch_clause) { + listener.exitFetch_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_col_def_list) { - return visitor.visitOpt_col_def_list(this); + if (visitor.visitFetch_clause) { + return visitor.visitFetch_clause(this); } else { return visitor.visitChildren(this); } @@ -100639,32 +76357,41 @@ export class Opt_col_def_listContext extends antlr.ParserRuleContext { } -export class Opt_ordinalityContext extends antlr.ParserRuleContext { +export class Offset_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITH, 0)!; + public KW_OFFSET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_OFFSET, 0)!; + } + public select_fetch_first_value(): Select_fetch_first_valueContext | null { + return this.getRuleContext(0, Select_fetch_first_valueContext); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); } - public KW_ORDINALITY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ORDINALITY, 0)!; + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_ordinality; + return PostgreSqlParser.RULE_offset_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_ordinality) { - listener.enterOpt_ordinality(this); + if(listener.enterOffset_clause) { + listener.enterOffset_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_ordinality) { - listener.exitOpt_ordinality(this); + if(listener.exitOffset_clause) { + listener.exitOffset_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_ordinality) { - return visitor.visitOpt_ordinality(this); + if (visitor.visitOffset_clause) { + return visitor.visitOffset_clause(this); } else { return visitor.visitChildren(this); } @@ -100672,32 +76399,41 @@ export class Opt_ordinalityContext extends antlr.ParserRuleContext { } -export class Where_clauseContext extends antlr.ParserRuleContext { +export class Select_fetch_first_valueContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WHERE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHERE, 0)!; + public PLUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLUS, 0); } - public column_expr_noparen(): Column_expr_noparenContext { - return this.getRuleContext(0, Column_expr_noparenContext)!; + public MINUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.MINUS, 0); + } + public Integral(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Integral, 0); + } + public Numeric(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Numeric, 0); + } + public primaryExpression(): PrimaryExpressionContext | null { + return this.getRuleContext(0, PrimaryExpressionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_where_clause; + return PostgreSqlParser.RULE_select_fetch_first_value; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWhere_clause) { - listener.enterWhere_clause(this); + if(listener.enterSelect_fetch_first_value) { + listener.enterSelect_fetch_first_value(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWhere_clause) { - listener.exitWhere_clause(this); + if(listener.exitSelect_fetch_first_value) { + listener.exitSelect_fetch_first_value(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWhere_clause) { - return visitor.visitWhere_clause(this); + if (visitor.visitSelect_fetch_first_value) { + return visitor.visitSelect_fetch_first_value(this); } else { return visitor.visitChildren(this); } @@ -100705,41 +76441,41 @@ export class Where_clauseContext extends antlr.ParserRuleContext { } -export class Where_or_current_clauseContext extends antlr.ParserRuleContext { +export class Group_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WHERE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHERE, 0)!; + public KW_GROUP(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + public KW_BY(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BY, 0)!; } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); + public group_by_list(): Group_by_listContext { + return this.getRuleContext(0, Group_by_listContext)!; } - public cursor_name(): Cursor_nameContext | null { - return this.getRuleContext(0, Cursor_nameContext); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_where_or_current_clause; + return PostgreSqlParser.RULE_group_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWhere_or_current_clause) { - listener.enterWhere_or_current_clause(this); + if(listener.enterGroup_clause) { + listener.enterGroup_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWhere_or_current_clause) { - listener.exitWhere_or_current_clause(this); + if(listener.exitGroup_clause) { + listener.exitGroup_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWhere_or_current_clause) { - return visitor.visitWhere_or_current_clause(this); + if (visitor.visitGroup_clause) { + return visitor.visitGroup_clause(this); } else { return visitor.visitChildren(this); } @@ -100747,29 +76483,44 @@ export class Where_or_current_clauseContext extends antlr.ParserRuleContext { } -export class OpttablefuncelementlistContext extends antlr.ParserRuleContext { +export class Group_by_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tablefuncelementlist(): TablefuncelementlistContext { - return this.getRuleContext(0, TablefuncelementlistContext)!; + public group_by_item(): Group_by_itemContext[]; + public group_by_item(i: number): Group_by_itemContext | null; + public group_by_item(i?: number): Group_by_itemContext[] | Group_by_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Group_by_itemContext); + } + + return this.getRuleContext(i, Group_by_itemContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opttablefuncelementlist; + return PostgreSqlParser.RULE_group_by_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpttablefuncelementlist) { - listener.enterOpttablefuncelementlist(this); + if(listener.enterGroup_by_list) { + listener.enterGroup_by_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpttablefuncelementlist) { - listener.exitOpttablefuncelementlist(this); + if(listener.exitGroup_by_list) { + listener.exitGroup_by_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpttablefuncelementlist) { - return visitor.visitOpttablefuncelementlist(this); + if (visitor.visitGroup_by_list) { + return visitor.visitGroup_by_list(this); } else { return visitor.visitChildren(this); } @@ -100777,18 +76528,30 @@ export class OpttablefuncelementlistContext extends antlr.ParserRuleContext { } -export class TablefuncelementlistContext extends antlr.ParserRuleContext { +export class Group_by_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tablefuncelement(): TablefuncelementContext[]; - public tablefuncelement(i: number): TablefuncelementContext | null; - public tablefuncelement(i?: number): TablefuncelementContext[] | TablefuncelementContext | null { + public column_expr_noparen(): Column_expr_noparenContext[]; + public column_expr_noparen(i: number): Column_expr_noparenContext | null; + public column_expr_noparen(i?: number): Column_expr_noparenContext[] | Column_expr_noparenContext | null { if (i === undefined) { - return this.getRuleContexts(TablefuncelementContext); + return this.getRuleContexts(Column_expr_noparenContext); } - return this.getRuleContext(i, TablefuncelementContext); + return this.getRuleContext(i, Column_expr_noparenContext); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public KW_CUBE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CUBE, 0); + } + public KW_ROLLUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLLUP, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -100799,22 +76562,31 @@ export class TablefuncelementlistContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public KW_GROUPING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUPING, 0); + } + public KW_SETS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SETS, 0); + } + public group_by_list(): Group_by_listContext | null { + return this.getRuleContext(0, Group_by_listContext); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tablefuncelementlist; + return PostgreSqlParser.RULE_group_by_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTablefuncelementlist) { - listener.enterTablefuncelementlist(this); + if(listener.enterGroup_by_item) { + listener.enterGroup_by_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTablefuncelementlist) { - listener.exitTablefuncelementlist(this); + if(listener.exitGroup_by_item) { + listener.exitGroup_by_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTablefuncelementlist) { - return visitor.visitTablefuncelementlist(this); + if (visitor.visitGroup_by_item) { + return visitor.visitGroup_by_item(this); } else { return visitor.visitChildren(this); } @@ -100822,35 +76594,122 @@ export class TablefuncelementlistContext extends antlr.ParserRuleContext { } -export class TablefuncelementContext extends antlr.ParserRuleContext { +export class For_locking_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public KW_FOR(): antlr.TerminalNode[]; + public KW_FOR(i: number): antlr.TerminalNode | null; + public KW_FOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_FOR); + } else { + return this.getToken(PostgreSqlParser.KW_FOR, i); + } } - public typename(): TypenameContext { - return this.getRuleContext(0, TypenameContext)!; + public KW_UPDATE(): antlr.TerminalNode[]; + public KW_UPDATE(i: number): antlr.TerminalNode | null; + public KW_UPDATE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_UPDATE); + } else { + return this.getToken(PostgreSqlParser.KW_UPDATE, i); + } } - public opt_collate_clause(): Opt_collate_clauseContext | null { - return this.getRuleContext(0, Opt_collate_clauseContext); + public KW_SHARE(): antlr.TerminalNode[]; + public KW_SHARE(i: number): antlr.TerminalNode | null; + public KW_SHARE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_SHARE); + } else { + return this.getToken(PostgreSqlParser.KW_SHARE, i); + } + } + public KW_OF(): antlr.TerminalNode[]; + public KW_OF(i: number): antlr.TerminalNode | null; + public KW_OF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_OF); + } else { + return this.getToken(PostgreSqlParser.KW_OF, i); + } + } + public qualified_name_list(): Qualified_name_listContext[]; + public qualified_name_list(i: number): Qualified_name_listContext | null; + public qualified_name_list(i?: number): Qualified_name_listContext[] | Qualified_name_listContext | null { + if (i === undefined) { + return this.getRuleContexts(Qualified_name_listContext); + } + + return this.getRuleContext(i, Qualified_name_listContext); + } + public KW_NOWAIT(): antlr.TerminalNode[]; + public KW_NOWAIT(i: number): antlr.TerminalNode | null; + public KW_NOWAIT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NOWAIT); + } else { + return this.getToken(PostgreSqlParser.KW_NOWAIT, i); + } + } + public KW_SKIP(): antlr.TerminalNode[]; + public KW_SKIP(i: number): antlr.TerminalNode | null; + public KW_SKIP(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_SKIP); + } else { + return this.getToken(PostgreSqlParser.KW_SKIP, i); + } + } + public KW_LOCKED(): antlr.TerminalNode[]; + public KW_LOCKED(i: number): antlr.TerminalNode | null; + public KW_LOCKED(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_LOCKED); + } else { + return this.getToken(PostgreSqlParser.KW_LOCKED, i); + } + } + public KW_NO(): antlr.TerminalNode[]; + public KW_NO(i: number): antlr.TerminalNode | null; + public KW_NO(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NO); + } else { + return this.getToken(PostgreSqlParser.KW_NO, i); + } + } + public KW_KEY(): antlr.TerminalNode[]; + public KW_KEY(i: number): antlr.TerminalNode | null; + public KW_KEY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_KEY); + } else { + return this.getToken(PostgreSqlParser.KW_KEY, i); + } + } + public KW_READ(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_READ, 0); + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_tablefuncelement; + return PostgreSqlParser.RULE_for_locking_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTablefuncelement) { - listener.enterTablefuncelement(this); + if(listener.enterFor_locking_clause) { + listener.enterFor_locking_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTablefuncelement) { - listener.exitTablefuncelement(this); + if(listener.exitFor_locking_clause) { + listener.exitFor_locking_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTablefuncelement) { - return visitor.visitTablefuncelement(this); + if (visitor.visitFor_locking_clause) { + return visitor.visitFor_locking_clause(this); } else { return visitor.visitChildren(this); } @@ -100858,68 +76717,80 @@ export class TablefuncelementContext extends antlr.ParserRuleContext { } -export class XmltableContext extends antlr.ParserRuleContext { +export class Values_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_XMLTABLE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_XMLTABLE, 0)!; + public KW_VALUES(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_VALUES, 0)!; } - public OPEN_PAREN(): antlr.TerminalNode[]; - public OPEN_PAREN(i: number): antlr.TerminalNode | null; - public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.OPEN_PAREN); - } else { - return this.getToken(PostgreSqlParser.OPEN_PAREN, i); - } + public execute_param_clause(): Execute_param_clauseContext[]; + public execute_param_clause(i: number): Execute_param_clauseContext | null; + public execute_param_clause(i?: number): Execute_param_clauseContext[] | Execute_param_clauseContext | null { + if (i === undefined) { + return this.getRuleContexts(Execute_param_clauseContext); + } + + return this.getRuleContext(i, Execute_param_clauseContext); } - public CLOSE_PAREN(): antlr.TerminalNode[]; - public CLOSE_PAREN(i: number): antlr.TerminalNode | null; - public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.CLOSE_PAREN); + return this.getTokens(PostgreSqlParser.COMMA); } else { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); + return this.getToken(PostgreSqlParser.COMMA, i); } } - public c_expr(): C_exprContext | null { - return this.getRuleContext(0, C_exprContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_values_clause; } - public xmlexists_argument(): Xmlexists_argumentContext | null { - return this.getRuleContext(0, Xmlexists_argumentContext); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterValues_clause) { + listener.enterValues_clause(this); + } } - public KW_COLUMNS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLUMNS, 0); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitValues_clause) { + listener.exitValues_clause(this); + } } - public xmltable_column_list(): Xmltable_column_listContext | null { - return this.getRuleContext(0, Xmltable_column_listContext); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitValues_clause) { + return visitor.visitValues_clause(this); + } else { + return visitor.visitChildren(this); + } } - public KW_XMLNAMESPACES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLNAMESPACES, 0); +} + + +export class From_clauseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public xml_namespace_list(): Xml_namespace_listContext | null { - return this.getRuleContext(0, Xml_namespace_listContext); + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); + public from_list(): From_listContext { + return this.getRuleContext(0, From_listContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xmltable; + return PostgreSqlParser.RULE_from_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXmltable) { - listener.enterXmltable(this); + if(listener.enterFrom_clause) { + listener.enterFrom_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXmltable) { - listener.exitXmltable(this); + if(listener.exitFrom_clause) { + listener.exitFrom_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXmltable) { - return visitor.visitXmltable(this); + if (visitor.visitFrom_clause) { + return visitor.visitFrom_clause(this); } else { return visitor.visitChildren(this); } @@ -100927,18 +76798,18 @@ export class XmltableContext extends antlr.ParserRuleContext { } -export class Xmltable_column_listContext extends antlr.ParserRuleContext { +export class From_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public xmltable_column_el(): Xmltable_column_elContext[]; - public xmltable_column_el(i: number): Xmltable_column_elContext | null; - public xmltable_column_el(i?: number): Xmltable_column_elContext[] | Xmltable_column_elContext | null { + public table_ref(): Table_refContext[]; + public table_ref(i: number): Table_refContext | null; + public table_ref(i?: number): Table_refContext[] | Table_refContext | null { if (i === undefined) { - return this.getRuleContexts(Xmltable_column_elContext); + return this.getRuleContexts(Table_refContext); } - return this.getRuleContext(i, Xmltable_column_elContext); + return this.getRuleContext(i, Table_refContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -100950,21 +76821,21 @@ export class Xmltable_column_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xmltable_column_list; + return PostgreSqlParser.RULE_from_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXmltable_column_list) { - listener.enterXmltable_column_list(this); + if(listener.enterFrom_list) { + listener.enterFrom_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXmltable_column_list) { - listener.exitXmltable_column_list(this); + if(listener.exitFrom_list) { + listener.exitFrom_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXmltable_column_list) { - return visitor.visitXmltable_column_list(this); + if (visitor.visitFrom_list) { + return visitor.visitFrom_list(this); } else { return visitor.visitChildren(this); } @@ -100972,77 +76843,125 @@ export class Xmltable_column_listContext extends antlr.ParserRuleContext { } -export class Xmltable_column_elContext extends antlr.ParserRuleContext { +export class Table_refContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); + public table_ref(): Table_refContext[]; + public table_ref(i: number): Table_refContext | null; + public table_ref(i?: number): Table_refContext[] | Table_refContext | null { + if (i === undefined) { + return this.getRuleContexts(Table_refContext); + } + + return this.getRuleContext(i, Table_refContext); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_ORDINALITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ORDINALITY, 0); + public KW_CROSS(): antlr.TerminalNode[]; + public KW_CROSS(i: number): antlr.TerminalNode | null; + public KW_CROSS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_CROSS); + } else { + return this.getToken(PostgreSqlParser.KW_CROSS, i); + } } - public xmltable_column_option_list(): Xmltable_column_option_listContext | null { - return this.getRuleContext(0, Xmltable_column_option_listContext); + public KW_JOIN(): antlr.TerminalNode[]; + public KW_JOIN(i: number): antlr.TerminalNode | null; + public KW_JOIN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_JOIN); + } else { + return this.getToken(PostgreSqlParser.KW_JOIN, i); + } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xmltable_column_el; + public KW_NATURAL(): antlr.TerminalNode[]; + public KW_NATURAL(i: number): antlr.TerminalNode | null; + public KW_NATURAL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NATURAL); + } else { + return this.getToken(PostgreSqlParser.KW_NATURAL, i); + } } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXmltable_column_el) { - listener.enterXmltable_column_el(this); + public join_qual(): Join_qualContext[]; + public join_qual(i: number): Join_qualContext | null; + public join_qual(i?: number): Join_qualContext[] | Join_qualContext | null { + if (i === undefined) { + return this.getRuleContexts(Join_qualContext); } + + return this.getRuleContext(i, Join_qualContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXmltable_column_el) { - listener.exitXmltable_column_el(this); - } + public relation_expr(): Relation_exprContext | null { + return this.getRuleContext(0, Relation_exprContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXmltable_column_el) { - return visitor.visitXmltable_column_el(this); - } else { - return visitor.visitChildren(this); - } + public xmltable(): XmltableContext | null { + return this.getRuleContext(0, XmltableContext); } -} - - -export class Xmltable_column_option_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public func_table(): Func_tableContext | null { + return this.getRuleContext(0, Func_tableContext); } - public xmltable_column_option_el(): Xmltable_column_option_elContext[]; - public xmltable_column_option_el(i: number): Xmltable_column_option_elContext | null; - public xmltable_column_option_el(i?: number): Xmltable_column_option_elContext[] | Xmltable_column_option_elContext | null { + public select_with_parens(): Select_with_parensContext | null { + return this.getRuleContext(0, Select_with_parensContext); + } + public alias_clause(): Alias_clauseContext | null { + return this.getRuleContext(0, Alias_clauseContext); + } + public tablesample_clause(): Tablesample_clauseContext | null { + return this.getRuleContext(0, Tablesample_clauseContext); + } + public KW_LATERAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LATERAL, 0); + } + public view_name(): View_nameContext | null { + return this.getRuleContext(0, View_nameContext); + } + public join_type(): Join_typeContext[]; + public join_type(i: number): Join_typeContext | null; + public join_type(i?: number): Join_typeContext[] | Join_typeContext | null { if (i === undefined) { - return this.getRuleContexts(Xmltable_column_option_elContext); + return this.getRuleContexts(Join_typeContext); } - return this.getRuleContext(i, Xmltable_column_option_elContext); + return this.getRuleContext(i, Join_typeContext); + } + public func_alias_clause(): Func_alias_clauseContext | null { + return this.getRuleContext(0, Func_alias_clauseContext); + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); + } + public STAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.STAR, 0); + } + public column_list(): Column_listContext | null { + return this.getRuleContext(0, Column_listContext); + } + public where_clause(): Where_clauseContext | null { + return this.getRuleContext(0, Where_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xmltable_column_option_list; + return PostgreSqlParser.RULE_table_ref; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXmltable_column_option_list) { - listener.enterXmltable_column_option_list(this); + if(listener.enterTable_ref) { + listener.enterTable_ref(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXmltable_column_option_list) { - listener.exitXmltable_column_option_list(this); + if(listener.exitTable_ref) { + listener.exitTable_ref(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXmltable_column_option_list) { - return visitor.visitXmltable_column_option_list(this); + if (visitor.visitTable_ref) { + return visitor.visitTable_ref(this); } else { return visitor.visitChildren(this); } @@ -101050,41 +76969,41 @@ export class Xmltable_column_option_listContext extends antlr.ParserRuleContext } -export class Xmltable_column_option_elContext extends antlr.ParserRuleContext { +export class Alias_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public name_list(): Name_listContext | null { + return this.getRuleContext(0, Name_listContext); } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xmltable_column_option_el; + return PostgreSqlParser.RULE_alias_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXmltable_column_option_el) { - listener.enterXmltable_column_option_el(this); + if(listener.enterAlias_clause) { + listener.enterAlias_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXmltable_column_option_el) { - listener.exitXmltable_column_option_el(this); + if(listener.exitAlias_clause) { + listener.exitAlias_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXmltable_column_option_el) { - return visitor.visitXmltable_column_option_el(this); + if (visitor.visitAlias_clause) { + return visitor.visitAlias_clause(this); } else { return visitor.visitChildren(this); } @@ -101092,44 +77011,44 @@ export class Xmltable_column_option_elContext extends antlr.ParserRuleContext { } -export class Xml_namespace_listContext extends antlr.ParserRuleContext { +export class Func_alias_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public xml_namespace_el(): Xml_namespace_elContext[]; - public xml_namespace_el(i: number): Xml_namespace_elContext | null; - public xml_namespace_el(i?: number): Xml_namespace_elContext[] | Xml_namespace_elContext | null { - if (i === undefined) { - return this.getRuleContexts(Xml_namespace_elContext); - } - - return this.getRuleContext(i, Xml_namespace_elContext); + public alias_clause(): Alias_clauseContext | null { + return this.getRuleContext(0, Alias_clauseContext); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public tablefuncelementlist(): TablefuncelementlistContext | null { + return this.getRuleContext(0, TablefuncelementlistContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xml_namespace_list; + return PostgreSqlParser.RULE_func_alias_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXml_namespace_list) { - listener.enterXml_namespace_list(this); + if(listener.enterFunc_alias_clause) { + listener.enterFunc_alias_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXml_namespace_list) { - listener.exitXml_namespace_list(this); + if(listener.exitFunc_alias_clause) { + listener.exitFunc_alias_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXml_namespace_list) { - return visitor.visitXml_namespace_list(this); + if (visitor.visitFunc_alias_clause) { + return visitor.visitFunc_alias_clause(this); } else { return visitor.visitChildren(this); } @@ -101137,38 +77056,41 @@ export class Xml_namespace_listContext extends antlr.ParserRuleContext { } -export class Xml_namespace_elContext extends antlr.ParserRuleContext { +export class Join_typeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public b_expr(): B_exprContext { - return this.getRuleContext(0, B_exprContext)!; + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FULL, 0); + } + public KW_LEFT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEFT, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public KW_RIGHT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RIGHT, 0); } - public collabel(): CollabelContext | null { - return this.getRuleContext(0, CollabelContext); + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INNER, 0); } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OUTER, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xml_namespace_el; + return PostgreSqlParser.RULE_join_type; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXml_namespace_el) { - listener.enterXml_namespace_el(this); + if(listener.enterJoin_type) { + listener.enterJoin_type(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXml_namespace_el) { - listener.exitXml_namespace_el(this); + if(listener.exitJoin_type) { + listener.exitJoin_type(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXml_namespace_el) { - return visitor.visitXml_namespace_el(this); + if (visitor.visitJoin_type) { + return visitor.visitJoin_type(this); } else { return visitor.visitChildren(this); } @@ -101176,59 +77098,38 @@ export class Xml_namespace_elContext extends antlr.ParserRuleContext { } -export class TypenameContext extends antlr.ParserRuleContext { +export class Join_qualContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public simpletypename(): SimpletypenameContext | null { - return this.getRuleContext(0, SimpletypenameContext); - } - public opt_array_bounds(): Opt_array_boundsContext | null { - return this.getRuleContext(0, Opt_array_boundsContext); - } - public KW_ARRAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ARRAY, 0); - } - public KW_SETOF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SETOF, 0); - } - public OPEN_BRACKET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_BRACKET, 0); - } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } - public CLOSE_BRACKET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_BRACKET, 0); - } - public qualified_name(): Qualified_nameContext | null { - return this.getRuleContext(0, Qualified_nameContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } - public PERCENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PERCENT, 0); + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } - public KW_ROWTYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWTYPE, 0); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_typename; + return PostgreSqlParser.RULE_join_qual; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTypename) { - listener.enterTypename(this); + if(listener.enterJoin_qual) { + listener.enterJoin_qual(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTypename) { - listener.exitTypename(this); + if(listener.exitJoin_qual) { + listener.exitJoin_qual(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTypename) { - return visitor.visitTypename(this); + if (visitor.visitJoin_qual) { + return visitor.visitJoin_qual(this); } else { return visitor.visitChildren(this); } @@ -101236,53 +77137,53 @@ export class TypenameContext extends antlr.ParserRuleContext { } -export class Opt_array_boundsContext extends antlr.ParserRuleContext { +export class Relation_exprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_BRACKET(): antlr.TerminalNode[]; - public OPEN_BRACKET(i: number): antlr.TerminalNode | null; - public OPEN_BRACKET(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.OPEN_BRACKET); - } else { - return this.getToken(PostgreSqlParser.OPEN_BRACKET, i); - } + public truncate_table(): Truncate_tableContext | null { + return this.getRuleContext(0, Truncate_tableContext); } - public CLOSE_BRACKET(): antlr.TerminalNode[]; - public CLOSE_BRACKET(i: number): antlr.TerminalNode | null; - public CLOSE_BRACKET(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.CLOSE_BRACKET); - } else { - return this.getToken(PostgreSqlParser.CLOSE_BRACKET, i); - } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); } - public iconst(): IconstContext[]; - public iconst(i: number): IconstContext | null; - public iconst(i?: number): IconstContext[] | IconstContext | null { - if (i === undefined) { - return this.getRuleContexts(IconstContext); - } - - return this.getRuleContext(i, IconstContext); + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + } + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); + } + public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_array_bounds; + return PostgreSqlParser.RULE_relation_expr; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_array_bounds) { - listener.enterOpt_array_bounds(this); + if(listener.enterRelation_expr) { + listener.enterRelation_expr(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_array_bounds) { - listener.exitOpt_array_bounds(this); + if(listener.exitRelation_expr) { + listener.exitRelation_expr(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_array_bounds) { - return visitor.visitOpt_array_bounds(this); + if (visitor.visitRelation_expr) { + return visitor.visitRelation_expr(this); } else { return visitor.visitChildren(this); } @@ -101290,56 +77191,65 @@ export class Opt_array_boundsContext extends antlr.ParserRuleContext { } -export class SimpletypenameContext extends antlr.ParserRuleContext { +export class Publication_relation_exprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public generictype(): GenerictypeContext | null { - return this.getRuleContext(0, GenerictypeContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public numeric(): NumericContext | null { - return this.getRuleContext(0, NumericContext); + public truncate_table(): Truncate_tableContext | null { + return this.getRuleContext(0, Truncate_tableContext); } - public bit(): BitContext | null { - return this.getRuleContext(0, BitContext); + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } - public character(): CharacterContext | null { - return this.getRuleContext(0, CharacterContext); + public where_clause(): Where_clauseContext | null { + return this.getRuleContext(0, Where_clauseContext); } - public constdatetime(): ConstdatetimeContext | null { - return this.getRuleContext(0, ConstdatetimeContext); + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); } - public constinterval(): ConstintervalContext | null { - return this.getRuleContext(0, ConstintervalContext); + public table_name(): Table_nameContext | null { + return this.getRuleContext(0, Table_nameContext); } public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public opt_interval(): Opt_intervalContext | null { - return this.getRuleContext(0, Opt_intervalContext); + public KW_TABLES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLES, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); + } + public schema_name(): Schema_nameContext | null { + return this.getRuleContext(0, Schema_nameContext); + } + public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_simpletypename; + return PostgreSqlParser.RULE_publication_relation_expr; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSimpletypename) { - listener.enterSimpletypename(this); + if(listener.enterPublication_relation_expr) { + listener.enterPublication_relation_expr(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSimpletypename) { - listener.exitSimpletypename(this); + if(listener.exitPublication_relation_expr) { + listener.exitPublication_relation_expr(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSimpletypename) { - return visitor.visitSimpletypename(this); + if (visitor.visitPublication_relation_expr) { + return visitor.visitPublication_relation_expr(this); } else { return visitor.visitChildren(this); } @@ -101347,38 +77257,44 @@ export class SimpletypenameContext extends antlr.ParserRuleContext { } -export class ConsttypenameContext extends antlr.ParserRuleContext { +export class Relation_expr_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public numeric(): NumericContext | null { - return this.getRuleContext(0, NumericContext); - } - public constbit(): ConstbitContext | null { - return this.getRuleContext(0, ConstbitContext); - } - public constcharacter(): ConstcharacterContext | null { - return this.getRuleContext(0, ConstcharacterContext); + public relation_expr(): Relation_exprContext[]; + public relation_expr(i: number): Relation_exprContext | null; + public relation_expr(i?: number): Relation_exprContext[] | Relation_exprContext | null { + if (i === undefined) { + return this.getRuleContexts(Relation_exprContext); + } + + return this.getRuleContext(i, Relation_exprContext); } - public constdatetime(): ConstdatetimeContext | null { - return this.getRuleContext(0, ConstdatetimeContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_consttypename; + return PostgreSqlParser.RULE_relation_expr_list; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConsttypename) { - listener.enterConsttypename(this); + if(listener.enterRelation_expr_list) { + listener.enterRelation_expr_list(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConsttypename) { - listener.exitConsttypename(this); + if(listener.exitRelation_expr_list) { + listener.exitRelation_expr_list(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConsttypename) { - return visitor.visitConsttypename(this); + if (visitor.visitRelation_expr_list) { + return visitor.visitRelation_expr_list(this); } else { return visitor.visitChildren(this); } @@ -101386,35 +77302,35 @@ export class ConsttypenameContext extends antlr.ParserRuleContext { } -export class GenerictypeContext extends antlr.ParserRuleContext { +export class Relation_expr_opt_aliasContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public type_function_name(): Type_function_nameContext { - return this.getRuleContext(0, Type_function_nameContext)!; + public relation_expr(): Relation_exprContext { + return this.getRuleContext(0, Relation_exprContext)!; } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public opt_type_modifiers(): Opt_type_modifiersContext | null { - return this.getRuleContext(0, Opt_type_modifiersContext); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_generictype; + return PostgreSqlParser.RULE_relation_expr_opt_alias; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGenerictype) { - listener.enterGenerictype(this); + if(listener.enterRelation_expr_opt_alias) { + listener.enterRelation_expr_opt_alias(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGenerictype) { - listener.exitGenerictype(this); + if(listener.exitRelation_expr_opt_alias) { + listener.exitRelation_expr_opt_alias(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGenerictype) { - return visitor.visitGenerictype(this); + if (visitor.visitRelation_expr_opt_alias) { + return visitor.visitRelation_expr_opt_alias(this); } else { return visitor.visitChildren(this); } @@ -101422,35 +77338,47 @@ export class GenerictypeContext extends antlr.ParserRuleContext { } -export class Opt_type_modifiersContext extends antlr.ParserRuleContext { +export class Tablesample_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public KW_TABLESAMPLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TABLESAMPLE, 0)!; } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; + public function_name(): Function_nameContext { + return this.getRuleContext(0, Function_nameContext)!; } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public execute_param_clause(): Execute_param_clauseContext { + return this.getRuleContext(0, Execute_param_clauseContext)!; + } + public KW_REPEATABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPEATABLE, 0); + } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_type_modifiers; + return PostgreSqlParser.RULE_tablesample_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_type_modifiers) { - listener.enterOpt_type_modifiers(this); + if(listener.enterTablesample_clause) { + listener.enterTablesample_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_type_modifiers) { - listener.exitOpt_type_modifiers(this); + if(listener.exitTablesample_clause) { + listener.exitTablesample_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_type_modifiers) { - return visitor.visitOpt_type_modifiers(this); + if (visitor.visitTablesample_clause) { + return visitor.visitTablesample_clause(this); } else { return visitor.visitChildren(this); } @@ -101458,68 +77386,65 @@ export class Opt_type_modifiersContext extends antlr.ParserRuleContext { } -export class NumericContext extends antlr.ParserRuleContext { +export class Func_tableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_INT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INT, 0); - } - public KW_INTEGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INTEGER, 0); - } - public KW_SMALLINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SMALLINT, 0); - } - public KW_BIGINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BIGINT, 0); - } - public KW_REAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REAL, 0); - } - public KW_FLOAT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FLOAT, 0); + public func_expr_windowless(): Func_expr_windowlessContext | null { + return this.getRuleContext(0, Func_expr_windowlessContext); } - public opt_float(): Opt_floatContext | null { - return this.getRuleContext(0, Opt_floatContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } - public KW_DOUBLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOUBLE, 0); + public KW_ORDINALITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ORDINALITY, 0); } - public KW_PRECISION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRECISION, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); } - public KW_DECIMAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DECIMAL, 0); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } - public opt_type_modifiers(): Opt_type_modifiersContext | null { - return this.getRuleContext(0, Opt_type_modifiersContext); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public KW_DEC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEC, 0); + public rowsfrom_item(): Rowsfrom_itemContext[]; + public rowsfrom_item(i: number): Rowsfrom_itemContext | null; + public rowsfrom_item(i?: number): Rowsfrom_itemContext[] | Rowsfrom_itemContext | null { + if (i === undefined) { + return this.getRuleContexts(Rowsfrom_itemContext); + } + + return this.getRuleContext(i, Rowsfrom_itemContext); } - public KW_NUMERIC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NUMERIC, 0); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_BOOLEAN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BOOLEAN, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_numeric; + return PostgreSqlParser.RULE_func_table; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNumeric) { - listener.enterNumeric(this); + if(listener.enterFunc_table) { + listener.enterFunc_table(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNumeric) { - listener.exitNumeric(this); + if(listener.exitFunc_table) { + listener.exitFunc_table(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNumeric) { - return visitor.visitNumeric(this); + if (visitor.visitFunc_table) { + return visitor.visitFunc_table(this); } else { return visitor.visitChildren(this); } @@ -101527,35 +77452,41 @@ export class NumericContext extends antlr.ParserRuleContext { } -export class Opt_floatContext extends antlr.ParserRuleContext { +export class Rowsfrom_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public func_expr_windowless(): Func_expr_windowlessContext { + return this.getRuleContext(0, Func_expr_windowlessContext)!; + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } - public iconst(): IconstContext { - return this.getRuleContext(0, IconstContext)!; + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public tablefuncelementlist(): TablefuncelementlistContext | null { + return this.getRuleContext(0, TablefuncelementlistContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_float; + return PostgreSqlParser.RULE_rowsfrom_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_float) { - listener.enterOpt_float(this); + if(listener.enterRowsfrom_item) { + listener.enterRowsfrom_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_float) { - listener.exitOpt_float(this); + if(listener.exitRowsfrom_item) { + listener.exitRowsfrom_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_float) { - return visitor.visitOpt_float(this); + if (visitor.visitRowsfrom_item) { + return visitor.visitRowsfrom_item(this); } else { return visitor.visitChildren(this); } @@ -101563,32 +77494,32 @@ export class Opt_floatContext extends antlr.ParserRuleContext { } -export class BitContext extends antlr.ParserRuleContext { +export class Where_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public bitwithlength(): BitwithlengthContext | null { - return this.getRuleContext(0, BitwithlengthContext); + public KW_WHERE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WHERE, 0)!; } - public bitwithoutlength(): BitwithoutlengthContext | null { - return this.getRuleContext(0, BitwithoutlengthContext); + public column_expr_noparen(): Column_expr_noparenContext { + return this.getRuleContext(0, Column_expr_noparenContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_bit; + return PostgreSqlParser.RULE_where_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterBit) { - listener.enterBit(this); + if(listener.enterWhere_clause) { + listener.enterWhere_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitBit) { - listener.exitBit(this); + if(listener.exitWhere_clause) { + listener.exitWhere_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitBit) { - return visitor.visitBit(this); + if (visitor.visitWhere_clause) { + return visitor.visitWhere_clause(this); } else { return visitor.visitChildren(this); } @@ -101596,32 +77527,41 @@ export class BitContext extends antlr.ParserRuleContext { } -export class ConstbitContext extends antlr.ParserRuleContext { +export class Where_or_current_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public bitwithlength(): BitwithlengthContext | null { - return this.getRuleContext(0, BitwithlengthContext); + public KW_WHERE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_WHERE, 0)!; + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OF, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public bitwithoutlength(): BitwithoutlengthContext | null { - return this.getRuleContext(0, BitwithoutlengthContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constbit; + return PostgreSqlParser.RULE_where_or_current_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstbit) { - listener.enterConstbit(this); + if(listener.enterWhere_or_current_clause) { + listener.enterWhere_or_current_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstbit) { - listener.exitConstbit(this); + if(listener.exitWhere_or_current_clause) { + listener.exitWhere_or_current_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstbit) { - return visitor.visitConstbit(this); + if (visitor.visitWhere_or_current_clause) { + return visitor.visitWhere_or_current_clause(this); } else { return visitor.visitChildren(this); } @@ -101629,41 +77569,44 @@ export class ConstbitContext extends antlr.ParserRuleContext { } -export class BitwithlengthContext extends antlr.ParserRuleContext { +export class TablefuncelementlistContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_BIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BIT, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public tablefuncelement(): TablefuncelementContext[]; + public tablefuncelement(i: number): TablefuncelementContext | null; + public tablefuncelement(i?: number): TablefuncelementContext[] | TablefuncelementContext | null { + if (i === undefined) { + return this.getRuleContexts(TablefuncelementContext); + } + + return this.getRuleContext(i, TablefuncelementContext); } - public opt_varying(): Opt_varyingContext | null { - return this.getRuleContext(0, Opt_varyingContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_bitwithlength; + return PostgreSqlParser.RULE_tablefuncelementlist; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterBitwithlength) { - listener.enterBitwithlength(this); + if(listener.enterTablefuncelementlist) { + listener.enterTablefuncelementlist(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitBitwithlength) { - listener.exitBitwithlength(this); + if(listener.exitTablefuncelementlist) { + listener.exitTablefuncelementlist(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitBitwithlength) { - return visitor.visitBitwithlength(this); + if (visitor.visitTablefuncelementlist) { + return visitor.visitTablefuncelementlist(this); } else { return visitor.visitChildren(this); } @@ -101671,32 +77614,35 @@ export class BitwithlengthContext extends antlr.ParserRuleContext { } -export class BitwithoutlengthContext extends antlr.ParserRuleContext { +export class TablefuncelementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_BIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BIT, 0)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public opt_varying(): Opt_varyingContext | null { - return this.getRuleContext(0, Opt_varyingContext); + public typename(): TypenameContext { + return this.getRuleContext(0, TypenameContext)!; + } + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_bitwithoutlength; + return PostgreSqlParser.RULE_tablefuncelement; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterBitwithoutlength) { - listener.enterBitwithoutlength(this); + if(listener.enterTablefuncelement) { + listener.enterTablefuncelement(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitBitwithoutlength) { - listener.exitBitwithoutlength(this); + if(listener.exitTablefuncelement) { + listener.exitTablefuncelement(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitBitwithoutlength) { - return visitor.visitBitwithoutlength(this); + if (visitor.visitTablefuncelement) { + return visitor.visitTablefuncelement(this); } else { return visitor.visitChildren(this); } @@ -101704,77 +77650,86 @@ export class BitwithoutlengthContext extends antlr.ParserRuleContext { } -export class CharacterContext extends antlr.ParserRuleContext { +export class XmltableContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public character_c(): Character_cContext { - return this.getRuleContext(0, Character_cContext)!; - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_XMLTABLE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_XMLTABLE, 0)!; } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public OPEN_PAREN(): antlr.TerminalNode[]; + public OPEN_PAREN(i: number): antlr.TerminalNode | null; + public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.OPEN_PAREN); + } else { + return this.getToken(PostgreSqlParser.OPEN_PAREN, i); + } } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public CLOSE_PAREN(): antlr.TerminalNode[]; + public CLOSE_PAREN(i: number): antlr.TerminalNode | null; + public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.CLOSE_PAREN); + } else { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); + } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_character; + public primaryExpression(): PrimaryExpressionContext | null { + return this.getRuleContext(0, PrimaryExpressionContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCharacter) { - listener.enterCharacter(this); - } + public xmlexists_argument(): Xmlexists_argumentContext | null { + return this.getRuleContext(0, Xmlexists_argumentContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCharacter) { - listener.exitCharacter(this); - } + public KW_COLUMNS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLUMNS, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCharacter) { - return visitor.visitCharacter(this); - } else { - return visitor.visitChildren(this); + public xmltable_column_el(): Xmltable_column_elContext[]; + public xmltable_column_el(i: number): Xmltable_column_elContext | null; + public xmltable_column_el(i?: number): Xmltable_column_elContext[] | Xmltable_column_elContext | null { + if (i === undefined) { + return this.getRuleContexts(Xmltable_column_elContext); } - } -} - -export class ConstcharacterContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public character_c(): Character_cContext { - return this.getRuleContext(0, Character_cContext)!; + return this.getRuleContext(i, Xmltable_column_elContext); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_XMLNAMESPACES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLNAMESPACES, 0); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public xml_namespace_el(): Xml_namespace_elContext[]; + public xml_namespace_el(i: number): Xml_namespace_elContext | null; + public xml_namespace_el(i?: number): Xml_namespace_elContext[] | Xml_namespace_elContext | null { + if (i === undefined) { + return this.getRuleContexts(Xml_namespace_elContext); + } + + return this.getRuleContext(i, Xml_namespace_elContext); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constcharacter; + return PostgreSqlParser.RULE_xmltable; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstcharacter) { - listener.enterConstcharacter(this); + if(listener.enterXmltable) { + listener.enterXmltable(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstcharacter) { - listener.exitConstcharacter(this); + if(listener.exitXmltable) { + listener.exitXmltable(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstcharacter) { - return visitor.visitConstcharacter(this); + if (visitor.visitXmltable) { + return visitor.visitXmltable(this); } else { return visitor.visitChildren(this); } @@ -101782,44 +77737,83 @@ export class ConstcharacterContext extends antlr.ParserRuleContext { } -export class Character_cContext extends antlr.ParserRuleContext { +export class Xmltable_column_elContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CHARACTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHARACTER, 0); + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } - public KW_CHAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHAR, 0); + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); } - public KW_NCHAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NCHAR, 0); + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); + } + public KW_ORDINALITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ORDINALITY, 0); } - public opt_varying(): Opt_varyingContext | null { - return this.getRuleContext(0, Opt_varyingContext); + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } - public KW_VARCHAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARCHAR, 0); + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NULL); + } else { + return this.getToken(PostgreSqlParser.KW_NULL, i); + } } - public KW_NATIONAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NATIONAL, 0); + public KW_DEFAULT(): antlr.TerminalNode[]; + public KW_DEFAULT(i: number): antlr.TerminalNode | null; + public KW_DEFAULT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_DEFAULT); + } else { + return this.getToken(PostgreSqlParser.KW_DEFAULT, i); + } + } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); + } + public KW_NOT(): antlr.TerminalNode[]; + public KW_NOT(i: number): antlr.TerminalNode | null; + public KW_NOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NOT); + } else { + return this.getToken(PostgreSqlParser.KW_NOT, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_character_c; + return PostgreSqlParser.RULE_xmltable_column_el; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCharacter_c) { - listener.enterCharacter_c(this); + if(listener.enterXmltable_column_el) { + listener.enterXmltable_column_el(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCharacter_c) { - listener.exitCharacter_c(this); + if(listener.exitXmltable_column_el) { + listener.exitXmltable_column_el(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCharacter_c) { - return visitor.visitCharacter_c(this); + if (visitor.visitXmltable_column_el) { + return visitor.visitXmltable_column_el(this); } else { return visitor.visitChildren(this); } @@ -101827,29 +77821,38 @@ export class Character_cContext extends antlr.ParserRuleContext { } -export class Opt_varyingContext extends antlr.ParserRuleContext { +export class Xml_namespace_elContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_VARYING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VARYING, 0)!; + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); + } + public collabel(): CollabelContext | null { + return this.getRuleContext(0, CollabelContext); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_varying; + return PostgreSqlParser.RULE_xml_namespace_el; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_varying) { - listener.enterOpt_varying(this); + if(listener.enterXml_namespace_el) { + listener.enterXml_namespace_el(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_varying) { - listener.exitOpt_varying(this); + if(listener.exitXml_namespace_el) { + listener.exitXml_namespace_el(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_varying) { - return visitor.visitOpt_varying(this); + if (visitor.visitXml_namespace_el) { + return visitor.visitXml_namespace_el(this); } else { return visitor.visitChildren(this); } @@ -101857,44 +77860,74 @@ export class Opt_varyingContext extends antlr.ParserRuleContext { } -export class ConstdatetimeContext extends antlr.ParserRuleContext { +export class TypenameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIMESTAMP, 0); + public simpletypename(): SimpletypenameContext | null { + return this.getRuleContext(0, SimpletypenameContext); } - public KW_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIME, 0); + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ARRAY, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_SETOF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SETOF, 0); + } + public OPEN_BRACKET(): antlr.TerminalNode[]; + public OPEN_BRACKET(i: number): antlr.TerminalNode | null; + public OPEN_BRACKET(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.OPEN_BRACKET); + } else { + return this.getToken(PostgreSqlParser.OPEN_BRACKET, i); + } } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public Integral(): antlr.TerminalNode[]; + public Integral(i: number): antlr.TerminalNode | null; + public Integral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.Integral); + } else { + return this.getToken(PostgreSqlParser.Integral, i); + } } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public CLOSE_BRACKET(): antlr.TerminalNode[]; + public CLOSE_BRACKET(i: number): antlr.TerminalNode | null; + public CLOSE_BRACKET(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.CLOSE_BRACKET); + } else { + return this.getToken(PostgreSqlParser.CLOSE_BRACKET, i); + } + } + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); + } + public PERCENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PERCENT, 0); + } + public KW_ROWTYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWTYPE, 0); } - public opt_timezone(): Opt_timezoneContext | null { - return this.getRuleContext(0, Opt_timezoneContext); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constdatetime; + return PostgreSqlParser.RULE_typename; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstdatetime) { - listener.enterConstdatetime(this); + if(listener.enterTypename) { + listener.enterTypename(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstdatetime) { - listener.exitConstdatetime(this); + if(listener.exitTypename) { + listener.exitTypename(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstdatetime) { - return visitor.visitConstdatetime(this); + if (visitor.visitTypename) { + return visitor.visitTypename(this); } else { return visitor.visitChildren(this); } @@ -101902,29 +77935,47 @@ export class ConstdatetimeContext extends antlr.ParserRuleContext { } -export class ConstintervalContext extends antlr.ParserRuleContext { +export class SimpletypenameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_INTERVAL(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INTERVAL, 0)!; + public type_function_name(): Type_function_nameContext | null { + return this.getRuleContext(0, Type_function_nameContext); + } + public attrs(): AttrsContext | null { + return this.getRuleContext(0, AttrsContext); + } + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); + } + public consttypename(): ConsttypenameContext | null { + return this.getRuleContext(0, ConsttypenameContext); + } + public KW_INTERVAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTERVAL, 0); + } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); + } + public opt_interval(): Opt_intervalContext | null { + return this.getRuleContext(0, Opt_intervalContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_constinterval; + return PostgreSqlParser.RULE_simpletypename; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterConstinterval) { - listener.enterConstinterval(this); + if(listener.enterSimpletypename) { + listener.enterSimpletypename(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitConstinterval) { - listener.exitConstinterval(this); + if(listener.exitSimpletypename) { + listener.exitSimpletypename(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitConstinterval) { - return visitor.visitConstinterval(this); + if (visitor.visitSimpletypename) { + return visitor.visitSimpletypename(this); } else { return visitor.visitChildren(this); } @@ -101932,38 +77983,38 @@ export class ConstintervalContext extends antlr.ParserRuleContext { } -export class Opt_timezoneContext extends antlr.ParserRuleContext { +export class ConsttypenameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); + public numeric(): NumericContext | null { + return this.getRuleContext(0, NumericContext); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_TIME, 0)!; + public bit(): BitContext | null { + return this.getRuleContext(0, BitContext); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ZONE, 0)!; + public character(): CharacterContext | null { + return this.getRuleContext(0, CharacterContext); } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); + public constdatetime(): ConstdatetimeContext | null { + return this.getRuleContext(0, ConstdatetimeContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_timezone; + return PostgreSqlParser.RULE_consttypename; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_timezone) { - listener.enterOpt_timezone(this); + if(listener.enterConsttypename) { + listener.enterConsttypename(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_timezone) { - listener.exitOpt_timezone(this); + if(listener.exitConsttypename) { + listener.exitConsttypename(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_timezone) { - return visitor.visitOpt_timezone(this); + if (visitor.visitConsttypename) { + return visitor.visitConsttypename(this); } else { return visitor.visitChildren(this); } @@ -101971,86 +78022,68 @@ export class Opt_timezoneContext extends antlr.ParserRuleContext { } -export class Opt_intervalContext extends antlr.ParserRuleContext { +export class NumericContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_YEAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_YEAR, 0); - } - public KW_MONTH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MONTH, 0); - } - public KW_DAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DAY, 0); + public KW_INT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INT, 0); } - public KW_HOUR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_HOUR, 0); + public KW_INTEGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTEGER, 0); } - public KW_MINUTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MINUTE, 0); + public KW_SMALLINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SMALLINT, 0); } - public interval_second(): Interval_secondContext | null { - return this.getRuleContext(0, Interval_secondContext); + public KW_BIGINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BIGINT, 0); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_REAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REAL, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_interval; + public KW_FLOAT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FLOAT, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_interval) { - listener.enterOpt_interval(this); - } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_interval) { - listener.exitOpt_interval(this); - } + public KW_DOUBLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOUBLE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_interval) { - return visitor.visitOpt_interval(this); - } else { - return visitor.visitChildren(this); - } + public KW_PRECISION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRECISION, 0); } -} - - -export class Interval_secondContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_DECIMAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DECIMAL, 0); } - public KW_SECOND(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_SECOND, 0)!; + public KW_DEC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEC, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_NUMERIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NUMERIC, 0); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_BOOLEAN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BOOLEAN, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_interval_second; + return PostgreSqlParser.RULE_numeric; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInterval_second) { - listener.enterInterval_second(this); + if(listener.enterNumeric) { + listener.enterNumeric(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInterval_second) { - listener.exitInterval_second(this); + if(listener.exitNumeric) { + listener.exitNumeric(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInterval_second) { - return visitor.visitInterval_second(this); + if (visitor.visitNumeric) { + return visitor.visitNumeric(this); } else { return visitor.visitChildren(this); } @@ -102058,32 +78091,35 @@ export class Interval_secondContext extends antlr.ParserRuleContext { } -export class Opt_escapeContext extends antlr.ParserRuleContext { +export class Opt_floatContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ESCAPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ESCAPE, 0)!; + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public Integral(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.Integral, 0)!; } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_escape; + return PostgreSqlParser.RULE_opt_float; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_escape) { - listener.enterOpt_escape(this); + if(listener.enterOpt_float) { + listener.enterOpt_float(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_escape) { - listener.exitOpt_escape(this); + if(listener.exitOpt_float) { + listener.exitOpt_float(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_escape) { - return visitor.visitOpt_escape(this); + if (visitor.visitOpt_float) { + return visitor.visitOpt_float(this); } else { return visitor.visitChildren(this); } @@ -102091,29 +78127,35 @@ export class Opt_escapeContext extends antlr.ParserRuleContext { } -export class A_exprContext extends antlr.ParserRuleContext { +export class BitContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_qual(): A_expr_qualContext { - return this.getRuleContext(0, A_expr_qualContext)!; + public KW_BIT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BIT, 0)!; + } + public KW_VARYING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARYING, 0); + } + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr; + return PostgreSqlParser.RULE_bit; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr) { - listener.enterA_expr(this); + if(listener.enterBit) { + listener.enterBit(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr) { - listener.exitA_expr(this); + if(listener.exitBit) { + listener.exitBit(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr) { - return visitor.visitA_expr(this); + if (visitor.visitBit) { + return visitor.visitBit(this); } else { return visitor.visitChildren(this); } @@ -102121,32 +78163,47 @@ export class A_exprContext extends antlr.ParserRuleContext { } -export class A_expr_qualContext extends antlr.ParserRuleContext { +export class CharacterContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_lessless(): A_expr_lesslessContext { - return this.getRuleContext(0, A_expr_lesslessContext)!; + public KW_VARCHAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARCHAR, 0); } - public qual_op(): Qual_opContext | null { - return this.getRuleContext(0, Qual_opContext); + public KW_NATIONAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NATIONAL, 0); + } + public KW_CHARACTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHARACTER, 0); + } + public KW_CHAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHAR, 0); + } + public KW_NCHAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NCHAR, 0); + } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); + } + public KW_VARYING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARYING, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_qual; + return PostgreSqlParser.RULE_character; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_qual) { - listener.enterA_expr_qual(this); + if(listener.enterCharacter) { + listener.enterCharacter(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_qual) { - listener.exitA_expr_qual(this); + if(listener.exitCharacter) { + listener.exitCharacter(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_qual) { - return visitor.visitA_expr_qual(this); + if (visitor.visitCharacter) { + return visitor.visitCharacter(this); } else { return visitor.visitChildren(this); } @@ -102154,53 +78211,50 @@ export class A_expr_qualContext extends antlr.ParserRuleContext { } -export class A_expr_lesslessContext extends antlr.ParserRuleContext { +export class ConstdatetimeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_or(): A_expr_orContext[]; - public a_expr_or(i: number): A_expr_orContext | null; - public a_expr_or(i?: number): A_expr_orContext[] | A_expr_orContext | null { - if (i === undefined) { - return this.getRuleContexts(A_expr_orContext); - } - - return this.getRuleContext(i, A_expr_orContext); + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIMESTAMP, 0); } - public LESS_LESS(): antlr.TerminalNode[]; - public LESS_LESS(i: number): antlr.TerminalNode | null; - public LESS_LESS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_TIME(): antlr.TerminalNode[]; + public KW_TIME(i: number): antlr.TerminalNode | null; + public KW_TIME(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.LESS_LESS); + return this.getTokens(PostgreSqlParser.KW_TIME); } else { - return this.getToken(PostgreSqlParser.LESS_LESS, i); + return this.getToken(PostgreSqlParser.KW_TIME, i); } } - public GREATER_GREATER(): antlr.TerminalNode[]; - public GREATER_GREATER(i: number): antlr.TerminalNode | null; - public GREATER_GREATER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.GREATER_GREATER); - } else { - return this.getToken(PostgreSqlParser.GREATER_GREATER, i); - } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); + } + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ZONE, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); + } + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_lessless; + return PostgreSqlParser.RULE_constdatetime; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_lessless) { - listener.enterA_expr_lessless(this); + if(listener.enterConstdatetime) { + listener.enterConstdatetime(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_lessless) { - listener.exitA_expr_lessless(this); + if(listener.exitConstdatetime) { + listener.exitConstdatetime(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_lessless) { - return visitor.visitA_expr_lessless(this); + if (visitor.visitConstdatetime) { + return visitor.visitConstdatetime(this); } else { return visitor.visitChildren(this); } @@ -102208,44 +78262,47 @@ export class A_expr_lesslessContext extends antlr.ParserRuleContext { } -export class A_expr_orContext extends antlr.ParserRuleContext { +export class Opt_intervalContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_and(): A_expr_andContext[]; - public a_expr_and(i: number): A_expr_andContext | null; - public a_expr_and(i?: number): A_expr_andContext[] | A_expr_andContext | null { - if (i === undefined) { - return this.getRuleContexts(A_expr_andContext); - } - - return this.getRuleContext(i, A_expr_andContext); + public KW_MONTH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MONTH, 0); } - public KW_OR(): antlr.TerminalNode[]; - public KW_OR(i: number): antlr.TerminalNode | null; - public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_OR); - } else { - return this.getToken(PostgreSqlParser.KW_OR, i); - } + public interval_second(): Interval_secondContext | null { + return this.getRuleContext(0, Interval_secondContext); + } + public KW_YEAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_YEAR, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); + } + public KW_DAY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DAY, 0); + } + public KW_HOUR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_HOUR, 0); + } + public KW_MINUTE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_MINUTE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_or; + return PostgreSqlParser.RULE_opt_interval; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_or) { - listener.enterA_expr_or(this); + if(listener.enterOpt_interval) { + listener.enterOpt_interval(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_or) { - listener.exitA_expr_or(this); + if(listener.exitOpt_interval) { + listener.exitOpt_interval(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_or) { - return visitor.visitA_expr_or(this); + if (visitor.visitOpt_interval) { + return visitor.visitOpt_interval(this); } else { return visitor.visitChildren(this); } @@ -102253,44 +78310,32 @@ export class A_expr_orContext extends antlr.ParserRuleContext { } -export class A_expr_andContext extends antlr.ParserRuleContext { +export class Interval_secondContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_in(): A_expr_inContext[]; - public a_expr_in(i: number): A_expr_inContext | null; - public a_expr_in(i?: number): A_expr_inContext[] | A_expr_inContext | null { - if (i === undefined) { - return this.getRuleContexts(A_expr_inContext); - } - - return this.getRuleContext(i, A_expr_inContext); + public KW_SECOND(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_SECOND, 0)!; } - public KW_AND(): antlr.TerminalNode[]; - public KW_AND(i: number): antlr.TerminalNode | null; - public KW_AND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_AND); - } else { - return this.getToken(PostgreSqlParser.KW_AND, i); - } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_and; + return PostgreSqlParser.RULE_interval_second; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_and) { - listener.enterA_expr_and(this); + if(listener.enterInterval_second) { + listener.enterInterval_second(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_and) { - listener.exitA_expr_and(this); + if(listener.exitInterval_second) { + listener.exitInterval_second(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_and) { - return visitor.visitA_expr_and(this); + if (visitor.visitInterval_second) { + return visitor.visitInterval_second(this); } else { return visitor.visitChildren(this); } @@ -102298,38 +78343,44 @@ export class A_expr_andContext extends antlr.ParserRuleContext { } -export class A_expr_inContext extends antlr.ParserRuleContext { +export class ComparisonOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_unary_not(): A_expr_unary_notContext { - return this.getRuleContext(0, A_expr_unary_notContext)!; + public LT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.LT, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); + public GT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.GT, 0); + } + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.EQUAL, 0); } - public in_expr(): In_exprContext | null { - return this.getRuleContext(0, In_exprContext); + public LESS_EQUALS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.LESS_EQUALS, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public GREATER_EQUALS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.GREATER_EQUALS, 0); + } + public NOT_EQUALS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.NOT_EQUALS, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_in; + return PostgreSqlParser.RULE_comparisonOperator; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_in) { - listener.enterA_expr_in(this); + if(listener.enterComparisonOperator) { + listener.enterComparisonOperator(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_in) { - listener.exitA_expr_in(this); + if(listener.exitComparisonOperator) { + listener.exitComparisonOperator(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_in) { - return visitor.visitA_expr_in(this); + if (visitor.visitComparisonOperator) { + return visitor.visitComparisonOperator(this); } else { return visitor.visitChildren(this); } @@ -102337,32 +78388,29 @@ export class A_expr_inContext extends antlr.ParserRuleContext { } -export class A_expr_unary_notContext extends antlr.ParserRuleContext { +export class ExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_isnull(): A_expr_isnullContext { - return this.getRuleContext(0, A_expr_isnullContext)!; - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_unary_not; + return PostgreSqlParser.RULE_expression; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_unary_not) { - listener.enterA_expr_unary_not(this); + if(listener.enterExpression) { + listener.enterExpression(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_unary_not) { - listener.exitA_expr_unary_not(this); + if(listener.exitExpression) { + listener.exitExpression(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_unary_not) { - return visitor.visitA_expr_unary_not(this); + if (visitor.visitExpression) { + return visitor.visitExpression(this); } else { return visitor.visitChildren(this); } @@ -102370,204 +78418,178 @@ export class A_expr_unary_notContext extends antlr.ParserRuleContext { } -export class A_expr_isnullContext extends antlr.ParserRuleContext { +export class BooleanExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_is_not(): A_expr_is_notContext { - return this.getRuleContext(0, A_expr_is_notContext)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_booleanExpression; } - public KW_ISNULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ISNULL, 0); + public override copyFrom(ctx: BooleanExpressionContext): void { + super.copyFrom(ctx); } - public KW_NOTNULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTNULL, 0); +} +export class LogicalNotContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_isnull; + public KW_NOT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_NOT, 0)!; + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_isnull) { - listener.enterA_expr_isnull(this); + if(listener.enterLogicalNot) { + listener.enterLogicalNot(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_isnull) { - listener.exitA_expr_isnull(this); + if(listener.exitLogicalNot) { + listener.exitLogicalNot(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_isnull) { - return visitor.visitA_expr_isnull(this); + if (visitor.visitLogicalNot) { + return visitor.visitLogicalNot(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_is_notContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr_compare(): A_expr_compareContext { - return this.getRuleContext(0, A_expr_compareContext)!; - } - public KW_IS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IS, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); - } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); - } - public KW_UNKNOWN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNKNOWN, 0); - } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public type_list(): Type_listContext | null { - return this.getRuleContext(0, Type_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public KW_DOCUMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOCUMENT, 0); - } - public KW_NORMALIZED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NORMALIZED, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); +export class PredicatedContext extends BooleanExpressionContext { + public _valueExpression?: ValueExpressionContext; + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public unicode_normal_form(): Unicode_normal_formContext | null { - return this.getRuleContext(0, Unicode_normal_formContext); + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_is_not; + public predicate(): PredicateContext | null { + return this.getRuleContext(0, PredicateContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_is_not) { - listener.enterA_expr_is_not(this); + if(listener.enterPredicated) { + listener.enterPredicated(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_is_not) { - listener.exitA_expr_is_not(this); + if(listener.exitPredicated) { + listener.exitPredicated(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_is_not) { - return visitor.visitA_expr_is_not(this); + if (visitor.visitPredicated) { + return visitor.visitPredicated(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_compareContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class LogicalBinaryContext extends BooleanExpressionContext { + public _left?: BooleanExpressionContext; + public _operator?: Token | null; + public _right?: BooleanExpressionContext; + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public a_expr_like(): A_expr_likeContext[]; - public a_expr_like(i: number): A_expr_likeContext | null; - public a_expr_like(i?: number): A_expr_likeContext[] | A_expr_likeContext | null { + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_expr_likeContext); + return this.getRuleContexts(BooleanExpressionContext); } - return this.getRuleContext(i, A_expr_likeContext); - } - public subquery_Op(): Subquery_OpContext | null { - return this.getRuleContext(0, Subquery_OpContext); + return this.getRuleContext(i, BooleanExpressionContext); } - public sub_type(): Sub_typeContext | null { - return this.getRuleContext(0, Sub_typeContext); - } - public LT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.LT, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AND, 0); } - public GT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.GT, 0); + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OR, 0); } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); + public override enterRule(listener: PostgreSqlParserListener): void { + if(listener.enterLogicalBinary) { + listener.enterLogicalBinary(this); + } } - public LESS_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.LESS_EQUALS, 0); + public override exitRule(listener: PostgreSqlParserListener): void { + if(listener.exitLogicalBinary) { + listener.exitLogicalBinary(this); + } } - public GREATER_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.GREATER_EQUALS, 0); + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitLogicalBinary) { + return visitor.visitLogicalBinary(this); + } else { + return visitor.visitChildren(this); + } } - public NOT_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.NOT_EQUALS, 0); +} + + +export class PredicateContext extends antlr.ParserRuleContext { + public value: antlr.ParserRuleContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number, value: antlr.ParserRuleContext) { + super(parent, invokingState); + this.value = value; } - public select_with_parens(): Select_with_parensContext | null { - return this.getRuleContext(0, Select_with_parensContext); + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_predicate; } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public override copyFrom(ctx: PredicateContext): void { + super.copyFrom(ctx); + this.value = ctx.value; } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); +} +export class ComparisonContext extends PredicateContext { + public _right?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_compare; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_compare) { - listener.enterA_expr_compare(this); + if(listener.enterComparison) { + listener.enterComparison(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_compare) { - listener.exitA_expr_compare(this); + if(listener.exitComparison) { + listener.exitComparison(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_compare) { - return visitor.visitA_expr_compare(this); + if (visitor.visitComparison) { + return visitor.visitComparison(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_likeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class LikeContext extends PredicateContext { + public _pattern?: ValueExpressionContext; + public _escape?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public a_expr_qual_op(): A_expr_qual_opContext[]; - public a_expr_qual_op(i: number): A_expr_qual_opContext | null; - public a_expr_qual_op(i?: number): A_expr_qual_opContext[] | A_expr_qual_opContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_expr_qual_opContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, A_expr_qual_opContext); + return this.getRuleContext(i, ValueExpressionContext); } public KW_LIKE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_LIKE, 0); @@ -102587,337 +78609,268 @@ export class A_expr_likeContext extends antlr.ParserRuleContext { public KW_NOT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public opt_escape(): Opt_escapeContext | null { - return this.getRuleContext(0, Opt_escapeContext); + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ESCAPE, 0); } public KW_SYMMETRIC(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_SYMMETRIC, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_like; - } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_like) { - listener.enterA_expr_like(this); + if(listener.enterLike) { + listener.enterLike(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_like) { - listener.exitA_expr_like(this); + if(listener.exitLike) { + listener.exitLike(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_like) { - return visitor.visitA_expr_like(this); + if (visitor.visitLike) { + return visitor.visitLike(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_qual_opContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class InSubqueryContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public a_expr_unary_qualop(): A_expr_unary_qualopContext[]; - public a_expr_unary_qualop(i: number): A_expr_unary_qualopContext | null; - public a_expr_unary_qualop(i?: number): A_expr_unary_qualopContext[] | A_expr_unary_qualopContext | null { - if (i === undefined) { - return this.getRuleContexts(A_expr_unary_qualopContext); - } - - return this.getRuleContext(i, A_expr_unary_qualopContext); + public KW_IN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IN, 0)!; } - public qual_op(): Qual_opContext[]; - public qual_op(i: number): Qual_opContext | null; - public qual_op(i?: number): Qual_opContext[] | Qual_opContext | null { - if (i === undefined) { - return this.getRuleContexts(Qual_opContext); - } - - return this.getRuleContext(i, Qual_opContext); + public select_with_parens(): Select_with_parensContext { + return this.getRuleContext(0, Select_with_parensContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_qual_op; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_qual_op) { - listener.enterA_expr_qual_op(this); + if(listener.enterInSubquery) { + listener.enterInSubquery(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_qual_op) { - listener.exitA_expr_qual_op(this); + if(listener.exitInSubquery) { + listener.exitInSubquery(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_qual_op) { - return visitor.visitA_expr_qual_op(this); + if (visitor.visitInSubquery) { + return visitor.visitInSubquery(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_unary_qualopContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr_add(): A_expr_addContext { - return this.getRuleContext(0, A_expr_addContext)!; - } - public qual_op(): Qual_opContext | null { - return this.getRuleContext(0, Qual_opContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_unary_qualop; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_unary_qualop) { - listener.enterA_expr_unary_qualop(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_unary_qualop) { - listener.exitA_expr_unary_qualop(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_unary_qualop) { - return visitor.visitA_expr_unary_qualop(this); - } else { - return visitor.visitChildren(this); - } +export class DistinctFromContext extends PredicateContext { + public _right?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } -} - - -export class A_expr_addContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_IS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IS, 0)!; } - public a_expr_mul(): A_expr_mulContext[]; - public a_expr_mul(i: number): A_expr_mulContext | null; - public a_expr_mul(i?: number): A_expr_mulContext[] | A_expr_mulContext | null { - if (i === undefined) { - return this.getRuleContexts(A_expr_mulContext); - } - - return this.getRuleContext(i, A_expr_mulContext); + public KW_DISTINCT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0)!; } - public MINUS(): antlr.TerminalNode[]; - public MINUS(i: number): antlr.TerminalNode | null; - public MINUS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.MINUS); - } else { - return this.getToken(PostgreSqlParser.MINUS, i); - } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_FROM, 0)!; } - public PLUS(): antlr.TerminalNode[]; - public PLUS(i: number): antlr.TerminalNode | null; - public PLUS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.PLUS); - } else { - return this.getToken(PostgreSqlParser.PLUS, i); - } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_add; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_add) { - listener.enterA_expr_add(this); + if(listener.enterDistinctFrom) { + listener.enterDistinctFrom(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_add) { - listener.exitA_expr_add(this); + if(listener.exitDistinctFrom) { + listener.exitDistinctFrom(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_add) { - return visitor.visitA_expr_add(this); + if (visitor.visitDistinctFrom) { + return visitor.visitDistinctFrom(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_mulContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class InListContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); + } + public KW_IN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IN, 0)!; } - public a_expr_caret(): A_expr_caretContext[]; - public a_expr_caret(i: number): A_expr_caretContext | null; - public a_expr_caret(i?: number): A_expr_caretContext[] | A_expr_caretContext | null { + public OPEN_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_expr_caretContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, A_expr_caretContext); + return this.getRuleContext(i, ExpressionContext); } - public STAR(): antlr.TerminalNode[]; - public STAR(i: number): antlr.TerminalNode | null; - public STAR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.STAR); - } else { - return this.getToken(PostgreSqlParser.STAR, i); - } + public CLOSE_PAREN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public SLASH(): antlr.TerminalNode[]; - public SLASH(i: number): antlr.TerminalNode | null; - public SLASH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.SLASH); - } else { - return this.getToken(PostgreSqlParser.SLASH, i); - } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public PERCENT(): antlr.TerminalNode[]; - public PERCENT(i: number): antlr.TerminalNode | null; - public PERCENT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(PostgreSqlParser.PERCENT); + return this.getTokens(PostgreSqlParser.COMMA); } else { - return this.getToken(PostgreSqlParser.PERCENT, i); + return this.getToken(PostgreSqlParser.COMMA, i); } } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_mul; - } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_mul) { - listener.enterA_expr_mul(this); + if(listener.enterInList) { + listener.enterInList(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_mul) { - listener.exitA_expr_mul(this); + if(listener.exitInList) { + listener.exitInList(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_mul) { - return visitor.visitA_expr_mul(this); + if (visitor.visitInList) { + return visitor.visitInList(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_caretContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr_unary_sign(): A_expr_unary_signContext { - return this.getRuleContext(0, A_expr_unary_signContext)!; +export class NullPredicateContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public CARET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CARET, 0); + public KW_IS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_IS, 0)!; } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public KW_NULL(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_NULL, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_caret; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_caret) { - listener.enterA_expr_caret(this); + if(listener.enterNullPredicate) { + listener.enterNullPredicate(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_caret) { - listener.exitA_expr_caret(this); + if(listener.exitNullPredicate) { + listener.exitNullPredicate(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_caret) { - return visitor.visitA_expr_caret(this); + if (visitor.visitNullPredicate) { + return visitor.visitNullPredicate(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_unary_signContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class BetweenContext extends PredicateContext { + public _lower?: ValueExpressionContext; + public _upper?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public a_expr_at_time_zone(): A_expr_at_time_zoneContext { - return this.getRuleContext(0, A_expr_at_time_zoneContext)!; + public KW_BETWEEN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BETWEEN, 0)!; } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.MINUS, 0); + public KW_AND(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AND, 0)!; } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PLUS, 0); + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ValueExpressionContext); + } + + return this.getRuleContext(i, ValueExpressionContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_unary_sign; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_unary_sign) { - listener.enterA_expr_unary_sign(this); + if(listener.enterBetween) { + listener.enterBetween(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_unary_sign) { - listener.exitA_expr_unary_sign(this); + if(listener.exitBetween) { + listener.exitBetween(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_unary_sign) { - return visitor.visitA_expr_unary_sign(this); + if (visitor.visitBetween) { + return visitor.visitBetween(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_at_time_zoneContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class QuantifiedComparisonContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public a_expr_collate(): A_expr_collateContext { - return this.getRuleContext(0, A_expr_collateContext)!; + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; } - public KW_AT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AT, 0); + public subquery_Op(): Subquery_OpContext { + return this.getRuleContext(0, Subquery_OpContext)!; } - public KW_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIME, 0); + public sub_type(): Sub_typeContext { + return this.getRuleContext(0, Sub_typeContext)!; } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ZONE, 0); + public select_with_parens(): Select_with_parensContext | null { + return this.getRuleContext(0, Select_with_parensContext); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_at_time_zone; + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_at_time_zone) { - listener.enterA_expr_at_time_zone(this); + if(listener.enterQuantifiedComparison) { + listener.enterQuantifiedComparison(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_at_time_zone) { - listener.exitA_expr_at_time_zone(this); + if(listener.exitQuantifiedComparison) { + listener.exitQuantifiedComparison(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_at_time_zone) { - return visitor.visitA_expr_at_time_zone(this); + if (visitor.visitQuantifiedComparison) { + return visitor.visitQuantifiedComparison(this); } else { return visitor.visitChildren(this); } @@ -102925,117 +78878,96 @@ export class A_expr_at_time_zoneContext extends antlr.ParserRuleContext { } -export class A_expr_collateContext extends antlr.ParserRuleContext { +export class ValueExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr_typecast(): A_expr_typecastContext { - return this.getRuleContext(0, A_expr_typecastContext)!; + public override get ruleIndex(): number { + return PostgreSqlParser.RULE_valueExpression; } - public KW_COLLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0); + public override copyFrom(ctx: ValueExpressionContext): void { + super.copyFrom(ctx); } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); +} +export class ValueExpressionDefaultContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_collate; + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_collate) { - listener.enterA_expr_collate(this); + if(listener.enterValueExpressionDefault) { + listener.enterValueExpressionDefault(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_collate) { - listener.exitA_expr_collate(this); + if(listener.exitValueExpressionDefault) { + listener.exitValueExpressionDefault(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_collate) { - return visitor.visitA_expr_collate(this); + if (visitor.visitValueExpressionDefault) { + return visitor.visitValueExpressionDefault(this); } else { return visitor.visitChildren(this); } } } - - -export class A_expr_typecastContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public c_expr(): C_exprContext { - return this.getRuleContext(0, C_exprContext)!; +export class ConcatenationContext extends ValueExpressionContext { + public _left?: ValueExpressionContext; + public _right?: ValueExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public TYPECAST(): antlr.TerminalNode[]; - public TYPECAST(i: number): antlr.TerminalNode | null; - public TYPECAST(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.TYPECAST); - } else { - return this.getToken(PostgreSqlParser.TYPECAST, i); - } + public CARET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.CARET, 0)!; } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(TypenameContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, TypenameContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_a_expr_typecast; + return this.getRuleContext(i, ValueExpressionContext); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterA_expr_typecast) { - listener.enterA_expr_typecast(this); + if(listener.enterConcatenation) { + listener.enterConcatenation(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitA_expr_typecast) { - listener.exitA_expr_typecast(this); + if(listener.exitConcatenation) { + listener.exitConcatenation(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitA_expr_typecast) { - return visitor.visitA_expr_typecast(this); + if (visitor.visitConcatenation) { + return visitor.visitConcatenation(this); } else { return visitor.visitChildren(this); } } } - - -export class B_exprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public c_expr(): C_exprContext | null { - return this.getRuleContext(0, C_exprContext); +export class ArithmeticBinaryContext extends ValueExpressionContext { + public _left?: ValueExpressionContext; + public _operator?: Token | null; + public _right?: ValueExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public b_expr(): B_exprContext[]; - public b_expr(i: number): B_exprContext | null; - public b_expr(i?: number): B_exprContext[] | B_exprContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(B_exprContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, B_exprContext); - } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PLUS, 0); - } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.MINUS, 0); - } - public qual_op(): Qual_opContext | null { - return this.getRuleContext(0, Qual_opContext); - } - public CARET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CARET, 0); + return this.getRuleContext(i, ValueExpressionContext); } public STAR(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.STAR, 0); @@ -103046,158 +78978,120 @@ export class B_exprContext extends antlr.ParserRuleContext { public PERCENT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.PERCENT, 0); } - public LT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.LT, 0); - } - public GT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.GT, 0); - } - public EQUAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.EQUAL, 0); - } - public LESS_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.LESS_EQUALS, 0); - } - public GREATER_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.GREATER_EQUALS, 0); - } - public NOT_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.NOT_EQUALS, 0); - } - public TYPECAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.TYPECAST, 0); - } - public typename(): TypenameContext | null { - return this.getRuleContext(0, TypenameContext); - } - public KW_IS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IS, 0); - } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_OF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OF, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public type_list(): Type_listContext | null { - return this.getRuleContext(0, Type_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public KW_DOCUMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DOCUMENT, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public PLUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLUS, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_b_expr; + public MINUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.MINUS, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterB_expr) { - listener.enterB_expr(this); + if(listener.enterArithmeticBinary) { + listener.enterArithmeticBinary(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitB_expr) { - listener.exitB_expr(this); + if(listener.exitArithmeticBinary) { + listener.exitArithmeticBinary(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitB_expr) { - return visitor.visitB_expr(this); + if (visitor.visitArithmeticBinary) { + return visitor.visitArithmeticBinary(this); } else { return visitor.visitChildren(this); } } } - - -export class C_exprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_c_expr; - } - public override copyFrom(ctx: C_exprContext): void { - super.copyFrom(ctx); - } -} -export class C_expr_existsContext extends C_exprContext { - public constructor(ctx: C_exprContext) { +export class ArithmeticUnaryContext extends ValueExpressionContext { + public _operator?: Token | null; + public constructor(ctx: ValueExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_EXISTS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXISTS, 0)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public select_with_parens(): Select_with_parensContext { - return this.getRuleContext(0, Select_with_parensContext)!; + public MINUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.MINUS, 0); + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLUS, 0); } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterC_expr_exists) { - listener.enterC_expr_exists(this); + if(listener.enterArithmeticUnary) { + listener.enterArithmeticUnary(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitC_expr_exists) { - listener.exitC_expr_exists(this); + if(listener.exitArithmeticUnary) { + listener.exitArithmeticUnary(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitC_expr_exists) { - return visitor.visitC_expr_exists(this); + if (visitor.visitArithmeticUnary) { + return visitor.visitArithmeticUnary(this); } else { return visitor.visitChildren(this); } } } -export class C_expr_caseContext extends C_exprContext { - public constructor(ctx: C_exprContext) { +export class AtTimeZoneContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public case_expr(): Case_exprContext { - return this.getRuleContext(0, Case_exprContext)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public KW_AT(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_AT, 0)!; + } + public KW_TIME(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ZONE, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterC_expr_case) { - listener.enterC_expr_case(this); + if(listener.enterAtTimeZone) { + listener.enterAtTimeZone(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitC_expr_case) { - listener.exitC_expr_case(this); + if(listener.exitAtTimeZone) { + listener.exitAtTimeZone(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitC_expr_case) { - return visitor.visitC_expr_case(this); + if (visitor.visitAtTimeZone) { + return visitor.visitAtTimeZone(this); } else { return visitor.visitChildren(this); } } } -export class C_expr_exprContext extends C_exprContext { - public _a_expr_in_parens?: A_exprContext; - public constructor(ctx: C_exprContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ARRAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ARRAY, 0); + + +export class PrimaryExpressionContext extends antlr.ParserRuleContext { + public _a_expr_in_parens?: ExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } public select_with_parens(): Select_with_parensContext | null { return this.getRuleContext(0, Select_with_parensContext); } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXISTS, 0); + } + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); + } + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ARRAY, 0); + } public array_expr(): Array_exprContext | null { return this.getRuleContext(0, Array_exprContext); } @@ -103210,26 +79104,89 @@ export class C_expr_exprContext extends C_exprContext { public KW_GROUPING(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_GROUPING, 0); } + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); + } + public Integral(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Integral, 0); + } + public Numeric(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Numeric, 0); + } + public BinaryStringConstant(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.BinaryStringConstant, 0); + } + public HexadecimalStringConstant(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.HexadecimalStringConstant, 0); + } + public function_name(): Function_nameContext | null { + return this.getRuleContext(0, Function_nameContext); + } + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); + } public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public expr_list(): Expr_listContext | null { - return this.getRuleContext(0, Expr_listContext); + public func_arg_list(): Func_arg_listContext | null { + return this.getRuleContext(0, Func_arg_listContext); } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public KW_UNIQUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); + public sort_clause(): Sort_clauseContext | null { + return this.getRuleContext(0, Sort_clauseContext); + } + public consttypename(): ConsttypenameContext | null { + return this.getRuleContext(0, ConsttypenameContext); + } + public KW_INTERVAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTERVAL, 0); + } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); + } + public opt_interval(): Opt_intervalContext | null { + return this.getRuleContext(0, Opt_intervalContext); + } + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUE, 0); + } + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FALSE, 0); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); + } + public PLSQLVARIABLENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLSQLVARIABLENAME, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public KW_CASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CASE, 0); } - public aexprconst(): AexprconstContext | null { - return this.getRuleContext(0, AexprconstContext); + public KW_END(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_END, 0); } - public plsqlvariablename(): PlsqlvariablenameContext | null { - return this.getRuleContext(0, PlsqlvariablenameContext); + public when_clause(): When_clauseContext[]; + public when_clause(i: number): When_clauseContext | null; + public when_clause(i?: number): When_clauseContext[] | When_clauseContext | null { + if (i === undefined) { + return this.getRuleContexts(When_clauseContext); + } + + return this.getRuleContext(i, When_clauseContext); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public KW_ELSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ELSE, 0); } public func_expr(): Func_exprContext | null { return this.getRuleContext(0, Func_exprContext); @@ -103240,8 +79197,11 @@ export class C_expr_exprContext extends C_exprContext { public explicit_row(): Explicit_rowContext | null { return this.getRuleContext(0, Explicit_rowContext); } - public implicit_row(): Implicit_rowContext | null { - return this.getRuleContext(0, Implicit_rowContext); + public COMMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COMMA, 0); + } + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); } public row(): RowContext[]; public row(i: number): RowContext | null; @@ -103255,52 +79215,73 @@ export class C_expr_exprContext extends C_exprContext { public KW_OVERLAPS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_OVERLAPS, 0); } - public columnref(): ColumnrefContext | null { - return this.getRuleContext(0, ColumnrefContext); + public qualified_name(): Qualified_nameContext | null { + return this.getRuleContext(0, Qualified_nameContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterC_expr_expr) { - listener.enterC_expr_expr(this); + public primaryExpression(): PrimaryExpressionContext[]; + public primaryExpression(i: number): PrimaryExpressionContext | null; + public primaryExpression(i?: number): PrimaryExpressionContext[] | PrimaryExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(PrimaryExpressionContext); } + + return this.getRuleContext(i, PrimaryExpressionContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitC_expr_expr) { - listener.exitC_expr_expr(this); - } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLUS, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitC_expr_expr) { - return visitor.visitC_expr_expr(this); - } else { - return visitor.visitChildren(this); - } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.MINUS, 0); } -} - - -export class PlsqlvariablenameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public qual_op(): Qual_opContext | null { + return this.getRuleContext(0, Qual_opContext); + } + public mathop(): MathopContext | null { + return this.getRuleContext(0, MathopContext); + } + public TYPECAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.TYPECAST, 0); + } + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); + } + public KW_IS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IS, 0); + } + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); + } + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OF, 0); + } + public prep_type_clause(): Prep_type_clauseContext | null { + return this.getRuleContext(0, Prep_type_clauseContext); + } + public KW_DOCUMENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DOCUMENT, 0); } - public PLSQLVARIABLENAME(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.PLSQLVARIABLENAME, 0)!; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsqlvariablename; + return PostgreSqlParser.RULE_primaryExpression; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsqlvariablename) { - listener.enterPlsqlvariablename(this); + if(listener.enterPrimaryExpression) { + listener.enterPrimaryExpression(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsqlvariablename) { - listener.exitPlsqlvariablename(this); + if(listener.exitPrimaryExpression) { + listener.exitPrimaryExpression(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsqlvariablename) { - return visitor.visitPlsqlvariablename(this); + if (visitor.visitPrimaryExpression) { + return visitor.visitPrimaryExpression(this); } else { return visitor.visitChildren(this); } @@ -103342,8 +79323,8 @@ export class Func_applicationContext extends antlr.ParserRuleContext { public COMMA(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.COMMA, 0); } - public opt_sort_clause(): Opt_sort_clauseContext | null { - return this.getRuleContext(0, Opt_sort_clauseContext); + public sort_clause(): Sort_clauseContext | null { + return this.getRuleContext(0, Sort_clauseContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_func_application; @@ -103358,31 +79339,67 @@ export class Func_applicationContext extends antlr.ParserRuleContext { listener.exitFunc_application(this); } } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFunc_application) { - return visitor.visitFunc_application(this); - } else { - return visitor.visitChildren(this); - } + public override accept(visitor: PostgreSqlParserVisitor): Result | null { + if (visitor.visitFunc_application) { + return visitor.visitFunc_application(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class Func_exprContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public func_application(): Func_applicationContext | null { + return this.getRuleContext(0, Func_applicationContext); + } + public KW_WITHIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHIN, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); + } + public OPEN_PAREN(): antlr.TerminalNode[]; + public OPEN_PAREN(i: number): antlr.TerminalNode | null; + public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.OPEN_PAREN); + } else { + return this.getToken(PostgreSqlParser.OPEN_PAREN, i); + } + } + public sort_clause(): Sort_clauseContext | null { + return this.getRuleContext(0, Sort_clauseContext); + } + public CLOSE_PAREN(): antlr.TerminalNode[]; + public CLOSE_PAREN(i: number): antlr.TerminalNode | null; + public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.CLOSE_PAREN); + } else { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); + } + } + public KW_FILTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FILTER, 0); } -} - - -export class Func_exprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHERE, 0); } - public func_application(): Func_applicationContext | null { - return this.getRuleContext(0, Func_applicationContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public within_group_clause(): Within_group_clauseContext | null { - return this.getRuleContext(0, Within_group_clauseContext); + public KW_OVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OVER, 0); } - public filter_clause(): Filter_clauseContext | null { - return this.getRuleContext(0, Filter_clauseContext); + public window_specification(): Window_specificationContext | null { + return this.getRuleContext(0, Window_specificationContext); } - public over_clause(): Over_clauseContext | null { - return this.getRuleContext(0, Over_clauseContext); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } public func_expr_common_subexpr(): Func_expr_common_subexprContext | null { return this.getRuleContext(0, Func_expr_common_subexprContext); @@ -103453,20 +79470,32 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_FOR(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public OPEN_PAREN(): antlr.TerminalNode[]; + public OPEN_PAREN(i: number): antlr.TerminalNode | null; + public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.OPEN_PAREN); + } else { + return this.getToken(PostgreSqlParser.OPEN_PAREN, i); + } } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_exprContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, A_exprContext); + return this.getRuleContext(i, ExpressionContext); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public CLOSE_PAREN(): antlr.TerminalNode[]; + public CLOSE_PAREN(i: number): antlr.TerminalNode | null; + public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.CLOSE_PAREN); + } else { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); + } } public KW_CURRENT_DATE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CURRENT_DATE, 0); @@ -103474,9 +79503,6 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_CURRENT_TIME(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CURRENT_TIME, 0); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CURRENT_TIMESTAMP, 0); } @@ -103486,6 +79512,9 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_LOCALTIMESTAMP(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_LOCALTIMESTAMP, 0); } + public opt_float(): Opt_floatContext | null { + return this.getRuleContext(0, Opt_floatContext); + } public KW_CURRENT_ROLE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CURRENT_ROLE, 0); } @@ -103504,26 +79533,38 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CAST, 0); - } public KW_AS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_AS, 0); } public typename(): TypenameContext | null { return this.getRuleContext(0, TypenameContext); } + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CAST, 0); + } + public KW_TREAT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TREAT, 0); + } public KW_EXTRACT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_EXTRACT, 0); } - public extract_list(): Extract_listContext | null { - return this.getRuleContext(0, Extract_listContext); + public extract_arg(): Extract_argContext | null { + return this.getRuleContext(0, Extract_argContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } public KW_NORMALIZE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NORMALIZE, 0); } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public unicode_normal_form(): Unicode_normal_formContext | null { return this.getRuleContext(0, Unicode_normal_formContext); @@ -103531,14 +79572,23 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_OVERLAY(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_OVERLAY, 0); } - public overlay_list(): Overlay_listContext | null { - return this.getRuleContext(0, Overlay_listContext); + public KW_PLACING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PLACING, 0); } public KW_POSITION(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_POSITION, 0); } - public position_list(): Position_listContext | null { - return this.getRuleContext(0, Position_listContext); + public primaryExpression(): PrimaryExpressionContext[]; + public primaryExpression(i: number): PrimaryExpressionContext | null; + public primaryExpression(i?: number): PrimaryExpressionContext[] | PrimaryExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(PrimaryExpressionContext); + } + + return this.getRuleContext(i, PrimaryExpressionContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); } public KW_SUBSTRING(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_SUBSTRING, 0); @@ -103546,14 +79596,11 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public substr_list(): Substr_listContext | null { return this.getRuleContext(0, Substr_listContext); } - public KW_TREAT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TREAT, 0); - } public KW_TRIM(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_TRIM, 0); } - public trim_list(): Trim_listContext | null { - return this.getRuleContext(0, Trim_listContext); + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); } public KW_BOTH(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_BOTH, 0); @@ -103567,12 +79614,12 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_NULLIF(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NULLIF, 0); } + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); + } public KW_COALESCE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_COALESCE, 0); } - public expr_list(): Expr_listContext | null { - return this.getRuleContext(0, Expr_listContext); - } public KW_GREATEST(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_GREATEST, 0); } @@ -103591,32 +79638,35 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public collabel(): CollabelContext | null { return this.getRuleContext(0, CollabelContext); } - public xml_attributes(): Xml_attributesContext | null { - return this.getRuleContext(0, Xml_attributesContext); + public KW_XMLATTRIBUTES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLATTRIBUTES, 0); + } + public xml_attribute_list(): Xml_attribute_listContext | null { + return this.getRuleContext(0, Xml_attribute_listContext); } public KW_XMLEXISTS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_XMLEXISTS, 0); } - public c_expr(): C_exprContext | null { - return this.getRuleContext(0, C_exprContext); - } public xmlexists_argument(): Xmlexists_argumentContext | null { return this.getRuleContext(0, Xmlexists_argumentContext); } public KW_XMLFOREST(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_XMLFOREST, 0); } - public xml_attribute_list(): Xml_attribute_listContext | null { - return this.getRuleContext(0, Xml_attribute_listContext); - } public KW_XMLPARSE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_XMLPARSE, 0); } public document_or_content(): Document_or_contentContext | null { return this.getRuleContext(0, Document_or_contentContext); } - public xml_whitespace_option(): Xml_whitespace_optionContext | null { - return this.getRuleContext(0, Xml_whitespace_optionContext); + public KW_WHITESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHITESPACE, 0); + } + public KW_PRESERVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRESERVE, 0); + } + public KW_STRIP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STRIP, 0); } public KW_XMLPI(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_XMLPI, 0); @@ -103627,11 +79677,32 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { public KW_XML(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_XML, 0); } - public xml_root_version(): Xml_root_versionContext | null { - return this.getRuleContext(0, Xml_root_versionContext); + public KW_VERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VERSION, 0); + } + public KW_STANDALONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STANDALONE, 0); + } + public KW_NO(): antlr.TerminalNode[]; + public KW_NO(i: number): antlr.TerminalNode | null; + public KW_NO(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_NO); + } else { + return this.getToken(PostgreSqlParser.KW_NO, i); + } } - public opt_xml_root_standalone(): Opt_xml_root_standaloneContext | null { - return this.getRuleContext(0, Opt_xml_root_standaloneContext); + public KW_VALUE(): antlr.TerminalNode[]; + public KW_VALUE(i: number): antlr.TerminalNode | null; + public KW_VALUE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_VALUE); + } else { + return this.getToken(PostgreSqlParser.KW_VALUE, i); + } + } + public KW_YES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_YES, 0); } public KW_XMLSERIALIZE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_XMLSERIALIZE, 0); @@ -103662,126 +79733,6 @@ export class Func_expr_common_subexprContext extends antlr.ParserRuleContext { } -export class Xml_root_versionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_VERSION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_VERSION, 0)!; - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_VALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xml_root_version; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXml_root_version) { - listener.enterXml_root_version(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXml_root_version) { - listener.exitXml_root_version(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXml_root_version) { - return visitor.visitXml_root_version(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_xml_root_standaloneContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public COMMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.COMMA, 0)!; - } - public KW_STANDALONE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_STANDALONE, 0)!; - } - public KW_YES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_YES, 0); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_VALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_xml_root_standalone; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_xml_root_standalone) { - listener.enterOpt_xml_root_standalone(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_xml_root_standalone) { - listener.exitOpt_xml_root_standalone(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_xml_root_standalone) { - return visitor.visitOpt_xml_root_standalone(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Xml_attributesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_XMLATTRIBUTES(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_XMLATTRIBUTES, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public xml_attribute_list(): Xml_attribute_listContext { - return this.getRuleContext(0, Xml_attribute_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xml_attributes; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXml_attributes) { - listener.enterXml_attributes(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXml_attributes) { - listener.exitXml_attributes(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXml_attributes) { - return visitor.visitXml_attributes(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Xml_attribute_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -103831,8 +79782,8 @@ export class Xml_attribute_elContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public KW_AS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_AS, 0); @@ -103896,42 +79847,6 @@ export class Document_or_contentContext extends antlr.ParserRuleContext { } -export class Xml_whitespace_optionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PRESERVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRESERVE, 0); - } - public KW_WHITESPACE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHITESPACE, 0)!; - } - public KW_STRIP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STRIP, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xml_whitespace_option; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXml_whitespace_option) { - listener.enterXml_whitespace_option(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXml_whitespace_option) { - listener.exitXml_whitespace_option(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXml_whitespace_option) { - return visitor.visitXml_whitespace_option(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Xmlexists_argumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -103939,8 +79854,8 @@ export class Xmlexists_argumentContext extends antlr.ParserRuleContext { public KW_PASSING(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_PASSING, 0)!; } - public c_expr(): C_exprContext { - return this.getRuleContext(0, C_exprContext)!; + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; } public xml_passing_mech(): Xml_passing_mechContext[]; public xml_passing_mech(i: number): Xml_passing_mechContext | null; @@ -104010,90 +79925,6 @@ export class Xml_passing_mechContext extends antlr.ParserRuleContext { } -export class Within_group_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITHIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WITHIN, 0)!; - } - public KW_GROUP(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GROUP, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public sort_clause(): Sort_clauseContext { - return this.getRuleContext(0, Sort_clauseContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_within_group_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWithin_group_clause) { - listener.enterWithin_group_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWithin_group_clause) { - listener.exitWithin_group_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWithin_group_clause) { - return visitor.visitWithin_group_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Filter_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_FILTER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FILTER, 0)!; - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public KW_WHERE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHERE, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_filter_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFilter_clause) { - listener.enterFilter_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFilter_clause) { - listener.exitFilter_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFilter_clause) { - return visitor.visitFilter_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Window_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -104101,36 +79932,6 @@ export class Window_clauseContext extends antlr.ParserRuleContext { public KW_WINDOW(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_WINDOW, 0)!; } - public window_definition_list(): Window_definition_listContext { - return this.getRuleContext(0, Window_definition_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_window_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWindow_clause) { - listener.enterWindow_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWindow_clause) { - listener.exitWindow_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWindow_clause) { - return visitor.visitWindow_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Window_definition_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public window_definition(): Window_definitionContext[]; public window_definition(i: number): Window_definitionContext | null; public window_definition(i?: number): Window_definitionContext[] | Window_definitionContext | null { @@ -104150,21 +79951,21 @@ export class Window_definition_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_window_definition_list; + return PostgreSqlParser.RULE_window_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWindow_definition_list) { - listener.enterWindow_definition_list(this); + if(listener.enterWindow_clause) { + listener.enterWindow_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWindow_definition_list) { - listener.exitWindow_definition_list(this); + if(listener.exitWindow_clause) { + listener.exitWindow_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWindow_definition_list) { - return visitor.visitWindow_definition_list(this); + if (visitor.visitWindow_clause) { + return visitor.visitWindow_clause(this); } else { return visitor.visitChildren(this); } @@ -104254,14 +80055,20 @@ export class Window_specificationContext extends antlr.ParserRuleContext { public CLOSE_PAREN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; } - public opt_existing_window_name(): Opt_existing_window_nameContext | null { - return this.getRuleContext(0, Opt_existing_window_nameContext); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BY, 0); } - public opt_partition_clause(): Opt_partition_clauseContext | null { - return this.getRuleContext(0, Opt_partition_clauseContext); + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); } - public opt_sort_clause(): Opt_sort_clauseContext | null { - return this.getRuleContext(0, Opt_sort_clauseContext); + public sort_clause(): Sort_clauseContext | null { + return this.getRuleContext(0, Sort_clauseContext); } public opt_frame_clause(): Opt_frame_clauseContext | null { return this.getRuleContext(0, Opt_frame_clauseContext); @@ -104289,72 +80096,6 @@ export class Window_specificationContext extends antlr.ParserRuleContext { } -export class Opt_existing_window_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_existing_window_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_existing_window_name) { - listener.enterOpt_existing_window_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_existing_window_name) { - listener.exitOpt_existing_window_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_existing_window_name) { - return visitor.visitOpt_existing_window_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_partition_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0)!; - } - public KW_BY(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BY, 0)!; - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_partition_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_partition_clause) { - listener.enterOpt_partition_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_partition_clause) { - listener.exitOpt_partition_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_partition_clause) { - return visitor.visitOpt_partition_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Opt_frame_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -104362,45 +80103,12 @@ export class Opt_frame_clauseContext extends antlr.ParserRuleContext { public KW_RANGE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_RANGE, 0); } - public frame_extent(): Frame_extentContext { - return this.getRuleContext(0, Frame_extentContext)!; - } - public opt_window_exclusion_clause(): Opt_window_exclusion_clauseContext | null { - return this.getRuleContext(0, Opt_window_exclusion_clauseContext); - } public KW_ROWS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ROWS, 0); } public KW_GROUPS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_GROUPS, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_frame_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_frame_clause) { - listener.enterOpt_frame_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_frame_clause) { - listener.exitOpt_frame_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_frame_clause) { - return visitor.visitOpt_frame_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Frame_extentContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public frame_bound(): Frame_boundContext[]; public frame_bound(i: number): Frame_boundContext | null; public frame_bound(i?: number): Frame_boundContext[] | Frame_boundContext | null { @@ -104410,28 +80118,49 @@ export class Frame_extentContext extends antlr.ParserRuleContext { return this.getRuleContext(i, Frame_boundContext); } + public KW_EXCLUDE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCLUDE, 0); + } public KW_BETWEEN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_BETWEEN, 0); } public KW_AND(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_AND, 0); } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); + } + public KW_TIES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIES, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); + } + public KW_OTHERS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OTHERS, 0); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_frame_extent; + return PostgreSqlParser.RULE_opt_frame_clause; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFrame_extent) { - listener.enterFrame_extent(this); + if(listener.enterOpt_frame_clause) { + listener.enterOpt_frame_clause(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFrame_extent) { - listener.exitFrame_extent(this); + if(listener.exitOpt_frame_clause) { + listener.exitOpt_frame_clause(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFrame_extent) { - return visitor.visitFrame_extent(this); + if (visitor.visitOpt_frame_clause) { + return visitor.visitOpt_frame_clause(this); } else { return visitor.visitChildren(this); } @@ -104443,24 +80172,24 @@ export class Frame_boundContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_UNBOUNDED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNBOUNDED, 0); - } public KW_PRECEDING(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_PRECEDING, 0); } public KW_FOLLOWING(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_FOLLOWING, 0); } + public KW_UNBOUNDED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNBOUNDED, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } public KW_CURRENT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_CURRENT, 0); } public KW_ROW(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ROW, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } public override get ruleIndex(): number { return PostgreSqlParser.RULE_frame_bound; } @@ -104484,66 +80213,15 @@ export class Frame_boundContext extends antlr.ParserRuleContext { } -export class Opt_window_exclusion_clauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_EXCLUDE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_EXCLUDE, 0)!; - } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); - } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); - } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); - } - public KW_TIES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIES, 0); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_OTHERS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OTHERS, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_window_exclusion_clause; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_window_exclusion_clause) { - listener.enterOpt_window_exclusion_clause(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_window_exclusion_clause) { - listener.exitOpt_window_exclusion_clause(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_window_exclusion_clause) { - return visitor.visitOpt_window_exclusion_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class RowContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public explicit_row(): Explicit_rowContext | null { + return this.getRuleContext(0, Explicit_rowContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } public expr_list(): Expr_listContext | null { return this.getRuleContext(0, Expr_listContext); @@ -104551,8 +80229,11 @@ export class RowContext extends antlr.ParserRuleContext { public COMMA(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.COMMA, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_row; @@ -104616,48 +80297,6 @@ export class Explicit_rowContext extends antlr.ParserRuleContext { } -export class Implicit_rowContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public COMMA(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.COMMA, 0)!; - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_implicit_row; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterImplicit_row) { - listener.enterImplicit_row(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitImplicit_row) { - listener.exitImplicit_row(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitImplicit_row) { - return visitor.visitImplicit_row(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Sub_typeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -104878,30 +80517,18 @@ export class Subquery_OpContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public all_op(): All_opContext | null { - return this.getRuleContext(0, All_opContext); - } - public KW_OPERATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPERATOR, 0); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public any_operator(): Any_operatorContext | null { - return this.getRuleContext(0, Any_operatorContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public qual_all_op(): Qual_all_opContext | null { + return this.getRuleContext(0, Qual_all_opContext); } public KW_LIKE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_LIKE, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); - } public KW_ILIKE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ILIKE, 0); } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); + } public override get ruleIndex(): number { return PostgreSqlParser.RULE_subquery_Op; } @@ -104929,14 +80556,14 @@ export class Expr_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_exprContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, A_exprContext); + return this.getRuleContext(i, ExpressionContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -104970,96 +80597,6 @@ export class Expr_listContext extends antlr.ParserRuleContext { } -export class Column_expr_list_noparenContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_expr_noparen(): Column_expr_noparenContext[]; - public column_expr_noparen(i: number): Column_expr_noparenContext | null; - public column_expr_noparen(i?: number): Column_expr_noparenContext[] | Column_expr_noparenContext | null { - if (i === undefined) { - return this.getRuleContexts(Column_expr_noparenContext); - } - - return this.getRuleContext(i, Column_expr_noparenContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_column_expr_list_noparen; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumn_expr_list_noparen) { - listener.enterColumn_expr_list_noparen(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumn_expr_list_noparen) { - listener.exitColumn_expr_list_noparen(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumn_expr_list_noparen) { - return visitor.visitColumn_expr_list_noparen(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Column_expr_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_expr(): Column_exprContext[]; - public column_expr(i: number): Column_exprContext | null; - public column_expr(i?: number): Column_exprContext[] | Column_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(Column_exprContext); - } - - return this.getRuleContext(i, Column_exprContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_column_expr_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumn_expr_list) { - listener.enterColumn_expr_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumn_expr_list) { - listener.exitColumn_expr_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumn_expr_list) { - return visitor.visitColumn_expr_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Column_exprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -105067,8 +80604,8 @@ export class Column_exprContext extends antlr.ParserRuleContext { public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); @@ -105103,8 +80640,8 @@ export class Column_expr_noparenContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public column_name(): Column_nameContext | null { return this.getRuleContext(0, Column_nameContext); @@ -105181,11 +80718,11 @@ export class Func_arg_exprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public param_name(): Param_nameContext | null { - return this.getRuleContext(0, Param_nameContext); + public type_function_name(): Type_function_nameContext | null { + return this.getRuleContext(0, Type_function_nameContext); } public COLON_EQUALS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.COLON_EQUALS, 0); @@ -105216,51 +80753,6 @@ export class Func_arg_exprContext extends antlr.ParserRuleContext { } -export class Type_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public typename(): TypenameContext[]; - public typename(i: number): TypenameContext | null; - public typename(i?: number): TypenameContext[] | TypenameContext | null { - if (i === undefined) { - return this.getRuleContexts(TypenameContext); - } - - return this.getRuleContext(i, TypenameContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_type_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterType_list) { - listener.enterType_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitType_list) { - listener.exitType_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitType_list) { - return visitor.visitType_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Array_exprContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -105274,36 +80766,6 @@ export class Array_exprContext extends antlr.ParserRuleContext { public expr_list(): Expr_listContext | null { return this.getRuleContext(0, Expr_listContext); } - public array_expr_list(): Array_expr_listContext | null { - return this.getRuleContext(0, Array_expr_listContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_array_expr; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterArray_expr) { - listener.enterArray_expr(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitArray_expr) { - listener.exitArray_expr(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitArray_expr) { - return visitor.visitArray_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Array_expr_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public array_expr(): Array_exprContext[]; public array_expr(i: number): Array_exprContext | null; public array_expr(i?: number): Array_exprContext[] | Array_exprContext | null { @@ -105323,57 +80785,21 @@ export class Array_expr_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_array_expr_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterArray_expr_list) { - listener.enterArray_expr_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitArray_expr_list) { - listener.exitArray_expr_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitArray_expr_list) { - return visitor.visitArray_expr_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Extract_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public extract_arg(): Extract_argContext { - return this.getRuleContext(0, Extract_argContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_extract_list; + return PostgreSqlParser.RULE_array_expr; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExtract_list) { - listener.enterExtract_list(this); + if(listener.enterArray_expr) { + listener.enterArray_expr(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExtract_list) { - listener.exitExtract_list(this); + if(listener.exitArray_expr) { + listener.exitArray_expr(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExtract_list) { - return visitor.visitExtract_list(this); + if (visitor.visitArray_expr) { + return visitor.visitArray_expr(this); } else { return visitor.visitChildren(this); } @@ -105471,102 +80897,18 @@ export class Unicode_normal_formContext extends antlr.ParserRuleContext { } -export class Overlay_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(A_exprContext); - } - - return this.getRuleContext(i, A_exprContext); - } - public KW_PLACING(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_PLACING, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FROM, 0)!; - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_overlay_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOverlay_list) { - listener.enterOverlay_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOverlay_list) { - listener.exitOverlay_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOverlay_list) { - return visitor.visitOverlay_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Position_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public b_expr(): B_exprContext[]; - public b_expr(i: number): B_exprContext | null; - public b_expr(i?: number): B_exprContext[] | B_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(B_exprContext); - } - - return this.getRuleContext(i, B_exprContext); - } - public KW_IN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_IN, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_position_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPosition_list) { - listener.enterPosition_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPosition_list) { - listener.exitPosition_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPosition_list) { - return visitor.visitPosition_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Substr_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_exprContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, A_exprContext); + return this.getRuleContext(i, ExpressionContext); } public KW_FROM(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_FROM, 0); @@ -105606,191 +80948,6 @@ export class Substr_listContext extends antlr.ParserRuleContext { } -export class Trim_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_trim_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterTrim_list) { - listener.enterTrim_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitTrim_list) { - listener.exitTrim_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitTrim_list) { - return visitor.visitTrim_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class In_exprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_in_expr; - } - public override copyFrom(ctx: In_exprContext): void { - super.copyFrom(ctx); - } -} -export class In_expr_listContext extends In_exprContext { - public constructor(ctx: In_exprContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIn_expr_list) { - listener.enterIn_expr_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIn_expr_list) { - listener.exitIn_expr_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIn_expr_list) { - return visitor.visitIn_expr_list(this); - } else { - return visitor.visitChildren(this); - } - } -} -export class In_expr_selectContext extends In_exprContext { - public constructor(ctx: In_exprContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public select_with_parens(): Select_with_parensContext { - return this.getRuleContext(0, Select_with_parensContext)!; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIn_expr_select) { - listener.enterIn_expr_select(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIn_expr_select) { - listener.exitIn_expr_select(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIn_expr_select) { - return visitor.visitIn_expr_select(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Case_exprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CASE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CASE, 0)!; - } - public when_clause_list(): When_clause_listContext { - return this.getRuleContext(0, When_clause_listContext)!; - } - public KW_END(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_END, 0)!; - } - public case_arg(): Case_argContext | null { - return this.getRuleContext(0, Case_argContext); - } - public case_default(): Case_defaultContext | null { - return this.getRuleContext(0, Case_defaultContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_case_expr; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCase_expr) { - listener.enterCase_expr(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCase_expr) { - listener.exitCase_expr(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCase_expr) { - return visitor.visitCase_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class When_clause_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public when_clause(): When_clauseContext[]; - public when_clause(i: number): When_clauseContext | null; - public when_clause(i?: number): When_clauseContext[] | When_clauseContext | null { - if (i === undefined) { - return this.getRuleContexts(When_clauseContext); - } - - return this.getRuleContext(i, When_clauseContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_when_clause_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterWhen_clause_list) { - listener.enterWhen_clause_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitWhen_clause_list) { - listener.exitWhen_clause_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitWhen_clause_list) { - return visitor.visitWhen_clause_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class When_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -105798,14 +80955,14 @@ export class When_clauseContext extends antlr.ParserRuleContext { public KW_WHEN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_WHEN, 0)!; } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_exprContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, A_exprContext); + return this.getRuleContext(i, ExpressionContext); } public KW_THEN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_THEN, 0)!; @@ -105833,102 +80990,6 @@ export class When_clauseContext extends antlr.ParserRuleContext { } -export class Case_defaultContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ELSE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ELSE, 0)!; - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_case_default; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCase_default) { - listener.enterCase_default(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCase_default) { - listener.exitCase_default(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCase_default) { - return visitor.visitCase_default(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Case_argContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_case_arg; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCase_arg) { - listener.enterCase_arg(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCase_arg) { - listener.exitCase_arg(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCase_arg) { - return visitor.visitCase_arg(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColumnrefContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_columnref; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterColumnref) { - listener.enterColumnref(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitColumnref) { - listener.exitColumnref(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitColumnref) { - return visitor.visitColumnref(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Indirection_elContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -105936,8 +80997,8 @@ export class Indirection_elContext extends antlr.ParserRuleContext { public DOT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.DOT, 0); } - public attr_name(): Attr_nameContext | null { - return this.getRuleContext(0, Attr_nameContext); + public collabel(): CollabelContext | null { + return this.getRuleContext(0, CollabelContext); } public STAR(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.STAR, 0); @@ -105948,20 +81009,17 @@ export class Indirection_elContext extends antlr.ParserRuleContext { public CLOSE_BRACKET(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_BRACKET, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public COLON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COLON, 0); - } - public opt_slice_bound(): Opt_slice_boundContext[]; - public opt_slice_bound(i: number): Opt_slice_boundContext | null; - public opt_slice_bound(i?: number): Opt_slice_boundContext[] | Opt_slice_boundContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(Opt_slice_boundContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, Opt_slice_boundContext); + return this.getRuleContext(i, ExpressionContext); + } + public COLON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COLON, 0); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_indirection_el; @@ -105986,36 +81044,6 @@ export class Indirection_elContext extends antlr.ParserRuleContext { } -export class Opt_slice_boundContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_slice_bound; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_slice_bound) { - listener.enterOpt_slice_bound(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_slice_bound) { - listener.exitOpt_slice_bound(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_slice_bound) { - return visitor.visitOpt_slice_bound(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class IndirectionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -106088,36 +81116,6 @@ export class Opt_indirectionContext extends antlr.ParserRuleContext { } -export class Opt_target_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public target_list(): Target_listContext { - return this.getRuleContext(0, Target_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_target_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_target_list) { - listener.enterOpt_target_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_target_list) { - listener.exitOpt_target_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_target_list) { - return visitor.visitOpt_target_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Target_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -106417,51 +81415,6 @@ export class Database_nameListContext extends antlr.ParserRuleContext { } -export class Procedure_name_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public procedure_name(): Procedure_nameContext[]; - public procedure_name(i: number): Procedure_nameContext | null; - public procedure_name(i?: number): Procedure_nameContext[] | Procedure_nameContext | null { - if (i === undefined) { - return this.getRuleContexts(Procedure_nameContext); - } - - return this.getRuleContext(i, Procedure_nameContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_procedure_name_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProcedure_name_list) { - listener.enterProcedure_name_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProcedure_name_list) { - listener.exitProcedure_name_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProcedure_name_list) { - return visitor.visitProcedure_name_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Tablespace_name_createContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -106478,11 +81431,8 @@ export class TablespaceNameCreateContext extends Tablespace_name_createContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterTablespaceNameCreate) { @@ -106520,11 +81470,8 @@ export class TablespaceNameContext extends Tablespace_nameContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterTablespaceName) { @@ -106562,11 +81509,8 @@ export class TableNameCreateContext extends Table_name_createContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterTableNameCreate) { @@ -106604,11 +81548,8 @@ export class TableNameContext extends Table_nameContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterTableName) { @@ -106646,11 +81587,8 @@ export class ViewNameCreateContext extends View_name_createContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); + public qualified_name(): Qualified_nameContext { + return this.getRuleContext(0, Qualified_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterViewNameCreate) { @@ -106688,11 +81626,8 @@ export class ViewNameContext extends View_nameContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterViewName) { @@ -106796,14 +81731,14 @@ export class Name_listContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public name(): NameContext[]; - public name(i: number): NameContext | null; - public name(i?: number): NameContext[] | NameContext | null { + public colid(): ColidContext[]; + public colid(i: number): ColidContext | null; + public colid(i?: number): ColidContext[] | ColidContext | null { if (i === undefined) { - return this.getRuleContexts(NameContext); + return this.getRuleContexts(ColidContext); } - return this.getRuleContext(i, NameContext); + return this.getRuleContext(i, ColidContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -106853,12 +81788,9 @@ export class DatabaseNameCreateContext extends Database_name_createContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); - } + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; + } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterDatabaseNameCreate) { listener.enterDatabaseNameCreate(this); @@ -106895,11 +81827,8 @@ export class DatabaseNameContext extends Database_nameContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterDatabaseName) { @@ -106937,11 +81866,8 @@ export class SchemaNameContext extends Schema_nameContext { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public attrs(): AttrsContext | null { - return this.getRuleContext(0, AttrsContext); + public any_name(): Any_nameContext { + return this.getRuleContext(0, Any_nameContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterSchemaName) { @@ -107173,14 +82099,8 @@ export class ColumnNameContext extends Column_nameContext { public colid(): ColidContext { return this.getRuleContext(0, ColidContext)!; } - public indirection_el(): Indirection_elContext[]; - public indirection_el(i: number): Indirection_elContext | null; - public indirection_el(i?: number): Indirection_elContext[] | Indirection_elContext | null { - if (i === undefined) { - return this.getRuleContexts(Indirection_elContext); - } - - return this.getRuleContext(i, Indirection_elContext); + public opt_indirection(): Opt_indirectionContext { + return this.getRuleContext(0, Opt_indirectionContext)!; } public override enterRule(listener: PostgreSqlParserListener): void { if(listener.enterColumnName) { @@ -107241,96 +82161,6 @@ export class ColumnNameCreateContext extends Column_name_createContext { } -export class NameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterName) { - listener.enterName(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitName) { - listener.exitName(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitName) { - return visitor.visitName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Attr_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public collabel(): CollabelContext { - return this.getRuleContext(0, CollabelContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_attr_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAttr_name) { - listener.enterAttr_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAttr_name) { - listener.exitAttr_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAttr_name) { - return visitor.visitAttr_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class File_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sconst(): SconstContext { - return this.getRuleContext(0, SconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_file_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFile_name) { - listener.enterFile_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFile_name) { - listener.exitFile_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFile_name) { - return visitor.visitFile_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Function_name_createContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -107421,246 +82251,21 @@ export class FunctionNameContext extends Function_nameContext { } -export class Usual_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public type_usual_name(): Type_usual_nameContext | null { - return this.getRuleContext(0, Type_usual_nameContext); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } - public indirection(): IndirectionContext | null { - return this.getRuleContext(0, IndirectionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_usual_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterUsual_name) { - listener.enterUsual_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitUsual_name) { - listener.exitUsual_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitUsual_name) { - return visitor.visitUsual_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AexprconstContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); - } - public fconst(): FconstContext | null { - return this.getRuleContext(0, FconstContext); - } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public bconst(): BconstContext | null { - return this.getRuleContext(0, BconstContext); - } - public xconst(): XconstContext | null { - return this.getRuleContext(0, XconstContext); - } - public function_name(): Function_nameContext | null { - return this.getRuleContext(0, Function_nameContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public func_arg_list(): Func_arg_listContext | null { - return this.getRuleContext(0, Func_arg_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public opt_sort_clause(): Opt_sort_clauseContext | null { - return this.getRuleContext(0, Opt_sort_clauseContext); - } - public consttypename(): ConsttypenameContext | null { - return this.getRuleContext(0, ConsttypenameContext); - } - public constinterval(): ConstintervalContext | null { - return this.getRuleContext(0, ConstintervalContext); - } - public opt_interval(): Opt_intervalContext | null { - return this.getRuleContext(0, Opt_intervalContext); - } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); - } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_aexprconst; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterAexprconst) { - listener.enterAexprconst(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitAexprconst) { - listener.exitAexprconst(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitAexprconst) { - return visitor.visitAexprconst(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class XconstContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public HexadecimalStringConstant(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.HexadecimalStringConstant, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_xconst; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterXconst) { - listener.enterXconst(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitXconst) { - listener.exitXconst(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitXconst) { - return visitor.visitXconst(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BconstContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public BinaryStringConstant(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.BinaryStringConstant, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_bconst; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterBconst) { - listener.enterBconst(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitBconst) { - listener.exitBconst(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitBconst) { - return visitor.visitBconst(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FconstContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public Numeric(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.Numeric, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_fconst; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFconst) { - listener.enterFconst(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFconst) { - listener.exitFconst(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFconst) { - return visitor.visitFconst(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IconstContext extends antlr.ParserRuleContext { +export class SconstContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public Integral(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.Integral, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_iconst; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIconst) { - listener.enterIconst(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIconst) { - listener.exitIconst(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIconst) { - return visitor.visitIconst(this); - } else { - return visitor.visitChildren(this); + public anysconst(): AnysconstContext[]; + public anysconst(i: number): AnysconstContext | null; + public anysconst(i?: number): AnysconstContext[] | AnysconstContext | null { + if (i === undefined) { + return this.getRuleContexts(AnysconstContext); } - } -} - -export class SconstContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, AnysconstContext); } - public anysconst(): AnysconstContext { - return this.getRuleContext(0, AnysconstContext)!; - } - public opt_uescape(): Opt_uescapeContext | null { - return this.getRuleContext(0, Opt_uescapeContext); + public KW_UESCAPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UESCAPE, 0); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_sconst; @@ -107736,45 +82341,12 @@ export class AnysconstContext extends antlr.ParserRuleContext { } -export class Opt_uescapeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UESCAPE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_UESCAPE, 0)!; - } - public anysconst(): AnysconstContext { - return this.getRuleContext(0, AnysconstContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_uescape; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_uescape) { - listener.enterOpt_uescape(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_uescape) { - listener.exitOpt_uescape(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_uescape) { - return visitor.visitOpt_uescape(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class SignediconstContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public iconst(): IconstContext { - return this.getRuleContext(0, IconstContext)!; + public Integral(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.Integral, 0)!; } public PLUS(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.PLUS, 0); @@ -107805,66 +82377,6 @@ export class SignediconstContext extends antlr.ParserRuleContext { } -export class GroupnameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_groupname; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGroupname) { - listener.enterGroupname(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGroupname) { - listener.exitGroupname(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGroupname) { - return visitor.visitGroupname(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RoleidContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public rolespec(): RolespecContext { - return this.getRuleContext(0, RolespecContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_roleid; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterRoleid) { - listener.enterRoleid(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitRoleid) { - listener.exitRoleid(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitRoleid) { - return visitor.visitRoleid(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class RolespecContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -107991,120 +82503,6 @@ export class ColidContext extends antlr.ParserRuleContext { } -export class Index_method_choicesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_method_choices; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_method_choices) { - listener.enterIndex_method_choices(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_method_choices) { - listener.exitIndex_method_choices(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_method_choices) { - return visitor.visitIndex_method_choices(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Exclude_elementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_definition(): Opt_definitionContext | null { - return this.getRuleContext(0, Opt_definitionContext); - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public opt_asc_desc(): Opt_asc_descContext | null { - return this.getRuleContext(0, Opt_asc_descContext); - } - public opt_nulls_order(): Opt_nulls_orderContext | null { - return this.getRuleContext(0, Opt_nulls_orderContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exclude_element; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExclude_element) { - listener.enterExclude_element(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExclude_element) { - listener.exitExclude_element(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExclude_element) { - return visitor.visitExclude_element(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Index_paramentersContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); - } - public reloptions(): ReloptionsContext | null { - return this.getRuleContext(0, ReloptionsContext); - } - public optconstablespace(): OptconstablespaceContext | null { - return this.getRuleContext(0, OptconstablespaceContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_index_paramenters; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIndex_paramenters) { - listener.enterIndex_paramenters(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIndex_paramenters) { - listener.exitIndex_paramenters(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIndex_paramenters) { - return visitor.visitIndex_paramenters(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Type_function_nameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -108144,78 +82542,6 @@ export class Type_function_nameContext extends antlr.ParserRuleContext { } -export class Type_usual_nameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); - } - public type_func_name_keyword(): Type_func_name_keywordContext | null { - return this.getRuleContext(0, Type_func_name_keywordContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_type_usual_name; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterType_usual_name) { - listener.enterType_usual_name(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitType_usual_name) { - listener.exitType_usual_name(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitType_usual_name) { - return visitor.visitType_usual_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Nonreservedword_columnContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public column_name(): Column_nameContext | null { - return this.getRuleContext(0, Column_nameContext); - } - public type_func_name_keyword(): Type_func_name_keywordContext | null { - return this.getRuleContext(0, Type_func_name_keywordContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_nonreservedword_column; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterNonreservedword_column) { - listener.enterNonreservedword_column(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitNonreservedword_column) { - listener.exitNonreservedword_column(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitNonreservedword_column) { - return visitor.visitNonreservedword_column(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class NonreservedwordContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -108259,21 +82585,12 @@ export class CollabelContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public nonreservedword(): NonreservedwordContext | null { + return this.getRuleContext(0, NonreservedwordContext); } public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { return this.getRuleContext(0, Plsql_unreserved_keywordContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } - public col_name_keyword(): Col_name_keywordContext | null { - return this.getRuleContext(0, Col_name_keywordContext); - } - public type_func_name_keyword(): Type_func_name_keywordContext | null { - return this.getRuleContext(0, Type_func_name_keywordContext); - } public reserved_keyword(): Reserved_keywordContext | null { return this.getRuleContext(0, Reserved_keywordContext); } @@ -108307,8 +82624,11 @@ export class IdentifierContext extends antlr.ParserRuleContext { public Identifier(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.Identifier, 0); } - public opt_uescape(): Opt_uescapeContext | null { - return this.getRuleContext(0, Opt_uescapeContext); + public KW_UESCAPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UESCAPE, 0); + } + public anysconst(): AnysconstContext | null { + return this.getRuleContext(0, AnysconstContext); } public sconst(): SconstContext | null { return this.getRuleContext(0, SconstContext); @@ -108319,61 +82639,31 @@ export class IdentifierContext extends antlr.ParserRuleContext { public UnicodeQuotedIdentifier(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.UnicodeQuotedIdentifier, 0); } - public plsqlvariablename(): PlsqlvariablenameContext | null { - return this.getRuleContext(0, PlsqlvariablenameContext); + public PLSQLVARIABLENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLSQLVARIABLENAME, 0); } - public plsqlidentifier(): PlsqlidentifierContext | null { - return this.getRuleContext(0, PlsqlidentifierContext); + public PLSQLIDENTIFIER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PLSQLIDENTIFIER, 0); } public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_identifier; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterIdentifier) { - listener.enterIdentifier(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitIdentifier) { - listener.exitIdentifier(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitIdentifier) { - return visitor.visitIdentifier(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PlsqlidentifierContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public PLSQLIDENTIFIER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.PLSQLIDENTIFIER, 0)!; + return this.getRuleContext(0, Plsql_unreserved_keywordContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsqlidentifier; + return PostgreSqlParser.RULE_identifier; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsqlidentifier) { - listener.enterPlsqlidentifier(this); + if(listener.enterIdentifier) { + listener.enterIdentifier(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsqlidentifier) { - listener.exitPlsqlidentifier(this); + if(listener.exitIdentifier) { + listener.exitIdentifier(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsqlidentifier) { - return visitor.visitPlsqlidentifier(this); + if (visitor.visitIdentifier) { + return visitor.visitIdentifier(this); } else { return visitor.visitChildren(this); } @@ -108916,922 +83206,394 @@ export class Unreserved_keywordContext extends antlr.ParserRuleContext { public KW_PARSER(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_PARSER, 0); } - public KW_PARTIAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARTIAL, 0); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PARTITION, 0); - } - public KW_PASSING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PASSING, 0); - } - public KW_PASSWORD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PASSWORD, 0); - } - public KW_PLANS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PLANS, 0); - } - public KW_POLICY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_POLICY, 0); - } - public KW_PRECEDING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRECEDING, 0); - } - public KW_PREPARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PREPARE, 0); - } - public KW_PREPARED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PREPARED, 0); - } - public KW_PRESERVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRESERVE, 0); - } - public KW_PRIOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIOR, 0); - } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIVILEGES, 0); - } - public KW_PROCEDURAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); - } - public KW_PROCEDURE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); - } - public KW_PROCEDURES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROCEDURES, 0); - } - public KW_PROGRAM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PROGRAM, 0); - } - public KW_PUBLICATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); - } - public KW_QUOTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_QUOTE, 0); - } - public KW_RANGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RANGE, 0); - } - public KW_READ(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_READ, 0); - } - public KW_REASSIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REASSIGN, 0); - } - public KW_RECHECK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RECHECK, 0); - } - public KW_RECURSIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RECURSIVE, 0); - } - public KW_REF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REF, 0); - } - public KW_REFERENCING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFERENCING, 0); - } - public KW_REFRESH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFRESH, 0); - } - public KW_REINDEX(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REINDEX, 0); - } - public KW_RELATIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); - } - public KW_RELEASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RELEASE, 0); - } - public KW_RENAME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RENAME, 0); - } - public KW_REPEATABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPEATABLE, 0); - } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLACE, 0); - } - public KW_REPLICA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REPLICA, 0); - } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); - } - public KW_RESTART(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTART, 0); - } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); - } - public KW_RETURNS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RETURNS, 0); - } - public KW_REVOKE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REVOKE, 0); - } - public KW_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLE, 0); - } - public KW_ROLLBACK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); - } - public KW_ROLLUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLLUP, 0); - } - public KW_ROUTINE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); - } - public KW_ROUTINES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROUTINES, 0); - } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWS, 0); - } - public KW_RULE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RULE, 0); - } - public KW_SAVEPOINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SAVEPOINT, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public KW_SCHEMAS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMAS, 0); - } - public KW_SCROLL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCROLL, 0); - } - public KW_SEARCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEARCH, 0); - } - public KW_SECOND(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SECOND, 0); - } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SECURITY, 0); - } - public KW_SEQUENCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); - } - public KW_SEQUENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); - } - public KW_SERIALIZABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERIALIZABLE, 0); - } - public KW_SERVER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SERVER, 0); - } - public KW_SESSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION, 0); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_SETS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SETS, 0); - } - public KW_SHARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SHARE, 0); - } - public KW_SHOW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SHOW, 0); - } - public KW_SIMPLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SIMPLE, 0); - } - public KW_SKIP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SKIP, 0); - } - public KW_SKIP_LOCKED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SKIP_LOCKED, 0); - } - public KW_SNAPSHOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SNAPSHOT, 0); - } - public KW_SQL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SQL, 0); - } - public KW_STABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STABLE, 0); - } - public KW_STANDALONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STANDALONE, 0); - } - public KW_START(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_START, 0); - } - public KW_STATEMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATEMENT, 0); - } - public KW_STATISTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); - } - public KW_STDIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STDIN, 0); - } - public KW_STDOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STDOUT, 0); - } - public KW_STORAGE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STORAGE, 0); - } - public KW_STORED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STORED, 0); - } - public KW_STRICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STRICT, 0); - } - public KW_STRIP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STRIP, 0); - } - public KW_SUBSCRIPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); - } - public KW_SUPPORT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUPPORT, 0); - } - public KW_SYSID(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SYSID, 0); - } - public KW_SYSTEM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SYSTEM, 0); - } - public KW_TABLES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLES, 0); - } - public KW_TABLESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); - } - public KW_TEMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMP, 0); - } - public KW_TEMPLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); - } - public KW_TEMPORARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); - } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TEXT, 0); - } - public KW_TIES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIES, 0); - } - public KW_TRANSACTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); - } - public KW_TRANSFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); - } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); - } - public KW_TRUNCATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0); - } - public KW_TRUSTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUSTED, 0); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public KW_TYPES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPES, 0); - } - public KW_UESCAPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UESCAPE, 0); - } - public KW_UNBOUNDED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNBOUNDED, 0); - } - public KW_UNCOMMITTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNCOMMITTED, 0); - } - public KW_UNENCRYPTED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNENCRYPTED, 0); - } - public KW_UNKNOWN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNKNOWN, 0); - } - public KW_UNLISTEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNLISTEN, 0); - } - public KW_UNLOGGED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); - } - public KW_UNTIL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNTIL, 0); - } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UPDATE, 0); - } - public KW_VACUUM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VACUUM, 0); - } - public KW_VALID(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALID, 0); - } - public KW_VALIDATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALIDATE, 0); - } - public KW_VALIDATOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALIDATOR, 0); - } - public KW_VALUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUE, 0); - } - public KW_VARYING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARYING, 0); - } - public KW_VERSION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VERSION, 0); - } - public KW_VIEW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEW, 0); - } - public KW_VIEWS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VIEWS, 0); - } - public KW_VOLATILE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VOLATILE, 0); - } - public KW_WHITESPACE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WHITESPACE, 0); - } - public KW_WITHIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHIN, 0); - } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); - } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WORK, 0); - } - public KW_WRAPPER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); - } - public KW_WRITE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WRITE, 0); - } - public KW_XML(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XML, 0); - } - public KW_YEAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_YEAR, 0); - } - public KW_YES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_YES, 0); - } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ZONE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_unreserved_keyword; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterUnreserved_keyword) { - listener.enterUnreserved_keyword(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitUnreserved_keyword) { - listener.exitUnreserved_keyword(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitUnreserved_keyword) { - return visitor.visitUnreserved_keyword(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Col_name_keywordContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_BETWEEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BETWEEN, 0); - } - public KW_BIGINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BIGINT, 0); - } - public bit(): BitContext | null { - return this.getRuleContext(0, BitContext); - } - public KW_BOOLEAN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BOOLEAN, 0); - } - public KW_CHAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHAR, 0); - } - public character(): CharacterContext | null { - return this.getRuleContext(0, CharacterContext); - } - public KW_COALESCE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COALESCE, 0); - } - public KW_DEC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEC, 0); - } - public KW_DECIMAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DECIMAL, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXISTS, 0); - } - public KW_EXTRACT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXTRACT, 0); - } - public KW_FLOAT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FLOAT, 0); - } - public KW_GREATEST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GREATEST, 0); - } - public KW_GROUPING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUPING, 0); - } - public KW_INOUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INOUT, 0); - } - public KW_INT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INT, 0); - } - public KW_INTEGER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INTEGER, 0); - } - public KW_INTERVAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INTERVAL, 0); - } - public KW_LEAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEAST, 0); - } - public KW_NATIONAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NATIONAL, 0); - } - public KW_NCHAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NCHAR, 0); - } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NONE, 0); - } - public KW_NORMALIZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NORMALIZE, 0); - } - public KW_NULLIF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULLIF, 0); - } - public numeric(): NumericContext | null { - return this.getRuleContext(0, NumericContext); - } - public KW_OUT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OUT, 0); - } - public KW_OVERLAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OVERLAY, 0); - } - public KW_POSITION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_POSITION, 0); - } - public KW_PRECISION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRECISION, 0); - } - public KW_REAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REAL, 0); - } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROW, 0); - } - public KW_SETOF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SETOF, 0); - } - public KW_SMALLINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SMALLINT, 0); - } - public KW_SUBSTRING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SUBSTRING, 0); - } - public KW_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIME, 0); - } - public KW_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TIMESTAMP, 0); + public KW_PARTIAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTIAL, 0); } - public KW_TREAT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TREAT, 0); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PARTITION, 0); } - public KW_TRIM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRIM, 0); + public KW_PASSING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PASSING, 0); } - public KW_VALUES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VALUES, 0); + public KW_PASSWORD(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PASSWORD, 0); } - public KW_VARCHAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARCHAR, 0); + public KW_PLANS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PLANS, 0); } - public KW_XMLATTRIBUTES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLATTRIBUTES, 0); + public KW_POLICY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_POLICY, 0); } - public KW_XMLCONCAT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLCONCAT, 0); + public KW_PRECEDING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRECEDING, 0); } - public KW_XMLELEMENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLELEMENT, 0); + public KW_PREPARE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PREPARE, 0); } - public KW_XMLEXISTS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLEXISTS, 0); + public KW_PREPARED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PREPARED, 0); } - public KW_XMLFOREST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLFOREST, 0); + public KW_PRESERVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRESERVE, 0); } - public KW_XMLNAMESPACES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLNAMESPACES, 0); + public KW_PRIOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIOR, 0); } - public KW_XMLPARSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLPARSE, 0); + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIVILEGES, 0); } - public KW_XMLPI(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLPI, 0); + public KW_PROCEDURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURAL, 0); } - public KW_XMLROOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLROOT, 0); + public KW_PROCEDURE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURE, 0); } - public KW_XMLSERIALIZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLSERIALIZE, 0); + public KW_PROCEDURES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROCEDURES, 0); } - public KW_XMLTABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_XMLTABLE, 0); + public KW_PROGRAM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PROGRAM, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_col_name_keyword; + public KW_PUBLICATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLICATION, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCol_name_keyword) { - listener.enterCol_name_keyword(this); - } + public KW_QUOTE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_QUOTE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCol_name_keyword) { - listener.exitCol_name_keyword(this); - } + public KW_RANGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RANGE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCol_name_keyword) { - return visitor.visitCol_name_keyword(this); - } else { - return visitor.visitChildren(this); - } + public KW_READ(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_READ, 0); } -} - - -export class Type_func_name_keywordContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_REASSIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REASSIGN, 0); } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); + public KW_RECHECK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RECHECK, 0); } - public KW_BINARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BINARY, 0); + public KW_RECURSIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RECURSIVE, 0); } - public KW_COLLATION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATION, 0); + public KW_REF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REF, 0); } - public KW_CONCURRENTLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); + public KW_REFERENCING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFERENCING, 0); } - public KW_CROSS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CROSS, 0); + public KW_REFRESH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFRESH, 0); } - public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); + public KW_REINDEX(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REINDEX, 0); } - public KW_FREEZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FREEZE, 0); + public KW_RELATIVE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); } - public KW_FULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FULL, 0); + public KW_RELEASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RELEASE, 0); } - public KW_ILIKE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ILIKE, 0); + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RENAME, 0); } - public KW_INNER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INNER, 0); + public KW_REPEATABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPEATABLE, 0); } - public KW_IS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IS, 0); + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLACE, 0); } - public KW_ISNULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ISNULL, 0); + public KW_REPLICA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REPLICA, 0); } - public KW_JOIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_JOIN, 0); + public KW_RESET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESET, 0); } - public KW_LEFT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEFT, 0); + public KW_RESTART(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTART, 0); } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LIKE, 0); + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RESTRICT, 0); } - public KW_NATURAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NATURAL, 0); + public KW_RETURNS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RETURNS, 0); } - public KW_NOTNULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTNULL, 0); + public KW_REVOKE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REVOKE, 0); } - public KW_OUTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OUTER, 0); + public KW_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLE, 0); } - public KW_OVERLAPS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OVERLAPS, 0); + public KW_ROLLBACK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); } - public KW_RIGHT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RIGHT, 0); + public KW_ROLLUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLLUP, 0); } - public KW_SIMILAR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SIMILAR, 0); + public KW_ROUTINE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINE, 0); } - public KW_TABLESAMPLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLESAMPLE, 0); + public KW_ROUTINES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROUTINES, 0); } - public KW_VERBOSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VERBOSE, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWS, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_type_func_name_keyword; + public KW_RULE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RULE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterType_func_name_keyword) { - listener.enterType_func_name_keyword(this); - } + public KW_SAVEPOINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SAVEPOINT, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitType_func_name_keyword) { - listener.exitType_func_name_keyword(this); - } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitType_func_name_keyword) { - return visitor.visitType_func_name_keyword(this); - } else { - return visitor.visitChildren(this); - } + public KW_SCHEMAS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCHEMAS, 0); } -} - - -export class Reserved_keywordContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_SCROLL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCROLL, 0); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALL, 0); + public KW_SEARCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEARCH, 0); } - public KW_ANALYSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ANALYSE, 0); + public KW_SECOND(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SECOND, 0); } - public KW_ANALYZE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ANALYZE, 0); + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SECURITY, 0); } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AND, 0); + public KW_SEQUENCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCE, 0); } - public KW_ANY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ANY, 0); + public KW_SEQUENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SEQUENCES, 0); } - public KW_ARRAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ARRAY, 0); + public KW_SERIALIZABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERIALIZABLE, 0); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AS, 0); + public KW_SERVER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SERVER, 0); } - public KW_ASC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ASC, 0); + public KW_SESSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION, 0); } - public KW_ASYMMETRIC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ASYMMETRIC, 0); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SET, 0); } - public KW_BOTH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BOTH, 0); + public KW_SETS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SETS, 0); } - public KW_CASE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CASE, 0); + public KW_SHARE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SHARE, 0); } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CAST, 0); + public KW_SHOW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SHOW, 0); } - public KW_CHECK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHECK, 0); + public KW_SIMPLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SIMPLE, 0); } - public KW_COLLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0); + public KW_SKIP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SKIP, 0); } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLUMN, 0); + public KW_SKIP_LOCKED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SKIP_LOCKED, 0); } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + public KW_SNAPSHOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SNAPSHOT, 0); } - public KW_CREATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CREATE, 0); + public KW_SQL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SQL, 0); } - public KW_CURRENT_CATALOG(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_CATALOG, 0); + public KW_STABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STABLE, 0); } - public KW_CURRENT_DATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_DATE, 0); + public KW_STANDALONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STANDALONE, 0); } - public KW_CURRENT_ROLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_ROLE, 0); + public KW_START(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_START, 0); } - public KW_CURRENT_TIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_TIME, 0); + public KW_STATEMENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATEMENT, 0); } - public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_TIMESTAMP, 0); + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STATISTICS, 0); } - public KW_CURRENT_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT_USER, 0); + public KW_STDIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STDIN, 0); } - public KW_DEFERRABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); + public KW_STDOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STDOUT, 0); } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DESC, 0); + public KW_STORAGE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORAGE, 0); } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); + public KW_STORED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STORED, 0); } - public KW_DO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DO, 0); + public KW_STRICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STRICT, 0); } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ELSE, 0); + public KW_STRIP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STRIP, 0); } - public KW_END(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_END, 0); + public KW_SUBSCRIPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUBSCRIPTION, 0); } - public KW_EXCEPT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCEPT, 0); + public KW_SUPPORT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUPPORT, 0); } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FALSE, 0); + public KW_SYSID(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SYSID, 0); } - public KW_FETCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FETCH, 0); + public KW_SYSTEM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SYSTEM, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public KW_TABLES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLES, 0); } - public KW_FOREIGN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); + public KW_TABLESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESPACE, 0); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); + public KW_TEMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMP, 0); } - public KW_GRANT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GRANT, 0); + public KW_TEMPLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPLATE, 0); } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GROUP, 0); + public KW_TEMPORARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEMPORARY, 0); } - public KW_HAVING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_HAVING, 0); + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TEXT, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); + public KW_TIES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIES, 0); } - public KW_INITIALLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INITIALLY, 0); + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSACTION, 0); } - public KW_INTERSECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INTERSECT, 0); + public KW_TRANSFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRANSFORM, 0); } - public KW_LATERAL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LATERAL, 0); + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIGGER, 0); } - public KW_LEADING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LEADING, 0); + public KW_TRUNCATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUNCATE, 0); } - public KW_LIMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LIMIT, 0); + public KW_TRUSTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUSTED, 0); } - public KW_LOCALTIME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCALTIME, 0); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPE, 0); } - public KW_LOCALTIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOCALTIMESTAMP, 0); + public KW_TYPES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TYPES, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOT, 0); + public KW_UESCAPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UESCAPE, 0); } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NULL, 0); + public KW_UNBOUNDED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNBOUNDED, 0); } - public KW_OFFSET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OFFSET, 0); + public KW_UNCOMMITTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNCOMMITTED, 0); } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ON, 0); + public KW_UNENCRYPTED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNENCRYPTED, 0); } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ONLY, 0); + public KW_UNKNOWN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNKNOWN, 0); } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OR, 0); + public KW_UNLISTEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNLISTEN, 0); } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ORDER, 0); + public KW_UNLOGGED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNLOGGED, 0); } - public KW_PLACING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PLACING, 0); + public KW_UNTIL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNTIL, 0); } - public KW_PRIMARY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIMARY, 0); + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UPDATE, 0); } - public KW_REFERENCES(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); + public KW_VACUUM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VACUUM, 0); } - public KW_RETURNING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RETURNING, 0); + public KW_VALID(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALID, 0); } - public KW_SELECT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SELECT, 0); + public KW_VALIDATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALIDATE, 0); } - public KW_SESSION_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SESSION_USER, 0); + public KW_VALIDATOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALIDATOR, 0); } - public KW_SOME(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SOME, 0); + public KW_VALUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALUE, 0); } - public KW_SYMMETRIC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SYMMETRIC, 0); + public KW_VARYING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARYING, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TABLE, 0); + public KW_VERSION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VERSION, 0); } - public KW_THEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_THEN, 0); + public KW_VIEW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEW, 0); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TO, 0); + public KW_VIEWS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VIEWS, 0); } - public KW_TRAILING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRAILING, 0); + public KW_VOLATILE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VOLATILE, 0); } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TRUE, 0); + public KW_WHITESPACE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHITESPACE, 0); } - public KW_UNION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNION, 0); + public KW_WITHIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHIN, 0); } - public KW_UNIQUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITHOUT, 0); } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USER, 0); + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WORK, 0); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRAPPER, 0); } - public KW_VARIADIC(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARIADIC, 0); + public KW_WRITE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WRITE, 0); } - public KW_WHEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WHEN, 0); + public KW_XML(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XML, 0); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WHERE, 0); + public KW_YEAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_YEAR, 0); } - public KW_WINDOW(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WINDOW, 0); + public KW_YES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_YES, 0); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WITH, 0); + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ZONE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_reserved_keyword; + return PostgreSqlParser.RULE_unreserved_keyword; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterReserved_keyword) { - listener.enterReserved_keyword(this); + if(listener.enterUnreserved_keyword) { + listener.enterUnreserved_keyword(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitReserved_keyword) { - listener.exitReserved_keyword(this); + if(listener.exitUnreserved_keyword) { + listener.exitUnreserved_keyword(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitReserved_keyword) { - return visitor.visitReserved_keyword(this); + if (visitor.visitUnreserved_keyword) { + return visitor.visitUnreserved_keyword(this); } else { return visitor.visitChildren(this); } @@ -109839,224 +83601,179 @@ export class Reserved_keywordContext extends antlr.ParserRuleContext { } -export class Pl_functionContext extends antlr.ParserRuleContext { +export class Col_name_keywordContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public comp_options(): Comp_optionsContext { - return this.getRuleContext(0, Comp_optionsContext)!; + public KW_BETWEEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BETWEEN, 0); } - public pl_block(): Pl_blockContext { - return this.getRuleContext(0, Pl_blockContext)!; + public KW_BIGINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BIGINT, 0); } - public opt_semi(): Opt_semiContext { - return this.getRuleContext(0, Opt_semiContext)!; + public bit(): BitContext | null { + return this.getRuleContext(0, BitContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_pl_function; + public KW_BOOLEAN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BOOLEAN, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPl_function) { - listener.enterPl_function(this); - } + public KW_CHAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHAR, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPl_function) { - listener.exitPl_function(this); - } + public character(): CharacterContext | null { + return this.getRuleContext(0, CharacterContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPl_function) { - return visitor.visitPl_function(this); - } else { - return visitor.visitChildren(this); - } + public KW_COALESCE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COALESCE, 0); } -} - - -export class Comp_optionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_DEC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEC, 0); } - public comp_option(): Comp_optionContext[]; - public comp_option(i: number): Comp_optionContext | null; - public comp_option(i?: number): Comp_optionContext[] | Comp_optionContext | null { - if (i === undefined) { - return this.getRuleContexts(Comp_optionContext); - } - - return this.getRuleContext(i, Comp_optionContext); + public KW_DECIMAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DECIMAL, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_comp_options; + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXISTS, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterComp_options) { - listener.enterComp_options(this); - } + public KW_EXTRACT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXTRACT, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitComp_options) { - listener.exitComp_options(this); - } + public KW_FLOAT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FLOAT, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitComp_options) { - return visitor.visitComp_options(this); - } else { - return visitor.visitChildren(this); - } + public KW_GREATEST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GREATEST, 0); } -} - - -export class Comp_optionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_GROUPING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUPING, 0); } - public sharp(): SharpContext { - return this.getRuleContext(0, SharpContext)!; + public KW_INOUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INOUT, 0); } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); + public KW_INT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INT, 0); } - public KW_DUMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DUMP, 0); + public KW_INTEGER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTEGER, 0); } - public KW_PRINT_STRICT_PARAMS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRINT_STRICT_PARAMS, 0); + public KW_INTERVAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTERVAL, 0); } - public option_value(): Option_valueContext | null { - return this.getRuleContext(0, Option_valueContext); + public KW_LEAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEAST, 0); } - public KW_VARIABLE_CONFLICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARIABLE_CONFLICT, 0); + public KW_NATIONAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NATIONAL, 0); } - public KW_ERROR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ERROR, 0); + public KW_NCHAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NCHAR, 0); } - public KW_USE_VARIABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USE_VARIABLE, 0); + public KW_NONE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NONE, 0); } - public KW_USE_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USE_COLUMN, 0); + public KW_NORMALIZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NORMALIZE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_comp_option; + public KW_NULLIF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULLIF, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterComp_option) { - listener.enterComp_option(this); - } + public numeric(): NumericContext | null { + return this.getRuleContext(0, NumericContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitComp_option) { - listener.exitComp_option(this); - } + public KW_OUT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OUT, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitComp_option) { - return visitor.visitComp_option(this); - } else { - return visitor.visitChildren(this); - } + public KW_OVERLAY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OVERLAY, 0); } -} - - -export class SharpContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_POSITION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_POSITION, 0); } - public Operator(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.Operator, 0)!; + public KW_PRECISION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRECISION, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_sharp; + public KW_REAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REAL, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterSharp) { - listener.enterSharp(this); - } + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROW, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitSharp) { - listener.exitSharp(this); - } + public KW_SETOF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SETOF, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitSharp) { - return visitor.visitSharp(this); - } else { - return visitor.visitChildren(this); - } + public KW_SMALLINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SMALLINT, 0); } -} - - -export class Option_valueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_SUBSTRING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SUBSTRING, 0); } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); + public KW_TIME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIME, 0); } - public reserved_keyword(): Reserved_keywordContext | null { - return this.getRuleContext(0, Reserved_keywordContext); + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TIMESTAMP, 0); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public KW_TREAT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TREAT, 0); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); + public KW_TRIM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRIM, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_option_value; + public KW_VALUES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VALUES, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOption_value) { - listener.enterOption_value(this); - } + public KW_VARCHAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARCHAR, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOption_value) { - listener.exitOption_value(this); - } + public KW_XMLATTRIBUTES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLATTRIBUTES, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOption_value) { - return visitor.visitOption_value(this); - } else { - return visitor.visitChildren(this); - } + public KW_XMLCONCAT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLCONCAT, 0); } -} - - -export class Opt_semiContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_XMLELEMENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLELEMENT, 0); } - public SEMI(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.SEMI, 0); + public KW_XMLEXISTS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLEXISTS, 0); + } + public KW_XMLFOREST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLFOREST, 0); + } + public KW_XMLNAMESPACES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLNAMESPACES, 0); + } + public KW_XMLPARSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLPARSE, 0); + } + public KW_XMLPI(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLPI, 0); + } + public KW_XMLROOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLROOT, 0); + } + public KW_XMLSERIALIZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLSERIALIZE, 0); + } + public KW_XMLTABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_XMLTABLE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_semi; + return PostgreSqlParser.RULE_col_name_keyword; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_semi) { - listener.enterOpt_semi(this); + if(listener.enterCol_name_keyword) { + listener.enterCol_name_keyword(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_semi) { - listener.exitOpt_semi(this); + if(listener.exitCol_name_keyword) { + listener.exitCol_name_keyword(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_semi) { - return visitor.visitOpt_semi(this); + if (visitor.visitCol_name_keyword) { + return visitor.visitCol_name_keyword(this); } else { return visitor.visitChildren(this); } @@ -110064,146 +83781,95 @@ export class Opt_semiContext extends antlr.ParserRuleContext { } -export class Pl_blockContext extends antlr.ParserRuleContext { +export class Type_func_name_keywordContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public decl_sect(): Decl_sectContext { - return this.getRuleContext(0, Decl_sectContext)!; - } - public KW_BEGIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_BEGIN, 0)!; - } - public proc_sect(): Proc_sectContext { - return this.getRuleContext(0, Proc_sectContext)!; - } - public exception_sect(): Exception_sectContext { - return this.getRuleContext(0, Exception_sectContext)!; + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AUTHORIZATION, 0); } - public KW_END(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_END, 0)!; + public KW_BINARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BINARY, 0); } - public opt_label(): Opt_labelContext { - return this.getRuleContext(0, Opt_labelContext)!; + public KW_COLLATION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATION, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_pl_block; + public KW_CONCURRENTLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONCURRENTLY, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPl_block) { - listener.enterPl_block(this); - } + public KW_CROSS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CROSS, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPl_block) { - listener.exitPl_block(this); - } + public KW_CURRENT_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_SCHEMA, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPl_block) { - return visitor.visitPl_block(this); - } else { - return visitor.visitChildren(this); - } + public KW_FREEZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FREEZE, 0); } -} - - -export class Decl_sectContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FULL, 0); } - public opt_block_label(): Opt_block_labelContext { - return this.getRuleContext(0, Opt_block_labelContext)!; + public KW_ILIKE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ILIKE, 0); } - public decl_start(): Decl_startContext | null { - return this.getRuleContext(0, Decl_startContext); + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INNER, 0); } - public decl_stmts(): Decl_stmtsContext | null { - return this.getRuleContext(0, Decl_stmtsContext); + public KW_IS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IS, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_sect; + public KW_ISNULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ISNULL, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_sect) { - listener.enterDecl_sect(this); - } + public KW_JOIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_JOIN, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_sect) { - listener.exitDecl_sect(this); - } + public KW_LEFT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEFT, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_sect) { - return visitor.visitDecl_sect(this); - } else { - return visitor.visitChildren(this); - } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LIKE, 0); } -} - - -export class Decl_startContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_NATURAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NATURAL, 0); } - public KW_DECLARE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DECLARE, 0)!; + public KW_NOTNULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOTNULL, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_start; + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OUTER, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_start) { - listener.enterDecl_start(this); - } + public KW_OVERLAPS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OVERLAPS, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_start) { - listener.exitDecl_start(this); - } + public KW_RIGHT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RIGHT, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_start) { - return visitor.visitDecl_start(this); - } else { - return visitor.visitChildren(this); - } + public KW_SIMILAR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SIMILAR, 0); } -} - - -export class Decl_stmtsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_TABLESAMPLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLESAMPLE, 0); } - public decl_stmt(): Decl_stmtContext[]; - public decl_stmt(i: number): Decl_stmtContext | null; - public decl_stmt(i?: number): Decl_stmtContext[] | Decl_stmtContext | null { - if (i === undefined) { - return this.getRuleContexts(Decl_stmtContext); - } - - return this.getRuleContext(i, Decl_stmtContext); + public KW_VERBOSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VERBOSE, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_stmts; + return PostgreSqlParser.RULE_type_func_name_keyword; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_stmts) { - listener.enterDecl_stmts(this); + if(listener.enterType_func_name_keyword) { + listener.enterType_func_name_keyword(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_stmts) { - listener.exitDecl_stmts(this); + if(listener.exitType_func_name_keyword) { + listener.exitType_func_name_keyword(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_stmts) { - return visitor.visitDecl_stmts(this); + if (visitor.visitType_func_name_keyword) { + return visitor.visitType_func_name_keyword(this); } else { return visitor.visitChildren(this); } @@ -110211,353 +83877,251 @@ export class Decl_stmtsContext extends antlr.ParserRuleContext { } -export class Label_declContext extends antlr.ParserRuleContext { +export class Reserved_keywordContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public LESS_LESS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.LESS_LESS, 0)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALL, 0); } - public any_identifier(): Any_identifierContext { - return this.getRuleContext(0, Any_identifierContext)!; + public KW_ANALYSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ANALYSE, 0); } - public GREATER_GREATER(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.GREATER_GREATER, 0)!; + public KW_ANALYZE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ANALYZE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_label_decl; + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AND, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterLabel_decl) { - listener.enterLabel_decl(this); - } + public KW_ANY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ANY, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitLabel_decl) { - listener.exitLabel_decl(this); - } + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ARRAY, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitLabel_decl) { - return visitor.visitLabel_decl(this); - } else { - return visitor.visitChildren(this); - } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AS, 0); } -} - - -export class Decl_stmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_ASC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASC, 0); } - public decl_statement(): Decl_statementContext | null { - return this.getRuleContext(0, Decl_statementContext); + public KW_ASYMMETRIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASYMMETRIC, 0); } - public KW_DECLARE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DECLARE, 0); + public KW_BOTH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_BOTH, 0); } - public label_decl(): Label_declContext | null { - return this.getRuleContext(0, Label_declContext); + public KW_CASE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CASE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_stmt; + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CAST, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_stmt) { - listener.enterDecl_stmt(this); - } + public KW_CHECK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHECK, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_stmt) { - listener.exitDecl_stmt(this); - } + public KW_COLLATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLLATE, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_stmt) { - return visitor.visitDecl_stmt(this); - } else { - return visitor.visitChildren(this); - } + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COLUMN, 0); } -} - - -export class Decl_statementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); } - public decl_varname(): Decl_varnameContext { - return this.getRuleContext(0, Decl_varnameContext)!; + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CREATE, 0); } - public SEMI(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.SEMI, 0)!; + public KW_CURRENT_CATALOG(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_CATALOG, 0); } - public KW_ALIAS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALIAS, 0); + public KW_CURRENT_DATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_DATE, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public KW_CURRENT_ROLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_ROLE, 0); } - public decl_aliasitem(): Decl_aliasitemContext | null { - return this.getRuleContext(0, Decl_aliasitemContext); + public KW_CURRENT_TIME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_TIME, 0); } - public decl_const(): Decl_constContext | null { - return this.getRuleContext(0, Decl_constContext); + public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_TIMESTAMP, 0); } - public decl_datatype(): Decl_datatypeContext | null { - return this.getRuleContext(0, Decl_datatypeContext); + public KW_CURRENT_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT_USER, 0); } - public decl_collate(): Decl_collateContext | null { - return this.getRuleContext(0, Decl_collateContext); + public KW_DEFERRABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFERRABLE, 0); } - public decl_notnull(): Decl_notnullContext | null { - return this.getRuleContext(0, Decl_notnullContext); + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DESC, 0); } - public decl_defval(): Decl_defvalContext | null { - return this.getRuleContext(0, Decl_defvalContext); + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DISTINCT, 0); } - public opt_scrollable(): Opt_scrollableContext | null { - return this.getRuleContext(0, Opt_scrollableContext); + public KW_DO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DO, 0); } - public KW_CURSOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURSOR, 0); + public KW_ELSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ELSE, 0); } - public decl_cursor_args(): Decl_cursor_argsContext | null { - return this.getRuleContext(0, Decl_cursor_argsContext); + public KW_END(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_END, 0); } - public decl_is_for(): Decl_is_forContext | null { - return this.getRuleContext(0, Decl_is_forContext); + public KW_EXCEPT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCEPT, 0); } - public decl_cursor_query(): Decl_cursor_queryContext | null { - return this.getRuleContext(0, Decl_cursor_queryContext); + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FALSE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_statement; + public KW_FETCH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FETCH, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_statement) { - listener.enterDecl_statement(this); - } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_statement) { - listener.exitDecl_statement(this); - } + public KW_FOREIGN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOREIGN, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_statement) { - return visitor.visitDecl_statement(this); - } else { - return visitor.visitChildren(this); - } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FROM, 0); } -} - - -export class Opt_scrollableContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_GRANT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GRANT, 0); } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GROUP, 0); + } + public KW_HAVING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_HAVING, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IN, 0); } - public KW_SCROLL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCROLL, 0); + public KW_INITIALLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INITIALLY, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_scrollable; + public KW_INTERSECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INTERSECT, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_scrollable) { - listener.enterOpt_scrollable(this); - } + public KW_LATERAL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LATERAL, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_scrollable) { - listener.exitOpt_scrollable(this); - } + public KW_LEADING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LEADING, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_scrollable) { - return visitor.visitOpt_scrollable(this); - } else { - return visitor.visitChildren(this); - } + public KW_LIMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LIMIT, 0); } -} - - -export class Decl_cursor_queryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_LOCALTIME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCALTIME, 0); } - public selectstmt(): SelectstmtContext { - return this.getRuleContext(0, SelectstmtContext)!; + public KW_LOCALTIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOCALTIMESTAMP, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_cursor_query; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOT, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_cursor_query) { - listener.enterDecl_cursor_query(this); - } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_cursor_query) { - listener.exitDecl_cursor_query(this); - } + public KW_OFFSET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OFFSET, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_cursor_query) { - return visitor.visitDecl_cursor_query(this); - } else { - return visitor.visitChildren(this); - } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ON, 0); } -} - - -export class Decl_cursor_argsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ONLY, 0); } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OR, 0); } - public decl_cursor_arglist(): Decl_cursor_arglistContext | null { - return this.getRuleContext(0, Decl_cursor_arglistContext); + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ORDER, 0); } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public KW_PLACING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PLACING, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_cursor_args; + public KW_PRIMARY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRIMARY, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_cursor_args) { - listener.enterDecl_cursor_args(this); - } + public KW_REFERENCES(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REFERENCES, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_cursor_args) { - listener.exitDecl_cursor_args(this); - } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RETURNING, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_cursor_args) { - return visitor.visitDecl_cursor_args(this); - } else { - return visitor.visitChildren(this); - } + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SELECT, 0); } -} - - -export class Decl_cursor_arglistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_SESSION_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SESSION_USER, 0); } - public decl_cursor_arg(): Decl_cursor_argContext[]; - public decl_cursor_arg(i: number): Decl_cursor_argContext | null; - public decl_cursor_arg(i?: number): Decl_cursor_argContext[] | Decl_cursor_argContext | null { - if (i === undefined) { - return this.getRuleContexts(Decl_cursor_argContext); - } - - return this.getRuleContext(i, Decl_cursor_argContext); + public KW_SOME(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SOME, 0); } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } + public KW_SYMMETRIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SYMMETRIC, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_cursor_arglist; + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TABLE, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_cursor_arglist) { - listener.enterDecl_cursor_arglist(this); - } + public KW_THEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_THEN, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_cursor_arglist) { - listener.exitDecl_cursor_arglist(this); - } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TO, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_cursor_arglist) { - return visitor.visitDecl_cursor_arglist(this); - } else { - return visitor.visitChildren(this); - } + public KW_TRAILING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRAILING, 0); } -} - - -export class Decl_cursor_argContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_TRUE, 0); } - public decl_varname(): Decl_varnameContext { - return this.getRuleContext(0, Decl_varnameContext)!; + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNION, 0); } - public decl_datatype(): Decl_datatypeContext { - return this.getRuleContext(0, Decl_datatypeContext)!; + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_UNIQUE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_cursor_arg; + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USER, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_cursor_arg) { - listener.enterDecl_cursor_arg(this); - } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_cursor_arg) { - listener.exitDecl_cursor_arg(this); - } + public KW_VARIADIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARIADIC, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_cursor_arg) { - return visitor.visitDecl_cursor_arg(this); - } else { - return visitor.visitChildren(this); - } + public KW_WHEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHEN, 0); } -} - - -export class Decl_is_forContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHERE, 0); } - public KW_IS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IS, 0); + public KW_WINDOW(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WINDOW, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FOR, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WITH, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_is_for; + return PostgreSqlParser.RULE_reserved_keyword; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_is_for) { - listener.enterDecl_is_for(this); + if(listener.enterReserved_keyword) { + listener.enterReserved_keyword(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_is_for) { - listener.exitDecl_is_for(this); + if(listener.exitReserved_keyword) { + listener.exitReserved_keyword(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_is_for) { - return visitor.visitDecl_is_for(this); + if (visitor.visitReserved_keyword) { + return visitor.visitReserved_keyword(this); } else { return visitor.visitChildren(this); } @@ -110565,62 +84129,74 @@ export class Decl_is_forContext extends antlr.ParserRuleContext { } -export class Decl_aliasitemContext extends antlr.ParserRuleContext { +export class Pl_blockContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public PARAM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.PARAM, 0); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); + public KW_BEGIN(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_BEGIN, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_aliasitem; + public KW_END(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_END, 0)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_aliasitem) { - listener.enterDecl_aliasitem(this); + public proc_stmt(): Proc_stmtContext[]; + public proc_stmt(i: number): Proc_stmtContext | null; + public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { + if (i === undefined) { + return this.getRuleContexts(Proc_stmtContext); } + + return this.getRuleContext(i, Proc_stmtContext); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_aliasitem) { - listener.exitDecl_aliasitem(this); - } + public exception_sect(): Exception_sectContext | null { + return this.getRuleContext(0, Exception_sectContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_aliasitem) { - return visitor.visitDecl_aliasitem(this); - } else { - return visitor.visitChildren(this); - } + public any_identifier(): Any_identifierContext | null { + return this.getRuleContext(0, Any_identifierContext); } -} - + public label_decl(): Label_declContext[]; + public label_decl(i: number): Label_declContext | null; + public label_decl(i?: number): Label_declContext[] | Label_declContext | null { + if (i === undefined) { + return this.getRuleContexts(Label_declContext); + } -export class Decl_varnameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Label_declContext); } - public any_identifier(): Any_identifierContext { - return this.getRuleContext(0, Any_identifierContext)!; + public KW_DECLARE(): antlr.TerminalNode[]; + public KW_DECLARE(i: number): antlr.TerminalNode | null; + public KW_DECLARE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_DECLARE); + } else { + return this.getToken(PostgreSqlParser.KW_DECLARE, i); + } + } + public decl_statement(): Decl_statementContext[]; + public decl_statement(i: number): Decl_statementContext | null; + public decl_statement(i?: number): Decl_statementContext[] | Decl_statementContext | null { + if (i === undefined) { + return this.getRuleContexts(Decl_statementContext); + } + + return this.getRuleContext(i, Decl_statementContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_varname; + return PostgreSqlParser.RULE_pl_block; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_varname) { - listener.enterDecl_varname(this); + if(listener.enterPl_block) { + listener.enterPl_block(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_varname) { - listener.exitDecl_varname(this); + if(listener.exitPl_block) { + listener.exitPl_block(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_varname) { - return visitor.visitDecl_varname(this); + if (visitor.visitPl_block) { + return visitor.visitPl_block(this); } else { return visitor.visitChildren(this); } @@ -110628,29 +84204,35 @@ export class Decl_varnameContext extends antlr.ParserRuleContext { } -export class Decl_constContext extends antlr.ParserRuleContext { +export class Label_declContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_CONSTANT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTANT, 0); + public LESS_LESS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.LESS_LESS, 0)!; + } + public any_identifier(): Any_identifierContext { + return this.getRuleContext(0, Any_identifierContext)!; + } + public GREATER_GREATER(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.GREATER_GREATER, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_const; + return PostgreSqlParser.RULE_label_decl; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_const) { - listener.enterDecl_const(this); + if(listener.enterLabel_decl) { + listener.enterLabel_decl(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_const) { - listener.exitDecl_const(this); + if(listener.exitLabel_decl) { + listener.exitLabel_decl(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_const) { - return visitor.visitDecl_const(this); + if (visitor.visitLabel_decl) { + return visitor.visitLabel_decl(this); } else { return visitor.visitChildren(this); } @@ -110658,72 +84240,45 @@ export class Decl_constContext extends antlr.ParserRuleContext { } -export class Decl_datatypeContext extends antlr.ParserRuleContext { +export class Decl_statementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public typename(): TypenameContext { - return this.getRuleContext(0, TypenameContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_datatype; + public any_identifier(): Any_identifierContext { + return this.getRuleContext(0, Any_identifierContext)!; } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_datatype) { - listener.enterDecl_datatype(this); - } + public SEMI(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.SEMI, 0)!; } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_datatype) { - listener.exitDecl_datatype(this); - } + public KW_ALIAS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALIAS, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_datatype) { - return visitor.visitDecl_datatype(this); - } else { - return visitor.visitChildren(this); - } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } -} - - -export class Decl_collateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public typename(): TypenameContext | null { + return this.getRuleContext(0, TypenameContext); } - public KW_COLLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0); + public KW_CURSOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURSOR, 0); } - public any_name(): Any_nameContext | null { - return this.getRuleContext(0, Any_nameContext); + public selectstmt(): SelectstmtContext | null { + return this.getRuleContext(0, SelectstmtContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_collate; + public KW_IS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IS, 0); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_collate) { - listener.enterDecl_collate(this); - } + public PARAM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.PARAM, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_collate) { - listener.exitDecl_collate(this); - } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_collate) { - return visitor.visitDecl_collate(this); - } else { - return visitor.visitChildren(this); - } + public KW_CONSTANT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTANT, 0); } -} - - -export class Decl_notnullContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public opt_collate_clause(): Opt_collate_clauseContext | null { + return this.getRuleContext(0, Opt_collate_clauseContext); } public KW_NOT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NOT, 0); @@ -110731,55 +84286,61 @@ export class Decl_notnullContext extends antlr.ParserRuleContext { public KW_NULL(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NULL, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_notnull; + public sql_expression(): Sql_expressionContext | null { + return this.getRuleContext(0, Sql_expressionContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_notnull) { - listener.enterDecl_notnull(this); - } + public KW_SCROLL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCROLL, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_notnull) { - listener.exitDecl_notnull(this); - } + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_notnull) { - return visitor.visitDecl_notnull(this); - } else { - return visitor.visitChildren(this); + public decl_cursor_arg(): Decl_cursor_argContext[]; + public decl_cursor_arg(i: number): Decl_cursor_argContext | null; + public decl_cursor_arg(i?: number): Decl_cursor_argContext[] | Decl_cursor_argContext | null { + if (i === undefined) { + return this.getRuleContexts(Decl_cursor_argContext); } - } -} - -export class Decl_defvalContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Decl_cursor_argContext); } - public decl_defkey(): Decl_defkeyContext | null { - return this.getRuleContext(0, Decl_defkeyContext); + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public sql_expression(): Sql_expressionContext | null { - return this.getRuleContext(0, Sql_expressionContext); + public assign_operator(): Assign_operatorContext | null { + return this.getRuleContext(0, Assign_operatorContext); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_defval; + return PostgreSqlParser.RULE_decl_statement; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_defval) { - listener.enterDecl_defval(this); + if(listener.enterDecl_statement) { + listener.enterDecl_statement(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_defval) { - listener.exitDecl_defval(this); + if(listener.exitDecl_statement) { + listener.exitDecl_statement(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_defval) { - return visitor.visitDecl_defval(this); + if (visitor.visitDecl_statement) { + return visitor.visitDecl_statement(this); } else { return visitor.visitChildren(this); } @@ -110787,32 +84348,32 @@ export class Decl_defvalContext extends antlr.ParserRuleContext { } -export class Decl_defkeyContext extends antlr.ParserRuleContext { +export class Decl_cursor_argContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public assign_operator(): Assign_operatorContext | null { - return this.getRuleContext(0, Assign_operatorContext); + public any_identifier(): Any_identifierContext { + return this.getRuleContext(0, Any_identifierContext)!; } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + public typename(): TypenameContext { + return this.getRuleContext(0, TypenameContext)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_decl_defkey; + return PostgreSqlParser.RULE_decl_cursor_arg; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDecl_defkey) { - listener.enterDecl_defkey(this); + if(listener.enterDecl_cursor_arg) { + listener.enterDecl_cursor_arg(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDecl_defkey) { - listener.exitDecl_defkey(this); + if(listener.exitDecl_cursor_arg) { + listener.exitDecl_cursor_arg(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDecl_defkey) { - return visitor.visitDecl_defkey(this); + if (visitor.visitDecl_cursor_arg) { + return visitor.visitDecl_cursor_arg(this); } else { return visitor.visitChildren(this); } @@ -110853,42 +84414,6 @@ export class Assign_operatorContext extends antlr.ParserRuleContext { } -export class Proc_sectContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public proc_stmt(): Proc_stmtContext[]; - public proc_stmt(i: number): Proc_stmtContext | null; - public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { - if (i === undefined) { - return this.getRuleContexts(Proc_stmtContext); - } - - return this.getRuleContext(i, Proc_stmtContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_proc_sect; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProc_sect) { - listener.enterProc_sect(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProc_sect) { - listener.exitProc_sect(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProc_sect) { - return visitor.visitProc_sect(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Proc_stmtContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -110914,14 +84439,8 @@ export class Proc_stmtContext extends antlr.ParserRuleContext { public stmt_case(): Stmt_caseContext | null { return this.getRuleContext(0, Stmt_caseContext); } - public stmt_loop(): Stmt_loopContext | null { - return this.getRuleContext(0, Stmt_loopContext); - } - public stmt_while(): Stmt_whileContext | null { - return this.getRuleContext(0, Stmt_whileContext); - } - public stmt_for(): Stmt_forContext | null { - return this.getRuleContext(0, Stmt_forContext); + public stmt_loop_while_for(): Stmt_loop_while_forContext | null { + return this.getRuleContext(0, Stmt_loop_while_forContext); } public stmt_foreach_a(): Stmt_foreach_aContext | null { return this.getRuleContext(0, Stmt_foreach_aContext); @@ -110962,11 +84481,8 @@ export class Proc_stmtContext extends antlr.ParserRuleContext { public stmt_null(): Stmt_nullContext | null { return this.getRuleContext(0, Stmt_nullContext); } - public stmt_commit(): Stmt_commitContext | null { - return this.getRuleContext(0, Stmt_commitContext); - } - public stmt_rollback(): Stmt_rollbackContext | null { - return this.getRuleContext(0, Stmt_rollbackContext); + public stmt_commit_or_rollback(): Stmt_commit_or_rollbackContext | null { + return this.getRuleContext(0, Stmt_commit_or_rollbackContext); } public stmt_set(): Stmt_setContext | null { return this.getRuleContext(0, Stmt_setContext); @@ -111001,8 +84517,8 @@ export class Stmt_performContext extends antlr.ParserRuleContext { public KW_PERFORM(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_PERFORM, 0)!; } - public expr_until_semi(): Expr_until_semiContext { - return this.getRuleContext(0, Expr_until_semiContext)!; + public sql_expression(): Sql_expressionContext { + return this.getRuleContext(0, Sql_expressionContext)!; } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; @@ -111043,15 +84559,15 @@ export class Stmt_callContext extends antlr.ParserRuleContext { public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public opt_expr_list(): Opt_expr_listContext | null { - return this.getRuleContext(0, Opt_expr_listContext); - } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public SEMI(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.SEMI, 0); } + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); + } public KW_DO(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_DO, 0); } @@ -111078,36 +84594,6 @@ export class Stmt_callContext extends antlr.ParserRuleContext { } -export class Opt_expr_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expr_list(): Expr_listContext | null { - return this.getRuleContext(0, Expr_listContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_expr_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_expr_list) { - listener.enterOpt_expr_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_expr_list) { - listener.exitOpt_expr_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_expr_list) { - return visitor.visitOpt_expr_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Stmt_assignContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -111116,105 +84602,30 @@ export class Stmt_assignContext extends antlr.ParserRuleContext { return this.getRuleContext(0, Assign_varContext)!; } public assign_operator(): Assign_operatorContext { - return this.getRuleContext(0, Assign_operatorContext)!; - } - public sql_expression(): Sql_expressionContext { - return this.getRuleContext(0, Sql_expressionContext)!; - } - public SEMI(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.SEMI, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_assign; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_assign) { - listener.enterStmt_assign(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_assign) { - listener.exitStmt_assign(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_assign) { - return visitor.visitStmt_assign(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Stmt_getdiagContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_GET(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_GET, 0)!; - } - public getdiag_area_opt(): Getdiag_area_optContext { - return this.getRuleContext(0, Getdiag_area_optContext)!; - } - public KW_DIAGNOSTICS(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_DIAGNOSTICS, 0)!; - } - public getdiag_list(): Getdiag_listContext { - return this.getRuleContext(0, Getdiag_listContext)!; - } - public SEMI(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.SEMI, 0)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_getdiag; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_getdiag) { - listener.enterStmt_getdiag(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_getdiag) { - listener.exitStmt_getdiag(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_getdiag) { - return visitor.visitStmt_getdiag(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Getdiag_area_optContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(0, Assign_operatorContext)!; } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + public sql_expression(): Sql_expressionContext { + return this.getRuleContext(0, Sql_expressionContext)!; } - public KW_STACKED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STACKED, 0); + public SEMI(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.SEMI, 0)!; } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_getdiag_area_opt; + return PostgreSqlParser.RULE_stmt_assign; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGetdiag_area_opt) { - listener.enterGetdiag_area_opt(this); + if(listener.enterStmt_assign) { + listener.enterStmt_assign(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGetdiag_area_opt) { - listener.exitGetdiag_area_opt(this); + if(listener.exitStmt_assign) { + listener.exitStmt_assign(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGetdiag_area_opt) { - return visitor.visitGetdiag_area_opt(this); + if (visitor.visitStmt_assign) { + return visitor.visitStmt_assign(this); } else { return visitor.visitChildren(this); } @@ -111222,10 +84633,19 @@ export class Getdiag_area_optContext extends antlr.ParserRuleContext { } -export class Getdiag_listContext extends antlr.ParserRuleContext { +export class Stmt_getdiagContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_GET(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_GET, 0)!; + } + public KW_DIAGNOSTICS(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_DIAGNOSTICS, 0)!; + } + public SEMI(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.SEMI, 0)!; + } public getdiag_list_item(): Getdiag_list_itemContext[]; public getdiag_list_item(i: number): Getdiag_list_itemContext | null; public getdiag_list_item(i?: number): Getdiag_list_itemContext[] | Getdiag_list_itemContext | null { @@ -111235,6 +84655,12 @@ export class Getdiag_listContext extends antlr.ParserRuleContext { return this.getRuleContext(i, Getdiag_list_itemContext); } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CURRENT, 0); + } + public KW_STACKED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STACKED, 0); + } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { @@ -111245,21 +84671,21 @@ export class Getdiag_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_getdiag_list; + return PostgreSqlParser.RULE_stmt_getdiag; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGetdiag_list) { - listener.enterGetdiag_list(this); + if(listener.enterStmt_getdiag) { + listener.enterStmt_getdiag(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGetdiag_list) { - listener.exitGetdiag_list(this); + if(listener.exitStmt_getdiag) { + listener.exitStmt_getdiag(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGetdiag_list) { - return visitor.visitGetdiag_list(this); + if (visitor.visitStmt_getdiag) { + return visitor.visitStmt_getdiag(this); } else { return visitor.visitChildren(this); } @@ -111271,14 +84697,14 @@ export class Getdiag_list_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public getdiag_target(): Getdiag_targetContext { - return this.getRuleContext(0, Getdiag_targetContext)!; + public assign_var(): Assign_varContext { + return this.getRuleContext(0, Assign_varContext)!; } public assign_operator(): Assign_operatorContext { return this.getRuleContext(0, Assign_operatorContext)!; } - public getdiag_item(): Getdiag_itemContext { - return this.getRuleContext(0, Getdiag_itemContext)!; + public colid(): ColidContext { + return this.getRuleContext(0, ColidContext)!; } public override get ruleIndex(): number { return PostgreSqlParser.RULE_getdiag_list_item; @@ -111303,66 +84729,6 @@ export class Getdiag_list_itemContext extends antlr.ParserRuleContext { } -export class Getdiag_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colid(): ColidContext { - return this.getRuleContext(0, ColidContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_getdiag_item; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGetdiag_item) { - listener.enterGetdiag_item(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGetdiag_item) { - listener.exitGetdiag_item(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGetdiag_item) { - return visitor.visitGetdiag_item(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Getdiag_targetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public assign_var(): Assign_varContext { - return this.getRuleContext(0, Assign_varContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_getdiag_target; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterGetdiag_target) { - listener.enterGetdiag_target(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitGetdiag_target) { - listener.exitGetdiag_target(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitGetdiag_target) { - return visitor.visitGetdiag_target(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Assign_varContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -111382,14 +84748,14 @@ export class Assign_varContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.OPEN_BRACKET, i); } } - public expr_until_rightbracket(): Expr_until_rightbracketContext[]; - public expr_until_rightbracket(i: number): Expr_until_rightbracketContext | null; - public expr_until_rightbracket(i?: number): Expr_until_rightbracketContext[] | Expr_until_rightbracketContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(Expr_until_rightbracketContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, Expr_until_rightbracketContext); + return this.getRuleContext(i, ExpressionContext); } public CLOSE_BRACKET(): antlr.TerminalNode[]; public CLOSE_BRACKET(i: number): antlr.TerminalNode | null; @@ -111436,20 +84802,17 @@ export class Stmt_ifContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.KW_IF, i); } } - public expr_until_then(): Expr_until_thenContext { - return this.getRuleContext(0, Expr_until_thenContext)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_THEN, 0)!; - } - public proc_sect(): Proc_sectContext { - return this.getRuleContext(0, Proc_sectContext)!; - } - public stmt_elsifs(): Stmt_elsifsContext { - return this.getRuleContext(0, Stmt_elsifsContext)!; + public sql_expression(): Sql_expressionContext { + return this.getRuleContext(0, Sql_expressionContext)!; } - public stmt_else(): Stmt_elseContext { - return this.getRuleContext(0, Stmt_elseContext)!; + public KW_THEN(): antlr.TerminalNode[]; + public KW_THEN(i: number): antlr.TerminalNode | null; + public KW_THEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_THEN); + } else { + return this.getToken(PostgreSqlParser.KW_THEN, i); + } } public KW_END(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_END, 0)!; @@ -111457,32 +84820,17 @@ export class Stmt_ifContext extends antlr.ParserRuleContext { public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_if; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_if) { - listener.enterStmt_if(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_if) { - listener.exitStmt_if(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_if) { - return visitor.visitStmt_if(this); - } else { - return visitor.visitChildren(this); + public proc_stmt(): Proc_stmtContext[]; + public proc_stmt(i: number): Proc_stmtContext | null; + public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { + if (i === undefined) { + return this.getRuleContexts(Proc_stmtContext); } - } -} - -export class Stmt_elsifsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Proc_stmtContext); + } + public stmt_else(): Stmt_elseContext | null { + return this.getRuleContext(0, Stmt_elseContext); } public KW_ELSIF(): antlr.TerminalNode[]; public KW_ELSIF(i: number): antlr.TerminalNode | null; @@ -111493,49 +84841,31 @@ export class Stmt_elsifsContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.KW_ELSIF, i); } } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(A_exprContext); - } - - return this.getRuleContext(i, A_exprContext); - } - public KW_THEN(): antlr.TerminalNode[]; - public KW_THEN(i: number): antlr.TerminalNode | null; - public KW_THEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.KW_THEN); - } else { - return this.getToken(PostgreSqlParser.KW_THEN, i); - } - } - public proc_sect(): Proc_sectContext[]; - public proc_sect(i: number): Proc_sectContext | null; - public proc_sect(i?: number): Proc_sectContext[] | Proc_sectContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(Proc_sectContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, Proc_sectContext); + return this.getRuleContext(i, ExpressionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_elsifs; + return PostgreSqlParser.RULE_stmt_if; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_elsifs) { - listener.enterStmt_elsifs(this); + if(listener.enterStmt_if) { + listener.enterStmt_if(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_elsifs) { - listener.exitStmt_elsifs(this); + if(listener.exitStmt_if) { + listener.exitStmt_if(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_elsifs) { - return visitor.visitStmt_elsifs(this); + if (visitor.visitStmt_if) { + return visitor.visitStmt_if(this); } else { return visitor.visitChildren(this); } @@ -111547,11 +84877,17 @@ export class Stmt_elseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ELSE, 0); + public KW_ELSE(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_ELSE, 0)!; } - public proc_sect(): Proc_sectContext | null { - return this.getRuleContext(0, Proc_sectContext); + public proc_stmt(): Proc_stmtContext[]; + public proc_stmt(i: number): Proc_stmtContext | null; + public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { + if (i === undefined) { + return this.getRuleContexts(Proc_stmtContext); + } + + return this.getRuleContext(i, Proc_stmtContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_stmt_else; @@ -111589,208 +84925,70 @@ export class Stmt_caseContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.KW_CASE, i); } } - public opt_expr_until_when(): Opt_expr_until_whenContext { - return this.getRuleContext(0, Opt_expr_until_whenContext)!; - } - public case_when_list(): Case_when_listContext { - return this.getRuleContext(0, Case_when_listContext)!; - } - public opt_case_else(): Opt_case_elseContext { - return this.getRuleContext(0, Opt_case_elseContext)!; - } public KW_END(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_END, 0)!; } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_case; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_case) { - listener.enterStmt_case(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_case) { - listener.exitStmt_case(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_case) { - return visitor.visitStmt_case(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_expr_until_whenContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public sql_expression(): Sql_expressionContext | null { return this.getRuleContext(0, Sql_expressionContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_expr_until_when; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_expr_until_when) { - listener.enterOpt_expr_until_when(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_expr_until_when) { - listener.exitOpt_expr_until_when(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_expr_until_when) { - return visitor.visitOpt_expr_until_when(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Case_when_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WHEN(): antlr.TerminalNode[]; + public KW_WHEN(i: number): antlr.TerminalNode | null; + public KW_WHEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_WHEN); + } else { + return this.getToken(PostgreSqlParser.KW_WHEN, i); + } } - public case_when(): Case_whenContext[]; - public case_when(i: number): Case_whenContext | null; - public case_when(i?: number): Case_whenContext[] | Case_whenContext | null { + public expr_list(): Expr_listContext[]; + public expr_list(i: number): Expr_listContext | null; + public expr_list(i?: number): Expr_listContext[] | Expr_listContext | null { if (i === undefined) { - return this.getRuleContexts(Case_whenContext); - } - - return this.getRuleContext(i, Case_whenContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_case_when_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCase_when_list) { - listener.enterCase_when_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCase_when_list) { - listener.exitCase_when_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCase_when_list) { - return visitor.visitCase_when_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Case_whenContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHEN, 0)!; - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_THEN, 0)!; - } - public proc_sect(): Proc_sectContext { - return this.getRuleContext(0, Proc_sectContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_case_when; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterCase_when) { - listener.enterCase_when(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitCase_when) { - listener.exitCase_when(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitCase_when) { - return visitor.visitCase_when(this); - } else { - return visitor.visitChildren(this); + return this.getRuleContexts(Expr_listContext); } - } -} - -export class Opt_case_elseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ELSE, 0); - } - public proc_sect(): Proc_sectContext | null { - return this.getRuleContext(0, Proc_sectContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_case_else; + return this.getRuleContext(i, Expr_listContext); } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_case_else) { - listener.enterOpt_case_else(this); - } + public KW_THEN(): antlr.TerminalNode[]; + public KW_THEN(i: number): antlr.TerminalNode | null; + public KW_THEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_THEN); + } else { + return this.getToken(PostgreSqlParser.KW_THEN, i); + } } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_case_else) { - listener.exitOpt_case_else(this); - } + public stmt_else(): Stmt_elseContext | null { + return this.getRuleContext(0, Stmt_elseContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_case_else) { - return visitor.visitOpt_case_else(this); - } else { - return visitor.visitChildren(this); + public proc_stmt(): Proc_stmtContext[]; + public proc_stmt(i: number): Proc_stmtContext | null; + public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { + if (i === undefined) { + return this.getRuleContexts(Proc_stmtContext); } - } -} - -export class Stmt_loopContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_loop_label(): Opt_loop_labelContext { - return this.getRuleContext(0, Opt_loop_labelContext)!; - } - public loop_body(): Loop_bodyContext { - return this.getRuleContext(0, Loop_bodyContext)!; + return this.getRuleContext(i, Proc_stmtContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_loop; + return PostgreSqlParser.RULE_stmt_case; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_loop) { - listener.enterStmt_loop(this); + if(listener.enterStmt_case) { + listener.enterStmt_case(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_loop) { - listener.exitStmt_loop(this); + if(listener.exitStmt_case) { + listener.exitStmt_case(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_loop) { - return visitor.visitStmt_loop(this); + if (visitor.visitStmt_case) { + return visitor.visitStmt_case(this); } else { return visitor.visitChildren(this); } @@ -111798,77 +84996,44 @@ export class Stmt_loopContext extends antlr.ParserRuleContext { } -export class Stmt_whileContext extends antlr.ParserRuleContext { +export class Stmt_loop_while_forContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opt_loop_label(): Opt_loop_labelContext { - return this.getRuleContext(0, Opt_loop_labelContext)!; - } - public KW_WHILE(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHILE, 0)!; - } - public expr_until_loop(): Expr_until_loopContext { - return this.getRuleContext(0, Expr_until_loopContext)!; - } public loop_body(): Loop_bodyContext { return this.getRuleContext(0, Loop_bodyContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_while; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_while) { - listener.enterStmt_while(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_while) { - listener.exitStmt_while(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_while) { - return visitor.visitStmt_while(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Stmt_forContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public label_decl(): Label_declContext | null { + return this.getRuleContext(0, Label_declContext); } - public opt_loop_label(): Opt_loop_labelContext { - return this.getRuleContext(0, Opt_loop_labelContext)!; + public KW_WHILE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHILE, 0); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_FOR, 0)!; + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public for_control(): For_controlContext { - return this.getRuleContext(0, For_controlContext)!; + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_FOR, 0); } - public loop_body(): Loop_bodyContext { - return this.getRuleContext(0, Loop_bodyContext)!; + public for_control(): For_controlContext | null { + return this.getRuleContext(0, For_controlContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_for; + return PostgreSqlParser.RULE_stmt_loop_while_for; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_for) { - listener.enterStmt_for(this); + if(listener.enterStmt_loop_while_for) { + listener.enterStmt_loop_while_for(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_for) { - listener.exitStmt_for(this); + if(listener.exitStmt_loop_while_for) { + listener.exitStmt_loop_while_for(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_for) { - return visitor.visitStmt_for(this); + if (visitor.visitStmt_loop_while_for) { + return visitor.visitStmt_loop_while_for(this); } else { return visitor.visitChildren(this); } @@ -111880,17 +85045,14 @@ export class For_controlContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public for_variable(): For_variableContext { - return this.getRuleContext(0, For_variableContext)!; + public any_name_list(): Any_name_listContext { + return this.getRuleContext(0, Any_name_listContext)!; } public KW_IN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_IN, 0)!; } - public cursor_name(): Cursor_nameContext | null { - return this.getRuleContext(0, Cursor_nameContext); - } - public opt_cursor_parameters(): Opt_cursor_parametersContext | null { - return this.getRuleContext(0, Opt_cursor_parametersContext); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } public selectstmt(): SelectstmtContext | null { return this.getRuleContext(0, SelectstmtContext); @@ -111901,53 +85063,20 @@ export class For_controlContext extends antlr.ParserRuleContext { public KW_EXECUTE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_EXECUTE, 0); } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_exprContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, A_exprContext); - } - public opt_for_using_expression(): Opt_for_using_expressionContext | null { - return this.getRuleContext(0, Opt_for_using_expressionContext); - } - public opt_reverse(): Opt_reverseContext | null { - return this.getRuleContext(0, Opt_reverseContext); + return this.getRuleContext(i, ExpressionContext); } public DOT_DOT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.DOT_DOT, 0); } - public opt_by_expression(): Opt_by_expressionContext | null { - return this.getRuleContext(0, Opt_by_expressionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_for_control; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFor_control) { - listener.enterFor_control(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFor_control) { - listener.exitFor_control(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFor_control) { - return visitor.visitFor_control(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_for_using_expressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public execute_param_clause(): Execute_param_clauseContext | null { + return this.getRuleContext(0, Execute_param_clauseContext); } public KW_USING(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_USING, 0); @@ -111955,166 +85084,28 @@ export class Opt_for_using_expressionContext extends antlr.ParserRuleContext { public expr_list(): Expr_listContext | null { return this.getRuleContext(0, Expr_listContext); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_for_using_expression; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_for_using_expression) { - listener.enterOpt_for_using_expression(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_for_using_expression) { - listener.exitOpt_for_using_expression(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_for_using_expression) { - return visitor.visitOpt_for_using_expression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_cursor_parametersContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(A_exprContext); - } - - return this.getRuleContext(i, A_exprContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_cursor_parameters; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_cursor_parameters) { - listener.enterOpt_cursor_parameters(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_cursor_parameters) { - listener.exitOpt_cursor_parameters(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_cursor_parameters) { - return visitor.visitOpt_cursor_parameters(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_reverseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public KW_REVERSE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_REVERSE, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_reverse; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_reverse) { - listener.enterOpt_reverse(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_reverse) { - listener.exitOpt_reverse(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_reverse) { - return visitor.visitOpt_reverse(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_by_expressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public KW_BY(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_BY, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_by_expression; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_by_expression) { - listener.enterOpt_by_expression(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_by_expression) { - listener.exitOpt_by_expression(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_by_expression) { - return visitor.visitOpt_by_expression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class For_variableContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public any_name_list(): Any_name_listContext { - return this.getRuleContext(0, Any_name_listContext)!; - } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_for_variable; + return PostgreSqlParser.RULE_for_control; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterFor_variable) { - listener.enterFor_variable(this); + if(listener.enterFor_control) { + listener.enterFor_control(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitFor_variable) { - listener.exitFor_variable(this); + if(listener.exitFor_control) { + listener.exitFor_control(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitFor_variable) { - return visitor.visitFor_variable(this); + if (visitor.visitFor_control) { + return visitor.visitFor_control(this); } else { return visitor.visitChildren(this); } @@ -112126,17 +85117,11 @@ export class Stmt_foreach_aContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opt_loop_label(): Opt_loop_labelContext { - return this.getRuleContext(0, Opt_loop_labelContext)!; - } public KW_FOREACH(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_FOREACH, 0)!; } - public for_variable(): For_variableContext { - return this.getRuleContext(0, For_variableContext)!; - } - public foreach_slice(): Foreach_sliceContext { - return this.getRuleContext(0, Foreach_sliceContext)!; + public any_name_list(): Any_name_listContext { + return this.getRuleContext(0, Any_name_listContext)!; } public KW_IN(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_IN, 0)!; @@ -112144,61 +85129,37 @@ export class Stmt_foreach_aContext extends antlr.ParserRuleContext { public KW_ARRAY(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_ARRAY, 0)!; } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public loop_body(): Loop_bodyContext { return this.getRuleContext(0, Loop_bodyContext)!; } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_foreach_a; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_foreach_a) { - listener.enterStmt_foreach_a(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_foreach_a) { - listener.exitStmt_foreach_a(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_foreach_a) { - return visitor.visitStmt_foreach_a(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Foreach_sliceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public label_decl(): Label_declContext | null { + return this.getRuleContext(0, Label_declContext); } public KW_SLICE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_SLICE, 0); } - public iconst(): IconstContext | null { - return this.getRuleContext(0, IconstContext); + public Integral(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.Integral, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_foreach_slice; + return PostgreSqlParser.RULE_stmt_foreach_a; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterForeach_slice) { - listener.enterForeach_slice(this); + if(listener.enterStmt_foreach_a) { + listener.enterStmt_foreach_a(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitForeach_slice) { - listener.exitForeach_slice(this); + if(listener.exitStmt_foreach_a) { + listener.exitStmt_foreach_a(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitForeach_slice) { - return visitor.visitForeach_slice(this); + if (visitor.visitStmt_foreach_a) { + return visitor.visitStmt_foreach_a(this); } else { return visitor.visitChildren(this); } @@ -112210,17 +85171,23 @@ export class Stmt_exitContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public exit_type(): Exit_typeContext { - return this.getRuleContext(0, Exit_typeContext)!; - } - public opt_label(): Opt_labelContext { - return this.getRuleContext(0, Opt_labelContext)!; - } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } - public opt_exitcond(): Opt_exitcondContext | null { - return this.getRuleContext(0, Opt_exitcondContext); + public KW_EXIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXIT, 0); + } + public KW_CONTINUE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONTINUE, 0); + } + public any_identifier(): Any_identifierContext | null { + return this.getRuleContext(0, Any_identifierContext); + } + public KW_WHEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WHEN, 0); + } + public sql_expression(): Sql_expressionContext | null { + return this.getRuleContext(0, Sql_expressionContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_stmt_exit; @@ -112245,39 +85212,6 @@ export class Stmt_exitContext extends antlr.ParserRuleContext { } -export class Exit_typeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_EXIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXIT, 0); - } - public KW_CONTINUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONTINUE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exit_type; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExit_type) { - listener.enterExit_type(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExit_type) { - listener.exitExit_type(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExit_type) { - return visitor.visitExit_type(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Stmt_returnContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -112297,17 +85231,17 @@ export class Stmt_returnContext extends antlr.ParserRuleContext { public KW_QUERY(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_QUERY, 0); } - public opt_return_result(): Opt_return_resultContext | null { - return this.getRuleContext(0, Opt_return_resultContext); - } public KW_EXECUTE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_EXECUTE, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } - public opt_for_using_expression(): Opt_for_using_expressionContext | null { - return this.getRuleContext(0, Opt_for_using_expressionContext); + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); } public selectstmt(): SelectstmtContext | null { return this.getRuleContext(0, SelectstmtContext); @@ -112335,36 +85269,6 @@ export class Stmt_returnContext extends antlr.ParserRuleContext { } -export class Opt_return_resultContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sql_expression(): Sql_expressionContext | null { - return this.getRuleContext(0, Sql_expressionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_return_result; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_return_result) { - listener.enterOpt_return_result(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_return_result) { - listener.exitOpt_return_result(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_return_result) { - return visitor.visitOpt_return_result(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Stmt_raiseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -112372,53 +85276,14 @@ export class Stmt_raiseContext extends antlr.ParserRuleContext { public KW_RAISE(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_RAISE, 0)!; } - public sconst(): SconstContext | null { - return this.getRuleContext(0, SconstContext); - } - public opt_raise_list(): Opt_raise_listContext | null { - return this.getRuleContext(0, Opt_raise_listContext); - } - public opt_raise_using(): Opt_raise_usingContext | null { - return this.getRuleContext(0, Opt_raise_usingContext); - } public SEMI(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.SEMI, 0); } - public opt_stmt_raise_level(): Opt_stmt_raise_levelContext | null { - return this.getRuleContext(0, Opt_stmt_raise_levelContext); - } public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public KW_SQLSTATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SQLSTATE, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_raise; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_raise) { - listener.enterStmt_raise(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_raise) { - listener.exitStmt_raise(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_raise) { - return visitor.visitStmt_raise(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_stmt_raise_levelContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } public KW_DEBUG(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_DEBUG, 0); @@ -112438,32 +85303,20 @@ export class Opt_stmt_raise_levelContext extends antlr.ParserRuleContext { public KW_EXCEPTION(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_stmt_raise_level; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_stmt_raise_level) { - listener.enterOpt_stmt_raise_level(this); - } + public KW_SQLSTATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SQLSTATE, 0); } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_stmt_raise_level) { - listener.exitOpt_stmt_raise_level(this); - } + public sconst(): SconstContext | null { + return this.getRuleContext(0, SconstContext); } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_stmt_raise_level) { - return visitor.visitOpt_stmt_raise_level(this); - } else { - return visitor.visitChildren(this); + public opt_raise_using_elem(): Opt_raise_using_elemContext[]; + public opt_raise_using_elem(i: number): Opt_raise_using_elemContext | null; + public opt_raise_using_elem(i?: number): Opt_raise_using_elemContext[] | Opt_raise_using_elemContext | null { + if (i === undefined) { + return this.getRuleContexts(Opt_raise_using_elemContext); } - } -} - -export class Opt_raise_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, Opt_raise_using_elemContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -112474,64 +85327,31 @@ export class Opt_raise_listContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(A_exprContext); - } - - return this.getRuleContext(i, A_exprContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_raise_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_raise_list) { - listener.enterOpt_raise_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_raise_list) { - listener.exitOpt_raise_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_raise_list) { - return visitor.visitOpt_raise_list(this); - } else { - return visitor.visitChildren(this); + return this.getRuleContexts(ExpressionContext); } - } -} - -export class Opt_raise_usingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public opt_raise_using_elem_list(): Opt_raise_using_elem_listContext | null { - return this.getRuleContext(0, Opt_raise_using_elem_listContext); + return this.getRuleContext(i, ExpressionContext); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_raise_using; + return PostgreSqlParser.RULE_stmt_raise; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_raise_using) { - listener.enterOpt_raise_using(this); + if(listener.enterStmt_raise) { + listener.enterStmt_raise(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_raise_using) { - listener.exitOpt_raise_using(this); + if(listener.exitStmt_raise) { + listener.exitStmt_raise(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_raise_using) { - return visitor.visitOpt_raise_using(this); + if (visitor.visitStmt_raise) { + return visitor.visitStmt_raise(this); } else { return visitor.visitChildren(this); } @@ -112549,8 +85369,8 @@ export class Opt_raise_using_elemContext extends antlr.ParserRuleContext { public EQUAL(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.EQUAL, 0)!; } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override get ruleIndex(): number { return PostgreSqlParser.RULE_opt_raise_using_elem; @@ -112575,51 +85395,6 @@ export class Opt_raise_using_elemContext extends antlr.ParserRuleContext { } -export class Opt_raise_using_elem_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public opt_raise_using_elem(): Opt_raise_using_elemContext[]; - public opt_raise_using_elem(i: number): Opt_raise_using_elemContext | null; - public opt_raise_using_elem(i?: number): Opt_raise_using_elemContext[] | Opt_raise_using_elemContext | null { - if (i === undefined) { - return this.getRuleContexts(Opt_raise_using_elemContext); - } - - return this.getRuleContext(i, Opt_raise_using_elemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_raise_using_elem_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_raise_using_elem_list) { - listener.enterOpt_raise_using_elem_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_raise_using_elem_list) { - listener.exitOpt_raise_using_elem_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_raise_using_elem_list) { - return visitor.visitOpt_raise_using_elem_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Stmt_assertContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -112627,15 +85402,21 @@ export class Stmt_assertContext extends antlr.ParserRuleContext { public KW_ASSERT(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_ASSERT, 0)!; } - public sql_expression(): Sql_expressionContext { - return this.getRuleContext(0, Sql_expressionContext)!; - } - public opt_stmt_assert_message(): Opt_stmt_assert_messageContext { - return this.getRuleContext(0, Opt_stmt_assert_messageContext)!; + public sql_expression(): Sql_expressionContext[]; + public sql_expression(i: number): Sql_expressionContext | null; + public sql_expression(i?: number): Sql_expressionContext[] | Sql_expressionContext | null { + if (i === undefined) { + return this.getRuleContexts(Sql_expressionContext); + } + + return this.getRuleContext(i, Sql_expressionContext); } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } + public COMMA(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COMMA, 0); + } public override get ruleIndex(): number { return PostgreSqlParser.RULE_stmt_assert; } @@ -112659,39 +85440,6 @@ export class Stmt_assertContext extends antlr.ParserRuleContext { } -export class Opt_stmt_assert_messageContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public COMMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COMMA, 0); - } - public sql_expression(): Sql_expressionContext | null { - return this.getRuleContext(0, Sql_expressionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_stmt_assert_message; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_stmt_assert_message) { - listener.enterOpt_stmt_assert_message(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_stmt_assert_message) { - listener.exitOpt_stmt_assert_message(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_stmt_assert_message) { - return visitor.visitOpt_stmt_assert_message(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Loop_bodyContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -112705,18 +85453,24 @@ export class Loop_bodyContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.KW_LOOP, i); } } - public proc_sect(): Proc_sectContext { - return this.getRuleContext(0, Proc_sectContext)!; - } public KW_END(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_END, 0)!; } - public opt_label(): Opt_labelContext { - return this.getRuleContext(0, Opt_labelContext)!; - } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } + public proc_stmt(): Proc_stmtContext[]; + public proc_stmt(i: number): Proc_stmtContext | null; + public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { + if (i === undefined) { + return this.getRuleContexts(Proc_stmtContext); + } + + return this.getRuleContext(i, Proc_stmtContext); + } + public any_identifier(): Any_identifierContext | null { + return this.getRuleContext(0, Any_identifierContext); + } public override get ruleIndex(): number { return PostgreSqlParser.RULE_loop_body; } @@ -112744,12 +85498,15 @@ export class Stmt_execsqlContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public make_execsql_stmt(): Make_execsql_stmtContext { - return this.getRuleContext(0, Make_execsql_stmtContext)!; + public stmt(): StmtContext { + return this.getRuleContext(0, StmtContext)!; } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } + public opt_execute_into(): Opt_execute_intoContext | null { + return this.getRuleContext(0, Opt_execute_intoContext); + } public override get ruleIndex(): number { return PostgreSqlParser.RULE_stmt_execsql; } @@ -112780,8 +85537,8 @@ export class Stmt_dynexecuteContext extends antlr.ParserRuleContext { public KW_EXECUTE(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_EXECUTE, 0)!; } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; @@ -112789,8 +85546,11 @@ export class Stmt_dynexecuteContext extends antlr.ParserRuleContext { public opt_execute_into(): Opt_execute_intoContext | null { return this.getRuleContext(0, Opt_execute_intoContext); } - public opt_execute_using(): Opt_execute_usingContext | null { - return this.getRuleContext(0, Opt_execute_usingContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); + } + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_stmt_dynexecute; @@ -112815,93 +85575,15 @@ export class Stmt_dynexecuteContext extends antlr.ParserRuleContext { } -export class Opt_execute_usingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public opt_execute_using_list(): Opt_execute_using_listContext | null { - return this.getRuleContext(0, Opt_execute_using_listContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_execute_using; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_execute_using) { - listener.enterOpt_execute_using(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_execute_using) { - listener.exitOpt_execute_using(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_execute_using) { - return visitor.visitOpt_execute_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_execute_using_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext[]; - public a_expr(i: number): A_exprContext | null; - public a_expr(i?: number): A_exprContext[] | A_exprContext | null { - if (i === undefined) { - return this.getRuleContexts(A_exprContext); - } - - return this.getRuleContext(i, A_exprContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(PostgreSqlParser.COMMA); - } else { - return this.getToken(PostgreSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_execute_using_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_execute_using_list) { - listener.enterOpt_execute_using_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_execute_using_list) { - listener.exitOpt_execute_using_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_execute_using_list) { - return visitor.visitOpt_execute_using_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Opt_execute_intoContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_INTO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INTO, 0); + public KW_INTO(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_INTO, 0)!; } - public into_target(): Into_targetContext | null { - return this.getRuleContext(0, Into_targetContext); + public expr_list(): Expr_listContext { + return this.getRuleContext(0, Expr_listContext)!; } public KW_STRICT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_STRICT, 0); @@ -112942,9 +85624,6 @@ export class Stmt_openContext extends antlr.ParserRuleContext { public cursor_variable(): Cursor_variableContext | null { return this.getRuleContext(0, Cursor_variableContext); } - public opt_scroll_option(): Opt_scroll_optionContext | null { - return this.getRuleContext(0, Opt_scroll_optionContext); - } public KW_FOR(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_FOR, 0); } @@ -112960,80 +85639,20 @@ export class Stmt_openContext extends antlr.ParserRuleContext { public sql_expression(): Sql_expressionContext | null { return this.getRuleContext(0, Sql_expressionContext); } - public opt_open_using(): Opt_open_usingContext | null { - return this.getRuleContext(0, Opt_open_usingContext); + public KW_SCROLL(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SCROLL, 0); } public OPEN_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } - public opt_open_bound_list(): Opt_open_bound_listContext | null { - return this.getRuleContext(0, Opt_open_bound_listContext); - } public CLOSE_PAREN(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_open; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_open) { - listener.enterStmt_open(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_open) { - listener.exitStmt_open(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_open) { - return visitor.visitStmt_open(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_open_bound_list_itemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } - public COLON_EQUALS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.COLON_EQUALS, 0); - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_open_bound_list_item; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_open_bound_list_item) { - listener.enterOpt_open_bound_list_item(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_open_bound_list_item) { - listener.exitOpt_open_bound_list_item(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_open_bound_list_item) { - return visitor.visitOpt_open_bound_list_item(this); - } else { - return visitor.visitChildren(this); - } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USING, 0); } -} - - -export class Opt_open_bound_listContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public expr_list(): Expr_listContext | null { + return this.getRuleContext(0, Expr_listContext); } public opt_open_bound_list_item(): Opt_open_bound_list_itemContext[]; public opt_open_bound_list_item(i: number): Opt_open_bound_list_itemContext | null; @@ -113044,6 +85663,9 @@ export class Opt_open_bound_listContext extends antlr.ParserRuleContext { return this.getRuleContext(i, Opt_open_bound_list_itemContext); } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NO, 0); + } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { @@ -113054,54 +85676,21 @@ export class Opt_open_bound_listContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_open_bound_list; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_open_bound_list) { - listener.enterOpt_open_bound_list(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_open_bound_list) { - listener.exitOpt_open_bound_list(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_open_bound_list) { - return visitor.visitOpt_open_bound_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_open_usingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USING, 0); - } - public expr_list(): Expr_listContext | null { - return this.getRuleContext(0, Expr_listContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_open_using; + return PostgreSqlParser.RULE_stmt_open; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_open_using) { - listener.enterOpt_open_using(this); + if(listener.enterStmt_open) { + listener.enterStmt_open(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_open_using) { - listener.exitOpt_open_using(this); + if(listener.exitStmt_open) { + listener.exitStmt_open(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_open_using) { - return visitor.visitOpt_open_using(this); + if (visitor.visitStmt_open) { + return visitor.visitStmt_open(this); } else { return visitor.visitChildren(this); } @@ -113109,62 +85698,35 @@ export class Opt_open_usingContext extends antlr.ParserRuleContext { } -export class Opt_scroll_optionContext extends antlr.ParserRuleContext { +export class Opt_open_bound_list_itemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opt_scroll_option_no(): Opt_scroll_option_noContext | null { - return this.getRuleContext(0, Opt_scroll_option_noContext); - } - public KW_SCROLL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCROLL, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_scroll_option; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_scroll_option) { - listener.enterOpt_scroll_option(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_scroll_option) { - listener.exitOpt_scroll_option(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_scroll_option) { - return visitor.visitOpt_scroll_option(this); - } else { - return visitor.visitChildren(this); - } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } -} - - -export class Opt_scroll_option_noContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); + public COLON_EQUALS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.COLON_EQUALS, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_scroll_option_no; + return PostgreSqlParser.RULE_opt_open_bound_list_item; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_scroll_option_no) { - listener.enterOpt_scroll_option_no(this); + if(listener.enterOpt_open_bound_list_item) { + listener.enterOpt_open_bound_list_item(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_scroll_option_no) { - listener.exitOpt_scroll_option_no(this); + if(listener.exitOpt_open_bound_list_item) { + listener.exitOpt_open_bound_list_item(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_scroll_option_no) { - return visitor.visitOpt_scroll_option_no(this); + if (visitor.visitOpt_open_bound_list_item) { + return visitor.visitOpt_open_bound_list_item(this); } else { return visitor.visitChildren(this); } @@ -113180,21 +85742,21 @@ export class Stmt_fetchContext extends antlr.ParserRuleContext { public KW_FETCH(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_FETCH, 0)!; } - public opt_cursor_from(): Opt_cursor_fromContext { - return this.getRuleContext(0, Opt_cursor_fromContext)!; - } public cursor_variable(): Cursor_variableContext { return this.getRuleContext(0, Cursor_variableContext)!; } public KW_INTO(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_INTO, 0)!; } - public into_target(): Into_targetContext { - return this.getRuleContext(0, Into_targetContext)!; + public expr_list(): Expr_listContext { + return this.getRuleContext(0, Expr_listContext)!; } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } + public from_in(): From_inContext | null { + return this.getRuleContext(0, From_inContext); + } public opt_fetch_direction(): Opt_fetch_directionContext | null { return this.getRuleContext(0, Opt_fetch_directionContext); } @@ -113221,69 +85783,6 @@ export class Stmt_fetchContext extends antlr.ParserRuleContext { } -export class Into_targetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expr_list(): Expr_listContext { - return this.getRuleContext(0, Expr_listContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_into_target; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterInto_target) { - listener.enterInto_target(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitInto_target) { - listener.exitInto_target(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitInto_target) { - return visitor.visitInto_target(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_cursor_fromContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FROM, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IN, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_cursor_from; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_cursor_from) { - listener.enterOpt_cursor_from(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_cursor_from) { - listener.exitOpt_cursor_from(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_cursor_from) { - return visitor.visitOpt_cursor_from(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Opt_fetch_directionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -113300,12 +85799,12 @@ export class Opt_fetch_directionContext extends antlr.ParserRuleContext { public KW_LAST(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_LAST, 0); } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } public KW_ABSOLUTE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ABSOLUTE, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); - } public KW_RELATIVE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); } @@ -113402,8 +85901,8 @@ export class MergestmtContext extends antlr.ParserRuleContext { public KW_ON(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_ON, 0)!; } - public join_condition(): Join_conditionContext { - return this.getRuleContext(0, Join_conditionContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public with_clause(): With_clauseContext | null { return this.getRuleContext(0, With_clauseContext); @@ -113500,36 +85999,6 @@ export class Data_sourceContext extends antlr.ParserRuleContext { } -export class Join_conditionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_join_condition; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterJoin_condition) { - listener.enterJoin_condition(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitJoin_condition) { - listener.exitJoin_condition(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitJoin_condition) { - return visitor.visitJoin_condition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Merge_when_clauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -113558,8 +86027,8 @@ export class Merge_when_clauseContext extends antlr.ParserRuleContext { public KW_AND(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_AND, 0); } - public a_expr(): A_exprContext | null { - return this.getRuleContext(0, A_exprContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public KW_NOT(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NOT, 0); @@ -113600,14 +86069,8 @@ export class Merge_insertContext extends antlr.ParserRuleContext { public default_values_or_values(): Default_values_or_valuesContext { return this.getRuleContext(0, Default_values_or_valuesContext)!; } - public OPEN_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); - } - public column_list(): Column_listContext | null { - return this.getRuleContext(0, Column_listContext); - } - public CLOSE_PAREN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); + public opt_column_list(): Opt_column_listContext | null { + return this.getRuleContext(0, Opt_column_listContext); } public KW_OVERRIDING(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_OVERRIDING, 0); @@ -113681,6 +86144,15 @@ export class Merge_updateContext extends antlr.ParserRuleContext { return this.getRuleContext(i, ExprofdefaultContext); } + public opt_column_list(): Opt_column_listContext[]; + public opt_column_list(i: number): Opt_column_listContext | null; + public opt_column_list(i?: number): Opt_column_listContext[] | Opt_column_listContext | null { + if (i === undefined) { + return this.getRuleContexts(Opt_column_listContext); + } + + return this.getRuleContext(i, Opt_column_listContext); + } public OPEN_PAREN(): antlr.TerminalNode[]; public OPEN_PAREN(i: number): antlr.TerminalNode | null; public OPEN_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { @@ -113690,15 +86162,6 @@ export class Merge_updateContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.OPEN_PAREN, i); } } - public column_list(): Column_listContext[]; - public column_list(i: number): Column_listContext | null; - public column_list(i?: number): Column_listContext[] | Column_listContext | null { - if (i === undefined) { - return this.getRuleContexts(Column_listContext); - } - - return this.getRuleContext(i, Column_listContext); - } public CLOSE_PAREN(): antlr.TerminalNode[]; public CLOSE_PAREN(i: number): antlr.TerminalNode | null; public CLOSE_PAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { @@ -113708,14 +86171,14 @@ export class Merge_updateContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.CLOSE_PAREN, i); } } - public exprofdefaultlist(): ExprofdefaultlistContext[]; - public exprofdefaultlist(i: number): ExprofdefaultlistContext | null; - public exprofdefaultlist(i?: number): ExprofdefaultlistContext[] | ExprofdefaultlistContext | null { - if (i === undefined) { - return this.getRuleContexts(ExprofdefaultlistContext); - } - - return this.getRuleContext(i, ExprofdefaultlistContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.COMMA); + } else { + return this.getToken(PostgreSqlParser.COMMA, i); + } } public override get ruleIndex(): number { return PostgreSqlParser.RULE_merge_update; @@ -113747,41 +86210,8 @@ export class Default_values_or_valuesContext extends antlr.ParserRuleContext { public KW_VALUES(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.KW_VALUES, 0)!; } - public exprofdefaultlist(): ExprofdefaultlistContext | null { - return this.getRuleContext(0, ExprofdefaultlistContext); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_default_values_or_values; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterDefault_values_or_values) { - listener.enterDefault_values_or_values(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitDefault_values_or_values) { - listener.exitDefault_values_or_values(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitDefault_values_or_values) { - return visitor.visitDefault_values_or_values(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExprofdefaultlistContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public OPEN_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.OPEN_PAREN, 0)!; + public OPEN_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.OPEN_PAREN, 0); } public exprofdefault(): ExprofdefaultContext[]; public exprofdefault(i: number): ExprofdefaultContext | null; @@ -113792,8 +86222,8 @@ export class ExprofdefaultlistContext extends antlr.ParserRuleContext { return this.getRuleContext(i, ExprofdefaultContext); } - public CLOSE_PAREN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0)!; + public CLOSE_PAREN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.CLOSE_PAREN, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -113804,22 +86234,25 @@ export class ExprofdefaultlistContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.COMMA, i); } } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exprofdefaultlist; + return PostgreSqlParser.RULE_default_values_or_values; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExprofdefaultlist) { - listener.enterExprofdefaultlist(this); + if(listener.enterDefault_values_or_values) { + listener.enterDefault_values_or_values(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExprofdefaultlist) { - listener.exitExprofdefaultlist(this); + if(listener.exitDefault_values_or_values) { + listener.exitDefault_values_or_values(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExprofdefaultlist) { - return visitor.visitExprofdefaultlist(this); + if (visitor.visitDefault_values_or_values) { + return visitor.visitDefault_values_or_values(this); } else { return visitor.visitChildren(this); } @@ -113929,107 +86362,44 @@ export class Stmt_nullContext extends antlr.ParserRuleContext { } -export class Stmt_commitContext extends antlr.ParserRuleContext { +export class Stmt_commit_or_rollbackContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_COMMIT(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_COMMIT, 0)!; - } public SEMI(): antlr.TerminalNode { return this.getToken(PostgreSqlParser.SEMI, 0)!; } - public plsql_opt_transaction_chain(): Plsql_opt_transaction_chainContext | null { - return this.getRuleContext(0, Plsql_opt_transaction_chainContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_commit; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_commit) { - listener.enterStmt_commit(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_commit) { - listener.exitStmt_commit(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_commit) { - return visitor.visitStmt_commit(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Stmt_rollbackContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ROLLBACK(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0)!; - } - public SEMI(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.SEMI, 0)!; - } - public plsql_opt_transaction_chain(): Plsql_opt_transaction_chainContext | null { - return this.getRuleContext(0, Plsql_opt_transaction_chainContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_stmt_rollback; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterStmt_rollback) { - listener.enterStmt_rollback(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitStmt_rollback) { - listener.exitStmt_rollback(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitStmt_rollback) { - return visitor.visitStmt_rollback(this); - } else { - return visitor.visitChildren(this); - } + public KW_COMMIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_COMMIT, 0); } -} - - -export class Plsql_opt_transaction_chainContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_ROLLBACK(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); } - public KW_AND(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_AND, 0)!; + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_AND, 0); } - public KW_CHAIN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_CHAIN, 0)!; + public KW_CHAIN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CHAIN, 0); } public KW_NO(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_NO, 0); } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsql_opt_transaction_chain; + return PostgreSqlParser.RULE_stmt_commit_or_rollback; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsql_opt_transaction_chain) { - listener.enterPlsql_opt_transaction_chain(this); + if(listener.enterStmt_commit_or_rollback) { + listener.enterStmt_commit_or_rollback(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsql_opt_transaction_chain) { - listener.exitPlsql_opt_transaction_chain(this); + if(listener.exitStmt_commit_or_rollback) { + listener.exitStmt_commit_or_rollback(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsql_opt_transaction_chain) { - return visitor.visitPlsql_opt_transaction_chain(this); + if (visitor.visitStmt_commit_or_rollback) { + return visitor.visitStmt_commit_or_rollback(this); } else { return visitor.visitChildren(this); } @@ -114122,113 +86492,26 @@ export class Exception_sectContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_EXCEPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0); - } - public proc_exceptions(): Proc_exceptionsContext | null { - return this.getRuleContext(0, Proc_exceptionsContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_exception_sect; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterException_sect) { - listener.enterException_sect(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitException_sect) { - listener.exitException_sect(this); - } + public KW_EXCEPTION(): antlr.TerminalNode { + return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0)!; } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitException_sect) { - return visitor.visitException_sect(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Proc_exceptionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public proc_exception(): Proc_exceptionContext[]; - public proc_exception(i: number): Proc_exceptionContext | null; - public proc_exception(i?: number): Proc_exceptionContext[] | Proc_exceptionContext | null { - if (i === undefined) { - return this.getRuleContexts(Proc_exceptionContext); - } - - return this.getRuleContext(i, Proc_exceptionContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_proc_exceptions; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProc_exceptions) { - listener.enterProc_exceptions(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProc_exceptions) { - listener.exitProc_exceptions(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProc_exceptions) { - return visitor.visitProc_exceptions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Proc_exceptionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHEN, 0)!; - } - public proc_conditions(): Proc_conditionsContext { - return this.getRuleContext(0, Proc_conditionsContext)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_THEN, 0)!; - } - public proc_sect(): Proc_sectContext { - return this.getRuleContext(0, Proc_sectContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_proc_exception; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProc_exception) { - listener.enterProc_exception(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProc_exception) { - listener.exitProc_exception(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProc_exception) { - return visitor.visitProc_exception(this); - } else { - return visitor.visitChildren(this); - } + public KW_WHEN(): antlr.TerminalNode[]; + public KW_WHEN(i: number): antlr.TerminalNode | null; + public KW_WHEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_WHEN); + } else { + return this.getToken(PostgreSqlParser.KW_WHEN, i); + } } -} - - -export class Proc_conditionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_THEN(): antlr.TerminalNode[]; + public KW_THEN(i: number): antlr.TerminalNode | null; + public KW_THEN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(PostgreSqlParser.KW_THEN); + } else { + return this.getToken(PostgreSqlParser.KW_THEN, i); + } } public proc_condition(): Proc_conditionContext[]; public proc_condition(i: number): Proc_conditionContext | null; @@ -114239,6 +86522,15 @@ export class Proc_conditionsContext extends antlr.ParserRuleContext { return this.getRuleContext(i, Proc_conditionContext); } + public proc_stmt(): Proc_stmtContext[]; + public proc_stmt(i: number): Proc_stmtContext | null; + public proc_stmt(i?: number): Proc_stmtContext[] | Proc_stmtContext | null { + if (i === undefined) { + return this.getRuleContexts(Proc_stmtContext); + } + + return this.getRuleContext(i, Proc_stmtContext); + } public KW_OR(): antlr.TerminalNode[]; public KW_OR(i: number): antlr.TerminalNode | null; public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { @@ -114249,21 +86541,21 @@ export class Proc_conditionsContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return PostgreSqlParser.RULE_proc_conditions; + return PostgreSqlParser.RULE_exception_sect; } public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterProc_conditions) { - listener.enterProc_conditions(this); + if(listener.enterException_sect) { + listener.enterException_sect(this); } } public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitProc_conditions) { - listener.exitProc_conditions(this); + if(listener.exitException_sect) { + listener.exitException_sect(this); } } public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitProc_conditions) { - return visitor.visitProc_conditions(this); + if (visitor.visitException_sect) { + return visitor.visitException_sect(this); } else { return visitor.visitChildren(this); } @@ -114307,129 +86599,6 @@ export class Proc_conditionContext extends antlr.ParserRuleContext { } -export class Opt_block_labelContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public label_decl(): Label_declContext | null { - return this.getRuleContext(0, Label_declContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_block_label; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_block_label) { - listener.enterOpt_block_label(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_block_label) { - listener.exitOpt_block_label(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_block_label) { - return visitor.visitOpt_block_label(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_loop_labelContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public label_decl(): Label_declContext | null { - return this.getRuleContext(0, Label_declContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_loop_label; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_loop_label) { - listener.enterOpt_loop_label(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_loop_label) { - listener.exitOpt_loop_label(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_loop_label) { - return visitor.visitOpt_loop_label(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_labelContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public any_identifier(): Any_identifierContext | null { - return this.getRuleContext(0, Any_identifierContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_label; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_label) { - listener.enterOpt_label(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_label) { - listener.exitOpt_label(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_label) { - return visitor.visitOpt_label(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_exitcondContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_WHEN, 0)!; - } - public expr_until_semi(): Expr_until_semiContext { - return this.getRuleContext(0, Expr_until_semiContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_exitcond; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_exitcond) { - listener.enterOpt_exitcond(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_exitcond) { - listener.exitOpt_exitcond(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_exitcond) { - return visitor.visitOpt_exitcond(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Any_identifierContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -114683,8 +86852,8 @@ export class Sql_expressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public opt_target_list(): Opt_target_listContext | null { - return this.getRuleContext(0, Opt_target_listContext); + public target_list(): Target_listContext | null { + return this.getRuleContext(0, Target_listContext); } public into_clause(): Into_clauseContext | null { return this.getRuleContext(0, Into_clauseContext); @@ -114698,8 +86867,11 @@ export class Sql_expressionContext extends antlr.ParserRuleContext { public group_clause(): Group_clauseContext | null { return this.getRuleContext(0, Group_clauseContext); } - public having_clause(): Having_clauseContext | null { - return this.getRuleContext(0, Having_clauseContext); + public KW_HAVING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_HAVING, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public window_clause(): Window_clauseContext | null { return this.getRuleContext(0, Window_clauseContext); @@ -114725,192 +86897,3 @@ export class Sql_expressionContext extends antlr.ParserRuleContext { } } } - - -export class Expr_until_thenContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sql_expression(): Sql_expressionContext { - return this.getRuleContext(0, Sql_expressionContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_expr_until_then; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExpr_until_then) { - listener.enterExpr_until_then(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExpr_until_then) { - listener.exitExpr_until_then(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExpr_until_then) { - return visitor.visitExpr_until_then(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Expr_until_semiContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sql_expression(): Sql_expressionContext { - return this.getRuleContext(0, Sql_expressionContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_expr_until_semi; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExpr_until_semi) { - listener.enterExpr_until_semi(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExpr_until_semi) { - listener.exitExpr_until_semi(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExpr_until_semi) { - return visitor.visitExpr_until_semi(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Expr_until_rightbracketContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_expr_until_rightbracket; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExpr_until_rightbracket) { - listener.enterExpr_until_rightbracket(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExpr_until_rightbracket) { - listener.exitExpr_until_rightbracket(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExpr_until_rightbracket) { - return visitor.visitExpr_until_rightbracket(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Expr_until_loopContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public a_expr(): A_exprContext { - return this.getRuleContext(0, A_exprContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_expr_until_loop; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterExpr_until_loop) { - listener.enterExpr_until_loop(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitExpr_until_loop) { - listener.exitExpr_until_loop(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitExpr_until_loop) { - return visitor.visitExpr_until_loop(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Make_execsql_stmtContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public stmt(): StmtContext { - return this.getRuleContext(0, StmtContext)!; - } - public opt_returning_clause_into(): Opt_returning_clause_intoContext | null { - return this.getRuleContext(0, Opt_returning_clause_intoContext); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_make_execsql_stmt; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterMake_execsql_stmt) { - listener.enterMake_execsql_stmt(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitMake_execsql_stmt) { - listener.exitMake_execsql_stmt(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitMake_execsql_stmt) { - return visitor.visitMake_execsql_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Opt_returning_clause_intoContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(PostgreSqlParser.KW_INTO, 0)!; - } - public opt_strict(): Opt_strictContext { - return this.getRuleContext(0, Opt_strictContext)!; - } - public into_target(): Into_targetContext { - return this.getRuleContext(0, Into_targetContext)!; - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_opt_returning_clause_into; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterOpt_returning_clause_into) { - listener.enterOpt_returning_clause_into(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitOpt_returning_clause_into) { - listener.exitOpt_returning_clause_into(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitOpt_returning_clause_into) { - return visitor.visitOpt_returning_clause_into(this); - } else { - return visitor.visitChildren(this); - } - } -} diff --git a/src/lib/postgresql/PostgreSqlParserListener.ts b/src/lib/postgresql/PostgreSqlParserListener.ts index c3c837e6..b2e80b98 100644 --- a/src/lib/postgresql/PostgreSqlParserListener.ts +++ b/src/lib/postgresql/PostgreSqlParserListener.ts @@ -9,31 +9,22 @@ import { SQLParserBase } from '../SQLParserBase'; import { ProgramContext } from "./PostgreSqlParser.js"; -import { PlsqlrootContext } from "./PostgreSqlParser.js"; import { SingleStmtContext } from "./PostgreSqlParser.js"; import { StmtContext } from "./PostgreSqlParser.js"; -import { PlsqlconsolecommandContext } from "./PostgreSqlParser.js"; import { CallstmtContext } from "./PostgreSqlParser.js"; import { CreaterolestmtContext } from "./PostgreSqlParser.js"; -import { Opt_withContext } from "./PostgreSqlParser.js"; -import { OptrolelistContext } from "./PostgreSqlParser.js"; -import { AlteroptrolelistContext } from "./PostgreSqlParser.js"; import { AlteroptroleelemContext } from "./PostgreSqlParser.js"; import { CreateoptroleelemContext } from "./PostgreSqlParser.js"; import { CreateuserstmtContext } from "./PostgreSqlParser.js"; import { AlterrolestmtContext } from "./PostgreSqlParser.js"; -import { Opt_in_databaseContext } from "./PostgreSqlParser.js"; import { AlterrolesetstmtContext } from "./PostgreSqlParser.js"; import { AlterroutinestmtContext } from "./PostgreSqlParser.js"; import { Alter_routine_cluaseContext } from "./PostgreSqlParser.js"; -import { Routine_action_listContext } from "./PostgreSqlParser.js"; import { Routine_actionContext } from "./PostgreSqlParser.js"; import { CreategroupstmtContext } from "./PostgreSqlParser.js"; import { AltergroupstmtContext } from "./PostgreSqlParser.js"; -import { Add_dropContext } from "./PostgreSqlParser.js"; import { CreateschemastmtContext } from "./PostgreSqlParser.js"; import { SchemaNameCreateContext } from "./PostgreSqlParser.js"; -import { OptschemaeltlistContext } from "./PostgreSqlParser.js"; import { Schema_stmtContext } from "./PostgreSqlParser.js"; import { VariablesetstmtContext } from "./PostgreSqlParser.js"; import { Set_restContext } from "./PostgreSqlParser.js"; @@ -46,18 +37,13 @@ import { Iso_levelContext } from "./PostgreSqlParser.js"; import { Opt_boolean_or_string_columnContext } from "./PostgreSqlParser.js"; import { Opt_boolean_or_stringContext } from "./PostgreSqlParser.js"; import { Zone_valueContext } from "./PostgreSqlParser.js"; -import { Opt_encodingContext } from "./PostgreSqlParser.js"; -import { Nonreservedword_or_sconst_columnContext } from "./PostgreSqlParser.js"; import { Nonreservedword_or_sconstContext } from "./PostgreSqlParser.js"; import { VariableresetstmtContext } from "./PostgreSqlParser.js"; import { Reset_restContext } from "./PostgreSqlParser.js"; -import { Generic_resetContext } from "./PostgreSqlParser.js"; import { SetresetclauseContext } from "./PostgreSqlParser.js"; import { FunctionsetresetclauseContext } from "./PostgreSqlParser.js"; import { VariableshowstmtContext } from "./PostgreSqlParser.js"; import { ConstraintssetstmtContext } from "./PostgreSqlParser.js"; -import { Constraints_set_listContext } from "./PostgreSqlParser.js"; -import { Constraints_set_modeContext } from "./PostgreSqlParser.js"; import { CheckpointstmtContext } from "./PostgreSqlParser.js"; import { DiscardstmtContext } from "./PostgreSqlParser.js"; import { AltertablestmtContext } from "./PostgreSqlParser.js"; @@ -72,85 +58,45 @@ import { Alter_table_cmdContext } from "./PostgreSqlParser.js"; import { Alter_column_defaultContext } from "./PostgreSqlParser.js"; import { Opt_drop_behaviorContext } from "./PostgreSqlParser.js"; import { Opt_collate_clauseContext } from "./PostgreSqlParser.js"; -import { Alter_usingContext } from "./PostgreSqlParser.js"; -import { Replica_identityContext } from "./PostgreSqlParser.js"; import { ReloptionsContext } from "./PostgreSqlParser.js"; import { Opt_reloptionsContext } from "./PostgreSqlParser.js"; -import { Reloption_listContext } from "./PostgreSqlParser.js"; import { Reloption_elemContext } from "./PostgreSqlParser.js"; -import { Alter_identity_column_option_listContext } from "./PostgreSqlParser.js"; -import { Alter_identity_column_optionContext } from "./PostgreSqlParser.js"; import { PartitionboundspecContext } from "./PostgreSqlParser.js"; -import { Hash_partbound_elemContext } from "./PostgreSqlParser.js"; -import { Hash_partboundContext } from "./PostgreSqlParser.js"; import { AltercompositetypestmtContext } from "./PostgreSqlParser.js"; -import { Alter_type_cmdsContext } from "./PostgreSqlParser.js"; import { Alter_type_cmdContext } from "./PostgreSqlParser.js"; import { CloseportalstmtContext } from "./PostgreSqlParser.js"; import { CopystmtContext } from "./PostgreSqlParser.js"; -import { Copy_fromContext } from "./PostgreSqlParser.js"; -import { Opt_programContext } from "./PostgreSqlParser.js"; -import { Copy_file_nameContext } from "./PostgreSqlParser.js"; import { Copy_optionsContext } from "./PostgreSqlParser.js"; -import { Copy_opt_listContext } from "./PostgreSqlParser.js"; -import { Copy_opt_itemContext } from "./PostgreSqlParser.js"; -import { Opt_binaryContext } from "./PostgreSqlParser.js"; -import { Copy_delimiterContext } from "./PostgreSqlParser.js"; -import { Opt_usingContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_listContext } from "./PostgreSqlParser.js"; import { Copy_generic_opt_elemContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_argContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_arg_listContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_arg_list_itemContext } from "./PostgreSqlParser.js"; import { ColumnCreateTableContext } from "./PostgreSqlParser.js"; import { OpttempContext } from "./PostgreSqlParser.js"; -import { Table_column_listContext } from "./PostgreSqlParser.js"; -import { OpttableelementlistContext } from "./PostgreSqlParser.js"; import { OpttypedtableelementlistContext } from "./PostgreSqlParser.js"; import { TableelementlistContext } from "./PostgreSqlParser.js"; -import { TypedtableelementlistContext } from "./PostgreSqlParser.js"; import { TableelementContext } from "./PostgreSqlParser.js"; import { TypedtableelementContext } from "./PostgreSqlParser.js"; import { Column_defContext } from "./PostgreSqlParser.js"; -import { CompressionCluaseContext } from "./PostgreSqlParser.js"; -import { StorageCluaseContext } from "./PostgreSqlParser.js"; -import { ColumnOptionsContext } from "./PostgreSqlParser.js"; -import { ColquallistContext } from "./PostgreSqlParser.js"; import { ColconstraintContext } from "./PostgreSqlParser.js"; import { ColconstraintelemContext } from "./PostgreSqlParser.js"; -import { Nulls_distinctContext } from "./PostgreSqlParser.js"; import { Generated_whenContext } from "./PostgreSqlParser.js"; -import { Deferrable_triggerContext } from "./PostgreSqlParser.js"; -import { Initially_triggerContext } from "./PostgreSqlParser.js"; -import { TablelikeclauseContext } from "./PostgreSqlParser.js"; -import { TablelikeoptionlistContext } from "./PostgreSqlParser.js"; import { TablelikeoptionContext } from "./PostgreSqlParser.js"; -import { TableconstraintContext } from "./PostgreSqlParser.js"; import { ConstraintelemContext } from "./PostgreSqlParser.js"; -import { Opt_no_inheritContext } from "./PostgreSqlParser.js"; import { Opt_column_listContext } from "./PostgreSqlParser.js"; import { Opt_column_list_createContext } from "./PostgreSqlParser.js"; import { Column_listContext } from "./PostgreSqlParser.js"; -import { Column_list_createContext } from "./PostgreSqlParser.js"; import { Opt_c_includeContext } from "./PostgreSqlParser.js"; import { Key_matchContext } from "./PostgreSqlParser.js"; -import { ExclusionconstraintlistContext } from "./PostgreSqlParser.js"; import { ExclusionconstraintelemContext } from "./PostgreSqlParser.js"; -import { ExclusionwhereclauseContext } from "./PostgreSqlParser.js"; import { Key_actionsContext } from "./PostgreSqlParser.js"; import { Key_updateContext } from "./PostgreSqlParser.js"; import { Key_deleteContext } from "./PostgreSqlParser.js"; import { Key_actionContext } from "./PostgreSqlParser.js"; import { OptinheritContext } from "./PostgreSqlParser.js"; -import { OptpartitionspecContext } from "./PostgreSqlParser.js"; import { PartitionspecContext } from "./PostgreSqlParser.js"; -import { Part_paramsContext } from "./PostgreSqlParser.js"; import { Part_elemContext } from "./PostgreSqlParser.js"; import { Table_access_method_clauseContext } from "./PostgreSqlParser.js"; import { OptwithContext } from "./PostgreSqlParser.js"; import { OncommitoptionContext } from "./PostgreSqlParser.js"; import { OpttablespaceContext } from "./PostgreSqlParser.js"; -import { Index_paramenters_createContext } from "./PostgreSqlParser.js"; import { OptconstablespaceContext } from "./PostgreSqlParser.js"; import { ExistingindexContext } from "./PostgreSqlParser.js"; import { CreatestatsstmtContext } from "./PostgreSqlParser.js"; @@ -159,185 +105,93 @@ import { QueryCreateTableContext } from "./PostgreSqlParser.js"; import { Create_as_targetContext } from "./PostgreSqlParser.js"; import { Opt_with_dataContext } from "./PostgreSqlParser.js"; import { CreateMaterializedViewContext } from "./PostgreSqlParser.js"; -import { Create_mv_targetContext } from "./PostgreSqlParser.js"; -import { OptnologContext } from "./PostgreSqlParser.js"; import { RefreshmatviewstmtContext } from "./PostgreSqlParser.js"; import { CreateseqstmtContext } from "./PostgreSqlParser.js"; import { AlterseqstmtContext } from "./PostgreSqlParser.js"; -import { OptseqoptlistContext } from "./PostgreSqlParser.js"; -import { OptparenthesizedseqoptlistContext } from "./PostgreSqlParser.js"; -import { SeqoptlistContext } from "./PostgreSqlParser.js"; import { SeqoptelemContext } from "./PostgreSqlParser.js"; -import { Opt_byContext } from "./PostgreSqlParser.js"; import { NumericonlyContext } from "./PostgreSqlParser.js"; -import { Numericonly_listContext } from "./PostgreSqlParser.js"; import { CreateplangstmtContext } from "./PostgreSqlParser.js"; -import { Opt_trustedContext } from "./PostgreSqlParser.js"; -import { Handler_nameContext } from "./PostgreSqlParser.js"; -import { Opt_inline_handlerContext } from "./PostgreSqlParser.js"; -import { Validator_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_validatorContext } from "./PostgreSqlParser.js"; -import { Opt_proceduralContext } from "./PostgreSqlParser.js"; import { CreatetablespacestmtContext } from "./PostgreSqlParser.js"; -import { OpttablespaceownerContext } from "./PostgreSqlParser.js"; import { CreateextensionstmtContext } from "./PostgreSqlParser.js"; -import { Create_extension_opt_listContext } from "./PostgreSqlParser.js"; -import { Create_extension_opt_itemContext } from "./PostgreSqlParser.js"; import { AlterextensionstmtContext } from "./PostgreSqlParser.js"; -import { Alter_extension_opt_listContext } from "./PostgreSqlParser.js"; -import { Alter_extension_opt_itemContext } from "./PostgreSqlParser.js"; import { AlterextensioncontentsstmtContext } from "./PostgreSqlParser.js"; import { CreatefdwstmtContext } from "./PostgreSqlParser.js"; import { Fdw_optionContext } from "./PostgreSqlParser.js"; -import { Fdw_optionsContext } from "./PostgreSqlParser.js"; -import { Opt_fdw_optionsContext } from "./PostgreSqlParser.js"; import { AlterfdwstmtContext } from "./PostgreSqlParser.js"; import { Create_generic_optionsContext } from "./PostgreSqlParser.js"; -import { Generic_option_listContext } from "./PostgreSqlParser.js"; import { Alter_generic_optionsContext } from "./PostgreSqlParser.js"; -import { Alter_generic_option_listContext } from "./PostgreSqlParser.js"; import { Alter_generic_option_elemContext } from "./PostgreSqlParser.js"; import { Generic_option_elemContext } from "./PostgreSqlParser.js"; -import { Generic_option_nameContext } from "./PostgreSqlParser.js"; -import { Generic_option_argContext } from "./PostgreSqlParser.js"; import { CreateforeignserverstmtContext } from "./PostgreSqlParser.js"; -import { Opt_typeContext } from "./PostgreSqlParser.js"; import { Foreign_server_versionContext } from "./PostgreSqlParser.js"; -import { Opt_foreign_server_versionContext } from "./PostgreSqlParser.js"; import { AlterforeignserverstmtContext } from "./PostgreSqlParser.js"; import { CreateForeignTableContext } from "./PostgreSqlParser.js"; import { CreatePartitionForeignTableContext } from "./PostgreSqlParser.js"; import { ImportforeignschemastmtContext } from "./PostgreSqlParser.js"; -import { Import_qualification_typeContext } from "./PostgreSqlParser.js"; -import { Import_qualificationContext } from "./PostgreSqlParser.js"; import { CreateusermappingstmtContext } from "./PostgreSqlParser.js"; -import { Auth_identContext } from "./PostgreSqlParser.js"; import { AlterusermappingstmtContext } from "./PostgreSqlParser.js"; import { CreatepolicystmtContext } from "./PostgreSqlParser.js"; import { AlterpolicystmtContext } from "./PostgreSqlParser.js"; import { AlterprocedurestmtContext } from "./PostgreSqlParser.js"; -import { Procedure_cluaseContext } from "./PostgreSqlParser.js"; import { Procedure_actionContext } from "./PostgreSqlParser.js"; import { RowsecurityoptionalexprContext } from "./PostgreSqlParser.js"; import { RowsecurityoptionalwithcheckContext } from "./PostgreSqlParser.js"; -import { RowsecuritydefaulttoroleContext } from "./PostgreSqlParser.js"; -import { RowsecurityoptionaltoroleContext } from "./PostgreSqlParser.js"; -import { RowsecuritydefaultpermissiveContext } from "./PostgreSqlParser.js"; -import { RowsecuritydefaultforcmdContext } from "./PostgreSqlParser.js"; -import { Row_security_cmdContext } from "./PostgreSqlParser.js"; import { CreateamstmtContext } from "./PostgreSqlParser.js"; -import { Am_typeContext } from "./PostgreSqlParser.js"; import { CreatetrigstmtContext } from "./PostgreSqlParser.js"; import { TriggeractiontimeContext } from "./PostgreSqlParser.js"; -import { ForeachrowContext } from "./PostgreSqlParser.js"; -import { RoworstatmentContext } from "./PostgreSqlParser.js"; import { TriggereventsContext } from "./PostgreSqlParser.js"; import { TriggeroneeventContext } from "./PostgreSqlParser.js"; -import { TriggerreferencingContext } from "./PostgreSqlParser.js"; -import { TriggertransitionsContext } from "./PostgreSqlParser.js"; -import { TriggertransitionContext } from "./PostgreSqlParser.js"; -import { TransitionoldornewContext } from "./PostgreSqlParser.js"; -import { TransitionrowortableContext } from "./PostgreSqlParser.js"; -import { TransitionrelnameContext } from "./PostgreSqlParser.js"; -import { TriggerforspecContext } from "./PostgreSqlParser.js"; -import { TriggerforopteachContext } from "./PostgreSqlParser.js"; -import { TriggerfortypeContext } from "./PostgreSqlParser.js"; import { TriggerwhenContext } from "./PostgreSqlParser.js"; import { Function_or_procedureContext } from "./PostgreSqlParser.js"; import { TriggerfuncargsContext } from "./PostgreSqlParser.js"; import { TriggerfuncargContext } from "./PostgreSqlParser.js"; -import { OptconstrfromtableContext } from "./PostgreSqlParser.js"; -import { ConstraintattributespecContext } from "./PostgreSqlParser.js"; import { ConstraintattributeElemContext } from "./PostgreSqlParser.js"; import { CreateeventtrigstmtContext } from "./PostgreSqlParser.js"; -import { Event_trigger_when_listContext } from "./PostgreSqlParser.js"; import { Event_trigger_when_itemContext } from "./PostgreSqlParser.js"; -import { Event_trigger_value_listContext } from "./PostgreSqlParser.js"; import { AltereventtrigstmtContext } from "./PostgreSqlParser.js"; -import { Enable_triggerContext } from "./PostgreSqlParser.js"; import { CreateassertionstmtContext } from "./PostgreSqlParser.js"; import { DefinestmtContext } from "./PostgreSqlParser.js"; import { DefinitionContext } from "./PostgreSqlParser.js"; -import { Def_listContext } from "./PostgreSqlParser.js"; import { Def_elemContext } from "./PostgreSqlParser.js"; import { Def_argContext } from "./PostgreSqlParser.js"; -import { Old_aggr_definitionContext } from "./PostgreSqlParser.js"; -import { Old_aggr_listContext } from "./PostgreSqlParser.js"; import { Old_aggr_elemContext } from "./PostgreSqlParser.js"; -import { Opt_enum_val_listContext } from "./PostgreSqlParser.js"; -import { Enum_val_listContext } from "./PostgreSqlParser.js"; import { AlterenumstmtContext } from "./PostgreSqlParser.js"; import { Opt_if_not_existsContext } from "./PostgreSqlParser.js"; import { CreateopclassstmtContext } from "./PostgreSqlParser.js"; -import { Opclass_item_listContext } from "./PostgreSqlParser.js"; import { Opclass_itemContext } from "./PostgreSqlParser.js"; -import { Opt_defaultContext } from "./PostgreSqlParser.js"; -import { Opt_opfamilyContext } from "./PostgreSqlParser.js"; -import { Opclass_purposeContext } from "./PostgreSqlParser.js"; -import { Opt_recheckContext } from "./PostgreSqlParser.js"; import { CreateopfamilystmtContext } from "./PostgreSqlParser.js"; import { AlteropfamilystmtContext } from "./PostgreSqlParser.js"; -import { Opclass_drop_listContext } from "./PostgreSqlParser.js"; import { Opclass_dropContext } from "./PostgreSqlParser.js"; import { ReassignownedstmtContext } from "./PostgreSqlParser.js"; import { DropstmtContext } from "./PostgreSqlParser.js"; -import { View_nameListContext } from "./PostgreSqlParser.js"; import { Object_type_any_nameContext } from "./PostgreSqlParser.js"; import { Object_type_nameContext } from "./PostgreSqlParser.js"; -import { Object_type_name_on_any_nameContext } from "./PostgreSqlParser.js"; import { Any_name_listContext } from "./PostgreSqlParser.js"; -import { Relation_column_nameContext } from "./PostgreSqlParser.js"; -import { Relation_nameContext } from "./PostgreSqlParser.js"; import { Any_nameContext } from "./PostgreSqlParser.js"; import { AttrsContext } from "./PostgreSqlParser.js"; -import { Type_name_listContext } from "./PostgreSqlParser.js"; import { TruncatestmtContext } from "./PostgreSqlParser.js"; import { Truncate_tableContext } from "./PostgreSqlParser.js"; import { CommentstmtContext } from "./PostgreSqlParser.js"; -import { Comment_textContext } from "./PostgreSqlParser.js"; import { SeclabelstmtContext } from "./PostgreSqlParser.js"; -import { Opt_providerContext } from "./PostgreSqlParser.js"; -import { Security_labelContext } from "./PostgreSqlParser.js"; import { FetchstmtContext } from "./PostgreSqlParser.js"; import { Fetch_argsContext } from "./PostgreSqlParser.js"; import { From_inContext } from "./PostgreSqlParser.js"; -import { Opt_from_inContext } from "./PostgreSqlParser.js"; import { GrantstmtContext } from "./PostgreSqlParser.js"; import { RevokestmtContext } from "./PostgreSqlParser.js"; import { PrivilegesContext } from "./PostgreSqlParser.js"; -import { BeforeprivilegeselectlistContext } from "./PostgreSqlParser.js"; import { BeforeprivilegeselectContext } from "./PostgreSqlParser.js"; -import { Privilege_listContext } from "./PostgreSqlParser.js"; import { PrivilegeContext } from "./PostgreSqlParser.js"; import { Privilege_targetContext } from "./PostgreSqlParser.js"; import { Grantee_listContext } from "./PostgreSqlParser.js"; -import { GranteeContext } from "./PostgreSqlParser.js"; -import { Opt_grant_grant_optionContext } from "./PostgreSqlParser.js"; import { GrantrolestmtContext } from "./PostgreSqlParser.js"; import { RevokerolestmtContext } from "./PostgreSqlParser.js"; -import { Opt_grant_admin_optionContext } from "./PostgreSqlParser.js"; -import { Opt_granted_byContext } from "./PostgreSqlParser.js"; import { AlterdefaultprivilegesstmtContext } from "./PostgreSqlParser.js"; -import { DefacloptionlistContext } from "./PostgreSqlParser.js"; -import { DefacloptionContext } from "./PostgreSqlParser.js"; import { DefaclactionContext } from "./PostgreSqlParser.js"; import { Defacl_privilege_targetContext } from "./PostgreSqlParser.js"; import { IndexstmtContext } from "./PostgreSqlParser.js"; -import { Opt_uniqueContext } from "./PostgreSqlParser.js"; -import { Opt_concurrentlyContext } from "./PostgreSqlParser.js"; -import { Opt_index_nameContext } from "./PostgreSqlParser.js"; -import { Access_method_clauseContext } from "./PostgreSqlParser.js"; import { Index_paramsContext } from "./PostgreSqlParser.js"; -import { Index_elem_optionsContext } from "./PostgreSqlParser.js"; import { Index_elemContext } from "./PostgreSqlParser.js"; -import { Opt_includeContext } from "./PostgreSqlParser.js"; -import { Index_including_paramsContext } from "./PostgreSqlParser.js"; -import { Opt_collateContext } from "./PostgreSqlParser.js"; -import { Opt_classContext } from "./PostgreSqlParser.js"; -import { Opt_asc_descContext } from "./PostgreSqlParser.js"; -import { Opt_nulls_orderContext } from "./PostgreSqlParser.js"; import { CreatefunctionstmtContext } from "./PostgreSqlParser.js"; -import { AttrilistContext } from "./PostgreSqlParser.js"; import { Opt_or_replaceContext } from "./PostgreSqlParser.js"; import { Func_argsContext } from "./PostgreSqlParser.js"; import { Func_args_listContext } from "./PostgreSqlParser.js"; @@ -347,77 +201,44 @@ import { Procedure_with_argtypes_listContext } from "./PostgreSqlParser.js"; import { Procedure_with_argtypesContext } from "./PostgreSqlParser.js"; import { Function_with_argtypes_listContext } from "./PostgreSqlParser.js"; import { Function_with_argtypesContext } from "./PostgreSqlParser.js"; -import { Func_args_with_defaultsContext } from "./PostgreSqlParser.js"; -import { Func_args_with_defaults_listContext } from "./PostgreSqlParser.js"; import { Func_argContext } from "./PostgreSqlParser.js"; import { Arg_classContext } from "./PostgreSqlParser.js"; -import { Param_nameContext } from "./PostgreSqlParser.js"; -import { Func_returnContext } from "./PostgreSqlParser.js"; import { Func_typeContext } from "./PostgreSqlParser.js"; import { Func_arg_with_defaultContext } from "./PostgreSqlParser.js"; -import { Aggr_argContext } from "./PostgreSqlParser.js"; import { Aggr_argsContext } from "./PostgreSqlParser.js"; -import { Aggr_args_listContext } from "./PostgreSqlParser.js"; import { Aggregate_with_argtypesContext } from "./PostgreSqlParser.js"; -import { Aggregate_with_argtypes_listContext } from "./PostgreSqlParser.js"; -import { Createfunc_opt_listContext } from "./PostgreSqlParser.js"; import { Common_func_opt_itemContext } from "./PostgreSqlParser.js"; import { Createfunc_opt_itemContext } from "./PostgreSqlParser.js"; -import { Transform_type_listContext } from "./PostgreSqlParser.js"; import { Opt_definitionContext } from "./PostgreSqlParser.js"; import { Table_func_columnContext } from "./PostgreSqlParser.js"; -import { Table_func_column_listContext } from "./PostgreSqlParser.js"; import { AlterfunctionstmtContext } from "./PostgreSqlParser.js"; -import { AlterFunctionTypeClauseContext } from "./PostgreSqlParser.js"; -import { Alterfunc_opt_listContext } from "./PostgreSqlParser.js"; -import { Opt_restrictContext } from "./PostgreSqlParser.js"; import { RemovefuncstmtContext } from "./PostgreSqlParser.js"; import { RemoveaggrstmtContext } from "./PostgreSqlParser.js"; import { RemoveoperstmtContext } from "./PostgreSqlParser.js"; import { Oper_argtypesContext } from "./PostgreSqlParser.js"; import { Any_operatorContext } from "./PostgreSqlParser.js"; -import { Operator_with_argtypes_listContext } from "./PostgreSqlParser.js"; import { Operator_with_argtypesContext } from "./PostgreSqlParser.js"; import { DostmtContext } from "./PostgreSqlParser.js"; -import { Dostmt_opt_listContext } from "./PostgreSqlParser.js"; -import { Dostmt_opt_itemContext } from "./PostgreSqlParser.js"; import { CreatecaststmtContext } from "./PostgreSqlParser.js"; -import { Cast_contextContext } from "./PostgreSqlParser.js"; import { Opt_if_existsContext } from "./PostgreSqlParser.js"; import { CreatetransformstmtContext } from "./PostgreSqlParser.js"; -import { Transform_element_listContext } from "./PostgreSqlParser.js"; +import { Sql_with_functionContext } from "./PostgreSqlParser.js"; import { ReindexstmtContext } from "./PostgreSqlParser.js"; -import { Reindex_target_typeContext } from "./PostgreSqlParser.js"; -import { Reindex_target_multitableContext } from "./PostgreSqlParser.js"; -import { Reindex_option_listContext } from "./PostgreSqlParser.js"; -import { Reindex_option_elemContext } from "./PostgreSqlParser.js"; import { AltertblspcstmtContext } from "./PostgreSqlParser.js"; import { RenamestmtContext } from "./PostgreSqlParser.js"; -import { Opt_set_dataContext } from "./PostgreSqlParser.js"; import { AlterobjectdependsstmtContext } from "./PostgreSqlParser.js"; -import { Opt_noContext } from "./PostgreSqlParser.js"; import { AlterobjectschemastmtContext } from "./PostgreSqlParser.js"; import { AlteroperatorstmtContext } from "./PostgreSqlParser.js"; import { Operator_def_listContext } from "./PostgreSqlParser.js"; import { Operator_def_elemContext } from "./PostgreSqlParser.js"; -import { Operator_def_argContext } from "./PostgreSqlParser.js"; import { AltertypestmtContext } from "./PostgreSqlParser.js"; import { AlterownerstmtContext } from "./PostgreSqlParser.js"; import { CreatepublicationstmtContext } from "./PostgreSqlParser.js"; -import { Opt_publication_for_tablesContext } from "./PostgreSqlParser.js"; -import { Publication_for_tablesContext } from "./PostgreSqlParser.js"; import { AlterpublicationstmtContext } from "./PostgreSqlParser.js"; import { CreatesubscriptionstmtContext } from "./PostgreSqlParser.js"; -import { Publication_name_listContext } from "./PostgreSqlParser.js"; -import { Publication_name_itemContext } from "./PostgreSqlParser.js"; import { AltersubscriptionstmtContext } from "./PostgreSqlParser.js"; import { RulestmtContext } from "./PostgreSqlParser.js"; -import { RuleactionlistContext } from "./PostgreSqlParser.js"; -import { RuleactionmultiContext } from "./PostgreSqlParser.js"; import { RuleactionstmtContext } from "./PostgreSqlParser.js"; -import { RuleactionstmtOrEmptyContext } from "./PostgreSqlParser.js"; -import { EventContext } from "./PostgreSqlParser.js"; -import { Opt_insteadContext } from "./PostgreSqlParser.js"; import { NotifystmtContext } from "./PostgreSqlParser.js"; import { Notify_payloadContext } from "./PostgreSqlParser.js"; import { ListenstmtContext } from "./PostgreSqlParser.js"; @@ -426,58 +247,31 @@ import { TransactionstmtContext } from "./PostgreSqlParser.js"; import { Opt_transactionContext } from "./PostgreSqlParser.js"; import { Transaction_mode_itemContext } from "./PostgreSqlParser.js"; import { Transaction_mode_listContext } from "./PostgreSqlParser.js"; -import { Transaction_mode_list_or_emptyContext } from "./PostgreSqlParser.js"; -import { Opt_transaction_chainContext } from "./PostgreSqlParser.js"; import { CreateViewContext } from "./PostgreSqlParser.js"; -import { Opt_check_optionContext } from "./PostgreSqlParser.js"; import { LoadstmtContext } from "./PostgreSqlParser.js"; import { CreateDatabaseContext } from "./PostgreSqlParser.js"; -import { Createdb_opt_listContext } from "./PostgreSqlParser.js"; -import { Createdb_opt_itemsContext } from "./PostgreSqlParser.js"; import { Createdb_opt_itemContext } from "./PostgreSqlParser.js"; -import { Createdb_opt_nameContext } from "./PostgreSqlParser.js"; -import { Opt_equalContext } from "./PostgreSqlParser.js"; import { AlterdatabasestmtContext } from "./PostgreSqlParser.js"; import { AlterdatabasesetstmtContext } from "./PostgreSqlParser.js"; -import { Drop_option_listContext } from "./PostgreSqlParser.js"; -import { Drop_optionContext } from "./PostgreSqlParser.js"; import { AltercollationstmtContext } from "./PostgreSqlParser.js"; import { AltersystemstmtContext } from "./PostgreSqlParser.js"; import { CreatedomainstmtContext } from "./PostgreSqlParser.js"; import { AlterdomainstmtContext } from "./PostgreSqlParser.js"; -import { Opt_asContext } from "./PostgreSqlParser.js"; import { AltertsdictionarystmtContext } from "./PostgreSqlParser.js"; import { AltertsconfigurationstmtContext } from "./PostgreSqlParser.js"; -import { Any_withContext } from "./PostgreSqlParser.js"; import { CreateconversionstmtContext } from "./PostgreSqlParser.js"; import { ClusterstmtContext } from "./PostgreSqlParser.js"; -import { Opt_verbose_listContext } from "./PostgreSqlParser.js"; -import { Cluster_index_specificationContext } from "./PostgreSqlParser.js"; import { VacuumstmtContext } from "./PostgreSqlParser.js"; import { AnalyzestmtContext } from "./PostgreSqlParser.js"; -import { Vac_analyze_option_listContext } from "./PostgreSqlParser.js"; import { Analyze_keywordContext } from "./PostgreSqlParser.js"; import { Vac_analyze_option_elemContext } from "./PostgreSqlParser.js"; -import { Vac_analyze_option_nameContext } from "./PostgreSqlParser.js"; -import { Vac_analyze_option_argContext } from "./PostgreSqlParser.js"; -import { Opt_analyzeContext } from "./PostgreSqlParser.js"; -import { Analyze_options_listContext } from "./PostgreSqlParser.js"; import { Analyze_option_elemContext } from "./PostgreSqlParser.js"; import { Opt_verboseContext } from "./PostgreSqlParser.js"; -import { Opt_skiplockContext } from "./PostgreSqlParser.js"; -import { Opt_buffer_usage_limitContext } from "./PostgreSqlParser.js"; -import { Opt_fullContext } from "./PostgreSqlParser.js"; -import { Opt_freezeContext } from "./PostgreSqlParser.js"; -import { Opt_name_listContext } from "./PostgreSqlParser.js"; import { Vacuum_relationContext } from "./PostgreSqlParser.js"; import { Vacuum_relation_listContext } from "./PostgreSqlParser.js"; -import { Opt_vacuum_relation_listContext } from "./PostgreSqlParser.js"; import { ExplainstmtContext } from "./PostgreSqlParser.js"; import { ExplainablestmtContext } from "./PostgreSqlParser.js"; import { Explain_option_listContext } from "./PostgreSqlParser.js"; -import { Explain_option_elemContext } from "./PostgreSqlParser.js"; -import { Explain_option_nameContext } from "./PostgreSqlParser.js"; -import { Explain_option_argContext } from "./PostgreSqlParser.js"; import { PreparestmtContext } from "./PostgreSqlParser.js"; import { Prep_type_clauseContext } from "./PostgreSqlParser.js"; import { PreparablestmtContext } from "./PostgreSqlParser.js"; @@ -485,192 +279,108 @@ import { ExecutestmtContext } from "./PostgreSqlParser.js"; import { Execute_param_clauseContext } from "./PostgreSqlParser.js"; import { DeallocatestmtContext } from "./PostgreSqlParser.js"; import { InsertStatementContext } from "./PostgreSqlParser.js"; -import { Insert_targetContext } from "./PostgreSqlParser.js"; import { Insert_restContext } from "./PostgreSqlParser.js"; -import { Override_kindContext } from "./PostgreSqlParser.js"; import { Insert_column_listContext } from "./PostgreSqlParser.js"; import { Insert_column_itemContext } from "./PostgreSqlParser.js"; -import { Opt_on_conflictContext } from "./PostgreSqlParser.js"; -import { Opt_conf_exprContext } from "./PostgreSqlParser.js"; import { Returning_clauseContext } from "./PostgreSqlParser.js"; import { DeletestmtContext } from "./PostgreSqlParser.js"; -import { Using_clauseContext } from "./PostgreSqlParser.js"; import { LockstmtContext } from "./PostgreSqlParser.js"; -import { Opt_lockContext } from "./PostgreSqlParser.js"; -import { Lock_typeContext } from "./PostgreSqlParser.js"; -import { Opt_nowaitContext } from "./PostgreSqlParser.js"; -import { Opt_nowait_or_skipContext } from "./PostgreSqlParser.js"; import { UpdatestmtContext } from "./PostgreSqlParser.js"; import { Set_clause_listContext } from "./PostgreSqlParser.js"; import { Set_clauseContext } from "./PostgreSqlParser.js"; -import { Set_targetContext } from "./PostgreSqlParser.js"; -import { Set_target_listContext } from "./PostgreSqlParser.js"; import { DeclarecursorstmtContext } from "./PostgreSqlParser.js"; -import { Cursor_nameContext } from "./PostgreSqlParser.js"; -import { Cursor_optionsContext } from "./PostgreSqlParser.js"; -import { Opt_holdContext } from "./PostgreSqlParser.js"; import { SelectStatementContext } from "./PostgreSqlParser.js"; import { Select_with_parensContext } from "./PostgreSqlParser.js"; import { Select_no_parensContext } from "./PostgreSqlParser.js"; import { Select_clauseContext } from "./PostgreSqlParser.js"; import { Simple_selectContext } from "./PostgreSqlParser.js"; -import { UnionContext } from "./PostgreSqlParser.js"; -import { IntersectContext } from "./PostgreSqlParser.js"; -import { ExceptContext } from "./PostgreSqlParser.js"; import { Set_operator_with_all_or_distinctContext } from "./PostgreSqlParser.js"; import { With_clauseContext } from "./PostgreSqlParser.js"; -import { Cte_listContext } from "./PostgreSqlParser.js"; import { Common_table_exprContext } from "./PostgreSqlParser.js"; import { Search_cluaseContext } from "./PostgreSqlParser.js"; import { Cycle_cluaseContext } from "./PostgreSqlParser.js"; -import { Opt_materializedContext } from "./PostgreSqlParser.js"; -import { Opt_with_clauseContext } from "./PostgreSqlParser.js"; import { Into_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_strictContext } from "./PostgreSqlParser.js"; import { OpttempTableNameContext } from "./PostgreSqlParser.js"; -import { Opt_tableContext } from "./PostgreSqlParser.js"; -import { All_or_distinctContext } from "./PostgreSqlParser.js"; import { Distinct_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_all_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_sort_clauseContext } from "./PostgreSqlParser.js"; import { Sort_clauseContext } from "./PostgreSqlParser.js"; -import { Sortby_listContext } from "./PostgreSqlParser.js"; import { SortbyContext } from "./PostgreSqlParser.js"; import { Select_limitContext } from "./PostgreSqlParser.js"; -import { Opt_select_limitContext } from "./PostgreSqlParser.js"; import { Limit_clauseContext } from "./PostgreSqlParser.js"; import { Fetch_clauseContext } from "./PostgreSqlParser.js"; import { Offset_clauseContext } from "./PostgreSqlParser.js"; -import { Select_limit_valueContext } from "./PostgreSqlParser.js"; -import { Select_offset_valueContext } from "./PostgreSqlParser.js"; import { Select_fetch_first_valueContext } from "./PostgreSqlParser.js"; -import { I_or_f_constContext } from "./PostgreSqlParser.js"; -import { Row_or_rowsContext } from "./PostgreSqlParser.js"; -import { First_or_nextContext } from "./PostgreSqlParser.js"; import { Group_clauseContext } from "./PostgreSqlParser.js"; import { Group_by_listContext } from "./PostgreSqlParser.js"; import { Group_by_itemContext } from "./PostgreSqlParser.js"; -import { Empty_grouping_setContext } from "./PostgreSqlParser.js"; -import { Rollup_clauseContext } from "./PostgreSqlParser.js"; -import { Cube_clauseContext } from "./PostgreSqlParser.js"; -import { Grouping_sets_clauseContext } from "./PostgreSqlParser.js"; -import { Having_clauseContext } from "./PostgreSqlParser.js"; import { For_locking_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_for_locking_clauseContext } from "./PostgreSqlParser.js"; -import { For_locking_itemsContext } from "./PostgreSqlParser.js"; -import { For_locking_itemContext } from "./PostgreSqlParser.js"; -import { For_locking_strengthContext } from "./PostgreSqlParser.js"; -import { Locked_rels_listContext } from "./PostgreSqlParser.js"; import { Values_clauseContext } from "./PostgreSqlParser.js"; import { From_clauseContext } from "./PostgreSqlParser.js"; import { From_listContext } from "./PostgreSqlParser.js"; import { Table_refContext } from "./PostgreSqlParser.js"; import { Alias_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_alias_clauseContext } from "./PostgreSqlParser.js"; import { Func_alias_clauseContext } from "./PostgreSqlParser.js"; import { Join_typeContext } from "./PostgreSqlParser.js"; import { Join_qualContext } from "./PostgreSqlParser.js"; import { Relation_exprContext } from "./PostgreSqlParser.js"; -import { View_relation_exprContext } from "./PostgreSqlParser.js"; import { Publication_relation_exprContext } from "./PostgreSqlParser.js"; import { Relation_expr_listContext } from "./PostgreSqlParser.js"; -import { Publication_relation_expr_listContext } from "./PostgreSqlParser.js"; import { Relation_expr_opt_aliasContext } from "./PostgreSqlParser.js"; import { Tablesample_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_repeatable_clauseContext } from "./PostgreSqlParser.js"; import { Func_tableContext } from "./PostgreSqlParser.js"; import { Rowsfrom_itemContext } from "./PostgreSqlParser.js"; -import { Rowsfrom_listContext } from "./PostgreSqlParser.js"; -import { Opt_col_def_listContext } from "./PostgreSqlParser.js"; -import { Opt_ordinalityContext } from "./PostgreSqlParser.js"; import { Where_clauseContext } from "./PostgreSqlParser.js"; import { Where_or_current_clauseContext } from "./PostgreSqlParser.js"; -import { OpttablefuncelementlistContext } from "./PostgreSqlParser.js"; import { TablefuncelementlistContext } from "./PostgreSqlParser.js"; import { TablefuncelementContext } from "./PostgreSqlParser.js"; import { XmltableContext } from "./PostgreSqlParser.js"; -import { Xmltable_column_listContext } from "./PostgreSqlParser.js"; import { Xmltable_column_elContext } from "./PostgreSqlParser.js"; -import { Xmltable_column_option_listContext } from "./PostgreSqlParser.js"; -import { Xmltable_column_option_elContext } from "./PostgreSqlParser.js"; -import { Xml_namespace_listContext } from "./PostgreSqlParser.js"; import { Xml_namespace_elContext } from "./PostgreSqlParser.js"; import { TypenameContext } from "./PostgreSqlParser.js"; -import { Opt_array_boundsContext } from "./PostgreSqlParser.js"; import { SimpletypenameContext } from "./PostgreSqlParser.js"; import { ConsttypenameContext } from "./PostgreSqlParser.js"; -import { GenerictypeContext } from "./PostgreSqlParser.js"; -import { Opt_type_modifiersContext } from "./PostgreSqlParser.js"; import { NumericContext } from "./PostgreSqlParser.js"; import { Opt_floatContext } from "./PostgreSqlParser.js"; import { BitContext } from "./PostgreSqlParser.js"; -import { ConstbitContext } from "./PostgreSqlParser.js"; -import { BitwithlengthContext } from "./PostgreSqlParser.js"; -import { BitwithoutlengthContext } from "./PostgreSqlParser.js"; import { CharacterContext } from "./PostgreSqlParser.js"; -import { ConstcharacterContext } from "./PostgreSqlParser.js"; -import { Character_cContext } from "./PostgreSqlParser.js"; -import { Opt_varyingContext } from "./PostgreSqlParser.js"; import { ConstdatetimeContext } from "./PostgreSqlParser.js"; -import { ConstintervalContext } from "./PostgreSqlParser.js"; -import { Opt_timezoneContext } from "./PostgreSqlParser.js"; import { Opt_intervalContext } from "./PostgreSqlParser.js"; import { Interval_secondContext } from "./PostgreSqlParser.js"; -import { Opt_escapeContext } from "./PostgreSqlParser.js"; -import { A_exprContext } from "./PostgreSqlParser.js"; -import { A_expr_qualContext } from "./PostgreSqlParser.js"; -import { A_expr_lesslessContext } from "./PostgreSqlParser.js"; -import { A_expr_orContext } from "./PostgreSqlParser.js"; -import { A_expr_andContext } from "./PostgreSqlParser.js"; -import { A_expr_inContext } from "./PostgreSqlParser.js"; -import { A_expr_unary_notContext } from "./PostgreSqlParser.js"; -import { A_expr_isnullContext } from "./PostgreSqlParser.js"; -import { A_expr_is_notContext } from "./PostgreSqlParser.js"; -import { A_expr_compareContext } from "./PostgreSqlParser.js"; -import { A_expr_likeContext } from "./PostgreSqlParser.js"; -import { A_expr_qual_opContext } from "./PostgreSqlParser.js"; -import { A_expr_unary_qualopContext } from "./PostgreSqlParser.js"; -import { A_expr_addContext } from "./PostgreSqlParser.js"; -import { A_expr_mulContext } from "./PostgreSqlParser.js"; -import { A_expr_caretContext } from "./PostgreSqlParser.js"; -import { A_expr_unary_signContext } from "./PostgreSqlParser.js"; -import { A_expr_at_time_zoneContext } from "./PostgreSqlParser.js"; -import { A_expr_collateContext } from "./PostgreSqlParser.js"; -import { A_expr_typecastContext } from "./PostgreSqlParser.js"; -import { B_exprContext } from "./PostgreSqlParser.js"; -import { C_expr_existsContext } from "./PostgreSqlParser.js"; -import { C_expr_exprContext } from "./PostgreSqlParser.js"; -import { C_expr_caseContext } from "./PostgreSqlParser.js"; -import { PlsqlvariablenameContext } from "./PostgreSqlParser.js"; +import { ComparisonOperatorContext } from "./PostgreSqlParser.js"; +import { ExpressionContext } from "./PostgreSqlParser.js"; +import { LogicalNotContext } from "./PostgreSqlParser.js"; +import { PredicatedContext } from "./PostgreSqlParser.js"; +import { LogicalBinaryContext } from "./PostgreSqlParser.js"; +import { ComparisonContext } from "./PostgreSqlParser.js"; +import { QuantifiedComparisonContext } from "./PostgreSqlParser.js"; +import { BetweenContext } from "./PostgreSqlParser.js"; +import { InListContext } from "./PostgreSqlParser.js"; +import { InSubqueryContext } from "./PostgreSqlParser.js"; +import { LikeContext } from "./PostgreSqlParser.js"; +import { NullPredicateContext } from "./PostgreSqlParser.js"; +import { DistinctFromContext } from "./PostgreSqlParser.js"; +import { ValueExpressionDefaultContext } from "./PostgreSqlParser.js"; +import { ConcatenationContext } from "./PostgreSqlParser.js"; +import { ArithmeticBinaryContext } from "./PostgreSqlParser.js"; +import { ArithmeticUnaryContext } from "./PostgreSqlParser.js"; +import { AtTimeZoneContext } from "./PostgreSqlParser.js"; +import { PrimaryExpressionContext } from "./PostgreSqlParser.js"; import { Func_applicationContext } from "./PostgreSqlParser.js"; import { Func_exprContext } from "./PostgreSqlParser.js"; import { Func_expr_windowlessContext } from "./PostgreSqlParser.js"; import { Func_expr_common_subexprContext } from "./PostgreSqlParser.js"; -import { Xml_root_versionContext } from "./PostgreSqlParser.js"; -import { Opt_xml_root_standaloneContext } from "./PostgreSqlParser.js"; -import { Xml_attributesContext } from "./PostgreSqlParser.js"; import { Xml_attribute_listContext } from "./PostgreSqlParser.js"; import { Xml_attribute_elContext } from "./PostgreSqlParser.js"; import { Document_or_contentContext } from "./PostgreSqlParser.js"; -import { Xml_whitespace_optionContext } from "./PostgreSqlParser.js"; import { Xmlexists_argumentContext } from "./PostgreSqlParser.js"; import { Xml_passing_mechContext } from "./PostgreSqlParser.js"; -import { Within_group_clauseContext } from "./PostgreSqlParser.js"; -import { Filter_clauseContext } from "./PostgreSqlParser.js"; import { Window_clauseContext } from "./PostgreSqlParser.js"; -import { Window_definition_listContext } from "./PostgreSqlParser.js"; import { Window_definitionContext } from "./PostgreSqlParser.js"; import { Over_clauseContext } from "./PostgreSqlParser.js"; import { Window_specificationContext } from "./PostgreSqlParser.js"; -import { Opt_existing_window_nameContext } from "./PostgreSqlParser.js"; -import { Opt_partition_clauseContext } from "./PostgreSqlParser.js"; import { Opt_frame_clauseContext } from "./PostgreSqlParser.js"; -import { Frame_extentContext } from "./PostgreSqlParser.js"; import { Frame_boundContext } from "./PostgreSqlParser.js"; -import { Opt_window_exclusion_clauseContext } from "./PostgreSqlParser.js"; import { RowContext } from "./PostgreSqlParser.js"; import { Explicit_rowContext } from "./PostgreSqlParser.js"; -import { Implicit_rowContext } from "./PostgreSqlParser.js"; import { Sub_typeContext } from "./PostgreSqlParser.js"; import { All_opContext } from "./PostgreSqlParser.js"; import { MathopContext } from "./PostgreSqlParser.js"; @@ -678,35 +388,18 @@ import { Qual_opContext } from "./PostgreSqlParser.js"; import { Qual_all_opContext } from "./PostgreSqlParser.js"; import { Subquery_OpContext } from "./PostgreSqlParser.js"; import { Expr_listContext } from "./PostgreSqlParser.js"; -import { Column_expr_list_noparenContext } from "./PostgreSqlParser.js"; -import { Column_expr_listContext } from "./PostgreSqlParser.js"; import { Column_exprContext } from "./PostgreSqlParser.js"; import { Column_expr_noparenContext } from "./PostgreSqlParser.js"; import { Func_arg_listContext } from "./PostgreSqlParser.js"; import { Func_arg_exprContext } from "./PostgreSqlParser.js"; -import { Type_listContext } from "./PostgreSqlParser.js"; import { Array_exprContext } from "./PostgreSqlParser.js"; -import { Array_expr_listContext } from "./PostgreSqlParser.js"; -import { Extract_listContext } from "./PostgreSqlParser.js"; import { Extract_argContext } from "./PostgreSqlParser.js"; import { Unicode_normal_formContext } from "./PostgreSqlParser.js"; -import { Overlay_listContext } from "./PostgreSqlParser.js"; -import { Position_listContext } from "./PostgreSqlParser.js"; import { Substr_listContext } from "./PostgreSqlParser.js"; -import { Trim_listContext } from "./PostgreSqlParser.js"; -import { In_expr_selectContext } from "./PostgreSqlParser.js"; -import { In_expr_listContext } from "./PostgreSqlParser.js"; -import { Case_exprContext } from "./PostgreSqlParser.js"; -import { When_clause_listContext } from "./PostgreSqlParser.js"; import { When_clauseContext } from "./PostgreSqlParser.js"; -import { Case_defaultContext } from "./PostgreSqlParser.js"; -import { Case_argContext } from "./PostgreSqlParser.js"; -import { ColumnrefContext } from "./PostgreSqlParser.js"; import { Indirection_elContext } from "./PostgreSqlParser.js"; -import { Opt_slice_boundContext } from "./PostgreSqlParser.js"; import { IndirectionContext } from "./PostgreSqlParser.js"; import { Opt_indirectionContext } from "./PostgreSqlParser.js"; -import { Opt_target_listContext } from "./PostgreSqlParser.js"; import { Target_listContext } from "./PostgreSqlParser.js"; import { Target_labelContext } from "./PostgreSqlParser.js"; import { Target_starContext } from "./PostgreSqlParser.js"; @@ -714,7 +407,6 @@ import { Qualified_name_listContext } from "./PostgreSqlParser.js"; import { Table_name_listContext } from "./PostgreSqlParser.js"; import { Schema_name_listContext } from "./PostgreSqlParser.js"; import { Database_nameListContext } from "./PostgreSqlParser.js"; -import { Procedure_name_listContext } from "./PostgreSqlParser.js"; import { TablespaceNameCreateContext } from "./PostgreSqlParser.js"; import { TablespaceNameContext } from "./PostgreSqlParser.js"; import { TableNameCreateContext } from "./PostgreSqlParser.js"; @@ -734,163 +426,71 @@ import { ProcedureNameCreateContext } from "./PostgreSqlParser.js"; import { ColumnNameContext } from "./PostgreSqlParser.js"; import { ColumnNameMatchContext } from "./PostgreSqlParser.js"; import { ColumnNameCreateContext } from "./PostgreSqlParser.js"; -import { NameContext } from "./PostgreSqlParser.js"; -import { Attr_nameContext } from "./PostgreSqlParser.js"; -import { File_nameContext } from "./PostgreSqlParser.js"; import { FunctionNameCreateContext } from "./PostgreSqlParser.js"; import { FunctionNameContext } from "./PostgreSqlParser.js"; -import { Usual_nameContext } from "./PostgreSqlParser.js"; -import { AexprconstContext } from "./PostgreSqlParser.js"; -import { XconstContext } from "./PostgreSqlParser.js"; -import { BconstContext } from "./PostgreSqlParser.js"; -import { FconstContext } from "./PostgreSqlParser.js"; -import { IconstContext } from "./PostgreSqlParser.js"; import { SconstContext } from "./PostgreSqlParser.js"; import { AnysconstContext } from "./PostgreSqlParser.js"; -import { Opt_uescapeContext } from "./PostgreSqlParser.js"; import { SignediconstContext } from "./PostgreSqlParser.js"; -import { GroupnameContext } from "./PostgreSqlParser.js"; -import { RoleidContext } from "./PostgreSqlParser.js"; import { RolespecContext } from "./PostgreSqlParser.js"; import { Role_listContext } from "./PostgreSqlParser.js"; import { ColidContext } from "./PostgreSqlParser.js"; -import { Index_method_choicesContext } from "./PostgreSqlParser.js"; -import { Exclude_elementContext } from "./PostgreSqlParser.js"; -import { Index_paramentersContext } from "./PostgreSqlParser.js"; import { Type_function_nameContext } from "./PostgreSqlParser.js"; -import { Type_usual_nameContext } from "./PostgreSqlParser.js"; -import { Nonreservedword_columnContext } from "./PostgreSqlParser.js"; import { NonreservedwordContext } from "./PostgreSqlParser.js"; import { CollabelContext } from "./PostgreSqlParser.js"; import { IdentifierContext } from "./PostgreSqlParser.js"; -import { PlsqlidentifierContext } from "./PostgreSqlParser.js"; import { Unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Col_name_keywordContext } from "./PostgreSqlParser.js"; import { Type_func_name_keywordContext } from "./PostgreSqlParser.js"; import { Reserved_keywordContext } from "./PostgreSqlParser.js"; -import { Pl_functionContext } from "./PostgreSqlParser.js"; -import { Comp_optionsContext } from "./PostgreSqlParser.js"; -import { Comp_optionContext } from "./PostgreSqlParser.js"; -import { SharpContext } from "./PostgreSqlParser.js"; -import { Option_valueContext } from "./PostgreSqlParser.js"; -import { Opt_semiContext } from "./PostgreSqlParser.js"; import { Pl_blockContext } from "./PostgreSqlParser.js"; -import { Decl_sectContext } from "./PostgreSqlParser.js"; -import { Decl_startContext } from "./PostgreSqlParser.js"; -import { Decl_stmtsContext } from "./PostgreSqlParser.js"; import { Label_declContext } from "./PostgreSqlParser.js"; -import { Decl_stmtContext } from "./PostgreSqlParser.js"; import { Decl_statementContext } from "./PostgreSqlParser.js"; -import { Opt_scrollableContext } from "./PostgreSqlParser.js"; -import { Decl_cursor_queryContext } from "./PostgreSqlParser.js"; -import { Decl_cursor_argsContext } from "./PostgreSqlParser.js"; -import { Decl_cursor_arglistContext } from "./PostgreSqlParser.js"; import { Decl_cursor_argContext } from "./PostgreSqlParser.js"; -import { Decl_is_forContext } from "./PostgreSqlParser.js"; -import { Decl_aliasitemContext } from "./PostgreSqlParser.js"; -import { Decl_varnameContext } from "./PostgreSqlParser.js"; -import { Decl_constContext } from "./PostgreSqlParser.js"; -import { Decl_datatypeContext } from "./PostgreSqlParser.js"; -import { Decl_collateContext } from "./PostgreSqlParser.js"; -import { Decl_notnullContext } from "./PostgreSqlParser.js"; -import { Decl_defvalContext } from "./PostgreSqlParser.js"; -import { Decl_defkeyContext } from "./PostgreSqlParser.js"; import { Assign_operatorContext } from "./PostgreSqlParser.js"; -import { Proc_sectContext } from "./PostgreSqlParser.js"; import { Proc_stmtContext } from "./PostgreSqlParser.js"; import { Stmt_performContext } from "./PostgreSqlParser.js"; import { Stmt_callContext } from "./PostgreSqlParser.js"; -import { Opt_expr_listContext } from "./PostgreSqlParser.js"; import { Stmt_assignContext } from "./PostgreSqlParser.js"; import { Stmt_getdiagContext } from "./PostgreSqlParser.js"; -import { Getdiag_area_optContext } from "./PostgreSqlParser.js"; -import { Getdiag_listContext } from "./PostgreSqlParser.js"; import { Getdiag_list_itemContext } from "./PostgreSqlParser.js"; -import { Getdiag_itemContext } from "./PostgreSqlParser.js"; -import { Getdiag_targetContext } from "./PostgreSqlParser.js"; import { Assign_varContext } from "./PostgreSqlParser.js"; import { Stmt_ifContext } from "./PostgreSqlParser.js"; -import { Stmt_elsifsContext } from "./PostgreSqlParser.js"; import { Stmt_elseContext } from "./PostgreSqlParser.js"; import { Stmt_caseContext } from "./PostgreSqlParser.js"; -import { Opt_expr_until_whenContext } from "./PostgreSqlParser.js"; -import { Case_when_listContext } from "./PostgreSqlParser.js"; -import { Case_whenContext } from "./PostgreSqlParser.js"; -import { Opt_case_elseContext } from "./PostgreSqlParser.js"; -import { Stmt_loopContext } from "./PostgreSqlParser.js"; -import { Stmt_whileContext } from "./PostgreSqlParser.js"; -import { Stmt_forContext } from "./PostgreSqlParser.js"; +import { Stmt_loop_while_forContext } from "./PostgreSqlParser.js"; import { For_controlContext } from "./PostgreSqlParser.js"; -import { Opt_for_using_expressionContext } from "./PostgreSqlParser.js"; -import { Opt_cursor_parametersContext } from "./PostgreSqlParser.js"; -import { Opt_reverseContext } from "./PostgreSqlParser.js"; -import { Opt_by_expressionContext } from "./PostgreSqlParser.js"; -import { For_variableContext } from "./PostgreSqlParser.js"; import { Stmt_foreach_aContext } from "./PostgreSqlParser.js"; -import { Foreach_sliceContext } from "./PostgreSqlParser.js"; import { Stmt_exitContext } from "./PostgreSqlParser.js"; -import { Exit_typeContext } from "./PostgreSqlParser.js"; import { Stmt_returnContext } from "./PostgreSqlParser.js"; -import { Opt_return_resultContext } from "./PostgreSqlParser.js"; import { Stmt_raiseContext } from "./PostgreSqlParser.js"; -import { Opt_stmt_raise_levelContext } from "./PostgreSqlParser.js"; -import { Opt_raise_listContext } from "./PostgreSqlParser.js"; -import { Opt_raise_usingContext } from "./PostgreSqlParser.js"; import { Opt_raise_using_elemContext } from "./PostgreSqlParser.js"; -import { Opt_raise_using_elem_listContext } from "./PostgreSqlParser.js"; import { Stmt_assertContext } from "./PostgreSqlParser.js"; -import { Opt_stmt_assert_messageContext } from "./PostgreSqlParser.js"; import { Loop_bodyContext } from "./PostgreSqlParser.js"; import { Stmt_execsqlContext } from "./PostgreSqlParser.js"; import { Stmt_dynexecuteContext } from "./PostgreSqlParser.js"; -import { Opt_execute_usingContext } from "./PostgreSqlParser.js"; -import { Opt_execute_using_listContext } from "./PostgreSqlParser.js"; import { Opt_execute_intoContext } from "./PostgreSqlParser.js"; import { Stmt_openContext } from "./PostgreSqlParser.js"; import { Opt_open_bound_list_itemContext } from "./PostgreSqlParser.js"; -import { Opt_open_bound_listContext } from "./PostgreSqlParser.js"; -import { Opt_open_usingContext } from "./PostgreSqlParser.js"; -import { Opt_scroll_optionContext } from "./PostgreSqlParser.js"; -import { Opt_scroll_option_noContext } from "./PostgreSqlParser.js"; import { Stmt_fetchContext } from "./PostgreSqlParser.js"; -import { Into_targetContext } from "./PostgreSqlParser.js"; -import { Opt_cursor_fromContext } from "./PostgreSqlParser.js"; import { Opt_fetch_directionContext } from "./PostgreSqlParser.js"; import { Stmt_moveContext } from "./PostgreSqlParser.js"; import { MergestmtContext } from "./PostgreSqlParser.js"; import { Data_sourceContext } from "./PostgreSqlParser.js"; -import { Join_conditionContext } from "./PostgreSqlParser.js"; import { Merge_when_clauseContext } from "./PostgreSqlParser.js"; import { Merge_insertContext } from "./PostgreSqlParser.js"; import { Merge_updateContext } from "./PostgreSqlParser.js"; import { Default_values_or_valuesContext } from "./PostgreSqlParser.js"; -import { ExprofdefaultlistContext } from "./PostgreSqlParser.js"; import { ExprofdefaultContext } from "./PostgreSqlParser.js"; import { Stmt_closeContext } from "./PostgreSqlParser.js"; import { Stmt_nullContext } from "./PostgreSqlParser.js"; -import { Stmt_commitContext } from "./PostgreSqlParser.js"; -import { Stmt_rollbackContext } from "./PostgreSqlParser.js"; -import { Plsql_opt_transaction_chainContext } from "./PostgreSqlParser.js"; +import { Stmt_commit_or_rollbackContext } from "./PostgreSqlParser.js"; import { Stmt_setContext } from "./PostgreSqlParser.js"; import { Cursor_variableContext } from "./PostgreSqlParser.js"; import { Exception_sectContext } from "./PostgreSqlParser.js"; -import { Proc_exceptionsContext } from "./PostgreSqlParser.js"; -import { Proc_exceptionContext } from "./PostgreSqlParser.js"; -import { Proc_conditionsContext } from "./PostgreSqlParser.js"; import { Proc_conditionContext } from "./PostgreSqlParser.js"; -import { Opt_block_labelContext } from "./PostgreSqlParser.js"; -import { Opt_loop_labelContext } from "./PostgreSqlParser.js"; -import { Opt_labelContext } from "./PostgreSqlParser.js"; -import { Opt_exitcondContext } from "./PostgreSqlParser.js"; import { Any_identifierContext } from "./PostgreSqlParser.js"; import { Plsql_unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Sql_expressionContext } from "./PostgreSqlParser.js"; -import { Expr_until_thenContext } from "./PostgreSqlParser.js"; -import { Expr_until_semiContext } from "./PostgreSqlParser.js"; -import { Expr_until_rightbracketContext } from "./PostgreSqlParser.js"; -import { Expr_until_loopContext } from "./PostgreSqlParser.js"; -import { Make_execsql_stmtContext } from "./PostgreSqlParser.js"; -import { Opt_returning_clause_intoContext } from "./PostgreSqlParser.js"; /** @@ -908,16 +508,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitProgram?: (ctx: ProgramContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.plsqlroot`. - * @param ctx the parse tree - */ - enterPlsqlroot?: (ctx: PlsqlrootContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.plsqlroot`. - * @param ctx the parse tree - */ - exitPlsqlroot?: (ctx: PlsqlrootContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.singleStmt`. * @param ctx the parse tree @@ -938,16 +528,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt?: (ctx: StmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.plsqlconsolecommand`. - * @param ctx the parse tree - */ - enterPlsqlconsolecommand?: (ctx: PlsqlconsolecommandContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.plsqlconsolecommand`. - * @param ctx the parse tree - */ - exitPlsqlconsolecommand?: (ctx: PlsqlconsolecommandContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.callstmt`. * @param ctx the parse tree @@ -968,36 +548,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreaterolestmt?: (ctx: CreaterolestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_with`. - * @param ctx the parse tree - */ - enterOpt_with?: (ctx: Opt_withContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_with`. - * @param ctx the parse tree - */ - exitOpt_with?: (ctx: Opt_withContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optrolelist`. - * @param ctx the parse tree - */ - enterOptrolelist?: (ctx: OptrolelistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optrolelist`. - * @param ctx the parse tree - */ - exitOptrolelist?: (ctx: OptrolelistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alteroptrolelist`. - * @param ctx the parse tree - */ - enterAlteroptrolelist?: (ctx: AlteroptrolelistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alteroptrolelist`. - * @param ctx the parse tree - */ - exitAlteroptrolelist?: (ctx: AlteroptrolelistContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.alteroptroleelem`. * @param ctx the parse tree @@ -1038,16 +588,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAlterrolestmt?: (ctx: AlterrolestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_in_database`. - * @param ctx the parse tree - */ - enterOpt_in_database?: (ctx: Opt_in_databaseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_in_database`. - * @param ctx the parse tree - */ - exitOpt_in_database?: (ctx: Opt_in_databaseContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.alterrolesetstmt`. * @param ctx the parse tree @@ -1078,16 +618,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAlter_routine_cluase?: (ctx: Alter_routine_cluaseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.routine_action_list`. - * @param ctx the parse tree - */ - enterRoutine_action_list?: (ctx: Routine_action_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.routine_action_list`. - * @param ctx the parse tree - */ - exitRoutine_action_list?: (ctx: Routine_action_listContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.routine_action`. * @param ctx the parse tree @@ -1118,16 +648,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAltergroupstmt?: (ctx: AltergroupstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.add_drop`. - * @param ctx the parse tree - */ - enterAdd_drop?: (ctx: Add_dropContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.add_drop`. - * @param ctx the parse tree - */ - exitAdd_drop?: (ctx: Add_dropContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.createschemastmt`. * @param ctx the parse tree @@ -1150,16 +670,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optschemaeltlist`. - * @param ctx the parse tree - */ - enterOptschemaeltlist?: (ctx: OptschemaeltlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optschemaeltlist`. - * @param ctx the parse tree - */ - exitOptschemaeltlist?: (ctx: OptschemaeltlistContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.schema_stmt`. * @param ctx the parse tree @@ -1280,26 +790,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitZone_value?: (ctx: Zone_valueContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_encoding`. - * @param ctx the parse tree - */ - enterOpt_encoding?: (ctx: Opt_encodingContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_encoding`. - * @param ctx the parse tree - */ - exitOpt_encoding?: (ctx: Opt_encodingContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.nonreservedword_or_sconst_column`. - * @param ctx the parse tree - */ - enterNonreservedword_or_sconst_column?: (ctx: Nonreservedword_or_sconst_columnContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.nonreservedword_or_sconst_column`. - * @param ctx the parse tree - */ - exitNonreservedword_or_sconst_column?: (ctx: Nonreservedword_or_sconst_columnContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.nonreservedword_or_sconst`. * @param ctx the parse tree @@ -1330,16 +820,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitReset_rest?: (ctx: Reset_restContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.generic_reset`. - * @param ctx the parse tree - */ - enterGeneric_reset?: (ctx: Generic_resetContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.generic_reset`. - * @param ctx the parse tree - */ - exitGeneric_reset?: (ctx: Generic_resetContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.setresetclause`. * @param ctx the parse tree @@ -1380,26 +860,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitConstraintssetstmt?: (ctx: ConstraintssetstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.constraints_set_list`. - * @param ctx the parse tree - */ - enterConstraints_set_list?: (ctx: Constraints_set_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.constraints_set_list`. - * @param ctx the parse tree - */ - exitConstraints_set_list?: (ctx: Constraints_set_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.constraints_set_mode`. - * @param ctx the parse tree - */ - enterConstraints_set_mode?: (ctx: Constraints_set_modeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.constraints_set_mode`. - * @param ctx the parse tree - */ - exitConstraints_set_mode?: (ctx: Constraints_set_modeContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.checkpointstmt`. * @param ctx the parse tree @@ -1540,26 +1000,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitOpt_collate_clause?: (ctx: Opt_collate_clauseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_using`. - * @param ctx the parse tree - */ - enterAlter_using?: (ctx: Alter_usingContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_using`. - * @param ctx the parse tree - */ - exitAlter_using?: (ctx: Alter_usingContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.replica_identity`. - * @param ctx the parse tree - */ - enterReplica_identity?: (ctx: Replica_identityContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.replica_identity`. - * @param ctx the parse tree - */ - exitReplica_identity?: (ctx: Replica_identityContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.reloptions`. * @param ctx the parse tree @@ -1580,16 +1020,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitOpt_reloptions?: (ctx: Opt_reloptionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reloption_list`. - * @param ctx the parse tree - */ - enterReloption_list?: (ctx: Reloption_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reloption_list`. - * @param ctx the parse tree - */ - exitReloption_list?: (ctx: Reloption_listContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.reloption_elem`. * @param ctx the parse tree @@ -1600,26 +1030,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitReloption_elem?: (ctx: Reloption_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_identity_column_option_list`. - * @param ctx the parse tree - */ - enterAlter_identity_column_option_list?: (ctx: Alter_identity_column_option_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_identity_column_option_list`. - * @param ctx the parse tree - */ - exitAlter_identity_column_option_list?: (ctx: Alter_identity_column_option_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_identity_column_option`. - * @param ctx the parse tree - */ - enterAlter_identity_column_option?: (ctx: Alter_identity_column_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_identity_column_option`. - * @param ctx the parse tree - */ - exitAlter_identity_column_option?: (ctx: Alter_identity_column_optionContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.partitionboundspec`. * @param ctx the parse tree @@ -1630,26 +1040,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPartitionboundspec?: (ctx: PartitionboundspecContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.hash_partbound_elem`. - * @param ctx the parse tree - */ - enterHash_partbound_elem?: (ctx: Hash_partbound_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.hash_partbound_elem`. - * @param ctx the parse tree - */ - exitHash_partbound_elem?: (ctx: Hash_partbound_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.hash_partbound`. - * @param ctx the parse tree - */ - enterHash_partbound?: (ctx: Hash_partboundContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.hash_partbound`. - * @param ctx the parse tree - */ - exitHash_partbound?: (ctx: Hash_partboundContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.altercompositetypestmt`. * @param ctx the parse tree @@ -1660,16 +1050,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAltercompositetypestmt?: (ctx: AltercompositetypestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_type_cmds`. - * @param ctx the parse tree - */ - enterAlter_type_cmds?: (ctx: Alter_type_cmdsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_type_cmds`. - * @param ctx the parse tree - */ - exitAlter_type_cmds?: (ctx: Alter_type_cmdsContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.alter_type_cmd`. * @param ctx the parse tree @@ -1701,522 +1081,232 @@ export class PostgreSqlParserListener implements ParseTreeListener { */ exitCopystmt?: (ctx: CopystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_from`. + * Enter a parse tree produced by `PostgreSqlParser.copy_options`. * @param ctx the parse tree */ - enterCopy_from?: (ctx: Copy_fromContext) => void; + enterCopy_options?: (ctx: Copy_optionsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_from`. + * Exit a parse tree produced by `PostgreSqlParser.copy_options`. * @param ctx the parse tree */ - exitCopy_from?: (ctx: Copy_fromContext) => void; + exitCopy_options?: (ctx: Copy_optionsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_program`. + * Enter a parse tree produced by `PostgreSqlParser.copy_generic_opt_elem`. * @param ctx the parse tree */ - enterOpt_program?: (ctx: Opt_programContext) => void; + enterCopy_generic_opt_elem?: (ctx: Copy_generic_opt_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_program`. + * Exit a parse tree produced by `PostgreSqlParser.copy_generic_opt_elem`. * @param ctx the parse tree */ - exitOpt_program?: (ctx: Opt_programContext) => void; + exitCopy_generic_opt_elem?: (ctx: Copy_generic_opt_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_file_name`. + * Enter a parse tree produced by the `columnCreateTable` + * labeled alternative in `PostgreSqlParser.createstmt`. * @param ctx the parse tree */ - enterCopy_file_name?: (ctx: Copy_file_nameContext) => void; + enterColumnCreateTable?: (ctx: ColumnCreateTableContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_file_name`. + * Exit a parse tree produced by the `columnCreateTable` + * labeled alternative in `PostgreSqlParser.createstmt`. * @param ctx the parse tree */ - exitCopy_file_name?: (ctx: Copy_file_nameContext) => void; + exitColumnCreateTable?: (ctx: ColumnCreateTableContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_options`. + * Enter a parse tree produced by `PostgreSqlParser.opttemp`. * @param ctx the parse tree */ - enterCopy_options?: (ctx: Copy_optionsContext) => void; + enterOpttemp?: (ctx: OpttempContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_options`. + * Exit a parse tree produced by `PostgreSqlParser.opttemp`. * @param ctx the parse tree */ - exitCopy_options?: (ctx: Copy_optionsContext) => void; + exitOpttemp?: (ctx: OpttempContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_opt_list`. + * Enter a parse tree produced by `PostgreSqlParser.opttypedtableelementlist`. * @param ctx the parse tree */ - enterCopy_opt_list?: (ctx: Copy_opt_listContext) => void; + enterOpttypedtableelementlist?: (ctx: OpttypedtableelementlistContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_opt_list`. + * Exit a parse tree produced by `PostgreSqlParser.opttypedtableelementlist`. * @param ctx the parse tree */ - exitCopy_opt_list?: (ctx: Copy_opt_listContext) => void; + exitOpttypedtableelementlist?: (ctx: OpttypedtableelementlistContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_opt_item`. + * Enter a parse tree produced by `PostgreSqlParser.tableelementlist`. * @param ctx the parse tree */ - enterCopy_opt_item?: (ctx: Copy_opt_itemContext) => void; + enterTableelementlist?: (ctx: TableelementlistContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_opt_item`. + * Exit a parse tree produced by `PostgreSqlParser.tableelementlist`. * @param ctx the parse tree */ - exitCopy_opt_item?: (ctx: Copy_opt_itemContext) => void; + exitTableelementlist?: (ctx: TableelementlistContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_binary`. + * Enter a parse tree produced by `PostgreSqlParser.tableelement`. * @param ctx the parse tree */ - enterOpt_binary?: (ctx: Opt_binaryContext) => void; + enterTableelement?: (ctx: TableelementContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_binary`. + * Exit a parse tree produced by `PostgreSqlParser.tableelement`. * @param ctx the parse tree */ - exitOpt_binary?: (ctx: Opt_binaryContext) => void; + exitTableelement?: (ctx: TableelementContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_delimiter`. + * Enter a parse tree produced by `PostgreSqlParser.typedtableelement`. * @param ctx the parse tree */ - enterCopy_delimiter?: (ctx: Copy_delimiterContext) => void; + enterTypedtableelement?: (ctx: TypedtableelementContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_delimiter`. + * Exit a parse tree produced by `PostgreSqlParser.typedtableelement`. * @param ctx the parse tree */ - exitCopy_delimiter?: (ctx: Copy_delimiterContext) => void; + exitTypedtableelement?: (ctx: TypedtableelementContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_using`. + * Enter a parse tree produced by `PostgreSqlParser.column_def`. * @param ctx the parse tree */ - enterOpt_using?: (ctx: Opt_usingContext) => void; + enterColumn_def?: (ctx: Column_defContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_using`. + * Exit a parse tree produced by `PostgreSqlParser.column_def`. * @param ctx the parse tree */ - exitOpt_using?: (ctx: Opt_usingContext) => void; + exitColumn_def?: (ctx: Column_defContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_generic_opt_list`. + * Enter a parse tree produced by `PostgreSqlParser.colconstraint`. * @param ctx the parse tree */ - enterCopy_generic_opt_list?: (ctx: Copy_generic_opt_listContext) => void; + enterColconstraint?: (ctx: ColconstraintContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_generic_opt_list`. + * Exit a parse tree produced by `PostgreSqlParser.colconstraint`. * @param ctx the parse tree */ - exitCopy_generic_opt_list?: (ctx: Copy_generic_opt_listContext) => void; + exitColconstraint?: (ctx: ColconstraintContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_generic_opt_elem`. + * Enter a parse tree produced by `PostgreSqlParser.colconstraintelem`. * @param ctx the parse tree */ - enterCopy_generic_opt_elem?: (ctx: Copy_generic_opt_elemContext) => void; + enterColconstraintelem?: (ctx: ColconstraintelemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_generic_opt_elem`. + * Exit a parse tree produced by `PostgreSqlParser.colconstraintelem`. * @param ctx the parse tree */ - exitCopy_generic_opt_elem?: (ctx: Copy_generic_opt_elemContext) => void; + exitColconstraintelem?: (ctx: ColconstraintelemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg`. + * Enter a parse tree produced by `PostgreSqlParser.generated_when`. * @param ctx the parse tree */ - enterCopy_generic_opt_arg?: (ctx: Copy_generic_opt_argContext) => void; + enterGenerated_when?: (ctx: Generated_whenContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg`. + * Exit a parse tree produced by `PostgreSqlParser.generated_when`. * @param ctx the parse tree */ - exitCopy_generic_opt_arg?: (ctx: Copy_generic_opt_argContext) => void; + exitGenerated_when?: (ctx: Generated_whenContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg_list`. + * Enter a parse tree produced by `PostgreSqlParser.tablelikeoption`. * @param ctx the parse tree */ - enterCopy_generic_opt_arg_list?: (ctx: Copy_generic_opt_arg_listContext) => void; + enterTablelikeoption?: (ctx: TablelikeoptionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg_list`. + * Exit a parse tree produced by `PostgreSqlParser.tablelikeoption`. * @param ctx the parse tree */ - exitCopy_generic_opt_arg_list?: (ctx: Copy_generic_opt_arg_listContext) => void; + exitTablelikeoption?: (ctx: TablelikeoptionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg_list_item`. + * Enter a parse tree produced by `PostgreSqlParser.constraintelem`. * @param ctx the parse tree */ - enterCopy_generic_opt_arg_list_item?: (ctx: Copy_generic_opt_arg_list_itemContext) => void; + enterConstraintelem?: (ctx: ConstraintelemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg_list_item`. + * Exit a parse tree produced by `PostgreSqlParser.constraintelem`. * @param ctx the parse tree */ - exitCopy_generic_opt_arg_list_item?: (ctx: Copy_generic_opt_arg_list_itemContext) => void; + exitConstraintelem?: (ctx: ConstraintelemContext) => void; /** - * Enter a parse tree produced by the `columnCreateTable` - * labeled alternative in `PostgreSqlParser.createstmt`. + * Enter a parse tree produced by `PostgreSqlParser.opt_column_list`. * @param ctx the parse tree */ - enterColumnCreateTable?: (ctx: ColumnCreateTableContext) => void; + enterOpt_column_list?: (ctx: Opt_column_listContext) => void; /** - * Exit a parse tree produced by the `columnCreateTable` - * labeled alternative in `PostgreSqlParser.createstmt`. + * Exit a parse tree produced by `PostgreSqlParser.opt_column_list`. * @param ctx the parse tree */ - exitColumnCreateTable?: (ctx: ColumnCreateTableContext) => void; + exitOpt_column_list?: (ctx: Opt_column_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opttemp`. + * Enter a parse tree produced by `PostgreSqlParser.opt_column_list_create`. * @param ctx the parse tree */ - enterOpttemp?: (ctx: OpttempContext) => void; + enterOpt_column_list_create?: (ctx: Opt_column_list_createContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opttemp`. + * Exit a parse tree produced by `PostgreSqlParser.opt_column_list_create`. * @param ctx the parse tree */ - exitOpttemp?: (ctx: OpttempContext) => void; + exitOpt_column_list_create?: (ctx: Opt_column_list_createContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.table_column_list`. + * Enter a parse tree produced by `PostgreSqlParser.column_list`. * @param ctx the parse tree */ - enterTable_column_list?: (ctx: Table_column_listContext) => void; + enterColumn_list?: (ctx: Column_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.table_column_list`. + * Exit a parse tree produced by `PostgreSqlParser.column_list`. * @param ctx the parse tree */ - exitTable_column_list?: (ctx: Table_column_listContext) => void; + exitColumn_list?: (ctx: Column_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opttableelementlist`. + * Enter a parse tree produced by `PostgreSqlParser.opt_c_include`. * @param ctx the parse tree */ - enterOpttableelementlist?: (ctx: OpttableelementlistContext) => void; + enterOpt_c_include?: (ctx: Opt_c_includeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opttableelementlist`. + * Exit a parse tree produced by `PostgreSqlParser.opt_c_include`. * @param ctx the parse tree */ - exitOpttableelementlist?: (ctx: OpttableelementlistContext) => void; + exitOpt_c_include?: (ctx: Opt_c_includeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opttypedtableelementlist`. + * Enter a parse tree produced by `PostgreSqlParser.key_match`. * @param ctx the parse tree */ - enterOpttypedtableelementlist?: (ctx: OpttypedtableelementlistContext) => void; + enterKey_match?: (ctx: Key_matchContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opttypedtableelementlist`. + * Exit a parse tree produced by `PostgreSqlParser.key_match`. * @param ctx the parse tree */ - exitOpttypedtableelementlist?: (ctx: OpttypedtableelementlistContext) => void; + exitKey_match?: (ctx: Key_matchContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.tableelementlist`. + * Enter a parse tree produced by `PostgreSqlParser.exclusionconstraintelem`. * @param ctx the parse tree */ - enterTableelementlist?: (ctx: TableelementlistContext) => void; + enterExclusionconstraintelem?: (ctx: ExclusionconstraintelemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.tableelementlist`. + * Exit a parse tree produced by `PostgreSqlParser.exclusionconstraintelem`. * @param ctx the parse tree */ - exitTableelementlist?: (ctx: TableelementlistContext) => void; + exitExclusionconstraintelem?: (ctx: ExclusionconstraintelemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.typedtableelementlist`. + * Enter a parse tree produced by `PostgreSqlParser.key_actions`. * @param ctx the parse tree */ - enterTypedtableelementlist?: (ctx: TypedtableelementlistContext) => void; + enterKey_actions?: (ctx: Key_actionsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.typedtableelementlist`. + * Exit a parse tree produced by `PostgreSqlParser.key_actions`. * @param ctx the parse tree */ - exitTypedtableelementlist?: (ctx: TypedtableelementlistContext) => void; + exitKey_actions?: (ctx: Key_actionsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.tableelement`. + * Enter a parse tree produced by `PostgreSqlParser.key_update`. * @param ctx the parse tree */ - enterTableelement?: (ctx: TableelementContext) => void; + enterKey_update?: (ctx: Key_updateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.tableelement`. + * Exit a parse tree produced by `PostgreSqlParser.key_update`. * @param ctx the parse tree */ - exitTableelement?: (ctx: TableelementContext) => void; + exitKey_update?: (ctx: Key_updateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.typedtableelement`. + * Enter a parse tree produced by `PostgreSqlParser.key_delete`. * @param ctx the parse tree */ - enterTypedtableelement?: (ctx: TypedtableelementContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.typedtableelement`. - * @param ctx the parse tree - */ - exitTypedtableelement?: (ctx: TypedtableelementContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.column_def`. - * @param ctx the parse tree - */ - enterColumn_def?: (ctx: Column_defContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.column_def`. - * @param ctx the parse tree - */ - exitColumn_def?: (ctx: Column_defContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.compressionCluase`. - * @param ctx the parse tree - */ - enterCompressionCluase?: (ctx: CompressionCluaseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.compressionCluase`. - * @param ctx the parse tree - */ - exitCompressionCluase?: (ctx: CompressionCluaseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.storageCluase`. - * @param ctx the parse tree - */ - enterStorageCluase?: (ctx: StorageCluaseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.storageCluase`. - * @param ctx the parse tree - */ - exitStorageCluase?: (ctx: StorageCluaseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.columnOptions`. - * @param ctx the parse tree - */ - enterColumnOptions?: (ctx: ColumnOptionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.columnOptions`. - * @param ctx the parse tree - */ - exitColumnOptions?: (ctx: ColumnOptionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.colquallist`. - * @param ctx the parse tree - */ - enterColquallist?: (ctx: ColquallistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.colquallist`. - * @param ctx the parse tree - */ - exitColquallist?: (ctx: ColquallistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.colconstraint`. - * @param ctx the parse tree - */ - enterColconstraint?: (ctx: ColconstraintContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.colconstraint`. - * @param ctx the parse tree - */ - exitColconstraint?: (ctx: ColconstraintContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.colconstraintelem`. - * @param ctx the parse tree - */ - enterColconstraintelem?: (ctx: ColconstraintelemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.colconstraintelem`. - * @param ctx the parse tree - */ - exitColconstraintelem?: (ctx: ColconstraintelemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.nulls_distinct`. - * @param ctx the parse tree - */ - enterNulls_distinct?: (ctx: Nulls_distinctContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.nulls_distinct`. - * @param ctx the parse tree - */ - exitNulls_distinct?: (ctx: Nulls_distinctContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.generated_when`. - * @param ctx the parse tree - */ - enterGenerated_when?: (ctx: Generated_whenContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.generated_when`. - * @param ctx the parse tree - */ - exitGenerated_when?: (ctx: Generated_whenContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.deferrable_trigger`. - * @param ctx the parse tree - */ - enterDeferrable_trigger?: (ctx: Deferrable_triggerContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.deferrable_trigger`. - * @param ctx the parse tree - */ - exitDeferrable_trigger?: (ctx: Deferrable_triggerContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.initially_trigger`. - * @param ctx the parse tree - */ - enterInitially_trigger?: (ctx: Initially_triggerContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.initially_trigger`. - * @param ctx the parse tree - */ - exitInitially_trigger?: (ctx: Initially_triggerContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.tablelikeclause`. - * @param ctx the parse tree - */ - enterTablelikeclause?: (ctx: TablelikeclauseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.tablelikeclause`. - * @param ctx the parse tree - */ - exitTablelikeclause?: (ctx: TablelikeclauseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.tablelikeoptionlist`. - * @param ctx the parse tree - */ - enterTablelikeoptionlist?: (ctx: TablelikeoptionlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.tablelikeoptionlist`. - * @param ctx the parse tree - */ - exitTablelikeoptionlist?: (ctx: TablelikeoptionlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.tablelikeoption`. - * @param ctx the parse tree - */ - enterTablelikeoption?: (ctx: TablelikeoptionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.tablelikeoption`. - * @param ctx the parse tree - */ - exitTablelikeoption?: (ctx: TablelikeoptionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.tableconstraint`. - * @param ctx the parse tree - */ - enterTableconstraint?: (ctx: TableconstraintContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.tableconstraint`. - * @param ctx the parse tree - */ - exitTableconstraint?: (ctx: TableconstraintContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.constraintelem`. - * @param ctx the parse tree - */ - enterConstraintelem?: (ctx: ConstraintelemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.constraintelem`. - * @param ctx the parse tree - */ - exitConstraintelem?: (ctx: ConstraintelemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_no_inherit`. - * @param ctx the parse tree - */ - enterOpt_no_inherit?: (ctx: Opt_no_inheritContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_no_inherit`. - * @param ctx the parse tree - */ - exitOpt_no_inherit?: (ctx: Opt_no_inheritContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_column_list`. - * @param ctx the parse tree - */ - enterOpt_column_list?: (ctx: Opt_column_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_column_list`. - * @param ctx the parse tree - */ - exitOpt_column_list?: (ctx: Opt_column_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_column_list_create`. - * @param ctx the parse tree - */ - enterOpt_column_list_create?: (ctx: Opt_column_list_createContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_column_list_create`. - * @param ctx the parse tree - */ - exitOpt_column_list_create?: (ctx: Opt_column_list_createContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.column_list`. - * @param ctx the parse tree - */ - enterColumn_list?: (ctx: Column_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.column_list`. - * @param ctx the parse tree - */ - exitColumn_list?: (ctx: Column_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.column_list_create`. - * @param ctx the parse tree - */ - enterColumn_list_create?: (ctx: Column_list_createContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.column_list_create`. - * @param ctx the parse tree - */ - exitColumn_list_create?: (ctx: Column_list_createContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_c_include`. - * @param ctx the parse tree - */ - enterOpt_c_include?: (ctx: Opt_c_includeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_c_include`. - * @param ctx the parse tree - */ - exitOpt_c_include?: (ctx: Opt_c_includeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.key_match`. - * @param ctx the parse tree - */ - enterKey_match?: (ctx: Key_matchContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.key_match`. - * @param ctx the parse tree - */ - exitKey_match?: (ctx: Key_matchContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.exclusionconstraintlist`. - * @param ctx the parse tree - */ - enterExclusionconstraintlist?: (ctx: ExclusionconstraintlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.exclusionconstraintlist`. - * @param ctx the parse tree - */ - exitExclusionconstraintlist?: (ctx: ExclusionconstraintlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.exclusionconstraintelem`. - * @param ctx the parse tree - */ - enterExclusionconstraintelem?: (ctx: ExclusionconstraintelemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.exclusionconstraintelem`. - * @param ctx the parse tree - */ - exitExclusionconstraintelem?: (ctx: ExclusionconstraintelemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.exclusionwhereclause`. - * @param ctx the parse tree - */ - enterExclusionwhereclause?: (ctx: ExclusionwhereclauseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.exclusionwhereclause`. - * @param ctx the parse tree - */ - exitExclusionwhereclause?: (ctx: ExclusionwhereclauseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.key_actions`. - * @param ctx the parse tree - */ - enterKey_actions?: (ctx: Key_actionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.key_actions`. - * @param ctx the parse tree - */ - exitKey_actions?: (ctx: Key_actionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.key_update`. - * @param ctx the parse tree - */ - enterKey_update?: (ctx: Key_updateContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.key_update`. - * @param ctx the parse tree - */ - exitKey_update?: (ctx: Key_updateContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.key_delete`. - * @param ctx the parse tree - */ - enterKey_delete?: (ctx: Key_deleteContext) => void; + enterKey_delete?: (ctx: Key_deleteContext) => void; /** * Exit a parse tree produced by `PostgreSqlParser.key_delete`. * @param ctx the parse tree @@ -2242,16 +1332,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitOptinherit?: (ctx: OptinheritContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optpartitionspec`. - * @param ctx the parse tree - */ - enterOptpartitionspec?: (ctx: OptpartitionspecContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optpartitionspec`. - * @param ctx the parse tree - */ - exitOptpartitionspec?: (ctx: OptpartitionspecContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.partitionspec`. * @param ctx the parse tree @@ -2262,16 +1342,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPartitionspec?: (ctx: PartitionspecContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.part_params`. - * @param ctx the parse tree - */ - enterPart_params?: (ctx: Part_paramsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.part_params`. - * @param ctx the parse tree - */ - exitPart_params?: (ctx: Part_paramsContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.part_elem`. * @param ctx the parse tree @@ -2322,16 +1392,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitOpttablespace?: (ctx: OpttablespaceContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.index_paramenters_create`. - * @param ctx the parse tree - */ - enterIndex_paramenters_create?: (ctx: Index_paramenters_createContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.index_paramenters_create`. - * @param ctx the parse tree - */ - exitIndex_paramenters_create?: (ctx: Index_paramenters_createContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.optconstablespace`. * @param ctx the parse tree @@ -2416,6744 +1476,3630 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreateMaterializedView?: (ctx: CreateMaterializedViewContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.create_mv_target`. - * @param ctx the parse tree - */ - enterCreate_mv_target?: (ctx: Create_mv_targetContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.create_mv_target`. - * @param ctx the parse tree - */ - exitCreate_mv_target?: (ctx: Create_mv_targetContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optnolog`. - * @param ctx the parse tree - */ - enterOptnolog?: (ctx: OptnologContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optnolog`. - * @param ctx the parse tree - */ - exitOptnolog?: (ctx: OptnologContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.refreshmatviewstmt`. * @param ctx the parse tree */ - enterRefreshmatviewstmt?: (ctx: RefreshmatviewstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.refreshmatviewstmt`. - * @param ctx the parse tree - */ - exitRefreshmatviewstmt?: (ctx: RefreshmatviewstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createseqstmt`. - * @param ctx the parse tree - */ - enterCreateseqstmt?: (ctx: CreateseqstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createseqstmt`. - * @param ctx the parse tree - */ - exitCreateseqstmt?: (ctx: CreateseqstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterseqstmt`. - * @param ctx the parse tree - */ - enterAlterseqstmt?: (ctx: AlterseqstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterseqstmt`. - * @param ctx the parse tree - */ - exitAlterseqstmt?: (ctx: AlterseqstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optseqoptlist`. - * @param ctx the parse tree - */ - enterOptseqoptlist?: (ctx: OptseqoptlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optseqoptlist`. - * @param ctx the parse tree - */ - exitOptseqoptlist?: (ctx: OptseqoptlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optparenthesizedseqoptlist`. - * @param ctx the parse tree - */ - enterOptparenthesizedseqoptlist?: (ctx: OptparenthesizedseqoptlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optparenthesizedseqoptlist`. - * @param ctx the parse tree - */ - exitOptparenthesizedseqoptlist?: (ctx: OptparenthesizedseqoptlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.seqoptlist`. - * @param ctx the parse tree - */ - enterSeqoptlist?: (ctx: SeqoptlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.seqoptlist`. - * @param ctx the parse tree - */ - exitSeqoptlist?: (ctx: SeqoptlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.seqoptelem`. - * @param ctx the parse tree - */ - enterSeqoptelem?: (ctx: SeqoptelemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.seqoptelem`. - * @param ctx the parse tree - */ - exitSeqoptelem?: (ctx: SeqoptelemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_by`. - * @param ctx the parse tree - */ - enterOpt_by?: (ctx: Opt_byContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_by`. - * @param ctx the parse tree - */ - exitOpt_by?: (ctx: Opt_byContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.numericonly`. - * @param ctx the parse tree - */ - enterNumericonly?: (ctx: NumericonlyContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.numericonly`. - * @param ctx the parse tree - */ - exitNumericonly?: (ctx: NumericonlyContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.numericonly_list`. - * @param ctx the parse tree - */ - enterNumericonly_list?: (ctx: Numericonly_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.numericonly_list`. - * @param ctx the parse tree - */ - exitNumericonly_list?: (ctx: Numericonly_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createplangstmt`. - * @param ctx the parse tree - */ - enterCreateplangstmt?: (ctx: CreateplangstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createplangstmt`. - * @param ctx the parse tree - */ - exitCreateplangstmt?: (ctx: CreateplangstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_trusted`. - * @param ctx the parse tree - */ - enterOpt_trusted?: (ctx: Opt_trustedContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_trusted`. - * @param ctx the parse tree - */ - exitOpt_trusted?: (ctx: Opt_trustedContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.handler_name`. - * @param ctx the parse tree - */ - enterHandler_name?: (ctx: Handler_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.handler_name`. - * @param ctx the parse tree - */ - exitHandler_name?: (ctx: Handler_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_inline_handler`. - * @param ctx the parse tree - */ - enterOpt_inline_handler?: (ctx: Opt_inline_handlerContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_inline_handler`. - * @param ctx the parse tree - */ - exitOpt_inline_handler?: (ctx: Opt_inline_handlerContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.validator_clause`. - * @param ctx the parse tree - */ - enterValidator_clause?: (ctx: Validator_clauseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.validator_clause`. - * @param ctx the parse tree - */ - exitValidator_clause?: (ctx: Validator_clauseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_validator`. - * @param ctx the parse tree - */ - enterOpt_validator?: (ctx: Opt_validatorContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_validator`. - * @param ctx the parse tree - */ - exitOpt_validator?: (ctx: Opt_validatorContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_procedural`. - * @param ctx the parse tree - */ - enterOpt_procedural?: (ctx: Opt_proceduralContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_procedural`. - * @param ctx the parse tree - */ - exitOpt_procedural?: (ctx: Opt_proceduralContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createtablespacestmt`. - * @param ctx the parse tree - */ - enterCreatetablespacestmt?: (ctx: CreatetablespacestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createtablespacestmt`. - * @param ctx the parse tree - */ - exitCreatetablespacestmt?: (ctx: CreatetablespacestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opttablespaceowner`. - * @param ctx the parse tree - */ - enterOpttablespaceowner?: (ctx: OpttablespaceownerContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opttablespaceowner`. - * @param ctx the parse tree - */ - exitOpttablespaceowner?: (ctx: OpttablespaceownerContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createextensionstmt`. - * @param ctx the parse tree - */ - enterCreateextensionstmt?: (ctx: CreateextensionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createextensionstmt`. - * @param ctx the parse tree - */ - exitCreateextensionstmt?: (ctx: CreateextensionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.create_extension_opt_list`. - * @param ctx the parse tree - */ - enterCreate_extension_opt_list?: (ctx: Create_extension_opt_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.create_extension_opt_list`. - * @param ctx the parse tree - */ - exitCreate_extension_opt_list?: (ctx: Create_extension_opt_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.create_extension_opt_item`. - * @param ctx the parse tree - */ - enterCreate_extension_opt_item?: (ctx: Create_extension_opt_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.create_extension_opt_item`. - * @param ctx the parse tree - */ - exitCreate_extension_opt_item?: (ctx: Create_extension_opt_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterextensionstmt`. - * @param ctx the parse tree - */ - enterAlterextensionstmt?: (ctx: AlterextensionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterextensionstmt`. - * @param ctx the parse tree - */ - exitAlterextensionstmt?: (ctx: AlterextensionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_extension_opt_list`. - * @param ctx the parse tree - */ - enterAlter_extension_opt_list?: (ctx: Alter_extension_opt_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_extension_opt_list`. - * @param ctx the parse tree - */ - exitAlter_extension_opt_list?: (ctx: Alter_extension_opt_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_extension_opt_item`. - * @param ctx the parse tree - */ - enterAlter_extension_opt_item?: (ctx: Alter_extension_opt_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_extension_opt_item`. - * @param ctx the parse tree - */ - exitAlter_extension_opt_item?: (ctx: Alter_extension_opt_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterextensioncontentsstmt`. - * @param ctx the parse tree - */ - enterAlterextensioncontentsstmt?: (ctx: AlterextensioncontentsstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterextensioncontentsstmt`. - * @param ctx the parse tree - */ - exitAlterextensioncontentsstmt?: (ctx: AlterextensioncontentsstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createfdwstmt`. - * @param ctx the parse tree - */ - enterCreatefdwstmt?: (ctx: CreatefdwstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createfdwstmt`. - * @param ctx the parse tree - */ - exitCreatefdwstmt?: (ctx: CreatefdwstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.fdw_option`. - * @param ctx the parse tree - */ - enterFdw_option?: (ctx: Fdw_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.fdw_option`. - * @param ctx the parse tree - */ - exitFdw_option?: (ctx: Fdw_optionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.fdw_options`. - * @param ctx the parse tree - */ - enterFdw_options?: (ctx: Fdw_optionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.fdw_options`. - * @param ctx the parse tree - */ - exitFdw_options?: (ctx: Fdw_optionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_fdw_options`. - * @param ctx the parse tree - */ - enterOpt_fdw_options?: (ctx: Opt_fdw_optionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_fdw_options`. - * @param ctx the parse tree - */ - exitOpt_fdw_options?: (ctx: Opt_fdw_optionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterfdwstmt`. - * @param ctx the parse tree - */ - enterAlterfdwstmt?: (ctx: AlterfdwstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterfdwstmt`. - * @param ctx the parse tree - */ - exitAlterfdwstmt?: (ctx: AlterfdwstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.create_generic_options`. - * @param ctx the parse tree - */ - enterCreate_generic_options?: (ctx: Create_generic_optionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.create_generic_options`. - * @param ctx the parse tree - */ - exitCreate_generic_options?: (ctx: Create_generic_optionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.generic_option_list`. - * @param ctx the parse tree - */ - enterGeneric_option_list?: (ctx: Generic_option_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.generic_option_list`. - * @param ctx the parse tree - */ - exitGeneric_option_list?: (ctx: Generic_option_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_generic_options`. - * @param ctx the parse tree - */ - enterAlter_generic_options?: (ctx: Alter_generic_optionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_generic_options`. - * @param ctx the parse tree - */ - exitAlter_generic_options?: (ctx: Alter_generic_optionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_generic_option_list`. - * @param ctx the parse tree - */ - enterAlter_generic_option_list?: (ctx: Alter_generic_option_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_generic_option_list`. - * @param ctx the parse tree - */ - exitAlter_generic_option_list?: (ctx: Alter_generic_option_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alter_generic_option_elem`. - * @param ctx the parse tree - */ - enterAlter_generic_option_elem?: (ctx: Alter_generic_option_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alter_generic_option_elem`. - * @param ctx the parse tree - */ - exitAlter_generic_option_elem?: (ctx: Alter_generic_option_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.generic_option_elem`. - * @param ctx the parse tree - */ - enterGeneric_option_elem?: (ctx: Generic_option_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.generic_option_elem`. - * @param ctx the parse tree - */ - exitGeneric_option_elem?: (ctx: Generic_option_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.generic_option_name`. - * @param ctx the parse tree - */ - enterGeneric_option_name?: (ctx: Generic_option_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.generic_option_name`. - * @param ctx the parse tree - */ - exitGeneric_option_name?: (ctx: Generic_option_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.generic_option_arg`. - * @param ctx the parse tree - */ - enterGeneric_option_arg?: (ctx: Generic_option_argContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.generic_option_arg`. - * @param ctx the parse tree - */ - exitGeneric_option_arg?: (ctx: Generic_option_argContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createforeignserverstmt`. - * @param ctx the parse tree - */ - enterCreateforeignserverstmt?: (ctx: CreateforeignserverstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createforeignserverstmt`. - * @param ctx the parse tree - */ - exitCreateforeignserverstmt?: (ctx: CreateforeignserverstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_type`. - * @param ctx the parse tree - */ - enterOpt_type?: (ctx: Opt_typeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_type`. - * @param ctx the parse tree - */ - exitOpt_type?: (ctx: Opt_typeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.foreign_server_version`. - * @param ctx the parse tree - */ - enterForeign_server_version?: (ctx: Foreign_server_versionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.foreign_server_version`. - * @param ctx the parse tree - */ - exitForeign_server_version?: (ctx: Foreign_server_versionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_foreign_server_version`. - * @param ctx the parse tree - */ - enterOpt_foreign_server_version?: (ctx: Opt_foreign_server_versionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_foreign_server_version`. - * @param ctx the parse tree - */ - exitOpt_foreign_server_version?: (ctx: Opt_foreign_server_versionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterforeignserverstmt`. - * @param ctx the parse tree - */ - enterAlterforeignserverstmt?: (ctx: AlterforeignserverstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterforeignserverstmt`. - * @param ctx the parse tree - */ - exitAlterforeignserverstmt?: (ctx: AlterforeignserverstmtContext) => void; - /** - * Enter a parse tree produced by the `createForeignTable` - * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. - * @param ctx the parse tree - */ - enterCreateForeignTable?: (ctx: CreateForeignTableContext) => void; - /** - * Exit a parse tree produced by the `createForeignTable` - * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. - * @param ctx the parse tree - */ - exitCreateForeignTable?: (ctx: CreateForeignTableContext) => void; - /** - * Enter a parse tree produced by the `createPartitionForeignTable` - * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. - * @param ctx the parse tree - */ - enterCreatePartitionForeignTable?: (ctx: CreatePartitionForeignTableContext) => void; - /** - * Exit a parse tree produced by the `createPartitionForeignTable` - * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. - * @param ctx the parse tree - */ - exitCreatePartitionForeignTable?: (ctx: CreatePartitionForeignTableContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.importforeignschemastmt`. - * @param ctx the parse tree - */ - enterImportforeignschemastmt?: (ctx: ImportforeignschemastmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.importforeignschemastmt`. - * @param ctx the parse tree - */ - exitImportforeignschemastmt?: (ctx: ImportforeignschemastmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.import_qualification_type`. - * @param ctx the parse tree - */ - enterImport_qualification_type?: (ctx: Import_qualification_typeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.import_qualification_type`. - * @param ctx the parse tree - */ - exitImport_qualification_type?: (ctx: Import_qualification_typeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.import_qualification`. - * @param ctx the parse tree - */ - enterImport_qualification?: (ctx: Import_qualificationContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.import_qualification`. - * @param ctx the parse tree - */ - exitImport_qualification?: (ctx: Import_qualificationContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createusermappingstmt`. - * @param ctx the parse tree - */ - enterCreateusermappingstmt?: (ctx: CreateusermappingstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createusermappingstmt`. - * @param ctx the parse tree - */ - exitCreateusermappingstmt?: (ctx: CreateusermappingstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.auth_ident`. - * @param ctx the parse tree - */ - enterAuth_ident?: (ctx: Auth_identContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.auth_ident`. - * @param ctx the parse tree - */ - exitAuth_ident?: (ctx: Auth_identContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterusermappingstmt`. - * @param ctx the parse tree - */ - enterAlterusermappingstmt?: (ctx: AlterusermappingstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterusermappingstmt`. - * @param ctx the parse tree - */ - exitAlterusermappingstmt?: (ctx: AlterusermappingstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createpolicystmt`. - * @param ctx the parse tree - */ - enterCreatepolicystmt?: (ctx: CreatepolicystmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createpolicystmt`. - * @param ctx the parse tree - */ - exitCreatepolicystmt?: (ctx: CreatepolicystmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterpolicystmt`. - * @param ctx the parse tree - */ - enterAlterpolicystmt?: (ctx: AlterpolicystmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterpolicystmt`. - * @param ctx the parse tree - */ - exitAlterpolicystmt?: (ctx: AlterpolicystmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterprocedurestmt`. - * @param ctx the parse tree - */ - enterAlterprocedurestmt?: (ctx: AlterprocedurestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterprocedurestmt`. - * @param ctx the parse tree - */ - exitAlterprocedurestmt?: (ctx: AlterprocedurestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.procedure_cluase`. - * @param ctx the parse tree - */ - enterProcedure_cluase?: (ctx: Procedure_cluaseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.procedure_cluase`. - * @param ctx the parse tree - */ - exitProcedure_cluase?: (ctx: Procedure_cluaseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.procedure_action`. - * @param ctx the parse tree - */ - enterProcedure_action?: (ctx: Procedure_actionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.procedure_action`. - * @param ctx the parse tree - */ - exitProcedure_action?: (ctx: Procedure_actionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rowsecurityoptionalexpr`. - * @param ctx the parse tree - */ - enterRowsecurityoptionalexpr?: (ctx: RowsecurityoptionalexprContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rowsecurityoptionalexpr`. - * @param ctx the parse tree - */ - exitRowsecurityoptionalexpr?: (ctx: RowsecurityoptionalexprContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rowsecurityoptionalwithcheck`. - * @param ctx the parse tree - */ - enterRowsecurityoptionalwithcheck?: (ctx: RowsecurityoptionalwithcheckContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rowsecurityoptionalwithcheck`. - * @param ctx the parse tree - */ - exitRowsecurityoptionalwithcheck?: (ctx: RowsecurityoptionalwithcheckContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rowsecuritydefaulttorole`. - * @param ctx the parse tree - */ - enterRowsecuritydefaulttorole?: (ctx: RowsecuritydefaulttoroleContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rowsecuritydefaulttorole`. - * @param ctx the parse tree - */ - exitRowsecuritydefaulttorole?: (ctx: RowsecuritydefaulttoroleContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rowsecurityoptionaltorole`. - * @param ctx the parse tree - */ - enterRowsecurityoptionaltorole?: (ctx: RowsecurityoptionaltoroleContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rowsecurityoptionaltorole`. - * @param ctx the parse tree - */ - exitRowsecurityoptionaltorole?: (ctx: RowsecurityoptionaltoroleContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rowsecuritydefaultpermissive`. - * @param ctx the parse tree - */ - enterRowsecuritydefaultpermissive?: (ctx: RowsecuritydefaultpermissiveContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rowsecuritydefaultpermissive`. - * @param ctx the parse tree - */ - exitRowsecuritydefaultpermissive?: (ctx: RowsecuritydefaultpermissiveContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rowsecuritydefaultforcmd`. - * @param ctx the parse tree - */ - enterRowsecuritydefaultforcmd?: (ctx: RowsecuritydefaultforcmdContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rowsecuritydefaultforcmd`. - * @param ctx the parse tree - */ - exitRowsecuritydefaultforcmd?: (ctx: RowsecuritydefaultforcmdContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.row_security_cmd`. - * @param ctx the parse tree - */ - enterRow_security_cmd?: (ctx: Row_security_cmdContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.row_security_cmd`. - * @param ctx the parse tree - */ - exitRow_security_cmd?: (ctx: Row_security_cmdContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createamstmt`. - * @param ctx the parse tree - */ - enterCreateamstmt?: (ctx: CreateamstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createamstmt`. - * @param ctx the parse tree - */ - exitCreateamstmt?: (ctx: CreateamstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.am_type`. - * @param ctx the parse tree - */ - enterAm_type?: (ctx: Am_typeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.am_type`. - * @param ctx the parse tree - */ - exitAm_type?: (ctx: Am_typeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createtrigstmt`. - * @param ctx the parse tree - */ - enterCreatetrigstmt?: (ctx: CreatetrigstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createtrigstmt`. - * @param ctx the parse tree - */ - exitCreatetrigstmt?: (ctx: CreatetrigstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggeractiontime`. - * @param ctx the parse tree - */ - enterTriggeractiontime?: (ctx: TriggeractiontimeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggeractiontime`. - * @param ctx the parse tree - */ - exitTriggeractiontime?: (ctx: TriggeractiontimeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.foreachrow`. - * @param ctx the parse tree - */ - enterForeachrow?: (ctx: ForeachrowContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.foreachrow`. - * @param ctx the parse tree - */ - exitForeachrow?: (ctx: ForeachrowContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.roworstatment`. - * @param ctx the parse tree - */ - enterRoworstatment?: (ctx: RoworstatmentContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.roworstatment`. - * @param ctx the parse tree - */ - exitRoworstatment?: (ctx: RoworstatmentContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerevents`. - * @param ctx the parse tree - */ - enterTriggerevents?: (ctx: TriggereventsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerevents`. - * @param ctx the parse tree - */ - exitTriggerevents?: (ctx: TriggereventsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggeroneevent`. - * @param ctx the parse tree - */ - enterTriggeroneevent?: (ctx: TriggeroneeventContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggeroneevent`. - * @param ctx the parse tree - */ - exitTriggeroneevent?: (ctx: TriggeroneeventContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerreferencing`. - * @param ctx the parse tree - */ - enterTriggerreferencing?: (ctx: TriggerreferencingContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerreferencing`. - * @param ctx the parse tree - */ - exitTriggerreferencing?: (ctx: TriggerreferencingContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggertransitions`. - * @param ctx the parse tree - */ - enterTriggertransitions?: (ctx: TriggertransitionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggertransitions`. - * @param ctx the parse tree - */ - exitTriggertransitions?: (ctx: TriggertransitionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggertransition`. - * @param ctx the parse tree - */ - enterTriggertransition?: (ctx: TriggertransitionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggertransition`. - * @param ctx the parse tree - */ - exitTriggertransition?: (ctx: TriggertransitionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transitionoldornew`. - * @param ctx the parse tree - */ - enterTransitionoldornew?: (ctx: TransitionoldornewContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transitionoldornew`. - * @param ctx the parse tree - */ - exitTransitionoldornew?: (ctx: TransitionoldornewContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transitionrowortable`. - * @param ctx the parse tree - */ - enterTransitionrowortable?: (ctx: TransitionrowortableContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transitionrowortable`. - * @param ctx the parse tree - */ - exitTransitionrowortable?: (ctx: TransitionrowortableContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transitionrelname`. - * @param ctx the parse tree - */ - enterTransitionrelname?: (ctx: TransitionrelnameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transitionrelname`. - * @param ctx the parse tree - */ - exitTransitionrelname?: (ctx: TransitionrelnameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerforspec`. - * @param ctx the parse tree - */ - enterTriggerforspec?: (ctx: TriggerforspecContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerforspec`. - * @param ctx the parse tree - */ - exitTriggerforspec?: (ctx: TriggerforspecContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerforopteach`. - * @param ctx the parse tree - */ - enterTriggerforopteach?: (ctx: TriggerforopteachContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerforopteach`. - * @param ctx the parse tree - */ - exitTriggerforopteach?: (ctx: TriggerforopteachContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerfortype`. - * @param ctx the parse tree - */ - enterTriggerfortype?: (ctx: TriggerfortypeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerfortype`. - * @param ctx the parse tree - */ - exitTriggerfortype?: (ctx: TriggerfortypeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerwhen`. - * @param ctx the parse tree - */ - enterTriggerwhen?: (ctx: TriggerwhenContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerwhen`. - * @param ctx the parse tree - */ - exitTriggerwhen?: (ctx: TriggerwhenContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.function_or_procedure`. - * @param ctx the parse tree - */ - enterFunction_or_procedure?: (ctx: Function_or_procedureContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.function_or_procedure`. - * @param ctx the parse tree - */ - exitFunction_or_procedure?: (ctx: Function_or_procedureContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerfuncargs`. - * @param ctx the parse tree - */ - enterTriggerfuncargs?: (ctx: TriggerfuncargsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerfuncargs`. - * @param ctx the parse tree - */ - exitTriggerfuncargs?: (ctx: TriggerfuncargsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.triggerfuncarg`. - * @param ctx the parse tree - */ - enterTriggerfuncarg?: (ctx: TriggerfuncargContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.triggerfuncarg`. - * @param ctx the parse tree - */ - exitTriggerfuncarg?: (ctx: TriggerfuncargContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.optconstrfromtable`. - * @param ctx the parse tree - */ - enterOptconstrfromtable?: (ctx: OptconstrfromtableContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.optconstrfromtable`. - * @param ctx the parse tree - */ - exitOptconstrfromtable?: (ctx: OptconstrfromtableContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.constraintattributespec`. - * @param ctx the parse tree - */ - enterConstraintattributespec?: (ctx: ConstraintattributespecContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.constraintattributespec`. - * @param ctx the parse tree - */ - exitConstraintattributespec?: (ctx: ConstraintattributespecContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.constraintattributeElem`. - * @param ctx the parse tree - */ - enterConstraintattributeElem?: (ctx: ConstraintattributeElemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.constraintattributeElem`. - * @param ctx the parse tree - */ - exitConstraintattributeElem?: (ctx: ConstraintattributeElemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createeventtrigstmt`. - * @param ctx the parse tree - */ - enterCreateeventtrigstmt?: (ctx: CreateeventtrigstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createeventtrigstmt`. - * @param ctx the parse tree - */ - exitCreateeventtrigstmt?: (ctx: CreateeventtrigstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.event_trigger_when_list`. - * @param ctx the parse tree - */ - enterEvent_trigger_when_list?: (ctx: Event_trigger_when_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.event_trigger_when_list`. - * @param ctx the parse tree - */ - exitEvent_trigger_when_list?: (ctx: Event_trigger_when_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.event_trigger_when_item`. - * @param ctx the parse tree - */ - enterEvent_trigger_when_item?: (ctx: Event_trigger_when_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.event_trigger_when_item`. - * @param ctx the parse tree - */ - exitEvent_trigger_when_item?: (ctx: Event_trigger_when_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.event_trigger_value_list`. - * @param ctx the parse tree - */ - enterEvent_trigger_value_list?: (ctx: Event_trigger_value_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.event_trigger_value_list`. - * @param ctx the parse tree - */ - exitEvent_trigger_value_list?: (ctx: Event_trigger_value_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altereventtrigstmt`. - * @param ctx the parse tree - */ - enterAltereventtrigstmt?: (ctx: AltereventtrigstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altereventtrigstmt`. - * @param ctx the parse tree - */ - exitAltereventtrigstmt?: (ctx: AltereventtrigstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.enable_trigger`. - * @param ctx the parse tree - */ - enterEnable_trigger?: (ctx: Enable_triggerContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.enable_trigger`. - * @param ctx the parse tree - */ - exitEnable_trigger?: (ctx: Enable_triggerContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createassertionstmt`. - * @param ctx the parse tree - */ - enterCreateassertionstmt?: (ctx: CreateassertionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createassertionstmt`. - * @param ctx the parse tree - */ - exitCreateassertionstmt?: (ctx: CreateassertionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.definestmt`. - * @param ctx the parse tree - */ - enterDefinestmt?: (ctx: DefinestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.definestmt`. - * @param ctx the parse tree - */ - exitDefinestmt?: (ctx: DefinestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.definition`. - * @param ctx the parse tree - */ - enterDefinition?: (ctx: DefinitionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.definition`. - * @param ctx the parse tree - */ - exitDefinition?: (ctx: DefinitionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.def_list`. - * @param ctx the parse tree - */ - enterDef_list?: (ctx: Def_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.def_list`. - * @param ctx the parse tree - */ - exitDef_list?: (ctx: Def_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.def_elem`. - * @param ctx the parse tree - */ - enterDef_elem?: (ctx: Def_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.def_elem`. - * @param ctx the parse tree - */ - exitDef_elem?: (ctx: Def_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.def_arg`. - * @param ctx the parse tree - */ - enterDef_arg?: (ctx: Def_argContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.def_arg`. - * @param ctx the parse tree - */ - exitDef_arg?: (ctx: Def_argContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.old_aggr_definition`. - * @param ctx the parse tree - */ - enterOld_aggr_definition?: (ctx: Old_aggr_definitionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.old_aggr_definition`. - * @param ctx the parse tree - */ - exitOld_aggr_definition?: (ctx: Old_aggr_definitionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.old_aggr_list`. - * @param ctx the parse tree - */ - enterOld_aggr_list?: (ctx: Old_aggr_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.old_aggr_list`. - * @param ctx the parse tree - */ - exitOld_aggr_list?: (ctx: Old_aggr_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.old_aggr_elem`. - * @param ctx the parse tree - */ - enterOld_aggr_elem?: (ctx: Old_aggr_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.old_aggr_elem`. - * @param ctx the parse tree - */ - exitOld_aggr_elem?: (ctx: Old_aggr_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_enum_val_list`. - * @param ctx the parse tree - */ - enterOpt_enum_val_list?: (ctx: Opt_enum_val_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_enum_val_list`. - * @param ctx the parse tree - */ - exitOpt_enum_val_list?: (ctx: Opt_enum_val_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.enum_val_list`. - * @param ctx the parse tree - */ - enterEnum_val_list?: (ctx: Enum_val_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.enum_val_list`. - * @param ctx the parse tree - */ - exitEnum_val_list?: (ctx: Enum_val_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterenumstmt`. - * @param ctx the parse tree - */ - enterAlterenumstmt?: (ctx: AlterenumstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterenumstmt`. - * @param ctx the parse tree - */ - exitAlterenumstmt?: (ctx: AlterenumstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_if_not_exists`. - * @param ctx the parse tree - */ - enterOpt_if_not_exists?: (ctx: Opt_if_not_existsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_if_not_exists`. - * @param ctx the parse tree - */ - exitOpt_if_not_exists?: (ctx: Opt_if_not_existsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createopclassstmt`. - * @param ctx the parse tree - */ - enterCreateopclassstmt?: (ctx: CreateopclassstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createopclassstmt`. - * @param ctx the parse tree - */ - exitCreateopclassstmt?: (ctx: CreateopclassstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opclass_item_list`. - * @param ctx the parse tree - */ - enterOpclass_item_list?: (ctx: Opclass_item_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opclass_item_list`. - * @param ctx the parse tree - */ - exitOpclass_item_list?: (ctx: Opclass_item_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opclass_item`. - * @param ctx the parse tree - */ - enterOpclass_item?: (ctx: Opclass_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opclass_item`. - * @param ctx the parse tree - */ - exitOpclass_item?: (ctx: Opclass_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_default`. - * @param ctx the parse tree - */ - enterOpt_default?: (ctx: Opt_defaultContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_default`. - * @param ctx the parse tree - */ - exitOpt_default?: (ctx: Opt_defaultContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_opfamily`. - * @param ctx the parse tree - */ - enterOpt_opfamily?: (ctx: Opt_opfamilyContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_opfamily`. - * @param ctx the parse tree - */ - exitOpt_opfamily?: (ctx: Opt_opfamilyContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opclass_purpose`. - * @param ctx the parse tree - */ - enterOpclass_purpose?: (ctx: Opclass_purposeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opclass_purpose`. - * @param ctx the parse tree - */ - exitOpclass_purpose?: (ctx: Opclass_purposeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_recheck`. - * @param ctx the parse tree - */ - enterOpt_recheck?: (ctx: Opt_recheckContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_recheck`. - * @param ctx the parse tree - */ - exitOpt_recheck?: (ctx: Opt_recheckContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createopfamilystmt`. - * @param ctx the parse tree - */ - enterCreateopfamilystmt?: (ctx: CreateopfamilystmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createopfamilystmt`. - * @param ctx the parse tree - */ - exitCreateopfamilystmt?: (ctx: CreateopfamilystmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alteropfamilystmt`. - * @param ctx the parse tree - */ - enterAlteropfamilystmt?: (ctx: AlteropfamilystmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alteropfamilystmt`. - * @param ctx the parse tree - */ - exitAlteropfamilystmt?: (ctx: AlteropfamilystmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opclass_drop_list`. - * @param ctx the parse tree - */ - enterOpclass_drop_list?: (ctx: Opclass_drop_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opclass_drop_list`. - * @param ctx the parse tree - */ - exitOpclass_drop_list?: (ctx: Opclass_drop_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opclass_drop`. - * @param ctx the parse tree - */ - enterOpclass_drop?: (ctx: Opclass_dropContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opclass_drop`. - * @param ctx the parse tree - */ - exitOpclass_drop?: (ctx: Opclass_dropContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reassignownedstmt`. - * @param ctx the parse tree - */ - enterReassignownedstmt?: (ctx: ReassignownedstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reassignownedstmt`. - * @param ctx the parse tree - */ - exitReassignownedstmt?: (ctx: ReassignownedstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.dropstmt`. - * @param ctx the parse tree - */ - enterDropstmt?: (ctx: DropstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.dropstmt`. - * @param ctx the parse tree - */ - exitDropstmt?: (ctx: DropstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.view_nameList`. - * @param ctx the parse tree - */ - enterView_nameList?: (ctx: View_nameListContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.view_nameList`. - * @param ctx the parse tree - */ - exitView_nameList?: (ctx: View_nameListContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.object_type_any_name`. - * @param ctx the parse tree - */ - enterObject_type_any_name?: (ctx: Object_type_any_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.object_type_any_name`. - * @param ctx the parse tree - */ - exitObject_type_any_name?: (ctx: Object_type_any_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.object_type_name`. - * @param ctx the parse tree - */ - enterObject_type_name?: (ctx: Object_type_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.object_type_name`. - * @param ctx the parse tree - */ - exitObject_type_name?: (ctx: Object_type_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.object_type_name_on_any_name`. - * @param ctx the parse tree - */ - enterObject_type_name_on_any_name?: (ctx: Object_type_name_on_any_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.object_type_name_on_any_name`. - * @param ctx the parse tree - */ - exitObject_type_name_on_any_name?: (ctx: Object_type_name_on_any_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.any_name_list`. - * @param ctx the parse tree - */ - enterAny_name_list?: (ctx: Any_name_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.any_name_list`. - * @param ctx the parse tree - */ - exitAny_name_list?: (ctx: Any_name_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.relation_column_name`. - * @param ctx the parse tree - */ - enterRelation_column_name?: (ctx: Relation_column_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.relation_column_name`. - * @param ctx the parse tree - */ - exitRelation_column_name?: (ctx: Relation_column_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.relation_name`. - * @param ctx the parse tree - */ - enterRelation_name?: (ctx: Relation_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.relation_name`. - * @param ctx the parse tree - */ - exitRelation_name?: (ctx: Relation_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.any_name`. - * @param ctx the parse tree - */ - enterAny_name?: (ctx: Any_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.any_name`. - * @param ctx the parse tree - */ - exitAny_name?: (ctx: Any_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.attrs`. - * @param ctx the parse tree - */ - enterAttrs?: (ctx: AttrsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.attrs`. - * @param ctx the parse tree - */ - exitAttrs?: (ctx: AttrsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.type_name_list`. - * @param ctx the parse tree - */ - enterType_name_list?: (ctx: Type_name_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.type_name_list`. - * @param ctx the parse tree - */ - exitType_name_list?: (ctx: Type_name_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.truncatestmt`. - * @param ctx the parse tree - */ - enterTruncatestmt?: (ctx: TruncatestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.truncatestmt`. - * @param ctx the parse tree - */ - exitTruncatestmt?: (ctx: TruncatestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.truncate_table`. - * @param ctx the parse tree - */ - enterTruncate_table?: (ctx: Truncate_tableContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.truncate_table`. - * @param ctx the parse tree - */ - exitTruncate_table?: (ctx: Truncate_tableContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.commentstmt`. - * @param ctx the parse tree - */ - enterCommentstmt?: (ctx: CommentstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.commentstmt`. - * @param ctx the parse tree - */ - exitCommentstmt?: (ctx: CommentstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.comment_text`. - * @param ctx the parse tree - */ - enterComment_text?: (ctx: Comment_textContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.comment_text`. - * @param ctx the parse tree - */ - exitComment_text?: (ctx: Comment_textContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.seclabelstmt`. - * @param ctx the parse tree - */ - enterSeclabelstmt?: (ctx: SeclabelstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.seclabelstmt`. - * @param ctx the parse tree - */ - exitSeclabelstmt?: (ctx: SeclabelstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_provider`. - * @param ctx the parse tree - */ - enterOpt_provider?: (ctx: Opt_providerContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_provider`. - * @param ctx the parse tree - */ - exitOpt_provider?: (ctx: Opt_providerContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.security_label`. - * @param ctx the parse tree - */ - enterSecurity_label?: (ctx: Security_labelContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.security_label`. - * @param ctx the parse tree - */ - exitSecurity_label?: (ctx: Security_labelContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.fetchstmt`. - * @param ctx the parse tree - */ - enterFetchstmt?: (ctx: FetchstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.fetchstmt`. - * @param ctx the parse tree - */ - exitFetchstmt?: (ctx: FetchstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.fetch_args`. - * @param ctx the parse tree - */ - enterFetch_args?: (ctx: Fetch_argsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.fetch_args`. - * @param ctx the parse tree - */ - exitFetch_args?: (ctx: Fetch_argsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.from_in`. - * @param ctx the parse tree - */ - enterFrom_in?: (ctx: From_inContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.from_in`. - * @param ctx the parse tree - */ - exitFrom_in?: (ctx: From_inContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_from_in`. - * @param ctx the parse tree - */ - enterOpt_from_in?: (ctx: Opt_from_inContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_from_in`. - * @param ctx the parse tree - */ - exitOpt_from_in?: (ctx: Opt_from_inContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.grantstmt`. - * @param ctx the parse tree - */ - enterGrantstmt?: (ctx: GrantstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.grantstmt`. - * @param ctx the parse tree - */ - exitGrantstmt?: (ctx: GrantstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.revokestmt`. - * @param ctx the parse tree - */ - enterRevokestmt?: (ctx: RevokestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.revokestmt`. - * @param ctx the parse tree - */ - exitRevokestmt?: (ctx: RevokestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.privileges`. - * @param ctx the parse tree - */ - enterPrivileges?: (ctx: PrivilegesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.privileges`. - * @param ctx the parse tree - */ - exitPrivileges?: (ctx: PrivilegesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.beforeprivilegeselectlist`. - * @param ctx the parse tree - */ - enterBeforeprivilegeselectlist?: (ctx: BeforeprivilegeselectlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.beforeprivilegeselectlist`. - * @param ctx the parse tree - */ - exitBeforeprivilegeselectlist?: (ctx: BeforeprivilegeselectlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.beforeprivilegeselect`. - * @param ctx the parse tree - */ - enterBeforeprivilegeselect?: (ctx: BeforeprivilegeselectContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.beforeprivilegeselect`. - * @param ctx the parse tree - */ - exitBeforeprivilegeselect?: (ctx: BeforeprivilegeselectContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.privilege_list`. - * @param ctx the parse tree - */ - enterPrivilege_list?: (ctx: Privilege_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.privilege_list`. - * @param ctx the parse tree - */ - exitPrivilege_list?: (ctx: Privilege_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.privilege`. - * @param ctx the parse tree - */ - enterPrivilege?: (ctx: PrivilegeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.privilege`. - * @param ctx the parse tree - */ - exitPrivilege?: (ctx: PrivilegeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.privilege_target`. - * @param ctx the parse tree - */ - enterPrivilege_target?: (ctx: Privilege_targetContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.privilege_target`. - * @param ctx the parse tree - */ - exitPrivilege_target?: (ctx: Privilege_targetContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.grantee_list`. - * @param ctx the parse tree - */ - enterGrantee_list?: (ctx: Grantee_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.grantee_list`. - * @param ctx the parse tree - */ - exitGrantee_list?: (ctx: Grantee_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.grantee`. - * @param ctx the parse tree - */ - enterGrantee?: (ctx: GranteeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.grantee`. - * @param ctx the parse tree - */ - exitGrantee?: (ctx: GranteeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_grant_grant_option`. - * @param ctx the parse tree - */ - enterOpt_grant_grant_option?: (ctx: Opt_grant_grant_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_grant_grant_option`. - * @param ctx the parse tree - */ - exitOpt_grant_grant_option?: (ctx: Opt_grant_grant_optionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.grantrolestmt`. - * @param ctx the parse tree - */ - enterGrantrolestmt?: (ctx: GrantrolestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.grantrolestmt`. - * @param ctx the parse tree - */ - exitGrantrolestmt?: (ctx: GrantrolestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.revokerolestmt`. - * @param ctx the parse tree - */ - enterRevokerolestmt?: (ctx: RevokerolestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.revokerolestmt`. - * @param ctx the parse tree - */ - exitRevokerolestmt?: (ctx: RevokerolestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_grant_admin_option`. - * @param ctx the parse tree - */ - enterOpt_grant_admin_option?: (ctx: Opt_grant_admin_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_grant_admin_option`. - * @param ctx the parse tree - */ - exitOpt_grant_admin_option?: (ctx: Opt_grant_admin_optionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_granted_by`. - * @param ctx the parse tree - */ - enterOpt_granted_by?: (ctx: Opt_granted_byContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_granted_by`. - * @param ctx the parse tree - */ - exitOpt_granted_by?: (ctx: Opt_granted_byContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterdefaultprivilegesstmt`. - * @param ctx the parse tree - */ - enterAlterdefaultprivilegesstmt?: (ctx: AlterdefaultprivilegesstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterdefaultprivilegesstmt`. - * @param ctx the parse tree - */ - exitAlterdefaultprivilegesstmt?: (ctx: AlterdefaultprivilegesstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.defacloptionlist`. - * @param ctx the parse tree - */ - enterDefacloptionlist?: (ctx: DefacloptionlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.defacloptionlist`. - * @param ctx the parse tree - */ - exitDefacloptionlist?: (ctx: DefacloptionlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.defacloption`. - * @param ctx the parse tree - */ - enterDefacloption?: (ctx: DefacloptionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.defacloption`. - * @param ctx the parse tree - */ - exitDefacloption?: (ctx: DefacloptionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.defaclaction`. - * @param ctx the parse tree - */ - enterDefaclaction?: (ctx: DefaclactionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.defaclaction`. - * @param ctx the parse tree - */ - exitDefaclaction?: (ctx: DefaclactionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.defacl_privilege_target`. - * @param ctx the parse tree - */ - enterDefacl_privilege_target?: (ctx: Defacl_privilege_targetContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.defacl_privilege_target`. - * @param ctx the parse tree - */ - exitDefacl_privilege_target?: (ctx: Defacl_privilege_targetContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.indexstmt`. - * @param ctx the parse tree - */ - enterIndexstmt?: (ctx: IndexstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.indexstmt`. - * @param ctx the parse tree - */ - exitIndexstmt?: (ctx: IndexstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_unique`. - * @param ctx the parse tree - */ - enterOpt_unique?: (ctx: Opt_uniqueContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_unique`. - * @param ctx the parse tree - */ - exitOpt_unique?: (ctx: Opt_uniqueContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_concurrently`. - * @param ctx the parse tree - */ - enterOpt_concurrently?: (ctx: Opt_concurrentlyContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_concurrently`. - * @param ctx the parse tree - */ - exitOpt_concurrently?: (ctx: Opt_concurrentlyContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_index_name`. - * @param ctx the parse tree - */ - enterOpt_index_name?: (ctx: Opt_index_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_index_name`. - * @param ctx the parse tree - */ - exitOpt_index_name?: (ctx: Opt_index_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.access_method_clause`. - * @param ctx the parse tree - */ - enterAccess_method_clause?: (ctx: Access_method_clauseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.access_method_clause`. - * @param ctx the parse tree - */ - exitAccess_method_clause?: (ctx: Access_method_clauseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.index_params`. - * @param ctx the parse tree - */ - enterIndex_params?: (ctx: Index_paramsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.index_params`. - * @param ctx the parse tree - */ - exitIndex_params?: (ctx: Index_paramsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.index_elem_options`. - * @param ctx the parse tree - */ - enterIndex_elem_options?: (ctx: Index_elem_optionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.index_elem_options`. - * @param ctx the parse tree - */ - exitIndex_elem_options?: (ctx: Index_elem_optionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.index_elem`. - * @param ctx the parse tree - */ - enterIndex_elem?: (ctx: Index_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.index_elem`. - * @param ctx the parse tree - */ - exitIndex_elem?: (ctx: Index_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_include`. - * @param ctx the parse tree - */ - enterOpt_include?: (ctx: Opt_includeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_include`. - * @param ctx the parse tree - */ - exitOpt_include?: (ctx: Opt_includeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.index_including_params`. - * @param ctx the parse tree - */ - enterIndex_including_params?: (ctx: Index_including_paramsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.index_including_params`. - * @param ctx the parse tree - */ - exitIndex_including_params?: (ctx: Index_including_paramsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_collate`. - * @param ctx the parse tree - */ - enterOpt_collate?: (ctx: Opt_collateContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_collate`. - * @param ctx the parse tree - */ - exitOpt_collate?: (ctx: Opt_collateContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_class`. - * @param ctx the parse tree - */ - enterOpt_class?: (ctx: Opt_classContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_class`. - * @param ctx the parse tree - */ - exitOpt_class?: (ctx: Opt_classContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_asc_desc`. - * @param ctx the parse tree - */ - enterOpt_asc_desc?: (ctx: Opt_asc_descContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_asc_desc`. - * @param ctx the parse tree - */ - exitOpt_asc_desc?: (ctx: Opt_asc_descContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_nulls_order`. - * @param ctx the parse tree - */ - enterOpt_nulls_order?: (ctx: Opt_nulls_orderContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_nulls_order`. - * @param ctx the parse tree - */ - exitOpt_nulls_order?: (ctx: Opt_nulls_orderContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createfunctionstmt`. - * @param ctx the parse tree - */ - enterCreatefunctionstmt?: (ctx: CreatefunctionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createfunctionstmt`. - * @param ctx the parse tree - */ - exitCreatefunctionstmt?: (ctx: CreatefunctionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.attrilist`. - * @param ctx the parse tree - */ - enterAttrilist?: (ctx: AttrilistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.attrilist`. - * @param ctx the parse tree - */ - exitAttrilist?: (ctx: AttrilistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_or_replace`. - * @param ctx the parse tree - */ - enterOpt_or_replace?: (ctx: Opt_or_replaceContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_or_replace`. - * @param ctx the parse tree - */ - exitOpt_or_replace?: (ctx: Opt_or_replaceContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_args`. - * @param ctx the parse tree - */ - enterFunc_args?: (ctx: Func_argsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_args`. - * @param ctx the parse tree - */ - exitFunc_args?: (ctx: Func_argsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_args_list`. - * @param ctx the parse tree - */ - enterFunc_args_list?: (ctx: Func_args_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_args_list`. - * @param ctx the parse tree - */ - exitFunc_args_list?: (ctx: Func_args_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.routine_with_argtypes_list`. - * @param ctx the parse tree - */ - enterRoutine_with_argtypes_list?: (ctx: Routine_with_argtypes_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.routine_with_argtypes_list`. - * @param ctx the parse tree - */ - exitRoutine_with_argtypes_list?: (ctx: Routine_with_argtypes_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.routine_with_argtypes`. - * @param ctx the parse tree - */ - enterRoutine_with_argtypes?: (ctx: Routine_with_argtypesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.routine_with_argtypes`. - * @param ctx the parse tree - */ - exitRoutine_with_argtypes?: (ctx: Routine_with_argtypesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.procedure_with_argtypes_list`. - * @param ctx the parse tree - */ - enterProcedure_with_argtypes_list?: (ctx: Procedure_with_argtypes_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes_list`. - * @param ctx the parse tree - */ - exitProcedure_with_argtypes_list?: (ctx: Procedure_with_argtypes_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.procedure_with_argtypes`. - * @param ctx the parse tree - */ - enterProcedure_with_argtypes?: (ctx: Procedure_with_argtypesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes`. - * @param ctx the parse tree - */ - exitProcedure_with_argtypes?: (ctx: Procedure_with_argtypesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.function_with_argtypes_list`. - * @param ctx the parse tree - */ - enterFunction_with_argtypes_list?: (ctx: Function_with_argtypes_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.function_with_argtypes_list`. - * @param ctx the parse tree - */ - exitFunction_with_argtypes_list?: (ctx: Function_with_argtypes_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.function_with_argtypes`. - * @param ctx the parse tree - */ - enterFunction_with_argtypes?: (ctx: Function_with_argtypesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.function_with_argtypes`. - * @param ctx the parse tree - */ - exitFunction_with_argtypes?: (ctx: Function_with_argtypesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_args_with_defaults`. - * @param ctx the parse tree - */ - enterFunc_args_with_defaults?: (ctx: Func_args_with_defaultsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_args_with_defaults`. - * @param ctx the parse tree - */ - exitFunc_args_with_defaults?: (ctx: Func_args_with_defaultsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_args_with_defaults_list`. - * @param ctx the parse tree - */ - enterFunc_args_with_defaults_list?: (ctx: Func_args_with_defaults_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_args_with_defaults_list`. - * @param ctx the parse tree - */ - exitFunc_args_with_defaults_list?: (ctx: Func_args_with_defaults_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_arg`. - * @param ctx the parse tree - */ - enterFunc_arg?: (ctx: Func_argContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_arg`. - * @param ctx the parse tree - */ - exitFunc_arg?: (ctx: Func_argContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.arg_class`. - * @param ctx the parse tree - */ - enterArg_class?: (ctx: Arg_classContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.arg_class`. - * @param ctx the parse tree - */ - exitArg_class?: (ctx: Arg_classContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.param_name`. - * @param ctx the parse tree - */ - enterParam_name?: (ctx: Param_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.param_name`. - * @param ctx the parse tree - */ - exitParam_name?: (ctx: Param_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_return`. - * @param ctx the parse tree - */ - enterFunc_return?: (ctx: Func_returnContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_return`. - * @param ctx the parse tree - */ - exitFunc_return?: (ctx: Func_returnContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_type`. - * @param ctx the parse tree - */ - enterFunc_type?: (ctx: Func_typeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_type`. - * @param ctx the parse tree - */ - exitFunc_type?: (ctx: Func_typeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.func_arg_with_default`. - * @param ctx the parse tree - */ - enterFunc_arg_with_default?: (ctx: Func_arg_with_defaultContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.func_arg_with_default`. - * @param ctx the parse tree - */ - exitFunc_arg_with_default?: (ctx: Func_arg_with_defaultContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.aggr_arg`. - * @param ctx the parse tree - */ - enterAggr_arg?: (ctx: Aggr_argContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.aggr_arg`. - * @param ctx the parse tree - */ - exitAggr_arg?: (ctx: Aggr_argContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.aggr_args`. - * @param ctx the parse tree - */ - enterAggr_args?: (ctx: Aggr_argsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.aggr_args`. - * @param ctx the parse tree - */ - exitAggr_args?: (ctx: Aggr_argsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.aggr_args_list`. - * @param ctx the parse tree - */ - enterAggr_args_list?: (ctx: Aggr_args_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.aggr_args_list`. - * @param ctx the parse tree - */ - exitAggr_args_list?: (ctx: Aggr_args_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes`. - * @param ctx the parse tree - */ - enterAggregate_with_argtypes?: (ctx: Aggregate_with_argtypesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes`. - * @param ctx the parse tree - */ - exitAggregate_with_argtypes?: (ctx: Aggregate_with_argtypesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes_list`. - * @param ctx the parse tree - */ - enterAggregate_with_argtypes_list?: (ctx: Aggregate_with_argtypes_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes_list`. - * @param ctx the parse tree - */ - exitAggregate_with_argtypes_list?: (ctx: Aggregate_with_argtypes_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createfunc_opt_list`. - * @param ctx the parse tree - */ - enterCreatefunc_opt_list?: (ctx: Createfunc_opt_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createfunc_opt_list`. - * @param ctx the parse tree - */ - exitCreatefunc_opt_list?: (ctx: Createfunc_opt_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.common_func_opt_item`. - * @param ctx the parse tree - */ - enterCommon_func_opt_item?: (ctx: Common_func_opt_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.common_func_opt_item`. - * @param ctx the parse tree - */ - exitCommon_func_opt_item?: (ctx: Common_func_opt_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createfunc_opt_item`. - * @param ctx the parse tree - */ - enterCreatefunc_opt_item?: (ctx: Createfunc_opt_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createfunc_opt_item`. - * @param ctx the parse tree - */ - exitCreatefunc_opt_item?: (ctx: Createfunc_opt_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transform_type_list`. - * @param ctx the parse tree - */ - enterTransform_type_list?: (ctx: Transform_type_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transform_type_list`. - * @param ctx the parse tree - */ - exitTransform_type_list?: (ctx: Transform_type_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_definition`. - * @param ctx the parse tree - */ - enterOpt_definition?: (ctx: Opt_definitionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_definition`. - * @param ctx the parse tree - */ - exitOpt_definition?: (ctx: Opt_definitionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.table_func_column`. - * @param ctx the parse tree - */ - enterTable_func_column?: (ctx: Table_func_columnContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.table_func_column`. - * @param ctx the parse tree - */ - exitTable_func_column?: (ctx: Table_func_columnContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.table_func_column_list`. - * @param ctx the parse tree - */ - enterTable_func_column_list?: (ctx: Table_func_column_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.table_func_column_list`. - * @param ctx the parse tree - */ - exitTable_func_column_list?: (ctx: Table_func_column_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterfunctionstmt`. - * @param ctx the parse tree - */ - enterAlterfunctionstmt?: (ctx: AlterfunctionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterfunctionstmt`. - * @param ctx the parse tree - */ - exitAlterfunctionstmt?: (ctx: AlterfunctionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterFunctionTypeClause`. - * @param ctx the parse tree - */ - enterAlterFunctionTypeClause?: (ctx: AlterFunctionTypeClauseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterFunctionTypeClause`. - * @param ctx the parse tree - */ - exitAlterFunctionTypeClause?: (ctx: AlterFunctionTypeClauseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterfunc_opt_list`. - * @param ctx the parse tree - */ - enterAlterfunc_opt_list?: (ctx: Alterfunc_opt_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterfunc_opt_list`. - * @param ctx the parse tree - */ - exitAlterfunc_opt_list?: (ctx: Alterfunc_opt_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_restrict`. - * @param ctx the parse tree - */ - enterOpt_restrict?: (ctx: Opt_restrictContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_restrict`. - * @param ctx the parse tree - */ - exitOpt_restrict?: (ctx: Opt_restrictContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.removefuncstmt`. - * @param ctx the parse tree - */ - enterRemovefuncstmt?: (ctx: RemovefuncstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.removefuncstmt`. - * @param ctx the parse tree - */ - exitRemovefuncstmt?: (ctx: RemovefuncstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.removeaggrstmt`. - * @param ctx the parse tree - */ - enterRemoveaggrstmt?: (ctx: RemoveaggrstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.removeaggrstmt`. - * @param ctx the parse tree - */ - exitRemoveaggrstmt?: (ctx: RemoveaggrstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.removeoperstmt`. - * @param ctx the parse tree - */ - enterRemoveoperstmt?: (ctx: RemoveoperstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.removeoperstmt`. - * @param ctx the parse tree - */ - exitRemoveoperstmt?: (ctx: RemoveoperstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.oper_argtypes`. - * @param ctx the parse tree - */ - enterOper_argtypes?: (ctx: Oper_argtypesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.oper_argtypes`. - * @param ctx the parse tree - */ - exitOper_argtypes?: (ctx: Oper_argtypesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.any_operator`. - * @param ctx the parse tree - */ - enterAny_operator?: (ctx: Any_operatorContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.any_operator`. - * @param ctx the parse tree - */ - exitAny_operator?: (ctx: Any_operatorContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.operator_with_argtypes_list`. - * @param ctx the parse tree - */ - enterOperator_with_argtypes_list?: (ctx: Operator_with_argtypes_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.operator_with_argtypes_list`. - * @param ctx the parse tree - */ - exitOperator_with_argtypes_list?: (ctx: Operator_with_argtypes_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.operator_with_argtypes`. - * @param ctx the parse tree - */ - enterOperator_with_argtypes?: (ctx: Operator_with_argtypesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.operator_with_argtypes`. - * @param ctx the parse tree - */ - exitOperator_with_argtypes?: (ctx: Operator_with_argtypesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.dostmt`. - * @param ctx the parse tree - */ - enterDostmt?: (ctx: DostmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.dostmt`. - * @param ctx the parse tree - */ - exitDostmt?: (ctx: DostmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.dostmt_opt_list`. - * @param ctx the parse tree - */ - enterDostmt_opt_list?: (ctx: Dostmt_opt_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.dostmt_opt_list`. - * @param ctx the parse tree - */ - exitDostmt_opt_list?: (ctx: Dostmt_opt_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.dostmt_opt_item`. - * @param ctx the parse tree - */ - enterDostmt_opt_item?: (ctx: Dostmt_opt_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.dostmt_opt_item`. - * @param ctx the parse tree - */ - exitDostmt_opt_item?: (ctx: Dostmt_opt_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createcaststmt`. - * @param ctx the parse tree - */ - enterCreatecaststmt?: (ctx: CreatecaststmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createcaststmt`. - * @param ctx the parse tree - */ - exitCreatecaststmt?: (ctx: CreatecaststmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.cast_context`. - * @param ctx the parse tree - */ - enterCast_context?: (ctx: Cast_contextContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.cast_context`. - * @param ctx the parse tree - */ - exitCast_context?: (ctx: Cast_contextContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_if_exists`. - * @param ctx the parse tree - */ - enterOpt_if_exists?: (ctx: Opt_if_existsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_if_exists`. - * @param ctx the parse tree - */ - exitOpt_if_exists?: (ctx: Opt_if_existsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createtransformstmt`. - * @param ctx the parse tree - */ - enterCreatetransformstmt?: (ctx: CreatetransformstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createtransformstmt`. - * @param ctx the parse tree - */ - exitCreatetransformstmt?: (ctx: CreatetransformstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transform_element_list`. - * @param ctx the parse tree - */ - enterTransform_element_list?: (ctx: Transform_element_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transform_element_list`. - * @param ctx the parse tree - */ - exitTransform_element_list?: (ctx: Transform_element_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reindexstmt`. - * @param ctx the parse tree - */ - enterReindexstmt?: (ctx: ReindexstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reindexstmt`. - * @param ctx the parse tree - */ - exitReindexstmt?: (ctx: ReindexstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reindex_target_type`. - * @param ctx the parse tree - */ - enterReindex_target_type?: (ctx: Reindex_target_typeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reindex_target_type`. - * @param ctx the parse tree - */ - exitReindex_target_type?: (ctx: Reindex_target_typeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reindex_target_multitable`. - * @param ctx the parse tree - */ - enterReindex_target_multitable?: (ctx: Reindex_target_multitableContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reindex_target_multitable`. - * @param ctx the parse tree - */ - exitReindex_target_multitable?: (ctx: Reindex_target_multitableContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reindex_option_list`. - * @param ctx the parse tree - */ - enterReindex_option_list?: (ctx: Reindex_option_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reindex_option_list`. - * @param ctx the parse tree - */ - exitReindex_option_list?: (ctx: Reindex_option_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.reindex_option_elem`. - * @param ctx the parse tree - */ - enterReindex_option_elem?: (ctx: Reindex_option_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.reindex_option_elem`. - * @param ctx the parse tree - */ - exitReindex_option_elem?: (ctx: Reindex_option_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altertblspcstmt`. - * @param ctx the parse tree - */ - enterAltertblspcstmt?: (ctx: AltertblspcstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altertblspcstmt`. - * @param ctx the parse tree - */ - exitAltertblspcstmt?: (ctx: AltertblspcstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.renamestmt`. - * @param ctx the parse tree - */ - enterRenamestmt?: (ctx: RenamestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.renamestmt`. - * @param ctx the parse tree - */ - exitRenamestmt?: (ctx: RenamestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_set_data`. - * @param ctx the parse tree - */ - enterOpt_set_data?: (ctx: Opt_set_dataContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_set_data`. - * @param ctx the parse tree - */ - exitOpt_set_data?: (ctx: Opt_set_dataContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterobjectdependsstmt`. - * @param ctx the parse tree - */ - enterAlterobjectdependsstmt?: (ctx: AlterobjectdependsstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterobjectdependsstmt`. - * @param ctx the parse tree - */ - exitAlterobjectdependsstmt?: (ctx: AlterobjectdependsstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_no`. - * @param ctx the parse tree - */ - enterOpt_no?: (ctx: Opt_noContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_no`. - * @param ctx the parse tree - */ - exitOpt_no?: (ctx: Opt_noContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterobjectschemastmt`. - * @param ctx the parse tree - */ - enterAlterobjectschemastmt?: (ctx: AlterobjectschemastmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterobjectschemastmt`. - * @param ctx the parse tree - */ - exitAlterobjectschemastmt?: (ctx: AlterobjectschemastmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alteroperatorstmt`. - * @param ctx the parse tree - */ - enterAlteroperatorstmt?: (ctx: AlteroperatorstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alteroperatorstmt`. - * @param ctx the parse tree - */ - exitAlteroperatorstmt?: (ctx: AlteroperatorstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.operator_def_list`. - * @param ctx the parse tree - */ - enterOperator_def_list?: (ctx: Operator_def_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.operator_def_list`. - * @param ctx the parse tree - */ - exitOperator_def_list?: (ctx: Operator_def_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.operator_def_elem`. - * @param ctx the parse tree - */ - enterOperator_def_elem?: (ctx: Operator_def_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.operator_def_elem`. - * @param ctx the parse tree - */ - exitOperator_def_elem?: (ctx: Operator_def_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.operator_def_arg`. - * @param ctx the parse tree - */ - enterOperator_def_arg?: (ctx: Operator_def_argContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.operator_def_arg`. - * @param ctx the parse tree - */ - exitOperator_def_arg?: (ctx: Operator_def_argContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altertypestmt`. - * @param ctx the parse tree - */ - enterAltertypestmt?: (ctx: AltertypestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altertypestmt`. - * @param ctx the parse tree - */ - exitAltertypestmt?: (ctx: AltertypestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterownerstmt`. - * @param ctx the parse tree - */ - enterAlterownerstmt?: (ctx: AlterownerstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterownerstmt`. - * @param ctx the parse tree - */ - exitAlterownerstmt?: (ctx: AlterownerstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createpublicationstmt`. - * @param ctx the parse tree - */ - enterCreatepublicationstmt?: (ctx: CreatepublicationstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createpublicationstmt`. - * @param ctx the parse tree - */ - exitCreatepublicationstmt?: (ctx: CreatepublicationstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_publication_for_tables`. - * @param ctx the parse tree - */ - enterOpt_publication_for_tables?: (ctx: Opt_publication_for_tablesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_publication_for_tables`. - * @param ctx the parse tree - */ - exitOpt_publication_for_tables?: (ctx: Opt_publication_for_tablesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.publication_for_tables`. - * @param ctx the parse tree - */ - enterPublication_for_tables?: (ctx: Publication_for_tablesContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.publication_for_tables`. - * @param ctx the parse tree - */ - exitPublication_for_tables?: (ctx: Publication_for_tablesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterpublicationstmt`. - * @param ctx the parse tree - */ - enterAlterpublicationstmt?: (ctx: AlterpublicationstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterpublicationstmt`. - * @param ctx the parse tree - */ - exitAlterpublicationstmt?: (ctx: AlterpublicationstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createsubscriptionstmt`. - * @param ctx the parse tree - */ - enterCreatesubscriptionstmt?: (ctx: CreatesubscriptionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createsubscriptionstmt`. - * @param ctx the parse tree - */ - exitCreatesubscriptionstmt?: (ctx: CreatesubscriptionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.publication_name_list`. - * @param ctx the parse tree - */ - enterPublication_name_list?: (ctx: Publication_name_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.publication_name_list`. - * @param ctx the parse tree - */ - exitPublication_name_list?: (ctx: Publication_name_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.publication_name_item`. - * @param ctx the parse tree - */ - enterPublication_name_item?: (ctx: Publication_name_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.publication_name_item`. - * @param ctx the parse tree - */ - exitPublication_name_item?: (ctx: Publication_name_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altersubscriptionstmt`. - * @param ctx the parse tree - */ - enterAltersubscriptionstmt?: (ctx: AltersubscriptionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altersubscriptionstmt`. - * @param ctx the parse tree - */ - exitAltersubscriptionstmt?: (ctx: AltersubscriptionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.rulestmt`. - * @param ctx the parse tree - */ - enterRulestmt?: (ctx: RulestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.rulestmt`. - * @param ctx the parse tree - */ - exitRulestmt?: (ctx: RulestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.ruleactionlist`. - * @param ctx the parse tree - */ - enterRuleactionlist?: (ctx: RuleactionlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.ruleactionlist`. - * @param ctx the parse tree - */ - exitRuleactionlist?: (ctx: RuleactionlistContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.ruleactionmulti`. - * @param ctx the parse tree - */ - enterRuleactionmulti?: (ctx: RuleactionmultiContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.ruleactionmulti`. - * @param ctx the parse tree - */ - exitRuleactionmulti?: (ctx: RuleactionmultiContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.ruleactionstmt`. - * @param ctx the parse tree - */ - enterRuleactionstmt?: (ctx: RuleactionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.ruleactionstmt`. - * @param ctx the parse tree - */ - exitRuleactionstmt?: (ctx: RuleactionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.ruleactionstmtOrEmpty`. - * @param ctx the parse tree - */ - enterRuleactionstmtOrEmpty?: (ctx: RuleactionstmtOrEmptyContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.ruleactionstmtOrEmpty`. - * @param ctx the parse tree - */ - exitRuleactionstmtOrEmpty?: (ctx: RuleactionstmtOrEmptyContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.event`. - * @param ctx the parse tree - */ - enterEvent?: (ctx: EventContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.event`. - * @param ctx the parse tree - */ - exitEvent?: (ctx: EventContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_instead`. - * @param ctx the parse tree - */ - enterOpt_instead?: (ctx: Opt_insteadContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_instead`. - * @param ctx the parse tree - */ - exitOpt_instead?: (ctx: Opt_insteadContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.notifystmt`. - * @param ctx the parse tree - */ - enterNotifystmt?: (ctx: NotifystmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.notifystmt`. - * @param ctx the parse tree - */ - exitNotifystmt?: (ctx: NotifystmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.notify_payload`. - * @param ctx the parse tree - */ - enterNotify_payload?: (ctx: Notify_payloadContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.notify_payload`. - * @param ctx the parse tree - */ - exitNotify_payload?: (ctx: Notify_payloadContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.listenstmt`. - * @param ctx the parse tree - */ - enterListenstmt?: (ctx: ListenstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.listenstmt`. - * @param ctx the parse tree - */ - exitListenstmt?: (ctx: ListenstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.unlistenstmt`. - * @param ctx the parse tree - */ - enterUnlistenstmt?: (ctx: UnlistenstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.unlistenstmt`. - * @param ctx the parse tree - */ - exitUnlistenstmt?: (ctx: UnlistenstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transactionstmt`. - * @param ctx the parse tree - */ - enterTransactionstmt?: (ctx: TransactionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transactionstmt`. - * @param ctx the parse tree - */ - exitTransactionstmt?: (ctx: TransactionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_transaction`. - * @param ctx the parse tree - */ - enterOpt_transaction?: (ctx: Opt_transactionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_transaction`. - * @param ctx the parse tree - */ - exitOpt_transaction?: (ctx: Opt_transactionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transaction_mode_item`. - * @param ctx the parse tree - */ - enterTransaction_mode_item?: (ctx: Transaction_mode_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transaction_mode_item`. - * @param ctx the parse tree - */ - exitTransaction_mode_item?: (ctx: Transaction_mode_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transaction_mode_list`. - * @param ctx the parse tree - */ - enterTransaction_mode_list?: (ctx: Transaction_mode_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transaction_mode_list`. - * @param ctx the parse tree - */ - exitTransaction_mode_list?: (ctx: Transaction_mode_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.transaction_mode_list_or_empty`. - * @param ctx the parse tree - */ - enterTransaction_mode_list_or_empty?: (ctx: Transaction_mode_list_or_emptyContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.transaction_mode_list_or_empty`. - * @param ctx the parse tree - */ - exitTransaction_mode_list_or_empty?: (ctx: Transaction_mode_list_or_emptyContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_transaction_chain`. - * @param ctx the parse tree - */ - enterOpt_transaction_chain?: (ctx: Opt_transaction_chainContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_transaction_chain`. - * @param ctx the parse tree - */ - exitOpt_transaction_chain?: (ctx: Opt_transaction_chainContext) => void; - /** - * Enter a parse tree produced by the `createView` - * labeled alternative in `PostgreSqlParser.viewstmt`. - * @param ctx the parse tree - */ - enterCreateView?: (ctx: CreateViewContext) => void; - /** - * Exit a parse tree produced by the `createView` - * labeled alternative in `PostgreSqlParser.viewstmt`. - * @param ctx the parse tree - */ - exitCreateView?: (ctx: CreateViewContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_check_option`. - * @param ctx the parse tree - */ - enterOpt_check_option?: (ctx: Opt_check_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_check_option`. - * @param ctx the parse tree - */ - exitOpt_check_option?: (ctx: Opt_check_optionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.loadstmt`. - * @param ctx the parse tree - */ - enterLoadstmt?: (ctx: LoadstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.loadstmt`. - * @param ctx the parse tree - */ - exitLoadstmt?: (ctx: LoadstmtContext) => void; - /** - * Enter a parse tree produced by the `createDatabase` - * labeled alternative in `PostgreSqlParser.createdbstmt`. - * @param ctx the parse tree - */ - enterCreateDatabase?: (ctx: CreateDatabaseContext) => void; - /** - * Exit a parse tree produced by the `createDatabase` - * labeled alternative in `PostgreSqlParser.createdbstmt`. - * @param ctx the parse tree - */ - exitCreateDatabase?: (ctx: CreateDatabaseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createdb_opt_list`. - * @param ctx the parse tree - */ - enterCreatedb_opt_list?: (ctx: Createdb_opt_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createdb_opt_list`. - * @param ctx the parse tree - */ - exitCreatedb_opt_list?: (ctx: Createdb_opt_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createdb_opt_items`. - * @param ctx the parse tree - */ - enterCreatedb_opt_items?: (ctx: Createdb_opt_itemsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createdb_opt_items`. - * @param ctx the parse tree - */ - exitCreatedb_opt_items?: (ctx: Createdb_opt_itemsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createdb_opt_item`. - * @param ctx the parse tree - */ - enterCreatedb_opt_item?: (ctx: Createdb_opt_itemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createdb_opt_item`. - * @param ctx the parse tree - */ - exitCreatedb_opt_item?: (ctx: Createdb_opt_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createdb_opt_name`. - * @param ctx the parse tree - */ - enterCreatedb_opt_name?: (ctx: Createdb_opt_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createdb_opt_name`. - * @param ctx the parse tree - */ - exitCreatedb_opt_name?: (ctx: Createdb_opt_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_equal`. - * @param ctx the parse tree - */ - enterOpt_equal?: (ctx: Opt_equalContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_equal`. - * @param ctx the parse tree - */ - exitOpt_equal?: (ctx: Opt_equalContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterdatabasestmt`. - * @param ctx the parse tree - */ - enterAlterdatabasestmt?: (ctx: AlterdatabasestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterdatabasestmt`. - * @param ctx the parse tree - */ - exitAlterdatabasestmt?: (ctx: AlterdatabasestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterdatabasesetstmt`. - * @param ctx the parse tree - */ - enterAlterdatabasesetstmt?: (ctx: AlterdatabasesetstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterdatabasesetstmt`. - * @param ctx the parse tree - */ - exitAlterdatabasesetstmt?: (ctx: AlterdatabasesetstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.drop_option_list`. - * @param ctx the parse tree - */ - enterDrop_option_list?: (ctx: Drop_option_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.drop_option_list`. - * @param ctx the parse tree - */ - exitDrop_option_list?: (ctx: Drop_option_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.drop_option`. - * @param ctx the parse tree - */ - enterDrop_option?: (ctx: Drop_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.drop_option`. - * @param ctx the parse tree - */ - exitDrop_option?: (ctx: Drop_optionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altercollationstmt`. - * @param ctx the parse tree - */ - enterAltercollationstmt?: (ctx: AltercollationstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altercollationstmt`. - * @param ctx the parse tree - */ - exitAltercollationstmt?: (ctx: AltercollationstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altersystemstmt`. - * @param ctx the parse tree - */ - enterAltersystemstmt?: (ctx: AltersystemstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altersystemstmt`. - * @param ctx the parse tree - */ - exitAltersystemstmt?: (ctx: AltersystemstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createdomainstmt`. - * @param ctx the parse tree - */ - enterCreatedomainstmt?: (ctx: CreatedomainstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createdomainstmt`. - * @param ctx the parse tree - */ - exitCreatedomainstmt?: (ctx: CreatedomainstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.alterdomainstmt`. - * @param ctx the parse tree - */ - enterAlterdomainstmt?: (ctx: AlterdomainstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.alterdomainstmt`. - * @param ctx the parse tree - */ - exitAlterdomainstmt?: (ctx: AlterdomainstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_as`. - * @param ctx the parse tree - */ - enterOpt_as?: (ctx: Opt_asContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_as`. - * @param ctx the parse tree - */ - exitOpt_as?: (ctx: Opt_asContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altertsdictionarystmt`. - * @param ctx the parse tree - */ - enterAltertsdictionarystmt?: (ctx: AltertsdictionarystmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altertsdictionarystmt`. - * @param ctx the parse tree - */ - exitAltertsdictionarystmt?: (ctx: AltertsdictionarystmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.altertsconfigurationstmt`. - * @param ctx the parse tree - */ - enterAltertsconfigurationstmt?: (ctx: AltertsconfigurationstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.altertsconfigurationstmt`. - * @param ctx the parse tree - */ - exitAltertsconfigurationstmt?: (ctx: AltertsconfigurationstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.any_with`. - * @param ctx the parse tree - */ - enterAny_with?: (ctx: Any_withContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.any_with`. - * @param ctx the parse tree - */ - exitAny_with?: (ctx: Any_withContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.createconversionstmt`. - * @param ctx the parse tree - */ - enterCreateconversionstmt?: (ctx: CreateconversionstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.createconversionstmt`. - * @param ctx the parse tree - */ - exitCreateconversionstmt?: (ctx: CreateconversionstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.clusterstmt`. - * @param ctx the parse tree - */ - enterClusterstmt?: (ctx: ClusterstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.clusterstmt`. - * @param ctx the parse tree - */ - exitClusterstmt?: (ctx: ClusterstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_verbose_list`. - * @param ctx the parse tree - */ - enterOpt_verbose_list?: (ctx: Opt_verbose_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_verbose_list`. - * @param ctx the parse tree - */ - exitOpt_verbose_list?: (ctx: Opt_verbose_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.cluster_index_specification`. - * @param ctx the parse tree - */ - enterCluster_index_specification?: (ctx: Cluster_index_specificationContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.cluster_index_specification`. - * @param ctx the parse tree - */ - exitCluster_index_specification?: (ctx: Cluster_index_specificationContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vacuumstmt`. - * @param ctx the parse tree - */ - enterVacuumstmt?: (ctx: VacuumstmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vacuumstmt`. - * @param ctx the parse tree - */ - exitVacuumstmt?: (ctx: VacuumstmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.analyzestmt`. - * @param ctx the parse tree - */ - enterAnalyzestmt?: (ctx: AnalyzestmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.analyzestmt`. - * @param ctx the parse tree - */ - exitAnalyzestmt?: (ctx: AnalyzestmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vac_analyze_option_list`. - * @param ctx the parse tree - */ - enterVac_analyze_option_list?: (ctx: Vac_analyze_option_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vac_analyze_option_list`. - * @param ctx the parse tree - */ - exitVac_analyze_option_list?: (ctx: Vac_analyze_option_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.analyze_keyword`. - * @param ctx the parse tree - */ - enterAnalyze_keyword?: (ctx: Analyze_keywordContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.analyze_keyword`. - * @param ctx the parse tree - */ - exitAnalyze_keyword?: (ctx: Analyze_keywordContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vac_analyze_option_elem`. - * @param ctx the parse tree - */ - enterVac_analyze_option_elem?: (ctx: Vac_analyze_option_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vac_analyze_option_elem`. - * @param ctx the parse tree - */ - exitVac_analyze_option_elem?: (ctx: Vac_analyze_option_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vac_analyze_option_name`. - * @param ctx the parse tree - */ - enterVac_analyze_option_name?: (ctx: Vac_analyze_option_nameContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vac_analyze_option_name`. - * @param ctx the parse tree - */ - exitVac_analyze_option_name?: (ctx: Vac_analyze_option_nameContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vac_analyze_option_arg`. - * @param ctx the parse tree - */ - enterVac_analyze_option_arg?: (ctx: Vac_analyze_option_argContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vac_analyze_option_arg`. - * @param ctx the parse tree - */ - exitVac_analyze_option_arg?: (ctx: Vac_analyze_option_argContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_analyze`. - * @param ctx the parse tree - */ - enterOpt_analyze?: (ctx: Opt_analyzeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_analyze`. - * @param ctx the parse tree - */ - exitOpt_analyze?: (ctx: Opt_analyzeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.analyze_options_list`. - * @param ctx the parse tree - */ - enterAnalyze_options_list?: (ctx: Analyze_options_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.analyze_options_list`. - * @param ctx the parse tree - */ - exitAnalyze_options_list?: (ctx: Analyze_options_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.analyze_option_elem`. - * @param ctx the parse tree - */ - enterAnalyze_option_elem?: (ctx: Analyze_option_elemContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.analyze_option_elem`. - * @param ctx the parse tree - */ - exitAnalyze_option_elem?: (ctx: Analyze_option_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_verbose`. - * @param ctx the parse tree - */ - enterOpt_verbose?: (ctx: Opt_verboseContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_verbose`. - * @param ctx the parse tree - */ - exitOpt_verbose?: (ctx: Opt_verboseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_skiplock`. - * @param ctx the parse tree - */ - enterOpt_skiplock?: (ctx: Opt_skiplockContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_skiplock`. - * @param ctx the parse tree - */ - exitOpt_skiplock?: (ctx: Opt_skiplockContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_buffer_usage_limit`. - * @param ctx the parse tree - */ - enterOpt_buffer_usage_limit?: (ctx: Opt_buffer_usage_limitContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_buffer_usage_limit`. - * @param ctx the parse tree - */ - exitOpt_buffer_usage_limit?: (ctx: Opt_buffer_usage_limitContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_full`. - * @param ctx the parse tree - */ - enterOpt_full?: (ctx: Opt_fullContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_full`. - * @param ctx the parse tree - */ - exitOpt_full?: (ctx: Opt_fullContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_freeze`. - * @param ctx the parse tree - */ - enterOpt_freeze?: (ctx: Opt_freezeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_freeze`. - * @param ctx the parse tree - */ - exitOpt_freeze?: (ctx: Opt_freezeContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_name_list`. - * @param ctx the parse tree - */ - enterOpt_name_list?: (ctx: Opt_name_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_name_list`. - * @param ctx the parse tree - */ - exitOpt_name_list?: (ctx: Opt_name_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vacuum_relation`. - * @param ctx the parse tree - */ - enterVacuum_relation?: (ctx: Vacuum_relationContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vacuum_relation`. - * @param ctx the parse tree - */ - exitVacuum_relation?: (ctx: Vacuum_relationContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.vacuum_relation_list`. - * @param ctx the parse tree - */ - enterVacuum_relation_list?: (ctx: Vacuum_relation_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.vacuum_relation_list`. - * @param ctx the parse tree - */ - exitVacuum_relation_list?: (ctx: Vacuum_relation_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_vacuum_relation_list`. - * @param ctx the parse tree - */ - enterOpt_vacuum_relation_list?: (ctx: Opt_vacuum_relation_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_vacuum_relation_list`. - * @param ctx the parse tree - */ - exitOpt_vacuum_relation_list?: (ctx: Opt_vacuum_relation_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.explainstmt`. - * @param ctx the parse tree - */ - enterExplainstmt?: (ctx: ExplainstmtContext) => void; + enterRefreshmatviewstmt?: (ctx: RefreshmatviewstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explainstmt`. + * Exit a parse tree produced by `PostgreSqlParser.refreshmatviewstmt`. * @param ctx the parse tree */ - exitExplainstmt?: (ctx: ExplainstmtContext) => void; + exitRefreshmatviewstmt?: (ctx: RefreshmatviewstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.explainablestmt`. + * Enter a parse tree produced by `PostgreSqlParser.createseqstmt`. * @param ctx the parse tree */ - enterExplainablestmt?: (ctx: ExplainablestmtContext) => void; + enterCreateseqstmt?: (ctx: CreateseqstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explainablestmt`. + * Exit a parse tree produced by `PostgreSqlParser.createseqstmt`. * @param ctx the parse tree */ - exitExplainablestmt?: (ctx: ExplainablestmtContext) => void; + exitCreateseqstmt?: (ctx: CreateseqstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.explain_option_list`. + * Enter a parse tree produced by `PostgreSqlParser.alterseqstmt`. * @param ctx the parse tree */ - enterExplain_option_list?: (ctx: Explain_option_listContext) => void; + enterAlterseqstmt?: (ctx: AlterseqstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explain_option_list`. + * Exit a parse tree produced by `PostgreSqlParser.alterseqstmt`. * @param ctx the parse tree */ - exitExplain_option_list?: (ctx: Explain_option_listContext) => void; + exitAlterseqstmt?: (ctx: AlterseqstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.explain_option_elem`. + * Enter a parse tree produced by `PostgreSqlParser.seqoptelem`. * @param ctx the parse tree */ - enterExplain_option_elem?: (ctx: Explain_option_elemContext) => void; + enterSeqoptelem?: (ctx: SeqoptelemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explain_option_elem`. + * Exit a parse tree produced by `PostgreSqlParser.seqoptelem`. * @param ctx the parse tree */ - exitExplain_option_elem?: (ctx: Explain_option_elemContext) => void; + exitSeqoptelem?: (ctx: SeqoptelemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.explain_option_name`. + * Enter a parse tree produced by `PostgreSqlParser.numericonly`. * @param ctx the parse tree */ - enterExplain_option_name?: (ctx: Explain_option_nameContext) => void; + enterNumericonly?: (ctx: NumericonlyContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explain_option_name`. + * Exit a parse tree produced by `PostgreSqlParser.numericonly`. * @param ctx the parse tree */ - exitExplain_option_name?: (ctx: Explain_option_nameContext) => void; + exitNumericonly?: (ctx: NumericonlyContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.explain_option_arg`. + * Enter a parse tree produced by `PostgreSqlParser.createplangstmt`. * @param ctx the parse tree */ - enterExplain_option_arg?: (ctx: Explain_option_argContext) => void; + enterCreateplangstmt?: (ctx: CreateplangstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explain_option_arg`. + * Exit a parse tree produced by `PostgreSqlParser.createplangstmt`. * @param ctx the parse tree */ - exitExplain_option_arg?: (ctx: Explain_option_argContext) => void; + exitCreateplangstmt?: (ctx: CreateplangstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.preparestmt`. + * Enter a parse tree produced by `PostgreSqlParser.createtablespacestmt`. * @param ctx the parse tree */ - enterPreparestmt?: (ctx: PreparestmtContext) => void; + enterCreatetablespacestmt?: (ctx: CreatetablespacestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.preparestmt`. + * Exit a parse tree produced by `PostgreSqlParser.createtablespacestmt`. * @param ctx the parse tree */ - exitPreparestmt?: (ctx: PreparestmtContext) => void; + exitCreatetablespacestmt?: (ctx: CreatetablespacestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.prep_type_clause`. + * Enter a parse tree produced by `PostgreSqlParser.createextensionstmt`. * @param ctx the parse tree */ - enterPrep_type_clause?: (ctx: Prep_type_clauseContext) => void; + enterCreateextensionstmt?: (ctx: CreateextensionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.prep_type_clause`. + * Exit a parse tree produced by `PostgreSqlParser.createextensionstmt`. * @param ctx the parse tree */ - exitPrep_type_clause?: (ctx: Prep_type_clauseContext) => void; + exitCreateextensionstmt?: (ctx: CreateextensionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.preparablestmt`. + * Enter a parse tree produced by `PostgreSqlParser.alterextensionstmt`. * @param ctx the parse tree */ - enterPreparablestmt?: (ctx: PreparablestmtContext) => void; + enterAlterextensionstmt?: (ctx: AlterextensionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.preparablestmt`. + * Exit a parse tree produced by `PostgreSqlParser.alterextensionstmt`. * @param ctx the parse tree */ - exitPreparablestmt?: (ctx: PreparablestmtContext) => void; + exitAlterextensionstmt?: (ctx: AlterextensionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.executestmt`. + * Enter a parse tree produced by `PostgreSqlParser.alterextensioncontentsstmt`. * @param ctx the parse tree */ - enterExecutestmt?: (ctx: ExecutestmtContext) => void; + enterAlterextensioncontentsstmt?: (ctx: AlterextensioncontentsstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.executestmt`. + * Exit a parse tree produced by `PostgreSqlParser.alterextensioncontentsstmt`. * @param ctx the parse tree */ - exitExecutestmt?: (ctx: ExecutestmtContext) => void; + exitAlterextensioncontentsstmt?: (ctx: AlterextensioncontentsstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.execute_param_clause`. + * Enter a parse tree produced by `PostgreSqlParser.createfdwstmt`. * @param ctx the parse tree */ - enterExecute_param_clause?: (ctx: Execute_param_clauseContext) => void; + enterCreatefdwstmt?: (ctx: CreatefdwstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.execute_param_clause`. + * Exit a parse tree produced by `PostgreSqlParser.createfdwstmt`. * @param ctx the parse tree */ - exitExecute_param_clause?: (ctx: Execute_param_clauseContext) => void; + exitCreatefdwstmt?: (ctx: CreatefdwstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.deallocatestmt`. + * Enter a parse tree produced by `PostgreSqlParser.fdw_option`. * @param ctx the parse tree */ - enterDeallocatestmt?: (ctx: DeallocatestmtContext) => void; + enterFdw_option?: (ctx: Fdw_optionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.deallocatestmt`. + * Exit a parse tree produced by `PostgreSqlParser.fdw_option`. * @param ctx the parse tree */ - exitDeallocatestmt?: (ctx: DeallocatestmtContext) => void; + exitFdw_option?: (ctx: Fdw_optionContext) => void; /** - * Enter a parse tree produced by the `insertStatement` - * labeled alternative in `PostgreSqlParser.insertstmt`. + * Enter a parse tree produced by `PostgreSqlParser.alterfdwstmt`. * @param ctx the parse tree */ - enterInsertStatement?: (ctx: InsertStatementContext) => void; + enterAlterfdwstmt?: (ctx: AlterfdwstmtContext) => void; /** - * Exit a parse tree produced by the `insertStatement` - * labeled alternative in `PostgreSqlParser.insertstmt`. + * Exit a parse tree produced by `PostgreSqlParser.alterfdwstmt`. * @param ctx the parse tree */ - exitInsertStatement?: (ctx: InsertStatementContext) => void; + exitAlterfdwstmt?: (ctx: AlterfdwstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.insert_target`. + * Enter a parse tree produced by `PostgreSqlParser.create_generic_options`. * @param ctx the parse tree */ - enterInsert_target?: (ctx: Insert_targetContext) => void; + enterCreate_generic_options?: (ctx: Create_generic_optionsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.insert_target`. + * Exit a parse tree produced by `PostgreSqlParser.create_generic_options`. * @param ctx the parse tree */ - exitInsert_target?: (ctx: Insert_targetContext) => void; + exitCreate_generic_options?: (ctx: Create_generic_optionsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.insert_rest`. + * Enter a parse tree produced by `PostgreSqlParser.alter_generic_options`. * @param ctx the parse tree */ - enterInsert_rest?: (ctx: Insert_restContext) => void; + enterAlter_generic_options?: (ctx: Alter_generic_optionsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.insert_rest`. + * Exit a parse tree produced by `PostgreSqlParser.alter_generic_options`. * @param ctx the parse tree */ - exitInsert_rest?: (ctx: Insert_restContext) => void; + exitAlter_generic_options?: (ctx: Alter_generic_optionsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.override_kind`. + * Enter a parse tree produced by `PostgreSqlParser.alter_generic_option_elem`. * @param ctx the parse tree */ - enterOverride_kind?: (ctx: Override_kindContext) => void; + enterAlter_generic_option_elem?: (ctx: Alter_generic_option_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.override_kind`. + * Exit a parse tree produced by `PostgreSqlParser.alter_generic_option_elem`. * @param ctx the parse tree */ - exitOverride_kind?: (ctx: Override_kindContext) => void; + exitAlter_generic_option_elem?: (ctx: Alter_generic_option_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.insert_column_list`. + * Enter a parse tree produced by `PostgreSqlParser.generic_option_elem`. * @param ctx the parse tree */ - enterInsert_column_list?: (ctx: Insert_column_listContext) => void; + enterGeneric_option_elem?: (ctx: Generic_option_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.insert_column_list`. + * Exit a parse tree produced by `PostgreSqlParser.generic_option_elem`. * @param ctx the parse tree */ - exitInsert_column_list?: (ctx: Insert_column_listContext) => void; + exitGeneric_option_elem?: (ctx: Generic_option_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.insert_column_item`. + * Enter a parse tree produced by `PostgreSqlParser.createforeignserverstmt`. * @param ctx the parse tree */ - enterInsert_column_item?: (ctx: Insert_column_itemContext) => void; + enterCreateforeignserverstmt?: (ctx: CreateforeignserverstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.insert_column_item`. + * Exit a parse tree produced by `PostgreSqlParser.createforeignserverstmt`. * @param ctx the parse tree */ - exitInsert_column_item?: (ctx: Insert_column_itemContext) => void; + exitCreateforeignserverstmt?: (ctx: CreateforeignserverstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_on_conflict`. + * Enter a parse tree produced by `PostgreSqlParser.foreign_server_version`. * @param ctx the parse tree */ - enterOpt_on_conflict?: (ctx: Opt_on_conflictContext) => void; + enterForeign_server_version?: (ctx: Foreign_server_versionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_on_conflict`. + * Exit a parse tree produced by `PostgreSqlParser.foreign_server_version`. * @param ctx the parse tree */ - exitOpt_on_conflict?: (ctx: Opt_on_conflictContext) => void; + exitForeign_server_version?: (ctx: Foreign_server_versionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_conf_expr`. + * Enter a parse tree produced by `PostgreSqlParser.alterforeignserverstmt`. * @param ctx the parse tree */ - enterOpt_conf_expr?: (ctx: Opt_conf_exprContext) => void; + enterAlterforeignserverstmt?: (ctx: AlterforeignserverstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_conf_expr`. + * Exit a parse tree produced by `PostgreSqlParser.alterforeignserverstmt`. * @param ctx the parse tree */ - exitOpt_conf_expr?: (ctx: Opt_conf_exprContext) => void; + exitAlterforeignserverstmt?: (ctx: AlterforeignserverstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.returning_clause`. + * Enter a parse tree produced by the `createForeignTable` + * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. * @param ctx the parse tree */ - enterReturning_clause?: (ctx: Returning_clauseContext) => void; + enterCreateForeignTable?: (ctx: CreateForeignTableContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.returning_clause`. + * Exit a parse tree produced by the `createForeignTable` + * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. * @param ctx the parse tree */ - exitReturning_clause?: (ctx: Returning_clauseContext) => void; + exitCreateForeignTable?: (ctx: CreateForeignTableContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.deletestmt`. + * Enter a parse tree produced by the `createPartitionForeignTable` + * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. * @param ctx the parse tree */ - enterDeletestmt?: (ctx: DeletestmtContext) => void; + enterCreatePartitionForeignTable?: (ctx: CreatePartitionForeignTableContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.deletestmt`. + * Exit a parse tree produced by the `createPartitionForeignTable` + * labeled alternative in `PostgreSqlParser.createforeigntablestmt`. * @param ctx the parse tree */ - exitDeletestmt?: (ctx: DeletestmtContext) => void; + exitCreatePartitionForeignTable?: (ctx: CreatePartitionForeignTableContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.using_clause`. + * Enter a parse tree produced by `PostgreSqlParser.importforeignschemastmt`. * @param ctx the parse tree */ - enterUsing_clause?: (ctx: Using_clauseContext) => void; + enterImportforeignschemastmt?: (ctx: ImportforeignschemastmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.using_clause`. + * Exit a parse tree produced by `PostgreSqlParser.importforeignschemastmt`. * @param ctx the parse tree */ - exitUsing_clause?: (ctx: Using_clauseContext) => void; + exitImportforeignschemastmt?: (ctx: ImportforeignschemastmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.lockstmt`. + * Enter a parse tree produced by `PostgreSqlParser.createusermappingstmt`. * @param ctx the parse tree */ - enterLockstmt?: (ctx: LockstmtContext) => void; + enterCreateusermappingstmt?: (ctx: CreateusermappingstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.lockstmt`. + * Exit a parse tree produced by `PostgreSqlParser.createusermappingstmt`. * @param ctx the parse tree */ - exitLockstmt?: (ctx: LockstmtContext) => void; + exitCreateusermappingstmt?: (ctx: CreateusermappingstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_lock`. + * Enter a parse tree produced by `PostgreSqlParser.alterusermappingstmt`. * @param ctx the parse tree */ - enterOpt_lock?: (ctx: Opt_lockContext) => void; + enterAlterusermappingstmt?: (ctx: AlterusermappingstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_lock`. + * Exit a parse tree produced by `PostgreSqlParser.alterusermappingstmt`. * @param ctx the parse tree */ - exitOpt_lock?: (ctx: Opt_lockContext) => void; + exitAlterusermappingstmt?: (ctx: AlterusermappingstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.lock_type`. + * Enter a parse tree produced by `PostgreSqlParser.createpolicystmt`. * @param ctx the parse tree */ - enterLock_type?: (ctx: Lock_typeContext) => void; + enterCreatepolicystmt?: (ctx: CreatepolicystmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.lock_type`. + * Exit a parse tree produced by `PostgreSqlParser.createpolicystmt`. * @param ctx the parse tree */ - exitLock_type?: (ctx: Lock_typeContext) => void; + exitCreatepolicystmt?: (ctx: CreatepolicystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_nowait`. + * Enter a parse tree produced by `PostgreSqlParser.alterpolicystmt`. * @param ctx the parse tree */ - enterOpt_nowait?: (ctx: Opt_nowaitContext) => void; + enterAlterpolicystmt?: (ctx: AlterpolicystmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_nowait`. + * Exit a parse tree produced by `PostgreSqlParser.alterpolicystmt`. * @param ctx the parse tree */ - exitOpt_nowait?: (ctx: Opt_nowaitContext) => void; + exitAlterpolicystmt?: (ctx: AlterpolicystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_nowait_or_skip`. + * Enter a parse tree produced by `PostgreSqlParser.alterprocedurestmt`. * @param ctx the parse tree */ - enterOpt_nowait_or_skip?: (ctx: Opt_nowait_or_skipContext) => void; + enterAlterprocedurestmt?: (ctx: AlterprocedurestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_nowait_or_skip`. + * Exit a parse tree produced by `PostgreSqlParser.alterprocedurestmt`. * @param ctx the parse tree */ - exitOpt_nowait_or_skip?: (ctx: Opt_nowait_or_skipContext) => void; + exitAlterprocedurestmt?: (ctx: AlterprocedurestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.updatestmt`. + * Enter a parse tree produced by `PostgreSqlParser.procedure_action`. * @param ctx the parse tree */ - enterUpdatestmt?: (ctx: UpdatestmtContext) => void; + enterProcedure_action?: (ctx: Procedure_actionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.updatestmt`. + * Exit a parse tree produced by `PostgreSqlParser.procedure_action`. * @param ctx the parse tree */ - exitUpdatestmt?: (ctx: UpdatestmtContext) => void; + exitProcedure_action?: (ctx: Procedure_actionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.set_clause_list`. + * Enter a parse tree produced by `PostgreSqlParser.rowsecurityoptionalexpr`. * @param ctx the parse tree */ - enterSet_clause_list?: (ctx: Set_clause_listContext) => void; + enterRowsecurityoptionalexpr?: (ctx: RowsecurityoptionalexprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.set_clause_list`. + * Exit a parse tree produced by `PostgreSqlParser.rowsecurityoptionalexpr`. * @param ctx the parse tree */ - exitSet_clause_list?: (ctx: Set_clause_listContext) => void; + exitRowsecurityoptionalexpr?: (ctx: RowsecurityoptionalexprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.set_clause`. + * Enter a parse tree produced by `PostgreSqlParser.rowsecurityoptionalwithcheck`. * @param ctx the parse tree */ - enterSet_clause?: (ctx: Set_clauseContext) => void; + enterRowsecurityoptionalwithcheck?: (ctx: RowsecurityoptionalwithcheckContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.set_clause`. + * Exit a parse tree produced by `PostgreSqlParser.rowsecurityoptionalwithcheck`. * @param ctx the parse tree */ - exitSet_clause?: (ctx: Set_clauseContext) => void; + exitRowsecurityoptionalwithcheck?: (ctx: RowsecurityoptionalwithcheckContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.set_target`. + * Enter a parse tree produced by `PostgreSqlParser.createamstmt`. * @param ctx the parse tree */ - enterSet_target?: (ctx: Set_targetContext) => void; + enterCreateamstmt?: (ctx: CreateamstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.set_target`. + * Exit a parse tree produced by `PostgreSqlParser.createamstmt`. * @param ctx the parse tree */ - exitSet_target?: (ctx: Set_targetContext) => void; + exitCreateamstmt?: (ctx: CreateamstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.set_target_list`. + * Enter a parse tree produced by `PostgreSqlParser.createtrigstmt`. * @param ctx the parse tree */ - enterSet_target_list?: (ctx: Set_target_listContext) => void; + enterCreatetrigstmt?: (ctx: CreatetrigstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.set_target_list`. + * Exit a parse tree produced by `PostgreSqlParser.createtrigstmt`. * @param ctx the parse tree */ - exitSet_target_list?: (ctx: Set_target_listContext) => void; + exitCreatetrigstmt?: (ctx: CreatetrigstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.declarecursorstmt`. + * Enter a parse tree produced by `PostgreSqlParser.triggeractiontime`. * @param ctx the parse tree */ - enterDeclarecursorstmt?: (ctx: DeclarecursorstmtContext) => void; + enterTriggeractiontime?: (ctx: TriggeractiontimeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.declarecursorstmt`. + * Exit a parse tree produced by `PostgreSqlParser.triggeractiontime`. * @param ctx the parse tree */ - exitDeclarecursorstmt?: (ctx: DeclarecursorstmtContext) => void; + exitTriggeractiontime?: (ctx: TriggeractiontimeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.cursor_name`. + * Enter a parse tree produced by `PostgreSqlParser.triggerevents`. * @param ctx the parse tree */ - enterCursor_name?: (ctx: Cursor_nameContext) => void; + enterTriggerevents?: (ctx: TriggereventsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.cursor_name`. + * Exit a parse tree produced by `PostgreSqlParser.triggerevents`. * @param ctx the parse tree */ - exitCursor_name?: (ctx: Cursor_nameContext) => void; + exitTriggerevents?: (ctx: TriggereventsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.cursor_options`. + * Enter a parse tree produced by `PostgreSqlParser.triggeroneevent`. * @param ctx the parse tree */ - enterCursor_options?: (ctx: Cursor_optionsContext) => void; + enterTriggeroneevent?: (ctx: TriggeroneeventContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.cursor_options`. + * Exit a parse tree produced by `PostgreSqlParser.triggeroneevent`. * @param ctx the parse tree */ - exitCursor_options?: (ctx: Cursor_optionsContext) => void; + exitTriggeroneevent?: (ctx: TriggeroneeventContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_hold`. + * Enter a parse tree produced by `PostgreSqlParser.triggerwhen`. * @param ctx the parse tree */ - enterOpt_hold?: (ctx: Opt_holdContext) => void; + enterTriggerwhen?: (ctx: TriggerwhenContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_hold`. + * Exit a parse tree produced by `PostgreSqlParser.triggerwhen`. * @param ctx the parse tree */ - exitOpt_hold?: (ctx: Opt_holdContext) => void; + exitTriggerwhen?: (ctx: TriggerwhenContext) => void; /** - * Enter a parse tree produced by the `selectStatement` - * labeled alternative in `PostgreSqlParser.selectstmt`. + * Enter a parse tree produced by `PostgreSqlParser.function_or_procedure`. * @param ctx the parse tree */ - enterSelectStatement?: (ctx: SelectStatementContext) => void; + enterFunction_or_procedure?: (ctx: Function_or_procedureContext) => void; /** - * Exit a parse tree produced by the `selectStatement` - * labeled alternative in `PostgreSqlParser.selectstmt`. + * Exit a parse tree produced by `PostgreSqlParser.function_or_procedure`. * @param ctx the parse tree */ - exitSelectStatement?: (ctx: SelectStatementContext) => void; + exitFunction_or_procedure?: (ctx: Function_or_procedureContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_with_parens`. + * Enter a parse tree produced by `PostgreSqlParser.triggerfuncargs`. * @param ctx the parse tree */ - enterSelect_with_parens?: (ctx: Select_with_parensContext) => void; + enterTriggerfuncargs?: (ctx: TriggerfuncargsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_with_parens`. + * Exit a parse tree produced by `PostgreSqlParser.triggerfuncargs`. * @param ctx the parse tree */ - exitSelect_with_parens?: (ctx: Select_with_parensContext) => void; + exitTriggerfuncargs?: (ctx: TriggerfuncargsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_no_parens`. + * Enter a parse tree produced by `PostgreSqlParser.triggerfuncarg`. * @param ctx the parse tree */ - enterSelect_no_parens?: (ctx: Select_no_parensContext) => void; + enterTriggerfuncarg?: (ctx: TriggerfuncargContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_no_parens`. + * Exit a parse tree produced by `PostgreSqlParser.triggerfuncarg`. * @param ctx the parse tree */ - exitSelect_no_parens?: (ctx: Select_no_parensContext) => void; + exitTriggerfuncarg?: (ctx: TriggerfuncargContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_clause`. + * Enter a parse tree produced by `PostgreSqlParser.constraintattributeElem`. * @param ctx the parse tree */ - enterSelect_clause?: (ctx: Select_clauseContext) => void; + enterConstraintattributeElem?: (ctx: ConstraintattributeElemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_clause`. + * Exit a parse tree produced by `PostgreSqlParser.constraintattributeElem`. * @param ctx the parse tree */ - exitSelect_clause?: (ctx: Select_clauseContext) => void; + exitConstraintattributeElem?: (ctx: ConstraintattributeElemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.simple_select`. + * Enter a parse tree produced by `PostgreSqlParser.createeventtrigstmt`. * @param ctx the parse tree */ - enterSimple_select?: (ctx: Simple_selectContext) => void; + enterCreateeventtrigstmt?: (ctx: CreateeventtrigstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.simple_select`. + * Exit a parse tree produced by `PostgreSqlParser.createeventtrigstmt`. * @param ctx the parse tree */ - exitSimple_select?: (ctx: Simple_selectContext) => void; + exitCreateeventtrigstmt?: (ctx: CreateeventtrigstmtContext) => void; /** - * Enter a parse tree produced by the `union` - * labeled alternative in `PostgreSqlParser.set_operator`. + * Enter a parse tree produced by `PostgreSqlParser.event_trigger_when_item`. * @param ctx the parse tree */ - enterUnion?: (ctx: UnionContext) => void; + enterEvent_trigger_when_item?: (ctx: Event_trigger_when_itemContext) => void; /** - * Exit a parse tree produced by the `union` - * labeled alternative in `PostgreSqlParser.set_operator`. + * Exit a parse tree produced by `PostgreSqlParser.event_trigger_when_item`. * @param ctx the parse tree */ - exitUnion?: (ctx: UnionContext) => void; + exitEvent_trigger_when_item?: (ctx: Event_trigger_when_itemContext) => void; /** - * Enter a parse tree produced by the `intersect` - * labeled alternative in `PostgreSqlParser.set_operator`. + * Enter a parse tree produced by `PostgreSqlParser.altereventtrigstmt`. * @param ctx the parse tree */ - enterIntersect?: (ctx: IntersectContext) => void; + enterAltereventtrigstmt?: (ctx: AltereventtrigstmtContext) => void; /** - * Exit a parse tree produced by the `intersect` - * labeled alternative in `PostgreSqlParser.set_operator`. + * Exit a parse tree produced by `PostgreSqlParser.altereventtrigstmt`. * @param ctx the parse tree */ - exitIntersect?: (ctx: IntersectContext) => void; + exitAltereventtrigstmt?: (ctx: AltereventtrigstmtContext) => void; /** - * Enter a parse tree produced by the `except` - * labeled alternative in `PostgreSqlParser.set_operator`. + * Enter a parse tree produced by `PostgreSqlParser.createassertionstmt`. * @param ctx the parse tree */ - enterExcept?: (ctx: ExceptContext) => void; + enterCreateassertionstmt?: (ctx: CreateassertionstmtContext) => void; /** - * Exit a parse tree produced by the `except` - * labeled alternative in `PostgreSqlParser.set_operator`. + * Exit a parse tree produced by `PostgreSqlParser.createassertionstmt`. * @param ctx the parse tree */ - exitExcept?: (ctx: ExceptContext) => void; + exitCreateassertionstmt?: (ctx: CreateassertionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.set_operator_with_all_or_distinct`. + * Enter a parse tree produced by `PostgreSqlParser.definestmt`. * @param ctx the parse tree */ - enterSet_operator_with_all_or_distinct?: (ctx: Set_operator_with_all_or_distinctContext) => void; + enterDefinestmt?: (ctx: DefinestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.set_operator_with_all_or_distinct`. + * Exit a parse tree produced by `PostgreSqlParser.definestmt`. * @param ctx the parse tree */ - exitSet_operator_with_all_or_distinct?: (ctx: Set_operator_with_all_or_distinctContext) => void; + exitDefinestmt?: (ctx: DefinestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.with_clause`. + * Enter a parse tree produced by `PostgreSqlParser.definition`. * @param ctx the parse tree */ - enterWith_clause?: (ctx: With_clauseContext) => void; + enterDefinition?: (ctx: DefinitionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.with_clause`. + * Exit a parse tree produced by `PostgreSqlParser.definition`. * @param ctx the parse tree */ - exitWith_clause?: (ctx: With_clauseContext) => void; + exitDefinition?: (ctx: DefinitionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.cte_list`. + * Enter a parse tree produced by `PostgreSqlParser.def_elem`. * @param ctx the parse tree */ - enterCte_list?: (ctx: Cte_listContext) => void; + enterDef_elem?: (ctx: Def_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.cte_list`. + * Exit a parse tree produced by `PostgreSqlParser.def_elem`. * @param ctx the parse tree */ - exitCte_list?: (ctx: Cte_listContext) => void; + exitDef_elem?: (ctx: Def_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.common_table_expr`. + * Enter a parse tree produced by `PostgreSqlParser.def_arg`. * @param ctx the parse tree */ - enterCommon_table_expr?: (ctx: Common_table_exprContext) => void; + enterDef_arg?: (ctx: Def_argContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.common_table_expr`. + * Exit a parse tree produced by `PostgreSqlParser.def_arg`. * @param ctx the parse tree */ - exitCommon_table_expr?: (ctx: Common_table_exprContext) => void; + exitDef_arg?: (ctx: Def_argContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.search_cluase`. + * Enter a parse tree produced by `PostgreSqlParser.old_aggr_elem`. * @param ctx the parse tree */ - enterSearch_cluase?: (ctx: Search_cluaseContext) => void; + enterOld_aggr_elem?: (ctx: Old_aggr_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.search_cluase`. + * Exit a parse tree produced by `PostgreSqlParser.old_aggr_elem`. * @param ctx the parse tree */ - exitSearch_cluase?: (ctx: Search_cluaseContext) => void; + exitOld_aggr_elem?: (ctx: Old_aggr_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.cycle_cluase`. + * Enter a parse tree produced by `PostgreSqlParser.alterenumstmt`. * @param ctx the parse tree */ - enterCycle_cluase?: (ctx: Cycle_cluaseContext) => void; + enterAlterenumstmt?: (ctx: AlterenumstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.cycle_cluase`. + * Exit a parse tree produced by `PostgreSqlParser.alterenumstmt`. * @param ctx the parse tree */ - exitCycle_cluase?: (ctx: Cycle_cluaseContext) => void; + exitAlterenumstmt?: (ctx: AlterenumstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_materialized`. + * Enter a parse tree produced by `PostgreSqlParser.opt_if_not_exists`. * @param ctx the parse tree */ - enterOpt_materialized?: (ctx: Opt_materializedContext) => void; + enterOpt_if_not_exists?: (ctx: Opt_if_not_existsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_materialized`. + * Exit a parse tree produced by `PostgreSqlParser.opt_if_not_exists`. * @param ctx the parse tree */ - exitOpt_materialized?: (ctx: Opt_materializedContext) => void; + exitOpt_if_not_exists?: (ctx: Opt_if_not_existsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_with_clause`. + * Enter a parse tree produced by `PostgreSqlParser.createopclassstmt`. * @param ctx the parse tree */ - enterOpt_with_clause?: (ctx: Opt_with_clauseContext) => void; + enterCreateopclassstmt?: (ctx: CreateopclassstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_with_clause`. + * Exit a parse tree produced by `PostgreSqlParser.createopclassstmt`. * @param ctx the parse tree */ - exitOpt_with_clause?: (ctx: Opt_with_clauseContext) => void; + exitCreateopclassstmt?: (ctx: CreateopclassstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.into_clause`. + * Enter a parse tree produced by `PostgreSqlParser.opclass_item`. * @param ctx the parse tree */ - enterInto_clause?: (ctx: Into_clauseContext) => void; + enterOpclass_item?: (ctx: Opclass_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.into_clause`. + * Exit a parse tree produced by `PostgreSqlParser.opclass_item`. * @param ctx the parse tree */ - exitInto_clause?: (ctx: Into_clauseContext) => void; + exitOpclass_item?: (ctx: Opclass_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_strict`. + * Enter a parse tree produced by `PostgreSqlParser.createopfamilystmt`. * @param ctx the parse tree */ - enterOpt_strict?: (ctx: Opt_strictContext) => void; + enterCreateopfamilystmt?: (ctx: CreateopfamilystmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_strict`. + * Exit a parse tree produced by `PostgreSqlParser.createopfamilystmt`. * @param ctx the parse tree */ - exitOpt_strict?: (ctx: Opt_strictContext) => void; + exitCreateopfamilystmt?: (ctx: CreateopfamilystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opttempTableName`. + * Enter a parse tree produced by `PostgreSqlParser.alteropfamilystmt`. * @param ctx the parse tree */ - enterOpttempTableName?: (ctx: OpttempTableNameContext) => void; + enterAlteropfamilystmt?: (ctx: AlteropfamilystmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opttempTableName`. + * Exit a parse tree produced by `PostgreSqlParser.alteropfamilystmt`. * @param ctx the parse tree */ - exitOpttempTableName?: (ctx: OpttempTableNameContext) => void; + exitAlteropfamilystmt?: (ctx: AlteropfamilystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_table`. + * Enter a parse tree produced by `PostgreSqlParser.opclass_drop`. * @param ctx the parse tree */ - enterOpt_table?: (ctx: Opt_tableContext) => void; + enterOpclass_drop?: (ctx: Opclass_dropContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_table`. + * Exit a parse tree produced by `PostgreSqlParser.opclass_drop`. * @param ctx the parse tree */ - exitOpt_table?: (ctx: Opt_tableContext) => void; + exitOpclass_drop?: (ctx: Opclass_dropContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.all_or_distinct`. + * Enter a parse tree produced by `PostgreSqlParser.reassignownedstmt`. * @param ctx the parse tree */ - enterAll_or_distinct?: (ctx: All_or_distinctContext) => void; + enterReassignownedstmt?: (ctx: ReassignownedstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.all_or_distinct`. + * Exit a parse tree produced by `PostgreSqlParser.reassignownedstmt`. * @param ctx the parse tree */ - exitAll_or_distinct?: (ctx: All_or_distinctContext) => void; + exitReassignownedstmt?: (ctx: ReassignownedstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.distinct_clause`. + * Enter a parse tree produced by `PostgreSqlParser.dropstmt`. * @param ctx the parse tree */ - enterDistinct_clause?: (ctx: Distinct_clauseContext) => void; + enterDropstmt?: (ctx: DropstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.distinct_clause`. + * Exit a parse tree produced by `PostgreSqlParser.dropstmt`. * @param ctx the parse tree */ - exitDistinct_clause?: (ctx: Distinct_clauseContext) => void; + exitDropstmt?: (ctx: DropstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_all_clause`. + * Enter a parse tree produced by `PostgreSqlParser.object_type_any_name`. * @param ctx the parse tree */ - enterOpt_all_clause?: (ctx: Opt_all_clauseContext) => void; + enterObject_type_any_name?: (ctx: Object_type_any_nameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_all_clause`. + * Exit a parse tree produced by `PostgreSqlParser.object_type_any_name`. * @param ctx the parse tree */ - exitOpt_all_clause?: (ctx: Opt_all_clauseContext) => void; + exitObject_type_any_name?: (ctx: Object_type_any_nameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_sort_clause`. + * Enter a parse tree produced by `PostgreSqlParser.object_type_name`. * @param ctx the parse tree */ - enterOpt_sort_clause?: (ctx: Opt_sort_clauseContext) => void; + enterObject_type_name?: (ctx: Object_type_nameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_sort_clause`. + * Exit a parse tree produced by `PostgreSqlParser.object_type_name`. * @param ctx the parse tree */ - exitOpt_sort_clause?: (ctx: Opt_sort_clauseContext) => void; + exitObject_type_name?: (ctx: Object_type_nameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.sort_clause`. + * Enter a parse tree produced by `PostgreSqlParser.any_name_list`. * @param ctx the parse tree */ - enterSort_clause?: (ctx: Sort_clauseContext) => void; + enterAny_name_list?: (ctx: Any_name_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.sort_clause`. + * Exit a parse tree produced by `PostgreSqlParser.any_name_list`. * @param ctx the parse tree */ - exitSort_clause?: (ctx: Sort_clauseContext) => void; + exitAny_name_list?: (ctx: Any_name_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.sortby_list`. + * Enter a parse tree produced by `PostgreSqlParser.any_name`. * @param ctx the parse tree */ - enterSortby_list?: (ctx: Sortby_listContext) => void; + enterAny_name?: (ctx: Any_nameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.sortby_list`. + * Exit a parse tree produced by `PostgreSqlParser.any_name`. * @param ctx the parse tree */ - exitSortby_list?: (ctx: Sortby_listContext) => void; + exitAny_name?: (ctx: Any_nameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.sortby`. + * Enter a parse tree produced by `PostgreSqlParser.attrs`. * @param ctx the parse tree */ - enterSortby?: (ctx: SortbyContext) => void; + enterAttrs?: (ctx: AttrsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.sortby`. + * Exit a parse tree produced by `PostgreSqlParser.attrs`. * @param ctx the parse tree */ - exitSortby?: (ctx: SortbyContext) => void; + exitAttrs?: (ctx: AttrsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_limit`. + * Enter a parse tree produced by `PostgreSqlParser.truncatestmt`. * @param ctx the parse tree */ - enterSelect_limit?: (ctx: Select_limitContext) => void; + enterTruncatestmt?: (ctx: TruncatestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_limit`. + * Exit a parse tree produced by `PostgreSqlParser.truncatestmt`. * @param ctx the parse tree */ - exitSelect_limit?: (ctx: Select_limitContext) => void; + exitTruncatestmt?: (ctx: TruncatestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_select_limit`. + * Enter a parse tree produced by `PostgreSqlParser.truncate_table`. * @param ctx the parse tree */ - enterOpt_select_limit?: (ctx: Opt_select_limitContext) => void; + enterTruncate_table?: (ctx: Truncate_tableContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_select_limit`. + * Exit a parse tree produced by `PostgreSqlParser.truncate_table`. * @param ctx the parse tree */ - exitOpt_select_limit?: (ctx: Opt_select_limitContext) => void; + exitTruncate_table?: (ctx: Truncate_tableContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.limit_clause`. + * Enter a parse tree produced by `PostgreSqlParser.commentstmt`. * @param ctx the parse tree */ - enterLimit_clause?: (ctx: Limit_clauseContext) => void; + enterCommentstmt?: (ctx: CommentstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.limit_clause`. + * Exit a parse tree produced by `PostgreSqlParser.commentstmt`. * @param ctx the parse tree */ - exitLimit_clause?: (ctx: Limit_clauseContext) => void; + exitCommentstmt?: (ctx: CommentstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.fetch_clause`. + * Enter a parse tree produced by `PostgreSqlParser.seclabelstmt`. * @param ctx the parse tree */ - enterFetch_clause?: (ctx: Fetch_clauseContext) => void; + enterSeclabelstmt?: (ctx: SeclabelstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.fetch_clause`. + * Exit a parse tree produced by `PostgreSqlParser.seclabelstmt`. * @param ctx the parse tree */ - exitFetch_clause?: (ctx: Fetch_clauseContext) => void; + exitSeclabelstmt?: (ctx: SeclabelstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.offset_clause`. + * Enter a parse tree produced by `PostgreSqlParser.fetchstmt`. * @param ctx the parse tree */ - enterOffset_clause?: (ctx: Offset_clauseContext) => void; + enterFetchstmt?: (ctx: FetchstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.offset_clause`. + * Exit a parse tree produced by `PostgreSqlParser.fetchstmt`. * @param ctx the parse tree */ - exitOffset_clause?: (ctx: Offset_clauseContext) => void; + exitFetchstmt?: (ctx: FetchstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_limit_value`. + * Enter a parse tree produced by `PostgreSqlParser.fetch_args`. * @param ctx the parse tree */ - enterSelect_limit_value?: (ctx: Select_limit_valueContext) => void; + enterFetch_args?: (ctx: Fetch_argsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_limit_value`. + * Exit a parse tree produced by `PostgreSqlParser.fetch_args`. * @param ctx the parse tree */ - exitSelect_limit_value?: (ctx: Select_limit_valueContext) => void; + exitFetch_args?: (ctx: Fetch_argsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_offset_value`. + * Enter a parse tree produced by `PostgreSqlParser.from_in`. * @param ctx the parse tree */ - enterSelect_offset_value?: (ctx: Select_offset_valueContext) => void; + enterFrom_in?: (ctx: From_inContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_offset_value`. + * Exit a parse tree produced by `PostgreSqlParser.from_in`. * @param ctx the parse tree */ - exitSelect_offset_value?: (ctx: Select_offset_valueContext) => void; + exitFrom_in?: (ctx: From_inContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.select_fetch_first_value`. + * Enter a parse tree produced by `PostgreSqlParser.grantstmt`. * @param ctx the parse tree */ - enterSelect_fetch_first_value?: (ctx: Select_fetch_first_valueContext) => void; + enterGrantstmt?: (ctx: GrantstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.select_fetch_first_value`. + * Exit a parse tree produced by `PostgreSqlParser.grantstmt`. * @param ctx the parse tree */ - exitSelect_fetch_first_value?: (ctx: Select_fetch_first_valueContext) => void; + exitGrantstmt?: (ctx: GrantstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.i_or_f_const`. + * Enter a parse tree produced by `PostgreSqlParser.revokestmt`. * @param ctx the parse tree */ - enterI_or_f_const?: (ctx: I_or_f_constContext) => void; + enterRevokestmt?: (ctx: RevokestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.i_or_f_const`. + * Exit a parse tree produced by `PostgreSqlParser.revokestmt`. * @param ctx the parse tree */ - exitI_or_f_const?: (ctx: I_or_f_constContext) => void; + exitRevokestmt?: (ctx: RevokestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.row_or_rows`. + * Enter a parse tree produced by `PostgreSqlParser.privileges`. * @param ctx the parse tree */ - enterRow_or_rows?: (ctx: Row_or_rowsContext) => void; + enterPrivileges?: (ctx: PrivilegesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.row_or_rows`. + * Exit a parse tree produced by `PostgreSqlParser.privileges`. * @param ctx the parse tree */ - exitRow_or_rows?: (ctx: Row_or_rowsContext) => void; + exitPrivileges?: (ctx: PrivilegesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.first_or_next`. + * Enter a parse tree produced by `PostgreSqlParser.beforeprivilegeselect`. * @param ctx the parse tree */ - enterFirst_or_next?: (ctx: First_or_nextContext) => void; + enterBeforeprivilegeselect?: (ctx: BeforeprivilegeselectContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.first_or_next`. + * Exit a parse tree produced by `PostgreSqlParser.beforeprivilegeselect`. * @param ctx the parse tree */ - exitFirst_or_next?: (ctx: First_or_nextContext) => void; + exitBeforeprivilegeselect?: (ctx: BeforeprivilegeselectContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.group_clause`. + * Enter a parse tree produced by `PostgreSqlParser.privilege`. * @param ctx the parse tree */ - enterGroup_clause?: (ctx: Group_clauseContext) => void; + enterPrivilege?: (ctx: PrivilegeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.group_clause`. + * Exit a parse tree produced by `PostgreSqlParser.privilege`. * @param ctx the parse tree */ - exitGroup_clause?: (ctx: Group_clauseContext) => void; + exitPrivilege?: (ctx: PrivilegeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.group_by_list`. + * Enter a parse tree produced by `PostgreSqlParser.privilege_target`. * @param ctx the parse tree */ - enterGroup_by_list?: (ctx: Group_by_listContext) => void; + enterPrivilege_target?: (ctx: Privilege_targetContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.group_by_list`. + * Exit a parse tree produced by `PostgreSqlParser.privilege_target`. * @param ctx the parse tree */ - exitGroup_by_list?: (ctx: Group_by_listContext) => void; + exitPrivilege_target?: (ctx: Privilege_targetContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.group_by_item`. + * Enter a parse tree produced by `PostgreSqlParser.grantee_list`. * @param ctx the parse tree */ - enterGroup_by_item?: (ctx: Group_by_itemContext) => void; + enterGrantee_list?: (ctx: Grantee_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.group_by_item`. + * Exit a parse tree produced by `PostgreSqlParser.grantee_list`. * @param ctx the parse tree */ - exitGroup_by_item?: (ctx: Group_by_itemContext) => void; + exitGrantee_list?: (ctx: Grantee_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.empty_grouping_set`. + * Enter a parse tree produced by `PostgreSqlParser.grantrolestmt`. * @param ctx the parse tree */ - enterEmpty_grouping_set?: (ctx: Empty_grouping_setContext) => void; + enterGrantrolestmt?: (ctx: GrantrolestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.empty_grouping_set`. + * Exit a parse tree produced by `PostgreSqlParser.grantrolestmt`. * @param ctx the parse tree */ - exitEmpty_grouping_set?: (ctx: Empty_grouping_setContext) => void; + exitGrantrolestmt?: (ctx: GrantrolestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.rollup_clause`. + * Enter a parse tree produced by `PostgreSqlParser.revokerolestmt`. * @param ctx the parse tree */ - enterRollup_clause?: (ctx: Rollup_clauseContext) => void; + enterRevokerolestmt?: (ctx: RevokerolestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.rollup_clause`. + * Exit a parse tree produced by `PostgreSqlParser.revokerolestmt`. * @param ctx the parse tree */ - exitRollup_clause?: (ctx: Rollup_clauseContext) => void; + exitRevokerolestmt?: (ctx: RevokerolestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.cube_clause`. + * Enter a parse tree produced by `PostgreSqlParser.alterdefaultprivilegesstmt`. * @param ctx the parse tree */ - enterCube_clause?: (ctx: Cube_clauseContext) => void; + enterAlterdefaultprivilegesstmt?: (ctx: AlterdefaultprivilegesstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.cube_clause`. + * Exit a parse tree produced by `PostgreSqlParser.alterdefaultprivilegesstmt`. * @param ctx the parse tree */ - exitCube_clause?: (ctx: Cube_clauseContext) => void; + exitAlterdefaultprivilegesstmt?: (ctx: AlterdefaultprivilegesstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.grouping_sets_clause`. + * Enter a parse tree produced by `PostgreSqlParser.defaclaction`. * @param ctx the parse tree */ - enterGrouping_sets_clause?: (ctx: Grouping_sets_clauseContext) => void; + enterDefaclaction?: (ctx: DefaclactionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.grouping_sets_clause`. + * Exit a parse tree produced by `PostgreSqlParser.defaclaction`. * @param ctx the parse tree */ - exitGrouping_sets_clause?: (ctx: Grouping_sets_clauseContext) => void; + exitDefaclaction?: (ctx: DefaclactionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.having_clause`. + * Enter a parse tree produced by `PostgreSqlParser.defacl_privilege_target`. * @param ctx the parse tree */ - enterHaving_clause?: (ctx: Having_clauseContext) => void; + enterDefacl_privilege_target?: (ctx: Defacl_privilege_targetContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.having_clause`. + * Exit a parse tree produced by `PostgreSqlParser.defacl_privilege_target`. * @param ctx the parse tree */ - exitHaving_clause?: (ctx: Having_clauseContext) => void; + exitDefacl_privilege_target?: (ctx: Defacl_privilege_targetContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.for_locking_clause`. + * Enter a parse tree produced by `PostgreSqlParser.indexstmt`. * @param ctx the parse tree */ - enterFor_locking_clause?: (ctx: For_locking_clauseContext) => void; + enterIndexstmt?: (ctx: IndexstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.for_locking_clause`. + * Exit a parse tree produced by `PostgreSqlParser.indexstmt`. * @param ctx the parse tree */ - exitFor_locking_clause?: (ctx: For_locking_clauseContext) => void; + exitIndexstmt?: (ctx: IndexstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_for_locking_clause`. + * Enter a parse tree produced by `PostgreSqlParser.index_params`. * @param ctx the parse tree */ - enterOpt_for_locking_clause?: (ctx: Opt_for_locking_clauseContext) => void; + enterIndex_params?: (ctx: Index_paramsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_for_locking_clause`. + * Exit a parse tree produced by `PostgreSqlParser.index_params`. * @param ctx the parse tree */ - exitOpt_for_locking_clause?: (ctx: Opt_for_locking_clauseContext) => void; + exitIndex_params?: (ctx: Index_paramsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.for_locking_items`. + * Enter a parse tree produced by `PostgreSqlParser.index_elem`. * @param ctx the parse tree */ - enterFor_locking_items?: (ctx: For_locking_itemsContext) => void; + enterIndex_elem?: (ctx: Index_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.for_locking_items`. + * Exit a parse tree produced by `PostgreSqlParser.index_elem`. * @param ctx the parse tree */ - exitFor_locking_items?: (ctx: For_locking_itemsContext) => void; + exitIndex_elem?: (ctx: Index_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.for_locking_item`. + * Enter a parse tree produced by `PostgreSqlParser.createfunctionstmt`. * @param ctx the parse tree */ - enterFor_locking_item?: (ctx: For_locking_itemContext) => void; + enterCreatefunctionstmt?: (ctx: CreatefunctionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.for_locking_item`. + * Exit a parse tree produced by `PostgreSqlParser.createfunctionstmt`. * @param ctx the parse tree */ - exitFor_locking_item?: (ctx: For_locking_itemContext) => void; + exitCreatefunctionstmt?: (ctx: CreatefunctionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.for_locking_strength`. + * Enter a parse tree produced by `PostgreSqlParser.opt_or_replace`. * @param ctx the parse tree */ - enterFor_locking_strength?: (ctx: For_locking_strengthContext) => void; + enterOpt_or_replace?: (ctx: Opt_or_replaceContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.for_locking_strength`. + * Exit a parse tree produced by `PostgreSqlParser.opt_or_replace`. * @param ctx the parse tree */ - exitFor_locking_strength?: (ctx: For_locking_strengthContext) => void; + exitOpt_or_replace?: (ctx: Opt_or_replaceContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.locked_rels_list`. + * Enter a parse tree produced by `PostgreSqlParser.func_args`. * @param ctx the parse tree */ - enterLocked_rels_list?: (ctx: Locked_rels_listContext) => void; + enterFunc_args?: (ctx: Func_argsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.locked_rels_list`. + * Exit a parse tree produced by `PostgreSqlParser.func_args`. * @param ctx the parse tree */ - exitLocked_rels_list?: (ctx: Locked_rels_listContext) => void; + exitFunc_args?: (ctx: Func_argsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.values_clause`. + * Enter a parse tree produced by `PostgreSqlParser.func_args_list`. * @param ctx the parse tree */ - enterValues_clause?: (ctx: Values_clauseContext) => void; + enterFunc_args_list?: (ctx: Func_args_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.values_clause`. + * Exit a parse tree produced by `PostgreSqlParser.func_args_list`. * @param ctx the parse tree */ - exitValues_clause?: (ctx: Values_clauseContext) => void; + exitFunc_args_list?: (ctx: Func_args_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.from_clause`. + * Enter a parse tree produced by `PostgreSqlParser.routine_with_argtypes_list`. * @param ctx the parse tree */ - enterFrom_clause?: (ctx: From_clauseContext) => void; + enterRoutine_with_argtypes_list?: (ctx: Routine_with_argtypes_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.from_clause`. + * Exit a parse tree produced by `PostgreSqlParser.routine_with_argtypes_list`. * @param ctx the parse tree */ - exitFrom_clause?: (ctx: From_clauseContext) => void; + exitRoutine_with_argtypes_list?: (ctx: Routine_with_argtypes_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.from_list`. + * Enter a parse tree produced by `PostgreSqlParser.routine_with_argtypes`. * @param ctx the parse tree */ - enterFrom_list?: (ctx: From_listContext) => void; + enterRoutine_with_argtypes?: (ctx: Routine_with_argtypesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.from_list`. + * Exit a parse tree produced by `PostgreSqlParser.routine_with_argtypes`. * @param ctx the parse tree */ - exitFrom_list?: (ctx: From_listContext) => void; + exitRoutine_with_argtypes?: (ctx: Routine_with_argtypesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.table_ref`. + * Enter a parse tree produced by `PostgreSqlParser.procedure_with_argtypes_list`. * @param ctx the parse tree */ - enterTable_ref?: (ctx: Table_refContext) => void; + enterProcedure_with_argtypes_list?: (ctx: Procedure_with_argtypes_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.table_ref`. + * Exit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes_list`. * @param ctx the parse tree */ - exitTable_ref?: (ctx: Table_refContext) => void; + exitProcedure_with_argtypes_list?: (ctx: Procedure_with_argtypes_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.alias_clause`. + * Enter a parse tree produced by `PostgreSqlParser.procedure_with_argtypes`. * @param ctx the parse tree */ - enterAlias_clause?: (ctx: Alias_clauseContext) => void; + enterProcedure_with_argtypes?: (ctx: Procedure_with_argtypesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.alias_clause`. + * Exit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes`. * @param ctx the parse tree */ - exitAlias_clause?: (ctx: Alias_clauseContext) => void; + exitProcedure_with_argtypes?: (ctx: Procedure_with_argtypesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_alias_clause`. + * Enter a parse tree produced by `PostgreSqlParser.function_with_argtypes_list`. * @param ctx the parse tree */ - enterOpt_alias_clause?: (ctx: Opt_alias_clauseContext) => void; + enterFunction_with_argtypes_list?: (ctx: Function_with_argtypes_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_alias_clause`. + * Exit a parse tree produced by `PostgreSqlParser.function_with_argtypes_list`. * @param ctx the parse tree */ - exitOpt_alias_clause?: (ctx: Opt_alias_clauseContext) => void; + exitFunction_with_argtypes_list?: (ctx: Function_with_argtypes_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_alias_clause`. + * Enter a parse tree produced by `PostgreSqlParser.function_with_argtypes`. * @param ctx the parse tree */ - enterFunc_alias_clause?: (ctx: Func_alias_clauseContext) => void; + enterFunction_with_argtypes?: (ctx: Function_with_argtypesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_alias_clause`. + * Exit a parse tree produced by `PostgreSqlParser.function_with_argtypes`. * @param ctx the parse tree */ - exitFunc_alias_clause?: (ctx: Func_alias_clauseContext) => void; + exitFunction_with_argtypes?: (ctx: Function_with_argtypesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.join_type`. + * Enter a parse tree produced by `PostgreSqlParser.func_arg`. * @param ctx the parse tree */ - enterJoin_type?: (ctx: Join_typeContext) => void; + enterFunc_arg?: (ctx: Func_argContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.join_type`. + * Exit a parse tree produced by `PostgreSqlParser.func_arg`. * @param ctx the parse tree */ - exitJoin_type?: (ctx: Join_typeContext) => void; + exitFunc_arg?: (ctx: Func_argContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.join_qual`. + * Enter a parse tree produced by `PostgreSqlParser.arg_class`. * @param ctx the parse tree */ - enterJoin_qual?: (ctx: Join_qualContext) => void; + enterArg_class?: (ctx: Arg_classContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.join_qual`. + * Exit a parse tree produced by `PostgreSqlParser.arg_class`. * @param ctx the parse tree */ - exitJoin_qual?: (ctx: Join_qualContext) => void; + exitArg_class?: (ctx: Arg_classContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.relation_expr`. + * Enter a parse tree produced by `PostgreSqlParser.func_type`. * @param ctx the parse tree */ - enterRelation_expr?: (ctx: Relation_exprContext) => void; + enterFunc_type?: (ctx: Func_typeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.relation_expr`. + * Exit a parse tree produced by `PostgreSqlParser.func_type`. * @param ctx the parse tree */ - exitRelation_expr?: (ctx: Relation_exprContext) => void; + exitFunc_type?: (ctx: Func_typeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.view_relation_expr`. + * Enter a parse tree produced by `PostgreSqlParser.func_arg_with_default`. * @param ctx the parse tree */ - enterView_relation_expr?: (ctx: View_relation_exprContext) => void; + enterFunc_arg_with_default?: (ctx: Func_arg_with_defaultContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.view_relation_expr`. + * Exit a parse tree produced by `PostgreSqlParser.func_arg_with_default`. * @param ctx the parse tree */ - exitView_relation_expr?: (ctx: View_relation_exprContext) => void; + exitFunc_arg_with_default?: (ctx: Func_arg_with_defaultContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.publication_relation_expr`. + * Enter a parse tree produced by `PostgreSqlParser.aggr_args`. * @param ctx the parse tree */ - enterPublication_relation_expr?: (ctx: Publication_relation_exprContext) => void; + enterAggr_args?: (ctx: Aggr_argsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.publication_relation_expr`. + * Exit a parse tree produced by `PostgreSqlParser.aggr_args`. * @param ctx the parse tree */ - exitPublication_relation_expr?: (ctx: Publication_relation_exprContext) => void; + exitAggr_args?: (ctx: Aggr_argsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.relation_expr_list`. + * Enter a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes`. * @param ctx the parse tree */ - enterRelation_expr_list?: (ctx: Relation_expr_listContext) => void; + enterAggregate_with_argtypes?: (ctx: Aggregate_with_argtypesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.relation_expr_list`. + * Exit a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes`. * @param ctx the parse tree */ - exitRelation_expr_list?: (ctx: Relation_expr_listContext) => void; + exitAggregate_with_argtypes?: (ctx: Aggregate_with_argtypesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.publication_relation_expr_list`. + * Enter a parse tree produced by `PostgreSqlParser.common_func_opt_item`. * @param ctx the parse tree */ - enterPublication_relation_expr_list?: (ctx: Publication_relation_expr_listContext) => void; + enterCommon_func_opt_item?: (ctx: Common_func_opt_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.publication_relation_expr_list`. + * Exit a parse tree produced by `PostgreSqlParser.common_func_opt_item`. * @param ctx the parse tree */ - exitPublication_relation_expr_list?: (ctx: Publication_relation_expr_listContext) => void; + exitCommon_func_opt_item?: (ctx: Common_func_opt_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.relation_expr_opt_alias`. + * Enter a parse tree produced by `PostgreSqlParser.createfunc_opt_item`. * @param ctx the parse tree */ - enterRelation_expr_opt_alias?: (ctx: Relation_expr_opt_aliasContext) => void; + enterCreatefunc_opt_item?: (ctx: Createfunc_opt_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.relation_expr_opt_alias`. + * Exit a parse tree produced by `PostgreSqlParser.createfunc_opt_item`. * @param ctx the parse tree */ - exitRelation_expr_opt_alias?: (ctx: Relation_expr_opt_aliasContext) => void; + exitCreatefunc_opt_item?: (ctx: Createfunc_opt_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.tablesample_clause`. + * Enter a parse tree produced by `PostgreSqlParser.opt_definition`. * @param ctx the parse tree */ - enterTablesample_clause?: (ctx: Tablesample_clauseContext) => void; + enterOpt_definition?: (ctx: Opt_definitionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.tablesample_clause`. + * Exit a parse tree produced by `PostgreSqlParser.opt_definition`. * @param ctx the parse tree */ - exitTablesample_clause?: (ctx: Tablesample_clauseContext) => void; + exitOpt_definition?: (ctx: Opt_definitionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_repeatable_clause`. + * Enter a parse tree produced by `PostgreSqlParser.table_func_column`. * @param ctx the parse tree */ - enterOpt_repeatable_clause?: (ctx: Opt_repeatable_clauseContext) => void; + enterTable_func_column?: (ctx: Table_func_columnContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_repeatable_clause`. + * Exit a parse tree produced by `PostgreSqlParser.table_func_column`. * @param ctx the parse tree */ - exitOpt_repeatable_clause?: (ctx: Opt_repeatable_clauseContext) => void; + exitTable_func_column?: (ctx: Table_func_columnContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_table`. + * Enter a parse tree produced by `PostgreSqlParser.alterfunctionstmt`. * @param ctx the parse tree */ - enterFunc_table?: (ctx: Func_tableContext) => void; + enterAlterfunctionstmt?: (ctx: AlterfunctionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_table`. + * Exit a parse tree produced by `PostgreSqlParser.alterfunctionstmt`. * @param ctx the parse tree */ - exitFunc_table?: (ctx: Func_tableContext) => void; + exitAlterfunctionstmt?: (ctx: AlterfunctionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.rowsfrom_item`. + * Enter a parse tree produced by `PostgreSqlParser.removefuncstmt`. * @param ctx the parse tree */ - enterRowsfrom_item?: (ctx: Rowsfrom_itemContext) => void; + enterRemovefuncstmt?: (ctx: RemovefuncstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.rowsfrom_item`. + * Exit a parse tree produced by `PostgreSqlParser.removefuncstmt`. * @param ctx the parse tree */ - exitRowsfrom_item?: (ctx: Rowsfrom_itemContext) => void; + exitRemovefuncstmt?: (ctx: RemovefuncstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.rowsfrom_list`. + * Enter a parse tree produced by `PostgreSqlParser.removeaggrstmt`. * @param ctx the parse tree */ - enterRowsfrom_list?: (ctx: Rowsfrom_listContext) => void; + enterRemoveaggrstmt?: (ctx: RemoveaggrstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.rowsfrom_list`. + * Exit a parse tree produced by `PostgreSqlParser.removeaggrstmt`. * @param ctx the parse tree */ - exitRowsfrom_list?: (ctx: Rowsfrom_listContext) => void; + exitRemoveaggrstmt?: (ctx: RemoveaggrstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_col_def_list`. + * Enter a parse tree produced by `PostgreSqlParser.removeoperstmt`. * @param ctx the parse tree */ - enterOpt_col_def_list?: (ctx: Opt_col_def_listContext) => void; + enterRemoveoperstmt?: (ctx: RemoveoperstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_col_def_list`. + * Exit a parse tree produced by `PostgreSqlParser.removeoperstmt`. * @param ctx the parse tree */ - exitOpt_col_def_list?: (ctx: Opt_col_def_listContext) => void; + exitRemoveoperstmt?: (ctx: RemoveoperstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_ordinality`. + * Enter a parse tree produced by `PostgreSqlParser.oper_argtypes`. * @param ctx the parse tree */ - enterOpt_ordinality?: (ctx: Opt_ordinalityContext) => void; + enterOper_argtypes?: (ctx: Oper_argtypesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_ordinality`. + * Exit a parse tree produced by `PostgreSqlParser.oper_argtypes`. * @param ctx the parse tree */ - exitOpt_ordinality?: (ctx: Opt_ordinalityContext) => void; + exitOper_argtypes?: (ctx: Oper_argtypesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.where_clause`. + * Enter a parse tree produced by `PostgreSqlParser.any_operator`. * @param ctx the parse tree */ - enterWhere_clause?: (ctx: Where_clauseContext) => void; + enterAny_operator?: (ctx: Any_operatorContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.where_clause`. + * Exit a parse tree produced by `PostgreSqlParser.any_operator`. * @param ctx the parse tree */ - exitWhere_clause?: (ctx: Where_clauseContext) => void; + exitAny_operator?: (ctx: Any_operatorContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.where_or_current_clause`. + * Enter a parse tree produced by `PostgreSqlParser.operator_with_argtypes`. * @param ctx the parse tree */ - enterWhere_or_current_clause?: (ctx: Where_or_current_clauseContext) => void; + enterOperator_with_argtypes?: (ctx: Operator_with_argtypesContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.where_or_current_clause`. + * Exit a parse tree produced by `PostgreSqlParser.operator_with_argtypes`. * @param ctx the parse tree */ - exitWhere_or_current_clause?: (ctx: Where_or_current_clauseContext) => void; + exitOperator_with_argtypes?: (ctx: Operator_with_argtypesContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opttablefuncelementlist`. + * Enter a parse tree produced by `PostgreSqlParser.dostmt`. * @param ctx the parse tree */ - enterOpttablefuncelementlist?: (ctx: OpttablefuncelementlistContext) => void; + enterDostmt?: (ctx: DostmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opttablefuncelementlist`. + * Exit a parse tree produced by `PostgreSqlParser.dostmt`. * @param ctx the parse tree */ - exitOpttablefuncelementlist?: (ctx: OpttablefuncelementlistContext) => void; + exitDostmt?: (ctx: DostmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.tablefuncelementlist`. + * Enter a parse tree produced by `PostgreSqlParser.createcaststmt`. * @param ctx the parse tree */ - enterTablefuncelementlist?: (ctx: TablefuncelementlistContext) => void; + enterCreatecaststmt?: (ctx: CreatecaststmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.tablefuncelementlist`. + * Exit a parse tree produced by `PostgreSqlParser.createcaststmt`. * @param ctx the parse tree */ - exitTablefuncelementlist?: (ctx: TablefuncelementlistContext) => void; + exitCreatecaststmt?: (ctx: CreatecaststmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.tablefuncelement`. + * Enter a parse tree produced by `PostgreSqlParser.opt_if_exists`. * @param ctx the parse tree */ - enterTablefuncelement?: (ctx: TablefuncelementContext) => void; + enterOpt_if_exists?: (ctx: Opt_if_existsContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.tablefuncelement`. + * Exit a parse tree produced by `PostgreSqlParser.opt_if_exists`. * @param ctx the parse tree */ - exitTablefuncelement?: (ctx: TablefuncelementContext) => void; + exitOpt_if_exists?: (ctx: Opt_if_existsContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xmltable`. + * Enter a parse tree produced by `PostgreSqlParser.createtransformstmt`. * @param ctx the parse tree */ - enterXmltable?: (ctx: XmltableContext) => void; + enterCreatetransformstmt?: (ctx: CreatetransformstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xmltable`. + * Exit a parse tree produced by `PostgreSqlParser.createtransformstmt`. * @param ctx the parse tree */ - exitXmltable?: (ctx: XmltableContext) => void; + exitCreatetransformstmt?: (ctx: CreatetransformstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xmltable_column_list`. + * Enter a parse tree produced by `PostgreSqlParser.sql_with_function`. * @param ctx the parse tree */ - enterXmltable_column_list?: (ctx: Xmltable_column_listContext) => void; + enterSql_with_function?: (ctx: Sql_with_functionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xmltable_column_list`. + * Exit a parse tree produced by `PostgreSqlParser.sql_with_function`. * @param ctx the parse tree */ - exitXmltable_column_list?: (ctx: Xmltable_column_listContext) => void; + exitSql_with_function?: (ctx: Sql_with_functionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xmltable_column_el`. + * Enter a parse tree produced by `PostgreSqlParser.reindexstmt`. * @param ctx the parse tree */ - enterXmltable_column_el?: (ctx: Xmltable_column_elContext) => void; + enterReindexstmt?: (ctx: ReindexstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xmltable_column_el`. + * Exit a parse tree produced by `PostgreSqlParser.reindexstmt`. * @param ctx the parse tree */ - exitXmltable_column_el?: (ctx: Xmltable_column_elContext) => void; + exitReindexstmt?: (ctx: ReindexstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xmltable_column_option_list`. + * Enter a parse tree produced by `PostgreSqlParser.altertblspcstmt`. * @param ctx the parse tree */ - enterXmltable_column_option_list?: (ctx: Xmltable_column_option_listContext) => void; + enterAltertblspcstmt?: (ctx: AltertblspcstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xmltable_column_option_list`. + * Exit a parse tree produced by `PostgreSqlParser.altertblspcstmt`. * @param ctx the parse tree */ - exitXmltable_column_option_list?: (ctx: Xmltable_column_option_listContext) => void; + exitAltertblspcstmt?: (ctx: AltertblspcstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xmltable_column_option_el`. + * Enter a parse tree produced by `PostgreSqlParser.renamestmt`. * @param ctx the parse tree */ - enterXmltable_column_option_el?: (ctx: Xmltable_column_option_elContext) => void; + enterRenamestmt?: (ctx: RenamestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xmltable_column_option_el`. + * Exit a parse tree produced by `PostgreSqlParser.renamestmt`. * @param ctx the parse tree */ - exitXmltable_column_option_el?: (ctx: Xmltable_column_option_elContext) => void; + exitRenamestmt?: (ctx: RenamestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_namespace_list`. + * Enter a parse tree produced by `PostgreSqlParser.alterobjectdependsstmt`. * @param ctx the parse tree */ - enterXml_namespace_list?: (ctx: Xml_namespace_listContext) => void; + enterAlterobjectdependsstmt?: (ctx: AlterobjectdependsstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_namespace_list`. + * Exit a parse tree produced by `PostgreSqlParser.alterobjectdependsstmt`. * @param ctx the parse tree */ - exitXml_namespace_list?: (ctx: Xml_namespace_listContext) => void; + exitAlterobjectdependsstmt?: (ctx: AlterobjectdependsstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_namespace_el`. + * Enter a parse tree produced by `PostgreSqlParser.alterobjectschemastmt`. * @param ctx the parse tree */ - enterXml_namespace_el?: (ctx: Xml_namespace_elContext) => void; + enterAlterobjectschemastmt?: (ctx: AlterobjectschemastmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_namespace_el`. + * Exit a parse tree produced by `PostgreSqlParser.alterobjectschemastmt`. * @param ctx the parse tree */ - exitXml_namespace_el?: (ctx: Xml_namespace_elContext) => void; + exitAlterobjectschemastmt?: (ctx: AlterobjectschemastmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.typename`. + * Enter a parse tree produced by `PostgreSqlParser.alteroperatorstmt`. * @param ctx the parse tree */ - enterTypename?: (ctx: TypenameContext) => void; + enterAlteroperatorstmt?: (ctx: AlteroperatorstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.typename`. + * Exit a parse tree produced by `PostgreSqlParser.alteroperatorstmt`. * @param ctx the parse tree */ - exitTypename?: (ctx: TypenameContext) => void; + exitAlteroperatorstmt?: (ctx: AlteroperatorstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_array_bounds`. + * Enter a parse tree produced by `PostgreSqlParser.operator_def_list`. * @param ctx the parse tree */ - enterOpt_array_bounds?: (ctx: Opt_array_boundsContext) => void; + enterOperator_def_list?: (ctx: Operator_def_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_array_bounds`. + * Exit a parse tree produced by `PostgreSqlParser.operator_def_list`. * @param ctx the parse tree */ - exitOpt_array_bounds?: (ctx: Opt_array_boundsContext) => void; + exitOperator_def_list?: (ctx: Operator_def_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.simpletypename`. + * Enter a parse tree produced by `PostgreSqlParser.operator_def_elem`. * @param ctx the parse tree */ - enterSimpletypename?: (ctx: SimpletypenameContext) => void; + enterOperator_def_elem?: (ctx: Operator_def_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.simpletypename`. + * Exit a parse tree produced by `PostgreSqlParser.operator_def_elem`. * @param ctx the parse tree */ - exitSimpletypename?: (ctx: SimpletypenameContext) => void; + exitOperator_def_elem?: (ctx: Operator_def_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.consttypename`. + * Enter a parse tree produced by `PostgreSqlParser.altertypestmt`. * @param ctx the parse tree */ - enterConsttypename?: (ctx: ConsttypenameContext) => void; + enterAltertypestmt?: (ctx: AltertypestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.consttypename`. + * Exit a parse tree produced by `PostgreSqlParser.altertypestmt`. * @param ctx the parse tree */ - exitConsttypename?: (ctx: ConsttypenameContext) => void; + exitAltertypestmt?: (ctx: AltertypestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.generictype`. + * Enter a parse tree produced by `PostgreSqlParser.alterownerstmt`. * @param ctx the parse tree */ - enterGenerictype?: (ctx: GenerictypeContext) => void; + enterAlterownerstmt?: (ctx: AlterownerstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.generictype`. + * Exit a parse tree produced by `PostgreSqlParser.alterownerstmt`. * @param ctx the parse tree */ - exitGenerictype?: (ctx: GenerictypeContext) => void; + exitAlterownerstmt?: (ctx: AlterownerstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_type_modifiers`. + * Enter a parse tree produced by `PostgreSqlParser.createpublicationstmt`. * @param ctx the parse tree */ - enterOpt_type_modifiers?: (ctx: Opt_type_modifiersContext) => void; + enterCreatepublicationstmt?: (ctx: CreatepublicationstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_type_modifiers`. + * Exit a parse tree produced by `PostgreSqlParser.createpublicationstmt`. * @param ctx the parse tree */ - exitOpt_type_modifiers?: (ctx: Opt_type_modifiersContext) => void; + exitCreatepublicationstmt?: (ctx: CreatepublicationstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.numeric`. + * Enter a parse tree produced by `PostgreSqlParser.alterpublicationstmt`. * @param ctx the parse tree */ - enterNumeric?: (ctx: NumericContext) => void; + enterAlterpublicationstmt?: (ctx: AlterpublicationstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.numeric`. + * Exit a parse tree produced by `PostgreSqlParser.alterpublicationstmt`. * @param ctx the parse tree */ - exitNumeric?: (ctx: NumericContext) => void; + exitAlterpublicationstmt?: (ctx: AlterpublicationstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_float`. + * Enter a parse tree produced by `PostgreSqlParser.createsubscriptionstmt`. * @param ctx the parse tree */ - enterOpt_float?: (ctx: Opt_floatContext) => void; + enterCreatesubscriptionstmt?: (ctx: CreatesubscriptionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_float`. + * Exit a parse tree produced by `PostgreSqlParser.createsubscriptionstmt`. * @param ctx the parse tree */ - exitOpt_float?: (ctx: Opt_floatContext) => void; + exitCreatesubscriptionstmt?: (ctx: CreatesubscriptionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.bit`. + * Enter a parse tree produced by `PostgreSqlParser.altersubscriptionstmt`. * @param ctx the parse tree */ - enterBit?: (ctx: BitContext) => void; + enterAltersubscriptionstmt?: (ctx: AltersubscriptionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.bit`. + * Exit a parse tree produced by `PostgreSqlParser.altersubscriptionstmt`. * @param ctx the parse tree */ - exitBit?: (ctx: BitContext) => void; + exitAltersubscriptionstmt?: (ctx: AltersubscriptionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.constbit`. + * Enter a parse tree produced by `PostgreSqlParser.rulestmt`. * @param ctx the parse tree */ - enterConstbit?: (ctx: ConstbitContext) => void; + enterRulestmt?: (ctx: RulestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.constbit`. + * Exit a parse tree produced by `PostgreSqlParser.rulestmt`. * @param ctx the parse tree */ - exitConstbit?: (ctx: ConstbitContext) => void; + exitRulestmt?: (ctx: RulestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.bitwithlength`. + * Enter a parse tree produced by `PostgreSqlParser.ruleactionstmt`. * @param ctx the parse tree */ - enterBitwithlength?: (ctx: BitwithlengthContext) => void; + enterRuleactionstmt?: (ctx: RuleactionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.bitwithlength`. + * Exit a parse tree produced by `PostgreSqlParser.ruleactionstmt`. * @param ctx the parse tree */ - exitBitwithlength?: (ctx: BitwithlengthContext) => void; + exitRuleactionstmt?: (ctx: RuleactionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.bitwithoutlength`. + * Enter a parse tree produced by `PostgreSqlParser.notifystmt`. * @param ctx the parse tree */ - enterBitwithoutlength?: (ctx: BitwithoutlengthContext) => void; + enterNotifystmt?: (ctx: NotifystmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.bitwithoutlength`. + * Exit a parse tree produced by `PostgreSqlParser.notifystmt`. * @param ctx the parse tree */ - exitBitwithoutlength?: (ctx: BitwithoutlengthContext) => void; + exitNotifystmt?: (ctx: NotifystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.character`. + * Enter a parse tree produced by `PostgreSqlParser.notify_payload`. * @param ctx the parse tree */ - enterCharacter?: (ctx: CharacterContext) => void; + enterNotify_payload?: (ctx: Notify_payloadContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.character`. + * Exit a parse tree produced by `PostgreSqlParser.notify_payload`. * @param ctx the parse tree */ - exitCharacter?: (ctx: CharacterContext) => void; + exitNotify_payload?: (ctx: Notify_payloadContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.constcharacter`. + * Enter a parse tree produced by `PostgreSqlParser.listenstmt`. * @param ctx the parse tree */ - enterConstcharacter?: (ctx: ConstcharacterContext) => void; + enterListenstmt?: (ctx: ListenstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.constcharacter`. + * Exit a parse tree produced by `PostgreSqlParser.listenstmt`. * @param ctx the parse tree */ - exitConstcharacter?: (ctx: ConstcharacterContext) => void; + exitListenstmt?: (ctx: ListenstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.character_c`. + * Enter a parse tree produced by `PostgreSqlParser.unlistenstmt`. * @param ctx the parse tree */ - enterCharacter_c?: (ctx: Character_cContext) => void; + enterUnlistenstmt?: (ctx: UnlistenstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.character_c`. + * Exit a parse tree produced by `PostgreSqlParser.unlistenstmt`. * @param ctx the parse tree */ - exitCharacter_c?: (ctx: Character_cContext) => void; + exitUnlistenstmt?: (ctx: UnlistenstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_varying`. + * Enter a parse tree produced by `PostgreSqlParser.transactionstmt`. * @param ctx the parse tree */ - enterOpt_varying?: (ctx: Opt_varyingContext) => void; + enterTransactionstmt?: (ctx: TransactionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_varying`. + * Exit a parse tree produced by `PostgreSqlParser.transactionstmt`. * @param ctx the parse tree */ - exitOpt_varying?: (ctx: Opt_varyingContext) => void; + exitTransactionstmt?: (ctx: TransactionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.constdatetime`. + * Enter a parse tree produced by `PostgreSqlParser.opt_transaction`. * @param ctx the parse tree */ - enterConstdatetime?: (ctx: ConstdatetimeContext) => void; + enterOpt_transaction?: (ctx: Opt_transactionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.constdatetime`. + * Exit a parse tree produced by `PostgreSqlParser.opt_transaction`. * @param ctx the parse tree */ - exitConstdatetime?: (ctx: ConstdatetimeContext) => void; + exitOpt_transaction?: (ctx: Opt_transactionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.constinterval`. + * Enter a parse tree produced by `PostgreSqlParser.transaction_mode_item`. * @param ctx the parse tree */ - enterConstinterval?: (ctx: ConstintervalContext) => void; + enterTransaction_mode_item?: (ctx: Transaction_mode_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.constinterval`. + * Exit a parse tree produced by `PostgreSqlParser.transaction_mode_item`. * @param ctx the parse tree */ - exitConstinterval?: (ctx: ConstintervalContext) => void; + exitTransaction_mode_item?: (ctx: Transaction_mode_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_timezone`. + * Enter a parse tree produced by `PostgreSqlParser.transaction_mode_list`. * @param ctx the parse tree */ - enterOpt_timezone?: (ctx: Opt_timezoneContext) => void; + enterTransaction_mode_list?: (ctx: Transaction_mode_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_timezone`. + * Exit a parse tree produced by `PostgreSqlParser.transaction_mode_list`. * @param ctx the parse tree */ - exitOpt_timezone?: (ctx: Opt_timezoneContext) => void; + exitTransaction_mode_list?: (ctx: Transaction_mode_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_interval`. + * Enter a parse tree produced by the `createView` + * labeled alternative in `PostgreSqlParser.viewstmt`. * @param ctx the parse tree */ - enterOpt_interval?: (ctx: Opt_intervalContext) => void; + enterCreateView?: (ctx: CreateViewContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_interval`. + * Exit a parse tree produced by the `createView` + * labeled alternative in `PostgreSqlParser.viewstmt`. * @param ctx the parse tree */ - exitOpt_interval?: (ctx: Opt_intervalContext) => void; + exitCreateView?: (ctx: CreateViewContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.interval_second`. + * Enter a parse tree produced by `PostgreSqlParser.loadstmt`. * @param ctx the parse tree */ - enterInterval_second?: (ctx: Interval_secondContext) => void; + enterLoadstmt?: (ctx: LoadstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.interval_second`. + * Exit a parse tree produced by `PostgreSqlParser.loadstmt`. * @param ctx the parse tree */ - exitInterval_second?: (ctx: Interval_secondContext) => void; + exitLoadstmt?: (ctx: LoadstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_escape`. + * Enter a parse tree produced by the `createDatabase` + * labeled alternative in `PostgreSqlParser.createdbstmt`. * @param ctx the parse tree */ - enterOpt_escape?: (ctx: Opt_escapeContext) => void; + enterCreateDatabase?: (ctx: CreateDatabaseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_escape`. + * Exit a parse tree produced by the `createDatabase` + * labeled alternative in `PostgreSqlParser.createdbstmt`. * @param ctx the parse tree */ - exitOpt_escape?: (ctx: Opt_escapeContext) => void; + exitCreateDatabase?: (ctx: CreateDatabaseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr`. + * Enter a parse tree produced by `PostgreSqlParser.createdb_opt_item`. * @param ctx the parse tree */ - enterA_expr?: (ctx: A_exprContext) => void; + enterCreatedb_opt_item?: (ctx: Createdb_opt_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr`. + * Exit a parse tree produced by `PostgreSqlParser.createdb_opt_item`. * @param ctx the parse tree */ - exitA_expr?: (ctx: A_exprContext) => void; + exitCreatedb_opt_item?: (ctx: Createdb_opt_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_qual`. + * Enter a parse tree produced by `PostgreSqlParser.alterdatabasestmt`. * @param ctx the parse tree */ - enterA_expr_qual?: (ctx: A_expr_qualContext) => void; + enterAlterdatabasestmt?: (ctx: AlterdatabasestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_qual`. + * Exit a parse tree produced by `PostgreSqlParser.alterdatabasestmt`. * @param ctx the parse tree */ - exitA_expr_qual?: (ctx: A_expr_qualContext) => void; + exitAlterdatabasestmt?: (ctx: AlterdatabasestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_lessless`. + * Enter a parse tree produced by `PostgreSqlParser.alterdatabasesetstmt`. * @param ctx the parse tree */ - enterA_expr_lessless?: (ctx: A_expr_lesslessContext) => void; + enterAlterdatabasesetstmt?: (ctx: AlterdatabasesetstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_lessless`. + * Exit a parse tree produced by `PostgreSqlParser.alterdatabasesetstmt`. * @param ctx the parse tree */ - exitA_expr_lessless?: (ctx: A_expr_lesslessContext) => void; + exitAlterdatabasesetstmt?: (ctx: AlterdatabasesetstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_or`. + * Enter a parse tree produced by `PostgreSqlParser.altercollationstmt`. * @param ctx the parse tree */ - enterA_expr_or?: (ctx: A_expr_orContext) => void; + enterAltercollationstmt?: (ctx: AltercollationstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_or`. + * Exit a parse tree produced by `PostgreSqlParser.altercollationstmt`. * @param ctx the parse tree */ - exitA_expr_or?: (ctx: A_expr_orContext) => void; + exitAltercollationstmt?: (ctx: AltercollationstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_and`. + * Enter a parse tree produced by `PostgreSqlParser.altersystemstmt`. * @param ctx the parse tree */ - enterA_expr_and?: (ctx: A_expr_andContext) => void; + enterAltersystemstmt?: (ctx: AltersystemstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_and`. + * Exit a parse tree produced by `PostgreSqlParser.altersystemstmt`. * @param ctx the parse tree */ - exitA_expr_and?: (ctx: A_expr_andContext) => void; + exitAltersystemstmt?: (ctx: AltersystemstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_in`. + * Enter a parse tree produced by `PostgreSqlParser.createdomainstmt`. * @param ctx the parse tree */ - enterA_expr_in?: (ctx: A_expr_inContext) => void; + enterCreatedomainstmt?: (ctx: CreatedomainstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_in`. + * Exit a parse tree produced by `PostgreSqlParser.createdomainstmt`. * @param ctx the parse tree */ - exitA_expr_in?: (ctx: A_expr_inContext) => void; + exitCreatedomainstmt?: (ctx: CreatedomainstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_unary_not`. + * Enter a parse tree produced by `PostgreSqlParser.alterdomainstmt`. * @param ctx the parse tree */ - enterA_expr_unary_not?: (ctx: A_expr_unary_notContext) => void; + enterAlterdomainstmt?: (ctx: AlterdomainstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_unary_not`. + * Exit a parse tree produced by `PostgreSqlParser.alterdomainstmt`. * @param ctx the parse tree */ - exitA_expr_unary_not?: (ctx: A_expr_unary_notContext) => void; + exitAlterdomainstmt?: (ctx: AlterdomainstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_isnull`. + * Enter a parse tree produced by `PostgreSqlParser.altertsdictionarystmt`. * @param ctx the parse tree */ - enterA_expr_isnull?: (ctx: A_expr_isnullContext) => void; + enterAltertsdictionarystmt?: (ctx: AltertsdictionarystmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_isnull`. + * Exit a parse tree produced by `PostgreSqlParser.altertsdictionarystmt`. * @param ctx the parse tree */ - exitA_expr_isnull?: (ctx: A_expr_isnullContext) => void; + exitAltertsdictionarystmt?: (ctx: AltertsdictionarystmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_is_not`. + * Enter a parse tree produced by `PostgreSqlParser.altertsconfigurationstmt`. * @param ctx the parse tree */ - enterA_expr_is_not?: (ctx: A_expr_is_notContext) => void; + enterAltertsconfigurationstmt?: (ctx: AltertsconfigurationstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_is_not`. + * Exit a parse tree produced by `PostgreSqlParser.altertsconfigurationstmt`. * @param ctx the parse tree */ - exitA_expr_is_not?: (ctx: A_expr_is_notContext) => void; + exitAltertsconfigurationstmt?: (ctx: AltertsconfigurationstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_compare`. + * Enter a parse tree produced by `PostgreSqlParser.createconversionstmt`. * @param ctx the parse tree */ - enterA_expr_compare?: (ctx: A_expr_compareContext) => void; + enterCreateconversionstmt?: (ctx: CreateconversionstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_compare`. + * Exit a parse tree produced by `PostgreSqlParser.createconversionstmt`. * @param ctx the parse tree */ - exitA_expr_compare?: (ctx: A_expr_compareContext) => void; + exitCreateconversionstmt?: (ctx: CreateconversionstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_like`. + * Enter a parse tree produced by `PostgreSqlParser.clusterstmt`. * @param ctx the parse tree */ - enterA_expr_like?: (ctx: A_expr_likeContext) => void; + enterClusterstmt?: (ctx: ClusterstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_like`. + * Exit a parse tree produced by `PostgreSqlParser.clusterstmt`. * @param ctx the parse tree */ - exitA_expr_like?: (ctx: A_expr_likeContext) => void; + exitClusterstmt?: (ctx: ClusterstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_qual_op`. + * Enter a parse tree produced by `PostgreSqlParser.vacuumstmt`. * @param ctx the parse tree */ - enterA_expr_qual_op?: (ctx: A_expr_qual_opContext) => void; + enterVacuumstmt?: (ctx: VacuumstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_qual_op`. + * Exit a parse tree produced by `PostgreSqlParser.vacuumstmt`. * @param ctx the parse tree */ - exitA_expr_qual_op?: (ctx: A_expr_qual_opContext) => void; + exitVacuumstmt?: (ctx: VacuumstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_unary_qualop`. + * Enter a parse tree produced by `PostgreSqlParser.analyzestmt`. * @param ctx the parse tree */ - enterA_expr_unary_qualop?: (ctx: A_expr_unary_qualopContext) => void; + enterAnalyzestmt?: (ctx: AnalyzestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_unary_qualop`. + * Exit a parse tree produced by `PostgreSqlParser.analyzestmt`. * @param ctx the parse tree */ - exitA_expr_unary_qualop?: (ctx: A_expr_unary_qualopContext) => void; + exitAnalyzestmt?: (ctx: AnalyzestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_add`. + * Enter a parse tree produced by `PostgreSqlParser.analyze_keyword`. * @param ctx the parse tree */ - enterA_expr_add?: (ctx: A_expr_addContext) => void; + enterAnalyze_keyword?: (ctx: Analyze_keywordContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_add`. + * Exit a parse tree produced by `PostgreSqlParser.analyze_keyword`. * @param ctx the parse tree */ - exitA_expr_add?: (ctx: A_expr_addContext) => void; + exitAnalyze_keyword?: (ctx: Analyze_keywordContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_mul`. + * Enter a parse tree produced by `PostgreSqlParser.vac_analyze_option_elem`. * @param ctx the parse tree */ - enterA_expr_mul?: (ctx: A_expr_mulContext) => void; + enterVac_analyze_option_elem?: (ctx: Vac_analyze_option_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_mul`. + * Exit a parse tree produced by `PostgreSqlParser.vac_analyze_option_elem`. * @param ctx the parse tree */ - exitA_expr_mul?: (ctx: A_expr_mulContext) => void; + exitVac_analyze_option_elem?: (ctx: Vac_analyze_option_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_caret`. + * Enter a parse tree produced by `PostgreSqlParser.analyze_option_elem`. * @param ctx the parse tree */ - enterA_expr_caret?: (ctx: A_expr_caretContext) => void; + enterAnalyze_option_elem?: (ctx: Analyze_option_elemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_caret`. + * Exit a parse tree produced by `PostgreSqlParser.analyze_option_elem`. * @param ctx the parse tree */ - exitA_expr_caret?: (ctx: A_expr_caretContext) => void; + exitAnalyze_option_elem?: (ctx: Analyze_option_elemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_unary_sign`. + * Enter a parse tree produced by `PostgreSqlParser.opt_verbose`. * @param ctx the parse tree */ - enterA_expr_unary_sign?: (ctx: A_expr_unary_signContext) => void; + enterOpt_verbose?: (ctx: Opt_verboseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_unary_sign`. + * Exit a parse tree produced by `PostgreSqlParser.opt_verbose`. * @param ctx the parse tree */ - exitA_expr_unary_sign?: (ctx: A_expr_unary_signContext) => void; + exitOpt_verbose?: (ctx: Opt_verboseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_at_time_zone`. + * Enter a parse tree produced by `PostgreSqlParser.vacuum_relation`. * @param ctx the parse tree */ - enterA_expr_at_time_zone?: (ctx: A_expr_at_time_zoneContext) => void; + enterVacuum_relation?: (ctx: Vacuum_relationContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_at_time_zone`. + * Exit a parse tree produced by `PostgreSqlParser.vacuum_relation`. * @param ctx the parse tree */ - exitA_expr_at_time_zone?: (ctx: A_expr_at_time_zoneContext) => void; + exitVacuum_relation?: (ctx: Vacuum_relationContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_collate`. + * Enter a parse tree produced by `PostgreSqlParser.vacuum_relation_list`. * @param ctx the parse tree */ - enterA_expr_collate?: (ctx: A_expr_collateContext) => void; + enterVacuum_relation_list?: (ctx: Vacuum_relation_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_collate`. + * Exit a parse tree produced by `PostgreSqlParser.vacuum_relation_list`. * @param ctx the parse tree */ - exitA_expr_collate?: (ctx: A_expr_collateContext) => void; + exitVacuum_relation_list?: (ctx: Vacuum_relation_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.a_expr_typecast`. + * Enter a parse tree produced by `PostgreSqlParser.explainstmt`. * @param ctx the parse tree */ - enterA_expr_typecast?: (ctx: A_expr_typecastContext) => void; + enterExplainstmt?: (ctx: ExplainstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.a_expr_typecast`. + * Exit a parse tree produced by `PostgreSqlParser.explainstmt`. * @param ctx the parse tree */ - exitA_expr_typecast?: (ctx: A_expr_typecastContext) => void; + exitExplainstmt?: (ctx: ExplainstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.b_expr`. + * Enter a parse tree produced by `PostgreSqlParser.explainablestmt`. * @param ctx the parse tree */ - enterB_expr?: (ctx: B_exprContext) => void; + enterExplainablestmt?: (ctx: ExplainablestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.b_expr`. + * Exit a parse tree produced by `PostgreSqlParser.explainablestmt`. * @param ctx the parse tree */ - exitB_expr?: (ctx: B_exprContext) => void; + exitExplainablestmt?: (ctx: ExplainablestmtContext) => void; /** - * Enter a parse tree produced by the `c_expr_exists` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Enter a parse tree produced by `PostgreSqlParser.explain_option_list`. * @param ctx the parse tree */ - enterC_expr_exists?: (ctx: C_expr_existsContext) => void; + enterExplain_option_list?: (ctx: Explain_option_listContext) => void; /** - * Exit a parse tree produced by the `c_expr_exists` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Exit a parse tree produced by `PostgreSqlParser.explain_option_list`. * @param ctx the parse tree */ - exitC_expr_exists?: (ctx: C_expr_existsContext) => void; + exitExplain_option_list?: (ctx: Explain_option_listContext) => void; /** - * Enter a parse tree produced by the `c_expr_expr` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Enter a parse tree produced by `PostgreSqlParser.preparestmt`. * @param ctx the parse tree */ - enterC_expr_expr?: (ctx: C_expr_exprContext) => void; + enterPreparestmt?: (ctx: PreparestmtContext) => void; /** - * Exit a parse tree produced by the `c_expr_expr` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Exit a parse tree produced by `PostgreSqlParser.preparestmt`. * @param ctx the parse tree */ - exitC_expr_expr?: (ctx: C_expr_exprContext) => void; + exitPreparestmt?: (ctx: PreparestmtContext) => void; /** - * Enter a parse tree produced by the `c_expr_case` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Enter a parse tree produced by `PostgreSqlParser.prep_type_clause`. * @param ctx the parse tree */ - enterC_expr_case?: (ctx: C_expr_caseContext) => void; + enterPrep_type_clause?: (ctx: Prep_type_clauseContext) => void; /** - * Exit a parse tree produced by the `c_expr_case` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Exit a parse tree produced by `PostgreSqlParser.prep_type_clause`. * @param ctx the parse tree */ - exitC_expr_case?: (ctx: C_expr_caseContext) => void; + exitPrep_type_clause?: (ctx: Prep_type_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.plsqlvariablename`. + * Enter a parse tree produced by `PostgreSqlParser.preparablestmt`. * @param ctx the parse tree */ - enterPlsqlvariablename?: (ctx: PlsqlvariablenameContext) => void; + enterPreparablestmt?: (ctx: PreparablestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.plsqlvariablename`. + * Exit a parse tree produced by `PostgreSqlParser.preparablestmt`. * @param ctx the parse tree */ - exitPlsqlvariablename?: (ctx: PlsqlvariablenameContext) => void; + exitPreparablestmt?: (ctx: PreparablestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_application`. + * Enter a parse tree produced by `PostgreSqlParser.executestmt`. * @param ctx the parse tree */ - enterFunc_application?: (ctx: Func_applicationContext) => void; + enterExecutestmt?: (ctx: ExecutestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_application`. + * Exit a parse tree produced by `PostgreSqlParser.executestmt`. * @param ctx the parse tree */ - exitFunc_application?: (ctx: Func_applicationContext) => void; + exitExecutestmt?: (ctx: ExecutestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_expr`. + * Enter a parse tree produced by `PostgreSqlParser.execute_param_clause`. * @param ctx the parse tree */ - enterFunc_expr?: (ctx: Func_exprContext) => void; + enterExecute_param_clause?: (ctx: Execute_param_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_expr`. + * Exit a parse tree produced by `PostgreSqlParser.execute_param_clause`. * @param ctx the parse tree */ - exitFunc_expr?: (ctx: Func_exprContext) => void; + exitExecute_param_clause?: (ctx: Execute_param_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_expr_windowless`. + * Enter a parse tree produced by `PostgreSqlParser.deallocatestmt`. * @param ctx the parse tree */ - enterFunc_expr_windowless?: (ctx: Func_expr_windowlessContext) => void; + enterDeallocatestmt?: (ctx: DeallocatestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_expr_windowless`. + * Exit a parse tree produced by `PostgreSqlParser.deallocatestmt`. * @param ctx the parse tree */ - exitFunc_expr_windowless?: (ctx: Func_expr_windowlessContext) => void; + exitDeallocatestmt?: (ctx: DeallocatestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_expr_common_subexpr`. + * Enter a parse tree produced by the `insertStatement` + * labeled alternative in `PostgreSqlParser.insertstmt`. * @param ctx the parse tree */ - enterFunc_expr_common_subexpr?: (ctx: Func_expr_common_subexprContext) => void; + enterInsertStatement?: (ctx: InsertStatementContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_expr_common_subexpr`. + * Exit a parse tree produced by the `insertStatement` + * labeled alternative in `PostgreSqlParser.insertstmt`. * @param ctx the parse tree */ - exitFunc_expr_common_subexpr?: (ctx: Func_expr_common_subexprContext) => void; + exitInsertStatement?: (ctx: InsertStatementContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_root_version`. + * Enter a parse tree produced by `PostgreSqlParser.insert_rest`. * @param ctx the parse tree */ - enterXml_root_version?: (ctx: Xml_root_versionContext) => void; + enterInsert_rest?: (ctx: Insert_restContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_root_version`. + * Exit a parse tree produced by `PostgreSqlParser.insert_rest`. * @param ctx the parse tree */ - exitXml_root_version?: (ctx: Xml_root_versionContext) => void; + exitInsert_rest?: (ctx: Insert_restContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_xml_root_standalone`. + * Enter a parse tree produced by `PostgreSqlParser.insert_column_list`. * @param ctx the parse tree */ - enterOpt_xml_root_standalone?: (ctx: Opt_xml_root_standaloneContext) => void; + enterInsert_column_list?: (ctx: Insert_column_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_xml_root_standalone`. + * Exit a parse tree produced by `PostgreSqlParser.insert_column_list`. * @param ctx the parse tree */ - exitOpt_xml_root_standalone?: (ctx: Opt_xml_root_standaloneContext) => void; + exitInsert_column_list?: (ctx: Insert_column_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_attributes`. + * Enter a parse tree produced by `PostgreSqlParser.insert_column_item`. * @param ctx the parse tree */ - enterXml_attributes?: (ctx: Xml_attributesContext) => void; + enterInsert_column_item?: (ctx: Insert_column_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_attributes`. + * Exit a parse tree produced by `PostgreSqlParser.insert_column_item`. * @param ctx the parse tree */ - exitXml_attributes?: (ctx: Xml_attributesContext) => void; + exitInsert_column_item?: (ctx: Insert_column_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_attribute_list`. + * Enter a parse tree produced by `PostgreSqlParser.returning_clause`. * @param ctx the parse tree */ - enterXml_attribute_list?: (ctx: Xml_attribute_listContext) => void; + enterReturning_clause?: (ctx: Returning_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_attribute_list`. + * Exit a parse tree produced by `PostgreSqlParser.returning_clause`. * @param ctx the parse tree */ - exitXml_attribute_list?: (ctx: Xml_attribute_listContext) => void; + exitReturning_clause?: (ctx: Returning_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_attribute_el`. + * Enter a parse tree produced by `PostgreSqlParser.deletestmt`. * @param ctx the parse tree */ - enterXml_attribute_el?: (ctx: Xml_attribute_elContext) => void; + enterDeletestmt?: (ctx: DeletestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_attribute_el`. + * Exit a parse tree produced by `PostgreSqlParser.deletestmt`. * @param ctx the parse tree */ - exitXml_attribute_el?: (ctx: Xml_attribute_elContext) => void; + exitDeletestmt?: (ctx: DeletestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.document_or_content`. + * Enter a parse tree produced by `PostgreSqlParser.lockstmt`. * @param ctx the parse tree */ - enterDocument_or_content?: (ctx: Document_or_contentContext) => void; + enterLockstmt?: (ctx: LockstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.document_or_content`. + * Exit a parse tree produced by `PostgreSqlParser.lockstmt`. * @param ctx the parse tree */ - exitDocument_or_content?: (ctx: Document_or_contentContext) => void; + exitLockstmt?: (ctx: LockstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_whitespace_option`. + * Enter a parse tree produced by `PostgreSqlParser.updatestmt`. * @param ctx the parse tree */ - enterXml_whitespace_option?: (ctx: Xml_whitespace_optionContext) => void; + enterUpdatestmt?: (ctx: UpdatestmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_whitespace_option`. + * Exit a parse tree produced by `PostgreSqlParser.updatestmt`. * @param ctx the parse tree */ - exitXml_whitespace_option?: (ctx: Xml_whitespace_optionContext) => void; + exitUpdatestmt?: (ctx: UpdatestmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xmlexists_argument`. + * Enter a parse tree produced by `PostgreSqlParser.set_clause_list`. * @param ctx the parse tree */ - enterXmlexists_argument?: (ctx: Xmlexists_argumentContext) => void; + enterSet_clause_list?: (ctx: Set_clause_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xmlexists_argument`. + * Exit a parse tree produced by `PostgreSqlParser.set_clause_list`. * @param ctx the parse tree */ - exitXmlexists_argument?: (ctx: Xmlexists_argumentContext) => void; + exitSet_clause_list?: (ctx: Set_clause_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xml_passing_mech`. + * Enter a parse tree produced by `PostgreSqlParser.set_clause`. * @param ctx the parse tree */ - enterXml_passing_mech?: (ctx: Xml_passing_mechContext) => void; + enterSet_clause?: (ctx: Set_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xml_passing_mech`. + * Exit a parse tree produced by `PostgreSqlParser.set_clause`. * @param ctx the parse tree */ - exitXml_passing_mech?: (ctx: Xml_passing_mechContext) => void; + exitSet_clause?: (ctx: Set_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.within_group_clause`. + * Enter a parse tree produced by `PostgreSqlParser.declarecursorstmt`. * @param ctx the parse tree */ - enterWithin_group_clause?: (ctx: Within_group_clauseContext) => void; + enterDeclarecursorstmt?: (ctx: DeclarecursorstmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.within_group_clause`. + * Exit a parse tree produced by `PostgreSqlParser.declarecursorstmt`. * @param ctx the parse tree */ - exitWithin_group_clause?: (ctx: Within_group_clauseContext) => void; + exitDeclarecursorstmt?: (ctx: DeclarecursorstmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.filter_clause`. + * Enter a parse tree produced by the `selectStatement` + * labeled alternative in `PostgreSqlParser.selectstmt`. * @param ctx the parse tree */ - enterFilter_clause?: (ctx: Filter_clauseContext) => void; + enterSelectStatement?: (ctx: SelectStatementContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.filter_clause`. + * Exit a parse tree produced by the `selectStatement` + * labeled alternative in `PostgreSqlParser.selectstmt`. * @param ctx the parse tree */ - exitFilter_clause?: (ctx: Filter_clauseContext) => void; + exitSelectStatement?: (ctx: SelectStatementContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.window_clause`. + * Enter a parse tree produced by `PostgreSqlParser.select_with_parens`. * @param ctx the parse tree */ - enterWindow_clause?: (ctx: Window_clauseContext) => void; + enterSelect_with_parens?: (ctx: Select_with_parensContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.window_clause`. + * Exit a parse tree produced by `PostgreSqlParser.select_with_parens`. * @param ctx the parse tree */ - exitWindow_clause?: (ctx: Window_clauseContext) => void; + exitSelect_with_parens?: (ctx: Select_with_parensContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.window_definition_list`. + * Enter a parse tree produced by `PostgreSqlParser.select_no_parens`. * @param ctx the parse tree */ - enterWindow_definition_list?: (ctx: Window_definition_listContext) => void; + enterSelect_no_parens?: (ctx: Select_no_parensContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.window_definition_list`. + * Exit a parse tree produced by `PostgreSqlParser.select_no_parens`. * @param ctx the parse tree */ - exitWindow_definition_list?: (ctx: Window_definition_listContext) => void; + exitSelect_no_parens?: (ctx: Select_no_parensContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.window_definition`. + * Enter a parse tree produced by `PostgreSqlParser.select_clause`. * @param ctx the parse tree */ - enterWindow_definition?: (ctx: Window_definitionContext) => void; + enterSelect_clause?: (ctx: Select_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.window_definition`. + * Exit a parse tree produced by `PostgreSqlParser.select_clause`. * @param ctx the parse tree */ - exitWindow_definition?: (ctx: Window_definitionContext) => void; + exitSelect_clause?: (ctx: Select_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.over_clause`. + * Enter a parse tree produced by `PostgreSqlParser.simple_select`. * @param ctx the parse tree */ - enterOver_clause?: (ctx: Over_clauseContext) => void; + enterSimple_select?: (ctx: Simple_selectContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.over_clause`. + * Exit a parse tree produced by `PostgreSqlParser.simple_select`. * @param ctx the parse tree */ - exitOver_clause?: (ctx: Over_clauseContext) => void; + exitSimple_select?: (ctx: Simple_selectContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.window_specification`. + * Enter a parse tree produced by `PostgreSqlParser.set_operator_with_all_or_distinct`. * @param ctx the parse tree */ - enterWindow_specification?: (ctx: Window_specificationContext) => void; + enterSet_operator_with_all_or_distinct?: (ctx: Set_operator_with_all_or_distinctContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.window_specification`. + * Exit a parse tree produced by `PostgreSqlParser.set_operator_with_all_or_distinct`. * @param ctx the parse tree */ - exitWindow_specification?: (ctx: Window_specificationContext) => void; + exitSet_operator_with_all_or_distinct?: (ctx: Set_operator_with_all_or_distinctContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_existing_window_name`. + * Enter a parse tree produced by `PostgreSqlParser.with_clause`. * @param ctx the parse tree */ - enterOpt_existing_window_name?: (ctx: Opt_existing_window_nameContext) => void; + enterWith_clause?: (ctx: With_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_existing_window_name`. + * Exit a parse tree produced by `PostgreSqlParser.with_clause`. * @param ctx the parse tree */ - exitOpt_existing_window_name?: (ctx: Opt_existing_window_nameContext) => void; + exitWith_clause?: (ctx: With_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_partition_clause`. + * Enter a parse tree produced by `PostgreSqlParser.common_table_expr`. * @param ctx the parse tree */ - enterOpt_partition_clause?: (ctx: Opt_partition_clauseContext) => void; + enterCommon_table_expr?: (ctx: Common_table_exprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_partition_clause`. + * Exit a parse tree produced by `PostgreSqlParser.common_table_expr`. * @param ctx the parse tree */ - exitOpt_partition_clause?: (ctx: Opt_partition_clauseContext) => void; + exitCommon_table_expr?: (ctx: Common_table_exprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_frame_clause`. + * Enter a parse tree produced by `PostgreSqlParser.search_cluase`. * @param ctx the parse tree */ - enterOpt_frame_clause?: (ctx: Opt_frame_clauseContext) => void; + enterSearch_cluase?: (ctx: Search_cluaseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_frame_clause`. + * Exit a parse tree produced by `PostgreSqlParser.search_cluase`. * @param ctx the parse tree */ - exitOpt_frame_clause?: (ctx: Opt_frame_clauseContext) => void; + exitSearch_cluase?: (ctx: Search_cluaseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.frame_extent`. + * Enter a parse tree produced by `PostgreSqlParser.cycle_cluase`. * @param ctx the parse tree */ - enterFrame_extent?: (ctx: Frame_extentContext) => void; + enterCycle_cluase?: (ctx: Cycle_cluaseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.frame_extent`. + * Exit a parse tree produced by `PostgreSqlParser.cycle_cluase`. * @param ctx the parse tree */ - exitFrame_extent?: (ctx: Frame_extentContext) => void; + exitCycle_cluase?: (ctx: Cycle_cluaseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.frame_bound`. + * Enter a parse tree produced by `PostgreSqlParser.into_clause`. * @param ctx the parse tree */ - enterFrame_bound?: (ctx: Frame_boundContext) => void; + enterInto_clause?: (ctx: Into_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.frame_bound`. + * Exit a parse tree produced by `PostgreSqlParser.into_clause`. * @param ctx the parse tree */ - exitFrame_bound?: (ctx: Frame_boundContext) => void; + exitInto_clause?: (ctx: Into_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_window_exclusion_clause`. + * Enter a parse tree produced by `PostgreSqlParser.opttempTableName`. * @param ctx the parse tree */ - enterOpt_window_exclusion_clause?: (ctx: Opt_window_exclusion_clauseContext) => void; + enterOpttempTableName?: (ctx: OpttempTableNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_window_exclusion_clause`. + * Exit a parse tree produced by `PostgreSqlParser.opttempTableName`. * @param ctx the parse tree */ - exitOpt_window_exclusion_clause?: (ctx: Opt_window_exclusion_clauseContext) => void; + exitOpttempTableName?: (ctx: OpttempTableNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.row`. + * Enter a parse tree produced by `PostgreSqlParser.distinct_clause`. * @param ctx the parse tree */ - enterRow?: (ctx: RowContext) => void; + enterDistinct_clause?: (ctx: Distinct_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.row`. + * Exit a parse tree produced by `PostgreSqlParser.distinct_clause`. * @param ctx the parse tree */ - exitRow?: (ctx: RowContext) => void; + exitDistinct_clause?: (ctx: Distinct_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.explicit_row`. + * Enter a parse tree produced by `PostgreSqlParser.sort_clause`. * @param ctx the parse tree */ - enterExplicit_row?: (ctx: Explicit_rowContext) => void; + enterSort_clause?: (ctx: Sort_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.explicit_row`. + * Exit a parse tree produced by `PostgreSqlParser.sort_clause`. * @param ctx the parse tree */ - exitExplicit_row?: (ctx: Explicit_rowContext) => void; + exitSort_clause?: (ctx: Sort_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.implicit_row`. + * Enter a parse tree produced by `PostgreSqlParser.sortby`. * @param ctx the parse tree */ - enterImplicit_row?: (ctx: Implicit_rowContext) => void; + enterSortby?: (ctx: SortbyContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.implicit_row`. + * Exit a parse tree produced by `PostgreSqlParser.sortby`. * @param ctx the parse tree */ - exitImplicit_row?: (ctx: Implicit_rowContext) => void; + exitSortby?: (ctx: SortbyContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.sub_type`. + * Enter a parse tree produced by `PostgreSqlParser.select_limit`. * @param ctx the parse tree */ - enterSub_type?: (ctx: Sub_typeContext) => void; + enterSelect_limit?: (ctx: Select_limitContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.sub_type`. + * Exit a parse tree produced by `PostgreSqlParser.select_limit`. * @param ctx the parse tree */ - exitSub_type?: (ctx: Sub_typeContext) => void; + exitSelect_limit?: (ctx: Select_limitContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.all_op`. + * Enter a parse tree produced by `PostgreSqlParser.limit_clause`. * @param ctx the parse tree */ - enterAll_op?: (ctx: All_opContext) => void; + enterLimit_clause?: (ctx: Limit_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.all_op`. + * Exit a parse tree produced by `PostgreSqlParser.limit_clause`. * @param ctx the parse tree */ - exitAll_op?: (ctx: All_opContext) => void; + exitLimit_clause?: (ctx: Limit_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.mathop`. + * Enter a parse tree produced by `PostgreSqlParser.fetch_clause`. * @param ctx the parse tree */ - enterMathop?: (ctx: MathopContext) => void; + enterFetch_clause?: (ctx: Fetch_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.mathop`. + * Exit a parse tree produced by `PostgreSqlParser.fetch_clause`. * @param ctx the parse tree */ - exitMathop?: (ctx: MathopContext) => void; + exitFetch_clause?: (ctx: Fetch_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.qual_op`. + * Enter a parse tree produced by `PostgreSqlParser.offset_clause`. * @param ctx the parse tree */ - enterQual_op?: (ctx: Qual_opContext) => void; + enterOffset_clause?: (ctx: Offset_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.qual_op`. + * Exit a parse tree produced by `PostgreSqlParser.offset_clause`. * @param ctx the parse tree */ - exitQual_op?: (ctx: Qual_opContext) => void; + exitOffset_clause?: (ctx: Offset_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.qual_all_op`. + * Enter a parse tree produced by `PostgreSqlParser.select_fetch_first_value`. * @param ctx the parse tree */ - enterQual_all_op?: (ctx: Qual_all_opContext) => void; + enterSelect_fetch_first_value?: (ctx: Select_fetch_first_valueContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.qual_all_op`. + * Exit a parse tree produced by `PostgreSqlParser.select_fetch_first_value`. * @param ctx the parse tree */ - exitQual_all_op?: (ctx: Qual_all_opContext) => void; + exitSelect_fetch_first_value?: (ctx: Select_fetch_first_valueContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.subquery_Op`. + * Enter a parse tree produced by `PostgreSqlParser.group_clause`. * @param ctx the parse tree */ - enterSubquery_Op?: (ctx: Subquery_OpContext) => void; + enterGroup_clause?: (ctx: Group_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.subquery_Op`. + * Exit a parse tree produced by `PostgreSqlParser.group_clause`. * @param ctx the parse tree */ - exitSubquery_Op?: (ctx: Subquery_OpContext) => void; + exitGroup_clause?: (ctx: Group_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.expr_list`. + * Enter a parse tree produced by `PostgreSqlParser.group_by_list`. * @param ctx the parse tree */ - enterExpr_list?: (ctx: Expr_listContext) => void; + enterGroup_by_list?: (ctx: Group_by_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.expr_list`. + * Exit a parse tree produced by `PostgreSqlParser.group_by_list`. * @param ctx the parse tree */ - exitExpr_list?: (ctx: Expr_listContext) => void; + exitGroup_by_list?: (ctx: Group_by_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.column_expr_list_noparen`. + * Enter a parse tree produced by `PostgreSqlParser.group_by_item`. * @param ctx the parse tree */ - enterColumn_expr_list_noparen?: (ctx: Column_expr_list_noparenContext) => void; + enterGroup_by_item?: (ctx: Group_by_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.column_expr_list_noparen`. + * Exit a parse tree produced by `PostgreSqlParser.group_by_item`. * @param ctx the parse tree */ - exitColumn_expr_list_noparen?: (ctx: Column_expr_list_noparenContext) => void; + exitGroup_by_item?: (ctx: Group_by_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.column_expr_list`. + * Enter a parse tree produced by `PostgreSqlParser.for_locking_clause`. * @param ctx the parse tree */ - enterColumn_expr_list?: (ctx: Column_expr_listContext) => void; + enterFor_locking_clause?: (ctx: For_locking_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.column_expr_list`. + * Exit a parse tree produced by `PostgreSqlParser.for_locking_clause`. * @param ctx the parse tree */ - exitColumn_expr_list?: (ctx: Column_expr_listContext) => void; + exitFor_locking_clause?: (ctx: For_locking_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.column_expr`. + * Enter a parse tree produced by `PostgreSqlParser.values_clause`. * @param ctx the parse tree */ - enterColumn_expr?: (ctx: Column_exprContext) => void; + enterValues_clause?: (ctx: Values_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.column_expr`. + * Exit a parse tree produced by `PostgreSqlParser.values_clause`. * @param ctx the parse tree */ - exitColumn_expr?: (ctx: Column_exprContext) => void; + exitValues_clause?: (ctx: Values_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.column_expr_noparen`. + * Enter a parse tree produced by `PostgreSqlParser.from_clause`. * @param ctx the parse tree */ - enterColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => void; + enterFrom_clause?: (ctx: From_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.column_expr_noparen`. + * Exit a parse tree produced by `PostgreSqlParser.from_clause`. * @param ctx the parse tree */ - exitColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => void; + exitFrom_clause?: (ctx: From_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_arg_list`. + * Enter a parse tree produced by `PostgreSqlParser.from_list`. * @param ctx the parse tree */ - enterFunc_arg_list?: (ctx: Func_arg_listContext) => void; + enterFrom_list?: (ctx: From_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_arg_list`. + * Exit a parse tree produced by `PostgreSqlParser.from_list`. * @param ctx the parse tree */ - exitFunc_arg_list?: (ctx: Func_arg_listContext) => void; + exitFrom_list?: (ctx: From_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.func_arg_expr`. + * Enter a parse tree produced by `PostgreSqlParser.table_ref`. * @param ctx the parse tree */ - enterFunc_arg_expr?: (ctx: Func_arg_exprContext) => void; + enterTable_ref?: (ctx: Table_refContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.func_arg_expr`. + * Exit a parse tree produced by `PostgreSqlParser.table_ref`. * @param ctx the parse tree */ - exitFunc_arg_expr?: (ctx: Func_arg_exprContext) => void; + exitTable_ref?: (ctx: Table_refContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.type_list`. + * Enter a parse tree produced by `PostgreSqlParser.alias_clause`. * @param ctx the parse tree */ - enterType_list?: (ctx: Type_listContext) => void; + enterAlias_clause?: (ctx: Alias_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.type_list`. + * Exit a parse tree produced by `PostgreSqlParser.alias_clause`. * @param ctx the parse tree */ - exitType_list?: (ctx: Type_listContext) => void; + exitAlias_clause?: (ctx: Alias_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.array_expr`. + * Enter a parse tree produced by `PostgreSqlParser.func_alias_clause`. * @param ctx the parse tree */ - enterArray_expr?: (ctx: Array_exprContext) => void; + enterFunc_alias_clause?: (ctx: Func_alias_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.array_expr`. + * Exit a parse tree produced by `PostgreSqlParser.func_alias_clause`. * @param ctx the parse tree */ - exitArray_expr?: (ctx: Array_exprContext) => void; + exitFunc_alias_clause?: (ctx: Func_alias_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.array_expr_list`. + * Enter a parse tree produced by `PostgreSqlParser.join_type`. * @param ctx the parse tree */ - enterArray_expr_list?: (ctx: Array_expr_listContext) => void; + enterJoin_type?: (ctx: Join_typeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.array_expr_list`. + * Exit a parse tree produced by `PostgreSqlParser.join_type`. * @param ctx the parse tree */ - exitArray_expr_list?: (ctx: Array_expr_listContext) => void; + exitJoin_type?: (ctx: Join_typeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.extract_list`. + * Enter a parse tree produced by `PostgreSqlParser.join_qual`. * @param ctx the parse tree */ - enterExtract_list?: (ctx: Extract_listContext) => void; + enterJoin_qual?: (ctx: Join_qualContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.extract_list`. + * Exit a parse tree produced by `PostgreSqlParser.join_qual`. * @param ctx the parse tree */ - exitExtract_list?: (ctx: Extract_listContext) => void; + exitJoin_qual?: (ctx: Join_qualContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.extract_arg`. + * Enter a parse tree produced by `PostgreSqlParser.relation_expr`. * @param ctx the parse tree */ - enterExtract_arg?: (ctx: Extract_argContext) => void; + enterRelation_expr?: (ctx: Relation_exprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.extract_arg`. + * Exit a parse tree produced by `PostgreSqlParser.relation_expr`. * @param ctx the parse tree */ - exitExtract_arg?: (ctx: Extract_argContext) => void; + exitRelation_expr?: (ctx: Relation_exprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.unicode_normal_form`. + * Enter a parse tree produced by `PostgreSqlParser.publication_relation_expr`. * @param ctx the parse tree */ - enterUnicode_normal_form?: (ctx: Unicode_normal_formContext) => void; + enterPublication_relation_expr?: (ctx: Publication_relation_exprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.unicode_normal_form`. + * Exit a parse tree produced by `PostgreSqlParser.publication_relation_expr`. * @param ctx the parse tree */ - exitUnicode_normal_form?: (ctx: Unicode_normal_formContext) => void; + exitPublication_relation_expr?: (ctx: Publication_relation_exprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.overlay_list`. + * Enter a parse tree produced by `PostgreSqlParser.relation_expr_list`. * @param ctx the parse tree */ - enterOverlay_list?: (ctx: Overlay_listContext) => void; + enterRelation_expr_list?: (ctx: Relation_expr_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.overlay_list`. + * Exit a parse tree produced by `PostgreSqlParser.relation_expr_list`. * @param ctx the parse tree */ - exitOverlay_list?: (ctx: Overlay_listContext) => void; + exitRelation_expr_list?: (ctx: Relation_expr_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.position_list`. + * Enter a parse tree produced by `PostgreSqlParser.relation_expr_opt_alias`. * @param ctx the parse tree */ - enterPosition_list?: (ctx: Position_listContext) => void; + enterRelation_expr_opt_alias?: (ctx: Relation_expr_opt_aliasContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.position_list`. + * Exit a parse tree produced by `PostgreSqlParser.relation_expr_opt_alias`. * @param ctx the parse tree */ - exitPosition_list?: (ctx: Position_listContext) => void; + exitRelation_expr_opt_alias?: (ctx: Relation_expr_opt_aliasContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.substr_list`. + * Enter a parse tree produced by `PostgreSqlParser.tablesample_clause`. * @param ctx the parse tree */ - enterSubstr_list?: (ctx: Substr_listContext) => void; + enterTablesample_clause?: (ctx: Tablesample_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.substr_list`. + * Exit a parse tree produced by `PostgreSqlParser.tablesample_clause`. * @param ctx the parse tree */ - exitSubstr_list?: (ctx: Substr_listContext) => void; + exitTablesample_clause?: (ctx: Tablesample_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.trim_list`. + * Enter a parse tree produced by `PostgreSqlParser.func_table`. * @param ctx the parse tree */ - enterTrim_list?: (ctx: Trim_listContext) => void; + enterFunc_table?: (ctx: Func_tableContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.trim_list`. + * Exit a parse tree produced by `PostgreSqlParser.func_table`. * @param ctx the parse tree */ - exitTrim_list?: (ctx: Trim_listContext) => void; + exitFunc_table?: (ctx: Func_tableContext) => void; /** - * Enter a parse tree produced by the `in_expr_select` - * labeled alternative in `PostgreSqlParser.in_expr`. + * Enter a parse tree produced by `PostgreSqlParser.rowsfrom_item`. * @param ctx the parse tree */ - enterIn_expr_select?: (ctx: In_expr_selectContext) => void; + enterRowsfrom_item?: (ctx: Rowsfrom_itemContext) => void; /** - * Exit a parse tree produced by the `in_expr_select` - * labeled alternative in `PostgreSqlParser.in_expr`. + * Exit a parse tree produced by `PostgreSqlParser.rowsfrom_item`. * @param ctx the parse tree */ - exitIn_expr_select?: (ctx: In_expr_selectContext) => void; + exitRowsfrom_item?: (ctx: Rowsfrom_itemContext) => void; /** - * Enter a parse tree produced by the `in_expr_list` - * labeled alternative in `PostgreSqlParser.in_expr`. + * Enter a parse tree produced by `PostgreSqlParser.where_clause`. * @param ctx the parse tree */ - enterIn_expr_list?: (ctx: In_expr_listContext) => void; + enterWhere_clause?: (ctx: Where_clauseContext) => void; /** - * Exit a parse tree produced by the `in_expr_list` - * labeled alternative in `PostgreSqlParser.in_expr`. + * Exit a parse tree produced by `PostgreSqlParser.where_clause`. * @param ctx the parse tree */ - exitIn_expr_list?: (ctx: In_expr_listContext) => void; + exitWhere_clause?: (ctx: Where_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.case_expr`. + * Enter a parse tree produced by `PostgreSqlParser.where_or_current_clause`. * @param ctx the parse tree */ - enterCase_expr?: (ctx: Case_exprContext) => void; + enterWhere_or_current_clause?: (ctx: Where_or_current_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.case_expr`. + * Exit a parse tree produced by `PostgreSqlParser.where_or_current_clause`. * @param ctx the parse tree */ - exitCase_expr?: (ctx: Case_exprContext) => void; + exitWhere_or_current_clause?: (ctx: Where_or_current_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.when_clause_list`. + * Enter a parse tree produced by `PostgreSqlParser.tablefuncelementlist`. * @param ctx the parse tree */ - enterWhen_clause_list?: (ctx: When_clause_listContext) => void; + enterTablefuncelementlist?: (ctx: TablefuncelementlistContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.when_clause_list`. + * Exit a parse tree produced by `PostgreSqlParser.tablefuncelementlist`. * @param ctx the parse tree */ - exitWhen_clause_list?: (ctx: When_clause_listContext) => void; + exitTablefuncelementlist?: (ctx: TablefuncelementlistContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.when_clause`. + * Enter a parse tree produced by `PostgreSqlParser.tablefuncelement`. * @param ctx the parse tree */ - enterWhen_clause?: (ctx: When_clauseContext) => void; + enterTablefuncelement?: (ctx: TablefuncelementContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.when_clause`. + * Exit a parse tree produced by `PostgreSqlParser.tablefuncelement`. * @param ctx the parse tree */ - exitWhen_clause?: (ctx: When_clauseContext) => void; + exitTablefuncelement?: (ctx: TablefuncelementContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.case_default`. + * Enter a parse tree produced by `PostgreSqlParser.xmltable`. * @param ctx the parse tree */ - enterCase_default?: (ctx: Case_defaultContext) => void; + enterXmltable?: (ctx: XmltableContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.case_default`. + * Exit a parse tree produced by `PostgreSqlParser.xmltable`. * @param ctx the parse tree */ - exitCase_default?: (ctx: Case_defaultContext) => void; + exitXmltable?: (ctx: XmltableContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.case_arg`. + * Enter a parse tree produced by `PostgreSqlParser.xmltable_column_el`. * @param ctx the parse tree */ - enterCase_arg?: (ctx: Case_argContext) => void; + enterXmltable_column_el?: (ctx: Xmltable_column_elContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.case_arg`. + * Exit a parse tree produced by `PostgreSqlParser.xmltable_column_el`. * @param ctx the parse tree */ - exitCase_arg?: (ctx: Case_argContext) => void; + exitXmltable_column_el?: (ctx: Xmltable_column_elContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.columnref`. + * Enter a parse tree produced by `PostgreSqlParser.xml_namespace_el`. * @param ctx the parse tree */ - enterColumnref?: (ctx: ColumnrefContext) => void; + enterXml_namespace_el?: (ctx: Xml_namespace_elContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.columnref`. + * Exit a parse tree produced by `PostgreSqlParser.xml_namespace_el`. * @param ctx the parse tree */ - exitColumnref?: (ctx: ColumnrefContext) => void; + exitXml_namespace_el?: (ctx: Xml_namespace_elContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.indirection_el`. + * Enter a parse tree produced by `PostgreSqlParser.typename`. * @param ctx the parse tree */ - enterIndirection_el?: (ctx: Indirection_elContext) => void; + enterTypename?: (ctx: TypenameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.indirection_el`. + * Exit a parse tree produced by `PostgreSqlParser.typename`. * @param ctx the parse tree */ - exitIndirection_el?: (ctx: Indirection_elContext) => void; + exitTypename?: (ctx: TypenameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_slice_bound`. + * Enter a parse tree produced by `PostgreSqlParser.simpletypename`. * @param ctx the parse tree */ - enterOpt_slice_bound?: (ctx: Opt_slice_boundContext) => void; + enterSimpletypename?: (ctx: SimpletypenameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_slice_bound`. + * Exit a parse tree produced by `PostgreSqlParser.simpletypename`. * @param ctx the parse tree */ - exitOpt_slice_bound?: (ctx: Opt_slice_boundContext) => void; + exitSimpletypename?: (ctx: SimpletypenameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.indirection`. + * Enter a parse tree produced by `PostgreSqlParser.consttypename`. * @param ctx the parse tree */ - enterIndirection?: (ctx: IndirectionContext) => void; + enterConsttypename?: (ctx: ConsttypenameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.indirection`. + * Exit a parse tree produced by `PostgreSqlParser.consttypename`. * @param ctx the parse tree */ - exitIndirection?: (ctx: IndirectionContext) => void; + exitConsttypename?: (ctx: ConsttypenameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_indirection`. + * Enter a parse tree produced by `PostgreSqlParser.numeric`. * @param ctx the parse tree */ - enterOpt_indirection?: (ctx: Opt_indirectionContext) => void; + enterNumeric?: (ctx: NumericContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_indirection`. + * Exit a parse tree produced by `PostgreSqlParser.numeric`. * @param ctx the parse tree */ - exitOpt_indirection?: (ctx: Opt_indirectionContext) => void; + exitNumeric?: (ctx: NumericContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_target_list`. + * Enter a parse tree produced by `PostgreSqlParser.opt_float`. * @param ctx the parse tree */ - enterOpt_target_list?: (ctx: Opt_target_listContext) => void; + enterOpt_float?: (ctx: Opt_floatContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_target_list`. + * Exit a parse tree produced by `PostgreSqlParser.opt_float`. * @param ctx the parse tree */ - exitOpt_target_list?: (ctx: Opt_target_listContext) => void; + exitOpt_float?: (ctx: Opt_floatContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.target_list`. + * Enter a parse tree produced by `PostgreSqlParser.bit`. * @param ctx the parse tree */ - enterTarget_list?: (ctx: Target_listContext) => void; + enterBit?: (ctx: BitContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.target_list`. + * Exit a parse tree produced by `PostgreSqlParser.bit`. * @param ctx the parse tree */ - exitTarget_list?: (ctx: Target_listContext) => void; + exitBit?: (ctx: BitContext) => void; /** - * Enter a parse tree produced by the `target_label` - * labeled alternative in `PostgreSqlParser.target_el`. + * Enter a parse tree produced by `PostgreSqlParser.character`. * @param ctx the parse tree */ - enterTarget_label?: (ctx: Target_labelContext) => void; + enterCharacter?: (ctx: CharacterContext) => void; /** - * Exit a parse tree produced by the `target_label` - * labeled alternative in `PostgreSqlParser.target_el`. + * Exit a parse tree produced by `PostgreSqlParser.character`. * @param ctx the parse tree */ - exitTarget_label?: (ctx: Target_labelContext) => void; + exitCharacter?: (ctx: CharacterContext) => void; /** - * Enter a parse tree produced by the `target_star` - * labeled alternative in `PostgreSqlParser.target_el`. + * Enter a parse tree produced by `PostgreSqlParser.constdatetime`. * @param ctx the parse tree */ - enterTarget_star?: (ctx: Target_starContext) => void; + enterConstdatetime?: (ctx: ConstdatetimeContext) => void; /** - * Exit a parse tree produced by the `target_star` - * labeled alternative in `PostgreSqlParser.target_el`. + * Exit a parse tree produced by `PostgreSqlParser.constdatetime`. * @param ctx the parse tree */ - exitTarget_star?: (ctx: Target_starContext) => void; + exitConstdatetime?: (ctx: ConstdatetimeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.qualified_name_list`. + * Enter a parse tree produced by `PostgreSqlParser.opt_interval`. * @param ctx the parse tree */ - enterQualified_name_list?: (ctx: Qualified_name_listContext) => void; + enterOpt_interval?: (ctx: Opt_intervalContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.qualified_name_list`. + * Exit a parse tree produced by `PostgreSqlParser.opt_interval`. * @param ctx the parse tree */ - exitQualified_name_list?: (ctx: Qualified_name_listContext) => void; + exitOpt_interval?: (ctx: Opt_intervalContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.table_name_list`. + * Enter a parse tree produced by `PostgreSqlParser.interval_second`. * @param ctx the parse tree */ - enterTable_name_list?: (ctx: Table_name_listContext) => void; + enterInterval_second?: (ctx: Interval_secondContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.table_name_list`. + * Exit a parse tree produced by `PostgreSqlParser.interval_second`. * @param ctx the parse tree */ - exitTable_name_list?: (ctx: Table_name_listContext) => void; + exitInterval_second?: (ctx: Interval_secondContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.schema_name_list`. + * Enter a parse tree produced by `PostgreSqlParser.comparisonOperator`. * @param ctx the parse tree */ - enterSchema_name_list?: (ctx: Schema_name_listContext) => void; + enterComparisonOperator?: (ctx: ComparisonOperatorContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.schema_name_list`. + * Exit a parse tree produced by `PostgreSqlParser.comparisonOperator`. * @param ctx the parse tree */ - exitSchema_name_list?: (ctx: Schema_name_listContext) => void; + exitComparisonOperator?: (ctx: ComparisonOperatorContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.database_nameList`. + * Enter a parse tree produced by `PostgreSqlParser.expression`. * @param ctx the parse tree */ - enterDatabase_nameList?: (ctx: Database_nameListContext) => void; + enterExpression?: (ctx: ExpressionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.database_nameList`. + * Exit a parse tree produced by `PostgreSqlParser.expression`. * @param ctx the parse tree */ - exitDatabase_nameList?: (ctx: Database_nameListContext) => void; + exitExpression?: (ctx: ExpressionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.procedure_name_list`. + * Enter a parse tree produced by the `logicalNot` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree */ - enterProcedure_name_list?: (ctx: Procedure_name_listContext) => void; + enterLogicalNot?: (ctx: LogicalNotContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.procedure_name_list`. + * Exit a parse tree produced by the `logicalNot` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree */ - exitProcedure_name_list?: (ctx: Procedure_name_listContext) => void; + exitLogicalNot?: (ctx: LogicalNotContext) => void; /** - * Enter a parse tree produced by the `tablespaceNameCreate` - * labeled alternative in `PostgreSqlParser.tablespace_name_create`. + * Enter a parse tree produced by the `predicated` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree */ - enterTablespaceNameCreate?: (ctx: TablespaceNameCreateContext) => void; + enterPredicated?: (ctx: PredicatedContext) => void; /** - * Exit a parse tree produced by the `tablespaceNameCreate` - * labeled alternative in `PostgreSqlParser.tablespace_name_create`. + * Exit a parse tree produced by the `predicated` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree */ - exitTablespaceNameCreate?: (ctx: TablespaceNameCreateContext) => void; + exitPredicated?: (ctx: PredicatedContext) => void; /** - * Enter a parse tree produced by the `tablespaceName` - * labeled alternative in `PostgreSqlParser.tablespace_name`. + * Enter a parse tree produced by the `logicalBinary` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree */ - enterTablespaceName?: (ctx: TablespaceNameContext) => void; + enterLogicalBinary?: (ctx: LogicalBinaryContext) => void; /** - * Exit a parse tree produced by the `tablespaceName` - * labeled alternative in `PostgreSqlParser.tablespace_name`. + * Exit a parse tree produced by the `logicalBinary` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree */ - exitTablespaceName?: (ctx: TablespaceNameContext) => void; + exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; /** - * Enter a parse tree produced by the `tableNameCreate` - * labeled alternative in `PostgreSqlParser.table_name_create`. + * Enter a parse tree produced by the `comparison` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterTableNameCreate?: (ctx: TableNameCreateContext) => void; + enterComparison?: (ctx: ComparisonContext) => void; /** - * Exit a parse tree produced by the `tableNameCreate` - * labeled alternative in `PostgreSqlParser.table_name_create`. + * Exit a parse tree produced by the `comparison` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitTableNameCreate?: (ctx: TableNameCreateContext) => void; + exitComparison?: (ctx: ComparisonContext) => void; /** - * Enter a parse tree produced by the `tableName` - * labeled alternative in `PostgreSqlParser.table_name`. + * Enter a parse tree produced by the `quantifiedComparison` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterTableName?: (ctx: TableNameContext) => void; + enterQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; /** - * Exit a parse tree produced by the `tableName` - * labeled alternative in `PostgreSqlParser.table_name`. + * Exit a parse tree produced by the `quantifiedComparison` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitTableName?: (ctx: TableNameContext) => void; + exitQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; /** - * Enter a parse tree produced by the `viewNameCreate` - * labeled alternative in `PostgreSqlParser.view_name_create`. + * Enter a parse tree produced by the `between` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; + enterBetween?: (ctx: BetweenContext) => void; /** - * Exit a parse tree produced by the `viewNameCreate` - * labeled alternative in `PostgreSqlParser.view_name_create`. + * Exit a parse tree produced by the `between` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; + exitBetween?: (ctx: BetweenContext) => void; /** - * Enter a parse tree produced by the `viewName` - * labeled alternative in `PostgreSqlParser.view_name`. + * Enter a parse tree produced by the `inList` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterViewName?: (ctx: ViewNameContext) => void; + enterInList?: (ctx: InListContext) => void; /** - * Exit a parse tree produced by the `viewName` - * labeled alternative in `PostgreSqlParser.view_name`. + * Exit a parse tree produced by the `inList` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitViewName?: (ctx: ViewNameContext) => void; + exitInList?: (ctx: InListContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.qualified_name`. + * Enter a parse tree produced by the `inSubquery` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterQualified_name?: (ctx: Qualified_nameContext) => void; + enterInSubquery?: (ctx: InSubqueryContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.qualified_name`. + * Exit a parse tree produced by the `inSubquery` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitQualified_name?: (ctx: Qualified_nameContext) => void; + exitInSubquery?: (ctx: InSubqueryContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.tablespace_name_list`. + * Enter a parse tree produced by the `like` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterTablespace_name_list?: (ctx: Tablespace_name_listContext) => void; + enterLike?: (ctx: LikeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.tablespace_name_list`. + * Exit a parse tree produced by the `like` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitTablespace_name_list?: (ctx: Tablespace_name_listContext) => void; + exitLike?: (ctx: LikeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.name_list`. + * Enter a parse tree produced by the `nullPredicate` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterName_list?: (ctx: Name_listContext) => void; + enterNullPredicate?: (ctx: NullPredicateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.name_list`. + * Exit a parse tree produced by the `nullPredicate` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitName_list?: (ctx: Name_listContext) => void; + exitNullPredicate?: (ctx: NullPredicateContext) => void; /** - * Enter a parse tree produced by the `databaseNameCreate` - * labeled alternative in `PostgreSqlParser.database_name_create`. + * Enter a parse tree produced by the `distinctFrom` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - enterDatabaseNameCreate?: (ctx: DatabaseNameCreateContext) => void; + enterDistinctFrom?: (ctx: DistinctFromContext) => void; /** - * Exit a parse tree produced by the `databaseNameCreate` - * labeled alternative in `PostgreSqlParser.database_name_create`. + * Exit a parse tree produced by the `distinctFrom` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree */ - exitDatabaseNameCreate?: (ctx: DatabaseNameCreateContext) => void; + exitDistinctFrom?: (ctx: DistinctFromContext) => void; /** - * Enter a parse tree produced by the `databaseName` - * labeled alternative in `PostgreSqlParser.database_name`. + * Enter a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - enterDatabaseName?: (ctx: DatabaseNameContext) => void; + enterValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; /** - * Exit a parse tree produced by the `databaseName` - * labeled alternative in `PostgreSqlParser.database_name`. + * Exit a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - exitDatabaseName?: (ctx: DatabaseNameContext) => void; + exitValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => void; /** - * Enter a parse tree produced by the `schemaName` - * labeled alternative in `PostgreSqlParser.schema_name`. + * Enter a parse tree produced by the `concatenation` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - enterSchemaName?: (ctx: SchemaNameContext) => void; + enterConcatenation?: (ctx: ConcatenationContext) => void; /** - * Exit a parse tree produced by the `schemaName` - * labeled alternative in `PostgreSqlParser.schema_name`. + * Exit a parse tree produced by the `concatenation` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - exitSchemaName?: (ctx: SchemaNameContext) => void; + exitConcatenation?: (ctx: ConcatenationContext) => void; /** - * Enter a parse tree produced by the `routineNameCreate` - * labeled alternative in `PostgreSqlParser.routine_name_create`. + * Enter a parse tree produced by the `arithmeticBinary` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - enterRoutineNameCreate?: (ctx: RoutineNameCreateContext) => void; + enterArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; /** - * Exit a parse tree produced by the `routineNameCreate` - * labeled alternative in `PostgreSqlParser.routine_name_create`. + * Exit a parse tree produced by the `arithmeticBinary` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - exitRoutineNameCreate?: (ctx: RoutineNameCreateContext) => void; + exitArithmeticBinary?: (ctx: ArithmeticBinaryContext) => void; /** - * Enter a parse tree produced by the `routineName` - * labeled alternative in `PostgreSqlParser.routine_name`. + * Enter a parse tree produced by the `arithmeticUnary` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - enterRoutineName?: (ctx: RoutineNameContext) => void; + enterArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; /** - * Exit a parse tree produced by the `routineName` - * labeled alternative in `PostgreSqlParser.routine_name`. + * Exit a parse tree produced by the `arithmeticUnary` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - exitRoutineName?: (ctx: RoutineNameContext) => void; + exitArithmeticUnary?: (ctx: ArithmeticUnaryContext) => void; /** - * Enter a parse tree produced by the `procedureName` - * labeled alternative in `PostgreSqlParser.procedure_name`. + * Enter a parse tree produced by the `atTimeZone` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - enterProcedureName?: (ctx: ProcedureNameContext) => void; + enterAtTimeZone?: (ctx: AtTimeZoneContext) => void; /** - * Exit a parse tree produced by the `procedureName` - * labeled alternative in `PostgreSqlParser.procedure_name`. + * Exit a parse tree produced by the `atTimeZone` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree */ - exitProcedureName?: (ctx: ProcedureNameContext) => void; + exitAtTimeZone?: (ctx: AtTimeZoneContext) => void; /** - * Enter a parse tree produced by the `procedureNameCreate` - * labeled alternative in `PostgreSqlParser.procedure_name_create`. + * Enter a parse tree produced by `PostgreSqlParser.primaryExpression`. * @param ctx the parse tree */ - enterProcedureNameCreate?: (ctx: ProcedureNameCreateContext) => void; + enterPrimaryExpression?: (ctx: PrimaryExpressionContext) => void; /** - * Exit a parse tree produced by the `procedureNameCreate` - * labeled alternative in `PostgreSqlParser.procedure_name_create`. + * Exit a parse tree produced by `PostgreSqlParser.primaryExpression`. * @param ctx the parse tree */ - exitProcedureNameCreate?: (ctx: ProcedureNameCreateContext) => void; + exitPrimaryExpression?: (ctx: PrimaryExpressionContext) => void; /** - * Enter a parse tree produced by the `columnName` - * labeled alternative in `PostgreSqlParser.column_name`. + * Enter a parse tree produced by `PostgreSqlParser.func_application`. * @param ctx the parse tree */ - enterColumnName?: (ctx: ColumnNameContext) => void; + enterFunc_application?: (ctx: Func_applicationContext) => void; /** - * Exit a parse tree produced by the `columnName` - * labeled alternative in `PostgreSqlParser.column_name`. + * Exit a parse tree produced by `PostgreSqlParser.func_application`. * @param ctx the parse tree */ - exitColumnName?: (ctx: ColumnNameContext) => void; + exitFunc_application?: (ctx: Func_applicationContext) => void; /** - * Enter a parse tree produced by the `columnNameMatch` - * labeled alternative in `PostgreSqlParser.column_name`. + * Enter a parse tree produced by `PostgreSqlParser.func_expr`. * @param ctx the parse tree */ - enterColumnNameMatch?: (ctx: ColumnNameMatchContext) => void; + enterFunc_expr?: (ctx: Func_exprContext) => void; /** - * Exit a parse tree produced by the `columnNameMatch` - * labeled alternative in `PostgreSqlParser.column_name`. + * Exit a parse tree produced by `PostgreSqlParser.func_expr`. * @param ctx the parse tree */ - exitColumnNameMatch?: (ctx: ColumnNameMatchContext) => void; + exitFunc_expr?: (ctx: Func_exprContext) => void; /** - * Enter a parse tree produced by the `columnNameCreate` - * labeled alternative in `PostgreSqlParser.column_name_create`. + * Enter a parse tree produced by `PostgreSqlParser.func_expr_windowless`. * @param ctx the parse tree */ - enterColumnNameCreate?: (ctx: ColumnNameCreateContext) => void; + enterFunc_expr_windowless?: (ctx: Func_expr_windowlessContext) => void; /** - * Exit a parse tree produced by the `columnNameCreate` - * labeled alternative in `PostgreSqlParser.column_name_create`. + * Exit a parse tree produced by `PostgreSqlParser.func_expr_windowless`. * @param ctx the parse tree */ - exitColumnNameCreate?: (ctx: ColumnNameCreateContext) => void; + exitFunc_expr_windowless?: (ctx: Func_expr_windowlessContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.name`. + * Enter a parse tree produced by `PostgreSqlParser.func_expr_common_subexpr`. * @param ctx the parse tree */ - enterName?: (ctx: NameContext) => void; + enterFunc_expr_common_subexpr?: (ctx: Func_expr_common_subexprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.name`. + * Exit a parse tree produced by `PostgreSqlParser.func_expr_common_subexpr`. * @param ctx the parse tree */ - exitName?: (ctx: NameContext) => void; + exitFunc_expr_common_subexpr?: (ctx: Func_expr_common_subexprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.attr_name`. + * Enter a parse tree produced by `PostgreSqlParser.xml_attribute_list`. * @param ctx the parse tree */ - enterAttr_name?: (ctx: Attr_nameContext) => void; + enterXml_attribute_list?: (ctx: Xml_attribute_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.attr_name`. + * Exit a parse tree produced by `PostgreSqlParser.xml_attribute_list`. * @param ctx the parse tree */ - exitAttr_name?: (ctx: Attr_nameContext) => void; + exitXml_attribute_list?: (ctx: Xml_attribute_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.file_name`. + * Enter a parse tree produced by `PostgreSqlParser.xml_attribute_el`. * @param ctx the parse tree */ - enterFile_name?: (ctx: File_nameContext) => void; + enterXml_attribute_el?: (ctx: Xml_attribute_elContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.file_name`. + * Exit a parse tree produced by `PostgreSqlParser.xml_attribute_el`. * @param ctx the parse tree */ - exitFile_name?: (ctx: File_nameContext) => void; + exitXml_attribute_el?: (ctx: Xml_attribute_elContext) => void; /** - * Enter a parse tree produced by the `functionNameCreate` - * labeled alternative in `PostgreSqlParser.function_name_create`. + * Enter a parse tree produced by `PostgreSqlParser.document_or_content`. * @param ctx the parse tree */ - enterFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; + enterDocument_or_content?: (ctx: Document_or_contentContext) => void; /** - * Exit a parse tree produced by the `functionNameCreate` - * labeled alternative in `PostgreSqlParser.function_name_create`. + * Exit a parse tree produced by `PostgreSqlParser.document_or_content`. * @param ctx the parse tree */ - exitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; + exitDocument_or_content?: (ctx: Document_or_contentContext) => void; /** - * Enter a parse tree produced by the `functionName` - * labeled alternative in `PostgreSqlParser.function_name`. + * Enter a parse tree produced by `PostgreSqlParser.xmlexists_argument`. * @param ctx the parse tree */ - enterFunctionName?: (ctx: FunctionNameContext) => void; + enterXmlexists_argument?: (ctx: Xmlexists_argumentContext) => void; /** - * Exit a parse tree produced by the `functionName` - * labeled alternative in `PostgreSqlParser.function_name`. + * Exit a parse tree produced by `PostgreSqlParser.xmlexists_argument`. * @param ctx the parse tree */ - exitFunctionName?: (ctx: FunctionNameContext) => void; + exitXmlexists_argument?: (ctx: Xmlexists_argumentContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.usual_name`. + * Enter a parse tree produced by `PostgreSqlParser.xml_passing_mech`. * @param ctx the parse tree */ - enterUsual_name?: (ctx: Usual_nameContext) => void; + enterXml_passing_mech?: (ctx: Xml_passing_mechContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.usual_name`. + * Exit a parse tree produced by `PostgreSqlParser.xml_passing_mech`. * @param ctx the parse tree */ - exitUsual_name?: (ctx: Usual_nameContext) => void; + exitXml_passing_mech?: (ctx: Xml_passing_mechContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.aexprconst`. + * Enter a parse tree produced by `PostgreSqlParser.window_clause`. * @param ctx the parse tree */ - enterAexprconst?: (ctx: AexprconstContext) => void; + enterWindow_clause?: (ctx: Window_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.aexprconst`. + * Exit a parse tree produced by `PostgreSqlParser.window_clause`. * @param ctx the parse tree */ - exitAexprconst?: (ctx: AexprconstContext) => void; + exitWindow_clause?: (ctx: Window_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.xconst`. + * Enter a parse tree produced by `PostgreSqlParser.window_definition`. * @param ctx the parse tree */ - enterXconst?: (ctx: XconstContext) => void; + enterWindow_definition?: (ctx: Window_definitionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.xconst`. + * Exit a parse tree produced by `PostgreSqlParser.window_definition`. * @param ctx the parse tree */ - exitXconst?: (ctx: XconstContext) => void; + exitWindow_definition?: (ctx: Window_definitionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.bconst`. + * Enter a parse tree produced by `PostgreSqlParser.over_clause`. * @param ctx the parse tree */ - enterBconst?: (ctx: BconstContext) => void; + enterOver_clause?: (ctx: Over_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.bconst`. + * Exit a parse tree produced by `PostgreSqlParser.over_clause`. * @param ctx the parse tree */ - exitBconst?: (ctx: BconstContext) => void; + exitOver_clause?: (ctx: Over_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.fconst`. + * Enter a parse tree produced by `PostgreSqlParser.window_specification`. * @param ctx the parse tree */ - enterFconst?: (ctx: FconstContext) => void; + enterWindow_specification?: (ctx: Window_specificationContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.fconst`. + * Exit a parse tree produced by `PostgreSqlParser.window_specification`. * @param ctx the parse tree */ - exitFconst?: (ctx: FconstContext) => void; + exitWindow_specification?: (ctx: Window_specificationContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.iconst`. + * Enter a parse tree produced by `PostgreSqlParser.opt_frame_clause`. * @param ctx the parse tree */ - enterIconst?: (ctx: IconstContext) => void; + enterOpt_frame_clause?: (ctx: Opt_frame_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.iconst`. + * Exit a parse tree produced by `PostgreSqlParser.opt_frame_clause`. * @param ctx the parse tree */ - exitIconst?: (ctx: IconstContext) => void; + exitOpt_frame_clause?: (ctx: Opt_frame_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.sconst`. + * Enter a parse tree produced by `PostgreSqlParser.frame_bound`. * @param ctx the parse tree */ - enterSconst?: (ctx: SconstContext) => void; + enterFrame_bound?: (ctx: Frame_boundContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.sconst`. + * Exit a parse tree produced by `PostgreSqlParser.frame_bound`. * @param ctx the parse tree */ - exitSconst?: (ctx: SconstContext) => void; + exitFrame_bound?: (ctx: Frame_boundContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.anysconst`. + * Enter a parse tree produced by `PostgreSqlParser.row`. * @param ctx the parse tree */ - enterAnysconst?: (ctx: AnysconstContext) => void; + enterRow?: (ctx: RowContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.anysconst`. + * Exit a parse tree produced by `PostgreSqlParser.row`. * @param ctx the parse tree */ - exitAnysconst?: (ctx: AnysconstContext) => void; + exitRow?: (ctx: RowContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_uescape`. + * Enter a parse tree produced by `PostgreSqlParser.explicit_row`. * @param ctx the parse tree */ - enterOpt_uescape?: (ctx: Opt_uescapeContext) => void; + enterExplicit_row?: (ctx: Explicit_rowContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_uescape`. + * Exit a parse tree produced by `PostgreSqlParser.explicit_row`. * @param ctx the parse tree */ - exitOpt_uescape?: (ctx: Opt_uescapeContext) => void; + exitExplicit_row?: (ctx: Explicit_rowContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.signediconst`. + * Enter a parse tree produced by `PostgreSqlParser.sub_type`. * @param ctx the parse tree */ - enterSignediconst?: (ctx: SignediconstContext) => void; + enterSub_type?: (ctx: Sub_typeContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.signediconst`. + * Exit a parse tree produced by `PostgreSqlParser.sub_type`. * @param ctx the parse tree */ - exitSignediconst?: (ctx: SignediconstContext) => void; + exitSub_type?: (ctx: Sub_typeContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.groupname`. + * Enter a parse tree produced by `PostgreSqlParser.all_op`. * @param ctx the parse tree */ - enterGroupname?: (ctx: GroupnameContext) => void; + enterAll_op?: (ctx: All_opContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.groupname`. + * Exit a parse tree produced by `PostgreSqlParser.all_op`. * @param ctx the parse tree */ - exitGroupname?: (ctx: GroupnameContext) => void; + exitAll_op?: (ctx: All_opContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.roleid`. + * Enter a parse tree produced by `PostgreSqlParser.mathop`. * @param ctx the parse tree */ - enterRoleid?: (ctx: RoleidContext) => void; + enterMathop?: (ctx: MathopContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.roleid`. + * Exit a parse tree produced by `PostgreSqlParser.mathop`. * @param ctx the parse tree */ - exitRoleid?: (ctx: RoleidContext) => void; + exitMathop?: (ctx: MathopContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.rolespec`. + * Enter a parse tree produced by `PostgreSqlParser.qual_op`. * @param ctx the parse tree */ - enterRolespec?: (ctx: RolespecContext) => void; + enterQual_op?: (ctx: Qual_opContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.rolespec`. + * Exit a parse tree produced by `PostgreSqlParser.qual_op`. * @param ctx the parse tree */ - exitRolespec?: (ctx: RolespecContext) => void; + exitQual_op?: (ctx: Qual_opContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.role_list`. + * Enter a parse tree produced by `PostgreSqlParser.qual_all_op`. * @param ctx the parse tree */ - enterRole_list?: (ctx: Role_listContext) => void; + enterQual_all_op?: (ctx: Qual_all_opContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.role_list`. + * Exit a parse tree produced by `PostgreSqlParser.qual_all_op`. * @param ctx the parse tree */ - exitRole_list?: (ctx: Role_listContext) => void; + exitQual_all_op?: (ctx: Qual_all_opContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.colid`. + * Enter a parse tree produced by `PostgreSqlParser.subquery_Op`. * @param ctx the parse tree */ - enterColid?: (ctx: ColidContext) => void; + enterSubquery_Op?: (ctx: Subquery_OpContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.colid`. + * Exit a parse tree produced by `PostgreSqlParser.subquery_Op`. * @param ctx the parse tree */ - exitColid?: (ctx: ColidContext) => void; + exitSubquery_Op?: (ctx: Subquery_OpContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.index_method_choices`. + * Enter a parse tree produced by `PostgreSqlParser.expr_list`. * @param ctx the parse tree */ - enterIndex_method_choices?: (ctx: Index_method_choicesContext) => void; + enterExpr_list?: (ctx: Expr_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.index_method_choices`. + * Exit a parse tree produced by `PostgreSqlParser.expr_list`. * @param ctx the parse tree */ - exitIndex_method_choices?: (ctx: Index_method_choicesContext) => void; + exitExpr_list?: (ctx: Expr_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.exclude_element`. + * Enter a parse tree produced by `PostgreSqlParser.column_expr`. * @param ctx the parse tree */ - enterExclude_element?: (ctx: Exclude_elementContext) => void; + enterColumn_expr?: (ctx: Column_exprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.exclude_element`. + * Exit a parse tree produced by `PostgreSqlParser.column_expr`. * @param ctx the parse tree */ - exitExclude_element?: (ctx: Exclude_elementContext) => void; + exitColumn_expr?: (ctx: Column_exprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.index_paramenters`. + * Enter a parse tree produced by `PostgreSqlParser.column_expr_noparen`. * @param ctx the parse tree */ - enterIndex_paramenters?: (ctx: Index_paramentersContext) => void; + enterColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.index_paramenters`. + * Exit a parse tree produced by `PostgreSqlParser.column_expr_noparen`. * @param ctx the parse tree */ - exitIndex_paramenters?: (ctx: Index_paramentersContext) => void; + exitColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.type_function_name`. + * Enter a parse tree produced by `PostgreSqlParser.func_arg_list`. * @param ctx the parse tree */ - enterType_function_name?: (ctx: Type_function_nameContext) => void; + enterFunc_arg_list?: (ctx: Func_arg_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.type_function_name`. + * Exit a parse tree produced by `PostgreSqlParser.func_arg_list`. * @param ctx the parse tree */ - exitType_function_name?: (ctx: Type_function_nameContext) => void; + exitFunc_arg_list?: (ctx: Func_arg_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.type_usual_name`. + * Enter a parse tree produced by `PostgreSqlParser.func_arg_expr`. * @param ctx the parse tree */ - enterType_usual_name?: (ctx: Type_usual_nameContext) => void; + enterFunc_arg_expr?: (ctx: Func_arg_exprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.type_usual_name`. + * Exit a parse tree produced by `PostgreSqlParser.func_arg_expr`. * @param ctx the parse tree */ - exitType_usual_name?: (ctx: Type_usual_nameContext) => void; + exitFunc_arg_expr?: (ctx: Func_arg_exprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.nonreservedword_column`. + * Enter a parse tree produced by `PostgreSqlParser.array_expr`. * @param ctx the parse tree */ - enterNonreservedword_column?: (ctx: Nonreservedword_columnContext) => void; + enterArray_expr?: (ctx: Array_exprContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.nonreservedword_column`. + * Exit a parse tree produced by `PostgreSqlParser.array_expr`. * @param ctx the parse tree */ - exitNonreservedword_column?: (ctx: Nonreservedword_columnContext) => void; + exitArray_expr?: (ctx: Array_exprContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.nonreservedword`. + * Enter a parse tree produced by `PostgreSqlParser.extract_arg`. * @param ctx the parse tree */ - enterNonreservedword?: (ctx: NonreservedwordContext) => void; + enterExtract_arg?: (ctx: Extract_argContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.nonreservedword`. + * Exit a parse tree produced by `PostgreSqlParser.extract_arg`. * @param ctx the parse tree */ - exitNonreservedword?: (ctx: NonreservedwordContext) => void; + exitExtract_arg?: (ctx: Extract_argContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.collabel`. + * Enter a parse tree produced by `PostgreSqlParser.unicode_normal_form`. * @param ctx the parse tree */ - enterCollabel?: (ctx: CollabelContext) => void; + enterUnicode_normal_form?: (ctx: Unicode_normal_formContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.collabel`. + * Exit a parse tree produced by `PostgreSqlParser.unicode_normal_form`. * @param ctx the parse tree */ - exitCollabel?: (ctx: CollabelContext) => void; + exitUnicode_normal_form?: (ctx: Unicode_normal_formContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.identifier`. + * Enter a parse tree produced by `PostgreSqlParser.substr_list`. * @param ctx the parse tree */ - enterIdentifier?: (ctx: IdentifierContext) => void; + enterSubstr_list?: (ctx: Substr_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.identifier`. + * Exit a parse tree produced by `PostgreSqlParser.substr_list`. * @param ctx the parse tree */ - exitIdentifier?: (ctx: IdentifierContext) => void; + exitSubstr_list?: (ctx: Substr_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.plsqlidentifier`. + * Enter a parse tree produced by `PostgreSqlParser.when_clause`. * @param ctx the parse tree */ - enterPlsqlidentifier?: (ctx: PlsqlidentifierContext) => void; + enterWhen_clause?: (ctx: When_clauseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.plsqlidentifier`. + * Exit a parse tree produced by `PostgreSqlParser.when_clause`. * @param ctx the parse tree */ - exitPlsqlidentifier?: (ctx: PlsqlidentifierContext) => void; + exitWhen_clause?: (ctx: When_clauseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.unreserved_keyword`. + * Enter a parse tree produced by `PostgreSqlParser.indirection_el`. * @param ctx the parse tree */ - enterUnreserved_keyword?: (ctx: Unreserved_keywordContext) => void; + enterIndirection_el?: (ctx: Indirection_elContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.unreserved_keyword`. + * Exit a parse tree produced by `PostgreSqlParser.indirection_el`. * @param ctx the parse tree */ - exitUnreserved_keyword?: (ctx: Unreserved_keywordContext) => void; + exitIndirection_el?: (ctx: Indirection_elContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.col_name_keyword`. + * Enter a parse tree produced by `PostgreSqlParser.indirection`. * @param ctx the parse tree */ - enterCol_name_keyword?: (ctx: Col_name_keywordContext) => void; + enterIndirection?: (ctx: IndirectionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.col_name_keyword`. + * Exit a parse tree produced by `PostgreSqlParser.indirection`. * @param ctx the parse tree */ - exitCol_name_keyword?: (ctx: Col_name_keywordContext) => void; + exitIndirection?: (ctx: IndirectionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.type_func_name_keyword`. + * Enter a parse tree produced by `PostgreSqlParser.opt_indirection`. * @param ctx the parse tree */ - enterType_func_name_keyword?: (ctx: Type_func_name_keywordContext) => void; + enterOpt_indirection?: (ctx: Opt_indirectionContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.type_func_name_keyword`. + * Exit a parse tree produced by `PostgreSqlParser.opt_indirection`. * @param ctx the parse tree */ - exitType_func_name_keyword?: (ctx: Type_func_name_keywordContext) => void; + exitOpt_indirection?: (ctx: Opt_indirectionContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.reserved_keyword`. + * Enter a parse tree produced by `PostgreSqlParser.target_list`. * @param ctx the parse tree */ - enterReserved_keyword?: (ctx: Reserved_keywordContext) => void; + enterTarget_list?: (ctx: Target_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.reserved_keyword`. + * Exit a parse tree produced by `PostgreSqlParser.target_list`. * @param ctx the parse tree */ - exitReserved_keyword?: (ctx: Reserved_keywordContext) => void; + exitTarget_list?: (ctx: Target_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.pl_function`. + * Enter a parse tree produced by the `target_label` + * labeled alternative in `PostgreSqlParser.target_el`. * @param ctx the parse tree */ - enterPl_function?: (ctx: Pl_functionContext) => void; + enterTarget_label?: (ctx: Target_labelContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.pl_function`. + * Exit a parse tree produced by the `target_label` + * labeled alternative in `PostgreSqlParser.target_el`. * @param ctx the parse tree */ - exitPl_function?: (ctx: Pl_functionContext) => void; + exitTarget_label?: (ctx: Target_labelContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.comp_options`. + * Enter a parse tree produced by the `target_star` + * labeled alternative in `PostgreSqlParser.target_el`. * @param ctx the parse tree */ - enterComp_options?: (ctx: Comp_optionsContext) => void; + enterTarget_star?: (ctx: Target_starContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.comp_options`. + * Exit a parse tree produced by the `target_star` + * labeled alternative in `PostgreSqlParser.target_el`. * @param ctx the parse tree */ - exitComp_options?: (ctx: Comp_optionsContext) => void; + exitTarget_star?: (ctx: Target_starContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.comp_option`. + * Enter a parse tree produced by `PostgreSqlParser.qualified_name_list`. * @param ctx the parse tree */ - enterComp_option?: (ctx: Comp_optionContext) => void; + enterQualified_name_list?: (ctx: Qualified_name_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.comp_option`. + * Exit a parse tree produced by `PostgreSqlParser.qualified_name_list`. * @param ctx the parse tree */ - exitComp_option?: (ctx: Comp_optionContext) => void; + exitQualified_name_list?: (ctx: Qualified_name_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.sharp`. + * Enter a parse tree produced by `PostgreSqlParser.table_name_list`. * @param ctx the parse tree */ - enterSharp?: (ctx: SharpContext) => void; + enterTable_name_list?: (ctx: Table_name_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.sharp`. + * Exit a parse tree produced by `PostgreSqlParser.table_name_list`. * @param ctx the parse tree */ - exitSharp?: (ctx: SharpContext) => void; + exitTable_name_list?: (ctx: Table_name_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.option_value`. + * Enter a parse tree produced by `PostgreSqlParser.schema_name_list`. * @param ctx the parse tree */ - enterOption_value?: (ctx: Option_valueContext) => void; + enterSchema_name_list?: (ctx: Schema_name_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.option_value`. + * Exit a parse tree produced by `PostgreSqlParser.schema_name_list`. * @param ctx the parse tree */ - exitOption_value?: (ctx: Option_valueContext) => void; + exitSchema_name_list?: (ctx: Schema_name_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_semi`. + * Enter a parse tree produced by `PostgreSqlParser.database_nameList`. * @param ctx the parse tree */ - enterOpt_semi?: (ctx: Opt_semiContext) => void; + enterDatabase_nameList?: (ctx: Database_nameListContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_semi`. + * Exit a parse tree produced by `PostgreSqlParser.database_nameList`. * @param ctx the parse tree */ - exitOpt_semi?: (ctx: Opt_semiContext) => void; + exitDatabase_nameList?: (ctx: Database_nameListContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.pl_block`. + * Enter a parse tree produced by the `tablespaceNameCreate` + * labeled alternative in `PostgreSqlParser.tablespace_name_create`. * @param ctx the parse tree */ - enterPl_block?: (ctx: Pl_blockContext) => void; + enterTablespaceNameCreate?: (ctx: TablespaceNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.pl_block`. + * Exit a parse tree produced by the `tablespaceNameCreate` + * labeled alternative in `PostgreSqlParser.tablespace_name_create`. * @param ctx the parse tree */ - exitPl_block?: (ctx: Pl_blockContext) => void; + exitTablespaceNameCreate?: (ctx: TablespaceNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_sect`. + * Enter a parse tree produced by the `tablespaceName` + * labeled alternative in `PostgreSqlParser.tablespace_name`. * @param ctx the parse tree */ - enterDecl_sect?: (ctx: Decl_sectContext) => void; + enterTablespaceName?: (ctx: TablespaceNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_sect`. + * Exit a parse tree produced by the `tablespaceName` + * labeled alternative in `PostgreSqlParser.tablespace_name`. * @param ctx the parse tree */ - exitDecl_sect?: (ctx: Decl_sectContext) => void; + exitTablespaceName?: (ctx: TablespaceNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_start`. + * Enter a parse tree produced by the `tableNameCreate` + * labeled alternative in `PostgreSqlParser.table_name_create`. * @param ctx the parse tree */ - enterDecl_start?: (ctx: Decl_startContext) => void; + enterTableNameCreate?: (ctx: TableNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_start`. + * Exit a parse tree produced by the `tableNameCreate` + * labeled alternative in `PostgreSqlParser.table_name_create`. * @param ctx the parse tree */ - exitDecl_start?: (ctx: Decl_startContext) => void; + exitTableNameCreate?: (ctx: TableNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_stmts`. + * Enter a parse tree produced by the `tableName` + * labeled alternative in `PostgreSqlParser.table_name`. * @param ctx the parse tree */ - enterDecl_stmts?: (ctx: Decl_stmtsContext) => void; + enterTableName?: (ctx: TableNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_stmts`. + * Exit a parse tree produced by the `tableName` + * labeled alternative in `PostgreSqlParser.table_name`. * @param ctx the parse tree */ - exitDecl_stmts?: (ctx: Decl_stmtsContext) => void; + exitTableName?: (ctx: TableNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.label_decl`. + * Enter a parse tree produced by the `viewNameCreate` + * labeled alternative in `PostgreSqlParser.view_name_create`. * @param ctx the parse tree */ - enterLabel_decl?: (ctx: Label_declContext) => void; + enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.label_decl`. + * Exit a parse tree produced by the `viewNameCreate` + * labeled alternative in `PostgreSqlParser.view_name_create`. * @param ctx the parse tree */ - exitLabel_decl?: (ctx: Label_declContext) => void; + exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_stmt`. + * Enter a parse tree produced by the `viewName` + * labeled alternative in `PostgreSqlParser.view_name`. * @param ctx the parse tree */ - enterDecl_stmt?: (ctx: Decl_stmtContext) => void; + enterViewName?: (ctx: ViewNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_stmt`. + * Exit a parse tree produced by the `viewName` + * labeled alternative in `PostgreSqlParser.view_name`. * @param ctx the parse tree */ - exitDecl_stmt?: (ctx: Decl_stmtContext) => void; + exitViewName?: (ctx: ViewNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_statement`. + * Enter a parse tree produced by `PostgreSqlParser.qualified_name`. * @param ctx the parse tree */ - enterDecl_statement?: (ctx: Decl_statementContext) => void; + enterQualified_name?: (ctx: Qualified_nameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_statement`. + * Exit a parse tree produced by `PostgreSqlParser.qualified_name`. * @param ctx the parse tree */ - exitDecl_statement?: (ctx: Decl_statementContext) => void; + exitQualified_name?: (ctx: Qualified_nameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_scrollable`. + * Enter a parse tree produced by `PostgreSqlParser.tablespace_name_list`. * @param ctx the parse tree */ - enterOpt_scrollable?: (ctx: Opt_scrollableContext) => void; + enterTablespace_name_list?: (ctx: Tablespace_name_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_scrollable`. + * Exit a parse tree produced by `PostgreSqlParser.tablespace_name_list`. * @param ctx the parse tree */ - exitOpt_scrollable?: (ctx: Opt_scrollableContext) => void; + exitTablespace_name_list?: (ctx: Tablespace_name_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_cursor_query`. + * Enter a parse tree produced by `PostgreSqlParser.name_list`. * @param ctx the parse tree */ - enterDecl_cursor_query?: (ctx: Decl_cursor_queryContext) => void; + enterName_list?: (ctx: Name_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_cursor_query`. + * Exit a parse tree produced by `PostgreSqlParser.name_list`. * @param ctx the parse tree */ - exitDecl_cursor_query?: (ctx: Decl_cursor_queryContext) => void; + exitName_list?: (ctx: Name_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_cursor_args`. + * Enter a parse tree produced by the `databaseNameCreate` + * labeled alternative in `PostgreSqlParser.database_name_create`. * @param ctx the parse tree */ - enterDecl_cursor_args?: (ctx: Decl_cursor_argsContext) => void; + enterDatabaseNameCreate?: (ctx: DatabaseNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_cursor_args`. + * Exit a parse tree produced by the `databaseNameCreate` + * labeled alternative in `PostgreSqlParser.database_name_create`. * @param ctx the parse tree */ - exitDecl_cursor_args?: (ctx: Decl_cursor_argsContext) => void; + exitDatabaseNameCreate?: (ctx: DatabaseNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_cursor_arglist`. + * Enter a parse tree produced by the `databaseName` + * labeled alternative in `PostgreSqlParser.database_name`. * @param ctx the parse tree */ - enterDecl_cursor_arglist?: (ctx: Decl_cursor_arglistContext) => void; + enterDatabaseName?: (ctx: DatabaseNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_cursor_arglist`. + * Exit a parse tree produced by the `databaseName` + * labeled alternative in `PostgreSqlParser.database_name`. * @param ctx the parse tree */ - exitDecl_cursor_arglist?: (ctx: Decl_cursor_arglistContext) => void; + exitDatabaseName?: (ctx: DatabaseNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_cursor_arg`. + * Enter a parse tree produced by the `schemaName` + * labeled alternative in `PostgreSqlParser.schema_name`. * @param ctx the parse tree */ - enterDecl_cursor_arg?: (ctx: Decl_cursor_argContext) => void; + enterSchemaName?: (ctx: SchemaNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_cursor_arg`. + * Exit a parse tree produced by the `schemaName` + * labeled alternative in `PostgreSqlParser.schema_name`. * @param ctx the parse tree */ - exitDecl_cursor_arg?: (ctx: Decl_cursor_argContext) => void; + exitSchemaName?: (ctx: SchemaNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_is_for`. + * Enter a parse tree produced by the `routineNameCreate` + * labeled alternative in `PostgreSqlParser.routine_name_create`. * @param ctx the parse tree */ - enterDecl_is_for?: (ctx: Decl_is_forContext) => void; + enterRoutineNameCreate?: (ctx: RoutineNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_is_for`. + * Exit a parse tree produced by the `routineNameCreate` + * labeled alternative in `PostgreSqlParser.routine_name_create`. * @param ctx the parse tree */ - exitDecl_is_for?: (ctx: Decl_is_forContext) => void; + exitRoutineNameCreate?: (ctx: RoutineNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_aliasitem`. + * Enter a parse tree produced by the `routineName` + * labeled alternative in `PostgreSqlParser.routine_name`. * @param ctx the parse tree */ - enterDecl_aliasitem?: (ctx: Decl_aliasitemContext) => void; + enterRoutineName?: (ctx: RoutineNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_aliasitem`. + * Exit a parse tree produced by the `routineName` + * labeled alternative in `PostgreSqlParser.routine_name`. * @param ctx the parse tree */ - exitDecl_aliasitem?: (ctx: Decl_aliasitemContext) => void; + exitRoutineName?: (ctx: RoutineNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_varname`. + * Enter a parse tree produced by the `procedureName` + * labeled alternative in `PostgreSqlParser.procedure_name`. * @param ctx the parse tree */ - enterDecl_varname?: (ctx: Decl_varnameContext) => void; + enterProcedureName?: (ctx: ProcedureNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_varname`. + * Exit a parse tree produced by the `procedureName` + * labeled alternative in `PostgreSqlParser.procedure_name`. * @param ctx the parse tree */ - exitDecl_varname?: (ctx: Decl_varnameContext) => void; + exitProcedureName?: (ctx: ProcedureNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_const`. + * Enter a parse tree produced by the `procedureNameCreate` + * labeled alternative in `PostgreSqlParser.procedure_name_create`. * @param ctx the parse tree */ - enterDecl_const?: (ctx: Decl_constContext) => void; + enterProcedureNameCreate?: (ctx: ProcedureNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_const`. + * Exit a parse tree produced by the `procedureNameCreate` + * labeled alternative in `PostgreSqlParser.procedure_name_create`. * @param ctx the parse tree */ - exitDecl_const?: (ctx: Decl_constContext) => void; + exitProcedureNameCreate?: (ctx: ProcedureNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_datatype`. + * Enter a parse tree produced by the `columnName` + * labeled alternative in `PostgreSqlParser.column_name`. * @param ctx the parse tree */ - enterDecl_datatype?: (ctx: Decl_datatypeContext) => void; + enterColumnName?: (ctx: ColumnNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_datatype`. + * Exit a parse tree produced by the `columnName` + * labeled alternative in `PostgreSqlParser.column_name`. * @param ctx the parse tree */ - exitDecl_datatype?: (ctx: Decl_datatypeContext) => void; + exitColumnName?: (ctx: ColumnNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_collate`. + * Enter a parse tree produced by the `columnNameMatch` + * labeled alternative in `PostgreSqlParser.column_name`. * @param ctx the parse tree */ - enterDecl_collate?: (ctx: Decl_collateContext) => void; + enterColumnNameMatch?: (ctx: ColumnNameMatchContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_collate`. + * Exit a parse tree produced by the `columnNameMatch` + * labeled alternative in `PostgreSqlParser.column_name`. * @param ctx the parse tree */ - exitDecl_collate?: (ctx: Decl_collateContext) => void; + exitColumnNameMatch?: (ctx: ColumnNameMatchContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_notnull`. + * Enter a parse tree produced by the `columnNameCreate` + * labeled alternative in `PostgreSqlParser.column_name_create`. * @param ctx the parse tree */ - enterDecl_notnull?: (ctx: Decl_notnullContext) => void; + enterColumnNameCreate?: (ctx: ColumnNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_notnull`. + * Exit a parse tree produced by the `columnNameCreate` + * labeled alternative in `PostgreSqlParser.column_name_create`. * @param ctx the parse tree */ - exitDecl_notnull?: (ctx: Decl_notnullContext) => void; + exitColumnNameCreate?: (ctx: ColumnNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_defval`. + * Enter a parse tree produced by the `functionNameCreate` + * labeled alternative in `PostgreSqlParser.function_name_create`. * @param ctx the parse tree */ - enterDecl_defval?: (ctx: Decl_defvalContext) => void; + enterFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_defval`. + * Exit a parse tree produced by the `functionNameCreate` + * labeled alternative in `PostgreSqlParser.function_name_create`. * @param ctx the parse tree */ - exitDecl_defval?: (ctx: Decl_defvalContext) => void; + exitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.decl_defkey`. + * Enter a parse tree produced by the `functionName` + * labeled alternative in `PostgreSqlParser.function_name`. * @param ctx the parse tree */ - enterDecl_defkey?: (ctx: Decl_defkeyContext) => void; + enterFunctionName?: (ctx: FunctionNameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.decl_defkey`. + * Exit a parse tree produced by the `functionName` + * labeled alternative in `PostgreSqlParser.function_name`. * @param ctx the parse tree */ - exitDecl_defkey?: (ctx: Decl_defkeyContext) => void; + exitFunctionName?: (ctx: FunctionNameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.assign_operator`. + * Enter a parse tree produced by `PostgreSqlParser.sconst`. * @param ctx the parse tree */ - enterAssign_operator?: (ctx: Assign_operatorContext) => void; + enterSconst?: (ctx: SconstContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.assign_operator`. + * Exit a parse tree produced by `PostgreSqlParser.sconst`. * @param ctx the parse tree */ - exitAssign_operator?: (ctx: Assign_operatorContext) => void; + exitSconst?: (ctx: SconstContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.proc_sect`. + * Enter a parse tree produced by `PostgreSqlParser.anysconst`. * @param ctx the parse tree */ - enterProc_sect?: (ctx: Proc_sectContext) => void; + enterAnysconst?: (ctx: AnysconstContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.proc_sect`. + * Exit a parse tree produced by `PostgreSqlParser.anysconst`. * @param ctx the parse tree */ - exitProc_sect?: (ctx: Proc_sectContext) => void; + exitAnysconst?: (ctx: AnysconstContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.proc_stmt`. + * Enter a parse tree produced by `PostgreSqlParser.signediconst`. * @param ctx the parse tree */ - enterProc_stmt?: (ctx: Proc_stmtContext) => void; + enterSignediconst?: (ctx: SignediconstContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.proc_stmt`. + * Exit a parse tree produced by `PostgreSqlParser.signediconst`. * @param ctx the parse tree */ - exitProc_stmt?: (ctx: Proc_stmtContext) => void; + exitSignediconst?: (ctx: SignediconstContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_perform`. + * Enter a parse tree produced by `PostgreSqlParser.rolespec`. * @param ctx the parse tree */ - enterStmt_perform?: (ctx: Stmt_performContext) => void; + enterRolespec?: (ctx: RolespecContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_perform`. + * Exit a parse tree produced by `PostgreSqlParser.rolespec`. * @param ctx the parse tree */ - exitStmt_perform?: (ctx: Stmt_performContext) => void; + exitRolespec?: (ctx: RolespecContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_call`. + * Enter a parse tree produced by `PostgreSqlParser.role_list`. * @param ctx the parse tree */ - enterStmt_call?: (ctx: Stmt_callContext) => void; + enterRole_list?: (ctx: Role_listContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_call`. + * Exit a parse tree produced by `PostgreSqlParser.role_list`. * @param ctx the parse tree */ - exitStmt_call?: (ctx: Stmt_callContext) => void; + exitRole_list?: (ctx: Role_listContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_expr_list`. + * Enter a parse tree produced by `PostgreSqlParser.colid`. * @param ctx the parse tree */ - enterOpt_expr_list?: (ctx: Opt_expr_listContext) => void; + enterColid?: (ctx: ColidContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_expr_list`. + * Exit a parse tree produced by `PostgreSqlParser.colid`. * @param ctx the parse tree */ - exitOpt_expr_list?: (ctx: Opt_expr_listContext) => void; + exitColid?: (ctx: ColidContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_assign`. + * Enter a parse tree produced by `PostgreSqlParser.type_function_name`. * @param ctx the parse tree */ - enterStmt_assign?: (ctx: Stmt_assignContext) => void; + enterType_function_name?: (ctx: Type_function_nameContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_assign`. + * Exit a parse tree produced by `PostgreSqlParser.type_function_name`. * @param ctx the parse tree */ - exitStmt_assign?: (ctx: Stmt_assignContext) => void; + exitType_function_name?: (ctx: Type_function_nameContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_getdiag`. + * Enter a parse tree produced by `PostgreSqlParser.nonreservedword`. * @param ctx the parse tree */ - enterStmt_getdiag?: (ctx: Stmt_getdiagContext) => void; + enterNonreservedword?: (ctx: NonreservedwordContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_getdiag`. + * Exit a parse tree produced by `PostgreSqlParser.nonreservedword`. * @param ctx the parse tree */ - exitStmt_getdiag?: (ctx: Stmt_getdiagContext) => void; + exitNonreservedword?: (ctx: NonreservedwordContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.getdiag_area_opt`. + * Enter a parse tree produced by `PostgreSqlParser.collabel`. * @param ctx the parse tree */ - enterGetdiag_area_opt?: (ctx: Getdiag_area_optContext) => void; + enterCollabel?: (ctx: CollabelContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.getdiag_area_opt`. + * Exit a parse tree produced by `PostgreSqlParser.collabel`. * @param ctx the parse tree */ - exitGetdiag_area_opt?: (ctx: Getdiag_area_optContext) => void; + exitCollabel?: (ctx: CollabelContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.getdiag_list`. + * Enter a parse tree produced by `PostgreSqlParser.identifier`. * @param ctx the parse tree */ - enterGetdiag_list?: (ctx: Getdiag_listContext) => void; + enterIdentifier?: (ctx: IdentifierContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.getdiag_list`. + * Exit a parse tree produced by `PostgreSqlParser.identifier`. * @param ctx the parse tree */ - exitGetdiag_list?: (ctx: Getdiag_listContext) => void; + exitIdentifier?: (ctx: IdentifierContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.getdiag_list_item`. + * Enter a parse tree produced by `PostgreSqlParser.unreserved_keyword`. * @param ctx the parse tree */ - enterGetdiag_list_item?: (ctx: Getdiag_list_itemContext) => void; + enterUnreserved_keyword?: (ctx: Unreserved_keywordContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.getdiag_list_item`. + * Exit a parse tree produced by `PostgreSqlParser.unreserved_keyword`. * @param ctx the parse tree */ - exitGetdiag_list_item?: (ctx: Getdiag_list_itemContext) => void; + exitUnreserved_keyword?: (ctx: Unreserved_keywordContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.getdiag_item`. + * Enter a parse tree produced by `PostgreSqlParser.col_name_keyword`. * @param ctx the parse tree */ - enterGetdiag_item?: (ctx: Getdiag_itemContext) => void; + enterCol_name_keyword?: (ctx: Col_name_keywordContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.getdiag_item`. + * Exit a parse tree produced by `PostgreSqlParser.col_name_keyword`. * @param ctx the parse tree */ - exitGetdiag_item?: (ctx: Getdiag_itemContext) => void; + exitCol_name_keyword?: (ctx: Col_name_keywordContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.getdiag_target`. + * Enter a parse tree produced by `PostgreSqlParser.type_func_name_keyword`. * @param ctx the parse tree */ - enterGetdiag_target?: (ctx: Getdiag_targetContext) => void; + enterType_func_name_keyword?: (ctx: Type_func_name_keywordContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.getdiag_target`. + * Exit a parse tree produced by `PostgreSqlParser.type_func_name_keyword`. * @param ctx the parse tree */ - exitGetdiag_target?: (ctx: Getdiag_targetContext) => void; + exitType_func_name_keyword?: (ctx: Type_func_name_keywordContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.assign_var`. + * Enter a parse tree produced by `PostgreSqlParser.reserved_keyword`. * @param ctx the parse tree */ - enterAssign_var?: (ctx: Assign_varContext) => void; + enterReserved_keyword?: (ctx: Reserved_keywordContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.assign_var`. + * Exit a parse tree produced by `PostgreSqlParser.reserved_keyword`. * @param ctx the parse tree */ - exitAssign_var?: (ctx: Assign_varContext) => void; + exitReserved_keyword?: (ctx: Reserved_keywordContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_if`. + * Enter a parse tree produced by `PostgreSqlParser.pl_block`. * @param ctx the parse tree */ - enterStmt_if?: (ctx: Stmt_ifContext) => void; + enterPl_block?: (ctx: Pl_blockContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_if`. + * Exit a parse tree produced by `PostgreSqlParser.pl_block`. * @param ctx the parse tree */ - exitStmt_if?: (ctx: Stmt_ifContext) => void; + exitPl_block?: (ctx: Pl_blockContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_elsifs`. + * Enter a parse tree produced by `PostgreSqlParser.label_decl`. * @param ctx the parse tree */ - enterStmt_elsifs?: (ctx: Stmt_elsifsContext) => void; + enterLabel_decl?: (ctx: Label_declContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_elsifs`. + * Exit a parse tree produced by `PostgreSqlParser.label_decl`. * @param ctx the parse tree */ - exitStmt_elsifs?: (ctx: Stmt_elsifsContext) => void; + exitLabel_decl?: (ctx: Label_declContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_else`. + * Enter a parse tree produced by `PostgreSqlParser.decl_statement`. * @param ctx the parse tree */ - enterStmt_else?: (ctx: Stmt_elseContext) => void; + enterDecl_statement?: (ctx: Decl_statementContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_else`. + * Exit a parse tree produced by `PostgreSqlParser.decl_statement`. * @param ctx the parse tree */ - exitStmt_else?: (ctx: Stmt_elseContext) => void; + exitDecl_statement?: (ctx: Decl_statementContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_case`. + * Enter a parse tree produced by `PostgreSqlParser.decl_cursor_arg`. * @param ctx the parse tree */ - enterStmt_case?: (ctx: Stmt_caseContext) => void; + enterDecl_cursor_arg?: (ctx: Decl_cursor_argContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_case`. + * Exit a parse tree produced by `PostgreSqlParser.decl_cursor_arg`. * @param ctx the parse tree */ - exitStmt_case?: (ctx: Stmt_caseContext) => void; + exitDecl_cursor_arg?: (ctx: Decl_cursor_argContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_expr_until_when`. + * Enter a parse tree produced by `PostgreSqlParser.assign_operator`. * @param ctx the parse tree */ - enterOpt_expr_until_when?: (ctx: Opt_expr_until_whenContext) => void; + enterAssign_operator?: (ctx: Assign_operatorContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_expr_until_when`. + * Exit a parse tree produced by `PostgreSqlParser.assign_operator`. * @param ctx the parse tree */ - exitOpt_expr_until_when?: (ctx: Opt_expr_until_whenContext) => void; + exitAssign_operator?: (ctx: Assign_operatorContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.case_when_list`. + * Enter a parse tree produced by `PostgreSqlParser.proc_stmt`. * @param ctx the parse tree */ - enterCase_when_list?: (ctx: Case_when_listContext) => void; + enterProc_stmt?: (ctx: Proc_stmtContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.case_when_list`. + * Exit a parse tree produced by `PostgreSqlParser.proc_stmt`. * @param ctx the parse tree */ - exitCase_when_list?: (ctx: Case_when_listContext) => void; + exitProc_stmt?: (ctx: Proc_stmtContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.case_when`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_perform`. * @param ctx the parse tree */ - enterCase_when?: (ctx: Case_whenContext) => void; + enterStmt_perform?: (ctx: Stmt_performContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.case_when`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_perform`. * @param ctx the parse tree */ - exitCase_when?: (ctx: Case_whenContext) => void; + exitStmt_perform?: (ctx: Stmt_performContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_case_else`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_call`. * @param ctx the parse tree */ - enterOpt_case_else?: (ctx: Opt_case_elseContext) => void; + enterStmt_call?: (ctx: Stmt_callContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_case_else`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_call`. * @param ctx the parse tree */ - exitOpt_case_else?: (ctx: Opt_case_elseContext) => void; + exitStmt_call?: (ctx: Stmt_callContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_loop`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_assign`. * @param ctx the parse tree */ - enterStmt_loop?: (ctx: Stmt_loopContext) => void; + enterStmt_assign?: (ctx: Stmt_assignContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_loop`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_assign`. * @param ctx the parse tree */ - exitStmt_loop?: (ctx: Stmt_loopContext) => void; + exitStmt_assign?: (ctx: Stmt_assignContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_while`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_getdiag`. * @param ctx the parse tree */ - enterStmt_while?: (ctx: Stmt_whileContext) => void; + enterStmt_getdiag?: (ctx: Stmt_getdiagContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_while`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_getdiag`. * @param ctx the parse tree */ - exitStmt_while?: (ctx: Stmt_whileContext) => void; + exitStmt_getdiag?: (ctx: Stmt_getdiagContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_for`. + * Enter a parse tree produced by `PostgreSqlParser.getdiag_list_item`. * @param ctx the parse tree */ - enterStmt_for?: (ctx: Stmt_forContext) => void; + enterGetdiag_list_item?: (ctx: Getdiag_list_itemContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_for`. + * Exit a parse tree produced by `PostgreSqlParser.getdiag_list_item`. * @param ctx the parse tree */ - exitStmt_for?: (ctx: Stmt_forContext) => void; + exitGetdiag_list_item?: (ctx: Getdiag_list_itemContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.for_control`. + * Enter a parse tree produced by `PostgreSqlParser.assign_var`. * @param ctx the parse tree */ - enterFor_control?: (ctx: For_controlContext) => void; + enterAssign_var?: (ctx: Assign_varContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.for_control`. + * Exit a parse tree produced by `PostgreSqlParser.assign_var`. * @param ctx the parse tree */ - exitFor_control?: (ctx: For_controlContext) => void; + exitAssign_var?: (ctx: Assign_varContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_for_using_expression`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_if`. * @param ctx the parse tree */ - enterOpt_for_using_expression?: (ctx: Opt_for_using_expressionContext) => void; + enterStmt_if?: (ctx: Stmt_ifContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_for_using_expression`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_if`. * @param ctx the parse tree */ - exitOpt_for_using_expression?: (ctx: Opt_for_using_expressionContext) => void; + exitStmt_if?: (ctx: Stmt_ifContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_cursor_parameters`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_else`. * @param ctx the parse tree */ - enterOpt_cursor_parameters?: (ctx: Opt_cursor_parametersContext) => void; + enterStmt_else?: (ctx: Stmt_elseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_cursor_parameters`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_else`. * @param ctx the parse tree */ - exitOpt_cursor_parameters?: (ctx: Opt_cursor_parametersContext) => void; + exitStmt_else?: (ctx: Stmt_elseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_reverse`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_case`. * @param ctx the parse tree */ - enterOpt_reverse?: (ctx: Opt_reverseContext) => void; + enterStmt_case?: (ctx: Stmt_caseContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_reverse`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_case`. * @param ctx the parse tree */ - exitOpt_reverse?: (ctx: Opt_reverseContext) => void; + exitStmt_case?: (ctx: Stmt_caseContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.opt_by_expression`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_loop_while_for`. * @param ctx the parse tree */ - enterOpt_by_expression?: (ctx: Opt_by_expressionContext) => void; + enterStmt_loop_while_for?: (ctx: Stmt_loop_while_forContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.opt_by_expression`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_loop_while_for`. * @param ctx the parse tree */ - exitOpt_by_expression?: (ctx: Opt_by_expressionContext) => void; + exitStmt_loop_while_for?: (ctx: Stmt_loop_while_forContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.for_variable`. + * Enter a parse tree produced by `PostgreSqlParser.for_control`. * @param ctx the parse tree */ - enterFor_variable?: (ctx: For_variableContext) => void; + enterFor_control?: (ctx: For_controlContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.for_variable`. + * Exit a parse tree produced by `PostgreSqlParser.for_control`. * @param ctx the parse tree */ - exitFor_variable?: (ctx: For_variableContext) => void; + exitFor_control?: (ctx: For_controlContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_foreach_a`. * @param ctx the parse tree @@ -9164,16 +5110,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_foreach_a?: (ctx: Stmt_foreach_aContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.foreach_slice`. - * @param ctx the parse tree - */ - enterForeach_slice?: (ctx: Foreach_sliceContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.foreach_slice`. - * @param ctx the parse tree - */ - exitForeach_slice?: (ctx: Foreach_sliceContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_exit`. * @param ctx the parse tree @@ -9184,16 +5120,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_exit?: (ctx: Stmt_exitContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.exit_type`. - * @param ctx the parse tree - */ - enterExit_type?: (ctx: Exit_typeContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.exit_type`. - * @param ctx the parse tree - */ - exitExit_type?: (ctx: Exit_typeContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_return`. * @param ctx the parse tree @@ -9204,16 +5130,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_return?: (ctx: Stmt_returnContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_return_result`. - * @param ctx the parse tree - */ - enterOpt_return_result?: (ctx: Opt_return_resultContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_return_result`. - * @param ctx the parse tree - */ - exitOpt_return_result?: (ctx: Opt_return_resultContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_raise`. * @param ctx the parse tree @@ -9224,36 +5140,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_raise?: (ctx: Stmt_raiseContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_stmt_raise_level`. - * @param ctx the parse tree - */ - enterOpt_stmt_raise_level?: (ctx: Opt_stmt_raise_levelContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_stmt_raise_level`. - * @param ctx the parse tree - */ - exitOpt_stmt_raise_level?: (ctx: Opt_stmt_raise_levelContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_raise_list`. - * @param ctx the parse tree - */ - enterOpt_raise_list?: (ctx: Opt_raise_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_raise_list`. - * @param ctx the parse tree - */ - exitOpt_raise_list?: (ctx: Opt_raise_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_raise_using`. - * @param ctx the parse tree - */ - enterOpt_raise_using?: (ctx: Opt_raise_usingContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_raise_using`. - * @param ctx the parse tree - */ - exitOpt_raise_using?: (ctx: Opt_raise_usingContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.opt_raise_using_elem`. * @param ctx the parse tree @@ -9264,16 +5150,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitOpt_raise_using_elem?: (ctx: Opt_raise_using_elemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_raise_using_elem_list`. - * @param ctx the parse tree - */ - enterOpt_raise_using_elem_list?: (ctx: Opt_raise_using_elem_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_raise_using_elem_list`. - * @param ctx the parse tree - */ - exitOpt_raise_using_elem_list?: (ctx: Opt_raise_using_elem_listContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_assert`. * @param ctx the parse tree @@ -9284,16 +5160,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_assert?: (ctx: Stmt_assertContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_stmt_assert_message`. - * @param ctx the parse tree - */ - enterOpt_stmt_assert_message?: (ctx: Opt_stmt_assert_messageContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_stmt_assert_message`. - * @param ctx the parse tree - */ - exitOpt_stmt_assert_message?: (ctx: Opt_stmt_assert_messageContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.loop_body`. * @param ctx the parse tree @@ -9324,26 +5190,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_dynexecute?: (ctx: Stmt_dynexecuteContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_execute_using`. - * @param ctx the parse tree - */ - enterOpt_execute_using?: (ctx: Opt_execute_usingContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_execute_using`. - * @param ctx the parse tree - */ - exitOpt_execute_using?: (ctx: Opt_execute_usingContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_execute_using_list`. - * @param ctx the parse tree - */ - enterOpt_execute_using_list?: (ctx: Opt_execute_using_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_execute_using_list`. - * @param ctx the parse tree - */ - exitOpt_execute_using_list?: (ctx: Opt_execute_using_listContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.opt_execute_into`. * @param ctx the parse tree @@ -9374,46 +5220,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitOpt_open_bound_list_item?: (ctx: Opt_open_bound_list_itemContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_open_bound_list`. - * @param ctx the parse tree - */ - enterOpt_open_bound_list?: (ctx: Opt_open_bound_listContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_open_bound_list`. - * @param ctx the parse tree - */ - exitOpt_open_bound_list?: (ctx: Opt_open_bound_listContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_open_using`. - * @param ctx the parse tree - */ - enterOpt_open_using?: (ctx: Opt_open_usingContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_open_using`. - * @param ctx the parse tree - */ - exitOpt_open_using?: (ctx: Opt_open_usingContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_scroll_option`. - * @param ctx the parse tree - */ - enterOpt_scroll_option?: (ctx: Opt_scroll_optionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_scroll_option`. - * @param ctx the parse tree - */ - exitOpt_scroll_option?: (ctx: Opt_scroll_optionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_scroll_option_no`. - * @param ctx the parse tree - */ - enterOpt_scroll_option_no?: (ctx: Opt_scroll_option_noContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_scroll_option_no`. - * @param ctx the parse tree - */ - exitOpt_scroll_option_no?: (ctx: Opt_scroll_option_noContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_fetch`. * @param ctx the parse tree @@ -9424,26 +5230,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStmt_fetch?: (ctx: Stmt_fetchContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.into_target`. - * @param ctx the parse tree - */ - enterInto_target?: (ctx: Into_targetContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.into_target`. - * @param ctx the parse tree - */ - exitInto_target?: (ctx: Into_targetContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_cursor_from`. - * @param ctx the parse tree - */ - enterOpt_cursor_from?: (ctx: Opt_cursor_fromContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_cursor_from`. - * @param ctx the parse tree - */ - exitOpt_cursor_from?: (ctx: Opt_cursor_fromContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.opt_fetch_direction`. * @param ctx the parse tree @@ -9484,16 +5270,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitData_source?: (ctx: Data_sourceContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.join_condition`. - * @param ctx the parse tree - */ - enterJoin_condition?: (ctx: Join_conditionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.join_condition`. - * @param ctx the parse tree - */ - exitJoin_condition?: (ctx: Join_conditionContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.merge_when_clause`. * @param ctx the parse tree @@ -9534,16 +5310,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitDefault_values_or_values?: (ctx: Default_values_or_valuesContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.exprofdefaultlist`. - * @param ctx the parse tree - */ - enterExprofdefaultlist?: (ctx: ExprofdefaultlistContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.exprofdefaultlist`. - * @param ctx the parse tree - */ - exitExprofdefaultlist?: (ctx: ExprofdefaultlistContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.exprofdefault`. * @param ctx the parse tree @@ -9575,35 +5341,15 @@ export class PostgreSqlParserListener implements ParseTreeListener { */ exitStmt_null?: (ctx: Stmt_nullContext) => void; /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_commit`. - * @param ctx the parse tree - */ - enterStmt_commit?: (ctx: Stmt_commitContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_commit`. - * @param ctx the parse tree - */ - exitStmt_commit?: (ctx: Stmt_commitContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.stmt_rollback`. - * @param ctx the parse tree - */ - enterStmt_rollback?: (ctx: Stmt_rollbackContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.stmt_rollback`. - * @param ctx the parse tree - */ - exitStmt_rollback?: (ctx: Stmt_rollbackContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.plsql_opt_transaction_chain`. + * Enter a parse tree produced by `PostgreSqlParser.stmt_commit_or_rollback`. * @param ctx the parse tree */ - enterPlsql_opt_transaction_chain?: (ctx: Plsql_opt_transaction_chainContext) => void; + enterStmt_commit_or_rollback?: (ctx: Stmt_commit_or_rollbackContext) => void; /** - * Exit a parse tree produced by `PostgreSqlParser.plsql_opt_transaction_chain`. + * Exit a parse tree produced by `PostgreSqlParser.stmt_commit_or_rollback`. * @param ctx the parse tree */ - exitPlsql_opt_transaction_chain?: (ctx: Plsql_opt_transaction_chainContext) => void; + exitStmt_commit_or_rollback?: (ctx: Stmt_commit_or_rollbackContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.stmt_set`. * @param ctx the parse tree @@ -9634,36 +5380,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitException_sect?: (ctx: Exception_sectContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.proc_exceptions`. - * @param ctx the parse tree - */ - enterProc_exceptions?: (ctx: Proc_exceptionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.proc_exceptions`. - * @param ctx the parse tree - */ - exitProc_exceptions?: (ctx: Proc_exceptionsContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.proc_exception`. - * @param ctx the parse tree - */ - enterProc_exception?: (ctx: Proc_exceptionContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.proc_exception`. - * @param ctx the parse tree - */ - exitProc_exception?: (ctx: Proc_exceptionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.proc_conditions`. - * @param ctx the parse tree - */ - enterProc_conditions?: (ctx: Proc_conditionsContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.proc_conditions`. - * @param ctx the parse tree - */ - exitProc_conditions?: (ctx: Proc_conditionsContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.proc_condition`. * @param ctx the parse tree @@ -9674,46 +5390,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitProc_condition?: (ctx: Proc_conditionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_block_label`. - * @param ctx the parse tree - */ - enterOpt_block_label?: (ctx: Opt_block_labelContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_block_label`. - * @param ctx the parse tree - */ - exitOpt_block_label?: (ctx: Opt_block_labelContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_loop_label`. - * @param ctx the parse tree - */ - enterOpt_loop_label?: (ctx: Opt_loop_labelContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_loop_label`. - * @param ctx the parse tree - */ - exitOpt_loop_label?: (ctx: Opt_loop_labelContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_label`. - * @param ctx the parse tree - */ - enterOpt_label?: (ctx: Opt_labelContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_label`. - * @param ctx the parse tree - */ - exitOpt_label?: (ctx: Opt_labelContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_exitcond`. - * @param ctx the parse tree - */ - enterOpt_exitcond?: (ctx: Opt_exitcondContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_exitcond`. - * @param ctx the parse tree - */ - exitOpt_exitcond?: (ctx: Opt_exitcondContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.any_identifier`. * @param ctx the parse tree @@ -9744,66 +5420,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSql_expression?: (ctx: Sql_expressionContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.expr_until_then`. - * @param ctx the parse tree - */ - enterExpr_until_then?: (ctx: Expr_until_thenContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.expr_until_then`. - * @param ctx the parse tree - */ - exitExpr_until_then?: (ctx: Expr_until_thenContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.expr_until_semi`. - * @param ctx the parse tree - */ - enterExpr_until_semi?: (ctx: Expr_until_semiContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.expr_until_semi`. - * @param ctx the parse tree - */ - exitExpr_until_semi?: (ctx: Expr_until_semiContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.expr_until_rightbracket`. - * @param ctx the parse tree - */ - enterExpr_until_rightbracket?: (ctx: Expr_until_rightbracketContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.expr_until_rightbracket`. - * @param ctx the parse tree - */ - exitExpr_until_rightbracket?: (ctx: Expr_until_rightbracketContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.expr_until_loop`. - * @param ctx the parse tree - */ - enterExpr_until_loop?: (ctx: Expr_until_loopContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.expr_until_loop`. - * @param ctx the parse tree - */ - exitExpr_until_loop?: (ctx: Expr_until_loopContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.make_execsql_stmt`. - * @param ctx the parse tree - */ - enterMake_execsql_stmt?: (ctx: Make_execsql_stmtContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.make_execsql_stmt`. - * @param ctx the parse tree - */ - exitMake_execsql_stmt?: (ctx: Make_execsql_stmtContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.opt_returning_clause_into`. - * @param ctx the parse tree - */ - enterOpt_returning_clause_into?: (ctx: Opt_returning_clause_intoContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.opt_returning_clause_into`. - * @param ctx the parse tree - */ - exitOpt_returning_clause_into?: (ctx: Opt_returning_clause_intoContext) => void; visitTerminal(node: TerminalNode): void {} visitErrorNode(node: ErrorNode): void {} diff --git a/src/lib/postgresql/PostgreSqlParserVisitor.ts b/src/lib/postgresql/PostgreSqlParserVisitor.ts index 2457867d..fabf31ee 100644 --- a/src/lib/postgresql/PostgreSqlParserVisitor.ts +++ b/src/lib/postgresql/PostgreSqlParserVisitor.ts @@ -9,31 +9,22 @@ import { SQLParserBase } from '../SQLParserBase'; import { ProgramContext } from "./PostgreSqlParser.js"; -import { PlsqlrootContext } from "./PostgreSqlParser.js"; import { SingleStmtContext } from "./PostgreSqlParser.js"; import { StmtContext } from "./PostgreSqlParser.js"; -import { PlsqlconsolecommandContext } from "./PostgreSqlParser.js"; import { CallstmtContext } from "./PostgreSqlParser.js"; import { CreaterolestmtContext } from "./PostgreSqlParser.js"; -import { Opt_withContext } from "./PostgreSqlParser.js"; -import { OptrolelistContext } from "./PostgreSqlParser.js"; -import { AlteroptrolelistContext } from "./PostgreSqlParser.js"; import { AlteroptroleelemContext } from "./PostgreSqlParser.js"; import { CreateoptroleelemContext } from "./PostgreSqlParser.js"; import { CreateuserstmtContext } from "./PostgreSqlParser.js"; import { AlterrolestmtContext } from "./PostgreSqlParser.js"; -import { Opt_in_databaseContext } from "./PostgreSqlParser.js"; import { AlterrolesetstmtContext } from "./PostgreSqlParser.js"; import { AlterroutinestmtContext } from "./PostgreSqlParser.js"; import { Alter_routine_cluaseContext } from "./PostgreSqlParser.js"; -import { Routine_action_listContext } from "./PostgreSqlParser.js"; import { Routine_actionContext } from "./PostgreSqlParser.js"; import { CreategroupstmtContext } from "./PostgreSqlParser.js"; import { AltergroupstmtContext } from "./PostgreSqlParser.js"; -import { Add_dropContext } from "./PostgreSqlParser.js"; import { CreateschemastmtContext } from "./PostgreSqlParser.js"; import { SchemaNameCreateContext } from "./PostgreSqlParser.js"; -import { OptschemaeltlistContext } from "./PostgreSqlParser.js"; import { Schema_stmtContext } from "./PostgreSqlParser.js"; import { VariablesetstmtContext } from "./PostgreSqlParser.js"; import { Set_restContext } from "./PostgreSqlParser.js"; @@ -46,18 +37,13 @@ import { Iso_levelContext } from "./PostgreSqlParser.js"; import { Opt_boolean_or_string_columnContext } from "./PostgreSqlParser.js"; import { Opt_boolean_or_stringContext } from "./PostgreSqlParser.js"; import { Zone_valueContext } from "./PostgreSqlParser.js"; -import { Opt_encodingContext } from "./PostgreSqlParser.js"; -import { Nonreservedword_or_sconst_columnContext } from "./PostgreSqlParser.js"; import { Nonreservedword_or_sconstContext } from "./PostgreSqlParser.js"; import { VariableresetstmtContext } from "./PostgreSqlParser.js"; import { Reset_restContext } from "./PostgreSqlParser.js"; -import { Generic_resetContext } from "./PostgreSqlParser.js"; import { SetresetclauseContext } from "./PostgreSqlParser.js"; import { FunctionsetresetclauseContext } from "./PostgreSqlParser.js"; import { VariableshowstmtContext } from "./PostgreSqlParser.js"; import { ConstraintssetstmtContext } from "./PostgreSqlParser.js"; -import { Constraints_set_listContext } from "./PostgreSqlParser.js"; -import { Constraints_set_modeContext } from "./PostgreSqlParser.js"; import { CheckpointstmtContext } from "./PostgreSqlParser.js"; import { DiscardstmtContext } from "./PostgreSqlParser.js"; import { AltertablestmtContext } from "./PostgreSqlParser.js"; @@ -72,85 +58,45 @@ import { Alter_table_cmdContext } from "./PostgreSqlParser.js"; import { Alter_column_defaultContext } from "./PostgreSqlParser.js"; import { Opt_drop_behaviorContext } from "./PostgreSqlParser.js"; import { Opt_collate_clauseContext } from "./PostgreSqlParser.js"; -import { Alter_usingContext } from "./PostgreSqlParser.js"; -import { Replica_identityContext } from "./PostgreSqlParser.js"; import { ReloptionsContext } from "./PostgreSqlParser.js"; import { Opt_reloptionsContext } from "./PostgreSqlParser.js"; -import { Reloption_listContext } from "./PostgreSqlParser.js"; import { Reloption_elemContext } from "./PostgreSqlParser.js"; -import { Alter_identity_column_option_listContext } from "./PostgreSqlParser.js"; -import { Alter_identity_column_optionContext } from "./PostgreSqlParser.js"; import { PartitionboundspecContext } from "./PostgreSqlParser.js"; -import { Hash_partbound_elemContext } from "./PostgreSqlParser.js"; -import { Hash_partboundContext } from "./PostgreSqlParser.js"; import { AltercompositetypestmtContext } from "./PostgreSqlParser.js"; -import { Alter_type_cmdsContext } from "./PostgreSqlParser.js"; import { Alter_type_cmdContext } from "./PostgreSqlParser.js"; import { CloseportalstmtContext } from "./PostgreSqlParser.js"; import { CopystmtContext } from "./PostgreSqlParser.js"; -import { Copy_fromContext } from "./PostgreSqlParser.js"; -import { Opt_programContext } from "./PostgreSqlParser.js"; -import { Copy_file_nameContext } from "./PostgreSqlParser.js"; import { Copy_optionsContext } from "./PostgreSqlParser.js"; -import { Copy_opt_listContext } from "./PostgreSqlParser.js"; -import { Copy_opt_itemContext } from "./PostgreSqlParser.js"; -import { Opt_binaryContext } from "./PostgreSqlParser.js"; -import { Copy_delimiterContext } from "./PostgreSqlParser.js"; -import { Opt_usingContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_listContext } from "./PostgreSqlParser.js"; import { Copy_generic_opt_elemContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_argContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_arg_listContext } from "./PostgreSqlParser.js"; -import { Copy_generic_opt_arg_list_itemContext } from "./PostgreSqlParser.js"; import { ColumnCreateTableContext } from "./PostgreSqlParser.js"; import { OpttempContext } from "./PostgreSqlParser.js"; -import { Table_column_listContext } from "./PostgreSqlParser.js"; -import { OpttableelementlistContext } from "./PostgreSqlParser.js"; import { OpttypedtableelementlistContext } from "./PostgreSqlParser.js"; import { TableelementlistContext } from "./PostgreSqlParser.js"; -import { TypedtableelementlistContext } from "./PostgreSqlParser.js"; import { TableelementContext } from "./PostgreSqlParser.js"; import { TypedtableelementContext } from "./PostgreSqlParser.js"; import { Column_defContext } from "./PostgreSqlParser.js"; -import { CompressionCluaseContext } from "./PostgreSqlParser.js"; -import { StorageCluaseContext } from "./PostgreSqlParser.js"; -import { ColumnOptionsContext } from "./PostgreSqlParser.js"; -import { ColquallistContext } from "./PostgreSqlParser.js"; import { ColconstraintContext } from "./PostgreSqlParser.js"; import { ColconstraintelemContext } from "./PostgreSqlParser.js"; -import { Nulls_distinctContext } from "./PostgreSqlParser.js"; import { Generated_whenContext } from "./PostgreSqlParser.js"; -import { Deferrable_triggerContext } from "./PostgreSqlParser.js"; -import { Initially_triggerContext } from "./PostgreSqlParser.js"; -import { TablelikeclauseContext } from "./PostgreSqlParser.js"; -import { TablelikeoptionlistContext } from "./PostgreSqlParser.js"; import { TablelikeoptionContext } from "./PostgreSqlParser.js"; -import { TableconstraintContext } from "./PostgreSqlParser.js"; import { ConstraintelemContext } from "./PostgreSqlParser.js"; -import { Opt_no_inheritContext } from "./PostgreSqlParser.js"; import { Opt_column_listContext } from "./PostgreSqlParser.js"; import { Opt_column_list_createContext } from "./PostgreSqlParser.js"; import { Column_listContext } from "./PostgreSqlParser.js"; -import { Column_list_createContext } from "./PostgreSqlParser.js"; import { Opt_c_includeContext } from "./PostgreSqlParser.js"; import { Key_matchContext } from "./PostgreSqlParser.js"; -import { ExclusionconstraintlistContext } from "./PostgreSqlParser.js"; import { ExclusionconstraintelemContext } from "./PostgreSqlParser.js"; -import { ExclusionwhereclauseContext } from "./PostgreSqlParser.js"; import { Key_actionsContext } from "./PostgreSqlParser.js"; import { Key_updateContext } from "./PostgreSqlParser.js"; import { Key_deleteContext } from "./PostgreSqlParser.js"; import { Key_actionContext } from "./PostgreSqlParser.js"; import { OptinheritContext } from "./PostgreSqlParser.js"; -import { OptpartitionspecContext } from "./PostgreSqlParser.js"; import { PartitionspecContext } from "./PostgreSqlParser.js"; -import { Part_paramsContext } from "./PostgreSqlParser.js"; import { Part_elemContext } from "./PostgreSqlParser.js"; import { Table_access_method_clauseContext } from "./PostgreSqlParser.js"; import { OptwithContext } from "./PostgreSqlParser.js"; import { OncommitoptionContext } from "./PostgreSqlParser.js"; import { OpttablespaceContext } from "./PostgreSqlParser.js"; -import { Index_paramenters_createContext } from "./PostgreSqlParser.js"; import { OptconstablespaceContext } from "./PostgreSqlParser.js"; import { ExistingindexContext } from "./PostgreSqlParser.js"; import { CreatestatsstmtContext } from "./PostgreSqlParser.js"; @@ -159,185 +105,93 @@ import { QueryCreateTableContext } from "./PostgreSqlParser.js"; import { Create_as_targetContext } from "./PostgreSqlParser.js"; import { Opt_with_dataContext } from "./PostgreSqlParser.js"; import { CreateMaterializedViewContext } from "./PostgreSqlParser.js"; -import { Create_mv_targetContext } from "./PostgreSqlParser.js"; -import { OptnologContext } from "./PostgreSqlParser.js"; import { RefreshmatviewstmtContext } from "./PostgreSqlParser.js"; import { CreateseqstmtContext } from "./PostgreSqlParser.js"; import { AlterseqstmtContext } from "./PostgreSqlParser.js"; -import { OptseqoptlistContext } from "./PostgreSqlParser.js"; -import { OptparenthesizedseqoptlistContext } from "./PostgreSqlParser.js"; -import { SeqoptlistContext } from "./PostgreSqlParser.js"; import { SeqoptelemContext } from "./PostgreSqlParser.js"; -import { Opt_byContext } from "./PostgreSqlParser.js"; import { NumericonlyContext } from "./PostgreSqlParser.js"; -import { Numericonly_listContext } from "./PostgreSqlParser.js"; import { CreateplangstmtContext } from "./PostgreSqlParser.js"; -import { Opt_trustedContext } from "./PostgreSqlParser.js"; -import { Handler_nameContext } from "./PostgreSqlParser.js"; -import { Opt_inline_handlerContext } from "./PostgreSqlParser.js"; -import { Validator_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_validatorContext } from "./PostgreSqlParser.js"; -import { Opt_proceduralContext } from "./PostgreSqlParser.js"; import { CreatetablespacestmtContext } from "./PostgreSqlParser.js"; -import { OpttablespaceownerContext } from "./PostgreSqlParser.js"; import { CreateextensionstmtContext } from "./PostgreSqlParser.js"; -import { Create_extension_opt_listContext } from "./PostgreSqlParser.js"; -import { Create_extension_opt_itemContext } from "./PostgreSqlParser.js"; import { AlterextensionstmtContext } from "./PostgreSqlParser.js"; -import { Alter_extension_opt_listContext } from "./PostgreSqlParser.js"; -import { Alter_extension_opt_itemContext } from "./PostgreSqlParser.js"; import { AlterextensioncontentsstmtContext } from "./PostgreSqlParser.js"; import { CreatefdwstmtContext } from "./PostgreSqlParser.js"; import { Fdw_optionContext } from "./PostgreSqlParser.js"; -import { Fdw_optionsContext } from "./PostgreSqlParser.js"; -import { Opt_fdw_optionsContext } from "./PostgreSqlParser.js"; import { AlterfdwstmtContext } from "./PostgreSqlParser.js"; import { Create_generic_optionsContext } from "./PostgreSqlParser.js"; -import { Generic_option_listContext } from "./PostgreSqlParser.js"; import { Alter_generic_optionsContext } from "./PostgreSqlParser.js"; -import { Alter_generic_option_listContext } from "./PostgreSqlParser.js"; import { Alter_generic_option_elemContext } from "./PostgreSqlParser.js"; import { Generic_option_elemContext } from "./PostgreSqlParser.js"; -import { Generic_option_nameContext } from "./PostgreSqlParser.js"; -import { Generic_option_argContext } from "./PostgreSqlParser.js"; import { CreateforeignserverstmtContext } from "./PostgreSqlParser.js"; -import { Opt_typeContext } from "./PostgreSqlParser.js"; import { Foreign_server_versionContext } from "./PostgreSqlParser.js"; -import { Opt_foreign_server_versionContext } from "./PostgreSqlParser.js"; import { AlterforeignserverstmtContext } from "./PostgreSqlParser.js"; import { CreateForeignTableContext } from "./PostgreSqlParser.js"; import { CreatePartitionForeignTableContext } from "./PostgreSqlParser.js"; import { ImportforeignschemastmtContext } from "./PostgreSqlParser.js"; -import { Import_qualification_typeContext } from "./PostgreSqlParser.js"; -import { Import_qualificationContext } from "./PostgreSqlParser.js"; import { CreateusermappingstmtContext } from "./PostgreSqlParser.js"; -import { Auth_identContext } from "./PostgreSqlParser.js"; import { AlterusermappingstmtContext } from "./PostgreSqlParser.js"; import { CreatepolicystmtContext } from "./PostgreSqlParser.js"; import { AlterpolicystmtContext } from "./PostgreSqlParser.js"; import { AlterprocedurestmtContext } from "./PostgreSqlParser.js"; -import { Procedure_cluaseContext } from "./PostgreSqlParser.js"; import { Procedure_actionContext } from "./PostgreSqlParser.js"; import { RowsecurityoptionalexprContext } from "./PostgreSqlParser.js"; import { RowsecurityoptionalwithcheckContext } from "./PostgreSqlParser.js"; -import { RowsecuritydefaulttoroleContext } from "./PostgreSqlParser.js"; -import { RowsecurityoptionaltoroleContext } from "./PostgreSqlParser.js"; -import { RowsecuritydefaultpermissiveContext } from "./PostgreSqlParser.js"; -import { RowsecuritydefaultforcmdContext } from "./PostgreSqlParser.js"; -import { Row_security_cmdContext } from "./PostgreSqlParser.js"; import { CreateamstmtContext } from "./PostgreSqlParser.js"; -import { Am_typeContext } from "./PostgreSqlParser.js"; import { CreatetrigstmtContext } from "./PostgreSqlParser.js"; import { TriggeractiontimeContext } from "./PostgreSqlParser.js"; -import { ForeachrowContext } from "./PostgreSqlParser.js"; -import { RoworstatmentContext } from "./PostgreSqlParser.js"; import { TriggereventsContext } from "./PostgreSqlParser.js"; import { TriggeroneeventContext } from "./PostgreSqlParser.js"; -import { TriggerreferencingContext } from "./PostgreSqlParser.js"; -import { TriggertransitionsContext } from "./PostgreSqlParser.js"; -import { TriggertransitionContext } from "./PostgreSqlParser.js"; -import { TransitionoldornewContext } from "./PostgreSqlParser.js"; -import { TransitionrowortableContext } from "./PostgreSqlParser.js"; -import { TransitionrelnameContext } from "./PostgreSqlParser.js"; -import { TriggerforspecContext } from "./PostgreSqlParser.js"; -import { TriggerforopteachContext } from "./PostgreSqlParser.js"; -import { TriggerfortypeContext } from "./PostgreSqlParser.js"; import { TriggerwhenContext } from "./PostgreSqlParser.js"; import { Function_or_procedureContext } from "./PostgreSqlParser.js"; import { TriggerfuncargsContext } from "./PostgreSqlParser.js"; import { TriggerfuncargContext } from "./PostgreSqlParser.js"; -import { OptconstrfromtableContext } from "./PostgreSqlParser.js"; -import { ConstraintattributespecContext } from "./PostgreSqlParser.js"; import { ConstraintattributeElemContext } from "./PostgreSqlParser.js"; import { CreateeventtrigstmtContext } from "./PostgreSqlParser.js"; -import { Event_trigger_when_listContext } from "./PostgreSqlParser.js"; import { Event_trigger_when_itemContext } from "./PostgreSqlParser.js"; -import { Event_trigger_value_listContext } from "./PostgreSqlParser.js"; import { AltereventtrigstmtContext } from "./PostgreSqlParser.js"; -import { Enable_triggerContext } from "./PostgreSqlParser.js"; import { CreateassertionstmtContext } from "./PostgreSqlParser.js"; import { DefinestmtContext } from "./PostgreSqlParser.js"; import { DefinitionContext } from "./PostgreSqlParser.js"; -import { Def_listContext } from "./PostgreSqlParser.js"; import { Def_elemContext } from "./PostgreSqlParser.js"; import { Def_argContext } from "./PostgreSqlParser.js"; -import { Old_aggr_definitionContext } from "./PostgreSqlParser.js"; -import { Old_aggr_listContext } from "./PostgreSqlParser.js"; import { Old_aggr_elemContext } from "./PostgreSqlParser.js"; -import { Opt_enum_val_listContext } from "./PostgreSqlParser.js"; -import { Enum_val_listContext } from "./PostgreSqlParser.js"; import { AlterenumstmtContext } from "./PostgreSqlParser.js"; import { Opt_if_not_existsContext } from "./PostgreSqlParser.js"; import { CreateopclassstmtContext } from "./PostgreSqlParser.js"; -import { Opclass_item_listContext } from "./PostgreSqlParser.js"; import { Opclass_itemContext } from "./PostgreSqlParser.js"; -import { Opt_defaultContext } from "./PostgreSqlParser.js"; -import { Opt_opfamilyContext } from "./PostgreSqlParser.js"; -import { Opclass_purposeContext } from "./PostgreSqlParser.js"; -import { Opt_recheckContext } from "./PostgreSqlParser.js"; import { CreateopfamilystmtContext } from "./PostgreSqlParser.js"; import { AlteropfamilystmtContext } from "./PostgreSqlParser.js"; -import { Opclass_drop_listContext } from "./PostgreSqlParser.js"; import { Opclass_dropContext } from "./PostgreSqlParser.js"; import { ReassignownedstmtContext } from "./PostgreSqlParser.js"; import { DropstmtContext } from "./PostgreSqlParser.js"; -import { View_nameListContext } from "./PostgreSqlParser.js"; import { Object_type_any_nameContext } from "./PostgreSqlParser.js"; import { Object_type_nameContext } from "./PostgreSqlParser.js"; -import { Object_type_name_on_any_nameContext } from "./PostgreSqlParser.js"; import { Any_name_listContext } from "./PostgreSqlParser.js"; -import { Relation_column_nameContext } from "./PostgreSqlParser.js"; -import { Relation_nameContext } from "./PostgreSqlParser.js"; import { Any_nameContext } from "./PostgreSqlParser.js"; import { AttrsContext } from "./PostgreSqlParser.js"; -import { Type_name_listContext } from "./PostgreSqlParser.js"; import { TruncatestmtContext } from "./PostgreSqlParser.js"; import { Truncate_tableContext } from "./PostgreSqlParser.js"; import { CommentstmtContext } from "./PostgreSqlParser.js"; -import { Comment_textContext } from "./PostgreSqlParser.js"; import { SeclabelstmtContext } from "./PostgreSqlParser.js"; -import { Opt_providerContext } from "./PostgreSqlParser.js"; -import { Security_labelContext } from "./PostgreSqlParser.js"; import { FetchstmtContext } from "./PostgreSqlParser.js"; import { Fetch_argsContext } from "./PostgreSqlParser.js"; import { From_inContext } from "./PostgreSqlParser.js"; -import { Opt_from_inContext } from "./PostgreSqlParser.js"; import { GrantstmtContext } from "./PostgreSqlParser.js"; import { RevokestmtContext } from "./PostgreSqlParser.js"; import { PrivilegesContext } from "./PostgreSqlParser.js"; -import { BeforeprivilegeselectlistContext } from "./PostgreSqlParser.js"; import { BeforeprivilegeselectContext } from "./PostgreSqlParser.js"; -import { Privilege_listContext } from "./PostgreSqlParser.js"; import { PrivilegeContext } from "./PostgreSqlParser.js"; import { Privilege_targetContext } from "./PostgreSqlParser.js"; import { Grantee_listContext } from "./PostgreSqlParser.js"; -import { GranteeContext } from "./PostgreSqlParser.js"; -import { Opt_grant_grant_optionContext } from "./PostgreSqlParser.js"; import { GrantrolestmtContext } from "./PostgreSqlParser.js"; import { RevokerolestmtContext } from "./PostgreSqlParser.js"; -import { Opt_grant_admin_optionContext } from "./PostgreSqlParser.js"; -import { Opt_granted_byContext } from "./PostgreSqlParser.js"; import { AlterdefaultprivilegesstmtContext } from "./PostgreSqlParser.js"; -import { DefacloptionlistContext } from "./PostgreSqlParser.js"; -import { DefacloptionContext } from "./PostgreSqlParser.js"; import { DefaclactionContext } from "./PostgreSqlParser.js"; import { Defacl_privilege_targetContext } from "./PostgreSqlParser.js"; import { IndexstmtContext } from "./PostgreSqlParser.js"; -import { Opt_uniqueContext } from "./PostgreSqlParser.js"; -import { Opt_concurrentlyContext } from "./PostgreSqlParser.js"; -import { Opt_index_nameContext } from "./PostgreSqlParser.js"; -import { Access_method_clauseContext } from "./PostgreSqlParser.js"; import { Index_paramsContext } from "./PostgreSqlParser.js"; -import { Index_elem_optionsContext } from "./PostgreSqlParser.js"; import { Index_elemContext } from "./PostgreSqlParser.js"; -import { Opt_includeContext } from "./PostgreSqlParser.js"; -import { Index_including_paramsContext } from "./PostgreSqlParser.js"; -import { Opt_collateContext } from "./PostgreSqlParser.js"; -import { Opt_classContext } from "./PostgreSqlParser.js"; -import { Opt_asc_descContext } from "./PostgreSqlParser.js"; -import { Opt_nulls_orderContext } from "./PostgreSqlParser.js"; import { CreatefunctionstmtContext } from "./PostgreSqlParser.js"; -import { AttrilistContext } from "./PostgreSqlParser.js"; import { Opt_or_replaceContext } from "./PostgreSqlParser.js"; import { Func_argsContext } from "./PostgreSqlParser.js"; import { Func_args_listContext } from "./PostgreSqlParser.js"; @@ -347,77 +201,44 @@ import { Procedure_with_argtypes_listContext } from "./PostgreSqlParser.js"; import { Procedure_with_argtypesContext } from "./PostgreSqlParser.js"; import { Function_with_argtypes_listContext } from "./PostgreSqlParser.js"; import { Function_with_argtypesContext } from "./PostgreSqlParser.js"; -import { Func_args_with_defaultsContext } from "./PostgreSqlParser.js"; -import { Func_args_with_defaults_listContext } from "./PostgreSqlParser.js"; import { Func_argContext } from "./PostgreSqlParser.js"; import { Arg_classContext } from "./PostgreSqlParser.js"; -import { Param_nameContext } from "./PostgreSqlParser.js"; -import { Func_returnContext } from "./PostgreSqlParser.js"; import { Func_typeContext } from "./PostgreSqlParser.js"; import { Func_arg_with_defaultContext } from "./PostgreSqlParser.js"; -import { Aggr_argContext } from "./PostgreSqlParser.js"; import { Aggr_argsContext } from "./PostgreSqlParser.js"; -import { Aggr_args_listContext } from "./PostgreSqlParser.js"; import { Aggregate_with_argtypesContext } from "./PostgreSqlParser.js"; -import { Aggregate_with_argtypes_listContext } from "./PostgreSqlParser.js"; -import { Createfunc_opt_listContext } from "./PostgreSqlParser.js"; import { Common_func_opt_itemContext } from "./PostgreSqlParser.js"; import { Createfunc_opt_itemContext } from "./PostgreSqlParser.js"; -import { Transform_type_listContext } from "./PostgreSqlParser.js"; import { Opt_definitionContext } from "./PostgreSqlParser.js"; import { Table_func_columnContext } from "./PostgreSqlParser.js"; -import { Table_func_column_listContext } from "./PostgreSqlParser.js"; import { AlterfunctionstmtContext } from "./PostgreSqlParser.js"; -import { AlterFunctionTypeClauseContext } from "./PostgreSqlParser.js"; -import { Alterfunc_opt_listContext } from "./PostgreSqlParser.js"; -import { Opt_restrictContext } from "./PostgreSqlParser.js"; import { RemovefuncstmtContext } from "./PostgreSqlParser.js"; import { RemoveaggrstmtContext } from "./PostgreSqlParser.js"; import { RemoveoperstmtContext } from "./PostgreSqlParser.js"; import { Oper_argtypesContext } from "./PostgreSqlParser.js"; import { Any_operatorContext } from "./PostgreSqlParser.js"; -import { Operator_with_argtypes_listContext } from "./PostgreSqlParser.js"; import { Operator_with_argtypesContext } from "./PostgreSqlParser.js"; import { DostmtContext } from "./PostgreSqlParser.js"; -import { Dostmt_opt_listContext } from "./PostgreSqlParser.js"; -import { Dostmt_opt_itemContext } from "./PostgreSqlParser.js"; import { CreatecaststmtContext } from "./PostgreSqlParser.js"; -import { Cast_contextContext } from "./PostgreSqlParser.js"; import { Opt_if_existsContext } from "./PostgreSqlParser.js"; import { CreatetransformstmtContext } from "./PostgreSqlParser.js"; -import { Transform_element_listContext } from "./PostgreSqlParser.js"; +import { Sql_with_functionContext } from "./PostgreSqlParser.js"; import { ReindexstmtContext } from "./PostgreSqlParser.js"; -import { Reindex_target_typeContext } from "./PostgreSqlParser.js"; -import { Reindex_target_multitableContext } from "./PostgreSqlParser.js"; -import { Reindex_option_listContext } from "./PostgreSqlParser.js"; -import { Reindex_option_elemContext } from "./PostgreSqlParser.js"; import { AltertblspcstmtContext } from "./PostgreSqlParser.js"; import { RenamestmtContext } from "./PostgreSqlParser.js"; -import { Opt_set_dataContext } from "./PostgreSqlParser.js"; import { AlterobjectdependsstmtContext } from "./PostgreSqlParser.js"; -import { Opt_noContext } from "./PostgreSqlParser.js"; import { AlterobjectschemastmtContext } from "./PostgreSqlParser.js"; import { AlteroperatorstmtContext } from "./PostgreSqlParser.js"; import { Operator_def_listContext } from "./PostgreSqlParser.js"; import { Operator_def_elemContext } from "./PostgreSqlParser.js"; -import { Operator_def_argContext } from "./PostgreSqlParser.js"; import { AltertypestmtContext } from "./PostgreSqlParser.js"; import { AlterownerstmtContext } from "./PostgreSqlParser.js"; import { CreatepublicationstmtContext } from "./PostgreSqlParser.js"; -import { Opt_publication_for_tablesContext } from "./PostgreSqlParser.js"; -import { Publication_for_tablesContext } from "./PostgreSqlParser.js"; import { AlterpublicationstmtContext } from "./PostgreSqlParser.js"; import { CreatesubscriptionstmtContext } from "./PostgreSqlParser.js"; -import { Publication_name_listContext } from "./PostgreSqlParser.js"; -import { Publication_name_itemContext } from "./PostgreSqlParser.js"; import { AltersubscriptionstmtContext } from "./PostgreSqlParser.js"; import { RulestmtContext } from "./PostgreSqlParser.js"; -import { RuleactionlistContext } from "./PostgreSqlParser.js"; -import { RuleactionmultiContext } from "./PostgreSqlParser.js"; import { RuleactionstmtContext } from "./PostgreSqlParser.js"; -import { RuleactionstmtOrEmptyContext } from "./PostgreSqlParser.js"; -import { EventContext } from "./PostgreSqlParser.js"; -import { Opt_insteadContext } from "./PostgreSqlParser.js"; import { NotifystmtContext } from "./PostgreSqlParser.js"; import { Notify_payloadContext } from "./PostgreSqlParser.js"; import { ListenstmtContext } from "./PostgreSqlParser.js"; @@ -426,58 +247,31 @@ import { TransactionstmtContext } from "./PostgreSqlParser.js"; import { Opt_transactionContext } from "./PostgreSqlParser.js"; import { Transaction_mode_itemContext } from "./PostgreSqlParser.js"; import { Transaction_mode_listContext } from "./PostgreSqlParser.js"; -import { Transaction_mode_list_or_emptyContext } from "./PostgreSqlParser.js"; -import { Opt_transaction_chainContext } from "./PostgreSqlParser.js"; import { CreateViewContext } from "./PostgreSqlParser.js"; -import { Opt_check_optionContext } from "./PostgreSqlParser.js"; import { LoadstmtContext } from "./PostgreSqlParser.js"; import { CreateDatabaseContext } from "./PostgreSqlParser.js"; -import { Createdb_opt_listContext } from "./PostgreSqlParser.js"; -import { Createdb_opt_itemsContext } from "./PostgreSqlParser.js"; import { Createdb_opt_itemContext } from "./PostgreSqlParser.js"; -import { Createdb_opt_nameContext } from "./PostgreSqlParser.js"; -import { Opt_equalContext } from "./PostgreSqlParser.js"; import { AlterdatabasestmtContext } from "./PostgreSqlParser.js"; import { AlterdatabasesetstmtContext } from "./PostgreSqlParser.js"; -import { Drop_option_listContext } from "./PostgreSqlParser.js"; -import { Drop_optionContext } from "./PostgreSqlParser.js"; import { AltercollationstmtContext } from "./PostgreSqlParser.js"; import { AltersystemstmtContext } from "./PostgreSqlParser.js"; import { CreatedomainstmtContext } from "./PostgreSqlParser.js"; import { AlterdomainstmtContext } from "./PostgreSqlParser.js"; -import { Opt_asContext } from "./PostgreSqlParser.js"; import { AltertsdictionarystmtContext } from "./PostgreSqlParser.js"; import { AltertsconfigurationstmtContext } from "./PostgreSqlParser.js"; -import { Any_withContext } from "./PostgreSqlParser.js"; import { CreateconversionstmtContext } from "./PostgreSqlParser.js"; import { ClusterstmtContext } from "./PostgreSqlParser.js"; -import { Opt_verbose_listContext } from "./PostgreSqlParser.js"; -import { Cluster_index_specificationContext } from "./PostgreSqlParser.js"; import { VacuumstmtContext } from "./PostgreSqlParser.js"; import { AnalyzestmtContext } from "./PostgreSqlParser.js"; -import { Vac_analyze_option_listContext } from "./PostgreSqlParser.js"; import { Analyze_keywordContext } from "./PostgreSqlParser.js"; import { Vac_analyze_option_elemContext } from "./PostgreSqlParser.js"; -import { Vac_analyze_option_nameContext } from "./PostgreSqlParser.js"; -import { Vac_analyze_option_argContext } from "./PostgreSqlParser.js"; -import { Opt_analyzeContext } from "./PostgreSqlParser.js"; -import { Analyze_options_listContext } from "./PostgreSqlParser.js"; import { Analyze_option_elemContext } from "./PostgreSqlParser.js"; import { Opt_verboseContext } from "./PostgreSqlParser.js"; -import { Opt_skiplockContext } from "./PostgreSqlParser.js"; -import { Opt_buffer_usage_limitContext } from "./PostgreSqlParser.js"; -import { Opt_fullContext } from "./PostgreSqlParser.js"; -import { Opt_freezeContext } from "./PostgreSqlParser.js"; -import { Opt_name_listContext } from "./PostgreSqlParser.js"; import { Vacuum_relationContext } from "./PostgreSqlParser.js"; import { Vacuum_relation_listContext } from "./PostgreSqlParser.js"; -import { Opt_vacuum_relation_listContext } from "./PostgreSqlParser.js"; import { ExplainstmtContext } from "./PostgreSqlParser.js"; import { ExplainablestmtContext } from "./PostgreSqlParser.js"; import { Explain_option_listContext } from "./PostgreSqlParser.js"; -import { Explain_option_elemContext } from "./PostgreSqlParser.js"; -import { Explain_option_nameContext } from "./PostgreSqlParser.js"; -import { Explain_option_argContext } from "./PostgreSqlParser.js"; import { PreparestmtContext } from "./PostgreSqlParser.js"; import { Prep_type_clauseContext } from "./PostgreSqlParser.js"; import { PreparablestmtContext } from "./PostgreSqlParser.js"; @@ -485,192 +279,108 @@ import { ExecutestmtContext } from "./PostgreSqlParser.js"; import { Execute_param_clauseContext } from "./PostgreSqlParser.js"; import { DeallocatestmtContext } from "./PostgreSqlParser.js"; import { InsertStatementContext } from "./PostgreSqlParser.js"; -import { Insert_targetContext } from "./PostgreSqlParser.js"; import { Insert_restContext } from "./PostgreSqlParser.js"; -import { Override_kindContext } from "./PostgreSqlParser.js"; import { Insert_column_listContext } from "./PostgreSqlParser.js"; import { Insert_column_itemContext } from "./PostgreSqlParser.js"; -import { Opt_on_conflictContext } from "./PostgreSqlParser.js"; -import { Opt_conf_exprContext } from "./PostgreSqlParser.js"; import { Returning_clauseContext } from "./PostgreSqlParser.js"; import { DeletestmtContext } from "./PostgreSqlParser.js"; -import { Using_clauseContext } from "./PostgreSqlParser.js"; import { LockstmtContext } from "./PostgreSqlParser.js"; -import { Opt_lockContext } from "./PostgreSqlParser.js"; -import { Lock_typeContext } from "./PostgreSqlParser.js"; -import { Opt_nowaitContext } from "./PostgreSqlParser.js"; -import { Opt_nowait_or_skipContext } from "./PostgreSqlParser.js"; import { UpdatestmtContext } from "./PostgreSqlParser.js"; import { Set_clause_listContext } from "./PostgreSqlParser.js"; import { Set_clauseContext } from "./PostgreSqlParser.js"; -import { Set_targetContext } from "./PostgreSqlParser.js"; -import { Set_target_listContext } from "./PostgreSqlParser.js"; import { DeclarecursorstmtContext } from "./PostgreSqlParser.js"; -import { Cursor_nameContext } from "./PostgreSqlParser.js"; -import { Cursor_optionsContext } from "./PostgreSqlParser.js"; -import { Opt_holdContext } from "./PostgreSqlParser.js"; import { SelectStatementContext } from "./PostgreSqlParser.js"; import { Select_with_parensContext } from "./PostgreSqlParser.js"; import { Select_no_parensContext } from "./PostgreSqlParser.js"; import { Select_clauseContext } from "./PostgreSqlParser.js"; import { Simple_selectContext } from "./PostgreSqlParser.js"; -import { UnionContext } from "./PostgreSqlParser.js"; -import { IntersectContext } from "./PostgreSqlParser.js"; -import { ExceptContext } from "./PostgreSqlParser.js"; import { Set_operator_with_all_or_distinctContext } from "./PostgreSqlParser.js"; import { With_clauseContext } from "./PostgreSqlParser.js"; -import { Cte_listContext } from "./PostgreSqlParser.js"; import { Common_table_exprContext } from "./PostgreSqlParser.js"; import { Search_cluaseContext } from "./PostgreSqlParser.js"; import { Cycle_cluaseContext } from "./PostgreSqlParser.js"; -import { Opt_materializedContext } from "./PostgreSqlParser.js"; -import { Opt_with_clauseContext } from "./PostgreSqlParser.js"; import { Into_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_strictContext } from "./PostgreSqlParser.js"; import { OpttempTableNameContext } from "./PostgreSqlParser.js"; -import { Opt_tableContext } from "./PostgreSqlParser.js"; -import { All_or_distinctContext } from "./PostgreSqlParser.js"; import { Distinct_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_all_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_sort_clauseContext } from "./PostgreSqlParser.js"; import { Sort_clauseContext } from "./PostgreSqlParser.js"; -import { Sortby_listContext } from "./PostgreSqlParser.js"; import { SortbyContext } from "./PostgreSqlParser.js"; import { Select_limitContext } from "./PostgreSqlParser.js"; -import { Opt_select_limitContext } from "./PostgreSqlParser.js"; import { Limit_clauseContext } from "./PostgreSqlParser.js"; import { Fetch_clauseContext } from "./PostgreSqlParser.js"; import { Offset_clauseContext } from "./PostgreSqlParser.js"; -import { Select_limit_valueContext } from "./PostgreSqlParser.js"; -import { Select_offset_valueContext } from "./PostgreSqlParser.js"; import { Select_fetch_first_valueContext } from "./PostgreSqlParser.js"; -import { I_or_f_constContext } from "./PostgreSqlParser.js"; -import { Row_or_rowsContext } from "./PostgreSqlParser.js"; -import { First_or_nextContext } from "./PostgreSqlParser.js"; import { Group_clauseContext } from "./PostgreSqlParser.js"; import { Group_by_listContext } from "./PostgreSqlParser.js"; import { Group_by_itemContext } from "./PostgreSqlParser.js"; -import { Empty_grouping_setContext } from "./PostgreSqlParser.js"; -import { Rollup_clauseContext } from "./PostgreSqlParser.js"; -import { Cube_clauseContext } from "./PostgreSqlParser.js"; -import { Grouping_sets_clauseContext } from "./PostgreSqlParser.js"; -import { Having_clauseContext } from "./PostgreSqlParser.js"; import { For_locking_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_for_locking_clauseContext } from "./PostgreSqlParser.js"; -import { For_locking_itemsContext } from "./PostgreSqlParser.js"; -import { For_locking_itemContext } from "./PostgreSqlParser.js"; -import { For_locking_strengthContext } from "./PostgreSqlParser.js"; -import { Locked_rels_listContext } from "./PostgreSqlParser.js"; import { Values_clauseContext } from "./PostgreSqlParser.js"; import { From_clauseContext } from "./PostgreSqlParser.js"; import { From_listContext } from "./PostgreSqlParser.js"; import { Table_refContext } from "./PostgreSqlParser.js"; import { Alias_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_alias_clauseContext } from "./PostgreSqlParser.js"; import { Func_alias_clauseContext } from "./PostgreSqlParser.js"; import { Join_typeContext } from "./PostgreSqlParser.js"; import { Join_qualContext } from "./PostgreSqlParser.js"; import { Relation_exprContext } from "./PostgreSqlParser.js"; -import { View_relation_exprContext } from "./PostgreSqlParser.js"; import { Publication_relation_exprContext } from "./PostgreSqlParser.js"; import { Relation_expr_listContext } from "./PostgreSqlParser.js"; -import { Publication_relation_expr_listContext } from "./PostgreSqlParser.js"; import { Relation_expr_opt_aliasContext } from "./PostgreSqlParser.js"; import { Tablesample_clauseContext } from "./PostgreSqlParser.js"; -import { Opt_repeatable_clauseContext } from "./PostgreSqlParser.js"; import { Func_tableContext } from "./PostgreSqlParser.js"; import { Rowsfrom_itemContext } from "./PostgreSqlParser.js"; -import { Rowsfrom_listContext } from "./PostgreSqlParser.js"; -import { Opt_col_def_listContext } from "./PostgreSqlParser.js"; -import { Opt_ordinalityContext } from "./PostgreSqlParser.js"; import { Where_clauseContext } from "./PostgreSqlParser.js"; import { Where_or_current_clauseContext } from "./PostgreSqlParser.js"; -import { OpttablefuncelementlistContext } from "./PostgreSqlParser.js"; import { TablefuncelementlistContext } from "./PostgreSqlParser.js"; import { TablefuncelementContext } from "./PostgreSqlParser.js"; import { XmltableContext } from "./PostgreSqlParser.js"; -import { Xmltable_column_listContext } from "./PostgreSqlParser.js"; import { Xmltable_column_elContext } from "./PostgreSqlParser.js"; -import { Xmltable_column_option_listContext } from "./PostgreSqlParser.js"; -import { Xmltable_column_option_elContext } from "./PostgreSqlParser.js"; -import { Xml_namespace_listContext } from "./PostgreSqlParser.js"; import { Xml_namespace_elContext } from "./PostgreSqlParser.js"; import { TypenameContext } from "./PostgreSqlParser.js"; -import { Opt_array_boundsContext } from "./PostgreSqlParser.js"; import { SimpletypenameContext } from "./PostgreSqlParser.js"; import { ConsttypenameContext } from "./PostgreSqlParser.js"; -import { GenerictypeContext } from "./PostgreSqlParser.js"; -import { Opt_type_modifiersContext } from "./PostgreSqlParser.js"; import { NumericContext } from "./PostgreSqlParser.js"; import { Opt_floatContext } from "./PostgreSqlParser.js"; import { BitContext } from "./PostgreSqlParser.js"; -import { ConstbitContext } from "./PostgreSqlParser.js"; -import { BitwithlengthContext } from "./PostgreSqlParser.js"; -import { BitwithoutlengthContext } from "./PostgreSqlParser.js"; import { CharacterContext } from "./PostgreSqlParser.js"; -import { ConstcharacterContext } from "./PostgreSqlParser.js"; -import { Character_cContext } from "./PostgreSqlParser.js"; -import { Opt_varyingContext } from "./PostgreSqlParser.js"; import { ConstdatetimeContext } from "./PostgreSqlParser.js"; -import { ConstintervalContext } from "./PostgreSqlParser.js"; -import { Opt_timezoneContext } from "./PostgreSqlParser.js"; import { Opt_intervalContext } from "./PostgreSqlParser.js"; import { Interval_secondContext } from "./PostgreSqlParser.js"; -import { Opt_escapeContext } from "./PostgreSqlParser.js"; -import { A_exprContext } from "./PostgreSqlParser.js"; -import { A_expr_qualContext } from "./PostgreSqlParser.js"; -import { A_expr_lesslessContext } from "./PostgreSqlParser.js"; -import { A_expr_orContext } from "./PostgreSqlParser.js"; -import { A_expr_andContext } from "./PostgreSqlParser.js"; -import { A_expr_inContext } from "./PostgreSqlParser.js"; -import { A_expr_unary_notContext } from "./PostgreSqlParser.js"; -import { A_expr_isnullContext } from "./PostgreSqlParser.js"; -import { A_expr_is_notContext } from "./PostgreSqlParser.js"; -import { A_expr_compareContext } from "./PostgreSqlParser.js"; -import { A_expr_likeContext } from "./PostgreSqlParser.js"; -import { A_expr_qual_opContext } from "./PostgreSqlParser.js"; -import { A_expr_unary_qualopContext } from "./PostgreSqlParser.js"; -import { A_expr_addContext } from "./PostgreSqlParser.js"; -import { A_expr_mulContext } from "./PostgreSqlParser.js"; -import { A_expr_caretContext } from "./PostgreSqlParser.js"; -import { A_expr_unary_signContext } from "./PostgreSqlParser.js"; -import { A_expr_at_time_zoneContext } from "./PostgreSqlParser.js"; -import { A_expr_collateContext } from "./PostgreSqlParser.js"; -import { A_expr_typecastContext } from "./PostgreSqlParser.js"; -import { B_exprContext } from "./PostgreSqlParser.js"; -import { C_expr_existsContext } from "./PostgreSqlParser.js"; -import { C_expr_exprContext } from "./PostgreSqlParser.js"; -import { C_expr_caseContext } from "./PostgreSqlParser.js"; -import { PlsqlvariablenameContext } from "./PostgreSqlParser.js"; +import { ComparisonOperatorContext } from "./PostgreSqlParser.js"; +import { ExpressionContext } from "./PostgreSqlParser.js"; +import { LogicalNotContext } from "./PostgreSqlParser.js"; +import { PredicatedContext } from "./PostgreSqlParser.js"; +import { LogicalBinaryContext } from "./PostgreSqlParser.js"; +import { ComparisonContext } from "./PostgreSqlParser.js"; +import { QuantifiedComparisonContext } from "./PostgreSqlParser.js"; +import { BetweenContext } from "./PostgreSqlParser.js"; +import { InListContext } from "./PostgreSqlParser.js"; +import { InSubqueryContext } from "./PostgreSqlParser.js"; +import { LikeContext } from "./PostgreSqlParser.js"; +import { NullPredicateContext } from "./PostgreSqlParser.js"; +import { DistinctFromContext } from "./PostgreSqlParser.js"; +import { ValueExpressionDefaultContext } from "./PostgreSqlParser.js"; +import { ConcatenationContext } from "./PostgreSqlParser.js"; +import { ArithmeticBinaryContext } from "./PostgreSqlParser.js"; +import { ArithmeticUnaryContext } from "./PostgreSqlParser.js"; +import { AtTimeZoneContext } from "./PostgreSqlParser.js"; +import { PrimaryExpressionContext } from "./PostgreSqlParser.js"; import { Func_applicationContext } from "./PostgreSqlParser.js"; import { Func_exprContext } from "./PostgreSqlParser.js"; import { Func_expr_windowlessContext } from "./PostgreSqlParser.js"; import { Func_expr_common_subexprContext } from "./PostgreSqlParser.js"; -import { Xml_root_versionContext } from "./PostgreSqlParser.js"; -import { Opt_xml_root_standaloneContext } from "./PostgreSqlParser.js"; -import { Xml_attributesContext } from "./PostgreSqlParser.js"; import { Xml_attribute_listContext } from "./PostgreSqlParser.js"; import { Xml_attribute_elContext } from "./PostgreSqlParser.js"; import { Document_or_contentContext } from "./PostgreSqlParser.js"; -import { Xml_whitespace_optionContext } from "./PostgreSqlParser.js"; import { Xmlexists_argumentContext } from "./PostgreSqlParser.js"; import { Xml_passing_mechContext } from "./PostgreSqlParser.js"; -import { Within_group_clauseContext } from "./PostgreSqlParser.js"; -import { Filter_clauseContext } from "./PostgreSqlParser.js"; import { Window_clauseContext } from "./PostgreSqlParser.js"; -import { Window_definition_listContext } from "./PostgreSqlParser.js"; import { Window_definitionContext } from "./PostgreSqlParser.js"; import { Over_clauseContext } from "./PostgreSqlParser.js"; import { Window_specificationContext } from "./PostgreSqlParser.js"; -import { Opt_existing_window_nameContext } from "./PostgreSqlParser.js"; -import { Opt_partition_clauseContext } from "./PostgreSqlParser.js"; import { Opt_frame_clauseContext } from "./PostgreSqlParser.js"; -import { Frame_extentContext } from "./PostgreSqlParser.js"; import { Frame_boundContext } from "./PostgreSqlParser.js"; -import { Opt_window_exclusion_clauseContext } from "./PostgreSqlParser.js"; import { RowContext } from "./PostgreSqlParser.js"; import { Explicit_rowContext } from "./PostgreSqlParser.js"; -import { Implicit_rowContext } from "./PostgreSqlParser.js"; import { Sub_typeContext } from "./PostgreSqlParser.js"; import { All_opContext } from "./PostgreSqlParser.js"; import { MathopContext } from "./PostgreSqlParser.js"; @@ -678,35 +388,18 @@ import { Qual_opContext } from "./PostgreSqlParser.js"; import { Qual_all_opContext } from "./PostgreSqlParser.js"; import { Subquery_OpContext } from "./PostgreSqlParser.js"; import { Expr_listContext } from "./PostgreSqlParser.js"; -import { Column_expr_list_noparenContext } from "./PostgreSqlParser.js"; -import { Column_expr_listContext } from "./PostgreSqlParser.js"; import { Column_exprContext } from "./PostgreSqlParser.js"; import { Column_expr_noparenContext } from "./PostgreSqlParser.js"; import { Func_arg_listContext } from "./PostgreSqlParser.js"; import { Func_arg_exprContext } from "./PostgreSqlParser.js"; -import { Type_listContext } from "./PostgreSqlParser.js"; import { Array_exprContext } from "./PostgreSqlParser.js"; -import { Array_expr_listContext } from "./PostgreSqlParser.js"; -import { Extract_listContext } from "./PostgreSqlParser.js"; import { Extract_argContext } from "./PostgreSqlParser.js"; import { Unicode_normal_formContext } from "./PostgreSqlParser.js"; -import { Overlay_listContext } from "./PostgreSqlParser.js"; -import { Position_listContext } from "./PostgreSqlParser.js"; import { Substr_listContext } from "./PostgreSqlParser.js"; -import { Trim_listContext } from "./PostgreSqlParser.js"; -import { In_expr_selectContext } from "./PostgreSqlParser.js"; -import { In_expr_listContext } from "./PostgreSqlParser.js"; -import { Case_exprContext } from "./PostgreSqlParser.js"; -import { When_clause_listContext } from "./PostgreSqlParser.js"; import { When_clauseContext } from "./PostgreSqlParser.js"; -import { Case_defaultContext } from "./PostgreSqlParser.js"; -import { Case_argContext } from "./PostgreSqlParser.js"; -import { ColumnrefContext } from "./PostgreSqlParser.js"; import { Indirection_elContext } from "./PostgreSqlParser.js"; -import { Opt_slice_boundContext } from "./PostgreSqlParser.js"; import { IndirectionContext } from "./PostgreSqlParser.js"; import { Opt_indirectionContext } from "./PostgreSqlParser.js"; -import { Opt_target_listContext } from "./PostgreSqlParser.js"; import { Target_listContext } from "./PostgreSqlParser.js"; import { Target_labelContext } from "./PostgreSqlParser.js"; import { Target_starContext } from "./PostgreSqlParser.js"; @@ -714,7 +407,6 @@ import { Qualified_name_listContext } from "./PostgreSqlParser.js"; import { Table_name_listContext } from "./PostgreSqlParser.js"; import { Schema_name_listContext } from "./PostgreSqlParser.js"; import { Database_nameListContext } from "./PostgreSqlParser.js"; -import { Procedure_name_listContext } from "./PostgreSqlParser.js"; import { TablespaceNameCreateContext } from "./PostgreSqlParser.js"; import { TablespaceNameContext } from "./PostgreSqlParser.js"; import { TableNameCreateContext } from "./PostgreSqlParser.js"; @@ -734,163 +426,71 @@ import { ProcedureNameCreateContext } from "./PostgreSqlParser.js"; import { ColumnNameContext } from "./PostgreSqlParser.js"; import { ColumnNameMatchContext } from "./PostgreSqlParser.js"; import { ColumnNameCreateContext } from "./PostgreSqlParser.js"; -import { NameContext } from "./PostgreSqlParser.js"; -import { Attr_nameContext } from "./PostgreSqlParser.js"; -import { File_nameContext } from "./PostgreSqlParser.js"; import { FunctionNameCreateContext } from "./PostgreSqlParser.js"; import { FunctionNameContext } from "./PostgreSqlParser.js"; -import { Usual_nameContext } from "./PostgreSqlParser.js"; -import { AexprconstContext } from "./PostgreSqlParser.js"; -import { XconstContext } from "./PostgreSqlParser.js"; -import { BconstContext } from "./PostgreSqlParser.js"; -import { FconstContext } from "./PostgreSqlParser.js"; -import { IconstContext } from "./PostgreSqlParser.js"; import { SconstContext } from "./PostgreSqlParser.js"; import { AnysconstContext } from "./PostgreSqlParser.js"; -import { Opt_uescapeContext } from "./PostgreSqlParser.js"; import { SignediconstContext } from "./PostgreSqlParser.js"; -import { GroupnameContext } from "./PostgreSqlParser.js"; -import { RoleidContext } from "./PostgreSqlParser.js"; import { RolespecContext } from "./PostgreSqlParser.js"; import { Role_listContext } from "./PostgreSqlParser.js"; import { ColidContext } from "./PostgreSqlParser.js"; -import { Index_method_choicesContext } from "./PostgreSqlParser.js"; -import { Exclude_elementContext } from "./PostgreSqlParser.js"; -import { Index_paramentersContext } from "./PostgreSqlParser.js"; import { Type_function_nameContext } from "./PostgreSqlParser.js"; -import { Type_usual_nameContext } from "./PostgreSqlParser.js"; -import { Nonreservedword_columnContext } from "./PostgreSqlParser.js"; import { NonreservedwordContext } from "./PostgreSqlParser.js"; import { CollabelContext } from "./PostgreSqlParser.js"; import { IdentifierContext } from "./PostgreSqlParser.js"; -import { PlsqlidentifierContext } from "./PostgreSqlParser.js"; import { Unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Col_name_keywordContext } from "./PostgreSqlParser.js"; import { Type_func_name_keywordContext } from "./PostgreSqlParser.js"; import { Reserved_keywordContext } from "./PostgreSqlParser.js"; -import { Pl_functionContext } from "./PostgreSqlParser.js"; -import { Comp_optionsContext } from "./PostgreSqlParser.js"; -import { Comp_optionContext } from "./PostgreSqlParser.js"; -import { SharpContext } from "./PostgreSqlParser.js"; -import { Option_valueContext } from "./PostgreSqlParser.js"; -import { Opt_semiContext } from "./PostgreSqlParser.js"; import { Pl_blockContext } from "./PostgreSqlParser.js"; -import { Decl_sectContext } from "./PostgreSqlParser.js"; -import { Decl_startContext } from "./PostgreSqlParser.js"; -import { Decl_stmtsContext } from "./PostgreSqlParser.js"; import { Label_declContext } from "./PostgreSqlParser.js"; -import { Decl_stmtContext } from "./PostgreSqlParser.js"; import { Decl_statementContext } from "./PostgreSqlParser.js"; -import { Opt_scrollableContext } from "./PostgreSqlParser.js"; -import { Decl_cursor_queryContext } from "./PostgreSqlParser.js"; -import { Decl_cursor_argsContext } from "./PostgreSqlParser.js"; -import { Decl_cursor_arglistContext } from "./PostgreSqlParser.js"; import { Decl_cursor_argContext } from "./PostgreSqlParser.js"; -import { Decl_is_forContext } from "./PostgreSqlParser.js"; -import { Decl_aliasitemContext } from "./PostgreSqlParser.js"; -import { Decl_varnameContext } from "./PostgreSqlParser.js"; -import { Decl_constContext } from "./PostgreSqlParser.js"; -import { Decl_datatypeContext } from "./PostgreSqlParser.js"; -import { Decl_collateContext } from "./PostgreSqlParser.js"; -import { Decl_notnullContext } from "./PostgreSqlParser.js"; -import { Decl_defvalContext } from "./PostgreSqlParser.js"; -import { Decl_defkeyContext } from "./PostgreSqlParser.js"; import { Assign_operatorContext } from "./PostgreSqlParser.js"; -import { Proc_sectContext } from "./PostgreSqlParser.js"; import { Proc_stmtContext } from "./PostgreSqlParser.js"; import { Stmt_performContext } from "./PostgreSqlParser.js"; import { Stmt_callContext } from "./PostgreSqlParser.js"; -import { Opt_expr_listContext } from "./PostgreSqlParser.js"; import { Stmt_assignContext } from "./PostgreSqlParser.js"; import { Stmt_getdiagContext } from "./PostgreSqlParser.js"; -import { Getdiag_area_optContext } from "./PostgreSqlParser.js"; -import { Getdiag_listContext } from "./PostgreSqlParser.js"; import { Getdiag_list_itemContext } from "./PostgreSqlParser.js"; -import { Getdiag_itemContext } from "./PostgreSqlParser.js"; -import { Getdiag_targetContext } from "./PostgreSqlParser.js"; import { Assign_varContext } from "./PostgreSqlParser.js"; import { Stmt_ifContext } from "./PostgreSqlParser.js"; -import { Stmt_elsifsContext } from "./PostgreSqlParser.js"; import { Stmt_elseContext } from "./PostgreSqlParser.js"; import { Stmt_caseContext } from "./PostgreSqlParser.js"; -import { Opt_expr_until_whenContext } from "./PostgreSqlParser.js"; -import { Case_when_listContext } from "./PostgreSqlParser.js"; -import { Case_whenContext } from "./PostgreSqlParser.js"; -import { Opt_case_elseContext } from "./PostgreSqlParser.js"; -import { Stmt_loopContext } from "./PostgreSqlParser.js"; -import { Stmt_whileContext } from "./PostgreSqlParser.js"; -import { Stmt_forContext } from "./PostgreSqlParser.js"; +import { Stmt_loop_while_forContext } from "./PostgreSqlParser.js"; import { For_controlContext } from "./PostgreSqlParser.js"; -import { Opt_for_using_expressionContext } from "./PostgreSqlParser.js"; -import { Opt_cursor_parametersContext } from "./PostgreSqlParser.js"; -import { Opt_reverseContext } from "./PostgreSqlParser.js"; -import { Opt_by_expressionContext } from "./PostgreSqlParser.js"; -import { For_variableContext } from "./PostgreSqlParser.js"; import { Stmt_foreach_aContext } from "./PostgreSqlParser.js"; -import { Foreach_sliceContext } from "./PostgreSqlParser.js"; import { Stmt_exitContext } from "./PostgreSqlParser.js"; -import { Exit_typeContext } from "./PostgreSqlParser.js"; import { Stmt_returnContext } from "./PostgreSqlParser.js"; -import { Opt_return_resultContext } from "./PostgreSqlParser.js"; import { Stmt_raiseContext } from "./PostgreSqlParser.js"; -import { Opt_stmt_raise_levelContext } from "./PostgreSqlParser.js"; -import { Opt_raise_listContext } from "./PostgreSqlParser.js"; -import { Opt_raise_usingContext } from "./PostgreSqlParser.js"; import { Opt_raise_using_elemContext } from "./PostgreSqlParser.js"; -import { Opt_raise_using_elem_listContext } from "./PostgreSqlParser.js"; import { Stmt_assertContext } from "./PostgreSqlParser.js"; -import { Opt_stmt_assert_messageContext } from "./PostgreSqlParser.js"; import { Loop_bodyContext } from "./PostgreSqlParser.js"; import { Stmt_execsqlContext } from "./PostgreSqlParser.js"; import { Stmt_dynexecuteContext } from "./PostgreSqlParser.js"; -import { Opt_execute_usingContext } from "./PostgreSqlParser.js"; -import { Opt_execute_using_listContext } from "./PostgreSqlParser.js"; import { Opt_execute_intoContext } from "./PostgreSqlParser.js"; import { Stmt_openContext } from "./PostgreSqlParser.js"; import { Opt_open_bound_list_itemContext } from "./PostgreSqlParser.js"; -import { Opt_open_bound_listContext } from "./PostgreSqlParser.js"; -import { Opt_open_usingContext } from "./PostgreSqlParser.js"; -import { Opt_scroll_optionContext } from "./PostgreSqlParser.js"; -import { Opt_scroll_option_noContext } from "./PostgreSqlParser.js"; import { Stmt_fetchContext } from "./PostgreSqlParser.js"; -import { Into_targetContext } from "./PostgreSqlParser.js"; -import { Opt_cursor_fromContext } from "./PostgreSqlParser.js"; import { Opt_fetch_directionContext } from "./PostgreSqlParser.js"; import { Stmt_moveContext } from "./PostgreSqlParser.js"; import { MergestmtContext } from "./PostgreSqlParser.js"; import { Data_sourceContext } from "./PostgreSqlParser.js"; -import { Join_conditionContext } from "./PostgreSqlParser.js"; import { Merge_when_clauseContext } from "./PostgreSqlParser.js"; import { Merge_insertContext } from "./PostgreSqlParser.js"; import { Merge_updateContext } from "./PostgreSqlParser.js"; import { Default_values_or_valuesContext } from "./PostgreSqlParser.js"; -import { ExprofdefaultlistContext } from "./PostgreSqlParser.js"; import { ExprofdefaultContext } from "./PostgreSqlParser.js"; import { Stmt_closeContext } from "./PostgreSqlParser.js"; import { Stmt_nullContext } from "./PostgreSqlParser.js"; -import { Stmt_commitContext } from "./PostgreSqlParser.js"; -import { Stmt_rollbackContext } from "./PostgreSqlParser.js"; -import { Plsql_opt_transaction_chainContext } from "./PostgreSqlParser.js"; +import { Stmt_commit_or_rollbackContext } from "./PostgreSqlParser.js"; import { Stmt_setContext } from "./PostgreSqlParser.js"; import { Cursor_variableContext } from "./PostgreSqlParser.js"; import { Exception_sectContext } from "./PostgreSqlParser.js"; -import { Proc_exceptionsContext } from "./PostgreSqlParser.js"; -import { Proc_exceptionContext } from "./PostgreSqlParser.js"; -import { Proc_conditionsContext } from "./PostgreSqlParser.js"; import { Proc_conditionContext } from "./PostgreSqlParser.js"; -import { Opt_block_labelContext } from "./PostgreSqlParser.js"; -import { Opt_loop_labelContext } from "./PostgreSqlParser.js"; -import { Opt_labelContext } from "./PostgreSqlParser.js"; -import { Opt_exitcondContext } from "./PostgreSqlParser.js"; import { Any_identifierContext } from "./PostgreSqlParser.js"; import { Plsql_unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Sql_expressionContext } from "./PostgreSqlParser.js"; -import { Expr_until_thenContext } from "./PostgreSqlParser.js"; -import { Expr_until_semiContext } from "./PostgreSqlParser.js"; -import { Expr_until_rightbracketContext } from "./PostgreSqlParser.js"; -import { Expr_until_loopContext } from "./PostgreSqlParser.js"; -import { Make_execsql_stmtContext } from "./PostgreSqlParser.js"; -import { Opt_returning_clause_intoContext } from "./PostgreSqlParser.js"; /** @@ -907,12 +507,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.plsqlroot`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPlsqlroot?: (ctx: PlsqlrootContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.singleStmt`. * @param ctx the parse tree @@ -925,12 +519,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.plsqlconsolecommand`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPlsqlconsolecommand?: (ctx: PlsqlconsolecommandContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.callstmt`. * @param ctx the parse tree @@ -943,24 +531,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_with`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_with?: (ctx: Opt_withContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.optrolelist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOptrolelist?: (ctx: OptrolelistContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alteroptrolelist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlteroptrolelist?: (ctx: AlteroptrolelistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.alteroptroleelem`. * @param ctx the parse tree @@ -985,12 +555,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_in_database`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_in_database?: (ctx: Opt_in_databaseContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.alterrolesetstmt`. * @param ctx the parse tree @@ -1009,12 +573,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.routine_action_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRoutine_action_list?: (ctx: Routine_action_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.routine_action`. * @param ctx the parse tree @@ -1033,12 +591,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.add_drop`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAdd_drop?: (ctx: Add_dropContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.createschemastmt`. * @param ctx the parse tree @@ -1052,12 +604,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.optschemaeltlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOptschemaeltlist?: (ctx: OptschemaeltlistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.schema_stmt`. * @param ctx the parse tree @@ -1130,18 +676,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_encoding`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_encoding?: (ctx: Opt_encodingContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.nonreservedword_or_sconst_column`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNonreservedword_or_sconst_column?: (ctx: Nonreservedword_or_sconst_columnContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.nonreservedword_or_sconst`. * @param ctx the parse tree @@ -1160,12 +694,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.generic_reset`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGeneric_reset?: (ctx: Generic_resetContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.setresetclause`. * @param ctx the parse tree @@ -1190,18 +718,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.constraints_set_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitConstraints_set_list?: (ctx: Constraints_set_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.constraints_set_mode`. - * @param ctx the parse tree - * @return the visitor result - */ - visitConstraints_set_mode?: (ctx: Constraints_set_modeContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.checkpointstmt`. * @param ctx the parse tree @@ -1286,18 +802,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_using`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_using?: (ctx: Alter_usingContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.replica_identity`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReplica_identity?: (ctx: Replica_identityContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.reloptions`. * @param ctx the parse tree @@ -1310,60 +814,24 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reloption_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReloption_list?: (ctx: Reloption_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.reloption_elem`. * @param ctx the parse tree * @return the visitor result */ visitReloption_elem?: (ctx: Reloption_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_identity_column_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_identity_column_option_list?: (ctx: Alter_identity_column_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_identity_column_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_identity_column_option?: (ctx: Alter_identity_column_optionContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.partitionboundspec`. * @param ctx the parse tree * @return the visitor result */ visitPartitionboundspec?: (ctx: PartitionboundspecContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.hash_partbound_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHash_partbound_elem?: (ctx: Hash_partbound_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.hash_partbound`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHash_partbound?: (ctx: Hash_partboundContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.altercompositetypestmt`. * @param ctx the parse tree * @return the visitor result */ visitAltercompositetypestmt?: (ctx: AltercompositetypestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_type_cmds`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_type_cmds?: (ctx: Alter_type_cmdsContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.alter_type_cmd`. * @param ctx the parse tree @@ -1382,90 +850,18 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_from`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_from?: (ctx: Copy_fromContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_program`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_program?: (ctx: Opt_programContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_file_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_file_name?: (ctx: Copy_file_nameContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.copy_options`. * @param ctx the parse tree * @return the visitor result */ visitCopy_options?: (ctx: Copy_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_opt_list?: (ctx: Copy_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_opt_item?: (ctx: Copy_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_binary`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_binary?: (ctx: Opt_binaryContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_delimiter`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_delimiter?: (ctx: Copy_delimiterContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_using`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_using?: (ctx: Opt_usingContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_generic_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_generic_opt_list?: (ctx: Copy_generic_opt_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.copy_generic_opt_elem`. * @param ctx the parse tree * @return the visitor result */ visitCopy_generic_opt_elem?: (ctx: Copy_generic_opt_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_generic_opt_arg?: (ctx: Copy_generic_opt_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_generic_opt_arg_list?: (ctx: Copy_generic_opt_arg_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.copy_generic_opt_arg_list_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCopy_generic_opt_arg_list_item?: (ctx: Copy_generic_opt_arg_list_itemContext) => Result; /** * Visit a parse tree produced by the `columnCreateTable` * labeled alternative in `PostgreSqlParser.createstmt`. @@ -1479,18 +875,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.table_column_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTable_column_list?: (ctx: Table_column_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opttableelementlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpttableelementlist?: (ctx: OpttableelementlistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.opttypedtableelementlist`. * @param ctx the parse tree @@ -1503,12 +887,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.typedtableelementlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTypedtableelementlist?: (ctx: TypedtableelementlistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.tableelement`. * @param ctx the parse tree @@ -1527,30 +905,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.compressionCluase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCompressionCluase?: (ctx: CompressionCluaseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.storageCluase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStorageCluase?: (ctx: StorageCluaseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.columnOptions`. - * @param ctx the parse tree - * @return the visitor result - */ - visitColumnOptions?: (ctx: ColumnOptionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.colquallist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitColquallist?: (ctx: ColquallistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.colconstraint`. * @param ctx the parse tree @@ -1563,66 +917,24 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.nulls_distinct`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNulls_distinct?: (ctx: Nulls_distinctContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.generated_when`. * @param ctx the parse tree * @return the visitor result */ visitGenerated_when?: (ctx: Generated_whenContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.deferrable_trigger`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDeferrable_trigger?: (ctx: Deferrable_triggerContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.initially_trigger`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInitially_trigger?: (ctx: Initially_triggerContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.tablelikeclause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTablelikeclause?: (ctx: TablelikeclauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.tablelikeoptionlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTablelikeoptionlist?: (ctx: TablelikeoptionlistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.tablelikeoption`. * @param ctx the parse tree * @return the visitor result */ visitTablelikeoption?: (ctx: TablelikeoptionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.tableconstraint`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTableconstraint?: (ctx: TableconstraintContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.constraintelem`. * @param ctx the parse tree * @return the visitor result */ visitConstraintelem?: (ctx: ConstraintelemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_no_inherit`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_no_inherit?: (ctx: Opt_no_inheritContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.opt_column_list`. * @param ctx the parse tree @@ -1641,12 +953,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.column_list_create`. - * @param ctx the parse tree - * @return the visitor result - */ - visitColumn_list_create?: (ctx: Column_list_createContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.opt_c_include`. * @param ctx the parse tree @@ -1659,24 +965,12 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.exclusionconstraintlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExclusionconstraintlist?: (ctx: ExclusionconstraintlistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.exclusionconstraintelem`. * @param ctx the parse tree * @return the visitor result */ visitExclusionconstraintelem?: (ctx: ExclusionconstraintelemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.exclusionwhereclause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExclusionwhereclause?: (ctx: ExclusionwhereclauseContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.key_actions`. * @param ctx the parse tree @@ -1707,24 +1001,12 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.optpartitionspec`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOptpartitionspec?: (ctx: OptpartitionspecContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.partitionspec`. * @param ctx the parse tree * @return the visitor result */ visitPartitionspec?: (ctx: PartitionspecContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.part_params`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPart_params?: (ctx: Part_paramsContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.part_elem`. * @param ctx the parse tree @@ -1755,12 +1037,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.index_paramenters_create`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIndex_paramenters_create?: (ctx: Index_paramenters_createContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.optconstablespace`. * @param ctx the parse tree @@ -1811,18 +1087,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.create_mv_target`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreate_mv_target?: (ctx: Create_mv_targetContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.optnolog`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOptnolog?: (ctx: OptnologContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.refreshmatviewstmt`. * @param ctx the parse tree @@ -1842,245 +1106,101 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `PostgreSqlParser.optseqoptlist`. + * Visit a parse tree produced by `PostgreSqlParser.seqoptelem`. * @param ctx the parse tree * @return the visitor result */ - visitOptseqoptlist?: (ctx: OptseqoptlistContext) => Result; + visitSeqoptelem?: (ctx: SeqoptelemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.optparenthesizedseqoptlist`. + * Visit a parse tree produced by `PostgreSqlParser.numericonly`. * @param ctx the parse tree * @return the visitor result */ - visitOptparenthesizedseqoptlist?: (ctx: OptparenthesizedseqoptlistContext) => Result; + visitNumericonly?: (ctx: NumericonlyContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.seqoptlist`. + * Visit a parse tree produced by `PostgreSqlParser.createplangstmt`. * @param ctx the parse tree * @return the visitor result */ - visitSeqoptlist?: (ctx: SeqoptlistContext) => Result; + visitCreateplangstmt?: (ctx: CreateplangstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.seqoptelem`. + * Visit a parse tree produced by `PostgreSqlParser.createtablespacestmt`. * @param ctx the parse tree * @return the visitor result */ - visitSeqoptelem?: (ctx: SeqoptelemContext) => Result; + visitCreatetablespacestmt?: (ctx: CreatetablespacestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_by`. + * Visit a parse tree produced by `PostgreSqlParser.createextensionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_by?: (ctx: Opt_byContext) => Result; + visitCreateextensionstmt?: (ctx: CreateextensionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.numericonly`. + * Visit a parse tree produced by `PostgreSqlParser.alterextensionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitNumericonly?: (ctx: NumericonlyContext) => Result; + visitAlterextensionstmt?: (ctx: AlterextensionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.numericonly_list`. + * Visit a parse tree produced by `PostgreSqlParser.alterextensioncontentsstmt`. * @param ctx the parse tree * @return the visitor result */ - visitNumericonly_list?: (ctx: Numericonly_listContext) => Result; + visitAlterextensioncontentsstmt?: (ctx: AlterextensioncontentsstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.createplangstmt`. + * Visit a parse tree produced by `PostgreSqlParser.createfdwstmt`. * @param ctx the parse tree * @return the visitor result */ - visitCreateplangstmt?: (ctx: CreateplangstmtContext) => Result; + visitCreatefdwstmt?: (ctx: CreatefdwstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_trusted`. + * Visit a parse tree produced by `PostgreSqlParser.fdw_option`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_trusted?: (ctx: Opt_trustedContext) => Result; + visitFdw_option?: (ctx: Fdw_optionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.handler_name`. + * Visit a parse tree produced by `PostgreSqlParser.alterfdwstmt`. * @param ctx the parse tree * @return the visitor result */ - visitHandler_name?: (ctx: Handler_nameContext) => Result; + visitAlterfdwstmt?: (ctx: AlterfdwstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_inline_handler`. + * Visit a parse tree produced by `PostgreSqlParser.create_generic_options`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_inline_handler?: (ctx: Opt_inline_handlerContext) => Result; + visitCreate_generic_options?: (ctx: Create_generic_optionsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.validator_clause`. + * Visit a parse tree produced by `PostgreSqlParser.alter_generic_options`. * @param ctx the parse tree * @return the visitor result */ - visitValidator_clause?: (ctx: Validator_clauseContext) => Result; + visitAlter_generic_options?: (ctx: Alter_generic_optionsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_validator`. + * Visit a parse tree produced by `PostgreSqlParser.alter_generic_option_elem`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_validator?: (ctx: Opt_validatorContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_procedural`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_procedural?: (ctx: Opt_proceduralContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createtablespacestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatetablespacestmt?: (ctx: CreatetablespacestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opttablespaceowner`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpttablespaceowner?: (ctx: OpttablespaceownerContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createextensionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateextensionstmt?: (ctx: CreateextensionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.create_extension_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreate_extension_opt_list?: (ctx: Create_extension_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.create_extension_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreate_extension_opt_item?: (ctx: Create_extension_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterextensionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterextensionstmt?: (ctx: AlterextensionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_extension_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_extension_opt_list?: (ctx: Alter_extension_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_extension_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_extension_opt_item?: (ctx: Alter_extension_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterextensioncontentsstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterextensioncontentsstmt?: (ctx: AlterextensioncontentsstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createfdwstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatefdwstmt?: (ctx: CreatefdwstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.fdw_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFdw_option?: (ctx: Fdw_optionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.fdw_options`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFdw_options?: (ctx: Fdw_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_fdw_options`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_fdw_options?: (ctx: Opt_fdw_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterfdwstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterfdwstmt?: (ctx: AlterfdwstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.create_generic_options`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreate_generic_options?: (ctx: Create_generic_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.generic_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGeneric_option_list?: (ctx: Generic_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_generic_options`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_generic_options?: (ctx: Alter_generic_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_generic_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_generic_option_list?: (ctx: Alter_generic_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alter_generic_option_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlter_generic_option_elem?: (ctx: Alter_generic_option_elemContext) => Result; + visitAlter_generic_option_elem?: (ctx: Alter_generic_option_elemContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.generic_option_elem`. * @param ctx the parse tree * @return the visitor result */ visitGeneric_option_elem?: (ctx: Generic_option_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.generic_option_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGeneric_option_name?: (ctx: Generic_option_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.generic_option_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGeneric_option_arg?: (ctx: Generic_option_argContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.createforeignserverstmt`. * @param ctx the parse tree * @return the visitor result */ visitCreateforeignserverstmt?: (ctx: CreateforeignserverstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_type`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_type?: (ctx: Opt_typeContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.foreign_server_version`. * @param ctx the parse tree * @return the visitor result */ visitForeign_server_version?: (ctx: Foreign_server_versionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_foreign_server_version`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_foreign_server_version?: (ctx: Opt_foreign_server_versionContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.alterforeignserverstmt`. * @param ctx the parse tree @@ -2107,30 +1227,12 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.import_qualification_type`. - * @param ctx the parse tree - * @return the visitor result - */ - visitImport_qualification_type?: (ctx: Import_qualification_typeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.import_qualification`. - * @param ctx the parse tree - * @return the visitor result - */ - visitImport_qualification?: (ctx: Import_qualificationContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.createusermappingstmt`. * @param ctx the parse tree * @return the visitor result */ visitCreateusermappingstmt?: (ctx: CreateusermappingstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.auth_ident`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAuth_ident?: (ctx: Auth_identContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.alterusermappingstmt`. * @param ctx the parse tree @@ -2155,12 +1257,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.procedure_cluase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitProcedure_cluase?: (ctx: Procedure_cluaseContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.procedure_action`. * @param ctx the parse tree @@ -2179,48 +1275,12 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.rowsecuritydefaulttorole`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRowsecuritydefaulttorole?: (ctx: RowsecuritydefaulttoroleContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.rowsecurityoptionaltorole`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRowsecurityoptionaltorole?: (ctx: RowsecurityoptionaltoroleContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.rowsecuritydefaultpermissive`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRowsecuritydefaultpermissive?: (ctx: RowsecuritydefaultpermissiveContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.rowsecuritydefaultforcmd`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRowsecuritydefaultforcmd?: (ctx: RowsecuritydefaultforcmdContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.row_security_cmd`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRow_security_cmd?: (ctx: Row_security_cmdContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.createamstmt`. * @param ctx the parse tree * @return the visitor result */ visitCreateamstmt?: (ctx: CreateamstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.am_type`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAm_type?: (ctx: Am_typeContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.createtrigstmt`. * @param ctx the parse tree @@ -2233,18 +1293,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.foreachrow`. - * @param ctx the parse tree - * @return the visitor result - */ - visitForeachrow?: (ctx: ForeachrowContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.roworstatment`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRoworstatment?: (ctx: RoworstatmentContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.triggerevents`. * @param ctx the parse tree @@ -2257,60 +1305,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.triggerreferencing`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerreferencing?: (ctx: TriggerreferencingContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.triggertransitions`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggertransitions?: (ctx: TriggertransitionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.triggertransition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggertransition?: (ctx: TriggertransitionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transitionoldornew`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransitionoldornew?: (ctx: TransitionoldornewContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transitionrowortable`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransitionrowortable?: (ctx: TransitionrowortableContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transitionrelname`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransitionrelname?: (ctx: TransitionrelnameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.triggerforspec`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerforspec?: (ctx: TriggerforspecContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.triggerforopteach`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerforopteach?: (ctx: TriggerforopteachContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.triggerfortype`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerfortype?: (ctx: TriggerfortypeContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.triggerwhen`. * @param ctx the parse tree @@ -2335,18 +1329,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.optconstrfromtable`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOptconstrfromtable?: (ctx: OptconstrfromtableContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.constraintattributespec`. - * @param ctx the parse tree - * @return the visitor result - */ - visitConstraintattributespec?: (ctx: ConstraintattributespecContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.constraintattributeElem`. * @param ctx the parse tree @@ -2359,36 +1341,18 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.event_trigger_when_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitEvent_trigger_when_list?: (ctx: Event_trigger_when_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.event_trigger_when_item`. * @param ctx the parse tree * @return the visitor result */ visitEvent_trigger_when_item?: (ctx: Event_trigger_when_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.event_trigger_value_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitEvent_trigger_value_list?: (ctx: Event_trigger_value_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.altereventtrigstmt`. * @param ctx the parse tree * @return the visitor result */ visitAltereventtrigstmt?: (ctx: AltereventtrigstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.enable_trigger`. - * @param ctx the parse tree - * @return the visitor result - */ - visitEnable_trigger?: (ctx: Enable_triggerContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.createassertionstmt`. * @param ctx the parse tree @@ -2396,3541 +1360,1935 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `PostgreSqlParser.definestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefinestmt?: (ctx: DefinestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.definition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefinition?: (ctx: DefinitionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.def_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDef_list?: (ctx: Def_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.def_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDef_elem?: (ctx: Def_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.def_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDef_arg?: (ctx: Def_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.old_aggr_definition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOld_aggr_definition?: (ctx: Old_aggr_definitionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.old_aggr_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOld_aggr_list?: (ctx: Old_aggr_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.old_aggr_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOld_aggr_elem?: (ctx: Old_aggr_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_enum_val_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_enum_val_list?: (ctx: Opt_enum_val_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.enum_val_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitEnum_val_list?: (ctx: Enum_val_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterenumstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterenumstmt?: (ctx: AlterenumstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_if_not_exists`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_if_not_exists?: (ctx: Opt_if_not_existsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createopclassstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateopclassstmt?: (ctx: CreateopclassstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opclass_item_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpclass_item_list?: (ctx: Opclass_item_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opclass_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpclass_item?: (ctx: Opclass_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_default`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_default?: (ctx: Opt_defaultContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_opfamily`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_opfamily?: (ctx: Opt_opfamilyContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opclass_purpose`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpclass_purpose?: (ctx: Opclass_purposeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_recheck`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_recheck?: (ctx: Opt_recheckContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createopfamilystmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateopfamilystmt?: (ctx: CreateopfamilystmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alteropfamilystmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlteropfamilystmt?: (ctx: AlteropfamilystmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opclass_drop_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpclass_drop_list?: (ctx: Opclass_drop_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opclass_drop`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpclass_drop?: (ctx: Opclass_dropContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reassignownedstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReassignownedstmt?: (ctx: ReassignownedstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.dropstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDropstmt?: (ctx: DropstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.view_nameList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitView_nameList?: (ctx: View_nameListContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.object_type_any_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitObject_type_any_name?: (ctx: Object_type_any_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.object_type_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitObject_type_name?: (ctx: Object_type_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.object_type_name_on_any_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitObject_type_name_on_any_name?: (ctx: Object_type_name_on_any_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.any_name_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAny_name_list?: (ctx: Any_name_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.relation_column_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRelation_column_name?: (ctx: Relation_column_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.relation_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRelation_name?: (ctx: Relation_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.any_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAny_name?: (ctx: Any_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.attrs`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAttrs?: (ctx: AttrsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.type_name_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitType_name_list?: (ctx: Type_name_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.truncatestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTruncatestmt?: (ctx: TruncatestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.truncate_table`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTruncate_table?: (ctx: Truncate_tableContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.commentstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCommentstmt?: (ctx: CommentstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.comment_text`. - * @param ctx the parse tree - * @return the visitor result - */ - visitComment_text?: (ctx: Comment_textContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.seclabelstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSeclabelstmt?: (ctx: SeclabelstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_provider`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_provider?: (ctx: Opt_providerContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.security_label`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSecurity_label?: (ctx: Security_labelContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.fetchstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFetchstmt?: (ctx: FetchstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.fetch_args`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFetch_args?: (ctx: Fetch_argsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.from_in`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFrom_in?: (ctx: From_inContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_from_in`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_from_in?: (ctx: Opt_from_inContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.grantstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGrantstmt?: (ctx: GrantstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.revokestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRevokestmt?: (ctx: RevokestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.privileges`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrivileges?: (ctx: PrivilegesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.beforeprivilegeselectlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBeforeprivilegeselectlist?: (ctx: BeforeprivilegeselectlistContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.beforeprivilegeselect`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBeforeprivilegeselect?: (ctx: BeforeprivilegeselectContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.privilege_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrivilege_list?: (ctx: Privilege_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.privilege`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrivilege?: (ctx: PrivilegeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.privilege_target`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrivilege_target?: (ctx: Privilege_targetContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.grantee_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGrantee_list?: (ctx: Grantee_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.grantee`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGrantee?: (ctx: GranteeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_grant_grant_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_grant_grant_option?: (ctx: Opt_grant_grant_optionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.grantrolestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGrantrolestmt?: (ctx: GrantrolestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.revokerolestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRevokerolestmt?: (ctx: RevokerolestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_grant_admin_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_grant_admin_option?: (ctx: Opt_grant_admin_optionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_granted_by`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_granted_by?: (ctx: Opt_granted_byContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterdefaultprivilegesstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterdefaultprivilegesstmt?: (ctx: AlterdefaultprivilegesstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.defacloptionlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefacloptionlist?: (ctx: DefacloptionlistContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.defacloption`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefacloption?: (ctx: DefacloptionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.defaclaction`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefaclaction?: (ctx: DefaclactionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.defacl_privilege_target`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefacl_privilege_target?: (ctx: Defacl_privilege_targetContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.indexstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIndexstmt?: (ctx: IndexstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_unique`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_unique?: (ctx: Opt_uniqueContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_concurrently`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_concurrently?: (ctx: Opt_concurrentlyContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_index_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_index_name?: (ctx: Opt_index_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.access_method_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAccess_method_clause?: (ctx: Access_method_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.index_params`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIndex_params?: (ctx: Index_paramsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.index_elem_options`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIndex_elem_options?: (ctx: Index_elem_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.index_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIndex_elem?: (ctx: Index_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_include`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_include?: (ctx: Opt_includeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.index_including_params`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIndex_including_params?: (ctx: Index_including_paramsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_collate`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_collate?: (ctx: Opt_collateContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_class`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_class?: (ctx: Opt_classContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_asc_desc`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_asc_desc?: (ctx: Opt_asc_descContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_nulls_order`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_nulls_order?: (ctx: Opt_nulls_orderContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createfunctionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatefunctionstmt?: (ctx: CreatefunctionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.attrilist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAttrilist?: (ctx: AttrilistContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_or_replace`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_or_replace?: (ctx: Opt_or_replaceContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_args`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_args?: (ctx: Func_argsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_args_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_args_list?: (ctx: Func_args_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.routine_with_argtypes_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRoutine_with_argtypes_list?: (ctx: Routine_with_argtypes_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.routine_with_argtypes`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRoutine_with_argtypes?: (ctx: Routine_with_argtypesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitProcedure_with_argtypes_list?: (ctx: Procedure_with_argtypes_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes`. - * @param ctx the parse tree - * @return the visitor result - */ - visitProcedure_with_argtypes?: (ctx: Procedure_with_argtypesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.function_with_argtypes_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunction_with_argtypes_list?: (ctx: Function_with_argtypes_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.function_with_argtypes`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunction_with_argtypes?: (ctx: Function_with_argtypesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_args_with_defaults`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_args_with_defaults?: (ctx: Func_args_with_defaultsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_args_with_defaults_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_args_with_defaults_list?: (ctx: Func_args_with_defaults_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_arg?: (ctx: Func_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.arg_class`. - * @param ctx the parse tree - * @return the visitor result - */ - visitArg_class?: (ctx: Arg_classContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.param_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitParam_name?: (ctx: Param_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_return`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_return?: (ctx: Func_returnContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_type`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_type?: (ctx: Func_typeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.func_arg_with_default`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFunc_arg_with_default?: (ctx: Func_arg_with_defaultContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.aggr_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAggr_arg?: (ctx: Aggr_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.aggr_args`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAggr_args?: (ctx: Aggr_argsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.aggr_args_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAggr_args_list?: (ctx: Aggr_args_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAggregate_with_argtypes?: (ctx: Aggregate_with_argtypesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAggregate_with_argtypes_list?: (ctx: Aggregate_with_argtypes_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createfunc_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatefunc_opt_list?: (ctx: Createfunc_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.common_func_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCommon_func_opt_item?: (ctx: Common_func_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createfunc_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatefunc_opt_item?: (ctx: Createfunc_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transform_type_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransform_type_list?: (ctx: Transform_type_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_definition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_definition?: (ctx: Opt_definitionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.table_func_column`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTable_func_column?: (ctx: Table_func_columnContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.table_func_column_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTable_func_column_list?: (ctx: Table_func_column_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterfunctionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterfunctionstmt?: (ctx: AlterfunctionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterFunctionTypeClause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterFunctionTypeClause?: (ctx: AlterFunctionTypeClauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterfunc_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterfunc_opt_list?: (ctx: Alterfunc_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_restrict`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_restrict?: (ctx: Opt_restrictContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.removefuncstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRemovefuncstmt?: (ctx: RemovefuncstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.removeaggrstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRemoveaggrstmt?: (ctx: RemoveaggrstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.removeoperstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRemoveoperstmt?: (ctx: RemoveoperstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.oper_argtypes`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOper_argtypes?: (ctx: Oper_argtypesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.any_operator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAny_operator?: (ctx: Any_operatorContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.operator_with_argtypes_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOperator_with_argtypes_list?: (ctx: Operator_with_argtypes_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.operator_with_argtypes`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOperator_with_argtypes?: (ctx: Operator_with_argtypesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.dostmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDostmt?: (ctx: DostmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.dostmt_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDostmt_opt_list?: (ctx: Dostmt_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.dostmt_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDostmt_opt_item?: (ctx: Dostmt_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createcaststmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatecaststmt?: (ctx: CreatecaststmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.cast_context`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCast_context?: (ctx: Cast_contextContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_if_exists`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_if_exists?: (ctx: Opt_if_existsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createtransformstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatetransformstmt?: (ctx: CreatetransformstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transform_element_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransform_element_list?: (ctx: Transform_element_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reindexstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReindexstmt?: (ctx: ReindexstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reindex_target_type`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReindex_target_type?: (ctx: Reindex_target_typeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reindex_target_multitable`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReindex_target_multitable?: (ctx: Reindex_target_multitableContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reindex_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReindex_option_list?: (ctx: Reindex_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.reindex_option_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReindex_option_elem?: (ctx: Reindex_option_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altertblspcstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltertblspcstmt?: (ctx: AltertblspcstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.renamestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRenamestmt?: (ctx: RenamestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_set_data`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_set_data?: (ctx: Opt_set_dataContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterobjectdependsstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterobjectdependsstmt?: (ctx: AlterobjectdependsstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_no`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_no?: (ctx: Opt_noContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterobjectschemastmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterobjectschemastmt?: (ctx: AlterobjectschemastmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alteroperatorstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlteroperatorstmt?: (ctx: AlteroperatorstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.operator_def_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOperator_def_list?: (ctx: Operator_def_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.operator_def_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOperator_def_elem?: (ctx: Operator_def_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.operator_def_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOperator_def_arg?: (ctx: Operator_def_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altertypestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltertypestmt?: (ctx: AltertypestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterownerstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterownerstmt?: (ctx: AlterownerstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createpublicationstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatepublicationstmt?: (ctx: CreatepublicationstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_publication_for_tables`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_publication_for_tables?: (ctx: Opt_publication_for_tablesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.publication_for_tables`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPublication_for_tables?: (ctx: Publication_for_tablesContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterpublicationstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterpublicationstmt?: (ctx: AlterpublicationstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createsubscriptionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatesubscriptionstmt?: (ctx: CreatesubscriptionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.publication_name_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPublication_name_list?: (ctx: Publication_name_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.publication_name_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPublication_name_item?: (ctx: Publication_name_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altersubscriptionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltersubscriptionstmt?: (ctx: AltersubscriptionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.rulestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRulestmt?: (ctx: RulestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.ruleactionlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRuleactionlist?: (ctx: RuleactionlistContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.ruleactionmulti`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRuleactionmulti?: (ctx: RuleactionmultiContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.ruleactionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRuleactionstmt?: (ctx: RuleactionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.ruleactionstmtOrEmpty`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRuleactionstmtOrEmpty?: (ctx: RuleactionstmtOrEmptyContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.event`. - * @param ctx the parse tree - * @return the visitor result - */ - visitEvent?: (ctx: EventContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_instead`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_instead?: (ctx: Opt_insteadContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.notifystmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNotifystmt?: (ctx: NotifystmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.notify_payload`. - * @param ctx the parse tree - * @return the visitor result - */ - visitNotify_payload?: (ctx: Notify_payloadContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.listenstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitListenstmt?: (ctx: ListenstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.unlistenstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUnlistenstmt?: (ctx: UnlistenstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transactionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransactionstmt?: (ctx: TransactionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_transaction`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_transaction?: (ctx: Opt_transactionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transaction_mode_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransaction_mode_item?: (ctx: Transaction_mode_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transaction_mode_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransaction_mode_list?: (ctx: Transaction_mode_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.transaction_mode_list_or_empty`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransaction_mode_list_or_empty?: (ctx: Transaction_mode_list_or_emptyContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_transaction_chain`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_transaction_chain?: (ctx: Opt_transaction_chainContext) => Result; - /** - * Visit a parse tree produced by the `createView` - * labeled alternative in `PostgreSqlParser.viewstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateView?: (ctx: CreateViewContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_check_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_check_option?: (ctx: Opt_check_optionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.loadstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitLoadstmt?: (ctx: LoadstmtContext) => Result; - /** - * Visit a parse tree produced by the `createDatabase` - * labeled alternative in `PostgreSqlParser.createdbstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateDatabase?: (ctx: CreateDatabaseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createdb_opt_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatedb_opt_list?: (ctx: Createdb_opt_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createdb_opt_items`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatedb_opt_items?: (ctx: Createdb_opt_itemsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createdb_opt_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatedb_opt_item?: (ctx: Createdb_opt_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createdb_opt_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatedb_opt_name?: (ctx: Createdb_opt_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_equal`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_equal?: (ctx: Opt_equalContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterdatabasestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterdatabasestmt?: (ctx: AlterdatabasestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterdatabasesetstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterdatabasesetstmt?: (ctx: AlterdatabasesetstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.drop_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDrop_option_list?: (ctx: Drop_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.drop_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDrop_option?: (ctx: Drop_optionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altercollationstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltercollationstmt?: (ctx: AltercollationstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altersystemstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltersystemstmt?: (ctx: AltersystemstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createdomainstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatedomainstmt?: (ctx: CreatedomainstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.alterdomainstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterdomainstmt?: (ctx: AlterdomainstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_as`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_as?: (ctx: Opt_asContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altertsdictionarystmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltertsdictionarystmt?: (ctx: AltertsdictionarystmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.altertsconfigurationstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAltertsconfigurationstmt?: (ctx: AltertsconfigurationstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.any_with`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAny_with?: (ctx: Any_withContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.createconversionstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateconversionstmt?: (ctx: CreateconversionstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.clusterstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitClusterstmt?: (ctx: ClusterstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_verbose_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_verbose_list?: (ctx: Opt_verbose_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.cluster_index_specification`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCluster_index_specification?: (ctx: Cluster_index_specificationContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vacuumstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVacuumstmt?: (ctx: VacuumstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.analyzestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAnalyzestmt?: (ctx: AnalyzestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vac_analyze_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVac_analyze_option_list?: (ctx: Vac_analyze_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.analyze_keyword`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAnalyze_keyword?: (ctx: Analyze_keywordContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vac_analyze_option_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVac_analyze_option_elem?: (ctx: Vac_analyze_option_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vac_analyze_option_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVac_analyze_option_name?: (ctx: Vac_analyze_option_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vac_analyze_option_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVac_analyze_option_arg?: (ctx: Vac_analyze_option_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_analyze`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_analyze?: (ctx: Opt_analyzeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.analyze_options_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAnalyze_options_list?: (ctx: Analyze_options_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.analyze_option_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAnalyze_option_elem?: (ctx: Analyze_option_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_verbose`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_verbose?: (ctx: Opt_verboseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_skiplock`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_skiplock?: (ctx: Opt_skiplockContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_buffer_usage_limit`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_buffer_usage_limit?: (ctx: Opt_buffer_usage_limitContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_full`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_full?: (ctx: Opt_fullContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_freeze`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_freeze?: (ctx: Opt_freezeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_name_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_name_list?: (ctx: Opt_name_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vacuum_relation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVacuum_relation?: (ctx: Vacuum_relationContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.vacuum_relation_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVacuum_relation_list?: (ctx: Vacuum_relation_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_vacuum_relation_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_vacuum_relation_list?: (ctx: Opt_vacuum_relation_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.explainstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExplainstmt?: (ctx: ExplainstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.explainablestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExplainablestmt?: (ctx: ExplainablestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.explain_option_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExplain_option_list?: (ctx: Explain_option_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.explain_option_elem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExplain_option_elem?: (ctx: Explain_option_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.explain_option_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExplain_option_name?: (ctx: Explain_option_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.explain_option_arg`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExplain_option_arg?: (ctx: Explain_option_argContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.preparestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPreparestmt?: (ctx: PreparestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.prep_type_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrep_type_clause?: (ctx: Prep_type_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.preparablestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPreparablestmt?: (ctx: PreparablestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.executestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExecutestmt?: (ctx: ExecutestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.execute_param_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExecute_param_clause?: (ctx: Execute_param_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.deallocatestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDeallocatestmt?: (ctx: DeallocatestmtContext) => Result; - /** - * Visit a parse tree produced by the `insertStatement` - * labeled alternative in `PostgreSqlParser.insertstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInsertStatement?: (ctx: InsertStatementContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.insert_target`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInsert_target?: (ctx: Insert_targetContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.insert_rest`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInsert_rest?: (ctx: Insert_restContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.override_kind`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOverride_kind?: (ctx: Override_kindContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.insert_column_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInsert_column_list?: (ctx: Insert_column_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.insert_column_item`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInsert_column_item?: (ctx: Insert_column_itemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_on_conflict`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_on_conflict?: (ctx: Opt_on_conflictContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_conf_expr`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_conf_expr?: (ctx: Opt_conf_exprContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.returning_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReturning_clause?: (ctx: Returning_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.deletestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDeletestmt?: (ctx: DeletestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.using_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUsing_clause?: (ctx: Using_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.lockstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitLockstmt?: (ctx: LockstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_lock`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_lock?: (ctx: Opt_lockContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.lock_type`. - * @param ctx the parse tree - * @return the visitor result - */ - visitLock_type?: (ctx: Lock_typeContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_nowait`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_nowait?: (ctx: Opt_nowaitContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_nowait_or_skip`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_nowait_or_skip?: (ctx: Opt_nowait_or_skipContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.updatestmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUpdatestmt?: (ctx: UpdatestmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.set_clause_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSet_clause_list?: (ctx: Set_clause_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.set_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSet_clause?: (ctx: Set_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.set_target`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSet_target?: (ctx: Set_targetContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.set_target_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSet_target_list?: (ctx: Set_target_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.declarecursorstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDeclarecursorstmt?: (ctx: DeclarecursorstmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.cursor_name`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCursor_name?: (ctx: Cursor_nameContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.cursor_options`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCursor_options?: (ctx: Cursor_optionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_hold`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_hold?: (ctx: Opt_holdContext) => Result; - /** - * Visit a parse tree produced by the `selectStatement` - * labeled alternative in `PostgreSqlParser.selectstmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelectStatement?: (ctx: SelectStatementContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.select_with_parens`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelect_with_parens?: (ctx: Select_with_parensContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.select_no_parens`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelect_no_parens?: (ctx: Select_no_parensContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.select_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelect_clause?: (ctx: Select_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.simple_select`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSimple_select?: (ctx: Simple_selectContext) => Result; - /** - * Visit a parse tree produced by the `union` - * labeled alternative in `PostgreSqlParser.set_operator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUnion?: (ctx: UnionContext) => Result; - /** - * Visit a parse tree produced by the `intersect` - * labeled alternative in `PostgreSqlParser.set_operator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIntersect?: (ctx: IntersectContext) => Result; - /** - * Visit a parse tree produced by the `except` - * labeled alternative in `PostgreSqlParser.set_operator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExcept?: (ctx: ExceptContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.set_operator_with_all_or_distinct`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSet_operator_with_all_or_distinct?: (ctx: Set_operator_with_all_or_distinctContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.with_clause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitWith_clause?: (ctx: With_clauseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.cte_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCte_list?: (ctx: Cte_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.common_table_expr`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCommon_table_expr?: (ctx: Common_table_exprContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.search_cluase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSearch_cluase?: (ctx: Search_cluaseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.cycle_cluase`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCycle_cluase?: (ctx: Cycle_cluaseContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_materialized`. + * Visit a parse tree produced by `PostgreSqlParser.definestmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_materialized?: (ctx: Opt_materializedContext) => Result; + visitDefinestmt?: (ctx: DefinestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_with_clause`. + * Visit a parse tree produced by `PostgreSqlParser.definition`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_with_clause?: (ctx: Opt_with_clauseContext) => Result; + visitDefinition?: (ctx: DefinitionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.into_clause`. + * Visit a parse tree produced by `PostgreSqlParser.def_elem`. * @param ctx the parse tree * @return the visitor result */ - visitInto_clause?: (ctx: Into_clauseContext) => Result; + visitDef_elem?: (ctx: Def_elemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_strict`. + * Visit a parse tree produced by `PostgreSqlParser.def_arg`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_strict?: (ctx: Opt_strictContext) => Result; + visitDef_arg?: (ctx: Def_argContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opttempTableName`. + * Visit a parse tree produced by `PostgreSqlParser.old_aggr_elem`. * @param ctx the parse tree * @return the visitor result */ - visitOpttempTableName?: (ctx: OpttempTableNameContext) => Result; + visitOld_aggr_elem?: (ctx: Old_aggr_elemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_table`. + * Visit a parse tree produced by `PostgreSqlParser.alterenumstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_table?: (ctx: Opt_tableContext) => Result; + visitAlterenumstmt?: (ctx: AlterenumstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.all_or_distinct`. + * Visit a parse tree produced by `PostgreSqlParser.opt_if_not_exists`. * @param ctx the parse tree * @return the visitor result */ - visitAll_or_distinct?: (ctx: All_or_distinctContext) => Result; + visitOpt_if_not_exists?: (ctx: Opt_if_not_existsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.distinct_clause`. + * Visit a parse tree produced by `PostgreSqlParser.createopclassstmt`. * @param ctx the parse tree * @return the visitor result */ - visitDistinct_clause?: (ctx: Distinct_clauseContext) => Result; + visitCreateopclassstmt?: (ctx: CreateopclassstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_all_clause`. + * Visit a parse tree produced by `PostgreSqlParser.opclass_item`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_all_clause?: (ctx: Opt_all_clauseContext) => Result; + visitOpclass_item?: (ctx: Opclass_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_sort_clause`. + * Visit a parse tree produced by `PostgreSqlParser.createopfamilystmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_sort_clause?: (ctx: Opt_sort_clauseContext) => Result; + visitCreateopfamilystmt?: (ctx: CreateopfamilystmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.sort_clause`. + * Visit a parse tree produced by `PostgreSqlParser.alteropfamilystmt`. * @param ctx the parse tree * @return the visitor result */ - visitSort_clause?: (ctx: Sort_clauseContext) => Result; + visitAlteropfamilystmt?: (ctx: AlteropfamilystmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.sortby_list`. + * Visit a parse tree produced by `PostgreSqlParser.opclass_drop`. * @param ctx the parse tree * @return the visitor result */ - visitSortby_list?: (ctx: Sortby_listContext) => Result; + visitOpclass_drop?: (ctx: Opclass_dropContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.sortby`. + * Visit a parse tree produced by `PostgreSqlParser.reassignownedstmt`. * @param ctx the parse tree * @return the visitor result */ - visitSortby?: (ctx: SortbyContext) => Result; + visitReassignownedstmt?: (ctx: ReassignownedstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.select_limit`. + * Visit a parse tree produced by `PostgreSqlParser.dropstmt`. * @param ctx the parse tree * @return the visitor result */ - visitSelect_limit?: (ctx: Select_limitContext) => Result; + visitDropstmt?: (ctx: DropstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_select_limit`. + * Visit a parse tree produced by `PostgreSqlParser.object_type_any_name`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_select_limit?: (ctx: Opt_select_limitContext) => Result; + visitObject_type_any_name?: (ctx: Object_type_any_nameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.limit_clause`. + * Visit a parse tree produced by `PostgreSqlParser.object_type_name`. * @param ctx the parse tree * @return the visitor result */ - visitLimit_clause?: (ctx: Limit_clauseContext) => Result; + visitObject_type_name?: (ctx: Object_type_nameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.fetch_clause`. + * Visit a parse tree produced by `PostgreSqlParser.any_name_list`. * @param ctx the parse tree * @return the visitor result */ - visitFetch_clause?: (ctx: Fetch_clauseContext) => Result; + visitAny_name_list?: (ctx: Any_name_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.offset_clause`. + * Visit a parse tree produced by `PostgreSqlParser.any_name`. * @param ctx the parse tree * @return the visitor result */ - visitOffset_clause?: (ctx: Offset_clauseContext) => Result; + visitAny_name?: (ctx: Any_nameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.select_limit_value`. + * Visit a parse tree produced by `PostgreSqlParser.attrs`. * @param ctx the parse tree * @return the visitor result */ - visitSelect_limit_value?: (ctx: Select_limit_valueContext) => Result; + visitAttrs?: (ctx: AttrsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.select_offset_value`. + * Visit a parse tree produced by `PostgreSqlParser.truncatestmt`. * @param ctx the parse tree * @return the visitor result */ - visitSelect_offset_value?: (ctx: Select_offset_valueContext) => Result; + visitTruncatestmt?: (ctx: TruncatestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.select_fetch_first_value`. + * Visit a parse tree produced by `PostgreSqlParser.truncate_table`. * @param ctx the parse tree * @return the visitor result */ - visitSelect_fetch_first_value?: (ctx: Select_fetch_first_valueContext) => Result; + visitTruncate_table?: (ctx: Truncate_tableContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.i_or_f_const`. + * Visit a parse tree produced by `PostgreSqlParser.commentstmt`. * @param ctx the parse tree * @return the visitor result */ - visitI_or_f_const?: (ctx: I_or_f_constContext) => Result; + visitCommentstmt?: (ctx: CommentstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.row_or_rows`. + * Visit a parse tree produced by `PostgreSqlParser.seclabelstmt`. * @param ctx the parse tree * @return the visitor result */ - visitRow_or_rows?: (ctx: Row_or_rowsContext) => Result; + visitSeclabelstmt?: (ctx: SeclabelstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.first_or_next`. + * Visit a parse tree produced by `PostgreSqlParser.fetchstmt`. * @param ctx the parse tree * @return the visitor result */ - visitFirst_or_next?: (ctx: First_or_nextContext) => Result; + visitFetchstmt?: (ctx: FetchstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.group_clause`. + * Visit a parse tree produced by `PostgreSqlParser.fetch_args`. * @param ctx the parse tree * @return the visitor result */ - visitGroup_clause?: (ctx: Group_clauseContext) => Result; + visitFetch_args?: (ctx: Fetch_argsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.group_by_list`. + * Visit a parse tree produced by `PostgreSqlParser.from_in`. * @param ctx the parse tree * @return the visitor result */ - visitGroup_by_list?: (ctx: Group_by_listContext) => Result; + visitFrom_in?: (ctx: From_inContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.group_by_item`. + * Visit a parse tree produced by `PostgreSqlParser.grantstmt`. * @param ctx the parse tree * @return the visitor result */ - visitGroup_by_item?: (ctx: Group_by_itemContext) => Result; + visitGrantstmt?: (ctx: GrantstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.empty_grouping_set`. + * Visit a parse tree produced by `PostgreSqlParser.revokestmt`. * @param ctx the parse tree * @return the visitor result */ - visitEmpty_grouping_set?: (ctx: Empty_grouping_setContext) => Result; + visitRevokestmt?: (ctx: RevokestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.rollup_clause`. + * Visit a parse tree produced by `PostgreSqlParser.privileges`. * @param ctx the parse tree * @return the visitor result */ - visitRollup_clause?: (ctx: Rollup_clauseContext) => Result; + visitPrivileges?: (ctx: PrivilegesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.cube_clause`. + * Visit a parse tree produced by `PostgreSqlParser.beforeprivilegeselect`. * @param ctx the parse tree * @return the visitor result */ - visitCube_clause?: (ctx: Cube_clauseContext) => Result; + visitBeforeprivilegeselect?: (ctx: BeforeprivilegeselectContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.grouping_sets_clause`. + * Visit a parse tree produced by `PostgreSqlParser.privilege`. * @param ctx the parse tree * @return the visitor result */ - visitGrouping_sets_clause?: (ctx: Grouping_sets_clauseContext) => Result; + visitPrivilege?: (ctx: PrivilegeContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.having_clause`. + * Visit a parse tree produced by `PostgreSqlParser.privilege_target`. * @param ctx the parse tree * @return the visitor result */ - visitHaving_clause?: (ctx: Having_clauseContext) => Result; + visitPrivilege_target?: (ctx: Privilege_targetContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.for_locking_clause`. + * Visit a parse tree produced by `PostgreSqlParser.grantee_list`. * @param ctx the parse tree * @return the visitor result */ - visitFor_locking_clause?: (ctx: For_locking_clauseContext) => Result; + visitGrantee_list?: (ctx: Grantee_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_for_locking_clause`. + * Visit a parse tree produced by `PostgreSqlParser.grantrolestmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_for_locking_clause?: (ctx: Opt_for_locking_clauseContext) => Result; + visitGrantrolestmt?: (ctx: GrantrolestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.for_locking_items`. + * Visit a parse tree produced by `PostgreSqlParser.revokerolestmt`. * @param ctx the parse tree * @return the visitor result */ - visitFor_locking_items?: (ctx: For_locking_itemsContext) => Result; + visitRevokerolestmt?: (ctx: RevokerolestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.for_locking_item`. + * Visit a parse tree produced by `PostgreSqlParser.alterdefaultprivilegesstmt`. * @param ctx the parse tree * @return the visitor result */ - visitFor_locking_item?: (ctx: For_locking_itemContext) => Result; + visitAlterdefaultprivilegesstmt?: (ctx: AlterdefaultprivilegesstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.for_locking_strength`. + * Visit a parse tree produced by `PostgreSqlParser.defaclaction`. * @param ctx the parse tree * @return the visitor result */ - visitFor_locking_strength?: (ctx: For_locking_strengthContext) => Result; + visitDefaclaction?: (ctx: DefaclactionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.locked_rels_list`. + * Visit a parse tree produced by `PostgreSqlParser.defacl_privilege_target`. * @param ctx the parse tree * @return the visitor result */ - visitLocked_rels_list?: (ctx: Locked_rels_listContext) => Result; + visitDefacl_privilege_target?: (ctx: Defacl_privilege_targetContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.values_clause`. + * Visit a parse tree produced by `PostgreSqlParser.indexstmt`. * @param ctx the parse tree * @return the visitor result */ - visitValues_clause?: (ctx: Values_clauseContext) => Result; + visitIndexstmt?: (ctx: IndexstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.from_clause`. + * Visit a parse tree produced by `PostgreSqlParser.index_params`. * @param ctx the parse tree * @return the visitor result */ - visitFrom_clause?: (ctx: From_clauseContext) => Result; + visitIndex_params?: (ctx: Index_paramsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.from_list`. + * Visit a parse tree produced by `PostgreSqlParser.index_elem`. * @param ctx the parse tree * @return the visitor result */ - visitFrom_list?: (ctx: From_listContext) => Result; + visitIndex_elem?: (ctx: Index_elemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.table_ref`. + * Visit a parse tree produced by `PostgreSqlParser.createfunctionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitTable_ref?: (ctx: Table_refContext) => Result; + visitCreatefunctionstmt?: (ctx: CreatefunctionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.alias_clause`. + * Visit a parse tree produced by `PostgreSqlParser.opt_or_replace`. * @param ctx the parse tree * @return the visitor result */ - visitAlias_clause?: (ctx: Alias_clauseContext) => Result; + visitOpt_or_replace?: (ctx: Opt_or_replaceContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_alias_clause`. + * Visit a parse tree produced by `PostgreSqlParser.func_args`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_alias_clause?: (ctx: Opt_alias_clauseContext) => Result; + visitFunc_args?: (ctx: Func_argsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_alias_clause`. + * Visit a parse tree produced by `PostgreSqlParser.func_args_list`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_alias_clause?: (ctx: Func_alias_clauseContext) => Result; + visitFunc_args_list?: (ctx: Func_args_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.join_type`. + * Visit a parse tree produced by `PostgreSqlParser.routine_with_argtypes_list`. * @param ctx the parse tree * @return the visitor result */ - visitJoin_type?: (ctx: Join_typeContext) => Result; + visitRoutine_with_argtypes_list?: (ctx: Routine_with_argtypes_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.join_qual`. + * Visit a parse tree produced by `PostgreSqlParser.routine_with_argtypes`. * @param ctx the parse tree * @return the visitor result */ - visitJoin_qual?: (ctx: Join_qualContext) => Result; + visitRoutine_with_argtypes?: (ctx: Routine_with_argtypesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.relation_expr`. + * Visit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes_list`. * @param ctx the parse tree * @return the visitor result */ - visitRelation_expr?: (ctx: Relation_exprContext) => Result; + visitProcedure_with_argtypes_list?: (ctx: Procedure_with_argtypes_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.view_relation_expr`. + * Visit a parse tree produced by `PostgreSqlParser.procedure_with_argtypes`. * @param ctx the parse tree * @return the visitor result */ - visitView_relation_expr?: (ctx: View_relation_exprContext) => Result; + visitProcedure_with_argtypes?: (ctx: Procedure_with_argtypesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.publication_relation_expr`. + * Visit a parse tree produced by `PostgreSqlParser.function_with_argtypes_list`. * @param ctx the parse tree * @return the visitor result */ - visitPublication_relation_expr?: (ctx: Publication_relation_exprContext) => Result; + visitFunction_with_argtypes_list?: (ctx: Function_with_argtypes_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.relation_expr_list`. + * Visit a parse tree produced by `PostgreSqlParser.function_with_argtypes`. * @param ctx the parse tree * @return the visitor result */ - visitRelation_expr_list?: (ctx: Relation_expr_listContext) => Result; + visitFunction_with_argtypes?: (ctx: Function_with_argtypesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.publication_relation_expr_list`. + * Visit a parse tree produced by `PostgreSqlParser.func_arg`. * @param ctx the parse tree * @return the visitor result */ - visitPublication_relation_expr_list?: (ctx: Publication_relation_expr_listContext) => Result; + visitFunc_arg?: (ctx: Func_argContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.relation_expr_opt_alias`. + * Visit a parse tree produced by `PostgreSqlParser.arg_class`. * @param ctx the parse tree * @return the visitor result */ - visitRelation_expr_opt_alias?: (ctx: Relation_expr_opt_aliasContext) => Result; + visitArg_class?: (ctx: Arg_classContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.tablesample_clause`. + * Visit a parse tree produced by `PostgreSqlParser.func_type`. * @param ctx the parse tree * @return the visitor result */ - visitTablesample_clause?: (ctx: Tablesample_clauseContext) => Result; + visitFunc_type?: (ctx: Func_typeContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_repeatable_clause`. + * Visit a parse tree produced by `PostgreSqlParser.func_arg_with_default`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_repeatable_clause?: (ctx: Opt_repeatable_clauseContext) => Result; + visitFunc_arg_with_default?: (ctx: Func_arg_with_defaultContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_table`. + * Visit a parse tree produced by `PostgreSqlParser.aggr_args`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_table?: (ctx: Func_tableContext) => Result; + visitAggr_args?: (ctx: Aggr_argsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.rowsfrom_item`. + * Visit a parse tree produced by `PostgreSqlParser.aggregate_with_argtypes`. * @param ctx the parse tree * @return the visitor result */ - visitRowsfrom_item?: (ctx: Rowsfrom_itemContext) => Result; + visitAggregate_with_argtypes?: (ctx: Aggregate_with_argtypesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.rowsfrom_list`. + * Visit a parse tree produced by `PostgreSqlParser.common_func_opt_item`. * @param ctx the parse tree * @return the visitor result */ - visitRowsfrom_list?: (ctx: Rowsfrom_listContext) => Result; + visitCommon_func_opt_item?: (ctx: Common_func_opt_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_col_def_list`. + * Visit a parse tree produced by `PostgreSqlParser.createfunc_opt_item`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_col_def_list?: (ctx: Opt_col_def_listContext) => Result; + visitCreatefunc_opt_item?: (ctx: Createfunc_opt_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_ordinality`. + * Visit a parse tree produced by `PostgreSqlParser.opt_definition`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_ordinality?: (ctx: Opt_ordinalityContext) => Result; + visitOpt_definition?: (ctx: Opt_definitionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.where_clause`. + * Visit a parse tree produced by `PostgreSqlParser.table_func_column`. * @param ctx the parse tree * @return the visitor result */ - visitWhere_clause?: (ctx: Where_clauseContext) => Result; + visitTable_func_column?: (ctx: Table_func_columnContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.where_or_current_clause`. + * Visit a parse tree produced by `PostgreSqlParser.alterfunctionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitWhere_or_current_clause?: (ctx: Where_or_current_clauseContext) => Result; + visitAlterfunctionstmt?: (ctx: AlterfunctionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opttablefuncelementlist`. + * Visit a parse tree produced by `PostgreSqlParser.removefuncstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpttablefuncelementlist?: (ctx: OpttablefuncelementlistContext) => Result; + visitRemovefuncstmt?: (ctx: RemovefuncstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.tablefuncelementlist`. + * Visit a parse tree produced by `PostgreSqlParser.removeaggrstmt`. * @param ctx the parse tree * @return the visitor result */ - visitTablefuncelementlist?: (ctx: TablefuncelementlistContext) => Result; + visitRemoveaggrstmt?: (ctx: RemoveaggrstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.tablefuncelement`. + * Visit a parse tree produced by `PostgreSqlParser.removeoperstmt`. * @param ctx the parse tree * @return the visitor result */ - visitTablefuncelement?: (ctx: TablefuncelementContext) => Result; + visitRemoveoperstmt?: (ctx: RemoveoperstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xmltable`. + * Visit a parse tree produced by `PostgreSqlParser.oper_argtypes`. * @param ctx the parse tree * @return the visitor result */ - visitXmltable?: (ctx: XmltableContext) => Result; + visitOper_argtypes?: (ctx: Oper_argtypesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xmltable_column_list`. + * Visit a parse tree produced by `PostgreSqlParser.any_operator`. * @param ctx the parse tree * @return the visitor result */ - visitXmltable_column_list?: (ctx: Xmltable_column_listContext) => Result; + visitAny_operator?: (ctx: Any_operatorContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xmltable_column_el`. + * Visit a parse tree produced by `PostgreSqlParser.operator_with_argtypes`. * @param ctx the parse tree * @return the visitor result */ - visitXmltable_column_el?: (ctx: Xmltable_column_elContext) => Result; + visitOperator_with_argtypes?: (ctx: Operator_with_argtypesContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xmltable_column_option_list`. + * Visit a parse tree produced by `PostgreSqlParser.dostmt`. * @param ctx the parse tree * @return the visitor result */ - visitXmltable_column_option_list?: (ctx: Xmltable_column_option_listContext) => Result; + visitDostmt?: (ctx: DostmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xmltable_column_option_el`. + * Visit a parse tree produced by `PostgreSqlParser.createcaststmt`. * @param ctx the parse tree * @return the visitor result */ - visitXmltable_column_option_el?: (ctx: Xmltable_column_option_elContext) => Result; + visitCreatecaststmt?: (ctx: CreatecaststmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_namespace_list`. + * Visit a parse tree produced by `PostgreSqlParser.opt_if_exists`. * @param ctx the parse tree * @return the visitor result */ - visitXml_namespace_list?: (ctx: Xml_namespace_listContext) => Result; + visitOpt_if_exists?: (ctx: Opt_if_existsContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_namespace_el`. + * Visit a parse tree produced by `PostgreSqlParser.createtransformstmt`. * @param ctx the parse tree * @return the visitor result */ - visitXml_namespace_el?: (ctx: Xml_namespace_elContext) => Result; + visitCreatetransformstmt?: (ctx: CreatetransformstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.typename`. + * Visit a parse tree produced by `PostgreSqlParser.sql_with_function`. * @param ctx the parse tree * @return the visitor result */ - visitTypename?: (ctx: TypenameContext) => Result; + visitSql_with_function?: (ctx: Sql_with_functionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_array_bounds`. + * Visit a parse tree produced by `PostgreSqlParser.reindexstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_array_bounds?: (ctx: Opt_array_boundsContext) => Result; + visitReindexstmt?: (ctx: ReindexstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.simpletypename`. + * Visit a parse tree produced by `PostgreSqlParser.altertblspcstmt`. * @param ctx the parse tree * @return the visitor result */ - visitSimpletypename?: (ctx: SimpletypenameContext) => Result; + visitAltertblspcstmt?: (ctx: AltertblspcstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.consttypename`. + * Visit a parse tree produced by `PostgreSqlParser.renamestmt`. * @param ctx the parse tree * @return the visitor result */ - visitConsttypename?: (ctx: ConsttypenameContext) => Result; + visitRenamestmt?: (ctx: RenamestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.generictype`. + * Visit a parse tree produced by `PostgreSqlParser.alterobjectdependsstmt`. * @param ctx the parse tree * @return the visitor result */ - visitGenerictype?: (ctx: GenerictypeContext) => Result; + visitAlterobjectdependsstmt?: (ctx: AlterobjectdependsstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_type_modifiers`. + * Visit a parse tree produced by `PostgreSqlParser.alterobjectschemastmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_type_modifiers?: (ctx: Opt_type_modifiersContext) => Result; + visitAlterobjectschemastmt?: (ctx: AlterobjectschemastmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.numeric`. + * Visit a parse tree produced by `PostgreSqlParser.alteroperatorstmt`. * @param ctx the parse tree * @return the visitor result */ - visitNumeric?: (ctx: NumericContext) => Result; + visitAlteroperatorstmt?: (ctx: AlteroperatorstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_float`. + * Visit a parse tree produced by `PostgreSqlParser.operator_def_list`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_float?: (ctx: Opt_floatContext) => Result; + visitOperator_def_list?: (ctx: Operator_def_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.bit`. + * Visit a parse tree produced by `PostgreSqlParser.operator_def_elem`. * @param ctx the parse tree * @return the visitor result */ - visitBit?: (ctx: BitContext) => Result; + visitOperator_def_elem?: (ctx: Operator_def_elemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.constbit`. + * Visit a parse tree produced by `PostgreSqlParser.altertypestmt`. * @param ctx the parse tree * @return the visitor result */ - visitConstbit?: (ctx: ConstbitContext) => Result; + visitAltertypestmt?: (ctx: AltertypestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.bitwithlength`. + * Visit a parse tree produced by `PostgreSqlParser.alterownerstmt`. * @param ctx the parse tree * @return the visitor result */ - visitBitwithlength?: (ctx: BitwithlengthContext) => Result; + visitAlterownerstmt?: (ctx: AlterownerstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.bitwithoutlength`. + * Visit a parse tree produced by `PostgreSqlParser.createpublicationstmt`. * @param ctx the parse tree * @return the visitor result */ - visitBitwithoutlength?: (ctx: BitwithoutlengthContext) => Result; + visitCreatepublicationstmt?: (ctx: CreatepublicationstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.character`. + * Visit a parse tree produced by `PostgreSqlParser.alterpublicationstmt`. * @param ctx the parse tree * @return the visitor result */ - visitCharacter?: (ctx: CharacterContext) => Result; + visitAlterpublicationstmt?: (ctx: AlterpublicationstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.constcharacter`. + * Visit a parse tree produced by `PostgreSqlParser.createsubscriptionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitConstcharacter?: (ctx: ConstcharacterContext) => Result; + visitCreatesubscriptionstmt?: (ctx: CreatesubscriptionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.character_c`. + * Visit a parse tree produced by `PostgreSqlParser.altersubscriptionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitCharacter_c?: (ctx: Character_cContext) => Result; + visitAltersubscriptionstmt?: (ctx: AltersubscriptionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_varying`. + * Visit a parse tree produced by `PostgreSqlParser.rulestmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_varying?: (ctx: Opt_varyingContext) => Result; + visitRulestmt?: (ctx: RulestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.constdatetime`. + * Visit a parse tree produced by `PostgreSqlParser.ruleactionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitConstdatetime?: (ctx: ConstdatetimeContext) => Result; + visitRuleactionstmt?: (ctx: RuleactionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.constinterval`. + * Visit a parse tree produced by `PostgreSqlParser.notifystmt`. * @param ctx the parse tree * @return the visitor result */ - visitConstinterval?: (ctx: ConstintervalContext) => Result; + visitNotifystmt?: (ctx: NotifystmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_timezone`. + * Visit a parse tree produced by `PostgreSqlParser.notify_payload`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_timezone?: (ctx: Opt_timezoneContext) => Result; + visitNotify_payload?: (ctx: Notify_payloadContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_interval`. + * Visit a parse tree produced by `PostgreSqlParser.listenstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_interval?: (ctx: Opt_intervalContext) => Result; + visitListenstmt?: (ctx: ListenstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.interval_second`. + * Visit a parse tree produced by `PostgreSqlParser.unlistenstmt`. * @param ctx the parse tree * @return the visitor result */ - visitInterval_second?: (ctx: Interval_secondContext) => Result; + visitUnlistenstmt?: (ctx: UnlistenstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_escape`. + * Visit a parse tree produced by `PostgreSqlParser.transactionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_escape?: (ctx: Opt_escapeContext) => Result; + visitTransactionstmt?: (ctx: TransactionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr`. + * Visit a parse tree produced by `PostgreSqlParser.opt_transaction`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr?: (ctx: A_exprContext) => Result; + visitOpt_transaction?: (ctx: Opt_transactionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_qual`. + * Visit a parse tree produced by `PostgreSqlParser.transaction_mode_item`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_qual?: (ctx: A_expr_qualContext) => Result; + visitTransaction_mode_item?: (ctx: Transaction_mode_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_lessless`. + * Visit a parse tree produced by `PostgreSqlParser.transaction_mode_list`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_lessless?: (ctx: A_expr_lesslessContext) => Result; + visitTransaction_mode_list?: (ctx: Transaction_mode_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_or`. + * Visit a parse tree produced by the `createView` + * labeled alternative in `PostgreSqlParser.viewstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_or?: (ctx: A_expr_orContext) => Result; + visitCreateView?: (ctx: CreateViewContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_and`. + * Visit a parse tree produced by `PostgreSqlParser.loadstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_and?: (ctx: A_expr_andContext) => Result; + visitLoadstmt?: (ctx: LoadstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_in`. + * Visit a parse tree produced by the `createDatabase` + * labeled alternative in `PostgreSqlParser.createdbstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_in?: (ctx: A_expr_inContext) => Result; + visitCreateDatabase?: (ctx: CreateDatabaseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_unary_not`. + * Visit a parse tree produced by `PostgreSqlParser.createdb_opt_item`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_unary_not?: (ctx: A_expr_unary_notContext) => Result; + visitCreatedb_opt_item?: (ctx: Createdb_opt_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_isnull`. + * Visit a parse tree produced by `PostgreSqlParser.alterdatabasestmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_isnull?: (ctx: A_expr_isnullContext) => Result; + visitAlterdatabasestmt?: (ctx: AlterdatabasestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_is_not`. + * Visit a parse tree produced by `PostgreSqlParser.alterdatabasesetstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_is_not?: (ctx: A_expr_is_notContext) => Result; + visitAlterdatabasesetstmt?: (ctx: AlterdatabasesetstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_compare`. + * Visit a parse tree produced by `PostgreSqlParser.altercollationstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_compare?: (ctx: A_expr_compareContext) => Result; + visitAltercollationstmt?: (ctx: AltercollationstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_like`. + * Visit a parse tree produced by `PostgreSqlParser.altersystemstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_like?: (ctx: A_expr_likeContext) => Result; + visitAltersystemstmt?: (ctx: AltersystemstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_qual_op`. + * Visit a parse tree produced by `PostgreSqlParser.createdomainstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_qual_op?: (ctx: A_expr_qual_opContext) => Result; + visitCreatedomainstmt?: (ctx: CreatedomainstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_unary_qualop`. + * Visit a parse tree produced by `PostgreSqlParser.alterdomainstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_unary_qualop?: (ctx: A_expr_unary_qualopContext) => Result; + visitAlterdomainstmt?: (ctx: AlterdomainstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_add`. + * Visit a parse tree produced by `PostgreSqlParser.altertsdictionarystmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_add?: (ctx: A_expr_addContext) => Result; + visitAltertsdictionarystmt?: (ctx: AltertsdictionarystmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_mul`. + * Visit a parse tree produced by `PostgreSqlParser.altertsconfigurationstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_mul?: (ctx: A_expr_mulContext) => Result; + visitAltertsconfigurationstmt?: (ctx: AltertsconfigurationstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_caret`. + * Visit a parse tree produced by `PostgreSqlParser.createconversionstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_caret?: (ctx: A_expr_caretContext) => Result; + visitCreateconversionstmt?: (ctx: CreateconversionstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_unary_sign`. + * Visit a parse tree produced by `PostgreSqlParser.clusterstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_unary_sign?: (ctx: A_expr_unary_signContext) => Result; + visitClusterstmt?: (ctx: ClusterstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_at_time_zone`. + * Visit a parse tree produced by `PostgreSqlParser.vacuumstmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_at_time_zone?: (ctx: A_expr_at_time_zoneContext) => Result; + visitVacuumstmt?: (ctx: VacuumstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_collate`. + * Visit a parse tree produced by `PostgreSqlParser.analyzestmt`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_collate?: (ctx: A_expr_collateContext) => Result; + visitAnalyzestmt?: (ctx: AnalyzestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.a_expr_typecast`. + * Visit a parse tree produced by `PostgreSqlParser.analyze_keyword`. * @param ctx the parse tree * @return the visitor result */ - visitA_expr_typecast?: (ctx: A_expr_typecastContext) => Result; + visitAnalyze_keyword?: (ctx: Analyze_keywordContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.b_expr`. + * Visit a parse tree produced by `PostgreSqlParser.vac_analyze_option_elem`. * @param ctx the parse tree * @return the visitor result */ - visitB_expr?: (ctx: B_exprContext) => Result; + visitVac_analyze_option_elem?: (ctx: Vac_analyze_option_elemContext) => Result; /** - * Visit a parse tree produced by the `c_expr_exists` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Visit a parse tree produced by `PostgreSqlParser.analyze_option_elem`. * @param ctx the parse tree * @return the visitor result */ - visitC_expr_exists?: (ctx: C_expr_existsContext) => Result; + visitAnalyze_option_elem?: (ctx: Analyze_option_elemContext) => Result; /** - * Visit a parse tree produced by the `c_expr_expr` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Visit a parse tree produced by `PostgreSqlParser.opt_verbose`. * @param ctx the parse tree * @return the visitor result */ - visitC_expr_expr?: (ctx: C_expr_exprContext) => Result; + visitOpt_verbose?: (ctx: Opt_verboseContext) => Result; /** - * Visit a parse tree produced by the `c_expr_case` - * labeled alternative in `PostgreSqlParser.c_expr`. + * Visit a parse tree produced by `PostgreSqlParser.vacuum_relation`. * @param ctx the parse tree * @return the visitor result */ - visitC_expr_case?: (ctx: C_expr_caseContext) => Result; + visitVacuum_relation?: (ctx: Vacuum_relationContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.plsqlvariablename`. + * Visit a parse tree produced by `PostgreSqlParser.vacuum_relation_list`. * @param ctx the parse tree * @return the visitor result */ - visitPlsqlvariablename?: (ctx: PlsqlvariablenameContext) => Result; + visitVacuum_relation_list?: (ctx: Vacuum_relation_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_application`. + * Visit a parse tree produced by `PostgreSqlParser.explainstmt`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_application?: (ctx: Func_applicationContext) => Result; + visitExplainstmt?: (ctx: ExplainstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_expr`. + * Visit a parse tree produced by `PostgreSqlParser.explainablestmt`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_expr?: (ctx: Func_exprContext) => Result; + visitExplainablestmt?: (ctx: ExplainablestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_expr_windowless`. + * Visit a parse tree produced by `PostgreSqlParser.explain_option_list`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_expr_windowless?: (ctx: Func_expr_windowlessContext) => Result; + visitExplain_option_list?: (ctx: Explain_option_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_expr_common_subexpr`. + * Visit a parse tree produced by `PostgreSqlParser.preparestmt`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_expr_common_subexpr?: (ctx: Func_expr_common_subexprContext) => Result; + visitPreparestmt?: (ctx: PreparestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_root_version`. + * Visit a parse tree produced by `PostgreSqlParser.prep_type_clause`. * @param ctx the parse tree * @return the visitor result */ - visitXml_root_version?: (ctx: Xml_root_versionContext) => Result; + visitPrep_type_clause?: (ctx: Prep_type_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_xml_root_standalone`. + * Visit a parse tree produced by `PostgreSqlParser.preparablestmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_xml_root_standalone?: (ctx: Opt_xml_root_standaloneContext) => Result; + visitPreparablestmt?: (ctx: PreparablestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_attributes`. + * Visit a parse tree produced by `PostgreSqlParser.executestmt`. * @param ctx the parse tree * @return the visitor result */ - visitXml_attributes?: (ctx: Xml_attributesContext) => Result; + visitExecutestmt?: (ctx: ExecutestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_attribute_list`. + * Visit a parse tree produced by `PostgreSqlParser.execute_param_clause`. * @param ctx the parse tree * @return the visitor result */ - visitXml_attribute_list?: (ctx: Xml_attribute_listContext) => Result; + visitExecute_param_clause?: (ctx: Execute_param_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_attribute_el`. + * Visit a parse tree produced by `PostgreSqlParser.deallocatestmt`. * @param ctx the parse tree * @return the visitor result */ - visitXml_attribute_el?: (ctx: Xml_attribute_elContext) => Result; + visitDeallocatestmt?: (ctx: DeallocatestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.document_or_content`. + * Visit a parse tree produced by the `insertStatement` + * labeled alternative in `PostgreSqlParser.insertstmt`. * @param ctx the parse tree * @return the visitor result */ - visitDocument_or_content?: (ctx: Document_or_contentContext) => Result; + visitInsertStatement?: (ctx: InsertStatementContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_whitespace_option`. + * Visit a parse tree produced by `PostgreSqlParser.insert_rest`. * @param ctx the parse tree * @return the visitor result */ - visitXml_whitespace_option?: (ctx: Xml_whitespace_optionContext) => Result; + visitInsert_rest?: (ctx: Insert_restContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xmlexists_argument`. + * Visit a parse tree produced by `PostgreSqlParser.insert_column_list`. * @param ctx the parse tree * @return the visitor result */ - visitXmlexists_argument?: (ctx: Xmlexists_argumentContext) => Result; + visitInsert_column_list?: (ctx: Insert_column_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xml_passing_mech`. + * Visit a parse tree produced by `PostgreSqlParser.insert_column_item`. * @param ctx the parse tree * @return the visitor result */ - visitXml_passing_mech?: (ctx: Xml_passing_mechContext) => Result; + visitInsert_column_item?: (ctx: Insert_column_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.within_group_clause`. + * Visit a parse tree produced by `PostgreSqlParser.returning_clause`. * @param ctx the parse tree * @return the visitor result */ - visitWithin_group_clause?: (ctx: Within_group_clauseContext) => Result; + visitReturning_clause?: (ctx: Returning_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.filter_clause`. + * Visit a parse tree produced by `PostgreSqlParser.deletestmt`. * @param ctx the parse tree * @return the visitor result */ - visitFilter_clause?: (ctx: Filter_clauseContext) => Result; + visitDeletestmt?: (ctx: DeletestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.window_clause`. + * Visit a parse tree produced by `PostgreSqlParser.lockstmt`. * @param ctx the parse tree * @return the visitor result */ - visitWindow_clause?: (ctx: Window_clauseContext) => Result; + visitLockstmt?: (ctx: LockstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.window_definition_list`. + * Visit a parse tree produced by `PostgreSqlParser.updatestmt`. * @param ctx the parse tree * @return the visitor result */ - visitWindow_definition_list?: (ctx: Window_definition_listContext) => Result; + visitUpdatestmt?: (ctx: UpdatestmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.window_definition`. + * Visit a parse tree produced by `PostgreSqlParser.set_clause_list`. * @param ctx the parse tree * @return the visitor result */ - visitWindow_definition?: (ctx: Window_definitionContext) => Result; + visitSet_clause_list?: (ctx: Set_clause_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.over_clause`. + * Visit a parse tree produced by `PostgreSqlParser.set_clause`. * @param ctx the parse tree * @return the visitor result */ - visitOver_clause?: (ctx: Over_clauseContext) => Result; + visitSet_clause?: (ctx: Set_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.window_specification`. + * Visit a parse tree produced by `PostgreSqlParser.declarecursorstmt`. * @param ctx the parse tree * @return the visitor result */ - visitWindow_specification?: (ctx: Window_specificationContext) => Result; + visitDeclarecursorstmt?: (ctx: DeclarecursorstmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_existing_window_name`. + * Visit a parse tree produced by the `selectStatement` + * labeled alternative in `PostgreSqlParser.selectstmt`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_existing_window_name?: (ctx: Opt_existing_window_nameContext) => Result; + visitSelectStatement?: (ctx: SelectStatementContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_partition_clause`. + * Visit a parse tree produced by `PostgreSqlParser.select_with_parens`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_partition_clause?: (ctx: Opt_partition_clauseContext) => Result; + visitSelect_with_parens?: (ctx: Select_with_parensContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_frame_clause`. + * Visit a parse tree produced by `PostgreSqlParser.select_no_parens`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_frame_clause?: (ctx: Opt_frame_clauseContext) => Result; + visitSelect_no_parens?: (ctx: Select_no_parensContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.frame_extent`. + * Visit a parse tree produced by `PostgreSqlParser.select_clause`. * @param ctx the parse tree * @return the visitor result */ - visitFrame_extent?: (ctx: Frame_extentContext) => Result; + visitSelect_clause?: (ctx: Select_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.frame_bound`. + * Visit a parse tree produced by `PostgreSqlParser.simple_select`. * @param ctx the parse tree * @return the visitor result */ - visitFrame_bound?: (ctx: Frame_boundContext) => Result; + visitSimple_select?: (ctx: Simple_selectContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_window_exclusion_clause`. + * Visit a parse tree produced by `PostgreSqlParser.set_operator_with_all_or_distinct`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_window_exclusion_clause?: (ctx: Opt_window_exclusion_clauseContext) => Result; + visitSet_operator_with_all_or_distinct?: (ctx: Set_operator_with_all_or_distinctContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.row`. + * Visit a parse tree produced by `PostgreSqlParser.with_clause`. * @param ctx the parse tree * @return the visitor result */ - visitRow?: (ctx: RowContext) => Result; + visitWith_clause?: (ctx: With_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.explicit_row`. + * Visit a parse tree produced by `PostgreSqlParser.common_table_expr`. * @param ctx the parse tree * @return the visitor result */ - visitExplicit_row?: (ctx: Explicit_rowContext) => Result; + visitCommon_table_expr?: (ctx: Common_table_exprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.implicit_row`. + * Visit a parse tree produced by `PostgreSqlParser.search_cluase`. * @param ctx the parse tree * @return the visitor result */ - visitImplicit_row?: (ctx: Implicit_rowContext) => Result; + visitSearch_cluase?: (ctx: Search_cluaseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.sub_type`. + * Visit a parse tree produced by `PostgreSqlParser.cycle_cluase`. * @param ctx the parse tree * @return the visitor result */ - visitSub_type?: (ctx: Sub_typeContext) => Result; + visitCycle_cluase?: (ctx: Cycle_cluaseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.all_op`. + * Visit a parse tree produced by `PostgreSqlParser.into_clause`. * @param ctx the parse tree * @return the visitor result */ - visitAll_op?: (ctx: All_opContext) => Result; + visitInto_clause?: (ctx: Into_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.mathop`. + * Visit a parse tree produced by `PostgreSqlParser.opttempTableName`. * @param ctx the parse tree * @return the visitor result */ - visitMathop?: (ctx: MathopContext) => Result; + visitOpttempTableName?: (ctx: OpttempTableNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.qual_op`. + * Visit a parse tree produced by `PostgreSqlParser.distinct_clause`. * @param ctx the parse tree * @return the visitor result */ - visitQual_op?: (ctx: Qual_opContext) => Result; + visitDistinct_clause?: (ctx: Distinct_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.qual_all_op`. + * Visit a parse tree produced by `PostgreSqlParser.sort_clause`. * @param ctx the parse tree * @return the visitor result */ - visitQual_all_op?: (ctx: Qual_all_opContext) => Result; + visitSort_clause?: (ctx: Sort_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.subquery_Op`. + * Visit a parse tree produced by `PostgreSqlParser.sortby`. * @param ctx the parse tree * @return the visitor result */ - visitSubquery_Op?: (ctx: Subquery_OpContext) => Result; + visitSortby?: (ctx: SortbyContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.expr_list`. + * Visit a parse tree produced by `PostgreSqlParser.select_limit`. * @param ctx the parse tree * @return the visitor result */ - visitExpr_list?: (ctx: Expr_listContext) => Result; + visitSelect_limit?: (ctx: Select_limitContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.column_expr_list_noparen`. + * Visit a parse tree produced by `PostgreSqlParser.limit_clause`. * @param ctx the parse tree * @return the visitor result */ - visitColumn_expr_list_noparen?: (ctx: Column_expr_list_noparenContext) => Result; + visitLimit_clause?: (ctx: Limit_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.column_expr_list`. + * Visit a parse tree produced by `PostgreSqlParser.fetch_clause`. * @param ctx the parse tree * @return the visitor result */ - visitColumn_expr_list?: (ctx: Column_expr_listContext) => Result; + visitFetch_clause?: (ctx: Fetch_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.column_expr`. + * Visit a parse tree produced by `PostgreSqlParser.offset_clause`. * @param ctx the parse tree * @return the visitor result */ - visitColumn_expr?: (ctx: Column_exprContext) => Result; + visitOffset_clause?: (ctx: Offset_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.column_expr_noparen`. + * Visit a parse tree produced by `PostgreSqlParser.select_fetch_first_value`. * @param ctx the parse tree * @return the visitor result */ - visitColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => Result; + visitSelect_fetch_first_value?: (ctx: Select_fetch_first_valueContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_arg_list`. + * Visit a parse tree produced by `PostgreSqlParser.group_clause`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_arg_list?: (ctx: Func_arg_listContext) => Result; + visitGroup_clause?: (ctx: Group_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.func_arg_expr`. + * Visit a parse tree produced by `PostgreSqlParser.group_by_list`. * @param ctx the parse tree * @return the visitor result */ - visitFunc_arg_expr?: (ctx: Func_arg_exprContext) => Result; + visitGroup_by_list?: (ctx: Group_by_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.type_list`. + * Visit a parse tree produced by `PostgreSqlParser.group_by_item`. * @param ctx the parse tree * @return the visitor result */ - visitType_list?: (ctx: Type_listContext) => Result; + visitGroup_by_item?: (ctx: Group_by_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.array_expr`. + * Visit a parse tree produced by `PostgreSqlParser.for_locking_clause`. * @param ctx the parse tree * @return the visitor result */ - visitArray_expr?: (ctx: Array_exprContext) => Result; + visitFor_locking_clause?: (ctx: For_locking_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.array_expr_list`. + * Visit a parse tree produced by `PostgreSqlParser.values_clause`. * @param ctx the parse tree * @return the visitor result */ - visitArray_expr_list?: (ctx: Array_expr_listContext) => Result; + visitValues_clause?: (ctx: Values_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.extract_list`. + * Visit a parse tree produced by `PostgreSqlParser.from_clause`. * @param ctx the parse tree * @return the visitor result */ - visitExtract_list?: (ctx: Extract_listContext) => Result; + visitFrom_clause?: (ctx: From_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.extract_arg`. + * Visit a parse tree produced by `PostgreSqlParser.from_list`. * @param ctx the parse tree * @return the visitor result */ - visitExtract_arg?: (ctx: Extract_argContext) => Result; + visitFrom_list?: (ctx: From_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.unicode_normal_form`. + * Visit a parse tree produced by `PostgreSqlParser.table_ref`. * @param ctx the parse tree * @return the visitor result */ - visitUnicode_normal_form?: (ctx: Unicode_normal_formContext) => Result; + visitTable_ref?: (ctx: Table_refContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.overlay_list`. + * Visit a parse tree produced by `PostgreSqlParser.alias_clause`. * @param ctx the parse tree * @return the visitor result */ - visitOverlay_list?: (ctx: Overlay_listContext) => Result; + visitAlias_clause?: (ctx: Alias_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.position_list`. + * Visit a parse tree produced by `PostgreSqlParser.func_alias_clause`. * @param ctx the parse tree * @return the visitor result */ - visitPosition_list?: (ctx: Position_listContext) => Result; + visitFunc_alias_clause?: (ctx: Func_alias_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.substr_list`. + * Visit a parse tree produced by `PostgreSqlParser.join_type`. * @param ctx the parse tree * @return the visitor result */ - visitSubstr_list?: (ctx: Substr_listContext) => Result; + visitJoin_type?: (ctx: Join_typeContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.trim_list`. + * Visit a parse tree produced by `PostgreSqlParser.join_qual`. * @param ctx the parse tree * @return the visitor result */ - visitTrim_list?: (ctx: Trim_listContext) => Result; + visitJoin_qual?: (ctx: Join_qualContext) => Result; /** - * Visit a parse tree produced by the `in_expr_select` - * labeled alternative in `PostgreSqlParser.in_expr`. + * Visit a parse tree produced by `PostgreSqlParser.relation_expr`. * @param ctx the parse tree * @return the visitor result */ - visitIn_expr_select?: (ctx: In_expr_selectContext) => Result; + visitRelation_expr?: (ctx: Relation_exprContext) => Result; /** - * Visit a parse tree produced by the `in_expr_list` - * labeled alternative in `PostgreSqlParser.in_expr`. + * Visit a parse tree produced by `PostgreSqlParser.publication_relation_expr`. * @param ctx the parse tree * @return the visitor result */ - visitIn_expr_list?: (ctx: In_expr_listContext) => Result; + visitPublication_relation_expr?: (ctx: Publication_relation_exprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.case_expr`. + * Visit a parse tree produced by `PostgreSqlParser.relation_expr_list`. * @param ctx the parse tree * @return the visitor result */ - visitCase_expr?: (ctx: Case_exprContext) => Result; + visitRelation_expr_list?: (ctx: Relation_expr_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.when_clause_list`. + * Visit a parse tree produced by `PostgreSqlParser.relation_expr_opt_alias`. * @param ctx the parse tree * @return the visitor result */ - visitWhen_clause_list?: (ctx: When_clause_listContext) => Result; + visitRelation_expr_opt_alias?: (ctx: Relation_expr_opt_aliasContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.when_clause`. + * Visit a parse tree produced by `PostgreSqlParser.tablesample_clause`. * @param ctx the parse tree * @return the visitor result */ - visitWhen_clause?: (ctx: When_clauseContext) => Result; + visitTablesample_clause?: (ctx: Tablesample_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.case_default`. + * Visit a parse tree produced by `PostgreSqlParser.func_table`. * @param ctx the parse tree * @return the visitor result */ - visitCase_default?: (ctx: Case_defaultContext) => Result; + visitFunc_table?: (ctx: Func_tableContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.case_arg`. + * Visit a parse tree produced by `PostgreSqlParser.rowsfrom_item`. * @param ctx the parse tree * @return the visitor result */ - visitCase_arg?: (ctx: Case_argContext) => Result; + visitRowsfrom_item?: (ctx: Rowsfrom_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.columnref`. + * Visit a parse tree produced by `PostgreSqlParser.where_clause`. * @param ctx the parse tree * @return the visitor result */ - visitColumnref?: (ctx: ColumnrefContext) => Result; + visitWhere_clause?: (ctx: Where_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.indirection_el`. + * Visit a parse tree produced by `PostgreSqlParser.where_or_current_clause`. * @param ctx the parse tree * @return the visitor result */ - visitIndirection_el?: (ctx: Indirection_elContext) => Result; + visitWhere_or_current_clause?: (ctx: Where_or_current_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_slice_bound`. + * Visit a parse tree produced by `PostgreSqlParser.tablefuncelementlist`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_slice_bound?: (ctx: Opt_slice_boundContext) => Result; + visitTablefuncelementlist?: (ctx: TablefuncelementlistContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.indirection`. + * Visit a parse tree produced by `PostgreSqlParser.tablefuncelement`. * @param ctx the parse tree * @return the visitor result */ - visitIndirection?: (ctx: IndirectionContext) => Result; + visitTablefuncelement?: (ctx: TablefuncelementContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_indirection`. + * Visit a parse tree produced by `PostgreSqlParser.xmltable`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_indirection?: (ctx: Opt_indirectionContext) => Result; + visitXmltable?: (ctx: XmltableContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_target_list`. + * Visit a parse tree produced by `PostgreSqlParser.xmltable_column_el`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_target_list?: (ctx: Opt_target_listContext) => Result; + visitXmltable_column_el?: (ctx: Xmltable_column_elContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.target_list`. + * Visit a parse tree produced by `PostgreSqlParser.xml_namespace_el`. * @param ctx the parse tree * @return the visitor result */ - visitTarget_list?: (ctx: Target_listContext) => Result; + visitXml_namespace_el?: (ctx: Xml_namespace_elContext) => Result; /** - * Visit a parse tree produced by the `target_label` - * labeled alternative in `PostgreSqlParser.target_el`. + * Visit a parse tree produced by `PostgreSqlParser.typename`. * @param ctx the parse tree * @return the visitor result */ - visitTarget_label?: (ctx: Target_labelContext) => Result; + visitTypename?: (ctx: TypenameContext) => Result; /** - * Visit a parse tree produced by the `target_star` - * labeled alternative in `PostgreSqlParser.target_el`. + * Visit a parse tree produced by `PostgreSqlParser.simpletypename`. * @param ctx the parse tree * @return the visitor result */ - visitTarget_star?: (ctx: Target_starContext) => Result; + visitSimpletypename?: (ctx: SimpletypenameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.qualified_name_list`. + * Visit a parse tree produced by `PostgreSqlParser.consttypename`. * @param ctx the parse tree * @return the visitor result */ - visitQualified_name_list?: (ctx: Qualified_name_listContext) => Result; + visitConsttypename?: (ctx: ConsttypenameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.table_name_list`. + * Visit a parse tree produced by `PostgreSqlParser.numeric`. * @param ctx the parse tree * @return the visitor result */ - visitTable_name_list?: (ctx: Table_name_listContext) => Result; + visitNumeric?: (ctx: NumericContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.schema_name_list`. + * Visit a parse tree produced by `PostgreSqlParser.opt_float`. * @param ctx the parse tree * @return the visitor result */ - visitSchema_name_list?: (ctx: Schema_name_listContext) => Result; + visitOpt_float?: (ctx: Opt_floatContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.database_nameList`. + * Visit a parse tree produced by `PostgreSqlParser.bit`. * @param ctx the parse tree * @return the visitor result */ - visitDatabase_nameList?: (ctx: Database_nameListContext) => Result; + visitBit?: (ctx: BitContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.procedure_name_list`. + * Visit a parse tree produced by `PostgreSqlParser.character`. * @param ctx the parse tree * @return the visitor result */ - visitProcedure_name_list?: (ctx: Procedure_name_listContext) => Result; + visitCharacter?: (ctx: CharacterContext) => Result; /** - * Visit a parse tree produced by the `tablespaceNameCreate` - * labeled alternative in `PostgreSqlParser.tablespace_name_create`. + * Visit a parse tree produced by `PostgreSqlParser.constdatetime`. * @param ctx the parse tree * @return the visitor result */ - visitTablespaceNameCreate?: (ctx: TablespaceNameCreateContext) => Result; + visitConstdatetime?: (ctx: ConstdatetimeContext) => Result; /** - * Visit a parse tree produced by the `tablespaceName` - * labeled alternative in `PostgreSqlParser.tablespace_name`. + * Visit a parse tree produced by `PostgreSqlParser.opt_interval`. * @param ctx the parse tree * @return the visitor result */ - visitTablespaceName?: (ctx: TablespaceNameContext) => Result; + visitOpt_interval?: (ctx: Opt_intervalContext) => Result; /** - * Visit a parse tree produced by the `tableNameCreate` - * labeled alternative in `PostgreSqlParser.table_name_create`. + * Visit a parse tree produced by `PostgreSqlParser.interval_second`. * @param ctx the parse tree * @return the visitor result */ - visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; + visitInterval_second?: (ctx: Interval_secondContext) => Result; /** - * Visit a parse tree produced by the `tableName` - * labeled alternative in `PostgreSqlParser.table_name`. + * Visit a parse tree produced by `PostgreSqlParser.comparisonOperator`. * @param ctx the parse tree * @return the visitor result */ - visitTableName?: (ctx: TableNameContext) => Result; + visitComparisonOperator?: (ctx: ComparisonOperatorContext) => Result; /** - * Visit a parse tree produced by the `viewNameCreate` - * labeled alternative in `PostgreSqlParser.view_name_create`. + * Visit a parse tree produced by `PostgreSqlParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; + visitExpression?: (ctx: ExpressionContext) => Result; /** - * Visit a parse tree produced by the `viewName` - * labeled alternative in `PostgreSqlParser.view_name`. + * Visit a parse tree produced by the `logicalNot` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree * @return the visitor result */ - visitViewName?: (ctx: ViewNameContext) => Result; + visitLogicalNot?: (ctx: LogicalNotContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.qualified_name`. + * Visit a parse tree produced by the `predicated` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree * @return the visitor result */ - visitQualified_name?: (ctx: Qualified_nameContext) => Result; + visitPredicated?: (ctx: PredicatedContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.tablespace_name_list`. + * Visit a parse tree produced by the `logicalBinary` + * labeled alternative in `PostgreSqlParser.booleanExpression`. * @param ctx the parse tree * @return the visitor result */ - visitTablespace_name_list?: (ctx: Tablespace_name_listContext) => Result; + visitLogicalBinary?: (ctx: LogicalBinaryContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.name_list`. + * Visit a parse tree produced by the `comparison` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitName_list?: (ctx: Name_listContext) => Result; + visitComparison?: (ctx: ComparisonContext) => Result; /** - * Visit a parse tree produced by the `databaseNameCreate` - * labeled alternative in `PostgreSqlParser.database_name_create`. + * Visit a parse tree produced by the `quantifiedComparison` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitDatabaseNameCreate?: (ctx: DatabaseNameCreateContext) => Result; + visitQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => Result; /** - * Visit a parse tree produced by the `databaseName` - * labeled alternative in `PostgreSqlParser.database_name`. + * Visit a parse tree produced by the `between` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitDatabaseName?: (ctx: DatabaseNameContext) => Result; + visitBetween?: (ctx: BetweenContext) => Result; /** - * Visit a parse tree produced by the `schemaName` - * labeled alternative in `PostgreSqlParser.schema_name`. + * Visit a parse tree produced by the `inList` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaName?: (ctx: SchemaNameContext) => Result; + visitInList?: (ctx: InListContext) => Result; /** - * Visit a parse tree produced by the `routineNameCreate` - * labeled alternative in `PostgreSqlParser.routine_name_create`. + * Visit a parse tree produced by the `inSubquery` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitRoutineNameCreate?: (ctx: RoutineNameCreateContext) => Result; + visitInSubquery?: (ctx: InSubqueryContext) => Result; /** - * Visit a parse tree produced by the `routineName` - * labeled alternative in `PostgreSqlParser.routine_name`. + * Visit a parse tree produced by the `like` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitRoutineName?: (ctx: RoutineNameContext) => Result; + visitLike?: (ctx: LikeContext) => Result; /** - * Visit a parse tree produced by the `procedureName` - * labeled alternative in `PostgreSqlParser.procedure_name`. + * Visit a parse tree produced by the `nullPredicate` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitProcedureName?: (ctx: ProcedureNameContext) => Result; + visitNullPredicate?: (ctx: NullPredicateContext) => Result; /** - * Visit a parse tree produced by the `procedureNameCreate` - * labeled alternative in `PostgreSqlParser.procedure_name_create`. + * Visit a parse tree produced by the `distinctFrom` + * labeled alternative in `PostgreSqlParser.predicate`. * @param ctx the parse tree * @return the visitor result */ - visitProcedureNameCreate?: (ctx: ProcedureNameCreateContext) => Result; + visitDistinctFrom?: (ctx: DistinctFromContext) => Result; /** - * Visit a parse tree produced by the `columnName` - * labeled alternative in `PostgreSqlParser.column_name`. + * Visit a parse tree produced by the `valueExpressionDefault` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree * @return the visitor result */ - visitColumnName?: (ctx: ColumnNameContext) => Result; + visitValueExpressionDefault?: (ctx: ValueExpressionDefaultContext) => Result; /** - * Visit a parse tree produced by the `columnNameMatch` - * labeled alternative in `PostgreSqlParser.column_name`. + * Visit a parse tree produced by the `concatenation` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree * @return the visitor result */ - visitColumnNameMatch?: (ctx: ColumnNameMatchContext) => Result; + visitConcatenation?: (ctx: ConcatenationContext) => Result; /** - * Visit a parse tree produced by the `columnNameCreate` - * labeled alternative in `PostgreSqlParser.column_name_create`. + * Visit a parse tree produced by the `arithmeticBinary` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree * @return the visitor result */ - visitColumnNameCreate?: (ctx: ColumnNameCreateContext) => Result; + visitArithmeticBinary?: (ctx: ArithmeticBinaryContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.name`. + * Visit a parse tree produced by the `arithmeticUnary` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree * @return the visitor result */ - visitName?: (ctx: NameContext) => Result; + visitArithmeticUnary?: (ctx: ArithmeticUnaryContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.attr_name`. + * Visit a parse tree produced by the `atTimeZone` + * labeled alternative in `PostgreSqlParser.valueExpression`. * @param ctx the parse tree * @return the visitor result */ - visitAttr_name?: (ctx: Attr_nameContext) => Result; + visitAtTimeZone?: (ctx: AtTimeZoneContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.file_name`. + * Visit a parse tree produced by `PostgreSqlParser.primaryExpression`. * @param ctx the parse tree * @return the visitor result */ - visitFile_name?: (ctx: File_nameContext) => Result; + visitPrimaryExpression?: (ctx: PrimaryExpressionContext) => Result; /** - * Visit a parse tree produced by the `functionNameCreate` - * labeled alternative in `PostgreSqlParser.function_name_create`. + * Visit a parse tree produced by `PostgreSqlParser.func_application`. * @param ctx the parse tree * @return the visitor result */ - visitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => Result; + visitFunc_application?: (ctx: Func_applicationContext) => Result; /** - * Visit a parse tree produced by the `functionName` - * labeled alternative in `PostgreSqlParser.function_name`. + * Visit a parse tree produced by `PostgreSqlParser.func_expr`. * @param ctx the parse tree * @return the visitor result */ - visitFunctionName?: (ctx: FunctionNameContext) => Result; + visitFunc_expr?: (ctx: Func_exprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.usual_name`. + * Visit a parse tree produced by `PostgreSqlParser.func_expr_windowless`. * @param ctx the parse tree * @return the visitor result */ - visitUsual_name?: (ctx: Usual_nameContext) => Result; + visitFunc_expr_windowless?: (ctx: Func_expr_windowlessContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.aexprconst`. + * Visit a parse tree produced by `PostgreSqlParser.func_expr_common_subexpr`. * @param ctx the parse tree * @return the visitor result */ - visitAexprconst?: (ctx: AexprconstContext) => Result; + visitFunc_expr_common_subexpr?: (ctx: Func_expr_common_subexprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.xconst`. + * Visit a parse tree produced by `PostgreSqlParser.xml_attribute_list`. * @param ctx the parse tree * @return the visitor result */ - visitXconst?: (ctx: XconstContext) => Result; + visitXml_attribute_list?: (ctx: Xml_attribute_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.bconst`. + * Visit a parse tree produced by `PostgreSqlParser.xml_attribute_el`. * @param ctx the parse tree * @return the visitor result */ - visitBconst?: (ctx: BconstContext) => Result; + visitXml_attribute_el?: (ctx: Xml_attribute_elContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.fconst`. + * Visit a parse tree produced by `PostgreSqlParser.document_or_content`. * @param ctx the parse tree * @return the visitor result */ - visitFconst?: (ctx: FconstContext) => Result; + visitDocument_or_content?: (ctx: Document_or_contentContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.iconst`. + * Visit a parse tree produced by `PostgreSqlParser.xmlexists_argument`. * @param ctx the parse tree * @return the visitor result */ - visitIconst?: (ctx: IconstContext) => Result; + visitXmlexists_argument?: (ctx: Xmlexists_argumentContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.sconst`. + * Visit a parse tree produced by `PostgreSqlParser.xml_passing_mech`. * @param ctx the parse tree * @return the visitor result */ - visitSconst?: (ctx: SconstContext) => Result; + visitXml_passing_mech?: (ctx: Xml_passing_mechContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.anysconst`. + * Visit a parse tree produced by `PostgreSqlParser.window_clause`. * @param ctx the parse tree * @return the visitor result */ - visitAnysconst?: (ctx: AnysconstContext) => Result; + visitWindow_clause?: (ctx: Window_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_uescape`. + * Visit a parse tree produced by `PostgreSqlParser.window_definition`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_uescape?: (ctx: Opt_uescapeContext) => Result; + visitWindow_definition?: (ctx: Window_definitionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.signediconst`. + * Visit a parse tree produced by `PostgreSqlParser.over_clause`. * @param ctx the parse tree * @return the visitor result */ - visitSignediconst?: (ctx: SignediconstContext) => Result; + visitOver_clause?: (ctx: Over_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.groupname`. + * Visit a parse tree produced by `PostgreSqlParser.window_specification`. * @param ctx the parse tree * @return the visitor result */ - visitGroupname?: (ctx: GroupnameContext) => Result; + visitWindow_specification?: (ctx: Window_specificationContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.roleid`. + * Visit a parse tree produced by `PostgreSqlParser.opt_frame_clause`. * @param ctx the parse tree * @return the visitor result */ - visitRoleid?: (ctx: RoleidContext) => Result; + visitOpt_frame_clause?: (ctx: Opt_frame_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.rolespec`. + * Visit a parse tree produced by `PostgreSqlParser.frame_bound`. * @param ctx the parse tree * @return the visitor result */ - visitRolespec?: (ctx: RolespecContext) => Result; + visitFrame_bound?: (ctx: Frame_boundContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.role_list`. + * Visit a parse tree produced by `PostgreSqlParser.row`. * @param ctx the parse tree * @return the visitor result */ - visitRole_list?: (ctx: Role_listContext) => Result; + visitRow?: (ctx: RowContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.colid`. + * Visit a parse tree produced by `PostgreSqlParser.explicit_row`. * @param ctx the parse tree * @return the visitor result */ - visitColid?: (ctx: ColidContext) => Result; + visitExplicit_row?: (ctx: Explicit_rowContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.index_method_choices`. + * Visit a parse tree produced by `PostgreSqlParser.sub_type`. * @param ctx the parse tree * @return the visitor result */ - visitIndex_method_choices?: (ctx: Index_method_choicesContext) => Result; + visitSub_type?: (ctx: Sub_typeContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.exclude_element`. + * Visit a parse tree produced by `PostgreSqlParser.all_op`. * @param ctx the parse tree * @return the visitor result */ - visitExclude_element?: (ctx: Exclude_elementContext) => Result; + visitAll_op?: (ctx: All_opContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.index_paramenters`. + * Visit a parse tree produced by `PostgreSqlParser.mathop`. * @param ctx the parse tree * @return the visitor result */ - visitIndex_paramenters?: (ctx: Index_paramentersContext) => Result; + visitMathop?: (ctx: MathopContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.type_function_name`. + * Visit a parse tree produced by `PostgreSqlParser.qual_op`. * @param ctx the parse tree * @return the visitor result */ - visitType_function_name?: (ctx: Type_function_nameContext) => Result; + visitQual_op?: (ctx: Qual_opContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.type_usual_name`. + * Visit a parse tree produced by `PostgreSqlParser.qual_all_op`. * @param ctx the parse tree * @return the visitor result */ - visitType_usual_name?: (ctx: Type_usual_nameContext) => Result; + visitQual_all_op?: (ctx: Qual_all_opContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.nonreservedword_column`. + * Visit a parse tree produced by `PostgreSqlParser.subquery_Op`. * @param ctx the parse tree * @return the visitor result */ - visitNonreservedword_column?: (ctx: Nonreservedword_columnContext) => Result; + visitSubquery_Op?: (ctx: Subquery_OpContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.nonreservedword`. + * Visit a parse tree produced by `PostgreSqlParser.expr_list`. * @param ctx the parse tree * @return the visitor result */ - visitNonreservedword?: (ctx: NonreservedwordContext) => Result; + visitExpr_list?: (ctx: Expr_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.collabel`. + * Visit a parse tree produced by `PostgreSqlParser.column_expr`. * @param ctx the parse tree * @return the visitor result */ - visitCollabel?: (ctx: CollabelContext) => Result; + visitColumn_expr?: (ctx: Column_exprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.identifier`. + * Visit a parse tree produced by `PostgreSqlParser.column_expr_noparen`. * @param ctx the parse tree * @return the visitor result */ - visitIdentifier?: (ctx: IdentifierContext) => Result; + visitColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.plsqlidentifier`. + * Visit a parse tree produced by `PostgreSqlParser.func_arg_list`. * @param ctx the parse tree * @return the visitor result */ - visitPlsqlidentifier?: (ctx: PlsqlidentifierContext) => Result; + visitFunc_arg_list?: (ctx: Func_arg_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.unreserved_keyword`. + * Visit a parse tree produced by `PostgreSqlParser.func_arg_expr`. * @param ctx the parse tree * @return the visitor result */ - visitUnreserved_keyword?: (ctx: Unreserved_keywordContext) => Result; + visitFunc_arg_expr?: (ctx: Func_arg_exprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.col_name_keyword`. + * Visit a parse tree produced by `PostgreSqlParser.array_expr`. * @param ctx the parse tree * @return the visitor result */ - visitCol_name_keyword?: (ctx: Col_name_keywordContext) => Result; + visitArray_expr?: (ctx: Array_exprContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.type_func_name_keyword`. + * Visit a parse tree produced by `PostgreSqlParser.extract_arg`. * @param ctx the parse tree * @return the visitor result */ - visitType_func_name_keyword?: (ctx: Type_func_name_keywordContext) => Result; + visitExtract_arg?: (ctx: Extract_argContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.reserved_keyword`. + * Visit a parse tree produced by `PostgreSqlParser.unicode_normal_form`. * @param ctx the parse tree * @return the visitor result */ - visitReserved_keyword?: (ctx: Reserved_keywordContext) => Result; + visitUnicode_normal_form?: (ctx: Unicode_normal_formContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.pl_function`. + * Visit a parse tree produced by `PostgreSqlParser.substr_list`. * @param ctx the parse tree * @return the visitor result */ - visitPl_function?: (ctx: Pl_functionContext) => Result; + visitSubstr_list?: (ctx: Substr_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.comp_options`. + * Visit a parse tree produced by `PostgreSqlParser.when_clause`. * @param ctx the parse tree * @return the visitor result */ - visitComp_options?: (ctx: Comp_optionsContext) => Result; + visitWhen_clause?: (ctx: When_clauseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.comp_option`. + * Visit a parse tree produced by `PostgreSqlParser.indirection_el`. * @param ctx the parse tree * @return the visitor result */ - visitComp_option?: (ctx: Comp_optionContext) => Result; + visitIndirection_el?: (ctx: Indirection_elContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.sharp`. + * Visit a parse tree produced by `PostgreSqlParser.indirection`. * @param ctx the parse tree * @return the visitor result */ - visitSharp?: (ctx: SharpContext) => Result; + visitIndirection?: (ctx: IndirectionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.option_value`. + * Visit a parse tree produced by `PostgreSqlParser.opt_indirection`. * @param ctx the parse tree * @return the visitor result */ - visitOption_value?: (ctx: Option_valueContext) => Result; + visitOpt_indirection?: (ctx: Opt_indirectionContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_semi`. + * Visit a parse tree produced by `PostgreSqlParser.target_list`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_semi?: (ctx: Opt_semiContext) => Result; + visitTarget_list?: (ctx: Target_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.pl_block`. + * Visit a parse tree produced by the `target_label` + * labeled alternative in `PostgreSqlParser.target_el`. * @param ctx the parse tree * @return the visitor result */ - visitPl_block?: (ctx: Pl_blockContext) => Result; + visitTarget_label?: (ctx: Target_labelContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_sect`. + * Visit a parse tree produced by the `target_star` + * labeled alternative in `PostgreSqlParser.target_el`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_sect?: (ctx: Decl_sectContext) => Result; + visitTarget_star?: (ctx: Target_starContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_start`. + * Visit a parse tree produced by `PostgreSqlParser.qualified_name_list`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_start?: (ctx: Decl_startContext) => Result; + visitQualified_name_list?: (ctx: Qualified_name_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_stmts`. + * Visit a parse tree produced by `PostgreSqlParser.table_name_list`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_stmts?: (ctx: Decl_stmtsContext) => Result; + visitTable_name_list?: (ctx: Table_name_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.label_decl`. + * Visit a parse tree produced by `PostgreSqlParser.schema_name_list`. * @param ctx the parse tree * @return the visitor result */ - visitLabel_decl?: (ctx: Label_declContext) => Result; + visitSchema_name_list?: (ctx: Schema_name_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_stmt`. + * Visit a parse tree produced by `PostgreSqlParser.database_nameList`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_stmt?: (ctx: Decl_stmtContext) => Result; + visitDatabase_nameList?: (ctx: Database_nameListContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_statement`. + * Visit a parse tree produced by the `tablespaceNameCreate` + * labeled alternative in `PostgreSqlParser.tablespace_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_statement?: (ctx: Decl_statementContext) => Result; + visitTablespaceNameCreate?: (ctx: TablespaceNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_scrollable`. + * Visit a parse tree produced by the `tablespaceName` + * labeled alternative in `PostgreSqlParser.tablespace_name`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_scrollable?: (ctx: Opt_scrollableContext) => Result; + visitTablespaceName?: (ctx: TablespaceNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_cursor_query`. + * Visit a parse tree produced by the `tableNameCreate` + * labeled alternative in `PostgreSqlParser.table_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_cursor_query?: (ctx: Decl_cursor_queryContext) => Result; + visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_cursor_args`. + * Visit a parse tree produced by the `tableName` + * labeled alternative in `PostgreSqlParser.table_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_cursor_args?: (ctx: Decl_cursor_argsContext) => Result; + visitTableName?: (ctx: TableNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_cursor_arglist`. + * Visit a parse tree produced by the `viewNameCreate` + * labeled alternative in `PostgreSqlParser.view_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_cursor_arglist?: (ctx: Decl_cursor_arglistContext) => Result; + visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_cursor_arg`. + * Visit a parse tree produced by the `viewName` + * labeled alternative in `PostgreSqlParser.view_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_cursor_arg?: (ctx: Decl_cursor_argContext) => Result; + visitViewName?: (ctx: ViewNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_is_for`. + * Visit a parse tree produced by `PostgreSqlParser.qualified_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_is_for?: (ctx: Decl_is_forContext) => Result; + visitQualified_name?: (ctx: Qualified_nameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_aliasitem`. + * Visit a parse tree produced by `PostgreSqlParser.tablespace_name_list`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_aliasitem?: (ctx: Decl_aliasitemContext) => Result; + visitTablespace_name_list?: (ctx: Tablespace_name_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_varname`. + * Visit a parse tree produced by `PostgreSqlParser.name_list`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_varname?: (ctx: Decl_varnameContext) => Result; + visitName_list?: (ctx: Name_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_const`. + * Visit a parse tree produced by the `databaseNameCreate` + * labeled alternative in `PostgreSqlParser.database_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_const?: (ctx: Decl_constContext) => Result; + visitDatabaseNameCreate?: (ctx: DatabaseNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_datatype`. + * Visit a parse tree produced by the `databaseName` + * labeled alternative in `PostgreSqlParser.database_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_datatype?: (ctx: Decl_datatypeContext) => Result; + visitDatabaseName?: (ctx: DatabaseNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_collate`. + * Visit a parse tree produced by the `schemaName` + * labeled alternative in `PostgreSqlParser.schema_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_collate?: (ctx: Decl_collateContext) => Result; + visitSchemaName?: (ctx: SchemaNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_notnull`. + * Visit a parse tree produced by the `routineNameCreate` + * labeled alternative in `PostgreSqlParser.routine_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_notnull?: (ctx: Decl_notnullContext) => Result; + visitRoutineNameCreate?: (ctx: RoutineNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_defval`. + * Visit a parse tree produced by the `routineName` + * labeled alternative in `PostgreSqlParser.routine_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_defval?: (ctx: Decl_defvalContext) => Result; + visitRoutineName?: (ctx: RoutineNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.decl_defkey`. + * Visit a parse tree produced by the `procedureName` + * labeled alternative in `PostgreSqlParser.procedure_name`. * @param ctx the parse tree * @return the visitor result */ - visitDecl_defkey?: (ctx: Decl_defkeyContext) => Result; + visitProcedureName?: (ctx: ProcedureNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.assign_operator`. + * Visit a parse tree produced by the `procedureNameCreate` + * labeled alternative in `PostgreSqlParser.procedure_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitAssign_operator?: (ctx: Assign_operatorContext) => Result; + visitProcedureNameCreate?: (ctx: ProcedureNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.proc_sect`. + * Visit a parse tree produced by the `columnName` + * labeled alternative in `PostgreSqlParser.column_name`. * @param ctx the parse tree * @return the visitor result */ - visitProc_sect?: (ctx: Proc_sectContext) => Result; + visitColumnName?: (ctx: ColumnNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.proc_stmt`. + * Visit a parse tree produced by the `columnNameMatch` + * labeled alternative in `PostgreSqlParser.column_name`. * @param ctx the parse tree * @return the visitor result */ - visitProc_stmt?: (ctx: Proc_stmtContext) => Result; + visitColumnNameMatch?: (ctx: ColumnNameMatchContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_perform`. + * Visit a parse tree produced by the `columnNameCreate` + * labeled alternative in `PostgreSqlParser.column_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_perform?: (ctx: Stmt_performContext) => Result; + visitColumnNameCreate?: (ctx: ColumnNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_call`. + * Visit a parse tree produced by the `functionNameCreate` + * labeled alternative in `PostgreSqlParser.function_name_create`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_call?: (ctx: Stmt_callContext) => Result; + visitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_expr_list`. + * Visit a parse tree produced by the `functionName` + * labeled alternative in `PostgreSqlParser.function_name`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_expr_list?: (ctx: Opt_expr_listContext) => Result; + visitFunctionName?: (ctx: FunctionNameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_assign`. + * Visit a parse tree produced by `PostgreSqlParser.sconst`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_assign?: (ctx: Stmt_assignContext) => Result; + visitSconst?: (ctx: SconstContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_getdiag`. + * Visit a parse tree produced by `PostgreSqlParser.anysconst`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_getdiag?: (ctx: Stmt_getdiagContext) => Result; + visitAnysconst?: (ctx: AnysconstContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.getdiag_area_opt`. + * Visit a parse tree produced by `PostgreSqlParser.signediconst`. * @param ctx the parse tree * @return the visitor result */ - visitGetdiag_area_opt?: (ctx: Getdiag_area_optContext) => Result; + visitSignediconst?: (ctx: SignediconstContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.getdiag_list`. + * Visit a parse tree produced by `PostgreSqlParser.rolespec`. * @param ctx the parse tree * @return the visitor result */ - visitGetdiag_list?: (ctx: Getdiag_listContext) => Result; + visitRolespec?: (ctx: RolespecContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.getdiag_list_item`. + * Visit a parse tree produced by `PostgreSqlParser.role_list`. * @param ctx the parse tree * @return the visitor result */ - visitGetdiag_list_item?: (ctx: Getdiag_list_itemContext) => Result; + visitRole_list?: (ctx: Role_listContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.getdiag_item`. + * Visit a parse tree produced by `PostgreSqlParser.colid`. * @param ctx the parse tree * @return the visitor result */ - visitGetdiag_item?: (ctx: Getdiag_itemContext) => Result; + visitColid?: (ctx: ColidContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.getdiag_target`. + * Visit a parse tree produced by `PostgreSqlParser.type_function_name`. * @param ctx the parse tree * @return the visitor result */ - visitGetdiag_target?: (ctx: Getdiag_targetContext) => Result; + visitType_function_name?: (ctx: Type_function_nameContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.assign_var`. + * Visit a parse tree produced by `PostgreSqlParser.nonreservedword`. * @param ctx the parse tree * @return the visitor result */ - visitAssign_var?: (ctx: Assign_varContext) => Result; + visitNonreservedword?: (ctx: NonreservedwordContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_if`. + * Visit a parse tree produced by `PostgreSqlParser.collabel`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_if?: (ctx: Stmt_ifContext) => Result; + visitCollabel?: (ctx: CollabelContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_elsifs`. + * Visit a parse tree produced by `PostgreSqlParser.identifier`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_elsifs?: (ctx: Stmt_elsifsContext) => Result; + visitIdentifier?: (ctx: IdentifierContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_else`. + * Visit a parse tree produced by `PostgreSqlParser.unreserved_keyword`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_else?: (ctx: Stmt_elseContext) => Result; + visitUnreserved_keyword?: (ctx: Unreserved_keywordContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_case`. + * Visit a parse tree produced by `PostgreSqlParser.col_name_keyword`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_case?: (ctx: Stmt_caseContext) => Result; + visitCol_name_keyword?: (ctx: Col_name_keywordContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_expr_until_when`. + * Visit a parse tree produced by `PostgreSqlParser.type_func_name_keyword`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_expr_until_when?: (ctx: Opt_expr_until_whenContext) => Result; + visitType_func_name_keyword?: (ctx: Type_func_name_keywordContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.case_when_list`. + * Visit a parse tree produced by `PostgreSqlParser.reserved_keyword`. * @param ctx the parse tree * @return the visitor result */ - visitCase_when_list?: (ctx: Case_when_listContext) => Result; + visitReserved_keyword?: (ctx: Reserved_keywordContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.case_when`. + * Visit a parse tree produced by `PostgreSqlParser.pl_block`. * @param ctx the parse tree * @return the visitor result */ - visitCase_when?: (ctx: Case_whenContext) => Result; + visitPl_block?: (ctx: Pl_blockContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_case_else`. + * Visit a parse tree produced by `PostgreSqlParser.label_decl`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_case_else?: (ctx: Opt_case_elseContext) => Result; + visitLabel_decl?: (ctx: Label_declContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_loop`. + * Visit a parse tree produced by `PostgreSqlParser.decl_statement`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_loop?: (ctx: Stmt_loopContext) => Result; + visitDecl_statement?: (ctx: Decl_statementContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_while`. + * Visit a parse tree produced by `PostgreSqlParser.decl_cursor_arg`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_while?: (ctx: Stmt_whileContext) => Result; + visitDecl_cursor_arg?: (ctx: Decl_cursor_argContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_for`. + * Visit a parse tree produced by `PostgreSqlParser.assign_operator`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_for?: (ctx: Stmt_forContext) => Result; + visitAssign_operator?: (ctx: Assign_operatorContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.for_control`. + * Visit a parse tree produced by `PostgreSqlParser.proc_stmt`. * @param ctx the parse tree * @return the visitor result */ - visitFor_control?: (ctx: For_controlContext) => Result; + visitProc_stmt?: (ctx: Proc_stmtContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_for_using_expression`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_perform`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_for_using_expression?: (ctx: Opt_for_using_expressionContext) => Result; + visitStmt_perform?: (ctx: Stmt_performContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_cursor_parameters`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_call`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_cursor_parameters?: (ctx: Opt_cursor_parametersContext) => Result; + visitStmt_call?: (ctx: Stmt_callContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_reverse`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_assign`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_reverse?: (ctx: Opt_reverseContext) => Result; + visitStmt_assign?: (ctx: Stmt_assignContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_by_expression`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_getdiag`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_by_expression?: (ctx: Opt_by_expressionContext) => Result; + visitStmt_getdiag?: (ctx: Stmt_getdiagContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.for_variable`. + * Visit a parse tree produced by `PostgreSqlParser.getdiag_list_item`. * @param ctx the parse tree * @return the visitor result */ - visitFor_variable?: (ctx: For_variableContext) => Result; + visitGetdiag_list_item?: (ctx: Getdiag_list_itemContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_foreach_a`. + * Visit a parse tree produced by `PostgreSqlParser.assign_var`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_foreach_a?: (ctx: Stmt_foreach_aContext) => Result; + visitAssign_var?: (ctx: Assign_varContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.foreach_slice`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_if`. * @param ctx the parse tree * @return the visitor result */ - visitForeach_slice?: (ctx: Foreach_sliceContext) => Result; + visitStmt_if?: (ctx: Stmt_ifContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_exit`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_else`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_exit?: (ctx: Stmt_exitContext) => Result; + visitStmt_else?: (ctx: Stmt_elseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.exit_type`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_case`. * @param ctx the parse tree * @return the visitor result */ - visitExit_type?: (ctx: Exit_typeContext) => Result; + visitStmt_case?: (ctx: Stmt_caseContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_return`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_loop_while_for`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_return?: (ctx: Stmt_returnContext) => Result; + visitStmt_loop_while_for?: (ctx: Stmt_loop_while_forContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_return_result`. + * Visit a parse tree produced by `PostgreSqlParser.for_control`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_return_result?: (ctx: Opt_return_resultContext) => Result; + visitFor_control?: (ctx: For_controlContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_raise`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_foreach_a`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_raise?: (ctx: Stmt_raiseContext) => Result; + visitStmt_foreach_a?: (ctx: Stmt_foreach_aContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_stmt_raise_level`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_exit`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_stmt_raise_level?: (ctx: Opt_stmt_raise_levelContext) => Result; + visitStmt_exit?: (ctx: Stmt_exitContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_raise_list`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_return`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_raise_list?: (ctx: Opt_raise_listContext) => Result; + visitStmt_return?: (ctx: Stmt_returnContext) => Result; /** - * Visit a parse tree produced by `PostgreSqlParser.opt_raise_using`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_raise`. * @param ctx the parse tree * @return the visitor result */ - visitOpt_raise_using?: (ctx: Opt_raise_usingContext) => Result; + visitStmt_raise?: (ctx: Stmt_raiseContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.opt_raise_using_elem`. * @param ctx the parse tree * @return the visitor result */ visitOpt_raise_using_elem?: (ctx: Opt_raise_using_elemContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_raise_using_elem_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_raise_using_elem_list?: (ctx: Opt_raise_using_elem_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.stmt_assert`. * @param ctx the parse tree * @return the visitor result */ visitStmt_assert?: (ctx: Stmt_assertContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_stmt_assert_message`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_stmt_assert_message?: (ctx: Opt_stmt_assert_messageContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.loop_body`. * @param ctx the parse tree @@ -5949,18 +3307,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_execute_using`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_execute_using?: (ctx: Opt_execute_usingContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_execute_using_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_execute_using_list?: (ctx: Opt_execute_using_listContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.opt_execute_into`. * @param ctx the parse tree @@ -5979,48 +3325,12 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_open_bound_list`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_open_bound_list?: (ctx: Opt_open_bound_listContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_open_using`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_open_using?: (ctx: Opt_open_usingContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_scroll_option`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_scroll_option?: (ctx: Opt_scroll_optionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_scroll_option_no`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_scroll_option_no?: (ctx: Opt_scroll_option_noContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.stmt_fetch`. * @param ctx the parse tree * @return the visitor result */ visitStmt_fetch?: (ctx: Stmt_fetchContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.into_target`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInto_target?: (ctx: Into_targetContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_cursor_from`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_cursor_from?: (ctx: Opt_cursor_fromContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.opt_fetch_direction`. * @param ctx the parse tree @@ -6045,12 +3355,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.join_condition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitJoin_condition?: (ctx: Join_conditionContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.merge_when_clause`. * @param ctx the parse tree @@ -6075,12 +3379,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.exprofdefaultlist`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExprofdefaultlist?: (ctx: ExprofdefaultlistContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.exprofdefault`. * @param ctx the parse tree @@ -6100,23 +3398,11 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_commit`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStmt_commit?: (ctx: Stmt_commitContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.stmt_rollback`. + * Visit a parse tree produced by `PostgreSqlParser.stmt_commit_or_rollback`. * @param ctx the parse tree * @return the visitor result */ - visitStmt_rollback?: (ctx: Stmt_rollbackContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.plsql_opt_transaction_chain`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPlsql_opt_transaction_chain?: (ctx: Plsql_opt_transaction_chainContext) => Result; + visitStmt_commit_or_rollback?: (ctx: Stmt_commit_or_rollbackContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.stmt_set`. * @param ctx the parse tree @@ -6135,54 +3421,12 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.proc_exceptions`. - * @param ctx the parse tree - * @return the visitor result - */ - visitProc_exceptions?: (ctx: Proc_exceptionsContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.proc_exception`. - * @param ctx the parse tree - * @return the visitor result - */ - visitProc_exception?: (ctx: Proc_exceptionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.proc_conditions`. - * @param ctx the parse tree - * @return the visitor result - */ - visitProc_conditions?: (ctx: Proc_conditionsContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.proc_condition`. * @param ctx the parse tree * @return the visitor result */ visitProc_condition?: (ctx: Proc_conditionContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_block_label`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_block_label?: (ctx: Opt_block_labelContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_loop_label`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_loop_label?: (ctx: Opt_loop_labelContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_label`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_label?: (ctx: Opt_labelContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_exitcond`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_exitcond?: (ctx: Opt_exitcondContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.any_identifier`. * @param ctx the parse tree @@ -6201,41 +3445,5 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.expr_until_then`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpr_until_then?: (ctx: Expr_until_thenContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.expr_until_semi`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpr_until_semi?: (ctx: Expr_until_semiContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.expr_until_rightbracket`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpr_until_rightbracket?: (ctx: Expr_until_rightbracketContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.expr_until_loop`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpr_until_loop?: (ctx: Expr_until_loopContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.make_execsql_stmt`. - * @param ctx the parse tree - * @return the visitor result - */ - visitMake_execsql_stmt?: (ctx: Make_execsql_stmtContext) => Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.opt_returning_clause_into`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOpt_returning_clause_into?: (ctx: Opt_returning_clause_intoContext) => Result; } From eb2e920e345aef98285ba261c2060db61d1d56b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9C=9C=E5=BA=8F?= <976060700@qq.com> Date: Mon, 1 Jul 2024 10:29:44 +0800 Subject: [PATCH 02/16] feat(basicSql): remove judge splitListener/collectListener, all sqlParser implements it (#316) --- src/parser/common/basicSQL.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/parser/common/basicSQL.ts b/src/parser/common/basicSQL.ts index 31082f6d..429078ee 100644 --- a/src/parser/common/basicSQL.ts +++ b/src/parser/common/basicSQL.ts @@ -231,8 +231,6 @@ export abstract class BasicSQL< return null; } const splitListener = this.splitListener; - // TODO: add splitListener to all sqlParser implements and remove following if - if (!splitListener) return null; this.listen(splitListener, this._parseTree); @@ -256,8 +254,6 @@ export abstract class BasicSQL< caretPosition: CaretPosition ): Suggestions | null { const splitListener = this.splitListener; - // TODO: add splitListener to all sqlParser implements and remove following if - if (!splitListener) return null; this.parseWithCache(input); if (!this._parseTree) return null; @@ -383,10 +379,6 @@ export abstract class BasicSQL< : void 0; const collectListener = this.createEntityCollector(input, caretTokenIndex); - // TODO: add entityCollector to all sqlParser implements and remove following if - if (!collectListener) { - return null; - } // const parser = this.createParserWithCache(input); // parser.entityCollecting = true; From 5aade9e6daafc2c6e70c5202d7ef06572ec37f6e Mon Sep 17 00:00:00 2001 From: Kijin-Seija Date: Mon, 1 Jul 2024 19:02:32 +0800 Subject: [PATCH 03/16] feat: add alter table stmt (#312) * fix: add alter table stmt * fix: delete personal unused scripts --- src/parser/common/entityCollector.ts | 1 + .../postgresql/postgreEntityCollector.ts | 7 +++++++ .../fixtures/suggestionWithEntity.sql | 4 +++- .../suggestion/suggestionWithEntity.test.ts | 21 +++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/parser/common/entityCollector.ts b/src/parser/common/entityCollector.ts index 60bbbf97..a7579bcc 100644 --- a/src/parser/common/entityCollector.ts +++ b/src/parser/common/entityCollector.ts @@ -17,6 +17,7 @@ export enum StmtContextType { SELECT_STMT = 'selectStmt', INSERT_STMT = 'insertStmt', CREATE_FUNCTION_STMT = 'createFunctionStmt', + ALTER_TABLE_STMT = 'alterTableStmt', } export interface StmtContext { diff --git a/src/parser/postgresql/postgreEntityCollector.ts b/src/parser/postgresql/postgreEntityCollector.ts index 47eaf237..8bf5308e 100644 --- a/src/parser/postgresql/postgreEntityCollector.ts +++ b/src/parser/postgresql/postgreEntityCollector.ts @@ -1,4 +1,5 @@ import type { + AltertablestmtContext, ColumnCreateTableContext, ColumnNameCreateContext, CreateDatabaseContext, @@ -145,4 +146,10 @@ export class PostgreSqlEntityCollector extends EntityCollector implements Postgr exitCreatefunctionstmt(ctx: CreatefunctionstmtContext) { this.popStmt(); } + enterAltertablestmt(ctx: AltertablestmtContext) { + this.pushStmt(ctx, StmtContextType.ALTER_TABLE_STMT); + } + exitAltertablestmt(ctx: AltertablestmtContext) { + this.popStmt(); + } } diff --git a/test/parser/postgresql/suggestion/fixtures/suggestionWithEntity.sql b/test/parser/postgresql/suggestion/fixtures/suggestionWithEntity.sql index 6bbbf123..8824296e 100644 --- a/test/parser/postgresql/suggestion/fixtures/suggestionWithEntity.sql +++ b/test/parser/postgresql/suggestion/fixtures/suggestionWithEntity.sql @@ -8,4 +8,6 @@ INSERT INTO insert_tb SELECT id, age, FROM from_tb; CREATE TABLE sorted_census_data AS SELECT FROM unsorted_census_data; -CREATE TABLE sorted_census_data AS SELECT id, age, FROM unsorted_census_data; \ No newline at end of file +CREATE TABLE sorted_census_data AS SELECT id, age, FROM unsorted_census_data; + +ALTER TABLE my_table DROP a_column; \ No newline at end of file diff --git a/test/parser/postgresql/suggestion/suggestionWithEntity.test.ts b/test/parser/postgresql/suggestion/suggestionWithEntity.test.ts index f89bc016..ab840ba6 100644 --- a/test/parser/postgresql/suggestion/suggestionWithEntity.test.ts +++ b/test/parser/postgresql/suggestion/suggestionWithEntity.test.ts @@ -153,4 +153,25 @@ describe('PostgreSql Syntax Suggestion with collect entity', () => { expect(entities[1].entityContextType).toBe(EntityContextType.TABLE); expect(entities[1].belongStmt.isContainCaret).toBeTruthy(); }); + + test('alter table drop column', () => { + const pos: CaretPosition = { + lineNumber: 13, + column: 35, + }; + const sql = commentOtherLine(syntaxSql, pos.lineNumber); + + const syntaxes = postgre.getSuggestionAtCaretPosition(sql, pos)?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.COLUMN + ); + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['a_column']); + + const entities = postgre.getAllEntities(sql, pos); + expect(entities.length).toBe(1); + expect(entities[0].text).toBe('my_table'); + expect(entities[0].entityContextType).toBe(EntityContextType.TABLE); + expect(entities[0].belongStmt?.isContainCaret).toBeTruthy(); + }); }); From 7884cbe37844c057fa41fde4d0716af43c4023af Mon Sep 17 00:00:00 2001 From: LuckyFBB <976060700@qq.com> Date: Fri, 14 Jun 2024 17:45:17 +0800 Subject: [PATCH 04/16] fix(postgresql): combine plsql_unreserved_keyword to unreserved_keyword and remove unused rules --- src/grammar/postgresql/PostgreSqlParser.g4 | 117 +- src/lib/postgresql/PostgreSqlParser.interp | 3 +- src/lib/postgresql/PostgreSqlParser.ts | 21532 ++++++++-------- .../postgresql/PostgreSqlParserListener.ts | 11 - src/lib/postgresql/PostgreSqlParserVisitor.ts | 7 - .../contextCollect/entityCollector.test.ts | 2 +- 6 files changed, 10740 insertions(+), 10932 deletions(-) diff --git a/src/grammar/postgresql/PostgreSqlParser.g4 b/src/grammar/postgresql/PostgreSqlParser.g4 index 63d6f9ae..59a9e64f 100644 --- a/src/grammar/postgresql/PostgreSqlParser.g4 +++ b/src/grammar/postgresql/PostgreSqlParser.g4 @@ -609,9 +609,9 @@ tableelementlist ; tableelement - : column_def + : (KW_CONSTRAINT colid)? constraintelem + | column_def | KW_LIKE qualified_name ((KW_INCLUDING | KW_EXCLUDING) tablelikeoption)* - | (KW_CONSTRAINT colid)? constraintelem ; typedtableelement @@ -2788,28 +2788,24 @@ role_list colid : identifier - | unreserved_keyword | col_name_keyword - | plsql_unreserved_keyword ; type_function_name : identifier - | unreserved_keyword - | plsql_unreserved_keyword | type_func_name_keyword ; nonreservedword : identifier - | unreserved_keyword | col_name_keyword | type_func_name_keyword ; collabel - : nonreservedword - | plsql_unreserved_keyword + : identifier + | col_name_keyword + | type_func_name_keyword | reserved_keyword ; @@ -2820,7 +2816,7 @@ identifier | UnicodeQuotedIdentifier | PLSQLVARIABLENAME | PLSQLIDENTIFIER - | plsql_unreserved_keyword + | unreserved_keyword ; unreserved_keyword @@ -3125,6 +3121,39 @@ unreserved_keyword | KW_YEAR | KW_YES | KW_ZONE + | KW_ALIAS + | KW_ASSERT + | KW_CONSTANT + | KW_DEBUG + | KW_DEFAULT + | KW_DIAGNOSTICS + | KW_DUMP + | KW_ELSIF + | KW_ERROR + | KW_EXCEPTION + | KW_EXIT + | KW_GET + | KW_INFO + | KW_IS + | KW_LOG + | KW_NOTICE + | KW_OPEN + | KW_PUBLIC + | KW_PERFORM + | KW_PRINT_STRICT_PARAMS + | KW_QUERY + | KW_RAISE + | KW_RETURN + | KW_REVERSE + | KW_ROWTYPE + | KW_SLICE + | KW_SQLSTATE + | KW_STACKED + | KW_USE_COLUMN + | KW_USE_VARIABLE + | KW_VARIABLE_CONFLICT + | KW_WARNING + | KW_OUTER ; col_name_keyword @@ -3600,73 +3629,7 @@ proc_condition any_identifier : colid - | plsql_unreserved_keyword - ; - -plsql_unreserved_keyword - : KW_ABSOLUTE - | KW_ALIAS - | KW_AND - | KW_ARRAY - | KW_ASSERT - | KW_BACKWARD - | KW_CALL - | KW_CHAIN - | KW_CLOSE - | KW_COLLATE - | KW_COMMIT - | KW_CONSTANT - | KW_CONSTRAINT - | KW_CONTINUE - | KW_CURRENT - | KW_CURSOR - | KW_DEBUG - | KW_DEFAULT - | KW_DIAGNOSTICS - | KW_DO - | KW_DUMP - | KW_ELSIF - | KW_ERROR - | KW_EXCEPTION - | KW_EXIT - | KW_FETCH - | KW_FIRST - | KW_FORWARD - | KW_GET - | KW_INFO - | KW_INSERT - | KW_IS - | KW_LAST - | KW_LOG - | KW_MOVE - | KW_NEXT - | KW_NO - | KW_NOTICE - | KW_OPEN - | KW_OPTION - | KW_PERFORM - | KW_PRINT_STRICT_PARAMS - | KW_PRIOR - | KW_QUERY - | KW_RAISE - | KW_RELATIVE - | KW_RESET - | KW_RETURN - | KW_REVERSE - | KW_ROLLBACK - | KW_ROWTYPE - | KW_SCHEMA - | KW_SCROLL - | KW_SET - | KW_SLICE - | KW_SQLSTATE - | KW_STACKED - | KW_TYPE - | KW_USE_COLUMN - | KW_USE_VARIABLE - | KW_VARIABLE_CONFLICT - | KW_WARNING - | KW_OUTER + | unreserved_keyword ; sql_expression diff --git a/src/lib/postgresql/PostgreSqlParser.interp b/src/lib/postgresql/PostgreSqlParser.interp index 68bf4dae..dfd40ac5 100644 --- a/src/lib/postgresql/PostgreSqlParser.interp +++ b/src/lib/postgresql/PostgreSqlParser.interp @@ -1650,9 +1650,8 @@ cursor_variable exception_sect proc_condition any_identifier -plsql_unreserved_keyword sql_expression atn: -[4, 1, 590, 8504, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 1, 0, 5, 0, 936, 8, 0, 10, 0, 12, 0, 939, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 945, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1065, 8, 2, 3, 2, 1067, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 1076, 8, 4, 1, 4, 5, 4, 1079, 8, 4, 10, 4, 12, 4, 1082, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 1087, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1122, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1132, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1138, 8, 7, 1, 7, 5, 7, 1141, 8, 7, 10, 7, 12, 7, 1144, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1150, 8, 8, 1, 8, 5, 8, 1153, 8, 8, 10, 8, 12, 8, 1156, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1162, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1173, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 5, 11, 1179, 8, 11, 10, 11, 12, 11, 1182, 9, 11, 1, 11, 3, 11, 1185, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1197, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1203, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1209, 8, 12, 1, 12, 1, 12, 3, 12, 1213, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1218, 8, 12, 1, 12, 1, 12, 3, 12, 1222, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1235, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1245, 8, 12, 3, 12, 1247, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1253, 8, 13, 1, 13, 5, 13, 1256, 8, 13, 10, 13, 12, 13, 1259, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1271, 8, 15, 1, 15, 3, 15, 1274, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1279, 8, 15, 1, 15, 5, 15, 1282, 8, 15, 10, 15, 12, 15, 1285, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1295, 8, 17, 1, 18, 1, 18, 3, 18, 1299, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1311, 8, 19, 1, 20, 1, 20, 3, 20, 1315, 8, 20, 1, 20, 3, 20, 1318, 8, 20, 1, 20, 1, 20, 3, 20, 1322, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1334, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1352, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 1357, 8, 22, 10, 22, 12, 22, 1360, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 1365, 8, 23, 10, 23, 12, 23, 1368, 9, 23, 1, 24, 1, 24, 3, 24, 1372, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1379, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1387, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1393, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1401, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1409, 8, 28, 1, 29, 1, 29, 3, 29, 1413, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1427, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 1432, 8, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1437, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1449, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1455, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1467, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1472, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1482, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1488, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1493, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1501, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1506, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1513, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1518, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1523, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1533, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1538, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1543, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1550, 8, 38, 1, 38, 1, 38, 3, 38, 1554, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1568, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1574, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1580, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1585, 8, 38, 1, 39, 1, 39, 1, 39, 5, 39, 1590, 8, 39, 10, 39, 12, 39, 1593, 9, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1604, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1610, 8, 41, 10, 41, 12, 41, 1613, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1620, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1636, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1645, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 1652, 8, 46, 10, 46, 12, 46, 1655, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1663, 8, 46, 1, 46, 1, 46, 3, 46, 1667, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1679, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1687, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1697, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1717, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1722, 8, 46, 1, 46, 3, 46, 1725, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1732, 8, 46, 1, 46, 3, 46, 1735, 8, 46, 1, 46, 1, 46, 3, 46, 1739, 8, 46, 1, 46, 1, 46, 3, 46, 1743, 8, 46, 1, 46, 3, 46, 1746, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1751, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1756, 8, 46, 1, 46, 1, 46, 3, 46, 1760, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1769, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1775, 8, 46, 1, 46, 1, 46, 3, 46, 1779, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1788, 8, 46, 1, 46, 3, 46, 1791, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1797, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1806, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 1816, 8, 46, 11, 46, 12, 46, 1817, 1, 46, 1, 46, 3, 46, 1822, 8, 46, 1, 46, 1, 46, 3, 46, 1826, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1831, 8, 46, 1, 46, 3, 46, 1834, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1840, 8, 46, 4, 46, 1842, 8, 46, 11, 46, 12, 46, 1843, 1, 46, 1, 46, 3, 46, 1848, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1854, 8, 46, 1, 46, 1, 46, 3, 46, 1858, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1863, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1868, 8, 46, 1, 46, 1, 46, 3, 46, 1872, 8, 46, 1, 46, 3, 46, 1875, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1882, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1893, 8, 50, 10, 50, 12, 50, 1896, 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1908, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1920, 8, 53, 10, 53, 12, 53, 1923, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1939, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1947, 8, 54, 10, 54, 12, 54, 1950, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1956, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1961, 8, 55, 1, 55, 1, 55, 3, 55, 1965, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1972, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1977, 8, 55, 1, 55, 3, 55, 1980, 8, 55, 3, 55, 1982, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 1987, 8, 56, 1, 57, 1, 57, 3, 57, 1991, 8, 57, 1, 57, 1, 57, 3, 57, 1995, 8, 57, 1, 57, 1, 57, 3, 57, 1999, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2004, 8, 57, 1, 57, 3, 57, 2007, 8, 57, 1, 57, 1, 57, 3, 57, 2011, 8, 57, 1, 57, 3, 57, 2014, 8, 57, 1, 57, 1, 57, 3, 57, 2018, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2026, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2031, 8, 57, 1, 57, 3, 57, 2034, 8, 57, 1, 57, 1, 57, 3, 57, 2038, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2044, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2053, 8, 58, 1, 58, 1, 58, 3, 58, 2057, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2063, 8, 58, 10, 58, 12, 58, 2066, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2072, 8, 58, 10, 58, 12, 58, 2075, 9, 58, 1, 58, 1, 58, 3, 58, 2079, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2089, 8, 59, 10, 59, 12, 59, 2092, 9, 59, 1, 59, 1, 59, 3, 59, 2096, 8, 59, 1, 60, 1, 60, 3, 60, 2100, 8, 60, 1, 60, 1, 60, 3, 60, 2104, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2109, 8, 60, 1, 60, 1, 60, 3, 60, 2113, 8, 60, 1, 60, 3, 60, 2116, 8, 60, 1, 60, 3, 60, 2119, 8, 60, 1, 60, 3, 60, 2122, 8, 60, 1, 60, 3, 60, 2125, 8, 60, 1, 60, 3, 60, 2128, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2133, 8, 60, 1, 60, 3, 60, 2136, 8, 60, 1, 60, 3, 60, 2139, 8, 60, 1, 60, 3, 60, 2142, 8, 60, 1, 60, 3, 60, 2145, 8, 60, 1, 60, 3, 60, 2148, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2154, 8, 60, 1, 60, 1, 60, 3, 60, 2158, 8, 60, 1, 60, 3, 60, 2161, 8, 60, 1, 60, 3, 60, 2164, 8, 60, 1, 60, 3, 60, 2167, 8, 60, 1, 60, 3, 60, 2170, 8, 60, 3, 60, 2172, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2179, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2185, 8, 62, 10, 62, 12, 62, 2188, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 5, 63, 2195, 8, 63, 10, 63, 12, 63, 2198, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2205, 8, 64, 10, 64, 12, 64, 2208, 9, 64, 1, 64, 1, 64, 3, 64, 2212, 8, 64, 1, 64, 3, 64, 2215, 8, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2220, 8, 65, 1, 65, 5, 65, 2223, 8, 65, 10, 65, 12, 65, 2226, 9, 65, 1, 65, 1, 65, 3, 65, 2230, 8, 65, 1, 65, 3, 65, 2233, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 2238, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2247, 8, 66, 3, 66, 2249, 8, 66, 1, 66, 1, 66, 3, 66, 2253, 8, 66, 1, 66, 3, 66, 2256, 8, 66, 1, 66, 1, 66, 3, 66, 2260, 8, 66, 1, 66, 5, 66, 2263, 8, 66, 10, 66, 12, 66, 2266, 9, 66, 1, 67, 1, 67, 3, 67, 2270, 8, 67, 1, 67, 1, 67, 3, 67, 2274, 8, 67, 1, 67, 3, 67, 2277, 8, 67, 1, 67, 1, 67, 3, 67, 2281, 8, 67, 1, 68, 3, 68, 2284, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2289, 8, 68, 1, 68, 3, 68, 2292, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2297, 8, 68, 1, 68, 3, 68, 2300, 8, 68, 1, 68, 1, 68, 3, 68, 2304, 8, 68, 1, 68, 3, 68, 2307, 8, 68, 1, 68, 3, 68, 2310, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2315, 8, 68, 1, 68, 3, 68, 2318, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2326, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 2336, 8, 68, 11, 68, 12, 68, 2337, 1, 68, 1, 68, 3, 68, 2342, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2349, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2354, 8, 68, 1, 68, 3, 68, 2357, 8, 68, 1, 68, 3, 68, 2360, 8, 68, 1, 68, 3, 68, 2363, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2368, 8, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2377, 8, 71, 10, 71, 12, 71, 2380, 9, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2385, 8, 71, 1, 71, 1, 71, 3, 71, 2389, 8, 71, 1, 71, 3, 71, 2392, 8, 71, 1, 71, 3, 71, 2395, 8, 71, 1, 71, 5, 71, 2398, 8, 71, 10, 71, 12, 71, 2401, 9, 71, 1, 71, 1, 71, 5, 71, 2405, 8, 71, 10, 71, 12, 71, 2408, 9, 71, 3, 71, 2410, 8, 71, 1, 71, 1, 71, 3, 71, 2414, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2420, 8, 71, 10, 71, 12, 71, 2423, 9, 71, 1, 71, 1, 71, 3, 71, 2427, 8, 71, 1, 71, 3, 71, 2430, 8, 71, 1, 71, 3, 71, 2433, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2440, 8, 71, 1, 71, 5, 71, 2443, 8, 71, 10, 71, 12, 71, 2446, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2454, 8, 71, 1, 71, 3, 71, 2457, 8, 71, 1, 71, 3, 71, 2460, 8, 71, 1, 71, 5, 71, 2463, 8, 71, 10, 71, 12, 71, 2466, 9, 71, 3, 71, 2468, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2478, 8, 73, 10, 73, 12, 73, 2481, 9, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 2488, 8, 74, 10, 74, 12, 74, 2491, 9, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2507, 8, 77, 1, 78, 1, 78, 3, 78, 2511, 8, 78, 1, 78, 1, 78, 3, 78, 2515, 8, 78, 3, 78, 2517, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2534, 8, 81, 3, 81, 2536, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 2550, 8, 83, 10, 83, 12, 83, 2553, 9, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2563, 8, 84, 1, 84, 3, 84, 2566, 8, 84, 1, 84, 3, 84, 2569, 8, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2578, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2587, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 3, 91, 2603, 8, 91, 1, 91, 3, 91, 2606, 8, 91, 1, 91, 3, 91, 2609, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 2615, 8, 91, 10, 91, 12, 91, 2618, 9, 91, 1, 91, 3, 91, 2621, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 2628, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 2637, 8, 93, 1, 93, 1, 93, 3, 93, 2641, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2647, 8, 93, 1, 94, 1, 94, 3, 94, 2651, 8, 94, 1, 94, 3, 94, 2654, 8, 94, 1, 94, 3, 94, 2657, 8, 94, 1, 94, 3, 94, 2660, 8, 94, 1, 94, 3, 94, 2663, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2669, 8, 95, 1, 96, 1, 96, 3, 96, 2673, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2678, 8, 96, 1, 96, 1, 96, 3, 96, 2682, 8, 96, 1, 96, 3, 96, 2685, 8, 96, 1, 96, 3, 96, 2688, 8, 96, 1, 96, 3, 96, 2691, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2696, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2702, 8, 97, 1, 97, 1, 97, 3, 97, 2706, 8, 97, 1, 98, 1, 98, 3, 98, 2710, 8, 98, 1, 98, 1, 98, 3, 98, 2714, 8, 98, 1, 98, 1, 98, 4, 98, 2718, 8, 98, 11, 98, 12, 98, 2719, 3, 98, 2722, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 2727, 8, 99, 1, 99, 1, 99, 4, 99, 2731, 8, 99, 11, 99, 12, 99, 2732, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2739, 8, 100, 1, 100, 1, 100, 3, 100, 2743, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2758, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2763, 8, 100, 1, 100, 3, 100, 2766, 8, 100, 3, 100, 2768, 8, 100, 1, 101, 3, 101, 2771, 8, 101, 1, 101, 1, 101, 3, 101, 2775, 8, 101, 1, 102, 1, 102, 3, 102, 2779, 8, 102, 1, 102, 3, 102, 2782, 8, 102, 1, 102, 3, 102, 2785, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2793, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2799, 8, 102, 3, 102, 2801, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2807, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2812, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2817, 8, 104, 1, 104, 1, 104, 3, 104, 2821, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 2828, 8, 104, 10, 104, 12, 104, 2831, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 2839, 8, 105, 10, 105, 12, 105, 2842, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2880, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 4, 107, 2888, 8, 107, 11, 107, 12, 107, 2889, 3, 107, 2892, 8, 107, 1, 107, 3, 107, 2895, 8, 107, 1, 108, 1, 108, 3, 108, 2899, 8, 108, 1, 108, 1, 108, 3, 108, 2903, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 4, 109, 2911, 8, 109, 11, 109, 12, 109, 2912, 3, 109, 2915, 8, 109, 1, 109, 1, 109, 4, 109, 2919, 8, 109, 11, 109, 12, 109, 2920, 3, 109, 2923, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 5, 110, 2930, 8, 110, 10, 110, 12, 110, 2933, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2942, 8, 111, 10, 111, 12, 111, 2945, 9, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 2958, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2963, 8, 114, 1, 114, 3, 114, 2966, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2973, 8, 114, 1, 115, 1, 115, 1, 115, 3, 115, 2978, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2986, 8, 116, 3, 116, 2988, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2994, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2999, 8, 117, 1, 117, 1, 117, 3, 117, 3003, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3008, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3014, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3021, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3027, 8, 117, 3, 117, 3029, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3038, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3044, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3052, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3058, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3063, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3068, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3076, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3091, 8, 121, 3, 121, 3093, 8, 121, 1, 121, 1, 121, 3, 121, 3097, 8, 121, 1, 121, 1, 121, 3, 121, 3101, 8, 121, 1, 121, 3, 121, 3104, 8, 121, 1, 121, 3, 121, 3107, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3116, 8, 122, 1, 122, 3, 122, 3119, 8, 122, 1, 122, 3, 122, 3122, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3128, 8, 123, 1, 123, 1, 123, 5, 123, 3132, 8, 123, 10, 123, 12, 123, 3135, 9, 123, 1, 123, 3, 123, 3138, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3150, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3156, 8, 123, 1, 124, 3, 124, 3159, 8, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3164, 8, 124, 1, 124, 1, 124, 3, 124, 3168, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3175, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3185, 8, 124, 3, 124, 3187, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 3211, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3223, 8, 128, 1, 128, 4, 128, 3226, 8, 128, 11, 128, 12, 128, 3227, 3, 128, 3230, 8, 128, 1, 128, 1, 128, 3, 128, 3234, 8, 128, 1, 128, 3, 128, 3237, 8, 128, 1, 128, 3, 128, 3240, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3250, 8, 128, 1, 128, 3, 128, 3253, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3263, 8, 128, 1, 128, 5, 128, 3266, 8, 128, 10, 128, 12, 128, 3269, 9, 128, 1, 128, 1, 128, 3, 128, 3273, 8, 128, 1, 128, 3, 128, 3276, 8, 128, 1, 128, 3, 128, 3279, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3287, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3293, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 3298, 8, 130, 10, 130, 12, 130, 3301, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3308, 8, 131, 1, 131, 3, 131, 3311, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3322, 8, 133, 1, 134, 1, 134, 3, 134, 3326, 8, 134, 1, 134, 1, 134, 5, 134, 3330, 8, 134, 10, 134, 12, 134, 3333, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3339, 8, 135, 1, 136, 3, 136, 3342, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3351, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 5, 137, 3363, 8, 137, 10, 137, 12, 137, 3366, 9, 137, 3, 137, 3368, 8, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 5, 138, 3380, 8, 138, 10, 138, 12, 138, 3383, 9, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3393, 8, 139, 1, 139, 3, 139, 3396, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 3406, 8, 140, 10, 140, 12, 140, 3409, 9, 140, 1, 141, 1, 141, 3, 141, 3413, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3424, 8, 141, 10, 141, 12, 141, 3427, 9, 141, 1, 141, 1, 141, 3, 141, 3431, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3444, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3451, 8, 141, 10, 141, 12, 141, 3454, 9, 141, 3, 141, 3456, 8, 141, 1, 141, 3, 141, 3459, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3466, 8, 141, 1, 141, 3, 141, 3469, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3481, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3487, 8, 141, 3, 141, 3489, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 3495, 8, 142, 10, 142, 12, 142, 3498, 9, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3505, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3513, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3525, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3530, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3541, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3552, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3560, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 3566, 8, 148, 10, 148, 12, 148, 3569, 9, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3575, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3582, 8, 149, 3, 149, 3584, 8, 149, 1, 149, 3, 149, 3587, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3592, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3597, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3614, 8, 151, 10, 151, 12, 151, 3617, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3623, 8, 151, 10, 151, 12, 151, 3626, 9, 151, 3, 151, 3628, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3655, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3664, 8, 154, 1, 154, 3, 154, 3667, 8, 154, 1, 154, 1, 154, 3, 154, 3671, 8, 154, 1, 154, 1, 154, 3, 154, 3675, 8, 154, 1, 154, 1, 154, 3, 154, 3679, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3684, 8, 154, 10, 154, 12, 154, 3687, 9, 154, 1, 154, 3, 154, 3690, 8, 154, 1, 154, 1, 154, 3, 154, 3694, 8, 154, 1, 154, 1, 154, 3, 154, 3698, 8, 154, 1, 154, 1, 154, 3, 154, 3702, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3707, 8, 154, 1, 154, 1, 154, 3, 154, 3711, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3716, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3722, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3727, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3732, 8, 154, 10, 154, 12, 154, 3735, 9, 154, 1, 154, 3, 154, 3738, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3744, 8, 154, 1, 154, 1, 154, 3, 154, 3748, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3753, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3761, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3767, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3772, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3779, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3784, 8, 154, 1, 154, 1, 154, 3, 154, 3788, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3793, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3799, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3806, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3811, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3818, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3823, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3830, 8, 154, 1, 154, 1, 154, 3, 154, 3834, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3840, 8, 154, 10, 154, 12, 154, 3843, 9, 154, 1, 154, 3, 154, 3846, 8, 154, 3, 154, 3848, 8, 154, 1, 155, 3, 155, 3851, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3856, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3866, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3881, 8, 156, 1, 156, 3, 156, 3884, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3892, 8, 156, 1, 157, 1, 157, 1, 157, 5, 157, 3897, 8, 157, 10, 157, 12, 157, 3900, 9, 157, 1, 158, 1, 158, 3, 158, 3904, 8, 158, 1, 159, 1, 159, 4, 159, 3908, 8, 159, 11, 159, 12, 159, 3909, 1, 160, 1, 160, 3, 160, 3914, 8, 160, 1, 160, 1, 160, 1, 160, 5, 160, 3919, 8, 160, 10, 160, 12, 160, 3922, 9, 160, 1, 160, 1, 160, 3, 160, 3926, 8, 160, 1, 160, 3, 160, 3929, 8, 160, 1, 161, 3, 161, 3932, 8, 161, 1, 161, 1, 161, 3, 161, 3936, 8, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3945, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3963, 8, 162, 1, 162, 3, 162, 3966, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3998, 8, 162, 1, 162, 1, 162, 1, 162, 3, 162, 4003, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4009, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4029, 8, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4034, 8, 163, 1, 164, 1, 164, 1, 164, 1, 165, 3, 165, 4040, 8, 165, 1, 165, 3, 165, 4043, 8, 165, 1, 165, 1, 165, 3, 165, 4047, 8, 165, 1, 165, 1, 165, 3, 165, 4051, 8, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4057, 8, 165, 1, 165, 3, 165, 4060, 8, 165, 1, 165, 1, 165, 3, 165, 4064, 8, 165, 1, 165, 1, 165, 3, 165, 4068, 8, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4073, 8, 165, 1, 165, 3, 165, 4076, 8, 165, 1, 165, 3, 165, 4079, 8, 165, 1, 165, 3, 165, 4082, 8, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 4095, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4101, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4109, 8, 168, 1, 169, 1, 169, 1, 169, 5, 169, 4114, 8, 169, 10, 169, 12, 169, 4117, 9, 169, 1, 169, 1, 169, 3, 169, 4121, 8, 169, 1, 169, 3, 169, 4124, 8, 169, 1, 169, 1, 169, 1, 169, 5, 169, 4129, 8, 169, 10, 169, 12, 169, 4132, 9, 169, 3, 169, 4134, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 4142, 8, 171, 1, 171, 3, 171, 4145, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 4150, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4157, 8, 172, 1, 172, 3, 172, 4160, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 4178, 8, 172, 10, 172, 12, 172, 4181, 9, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4192, 8, 172, 1, 173, 3, 173, 4195, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4201, 8, 173, 1, 173, 5, 173, 4204, 8, 173, 10, 173, 12, 173, 4207, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4213, 8, 174, 10, 174, 12, 174, 4216, 9, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4223, 8, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4228, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4234, 8, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4239, 8, 175, 10, 175, 12, 175, 4242, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4249, 8, 175, 1, 175, 3, 175, 4252, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4263, 8, 176, 10, 176, 12, 176, 4266, 9, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4279, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4285, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4293, 8, 177, 3, 177, 4295, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 4301, 8, 179, 1, 179, 1, 179, 3, 179, 4305, 8, 179, 1, 179, 3, 179, 4308, 8, 179, 1, 179, 3, 179, 4311, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4316, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4321, 8, 179, 1, 179, 1, 179, 3, 179, 4325, 8, 179, 1, 179, 3, 179, 4328, 8, 179, 1, 179, 3, 179, 4331, 8, 179, 1, 179, 3, 179, 4334, 8, 179, 1, 179, 3, 179, 4337, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 4343, 8, 180, 10, 180, 12, 180, 4346, 9, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4356, 8, 181, 1, 181, 3, 181, 4359, 8, 181, 1, 181, 3, 181, 4362, 8, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4367, 8, 181, 1, 181, 3, 181, 4370, 8, 181, 1, 181, 1, 181, 3, 181, 4374, 8, 181, 1, 182, 1, 182, 3, 182, 4378, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4384, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4390, 8, 182, 10, 182, 12, 182, 4393, 9, 182, 3, 182, 4395, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4406, 8, 182, 10, 182, 12, 182, 4409, 9, 182, 1, 182, 1, 182, 3, 182, 4413, 8, 182, 3, 182, 4415, 8, 182, 1, 182, 4, 182, 4418, 8, 182, 11, 182, 12, 182, 4419, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4427, 8, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 3, 184, 4434, 8, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 5, 185, 4441, 8, 185, 10, 185, 12, 185, 4444, 9, 185, 1, 186, 1, 186, 1, 186, 5, 186, 4449, 8, 186, 10, 186, 12, 186, 4452, 9, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 4459, 8, 187, 1, 188, 1, 188, 1, 188, 5, 188, 4464, 8, 188, 10, 188, 12, 188, 4467, 9, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4474, 8, 189, 1, 190, 1, 190, 1, 190, 5, 190, 4479, 8, 190, 10, 190, 12, 190, 4482, 9, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4489, 8, 191, 1, 192, 1, 192, 3, 192, 4493, 8, 192, 1, 192, 1, 192, 3, 192, 4497, 8, 192, 3, 192, 4499, 8, 192, 1, 192, 1, 192, 1, 193, 1, 193, 3, 193, 4505, 8, 193, 1, 193, 1, 193, 1, 193, 3, 193, 4510, 8, 193, 1, 194, 1, 194, 3, 194, 4514, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4521, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 4526, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 4531, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4536, 8, 196, 3, 196, 4538, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 4548, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4558, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4574, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 4590, 8, 199, 10, 199, 12, 199, 4593, 9, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4604, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4611, 8, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4626, 8, 202, 1, 202, 4, 202, 4629, 8, 202, 11, 202, 12, 202, 4630, 1, 202, 3, 202, 4634, 8, 202, 1, 203, 1, 203, 1, 203, 3, 203, 4639, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4644, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4649, 8, 203, 1, 203, 3, 203, 4652, 8, 203, 1, 203, 3, 203, 4655, 8, 203, 1, 204, 1, 204, 1, 204, 3, 204, 4660, 8, 204, 1, 204, 1, 204, 1, 204, 5, 204, 4665, 8, 204, 10, 204, 12, 204, 4668, 9, 204, 1, 204, 3, 204, 4671, 8, 204, 1, 205, 1, 205, 1, 205, 3, 205, 4676, 8, 205, 1, 205, 1, 205, 1, 205, 5, 205, 4681, 8, 205, 10, 205, 12, 205, 4684, 9, 205, 1, 205, 3, 205, 4687, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4693, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4702, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 5, 207, 4709, 8, 207, 10, 207, 12, 207, 4712, 9, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 4, 209, 4723, 8, 209, 11, 209, 12, 209, 4724, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4738, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4744, 8, 210, 1, 210, 1, 210, 3, 210, 4748, 8, 210, 3, 210, 4750, 8, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 3, 212, 4757, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4770, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4777, 8, 212, 3, 212, 4779, 8, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 4793, 8, 214, 10, 214, 12, 214, 4796, 9, 214, 1, 214, 3, 214, 4799, 8, 214, 1, 214, 1, 214, 3, 214, 4803, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4808, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4813, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4818, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4823, 8, 214, 1, 214, 3, 214, 4826, 8, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4838, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4891, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4900, 8, 216, 1, 216, 1, 216, 3, 216, 4904, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4913, 8, 216, 1, 216, 1, 216, 3, 216, 4917, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4926, 8, 216, 1, 216, 1, 216, 3, 216, 4930, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4935, 8, 216, 1, 216, 3, 216, 4938, 8, 216, 1, 216, 1, 216, 3, 216, 4942, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4947, 8, 216, 3, 216, 4949, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4958, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4963, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4974, 8, 216, 1, 216, 1, 216, 3, 216, 4978, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4992, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5000, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5038, 8, 216, 3, 216, 5040, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 5059, 8, 217, 1, 217, 3, 217, 5062, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5089, 8, 218, 1, 218, 1, 218, 3, 218, 5093, 8, 218, 1, 218, 1, 218, 3, 218, 5097, 8, 218, 1, 218, 1, 218, 3, 218, 5101, 8, 218, 1, 218, 1, 218, 3, 218, 5105, 8, 218, 1, 218, 3, 218, 5108, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5123, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5130, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 5142, 8, 220, 10, 220, 12, 220, 5145, 9, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5157, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5182, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5201, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5216, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5232, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5239, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 5250, 8, 224, 1, 224, 3, 224, 5253, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5270, 8, 225, 10, 225, 12, 225, 5273, 9, 225, 3, 225, 5275, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 5286, 8, 226, 10, 226, 12, 226, 5289, 9, 226, 1, 226, 3, 226, 5292, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5312, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5322, 8, 227, 10, 227, 12, 227, 5325, 9, 227, 1, 227, 3, 227, 5328, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5350, 8, 227, 1, 228, 1, 228, 3, 228, 5354, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5364, 8, 228, 1, 228, 1, 228, 3, 228, 5368, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5374, 8, 228, 1, 228, 1, 228, 3, 228, 5378, 8, 228, 5, 228, 5380, 8, 228, 10, 228, 12, 228, 5383, 9, 228, 1, 228, 3, 228, 5386, 8, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 5393, 8, 229, 1, 230, 1, 230, 1, 230, 3, 230, 5398, 8, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 3, 233, 5409, 8, 233, 1, 234, 1, 234, 3, 234, 5413, 8, 234, 1, 234, 3, 234, 5416, 8, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5421, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5427, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5438, 8, 234, 1, 234, 1, 234, 3, 234, 5442, 8, 234, 1, 234, 3, 234, 5445, 8, 234, 1, 234, 1, 234, 3, 234, 5449, 8, 234, 1, 234, 1, 234, 3, 234, 5453, 8, 234, 1, 234, 3, 234, 5456, 8, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5466, 8, 236, 1, 236, 3, 236, 5469, 8, 236, 1, 237, 1, 237, 3, 237, 5473, 8, 237, 1, 237, 5, 237, 5476, 8, 237, 10, 237, 12, 237, 5479, 9, 237, 1, 238, 1, 238, 1, 238, 3, 238, 5484, 8, 238, 1, 238, 3, 238, 5487, 8, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5492, 8, 238, 1, 238, 3, 238, 5495, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5502, 8, 238, 3, 238, 5504, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5510, 8, 238, 1, 238, 1, 238, 3, 238, 5514, 8, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5523, 8, 240, 1, 240, 4, 240, 5526, 8, 240, 11, 240, 12, 240, 5527, 3, 240, 5530, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5540, 8, 241, 1, 241, 3, 241, 5543, 8, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5548, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5556, 8, 242, 1, 242, 3, 242, 5559, 8, 242, 1, 242, 4, 242, 5562, 8, 242, 11, 242, 12, 242, 5563, 3, 242, 5566, 8, 242, 3, 242, 5568, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 5574, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5591, 8, 246, 1, 246, 1, 246, 5, 246, 5595, 8, 246, 10, 246, 12, 246, 5598, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5610, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5616, 8, 247, 1, 247, 1, 247, 3, 247, 5620, 8, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5625, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5655, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5670, 8, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5675, 8, 249, 1, 250, 1, 250, 3, 250, 5679, 8, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 3, 251, 5692, 8, 251, 1, 251, 1, 251, 3, 251, 5696, 8, 251, 3, 251, 5698, 8, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 5705, 8, 251, 10, 251, 12, 251, 5708, 9, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5713, 8, 251, 3, 251, 5715, 8, 251, 1, 252, 1, 252, 3, 252, 5719, 8, 252, 1, 252, 3, 252, 5722, 8, 252, 1, 252, 3, 252, 5725, 8, 252, 1, 252, 3, 252, 5728, 8, 252, 1, 252, 3, 252, 5731, 8, 252, 3, 252, 5733, 8, 252, 1, 252, 3, 252, 5736, 8, 252, 1, 253, 1, 253, 3, 253, 5740, 8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 5, 253, 5746, 8, 253, 10, 253, 12, 253, 5749, 9, 253, 1, 253, 1, 253, 3, 253, 5753, 8, 253, 1, 253, 3, 253, 5756, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 3, 255, 5762, 8, 255, 1, 255, 1, 255, 3, 255, 5766, 8, 255, 1, 256, 1, 256, 3, 256, 5770, 8, 256, 1, 256, 1, 256, 1, 256, 3, 256, 5775, 8, 256, 3, 256, 5777, 8, 256, 1, 257, 1, 257, 3, 257, 5781, 8, 257, 1, 258, 1, 258, 3, 258, 5785, 8, 258, 1, 259, 1, 259, 1, 259, 5, 259, 5790, 8, 259, 10, 259, 12, 259, 5793, 9, 259, 1, 260, 1, 260, 1, 260, 3, 260, 5798, 8, 260, 1, 260, 1, 260, 3, 260, 5802, 8, 260, 3, 260, 5804, 8, 260, 3, 260, 5806, 8, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5819, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 5825, 8, 262, 10, 262, 12, 262, 5828, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 3, 263, 5835, 8, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 5, 264, 5844, 8, 264, 10, 264, 12, 264, 5847, 9, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 5855, 8, 265, 1, 266, 1, 266, 1, 266, 3, 266, 5860, 8, 266, 1, 266, 1, 266, 3, 266, 5864, 8, 266, 1, 266, 1, 266, 3, 266, 5868, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 5875, 8, 266, 1, 266, 3, 266, 5878, 8, 266, 3, 266, 5880, 8, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 5888, 8, 268, 1, 268, 1, 268, 3, 268, 5892, 8, 268, 1, 269, 3, 269, 5895, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5902, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5909, 8, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5914, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5921, 8, 269, 1, 269, 3, 269, 5924, 8, 269, 3, 269, 5926, 8, 269, 1, 269, 3, 269, 5929, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5935, 8, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5940, 8, 270, 1, 270, 1, 270, 3, 270, 5944, 8, 270, 1, 271, 1, 271, 1, 271, 5, 271, 5949, 8, 271, 10, 271, 12, 271, 5952, 9, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 3, 274, 5961, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5968, 8, 274, 1, 274, 3, 274, 5971, 8, 274, 1, 274, 3, 274, 5974, 8, 274, 1, 275, 1, 275, 3, 275, 5978, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 5989, 8, 275, 1, 275, 3, 275, 5992, 8, 275, 1, 275, 3, 275, 5995, 8, 275, 1, 275, 3, 275, 5998, 8, 275, 1, 276, 3, 276, 6001, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6008, 8, 276, 1, 276, 3, 276, 6011, 8, 276, 1, 276, 3, 276, 6014, 8, 276, 1, 277, 1, 277, 1, 277, 5, 277, 6019, 8, 277, 10, 277, 12, 277, 6022, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6033, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6040, 8, 278, 3, 278, 6042, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 6047, 8, 279, 1, 279, 1, 279, 1, 279, 5, 279, 6052, 8, 279, 10, 279, 12, 279, 6055, 9, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6060, 8, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 6067, 8, 280, 1, 281, 1, 281, 1, 281, 3, 281, 6072, 8, 281, 1, 281, 1, 281, 1, 282, 3, 282, 6077, 8, 282, 1, 282, 1, 282, 3, 282, 6081, 8, 282, 1, 282, 1, 282, 3, 282, 6085, 8, 282, 1, 282, 1, 282, 3, 282, 6089, 8, 282, 3, 282, 6091, 8, 282, 1, 283, 1, 283, 3, 283, 6095, 8, 283, 1, 284, 1, 284, 3, 284, 6099, 8, 284, 1, 284, 3, 284, 6102, 8, 284, 1, 284, 3, 284, 6105, 8, 284, 3, 284, 6107, 8, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6117, 8, 284, 3, 284, 6119, 8, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6124, 8, 284, 5, 284, 6126, 8, 284, 10, 284, 12, 284, 6129, 9, 284, 1, 285, 1, 285, 3, 285, 6133, 8, 285, 1, 286, 1, 286, 3, 286, 6137, 8, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6142, 8, 286, 10, 286, 12, 286, 6145, 9, 286, 1, 287, 1, 287, 3, 287, 6149, 8, 287, 1, 287, 1, 287, 3, 287, 6153, 8, 287, 1, 287, 3, 287, 6156, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 6162, 8, 287, 1, 287, 3, 287, 6165, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6184, 8, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 3, 290, 6191, 8, 290, 1, 290, 1, 290, 3, 290, 6195, 8, 290, 1, 291, 3, 291, 6198, 8, 291, 1, 291, 1, 291, 3, 291, 6202, 8, 291, 1, 291, 1, 291, 3, 291, 6206, 8, 291, 1, 291, 3, 291, 6209, 8, 291, 1, 291, 3, 291, 6212, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6217, 8, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 5, 293, 6224, 8, 293, 10, 293, 12, 293, 6227, 9, 293, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6233, 8, 294, 1, 294, 1, 294, 3, 294, 6237, 8, 294, 1, 295, 1, 295, 3, 295, 6241, 8, 295, 1, 295, 1, 295, 3, 295, 6245, 8, 295, 1, 295, 3, 295, 6248, 8, 295, 3, 295, 6250, 8, 295, 1, 296, 1, 296, 1, 296, 3, 296, 6255, 8, 296, 1, 296, 1, 296, 3, 296, 6259, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6264, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6270, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6277, 8, 298, 1, 299, 1, 299, 1, 299, 3, 299, 6282, 8, 299, 1, 300, 1, 300, 1, 300, 3, 300, 6287, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 5, 301, 6294, 8, 301, 10, 301, 12, 301, 6297, 9, 301, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6303, 8, 302, 1, 302, 1, 302, 1, 302, 1, 302, 5, 302, 6309, 8, 302, 10, 302, 12, 302, 6312, 9, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6322, 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6327, 8, 303, 1, 303, 1, 303, 3, 303, 6331, 8, 303, 1, 303, 3, 303, 6334, 8, 303, 1, 303, 1, 303, 3, 303, 6338, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6343, 8, 303, 4, 303, 6345, 8, 303, 11, 303, 12, 303, 6346, 1, 303, 1, 303, 1, 303, 3, 303, 6352, 8, 303, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6358, 8, 304, 10, 304, 12, 304, 6361, 9, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 6369, 8, 306, 10, 306, 12, 306, 6372, 9, 306, 1, 307, 1, 307, 3, 307, 6376, 8, 307, 1, 307, 1, 307, 3, 307, 6380, 8, 307, 1, 307, 3, 307, 6383, 8, 307, 1, 307, 3, 307, 6386, 8, 307, 3, 307, 6388, 8, 307, 1, 307, 3, 307, 6391, 8, 307, 1, 307, 3, 307, 6394, 8, 307, 1, 307, 3, 307, 6397, 8, 307, 1, 307, 1, 307, 3, 307, 6401, 8, 307, 1, 307, 1, 307, 3, 307, 6405, 8, 307, 1, 307, 1, 307, 3, 307, 6409, 8, 307, 3, 307, 6411, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6420, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6425, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6431, 8, 307, 1, 307, 1, 307, 3, 307, 6435, 8, 307, 3, 307, 6437, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6444, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6449, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 5, 307, 6455, 8, 307, 10, 307, 12, 307, 6458, 9, 307, 1, 308, 3, 308, 6461, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6468, 8, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6473, 8, 309, 1, 309, 3, 309, 6476, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 6482, 8, 309, 1, 310, 1, 310, 3, 310, 6486, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6492, 8, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6501, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6507, 8, 312, 3, 312, 6509, 8, 312, 1, 313, 1, 313, 1, 313, 3, 313, 6514, 8, 313, 1, 313, 3, 313, 6517, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6526, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6533, 8, 313, 3, 313, 6535, 8, 313, 1, 314, 1, 314, 1, 314, 5, 314, 6540, 8, 314, 10, 314, 12, 314, 6543, 9, 314, 1, 315, 1, 315, 3, 315, 6547, 8, 315, 1, 315, 3, 315, 6550, 8, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 3, 316, 6560, 8, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 5, 317, 6569, 8, 317, 10, 317, 12, 317, 6572, 9, 317, 1, 317, 1, 317, 3, 317, 6576, 8, 317, 1, 317, 1, 317, 3, 317, 6580, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 6588, 8, 318, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 6598, 8, 320, 1, 321, 1, 321, 1, 321, 5, 321, 6603, 8, 321, 10, 321, 12, 321, 6606, 9, 321, 1, 322, 1, 322, 1, 322, 3, 322, 6611, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6620, 8, 323, 10, 323, 12, 323, 6623, 9, 323, 1, 323, 1, 323, 1, 323, 3, 323, 6628, 8, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6636, 8, 323, 10, 323, 12, 323, 6639, 9, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 3, 324, 6647, 8, 324, 1, 324, 1, 324, 3, 324, 6651, 8, 324, 1, 324, 4, 324, 6654, 8, 324, 11, 324, 12, 324, 6655, 3, 324, 6658, 8, 324, 1, 324, 1, 324, 3, 324, 6662, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 6670, 8, 325, 1, 326, 3, 326, 6673, 8, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6678, 8, 326, 1, 326, 5, 326, 6681, 8, 326, 10, 326, 12, 326, 6684, 9, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6690, 8, 326, 3, 326, 6692, 8, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6698, 8, 326, 1, 327, 1, 327, 3, 327, 6702, 8, 327, 1, 327, 3, 327, 6705, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6710, 8, 327, 1, 327, 3, 327, 6713, 8, 327, 3, 327, 6715, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 6721, 8, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6730, 8, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6736, 8, 329, 1, 329, 3, 329, 6739, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 3, 331, 6747, 8, 331, 1, 331, 3, 331, 6750, 8, 331, 1, 332, 1, 332, 3, 332, 6754, 8, 332, 1, 332, 1, 332, 1, 332, 1, 332, 3, 332, 6760, 8, 332, 3, 332, 6762, 8, 332, 1, 332, 3, 332, 6765, 8, 332, 1, 333, 1, 333, 3, 333, 6769, 8, 333, 1, 333, 1, 333, 1, 333, 3, 333, 6774, 8, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6781, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6788, 8, 334, 3, 334, 6790, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6796, 8, 334, 3, 334, 6798, 8, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6803, 8, 334, 3, 334, 6805, 8, 334, 1, 335, 1, 335, 3, 335, 6809, 8, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 3, 338, 6818, 8, 338, 1, 338, 1, 338, 3, 338, 6822, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 5, 338, 6830, 8, 338, 10, 338, 12, 338, 6833, 9, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6846, 8, 339, 1, 339, 3, 339, 6849, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6857, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 5, 339, 6864, 8, 339, 10, 339, 12, 339, 6867, 9, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6872, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6877, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6885, 8, 339, 3, 339, 6887, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6892, 8, 339, 1, 339, 1, 339, 3, 339, 6896, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6901, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6906, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6912, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 5, 340, 6928, 8, 340, 10, 340, 12, 340, 6931, 9, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6939, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6954, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6959, 8, 341, 1, 341, 3, 341, 6962, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6968, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6973, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6986, 8, 341, 1, 341, 4, 341, 6989, 8, 341, 11, 341, 12, 341, 6990, 1, 341, 1, 341, 3, 341, 6995, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7002, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7021, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7033, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7038, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7046, 8, 341, 5, 341, 7048, 8, 341, 10, 341, 12, 341, 7051, 9, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7059, 8, 342, 1, 342, 3, 342, 7062, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7067, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7072, 8, 342, 1, 342, 1, 342, 3, 342, 7076, 8, 342, 1, 342, 3, 342, 7079, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7088, 8, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7096, 8, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7101, 8, 343, 3, 343, 7103, 8, 343, 1, 343, 3, 343, 7106, 8, 343, 1, 344, 1, 344, 3, 344, 7110, 8, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7121, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7142, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7150, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7163, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7173, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7179, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7185, 8, 345, 1, 345, 3, 345, 7188, 8, 345, 1, 345, 3, 345, 7191, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7217, 8, 345, 3, 345, 7219, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7240, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7250, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7263, 8, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7268, 8, 345, 1, 345, 1, 345, 3, 345, 7272, 8, 345, 3, 345, 7274, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7286, 8, 345, 1, 346, 1, 346, 1, 346, 5, 346, 7291, 8, 346, 10, 346, 12, 346, 7294, 9, 346, 1, 347, 1, 347, 1, 347, 3, 347, 7299, 8, 347, 1, 348, 1, 348, 1, 349, 1, 349, 3, 349, 7305, 8, 349, 1, 349, 1, 349, 3, 349, 7309, 8, 349, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 5, 351, 7318, 8, 351, 10, 351, 12, 351, 7321, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7330, 8, 353, 1, 354, 1, 354, 3, 354, 7334, 8, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7339, 8, 354, 1, 354, 3, 354, 7342, 8, 354, 1, 354, 3, 354, 7345, 8, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7354, 8, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7365, 8, 355, 3, 355, 7367, 8, 355, 1, 356, 1, 356, 3, 356, 7371, 8, 356, 1, 356, 1, 356, 1, 356, 3, 356, 7376, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 7385, 8, 357, 1, 358, 1, 358, 1, 358, 3, 358, 7390, 8, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 7398, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7408, 8, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7416, 8, 363, 1, 364, 1, 364, 3, 364, 7420, 8, 364, 1, 364, 3, 364, 7423, 8, 364, 1, 365, 1, 365, 1, 365, 5, 365, 7428, 8, 365, 10, 365, 12, 365, 7431, 9, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7438, 8, 366, 1, 367, 1, 367, 3, 367, 7442, 8, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7447, 8, 368, 10, 368, 12, 368, 7450, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 3, 369, 7457, 8, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7464, 8, 370, 10, 370, 12, 370, 7467, 9, 370, 3, 370, 7469, 8, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 3, 371, 7481, 8, 371, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7490, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7497, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7506, 8, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 3, 375, 7516, 8, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7521, 8, 375, 1, 375, 1, 375, 3, 375, 7525, 8, 375, 3, 375, 7527, 8, 375, 1, 375, 3, 375, 7530, 8, 375, 1, 376, 4, 376, 7533, 8, 376, 11, 376, 12, 376, 7534, 1, 377, 5, 377, 7538, 8, 377, 10, 377, 12, 377, 7541, 9, 377, 1, 378, 1, 378, 1, 378, 5, 378, 7546, 8, 378, 10, 378, 12, 378, 7549, 9, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 3, 379, 7556, 8, 379, 1, 379, 3, 379, 7559, 8, 379, 1, 380, 1, 380, 1, 380, 5, 380, 7564, 8, 380, 10, 380, 12, 380, 7567, 9, 380, 1, 381, 1, 381, 1, 381, 5, 381, 7572, 8, 381, 10, 381, 12, 381, 7575, 9, 381, 1, 382, 1, 382, 1, 382, 5, 382, 7580, 8, 382, 10, 382, 12, 382, 7583, 9, 382, 1, 383, 1, 383, 1, 383, 5, 383, 7588, 8, 383, 10, 383, 12, 383, 7591, 9, 383, 1, 384, 1, 384, 1, 385, 1, 385, 1, 386, 1, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 389, 1, 389, 1, 390, 1, 390, 3, 390, 7607, 8, 390, 1, 391, 1, 391, 1, 391, 5, 391, 7612, 8, 391, 10, 391, 12, 391, 7615, 9, 391, 1, 392, 1, 392, 1, 392, 5, 392, 7620, 8, 392, 10, 392, 12, 392, 7623, 9, 392, 1, 393, 1, 393, 1, 394, 1, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7639, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 7645, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7651, 8, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7659, 8, 402, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7665, 8, 403, 1, 404, 1, 404, 1, 404, 3, 404, 7670, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 5, 405, 7676, 8, 405, 10, 405, 12, 405, 7679, 9, 405, 1, 405, 1, 405, 3, 405, 7683, 8, 405, 1, 406, 3, 406, 7686, 8, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7695, 8, 407, 1, 408, 1, 408, 1, 408, 5, 408, 7700, 8, 408, 10, 408, 12, 408, 7703, 9, 408, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 7709, 8, 409, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 7715, 8, 410, 1, 411, 1, 411, 1, 411, 1, 411, 3, 411, 7721, 8, 411, 1, 412, 1, 412, 1, 412, 3, 412, 7726, 8, 412, 1, 413, 1, 413, 1, 413, 3, 413, 7731, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7739, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 7794, 8, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 3, 418, 7801, 8, 418, 1, 418, 1, 418, 1, 418, 1, 418, 4, 418, 7807, 8, 418, 11, 418, 12, 418, 7808, 3, 418, 7811, 8, 418, 3, 418, 7813, 8, 418, 1, 418, 1, 418, 5, 418, 7817, 8, 418, 10, 418, 12, 418, 7820, 9, 418, 1, 418, 3, 418, 7823, 8, 418, 1, 418, 1, 418, 3, 418, 7827, 8, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 3, 420, 7838, 8, 420, 1, 420, 3, 420, 7841, 8, 420, 1, 420, 1, 420, 3, 420, 7845, 8, 420, 1, 420, 1, 420, 3, 420, 7849, 8, 420, 1, 420, 1, 420, 3, 420, 7853, 8, 420, 1, 420, 3, 420, 7856, 8, 420, 1, 420, 3, 420, 7859, 8, 420, 1, 420, 3, 420, 7862, 8, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 5, 420, 7869, 8, 420, 10, 420, 12, 420, 7872, 9, 420, 1, 420, 1, 420, 3, 420, 7876, 8, 420, 1, 420, 1, 420, 3, 420, 7880, 8, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 3, 423, 7913, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7923, 8, 425, 1, 425, 1, 425, 3, 425, 7927, 8, 425, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7933, 8, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7938, 8, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 3, 427, 7947, 8, 427, 1, 427, 1, 427, 1, 427, 1, 427, 5, 427, 7953, 8, 427, 10, 427, 12, 427, 7956, 9, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 3, 429, 7966, 8, 429, 1, 429, 1, 429, 1, 429, 1, 429, 5, 429, 7972, 8, 429, 10, 429, 12, 429, 7975, 9, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7981, 8, 430, 10, 430, 12, 430, 7984, 9, 430, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7990, 8, 430, 10, 430, 12, 430, 7993, 9, 430, 5, 430, 7995, 8, 430, 10, 430, 12, 430, 7998, 9, 430, 1, 430, 3, 430, 8001, 8, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 5, 431, 8009, 8, 431, 10, 431, 12, 431, 8012, 9, 431, 1, 432, 1, 432, 3, 432, 8016, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 5, 432, 8022, 8, 432, 10, 432, 12, 432, 8025, 9, 432, 4, 432, 8027, 8, 432, 11, 432, 12, 432, 8028, 1, 432, 3, 432, 8032, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 3, 433, 8039, 8, 433, 1, 433, 1, 433, 1, 433, 1, 433, 3, 433, 8045, 8, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8053, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8061, 8, 434, 1, 434, 3, 434, 8064, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8071, 8, 434, 3, 434, 8073, 8, 434, 1, 435, 3, 435, 8076, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8082, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 3, 436, 8091, 8, 436, 1, 436, 1, 436, 3, 436, 8095, 8, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 3, 437, 8109, 8, 437, 1, 437, 3, 437, 8112, 8, 437, 3, 437, 8114, 8, 437, 1, 437, 1, 437, 1, 438, 1, 438, 3, 438, 8120, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 4, 438, 8128, 8, 438, 11, 438, 12, 438, 8129, 3, 438, 8132, 8, 438, 3, 438, 8134, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 5, 438, 8140, 8, 438, 10, 438, 12, 438, 8143, 9, 438, 3, 438, 8145, 8, 438, 1, 438, 3, 438, 8148, 8, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 3, 440, 8158, 8, 440, 1, 440, 1, 440, 1, 441, 1, 441, 5, 441, 8164, 8, 441, 10, 441, 12, 441, 8167, 9, 441, 1, 441, 1, 441, 1, 441, 3, 441, 8172, 8, 441, 1, 441, 1, 441, 1, 442, 1, 442, 3, 442, 8178, 8, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 3, 443, 8185, 8, 443, 1, 443, 1, 443, 3, 443, 8189, 8, 443, 1, 443, 1, 443, 3, 443, 8193, 8, 443, 1, 443, 3, 443, 8196, 8, 443, 1, 443, 3, 443, 8199, 8, 443, 1, 443, 1, 443, 1, 444, 1, 444, 3, 444, 8205, 8, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 3, 445, 8212, 8, 445, 1, 445, 3, 445, 8215, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 8223, 8, 445, 3, 445, 8225, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 5, 445, 8232, 8, 445, 10, 445, 12, 445, 8235, 9, 445, 1, 445, 1, 445, 3, 445, 8239, 8, 445, 3, 445, 8241, 8, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 3, 446, 8248, 8, 446, 1, 446, 1, 446, 1, 447, 1, 447, 3, 447, 8254, 8, 447, 1, 447, 3, 447, 8257, 8, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8269, 8, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8276, 8, 448, 3, 448, 8278, 8, 448, 1, 449, 1, 449, 3, 449, 8282, 8, 449, 1, 449, 1, 449, 1, 449, 1, 450, 3, 450, 8288, 8, 450, 1, 450, 1, 450, 1, 450, 3, 450, 8293, 8, 450, 1, 450, 1, 450, 3, 450, 8297, 8, 450, 1, 450, 3, 450, 8300, 8, 450, 1, 450, 3, 450, 8303, 8, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 4, 450, 8310, 8, 450, 11, 450, 12, 450, 8311, 1, 451, 3, 451, 8315, 8, 451, 1, 451, 1, 451, 3, 451, 8319, 8, 451, 1, 451, 1, 451, 3, 451, 8323, 8, 451, 3, 451, 8325, 8, 451, 1, 451, 3, 451, 8328, 8, 451, 1, 451, 3, 451, 8331, 8, 451, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8337, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8344, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8351, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8357, 8, 452, 3, 452, 8359, 8, 452, 1, 453, 1, 453, 3, 453, 8363, 8, 453, 1, 453, 1, 453, 1, 453, 3, 453, 8368, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 5, 454, 8384, 8, 454, 10, 454, 12, 454, 8387, 9, 454, 1, 454, 1, 454, 4, 454, 8391, 8, 454, 11, 454, 12, 454, 8392, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 5, 455, 8400, 8, 455, 10, 455, 12, 455, 8403, 9, 455, 1, 455, 1, 455, 1, 455, 1, 455, 3, 455, 8409, 8, 455, 1, 456, 1, 456, 3, 456, 8413, 8, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 3, 459, 8425, 8, 459, 1, 459, 3, 459, 8428, 8, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 3, 460, 8441, 8, 460, 1, 460, 3, 460, 8444, 8, 460, 1, 461, 1, 461, 3, 461, 8448, 8, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 5, 462, 8455, 8, 462, 10, 462, 12, 462, 8458, 9, 462, 1, 462, 1, 462, 5, 462, 8462, 8, 462, 10, 462, 12, 462, 8465, 9, 462, 4, 462, 8467, 8, 462, 11, 462, 12, 462, 8468, 1, 463, 1, 463, 1, 463, 3, 463, 8474, 8, 463, 1, 464, 1, 464, 3, 464, 8478, 8, 464, 1, 465, 1, 465, 1, 466, 3, 466, 8483, 8, 466, 1, 466, 3, 466, 8486, 8, 466, 1, 466, 3, 466, 8489, 8, 466, 1, 466, 3, 466, 8492, 8, 466, 1, 466, 3, 466, 8495, 8, 466, 1, 466, 1, 466, 3, 466, 8499, 8, 466, 1, 466, 3, 466, 8502, 8, 466, 1, 466, 0, 3, 676, 680, 682, 467, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 0, 119, 2, 0, 195, 195, 364, 364, 2, 0, 66, 66, 318, 318, 2, 0, 99, 99, 318, 318, 2, 0, 134, 134, 318, 318, 1, 0, 529, 531, 2, 0, 10, 10, 94, 94, 2, 0, 133, 133, 191, 191, 2, 0, 254, 254, 332, 332, 2, 0, 162, 162, 363, 363, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 288, 288, 329, 329, 352, 352, 354, 354, 2, 0, 109, 109, 532, 532, 2, 0, 158, 158, 277, 277, 2, 0, 367, 367, 439, 439, 2, 0, 139, 139, 312, 312, 2, 0, 191, 191, 333, 333, 2, 0, 313, 313, 333, 333, 2, 0, 150, 150, 315, 315, 2, 0, 64, 64, 94, 94, 4, 0, 78, 78, 183, 183, 197, 197, 298, 298, 2, 0, 213, 213, 254, 254, 2, 0, 352, 352, 354, 354, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 342, 342, 345, 345, 438, 438, 3, 0, 113, 113, 284, 284, 336, 336, 2, 0, 53, 53, 78, 78, 2, 0, 105, 105, 379, 379, 2, 0, 260, 260, 262, 262, 3, 0, 173, 173, 260, 260, 262, 262, 1, 0, 12, 13, 2, 0, 64, 64, 375, 375, 2, 0, 156, 156, 206, 206, 2, 0, 189, 189, 360, 360, 2, 0, 215, 215, 373, 373, 3, 0, 133, 133, 191, 191, 333, 333, 5, 0, 30, 30, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 9, 9, 94, 94, 2, 0, 92, 92, 226, 226, 1, 0, 448, 449, 2, 0, 92, 92, 414, 414, 2, 0, 341, 341, 414, 414, 4, 0, 163, 163, 185, 185, 283, 283, 353, 353, 2, 0, 135, 135, 145, 145, 2, 0, 211, 211, 278, 278, 3, 0, 321, 321, 357, 357, 445, 445, 3, 0, 66, 66, 99, 99, 318, 318, 5, 0, 108, 108, 168, 168, 226, 226, 328, 328, 342, 342, 2, 0, 167, 167, 314, 314, 2, 0, 61, 61, 265, 265, 4, 0, 207, 207, 249, 249, 268, 268, 293, 293, 2, 0, 130, 130, 307, 307, 2, 0, 64, 64, 68, 68, 10, 0, 46, 46, 88, 88, 182, 182, 202, 202, 241, 241, 352, 352, 354, 354, 357, 358, 369, 369, 521, 523, 5, 0, 212, 212, 329, 329, 350, 350, 455, 455, 457, 457, 5, 0, 212, 212, 329, 329, 350, 350, 361, 361, 455, 456, 2, 0, 37, 37, 55, 55, 2, 0, 207, 207, 249, 249, 2, 0, 10, 10, 53, 53, 2, 0, 181, 181, 243, 243, 2, 0, 170, 170, 320, 320, 2, 0, 141, 141, 223, 223, 5, 0, 108, 108, 168, 168, 189, 189, 342, 342, 360, 360, 2, 0, 226, 226, 328, 328, 2, 0, 163, 163, 185, 185, 2, 0, 186, 186, 193, 193, 4, 0, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 137, 137, 242, 242, 2, 0, 161, 161, 319, 319, 4, 0, 129, 129, 161, 161, 319, 319, 454, 454, 2, 0, 356, 356, 380, 380, 2, 0, 81, 81, 382, 382, 2, 0, 151, 151, 254, 254, 2, 0, 133, 133, 138, 138, 1, 0, 31, 32, 2, 0, 128, 128, 547, 547, 2, 0, 60, 60, 96, 96, 2, 0, 99, 99, 349, 349, 2, 0, 131, 131, 414, 414, 2, 0, 201, 201, 334, 334, 3, 0, 59, 59, 70, 70, 97, 97, 2, 0, 30, 30, 56, 56, 1, 0, 527, 528, 2, 0, 207, 207, 268, 268, 2, 0, 320, 320, 414, 414, 2, 0, 571, 571, 573, 573, 1, 0, 468, 469, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 360, 360, 477, 477, 2, 0, 394, 395, 409, 409, 2, 0, 391, 392, 406, 406, 1, 0, 391, 392, 1, 0, 418, 419, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 3, 0, 9, 9, 14, 14, 27, 27, 2, 0, 98, 98, 396, 396, 2, 0, 50, 51, 75, 76, 2, 0, 41, 41, 420, 420, 3, 0, 39, 39, 73, 73, 95, 95, 4, 0, 393, 393, 399, 399, 404, 404, 425, 425, 2, 0, 292, 292, 347, 347, 2, 0, 166, 166, 188, 188, 2, 0, 304, 304, 450, 450, 3, 0, 299, 299, 320, 320, 481, 481, 2, 0, 208, 208, 289, 289, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 114, 114, 120, 120, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 10, 0, 124, 124, 129, 228, 238, 386, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 478, 488, 547, 548, 3, 0, 106, 123, 125, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 434, 434, 501, 501, 2, 0, 167, 167, 507, 507, 1, 0, 512, 517, 2, 0, 144, 144, 210, 210, 36, 0, 33, 33, 35, 35, 43, 43, 45, 45, 53, 53, 57, 57, 61, 61, 116, 116, 123, 123, 130, 130, 144, 144, 153, 153, 157, 157, 161, 161, 167, 167, 172, 172, 207, 207, 210, 210, 241, 241, 249, 249, 265, 265, 268, 269, 279, 279, 293, 293, 307, 307, 313, 313, 319, 319, 323, 324, 333, 333, 360, 360, 433, 434, 477, 477, 490, 502, 504, 504, 506, 518, 520, 520, 9941, 0, 937, 1, 0, 0, 0, 2, 942, 1, 0, 0, 0, 4, 1066, 1, 0, 0, 0, 6, 1068, 1, 0, 0, 0, 8, 1071, 1, 0, 0, 0, 10, 1121, 1, 0, 0, 0, 12, 1131, 1, 0, 0, 0, 14, 1133, 1, 0, 0, 0, 16, 1145, 1, 0, 0, 0, 18, 1157, 1, 0, 0, 0, 20, 1168, 1, 0, 0, 0, 22, 1202, 1, 0, 0, 0, 24, 1246, 1, 0, 0, 0, 26, 1248, 1, 0, 0, 0, 28, 1260, 1, 0, 0, 0, 30, 1267, 1, 0, 0, 0, 32, 1286, 1, 0, 0, 0, 34, 1294, 1, 0, 0, 0, 36, 1296, 1, 0, 0, 0, 38, 1310, 1, 0, 0, 0, 40, 1314, 1, 0, 0, 0, 42, 1351, 1, 0, 0, 0, 44, 1353, 1, 0, 0, 0, 46, 1361, 1, 0, 0, 0, 48, 1371, 1, 0, 0, 0, 50, 1378, 1, 0, 0, 0, 52, 1386, 1, 0, 0, 0, 54, 1392, 1, 0, 0, 0, 56, 1408, 1, 0, 0, 0, 58, 1412, 1, 0, 0, 0, 60, 1414, 1, 0, 0, 0, 62, 1426, 1, 0, 0, 0, 64, 1431, 1, 0, 0, 0, 66, 1436, 1, 0, 0, 0, 68, 1438, 1, 0, 0, 0, 70, 1450, 1, 0, 0, 0, 72, 1458, 1, 0, 0, 0, 74, 1460, 1, 0, 0, 0, 76, 1584, 1, 0, 0, 0, 78, 1586, 1, 0, 0, 0, 80, 1603, 1, 0, 0, 0, 82, 1605, 1, 0, 0, 0, 84, 1619, 1, 0, 0, 0, 86, 1621, 1, 0, 0, 0, 88, 1635, 1, 0, 0, 0, 90, 1637, 1, 0, 0, 0, 92, 1874, 1, 0, 0, 0, 94, 1881, 1, 0, 0, 0, 96, 1883, 1, 0, 0, 0, 98, 1885, 1, 0, 0, 0, 100, 1888, 1, 0, 0, 0, 102, 1899, 1, 0, 0, 0, 104, 1902, 1, 0, 0, 0, 106, 1938, 1, 0, 0, 0, 108, 1940, 1, 0, 0, 0, 110, 1981, 1, 0, 0, 0, 112, 1983, 1, 0, 0, 0, 114, 2037, 1, 0, 0, 0, 116, 2078, 1, 0, 0, 0, 118, 2080, 1, 0, 0, 0, 120, 2097, 1, 0, 0, 0, 122, 2178, 1, 0, 0, 0, 124, 2180, 1, 0, 0, 0, 126, 2191, 1, 0, 0, 0, 128, 2214, 1, 0, 0, 0, 130, 2232, 1, 0, 0, 0, 132, 2234, 1, 0, 0, 0, 134, 2269, 1, 0, 0, 0, 136, 2362, 1, 0, 0, 0, 138, 2367, 1, 0, 0, 0, 140, 2369, 1, 0, 0, 0, 142, 2467, 1, 0, 0, 0, 144, 2469, 1, 0, 0, 0, 146, 2473, 1, 0, 0, 0, 148, 2484, 1, 0, 0, 0, 150, 2492, 1, 0, 0, 0, 152, 2495, 1, 0, 0, 0, 154, 2498, 1, 0, 0, 0, 156, 2516, 1, 0, 0, 0, 158, 2518, 1, 0, 0, 0, 160, 2522, 1, 0, 0, 0, 162, 2535, 1, 0, 0, 0, 164, 2537, 1, 0, 0, 0, 166, 2542, 1, 0, 0, 0, 168, 2562, 1, 0, 0, 0, 170, 2570, 1, 0, 0, 0, 172, 2577, 1, 0, 0, 0, 174, 2579, 1, 0, 0, 0, 176, 2588, 1, 0, 0, 0, 178, 2591, 1, 0, 0, 0, 180, 2595, 1, 0, 0, 0, 182, 2599, 1, 0, 0, 0, 184, 2624, 1, 0, 0, 0, 186, 2634, 1, 0, 0, 0, 188, 2648, 1, 0, 0, 0, 190, 2664, 1, 0, 0, 0, 192, 2670, 1, 0, 0, 0, 194, 2697, 1, 0, 0, 0, 196, 2707, 1, 0, 0, 0, 198, 2723, 1, 0, 0, 0, 200, 2767, 1, 0, 0, 0, 202, 2774, 1, 0, 0, 0, 204, 2776, 1, 0, 0, 0, 206, 2802, 1, 0, 0, 0, 208, 2813, 1, 0, 0, 0, 210, 2832, 1, 0, 0, 0, 212, 2843, 1, 0, 0, 0, 214, 2881, 1, 0, 0, 0, 216, 2902, 1, 0, 0, 0, 218, 2904, 1, 0, 0, 0, 220, 2924, 1, 0, 0, 0, 222, 2936, 1, 0, 0, 0, 224, 2948, 1, 0, 0, 0, 226, 2951, 1, 0, 0, 0, 228, 2954, 1, 0, 0, 0, 230, 2974, 1, 0, 0, 0, 232, 2979, 1, 0, 0, 0, 234, 3028, 1, 0, 0, 0, 236, 3030, 1, 0, 0, 0, 238, 3053, 1, 0, 0, 0, 240, 3069, 1, 0, 0, 0, 242, 3081, 1, 0, 0, 0, 244, 3108, 1, 0, 0, 0, 246, 3123, 1, 0, 0, 0, 248, 3186, 1, 0, 0, 0, 250, 3188, 1, 0, 0, 0, 252, 3193, 1, 0, 0, 0, 254, 3199, 1, 0, 0, 0, 256, 3286, 1, 0, 0, 0, 258, 3292, 1, 0, 0, 0, 260, 3294, 1, 0, 0, 0, 262, 3310, 1, 0, 0, 0, 264, 3312, 1, 0, 0, 0, 266, 3321, 1, 0, 0, 0, 268, 3325, 1, 0, 0, 0, 270, 3338, 1, 0, 0, 0, 272, 3350, 1, 0, 0, 0, 274, 3352, 1, 0, 0, 0, 276, 3374, 1, 0, 0, 0, 278, 3386, 1, 0, 0, 0, 280, 3397, 1, 0, 0, 0, 282, 3488, 1, 0, 0, 0, 284, 3490, 1, 0, 0, 0, 286, 3501, 1, 0, 0, 0, 288, 3512, 1, 0, 0, 0, 290, 3514, 1, 0, 0, 0, 292, 3540, 1, 0, 0, 0, 294, 3542, 1, 0, 0, 0, 296, 3546, 1, 0, 0, 0, 298, 3596, 1, 0, 0, 0, 300, 3598, 1, 0, 0, 0, 302, 3604, 1, 0, 0, 0, 304, 3629, 1, 0, 0, 0, 306, 3633, 1, 0, 0, 0, 308, 3847, 1, 0, 0, 0, 310, 3865, 1, 0, 0, 0, 312, 3891, 1, 0, 0, 0, 314, 3893, 1, 0, 0, 0, 316, 3901, 1, 0, 0, 0, 318, 3907, 1, 0, 0, 0, 320, 3911, 1, 0, 0, 0, 322, 3931, 1, 0, 0, 0, 324, 3937, 1, 0, 0, 0, 326, 4004, 1, 0, 0, 0, 328, 4035, 1, 0, 0, 0, 330, 4081, 1, 0, 0, 0, 332, 4083, 1, 0, 0, 0, 334, 4085, 1, 0, 0, 0, 336, 4096, 1, 0, 0, 0, 338, 4133, 1, 0, 0, 0, 340, 4135, 1, 0, 0, 0, 342, 4141, 1, 0, 0, 0, 344, 4191, 1, 0, 0, 0, 346, 4194, 1, 0, 0, 0, 348, 4208, 1, 0, 0, 0, 350, 4229, 1, 0, 0, 0, 352, 4253, 1, 0, 0, 0, 354, 4294, 1, 0, 0, 0, 356, 4296, 1, 0, 0, 0, 358, 4298, 1, 0, 0, 0, 360, 4338, 1, 0, 0, 0, 362, 4355, 1, 0, 0, 0, 364, 4375, 1, 0, 0, 0, 366, 4428, 1, 0, 0, 0, 368, 4431, 1, 0, 0, 0, 370, 4437, 1, 0, 0, 0, 372, 4445, 1, 0, 0, 0, 374, 4458, 1, 0, 0, 0, 376, 4460, 1, 0, 0, 0, 378, 4473, 1, 0, 0, 0, 380, 4475, 1, 0, 0, 0, 382, 4488, 1, 0, 0, 0, 384, 4498, 1, 0, 0, 0, 386, 4509, 1, 0, 0, 0, 388, 4520, 1, 0, 0, 0, 390, 4522, 1, 0, 0, 0, 392, 4527, 1, 0, 0, 0, 394, 4541, 1, 0, 0, 0, 396, 4573, 1, 0, 0, 0, 398, 4610, 1, 0, 0, 0, 400, 4612, 1, 0, 0, 0, 402, 4615, 1, 0, 0, 0, 404, 4618, 1, 0, 0, 0, 406, 4635, 1, 0, 0, 0, 408, 4656, 1, 0, 0, 0, 410, 4672, 1, 0, 0, 0, 412, 4688, 1, 0, 0, 0, 414, 4710, 1, 0, 0, 0, 416, 4715, 1, 0, 0, 0, 418, 4718, 1, 0, 0, 0, 420, 4726, 1, 0, 0, 0, 422, 4751, 1, 0, 0, 0, 424, 4754, 1, 0, 0, 0, 426, 4782, 1, 0, 0, 0, 428, 4787, 1, 0, 0, 0, 430, 4827, 1, 0, 0, 0, 432, 5039, 1, 0, 0, 0, 434, 5041, 1, 0, 0, 0, 436, 5129, 1, 0, 0, 0, 438, 5131, 1, 0, 0, 0, 440, 5137, 1, 0, 0, 0, 442, 5148, 1, 0, 0, 0, 444, 5158, 1, 0, 0, 0, 446, 5238, 1, 0, 0, 0, 448, 5240, 1, 0, 0, 0, 450, 5254, 1, 0, 0, 0, 452, 5276, 1, 0, 0, 0, 454, 5349, 1, 0, 0, 0, 456, 5351, 1, 0, 0, 0, 458, 5392, 1, 0, 0, 0, 460, 5394, 1, 0, 0, 0, 462, 5399, 1, 0, 0, 0, 464, 5402, 1, 0, 0, 0, 466, 5405, 1, 0, 0, 0, 468, 5455, 1, 0, 0, 0, 470, 5457, 1, 0, 0, 0, 472, 5468, 1, 0, 0, 0, 474, 5470, 1, 0, 0, 0, 476, 5480, 1, 0, 0, 0, 478, 5515, 1, 0, 0, 0, 480, 5518, 1, 0, 0, 0, 482, 5539, 1, 0, 0, 0, 484, 5549, 1, 0, 0, 0, 486, 5569, 1, 0, 0, 0, 488, 5575, 1, 0, 0, 0, 490, 5581, 1, 0, 0, 0, 492, 5586, 1, 0, 0, 0, 494, 5599, 1, 0, 0, 0, 496, 5626, 1, 0, 0, 0, 498, 5674, 1, 0, 0, 0, 500, 5676, 1, 0, 0, 0, 502, 5714, 1, 0, 0, 0, 504, 5716, 1, 0, 0, 0, 506, 5737, 1, 0, 0, 0, 508, 5757, 1, 0, 0, 0, 510, 5761, 1, 0, 0, 0, 512, 5776, 1, 0, 0, 0, 514, 5778, 1, 0, 0, 0, 516, 5782, 1, 0, 0, 0, 518, 5786, 1, 0, 0, 0, 520, 5794, 1, 0, 0, 0, 522, 5818, 1, 0, 0, 0, 524, 5820, 1, 0, 0, 0, 526, 5831, 1, 0, 0, 0, 528, 5839, 1, 0, 0, 0, 530, 5854, 1, 0, 0, 0, 532, 5879, 1, 0, 0, 0, 534, 5881, 1, 0, 0, 0, 536, 5885, 1, 0, 0, 0, 538, 5894, 1, 0, 0, 0, 540, 5934, 1, 0, 0, 0, 542, 5945, 1, 0, 0, 0, 544, 5953, 1, 0, 0, 0, 546, 5956, 1, 0, 0, 0, 548, 5960, 1, 0, 0, 0, 550, 5975, 1, 0, 0, 0, 552, 6000, 1, 0, 0, 0, 554, 6015, 1, 0, 0, 0, 556, 6041, 1, 0, 0, 0, 558, 6043, 1, 0, 0, 0, 560, 6066, 1, 0, 0, 0, 562, 6068, 1, 0, 0, 0, 564, 6076, 1, 0, 0, 0, 566, 6094, 1, 0, 0, 0, 568, 6118, 1, 0, 0, 0, 570, 6130, 1, 0, 0, 0, 572, 6134, 1, 0, 0, 0, 574, 6146, 1, 0, 0, 0, 576, 6166, 1, 0, 0, 0, 578, 6174, 1, 0, 0, 0, 580, 6188, 1, 0, 0, 0, 582, 6211, 1, 0, 0, 0, 584, 6213, 1, 0, 0, 0, 586, 6218, 1, 0, 0, 0, 588, 6228, 1, 0, 0, 0, 590, 6249, 1, 0, 0, 0, 592, 6251, 1, 0, 0, 0, 594, 6260, 1, 0, 0, 0, 596, 6271, 1, 0, 0, 0, 598, 6281, 1, 0, 0, 0, 600, 6283, 1, 0, 0, 0, 602, 6290, 1, 0, 0, 0, 604, 6321, 1, 0, 0, 0, 606, 6351, 1, 0, 0, 0, 608, 6353, 1, 0, 0, 0, 610, 6362, 1, 0, 0, 0, 612, 6365, 1, 0, 0, 0, 614, 6436, 1, 0, 0, 0, 616, 6460, 1, 0, 0, 0, 618, 6481, 1, 0, 0, 0, 620, 6483, 1, 0, 0, 0, 622, 6491, 1, 0, 0, 0, 624, 6508, 1, 0, 0, 0, 626, 6534, 1, 0, 0, 0, 628, 6536, 1, 0, 0, 0, 630, 6544, 1, 0, 0, 0, 632, 6551, 1, 0, 0, 0, 634, 6575, 1, 0, 0, 0, 636, 6581, 1, 0, 0, 0, 638, 6589, 1, 0, 0, 0, 640, 6592, 1, 0, 0, 0, 642, 6599, 1, 0, 0, 0, 644, 6607, 1, 0, 0, 0, 646, 6612, 1, 0, 0, 0, 648, 6642, 1, 0, 0, 0, 650, 6669, 1, 0, 0, 0, 652, 6697, 1, 0, 0, 0, 654, 6714, 1, 0, 0, 0, 656, 6720, 1, 0, 0, 0, 658, 6738, 1, 0, 0, 0, 660, 6740, 1, 0, 0, 0, 662, 6744, 1, 0, 0, 0, 664, 6761, 1, 0, 0, 0, 666, 6766, 1, 0, 0, 0, 668, 6804, 1, 0, 0, 0, 670, 6806, 1, 0, 0, 0, 672, 6810, 1, 0, 0, 0, 674, 6812, 1, 0, 0, 0, 676, 6821, 1, 0, 0, 0, 678, 6905, 1, 0, 0, 0, 680, 6911, 1, 0, 0, 0, 682, 7020, 1, 0, 0, 0, 684, 7052, 1, 0, 0, 0, 686, 7105, 1, 0, 0, 0, 688, 7109, 1, 0, 0, 0, 690, 7285, 1, 0, 0, 0, 692, 7287, 1, 0, 0, 0, 694, 7295, 1, 0, 0, 0, 696, 7300, 1, 0, 0, 0, 698, 7302, 1, 0, 0, 0, 700, 7310, 1, 0, 0, 0, 702, 7313, 1, 0, 0, 0, 704, 7322, 1, 0, 0, 0, 706, 7326, 1, 0, 0, 0, 708, 7331, 1, 0, 0, 0, 710, 7348, 1, 0, 0, 0, 712, 7375, 1, 0, 0, 0, 714, 7384, 1, 0, 0, 0, 716, 7386, 1, 0, 0, 0, 718, 7393, 1, 0, 0, 0, 720, 7397, 1, 0, 0, 0, 722, 7399, 1, 0, 0, 0, 724, 7407, 1, 0, 0, 0, 726, 7415, 1, 0, 0, 0, 728, 7422, 1, 0, 0, 0, 730, 7424, 1, 0, 0, 0, 732, 7437, 1, 0, 0, 0, 734, 7441, 1, 0, 0, 0, 736, 7443, 1, 0, 0, 0, 738, 7456, 1, 0, 0, 0, 740, 7458, 1, 0, 0, 0, 742, 7480, 1, 0, 0, 0, 744, 7482, 1, 0, 0, 0, 746, 7505, 1, 0, 0, 0, 748, 7507, 1, 0, 0, 0, 750, 7529, 1, 0, 0, 0, 752, 7532, 1, 0, 0, 0, 754, 7539, 1, 0, 0, 0, 756, 7542, 1, 0, 0, 0, 758, 7558, 1, 0, 0, 0, 760, 7560, 1, 0, 0, 0, 762, 7568, 1, 0, 0, 0, 764, 7576, 1, 0, 0, 0, 766, 7584, 1, 0, 0, 0, 768, 7592, 1, 0, 0, 0, 770, 7594, 1, 0, 0, 0, 772, 7596, 1, 0, 0, 0, 774, 7598, 1, 0, 0, 0, 776, 7600, 1, 0, 0, 0, 778, 7602, 1, 0, 0, 0, 780, 7604, 1, 0, 0, 0, 782, 7608, 1, 0, 0, 0, 784, 7616, 1, 0, 0, 0, 786, 7624, 1, 0, 0, 0, 788, 7626, 1, 0, 0, 0, 790, 7628, 1, 0, 0, 0, 792, 7630, 1, 0, 0, 0, 794, 7632, 1, 0, 0, 0, 796, 7638, 1, 0, 0, 0, 798, 7644, 1, 0, 0, 0, 800, 7650, 1, 0, 0, 0, 802, 7652, 1, 0, 0, 0, 804, 7658, 1, 0, 0, 0, 806, 7664, 1, 0, 0, 0, 808, 7666, 1, 0, 0, 0, 810, 7682, 1, 0, 0, 0, 812, 7685, 1, 0, 0, 0, 814, 7694, 1, 0, 0, 0, 816, 7696, 1, 0, 0, 0, 818, 7708, 1, 0, 0, 0, 820, 7714, 1, 0, 0, 0, 822, 7720, 1, 0, 0, 0, 824, 7725, 1, 0, 0, 0, 826, 7738, 1, 0, 0, 0, 828, 7740, 1, 0, 0, 0, 830, 7793, 1, 0, 0, 0, 832, 7795, 1, 0, 0, 0, 834, 7797, 1, 0, 0, 0, 836, 7800, 1, 0, 0, 0, 838, 7828, 1, 0, 0, 0, 840, 7832, 1, 0, 0, 0, 842, 7883, 1, 0, 0, 0, 844, 7886, 1, 0, 0, 0, 846, 7912, 1, 0, 0, 0, 848, 7914, 1, 0, 0, 0, 850, 7937, 1, 0, 0, 0, 852, 7939, 1, 0, 0, 0, 854, 7944, 1, 0, 0, 0, 856, 7959, 1, 0, 0, 0, 858, 7965, 1, 0, 0, 0, 860, 7976, 1, 0, 0, 0, 862, 8006, 1, 0, 0, 0, 864, 8013, 1, 0, 0, 0, 866, 8038, 1, 0, 0, 0, 868, 8048, 1, 0, 0, 0, 870, 8075, 1, 0, 0, 0, 872, 8088, 1, 0, 0, 0, 874, 8098, 1, 0, 0, 0, 876, 8117, 1, 0, 0, 0, 878, 8149, 1, 0, 0, 0, 880, 8153, 1, 0, 0, 0, 882, 8161, 1, 0, 0, 0, 884, 8175, 1, 0, 0, 0, 886, 8181, 1, 0, 0, 0, 888, 8202, 1, 0, 0, 0, 890, 8208, 1, 0, 0, 0, 892, 8247, 1, 0, 0, 0, 894, 8251, 1, 0, 0, 0, 896, 8277, 1, 0, 0, 0, 898, 8279, 1, 0, 0, 0, 900, 8287, 1, 0, 0, 0, 902, 8324, 1, 0, 0, 0, 904, 8358, 1, 0, 0, 0, 906, 8360, 1, 0, 0, 0, 908, 8371, 1, 0, 0, 0, 910, 8408, 1, 0, 0, 0, 912, 8412, 1, 0, 0, 0, 914, 8414, 1, 0, 0, 0, 916, 8418, 1, 0, 0, 0, 918, 8421, 1, 0, 0, 0, 920, 8443, 1, 0, 0, 0, 922, 8447, 1, 0, 0, 0, 924, 8449, 1, 0, 0, 0, 926, 8473, 1, 0, 0, 0, 928, 8477, 1, 0, 0, 0, 930, 8479, 1, 0, 0, 0, 932, 8482, 1, 0, 0, 0, 934, 936, 3, 2, 1, 0, 935, 934, 1, 0, 0, 0, 936, 939, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 940, 941, 5, 0, 0, 1, 941, 1, 1, 0, 0, 0, 942, 944, 3, 4, 2, 0, 943, 945, 5, 7, 0, 0, 944, 943, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 3, 1, 0, 0, 0, 946, 1067, 3, 278, 139, 0, 947, 1067, 3, 488, 244, 0, 948, 1067, 3, 484, 242, 0, 949, 1067, 3, 486, 243, 0, 950, 1067, 3, 352, 176, 0, 951, 1067, 3, 494, 247, 0, 952, 1067, 3, 292, 146, 0, 953, 1067, 3, 210, 105, 0, 954, 1067, 3, 212, 106, 0, 955, 1067, 3, 218, 109, 0, 956, 1067, 3, 232, 116, 0, 957, 1067, 3, 404, 202, 0, 958, 1067, 3, 28, 14, 0, 959, 1067, 3, 434, 217, 0, 960, 1067, 3, 436, 218, 0, 961, 1067, 3, 446, 223, 0, 962, 1067, 3, 438, 219, 0, 963, 1067, 3, 444, 222, 0, 964, 1067, 3, 244, 122, 0, 965, 1067, 3, 246, 123, 0, 966, 1067, 3, 198, 99, 0, 967, 1067, 3, 490, 245, 0, 968, 1067, 3, 76, 38, 0, 969, 1067, 3, 430, 215, 0, 970, 1067, 3, 108, 54, 0, 971, 1067, 3, 450, 225, 0, 972, 1067, 3, 18, 9, 0, 973, 1067, 3, 20, 10, 0, 974, 1067, 3, 16, 8, 0, 975, 1067, 3, 454, 227, 0, 976, 1067, 3, 184, 92, 0, 977, 1067, 3, 498, 249, 0, 978, 1067, 3, 496, 248, 0, 979, 1067, 3, 240, 120, 0, 980, 1067, 3, 506, 253, 0, 981, 1067, 3, 6, 3, 0, 982, 1067, 3, 72, 36, 0, 983, 1067, 3, 112, 56, 0, 984, 1067, 3, 502, 251, 0, 985, 1067, 3, 324, 162, 0, 986, 1067, 3, 70, 35, 0, 987, 1067, 3, 114, 57, 0, 988, 1067, 3, 254, 127, 0, 989, 1067, 3, 186, 93, 0, 990, 1067, 3, 280, 140, 0, 991, 1067, 3, 420, 210, 0, 992, 1067, 3, 500, 250, 0, 993, 1067, 3, 492, 246, 0, 994, 1067, 3, 208, 104, 0, 995, 1067, 3, 214, 107, 0, 996, 1067, 3, 228, 114, 0, 997, 1067, 3, 234, 117, 0, 998, 1067, 3, 364, 182, 0, 999, 1067, 3, 26, 13, 0, 1000, 1067, 3, 192, 96, 0, 1001, 1067, 3, 296, 148, 0, 1002, 1067, 3, 300, 150, 0, 1003, 1067, 3, 448, 224, 0, 1004, 1067, 3, 302, 151, 0, 1005, 1067, 3, 242, 121, 0, 1006, 1067, 3, 204, 102, 0, 1007, 1067, 3, 30, 15, 0, 1008, 1067, 3, 196, 98, 0, 1009, 1067, 3, 120, 60, 0, 1010, 1067, 3, 452, 226, 0, 1011, 1067, 3, 182, 91, 0, 1012, 1067, 3, 206, 103, 0, 1013, 1067, 3, 424, 212, 0, 1014, 1067, 3, 256, 128, 0, 1015, 1067, 3, 274, 137, 0, 1016, 1067, 3, 8, 4, 0, 1017, 1067, 3, 14, 7, 0, 1018, 1067, 3, 238, 119, 0, 1019, 1067, 3, 480, 240, 0, 1020, 1067, 3, 536, 268, 0, 1021, 1067, 3, 558, 279, 0, 1022, 1067, 3, 282, 141, 0, 1023, 1067, 3, 548, 274, 0, 1024, 1067, 3, 74, 37, 0, 1025, 1067, 3, 418, 209, 0, 1026, 1067, 3, 308, 154, 0, 1027, 1067, 3, 532, 266, 0, 1028, 1067, 3, 520, 260, 0, 1029, 1067, 3, 328, 164, 0, 1030, 1067, 3, 334, 167, 0, 1031, 1067, 3, 348, 174, 0, 1032, 1067, 3, 900, 450, 0, 1033, 1067, 3, 236, 118, 0, 1034, 1067, 3, 358, 179, 0, 1035, 1067, 3, 538, 269, 0, 1036, 1067, 3, 464, 232, 0, 1037, 1067, 3, 194, 97, 0, 1038, 1067, 3, 478, 239, 0, 1039, 1067, 3, 550, 275, 0, 1040, 1067, 3, 460, 230, 0, 1041, 1067, 3, 526, 263, 0, 1042, 1067, 3, 306, 153, 0, 1043, 1067, 3, 428, 214, 0, 1044, 1067, 3, 408, 204, 0, 1045, 1067, 3, 406, 203, 0, 1046, 1067, 3, 410, 205, 0, 1047, 1067, 3, 432, 216, 0, 1048, 1067, 3, 336, 168, 0, 1049, 1067, 3, 350, 175, 0, 1050, 1067, 3, 456, 228, 0, 1051, 1067, 3, 326, 163, 0, 1052, 1067, 3, 560, 280, 0, 1053, 1067, 3, 468, 234, 0, 1054, 1067, 3, 320, 160, 0, 1055, 1067, 3, 466, 233, 0, 1056, 1067, 3, 552, 276, 0, 1057, 1067, 3, 504, 252, 0, 1058, 1067, 3, 60, 30, 0, 1059, 1067, 3, 36, 18, 0, 1060, 1067, 3, 68, 34, 0, 1061, 1067, 3, 476, 238, 0, 1062, 1064, 5, 581, 0, 0, 1063, 1065, 5, 582, 0, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 946, 1, 0, 0, 0, 1066, 947, 1, 0, 0, 0, 1066, 948, 1, 0, 0, 0, 1066, 949, 1, 0, 0, 0, 1066, 950, 1, 0, 0, 0, 1066, 951, 1, 0, 0, 0, 1066, 952, 1, 0, 0, 0, 1066, 953, 1, 0, 0, 0, 1066, 954, 1, 0, 0, 0, 1066, 955, 1, 0, 0, 0, 1066, 956, 1, 0, 0, 0, 1066, 957, 1, 0, 0, 0, 1066, 958, 1, 0, 0, 0, 1066, 959, 1, 0, 0, 0, 1066, 960, 1, 0, 0, 0, 1066, 961, 1, 0, 0, 0, 1066, 962, 1, 0, 0, 0, 1066, 963, 1, 0, 0, 0, 1066, 964, 1, 0, 0, 0, 1066, 965, 1, 0, 0, 0, 1066, 966, 1, 0, 0, 0, 1066, 967, 1, 0, 0, 0, 1066, 968, 1, 0, 0, 0, 1066, 969, 1, 0, 0, 0, 1066, 970, 1, 0, 0, 0, 1066, 971, 1, 0, 0, 0, 1066, 972, 1, 0, 0, 0, 1066, 973, 1, 0, 0, 0, 1066, 974, 1, 0, 0, 0, 1066, 975, 1, 0, 0, 0, 1066, 976, 1, 0, 0, 0, 1066, 977, 1, 0, 0, 0, 1066, 978, 1, 0, 0, 0, 1066, 979, 1, 0, 0, 0, 1066, 980, 1, 0, 0, 0, 1066, 981, 1, 0, 0, 0, 1066, 982, 1, 0, 0, 0, 1066, 983, 1, 0, 0, 0, 1066, 984, 1, 0, 0, 0, 1066, 985, 1, 0, 0, 0, 1066, 986, 1, 0, 0, 0, 1066, 987, 1, 0, 0, 0, 1066, 988, 1, 0, 0, 0, 1066, 989, 1, 0, 0, 0, 1066, 990, 1, 0, 0, 0, 1066, 991, 1, 0, 0, 0, 1066, 992, 1, 0, 0, 0, 1066, 993, 1, 0, 0, 0, 1066, 994, 1, 0, 0, 0, 1066, 995, 1, 0, 0, 0, 1066, 996, 1, 0, 0, 0, 1066, 997, 1, 0, 0, 0, 1066, 998, 1, 0, 0, 0, 1066, 999, 1, 0, 0, 0, 1066, 1000, 1, 0, 0, 0, 1066, 1001, 1, 0, 0, 0, 1066, 1002, 1, 0, 0, 0, 1066, 1003, 1, 0, 0, 0, 1066, 1004, 1, 0, 0, 0, 1066, 1005, 1, 0, 0, 0, 1066, 1006, 1, 0, 0, 0, 1066, 1007, 1, 0, 0, 0, 1066, 1008, 1, 0, 0, 0, 1066, 1009, 1, 0, 0, 0, 1066, 1010, 1, 0, 0, 0, 1066, 1011, 1, 0, 0, 0, 1066, 1012, 1, 0, 0, 0, 1066, 1013, 1, 0, 0, 0, 1066, 1014, 1, 0, 0, 0, 1066, 1015, 1, 0, 0, 0, 1066, 1016, 1, 0, 0, 0, 1066, 1017, 1, 0, 0, 0, 1066, 1018, 1, 0, 0, 0, 1066, 1019, 1, 0, 0, 0, 1066, 1020, 1, 0, 0, 0, 1066, 1021, 1, 0, 0, 0, 1066, 1022, 1, 0, 0, 0, 1066, 1023, 1, 0, 0, 0, 1066, 1024, 1, 0, 0, 0, 1066, 1025, 1, 0, 0, 0, 1066, 1026, 1, 0, 0, 0, 1066, 1027, 1, 0, 0, 0, 1066, 1028, 1, 0, 0, 0, 1066, 1029, 1, 0, 0, 0, 1066, 1030, 1, 0, 0, 0, 1066, 1031, 1, 0, 0, 0, 1066, 1032, 1, 0, 0, 0, 1066, 1033, 1, 0, 0, 0, 1066, 1034, 1, 0, 0, 0, 1066, 1035, 1, 0, 0, 0, 1066, 1036, 1, 0, 0, 0, 1066, 1037, 1, 0, 0, 0, 1066, 1038, 1, 0, 0, 0, 1066, 1039, 1, 0, 0, 0, 1066, 1040, 1, 0, 0, 0, 1066, 1041, 1, 0, 0, 0, 1066, 1042, 1, 0, 0, 0, 1066, 1043, 1, 0, 0, 0, 1066, 1044, 1, 0, 0, 0, 1066, 1045, 1, 0, 0, 0, 1066, 1046, 1, 0, 0, 0, 1066, 1047, 1, 0, 0, 0, 1066, 1048, 1, 0, 0, 0, 1066, 1049, 1, 0, 0, 0, 1066, 1050, 1, 0, 0, 0, 1066, 1051, 1, 0, 0, 0, 1066, 1052, 1, 0, 0, 0, 1066, 1053, 1, 0, 0, 0, 1066, 1054, 1, 0, 0, 0, 1066, 1055, 1, 0, 0, 0, 1066, 1056, 1, 0, 0, 0, 1066, 1057, 1, 0, 0, 0, 1066, 1058, 1, 0, 0, 0, 1066, 1059, 1, 0, 0, 0, 1066, 1060, 1, 0, 0, 0, 1066, 1061, 1, 0, 0, 0, 1066, 1062, 1, 0, 0, 0, 1067, 5, 1, 0, 0, 0, 1068, 1069, 5, 433, 0, 0, 1069, 1070, 3, 684, 342, 0, 1070, 7, 1, 0, 0, 0, 1071, 1072, 5, 46, 0, 0, 1072, 1073, 5, 318, 0, 0, 1073, 1075, 3, 814, 407, 0, 1074, 1076, 5, 105, 0, 0, 1075, 1074, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1080, 1, 0, 0, 0, 1077, 1079, 3, 12, 6, 0, 1078, 1077, 1, 0, 0, 0, 1079, 1082, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 9, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1083, 1086, 5, 287, 0, 0, 1084, 1087, 3, 808, 404, 0, 1085, 1087, 5, 78, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1085, 1, 0, 0, 0, 1087, 1122, 1, 0, 0, 0, 1088, 1089, 7, 0, 0, 0, 1089, 1090, 5, 287, 0, 0, 1090, 1122, 3, 808, 404, 0, 1091, 1122, 5, 228, 0, 0, 1092, 1122, 5, 229, 0, 0, 1093, 1122, 5, 236, 0, 0, 1094, 1122, 5, 237, 0, 0, 1095, 1122, 5, 234, 0, 0, 1096, 1122, 5, 235, 0, 0, 1097, 1122, 5, 232, 0, 0, 1098, 1122, 5, 233, 0, 0, 1099, 1122, 5, 230, 0, 0, 1100, 1122, 5, 231, 0, 0, 1101, 1122, 5, 535, 0, 0, 1102, 1122, 5, 536, 0, 0, 1103, 1122, 5, 537, 0, 0, 1104, 1122, 5, 538, 0, 0, 1105, 1122, 5, 539, 0, 0, 1106, 1122, 5, 540, 0, 0, 1107, 1108, 5, 164, 0, 0, 1108, 1109, 5, 74, 0, 0, 1109, 1122, 3, 812, 406, 0, 1110, 1111, 5, 371, 0, 0, 1111, 1112, 5, 368, 0, 0, 1112, 1122, 3, 808, 404, 0, 1113, 1114, 5, 68, 0, 0, 1114, 1115, 7, 1, 0, 0, 1115, 1122, 3, 784, 392, 0, 1116, 1117, 7, 2, 0, 0, 1117, 1122, 3, 816, 408, 0, 1118, 1119, 5, 134, 0, 0, 1119, 1122, 3, 784, 392, 0, 1120, 1122, 3, 826, 413, 0, 1121, 1083, 1, 0, 0, 0, 1121, 1088, 1, 0, 0, 0, 1121, 1091, 1, 0, 0, 0, 1121, 1092, 1, 0, 0, 0, 1121, 1093, 1, 0, 0, 0, 1121, 1094, 1, 0, 0, 0, 1121, 1095, 1, 0, 0, 0, 1121, 1096, 1, 0, 0, 0, 1121, 1097, 1, 0, 0, 0, 1121, 1098, 1, 0, 0, 0, 1121, 1099, 1, 0, 0, 0, 1121, 1100, 1, 0, 0, 0, 1121, 1101, 1, 0, 0, 0, 1121, 1102, 1, 0, 0, 0, 1121, 1103, 1, 0, 0, 0, 1121, 1104, 1, 0, 0, 0, 1121, 1105, 1, 0, 0, 0, 1121, 1106, 1, 0, 0, 0, 1121, 1107, 1, 0, 0, 0, 1121, 1110, 1, 0, 0, 0, 1121, 1113, 1, 0, 0, 0, 1121, 1116, 1, 0, 0, 0, 1121, 1118, 1, 0, 0, 0, 1121, 1120, 1, 0, 0, 0, 1122, 11, 1, 0, 0, 0, 1123, 1132, 3, 10, 5, 0, 1124, 1125, 5, 348, 0, 0, 1125, 1132, 5, 571, 0, 0, 1126, 1127, 7, 3, 0, 0, 1127, 1132, 3, 816, 408, 0, 1128, 1129, 5, 68, 0, 0, 1129, 1130, 7, 1, 0, 0, 1130, 1132, 3, 816, 408, 0, 1131, 1123, 1, 0, 0, 0, 1131, 1124, 1, 0, 0, 0, 1131, 1126, 1, 0, 0, 0, 1131, 1128, 1, 0, 0, 0, 1132, 13, 1, 0, 0, 0, 1133, 1134, 5, 46, 0, 0, 1134, 1135, 5, 99, 0, 0, 1135, 1137, 3, 814, 407, 0, 1136, 1138, 5, 105, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1142, 1, 0, 0, 0, 1139, 1141, 3, 12, 6, 0, 1140, 1139, 1, 0, 0, 0, 1141, 1144, 1, 0, 0, 0, 1142, 1140, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 15, 1, 0, 0, 0, 1144, 1142, 1, 0, 0, 0, 1145, 1146, 5, 138, 0, 0, 1146, 1147, 7, 2, 0, 0, 1147, 1149, 3, 814, 407, 0, 1148, 1150, 5, 105, 0, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1154, 1, 0, 0, 0, 1151, 1153, 3, 10, 5, 0, 1152, 1151, 1, 0, 0, 0, 1153, 1156, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 17, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1158, 5, 138, 0, 0, 1158, 1161, 7, 2, 0, 0, 1159, 1162, 5, 30, 0, 0, 1160, 1162, 3, 814, 407, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 68, 0, 0, 1164, 1165, 5, 175, 0, 0, 1165, 1166, 3, 788, 394, 0, 1166, 1167, 3, 64, 32, 0, 1167, 19, 1, 0, 0, 0, 1168, 1169, 5, 138, 0, 0, 1169, 1170, 5, 442, 0, 0, 1170, 1172, 3, 794, 397, 0, 1171, 1173, 3, 368, 184, 0, 1172, 1171, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1175, 3, 22, 11, 0, 1175, 21, 1, 0, 0, 0, 1176, 1180, 3, 24, 12, 0, 1177, 1179, 3, 24, 12, 0, 1178, 1177, 1, 0, 0, 0, 1179, 1182, 1, 0, 0, 0, 1180, 1178, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1184, 1, 0, 0, 0, 1182, 1180, 1, 0, 0, 0, 1183, 1185, 5, 315, 0, 0, 1184, 1183, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1203, 1, 0, 0, 0, 1186, 1187, 5, 309, 0, 0, 1187, 1188, 5, 94, 0, 0, 1188, 1203, 3, 792, 396, 0, 1189, 1190, 5, 282, 0, 0, 1190, 1191, 5, 94, 0, 0, 1191, 1203, 3, 814, 407, 0, 1192, 1193, 5, 333, 0, 0, 1193, 1194, 5, 323, 0, 0, 1194, 1203, 3, 32, 16, 0, 1195, 1197, 5, 269, 0, 0, 1196, 1195, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 5, 462, 0, 0, 1199, 1200, 5, 80, 0, 0, 1200, 1201, 5, 204, 0, 0, 1201, 1203, 3, 818, 409, 0, 1202, 1176, 1, 0, 0, 0, 1202, 1186, 1, 0, 0, 0, 1202, 1189, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1196, 1, 0, 0, 0, 1203, 23, 1, 0, 0, 0, 1204, 1247, 5, 222, 0, 0, 1205, 1247, 5, 338, 0, 0, 1206, 1247, 5, 377, 0, 0, 1207, 1209, 5, 77, 0, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1247, 5, 250, 0, 0, 1211, 1213, 5, 205, 0, 0, 1212, 1211, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 5, 327, 0, 0, 1215, 1222, 5, 243, 0, 0, 1216, 1218, 5, 205, 0, 0, 1217, 1216, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1220, 5, 327, 0, 0, 1220, 1222, 5, 181, 0, 0, 1221, 1212, 1, 0, 0, 0, 1221, 1217, 1, 0, 0, 0, 1222, 1247, 1, 0, 0, 0, 1223, 1224, 5, 460, 0, 0, 1224, 1247, 7, 4, 0, 0, 1225, 1226, 5, 170, 0, 0, 1226, 1247, 3, 824, 412, 0, 1227, 1228, 5, 320, 0, 0, 1228, 1247, 3, 818, 409, 0, 1229, 1230, 5, 333, 0, 0, 1230, 1231, 3, 818, 409, 0, 1231, 1234, 7, 5, 0, 0, 1232, 1235, 3, 818, 409, 0, 1233, 1235, 5, 53, 0, 0, 1234, 1232, 1, 0, 0, 0, 1234, 1233, 1, 0, 0, 0, 1235, 1247, 1, 0, 0, 0, 1236, 1237, 5, 333, 0, 0, 1237, 1238, 3, 818, 409, 0, 1238, 1239, 5, 64, 0, 0, 1239, 1240, 5, 434, 0, 0, 1240, 1247, 1, 0, 0, 0, 1241, 1244, 5, 313, 0, 0, 1242, 1245, 3, 818, 409, 0, 1243, 1245, 5, 30, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1243, 1, 0, 0, 0, 1245, 1247, 1, 0, 0, 0, 1246, 1204, 1, 0, 0, 0, 1246, 1205, 1, 0, 0, 0, 1246, 1206, 1, 0, 0, 0, 1246, 1208, 1, 0, 0, 0, 1246, 1221, 1, 0, 0, 0, 1246, 1223, 1, 0, 0, 0, 1246, 1225, 1, 0, 0, 0, 1246, 1227, 1, 0, 0, 0, 1246, 1229, 1, 0, 0, 0, 1246, 1236, 1, 0, 0, 0, 1246, 1241, 1, 0, 0, 0, 1247, 25, 1, 0, 0, 0, 1248, 1249, 5, 46, 0, 0, 1249, 1250, 5, 66, 0, 0, 1250, 1252, 3, 814, 407, 0, 1251, 1253, 5, 105, 0, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1257, 1, 0, 0, 0, 1254, 1256, 3, 12, 6, 0, 1255, 1254, 1, 0, 0, 0, 1256, 1259, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 27, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1261, 5, 138, 0, 0, 1261, 1262, 5, 66, 0, 0, 1262, 1263, 3, 814, 407, 0, 1263, 1264, 7, 6, 0, 0, 1264, 1265, 5, 99, 0, 0, 1265, 1266, 3, 816, 408, 0, 1266, 29, 1, 0, 0, 0, 1267, 1268, 5, 46, 0, 0, 1268, 1270, 5, 323, 0, 0, 1269, 1271, 3, 294, 147, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1278, 1, 0, 0, 0, 1272, 1274, 3, 32, 16, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 5, 106, 0, 0, 1276, 1279, 3, 814, 407, 0, 1277, 1279, 3, 32, 16, 0, 1278, 1273, 1, 0, 0, 0, 1278, 1277, 1, 0, 0, 0, 1279, 1283, 1, 0, 0, 0, 1280, 1282, 3, 34, 17, 0, 1281, 1280, 1, 0, 0, 0, 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 31, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1287, 3, 316, 158, 0, 1287, 33, 1, 0, 0, 0, 1288, 1295, 3, 120, 60, 0, 1289, 1295, 3, 358, 179, 0, 1290, 1295, 3, 196, 98, 0, 1291, 1295, 3, 256, 128, 0, 1292, 1295, 3, 334, 167, 0, 1293, 1295, 3, 476, 238, 0, 1294, 1288, 1, 0, 0, 0, 1294, 1289, 1, 0, 0, 0, 1294, 1290, 1, 0, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1294, 1293, 1, 0, 0, 0, 1295, 35, 1, 0, 0, 0, 1296, 1298, 5, 333, 0, 0, 1297, 1299, 7, 7, 0, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 3, 38, 19, 0, 1301, 37, 1, 0, 0, 0, 1302, 1303, 5, 356, 0, 0, 1303, 1311, 3, 474, 237, 0, 1304, 1305, 5, 332, 0, 0, 1305, 1306, 5, 154, 0, 0, 1306, 1307, 5, 36, 0, 0, 1307, 1308, 5, 356, 0, 0, 1308, 1311, 3, 474, 237, 0, 1309, 1311, 3, 42, 21, 0, 1310, 1302, 1, 0, 0, 0, 1310, 1304, 1, 0, 0, 0, 1310, 1309, 1, 0, 0, 0, 1311, 39, 1, 0, 0, 0, 1312, 1315, 5, 30, 0, 0, 1313, 1315, 3, 44, 22, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1313, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1318, 7, 5, 0, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1321, 1, 0, 0, 0, 1319, 1322, 5, 53, 0, 0, 1320, 1322, 3, 46, 23, 0, 1321, 1319, 1, 0, 0, 0, 1321, 1320, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 41, 1, 0, 0, 0, 1323, 1324, 5, 418, 0, 0, 1324, 1325, 5, 386, 0, 0, 1325, 1352, 3, 56, 28, 0, 1326, 1327, 5, 152, 0, 0, 1327, 1352, 3, 808, 404, 0, 1328, 1329, 5, 323, 0, 0, 1329, 1352, 3, 790, 395, 0, 1330, 1333, 5, 267, 0, 0, 1331, 1334, 3, 808, 404, 0, 1332, 1334, 5, 53, 0, 0, 1333, 1331, 1, 0, 0, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1352, 1, 0, 0, 0, 1335, 1336, 5, 318, 0, 0, 1336, 1352, 3, 58, 29, 0, 1337, 1338, 5, 332, 0, 0, 1338, 1339, 5, 106, 0, 0, 1339, 1352, 3, 58, 29, 0, 1340, 1341, 5, 383, 0, 0, 1341, 1342, 5, 279, 0, 0, 1342, 1352, 3, 696, 348, 0, 1343, 1344, 5, 356, 0, 0, 1344, 1345, 5, 337, 0, 0, 1345, 1352, 3, 808, 404, 0, 1346, 1347, 3, 44, 22, 0, 1347, 1348, 5, 64, 0, 0, 1348, 1349, 5, 434, 0, 0, 1349, 1352, 1, 0, 0, 0, 1350, 1352, 3, 40, 20, 0, 1351, 1323, 1, 0, 0, 0, 1351, 1326, 1, 0, 0, 0, 1351, 1328, 1, 0, 0, 0, 1351, 1330, 1, 0, 0, 0, 1351, 1335, 1, 0, 0, 0, 1351, 1337, 1, 0, 0, 0, 1351, 1340, 1, 0, 0, 0, 1351, 1343, 1, 0, 0, 0, 1351, 1346, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 43, 1, 0, 0, 0, 1353, 1358, 3, 818, 409, 0, 1354, 1355, 5, 11, 0, 0, 1355, 1357, 3, 818, 409, 0, 1356, 1354, 1, 0, 0, 0, 1357, 1360, 1, 0, 0, 0, 1358, 1356, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 45, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1361, 1366, 3, 48, 24, 0, 1362, 1363, 5, 6, 0, 0, 1363, 1365, 3, 48, 24, 0, 1364, 1362, 1, 0, 0, 0, 1365, 1368, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 47, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1369, 1372, 3, 54, 27, 0, 1370, 1372, 3, 202, 101, 0, 1371, 1369, 1, 0, 0, 0, 1371, 1370, 1, 0, 0, 0, 1372, 49, 1, 0, 0, 0, 1373, 1374, 5, 300, 0, 0, 1374, 1379, 7, 8, 0, 0, 1375, 1376, 5, 310, 0, 0, 1376, 1379, 5, 300, 0, 0, 1377, 1379, 5, 330, 0, 0, 1378, 1373, 1, 0, 0, 0, 1378, 1375, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 51, 1, 0, 0, 0, 1380, 1387, 5, 96, 0, 0, 1381, 1387, 5, 60, 0, 0, 1382, 1387, 5, 80, 0, 0, 1383, 1387, 3, 800, 400, 0, 1384, 1387, 3, 832, 416, 0, 1385, 1387, 3, 808, 404, 0, 1386, 1380, 1, 0, 0, 0, 1386, 1381, 1, 0, 0, 0, 1386, 1382, 1, 0, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1386, 1385, 1, 0, 0, 0, 1387, 53, 1, 0, 0, 0, 1388, 1393, 5, 96, 0, 0, 1389, 1393, 5, 60, 0, 0, 1390, 1393, 5, 80, 0, 0, 1391, 1393, 3, 58, 29, 0, 1392, 1388, 1, 0, 0, 0, 1392, 1389, 1, 0, 0, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1391, 1, 0, 0, 0, 1393, 55, 1, 0, 0, 0, 1394, 1409, 3, 808, 404, 0, 1395, 1409, 5, 53, 0, 0, 1396, 1409, 3, 826, 413, 0, 1397, 1398, 5, 403, 0, 0, 1398, 1400, 3, 808, 404, 0, 1399, 1401, 3, 668, 334, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1409, 1, 0, 0, 0, 1402, 1403, 5, 403, 0, 0, 1403, 1404, 3, 660, 330, 0, 1404, 1405, 3, 808, 404, 0, 1405, 1409, 1, 0, 0, 0, 1406, 1409, 3, 202, 101, 0, 1407, 1409, 5, 254, 0, 0, 1408, 1394, 1, 0, 0, 0, 1408, 1395, 1, 0, 0, 0, 1408, 1396, 1, 0, 0, 0, 1408, 1397, 1, 0, 0, 0, 1408, 1402, 1, 0, 0, 0, 1408, 1406, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409, 57, 1, 0, 0, 0, 1410, 1413, 3, 822, 411, 0, 1411, 1413, 3, 808, 404, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1411, 1, 0, 0, 0, 1413, 59, 1, 0, 0, 0, 1414, 1415, 5, 313, 0, 0, 1415, 1416, 3, 62, 31, 0, 1416, 61, 1, 0, 0, 0, 1417, 1418, 5, 418, 0, 0, 1418, 1427, 5, 386, 0, 0, 1419, 1420, 5, 356, 0, 0, 1420, 1421, 5, 244, 0, 0, 1421, 1427, 5, 251, 0, 0, 1422, 1423, 5, 332, 0, 0, 1423, 1427, 5, 106, 0, 0, 1424, 1427, 5, 30, 0, 0, 1425, 1427, 3, 44, 22, 0, 1426, 1417, 1, 0, 0, 0, 1426, 1419, 1, 0, 0, 0, 1426, 1422, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1425, 1, 0, 0, 0, 1427, 63, 1, 0, 0, 0, 1428, 1429, 5, 333, 0, 0, 1429, 1432, 3, 38, 19, 0, 1430, 1432, 3, 60, 30, 0, 1431, 1428, 1, 0, 0, 0, 1431, 1430, 1, 0, 0, 0, 1432, 65, 1, 0, 0, 0, 1433, 1434, 5, 333, 0, 0, 1434, 1437, 3, 42, 21, 0, 1435, 1437, 3, 60, 30, 0, 1436, 1433, 1, 0, 0, 0, 1436, 1435, 1, 0, 0, 0, 1437, 67, 1, 0, 0, 0, 1438, 1448, 5, 335, 0, 0, 1439, 1449, 3, 44, 22, 0, 1440, 1441, 5, 418, 0, 0, 1441, 1449, 5, 386, 0, 0, 1442, 1443, 5, 356, 0, 0, 1443, 1444, 5, 244, 0, 0, 1444, 1449, 5, 251, 0, 0, 1445, 1446, 5, 332, 0, 0, 1446, 1449, 5, 106, 0, 0, 1447, 1449, 5, 30, 0, 0, 1448, 1439, 1, 0, 0, 0, 1448, 1440, 1, 0, 0, 0, 1448, 1442, 1, 0, 0, 0, 1448, 1445, 1, 0, 0, 0, 1448, 1447, 1, 0, 0, 0, 1449, 69, 1, 0, 0, 0, 1450, 1451, 5, 333, 0, 0, 1451, 1454, 5, 165, 0, 0, 1452, 1455, 5, 30, 0, 0, 1453, 1455, 3, 760, 380, 0, 1454, 1452, 1, 0, 0, 0, 1454, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1457, 7, 9, 0, 0, 1457, 71, 1, 0, 0, 0, 1458, 1459, 5, 155, 0, 0, 1459, 73, 1, 0, 0, 0, 1460, 1461, 5, 187, 0, 0, 1461, 1462, 7, 10, 0, 0, 1462, 75, 1, 0, 0, 0, 1463, 1464, 5, 138, 0, 0, 1464, 1466, 5, 92, 0, 0, 1465, 1467, 3, 422, 211, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1471, 3, 624, 312, 0, 1469, 1472, 3, 78, 39, 0, 1470, 1472, 3, 88, 44, 0, 1471, 1469, 1, 0, 0, 0, 1471, 1470, 1, 0, 0, 0, 1472, 1585, 1, 0, 0, 0, 1473, 1474, 5, 138, 0, 0, 1474, 1475, 5, 92, 0, 0, 1475, 1476, 5, 30, 0, 0, 1476, 1477, 5, 68, 0, 0, 1477, 1481, 3, 176, 88, 0, 1478, 1479, 5, 281, 0, 0, 1479, 1480, 5, 147, 0, 0, 1480, 1482, 3, 816, 408, 0, 1481, 1478, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 5, 333, 0, 0, 1484, 1485, 5, 351, 0, 0, 1485, 1487, 3, 768, 384, 0, 1486, 1488, 5, 272, 0, 0, 1487, 1486, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1585, 1, 0, 0, 0, 1489, 1490, 5, 138, 0, 0, 1490, 1492, 5, 92, 0, 0, 1491, 1493, 3, 422, 211, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 3, 774, 387, 0, 1495, 1500, 3, 90, 45, 0, 1496, 1497, 5, 62, 0, 0, 1497, 1498, 5, 422, 0, 0, 1498, 1501, 3, 80, 40, 0, 1499, 1501, 5, 53, 0, 0, 1500, 1496, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1585, 1, 0, 0, 0, 1502, 1503, 5, 138, 0, 0, 1503, 1505, 5, 92, 0, 0, 1504, 1506, 3, 422, 211, 0, 1505, 1504, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 3, 774, 387, 0, 1508, 1509, 5, 436, 0, 0, 1509, 1510, 5, 285, 0, 0, 1510, 1512, 3, 780, 390, 0, 1511, 1513, 7, 11, 0, 0, 1512, 1511, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1585, 1, 0, 0, 0, 1514, 1515, 5, 138, 0, 0, 1515, 1517, 5, 226, 0, 0, 1516, 1518, 3, 422, 211, 0, 1517, 1516, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1522, 3, 780, 390, 0, 1520, 1523, 3, 78, 39, 0, 1521, 1523, 3, 90, 45, 0, 1522, 1520, 1, 0, 0, 0, 1522, 1521, 1, 0, 0, 0, 1523, 1585, 1, 0, 0, 0, 1524, 1525, 5, 138, 0, 0, 1525, 1526, 5, 226, 0, 0, 1526, 1527, 5, 30, 0, 0, 1527, 1528, 5, 68, 0, 0, 1528, 1532, 3, 176, 88, 0, 1529, 1530, 5, 281, 0, 0, 1530, 1531, 5, 147, 0, 0, 1531, 1533, 3, 816, 408, 0, 1532, 1529, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 5, 333, 0, 0, 1535, 1537, 3, 176, 88, 0, 1536, 1538, 5, 272, 0, 0, 1537, 1536, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1585, 1, 0, 0, 0, 1539, 1540, 5, 138, 0, 0, 1540, 1542, 5, 328, 0, 0, 1541, 1543, 3, 422, 211, 0, 1542, 1541, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1545, 3, 780, 390, 0, 1545, 1546, 3, 78, 39, 0, 1546, 1585, 1, 0, 0, 0, 1547, 1549, 5, 138, 0, 0, 1548, 1550, 5, 259, 0, 0, 1549, 1548, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553, 5, 376, 0, 0, 1552, 1554, 3, 422, 211, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1556, 3, 778, 389, 0, 1556, 1557, 3, 78, 39, 0, 1557, 1585, 1, 0, 0, 0, 1558, 1559, 5, 138, 0, 0, 1559, 1560, 5, 259, 0, 0, 1560, 1561, 5, 376, 0, 0, 1561, 1562, 5, 30, 0, 0, 1562, 1563, 5, 68, 0, 0, 1563, 1567, 3, 176, 88, 0, 1564, 1565, 5, 281, 0, 0, 1565, 1566, 5, 147, 0, 0, 1566, 1568, 3, 816, 408, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1570, 5, 333, 0, 0, 1570, 1571, 5, 351, 0, 0, 1571, 1573, 3, 768, 384, 0, 1572, 1574, 5, 272, 0, 0, 1573, 1572, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1585, 1, 0, 0, 0, 1575, 1576, 5, 138, 0, 0, 1576, 1577, 5, 63, 0, 0, 1577, 1579, 5, 92, 0, 0, 1578, 1580, 3, 422, 211, 0, 1579, 1578, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1582, 3, 624, 312, 0, 1582, 1583, 3, 78, 39, 0, 1583, 1585, 1, 0, 0, 0, 1584, 1463, 1, 0, 0, 0, 1584, 1473, 1, 0, 0, 0, 1584, 1489, 1, 0, 0, 0, 1584, 1502, 1, 0, 0, 0, 1584, 1514, 1, 0, 0, 0, 1584, 1524, 1, 0, 0, 0, 1584, 1539, 1, 0, 0, 0, 1584, 1547, 1, 0, 0, 0, 1584, 1558, 1, 0, 0, 0, 1584, 1575, 1, 0, 0, 0, 1585, 77, 1, 0, 0, 0, 1586, 1591, 3, 92, 46, 0, 1587, 1588, 5, 6, 0, 0, 1588, 1590, 3, 92, 46, 0, 1589, 1587, 1, 0, 0, 0, 1590, 1593, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1591, 1592, 1, 0, 0, 0, 1592, 79, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1594, 1595, 5, 68, 0, 0, 1595, 1604, 3, 534, 267, 0, 1596, 1597, 5, 64, 0, 0, 1597, 1598, 3, 82, 41, 0, 1598, 1599, 5, 94, 0, 0, 1599, 1600, 3, 82, 41, 0, 1600, 1604, 1, 0, 0, 0, 1601, 1602, 5, 105, 0, 0, 1602, 1604, 3, 86, 43, 0, 1603, 1594, 1, 0, 0, 0, 1603, 1596, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1604, 81, 1, 0, 0, 0, 1605, 1606, 5, 2, 0, 0, 1606, 1611, 3, 84, 42, 0, 1607, 1608, 5, 6, 0, 0, 1608, 1610, 3, 84, 42, 0, 1609, 1607, 1, 0, 0, 0, 1610, 1613, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1614, 1615, 5, 3, 0, 0, 1615, 83, 1, 0, 0, 0, 1616, 1620, 3, 534, 267, 0, 1617, 1620, 5, 262, 0, 0, 1618, 1620, 5, 260, 0, 0, 1619, 1616, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1618, 1, 0, 0, 0, 1620, 85, 1, 0, 0, 0, 1621, 1622, 5, 2, 0, 0, 1622, 1623, 5, 533, 0, 0, 1623, 1624, 3, 202, 101, 0, 1624, 1625, 5, 6, 0, 0, 1625, 1626, 5, 534, 0, 0, 1626, 1627, 3, 202, 101, 0, 1627, 1628, 5, 3, 0, 0, 1628, 87, 1, 0, 0, 0, 1629, 1630, 3, 90, 45, 0, 1630, 1631, 3, 106, 53, 0, 1631, 1636, 1, 0, 0, 0, 1632, 1633, 5, 436, 0, 0, 1633, 1634, 5, 285, 0, 0, 1634, 1636, 3, 780, 390, 0, 1635, 1629, 1, 0, 0, 0, 1635, 1632, 1, 0, 0, 0, 1636, 89, 1, 0, 0, 0, 1637, 1638, 5, 435, 0, 0, 1638, 1639, 5, 285, 0, 0, 1639, 1640, 3, 780, 390, 0, 1640, 91, 1, 0, 0, 0, 1641, 1644, 5, 133, 0, 0, 1642, 1643, 5, 45, 0, 0, 1643, 1645, 3, 818, 409, 0, 1644, 1642, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 1875, 3, 142, 71, 0, 1647, 1648, 5, 138, 0, 0, 1648, 1649, 5, 45, 0, 0, 1649, 1653, 3, 818, 409, 0, 1650, 1652, 3, 272, 136, 0, 1651, 1650, 1, 0, 0, 0, 1652, 1655, 1, 0, 0, 0, 1653, 1651, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1875, 1, 0, 0, 0, 1655, 1653, 1, 0, 0, 0, 1656, 1657, 5, 372, 0, 0, 1657, 1658, 5, 45, 0, 0, 1658, 1875, 3, 818, 409, 0, 1659, 1660, 5, 191, 0, 0, 1660, 1662, 5, 45, 0, 0, 1661, 1663, 3, 422, 211, 0, 1662, 1661, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1666, 3, 818, 409, 0, 1665, 1667, 3, 96, 48, 0, 1666, 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1875, 1, 0, 0, 0, 1668, 1669, 5, 333, 0, 0, 1669, 1670, 5, 379, 0, 0, 1670, 1875, 7, 12, 0, 0, 1671, 1672, 5, 158, 0, 0, 1672, 1673, 5, 80, 0, 0, 1673, 1875, 3, 818, 409, 0, 1674, 1675, 5, 333, 0, 0, 1675, 1875, 7, 13, 0, 0, 1676, 1678, 5, 193, 0, 0, 1677, 1679, 7, 14, 0, 0, 1678, 1677, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1875, 5, 357, 0, 0, 1681, 1682, 5, 186, 0, 0, 1682, 1686, 5, 357, 0, 0, 1683, 1687, 5, 30, 0, 0, 1684, 1687, 5, 99, 0, 0, 1685, 1687, 3, 818, 409, 0, 1686, 1683, 1, 0, 0, 0, 1686, 1684, 1, 0, 0, 0, 1686, 1685, 1, 0, 0, 0, 1687, 1875, 1, 0, 0, 0, 1688, 1689, 5, 193, 0, 0, 1689, 1690, 7, 14, 0, 0, 1690, 1691, 5, 321, 0, 0, 1691, 1875, 3, 818, 409, 0, 1692, 1693, 5, 186, 0, 0, 1693, 1694, 5, 321, 0, 0, 1694, 1875, 3, 818, 409, 0, 1695, 1697, 5, 269, 0, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1699, 5, 228, 0, 0, 1699, 1875, 3, 780, 390, 0, 1700, 1701, 5, 275, 0, 0, 1701, 1875, 3, 316, 158, 0, 1702, 1703, 5, 77, 0, 0, 1703, 1875, 5, 275, 0, 0, 1704, 1705, 5, 282, 0, 0, 1705, 1706, 5, 94, 0, 0, 1706, 1875, 3, 814, 407, 0, 1707, 1708, 5, 333, 0, 0, 1708, 1709, 5, 351, 0, 0, 1709, 1875, 3, 768, 384, 0, 1710, 1711, 5, 312, 0, 0, 1711, 1716, 5, 219, 0, 0, 1712, 1717, 5, 270, 0, 0, 1713, 1717, 5, 113, 0, 0, 1714, 1717, 5, 53, 0, 0, 1715, 1717, 3, 180, 90, 0, 1716, 1712, 1, 0, 0, 0, 1716, 1713, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1715, 1, 0, 0, 0, 1717, 1875, 1, 0, 0, 0, 1718, 1725, 5, 193, 0, 0, 1719, 1725, 5, 186, 0, 0, 1720, 1722, 5, 269, 0, 0, 1721, 1720, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1725, 5, 209, 0, 0, 1724, 1718, 1, 0, 0, 0, 1724, 1719, 1, 0, 0, 0, 1724, 1721, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1727, 5, 414, 0, 0, 1727, 1728, 5, 251, 0, 0, 1728, 1875, 5, 327, 0, 0, 1729, 1731, 5, 191, 0, 0, 1730, 1732, 5, 44, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1734, 1, 0, 0, 0, 1733, 1735, 3, 422, 211, 0, 1734, 1733, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1738, 3, 800, 400, 0, 1737, 1739, 3, 96, 48, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1875, 1, 0, 0, 0, 1740, 1742, 5, 133, 0, 0, 1741, 1743, 5, 44, 0, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1746, 3, 294, 147, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1875, 3, 132, 66, 0, 1748, 1750, 5, 138, 0, 0, 1749, 1751, 5, 44, 0, 0, 1750, 1749, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1755, 3, 800, 400, 0, 1753, 1756, 3, 94, 47, 0, 1754, 1756, 3, 222, 111, 0, 1755, 1753, 1, 0, 0, 0, 1755, 1754, 1, 0, 0, 0, 1756, 1875, 1, 0, 0, 0, 1757, 1759, 5, 138, 0, 0, 1758, 1760, 5, 44, 0, 0, 1759, 1758, 1, 0, 0, 0, 1759, 1760, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 3, 800, 400, 0, 1762, 1763, 7, 15, 0, 0, 1763, 1764, 5, 77, 0, 0, 1764, 1765, 5, 78, 0, 0, 1765, 1875, 1, 0, 0, 0, 1766, 1768, 5, 138, 0, 0, 1767, 1769, 5, 44, 0, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1771, 3, 800, 400, 0, 1771, 1772, 5, 191, 0, 0, 1772, 1774, 5, 437, 0, 0, 1773, 1775, 3, 422, 211, 0, 1774, 1773, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1875, 1, 0, 0, 0, 1776, 1778, 5, 138, 0, 0, 1777, 1779, 5, 44, 0, 0, 1778, 1777, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1780, 1, 0, 0, 0, 1780, 1781, 3, 800, 400, 0, 1781, 1782, 5, 333, 0, 0, 1782, 1783, 5, 342, 0, 0, 1783, 1784, 3, 812, 406, 0, 1784, 1875, 1, 0, 0, 0, 1785, 1787, 5, 138, 0, 0, 1786, 1788, 5, 44, 0, 0, 1787, 1786, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1791, 3, 800, 400, 0, 1790, 1785, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 1793, 7, 16, 0, 0, 1793, 1875, 3, 100, 50, 0, 1794, 1796, 5, 138, 0, 0, 1795, 1797, 5, 44, 0, 0, 1796, 1795, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1799, 3, 800, 400, 0, 1799, 1800, 5, 333, 0, 0, 1800, 1801, 5, 345, 0, 0, 1801, 1802, 3, 818, 409, 0, 1802, 1875, 1, 0, 0, 0, 1803, 1805, 5, 138, 0, 0, 1804, 1806, 5, 44, 0, 0, 1805, 1804, 1, 0, 0, 0, 1805, 1806, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 3, 800, 400, 0, 1808, 1809, 5, 133, 0, 0, 1809, 1810, 5, 438, 0, 0, 1810, 1811, 3, 138, 69, 0, 1811, 1812, 5, 36, 0, 0, 1812, 1821, 5, 219, 0, 0, 1813, 1815, 5, 2, 0, 0, 1814, 1816, 3, 200, 100, 0, 1815, 1814, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 5, 3, 0, 0, 1820, 1822, 1, 0, 0, 0, 1821, 1813, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1875, 1, 0, 0, 0, 1823, 1825, 5, 138, 0, 0, 1824, 1826, 5, 44, 0, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1841, 3, 800, 400, 0, 1828, 1833, 5, 314, 0, 0, 1829, 1831, 5, 105, 0, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1834, 3, 202, 101, 0, 1833, 1830, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1842, 1, 0, 0, 0, 1835, 1839, 5, 333, 0, 0, 1836, 1840, 3, 200, 100, 0, 1837, 1838, 5, 438, 0, 0, 1838, 1840, 3, 138, 69, 0, 1839, 1836, 1, 0, 0, 0, 1839, 1837, 1, 0, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1828, 1, 0, 0, 0, 1841, 1835, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1841, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1875, 1, 0, 0, 0, 1845, 1847, 5, 138, 0, 0, 1846, 1848, 5, 44, 0, 0, 1847, 1846, 1, 0, 0, 0, 1847, 1848, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 1850, 3, 800, 400, 0, 1850, 1851, 5, 191, 0, 0, 1851, 1853, 5, 219, 0, 0, 1852, 1854, 3, 422, 211, 0, 1853, 1852, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1875, 1, 0, 0, 0, 1855, 1857, 5, 138, 0, 0, 1856, 1858, 5, 44, 0, 0, 1857, 1856, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1862, 3, 800, 400, 0, 1860, 1861, 5, 333, 0, 0, 1861, 1863, 5, 174, 0, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1865, 5, 360, 0, 0, 1865, 1867, 3, 652, 326, 0, 1866, 1868, 3, 98, 49, 0, 1867, 1866, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1870, 5, 100, 0, 0, 1870, 1872, 3, 674, 337, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1875, 1, 0, 0, 0, 1873, 1875, 3, 222, 111, 0, 1874, 1641, 1, 0, 0, 0, 1874, 1647, 1, 0, 0, 0, 1874, 1656, 1, 0, 0, 0, 1874, 1659, 1, 0, 0, 0, 1874, 1668, 1, 0, 0, 0, 1874, 1671, 1, 0, 0, 0, 1874, 1674, 1, 0, 0, 0, 1874, 1676, 1, 0, 0, 0, 1874, 1681, 1, 0, 0, 0, 1874, 1688, 1, 0, 0, 0, 1874, 1692, 1, 0, 0, 0, 1874, 1696, 1, 0, 0, 0, 1874, 1700, 1, 0, 0, 0, 1874, 1702, 1, 0, 0, 0, 1874, 1704, 1, 0, 0, 0, 1874, 1707, 1, 0, 0, 0, 1874, 1710, 1, 0, 0, 0, 1874, 1724, 1, 0, 0, 0, 1874, 1729, 1, 0, 0, 0, 1874, 1740, 1, 0, 0, 0, 1874, 1748, 1, 0, 0, 0, 1874, 1757, 1, 0, 0, 0, 1874, 1766, 1, 0, 0, 0, 1874, 1776, 1, 0, 0, 0, 1874, 1790, 1, 0, 0, 0, 1874, 1794, 1, 0, 0, 0, 1874, 1803, 1, 0, 0, 0, 1874, 1823, 1, 0, 0, 0, 1874, 1845, 1, 0, 0, 0, 1874, 1855, 1, 0, 0, 0, 1874, 1873, 1, 0, 0, 0, 1875, 93, 1, 0, 0, 0, 1876, 1877, 5, 333, 0, 0, 1877, 1878, 5, 53, 0, 0, 1878, 1882, 3, 674, 337, 0, 1879, 1880, 5, 191, 0, 0, 1880, 1882, 5, 53, 0, 0, 1881, 1876, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1882, 95, 1, 0, 0, 0, 1883, 1884, 7, 17, 0, 0, 1884, 97, 1, 0, 0, 0, 1885, 1886, 5, 43, 0, 0, 1886, 1887, 3, 316, 158, 0, 1887, 99, 1, 0, 0, 0, 1888, 1889, 5, 2, 0, 0, 1889, 1894, 3, 104, 52, 0, 1890, 1891, 5, 6, 0, 0, 1891, 1893, 3, 104, 52, 0, 1892, 1890, 1, 0, 0, 0, 1893, 1896, 1, 0, 0, 0, 1894, 1892, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1897, 1, 0, 0, 0, 1896, 1894, 1, 0, 0, 0, 1897, 1898, 5, 3, 0, 0, 1898, 101, 1, 0, 0, 0, 1899, 1900, 5, 105, 0, 0, 1900, 1901, 3, 100, 50, 0, 1901, 103, 1, 0, 0, 0, 1902, 1907, 3, 824, 412, 0, 1903, 1904, 5, 10, 0, 0, 1904, 1908, 3, 288, 144, 0, 1905, 1906, 5, 11, 0, 0, 1906, 1908, 3, 286, 143, 0, 1907, 1903, 1, 0, 0, 0, 1907, 1905, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 105, 1, 0, 0, 0, 1909, 1910, 5, 62, 0, 0, 1910, 1911, 5, 422, 0, 0, 1911, 1912, 5, 105, 0, 0, 1912, 1913, 5, 2, 0, 0, 1913, 1914, 3, 822, 411, 0, 1914, 1921, 5, 571, 0, 0, 1915, 1916, 5, 6, 0, 0, 1916, 1917, 3, 822, 411, 0, 1917, 1918, 5, 571, 0, 0, 1918, 1920, 1, 0, 0, 0, 1919, 1915, 1, 0, 0, 0, 1920, 1923, 1, 0, 0, 0, 1921, 1919, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1924, 1, 0, 0, 0, 1923, 1921, 1, 0, 0, 0, 1924, 1925, 5, 3, 0, 0, 1925, 1939, 1, 0, 0, 0, 1926, 1927, 5, 62, 0, 0, 1927, 1928, 5, 422, 0, 0, 1928, 1929, 5, 68, 0, 0, 1929, 1939, 3, 534, 267, 0, 1930, 1931, 5, 62, 0, 0, 1931, 1932, 5, 422, 0, 0, 1932, 1933, 5, 64, 0, 0, 1933, 1934, 3, 534, 267, 0, 1934, 1935, 5, 94, 0, 0, 1935, 1936, 3, 534, 267, 0, 1936, 1939, 1, 0, 0, 0, 1937, 1939, 5, 53, 0, 0, 1938, 1909, 1, 0, 0, 0, 1938, 1926, 1, 0, 0, 0, 1938, 1930, 1, 0, 0, 0, 1938, 1937, 1, 0, 0, 0, 1939, 107, 1, 0, 0, 0, 1940, 1941, 5, 138, 0, 0, 1941, 1942, 5, 360, 0, 0, 1942, 1943, 3, 316, 158, 0, 1943, 1948, 3, 110, 55, 0, 1944, 1945, 5, 6, 0, 0, 1945, 1947, 3, 110, 55, 0, 1946, 1944, 1, 0, 0, 0, 1947, 1950, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 109, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1951, 1952, 5, 133, 0, 0, 1952, 1953, 5, 143, 0, 0, 1953, 1955, 3, 644, 322, 0, 1954, 1956, 3, 96, 48, 0, 1955, 1954, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1982, 1, 0, 0, 0, 1957, 1958, 5, 191, 0, 0, 1958, 1960, 5, 143, 0, 0, 1959, 1961, 3, 422, 211, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1964, 3, 818, 409, 0, 1963, 1965, 3, 96, 48, 0, 1964, 1963, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1982, 1, 0, 0, 0, 1966, 1967, 5, 138, 0, 0, 1967, 1968, 5, 143, 0, 0, 1968, 1971, 3, 818, 409, 0, 1969, 1970, 5, 333, 0, 0, 1970, 1972, 5, 174, 0, 0, 1971, 1969, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1974, 5, 360, 0, 0, 1974, 1976, 3, 652, 326, 0, 1975, 1977, 3, 98, 49, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1979, 1, 0, 0, 0, 1978, 1980, 3, 96, 48, 0, 1979, 1978, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1982, 1, 0, 0, 0, 1981, 1951, 1, 0, 0, 0, 1981, 1957, 1, 0, 0, 0, 1981, 1966, 1, 0, 0, 0, 1982, 111, 1, 0, 0, 0, 1983, 1986, 5, 157, 0, 0, 1984, 1987, 3, 818, 409, 0, 1985, 1987, 5, 30, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1985, 1, 0, 0, 0, 1987, 113, 1, 0, 0, 0, 1988, 1990, 5, 169, 0, 0, 1989, 1991, 5, 107, 0, 0, 1990, 1989, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1994, 3, 774, 387, 0, 1993, 1995, 3, 144, 72, 0, 1994, 1993, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 7, 18, 0, 0, 1997, 1999, 5, 297, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2003, 1, 0, 0, 0, 2000, 2004, 3, 808, 404, 0, 2001, 2004, 5, 343, 0, 0, 2002, 2004, 5, 344, 0, 0, 2003, 2000, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2002, 1, 0, 0, 0, 2004, 2010, 1, 0, 0, 0, 2005, 2007, 5, 100, 0, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2009, 5, 184, 0, 0, 2009, 2011, 3, 808, 404, 0, 2010, 2006, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2013, 1, 0, 0, 0, 2012, 2014, 5, 105, 0, 0, 2013, 2012, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2017, 3, 116, 58, 0, 2016, 2018, 3, 638, 319, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2038, 1, 0, 0, 0, 2019, 2020, 5, 169, 0, 0, 2020, 2021, 5, 2, 0, 0, 2021, 2022, 3, 530, 265, 0, 2022, 2023, 5, 3, 0, 0, 2023, 2025, 5, 94, 0, 0, 2024, 2026, 5, 297, 0, 0, 2025, 2024, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2030, 1, 0, 0, 0, 2027, 2031, 3, 808, 404, 0, 2028, 2031, 5, 343, 0, 0, 2029, 2031, 5, 344, 0, 0, 2030, 2027, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2030, 2029, 1, 0, 0, 0, 2031, 2033, 1, 0, 0, 0, 2032, 2034, 5, 105, 0, 0, 2033, 2032, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2036, 3, 116, 58, 0, 2036, 2038, 1, 0, 0, 0, 2037, 1988, 1, 0, 0, 0, 2037, 2019, 1, 0, 0, 0, 2038, 115, 1, 0, 0, 0, 2039, 2063, 5, 107, 0, 0, 2040, 2063, 5, 112, 0, 0, 2041, 2043, 7, 19, 0, 0, 2042, 2044, 5, 36, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2063, 3, 808, 404, 0, 2046, 2063, 5, 171, 0, 0, 2047, 2063, 5, 216, 0, 0, 2048, 2049, 5, 209, 0, 0, 2049, 2052, 5, 298, 0, 0, 2050, 2053, 3, 148, 74, 0, 2051, 2053, 5, 9, 0, 0, 2052, 2050, 1, 0, 0, 0, 2052, 2051, 1, 0, 0, 0, 2053, 2063, 1, 0, 0, 0, 2054, 2056, 5, 209, 0, 0, 2055, 2057, 5, 77, 0, 0, 2056, 2055, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2059, 5, 78, 0, 0, 2059, 2063, 3, 148, 74, 0, 2060, 2061, 5, 194, 0, 0, 2061, 2063, 3, 808, 404, 0, 2062, 2039, 1, 0, 0, 0, 2062, 2040, 1, 0, 0, 0, 2062, 2041, 1, 0, 0, 0, 2062, 2046, 1, 0, 0, 0, 2062, 2047, 1, 0, 0, 0, 2062, 2048, 1, 0, 0, 0, 2062, 2054, 1, 0, 0, 0, 2062, 2060, 1, 0, 0, 0, 2063, 2066, 1, 0, 0, 0, 2064, 2062, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2079, 1, 0, 0, 0, 2066, 2064, 1, 0, 0, 0, 2067, 2068, 5, 2, 0, 0, 2068, 2073, 3, 118, 59, 0, 2069, 2070, 5, 6, 0, 0, 2070, 2072, 3, 118, 59, 0, 2071, 2069, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2076, 1, 0, 0, 0, 2075, 2073, 1, 0, 0, 0, 2076, 2077, 5, 3, 0, 0, 2077, 2079, 1, 0, 0, 0, 2078, 2064, 1, 0, 0, 0, 2078, 2067, 1, 0, 0, 0, 2079, 117, 1, 0, 0, 0, 2080, 2095, 3, 824, 412, 0, 2081, 2096, 3, 54, 27, 0, 2082, 2096, 3, 202, 101, 0, 2083, 2096, 5, 9, 0, 0, 2084, 2085, 5, 2, 0, 0, 2085, 2090, 3, 52, 26, 0, 2086, 2087, 5, 6, 0, 0, 2087, 2089, 3, 52, 26, 0, 2088, 2086, 1, 0, 0, 0, 2089, 2092, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 2093, 1, 0, 0, 0, 2092, 2090, 1, 0, 0, 0, 2093, 2094, 5, 3, 0, 0, 2094, 2096, 1, 0, 0, 0, 2095, 2081, 1, 0, 0, 0, 2095, 2082, 1, 0, 0, 0, 2095, 2083, 1, 0, 0, 0, 2095, 2084, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 119, 1, 0, 0, 0, 2097, 2099, 5, 46, 0, 0, 2098, 2100, 3, 122, 61, 0, 2099, 2098, 1, 0, 0, 0, 2099, 2100, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2103, 5, 92, 0, 0, 2102, 2104, 3, 294, 147, 0, 2103, 2102, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2171, 3, 772, 386, 0, 2106, 2108, 5, 2, 0, 0, 2107, 2109, 3, 126, 63, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 5, 3, 0, 0, 2111, 2113, 3, 164, 82, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2115, 1, 0, 0, 0, 2114, 2116, 3, 166, 83, 0, 2115, 2114, 1, 0, 0, 0, 2115, 2116, 1, 0, 0, 0, 2116, 2118, 1, 0, 0, 0, 2117, 2119, 3, 170, 85, 0, 2118, 2117, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2122, 3, 172, 86, 0, 2121, 2120, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2124, 1, 0, 0, 0, 2123, 2125, 3, 174, 87, 0, 2124, 2123, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 1, 0, 0, 0, 2126, 2128, 3, 176, 88, 0, 2127, 2126, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2172, 1, 0, 0, 0, 2129, 2130, 5, 275, 0, 0, 2130, 2132, 3, 316, 158, 0, 2131, 2133, 3, 124, 62, 0, 2132, 2131, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2135, 1, 0, 0, 0, 2134, 2136, 3, 166, 83, 0, 2135, 2134, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2138, 1, 0, 0, 0, 2137, 2139, 3, 170, 85, 0, 2138, 2137, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2141, 1, 0, 0, 0, 2140, 2142, 3, 172, 86, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2144, 1, 0, 0, 0, 2143, 2145, 3, 174, 87, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2148, 3, 176, 88, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2172, 1, 0, 0, 0, 2149, 2150, 5, 285, 0, 0, 2150, 2151, 5, 275, 0, 0, 2151, 2153, 3, 780, 390, 0, 2152, 2154, 3, 124, 62, 0, 2153, 2152, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2157, 3, 106, 53, 0, 2156, 2158, 3, 166, 83, 0, 2157, 2156, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 1, 0, 0, 0, 2159, 2161, 3, 170, 85, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2163, 1, 0, 0, 0, 2162, 2164, 3, 172, 86, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 1, 0, 0, 0, 2165, 2167, 3, 174, 87, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2169, 1, 0, 0, 0, 2168, 2170, 3, 176, 88, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 1, 0, 0, 0, 2171, 2106, 1, 0, 0, 0, 2171, 2129, 1, 0, 0, 0, 2171, 2149, 1, 0, 0, 0, 2172, 121, 1, 0, 0, 0, 2173, 2179, 5, 354, 0, 0, 2174, 2179, 5, 352, 0, 0, 2175, 2176, 7, 20, 0, 0, 2176, 2179, 7, 21, 0, 0, 2177, 2179, 5, 367, 0, 0, 2178, 2173, 1, 0, 0, 0, 2178, 2174, 1, 0, 0, 0, 2178, 2175, 1, 0, 0, 0, 2178, 2177, 1, 0, 0, 0, 2179, 123, 1, 0, 0, 0, 2180, 2181, 5, 2, 0, 0, 2181, 2186, 3, 130, 65, 0, 2182, 2183, 5, 6, 0, 0, 2183, 2185, 3, 130, 65, 0, 2184, 2182, 1, 0, 0, 0, 2185, 2188, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 2189, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0, 2189, 2190, 5, 3, 0, 0, 2190, 125, 1, 0, 0, 0, 2191, 2196, 3, 128, 64, 0, 2192, 2193, 5, 6, 0, 0, 2193, 2195, 3, 128, 64, 0, 2194, 2192, 1, 0, 0, 0, 2195, 2198, 1, 0, 0, 0, 2196, 2194, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 127, 1, 0, 0, 0, 2198, 2196, 1, 0, 0, 0, 2199, 2215, 3, 132, 66, 0, 2200, 2201, 5, 120, 0, 0, 2201, 2206, 3, 780, 390, 0, 2202, 2203, 7, 22, 0, 0, 2203, 2205, 3, 140, 70, 0, 2204, 2202, 1, 0, 0, 0, 2205, 2208, 1, 0, 0, 0, 2206, 2204, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2215, 1, 0, 0, 0, 2208, 2206, 1, 0, 0, 0, 2209, 2210, 5, 45, 0, 0, 2210, 2212, 3, 818, 409, 0, 2211, 2209, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 3, 142, 71, 0, 2214, 2199, 1, 0, 0, 0, 2214, 2200, 1, 0, 0, 0, 2214, 2211, 1, 0, 0, 0, 2215, 129, 1, 0, 0, 0, 2216, 2219, 3, 802, 401, 0, 2217, 2218, 5, 105, 0, 0, 2218, 2220, 5, 280, 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2224, 1, 0, 0, 0, 2221, 2223, 3, 134, 67, 0, 2222, 2221, 1, 0, 0, 0, 2223, 2226, 1, 0, 0, 0, 2224, 2222, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2233, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2227, 2228, 5, 45, 0, 0, 2228, 2230, 3, 818, 409, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2231, 1, 0, 0, 0, 2231, 2233, 3, 142, 71, 0, 2232, 2216, 1, 0, 0, 0, 2232, 2229, 1, 0, 0, 0, 2233, 131, 1, 0, 0, 0, 2234, 2235, 3, 802, 401, 0, 2235, 2237, 3, 652, 326, 0, 2236, 2238, 3, 220, 110, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2248, 1, 0, 0, 0, 2239, 2246, 5, 345, 0, 0, 2240, 2247, 5, 544, 0, 0, 2241, 2247, 5, 205, 0, 0, 2242, 2247, 5, 545, 0, 0, 2243, 2247, 5, 546, 0, 0, 2244, 2247, 5, 53, 0, 0, 2245, 2247, 3, 818, 409, 0, 2246, 2240, 1, 0, 0, 0, 2246, 2241, 1, 0, 0, 0, 2246, 2242, 1, 0, 0, 0, 2246, 2243, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2246, 2245, 1, 0, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2239, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2252, 1, 0, 0, 0, 2250, 2251, 5, 543, 0, 0, 2251, 2253, 3, 818, 409, 0, 2252, 2250, 1, 0, 0, 0, 2252, 2253, 1, 0, 0, 0, 2253, 2255, 1, 0, 0, 0, 2254, 2256, 3, 98, 49, 0, 2255, 2254, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2259, 1, 0, 0, 0, 2257, 2258, 5, 105, 0, 0, 2258, 2260, 5, 280, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2264, 1, 0, 0, 0, 2261, 2263, 3, 134, 67, 0, 2262, 2261, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 133, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2268, 5, 45, 0, 0, 2268, 2270, 3, 818, 409, 0, 2269, 2267, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 2276, 3, 136, 68, 0, 2272, 2274, 5, 77, 0, 0, 2273, 2272, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 5, 54, 0, 0, 2276, 2273, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2280, 1, 0, 0, 0, 2278, 2279, 5, 69, 0, 0, 2279, 2281, 7, 9, 0, 0, 2280, 2278, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 135, 1, 0, 0, 0, 2282, 2284, 5, 77, 0, 0, 2283, 2282, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2363, 5, 78, 0, 0, 2286, 2288, 5, 98, 0, 0, 2287, 2289, 3, 400, 200, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2291, 1, 0, 0, 0, 2290, 2292, 3, 178, 89, 0, 2291, 2290, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2363, 1, 0, 0, 0, 2293, 2299, 5, 98, 0, 0, 2294, 2296, 5, 273, 0, 0, 2295, 2297, 5, 77, 0, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2300, 5, 56, 0, 0, 2299, 2294, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2302, 5, 441, 0, 0, 2302, 2304, 3, 360, 180, 0, 2303, 2301, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 1, 0, 0, 0, 2305, 2307, 3, 572, 286, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2309, 1, 0, 0, 0, 2308, 2310, 3, 178, 89, 0, 2309, 2308, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2363, 1, 0, 0, 0, 2311, 2312, 5, 85, 0, 0, 2312, 2314, 5, 245, 0, 0, 2313, 2315, 3, 400, 200, 0, 2314, 2313, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, 1, 0, 0, 0, 2316, 2318, 3, 178, 89, 0, 2317, 2316, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2363, 1, 0, 0, 0, 2319, 2320, 5, 42, 0, 0, 2320, 2321, 5, 2, 0, 0, 2321, 2322, 3, 674, 337, 0, 2322, 2325, 5, 3, 0, 0, 2323, 2324, 5, 269, 0, 0, 2324, 2326, 5, 228, 0, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2363, 1, 0, 0, 0, 2327, 2328, 5, 53, 0, 0, 2328, 2363, 3, 682, 341, 0, 2329, 2330, 5, 438, 0, 0, 2330, 2331, 3, 138, 69, 0, 2331, 2348, 5, 36, 0, 0, 2332, 2341, 5, 219, 0, 0, 2333, 2335, 5, 2, 0, 0, 2334, 2336, 3, 200, 100, 0, 2335, 2334, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2339, 1, 0, 0, 0, 2339, 2340, 5, 3, 0, 0, 2340, 2342, 1, 0, 0, 0, 2341, 2333, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2349, 1, 0, 0, 0, 2343, 2344, 5, 2, 0, 0, 2344, 2345, 3, 674, 337, 0, 2345, 2346, 5, 3, 0, 0, 2346, 2347, 5, 440, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2332, 1, 0, 0, 0, 2348, 2343, 1, 0, 0, 0, 2349, 2363, 1, 0, 0, 0, 2350, 2351, 5, 86, 0, 0, 2351, 2353, 3, 780, 390, 0, 2352, 2354, 3, 144, 72, 0, 2353, 2352, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2357, 3, 152, 76, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2360, 3, 156, 78, 0, 2359, 2358, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2363, 1, 0, 0, 0, 2361, 2363, 3, 98, 49, 0, 2362, 2283, 1, 0, 0, 0, 2362, 2286, 1, 0, 0, 0, 2362, 2293, 1, 0, 0, 0, 2362, 2311, 1, 0, 0, 0, 2362, 2319, 1, 0, 0, 0, 2362, 2327, 1, 0, 0, 0, 2362, 2329, 1, 0, 0, 0, 2362, 2350, 1, 0, 0, 0, 2362, 2361, 1, 0, 0, 0, 2363, 137, 1, 0, 0, 0, 2364, 2368, 5, 139, 0, 0, 2365, 2366, 5, 147, 0, 0, 2366, 2368, 5, 53, 0, 0, 2367, 2364, 1, 0, 0, 0, 2367, 2365, 1, 0, 0, 0, 2368, 139, 1, 0, 0, 0, 2369, 2370, 7, 23, 0, 0, 2370, 141, 1, 0, 0, 0, 2371, 2372, 5, 42, 0, 0, 2372, 2373, 5, 2, 0, 0, 2373, 2374, 3, 674, 337, 0, 2374, 2378, 5, 3, 0, 0, 2375, 2377, 3, 272, 136, 0, 2376, 2375, 1, 0, 0, 0, 2377, 2380, 1, 0, 0, 0, 2378, 2376, 1, 0, 0, 0, 2378, 2379, 1, 0, 0, 0, 2379, 2468, 1, 0, 0, 0, 2380, 2378, 1, 0, 0, 0, 2381, 2385, 5, 98, 0, 0, 2382, 2383, 5, 85, 0, 0, 2383, 2385, 5, 245, 0, 0, 2384, 2381, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2385, 2409, 1, 0, 0, 0, 2386, 2388, 3, 144, 72, 0, 2387, 2389, 3, 150, 75, 0, 2388, 2387, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2391, 1, 0, 0, 0, 2390, 2392, 3, 400, 200, 0, 2391, 2390, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2395, 3, 178, 89, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2399, 1, 0, 0, 0, 2396, 2398, 3, 272, 136, 0, 2397, 2396, 1, 0, 0, 0, 2398, 2401, 1, 0, 0, 0, 2399, 2397, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2410, 1, 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2402, 2406, 3, 180, 90, 0, 2403, 2405, 3, 272, 136, 0, 2404, 2403, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2410, 1, 0, 0, 0, 2408, 2406, 1, 0, 0, 0, 2409, 2386, 1, 0, 0, 0, 2409, 2402, 1, 0, 0, 0, 2410, 2468, 1, 0, 0, 0, 2411, 2413, 5, 199, 0, 0, 2412, 2414, 3, 170, 85, 0, 2413, 2412, 1, 0, 0, 0, 2413, 2414, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 5, 2, 0, 0, 2416, 2421, 3, 154, 77, 0, 2417, 2418, 5, 6, 0, 0, 2418, 2420, 3, 154, 77, 0, 2419, 2417, 1, 0, 0, 0, 2420, 2423, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2424, 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2424, 2426, 5, 3, 0, 0, 2425, 2427, 3, 150, 75, 0, 2426, 2425, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2429, 1, 0, 0, 0, 2428, 2430, 3, 400, 200, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2432, 1, 0, 0, 0, 2431, 2433, 3, 178, 89, 0, 2432, 2431, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2439, 1, 0, 0, 0, 2434, 2435, 5, 103, 0, 0, 2435, 2436, 5, 2, 0, 0, 2436, 2437, 3, 674, 337, 0, 2437, 2438, 5, 3, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2434, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2444, 1, 0, 0, 0, 2441, 2443, 3, 272, 136, 0, 2442, 2441, 1, 0, 0, 0, 2443, 2446, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2468, 1, 0, 0, 0, 2446, 2444, 1, 0, 0, 0, 2447, 2448, 5, 63, 0, 0, 2448, 2449, 5, 245, 0, 0, 2449, 2450, 3, 144, 72, 0, 2450, 2451, 5, 86, 0, 0, 2451, 2453, 3, 780, 390, 0, 2452, 2454, 3, 144, 72, 0, 2453, 2452, 1, 0, 0, 0, 2453, 2454, 1, 0, 0, 0, 2454, 2456, 1, 0, 0, 0, 2455, 2457, 3, 152, 76, 0, 2456, 2455, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2459, 1, 0, 0, 0, 2458, 2460, 3, 156, 78, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2464, 1, 0, 0, 0, 2461, 2463, 3, 272, 136, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2468, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2467, 2371, 1, 0, 0, 0, 2467, 2384, 1, 0, 0, 0, 2467, 2411, 1, 0, 0, 0, 2467, 2447, 1, 0, 0, 0, 2468, 143, 1, 0, 0, 0, 2469, 2470, 5, 2, 0, 0, 2470, 2471, 3, 148, 74, 0, 2471, 2472, 5, 3, 0, 0, 2472, 145, 1, 0, 0, 0, 2473, 2474, 5, 2, 0, 0, 2474, 2479, 3, 802, 401, 0, 2475, 2476, 5, 6, 0, 0, 2476, 2478, 3, 802, 401, 0, 2477, 2475, 1, 0, 0, 0, 2478, 2481, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2482, 1, 0, 0, 0, 2481, 2479, 1, 0, 0, 0, 2482, 2483, 5, 3, 0, 0, 2483, 147, 1, 0, 0, 0, 2484, 2489, 3, 800, 400, 0, 2485, 2486, 5, 6, 0, 0, 2486, 2488, 3, 800, 400, 0, 2487, 2485, 1, 0, 0, 0, 2488, 2491, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 149, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2492, 2493, 5, 441, 0, 0, 2493, 2494, 3, 144, 72, 0, 2494, 151, 1, 0, 0, 0, 2495, 2496, 5, 258, 0, 0, 2496, 2497, 7, 24, 0, 0, 2497, 153, 1, 0, 0, 0, 2498, 2499, 3, 362, 181, 0, 2499, 2506, 5, 105, 0, 0, 2500, 2507, 3, 414, 207, 0, 2501, 2502, 5, 278, 0, 0, 2502, 2503, 5, 2, 0, 0, 2503, 2504, 3, 414, 207, 0, 2504, 2505, 5, 3, 0, 0, 2505, 2507, 1, 0, 0, 0, 2506, 2500, 1, 0, 0, 0, 2506, 2501, 1, 0, 0, 0, 2507, 155, 1, 0, 0, 0, 2508, 2510, 3, 158, 79, 0, 2509, 2511, 3, 160, 80, 0, 2510, 2509, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2517, 1, 0, 0, 0, 2512, 2514, 3, 160, 80, 0, 2513, 2515, 3, 158, 79, 0, 2514, 2513, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2508, 1, 0, 0, 0, 2516, 2512, 1, 0, 0, 0, 2517, 157, 1, 0, 0, 0, 2518, 2519, 5, 80, 0, 0, 2519, 2520, 5, 369, 0, 0, 2520, 2521, 3, 162, 81, 0, 2521, 159, 1, 0, 0, 0, 2522, 2523, 5, 80, 0, 0, 2523, 2524, 5, 182, 0, 0, 2524, 2525, 3, 162, 81, 0, 2525, 161, 1, 0, 0, 0, 2526, 2527, 5, 269, 0, 0, 2527, 2536, 5, 132, 0, 0, 2528, 2536, 5, 315, 0, 0, 2529, 2536, 5, 150, 0, 0, 2530, 2531, 5, 333, 0, 0, 2531, 2533, 7, 25, 0, 0, 2532, 2534, 3, 148, 74, 0, 2533, 2532, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2536, 1, 0, 0, 0, 2535, 2526, 1, 0, 0, 0, 2535, 2528, 1, 0, 0, 0, 2535, 2529, 1, 0, 0, 0, 2535, 2530, 1, 0, 0, 0, 2536, 163, 1, 0, 0, 0, 2537, 2538, 5, 238, 0, 0, 2538, 2539, 5, 2, 0, 0, 2539, 2540, 3, 760, 380, 0, 2540, 2541, 5, 3, 0, 0, 2541, 165, 1, 0, 0, 0, 2542, 2543, 5, 285, 0, 0, 2543, 2544, 5, 147, 0, 0, 2544, 2545, 3, 818, 409, 0, 2545, 2546, 5, 2, 0, 0, 2546, 2551, 3, 168, 84, 0, 2547, 2548, 5, 6, 0, 0, 2548, 2550, 3, 168, 84, 0, 2549, 2547, 1, 0, 0, 0, 2550, 2553, 1, 0, 0, 0, 2551, 2549, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2554, 1, 0, 0, 0, 2553, 2551, 1, 0, 0, 0, 2554, 2555, 5, 3, 0, 0, 2555, 167, 1, 0, 0, 0, 2556, 2563, 3, 800, 400, 0, 2557, 2563, 3, 688, 344, 0, 2558, 2559, 5, 2, 0, 0, 2559, 2560, 3, 674, 337, 0, 2560, 2561, 5, 3, 0, 0, 2561, 2563, 1, 0, 0, 0, 2562, 2556, 1, 0, 0, 0, 2562, 2557, 1, 0, 0, 0, 2562, 2558, 1, 0, 0, 0, 2563, 2565, 1, 0, 0, 0, 2564, 2566, 3, 98, 49, 0, 2565, 2564, 1, 0, 0, 0, 2565, 2566, 1, 0, 0, 0, 2566, 2568, 1, 0, 0, 0, 2567, 2569, 3, 316, 158, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 169, 1, 0, 0, 0, 2570, 2571, 5, 100, 0, 0, 2571, 2572, 3, 818, 409, 0, 2572, 171, 1, 0, 0, 0, 2573, 2574, 5, 105, 0, 0, 2574, 2578, 3, 100, 50, 0, 2575, 2576, 7, 26, 0, 0, 2576, 2578, 5, 277, 0, 0, 2577, 2573, 1, 0, 0, 0, 2577, 2575, 1, 0, 0, 0, 2578, 173, 1, 0, 0, 0, 2579, 2580, 5, 80, 0, 0, 2580, 2586, 5, 161, 0, 0, 2581, 2587, 5, 191, 0, 0, 2582, 2583, 5, 182, 0, 0, 2583, 2587, 5, 320, 0, 0, 2584, 2585, 5, 292, 0, 0, 2585, 2587, 5, 320, 0, 0, 2586, 2581, 1, 0, 0, 0, 2586, 2582, 1, 0, 0, 0, 2586, 2584, 1, 0, 0, 0, 2587, 175, 1, 0, 0, 0, 2588, 2589, 5, 351, 0, 0, 2589, 2590, 3, 770, 385, 0, 2590, 177, 1, 0, 0, 0, 2591, 2592, 5, 100, 0, 0, 2592, 2593, 5, 226, 0, 0, 2593, 2594, 3, 176, 88, 0, 2594, 179, 1, 0, 0, 0, 2595, 2596, 5, 100, 0, 0, 2596, 2597, 5, 226, 0, 0, 2597, 2598, 3, 818, 409, 0, 2598, 181, 1, 0, 0, 0, 2599, 2600, 5, 46, 0, 0, 2600, 2605, 5, 342, 0, 0, 2601, 2603, 3, 294, 147, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 3, 316, 158, 0, 2605, 2602, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2608, 1, 0, 0, 0, 2607, 2609, 3, 144, 72, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 2620, 5, 80, 0, 0, 2611, 2616, 3, 732, 366, 0, 2612, 2613, 5, 6, 0, 0, 2613, 2615, 3, 732, 366, 0, 2614, 2612, 1, 0, 0, 0, 2615, 2618, 1, 0, 0, 0, 2616, 2614, 1, 0, 0, 0, 2616, 2617, 1, 0, 0, 0, 2617, 2621, 1, 0, 0, 0, 2618, 2616, 1, 0, 0, 0, 2619, 2621, 3, 730, 365, 0, 2620, 2611, 1, 0, 0, 0, 2620, 2619, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2623, 3, 610, 305, 0, 2623, 183, 1, 0, 0, 0, 2624, 2625, 5, 138, 0, 0, 2625, 2627, 5, 342, 0, 0, 2626, 2628, 3, 422, 211, 0, 2627, 2626, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2630, 3, 316, 158, 0, 2630, 2631, 5, 333, 0, 0, 2631, 2632, 5, 342, 0, 0, 2632, 2633, 3, 812, 406, 0, 2633, 185, 1, 0, 0, 0, 2634, 2636, 5, 46, 0, 0, 2635, 2637, 3, 122, 61, 0, 2636, 2635, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 5, 92, 0, 0, 2639, 2641, 3, 294, 147, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2643, 3, 188, 94, 0, 2643, 2644, 5, 36, 0, 0, 2644, 2646, 3, 560, 280, 0, 2645, 2647, 3, 190, 95, 0, 2646, 2645, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 187, 1, 0, 0, 0, 2648, 2650, 3, 772, 386, 0, 2649, 2651, 3, 146, 73, 0, 2650, 2649, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 2653, 1, 0, 0, 0, 2652, 2654, 3, 170, 85, 0, 2653, 2652, 1, 0, 0, 0, 2653, 2654, 1, 0, 0, 0, 2654, 2656, 1, 0, 0, 0, 2655, 2657, 3, 172, 86, 0, 2656, 2655, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2660, 3, 174, 87, 0, 2659, 2658, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2662, 1, 0, 0, 0, 2661, 2663, 3, 176, 88, 0, 2662, 2661, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 189, 1, 0, 0, 0, 2664, 2668, 5, 105, 0, 0, 2665, 2669, 5, 174, 0, 0, 2666, 2667, 5, 269, 0, 0, 2667, 2669, 5, 174, 0, 0, 2668, 2665, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2669, 191, 1, 0, 0, 0, 2670, 2672, 5, 46, 0, 0, 2671, 2673, 5, 367, 0, 0, 2672, 2671, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2675, 5, 259, 0, 0, 2675, 2677, 5, 376, 0, 0, 2676, 2678, 3, 294, 147, 0, 2677, 2676, 1, 0, 0, 0, 2677, 2678, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2681, 3, 776, 388, 0, 2680, 2682, 3, 146, 73, 0, 2681, 2680, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2684, 1, 0, 0, 0, 2683, 2685, 3, 170, 85, 0, 2684, 2683, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2687, 1, 0, 0, 0, 2686, 2688, 3, 102, 51, 0, 2687, 2686, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2690, 1, 0, 0, 0, 2689, 2691, 3, 176, 88, 0, 2690, 2689, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2693, 5, 36, 0, 0, 2693, 2695, 3, 560, 280, 0, 2694, 2696, 3, 190, 95, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 193, 1, 0, 0, 0, 2697, 2698, 5, 305, 0, 0, 2698, 2699, 5, 259, 0, 0, 2699, 2701, 5, 376, 0, 0, 2700, 2702, 5, 109, 0, 0, 2701, 2700, 1, 0, 0, 0, 2701, 2702, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 3, 778, 389, 0, 2704, 2706, 3, 190, 95, 0, 2705, 2704, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 195, 1, 0, 0, 0, 2707, 2709, 5, 46, 0, 0, 2708, 2710, 3, 122, 61, 0, 2709, 2708, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2711, 1, 0, 0, 0, 2711, 2713, 5, 328, 0, 0, 2712, 2714, 3, 294, 147, 0, 2713, 2712, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 2721, 3, 780, 390, 0, 2716, 2718, 3, 200, 100, 0, 2717, 2716, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2717, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 2722, 1, 0, 0, 0, 2721, 2717, 1, 0, 0, 0, 2721, 2722, 1, 0, 0, 0, 2722, 197, 1, 0, 0, 0, 2723, 2724, 5, 138, 0, 0, 2724, 2726, 5, 328, 0, 0, 2725, 2727, 3, 422, 211, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2730, 3, 780, 390, 0, 2729, 2731, 3, 200, 100, 0, 2730, 2729, 1, 0, 0, 0, 2731, 2732, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 199, 1, 0, 0, 0, 2734, 2735, 5, 36, 0, 0, 2735, 2768, 3, 654, 327, 0, 2736, 2738, 5, 148, 0, 0, 2737, 2739, 3, 202, 101, 0, 2738, 2737, 1, 0, 0, 0, 2738, 2739, 1, 0, 0, 0, 2739, 2768, 1, 0, 0, 0, 2740, 2742, 5, 225, 0, 0, 2741, 2743, 5, 147, 0, 0, 2742, 2741, 1, 0, 0, 0, 2742, 2743, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2768, 3, 202, 101, 0, 2745, 2746, 7, 27, 0, 0, 2746, 2768, 3, 202, 101, 0, 2747, 2748, 5, 269, 0, 0, 2748, 2768, 7, 28, 0, 0, 2749, 2750, 5, 281, 0, 0, 2750, 2751, 5, 147, 0, 0, 2751, 2768, 3, 800, 400, 0, 2752, 2753, 5, 328, 0, 0, 2753, 2754, 5, 266, 0, 0, 2754, 2768, 3, 316, 158, 0, 2755, 2757, 5, 340, 0, 0, 2756, 2758, 5, 105, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2768, 3, 202, 101, 0, 2760, 2762, 5, 314, 0, 0, 2761, 2763, 5, 105, 0, 0, 2762, 2761, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2765, 1, 0, 0, 0, 2764, 2766, 3, 202, 101, 0, 2765, 2764, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2768, 1, 0, 0, 0, 2767, 2734, 1, 0, 0, 0, 2767, 2736, 1, 0, 0, 0, 2767, 2740, 1, 0, 0, 0, 2767, 2745, 1, 0, 0, 0, 2767, 2747, 1, 0, 0, 0, 2767, 2749, 1, 0, 0, 0, 2767, 2752, 1, 0, 0, 0, 2767, 2755, 1, 0, 0, 0, 2767, 2760, 1, 0, 0, 0, 2768, 201, 1, 0, 0, 0, 2769, 2771, 7, 29, 0, 0, 2770, 2769, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2772, 1, 0, 0, 0, 2772, 2775, 5, 573, 0, 0, 2773, 2775, 3, 812, 406, 0, 2774, 2770, 1, 0, 0, 0, 2774, 2773, 1, 0, 0, 0, 2775, 203, 1, 0, 0, 0, 2776, 2778, 5, 46, 0, 0, 2777, 2779, 3, 366, 183, 0, 2778, 2777, 1, 0, 0, 0, 2778, 2779, 1, 0, 0, 0, 2779, 2781, 1, 0, 0, 0, 2780, 2782, 5, 359, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2785, 5, 295, 0, 0, 2784, 2783, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 2787, 5, 247, 0, 0, 2787, 2800, 3, 818, 409, 0, 2788, 2789, 5, 215, 0, 0, 2789, 2792, 3, 316, 158, 0, 2790, 2791, 5, 239, 0, 0, 2791, 2793, 3, 316, 158, 0, 2792, 2790, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2798, 1, 0, 0, 0, 2794, 2795, 5, 373, 0, 0, 2795, 2799, 3, 316, 158, 0, 2796, 2797, 5, 269, 0, 0, 2797, 2799, 5, 373, 0, 0, 2798, 2794, 1, 0, 0, 0, 2798, 2796, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2801, 1, 0, 0, 0, 2800, 2788, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 205, 1, 0, 0, 0, 2802, 2803, 5, 46, 0, 0, 2803, 2806, 3, 176, 88, 0, 2804, 2805, 5, 282, 0, 0, 2805, 2807, 3, 814, 407, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 5, 255, 0, 0, 2809, 2811, 3, 808, 404, 0, 2810, 2812, 3, 102, 51, 0, 2811, 2810, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 207, 1, 0, 0, 0, 2813, 2814, 5, 46, 0, 0, 2814, 2816, 5, 204, 0, 0, 2815, 2817, 3, 294, 147, 0, 2816, 2815, 1, 0, 0, 0, 2816, 2817, 1, 0, 0, 0, 2817, 2818, 1, 0, 0, 0, 2818, 2820, 3, 818, 409, 0, 2819, 2821, 5, 105, 0, 0, 2820, 2819, 1, 0, 0, 0, 2820, 2821, 1, 0, 0, 0, 2821, 2829, 1, 0, 0, 0, 2822, 2823, 5, 323, 0, 0, 2823, 2828, 3, 790, 395, 0, 2824, 2825, 7, 30, 0, 0, 2825, 2828, 3, 58, 29, 0, 2826, 2828, 5, 150, 0, 0, 2827, 2822, 1, 0, 0, 0, 2827, 2824, 1, 0, 0, 0, 2827, 2826, 1, 0, 0, 0, 2828, 2831, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2829, 2830, 1, 0, 0, 0, 2830, 209, 1, 0, 0, 0, 2831, 2829, 1, 0, 0, 0, 2832, 2833, 5, 138, 0, 0, 2833, 2834, 5, 204, 0, 0, 2834, 2835, 3, 818, 409, 0, 2835, 2840, 5, 369, 0, 0, 2836, 2837, 5, 94, 0, 0, 2837, 2839, 3, 58, 29, 0, 2838, 2836, 1, 0, 0, 0, 2839, 2842, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 211, 1, 0, 0, 0, 2842, 2840, 1, 0, 0, 0, 2843, 2844, 5, 138, 0, 0, 2844, 2845, 5, 204, 0, 0, 2845, 2846, 3, 818, 409, 0, 2846, 2879, 7, 6, 0, 0, 2847, 2848, 5, 443, 0, 0, 2848, 2849, 5, 62, 0, 0, 2849, 2850, 3, 652, 326, 0, 2850, 2851, 5, 247, 0, 0, 2851, 2852, 3, 818, 409, 0, 2852, 2880, 1, 0, 0, 0, 2853, 2854, 5, 442, 0, 0, 2854, 2880, 3, 374, 187, 0, 2855, 2856, 5, 296, 0, 0, 2856, 2880, 3, 378, 189, 0, 2857, 2858, 5, 278, 0, 0, 2858, 2859, 7, 31, 0, 0, 2859, 2860, 3, 316, 158, 0, 2860, 2861, 3, 170, 85, 0, 2861, 2880, 1, 0, 0, 0, 2862, 2863, 5, 278, 0, 0, 2863, 2880, 3, 416, 208, 0, 2864, 2865, 5, 211, 0, 0, 2865, 2880, 3, 382, 191, 0, 2866, 2867, 7, 32, 0, 0, 2867, 2880, 3, 652, 326, 0, 2868, 2869, 5, 41, 0, 0, 2869, 2870, 5, 2, 0, 0, 2870, 2871, 3, 652, 326, 0, 2871, 2872, 5, 36, 0, 0, 2872, 2873, 3, 652, 326, 0, 2873, 2874, 5, 3, 0, 0, 2874, 2880, 1, 0, 0, 0, 2875, 2876, 5, 136, 0, 0, 2876, 2880, 3, 394, 197, 0, 2877, 2880, 3, 312, 156, 0, 2878, 2880, 3, 310, 155, 0, 2879, 2847, 1, 0, 0, 0, 2879, 2853, 1, 0, 0, 0, 2879, 2855, 1, 0, 0, 0, 2879, 2857, 1, 0, 0, 0, 2879, 2862, 1, 0, 0, 0, 2879, 2864, 1, 0, 0, 0, 2879, 2866, 1, 0, 0, 0, 2879, 2868, 1, 0, 0, 0, 2879, 2875, 1, 0, 0, 0, 2879, 2877, 1, 0, 0, 0, 2879, 2878, 1, 0, 0, 0, 2880, 213, 1, 0, 0, 0, 2881, 2882, 5, 46, 0, 0, 2882, 2883, 5, 63, 0, 0, 2883, 2884, 5, 174, 0, 0, 2884, 2885, 5, 381, 0, 0, 2885, 2891, 3, 818, 409, 0, 2886, 2888, 3, 216, 108, 0, 2887, 2886, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2887, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2892, 1, 0, 0, 0, 2891, 2887, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2894, 1, 0, 0, 0, 2893, 2895, 3, 220, 110, 0, 2894, 2893, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 215, 1, 0, 0, 0, 2896, 2898, 7, 33, 0, 0, 2897, 2899, 3, 316, 158, 0, 2898, 2897, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 2903, 1, 0, 0, 0, 2900, 2901, 5, 269, 0, 0, 2901, 2903, 7, 33, 0, 0, 2902, 2896, 1, 0, 0, 0, 2902, 2900, 1, 0, 0, 0, 2903, 217, 1, 0, 0, 0, 2904, 2905, 5, 138, 0, 0, 2905, 2906, 5, 63, 0, 0, 2906, 2907, 5, 174, 0, 0, 2907, 2908, 5, 381, 0, 0, 2908, 2922, 3, 818, 409, 0, 2909, 2911, 3, 216, 108, 0, 2910, 2909, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 1, 0, 0, 0, 2914, 2910, 1, 0, 0, 0, 2914, 2915, 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 2923, 3, 222, 111, 0, 2917, 2919, 3, 216, 108, 0, 2918, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0, 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2914, 1, 0, 0, 0, 2922, 2918, 1, 0, 0, 0, 2923, 219, 1, 0, 0, 0, 2924, 2925, 5, 280, 0, 0, 2925, 2926, 5, 2, 0, 0, 2926, 2931, 3, 226, 113, 0, 2927, 2928, 5, 6, 0, 0, 2928, 2930, 3, 226, 113, 0, 2929, 2927, 1, 0, 0, 0, 2930, 2933, 1, 0, 0, 0, 2931, 2929, 1, 0, 0, 0, 2931, 2932, 1, 0, 0, 0, 2932, 2934, 1, 0, 0, 0, 2933, 2931, 1, 0, 0, 0, 2934, 2935, 5, 3, 0, 0, 2935, 221, 1, 0, 0, 0, 2936, 2937, 5, 280, 0, 0, 2937, 2938, 5, 2, 0, 0, 2938, 2943, 3, 224, 112, 0, 2939, 2940, 5, 6, 0, 0, 2940, 2942, 3, 224, 112, 0, 2941, 2939, 1, 0, 0, 0, 2942, 2945, 1, 0, 0, 0, 2943, 2941, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2946, 1, 0, 0, 0, 2945, 2943, 1, 0, 0, 0, 2946, 2947, 5, 3, 0, 0, 2947, 223, 1, 0, 0, 0, 2948, 2949, 7, 34, 0, 0, 2949, 2950, 3, 226, 113, 0, 2950, 225, 1, 0, 0, 0, 2951, 2952, 3, 824, 412, 0, 2952, 2953, 3, 808, 404, 0, 2953, 227, 1, 0, 0, 0, 2954, 2955, 5, 46, 0, 0, 2955, 2957, 5, 331, 0, 0, 2956, 2958, 3, 294, 147, 0, 2957, 2956, 1, 0, 0, 0, 2957, 2958, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2962, 3, 818, 409, 0, 2960, 2961, 5, 360, 0, 0, 2961, 2963, 3, 808, 404, 0, 2962, 2960, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2965, 1, 0, 0, 0, 2964, 2966, 3, 230, 115, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2967, 1, 0, 0, 0, 2967, 2968, 5, 63, 0, 0, 2968, 2969, 5, 174, 0, 0, 2969, 2970, 5, 381, 0, 0, 2970, 2972, 3, 818, 409, 0, 2971, 2973, 3, 220, 110, 0, 2972, 2971, 1, 0, 0, 0, 2972, 2973, 1, 0, 0, 0, 2973, 229, 1, 0, 0, 0, 2974, 2977, 5, 375, 0, 0, 2975, 2978, 3, 808, 404, 0, 2976, 2978, 5, 78, 0, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 231, 1, 0, 0, 0, 2979, 2980, 5, 138, 0, 0, 2980, 2981, 5, 331, 0, 0, 2981, 2987, 3, 818, 409, 0, 2982, 2988, 3, 222, 111, 0, 2983, 2985, 3, 230, 115, 0, 2984, 2986, 3, 222, 111, 0, 2985, 2984, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 2988, 1, 0, 0, 0, 2987, 2982, 1, 0, 0, 0, 2987, 2983, 1, 0, 0, 0, 2988, 233, 1, 0, 0, 0, 2989, 2990, 5, 46, 0, 0, 2990, 2991, 5, 63, 0, 0, 2991, 2993, 5, 92, 0, 0, 2992, 2994, 3, 294, 147, 0, 2993, 2992, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 2996, 3, 772, 386, 0, 2996, 2998, 5, 2, 0, 0, 2997, 2999, 3, 126, 63, 0, 2998, 2997, 1, 0, 0, 0, 2998, 2999, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3002, 5, 3, 0, 0, 3001, 3003, 3, 164, 82, 0, 3002, 3001, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3004, 1, 0, 0, 0, 3004, 3005, 5, 331, 0, 0, 3005, 3007, 3, 818, 409, 0, 3006, 3008, 3, 220, 110, 0, 3007, 3006, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 0, 3008, 3029, 1, 0, 0, 0, 3009, 3010, 5, 46, 0, 0, 3010, 3011, 5, 63, 0, 0, 3011, 3013, 5, 92, 0, 0, 3012, 3014, 3, 294, 147, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3015, 1, 0, 0, 0, 3015, 3016, 3, 772, 386, 0, 3016, 3017, 5, 285, 0, 0, 3017, 3018, 5, 275, 0, 0, 3018, 3020, 3, 774, 387, 0, 3019, 3021, 3, 124, 62, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3023, 3, 106, 53, 0, 3023, 3024, 5, 331, 0, 0, 3024, 3026, 3, 818, 409, 0, 3025, 3027, 3, 220, 110, 0, 3026, 3025, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 3029, 1, 0, 0, 0, 3028, 2989, 1, 0, 0, 0, 3028, 3009, 1, 0, 0, 0, 3029, 235, 1, 0, 0, 0, 3030, 3031, 5, 444, 0, 0, 3031, 3032, 5, 63, 0, 0, 3032, 3033, 5, 323, 0, 0, 3033, 3043, 3, 790, 395, 0, 3034, 3035, 5, 74, 0, 0, 3035, 3038, 5, 94, 0, 0, 3036, 3038, 5, 59, 0, 0, 3037, 3034, 1, 0, 0, 0, 3037, 3036, 1, 0, 0, 0, 3038, 3039, 1, 0, 0, 0, 3039, 3040, 5, 2, 0, 0, 3040, 3041, 3, 628, 314, 0, 3041, 3042, 5, 3, 0, 0, 3042, 3044, 1, 0, 0, 0, 3043, 3037, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 3045, 1, 0, 0, 0, 3045, 3046, 5, 64, 0, 0, 3046, 3047, 5, 331, 0, 0, 3047, 3048, 3, 818, 409, 0, 3048, 3049, 5, 71, 0, 0, 3049, 3051, 3, 818, 409, 0, 3050, 3052, 3, 220, 110, 0, 3051, 3050, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 237, 1, 0, 0, 0, 3053, 3054, 5, 46, 0, 0, 3054, 3055, 5, 99, 0, 0, 3055, 3057, 5, 257, 0, 0, 3056, 3058, 3, 294, 147, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3062, 5, 62, 0, 0, 3060, 3063, 3, 814, 407, 0, 3061, 3063, 5, 99, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3061, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3065, 5, 331, 0, 0, 3065, 3067, 3, 818, 409, 0, 3066, 3068, 3, 220, 110, 0, 3067, 3066, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 239, 1, 0, 0, 0, 3069, 3070, 5, 138, 0, 0, 3070, 3071, 5, 99, 0, 0, 3071, 3072, 5, 257, 0, 0, 3072, 3075, 5, 62, 0, 0, 3073, 3076, 3, 814, 407, 0, 3074, 3076, 5, 99, 0, 0, 3075, 3073, 1, 0, 0, 0, 3075, 3074, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 3078, 5, 331, 0, 0, 3078, 3079, 3, 818, 409, 0, 3079, 3080, 3, 222, 111, 0, 3080, 241, 1, 0, 0, 0, 3081, 3082, 5, 46, 0, 0, 3082, 3083, 5, 445, 0, 0, 3083, 3084, 3, 818, 409, 0, 3084, 3085, 5, 80, 0, 0, 3085, 3092, 3, 780, 390, 0, 3086, 3090, 5, 36, 0, 0, 3087, 3091, 5, 541, 0, 0, 3088, 3091, 5, 542, 0, 0, 3089, 3091, 3, 826, 413, 0, 3090, 3087, 1, 0, 0, 0, 3090, 3088, 1, 0, 0, 0, 3090, 3089, 1, 0, 0, 0, 3091, 3093, 1, 0, 0, 0, 3092, 3086, 1, 0, 0, 0, 3092, 3093, 1, 0, 0, 0, 3093, 3096, 1, 0, 0, 0, 3094, 3095, 5, 62, 0, 0, 3095, 3097, 7, 35, 0, 0, 3096, 3094, 1, 0, 0, 0, 3096, 3097, 1, 0, 0, 0, 3097, 3100, 1, 0, 0, 0, 3098, 3099, 5, 94, 0, 0, 3099, 3101, 3, 816, 408, 0, 3100, 3098, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3104, 3, 250, 125, 0, 3103, 3102, 1, 0, 0, 0, 3103, 3104, 1, 0, 0, 0, 3104, 3106, 1, 0, 0, 0, 3105, 3107, 3, 252, 126, 0, 3106, 3105, 1, 0, 0, 0, 3106, 3107, 1, 0, 0, 0, 3107, 243, 1, 0, 0, 0, 3108, 3109, 5, 138, 0, 0, 3109, 3110, 5, 445, 0, 0, 3110, 3111, 3, 818, 409, 0, 3111, 3112, 5, 80, 0, 0, 3112, 3115, 3, 780, 390, 0, 3113, 3114, 5, 94, 0, 0, 3114, 3116, 3, 816, 408, 0, 3115, 3113, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3118, 1, 0, 0, 0, 3117, 3119, 3, 250, 125, 0, 3118, 3117, 1, 0, 0, 0, 3118, 3119, 1, 0, 0, 0, 3119, 3121, 1, 0, 0, 0, 3120, 3122, 3, 252, 126, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 245, 1, 0, 0, 0, 3123, 3124, 5, 138, 0, 0, 3124, 3125, 5, 296, 0, 0, 3125, 3127, 3, 796, 398, 0, 3126, 3128, 3, 368, 184, 0, 3127, 3126, 1, 0, 0, 0, 3127, 3128, 1, 0, 0, 0, 3128, 3155, 1, 0, 0, 0, 3129, 3133, 3, 248, 124, 0, 3130, 3132, 3, 248, 124, 0, 3131, 3130, 1, 0, 0, 0, 3132, 3135, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3133, 3134, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3136, 3138, 5, 315, 0, 0, 3137, 3136, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 3156, 1, 0, 0, 0, 3139, 3140, 5, 309, 0, 0, 3140, 3141, 5, 94, 0, 0, 3141, 3156, 3, 798, 399, 0, 3142, 3143, 5, 282, 0, 0, 3143, 3144, 5, 94, 0, 0, 3144, 3156, 3, 814, 407, 0, 3145, 3146, 5, 333, 0, 0, 3146, 3147, 5, 323, 0, 0, 3147, 3156, 3, 32, 16, 0, 3148, 3150, 5, 269, 0, 0, 3149, 3148, 1, 0, 0, 0, 3149, 3150, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 3152, 5, 462, 0, 0, 3152, 3153, 5, 80, 0, 0, 3153, 3154, 5, 204, 0, 0, 3154, 3156, 3, 818, 409, 0, 3155, 3129, 1, 0, 0, 0, 3155, 3139, 1, 0, 0, 0, 3155, 3142, 1, 0, 0, 0, 3155, 3145, 1, 0, 0, 0, 3155, 3149, 1, 0, 0, 0, 3156, 247, 1, 0, 0, 0, 3157, 3159, 5, 205, 0, 0, 3158, 3157, 1, 0, 0, 0, 3158, 3159, 1, 0, 0, 0, 3159, 3160, 1, 0, 0, 0, 3160, 3161, 5, 327, 0, 0, 3161, 3168, 5, 243, 0, 0, 3162, 3164, 5, 205, 0, 0, 3163, 3162, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 3166, 5, 327, 0, 0, 3166, 3168, 5, 181, 0, 0, 3167, 3158, 1, 0, 0, 0, 3167, 3163, 1, 0, 0, 0, 3168, 3187, 1, 0, 0, 0, 3169, 3170, 5, 333, 0, 0, 3170, 3171, 3, 818, 409, 0, 3171, 3174, 7, 36, 0, 0, 3172, 3175, 3, 818, 409, 0, 3173, 3175, 5, 53, 0, 0, 3174, 3172, 1, 0, 0, 0, 3174, 3173, 1, 0, 0, 0, 3175, 3187, 1, 0, 0, 0, 3176, 3177, 5, 333, 0, 0, 3177, 3178, 3, 818, 409, 0, 3178, 3179, 5, 64, 0, 0, 3179, 3180, 5, 434, 0, 0, 3180, 3187, 1, 0, 0, 0, 3181, 3184, 5, 313, 0, 0, 3182, 3185, 3, 818, 409, 0, 3183, 3185, 5, 30, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3183, 1, 0, 0, 0, 3185, 3187, 1, 0, 0, 0, 3186, 3167, 1, 0, 0, 0, 3186, 3169, 1, 0, 0, 0, 3186, 3176, 1, 0, 0, 0, 3186, 3181, 1, 0, 0, 0, 3187, 249, 1, 0, 0, 0, 3188, 3189, 5, 100, 0, 0, 3189, 3190, 5, 2, 0, 0, 3190, 3191, 3, 674, 337, 0, 3191, 3192, 5, 3, 0, 0, 3192, 251, 1, 0, 0, 0, 3193, 3194, 5, 105, 0, 0, 3194, 3195, 5, 42, 0, 0, 3195, 3196, 5, 2, 0, 0, 3196, 3197, 3, 674, 337, 0, 3197, 3198, 5, 3, 0, 0, 3198, 253, 1, 0, 0, 0, 3199, 3200, 5, 46, 0, 0, 3200, 3201, 5, 131, 0, 0, 3201, 3202, 5, 446, 0, 0, 3202, 3203, 3, 818, 409, 0, 3203, 3204, 5, 360, 0, 0, 3204, 3205, 7, 37, 0, 0, 3205, 3206, 5, 215, 0, 0, 3206, 3207, 3, 316, 158, 0, 3207, 255, 1, 0, 0, 0, 3208, 3210, 5, 46, 0, 0, 3209, 3211, 3, 366, 183, 0, 3210, 3209, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3212, 1, 0, 0, 0, 3212, 3213, 5, 357, 0, 0, 3213, 3214, 3, 818, 409, 0, 3214, 3215, 3, 258, 129, 0, 3215, 3216, 3, 260, 130, 0, 3216, 3217, 5, 80, 0, 0, 3217, 3229, 3, 774, 387, 0, 3218, 3225, 5, 447, 0, 0, 3219, 3220, 7, 38, 0, 0, 3220, 3222, 7, 39, 0, 0, 3221, 3223, 5, 36, 0, 0, 3222, 3221, 1, 0, 0, 0, 3222, 3223, 1, 0, 0, 0, 3223, 3224, 1, 0, 0, 0, 3224, 3226, 3, 818, 409, 0, 3225, 3219, 1, 0, 0, 0, 3226, 3227, 1, 0, 0, 0, 3227, 3225, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3230, 1, 0, 0, 0, 3229, 3218, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3236, 1, 0, 0, 0, 3231, 3233, 5, 62, 0, 0, 3232, 3234, 5, 192, 0, 0, 3233, 3232, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3237, 7, 40, 0, 0, 3236, 3231, 1, 0, 0, 0, 3236, 3237, 1, 0, 0, 0, 3237, 3239, 1, 0, 0, 0, 3238, 3240, 3, 264, 132, 0, 3239, 3238, 1, 0, 0, 0, 3239, 3240, 1, 0, 0, 0, 3240, 3241, 1, 0, 0, 0, 3241, 3242, 5, 202, 0, 0, 3242, 3243, 3, 266, 133, 0, 3243, 3244, 5, 2, 0, 0, 3244, 3245, 3, 268, 134, 0, 3245, 3246, 5, 3, 0, 0, 3246, 3287, 1, 0, 0, 0, 3247, 3249, 5, 46, 0, 0, 3248, 3250, 3, 366, 183, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3252, 1, 0, 0, 0, 3251, 3253, 5, 45, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3255, 5, 357, 0, 0, 3255, 3256, 3, 818, 409, 0, 3256, 3257, 3, 258, 129, 0, 3257, 3258, 3, 260, 130, 0, 3258, 3259, 5, 80, 0, 0, 3259, 3262, 3, 774, 387, 0, 3260, 3261, 5, 64, 0, 0, 3261, 3263, 3, 780, 390, 0, 3262, 3260, 1, 0, 0, 0, 3262, 3263, 1, 0, 0, 0, 3263, 3267, 1, 0, 0, 0, 3264, 3266, 3, 272, 136, 0, 3265, 3264, 1, 0, 0, 0, 3266, 3269, 1, 0, 0, 0, 3267, 3265, 1, 0, 0, 0, 3267, 3268, 1, 0, 0, 0, 3268, 3275, 1, 0, 0, 0, 3269, 3267, 1, 0, 0, 0, 3270, 3272, 5, 62, 0, 0, 3271, 3273, 5, 192, 0, 0, 3272, 3271, 1, 0, 0, 0, 3272, 3273, 1, 0, 0, 0, 3273, 3274, 1, 0, 0, 0, 3274, 3276, 7, 40, 0, 0, 3275, 3270, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3278, 1, 0, 0, 0, 3277, 3279, 3, 264, 132, 0, 3278, 3277, 1, 0, 0, 0, 3278, 3279, 1, 0, 0, 0, 3279, 3280, 1, 0, 0, 0, 3280, 3281, 5, 202, 0, 0, 3281, 3282, 3, 266, 133, 0, 3282, 3283, 5, 2, 0, 0, 3283, 3284, 3, 268, 134, 0, 3284, 3285, 5, 3, 0, 0, 3285, 3287, 1, 0, 0, 0, 3286, 3208, 1, 0, 0, 0, 3286, 3247, 1, 0, 0, 0, 3287, 257, 1, 0, 0, 0, 3288, 3293, 5, 145, 0, 0, 3289, 3293, 5, 135, 0, 0, 3290, 3291, 5, 242, 0, 0, 3291, 3293, 5, 275, 0, 0, 3292, 3288, 1, 0, 0, 0, 3292, 3289, 1, 0, 0, 0, 3292, 3290, 1, 0, 0, 0, 3293, 259, 1, 0, 0, 0, 3294, 3299, 3, 262, 131, 0, 3295, 3296, 5, 82, 0, 0, 3296, 3298, 3, 262, 131, 0, 3297, 3295, 1, 0, 0, 0, 3298, 3301, 1, 0, 0, 0, 3299, 3297, 1, 0, 0, 0, 3299, 3300, 1, 0, 0, 0, 3300, 261, 1, 0, 0, 0, 3301, 3299, 1, 0, 0, 0, 3302, 3311, 5, 241, 0, 0, 3303, 3311, 5, 182, 0, 0, 3304, 3307, 5, 369, 0, 0, 3305, 3306, 5, 275, 0, 0, 3306, 3308, 3, 148, 74, 0, 3307, 3305, 1, 0, 0, 0, 3307, 3308, 1, 0, 0, 0, 3308, 3311, 1, 0, 0, 0, 3309, 3311, 5, 358, 0, 0, 3310, 3302, 1, 0, 0, 0, 3310, 3303, 1, 0, 0, 0, 3310, 3304, 1, 0, 0, 0, 3310, 3309, 1, 0, 0, 0, 3311, 263, 1, 0, 0, 0, 3312, 3313, 5, 102, 0, 0, 3313, 3314, 5, 2, 0, 0, 3314, 3315, 3, 674, 337, 0, 3315, 3316, 5, 3, 0, 0, 3316, 265, 1, 0, 0, 0, 3317, 3318, 5, 211, 0, 0, 3318, 3322, 3, 806, 403, 0, 3319, 3320, 5, 296, 0, 0, 3320, 3322, 3, 796, 398, 0, 3321, 3317, 1, 0, 0, 0, 3321, 3319, 1, 0, 0, 0, 3322, 267, 1, 0, 0, 0, 3323, 3326, 3, 270, 135, 0, 3324, 3326, 1, 0, 0, 0, 3325, 3323, 1, 0, 0, 0, 3325, 3324, 1, 0, 0, 0, 3326, 3331, 1, 0, 0, 0, 3327, 3328, 5, 6, 0, 0, 3328, 3330, 3, 270, 135, 0, 3329, 3327, 1, 0, 0, 0, 3330, 3333, 1, 0, 0, 0, 3331, 3329, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 269, 1, 0, 0, 0, 3333, 3331, 1, 0, 0, 0, 3334, 3339, 5, 571, 0, 0, 3335, 3339, 5, 573, 0, 0, 3336, 3339, 3, 808, 404, 0, 3337, 3339, 3, 824, 412, 0, 3338, 3334, 1, 0, 0, 0, 3338, 3335, 1, 0, 0, 0, 3338, 3336, 1, 0, 0, 0, 3338, 3337, 1, 0, 0, 0, 3339, 271, 1, 0, 0, 0, 3340, 3342, 5, 77, 0, 0, 3341, 3340, 1, 0, 0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 3343, 1, 0, 0, 0, 3343, 3351, 5, 54, 0, 0, 3344, 3345, 5, 69, 0, 0, 3345, 3351, 7, 9, 0, 0, 3346, 3347, 5, 77, 0, 0, 3347, 3351, 5, 371, 0, 0, 3348, 3349, 5, 269, 0, 0, 3349, 3351, 5, 228, 0, 0, 3350, 3341, 1, 0, 0, 0, 3350, 3344, 1, 0, 0, 0, 3350, 3346, 1, 0, 0, 0, 3350, 3348, 1, 0, 0, 0, 3351, 273, 1, 0, 0, 0, 3352, 3353, 5, 46, 0, 0, 3353, 3354, 5, 198, 0, 0, 3354, 3355, 5, 357, 0, 0, 3355, 3356, 3, 818, 409, 0, 3356, 3357, 5, 80, 0, 0, 3357, 3367, 3, 824, 412, 0, 3358, 3359, 5, 102, 0, 0, 3359, 3364, 3, 276, 138, 0, 3360, 3361, 5, 33, 0, 0, 3361, 3363, 3, 276, 138, 0, 3362, 3360, 1, 0, 0, 0, 3363, 3366, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3364, 3365, 1, 0, 0, 0, 3365, 3368, 1, 0, 0, 0, 3366, 3364, 1, 0, 0, 0, 3367, 3358, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 3369, 1, 0, 0, 0, 3369, 3370, 5, 202, 0, 0, 3370, 3371, 3, 266, 133, 0, 3371, 3372, 5, 2, 0, 0, 3372, 3373, 5, 3, 0, 0, 3373, 275, 1, 0, 0, 0, 3374, 3375, 3, 818, 409, 0, 3375, 3376, 5, 68, 0, 0, 3376, 3377, 5, 2, 0, 0, 3377, 3381, 3, 808, 404, 0, 3378, 3380, 3, 462, 231, 0, 3379, 3378, 1, 0, 0, 0, 3380, 3383, 1, 0, 0, 0, 3381, 3379, 1, 0, 0, 0, 3381, 3382, 1, 0, 0, 0, 3382, 3384, 1, 0, 0, 0, 3383, 3381, 1, 0, 0, 0, 3384, 3385, 5, 3, 0, 0, 3385, 277, 1, 0, 0, 0, 3386, 3387, 5, 138, 0, 0, 3387, 3388, 5, 198, 0, 0, 3388, 3389, 5, 357, 0, 0, 3389, 3395, 3, 818, 409, 0, 3390, 3392, 5, 193, 0, 0, 3391, 3393, 7, 14, 0, 0, 3392, 3391, 1, 0, 0, 0, 3392, 3393, 1, 0, 0, 0, 3393, 3396, 1, 0, 0, 0, 3394, 3396, 5, 186, 0, 0, 3395, 3390, 1, 0, 0, 0, 3395, 3394, 1, 0, 0, 0, 3396, 279, 1, 0, 0, 0, 3397, 3398, 5, 46, 0, 0, 3398, 3399, 5, 140, 0, 0, 3399, 3400, 3, 316, 158, 0, 3400, 3401, 5, 42, 0, 0, 3401, 3402, 5, 2, 0, 0, 3402, 3403, 3, 674, 337, 0, 3403, 3407, 5, 3, 0, 0, 3404, 3406, 3, 272, 136, 0, 3405, 3404, 1, 0, 0, 0, 3406, 3409, 1, 0, 0, 0, 3407, 3405, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 281, 1, 0, 0, 0, 3409, 3407, 1, 0, 0, 0, 3410, 3412, 5, 46, 0, 0, 3411, 3413, 3, 366, 183, 0, 3412, 3411, 1, 0, 0, 0, 3412, 3413, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3415, 5, 136, 0, 0, 3415, 3430, 3, 806, 403, 0, 3416, 3417, 3, 392, 196, 0, 3417, 3418, 3, 284, 142, 0, 3418, 3431, 1, 0, 0, 0, 3419, 3420, 5, 2, 0, 0, 3420, 3425, 3, 290, 145, 0, 3421, 3422, 5, 6, 0, 0, 3422, 3424, 3, 290, 145, 0, 3423, 3421, 1, 0, 0, 0, 3424, 3427, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3428, 1, 0, 0, 0, 3427, 3425, 1, 0, 0, 0, 3428, 3429, 5, 3, 0, 0, 3429, 3431, 1, 0, 0, 0, 3430, 3416, 1, 0, 0, 0, 3430, 3419, 1, 0, 0, 0, 3431, 3489, 1, 0, 0, 0, 3432, 3433, 5, 46, 0, 0, 3433, 3434, 5, 278, 0, 0, 3434, 3435, 3, 414, 207, 0, 3435, 3436, 3, 284, 142, 0, 3436, 3489, 1, 0, 0, 0, 3437, 3438, 5, 46, 0, 0, 3438, 3439, 5, 360, 0, 0, 3439, 3440, 3, 316, 158, 0, 3440, 3458, 5, 36, 0, 0, 3441, 3443, 5, 2, 0, 0, 3442, 3444, 3, 642, 321, 0, 3443, 3442, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3445, 1, 0, 0, 0, 3445, 3459, 5, 3, 0, 0, 3446, 3447, 5, 196, 0, 0, 3447, 3455, 5, 2, 0, 0, 3448, 3452, 3, 808, 404, 0, 3449, 3451, 3, 462, 231, 0, 3450, 3449, 1, 0, 0, 0, 3451, 3454, 1, 0, 0, 0, 3452, 3450, 1, 0, 0, 0, 3452, 3453, 1, 0, 0, 0, 3453, 3456, 1, 0, 0, 0, 3454, 3452, 1, 0, 0, 0, 3455, 3448, 1, 0, 0, 0, 3455, 3456, 1, 0, 0, 0, 3456, 3457, 1, 0, 0, 0, 3457, 3459, 5, 3, 0, 0, 3458, 3441, 1, 0, 0, 0, 3458, 3446, 1, 0, 0, 0, 3459, 3489, 1, 0, 0, 0, 3460, 3461, 5, 46, 0, 0, 3461, 3462, 5, 360, 0, 0, 3462, 3468, 3, 316, 158, 0, 3463, 3464, 5, 36, 0, 0, 3464, 3466, 5, 299, 0, 0, 3465, 3463, 1, 0, 0, 0, 3465, 3466, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3469, 3, 284, 142, 0, 3468, 3465, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3489, 1, 0, 0, 0, 3470, 3471, 5, 46, 0, 0, 3471, 3472, 5, 355, 0, 0, 3472, 3473, 5, 325, 0, 0, 3473, 3474, 7, 41, 0, 0, 3474, 3475, 3, 316, 158, 0, 3475, 3476, 3, 284, 142, 0, 3476, 3489, 1, 0, 0, 0, 3477, 3478, 5, 46, 0, 0, 3478, 3480, 5, 108, 0, 0, 3479, 3481, 3, 294, 147, 0, 3480, 3479, 1, 0, 0, 0, 3480, 3481, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3486, 3, 316, 158, 0, 3483, 3487, 3, 284, 142, 0, 3484, 3485, 5, 64, 0, 0, 3485, 3487, 3, 316, 158, 0, 3486, 3483, 1, 0, 0, 0, 3486, 3484, 1, 0, 0, 0, 3487, 3489, 1, 0, 0, 0, 3488, 3410, 1, 0, 0, 0, 3488, 3432, 1, 0, 0, 0, 3488, 3437, 1, 0, 0, 0, 3488, 3460, 1, 0, 0, 0, 3488, 3470, 1, 0, 0, 0, 3488, 3477, 1, 0, 0, 0, 3489, 283, 1, 0, 0, 0, 3490, 3491, 5, 2, 0, 0, 3491, 3496, 3, 286, 143, 0, 3492, 3493, 5, 6, 0, 0, 3493, 3495, 3, 286, 143, 0, 3494, 3492, 1, 0, 0, 0, 3495, 3498, 1, 0, 0, 0, 3496, 3494, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3496, 1, 0, 0, 0, 3499, 3500, 5, 3, 0, 0, 3500, 285, 1, 0, 0, 0, 3501, 3504, 3, 824, 412, 0, 3502, 3503, 5, 10, 0, 0, 3503, 3505, 3, 288, 144, 0, 3504, 3502, 1, 0, 0, 0, 3504, 3505, 1, 0, 0, 0, 3505, 287, 1, 0, 0, 0, 3506, 3513, 3, 388, 194, 0, 3507, 3513, 3, 834, 417, 0, 3508, 3513, 3, 726, 363, 0, 3509, 3513, 3, 202, 101, 0, 3510, 3513, 3, 808, 404, 0, 3511, 3513, 5, 407, 0, 0, 3512, 3506, 1, 0, 0, 0, 3512, 3507, 1, 0, 0, 0, 3512, 3508, 1, 0, 0, 0, 3512, 3509, 1, 0, 0, 0, 3512, 3510, 1, 0, 0, 0, 3512, 3511, 1, 0, 0, 0, 3513, 289, 1, 0, 0, 0, 3514, 3515, 3, 826, 413, 0, 3515, 3516, 5, 10, 0, 0, 3516, 3517, 3, 288, 144, 0, 3517, 291, 1, 0, 0, 0, 3518, 3519, 5, 138, 0, 0, 3519, 3520, 5, 360, 0, 0, 3520, 3521, 3, 316, 158, 0, 3521, 3522, 5, 133, 0, 0, 3522, 3524, 5, 450, 0, 0, 3523, 3525, 3, 294, 147, 0, 3524, 3523, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 3526, 1, 0, 0, 0, 3526, 3529, 3, 808, 404, 0, 3527, 3528, 7, 42, 0, 0, 3528, 3530, 3, 808, 404, 0, 3529, 3527, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3541, 1, 0, 0, 0, 3531, 3532, 5, 138, 0, 0, 3532, 3533, 5, 360, 0, 0, 3533, 3534, 3, 316, 158, 0, 3534, 3535, 5, 309, 0, 0, 3535, 3536, 5, 450, 0, 0, 3536, 3537, 3, 808, 404, 0, 3537, 3538, 5, 94, 0, 0, 3538, 3539, 3, 808, 404, 0, 3539, 3541, 1, 0, 0, 0, 3540, 3518, 1, 0, 0, 0, 3540, 3531, 1, 0, 0, 0, 3541, 293, 1, 0, 0, 0, 3542, 3543, 5, 220, 0, 0, 3543, 3544, 5, 77, 0, 0, 3544, 3545, 5, 396, 0, 0, 3545, 295, 1, 0, 0, 0, 3546, 3547, 5, 46, 0, 0, 3547, 3548, 5, 278, 0, 0, 3548, 3549, 5, 156, 0, 0, 3549, 3551, 3, 316, 158, 0, 3550, 3552, 5, 53, 0, 0, 3551, 3550, 1, 0, 0, 0, 3551, 3552, 1, 0, 0, 0, 3552, 3553, 1, 0, 0, 0, 3553, 3554, 5, 62, 0, 0, 3554, 3555, 5, 360, 0, 0, 3555, 3556, 3, 652, 326, 0, 3556, 3559, 3, 170, 85, 0, 3557, 3558, 5, 206, 0, 0, 3558, 3560, 3, 316, 158, 0, 3559, 3557, 1, 0, 0, 0, 3559, 3560, 1, 0, 0, 0, 3560, 3561, 1, 0, 0, 0, 3561, 3562, 5, 36, 0, 0, 3562, 3567, 3, 298, 149, 0, 3563, 3564, 5, 6, 0, 0, 3564, 3566, 3, 298, 149, 0, 3565, 3563, 1, 0, 0, 0, 3566, 3569, 1, 0, 0, 0, 3567, 3565, 1, 0, 0, 0, 3567, 3568, 1, 0, 0, 0, 3568, 297, 1, 0, 0, 0, 3569, 3567, 1, 0, 0, 0, 3570, 3571, 5, 278, 0, 0, 3571, 3572, 5, 571, 0, 0, 3572, 3574, 3, 414, 207, 0, 3573, 3575, 3, 412, 206, 0, 3574, 3573, 1, 0, 0, 0, 3574, 3575, 1, 0, 0, 0, 3575, 3583, 1, 0, 0, 0, 3576, 3581, 5, 62, 0, 0, 3577, 3582, 5, 325, 0, 0, 3578, 3579, 5, 83, 0, 0, 3579, 3580, 5, 147, 0, 0, 3580, 3582, 3, 316, 158, 0, 3581, 3577, 1, 0, 0, 0, 3581, 3578, 1, 0, 0, 0, 3582, 3584, 1, 0, 0, 0, 3583, 3576, 1, 0, 0, 0, 3583, 3584, 1, 0, 0, 0, 3584, 3586, 1, 0, 0, 0, 3585, 3587, 5, 302, 0, 0, 3586, 3585, 1, 0, 0, 0, 3586, 3587, 1, 0, 0, 0, 3587, 3597, 1, 0, 0, 0, 3588, 3589, 5, 211, 0, 0, 3589, 3591, 5, 571, 0, 0, 3590, 3592, 3, 528, 264, 0, 3591, 3590, 1, 0, 0, 0, 3591, 3592, 1, 0, 0, 0, 3592, 3593, 1, 0, 0, 0, 3593, 3597, 3, 382, 191, 0, 3594, 3595, 5, 345, 0, 0, 3595, 3597, 3, 652, 326, 0, 3596, 3570, 1, 0, 0, 0, 3596, 3588, 1, 0, 0, 0, 3596, 3594, 1, 0, 0, 0, 3597, 299, 1, 0, 0, 0, 3598, 3599, 5, 46, 0, 0, 3599, 3600, 5, 278, 0, 0, 3600, 3601, 5, 206, 0, 0, 3601, 3602, 3, 316, 158, 0, 3602, 3603, 3, 170, 85, 0, 3603, 301, 1, 0, 0, 0, 3604, 3605, 5, 138, 0, 0, 3605, 3606, 5, 278, 0, 0, 3606, 3607, 5, 206, 0, 0, 3607, 3608, 3, 316, 158, 0, 3608, 3627, 3, 170, 85, 0, 3609, 3610, 5, 133, 0, 0, 3610, 3615, 3, 298, 149, 0, 3611, 3612, 5, 6, 0, 0, 3612, 3614, 3, 298, 149, 0, 3613, 3611, 1, 0, 0, 0, 3614, 3617, 1, 0, 0, 0, 3615, 3613, 1, 0, 0, 0, 3615, 3616, 1, 0, 0, 0, 3616, 3628, 1, 0, 0, 0, 3617, 3615, 1, 0, 0, 0, 3618, 3619, 5, 191, 0, 0, 3619, 3624, 3, 304, 152, 0, 3620, 3621, 5, 6, 0, 0, 3621, 3623, 3, 304, 152, 0, 3622, 3620, 1, 0, 0, 0, 3623, 3626, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3624, 3625, 1, 0, 0, 0, 3625, 3628, 1, 0, 0, 0, 3626, 3624, 1, 0, 0, 0, 3627, 3609, 1, 0, 0, 0, 3627, 3618, 1, 0, 0, 0, 3628, 303, 1, 0, 0, 0, 3629, 3630, 7, 43, 0, 0, 3630, 3631, 5, 571, 0, 0, 3631, 3632, 3, 528, 264, 0, 3632, 305, 1, 0, 0, 0, 3633, 3634, 5, 301, 0, 0, 3634, 3635, 5, 281, 0, 0, 3635, 3636, 5, 147, 0, 0, 3636, 3637, 3, 816, 408, 0, 3637, 3638, 5, 94, 0, 0, 3638, 3639, 3, 814, 407, 0, 3639, 307, 1, 0, 0, 0, 3640, 3663, 5, 191, 0, 0, 3641, 3664, 5, 328, 0, 0, 3642, 3664, 5, 226, 0, 0, 3643, 3664, 5, 108, 0, 0, 3644, 3664, 5, 168, 0, 0, 3645, 3664, 5, 342, 0, 0, 3646, 3664, 5, 452, 0, 0, 3647, 3664, 5, 331, 0, 0, 3648, 3649, 5, 131, 0, 0, 3649, 3664, 5, 446, 0, 0, 3650, 3651, 5, 198, 0, 0, 3651, 3664, 5, 357, 0, 0, 3652, 3664, 5, 204, 0, 0, 3653, 3655, 5, 295, 0, 0, 3654, 3653, 1, 0, 0, 0, 3654, 3655, 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3664, 5, 247, 0, 0, 3657, 3658, 5, 63, 0, 0, 3658, 3659, 5, 174, 0, 0, 3659, 3664, 5, 381, 0, 0, 3660, 3661, 5, 355, 0, 0, 3661, 3662, 5, 325, 0, 0, 3662, 3664, 7, 41, 0, 0, 3663, 3641, 1, 0, 0, 0, 3663, 3642, 1, 0, 0, 0, 3663, 3643, 1, 0, 0, 0, 3663, 3644, 1, 0, 0, 0, 3663, 3645, 1, 0, 0, 0, 3663, 3646, 1, 0, 0, 0, 3663, 3647, 1, 0, 0, 0, 3663, 3648, 1, 0, 0, 0, 3663, 3650, 1, 0, 0, 0, 3663, 3652, 1, 0, 0, 0, 3663, 3654, 1, 0, 0, 0, 3663, 3657, 1, 0, 0, 0, 3663, 3660, 1, 0, 0, 0, 3664, 3666, 1, 0, 0, 0, 3665, 3667, 3, 422, 211, 0, 3666, 3665, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3668, 1, 0, 0, 0, 3668, 3670, 3, 784, 392, 0, 3669, 3671, 3, 96, 48, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3848, 1, 0, 0, 0, 3672, 3674, 5, 191, 0, 0, 3673, 3675, 5, 259, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3678, 5, 376, 0, 0, 3677, 3679, 3, 422, 211, 0, 3678, 3677, 1, 0, 0, 0, 3678, 3679, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3685, 3, 778, 389, 0, 3681, 3682, 5, 6, 0, 0, 3682, 3684, 3, 778, 389, 0, 3683, 3681, 1, 0, 0, 0, 3684, 3687, 1, 0, 0, 0, 3685, 3683, 1, 0, 0, 0, 3685, 3686, 1, 0, 0, 0, 3686, 3689, 1, 0, 0, 0, 3687, 3685, 1, 0, 0, 0, 3688, 3690, 3, 96, 48, 0, 3689, 3688, 1, 0, 0, 0, 3689, 3690, 1, 0, 0, 0, 3690, 3848, 1, 0, 0, 0, 3691, 3693, 5, 191, 0, 0, 3692, 3694, 5, 63, 0, 0, 3693, 3692, 1, 0, 0, 0, 3693, 3694, 1, 0, 0, 0, 3694, 3695, 1, 0, 0, 0, 3695, 3697, 5, 92, 0, 0, 3696, 3698, 3, 422, 211, 0, 3697, 3696, 1, 0, 0, 0, 3697, 3698, 1, 0, 0, 0, 3698, 3699, 1, 0, 0, 0, 3699, 3701, 3, 762, 381, 0, 3700, 3702, 3, 96, 48, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, 0, 0, 0, 3702, 3848, 1, 0, 0, 0, 3703, 3704, 5, 191, 0, 0, 3704, 3706, 5, 323, 0, 0, 3705, 3707, 3, 422, 211, 0, 3706, 3705, 1, 0, 0, 0, 3706, 3707, 1, 0, 0, 0, 3707, 3708, 1, 0, 0, 0, 3708, 3710, 3, 764, 382, 0, 3709, 3711, 3, 96, 48, 0, 3710, 3709, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3848, 1, 0, 0, 0, 3712, 3713, 5, 191, 0, 0, 3713, 3715, 7, 44, 0, 0, 3714, 3716, 3, 422, 211, 0, 3715, 3714, 1, 0, 0, 0, 3715, 3716, 1, 0, 0, 0, 3716, 3717, 1, 0, 0, 0, 3717, 3718, 3, 818, 409, 0, 3718, 3719, 5, 80, 0, 0, 3719, 3721, 3, 316, 158, 0, 3720, 3722, 3, 96, 48, 0, 3721, 3720, 1, 0, 0, 0, 3721, 3722, 1, 0, 0, 0, 3722, 3848, 1, 0, 0, 0, 3723, 3724, 5, 191, 0, 0, 3724, 3726, 7, 32, 0, 0, 3725, 3727, 3, 422, 211, 0, 3726, 3725, 1, 0, 0, 0, 3726, 3727, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3733, 3, 652, 326, 0, 3729, 3730, 5, 6, 0, 0, 3730, 3732, 3, 652, 326, 0, 3731, 3729, 1, 0, 0, 0, 3732, 3735, 1, 0, 0, 0, 3733, 3731, 1, 0, 0, 0, 3733, 3734, 1, 0, 0, 0, 3734, 3737, 1, 0, 0, 0, 3735, 3733, 1, 0, 0, 0, 3736, 3738, 3, 96, 48, 0, 3737, 3736, 1, 0, 0, 0, 3737, 3738, 1, 0, 0, 0, 3738, 3848, 1, 0, 0, 0, 3739, 3740, 5, 191, 0, 0, 3740, 3741, 5, 226, 0, 0, 3741, 3743, 5, 109, 0, 0, 3742, 3744, 3, 422, 211, 0, 3743, 3742, 1, 0, 0, 0, 3743, 3744, 1, 0, 0, 0, 3744, 3745, 1, 0, 0, 0, 3745, 3747, 3, 314, 157, 0, 3746, 3748, 3, 96, 48, 0, 3747, 3746, 1, 0, 0, 0, 3747, 3748, 1, 0, 0, 0, 3748, 3848, 1, 0, 0, 0, 3749, 3750, 5, 191, 0, 0, 3750, 3752, 5, 41, 0, 0, 3751, 3753, 3, 422, 211, 0, 3752, 3751, 1, 0, 0, 0, 3752, 3753, 1, 0, 0, 0, 3753, 3754, 1, 0, 0, 0, 3754, 3755, 5, 2, 0, 0, 3755, 3756, 3, 652, 326, 0, 3756, 3757, 5, 36, 0, 0, 3757, 3758, 3, 652, 326, 0, 3758, 3760, 5, 3, 0, 0, 3759, 3761, 3, 96, 48, 0, 3760, 3759, 1, 0, 0, 0, 3760, 3761, 1, 0, 0, 0, 3761, 3848, 1, 0, 0, 0, 3762, 3763, 5, 191, 0, 0, 3763, 3764, 5, 278, 0, 0, 3764, 3766, 7, 31, 0, 0, 3765, 3767, 3, 422, 211, 0, 3766, 3765, 1, 0, 0, 0, 3766, 3767, 1, 0, 0, 0, 3767, 3768, 1, 0, 0, 0, 3768, 3769, 3, 316, 158, 0, 3769, 3771, 3, 170, 85, 0, 3770, 3772, 3, 96, 48, 0, 3771, 3770, 1, 0, 0, 0, 3771, 3772, 1, 0, 0, 0, 3772, 3848, 1, 0, 0, 0, 3773, 3774, 5, 191, 0, 0, 3774, 3775, 5, 281, 0, 0, 3775, 3776, 5, 147, 0, 0, 3776, 3778, 3, 816, 408, 0, 3777, 3779, 3, 96, 48, 0, 3778, 3777, 1, 0, 0, 0, 3778, 3779, 1, 0, 0, 0, 3779, 3848, 1, 0, 0, 0, 3780, 3781, 5, 191, 0, 0, 3781, 3783, 5, 451, 0, 0, 3782, 3784, 3, 422, 211, 0, 3783, 3782, 1, 0, 0, 0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3787, 3, 818, 409, 0, 3786, 3788, 3, 96, 48, 0, 3787, 3786, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3848, 1, 0, 0, 0, 3789, 3790, 5, 191, 0, 0, 3790, 3792, 5, 351, 0, 0, 3791, 3793, 3, 422, 211, 0, 3792, 3791, 1, 0, 0, 0, 3792, 3793, 1, 0, 0, 0, 3793, 3794, 1, 0, 0, 0, 3794, 3848, 3, 770, 385, 0, 3795, 3796, 5, 191, 0, 0, 3796, 3798, 5, 443, 0, 0, 3797, 3799, 3, 422, 211, 0, 3798, 3797, 1, 0, 0, 0, 3798, 3799, 1, 0, 0, 0, 3799, 3800, 1, 0, 0, 0, 3800, 3801, 5, 62, 0, 0, 3801, 3802, 3, 652, 326, 0, 3802, 3803, 5, 247, 0, 0, 3803, 3805, 3, 818, 409, 0, 3804, 3806, 3, 96, 48, 0, 3805, 3804, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 3848, 1, 0, 0, 0, 3807, 3808, 5, 191, 0, 0, 3808, 3810, 7, 45, 0, 0, 3809, 3811, 3, 422, 211, 0, 3810, 3809, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 3848, 3, 816, 408, 0, 3813, 3814, 5, 191, 0, 0, 3814, 3815, 5, 99, 0, 0, 3815, 3817, 5, 257, 0, 0, 3816, 3818, 3, 422, 211, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3822, 5, 62, 0, 0, 3820, 3823, 3, 814, 407, 0, 3821, 3823, 5, 99, 0, 0, 3822, 3820, 1, 0, 0, 0, 3822, 3821, 1, 0, 0, 0, 3823, 3824, 1, 0, 0, 0, 3824, 3825, 5, 331, 0, 0, 3825, 3848, 3, 818, 409, 0, 3826, 3827, 5, 191, 0, 0, 3827, 3829, 5, 175, 0, 0, 3828, 3830, 3, 422, 211, 0, 3829, 3828, 1, 0, 0, 0, 3829, 3830, 1, 0, 0, 0, 3830, 3831, 1, 0, 0, 0, 3831, 3845, 3, 788, 394, 0, 3832, 3834, 5, 105, 0, 0, 3833, 3832, 1, 0, 0, 0, 3833, 3834, 1, 0, 0, 0, 3834, 3835, 1, 0, 0, 0, 3835, 3836, 5, 2, 0, 0, 3836, 3841, 5, 209, 0, 0, 3837, 3838, 5, 6, 0, 0, 3838, 3840, 5, 209, 0, 0, 3839, 3837, 1, 0, 0, 0, 3840, 3843, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3841, 3842, 1, 0, 0, 0, 3842, 3844, 1, 0, 0, 0, 3843, 3841, 1, 0, 0, 0, 3844, 3846, 5, 3, 0, 0, 3845, 3833, 1, 0, 0, 0, 3845, 3846, 1, 0, 0, 0, 3846, 3848, 1, 0, 0, 0, 3847, 3640, 1, 0, 0, 0, 3847, 3672, 1, 0, 0, 0, 3847, 3691, 1, 0, 0, 0, 3847, 3703, 1, 0, 0, 0, 3847, 3712, 1, 0, 0, 0, 3847, 3723, 1, 0, 0, 0, 3847, 3739, 1, 0, 0, 0, 3847, 3749, 1, 0, 0, 0, 3847, 3762, 1, 0, 0, 0, 3847, 3773, 1, 0, 0, 0, 3847, 3780, 1, 0, 0, 0, 3847, 3789, 1, 0, 0, 0, 3847, 3795, 1, 0, 0, 0, 3847, 3807, 1, 0, 0, 0, 3847, 3813, 1, 0, 0, 0, 3847, 3826, 1, 0, 0, 0, 3848, 309, 1, 0, 0, 0, 3849, 3851, 5, 63, 0, 0, 3850, 3849, 1, 0, 0, 0, 3850, 3851, 1, 0, 0, 0, 3851, 3852, 1, 0, 0, 0, 3852, 3853, 5, 92, 0, 0, 3853, 3866, 3, 774, 387, 0, 3854, 3856, 5, 259, 0, 0, 3855, 3854, 1, 0, 0, 0, 3855, 3856, 1, 0, 0, 0, 3856, 3857, 1, 0, 0, 0, 3857, 3858, 5, 376, 0, 0, 3858, 3866, 3, 778, 389, 0, 3859, 3860, 7, 46, 0, 0, 3860, 3866, 3, 316, 158, 0, 3861, 3862, 5, 355, 0, 0, 3862, 3863, 5, 325, 0, 0, 3863, 3864, 7, 41, 0, 0, 3864, 3866, 3, 316, 158, 0, 3865, 3850, 1, 0, 0, 0, 3865, 3855, 1, 0, 0, 0, 3865, 3859, 1, 0, 0, 0, 3865, 3861, 1, 0, 0, 0, 3866, 311, 1, 0, 0, 0, 3867, 3868, 5, 198, 0, 0, 3868, 3884, 5, 357, 0, 0, 3869, 3870, 5, 131, 0, 0, 3870, 3884, 5, 446, 0, 0, 3871, 3884, 5, 204, 0, 0, 3872, 3884, 5, 452, 0, 0, 3873, 3884, 5, 331, 0, 0, 3874, 3884, 5, 318, 0, 0, 3875, 3884, 5, 451, 0, 0, 3876, 3877, 5, 63, 0, 0, 3877, 3878, 5, 174, 0, 0, 3878, 3884, 5, 381, 0, 0, 3879, 3881, 5, 295, 0, 0, 3880, 3879, 1, 0, 0, 0, 3880, 3881, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 3884, 5, 247, 0, 0, 3883, 3867, 1, 0, 0, 0, 3883, 3869, 1, 0, 0, 0, 3883, 3871, 1, 0, 0, 0, 3883, 3872, 1, 0, 0, 0, 3883, 3873, 1, 0, 0, 0, 3883, 3874, 1, 0, 0, 0, 3883, 3875, 1, 0, 0, 0, 3883, 3876, 1, 0, 0, 0, 3883, 3880, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 3892, 3, 818, 409, 0, 3886, 3887, 5, 323, 0, 0, 3887, 3892, 3, 790, 395, 0, 3888, 3889, 5, 175, 0, 0, 3889, 3892, 3, 788, 394, 0, 3890, 3892, 3, 176, 88, 0, 3891, 3883, 1, 0, 0, 0, 3891, 3886, 1, 0, 0, 0, 3891, 3888, 1, 0, 0, 0, 3891, 3890, 1, 0, 0, 0, 3892, 313, 1, 0, 0, 0, 3893, 3898, 3, 316, 158, 0, 3894, 3895, 5, 6, 0, 0, 3895, 3897, 3, 316, 158, 0, 3896, 3894, 1, 0, 0, 0, 3897, 3900, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3898, 3899, 1, 0, 0, 0, 3899, 315, 1, 0, 0, 0, 3900, 3898, 1, 0, 0, 0, 3901, 3903, 3, 818, 409, 0, 3902, 3904, 3, 318, 159, 0, 3903, 3902, 1, 0, 0, 0, 3903, 3904, 1, 0, 0, 0, 3904, 317, 1, 0, 0, 0, 3905, 3906, 5, 11, 0, 0, 3906, 3908, 3, 824, 412, 0, 3907, 3905, 1, 0, 0, 0, 3908, 3909, 1, 0, 0, 0, 3909, 3907, 1, 0, 0, 0, 3909, 3910, 1, 0, 0, 0, 3910, 319, 1, 0, 0, 0, 3911, 3913, 5, 358, 0, 0, 3912, 3914, 5, 92, 0, 0, 3913, 3912, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3915, 1, 0, 0, 0, 3915, 3920, 3, 322, 161, 0, 3916, 3917, 5, 6, 0, 0, 3917, 3919, 3, 322, 161, 0, 3918, 3916, 1, 0, 0, 0, 3919, 3922, 1, 0, 0, 0, 3920, 3918, 1, 0, 0, 0, 3920, 3921, 1, 0, 0, 0, 3921, 3925, 1, 0, 0, 0, 3922, 3920, 1, 0, 0, 0, 3923, 3924, 7, 47, 0, 0, 3924, 3926, 5, 219, 0, 0, 3925, 3923, 1, 0, 0, 0, 3925, 3926, 1, 0, 0, 0, 3926, 3928, 1, 0, 0, 0, 3927, 3929, 3, 96, 48, 0, 3928, 3927, 1, 0, 0, 0, 3928, 3929, 1, 0, 0, 0, 3929, 321, 1, 0, 0, 0, 3930, 3932, 5, 81, 0, 0, 3931, 3930, 1, 0, 0, 0, 3931, 3932, 1, 0, 0, 0, 3932, 3933, 1, 0, 0, 0, 3933, 3935, 3, 774, 387, 0, 3934, 3936, 5, 9, 0, 0, 3935, 3934, 1, 0, 0, 0, 3935, 3936, 1, 0, 0, 0, 3936, 323, 1, 0, 0, 0, 3937, 3938, 5, 159, 0, 0, 3938, 3997, 5, 80, 0, 0, 3939, 3998, 3, 310, 155, 0, 3940, 3998, 3, 312, 156, 0, 3941, 3942, 5, 44, 0, 0, 3942, 3944, 3, 818, 409, 0, 3943, 3945, 3, 318, 159, 0, 3944, 3943, 1, 0, 0, 0, 3944, 3945, 1, 0, 0, 0, 3945, 3946, 1, 0, 0, 0, 3946, 3947, 5, 11, 0, 0, 3947, 3948, 3, 800, 400, 0, 3948, 3998, 1, 0, 0, 0, 3949, 3950, 7, 32, 0, 0, 3950, 3998, 3, 652, 326, 0, 3951, 3952, 5, 136, 0, 0, 3952, 3998, 3, 394, 197, 0, 3953, 3954, 5, 211, 0, 0, 3954, 3998, 3, 382, 191, 0, 3955, 3956, 5, 278, 0, 0, 3956, 3998, 3, 416, 208, 0, 3957, 3958, 5, 45, 0, 0, 3958, 3959, 3, 818, 409, 0, 3959, 3965, 5, 80, 0, 0, 3960, 3966, 3, 774, 387, 0, 3961, 3963, 5, 189, 0, 0, 3962, 3961, 1, 0, 0, 0, 3962, 3963, 1, 0, 0, 0, 3963, 3964, 1, 0, 0, 0, 3964, 3966, 3, 316, 158, 0, 3965, 3960, 1, 0, 0, 0, 3965, 3962, 1, 0, 0, 0, 3966, 3998, 1, 0, 0, 0, 3967, 3968, 7, 44, 0, 0, 3968, 3969, 3, 818, 409, 0, 3969, 3970, 5, 80, 0, 0, 3970, 3971, 3, 316, 158, 0, 3971, 3998, 1, 0, 0, 0, 3972, 3973, 5, 296, 0, 0, 3973, 3998, 3, 378, 189, 0, 3974, 3975, 5, 442, 0, 0, 3975, 3998, 3, 374, 187, 0, 3976, 3977, 5, 443, 0, 0, 3977, 3978, 5, 62, 0, 0, 3978, 3979, 3, 652, 326, 0, 3979, 3980, 5, 247, 0, 0, 3980, 3981, 3, 818, 409, 0, 3981, 3998, 1, 0, 0, 0, 3982, 3983, 5, 278, 0, 0, 3983, 3984, 7, 31, 0, 0, 3984, 3985, 3, 316, 158, 0, 3985, 3986, 3, 170, 85, 0, 3986, 3998, 1, 0, 0, 0, 3987, 3988, 5, 248, 0, 0, 3988, 3989, 5, 274, 0, 0, 3989, 3998, 3, 202, 101, 0, 3990, 3991, 5, 41, 0, 0, 3991, 3992, 5, 2, 0, 0, 3992, 3993, 3, 652, 326, 0, 3993, 3994, 5, 36, 0, 0, 3994, 3995, 3, 652, 326, 0, 3995, 3996, 5, 3, 0, 0, 3996, 3998, 1, 0, 0, 0, 3997, 3939, 1, 0, 0, 0, 3997, 3940, 1, 0, 0, 0, 3997, 3941, 1, 0, 0, 0, 3997, 3949, 1, 0, 0, 0, 3997, 3951, 1, 0, 0, 0, 3997, 3953, 1, 0, 0, 0, 3997, 3955, 1, 0, 0, 0, 3997, 3957, 1, 0, 0, 0, 3997, 3967, 1, 0, 0, 0, 3997, 3972, 1, 0, 0, 0, 3997, 3974, 1, 0, 0, 0, 3997, 3976, 1, 0, 0, 0, 3997, 3982, 1, 0, 0, 0, 3997, 3987, 1, 0, 0, 0, 3997, 3990, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4002, 5, 116, 0, 0, 4000, 4003, 3, 808, 404, 0, 4001, 4003, 5, 78, 0, 0, 4002, 4000, 1, 0, 0, 0, 4002, 4001, 1, 0, 0, 0, 4003, 325, 1, 0, 0, 0, 4004, 4005, 5, 327, 0, 0, 4005, 4008, 5, 246, 0, 0, 4006, 4007, 5, 62, 0, 0, 4007, 4009, 3, 58, 29, 0, 4008, 4006, 1, 0, 0, 0, 4008, 4009, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, 4028, 5, 80, 0, 0, 4011, 4012, 7, 32, 0, 0, 4012, 4029, 3, 652, 326, 0, 4013, 4014, 5, 136, 0, 0, 4014, 4029, 3, 394, 197, 0, 4015, 4016, 5, 44, 0, 0, 4016, 4029, 3, 800, 400, 0, 4017, 4018, 5, 211, 0, 0, 4018, 4029, 3, 382, 191, 0, 4019, 4020, 5, 248, 0, 0, 4020, 4021, 5, 274, 0, 0, 4021, 4029, 3, 202, 101, 0, 4022, 4023, 5, 296, 0, 0, 4023, 4029, 3, 378, 189, 0, 4024, 4025, 5, 442, 0, 0, 4025, 4029, 3, 374, 187, 0, 4026, 4029, 3, 310, 155, 0, 4027, 4029, 3, 312, 156, 0, 4028, 4011, 1, 0, 0, 0, 4028, 4013, 1, 0, 0, 0, 4028, 4015, 1, 0, 0, 0, 4028, 4017, 1, 0, 0, 0, 4028, 4019, 1, 0, 0, 0, 4028, 4022, 1, 0, 0, 0, 4028, 4024, 1, 0, 0, 0, 4028, 4026, 1, 0, 0, 0, 4028, 4027, 1, 0, 0, 0, 4029, 4030, 1, 0, 0, 0, 4030, 4033, 5, 116, 0, 0, 4031, 4034, 3, 808, 404, 0, 4032, 4034, 5, 78, 0, 0, 4033, 4031, 1, 0, 0, 0, 4033, 4032, 1, 0, 0, 0, 4034, 327, 1, 0, 0, 0, 4035, 4036, 7, 48, 0, 0, 4036, 4037, 3, 330, 165, 0, 4037, 329, 1, 0, 0, 0, 4038, 4040, 7, 49, 0, 0, 4039, 4038, 1, 0, 0, 0, 4039, 4040, 1, 0, 0, 0, 4040, 4042, 1, 0, 0, 0, 4041, 4043, 3, 332, 166, 0, 4042, 4041, 1, 0, 0, 0, 4042, 4043, 1, 0, 0, 0, 4043, 4044, 1, 0, 0, 0, 4044, 4082, 3, 818, 409, 0, 4045, 4047, 7, 50, 0, 0, 4046, 4045, 1, 0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4048, 1, 0, 0, 0, 4048, 4050, 3, 812, 406, 0, 4049, 4051, 3, 332, 166, 0, 4050, 4049, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 4052, 1, 0, 0, 0, 4052, 4053, 3, 818, 409, 0, 4053, 4082, 1, 0, 0, 0, 4054, 4056, 5, 210, 0, 0, 4055, 4057, 3, 812, 406, 0, 4056, 4055, 1, 0, 0, 0, 4056, 4057, 1, 0, 0, 0, 4057, 4059, 1, 0, 0, 0, 4058, 4060, 3, 332, 166, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4082, 3, 818, 409, 0, 4062, 4064, 5, 210, 0, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4065, 1, 0, 0, 0, 4065, 4067, 5, 30, 0, 0, 4066, 4068, 3, 332, 166, 0, 4067, 4066, 1, 0, 0, 0, 4067, 4068, 1, 0, 0, 0, 4068, 4069, 1, 0, 0, 0, 4069, 4082, 3, 818, 409, 0, 4070, 4075, 5, 144, 0, 0, 4071, 4073, 5, 30, 0, 0, 4072, 4071, 1, 0, 0, 0, 4072, 4073, 1, 0, 0, 0, 4073, 4076, 1, 0, 0, 0, 4074, 4076, 3, 812, 406, 0, 4075, 4072, 1, 0, 0, 0, 4075, 4074, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4079, 3, 332, 166, 0, 4078, 4077, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4080, 1, 0, 0, 0, 4080, 4082, 3, 818, 409, 0, 4081, 4039, 1, 0, 0, 0, 4081, 4046, 1, 0, 0, 0, 4081, 4054, 1, 0, 0, 0, 4081, 4063, 1, 0, 0, 0, 4081, 4070, 1, 0, 0, 0, 4082, 331, 1, 0, 0, 0, 4083, 4084, 7, 51, 0, 0, 4084, 333, 1, 0, 0, 0, 4085, 4086, 5, 65, 0, 0, 4086, 4087, 3, 338, 169, 0, 4087, 4088, 5, 80, 0, 0, 4088, 4089, 3, 344, 172, 0, 4089, 4090, 5, 94, 0, 0, 4090, 4094, 3, 346, 173, 0, 4091, 4092, 5, 105, 0, 0, 4092, 4093, 5, 65, 0, 0, 4093, 4095, 5, 279, 0, 0, 4094, 4091, 1, 0, 0, 0, 4094, 4095, 1, 0, 0, 0, 4095, 335, 1, 0, 0, 0, 4096, 4100, 5, 317, 0, 0, 4097, 4098, 5, 65, 0, 0, 4098, 4099, 5, 279, 0, 0, 4099, 4101, 5, 62, 0, 0, 4100, 4097, 1, 0, 0, 0, 4100, 4101, 1, 0, 0, 0, 4101, 4102, 1, 0, 0, 0, 4102, 4103, 3, 338, 169, 0, 4103, 4104, 5, 80, 0, 0, 4104, 4105, 3, 344, 172, 0, 4105, 4106, 5, 64, 0, 0, 4106, 4108, 3, 346, 173, 0, 4107, 4109, 3, 96, 48, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 337, 1, 0, 0, 0, 4110, 4115, 3, 342, 171, 0, 4111, 4112, 5, 6, 0, 0, 4112, 4114, 3, 342, 171, 0, 4113, 4111, 1, 0, 0, 0, 4114, 4117, 1, 0, 0, 0, 4115, 4113, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4134, 1, 0, 0, 0, 4117, 4115, 1, 0, 0, 0, 4118, 4120, 5, 30, 0, 0, 4119, 4121, 5, 294, 0, 0, 4120, 4119, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 4123, 1, 0, 0, 0, 4122, 4124, 3, 144, 72, 0, 4123, 4122, 1, 0, 0, 0, 4123, 4124, 1, 0, 0, 0, 4124, 4134, 1, 0, 0, 0, 4125, 4130, 3, 340, 170, 0, 4126, 4127, 5, 6, 0, 0, 4127, 4129, 3, 340, 170, 0, 4128, 4126, 1, 0, 0, 0, 4129, 4132, 1, 0, 0, 0, 4130, 4128, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4134, 1, 0, 0, 0, 4132, 4130, 1, 0, 0, 0, 4133, 4110, 1, 0, 0, 0, 4133, 4118, 1, 0, 0, 0, 4133, 4125, 1, 0, 0, 0, 4134, 339, 1, 0, 0, 0, 4135, 4136, 7, 52, 0, 0, 4136, 341, 1, 0, 0, 0, 4137, 4142, 5, 88, 0, 0, 4138, 4142, 5, 86, 0, 0, 4139, 4142, 5, 46, 0, 0, 4140, 4142, 3, 818, 409, 0, 4141, 4137, 1, 0, 0, 0, 4141, 4138, 1, 0, 0, 0, 4141, 4139, 1, 0, 0, 0, 4141, 4140, 1, 0, 0, 0, 4142, 4144, 1, 0, 0, 0, 4143, 4145, 3, 144, 72, 0, 4144, 4143, 1, 0, 0, 0, 4144, 4145, 1, 0, 0, 0, 4145, 343, 1, 0, 0, 0, 4146, 4147, 5, 92, 0, 0, 4147, 4192, 3, 762, 381, 0, 4148, 4150, 5, 328, 0, 0, 4149, 4148, 1, 0, 0, 0, 4149, 4150, 1, 0, 0, 0, 4150, 4151, 1, 0, 0, 0, 4151, 4192, 3, 760, 380, 0, 4152, 4156, 5, 63, 0, 0, 4153, 4154, 5, 174, 0, 0, 4154, 4157, 5, 381, 0, 0, 4155, 4157, 5, 331, 0, 0, 4156, 4153, 1, 0, 0, 0, 4156, 4155, 1, 0, 0, 0, 4157, 4160, 1, 0, 0, 0, 4158, 4160, 5, 247, 0, 0, 4159, 4152, 1, 0, 0, 0, 4159, 4158, 1, 0, 0, 0, 4160, 4161, 1, 0, 0, 0, 4161, 4192, 3, 784, 392, 0, 4162, 4163, 5, 211, 0, 0, 4163, 4192, 3, 380, 190, 0, 4164, 4165, 5, 296, 0, 0, 4165, 4192, 3, 376, 188, 0, 4166, 4167, 5, 442, 0, 0, 4167, 4192, 3, 372, 186, 0, 4168, 4169, 5, 175, 0, 0, 4169, 4192, 3, 766, 383, 0, 4170, 4171, 7, 32, 0, 0, 4171, 4192, 3, 314, 157, 0, 4172, 4173, 5, 248, 0, 0, 4173, 4174, 5, 274, 0, 0, 4174, 4179, 3, 202, 101, 0, 4175, 4176, 5, 6, 0, 0, 4176, 4178, 3, 202, 101, 0, 4177, 4175, 1, 0, 0, 0, 4178, 4181, 1, 0, 0, 0, 4179, 4177, 1, 0, 0, 0, 4179, 4180, 1, 0, 0, 0, 4180, 4192, 1, 0, 0, 0, 4181, 4179, 1, 0, 0, 0, 4182, 4183, 5, 323, 0, 0, 4183, 4192, 3, 764, 382, 0, 4184, 4185, 5, 351, 0, 0, 4185, 4192, 3, 782, 391, 0, 4186, 4187, 5, 30, 0, 0, 4187, 4188, 7, 53, 0, 0, 4188, 4189, 5, 68, 0, 0, 4189, 4190, 5, 323, 0, 0, 4190, 4192, 3, 764, 382, 0, 4191, 4146, 1, 0, 0, 0, 4191, 4149, 1, 0, 0, 0, 4191, 4159, 1, 0, 0, 0, 4191, 4162, 1, 0, 0, 0, 4191, 4164, 1, 0, 0, 0, 4191, 4166, 1, 0, 0, 0, 4191, 4168, 1, 0, 0, 0, 4191, 4170, 1, 0, 0, 0, 4191, 4172, 1, 0, 0, 0, 4191, 4182, 1, 0, 0, 0, 4191, 4184, 1, 0, 0, 0, 4191, 4186, 1, 0, 0, 0, 4192, 345, 1, 0, 0, 0, 4193, 4195, 5, 66, 0, 0, 4194, 4193, 1, 0, 0, 0, 4194, 4195, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4197, 3, 814, 407, 0, 4197, 4205, 1, 0, 0, 0, 4198, 4200, 5, 6, 0, 0, 4199, 4201, 5, 66, 0, 0, 4200, 4199, 1, 0, 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4202, 1, 0, 0, 0, 4202, 4204, 3, 814, 407, 0, 4203, 4198, 1, 0, 0, 0, 4204, 4207, 1, 0, 0, 0, 4205, 4203, 1, 0, 0, 0, 4205, 4206, 1, 0, 0, 0, 4206, 347, 1, 0, 0, 0, 4207, 4205, 1, 0, 0, 0, 4208, 4209, 5, 65, 0, 0, 4209, 4214, 3, 342, 171, 0, 4210, 4211, 5, 6, 0, 0, 4211, 4213, 3, 342, 171, 0, 4212, 4210, 1, 0, 0, 0, 4213, 4216, 1, 0, 0, 0, 4214, 4212, 1, 0, 0, 0, 4214, 4215, 1, 0, 0, 0, 4215, 4217, 1, 0, 0, 0, 4216, 4214, 1, 0, 0, 0, 4217, 4218, 5, 94, 0, 0, 4218, 4222, 3, 816, 408, 0, 4219, 4220, 5, 105, 0, 0, 4220, 4221, 5, 134, 0, 0, 4221, 4223, 5, 279, 0, 0, 4222, 4219, 1, 0, 0, 0, 4222, 4223, 1, 0, 0, 0, 4223, 4227, 1, 0, 0, 0, 4224, 4225, 5, 214, 0, 0, 4225, 4226, 5, 147, 0, 0, 4226, 4228, 3, 814, 407, 0, 4227, 4224, 1, 0, 0, 0, 4227, 4228, 1, 0, 0, 0, 4228, 349, 1, 0, 0, 0, 4229, 4233, 5, 317, 0, 0, 4230, 4231, 5, 134, 0, 0, 4231, 4232, 5, 279, 0, 0, 4232, 4234, 5, 62, 0, 0, 4233, 4230, 1, 0, 0, 0, 4233, 4234, 1, 0, 0, 0, 4234, 4235, 1, 0, 0, 0, 4235, 4240, 3, 342, 171, 0, 4236, 4237, 5, 6, 0, 0, 4237, 4239, 3, 342, 171, 0, 4238, 4236, 1, 0, 0, 0, 4239, 4242, 1, 0, 0, 0, 4240, 4238, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4243, 1, 0, 0, 0, 4242, 4240, 1, 0, 0, 0, 4243, 4244, 5, 64, 0, 0, 4244, 4248, 3, 816, 408, 0, 4245, 4246, 5, 214, 0, 0, 4246, 4247, 5, 147, 0, 0, 4247, 4249, 3, 814, 407, 0, 4248, 4245, 1, 0, 0, 0, 4248, 4249, 1, 0, 0, 0, 4249, 4251, 1, 0, 0, 0, 4250, 4252, 3, 96, 48, 0, 4251, 4250, 1, 0, 0, 0, 4251, 4252, 1, 0, 0, 0, 4252, 351, 1, 0, 0, 0, 4253, 4254, 5, 138, 0, 0, 4254, 4255, 5, 53, 0, 0, 4255, 4264, 5, 294, 0, 0, 4256, 4257, 5, 68, 0, 0, 4257, 4258, 5, 323, 0, 0, 4258, 4263, 3, 764, 382, 0, 4259, 4260, 5, 62, 0, 0, 4260, 4261, 7, 2, 0, 0, 4261, 4263, 3, 816, 408, 0, 4262, 4256, 1, 0, 0, 0, 4262, 4259, 1, 0, 0, 0, 4263, 4266, 1, 0, 0, 0, 4264, 4262, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, 0, 4265, 4267, 1, 0, 0, 0, 4266, 4264, 1, 0, 0, 0, 4267, 4268, 3, 354, 177, 0, 4268, 353, 1, 0, 0, 0, 4269, 4270, 5, 65, 0, 0, 4270, 4271, 3, 338, 169, 0, 4271, 4272, 5, 80, 0, 0, 4272, 4273, 3, 356, 178, 0, 4273, 4274, 5, 94, 0, 0, 4274, 4278, 3, 346, 173, 0, 4275, 4276, 5, 105, 0, 0, 4276, 4277, 5, 65, 0, 0, 4277, 4279, 5, 279, 0, 0, 4278, 4275, 1, 0, 0, 0, 4278, 4279, 1, 0, 0, 0, 4279, 4295, 1, 0, 0, 0, 4280, 4284, 5, 317, 0, 0, 4281, 4282, 5, 65, 0, 0, 4282, 4283, 5, 279, 0, 0, 4283, 4285, 5, 62, 0, 0, 4284, 4281, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4286, 1, 0, 0, 0, 4286, 4287, 3, 338, 169, 0, 4287, 4288, 5, 80, 0, 0, 4288, 4289, 3, 356, 178, 0, 4289, 4290, 5, 64, 0, 0, 4290, 4292, 3, 346, 173, 0, 4291, 4293, 3, 96, 48, 0, 4292, 4291, 1, 0, 0, 0, 4292, 4293, 1, 0, 0, 0, 4293, 4295, 1, 0, 0, 0, 4294, 4269, 1, 0, 0, 0, 4294, 4280, 1, 0, 0, 0, 4295, 355, 1, 0, 0, 0, 4296, 4297, 7, 54, 0, 0, 4297, 357, 1, 0, 0, 0, 4298, 4300, 5, 46, 0, 0, 4299, 4301, 5, 98, 0, 0, 4300, 4299, 1, 0, 0, 0, 4300, 4301, 1, 0, 0, 0, 4301, 4302, 1, 0, 0, 0, 4302, 4304, 5, 226, 0, 0, 4303, 4305, 5, 109, 0, 0, 4304, 4303, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 4307, 1, 0, 0, 0, 4306, 4308, 3, 294, 147, 0, 4307, 4306, 1, 0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 4310, 1, 0, 0, 0, 4309, 4311, 3, 818, 409, 0, 4310, 4309, 1, 0, 0, 0, 4310, 4311, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4313, 5, 80, 0, 0, 4313, 4315, 3, 624, 312, 0, 4314, 4316, 3, 170, 85, 0, 4315, 4314, 1, 0, 0, 0, 4315, 4316, 1, 0, 0, 0, 4316, 4317, 1, 0, 0, 0, 4317, 4320, 3, 360, 180, 0, 4318, 4319, 5, 441, 0, 0, 4319, 4321, 3, 360, 180, 0, 4320, 4318, 1, 0, 0, 0, 4320, 4321, 1, 0, 0, 0, 4321, 4327, 1, 0, 0, 0, 4322, 4324, 5, 273, 0, 0, 4323, 4325, 5, 77, 0, 0, 4324, 4323, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 4326, 1, 0, 0, 0, 4326, 4328, 5, 56, 0, 0, 4327, 4322, 1, 0, 0, 0, 4327, 4328, 1, 0, 0, 0, 4328, 4330, 1, 0, 0, 0, 4329, 4331, 3, 102, 51, 0, 4330, 4329, 1, 0, 0, 0, 4330, 4331, 1, 0, 0, 0, 4331, 4333, 1, 0, 0, 0, 4332, 4334, 3, 176, 88, 0, 4333, 4332, 1, 0, 0, 0, 4333, 4334, 1, 0, 0, 0, 4334, 4336, 1, 0, 0, 0, 4335, 4337, 3, 638, 319, 0, 4336, 4335, 1, 0, 0, 0, 4336, 4337, 1, 0, 0, 0, 4337, 359, 1, 0, 0, 0, 4338, 4339, 5, 2, 0, 0, 4339, 4344, 3, 362, 181, 0, 4340, 4341, 5, 6, 0, 0, 4341, 4343, 3, 362, 181, 0, 4342, 4340, 1, 0, 0, 0, 4343, 4346, 1, 0, 0, 0, 4344, 4342, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 4347, 1, 0, 0, 0, 4346, 4344, 1, 0, 0, 0, 4347, 4348, 5, 3, 0, 0, 4348, 361, 1, 0, 0, 0, 4349, 4356, 3, 800, 400, 0, 4350, 4356, 3, 688, 344, 0, 4351, 4352, 5, 2, 0, 0, 4352, 4353, 3, 674, 337, 0, 4353, 4354, 5, 3, 0, 0, 4354, 4356, 1, 0, 0, 0, 4355, 4349, 1, 0, 0, 0, 4355, 4350, 1, 0, 0, 0, 4355, 4351, 1, 0, 0, 0, 4356, 4358, 1, 0, 0, 0, 4357, 4359, 3, 98, 49, 0, 4358, 4357, 1, 0, 0, 0, 4358, 4359, 1, 0, 0, 0, 4359, 4366, 1, 0, 0, 0, 4360, 4362, 3, 316, 158, 0, 4361, 4360, 1, 0, 0, 0, 4361, 4362, 1, 0, 0, 0, 4362, 4367, 1, 0, 0, 0, 4363, 4364, 3, 316, 158, 0, 4364, 4365, 3, 100, 50, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4361, 1, 0, 0, 0, 4366, 4363, 1, 0, 0, 0, 4367, 4369, 1, 0, 0, 0, 4368, 4370, 7, 55, 0, 0, 4369, 4368, 1, 0, 0, 0, 4369, 4370, 1, 0, 0, 0, 4370, 4373, 1, 0, 0, 0, 4371, 4372, 5, 273, 0, 0, 4372, 4374, 7, 56, 0, 0, 4373, 4371, 1, 0, 0, 0, 4373, 4374, 1, 0, 0, 0, 4374, 363, 1, 0, 0, 0, 4375, 4377, 5, 46, 0, 0, 4376, 4378, 3, 366, 183, 0, 4377, 4376, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4383, 1, 0, 0, 0, 4379, 4380, 5, 211, 0, 0, 4380, 4384, 3, 804, 402, 0, 4381, 4382, 5, 296, 0, 0, 4382, 4384, 3, 798, 399, 0, 4383, 4379, 1, 0, 0, 0, 4383, 4381, 1, 0, 0, 0, 4384, 4385, 1, 0, 0, 0, 4385, 4394, 5, 2, 0, 0, 4386, 4391, 3, 390, 195, 0, 4387, 4388, 5, 6, 0, 0, 4388, 4390, 3, 390, 195, 0, 4389, 4387, 1, 0, 0, 0, 4390, 4393, 1, 0, 0, 0, 4391, 4389, 1, 0, 0, 0, 4391, 4392, 1, 0, 0, 0, 4392, 4395, 1, 0, 0, 0, 4393, 4391, 1, 0, 0, 0, 4394, 4386, 1, 0, 0, 0, 4394, 4395, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4397, 5, 3, 0, 0, 4397, 4414, 1, 0, 0, 0, 4398, 4412, 5, 316, 0, 0, 4399, 4413, 3, 388, 194, 0, 4400, 4401, 5, 92, 0, 0, 4401, 4402, 5, 2, 0, 0, 4402, 4407, 3, 402, 201, 0, 4403, 4404, 5, 6, 0, 0, 4404, 4406, 3, 402, 201, 0, 4405, 4403, 1, 0, 0, 0, 4406, 4409, 1, 0, 0, 0, 4407, 4405, 1, 0, 0, 0, 4407, 4408, 1, 0, 0, 0, 4408, 4410, 1, 0, 0, 0, 4409, 4407, 1, 0, 0, 0, 4410, 4411, 5, 3, 0, 0, 4411, 4413, 1, 0, 0, 0, 4412, 4399, 1, 0, 0, 0, 4412, 4400, 1, 0, 0, 0, 4413, 4415, 1, 0, 0, 0, 4414, 4398, 1, 0, 0, 0, 4414, 4415, 1, 0, 0, 0, 4415, 4417, 1, 0, 0, 0, 4416, 4418, 3, 398, 199, 0, 4417, 4416, 1, 0, 0, 0, 4418, 4419, 1, 0, 0, 0, 4419, 4417, 1, 0, 0, 0, 4419, 4420, 1, 0, 0, 0, 4420, 4426, 1, 0, 0, 0, 4421, 4422, 5, 105, 0, 0, 4422, 4423, 5, 2, 0, 0, 4423, 4424, 3, 784, 392, 0, 4424, 4425, 5, 3, 0, 0, 4425, 4427, 1, 0, 0, 0, 4426, 4421, 1, 0, 0, 0, 4426, 4427, 1, 0, 0, 0, 4427, 365, 1, 0, 0, 0, 4428, 4429, 5, 82, 0, 0, 4429, 4430, 5, 311, 0, 0, 4430, 367, 1, 0, 0, 0, 4431, 4433, 5, 2, 0, 0, 4432, 4434, 3, 370, 185, 0, 4433, 4432, 1, 0, 0, 0, 4433, 4434, 1, 0, 0, 0, 4434, 4435, 1, 0, 0, 0, 4435, 4436, 5, 3, 0, 0, 4436, 369, 1, 0, 0, 0, 4437, 4442, 3, 384, 192, 0, 4438, 4439, 5, 6, 0, 0, 4439, 4441, 3, 384, 192, 0, 4440, 4438, 1, 0, 0, 0, 4441, 4444, 1, 0, 0, 0, 4442, 4440, 1, 0, 0, 0, 4442, 4443, 1, 0, 0, 0, 4443, 371, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4445, 4450, 3, 374, 187, 0, 4446, 4447, 5, 6, 0, 0, 4447, 4449, 3, 374, 187, 0, 4448, 4446, 1, 0, 0, 0, 4449, 4452, 1, 0, 0, 0, 4450, 4448, 1, 0, 0, 0, 4450, 4451, 1, 0, 0, 0, 4451, 373, 1, 0, 0, 0, 4452, 4450, 1, 0, 0, 0, 4453, 4454, 3, 794, 397, 0, 4454, 4455, 3, 368, 184, 0, 4455, 4459, 1, 0, 0, 0, 4456, 4459, 3, 832, 416, 0, 4457, 4459, 3, 780, 390, 0, 4458, 4453, 1, 0, 0, 0, 4458, 4456, 1, 0, 0, 0, 4458, 4457, 1, 0, 0, 0, 4459, 375, 1, 0, 0, 0, 4460, 4465, 3, 378, 189, 0, 4461, 4462, 5, 6, 0, 0, 4462, 4464, 3, 378, 189, 0, 4463, 4461, 1, 0, 0, 0, 4464, 4467, 1, 0, 0, 0, 4465, 4463, 1, 0, 0, 0, 4465, 4466, 1, 0, 0, 0, 4466, 377, 1, 0, 0, 0, 4467, 4465, 1, 0, 0, 0, 4468, 4469, 3, 796, 398, 0, 4469, 4470, 3, 368, 184, 0, 4470, 4474, 1, 0, 0, 0, 4471, 4474, 3, 832, 416, 0, 4472, 4474, 3, 780, 390, 0, 4473, 4468, 1, 0, 0, 0, 4473, 4471, 1, 0, 0, 0, 4473, 4472, 1, 0, 0, 0, 4474, 379, 1, 0, 0, 0, 4475, 4480, 3, 382, 191, 0, 4476, 4477, 5, 6, 0, 0, 4477, 4479, 3, 382, 191, 0, 4478, 4476, 1, 0, 0, 0, 4479, 4482, 1, 0, 0, 0, 4480, 4478, 1, 0, 0, 0, 4480, 4481, 1, 0, 0, 0, 4481, 381, 1, 0, 0, 0, 4482, 4480, 1, 0, 0, 0, 4483, 4484, 3, 806, 403, 0, 4484, 4485, 3, 368, 184, 0, 4485, 4489, 1, 0, 0, 0, 4486, 4489, 3, 832, 416, 0, 4487, 4489, 3, 780, 390, 0, 4488, 4483, 1, 0, 0, 0, 4488, 4486, 1, 0, 0, 0, 4488, 4487, 1, 0, 0, 0, 4489, 383, 1, 0, 0, 0, 4490, 4492, 3, 386, 193, 0, 4491, 4493, 3, 820, 410, 0, 4492, 4491, 1, 0, 0, 0, 4492, 4493, 1, 0, 0, 0, 4493, 4499, 1, 0, 0, 0, 4494, 4496, 3, 820, 410, 0, 4495, 4497, 3, 386, 193, 0, 4496, 4495, 1, 0, 0, 0, 4496, 4497, 1, 0, 0, 0, 4497, 4499, 1, 0, 0, 0, 4498, 4490, 1, 0, 0, 0, 4498, 4494, 1, 0, 0, 0, 4498, 4499, 1, 0, 0, 0, 4499, 4500, 1, 0, 0, 0, 4500, 4501, 3, 388, 194, 0, 4501, 385, 1, 0, 0, 0, 4502, 4504, 5, 68, 0, 0, 4503, 4505, 5, 453, 0, 0, 4504, 4503, 1, 0, 0, 0, 4504, 4505, 1, 0, 0, 0, 4505, 4510, 1, 0, 0, 0, 4506, 4510, 5, 453, 0, 0, 4507, 4510, 5, 400, 0, 0, 4508, 4510, 5, 101, 0, 0, 4509, 4502, 1, 0, 0, 0, 4509, 4506, 1, 0, 0, 0, 4509, 4507, 1, 0, 0, 0, 4509, 4508, 1, 0, 0, 0, 4510, 387, 1, 0, 0, 0, 4511, 4521, 3, 652, 326, 0, 4512, 4514, 5, 415, 0, 0, 4513, 4512, 1, 0, 0, 0, 4513, 4514, 1, 0, 0, 0, 4514, 4515, 1, 0, 0, 0, 4515, 4516, 3, 820, 410, 0, 4516, 4517, 3, 318, 159, 0, 4517, 4518, 5, 27, 0, 0, 4518, 4519, 5, 360, 0, 0, 4519, 4521, 1, 0, 0, 0, 4520, 4511, 1, 0, 0, 0, 4520, 4513, 1, 0, 0, 0, 4521, 389, 1, 0, 0, 0, 4522, 4525, 3, 384, 192, 0, 4523, 4524, 7, 57, 0, 0, 4524, 4526, 3, 674, 337, 0, 4525, 4523, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 391, 1, 0, 0, 0, 4527, 4537, 5, 2, 0, 0, 4528, 4538, 5, 9, 0, 0, 4529, 4531, 3, 370, 185, 0, 4530, 4529, 1, 0, 0, 0, 4530, 4531, 1, 0, 0, 0, 4531, 4535, 1, 0, 0, 0, 4532, 4533, 5, 83, 0, 0, 4533, 4534, 5, 147, 0, 0, 4534, 4536, 3, 370, 185, 0, 4535, 4532, 1, 0, 0, 0, 4535, 4536, 1, 0, 0, 0, 4536, 4538, 1, 0, 0, 0, 4537, 4528, 1, 0, 0, 0, 4537, 4530, 1, 0, 0, 0, 4538, 4539, 1, 0, 0, 0, 4539, 4540, 5, 3, 0, 0, 4540, 393, 1, 0, 0, 0, 4541, 4542, 3, 806, 403, 0, 4542, 4543, 3, 392, 196, 0, 4543, 395, 1, 0, 0, 0, 4544, 4545, 5, 316, 0, 0, 4545, 4548, 5, 78, 0, 0, 4546, 4548, 5, 149, 0, 0, 4547, 4544, 1, 0, 0, 0, 4547, 4546, 1, 0, 0, 0, 4548, 4549, 1, 0, 0, 0, 4549, 4550, 5, 80, 0, 0, 4550, 4551, 5, 78, 0, 0, 4551, 4574, 5, 458, 0, 0, 4552, 4574, 5, 346, 0, 0, 4553, 4574, 5, 222, 0, 0, 4554, 4574, 5, 338, 0, 0, 4555, 4574, 5, 377, 0, 0, 4556, 4558, 5, 205, 0, 0, 4557, 4556, 1, 0, 0, 0, 4557, 4558, 1, 0, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4560, 5, 327, 0, 0, 4560, 4574, 7, 58, 0, 0, 4561, 4574, 5, 250, 0, 0, 4562, 4563, 5, 77, 0, 0, 4563, 4574, 5, 250, 0, 0, 4564, 4565, 7, 59, 0, 0, 4565, 4574, 3, 202, 101, 0, 4566, 4567, 5, 459, 0, 0, 4567, 4574, 3, 316, 158, 0, 4568, 4569, 5, 333, 0, 0, 4569, 4574, 3, 42, 21, 0, 4570, 4574, 3, 60, 30, 0, 4571, 4572, 5, 460, 0, 0, 4572, 4574, 3, 818, 409, 0, 4573, 4547, 1, 0, 0, 0, 4573, 4552, 1, 0, 0, 0, 4573, 4553, 1, 0, 0, 0, 4573, 4554, 1, 0, 0, 0, 4573, 4555, 1, 0, 0, 0, 4573, 4557, 1, 0, 0, 0, 4573, 4561, 1, 0, 0, 0, 4573, 4562, 1, 0, 0, 0, 4573, 4564, 1, 0, 0, 0, 4573, 4566, 1, 0, 0, 0, 4573, 4568, 1, 0, 0, 0, 4573, 4570, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, 0, 4574, 397, 1, 0, 0, 0, 4575, 4576, 5, 36, 0, 0, 4576, 4577, 3, 808, 404, 0, 4577, 4578, 3, 462, 231, 0, 4578, 4611, 1, 0, 0, 0, 4579, 4580, 5, 247, 0, 0, 4580, 4611, 3, 58, 29, 0, 4581, 4582, 5, 443, 0, 0, 4582, 4583, 5, 62, 0, 0, 4583, 4584, 5, 360, 0, 0, 4584, 4591, 3, 652, 326, 0, 4585, 4586, 5, 6, 0, 0, 4586, 4587, 5, 62, 0, 0, 4587, 4588, 5, 360, 0, 0, 4588, 4590, 3, 652, 326, 0, 4589, 4585, 1, 0, 0, 0, 4590, 4593, 1, 0, 0, 0, 4591, 4589, 1, 0, 0, 0, 4591, 4592, 1, 0, 0, 0, 4592, 4611, 1, 0, 0, 0, 4593, 4591, 1, 0, 0, 0, 4594, 4611, 5, 104, 0, 0, 4595, 4596, 5, 333, 0, 0, 4596, 4603, 3, 818, 409, 0, 4597, 4598, 5, 94, 0, 0, 4598, 4604, 3, 818, 409, 0, 4599, 4600, 5, 10, 0, 0, 4600, 4604, 3, 818, 409, 0, 4601, 4602, 5, 64, 0, 0, 4602, 4604, 5, 434, 0, 0, 4603, 4597, 1, 0, 0, 0, 4603, 4599, 1, 0, 0, 0, 4603, 4601, 1, 0, 0, 0, 4604, 4611, 1, 0, 0, 0, 4605, 4606, 5, 36, 0, 0, 4606, 4611, 3, 818, 409, 0, 4607, 4611, 3, 4, 2, 0, 4608, 4611, 3, 396, 198, 0, 4609, 4611, 3, 818, 409, 0, 4610, 4575, 1, 0, 0, 0, 4610, 4579, 1, 0, 0, 0, 4610, 4581, 1, 0, 0, 0, 4610, 4594, 1, 0, 0, 0, 4610, 4595, 1, 0, 0, 0, 4610, 4605, 1, 0, 0, 0, 4610, 4607, 1, 0, 0, 0, 4610, 4608, 1, 0, 0, 0, 4610, 4609, 1, 0, 0, 0, 4611, 399, 1, 0, 0, 0, 4612, 4613, 5, 105, 0, 0, 4613, 4614, 3, 284, 142, 0, 4614, 401, 1, 0, 0, 0, 4615, 4616, 3, 800, 400, 0, 4616, 4617, 3, 388, 194, 0, 4617, 403, 1, 0, 0, 0, 4618, 4625, 5, 138, 0, 0, 4619, 4620, 5, 211, 0, 0, 4620, 4626, 3, 382, 191, 0, 4621, 4622, 5, 296, 0, 0, 4622, 4626, 3, 378, 189, 0, 4623, 4624, 5, 442, 0, 0, 4624, 4626, 3, 374, 187, 0, 4625, 4619, 1, 0, 0, 0, 4625, 4621, 1, 0, 0, 0, 4625, 4623, 1, 0, 0, 0, 4626, 4628, 1, 0, 0, 0, 4627, 4629, 3, 396, 198, 0, 4628, 4627, 1, 0, 0, 0, 4629, 4630, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4630, 4631, 1, 0, 0, 0, 4631, 4633, 1, 0, 0, 0, 4632, 4634, 5, 315, 0, 0, 4633, 4632, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, 4634, 405, 1, 0, 0, 0, 4635, 4651, 5, 191, 0, 0, 4636, 4638, 5, 211, 0, 0, 4637, 4639, 3, 422, 211, 0, 4638, 4637, 1, 0, 0, 0, 4638, 4639, 1, 0, 0, 0, 4639, 4640, 1, 0, 0, 0, 4640, 4652, 3, 380, 190, 0, 4641, 4643, 5, 296, 0, 0, 4642, 4644, 3, 422, 211, 0, 4643, 4642, 1, 0, 0, 0, 4643, 4644, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4652, 3, 376, 188, 0, 4646, 4648, 5, 442, 0, 0, 4647, 4649, 3, 422, 211, 0, 4648, 4647, 1, 0, 0, 0, 4648, 4649, 1, 0, 0, 0, 4649, 4650, 1, 0, 0, 0, 4650, 4652, 3, 372, 186, 0, 4651, 4636, 1, 0, 0, 0, 4651, 4641, 1, 0, 0, 0, 4651, 4646, 1, 0, 0, 0, 4652, 4654, 1, 0, 0, 0, 4653, 4655, 3, 96, 48, 0, 4654, 4653, 1, 0, 0, 0, 4654, 4655, 1, 0, 0, 0, 4655, 407, 1, 0, 0, 0, 4656, 4657, 5, 191, 0, 0, 4657, 4659, 5, 136, 0, 0, 4658, 4660, 3, 422, 211, 0, 4659, 4658, 1, 0, 0, 0, 4659, 4660, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 4666, 3, 394, 197, 0, 4662, 4663, 5, 6, 0, 0, 4663, 4665, 3, 394, 197, 0, 4664, 4662, 1, 0, 0, 0, 4665, 4668, 1, 0, 0, 0, 4666, 4664, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 4670, 1, 0, 0, 0, 4668, 4666, 1, 0, 0, 0, 4669, 4671, 3, 96, 48, 0, 4670, 4669, 1, 0, 0, 0, 4670, 4671, 1, 0, 0, 0, 4671, 409, 1, 0, 0, 0, 4672, 4673, 5, 191, 0, 0, 4673, 4675, 5, 278, 0, 0, 4674, 4676, 3, 422, 211, 0, 4675, 4674, 1, 0, 0, 0, 4675, 4676, 1, 0, 0, 0, 4676, 4677, 1, 0, 0, 0, 4677, 4682, 3, 416, 208, 0, 4678, 4679, 5, 6, 0, 0, 4679, 4681, 3, 416, 208, 0, 4680, 4678, 1, 0, 0, 0, 4681, 4684, 1, 0, 0, 0, 4682, 4680, 1, 0, 0, 0, 4682, 4683, 1, 0, 0, 0, 4683, 4686, 1, 0, 0, 0, 4684, 4682, 1, 0, 0, 0, 4685, 4687, 3, 96, 48, 0, 4686, 4685, 1, 0, 0, 0, 4686, 4687, 1, 0, 0, 0, 4687, 411, 1, 0, 0, 0, 4688, 4701, 5, 2, 0, 0, 4689, 4692, 3, 652, 326, 0, 4690, 4691, 5, 6, 0, 0, 4691, 4693, 3, 652, 326, 0, 4692, 4690, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4702, 1, 0, 0, 0, 4694, 4695, 5, 407, 0, 0, 4695, 4696, 5, 6, 0, 0, 4696, 4702, 3, 652, 326, 0, 4697, 4698, 3, 652, 326, 0, 4698, 4699, 5, 6, 0, 0, 4699, 4700, 5, 407, 0, 0, 4700, 4702, 1, 0, 0, 0, 4701, 4689, 1, 0, 0, 0, 4701, 4694, 1, 0, 0, 0, 4701, 4697, 1, 0, 0, 0, 4702, 4703, 1, 0, 0, 0, 4703, 4704, 5, 3, 0, 0, 4704, 413, 1, 0, 0, 0, 4705, 4706, 3, 818, 409, 0, 4706, 4707, 5, 11, 0, 0, 4707, 4709, 1, 0, 0, 0, 4708, 4705, 1, 0, 0, 0, 4709, 4712, 1, 0, 0, 0, 4710, 4708, 1, 0, 0, 0, 4710, 4711, 1, 0, 0, 0, 4711, 4713, 1, 0, 0, 0, 4712, 4710, 1, 0, 0, 0, 4713, 4714, 3, 720, 360, 0, 4714, 415, 1, 0, 0, 0, 4715, 4716, 3, 414, 207, 0, 4716, 4717, 3, 412, 206, 0, 4717, 417, 1, 0, 0, 0, 4718, 4722, 5, 57, 0, 0, 4719, 4723, 3, 808, 404, 0, 4720, 4721, 5, 247, 0, 0, 4721, 4723, 3, 58, 29, 0, 4722, 4719, 1, 0, 0, 0, 4722, 4720, 1, 0, 0, 0, 4723, 4724, 1, 0, 0, 0, 4724, 4722, 1, 0, 0, 0, 4724, 4725, 1, 0, 0, 0, 4725, 419, 1, 0, 0, 0, 4726, 4727, 5, 46, 0, 0, 4727, 4728, 5, 41, 0, 0, 4728, 4729, 5, 2, 0, 0, 4729, 4730, 3, 652, 326, 0, 4730, 4731, 5, 36, 0, 0, 4731, 4732, 3, 652, 326, 0, 4732, 4749, 5, 3, 0, 0, 4733, 4734, 5, 379, 0, 0, 4734, 4737, 5, 211, 0, 0, 4735, 4736, 5, 36, 0, 0, 4736, 4738, 7, 60, 0, 0, 4737, 4735, 1, 0, 0, 0, 4737, 4738, 1, 0, 0, 0, 4738, 4750, 1, 0, 0, 0, 4739, 4743, 5, 105, 0, 0, 4740, 4741, 5, 211, 0, 0, 4741, 4744, 3, 382, 191, 0, 4742, 4744, 5, 400, 0, 0, 4743, 4740, 1, 0, 0, 0, 4743, 4742, 1, 0, 0, 0, 4744, 4747, 1, 0, 0, 0, 4745, 4746, 5, 36, 0, 0, 4746, 4748, 7, 60, 0, 0, 4747, 4745, 1, 0, 0, 0, 4747, 4748, 1, 0, 0, 0, 4748, 4750, 1, 0, 0, 0, 4749, 4733, 1, 0, 0, 0, 4749, 4739, 1, 0, 0, 0, 4750, 421, 1, 0, 0, 0, 4751, 4752, 5, 220, 0, 0, 4752, 4753, 5, 396, 0, 0, 4753, 423, 1, 0, 0, 0, 4754, 4756, 5, 46, 0, 0, 4755, 4757, 3, 366, 183, 0, 4756, 4755, 1, 0, 0, 0, 4756, 4757, 1, 0, 0, 0, 4757, 4758, 1, 0, 0, 0, 4758, 4759, 5, 443, 0, 0, 4759, 4760, 5, 62, 0, 0, 4760, 4761, 3, 652, 326, 0, 4761, 4762, 5, 247, 0, 0, 4762, 4763, 3, 818, 409, 0, 4763, 4778, 5, 2, 0, 0, 4764, 4765, 5, 64, 0, 0, 4765, 4769, 3, 426, 213, 0, 4766, 4767, 5, 6, 0, 0, 4767, 4768, 5, 94, 0, 0, 4768, 4770, 3, 426, 213, 0, 4769, 4766, 1, 0, 0, 0, 4769, 4770, 1, 0, 0, 0, 4770, 4779, 1, 0, 0, 0, 4771, 4772, 5, 94, 0, 0, 4772, 4776, 3, 426, 213, 0, 4773, 4774, 5, 6, 0, 0, 4774, 4775, 5, 64, 0, 0, 4775, 4777, 3, 426, 213, 0, 4776, 4773, 1, 0, 0, 0, 4776, 4777, 1, 0, 0, 0, 4777, 4779, 1, 0, 0, 0, 4778, 4764, 1, 0, 0, 0, 4778, 4771, 1, 0, 0, 0, 4779, 4780, 1, 0, 0, 0, 4780, 4781, 5, 3, 0, 0, 4781, 425, 1, 0, 0, 0, 4782, 4783, 5, 461, 0, 0, 4783, 4784, 5, 105, 0, 0, 4784, 4785, 5, 211, 0, 0, 4785, 4786, 3, 382, 191, 0, 4786, 427, 1, 0, 0, 0, 4787, 4798, 5, 306, 0, 0, 4788, 4789, 5, 2, 0, 0, 4789, 4794, 5, 128, 0, 0, 4790, 4791, 5, 6, 0, 0, 4791, 4793, 5, 128, 0, 0, 4792, 4790, 1, 0, 0, 0, 4793, 4796, 1, 0, 0, 0, 4794, 4792, 1, 0, 0, 0, 4794, 4795, 1, 0, 0, 0, 4795, 4797, 1, 0, 0, 0, 4796, 4794, 1, 0, 0, 0, 4797, 4799, 5, 3, 0, 0, 4798, 4788, 1, 0, 0, 0, 4798, 4799, 1, 0, 0, 0, 4799, 4825, 1, 0, 0, 0, 4800, 4802, 5, 226, 0, 0, 4801, 4803, 5, 109, 0, 0, 4802, 4801, 1, 0, 0, 0, 4802, 4803, 1, 0, 0, 0, 4803, 4804, 1, 0, 0, 0, 4804, 4826, 3, 780, 390, 0, 4805, 4807, 5, 92, 0, 0, 4806, 4808, 5, 109, 0, 0, 4807, 4806, 1, 0, 0, 0, 4807, 4808, 1, 0, 0, 0, 4808, 4809, 1, 0, 0, 0, 4809, 4826, 3, 774, 387, 0, 4810, 4812, 5, 323, 0, 0, 4811, 4813, 5, 109, 0, 0, 4812, 4811, 1, 0, 0, 0, 4812, 4813, 1, 0, 0, 0, 4813, 4814, 1, 0, 0, 0, 4814, 4826, 3, 790, 395, 0, 4815, 4817, 5, 349, 0, 0, 4816, 4818, 5, 109, 0, 0, 4817, 4816, 1, 0, 0, 0, 4817, 4818, 1, 0, 0, 0, 4818, 4819, 1, 0, 0, 0, 4819, 4826, 3, 818, 409, 0, 4820, 4822, 5, 175, 0, 0, 4821, 4823, 5, 109, 0, 0, 4822, 4821, 1, 0, 0, 0, 4822, 4823, 1, 0, 0, 0, 4823, 4824, 1, 0, 0, 0, 4824, 4826, 3, 788, 394, 0, 4825, 4800, 1, 0, 0, 0, 4825, 4805, 1, 0, 0, 0, 4825, 4810, 1, 0, 0, 0, 4825, 4815, 1, 0, 0, 0, 4825, 4820, 1, 0, 0, 0, 4826, 429, 1, 0, 0, 0, 4827, 4828, 5, 138, 0, 0, 4828, 4829, 3, 176, 88, 0, 4829, 4830, 7, 16, 0, 0, 4830, 4831, 3, 100, 50, 0, 4831, 431, 1, 0, 0, 0, 4832, 4837, 5, 138, 0, 0, 4833, 4834, 5, 136, 0, 0, 4834, 4838, 3, 394, 197, 0, 4835, 4836, 5, 442, 0, 0, 4836, 4838, 3, 374, 187, 0, 4837, 4833, 1, 0, 0, 0, 4837, 4835, 1, 0, 0, 0, 4838, 4839, 1, 0, 0, 0, 4839, 4840, 5, 309, 0, 0, 4840, 4841, 5, 94, 0, 0, 4841, 4842, 3, 818, 409, 0, 4842, 5040, 1, 0, 0, 0, 4843, 4844, 5, 138, 0, 0, 4844, 4845, 5, 175, 0, 0, 4845, 4846, 3, 788, 394, 0, 4846, 4847, 5, 309, 0, 0, 4847, 4848, 5, 94, 0, 0, 4848, 4849, 3, 786, 393, 0, 4849, 5040, 1, 0, 0, 0, 4850, 4851, 5, 138, 0, 0, 4851, 4852, 7, 61, 0, 0, 4852, 4853, 3, 316, 158, 0, 4853, 4854, 5, 309, 0, 0, 4854, 4855, 5, 94, 0, 0, 4855, 4856, 3, 818, 409, 0, 4856, 5040, 1, 0, 0, 0, 4857, 4858, 5, 138, 0, 0, 4858, 4859, 5, 211, 0, 0, 4859, 4860, 3, 382, 191, 0, 4860, 4861, 5, 309, 0, 0, 4861, 4862, 5, 94, 0, 0, 4862, 4863, 3, 804, 402, 0, 4863, 5040, 1, 0, 0, 0, 4864, 4865, 5, 138, 0, 0, 4865, 4866, 5, 278, 0, 0, 4866, 4867, 7, 31, 0, 0, 4867, 4868, 3, 316, 158, 0, 4868, 4869, 3, 170, 85, 0, 4869, 4870, 5, 309, 0, 0, 4870, 4871, 5, 94, 0, 0, 4871, 4872, 3, 818, 409, 0, 4872, 5040, 1, 0, 0, 0, 4873, 4874, 5, 138, 0, 0, 4874, 4875, 5, 296, 0, 0, 4875, 4876, 3, 378, 189, 0, 4876, 4877, 5, 309, 0, 0, 4877, 4878, 5, 94, 0, 0, 4878, 4879, 3, 798, 399, 0, 4879, 5040, 1, 0, 0, 0, 4880, 4881, 5, 138, 0, 0, 4881, 4882, 5, 323, 0, 0, 4882, 4883, 3, 790, 395, 0, 4883, 4884, 5, 309, 0, 0, 4884, 4885, 5, 94, 0, 0, 4885, 4886, 3, 32, 16, 0, 4886, 5040, 1, 0, 0, 0, 4887, 4888, 5, 138, 0, 0, 4888, 4890, 7, 62, 0, 0, 4889, 4891, 3, 422, 211, 0, 4890, 4889, 1, 0, 0, 0, 4890, 4891, 1, 0, 0, 0, 4891, 4892, 1, 0, 0, 0, 4892, 4893, 3, 780, 390, 0, 4893, 4894, 5, 309, 0, 0, 4894, 4895, 5, 94, 0, 0, 4895, 4896, 3, 818, 409, 0, 4896, 5040, 1, 0, 0, 0, 4897, 4899, 5, 138, 0, 0, 4898, 4900, 5, 259, 0, 0, 4899, 4898, 1, 0, 0, 0, 4899, 4900, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4903, 5, 376, 0, 0, 4902, 4904, 3, 422, 211, 0, 4903, 4902, 1, 0, 0, 0, 4903, 4904, 1, 0, 0, 0, 4904, 4905, 1, 0, 0, 0, 4905, 4906, 3, 778, 389, 0, 4906, 4907, 5, 309, 0, 0, 4907, 4908, 5, 94, 0, 0, 4908, 4909, 3, 776, 388, 0, 4909, 5040, 1, 0, 0, 0, 4910, 4912, 5, 138, 0, 0, 4911, 4913, 5, 63, 0, 0, 4912, 4911, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 4916, 5, 92, 0, 0, 4915, 4917, 3, 422, 211, 0, 4916, 4915, 1, 0, 0, 0, 4916, 4917, 1, 0, 0, 0, 4917, 4918, 1, 0, 0, 0, 4918, 4919, 3, 624, 312, 0, 4919, 4920, 5, 309, 0, 0, 4920, 4921, 5, 94, 0, 0, 4921, 4922, 3, 772, 386, 0, 4922, 5040, 1, 0, 0, 0, 4923, 4948, 5, 138, 0, 0, 4924, 4926, 5, 63, 0, 0, 4925, 4924, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, 4927, 1, 0, 0, 0, 4927, 4929, 5, 92, 0, 0, 4928, 4930, 3, 422, 211, 0, 4929, 4928, 1, 0, 0, 0, 4929, 4930, 1, 0, 0, 0, 4930, 4931, 1, 0, 0, 0, 4931, 4932, 3, 624, 312, 0, 4932, 4934, 5, 309, 0, 0, 4933, 4935, 5, 44, 0, 0, 4934, 4933, 1, 0, 0, 0, 4934, 4935, 1, 0, 0, 0, 4935, 4949, 1, 0, 0, 0, 4936, 4938, 5, 259, 0, 0, 4937, 4936, 1, 0, 0, 0, 4937, 4938, 1, 0, 0, 0, 4938, 4939, 1, 0, 0, 0, 4939, 4941, 5, 376, 0, 0, 4940, 4942, 3, 422, 211, 0, 4941, 4940, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 4943, 1, 0, 0, 0, 4943, 4944, 3, 778, 389, 0, 4944, 4946, 5, 309, 0, 0, 4945, 4947, 5, 44, 0, 0, 4946, 4945, 1, 0, 0, 0, 4946, 4947, 1, 0, 0, 0, 4947, 4949, 1, 0, 0, 0, 4948, 4925, 1, 0, 0, 0, 4948, 4937, 1, 0, 0, 0, 4949, 4950, 1, 0, 0, 0, 4950, 4951, 3, 800, 400, 0, 4951, 4952, 5, 94, 0, 0, 4952, 4953, 3, 802, 401, 0, 4953, 5040, 1, 0, 0, 0, 4954, 4962, 5, 138, 0, 0, 4955, 4957, 5, 92, 0, 0, 4956, 4958, 3, 422, 211, 0, 4957, 4956, 1, 0, 0, 0, 4957, 4958, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 4963, 3, 624, 312, 0, 4960, 4961, 5, 189, 0, 0, 4961, 4963, 3, 316, 158, 0, 4962, 4955, 1, 0, 0, 0, 4962, 4960, 1, 0, 0, 0, 4963, 4964, 1, 0, 0, 0, 4964, 4965, 5, 309, 0, 0, 4965, 4966, 5, 45, 0, 0, 4966, 4967, 3, 818, 409, 0, 4967, 4968, 5, 94, 0, 0, 4968, 4969, 3, 818, 409, 0, 4969, 5040, 1, 0, 0, 0, 4970, 4977, 5, 138, 0, 0, 4971, 4973, 5, 445, 0, 0, 4972, 4974, 3, 422, 211, 0, 4973, 4972, 1, 0, 0, 0, 4973, 4974, 1, 0, 0, 0, 4974, 4978, 1, 0, 0, 0, 4975, 4978, 5, 321, 0, 0, 4976, 4978, 5, 357, 0, 0, 4977, 4971, 1, 0, 0, 0, 4977, 4975, 1, 0, 0, 0, 4977, 4976, 1, 0, 0, 0, 4978, 4979, 1, 0, 0, 0, 4979, 4980, 3, 818, 409, 0, 4980, 4981, 5, 80, 0, 0, 4981, 4982, 3, 780, 390, 0, 4982, 4983, 5, 309, 0, 0, 4983, 4984, 5, 94, 0, 0, 4984, 4985, 3, 818, 409, 0, 4985, 5040, 1, 0, 0, 0, 4986, 4999, 5, 138, 0, 0, 4987, 4988, 5, 63, 0, 0, 4988, 4989, 5, 174, 0, 0, 4989, 5000, 5, 381, 0, 0, 4990, 4992, 5, 295, 0, 0, 4991, 4990, 1, 0, 0, 0, 4991, 4992, 1, 0, 0, 0, 4992, 4993, 1, 0, 0, 0, 4993, 5000, 5, 247, 0, 0, 4994, 5000, 5, 452, 0, 0, 4995, 5000, 5, 331, 0, 0, 4996, 5000, 5, 451, 0, 0, 4997, 4998, 5, 198, 0, 0, 4998, 5000, 5, 357, 0, 0, 4999, 4987, 1, 0, 0, 0, 4999, 4991, 1, 0, 0, 0, 4999, 4994, 1, 0, 0, 0, 4999, 4995, 1, 0, 0, 0, 4999, 4996, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 5001, 1, 0, 0, 0, 5001, 5002, 3, 818, 409, 0, 5002, 5003, 5, 309, 0, 0, 5003, 5004, 5, 94, 0, 0, 5004, 5005, 3, 818, 409, 0, 5005, 5040, 1, 0, 0, 0, 5006, 5007, 5, 138, 0, 0, 5007, 5008, 7, 45, 0, 0, 5008, 5009, 3, 814, 407, 0, 5009, 5010, 5, 309, 0, 0, 5010, 5011, 5, 94, 0, 0, 5011, 5012, 3, 814, 407, 0, 5012, 5040, 1, 0, 0, 0, 5013, 5014, 5, 138, 0, 0, 5014, 5015, 3, 176, 88, 0, 5015, 5016, 5, 309, 0, 0, 5016, 5017, 5, 94, 0, 0, 5017, 5018, 3, 768, 384, 0, 5018, 5040, 1, 0, 0, 0, 5019, 5020, 5, 138, 0, 0, 5020, 5021, 5, 355, 0, 0, 5021, 5022, 5, 325, 0, 0, 5022, 5023, 7, 41, 0, 0, 5023, 5024, 3, 316, 158, 0, 5024, 5025, 5, 309, 0, 0, 5025, 5026, 5, 94, 0, 0, 5026, 5027, 3, 818, 409, 0, 5027, 5040, 1, 0, 0, 0, 5028, 5029, 5, 138, 0, 0, 5029, 5030, 5, 360, 0, 0, 5030, 5031, 3, 316, 158, 0, 5031, 5032, 5, 309, 0, 0, 5032, 5033, 5, 143, 0, 0, 5033, 5034, 3, 818, 409, 0, 5034, 5035, 5, 94, 0, 0, 5035, 5037, 3, 818, 409, 0, 5036, 5038, 3, 96, 48, 0, 5037, 5036, 1, 0, 0, 0, 5037, 5038, 1, 0, 0, 0, 5038, 5040, 1, 0, 0, 0, 5039, 4832, 1, 0, 0, 0, 5039, 4843, 1, 0, 0, 0, 5039, 4850, 1, 0, 0, 0, 5039, 4857, 1, 0, 0, 0, 5039, 4864, 1, 0, 0, 0, 5039, 4873, 1, 0, 0, 0, 5039, 4880, 1, 0, 0, 0, 5039, 4887, 1, 0, 0, 0, 5039, 4897, 1, 0, 0, 0, 5039, 4910, 1, 0, 0, 0, 5039, 4923, 1, 0, 0, 0, 5039, 4954, 1, 0, 0, 0, 5039, 4970, 1, 0, 0, 0, 5039, 4986, 1, 0, 0, 0, 5039, 5006, 1, 0, 0, 0, 5039, 5013, 1, 0, 0, 0, 5039, 5019, 1, 0, 0, 0, 5039, 5028, 1, 0, 0, 0, 5040, 433, 1, 0, 0, 0, 5041, 5058, 5, 138, 0, 0, 5042, 5043, 5, 211, 0, 0, 5043, 5059, 3, 382, 191, 0, 5044, 5045, 5, 296, 0, 0, 5045, 5059, 3, 378, 189, 0, 5046, 5047, 5, 442, 0, 0, 5047, 5059, 3, 374, 187, 0, 5048, 5049, 5, 357, 0, 0, 5049, 5050, 3, 818, 409, 0, 5050, 5051, 5, 80, 0, 0, 5051, 5052, 3, 780, 390, 0, 5052, 5059, 1, 0, 0, 0, 5053, 5054, 5, 259, 0, 0, 5054, 5055, 5, 376, 0, 0, 5055, 5059, 3, 778, 389, 0, 5056, 5057, 5, 226, 0, 0, 5057, 5059, 3, 780, 390, 0, 5058, 5042, 1, 0, 0, 0, 5058, 5044, 1, 0, 0, 0, 5058, 5046, 1, 0, 0, 0, 5058, 5048, 1, 0, 0, 0, 5058, 5053, 1, 0, 0, 0, 5058, 5056, 1, 0, 0, 0, 5059, 5061, 1, 0, 0, 0, 5060, 5062, 5, 269, 0, 0, 5061, 5060, 1, 0, 0, 0, 5061, 5062, 1, 0, 0, 0, 5062, 5063, 1, 0, 0, 0, 5063, 5064, 5, 462, 0, 0, 5064, 5065, 5, 80, 0, 0, 5065, 5066, 5, 204, 0, 0, 5066, 5067, 3, 818, 409, 0, 5067, 435, 1, 0, 0, 0, 5068, 5107, 5, 138, 0, 0, 5069, 5070, 5, 136, 0, 0, 5070, 5108, 3, 394, 197, 0, 5071, 5072, 5, 204, 0, 0, 5072, 5108, 3, 818, 409, 0, 5073, 5074, 5, 211, 0, 0, 5074, 5108, 3, 382, 191, 0, 5075, 5076, 5, 278, 0, 0, 5076, 5108, 3, 416, 208, 0, 5077, 5078, 5, 278, 0, 0, 5078, 5079, 7, 31, 0, 0, 5079, 5080, 3, 316, 158, 0, 5080, 5081, 3, 170, 85, 0, 5081, 5108, 1, 0, 0, 0, 5082, 5083, 5, 296, 0, 0, 5083, 5108, 3, 378, 189, 0, 5084, 5085, 5, 442, 0, 0, 5085, 5108, 3, 374, 187, 0, 5086, 5088, 5, 328, 0, 0, 5087, 5089, 3, 422, 211, 0, 5088, 5087, 1, 0, 0, 0, 5088, 5089, 1, 0, 0, 0, 5089, 5090, 1, 0, 0, 0, 5090, 5108, 3, 780, 390, 0, 5091, 5093, 5, 259, 0, 0, 5092, 5091, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, 5094, 1, 0, 0, 0, 5094, 5096, 5, 376, 0, 0, 5095, 5097, 3, 422, 211, 0, 5096, 5095, 1, 0, 0, 0, 5096, 5097, 1, 0, 0, 0, 5097, 5098, 1, 0, 0, 0, 5098, 5108, 3, 778, 389, 0, 5099, 5101, 5, 63, 0, 0, 5100, 5099, 1, 0, 0, 0, 5100, 5101, 1, 0, 0, 0, 5101, 5102, 1, 0, 0, 0, 5102, 5104, 5, 92, 0, 0, 5103, 5105, 3, 422, 211, 0, 5104, 5103, 1, 0, 0, 0, 5104, 5105, 1, 0, 0, 0, 5105, 5106, 1, 0, 0, 0, 5106, 5108, 3, 624, 312, 0, 5107, 5069, 1, 0, 0, 0, 5107, 5071, 1, 0, 0, 0, 5107, 5073, 1, 0, 0, 0, 5107, 5075, 1, 0, 0, 0, 5107, 5077, 1, 0, 0, 0, 5107, 5082, 1, 0, 0, 0, 5107, 5084, 1, 0, 0, 0, 5107, 5086, 1, 0, 0, 0, 5107, 5092, 1, 0, 0, 0, 5107, 5100, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5110, 5, 333, 0, 0, 5110, 5111, 5, 323, 0, 0, 5111, 5112, 3, 790, 395, 0, 5112, 5130, 1, 0, 0, 0, 5113, 5122, 5, 138, 0, 0, 5114, 5115, 5, 355, 0, 0, 5115, 5116, 5, 325, 0, 0, 5116, 5123, 7, 41, 0, 0, 5117, 5123, 5, 108, 0, 0, 5118, 5123, 5, 168, 0, 0, 5119, 5123, 5, 189, 0, 0, 5120, 5123, 5, 342, 0, 0, 5121, 5123, 5, 360, 0, 0, 5122, 5114, 1, 0, 0, 0, 5122, 5117, 1, 0, 0, 0, 5122, 5118, 1, 0, 0, 0, 5122, 5119, 1, 0, 0, 0, 5122, 5120, 1, 0, 0, 0, 5122, 5121, 1, 0, 0, 0, 5123, 5124, 1, 0, 0, 0, 5124, 5125, 3, 316, 158, 0, 5125, 5126, 5, 333, 0, 0, 5126, 5127, 5, 323, 0, 0, 5127, 5128, 3, 790, 395, 0, 5128, 5130, 1, 0, 0, 0, 5129, 5068, 1, 0, 0, 0, 5129, 5113, 1, 0, 0, 0, 5130, 437, 1, 0, 0, 0, 5131, 5132, 5, 138, 0, 0, 5132, 5133, 5, 278, 0, 0, 5133, 5134, 3, 416, 208, 0, 5134, 5135, 5, 333, 0, 0, 5135, 5136, 3, 440, 220, 0, 5136, 439, 1, 0, 0, 0, 5137, 5138, 5, 2, 0, 0, 5138, 5143, 3, 442, 221, 0, 5139, 5140, 5, 6, 0, 0, 5140, 5142, 3, 442, 221, 0, 5141, 5139, 1, 0, 0, 0, 5142, 5145, 1, 0, 0, 0, 5143, 5141, 1, 0, 0, 0, 5143, 5144, 1, 0, 0, 0, 5144, 5146, 1, 0, 0, 0, 5145, 5143, 1, 0, 0, 0, 5146, 5147, 5, 3, 0, 0, 5147, 441, 1, 0, 0, 0, 5148, 5149, 3, 824, 412, 0, 5149, 5156, 5, 10, 0, 0, 5150, 5157, 5, 407, 0, 0, 5151, 5157, 3, 388, 194, 0, 5152, 5157, 3, 834, 417, 0, 5153, 5157, 3, 726, 363, 0, 5154, 5157, 3, 202, 101, 0, 5155, 5157, 3, 808, 404, 0, 5156, 5150, 1, 0, 0, 0, 5156, 5151, 1, 0, 0, 0, 5156, 5152, 1, 0, 0, 0, 5156, 5153, 1, 0, 0, 0, 5156, 5154, 1, 0, 0, 0, 5156, 5155, 1, 0, 0, 0, 5157, 443, 1, 0, 0, 0, 5158, 5159, 5, 138, 0, 0, 5159, 5160, 5, 360, 0, 0, 5160, 5161, 3, 316, 158, 0, 5161, 5162, 5, 333, 0, 0, 5162, 5163, 3, 440, 220, 0, 5163, 445, 1, 0, 0, 0, 5164, 5165, 5, 138, 0, 0, 5165, 5166, 5, 278, 0, 0, 5166, 5167, 7, 31, 0, 0, 5167, 5168, 3, 316, 158, 0, 5168, 5169, 3, 170, 85, 0, 5169, 5170, 5, 282, 0, 0, 5170, 5171, 5, 94, 0, 0, 5171, 5172, 3, 814, 407, 0, 5172, 5239, 1, 0, 0, 0, 5173, 5200, 5, 138, 0, 0, 5174, 5175, 5, 136, 0, 0, 5175, 5201, 3, 394, 197, 0, 5176, 5177, 5, 175, 0, 0, 5177, 5201, 3, 788, 394, 0, 5178, 5179, 5, 211, 0, 0, 5179, 5201, 3, 382, 191, 0, 5180, 5182, 5, 295, 0, 0, 5181, 5180, 1, 0, 0, 0, 5181, 5182, 1, 0, 0, 0, 5182, 5183, 1, 0, 0, 0, 5183, 5184, 5, 247, 0, 0, 5184, 5201, 3, 818, 409, 0, 5185, 5186, 5, 248, 0, 0, 5186, 5187, 5, 274, 0, 0, 5187, 5201, 3, 202, 101, 0, 5188, 5189, 5, 248, 0, 0, 5189, 5190, 5, 274, 0, 0, 5190, 5201, 3, 202, 101, 0, 5191, 5192, 5, 278, 0, 0, 5192, 5201, 3, 416, 208, 0, 5193, 5194, 5, 296, 0, 0, 5194, 5201, 3, 378, 189, 0, 5195, 5196, 5, 442, 0, 0, 5196, 5201, 3, 374, 187, 0, 5197, 5198, 5, 323, 0, 0, 5198, 5201, 3, 790, 395, 0, 5199, 5201, 3, 176, 88, 0, 5200, 5174, 1, 0, 0, 0, 5200, 5176, 1, 0, 0, 0, 5200, 5178, 1, 0, 0, 0, 5200, 5181, 1, 0, 0, 0, 5200, 5185, 1, 0, 0, 0, 5200, 5188, 1, 0, 0, 0, 5200, 5191, 1, 0, 0, 0, 5200, 5193, 1, 0, 0, 0, 5200, 5195, 1, 0, 0, 0, 5200, 5197, 1, 0, 0, 0, 5200, 5199, 1, 0, 0, 0, 5201, 5202, 1, 0, 0, 0, 5202, 5203, 5, 282, 0, 0, 5203, 5204, 5, 94, 0, 0, 5204, 5205, 3, 814, 407, 0, 5205, 5239, 1, 0, 0, 0, 5206, 5215, 5, 138, 0, 0, 5207, 5208, 5, 355, 0, 0, 5208, 5209, 5, 325, 0, 0, 5209, 5216, 7, 63, 0, 0, 5210, 5216, 5, 108, 0, 0, 5211, 5216, 5, 168, 0, 0, 5212, 5216, 5, 189, 0, 0, 5213, 5216, 5, 360, 0, 0, 5214, 5216, 5, 342, 0, 0, 5215, 5207, 1, 0, 0, 0, 5215, 5210, 1, 0, 0, 0, 5215, 5211, 1, 0, 0, 0, 5215, 5212, 1, 0, 0, 0, 5215, 5213, 1, 0, 0, 0, 5215, 5214, 1, 0, 0, 0, 5216, 5217, 1, 0, 0, 0, 5217, 5218, 3, 316, 158, 0, 5218, 5219, 5, 282, 0, 0, 5219, 5220, 5, 94, 0, 0, 5220, 5221, 3, 814, 407, 0, 5221, 5239, 1, 0, 0, 0, 5222, 5231, 5, 138, 0, 0, 5223, 5232, 5, 331, 0, 0, 5224, 5225, 5, 63, 0, 0, 5225, 5226, 5, 174, 0, 0, 5226, 5232, 5, 381, 0, 0, 5227, 5228, 5, 198, 0, 0, 5228, 5232, 5, 357, 0, 0, 5229, 5232, 5, 452, 0, 0, 5230, 5232, 5, 451, 0, 0, 5231, 5223, 1, 0, 0, 0, 5231, 5224, 1, 0, 0, 0, 5231, 5227, 1, 0, 0, 0, 5231, 5229, 1, 0, 0, 0, 5231, 5230, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5234, 3, 818, 409, 0, 5234, 5235, 5, 282, 0, 0, 5235, 5236, 5, 94, 0, 0, 5236, 5237, 3, 814, 407, 0, 5237, 5239, 1, 0, 0, 0, 5238, 5164, 1, 0, 0, 0, 5238, 5173, 1, 0, 0, 0, 5238, 5206, 1, 0, 0, 0, 5238, 5222, 1, 0, 0, 0, 5239, 447, 1, 0, 0, 0, 5240, 5241, 5, 46, 0, 0, 5241, 5242, 5, 452, 0, 0, 5242, 5249, 3, 818, 409, 0, 5243, 5244, 5, 62, 0, 0, 5244, 5245, 5, 92, 0, 0, 5245, 5250, 3, 628, 314, 0, 5246, 5247, 5, 62, 0, 0, 5247, 5248, 5, 30, 0, 0, 5248, 5250, 5, 350, 0, 0, 5249, 5243, 1, 0, 0, 0, 5249, 5246, 1, 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5252, 1, 0, 0, 0, 5251, 5253, 3, 400, 200, 0, 5252, 5251, 1, 0, 0, 0, 5252, 5253, 1, 0, 0, 0, 5253, 449, 1, 0, 0, 0, 5254, 5255, 5, 138, 0, 0, 5255, 5256, 5, 452, 0, 0, 5256, 5274, 3, 818, 409, 0, 5257, 5258, 5, 282, 0, 0, 5258, 5259, 5, 94, 0, 0, 5259, 5275, 3, 814, 407, 0, 5260, 5261, 5, 333, 0, 0, 5261, 5275, 3, 284, 142, 0, 5262, 5263, 5, 309, 0, 0, 5263, 5264, 5, 94, 0, 0, 5264, 5275, 3, 818, 409, 0, 5265, 5266, 7, 34, 0, 0, 5266, 5271, 3, 626, 313, 0, 5267, 5268, 5, 6, 0, 0, 5268, 5270, 3, 626, 313, 0, 5269, 5267, 1, 0, 0, 0, 5270, 5273, 1, 0, 0, 0, 5271, 5269, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5275, 1, 0, 0, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5257, 1, 0, 0, 0, 5274, 5260, 1, 0, 0, 0, 5274, 5262, 1, 0, 0, 0, 5274, 5265, 1, 0, 0, 0, 5275, 451, 1, 0, 0, 0, 5276, 5277, 5, 46, 0, 0, 5277, 5278, 5, 451, 0, 0, 5278, 5279, 3, 818, 409, 0, 5279, 5280, 5, 164, 0, 0, 5280, 5281, 3, 808, 404, 0, 5281, 5282, 5, 452, 0, 0, 5282, 5287, 3, 824, 412, 0, 5283, 5284, 5, 6, 0, 0, 5284, 5286, 3, 824, 412, 0, 5285, 5283, 1, 0, 0, 0, 5286, 5289, 1, 0, 0, 0, 5287, 5285, 1, 0, 0, 0, 5287, 5288, 1, 0, 0, 0, 5288, 5291, 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5290, 5292, 3, 400, 200, 0, 5291, 5290, 1, 0, 0, 0, 5291, 5292, 1, 0, 0, 0, 5292, 453, 1, 0, 0, 0, 5293, 5294, 5, 138, 0, 0, 5294, 5295, 5, 451, 0, 0, 5295, 5296, 3, 818, 409, 0, 5296, 5297, 5, 333, 0, 0, 5297, 5298, 3, 284, 142, 0, 5298, 5350, 1, 0, 0, 0, 5299, 5300, 5, 138, 0, 0, 5300, 5301, 5, 451, 0, 0, 5301, 5302, 3, 818, 409, 0, 5302, 5303, 5, 164, 0, 0, 5303, 5304, 3, 808, 404, 0, 5304, 5350, 1, 0, 0, 0, 5305, 5306, 5, 138, 0, 0, 5306, 5307, 5, 451, 0, 0, 5307, 5308, 3, 818, 409, 0, 5308, 5309, 5, 305, 0, 0, 5309, 5311, 5, 452, 0, 0, 5310, 5312, 3, 400, 200, 0, 5311, 5310, 1, 0, 0, 0, 5311, 5312, 1, 0, 0, 0, 5312, 5350, 1, 0, 0, 0, 5313, 5314, 5, 138, 0, 0, 5314, 5315, 5, 451, 0, 0, 5315, 5316, 3, 818, 409, 0, 5316, 5317, 7, 34, 0, 0, 5317, 5318, 5, 452, 0, 0, 5318, 5323, 3, 824, 412, 0, 5319, 5320, 5, 6, 0, 0, 5320, 5322, 3, 824, 412, 0, 5321, 5319, 1, 0, 0, 0, 5322, 5325, 1, 0, 0, 0, 5323, 5321, 1, 0, 0, 0, 5323, 5324, 1, 0, 0, 0, 5324, 5327, 1, 0, 0, 0, 5325, 5323, 1, 0, 0, 0, 5326, 5328, 3, 400, 200, 0, 5327, 5326, 1, 0, 0, 0, 5327, 5328, 1, 0, 0, 0, 5328, 5350, 1, 0, 0, 0, 5329, 5330, 5, 138, 0, 0, 5330, 5331, 5, 451, 0, 0, 5331, 5332, 3, 818, 409, 0, 5332, 5333, 7, 64, 0, 0, 5333, 5350, 1, 0, 0, 0, 5334, 5335, 5, 138, 0, 0, 5335, 5336, 5, 451, 0, 0, 5336, 5337, 3, 818, 409, 0, 5337, 5338, 5, 465, 0, 0, 5338, 5339, 5, 2, 0, 0, 5339, 5340, 3, 290, 145, 0, 5340, 5341, 5, 3, 0, 0, 5341, 5350, 1, 0, 0, 0, 5342, 5343, 5, 138, 0, 0, 5343, 5344, 5, 451, 0, 0, 5344, 5345, 3, 818, 409, 0, 5345, 5346, 5, 282, 0, 0, 5346, 5347, 5, 94, 0, 0, 5347, 5348, 3, 814, 407, 0, 5348, 5350, 1, 0, 0, 0, 5349, 5293, 1, 0, 0, 0, 5349, 5299, 1, 0, 0, 0, 5349, 5305, 1, 0, 0, 0, 5349, 5313, 1, 0, 0, 0, 5349, 5329, 1, 0, 0, 0, 5349, 5334, 1, 0, 0, 0, 5349, 5342, 1, 0, 0, 0, 5350, 455, 1, 0, 0, 0, 5351, 5353, 5, 46, 0, 0, 5352, 5354, 3, 366, 183, 0, 5353, 5352, 1, 0, 0, 0, 5353, 5354, 1, 0, 0, 0, 5354, 5355, 1, 0, 0, 0, 5355, 5356, 5, 321, 0, 0, 5356, 5357, 3, 818, 409, 0, 5357, 5358, 5, 36, 0, 0, 5358, 5359, 5, 80, 0, 0, 5359, 5360, 7, 65, 0, 0, 5360, 5361, 5, 94, 0, 0, 5361, 5363, 3, 780, 390, 0, 5362, 5364, 3, 638, 319, 0, 5363, 5362, 1, 0, 0, 0, 5363, 5364, 1, 0, 0, 0, 5364, 5365, 1, 0, 0, 0, 5365, 5367, 5, 57, 0, 0, 5366, 5368, 7, 66, 0, 0, 5367, 5366, 1, 0, 0, 0, 5367, 5368, 1, 0, 0, 0, 5368, 5385, 1, 0, 0, 0, 5369, 5386, 5, 270, 0, 0, 5370, 5386, 3, 458, 229, 0, 5371, 5373, 5, 2, 0, 0, 5372, 5374, 3, 458, 229, 0, 5373, 5372, 1, 0, 0, 0, 5373, 5374, 1, 0, 0, 0, 5374, 5381, 1, 0, 0, 0, 5375, 5377, 5, 7, 0, 0, 5376, 5378, 3, 458, 229, 0, 5377, 5376, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5380, 1, 0, 0, 0, 5379, 5375, 1, 0, 0, 0, 5380, 5383, 1, 0, 0, 0, 5381, 5379, 1, 0, 0, 0, 5381, 5382, 1, 0, 0, 0, 5382, 5384, 1, 0, 0, 0, 5383, 5381, 1, 0, 0, 0, 5384, 5386, 5, 3, 0, 0, 5385, 5369, 1, 0, 0, 0, 5385, 5370, 1, 0, 0, 0, 5385, 5371, 1, 0, 0, 0, 5386, 457, 1, 0, 0, 0, 5387, 5393, 3, 560, 280, 0, 5388, 5393, 3, 538, 269, 0, 5389, 5393, 3, 552, 276, 0, 5390, 5393, 3, 548, 274, 0, 5391, 5393, 3, 460, 230, 0, 5392, 5387, 1, 0, 0, 0, 5392, 5388, 1, 0, 0, 0, 5392, 5389, 1, 0, 0, 0, 5392, 5390, 1, 0, 0, 0, 5392, 5391, 1, 0, 0, 0, 5393, 459, 1, 0, 0, 0, 5394, 5395, 5, 271, 0, 0, 5395, 5397, 3, 818, 409, 0, 5396, 5398, 3, 462, 231, 0, 5397, 5396, 1, 0, 0, 0, 5397, 5398, 1, 0, 0, 0, 5398, 461, 1, 0, 0, 0, 5399, 5400, 5, 6, 0, 0, 5400, 5401, 3, 808, 404, 0, 5401, 463, 1, 0, 0, 0, 5402, 5403, 5, 252, 0, 0, 5403, 5404, 3, 818, 409, 0, 5404, 465, 1, 0, 0, 0, 5405, 5408, 5, 366, 0, 0, 5406, 5409, 3, 818, 409, 0, 5407, 5409, 5, 9, 0, 0, 5408, 5406, 1, 0, 0, 0, 5408, 5407, 1, 0, 0, 0, 5409, 467, 1, 0, 0, 0, 5410, 5412, 5, 146, 0, 0, 5411, 5413, 3, 470, 235, 0, 5412, 5411, 1, 0, 0, 0, 5412, 5413, 1, 0, 0, 0, 5413, 5415, 1, 0, 0, 0, 5414, 5416, 3, 474, 237, 0, 5415, 5414, 1, 0, 0, 0, 5415, 5416, 1, 0, 0, 0, 5416, 5456, 1, 0, 0, 0, 5417, 5418, 5, 340, 0, 0, 5418, 5420, 5, 356, 0, 0, 5419, 5421, 3, 474, 237, 0, 5420, 5419, 1, 0, 0, 0, 5420, 5421, 1, 0, 0, 0, 5421, 5456, 1, 0, 0, 0, 5422, 5423, 5, 322, 0, 0, 5423, 5456, 3, 818, 409, 0, 5424, 5426, 5, 308, 0, 0, 5425, 5427, 5, 322, 0, 0, 5426, 5425, 1, 0, 0, 0, 5426, 5427, 1, 0, 0, 0, 5427, 5428, 1, 0, 0, 0, 5428, 5456, 3, 818, 409, 0, 5429, 5430, 5, 290, 0, 0, 5430, 5431, 5, 356, 0, 0, 5431, 5456, 3, 808, 404, 0, 5432, 5433, 7, 67, 0, 0, 5433, 5434, 5, 291, 0, 0, 5434, 5456, 3, 808, 404, 0, 5435, 5437, 7, 68, 0, 0, 5436, 5438, 3, 470, 235, 0, 5437, 5436, 1, 0, 0, 0, 5437, 5438, 1, 0, 0, 0, 5438, 5444, 1, 0, 0, 0, 5439, 5441, 5, 33, 0, 0, 5440, 5442, 5, 269, 0, 0, 5441, 5440, 1, 0, 0, 0, 5441, 5442, 1, 0, 0, 0, 5442, 5443, 1, 0, 0, 0, 5443, 5445, 5, 153, 0, 0, 5444, 5439, 1, 0, 0, 0, 5444, 5445, 1, 0, 0, 0, 5445, 5456, 1, 0, 0, 0, 5446, 5448, 5, 319, 0, 0, 5447, 5449, 3, 470, 235, 0, 5448, 5447, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, 5450, 1, 0, 0, 0, 5450, 5452, 5, 94, 0, 0, 5451, 5453, 5, 322, 0, 0, 5452, 5451, 1, 0, 0, 0, 5452, 5453, 1, 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 5456, 3, 818, 409, 0, 5455, 5410, 1, 0, 0, 0, 5455, 5417, 1, 0, 0, 0, 5455, 5422, 1, 0, 0, 0, 5455, 5424, 1, 0, 0, 0, 5455, 5429, 1, 0, 0, 0, 5455, 5432, 1, 0, 0, 0, 5455, 5435, 1, 0, 0, 0, 5455, 5446, 1, 0, 0, 0, 5456, 469, 1, 0, 0, 0, 5457, 5458, 7, 69, 0, 0, 5458, 471, 1, 0, 0, 0, 5459, 5460, 5, 244, 0, 0, 5460, 5461, 5, 251, 0, 0, 5461, 5469, 3, 50, 25, 0, 5462, 5463, 5, 300, 0, 0, 5463, 5469, 7, 70, 0, 0, 5464, 5466, 5, 77, 0, 0, 5465, 5464, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 5467, 1, 0, 0, 0, 5467, 5469, 5, 54, 0, 0, 5468, 5459, 1, 0, 0, 0, 5468, 5462, 1, 0, 0, 0, 5468, 5465, 1, 0, 0, 0, 5469, 473, 1, 0, 0, 0, 5470, 5477, 3, 472, 236, 0, 5471, 5473, 5, 6, 0, 0, 5472, 5471, 1, 0, 0, 0, 5472, 5473, 1, 0, 0, 0, 5473, 5474, 1, 0, 0, 0, 5474, 5476, 3, 472, 236, 0, 5475, 5472, 1, 0, 0, 0, 5476, 5479, 1, 0, 0, 0, 5477, 5475, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 475, 1, 0, 0, 0, 5479, 5477, 1, 0, 0, 0, 5480, 5483, 5, 46, 0, 0, 5481, 5482, 5, 82, 0, 0, 5482, 5484, 5, 311, 0, 0, 5483, 5481, 1, 0, 0, 0, 5483, 5484, 1, 0, 0, 0, 5484, 5486, 1, 0, 0, 0, 5485, 5487, 3, 122, 61, 0, 5486, 5485, 1, 0, 0, 0, 5486, 5487, 1, 0, 0, 0, 5487, 5503, 1, 0, 0, 0, 5488, 5489, 5, 376, 0, 0, 5489, 5491, 3, 776, 388, 0, 5490, 5492, 3, 146, 73, 0, 5491, 5490, 1, 0, 0, 0, 5491, 5492, 1, 0, 0, 0, 5492, 5494, 1, 0, 0, 0, 5493, 5495, 3, 102, 51, 0, 5494, 5493, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5504, 1, 0, 0, 0, 5496, 5497, 5, 303, 0, 0, 5497, 5498, 5, 376, 0, 0, 5498, 5499, 3, 776, 388, 0, 5499, 5501, 3, 144, 72, 0, 5500, 5502, 3, 102, 51, 0, 5501, 5500, 1, 0, 0, 0, 5501, 5502, 1, 0, 0, 0, 5502, 5504, 1, 0, 0, 0, 5503, 5488, 1, 0, 0, 0, 5503, 5496, 1, 0, 0, 0, 5504, 5505, 1, 0, 0, 0, 5505, 5506, 5, 36, 0, 0, 5506, 5513, 3, 560, 280, 0, 5507, 5509, 5, 105, 0, 0, 5508, 5510, 7, 71, 0, 0, 5509, 5508, 1, 0, 0, 0, 5509, 5510, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5512, 5, 42, 0, 0, 5512, 5514, 5, 279, 0, 0, 5513, 5507, 1, 0, 0, 0, 5513, 5514, 1, 0, 0, 0, 5514, 477, 1, 0, 0, 0, 5515, 5516, 5, 253, 0, 0, 5516, 5517, 3, 808, 404, 0, 5517, 479, 1, 0, 0, 0, 5518, 5519, 5, 46, 0, 0, 5519, 5520, 5, 175, 0, 0, 5520, 5522, 3, 786, 393, 0, 5521, 5523, 5, 105, 0, 0, 5522, 5521, 1, 0, 0, 0, 5522, 5523, 1, 0, 0, 0, 5523, 5529, 1, 0, 0, 0, 5524, 5526, 3, 482, 241, 0, 5525, 5524, 1, 0, 0, 0, 5526, 5527, 1, 0, 0, 0, 5527, 5525, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5530, 1, 0, 0, 0, 5529, 5525, 1, 0, 0, 0, 5529, 5530, 1, 0, 0, 0, 5530, 481, 1, 0, 0, 0, 5531, 5532, 5, 164, 0, 0, 5532, 5540, 5, 74, 0, 0, 5533, 5540, 5, 194, 0, 0, 5534, 5540, 5, 255, 0, 0, 5535, 5540, 5, 282, 0, 0, 5536, 5540, 5, 351, 0, 0, 5537, 5540, 5, 353, 0, 0, 5538, 5540, 3, 826, 413, 0, 5539, 5531, 1, 0, 0, 0, 5539, 5533, 1, 0, 0, 0, 5539, 5534, 1, 0, 0, 0, 5539, 5535, 1, 0, 0, 0, 5539, 5536, 1, 0, 0, 0, 5539, 5537, 1, 0, 0, 0, 5539, 5538, 1, 0, 0, 0, 5540, 5542, 1, 0, 0, 0, 5541, 5543, 5, 10, 0, 0, 5542, 5541, 1, 0, 0, 0, 5542, 5543, 1, 0, 0, 0, 5543, 5547, 1, 0, 0, 0, 5544, 5548, 3, 812, 406, 0, 5545, 5548, 3, 54, 27, 0, 5546, 5548, 5, 53, 0, 0, 5547, 5544, 1, 0, 0, 0, 5547, 5545, 1, 0, 0, 0, 5547, 5546, 1, 0, 0, 0, 5548, 483, 1, 0, 0, 0, 5549, 5550, 5, 138, 0, 0, 5550, 5551, 5, 175, 0, 0, 5551, 5567, 3, 788, 394, 0, 5552, 5553, 5, 333, 0, 0, 5553, 5554, 5, 351, 0, 0, 5554, 5556, 3, 768, 384, 0, 5555, 5552, 1, 0, 0, 0, 5555, 5556, 1, 0, 0, 0, 5556, 5568, 1, 0, 0, 0, 5557, 5559, 5, 105, 0, 0, 5558, 5557, 1, 0, 0, 0, 5558, 5559, 1, 0, 0, 0, 5559, 5561, 1, 0, 0, 0, 5560, 5562, 3, 482, 241, 0, 5561, 5560, 1, 0, 0, 0, 5562, 5563, 1, 0, 0, 0, 5563, 5561, 1, 0, 0, 0, 5563, 5564, 1, 0, 0, 0, 5564, 5566, 1, 0, 0, 0, 5565, 5558, 1, 0, 0, 0, 5565, 5566, 1, 0, 0, 0, 5566, 5568, 1, 0, 0, 0, 5567, 5555, 1, 0, 0, 0, 5567, 5565, 1, 0, 0, 0, 5568, 485, 1, 0, 0, 0, 5569, 5570, 5, 138, 0, 0, 5570, 5571, 5, 175, 0, 0, 5571, 5573, 3, 788, 394, 0, 5572, 5574, 3, 64, 32, 0, 5573, 5572, 1, 0, 0, 0, 5573, 5574, 1, 0, 0, 0, 5574, 487, 1, 0, 0, 0, 5575, 5576, 5, 138, 0, 0, 5576, 5577, 5, 108, 0, 0, 5577, 5578, 3, 316, 158, 0, 5578, 5579, 5, 305, 0, 0, 5579, 5580, 5, 375, 0, 0, 5580, 489, 1, 0, 0, 0, 5581, 5582, 5, 138, 0, 0, 5582, 5583, 5, 349, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 3, 40, 20, 0, 5585, 491, 1, 0, 0, 0, 5586, 5587, 5, 46, 0, 0, 5587, 5588, 5, 189, 0, 0, 5588, 5590, 3, 316, 158, 0, 5589, 5591, 5, 36, 0, 0, 5590, 5589, 1, 0, 0, 0, 5590, 5591, 1, 0, 0, 0, 5591, 5592, 1, 0, 0, 0, 5592, 5596, 3, 652, 326, 0, 5593, 5595, 3, 134, 67, 0, 5594, 5593, 1, 0, 0, 0, 5595, 5598, 1, 0, 0, 0, 5596, 5594, 1, 0, 0, 0, 5596, 5597, 1, 0, 0, 0, 5597, 493, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5599, 5600, 5, 138, 0, 0, 5600, 5601, 5, 189, 0, 0, 5601, 5624, 3, 316, 158, 0, 5602, 5625, 3, 94, 47, 0, 5603, 5604, 7, 15, 0, 0, 5604, 5605, 5, 77, 0, 0, 5605, 5625, 5, 78, 0, 0, 5606, 5609, 5, 133, 0, 0, 5607, 5608, 5, 45, 0, 0, 5608, 5610, 3, 818, 409, 0, 5609, 5607, 1, 0, 0, 0, 5609, 5610, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, 5611, 5625, 3, 142, 71, 0, 5612, 5613, 5, 191, 0, 0, 5613, 5615, 5, 45, 0, 0, 5614, 5616, 3, 422, 211, 0, 5615, 5614, 1, 0, 0, 0, 5615, 5616, 1, 0, 0, 0, 5616, 5617, 1, 0, 0, 0, 5617, 5619, 3, 818, 409, 0, 5618, 5620, 3, 96, 48, 0, 5619, 5618, 1, 0, 0, 0, 5619, 5620, 1, 0, 0, 0, 5620, 5625, 1, 0, 0, 0, 5621, 5622, 5, 372, 0, 0, 5622, 5623, 5, 45, 0, 0, 5623, 5625, 3, 818, 409, 0, 5624, 5602, 1, 0, 0, 0, 5624, 5603, 1, 0, 0, 0, 5624, 5606, 1, 0, 0, 0, 5624, 5612, 1, 0, 0, 0, 5624, 5621, 1, 0, 0, 0, 5625, 495, 1, 0, 0, 0, 5626, 5627, 5, 138, 0, 0, 5627, 5628, 5, 355, 0, 0, 5628, 5629, 5, 325, 0, 0, 5629, 5630, 5, 185, 0, 0, 5630, 5631, 3, 316, 158, 0, 5631, 5632, 3, 284, 142, 0, 5632, 497, 1, 0, 0, 0, 5633, 5634, 5, 138, 0, 0, 5634, 5635, 5, 355, 0, 0, 5635, 5636, 5, 325, 0, 0, 5636, 5637, 5, 163, 0, 0, 5637, 5638, 3, 316, 158, 0, 5638, 5639, 7, 72, 0, 0, 5639, 5640, 5, 257, 0, 0, 5640, 5641, 5, 62, 0, 0, 5641, 5642, 3, 784, 392, 0, 5642, 5643, 5, 105, 0, 0, 5643, 5644, 3, 314, 157, 0, 5644, 5675, 1, 0, 0, 0, 5645, 5646, 5, 138, 0, 0, 5646, 5647, 5, 355, 0, 0, 5647, 5648, 5, 325, 0, 0, 5648, 5649, 5, 163, 0, 0, 5649, 5650, 3, 316, 158, 0, 5650, 5651, 5, 138, 0, 0, 5651, 5654, 5, 257, 0, 0, 5652, 5653, 5, 62, 0, 0, 5653, 5655, 3, 784, 392, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, 5656, 1, 0, 0, 0, 5656, 5657, 5, 311, 0, 0, 5657, 5658, 3, 316, 158, 0, 5658, 5659, 5, 105, 0, 0, 5659, 5660, 3, 316, 158, 0, 5660, 5675, 1, 0, 0, 0, 5661, 5662, 5, 138, 0, 0, 5662, 5663, 5, 355, 0, 0, 5663, 5664, 5, 325, 0, 0, 5664, 5665, 5, 163, 0, 0, 5665, 5666, 3, 316, 158, 0, 5666, 5667, 5, 191, 0, 0, 5667, 5669, 5, 257, 0, 0, 5668, 5670, 3, 422, 211, 0, 5669, 5668, 1, 0, 0, 0, 5669, 5670, 1, 0, 0, 0, 5670, 5671, 1, 0, 0, 0, 5671, 5672, 5, 62, 0, 0, 5672, 5673, 3, 784, 392, 0, 5673, 5675, 1, 0, 0, 0, 5674, 5633, 1, 0, 0, 0, 5674, 5645, 1, 0, 0, 0, 5674, 5661, 1, 0, 0, 0, 5675, 499, 1, 0, 0, 0, 5676, 5678, 5, 46, 0, 0, 5677, 5679, 5, 53, 0, 0, 5678, 5677, 1, 0, 0, 0, 5678, 5679, 1, 0, 0, 0, 5679, 5680, 1, 0, 0, 0, 5680, 5681, 5, 168, 0, 0, 5681, 5682, 3, 316, 158, 0, 5682, 5683, 5, 62, 0, 0, 5683, 5684, 3, 808, 404, 0, 5684, 5685, 5, 94, 0, 0, 5685, 5686, 3, 808, 404, 0, 5686, 5687, 5, 64, 0, 0, 5687, 5688, 3, 316, 158, 0, 5688, 501, 1, 0, 0, 0, 5689, 5691, 5, 158, 0, 0, 5690, 5692, 3, 514, 257, 0, 5691, 5690, 1, 0, 0, 0, 5691, 5692, 1, 0, 0, 0, 5692, 5697, 1, 0, 0, 0, 5693, 5695, 3, 774, 387, 0, 5694, 5696, 3, 170, 85, 0, 5695, 5694, 1, 0, 0, 0, 5695, 5696, 1, 0, 0, 0, 5696, 5698, 1, 0, 0, 0, 5697, 5693, 1, 0, 0, 0, 5697, 5698, 1, 0, 0, 0, 5698, 5715, 1, 0, 0, 0, 5699, 5700, 5, 158, 0, 0, 5700, 5701, 5, 2, 0, 0, 5701, 5706, 3, 514, 257, 0, 5702, 5703, 5, 6, 0, 0, 5703, 5705, 3, 514, 257, 0, 5704, 5702, 1, 0, 0, 0, 5705, 5708, 1, 0, 0, 0, 5706, 5704, 1, 0, 0, 0, 5706, 5707, 1, 0, 0, 0, 5707, 5709, 1, 0, 0, 0, 5708, 5706, 1, 0, 0, 0, 5709, 5710, 5, 3, 0, 0, 5710, 5712, 3, 774, 387, 0, 5711, 5713, 3, 170, 85, 0, 5712, 5711, 1, 0, 0, 0, 5712, 5713, 1, 0, 0, 0, 5713, 5715, 1, 0, 0, 0, 5714, 5689, 1, 0, 0, 0, 5714, 5699, 1, 0, 0, 0, 5715, 503, 1, 0, 0, 0, 5716, 5732, 5, 370, 0, 0, 5717, 5719, 5, 113, 0, 0, 5718, 5717, 1, 0, 0, 0, 5718, 5719, 1, 0, 0, 0, 5719, 5721, 1, 0, 0, 0, 5720, 5722, 5, 112, 0, 0, 5721, 5720, 1, 0, 0, 0, 5721, 5722, 1, 0, 0, 0, 5722, 5724, 1, 0, 0, 0, 5723, 5725, 3, 514, 257, 0, 5724, 5723, 1, 0, 0, 0, 5724, 5725, 1, 0, 0, 0, 5725, 5727, 1, 0, 0, 0, 5726, 5728, 3, 508, 254, 0, 5727, 5726, 1, 0, 0, 0, 5727, 5728, 1, 0, 0, 0, 5728, 5733, 1, 0, 0, 0, 5729, 5731, 3, 524, 262, 0, 5730, 5729, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 5733, 1, 0, 0, 0, 5732, 5718, 1, 0, 0, 0, 5732, 5730, 1, 0, 0, 0, 5733, 5735, 1, 0, 0, 0, 5734, 5736, 3, 518, 259, 0, 5735, 5734, 1, 0, 0, 0, 5735, 5736, 1, 0, 0, 0, 5736, 505, 1, 0, 0, 0, 5737, 5752, 3, 508, 254, 0, 5738, 5740, 3, 514, 257, 0, 5739, 5738, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 5753, 1, 0, 0, 0, 5741, 5742, 5, 2, 0, 0, 5742, 5747, 3, 512, 256, 0, 5743, 5744, 5, 6, 0, 0, 5744, 5746, 3, 512, 256, 0, 5745, 5743, 1, 0, 0, 0, 5746, 5749, 1, 0, 0, 0, 5747, 5745, 1, 0, 0, 0, 5747, 5748, 1, 0, 0, 0, 5748, 5750, 1, 0, 0, 0, 5749, 5747, 1, 0, 0, 0, 5750, 5751, 5, 3, 0, 0, 5751, 5753, 1, 0, 0, 0, 5752, 5739, 1, 0, 0, 0, 5752, 5741, 1, 0, 0, 0, 5753, 5755, 1, 0, 0, 0, 5754, 5756, 3, 518, 259, 0, 5755, 5754, 1, 0, 0, 0, 5755, 5756, 1, 0, 0, 0, 5756, 507, 1, 0, 0, 0, 5757, 5758, 7, 73, 0, 0, 5758, 509, 1, 0, 0, 0, 5759, 5762, 3, 822, 411, 0, 5760, 5762, 3, 508, 254, 0, 5761, 5759, 1, 0, 0, 0, 5761, 5760, 1, 0, 0, 0, 5762, 5765, 1, 0, 0, 0, 5763, 5766, 3, 54, 27, 0, 5764, 5766, 3, 202, 101, 0, 5765, 5763, 1, 0, 0, 0, 5765, 5764, 1, 0, 0, 0, 5765, 5766, 1, 0, 0, 0, 5766, 511, 1, 0, 0, 0, 5767, 5769, 7, 74, 0, 0, 5768, 5770, 7, 75, 0, 0, 5769, 5768, 1, 0, 0, 0, 5769, 5770, 1, 0, 0, 0, 5770, 5777, 1, 0, 0, 0, 5771, 5774, 5, 548, 0, 0, 5772, 5775, 3, 202, 101, 0, 5773, 5775, 3, 808, 404, 0, 5774, 5772, 1, 0, 0, 0, 5774, 5773, 1, 0, 0, 0, 5775, 5777, 1, 0, 0, 0, 5776, 5767, 1, 0, 0, 0, 5776, 5771, 1, 0, 0, 0, 5777, 513, 1, 0, 0, 0, 5778, 5780, 5, 128, 0, 0, 5779, 5781, 7, 75, 0, 0, 5780, 5779, 1, 0, 0, 0, 5780, 5781, 1, 0, 0, 0, 5781, 515, 1, 0, 0, 0, 5782, 5784, 3, 774, 387, 0, 5783, 5785, 3, 144, 72, 0, 5784, 5783, 1, 0, 0, 0, 5784, 5785, 1, 0, 0, 0, 5785, 517, 1, 0, 0, 0, 5786, 5791, 3, 516, 258, 0, 5787, 5788, 5, 6, 0, 0, 5788, 5790, 3, 516, 258, 0, 5789, 5787, 1, 0, 0, 0, 5790, 5793, 1, 0, 0, 0, 5791, 5789, 1, 0, 0, 0, 5791, 5792, 1, 0, 0, 0, 5792, 519, 1, 0, 0, 0, 5793, 5791, 1, 0, 0, 0, 5794, 5805, 5, 203, 0, 0, 5795, 5806, 3, 524, 262, 0, 5796, 5798, 5, 128, 0, 0, 5797, 5796, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 5806, 1, 0, 0, 0, 5799, 5801, 3, 508, 254, 0, 5800, 5802, 3, 514, 257, 0, 5801, 5800, 1, 0, 0, 0, 5801, 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5799, 1, 0, 0, 0, 5803, 5804, 1, 0, 0, 0, 5804, 5806, 1, 0, 0, 0, 5805, 5795, 1, 0, 0, 0, 5805, 5797, 1, 0, 0, 0, 5805, 5803, 1, 0, 0, 0, 5806, 5807, 1, 0, 0, 0, 5807, 5808, 3, 522, 261, 0, 5808, 521, 1, 0, 0, 0, 5809, 5819, 3, 560, 280, 0, 5810, 5819, 3, 538, 269, 0, 5811, 5819, 3, 552, 276, 0, 5812, 5819, 3, 548, 274, 0, 5813, 5819, 3, 558, 279, 0, 5814, 5819, 3, 186, 93, 0, 5815, 5819, 3, 192, 96, 0, 5816, 5819, 3, 194, 97, 0, 5817, 5819, 3, 532, 266, 0, 5818, 5809, 1, 0, 0, 0, 5818, 5810, 1, 0, 0, 0, 5818, 5811, 1, 0, 0, 0, 5818, 5812, 1, 0, 0, 0, 5818, 5813, 1, 0, 0, 0, 5818, 5814, 1, 0, 0, 0, 5818, 5815, 1, 0, 0, 0, 5818, 5816, 1, 0, 0, 0, 5818, 5817, 1, 0, 0, 0, 5819, 523, 1, 0, 0, 0, 5820, 5821, 5, 2, 0, 0, 5821, 5826, 3, 510, 255, 0, 5822, 5823, 5, 6, 0, 0, 5823, 5825, 3, 510, 255, 0, 5824, 5822, 1, 0, 0, 0, 5825, 5828, 1, 0, 0, 0, 5826, 5824, 1, 0, 0, 0, 5826, 5827, 1, 0, 0, 0, 5827, 5829, 1, 0, 0, 0, 5828, 5826, 1, 0, 0, 0, 5829, 5830, 5, 3, 0, 0, 5830, 525, 1, 0, 0, 0, 5831, 5832, 5, 290, 0, 0, 5832, 5834, 3, 818, 409, 0, 5833, 5835, 3, 528, 264, 0, 5834, 5833, 1, 0, 0, 0, 5834, 5835, 1, 0, 0, 0, 5835, 5836, 1, 0, 0, 0, 5836, 5837, 5, 36, 0, 0, 5837, 5838, 3, 530, 265, 0, 5838, 527, 1, 0, 0, 0, 5839, 5840, 5, 2, 0, 0, 5840, 5845, 3, 652, 326, 0, 5841, 5842, 5, 6, 0, 0, 5842, 5844, 3, 652, 326, 0, 5843, 5841, 1, 0, 0, 0, 5844, 5847, 1, 0, 0, 0, 5845, 5843, 1, 0, 0, 0, 5845, 5846, 1, 0, 0, 0, 5846, 5848, 1, 0, 0, 0, 5847, 5845, 1, 0, 0, 0, 5848, 5849, 5, 3, 0, 0, 5849, 529, 1, 0, 0, 0, 5850, 5855, 3, 560, 280, 0, 5851, 5855, 3, 538, 269, 0, 5852, 5855, 3, 552, 276, 0, 5853, 5855, 3, 548, 274, 0, 5854, 5850, 1, 0, 0, 0, 5854, 5851, 1, 0, 0, 0, 5854, 5852, 1, 0, 0, 0, 5854, 5853, 1, 0, 0, 0, 5855, 531, 1, 0, 0, 0, 5856, 5857, 5, 202, 0, 0, 5857, 5859, 3, 818, 409, 0, 5858, 5860, 3, 534, 267, 0, 5859, 5858, 1, 0, 0, 0, 5859, 5860, 1, 0, 0, 0, 5860, 5880, 1, 0, 0, 0, 5861, 5863, 5, 46, 0, 0, 5862, 5864, 3, 122, 61, 0, 5863, 5862, 1, 0, 0, 0, 5863, 5864, 1, 0, 0, 0, 5864, 5865, 1, 0, 0, 0, 5865, 5867, 5, 92, 0, 0, 5866, 5868, 3, 294, 147, 0, 5867, 5866, 1, 0, 0, 0, 5867, 5868, 1, 0, 0, 0, 5868, 5869, 1, 0, 0, 0, 5869, 5870, 3, 188, 94, 0, 5870, 5871, 5, 36, 0, 0, 5871, 5872, 5, 202, 0, 0, 5872, 5874, 3, 818, 409, 0, 5873, 5875, 3, 534, 267, 0, 5874, 5873, 1, 0, 0, 0, 5874, 5875, 1, 0, 0, 0, 5875, 5877, 1, 0, 0, 0, 5876, 5878, 3, 190, 95, 0, 5877, 5876, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 5880, 1, 0, 0, 0, 5879, 5856, 1, 0, 0, 0, 5879, 5861, 1, 0, 0, 0, 5880, 533, 1, 0, 0, 0, 5881, 5882, 5, 2, 0, 0, 5882, 5883, 3, 730, 365, 0, 5883, 5884, 5, 3, 0, 0, 5884, 535, 1, 0, 0, 0, 5885, 5887, 5, 177, 0, 0, 5886, 5888, 5, 290, 0, 0, 5887, 5886, 1, 0, 0, 0, 5887, 5888, 1, 0, 0, 0, 5888, 5891, 1, 0, 0, 0, 5889, 5892, 3, 818, 409, 0, 5890, 5892, 5, 30, 0, 0, 5891, 5889, 1, 0, 0, 0, 5891, 5890, 1, 0, 0, 0, 5892, 537, 1, 0, 0, 0, 5893, 5895, 3, 572, 286, 0, 5894, 5893, 1, 0, 0, 0, 5894, 5895, 1, 0, 0, 0, 5895, 5896, 1, 0, 0, 0, 5896, 5897, 5, 241, 0, 0, 5897, 5898, 5, 71, 0, 0, 5898, 5901, 3, 774, 387, 0, 5899, 5900, 5, 36, 0, 0, 5900, 5902, 3, 818, 409, 0, 5901, 5899, 1, 0, 0, 0, 5901, 5902, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, 5903, 5925, 3, 540, 270, 0, 5904, 5905, 5, 80, 0, 0, 5905, 5913, 5, 464, 0, 0, 5906, 5908, 3, 360, 180, 0, 5907, 5909, 3, 638, 319, 0, 5908, 5907, 1, 0, 0, 0, 5908, 5909, 1, 0, 0, 0, 5909, 5914, 1, 0, 0, 0, 5910, 5911, 5, 80, 0, 0, 5911, 5912, 5, 45, 0, 0, 5912, 5914, 3, 818, 409, 0, 5913, 5906, 1, 0, 0, 0, 5913, 5910, 1, 0, 0, 0, 5913, 5914, 1, 0, 0, 0, 5914, 5915, 1, 0, 0, 0, 5915, 5923, 5, 57, 0, 0, 5916, 5917, 5, 369, 0, 0, 5917, 5918, 5, 333, 0, 0, 5918, 5920, 3, 554, 277, 0, 5919, 5921, 3, 638, 319, 0, 5920, 5919, 1, 0, 0, 0, 5920, 5921, 1, 0, 0, 0, 5921, 5924, 1, 0, 0, 0, 5922, 5924, 5, 270, 0, 0, 5923, 5916, 1, 0, 0, 0, 5923, 5922, 1, 0, 0, 0, 5924, 5926, 1, 0, 0, 0, 5925, 5904, 1, 0, 0, 0, 5925, 5926, 1, 0, 0, 0, 5926, 5928, 1, 0, 0, 0, 5927, 5929, 3, 546, 273, 0, 5928, 5927, 1, 0, 0, 0, 5928, 5929, 1, 0, 0, 0, 5929, 539, 1, 0, 0, 0, 5930, 5931, 5, 2, 0, 0, 5931, 5932, 3, 542, 271, 0, 5932, 5933, 5, 3, 0, 0, 5933, 5935, 1, 0, 0, 0, 5934, 5930, 1, 0, 0, 0, 5934, 5935, 1, 0, 0, 0, 5935, 5939, 1, 0, 0, 0, 5936, 5937, 5, 463, 0, 0, 5937, 5938, 7, 76, 0, 0, 5938, 5940, 5, 450, 0, 0, 5939, 5936, 1, 0, 0, 0, 5939, 5940, 1, 0, 0, 0, 5940, 5943, 1, 0, 0, 0, 5941, 5944, 3, 910, 455, 0, 5942, 5944, 3, 560, 280, 0, 5943, 5941, 1, 0, 0, 0, 5943, 5942, 1, 0, 0, 0, 5944, 541, 1, 0, 0, 0, 5945, 5950, 3, 544, 272, 0, 5946, 5947, 5, 6, 0, 0, 5947, 5949, 3, 544, 272, 0, 5948, 5946, 1, 0, 0, 0, 5949, 5952, 1, 0, 0, 0, 5950, 5948, 1, 0, 0, 0, 5950, 5951, 1, 0, 0, 0, 5951, 543, 1, 0, 0, 0, 5952, 5950, 1, 0, 0, 0, 5953, 5954, 3, 800, 400, 0, 5954, 5955, 3, 754, 377, 0, 5955, 545, 1, 0, 0, 0, 5956, 5957, 5, 87, 0, 0, 5957, 5958, 3, 756, 378, 0, 5958, 547, 1, 0, 0, 0, 5959, 5961, 3, 572, 286, 0, 5960, 5959, 1, 0, 0, 0, 5960, 5961, 1, 0, 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5963, 5, 182, 0, 0, 5963, 5964, 5, 64, 0, 0, 5964, 5967, 3, 630, 315, 0, 5965, 5966, 5, 100, 0, 0, 5966, 5968, 3, 612, 306, 0, 5967, 5965, 1, 0, 0, 0, 5967, 5968, 1, 0, 0, 0, 5968, 5970, 1, 0, 0, 0, 5969, 5971, 3, 640, 320, 0, 5970, 5969, 1, 0, 0, 0, 5970, 5971, 1, 0, 0, 0, 5971, 5973, 1, 0, 0, 0, 5972, 5974, 3, 546, 273, 0, 5973, 5972, 1, 0, 0, 0, 5973, 5974, 1, 0, 0, 0, 5974, 549, 1, 0, 0, 0, 5975, 5977, 5, 256, 0, 0, 5976, 5978, 5, 92, 0, 0, 5977, 5976, 1, 0, 0, 0, 5977, 5978, 1, 0, 0, 0, 5978, 5979, 1, 0, 0, 0, 5979, 5994, 3, 628, 314, 0, 5980, 5991, 5, 68, 0, 0, 5981, 5982, 7, 77, 0, 0, 5982, 5992, 7, 78, 0, 0, 5983, 5988, 5, 334, 0, 0, 5984, 5985, 5, 369, 0, 0, 5985, 5989, 5, 201, 0, 0, 5986, 5987, 5, 414, 0, 0, 5987, 5989, 5, 201, 0, 0, 5988, 5984, 1, 0, 0, 0, 5988, 5986, 1, 0, 0, 0, 5988, 5989, 1, 0, 0, 0, 5989, 5992, 1, 0, 0, 0, 5990, 5992, 5, 201, 0, 0, 5991, 5981, 1, 0, 0, 0, 5991, 5983, 1, 0, 0, 0, 5991, 5990, 1, 0, 0, 0, 5992, 5993, 1, 0, 0, 0, 5993, 5995, 5, 263, 0, 0, 5994, 5980, 1, 0, 0, 0, 5994, 5995, 1, 0, 0, 0, 5995, 5997, 1, 0, 0, 0, 5996, 5998, 5, 272, 0, 0, 5997, 5996, 1, 0, 0, 0, 5997, 5998, 1, 0, 0, 0, 5998, 551, 1, 0, 0, 0, 5999, 6001, 3, 572, 286, 0, 6000, 5999, 1, 0, 0, 0, 6000, 6001, 1, 0, 0, 0, 6001, 6002, 1, 0, 0, 0, 6002, 6003, 5, 369, 0, 0, 6003, 6004, 3, 630, 315, 0, 6004, 6005, 5, 333, 0, 0, 6005, 6007, 3, 554, 277, 0, 6006, 6008, 3, 610, 305, 0, 6007, 6006, 1, 0, 0, 0, 6007, 6008, 1, 0, 0, 0, 6008, 6010, 1, 0, 0, 0, 6009, 6011, 3, 640, 320, 0, 6010, 6009, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 6013, 1, 0, 0, 0, 6012, 6014, 3, 546, 273, 0, 6013, 6012, 1, 0, 0, 0, 6013, 6014, 1, 0, 0, 0, 6014, 553, 1, 0, 0, 0, 6015, 6020, 3, 556, 278, 0, 6016, 6017, 5, 6, 0, 0, 6017, 6019, 3, 556, 278, 0, 6018, 6016, 1, 0, 0, 0, 6019, 6022, 1, 0, 0, 0, 6020, 6018, 1, 0, 0, 0, 6020, 6021, 1, 0, 0, 0, 6021, 555, 1, 0, 0, 0, 6022, 6020, 1, 0, 0, 0, 6023, 6024, 3, 544, 272, 0, 6024, 6025, 5, 10, 0, 0, 6025, 6026, 3, 674, 337, 0, 6026, 6042, 1, 0, 0, 0, 6027, 6028, 5, 2, 0, 0, 6028, 6029, 3, 542, 271, 0, 6029, 6030, 5, 3, 0, 0, 6030, 6039, 5, 10, 0, 0, 6031, 6033, 5, 414, 0, 0, 6032, 6031, 1, 0, 0, 0, 6032, 6033, 1, 0, 0, 0, 6033, 6034, 1, 0, 0, 0, 6034, 6040, 3, 674, 337, 0, 6035, 6036, 5, 2, 0, 0, 6036, 6037, 3, 566, 283, 0, 6037, 6038, 5, 3, 0, 0, 6038, 6040, 1, 0, 0, 0, 6039, 6032, 1, 0, 0, 0, 6039, 6035, 1, 0, 0, 0, 6040, 6042, 1, 0, 0, 0, 6041, 6023, 1, 0, 0, 0, 6041, 6027, 1, 0, 0, 0, 6042, 557, 1, 0, 0, 0, 6043, 6044, 5, 178, 0, 0, 6044, 6053, 3, 818, 409, 0, 6045, 6047, 5, 269, 0, 0, 6046, 6045, 1, 0, 0, 0, 6046, 6047, 1, 0, 0, 0, 6047, 6048, 1, 0, 0, 0, 6048, 6052, 5, 324, 0, 0, 6049, 6052, 5, 107, 0, 0, 6050, 6052, 5, 240, 0, 0, 6051, 6046, 1, 0, 0, 0, 6051, 6049, 1, 0, 0, 0, 6051, 6050, 1, 0, 0, 0, 6052, 6055, 1, 0, 0, 0, 6053, 6051, 1, 0, 0, 0, 6053, 6054, 1, 0, 0, 0, 6054, 6056, 1, 0, 0, 0, 6055, 6053, 1, 0, 0, 0, 6056, 6059, 5, 172, 0, 0, 6057, 6058, 7, 26, 0, 0, 6058, 6060, 5, 217, 0, 0, 6059, 6057, 1, 0, 0, 0, 6059, 6060, 1, 0, 0, 0, 6060, 6061, 1, 0, 0, 0, 6061, 6062, 5, 62, 0, 0, 6062, 6063, 3, 560, 280, 0, 6063, 559, 1, 0, 0, 0, 6064, 6067, 3, 564, 282, 0, 6065, 6067, 3, 562, 281, 0, 6066, 6064, 1, 0, 0, 0, 6066, 6065, 1, 0, 0, 0, 6067, 561, 1, 0, 0, 0, 6068, 6071, 5, 2, 0, 0, 6069, 6072, 3, 564, 282, 0, 6070, 6072, 3, 562, 281, 0, 6071, 6069, 1, 0, 0, 0, 6071, 6070, 1, 0, 0, 0, 6072, 6073, 1, 0, 0, 0, 6073, 6074, 5, 3, 0, 0, 6074, 563, 1, 0, 0, 0, 6075, 6077, 3, 572, 286, 0, 6076, 6075, 1, 0, 0, 0, 6076, 6077, 1, 0, 0, 0, 6077, 6078, 1, 0, 0, 0, 6078, 6080, 3, 566, 283, 0, 6079, 6081, 3, 586, 293, 0, 6080, 6079, 1, 0, 0, 0, 6080, 6081, 1, 0, 0, 0, 6081, 6090, 1, 0, 0, 0, 6082, 6084, 3, 606, 303, 0, 6083, 6085, 3, 590, 295, 0, 6084, 6083, 1, 0, 0, 0, 6084, 6085, 1, 0, 0, 0, 6085, 6091, 1, 0, 0, 0, 6086, 6088, 3, 590, 295, 0, 6087, 6089, 3, 606, 303, 0, 6088, 6087, 1, 0, 0, 0, 6088, 6089, 1, 0, 0, 0, 6089, 6091, 1, 0, 0, 0, 6090, 6082, 1, 0, 0, 0, 6090, 6086, 1, 0, 0, 0, 6090, 6091, 1, 0, 0, 0, 6091, 565, 1, 0, 0, 0, 6092, 6095, 3, 568, 284, 0, 6093, 6095, 3, 562, 281, 0, 6094, 6092, 1, 0, 0, 0, 6094, 6093, 1, 0, 0, 0, 6095, 567, 1, 0, 0, 0, 6096, 6106, 5, 88, 0, 0, 6097, 6099, 5, 30, 0, 0, 6098, 6097, 1, 0, 0, 0, 6098, 6099, 1, 0, 0, 0, 6099, 6101, 1, 0, 0, 0, 6100, 6102, 3, 580, 290, 0, 6101, 6100, 1, 0, 0, 0, 6101, 6102, 1, 0, 0, 0, 6102, 6107, 1, 0, 0, 0, 6103, 6105, 3, 584, 292, 0, 6104, 6103, 1, 0, 0, 0, 6104, 6105, 1, 0, 0, 0, 6105, 6107, 1, 0, 0, 0, 6106, 6098, 1, 0, 0, 0, 6106, 6104, 1, 0, 0, 0, 6107, 6108, 1, 0, 0, 0, 6108, 6119, 3, 932, 466, 0, 6109, 6119, 3, 608, 304, 0, 6110, 6111, 5, 92, 0, 0, 6111, 6119, 3, 624, 312, 0, 6112, 6113, 3, 562, 281, 0, 6113, 6116, 3, 570, 285, 0, 6114, 6117, 3, 568, 284, 0, 6115, 6117, 3, 562, 281, 0, 6116, 6114, 1, 0, 0, 0, 6116, 6115, 1, 0, 0, 0, 6117, 6119, 1, 0, 0, 0, 6118, 6096, 1, 0, 0, 0, 6118, 6109, 1, 0, 0, 0, 6118, 6110, 1, 0, 0, 0, 6118, 6112, 1, 0, 0, 0, 6119, 6127, 1, 0, 0, 0, 6120, 6123, 3, 570, 285, 0, 6121, 6124, 3, 568, 284, 0, 6122, 6124, 3, 562, 281, 0, 6123, 6121, 1, 0, 0, 0, 6123, 6122, 1, 0, 0, 0, 6124, 6126, 1, 0, 0, 0, 6125, 6120, 1, 0, 0, 0, 6126, 6129, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6127, 6128, 1, 0, 0, 0, 6128, 569, 1, 0, 0, 0, 6129, 6127, 1, 0, 0, 0, 6130, 6132, 7, 79, 0, 0, 6131, 6133, 7, 80, 0, 0, 6132, 6131, 1, 0, 0, 0, 6132, 6133, 1, 0, 0, 0, 6133, 571, 1, 0, 0, 0, 6134, 6136, 5, 105, 0, 0, 6135, 6137, 5, 303, 0, 0, 6136, 6135, 1, 0, 0, 0, 6136, 6137, 1, 0, 0, 0, 6137, 6138, 1, 0, 0, 0, 6138, 6143, 3, 574, 287, 0, 6139, 6140, 5, 6, 0, 0, 6140, 6142, 3, 574, 287, 0, 6141, 6139, 1, 0, 0, 0, 6142, 6145, 1, 0, 0, 0, 6143, 6141, 1, 0, 0, 0, 6143, 6144, 1, 0, 0, 0, 6144, 573, 1, 0, 0, 0, 6145, 6143, 1, 0, 0, 0, 6146, 6148, 3, 818, 409, 0, 6147, 6149, 3, 144, 72, 0, 6148, 6147, 1, 0, 0, 0, 6148, 6149, 1, 0, 0, 0, 6149, 6150, 1, 0, 0, 0, 6150, 6155, 5, 36, 0, 0, 6151, 6153, 5, 77, 0, 0, 6152, 6151, 1, 0, 0, 0, 6152, 6153, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6156, 5, 259, 0, 0, 6155, 6152, 1, 0, 0, 0, 6155, 6156, 1, 0, 0, 0, 6156, 6157, 1, 0, 0, 0, 6157, 6158, 5, 2, 0, 0, 6158, 6159, 3, 530, 265, 0, 6159, 6161, 5, 3, 0, 0, 6160, 6162, 3, 576, 288, 0, 6161, 6160, 1, 0, 0, 0, 6161, 6162, 1, 0, 0, 0, 6162, 6164, 1, 0, 0, 0, 6163, 6165, 3, 578, 289, 0, 6164, 6163, 1, 0, 0, 0, 6164, 6165, 1, 0, 0, 0, 6165, 575, 1, 0, 0, 0, 6166, 6167, 5, 325, 0, 0, 6167, 6168, 7, 81, 0, 0, 6168, 6169, 5, 207, 0, 0, 6169, 6170, 5, 147, 0, 0, 6170, 6171, 3, 148, 74, 0, 6171, 6172, 5, 333, 0, 0, 6172, 6173, 3, 800, 400, 0, 6173, 577, 1, 0, 0, 0, 6174, 6175, 5, 173, 0, 0, 6175, 6176, 3, 148, 74, 0, 6176, 6177, 5, 333, 0, 0, 6177, 6183, 3, 800, 400, 0, 6178, 6179, 5, 94, 0, 0, 6179, 6180, 3, 818, 409, 0, 6180, 6181, 5, 53, 0, 0, 6181, 6182, 3, 818, 409, 0, 6182, 6184, 1, 0, 0, 0, 6183, 6178, 1, 0, 0, 0, 6183, 6184, 1, 0, 0, 0, 6184, 6185, 1, 0, 0, 0, 6185, 6186, 5, 100, 0, 0, 6186, 6187, 3, 800, 400, 0, 6187, 579, 1, 0, 0, 0, 6188, 6194, 5, 71, 0, 0, 6189, 6191, 5, 346, 0, 0, 6190, 6189, 1, 0, 0, 0, 6190, 6191, 1, 0, 0, 0, 6191, 6192, 1, 0, 0, 0, 6192, 6195, 3, 582, 291, 0, 6193, 6195, 3, 730, 365, 0, 6194, 6190, 1, 0, 0, 0, 6194, 6193, 1, 0, 0, 0, 6195, 581, 1, 0, 0, 0, 6196, 6198, 7, 20, 0, 0, 6197, 6196, 1, 0, 0, 0, 6197, 6198, 1, 0, 0, 0, 6198, 6199, 1, 0, 0, 0, 6199, 6201, 7, 21, 0, 0, 6200, 6202, 5, 92, 0, 0, 6201, 6200, 1, 0, 0, 0, 6201, 6202, 1, 0, 0, 0, 6202, 6203, 1, 0, 0, 0, 6203, 6212, 3, 772, 386, 0, 6204, 6206, 5, 367, 0, 0, 6205, 6204, 1, 0, 0, 0, 6205, 6206, 1, 0, 0, 0, 6206, 6208, 1, 0, 0, 0, 6207, 6209, 5, 92, 0, 0, 6208, 6207, 1, 0, 0, 0, 6208, 6209, 1, 0, 0, 0, 6209, 6210, 1, 0, 0, 0, 6210, 6212, 3, 772, 386, 0, 6211, 6197, 1, 0, 0, 0, 6211, 6205, 1, 0, 0, 0, 6212, 583, 1, 0, 0, 0, 6213, 6216, 5, 56, 0, 0, 6214, 6215, 5, 80, 0, 0, 6215, 6217, 3, 534, 267, 0, 6216, 6214, 1, 0, 0, 0, 6216, 6217, 1, 0, 0, 0, 6217, 585, 1, 0, 0, 0, 6218, 6219, 5, 83, 0, 0, 6219, 6220, 5, 147, 0, 0, 6220, 6225, 3, 588, 294, 0, 6221, 6222, 5, 6, 0, 0, 6222, 6224, 3, 588, 294, 0, 6223, 6221, 1, 0, 0, 0, 6224, 6227, 1, 0, 0, 0, 6225, 6223, 1, 0, 0, 0, 6225, 6226, 1, 0, 0, 0, 6226, 587, 1, 0, 0, 0, 6227, 6225, 1, 0, 0, 0, 6228, 6232, 3, 734, 367, 0, 6229, 6230, 5, 100, 0, 0, 6230, 6233, 3, 726, 363, 0, 6231, 6233, 7, 55, 0, 0, 6232, 6229, 1, 0, 0, 0, 6232, 6231, 1, 0, 0, 0, 6232, 6233, 1, 0, 0, 0, 6233, 6236, 1, 0, 0, 0, 6234, 6235, 5, 273, 0, 0, 6235, 6237, 7, 56, 0, 0, 6236, 6234, 1, 0, 0, 0, 6236, 6237, 1, 0, 0, 0, 6237, 589, 1, 0, 0, 0, 6238, 6240, 3, 596, 298, 0, 6239, 6241, 3, 594, 297, 0, 6240, 6239, 1, 0, 0, 0, 6240, 6241, 1, 0, 0, 0, 6241, 6250, 1, 0, 0, 0, 6242, 6245, 3, 592, 296, 0, 6243, 6245, 3, 594, 297, 0, 6244, 6242, 1, 0, 0, 0, 6244, 6243, 1, 0, 0, 0, 6245, 6247, 1, 0, 0, 0, 6246, 6248, 3, 596, 298, 0, 6247, 6246, 1, 0, 0, 0, 6247, 6248, 1, 0, 0, 0, 6248, 6250, 1, 0, 0, 0, 6249, 6238, 1, 0, 0, 0, 6249, 6244, 1, 0, 0, 0, 6250, 591, 1, 0, 0, 0, 6251, 6254, 5, 74, 0, 0, 6252, 6255, 3, 674, 337, 0, 6253, 6255, 5, 30, 0, 0, 6254, 6252, 1, 0, 0, 0, 6254, 6253, 1, 0, 0, 0, 6255, 6258, 1, 0, 0, 0, 6256, 6257, 5, 6, 0, 0, 6257, 6259, 3, 674, 337, 0, 6258, 6256, 1, 0, 0, 0, 6258, 6259, 1, 0, 0, 0, 6259, 593, 1, 0, 0, 0, 6260, 6261, 5, 61, 0, 0, 6261, 6263, 7, 82, 0, 0, 6262, 6264, 3, 598, 299, 0, 6263, 6262, 1, 0, 0, 0, 6263, 6264, 1, 0, 0, 0, 6264, 6265, 1, 0, 0, 0, 6265, 6269, 7, 83, 0, 0, 6266, 6270, 5, 81, 0, 0, 6267, 6268, 5, 105, 0, 0, 6268, 6270, 5, 467, 0, 0, 6269, 6266, 1, 0, 0, 0, 6269, 6267, 1, 0, 0, 0, 6270, 595, 1, 0, 0, 0, 6271, 6276, 5, 79, 0, 0, 6272, 6273, 3, 598, 299, 0, 6273, 6274, 7, 83, 0, 0, 6274, 6277, 1, 0, 0, 0, 6275, 6277, 3, 674, 337, 0, 6276, 6272, 1, 0, 0, 0, 6276, 6275, 1, 0, 0, 0, 6277, 597, 1, 0, 0, 0, 6278, 6279, 7, 29, 0, 0, 6279, 6282, 7, 84, 0, 0, 6280, 6282, 3, 682, 341, 0, 6281, 6278, 1, 0, 0, 0, 6281, 6280, 1, 0, 0, 0, 6282, 599, 1, 0, 0, 0, 6283, 6284, 5, 66, 0, 0, 6284, 6286, 5, 147, 0, 0, 6285, 6287, 7, 80, 0, 0, 6286, 6285, 1, 0, 0, 0, 6286, 6287, 1, 0, 0, 0, 6287, 6288, 1, 0, 0, 0, 6288, 6289, 3, 602, 301, 0, 6289, 601, 1, 0, 0, 0, 6290, 6295, 3, 604, 302, 0, 6291, 6292, 5, 6, 0, 0, 6292, 6294, 3, 604, 302, 0, 6293, 6291, 1, 0, 0, 0, 6294, 6297, 1, 0, 0, 0, 6295, 6293, 1, 0, 0, 0, 6295, 6296, 1, 0, 0, 0, 6296, 603, 1, 0, 0, 0, 6297, 6295, 1, 0, 0, 0, 6298, 6322, 3, 734, 367, 0, 6299, 6300, 5, 2, 0, 0, 6300, 6322, 5, 3, 0, 0, 6301, 6303, 7, 85, 0, 0, 6302, 6301, 1, 0, 0, 0, 6302, 6303, 1, 0, 0, 0, 6303, 6304, 1, 0, 0, 0, 6304, 6305, 5, 2, 0, 0, 6305, 6310, 3, 734, 367, 0, 6306, 6307, 5, 6, 0, 0, 6307, 6309, 3, 734, 367, 0, 6308, 6306, 1, 0, 0, 0, 6309, 6312, 1, 0, 0, 0, 6310, 6308, 1, 0, 0, 0, 6310, 6311, 1, 0, 0, 0, 6311, 6313, 1, 0, 0, 0, 6312, 6310, 1, 0, 0, 0, 6313, 6314, 5, 3, 0, 0, 6314, 6322, 1, 0, 0, 0, 6315, 6316, 5, 470, 0, 0, 6316, 6317, 5, 471, 0, 0, 6317, 6318, 5, 2, 0, 0, 6318, 6319, 3, 602, 301, 0, 6319, 6320, 5, 3, 0, 0, 6320, 6322, 1, 0, 0, 0, 6321, 6298, 1, 0, 0, 0, 6321, 6299, 1, 0, 0, 0, 6321, 6302, 1, 0, 0, 0, 6321, 6315, 1, 0, 0, 0, 6322, 605, 1, 0, 0, 0, 6323, 6333, 5, 62, 0, 0, 6324, 6325, 5, 269, 0, 0, 6325, 6327, 5, 245, 0, 0, 6326, 6324, 1, 0, 0, 0, 6326, 6327, 1, 0, 0, 0, 6327, 6328, 1, 0, 0, 0, 6328, 6334, 5, 369, 0, 0, 6329, 6331, 5, 245, 0, 0, 6330, 6329, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6332, 1, 0, 0, 0, 6332, 6334, 5, 334, 0, 0, 6333, 6326, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 6337, 1, 0, 0, 0, 6335, 6336, 5, 275, 0, 0, 6336, 6338, 3, 760, 380, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6338, 1, 0, 0, 0, 6338, 6342, 1, 0, 0, 0, 6339, 6343, 5, 272, 0, 0, 6340, 6341, 5, 465, 0, 0, 6341, 6343, 5, 466, 0, 0, 6342, 6339, 1, 0, 0, 0, 6342, 6340, 1, 0, 0, 0, 6342, 6343, 1, 0, 0, 0, 6343, 6345, 1, 0, 0, 0, 6344, 6323, 1, 0, 0, 0, 6345, 6346, 1, 0, 0, 0, 6346, 6344, 1, 0, 0, 0, 6346, 6347, 1, 0, 0, 0, 6347, 6352, 1, 0, 0, 0, 6348, 6349, 5, 62, 0, 0, 6349, 6350, 5, 300, 0, 0, 6350, 6352, 5, 81, 0, 0, 6351, 6344, 1, 0, 0, 0, 6351, 6348, 1, 0, 0, 0, 6352, 607, 1, 0, 0, 0, 6353, 6354, 5, 422, 0, 0, 6354, 6359, 3, 534, 267, 0, 6355, 6356, 5, 6, 0, 0, 6356, 6358, 3, 534, 267, 0, 6357, 6355, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 609, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6363, 5, 64, 0, 0, 6363, 6364, 3, 612, 306, 0, 6364, 611, 1, 0, 0, 0, 6365, 6370, 3, 614, 307, 0, 6366, 6367, 5, 6, 0, 0, 6367, 6369, 3, 614, 307, 0, 6368, 6366, 1, 0, 0, 0, 6369, 6372, 1, 0, 0, 0, 6370, 6368, 1, 0, 0, 0, 6370, 6371, 1, 0, 0, 0, 6371, 613, 1, 0, 0, 0, 6372, 6370, 1, 0, 0, 0, 6373, 6388, 3, 624, 312, 0, 6374, 6376, 5, 81, 0, 0, 6375, 6374, 1, 0, 0, 0, 6375, 6376, 1, 0, 0, 0, 6376, 6377, 1, 0, 0, 0, 6377, 6379, 3, 778, 389, 0, 6378, 6380, 5, 9, 0, 0, 6379, 6378, 1, 0, 0, 0, 6379, 6380, 1, 0, 0, 0, 6380, 6382, 1, 0, 0, 0, 6381, 6383, 3, 148, 74, 0, 6382, 6381, 1, 0, 0, 0, 6382, 6383, 1, 0, 0, 0, 6383, 6385, 1, 0, 0, 0, 6384, 6386, 3, 638, 319, 0, 6385, 6384, 1, 0, 0, 0, 6385, 6386, 1, 0, 0, 0, 6386, 6388, 1, 0, 0, 0, 6387, 6373, 1, 0, 0, 0, 6387, 6375, 1, 0, 0, 0, 6388, 6390, 1, 0, 0, 0, 6389, 6391, 3, 616, 308, 0, 6390, 6389, 1, 0, 0, 0, 6390, 6391, 1, 0, 0, 0, 6391, 6393, 1, 0, 0, 0, 6392, 6394, 3, 632, 316, 0, 6393, 6392, 1, 0, 0, 0, 6393, 6394, 1, 0, 0, 0, 6394, 6437, 1, 0, 0, 0, 6395, 6397, 5, 72, 0, 0, 6396, 6395, 1, 0, 0, 0, 6396, 6397, 1, 0, 0, 0, 6397, 6410, 1, 0, 0, 0, 6398, 6400, 3, 646, 323, 0, 6399, 6401, 3, 616, 308, 0, 6400, 6399, 1, 0, 0, 0, 6400, 6401, 1, 0, 0, 0, 6401, 6411, 1, 0, 0, 0, 6402, 6404, 3, 634, 317, 0, 6403, 6405, 3, 618, 309, 0, 6404, 6403, 1, 0, 0, 0, 6404, 6405, 1, 0, 0, 0, 6405, 6411, 1, 0, 0, 0, 6406, 6408, 3, 562, 281, 0, 6407, 6409, 3, 616, 308, 0, 6408, 6407, 1, 0, 0, 0, 6408, 6409, 1, 0, 0, 0, 6409, 6411, 1, 0, 0, 0, 6410, 6398, 1, 0, 0, 0, 6410, 6402, 1, 0, 0, 0, 6410, 6406, 1, 0, 0, 0, 6411, 6437, 1, 0, 0, 0, 6412, 6413, 5, 2, 0, 0, 6413, 6430, 3, 614, 307, 0, 6414, 6415, 5, 110, 0, 0, 6415, 6416, 5, 118, 0, 0, 6416, 6431, 3, 614, 307, 0, 6417, 6419, 5, 121, 0, 0, 6418, 6420, 3, 620, 310, 0, 6419, 6418, 1, 0, 0, 0, 6419, 6420, 1, 0, 0, 0, 6420, 6421, 1, 0, 0, 0, 6421, 6422, 5, 118, 0, 0, 6422, 6431, 3, 614, 307, 0, 6423, 6425, 3, 620, 310, 0, 6424, 6423, 1, 0, 0, 0, 6424, 6425, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 6427, 5, 118, 0, 0, 6427, 6428, 3, 614, 307, 0, 6428, 6429, 3, 622, 311, 0, 6429, 6431, 1, 0, 0, 0, 6430, 6414, 1, 0, 0, 0, 6430, 6417, 1, 0, 0, 0, 6430, 6424, 1, 0, 0, 0, 6430, 6431, 1, 0, 0, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6434, 5, 3, 0, 0, 6433, 6435, 3, 616, 308, 0, 6434, 6433, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6437, 1, 0, 0, 0, 6436, 6387, 1, 0, 0, 0, 6436, 6396, 1, 0, 0, 0, 6436, 6412, 1, 0, 0, 0, 6437, 6456, 1, 0, 0, 0, 6438, 6439, 5, 110, 0, 0, 6439, 6440, 5, 118, 0, 0, 6440, 6455, 3, 614, 307, 0, 6441, 6443, 5, 121, 0, 0, 6442, 6444, 3, 620, 310, 0, 6443, 6442, 1, 0, 0, 0, 6443, 6444, 1, 0, 0, 0, 6444, 6445, 1, 0, 0, 0, 6445, 6446, 5, 118, 0, 0, 6446, 6455, 3, 614, 307, 0, 6447, 6449, 3, 620, 310, 0, 6448, 6447, 1, 0, 0, 0, 6448, 6449, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 5, 118, 0, 0, 6451, 6452, 3, 614, 307, 0, 6452, 6453, 3, 622, 311, 0, 6453, 6455, 1, 0, 0, 0, 6454, 6438, 1, 0, 0, 0, 6454, 6441, 1, 0, 0, 0, 6454, 6448, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 615, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6461, 5, 36, 0, 0, 6460, 6459, 1, 0, 0, 0, 6460, 6461, 1, 0, 0, 0, 6461, 6462, 1, 0, 0, 0, 6462, 6467, 3, 818, 409, 0, 6463, 6464, 5, 2, 0, 0, 6464, 6465, 3, 784, 392, 0, 6465, 6466, 5, 3, 0, 0, 6466, 6468, 1, 0, 0, 0, 6467, 6463, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 617, 1, 0, 0, 0, 6469, 6482, 3, 616, 308, 0, 6470, 6472, 5, 36, 0, 0, 6471, 6473, 3, 818, 409, 0, 6472, 6471, 1, 0, 0, 0, 6472, 6473, 1, 0, 0, 0, 6473, 6476, 1, 0, 0, 0, 6474, 6476, 3, 818, 409, 0, 6475, 6470, 1, 0, 0, 0, 6475, 6474, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6478, 5, 2, 0, 0, 6478, 6479, 3, 642, 321, 0, 6479, 6480, 5, 3, 0, 0, 6480, 6482, 1, 0, 0, 0, 6481, 6469, 1, 0, 0, 0, 6481, 6475, 1, 0, 0, 0, 6482, 619, 1, 0, 0, 0, 6483, 6485, 7, 86, 0, 0, 6484, 6486, 5, 123, 0, 0, 6485, 6484, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 621, 1, 0, 0, 0, 6487, 6488, 5, 100, 0, 0, 6488, 6492, 3, 144, 72, 0, 6489, 6490, 5, 80, 0, 0, 6490, 6492, 3, 674, 337, 0, 6491, 6487, 1, 0, 0, 0, 6491, 6489, 1, 0, 0, 0, 6492, 623, 1, 0, 0, 0, 6493, 6509, 3, 322, 161, 0, 6494, 6500, 5, 81, 0, 0, 6495, 6501, 3, 774, 387, 0, 6496, 6497, 5, 2, 0, 0, 6497, 6498, 3, 774, 387, 0, 6498, 6499, 5, 3, 0, 0, 6499, 6501, 1, 0, 0, 0, 6500, 6495, 1, 0, 0, 0, 6500, 6496, 1, 0, 0, 0, 6501, 6509, 1, 0, 0, 0, 6502, 6503, 5, 68, 0, 0, 6503, 6506, 5, 323, 0, 0, 6504, 6507, 3, 790, 395, 0, 6505, 6507, 5, 111, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6505, 1, 0, 0, 0, 6507, 6509, 1, 0, 0, 0, 6508, 6493, 1, 0, 0, 0, 6508, 6494, 1, 0, 0, 0, 6508, 6502, 1, 0, 0, 0, 6509, 625, 1, 0, 0, 0, 6510, 6511, 5, 92, 0, 0, 6511, 6513, 3, 322, 161, 0, 6512, 6514, 3, 144, 72, 0, 6513, 6512, 1, 0, 0, 0, 6513, 6514, 1, 0, 0, 0, 6514, 6516, 1, 0, 0, 0, 6515, 6517, 3, 638, 319, 0, 6516, 6515, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6535, 1, 0, 0, 0, 6518, 6519, 5, 92, 0, 0, 6519, 6525, 5, 81, 0, 0, 6520, 6526, 3, 774, 387, 0, 6521, 6522, 5, 2, 0, 0, 6522, 6523, 3, 774, 387, 0, 6523, 6524, 5, 3, 0, 0, 6524, 6526, 1, 0, 0, 0, 6525, 6520, 1, 0, 0, 0, 6525, 6521, 1, 0, 0, 0, 6526, 6535, 1, 0, 0, 0, 6527, 6528, 5, 350, 0, 0, 6528, 6529, 5, 68, 0, 0, 6529, 6532, 5, 323, 0, 0, 6530, 6533, 3, 790, 395, 0, 6531, 6533, 5, 111, 0, 0, 6532, 6530, 1, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6535, 1, 0, 0, 0, 6534, 6510, 1, 0, 0, 0, 6534, 6518, 1, 0, 0, 0, 6534, 6527, 1, 0, 0, 0, 6535, 627, 1, 0, 0, 0, 6536, 6541, 3, 624, 312, 0, 6537, 6538, 5, 6, 0, 0, 6538, 6540, 3, 624, 312, 0, 6539, 6537, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 629, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6549, 3, 624, 312, 0, 6545, 6547, 5, 36, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 818, 409, 0, 6549, 6546, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 631, 1, 0, 0, 0, 6551, 6552, 5, 472, 0, 0, 6552, 6553, 3, 806, 403, 0, 6553, 6559, 3, 534, 267, 0, 6554, 6555, 5, 310, 0, 0, 6555, 6556, 5, 2, 0, 0, 6556, 6557, 3, 674, 337, 0, 6557, 6558, 5, 3, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6554, 1, 0, 0, 0, 6559, 6560, 1, 0, 0, 0, 6560, 633, 1, 0, 0, 0, 6561, 6576, 3, 688, 344, 0, 6562, 6563, 5, 320, 0, 0, 6563, 6564, 5, 64, 0, 0, 6564, 6565, 5, 2, 0, 0, 6565, 6570, 3, 636, 318, 0, 6566, 6567, 5, 6, 0, 0, 6567, 6569, 3, 636, 318, 0, 6568, 6566, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6573, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6573, 6574, 5, 3, 0, 0, 6574, 6576, 1, 0, 0, 0, 6575, 6561, 1, 0, 0, 0, 6575, 6562, 1, 0, 0, 0, 6576, 6579, 1, 0, 0, 0, 6577, 6578, 5, 105, 0, 0, 6578, 6580, 5, 473, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 635, 1, 0, 0, 0, 6581, 6587, 3, 688, 344, 0, 6582, 6583, 5, 36, 0, 0, 6583, 6584, 5, 2, 0, 0, 6584, 6585, 3, 642, 321, 0, 6585, 6586, 5, 3, 0, 0, 6586, 6588, 1, 0, 0, 0, 6587, 6582, 1, 0, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 637, 1, 0, 0, 0, 6589, 6590, 5, 103, 0, 0, 6590, 6591, 3, 734, 367, 0, 6591, 639, 1, 0, 0, 0, 6592, 6597, 5, 103, 0, 0, 6593, 6594, 5, 434, 0, 0, 6594, 6595, 5, 275, 0, 0, 6595, 6598, 3, 818, 409, 0, 6596, 6598, 3, 674, 337, 0, 6597, 6593, 1, 0, 0, 0, 6597, 6596, 1, 0, 0, 0, 6598, 641, 1, 0, 0, 0, 6599, 6604, 3, 644, 322, 0, 6600, 6601, 5, 6, 0, 0, 6601, 6603, 3, 644, 322, 0, 6602, 6600, 1, 0, 0, 0, 6603, 6606, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 643, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6607, 6608, 3, 818, 409, 0, 6608, 6610, 3, 652, 326, 0, 6609, 6611, 3, 98, 49, 0, 6610, 6609, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 645, 1, 0, 0, 0, 6612, 6613, 5, 474, 0, 0, 6613, 6627, 5, 2, 0, 0, 6614, 6615, 5, 476, 0, 0, 6615, 6616, 5, 2, 0, 0, 6616, 6621, 3, 650, 325, 0, 6617, 6618, 5, 6, 0, 0, 6618, 6620, 3, 650, 325, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6623, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6624, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6624, 6625, 5, 3, 0, 0, 6625, 6626, 5, 6, 0, 0, 6626, 6628, 1, 0, 0, 0, 6627, 6614, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6630, 3, 682, 341, 0, 6630, 6631, 3, 698, 349, 0, 6631, 6632, 5, 475, 0, 0, 6632, 6637, 3, 648, 324, 0, 6633, 6634, 5, 6, 0, 0, 6634, 6636, 3, 648, 324, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6639, 1, 0, 0, 0, 6637, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6640, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6640, 6641, 5, 3, 0, 0, 6641, 647, 1, 0, 0, 0, 6642, 6661, 3, 818, 409, 0, 6643, 6657, 3, 652, 326, 0, 6644, 6647, 5, 53, 0, 0, 6645, 6647, 3, 826, 413, 0, 6646, 6644, 1, 0, 0, 0, 6646, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6654, 3, 674, 337, 0, 6649, 6651, 5, 77, 0, 0, 6650, 6649, 1, 0, 0, 0, 6650, 6651, 1, 0, 0, 0, 6651, 6652, 1, 0, 0, 0, 6652, 6654, 5, 78, 0, 0, 6653, 6646, 1, 0, 0, 0, 6653, 6650, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6653, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6662, 1, 0, 0, 0, 6659, 6660, 5, 62, 0, 0, 6660, 6662, 5, 473, 0, 0, 6661, 6643, 1, 0, 0, 0, 6661, 6659, 1, 0, 0, 0, 6662, 649, 1, 0, 0, 0, 6663, 6664, 3, 682, 341, 0, 6664, 6665, 5, 36, 0, 0, 6665, 6666, 3, 824, 412, 0, 6666, 6670, 1, 0, 0, 0, 6667, 6668, 5, 53, 0, 0, 6668, 6670, 3, 682, 341, 0, 6669, 6663, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6670, 651, 1, 0, 0, 0, 6671, 6673, 5, 415, 0, 0, 6672, 6671, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6691, 3, 654, 327, 0, 6675, 6677, 5, 4, 0, 0, 6676, 6678, 5, 571, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6681, 5, 5, 0, 0, 6680, 6675, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6692, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6689, 5, 35, 0, 0, 6686, 6687, 5, 4, 0, 0, 6687, 6688, 5, 571, 0, 0, 6688, 6690, 5, 5, 0, 0, 6689, 6686, 1, 0, 0, 0, 6689, 6690, 1, 0, 0, 0, 6690, 6692, 1, 0, 0, 0, 6691, 6682, 1, 0, 0, 0, 6691, 6685, 1, 0, 0, 0, 6692, 6698, 1, 0, 0, 0, 6693, 6694, 3, 780, 390, 0, 6694, 6695, 5, 27, 0, 0, 6695, 6696, 7, 87, 0, 0, 6696, 6698, 1, 0, 0, 0, 6697, 6672, 1, 0, 0, 0, 6697, 6693, 1, 0, 0, 0, 6698, 653, 1, 0, 0, 0, 6699, 6701, 3, 820, 410, 0, 6700, 6702, 3, 318, 159, 0, 6701, 6700, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6704, 1, 0, 0, 0, 6703, 6705, 3, 534, 267, 0, 6704, 6703, 1, 0, 0, 0, 6704, 6705, 1, 0, 0, 0, 6705, 6715, 1, 0, 0, 0, 6706, 6715, 3, 656, 328, 0, 6707, 6712, 5, 403, 0, 0, 6708, 6710, 3, 668, 334, 0, 6709, 6708, 1, 0, 0, 0, 6709, 6710, 1, 0, 0, 0, 6710, 6713, 1, 0, 0, 0, 6711, 6713, 3, 660, 330, 0, 6712, 6709, 1, 0, 0, 0, 6712, 6711, 1, 0, 0, 0, 6713, 6715, 1, 0, 0, 0, 6714, 6699, 1, 0, 0, 0, 6714, 6706, 1, 0, 0, 0, 6714, 6707, 1, 0, 0, 0, 6715, 655, 1, 0, 0, 0, 6716, 6721, 3, 658, 329, 0, 6717, 6721, 3, 662, 331, 0, 6718, 6721, 3, 664, 332, 0, 6719, 6721, 3, 666, 333, 0, 6720, 6716, 1, 0, 0, 0, 6720, 6717, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6719, 1, 0, 0, 0, 6721, 657, 1, 0, 0, 0, 6722, 6739, 5, 401, 0, 0, 6723, 6739, 5, 402, 0, 0, 6724, 6739, 5, 416, 0, 0, 6725, 6739, 5, 388, 0, 0, 6726, 6739, 5, 413, 0, 0, 6727, 6729, 5, 398, 0, 0, 6728, 6730, 3, 660, 330, 0, 6729, 6728, 1, 0, 0, 0, 6729, 6730, 1, 0, 0, 0, 6730, 6739, 1, 0, 0, 0, 6731, 6732, 5, 190, 0, 0, 6732, 6739, 5, 412, 0, 0, 6733, 6735, 7, 88, 0, 0, 6734, 6736, 3, 534, 267, 0, 6735, 6734, 1, 0, 0, 0, 6735, 6736, 1, 0, 0, 0, 6736, 6739, 1, 0, 0, 0, 6737, 6739, 5, 390, 0, 0, 6738, 6722, 1, 0, 0, 0, 6738, 6723, 1, 0, 0, 0, 6738, 6724, 1, 0, 0, 0, 6738, 6725, 1, 0, 0, 0, 6738, 6726, 1, 0, 0, 0, 6738, 6727, 1, 0, 0, 0, 6738, 6731, 1, 0, 0, 0, 6738, 6733, 1, 0, 0, 0, 6738, 6737, 1, 0, 0, 0, 6739, 659, 1, 0, 0, 0, 6740, 6741, 5, 2, 0, 0, 6741, 6742, 5, 571, 0, 0, 6742, 6743, 5, 3, 0, 0, 6743, 661, 1, 0, 0, 0, 6744, 6746, 5, 389, 0, 0, 6745, 6747, 5, 374, 0, 0, 6746, 6745, 1, 0, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6749, 1, 0, 0, 0, 6748, 6750, 3, 534, 267, 0, 6749, 6748, 1, 0, 0, 0, 6749, 6750, 1, 0, 0, 0, 6750, 663, 1, 0, 0, 0, 6751, 6753, 7, 89, 0, 0, 6752, 6754, 5, 374, 0, 0, 6753, 6752, 1, 0, 0, 0, 6753, 6754, 1, 0, 0, 0, 6754, 6762, 1, 0, 0, 0, 6755, 6762, 5, 423, 0, 0, 6756, 6757, 5, 405, 0, 0, 6757, 6759, 7, 90, 0, 0, 6758, 6760, 5, 374, 0, 0, 6759, 6758, 1, 0, 0, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6762, 1, 0, 0, 0, 6761, 6751, 1, 0, 0, 0, 6761, 6755, 1, 0, 0, 0, 6761, 6756, 1, 0, 0, 0, 6762, 6764, 1, 0, 0, 0, 6763, 6765, 3, 660, 330, 0, 6764, 6763, 1, 0, 0, 0, 6764, 6765, 1, 0, 0, 0, 6765, 665, 1, 0, 0, 0, 6766, 6768, 7, 91, 0, 0, 6767, 6769, 3, 660, 330, 0, 6768, 6767, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6773, 1, 0, 0, 0, 6770, 6771, 7, 26, 0, 0, 6771, 6772, 5, 418, 0, 0, 6772, 6774, 5, 386, 0, 0, 6773, 6770, 1, 0, 0, 0, 6773, 6774, 1, 0, 0, 0, 6774, 667, 1, 0, 0, 0, 6775, 6805, 5, 264, 0, 0, 6776, 6805, 3, 670, 335, 0, 6777, 6780, 5, 384, 0, 0, 6778, 6779, 5, 94, 0, 0, 6779, 6781, 5, 264, 0, 0, 6780, 6778, 1, 0, 0, 0, 6780, 6781, 1, 0, 0, 0, 6781, 6805, 1, 0, 0, 0, 6782, 6789, 5, 176, 0, 0, 6783, 6787, 5, 94, 0, 0, 6784, 6788, 5, 218, 0, 0, 6785, 6788, 5, 261, 0, 0, 6786, 6788, 3, 670, 335, 0, 6787, 6784, 1, 0, 0, 0, 6787, 6785, 1, 0, 0, 0, 6787, 6786, 1, 0, 0, 0, 6788, 6790, 1, 0, 0, 0, 6789, 6783, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6805, 1, 0, 0, 0, 6791, 6797, 5, 218, 0, 0, 6792, 6795, 5, 94, 0, 0, 6793, 6796, 5, 261, 0, 0, 6794, 6796, 3, 670, 335, 0, 6795, 6793, 1, 0, 0, 0, 6795, 6794, 1, 0, 0, 0, 6796, 6798, 1, 0, 0, 0, 6797, 6792, 1, 0, 0, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6805, 1, 0, 0, 0, 6799, 6802, 5, 261, 0, 0, 6800, 6801, 5, 94, 0, 0, 6801, 6803, 3, 670, 335, 0, 6802, 6800, 1, 0, 0, 0, 6802, 6803, 1, 0, 0, 0, 6803, 6805, 1, 0, 0, 0, 6804, 6775, 1, 0, 0, 0, 6804, 6776, 1, 0, 0, 0, 6804, 6777, 1, 0, 0, 0, 6804, 6782, 1, 0, 0, 0, 6804, 6791, 1, 0, 0, 0, 6804, 6799, 1, 0, 0, 0, 6805, 669, 1, 0, 0, 0, 6806, 6808, 5, 326, 0, 0, 6807, 6809, 3, 660, 330, 0, 6808, 6807, 1, 0, 0, 0, 6808, 6809, 1, 0, 0, 0, 6809, 671, 1, 0, 0, 0, 6810, 6811, 7, 92, 0, 0, 6811, 673, 1, 0, 0, 0, 6812, 6813, 3, 676, 338, 0, 6813, 675, 1, 0, 0, 0, 6814, 6815, 6, 338, -1, 0, 6815, 6817, 3, 680, 340, 0, 6816, 6818, 3, 678, 339, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6822, 1, 0, 0, 0, 6819, 6820, 5, 77, 0, 0, 6820, 6822, 3, 676, 338, 3, 6821, 6814, 1, 0, 0, 0, 6821, 6819, 1, 0, 0, 0, 6822, 6831, 1, 0, 0, 0, 6823, 6824, 10, 2, 0, 0, 6824, 6825, 5, 33, 0, 0, 6825, 6830, 3, 676, 338, 3, 6826, 6827, 10, 1, 0, 0, 6827, 6828, 5, 82, 0, 0, 6828, 6830, 3, 676, 338, 2, 6829, 6823, 1, 0, 0, 0, 6829, 6826, 1, 0, 0, 0, 6830, 6833, 1, 0, 0, 0, 6831, 6829, 1, 0, 0, 0, 6831, 6832, 1, 0, 0, 0, 6832, 677, 1, 0, 0, 0, 6833, 6831, 1, 0, 0, 0, 6834, 6835, 3, 672, 336, 0, 6835, 6836, 3, 680, 340, 0, 6836, 6906, 1, 0, 0, 0, 6837, 6838, 3, 672, 336, 0, 6838, 6839, 3, 728, 364, 0, 6839, 6845, 3, 718, 359, 0, 6840, 6846, 3, 562, 281, 0, 6841, 6842, 5, 2, 0, 0, 6842, 6843, 3, 674, 337, 0, 6843, 6844, 5, 3, 0, 0, 6844, 6846, 1, 0, 0, 0, 6845, 6840, 1, 0, 0, 0, 6845, 6841, 1, 0, 0, 0, 6846, 6906, 1, 0, 0, 0, 6847, 6849, 5, 77, 0, 0, 6848, 6847, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6850, 1, 0, 0, 0, 6850, 6851, 5, 387, 0, 0, 6851, 6852, 3, 680, 340, 0, 6852, 6853, 5, 33, 0, 0, 6853, 6854, 3, 680, 340, 0, 6854, 6906, 1, 0, 0, 0, 6855, 6857, 5, 77, 0, 0, 6856, 6855, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 1, 0, 0, 0, 6858, 6859, 5, 68, 0, 0, 6859, 6860, 5, 2, 0, 0, 6860, 6865, 3, 674, 337, 0, 6861, 6862, 5, 6, 0, 0, 6862, 6864, 3, 674, 337, 0, 6863, 6861, 1, 0, 0, 0, 6864, 6867, 1, 0, 0, 0, 6865, 6863, 1, 0, 0, 0, 6865, 6866, 1, 0, 0, 0, 6866, 6868, 1, 0, 0, 0, 6867, 6865, 1, 0, 0, 0, 6868, 6869, 5, 3, 0, 0, 6869, 6906, 1, 0, 0, 0, 6870, 6872, 5, 77, 0, 0, 6871, 6870, 1, 0, 0, 0, 6871, 6872, 1, 0, 0, 0, 6872, 6873, 1, 0, 0, 0, 6873, 6874, 5, 68, 0, 0, 6874, 6906, 3, 562, 281, 0, 6875, 6877, 5, 77, 0, 0, 6876, 6875, 1, 0, 0, 0, 6876, 6877, 1, 0, 0, 0, 6877, 6886, 1, 0, 0, 0, 6878, 6887, 5, 120, 0, 0, 6879, 6887, 5, 114, 0, 0, 6880, 6881, 5, 127, 0, 0, 6881, 6887, 5, 94, 0, 0, 6882, 6884, 5, 387, 0, 0, 6883, 6885, 5, 91, 0, 0, 6884, 6883, 1, 0, 0, 0, 6884, 6885, 1, 0, 0, 0, 6885, 6887, 1, 0, 0, 0, 6886, 6878, 1, 0, 0, 0, 6886, 6879, 1, 0, 0, 0, 6886, 6880, 1, 0, 0, 0, 6886, 6882, 1, 0, 0, 0, 6887, 6888, 1, 0, 0, 0, 6888, 6891, 3, 680, 340, 0, 6889, 6890, 5, 197, 0, 0, 6890, 6892, 3, 680, 340, 0, 6891, 6889, 1, 0, 0, 0, 6891, 6892, 1, 0, 0, 0, 6892, 6906, 1, 0, 0, 0, 6893, 6895, 5, 116, 0, 0, 6894, 6896, 5, 77, 0, 0, 6895, 6894, 1, 0, 0, 0, 6895, 6896, 1, 0, 0, 0, 6896, 6897, 1, 0, 0, 0, 6897, 6906, 5, 78, 0, 0, 6898, 6900, 5, 116, 0, 0, 6899, 6901, 5, 77, 0, 0, 6900, 6899, 1, 0, 0, 0, 6900, 6901, 1, 0, 0, 0, 6901, 6902, 1, 0, 0, 0, 6902, 6903, 5, 56, 0, 0, 6903, 6904, 5, 64, 0, 0, 6904, 6906, 3, 680, 340, 0, 6905, 6834, 1, 0, 0, 0, 6905, 6837, 1, 0, 0, 0, 6905, 6848, 1, 0, 0, 0, 6905, 6856, 1, 0, 0, 0, 6905, 6871, 1, 0, 0, 0, 6905, 6876, 1, 0, 0, 0, 6905, 6893, 1, 0, 0, 0, 6905, 6898, 1, 0, 0, 0, 6906, 679, 1, 0, 0, 0, 6907, 6908, 6, 340, -1, 0, 6908, 6912, 3, 682, 341, 0, 6909, 6910, 7, 29, 0, 0, 6910, 6912, 3, 680, 340, 4, 6911, 6907, 1, 0, 0, 0, 6911, 6909, 1, 0, 0, 0, 6912, 6929, 1, 0, 0, 0, 6913, 6914, 10, 3, 0, 0, 6914, 6915, 7, 93, 0, 0, 6915, 6928, 3, 680, 340, 4, 6916, 6917, 10, 2, 0, 0, 6917, 6918, 7, 29, 0, 0, 6918, 6928, 3, 680, 340, 3, 6919, 6920, 10, 1, 0, 0, 6920, 6921, 5, 15, 0, 0, 6921, 6928, 3, 680, 340, 2, 6922, 6923, 10, 5, 0, 0, 6923, 6924, 5, 142, 0, 0, 6924, 6925, 5, 418, 0, 0, 6925, 6926, 5, 386, 0, 0, 6926, 6928, 3, 674, 337, 0, 6927, 6913, 1, 0, 0, 0, 6927, 6916, 1, 0, 0, 0, 6927, 6919, 1, 0, 0, 0, 6927, 6922, 1, 0, 0, 0, 6928, 6931, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6929, 6930, 1, 0, 0, 0, 6930, 681, 1, 0, 0, 0, 6931, 6929, 1, 0, 0, 0, 6932, 6933, 6, 341, -1, 0, 6933, 6934, 7, 94, 0, 0, 6934, 7021, 3, 562, 281, 0, 6935, 6938, 5, 35, 0, 0, 6936, 6939, 3, 562, 281, 0, 6937, 6939, 3, 740, 370, 0, 6938, 6936, 1, 0, 0, 0, 6938, 6937, 1, 0, 0, 0, 6939, 7021, 1, 0, 0, 0, 6940, 6941, 5, 28, 0, 0, 6941, 7021, 3, 754, 377, 0, 6942, 6943, 5, 470, 0, 0, 6943, 7021, 3, 534, 267, 0, 6944, 7021, 5, 571, 0, 0, 6945, 7021, 5, 573, 0, 0, 6946, 7021, 5, 563, 0, 0, 6947, 7021, 5, 567, 0, 0, 6948, 6958, 3, 806, 403, 0, 6949, 6959, 3, 808, 404, 0, 6950, 6951, 5, 2, 0, 0, 6951, 6953, 3, 736, 368, 0, 6952, 6954, 3, 586, 293, 0, 6953, 6952, 1, 0, 0, 0, 6953, 6954, 1, 0, 0, 0, 6954, 6955, 1, 0, 0, 0, 6955, 6956, 5, 3, 0, 0, 6956, 6957, 3, 808, 404, 0, 6957, 6959, 1, 0, 0, 0, 6958, 6949, 1, 0, 0, 0, 6958, 6950, 1, 0, 0, 0, 6959, 7021, 1, 0, 0, 0, 6960, 6962, 3, 656, 328, 0, 6961, 6960, 1, 0, 0, 0, 6961, 6962, 1, 0, 0, 0, 6962, 6963, 1, 0, 0, 0, 6963, 7021, 3, 808, 404, 0, 6964, 6972, 5, 403, 0, 0, 6965, 6967, 3, 808, 404, 0, 6966, 6968, 3, 668, 334, 0, 6967, 6966, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 6973, 1, 0, 0, 0, 6969, 6970, 3, 660, 330, 0, 6970, 6971, 3, 808, 404, 0, 6971, 6973, 1, 0, 0, 0, 6972, 6965, 1, 0, 0, 0, 6972, 6969, 1, 0, 0, 0, 6973, 7021, 1, 0, 0, 0, 6974, 7021, 5, 96, 0, 0, 6975, 7021, 5, 60, 0, 0, 6976, 7021, 5, 78, 0, 0, 6977, 7021, 5, 574, 0, 0, 6978, 6979, 5, 2, 0, 0, 6979, 6980, 3, 674, 337, 0, 6980, 6981, 5, 3, 0, 0, 6981, 6982, 3, 754, 377, 0, 6982, 7021, 1, 0, 0, 0, 6983, 6985, 5, 40, 0, 0, 6984, 6986, 3, 674, 337, 0, 6985, 6984, 1, 0, 0, 0, 6985, 6986, 1, 0, 0, 0, 6986, 6988, 1, 0, 0, 0, 6987, 6989, 3, 748, 374, 0, 6988, 6987, 1, 0, 0, 0, 6989, 6990, 1, 0, 0, 0, 6990, 6988, 1, 0, 0, 0, 6990, 6991, 1, 0, 0, 0, 6991, 6994, 1, 0, 0, 0, 6992, 6993, 5, 58, 0, 0, 6993, 6995, 3, 674, 337, 0, 6994, 6992, 1, 0, 0, 0, 6994, 6995, 1, 0, 0, 0, 6995, 6996, 1, 0, 0, 0, 6996, 6997, 5, 454, 0, 0, 6997, 7021, 1, 0, 0, 0, 6998, 7021, 3, 686, 343, 0, 6999, 7001, 3, 562, 281, 0, 7000, 7002, 3, 752, 376, 0, 7001, 7000, 1, 0, 0, 0, 7001, 7002, 1, 0, 0, 0, 7002, 7021, 1, 0, 0, 0, 7003, 7021, 3, 716, 358, 0, 7004, 7005, 5, 2, 0, 0, 7005, 7006, 3, 674, 337, 0, 7006, 7007, 5, 6, 0, 0, 7007, 7008, 3, 730, 365, 0, 7008, 7009, 5, 3, 0, 0, 7009, 7021, 1, 0, 0, 0, 7010, 7011, 3, 714, 357, 0, 7011, 7012, 5, 125, 0, 0, 7012, 7013, 3, 714, 357, 0, 7013, 7021, 1, 0, 0, 0, 7014, 7021, 3, 780, 390, 0, 7015, 7016, 7, 29, 0, 0, 7016, 7021, 3, 682, 341, 5, 7017, 7018, 3, 724, 362, 0, 7018, 7019, 3, 682, 341, 2, 7019, 7021, 1, 0, 0, 0, 7020, 6932, 1, 0, 0, 0, 7020, 6935, 1, 0, 0, 0, 7020, 6940, 1, 0, 0, 0, 7020, 6942, 1, 0, 0, 0, 7020, 6944, 1, 0, 0, 0, 7020, 6945, 1, 0, 0, 0, 7020, 6946, 1, 0, 0, 0, 7020, 6947, 1, 0, 0, 0, 7020, 6948, 1, 0, 0, 0, 7020, 6961, 1, 0, 0, 0, 7020, 6964, 1, 0, 0, 0, 7020, 6974, 1, 0, 0, 0, 7020, 6975, 1, 0, 0, 0, 7020, 6976, 1, 0, 0, 0, 7020, 6977, 1, 0, 0, 0, 7020, 6978, 1, 0, 0, 0, 7020, 6983, 1, 0, 0, 0, 7020, 6998, 1, 0, 0, 0, 7020, 6999, 1, 0, 0, 0, 7020, 7003, 1, 0, 0, 0, 7020, 7004, 1, 0, 0, 0, 7020, 7010, 1, 0, 0, 0, 7020, 7014, 1, 0, 0, 0, 7020, 7015, 1, 0, 0, 0, 7020, 7017, 1, 0, 0, 0, 7021, 7049, 1, 0, 0, 0, 7022, 7023, 10, 3, 0, 0, 7023, 7024, 3, 722, 361, 0, 7024, 7025, 3, 682, 341, 4, 7025, 7048, 1, 0, 0, 0, 7026, 7027, 10, 6, 0, 0, 7027, 7028, 5, 26, 0, 0, 7028, 7048, 3, 652, 326, 0, 7029, 7030, 10, 4, 0, 0, 7030, 7032, 3, 724, 362, 0, 7031, 7033, 3, 682, 341, 0, 7032, 7031, 1, 0, 0, 0, 7032, 7033, 1, 0, 0, 0, 7033, 7048, 1, 0, 0, 0, 7034, 7035, 10, 1, 0, 0, 7035, 7037, 5, 116, 0, 0, 7036, 7038, 5, 77, 0, 0, 7037, 7036, 1, 0, 0, 0, 7037, 7038, 1, 0, 0, 0, 7038, 7045, 1, 0, 0, 0, 7039, 7040, 5, 56, 0, 0, 7040, 7041, 5, 64, 0, 0, 7041, 7046, 3, 682, 341, 0, 7042, 7043, 5, 275, 0, 0, 7043, 7046, 3, 528, 264, 0, 7044, 7046, 5, 188, 0, 0, 7045, 7039, 1, 0, 0, 0, 7045, 7042, 1, 0, 0, 0, 7045, 7044, 1, 0, 0, 0, 7046, 7048, 1, 0, 0, 0, 7047, 7022, 1, 0, 0, 0, 7047, 7026, 1, 0, 0, 0, 7047, 7029, 1, 0, 0, 0, 7047, 7034, 1, 0, 0, 0, 7048, 7051, 1, 0, 0, 0, 7049, 7047, 1, 0, 0, 0, 7049, 7050, 1, 0, 0, 0, 7050, 683, 1, 0, 0, 0, 7051, 7049, 1, 0, 0, 0, 7052, 7078, 3, 806, 403, 0, 7053, 7075, 5, 2, 0, 0, 7054, 7058, 3, 736, 368, 0, 7055, 7056, 5, 6, 0, 0, 7056, 7057, 5, 101, 0, 0, 7057, 7059, 3, 738, 369, 0, 7058, 7055, 1, 0, 0, 0, 7058, 7059, 1, 0, 0, 0, 7059, 7061, 1, 0, 0, 0, 7060, 7062, 3, 586, 293, 0, 7061, 7060, 1, 0, 0, 0, 7061, 7062, 1, 0, 0, 0, 7062, 7076, 1, 0, 0, 0, 7063, 7064, 5, 101, 0, 0, 7064, 7066, 3, 738, 369, 0, 7065, 7067, 3, 586, 293, 0, 7066, 7065, 1, 0, 0, 0, 7066, 7067, 1, 0, 0, 0, 7067, 7076, 1, 0, 0, 0, 7068, 7069, 7, 80, 0, 0, 7069, 7071, 3, 736, 368, 0, 7070, 7072, 3, 586, 293, 0, 7071, 7070, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7076, 1, 0, 0, 0, 7073, 7076, 5, 9, 0, 0, 7074, 7076, 1, 0, 0, 0, 7075, 7054, 1, 0, 0, 0, 7075, 7063, 1, 0, 0, 0, 7075, 7068, 1, 0, 0, 0, 7075, 7073, 1, 0, 0, 0, 7075, 7074, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7079, 5, 3, 0, 0, 7078, 7053, 1, 0, 0, 0, 7078, 7079, 1, 0, 0, 0, 7079, 685, 1, 0, 0, 0, 7080, 7087, 3, 684, 342, 0, 7081, 7082, 5, 479, 0, 0, 7082, 7083, 5, 66, 0, 0, 7083, 7084, 5, 2, 0, 0, 7084, 7085, 3, 586, 293, 0, 7085, 7086, 5, 3, 0, 0, 7086, 7088, 1, 0, 0, 0, 7087, 7081, 1, 0, 0, 0, 7087, 7088, 1, 0, 0, 0, 7088, 7095, 1, 0, 0, 0, 7089, 7090, 5, 480, 0, 0, 7090, 7091, 5, 2, 0, 0, 7091, 7092, 5, 103, 0, 0, 7092, 7093, 3, 674, 337, 0, 7093, 7094, 5, 3, 0, 0, 7094, 7096, 1, 0, 0, 0, 7095, 7089, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7102, 1, 0, 0, 0, 7097, 7100, 5, 124, 0, 0, 7098, 7101, 3, 708, 354, 0, 7099, 7101, 3, 818, 409, 0, 7100, 7098, 1, 0, 0, 0, 7100, 7099, 1, 0, 0, 0, 7101, 7103, 1, 0, 0, 0, 7102, 7097, 1, 0, 0, 0, 7102, 7103, 1, 0, 0, 0, 7103, 7106, 1, 0, 0, 0, 7104, 7106, 3, 690, 345, 0, 7105, 7080, 1, 0, 0, 0, 7105, 7104, 1, 0, 0, 0, 7106, 687, 1, 0, 0, 0, 7107, 7110, 3, 684, 342, 0, 7108, 7110, 3, 690, 345, 0, 7109, 7107, 1, 0, 0, 0, 7109, 7108, 1, 0, 0, 0, 7110, 689, 1, 0, 0, 0, 7111, 7112, 5, 108, 0, 0, 7112, 7113, 5, 62, 0, 0, 7113, 7114, 5, 2, 0, 0, 7114, 7115, 3, 674, 337, 0, 7115, 7116, 5, 3, 0, 0, 7116, 7286, 1, 0, 0, 0, 7117, 7286, 5, 48, 0, 0, 7118, 7120, 7, 95, 0, 0, 7119, 7121, 3, 660, 330, 0, 7120, 7119, 1, 0, 0, 0, 7120, 7121, 1, 0, 0, 0, 7121, 7286, 1, 0, 0, 0, 7122, 7286, 5, 49, 0, 0, 7123, 7286, 5, 52, 0, 0, 7124, 7286, 5, 89, 0, 0, 7125, 7286, 5, 99, 0, 0, 7126, 7286, 5, 47, 0, 0, 7127, 7286, 5, 111, 0, 0, 7128, 7129, 7, 96, 0, 0, 7129, 7130, 5, 2, 0, 0, 7130, 7131, 3, 674, 337, 0, 7131, 7132, 5, 36, 0, 0, 7132, 7133, 3, 652, 326, 0, 7133, 7134, 5, 3, 0, 0, 7134, 7286, 1, 0, 0, 0, 7135, 7136, 5, 397, 0, 0, 7136, 7141, 5, 2, 0, 0, 7137, 7138, 3, 742, 371, 0, 7138, 7139, 5, 64, 0, 0, 7139, 7140, 3, 674, 337, 0, 7140, 7142, 1, 0, 0, 0, 7141, 7137, 1, 0, 0, 0, 7141, 7142, 1, 0, 0, 0, 7142, 7143, 1, 0, 0, 0, 7143, 7286, 5, 3, 0, 0, 7144, 7145, 5, 489, 0, 0, 7145, 7146, 5, 2, 0, 0, 7146, 7149, 3, 674, 337, 0, 7147, 7148, 5, 6, 0, 0, 7148, 7150, 3, 744, 372, 0, 7149, 7147, 1, 0, 0, 0, 7149, 7150, 1, 0, 0, 0, 7150, 7151, 1, 0, 0, 0, 7151, 7152, 5, 3, 0, 0, 7152, 7286, 1, 0, 0, 0, 7153, 7154, 5, 410, 0, 0, 7154, 7155, 5, 2, 0, 0, 7155, 7156, 3, 674, 337, 0, 7156, 7157, 5, 84, 0, 0, 7157, 7158, 3, 674, 337, 0, 7158, 7159, 5, 64, 0, 0, 7159, 7162, 3, 674, 337, 0, 7160, 7161, 5, 62, 0, 0, 7161, 7163, 3, 674, 337, 0, 7162, 7160, 1, 0, 0, 0, 7162, 7163, 1, 0, 0, 0, 7163, 7164, 1, 0, 0, 0, 7164, 7165, 5, 3, 0, 0, 7165, 7286, 1, 0, 0, 0, 7166, 7167, 5, 411, 0, 0, 7167, 7172, 5, 2, 0, 0, 7168, 7169, 3, 682, 341, 0, 7169, 7170, 5, 68, 0, 0, 7170, 7171, 3, 682, 341, 0, 7171, 7173, 1, 0, 0, 0, 7172, 7168, 1, 0, 0, 0, 7172, 7173, 1, 0, 0, 0, 7173, 7174, 1, 0, 0, 0, 7174, 7286, 5, 3, 0, 0, 7175, 7176, 5, 417, 0, 0, 7176, 7178, 5, 2, 0, 0, 7177, 7179, 3, 746, 373, 0, 7178, 7177, 1, 0, 0, 0, 7178, 7179, 1, 0, 0, 0, 7179, 7180, 1, 0, 0, 0, 7180, 7286, 5, 3, 0, 0, 7181, 7182, 5, 421, 0, 0, 7182, 7184, 5, 2, 0, 0, 7183, 7185, 7, 97, 0, 0, 7184, 7183, 1, 0, 0, 0, 7184, 7185, 1, 0, 0, 0, 7185, 7190, 1, 0, 0, 0, 7186, 7188, 3, 674, 337, 0, 7187, 7186, 1, 0, 0, 0, 7187, 7188, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7191, 5, 64, 0, 0, 7190, 7187, 1, 0, 0, 0, 7190, 7191, 1, 0, 0, 0, 7191, 7192, 1, 0, 0, 0, 7192, 7193, 3, 730, 365, 0, 7193, 7194, 1, 0, 0, 0, 7194, 7195, 5, 3, 0, 0, 7195, 7286, 1, 0, 0, 0, 7196, 7197, 5, 408, 0, 0, 7197, 7198, 5, 2, 0, 0, 7198, 7199, 3, 674, 337, 0, 7199, 7200, 5, 6, 0, 0, 7200, 7201, 3, 674, 337, 0, 7201, 7202, 5, 3, 0, 0, 7202, 7286, 1, 0, 0, 0, 7203, 7204, 7, 98, 0, 0, 7204, 7286, 3, 534, 267, 0, 7205, 7206, 5, 426, 0, 0, 7206, 7207, 5, 2, 0, 0, 7207, 7208, 5, 266, 0, 0, 7208, 7218, 3, 824, 412, 0, 7209, 7216, 5, 6, 0, 0, 7210, 7211, 5, 424, 0, 0, 7211, 7212, 5, 2, 0, 0, 7212, 7213, 3, 692, 346, 0, 7213, 7214, 5, 3, 0, 0, 7214, 7217, 1, 0, 0, 0, 7215, 7217, 3, 730, 365, 0, 7216, 7210, 1, 0, 0, 0, 7216, 7215, 1, 0, 0, 0, 7217, 7219, 1, 0, 0, 0, 7218, 7209, 1, 0, 0, 0, 7218, 7219, 1, 0, 0, 0, 7219, 7220, 1, 0, 0, 0, 7220, 7221, 5, 3, 0, 0, 7221, 7286, 1, 0, 0, 0, 7222, 7223, 5, 427, 0, 0, 7223, 7224, 5, 2, 0, 0, 7224, 7225, 3, 682, 341, 0, 7225, 7226, 3, 698, 349, 0, 7226, 7227, 5, 3, 0, 0, 7227, 7286, 1, 0, 0, 0, 7228, 7229, 5, 428, 0, 0, 7229, 7230, 5, 2, 0, 0, 7230, 7231, 3, 692, 346, 0, 7231, 7232, 5, 3, 0, 0, 7232, 7286, 1, 0, 0, 0, 7233, 7234, 5, 429, 0, 0, 7234, 7235, 5, 2, 0, 0, 7235, 7236, 3, 696, 348, 0, 7236, 7239, 3, 674, 337, 0, 7237, 7238, 7, 99, 0, 0, 7238, 7240, 5, 378, 0, 0, 7239, 7237, 1, 0, 0, 0, 7239, 7240, 1, 0, 0, 0, 7240, 7241, 1, 0, 0, 0, 7241, 7242, 5, 3, 0, 0, 7242, 7286, 1, 0, 0, 0, 7243, 7244, 5, 430, 0, 0, 7244, 7245, 5, 2, 0, 0, 7245, 7246, 5, 266, 0, 0, 7246, 7249, 3, 824, 412, 0, 7247, 7248, 5, 6, 0, 0, 7248, 7250, 3, 674, 337, 0, 7249, 7247, 1, 0, 0, 0, 7249, 7250, 1, 0, 0, 0, 7250, 7251, 1, 0, 0, 0, 7251, 7252, 5, 3, 0, 0, 7252, 7286, 1, 0, 0, 0, 7253, 7254, 5, 431, 0, 0, 7254, 7255, 5, 2, 0, 0, 7255, 7256, 5, 383, 0, 0, 7256, 7257, 3, 674, 337, 0, 7257, 7258, 5, 6, 0, 0, 7258, 7262, 5, 375, 0, 0, 7259, 7260, 5, 269, 0, 0, 7260, 7263, 5, 450, 0, 0, 7261, 7263, 3, 674, 337, 0, 7262, 7259, 1, 0, 0, 0, 7262, 7261, 1, 0, 0, 0, 7263, 7273, 1, 0, 0, 0, 7264, 7265, 5, 6, 0, 0, 7265, 7271, 5, 339, 0, 0, 7266, 7268, 5, 269, 0, 0, 7267, 7266, 1, 0, 0, 0, 7267, 7268, 1, 0, 0, 0, 7268, 7269, 1, 0, 0, 0, 7269, 7272, 5, 450, 0, 0, 7270, 7272, 5, 385, 0, 0, 7271, 7267, 1, 0, 0, 0, 7271, 7270, 1, 0, 0, 0, 7272, 7274, 1, 0, 0, 0, 7273, 7264, 1, 0, 0, 0, 7273, 7274, 1, 0, 0, 0, 7274, 7275, 1, 0, 0, 0, 7275, 7276, 5, 3, 0, 0, 7276, 7286, 1, 0, 0, 0, 7277, 7278, 5, 432, 0, 0, 7278, 7279, 5, 2, 0, 0, 7279, 7280, 3, 696, 348, 0, 7280, 7281, 3, 674, 337, 0, 7281, 7282, 5, 36, 0, 0, 7282, 7283, 3, 654, 327, 0, 7283, 7284, 5, 3, 0, 0, 7284, 7286, 1, 0, 0, 0, 7285, 7111, 1, 0, 0, 0, 7285, 7117, 1, 0, 0, 0, 7285, 7118, 1, 0, 0, 0, 7285, 7122, 1, 0, 0, 0, 7285, 7123, 1, 0, 0, 0, 7285, 7124, 1, 0, 0, 0, 7285, 7125, 1, 0, 0, 0, 7285, 7126, 1, 0, 0, 0, 7285, 7127, 1, 0, 0, 0, 7285, 7128, 1, 0, 0, 0, 7285, 7135, 1, 0, 0, 0, 7285, 7144, 1, 0, 0, 0, 7285, 7153, 1, 0, 0, 0, 7285, 7166, 1, 0, 0, 0, 7285, 7175, 1, 0, 0, 0, 7285, 7181, 1, 0, 0, 0, 7285, 7196, 1, 0, 0, 0, 7285, 7203, 1, 0, 0, 0, 7285, 7205, 1, 0, 0, 0, 7285, 7222, 1, 0, 0, 0, 7285, 7228, 1, 0, 0, 0, 7285, 7233, 1, 0, 0, 0, 7285, 7243, 1, 0, 0, 0, 7285, 7253, 1, 0, 0, 0, 7285, 7277, 1, 0, 0, 0, 7286, 691, 1, 0, 0, 0, 7287, 7292, 3, 694, 347, 0, 7288, 7289, 5, 6, 0, 0, 7289, 7291, 3, 694, 347, 0, 7290, 7288, 1, 0, 0, 0, 7291, 7294, 1, 0, 0, 0, 7292, 7290, 1, 0, 0, 0, 7292, 7293, 1, 0, 0, 0, 7293, 693, 1, 0, 0, 0, 7294, 7292, 1, 0, 0, 0, 7295, 7298, 3, 674, 337, 0, 7296, 7297, 5, 36, 0, 0, 7297, 7299, 3, 824, 412, 0, 7298, 7296, 1, 0, 0, 0, 7298, 7299, 1, 0, 0, 0, 7299, 695, 1, 0, 0, 0, 7300, 7301, 7, 100, 0, 0, 7301, 697, 1, 0, 0, 0, 7302, 7304, 5, 286, 0, 0, 7303, 7305, 3, 700, 350, 0, 7304, 7303, 1, 0, 0, 0, 7304, 7305, 1, 0, 0, 0, 7305, 7306, 1, 0, 0, 0, 7306, 7308, 3, 682, 341, 0, 7307, 7309, 3, 700, 350, 0, 7308, 7307, 1, 0, 0, 0, 7308, 7309, 1, 0, 0, 0, 7309, 699, 1, 0, 0, 0, 7310, 7311, 5, 147, 0, 0, 7311, 7312, 7, 101, 0, 0, 7312, 701, 1, 0, 0, 0, 7313, 7314, 5, 104, 0, 0, 7314, 7319, 3, 704, 352, 0, 7315, 7316, 5, 6, 0, 0, 7316, 7318, 3, 704, 352, 0, 7317, 7315, 1, 0, 0, 0, 7318, 7321, 1, 0, 0, 0, 7319, 7317, 1, 0, 0, 0, 7319, 7320, 1, 0, 0, 0, 7320, 703, 1, 0, 0, 0, 7321, 7319, 1, 0, 0, 0, 7322, 7323, 3, 818, 409, 0, 7323, 7324, 5, 36, 0, 0, 7324, 7325, 3, 708, 354, 0, 7325, 705, 1, 0, 0, 0, 7326, 7329, 5, 124, 0, 0, 7327, 7330, 3, 708, 354, 0, 7328, 7330, 3, 818, 409, 0, 7329, 7327, 1, 0, 0, 0, 7329, 7328, 1, 0, 0, 0, 7330, 707, 1, 0, 0, 0, 7331, 7333, 5, 2, 0, 0, 7332, 7334, 3, 818, 409, 0, 7333, 7332, 1, 0, 0, 0, 7333, 7334, 1, 0, 0, 0, 7334, 7338, 1, 0, 0, 0, 7335, 7336, 5, 285, 0, 0, 7336, 7337, 5, 147, 0, 0, 7337, 7339, 3, 730, 365, 0, 7338, 7335, 1, 0, 0, 0, 7338, 7339, 1, 0, 0, 0, 7339, 7341, 1, 0, 0, 0, 7340, 7342, 3, 586, 293, 0, 7341, 7340, 1, 0, 0, 0, 7341, 7342, 1, 0, 0, 0, 7342, 7344, 1, 0, 0, 0, 7343, 7345, 3, 710, 355, 0, 7344, 7343, 1, 0, 0, 0, 7344, 7345, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 7347, 5, 3, 0, 0, 7347, 709, 1, 0, 0, 0, 7348, 7353, 7, 102, 0, 0, 7349, 7350, 5, 387, 0, 0, 7350, 7351, 3, 712, 356, 0, 7351, 7352, 5, 33, 0, 0, 7352, 7354, 1, 0, 0, 0, 7353, 7349, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 7355, 1, 0, 0, 0, 7355, 7356, 3, 712, 356, 0, 7356, 7366, 1, 0, 0, 0, 7357, 7364, 5, 199, 0, 0, 7358, 7359, 5, 434, 0, 0, 7359, 7365, 5, 414, 0, 0, 7360, 7365, 5, 66, 0, 0, 7361, 7365, 5, 467, 0, 0, 7362, 7363, 5, 269, 0, 0, 7363, 7365, 5, 482, 0, 0, 7364, 7358, 1, 0, 0, 0, 7364, 7360, 1, 0, 0, 0, 7364, 7361, 1, 0, 0, 0, 7364, 7362, 1, 0, 0, 0, 7365, 7367, 1, 0, 0, 0, 7366, 7357, 1, 0, 0, 0, 7366, 7367, 1, 0, 0, 0, 7367, 711, 1, 0, 0, 0, 7368, 7371, 5, 362, 0, 0, 7369, 7371, 3, 674, 337, 0, 7370, 7368, 1, 0, 0, 0, 7370, 7369, 1, 0, 0, 0, 7371, 7372, 1, 0, 0, 0, 7372, 7376, 7, 103, 0, 0, 7373, 7374, 5, 434, 0, 0, 7374, 7376, 5, 414, 0, 0, 7375, 7370, 1, 0, 0, 0, 7375, 7373, 1, 0, 0, 0, 7376, 713, 1, 0, 0, 0, 7377, 7385, 3, 716, 358, 0, 7378, 7379, 5, 2, 0, 0, 7379, 7380, 3, 730, 365, 0, 7380, 7381, 5, 6, 0, 0, 7381, 7382, 3, 674, 337, 0, 7382, 7383, 5, 3, 0, 0, 7383, 7385, 1, 0, 0, 0, 7384, 7377, 1, 0, 0, 0, 7384, 7378, 1, 0, 0, 0, 7385, 715, 1, 0, 0, 0, 7386, 7387, 5, 414, 0, 0, 7387, 7389, 5, 2, 0, 0, 7388, 7390, 3, 730, 365, 0, 7389, 7388, 1, 0, 0, 0, 7389, 7390, 1, 0, 0, 0, 7390, 7391, 1, 0, 0, 0, 7391, 7392, 5, 3, 0, 0, 7392, 717, 1, 0, 0, 0, 7393, 7394, 7, 104, 0, 0, 7394, 719, 1, 0, 0, 0, 7395, 7398, 5, 29, 0, 0, 7396, 7398, 3, 722, 361, 0, 7397, 7395, 1, 0, 0, 0, 7397, 7396, 1, 0, 0, 0, 7398, 721, 1, 0, 0, 0, 7399, 7400, 7, 105, 0, 0, 7400, 723, 1, 0, 0, 0, 7401, 7408, 5, 29, 0, 0, 7402, 7403, 5, 278, 0, 0, 7403, 7404, 5, 2, 0, 0, 7404, 7405, 3, 414, 207, 0, 7405, 7406, 5, 3, 0, 0, 7406, 7408, 1, 0, 0, 0, 7407, 7401, 1, 0, 0, 0, 7407, 7402, 1, 0, 0, 0, 7408, 725, 1, 0, 0, 0, 7409, 7416, 3, 720, 360, 0, 7410, 7411, 5, 278, 0, 0, 7411, 7412, 5, 2, 0, 0, 7412, 7413, 3, 414, 207, 0, 7413, 7414, 5, 3, 0, 0, 7414, 7416, 1, 0, 0, 0, 7415, 7409, 1, 0, 0, 0, 7415, 7410, 1, 0, 0, 0, 7416, 727, 1, 0, 0, 0, 7417, 7423, 3, 726, 363, 0, 7418, 7420, 5, 77, 0, 0, 7419, 7418, 1, 0, 0, 0, 7419, 7420, 1, 0, 0, 0, 7420, 7421, 1, 0, 0, 0, 7421, 7423, 7, 106, 0, 0, 7422, 7417, 1, 0, 0, 0, 7422, 7419, 1, 0, 0, 0, 7423, 729, 1, 0, 0, 0, 7424, 7429, 3, 674, 337, 0, 7425, 7426, 5, 6, 0, 0, 7426, 7428, 3, 674, 337, 0, 7427, 7425, 1, 0, 0, 0, 7428, 7431, 1, 0, 0, 0, 7429, 7427, 1, 0, 0, 0, 7429, 7430, 1, 0, 0, 0, 7430, 731, 1, 0, 0, 0, 7431, 7429, 1, 0, 0, 0, 7432, 7433, 5, 2, 0, 0, 7433, 7434, 3, 674, 337, 0, 7434, 7435, 5, 3, 0, 0, 7435, 7438, 1, 0, 0, 0, 7436, 7438, 3, 800, 400, 0, 7437, 7432, 1, 0, 0, 0, 7437, 7436, 1, 0, 0, 0, 7438, 733, 1, 0, 0, 0, 7439, 7442, 3, 674, 337, 0, 7440, 7442, 3, 800, 400, 0, 7441, 7439, 1, 0, 0, 0, 7441, 7440, 1, 0, 0, 0, 7442, 735, 1, 0, 0, 0, 7443, 7448, 3, 738, 369, 0, 7444, 7445, 5, 6, 0, 0, 7445, 7447, 3, 738, 369, 0, 7446, 7444, 1, 0, 0, 0, 7447, 7450, 1, 0, 0, 0, 7448, 7446, 1, 0, 0, 0, 7448, 7449, 1, 0, 0, 0, 7449, 737, 1, 0, 0, 0, 7450, 7448, 1, 0, 0, 0, 7451, 7457, 3, 674, 337, 0, 7452, 7453, 3, 820, 410, 0, 7453, 7454, 7, 107, 0, 0, 7454, 7455, 3, 674, 337, 0, 7455, 7457, 1, 0, 0, 0, 7456, 7451, 1, 0, 0, 0, 7456, 7452, 1, 0, 0, 0, 7457, 739, 1, 0, 0, 0, 7458, 7468, 5, 4, 0, 0, 7459, 7469, 3, 730, 365, 0, 7460, 7465, 3, 740, 370, 0, 7461, 7462, 5, 6, 0, 0, 7462, 7464, 3, 740, 370, 0, 7463, 7461, 1, 0, 0, 0, 7464, 7467, 1, 0, 0, 0, 7465, 7463, 1, 0, 0, 0, 7465, 7466, 1, 0, 0, 0, 7466, 7469, 1, 0, 0, 0, 7467, 7465, 1, 0, 0, 0, 7468, 7459, 1, 0, 0, 0, 7468, 7460, 1, 0, 0, 0, 7468, 7469, 1, 0, 0, 0, 7469, 7470, 1, 0, 0, 0, 7470, 7471, 5, 5, 0, 0, 7471, 741, 1, 0, 0, 0, 7472, 7481, 3, 826, 413, 0, 7473, 7481, 5, 384, 0, 0, 7474, 7481, 5, 264, 0, 0, 7475, 7481, 5, 176, 0, 0, 7476, 7481, 5, 218, 0, 0, 7477, 7481, 5, 261, 0, 0, 7478, 7481, 5, 326, 0, 0, 7479, 7481, 3, 808, 404, 0, 7480, 7472, 1, 0, 0, 0, 7480, 7473, 1, 0, 0, 0, 7480, 7474, 1, 0, 0, 0, 7480, 7475, 1, 0, 0, 0, 7480, 7476, 1, 0, 0, 0, 7480, 7477, 1, 0, 0, 0, 7480, 7478, 1, 0, 0, 0, 7480, 7479, 1, 0, 0, 0, 7481, 743, 1, 0, 0, 0, 7482, 7483, 7, 108, 0, 0, 7483, 745, 1, 0, 0, 0, 7484, 7485, 3, 674, 337, 0, 7485, 7486, 5, 64, 0, 0, 7486, 7489, 3, 674, 337, 0, 7487, 7488, 5, 62, 0, 0, 7488, 7490, 3, 674, 337, 0, 7489, 7487, 1, 0, 0, 0, 7489, 7490, 1, 0, 0, 0, 7490, 7506, 1, 0, 0, 0, 7491, 7492, 3, 674, 337, 0, 7492, 7493, 5, 62, 0, 0, 7493, 7496, 3, 674, 337, 0, 7494, 7495, 5, 64, 0, 0, 7495, 7497, 3, 674, 337, 0, 7496, 7494, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7506, 1, 0, 0, 0, 7498, 7499, 3, 674, 337, 0, 7499, 7500, 5, 127, 0, 0, 7500, 7501, 3, 674, 337, 0, 7501, 7502, 5, 197, 0, 0, 7502, 7503, 3, 674, 337, 0, 7503, 7506, 1, 0, 0, 0, 7504, 7506, 3, 730, 365, 0, 7505, 7484, 1, 0, 0, 0, 7505, 7491, 1, 0, 0, 0, 7505, 7498, 1, 0, 0, 0, 7505, 7504, 1, 0, 0, 0, 7506, 747, 1, 0, 0, 0, 7507, 7508, 5, 102, 0, 0, 7508, 7509, 3, 674, 337, 0, 7509, 7510, 5, 93, 0, 0, 7510, 7511, 3, 674, 337, 0, 7511, 749, 1, 0, 0, 0, 7512, 7515, 5, 11, 0, 0, 7513, 7516, 3, 824, 412, 0, 7514, 7516, 5, 9, 0, 0, 7515, 7513, 1, 0, 0, 0, 7515, 7514, 1, 0, 0, 0, 7516, 7530, 1, 0, 0, 0, 7517, 7526, 5, 4, 0, 0, 7518, 7527, 3, 674, 337, 0, 7519, 7521, 3, 674, 337, 0, 7520, 7519, 1, 0, 0, 0, 7520, 7521, 1, 0, 0, 0, 7521, 7522, 1, 0, 0, 0, 7522, 7524, 5, 8, 0, 0, 7523, 7525, 3, 674, 337, 0, 7524, 7523, 1, 0, 0, 0, 7524, 7525, 1, 0, 0, 0, 7525, 7527, 1, 0, 0, 0, 7526, 7518, 1, 0, 0, 0, 7526, 7520, 1, 0, 0, 0, 7527, 7528, 1, 0, 0, 0, 7528, 7530, 5, 5, 0, 0, 7529, 7512, 1, 0, 0, 0, 7529, 7517, 1, 0, 0, 0, 7530, 751, 1, 0, 0, 0, 7531, 7533, 3, 750, 375, 0, 7532, 7531, 1, 0, 0, 0, 7533, 7534, 1, 0, 0, 0, 7534, 7532, 1, 0, 0, 0, 7534, 7535, 1, 0, 0, 0, 7535, 753, 1, 0, 0, 0, 7536, 7538, 3, 750, 375, 0, 7537, 7536, 1, 0, 0, 0, 7538, 7541, 1, 0, 0, 0, 7539, 7537, 1, 0, 0, 0, 7539, 7540, 1, 0, 0, 0, 7540, 755, 1, 0, 0, 0, 7541, 7539, 1, 0, 0, 0, 7542, 7547, 3, 758, 379, 0, 7543, 7544, 5, 6, 0, 0, 7544, 7546, 3, 758, 379, 0, 7545, 7543, 1, 0, 0, 0, 7546, 7549, 1, 0, 0, 0, 7547, 7545, 1, 0, 0, 0, 7547, 7548, 1, 0, 0, 0, 7548, 757, 1, 0, 0, 0, 7549, 7547, 1, 0, 0, 0, 7550, 7555, 3, 734, 367, 0, 7551, 7552, 5, 36, 0, 0, 7552, 7556, 3, 824, 412, 0, 7553, 7556, 3, 826, 413, 0, 7554, 7556, 1, 0, 0, 0, 7555, 7551, 1, 0, 0, 0, 7555, 7553, 1, 0, 0, 0, 7555, 7554, 1, 0, 0, 0, 7556, 7559, 1, 0, 0, 0, 7557, 7559, 5, 9, 0, 0, 7558, 7550, 1, 0, 0, 0, 7558, 7557, 1, 0, 0, 0, 7559, 759, 1, 0, 0, 0, 7560, 7565, 3, 780, 390, 0, 7561, 7562, 5, 6, 0, 0, 7562, 7564, 3, 780, 390, 0, 7563, 7561, 1, 0, 0, 0, 7564, 7567, 1, 0, 0, 0, 7565, 7563, 1, 0, 0, 0, 7565, 7566, 1, 0, 0, 0, 7566, 761, 1, 0, 0, 0, 7567, 7565, 1, 0, 0, 0, 7568, 7573, 3, 774, 387, 0, 7569, 7570, 5, 6, 0, 0, 7570, 7572, 3, 774, 387, 0, 7571, 7569, 1, 0, 0, 0, 7572, 7575, 1, 0, 0, 0, 7573, 7571, 1, 0, 0, 0, 7573, 7574, 1, 0, 0, 0, 7574, 763, 1, 0, 0, 0, 7575, 7573, 1, 0, 0, 0, 7576, 7581, 3, 790, 395, 0, 7577, 7578, 5, 6, 0, 0, 7578, 7580, 3, 790, 395, 0, 7579, 7577, 1, 0, 0, 0, 7580, 7583, 1, 0, 0, 0, 7581, 7579, 1, 0, 0, 0, 7581, 7582, 1, 0, 0, 0, 7582, 765, 1, 0, 0, 0, 7583, 7581, 1, 0, 0, 0, 7584, 7589, 3, 788, 394, 0, 7585, 7586, 5, 6, 0, 0, 7586, 7588, 3, 788, 394, 0, 7587, 7585, 1, 0, 0, 0, 7588, 7591, 1, 0, 0, 0, 7589, 7587, 1, 0, 0, 0, 7589, 7590, 1, 0, 0, 0, 7590, 767, 1, 0, 0, 0, 7591, 7589, 1, 0, 0, 0, 7592, 7593, 3, 780, 390, 0, 7593, 769, 1, 0, 0, 0, 7594, 7595, 3, 780, 390, 0, 7595, 771, 1, 0, 0, 0, 7596, 7597, 3, 780, 390, 0, 7597, 773, 1, 0, 0, 0, 7598, 7599, 3, 780, 390, 0, 7599, 775, 1, 0, 0, 0, 7600, 7601, 3, 780, 390, 0, 7601, 777, 1, 0, 0, 0, 7602, 7603, 3, 316, 158, 0, 7603, 779, 1, 0, 0, 0, 7604, 7606, 3, 818, 409, 0, 7605, 7607, 3, 752, 376, 0, 7606, 7605, 1, 0, 0, 0, 7606, 7607, 1, 0, 0, 0, 7607, 781, 1, 0, 0, 0, 7608, 7613, 3, 770, 385, 0, 7609, 7610, 5, 6, 0, 0, 7610, 7612, 3, 770, 385, 0, 7611, 7609, 1, 0, 0, 0, 7612, 7615, 1, 0, 0, 0, 7613, 7611, 1, 0, 0, 0, 7613, 7614, 1, 0, 0, 0, 7614, 783, 1, 0, 0, 0, 7615, 7613, 1, 0, 0, 0, 7616, 7621, 3, 818, 409, 0, 7617, 7618, 5, 6, 0, 0, 7618, 7620, 3, 818, 409, 0, 7619, 7617, 1, 0, 0, 0, 7620, 7623, 1, 0, 0, 0, 7621, 7619, 1, 0, 0, 0, 7621, 7622, 1, 0, 0, 0, 7622, 785, 1, 0, 0, 0, 7623, 7621, 1, 0, 0, 0, 7624, 7625, 3, 316, 158, 0, 7625, 787, 1, 0, 0, 0, 7626, 7627, 3, 316, 158, 0, 7627, 789, 1, 0, 0, 0, 7628, 7629, 3, 316, 158, 0, 7629, 791, 1, 0, 0, 0, 7630, 7631, 3, 818, 409, 0, 7631, 793, 1, 0, 0, 0, 7632, 7633, 3, 818, 409, 0, 7633, 795, 1, 0, 0, 0, 7634, 7639, 3, 820, 410, 0, 7635, 7636, 3, 818, 409, 0, 7636, 7637, 3, 752, 376, 0, 7637, 7639, 1, 0, 0, 0, 7638, 7634, 1, 0, 0, 0, 7638, 7635, 1, 0, 0, 0, 7639, 797, 1, 0, 0, 0, 7640, 7645, 3, 820, 410, 0, 7641, 7642, 3, 818, 409, 0, 7642, 7643, 3, 752, 376, 0, 7643, 7645, 1, 0, 0, 0, 7644, 7640, 1, 0, 0, 0, 7644, 7641, 1, 0, 0, 0, 7645, 799, 1, 0, 0, 0, 7646, 7647, 3, 818, 409, 0, 7647, 7648, 3, 754, 377, 0, 7648, 7651, 1, 0, 0, 0, 7649, 7651, 4, 400, 10, 0, 7650, 7646, 1, 0, 0, 0, 7650, 7649, 1, 0, 0, 0, 7651, 801, 1, 0, 0, 0, 7652, 7653, 3, 818, 409, 0, 7653, 803, 1, 0, 0, 0, 7654, 7659, 3, 820, 410, 0, 7655, 7656, 3, 818, 409, 0, 7656, 7657, 3, 752, 376, 0, 7657, 7659, 1, 0, 0, 0, 7658, 7654, 1, 0, 0, 0, 7658, 7655, 1, 0, 0, 0, 7659, 805, 1, 0, 0, 0, 7660, 7665, 3, 820, 410, 0, 7661, 7662, 3, 818, 409, 0, 7662, 7663, 3, 752, 376, 0, 7663, 7665, 1, 0, 0, 0, 7664, 7660, 1, 0, 0, 0, 7664, 7661, 1, 0, 0, 0, 7665, 807, 1, 0, 0, 0, 7666, 7669, 3, 810, 405, 0, 7667, 7668, 5, 487, 0, 0, 7668, 7670, 3, 810, 405, 0, 7669, 7667, 1, 0, 0, 0, 7669, 7670, 1, 0, 0, 0, 7670, 809, 1, 0, 0, 0, 7671, 7683, 5, 558, 0, 0, 7672, 7683, 5, 560, 0, 0, 7673, 7677, 5, 562, 0, 0, 7674, 7676, 5, 588, 0, 0, 7675, 7674, 1, 0, 0, 0, 7676, 7679, 1, 0, 0, 0, 7677, 7675, 1, 0, 0, 0, 7677, 7678, 1, 0, 0, 0, 7678, 7680, 1, 0, 0, 0, 7679, 7677, 1, 0, 0, 0, 7680, 7683, 5, 589, 0, 0, 7681, 7683, 5, 584, 0, 0, 7682, 7671, 1, 0, 0, 0, 7682, 7672, 1, 0, 0, 0, 7682, 7673, 1, 0, 0, 0, 7682, 7681, 1, 0, 0, 0, 7683, 811, 1, 0, 0, 0, 7684, 7686, 7, 29, 0, 0, 7685, 7684, 1, 0, 0, 0, 7685, 7686, 1, 0, 0, 0, 7686, 7687, 1, 0, 0, 0, 7687, 7688, 5, 571, 0, 0, 7688, 813, 1, 0, 0, 0, 7689, 7695, 3, 822, 411, 0, 7690, 7695, 5, 52, 0, 0, 7691, 7695, 5, 49, 0, 0, 7692, 7695, 5, 89, 0, 0, 7693, 7695, 5, 524, 0, 0, 7694, 7689, 1, 0, 0, 0, 7694, 7690, 1, 0, 0, 0, 7694, 7691, 1, 0, 0, 0, 7694, 7692, 1, 0, 0, 0, 7694, 7693, 1, 0, 0, 0, 7695, 815, 1, 0, 0, 0, 7696, 7701, 3, 814, 407, 0, 7697, 7698, 5, 6, 0, 0, 7698, 7700, 3, 814, 407, 0, 7699, 7697, 1, 0, 0, 0, 7700, 7703, 1, 0, 0, 0, 7701, 7699, 1, 0, 0, 0, 7701, 7702, 1, 0, 0, 0, 7702, 817, 1, 0, 0, 0, 7703, 7701, 1, 0, 0, 0, 7704, 7709, 3, 826, 413, 0, 7705, 7709, 3, 828, 414, 0, 7706, 7709, 3, 830, 415, 0, 7707, 7709, 3, 930, 465, 0, 7708, 7704, 1, 0, 0, 0, 7708, 7705, 1, 0, 0, 0, 7708, 7706, 1, 0, 0, 0, 7708, 7707, 1, 0, 0, 0, 7709, 819, 1, 0, 0, 0, 7710, 7715, 3, 826, 413, 0, 7711, 7715, 3, 828, 414, 0, 7712, 7715, 3, 930, 465, 0, 7713, 7715, 3, 832, 416, 0, 7714, 7710, 1, 0, 0, 0, 7714, 7711, 1, 0, 0, 0, 7714, 7712, 1, 0, 0, 0, 7714, 7713, 1, 0, 0, 0, 7715, 821, 1, 0, 0, 0, 7716, 7721, 3, 826, 413, 0, 7717, 7721, 3, 828, 414, 0, 7718, 7721, 3, 830, 415, 0, 7719, 7721, 3, 832, 416, 0, 7720, 7716, 1, 0, 0, 0, 7720, 7717, 1, 0, 0, 0, 7720, 7718, 1, 0, 0, 0, 7720, 7719, 1, 0, 0, 0, 7721, 823, 1, 0, 0, 0, 7722, 7726, 3, 822, 411, 0, 7723, 7726, 3, 930, 465, 0, 7724, 7726, 3, 834, 417, 0, 7725, 7722, 1, 0, 0, 0, 7725, 7723, 1, 0, 0, 0, 7725, 7724, 1, 0, 0, 0, 7726, 825, 1, 0, 0, 0, 7727, 7730, 5, 549, 0, 0, 7728, 7729, 5, 487, 0, 0, 7729, 7731, 3, 810, 405, 0, 7730, 7728, 1, 0, 0, 0, 7730, 7731, 1, 0, 0, 0, 7731, 7739, 1, 0, 0, 0, 7732, 7739, 3, 808, 404, 0, 7733, 7739, 5, 550, 0, 0, 7734, 7739, 5, 554, 0, 0, 7735, 7739, 5, 574, 0, 0, 7736, 7739, 5, 575, 0, 0, 7737, 7739, 3, 930, 465, 0, 7738, 7727, 1, 0, 0, 0, 7738, 7732, 1, 0, 0, 0, 7738, 7733, 1, 0, 0, 0, 7738, 7734, 1, 0, 0, 0, 7738, 7735, 1, 0, 0, 0, 7738, 7736, 1, 0, 0, 0, 7738, 7737, 1, 0, 0, 0, 7739, 827, 1, 0, 0, 0, 7740, 7741, 7, 109, 0, 0, 7741, 829, 1, 0, 0, 0, 7742, 7794, 5, 387, 0, 0, 7743, 7794, 5, 388, 0, 0, 7744, 7794, 3, 662, 331, 0, 7745, 7794, 5, 390, 0, 0, 7746, 7794, 5, 391, 0, 0, 7747, 7794, 3, 664, 332, 0, 7748, 7794, 5, 393, 0, 0, 7749, 7794, 5, 394, 0, 0, 7750, 7794, 5, 395, 0, 0, 7751, 7794, 5, 396, 0, 0, 7752, 7794, 5, 397, 0, 0, 7753, 7794, 5, 398, 0, 0, 7754, 7794, 5, 399, 0, 0, 7755, 7794, 5, 470, 0, 0, 7756, 7794, 5, 400, 0, 0, 7757, 7794, 5, 401, 0, 0, 7758, 7794, 5, 402, 0, 0, 7759, 7794, 5, 403, 0, 0, 7760, 7794, 5, 404, 0, 0, 7761, 7794, 5, 405, 0, 0, 7762, 7794, 5, 406, 0, 0, 7763, 7794, 5, 407, 0, 0, 7764, 7794, 5, 489, 0, 0, 7765, 7794, 5, 408, 0, 0, 7766, 7794, 3, 658, 329, 0, 7767, 7794, 5, 453, 0, 0, 7768, 7794, 5, 410, 0, 0, 7769, 7794, 5, 411, 0, 0, 7770, 7794, 5, 412, 0, 0, 7771, 7794, 5, 413, 0, 0, 7772, 7794, 5, 414, 0, 0, 7773, 7794, 5, 415, 0, 0, 7774, 7794, 5, 416, 0, 0, 7775, 7794, 5, 417, 0, 0, 7776, 7794, 5, 418, 0, 0, 7777, 7794, 5, 419, 0, 0, 7778, 7794, 5, 420, 0, 0, 7779, 7794, 5, 421, 0, 0, 7780, 7794, 5, 422, 0, 0, 7781, 7794, 5, 423, 0, 0, 7782, 7794, 5, 424, 0, 0, 7783, 7794, 5, 425, 0, 0, 7784, 7794, 5, 426, 0, 0, 7785, 7794, 5, 427, 0, 0, 7786, 7794, 5, 428, 0, 0, 7787, 7794, 5, 476, 0, 0, 7788, 7794, 5, 429, 0, 0, 7789, 7794, 5, 430, 0, 0, 7790, 7794, 5, 431, 0, 0, 7791, 7794, 5, 432, 0, 0, 7792, 7794, 5, 474, 0, 0, 7793, 7742, 1, 0, 0, 0, 7793, 7743, 1, 0, 0, 0, 7793, 7744, 1, 0, 0, 0, 7793, 7745, 1, 0, 0, 0, 7793, 7746, 1, 0, 0, 0, 7793, 7747, 1, 0, 0, 0, 7793, 7748, 1, 0, 0, 0, 7793, 7749, 1, 0, 0, 0, 7793, 7750, 1, 0, 0, 0, 7793, 7751, 1, 0, 0, 0, 7793, 7752, 1, 0, 0, 0, 7793, 7753, 1, 0, 0, 0, 7793, 7754, 1, 0, 0, 0, 7793, 7755, 1, 0, 0, 0, 7793, 7756, 1, 0, 0, 0, 7793, 7757, 1, 0, 0, 0, 7793, 7758, 1, 0, 0, 0, 7793, 7759, 1, 0, 0, 0, 7793, 7760, 1, 0, 0, 0, 7793, 7761, 1, 0, 0, 0, 7793, 7762, 1, 0, 0, 0, 7793, 7763, 1, 0, 0, 0, 7793, 7764, 1, 0, 0, 0, 7793, 7765, 1, 0, 0, 0, 7793, 7766, 1, 0, 0, 0, 7793, 7767, 1, 0, 0, 0, 7793, 7768, 1, 0, 0, 0, 7793, 7769, 1, 0, 0, 0, 7793, 7770, 1, 0, 0, 0, 7793, 7771, 1, 0, 0, 0, 7793, 7772, 1, 0, 0, 0, 7793, 7773, 1, 0, 0, 0, 7793, 7774, 1, 0, 0, 0, 7793, 7775, 1, 0, 0, 0, 7793, 7776, 1, 0, 0, 0, 7793, 7777, 1, 0, 0, 0, 7793, 7778, 1, 0, 0, 0, 7793, 7779, 1, 0, 0, 0, 7793, 7780, 1, 0, 0, 0, 7793, 7781, 1, 0, 0, 0, 7793, 7782, 1, 0, 0, 0, 7793, 7783, 1, 0, 0, 0, 7793, 7784, 1, 0, 0, 0, 7793, 7785, 1, 0, 0, 0, 7793, 7786, 1, 0, 0, 0, 7793, 7787, 1, 0, 0, 0, 7793, 7788, 1, 0, 0, 0, 7793, 7789, 1, 0, 0, 0, 7793, 7790, 1, 0, 0, 0, 7793, 7791, 1, 0, 0, 0, 7793, 7792, 1, 0, 0, 0, 7794, 831, 1, 0, 0, 0, 7795, 7796, 7, 110, 0, 0, 7796, 833, 1, 0, 0, 0, 7797, 7798, 7, 111, 0, 0, 7798, 835, 1, 0, 0, 0, 7799, 7801, 3, 838, 419, 0, 7800, 7799, 1, 0, 0, 0, 7800, 7801, 1, 0, 0, 0, 7801, 7812, 1, 0, 0, 0, 7802, 7810, 5, 178, 0, 0, 7803, 7807, 3, 840, 420, 0, 7804, 7807, 5, 178, 0, 0, 7805, 7807, 3, 838, 419, 0, 7806, 7803, 1, 0, 0, 0, 7806, 7804, 1, 0, 0, 0, 7806, 7805, 1, 0, 0, 0, 7807, 7808, 1, 0, 0, 0, 7808, 7806, 1, 0, 0, 0, 7808, 7809, 1, 0, 0, 0, 7809, 7811, 1, 0, 0, 0, 7810, 7806, 1, 0, 0, 0, 7810, 7811, 1, 0, 0, 0, 7811, 7813, 1, 0, 0, 0, 7812, 7802, 1, 0, 0, 0, 7812, 7813, 1, 0, 0, 0, 7813, 7814, 1, 0, 0, 0, 7814, 7818, 5, 146, 0, 0, 7815, 7817, 3, 846, 423, 0, 7816, 7815, 1, 0, 0, 0, 7817, 7820, 1, 0, 0, 0, 7818, 7816, 1, 0, 0, 0, 7818, 7819, 1, 0, 0, 0, 7819, 7822, 1, 0, 0, 0, 7820, 7818, 1, 0, 0, 0, 7821, 7823, 3, 924, 462, 0, 7822, 7821, 1, 0, 0, 0, 7822, 7823, 1, 0, 0, 0, 7823, 7824, 1, 0, 0, 0, 7824, 7826, 5, 454, 0, 0, 7825, 7827, 3, 928, 464, 0, 7826, 7825, 1, 0, 0, 0, 7826, 7827, 1, 0, 0, 0, 7827, 837, 1, 0, 0, 0, 7828, 7829, 5, 18, 0, 0, 7829, 7830, 3, 928, 464, 0, 7830, 7831, 5, 19, 0, 0, 7831, 839, 1, 0, 0, 0, 7832, 7879, 3, 928, 464, 0, 7833, 7834, 5, 496, 0, 0, 7834, 7837, 5, 62, 0, 0, 7835, 7838, 5, 28, 0, 0, 7836, 7838, 3, 818, 409, 0, 7837, 7835, 1, 0, 0, 0, 7837, 7836, 1, 0, 0, 0, 7838, 7880, 1, 0, 0, 0, 7839, 7841, 5, 497, 0, 0, 7840, 7839, 1, 0, 0, 0, 7840, 7841, 1, 0, 0, 0, 7841, 7842, 1, 0, 0, 0, 7842, 7844, 3, 652, 326, 0, 7843, 7845, 3, 98, 49, 0, 7844, 7843, 1, 0, 0, 0, 7844, 7845, 1, 0, 0, 0, 7845, 7848, 1, 0, 0, 0, 7846, 7847, 5, 77, 0, 0, 7847, 7849, 5, 78, 0, 0, 7848, 7846, 1, 0, 0, 0, 7848, 7849, 1, 0, 0, 0, 7849, 7855, 1, 0, 0, 0, 7850, 7853, 3, 844, 422, 0, 7851, 7853, 5, 53, 0, 0, 7852, 7850, 1, 0, 0, 0, 7852, 7851, 1, 0, 0, 0, 7853, 7854, 1, 0, 0, 0, 7854, 7856, 3, 932, 466, 0, 7855, 7852, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7880, 1, 0, 0, 0, 7857, 7859, 5, 269, 0, 0, 7858, 7857, 1, 0, 0, 0, 7858, 7859, 1, 0, 0, 0, 7859, 7860, 1, 0, 0, 0, 7860, 7862, 5, 324, 0, 0, 7861, 7858, 1, 0, 0, 0, 7861, 7862, 1, 0, 0, 0, 7862, 7863, 1, 0, 0, 0, 7863, 7875, 5, 172, 0, 0, 7864, 7865, 5, 2, 0, 0, 7865, 7870, 3, 842, 421, 0, 7866, 7867, 5, 6, 0, 0, 7867, 7869, 3, 842, 421, 0, 7868, 7866, 1, 0, 0, 0, 7869, 7872, 1, 0, 0, 0, 7870, 7868, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7873, 1, 0, 0, 0, 7872, 7870, 1, 0, 0, 0, 7873, 7874, 5, 3, 0, 0, 7874, 7876, 1, 0, 0, 0, 7875, 7864, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7877, 1, 0, 0, 0, 7877, 7878, 7, 112, 0, 0, 7878, 7880, 3, 560, 280, 0, 7879, 7833, 1, 0, 0, 0, 7879, 7840, 1, 0, 0, 0, 7879, 7861, 1, 0, 0, 0, 7880, 7881, 1, 0, 0, 0, 7881, 7882, 5, 7, 0, 0, 7882, 841, 1, 0, 0, 0, 7883, 7884, 3, 928, 464, 0, 7884, 7885, 3, 652, 326, 0, 7885, 843, 1, 0, 0, 0, 7886, 7887, 7, 113, 0, 0, 7887, 845, 1, 0, 0, 0, 7888, 7889, 3, 836, 418, 0, 7889, 7890, 5, 7, 0, 0, 7890, 7913, 1, 0, 0, 0, 7891, 7913, 3, 874, 437, 0, 7892, 7913, 3, 876, 438, 0, 7893, 7913, 3, 852, 426, 0, 7894, 7913, 3, 860, 430, 0, 7895, 7913, 3, 864, 432, 0, 7896, 7913, 3, 866, 433, 0, 7897, 7913, 3, 870, 435, 0, 7898, 7913, 3, 872, 436, 0, 7899, 7913, 3, 880, 440, 0, 7900, 7913, 3, 884, 442, 0, 7901, 7913, 3, 886, 443, 0, 7902, 7913, 3, 848, 424, 0, 7903, 7913, 3, 850, 425, 0, 7904, 7913, 3, 854, 427, 0, 7905, 7913, 3, 890, 445, 0, 7906, 7913, 3, 894, 447, 0, 7907, 7913, 3, 898, 449, 0, 7908, 7913, 3, 914, 457, 0, 7909, 7913, 3, 916, 458, 0, 7910, 7913, 3, 918, 459, 0, 7911, 7913, 3, 920, 460, 0, 7912, 7888, 1, 0, 0, 0, 7912, 7891, 1, 0, 0, 0, 7912, 7892, 1, 0, 0, 0, 7912, 7893, 1, 0, 0, 0, 7912, 7894, 1, 0, 0, 0, 7912, 7895, 1, 0, 0, 0, 7912, 7896, 1, 0, 0, 0, 7912, 7897, 1, 0, 0, 0, 7912, 7898, 1, 0, 0, 0, 7912, 7899, 1, 0, 0, 0, 7912, 7900, 1, 0, 0, 0, 7912, 7901, 1, 0, 0, 0, 7912, 7902, 1, 0, 0, 0, 7912, 7903, 1, 0, 0, 0, 7912, 7904, 1, 0, 0, 0, 7912, 7905, 1, 0, 0, 0, 7912, 7906, 1, 0, 0, 0, 7912, 7907, 1, 0, 0, 0, 7912, 7908, 1, 0, 0, 0, 7912, 7909, 1, 0, 0, 0, 7912, 7910, 1, 0, 0, 0, 7912, 7911, 1, 0, 0, 0, 7913, 847, 1, 0, 0, 0, 7914, 7915, 5, 498, 0, 0, 7915, 7916, 3, 932, 466, 0, 7916, 7917, 5, 7, 0, 0, 7917, 849, 1, 0, 0, 0, 7918, 7919, 5, 433, 0, 0, 7919, 7926, 3, 928, 464, 0, 7920, 7922, 5, 2, 0, 0, 7921, 7923, 3, 730, 365, 0, 7922, 7921, 1, 0, 0, 0, 7922, 7923, 1, 0, 0, 0, 7923, 7924, 1, 0, 0, 0, 7924, 7925, 5, 3, 0, 0, 7925, 7927, 5, 7, 0, 0, 7926, 7920, 1, 0, 0, 0, 7926, 7927, 1, 0, 0, 0, 7927, 7938, 1, 0, 0, 0, 7928, 7929, 5, 57, 0, 0, 7929, 7930, 3, 928, 464, 0, 7930, 7932, 5, 2, 0, 0, 7931, 7933, 3, 730, 365, 0, 7932, 7931, 1, 0, 0, 0, 7932, 7933, 1, 0, 0, 0, 7933, 7934, 1, 0, 0, 0, 7934, 7935, 5, 3, 0, 0, 7935, 7936, 5, 7, 0, 0, 7936, 7938, 1, 0, 0, 0, 7937, 7918, 1, 0, 0, 0, 7937, 7928, 1, 0, 0, 0, 7938, 851, 1, 0, 0, 0, 7939, 7940, 3, 858, 429, 0, 7940, 7941, 3, 844, 422, 0, 7941, 7942, 3, 932, 466, 0, 7942, 7943, 5, 7, 0, 0, 7943, 853, 1, 0, 0, 0, 7944, 7946, 5, 499, 0, 0, 7945, 7947, 7, 114, 0, 0, 7946, 7945, 1, 0, 0, 0, 7946, 7947, 1, 0, 0, 0, 7947, 7948, 1, 0, 0, 0, 7948, 7949, 5, 500, 0, 0, 7949, 7954, 3, 856, 428, 0, 7950, 7951, 5, 6, 0, 0, 7951, 7953, 3, 856, 428, 0, 7952, 7950, 1, 0, 0, 0, 7953, 7956, 1, 0, 0, 0, 7954, 7952, 1, 0, 0, 0, 7954, 7955, 1, 0, 0, 0, 7955, 7957, 1, 0, 0, 0, 7956, 7954, 1, 0, 0, 0, 7957, 7958, 5, 7, 0, 0, 7958, 855, 1, 0, 0, 0, 7959, 7960, 3, 858, 429, 0, 7960, 7961, 3, 844, 422, 0, 7961, 7962, 3, 818, 409, 0, 7962, 857, 1, 0, 0, 0, 7963, 7966, 3, 316, 158, 0, 7964, 7966, 5, 28, 0, 0, 7965, 7963, 1, 0, 0, 0, 7965, 7964, 1, 0, 0, 0, 7966, 7973, 1, 0, 0, 0, 7967, 7968, 5, 4, 0, 0, 7968, 7969, 3, 674, 337, 0, 7969, 7970, 5, 5, 0, 0, 7970, 7972, 1, 0, 0, 0, 7971, 7967, 1, 0, 0, 0, 7972, 7975, 1, 0, 0, 0, 7973, 7971, 1, 0, 0, 0, 7973, 7974, 1, 0, 0, 0, 7974, 859, 1, 0, 0, 0, 7975, 7973, 1, 0, 0, 0, 7976, 7977, 5, 220, 0, 0, 7977, 7978, 3, 932, 466, 0, 7978, 7982, 5, 93, 0, 0, 7979, 7981, 3, 846, 423, 0, 7980, 7979, 1, 0, 0, 0, 7981, 7984, 1, 0, 0, 0, 7982, 7980, 1, 0, 0, 0, 7982, 7983, 1, 0, 0, 0, 7983, 7996, 1, 0, 0, 0, 7984, 7982, 1, 0, 0, 0, 7985, 7986, 5, 502, 0, 0, 7986, 7987, 3, 674, 337, 0, 7987, 7991, 5, 93, 0, 0, 7988, 7990, 3, 846, 423, 0, 7989, 7988, 1, 0, 0, 0, 7990, 7993, 1, 0, 0, 0, 7991, 7989, 1, 0, 0, 0, 7991, 7992, 1, 0, 0, 0, 7992, 7995, 1, 0, 0, 0, 7993, 7991, 1, 0, 0, 0, 7994, 7985, 1, 0, 0, 0, 7995, 7998, 1, 0, 0, 0, 7996, 7994, 1, 0, 0, 0, 7996, 7997, 1, 0, 0, 0, 7997, 8000, 1, 0, 0, 0, 7998, 7996, 1, 0, 0, 0, 7999, 8001, 3, 862, 431, 0, 8000, 7999, 1, 0, 0, 0, 8000, 8001, 1, 0, 0, 0, 8001, 8002, 1, 0, 0, 0, 8002, 8003, 5, 454, 0, 0, 8003, 8004, 5, 220, 0, 0, 8004, 8005, 5, 7, 0, 0, 8005, 861, 1, 0, 0, 0, 8006, 8010, 5, 58, 0, 0, 8007, 8009, 3, 846, 423, 0, 8008, 8007, 1, 0, 0, 0, 8009, 8012, 1, 0, 0, 0, 8010, 8008, 1, 0, 0, 0, 8010, 8011, 1, 0, 0, 0, 8011, 863, 1, 0, 0, 0, 8012, 8010, 1, 0, 0, 0, 8013, 8015, 5, 40, 0, 0, 8014, 8016, 3, 932, 466, 0, 8015, 8014, 1, 0, 0, 0, 8015, 8016, 1, 0, 0, 0, 8016, 8026, 1, 0, 0, 0, 8017, 8018, 5, 102, 0, 0, 8018, 8019, 3, 730, 365, 0, 8019, 8023, 5, 93, 0, 0, 8020, 8022, 3, 846, 423, 0, 8021, 8020, 1, 0, 0, 0, 8022, 8025, 1, 0, 0, 0, 8023, 8021, 1, 0, 0, 0, 8023, 8024, 1, 0, 0, 0, 8024, 8027, 1, 0, 0, 0, 8025, 8023, 1, 0, 0, 0, 8026, 8017, 1, 0, 0, 0, 8027, 8028, 1, 0, 0, 0, 8028, 8026, 1, 0, 0, 0, 8028, 8029, 1, 0, 0, 0, 8029, 8031, 1, 0, 0, 0, 8030, 8032, 3, 862, 431, 0, 8031, 8030, 1, 0, 0, 0, 8031, 8032, 1, 0, 0, 0, 8032, 8033, 1, 0, 0, 0, 8033, 8034, 5, 454, 0, 0, 8034, 8035, 5, 40, 0, 0, 8035, 8036, 5, 7, 0, 0, 8036, 865, 1, 0, 0, 0, 8037, 8039, 3, 838, 419, 0, 8038, 8037, 1, 0, 0, 0, 8038, 8039, 1, 0, 0, 0, 8039, 8044, 1, 0, 0, 0, 8040, 8041, 5, 503, 0, 0, 8041, 8045, 3, 674, 337, 0, 8042, 8043, 5, 62, 0, 0, 8043, 8045, 3, 868, 434, 0, 8044, 8040, 1, 0, 0, 0, 8044, 8042, 1, 0, 0, 0, 8044, 8045, 1, 0, 0, 0, 8045, 8046, 1, 0, 0, 0, 8046, 8047, 3, 882, 441, 0, 8047, 867, 1, 0, 0, 0, 8048, 8049, 3, 314, 157, 0, 8049, 8072, 5, 68, 0, 0, 8050, 8052, 3, 818, 409, 0, 8051, 8053, 3, 534, 267, 0, 8052, 8051, 1, 0, 0, 0, 8052, 8053, 1, 0, 0, 0, 8053, 8073, 1, 0, 0, 0, 8054, 8073, 3, 560, 280, 0, 8055, 8073, 3, 520, 260, 0, 8056, 8057, 5, 202, 0, 0, 8057, 8060, 3, 674, 337, 0, 8058, 8059, 5, 100, 0, 0, 8059, 8061, 3, 730, 365, 0, 8060, 8058, 1, 0, 0, 0, 8060, 8061, 1, 0, 0, 0, 8061, 8073, 1, 0, 0, 0, 8062, 8064, 5, 504, 0, 0, 8063, 8062, 1, 0, 0, 0, 8063, 8064, 1, 0, 0, 0, 8064, 8065, 1, 0, 0, 0, 8065, 8066, 3, 674, 337, 0, 8066, 8067, 5, 24, 0, 0, 8067, 8070, 3, 674, 337, 0, 8068, 8069, 5, 147, 0, 0, 8069, 8071, 3, 674, 337, 0, 8070, 8068, 1, 0, 0, 0, 8070, 8071, 1, 0, 0, 0, 8071, 8073, 1, 0, 0, 0, 8072, 8050, 1, 0, 0, 0, 8072, 8054, 1, 0, 0, 0, 8072, 8055, 1, 0, 0, 0, 8072, 8056, 1, 0, 0, 0, 8072, 8063, 1, 0, 0, 0, 8073, 869, 1, 0, 0, 0, 8074, 8076, 3, 838, 419, 0, 8075, 8074, 1, 0, 0, 0, 8075, 8076, 1, 0, 0, 0, 8076, 8077, 1, 0, 0, 0, 8077, 8078, 5, 505, 0, 0, 8078, 8081, 3, 314, 157, 0, 8079, 8080, 5, 506, 0, 0, 8080, 8082, 5, 571, 0, 0, 8081, 8079, 1, 0, 0, 0, 8081, 8082, 1, 0, 0, 0, 8082, 8083, 1, 0, 0, 0, 8083, 8084, 5, 68, 0, 0, 8084, 8085, 5, 35, 0, 0, 8085, 8086, 3, 674, 337, 0, 8086, 8087, 3, 882, 441, 0, 8087, 871, 1, 0, 0, 0, 8088, 8090, 7, 115, 0, 0, 8089, 8091, 3, 928, 464, 0, 8090, 8089, 1, 0, 0, 0, 8090, 8091, 1, 0, 0, 0, 8091, 8094, 1, 0, 0, 0, 8092, 8093, 5, 102, 0, 0, 8093, 8095, 3, 932, 466, 0, 8094, 8092, 1, 0, 0, 0, 8094, 8095, 1, 0, 0, 0, 8095, 8096, 1, 0, 0, 0, 8096, 8097, 5, 7, 0, 0, 8097, 873, 1, 0, 0, 0, 8098, 8113, 5, 508, 0, 0, 8099, 8100, 5, 268, 0, 0, 8100, 8114, 3, 932, 466, 0, 8101, 8108, 5, 509, 0, 0, 8102, 8103, 5, 202, 0, 0, 8103, 8104, 3, 674, 337, 0, 8104, 8105, 5, 100, 0, 0, 8105, 8106, 3, 730, 365, 0, 8106, 8109, 1, 0, 0, 0, 8107, 8109, 3, 560, 280, 0, 8108, 8102, 1, 0, 0, 0, 8108, 8107, 1, 0, 0, 0, 8109, 8114, 1, 0, 0, 0, 8110, 8112, 3, 932, 466, 0, 8111, 8110, 1, 0, 0, 0, 8111, 8112, 1, 0, 0, 0, 8112, 8114, 1, 0, 0, 0, 8113, 8099, 1, 0, 0, 0, 8113, 8101, 1, 0, 0, 0, 8113, 8111, 1, 0, 0, 0, 8114, 8115, 1, 0, 0, 0, 8115, 8116, 5, 7, 0, 0, 8116, 875, 1, 0, 0, 0, 8117, 8147, 5, 510, 0, 0, 8118, 8120, 7, 116, 0, 0, 8119, 8118, 1, 0, 0, 0, 8119, 8120, 1, 0, 0, 0, 8120, 8133, 1, 0, 0, 0, 8121, 8134, 3, 826, 413, 0, 8122, 8123, 5, 511, 0, 0, 8123, 8134, 3, 808, 404, 0, 8124, 8131, 3, 808, 404, 0, 8125, 8126, 5, 6, 0, 0, 8126, 8128, 3, 674, 337, 0, 8127, 8125, 1, 0, 0, 0, 8128, 8129, 1, 0, 0, 0, 8129, 8127, 1, 0, 0, 0, 8129, 8130, 1, 0, 0, 0, 8130, 8132, 1, 0, 0, 0, 8131, 8127, 1, 0, 0, 0, 8131, 8132, 1, 0, 0, 0, 8132, 8134, 1, 0, 0, 0, 8133, 8121, 1, 0, 0, 0, 8133, 8122, 1, 0, 0, 0, 8133, 8124, 1, 0, 0, 0, 8133, 8134, 1, 0, 0, 0, 8134, 8144, 1, 0, 0, 0, 8135, 8136, 5, 100, 0, 0, 8136, 8141, 3, 878, 439, 0, 8137, 8138, 5, 6, 0, 0, 8138, 8140, 3, 878, 439, 0, 8139, 8137, 1, 0, 0, 0, 8140, 8143, 1, 0, 0, 0, 8141, 8139, 1, 0, 0, 0, 8141, 8142, 1, 0, 0, 0, 8142, 8145, 1, 0, 0, 0, 8143, 8141, 1, 0, 0, 0, 8144, 8135, 1, 0, 0, 0, 8144, 8145, 1, 0, 0, 0, 8145, 8146, 1, 0, 0, 0, 8146, 8148, 5, 7, 0, 0, 8147, 8119, 1, 0, 0, 0, 8147, 8148, 1, 0, 0, 0, 8148, 877, 1, 0, 0, 0, 8149, 8150, 3, 826, 413, 0, 8150, 8151, 5, 10, 0, 0, 8151, 8152, 3, 674, 337, 0, 8152, 879, 1, 0, 0, 0, 8153, 8154, 5, 518, 0, 0, 8154, 8157, 3, 932, 466, 0, 8155, 8156, 5, 6, 0, 0, 8156, 8158, 3, 932, 466, 0, 8157, 8155, 1, 0, 0, 0, 8157, 8158, 1, 0, 0, 0, 8158, 8159, 1, 0, 0, 0, 8159, 8160, 5, 7, 0, 0, 8160, 881, 1, 0, 0, 0, 8161, 8165, 5, 519, 0, 0, 8162, 8164, 3, 846, 423, 0, 8163, 8162, 1, 0, 0, 0, 8164, 8167, 1, 0, 0, 0, 8165, 8163, 1, 0, 0, 0, 8165, 8166, 1, 0, 0, 0, 8166, 8168, 1, 0, 0, 0, 8167, 8165, 1, 0, 0, 0, 8168, 8169, 5, 454, 0, 0, 8169, 8171, 5, 519, 0, 0, 8170, 8172, 3, 928, 464, 0, 8171, 8170, 1, 0, 0, 0, 8171, 8172, 1, 0, 0, 0, 8172, 8173, 1, 0, 0, 0, 8173, 8174, 5, 7, 0, 0, 8174, 883, 1, 0, 0, 0, 8175, 8177, 3, 4, 2, 0, 8176, 8178, 3, 888, 444, 0, 8177, 8176, 1, 0, 0, 0, 8177, 8178, 1, 0, 0, 0, 8178, 8179, 1, 0, 0, 0, 8179, 8180, 5, 7, 0, 0, 8180, 885, 1, 0, 0, 0, 8181, 8182, 5, 202, 0, 0, 8182, 8198, 3, 674, 337, 0, 8183, 8185, 3, 888, 444, 0, 8184, 8183, 1, 0, 0, 0, 8184, 8185, 1, 0, 0, 0, 8185, 8188, 1, 0, 0, 0, 8186, 8187, 5, 100, 0, 0, 8187, 8189, 3, 730, 365, 0, 8188, 8186, 1, 0, 0, 0, 8188, 8189, 1, 0, 0, 0, 8189, 8199, 1, 0, 0, 0, 8190, 8191, 5, 100, 0, 0, 8191, 8193, 3, 730, 365, 0, 8192, 8190, 1, 0, 0, 0, 8192, 8193, 1, 0, 0, 0, 8193, 8195, 1, 0, 0, 0, 8194, 8196, 3, 888, 444, 0, 8195, 8194, 1, 0, 0, 0, 8195, 8196, 1, 0, 0, 0, 8196, 8199, 1, 0, 0, 0, 8197, 8199, 1, 0, 0, 0, 8198, 8184, 1, 0, 0, 0, 8198, 8192, 1, 0, 0, 0, 8198, 8197, 1, 0, 0, 0, 8199, 8200, 1, 0, 0, 0, 8200, 8201, 5, 7, 0, 0, 8201, 887, 1, 0, 0, 0, 8202, 8204, 5, 71, 0, 0, 8203, 8205, 5, 346, 0, 0, 8204, 8203, 1, 0, 0, 0, 8204, 8205, 1, 0, 0, 0, 8205, 8206, 1, 0, 0, 0, 8206, 8207, 3, 730, 365, 0, 8207, 889, 1, 0, 0, 0, 8208, 8240, 5, 520, 0, 0, 8209, 8214, 3, 922, 461, 0, 8210, 8212, 5, 269, 0, 0, 8211, 8210, 1, 0, 0, 0, 8211, 8212, 1, 0, 0, 0, 8212, 8213, 1, 0, 0, 0, 8213, 8215, 5, 324, 0, 0, 8214, 8211, 1, 0, 0, 0, 8214, 8215, 1, 0, 0, 0, 8215, 8216, 1, 0, 0, 0, 8216, 8224, 5, 62, 0, 0, 8217, 8225, 3, 560, 280, 0, 8218, 8219, 5, 202, 0, 0, 8219, 8222, 3, 932, 466, 0, 8220, 8221, 5, 100, 0, 0, 8221, 8223, 3, 730, 365, 0, 8222, 8220, 1, 0, 0, 0, 8222, 8223, 1, 0, 0, 0, 8223, 8225, 1, 0, 0, 0, 8224, 8217, 1, 0, 0, 0, 8224, 8218, 1, 0, 0, 0, 8225, 8241, 1, 0, 0, 0, 8226, 8238, 3, 818, 409, 0, 8227, 8228, 5, 2, 0, 0, 8228, 8233, 3, 892, 446, 0, 8229, 8230, 5, 6, 0, 0, 8230, 8232, 3, 892, 446, 0, 8231, 8229, 1, 0, 0, 0, 8232, 8235, 1, 0, 0, 0, 8233, 8231, 1, 0, 0, 0, 8233, 8234, 1, 0, 0, 0, 8234, 8236, 1, 0, 0, 0, 8235, 8233, 1, 0, 0, 0, 8236, 8237, 5, 3, 0, 0, 8237, 8239, 1, 0, 0, 0, 8238, 8227, 1, 0, 0, 0, 8238, 8239, 1, 0, 0, 0, 8239, 8241, 1, 0, 0, 0, 8240, 8209, 1, 0, 0, 0, 8240, 8226, 1, 0, 0, 0, 8241, 8242, 1, 0, 0, 0, 8242, 8243, 5, 7, 0, 0, 8243, 891, 1, 0, 0, 0, 8244, 8245, 3, 818, 409, 0, 8245, 8246, 5, 20, 0, 0, 8246, 8248, 1, 0, 0, 0, 8247, 8244, 1, 0, 0, 0, 8247, 8248, 1, 0, 0, 0, 8248, 8249, 1, 0, 0, 0, 8249, 8250, 3, 674, 337, 0, 8250, 893, 1, 0, 0, 0, 8251, 8253, 5, 61, 0, 0, 8252, 8254, 3, 896, 448, 0, 8253, 8252, 1, 0, 0, 0, 8253, 8254, 1, 0, 0, 0, 8254, 8256, 1, 0, 0, 0, 8255, 8257, 3, 332, 166, 0, 8256, 8255, 1, 0, 0, 0, 8256, 8257, 1, 0, 0, 0, 8257, 8258, 1, 0, 0, 0, 8258, 8259, 3, 922, 461, 0, 8259, 8260, 5, 71, 0, 0, 8260, 8261, 3, 730, 365, 0, 8261, 8262, 5, 7, 0, 0, 8262, 895, 1, 0, 0, 0, 8263, 8278, 5, 268, 0, 0, 8264, 8278, 5, 293, 0, 0, 8265, 8278, 5, 207, 0, 0, 8266, 8278, 5, 249, 0, 0, 8267, 8269, 7, 50, 0, 0, 8268, 8267, 1, 0, 0, 0, 8268, 8269, 1, 0, 0, 0, 8269, 8270, 1, 0, 0, 0, 8270, 8278, 3, 674, 337, 0, 8271, 8278, 5, 30, 0, 0, 8272, 8275, 7, 117, 0, 0, 8273, 8276, 3, 674, 337, 0, 8274, 8276, 5, 30, 0, 0, 8275, 8273, 1, 0, 0, 0, 8275, 8274, 1, 0, 0, 0, 8275, 8276, 1, 0, 0, 0, 8276, 8278, 1, 0, 0, 0, 8277, 8263, 1, 0, 0, 0, 8277, 8264, 1, 0, 0, 0, 8277, 8265, 1, 0, 0, 0, 8277, 8266, 1, 0, 0, 0, 8277, 8268, 1, 0, 0, 0, 8277, 8271, 1, 0, 0, 0, 8277, 8272, 1, 0, 0, 0, 8278, 897, 1, 0, 0, 0, 8279, 8281, 5, 265, 0, 0, 8280, 8282, 3, 896, 448, 0, 8281, 8280, 1, 0, 0, 0, 8281, 8282, 1, 0, 0, 0, 8282, 8283, 1, 0, 0, 0, 8283, 8284, 3, 922, 461, 0, 8284, 8285, 5, 7, 0, 0, 8285, 899, 1, 0, 0, 0, 8286, 8288, 3, 572, 286, 0, 8287, 8286, 1, 0, 0, 0, 8287, 8288, 1, 0, 0, 0, 8288, 8289, 1, 0, 0, 0, 8289, 8290, 5, 525, 0, 0, 8290, 8292, 5, 71, 0, 0, 8291, 8293, 5, 81, 0, 0, 8292, 8291, 1, 0, 0, 0, 8292, 8293, 1, 0, 0, 0, 8293, 8294, 1, 0, 0, 0, 8294, 8296, 3, 774, 387, 0, 8295, 8297, 5, 9, 0, 0, 8296, 8295, 1, 0, 0, 0, 8296, 8297, 1, 0, 0, 0, 8297, 8302, 1, 0, 0, 0, 8298, 8300, 5, 36, 0, 0, 8299, 8298, 1, 0, 0, 0, 8299, 8300, 1, 0, 0, 0, 8300, 8301, 1, 0, 0, 0, 8301, 8303, 3, 818, 409, 0, 8302, 8299, 1, 0, 0, 0, 8302, 8303, 1, 0, 0, 0, 8303, 8304, 1, 0, 0, 0, 8304, 8305, 5, 100, 0, 0, 8305, 8306, 3, 902, 451, 0, 8306, 8307, 5, 80, 0, 0, 8307, 8309, 3, 674, 337, 0, 8308, 8310, 3, 904, 452, 0, 8309, 8308, 1, 0, 0, 0, 8310, 8311, 1, 0, 0, 0, 8311, 8309, 1, 0, 0, 0, 8311, 8312, 1, 0, 0, 0, 8312, 901, 1, 0, 0, 0, 8313, 8315, 5, 81, 0, 0, 8314, 8313, 1, 0, 0, 0, 8314, 8315, 1, 0, 0, 0, 8315, 8316, 1, 0, 0, 0, 8316, 8318, 3, 774, 387, 0, 8317, 8319, 5, 9, 0, 0, 8318, 8317, 1, 0, 0, 0, 8318, 8319, 1, 0, 0, 0, 8319, 8325, 1, 0, 0, 0, 8320, 8323, 3, 564, 282, 0, 8321, 8323, 3, 608, 304, 0, 8322, 8320, 1, 0, 0, 0, 8322, 8321, 1, 0, 0, 0, 8323, 8325, 1, 0, 0, 0, 8324, 8314, 1, 0, 0, 0, 8324, 8322, 1, 0, 0, 0, 8325, 8330, 1, 0, 0, 0, 8326, 8328, 5, 36, 0, 0, 8327, 8326, 1, 0, 0, 0, 8327, 8328, 1, 0, 0, 0, 8328, 8329, 1, 0, 0, 0, 8329, 8331, 3, 818, 409, 0, 8330, 8327, 1, 0, 0, 0, 8330, 8331, 1, 0, 0, 0, 8331, 903, 1, 0, 0, 0, 8332, 8333, 5, 102, 0, 0, 8333, 8336, 5, 526, 0, 0, 8334, 8335, 5, 33, 0, 0, 8335, 8337, 3, 674, 337, 0, 8336, 8334, 1, 0, 0, 0, 8336, 8337, 1, 0, 0, 0, 8337, 8338, 1, 0, 0, 0, 8338, 8343, 5, 93, 0, 0, 8339, 8344, 3, 908, 454, 0, 8340, 8344, 5, 182, 0, 0, 8341, 8342, 5, 57, 0, 0, 8342, 8344, 5, 270, 0, 0, 8343, 8339, 1, 0, 0, 0, 8343, 8340, 1, 0, 0, 0, 8343, 8341, 1, 0, 0, 0, 8344, 8359, 1, 0, 0, 0, 8345, 8346, 5, 102, 0, 0, 8346, 8347, 5, 77, 0, 0, 8347, 8350, 5, 526, 0, 0, 8348, 8349, 5, 33, 0, 0, 8349, 8351, 3, 674, 337, 0, 8350, 8348, 1, 0, 0, 0, 8350, 8351, 1, 0, 0, 0, 8351, 8352, 1, 0, 0, 0, 8352, 8356, 5, 93, 0, 0, 8353, 8357, 3, 906, 453, 0, 8354, 8355, 5, 57, 0, 0, 8355, 8357, 5, 270, 0, 0, 8356, 8353, 1, 0, 0, 0, 8356, 8354, 1, 0, 0, 0, 8357, 8359, 1, 0, 0, 0, 8358, 8332, 1, 0, 0, 0, 8358, 8345, 1, 0, 0, 0, 8359, 905, 1, 0, 0, 0, 8360, 8362, 5, 241, 0, 0, 8361, 8363, 3, 144, 72, 0, 8362, 8361, 1, 0, 0, 0, 8362, 8363, 1, 0, 0, 0, 8363, 8367, 1, 0, 0, 0, 8364, 8365, 5, 463, 0, 0, 8365, 8366, 7, 76, 0, 0, 8366, 8368, 5, 450, 0, 0, 8367, 8364, 1, 0, 0, 0, 8367, 8368, 1, 0, 0, 0, 8368, 8369, 1, 0, 0, 0, 8369, 8370, 3, 910, 455, 0, 8370, 907, 1, 0, 0, 0, 8371, 8372, 5, 369, 0, 0, 8372, 8390, 5, 333, 0, 0, 8373, 8374, 3, 800, 400, 0, 8374, 8375, 5, 10, 0, 0, 8375, 8376, 3, 912, 456, 0, 8376, 8391, 1, 0, 0, 0, 8377, 8378, 3, 144, 72, 0, 8378, 8379, 5, 10, 0, 0, 8379, 8380, 5, 2, 0, 0, 8380, 8385, 3, 912, 456, 0, 8381, 8382, 5, 6, 0, 0, 8382, 8384, 3, 912, 456, 0, 8383, 8381, 1, 0, 0, 0, 8384, 8387, 1, 0, 0, 0, 8385, 8383, 1, 0, 0, 0, 8385, 8386, 1, 0, 0, 0, 8386, 8388, 1, 0, 0, 0, 8387, 8385, 1, 0, 0, 0, 8388, 8389, 5, 3, 0, 0, 8389, 8391, 1, 0, 0, 0, 8390, 8373, 1, 0, 0, 0, 8390, 8377, 1, 0, 0, 0, 8391, 8392, 1, 0, 0, 0, 8392, 8390, 1, 0, 0, 0, 8392, 8393, 1, 0, 0, 0, 8393, 909, 1, 0, 0, 0, 8394, 8395, 5, 422, 0, 0, 8395, 8396, 5, 2, 0, 0, 8396, 8401, 3, 912, 456, 0, 8397, 8398, 5, 6, 0, 0, 8398, 8400, 3, 912, 456, 0, 8399, 8397, 1, 0, 0, 0, 8400, 8403, 1, 0, 0, 0, 8401, 8399, 1, 0, 0, 0, 8401, 8402, 1, 0, 0, 0, 8402, 8404, 1, 0, 0, 0, 8403, 8401, 1, 0, 0, 0, 8404, 8405, 5, 3, 0, 0, 8405, 8409, 1, 0, 0, 0, 8406, 8407, 5, 53, 0, 0, 8407, 8409, 5, 422, 0, 0, 8408, 8394, 1, 0, 0, 0, 8408, 8406, 1, 0, 0, 0, 8409, 911, 1, 0, 0, 0, 8410, 8413, 3, 588, 294, 0, 8411, 8413, 5, 53, 0, 0, 8412, 8410, 1, 0, 0, 0, 8412, 8411, 1, 0, 0, 0, 8413, 913, 1, 0, 0, 0, 8414, 8415, 5, 157, 0, 0, 8415, 8416, 3, 922, 461, 0, 8416, 8417, 5, 7, 0, 0, 8417, 915, 1, 0, 0, 0, 8418, 8419, 5, 78, 0, 0, 8419, 8420, 5, 7, 0, 0, 8420, 917, 1, 0, 0, 0, 8421, 8427, 7, 67, 0, 0, 8422, 8424, 5, 33, 0, 0, 8423, 8425, 5, 269, 0, 0, 8424, 8423, 1, 0, 0, 0, 8424, 8425, 1, 0, 0, 0, 8425, 8426, 1, 0, 0, 0, 8426, 8428, 5, 153, 0, 0, 8427, 8422, 1, 0, 0, 0, 8427, 8428, 1, 0, 0, 0, 8428, 8429, 1, 0, 0, 0, 8429, 8430, 5, 7, 0, 0, 8430, 919, 1, 0, 0, 0, 8431, 8432, 5, 333, 0, 0, 8432, 8433, 3, 316, 158, 0, 8433, 8434, 5, 94, 0, 0, 8434, 8435, 5, 53, 0, 0, 8435, 8436, 5, 7, 0, 0, 8436, 8444, 1, 0, 0, 0, 8437, 8440, 5, 313, 0, 0, 8438, 8441, 3, 316, 158, 0, 8439, 8441, 5, 30, 0, 0, 8440, 8438, 1, 0, 0, 0, 8440, 8439, 1, 0, 0, 0, 8441, 8442, 1, 0, 0, 0, 8442, 8444, 5, 7, 0, 0, 8443, 8431, 1, 0, 0, 0, 8443, 8437, 1, 0, 0, 0, 8444, 921, 1, 0, 0, 0, 8445, 8448, 3, 818, 409, 0, 8446, 8448, 5, 28, 0, 0, 8447, 8445, 1, 0, 0, 0, 8447, 8446, 1, 0, 0, 0, 8448, 923, 1, 0, 0, 0, 8449, 8466, 5, 517, 0, 0, 8450, 8451, 5, 102, 0, 0, 8451, 8456, 3, 926, 463, 0, 8452, 8453, 5, 82, 0, 0, 8453, 8455, 3, 926, 463, 0, 8454, 8452, 1, 0, 0, 0, 8455, 8458, 1, 0, 0, 0, 8456, 8454, 1, 0, 0, 0, 8456, 8457, 1, 0, 0, 0, 8457, 8459, 1, 0, 0, 0, 8458, 8456, 1, 0, 0, 0, 8459, 8463, 5, 93, 0, 0, 8460, 8462, 3, 846, 423, 0, 8461, 8460, 1, 0, 0, 0, 8462, 8465, 1, 0, 0, 0, 8463, 8461, 1, 0, 0, 0, 8463, 8464, 1, 0, 0, 0, 8464, 8467, 1, 0, 0, 0, 8465, 8463, 1, 0, 0, 0, 8466, 8450, 1, 0, 0, 0, 8467, 8468, 1, 0, 0, 0, 8468, 8466, 1, 0, 0, 0, 8468, 8469, 1, 0, 0, 0, 8469, 925, 1, 0, 0, 0, 8470, 8474, 3, 928, 464, 0, 8471, 8472, 5, 511, 0, 0, 8472, 8474, 3, 808, 404, 0, 8473, 8470, 1, 0, 0, 0, 8473, 8471, 1, 0, 0, 0, 8474, 927, 1, 0, 0, 0, 8475, 8478, 3, 818, 409, 0, 8476, 8478, 3, 930, 465, 0, 8477, 8475, 1, 0, 0, 0, 8477, 8476, 1, 0, 0, 0, 8478, 929, 1, 0, 0, 0, 8479, 8480, 7, 118, 0, 0, 8480, 931, 1, 0, 0, 0, 8481, 8483, 3, 756, 378, 0, 8482, 8481, 1, 0, 0, 0, 8482, 8483, 1, 0, 0, 0, 8483, 8485, 1, 0, 0, 0, 8484, 8486, 3, 580, 290, 0, 8485, 8484, 1, 0, 0, 0, 8485, 8486, 1, 0, 0, 0, 8486, 8488, 1, 0, 0, 0, 8487, 8489, 3, 610, 305, 0, 8488, 8487, 1, 0, 0, 0, 8488, 8489, 1, 0, 0, 0, 8489, 8491, 1, 0, 0, 0, 8490, 8492, 3, 638, 319, 0, 8491, 8490, 1, 0, 0, 0, 8491, 8492, 1, 0, 0, 0, 8492, 8494, 1, 0, 0, 0, 8493, 8495, 3, 600, 300, 0, 8494, 8493, 1, 0, 0, 0, 8494, 8495, 1, 0, 0, 0, 8495, 8498, 1, 0, 0, 0, 8496, 8497, 5, 67, 0, 0, 8497, 8499, 3, 674, 337, 0, 8498, 8496, 1, 0, 0, 0, 8498, 8499, 1, 0, 0, 0, 8499, 8501, 1, 0, 0, 0, 8500, 8502, 3, 702, 351, 0, 8501, 8500, 1, 0, 0, 0, 8501, 8502, 1, 0, 0, 0, 8502, 933, 1, 0, 0, 0, 1188, 937, 944, 1064, 1066, 1075, 1080, 1086, 1121, 1131, 1137, 1142, 1149, 1154, 1161, 1172, 1180, 1184, 1196, 1202, 1208, 1212, 1217, 1221, 1234, 1244, 1246, 1252, 1257, 1270, 1273, 1278, 1283, 1294, 1298, 1310, 1314, 1317, 1321, 1333, 1351, 1358, 1366, 1371, 1378, 1386, 1392, 1400, 1408, 1412, 1426, 1431, 1436, 1448, 1454, 1466, 1471, 1481, 1487, 1492, 1500, 1505, 1512, 1517, 1522, 1532, 1537, 1542, 1549, 1553, 1567, 1573, 1579, 1584, 1591, 1603, 1611, 1619, 1635, 1644, 1653, 1662, 1666, 1678, 1686, 1696, 1716, 1721, 1724, 1731, 1734, 1738, 1742, 1745, 1750, 1755, 1759, 1768, 1774, 1778, 1787, 1790, 1796, 1805, 1817, 1821, 1825, 1830, 1833, 1839, 1841, 1843, 1847, 1853, 1857, 1862, 1867, 1871, 1874, 1881, 1894, 1907, 1921, 1938, 1948, 1955, 1960, 1964, 1971, 1976, 1979, 1981, 1986, 1990, 1994, 1998, 2003, 2006, 2010, 2013, 2017, 2025, 2030, 2033, 2037, 2043, 2052, 2056, 2062, 2064, 2073, 2078, 2090, 2095, 2099, 2103, 2108, 2112, 2115, 2118, 2121, 2124, 2127, 2132, 2135, 2138, 2141, 2144, 2147, 2153, 2157, 2160, 2163, 2166, 2169, 2171, 2178, 2186, 2196, 2206, 2211, 2214, 2219, 2224, 2229, 2232, 2237, 2246, 2248, 2252, 2255, 2259, 2264, 2269, 2273, 2276, 2280, 2283, 2288, 2291, 2296, 2299, 2303, 2306, 2309, 2314, 2317, 2325, 2337, 2341, 2348, 2353, 2356, 2359, 2362, 2367, 2378, 2384, 2388, 2391, 2394, 2399, 2406, 2409, 2413, 2421, 2426, 2429, 2432, 2439, 2444, 2453, 2456, 2459, 2464, 2467, 2479, 2489, 2506, 2510, 2514, 2516, 2533, 2535, 2551, 2562, 2565, 2568, 2577, 2586, 2602, 2605, 2608, 2616, 2620, 2627, 2636, 2640, 2646, 2650, 2653, 2656, 2659, 2662, 2668, 2672, 2677, 2681, 2684, 2687, 2690, 2695, 2701, 2705, 2709, 2713, 2719, 2721, 2726, 2732, 2738, 2742, 2757, 2762, 2765, 2767, 2770, 2774, 2778, 2781, 2784, 2792, 2798, 2800, 2806, 2811, 2816, 2820, 2827, 2829, 2840, 2879, 2889, 2891, 2894, 2898, 2902, 2912, 2914, 2920, 2922, 2931, 2943, 2957, 2962, 2965, 2972, 2977, 2985, 2987, 2993, 2998, 3002, 3007, 3013, 3020, 3026, 3028, 3037, 3043, 3051, 3057, 3062, 3067, 3075, 3090, 3092, 3096, 3100, 3103, 3106, 3115, 3118, 3121, 3127, 3133, 3137, 3149, 3155, 3158, 3163, 3167, 3174, 3184, 3186, 3210, 3222, 3227, 3229, 3233, 3236, 3239, 3249, 3252, 3262, 3267, 3272, 3275, 3278, 3286, 3292, 3299, 3307, 3310, 3321, 3325, 3331, 3338, 3341, 3350, 3364, 3367, 3381, 3392, 3395, 3407, 3412, 3425, 3430, 3443, 3452, 3455, 3458, 3465, 3468, 3480, 3486, 3488, 3496, 3504, 3512, 3524, 3529, 3540, 3551, 3559, 3567, 3574, 3581, 3583, 3586, 3591, 3596, 3615, 3624, 3627, 3654, 3663, 3666, 3670, 3674, 3678, 3685, 3689, 3693, 3697, 3701, 3706, 3710, 3715, 3721, 3726, 3733, 3737, 3743, 3747, 3752, 3760, 3766, 3771, 3778, 3783, 3787, 3792, 3798, 3805, 3810, 3817, 3822, 3829, 3833, 3841, 3845, 3847, 3850, 3855, 3865, 3880, 3883, 3891, 3898, 3903, 3909, 3913, 3920, 3925, 3928, 3931, 3935, 3944, 3962, 3965, 3997, 4002, 4008, 4028, 4033, 4039, 4042, 4046, 4050, 4056, 4059, 4063, 4067, 4072, 4075, 4078, 4081, 4094, 4100, 4108, 4115, 4120, 4123, 4130, 4133, 4141, 4144, 4149, 4156, 4159, 4179, 4191, 4194, 4200, 4205, 4214, 4222, 4227, 4233, 4240, 4248, 4251, 4262, 4264, 4278, 4284, 4292, 4294, 4300, 4304, 4307, 4310, 4315, 4320, 4324, 4327, 4330, 4333, 4336, 4344, 4355, 4358, 4361, 4366, 4369, 4373, 4377, 4383, 4391, 4394, 4407, 4412, 4414, 4419, 4426, 4433, 4442, 4450, 4458, 4465, 4473, 4480, 4488, 4492, 4496, 4498, 4504, 4509, 4513, 4520, 4525, 4530, 4535, 4537, 4547, 4557, 4573, 4591, 4603, 4610, 4625, 4630, 4633, 4638, 4643, 4648, 4651, 4654, 4659, 4666, 4670, 4675, 4682, 4686, 4692, 4701, 4710, 4722, 4724, 4737, 4743, 4747, 4749, 4756, 4769, 4776, 4778, 4794, 4798, 4802, 4807, 4812, 4817, 4822, 4825, 4837, 4890, 4899, 4903, 4912, 4916, 4925, 4929, 4934, 4937, 4941, 4946, 4948, 4957, 4962, 4973, 4977, 4991, 4999, 5037, 5039, 5058, 5061, 5088, 5092, 5096, 5100, 5104, 5107, 5122, 5129, 5143, 5156, 5181, 5200, 5215, 5231, 5238, 5249, 5252, 5271, 5274, 5287, 5291, 5311, 5323, 5327, 5349, 5353, 5363, 5367, 5373, 5377, 5381, 5385, 5392, 5397, 5408, 5412, 5415, 5420, 5426, 5437, 5441, 5444, 5448, 5452, 5455, 5465, 5468, 5472, 5477, 5483, 5486, 5491, 5494, 5501, 5503, 5509, 5513, 5522, 5527, 5529, 5539, 5542, 5547, 5555, 5558, 5563, 5565, 5567, 5573, 5590, 5596, 5609, 5615, 5619, 5624, 5654, 5669, 5674, 5678, 5691, 5695, 5697, 5706, 5712, 5714, 5718, 5721, 5724, 5727, 5730, 5732, 5735, 5739, 5747, 5752, 5755, 5761, 5765, 5769, 5774, 5776, 5780, 5784, 5791, 5797, 5801, 5803, 5805, 5818, 5826, 5834, 5845, 5854, 5859, 5863, 5867, 5874, 5877, 5879, 5887, 5891, 5894, 5901, 5908, 5913, 5920, 5923, 5925, 5928, 5934, 5939, 5943, 5950, 5960, 5967, 5970, 5973, 5977, 5988, 5991, 5994, 5997, 6000, 6007, 6010, 6013, 6020, 6032, 6039, 6041, 6046, 6051, 6053, 6059, 6066, 6071, 6076, 6080, 6084, 6088, 6090, 6094, 6098, 6101, 6104, 6106, 6116, 6118, 6123, 6127, 6132, 6136, 6143, 6148, 6152, 6155, 6161, 6164, 6183, 6190, 6194, 6197, 6201, 6205, 6208, 6211, 6216, 6225, 6232, 6236, 6240, 6244, 6247, 6249, 6254, 6258, 6263, 6269, 6276, 6281, 6286, 6295, 6302, 6310, 6321, 6326, 6330, 6333, 6337, 6342, 6346, 6351, 6359, 6370, 6375, 6379, 6382, 6385, 6387, 6390, 6393, 6396, 6400, 6404, 6408, 6410, 6419, 6424, 6430, 6434, 6436, 6443, 6448, 6454, 6456, 6460, 6467, 6472, 6475, 6481, 6485, 6491, 6500, 6506, 6508, 6513, 6516, 6525, 6532, 6534, 6541, 6546, 6549, 6559, 6570, 6575, 6579, 6587, 6597, 6604, 6610, 6621, 6627, 6637, 6646, 6650, 6653, 6655, 6657, 6661, 6669, 6672, 6677, 6682, 6689, 6691, 6697, 6701, 6704, 6709, 6712, 6714, 6720, 6729, 6735, 6738, 6746, 6749, 6753, 6759, 6761, 6764, 6768, 6773, 6780, 6787, 6789, 6795, 6797, 6802, 6804, 6808, 6817, 6821, 6829, 6831, 6845, 6848, 6856, 6865, 6871, 6876, 6884, 6886, 6891, 6895, 6900, 6905, 6911, 6927, 6929, 6938, 6953, 6958, 6961, 6967, 6972, 6985, 6990, 6994, 7001, 7020, 7032, 7037, 7045, 7047, 7049, 7058, 7061, 7066, 7071, 7075, 7078, 7087, 7095, 7100, 7102, 7105, 7109, 7120, 7141, 7149, 7162, 7172, 7178, 7184, 7187, 7190, 7216, 7218, 7239, 7249, 7262, 7267, 7271, 7273, 7285, 7292, 7298, 7304, 7308, 7319, 7329, 7333, 7338, 7341, 7344, 7353, 7364, 7366, 7370, 7375, 7384, 7389, 7397, 7407, 7415, 7419, 7422, 7429, 7437, 7441, 7448, 7456, 7465, 7468, 7480, 7489, 7496, 7505, 7515, 7520, 7524, 7526, 7529, 7534, 7539, 7547, 7555, 7558, 7565, 7573, 7581, 7589, 7606, 7613, 7621, 7638, 7644, 7650, 7658, 7664, 7669, 7677, 7682, 7685, 7694, 7701, 7708, 7714, 7720, 7725, 7730, 7738, 7793, 7800, 7806, 7808, 7810, 7812, 7818, 7822, 7826, 7837, 7840, 7844, 7848, 7852, 7855, 7858, 7861, 7870, 7875, 7879, 7912, 7922, 7926, 7932, 7937, 7946, 7954, 7965, 7973, 7982, 7991, 7996, 8000, 8010, 8015, 8023, 8028, 8031, 8038, 8044, 8052, 8060, 8063, 8070, 8072, 8075, 8081, 8090, 8094, 8108, 8111, 8113, 8119, 8129, 8131, 8133, 8141, 8144, 8147, 8157, 8165, 8171, 8177, 8184, 8188, 8192, 8195, 8198, 8204, 8211, 8214, 8222, 8224, 8233, 8238, 8240, 8247, 8253, 8256, 8268, 8275, 8277, 8281, 8287, 8292, 8296, 8299, 8302, 8311, 8314, 8318, 8322, 8324, 8327, 8330, 8336, 8343, 8350, 8356, 8358, 8362, 8367, 8385, 8390, 8392, 8401, 8408, 8412, 8424, 8427, 8440, 8443, 8447, 8456, 8463, 8468, 8473, 8477, 8482, 8485, 8488, 8491, 8494, 8498, 8501] \ No newline at end of file +[4, 1, 590, 8496, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 1, 0, 5, 0, 934, 8, 0, 10, 0, 12, 0, 937, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 943, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1063, 8, 2, 3, 2, 1065, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 1074, 8, 4, 1, 4, 5, 4, 1077, 8, 4, 10, 4, 12, 4, 1080, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 1085, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1120, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1130, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1136, 8, 7, 1, 7, 5, 7, 1139, 8, 7, 10, 7, 12, 7, 1142, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1148, 8, 8, 1, 8, 5, 8, 1151, 8, 8, 10, 8, 12, 8, 1154, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1160, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1171, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 5, 11, 1177, 8, 11, 10, 11, 12, 11, 1180, 9, 11, 1, 11, 3, 11, 1183, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1195, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1201, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1207, 8, 12, 1, 12, 1, 12, 3, 12, 1211, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1216, 8, 12, 1, 12, 1, 12, 3, 12, 1220, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1233, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1243, 8, 12, 3, 12, 1245, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1251, 8, 13, 1, 13, 5, 13, 1254, 8, 13, 10, 13, 12, 13, 1257, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1269, 8, 15, 1, 15, 3, 15, 1272, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1277, 8, 15, 1, 15, 5, 15, 1280, 8, 15, 10, 15, 12, 15, 1283, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1293, 8, 17, 1, 18, 1, 18, 3, 18, 1297, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1309, 8, 19, 1, 20, 1, 20, 3, 20, 1313, 8, 20, 1, 20, 3, 20, 1316, 8, 20, 1, 20, 1, 20, 3, 20, 1320, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1332, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1350, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 1355, 8, 22, 10, 22, 12, 22, 1358, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 1363, 8, 23, 10, 23, 12, 23, 1366, 9, 23, 1, 24, 1, 24, 3, 24, 1370, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1377, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1385, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1391, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1399, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1407, 8, 28, 1, 29, 1, 29, 3, 29, 1411, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1425, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 1430, 8, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1435, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1447, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1453, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1465, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1470, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1480, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1486, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1491, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1499, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1504, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1511, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1516, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1521, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1531, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1536, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1541, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1548, 8, 38, 1, 38, 1, 38, 3, 38, 1552, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1566, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1572, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1578, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1583, 8, 38, 1, 39, 1, 39, 1, 39, 5, 39, 1588, 8, 39, 10, 39, 12, 39, 1591, 9, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1602, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1608, 8, 41, 10, 41, 12, 41, 1611, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1618, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1634, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1643, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 1650, 8, 46, 10, 46, 12, 46, 1653, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1661, 8, 46, 1, 46, 1, 46, 3, 46, 1665, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1677, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1685, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1695, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1715, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1720, 8, 46, 1, 46, 3, 46, 1723, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1730, 8, 46, 1, 46, 3, 46, 1733, 8, 46, 1, 46, 1, 46, 3, 46, 1737, 8, 46, 1, 46, 1, 46, 3, 46, 1741, 8, 46, 1, 46, 3, 46, 1744, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1749, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1754, 8, 46, 1, 46, 1, 46, 3, 46, 1758, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1767, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1773, 8, 46, 1, 46, 1, 46, 3, 46, 1777, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1786, 8, 46, 1, 46, 3, 46, 1789, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1795, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1804, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 1814, 8, 46, 11, 46, 12, 46, 1815, 1, 46, 1, 46, 3, 46, 1820, 8, 46, 1, 46, 1, 46, 3, 46, 1824, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1829, 8, 46, 1, 46, 3, 46, 1832, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1838, 8, 46, 4, 46, 1840, 8, 46, 11, 46, 12, 46, 1841, 1, 46, 1, 46, 3, 46, 1846, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1852, 8, 46, 1, 46, 1, 46, 3, 46, 1856, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1861, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1866, 8, 46, 1, 46, 1, 46, 3, 46, 1870, 8, 46, 1, 46, 3, 46, 1873, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1880, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1891, 8, 50, 10, 50, 12, 50, 1894, 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1906, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1918, 8, 53, 10, 53, 12, 53, 1921, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1937, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1945, 8, 54, 10, 54, 12, 54, 1948, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1954, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1959, 8, 55, 1, 55, 1, 55, 3, 55, 1963, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1970, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1975, 8, 55, 1, 55, 3, 55, 1978, 8, 55, 3, 55, 1980, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 1985, 8, 56, 1, 57, 1, 57, 3, 57, 1989, 8, 57, 1, 57, 1, 57, 3, 57, 1993, 8, 57, 1, 57, 1, 57, 3, 57, 1997, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2002, 8, 57, 1, 57, 3, 57, 2005, 8, 57, 1, 57, 1, 57, 3, 57, 2009, 8, 57, 1, 57, 3, 57, 2012, 8, 57, 1, 57, 1, 57, 3, 57, 2016, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2024, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2029, 8, 57, 1, 57, 3, 57, 2032, 8, 57, 1, 57, 1, 57, 3, 57, 2036, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2042, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2051, 8, 58, 1, 58, 1, 58, 3, 58, 2055, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2061, 8, 58, 10, 58, 12, 58, 2064, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2070, 8, 58, 10, 58, 12, 58, 2073, 9, 58, 1, 58, 1, 58, 3, 58, 2077, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2087, 8, 59, 10, 59, 12, 59, 2090, 9, 59, 1, 59, 1, 59, 3, 59, 2094, 8, 59, 1, 60, 1, 60, 3, 60, 2098, 8, 60, 1, 60, 1, 60, 3, 60, 2102, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2107, 8, 60, 1, 60, 1, 60, 3, 60, 2111, 8, 60, 1, 60, 3, 60, 2114, 8, 60, 1, 60, 3, 60, 2117, 8, 60, 1, 60, 3, 60, 2120, 8, 60, 1, 60, 3, 60, 2123, 8, 60, 1, 60, 3, 60, 2126, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2131, 8, 60, 1, 60, 3, 60, 2134, 8, 60, 1, 60, 3, 60, 2137, 8, 60, 1, 60, 3, 60, 2140, 8, 60, 1, 60, 3, 60, 2143, 8, 60, 1, 60, 3, 60, 2146, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2152, 8, 60, 1, 60, 1, 60, 3, 60, 2156, 8, 60, 1, 60, 3, 60, 2159, 8, 60, 1, 60, 3, 60, 2162, 8, 60, 1, 60, 3, 60, 2165, 8, 60, 1, 60, 3, 60, 2168, 8, 60, 3, 60, 2170, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2177, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2183, 8, 62, 10, 62, 12, 62, 2186, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 5, 63, 2193, 8, 63, 10, 63, 12, 63, 2196, 9, 63, 1, 64, 1, 64, 3, 64, 2200, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2208, 8, 64, 10, 64, 12, 64, 2211, 9, 64, 3, 64, 2213, 8, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2218, 8, 65, 1, 65, 5, 65, 2221, 8, 65, 10, 65, 12, 65, 2224, 9, 65, 1, 65, 1, 65, 3, 65, 2228, 8, 65, 1, 65, 3, 65, 2231, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 2236, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2245, 8, 66, 3, 66, 2247, 8, 66, 1, 66, 1, 66, 3, 66, 2251, 8, 66, 1, 66, 3, 66, 2254, 8, 66, 1, 66, 1, 66, 3, 66, 2258, 8, 66, 1, 66, 5, 66, 2261, 8, 66, 10, 66, 12, 66, 2264, 9, 66, 1, 67, 1, 67, 3, 67, 2268, 8, 67, 1, 67, 1, 67, 3, 67, 2272, 8, 67, 1, 67, 3, 67, 2275, 8, 67, 1, 67, 1, 67, 3, 67, 2279, 8, 67, 1, 68, 3, 68, 2282, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2287, 8, 68, 1, 68, 3, 68, 2290, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2295, 8, 68, 1, 68, 3, 68, 2298, 8, 68, 1, 68, 1, 68, 3, 68, 2302, 8, 68, 1, 68, 3, 68, 2305, 8, 68, 1, 68, 3, 68, 2308, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2313, 8, 68, 1, 68, 3, 68, 2316, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2324, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 2334, 8, 68, 11, 68, 12, 68, 2335, 1, 68, 1, 68, 3, 68, 2340, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2347, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2352, 8, 68, 1, 68, 3, 68, 2355, 8, 68, 1, 68, 3, 68, 2358, 8, 68, 1, 68, 3, 68, 2361, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2366, 8, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2375, 8, 71, 10, 71, 12, 71, 2378, 9, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2383, 8, 71, 1, 71, 1, 71, 3, 71, 2387, 8, 71, 1, 71, 3, 71, 2390, 8, 71, 1, 71, 3, 71, 2393, 8, 71, 1, 71, 5, 71, 2396, 8, 71, 10, 71, 12, 71, 2399, 9, 71, 1, 71, 1, 71, 5, 71, 2403, 8, 71, 10, 71, 12, 71, 2406, 9, 71, 3, 71, 2408, 8, 71, 1, 71, 1, 71, 3, 71, 2412, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2418, 8, 71, 10, 71, 12, 71, 2421, 9, 71, 1, 71, 1, 71, 3, 71, 2425, 8, 71, 1, 71, 3, 71, 2428, 8, 71, 1, 71, 3, 71, 2431, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2438, 8, 71, 1, 71, 5, 71, 2441, 8, 71, 10, 71, 12, 71, 2444, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2452, 8, 71, 1, 71, 3, 71, 2455, 8, 71, 1, 71, 3, 71, 2458, 8, 71, 1, 71, 5, 71, 2461, 8, 71, 10, 71, 12, 71, 2464, 9, 71, 3, 71, 2466, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2476, 8, 73, 10, 73, 12, 73, 2479, 9, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 2486, 8, 74, 10, 74, 12, 74, 2489, 9, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2505, 8, 77, 1, 78, 1, 78, 3, 78, 2509, 8, 78, 1, 78, 1, 78, 3, 78, 2513, 8, 78, 3, 78, 2515, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2532, 8, 81, 3, 81, 2534, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 2548, 8, 83, 10, 83, 12, 83, 2551, 9, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2561, 8, 84, 1, 84, 3, 84, 2564, 8, 84, 1, 84, 3, 84, 2567, 8, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2576, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2585, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 3, 91, 2601, 8, 91, 1, 91, 3, 91, 2604, 8, 91, 1, 91, 3, 91, 2607, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 2613, 8, 91, 10, 91, 12, 91, 2616, 9, 91, 1, 91, 3, 91, 2619, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 2626, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 2635, 8, 93, 1, 93, 1, 93, 3, 93, 2639, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2645, 8, 93, 1, 94, 1, 94, 3, 94, 2649, 8, 94, 1, 94, 3, 94, 2652, 8, 94, 1, 94, 3, 94, 2655, 8, 94, 1, 94, 3, 94, 2658, 8, 94, 1, 94, 3, 94, 2661, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2667, 8, 95, 1, 96, 1, 96, 3, 96, 2671, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2676, 8, 96, 1, 96, 1, 96, 3, 96, 2680, 8, 96, 1, 96, 3, 96, 2683, 8, 96, 1, 96, 3, 96, 2686, 8, 96, 1, 96, 3, 96, 2689, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2694, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2700, 8, 97, 1, 97, 1, 97, 3, 97, 2704, 8, 97, 1, 98, 1, 98, 3, 98, 2708, 8, 98, 1, 98, 1, 98, 3, 98, 2712, 8, 98, 1, 98, 1, 98, 4, 98, 2716, 8, 98, 11, 98, 12, 98, 2717, 3, 98, 2720, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 2725, 8, 99, 1, 99, 1, 99, 4, 99, 2729, 8, 99, 11, 99, 12, 99, 2730, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2737, 8, 100, 1, 100, 1, 100, 3, 100, 2741, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2756, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2761, 8, 100, 1, 100, 3, 100, 2764, 8, 100, 3, 100, 2766, 8, 100, 1, 101, 3, 101, 2769, 8, 101, 1, 101, 1, 101, 3, 101, 2773, 8, 101, 1, 102, 1, 102, 3, 102, 2777, 8, 102, 1, 102, 3, 102, 2780, 8, 102, 1, 102, 3, 102, 2783, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2791, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2797, 8, 102, 3, 102, 2799, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2805, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2810, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2815, 8, 104, 1, 104, 1, 104, 3, 104, 2819, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 2826, 8, 104, 10, 104, 12, 104, 2829, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 2837, 8, 105, 10, 105, 12, 105, 2840, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2878, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 4, 107, 2886, 8, 107, 11, 107, 12, 107, 2887, 3, 107, 2890, 8, 107, 1, 107, 3, 107, 2893, 8, 107, 1, 108, 1, 108, 3, 108, 2897, 8, 108, 1, 108, 1, 108, 3, 108, 2901, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 4, 109, 2909, 8, 109, 11, 109, 12, 109, 2910, 3, 109, 2913, 8, 109, 1, 109, 1, 109, 4, 109, 2917, 8, 109, 11, 109, 12, 109, 2918, 3, 109, 2921, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 5, 110, 2928, 8, 110, 10, 110, 12, 110, 2931, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2940, 8, 111, 10, 111, 12, 111, 2943, 9, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 2956, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2961, 8, 114, 1, 114, 3, 114, 2964, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2971, 8, 114, 1, 115, 1, 115, 1, 115, 3, 115, 2976, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2984, 8, 116, 3, 116, 2986, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2992, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2997, 8, 117, 1, 117, 1, 117, 3, 117, 3001, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3006, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3012, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3019, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3025, 8, 117, 3, 117, 3027, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3036, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3042, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3050, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3056, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3061, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3066, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3074, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3089, 8, 121, 3, 121, 3091, 8, 121, 1, 121, 1, 121, 3, 121, 3095, 8, 121, 1, 121, 1, 121, 3, 121, 3099, 8, 121, 1, 121, 3, 121, 3102, 8, 121, 1, 121, 3, 121, 3105, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3114, 8, 122, 1, 122, 3, 122, 3117, 8, 122, 1, 122, 3, 122, 3120, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3126, 8, 123, 1, 123, 1, 123, 5, 123, 3130, 8, 123, 10, 123, 12, 123, 3133, 9, 123, 1, 123, 3, 123, 3136, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3148, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3154, 8, 123, 1, 124, 3, 124, 3157, 8, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3162, 8, 124, 1, 124, 1, 124, 3, 124, 3166, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3173, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3183, 8, 124, 3, 124, 3185, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 3209, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3221, 8, 128, 1, 128, 4, 128, 3224, 8, 128, 11, 128, 12, 128, 3225, 3, 128, 3228, 8, 128, 1, 128, 1, 128, 3, 128, 3232, 8, 128, 1, 128, 3, 128, 3235, 8, 128, 1, 128, 3, 128, 3238, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3248, 8, 128, 1, 128, 3, 128, 3251, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3261, 8, 128, 1, 128, 5, 128, 3264, 8, 128, 10, 128, 12, 128, 3267, 9, 128, 1, 128, 1, 128, 3, 128, 3271, 8, 128, 1, 128, 3, 128, 3274, 8, 128, 1, 128, 3, 128, 3277, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3285, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3291, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 3296, 8, 130, 10, 130, 12, 130, 3299, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3306, 8, 131, 1, 131, 3, 131, 3309, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3320, 8, 133, 1, 134, 1, 134, 3, 134, 3324, 8, 134, 1, 134, 1, 134, 5, 134, 3328, 8, 134, 10, 134, 12, 134, 3331, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3337, 8, 135, 1, 136, 3, 136, 3340, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3349, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 5, 137, 3361, 8, 137, 10, 137, 12, 137, 3364, 9, 137, 3, 137, 3366, 8, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 5, 138, 3378, 8, 138, 10, 138, 12, 138, 3381, 9, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3391, 8, 139, 1, 139, 3, 139, 3394, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 3404, 8, 140, 10, 140, 12, 140, 3407, 9, 140, 1, 141, 1, 141, 3, 141, 3411, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3422, 8, 141, 10, 141, 12, 141, 3425, 9, 141, 1, 141, 1, 141, 3, 141, 3429, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3442, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3449, 8, 141, 10, 141, 12, 141, 3452, 9, 141, 3, 141, 3454, 8, 141, 1, 141, 3, 141, 3457, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3464, 8, 141, 1, 141, 3, 141, 3467, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3479, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3485, 8, 141, 3, 141, 3487, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 3493, 8, 142, 10, 142, 12, 142, 3496, 9, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3503, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3511, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3523, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3528, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3539, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3550, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3558, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 3564, 8, 148, 10, 148, 12, 148, 3567, 9, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3573, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3580, 8, 149, 3, 149, 3582, 8, 149, 1, 149, 3, 149, 3585, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3590, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3595, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3612, 8, 151, 10, 151, 12, 151, 3615, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3621, 8, 151, 10, 151, 12, 151, 3624, 9, 151, 3, 151, 3626, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3653, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3662, 8, 154, 1, 154, 3, 154, 3665, 8, 154, 1, 154, 1, 154, 3, 154, 3669, 8, 154, 1, 154, 1, 154, 3, 154, 3673, 8, 154, 1, 154, 1, 154, 3, 154, 3677, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3682, 8, 154, 10, 154, 12, 154, 3685, 9, 154, 1, 154, 3, 154, 3688, 8, 154, 1, 154, 1, 154, 3, 154, 3692, 8, 154, 1, 154, 1, 154, 3, 154, 3696, 8, 154, 1, 154, 1, 154, 3, 154, 3700, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3705, 8, 154, 1, 154, 1, 154, 3, 154, 3709, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3714, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3720, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3725, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3730, 8, 154, 10, 154, 12, 154, 3733, 9, 154, 1, 154, 3, 154, 3736, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3742, 8, 154, 1, 154, 1, 154, 3, 154, 3746, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3751, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3759, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3765, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3770, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3777, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3782, 8, 154, 1, 154, 1, 154, 3, 154, 3786, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3791, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3797, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3804, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3809, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3816, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3821, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3828, 8, 154, 1, 154, 1, 154, 3, 154, 3832, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3838, 8, 154, 10, 154, 12, 154, 3841, 9, 154, 1, 154, 3, 154, 3844, 8, 154, 3, 154, 3846, 8, 154, 1, 155, 3, 155, 3849, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3854, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3864, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3879, 8, 156, 1, 156, 3, 156, 3882, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3890, 8, 156, 1, 157, 1, 157, 1, 157, 5, 157, 3895, 8, 157, 10, 157, 12, 157, 3898, 9, 157, 1, 158, 1, 158, 3, 158, 3902, 8, 158, 1, 159, 1, 159, 4, 159, 3906, 8, 159, 11, 159, 12, 159, 3907, 1, 160, 1, 160, 3, 160, 3912, 8, 160, 1, 160, 1, 160, 1, 160, 5, 160, 3917, 8, 160, 10, 160, 12, 160, 3920, 9, 160, 1, 160, 1, 160, 3, 160, 3924, 8, 160, 1, 160, 3, 160, 3927, 8, 160, 1, 161, 3, 161, 3930, 8, 161, 1, 161, 1, 161, 3, 161, 3934, 8, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3943, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3961, 8, 162, 1, 162, 3, 162, 3964, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3996, 8, 162, 1, 162, 1, 162, 1, 162, 3, 162, 4001, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4007, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4027, 8, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4032, 8, 163, 1, 164, 1, 164, 1, 164, 1, 165, 3, 165, 4038, 8, 165, 1, 165, 3, 165, 4041, 8, 165, 1, 165, 1, 165, 3, 165, 4045, 8, 165, 1, 165, 1, 165, 3, 165, 4049, 8, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4055, 8, 165, 1, 165, 3, 165, 4058, 8, 165, 1, 165, 1, 165, 3, 165, 4062, 8, 165, 1, 165, 1, 165, 3, 165, 4066, 8, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4071, 8, 165, 1, 165, 3, 165, 4074, 8, 165, 1, 165, 3, 165, 4077, 8, 165, 1, 165, 3, 165, 4080, 8, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 4093, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4099, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4107, 8, 168, 1, 169, 1, 169, 1, 169, 5, 169, 4112, 8, 169, 10, 169, 12, 169, 4115, 9, 169, 1, 169, 1, 169, 3, 169, 4119, 8, 169, 1, 169, 3, 169, 4122, 8, 169, 1, 169, 1, 169, 1, 169, 5, 169, 4127, 8, 169, 10, 169, 12, 169, 4130, 9, 169, 3, 169, 4132, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 4140, 8, 171, 1, 171, 3, 171, 4143, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 4148, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4155, 8, 172, 1, 172, 3, 172, 4158, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 4176, 8, 172, 10, 172, 12, 172, 4179, 9, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4190, 8, 172, 1, 173, 3, 173, 4193, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4199, 8, 173, 1, 173, 5, 173, 4202, 8, 173, 10, 173, 12, 173, 4205, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4211, 8, 174, 10, 174, 12, 174, 4214, 9, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4221, 8, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4226, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4232, 8, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4237, 8, 175, 10, 175, 12, 175, 4240, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4247, 8, 175, 1, 175, 3, 175, 4250, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4261, 8, 176, 10, 176, 12, 176, 4264, 9, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4277, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4283, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4291, 8, 177, 3, 177, 4293, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 4299, 8, 179, 1, 179, 1, 179, 3, 179, 4303, 8, 179, 1, 179, 3, 179, 4306, 8, 179, 1, 179, 3, 179, 4309, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4314, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4319, 8, 179, 1, 179, 1, 179, 3, 179, 4323, 8, 179, 1, 179, 3, 179, 4326, 8, 179, 1, 179, 3, 179, 4329, 8, 179, 1, 179, 3, 179, 4332, 8, 179, 1, 179, 3, 179, 4335, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 4341, 8, 180, 10, 180, 12, 180, 4344, 9, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4354, 8, 181, 1, 181, 3, 181, 4357, 8, 181, 1, 181, 3, 181, 4360, 8, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4365, 8, 181, 1, 181, 3, 181, 4368, 8, 181, 1, 181, 1, 181, 3, 181, 4372, 8, 181, 1, 182, 1, 182, 3, 182, 4376, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4382, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4388, 8, 182, 10, 182, 12, 182, 4391, 9, 182, 3, 182, 4393, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4404, 8, 182, 10, 182, 12, 182, 4407, 9, 182, 1, 182, 1, 182, 3, 182, 4411, 8, 182, 3, 182, 4413, 8, 182, 1, 182, 4, 182, 4416, 8, 182, 11, 182, 12, 182, 4417, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4425, 8, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 3, 184, 4432, 8, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 5, 185, 4439, 8, 185, 10, 185, 12, 185, 4442, 9, 185, 1, 186, 1, 186, 1, 186, 5, 186, 4447, 8, 186, 10, 186, 12, 186, 4450, 9, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 4457, 8, 187, 1, 188, 1, 188, 1, 188, 5, 188, 4462, 8, 188, 10, 188, 12, 188, 4465, 9, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4472, 8, 189, 1, 190, 1, 190, 1, 190, 5, 190, 4477, 8, 190, 10, 190, 12, 190, 4480, 9, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4487, 8, 191, 1, 192, 1, 192, 3, 192, 4491, 8, 192, 1, 192, 1, 192, 3, 192, 4495, 8, 192, 3, 192, 4497, 8, 192, 1, 192, 1, 192, 1, 193, 1, 193, 3, 193, 4503, 8, 193, 1, 193, 1, 193, 1, 193, 3, 193, 4508, 8, 193, 1, 194, 1, 194, 3, 194, 4512, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4519, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 4524, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 4529, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4534, 8, 196, 3, 196, 4536, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 4546, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4556, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4572, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 4588, 8, 199, 10, 199, 12, 199, 4591, 9, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4602, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4609, 8, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4624, 8, 202, 1, 202, 4, 202, 4627, 8, 202, 11, 202, 12, 202, 4628, 1, 202, 3, 202, 4632, 8, 202, 1, 203, 1, 203, 1, 203, 3, 203, 4637, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4642, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4647, 8, 203, 1, 203, 3, 203, 4650, 8, 203, 1, 203, 3, 203, 4653, 8, 203, 1, 204, 1, 204, 1, 204, 3, 204, 4658, 8, 204, 1, 204, 1, 204, 1, 204, 5, 204, 4663, 8, 204, 10, 204, 12, 204, 4666, 9, 204, 1, 204, 3, 204, 4669, 8, 204, 1, 205, 1, 205, 1, 205, 3, 205, 4674, 8, 205, 1, 205, 1, 205, 1, 205, 5, 205, 4679, 8, 205, 10, 205, 12, 205, 4682, 9, 205, 1, 205, 3, 205, 4685, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4691, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4700, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 5, 207, 4707, 8, 207, 10, 207, 12, 207, 4710, 9, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 4, 209, 4721, 8, 209, 11, 209, 12, 209, 4722, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4736, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4742, 8, 210, 1, 210, 1, 210, 3, 210, 4746, 8, 210, 3, 210, 4748, 8, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 3, 212, 4755, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4768, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4775, 8, 212, 3, 212, 4777, 8, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 4791, 8, 214, 10, 214, 12, 214, 4794, 9, 214, 1, 214, 3, 214, 4797, 8, 214, 1, 214, 1, 214, 3, 214, 4801, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4806, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4811, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4816, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4821, 8, 214, 1, 214, 3, 214, 4824, 8, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4836, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4889, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4898, 8, 216, 1, 216, 1, 216, 3, 216, 4902, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4911, 8, 216, 1, 216, 1, 216, 3, 216, 4915, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4924, 8, 216, 1, 216, 1, 216, 3, 216, 4928, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4933, 8, 216, 1, 216, 3, 216, 4936, 8, 216, 1, 216, 1, 216, 3, 216, 4940, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4945, 8, 216, 3, 216, 4947, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4956, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4961, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4972, 8, 216, 1, 216, 1, 216, 3, 216, 4976, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4990, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4998, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5036, 8, 216, 3, 216, 5038, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 5057, 8, 217, 1, 217, 3, 217, 5060, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5087, 8, 218, 1, 218, 1, 218, 3, 218, 5091, 8, 218, 1, 218, 1, 218, 3, 218, 5095, 8, 218, 1, 218, 1, 218, 3, 218, 5099, 8, 218, 1, 218, 1, 218, 3, 218, 5103, 8, 218, 1, 218, 3, 218, 5106, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5121, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5128, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 5140, 8, 220, 10, 220, 12, 220, 5143, 9, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5155, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5180, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5199, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5214, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5230, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5237, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 5248, 8, 224, 1, 224, 3, 224, 5251, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5268, 8, 225, 10, 225, 12, 225, 5271, 9, 225, 3, 225, 5273, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 5284, 8, 226, 10, 226, 12, 226, 5287, 9, 226, 1, 226, 3, 226, 5290, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5310, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5320, 8, 227, 10, 227, 12, 227, 5323, 9, 227, 1, 227, 3, 227, 5326, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5348, 8, 227, 1, 228, 1, 228, 3, 228, 5352, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5362, 8, 228, 1, 228, 1, 228, 3, 228, 5366, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5372, 8, 228, 1, 228, 1, 228, 3, 228, 5376, 8, 228, 5, 228, 5378, 8, 228, 10, 228, 12, 228, 5381, 9, 228, 1, 228, 3, 228, 5384, 8, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 5391, 8, 229, 1, 230, 1, 230, 1, 230, 3, 230, 5396, 8, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 3, 233, 5407, 8, 233, 1, 234, 1, 234, 3, 234, 5411, 8, 234, 1, 234, 3, 234, 5414, 8, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5419, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5425, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5436, 8, 234, 1, 234, 1, 234, 3, 234, 5440, 8, 234, 1, 234, 3, 234, 5443, 8, 234, 1, 234, 1, 234, 3, 234, 5447, 8, 234, 1, 234, 1, 234, 3, 234, 5451, 8, 234, 1, 234, 3, 234, 5454, 8, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5464, 8, 236, 1, 236, 3, 236, 5467, 8, 236, 1, 237, 1, 237, 3, 237, 5471, 8, 237, 1, 237, 5, 237, 5474, 8, 237, 10, 237, 12, 237, 5477, 9, 237, 1, 238, 1, 238, 1, 238, 3, 238, 5482, 8, 238, 1, 238, 3, 238, 5485, 8, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5490, 8, 238, 1, 238, 3, 238, 5493, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5500, 8, 238, 3, 238, 5502, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5508, 8, 238, 1, 238, 1, 238, 3, 238, 5512, 8, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5521, 8, 240, 1, 240, 4, 240, 5524, 8, 240, 11, 240, 12, 240, 5525, 3, 240, 5528, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5538, 8, 241, 1, 241, 3, 241, 5541, 8, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5546, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5554, 8, 242, 1, 242, 3, 242, 5557, 8, 242, 1, 242, 4, 242, 5560, 8, 242, 11, 242, 12, 242, 5561, 3, 242, 5564, 8, 242, 3, 242, 5566, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 5572, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5589, 8, 246, 1, 246, 1, 246, 5, 246, 5593, 8, 246, 10, 246, 12, 246, 5596, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5608, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5614, 8, 247, 1, 247, 1, 247, 3, 247, 5618, 8, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5623, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5653, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5668, 8, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5673, 8, 249, 1, 250, 1, 250, 3, 250, 5677, 8, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 3, 251, 5690, 8, 251, 1, 251, 1, 251, 3, 251, 5694, 8, 251, 3, 251, 5696, 8, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 5703, 8, 251, 10, 251, 12, 251, 5706, 9, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5711, 8, 251, 3, 251, 5713, 8, 251, 1, 252, 1, 252, 3, 252, 5717, 8, 252, 1, 252, 3, 252, 5720, 8, 252, 1, 252, 3, 252, 5723, 8, 252, 1, 252, 3, 252, 5726, 8, 252, 1, 252, 3, 252, 5729, 8, 252, 3, 252, 5731, 8, 252, 1, 252, 3, 252, 5734, 8, 252, 1, 253, 1, 253, 3, 253, 5738, 8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 5, 253, 5744, 8, 253, 10, 253, 12, 253, 5747, 9, 253, 1, 253, 1, 253, 3, 253, 5751, 8, 253, 1, 253, 3, 253, 5754, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 3, 255, 5760, 8, 255, 1, 255, 1, 255, 3, 255, 5764, 8, 255, 1, 256, 1, 256, 3, 256, 5768, 8, 256, 1, 256, 1, 256, 1, 256, 3, 256, 5773, 8, 256, 3, 256, 5775, 8, 256, 1, 257, 1, 257, 3, 257, 5779, 8, 257, 1, 258, 1, 258, 3, 258, 5783, 8, 258, 1, 259, 1, 259, 1, 259, 5, 259, 5788, 8, 259, 10, 259, 12, 259, 5791, 9, 259, 1, 260, 1, 260, 1, 260, 3, 260, 5796, 8, 260, 1, 260, 1, 260, 3, 260, 5800, 8, 260, 3, 260, 5802, 8, 260, 3, 260, 5804, 8, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5817, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 5823, 8, 262, 10, 262, 12, 262, 5826, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 3, 263, 5833, 8, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 5, 264, 5842, 8, 264, 10, 264, 12, 264, 5845, 9, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 5853, 8, 265, 1, 266, 1, 266, 1, 266, 3, 266, 5858, 8, 266, 1, 266, 1, 266, 3, 266, 5862, 8, 266, 1, 266, 1, 266, 3, 266, 5866, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 5873, 8, 266, 1, 266, 3, 266, 5876, 8, 266, 3, 266, 5878, 8, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 5886, 8, 268, 1, 268, 1, 268, 3, 268, 5890, 8, 268, 1, 269, 3, 269, 5893, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5900, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5907, 8, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5912, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5919, 8, 269, 1, 269, 3, 269, 5922, 8, 269, 3, 269, 5924, 8, 269, 1, 269, 3, 269, 5927, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5933, 8, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5938, 8, 270, 1, 270, 1, 270, 3, 270, 5942, 8, 270, 1, 271, 1, 271, 1, 271, 5, 271, 5947, 8, 271, 10, 271, 12, 271, 5950, 9, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 3, 274, 5959, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5966, 8, 274, 1, 274, 3, 274, 5969, 8, 274, 1, 274, 3, 274, 5972, 8, 274, 1, 275, 1, 275, 3, 275, 5976, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 5987, 8, 275, 1, 275, 3, 275, 5990, 8, 275, 1, 275, 3, 275, 5993, 8, 275, 1, 275, 3, 275, 5996, 8, 275, 1, 276, 3, 276, 5999, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6006, 8, 276, 1, 276, 3, 276, 6009, 8, 276, 1, 276, 3, 276, 6012, 8, 276, 1, 277, 1, 277, 1, 277, 5, 277, 6017, 8, 277, 10, 277, 12, 277, 6020, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6031, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6038, 8, 278, 3, 278, 6040, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 6045, 8, 279, 1, 279, 1, 279, 1, 279, 5, 279, 6050, 8, 279, 10, 279, 12, 279, 6053, 9, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6058, 8, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 6065, 8, 280, 1, 281, 1, 281, 1, 281, 3, 281, 6070, 8, 281, 1, 281, 1, 281, 1, 282, 3, 282, 6075, 8, 282, 1, 282, 1, 282, 3, 282, 6079, 8, 282, 1, 282, 1, 282, 3, 282, 6083, 8, 282, 1, 282, 1, 282, 3, 282, 6087, 8, 282, 3, 282, 6089, 8, 282, 1, 283, 1, 283, 3, 283, 6093, 8, 283, 1, 284, 1, 284, 3, 284, 6097, 8, 284, 1, 284, 3, 284, 6100, 8, 284, 1, 284, 3, 284, 6103, 8, 284, 3, 284, 6105, 8, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6115, 8, 284, 3, 284, 6117, 8, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6122, 8, 284, 5, 284, 6124, 8, 284, 10, 284, 12, 284, 6127, 9, 284, 1, 285, 1, 285, 3, 285, 6131, 8, 285, 1, 286, 1, 286, 3, 286, 6135, 8, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6140, 8, 286, 10, 286, 12, 286, 6143, 9, 286, 1, 287, 1, 287, 3, 287, 6147, 8, 287, 1, 287, 1, 287, 3, 287, 6151, 8, 287, 1, 287, 3, 287, 6154, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 6160, 8, 287, 1, 287, 3, 287, 6163, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6182, 8, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 3, 290, 6189, 8, 290, 1, 290, 1, 290, 3, 290, 6193, 8, 290, 1, 291, 3, 291, 6196, 8, 291, 1, 291, 1, 291, 3, 291, 6200, 8, 291, 1, 291, 1, 291, 3, 291, 6204, 8, 291, 1, 291, 3, 291, 6207, 8, 291, 1, 291, 3, 291, 6210, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6215, 8, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 5, 293, 6222, 8, 293, 10, 293, 12, 293, 6225, 9, 293, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6231, 8, 294, 1, 294, 1, 294, 3, 294, 6235, 8, 294, 1, 295, 1, 295, 3, 295, 6239, 8, 295, 1, 295, 1, 295, 3, 295, 6243, 8, 295, 1, 295, 3, 295, 6246, 8, 295, 3, 295, 6248, 8, 295, 1, 296, 1, 296, 1, 296, 3, 296, 6253, 8, 296, 1, 296, 1, 296, 3, 296, 6257, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6262, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6268, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6275, 8, 298, 1, 299, 1, 299, 1, 299, 3, 299, 6280, 8, 299, 1, 300, 1, 300, 1, 300, 3, 300, 6285, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 5, 301, 6292, 8, 301, 10, 301, 12, 301, 6295, 9, 301, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6301, 8, 302, 1, 302, 1, 302, 1, 302, 1, 302, 5, 302, 6307, 8, 302, 10, 302, 12, 302, 6310, 9, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6320, 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6325, 8, 303, 1, 303, 1, 303, 3, 303, 6329, 8, 303, 1, 303, 3, 303, 6332, 8, 303, 1, 303, 1, 303, 3, 303, 6336, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6341, 8, 303, 4, 303, 6343, 8, 303, 11, 303, 12, 303, 6344, 1, 303, 1, 303, 1, 303, 3, 303, 6350, 8, 303, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6356, 8, 304, 10, 304, 12, 304, 6359, 9, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 6367, 8, 306, 10, 306, 12, 306, 6370, 9, 306, 1, 307, 1, 307, 3, 307, 6374, 8, 307, 1, 307, 1, 307, 3, 307, 6378, 8, 307, 1, 307, 3, 307, 6381, 8, 307, 1, 307, 3, 307, 6384, 8, 307, 3, 307, 6386, 8, 307, 1, 307, 3, 307, 6389, 8, 307, 1, 307, 3, 307, 6392, 8, 307, 1, 307, 3, 307, 6395, 8, 307, 1, 307, 1, 307, 3, 307, 6399, 8, 307, 1, 307, 1, 307, 3, 307, 6403, 8, 307, 1, 307, 1, 307, 3, 307, 6407, 8, 307, 3, 307, 6409, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6418, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6423, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6429, 8, 307, 1, 307, 1, 307, 3, 307, 6433, 8, 307, 3, 307, 6435, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6442, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6447, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 5, 307, 6453, 8, 307, 10, 307, 12, 307, 6456, 9, 307, 1, 308, 3, 308, 6459, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6466, 8, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6471, 8, 309, 1, 309, 3, 309, 6474, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 6480, 8, 309, 1, 310, 1, 310, 3, 310, 6484, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6490, 8, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6499, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6505, 8, 312, 3, 312, 6507, 8, 312, 1, 313, 1, 313, 1, 313, 3, 313, 6512, 8, 313, 1, 313, 3, 313, 6515, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6524, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6531, 8, 313, 3, 313, 6533, 8, 313, 1, 314, 1, 314, 1, 314, 5, 314, 6538, 8, 314, 10, 314, 12, 314, 6541, 9, 314, 1, 315, 1, 315, 3, 315, 6545, 8, 315, 1, 315, 3, 315, 6548, 8, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 3, 316, 6558, 8, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 5, 317, 6567, 8, 317, 10, 317, 12, 317, 6570, 9, 317, 1, 317, 1, 317, 3, 317, 6574, 8, 317, 1, 317, 1, 317, 3, 317, 6578, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 6586, 8, 318, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 6596, 8, 320, 1, 321, 1, 321, 1, 321, 5, 321, 6601, 8, 321, 10, 321, 12, 321, 6604, 9, 321, 1, 322, 1, 322, 1, 322, 3, 322, 6609, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6618, 8, 323, 10, 323, 12, 323, 6621, 9, 323, 1, 323, 1, 323, 1, 323, 3, 323, 6626, 8, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6634, 8, 323, 10, 323, 12, 323, 6637, 9, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 3, 324, 6645, 8, 324, 1, 324, 1, 324, 3, 324, 6649, 8, 324, 1, 324, 4, 324, 6652, 8, 324, 11, 324, 12, 324, 6653, 3, 324, 6656, 8, 324, 1, 324, 1, 324, 3, 324, 6660, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 6668, 8, 325, 1, 326, 3, 326, 6671, 8, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6676, 8, 326, 1, 326, 5, 326, 6679, 8, 326, 10, 326, 12, 326, 6682, 9, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6688, 8, 326, 3, 326, 6690, 8, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6696, 8, 326, 1, 327, 1, 327, 3, 327, 6700, 8, 327, 1, 327, 3, 327, 6703, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6708, 8, 327, 1, 327, 3, 327, 6711, 8, 327, 3, 327, 6713, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 6719, 8, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6728, 8, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6734, 8, 329, 1, 329, 3, 329, 6737, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 3, 331, 6745, 8, 331, 1, 331, 3, 331, 6748, 8, 331, 1, 332, 1, 332, 3, 332, 6752, 8, 332, 1, 332, 1, 332, 1, 332, 1, 332, 3, 332, 6758, 8, 332, 3, 332, 6760, 8, 332, 1, 332, 3, 332, 6763, 8, 332, 1, 333, 1, 333, 3, 333, 6767, 8, 333, 1, 333, 1, 333, 1, 333, 3, 333, 6772, 8, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6779, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6786, 8, 334, 3, 334, 6788, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6794, 8, 334, 3, 334, 6796, 8, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6801, 8, 334, 3, 334, 6803, 8, 334, 1, 335, 1, 335, 3, 335, 6807, 8, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 3, 338, 6816, 8, 338, 1, 338, 1, 338, 3, 338, 6820, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 5, 338, 6828, 8, 338, 10, 338, 12, 338, 6831, 9, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6844, 8, 339, 1, 339, 3, 339, 6847, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6855, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 5, 339, 6862, 8, 339, 10, 339, 12, 339, 6865, 9, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6870, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6875, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6883, 8, 339, 3, 339, 6885, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6890, 8, 339, 1, 339, 1, 339, 3, 339, 6894, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6899, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6904, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6910, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 5, 340, 6926, 8, 340, 10, 340, 12, 340, 6929, 9, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6937, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6952, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6957, 8, 341, 1, 341, 3, 341, 6960, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6966, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6971, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6984, 8, 341, 1, 341, 4, 341, 6987, 8, 341, 11, 341, 12, 341, 6988, 1, 341, 1, 341, 3, 341, 6993, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7000, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7019, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7031, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7036, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7044, 8, 341, 5, 341, 7046, 8, 341, 10, 341, 12, 341, 7049, 9, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7057, 8, 342, 1, 342, 3, 342, 7060, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7065, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7070, 8, 342, 1, 342, 1, 342, 3, 342, 7074, 8, 342, 1, 342, 3, 342, 7077, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7086, 8, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7094, 8, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7099, 8, 343, 3, 343, 7101, 8, 343, 1, 343, 3, 343, 7104, 8, 343, 1, 344, 1, 344, 3, 344, 7108, 8, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7119, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7140, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7148, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7161, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7171, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7177, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7183, 8, 345, 1, 345, 3, 345, 7186, 8, 345, 1, 345, 3, 345, 7189, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7215, 8, 345, 3, 345, 7217, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7238, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7248, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7261, 8, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7266, 8, 345, 1, 345, 1, 345, 3, 345, 7270, 8, 345, 3, 345, 7272, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7284, 8, 345, 1, 346, 1, 346, 1, 346, 5, 346, 7289, 8, 346, 10, 346, 12, 346, 7292, 9, 346, 1, 347, 1, 347, 1, 347, 3, 347, 7297, 8, 347, 1, 348, 1, 348, 1, 349, 1, 349, 3, 349, 7303, 8, 349, 1, 349, 1, 349, 3, 349, 7307, 8, 349, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 5, 351, 7316, 8, 351, 10, 351, 12, 351, 7319, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7328, 8, 353, 1, 354, 1, 354, 3, 354, 7332, 8, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7337, 8, 354, 1, 354, 3, 354, 7340, 8, 354, 1, 354, 3, 354, 7343, 8, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7352, 8, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7363, 8, 355, 3, 355, 7365, 8, 355, 1, 356, 1, 356, 3, 356, 7369, 8, 356, 1, 356, 1, 356, 1, 356, 3, 356, 7374, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 7383, 8, 357, 1, 358, 1, 358, 1, 358, 3, 358, 7388, 8, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 7396, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7406, 8, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7414, 8, 363, 1, 364, 1, 364, 3, 364, 7418, 8, 364, 1, 364, 3, 364, 7421, 8, 364, 1, 365, 1, 365, 1, 365, 5, 365, 7426, 8, 365, 10, 365, 12, 365, 7429, 9, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7436, 8, 366, 1, 367, 1, 367, 3, 367, 7440, 8, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7445, 8, 368, 10, 368, 12, 368, 7448, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 3, 369, 7455, 8, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7462, 8, 370, 10, 370, 12, 370, 7465, 9, 370, 3, 370, 7467, 8, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 3, 371, 7479, 8, 371, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7488, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7495, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7504, 8, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 3, 375, 7514, 8, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7519, 8, 375, 1, 375, 1, 375, 3, 375, 7523, 8, 375, 3, 375, 7525, 8, 375, 1, 375, 3, 375, 7528, 8, 375, 1, 376, 4, 376, 7531, 8, 376, 11, 376, 12, 376, 7532, 1, 377, 5, 377, 7536, 8, 377, 10, 377, 12, 377, 7539, 9, 377, 1, 378, 1, 378, 1, 378, 5, 378, 7544, 8, 378, 10, 378, 12, 378, 7547, 9, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 3, 379, 7554, 8, 379, 1, 379, 3, 379, 7557, 8, 379, 1, 380, 1, 380, 1, 380, 5, 380, 7562, 8, 380, 10, 380, 12, 380, 7565, 9, 380, 1, 381, 1, 381, 1, 381, 5, 381, 7570, 8, 381, 10, 381, 12, 381, 7573, 9, 381, 1, 382, 1, 382, 1, 382, 5, 382, 7578, 8, 382, 10, 382, 12, 382, 7581, 9, 382, 1, 383, 1, 383, 1, 383, 5, 383, 7586, 8, 383, 10, 383, 12, 383, 7589, 9, 383, 1, 384, 1, 384, 1, 385, 1, 385, 1, 386, 1, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 389, 1, 389, 1, 390, 1, 390, 3, 390, 7605, 8, 390, 1, 391, 1, 391, 1, 391, 5, 391, 7610, 8, 391, 10, 391, 12, 391, 7613, 9, 391, 1, 392, 1, 392, 1, 392, 5, 392, 7618, 8, 392, 10, 392, 12, 392, 7621, 9, 392, 1, 393, 1, 393, 1, 394, 1, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7637, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 7643, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7649, 8, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7657, 8, 402, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7663, 8, 403, 1, 404, 1, 404, 1, 404, 3, 404, 7668, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 5, 405, 7674, 8, 405, 10, 405, 12, 405, 7677, 9, 405, 1, 405, 1, 405, 3, 405, 7681, 8, 405, 1, 406, 3, 406, 7684, 8, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7693, 8, 407, 1, 408, 1, 408, 1, 408, 5, 408, 7698, 8, 408, 10, 408, 12, 408, 7701, 9, 408, 1, 409, 1, 409, 3, 409, 7705, 8, 409, 1, 410, 1, 410, 3, 410, 7709, 8, 410, 1, 411, 1, 411, 1, 411, 3, 411, 7714, 8, 411, 1, 412, 1, 412, 1, 412, 1, 412, 3, 412, 7720, 8, 412, 1, 413, 1, 413, 1, 413, 3, 413, 7725, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7733, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 7788, 8, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 3, 418, 7795, 8, 418, 1, 418, 1, 418, 1, 418, 1, 418, 4, 418, 7801, 8, 418, 11, 418, 12, 418, 7802, 3, 418, 7805, 8, 418, 3, 418, 7807, 8, 418, 1, 418, 1, 418, 5, 418, 7811, 8, 418, 10, 418, 12, 418, 7814, 9, 418, 1, 418, 3, 418, 7817, 8, 418, 1, 418, 1, 418, 3, 418, 7821, 8, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 3, 420, 7832, 8, 420, 1, 420, 3, 420, 7835, 8, 420, 1, 420, 1, 420, 3, 420, 7839, 8, 420, 1, 420, 1, 420, 3, 420, 7843, 8, 420, 1, 420, 1, 420, 3, 420, 7847, 8, 420, 1, 420, 3, 420, 7850, 8, 420, 1, 420, 3, 420, 7853, 8, 420, 1, 420, 3, 420, 7856, 8, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 5, 420, 7863, 8, 420, 10, 420, 12, 420, 7866, 9, 420, 1, 420, 1, 420, 3, 420, 7870, 8, 420, 1, 420, 1, 420, 3, 420, 7874, 8, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 3, 423, 7907, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7917, 8, 425, 1, 425, 1, 425, 3, 425, 7921, 8, 425, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7927, 8, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7932, 8, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 3, 427, 7941, 8, 427, 1, 427, 1, 427, 1, 427, 1, 427, 5, 427, 7947, 8, 427, 10, 427, 12, 427, 7950, 9, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 3, 429, 7960, 8, 429, 1, 429, 1, 429, 1, 429, 1, 429, 5, 429, 7966, 8, 429, 10, 429, 12, 429, 7969, 9, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7975, 8, 430, 10, 430, 12, 430, 7978, 9, 430, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7984, 8, 430, 10, 430, 12, 430, 7987, 9, 430, 5, 430, 7989, 8, 430, 10, 430, 12, 430, 7992, 9, 430, 1, 430, 3, 430, 7995, 8, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 5, 431, 8003, 8, 431, 10, 431, 12, 431, 8006, 9, 431, 1, 432, 1, 432, 3, 432, 8010, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 5, 432, 8016, 8, 432, 10, 432, 12, 432, 8019, 9, 432, 4, 432, 8021, 8, 432, 11, 432, 12, 432, 8022, 1, 432, 3, 432, 8026, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 3, 433, 8033, 8, 433, 1, 433, 1, 433, 1, 433, 1, 433, 3, 433, 8039, 8, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8047, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8055, 8, 434, 1, 434, 3, 434, 8058, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8065, 8, 434, 3, 434, 8067, 8, 434, 1, 435, 3, 435, 8070, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8076, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 3, 436, 8085, 8, 436, 1, 436, 1, 436, 3, 436, 8089, 8, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 3, 437, 8103, 8, 437, 1, 437, 3, 437, 8106, 8, 437, 3, 437, 8108, 8, 437, 1, 437, 1, 437, 1, 438, 1, 438, 3, 438, 8114, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 4, 438, 8122, 8, 438, 11, 438, 12, 438, 8123, 3, 438, 8126, 8, 438, 3, 438, 8128, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 5, 438, 8134, 8, 438, 10, 438, 12, 438, 8137, 9, 438, 3, 438, 8139, 8, 438, 1, 438, 3, 438, 8142, 8, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 3, 440, 8152, 8, 440, 1, 440, 1, 440, 1, 441, 1, 441, 5, 441, 8158, 8, 441, 10, 441, 12, 441, 8161, 9, 441, 1, 441, 1, 441, 1, 441, 3, 441, 8166, 8, 441, 1, 441, 1, 441, 1, 442, 1, 442, 3, 442, 8172, 8, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 3, 443, 8179, 8, 443, 1, 443, 1, 443, 3, 443, 8183, 8, 443, 1, 443, 1, 443, 3, 443, 8187, 8, 443, 1, 443, 3, 443, 8190, 8, 443, 1, 443, 3, 443, 8193, 8, 443, 1, 443, 1, 443, 1, 444, 1, 444, 3, 444, 8199, 8, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 3, 445, 8206, 8, 445, 1, 445, 3, 445, 8209, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 8217, 8, 445, 3, 445, 8219, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 5, 445, 8226, 8, 445, 10, 445, 12, 445, 8229, 9, 445, 1, 445, 1, 445, 3, 445, 8233, 8, 445, 3, 445, 8235, 8, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 3, 446, 8242, 8, 446, 1, 446, 1, 446, 1, 447, 1, 447, 3, 447, 8248, 8, 447, 1, 447, 3, 447, 8251, 8, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8263, 8, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8270, 8, 448, 3, 448, 8272, 8, 448, 1, 449, 1, 449, 3, 449, 8276, 8, 449, 1, 449, 1, 449, 1, 449, 1, 450, 3, 450, 8282, 8, 450, 1, 450, 1, 450, 1, 450, 3, 450, 8287, 8, 450, 1, 450, 1, 450, 3, 450, 8291, 8, 450, 1, 450, 3, 450, 8294, 8, 450, 1, 450, 3, 450, 8297, 8, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 4, 450, 8304, 8, 450, 11, 450, 12, 450, 8305, 1, 451, 3, 451, 8309, 8, 451, 1, 451, 1, 451, 3, 451, 8313, 8, 451, 1, 451, 1, 451, 3, 451, 8317, 8, 451, 3, 451, 8319, 8, 451, 1, 451, 3, 451, 8322, 8, 451, 1, 451, 3, 451, 8325, 8, 451, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8331, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8338, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8345, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8351, 8, 452, 3, 452, 8353, 8, 452, 1, 453, 1, 453, 3, 453, 8357, 8, 453, 1, 453, 1, 453, 1, 453, 3, 453, 8362, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 5, 454, 8378, 8, 454, 10, 454, 12, 454, 8381, 9, 454, 1, 454, 1, 454, 4, 454, 8385, 8, 454, 11, 454, 12, 454, 8386, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 5, 455, 8394, 8, 455, 10, 455, 12, 455, 8397, 9, 455, 1, 455, 1, 455, 1, 455, 1, 455, 3, 455, 8403, 8, 455, 1, 456, 1, 456, 3, 456, 8407, 8, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 3, 459, 8419, 8, 459, 1, 459, 3, 459, 8422, 8, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 3, 460, 8435, 8, 460, 1, 460, 3, 460, 8438, 8, 460, 1, 461, 1, 461, 3, 461, 8442, 8, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 5, 462, 8449, 8, 462, 10, 462, 12, 462, 8452, 9, 462, 1, 462, 1, 462, 5, 462, 8456, 8, 462, 10, 462, 12, 462, 8459, 9, 462, 4, 462, 8461, 8, 462, 11, 462, 12, 462, 8462, 1, 463, 1, 463, 1, 463, 3, 463, 8468, 8, 463, 1, 464, 1, 464, 3, 464, 8472, 8, 464, 1, 465, 3, 465, 8475, 8, 465, 1, 465, 3, 465, 8478, 8, 465, 1, 465, 3, 465, 8481, 8, 465, 1, 465, 3, 465, 8484, 8, 465, 1, 465, 3, 465, 8487, 8, 465, 1, 465, 1, 465, 3, 465, 8491, 8, 465, 1, 465, 3, 465, 8494, 8, 465, 1, 465, 0, 3, 676, 680, 682, 466, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 0, 118, 2, 0, 195, 195, 364, 364, 2, 0, 66, 66, 318, 318, 2, 0, 99, 99, 318, 318, 2, 0, 134, 134, 318, 318, 1, 0, 529, 531, 2, 0, 10, 10, 94, 94, 2, 0, 133, 133, 191, 191, 2, 0, 254, 254, 332, 332, 2, 0, 162, 162, 363, 363, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 288, 288, 329, 329, 352, 352, 354, 354, 2, 0, 109, 109, 532, 532, 2, 0, 158, 158, 277, 277, 2, 0, 367, 367, 439, 439, 2, 0, 139, 139, 312, 312, 2, 0, 191, 191, 333, 333, 2, 0, 313, 313, 333, 333, 2, 0, 150, 150, 315, 315, 2, 0, 64, 64, 94, 94, 4, 0, 78, 78, 183, 183, 197, 197, 298, 298, 2, 0, 213, 213, 254, 254, 2, 0, 352, 352, 354, 354, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 342, 342, 345, 345, 438, 438, 3, 0, 113, 113, 284, 284, 336, 336, 2, 0, 53, 53, 78, 78, 2, 0, 105, 105, 379, 379, 2, 0, 260, 260, 262, 262, 3, 0, 173, 173, 260, 260, 262, 262, 1, 0, 12, 13, 2, 0, 64, 64, 375, 375, 2, 0, 156, 156, 206, 206, 2, 0, 189, 189, 360, 360, 2, 0, 215, 215, 373, 373, 3, 0, 133, 133, 191, 191, 333, 333, 5, 0, 30, 30, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 9, 9, 94, 94, 2, 0, 92, 92, 226, 226, 1, 0, 448, 449, 2, 0, 92, 92, 414, 414, 2, 0, 341, 341, 414, 414, 4, 0, 163, 163, 185, 185, 283, 283, 353, 353, 2, 0, 135, 135, 145, 145, 2, 0, 211, 211, 278, 278, 3, 0, 321, 321, 357, 357, 445, 445, 3, 0, 66, 66, 99, 99, 318, 318, 5, 0, 108, 108, 168, 168, 226, 226, 328, 328, 342, 342, 2, 0, 167, 167, 314, 314, 2, 0, 61, 61, 265, 265, 4, 0, 207, 207, 249, 249, 268, 268, 293, 293, 2, 0, 130, 130, 307, 307, 2, 0, 64, 64, 68, 68, 10, 0, 46, 46, 88, 88, 182, 182, 202, 202, 241, 241, 352, 352, 354, 354, 357, 358, 369, 369, 521, 523, 5, 0, 212, 212, 329, 329, 350, 350, 455, 455, 457, 457, 5, 0, 212, 212, 329, 329, 350, 350, 361, 361, 455, 456, 2, 0, 37, 37, 55, 55, 2, 0, 207, 207, 249, 249, 2, 0, 10, 10, 53, 53, 2, 0, 181, 181, 243, 243, 2, 0, 170, 170, 320, 320, 2, 0, 141, 141, 223, 223, 5, 0, 108, 108, 168, 168, 189, 189, 342, 342, 360, 360, 2, 0, 226, 226, 328, 328, 2, 0, 163, 163, 185, 185, 2, 0, 186, 186, 193, 193, 4, 0, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 137, 137, 242, 242, 2, 0, 161, 161, 319, 319, 4, 0, 129, 129, 161, 161, 319, 319, 454, 454, 2, 0, 356, 356, 380, 380, 2, 0, 81, 81, 382, 382, 2, 0, 151, 151, 254, 254, 2, 0, 133, 133, 138, 138, 1, 0, 31, 32, 2, 0, 128, 128, 547, 547, 2, 0, 60, 60, 96, 96, 2, 0, 99, 99, 349, 349, 2, 0, 131, 131, 414, 414, 2, 0, 201, 201, 334, 334, 3, 0, 59, 59, 70, 70, 97, 97, 2, 0, 30, 30, 56, 56, 1, 0, 527, 528, 2, 0, 207, 207, 268, 268, 2, 0, 320, 320, 414, 414, 2, 0, 571, 571, 573, 573, 1, 0, 468, 469, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 360, 360, 477, 477, 2, 0, 394, 395, 409, 409, 2, 0, 391, 392, 406, 406, 1, 0, 391, 392, 1, 0, 418, 419, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 3, 0, 9, 9, 14, 14, 27, 27, 2, 0, 98, 98, 396, 396, 2, 0, 50, 51, 75, 76, 2, 0, 41, 41, 420, 420, 3, 0, 39, 39, 73, 73, 95, 95, 4, 0, 393, 393, 399, 399, 404, 404, 425, 425, 2, 0, 292, 292, 347, 347, 2, 0, 166, 166, 188, 188, 2, 0, 304, 304, 450, 450, 3, 0, 299, 299, 320, 320, 481, 481, 2, 0, 208, 208, 289, 289, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 114, 114, 120, 120, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 17, 0, 53, 53, 116, 116, 123, 124, 129, 228, 238, 386, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 477, 488, 490, 502, 504, 504, 506, 518, 520, 520, 524, 524, 547, 548, 3, 0, 106, 123, 125, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 434, 434, 501, 501, 2, 0, 167, 167, 507, 507, 1, 0, 512, 517, 2, 0, 144, 144, 210, 210, 9930, 0, 935, 1, 0, 0, 0, 2, 940, 1, 0, 0, 0, 4, 1064, 1, 0, 0, 0, 6, 1066, 1, 0, 0, 0, 8, 1069, 1, 0, 0, 0, 10, 1119, 1, 0, 0, 0, 12, 1129, 1, 0, 0, 0, 14, 1131, 1, 0, 0, 0, 16, 1143, 1, 0, 0, 0, 18, 1155, 1, 0, 0, 0, 20, 1166, 1, 0, 0, 0, 22, 1200, 1, 0, 0, 0, 24, 1244, 1, 0, 0, 0, 26, 1246, 1, 0, 0, 0, 28, 1258, 1, 0, 0, 0, 30, 1265, 1, 0, 0, 0, 32, 1284, 1, 0, 0, 0, 34, 1292, 1, 0, 0, 0, 36, 1294, 1, 0, 0, 0, 38, 1308, 1, 0, 0, 0, 40, 1312, 1, 0, 0, 0, 42, 1349, 1, 0, 0, 0, 44, 1351, 1, 0, 0, 0, 46, 1359, 1, 0, 0, 0, 48, 1369, 1, 0, 0, 0, 50, 1376, 1, 0, 0, 0, 52, 1384, 1, 0, 0, 0, 54, 1390, 1, 0, 0, 0, 56, 1406, 1, 0, 0, 0, 58, 1410, 1, 0, 0, 0, 60, 1412, 1, 0, 0, 0, 62, 1424, 1, 0, 0, 0, 64, 1429, 1, 0, 0, 0, 66, 1434, 1, 0, 0, 0, 68, 1436, 1, 0, 0, 0, 70, 1448, 1, 0, 0, 0, 72, 1456, 1, 0, 0, 0, 74, 1458, 1, 0, 0, 0, 76, 1582, 1, 0, 0, 0, 78, 1584, 1, 0, 0, 0, 80, 1601, 1, 0, 0, 0, 82, 1603, 1, 0, 0, 0, 84, 1617, 1, 0, 0, 0, 86, 1619, 1, 0, 0, 0, 88, 1633, 1, 0, 0, 0, 90, 1635, 1, 0, 0, 0, 92, 1872, 1, 0, 0, 0, 94, 1879, 1, 0, 0, 0, 96, 1881, 1, 0, 0, 0, 98, 1883, 1, 0, 0, 0, 100, 1886, 1, 0, 0, 0, 102, 1897, 1, 0, 0, 0, 104, 1900, 1, 0, 0, 0, 106, 1936, 1, 0, 0, 0, 108, 1938, 1, 0, 0, 0, 110, 1979, 1, 0, 0, 0, 112, 1981, 1, 0, 0, 0, 114, 2035, 1, 0, 0, 0, 116, 2076, 1, 0, 0, 0, 118, 2078, 1, 0, 0, 0, 120, 2095, 1, 0, 0, 0, 122, 2176, 1, 0, 0, 0, 124, 2178, 1, 0, 0, 0, 126, 2189, 1, 0, 0, 0, 128, 2212, 1, 0, 0, 0, 130, 2230, 1, 0, 0, 0, 132, 2232, 1, 0, 0, 0, 134, 2267, 1, 0, 0, 0, 136, 2360, 1, 0, 0, 0, 138, 2365, 1, 0, 0, 0, 140, 2367, 1, 0, 0, 0, 142, 2465, 1, 0, 0, 0, 144, 2467, 1, 0, 0, 0, 146, 2471, 1, 0, 0, 0, 148, 2482, 1, 0, 0, 0, 150, 2490, 1, 0, 0, 0, 152, 2493, 1, 0, 0, 0, 154, 2496, 1, 0, 0, 0, 156, 2514, 1, 0, 0, 0, 158, 2516, 1, 0, 0, 0, 160, 2520, 1, 0, 0, 0, 162, 2533, 1, 0, 0, 0, 164, 2535, 1, 0, 0, 0, 166, 2540, 1, 0, 0, 0, 168, 2560, 1, 0, 0, 0, 170, 2568, 1, 0, 0, 0, 172, 2575, 1, 0, 0, 0, 174, 2577, 1, 0, 0, 0, 176, 2586, 1, 0, 0, 0, 178, 2589, 1, 0, 0, 0, 180, 2593, 1, 0, 0, 0, 182, 2597, 1, 0, 0, 0, 184, 2622, 1, 0, 0, 0, 186, 2632, 1, 0, 0, 0, 188, 2646, 1, 0, 0, 0, 190, 2662, 1, 0, 0, 0, 192, 2668, 1, 0, 0, 0, 194, 2695, 1, 0, 0, 0, 196, 2705, 1, 0, 0, 0, 198, 2721, 1, 0, 0, 0, 200, 2765, 1, 0, 0, 0, 202, 2772, 1, 0, 0, 0, 204, 2774, 1, 0, 0, 0, 206, 2800, 1, 0, 0, 0, 208, 2811, 1, 0, 0, 0, 210, 2830, 1, 0, 0, 0, 212, 2841, 1, 0, 0, 0, 214, 2879, 1, 0, 0, 0, 216, 2900, 1, 0, 0, 0, 218, 2902, 1, 0, 0, 0, 220, 2922, 1, 0, 0, 0, 222, 2934, 1, 0, 0, 0, 224, 2946, 1, 0, 0, 0, 226, 2949, 1, 0, 0, 0, 228, 2952, 1, 0, 0, 0, 230, 2972, 1, 0, 0, 0, 232, 2977, 1, 0, 0, 0, 234, 3026, 1, 0, 0, 0, 236, 3028, 1, 0, 0, 0, 238, 3051, 1, 0, 0, 0, 240, 3067, 1, 0, 0, 0, 242, 3079, 1, 0, 0, 0, 244, 3106, 1, 0, 0, 0, 246, 3121, 1, 0, 0, 0, 248, 3184, 1, 0, 0, 0, 250, 3186, 1, 0, 0, 0, 252, 3191, 1, 0, 0, 0, 254, 3197, 1, 0, 0, 0, 256, 3284, 1, 0, 0, 0, 258, 3290, 1, 0, 0, 0, 260, 3292, 1, 0, 0, 0, 262, 3308, 1, 0, 0, 0, 264, 3310, 1, 0, 0, 0, 266, 3319, 1, 0, 0, 0, 268, 3323, 1, 0, 0, 0, 270, 3336, 1, 0, 0, 0, 272, 3348, 1, 0, 0, 0, 274, 3350, 1, 0, 0, 0, 276, 3372, 1, 0, 0, 0, 278, 3384, 1, 0, 0, 0, 280, 3395, 1, 0, 0, 0, 282, 3486, 1, 0, 0, 0, 284, 3488, 1, 0, 0, 0, 286, 3499, 1, 0, 0, 0, 288, 3510, 1, 0, 0, 0, 290, 3512, 1, 0, 0, 0, 292, 3538, 1, 0, 0, 0, 294, 3540, 1, 0, 0, 0, 296, 3544, 1, 0, 0, 0, 298, 3594, 1, 0, 0, 0, 300, 3596, 1, 0, 0, 0, 302, 3602, 1, 0, 0, 0, 304, 3627, 1, 0, 0, 0, 306, 3631, 1, 0, 0, 0, 308, 3845, 1, 0, 0, 0, 310, 3863, 1, 0, 0, 0, 312, 3889, 1, 0, 0, 0, 314, 3891, 1, 0, 0, 0, 316, 3899, 1, 0, 0, 0, 318, 3905, 1, 0, 0, 0, 320, 3909, 1, 0, 0, 0, 322, 3929, 1, 0, 0, 0, 324, 3935, 1, 0, 0, 0, 326, 4002, 1, 0, 0, 0, 328, 4033, 1, 0, 0, 0, 330, 4079, 1, 0, 0, 0, 332, 4081, 1, 0, 0, 0, 334, 4083, 1, 0, 0, 0, 336, 4094, 1, 0, 0, 0, 338, 4131, 1, 0, 0, 0, 340, 4133, 1, 0, 0, 0, 342, 4139, 1, 0, 0, 0, 344, 4189, 1, 0, 0, 0, 346, 4192, 1, 0, 0, 0, 348, 4206, 1, 0, 0, 0, 350, 4227, 1, 0, 0, 0, 352, 4251, 1, 0, 0, 0, 354, 4292, 1, 0, 0, 0, 356, 4294, 1, 0, 0, 0, 358, 4296, 1, 0, 0, 0, 360, 4336, 1, 0, 0, 0, 362, 4353, 1, 0, 0, 0, 364, 4373, 1, 0, 0, 0, 366, 4426, 1, 0, 0, 0, 368, 4429, 1, 0, 0, 0, 370, 4435, 1, 0, 0, 0, 372, 4443, 1, 0, 0, 0, 374, 4456, 1, 0, 0, 0, 376, 4458, 1, 0, 0, 0, 378, 4471, 1, 0, 0, 0, 380, 4473, 1, 0, 0, 0, 382, 4486, 1, 0, 0, 0, 384, 4496, 1, 0, 0, 0, 386, 4507, 1, 0, 0, 0, 388, 4518, 1, 0, 0, 0, 390, 4520, 1, 0, 0, 0, 392, 4525, 1, 0, 0, 0, 394, 4539, 1, 0, 0, 0, 396, 4571, 1, 0, 0, 0, 398, 4608, 1, 0, 0, 0, 400, 4610, 1, 0, 0, 0, 402, 4613, 1, 0, 0, 0, 404, 4616, 1, 0, 0, 0, 406, 4633, 1, 0, 0, 0, 408, 4654, 1, 0, 0, 0, 410, 4670, 1, 0, 0, 0, 412, 4686, 1, 0, 0, 0, 414, 4708, 1, 0, 0, 0, 416, 4713, 1, 0, 0, 0, 418, 4716, 1, 0, 0, 0, 420, 4724, 1, 0, 0, 0, 422, 4749, 1, 0, 0, 0, 424, 4752, 1, 0, 0, 0, 426, 4780, 1, 0, 0, 0, 428, 4785, 1, 0, 0, 0, 430, 4825, 1, 0, 0, 0, 432, 5037, 1, 0, 0, 0, 434, 5039, 1, 0, 0, 0, 436, 5127, 1, 0, 0, 0, 438, 5129, 1, 0, 0, 0, 440, 5135, 1, 0, 0, 0, 442, 5146, 1, 0, 0, 0, 444, 5156, 1, 0, 0, 0, 446, 5236, 1, 0, 0, 0, 448, 5238, 1, 0, 0, 0, 450, 5252, 1, 0, 0, 0, 452, 5274, 1, 0, 0, 0, 454, 5347, 1, 0, 0, 0, 456, 5349, 1, 0, 0, 0, 458, 5390, 1, 0, 0, 0, 460, 5392, 1, 0, 0, 0, 462, 5397, 1, 0, 0, 0, 464, 5400, 1, 0, 0, 0, 466, 5403, 1, 0, 0, 0, 468, 5453, 1, 0, 0, 0, 470, 5455, 1, 0, 0, 0, 472, 5466, 1, 0, 0, 0, 474, 5468, 1, 0, 0, 0, 476, 5478, 1, 0, 0, 0, 478, 5513, 1, 0, 0, 0, 480, 5516, 1, 0, 0, 0, 482, 5537, 1, 0, 0, 0, 484, 5547, 1, 0, 0, 0, 486, 5567, 1, 0, 0, 0, 488, 5573, 1, 0, 0, 0, 490, 5579, 1, 0, 0, 0, 492, 5584, 1, 0, 0, 0, 494, 5597, 1, 0, 0, 0, 496, 5624, 1, 0, 0, 0, 498, 5672, 1, 0, 0, 0, 500, 5674, 1, 0, 0, 0, 502, 5712, 1, 0, 0, 0, 504, 5714, 1, 0, 0, 0, 506, 5735, 1, 0, 0, 0, 508, 5755, 1, 0, 0, 0, 510, 5759, 1, 0, 0, 0, 512, 5774, 1, 0, 0, 0, 514, 5776, 1, 0, 0, 0, 516, 5780, 1, 0, 0, 0, 518, 5784, 1, 0, 0, 0, 520, 5792, 1, 0, 0, 0, 522, 5816, 1, 0, 0, 0, 524, 5818, 1, 0, 0, 0, 526, 5829, 1, 0, 0, 0, 528, 5837, 1, 0, 0, 0, 530, 5852, 1, 0, 0, 0, 532, 5877, 1, 0, 0, 0, 534, 5879, 1, 0, 0, 0, 536, 5883, 1, 0, 0, 0, 538, 5892, 1, 0, 0, 0, 540, 5932, 1, 0, 0, 0, 542, 5943, 1, 0, 0, 0, 544, 5951, 1, 0, 0, 0, 546, 5954, 1, 0, 0, 0, 548, 5958, 1, 0, 0, 0, 550, 5973, 1, 0, 0, 0, 552, 5998, 1, 0, 0, 0, 554, 6013, 1, 0, 0, 0, 556, 6039, 1, 0, 0, 0, 558, 6041, 1, 0, 0, 0, 560, 6064, 1, 0, 0, 0, 562, 6066, 1, 0, 0, 0, 564, 6074, 1, 0, 0, 0, 566, 6092, 1, 0, 0, 0, 568, 6116, 1, 0, 0, 0, 570, 6128, 1, 0, 0, 0, 572, 6132, 1, 0, 0, 0, 574, 6144, 1, 0, 0, 0, 576, 6164, 1, 0, 0, 0, 578, 6172, 1, 0, 0, 0, 580, 6186, 1, 0, 0, 0, 582, 6209, 1, 0, 0, 0, 584, 6211, 1, 0, 0, 0, 586, 6216, 1, 0, 0, 0, 588, 6226, 1, 0, 0, 0, 590, 6247, 1, 0, 0, 0, 592, 6249, 1, 0, 0, 0, 594, 6258, 1, 0, 0, 0, 596, 6269, 1, 0, 0, 0, 598, 6279, 1, 0, 0, 0, 600, 6281, 1, 0, 0, 0, 602, 6288, 1, 0, 0, 0, 604, 6319, 1, 0, 0, 0, 606, 6349, 1, 0, 0, 0, 608, 6351, 1, 0, 0, 0, 610, 6360, 1, 0, 0, 0, 612, 6363, 1, 0, 0, 0, 614, 6434, 1, 0, 0, 0, 616, 6458, 1, 0, 0, 0, 618, 6479, 1, 0, 0, 0, 620, 6481, 1, 0, 0, 0, 622, 6489, 1, 0, 0, 0, 624, 6506, 1, 0, 0, 0, 626, 6532, 1, 0, 0, 0, 628, 6534, 1, 0, 0, 0, 630, 6542, 1, 0, 0, 0, 632, 6549, 1, 0, 0, 0, 634, 6573, 1, 0, 0, 0, 636, 6579, 1, 0, 0, 0, 638, 6587, 1, 0, 0, 0, 640, 6590, 1, 0, 0, 0, 642, 6597, 1, 0, 0, 0, 644, 6605, 1, 0, 0, 0, 646, 6610, 1, 0, 0, 0, 648, 6640, 1, 0, 0, 0, 650, 6667, 1, 0, 0, 0, 652, 6695, 1, 0, 0, 0, 654, 6712, 1, 0, 0, 0, 656, 6718, 1, 0, 0, 0, 658, 6736, 1, 0, 0, 0, 660, 6738, 1, 0, 0, 0, 662, 6742, 1, 0, 0, 0, 664, 6759, 1, 0, 0, 0, 666, 6764, 1, 0, 0, 0, 668, 6802, 1, 0, 0, 0, 670, 6804, 1, 0, 0, 0, 672, 6808, 1, 0, 0, 0, 674, 6810, 1, 0, 0, 0, 676, 6819, 1, 0, 0, 0, 678, 6903, 1, 0, 0, 0, 680, 6909, 1, 0, 0, 0, 682, 7018, 1, 0, 0, 0, 684, 7050, 1, 0, 0, 0, 686, 7103, 1, 0, 0, 0, 688, 7107, 1, 0, 0, 0, 690, 7283, 1, 0, 0, 0, 692, 7285, 1, 0, 0, 0, 694, 7293, 1, 0, 0, 0, 696, 7298, 1, 0, 0, 0, 698, 7300, 1, 0, 0, 0, 700, 7308, 1, 0, 0, 0, 702, 7311, 1, 0, 0, 0, 704, 7320, 1, 0, 0, 0, 706, 7324, 1, 0, 0, 0, 708, 7329, 1, 0, 0, 0, 710, 7346, 1, 0, 0, 0, 712, 7373, 1, 0, 0, 0, 714, 7382, 1, 0, 0, 0, 716, 7384, 1, 0, 0, 0, 718, 7391, 1, 0, 0, 0, 720, 7395, 1, 0, 0, 0, 722, 7397, 1, 0, 0, 0, 724, 7405, 1, 0, 0, 0, 726, 7413, 1, 0, 0, 0, 728, 7420, 1, 0, 0, 0, 730, 7422, 1, 0, 0, 0, 732, 7435, 1, 0, 0, 0, 734, 7439, 1, 0, 0, 0, 736, 7441, 1, 0, 0, 0, 738, 7454, 1, 0, 0, 0, 740, 7456, 1, 0, 0, 0, 742, 7478, 1, 0, 0, 0, 744, 7480, 1, 0, 0, 0, 746, 7503, 1, 0, 0, 0, 748, 7505, 1, 0, 0, 0, 750, 7527, 1, 0, 0, 0, 752, 7530, 1, 0, 0, 0, 754, 7537, 1, 0, 0, 0, 756, 7540, 1, 0, 0, 0, 758, 7556, 1, 0, 0, 0, 760, 7558, 1, 0, 0, 0, 762, 7566, 1, 0, 0, 0, 764, 7574, 1, 0, 0, 0, 766, 7582, 1, 0, 0, 0, 768, 7590, 1, 0, 0, 0, 770, 7592, 1, 0, 0, 0, 772, 7594, 1, 0, 0, 0, 774, 7596, 1, 0, 0, 0, 776, 7598, 1, 0, 0, 0, 778, 7600, 1, 0, 0, 0, 780, 7602, 1, 0, 0, 0, 782, 7606, 1, 0, 0, 0, 784, 7614, 1, 0, 0, 0, 786, 7622, 1, 0, 0, 0, 788, 7624, 1, 0, 0, 0, 790, 7626, 1, 0, 0, 0, 792, 7628, 1, 0, 0, 0, 794, 7630, 1, 0, 0, 0, 796, 7636, 1, 0, 0, 0, 798, 7642, 1, 0, 0, 0, 800, 7648, 1, 0, 0, 0, 802, 7650, 1, 0, 0, 0, 804, 7656, 1, 0, 0, 0, 806, 7662, 1, 0, 0, 0, 808, 7664, 1, 0, 0, 0, 810, 7680, 1, 0, 0, 0, 812, 7683, 1, 0, 0, 0, 814, 7692, 1, 0, 0, 0, 816, 7694, 1, 0, 0, 0, 818, 7704, 1, 0, 0, 0, 820, 7708, 1, 0, 0, 0, 822, 7713, 1, 0, 0, 0, 824, 7719, 1, 0, 0, 0, 826, 7732, 1, 0, 0, 0, 828, 7734, 1, 0, 0, 0, 830, 7787, 1, 0, 0, 0, 832, 7789, 1, 0, 0, 0, 834, 7791, 1, 0, 0, 0, 836, 7794, 1, 0, 0, 0, 838, 7822, 1, 0, 0, 0, 840, 7826, 1, 0, 0, 0, 842, 7877, 1, 0, 0, 0, 844, 7880, 1, 0, 0, 0, 846, 7906, 1, 0, 0, 0, 848, 7908, 1, 0, 0, 0, 850, 7931, 1, 0, 0, 0, 852, 7933, 1, 0, 0, 0, 854, 7938, 1, 0, 0, 0, 856, 7953, 1, 0, 0, 0, 858, 7959, 1, 0, 0, 0, 860, 7970, 1, 0, 0, 0, 862, 8000, 1, 0, 0, 0, 864, 8007, 1, 0, 0, 0, 866, 8032, 1, 0, 0, 0, 868, 8042, 1, 0, 0, 0, 870, 8069, 1, 0, 0, 0, 872, 8082, 1, 0, 0, 0, 874, 8092, 1, 0, 0, 0, 876, 8111, 1, 0, 0, 0, 878, 8143, 1, 0, 0, 0, 880, 8147, 1, 0, 0, 0, 882, 8155, 1, 0, 0, 0, 884, 8169, 1, 0, 0, 0, 886, 8175, 1, 0, 0, 0, 888, 8196, 1, 0, 0, 0, 890, 8202, 1, 0, 0, 0, 892, 8241, 1, 0, 0, 0, 894, 8245, 1, 0, 0, 0, 896, 8271, 1, 0, 0, 0, 898, 8273, 1, 0, 0, 0, 900, 8281, 1, 0, 0, 0, 902, 8318, 1, 0, 0, 0, 904, 8352, 1, 0, 0, 0, 906, 8354, 1, 0, 0, 0, 908, 8365, 1, 0, 0, 0, 910, 8402, 1, 0, 0, 0, 912, 8406, 1, 0, 0, 0, 914, 8408, 1, 0, 0, 0, 916, 8412, 1, 0, 0, 0, 918, 8415, 1, 0, 0, 0, 920, 8437, 1, 0, 0, 0, 922, 8441, 1, 0, 0, 0, 924, 8443, 1, 0, 0, 0, 926, 8467, 1, 0, 0, 0, 928, 8471, 1, 0, 0, 0, 930, 8474, 1, 0, 0, 0, 932, 934, 3, 2, 1, 0, 933, 932, 1, 0, 0, 0, 934, 937, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 938, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 938, 939, 5, 0, 0, 1, 939, 1, 1, 0, 0, 0, 940, 942, 3, 4, 2, 0, 941, 943, 5, 7, 0, 0, 942, 941, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 3, 1, 0, 0, 0, 944, 1065, 3, 278, 139, 0, 945, 1065, 3, 488, 244, 0, 946, 1065, 3, 484, 242, 0, 947, 1065, 3, 486, 243, 0, 948, 1065, 3, 352, 176, 0, 949, 1065, 3, 494, 247, 0, 950, 1065, 3, 292, 146, 0, 951, 1065, 3, 210, 105, 0, 952, 1065, 3, 212, 106, 0, 953, 1065, 3, 218, 109, 0, 954, 1065, 3, 232, 116, 0, 955, 1065, 3, 404, 202, 0, 956, 1065, 3, 28, 14, 0, 957, 1065, 3, 434, 217, 0, 958, 1065, 3, 436, 218, 0, 959, 1065, 3, 446, 223, 0, 960, 1065, 3, 438, 219, 0, 961, 1065, 3, 444, 222, 0, 962, 1065, 3, 244, 122, 0, 963, 1065, 3, 246, 123, 0, 964, 1065, 3, 198, 99, 0, 965, 1065, 3, 490, 245, 0, 966, 1065, 3, 76, 38, 0, 967, 1065, 3, 430, 215, 0, 968, 1065, 3, 108, 54, 0, 969, 1065, 3, 450, 225, 0, 970, 1065, 3, 18, 9, 0, 971, 1065, 3, 20, 10, 0, 972, 1065, 3, 16, 8, 0, 973, 1065, 3, 454, 227, 0, 974, 1065, 3, 184, 92, 0, 975, 1065, 3, 498, 249, 0, 976, 1065, 3, 496, 248, 0, 977, 1065, 3, 240, 120, 0, 978, 1065, 3, 506, 253, 0, 979, 1065, 3, 6, 3, 0, 980, 1065, 3, 72, 36, 0, 981, 1065, 3, 112, 56, 0, 982, 1065, 3, 502, 251, 0, 983, 1065, 3, 324, 162, 0, 984, 1065, 3, 70, 35, 0, 985, 1065, 3, 114, 57, 0, 986, 1065, 3, 254, 127, 0, 987, 1065, 3, 186, 93, 0, 988, 1065, 3, 280, 140, 0, 989, 1065, 3, 420, 210, 0, 990, 1065, 3, 500, 250, 0, 991, 1065, 3, 492, 246, 0, 992, 1065, 3, 208, 104, 0, 993, 1065, 3, 214, 107, 0, 994, 1065, 3, 228, 114, 0, 995, 1065, 3, 234, 117, 0, 996, 1065, 3, 364, 182, 0, 997, 1065, 3, 26, 13, 0, 998, 1065, 3, 192, 96, 0, 999, 1065, 3, 296, 148, 0, 1000, 1065, 3, 300, 150, 0, 1001, 1065, 3, 448, 224, 0, 1002, 1065, 3, 302, 151, 0, 1003, 1065, 3, 242, 121, 0, 1004, 1065, 3, 204, 102, 0, 1005, 1065, 3, 30, 15, 0, 1006, 1065, 3, 196, 98, 0, 1007, 1065, 3, 120, 60, 0, 1008, 1065, 3, 452, 226, 0, 1009, 1065, 3, 182, 91, 0, 1010, 1065, 3, 206, 103, 0, 1011, 1065, 3, 424, 212, 0, 1012, 1065, 3, 256, 128, 0, 1013, 1065, 3, 274, 137, 0, 1014, 1065, 3, 8, 4, 0, 1015, 1065, 3, 14, 7, 0, 1016, 1065, 3, 238, 119, 0, 1017, 1065, 3, 480, 240, 0, 1018, 1065, 3, 536, 268, 0, 1019, 1065, 3, 558, 279, 0, 1020, 1065, 3, 282, 141, 0, 1021, 1065, 3, 548, 274, 0, 1022, 1065, 3, 74, 37, 0, 1023, 1065, 3, 418, 209, 0, 1024, 1065, 3, 308, 154, 0, 1025, 1065, 3, 532, 266, 0, 1026, 1065, 3, 520, 260, 0, 1027, 1065, 3, 328, 164, 0, 1028, 1065, 3, 334, 167, 0, 1029, 1065, 3, 348, 174, 0, 1030, 1065, 3, 900, 450, 0, 1031, 1065, 3, 236, 118, 0, 1032, 1065, 3, 358, 179, 0, 1033, 1065, 3, 538, 269, 0, 1034, 1065, 3, 464, 232, 0, 1035, 1065, 3, 194, 97, 0, 1036, 1065, 3, 478, 239, 0, 1037, 1065, 3, 550, 275, 0, 1038, 1065, 3, 460, 230, 0, 1039, 1065, 3, 526, 263, 0, 1040, 1065, 3, 306, 153, 0, 1041, 1065, 3, 428, 214, 0, 1042, 1065, 3, 408, 204, 0, 1043, 1065, 3, 406, 203, 0, 1044, 1065, 3, 410, 205, 0, 1045, 1065, 3, 432, 216, 0, 1046, 1065, 3, 336, 168, 0, 1047, 1065, 3, 350, 175, 0, 1048, 1065, 3, 456, 228, 0, 1049, 1065, 3, 326, 163, 0, 1050, 1065, 3, 560, 280, 0, 1051, 1065, 3, 468, 234, 0, 1052, 1065, 3, 320, 160, 0, 1053, 1065, 3, 466, 233, 0, 1054, 1065, 3, 552, 276, 0, 1055, 1065, 3, 504, 252, 0, 1056, 1065, 3, 60, 30, 0, 1057, 1065, 3, 36, 18, 0, 1058, 1065, 3, 68, 34, 0, 1059, 1065, 3, 476, 238, 0, 1060, 1062, 5, 581, 0, 0, 1061, 1063, 5, 582, 0, 0, 1062, 1061, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1065, 1, 0, 0, 0, 1064, 944, 1, 0, 0, 0, 1064, 945, 1, 0, 0, 0, 1064, 946, 1, 0, 0, 0, 1064, 947, 1, 0, 0, 0, 1064, 948, 1, 0, 0, 0, 1064, 949, 1, 0, 0, 0, 1064, 950, 1, 0, 0, 0, 1064, 951, 1, 0, 0, 0, 1064, 952, 1, 0, 0, 0, 1064, 953, 1, 0, 0, 0, 1064, 954, 1, 0, 0, 0, 1064, 955, 1, 0, 0, 0, 1064, 956, 1, 0, 0, 0, 1064, 957, 1, 0, 0, 0, 1064, 958, 1, 0, 0, 0, 1064, 959, 1, 0, 0, 0, 1064, 960, 1, 0, 0, 0, 1064, 961, 1, 0, 0, 0, 1064, 962, 1, 0, 0, 0, 1064, 963, 1, 0, 0, 0, 1064, 964, 1, 0, 0, 0, 1064, 965, 1, 0, 0, 0, 1064, 966, 1, 0, 0, 0, 1064, 967, 1, 0, 0, 0, 1064, 968, 1, 0, 0, 0, 1064, 969, 1, 0, 0, 0, 1064, 970, 1, 0, 0, 0, 1064, 971, 1, 0, 0, 0, 1064, 972, 1, 0, 0, 0, 1064, 973, 1, 0, 0, 0, 1064, 974, 1, 0, 0, 0, 1064, 975, 1, 0, 0, 0, 1064, 976, 1, 0, 0, 0, 1064, 977, 1, 0, 0, 0, 1064, 978, 1, 0, 0, 0, 1064, 979, 1, 0, 0, 0, 1064, 980, 1, 0, 0, 0, 1064, 981, 1, 0, 0, 0, 1064, 982, 1, 0, 0, 0, 1064, 983, 1, 0, 0, 0, 1064, 984, 1, 0, 0, 0, 1064, 985, 1, 0, 0, 0, 1064, 986, 1, 0, 0, 0, 1064, 987, 1, 0, 0, 0, 1064, 988, 1, 0, 0, 0, 1064, 989, 1, 0, 0, 0, 1064, 990, 1, 0, 0, 0, 1064, 991, 1, 0, 0, 0, 1064, 992, 1, 0, 0, 0, 1064, 993, 1, 0, 0, 0, 1064, 994, 1, 0, 0, 0, 1064, 995, 1, 0, 0, 0, 1064, 996, 1, 0, 0, 0, 1064, 997, 1, 0, 0, 0, 1064, 998, 1, 0, 0, 0, 1064, 999, 1, 0, 0, 0, 1064, 1000, 1, 0, 0, 0, 1064, 1001, 1, 0, 0, 0, 1064, 1002, 1, 0, 0, 0, 1064, 1003, 1, 0, 0, 0, 1064, 1004, 1, 0, 0, 0, 1064, 1005, 1, 0, 0, 0, 1064, 1006, 1, 0, 0, 0, 1064, 1007, 1, 0, 0, 0, 1064, 1008, 1, 0, 0, 0, 1064, 1009, 1, 0, 0, 0, 1064, 1010, 1, 0, 0, 0, 1064, 1011, 1, 0, 0, 0, 1064, 1012, 1, 0, 0, 0, 1064, 1013, 1, 0, 0, 0, 1064, 1014, 1, 0, 0, 0, 1064, 1015, 1, 0, 0, 0, 1064, 1016, 1, 0, 0, 0, 1064, 1017, 1, 0, 0, 0, 1064, 1018, 1, 0, 0, 0, 1064, 1019, 1, 0, 0, 0, 1064, 1020, 1, 0, 0, 0, 1064, 1021, 1, 0, 0, 0, 1064, 1022, 1, 0, 0, 0, 1064, 1023, 1, 0, 0, 0, 1064, 1024, 1, 0, 0, 0, 1064, 1025, 1, 0, 0, 0, 1064, 1026, 1, 0, 0, 0, 1064, 1027, 1, 0, 0, 0, 1064, 1028, 1, 0, 0, 0, 1064, 1029, 1, 0, 0, 0, 1064, 1030, 1, 0, 0, 0, 1064, 1031, 1, 0, 0, 0, 1064, 1032, 1, 0, 0, 0, 1064, 1033, 1, 0, 0, 0, 1064, 1034, 1, 0, 0, 0, 1064, 1035, 1, 0, 0, 0, 1064, 1036, 1, 0, 0, 0, 1064, 1037, 1, 0, 0, 0, 1064, 1038, 1, 0, 0, 0, 1064, 1039, 1, 0, 0, 0, 1064, 1040, 1, 0, 0, 0, 1064, 1041, 1, 0, 0, 0, 1064, 1042, 1, 0, 0, 0, 1064, 1043, 1, 0, 0, 0, 1064, 1044, 1, 0, 0, 0, 1064, 1045, 1, 0, 0, 0, 1064, 1046, 1, 0, 0, 0, 1064, 1047, 1, 0, 0, 0, 1064, 1048, 1, 0, 0, 0, 1064, 1049, 1, 0, 0, 0, 1064, 1050, 1, 0, 0, 0, 1064, 1051, 1, 0, 0, 0, 1064, 1052, 1, 0, 0, 0, 1064, 1053, 1, 0, 0, 0, 1064, 1054, 1, 0, 0, 0, 1064, 1055, 1, 0, 0, 0, 1064, 1056, 1, 0, 0, 0, 1064, 1057, 1, 0, 0, 0, 1064, 1058, 1, 0, 0, 0, 1064, 1059, 1, 0, 0, 0, 1064, 1060, 1, 0, 0, 0, 1065, 5, 1, 0, 0, 0, 1066, 1067, 5, 433, 0, 0, 1067, 1068, 3, 684, 342, 0, 1068, 7, 1, 0, 0, 0, 1069, 1070, 5, 46, 0, 0, 1070, 1071, 5, 318, 0, 0, 1071, 1073, 3, 814, 407, 0, 1072, 1074, 5, 105, 0, 0, 1073, 1072, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 1074, 1078, 1, 0, 0, 0, 1075, 1077, 3, 12, 6, 0, 1076, 1075, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 9, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1081, 1084, 5, 287, 0, 0, 1082, 1085, 3, 808, 404, 0, 1083, 1085, 5, 78, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1083, 1, 0, 0, 0, 1085, 1120, 1, 0, 0, 0, 1086, 1087, 7, 0, 0, 0, 1087, 1088, 5, 287, 0, 0, 1088, 1120, 3, 808, 404, 0, 1089, 1120, 5, 228, 0, 0, 1090, 1120, 5, 229, 0, 0, 1091, 1120, 5, 236, 0, 0, 1092, 1120, 5, 237, 0, 0, 1093, 1120, 5, 234, 0, 0, 1094, 1120, 5, 235, 0, 0, 1095, 1120, 5, 232, 0, 0, 1096, 1120, 5, 233, 0, 0, 1097, 1120, 5, 230, 0, 0, 1098, 1120, 5, 231, 0, 0, 1099, 1120, 5, 535, 0, 0, 1100, 1120, 5, 536, 0, 0, 1101, 1120, 5, 537, 0, 0, 1102, 1120, 5, 538, 0, 0, 1103, 1120, 5, 539, 0, 0, 1104, 1120, 5, 540, 0, 0, 1105, 1106, 5, 164, 0, 0, 1106, 1107, 5, 74, 0, 0, 1107, 1120, 3, 812, 406, 0, 1108, 1109, 5, 371, 0, 0, 1109, 1110, 5, 368, 0, 0, 1110, 1120, 3, 808, 404, 0, 1111, 1112, 5, 68, 0, 0, 1112, 1113, 7, 1, 0, 0, 1113, 1120, 3, 784, 392, 0, 1114, 1115, 7, 2, 0, 0, 1115, 1120, 3, 816, 408, 0, 1116, 1117, 5, 134, 0, 0, 1117, 1120, 3, 784, 392, 0, 1118, 1120, 3, 826, 413, 0, 1119, 1081, 1, 0, 0, 0, 1119, 1086, 1, 0, 0, 0, 1119, 1089, 1, 0, 0, 0, 1119, 1090, 1, 0, 0, 0, 1119, 1091, 1, 0, 0, 0, 1119, 1092, 1, 0, 0, 0, 1119, 1093, 1, 0, 0, 0, 1119, 1094, 1, 0, 0, 0, 1119, 1095, 1, 0, 0, 0, 1119, 1096, 1, 0, 0, 0, 1119, 1097, 1, 0, 0, 0, 1119, 1098, 1, 0, 0, 0, 1119, 1099, 1, 0, 0, 0, 1119, 1100, 1, 0, 0, 0, 1119, 1101, 1, 0, 0, 0, 1119, 1102, 1, 0, 0, 0, 1119, 1103, 1, 0, 0, 0, 1119, 1104, 1, 0, 0, 0, 1119, 1105, 1, 0, 0, 0, 1119, 1108, 1, 0, 0, 0, 1119, 1111, 1, 0, 0, 0, 1119, 1114, 1, 0, 0, 0, 1119, 1116, 1, 0, 0, 0, 1119, 1118, 1, 0, 0, 0, 1120, 11, 1, 0, 0, 0, 1121, 1130, 3, 10, 5, 0, 1122, 1123, 5, 348, 0, 0, 1123, 1130, 5, 571, 0, 0, 1124, 1125, 7, 3, 0, 0, 1125, 1130, 3, 816, 408, 0, 1126, 1127, 5, 68, 0, 0, 1127, 1128, 7, 1, 0, 0, 1128, 1130, 3, 816, 408, 0, 1129, 1121, 1, 0, 0, 0, 1129, 1122, 1, 0, 0, 0, 1129, 1124, 1, 0, 0, 0, 1129, 1126, 1, 0, 0, 0, 1130, 13, 1, 0, 0, 0, 1131, 1132, 5, 46, 0, 0, 1132, 1133, 5, 99, 0, 0, 1133, 1135, 3, 814, 407, 0, 1134, 1136, 5, 105, 0, 0, 1135, 1134, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1140, 1, 0, 0, 0, 1137, 1139, 3, 12, 6, 0, 1138, 1137, 1, 0, 0, 0, 1139, 1142, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 15, 1, 0, 0, 0, 1142, 1140, 1, 0, 0, 0, 1143, 1144, 5, 138, 0, 0, 1144, 1145, 7, 2, 0, 0, 1145, 1147, 3, 814, 407, 0, 1146, 1148, 5, 105, 0, 0, 1147, 1146, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1152, 1, 0, 0, 0, 1149, 1151, 3, 10, 5, 0, 1150, 1149, 1, 0, 0, 0, 1151, 1154, 1, 0, 0, 0, 1152, 1150, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 17, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1155, 1156, 5, 138, 0, 0, 1156, 1159, 7, 2, 0, 0, 1157, 1160, 5, 30, 0, 0, 1158, 1160, 3, 814, 407, 0, 1159, 1157, 1, 0, 0, 0, 1159, 1158, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 5, 68, 0, 0, 1162, 1163, 5, 175, 0, 0, 1163, 1164, 3, 788, 394, 0, 1164, 1165, 3, 64, 32, 0, 1165, 19, 1, 0, 0, 0, 1166, 1167, 5, 138, 0, 0, 1167, 1168, 5, 442, 0, 0, 1168, 1170, 3, 794, 397, 0, 1169, 1171, 3, 368, 184, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 3, 22, 11, 0, 1173, 21, 1, 0, 0, 0, 1174, 1178, 3, 24, 12, 0, 1175, 1177, 3, 24, 12, 0, 1176, 1175, 1, 0, 0, 0, 1177, 1180, 1, 0, 0, 0, 1178, 1176, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1182, 1, 0, 0, 0, 1180, 1178, 1, 0, 0, 0, 1181, 1183, 5, 315, 0, 0, 1182, 1181, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1201, 1, 0, 0, 0, 1184, 1185, 5, 309, 0, 0, 1185, 1186, 5, 94, 0, 0, 1186, 1201, 3, 792, 396, 0, 1187, 1188, 5, 282, 0, 0, 1188, 1189, 5, 94, 0, 0, 1189, 1201, 3, 814, 407, 0, 1190, 1191, 5, 333, 0, 0, 1191, 1192, 5, 323, 0, 0, 1192, 1201, 3, 32, 16, 0, 1193, 1195, 5, 269, 0, 0, 1194, 1193, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 5, 462, 0, 0, 1197, 1198, 5, 80, 0, 0, 1198, 1199, 5, 204, 0, 0, 1199, 1201, 3, 818, 409, 0, 1200, 1174, 1, 0, 0, 0, 1200, 1184, 1, 0, 0, 0, 1200, 1187, 1, 0, 0, 0, 1200, 1190, 1, 0, 0, 0, 1200, 1194, 1, 0, 0, 0, 1201, 23, 1, 0, 0, 0, 1202, 1245, 5, 222, 0, 0, 1203, 1245, 5, 338, 0, 0, 1204, 1245, 5, 377, 0, 0, 1205, 1207, 5, 77, 0, 0, 1206, 1205, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1245, 5, 250, 0, 0, 1209, 1211, 5, 205, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 5, 327, 0, 0, 1213, 1220, 5, 243, 0, 0, 1214, 1216, 5, 205, 0, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 327, 0, 0, 1218, 1220, 5, 181, 0, 0, 1219, 1210, 1, 0, 0, 0, 1219, 1215, 1, 0, 0, 0, 1220, 1245, 1, 0, 0, 0, 1221, 1222, 5, 460, 0, 0, 1222, 1245, 7, 4, 0, 0, 1223, 1224, 5, 170, 0, 0, 1224, 1245, 3, 824, 412, 0, 1225, 1226, 5, 320, 0, 0, 1226, 1245, 3, 818, 409, 0, 1227, 1228, 5, 333, 0, 0, 1228, 1229, 3, 818, 409, 0, 1229, 1232, 7, 5, 0, 0, 1230, 1233, 3, 818, 409, 0, 1231, 1233, 5, 53, 0, 0, 1232, 1230, 1, 0, 0, 0, 1232, 1231, 1, 0, 0, 0, 1233, 1245, 1, 0, 0, 0, 1234, 1235, 5, 333, 0, 0, 1235, 1236, 3, 818, 409, 0, 1236, 1237, 5, 64, 0, 0, 1237, 1238, 5, 434, 0, 0, 1238, 1245, 1, 0, 0, 0, 1239, 1242, 5, 313, 0, 0, 1240, 1243, 3, 818, 409, 0, 1241, 1243, 5, 30, 0, 0, 1242, 1240, 1, 0, 0, 0, 1242, 1241, 1, 0, 0, 0, 1243, 1245, 1, 0, 0, 0, 1244, 1202, 1, 0, 0, 0, 1244, 1203, 1, 0, 0, 0, 1244, 1204, 1, 0, 0, 0, 1244, 1206, 1, 0, 0, 0, 1244, 1219, 1, 0, 0, 0, 1244, 1221, 1, 0, 0, 0, 1244, 1223, 1, 0, 0, 0, 1244, 1225, 1, 0, 0, 0, 1244, 1227, 1, 0, 0, 0, 1244, 1234, 1, 0, 0, 0, 1244, 1239, 1, 0, 0, 0, 1245, 25, 1, 0, 0, 0, 1246, 1247, 5, 46, 0, 0, 1247, 1248, 5, 66, 0, 0, 1248, 1250, 3, 814, 407, 0, 1249, 1251, 5, 105, 0, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1255, 1, 0, 0, 0, 1252, 1254, 3, 12, 6, 0, 1253, 1252, 1, 0, 0, 0, 1254, 1257, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 27, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1258, 1259, 5, 138, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1261, 3, 814, 407, 0, 1261, 1262, 7, 6, 0, 0, 1262, 1263, 5, 99, 0, 0, 1263, 1264, 3, 816, 408, 0, 1264, 29, 1, 0, 0, 0, 1265, 1266, 5, 46, 0, 0, 1266, 1268, 5, 323, 0, 0, 1267, 1269, 3, 294, 147, 0, 1268, 1267, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1276, 1, 0, 0, 0, 1270, 1272, 3, 32, 16, 0, 1271, 1270, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 5, 106, 0, 0, 1274, 1277, 3, 814, 407, 0, 1275, 1277, 3, 32, 16, 0, 1276, 1271, 1, 0, 0, 0, 1276, 1275, 1, 0, 0, 0, 1277, 1281, 1, 0, 0, 0, 1278, 1280, 3, 34, 17, 0, 1279, 1278, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 31, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1284, 1285, 3, 316, 158, 0, 1285, 33, 1, 0, 0, 0, 1286, 1293, 3, 120, 60, 0, 1287, 1293, 3, 358, 179, 0, 1288, 1293, 3, 196, 98, 0, 1289, 1293, 3, 256, 128, 0, 1290, 1293, 3, 334, 167, 0, 1291, 1293, 3, 476, 238, 0, 1292, 1286, 1, 0, 0, 0, 1292, 1287, 1, 0, 0, 0, 1292, 1288, 1, 0, 0, 0, 1292, 1289, 1, 0, 0, 0, 1292, 1290, 1, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 35, 1, 0, 0, 0, 1294, 1296, 5, 333, 0, 0, 1295, 1297, 7, 7, 0, 0, 1296, 1295, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 3, 38, 19, 0, 1299, 37, 1, 0, 0, 0, 1300, 1301, 5, 356, 0, 0, 1301, 1309, 3, 474, 237, 0, 1302, 1303, 5, 332, 0, 0, 1303, 1304, 5, 154, 0, 0, 1304, 1305, 5, 36, 0, 0, 1305, 1306, 5, 356, 0, 0, 1306, 1309, 3, 474, 237, 0, 1307, 1309, 3, 42, 21, 0, 1308, 1300, 1, 0, 0, 0, 1308, 1302, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 39, 1, 0, 0, 0, 1310, 1313, 5, 30, 0, 0, 1311, 1313, 3, 44, 22, 0, 1312, 1310, 1, 0, 0, 0, 1312, 1311, 1, 0, 0, 0, 1313, 1315, 1, 0, 0, 0, 1314, 1316, 7, 5, 0, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1319, 1, 0, 0, 0, 1317, 1320, 5, 53, 0, 0, 1318, 1320, 3, 46, 23, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1318, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 41, 1, 0, 0, 0, 1321, 1322, 5, 418, 0, 0, 1322, 1323, 5, 386, 0, 0, 1323, 1350, 3, 56, 28, 0, 1324, 1325, 5, 152, 0, 0, 1325, 1350, 3, 808, 404, 0, 1326, 1327, 5, 323, 0, 0, 1327, 1350, 3, 790, 395, 0, 1328, 1331, 5, 267, 0, 0, 1329, 1332, 3, 808, 404, 0, 1330, 1332, 5, 53, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1350, 1, 0, 0, 0, 1333, 1334, 5, 318, 0, 0, 1334, 1350, 3, 58, 29, 0, 1335, 1336, 5, 332, 0, 0, 1336, 1337, 5, 106, 0, 0, 1337, 1350, 3, 58, 29, 0, 1338, 1339, 5, 383, 0, 0, 1339, 1340, 5, 279, 0, 0, 1340, 1350, 3, 696, 348, 0, 1341, 1342, 5, 356, 0, 0, 1342, 1343, 5, 337, 0, 0, 1343, 1350, 3, 808, 404, 0, 1344, 1345, 3, 44, 22, 0, 1345, 1346, 5, 64, 0, 0, 1346, 1347, 5, 434, 0, 0, 1347, 1350, 1, 0, 0, 0, 1348, 1350, 3, 40, 20, 0, 1349, 1321, 1, 0, 0, 0, 1349, 1324, 1, 0, 0, 0, 1349, 1326, 1, 0, 0, 0, 1349, 1328, 1, 0, 0, 0, 1349, 1333, 1, 0, 0, 0, 1349, 1335, 1, 0, 0, 0, 1349, 1338, 1, 0, 0, 0, 1349, 1341, 1, 0, 0, 0, 1349, 1344, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1350, 43, 1, 0, 0, 0, 1351, 1356, 3, 818, 409, 0, 1352, 1353, 5, 11, 0, 0, 1353, 1355, 3, 818, 409, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1358, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 45, 1, 0, 0, 0, 1358, 1356, 1, 0, 0, 0, 1359, 1364, 3, 48, 24, 0, 1360, 1361, 5, 6, 0, 0, 1361, 1363, 3, 48, 24, 0, 1362, 1360, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 47, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1370, 3, 54, 27, 0, 1368, 1370, 3, 202, 101, 0, 1369, 1367, 1, 0, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 49, 1, 0, 0, 0, 1371, 1372, 5, 300, 0, 0, 1372, 1377, 7, 8, 0, 0, 1373, 1374, 5, 310, 0, 0, 1374, 1377, 5, 300, 0, 0, 1375, 1377, 5, 330, 0, 0, 1376, 1371, 1, 0, 0, 0, 1376, 1373, 1, 0, 0, 0, 1376, 1375, 1, 0, 0, 0, 1377, 51, 1, 0, 0, 0, 1378, 1385, 5, 96, 0, 0, 1379, 1385, 5, 60, 0, 0, 1380, 1385, 5, 80, 0, 0, 1381, 1385, 3, 800, 400, 0, 1382, 1385, 3, 832, 416, 0, 1383, 1385, 3, 808, 404, 0, 1384, 1378, 1, 0, 0, 0, 1384, 1379, 1, 0, 0, 0, 1384, 1380, 1, 0, 0, 0, 1384, 1381, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1383, 1, 0, 0, 0, 1385, 53, 1, 0, 0, 0, 1386, 1391, 5, 96, 0, 0, 1387, 1391, 5, 60, 0, 0, 1388, 1391, 5, 80, 0, 0, 1389, 1391, 3, 58, 29, 0, 1390, 1386, 1, 0, 0, 0, 1390, 1387, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1390, 1389, 1, 0, 0, 0, 1391, 55, 1, 0, 0, 0, 1392, 1407, 3, 808, 404, 0, 1393, 1407, 5, 53, 0, 0, 1394, 1407, 3, 826, 413, 0, 1395, 1396, 5, 403, 0, 0, 1396, 1398, 3, 808, 404, 0, 1397, 1399, 3, 668, 334, 0, 1398, 1397, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1407, 1, 0, 0, 0, 1400, 1401, 5, 403, 0, 0, 1401, 1402, 3, 660, 330, 0, 1402, 1403, 3, 808, 404, 0, 1403, 1407, 1, 0, 0, 0, 1404, 1407, 3, 202, 101, 0, 1405, 1407, 5, 254, 0, 0, 1406, 1392, 1, 0, 0, 0, 1406, 1393, 1, 0, 0, 0, 1406, 1394, 1, 0, 0, 0, 1406, 1395, 1, 0, 0, 0, 1406, 1400, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1406, 1405, 1, 0, 0, 0, 1407, 57, 1, 0, 0, 0, 1408, 1411, 3, 822, 411, 0, 1409, 1411, 3, 808, 404, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1409, 1, 0, 0, 0, 1411, 59, 1, 0, 0, 0, 1412, 1413, 5, 313, 0, 0, 1413, 1414, 3, 62, 31, 0, 1414, 61, 1, 0, 0, 0, 1415, 1416, 5, 418, 0, 0, 1416, 1425, 5, 386, 0, 0, 1417, 1418, 5, 356, 0, 0, 1418, 1419, 5, 244, 0, 0, 1419, 1425, 5, 251, 0, 0, 1420, 1421, 5, 332, 0, 0, 1421, 1425, 5, 106, 0, 0, 1422, 1425, 5, 30, 0, 0, 1423, 1425, 3, 44, 22, 0, 1424, 1415, 1, 0, 0, 0, 1424, 1417, 1, 0, 0, 0, 1424, 1420, 1, 0, 0, 0, 1424, 1422, 1, 0, 0, 0, 1424, 1423, 1, 0, 0, 0, 1425, 63, 1, 0, 0, 0, 1426, 1427, 5, 333, 0, 0, 1427, 1430, 3, 38, 19, 0, 1428, 1430, 3, 60, 30, 0, 1429, 1426, 1, 0, 0, 0, 1429, 1428, 1, 0, 0, 0, 1430, 65, 1, 0, 0, 0, 1431, 1432, 5, 333, 0, 0, 1432, 1435, 3, 42, 21, 0, 1433, 1435, 3, 60, 30, 0, 1434, 1431, 1, 0, 0, 0, 1434, 1433, 1, 0, 0, 0, 1435, 67, 1, 0, 0, 0, 1436, 1446, 5, 335, 0, 0, 1437, 1447, 3, 44, 22, 0, 1438, 1439, 5, 418, 0, 0, 1439, 1447, 5, 386, 0, 0, 1440, 1441, 5, 356, 0, 0, 1441, 1442, 5, 244, 0, 0, 1442, 1447, 5, 251, 0, 0, 1443, 1444, 5, 332, 0, 0, 1444, 1447, 5, 106, 0, 0, 1445, 1447, 5, 30, 0, 0, 1446, 1437, 1, 0, 0, 0, 1446, 1438, 1, 0, 0, 0, 1446, 1440, 1, 0, 0, 0, 1446, 1443, 1, 0, 0, 0, 1446, 1445, 1, 0, 0, 0, 1447, 69, 1, 0, 0, 0, 1448, 1449, 5, 333, 0, 0, 1449, 1452, 5, 165, 0, 0, 1450, 1453, 5, 30, 0, 0, 1451, 1453, 3, 760, 380, 0, 1452, 1450, 1, 0, 0, 0, 1452, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 7, 9, 0, 0, 1455, 71, 1, 0, 0, 0, 1456, 1457, 5, 155, 0, 0, 1457, 73, 1, 0, 0, 0, 1458, 1459, 5, 187, 0, 0, 1459, 1460, 7, 10, 0, 0, 1460, 75, 1, 0, 0, 0, 1461, 1462, 5, 138, 0, 0, 1462, 1464, 5, 92, 0, 0, 1463, 1465, 3, 422, 211, 0, 1464, 1463, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1469, 3, 624, 312, 0, 1467, 1470, 3, 78, 39, 0, 1468, 1470, 3, 88, 44, 0, 1469, 1467, 1, 0, 0, 0, 1469, 1468, 1, 0, 0, 0, 1470, 1583, 1, 0, 0, 0, 1471, 1472, 5, 138, 0, 0, 1472, 1473, 5, 92, 0, 0, 1473, 1474, 5, 30, 0, 0, 1474, 1475, 5, 68, 0, 0, 1475, 1479, 3, 176, 88, 0, 1476, 1477, 5, 281, 0, 0, 1477, 1478, 5, 147, 0, 0, 1478, 1480, 3, 816, 408, 0, 1479, 1476, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 5, 333, 0, 0, 1482, 1483, 5, 351, 0, 0, 1483, 1485, 3, 768, 384, 0, 1484, 1486, 5, 272, 0, 0, 1485, 1484, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1583, 1, 0, 0, 0, 1487, 1488, 5, 138, 0, 0, 1488, 1490, 5, 92, 0, 0, 1489, 1491, 3, 422, 211, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 3, 774, 387, 0, 1493, 1498, 3, 90, 45, 0, 1494, 1495, 5, 62, 0, 0, 1495, 1496, 5, 422, 0, 0, 1496, 1499, 3, 80, 40, 0, 1497, 1499, 5, 53, 0, 0, 1498, 1494, 1, 0, 0, 0, 1498, 1497, 1, 0, 0, 0, 1499, 1583, 1, 0, 0, 0, 1500, 1501, 5, 138, 0, 0, 1501, 1503, 5, 92, 0, 0, 1502, 1504, 3, 422, 211, 0, 1503, 1502, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1506, 3, 774, 387, 0, 1506, 1507, 5, 436, 0, 0, 1507, 1508, 5, 285, 0, 0, 1508, 1510, 3, 780, 390, 0, 1509, 1511, 7, 11, 0, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1583, 1, 0, 0, 0, 1512, 1513, 5, 138, 0, 0, 1513, 1515, 5, 226, 0, 0, 1514, 1516, 3, 422, 211, 0, 1515, 1514, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1520, 3, 780, 390, 0, 1518, 1521, 3, 78, 39, 0, 1519, 1521, 3, 90, 45, 0, 1520, 1518, 1, 0, 0, 0, 1520, 1519, 1, 0, 0, 0, 1521, 1583, 1, 0, 0, 0, 1522, 1523, 5, 138, 0, 0, 1523, 1524, 5, 226, 0, 0, 1524, 1525, 5, 30, 0, 0, 1525, 1526, 5, 68, 0, 0, 1526, 1530, 3, 176, 88, 0, 1527, 1528, 5, 281, 0, 0, 1528, 1529, 5, 147, 0, 0, 1529, 1531, 3, 816, 408, 0, 1530, 1527, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1533, 5, 333, 0, 0, 1533, 1535, 3, 176, 88, 0, 1534, 1536, 5, 272, 0, 0, 1535, 1534, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1583, 1, 0, 0, 0, 1537, 1538, 5, 138, 0, 0, 1538, 1540, 5, 328, 0, 0, 1539, 1541, 3, 422, 211, 0, 1540, 1539, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1543, 3, 780, 390, 0, 1543, 1544, 3, 78, 39, 0, 1544, 1583, 1, 0, 0, 0, 1545, 1547, 5, 138, 0, 0, 1546, 1548, 5, 259, 0, 0, 1547, 1546, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1551, 5, 376, 0, 0, 1550, 1552, 3, 422, 211, 0, 1551, 1550, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 3, 778, 389, 0, 1554, 1555, 3, 78, 39, 0, 1555, 1583, 1, 0, 0, 0, 1556, 1557, 5, 138, 0, 0, 1557, 1558, 5, 259, 0, 0, 1558, 1559, 5, 376, 0, 0, 1559, 1560, 5, 30, 0, 0, 1560, 1561, 5, 68, 0, 0, 1561, 1565, 3, 176, 88, 0, 1562, 1563, 5, 281, 0, 0, 1563, 1564, 5, 147, 0, 0, 1564, 1566, 3, 816, 408, 0, 1565, 1562, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 5, 333, 0, 0, 1568, 1569, 5, 351, 0, 0, 1569, 1571, 3, 768, 384, 0, 1570, 1572, 5, 272, 0, 0, 1571, 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1583, 1, 0, 0, 0, 1573, 1574, 5, 138, 0, 0, 1574, 1575, 5, 63, 0, 0, 1575, 1577, 5, 92, 0, 0, 1576, 1578, 3, 422, 211, 0, 1577, 1576, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 3, 624, 312, 0, 1580, 1581, 3, 78, 39, 0, 1581, 1583, 1, 0, 0, 0, 1582, 1461, 1, 0, 0, 0, 1582, 1471, 1, 0, 0, 0, 1582, 1487, 1, 0, 0, 0, 1582, 1500, 1, 0, 0, 0, 1582, 1512, 1, 0, 0, 0, 1582, 1522, 1, 0, 0, 0, 1582, 1537, 1, 0, 0, 0, 1582, 1545, 1, 0, 0, 0, 1582, 1556, 1, 0, 0, 0, 1582, 1573, 1, 0, 0, 0, 1583, 77, 1, 0, 0, 0, 1584, 1589, 3, 92, 46, 0, 1585, 1586, 5, 6, 0, 0, 1586, 1588, 3, 92, 46, 0, 1587, 1585, 1, 0, 0, 0, 1588, 1591, 1, 0, 0, 0, 1589, 1587, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 79, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1593, 5, 68, 0, 0, 1593, 1602, 3, 534, 267, 0, 1594, 1595, 5, 64, 0, 0, 1595, 1596, 3, 82, 41, 0, 1596, 1597, 5, 94, 0, 0, 1597, 1598, 3, 82, 41, 0, 1598, 1602, 1, 0, 0, 0, 1599, 1600, 5, 105, 0, 0, 1600, 1602, 3, 86, 43, 0, 1601, 1592, 1, 0, 0, 0, 1601, 1594, 1, 0, 0, 0, 1601, 1599, 1, 0, 0, 0, 1602, 81, 1, 0, 0, 0, 1603, 1604, 5, 2, 0, 0, 1604, 1609, 3, 84, 42, 0, 1605, 1606, 5, 6, 0, 0, 1606, 1608, 3, 84, 42, 0, 1607, 1605, 1, 0, 0, 0, 1608, 1611, 1, 0, 0, 0, 1609, 1607, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1612, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1612, 1613, 5, 3, 0, 0, 1613, 83, 1, 0, 0, 0, 1614, 1618, 3, 534, 267, 0, 1615, 1618, 5, 262, 0, 0, 1616, 1618, 5, 260, 0, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, 1617, 1616, 1, 0, 0, 0, 1618, 85, 1, 0, 0, 0, 1619, 1620, 5, 2, 0, 0, 1620, 1621, 5, 533, 0, 0, 1621, 1622, 3, 202, 101, 0, 1622, 1623, 5, 6, 0, 0, 1623, 1624, 5, 534, 0, 0, 1624, 1625, 3, 202, 101, 0, 1625, 1626, 5, 3, 0, 0, 1626, 87, 1, 0, 0, 0, 1627, 1628, 3, 90, 45, 0, 1628, 1629, 3, 106, 53, 0, 1629, 1634, 1, 0, 0, 0, 1630, 1631, 5, 436, 0, 0, 1631, 1632, 5, 285, 0, 0, 1632, 1634, 3, 780, 390, 0, 1633, 1627, 1, 0, 0, 0, 1633, 1630, 1, 0, 0, 0, 1634, 89, 1, 0, 0, 0, 1635, 1636, 5, 435, 0, 0, 1636, 1637, 5, 285, 0, 0, 1637, 1638, 3, 780, 390, 0, 1638, 91, 1, 0, 0, 0, 1639, 1642, 5, 133, 0, 0, 1640, 1641, 5, 45, 0, 0, 1641, 1643, 3, 818, 409, 0, 1642, 1640, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1873, 3, 142, 71, 0, 1645, 1646, 5, 138, 0, 0, 1646, 1647, 5, 45, 0, 0, 1647, 1651, 3, 818, 409, 0, 1648, 1650, 3, 272, 136, 0, 1649, 1648, 1, 0, 0, 0, 1650, 1653, 1, 0, 0, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 1873, 1, 0, 0, 0, 1653, 1651, 1, 0, 0, 0, 1654, 1655, 5, 372, 0, 0, 1655, 1656, 5, 45, 0, 0, 1656, 1873, 3, 818, 409, 0, 1657, 1658, 5, 191, 0, 0, 1658, 1660, 5, 45, 0, 0, 1659, 1661, 3, 422, 211, 0, 1660, 1659, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662, 1664, 3, 818, 409, 0, 1663, 1665, 3, 96, 48, 0, 1664, 1663, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1873, 1, 0, 0, 0, 1666, 1667, 5, 333, 0, 0, 1667, 1668, 5, 379, 0, 0, 1668, 1873, 7, 12, 0, 0, 1669, 1670, 5, 158, 0, 0, 1670, 1671, 5, 80, 0, 0, 1671, 1873, 3, 818, 409, 0, 1672, 1673, 5, 333, 0, 0, 1673, 1873, 7, 13, 0, 0, 1674, 1676, 5, 193, 0, 0, 1675, 1677, 7, 14, 0, 0, 1676, 1675, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1873, 5, 357, 0, 0, 1679, 1680, 5, 186, 0, 0, 1680, 1684, 5, 357, 0, 0, 1681, 1685, 5, 30, 0, 0, 1682, 1685, 5, 99, 0, 0, 1683, 1685, 3, 818, 409, 0, 1684, 1681, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1684, 1683, 1, 0, 0, 0, 1685, 1873, 1, 0, 0, 0, 1686, 1687, 5, 193, 0, 0, 1687, 1688, 7, 14, 0, 0, 1688, 1689, 5, 321, 0, 0, 1689, 1873, 3, 818, 409, 0, 1690, 1691, 5, 186, 0, 0, 1691, 1692, 5, 321, 0, 0, 1692, 1873, 3, 818, 409, 0, 1693, 1695, 5, 269, 0, 0, 1694, 1693, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 5, 228, 0, 0, 1697, 1873, 3, 780, 390, 0, 1698, 1699, 5, 275, 0, 0, 1699, 1873, 3, 316, 158, 0, 1700, 1701, 5, 77, 0, 0, 1701, 1873, 5, 275, 0, 0, 1702, 1703, 5, 282, 0, 0, 1703, 1704, 5, 94, 0, 0, 1704, 1873, 3, 814, 407, 0, 1705, 1706, 5, 333, 0, 0, 1706, 1707, 5, 351, 0, 0, 1707, 1873, 3, 768, 384, 0, 1708, 1709, 5, 312, 0, 0, 1709, 1714, 5, 219, 0, 0, 1710, 1715, 5, 270, 0, 0, 1711, 1715, 5, 113, 0, 0, 1712, 1715, 5, 53, 0, 0, 1713, 1715, 3, 180, 90, 0, 1714, 1710, 1, 0, 0, 0, 1714, 1711, 1, 0, 0, 0, 1714, 1712, 1, 0, 0, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1873, 1, 0, 0, 0, 1716, 1723, 5, 193, 0, 0, 1717, 1723, 5, 186, 0, 0, 1718, 1720, 5, 269, 0, 0, 1719, 1718, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1723, 5, 209, 0, 0, 1722, 1716, 1, 0, 0, 0, 1722, 1717, 1, 0, 0, 0, 1722, 1719, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 5, 414, 0, 0, 1725, 1726, 5, 251, 0, 0, 1726, 1873, 5, 327, 0, 0, 1727, 1729, 5, 191, 0, 0, 1728, 1730, 5, 44, 0, 0, 1729, 1728, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1732, 1, 0, 0, 0, 1731, 1733, 3, 422, 211, 0, 1732, 1731, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1736, 3, 800, 400, 0, 1735, 1737, 3, 96, 48, 0, 1736, 1735, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1873, 1, 0, 0, 0, 1738, 1740, 5, 133, 0, 0, 1739, 1741, 5, 44, 0, 0, 1740, 1739, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1743, 1, 0, 0, 0, 1742, 1744, 3, 294, 147, 0, 1743, 1742, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1873, 3, 132, 66, 0, 1746, 1748, 5, 138, 0, 0, 1747, 1749, 5, 44, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1753, 3, 800, 400, 0, 1751, 1754, 3, 94, 47, 0, 1752, 1754, 3, 222, 111, 0, 1753, 1751, 1, 0, 0, 0, 1753, 1752, 1, 0, 0, 0, 1754, 1873, 1, 0, 0, 0, 1755, 1757, 5, 138, 0, 0, 1756, 1758, 5, 44, 0, 0, 1757, 1756, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1759, 1, 0, 0, 0, 1759, 1760, 3, 800, 400, 0, 1760, 1761, 7, 15, 0, 0, 1761, 1762, 5, 77, 0, 0, 1762, 1763, 5, 78, 0, 0, 1763, 1873, 1, 0, 0, 0, 1764, 1766, 5, 138, 0, 0, 1765, 1767, 5, 44, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 3, 800, 400, 0, 1769, 1770, 5, 191, 0, 0, 1770, 1772, 5, 437, 0, 0, 1771, 1773, 3, 422, 211, 0, 1772, 1771, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1873, 1, 0, 0, 0, 1774, 1776, 5, 138, 0, 0, 1775, 1777, 5, 44, 0, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 3, 800, 400, 0, 1779, 1780, 5, 333, 0, 0, 1780, 1781, 5, 342, 0, 0, 1781, 1782, 3, 812, 406, 0, 1782, 1873, 1, 0, 0, 0, 1783, 1785, 5, 138, 0, 0, 1784, 1786, 5, 44, 0, 0, 1785, 1784, 1, 0, 0, 0, 1785, 1786, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 1789, 3, 800, 400, 0, 1788, 1783, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1791, 7, 16, 0, 0, 1791, 1873, 3, 100, 50, 0, 1792, 1794, 5, 138, 0, 0, 1793, 1795, 5, 44, 0, 0, 1794, 1793, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 3, 800, 400, 0, 1797, 1798, 5, 333, 0, 0, 1798, 1799, 5, 345, 0, 0, 1799, 1800, 3, 818, 409, 0, 1800, 1873, 1, 0, 0, 0, 1801, 1803, 5, 138, 0, 0, 1802, 1804, 5, 44, 0, 0, 1803, 1802, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1806, 3, 800, 400, 0, 1806, 1807, 5, 133, 0, 0, 1807, 1808, 5, 438, 0, 0, 1808, 1809, 3, 138, 69, 0, 1809, 1810, 5, 36, 0, 0, 1810, 1819, 5, 219, 0, 0, 1811, 1813, 5, 2, 0, 0, 1812, 1814, 3, 200, 100, 0, 1813, 1812, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1818, 5, 3, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819, 1811, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1873, 1, 0, 0, 0, 1821, 1823, 5, 138, 0, 0, 1822, 1824, 5, 44, 0, 0, 1823, 1822, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1839, 3, 800, 400, 0, 1826, 1831, 5, 314, 0, 0, 1827, 1829, 5, 105, 0, 0, 1828, 1827, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 1832, 3, 202, 101, 0, 1831, 1828, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1840, 1, 0, 0, 0, 1833, 1837, 5, 333, 0, 0, 1834, 1838, 3, 200, 100, 0, 1835, 1836, 5, 438, 0, 0, 1836, 1838, 3, 138, 69, 0, 1837, 1834, 1, 0, 0, 0, 1837, 1835, 1, 0, 0, 0, 1838, 1840, 1, 0, 0, 0, 1839, 1826, 1, 0, 0, 0, 1839, 1833, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1839, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 1873, 1, 0, 0, 0, 1843, 1845, 5, 138, 0, 0, 1844, 1846, 5, 44, 0, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 1848, 3, 800, 400, 0, 1848, 1849, 5, 191, 0, 0, 1849, 1851, 5, 219, 0, 0, 1850, 1852, 3, 422, 211, 0, 1851, 1850, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1873, 1, 0, 0, 0, 1853, 1855, 5, 138, 0, 0, 1854, 1856, 5, 44, 0, 0, 1855, 1854, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 1857, 1, 0, 0, 0, 1857, 1860, 3, 800, 400, 0, 1858, 1859, 5, 333, 0, 0, 1859, 1861, 5, 174, 0, 0, 1860, 1858, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1862, 1, 0, 0, 0, 1862, 1863, 5, 360, 0, 0, 1863, 1865, 3, 652, 326, 0, 1864, 1866, 3, 98, 49, 0, 1865, 1864, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1869, 1, 0, 0, 0, 1867, 1868, 5, 100, 0, 0, 1868, 1870, 3, 674, 337, 0, 1869, 1867, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1873, 1, 0, 0, 0, 1871, 1873, 3, 222, 111, 0, 1872, 1639, 1, 0, 0, 0, 1872, 1645, 1, 0, 0, 0, 1872, 1654, 1, 0, 0, 0, 1872, 1657, 1, 0, 0, 0, 1872, 1666, 1, 0, 0, 0, 1872, 1669, 1, 0, 0, 0, 1872, 1672, 1, 0, 0, 0, 1872, 1674, 1, 0, 0, 0, 1872, 1679, 1, 0, 0, 0, 1872, 1686, 1, 0, 0, 0, 1872, 1690, 1, 0, 0, 0, 1872, 1694, 1, 0, 0, 0, 1872, 1698, 1, 0, 0, 0, 1872, 1700, 1, 0, 0, 0, 1872, 1702, 1, 0, 0, 0, 1872, 1705, 1, 0, 0, 0, 1872, 1708, 1, 0, 0, 0, 1872, 1722, 1, 0, 0, 0, 1872, 1727, 1, 0, 0, 0, 1872, 1738, 1, 0, 0, 0, 1872, 1746, 1, 0, 0, 0, 1872, 1755, 1, 0, 0, 0, 1872, 1764, 1, 0, 0, 0, 1872, 1774, 1, 0, 0, 0, 1872, 1788, 1, 0, 0, 0, 1872, 1792, 1, 0, 0, 0, 1872, 1801, 1, 0, 0, 0, 1872, 1821, 1, 0, 0, 0, 1872, 1843, 1, 0, 0, 0, 1872, 1853, 1, 0, 0, 0, 1872, 1871, 1, 0, 0, 0, 1873, 93, 1, 0, 0, 0, 1874, 1875, 5, 333, 0, 0, 1875, 1876, 5, 53, 0, 0, 1876, 1880, 3, 674, 337, 0, 1877, 1878, 5, 191, 0, 0, 1878, 1880, 5, 53, 0, 0, 1879, 1874, 1, 0, 0, 0, 1879, 1877, 1, 0, 0, 0, 1880, 95, 1, 0, 0, 0, 1881, 1882, 7, 17, 0, 0, 1882, 97, 1, 0, 0, 0, 1883, 1884, 5, 43, 0, 0, 1884, 1885, 3, 316, 158, 0, 1885, 99, 1, 0, 0, 0, 1886, 1887, 5, 2, 0, 0, 1887, 1892, 3, 104, 52, 0, 1888, 1889, 5, 6, 0, 0, 1889, 1891, 3, 104, 52, 0, 1890, 1888, 1, 0, 0, 0, 1891, 1894, 1, 0, 0, 0, 1892, 1890, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1895, 1, 0, 0, 0, 1894, 1892, 1, 0, 0, 0, 1895, 1896, 5, 3, 0, 0, 1896, 101, 1, 0, 0, 0, 1897, 1898, 5, 105, 0, 0, 1898, 1899, 3, 100, 50, 0, 1899, 103, 1, 0, 0, 0, 1900, 1905, 3, 824, 412, 0, 1901, 1902, 5, 10, 0, 0, 1902, 1906, 3, 288, 144, 0, 1903, 1904, 5, 11, 0, 0, 1904, 1906, 3, 286, 143, 0, 1905, 1901, 1, 0, 0, 0, 1905, 1903, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 105, 1, 0, 0, 0, 1907, 1908, 5, 62, 0, 0, 1908, 1909, 5, 422, 0, 0, 1909, 1910, 5, 105, 0, 0, 1910, 1911, 5, 2, 0, 0, 1911, 1912, 3, 822, 411, 0, 1912, 1919, 5, 571, 0, 0, 1913, 1914, 5, 6, 0, 0, 1914, 1915, 3, 822, 411, 0, 1915, 1916, 5, 571, 0, 0, 1916, 1918, 1, 0, 0, 0, 1917, 1913, 1, 0, 0, 0, 1918, 1921, 1, 0, 0, 0, 1919, 1917, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1919, 1, 0, 0, 0, 1922, 1923, 5, 3, 0, 0, 1923, 1937, 1, 0, 0, 0, 1924, 1925, 5, 62, 0, 0, 1925, 1926, 5, 422, 0, 0, 1926, 1927, 5, 68, 0, 0, 1927, 1937, 3, 534, 267, 0, 1928, 1929, 5, 62, 0, 0, 1929, 1930, 5, 422, 0, 0, 1930, 1931, 5, 64, 0, 0, 1931, 1932, 3, 534, 267, 0, 1932, 1933, 5, 94, 0, 0, 1933, 1934, 3, 534, 267, 0, 1934, 1937, 1, 0, 0, 0, 1935, 1937, 5, 53, 0, 0, 1936, 1907, 1, 0, 0, 0, 1936, 1924, 1, 0, 0, 0, 1936, 1928, 1, 0, 0, 0, 1936, 1935, 1, 0, 0, 0, 1937, 107, 1, 0, 0, 0, 1938, 1939, 5, 138, 0, 0, 1939, 1940, 5, 360, 0, 0, 1940, 1941, 3, 316, 158, 0, 1941, 1946, 3, 110, 55, 0, 1942, 1943, 5, 6, 0, 0, 1943, 1945, 3, 110, 55, 0, 1944, 1942, 1, 0, 0, 0, 1945, 1948, 1, 0, 0, 0, 1946, 1944, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 109, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1949, 1950, 5, 133, 0, 0, 1950, 1951, 5, 143, 0, 0, 1951, 1953, 3, 644, 322, 0, 1952, 1954, 3, 96, 48, 0, 1953, 1952, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 1980, 1, 0, 0, 0, 1955, 1956, 5, 191, 0, 0, 1956, 1958, 5, 143, 0, 0, 1957, 1959, 3, 422, 211, 0, 1958, 1957, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1962, 3, 818, 409, 0, 1961, 1963, 3, 96, 48, 0, 1962, 1961, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1980, 1, 0, 0, 0, 1964, 1965, 5, 138, 0, 0, 1965, 1966, 5, 143, 0, 0, 1966, 1969, 3, 818, 409, 0, 1967, 1968, 5, 333, 0, 0, 1968, 1970, 5, 174, 0, 0, 1969, 1967, 1, 0, 0, 0, 1969, 1970, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1972, 5, 360, 0, 0, 1972, 1974, 3, 652, 326, 0, 1973, 1975, 3, 98, 49, 0, 1974, 1973, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1977, 1, 0, 0, 0, 1976, 1978, 3, 96, 48, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0, 1979, 1949, 1, 0, 0, 0, 1979, 1955, 1, 0, 0, 0, 1979, 1964, 1, 0, 0, 0, 1980, 111, 1, 0, 0, 0, 1981, 1984, 5, 157, 0, 0, 1982, 1985, 3, 818, 409, 0, 1983, 1985, 5, 30, 0, 0, 1984, 1982, 1, 0, 0, 0, 1984, 1983, 1, 0, 0, 0, 1985, 113, 1, 0, 0, 0, 1986, 1988, 5, 169, 0, 0, 1987, 1989, 5, 107, 0, 0, 1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1992, 3, 774, 387, 0, 1991, 1993, 3, 144, 72, 0, 1992, 1991, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1996, 7, 18, 0, 0, 1995, 1997, 5, 297, 0, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 2001, 1, 0, 0, 0, 1998, 2002, 3, 808, 404, 0, 1999, 2002, 5, 343, 0, 0, 2000, 2002, 5, 344, 0, 0, 2001, 1998, 1, 0, 0, 0, 2001, 1999, 1, 0, 0, 0, 2001, 2000, 1, 0, 0, 0, 2002, 2008, 1, 0, 0, 0, 2003, 2005, 5, 100, 0, 0, 2004, 2003, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 2006, 1, 0, 0, 0, 2006, 2007, 5, 184, 0, 0, 2007, 2009, 3, 808, 404, 0, 2008, 2004, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2011, 1, 0, 0, 0, 2010, 2012, 5, 105, 0, 0, 2011, 2010, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 3, 116, 58, 0, 2014, 2016, 3, 638, 319, 0, 2015, 2014, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 2036, 1, 0, 0, 0, 2017, 2018, 5, 169, 0, 0, 2018, 2019, 5, 2, 0, 0, 2019, 2020, 3, 530, 265, 0, 2020, 2021, 5, 3, 0, 0, 2021, 2023, 5, 94, 0, 0, 2022, 2024, 5, 297, 0, 0, 2023, 2022, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2028, 1, 0, 0, 0, 2025, 2029, 3, 808, 404, 0, 2026, 2029, 5, 343, 0, 0, 2027, 2029, 5, 344, 0, 0, 2028, 2025, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2028, 2027, 1, 0, 0, 0, 2029, 2031, 1, 0, 0, 0, 2030, 2032, 5, 105, 0, 0, 2031, 2030, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2034, 3, 116, 58, 0, 2034, 2036, 1, 0, 0, 0, 2035, 1986, 1, 0, 0, 0, 2035, 2017, 1, 0, 0, 0, 2036, 115, 1, 0, 0, 0, 2037, 2061, 5, 107, 0, 0, 2038, 2061, 5, 112, 0, 0, 2039, 2041, 7, 19, 0, 0, 2040, 2042, 5, 36, 0, 0, 2041, 2040, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2061, 3, 808, 404, 0, 2044, 2061, 5, 171, 0, 0, 2045, 2061, 5, 216, 0, 0, 2046, 2047, 5, 209, 0, 0, 2047, 2050, 5, 298, 0, 0, 2048, 2051, 3, 148, 74, 0, 2049, 2051, 5, 9, 0, 0, 2050, 2048, 1, 0, 0, 0, 2050, 2049, 1, 0, 0, 0, 2051, 2061, 1, 0, 0, 0, 2052, 2054, 5, 209, 0, 0, 2053, 2055, 5, 77, 0, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2057, 5, 78, 0, 0, 2057, 2061, 3, 148, 74, 0, 2058, 2059, 5, 194, 0, 0, 2059, 2061, 3, 808, 404, 0, 2060, 2037, 1, 0, 0, 0, 2060, 2038, 1, 0, 0, 0, 2060, 2039, 1, 0, 0, 0, 2060, 2044, 1, 0, 0, 0, 2060, 2045, 1, 0, 0, 0, 2060, 2046, 1, 0, 0, 0, 2060, 2052, 1, 0, 0, 0, 2060, 2058, 1, 0, 0, 0, 2061, 2064, 1, 0, 0, 0, 2062, 2060, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2077, 1, 0, 0, 0, 2064, 2062, 1, 0, 0, 0, 2065, 2066, 5, 2, 0, 0, 2066, 2071, 3, 118, 59, 0, 2067, 2068, 5, 6, 0, 0, 2068, 2070, 3, 118, 59, 0, 2069, 2067, 1, 0, 0, 0, 2070, 2073, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2074, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2074, 2075, 5, 3, 0, 0, 2075, 2077, 1, 0, 0, 0, 2076, 2062, 1, 0, 0, 0, 2076, 2065, 1, 0, 0, 0, 2077, 117, 1, 0, 0, 0, 2078, 2093, 3, 824, 412, 0, 2079, 2094, 3, 54, 27, 0, 2080, 2094, 3, 202, 101, 0, 2081, 2094, 5, 9, 0, 0, 2082, 2083, 5, 2, 0, 0, 2083, 2088, 3, 52, 26, 0, 2084, 2085, 5, 6, 0, 0, 2085, 2087, 3, 52, 26, 0, 2086, 2084, 1, 0, 0, 0, 2087, 2090, 1, 0, 0, 0, 2088, 2086, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2091, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2092, 5, 3, 0, 0, 2092, 2094, 1, 0, 0, 0, 2093, 2079, 1, 0, 0, 0, 2093, 2080, 1, 0, 0, 0, 2093, 2081, 1, 0, 0, 0, 2093, 2082, 1, 0, 0, 0, 2093, 2094, 1, 0, 0, 0, 2094, 119, 1, 0, 0, 0, 2095, 2097, 5, 46, 0, 0, 2096, 2098, 3, 122, 61, 0, 2097, 2096, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2101, 5, 92, 0, 0, 2100, 2102, 3, 294, 147, 0, 2101, 2100, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2169, 3, 772, 386, 0, 2104, 2106, 5, 2, 0, 0, 2105, 2107, 3, 126, 63, 0, 2106, 2105, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2110, 5, 3, 0, 0, 2109, 2111, 3, 164, 82, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2113, 1, 0, 0, 0, 2112, 2114, 3, 166, 83, 0, 2113, 2112, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 1, 0, 0, 0, 2115, 2117, 3, 170, 85, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2119, 1, 0, 0, 0, 2118, 2120, 3, 172, 86, 0, 2119, 2118, 1, 0, 0, 0, 2119, 2120, 1, 0, 0, 0, 2120, 2122, 1, 0, 0, 0, 2121, 2123, 3, 174, 87, 0, 2122, 2121, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2125, 1, 0, 0, 0, 2124, 2126, 3, 176, 88, 0, 2125, 2124, 1, 0, 0, 0, 2125, 2126, 1, 0, 0, 0, 2126, 2170, 1, 0, 0, 0, 2127, 2128, 5, 275, 0, 0, 2128, 2130, 3, 316, 158, 0, 2129, 2131, 3, 124, 62, 0, 2130, 2129, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2133, 1, 0, 0, 0, 2132, 2134, 3, 166, 83, 0, 2133, 2132, 1, 0, 0, 0, 2133, 2134, 1, 0, 0, 0, 2134, 2136, 1, 0, 0, 0, 2135, 2137, 3, 170, 85, 0, 2136, 2135, 1, 0, 0, 0, 2136, 2137, 1, 0, 0, 0, 2137, 2139, 1, 0, 0, 0, 2138, 2140, 3, 172, 86, 0, 2139, 2138, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142, 1, 0, 0, 0, 2141, 2143, 3, 174, 87, 0, 2142, 2141, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2145, 1, 0, 0, 0, 2144, 2146, 3, 176, 88, 0, 2145, 2144, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2170, 1, 0, 0, 0, 2147, 2148, 5, 285, 0, 0, 2148, 2149, 5, 275, 0, 0, 2149, 2151, 3, 780, 390, 0, 2150, 2152, 3, 124, 62, 0, 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2155, 3, 106, 53, 0, 2154, 2156, 3, 166, 83, 0, 2155, 2154, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2158, 1, 0, 0, 0, 2157, 2159, 3, 170, 85, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2161, 1, 0, 0, 0, 2160, 2162, 3, 172, 86, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2164, 1, 0, 0, 0, 2163, 2165, 3, 174, 87, 0, 2164, 2163, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2167, 1, 0, 0, 0, 2166, 2168, 3, 176, 88, 0, 2167, 2166, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2170, 1, 0, 0, 0, 2169, 2104, 1, 0, 0, 0, 2169, 2127, 1, 0, 0, 0, 2169, 2147, 1, 0, 0, 0, 2170, 121, 1, 0, 0, 0, 2171, 2177, 5, 354, 0, 0, 2172, 2177, 5, 352, 0, 0, 2173, 2174, 7, 20, 0, 0, 2174, 2177, 7, 21, 0, 0, 2175, 2177, 5, 367, 0, 0, 2176, 2171, 1, 0, 0, 0, 2176, 2172, 1, 0, 0, 0, 2176, 2173, 1, 0, 0, 0, 2176, 2175, 1, 0, 0, 0, 2177, 123, 1, 0, 0, 0, 2178, 2179, 5, 2, 0, 0, 2179, 2184, 3, 130, 65, 0, 2180, 2181, 5, 6, 0, 0, 2181, 2183, 3, 130, 65, 0, 2182, 2180, 1, 0, 0, 0, 2183, 2186, 1, 0, 0, 0, 2184, 2182, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2187, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2187, 2188, 5, 3, 0, 0, 2188, 125, 1, 0, 0, 0, 2189, 2194, 3, 128, 64, 0, 2190, 2191, 5, 6, 0, 0, 2191, 2193, 3, 128, 64, 0, 2192, 2190, 1, 0, 0, 0, 2193, 2196, 1, 0, 0, 0, 2194, 2192, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 127, 1, 0, 0, 0, 2196, 2194, 1, 0, 0, 0, 2197, 2198, 5, 45, 0, 0, 2198, 2200, 3, 818, 409, 0, 2199, 2197, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2213, 3, 142, 71, 0, 2202, 2213, 3, 132, 66, 0, 2203, 2204, 5, 120, 0, 0, 2204, 2209, 3, 780, 390, 0, 2205, 2206, 7, 22, 0, 0, 2206, 2208, 3, 140, 70, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2211, 1, 0, 0, 0, 2209, 2207, 1, 0, 0, 0, 2209, 2210, 1, 0, 0, 0, 2210, 2213, 1, 0, 0, 0, 2211, 2209, 1, 0, 0, 0, 2212, 2199, 1, 0, 0, 0, 2212, 2202, 1, 0, 0, 0, 2212, 2203, 1, 0, 0, 0, 2213, 129, 1, 0, 0, 0, 2214, 2217, 3, 802, 401, 0, 2215, 2216, 5, 105, 0, 0, 2216, 2218, 5, 280, 0, 0, 2217, 2215, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2222, 1, 0, 0, 0, 2219, 2221, 3, 134, 67, 0, 2220, 2219, 1, 0, 0, 0, 2221, 2224, 1, 0, 0, 0, 2222, 2220, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2231, 1, 0, 0, 0, 2224, 2222, 1, 0, 0, 0, 2225, 2226, 5, 45, 0, 0, 2226, 2228, 3, 818, 409, 0, 2227, 2225, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2231, 3, 142, 71, 0, 2230, 2214, 1, 0, 0, 0, 2230, 2227, 1, 0, 0, 0, 2231, 131, 1, 0, 0, 0, 2232, 2233, 3, 802, 401, 0, 2233, 2235, 3, 652, 326, 0, 2234, 2236, 3, 220, 110, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2246, 1, 0, 0, 0, 2237, 2244, 5, 345, 0, 0, 2238, 2245, 5, 544, 0, 0, 2239, 2245, 5, 205, 0, 0, 2240, 2245, 5, 545, 0, 0, 2241, 2245, 5, 546, 0, 0, 2242, 2245, 5, 53, 0, 0, 2243, 2245, 3, 818, 409, 0, 2244, 2238, 1, 0, 0, 0, 2244, 2239, 1, 0, 0, 0, 2244, 2240, 1, 0, 0, 0, 2244, 2241, 1, 0, 0, 0, 2244, 2242, 1, 0, 0, 0, 2244, 2243, 1, 0, 0, 0, 2245, 2247, 1, 0, 0, 0, 2246, 2237, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2250, 1, 0, 0, 0, 2248, 2249, 5, 543, 0, 0, 2249, 2251, 3, 818, 409, 0, 2250, 2248, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2253, 1, 0, 0, 0, 2252, 2254, 3, 98, 49, 0, 2253, 2252, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2257, 1, 0, 0, 0, 2255, 2256, 5, 105, 0, 0, 2256, 2258, 5, 280, 0, 0, 2257, 2255, 1, 0, 0, 0, 2257, 2258, 1, 0, 0, 0, 2258, 2262, 1, 0, 0, 0, 2259, 2261, 3, 134, 67, 0, 2260, 2259, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 133, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 5, 45, 0, 0, 2266, 2268, 3, 818, 409, 0, 2267, 2265, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2269, 1, 0, 0, 0, 2269, 2274, 3, 136, 68, 0, 2270, 2272, 5, 77, 0, 0, 2271, 2270, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 2275, 5, 54, 0, 0, 2274, 2271, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2278, 1, 0, 0, 0, 2276, 2277, 5, 69, 0, 0, 2277, 2279, 7, 9, 0, 0, 2278, 2276, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 135, 1, 0, 0, 0, 2280, 2282, 5, 77, 0, 0, 2281, 2280, 1, 0, 0, 0, 2281, 2282, 1, 0, 0, 0, 2282, 2283, 1, 0, 0, 0, 2283, 2361, 5, 78, 0, 0, 2284, 2286, 5, 98, 0, 0, 2285, 2287, 3, 400, 200, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2289, 1, 0, 0, 0, 2288, 2290, 3, 178, 89, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2361, 1, 0, 0, 0, 2291, 2297, 5, 98, 0, 0, 2292, 2294, 5, 273, 0, 0, 2293, 2295, 5, 77, 0, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2298, 5, 56, 0, 0, 2297, 2292, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2301, 1, 0, 0, 0, 2299, 2300, 5, 441, 0, 0, 2300, 2302, 3, 360, 180, 0, 2301, 2299, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2304, 1, 0, 0, 0, 2303, 2305, 3, 572, 286, 0, 2304, 2303, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, 1, 0, 0, 0, 2306, 2308, 3, 178, 89, 0, 2307, 2306, 1, 0, 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2361, 1, 0, 0, 0, 2309, 2310, 5, 85, 0, 0, 2310, 2312, 5, 245, 0, 0, 2311, 2313, 3, 400, 200, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2315, 1, 0, 0, 0, 2314, 2316, 3, 178, 89, 0, 2315, 2314, 1, 0, 0, 0, 2315, 2316, 1, 0, 0, 0, 2316, 2361, 1, 0, 0, 0, 2317, 2318, 5, 42, 0, 0, 2318, 2319, 5, 2, 0, 0, 2319, 2320, 3, 674, 337, 0, 2320, 2323, 5, 3, 0, 0, 2321, 2322, 5, 269, 0, 0, 2322, 2324, 5, 228, 0, 0, 2323, 2321, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2361, 1, 0, 0, 0, 2325, 2326, 5, 53, 0, 0, 2326, 2361, 3, 682, 341, 0, 2327, 2328, 5, 438, 0, 0, 2328, 2329, 3, 138, 69, 0, 2329, 2346, 5, 36, 0, 0, 2330, 2339, 5, 219, 0, 0, 2331, 2333, 5, 2, 0, 0, 2332, 2334, 3, 200, 100, 0, 2333, 2332, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2333, 1, 0, 0, 0, 2335, 2336, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2338, 5, 3, 0, 0, 2338, 2340, 1, 0, 0, 0, 2339, 2331, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2347, 1, 0, 0, 0, 2341, 2342, 5, 2, 0, 0, 2342, 2343, 3, 674, 337, 0, 2343, 2344, 5, 3, 0, 0, 2344, 2345, 5, 440, 0, 0, 2345, 2347, 1, 0, 0, 0, 2346, 2330, 1, 0, 0, 0, 2346, 2341, 1, 0, 0, 0, 2347, 2361, 1, 0, 0, 0, 2348, 2349, 5, 86, 0, 0, 2349, 2351, 3, 780, 390, 0, 2350, 2352, 3, 144, 72, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2354, 1, 0, 0, 0, 2353, 2355, 3, 152, 76, 0, 2354, 2353, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2357, 1, 0, 0, 0, 2356, 2358, 3, 156, 78, 0, 2357, 2356, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2361, 1, 0, 0, 0, 2359, 2361, 3, 98, 49, 0, 2360, 2281, 1, 0, 0, 0, 2360, 2284, 1, 0, 0, 0, 2360, 2291, 1, 0, 0, 0, 2360, 2309, 1, 0, 0, 0, 2360, 2317, 1, 0, 0, 0, 2360, 2325, 1, 0, 0, 0, 2360, 2327, 1, 0, 0, 0, 2360, 2348, 1, 0, 0, 0, 2360, 2359, 1, 0, 0, 0, 2361, 137, 1, 0, 0, 0, 2362, 2366, 5, 139, 0, 0, 2363, 2364, 5, 147, 0, 0, 2364, 2366, 5, 53, 0, 0, 2365, 2362, 1, 0, 0, 0, 2365, 2363, 1, 0, 0, 0, 2366, 139, 1, 0, 0, 0, 2367, 2368, 7, 23, 0, 0, 2368, 141, 1, 0, 0, 0, 2369, 2370, 5, 42, 0, 0, 2370, 2371, 5, 2, 0, 0, 2371, 2372, 3, 674, 337, 0, 2372, 2376, 5, 3, 0, 0, 2373, 2375, 3, 272, 136, 0, 2374, 2373, 1, 0, 0, 0, 2375, 2378, 1, 0, 0, 0, 2376, 2374, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2466, 1, 0, 0, 0, 2378, 2376, 1, 0, 0, 0, 2379, 2383, 5, 98, 0, 0, 2380, 2381, 5, 85, 0, 0, 2381, 2383, 5, 245, 0, 0, 2382, 2379, 1, 0, 0, 0, 2382, 2380, 1, 0, 0, 0, 2383, 2407, 1, 0, 0, 0, 2384, 2386, 3, 144, 72, 0, 2385, 2387, 3, 150, 75, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2389, 1, 0, 0, 0, 2388, 2390, 3, 400, 200, 0, 2389, 2388, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2392, 1, 0, 0, 0, 2391, 2393, 3, 178, 89, 0, 2392, 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2397, 1, 0, 0, 0, 2394, 2396, 3, 272, 136, 0, 2395, 2394, 1, 0, 0, 0, 2396, 2399, 1, 0, 0, 0, 2397, 2395, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2408, 1, 0, 0, 0, 2399, 2397, 1, 0, 0, 0, 2400, 2404, 3, 180, 90, 0, 2401, 2403, 3, 272, 136, 0, 2402, 2401, 1, 0, 0, 0, 2403, 2406, 1, 0, 0, 0, 2404, 2402, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2407, 2384, 1, 0, 0, 0, 2407, 2400, 1, 0, 0, 0, 2408, 2466, 1, 0, 0, 0, 2409, 2411, 5, 199, 0, 0, 2410, 2412, 3, 170, 85, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 2414, 5, 2, 0, 0, 2414, 2419, 3, 154, 77, 0, 2415, 2416, 5, 6, 0, 0, 2416, 2418, 3, 154, 77, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2421, 1, 0, 0, 0, 2419, 2417, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2422, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2422, 2424, 5, 3, 0, 0, 2423, 2425, 3, 150, 75, 0, 2424, 2423, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2427, 1, 0, 0, 0, 2426, 2428, 3, 400, 200, 0, 2427, 2426, 1, 0, 0, 0, 2427, 2428, 1, 0, 0, 0, 2428, 2430, 1, 0, 0, 0, 2429, 2431, 3, 178, 89, 0, 2430, 2429, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2437, 1, 0, 0, 0, 2432, 2433, 5, 103, 0, 0, 2433, 2434, 5, 2, 0, 0, 2434, 2435, 3, 674, 337, 0, 2435, 2436, 5, 3, 0, 0, 2436, 2438, 1, 0, 0, 0, 2437, 2432, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2442, 1, 0, 0, 0, 2439, 2441, 3, 272, 136, 0, 2440, 2439, 1, 0, 0, 0, 2441, 2444, 1, 0, 0, 0, 2442, 2440, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2466, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2445, 2446, 5, 63, 0, 0, 2446, 2447, 5, 245, 0, 0, 2447, 2448, 3, 144, 72, 0, 2448, 2449, 5, 86, 0, 0, 2449, 2451, 3, 780, 390, 0, 2450, 2452, 3, 144, 72, 0, 2451, 2450, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2455, 3, 152, 76, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2457, 1, 0, 0, 0, 2456, 2458, 3, 156, 78, 0, 2457, 2456, 1, 0, 0, 0, 2457, 2458, 1, 0, 0, 0, 2458, 2462, 1, 0, 0, 0, 2459, 2461, 3, 272, 136, 0, 2460, 2459, 1, 0, 0, 0, 2461, 2464, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2369, 1, 0, 0, 0, 2465, 2382, 1, 0, 0, 0, 2465, 2409, 1, 0, 0, 0, 2465, 2445, 1, 0, 0, 0, 2466, 143, 1, 0, 0, 0, 2467, 2468, 5, 2, 0, 0, 2468, 2469, 3, 148, 74, 0, 2469, 2470, 5, 3, 0, 0, 2470, 145, 1, 0, 0, 0, 2471, 2472, 5, 2, 0, 0, 2472, 2477, 3, 802, 401, 0, 2473, 2474, 5, 6, 0, 0, 2474, 2476, 3, 802, 401, 0, 2475, 2473, 1, 0, 0, 0, 2476, 2479, 1, 0, 0, 0, 2477, 2475, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 2480, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2480, 2481, 5, 3, 0, 0, 2481, 147, 1, 0, 0, 0, 2482, 2487, 3, 800, 400, 0, 2483, 2484, 5, 6, 0, 0, 2484, 2486, 3, 800, 400, 0, 2485, 2483, 1, 0, 0, 0, 2486, 2489, 1, 0, 0, 0, 2487, 2485, 1, 0, 0, 0, 2487, 2488, 1, 0, 0, 0, 2488, 149, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2490, 2491, 5, 441, 0, 0, 2491, 2492, 3, 144, 72, 0, 2492, 151, 1, 0, 0, 0, 2493, 2494, 5, 258, 0, 0, 2494, 2495, 7, 24, 0, 0, 2495, 153, 1, 0, 0, 0, 2496, 2497, 3, 362, 181, 0, 2497, 2504, 5, 105, 0, 0, 2498, 2505, 3, 414, 207, 0, 2499, 2500, 5, 278, 0, 0, 2500, 2501, 5, 2, 0, 0, 2501, 2502, 3, 414, 207, 0, 2502, 2503, 5, 3, 0, 0, 2503, 2505, 1, 0, 0, 0, 2504, 2498, 1, 0, 0, 0, 2504, 2499, 1, 0, 0, 0, 2505, 155, 1, 0, 0, 0, 2506, 2508, 3, 158, 79, 0, 2507, 2509, 3, 160, 80, 0, 2508, 2507, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2515, 1, 0, 0, 0, 2510, 2512, 3, 160, 80, 0, 2511, 2513, 3, 158, 79, 0, 2512, 2511, 1, 0, 0, 0, 2512, 2513, 1, 0, 0, 0, 2513, 2515, 1, 0, 0, 0, 2514, 2506, 1, 0, 0, 0, 2514, 2510, 1, 0, 0, 0, 2515, 157, 1, 0, 0, 0, 2516, 2517, 5, 80, 0, 0, 2517, 2518, 5, 369, 0, 0, 2518, 2519, 3, 162, 81, 0, 2519, 159, 1, 0, 0, 0, 2520, 2521, 5, 80, 0, 0, 2521, 2522, 5, 182, 0, 0, 2522, 2523, 3, 162, 81, 0, 2523, 161, 1, 0, 0, 0, 2524, 2525, 5, 269, 0, 0, 2525, 2534, 5, 132, 0, 0, 2526, 2534, 5, 315, 0, 0, 2527, 2534, 5, 150, 0, 0, 2528, 2529, 5, 333, 0, 0, 2529, 2531, 7, 25, 0, 0, 2530, 2532, 3, 148, 74, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2534, 1, 0, 0, 0, 2533, 2524, 1, 0, 0, 0, 2533, 2526, 1, 0, 0, 0, 2533, 2527, 1, 0, 0, 0, 2533, 2528, 1, 0, 0, 0, 2534, 163, 1, 0, 0, 0, 2535, 2536, 5, 238, 0, 0, 2536, 2537, 5, 2, 0, 0, 2537, 2538, 3, 760, 380, 0, 2538, 2539, 5, 3, 0, 0, 2539, 165, 1, 0, 0, 0, 2540, 2541, 5, 285, 0, 0, 2541, 2542, 5, 147, 0, 0, 2542, 2543, 3, 818, 409, 0, 2543, 2544, 5, 2, 0, 0, 2544, 2549, 3, 168, 84, 0, 2545, 2546, 5, 6, 0, 0, 2546, 2548, 3, 168, 84, 0, 2547, 2545, 1, 0, 0, 0, 2548, 2551, 1, 0, 0, 0, 2549, 2547, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2552, 1, 0, 0, 0, 2551, 2549, 1, 0, 0, 0, 2552, 2553, 5, 3, 0, 0, 2553, 167, 1, 0, 0, 0, 2554, 2561, 3, 800, 400, 0, 2555, 2561, 3, 688, 344, 0, 2556, 2557, 5, 2, 0, 0, 2557, 2558, 3, 674, 337, 0, 2558, 2559, 5, 3, 0, 0, 2559, 2561, 1, 0, 0, 0, 2560, 2554, 1, 0, 0, 0, 2560, 2555, 1, 0, 0, 0, 2560, 2556, 1, 0, 0, 0, 2561, 2563, 1, 0, 0, 0, 2562, 2564, 3, 98, 49, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 2566, 1, 0, 0, 0, 2565, 2567, 3, 316, 158, 0, 2566, 2565, 1, 0, 0, 0, 2566, 2567, 1, 0, 0, 0, 2567, 169, 1, 0, 0, 0, 2568, 2569, 5, 100, 0, 0, 2569, 2570, 3, 818, 409, 0, 2570, 171, 1, 0, 0, 0, 2571, 2572, 5, 105, 0, 0, 2572, 2576, 3, 100, 50, 0, 2573, 2574, 7, 26, 0, 0, 2574, 2576, 5, 277, 0, 0, 2575, 2571, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2576, 173, 1, 0, 0, 0, 2577, 2578, 5, 80, 0, 0, 2578, 2584, 5, 161, 0, 0, 2579, 2585, 5, 191, 0, 0, 2580, 2581, 5, 182, 0, 0, 2581, 2585, 5, 320, 0, 0, 2582, 2583, 5, 292, 0, 0, 2583, 2585, 5, 320, 0, 0, 2584, 2579, 1, 0, 0, 0, 2584, 2580, 1, 0, 0, 0, 2584, 2582, 1, 0, 0, 0, 2585, 175, 1, 0, 0, 0, 2586, 2587, 5, 351, 0, 0, 2587, 2588, 3, 770, 385, 0, 2588, 177, 1, 0, 0, 0, 2589, 2590, 5, 100, 0, 0, 2590, 2591, 5, 226, 0, 0, 2591, 2592, 3, 176, 88, 0, 2592, 179, 1, 0, 0, 0, 2593, 2594, 5, 100, 0, 0, 2594, 2595, 5, 226, 0, 0, 2595, 2596, 3, 818, 409, 0, 2596, 181, 1, 0, 0, 0, 2597, 2598, 5, 46, 0, 0, 2598, 2603, 5, 342, 0, 0, 2599, 2601, 3, 294, 147, 0, 2600, 2599, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2602, 1, 0, 0, 0, 2602, 2604, 3, 316, 158, 0, 2603, 2600, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 1, 0, 0, 0, 2605, 2607, 3, 144, 72, 0, 2606, 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2618, 5, 80, 0, 0, 2609, 2614, 3, 732, 366, 0, 2610, 2611, 5, 6, 0, 0, 2611, 2613, 3, 732, 366, 0, 2612, 2610, 1, 0, 0, 0, 2613, 2616, 1, 0, 0, 0, 2614, 2612, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2619, 1, 0, 0, 0, 2616, 2614, 1, 0, 0, 0, 2617, 2619, 3, 730, 365, 0, 2618, 2609, 1, 0, 0, 0, 2618, 2617, 1, 0, 0, 0, 2619, 2620, 1, 0, 0, 0, 2620, 2621, 3, 610, 305, 0, 2621, 183, 1, 0, 0, 0, 2622, 2623, 5, 138, 0, 0, 2623, 2625, 5, 342, 0, 0, 2624, 2626, 3, 422, 211, 0, 2625, 2624, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2628, 3, 316, 158, 0, 2628, 2629, 5, 333, 0, 0, 2629, 2630, 5, 342, 0, 0, 2630, 2631, 3, 812, 406, 0, 2631, 185, 1, 0, 0, 0, 2632, 2634, 5, 46, 0, 0, 2633, 2635, 3, 122, 61, 0, 2634, 2633, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2638, 5, 92, 0, 0, 2637, 2639, 3, 294, 147, 0, 2638, 2637, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 2640, 1, 0, 0, 0, 2640, 2641, 3, 188, 94, 0, 2641, 2642, 5, 36, 0, 0, 2642, 2644, 3, 560, 280, 0, 2643, 2645, 3, 190, 95, 0, 2644, 2643, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 187, 1, 0, 0, 0, 2646, 2648, 3, 772, 386, 0, 2647, 2649, 3, 146, 73, 0, 2648, 2647, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2651, 1, 0, 0, 0, 2650, 2652, 3, 170, 85, 0, 2651, 2650, 1, 0, 0, 0, 2651, 2652, 1, 0, 0, 0, 2652, 2654, 1, 0, 0, 0, 2653, 2655, 3, 172, 86, 0, 2654, 2653, 1, 0, 0, 0, 2654, 2655, 1, 0, 0, 0, 2655, 2657, 1, 0, 0, 0, 2656, 2658, 3, 174, 87, 0, 2657, 2656, 1, 0, 0, 0, 2657, 2658, 1, 0, 0, 0, 2658, 2660, 1, 0, 0, 0, 2659, 2661, 3, 176, 88, 0, 2660, 2659, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 189, 1, 0, 0, 0, 2662, 2666, 5, 105, 0, 0, 2663, 2667, 5, 174, 0, 0, 2664, 2665, 5, 269, 0, 0, 2665, 2667, 5, 174, 0, 0, 2666, 2663, 1, 0, 0, 0, 2666, 2664, 1, 0, 0, 0, 2667, 191, 1, 0, 0, 0, 2668, 2670, 5, 46, 0, 0, 2669, 2671, 5, 367, 0, 0, 2670, 2669, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2673, 5, 259, 0, 0, 2673, 2675, 5, 376, 0, 0, 2674, 2676, 3, 294, 147, 0, 2675, 2674, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 2679, 3, 776, 388, 0, 2678, 2680, 3, 146, 73, 0, 2679, 2678, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2682, 1, 0, 0, 0, 2681, 2683, 3, 170, 85, 0, 2682, 2681, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 2685, 1, 0, 0, 0, 2684, 2686, 3, 102, 51, 0, 2685, 2684, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2688, 1, 0, 0, 0, 2687, 2689, 3, 176, 88, 0, 2688, 2687, 1, 0, 0, 0, 2688, 2689, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 2691, 5, 36, 0, 0, 2691, 2693, 3, 560, 280, 0, 2692, 2694, 3, 190, 95, 0, 2693, 2692, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 193, 1, 0, 0, 0, 2695, 2696, 5, 305, 0, 0, 2696, 2697, 5, 259, 0, 0, 2697, 2699, 5, 376, 0, 0, 2698, 2700, 5, 109, 0, 0, 2699, 2698, 1, 0, 0, 0, 2699, 2700, 1, 0, 0, 0, 2700, 2701, 1, 0, 0, 0, 2701, 2703, 3, 778, 389, 0, 2702, 2704, 3, 190, 95, 0, 2703, 2702, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 195, 1, 0, 0, 0, 2705, 2707, 5, 46, 0, 0, 2706, 2708, 3, 122, 61, 0, 2707, 2706, 1, 0, 0, 0, 2707, 2708, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2711, 5, 328, 0, 0, 2710, 2712, 3, 294, 147, 0, 2711, 2710, 1, 0, 0, 0, 2711, 2712, 1, 0, 0, 0, 2712, 2713, 1, 0, 0, 0, 2713, 2719, 3, 780, 390, 0, 2714, 2716, 3, 200, 100, 0, 2715, 2714, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2715, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2720, 1, 0, 0, 0, 2719, 2715, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 197, 1, 0, 0, 0, 2721, 2722, 5, 138, 0, 0, 2722, 2724, 5, 328, 0, 0, 2723, 2725, 3, 422, 211, 0, 2724, 2723, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2728, 3, 780, 390, 0, 2727, 2729, 3, 200, 100, 0, 2728, 2727, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2728, 1, 0, 0, 0, 2730, 2731, 1, 0, 0, 0, 2731, 199, 1, 0, 0, 0, 2732, 2733, 5, 36, 0, 0, 2733, 2766, 3, 654, 327, 0, 2734, 2736, 5, 148, 0, 0, 2735, 2737, 3, 202, 101, 0, 2736, 2735, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 2766, 1, 0, 0, 0, 2738, 2740, 5, 225, 0, 0, 2739, 2741, 5, 147, 0, 0, 2740, 2739, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742, 2766, 3, 202, 101, 0, 2743, 2744, 7, 27, 0, 0, 2744, 2766, 3, 202, 101, 0, 2745, 2746, 5, 269, 0, 0, 2746, 2766, 7, 28, 0, 0, 2747, 2748, 5, 281, 0, 0, 2748, 2749, 5, 147, 0, 0, 2749, 2766, 3, 800, 400, 0, 2750, 2751, 5, 328, 0, 0, 2751, 2752, 5, 266, 0, 0, 2752, 2766, 3, 316, 158, 0, 2753, 2755, 5, 340, 0, 0, 2754, 2756, 5, 105, 0, 0, 2755, 2754, 1, 0, 0, 0, 2755, 2756, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2766, 3, 202, 101, 0, 2758, 2760, 5, 314, 0, 0, 2759, 2761, 5, 105, 0, 0, 2760, 2759, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2763, 1, 0, 0, 0, 2762, 2764, 3, 202, 101, 0, 2763, 2762, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 2766, 1, 0, 0, 0, 2765, 2732, 1, 0, 0, 0, 2765, 2734, 1, 0, 0, 0, 2765, 2738, 1, 0, 0, 0, 2765, 2743, 1, 0, 0, 0, 2765, 2745, 1, 0, 0, 0, 2765, 2747, 1, 0, 0, 0, 2765, 2750, 1, 0, 0, 0, 2765, 2753, 1, 0, 0, 0, 2765, 2758, 1, 0, 0, 0, 2766, 201, 1, 0, 0, 0, 2767, 2769, 7, 29, 0, 0, 2768, 2767, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2773, 5, 573, 0, 0, 2771, 2773, 3, 812, 406, 0, 2772, 2768, 1, 0, 0, 0, 2772, 2771, 1, 0, 0, 0, 2773, 203, 1, 0, 0, 0, 2774, 2776, 5, 46, 0, 0, 2775, 2777, 3, 366, 183, 0, 2776, 2775, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2779, 1, 0, 0, 0, 2778, 2780, 5, 359, 0, 0, 2779, 2778, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 2782, 1, 0, 0, 0, 2781, 2783, 5, 295, 0, 0, 2782, 2781, 1, 0, 0, 0, 2782, 2783, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 2785, 5, 247, 0, 0, 2785, 2798, 3, 818, 409, 0, 2786, 2787, 5, 215, 0, 0, 2787, 2790, 3, 316, 158, 0, 2788, 2789, 5, 239, 0, 0, 2789, 2791, 3, 316, 158, 0, 2790, 2788, 1, 0, 0, 0, 2790, 2791, 1, 0, 0, 0, 2791, 2796, 1, 0, 0, 0, 2792, 2793, 5, 373, 0, 0, 2793, 2797, 3, 316, 158, 0, 2794, 2795, 5, 269, 0, 0, 2795, 2797, 5, 373, 0, 0, 2796, 2792, 1, 0, 0, 0, 2796, 2794, 1, 0, 0, 0, 2796, 2797, 1, 0, 0, 0, 2797, 2799, 1, 0, 0, 0, 2798, 2786, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 205, 1, 0, 0, 0, 2800, 2801, 5, 46, 0, 0, 2801, 2804, 3, 176, 88, 0, 2802, 2803, 5, 282, 0, 0, 2803, 2805, 3, 814, 407, 0, 2804, 2802, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2806, 1, 0, 0, 0, 2806, 2807, 5, 255, 0, 0, 2807, 2809, 3, 808, 404, 0, 2808, 2810, 3, 102, 51, 0, 2809, 2808, 1, 0, 0, 0, 2809, 2810, 1, 0, 0, 0, 2810, 207, 1, 0, 0, 0, 2811, 2812, 5, 46, 0, 0, 2812, 2814, 5, 204, 0, 0, 2813, 2815, 3, 294, 147, 0, 2814, 2813, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2818, 3, 818, 409, 0, 2817, 2819, 5, 105, 0, 0, 2818, 2817, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 2827, 1, 0, 0, 0, 2820, 2821, 5, 323, 0, 0, 2821, 2826, 3, 790, 395, 0, 2822, 2823, 7, 30, 0, 0, 2823, 2826, 3, 58, 29, 0, 2824, 2826, 5, 150, 0, 0, 2825, 2820, 1, 0, 0, 0, 2825, 2822, 1, 0, 0, 0, 2825, 2824, 1, 0, 0, 0, 2826, 2829, 1, 0, 0, 0, 2827, 2825, 1, 0, 0, 0, 2827, 2828, 1, 0, 0, 0, 2828, 209, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2830, 2831, 5, 138, 0, 0, 2831, 2832, 5, 204, 0, 0, 2832, 2833, 3, 818, 409, 0, 2833, 2838, 5, 369, 0, 0, 2834, 2835, 5, 94, 0, 0, 2835, 2837, 3, 58, 29, 0, 2836, 2834, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2836, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 211, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2841, 2842, 5, 138, 0, 0, 2842, 2843, 5, 204, 0, 0, 2843, 2844, 3, 818, 409, 0, 2844, 2877, 7, 6, 0, 0, 2845, 2846, 5, 443, 0, 0, 2846, 2847, 5, 62, 0, 0, 2847, 2848, 3, 652, 326, 0, 2848, 2849, 5, 247, 0, 0, 2849, 2850, 3, 818, 409, 0, 2850, 2878, 1, 0, 0, 0, 2851, 2852, 5, 442, 0, 0, 2852, 2878, 3, 374, 187, 0, 2853, 2854, 5, 296, 0, 0, 2854, 2878, 3, 378, 189, 0, 2855, 2856, 5, 278, 0, 0, 2856, 2857, 7, 31, 0, 0, 2857, 2858, 3, 316, 158, 0, 2858, 2859, 3, 170, 85, 0, 2859, 2878, 1, 0, 0, 0, 2860, 2861, 5, 278, 0, 0, 2861, 2878, 3, 416, 208, 0, 2862, 2863, 5, 211, 0, 0, 2863, 2878, 3, 382, 191, 0, 2864, 2865, 7, 32, 0, 0, 2865, 2878, 3, 652, 326, 0, 2866, 2867, 5, 41, 0, 0, 2867, 2868, 5, 2, 0, 0, 2868, 2869, 3, 652, 326, 0, 2869, 2870, 5, 36, 0, 0, 2870, 2871, 3, 652, 326, 0, 2871, 2872, 5, 3, 0, 0, 2872, 2878, 1, 0, 0, 0, 2873, 2874, 5, 136, 0, 0, 2874, 2878, 3, 394, 197, 0, 2875, 2878, 3, 312, 156, 0, 2876, 2878, 3, 310, 155, 0, 2877, 2845, 1, 0, 0, 0, 2877, 2851, 1, 0, 0, 0, 2877, 2853, 1, 0, 0, 0, 2877, 2855, 1, 0, 0, 0, 2877, 2860, 1, 0, 0, 0, 2877, 2862, 1, 0, 0, 0, 2877, 2864, 1, 0, 0, 0, 2877, 2866, 1, 0, 0, 0, 2877, 2873, 1, 0, 0, 0, 2877, 2875, 1, 0, 0, 0, 2877, 2876, 1, 0, 0, 0, 2878, 213, 1, 0, 0, 0, 2879, 2880, 5, 46, 0, 0, 2880, 2881, 5, 63, 0, 0, 2881, 2882, 5, 174, 0, 0, 2882, 2883, 5, 381, 0, 0, 2883, 2889, 3, 818, 409, 0, 2884, 2886, 3, 216, 108, 0, 2885, 2884, 1, 0, 0, 0, 2886, 2887, 1, 0, 0, 0, 2887, 2885, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2890, 1, 0, 0, 0, 2889, 2885, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2892, 1, 0, 0, 0, 2891, 2893, 3, 220, 110, 0, 2892, 2891, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 215, 1, 0, 0, 0, 2894, 2896, 7, 33, 0, 0, 2895, 2897, 3, 316, 158, 0, 2896, 2895, 1, 0, 0, 0, 2896, 2897, 1, 0, 0, 0, 2897, 2901, 1, 0, 0, 0, 2898, 2899, 5, 269, 0, 0, 2899, 2901, 7, 33, 0, 0, 2900, 2894, 1, 0, 0, 0, 2900, 2898, 1, 0, 0, 0, 2901, 217, 1, 0, 0, 0, 2902, 2903, 5, 138, 0, 0, 2903, 2904, 5, 63, 0, 0, 2904, 2905, 5, 174, 0, 0, 2905, 2906, 5, 381, 0, 0, 2906, 2920, 3, 818, 409, 0, 2907, 2909, 3, 216, 108, 0, 2908, 2907, 1, 0, 0, 0, 2909, 2910, 1, 0, 0, 0, 2910, 2908, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2913, 1, 0, 0, 0, 2912, 2908, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2914, 1, 0, 0, 0, 2914, 2921, 3, 222, 111, 0, 2915, 2917, 3, 216, 108, 0, 2916, 2915, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2916, 1, 0, 0, 0, 2918, 2919, 1, 0, 0, 0, 2919, 2921, 1, 0, 0, 0, 2920, 2912, 1, 0, 0, 0, 2920, 2916, 1, 0, 0, 0, 2921, 219, 1, 0, 0, 0, 2922, 2923, 5, 280, 0, 0, 2923, 2924, 5, 2, 0, 0, 2924, 2929, 3, 226, 113, 0, 2925, 2926, 5, 6, 0, 0, 2926, 2928, 3, 226, 113, 0, 2927, 2925, 1, 0, 0, 0, 2928, 2931, 1, 0, 0, 0, 2929, 2927, 1, 0, 0, 0, 2929, 2930, 1, 0, 0, 0, 2930, 2932, 1, 0, 0, 0, 2931, 2929, 1, 0, 0, 0, 2932, 2933, 5, 3, 0, 0, 2933, 221, 1, 0, 0, 0, 2934, 2935, 5, 280, 0, 0, 2935, 2936, 5, 2, 0, 0, 2936, 2941, 3, 224, 112, 0, 2937, 2938, 5, 6, 0, 0, 2938, 2940, 3, 224, 112, 0, 2939, 2937, 1, 0, 0, 0, 2940, 2943, 1, 0, 0, 0, 2941, 2939, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2944, 1, 0, 0, 0, 2943, 2941, 1, 0, 0, 0, 2944, 2945, 5, 3, 0, 0, 2945, 223, 1, 0, 0, 0, 2946, 2947, 7, 34, 0, 0, 2947, 2948, 3, 226, 113, 0, 2948, 225, 1, 0, 0, 0, 2949, 2950, 3, 824, 412, 0, 2950, 2951, 3, 808, 404, 0, 2951, 227, 1, 0, 0, 0, 2952, 2953, 5, 46, 0, 0, 2953, 2955, 5, 331, 0, 0, 2954, 2956, 3, 294, 147, 0, 2955, 2954, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2957, 1, 0, 0, 0, 2957, 2960, 3, 818, 409, 0, 2958, 2959, 5, 360, 0, 0, 2959, 2961, 3, 808, 404, 0, 2960, 2958, 1, 0, 0, 0, 2960, 2961, 1, 0, 0, 0, 2961, 2963, 1, 0, 0, 0, 2962, 2964, 3, 230, 115, 0, 2963, 2962, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 1, 0, 0, 0, 2965, 2966, 5, 63, 0, 0, 2966, 2967, 5, 174, 0, 0, 2967, 2968, 5, 381, 0, 0, 2968, 2970, 3, 818, 409, 0, 2969, 2971, 3, 220, 110, 0, 2970, 2969, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 229, 1, 0, 0, 0, 2972, 2975, 5, 375, 0, 0, 2973, 2976, 3, 808, 404, 0, 2974, 2976, 5, 78, 0, 0, 2975, 2973, 1, 0, 0, 0, 2975, 2974, 1, 0, 0, 0, 2976, 231, 1, 0, 0, 0, 2977, 2978, 5, 138, 0, 0, 2978, 2979, 5, 331, 0, 0, 2979, 2985, 3, 818, 409, 0, 2980, 2986, 3, 222, 111, 0, 2981, 2983, 3, 230, 115, 0, 2982, 2984, 3, 222, 111, 0, 2983, 2982, 1, 0, 0, 0, 2983, 2984, 1, 0, 0, 0, 2984, 2986, 1, 0, 0, 0, 2985, 2980, 1, 0, 0, 0, 2985, 2981, 1, 0, 0, 0, 2986, 233, 1, 0, 0, 0, 2987, 2988, 5, 46, 0, 0, 2988, 2989, 5, 63, 0, 0, 2989, 2991, 5, 92, 0, 0, 2990, 2992, 3, 294, 147, 0, 2991, 2990, 1, 0, 0, 0, 2991, 2992, 1, 0, 0, 0, 2992, 2993, 1, 0, 0, 0, 2993, 2994, 3, 772, 386, 0, 2994, 2996, 5, 2, 0, 0, 2995, 2997, 3, 126, 63, 0, 2996, 2995, 1, 0, 0, 0, 2996, 2997, 1, 0, 0, 0, 2997, 2998, 1, 0, 0, 0, 2998, 3000, 5, 3, 0, 0, 2999, 3001, 3, 164, 82, 0, 3000, 2999, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3003, 5, 331, 0, 0, 3003, 3005, 3, 818, 409, 0, 3004, 3006, 3, 220, 110, 0, 3005, 3004, 1, 0, 0, 0, 3005, 3006, 1, 0, 0, 0, 3006, 3027, 1, 0, 0, 0, 3007, 3008, 5, 46, 0, 0, 3008, 3009, 5, 63, 0, 0, 3009, 3011, 5, 92, 0, 0, 3010, 3012, 3, 294, 147, 0, 3011, 3010, 1, 0, 0, 0, 3011, 3012, 1, 0, 0, 0, 3012, 3013, 1, 0, 0, 0, 3013, 3014, 3, 772, 386, 0, 3014, 3015, 5, 285, 0, 0, 3015, 3016, 5, 275, 0, 0, 3016, 3018, 3, 774, 387, 0, 3017, 3019, 3, 124, 62, 0, 3018, 3017, 1, 0, 0, 0, 3018, 3019, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3021, 3, 106, 53, 0, 3021, 3022, 5, 331, 0, 0, 3022, 3024, 3, 818, 409, 0, 3023, 3025, 3, 220, 110, 0, 3024, 3023, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3027, 1, 0, 0, 0, 3026, 2987, 1, 0, 0, 0, 3026, 3007, 1, 0, 0, 0, 3027, 235, 1, 0, 0, 0, 3028, 3029, 5, 444, 0, 0, 3029, 3030, 5, 63, 0, 0, 3030, 3031, 5, 323, 0, 0, 3031, 3041, 3, 790, 395, 0, 3032, 3033, 5, 74, 0, 0, 3033, 3036, 5, 94, 0, 0, 3034, 3036, 5, 59, 0, 0, 3035, 3032, 1, 0, 0, 0, 3035, 3034, 1, 0, 0, 0, 3036, 3037, 1, 0, 0, 0, 3037, 3038, 5, 2, 0, 0, 3038, 3039, 3, 628, 314, 0, 3039, 3040, 5, 3, 0, 0, 3040, 3042, 1, 0, 0, 0, 3041, 3035, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, 3043, 1, 0, 0, 0, 3043, 3044, 5, 64, 0, 0, 3044, 3045, 5, 331, 0, 0, 3045, 3046, 3, 818, 409, 0, 3046, 3047, 5, 71, 0, 0, 3047, 3049, 3, 818, 409, 0, 3048, 3050, 3, 220, 110, 0, 3049, 3048, 1, 0, 0, 0, 3049, 3050, 1, 0, 0, 0, 3050, 237, 1, 0, 0, 0, 3051, 3052, 5, 46, 0, 0, 3052, 3053, 5, 99, 0, 0, 3053, 3055, 5, 257, 0, 0, 3054, 3056, 3, 294, 147, 0, 3055, 3054, 1, 0, 0, 0, 3055, 3056, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3060, 5, 62, 0, 0, 3058, 3061, 3, 814, 407, 0, 3059, 3061, 5, 99, 0, 0, 3060, 3058, 1, 0, 0, 0, 3060, 3059, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3063, 5, 331, 0, 0, 3063, 3065, 3, 818, 409, 0, 3064, 3066, 3, 220, 110, 0, 3065, 3064, 1, 0, 0, 0, 3065, 3066, 1, 0, 0, 0, 3066, 239, 1, 0, 0, 0, 3067, 3068, 5, 138, 0, 0, 3068, 3069, 5, 99, 0, 0, 3069, 3070, 5, 257, 0, 0, 3070, 3073, 5, 62, 0, 0, 3071, 3074, 3, 814, 407, 0, 3072, 3074, 5, 99, 0, 0, 3073, 3071, 1, 0, 0, 0, 3073, 3072, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 3076, 5, 331, 0, 0, 3076, 3077, 3, 818, 409, 0, 3077, 3078, 3, 222, 111, 0, 3078, 241, 1, 0, 0, 0, 3079, 3080, 5, 46, 0, 0, 3080, 3081, 5, 445, 0, 0, 3081, 3082, 3, 818, 409, 0, 3082, 3083, 5, 80, 0, 0, 3083, 3090, 3, 780, 390, 0, 3084, 3088, 5, 36, 0, 0, 3085, 3089, 5, 541, 0, 0, 3086, 3089, 5, 542, 0, 0, 3087, 3089, 3, 826, 413, 0, 3088, 3085, 1, 0, 0, 0, 3088, 3086, 1, 0, 0, 0, 3088, 3087, 1, 0, 0, 0, 3089, 3091, 1, 0, 0, 0, 3090, 3084, 1, 0, 0, 0, 3090, 3091, 1, 0, 0, 0, 3091, 3094, 1, 0, 0, 0, 3092, 3093, 5, 62, 0, 0, 3093, 3095, 7, 35, 0, 0, 3094, 3092, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3098, 1, 0, 0, 0, 3096, 3097, 5, 94, 0, 0, 3097, 3099, 3, 816, 408, 0, 3098, 3096, 1, 0, 0, 0, 3098, 3099, 1, 0, 0, 0, 3099, 3101, 1, 0, 0, 0, 3100, 3102, 3, 250, 125, 0, 3101, 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3104, 1, 0, 0, 0, 3103, 3105, 3, 252, 126, 0, 3104, 3103, 1, 0, 0, 0, 3104, 3105, 1, 0, 0, 0, 3105, 243, 1, 0, 0, 0, 3106, 3107, 5, 138, 0, 0, 3107, 3108, 5, 445, 0, 0, 3108, 3109, 3, 818, 409, 0, 3109, 3110, 5, 80, 0, 0, 3110, 3113, 3, 780, 390, 0, 3111, 3112, 5, 94, 0, 0, 3112, 3114, 3, 816, 408, 0, 3113, 3111, 1, 0, 0, 0, 3113, 3114, 1, 0, 0, 0, 3114, 3116, 1, 0, 0, 0, 3115, 3117, 3, 250, 125, 0, 3116, 3115, 1, 0, 0, 0, 3116, 3117, 1, 0, 0, 0, 3117, 3119, 1, 0, 0, 0, 3118, 3120, 3, 252, 126, 0, 3119, 3118, 1, 0, 0, 0, 3119, 3120, 1, 0, 0, 0, 3120, 245, 1, 0, 0, 0, 3121, 3122, 5, 138, 0, 0, 3122, 3123, 5, 296, 0, 0, 3123, 3125, 3, 796, 398, 0, 3124, 3126, 3, 368, 184, 0, 3125, 3124, 1, 0, 0, 0, 3125, 3126, 1, 0, 0, 0, 3126, 3153, 1, 0, 0, 0, 3127, 3131, 3, 248, 124, 0, 3128, 3130, 3, 248, 124, 0, 3129, 3128, 1, 0, 0, 0, 3130, 3133, 1, 0, 0, 0, 3131, 3129, 1, 0, 0, 0, 3131, 3132, 1, 0, 0, 0, 3132, 3135, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3136, 5, 315, 0, 0, 3135, 3134, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3154, 1, 0, 0, 0, 3137, 3138, 5, 309, 0, 0, 3138, 3139, 5, 94, 0, 0, 3139, 3154, 3, 798, 399, 0, 3140, 3141, 5, 282, 0, 0, 3141, 3142, 5, 94, 0, 0, 3142, 3154, 3, 814, 407, 0, 3143, 3144, 5, 333, 0, 0, 3144, 3145, 5, 323, 0, 0, 3145, 3154, 3, 32, 16, 0, 3146, 3148, 5, 269, 0, 0, 3147, 3146, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3150, 5, 462, 0, 0, 3150, 3151, 5, 80, 0, 0, 3151, 3152, 5, 204, 0, 0, 3152, 3154, 3, 818, 409, 0, 3153, 3127, 1, 0, 0, 0, 3153, 3137, 1, 0, 0, 0, 3153, 3140, 1, 0, 0, 0, 3153, 3143, 1, 0, 0, 0, 3153, 3147, 1, 0, 0, 0, 3154, 247, 1, 0, 0, 0, 3155, 3157, 5, 205, 0, 0, 3156, 3155, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3158, 1, 0, 0, 0, 3158, 3159, 5, 327, 0, 0, 3159, 3166, 5, 243, 0, 0, 3160, 3162, 5, 205, 0, 0, 3161, 3160, 1, 0, 0, 0, 3161, 3162, 1, 0, 0, 0, 3162, 3163, 1, 0, 0, 0, 3163, 3164, 5, 327, 0, 0, 3164, 3166, 5, 181, 0, 0, 3165, 3156, 1, 0, 0, 0, 3165, 3161, 1, 0, 0, 0, 3166, 3185, 1, 0, 0, 0, 3167, 3168, 5, 333, 0, 0, 3168, 3169, 3, 818, 409, 0, 3169, 3172, 7, 36, 0, 0, 3170, 3173, 3, 818, 409, 0, 3171, 3173, 5, 53, 0, 0, 3172, 3170, 1, 0, 0, 0, 3172, 3171, 1, 0, 0, 0, 3173, 3185, 1, 0, 0, 0, 3174, 3175, 5, 333, 0, 0, 3175, 3176, 3, 818, 409, 0, 3176, 3177, 5, 64, 0, 0, 3177, 3178, 5, 434, 0, 0, 3178, 3185, 1, 0, 0, 0, 3179, 3182, 5, 313, 0, 0, 3180, 3183, 3, 818, 409, 0, 3181, 3183, 5, 30, 0, 0, 3182, 3180, 1, 0, 0, 0, 3182, 3181, 1, 0, 0, 0, 3183, 3185, 1, 0, 0, 0, 3184, 3165, 1, 0, 0, 0, 3184, 3167, 1, 0, 0, 0, 3184, 3174, 1, 0, 0, 0, 3184, 3179, 1, 0, 0, 0, 3185, 249, 1, 0, 0, 0, 3186, 3187, 5, 100, 0, 0, 3187, 3188, 5, 2, 0, 0, 3188, 3189, 3, 674, 337, 0, 3189, 3190, 5, 3, 0, 0, 3190, 251, 1, 0, 0, 0, 3191, 3192, 5, 105, 0, 0, 3192, 3193, 5, 42, 0, 0, 3193, 3194, 5, 2, 0, 0, 3194, 3195, 3, 674, 337, 0, 3195, 3196, 5, 3, 0, 0, 3196, 253, 1, 0, 0, 0, 3197, 3198, 5, 46, 0, 0, 3198, 3199, 5, 131, 0, 0, 3199, 3200, 5, 446, 0, 0, 3200, 3201, 3, 818, 409, 0, 3201, 3202, 5, 360, 0, 0, 3202, 3203, 7, 37, 0, 0, 3203, 3204, 5, 215, 0, 0, 3204, 3205, 3, 316, 158, 0, 3205, 255, 1, 0, 0, 0, 3206, 3208, 5, 46, 0, 0, 3207, 3209, 3, 366, 183, 0, 3208, 3207, 1, 0, 0, 0, 3208, 3209, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 3211, 5, 357, 0, 0, 3211, 3212, 3, 818, 409, 0, 3212, 3213, 3, 258, 129, 0, 3213, 3214, 3, 260, 130, 0, 3214, 3215, 5, 80, 0, 0, 3215, 3227, 3, 774, 387, 0, 3216, 3223, 5, 447, 0, 0, 3217, 3218, 7, 38, 0, 0, 3218, 3220, 7, 39, 0, 0, 3219, 3221, 5, 36, 0, 0, 3220, 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3224, 3, 818, 409, 0, 3223, 3217, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3223, 1, 0, 0, 0, 3225, 3226, 1, 0, 0, 0, 3226, 3228, 1, 0, 0, 0, 3227, 3216, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3234, 1, 0, 0, 0, 3229, 3231, 5, 62, 0, 0, 3230, 3232, 5, 192, 0, 0, 3231, 3230, 1, 0, 0, 0, 3231, 3232, 1, 0, 0, 0, 3232, 3233, 1, 0, 0, 0, 3233, 3235, 7, 40, 0, 0, 3234, 3229, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3237, 1, 0, 0, 0, 3236, 3238, 3, 264, 132, 0, 3237, 3236, 1, 0, 0, 0, 3237, 3238, 1, 0, 0, 0, 3238, 3239, 1, 0, 0, 0, 3239, 3240, 5, 202, 0, 0, 3240, 3241, 3, 266, 133, 0, 3241, 3242, 5, 2, 0, 0, 3242, 3243, 3, 268, 134, 0, 3243, 3244, 5, 3, 0, 0, 3244, 3285, 1, 0, 0, 0, 3245, 3247, 5, 46, 0, 0, 3246, 3248, 3, 366, 183, 0, 3247, 3246, 1, 0, 0, 0, 3247, 3248, 1, 0, 0, 0, 3248, 3250, 1, 0, 0, 0, 3249, 3251, 5, 45, 0, 0, 3250, 3249, 1, 0, 0, 0, 3250, 3251, 1, 0, 0, 0, 3251, 3252, 1, 0, 0, 0, 3252, 3253, 5, 357, 0, 0, 3253, 3254, 3, 818, 409, 0, 3254, 3255, 3, 258, 129, 0, 3255, 3256, 3, 260, 130, 0, 3256, 3257, 5, 80, 0, 0, 3257, 3260, 3, 774, 387, 0, 3258, 3259, 5, 64, 0, 0, 3259, 3261, 3, 780, 390, 0, 3260, 3258, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3265, 1, 0, 0, 0, 3262, 3264, 3, 272, 136, 0, 3263, 3262, 1, 0, 0, 0, 3264, 3267, 1, 0, 0, 0, 3265, 3263, 1, 0, 0, 0, 3265, 3266, 1, 0, 0, 0, 3266, 3273, 1, 0, 0, 0, 3267, 3265, 1, 0, 0, 0, 3268, 3270, 5, 62, 0, 0, 3269, 3271, 5, 192, 0, 0, 3270, 3269, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3272, 1, 0, 0, 0, 3272, 3274, 7, 40, 0, 0, 3273, 3268, 1, 0, 0, 0, 3273, 3274, 1, 0, 0, 0, 3274, 3276, 1, 0, 0, 0, 3275, 3277, 3, 264, 132, 0, 3276, 3275, 1, 0, 0, 0, 3276, 3277, 1, 0, 0, 0, 3277, 3278, 1, 0, 0, 0, 3278, 3279, 5, 202, 0, 0, 3279, 3280, 3, 266, 133, 0, 3280, 3281, 5, 2, 0, 0, 3281, 3282, 3, 268, 134, 0, 3282, 3283, 5, 3, 0, 0, 3283, 3285, 1, 0, 0, 0, 3284, 3206, 1, 0, 0, 0, 3284, 3245, 1, 0, 0, 0, 3285, 257, 1, 0, 0, 0, 3286, 3291, 5, 145, 0, 0, 3287, 3291, 5, 135, 0, 0, 3288, 3289, 5, 242, 0, 0, 3289, 3291, 5, 275, 0, 0, 3290, 3286, 1, 0, 0, 0, 3290, 3287, 1, 0, 0, 0, 3290, 3288, 1, 0, 0, 0, 3291, 259, 1, 0, 0, 0, 3292, 3297, 3, 262, 131, 0, 3293, 3294, 5, 82, 0, 0, 3294, 3296, 3, 262, 131, 0, 3295, 3293, 1, 0, 0, 0, 3296, 3299, 1, 0, 0, 0, 3297, 3295, 1, 0, 0, 0, 3297, 3298, 1, 0, 0, 0, 3298, 261, 1, 0, 0, 0, 3299, 3297, 1, 0, 0, 0, 3300, 3309, 5, 241, 0, 0, 3301, 3309, 5, 182, 0, 0, 3302, 3305, 5, 369, 0, 0, 3303, 3304, 5, 275, 0, 0, 3304, 3306, 3, 148, 74, 0, 3305, 3303, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3309, 1, 0, 0, 0, 3307, 3309, 5, 358, 0, 0, 3308, 3300, 1, 0, 0, 0, 3308, 3301, 1, 0, 0, 0, 3308, 3302, 1, 0, 0, 0, 3308, 3307, 1, 0, 0, 0, 3309, 263, 1, 0, 0, 0, 3310, 3311, 5, 102, 0, 0, 3311, 3312, 5, 2, 0, 0, 3312, 3313, 3, 674, 337, 0, 3313, 3314, 5, 3, 0, 0, 3314, 265, 1, 0, 0, 0, 3315, 3316, 5, 211, 0, 0, 3316, 3320, 3, 806, 403, 0, 3317, 3318, 5, 296, 0, 0, 3318, 3320, 3, 796, 398, 0, 3319, 3315, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3320, 267, 1, 0, 0, 0, 3321, 3324, 3, 270, 135, 0, 3322, 3324, 1, 0, 0, 0, 3323, 3321, 1, 0, 0, 0, 3323, 3322, 1, 0, 0, 0, 3324, 3329, 1, 0, 0, 0, 3325, 3326, 5, 6, 0, 0, 3326, 3328, 3, 270, 135, 0, 3327, 3325, 1, 0, 0, 0, 3328, 3331, 1, 0, 0, 0, 3329, 3327, 1, 0, 0, 0, 3329, 3330, 1, 0, 0, 0, 3330, 269, 1, 0, 0, 0, 3331, 3329, 1, 0, 0, 0, 3332, 3337, 5, 571, 0, 0, 3333, 3337, 5, 573, 0, 0, 3334, 3337, 3, 808, 404, 0, 3335, 3337, 3, 824, 412, 0, 3336, 3332, 1, 0, 0, 0, 3336, 3333, 1, 0, 0, 0, 3336, 3334, 1, 0, 0, 0, 3336, 3335, 1, 0, 0, 0, 3337, 271, 1, 0, 0, 0, 3338, 3340, 5, 77, 0, 0, 3339, 3338, 1, 0, 0, 0, 3339, 3340, 1, 0, 0, 0, 3340, 3341, 1, 0, 0, 0, 3341, 3349, 5, 54, 0, 0, 3342, 3343, 5, 69, 0, 0, 3343, 3349, 7, 9, 0, 0, 3344, 3345, 5, 77, 0, 0, 3345, 3349, 5, 371, 0, 0, 3346, 3347, 5, 269, 0, 0, 3347, 3349, 5, 228, 0, 0, 3348, 3339, 1, 0, 0, 0, 3348, 3342, 1, 0, 0, 0, 3348, 3344, 1, 0, 0, 0, 3348, 3346, 1, 0, 0, 0, 3349, 273, 1, 0, 0, 0, 3350, 3351, 5, 46, 0, 0, 3351, 3352, 5, 198, 0, 0, 3352, 3353, 5, 357, 0, 0, 3353, 3354, 3, 818, 409, 0, 3354, 3355, 5, 80, 0, 0, 3355, 3365, 3, 824, 412, 0, 3356, 3357, 5, 102, 0, 0, 3357, 3362, 3, 276, 138, 0, 3358, 3359, 5, 33, 0, 0, 3359, 3361, 3, 276, 138, 0, 3360, 3358, 1, 0, 0, 0, 3361, 3364, 1, 0, 0, 0, 3362, 3360, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3366, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3365, 3356, 1, 0, 0, 0, 3365, 3366, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3368, 5, 202, 0, 0, 3368, 3369, 3, 266, 133, 0, 3369, 3370, 5, 2, 0, 0, 3370, 3371, 5, 3, 0, 0, 3371, 275, 1, 0, 0, 0, 3372, 3373, 3, 818, 409, 0, 3373, 3374, 5, 68, 0, 0, 3374, 3375, 5, 2, 0, 0, 3375, 3379, 3, 808, 404, 0, 3376, 3378, 3, 462, 231, 0, 3377, 3376, 1, 0, 0, 0, 3378, 3381, 1, 0, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3382, 1, 0, 0, 0, 3381, 3379, 1, 0, 0, 0, 3382, 3383, 5, 3, 0, 0, 3383, 277, 1, 0, 0, 0, 3384, 3385, 5, 138, 0, 0, 3385, 3386, 5, 198, 0, 0, 3386, 3387, 5, 357, 0, 0, 3387, 3393, 3, 818, 409, 0, 3388, 3390, 5, 193, 0, 0, 3389, 3391, 7, 14, 0, 0, 3390, 3389, 1, 0, 0, 0, 3390, 3391, 1, 0, 0, 0, 3391, 3394, 1, 0, 0, 0, 3392, 3394, 5, 186, 0, 0, 3393, 3388, 1, 0, 0, 0, 3393, 3392, 1, 0, 0, 0, 3394, 279, 1, 0, 0, 0, 3395, 3396, 5, 46, 0, 0, 3396, 3397, 5, 140, 0, 0, 3397, 3398, 3, 316, 158, 0, 3398, 3399, 5, 42, 0, 0, 3399, 3400, 5, 2, 0, 0, 3400, 3401, 3, 674, 337, 0, 3401, 3405, 5, 3, 0, 0, 3402, 3404, 3, 272, 136, 0, 3403, 3402, 1, 0, 0, 0, 3404, 3407, 1, 0, 0, 0, 3405, 3403, 1, 0, 0, 0, 3405, 3406, 1, 0, 0, 0, 3406, 281, 1, 0, 0, 0, 3407, 3405, 1, 0, 0, 0, 3408, 3410, 5, 46, 0, 0, 3409, 3411, 3, 366, 183, 0, 3410, 3409, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3412, 1, 0, 0, 0, 3412, 3413, 5, 136, 0, 0, 3413, 3428, 3, 806, 403, 0, 3414, 3415, 3, 392, 196, 0, 3415, 3416, 3, 284, 142, 0, 3416, 3429, 1, 0, 0, 0, 3417, 3418, 5, 2, 0, 0, 3418, 3423, 3, 290, 145, 0, 3419, 3420, 5, 6, 0, 0, 3420, 3422, 3, 290, 145, 0, 3421, 3419, 1, 0, 0, 0, 3422, 3425, 1, 0, 0, 0, 3423, 3421, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3426, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3426, 3427, 5, 3, 0, 0, 3427, 3429, 1, 0, 0, 0, 3428, 3414, 1, 0, 0, 0, 3428, 3417, 1, 0, 0, 0, 3429, 3487, 1, 0, 0, 0, 3430, 3431, 5, 46, 0, 0, 3431, 3432, 5, 278, 0, 0, 3432, 3433, 3, 414, 207, 0, 3433, 3434, 3, 284, 142, 0, 3434, 3487, 1, 0, 0, 0, 3435, 3436, 5, 46, 0, 0, 3436, 3437, 5, 360, 0, 0, 3437, 3438, 3, 316, 158, 0, 3438, 3456, 5, 36, 0, 0, 3439, 3441, 5, 2, 0, 0, 3440, 3442, 3, 642, 321, 0, 3441, 3440, 1, 0, 0, 0, 3441, 3442, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3457, 5, 3, 0, 0, 3444, 3445, 5, 196, 0, 0, 3445, 3453, 5, 2, 0, 0, 3446, 3450, 3, 808, 404, 0, 3447, 3449, 3, 462, 231, 0, 3448, 3447, 1, 0, 0, 0, 3449, 3452, 1, 0, 0, 0, 3450, 3448, 1, 0, 0, 0, 3450, 3451, 1, 0, 0, 0, 3451, 3454, 1, 0, 0, 0, 3452, 3450, 1, 0, 0, 0, 3453, 3446, 1, 0, 0, 0, 3453, 3454, 1, 0, 0, 0, 3454, 3455, 1, 0, 0, 0, 3455, 3457, 5, 3, 0, 0, 3456, 3439, 1, 0, 0, 0, 3456, 3444, 1, 0, 0, 0, 3457, 3487, 1, 0, 0, 0, 3458, 3459, 5, 46, 0, 0, 3459, 3460, 5, 360, 0, 0, 3460, 3466, 3, 316, 158, 0, 3461, 3462, 5, 36, 0, 0, 3462, 3464, 5, 299, 0, 0, 3463, 3461, 1, 0, 0, 0, 3463, 3464, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3467, 3, 284, 142, 0, 3466, 3463, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3487, 1, 0, 0, 0, 3468, 3469, 5, 46, 0, 0, 3469, 3470, 5, 355, 0, 0, 3470, 3471, 5, 325, 0, 0, 3471, 3472, 7, 41, 0, 0, 3472, 3473, 3, 316, 158, 0, 3473, 3474, 3, 284, 142, 0, 3474, 3487, 1, 0, 0, 0, 3475, 3476, 5, 46, 0, 0, 3476, 3478, 5, 108, 0, 0, 3477, 3479, 3, 294, 147, 0, 3478, 3477, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3480, 1, 0, 0, 0, 3480, 3484, 3, 316, 158, 0, 3481, 3485, 3, 284, 142, 0, 3482, 3483, 5, 64, 0, 0, 3483, 3485, 3, 316, 158, 0, 3484, 3481, 1, 0, 0, 0, 3484, 3482, 1, 0, 0, 0, 3485, 3487, 1, 0, 0, 0, 3486, 3408, 1, 0, 0, 0, 3486, 3430, 1, 0, 0, 0, 3486, 3435, 1, 0, 0, 0, 3486, 3458, 1, 0, 0, 0, 3486, 3468, 1, 0, 0, 0, 3486, 3475, 1, 0, 0, 0, 3487, 283, 1, 0, 0, 0, 3488, 3489, 5, 2, 0, 0, 3489, 3494, 3, 286, 143, 0, 3490, 3491, 5, 6, 0, 0, 3491, 3493, 3, 286, 143, 0, 3492, 3490, 1, 0, 0, 0, 3493, 3496, 1, 0, 0, 0, 3494, 3492, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3497, 1, 0, 0, 0, 3496, 3494, 1, 0, 0, 0, 3497, 3498, 5, 3, 0, 0, 3498, 285, 1, 0, 0, 0, 3499, 3502, 3, 824, 412, 0, 3500, 3501, 5, 10, 0, 0, 3501, 3503, 3, 288, 144, 0, 3502, 3500, 1, 0, 0, 0, 3502, 3503, 1, 0, 0, 0, 3503, 287, 1, 0, 0, 0, 3504, 3511, 3, 388, 194, 0, 3505, 3511, 3, 834, 417, 0, 3506, 3511, 3, 726, 363, 0, 3507, 3511, 3, 202, 101, 0, 3508, 3511, 3, 808, 404, 0, 3509, 3511, 5, 407, 0, 0, 3510, 3504, 1, 0, 0, 0, 3510, 3505, 1, 0, 0, 0, 3510, 3506, 1, 0, 0, 0, 3510, 3507, 1, 0, 0, 0, 3510, 3508, 1, 0, 0, 0, 3510, 3509, 1, 0, 0, 0, 3511, 289, 1, 0, 0, 0, 3512, 3513, 3, 826, 413, 0, 3513, 3514, 5, 10, 0, 0, 3514, 3515, 3, 288, 144, 0, 3515, 291, 1, 0, 0, 0, 3516, 3517, 5, 138, 0, 0, 3517, 3518, 5, 360, 0, 0, 3518, 3519, 3, 316, 158, 0, 3519, 3520, 5, 133, 0, 0, 3520, 3522, 5, 450, 0, 0, 3521, 3523, 3, 294, 147, 0, 3522, 3521, 1, 0, 0, 0, 3522, 3523, 1, 0, 0, 0, 3523, 3524, 1, 0, 0, 0, 3524, 3527, 3, 808, 404, 0, 3525, 3526, 7, 42, 0, 0, 3526, 3528, 3, 808, 404, 0, 3527, 3525, 1, 0, 0, 0, 3527, 3528, 1, 0, 0, 0, 3528, 3539, 1, 0, 0, 0, 3529, 3530, 5, 138, 0, 0, 3530, 3531, 5, 360, 0, 0, 3531, 3532, 3, 316, 158, 0, 3532, 3533, 5, 309, 0, 0, 3533, 3534, 5, 450, 0, 0, 3534, 3535, 3, 808, 404, 0, 3535, 3536, 5, 94, 0, 0, 3536, 3537, 3, 808, 404, 0, 3537, 3539, 1, 0, 0, 0, 3538, 3516, 1, 0, 0, 0, 3538, 3529, 1, 0, 0, 0, 3539, 293, 1, 0, 0, 0, 3540, 3541, 5, 220, 0, 0, 3541, 3542, 5, 77, 0, 0, 3542, 3543, 5, 396, 0, 0, 3543, 295, 1, 0, 0, 0, 3544, 3545, 5, 46, 0, 0, 3545, 3546, 5, 278, 0, 0, 3546, 3547, 5, 156, 0, 0, 3547, 3549, 3, 316, 158, 0, 3548, 3550, 5, 53, 0, 0, 3549, 3548, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 3551, 1, 0, 0, 0, 3551, 3552, 5, 62, 0, 0, 3552, 3553, 5, 360, 0, 0, 3553, 3554, 3, 652, 326, 0, 3554, 3557, 3, 170, 85, 0, 3555, 3556, 5, 206, 0, 0, 3556, 3558, 3, 316, 158, 0, 3557, 3555, 1, 0, 0, 0, 3557, 3558, 1, 0, 0, 0, 3558, 3559, 1, 0, 0, 0, 3559, 3560, 5, 36, 0, 0, 3560, 3565, 3, 298, 149, 0, 3561, 3562, 5, 6, 0, 0, 3562, 3564, 3, 298, 149, 0, 3563, 3561, 1, 0, 0, 0, 3564, 3567, 1, 0, 0, 0, 3565, 3563, 1, 0, 0, 0, 3565, 3566, 1, 0, 0, 0, 3566, 297, 1, 0, 0, 0, 3567, 3565, 1, 0, 0, 0, 3568, 3569, 5, 278, 0, 0, 3569, 3570, 5, 571, 0, 0, 3570, 3572, 3, 414, 207, 0, 3571, 3573, 3, 412, 206, 0, 3572, 3571, 1, 0, 0, 0, 3572, 3573, 1, 0, 0, 0, 3573, 3581, 1, 0, 0, 0, 3574, 3579, 5, 62, 0, 0, 3575, 3580, 5, 325, 0, 0, 3576, 3577, 5, 83, 0, 0, 3577, 3578, 5, 147, 0, 0, 3578, 3580, 3, 316, 158, 0, 3579, 3575, 1, 0, 0, 0, 3579, 3576, 1, 0, 0, 0, 3580, 3582, 1, 0, 0, 0, 3581, 3574, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3584, 1, 0, 0, 0, 3583, 3585, 5, 302, 0, 0, 3584, 3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3595, 1, 0, 0, 0, 3586, 3587, 5, 211, 0, 0, 3587, 3589, 5, 571, 0, 0, 3588, 3590, 3, 528, 264, 0, 3589, 3588, 1, 0, 0, 0, 3589, 3590, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3595, 3, 382, 191, 0, 3592, 3593, 5, 345, 0, 0, 3593, 3595, 3, 652, 326, 0, 3594, 3568, 1, 0, 0, 0, 3594, 3586, 1, 0, 0, 0, 3594, 3592, 1, 0, 0, 0, 3595, 299, 1, 0, 0, 0, 3596, 3597, 5, 46, 0, 0, 3597, 3598, 5, 278, 0, 0, 3598, 3599, 5, 206, 0, 0, 3599, 3600, 3, 316, 158, 0, 3600, 3601, 3, 170, 85, 0, 3601, 301, 1, 0, 0, 0, 3602, 3603, 5, 138, 0, 0, 3603, 3604, 5, 278, 0, 0, 3604, 3605, 5, 206, 0, 0, 3605, 3606, 3, 316, 158, 0, 3606, 3625, 3, 170, 85, 0, 3607, 3608, 5, 133, 0, 0, 3608, 3613, 3, 298, 149, 0, 3609, 3610, 5, 6, 0, 0, 3610, 3612, 3, 298, 149, 0, 3611, 3609, 1, 0, 0, 0, 3612, 3615, 1, 0, 0, 0, 3613, 3611, 1, 0, 0, 0, 3613, 3614, 1, 0, 0, 0, 3614, 3626, 1, 0, 0, 0, 3615, 3613, 1, 0, 0, 0, 3616, 3617, 5, 191, 0, 0, 3617, 3622, 3, 304, 152, 0, 3618, 3619, 5, 6, 0, 0, 3619, 3621, 3, 304, 152, 0, 3620, 3618, 1, 0, 0, 0, 3621, 3624, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3626, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3625, 3607, 1, 0, 0, 0, 3625, 3616, 1, 0, 0, 0, 3626, 303, 1, 0, 0, 0, 3627, 3628, 7, 43, 0, 0, 3628, 3629, 5, 571, 0, 0, 3629, 3630, 3, 528, 264, 0, 3630, 305, 1, 0, 0, 0, 3631, 3632, 5, 301, 0, 0, 3632, 3633, 5, 281, 0, 0, 3633, 3634, 5, 147, 0, 0, 3634, 3635, 3, 816, 408, 0, 3635, 3636, 5, 94, 0, 0, 3636, 3637, 3, 814, 407, 0, 3637, 307, 1, 0, 0, 0, 3638, 3661, 5, 191, 0, 0, 3639, 3662, 5, 328, 0, 0, 3640, 3662, 5, 226, 0, 0, 3641, 3662, 5, 108, 0, 0, 3642, 3662, 5, 168, 0, 0, 3643, 3662, 5, 342, 0, 0, 3644, 3662, 5, 452, 0, 0, 3645, 3662, 5, 331, 0, 0, 3646, 3647, 5, 131, 0, 0, 3647, 3662, 5, 446, 0, 0, 3648, 3649, 5, 198, 0, 0, 3649, 3662, 5, 357, 0, 0, 3650, 3662, 5, 204, 0, 0, 3651, 3653, 5, 295, 0, 0, 3652, 3651, 1, 0, 0, 0, 3652, 3653, 1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3662, 5, 247, 0, 0, 3655, 3656, 5, 63, 0, 0, 3656, 3657, 5, 174, 0, 0, 3657, 3662, 5, 381, 0, 0, 3658, 3659, 5, 355, 0, 0, 3659, 3660, 5, 325, 0, 0, 3660, 3662, 7, 41, 0, 0, 3661, 3639, 1, 0, 0, 0, 3661, 3640, 1, 0, 0, 0, 3661, 3641, 1, 0, 0, 0, 3661, 3642, 1, 0, 0, 0, 3661, 3643, 1, 0, 0, 0, 3661, 3644, 1, 0, 0, 0, 3661, 3645, 1, 0, 0, 0, 3661, 3646, 1, 0, 0, 0, 3661, 3648, 1, 0, 0, 0, 3661, 3650, 1, 0, 0, 0, 3661, 3652, 1, 0, 0, 0, 3661, 3655, 1, 0, 0, 0, 3661, 3658, 1, 0, 0, 0, 3662, 3664, 1, 0, 0, 0, 3663, 3665, 3, 422, 211, 0, 3664, 3663, 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3666, 1, 0, 0, 0, 3666, 3668, 3, 784, 392, 0, 3667, 3669, 3, 96, 48, 0, 3668, 3667, 1, 0, 0, 0, 3668, 3669, 1, 0, 0, 0, 3669, 3846, 1, 0, 0, 0, 3670, 3672, 5, 191, 0, 0, 3671, 3673, 5, 259, 0, 0, 3672, 3671, 1, 0, 0, 0, 3672, 3673, 1, 0, 0, 0, 3673, 3674, 1, 0, 0, 0, 3674, 3676, 5, 376, 0, 0, 3675, 3677, 3, 422, 211, 0, 3676, 3675, 1, 0, 0, 0, 3676, 3677, 1, 0, 0, 0, 3677, 3678, 1, 0, 0, 0, 3678, 3683, 3, 778, 389, 0, 3679, 3680, 5, 6, 0, 0, 3680, 3682, 3, 778, 389, 0, 3681, 3679, 1, 0, 0, 0, 3682, 3685, 1, 0, 0, 0, 3683, 3681, 1, 0, 0, 0, 3683, 3684, 1, 0, 0, 0, 3684, 3687, 1, 0, 0, 0, 3685, 3683, 1, 0, 0, 0, 3686, 3688, 3, 96, 48, 0, 3687, 3686, 1, 0, 0, 0, 3687, 3688, 1, 0, 0, 0, 3688, 3846, 1, 0, 0, 0, 3689, 3691, 5, 191, 0, 0, 3690, 3692, 5, 63, 0, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693, 3695, 5, 92, 0, 0, 3694, 3696, 3, 422, 211, 0, 3695, 3694, 1, 0, 0, 0, 3695, 3696, 1, 0, 0, 0, 3696, 3697, 1, 0, 0, 0, 3697, 3699, 3, 762, 381, 0, 3698, 3700, 3, 96, 48, 0, 3699, 3698, 1, 0, 0, 0, 3699, 3700, 1, 0, 0, 0, 3700, 3846, 1, 0, 0, 0, 3701, 3702, 5, 191, 0, 0, 3702, 3704, 5, 323, 0, 0, 3703, 3705, 3, 422, 211, 0, 3704, 3703, 1, 0, 0, 0, 3704, 3705, 1, 0, 0, 0, 3705, 3706, 1, 0, 0, 0, 3706, 3708, 3, 764, 382, 0, 3707, 3709, 3, 96, 48, 0, 3708, 3707, 1, 0, 0, 0, 3708, 3709, 1, 0, 0, 0, 3709, 3846, 1, 0, 0, 0, 3710, 3711, 5, 191, 0, 0, 3711, 3713, 7, 44, 0, 0, 3712, 3714, 3, 422, 211, 0, 3713, 3712, 1, 0, 0, 0, 3713, 3714, 1, 0, 0, 0, 3714, 3715, 1, 0, 0, 0, 3715, 3716, 3, 818, 409, 0, 3716, 3717, 5, 80, 0, 0, 3717, 3719, 3, 316, 158, 0, 3718, 3720, 3, 96, 48, 0, 3719, 3718, 1, 0, 0, 0, 3719, 3720, 1, 0, 0, 0, 3720, 3846, 1, 0, 0, 0, 3721, 3722, 5, 191, 0, 0, 3722, 3724, 7, 32, 0, 0, 3723, 3725, 3, 422, 211, 0, 3724, 3723, 1, 0, 0, 0, 3724, 3725, 1, 0, 0, 0, 3725, 3726, 1, 0, 0, 0, 3726, 3731, 3, 652, 326, 0, 3727, 3728, 5, 6, 0, 0, 3728, 3730, 3, 652, 326, 0, 3729, 3727, 1, 0, 0, 0, 3730, 3733, 1, 0, 0, 0, 3731, 3729, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3735, 1, 0, 0, 0, 3733, 3731, 1, 0, 0, 0, 3734, 3736, 3, 96, 48, 0, 3735, 3734, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3846, 1, 0, 0, 0, 3737, 3738, 5, 191, 0, 0, 3738, 3739, 5, 226, 0, 0, 3739, 3741, 5, 109, 0, 0, 3740, 3742, 3, 422, 211, 0, 3741, 3740, 1, 0, 0, 0, 3741, 3742, 1, 0, 0, 0, 3742, 3743, 1, 0, 0, 0, 3743, 3745, 3, 314, 157, 0, 3744, 3746, 3, 96, 48, 0, 3745, 3744, 1, 0, 0, 0, 3745, 3746, 1, 0, 0, 0, 3746, 3846, 1, 0, 0, 0, 3747, 3748, 5, 191, 0, 0, 3748, 3750, 5, 41, 0, 0, 3749, 3751, 3, 422, 211, 0, 3750, 3749, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 3752, 1, 0, 0, 0, 3752, 3753, 5, 2, 0, 0, 3753, 3754, 3, 652, 326, 0, 3754, 3755, 5, 36, 0, 0, 3755, 3756, 3, 652, 326, 0, 3756, 3758, 5, 3, 0, 0, 3757, 3759, 3, 96, 48, 0, 3758, 3757, 1, 0, 0, 0, 3758, 3759, 1, 0, 0, 0, 3759, 3846, 1, 0, 0, 0, 3760, 3761, 5, 191, 0, 0, 3761, 3762, 5, 278, 0, 0, 3762, 3764, 7, 31, 0, 0, 3763, 3765, 3, 422, 211, 0, 3764, 3763, 1, 0, 0, 0, 3764, 3765, 1, 0, 0, 0, 3765, 3766, 1, 0, 0, 0, 3766, 3767, 3, 316, 158, 0, 3767, 3769, 3, 170, 85, 0, 3768, 3770, 3, 96, 48, 0, 3769, 3768, 1, 0, 0, 0, 3769, 3770, 1, 0, 0, 0, 3770, 3846, 1, 0, 0, 0, 3771, 3772, 5, 191, 0, 0, 3772, 3773, 5, 281, 0, 0, 3773, 3774, 5, 147, 0, 0, 3774, 3776, 3, 816, 408, 0, 3775, 3777, 3, 96, 48, 0, 3776, 3775, 1, 0, 0, 0, 3776, 3777, 1, 0, 0, 0, 3777, 3846, 1, 0, 0, 0, 3778, 3779, 5, 191, 0, 0, 3779, 3781, 5, 451, 0, 0, 3780, 3782, 3, 422, 211, 0, 3781, 3780, 1, 0, 0, 0, 3781, 3782, 1, 0, 0, 0, 3782, 3783, 1, 0, 0, 0, 3783, 3785, 3, 818, 409, 0, 3784, 3786, 3, 96, 48, 0, 3785, 3784, 1, 0, 0, 0, 3785, 3786, 1, 0, 0, 0, 3786, 3846, 1, 0, 0, 0, 3787, 3788, 5, 191, 0, 0, 3788, 3790, 5, 351, 0, 0, 3789, 3791, 3, 422, 211, 0, 3790, 3789, 1, 0, 0, 0, 3790, 3791, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3846, 3, 770, 385, 0, 3793, 3794, 5, 191, 0, 0, 3794, 3796, 5, 443, 0, 0, 3795, 3797, 3, 422, 211, 0, 3796, 3795, 1, 0, 0, 0, 3796, 3797, 1, 0, 0, 0, 3797, 3798, 1, 0, 0, 0, 3798, 3799, 5, 62, 0, 0, 3799, 3800, 3, 652, 326, 0, 3800, 3801, 5, 247, 0, 0, 3801, 3803, 3, 818, 409, 0, 3802, 3804, 3, 96, 48, 0, 3803, 3802, 1, 0, 0, 0, 3803, 3804, 1, 0, 0, 0, 3804, 3846, 1, 0, 0, 0, 3805, 3806, 5, 191, 0, 0, 3806, 3808, 7, 45, 0, 0, 3807, 3809, 3, 422, 211, 0, 3808, 3807, 1, 0, 0, 0, 3808, 3809, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3846, 3, 816, 408, 0, 3811, 3812, 5, 191, 0, 0, 3812, 3813, 5, 99, 0, 0, 3813, 3815, 5, 257, 0, 0, 3814, 3816, 3, 422, 211, 0, 3815, 3814, 1, 0, 0, 0, 3815, 3816, 1, 0, 0, 0, 3816, 3817, 1, 0, 0, 0, 3817, 3820, 5, 62, 0, 0, 3818, 3821, 3, 814, 407, 0, 3819, 3821, 5, 99, 0, 0, 3820, 3818, 1, 0, 0, 0, 3820, 3819, 1, 0, 0, 0, 3821, 3822, 1, 0, 0, 0, 3822, 3823, 5, 331, 0, 0, 3823, 3846, 3, 818, 409, 0, 3824, 3825, 5, 191, 0, 0, 3825, 3827, 5, 175, 0, 0, 3826, 3828, 3, 422, 211, 0, 3827, 3826, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3843, 3, 788, 394, 0, 3830, 3832, 5, 105, 0, 0, 3831, 3830, 1, 0, 0, 0, 3831, 3832, 1, 0, 0, 0, 3832, 3833, 1, 0, 0, 0, 3833, 3834, 5, 2, 0, 0, 3834, 3839, 5, 209, 0, 0, 3835, 3836, 5, 6, 0, 0, 3836, 3838, 5, 209, 0, 0, 3837, 3835, 1, 0, 0, 0, 3838, 3841, 1, 0, 0, 0, 3839, 3837, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 3842, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3842, 3844, 5, 3, 0, 0, 3843, 3831, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3846, 1, 0, 0, 0, 3845, 3638, 1, 0, 0, 0, 3845, 3670, 1, 0, 0, 0, 3845, 3689, 1, 0, 0, 0, 3845, 3701, 1, 0, 0, 0, 3845, 3710, 1, 0, 0, 0, 3845, 3721, 1, 0, 0, 0, 3845, 3737, 1, 0, 0, 0, 3845, 3747, 1, 0, 0, 0, 3845, 3760, 1, 0, 0, 0, 3845, 3771, 1, 0, 0, 0, 3845, 3778, 1, 0, 0, 0, 3845, 3787, 1, 0, 0, 0, 3845, 3793, 1, 0, 0, 0, 3845, 3805, 1, 0, 0, 0, 3845, 3811, 1, 0, 0, 0, 3845, 3824, 1, 0, 0, 0, 3846, 309, 1, 0, 0, 0, 3847, 3849, 5, 63, 0, 0, 3848, 3847, 1, 0, 0, 0, 3848, 3849, 1, 0, 0, 0, 3849, 3850, 1, 0, 0, 0, 3850, 3851, 5, 92, 0, 0, 3851, 3864, 3, 774, 387, 0, 3852, 3854, 5, 259, 0, 0, 3853, 3852, 1, 0, 0, 0, 3853, 3854, 1, 0, 0, 0, 3854, 3855, 1, 0, 0, 0, 3855, 3856, 5, 376, 0, 0, 3856, 3864, 3, 778, 389, 0, 3857, 3858, 7, 46, 0, 0, 3858, 3864, 3, 316, 158, 0, 3859, 3860, 5, 355, 0, 0, 3860, 3861, 5, 325, 0, 0, 3861, 3862, 7, 41, 0, 0, 3862, 3864, 3, 316, 158, 0, 3863, 3848, 1, 0, 0, 0, 3863, 3853, 1, 0, 0, 0, 3863, 3857, 1, 0, 0, 0, 3863, 3859, 1, 0, 0, 0, 3864, 311, 1, 0, 0, 0, 3865, 3866, 5, 198, 0, 0, 3866, 3882, 5, 357, 0, 0, 3867, 3868, 5, 131, 0, 0, 3868, 3882, 5, 446, 0, 0, 3869, 3882, 5, 204, 0, 0, 3870, 3882, 5, 452, 0, 0, 3871, 3882, 5, 331, 0, 0, 3872, 3882, 5, 318, 0, 0, 3873, 3882, 5, 451, 0, 0, 3874, 3875, 5, 63, 0, 0, 3875, 3876, 5, 174, 0, 0, 3876, 3882, 5, 381, 0, 0, 3877, 3879, 5, 295, 0, 0, 3878, 3877, 1, 0, 0, 0, 3878, 3879, 1, 0, 0, 0, 3879, 3880, 1, 0, 0, 0, 3880, 3882, 5, 247, 0, 0, 3881, 3865, 1, 0, 0, 0, 3881, 3867, 1, 0, 0, 0, 3881, 3869, 1, 0, 0, 0, 3881, 3870, 1, 0, 0, 0, 3881, 3871, 1, 0, 0, 0, 3881, 3872, 1, 0, 0, 0, 3881, 3873, 1, 0, 0, 0, 3881, 3874, 1, 0, 0, 0, 3881, 3878, 1, 0, 0, 0, 3882, 3883, 1, 0, 0, 0, 3883, 3890, 3, 818, 409, 0, 3884, 3885, 5, 323, 0, 0, 3885, 3890, 3, 790, 395, 0, 3886, 3887, 5, 175, 0, 0, 3887, 3890, 3, 788, 394, 0, 3888, 3890, 3, 176, 88, 0, 3889, 3881, 1, 0, 0, 0, 3889, 3884, 1, 0, 0, 0, 3889, 3886, 1, 0, 0, 0, 3889, 3888, 1, 0, 0, 0, 3890, 313, 1, 0, 0, 0, 3891, 3896, 3, 316, 158, 0, 3892, 3893, 5, 6, 0, 0, 3893, 3895, 3, 316, 158, 0, 3894, 3892, 1, 0, 0, 0, 3895, 3898, 1, 0, 0, 0, 3896, 3894, 1, 0, 0, 0, 3896, 3897, 1, 0, 0, 0, 3897, 315, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3899, 3901, 3, 818, 409, 0, 3900, 3902, 3, 318, 159, 0, 3901, 3900, 1, 0, 0, 0, 3901, 3902, 1, 0, 0, 0, 3902, 317, 1, 0, 0, 0, 3903, 3904, 5, 11, 0, 0, 3904, 3906, 3, 824, 412, 0, 3905, 3903, 1, 0, 0, 0, 3906, 3907, 1, 0, 0, 0, 3907, 3905, 1, 0, 0, 0, 3907, 3908, 1, 0, 0, 0, 3908, 319, 1, 0, 0, 0, 3909, 3911, 5, 358, 0, 0, 3910, 3912, 5, 92, 0, 0, 3911, 3910, 1, 0, 0, 0, 3911, 3912, 1, 0, 0, 0, 3912, 3913, 1, 0, 0, 0, 3913, 3918, 3, 322, 161, 0, 3914, 3915, 5, 6, 0, 0, 3915, 3917, 3, 322, 161, 0, 3916, 3914, 1, 0, 0, 0, 3917, 3920, 1, 0, 0, 0, 3918, 3916, 1, 0, 0, 0, 3918, 3919, 1, 0, 0, 0, 3919, 3923, 1, 0, 0, 0, 3920, 3918, 1, 0, 0, 0, 3921, 3922, 7, 47, 0, 0, 3922, 3924, 5, 219, 0, 0, 3923, 3921, 1, 0, 0, 0, 3923, 3924, 1, 0, 0, 0, 3924, 3926, 1, 0, 0, 0, 3925, 3927, 3, 96, 48, 0, 3926, 3925, 1, 0, 0, 0, 3926, 3927, 1, 0, 0, 0, 3927, 321, 1, 0, 0, 0, 3928, 3930, 5, 81, 0, 0, 3929, 3928, 1, 0, 0, 0, 3929, 3930, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 3933, 3, 774, 387, 0, 3932, 3934, 5, 9, 0, 0, 3933, 3932, 1, 0, 0, 0, 3933, 3934, 1, 0, 0, 0, 3934, 323, 1, 0, 0, 0, 3935, 3936, 5, 159, 0, 0, 3936, 3995, 5, 80, 0, 0, 3937, 3996, 3, 310, 155, 0, 3938, 3996, 3, 312, 156, 0, 3939, 3940, 5, 44, 0, 0, 3940, 3942, 3, 818, 409, 0, 3941, 3943, 3, 318, 159, 0, 3942, 3941, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 3944, 1, 0, 0, 0, 3944, 3945, 5, 11, 0, 0, 3945, 3946, 3, 800, 400, 0, 3946, 3996, 1, 0, 0, 0, 3947, 3948, 7, 32, 0, 0, 3948, 3996, 3, 652, 326, 0, 3949, 3950, 5, 136, 0, 0, 3950, 3996, 3, 394, 197, 0, 3951, 3952, 5, 211, 0, 0, 3952, 3996, 3, 382, 191, 0, 3953, 3954, 5, 278, 0, 0, 3954, 3996, 3, 416, 208, 0, 3955, 3956, 5, 45, 0, 0, 3956, 3957, 3, 818, 409, 0, 3957, 3963, 5, 80, 0, 0, 3958, 3964, 3, 774, 387, 0, 3959, 3961, 5, 189, 0, 0, 3960, 3959, 1, 0, 0, 0, 3960, 3961, 1, 0, 0, 0, 3961, 3962, 1, 0, 0, 0, 3962, 3964, 3, 316, 158, 0, 3963, 3958, 1, 0, 0, 0, 3963, 3960, 1, 0, 0, 0, 3964, 3996, 1, 0, 0, 0, 3965, 3966, 7, 44, 0, 0, 3966, 3967, 3, 818, 409, 0, 3967, 3968, 5, 80, 0, 0, 3968, 3969, 3, 316, 158, 0, 3969, 3996, 1, 0, 0, 0, 3970, 3971, 5, 296, 0, 0, 3971, 3996, 3, 378, 189, 0, 3972, 3973, 5, 442, 0, 0, 3973, 3996, 3, 374, 187, 0, 3974, 3975, 5, 443, 0, 0, 3975, 3976, 5, 62, 0, 0, 3976, 3977, 3, 652, 326, 0, 3977, 3978, 5, 247, 0, 0, 3978, 3979, 3, 818, 409, 0, 3979, 3996, 1, 0, 0, 0, 3980, 3981, 5, 278, 0, 0, 3981, 3982, 7, 31, 0, 0, 3982, 3983, 3, 316, 158, 0, 3983, 3984, 3, 170, 85, 0, 3984, 3996, 1, 0, 0, 0, 3985, 3986, 5, 248, 0, 0, 3986, 3987, 5, 274, 0, 0, 3987, 3996, 3, 202, 101, 0, 3988, 3989, 5, 41, 0, 0, 3989, 3990, 5, 2, 0, 0, 3990, 3991, 3, 652, 326, 0, 3991, 3992, 5, 36, 0, 0, 3992, 3993, 3, 652, 326, 0, 3993, 3994, 5, 3, 0, 0, 3994, 3996, 1, 0, 0, 0, 3995, 3937, 1, 0, 0, 0, 3995, 3938, 1, 0, 0, 0, 3995, 3939, 1, 0, 0, 0, 3995, 3947, 1, 0, 0, 0, 3995, 3949, 1, 0, 0, 0, 3995, 3951, 1, 0, 0, 0, 3995, 3953, 1, 0, 0, 0, 3995, 3955, 1, 0, 0, 0, 3995, 3965, 1, 0, 0, 0, 3995, 3970, 1, 0, 0, 0, 3995, 3972, 1, 0, 0, 0, 3995, 3974, 1, 0, 0, 0, 3995, 3980, 1, 0, 0, 0, 3995, 3985, 1, 0, 0, 0, 3995, 3988, 1, 0, 0, 0, 3996, 3997, 1, 0, 0, 0, 3997, 4000, 5, 116, 0, 0, 3998, 4001, 3, 808, 404, 0, 3999, 4001, 5, 78, 0, 0, 4000, 3998, 1, 0, 0, 0, 4000, 3999, 1, 0, 0, 0, 4001, 325, 1, 0, 0, 0, 4002, 4003, 5, 327, 0, 0, 4003, 4006, 5, 246, 0, 0, 4004, 4005, 5, 62, 0, 0, 4005, 4007, 3, 58, 29, 0, 4006, 4004, 1, 0, 0, 0, 4006, 4007, 1, 0, 0, 0, 4007, 4008, 1, 0, 0, 0, 4008, 4026, 5, 80, 0, 0, 4009, 4010, 7, 32, 0, 0, 4010, 4027, 3, 652, 326, 0, 4011, 4012, 5, 136, 0, 0, 4012, 4027, 3, 394, 197, 0, 4013, 4014, 5, 44, 0, 0, 4014, 4027, 3, 800, 400, 0, 4015, 4016, 5, 211, 0, 0, 4016, 4027, 3, 382, 191, 0, 4017, 4018, 5, 248, 0, 0, 4018, 4019, 5, 274, 0, 0, 4019, 4027, 3, 202, 101, 0, 4020, 4021, 5, 296, 0, 0, 4021, 4027, 3, 378, 189, 0, 4022, 4023, 5, 442, 0, 0, 4023, 4027, 3, 374, 187, 0, 4024, 4027, 3, 310, 155, 0, 4025, 4027, 3, 312, 156, 0, 4026, 4009, 1, 0, 0, 0, 4026, 4011, 1, 0, 0, 0, 4026, 4013, 1, 0, 0, 0, 4026, 4015, 1, 0, 0, 0, 4026, 4017, 1, 0, 0, 0, 4026, 4020, 1, 0, 0, 0, 4026, 4022, 1, 0, 0, 0, 4026, 4024, 1, 0, 0, 0, 4026, 4025, 1, 0, 0, 0, 4027, 4028, 1, 0, 0, 0, 4028, 4031, 5, 116, 0, 0, 4029, 4032, 3, 808, 404, 0, 4030, 4032, 5, 78, 0, 0, 4031, 4029, 1, 0, 0, 0, 4031, 4030, 1, 0, 0, 0, 4032, 327, 1, 0, 0, 0, 4033, 4034, 7, 48, 0, 0, 4034, 4035, 3, 330, 165, 0, 4035, 329, 1, 0, 0, 0, 4036, 4038, 7, 49, 0, 0, 4037, 4036, 1, 0, 0, 0, 4037, 4038, 1, 0, 0, 0, 4038, 4040, 1, 0, 0, 0, 4039, 4041, 3, 332, 166, 0, 4040, 4039, 1, 0, 0, 0, 4040, 4041, 1, 0, 0, 0, 4041, 4042, 1, 0, 0, 0, 4042, 4080, 3, 818, 409, 0, 4043, 4045, 7, 50, 0, 0, 4044, 4043, 1, 0, 0, 0, 4044, 4045, 1, 0, 0, 0, 4045, 4046, 1, 0, 0, 0, 4046, 4048, 3, 812, 406, 0, 4047, 4049, 3, 332, 166, 0, 4048, 4047, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4050, 1, 0, 0, 0, 4050, 4051, 3, 818, 409, 0, 4051, 4080, 1, 0, 0, 0, 4052, 4054, 5, 210, 0, 0, 4053, 4055, 3, 812, 406, 0, 4054, 4053, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4057, 1, 0, 0, 0, 4056, 4058, 3, 332, 166, 0, 4057, 4056, 1, 0, 0, 0, 4057, 4058, 1, 0, 0, 0, 4058, 4059, 1, 0, 0, 0, 4059, 4080, 3, 818, 409, 0, 4060, 4062, 5, 210, 0, 0, 4061, 4060, 1, 0, 0, 0, 4061, 4062, 1, 0, 0, 0, 4062, 4063, 1, 0, 0, 0, 4063, 4065, 5, 30, 0, 0, 4064, 4066, 3, 332, 166, 0, 4065, 4064, 1, 0, 0, 0, 4065, 4066, 1, 0, 0, 0, 4066, 4067, 1, 0, 0, 0, 4067, 4080, 3, 818, 409, 0, 4068, 4073, 5, 144, 0, 0, 4069, 4071, 5, 30, 0, 0, 4070, 4069, 1, 0, 0, 0, 4070, 4071, 1, 0, 0, 0, 4071, 4074, 1, 0, 0, 0, 4072, 4074, 3, 812, 406, 0, 4073, 4070, 1, 0, 0, 0, 4073, 4072, 1, 0, 0, 0, 4074, 4076, 1, 0, 0, 0, 4075, 4077, 3, 332, 166, 0, 4076, 4075, 1, 0, 0, 0, 4076, 4077, 1, 0, 0, 0, 4077, 4078, 1, 0, 0, 0, 4078, 4080, 3, 818, 409, 0, 4079, 4037, 1, 0, 0, 0, 4079, 4044, 1, 0, 0, 0, 4079, 4052, 1, 0, 0, 0, 4079, 4061, 1, 0, 0, 0, 4079, 4068, 1, 0, 0, 0, 4080, 331, 1, 0, 0, 0, 4081, 4082, 7, 51, 0, 0, 4082, 333, 1, 0, 0, 0, 4083, 4084, 5, 65, 0, 0, 4084, 4085, 3, 338, 169, 0, 4085, 4086, 5, 80, 0, 0, 4086, 4087, 3, 344, 172, 0, 4087, 4088, 5, 94, 0, 0, 4088, 4092, 3, 346, 173, 0, 4089, 4090, 5, 105, 0, 0, 4090, 4091, 5, 65, 0, 0, 4091, 4093, 5, 279, 0, 0, 4092, 4089, 1, 0, 0, 0, 4092, 4093, 1, 0, 0, 0, 4093, 335, 1, 0, 0, 0, 4094, 4098, 5, 317, 0, 0, 4095, 4096, 5, 65, 0, 0, 4096, 4097, 5, 279, 0, 0, 4097, 4099, 5, 62, 0, 0, 4098, 4095, 1, 0, 0, 0, 4098, 4099, 1, 0, 0, 0, 4099, 4100, 1, 0, 0, 0, 4100, 4101, 3, 338, 169, 0, 4101, 4102, 5, 80, 0, 0, 4102, 4103, 3, 344, 172, 0, 4103, 4104, 5, 64, 0, 0, 4104, 4106, 3, 346, 173, 0, 4105, 4107, 3, 96, 48, 0, 4106, 4105, 1, 0, 0, 0, 4106, 4107, 1, 0, 0, 0, 4107, 337, 1, 0, 0, 0, 4108, 4113, 3, 342, 171, 0, 4109, 4110, 5, 6, 0, 0, 4110, 4112, 3, 342, 171, 0, 4111, 4109, 1, 0, 0, 0, 4112, 4115, 1, 0, 0, 0, 4113, 4111, 1, 0, 0, 0, 4113, 4114, 1, 0, 0, 0, 4114, 4132, 1, 0, 0, 0, 4115, 4113, 1, 0, 0, 0, 4116, 4118, 5, 30, 0, 0, 4117, 4119, 5, 294, 0, 0, 4118, 4117, 1, 0, 0, 0, 4118, 4119, 1, 0, 0, 0, 4119, 4121, 1, 0, 0, 0, 4120, 4122, 3, 144, 72, 0, 4121, 4120, 1, 0, 0, 0, 4121, 4122, 1, 0, 0, 0, 4122, 4132, 1, 0, 0, 0, 4123, 4128, 3, 340, 170, 0, 4124, 4125, 5, 6, 0, 0, 4125, 4127, 3, 340, 170, 0, 4126, 4124, 1, 0, 0, 0, 4127, 4130, 1, 0, 0, 0, 4128, 4126, 1, 0, 0, 0, 4128, 4129, 1, 0, 0, 0, 4129, 4132, 1, 0, 0, 0, 4130, 4128, 1, 0, 0, 0, 4131, 4108, 1, 0, 0, 0, 4131, 4116, 1, 0, 0, 0, 4131, 4123, 1, 0, 0, 0, 4132, 339, 1, 0, 0, 0, 4133, 4134, 7, 52, 0, 0, 4134, 341, 1, 0, 0, 0, 4135, 4140, 5, 88, 0, 0, 4136, 4140, 5, 86, 0, 0, 4137, 4140, 5, 46, 0, 0, 4138, 4140, 3, 818, 409, 0, 4139, 4135, 1, 0, 0, 0, 4139, 4136, 1, 0, 0, 0, 4139, 4137, 1, 0, 0, 0, 4139, 4138, 1, 0, 0, 0, 4140, 4142, 1, 0, 0, 0, 4141, 4143, 3, 144, 72, 0, 4142, 4141, 1, 0, 0, 0, 4142, 4143, 1, 0, 0, 0, 4143, 343, 1, 0, 0, 0, 4144, 4145, 5, 92, 0, 0, 4145, 4190, 3, 762, 381, 0, 4146, 4148, 5, 328, 0, 0, 4147, 4146, 1, 0, 0, 0, 4147, 4148, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4190, 3, 760, 380, 0, 4150, 4154, 5, 63, 0, 0, 4151, 4152, 5, 174, 0, 0, 4152, 4155, 5, 381, 0, 0, 4153, 4155, 5, 331, 0, 0, 4154, 4151, 1, 0, 0, 0, 4154, 4153, 1, 0, 0, 0, 4155, 4158, 1, 0, 0, 0, 4156, 4158, 5, 247, 0, 0, 4157, 4150, 1, 0, 0, 0, 4157, 4156, 1, 0, 0, 0, 4158, 4159, 1, 0, 0, 0, 4159, 4190, 3, 784, 392, 0, 4160, 4161, 5, 211, 0, 0, 4161, 4190, 3, 380, 190, 0, 4162, 4163, 5, 296, 0, 0, 4163, 4190, 3, 376, 188, 0, 4164, 4165, 5, 442, 0, 0, 4165, 4190, 3, 372, 186, 0, 4166, 4167, 5, 175, 0, 0, 4167, 4190, 3, 766, 383, 0, 4168, 4169, 7, 32, 0, 0, 4169, 4190, 3, 314, 157, 0, 4170, 4171, 5, 248, 0, 0, 4171, 4172, 5, 274, 0, 0, 4172, 4177, 3, 202, 101, 0, 4173, 4174, 5, 6, 0, 0, 4174, 4176, 3, 202, 101, 0, 4175, 4173, 1, 0, 0, 0, 4176, 4179, 1, 0, 0, 0, 4177, 4175, 1, 0, 0, 0, 4177, 4178, 1, 0, 0, 0, 4178, 4190, 1, 0, 0, 0, 4179, 4177, 1, 0, 0, 0, 4180, 4181, 5, 323, 0, 0, 4181, 4190, 3, 764, 382, 0, 4182, 4183, 5, 351, 0, 0, 4183, 4190, 3, 782, 391, 0, 4184, 4185, 5, 30, 0, 0, 4185, 4186, 7, 53, 0, 0, 4186, 4187, 5, 68, 0, 0, 4187, 4188, 5, 323, 0, 0, 4188, 4190, 3, 764, 382, 0, 4189, 4144, 1, 0, 0, 0, 4189, 4147, 1, 0, 0, 0, 4189, 4157, 1, 0, 0, 0, 4189, 4160, 1, 0, 0, 0, 4189, 4162, 1, 0, 0, 0, 4189, 4164, 1, 0, 0, 0, 4189, 4166, 1, 0, 0, 0, 4189, 4168, 1, 0, 0, 0, 4189, 4170, 1, 0, 0, 0, 4189, 4180, 1, 0, 0, 0, 4189, 4182, 1, 0, 0, 0, 4189, 4184, 1, 0, 0, 0, 4190, 345, 1, 0, 0, 0, 4191, 4193, 5, 66, 0, 0, 4192, 4191, 1, 0, 0, 0, 4192, 4193, 1, 0, 0, 0, 4193, 4194, 1, 0, 0, 0, 4194, 4195, 3, 814, 407, 0, 4195, 4203, 1, 0, 0, 0, 4196, 4198, 5, 6, 0, 0, 4197, 4199, 5, 66, 0, 0, 4198, 4197, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4200, 1, 0, 0, 0, 4200, 4202, 3, 814, 407, 0, 4201, 4196, 1, 0, 0, 0, 4202, 4205, 1, 0, 0, 0, 4203, 4201, 1, 0, 0, 0, 4203, 4204, 1, 0, 0, 0, 4204, 347, 1, 0, 0, 0, 4205, 4203, 1, 0, 0, 0, 4206, 4207, 5, 65, 0, 0, 4207, 4212, 3, 342, 171, 0, 4208, 4209, 5, 6, 0, 0, 4209, 4211, 3, 342, 171, 0, 4210, 4208, 1, 0, 0, 0, 4211, 4214, 1, 0, 0, 0, 4212, 4210, 1, 0, 0, 0, 4212, 4213, 1, 0, 0, 0, 4213, 4215, 1, 0, 0, 0, 4214, 4212, 1, 0, 0, 0, 4215, 4216, 5, 94, 0, 0, 4216, 4220, 3, 816, 408, 0, 4217, 4218, 5, 105, 0, 0, 4218, 4219, 5, 134, 0, 0, 4219, 4221, 5, 279, 0, 0, 4220, 4217, 1, 0, 0, 0, 4220, 4221, 1, 0, 0, 0, 4221, 4225, 1, 0, 0, 0, 4222, 4223, 5, 214, 0, 0, 4223, 4224, 5, 147, 0, 0, 4224, 4226, 3, 814, 407, 0, 4225, 4222, 1, 0, 0, 0, 4225, 4226, 1, 0, 0, 0, 4226, 349, 1, 0, 0, 0, 4227, 4231, 5, 317, 0, 0, 4228, 4229, 5, 134, 0, 0, 4229, 4230, 5, 279, 0, 0, 4230, 4232, 5, 62, 0, 0, 4231, 4228, 1, 0, 0, 0, 4231, 4232, 1, 0, 0, 0, 4232, 4233, 1, 0, 0, 0, 4233, 4238, 3, 342, 171, 0, 4234, 4235, 5, 6, 0, 0, 4235, 4237, 3, 342, 171, 0, 4236, 4234, 1, 0, 0, 0, 4237, 4240, 1, 0, 0, 0, 4238, 4236, 1, 0, 0, 0, 4238, 4239, 1, 0, 0, 0, 4239, 4241, 1, 0, 0, 0, 4240, 4238, 1, 0, 0, 0, 4241, 4242, 5, 64, 0, 0, 4242, 4246, 3, 816, 408, 0, 4243, 4244, 5, 214, 0, 0, 4244, 4245, 5, 147, 0, 0, 4245, 4247, 3, 814, 407, 0, 4246, 4243, 1, 0, 0, 0, 4246, 4247, 1, 0, 0, 0, 4247, 4249, 1, 0, 0, 0, 4248, 4250, 3, 96, 48, 0, 4249, 4248, 1, 0, 0, 0, 4249, 4250, 1, 0, 0, 0, 4250, 351, 1, 0, 0, 0, 4251, 4252, 5, 138, 0, 0, 4252, 4253, 5, 53, 0, 0, 4253, 4262, 5, 294, 0, 0, 4254, 4255, 5, 68, 0, 0, 4255, 4256, 5, 323, 0, 0, 4256, 4261, 3, 764, 382, 0, 4257, 4258, 5, 62, 0, 0, 4258, 4259, 7, 2, 0, 0, 4259, 4261, 3, 816, 408, 0, 4260, 4254, 1, 0, 0, 0, 4260, 4257, 1, 0, 0, 0, 4261, 4264, 1, 0, 0, 0, 4262, 4260, 1, 0, 0, 0, 4262, 4263, 1, 0, 0, 0, 4263, 4265, 1, 0, 0, 0, 4264, 4262, 1, 0, 0, 0, 4265, 4266, 3, 354, 177, 0, 4266, 353, 1, 0, 0, 0, 4267, 4268, 5, 65, 0, 0, 4268, 4269, 3, 338, 169, 0, 4269, 4270, 5, 80, 0, 0, 4270, 4271, 3, 356, 178, 0, 4271, 4272, 5, 94, 0, 0, 4272, 4276, 3, 346, 173, 0, 4273, 4274, 5, 105, 0, 0, 4274, 4275, 5, 65, 0, 0, 4275, 4277, 5, 279, 0, 0, 4276, 4273, 1, 0, 0, 0, 4276, 4277, 1, 0, 0, 0, 4277, 4293, 1, 0, 0, 0, 4278, 4282, 5, 317, 0, 0, 4279, 4280, 5, 65, 0, 0, 4280, 4281, 5, 279, 0, 0, 4281, 4283, 5, 62, 0, 0, 4282, 4279, 1, 0, 0, 0, 4282, 4283, 1, 0, 0, 0, 4283, 4284, 1, 0, 0, 0, 4284, 4285, 3, 338, 169, 0, 4285, 4286, 5, 80, 0, 0, 4286, 4287, 3, 356, 178, 0, 4287, 4288, 5, 64, 0, 0, 4288, 4290, 3, 346, 173, 0, 4289, 4291, 3, 96, 48, 0, 4290, 4289, 1, 0, 0, 0, 4290, 4291, 1, 0, 0, 0, 4291, 4293, 1, 0, 0, 0, 4292, 4267, 1, 0, 0, 0, 4292, 4278, 1, 0, 0, 0, 4293, 355, 1, 0, 0, 0, 4294, 4295, 7, 54, 0, 0, 4295, 357, 1, 0, 0, 0, 4296, 4298, 5, 46, 0, 0, 4297, 4299, 5, 98, 0, 0, 4298, 4297, 1, 0, 0, 0, 4298, 4299, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4302, 5, 226, 0, 0, 4301, 4303, 5, 109, 0, 0, 4302, 4301, 1, 0, 0, 0, 4302, 4303, 1, 0, 0, 0, 4303, 4305, 1, 0, 0, 0, 4304, 4306, 3, 294, 147, 0, 4305, 4304, 1, 0, 0, 0, 4305, 4306, 1, 0, 0, 0, 4306, 4308, 1, 0, 0, 0, 4307, 4309, 3, 818, 409, 0, 4308, 4307, 1, 0, 0, 0, 4308, 4309, 1, 0, 0, 0, 4309, 4310, 1, 0, 0, 0, 4310, 4311, 5, 80, 0, 0, 4311, 4313, 3, 624, 312, 0, 4312, 4314, 3, 170, 85, 0, 4313, 4312, 1, 0, 0, 0, 4313, 4314, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 4318, 3, 360, 180, 0, 4316, 4317, 5, 441, 0, 0, 4317, 4319, 3, 360, 180, 0, 4318, 4316, 1, 0, 0, 0, 4318, 4319, 1, 0, 0, 0, 4319, 4325, 1, 0, 0, 0, 4320, 4322, 5, 273, 0, 0, 4321, 4323, 5, 77, 0, 0, 4322, 4321, 1, 0, 0, 0, 4322, 4323, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 4326, 5, 56, 0, 0, 4325, 4320, 1, 0, 0, 0, 4325, 4326, 1, 0, 0, 0, 4326, 4328, 1, 0, 0, 0, 4327, 4329, 3, 102, 51, 0, 4328, 4327, 1, 0, 0, 0, 4328, 4329, 1, 0, 0, 0, 4329, 4331, 1, 0, 0, 0, 4330, 4332, 3, 176, 88, 0, 4331, 4330, 1, 0, 0, 0, 4331, 4332, 1, 0, 0, 0, 4332, 4334, 1, 0, 0, 0, 4333, 4335, 3, 638, 319, 0, 4334, 4333, 1, 0, 0, 0, 4334, 4335, 1, 0, 0, 0, 4335, 359, 1, 0, 0, 0, 4336, 4337, 5, 2, 0, 0, 4337, 4342, 3, 362, 181, 0, 4338, 4339, 5, 6, 0, 0, 4339, 4341, 3, 362, 181, 0, 4340, 4338, 1, 0, 0, 0, 4341, 4344, 1, 0, 0, 0, 4342, 4340, 1, 0, 0, 0, 4342, 4343, 1, 0, 0, 0, 4343, 4345, 1, 0, 0, 0, 4344, 4342, 1, 0, 0, 0, 4345, 4346, 5, 3, 0, 0, 4346, 361, 1, 0, 0, 0, 4347, 4354, 3, 800, 400, 0, 4348, 4354, 3, 688, 344, 0, 4349, 4350, 5, 2, 0, 0, 4350, 4351, 3, 674, 337, 0, 4351, 4352, 5, 3, 0, 0, 4352, 4354, 1, 0, 0, 0, 4353, 4347, 1, 0, 0, 0, 4353, 4348, 1, 0, 0, 0, 4353, 4349, 1, 0, 0, 0, 4354, 4356, 1, 0, 0, 0, 4355, 4357, 3, 98, 49, 0, 4356, 4355, 1, 0, 0, 0, 4356, 4357, 1, 0, 0, 0, 4357, 4364, 1, 0, 0, 0, 4358, 4360, 3, 316, 158, 0, 4359, 4358, 1, 0, 0, 0, 4359, 4360, 1, 0, 0, 0, 4360, 4365, 1, 0, 0, 0, 4361, 4362, 3, 316, 158, 0, 4362, 4363, 3, 100, 50, 0, 4363, 4365, 1, 0, 0, 0, 4364, 4359, 1, 0, 0, 0, 4364, 4361, 1, 0, 0, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4368, 7, 55, 0, 0, 4367, 4366, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4371, 1, 0, 0, 0, 4369, 4370, 5, 273, 0, 0, 4370, 4372, 7, 56, 0, 0, 4371, 4369, 1, 0, 0, 0, 4371, 4372, 1, 0, 0, 0, 4372, 363, 1, 0, 0, 0, 4373, 4375, 5, 46, 0, 0, 4374, 4376, 3, 366, 183, 0, 4375, 4374, 1, 0, 0, 0, 4375, 4376, 1, 0, 0, 0, 4376, 4381, 1, 0, 0, 0, 4377, 4378, 5, 211, 0, 0, 4378, 4382, 3, 804, 402, 0, 4379, 4380, 5, 296, 0, 0, 4380, 4382, 3, 798, 399, 0, 4381, 4377, 1, 0, 0, 0, 4381, 4379, 1, 0, 0, 0, 4382, 4383, 1, 0, 0, 0, 4383, 4392, 5, 2, 0, 0, 4384, 4389, 3, 390, 195, 0, 4385, 4386, 5, 6, 0, 0, 4386, 4388, 3, 390, 195, 0, 4387, 4385, 1, 0, 0, 0, 4388, 4391, 1, 0, 0, 0, 4389, 4387, 1, 0, 0, 0, 4389, 4390, 1, 0, 0, 0, 4390, 4393, 1, 0, 0, 0, 4391, 4389, 1, 0, 0, 0, 4392, 4384, 1, 0, 0, 0, 4392, 4393, 1, 0, 0, 0, 4393, 4394, 1, 0, 0, 0, 4394, 4395, 5, 3, 0, 0, 4395, 4412, 1, 0, 0, 0, 4396, 4410, 5, 316, 0, 0, 4397, 4411, 3, 388, 194, 0, 4398, 4399, 5, 92, 0, 0, 4399, 4400, 5, 2, 0, 0, 4400, 4405, 3, 402, 201, 0, 4401, 4402, 5, 6, 0, 0, 4402, 4404, 3, 402, 201, 0, 4403, 4401, 1, 0, 0, 0, 4404, 4407, 1, 0, 0, 0, 4405, 4403, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, 4408, 1, 0, 0, 0, 4407, 4405, 1, 0, 0, 0, 4408, 4409, 5, 3, 0, 0, 4409, 4411, 1, 0, 0, 0, 4410, 4397, 1, 0, 0, 0, 4410, 4398, 1, 0, 0, 0, 4411, 4413, 1, 0, 0, 0, 4412, 4396, 1, 0, 0, 0, 4412, 4413, 1, 0, 0, 0, 4413, 4415, 1, 0, 0, 0, 4414, 4416, 3, 398, 199, 0, 4415, 4414, 1, 0, 0, 0, 4416, 4417, 1, 0, 0, 0, 4417, 4415, 1, 0, 0, 0, 4417, 4418, 1, 0, 0, 0, 4418, 4424, 1, 0, 0, 0, 4419, 4420, 5, 105, 0, 0, 4420, 4421, 5, 2, 0, 0, 4421, 4422, 3, 784, 392, 0, 4422, 4423, 5, 3, 0, 0, 4423, 4425, 1, 0, 0, 0, 4424, 4419, 1, 0, 0, 0, 4424, 4425, 1, 0, 0, 0, 4425, 365, 1, 0, 0, 0, 4426, 4427, 5, 82, 0, 0, 4427, 4428, 5, 311, 0, 0, 4428, 367, 1, 0, 0, 0, 4429, 4431, 5, 2, 0, 0, 4430, 4432, 3, 370, 185, 0, 4431, 4430, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432, 4433, 1, 0, 0, 0, 4433, 4434, 5, 3, 0, 0, 4434, 369, 1, 0, 0, 0, 4435, 4440, 3, 384, 192, 0, 4436, 4437, 5, 6, 0, 0, 4437, 4439, 3, 384, 192, 0, 4438, 4436, 1, 0, 0, 0, 4439, 4442, 1, 0, 0, 0, 4440, 4438, 1, 0, 0, 0, 4440, 4441, 1, 0, 0, 0, 4441, 371, 1, 0, 0, 0, 4442, 4440, 1, 0, 0, 0, 4443, 4448, 3, 374, 187, 0, 4444, 4445, 5, 6, 0, 0, 4445, 4447, 3, 374, 187, 0, 4446, 4444, 1, 0, 0, 0, 4447, 4450, 1, 0, 0, 0, 4448, 4446, 1, 0, 0, 0, 4448, 4449, 1, 0, 0, 0, 4449, 373, 1, 0, 0, 0, 4450, 4448, 1, 0, 0, 0, 4451, 4452, 3, 794, 397, 0, 4452, 4453, 3, 368, 184, 0, 4453, 4457, 1, 0, 0, 0, 4454, 4457, 3, 832, 416, 0, 4455, 4457, 3, 780, 390, 0, 4456, 4451, 1, 0, 0, 0, 4456, 4454, 1, 0, 0, 0, 4456, 4455, 1, 0, 0, 0, 4457, 375, 1, 0, 0, 0, 4458, 4463, 3, 378, 189, 0, 4459, 4460, 5, 6, 0, 0, 4460, 4462, 3, 378, 189, 0, 4461, 4459, 1, 0, 0, 0, 4462, 4465, 1, 0, 0, 0, 4463, 4461, 1, 0, 0, 0, 4463, 4464, 1, 0, 0, 0, 4464, 377, 1, 0, 0, 0, 4465, 4463, 1, 0, 0, 0, 4466, 4467, 3, 796, 398, 0, 4467, 4468, 3, 368, 184, 0, 4468, 4472, 1, 0, 0, 0, 4469, 4472, 3, 832, 416, 0, 4470, 4472, 3, 780, 390, 0, 4471, 4466, 1, 0, 0, 0, 4471, 4469, 1, 0, 0, 0, 4471, 4470, 1, 0, 0, 0, 4472, 379, 1, 0, 0, 0, 4473, 4478, 3, 382, 191, 0, 4474, 4475, 5, 6, 0, 0, 4475, 4477, 3, 382, 191, 0, 4476, 4474, 1, 0, 0, 0, 4477, 4480, 1, 0, 0, 0, 4478, 4476, 1, 0, 0, 0, 4478, 4479, 1, 0, 0, 0, 4479, 381, 1, 0, 0, 0, 4480, 4478, 1, 0, 0, 0, 4481, 4482, 3, 806, 403, 0, 4482, 4483, 3, 368, 184, 0, 4483, 4487, 1, 0, 0, 0, 4484, 4487, 3, 832, 416, 0, 4485, 4487, 3, 780, 390, 0, 4486, 4481, 1, 0, 0, 0, 4486, 4484, 1, 0, 0, 0, 4486, 4485, 1, 0, 0, 0, 4487, 383, 1, 0, 0, 0, 4488, 4490, 3, 386, 193, 0, 4489, 4491, 3, 820, 410, 0, 4490, 4489, 1, 0, 0, 0, 4490, 4491, 1, 0, 0, 0, 4491, 4497, 1, 0, 0, 0, 4492, 4494, 3, 820, 410, 0, 4493, 4495, 3, 386, 193, 0, 4494, 4493, 1, 0, 0, 0, 4494, 4495, 1, 0, 0, 0, 4495, 4497, 1, 0, 0, 0, 4496, 4488, 1, 0, 0, 0, 4496, 4492, 1, 0, 0, 0, 4496, 4497, 1, 0, 0, 0, 4497, 4498, 1, 0, 0, 0, 4498, 4499, 3, 388, 194, 0, 4499, 385, 1, 0, 0, 0, 4500, 4502, 5, 68, 0, 0, 4501, 4503, 5, 453, 0, 0, 4502, 4501, 1, 0, 0, 0, 4502, 4503, 1, 0, 0, 0, 4503, 4508, 1, 0, 0, 0, 4504, 4508, 5, 453, 0, 0, 4505, 4508, 5, 400, 0, 0, 4506, 4508, 5, 101, 0, 0, 4507, 4500, 1, 0, 0, 0, 4507, 4504, 1, 0, 0, 0, 4507, 4505, 1, 0, 0, 0, 4507, 4506, 1, 0, 0, 0, 4508, 387, 1, 0, 0, 0, 4509, 4519, 3, 652, 326, 0, 4510, 4512, 5, 415, 0, 0, 4511, 4510, 1, 0, 0, 0, 4511, 4512, 1, 0, 0, 0, 4512, 4513, 1, 0, 0, 0, 4513, 4514, 3, 820, 410, 0, 4514, 4515, 3, 318, 159, 0, 4515, 4516, 5, 27, 0, 0, 4516, 4517, 5, 360, 0, 0, 4517, 4519, 1, 0, 0, 0, 4518, 4509, 1, 0, 0, 0, 4518, 4511, 1, 0, 0, 0, 4519, 389, 1, 0, 0, 0, 4520, 4523, 3, 384, 192, 0, 4521, 4522, 7, 57, 0, 0, 4522, 4524, 3, 674, 337, 0, 4523, 4521, 1, 0, 0, 0, 4523, 4524, 1, 0, 0, 0, 4524, 391, 1, 0, 0, 0, 4525, 4535, 5, 2, 0, 0, 4526, 4536, 5, 9, 0, 0, 4527, 4529, 3, 370, 185, 0, 4528, 4527, 1, 0, 0, 0, 4528, 4529, 1, 0, 0, 0, 4529, 4533, 1, 0, 0, 0, 4530, 4531, 5, 83, 0, 0, 4531, 4532, 5, 147, 0, 0, 4532, 4534, 3, 370, 185, 0, 4533, 4530, 1, 0, 0, 0, 4533, 4534, 1, 0, 0, 0, 4534, 4536, 1, 0, 0, 0, 4535, 4526, 1, 0, 0, 0, 4535, 4528, 1, 0, 0, 0, 4536, 4537, 1, 0, 0, 0, 4537, 4538, 5, 3, 0, 0, 4538, 393, 1, 0, 0, 0, 4539, 4540, 3, 806, 403, 0, 4540, 4541, 3, 392, 196, 0, 4541, 395, 1, 0, 0, 0, 4542, 4543, 5, 316, 0, 0, 4543, 4546, 5, 78, 0, 0, 4544, 4546, 5, 149, 0, 0, 4545, 4542, 1, 0, 0, 0, 4545, 4544, 1, 0, 0, 0, 4546, 4547, 1, 0, 0, 0, 4547, 4548, 5, 80, 0, 0, 4548, 4549, 5, 78, 0, 0, 4549, 4572, 5, 458, 0, 0, 4550, 4572, 5, 346, 0, 0, 4551, 4572, 5, 222, 0, 0, 4552, 4572, 5, 338, 0, 0, 4553, 4572, 5, 377, 0, 0, 4554, 4556, 5, 205, 0, 0, 4555, 4554, 1, 0, 0, 0, 4555, 4556, 1, 0, 0, 0, 4556, 4557, 1, 0, 0, 0, 4557, 4558, 5, 327, 0, 0, 4558, 4572, 7, 58, 0, 0, 4559, 4572, 5, 250, 0, 0, 4560, 4561, 5, 77, 0, 0, 4561, 4572, 5, 250, 0, 0, 4562, 4563, 7, 59, 0, 0, 4563, 4572, 3, 202, 101, 0, 4564, 4565, 5, 459, 0, 0, 4565, 4572, 3, 316, 158, 0, 4566, 4567, 5, 333, 0, 0, 4567, 4572, 3, 42, 21, 0, 4568, 4572, 3, 60, 30, 0, 4569, 4570, 5, 460, 0, 0, 4570, 4572, 3, 818, 409, 0, 4571, 4545, 1, 0, 0, 0, 4571, 4550, 1, 0, 0, 0, 4571, 4551, 1, 0, 0, 0, 4571, 4552, 1, 0, 0, 0, 4571, 4553, 1, 0, 0, 0, 4571, 4555, 1, 0, 0, 0, 4571, 4559, 1, 0, 0, 0, 4571, 4560, 1, 0, 0, 0, 4571, 4562, 1, 0, 0, 0, 4571, 4564, 1, 0, 0, 0, 4571, 4566, 1, 0, 0, 0, 4571, 4568, 1, 0, 0, 0, 4571, 4569, 1, 0, 0, 0, 4572, 397, 1, 0, 0, 0, 4573, 4574, 5, 36, 0, 0, 4574, 4575, 3, 808, 404, 0, 4575, 4576, 3, 462, 231, 0, 4576, 4609, 1, 0, 0, 0, 4577, 4578, 5, 247, 0, 0, 4578, 4609, 3, 58, 29, 0, 4579, 4580, 5, 443, 0, 0, 4580, 4581, 5, 62, 0, 0, 4581, 4582, 5, 360, 0, 0, 4582, 4589, 3, 652, 326, 0, 4583, 4584, 5, 6, 0, 0, 4584, 4585, 5, 62, 0, 0, 4585, 4586, 5, 360, 0, 0, 4586, 4588, 3, 652, 326, 0, 4587, 4583, 1, 0, 0, 0, 4588, 4591, 1, 0, 0, 0, 4589, 4587, 1, 0, 0, 0, 4589, 4590, 1, 0, 0, 0, 4590, 4609, 1, 0, 0, 0, 4591, 4589, 1, 0, 0, 0, 4592, 4609, 5, 104, 0, 0, 4593, 4594, 5, 333, 0, 0, 4594, 4601, 3, 818, 409, 0, 4595, 4596, 5, 94, 0, 0, 4596, 4602, 3, 818, 409, 0, 4597, 4598, 5, 10, 0, 0, 4598, 4602, 3, 818, 409, 0, 4599, 4600, 5, 64, 0, 0, 4600, 4602, 5, 434, 0, 0, 4601, 4595, 1, 0, 0, 0, 4601, 4597, 1, 0, 0, 0, 4601, 4599, 1, 0, 0, 0, 4602, 4609, 1, 0, 0, 0, 4603, 4604, 5, 36, 0, 0, 4604, 4609, 3, 818, 409, 0, 4605, 4609, 3, 4, 2, 0, 4606, 4609, 3, 396, 198, 0, 4607, 4609, 3, 818, 409, 0, 4608, 4573, 1, 0, 0, 0, 4608, 4577, 1, 0, 0, 0, 4608, 4579, 1, 0, 0, 0, 4608, 4592, 1, 0, 0, 0, 4608, 4593, 1, 0, 0, 0, 4608, 4603, 1, 0, 0, 0, 4608, 4605, 1, 0, 0, 0, 4608, 4606, 1, 0, 0, 0, 4608, 4607, 1, 0, 0, 0, 4609, 399, 1, 0, 0, 0, 4610, 4611, 5, 105, 0, 0, 4611, 4612, 3, 284, 142, 0, 4612, 401, 1, 0, 0, 0, 4613, 4614, 3, 800, 400, 0, 4614, 4615, 3, 388, 194, 0, 4615, 403, 1, 0, 0, 0, 4616, 4623, 5, 138, 0, 0, 4617, 4618, 5, 211, 0, 0, 4618, 4624, 3, 382, 191, 0, 4619, 4620, 5, 296, 0, 0, 4620, 4624, 3, 378, 189, 0, 4621, 4622, 5, 442, 0, 0, 4622, 4624, 3, 374, 187, 0, 4623, 4617, 1, 0, 0, 0, 4623, 4619, 1, 0, 0, 0, 4623, 4621, 1, 0, 0, 0, 4624, 4626, 1, 0, 0, 0, 4625, 4627, 3, 396, 198, 0, 4626, 4625, 1, 0, 0, 0, 4627, 4628, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4628, 4629, 1, 0, 0, 0, 4629, 4631, 1, 0, 0, 0, 4630, 4632, 5, 315, 0, 0, 4631, 4630, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, 4632, 405, 1, 0, 0, 0, 4633, 4649, 5, 191, 0, 0, 4634, 4636, 5, 211, 0, 0, 4635, 4637, 3, 422, 211, 0, 4636, 4635, 1, 0, 0, 0, 4636, 4637, 1, 0, 0, 0, 4637, 4638, 1, 0, 0, 0, 4638, 4650, 3, 380, 190, 0, 4639, 4641, 5, 296, 0, 0, 4640, 4642, 3, 422, 211, 0, 4641, 4640, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4643, 1, 0, 0, 0, 4643, 4650, 3, 376, 188, 0, 4644, 4646, 5, 442, 0, 0, 4645, 4647, 3, 422, 211, 0, 4646, 4645, 1, 0, 0, 0, 4646, 4647, 1, 0, 0, 0, 4647, 4648, 1, 0, 0, 0, 4648, 4650, 3, 372, 186, 0, 4649, 4634, 1, 0, 0, 0, 4649, 4639, 1, 0, 0, 0, 4649, 4644, 1, 0, 0, 0, 4650, 4652, 1, 0, 0, 0, 4651, 4653, 3, 96, 48, 0, 4652, 4651, 1, 0, 0, 0, 4652, 4653, 1, 0, 0, 0, 4653, 407, 1, 0, 0, 0, 4654, 4655, 5, 191, 0, 0, 4655, 4657, 5, 136, 0, 0, 4656, 4658, 3, 422, 211, 0, 4657, 4656, 1, 0, 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4659, 1, 0, 0, 0, 4659, 4664, 3, 394, 197, 0, 4660, 4661, 5, 6, 0, 0, 4661, 4663, 3, 394, 197, 0, 4662, 4660, 1, 0, 0, 0, 4663, 4666, 1, 0, 0, 0, 4664, 4662, 1, 0, 0, 0, 4664, 4665, 1, 0, 0, 0, 4665, 4668, 1, 0, 0, 0, 4666, 4664, 1, 0, 0, 0, 4667, 4669, 3, 96, 48, 0, 4668, 4667, 1, 0, 0, 0, 4668, 4669, 1, 0, 0, 0, 4669, 409, 1, 0, 0, 0, 4670, 4671, 5, 191, 0, 0, 4671, 4673, 5, 278, 0, 0, 4672, 4674, 3, 422, 211, 0, 4673, 4672, 1, 0, 0, 0, 4673, 4674, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 4680, 3, 416, 208, 0, 4676, 4677, 5, 6, 0, 0, 4677, 4679, 3, 416, 208, 0, 4678, 4676, 1, 0, 0, 0, 4679, 4682, 1, 0, 0, 0, 4680, 4678, 1, 0, 0, 0, 4680, 4681, 1, 0, 0, 0, 4681, 4684, 1, 0, 0, 0, 4682, 4680, 1, 0, 0, 0, 4683, 4685, 3, 96, 48, 0, 4684, 4683, 1, 0, 0, 0, 4684, 4685, 1, 0, 0, 0, 4685, 411, 1, 0, 0, 0, 4686, 4699, 5, 2, 0, 0, 4687, 4690, 3, 652, 326, 0, 4688, 4689, 5, 6, 0, 0, 4689, 4691, 3, 652, 326, 0, 4690, 4688, 1, 0, 0, 0, 4690, 4691, 1, 0, 0, 0, 4691, 4700, 1, 0, 0, 0, 4692, 4693, 5, 407, 0, 0, 4693, 4694, 5, 6, 0, 0, 4694, 4700, 3, 652, 326, 0, 4695, 4696, 3, 652, 326, 0, 4696, 4697, 5, 6, 0, 0, 4697, 4698, 5, 407, 0, 0, 4698, 4700, 1, 0, 0, 0, 4699, 4687, 1, 0, 0, 0, 4699, 4692, 1, 0, 0, 0, 4699, 4695, 1, 0, 0, 0, 4700, 4701, 1, 0, 0, 0, 4701, 4702, 5, 3, 0, 0, 4702, 413, 1, 0, 0, 0, 4703, 4704, 3, 818, 409, 0, 4704, 4705, 5, 11, 0, 0, 4705, 4707, 1, 0, 0, 0, 4706, 4703, 1, 0, 0, 0, 4707, 4710, 1, 0, 0, 0, 4708, 4706, 1, 0, 0, 0, 4708, 4709, 1, 0, 0, 0, 4709, 4711, 1, 0, 0, 0, 4710, 4708, 1, 0, 0, 0, 4711, 4712, 3, 720, 360, 0, 4712, 415, 1, 0, 0, 0, 4713, 4714, 3, 414, 207, 0, 4714, 4715, 3, 412, 206, 0, 4715, 417, 1, 0, 0, 0, 4716, 4720, 5, 57, 0, 0, 4717, 4721, 3, 808, 404, 0, 4718, 4719, 5, 247, 0, 0, 4719, 4721, 3, 58, 29, 0, 4720, 4717, 1, 0, 0, 0, 4720, 4718, 1, 0, 0, 0, 4721, 4722, 1, 0, 0, 0, 4722, 4720, 1, 0, 0, 0, 4722, 4723, 1, 0, 0, 0, 4723, 419, 1, 0, 0, 0, 4724, 4725, 5, 46, 0, 0, 4725, 4726, 5, 41, 0, 0, 4726, 4727, 5, 2, 0, 0, 4727, 4728, 3, 652, 326, 0, 4728, 4729, 5, 36, 0, 0, 4729, 4730, 3, 652, 326, 0, 4730, 4747, 5, 3, 0, 0, 4731, 4732, 5, 379, 0, 0, 4732, 4735, 5, 211, 0, 0, 4733, 4734, 5, 36, 0, 0, 4734, 4736, 7, 60, 0, 0, 4735, 4733, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 4748, 1, 0, 0, 0, 4737, 4741, 5, 105, 0, 0, 4738, 4739, 5, 211, 0, 0, 4739, 4742, 3, 382, 191, 0, 4740, 4742, 5, 400, 0, 0, 4741, 4738, 1, 0, 0, 0, 4741, 4740, 1, 0, 0, 0, 4742, 4745, 1, 0, 0, 0, 4743, 4744, 5, 36, 0, 0, 4744, 4746, 7, 60, 0, 0, 4745, 4743, 1, 0, 0, 0, 4745, 4746, 1, 0, 0, 0, 4746, 4748, 1, 0, 0, 0, 4747, 4731, 1, 0, 0, 0, 4747, 4737, 1, 0, 0, 0, 4748, 421, 1, 0, 0, 0, 4749, 4750, 5, 220, 0, 0, 4750, 4751, 5, 396, 0, 0, 4751, 423, 1, 0, 0, 0, 4752, 4754, 5, 46, 0, 0, 4753, 4755, 3, 366, 183, 0, 4754, 4753, 1, 0, 0, 0, 4754, 4755, 1, 0, 0, 0, 4755, 4756, 1, 0, 0, 0, 4756, 4757, 5, 443, 0, 0, 4757, 4758, 5, 62, 0, 0, 4758, 4759, 3, 652, 326, 0, 4759, 4760, 5, 247, 0, 0, 4760, 4761, 3, 818, 409, 0, 4761, 4776, 5, 2, 0, 0, 4762, 4763, 5, 64, 0, 0, 4763, 4767, 3, 426, 213, 0, 4764, 4765, 5, 6, 0, 0, 4765, 4766, 5, 94, 0, 0, 4766, 4768, 3, 426, 213, 0, 4767, 4764, 1, 0, 0, 0, 4767, 4768, 1, 0, 0, 0, 4768, 4777, 1, 0, 0, 0, 4769, 4770, 5, 94, 0, 0, 4770, 4774, 3, 426, 213, 0, 4771, 4772, 5, 6, 0, 0, 4772, 4773, 5, 64, 0, 0, 4773, 4775, 3, 426, 213, 0, 4774, 4771, 1, 0, 0, 0, 4774, 4775, 1, 0, 0, 0, 4775, 4777, 1, 0, 0, 0, 4776, 4762, 1, 0, 0, 0, 4776, 4769, 1, 0, 0, 0, 4777, 4778, 1, 0, 0, 0, 4778, 4779, 5, 3, 0, 0, 4779, 425, 1, 0, 0, 0, 4780, 4781, 5, 461, 0, 0, 4781, 4782, 5, 105, 0, 0, 4782, 4783, 5, 211, 0, 0, 4783, 4784, 3, 382, 191, 0, 4784, 427, 1, 0, 0, 0, 4785, 4796, 5, 306, 0, 0, 4786, 4787, 5, 2, 0, 0, 4787, 4792, 5, 128, 0, 0, 4788, 4789, 5, 6, 0, 0, 4789, 4791, 5, 128, 0, 0, 4790, 4788, 1, 0, 0, 0, 4791, 4794, 1, 0, 0, 0, 4792, 4790, 1, 0, 0, 0, 4792, 4793, 1, 0, 0, 0, 4793, 4795, 1, 0, 0, 0, 4794, 4792, 1, 0, 0, 0, 4795, 4797, 5, 3, 0, 0, 4796, 4786, 1, 0, 0, 0, 4796, 4797, 1, 0, 0, 0, 4797, 4823, 1, 0, 0, 0, 4798, 4800, 5, 226, 0, 0, 4799, 4801, 5, 109, 0, 0, 4800, 4799, 1, 0, 0, 0, 4800, 4801, 1, 0, 0, 0, 4801, 4802, 1, 0, 0, 0, 4802, 4824, 3, 780, 390, 0, 4803, 4805, 5, 92, 0, 0, 4804, 4806, 5, 109, 0, 0, 4805, 4804, 1, 0, 0, 0, 4805, 4806, 1, 0, 0, 0, 4806, 4807, 1, 0, 0, 0, 4807, 4824, 3, 774, 387, 0, 4808, 4810, 5, 323, 0, 0, 4809, 4811, 5, 109, 0, 0, 4810, 4809, 1, 0, 0, 0, 4810, 4811, 1, 0, 0, 0, 4811, 4812, 1, 0, 0, 0, 4812, 4824, 3, 790, 395, 0, 4813, 4815, 5, 349, 0, 0, 4814, 4816, 5, 109, 0, 0, 4815, 4814, 1, 0, 0, 0, 4815, 4816, 1, 0, 0, 0, 4816, 4817, 1, 0, 0, 0, 4817, 4824, 3, 818, 409, 0, 4818, 4820, 5, 175, 0, 0, 4819, 4821, 5, 109, 0, 0, 4820, 4819, 1, 0, 0, 0, 4820, 4821, 1, 0, 0, 0, 4821, 4822, 1, 0, 0, 0, 4822, 4824, 3, 788, 394, 0, 4823, 4798, 1, 0, 0, 0, 4823, 4803, 1, 0, 0, 0, 4823, 4808, 1, 0, 0, 0, 4823, 4813, 1, 0, 0, 0, 4823, 4818, 1, 0, 0, 0, 4824, 429, 1, 0, 0, 0, 4825, 4826, 5, 138, 0, 0, 4826, 4827, 3, 176, 88, 0, 4827, 4828, 7, 16, 0, 0, 4828, 4829, 3, 100, 50, 0, 4829, 431, 1, 0, 0, 0, 4830, 4835, 5, 138, 0, 0, 4831, 4832, 5, 136, 0, 0, 4832, 4836, 3, 394, 197, 0, 4833, 4834, 5, 442, 0, 0, 4834, 4836, 3, 374, 187, 0, 4835, 4831, 1, 0, 0, 0, 4835, 4833, 1, 0, 0, 0, 4836, 4837, 1, 0, 0, 0, 4837, 4838, 5, 309, 0, 0, 4838, 4839, 5, 94, 0, 0, 4839, 4840, 3, 818, 409, 0, 4840, 5038, 1, 0, 0, 0, 4841, 4842, 5, 138, 0, 0, 4842, 4843, 5, 175, 0, 0, 4843, 4844, 3, 788, 394, 0, 4844, 4845, 5, 309, 0, 0, 4845, 4846, 5, 94, 0, 0, 4846, 4847, 3, 786, 393, 0, 4847, 5038, 1, 0, 0, 0, 4848, 4849, 5, 138, 0, 0, 4849, 4850, 7, 61, 0, 0, 4850, 4851, 3, 316, 158, 0, 4851, 4852, 5, 309, 0, 0, 4852, 4853, 5, 94, 0, 0, 4853, 4854, 3, 818, 409, 0, 4854, 5038, 1, 0, 0, 0, 4855, 4856, 5, 138, 0, 0, 4856, 4857, 5, 211, 0, 0, 4857, 4858, 3, 382, 191, 0, 4858, 4859, 5, 309, 0, 0, 4859, 4860, 5, 94, 0, 0, 4860, 4861, 3, 804, 402, 0, 4861, 5038, 1, 0, 0, 0, 4862, 4863, 5, 138, 0, 0, 4863, 4864, 5, 278, 0, 0, 4864, 4865, 7, 31, 0, 0, 4865, 4866, 3, 316, 158, 0, 4866, 4867, 3, 170, 85, 0, 4867, 4868, 5, 309, 0, 0, 4868, 4869, 5, 94, 0, 0, 4869, 4870, 3, 818, 409, 0, 4870, 5038, 1, 0, 0, 0, 4871, 4872, 5, 138, 0, 0, 4872, 4873, 5, 296, 0, 0, 4873, 4874, 3, 378, 189, 0, 4874, 4875, 5, 309, 0, 0, 4875, 4876, 5, 94, 0, 0, 4876, 4877, 3, 798, 399, 0, 4877, 5038, 1, 0, 0, 0, 4878, 4879, 5, 138, 0, 0, 4879, 4880, 5, 323, 0, 0, 4880, 4881, 3, 790, 395, 0, 4881, 4882, 5, 309, 0, 0, 4882, 4883, 5, 94, 0, 0, 4883, 4884, 3, 32, 16, 0, 4884, 5038, 1, 0, 0, 0, 4885, 4886, 5, 138, 0, 0, 4886, 4888, 7, 62, 0, 0, 4887, 4889, 3, 422, 211, 0, 4888, 4887, 1, 0, 0, 0, 4888, 4889, 1, 0, 0, 0, 4889, 4890, 1, 0, 0, 0, 4890, 4891, 3, 780, 390, 0, 4891, 4892, 5, 309, 0, 0, 4892, 4893, 5, 94, 0, 0, 4893, 4894, 3, 818, 409, 0, 4894, 5038, 1, 0, 0, 0, 4895, 4897, 5, 138, 0, 0, 4896, 4898, 5, 259, 0, 0, 4897, 4896, 1, 0, 0, 0, 4897, 4898, 1, 0, 0, 0, 4898, 4899, 1, 0, 0, 0, 4899, 4901, 5, 376, 0, 0, 4900, 4902, 3, 422, 211, 0, 4901, 4900, 1, 0, 0, 0, 4901, 4902, 1, 0, 0, 0, 4902, 4903, 1, 0, 0, 0, 4903, 4904, 3, 778, 389, 0, 4904, 4905, 5, 309, 0, 0, 4905, 4906, 5, 94, 0, 0, 4906, 4907, 3, 776, 388, 0, 4907, 5038, 1, 0, 0, 0, 4908, 4910, 5, 138, 0, 0, 4909, 4911, 5, 63, 0, 0, 4910, 4909, 1, 0, 0, 0, 4910, 4911, 1, 0, 0, 0, 4911, 4912, 1, 0, 0, 0, 4912, 4914, 5, 92, 0, 0, 4913, 4915, 3, 422, 211, 0, 4914, 4913, 1, 0, 0, 0, 4914, 4915, 1, 0, 0, 0, 4915, 4916, 1, 0, 0, 0, 4916, 4917, 3, 624, 312, 0, 4917, 4918, 5, 309, 0, 0, 4918, 4919, 5, 94, 0, 0, 4919, 4920, 3, 772, 386, 0, 4920, 5038, 1, 0, 0, 0, 4921, 4946, 5, 138, 0, 0, 4922, 4924, 5, 63, 0, 0, 4923, 4922, 1, 0, 0, 0, 4923, 4924, 1, 0, 0, 0, 4924, 4925, 1, 0, 0, 0, 4925, 4927, 5, 92, 0, 0, 4926, 4928, 3, 422, 211, 0, 4927, 4926, 1, 0, 0, 0, 4927, 4928, 1, 0, 0, 0, 4928, 4929, 1, 0, 0, 0, 4929, 4930, 3, 624, 312, 0, 4930, 4932, 5, 309, 0, 0, 4931, 4933, 5, 44, 0, 0, 4932, 4931, 1, 0, 0, 0, 4932, 4933, 1, 0, 0, 0, 4933, 4947, 1, 0, 0, 0, 4934, 4936, 5, 259, 0, 0, 4935, 4934, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 4937, 1, 0, 0, 0, 4937, 4939, 5, 376, 0, 0, 4938, 4940, 3, 422, 211, 0, 4939, 4938, 1, 0, 0, 0, 4939, 4940, 1, 0, 0, 0, 4940, 4941, 1, 0, 0, 0, 4941, 4942, 3, 778, 389, 0, 4942, 4944, 5, 309, 0, 0, 4943, 4945, 5, 44, 0, 0, 4944, 4943, 1, 0, 0, 0, 4944, 4945, 1, 0, 0, 0, 4945, 4947, 1, 0, 0, 0, 4946, 4923, 1, 0, 0, 0, 4946, 4935, 1, 0, 0, 0, 4947, 4948, 1, 0, 0, 0, 4948, 4949, 3, 800, 400, 0, 4949, 4950, 5, 94, 0, 0, 4950, 4951, 3, 802, 401, 0, 4951, 5038, 1, 0, 0, 0, 4952, 4960, 5, 138, 0, 0, 4953, 4955, 5, 92, 0, 0, 4954, 4956, 3, 422, 211, 0, 4955, 4954, 1, 0, 0, 0, 4955, 4956, 1, 0, 0, 0, 4956, 4957, 1, 0, 0, 0, 4957, 4961, 3, 624, 312, 0, 4958, 4959, 5, 189, 0, 0, 4959, 4961, 3, 316, 158, 0, 4960, 4953, 1, 0, 0, 0, 4960, 4958, 1, 0, 0, 0, 4961, 4962, 1, 0, 0, 0, 4962, 4963, 5, 309, 0, 0, 4963, 4964, 5, 45, 0, 0, 4964, 4965, 3, 818, 409, 0, 4965, 4966, 5, 94, 0, 0, 4966, 4967, 3, 818, 409, 0, 4967, 5038, 1, 0, 0, 0, 4968, 4975, 5, 138, 0, 0, 4969, 4971, 5, 445, 0, 0, 4970, 4972, 3, 422, 211, 0, 4971, 4970, 1, 0, 0, 0, 4971, 4972, 1, 0, 0, 0, 4972, 4976, 1, 0, 0, 0, 4973, 4976, 5, 321, 0, 0, 4974, 4976, 5, 357, 0, 0, 4975, 4969, 1, 0, 0, 0, 4975, 4973, 1, 0, 0, 0, 4975, 4974, 1, 0, 0, 0, 4976, 4977, 1, 0, 0, 0, 4977, 4978, 3, 818, 409, 0, 4978, 4979, 5, 80, 0, 0, 4979, 4980, 3, 780, 390, 0, 4980, 4981, 5, 309, 0, 0, 4981, 4982, 5, 94, 0, 0, 4982, 4983, 3, 818, 409, 0, 4983, 5038, 1, 0, 0, 0, 4984, 4997, 5, 138, 0, 0, 4985, 4986, 5, 63, 0, 0, 4986, 4987, 5, 174, 0, 0, 4987, 4998, 5, 381, 0, 0, 4988, 4990, 5, 295, 0, 0, 4989, 4988, 1, 0, 0, 0, 4989, 4990, 1, 0, 0, 0, 4990, 4991, 1, 0, 0, 0, 4991, 4998, 5, 247, 0, 0, 4992, 4998, 5, 452, 0, 0, 4993, 4998, 5, 331, 0, 0, 4994, 4998, 5, 451, 0, 0, 4995, 4996, 5, 198, 0, 0, 4996, 4998, 5, 357, 0, 0, 4997, 4985, 1, 0, 0, 0, 4997, 4989, 1, 0, 0, 0, 4997, 4992, 1, 0, 0, 0, 4997, 4993, 1, 0, 0, 0, 4997, 4994, 1, 0, 0, 0, 4997, 4995, 1, 0, 0, 0, 4998, 4999, 1, 0, 0, 0, 4999, 5000, 3, 818, 409, 0, 5000, 5001, 5, 309, 0, 0, 5001, 5002, 5, 94, 0, 0, 5002, 5003, 3, 818, 409, 0, 5003, 5038, 1, 0, 0, 0, 5004, 5005, 5, 138, 0, 0, 5005, 5006, 7, 45, 0, 0, 5006, 5007, 3, 814, 407, 0, 5007, 5008, 5, 309, 0, 0, 5008, 5009, 5, 94, 0, 0, 5009, 5010, 3, 814, 407, 0, 5010, 5038, 1, 0, 0, 0, 5011, 5012, 5, 138, 0, 0, 5012, 5013, 3, 176, 88, 0, 5013, 5014, 5, 309, 0, 0, 5014, 5015, 5, 94, 0, 0, 5015, 5016, 3, 768, 384, 0, 5016, 5038, 1, 0, 0, 0, 5017, 5018, 5, 138, 0, 0, 5018, 5019, 5, 355, 0, 0, 5019, 5020, 5, 325, 0, 0, 5020, 5021, 7, 41, 0, 0, 5021, 5022, 3, 316, 158, 0, 5022, 5023, 5, 309, 0, 0, 5023, 5024, 5, 94, 0, 0, 5024, 5025, 3, 818, 409, 0, 5025, 5038, 1, 0, 0, 0, 5026, 5027, 5, 138, 0, 0, 5027, 5028, 5, 360, 0, 0, 5028, 5029, 3, 316, 158, 0, 5029, 5030, 5, 309, 0, 0, 5030, 5031, 5, 143, 0, 0, 5031, 5032, 3, 818, 409, 0, 5032, 5033, 5, 94, 0, 0, 5033, 5035, 3, 818, 409, 0, 5034, 5036, 3, 96, 48, 0, 5035, 5034, 1, 0, 0, 0, 5035, 5036, 1, 0, 0, 0, 5036, 5038, 1, 0, 0, 0, 5037, 4830, 1, 0, 0, 0, 5037, 4841, 1, 0, 0, 0, 5037, 4848, 1, 0, 0, 0, 5037, 4855, 1, 0, 0, 0, 5037, 4862, 1, 0, 0, 0, 5037, 4871, 1, 0, 0, 0, 5037, 4878, 1, 0, 0, 0, 5037, 4885, 1, 0, 0, 0, 5037, 4895, 1, 0, 0, 0, 5037, 4908, 1, 0, 0, 0, 5037, 4921, 1, 0, 0, 0, 5037, 4952, 1, 0, 0, 0, 5037, 4968, 1, 0, 0, 0, 5037, 4984, 1, 0, 0, 0, 5037, 5004, 1, 0, 0, 0, 5037, 5011, 1, 0, 0, 0, 5037, 5017, 1, 0, 0, 0, 5037, 5026, 1, 0, 0, 0, 5038, 433, 1, 0, 0, 0, 5039, 5056, 5, 138, 0, 0, 5040, 5041, 5, 211, 0, 0, 5041, 5057, 3, 382, 191, 0, 5042, 5043, 5, 296, 0, 0, 5043, 5057, 3, 378, 189, 0, 5044, 5045, 5, 442, 0, 0, 5045, 5057, 3, 374, 187, 0, 5046, 5047, 5, 357, 0, 0, 5047, 5048, 3, 818, 409, 0, 5048, 5049, 5, 80, 0, 0, 5049, 5050, 3, 780, 390, 0, 5050, 5057, 1, 0, 0, 0, 5051, 5052, 5, 259, 0, 0, 5052, 5053, 5, 376, 0, 0, 5053, 5057, 3, 778, 389, 0, 5054, 5055, 5, 226, 0, 0, 5055, 5057, 3, 780, 390, 0, 5056, 5040, 1, 0, 0, 0, 5056, 5042, 1, 0, 0, 0, 5056, 5044, 1, 0, 0, 0, 5056, 5046, 1, 0, 0, 0, 5056, 5051, 1, 0, 0, 0, 5056, 5054, 1, 0, 0, 0, 5057, 5059, 1, 0, 0, 0, 5058, 5060, 5, 269, 0, 0, 5059, 5058, 1, 0, 0, 0, 5059, 5060, 1, 0, 0, 0, 5060, 5061, 1, 0, 0, 0, 5061, 5062, 5, 462, 0, 0, 5062, 5063, 5, 80, 0, 0, 5063, 5064, 5, 204, 0, 0, 5064, 5065, 3, 818, 409, 0, 5065, 435, 1, 0, 0, 0, 5066, 5105, 5, 138, 0, 0, 5067, 5068, 5, 136, 0, 0, 5068, 5106, 3, 394, 197, 0, 5069, 5070, 5, 204, 0, 0, 5070, 5106, 3, 818, 409, 0, 5071, 5072, 5, 211, 0, 0, 5072, 5106, 3, 382, 191, 0, 5073, 5074, 5, 278, 0, 0, 5074, 5106, 3, 416, 208, 0, 5075, 5076, 5, 278, 0, 0, 5076, 5077, 7, 31, 0, 0, 5077, 5078, 3, 316, 158, 0, 5078, 5079, 3, 170, 85, 0, 5079, 5106, 1, 0, 0, 0, 5080, 5081, 5, 296, 0, 0, 5081, 5106, 3, 378, 189, 0, 5082, 5083, 5, 442, 0, 0, 5083, 5106, 3, 374, 187, 0, 5084, 5086, 5, 328, 0, 0, 5085, 5087, 3, 422, 211, 0, 5086, 5085, 1, 0, 0, 0, 5086, 5087, 1, 0, 0, 0, 5087, 5088, 1, 0, 0, 0, 5088, 5106, 3, 780, 390, 0, 5089, 5091, 5, 259, 0, 0, 5090, 5089, 1, 0, 0, 0, 5090, 5091, 1, 0, 0, 0, 5091, 5092, 1, 0, 0, 0, 5092, 5094, 5, 376, 0, 0, 5093, 5095, 3, 422, 211, 0, 5094, 5093, 1, 0, 0, 0, 5094, 5095, 1, 0, 0, 0, 5095, 5096, 1, 0, 0, 0, 5096, 5106, 3, 778, 389, 0, 5097, 5099, 5, 63, 0, 0, 5098, 5097, 1, 0, 0, 0, 5098, 5099, 1, 0, 0, 0, 5099, 5100, 1, 0, 0, 0, 5100, 5102, 5, 92, 0, 0, 5101, 5103, 3, 422, 211, 0, 5102, 5101, 1, 0, 0, 0, 5102, 5103, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5106, 3, 624, 312, 0, 5105, 5067, 1, 0, 0, 0, 5105, 5069, 1, 0, 0, 0, 5105, 5071, 1, 0, 0, 0, 5105, 5073, 1, 0, 0, 0, 5105, 5075, 1, 0, 0, 0, 5105, 5080, 1, 0, 0, 0, 5105, 5082, 1, 0, 0, 0, 5105, 5084, 1, 0, 0, 0, 5105, 5090, 1, 0, 0, 0, 5105, 5098, 1, 0, 0, 0, 5106, 5107, 1, 0, 0, 0, 5107, 5108, 5, 333, 0, 0, 5108, 5109, 5, 323, 0, 0, 5109, 5110, 3, 790, 395, 0, 5110, 5128, 1, 0, 0, 0, 5111, 5120, 5, 138, 0, 0, 5112, 5113, 5, 355, 0, 0, 5113, 5114, 5, 325, 0, 0, 5114, 5121, 7, 41, 0, 0, 5115, 5121, 5, 108, 0, 0, 5116, 5121, 5, 168, 0, 0, 5117, 5121, 5, 189, 0, 0, 5118, 5121, 5, 342, 0, 0, 5119, 5121, 5, 360, 0, 0, 5120, 5112, 1, 0, 0, 0, 5120, 5115, 1, 0, 0, 0, 5120, 5116, 1, 0, 0, 0, 5120, 5117, 1, 0, 0, 0, 5120, 5118, 1, 0, 0, 0, 5120, 5119, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 3, 316, 158, 0, 5123, 5124, 5, 333, 0, 0, 5124, 5125, 5, 323, 0, 0, 5125, 5126, 3, 790, 395, 0, 5126, 5128, 1, 0, 0, 0, 5127, 5066, 1, 0, 0, 0, 5127, 5111, 1, 0, 0, 0, 5128, 437, 1, 0, 0, 0, 5129, 5130, 5, 138, 0, 0, 5130, 5131, 5, 278, 0, 0, 5131, 5132, 3, 416, 208, 0, 5132, 5133, 5, 333, 0, 0, 5133, 5134, 3, 440, 220, 0, 5134, 439, 1, 0, 0, 0, 5135, 5136, 5, 2, 0, 0, 5136, 5141, 3, 442, 221, 0, 5137, 5138, 5, 6, 0, 0, 5138, 5140, 3, 442, 221, 0, 5139, 5137, 1, 0, 0, 0, 5140, 5143, 1, 0, 0, 0, 5141, 5139, 1, 0, 0, 0, 5141, 5142, 1, 0, 0, 0, 5142, 5144, 1, 0, 0, 0, 5143, 5141, 1, 0, 0, 0, 5144, 5145, 5, 3, 0, 0, 5145, 441, 1, 0, 0, 0, 5146, 5147, 3, 824, 412, 0, 5147, 5154, 5, 10, 0, 0, 5148, 5155, 5, 407, 0, 0, 5149, 5155, 3, 388, 194, 0, 5150, 5155, 3, 834, 417, 0, 5151, 5155, 3, 726, 363, 0, 5152, 5155, 3, 202, 101, 0, 5153, 5155, 3, 808, 404, 0, 5154, 5148, 1, 0, 0, 0, 5154, 5149, 1, 0, 0, 0, 5154, 5150, 1, 0, 0, 0, 5154, 5151, 1, 0, 0, 0, 5154, 5152, 1, 0, 0, 0, 5154, 5153, 1, 0, 0, 0, 5155, 443, 1, 0, 0, 0, 5156, 5157, 5, 138, 0, 0, 5157, 5158, 5, 360, 0, 0, 5158, 5159, 3, 316, 158, 0, 5159, 5160, 5, 333, 0, 0, 5160, 5161, 3, 440, 220, 0, 5161, 445, 1, 0, 0, 0, 5162, 5163, 5, 138, 0, 0, 5163, 5164, 5, 278, 0, 0, 5164, 5165, 7, 31, 0, 0, 5165, 5166, 3, 316, 158, 0, 5166, 5167, 3, 170, 85, 0, 5167, 5168, 5, 282, 0, 0, 5168, 5169, 5, 94, 0, 0, 5169, 5170, 3, 814, 407, 0, 5170, 5237, 1, 0, 0, 0, 5171, 5198, 5, 138, 0, 0, 5172, 5173, 5, 136, 0, 0, 5173, 5199, 3, 394, 197, 0, 5174, 5175, 5, 175, 0, 0, 5175, 5199, 3, 788, 394, 0, 5176, 5177, 5, 211, 0, 0, 5177, 5199, 3, 382, 191, 0, 5178, 5180, 5, 295, 0, 0, 5179, 5178, 1, 0, 0, 0, 5179, 5180, 1, 0, 0, 0, 5180, 5181, 1, 0, 0, 0, 5181, 5182, 5, 247, 0, 0, 5182, 5199, 3, 818, 409, 0, 5183, 5184, 5, 248, 0, 0, 5184, 5185, 5, 274, 0, 0, 5185, 5199, 3, 202, 101, 0, 5186, 5187, 5, 248, 0, 0, 5187, 5188, 5, 274, 0, 0, 5188, 5199, 3, 202, 101, 0, 5189, 5190, 5, 278, 0, 0, 5190, 5199, 3, 416, 208, 0, 5191, 5192, 5, 296, 0, 0, 5192, 5199, 3, 378, 189, 0, 5193, 5194, 5, 442, 0, 0, 5194, 5199, 3, 374, 187, 0, 5195, 5196, 5, 323, 0, 0, 5196, 5199, 3, 790, 395, 0, 5197, 5199, 3, 176, 88, 0, 5198, 5172, 1, 0, 0, 0, 5198, 5174, 1, 0, 0, 0, 5198, 5176, 1, 0, 0, 0, 5198, 5179, 1, 0, 0, 0, 5198, 5183, 1, 0, 0, 0, 5198, 5186, 1, 0, 0, 0, 5198, 5189, 1, 0, 0, 0, 5198, 5191, 1, 0, 0, 0, 5198, 5193, 1, 0, 0, 0, 5198, 5195, 1, 0, 0, 0, 5198, 5197, 1, 0, 0, 0, 5199, 5200, 1, 0, 0, 0, 5200, 5201, 5, 282, 0, 0, 5201, 5202, 5, 94, 0, 0, 5202, 5203, 3, 814, 407, 0, 5203, 5237, 1, 0, 0, 0, 5204, 5213, 5, 138, 0, 0, 5205, 5206, 5, 355, 0, 0, 5206, 5207, 5, 325, 0, 0, 5207, 5214, 7, 63, 0, 0, 5208, 5214, 5, 108, 0, 0, 5209, 5214, 5, 168, 0, 0, 5210, 5214, 5, 189, 0, 0, 5211, 5214, 5, 360, 0, 0, 5212, 5214, 5, 342, 0, 0, 5213, 5205, 1, 0, 0, 0, 5213, 5208, 1, 0, 0, 0, 5213, 5209, 1, 0, 0, 0, 5213, 5210, 1, 0, 0, 0, 5213, 5211, 1, 0, 0, 0, 5213, 5212, 1, 0, 0, 0, 5214, 5215, 1, 0, 0, 0, 5215, 5216, 3, 316, 158, 0, 5216, 5217, 5, 282, 0, 0, 5217, 5218, 5, 94, 0, 0, 5218, 5219, 3, 814, 407, 0, 5219, 5237, 1, 0, 0, 0, 5220, 5229, 5, 138, 0, 0, 5221, 5230, 5, 331, 0, 0, 5222, 5223, 5, 63, 0, 0, 5223, 5224, 5, 174, 0, 0, 5224, 5230, 5, 381, 0, 0, 5225, 5226, 5, 198, 0, 0, 5226, 5230, 5, 357, 0, 0, 5227, 5230, 5, 452, 0, 0, 5228, 5230, 5, 451, 0, 0, 5229, 5221, 1, 0, 0, 0, 5229, 5222, 1, 0, 0, 0, 5229, 5225, 1, 0, 0, 0, 5229, 5227, 1, 0, 0, 0, 5229, 5228, 1, 0, 0, 0, 5230, 5231, 1, 0, 0, 0, 5231, 5232, 3, 818, 409, 0, 5232, 5233, 5, 282, 0, 0, 5233, 5234, 5, 94, 0, 0, 5234, 5235, 3, 814, 407, 0, 5235, 5237, 1, 0, 0, 0, 5236, 5162, 1, 0, 0, 0, 5236, 5171, 1, 0, 0, 0, 5236, 5204, 1, 0, 0, 0, 5236, 5220, 1, 0, 0, 0, 5237, 447, 1, 0, 0, 0, 5238, 5239, 5, 46, 0, 0, 5239, 5240, 5, 452, 0, 0, 5240, 5247, 3, 818, 409, 0, 5241, 5242, 5, 62, 0, 0, 5242, 5243, 5, 92, 0, 0, 5243, 5248, 3, 628, 314, 0, 5244, 5245, 5, 62, 0, 0, 5245, 5246, 5, 30, 0, 0, 5246, 5248, 5, 350, 0, 0, 5247, 5241, 1, 0, 0, 0, 5247, 5244, 1, 0, 0, 0, 5247, 5248, 1, 0, 0, 0, 5248, 5250, 1, 0, 0, 0, 5249, 5251, 3, 400, 200, 0, 5250, 5249, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 449, 1, 0, 0, 0, 5252, 5253, 5, 138, 0, 0, 5253, 5254, 5, 452, 0, 0, 5254, 5272, 3, 818, 409, 0, 5255, 5256, 5, 282, 0, 0, 5256, 5257, 5, 94, 0, 0, 5257, 5273, 3, 814, 407, 0, 5258, 5259, 5, 333, 0, 0, 5259, 5273, 3, 284, 142, 0, 5260, 5261, 5, 309, 0, 0, 5261, 5262, 5, 94, 0, 0, 5262, 5273, 3, 818, 409, 0, 5263, 5264, 7, 34, 0, 0, 5264, 5269, 3, 626, 313, 0, 5265, 5266, 5, 6, 0, 0, 5266, 5268, 3, 626, 313, 0, 5267, 5265, 1, 0, 0, 0, 5268, 5271, 1, 0, 0, 0, 5269, 5267, 1, 0, 0, 0, 5269, 5270, 1, 0, 0, 0, 5270, 5273, 1, 0, 0, 0, 5271, 5269, 1, 0, 0, 0, 5272, 5255, 1, 0, 0, 0, 5272, 5258, 1, 0, 0, 0, 5272, 5260, 1, 0, 0, 0, 5272, 5263, 1, 0, 0, 0, 5273, 451, 1, 0, 0, 0, 5274, 5275, 5, 46, 0, 0, 5275, 5276, 5, 451, 0, 0, 5276, 5277, 3, 818, 409, 0, 5277, 5278, 5, 164, 0, 0, 5278, 5279, 3, 808, 404, 0, 5279, 5280, 5, 452, 0, 0, 5280, 5285, 3, 824, 412, 0, 5281, 5282, 5, 6, 0, 0, 5282, 5284, 3, 824, 412, 0, 5283, 5281, 1, 0, 0, 0, 5284, 5287, 1, 0, 0, 0, 5285, 5283, 1, 0, 0, 0, 5285, 5286, 1, 0, 0, 0, 5286, 5289, 1, 0, 0, 0, 5287, 5285, 1, 0, 0, 0, 5288, 5290, 3, 400, 200, 0, 5289, 5288, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 453, 1, 0, 0, 0, 5291, 5292, 5, 138, 0, 0, 5292, 5293, 5, 451, 0, 0, 5293, 5294, 3, 818, 409, 0, 5294, 5295, 5, 333, 0, 0, 5295, 5296, 3, 284, 142, 0, 5296, 5348, 1, 0, 0, 0, 5297, 5298, 5, 138, 0, 0, 5298, 5299, 5, 451, 0, 0, 5299, 5300, 3, 818, 409, 0, 5300, 5301, 5, 164, 0, 0, 5301, 5302, 3, 808, 404, 0, 5302, 5348, 1, 0, 0, 0, 5303, 5304, 5, 138, 0, 0, 5304, 5305, 5, 451, 0, 0, 5305, 5306, 3, 818, 409, 0, 5306, 5307, 5, 305, 0, 0, 5307, 5309, 5, 452, 0, 0, 5308, 5310, 3, 400, 200, 0, 5309, 5308, 1, 0, 0, 0, 5309, 5310, 1, 0, 0, 0, 5310, 5348, 1, 0, 0, 0, 5311, 5312, 5, 138, 0, 0, 5312, 5313, 5, 451, 0, 0, 5313, 5314, 3, 818, 409, 0, 5314, 5315, 7, 34, 0, 0, 5315, 5316, 5, 452, 0, 0, 5316, 5321, 3, 824, 412, 0, 5317, 5318, 5, 6, 0, 0, 5318, 5320, 3, 824, 412, 0, 5319, 5317, 1, 0, 0, 0, 5320, 5323, 1, 0, 0, 0, 5321, 5319, 1, 0, 0, 0, 5321, 5322, 1, 0, 0, 0, 5322, 5325, 1, 0, 0, 0, 5323, 5321, 1, 0, 0, 0, 5324, 5326, 3, 400, 200, 0, 5325, 5324, 1, 0, 0, 0, 5325, 5326, 1, 0, 0, 0, 5326, 5348, 1, 0, 0, 0, 5327, 5328, 5, 138, 0, 0, 5328, 5329, 5, 451, 0, 0, 5329, 5330, 3, 818, 409, 0, 5330, 5331, 7, 64, 0, 0, 5331, 5348, 1, 0, 0, 0, 5332, 5333, 5, 138, 0, 0, 5333, 5334, 5, 451, 0, 0, 5334, 5335, 3, 818, 409, 0, 5335, 5336, 5, 465, 0, 0, 5336, 5337, 5, 2, 0, 0, 5337, 5338, 3, 290, 145, 0, 5338, 5339, 5, 3, 0, 0, 5339, 5348, 1, 0, 0, 0, 5340, 5341, 5, 138, 0, 0, 5341, 5342, 5, 451, 0, 0, 5342, 5343, 3, 818, 409, 0, 5343, 5344, 5, 282, 0, 0, 5344, 5345, 5, 94, 0, 0, 5345, 5346, 3, 814, 407, 0, 5346, 5348, 1, 0, 0, 0, 5347, 5291, 1, 0, 0, 0, 5347, 5297, 1, 0, 0, 0, 5347, 5303, 1, 0, 0, 0, 5347, 5311, 1, 0, 0, 0, 5347, 5327, 1, 0, 0, 0, 5347, 5332, 1, 0, 0, 0, 5347, 5340, 1, 0, 0, 0, 5348, 455, 1, 0, 0, 0, 5349, 5351, 5, 46, 0, 0, 5350, 5352, 3, 366, 183, 0, 5351, 5350, 1, 0, 0, 0, 5351, 5352, 1, 0, 0, 0, 5352, 5353, 1, 0, 0, 0, 5353, 5354, 5, 321, 0, 0, 5354, 5355, 3, 818, 409, 0, 5355, 5356, 5, 36, 0, 0, 5356, 5357, 5, 80, 0, 0, 5357, 5358, 7, 65, 0, 0, 5358, 5359, 5, 94, 0, 0, 5359, 5361, 3, 780, 390, 0, 5360, 5362, 3, 638, 319, 0, 5361, 5360, 1, 0, 0, 0, 5361, 5362, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 5365, 5, 57, 0, 0, 5364, 5366, 7, 66, 0, 0, 5365, 5364, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5383, 1, 0, 0, 0, 5367, 5384, 5, 270, 0, 0, 5368, 5384, 3, 458, 229, 0, 5369, 5371, 5, 2, 0, 0, 5370, 5372, 3, 458, 229, 0, 5371, 5370, 1, 0, 0, 0, 5371, 5372, 1, 0, 0, 0, 5372, 5379, 1, 0, 0, 0, 5373, 5375, 5, 7, 0, 0, 5374, 5376, 3, 458, 229, 0, 5375, 5374, 1, 0, 0, 0, 5375, 5376, 1, 0, 0, 0, 5376, 5378, 1, 0, 0, 0, 5377, 5373, 1, 0, 0, 0, 5378, 5381, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5379, 5380, 1, 0, 0, 0, 5380, 5382, 1, 0, 0, 0, 5381, 5379, 1, 0, 0, 0, 5382, 5384, 5, 3, 0, 0, 5383, 5367, 1, 0, 0, 0, 5383, 5368, 1, 0, 0, 0, 5383, 5369, 1, 0, 0, 0, 5384, 457, 1, 0, 0, 0, 5385, 5391, 3, 560, 280, 0, 5386, 5391, 3, 538, 269, 0, 5387, 5391, 3, 552, 276, 0, 5388, 5391, 3, 548, 274, 0, 5389, 5391, 3, 460, 230, 0, 5390, 5385, 1, 0, 0, 0, 5390, 5386, 1, 0, 0, 0, 5390, 5387, 1, 0, 0, 0, 5390, 5388, 1, 0, 0, 0, 5390, 5389, 1, 0, 0, 0, 5391, 459, 1, 0, 0, 0, 5392, 5393, 5, 271, 0, 0, 5393, 5395, 3, 818, 409, 0, 5394, 5396, 3, 462, 231, 0, 5395, 5394, 1, 0, 0, 0, 5395, 5396, 1, 0, 0, 0, 5396, 461, 1, 0, 0, 0, 5397, 5398, 5, 6, 0, 0, 5398, 5399, 3, 808, 404, 0, 5399, 463, 1, 0, 0, 0, 5400, 5401, 5, 252, 0, 0, 5401, 5402, 3, 818, 409, 0, 5402, 465, 1, 0, 0, 0, 5403, 5406, 5, 366, 0, 0, 5404, 5407, 3, 818, 409, 0, 5405, 5407, 5, 9, 0, 0, 5406, 5404, 1, 0, 0, 0, 5406, 5405, 1, 0, 0, 0, 5407, 467, 1, 0, 0, 0, 5408, 5410, 5, 146, 0, 0, 5409, 5411, 3, 470, 235, 0, 5410, 5409, 1, 0, 0, 0, 5410, 5411, 1, 0, 0, 0, 5411, 5413, 1, 0, 0, 0, 5412, 5414, 3, 474, 237, 0, 5413, 5412, 1, 0, 0, 0, 5413, 5414, 1, 0, 0, 0, 5414, 5454, 1, 0, 0, 0, 5415, 5416, 5, 340, 0, 0, 5416, 5418, 5, 356, 0, 0, 5417, 5419, 3, 474, 237, 0, 5418, 5417, 1, 0, 0, 0, 5418, 5419, 1, 0, 0, 0, 5419, 5454, 1, 0, 0, 0, 5420, 5421, 5, 322, 0, 0, 5421, 5454, 3, 818, 409, 0, 5422, 5424, 5, 308, 0, 0, 5423, 5425, 5, 322, 0, 0, 5424, 5423, 1, 0, 0, 0, 5424, 5425, 1, 0, 0, 0, 5425, 5426, 1, 0, 0, 0, 5426, 5454, 3, 818, 409, 0, 5427, 5428, 5, 290, 0, 0, 5428, 5429, 5, 356, 0, 0, 5429, 5454, 3, 808, 404, 0, 5430, 5431, 7, 67, 0, 0, 5431, 5432, 5, 291, 0, 0, 5432, 5454, 3, 808, 404, 0, 5433, 5435, 7, 68, 0, 0, 5434, 5436, 3, 470, 235, 0, 5435, 5434, 1, 0, 0, 0, 5435, 5436, 1, 0, 0, 0, 5436, 5442, 1, 0, 0, 0, 5437, 5439, 5, 33, 0, 0, 5438, 5440, 5, 269, 0, 0, 5439, 5438, 1, 0, 0, 0, 5439, 5440, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5443, 5, 153, 0, 0, 5442, 5437, 1, 0, 0, 0, 5442, 5443, 1, 0, 0, 0, 5443, 5454, 1, 0, 0, 0, 5444, 5446, 5, 319, 0, 0, 5445, 5447, 3, 470, 235, 0, 5446, 5445, 1, 0, 0, 0, 5446, 5447, 1, 0, 0, 0, 5447, 5448, 1, 0, 0, 0, 5448, 5450, 5, 94, 0, 0, 5449, 5451, 5, 322, 0, 0, 5450, 5449, 1, 0, 0, 0, 5450, 5451, 1, 0, 0, 0, 5451, 5452, 1, 0, 0, 0, 5452, 5454, 3, 818, 409, 0, 5453, 5408, 1, 0, 0, 0, 5453, 5415, 1, 0, 0, 0, 5453, 5420, 1, 0, 0, 0, 5453, 5422, 1, 0, 0, 0, 5453, 5427, 1, 0, 0, 0, 5453, 5430, 1, 0, 0, 0, 5453, 5433, 1, 0, 0, 0, 5453, 5444, 1, 0, 0, 0, 5454, 469, 1, 0, 0, 0, 5455, 5456, 7, 69, 0, 0, 5456, 471, 1, 0, 0, 0, 5457, 5458, 5, 244, 0, 0, 5458, 5459, 5, 251, 0, 0, 5459, 5467, 3, 50, 25, 0, 5460, 5461, 5, 300, 0, 0, 5461, 5467, 7, 70, 0, 0, 5462, 5464, 5, 77, 0, 0, 5463, 5462, 1, 0, 0, 0, 5463, 5464, 1, 0, 0, 0, 5464, 5465, 1, 0, 0, 0, 5465, 5467, 5, 54, 0, 0, 5466, 5457, 1, 0, 0, 0, 5466, 5460, 1, 0, 0, 0, 5466, 5463, 1, 0, 0, 0, 5467, 473, 1, 0, 0, 0, 5468, 5475, 3, 472, 236, 0, 5469, 5471, 5, 6, 0, 0, 5470, 5469, 1, 0, 0, 0, 5470, 5471, 1, 0, 0, 0, 5471, 5472, 1, 0, 0, 0, 5472, 5474, 3, 472, 236, 0, 5473, 5470, 1, 0, 0, 0, 5474, 5477, 1, 0, 0, 0, 5475, 5473, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 475, 1, 0, 0, 0, 5477, 5475, 1, 0, 0, 0, 5478, 5481, 5, 46, 0, 0, 5479, 5480, 5, 82, 0, 0, 5480, 5482, 5, 311, 0, 0, 5481, 5479, 1, 0, 0, 0, 5481, 5482, 1, 0, 0, 0, 5482, 5484, 1, 0, 0, 0, 5483, 5485, 3, 122, 61, 0, 5484, 5483, 1, 0, 0, 0, 5484, 5485, 1, 0, 0, 0, 5485, 5501, 1, 0, 0, 0, 5486, 5487, 5, 376, 0, 0, 5487, 5489, 3, 776, 388, 0, 5488, 5490, 3, 146, 73, 0, 5489, 5488, 1, 0, 0, 0, 5489, 5490, 1, 0, 0, 0, 5490, 5492, 1, 0, 0, 0, 5491, 5493, 3, 102, 51, 0, 5492, 5491, 1, 0, 0, 0, 5492, 5493, 1, 0, 0, 0, 5493, 5502, 1, 0, 0, 0, 5494, 5495, 5, 303, 0, 0, 5495, 5496, 5, 376, 0, 0, 5496, 5497, 3, 776, 388, 0, 5497, 5499, 3, 144, 72, 0, 5498, 5500, 3, 102, 51, 0, 5499, 5498, 1, 0, 0, 0, 5499, 5500, 1, 0, 0, 0, 5500, 5502, 1, 0, 0, 0, 5501, 5486, 1, 0, 0, 0, 5501, 5494, 1, 0, 0, 0, 5502, 5503, 1, 0, 0, 0, 5503, 5504, 5, 36, 0, 0, 5504, 5511, 3, 560, 280, 0, 5505, 5507, 5, 105, 0, 0, 5506, 5508, 7, 71, 0, 0, 5507, 5506, 1, 0, 0, 0, 5507, 5508, 1, 0, 0, 0, 5508, 5509, 1, 0, 0, 0, 5509, 5510, 5, 42, 0, 0, 5510, 5512, 5, 279, 0, 0, 5511, 5505, 1, 0, 0, 0, 5511, 5512, 1, 0, 0, 0, 5512, 477, 1, 0, 0, 0, 5513, 5514, 5, 253, 0, 0, 5514, 5515, 3, 808, 404, 0, 5515, 479, 1, 0, 0, 0, 5516, 5517, 5, 46, 0, 0, 5517, 5518, 5, 175, 0, 0, 5518, 5520, 3, 786, 393, 0, 5519, 5521, 5, 105, 0, 0, 5520, 5519, 1, 0, 0, 0, 5520, 5521, 1, 0, 0, 0, 5521, 5527, 1, 0, 0, 0, 5522, 5524, 3, 482, 241, 0, 5523, 5522, 1, 0, 0, 0, 5524, 5525, 1, 0, 0, 0, 5525, 5523, 1, 0, 0, 0, 5525, 5526, 1, 0, 0, 0, 5526, 5528, 1, 0, 0, 0, 5527, 5523, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 481, 1, 0, 0, 0, 5529, 5530, 5, 164, 0, 0, 5530, 5538, 5, 74, 0, 0, 5531, 5538, 5, 194, 0, 0, 5532, 5538, 5, 255, 0, 0, 5533, 5538, 5, 282, 0, 0, 5534, 5538, 5, 351, 0, 0, 5535, 5538, 5, 353, 0, 0, 5536, 5538, 3, 826, 413, 0, 5537, 5529, 1, 0, 0, 0, 5537, 5531, 1, 0, 0, 0, 5537, 5532, 1, 0, 0, 0, 5537, 5533, 1, 0, 0, 0, 5537, 5534, 1, 0, 0, 0, 5537, 5535, 1, 0, 0, 0, 5537, 5536, 1, 0, 0, 0, 5538, 5540, 1, 0, 0, 0, 5539, 5541, 5, 10, 0, 0, 5540, 5539, 1, 0, 0, 0, 5540, 5541, 1, 0, 0, 0, 5541, 5545, 1, 0, 0, 0, 5542, 5546, 3, 812, 406, 0, 5543, 5546, 3, 54, 27, 0, 5544, 5546, 5, 53, 0, 0, 5545, 5542, 1, 0, 0, 0, 5545, 5543, 1, 0, 0, 0, 5545, 5544, 1, 0, 0, 0, 5546, 483, 1, 0, 0, 0, 5547, 5548, 5, 138, 0, 0, 5548, 5549, 5, 175, 0, 0, 5549, 5565, 3, 788, 394, 0, 5550, 5551, 5, 333, 0, 0, 5551, 5552, 5, 351, 0, 0, 5552, 5554, 3, 768, 384, 0, 5553, 5550, 1, 0, 0, 0, 5553, 5554, 1, 0, 0, 0, 5554, 5566, 1, 0, 0, 0, 5555, 5557, 5, 105, 0, 0, 5556, 5555, 1, 0, 0, 0, 5556, 5557, 1, 0, 0, 0, 5557, 5559, 1, 0, 0, 0, 5558, 5560, 3, 482, 241, 0, 5559, 5558, 1, 0, 0, 0, 5560, 5561, 1, 0, 0, 0, 5561, 5559, 1, 0, 0, 0, 5561, 5562, 1, 0, 0, 0, 5562, 5564, 1, 0, 0, 0, 5563, 5556, 1, 0, 0, 0, 5563, 5564, 1, 0, 0, 0, 5564, 5566, 1, 0, 0, 0, 5565, 5553, 1, 0, 0, 0, 5565, 5563, 1, 0, 0, 0, 5566, 485, 1, 0, 0, 0, 5567, 5568, 5, 138, 0, 0, 5568, 5569, 5, 175, 0, 0, 5569, 5571, 3, 788, 394, 0, 5570, 5572, 3, 64, 32, 0, 5571, 5570, 1, 0, 0, 0, 5571, 5572, 1, 0, 0, 0, 5572, 487, 1, 0, 0, 0, 5573, 5574, 5, 138, 0, 0, 5574, 5575, 5, 108, 0, 0, 5575, 5576, 3, 316, 158, 0, 5576, 5577, 5, 305, 0, 0, 5577, 5578, 5, 375, 0, 0, 5578, 489, 1, 0, 0, 0, 5579, 5580, 5, 138, 0, 0, 5580, 5581, 5, 349, 0, 0, 5581, 5582, 7, 16, 0, 0, 5582, 5583, 3, 40, 20, 0, 5583, 491, 1, 0, 0, 0, 5584, 5585, 5, 46, 0, 0, 5585, 5586, 5, 189, 0, 0, 5586, 5588, 3, 316, 158, 0, 5587, 5589, 5, 36, 0, 0, 5588, 5587, 1, 0, 0, 0, 5588, 5589, 1, 0, 0, 0, 5589, 5590, 1, 0, 0, 0, 5590, 5594, 3, 652, 326, 0, 5591, 5593, 3, 134, 67, 0, 5592, 5591, 1, 0, 0, 0, 5593, 5596, 1, 0, 0, 0, 5594, 5592, 1, 0, 0, 0, 5594, 5595, 1, 0, 0, 0, 5595, 493, 1, 0, 0, 0, 5596, 5594, 1, 0, 0, 0, 5597, 5598, 5, 138, 0, 0, 5598, 5599, 5, 189, 0, 0, 5599, 5622, 3, 316, 158, 0, 5600, 5623, 3, 94, 47, 0, 5601, 5602, 7, 15, 0, 0, 5602, 5603, 5, 77, 0, 0, 5603, 5623, 5, 78, 0, 0, 5604, 5607, 5, 133, 0, 0, 5605, 5606, 5, 45, 0, 0, 5606, 5608, 3, 818, 409, 0, 5607, 5605, 1, 0, 0, 0, 5607, 5608, 1, 0, 0, 0, 5608, 5609, 1, 0, 0, 0, 5609, 5623, 3, 142, 71, 0, 5610, 5611, 5, 191, 0, 0, 5611, 5613, 5, 45, 0, 0, 5612, 5614, 3, 422, 211, 0, 5613, 5612, 1, 0, 0, 0, 5613, 5614, 1, 0, 0, 0, 5614, 5615, 1, 0, 0, 0, 5615, 5617, 3, 818, 409, 0, 5616, 5618, 3, 96, 48, 0, 5617, 5616, 1, 0, 0, 0, 5617, 5618, 1, 0, 0, 0, 5618, 5623, 1, 0, 0, 0, 5619, 5620, 5, 372, 0, 0, 5620, 5621, 5, 45, 0, 0, 5621, 5623, 3, 818, 409, 0, 5622, 5600, 1, 0, 0, 0, 5622, 5601, 1, 0, 0, 0, 5622, 5604, 1, 0, 0, 0, 5622, 5610, 1, 0, 0, 0, 5622, 5619, 1, 0, 0, 0, 5623, 495, 1, 0, 0, 0, 5624, 5625, 5, 138, 0, 0, 5625, 5626, 5, 355, 0, 0, 5626, 5627, 5, 325, 0, 0, 5627, 5628, 5, 185, 0, 0, 5628, 5629, 3, 316, 158, 0, 5629, 5630, 3, 284, 142, 0, 5630, 497, 1, 0, 0, 0, 5631, 5632, 5, 138, 0, 0, 5632, 5633, 5, 355, 0, 0, 5633, 5634, 5, 325, 0, 0, 5634, 5635, 5, 163, 0, 0, 5635, 5636, 3, 316, 158, 0, 5636, 5637, 7, 72, 0, 0, 5637, 5638, 5, 257, 0, 0, 5638, 5639, 5, 62, 0, 0, 5639, 5640, 3, 784, 392, 0, 5640, 5641, 5, 105, 0, 0, 5641, 5642, 3, 314, 157, 0, 5642, 5673, 1, 0, 0, 0, 5643, 5644, 5, 138, 0, 0, 5644, 5645, 5, 355, 0, 0, 5645, 5646, 5, 325, 0, 0, 5646, 5647, 5, 163, 0, 0, 5647, 5648, 3, 316, 158, 0, 5648, 5649, 5, 138, 0, 0, 5649, 5652, 5, 257, 0, 0, 5650, 5651, 5, 62, 0, 0, 5651, 5653, 3, 784, 392, 0, 5652, 5650, 1, 0, 0, 0, 5652, 5653, 1, 0, 0, 0, 5653, 5654, 1, 0, 0, 0, 5654, 5655, 5, 311, 0, 0, 5655, 5656, 3, 316, 158, 0, 5656, 5657, 5, 105, 0, 0, 5657, 5658, 3, 316, 158, 0, 5658, 5673, 1, 0, 0, 0, 5659, 5660, 5, 138, 0, 0, 5660, 5661, 5, 355, 0, 0, 5661, 5662, 5, 325, 0, 0, 5662, 5663, 5, 163, 0, 0, 5663, 5664, 3, 316, 158, 0, 5664, 5665, 5, 191, 0, 0, 5665, 5667, 5, 257, 0, 0, 5666, 5668, 3, 422, 211, 0, 5667, 5666, 1, 0, 0, 0, 5667, 5668, 1, 0, 0, 0, 5668, 5669, 1, 0, 0, 0, 5669, 5670, 5, 62, 0, 0, 5670, 5671, 3, 784, 392, 0, 5671, 5673, 1, 0, 0, 0, 5672, 5631, 1, 0, 0, 0, 5672, 5643, 1, 0, 0, 0, 5672, 5659, 1, 0, 0, 0, 5673, 499, 1, 0, 0, 0, 5674, 5676, 5, 46, 0, 0, 5675, 5677, 5, 53, 0, 0, 5676, 5675, 1, 0, 0, 0, 5676, 5677, 1, 0, 0, 0, 5677, 5678, 1, 0, 0, 0, 5678, 5679, 5, 168, 0, 0, 5679, 5680, 3, 316, 158, 0, 5680, 5681, 5, 62, 0, 0, 5681, 5682, 3, 808, 404, 0, 5682, 5683, 5, 94, 0, 0, 5683, 5684, 3, 808, 404, 0, 5684, 5685, 5, 64, 0, 0, 5685, 5686, 3, 316, 158, 0, 5686, 501, 1, 0, 0, 0, 5687, 5689, 5, 158, 0, 0, 5688, 5690, 3, 514, 257, 0, 5689, 5688, 1, 0, 0, 0, 5689, 5690, 1, 0, 0, 0, 5690, 5695, 1, 0, 0, 0, 5691, 5693, 3, 774, 387, 0, 5692, 5694, 3, 170, 85, 0, 5693, 5692, 1, 0, 0, 0, 5693, 5694, 1, 0, 0, 0, 5694, 5696, 1, 0, 0, 0, 5695, 5691, 1, 0, 0, 0, 5695, 5696, 1, 0, 0, 0, 5696, 5713, 1, 0, 0, 0, 5697, 5698, 5, 158, 0, 0, 5698, 5699, 5, 2, 0, 0, 5699, 5704, 3, 514, 257, 0, 5700, 5701, 5, 6, 0, 0, 5701, 5703, 3, 514, 257, 0, 5702, 5700, 1, 0, 0, 0, 5703, 5706, 1, 0, 0, 0, 5704, 5702, 1, 0, 0, 0, 5704, 5705, 1, 0, 0, 0, 5705, 5707, 1, 0, 0, 0, 5706, 5704, 1, 0, 0, 0, 5707, 5708, 5, 3, 0, 0, 5708, 5710, 3, 774, 387, 0, 5709, 5711, 3, 170, 85, 0, 5710, 5709, 1, 0, 0, 0, 5710, 5711, 1, 0, 0, 0, 5711, 5713, 1, 0, 0, 0, 5712, 5687, 1, 0, 0, 0, 5712, 5697, 1, 0, 0, 0, 5713, 503, 1, 0, 0, 0, 5714, 5730, 5, 370, 0, 0, 5715, 5717, 5, 113, 0, 0, 5716, 5715, 1, 0, 0, 0, 5716, 5717, 1, 0, 0, 0, 5717, 5719, 1, 0, 0, 0, 5718, 5720, 5, 112, 0, 0, 5719, 5718, 1, 0, 0, 0, 5719, 5720, 1, 0, 0, 0, 5720, 5722, 1, 0, 0, 0, 5721, 5723, 3, 514, 257, 0, 5722, 5721, 1, 0, 0, 0, 5722, 5723, 1, 0, 0, 0, 5723, 5725, 1, 0, 0, 0, 5724, 5726, 3, 508, 254, 0, 5725, 5724, 1, 0, 0, 0, 5725, 5726, 1, 0, 0, 0, 5726, 5731, 1, 0, 0, 0, 5727, 5729, 3, 524, 262, 0, 5728, 5727, 1, 0, 0, 0, 5728, 5729, 1, 0, 0, 0, 5729, 5731, 1, 0, 0, 0, 5730, 5716, 1, 0, 0, 0, 5730, 5728, 1, 0, 0, 0, 5731, 5733, 1, 0, 0, 0, 5732, 5734, 3, 518, 259, 0, 5733, 5732, 1, 0, 0, 0, 5733, 5734, 1, 0, 0, 0, 5734, 505, 1, 0, 0, 0, 5735, 5750, 3, 508, 254, 0, 5736, 5738, 3, 514, 257, 0, 5737, 5736, 1, 0, 0, 0, 5737, 5738, 1, 0, 0, 0, 5738, 5751, 1, 0, 0, 0, 5739, 5740, 5, 2, 0, 0, 5740, 5745, 3, 512, 256, 0, 5741, 5742, 5, 6, 0, 0, 5742, 5744, 3, 512, 256, 0, 5743, 5741, 1, 0, 0, 0, 5744, 5747, 1, 0, 0, 0, 5745, 5743, 1, 0, 0, 0, 5745, 5746, 1, 0, 0, 0, 5746, 5748, 1, 0, 0, 0, 5747, 5745, 1, 0, 0, 0, 5748, 5749, 5, 3, 0, 0, 5749, 5751, 1, 0, 0, 0, 5750, 5737, 1, 0, 0, 0, 5750, 5739, 1, 0, 0, 0, 5751, 5753, 1, 0, 0, 0, 5752, 5754, 3, 518, 259, 0, 5753, 5752, 1, 0, 0, 0, 5753, 5754, 1, 0, 0, 0, 5754, 507, 1, 0, 0, 0, 5755, 5756, 7, 73, 0, 0, 5756, 509, 1, 0, 0, 0, 5757, 5760, 3, 822, 411, 0, 5758, 5760, 3, 508, 254, 0, 5759, 5757, 1, 0, 0, 0, 5759, 5758, 1, 0, 0, 0, 5760, 5763, 1, 0, 0, 0, 5761, 5764, 3, 54, 27, 0, 5762, 5764, 3, 202, 101, 0, 5763, 5761, 1, 0, 0, 0, 5763, 5762, 1, 0, 0, 0, 5763, 5764, 1, 0, 0, 0, 5764, 511, 1, 0, 0, 0, 5765, 5767, 7, 74, 0, 0, 5766, 5768, 7, 75, 0, 0, 5767, 5766, 1, 0, 0, 0, 5767, 5768, 1, 0, 0, 0, 5768, 5775, 1, 0, 0, 0, 5769, 5772, 5, 548, 0, 0, 5770, 5773, 3, 202, 101, 0, 5771, 5773, 3, 808, 404, 0, 5772, 5770, 1, 0, 0, 0, 5772, 5771, 1, 0, 0, 0, 5773, 5775, 1, 0, 0, 0, 5774, 5765, 1, 0, 0, 0, 5774, 5769, 1, 0, 0, 0, 5775, 513, 1, 0, 0, 0, 5776, 5778, 5, 128, 0, 0, 5777, 5779, 7, 75, 0, 0, 5778, 5777, 1, 0, 0, 0, 5778, 5779, 1, 0, 0, 0, 5779, 515, 1, 0, 0, 0, 5780, 5782, 3, 774, 387, 0, 5781, 5783, 3, 144, 72, 0, 5782, 5781, 1, 0, 0, 0, 5782, 5783, 1, 0, 0, 0, 5783, 517, 1, 0, 0, 0, 5784, 5789, 3, 516, 258, 0, 5785, 5786, 5, 6, 0, 0, 5786, 5788, 3, 516, 258, 0, 5787, 5785, 1, 0, 0, 0, 5788, 5791, 1, 0, 0, 0, 5789, 5787, 1, 0, 0, 0, 5789, 5790, 1, 0, 0, 0, 5790, 519, 1, 0, 0, 0, 5791, 5789, 1, 0, 0, 0, 5792, 5803, 5, 203, 0, 0, 5793, 5804, 3, 524, 262, 0, 5794, 5796, 5, 128, 0, 0, 5795, 5794, 1, 0, 0, 0, 5795, 5796, 1, 0, 0, 0, 5796, 5804, 1, 0, 0, 0, 5797, 5799, 3, 508, 254, 0, 5798, 5800, 3, 514, 257, 0, 5799, 5798, 1, 0, 0, 0, 5799, 5800, 1, 0, 0, 0, 5800, 5802, 1, 0, 0, 0, 5801, 5797, 1, 0, 0, 0, 5801, 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5793, 1, 0, 0, 0, 5803, 5795, 1, 0, 0, 0, 5803, 5801, 1, 0, 0, 0, 5804, 5805, 1, 0, 0, 0, 5805, 5806, 3, 522, 261, 0, 5806, 521, 1, 0, 0, 0, 5807, 5817, 3, 560, 280, 0, 5808, 5817, 3, 538, 269, 0, 5809, 5817, 3, 552, 276, 0, 5810, 5817, 3, 548, 274, 0, 5811, 5817, 3, 558, 279, 0, 5812, 5817, 3, 186, 93, 0, 5813, 5817, 3, 192, 96, 0, 5814, 5817, 3, 194, 97, 0, 5815, 5817, 3, 532, 266, 0, 5816, 5807, 1, 0, 0, 0, 5816, 5808, 1, 0, 0, 0, 5816, 5809, 1, 0, 0, 0, 5816, 5810, 1, 0, 0, 0, 5816, 5811, 1, 0, 0, 0, 5816, 5812, 1, 0, 0, 0, 5816, 5813, 1, 0, 0, 0, 5816, 5814, 1, 0, 0, 0, 5816, 5815, 1, 0, 0, 0, 5817, 523, 1, 0, 0, 0, 5818, 5819, 5, 2, 0, 0, 5819, 5824, 3, 510, 255, 0, 5820, 5821, 5, 6, 0, 0, 5821, 5823, 3, 510, 255, 0, 5822, 5820, 1, 0, 0, 0, 5823, 5826, 1, 0, 0, 0, 5824, 5822, 1, 0, 0, 0, 5824, 5825, 1, 0, 0, 0, 5825, 5827, 1, 0, 0, 0, 5826, 5824, 1, 0, 0, 0, 5827, 5828, 5, 3, 0, 0, 5828, 525, 1, 0, 0, 0, 5829, 5830, 5, 290, 0, 0, 5830, 5832, 3, 818, 409, 0, 5831, 5833, 3, 528, 264, 0, 5832, 5831, 1, 0, 0, 0, 5832, 5833, 1, 0, 0, 0, 5833, 5834, 1, 0, 0, 0, 5834, 5835, 5, 36, 0, 0, 5835, 5836, 3, 530, 265, 0, 5836, 527, 1, 0, 0, 0, 5837, 5838, 5, 2, 0, 0, 5838, 5843, 3, 652, 326, 0, 5839, 5840, 5, 6, 0, 0, 5840, 5842, 3, 652, 326, 0, 5841, 5839, 1, 0, 0, 0, 5842, 5845, 1, 0, 0, 0, 5843, 5841, 1, 0, 0, 0, 5843, 5844, 1, 0, 0, 0, 5844, 5846, 1, 0, 0, 0, 5845, 5843, 1, 0, 0, 0, 5846, 5847, 5, 3, 0, 0, 5847, 529, 1, 0, 0, 0, 5848, 5853, 3, 560, 280, 0, 5849, 5853, 3, 538, 269, 0, 5850, 5853, 3, 552, 276, 0, 5851, 5853, 3, 548, 274, 0, 5852, 5848, 1, 0, 0, 0, 5852, 5849, 1, 0, 0, 0, 5852, 5850, 1, 0, 0, 0, 5852, 5851, 1, 0, 0, 0, 5853, 531, 1, 0, 0, 0, 5854, 5855, 5, 202, 0, 0, 5855, 5857, 3, 818, 409, 0, 5856, 5858, 3, 534, 267, 0, 5857, 5856, 1, 0, 0, 0, 5857, 5858, 1, 0, 0, 0, 5858, 5878, 1, 0, 0, 0, 5859, 5861, 5, 46, 0, 0, 5860, 5862, 3, 122, 61, 0, 5861, 5860, 1, 0, 0, 0, 5861, 5862, 1, 0, 0, 0, 5862, 5863, 1, 0, 0, 0, 5863, 5865, 5, 92, 0, 0, 5864, 5866, 3, 294, 147, 0, 5865, 5864, 1, 0, 0, 0, 5865, 5866, 1, 0, 0, 0, 5866, 5867, 1, 0, 0, 0, 5867, 5868, 3, 188, 94, 0, 5868, 5869, 5, 36, 0, 0, 5869, 5870, 5, 202, 0, 0, 5870, 5872, 3, 818, 409, 0, 5871, 5873, 3, 534, 267, 0, 5872, 5871, 1, 0, 0, 0, 5872, 5873, 1, 0, 0, 0, 5873, 5875, 1, 0, 0, 0, 5874, 5876, 3, 190, 95, 0, 5875, 5874, 1, 0, 0, 0, 5875, 5876, 1, 0, 0, 0, 5876, 5878, 1, 0, 0, 0, 5877, 5854, 1, 0, 0, 0, 5877, 5859, 1, 0, 0, 0, 5878, 533, 1, 0, 0, 0, 5879, 5880, 5, 2, 0, 0, 5880, 5881, 3, 730, 365, 0, 5881, 5882, 5, 3, 0, 0, 5882, 535, 1, 0, 0, 0, 5883, 5885, 5, 177, 0, 0, 5884, 5886, 5, 290, 0, 0, 5885, 5884, 1, 0, 0, 0, 5885, 5886, 1, 0, 0, 0, 5886, 5889, 1, 0, 0, 0, 5887, 5890, 3, 818, 409, 0, 5888, 5890, 5, 30, 0, 0, 5889, 5887, 1, 0, 0, 0, 5889, 5888, 1, 0, 0, 0, 5890, 537, 1, 0, 0, 0, 5891, 5893, 3, 572, 286, 0, 5892, 5891, 1, 0, 0, 0, 5892, 5893, 1, 0, 0, 0, 5893, 5894, 1, 0, 0, 0, 5894, 5895, 5, 241, 0, 0, 5895, 5896, 5, 71, 0, 0, 5896, 5899, 3, 774, 387, 0, 5897, 5898, 5, 36, 0, 0, 5898, 5900, 3, 818, 409, 0, 5899, 5897, 1, 0, 0, 0, 5899, 5900, 1, 0, 0, 0, 5900, 5901, 1, 0, 0, 0, 5901, 5923, 3, 540, 270, 0, 5902, 5903, 5, 80, 0, 0, 5903, 5911, 5, 464, 0, 0, 5904, 5906, 3, 360, 180, 0, 5905, 5907, 3, 638, 319, 0, 5906, 5905, 1, 0, 0, 0, 5906, 5907, 1, 0, 0, 0, 5907, 5912, 1, 0, 0, 0, 5908, 5909, 5, 80, 0, 0, 5909, 5910, 5, 45, 0, 0, 5910, 5912, 3, 818, 409, 0, 5911, 5904, 1, 0, 0, 0, 5911, 5908, 1, 0, 0, 0, 5911, 5912, 1, 0, 0, 0, 5912, 5913, 1, 0, 0, 0, 5913, 5921, 5, 57, 0, 0, 5914, 5915, 5, 369, 0, 0, 5915, 5916, 5, 333, 0, 0, 5916, 5918, 3, 554, 277, 0, 5917, 5919, 3, 638, 319, 0, 5918, 5917, 1, 0, 0, 0, 5918, 5919, 1, 0, 0, 0, 5919, 5922, 1, 0, 0, 0, 5920, 5922, 5, 270, 0, 0, 5921, 5914, 1, 0, 0, 0, 5921, 5920, 1, 0, 0, 0, 5922, 5924, 1, 0, 0, 0, 5923, 5902, 1, 0, 0, 0, 5923, 5924, 1, 0, 0, 0, 5924, 5926, 1, 0, 0, 0, 5925, 5927, 3, 546, 273, 0, 5926, 5925, 1, 0, 0, 0, 5926, 5927, 1, 0, 0, 0, 5927, 539, 1, 0, 0, 0, 5928, 5929, 5, 2, 0, 0, 5929, 5930, 3, 542, 271, 0, 5930, 5931, 5, 3, 0, 0, 5931, 5933, 1, 0, 0, 0, 5932, 5928, 1, 0, 0, 0, 5932, 5933, 1, 0, 0, 0, 5933, 5937, 1, 0, 0, 0, 5934, 5935, 5, 463, 0, 0, 5935, 5936, 7, 76, 0, 0, 5936, 5938, 5, 450, 0, 0, 5937, 5934, 1, 0, 0, 0, 5937, 5938, 1, 0, 0, 0, 5938, 5941, 1, 0, 0, 0, 5939, 5942, 3, 910, 455, 0, 5940, 5942, 3, 560, 280, 0, 5941, 5939, 1, 0, 0, 0, 5941, 5940, 1, 0, 0, 0, 5942, 541, 1, 0, 0, 0, 5943, 5948, 3, 544, 272, 0, 5944, 5945, 5, 6, 0, 0, 5945, 5947, 3, 544, 272, 0, 5946, 5944, 1, 0, 0, 0, 5947, 5950, 1, 0, 0, 0, 5948, 5946, 1, 0, 0, 0, 5948, 5949, 1, 0, 0, 0, 5949, 543, 1, 0, 0, 0, 5950, 5948, 1, 0, 0, 0, 5951, 5952, 3, 800, 400, 0, 5952, 5953, 3, 754, 377, 0, 5953, 545, 1, 0, 0, 0, 5954, 5955, 5, 87, 0, 0, 5955, 5956, 3, 756, 378, 0, 5956, 547, 1, 0, 0, 0, 5957, 5959, 3, 572, 286, 0, 5958, 5957, 1, 0, 0, 0, 5958, 5959, 1, 0, 0, 0, 5959, 5960, 1, 0, 0, 0, 5960, 5961, 5, 182, 0, 0, 5961, 5962, 5, 64, 0, 0, 5962, 5965, 3, 630, 315, 0, 5963, 5964, 5, 100, 0, 0, 5964, 5966, 3, 612, 306, 0, 5965, 5963, 1, 0, 0, 0, 5965, 5966, 1, 0, 0, 0, 5966, 5968, 1, 0, 0, 0, 5967, 5969, 3, 640, 320, 0, 5968, 5967, 1, 0, 0, 0, 5968, 5969, 1, 0, 0, 0, 5969, 5971, 1, 0, 0, 0, 5970, 5972, 3, 546, 273, 0, 5971, 5970, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 549, 1, 0, 0, 0, 5973, 5975, 5, 256, 0, 0, 5974, 5976, 5, 92, 0, 0, 5975, 5974, 1, 0, 0, 0, 5975, 5976, 1, 0, 0, 0, 5976, 5977, 1, 0, 0, 0, 5977, 5992, 3, 628, 314, 0, 5978, 5989, 5, 68, 0, 0, 5979, 5980, 7, 77, 0, 0, 5980, 5990, 7, 78, 0, 0, 5981, 5986, 5, 334, 0, 0, 5982, 5983, 5, 369, 0, 0, 5983, 5987, 5, 201, 0, 0, 5984, 5985, 5, 414, 0, 0, 5985, 5987, 5, 201, 0, 0, 5986, 5982, 1, 0, 0, 0, 5986, 5984, 1, 0, 0, 0, 5986, 5987, 1, 0, 0, 0, 5987, 5990, 1, 0, 0, 0, 5988, 5990, 5, 201, 0, 0, 5989, 5979, 1, 0, 0, 0, 5989, 5981, 1, 0, 0, 0, 5989, 5988, 1, 0, 0, 0, 5990, 5991, 1, 0, 0, 0, 5991, 5993, 5, 263, 0, 0, 5992, 5978, 1, 0, 0, 0, 5992, 5993, 1, 0, 0, 0, 5993, 5995, 1, 0, 0, 0, 5994, 5996, 5, 272, 0, 0, 5995, 5994, 1, 0, 0, 0, 5995, 5996, 1, 0, 0, 0, 5996, 551, 1, 0, 0, 0, 5997, 5999, 3, 572, 286, 0, 5998, 5997, 1, 0, 0, 0, 5998, 5999, 1, 0, 0, 0, 5999, 6000, 1, 0, 0, 0, 6000, 6001, 5, 369, 0, 0, 6001, 6002, 3, 630, 315, 0, 6002, 6003, 5, 333, 0, 0, 6003, 6005, 3, 554, 277, 0, 6004, 6006, 3, 610, 305, 0, 6005, 6004, 1, 0, 0, 0, 6005, 6006, 1, 0, 0, 0, 6006, 6008, 1, 0, 0, 0, 6007, 6009, 3, 640, 320, 0, 6008, 6007, 1, 0, 0, 0, 6008, 6009, 1, 0, 0, 0, 6009, 6011, 1, 0, 0, 0, 6010, 6012, 3, 546, 273, 0, 6011, 6010, 1, 0, 0, 0, 6011, 6012, 1, 0, 0, 0, 6012, 553, 1, 0, 0, 0, 6013, 6018, 3, 556, 278, 0, 6014, 6015, 5, 6, 0, 0, 6015, 6017, 3, 556, 278, 0, 6016, 6014, 1, 0, 0, 0, 6017, 6020, 1, 0, 0, 0, 6018, 6016, 1, 0, 0, 0, 6018, 6019, 1, 0, 0, 0, 6019, 555, 1, 0, 0, 0, 6020, 6018, 1, 0, 0, 0, 6021, 6022, 3, 544, 272, 0, 6022, 6023, 5, 10, 0, 0, 6023, 6024, 3, 674, 337, 0, 6024, 6040, 1, 0, 0, 0, 6025, 6026, 5, 2, 0, 0, 6026, 6027, 3, 542, 271, 0, 6027, 6028, 5, 3, 0, 0, 6028, 6037, 5, 10, 0, 0, 6029, 6031, 5, 414, 0, 0, 6030, 6029, 1, 0, 0, 0, 6030, 6031, 1, 0, 0, 0, 6031, 6032, 1, 0, 0, 0, 6032, 6038, 3, 674, 337, 0, 6033, 6034, 5, 2, 0, 0, 6034, 6035, 3, 566, 283, 0, 6035, 6036, 5, 3, 0, 0, 6036, 6038, 1, 0, 0, 0, 6037, 6030, 1, 0, 0, 0, 6037, 6033, 1, 0, 0, 0, 6038, 6040, 1, 0, 0, 0, 6039, 6021, 1, 0, 0, 0, 6039, 6025, 1, 0, 0, 0, 6040, 557, 1, 0, 0, 0, 6041, 6042, 5, 178, 0, 0, 6042, 6051, 3, 818, 409, 0, 6043, 6045, 5, 269, 0, 0, 6044, 6043, 1, 0, 0, 0, 6044, 6045, 1, 0, 0, 0, 6045, 6046, 1, 0, 0, 0, 6046, 6050, 5, 324, 0, 0, 6047, 6050, 5, 107, 0, 0, 6048, 6050, 5, 240, 0, 0, 6049, 6044, 1, 0, 0, 0, 6049, 6047, 1, 0, 0, 0, 6049, 6048, 1, 0, 0, 0, 6050, 6053, 1, 0, 0, 0, 6051, 6049, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6054, 1, 0, 0, 0, 6053, 6051, 1, 0, 0, 0, 6054, 6057, 5, 172, 0, 0, 6055, 6056, 7, 26, 0, 0, 6056, 6058, 5, 217, 0, 0, 6057, 6055, 1, 0, 0, 0, 6057, 6058, 1, 0, 0, 0, 6058, 6059, 1, 0, 0, 0, 6059, 6060, 5, 62, 0, 0, 6060, 6061, 3, 560, 280, 0, 6061, 559, 1, 0, 0, 0, 6062, 6065, 3, 564, 282, 0, 6063, 6065, 3, 562, 281, 0, 6064, 6062, 1, 0, 0, 0, 6064, 6063, 1, 0, 0, 0, 6065, 561, 1, 0, 0, 0, 6066, 6069, 5, 2, 0, 0, 6067, 6070, 3, 564, 282, 0, 6068, 6070, 3, 562, 281, 0, 6069, 6067, 1, 0, 0, 0, 6069, 6068, 1, 0, 0, 0, 6070, 6071, 1, 0, 0, 0, 6071, 6072, 5, 3, 0, 0, 6072, 563, 1, 0, 0, 0, 6073, 6075, 3, 572, 286, 0, 6074, 6073, 1, 0, 0, 0, 6074, 6075, 1, 0, 0, 0, 6075, 6076, 1, 0, 0, 0, 6076, 6078, 3, 566, 283, 0, 6077, 6079, 3, 586, 293, 0, 6078, 6077, 1, 0, 0, 0, 6078, 6079, 1, 0, 0, 0, 6079, 6088, 1, 0, 0, 0, 6080, 6082, 3, 606, 303, 0, 6081, 6083, 3, 590, 295, 0, 6082, 6081, 1, 0, 0, 0, 6082, 6083, 1, 0, 0, 0, 6083, 6089, 1, 0, 0, 0, 6084, 6086, 3, 590, 295, 0, 6085, 6087, 3, 606, 303, 0, 6086, 6085, 1, 0, 0, 0, 6086, 6087, 1, 0, 0, 0, 6087, 6089, 1, 0, 0, 0, 6088, 6080, 1, 0, 0, 0, 6088, 6084, 1, 0, 0, 0, 6088, 6089, 1, 0, 0, 0, 6089, 565, 1, 0, 0, 0, 6090, 6093, 3, 568, 284, 0, 6091, 6093, 3, 562, 281, 0, 6092, 6090, 1, 0, 0, 0, 6092, 6091, 1, 0, 0, 0, 6093, 567, 1, 0, 0, 0, 6094, 6104, 5, 88, 0, 0, 6095, 6097, 5, 30, 0, 0, 6096, 6095, 1, 0, 0, 0, 6096, 6097, 1, 0, 0, 0, 6097, 6099, 1, 0, 0, 0, 6098, 6100, 3, 580, 290, 0, 6099, 6098, 1, 0, 0, 0, 6099, 6100, 1, 0, 0, 0, 6100, 6105, 1, 0, 0, 0, 6101, 6103, 3, 584, 292, 0, 6102, 6101, 1, 0, 0, 0, 6102, 6103, 1, 0, 0, 0, 6103, 6105, 1, 0, 0, 0, 6104, 6096, 1, 0, 0, 0, 6104, 6102, 1, 0, 0, 0, 6105, 6106, 1, 0, 0, 0, 6106, 6117, 3, 930, 465, 0, 6107, 6117, 3, 608, 304, 0, 6108, 6109, 5, 92, 0, 0, 6109, 6117, 3, 624, 312, 0, 6110, 6111, 3, 562, 281, 0, 6111, 6114, 3, 570, 285, 0, 6112, 6115, 3, 568, 284, 0, 6113, 6115, 3, 562, 281, 0, 6114, 6112, 1, 0, 0, 0, 6114, 6113, 1, 0, 0, 0, 6115, 6117, 1, 0, 0, 0, 6116, 6094, 1, 0, 0, 0, 6116, 6107, 1, 0, 0, 0, 6116, 6108, 1, 0, 0, 0, 6116, 6110, 1, 0, 0, 0, 6117, 6125, 1, 0, 0, 0, 6118, 6121, 3, 570, 285, 0, 6119, 6122, 3, 568, 284, 0, 6120, 6122, 3, 562, 281, 0, 6121, 6119, 1, 0, 0, 0, 6121, 6120, 1, 0, 0, 0, 6122, 6124, 1, 0, 0, 0, 6123, 6118, 1, 0, 0, 0, 6124, 6127, 1, 0, 0, 0, 6125, 6123, 1, 0, 0, 0, 6125, 6126, 1, 0, 0, 0, 6126, 569, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6128, 6130, 7, 79, 0, 0, 6129, 6131, 7, 80, 0, 0, 6130, 6129, 1, 0, 0, 0, 6130, 6131, 1, 0, 0, 0, 6131, 571, 1, 0, 0, 0, 6132, 6134, 5, 105, 0, 0, 6133, 6135, 5, 303, 0, 0, 6134, 6133, 1, 0, 0, 0, 6134, 6135, 1, 0, 0, 0, 6135, 6136, 1, 0, 0, 0, 6136, 6141, 3, 574, 287, 0, 6137, 6138, 5, 6, 0, 0, 6138, 6140, 3, 574, 287, 0, 6139, 6137, 1, 0, 0, 0, 6140, 6143, 1, 0, 0, 0, 6141, 6139, 1, 0, 0, 0, 6141, 6142, 1, 0, 0, 0, 6142, 573, 1, 0, 0, 0, 6143, 6141, 1, 0, 0, 0, 6144, 6146, 3, 818, 409, 0, 6145, 6147, 3, 144, 72, 0, 6146, 6145, 1, 0, 0, 0, 6146, 6147, 1, 0, 0, 0, 6147, 6148, 1, 0, 0, 0, 6148, 6153, 5, 36, 0, 0, 6149, 6151, 5, 77, 0, 0, 6150, 6149, 1, 0, 0, 0, 6150, 6151, 1, 0, 0, 0, 6151, 6152, 1, 0, 0, 0, 6152, 6154, 5, 259, 0, 0, 6153, 6150, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6155, 1, 0, 0, 0, 6155, 6156, 5, 2, 0, 0, 6156, 6157, 3, 530, 265, 0, 6157, 6159, 5, 3, 0, 0, 6158, 6160, 3, 576, 288, 0, 6159, 6158, 1, 0, 0, 0, 6159, 6160, 1, 0, 0, 0, 6160, 6162, 1, 0, 0, 0, 6161, 6163, 3, 578, 289, 0, 6162, 6161, 1, 0, 0, 0, 6162, 6163, 1, 0, 0, 0, 6163, 575, 1, 0, 0, 0, 6164, 6165, 5, 325, 0, 0, 6165, 6166, 7, 81, 0, 0, 6166, 6167, 5, 207, 0, 0, 6167, 6168, 5, 147, 0, 0, 6168, 6169, 3, 148, 74, 0, 6169, 6170, 5, 333, 0, 0, 6170, 6171, 3, 800, 400, 0, 6171, 577, 1, 0, 0, 0, 6172, 6173, 5, 173, 0, 0, 6173, 6174, 3, 148, 74, 0, 6174, 6175, 5, 333, 0, 0, 6175, 6181, 3, 800, 400, 0, 6176, 6177, 5, 94, 0, 0, 6177, 6178, 3, 818, 409, 0, 6178, 6179, 5, 53, 0, 0, 6179, 6180, 3, 818, 409, 0, 6180, 6182, 1, 0, 0, 0, 6181, 6176, 1, 0, 0, 0, 6181, 6182, 1, 0, 0, 0, 6182, 6183, 1, 0, 0, 0, 6183, 6184, 5, 100, 0, 0, 6184, 6185, 3, 800, 400, 0, 6185, 579, 1, 0, 0, 0, 6186, 6192, 5, 71, 0, 0, 6187, 6189, 5, 346, 0, 0, 6188, 6187, 1, 0, 0, 0, 6188, 6189, 1, 0, 0, 0, 6189, 6190, 1, 0, 0, 0, 6190, 6193, 3, 582, 291, 0, 6191, 6193, 3, 730, 365, 0, 6192, 6188, 1, 0, 0, 0, 6192, 6191, 1, 0, 0, 0, 6193, 581, 1, 0, 0, 0, 6194, 6196, 7, 20, 0, 0, 6195, 6194, 1, 0, 0, 0, 6195, 6196, 1, 0, 0, 0, 6196, 6197, 1, 0, 0, 0, 6197, 6199, 7, 21, 0, 0, 6198, 6200, 5, 92, 0, 0, 6199, 6198, 1, 0, 0, 0, 6199, 6200, 1, 0, 0, 0, 6200, 6201, 1, 0, 0, 0, 6201, 6210, 3, 772, 386, 0, 6202, 6204, 5, 367, 0, 0, 6203, 6202, 1, 0, 0, 0, 6203, 6204, 1, 0, 0, 0, 6204, 6206, 1, 0, 0, 0, 6205, 6207, 5, 92, 0, 0, 6206, 6205, 1, 0, 0, 0, 6206, 6207, 1, 0, 0, 0, 6207, 6208, 1, 0, 0, 0, 6208, 6210, 3, 772, 386, 0, 6209, 6195, 1, 0, 0, 0, 6209, 6203, 1, 0, 0, 0, 6210, 583, 1, 0, 0, 0, 6211, 6214, 5, 56, 0, 0, 6212, 6213, 5, 80, 0, 0, 6213, 6215, 3, 534, 267, 0, 6214, 6212, 1, 0, 0, 0, 6214, 6215, 1, 0, 0, 0, 6215, 585, 1, 0, 0, 0, 6216, 6217, 5, 83, 0, 0, 6217, 6218, 5, 147, 0, 0, 6218, 6223, 3, 588, 294, 0, 6219, 6220, 5, 6, 0, 0, 6220, 6222, 3, 588, 294, 0, 6221, 6219, 1, 0, 0, 0, 6222, 6225, 1, 0, 0, 0, 6223, 6221, 1, 0, 0, 0, 6223, 6224, 1, 0, 0, 0, 6224, 587, 1, 0, 0, 0, 6225, 6223, 1, 0, 0, 0, 6226, 6230, 3, 734, 367, 0, 6227, 6228, 5, 100, 0, 0, 6228, 6231, 3, 726, 363, 0, 6229, 6231, 7, 55, 0, 0, 6230, 6227, 1, 0, 0, 0, 6230, 6229, 1, 0, 0, 0, 6230, 6231, 1, 0, 0, 0, 6231, 6234, 1, 0, 0, 0, 6232, 6233, 5, 273, 0, 0, 6233, 6235, 7, 56, 0, 0, 6234, 6232, 1, 0, 0, 0, 6234, 6235, 1, 0, 0, 0, 6235, 589, 1, 0, 0, 0, 6236, 6238, 3, 596, 298, 0, 6237, 6239, 3, 594, 297, 0, 6238, 6237, 1, 0, 0, 0, 6238, 6239, 1, 0, 0, 0, 6239, 6248, 1, 0, 0, 0, 6240, 6243, 3, 592, 296, 0, 6241, 6243, 3, 594, 297, 0, 6242, 6240, 1, 0, 0, 0, 6242, 6241, 1, 0, 0, 0, 6243, 6245, 1, 0, 0, 0, 6244, 6246, 3, 596, 298, 0, 6245, 6244, 1, 0, 0, 0, 6245, 6246, 1, 0, 0, 0, 6246, 6248, 1, 0, 0, 0, 6247, 6236, 1, 0, 0, 0, 6247, 6242, 1, 0, 0, 0, 6248, 591, 1, 0, 0, 0, 6249, 6252, 5, 74, 0, 0, 6250, 6253, 3, 674, 337, 0, 6251, 6253, 5, 30, 0, 0, 6252, 6250, 1, 0, 0, 0, 6252, 6251, 1, 0, 0, 0, 6253, 6256, 1, 0, 0, 0, 6254, 6255, 5, 6, 0, 0, 6255, 6257, 3, 674, 337, 0, 6256, 6254, 1, 0, 0, 0, 6256, 6257, 1, 0, 0, 0, 6257, 593, 1, 0, 0, 0, 6258, 6259, 5, 61, 0, 0, 6259, 6261, 7, 82, 0, 0, 6260, 6262, 3, 598, 299, 0, 6261, 6260, 1, 0, 0, 0, 6261, 6262, 1, 0, 0, 0, 6262, 6263, 1, 0, 0, 0, 6263, 6267, 7, 83, 0, 0, 6264, 6268, 5, 81, 0, 0, 6265, 6266, 5, 105, 0, 0, 6266, 6268, 5, 467, 0, 0, 6267, 6264, 1, 0, 0, 0, 6267, 6265, 1, 0, 0, 0, 6268, 595, 1, 0, 0, 0, 6269, 6274, 5, 79, 0, 0, 6270, 6271, 3, 598, 299, 0, 6271, 6272, 7, 83, 0, 0, 6272, 6275, 1, 0, 0, 0, 6273, 6275, 3, 674, 337, 0, 6274, 6270, 1, 0, 0, 0, 6274, 6273, 1, 0, 0, 0, 6275, 597, 1, 0, 0, 0, 6276, 6277, 7, 29, 0, 0, 6277, 6280, 7, 84, 0, 0, 6278, 6280, 3, 682, 341, 0, 6279, 6276, 1, 0, 0, 0, 6279, 6278, 1, 0, 0, 0, 6280, 599, 1, 0, 0, 0, 6281, 6282, 5, 66, 0, 0, 6282, 6284, 5, 147, 0, 0, 6283, 6285, 7, 80, 0, 0, 6284, 6283, 1, 0, 0, 0, 6284, 6285, 1, 0, 0, 0, 6285, 6286, 1, 0, 0, 0, 6286, 6287, 3, 602, 301, 0, 6287, 601, 1, 0, 0, 0, 6288, 6293, 3, 604, 302, 0, 6289, 6290, 5, 6, 0, 0, 6290, 6292, 3, 604, 302, 0, 6291, 6289, 1, 0, 0, 0, 6292, 6295, 1, 0, 0, 0, 6293, 6291, 1, 0, 0, 0, 6293, 6294, 1, 0, 0, 0, 6294, 603, 1, 0, 0, 0, 6295, 6293, 1, 0, 0, 0, 6296, 6320, 3, 734, 367, 0, 6297, 6298, 5, 2, 0, 0, 6298, 6320, 5, 3, 0, 0, 6299, 6301, 7, 85, 0, 0, 6300, 6299, 1, 0, 0, 0, 6300, 6301, 1, 0, 0, 0, 6301, 6302, 1, 0, 0, 0, 6302, 6303, 5, 2, 0, 0, 6303, 6308, 3, 734, 367, 0, 6304, 6305, 5, 6, 0, 0, 6305, 6307, 3, 734, 367, 0, 6306, 6304, 1, 0, 0, 0, 6307, 6310, 1, 0, 0, 0, 6308, 6306, 1, 0, 0, 0, 6308, 6309, 1, 0, 0, 0, 6309, 6311, 1, 0, 0, 0, 6310, 6308, 1, 0, 0, 0, 6311, 6312, 5, 3, 0, 0, 6312, 6320, 1, 0, 0, 0, 6313, 6314, 5, 470, 0, 0, 6314, 6315, 5, 471, 0, 0, 6315, 6316, 5, 2, 0, 0, 6316, 6317, 3, 602, 301, 0, 6317, 6318, 5, 3, 0, 0, 6318, 6320, 1, 0, 0, 0, 6319, 6296, 1, 0, 0, 0, 6319, 6297, 1, 0, 0, 0, 6319, 6300, 1, 0, 0, 0, 6319, 6313, 1, 0, 0, 0, 6320, 605, 1, 0, 0, 0, 6321, 6331, 5, 62, 0, 0, 6322, 6323, 5, 269, 0, 0, 6323, 6325, 5, 245, 0, 0, 6324, 6322, 1, 0, 0, 0, 6324, 6325, 1, 0, 0, 0, 6325, 6326, 1, 0, 0, 0, 6326, 6332, 5, 369, 0, 0, 6327, 6329, 5, 245, 0, 0, 6328, 6327, 1, 0, 0, 0, 6328, 6329, 1, 0, 0, 0, 6329, 6330, 1, 0, 0, 0, 6330, 6332, 5, 334, 0, 0, 6331, 6324, 1, 0, 0, 0, 6331, 6328, 1, 0, 0, 0, 6332, 6335, 1, 0, 0, 0, 6333, 6334, 5, 275, 0, 0, 6334, 6336, 3, 760, 380, 0, 6335, 6333, 1, 0, 0, 0, 6335, 6336, 1, 0, 0, 0, 6336, 6340, 1, 0, 0, 0, 6337, 6341, 5, 272, 0, 0, 6338, 6339, 5, 465, 0, 0, 6339, 6341, 5, 466, 0, 0, 6340, 6337, 1, 0, 0, 0, 6340, 6338, 1, 0, 0, 0, 6340, 6341, 1, 0, 0, 0, 6341, 6343, 1, 0, 0, 0, 6342, 6321, 1, 0, 0, 0, 6343, 6344, 1, 0, 0, 0, 6344, 6342, 1, 0, 0, 0, 6344, 6345, 1, 0, 0, 0, 6345, 6350, 1, 0, 0, 0, 6346, 6347, 5, 62, 0, 0, 6347, 6348, 5, 300, 0, 0, 6348, 6350, 5, 81, 0, 0, 6349, 6342, 1, 0, 0, 0, 6349, 6346, 1, 0, 0, 0, 6350, 607, 1, 0, 0, 0, 6351, 6352, 5, 422, 0, 0, 6352, 6357, 3, 534, 267, 0, 6353, 6354, 5, 6, 0, 0, 6354, 6356, 3, 534, 267, 0, 6355, 6353, 1, 0, 0, 0, 6356, 6359, 1, 0, 0, 0, 6357, 6355, 1, 0, 0, 0, 6357, 6358, 1, 0, 0, 0, 6358, 609, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6360, 6361, 5, 64, 0, 0, 6361, 6362, 3, 612, 306, 0, 6362, 611, 1, 0, 0, 0, 6363, 6368, 3, 614, 307, 0, 6364, 6365, 5, 6, 0, 0, 6365, 6367, 3, 614, 307, 0, 6366, 6364, 1, 0, 0, 0, 6367, 6370, 1, 0, 0, 0, 6368, 6366, 1, 0, 0, 0, 6368, 6369, 1, 0, 0, 0, 6369, 613, 1, 0, 0, 0, 6370, 6368, 1, 0, 0, 0, 6371, 6386, 3, 624, 312, 0, 6372, 6374, 5, 81, 0, 0, 6373, 6372, 1, 0, 0, 0, 6373, 6374, 1, 0, 0, 0, 6374, 6375, 1, 0, 0, 0, 6375, 6377, 3, 778, 389, 0, 6376, 6378, 5, 9, 0, 0, 6377, 6376, 1, 0, 0, 0, 6377, 6378, 1, 0, 0, 0, 6378, 6380, 1, 0, 0, 0, 6379, 6381, 3, 148, 74, 0, 6380, 6379, 1, 0, 0, 0, 6380, 6381, 1, 0, 0, 0, 6381, 6383, 1, 0, 0, 0, 6382, 6384, 3, 638, 319, 0, 6383, 6382, 1, 0, 0, 0, 6383, 6384, 1, 0, 0, 0, 6384, 6386, 1, 0, 0, 0, 6385, 6371, 1, 0, 0, 0, 6385, 6373, 1, 0, 0, 0, 6386, 6388, 1, 0, 0, 0, 6387, 6389, 3, 616, 308, 0, 6388, 6387, 1, 0, 0, 0, 6388, 6389, 1, 0, 0, 0, 6389, 6391, 1, 0, 0, 0, 6390, 6392, 3, 632, 316, 0, 6391, 6390, 1, 0, 0, 0, 6391, 6392, 1, 0, 0, 0, 6392, 6435, 1, 0, 0, 0, 6393, 6395, 5, 72, 0, 0, 6394, 6393, 1, 0, 0, 0, 6394, 6395, 1, 0, 0, 0, 6395, 6408, 1, 0, 0, 0, 6396, 6398, 3, 646, 323, 0, 6397, 6399, 3, 616, 308, 0, 6398, 6397, 1, 0, 0, 0, 6398, 6399, 1, 0, 0, 0, 6399, 6409, 1, 0, 0, 0, 6400, 6402, 3, 634, 317, 0, 6401, 6403, 3, 618, 309, 0, 6402, 6401, 1, 0, 0, 0, 6402, 6403, 1, 0, 0, 0, 6403, 6409, 1, 0, 0, 0, 6404, 6406, 3, 562, 281, 0, 6405, 6407, 3, 616, 308, 0, 6406, 6405, 1, 0, 0, 0, 6406, 6407, 1, 0, 0, 0, 6407, 6409, 1, 0, 0, 0, 6408, 6396, 1, 0, 0, 0, 6408, 6400, 1, 0, 0, 0, 6408, 6404, 1, 0, 0, 0, 6409, 6435, 1, 0, 0, 0, 6410, 6411, 5, 2, 0, 0, 6411, 6428, 3, 614, 307, 0, 6412, 6413, 5, 110, 0, 0, 6413, 6414, 5, 118, 0, 0, 6414, 6429, 3, 614, 307, 0, 6415, 6417, 5, 121, 0, 0, 6416, 6418, 3, 620, 310, 0, 6417, 6416, 1, 0, 0, 0, 6417, 6418, 1, 0, 0, 0, 6418, 6419, 1, 0, 0, 0, 6419, 6420, 5, 118, 0, 0, 6420, 6429, 3, 614, 307, 0, 6421, 6423, 3, 620, 310, 0, 6422, 6421, 1, 0, 0, 0, 6422, 6423, 1, 0, 0, 0, 6423, 6424, 1, 0, 0, 0, 6424, 6425, 5, 118, 0, 0, 6425, 6426, 3, 614, 307, 0, 6426, 6427, 3, 622, 311, 0, 6427, 6429, 1, 0, 0, 0, 6428, 6412, 1, 0, 0, 0, 6428, 6415, 1, 0, 0, 0, 6428, 6422, 1, 0, 0, 0, 6428, 6429, 1, 0, 0, 0, 6429, 6430, 1, 0, 0, 0, 6430, 6432, 5, 3, 0, 0, 6431, 6433, 3, 616, 308, 0, 6432, 6431, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6435, 1, 0, 0, 0, 6434, 6385, 1, 0, 0, 0, 6434, 6394, 1, 0, 0, 0, 6434, 6410, 1, 0, 0, 0, 6435, 6454, 1, 0, 0, 0, 6436, 6437, 5, 110, 0, 0, 6437, 6438, 5, 118, 0, 0, 6438, 6453, 3, 614, 307, 0, 6439, 6441, 5, 121, 0, 0, 6440, 6442, 3, 620, 310, 0, 6441, 6440, 1, 0, 0, 0, 6441, 6442, 1, 0, 0, 0, 6442, 6443, 1, 0, 0, 0, 6443, 6444, 5, 118, 0, 0, 6444, 6453, 3, 614, 307, 0, 6445, 6447, 3, 620, 310, 0, 6446, 6445, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 6448, 1, 0, 0, 0, 6448, 6449, 5, 118, 0, 0, 6449, 6450, 3, 614, 307, 0, 6450, 6451, 3, 622, 311, 0, 6451, 6453, 1, 0, 0, 0, 6452, 6436, 1, 0, 0, 0, 6452, 6439, 1, 0, 0, 0, 6452, 6446, 1, 0, 0, 0, 6453, 6456, 1, 0, 0, 0, 6454, 6452, 1, 0, 0, 0, 6454, 6455, 1, 0, 0, 0, 6455, 615, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6457, 6459, 5, 36, 0, 0, 6458, 6457, 1, 0, 0, 0, 6458, 6459, 1, 0, 0, 0, 6459, 6460, 1, 0, 0, 0, 6460, 6465, 3, 818, 409, 0, 6461, 6462, 5, 2, 0, 0, 6462, 6463, 3, 784, 392, 0, 6463, 6464, 5, 3, 0, 0, 6464, 6466, 1, 0, 0, 0, 6465, 6461, 1, 0, 0, 0, 6465, 6466, 1, 0, 0, 0, 6466, 617, 1, 0, 0, 0, 6467, 6480, 3, 616, 308, 0, 6468, 6470, 5, 36, 0, 0, 6469, 6471, 3, 818, 409, 0, 6470, 6469, 1, 0, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6474, 1, 0, 0, 0, 6472, 6474, 3, 818, 409, 0, 6473, 6468, 1, 0, 0, 0, 6473, 6472, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 6476, 5, 2, 0, 0, 6476, 6477, 3, 642, 321, 0, 6477, 6478, 5, 3, 0, 0, 6478, 6480, 1, 0, 0, 0, 6479, 6467, 1, 0, 0, 0, 6479, 6473, 1, 0, 0, 0, 6480, 619, 1, 0, 0, 0, 6481, 6483, 7, 86, 0, 0, 6482, 6484, 5, 123, 0, 0, 6483, 6482, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 621, 1, 0, 0, 0, 6485, 6486, 5, 100, 0, 0, 6486, 6490, 3, 144, 72, 0, 6487, 6488, 5, 80, 0, 0, 6488, 6490, 3, 674, 337, 0, 6489, 6485, 1, 0, 0, 0, 6489, 6487, 1, 0, 0, 0, 6490, 623, 1, 0, 0, 0, 6491, 6507, 3, 322, 161, 0, 6492, 6498, 5, 81, 0, 0, 6493, 6499, 3, 774, 387, 0, 6494, 6495, 5, 2, 0, 0, 6495, 6496, 3, 774, 387, 0, 6496, 6497, 5, 3, 0, 0, 6497, 6499, 1, 0, 0, 0, 6498, 6493, 1, 0, 0, 0, 6498, 6494, 1, 0, 0, 0, 6499, 6507, 1, 0, 0, 0, 6500, 6501, 5, 68, 0, 0, 6501, 6504, 5, 323, 0, 0, 6502, 6505, 3, 790, 395, 0, 6503, 6505, 5, 111, 0, 0, 6504, 6502, 1, 0, 0, 0, 6504, 6503, 1, 0, 0, 0, 6505, 6507, 1, 0, 0, 0, 6506, 6491, 1, 0, 0, 0, 6506, 6492, 1, 0, 0, 0, 6506, 6500, 1, 0, 0, 0, 6507, 625, 1, 0, 0, 0, 6508, 6509, 5, 92, 0, 0, 6509, 6511, 3, 322, 161, 0, 6510, 6512, 3, 144, 72, 0, 6511, 6510, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 6514, 1, 0, 0, 0, 6513, 6515, 3, 638, 319, 0, 6514, 6513, 1, 0, 0, 0, 6514, 6515, 1, 0, 0, 0, 6515, 6533, 1, 0, 0, 0, 6516, 6517, 5, 92, 0, 0, 6517, 6523, 5, 81, 0, 0, 6518, 6524, 3, 774, 387, 0, 6519, 6520, 5, 2, 0, 0, 6520, 6521, 3, 774, 387, 0, 6521, 6522, 5, 3, 0, 0, 6522, 6524, 1, 0, 0, 0, 6523, 6518, 1, 0, 0, 0, 6523, 6519, 1, 0, 0, 0, 6524, 6533, 1, 0, 0, 0, 6525, 6526, 5, 350, 0, 0, 6526, 6527, 5, 68, 0, 0, 6527, 6530, 5, 323, 0, 0, 6528, 6531, 3, 790, 395, 0, 6529, 6531, 5, 111, 0, 0, 6530, 6528, 1, 0, 0, 0, 6530, 6529, 1, 0, 0, 0, 6531, 6533, 1, 0, 0, 0, 6532, 6508, 1, 0, 0, 0, 6532, 6516, 1, 0, 0, 0, 6532, 6525, 1, 0, 0, 0, 6533, 627, 1, 0, 0, 0, 6534, 6539, 3, 624, 312, 0, 6535, 6536, 5, 6, 0, 0, 6536, 6538, 3, 624, 312, 0, 6537, 6535, 1, 0, 0, 0, 6538, 6541, 1, 0, 0, 0, 6539, 6537, 1, 0, 0, 0, 6539, 6540, 1, 0, 0, 0, 6540, 629, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6542, 6547, 3, 624, 312, 0, 6543, 6545, 5, 36, 0, 0, 6544, 6543, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 6546, 1, 0, 0, 0, 6546, 6548, 3, 818, 409, 0, 6547, 6544, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 631, 1, 0, 0, 0, 6549, 6550, 5, 472, 0, 0, 6550, 6551, 3, 806, 403, 0, 6551, 6557, 3, 534, 267, 0, 6552, 6553, 5, 310, 0, 0, 6553, 6554, 5, 2, 0, 0, 6554, 6555, 3, 674, 337, 0, 6555, 6556, 5, 3, 0, 0, 6556, 6558, 1, 0, 0, 0, 6557, 6552, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 633, 1, 0, 0, 0, 6559, 6574, 3, 688, 344, 0, 6560, 6561, 5, 320, 0, 0, 6561, 6562, 5, 64, 0, 0, 6562, 6563, 5, 2, 0, 0, 6563, 6568, 3, 636, 318, 0, 6564, 6565, 5, 6, 0, 0, 6565, 6567, 3, 636, 318, 0, 6566, 6564, 1, 0, 0, 0, 6567, 6570, 1, 0, 0, 0, 6568, 6566, 1, 0, 0, 0, 6568, 6569, 1, 0, 0, 0, 6569, 6571, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6571, 6572, 5, 3, 0, 0, 6572, 6574, 1, 0, 0, 0, 6573, 6559, 1, 0, 0, 0, 6573, 6560, 1, 0, 0, 0, 6574, 6577, 1, 0, 0, 0, 6575, 6576, 5, 105, 0, 0, 6576, 6578, 5, 473, 0, 0, 6577, 6575, 1, 0, 0, 0, 6577, 6578, 1, 0, 0, 0, 6578, 635, 1, 0, 0, 0, 6579, 6585, 3, 688, 344, 0, 6580, 6581, 5, 36, 0, 0, 6581, 6582, 5, 2, 0, 0, 6582, 6583, 3, 642, 321, 0, 6583, 6584, 5, 3, 0, 0, 6584, 6586, 1, 0, 0, 0, 6585, 6580, 1, 0, 0, 0, 6585, 6586, 1, 0, 0, 0, 6586, 637, 1, 0, 0, 0, 6587, 6588, 5, 103, 0, 0, 6588, 6589, 3, 734, 367, 0, 6589, 639, 1, 0, 0, 0, 6590, 6595, 5, 103, 0, 0, 6591, 6592, 5, 434, 0, 0, 6592, 6593, 5, 275, 0, 0, 6593, 6596, 3, 818, 409, 0, 6594, 6596, 3, 674, 337, 0, 6595, 6591, 1, 0, 0, 0, 6595, 6594, 1, 0, 0, 0, 6596, 641, 1, 0, 0, 0, 6597, 6602, 3, 644, 322, 0, 6598, 6599, 5, 6, 0, 0, 6599, 6601, 3, 644, 322, 0, 6600, 6598, 1, 0, 0, 0, 6601, 6604, 1, 0, 0, 0, 6602, 6600, 1, 0, 0, 0, 6602, 6603, 1, 0, 0, 0, 6603, 643, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6605, 6606, 3, 818, 409, 0, 6606, 6608, 3, 652, 326, 0, 6607, 6609, 3, 98, 49, 0, 6608, 6607, 1, 0, 0, 0, 6608, 6609, 1, 0, 0, 0, 6609, 645, 1, 0, 0, 0, 6610, 6611, 5, 474, 0, 0, 6611, 6625, 5, 2, 0, 0, 6612, 6613, 5, 476, 0, 0, 6613, 6614, 5, 2, 0, 0, 6614, 6619, 3, 650, 325, 0, 6615, 6616, 5, 6, 0, 0, 6616, 6618, 3, 650, 325, 0, 6617, 6615, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6622, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6623, 5, 3, 0, 0, 6623, 6624, 5, 6, 0, 0, 6624, 6626, 1, 0, 0, 0, 6625, 6612, 1, 0, 0, 0, 6625, 6626, 1, 0, 0, 0, 6626, 6627, 1, 0, 0, 0, 6627, 6628, 3, 682, 341, 0, 6628, 6629, 3, 698, 349, 0, 6629, 6630, 5, 475, 0, 0, 6630, 6635, 3, 648, 324, 0, 6631, 6632, 5, 6, 0, 0, 6632, 6634, 3, 648, 324, 0, 6633, 6631, 1, 0, 0, 0, 6634, 6637, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6638, 1, 0, 0, 0, 6637, 6635, 1, 0, 0, 0, 6638, 6639, 5, 3, 0, 0, 6639, 647, 1, 0, 0, 0, 6640, 6659, 3, 818, 409, 0, 6641, 6655, 3, 652, 326, 0, 6642, 6645, 5, 53, 0, 0, 6643, 6645, 3, 826, 413, 0, 6644, 6642, 1, 0, 0, 0, 6644, 6643, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6652, 3, 674, 337, 0, 6647, 6649, 5, 77, 0, 0, 6648, 6647, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6650, 1, 0, 0, 0, 6650, 6652, 5, 78, 0, 0, 6651, 6644, 1, 0, 0, 0, 6651, 6648, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6656, 1, 0, 0, 0, 6655, 6651, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6660, 1, 0, 0, 0, 6657, 6658, 5, 62, 0, 0, 6658, 6660, 5, 473, 0, 0, 6659, 6641, 1, 0, 0, 0, 6659, 6657, 1, 0, 0, 0, 6660, 649, 1, 0, 0, 0, 6661, 6662, 3, 682, 341, 0, 6662, 6663, 5, 36, 0, 0, 6663, 6664, 3, 824, 412, 0, 6664, 6668, 1, 0, 0, 0, 6665, 6666, 5, 53, 0, 0, 6666, 6668, 3, 682, 341, 0, 6667, 6661, 1, 0, 0, 0, 6667, 6665, 1, 0, 0, 0, 6668, 651, 1, 0, 0, 0, 6669, 6671, 5, 415, 0, 0, 6670, 6669, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6672, 1, 0, 0, 0, 6672, 6689, 3, 654, 327, 0, 6673, 6675, 5, 4, 0, 0, 6674, 6676, 5, 571, 0, 0, 6675, 6674, 1, 0, 0, 0, 6675, 6676, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6679, 5, 5, 0, 0, 6678, 6673, 1, 0, 0, 0, 6679, 6682, 1, 0, 0, 0, 6680, 6678, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 6690, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6683, 6687, 5, 35, 0, 0, 6684, 6685, 5, 4, 0, 0, 6685, 6686, 5, 571, 0, 0, 6686, 6688, 5, 5, 0, 0, 6687, 6684, 1, 0, 0, 0, 6687, 6688, 1, 0, 0, 0, 6688, 6690, 1, 0, 0, 0, 6689, 6680, 1, 0, 0, 0, 6689, 6683, 1, 0, 0, 0, 6690, 6696, 1, 0, 0, 0, 6691, 6692, 3, 780, 390, 0, 6692, 6693, 5, 27, 0, 0, 6693, 6694, 7, 87, 0, 0, 6694, 6696, 1, 0, 0, 0, 6695, 6670, 1, 0, 0, 0, 6695, 6691, 1, 0, 0, 0, 6696, 653, 1, 0, 0, 0, 6697, 6699, 3, 820, 410, 0, 6698, 6700, 3, 318, 159, 0, 6699, 6698, 1, 0, 0, 0, 6699, 6700, 1, 0, 0, 0, 6700, 6702, 1, 0, 0, 0, 6701, 6703, 3, 534, 267, 0, 6702, 6701, 1, 0, 0, 0, 6702, 6703, 1, 0, 0, 0, 6703, 6713, 1, 0, 0, 0, 6704, 6713, 3, 656, 328, 0, 6705, 6710, 5, 403, 0, 0, 6706, 6708, 3, 668, 334, 0, 6707, 6706, 1, 0, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6711, 1, 0, 0, 0, 6709, 6711, 3, 660, 330, 0, 6710, 6707, 1, 0, 0, 0, 6710, 6709, 1, 0, 0, 0, 6711, 6713, 1, 0, 0, 0, 6712, 6697, 1, 0, 0, 0, 6712, 6704, 1, 0, 0, 0, 6712, 6705, 1, 0, 0, 0, 6713, 655, 1, 0, 0, 0, 6714, 6719, 3, 658, 329, 0, 6715, 6719, 3, 662, 331, 0, 6716, 6719, 3, 664, 332, 0, 6717, 6719, 3, 666, 333, 0, 6718, 6714, 1, 0, 0, 0, 6718, 6715, 1, 0, 0, 0, 6718, 6716, 1, 0, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 657, 1, 0, 0, 0, 6720, 6737, 5, 401, 0, 0, 6721, 6737, 5, 402, 0, 0, 6722, 6737, 5, 416, 0, 0, 6723, 6737, 5, 388, 0, 0, 6724, 6737, 5, 413, 0, 0, 6725, 6727, 5, 398, 0, 0, 6726, 6728, 3, 660, 330, 0, 6727, 6726, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 6737, 1, 0, 0, 0, 6729, 6730, 5, 190, 0, 0, 6730, 6737, 5, 412, 0, 0, 6731, 6733, 7, 88, 0, 0, 6732, 6734, 3, 534, 267, 0, 6733, 6732, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6737, 1, 0, 0, 0, 6735, 6737, 5, 390, 0, 0, 6736, 6720, 1, 0, 0, 0, 6736, 6721, 1, 0, 0, 0, 6736, 6722, 1, 0, 0, 0, 6736, 6723, 1, 0, 0, 0, 6736, 6724, 1, 0, 0, 0, 6736, 6725, 1, 0, 0, 0, 6736, 6729, 1, 0, 0, 0, 6736, 6731, 1, 0, 0, 0, 6736, 6735, 1, 0, 0, 0, 6737, 659, 1, 0, 0, 0, 6738, 6739, 5, 2, 0, 0, 6739, 6740, 5, 571, 0, 0, 6740, 6741, 5, 3, 0, 0, 6741, 661, 1, 0, 0, 0, 6742, 6744, 5, 389, 0, 0, 6743, 6745, 5, 374, 0, 0, 6744, 6743, 1, 0, 0, 0, 6744, 6745, 1, 0, 0, 0, 6745, 6747, 1, 0, 0, 0, 6746, 6748, 3, 534, 267, 0, 6747, 6746, 1, 0, 0, 0, 6747, 6748, 1, 0, 0, 0, 6748, 663, 1, 0, 0, 0, 6749, 6751, 7, 89, 0, 0, 6750, 6752, 5, 374, 0, 0, 6751, 6750, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6760, 1, 0, 0, 0, 6753, 6760, 5, 423, 0, 0, 6754, 6755, 5, 405, 0, 0, 6755, 6757, 7, 90, 0, 0, 6756, 6758, 5, 374, 0, 0, 6757, 6756, 1, 0, 0, 0, 6757, 6758, 1, 0, 0, 0, 6758, 6760, 1, 0, 0, 0, 6759, 6749, 1, 0, 0, 0, 6759, 6753, 1, 0, 0, 0, 6759, 6754, 1, 0, 0, 0, 6760, 6762, 1, 0, 0, 0, 6761, 6763, 3, 660, 330, 0, 6762, 6761, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 665, 1, 0, 0, 0, 6764, 6766, 7, 91, 0, 0, 6765, 6767, 3, 660, 330, 0, 6766, 6765, 1, 0, 0, 0, 6766, 6767, 1, 0, 0, 0, 6767, 6771, 1, 0, 0, 0, 6768, 6769, 7, 26, 0, 0, 6769, 6770, 5, 418, 0, 0, 6770, 6772, 5, 386, 0, 0, 6771, 6768, 1, 0, 0, 0, 6771, 6772, 1, 0, 0, 0, 6772, 667, 1, 0, 0, 0, 6773, 6803, 5, 264, 0, 0, 6774, 6803, 3, 670, 335, 0, 6775, 6778, 5, 384, 0, 0, 6776, 6777, 5, 94, 0, 0, 6777, 6779, 5, 264, 0, 0, 6778, 6776, 1, 0, 0, 0, 6778, 6779, 1, 0, 0, 0, 6779, 6803, 1, 0, 0, 0, 6780, 6787, 5, 176, 0, 0, 6781, 6785, 5, 94, 0, 0, 6782, 6786, 5, 218, 0, 0, 6783, 6786, 5, 261, 0, 0, 6784, 6786, 3, 670, 335, 0, 6785, 6782, 1, 0, 0, 0, 6785, 6783, 1, 0, 0, 0, 6785, 6784, 1, 0, 0, 0, 6786, 6788, 1, 0, 0, 0, 6787, 6781, 1, 0, 0, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6803, 1, 0, 0, 0, 6789, 6795, 5, 218, 0, 0, 6790, 6793, 5, 94, 0, 0, 6791, 6794, 5, 261, 0, 0, 6792, 6794, 3, 670, 335, 0, 6793, 6791, 1, 0, 0, 0, 6793, 6792, 1, 0, 0, 0, 6794, 6796, 1, 0, 0, 0, 6795, 6790, 1, 0, 0, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6803, 1, 0, 0, 0, 6797, 6800, 5, 261, 0, 0, 6798, 6799, 5, 94, 0, 0, 6799, 6801, 3, 670, 335, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6803, 1, 0, 0, 0, 6802, 6773, 1, 0, 0, 0, 6802, 6774, 1, 0, 0, 0, 6802, 6775, 1, 0, 0, 0, 6802, 6780, 1, 0, 0, 0, 6802, 6789, 1, 0, 0, 0, 6802, 6797, 1, 0, 0, 0, 6803, 669, 1, 0, 0, 0, 6804, 6806, 5, 326, 0, 0, 6805, 6807, 3, 660, 330, 0, 6806, 6805, 1, 0, 0, 0, 6806, 6807, 1, 0, 0, 0, 6807, 671, 1, 0, 0, 0, 6808, 6809, 7, 92, 0, 0, 6809, 673, 1, 0, 0, 0, 6810, 6811, 3, 676, 338, 0, 6811, 675, 1, 0, 0, 0, 6812, 6813, 6, 338, -1, 0, 6813, 6815, 3, 680, 340, 0, 6814, 6816, 3, 678, 339, 0, 6815, 6814, 1, 0, 0, 0, 6815, 6816, 1, 0, 0, 0, 6816, 6820, 1, 0, 0, 0, 6817, 6818, 5, 77, 0, 0, 6818, 6820, 3, 676, 338, 3, 6819, 6812, 1, 0, 0, 0, 6819, 6817, 1, 0, 0, 0, 6820, 6829, 1, 0, 0, 0, 6821, 6822, 10, 2, 0, 0, 6822, 6823, 5, 33, 0, 0, 6823, 6828, 3, 676, 338, 3, 6824, 6825, 10, 1, 0, 0, 6825, 6826, 5, 82, 0, 0, 6826, 6828, 3, 676, 338, 2, 6827, 6821, 1, 0, 0, 0, 6827, 6824, 1, 0, 0, 0, 6828, 6831, 1, 0, 0, 0, 6829, 6827, 1, 0, 0, 0, 6829, 6830, 1, 0, 0, 0, 6830, 677, 1, 0, 0, 0, 6831, 6829, 1, 0, 0, 0, 6832, 6833, 3, 672, 336, 0, 6833, 6834, 3, 680, 340, 0, 6834, 6904, 1, 0, 0, 0, 6835, 6836, 3, 672, 336, 0, 6836, 6837, 3, 728, 364, 0, 6837, 6843, 3, 718, 359, 0, 6838, 6844, 3, 562, 281, 0, 6839, 6840, 5, 2, 0, 0, 6840, 6841, 3, 674, 337, 0, 6841, 6842, 5, 3, 0, 0, 6842, 6844, 1, 0, 0, 0, 6843, 6838, 1, 0, 0, 0, 6843, 6839, 1, 0, 0, 0, 6844, 6904, 1, 0, 0, 0, 6845, 6847, 5, 77, 0, 0, 6846, 6845, 1, 0, 0, 0, 6846, 6847, 1, 0, 0, 0, 6847, 6848, 1, 0, 0, 0, 6848, 6849, 5, 387, 0, 0, 6849, 6850, 3, 680, 340, 0, 6850, 6851, 5, 33, 0, 0, 6851, 6852, 3, 680, 340, 0, 6852, 6904, 1, 0, 0, 0, 6853, 6855, 5, 77, 0, 0, 6854, 6853, 1, 0, 0, 0, 6854, 6855, 1, 0, 0, 0, 6855, 6856, 1, 0, 0, 0, 6856, 6857, 5, 68, 0, 0, 6857, 6858, 5, 2, 0, 0, 6858, 6863, 3, 674, 337, 0, 6859, 6860, 5, 6, 0, 0, 6860, 6862, 3, 674, 337, 0, 6861, 6859, 1, 0, 0, 0, 6862, 6865, 1, 0, 0, 0, 6863, 6861, 1, 0, 0, 0, 6863, 6864, 1, 0, 0, 0, 6864, 6866, 1, 0, 0, 0, 6865, 6863, 1, 0, 0, 0, 6866, 6867, 5, 3, 0, 0, 6867, 6904, 1, 0, 0, 0, 6868, 6870, 5, 77, 0, 0, 6869, 6868, 1, 0, 0, 0, 6869, 6870, 1, 0, 0, 0, 6870, 6871, 1, 0, 0, 0, 6871, 6872, 5, 68, 0, 0, 6872, 6904, 3, 562, 281, 0, 6873, 6875, 5, 77, 0, 0, 6874, 6873, 1, 0, 0, 0, 6874, 6875, 1, 0, 0, 0, 6875, 6884, 1, 0, 0, 0, 6876, 6885, 5, 120, 0, 0, 6877, 6885, 5, 114, 0, 0, 6878, 6879, 5, 127, 0, 0, 6879, 6885, 5, 94, 0, 0, 6880, 6882, 5, 387, 0, 0, 6881, 6883, 5, 91, 0, 0, 6882, 6881, 1, 0, 0, 0, 6882, 6883, 1, 0, 0, 0, 6883, 6885, 1, 0, 0, 0, 6884, 6876, 1, 0, 0, 0, 6884, 6877, 1, 0, 0, 0, 6884, 6878, 1, 0, 0, 0, 6884, 6880, 1, 0, 0, 0, 6885, 6886, 1, 0, 0, 0, 6886, 6889, 3, 680, 340, 0, 6887, 6888, 5, 197, 0, 0, 6888, 6890, 3, 680, 340, 0, 6889, 6887, 1, 0, 0, 0, 6889, 6890, 1, 0, 0, 0, 6890, 6904, 1, 0, 0, 0, 6891, 6893, 5, 116, 0, 0, 6892, 6894, 5, 77, 0, 0, 6893, 6892, 1, 0, 0, 0, 6893, 6894, 1, 0, 0, 0, 6894, 6895, 1, 0, 0, 0, 6895, 6904, 5, 78, 0, 0, 6896, 6898, 5, 116, 0, 0, 6897, 6899, 5, 77, 0, 0, 6898, 6897, 1, 0, 0, 0, 6898, 6899, 1, 0, 0, 0, 6899, 6900, 1, 0, 0, 0, 6900, 6901, 5, 56, 0, 0, 6901, 6902, 5, 64, 0, 0, 6902, 6904, 3, 680, 340, 0, 6903, 6832, 1, 0, 0, 0, 6903, 6835, 1, 0, 0, 0, 6903, 6846, 1, 0, 0, 0, 6903, 6854, 1, 0, 0, 0, 6903, 6869, 1, 0, 0, 0, 6903, 6874, 1, 0, 0, 0, 6903, 6891, 1, 0, 0, 0, 6903, 6896, 1, 0, 0, 0, 6904, 679, 1, 0, 0, 0, 6905, 6906, 6, 340, -1, 0, 6906, 6910, 3, 682, 341, 0, 6907, 6908, 7, 29, 0, 0, 6908, 6910, 3, 680, 340, 4, 6909, 6905, 1, 0, 0, 0, 6909, 6907, 1, 0, 0, 0, 6910, 6927, 1, 0, 0, 0, 6911, 6912, 10, 3, 0, 0, 6912, 6913, 7, 93, 0, 0, 6913, 6926, 3, 680, 340, 4, 6914, 6915, 10, 2, 0, 0, 6915, 6916, 7, 29, 0, 0, 6916, 6926, 3, 680, 340, 3, 6917, 6918, 10, 1, 0, 0, 6918, 6919, 5, 15, 0, 0, 6919, 6926, 3, 680, 340, 2, 6920, 6921, 10, 5, 0, 0, 6921, 6922, 5, 142, 0, 0, 6922, 6923, 5, 418, 0, 0, 6923, 6924, 5, 386, 0, 0, 6924, 6926, 3, 674, 337, 0, 6925, 6911, 1, 0, 0, 0, 6925, 6914, 1, 0, 0, 0, 6925, 6917, 1, 0, 0, 0, 6925, 6920, 1, 0, 0, 0, 6926, 6929, 1, 0, 0, 0, 6927, 6925, 1, 0, 0, 0, 6927, 6928, 1, 0, 0, 0, 6928, 681, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6930, 6931, 6, 341, -1, 0, 6931, 6932, 7, 94, 0, 0, 6932, 7019, 3, 562, 281, 0, 6933, 6936, 5, 35, 0, 0, 6934, 6937, 3, 562, 281, 0, 6935, 6937, 3, 740, 370, 0, 6936, 6934, 1, 0, 0, 0, 6936, 6935, 1, 0, 0, 0, 6937, 7019, 1, 0, 0, 0, 6938, 6939, 5, 28, 0, 0, 6939, 7019, 3, 754, 377, 0, 6940, 6941, 5, 470, 0, 0, 6941, 7019, 3, 534, 267, 0, 6942, 7019, 5, 571, 0, 0, 6943, 7019, 5, 573, 0, 0, 6944, 7019, 5, 563, 0, 0, 6945, 7019, 5, 567, 0, 0, 6946, 6956, 3, 806, 403, 0, 6947, 6957, 3, 808, 404, 0, 6948, 6949, 5, 2, 0, 0, 6949, 6951, 3, 736, 368, 0, 6950, 6952, 3, 586, 293, 0, 6951, 6950, 1, 0, 0, 0, 6951, 6952, 1, 0, 0, 0, 6952, 6953, 1, 0, 0, 0, 6953, 6954, 5, 3, 0, 0, 6954, 6955, 3, 808, 404, 0, 6955, 6957, 1, 0, 0, 0, 6956, 6947, 1, 0, 0, 0, 6956, 6948, 1, 0, 0, 0, 6957, 7019, 1, 0, 0, 0, 6958, 6960, 3, 656, 328, 0, 6959, 6958, 1, 0, 0, 0, 6959, 6960, 1, 0, 0, 0, 6960, 6961, 1, 0, 0, 0, 6961, 7019, 3, 808, 404, 0, 6962, 6970, 5, 403, 0, 0, 6963, 6965, 3, 808, 404, 0, 6964, 6966, 3, 668, 334, 0, 6965, 6964, 1, 0, 0, 0, 6965, 6966, 1, 0, 0, 0, 6966, 6971, 1, 0, 0, 0, 6967, 6968, 3, 660, 330, 0, 6968, 6969, 3, 808, 404, 0, 6969, 6971, 1, 0, 0, 0, 6970, 6963, 1, 0, 0, 0, 6970, 6967, 1, 0, 0, 0, 6971, 7019, 1, 0, 0, 0, 6972, 7019, 5, 96, 0, 0, 6973, 7019, 5, 60, 0, 0, 6974, 7019, 5, 78, 0, 0, 6975, 7019, 5, 574, 0, 0, 6976, 6977, 5, 2, 0, 0, 6977, 6978, 3, 674, 337, 0, 6978, 6979, 5, 3, 0, 0, 6979, 6980, 3, 754, 377, 0, 6980, 7019, 1, 0, 0, 0, 6981, 6983, 5, 40, 0, 0, 6982, 6984, 3, 674, 337, 0, 6983, 6982, 1, 0, 0, 0, 6983, 6984, 1, 0, 0, 0, 6984, 6986, 1, 0, 0, 0, 6985, 6987, 3, 748, 374, 0, 6986, 6985, 1, 0, 0, 0, 6987, 6988, 1, 0, 0, 0, 6988, 6986, 1, 0, 0, 0, 6988, 6989, 1, 0, 0, 0, 6989, 6992, 1, 0, 0, 0, 6990, 6991, 5, 58, 0, 0, 6991, 6993, 3, 674, 337, 0, 6992, 6990, 1, 0, 0, 0, 6992, 6993, 1, 0, 0, 0, 6993, 6994, 1, 0, 0, 0, 6994, 6995, 5, 454, 0, 0, 6995, 7019, 1, 0, 0, 0, 6996, 7019, 3, 686, 343, 0, 6997, 6999, 3, 562, 281, 0, 6998, 7000, 3, 752, 376, 0, 6999, 6998, 1, 0, 0, 0, 6999, 7000, 1, 0, 0, 0, 7000, 7019, 1, 0, 0, 0, 7001, 7019, 3, 716, 358, 0, 7002, 7003, 5, 2, 0, 0, 7003, 7004, 3, 674, 337, 0, 7004, 7005, 5, 6, 0, 0, 7005, 7006, 3, 730, 365, 0, 7006, 7007, 5, 3, 0, 0, 7007, 7019, 1, 0, 0, 0, 7008, 7009, 3, 714, 357, 0, 7009, 7010, 5, 125, 0, 0, 7010, 7011, 3, 714, 357, 0, 7011, 7019, 1, 0, 0, 0, 7012, 7019, 3, 780, 390, 0, 7013, 7014, 7, 29, 0, 0, 7014, 7019, 3, 682, 341, 5, 7015, 7016, 3, 724, 362, 0, 7016, 7017, 3, 682, 341, 2, 7017, 7019, 1, 0, 0, 0, 7018, 6930, 1, 0, 0, 0, 7018, 6933, 1, 0, 0, 0, 7018, 6938, 1, 0, 0, 0, 7018, 6940, 1, 0, 0, 0, 7018, 6942, 1, 0, 0, 0, 7018, 6943, 1, 0, 0, 0, 7018, 6944, 1, 0, 0, 0, 7018, 6945, 1, 0, 0, 0, 7018, 6946, 1, 0, 0, 0, 7018, 6959, 1, 0, 0, 0, 7018, 6962, 1, 0, 0, 0, 7018, 6972, 1, 0, 0, 0, 7018, 6973, 1, 0, 0, 0, 7018, 6974, 1, 0, 0, 0, 7018, 6975, 1, 0, 0, 0, 7018, 6976, 1, 0, 0, 0, 7018, 6981, 1, 0, 0, 0, 7018, 6996, 1, 0, 0, 0, 7018, 6997, 1, 0, 0, 0, 7018, 7001, 1, 0, 0, 0, 7018, 7002, 1, 0, 0, 0, 7018, 7008, 1, 0, 0, 0, 7018, 7012, 1, 0, 0, 0, 7018, 7013, 1, 0, 0, 0, 7018, 7015, 1, 0, 0, 0, 7019, 7047, 1, 0, 0, 0, 7020, 7021, 10, 3, 0, 0, 7021, 7022, 3, 722, 361, 0, 7022, 7023, 3, 682, 341, 4, 7023, 7046, 1, 0, 0, 0, 7024, 7025, 10, 6, 0, 0, 7025, 7026, 5, 26, 0, 0, 7026, 7046, 3, 652, 326, 0, 7027, 7028, 10, 4, 0, 0, 7028, 7030, 3, 724, 362, 0, 7029, 7031, 3, 682, 341, 0, 7030, 7029, 1, 0, 0, 0, 7030, 7031, 1, 0, 0, 0, 7031, 7046, 1, 0, 0, 0, 7032, 7033, 10, 1, 0, 0, 7033, 7035, 5, 116, 0, 0, 7034, 7036, 5, 77, 0, 0, 7035, 7034, 1, 0, 0, 0, 7035, 7036, 1, 0, 0, 0, 7036, 7043, 1, 0, 0, 0, 7037, 7038, 5, 56, 0, 0, 7038, 7039, 5, 64, 0, 0, 7039, 7044, 3, 682, 341, 0, 7040, 7041, 5, 275, 0, 0, 7041, 7044, 3, 528, 264, 0, 7042, 7044, 5, 188, 0, 0, 7043, 7037, 1, 0, 0, 0, 7043, 7040, 1, 0, 0, 0, 7043, 7042, 1, 0, 0, 0, 7044, 7046, 1, 0, 0, 0, 7045, 7020, 1, 0, 0, 0, 7045, 7024, 1, 0, 0, 0, 7045, 7027, 1, 0, 0, 0, 7045, 7032, 1, 0, 0, 0, 7046, 7049, 1, 0, 0, 0, 7047, 7045, 1, 0, 0, 0, 7047, 7048, 1, 0, 0, 0, 7048, 683, 1, 0, 0, 0, 7049, 7047, 1, 0, 0, 0, 7050, 7076, 3, 806, 403, 0, 7051, 7073, 5, 2, 0, 0, 7052, 7056, 3, 736, 368, 0, 7053, 7054, 5, 6, 0, 0, 7054, 7055, 5, 101, 0, 0, 7055, 7057, 3, 738, 369, 0, 7056, 7053, 1, 0, 0, 0, 7056, 7057, 1, 0, 0, 0, 7057, 7059, 1, 0, 0, 0, 7058, 7060, 3, 586, 293, 0, 7059, 7058, 1, 0, 0, 0, 7059, 7060, 1, 0, 0, 0, 7060, 7074, 1, 0, 0, 0, 7061, 7062, 5, 101, 0, 0, 7062, 7064, 3, 738, 369, 0, 7063, 7065, 3, 586, 293, 0, 7064, 7063, 1, 0, 0, 0, 7064, 7065, 1, 0, 0, 0, 7065, 7074, 1, 0, 0, 0, 7066, 7067, 7, 80, 0, 0, 7067, 7069, 3, 736, 368, 0, 7068, 7070, 3, 586, 293, 0, 7069, 7068, 1, 0, 0, 0, 7069, 7070, 1, 0, 0, 0, 7070, 7074, 1, 0, 0, 0, 7071, 7074, 5, 9, 0, 0, 7072, 7074, 1, 0, 0, 0, 7073, 7052, 1, 0, 0, 0, 7073, 7061, 1, 0, 0, 0, 7073, 7066, 1, 0, 0, 0, 7073, 7071, 1, 0, 0, 0, 7073, 7072, 1, 0, 0, 0, 7074, 7075, 1, 0, 0, 0, 7075, 7077, 5, 3, 0, 0, 7076, 7051, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 685, 1, 0, 0, 0, 7078, 7085, 3, 684, 342, 0, 7079, 7080, 5, 479, 0, 0, 7080, 7081, 5, 66, 0, 0, 7081, 7082, 5, 2, 0, 0, 7082, 7083, 3, 586, 293, 0, 7083, 7084, 5, 3, 0, 0, 7084, 7086, 1, 0, 0, 0, 7085, 7079, 1, 0, 0, 0, 7085, 7086, 1, 0, 0, 0, 7086, 7093, 1, 0, 0, 0, 7087, 7088, 5, 480, 0, 0, 7088, 7089, 5, 2, 0, 0, 7089, 7090, 5, 103, 0, 0, 7090, 7091, 3, 674, 337, 0, 7091, 7092, 5, 3, 0, 0, 7092, 7094, 1, 0, 0, 0, 7093, 7087, 1, 0, 0, 0, 7093, 7094, 1, 0, 0, 0, 7094, 7100, 1, 0, 0, 0, 7095, 7098, 5, 124, 0, 0, 7096, 7099, 3, 708, 354, 0, 7097, 7099, 3, 818, 409, 0, 7098, 7096, 1, 0, 0, 0, 7098, 7097, 1, 0, 0, 0, 7099, 7101, 1, 0, 0, 0, 7100, 7095, 1, 0, 0, 0, 7100, 7101, 1, 0, 0, 0, 7101, 7104, 1, 0, 0, 0, 7102, 7104, 3, 690, 345, 0, 7103, 7078, 1, 0, 0, 0, 7103, 7102, 1, 0, 0, 0, 7104, 687, 1, 0, 0, 0, 7105, 7108, 3, 684, 342, 0, 7106, 7108, 3, 690, 345, 0, 7107, 7105, 1, 0, 0, 0, 7107, 7106, 1, 0, 0, 0, 7108, 689, 1, 0, 0, 0, 7109, 7110, 5, 108, 0, 0, 7110, 7111, 5, 62, 0, 0, 7111, 7112, 5, 2, 0, 0, 7112, 7113, 3, 674, 337, 0, 7113, 7114, 5, 3, 0, 0, 7114, 7284, 1, 0, 0, 0, 7115, 7284, 5, 48, 0, 0, 7116, 7118, 7, 95, 0, 0, 7117, 7119, 3, 660, 330, 0, 7118, 7117, 1, 0, 0, 0, 7118, 7119, 1, 0, 0, 0, 7119, 7284, 1, 0, 0, 0, 7120, 7284, 5, 49, 0, 0, 7121, 7284, 5, 52, 0, 0, 7122, 7284, 5, 89, 0, 0, 7123, 7284, 5, 99, 0, 0, 7124, 7284, 5, 47, 0, 0, 7125, 7284, 5, 111, 0, 0, 7126, 7127, 7, 96, 0, 0, 7127, 7128, 5, 2, 0, 0, 7128, 7129, 3, 674, 337, 0, 7129, 7130, 5, 36, 0, 0, 7130, 7131, 3, 652, 326, 0, 7131, 7132, 5, 3, 0, 0, 7132, 7284, 1, 0, 0, 0, 7133, 7134, 5, 397, 0, 0, 7134, 7139, 5, 2, 0, 0, 7135, 7136, 3, 742, 371, 0, 7136, 7137, 5, 64, 0, 0, 7137, 7138, 3, 674, 337, 0, 7138, 7140, 1, 0, 0, 0, 7139, 7135, 1, 0, 0, 0, 7139, 7140, 1, 0, 0, 0, 7140, 7141, 1, 0, 0, 0, 7141, 7284, 5, 3, 0, 0, 7142, 7143, 5, 489, 0, 0, 7143, 7144, 5, 2, 0, 0, 7144, 7147, 3, 674, 337, 0, 7145, 7146, 5, 6, 0, 0, 7146, 7148, 3, 744, 372, 0, 7147, 7145, 1, 0, 0, 0, 7147, 7148, 1, 0, 0, 0, 7148, 7149, 1, 0, 0, 0, 7149, 7150, 5, 3, 0, 0, 7150, 7284, 1, 0, 0, 0, 7151, 7152, 5, 410, 0, 0, 7152, 7153, 5, 2, 0, 0, 7153, 7154, 3, 674, 337, 0, 7154, 7155, 5, 84, 0, 0, 7155, 7156, 3, 674, 337, 0, 7156, 7157, 5, 64, 0, 0, 7157, 7160, 3, 674, 337, 0, 7158, 7159, 5, 62, 0, 0, 7159, 7161, 3, 674, 337, 0, 7160, 7158, 1, 0, 0, 0, 7160, 7161, 1, 0, 0, 0, 7161, 7162, 1, 0, 0, 0, 7162, 7163, 5, 3, 0, 0, 7163, 7284, 1, 0, 0, 0, 7164, 7165, 5, 411, 0, 0, 7165, 7170, 5, 2, 0, 0, 7166, 7167, 3, 682, 341, 0, 7167, 7168, 5, 68, 0, 0, 7168, 7169, 3, 682, 341, 0, 7169, 7171, 1, 0, 0, 0, 7170, 7166, 1, 0, 0, 0, 7170, 7171, 1, 0, 0, 0, 7171, 7172, 1, 0, 0, 0, 7172, 7284, 5, 3, 0, 0, 7173, 7174, 5, 417, 0, 0, 7174, 7176, 5, 2, 0, 0, 7175, 7177, 3, 746, 373, 0, 7176, 7175, 1, 0, 0, 0, 7176, 7177, 1, 0, 0, 0, 7177, 7178, 1, 0, 0, 0, 7178, 7284, 5, 3, 0, 0, 7179, 7180, 5, 421, 0, 0, 7180, 7182, 5, 2, 0, 0, 7181, 7183, 7, 97, 0, 0, 7182, 7181, 1, 0, 0, 0, 7182, 7183, 1, 0, 0, 0, 7183, 7188, 1, 0, 0, 0, 7184, 7186, 3, 674, 337, 0, 7185, 7184, 1, 0, 0, 0, 7185, 7186, 1, 0, 0, 0, 7186, 7187, 1, 0, 0, 0, 7187, 7189, 5, 64, 0, 0, 7188, 7185, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7190, 1, 0, 0, 0, 7190, 7191, 3, 730, 365, 0, 7191, 7192, 1, 0, 0, 0, 7192, 7193, 5, 3, 0, 0, 7193, 7284, 1, 0, 0, 0, 7194, 7195, 5, 408, 0, 0, 7195, 7196, 5, 2, 0, 0, 7196, 7197, 3, 674, 337, 0, 7197, 7198, 5, 6, 0, 0, 7198, 7199, 3, 674, 337, 0, 7199, 7200, 5, 3, 0, 0, 7200, 7284, 1, 0, 0, 0, 7201, 7202, 7, 98, 0, 0, 7202, 7284, 3, 534, 267, 0, 7203, 7204, 5, 426, 0, 0, 7204, 7205, 5, 2, 0, 0, 7205, 7206, 5, 266, 0, 0, 7206, 7216, 3, 824, 412, 0, 7207, 7214, 5, 6, 0, 0, 7208, 7209, 5, 424, 0, 0, 7209, 7210, 5, 2, 0, 0, 7210, 7211, 3, 692, 346, 0, 7211, 7212, 5, 3, 0, 0, 7212, 7215, 1, 0, 0, 0, 7213, 7215, 3, 730, 365, 0, 7214, 7208, 1, 0, 0, 0, 7214, 7213, 1, 0, 0, 0, 7215, 7217, 1, 0, 0, 0, 7216, 7207, 1, 0, 0, 0, 7216, 7217, 1, 0, 0, 0, 7217, 7218, 1, 0, 0, 0, 7218, 7219, 5, 3, 0, 0, 7219, 7284, 1, 0, 0, 0, 7220, 7221, 5, 427, 0, 0, 7221, 7222, 5, 2, 0, 0, 7222, 7223, 3, 682, 341, 0, 7223, 7224, 3, 698, 349, 0, 7224, 7225, 5, 3, 0, 0, 7225, 7284, 1, 0, 0, 0, 7226, 7227, 5, 428, 0, 0, 7227, 7228, 5, 2, 0, 0, 7228, 7229, 3, 692, 346, 0, 7229, 7230, 5, 3, 0, 0, 7230, 7284, 1, 0, 0, 0, 7231, 7232, 5, 429, 0, 0, 7232, 7233, 5, 2, 0, 0, 7233, 7234, 3, 696, 348, 0, 7234, 7237, 3, 674, 337, 0, 7235, 7236, 7, 99, 0, 0, 7236, 7238, 5, 378, 0, 0, 7237, 7235, 1, 0, 0, 0, 7237, 7238, 1, 0, 0, 0, 7238, 7239, 1, 0, 0, 0, 7239, 7240, 5, 3, 0, 0, 7240, 7284, 1, 0, 0, 0, 7241, 7242, 5, 430, 0, 0, 7242, 7243, 5, 2, 0, 0, 7243, 7244, 5, 266, 0, 0, 7244, 7247, 3, 824, 412, 0, 7245, 7246, 5, 6, 0, 0, 7246, 7248, 3, 674, 337, 0, 7247, 7245, 1, 0, 0, 0, 7247, 7248, 1, 0, 0, 0, 7248, 7249, 1, 0, 0, 0, 7249, 7250, 5, 3, 0, 0, 7250, 7284, 1, 0, 0, 0, 7251, 7252, 5, 431, 0, 0, 7252, 7253, 5, 2, 0, 0, 7253, 7254, 5, 383, 0, 0, 7254, 7255, 3, 674, 337, 0, 7255, 7256, 5, 6, 0, 0, 7256, 7260, 5, 375, 0, 0, 7257, 7258, 5, 269, 0, 0, 7258, 7261, 5, 450, 0, 0, 7259, 7261, 3, 674, 337, 0, 7260, 7257, 1, 0, 0, 0, 7260, 7259, 1, 0, 0, 0, 7261, 7271, 1, 0, 0, 0, 7262, 7263, 5, 6, 0, 0, 7263, 7269, 5, 339, 0, 0, 7264, 7266, 5, 269, 0, 0, 7265, 7264, 1, 0, 0, 0, 7265, 7266, 1, 0, 0, 0, 7266, 7267, 1, 0, 0, 0, 7267, 7270, 5, 450, 0, 0, 7268, 7270, 5, 385, 0, 0, 7269, 7265, 1, 0, 0, 0, 7269, 7268, 1, 0, 0, 0, 7270, 7272, 1, 0, 0, 0, 7271, 7262, 1, 0, 0, 0, 7271, 7272, 1, 0, 0, 0, 7272, 7273, 1, 0, 0, 0, 7273, 7274, 5, 3, 0, 0, 7274, 7284, 1, 0, 0, 0, 7275, 7276, 5, 432, 0, 0, 7276, 7277, 5, 2, 0, 0, 7277, 7278, 3, 696, 348, 0, 7278, 7279, 3, 674, 337, 0, 7279, 7280, 5, 36, 0, 0, 7280, 7281, 3, 654, 327, 0, 7281, 7282, 5, 3, 0, 0, 7282, 7284, 1, 0, 0, 0, 7283, 7109, 1, 0, 0, 0, 7283, 7115, 1, 0, 0, 0, 7283, 7116, 1, 0, 0, 0, 7283, 7120, 1, 0, 0, 0, 7283, 7121, 1, 0, 0, 0, 7283, 7122, 1, 0, 0, 0, 7283, 7123, 1, 0, 0, 0, 7283, 7124, 1, 0, 0, 0, 7283, 7125, 1, 0, 0, 0, 7283, 7126, 1, 0, 0, 0, 7283, 7133, 1, 0, 0, 0, 7283, 7142, 1, 0, 0, 0, 7283, 7151, 1, 0, 0, 0, 7283, 7164, 1, 0, 0, 0, 7283, 7173, 1, 0, 0, 0, 7283, 7179, 1, 0, 0, 0, 7283, 7194, 1, 0, 0, 0, 7283, 7201, 1, 0, 0, 0, 7283, 7203, 1, 0, 0, 0, 7283, 7220, 1, 0, 0, 0, 7283, 7226, 1, 0, 0, 0, 7283, 7231, 1, 0, 0, 0, 7283, 7241, 1, 0, 0, 0, 7283, 7251, 1, 0, 0, 0, 7283, 7275, 1, 0, 0, 0, 7284, 691, 1, 0, 0, 0, 7285, 7290, 3, 694, 347, 0, 7286, 7287, 5, 6, 0, 0, 7287, 7289, 3, 694, 347, 0, 7288, 7286, 1, 0, 0, 0, 7289, 7292, 1, 0, 0, 0, 7290, 7288, 1, 0, 0, 0, 7290, 7291, 1, 0, 0, 0, 7291, 693, 1, 0, 0, 0, 7292, 7290, 1, 0, 0, 0, 7293, 7296, 3, 674, 337, 0, 7294, 7295, 5, 36, 0, 0, 7295, 7297, 3, 824, 412, 0, 7296, 7294, 1, 0, 0, 0, 7296, 7297, 1, 0, 0, 0, 7297, 695, 1, 0, 0, 0, 7298, 7299, 7, 100, 0, 0, 7299, 697, 1, 0, 0, 0, 7300, 7302, 5, 286, 0, 0, 7301, 7303, 3, 700, 350, 0, 7302, 7301, 1, 0, 0, 0, 7302, 7303, 1, 0, 0, 0, 7303, 7304, 1, 0, 0, 0, 7304, 7306, 3, 682, 341, 0, 7305, 7307, 3, 700, 350, 0, 7306, 7305, 1, 0, 0, 0, 7306, 7307, 1, 0, 0, 0, 7307, 699, 1, 0, 0, 0, 7308, 7309, 5, 147, 0, 0, 7309, 7310, 7, 101, 0, 0, 7310, 701, 1, 0, 0, 0, 7311, 7312, 5, 104, 0, 0, 7312, 7317, 3, 704, 352, 0, 7313, 7314, 5, 6, 0, 0, 7314, 7316, 3, 704, 352, 0, 7315, 7313, 1, 0, 0, 0, 7316, 7319, 1, 0, 0, 0, 7317, 7315, 1, 0, 0, 0, 7317, 7318, 1, 0, 0, 0, 7318, 703, 1, 0, 0, 0, 7319, 7317, 1, 0, 0, 0, 7320, 7321, 3, 818, 409, 0, 7321, 7322, 5, 36, 0, 0, 7322, 7323, 3, 708, 354, 0, 7323, 705, 1, 0, 0, 0, 7324, 7327, 5, 124, 0, 0, 7325, 7328, 3, 708, 354, 0, 7326, 7328, 3, 818, 409, 0, 7327, 7325, 1, 0, 0, 0, 7327, 7326, 1, 0, 0, 0, 7328, 707, 1, 0, 0, 0, 7329, 7331, 5, 2, 0, 0, 7330, 7332, 3, 818, 409, 0, 7331, 7330, 1, 0, 0, 0, 7331, 7332, 1, 0, 0, 0, 7332, 7336, 1, 0, 0, 0, 7333, 7334, 5, 285, 0, 0, 7334, 7335, 5, 147, 0, 0, 7335, 7337, 3, 730, 365, 0, 7336, 7333, 1, 0, 0, 0, 7336, 7337, 1, 0, 0, 0, 7337, 7339, 1, 0, 0, 0, 7338, 7340, 3, 586, 293, 0, 7339, 7338, 1, 0, 0, 0, 7339, 7340, 1, 0, 0, 0, 7340, 7342, 1, 0, 0, 0, 7341, 7343, 3, 710, 355, 0, 7342, 7341, 1, 0, 0, 0, 7342, 7343, 1, 0, 0, 0, 7343, 7344, 1, 0, 0, 0, 7344, 7345, 5, 3, 0, 0, 7345, 709, 1, 0, 0, 0, 7346, 7351, 7, 102, 0, 0, 7347, 7348, 5, 387, 0, 0, 7348, 7349, 3, 712, 356, 0, 7349, 7350, 5, 33, 0, 0, 7350, 7352, 1, 0, 0, 0, 7351, 7347, 1, 0, 0, 0, 7351, 7352, 1, 0, 0, 0, 7352, 7353, 1, 0, 0, 0, 7353, 7354, 3, 712, 356, 0, 7354, 7364, 1, 0, 0, 0, 7355, 7362, 5, 199, 0, 0, 7356, 7357, 5, 434, 0, 0, 7357, 7363, 5, 414, 0, 0, 7358, 7363, 5, 66, 0, 0, 7359, 7363, 5, 467, 0, 0, 7360, 7361, 5, 269, 0, 0, 7361, 7363, 5, 482, 0, 0, 7362, 7356, 1, 0, 0, 0, 7362, 7358, 1, 0, 0, 0, 7362, 7359, 1, 0, 0, 0, 7362, 7360, 1, 0, 0, 0, 7363, 7365, 1, 0, 0, 0, 7364, 7355, 1, 0, 0, 0, 7364, 7365, 1, 0, 0, 0, 7365, 711, 1, 0, 0, 0, 7366, 7369, 5, 362, 0, 0, 7367, 7369, 3, 674, 337, 0, 7368, 7366, 1, 0, 0, 0, 7368, 7367, 1, 0, 0, 0, 7369, 7370, 1, 0, 0, 0, 7370, 7374, 7, 103, 0, 0, 7371, 7372, 5, 434, 0, 0, 7372, 7374, 5, 414, 0, 0, 7373, 7368, 1, 0, 0, 0, 7373, 7371, 1, 0, 0, 0, 7374, 713, 1, 0, 0, 0, 7375, 7383, 3, 716, 358, 0, 7376, 7377, 5, 2, 0, 0, 7377, 7378, 3, 730, 365, 0, 7378, 7379, 5, 6, 0, 0, 7379, 7380, 3, 674, 337, 0, 7380, 7381, 5, 3, 0, 0, 7381, 7383, 1, 0, 0, 0, 7382, 7375, 1, 0, 0, 0, 7382, 7376, 1, 0, 0, 0, 7383, 715, 1, 0, 0, 0, 7384, 7385, 5, 414, 0, 0, 7385, 7387, 5, 2, 0, 0, 7386, 7388, 3, 730, 365, 0, 7387, 7386, 1, 0, 0, 0, 7387, 7388, 1, 0, 0, 0, 7388, 7389, 1, 0, 0, 0, 7389, 7390, 5, 3, 0, 0, 7390, 717, 1, 0, 0, 0, 7391, 7392, 7, 104, 0, 0, 7392, 719, 1, 0, 0, 0, 7393, 7396, 5, 29, 0, 0, 7394, 7396, 3, 722, 361, 0, 7395, 7393, 1, 0, 0, 0, 7395, 7394, 1, 0, 0, 0, 7396, 721, 1, 0, 0, 0, 7397, 7398, 7, 105, 0, 0, 7398, 723, 1, 0, 0, 0, 7399, 7406, 5, 29, 0, 0, 7400, 7401, 5, 278, 0, 0, 7401, 7402, 5, 2, 0, 0, 7402, 7403, 3, 414, 207, 0, 7403, 7404, 5, 3, 0, 0, 7404, 7406, 1, 0, 0, 0, 7405, 7399, 1, 0, 0, 0, 7405, 7400, 1, 0, 0, 0, 7406, 725, 1, 0, 0, 0, 7407, 7414, 3, 720, 360, 0, 7408, 7409, 5, 278, 0, 0, 7409, 7410, 5, 2, 0, 0, 7410, 7411, 3, 414, 207, 0, 7411, 7412, 5, 3, 0, 0, 7412, 7414, 1, 0, 0, 0, 7413, 7407, 1, 0, 0, 0, 7413, 7408, 1, 0, 0, 0, 7414, 727, 1, 0, 0, 0, 7415, 7421, 3, 726, 363, 0, 7416, 7418, 5, 77, 0, 0, 7417, 7416, 1, 0, 0, 0, 7417, 7418, 1, 0, 0, 0, 7418, 7419, 1, 0, 0, 0, 7419, 7421, 7, 106, 0, 0, 7420, 7415, 1, 0, 0, 0, 7420, 7417, 1, 0, 0, 0, 7421, 729, 1, 0, 0, 0, 7422, 7427, 3, 674, 337, 0, 7423, 7424, 5, 6, 0, 0, 7424, 7426, 3, 674, 337, 0, 7425, 7423, 1, 0, 0, 0, 7426, 7429, 1, 0, 0, 0, 7427, 7425, 1, 0, 0, 0, 7427, 7428, 1, 0, 0, 0, 7428, 731, 1, 0, 0, 0, 7429, 7427, 1, 0, 0, 0, 7430, 7431, 5, 2, 0, 0, 7431, 7432, 3, 674, 337, 0, 7432, 7433, 5, 3, 0, 0, 7433, 7436, 1, 0, 0, 0, 7434, 7436, 3, 800, 400, 0, 7435, 7430, 1, 0, 0, 0, 7435, 7434, 1, 0, 0, 0, 7436, 733, 1, 0, 0, 0, 7437, 7440, 3, 674, 337, 0, 7438, 7440, 3, 800, 400, 0, 7439, 7437, 1, 0, 0, 0, 7439, 7438, 1, 0, 0, 0, 7440, 735, 1, 0, 0, 0, 7441, 7446, 3, 738, 369, 0, 7442, 7443, 5, 6, 0, 0, 7443, 7445, 3, 738, 369, 0, 7444, 7442, 1, 0, 0, 0, 7445, 7448, 1, 0, 0, 0, 7446, 7444, 1, 0, 0, 0, 7446, 7447, 1, 0, 0, 0, 7447, 737, 1, 0, 0, 0, 7448, 7446, 1, 0, 0, 0, 7449, 7455, 3, 674, 337, 0, 7450, 7451, 3, 820, 410, 0, 7451, 7452, 7, 107, 0, 0, 7452, 7453, 3, 674, 337, 0, 7453, 7455, 1, 0, 0, 0, 7454, 7449, 1, 0, 0, 0, 7454, 7450, 1, 0, 0, 0, 7455, 739, 1, 0, 0, 0, 7456, 7466, 5, 4, 0, 0, 7457, 7467, 3, 730, 365, 0, 7458, 7463, 3, 740, 370, 0, 7459, 7460, 5, 6, 0, 0, 7460, 7462, 3, 740, 370, 0, 7461, 7459, 1, 0, 0, 0, 7462, 7465, 1, 0, 0, 0, 7463, 7461, 1, 0, 0, 0, 7463, 7464, 1, 0, 0, 0, 7464, 7467, 1, 0, 0, 0, 7465, 7463, 1, 0, 0, 0, 7466, 7457, 1, 0, 0, 0, 7466, 7458, 1, 0, 0, 0, 7466, 7467, 1, 0, 0, 0, 7467, 7468, 1, 0, 0, 0, 7468, 7469, 5, 5, 0, 0, 7469, 741, 1, 0, 0, 0, 7470, 7479, 3, 826, 413, 0, 7471, 7479, 5, 384, 0, 0, 7472, 7479, 5, 264, 0, 0, 7473, 7479, 5, 176, 0, 0, 7474, 7479, 5, 218, 0, 0, 7475, 7479, 5, 261, 0, 0, 7476, 7479, 5, 326, 0, 0, 7477, 7479, 3, 808, 404, 0, 7478, 7470, 1, 0, 0, 0, 7478, 7471, 1, 0, 0, 0, 7478, 7472, 1, 0, 0, 0, 7478, 7473, 1, 0, 0, 0, 7478, 7474, 1, 0, 0, 0, 7478, 7475, 1, 0, 0, 0, 7478, 7476, 1, 0, 0, 0, 7478, 7477, 1, 0, 0, 0, 7479, 743, 1, 0, 0, 0, 7480, 7481, 7, 108, 0, 0, 7481, 745, 1, 0, 0, 0, 7482, 7483, 3, 674, 337, 0, 7483, 7484, 5, 64, 0, 0, 7484, 7487, 3, 674, 337, 0, 7485, 7486, 5, 62, 0, 0, 7486, 7488, 3, 674, 337, 0, 7487, 7485, 1, 0, 0, 0, 7487, 7488, 1, 0, 0, 0, 7488, 7504, 1, 0, 0, 0, 7489, 7490, 3, 674, 337, 0, 7490, 7491, 5, 62, 0, 0, 7491, 7494, 3, 674, 337, 0, 7492, 7493, 5, 64, 0, 0, 7493, 7495, 3, 674, 337, 0, 7494, 7492, 1, 0, 0, 0, 7494, 7495, 1, 0, 0, 0, 7495, 7504, 1, 0, 0, 0, 7496, 7497, 3, 674, 337, 0, 7497, 7498, 5, 127, 0, 0, 7498, 7499, 3, 674, 337, 0, 7499, 7500, 5, 197, 0, 0, 7500, 7501, 3, 674, 337, 0, 7501, 7504, 1, 0, 0, 0, 7502, 7504, 3, 730, 365, 0, 7503, 7482, 1, 0, 0, 0, 7503, 7489, 1, 0, 0, 0, 7503, 7496, 1, 0, 0, 0, 7503, 7502, 1, 0, 0, 0, 7504, 747, 1, 0, 0, 0, 7505, 7506, 5, 102, 0, 0, 7506, 7507, 3, 674, 337, 0, 7507, 7508, 5, 93, 0, 0, 7508, 7509, 3, 674, 337, 0, 7509, 749, 1, 0, 0, 0, 7510, 7513, 5, 11, 0, 0, 7511, 7514, 3, 824, 412, 0, 7512, 7514, 5, 9, 0, 0, 7513, 7511, 1, 0, 0, 0, 7513, 7512, 1, 0, 0, 0, 7514, 7528, 1, 0, 0, 0, 7515, 7524, 5, 4, 0, 0, 7516, 7525, 3, 674, 337, 0, 7517, 7519, 3, 674, 337, 0, 7518, 7517, 1, 0, 0, 0, 7518, 7519, 1, 0, 0, 0, 7519, 7520, 1, 0, 0, 0, 7520, 7522, 5, 8, 0, 0, 7521, 7523, 3, 674, 337, 0, 7522, 7521, 1, 0, 0, 0, 7522, 7523, 1, 0, 0, 0, 7523, 7525, 1, 0, 0, 0, 7524, 7516, 1, 0, 0, 0, 7524, 7518, 1, 0, 0, 0, 7525, 7526, 1, 0, 0, 0, 7526, 7528, 5, 5, 0, 0, 7527, 7510, 1, 0, 0, 0, 7527, 7515, 1, 0, 0, 0, 7528, 751, 1, 0, 0, 0, 7529, 7531, 3, 750, 375, 0, 7530, 7529, 1, 0, 0, 0, 7531, 7532, 1, 0, 0, 0, 7532, 7530, 1, 0, 0, 0, 7532, 7533, 1, 0, 0, 0, 7533, 753, 1, 0, 0, 0, 7534, 7536, 3, 750, 375, 0, 7535, 7534, 1, 0, 0, 0, 7536, 7539, 1, 0, 0, 0, 7537, 7535, 1, 0, 0, 0, 7537, 7538, 1, 0, 0, 0, 7538, 755, 1, 0, 0, 0, 7539, 7537, 1, 0, 0, 0, 7540, 7545, 3, 758, 379, 0, 7541, 7542, 5, 6, 0, 0, 7542, 7544, 3, 758, 379, 0, 7543, 7541, 1, 0, 0, 0, 7544, 7547, 1, 0, 0, 0, 7545, 7543, 1, 0, 0, 0, 7545, 7546, 1, 0, 0, 0, 7546, 757, 1, 0, 0, 0, 7547, 7545, 1, 0, 0, 0, 7548, 7553, 3, 734, 367, 0, 7549, 7550, 5, 36, 0, 0, 7550, 7554, 3, 824, 412, 0, 7551, 7554, 3, 826, 413, 0, 7552, 7554, 1, 0, 0, 0, 7553, 7549, 1, 0, 0, 0, 7553, 7551, 1, 0, 0, 0, 7553, 7552, 1, 0, 0, 0, 7554, 7557, 1, 0, 0, 0, 7555, 7557, 5, 9, 0, 0, 7556, 7548, 1, 0, 0, 0, 7556, 7555, 1, 0, 0, 0, 7557, 759, 1, 0, 0, 0, 7558, 7563, 3, 780, 390, 0, 7559, 7560, 5, 6, 0, 0, 7560, 7562, 3, 780, 390, 0, 7561, 7559, 1, 0, 0, 0, 7562, 7565, 1, 0, 0, 0, 7563, 7561, 1, 0, 0, 0, 7563, 7564, 1, 0, 0, 0, 7564, 761, 1, 0, 0, 0, 7565, 7563, 1, 0, 0, 0, 7566, 7571, 3, 774, 387, 0, 7567, 7568, 5, 6, 0, 0, 7568, 7570, 3, 774, 387, 0, 7569, 7567, 1, 0, 0, 0, 7570, 7573, 1, 0, 0, 0, 7571, 7569, 1, 0, 0, 0, 7571, 7572, 1, 0, 0, 0, 7572, 763, 1, 0, 0, 0, 7573, 7571, 1, 0, 0, 0, 7574, 7579, 3, 790, 395, 0, 7575, 7576, 5, 6, 0, 0, 7576, 7578, 3, 790, 395, 0, 7577, 7575, 1, 0, 0, 0, 7578, 7581, 1, 0, 0, 0, 7579, 7577, 1, 0, 0, 0, 7579, 7580, 1, 0, 0, 0, 7580, 765, 1, 0, 0, 0, 7581, 7579, 1, 0, 0, 0, 7582, 7587, 3, 788, 394, 0, 7583, 7584, 5, 6, 0, 0, 7584, 7586, 3, 788, 394, 0, 7585, 7583, 1, 0, 0, 0, 7586, 7589, 1, 0, 0, 0, 7587, 7585, 1, 0, 0, 0, 7587, 7588, 1, 0, 0, 0, 7588, 767, 1, 0, 0, 0, 7589, 7587, 1, 0, 0, 0, 7590, 7591, 3, 780, 390, 0, 7591, 769, 1, 0, 0, 0, 7592, 7593, 3, 780, 390, 0, 7593, 771, 1, 0, 0, 0, 7594, 7595, 3, 780, 390, 0, 7595, 773, 1, 0, 0, 0, 7596, 7597, 3, 780, 390, 0, 7597, 775, 1, 0, 0, 0, 7598, 7599, 3, 780, 390, 0, 7599, 777, 1, 0, 0, 0, 7600, 7601, 3, 316, 158, 0, 7601, 779, 1, 0, 0, 0, 7602, 7604, 3, 818, 409, 0, 7603, 7605, 3, 752, 376, 0, 7604, 7603, 1, 0, 0, 0, 7604, 7605, 1, 0, 0, 0, 7605, 781, 1, 0, 0, 0, 7606, 7611, 3, 770, 385, 0, 7607, 7608, 5, 6, 0, 0, 7608, 7610, 3, 770, 385, 0, 7609, 7607, 1, 0, 0, 0, 7610, 7613, 1, 0, 0, 0, 7611, 7609, 1, 0, 0, 0, 7611, 7612, 1, 0, 0, 0, 7612, 783, 1, 0, 0, 0, 7613, 7611, 1, 0, 0, 0, 7614, 7619, 3, 818, 409, 0, 7615, 7616, 5, 6, 0, 0, 7616, 7618, 3, 818, 409, 0, 7617, 7615, 1, 0, 0, 0, 7618, 7621, 1, 0, 0, 0, 7619, 7617, 1, 0, 0, 0, 7619, 7620, 1, 0, 0, 0, 7620, 785, 1, 0, 0, 0, 7621, 7619, 1, 0, 0, 0, 7622, 7623, 3, 316, 158, 0, 7623, 787, 1, 0, 0, 0, 7624, 7625, 3, 316, 158, 0, 7625, 789, 1, 0, 0, 0, 7626, 7627, 3, 316, 158, 0, 7627, 791, 1, 0, 0, 0, 7628, 7629, 3, 818, 409, 0, 7629, 793, 1, 0, 0, 0, 7630, 7631, 3, 818, 409, 0, 7631, 795, 1, 0, 0, 0, 7632, 7637, 3, 820, 410, 0, 7633, 7634, 3, 818, 409, 0, 7634, 7635, 3, 752, 376, 0, 7635, 7637, 1, 0, 0, 0, 7636, 7632, 1, 0, 0, 0, 7636, 7633, 1, 0, 0, 0, 7637, 797, 1, 0, 0, 0, 7638, 7643, 3, 820, 410, 0, 7639, 7640, 3, 818, 409, 0, 7640, 7641, 3, 752, 376, 0, 7641, 7643, 1, 0, 0, 0, 7642, 7638, 1, 0, 0, 0, 7642, 7639, 1, 0, 0, 0, 7643, 799, 1, 0, 0, 0, 7644, 7645, 3, 818, 409, 0, 7645, 7646, 3, 754, 377, 0, 7646, 7649, 1, 0, 0, 0, 7647, 7649, 4, 400, 10, 0, 7648, 7644, 1, 0, 0, 0, 7648, 7647, 1, 0, 0, 0, 7649, 801, 1, 0, 0, 0, 7650, 7651, 3, 818, 409, 0, 7651, 803, 1, 0, 0, 0, 7652, 7657, 3, 820, 410, 0, 7653, 7654, 3, 818, 409, 0, 7654, 7655, 3, 752, 376, 0, 7655, 7657, 1, 0, 0, 0, 7656, 7652, 1, 0, 0, 0, 7656, 7653, 1, 0, 0, 0, 7657, 805, 1, 0, 0, 0, 7658, 7663, 3, 820, 410, 0, 7659, 7660, 3, 818, 409, 0, 7660, 7661, 3, 752, 376, 0, 7661, 7663, 1, 0, 0, 0, 7662, 7658, 1, 0, 0, 0, 7662, 7659, 1, 0, 0, 0, 7663, 807, 1, 0, 0, 0, 7664, 7667, 3, 810, 405, 0, 7665, 7666, 5, 487, 0, 0, 7666, 7668, 3, 810, 405, 0, 7667, 7665, 1, 0, 0, 0, 7667, 7668, 1, 0, 0, 0, 7668, 809, 1, 0, 0, 0, 7669, 7681, 5, 558, 0, 0, 7670, 7681, 5, 560, 0, 0, 7671, 7675, 5, 562, 0, 0, 7672, 7674, 5, 588, 0, 0, 7673, 7672, 1, 0, 0, 0, 7674, 7677, 1, 0, 0, 0, 7675, 7673, 1, 0, 0, 0, 7675, 7676, 1, 0, 0, 0, 7676, 7678, 1, 0, 0, 0, 7677, 7675, 1, 0, 0, 0, 7678, 7681, 5, 589, 0, 0, 7679, 7681, 5, 584, 0, 0, 7680, 7669, 1, 0, 0, 0, 7680, 7670, 1, 0, 0, 0, 7680, 7671, 1, 0, 0, 0, 7680, 7679, 1, 0, 0, 0, 7681, 811, 1, 0, 0, 0, 7682, 7684, 7, 29, 0, 0, 7683, 7682, 1, 0, 0, 0, 7683, 7684, 1, 0, 0, 0, 7684, 7685, 1, 0, 0, 0, 7685, 7686, 5, 571, 0, 0, 7686, 813, 1, 0, 0, 0, 7687, 7693, 3, 822, 411, 0, 7688, 7693, 5, 52, 0, 0, 7689, 7693, 5, 49, 0, 0, 7690, 7693, 5, 89, 0, 0, 7691, 7693, 5, 524, 0, 0, 7692, 7687, 1, 0, 0, 0, 7692, 7688, 1, 0, 0, 0, 7692, 7689, 1, 0, 0, 0, 7692, 7690, 1, 0, 0, 0, 7692, 7691, 1, 0, 0, 0, 7693, 815, 1, 0, 0, 0, 7694, 7699, 3, 814, 407, 0, 7695, 7696, 5, 6, 0, 0, 7696, 7698, 3, 814, 407, 0, 7697, 7695, 1, 0, 0, 0, 7698, 7701, 1, 0, 0, 0, 7699, 7697, 1, 0, 0, 0, 7699, 7700, 1, 0, 0, 0, 7700, 817, 1, 0, 0, 0, 7701, 7699, 1, 0, 0, 0, 7702, 7705, 3, 826, 413, 0, 7703, 7705, 3, 830, 415, 0, 7704, 7702, 1, 0, 0, 0, 7704, 7703, 1, 0, 0, 0, 7705, 819, 1, 0, 0, 0, 7706, 7709, 3, 826, 413, 0, 7707, 7709, 3, 832, 416, 0, 7708, 7706, 1, 0, 0, 0, 7708, 7707, 1, 0, 0, 0, 7709, 821, 1, 0, 0, 0, 7710, 7714, 3, 826, 413, 0, 7711, 7714, 3, 830, 415, 0, 7712, 7714, 3, 832, 416, 0, 7713, 7710, 1, 0, 0, 0, 7713, 7711, 1, 0, 0, 0, 7713, 7712, 1, 0, 0, 0, 7714, 823, 1, 0, 0, 0, 7715, 7720, 3, 826, 413, 0, 7716, 7720, 3, 830, 415, 0, 7717, 7720, 3, 832, 416, 0, 7718, 7720, 3, 834, 417, 0, 7719, 7715, 1, 0, 0, 0, 7719, 7716, 1, 0, 0, 0, 7719, 7717, 1, 0, 0, 0, 7719, 7718, 1, 0, 0, 0, 7720, 825, 1, 0, 0, 0, 7721, 7724, 5, 549, 0, 0, 7722, 7723, 5, 487, 0, 0, 7723, 7725, 3, 810, 405, 0, 7724, 7722, 1, 0, 0, 0, 7724, 7725, 1, 0, 0, 0, 7725, 7733, 1, 0, 0, 0, 7726, 7733, 3, 808, 404, 0, 7727, 7733, 5, 550, 0, 0, 7728, 7733, 5, 554, 0, 0, 7729, 7733, 5, 574, 0, 0, 7730, 7733, 5, 575, 0, 0, 7731, 7733, 3, 828, 414, 0, 7732, 7721, 1, 0, 0, 0, 7732, 7726, 1, 0, 0, 0, 7732, 7727, 1, 0, 0, 0, 7732, 7728, 1, 0, 0, 0, 7732, 7729, 1, 0, 0, 0, 7732, 7730, 1, 0, 0, 0, 7732, 7731, 1, 0, 0, 0, 7733, 827, 1, 0, 0, 0, 7734, 7735, 7, 109, 0, 0, 7735, 829, 1, 0, 0, 0, 7736, 7788, 5, 387, 0, 0, 7737, 7788, 5, 388, 0, 0, 7738, 7788, 3, 662, 331, 0, 7739, 7788, 5, 390, 0, 0, 7740, 7788, 5, 391, 0, 0, 7741, 7788, 3, 664, 332, 0, 7742, 7788, 5, 393, 0, 0, 7743, 7788, 5, 394, 0, 0, 7744, 7788, 5, 395, 0, 0, 7745, 7788, 5, 396, 0, 0, 7746, 7788, 5, 397, 0, 0, 7747, 7788, 5, 398, 0, 0, 7748, 7788, 5, 399, 0, 0, 7749, 7788, 5, 470, 0, 0, 7750, 7788, 5, 400, 0, 0, 7751, 7788, 5, 401, 0, 0, 7752, 7788, 5, 402, 0, 0, 7753, 7788, 5, 403, 0, 0, 7754, 7788, 5, 404, 0, 0, 7755, 7788, 5, 405, 0, 0, 7756, 7788, 5, 406, 0, 0, 7757, 7788, 5, 407, 0, 0, 7758, 7788, 5, 489, 0, 0, 7759, 7788, 5, 408, 0, 0, 7760, 7788, 3, 658, 329, 0, 7761, 7788, 5, 453, 0, 0, 7762, 7788, 5, 410, 0, 0, 7763, 7788, 5, 411, 0, 0, 7764, 7788, 5, 412, 0, 0, 7765, 7788, 5, 413, 0, 0, 7766, 7788, 5, 414, 0, 0, 7767, 7788, 5, 415, 0, 0, 7768, 7788, 5, 416, 0, 0, 7769, 7788, 5, 417, 0, 0, 7770, 7788, 5, 418, 0, 0, 7771, 7788, 5, 419, 0, 0, 7772, 7788, 5, 420, 0, 0, 7773, 7788, 5, 421, 0, 0, 7774, 7788, 5, 422, 0, 0, 7775, 7788, 5, 423, 0, 0, 7776, 7788, 5, 424, 0, 0, 7777, 7788, 5, 425, 0, 0, 7778, 7788, 5, 426, 0, 0, 7779, 7788, 5, 427, 0, 0, 7780, 7788, 5, 428, 0, 0, 7781, 7788, 5, 476, 0, 0, 7782, 7788, 5, 429, 0, 0, 7783, 7788, 5, 430, 0, 0, 7784, 7788, 5, 431, 0, 0, 7785, 7788, 5, 432, 0, 0, 7786, 7788, 5, 474, 0, 0, 7787, 7736, 1, 0, 0, 0, 7787, 7737, 1, 0, 0, 0, 7787, 7738, 1, 0, 0, 0, 7787, 7739, 1, 0, 0, 0, 7787, 7740, 1, 0, 0, 0, 7787, 7741, 1, 0, 0, 0, 7787, 7742, 1, 0, 0, 0, 7787, 7743, 1, 0, 0, 0, 7787, 7744, 1, 0, 0, 0, 7787, 7745, 1, 0, 0, 0, 7787, 7746, 1, 0, 0, 0, 7787, 7747, 1, 0, 0, 0, 7787, 7748, 1, 0, 0, 0, 7787, 7749, 1, 0, 0, 0, 7787, 7750, 1, 0, 0, 0, 7787, 7751, 1, 0, 0, 0, 7787, 7752, 1, 0, 0, 0, 7787, 7753, 1, 0, 0, 0, 7787, 7754, 1, 0, 0, 0, 7787, 7755, 1, 0, 0, 0, 7787, 7756, 1, 0, 0, 0, 7787, 7757, 1, 0, 0, 0, 7787, 7758, 1, 0, 0, 0, 7787, 7759, 1, 0, 0, 0, 7787, 7760, 1, 0, 0, 0, 7787, 7761, 1, 0, 0, 0, 7787, 7762, 1, 0, 0, 0, 7787, 7763, 1, 0, 0, 0, 7787, 7764, 1, 0, 0, 0, 7787, 7765, 1, 0, 0, 0, 7787, 7766, 1, 0, 0, 0, 7787, 7767, 1, 0, 0, 0, 7787, 7768, 1, 0, 0, 0, 7787, 7769, 1, 0, 0, 0, 7787, 7770, 1, 0, 0, 0, 7787, 7771, 1, 0, 0, 0, 7787, 7772, 1, 0, 0, 0, 7787, 7773, 1, 0, 0, 0, 7787, 7774, 1, 0, 0, 0, 7787, 7775, 1, 0, 0, 0, 7787, 7776, 1, 0, 0, 0, 7787, 7777, 1, 0, 0, 0, 7787, 7778, 1, 0, 0, 0, 7787, 7779, 1, 0, 0, 0, 7787, 7780, 1, 0, 0, 0, 7787, 7781, 1, 0, 0, 0, 7787, 7782, 1, 0, 0, 0, 7787, 7783, 1, 0, 0, 0, 7787, 7784, 1, 0, 0, 0, 7787, 7785, 1, 0, 0, 0, 7787, 7786, 1, 0, 0, 0, 7788, 831, 1, 0, 0, 0, 7789, 7790, 7, 110, 0, 0, 7790, 833, 1, 0, 0, 0, 7791, 7792, 7, 111, 0, 0, 7792, 835, 1, 0, 0, 0, 7793, 7795, 3, 838, 419, 0, 7794, 7793, 1, 0, 0, 0, 7794, 7795, 1, 0, 0, 0, 7795, 7806, 1, 0, 0, 0, 7796, 7804, 5, 178, 0, 0, 7797, 7801, 3, 840, 420, 0, 7798, 7801, 5, 178, 0, 0, 7799, 7801, 3, 838, 419, 0, 7800, 7797, 1, 0, 0, 0, 7800, 7798, 1, 0, 0, 0, 7800, 7799, 1, 0, 0, 0, 7801, 7802, 1, 0, 0, 0, 7802, 7800, 1, 0, 0, 0, 7802, 7803, 1, 0, 0, 0, 7803, 7805, 1, 0, 0, 0, 7804, 7800, 1, 0, 0, 0, 7804, 7805, 1, 0, 0, 0, 7805, 7807, 1, 0, 0, 0, 7806, 7796, 1, 0, 0, 0, 7806, 7807, 1, 0, 0, 0, 7807, 7808, 1, 0, 0, 0, 7808, 7812, 5, 146, 0, 0, 7809, 7811, 3, 846, 423, 0, 7810, 7809, 1, 0, 0, 0, 7811, 7814, 1, 0, 0, 0, 7812, 7810, 1, 0, 0, 0, 7812, 7813, 1, 0, 0, 0, 7813, 7816, 1, 0, 0, 0, 7814, 7812, 1, 0, 0, 0, 7815, 7817, 3, 924, 462, 0, 7816, 7815, 1, 0, 0, 0, 7816, 7817, 1, 0, 0, 0, 7817, 7818, 1, 0, 0, 0, 7818, 7820, 5, 454, 0, 0, 7819, 7821, 3, 928, 464, 0, 7820, 7819, 1, 0, 0, 0, 7820, 7821, 1, 0, 0, 0, 7821, 837, 1, 0, 0, 0, 7822, 7823, 5, 18, 0, 0, 7823, 7824, 3, 928, 464, 0, 7824, 7825, 5, 19, 0, 0, 7825, 839, 1, 0, 0, 0, 7826, 7873, 3, 928, 464, 0, 7827, 7828, 5, 496, 0, 0, 7828, 7831, 5, 62, 0, 0, 7829, 7832, 5, 28, 0, 0, 7830, 7832, 3, 818, 409, 0, 7831, 7829, 1, 0, 0, 0, 7831, 7830, 1, 0, 0, 0, 7832, 7874, 1, 0, 0, 0, 7833, 7835, 5, 497, 0, 0, 7834, 7833, 1, 0, 0, 0, 7834, 7835, 1, 0, 0, 0, 7835, 7836, 1, 0, 0, 0, 7836, 7838, 3, 652, 326, 0, 7837, 7839, 3, 98, 49, 0, 7838, 7837, 1, 0, 0, 0, 7838, 7839, 1, 0, 0, 0, 7839, 7842, 1, 0, 0, 0, 7840, 7841, 5, 77, 0, 0, 7841, 7843, 5, 78, 0, 0, 7842, 7840, 1, 0, 0, 0, 7842, 7843, 1, 0, 0, 0, 7843, 7849, 1, 0, 0, 0, 7844, 7847, 3, 844, 422, 0, 7845, 7847, 5, 53, 0, 0, 7846, 7844, 1, 0, 0, 0, 7846, 7845, 1, 0, 0, 0, 7847, 7848, 1, 0, 0, 0, 7848, 7850, 3, 930, 465, 0, 7849, 7846, 1, 0, 0, 0, 7849, 7850, 1, 0, 0, 0, 7850, 7874, 1, 0, 0, 0, 7851, 7853, 5, 269, 0, 0, 7852, 7851, 1, 0, 0, 0, 7852, 7853, 1, 0, 0, 0, 7853, 7854, 1, 0, 0, 0, 7854, 7856, 5, 324, 0, 0, 7855, 7852, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7857, 1, 0, 0, 0, 7857, 7869, 5, 172, 0, 0, 7858, 7859, 5, 2, 0, 0, 7859, 7864, 3, 842, 421, 0, 7860, 7861, 5, 6, 0, 0, 7861, 7863, 3, 842, 421, 0, 7862, 7860, 1, 0, 0, 0, 7863, 7866, 1, 0, 0, 0, 7864, 7862, 1, 0, 0, 0, 7864, 7865, 1, 0, 0, 0, 7865, 7867, 1, 0, 0, 0, 7866, 7864, 1, 0, 0, 0, 7867, 7868, 5, 3, 0, 0, 7868, 7870, 1, 0, 0, 0, 7869, 7858, 1, 0, 0, 0, 7869, 7870, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7872, 7, 112, 0, 0, 7872, 7874, 3, 560, 280, 0, 7873, 7827, 1, 0, 0, 0, 7873, 7834, 1, 0, 0, 0, 7873, 7855, 1, 0, 0, 0, 7874, 7875, 1, 0, 0, 0, 7875, 7876, 5, 7, 0, 0, 7876, 841, 1, 0, 0, 0, 7877, 7878, 3, 928, 464, 0, 7878, 7879, 3, 652, 326, 0, 7879, 843, 1, 0, 0, 0, 7880, 7881, 7, 113, 0, 0, 7881, 845, 1, 0, 0, 0, 7882, 7883, 3, 836, 418, 0, 7883, 7884, 5, 7, 0, 0, 7884, 7907, 1, 0, 0, 0, 7885, 7907, 3, 874, 437, 0, 7886, 7907, 3, 876, 438, 0, 7887, 7907, 3, 852, 426, 0, 7888, 7907, 3, 860, 430, 0, 7889, 7907, 3, 864, 432, 0, 7890, 7907, 3, 866, 433, 0, 7891, 7907, 3, 870, 435, 0, 7892, 7907, 3, 872, 436, 0, 7893, 7907, 3, 880, 440, 0, 7894, 7907, 3, 884, 442, 0, 7895, 7907, 3, 886, 443, 0, 7896, 7907, 3, 848, 424, 0, 7897, 7907, 3, 850, 425, 0, 7898, 7907, 3, 854, 427, 0, 7899, 7907, 3, 890, 445, 0, 7900, 7907, 3, 894, 447, 0, 7901, 7907, 3, 898, 449, 0, 7902, 7907, 3, 914, 457, 0, 7903, 7907, 3, 916, 458, 0, 7904, 7907, 3, 918, 459, 0, 7905, 7907, 3, 920, 460, 0, 7906, 7882, 1, 0, 0, 0, 7906, 7885, 1, 0, 0, 0, 7906, 7886, 1, 0, 0, 0, 7906, 7887, 1, 0, 0, 0, 7906, 7888, 1, 0, 0, 0, 7906, 7889, 1, 0, 0, 0, 7906, 7890, 1, 0, 0, 0, 7906, 7891, 1, 0, 0, 0, 7906, 7892, 1, 0, 0, 0, 7906, 7893, 1, 0, 0, 0, 7906, 7894, 1, 0, 0, 0, 7906, 7895, 1, 0, 0, 0, 7906, 7896, 1, 0, 0, 0, 7906, 7897, 1, 0, 0, 0, 7906, 7898, 1, 0, 0, 0, 7906, 7899, 1, 0, 0, 0, 7906, 7900, 1, 0, 0, 0, 7906, 7901, 1, 0, 0, 0, 7906, 7902, 1, 0, 0, 0, 7906, 7903, 1, 0, 0, 0, 7906, 7904, 1, 0, 0, 0, 7906, 7905, 1, 0, 0, 0, 7907, 847, 1, 0, 0, 0, 7908, 7909, 5, 498, 0, 0, 7909, 7910, 3, 930, 465, 0, 7910, 7911, 5, 7, 0, 0, 7911, 849, 1, 0, 0, 0, 7912, 7913, 5, 433, 0, 0, 7913, 7920, 3, 928, 464, 0, 7914, 7916, 5, 2, 0, 0, 7915, 7917, 3, 730, 365, 0, 7916, 7915, 1, 0, 0, 0, 7916, 7917, 1, 0, 0, 0, 7917, 7918, 1, 0, 0, 0, 7918, 7919, 5, 3, 0, 0, 7919, 7921, 5, 7, 0, 0, 7920, 7914, 1, 0, 0, 0, 7920, 7921, 1, 0, 0, 0, 7921, 7932, 1, 0, 0, 0, 7922, 7923, 5, 57, 0, 0, 7923, 7924, 3, 928, 464, 0, 7924, 7926, 5, 2, 0, 0, 7925, 7927, 3, 730, 365, 0, 7926, 7925, 1, 0, 0, 0, 7926, 7927, 1, 0, 0, 0, 7927, 7928, 1, 0, 0, 0, 7928, 7929, 5, 3, 0, 0, 7929, 7930, 5, 7, 0, 0, 7930, 7932, 1, 0, 0, 0, 7931, 7912, 1, 0, 0, 0, 7931, 7922, 1, 0, 0, 0, 7932, 851, 1, 0, 0, 0, 7933, 7934, 3, 858, 429, 0, 7934, 7935, 3, 844, 422, 0, 7935, 7936, 3, 930, 465, 0, 7936, 7937, 5, 7, 0, 0, 7937, 853, 1, 0, 0, 0, 7938, 7940, 5, 499, 0, 0, 7939, 7941, 7, 114, 0, 0, 7940, 7939, 1, 0, 0, 0, 7940, 7941, 1, 0, 0, 0, 7941, 7942, 1, 0, 0, 0, 7942, 7943, 5, 500, 0, 0, 7943, 7948, 3, 856, 428, 0, 7944, 7945, 5, 6, 0, 0, 7945, 7947, 3, 856, 428, 0, 7946, 7944, 1, 0, 0, 0, 7947, 7950, 1, 0, 0, 0, 7948, 7946, 1, 0, 0, 0, 7948, 7949, 1, 0, 0, 0, 7949, 7951, 1, 0, 0, 0, 7950, 7948, 1, 0, 0, 0, 7951, 7952, 5, 7, 0, 0, 7952, 855, 1, 0, 0, 0, 7953, 7954, 3, 858, 429, 0, 7954, 7955, 3, 844, 422, 0, 7955, 7956, 3, 818, 409, 0, 7956, 857, 1, 0, 0, 0, 7957, 7960, 3, 316, 158, 0, 7958, 7960, 5, 28, 0, 0, 7959, 7957, 1, 0, 0, 0, 7959, 7958, 1, 0, 0, 0, 7960, 7967, 1, 0, 0, 0, 7961, 7962, 5, 4, 0, 0, 7962, 7963, 3, 674, 337, 0, 7963, 7964, 5, 5, 0, 0, 7964, 7966, 1, 0, 0, 0, 7965, 7961, 1, 0, 0, 0, 7966, 7969, 1, 0, 0, 0, 7967, 7965, 1, 0, 0, 0, 7967, 7968, 1, 0, 0, 0, 7968, 859, 1, 0, 0, 0, 7969, 7967, 1, 0, 0, 0, 7970, 7971, 5, 220, 0, 0, 7971, 7972, 3, 930, 465, 0, 7972, 7976, 5, 93, 0, 0, 7973, 7975, 3, 846, 423, 0, 7974, 7973, 1, 0, 0, 0, 7975, 7978, 1, 0, 0, 0, 7976, 7974, 1, 0, 0, 0, 7976, 7977, 1, 0, 0, 0, 7977, 7990, 1, 0, 0, 0, 7978, 7976, 1, 0, 0, 0, 7979, 7980, 5, 502, 0, 0, 7980, 7981, 3, 674, 337, 0, 7981, 7985, 5, 93, 0, 0, 7982, 7984, 3, 846, 423, 0, 7983, 7982, 1, 0, 0, 0, 7984, 7987, 1, 0, 0, 0, 7985, 7983, 1, 0, 0, 0, 7985, 7986, 1, 0, 0, 0, 7986, 7989, 1, 0, 0, 0, 7987, 7985, 1, 0, 0, 0, 7988, 7979, 1, 0, 0, 0, 7989, 7992, 1, 0, 0, 0, 7990, 7988, 1, 0, 0, 0, 7990, 7991, 1, 0, 0, 0, 7991, 7994, 1, 0, 0, 0, 7992, 7990, 1, 0, 0, 0, 7993, 7995, 3, 862, 431, 0, 7994, 7993, 1, 0, 0, 0, 7994, 7995, 1, 0, 0, 0, 7995, 7996, 1, 0, 0, 0, 7996, 7997, 5, 454, 0, 0, 7997, 7998, 5, 220, 0, 0, 7998, 7999, 5, 7, 0, 0, 7999, 861, 1, 0, 0, 0, 8000, 8004, 5, 58, 0, 0, 8001, 8003, 3, 846, 423, 0, 8002, 8001, 1, 0, 0, 0, 8003, 8006, 1, 0, 0, 0, 8004, 8002, 1, 0, 0, 0, 8004, 8005, 1, 0, 0, 0, 8005, 863, 1, 0, 0, 0, 8006, 8004, 1, 0, 0, 0, 8007, 8009, 5, 40, 0, 0, 8008, 8010, 3, 930, 465, 0, 8009, 8008, 1, 0, 0, 0, 8009, 8010, 1, 0, 0, 0, 8010, 8020, 1, 0, 0, 0, 8011, 8012, 5, 102, 0, 0, 8012, 8013, 3, 730, 365, 0, 8013, 8017, 5, 93, 0, 0, 8014, 8016, 3, 846, 423, 0, 8015, 8014, 1, 0, 0, 0, 8016, 8019, 1, 0, 0, 0, 8017, 8015, 1, 0, 0, 0, 8017, 8018, 1, 0, 0, 0, 8018, 8021, 1, 0, 0, 0, 8019, 8017, 1, 0, 0, 0, 8020, 8011, 1, 0, 0, 0, 8021, 8022, 1, 0, 0, 0, 8022, 8020, 1, 0, 0, 0, 8022, 8023, 1, 0, 0, 0, 8023, 8025, 1, 0, 0, 0, 8024, 8026, 3, 862, 431, 0, 8025, 8024, 1, 0, 0, 0, 8025, 8026, 1, 0, 0, 0, 8026, 8027, 1, 0, 0, 0, 8027, 8028, 5, 454, 0, 0, 8028, 8029, 5, 40, 0, 0, 8029, 8030, 5, 7, 0, 0, 8030, 865, 1, 0, 0, 0, 8031, 8033, 3, 838, 419, 0, 8032, 8031, 1, 0, 0, 0, 8032, 8033, 1, 0, 0, 0, 8033, 8038, 1, 0, 0, 0, 8034, 8035, 5, 503, 0, 0, 8035, 8039, 3, 674, 337, 0, 8036, 8037, 5, 62, 0, 0, 8037, 8039, 3, 868, 434, 0, 8038, 8034, 1, 0, 0, 0, 8038, 8036, 1, 0, 0, 0, 8038, 8039, 1, 0, 0, 0, 8039, 8040, 1, 0, 0, 0, 8040, 8041, 3, 882, 441, 0, 8041, 867, 1, 0, 0, 0, 8042, 8043, 3, 314, 157, 0, 8043, 8066, 5, 68, 0, 0, 8044, 8046, 3, 818, 409, 0, 8045, 8047, 3, 534, 267, 0, 8046, 8045, 1, 0, 0, 0, 8046, 8047, 1, 0, 0, 0, 8047, 8067, 1, 0, 0, 0, 8048, 8067, 3, 560, 280, 0, 8049, 8067, 3, 520, 260, 0, 8050, 8051, 5, 202, 0, 0, 8051, 8054, 3, 674, 337, 0, 8052, 8053, 5, 100, 0, 0, 8053, 8055, 3, 730, 365, 0, 8054, 8052, 1, 0, 0, 0, 8054, 8055, 1, 0, 0, 0, 8055, 8067, 1, 0, 0, 0, 8056, 8058, 5, 504, 0, 0, 8057, 8056, 1, 0, 0, 0, 8057, 8058, 1, 0, 0, 0, 8058, 8059, 1, 0, 0, 0, 8059, 8060, 3, 674, 337, 0, 8060, 8061, 5, 24, 0, 0, 8061, 8064, 3, 674, 337, 0, 8062, 8063, 5, 147, 0, 0, 8063, 8065, 3, 674, 337, 0, 8064, 8062, 1, 0, 0, 0, 8064, 8065, 1, 0, 0, 0, 8065, 8067, 1, 0, 0, 0, 8066, 8044, 1, 0, 0, 0, 8066, 8048, 1, 0, 0, 0, 8066, 8049, 1, 0, 0, 0, 8066, 8050, 1, 0, 0, 0, 8066, 8057, 1, 0, 0, 0, 8067, 869, 1, 0, 0, 0, 8068, 8070, 3, 838, 419, 0, 8069, 8068, 1, 0, 0, 0, 8069, 8070, 1, 0, 0, 0, 8070, 8071, 1, 0, 0, 0, 8071, 8072, 5, 505, 0, 0, 8072, 8075, 3, 314, 157, 0, 8073, 8074, 5, 506, 0, 0, 8074, 8076, 5, 571, 0, 0, 8075, 8073, 1, 0, 0, 0, 8075, 8076, 1, 0, 0, 0, 8076, 8077, 1, 0, 0, 0, 8077, 8078, 5, 68, 0, 0, 8078, 8079, 5, 35, 0, 0, 8079, 8080, 3, 674, 337, 0, 8080, 8081, 3, 882, 441, 0, 8081, 871, 1, 0, 0, 0, 8082, 8084, 7, 115, 0, 0, 8083, 8085, 3, 928, 464, 0, 8084, 8083, 1, 0, 0, 0, 8084, 8085, 1, 0, 0, 0, 8085, 8088, 1, 0, 0, 0, 8086, 8087, 5, 102, 0, 0, 8087, 8089, 3, 930, 465, 0, 8088, 8086, 1, 0, 0, 0, 8088, 8089, 1, 0, 0, 0, 8089, 8090, 1, 0, 0, 0, 8090, 8091, 5, 7, 0, 0, 8091, 873, 1, 0, 0, 0, 8092, 8107, 5, 508, 0, 0, 8093, 8094, 5, 268, 0, 0, 8094, 8108, 3, 930, 465, 0, 8095, 8102, 5, 509, 0, 0, 8096, 8097, 5, 202, 0, 0, 8097, 8098, 3, 674, 337, 0, 8098, 8099, 5, 100, 0, 0, 8099, 8100, 3, 730, 365, 0, 8100, 8103, 1, 0, 0, 0, 8101, 8103, 3, 560, 280, 0, 8102, 8096, 1, 0, 0, 0, 8102, 8101, 1, 0, 0, 0, 8103, 8108, 1, 0, 0, 0, 8104, 8106, 3, 930, 465, 0, 8105, 8104, 1, 0, 0, 0, 8105, 8106, 1, 0, 0, 0, 8106, 8108, 1, 0, 0, 0, 8107, 8093, 1, 0, 0, 0, 8107, 8095, 1, 0, 0, 0, 8107, 8105, 1, 0, 0, 0, 8108, 8109, 1, 0, 0, 0, 8109, 8110, 5, 7, 0, 0, 8110, 875, 1, 0, 0, 0, 8111, 8141, 5, 510, 0, 0, 8112, 8114, 7, 116, 0, 0, 8113, 8112, 1, 0, 0, 0, 8113, 8114, 1, 0, 0, 0, 8114, 8127, 1, 0, 0, 0, 8115, 8128, 3, 826, 413, 0, 8116, 8117, 5, 511, 0, 0, 8117, 8128, 3, 808, 404, 0, 8118, 8125, 3, 808, 404, 0, 8119, 8120, 5, 6, 0, 0, 8120, 8122, 3, 674, 337, 0, 8121, 8119, 1, 0, 0, 0, 8122, 8123, 1, 0, 0, 0, 8123, 8121, 1, 0, 0, 0, 8123, 8124, 1, 0, 0, 0, 8124, 8126, 1, 0, 0, 0, 8125, 8121, 1, 0, 0, 0, 8125, 8126, 1, 0, 0, 0, 8126, 8128, 1, 0, 0, 0, 8127, 8115, 1, 0, 0, 0, 8127, 8116, 1, 0, 0, 0, 8127, 8118, 1, 0, 0, 0, 8127, 8128, 1, 0, 0, 0, 8128, 8138, 1, 0, 0, 0, 8129, 8130, 5, 100, 0, 0, 8130, 8135, 3, 878, 439, 0, 8131, 8132, 5, 6, 0, 0, 8132, 8134, 3, 878, 439, 0, 8133, 8131, 1, 0, 0, 0, 8134, 8137, 1, 0, 0, 0, 8135, 8133, 1, 0, 0, 0, 8135, 8136, 1, 0, 0, 0, 8136, 8139, 1, 0, 0, 0, 8137, 8135, 1, 0, 0, 0, 8138, 8129, 1, 0, 0, 0, 8138, 8139, 1, 0, 0, 0, 8139, 8140, 1, 0, 0, 0, 8140, 8142, 5, 7, 0, 0, 8141, 8113, 1, 0, 0, 0, 8141, 8142, 1, 0, 0, 0, 8142, 877, 1, 0, 0, 0, 8143, 8144, 3, 826, 413, 0, 8144, 8145, 5, 10, 0, 0, 8145, 8146, 3, 674, 337, 0, 8146, 879, 1, 0, 0, 0, 8147, 8148, 5, 518, 0, 0, 8148, 8151, 3, 930, 465, 0, 8149, 8150, 5, 6, 0, 0, 8150, 8152, 3, 930, 465, 0, 8151, 8149, 1, 0, 0, 0, 8151, 8152, 1, 0, 0, 0, 8152, 8153, 1, 0, 0, 0, 8153, 8154, 5, 7, 0, 0, 8154, 881, 1, 0, 0, 0, 8155, 8159, 5, 519, 0, 0, 8156, 8158, 3, 846, 423, 0, 8157, 8156, 1, 0, 0, 0, 8158, 8161, 1, 0, 0, 0, 8159, 8157, 1, 0, 0, 0, 8159, 8160, 1, 0, 0, 0, 8160, 8162, 1, 0, 0, 0, 8161, 8159, 1, 0, 0, 0, 8162, 8163, 5, 454, 0, 0, 8163, 8165, 5, 519, 0, 0, 8164, 8166, 3, 928, 464, 0, 8165, 8164, 1, 0, 0, 0, 8165, 8166, 1, 0, 0, 0, 8166, 8167, 1, 0, 0, 0, 8167, 8168, 5, 7, 0, 0, 8168, 883, 1, 0, 0, 0, 8169, 8171, 3, 4, 2, 0, 8170, 8172, 3, 888, 444, 0, 8171, 8170, 1, 0, 0, 0, 8171, 8172, 1, 0, 0, 0, 8172, 8173, 1, 0, 0, 0, 8173, 8174, 5, 7, 0, 0, 8174, 885, 1, 0, 0, 0, 8175, 8176, 5, 202, 0, 0, 8176, 8192, 3, 674, 337, 0, 8177, 8179, 3, 888, 444, 0, 8178, 8177, 1, 0, 0, 0, 8178, 8179, 1, 0, 0, 0, 8179, 8182, 1, 0, 0, 0, 8180, 8181, 5, 100, 0, 0, 8181, 8183, 3, 730, 365, 0, 8182, 8180, 1, 0, 0, 0, 8182, 8183, 1, 0, 0, 0, 8183, 8193, 1, 0, 0, 0, 8184, 8185, 5, 100, 0, 0, 8185, 8187, 3, 730, 365, 0, 8186, 8184, 1, 0, 0, 0, 8186, 8187, 1, 0, 0, 0, 8187, 8189, 1, 0, 0, 0, 8188, 8190, 3, 888, 444, 0, 8189, 8188, 1, 0, 0, 0, 8189, 8190, 1, 0, 0, 0, 8190, 8193, 1, 0, 0, 0, 8191, 8193, 1, 0, 0, 0, 8192, 8178, 1, 0, 0, 0, 8192, 8186, 1, 0, 0, 0, 8192, 8191, 1, 0, 0, 0, 8193, 8194, 1, 0, 0, 0, 8194, 8195, 5, 7, 0, 0, 8195, 887, 1, 0, 0, 0, 8196, 8198, 5, 71, 0, 0, 8197, 8199, 5, 346, 0, 0, 8198, 8197, 1, 0, 0, 0, 8198, 8199, 1, 0, 0, 0, 8199, 8200, 1, 0, 0, 0, 8200, 8201, 3, 730, 365, 0, 8201, 889, 1, 0, 0, 0, 8202, 8234, 5, 520, 0, 0, 8203, 8208, 3, 922, 461, 0, 8204, 8206, 5, 269, 0, 0, 8205, 8204, 1, 0, 0, 0, 8205, 8206, 1, 0, 0, 0, 8206, 8207, 1, 0, 0, 0, 8207, 8209, 5, 324, 0, 0, 8208, 8205, 1, 0, 0, 0, 8208, 8209, 1, 0, 0, 0, 8209, 8210, 1, 0, 0, 0, 8210, 8218, 5, 62, 0, 0, 8211, 8219, 3, 560, 280, 0, 8212, 8213, 5, 202, 0, 0, 8213, 8216, 3, 930, 465, 0, 8214, 8215, 5, 100, 0, 0, 8215, 8217, 3, 730, 365, 0, 8216, 8214, 1, 0, 0, 0, 8216, 8217, 1, 0, 0, 0, 8217, 8219, 1, 0, 0, 0, 8218, 8211, 1, 0, 0, 0, 8218, 8212, 1, 0, 0, 0, 8219, 8235, 1, 0, 0, 0, 8220, 8232, 3, 818, 409, 0, 8221, 8222, 5, 2, 0, 0, 8222, 8227, 3, 892, 446, 0, 8223, 8224, 5, 6, 0, 0, 8224, 8226, 3, 892, 446, 0, 8225, 8223, 1, 0, 0, 0, 8226, 8229, 1, 0, 0, 0, 8227, 8225, 1, 0, 0, 0, 8227, 8228, 1, 0, 0, 0, 8228, 8230, 1, 0, 0, 0, 8229, 8227, 1, 0, 0, 0, 8230, 8231, 5, 3, 0, 0, 8231, 8233, 1, 0, 0, 0, 8232, 8221, 1, 0, 0, 0, 8232, 8233, 1, 0, 0, 0, 8233, 8235, 1, 0, 0, 0, 8234, 8203, 1, 0, 0, 0, 8234, 8220, 1, 0, 0, 0, 8235, 8236, 1, 0, 0, 0, 8236, 8237, 5, 7, 0, 0, 8237, 891, 1, 0, 0, 0, 8238, 8239, 3, 818, 409, 0, 8239, 8240, 5, 20, 0, 0, 8240, 8242, 1, 0, 0, 0, 8241, 8238, 1, 0, 0, 0, 8241, 8242, 1, 0, 0, 0, 8242, 8243, 1, 0, 0, 0, 8243, 8244, 3, 674, 337, 0, 8244, 893, 1, 0, 0, 0, 8245, 8247, 5, 61, 0, 0, 8246, 8248, 3, 896, 448, 0, 8247, 8246, 1, 0, 0, 0, 8247, 8248, 1, 0, 0, 0, 8248, 8250, 1, 0, 0, 0, 8249, 8251, 3, 332, 166, 0, 8250, 8249, 1, 0, 0, 0, 8250, 8251, 1, 0, 0, 0, 8251, 8252, 1, 0, 0, 0, 8252, 8253, 3, 922, 461, 0, 8253, 8254, 5, 71, 0, 0, 8254, 8255, 3, 730, 365, 0, 8255, 8256, 5, 7, 0, 0, 8256, 895, 1, 0, 0, 0, 8257, 8272, 5, 268, 0, 0, 8258, 8272, 5, 293, 0, 0, 8259, 8272, 5, 207, 0, 0, 8260, 8272, 5, 249, 0, 0, 8261, 8263, 7, 50, 0, 0, 8262, 8261, 1, 0, 0, 0, 8262, 8263, 1, 0, 0, 0, 8263, 8264, 1, 0, 0, 0, 8264, 8272, 3, 674, 337, 0, 8265, 8272, 5, 30, 0, 0, 8266, 8269, 7, 117, 0, 0, 8267, 8270, 3, 674, 337, 0, 8268, 8270, 5, 30, 0, 0, 8269, 8267, 1, 0, 0, 0, 8269, 8268, 1, 0, 0, 0, 8269, 8270, 1, 0, 0, 0, 8270, 8272, 1, 0, 0, 0, 8271, 8257, 1, 0, 0, 0, 8271, 8258, 1, 0, 0, 0, 8271, 8259, 1, 0, 0, 0, 8271, 8260, 1, 0, 0, 0, 8271, 8262, 1, 0, 0, 0, 8271, 8265, 1, 0, 0, 0, 8271, 8266, 1, 0, 0, 0, 8272, 897, 1, 0, 0, 0, 8273, 8275, 5, 265, 0, 0, 8274, 8276, 3, 896, 448, 0, 8275, 8274, 1, 0, 0, 0, 8275, 8276, 1, 0, 0, 0, 8276, 8277, 1, 0, 0, 0, 8277, 8278, 3, 922, 461, 0, 8278, 8279, 5, 7, 0, 0, 8279, 899, 1, 0, 0, 0, 8280, 8282, 3, 572, 286, 0, 8281, 8280, 1, 0, 0, 0, 8281, 8282, 1, 0, 0, 0, 8282, 8283, 1, 0, 0, 0, 8283, 8284, 5, 525, 0, 0, 8284, 8286, 5, 71, 0, 0, 8285, 8287, 5, 81, 0, 0, 8286, 8285, 1, 0, 0, 0, 8286, 8287, 1, 0, 0, 0, 8287, 8288, 1, 0, 0, 0, 8288, 8290, 3, 774, 387, 0, 8289, 8291, 5, 9, 0, 0, 8290, 8289, 1, 0, 0, 0, 8290, 8291, 1, 0, 0, 0, 8291, 8296, 1, 0, 0, 0, 8292, 8294, 5, 36, 0, 0, 8293, 8292, 1, 0, 0, 0, 8293, 8294, 1, 0, 0, 0, 8294, 8295, 1, 0, 0, 0, 8295, 8297, 3, 818, 409, 0, 8296, 8293, 1, 0, 0, 0, 8296, 8297, 1, 0, 0, 0, 8297, 8298, 1, 0, 0, 0, 8298, 8299, 5, 100, 0, 0, 8299, 8300, 3, 902, 451, 0, 8300, 8301, 5, 80, 0, 0, 8301, 8303, 3, 674, 337, 0, 8302, 8304, 3, 904, 452, 0, 8303, 8302, 1, 0, 0, 0, 8304, 8305, 1, 0, 0, 0, 8305, 8303, 1, 0, 0, 0, 8305, 8306, 1, 0, 0, 0, 8306, 901, 1, 0, 0, 0, 8307, 8309, 5, 81, 0, 0, 8308, 8307, 1, 0, 0, 0, 8308, 8309, 1, 0, 0, 0, 8309, 8310, 1, 0, 0, 0, 8310, 8312, 3, 774, 387, 0, 8311, 8313, 5, 9, 0, 0, 8312, 8311, 1, 0, 0, 0, 8312, 8313, 1, 0, 0, 0, 8313, 8319, 1, 0, 0, 0, 8314, 8317, 3, 564, 282, 0, 8315, 8317, 3, 608, 304, 0, 8316, 8314, 1, 0, 0, 0, 8316, 8315, 1, 0, 0, 0, 8317, 8319, 1, 0, 0, 0, 8318, 8308, 1, 0, 0, 0, 8318, 8316, 1, 0, 0, 0, 8319, 8324, 1, 0, 0, 0, 8320, 8322, 5, 36, 0, 0, 8321, 8320, 1, 0, 0, 0, 8321, 8322, 1, 0, 0, 0, 8322, 8323, 1, 0, 0, 0, 8323, 8325, 3, 818, 409, 0, 8324, 8321, 1, 0, 0, 0, 8324, 8325, 1, 0, 0, 0, 8325, 903, 1, 0, 0, 0, 8326, 8327, 5, 102, 0, 0, 8327, 8330, 5, 526, 0, 0, 8328, 8329, 5, 33, 0, 0, 8329, 8331, 3, 674, 337, 0, 8330, 8328, 1, 0, 0, 0, 8330, 8331, 1, 0, 0, 0, 8331, 8332, 1, 0, 0, 0, 8332, 8337, 5, 93, 0, 0, 8333, 8338, 3, 908, 454, 0, 8334, 8338, 5, 182, 0, 0, 8335, 8336, 5, 57, 0, 0, 8336, 8338, 5, 270, 0, 0, 8337, 8333, 1, 0, 0, 0, 8337, 8334, 1, 0, 0, 0, 8337, 8335, 1, 0, 0, 0, 8338, 8353, 1, 0, 0, 0, 8339, 8340, 5, 102, 0, 0, 8340, 8341, 5, 77, 0, 0, 8341, 8344, 5, 526, 0, 0, 8342, 8343, 5, 33, 0, 0, 8343, 8345, 3, 674, 337, 0, 8344, 8342, 1, 0, 0, 0, 8344, 8345, 1, 0, 0, 0, 8345, 8346, 1, 0, 0, 0, 8346, 8350, 5, 93, 0, 0, 8347, 8351, 3, 906, 453, 0, 8348, 8349, 5, 57, 0, 0, 8349, 8351, 5, 270, 0, 0, 8350, 8347, 1, 0, 0, 0, 8350, 8348, 1, 0, 0, 0, 8351, 8353, 1, 0, 0, 0, 8352, 8326, 1, 0, 0, 0, 8352, 8339, 1, 0, 0, 0, 8353, 905, 1, 0, 0, 0, 8354, 8356, 5, 241, 0, 0, 8355, 8357, 3, 144, 72, 0, 8356, 8355, 1, 0, 0, 0, 8356, 8357, 1, 0, 0, 0, 8357, 8361, 1, 0, 0, 0, 8358, 8359, 5, 463, 0, 0, 8359, 8360, 7, 76, 0, 0, 8360, 8362, 5, 450, 0, 0, 8361, 8358, 1, 0, 0, 0, 8361, 8362, 1, 0, 0, 0, 8362, 8363, 1, 0, 0, 0, 8363, 8364, 3, 910, 455, 0, 8364, 907, 1, 0, 0, 0, 8365, 8366, 5, 369, 0, 0, 8366, 8384, 5, 333, 0, 0, 8367, 8368, 3, 800, 400, 0, 8368, 8369, 5, 10, 0, 0, 8369, 8370, 3, 912, 456, 0, 8370, 8385, 1, 0, 0, 0, 8371, 8372, 3, 144, 72, 0, 8372, 8373, 5, 10, 0, 0, 8373, 8374, 5, 2, 0, 0, 8374, 8379, 3, 912, 456, 0, 8375, 8376, 5, 6, 0, 0, 8376, 8378, 3, 912, 456, 0, 8377, 8375, 1, 0, 0, 0, 8378, 8381, 1, 0, 0, 0, 8379, 8377, 1, 0, 0, 0, 8379, 8380, 1, 0, 0, 0, 8380, 8382, 1, 0, 0, 0, 8381, 8379, 1, 0, 0, 0, 8382, 8383, 5, 3, 0, 0, 8383, 8385, 1, 0, 0, 0, 8384, 8367, 1, 0, 0, 0, 8384, 8371, 1, 0, 0, 0, 8385, 8386, 1, 0, 0, 0, 8386, 8384, 1, 0, 0, 0, 8386, 8387, 1, 0, 0, 0, 8387, 909, 1, 0, 0, 0, 8388, 8389, 5, 422, 0, 0, 8389, 8390, 5, 2, 0, 0, 8390, 8395, 3, 912, 456, 0, 8391, 8392, 5, 6, 0, 0, 8392, 8394, 3, 912, 456, 0, 8393, 8391, 1, 0, 0, 0, 8394, 8397, 1, 0, 0, 0, 8395, 8393, 1, 0, 0, 0, 8395, 8396, 1, 0, 0, 0, 8396, 8398, 1, 0, 0, 0, 8397, 8395, 1, 0, 0, 0, 8398, 8399, 5, 3, 0, 0, 8399, 8403, 1, 0, 0, 0, 8400, 8401, 5, 53, 0, 0, 8401, 8403, 5, 422, 0, 0, 8402, 8388, 1, 0, 0, 0, 8402, 8400, 1, 0, 0, 0, 8403, 911, 1, 0, 0, 0, 8404, 8407, 3, 588, 294, 0, 8405, 8407, 5, 53, 0, 0, 8406, 8404, 1, 0, 0, 0, 8406, 8405, 1, 0, 0, 0, 8407, 913, 1, 0, 0, 0, 8408, 8409, 5, 157, 0, 0, 8409, 8410, 3, 922, 461, 0, 8410, 8411, 5, 7, 0, 0, 8411, 915, 1, 0, 0, 0, 8412, 8413, 5, 78, 0, 0, 8413, 8414, 5, 7, 0, 0, 8414, 917, 1, 0, 0, 0, 8415, 8421, 7, 67, 0, 0, 8416, 8418, 5, 33, 0, 0, 8417, 8419, 5, 269, 0, 0, 8418, 8417, 1, 0, 0, 0, 8418, 8419, 1, 0, 0, 0, 8419, 8420, 1, 0, 0, 0, 8420, 8422, 5, 153, 0, 0, 8421, 8416, 1, 0, 0, 0, 8421, 8422, 1, 0, 0, 0, 8422, 8423, 1, 0, 0, 0, 8423, 8424, 5, 7, 0, 0, 8424, 919, 1, 0, 0, 0, 8425, 8426, 5, 333, 0, 0, 8426, 8427, 3, 316, 158, 0, 8427, 8428, 5, 94, 0, 0, 8428, 8429, 5, 53, 0, 0, 8429, 8430, 5, 7, 0, 0, 8430, 8438, 1, 0, 0, 0, 8431, 8434, 5, 313, 0, 0, 8432, 8435, 3, 316, 158, 0, 8433, 8435, 5, 30, 0, 0, 8434, 8432, 1, 0, 0, 0, 8434, 8433, 1, 0, 0, 0, 8435, 8436, 1, 0, 0, 0, 8436, 8438, 5, 7, 0, 0, 8437, 8425, 1, 0, 0, 0, 8437, 8431, 1, 0, 0, 0, 8438, 921, 1, 0, 0, 0, 8439, 8442, 3, 818, 409, 0, 8440, 8442, 5, 28, 0, 0, 8441, 8439, 1, 0, 0, 0, 8441, 8440, 1, 0, 0, 0, 8442, 923, 1, 0, 0, 0, 8443, 8460, 5, 517, 0, 0, 8444, 8445, 5, 102, 0, 0, 8445, 8450, 3, 926, 463, 0, 8446, 8447, 5, 82, 0, 0, 8447, 8449, 3, 926, 463, 0, 8448, 8446, 1, 0, 0, 0, 8449, 8452, 1, 0, 0, 0, 8450, 8448, 1, 0, 0, 0, 8450, 8451, 1, 0, 0, 0, 8451, 8453, 1, 0, 0, 0, 8452, 8450, 1, 0, 0, 0, 8453, 8457, 5, 93, 0, 0, 8454, 8456, 3, 846, 423, 0, 8455, 8454, 1, 0, 0, 0, 8456, 8459, 1, 0, 0, 0, 8457, 8455, 1, 0, 0, 0, 8457, 8458, 1, 0, 0, 0, 8458, 8461, 1, 0, 0, 0, 8459, 8457, 1, 0, 0, 0, 8460, 8444, 1, 0, 0, 0, 8461, 8462, 1, 0, 0, 0, 8462, 8460, 1, 0, 0, 0, 8462, 8463, 1, 0, 0, 0, 8463, 925, 1, 0, 0, 0, 8464, 8468, 3, 928, 464, 0, 8465, 8466, 5, 511, 0, 0, 8466, 8468, 3, 808, 404, 0, 8467, 8464, 1, 0, 0, 0, 8467, 8465, 1, 0, 0, 0, 8468, 927, 1, 0, 0, 0, 8469, 8472, 3, 818, 409, 0, 8470, 8472, 3, 828, 414, 0, 8471, 8469, 1, 0, 0, 0, 8471, 8470, 1, 0, 0, 0, 8472, 929, 1, 0, 0, 0, 8473, 8475, 3, 756, 378, 0, 8474, 8473, 1, 0, 0, 0, 8474, 8475, 1, 0, 0, 0, 8475, 8477, 1, 0, 0, 0, 8476, 8478, 3, 580, 290, 0, 8477, 8476, 1, 0, 0, 0, 8477, 8478, 1, 0, 0, 0, 8478, 8480, 1, 0, 0, 0, 8479, 8481, 3, 610, 305, 0, 8480, 8479, 1, 0, 0, 0, 8480, 8481, 1, 0, 0, 0, 8481, 8483, 1, 0, 0, 0, 8482, 8484, 3, 638, 319, 0, 8483, 8482, 1, 0, 0, 0, 8483, 8484, 1, 0, 0, 0, 8484, 8486, 1, 0, 0, 0, 8485, 8487, 3, 600, 300, 0, 8486, 8485, 1, 0, 0, 0, 8486, 8487, 1, 0, 0, 0, 8487, 8490, 1, 0, 0, 0, 8488, 8489, 5, 67, 0, 0, 8489, 8491, 3, 674, 337, 0, 8490, 8488, 1, 0, 0, 0, 8490, 8491, 1, 0, 0, 0, 8491, 8493, 1, 0, 0, 0, 8492, 8494, 3, 702, 351, 0, 8493, 8492, 1, 0, 0, 0, 8493, 8494, 1, 0, 0, 0, 8494, 931, 1, 0, 0, 0, 1188, 935, 942, 1062, 1064, 1073, 1078, 1084, 1119, 1129, 1135, 1140, 1147, 1152, 1159, 1170, 1178, 1182, 1194, 1200, 1206, 1210, 1215, 1219, 1232, 1242, 1244, 1250, 1255, 1268, 1271, 1276, 1281, 1292, 1296, 1308, 1312, 1315, 1319, 1331, 1349, 1356, 1364, 1369, 1376, 1384, 1390, 1398, 1406, 1410, 1424, 1429, 1434, 1446, 1452, 1464, 1469, 1479, 1485, 1490, 1498, 1503, 1510, 1515, 1520, 1530, 1535, 1540, 1547, 1551, 1565, 1571, 1577, 1582, 1589, 1601, 1609, 1617, 1633, 1642, 1651, 1660, 1664, 1676, 1684, 1694, 1714, 1719, 1722, 1729, 1732, 1736, 1740, 1743, 1748, 1753, 1757, 1766, 1772, 1776, 1785, 1788, 1794, 1803, 1815, 1819, 1823, 1828, 1831, 1837, 1839, 1841, 1845, 1851, 1855, 1860, 1865, 1869, 1872, 1879, 1892, 1905, 1919, 1936, 1946, 1953, 1958, 1962, 1969, 1974, 1977, 1979, 1984, 1988, 1992, 1996, 2001, 2004, 2008, 2011, 2015, 2023, 2028, 2031, 2035, 2041, 2050, 2054, 2060, 2062, 2071, 2076, 2088, 2093, 2097, 2101, 2106, 2110, 2113, 2116, 2119, 2122, 2125, 2130, 2133, 2136, 2139, 2142, 2145, 2151, 2155, 2158, 2161, 2164, 2167, 2169, 2176, 2184, 2194, 2199, 2209, 2212, 2217, 2222, 2227, 2230, 2235, 2244, 2246, 2250, 2253, 2257, 2262, 2267, 2271, 2274, 2278, 2281, 2286, 2289, 2294, 2297, 2301, 2304, 2307, 2312, 2315, 2323, 2335, 2339, 2346, 2351, 2354, 2357, 2360, 2365, 2376, 2382, 2386, 2389, 2392, 2397, 2404, 2407, 2411, 2419, 2424, 2427, 2430, 2437, 2442, 2451, 2454, 2457, 2462, 2465, 2477, 2487, 2504, 2508, 2512, 2514, 2531, 2533, 2549, 2560, 2563, 2566, 2575, 2584, 2600, 2603, 2606, 2614, 2618, 2625, 2634, 2638, 2644, 2648, 2651, 2654, 2657, 2660, 2666, 2670, 2675, 2679, 2682, 2685, 2688, 2693, 2699, 2703, 2707, 2711, 2717, 2719, 2724, 2730, 2736, 2740, 2755, 2760, 2763, 2765, 2768, 2772, 2776, 2779, 2782, 2790, 2796, 2798, 2804, 2809, 2814, 2818, 2825, 2827, 2838, 2877, 2887, 2889, 2892, 2896, 2900, 2910, 2912, 2918, 2920, 2929, 2941, 2955, 2960, 2963, 2970, 2975, 2983, 2985, 2991, 2996, 3000, 3005, 3011, 3018, 3024, 3026, 3035, 3041, 3049, 3055, 3060, 3065, 3073, 3088, 3090, 3094, 3098, 3101, 3104, 3113, 3116, 3119, 3125, 3131, 3135, 3147, 3153, 3156, 3161, 3165, 3172, 3182, 3184, 3208, 3220, 3225, 3227, 3231, 3234, 3237, 3247, 3250, 3260, 3265, 3270, 3273, 3276, 3284, 3290, 3297, 3305, 3308, 3319, 3323, 3329, 3336, 3339, 3348, 3362, 3365, 3379, 3390, 3393, 3405, 3410, 3423, 3428, 3441, 3450, 3453, 3456, 3463, 3466, 3478, 3484, 3486, 3494, 3502, 3510, 3522, 3527, 3538, 3549, 3557, 3565, 3572, 3579, 3581, 3584, 3589, 3594, 3613, 3622, 3625, 3652, 3661, 3664, 3668, 3672, 3676, 3683, 3687, 3691, 3695, 3699, 3704, 3708, 3713, 3719, 3724, 3731, 3735, 3741, 3745, 3750, 3758, 3764, 3769, 3776, 3781, 3785, 3790, 3796, 3803, 3808, 3815, 3820, 3827, 3831, 3839, 3843, 3845, 3848, 3853, 3863, 3878, 3881, 3889, 3896, 3901, 3907, 3911, 3918, 3923, 3926, 3929, 3933, 3942, 3960, 3963, 3995, 4000, 4006, 4026, 4031, 4037, 4040, 4044, 4048, 4054, 4057, 4061, 4065, 4070, 4073, 4076, 4079, 4092, 4098, 4106, 4113, 4118, 4121, 4128, 4131, 4139, 4142, 4147, 4154, 4157, 4177, 4189, 4192, 4198, 4203, 4212, 4220, 4225, 4231, 4238, 4246, 4249, 4260, 4262, 4276, 4282, 4290, 4292, 4298, 4302, 4305, 4308, 4313, 4318, 4322, 4325, 4328, 4331, 4334, 4342, 4353, 4356, 4359, 4364, 4367, 4371, 4375, 4381, 4389, 4392, 4405, 4410, 4412, 4417, 4424, 4431, 4440, 4448, 4456, 4463, 4471, 4478, 4486, 4490, 4494, 4496, 4502, 4507, 4511, 4518, 4523, 4528, 4533, 4535, 4545, 4555, 4571, 4589, 4601, 4608, 4623, 4628, 4631, 4636, 4641, 4646, 4649, 4652, 4657, 4664, 4668, 4673, 4680, 4684, 4690, 4699, 4708, 4720, 4722, 4735, 4741, 4745, 4747, 4754, 4767, 4774, 4776, 4792, 4796, 4800, 4805, 4810, 4815, 4820, 4823, 4835, 4888, 4897, 4901, 4910, 4914, 4923, 4927, 4932, 4935, 4939, 4944, 4946, 4955, 4960, 4971, 4975, 4989, 4997, 5035, 5037, 5056, 5059, 5086, 5090, 5094, 5098, 5102, 5105, 5120, 5127, 5141, 5154, 5179, 5198, 5213, 5229, 5236, 5247, 5250, 5269, 5272, 5285, 5289, 5309, 5321, 5325, 5347, 5351, 5361, 5365, 5371, 5375, 5379, 5383, 5390, 5395, 5406, 5410, 5413, 5418, 5424, 5435, 5439, 5442, 5446, 5450, 5453, 5463, 5466, 5470, 5475, 5481, 5484, 5489, 5492, 5499, 5501, 5507, 5511, 5520, 5525, 5527, 5537, 5540, 5545, 5553, 5556, 5561, 5563, 5565, 5571, 5588, 5594, 5607, 5613, 5617, 5622, 5652, 5667, 5672, 5676, 5689, 5693, 5695, 5704, 5710, 5712, 5716, 5719, 5722, 5725, 5728, 5730, 5733, 5737, 5745, 5750, 5753, 5759, 5763, 5767, 5772, 5774, 5778, 5782, 5789, 5795, 5799, 5801, 5803, 5816, 5824, 5832, 5843, 5852, 5857, 5861, 5865, 5872, 5875, 5877, 5885, 5889, 5892, 5899, 5906, 5911, 5918, 5921, 5923, 5926, 5932, 5937, 5941, 5948, 5958, 5965, 5968, 5971, 5975, 5986, 5989, 5992, 5995, 5998, 6005, 6008, 6011, 6018, 6030, 6037, 6039, 6044, 6049, 6051, 6057, 6064, 6069, 6074, 6078, 6082, 6086, 6088, 6092, 6096, 6099, 6102, 6104, 6114, 6116, 6121, 6125, 6130, 6134, 6141, 6146, 6150, 6153, 6159, 6162, 6181, 6188, 6192, 6195, 6199, 6203, 6206, 6209, 6214, 6223, 6230, 6234, 6238, 6242, 6245, 6247, 6252, 6256, 6261, 6267, 6274, 6279, 6284, 6293, 6300, 6308, 6319, 6324, 6328, 6331, 6335, 6340, 6344, 6349, 6357, 6368, 6373, 6377, 6380, 6383, 6385, 6388, 6391, 6394, 6398, 6402, 6406, 6408, 6417, 6422, 6428, 6432, 6434, 6441, 6446, 6452, 6454, 6458, 6465, 6470, 6473, 6479, 6483, 6489, 6498, 6504, 6506, 6511, 6514, 6523, 6530, 6532, 6539, 6544, 6547, 6557, 6568, 6573, 6577, 6585, 6595, 6602, 6608, 6619, 6625, 6635, 6644, 6648, 6651, 6653, 6655, 6659, 6667, 6670, 6675, 6680, 6687, 6689, 6695, 6699, 6702, 6707, 6710, 6712, 6718, 6727, 6733, 6736, 6744, 6747, 6751, 6757, 6759, 6762, 6766, 6771, 6778, 6785, 6787, 6793, 6795, 6800, 6802, 6806, 6815, 6819, 6827, 6829, 6843, 6846, 6854, 6863, 6869, 6874, 6882, 6884, 6889, 6893, 6898, 6903, 6909, 6925, 6927, 6936, 6951, 6956, 6959, 6965, 6970, 6983, 6988, 6992, 6999, 7018, 7030, 7035, 7043, 7045, 7047, 7056, 7059, 7064, 7069, 7073, 7076, 7085, 7093, 7098, 7100, 7103, 7107, 7118, 7139, 7147, 7160, 7170, 7176, 7182, 7185, 7188, 7214, 7216, 7237, 7247, 7260, 7265, 7269, 7271, 7283, 7290, 7296, 7302, 7306, 7317, 7327, 7331, 7336, 7339, 7342, 7351, 7362, 7364, 7368, 7373, 7382, 7387, 7395, 7405, 7413, 7417, 7420, 7427, 7435, 7439, 7446, 7454, 7463, 7466, 7478, 7487, 7494, 7503, 7513, 7518, 7522, 7524, 7527, 7532, 7537, 7545, 7553, 7556, 7563, 7571, 7579, 7587, 7604, 7611, 7619, 7636, 7642, 7648, 7656, 7662, 7667, 7675, 7680, 7683, 7692, 7699, 7704, 7708, 7713, 7719, 7724, 7732, 7787, 7794, 7800, 7802, 7804, 7806, 7812, 7816, 7820, 7831, 7834, 7838, 7842, 7846, 7849, 7852, 7855, 7864, 7869, 7873, 7906, 7916, 7920, 7926, 7931, 7940, 7948, 7959, 7967, 7976, 7985, 7990, 7994, 8004, 8009, 8017, 8022, 8025, 8032, 8038, 8046, 8054, 8057, 8064, 8066, 8069, 8075, 8084, 8088, 8102, 8105, 8107, 8113, 8123, 8125, 8127, 8135, 8138, 8141, 8151, 8159, 8165, 8171, 8178, 8182, 8186, 8189, 8192, 8198, 8205, 8208, 8216, 8218, 8227, 8232, 8234, 8241, 8247, 8250, 8262, 8269, 8271, 8275, 8281, 8286, 8290, 8293, 8296, 8305, 8308, 8312, 8316, 8318, 8321, 8324, 8330, 8337, 8344, 8350, 8352, 8356, 8361, 8379, 8384, 8386, 8395, 8402, 8406, 8418, 8421, 8434, 8437, 8441, 8450, 8457, 8462, 8467, 8471, 8474, 8477, 8480, 8483, 8486, 8490, 8493] \ No newline at end of file diff --git a/src/lib/postgresql/PostgreSqlParser.ts b/src/lib/postgresql/PostgreSqlParser.ts index 908f2837..4b81fb75 100644 --- a/src/lib/postgresql/PostgreSqlParser.ts +++ b/src/lib/postgresql/PostgreSqlParser.ts @@ -1072,8 +1072,7 @@ export class PostgreSqlParser extends SQLParserBase { public static readonly RULE_exception_sect = 462; public static readonly RULE_proc_condition = 463; public static readonly RULE_any_identifier = 464; - public static readonly RULE_plsql_unreserved_keyword = 465; - public static readonly RULE_sql_expression = 466; + public static readonly RULE_sql_expression = 465; public static readonly literalNames = [ null, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", @@ -1421,8 +1420,7 @@ export class PostgreSqlParser extends SQLParserBase { "stmt_move", "mergestmt", "data_source", "merge_when_clause", "merge_insert", "merge_update", "default_values_or_values", "exprofdefault", "stmt_close", "stmt_null", "stmt_commit_or_rollback", "stmt_set", "cursor_variable", - "exception_sect", "proc_condition", "any_identifier", "plsql_unreserved_keyword", - "sql_expression", + "exception_sect", "proc_condition", "any_identifier", "sql_expression", ]; public get grammarFileName(): string { return "PostgreSqlParser.g4"; } @@ -1446,21 +1444,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 937; + this.state = 935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 2 || _la === 31 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 570441729) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 142606337) !== 0) || _la === 105 || _la === 129 || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 2159673601) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 100680739) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1090557953) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 679839745) !== 0) || ((((_la - 322)) & ~0x1F) === 0 && ((1 << (_la - 322)) & 272417) !== 0) || ((((_la - 358)) & ~0x1F) === 0 && ((1 << (_la - 358)) & 6401) !== 0) || ((((_la - 422)) & ~0x1F) === 0 && ((1 << (_la - 422)) & 4196353) !== 0) || _la === 454 || _la === 525 || _la === 581) { { { - this.state = 934; + this.state = 932; this.singleStmt(); } } - this.state = 939; + this.state = 937; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 940; + this.state = 938; this.match(PostgreSqlParser.EOF); } } @@ -1485,14 +1483,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 942; + this.state = 940; this.stmt(); - this.state = 944; + this.state = 942; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7) { { - this.state = 943; + this.state = 941; this.match(PostgreSqlParser.SEMI); } } @@ -1518,832 +1516,832 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 4, PostgreSqlParser.RULE_stmt); let _la: number; try { - this.state = 1066; + this.state = 1064; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 3, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 946; + this.state = 944; this.altereventtrigstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 947; + this.state = 945; this.altercollationstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 948; + this.state = 946; this.alterdatabasestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 949; + this.state = 947; this.alterdatabasesetstmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 950; + this.state = 948; this.alterdefaultprivilegesstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 951; + this.state = 949; this.alterdomainstmt(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 952; + this.state = 950; this.alterenumstmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 953; + this.state = 951; this.alterextensionstmt(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 954; + this.state = 952; this.alterextensioncontentsstmt(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 955; + this.state = 953; this.alterfdwstmt(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 956; + this.state = 954; this.alterforeignserverstmt(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 957; + this.state = 955; this.alterfunctionstmt(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 958; + this.state = 956; this.altergroupstmt(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 959; + this.state = 957; this.alterobjectdependsstmt(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 960; + this.state = 958; this.alterobjectschemastmt(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 961; + this.state = 959; this.alterownerstmt(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 962; + this.state = 960; this.alteroperatorstmt(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 963; + this.state = 961; this.altertypestmt(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 964; + this.state = 962; this.alterpolicystmt(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 965; + this.state = 963; this.alterprocedurestmt(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 966; + this.state = 964; this.alterseqstmt(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 967; + this.state = 965; this.altersystemstmt(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 968; + this.state = 966; this.altertablestmt(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 969; + this.state = 967; this.altertblspcstmt(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 970; + this.state = 968; this.altercompositetypestmt(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 971; + this.state = 969; this.alterpublicationstmt(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 972; + this.state = 970; this.alterrolesetstmt(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 973; + this.state = 971; this.alterroutinestmt(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 974; + this.state = 972; this.alterrolestmt(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 975; + this.state = 973; this.altersubscriptionstmt(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 976; + this.state = 974; this.alterstatsstmt(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 977; + this.state = 975; this.altertsconfigurationstmt(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 978; + this.state = 976; this.altertsdictionarystmt(); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 979; + this.state = 977; this.alterusermappingstmt(); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 980; + this.state = 978; this.analyzestmt(); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 981; + this.state = 979; this.callstmt(); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 982; + this.state = 980; this.checkpointstmt(); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 983; + this.state = 981; this.closeportalstmt(); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 984; + this.state = 982; this.clusterstmt(); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 985; + this.state = 983; this.commentstmt(); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 986; + this.state = 984; this.constraintssetstmt(); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 987; + this.state = 985; this.copystmt(); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 988; + this.state = 986; this.createamstmt(); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 989; + this.state = 987; this.createasstmt(); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 990; + this.state = 988; this.createassertionstmt(); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 991; + this.state = 989; this.createcaststmt(); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 992; + this.state = 990; this.createconversionstmt(); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 993; + this.state = 991; this.createdomainstmt(); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 994; + this.state = 992; this.createextensionstmt(); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 995; + this.state = 993; this.createfdwstmt(); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 996; + this.state = 994; this.createforeignserverstmt(); } break; case 52: this.enterOuterAlt(localContext, 52); { - this.state = 997; + this.state = 995; this.createforeigntablestmt(); } break; case 53: this.enterOuterAlt(localContext, 53); { - this.state = 998; + this.state = 996; this.createfunctionstmt(); } break; case 54: this.enterOuterAlt(localContext, 54); { - this.state = 999; + this.state = 997; this.creategroupstmt(); } break; case 55: this.enterOuterAlt(localContext, 55); { - this.state = 1000; + this.state = 998; this.creatematviewstmt(); } break; case 56: this.enterOuterAlt(localContext, 56); { - this.state = 1001; + this.state = 999; this.createopclassstmt(); } break; case 57: this.enterOuterAlt(localContext, 57); { - this.state = 1002; + this.state = 1000; this.createopfamilystmt(); } break; case 58: this.enterOuterAlt(localContext, 58); { - this.state = 1003; + this.state = 1001; this.createpublicationstmt(); } break; case 59: this.enterOuterAlt(localContext, 59); { - this.state = 1004; + this.state = 1002; this.alteropfamilystmt(); } break; case 60: this.enterOuterAlt(localContext, 60); { - this.state = 1005; + this.state = 1003; this.createpolicystmt(); } break; case 61: this.enterOuterAlt(localContext, 61); { - this.state = 1006; + this.state = 1004; this.createplangstmt(); } break; case 62: this.enterOuterAlt(localContext, 62); { - this.state = 1007; + this.state = 1005; this.createschemastmt(); } break; case 63: this.enterOuterAlt(localContext, 63); { - this.state = 1008; + this.state = 1006; this.createseqstmt(); } break; case 64: this.enterOuterAlt(localContext, 64); { - this.state = 1009; + this.state = 1007; this.createstmt(); } break; case 65: this.enterOuterAlt(localContext, 65); { - this.state = 1010; + this.state = 1008; this.createsubscriptionstmt(); } break; case 66: this.enterOuterAlt(localContext, 66); { - this.state = 1011; + this.state = 1009; this.createstatsstmt(); } break; case 67: this.enterOuterAlt(localContext, 67); { - this.state = 1012; + this.state = 1010; this.createtablespacestmt(); } break; case 68: this.enterOuterAlt(localContext, 68); { - this.state = 1013; + this.state = 1011; this.createtransformstmt(); } break; case 69: this.enterOuterAlt(localContext, 69); { - this.state = 1014; + this.state = 1012; this.createtrigstmt(); } break; case 70: this.enterOuterAlt(localContext, 70); { - this.state = 1015; + this.state = 1013; this.createeventtrigstmt(); } break; case 71: this.enterOuterAlt(localContext, 71); { - this.state = 1016; + this.state = 1014; this.createrolestmt(); } break; case 72: this.enterOuterAlt(localContext, 72); { - this.state = 1017; + this.state = 1015; this.createuserstmt(); } break; case 73: this.enterOuterAlt(localContext, 73); { - this.state = 1018; + this.state = 1016; this.createusermappingstmt(); } break; case 74: this.enterOuterAlt(localContext, 74); { - this.state = 1019; + this.state = 1017; this.createdbstmt(); } break; case 75: this.enterOuterAlt(localContext, 75); { - this.state = 1020; + this.state = 1018; this.deallocatestmt(); } break; case 76: this.enterOuterAlt(localContext, 76); { - this.state = 1021; + this.state = 1019; this.declarecursorstmt(); } break; case 77: this.enterOuterAlt(localContext, 77); { - this.state = 1022; + this.state = 1020; this.definestmt(); } break; case 78: this.enterOuterAlt(localContext, 78); { - this.state = 1023; + this.state = 1021; this.deletestmt(); } break; case 79: this.enterOuterAlt(localContext, 79); { - this.state = 1024; + this.state = 1022; this.discardstmt(); } break; case 80: this.enterOuterAlt(localContext, 80); { - this.state = 1025; + this.state = 1023; this.dostmt(); } break; case 81: this.enterOuterAlt(localContext, 81); { - this.state = 1026; + this.state = 1024; this.dropstmt(); } break; case 82: this.enterOuterAlt(localContext, 82); { - this.state = 1027; + this.state = 1025; this.executestmt(); } break; case 83: this.enterOuterAlt(localContext, 83); { - this.state = 1028; + this.state = 1026; this.explainstmt(); } break; case 84: this.enterOuterAlt(localContext, 84); { - this.state = 1029; + this.state = 1027; this.fetchstmt(); } break; case 85: this.enterOuterAlt(localContext, 85); { - this.state = 1030; + this.state = 1028; this.grantstmt(); } break; case 86: this.enterOuterAlt(localContext, 86); { - this.state = 1031; + this.state = 1029; this.grantrolestmt(); } break; case 87: this.enterOuterAlt(localContext, 87); { - this.state = 1032; + this.state = 1030; this.mergestmt(); } break; case 88: this.enterOuterAlt(localContext, 88); { - this.state = 1033; + this.state = 1031; this.importforeignschemastmt(); } break; case 89: this.enterOuterAlt(localContext, 89); { - this.state = 1034; + this.state = 1032; this.indexstmt(); } break; case 90: this.enterOuterAlt(localContext, 90); { - this.state = 1035; + this.state = 1033; this.insertstmt(); } break; case 91: this.enterOuterAlt(localContext, 91); { - this.state = 1036; + this.state = 1034; this.listenstmt(); } break; case 92: this.enterOuterAlt(localContext, 92); { - this.state = 1037; + this.state = 1035; this.refreshmatviewstmt(); } break; case 93: this.enterOuterAlt(localContext, 93); { - this.state = 1038; + this.state = 1036; this.loadstmt(); } break; case 94: this.enterOuterAlt(localContext, 94); { - this.state = 1039; + this.state = 1037; this.lockstmt(); } break; case 95: this.enterOuterAlt(localContext, 95); { - this.state = 1040; + this.state = 1038; this.notifystmt(); } break; case 96: this.enterOuterAlt(localContext, 96); { - this.state = 1041; + this.state = 1039; this.preparestmt(); } break; case 97: this.enterOuterAlt(localContext, 97); { - this.state = 1042; + this.state = 1040; this.reassignownedstmt(); } break; case 98: this.enterOuterAlt(localContext, 98); { - this.state = 1043; + this.state = 1041; this.reindexstmt(); } break; case 99: this.enterOuterAlt(localContext, 99); { - this.state = 1044; + this.state = 1042; this.removeaggrstmt(); } break; case 100: this.enterOuterAlt(localContext, 100); { - this.state = 1045; + this.state = 1043; this.removefuncstmt(); } break; case 101: this.enterOuterAlt(localContext, 101); { - this.state = 1046; + this.state = 1044; this.removeoperstmt(); } break; case 102: this.enterOuterAlt(localContext, 102); { - this.state = 1047; + this.state = 1045; this.renamestmt(); } break; case 103: this.enterOuterAlt(localContext, 103); { - this.state = 1048; + this.state = 1046; this.revokestmt(); } break; case 104: this.enterOuterAlt(localContext, 104); { - this.state = 1049; + this.state = 1047; this.revokerolestmt(); } break; case 105: this.enterOuterAlt(localContext, 105); { - this.state = 1050; + this.state = 1048; this.rulestmt(); } break; case 106: this.enterOuterAlt(localContext, 106); { - this.state = 1051; + this.state = 1049; this.seclabelstmt(); } break; case 107: this.enterOuterAlt(localContext, 107); { - this.state = 1052; + this.state = 1050; this.selectstmt(); } break; case 108: this.enterOuterAlt(localContext, 108); { - this.state = 1053; + this.state = 1051; this.transactionstmt(); } break; case 109: this.enterOuterAlt(localContext, 109); { - this.state = 1054; + this.state = 1052; this.truncatestmt(); } break; case 110: this.enterOuterAlt(localContext, 110); { - this.state = 1055; + this.state = 1053; this.unlistenstmt(); } break; case 111: this.enterOuterAlt(localContext, 111); { - this.state = 1056; + this.state = 1054; this.updatestmt(); } break; case 112: this.enterOuterAlt(localContext, 112); { - this.state = 1057; + this.state = 1055; this.vacuumstmt(); } break; case 113: this.enterOuterAlt(localContext, 113); { - this.state = 1058; + this.state = 1056; this.variableresetstmt(); } break; case 114: this.enterOuterAlt(localContext, 114); { - this.state = 1059; + this.state = 1057; this.variablesetstmt(); } break; case 115: this.enterOuterAlt(localContext, 115); { - this.state = 1060; + this.state = 1058; this.variableshowstmt(); } break; case 116: this.enterOuterAlt(localContext, 116); { - this.state = 1061; + this.state = 1059; this.viewstmt(); } break; case 117: this.enterOuterAlt(localContext, 117); { - this.state = 1062; + this.state = 1060; this.match(PostgreSqlParser.MetaCommand); - this.state = 1064; + this.state = 1062; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 582) { { - this.state = 1063; + this.state = 1061; this.match(PostgreSqlParser.EndMetaCommand); } } @@ -2372,9 +2370,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1068; + this.state = 1066; this.match(PostgreSqlParser.KW_CALL); - this.state = 1069; + this.state = 1067; this.func_application(); } } @@ -2399,35 +2397,35 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1071; + this.state = 1069; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1072; + this.state = 1070; this.match(PostgreSqlParser.KW_ROLE); - this.state = 1073; + this.state = 1071; this.rolespec(); - this.state = 1075; + this.state = 1073; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) { case 1: { - this.state = 1074; + this.state = 1072; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1080; + this.state = 1078; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1077; + this.state = 1075; this.createoptroleelem(); } } } - this.state = 1082; + this.state = 1080; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context); } @@ -2452,15 +2450,15 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 10, PostgreSqlParser.RULE_alteroptroleelem); let _la: number; try { - this.state = 1121; + this.state = 1119; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_PASSWORD: + switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1083; + this.state = 1081; this.match(PostgreSqlParser.KW_PASSWORD); - this.state = 1086; + this.state = 1084; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -2468,13 +2466,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1084; + this.state = 1082; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 1085; + this.state = 1083; this.match(PostgreSqlParser.KW_NULL); } break; @@ -2483,11 +2481,10 @@ export class PostgreSqlParser extends SQLParserBase { } } break; - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_UNENCRYPTED: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1088; + this.state = 1086; _la = this.tokenStream.LA(1); if(!(_la === 195 || _la === 364)) { this.errorHandler.recoverInline(this); @@ -2496,152 +2493,152 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1089; + this.state = 1087; this.match(PostgreSqlParser.KW_PASSWORD); - this.state = 1090; + this.state = 1088; this.sconst(); } break; - case PostgreSqlParser.KW_INHERIT: + case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1091; + this.state = 1089; this.match(PostgreSqlParser.KW_INHERIT); } break; - case PostgreSqlParser.KW_NOINHERIT: + case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1092; + this.state = 1090; this.match(PostgreSqlParser.KW_NOINHERIT); } break; - case PostgreSqlParser.KW_CREATEUSER: + case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1093; + this.state = 1091; this.match(PostgreSqlParser.KW_CREATEUSER); } break; - case PostgreSqlParser.KW_NOCREATEUSER: + case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1094; + this.state = 1092; this.match(PostgreSqlParser.KW_NOCREATEUSER); } break; - case PostgreSqlParser.KW_CREATEROLE: + case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1095; + this.state = 1093; this.match(PostgreSqlParser.KW_CREATEROLE); } break; - case PostgreSqlParser.KW_NOCREATEROLE: + case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1096; + this.state = 1094; this.match(PostgreSqlParser.KW_NOCREATEROLE); } break; - case PostgreSqlParser.KW_CREATEDB: + case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1097; + this.state = 1095; this.match(PostgreSqlParser.KW_CREATEDB); } break; - case PostgreSqlParser.KW_NOCREATEDB: + case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1098; + this.state = 1096; this.match(PostgreSqlParser.KW_NOCREATEDB); } break; - case PostgreSqlParser.KW_SUPERUSER: + case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1099; + this.state = 1097; this.match(PostgreSqlParser.KW_SUPERUSER); } break; - case PostgreSqlParser.KW_NOSUPERUSER: + case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1100; + this.state = 1098; this.match(PostgreSqlParser.KW_NOSUPERUSER); } break; - case PostgreSqlParser.KW_LOGIN: + case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1101; + this.state = 1099; this.match(PostgreSqlParser.KW_LOGIN); } break; - case PostgreSqlParser.KW_NOLOGIN: + case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1102; + this.state = 1100; this.match(PostgreSqlParser.KW_NOLOGIN); } break; - case PostgreSqlParser.KW_REPLICATION: + case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1103; + this.state = 1101; this.match(PostgreSqlParser.KW_REPLICATION); } break; - case PostgreSqlParser.KW_NOREPLICATION: + case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1104; + this.state = 1102; this.match(PostgreSqlParser.KW_NOREPLICATION); } break; - case PostgreSqlParser.KW_BYPASSRLS: + case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1105; + this.state = 1103; this.match(PostgreSqlParser.KW_BYPASSRLS); } break; - case PostgreSqlParser.KW_NOBYPASSRLS: + case 18: this.enterOuterAlt(localContext, 18); { - this.state = 1106; + this.state = 1104; this.match(PostgreSqlParser.KW_NOBYPASSRLS); } break; - case PostgreSqlParser.KW_CONNECTION: + case 19: this.enterOuterAlt(localContext, 19); { - this.state = 1107; + this.state = 1105; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 1108; + this.state = 1106; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 1109; + this.state = 1107; this.signediconst(); } break; - case PostgreSqlParser.KW_VALID: + case 20: this.enterOuterAlt(localContext, 20); { - this.state = 1110; + this.state = 1108; this.match(PostgreSqlParser.KW_VALID); - this.state = 1111; + this.state = 1109; this.match(PostgreSqlParser.KW_UNTIL); - this.state = 1112; + this.state = 1110; this.sconst(); } break; - case PostgreSqlParser.KW_IN: + case 21: this.enterOuterAlt(localContext, 21); { - this.state = 1113; + this.state = 1111; this.match(PostgreSqlParser.KW_IN); - this.state = 1114; + this.state = 1112; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2650,15 +2647,14 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1115; + this.state = 1113; this.name_list(); } break; - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_ROLE: + case 22: this.enterOuterAlt(localContext, 22); { - this.state = 1116; + this.state = 1114; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2667,99 +2663,26 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1117; + this.state = 1115; this.role_list(); } break; - case PostgreSqlParser.KW_ADMIN: + case 23: this.enterOuterAlt(localContext, 23); { - this.state = 1118; + this.state = 1116; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 1119; + this.state = 1117; this.name_list(); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + case 24: this.enterOuterAlt(localContext, 24); { - this.state = 1120; + this.state = 1118; this.identifier(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -2781,29 +2704,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 12, PostgreSqlParser.RULE_createoptroleelem); let _la: number; try { - this.state = 1131; + this.state = 1129; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 8, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1123; + this.state = 1121; this.alteroptroleelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1124; + this.state = 1122; this.match(PostgreSqlParser.KW_SYSID); - this.state = 1125; + this.state = 1123; this.match(PostgreSqlParser.Integral); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1126; + this.state = 1124; _la = this.tokenStream.LA(1); if(!(_la === 134 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2812,16 +2735,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1127; + this.state = 1125; this.role_list(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1128; + this.state = 1126; this.match(PostgreSqlParser.KW_IN); - this.state = 1129; + this.state = 1127; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2830,7 +2753,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1130; + this.state = 1128; this.role_list(); } break; @@ -2857,35 +2780,35 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1133; + this.state = 1131; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1134; + this.state = 1132; this.match(PostgreSqlParser.KW_USER); - this.state = 1135; + this.state = 1133; this.rolespec(); - this.state = 1137; + this.state = 1135; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: { - this.state = 1136; + this.state = 1134; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1142; + this.state = 1140; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1139; + this.state = 1137; this.createoptroleelem(); } } } - this.state = 1144; + this.state = 1142; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context); } @@ -2913,9 +2836,9 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1145; + this.state = 1143; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1146; + this.state = 1144; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2924,31 +2847,31 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1147; + this.state = 1145; this.rolespec(); - this.state = 1149; + this.state = 1147; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 11, this.context) ) { case 1: { - this.state = 1148; + this.state = 1146; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1154; + this.state = 1152; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 12, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1151; + this.state = 1149; this.alteroptroleelem(); } } } - this.state = 1156; + this.state = 1154; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 12, this.context); } @@ -2975,9 +2898,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1157; + this.state = 1155; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1158; + this.state = 1156; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2986,24 +2909,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1161; + this.state = 1159; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1159; + this.state = 1157; this.match(PostgreSqlParser.KW_ALL); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -3420,20 +3337,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1160; + this.state = 1158; this.rolespec(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1163; + this.state = 1161; this.match(PostgreSqlParser.KW_IN); - this.state = 1164; + this.state = 1162; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 1165; + this.state = 1163; this.database_name(); - this.state = 1166; + this.state = 1164; this.setresetclause(); } } @@ -3458,23 +3375,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1168; + this.state = 1166; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1169; + this.state = 1167; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 1170; + this.state = 1168; this.routine_name(); - this.state = 1172; + this.state = 1170; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 1171; + this.state = 1169; this.func_args(); } } - this.state = 1174; + this.state = 1172; this.alter_routine_cluase(); } } @@ -3498,36 +3415,36 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 1202; + this.state = 1200; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1176; + this.state = 1174; this.routine_action(); - this.state = 1180; + this.state = 1178; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1177; + this.state = 1175; this.routine_action(); } } } - this.state = 1182; + this.state = 1180; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); } - this.state = 1184; + this.state = 1182; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 16, this.context) ) { case 1: { - this.state = 1183; + this.state = 1181; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -3537,56 +3454,56 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1186; + this.state = 1184; this.match(PostgreSqlParser.KW_RENAME); - this.state = 1187; + this.state = 1185; this.match(PostgreSqlParser.KW_TO); - this.state = 1188; + this.state = 1186; this.routine_name_create(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1189; + this.state = 1187; this.match(PostgreSqlParser.KW_OWNER); - this.state = 1190; + this.state = 1188; this.match(PostgreSqlParser.KW_TO); - this.state = 1191; + this.state = 1189; this.rolespec(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1192; + this.state = 1190; this.match(PostgreSqlParser.KW_SET); - this.state = 1193; + this.state = 1191; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 1194; + this.state = 1192; this.schema_name_create(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1196; + this.state = 1194; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 1195; + this.state = 1193; this.match(PostgreSqlParser.KW_NO); } } - this.state = 1198; + this.state = 1196; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 1199; + this.state = 1197; this.match(PostgreSqlParser.KW_ON); - this.state = 1200; + this.state = 1198; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 1201; + this.state = 1199; this.colid(); } break; @@ -3611,86 +3528,86 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 24, PostgreSqlParser.RULE_routine_action); let _la: number; try { - this.state = 1246; + this.state = 1244; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1204; + this.state = 1202; this.match(PostgreSqlParser.KW_IMMUTABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1205; + this.state = 1203; this.match(PostgreSqlParser.KW_STABLE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1206; + this.state = 1204; this.match(PostgreSqlParser.KW_VOLATILE); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1208; + this.state = 1206; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 1207; + this.state = 1205; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 1210; + this.state = 1208; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1221; + this.state = 1219; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { case 1: { - this.state = 1212; + this.state = 1210; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 1211; + this.state = 1209; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 1214; + this.state = 1212; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 1215; + this.state = 1213; this.match(PostgreSqlParser.KW_INVOKER); } break; case 2: { - this.state = 1217; + this.state = 1215; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 1216; + this.state = 1214; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 1219; + this.state = 1217; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 1220; + this.state = 1218; this.match(PostgreSqlParser.KW_DEFINER); } break; @@ -3700,9 +3617,9 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1223; + this.state = 1221; this.match(PostgreSqlParser.KW_PARALLEL); - this.state = 1224; + this.state = 1222; _la = this.tokenStream.LA(1); if(!(((((_la - 529)) & ~0x1F) === 0 && ((1 << (_la - 529)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -3716,29 +3633,29 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1225; + this.state = 1223; this.match(PostgreSqlParser.KW_COST); - this.state = 1226; + this.state = 1224; this.collabel(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1227; + this.state = 1225; this.match(PostgreSqlParser.KW_ROWS); - this.state = 1228; + this.state = 1226; this.colid(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1229; + this.state = 1227; this.match(PostgreSqlParser.KW_SET); - this.state = 1230; + this.state = 1228; this.colid(); - this.state = 1231; + this.state = 1229; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -3747,18 +3664,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1234; + this.state = 1232; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 23, this.context) ) { case 1: { - this.state = 1232; + this.state = 1230; this.colid(); } break; case 2: { - this.state = 1233; + this.state = 1231; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -3768,31 +3685,25 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1236; + this.state = 1234; this.match(PostgreSqlParser.KW_SET); - this.state = 1237; + this.state = 1235; this.colid(); - this.state = 1238; + this.state = 1236; this.match(PostgreSqlParser.KW_FROM); - this.state = 1239; + this.state = 1237; this.match(PostgreSqlParser.KW_CURRENT); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1241; + this.state = 1239; this.match(PostgreSqlParser.KW_RESET); - this.state = 1244; + this.state = 1242; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -4174,6 +4085,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -4186,13 +4098,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1242; + this.state = 1240; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 1243; + this.state = 1241; this.match(PostgreSqlParser.KW_ALL); } break; @@ -4224,35 +4136,35 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1248; + this.state = 1246; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1249; + this.state = 1247; this.match(PostgreSqlParser.KW_GROUP); - this.state = 1250; + this.state = 1248; this.rolespec(); - this.state = 1252; + this.state = 1250; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { case 1: { - this.state = 1251; + this.state = 1249; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1257; + this.state = 1255; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1254; + this.state = 1252; this.createoptroleelem(); } } } - this.state = 1259; + this.state = 1257; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); } @@ -4279,13 +4191,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1260; + this.state = 1258; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1261; + this.state = 1259; this.match(PostgreSqlParser.KW_GROUP); - this.state = 1262; + this.state = 1260; this.rolespec(); - this.state = 1263; + this.state = 1261; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191)) { this.errorHandler.recoverInline(this); @@ -4294,9 +4206,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1264; + this.state = 1262; this.match(PostgreSqlParser.KW_USER); - this.state = 1265; + this.state = 1263; this.role_list(); } } @@ -4322,61 +4234,61 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1267; + this.state = 1265; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1268; + this.state = 1266; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 1270; + this.state = 1268; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { case 1: { - this.state = 1269; + this.state = 1267; this.opt_if_not_exists(); } break; } - this.state = 1278; + this.state = 1276; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { case 1: { - this.state = 1273; + this.state = 1271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 1272; + this.state = 1270; this.schema_name_create(); } } - this.state = 1275; + this.state = 1273; this.match(PostgreSqlParser.KW_AUTHORIZATION); - this.state = 1276; + this.state = 1274; this.rolespec(); } break; case 2: { - this.state = 1277; + this.state = 1275; this.schema_name_create(); } break; } - this.state = 1283; + this.state = 1281; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1280; + this.state = 1278; this.schema_stmt(); } } } - this.state = 1285; + this.state = 1283; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); } @@ -4403,7 +4315,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new SchemaNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1286; + this.state = 1284; this.any_name(); } } @@ -4425,48 +4337,48 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Schema_stmtContext(this.context, this.state); this.enterRule(localContext, 34, PostgreSqlParser.RULE_schema_stmt); try { - this.state = 1294; + this.state = 1292; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1288; + this.state = 1286; this.createstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1289; + this.state = 1287; this.indexstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1290; + this.state = 1288; this.createseqstmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1291; + this.state = 1289; this.createtrigstmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1292; + this.state = 1290; this.grantstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1293; + this.state = 1291; this.viewstmt(); } break; @@ -4493,14 +4405,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1296; + this.state = 1294; this.match(PostgreSqlParser.KW_SET); - this.state = 1298; + this.state = 1296; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { case 1: { - this.state = 1297; + this.state = 1295; _la = this.tokenStream.LA(1); if(!(_la === 254 || _la === 332)) { this.errorHandler.recoverInline(this); @@ -4512,7 +4424,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 1300; + this.state = 1298; this.set_rest(); } } @@ -4534,37 +4446,37 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Set_restContext(this.context, this.state); this.enterRule(localContext, 38, PostgreSqlParser.RULE_set_rest); try { - this.state = 1310; + this.state = 1308; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1302; + this.state = 1300; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1303; + this.state = 1301; this.transaction_mode_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1304; + this.state = 1302; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1305; + this.state = 1303; this.match(PostgreSqlParser.KW_CHARACTERISTICS); - this.state = 1306; + this.state = 1304; this.match(PostgreSqlParser.KW_AS); - this.state = 1307; + this.state = 1305; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1308; + this.state = 1306; this.transaction_mode_list(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1309; + this.state = 1307; this.set_rest_more(); } break; @@ -4591,22 +4503,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1314; + this.state = 1312; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1312; + this.state = 1310; this.match(PostgreSqlParser.KW_ALL); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -4988,6 +4894,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -5000,19 +4907,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1313; + this.state = 1311; this.var_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1317; + this.state = 1315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 94) { { - this.state = 1316; + this.state = 1314; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -5024,18 +4931,18 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 1321; + this.state = 1319; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { case 1: { - this.state = 1319; + this.state = 1317; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 2: { - this.state = 1320; + this.state = 1318; this.var_list(); } break; @@ -5060,55 +4967,55 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Set_rest_moreContext(this.context, this.state); this.enterRule(localContext, 42, PostgreSqlParser.RULE_set_rest_more); try { - this.state = 1351; + this.state = 1349; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1323; + this.state = 1321; this.match(PostgreSqlParser.KW_TIME); - this.state = 1324; + this.state = 1322; this.match(PostgreSqlParser.KW_ZONE); - this.state = 1325; + this.state = 1323; this.zone_value(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1326; + this.state = 1324; this.match(PostgreSqlParser.KW_CATALOG); - this.state = 1327; + this.state = 1325; this.sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1328; + this.state = 1326; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 1329; + this.state = 1327; this.schema_name(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1330; + this.state = 1328; this.match(PostgreSqlParser.KW_NAMES); - this.state = 1333; + this.state = 1331; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 38, this.context) ) { case 1: { - this.state = 1331; + this.state = 1329; this.sconst(); } break; case 2: { - this.state = 1332; + this.state = 1330; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -5118,60 +5025,60 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1335; + this.state = 1333; this.match(PostgreSqlParser.KW_ROLE); - this.state = 1336; + this.state = 1334; this.nonreservedword_or_sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1337; + this.state = 1335; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1338; + this.state = 1336; this.match(PostgreSqlParser.KW_AUTHORIZATION); - this.state = 1339; + this.state = 1337; this.nonreservedword_or_sconst(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1340; + this.state = 1338; this.match(PostgreSqlParser.KW_XML); - this.state = 1341; + this.state = 1339; this.match(PostgreSqlParser.KW_OPTION); - this.state = 1342; + this.state = 1340; this.document_or_content(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1343; + this.state = 1341; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1344; + this.state = 1342; this.match(PostgreSqlParser.KW_SNAPSHOT); - this.state = 1345; + this.state = 1343; this.sconst(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1346; + this.state = 1344; this.var_name(); - this.state = 1347; + this.state = 1345; this.match(PostgreSqlParser.KW_FROM); - this.state = 1348; + this.state = 1346; this.match(PostgreSqlParser.KW_CURRENT); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1350; + this.state = 1348; this.generic_set(); } break; @@ -5198,21 +5105,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1353; + this.state = 1351; this.colid(); - this.state = 1358; + this.state = 1356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11) { { { - this.state = 1354; + this.state = 1352; this.match(PostgreSqlParser.DOT); - this.state = 1355; + this.state = 1353; this.colid(); } } - this.state = 1360; + this.state = 1358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5239,21 +5146,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1361; + this.state = 1359; this.var_value(); - this.state = 1366; + this.state = 1364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1362; + this.state = 1360; this.match(PostgreSqlParser.COMMA); - this.state = 1363; + this.state = 1361; this.var_value(); } } - this.state = 1368; + this.state = 1366; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5277,17 +5184,11 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Var_valueContext(this.context, this.state); this.enterRule(localContext, 48, PostgreSqlParser.RULE_var_value); try { - this.state = 1371; + this.state = 1369; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_ON: case PostgreSqlParser.KW_TRUE: case PostgreSqlParser.KW_AUTHORIZATION: @@ -5692,6 +5593,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -5705,7 +5607,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 1369; + this.state = 1367; this.opt_boolean_or_string(); } break; @@ -5715,7 +5617,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Numeric: this.enterOuterAlt(localContext, 2); { - this.state = 1370; + this.state = 1368; this.numericonly(); } break; @@ -5742,15 +5644,15 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 50, PostgreSqlParser.RULE_iso_level); let _la: number; try { - this.state = 1378; + this.state = 1376; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_READ: this.enterOuterAlt(localContext, 1); { - this.state = 1373; + this.state = 1371; this.match(PostgreSqlParser.KW_READ); - this.state = 1374; + this.state = 1372; _la = this.tokenStream.LA(1); if(!(_la === 162 || _la === 363)) { this.errorHandler.recoverInline(this); @@ -5764,16 +5666,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_REPEATABLE: this.enterOuterAlt(localContext, 2); { - this.state = 1375; + this.state = 1373; this.match(PostgreSqlParser.KW_REPEATABLE); - this.state = 1376; + this.state = 1374; this.match(PostgreSqlParser.KW_READ); } break; case PostgreSqlParser.KW_SERIALIZABLE: this.enterOuterAlt(localContext, 3); { - this.state = 1377; + this.state = 1375; this.match(PostgreSqlParser.KW_SERIALIZABLE); } break; @@ -5799,48 +5701,48 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Opt_boolean_or_string_columnContext(this.context, this.state); this.enterRule(localContext, 52, PostgreSqlParser.RULE_opt_boolean_or_string_column); try { - this.state = 1386; + this.state = 1384; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1380; + this.state = 1378; this.match(PostgreSqlParser.KW_TRUE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1381; + this.state = 1379; this.match(PostgreSqlParser.KW_FALSE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1382; + this.state = 1380; this.match(PostgreSqlParser.KW_ON); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1383; + this.state = 1381; this.column_name(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1384; + this.state = 1382; this.type_func_name_keyword(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1385; + this.state = 1383; this.sconst(); } break; @@ -5864,37 +5766,31 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Opt_boolean_or_stringContext(this.context, this.state); this.enterRule(localContext, 54, PostgreSqlParser.RULE_opt_boolean_or_string); try { - this.state = 1392; + this.state = 1390; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TRUE: this.enterOuterAlt(localContext, 1); { - this.state = 1388; + this.state = 1386; this.match(PostgreSqlParser.KW_TRUE); } break; case PostgreSqlParser.KW_FALSE: this.enterOuterAlt(localContext, 2); { - this.state = 1389; + this.state = 1387; this.match(PostgreSqlParser.KW_FALSE); } break; case PostgreSqlParser.KW_ON: this.enterOuterAlt(localContext, 3); { - this.state = 1390; + this.state = 1388; this.match(PostgreSqlParser.KW_ON); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -6297,6 +6193,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -6310,7 +6207,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 4); { - this.state = 1391; + this.state = 1389; this.nonreservedword_or_sconst(); } break; @@ -6336,43 +6233,43 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Zone_valueContext(this.context, this.state); this.enterRule(localContext, 56, PostgreSqlParser.RULE_zone_value); try { - this.state = 1408; + this.state = 1406; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1394; + this.state = 1392; this.sconst(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1395; + this.state = 1393; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1396; + this.state = 1394; this.identifier(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1397; + this.state = 1395; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 1398; + this.state = 1396; this.sconst(); - this.state = 1400; + this.state = 1398; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 46, this.context) ) { case 1: { - this.state = 1399; + this.state = 1397; this.opt_interval(); } break; @@ -6382,25 +6279,25 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1402; + this.state = 1400; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 1403; + this.state = 1401; this.opt_float(); - this.state = 1404; + this.state = 1402; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1406; + this.state = 1404; this.numericonly(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1407; + this.state = 1405; this.match(PostgreSqlParser.KW_LOCAL); } break; @@ -6424,20 +6321,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Nonreservedword_or_sconstContext(this.context, this.state); this.enterRule(localContext, 58, PostgreSqlParser.RULE_nonreservedword_or_sconst); try { - this.state = 1412; + this.state = 1410; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1410; + this.state = 1408; this.nonreservedword(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1411; + this.state = 1409; this.sconst(); } break; @@ -6463,9 +6360,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1414; + this.state = 1412; this.match(PostgreSqlParser.KW_RESET); - this.state = 1415; + this.state = 1413; this.reset_rest(); } } @@ -6487,49 +6384,49 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Reset_restContext(this.context, this.state); this.enterRule(localContext, 62, PostgreSqlParser.RULE_reset_rest); try { - this.state = 1426; + this.state = 1424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1417; + this.state = 1415; this.match(PostgreSqlParser.KW_TIME); - this.state = 1418; + this.state = 1416; this.match(PostgreSqlParser.KW_ZONE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1419; + this.state = 1417; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1420; + this.state = 1418; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 1421; + this.state = 1419; this.match(PostgreSqlParser.KW_LEVEL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1422; + this.state = 1420; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1423; + this.state = 1421; this.match(PostgreSqlParser.KW_AUTHORIZATION); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1424; + this.state = 1422; this.match(PostgreSqlParser.KW_ALL); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1425; + this.state = 1423; this.var_name(); } break; @@ -6553,22 +6450,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new SetresetclauseContext(this.context, this.state); this.enterRule(localContext, 64, PostgreSqlParser.RULE_setresetclause); try { - this.state = 1431; + this.state = 1429; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 1428; + this.state = 1426; this.match(PostgreSqlParser.KW_SET); - this.state = 1429; + this.state = 1427; this.set_rest(); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 1430; + this.state = 1428; this.variableresetstmt(); } break; @@ -6594,22 +6491,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new FunctionsetresetclauseContext(this.context, this.state); this.enterRule(localContext, 66, PostgreSqlParser.RULE_functionsetresetclause); try { - this.state = 1436; + this.state = 1434; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 1433; + this.state = 1431; this.match(PostgreSqlParser.KW_SET); - this.state = 1434; + this.state = 1432; this.set_rest_more(); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 1435; + this.state = 1433; this.variableresetstmt(); } break; @@ -6637,46 +6534,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1438; + this.state = 1436; this.match(PostgreSqlParser.KW_SHOW); - this.state = 1448; + this.state = 1446; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) { case 1: { - this.state = 1439; + this.state = 1437; this.var_name(); } break; case 2: { - this.state = 1440; + this.state = 1438; this.match(PostgreSqlParser.KW_TIME); - this.state = 1441; + this.state = 1439; this.match(PostgreSqlParser.KW_ZONE); } break; case 3: { - this.state = 1442; + this.state = 1440; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1443; + this.state = 1441; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 1444; + this.state = 1442; this.match(PostgreSqlParser.KW_LEVEL); } break; case 4: { - this.state = 1445; + this.state = 1443; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1446; + this.state = 1444; this.match(PostgreSqlParser.KW_AUTHORIZATION); } break; case 5: { - this.state = 1447; + this.state = 1445; this.match(PostgreSqlParser.KW_ALL); } break; @@ -6704,26 +6601,20 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1450; + this.state = 1448; this.match(PostgreSqlParser.KW_SET); - this.state = 1451; + this.state = 1449; this.match(PostgreSqlParser.KW_CONSTRAINTS); - this.state = 1454; + this.state = 1452; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1452; + this.state = 1450; this.match(PostgreSqlParser.KW_ALL); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -7105,6 +6996,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -7117,14 +7009,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1453; + this.state = 1451; this.qualified_name_list(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1456; + this.state = 1454; _la = this.tokenStream.LA(1); if(!(_la === 180 || _la === 221)) { this.errorHandler.recoverInline(this); @@ -7155,7 +7047,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1458; + this.state = 1456; this.match(PostgreSqlParser.KW_CHECKPOINT); } } @@ -7180,9 +7072,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1460; + this.state = 1458; this.match(PostgreSqlParser.KW_DISCARD); - this.state = 1461; + this.state = 1459; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 288 || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 41943041) !== 0))) { this.errorHandler.recoverInline(this); @@ -7212,29 +7104,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 76, PostgreSqlParser.RULE_altertablestmt); let _la: number; try { - this.state = 1584; + this.state = 1582; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1463; + this.state = 1461; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1464; + this.state = 1462; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1466; + this.state = 1464; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { case 1: { - this.state = 1465; + this.state = 1463; this.opt_if_exists(); } break; } - this.state = 1468; + this.state = 1466; this.relation_expr(); - this.state = 1471; + this.state = 1469; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NOT: @@ -7255,14 +7147,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SET: case PostgreSqlParser.KW_VALIDATE: { - this.state = 1469; + this.state = 1467; this.alter_table_cmds(); } break; case PostgreSqlParser.KW_ATTACH: case PostgreSqlParser.KW_DETACH: { - this.state = 1470; + this.state = 1468; this.partition_cmd(); } break; @@ -7274,42 +7166,42 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1473; + this.state = 1471; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1474; + this.state = 1472; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1475; + this.state = 1473; this.match(PostgreSqlParser.KW_ALL); - this.state = 1476; + this.state = 1474; this.match(PostgreSqlParser.KW_IN); - this.state = 1477; + this.state = 1475; this.opttablespace(); - this.state = 1481; + this.state = 1479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 281) { { - this.state = 1478; + this.state = 1476; this.match(PostgreSqlParser.KW_OWNED); - this.state = 1479; + this.state = 1477; this.match(PostgreSqlParser.KW_BY); - this.state = 1480; + this.state = 1478; this.role_list(); } } - this.state = 1483; + this.state = 1481; this.match(PostgreSqlParser.KW_SET); - this.state = 1484; + this.state = 1482; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 1485; + this.state = 1483; this.tablespace_name_create(); - this.state = 1487; + this.state = 1485; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { case 1: { - this.state = 1486; + this.state = 1484; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -7319,40 +7211,40 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1489; + this.state = 1487; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1490; + this.state = 1488; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1492; + this.state = 1490; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { case 1: { - this.state = 1491; + this.state = 1489; this.opt_if_exists(); } break; } - this.state = 1494; + this.state = 1492; this.table_name(); - this.state = 1495; + this.state = 1493; this.index_partition_cmd(); - this.state = 1500; + this.state = 1498; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOR: { - this.state = 1496; + this.state = 1494; this.match(PostgreSqlParser.KW_FOR); - this.state = 1497; + this.state = 1495; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1498; + this.state = 1496; this.partition_bound_spec(); } break; case PostgreSqlParser.KW_DEFAULT: { - this.state = 1499; + this.state = 1497; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -7364,34 +7256,34 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1502; + this.state = 1500; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1503; + this.state = 1501; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1505; + this.state = 1503; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { case 1: { - this.state = 1504; + this.state = 1502; this.opt_if_exists(); } break; } - this.state = 1507; + this.state = 1505; this.table_name(); - this.state = 1508; + this.state = 1506; this.match(PostgreSqlParser.KW_DETACH); - this.state = 1509; + this.state = 1507; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 1510; + this.state = 1508; this.qualified_name(); - this.state = 1512; + this.state = 1510; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109 || _la === 532) { { - this.state = 1511; + this.state = 1509; _la = this.tokenStream.LA(1); if(!(_la === 109 || _la === 532)) { this.errorHandler.recoverInline(this); @@ -7408,23 +7300,23 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1514; + this.state = 1512; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1515; + this.state = 1513; this.match(PostgreSqlParser.KW_INDEX); - this.state = 1517; + this.state = 1515; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context) ) { case 1: { - this.state = 1516; + this.state = 1514; this.opt_if_exists(); } break; } - this.state = 1519; + this.state = 1517; this.qualified_name(); - this.state = 1522; + this.state = 1520; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NOT: @@ -7445,13 +7337,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SET: case PostgreSqlParser.KW_VALIDATE: { - this.state = 1520; + this.state = 1518; this.alter_table_cmds(); } break; case PostgreSqlParser.KW_ATTACH: { - this.state = 1521; + this.state = 1519; this.index_partition_cmd(); } break; @@ -7463,40 +7355,40 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1524; + this.state = 1522; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1525; + this.state = 1523; this.match(PostgreSqlParser.KW_INDEX); - this.state = 1526; + this.state = 1524; this.match(PostgreSqlParser.KW_ALL); - this.state = 1527; + this.state = 1525; this.match(PostgreSqlParser.KW_IN); - this.state = 1528; + this.state = 1526; this.opttablespace(); - this.state = 1532; + this.state = 1530; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 281) { { - this.state = 1529; + this.state = 1527; this.match(PostgreSqlParser.KW_OWNED); - this.state = 1530; + this.state = 1528; this.match(PostgreSqlParser.KW_BY); - this.state = 1531; + this.state = 1529; this.role_list(); } } - this.state = 1534; + this.state = 1532; this.match(PostgreSqlParser.KW_SET); - this.state = 1535; + this.state = 1533; this.opttablespace(); - this.state = 1537; + this.state = 1535; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { case 1: { - this.state = 1536; + this.state = 1534; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -7506,100 +7398,100 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1539; + this.state = 1537; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1540; + this.state = 1538; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 1542; + this.state = 1540; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { case 1: { - this.state = 1541; + this.state = 1539; this.opt_if_exists(); } break; } - this.state = 1544; + this.state = 1542; this.qualified_name(); - this.state = 1545; + this.state = 1543; this.alter_table_cmds(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1547; + this.state = 1545; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1549; + this.state = 1547; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 1548; + this.state = 1546; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 1551; + this.state = 1549; this.match(PostgreSqlParser.KW_VIEW); - this.state = 1553; + this.state = 1551; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { case 1: { - this.state = 1552; + this.state = 1550; this.opt_if_exists(); } break; } - this.state = 1555; + this.state = 1553; this.view_name(); - this.state = 1556; + this.state = 1554; this.alter_table_cmds(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1558; + this.state = 1556; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1559; + this.state = 1557; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 1560; + this.state = 1558; this.match(PostgreSqlParser.KW_VIEW); - this.state = 1561; + this.state = 1559; this.match(PostgreSqlParser.KW_ALL); - this.state = 1562; + this.state = 1560; this.match(PostgreSqlParser.KW_IN); - this.state = 1563; + this.state = 1561; this.opttablespace(); - this.state = 1567; + this.state = 1565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 281) { { - this.state = 1564; + this.state = 1562; this.match(PostgreSqlParser.KW_OWNED); - this.state = 1565; + this.state = 1563; this.match(PostgreSqlParser.KW_BY); - this.state = 1566; + this.state = 1564; this.role_list(); } } - this.state = 1569; + this.state = 1567; this.match(PostgreSqlParser.KW_SET); - this.state = 1570; + this.state = 1568; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 1571; + this.state = 1569; this.tablespace_name_create(); - this.state = 1573; + this.state = 1571; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { case 1: { - this.state = 1572; + this.state = 1570; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -7609,25 +7501,25 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1575; + this.state = 1573; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1576; + this.state = 1574; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 1577; + this.state = 1575; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1579; + this.state = 1577; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { case 1: { - this.state = 1578; + this.state = 1576; this.opt_if_exists(); } break; } - this.state = 1581; + this.state = 1579; this.relation_expr(); - this.state = 1582; + this.state = 1580; this.alter_table_cmds(); } break; @@ -7654,21 +7546,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1586; + this.state = 1584; this.alter_table_cmd(); - this.state = 1591; + this.state = 1589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1587; + this.state = 1585; this.match(PostgreSqlParser.COMMA); - this.state = 1588; + this.state = 1586; this.alter_table_cmd(); } } - this.state = 1593; + this.state = 1591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -7692,37 +7584,37 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Partition_bound_specContext(this.context, this.state); this.enterRule(localContext, 80, PostgreSqlParser.RULE_partition_bound_spec); try { - this.state = 1603; + this.state = 1601; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 1594; + this.state = 1592; this.match(PostgreSqlParser.KW_IN); - this.state = 1595; + this.state = 1593; this.execute_param_clause(); } break; case PostgreSqlParser.KW_FROM: this.enterOuterAlt(localContext, 2); { - this.state = 1596; + this.state = 1594; this.match(PostgreSqlParser.KW_FROM); - this.state = 1597; + this.state = 1595; this.partition_bound_cluase(); - this.state = 1598; + this.state = 1596; this.match(PostgreSqlParser.KW_TO); - this.state = 1599; + this.state = 1597; this.partition_bound_cluase(); } break; case PostgreSqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 1601; + this.state = 1599; this.match(PostgreSqlParser.KW_WITH); - this.state = 1602; + this.state = 1600; this.partition_with_cluase(); } break; @@ -7751,27 +7643,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1605; + this.state = 1603; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1606; + this.state = 1604; this.partition_bound_choose(); - this.state = 1611; + this.state = 1609; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1607; + this.state = 1605; this.match(PostgreSqlParser.COMMA); - this.state = 1608; + this.state = 1606; this.partition_bound_choose(); } } - this.state = 1613; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1614; + this.state = 1612; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -7793,27 +7685,27 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Partition_bound_chooseContext(this.context, this.state); this.enterRule(localContext, 84, PostgreSqlParser.RULE_partition_bound_choose); try { - this.state = 1619; + this.state = 1617; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: this.enterOuterAlt(localContext, 1); { - this.state = 1616; + this.state = 1614; this.execute_param_clause(); } break; case PostgreSqlParser.KW_MINVALUE: this.enterOuterAlt(localContext, 2); { - this.state = 1617; + this.state = 1615; this.match(PostgreSqlParser.KW_MINVALUE); } break; case PostgreSqlParser.KW_MAXVALUE: this.enterOuterAlt(localContext, 3); { - this.state = 1618; + this.state = 1616; this.match(PostgreSqlParser.KW_MAXVALUE); } break; @@ -7841,19 +7733,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1621; + this.state = 1619; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1622; + this.state = 1620; this.match(PostgreSqlParser.KW_MODULUS); - this.state = 1623; + this.state = 1621; this.numericonly(); - this.state = 1624; + this.state = 1622; this.match(PostgreSqlParser.COMMA); - this.state = 1625; + this.state = 1623; this.match(PostgreSqlParser.KW_REMAINDER); - this.state = 1626; + this.state = 1624; this.numericonly(); - this.state = 1627; + this.state = 1625; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -7875,26 +7767,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Partition_cmdContext(this.context, this.state); this.enterRule(localContext, 88, PostgreSqlParser.RULE_partition_cmd); try { - this.state = 1635; + this.state = 1633; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ATTACH: this.enterOuterAlt(localContext, 1); { - this.state = 1629; + this.state = 1627; this.index_partition_cmd(); - this.state = 1630; + this.state = 1628; this.partitionboundspec(); } break; case PostgreSqlParser.KW_DETACH: this.enterOuterAlt(localContext, 2); { - this.state = 1632; + this.state = 1630; this.match(PostgreSqlParser.KW_DETACH); - this.state = 1633; + this.state = 1631; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 1634; + this.state = 1632; this.qualified_name(); } break; @@ -7922,11 +7814,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1637; + this.state = 1635; this.match(PostgreSqlParser.KW_ATTACH); - this.state = 1638; + this.state = 1636; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 1639; + this.state = 1637; this.qualified_name(); } } @@ -7950,52 +7842,52 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 1874; + this.state = 1872; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1641; + this.state = 1639; this.match(PostgreSqlParser.KW_ADD); - this.state = 1644; + this.state = 1642; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 1642; + this.state = 1640; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1643; + this.state = 1641; this.colid(); } } - this.state = 1646; + this.state = 1644; this.constraintelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1647; + this.state = 1645; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1648; + this.state = 1646; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1649; + this.state = 1647; this.colid(); - this.state = 1653; + this.state = 1651; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 79, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1650; + this.state = 1648; this.constraintattributeElem(); } } } - this.state = 1655; + this.state = 1653; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 79, this.context); } @@ -8004,39 +7896,39 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1656; + this.state = 1654; this.match(PostgreSqlParser.KW_VALIDATE); - this.state = 1657; + this.state = 1655; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1658; + this.state = 1656; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1659; + this.state = 1657; this.match(PostgreSqlParser.KW_DROP); - this.state = 1660; + this.state = 1658; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1662; + this.state = 1660; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) { case 1: { - this.state = 1661; + this.state = 1659; this.opt_if_exists(); } break; } - this.state = 1664; + this.state = 1662; this.colid(); - this.state = 1666; + this.state = 1664; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context) ) { case 1: { - this.state = 1665; + this.state = 1663; this.opt_drop_behavior(); } break; @@ -8046,11 +7938,11 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1668; + this.state = 1666; this.match(PostgreSqlParser.KW_SET); - this.state = 1669; + this.state = 1667; this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 1670; + this.state = 1668; _la = this.tokenStream.LA(1); if(!(_la === 158 || _la === 277)) { this.errorHandler.recoverInline(this); @@ -8064,20 +7956,20 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1671; + this.state = 1669; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 1672; + this.state = 1670; this.match(PostgreSqlParser.KW_ON); - this.state = 1673; + this.state = 1671; this.colid(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1674; + this.state = 1672; this.match(PostgreSqlParser.KW_SET); - this.state = 1675; + this.state = 1673; _la = this.tokenStream.LA(1); if(!(_la === 367 || _la === 439)) { this.errorHandler.recoverInline(this); @@ -8091,14 +7983,14 @@ export class PostgreSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1676; + this.state = 1674; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 1678; + this.state = 1676; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139 || _la === 312) { { - this.state = 1677; + this.state = 1675; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -8110,39 +8002,33 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 1680; + this.state = 1678; this.match(PostgreSqlParser.KW_TRIGGER); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1681; + this.state = 1679; this.match(PostgreSqlParser.KW_DISABLE); - this.state = 1682; + this.state = 1680; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 1686; + this.state = 1684; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1683; + this.state = 1681; this.match(PostgreSqlParser.KW_ALL); } break; case PostgreSqlParser.KW_USER: { - this.state = 1684; + this.state = 1682; this.match(PostgreSqlParser.KW_USER); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -8524,6 +8410,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -8536,7 +8423,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1685; + this.state = 1683; this.colid(); } break; @@ -8548,9 +8435,9 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1688; + this.state = 1686; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 1689; + this.state = 1687; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -8559,113 +8446,113 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1690; + this.state = 1688; this.match(PostgreSqlParser.KW_RULE); - this.state = 1691; + this.state = 1689; this.colid(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1692; + this.state = 1690; this.match(PostgreSqlParser.KW_DISABLE); - this.state = 1693; + this.state = 1691; this.match(PostgreSqlParser.KW_RULE); - this.state = 1694; + this.state = 1692; this.colid(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1696; + this.state = 1694; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 1695; + this.state = 1693; this.match(PostgreSqlParser.KW_NO); } } - this.state = 1698; + this.state = 1696; this.match(PostgreSqlParser.KW_INHERIT); - this.state = 1699; + this.state = 1697; this.qualified_name(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1700; + this.state = 1698; this.match(PostgreSqlParser.KW_OF); - this.state = 1701; + this.state = 1699; this.any_name(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1702; + this.state = 1700; this.match(PostgreSqlParser.KW_NOT); - this.state = 1703; + this.state = 1701; this.match(PostgreSqlParser.KW_OF); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1704; + this.state = 1702; this.match(PostgreSqlParser.KW_OWNER); - this.state = 1705; + this.state = 1703; this.match(PostgreSqlParser.KW_TO); - this.state = 1706; + this.state = 1704; this.rolespec(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1707; + this.state = 1705; this.match(PostgreSqlParser.KW_SET); - this.state = 1708; + this.state = 1706; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 1709; + this.state = 1707; this.tablespace_name_create(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1710; + this.state = 1708; this.match(PostgreSqlParser.KW_REPLICA); - this.state = 1711; + this.state = 1709; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 1716; + this.state = 1714; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NOTHING: { - this.state = 1712; + this.state = 1710; this.match(PostgreSqlParser.KW_NOTHING); } break; case PostgreSqlParser.KW_FULL: { - this.state = 1713; + this.state = 1711; this.match(PostgreSqlParser.KW_FULL); } break; case PostgreSqlParser.KW_DEFAULT: { - this.state = 1714; + this.state = 1712; this.match(PostgreSqlParser.KW_DEFAULT); } break; case PostgreSqlParser.KW_USING: { - this.state = 1715; + this.state = 1713; this.existingindex(); } break; @@ -8677,18 +8564,18 @@ export class PostgreSqlParser extends SQLParserBase { case 18: this.enterOuterAlt(localContext, 18); { - this.state = 1724; + this.state = 1722; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ENABLE: { - this.state = 1718; + this.state = 1716; this.match(PostgreSqlParser.KW_ENABLE); } break; case PostgreSqlParser.KW_DISABLE: { - this.state = 1719; + this.state = 1717; this.match(PostgreSqlParser.KW_DISABLE); } break; @@ -8696,17 +8583,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NO: { { - this.state = 1721; + this.state = 1719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 1720; + this.state = 1718; this.match(PostgreSqlParser.KW_NO); } } - this.state = 1723; + this.state = 1721; this.match(PostgreSqlParser.KW_FORCE); } } @@ -8714,47 +8601,47 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 1726; + this.state = 1724; this.match(PostgreSqlParser.KW_ROW); - this.state = 1727; + this.state = 1725; this.match(PostgreSqlParser.KW_LEVEL); - this.state = 1728; + this.state = 1726; this.match(PostgreSqlParser.KW_SECURITY); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 1729; + this.state = 1727; this.match(PostgreSqlParser.KW_DROP); - this.state = 1731; + this.state = 1729; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 88, this.context) ) { case 1: { - this.state = 1730; + this.state = 1728; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1734; + this.state = 1732; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 89, this.context) ) { case 1: { - this.state = 1733; + this.state = 1731; this.opt_if_exists(); } break; } - this.state = 1736; + this.state = 1734; this.column_name(); - this.state = 1738; + this.state = 1736; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) { case 1: { - this.state = 1737; + this.state = 1735; this.opt_drop_behavior(); } break; @@ -8764,62 +8651,62 @@ export class PostgreSqlParser extends SQLParserBase { case 20: this.enterOuterAlt(localContext, 20); { - this.state = 1740; + this.state = 1738; this.match(PostgreSqlParser.KW_ADD); - this.state = 1742; + this.state = 1740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 44) { { - this.state = 1741; + this.state = 1739; this.match(PostgreSqlParser.KW_COLUMN); } } - this.state = 1745; + this.state = 1743; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { case 1: { - this.state = 1744; + this.state = 1742; this.opt_if_not_exists(); } break; } - this.state = 1747; + this.state = 1745; this.column_def(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 1748; + this.state = 1746; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1750; + this.state = 1748; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { case 1: { - this.state = 1749; + this.state = 1747; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1752; + this.state = 1750; this.column_name(); - this.state = 1755; + this.state = 1753; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DROP: case PostgreSqlParser.KW_SET: { - this.state = 1753; + this.state = 1751; this.alter_column_default(); } break; case PostgreSqlParser.KW_OPTIONS: { - this.state = 1754; + this.state = 1752; this.alter_generic_options(); } break; @@ -8831,21 +8718,21 @@ export class PostgreSqlParser extends SQLParserBase { case 22: this.enterOuterAlt(localContext, 22); { - this.state = 1757; + this.state = 1755; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1759; + this.state = 1757; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 95, this.context) ) { case 1: { - this.state = 1758; + this.state = 1756; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1761; + this.state = 1759; this.column_name(); - this.state = 1762; + this.state = 1760; _la = this.tokenStream.LA(1); if(!(_la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -8854,39 +8741,39 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1763; + this.state = 1761; this.match(PostgreSqlParser.KW_NOT); - this.state = 1764; + this.state = 1762; this.match(PostgreSqlParser.KW_NULL); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 1766; + this.state = 1764; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1768; + this.state = 1766; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { case 1: { - this.state = 1767; + this.state = 1765; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1770; + this.state = 1768; this.column_name(); - this.state = 1771; + this.state = 1769; this.match(PostgreSqlParser.KW_DROP); - this.state = 1772; + this.state = 1770; this.match(PostgreSqlParser.KW_EXPRESSION); - this.state = 1774; + this.state = 1772; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 97, this.context) ) { case 1: { - this.state = 1773; + this.state = 1771; this.opt_if_exists(); } break; @@ -8896,54 +8783,54 @@ export class PostgreSqlParser extends SQLParserBase { case 24: this.enterOuterAlt(localContext, 24); { - this.state = 1776; + this.state = 1774; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1778; + this.state = 1776; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 98, this.context) ) { case 1: { - this.state = 1777; + this.state = 1775; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1780; + this.state = 1778; this.column_name(); - this.state = 1781; + this.state = 1779; this.match(PostgreSqlParser.KW_SET); - this.state = 1782; + this.state = 1780; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 1783; + this.state = 1781; this.signediconst(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 1790; + this.state = 1788; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 138) { { - this.state = 1785; + this.state = 1783; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1787; + this.state = 1785; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 99, this.context) ) { case 1: { - this.state = 1786; + this.state = 1784; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1789; + this.state = 1787; this.column_name(); } } - this.state = 1792; + this.state = 1790; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -8952,84 +8839,84 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1793; + this.state = 1791; this.reloptions(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 1794; + this.state = 1792; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1796; + this.state = 1794; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 101, this.context) ) { case 1: { - this.state = 1795; + this.state = 1793; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1798; + this.state = 1796; this.column_name(); - this.state = 1799; + this.state = 1797; this.match(PostgreSqlParser.KW_SET); - this.state = 1800; + this.state = 1798; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 1801; + this.state = 1799; this.colid(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 1803; + this.state = 1801; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1805; + this.state = 1803; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { case 1: { - this.state = 1804; + this.state = 1802; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1807; + this.state = 1805; this.column_name(); - this.state = 1808; + this.state = 1806; this.match(PostgreSqlParser.KW_ADD); - this.state = 1809; + this.state = 1807; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 1810; + this.state = 1808; this.generated_when(); - this.state = 1811; + this.state = 1809; this.match(PostgreSqlParser.KW_AS); - this.state = 1812; + this.state = 1810; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 1821; + this.state = 1819; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 104, this.context) ) { case 1: { - this.state = 1813; + this.state = 1811; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1815; + this.state = 1813; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1814; + this.state = 1812; this.seqoptelem(); } } - this.state = 1817; + this.state = 1815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 36 || _la === 148 || _la === 225 || ((((_la - 260)) & ~0x1F) === 0 && ((1 << (_la - 260)) & 2097669) !== 0) || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67125249) !== 0)); - this.state = 1819; + this.state = 1817; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -9039,50 +8926,50 @@ export class PostgreSqlParser extends SQLParserBase { case 28: this.enterOuterAlt(localContext, 28); { - this.state = 1823; + this.state = 1821; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1825; + this.state = 1823; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 105, this.context) ) { case 1: { - this.state = 1824; + this.state = 1822; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1827; + this.state = 1825; this.column_name(); - this.state = 1841; + this.state = 1839; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 1841; + this.state = 1839; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_RESTART: { - this.state = 1828; + this.state = 1826; this.match(PostgreSqlParser.KW_RESTART); - this.state = 1833; + this.state = 1831; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 107, this.context) ) { case 1: { - this.state = 1830; + this.state = 1828; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 1829; + this.state = 1827; this.match(PostgreSqlParser.KW_WITH); } } - this.state = 1832; + this.state = 1830; this.numericonly(); } break; @@ -9091,9 +8978,9 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_SET: { - this.state = 1835; + this.state = 1833; this.match(PostgreSqlParser.KW_SET); - this.state = 1839; + this.state = 1837; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: @@ -9107,15 +8994,15 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SEQUENCE: case PostgreSqlParser.KW_START: { - this.state = 1836; + this.state = 1834; this.seqoptelem(); } break; case PostgreSqlParser.KW_GENERATED: { - this.state = 1837; + this.state = 1835; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 1838; + this.state = 1836; this.generated_when(); } break; @@ -9132,7 +9019,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 1843; + this.state = 1841; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 110, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -9141,30 +9028,30 @@ export class PostgreSqlParser extends SQLParserBase { case 29: this.enterOuterAlt(localContext, 29); { - this.state = 1845; + this.state = 1843; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1847; + this.state = 1845; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { case 1: { - this.state = 1846; + this.state = 1844; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1849; + this.state = 1847; this.column_name(); - this.state = 1850; + this.state = 1848; this.match(PostgreSqlParser.KW_DROP); - this.state = 1851; + this.state = 1849; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 1853; + this.state = 1851; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 112, this.context) ) { case 1: { - this.state = 1852; + this.state = 1850; this.opt_if_exists(); } break; @@ -9174,54 +9061,54 @@ export class PostgreSqlParser extends SQLParserBase { case 30: this.enterOuterAlt(localContext, 30); { - this.state = 1855; + this.state = 1853; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1857; + this.state = 1855; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 113, this.context) ) { case 1: { - this.state = 1856; + this.state = 1854; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1859; + this.state = 1857; this.column_name(); - this.state = 1862; + this.state = 1860; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 1860; + this.state = 1858; this.match(PostgreSqlParser.KW_SET); - this.state = 1861; + this.state = 1859; this.match(PostgreSqlParser.KW_DATA); } } - this.state = 1864; + this.state = 1862; this.match(PostgreSqlParser.KW_TYPE); - this.state = 1865; + this.state = 1863; this.typename(); - this.state = 1867; + this.state = 1865; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 115, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 1866; + this.state = 1864; this.opt_collate_clause(); } - break; } - this.state = 1871; + + this.state = 1869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 1869; + this.state = 1867; this.match(PostgreSqlParser.KW_USING); - this.state = 1870; + this.state = 1868; this.expression(); } } @@ -9231,7 +9118,7 @@ export class PostgreSqlParser extends SQLParserBase { case 31: this.enterOuterAlt(localContext, 31); { - this.state = 1873; + this.state = 1871; this.alter_generic_options(); } break; @@ -9255,26 +9142,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Alter_column_defaultContext(this.context, this.state); this.enterRule(localContext, 94, PostgreSqlParser.RULE_alter_column_default); try { - this.state = 1881; + this.state = 1879; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 1876; + this.state = 1874; this.match(PostgreSqlParser.KW_SET); - this.state = 1877; + this.state = 1875; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 1878; + this.state = 1876; this.expression(); } break; case PostgreSqlParser.KW_DROP: this.enterOuterAlt(localContext, 2); { - this.state = 1879; + this.state = 1877; this.match(PostgreSqlParser.KW_DROP); - this.state = 1880; + this.state = 1878; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -9303,7 +9190,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1883; + this.state = 1881; _la = this.tokenStream.LA(1); if(!(_la === 150 || _la === 315)) { this.errorHandler.recoverInline(this); @@ -9334,9 +9221,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1885; + this.state = 1883; this.match(PostgreSqlParser.KW_COLLATE); - this.state = 1886; + this.state = 1884; this.any_name(); } } @@ -9361,27 +9248,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1888; + this.state = 1886; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1889; + this.state = 1887; this.reloption_elem(); - this.state = 1894; + this.state = 1892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1890; + this.state = 1888; this.match(PostgreSqlParser.COMMA); - this.state = 1891; + this.state = 1889; this.reloption_elem(); } } - this.state = 1896; + this.state = 1894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1897; + this.state = 1895; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -9405,9 +9292,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1899; + this.state = 1897; this.match(PostgreSqlParser.KW_WITH); - this.state = 1900; + this.state = 1898; this.reloptions(); } } @@ -9431,24 +9318,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1902; + this.state = 1900; this.collabel(); - this.state = 1907; + this.state = 1905; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.EQUAL: { - this.state = 1903; + this.state = 1901; this.match(PostgreSqlParser.EQUAL); - this.state = 1904; + this.state = 1902; this.def_arg(); } break; case PostgreSqlParser.DOT: { - this.state = 1905; + this.state = 1903; this.match(PostgreSqlParser.DOT); - this.state = 1906; + this.state = 1904; this.def_elem(); } break; @@ -9479,82 +9366,82 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 106, PostgreSqlParser.RULE_partitionboundspec); let _la: number; try { - this.state = 1938; + this.state = 1936; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1909; + this.state = 1907; this.match(PostgreSqlParser.KW_FOR); - this.state = 1910; + this.state = 1908; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1911; + this.state = 1909; this.match(PostgreSqlParser.KW_WITH); - this.state = 1912; + this.state = 1910; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1913; + this.state = 1911; this.nonreservedword(); - this.state = 1914; + this.state = 1912; this.match(PostgreSqlParser.Integral); - this.state = 1921; + this.state = 1919; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1915; + this.state = 1913; this.match(PostgreSqlParser.COMMA); { - this.state = 1916; + this.state = 1914; this.nonreservedword(); - this.state = 1917; + this.state = 1915; this.match(PostgreSqlParser.Integral); } } } - this.state = 1923; + this.state = 1921; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1924; + this.state = 1922; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1926; + this.state = 1924; this.match(PostgreSqlParser.KW_FOR); - this.state = 1927; + this.state = 1925; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1928; + this.state = 1926; this.match(PostgreSqlParser.KW_IN); - this.state = 1929; + this.state = 1927; this.execute_param_clause(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1930; + this.state = 1928; this.match(PostgreSqlParser.KW_FOR); - this.state = 1931; + this.state = 1929; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1932; + this.state = 1930; this.match(PostgreSqlParser.KW_FROM); - this.state = 1933; + this.state = 1931; this.execute_param_clause(); - this.state = 1934; + this.state = 1932; this.match(PostgreSqlParser.KW_TO); - this.state = 1935; + this.state = 1933; this.execute_param_clause(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1937; + this.state = 1935; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -9581,27 +9468,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1940; + this.state = 1938; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1941; + this.state = 1939; this.match(PostgreSqlParser.KW_TYPE); - this.state = 1942; + this.state = 1940; this.any_name(); - this.state = 1943; + this.state = 1941; this.alter_type_cmd(); - this.state = 1948; + this.state = 1946; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1944; + this.state = 1942; this.match(PostgreSqlParser.COMMA); - this.state = 1945; + this.state = 1943; this.alter_type_cmd(); } } - this.state = 1950; + this.state = 1948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9626,24 +9513,24 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 110, PostgreSqlParser.RULE_alter_type_cmd); let _la: number; try { - this.state = 1981; + this.state = 1979; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ADD: this.enterOuterAlt(localContext, 1); { - this.state = 1951; + this.state = 1949; this.match(PostgreSqlParser.KW_ADD); - this.state = 1952; + this.state = 1950; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 1953; + this.state = 1951; this.tablefuncelement(); - this.state = 1955; + this.state = 1953; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { case 1: { - this.state = 1954; + this.state = 1952; this.opt_drop_behavior(); } break; @@ -9653,28 +9540,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DROP: this.enterOuterAlt(localContext, 2); { - this.state = 1957; + this.state = 1955; this.match(PostgreSqlParser.KW_DROP); - this.state = 1958; + this.state = 1956; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 1960; + this.state = 1958; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 125, this.context) ) { case 1: { - this.state = 1959; + this.state = 1957; this.opt_if_exists(); } break; } - this.state = 1962; + this.state = 1960; this.colid(); - this.state = 1964; + this.state = 1962; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { case 1: { - this.state = 1963; + this.state = 1961; this.opt_drop_behavior(); } break; @@ -9684,44 +9571,44 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ALTER: this.enterOuterAlt(localContext, 3); { - this.state = 1966; + this.state = 1964; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1967; + this.state = 1965; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 1968; + this.state = 1966; this.colid(); - this.state = 1971; + this.state = 1969; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 1969; + this.state = 1967; this.match(PostgreSqlParser.KW_SET); - this.state = 1970; + this.state = 1968; this.match(PostgreSqlParser.KW_DATA); } } - this.state = 1973; + this.state = 1971; this.match(PostgreSqlParser.KW_TYPE); - this.state = 1974; + this.state = 1972; this.typename(); - this.state = 1976; + this.state = 1974; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 1975; + this.state = 1973; this.opt_collate_clause(); } - break; } - this.state = 1979; + + this.state = 1977; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) { case 1: { - this.state = 1978; + this.state = 1976; this.opt_drop_behavior(); } break; @@ -9752,18 +9639,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1983; + this.state = 1981; this.match(PostgreSqlParser.KW_CLOSE); - this.state = 1986; + this.state = 1984; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -10145,6 +10026,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -10157,13 +10039,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1984; + this.state = 1982; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 1985; + this.state = 1983; this.match(PostgreSqlParser.KW_ALL); } break; @@ -10191,37 +10073,37 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 114, PostgreSqlParser.RULE_copystmt); let _la: number; try { - this.state = 2037; + this.state = 2035; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 143, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1988; + this.state = 1986; this.match(PostgreSqlParser.KW_COPY); - this.state = 1990; + this.state = 1988; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 1989; + this.state = 1987; this.match(PostgreSqlParser.KW_BINARY); } } - this.state = 1992; + this.state = 1990; this.table_name(); - this.state = 1994; + this.state = 1992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 1993; + this.state = 1991; this.opt_column_list(); } } - this.state = 1996; + this.state = 1994; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -10230,17 +10112,17 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1998; + this.state = 1996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 297) { { - this.state = 1997; + this.state = 1995; this.match(PostgreSqlParser.KW_PROGRAM); } } - this.state = 2003; + this.state = 2001; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -10248,65 +10130,65 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2000; + this.state = 1998; this.sconst(); } break; case PostgreSqlParser.KW_STDIN: { - this.state = 2001; + this.state = 1999; this.match(PostgreSqlParser.KW_STDIN); } break; case PostgreSqlParser.KW_STDOUT: { - this.state = 2002; + this.state = 2000; this.match(PostgreSqlParser.KW_STDOUT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2010; + this.state = 2008; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: { - this.state = 2006; + this.state = 2004; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2005; + this.state = 2003; this.match(PostgreSqlParser.KW_USING); } } - this.state = 2008; + this.state = 2006; this.match(PostgreSqlParser.KW_DELIMITERS); - this.state = 2009; + this.state = 2007; this.sconst(); } break; } - this.state = 2013; + this.state = 2011; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { case 1: { - this.state = 2012; + this.state = 2010; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2015; + this.state = 2013; this.copy_options(); - this.state = 2017; + this.state = 2015; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 2016; + this.state = 2014; this.where_clause(); } } @@ -10316,27 +10198,27 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2019; + this.state = 2017; this.match(PostgreSqlParser.KW_COPY); - this.state = 2020; + this.state = 2018; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2021; + this.state = 2019; this.preparablestmt(); - this.state = 2022; + this.state = 2020; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2023; + this.state = 2021; this.match(PostgreSqlParser.KW_TO); - this.state = 2025; + this.state = 2023; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 297) { { - this.state = 2024; + this.state = 2022; this.match(PostgreSqlParser.KW_PROGRAM); } } - this.state = 2030; + this.state = 2028; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -10344,36 +10226,36 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2027; + this.state = 2025; this.sconst(); } break; case PostgreSqlParser.KW_STDIN: { - this.state = 2028; + this.state = 2026; this.match(PostgreSqlParser.KW_STDIN); } break; case PostgreSqlParser.KW_STDOUT: { - this.state = 2029; + this.state = 2027; this.match(PostgreSqlParser.KW_STDOUT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2033; + this.state = 2031; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 142, this.context) ) { case 1: { - this.state = 2032; + this.state = 2030; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2035; + this.state = 2033; this.copy_options(); } break; @@ -10399,36 +10281,36 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 2078; + this.state = 2076; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 150, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2064; + this.state = 2062; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 148, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 2062; + this.state = 2060; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 147, this.context) ) { case 1: { - this.state = 2039; + this.state = 2037; this.match(PostgreSqlParser.KW_BINARY); } break; case 2: { - this.state = 2040; + this.state = 2038; this.match(PostgreSqlParser.KW_FREEZE); } break; case 3: { - this.state = 2041; + this.state = 2039; _la = this.tokenStream.LA(1); if(!(_la === 78 || _la === 183 || _la === 197 || _la === 298)) { this.errorHandler.recoverInline(this); @@ -10437,50 +10319,50 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2043; + this.state = 2041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 2042; + this.state = 2040; this.match(PostgreSqlParser.KW_AS); } } - this.state = 2045; + this.state = 2043; this.sconst(); } break; case 4: { - this.state = 2046; + this.state = 2044; this.match(PostgreSqlParser.KW_CSV); } break; case 5: { - this.state = 2047; + this.state = 2045; this.match(PostgreSqlParser.KW_HEADER); } break; case 6: { - this.state = 2048; + this.state = 2046; this.match(PostgreSqlParser.KW_FORCE); - this.state = 2049; + this.state = 2047; this.match(PostgreSqlParser.KW_QUOTE); - this.state = 2052; + this.state = 2050; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 145, this.context) ) { case 1: { - this.state = 2050; + this.state = 2048; this.column_list(); } break; case 2: { - this.state = 2051; + this.state = 2049; this.match(PostgreSqlParser.STAR); } break; @@ -10489,36 +10371,36 @@ export class PostgreSqlParser extends SQLParserBase { break; case 7: { - this.state = 2054; + this.state = 2052; this.match(PostgreSqlParser.KW_FORCE); - this.state = 2056; + this.state = 2054; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2055; + this.state = 2053; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2058; + this.state = 2056; this.match(PostgreSqlParser.KW_NULL); - this.state = 2059; + this.state = 2057; this.column_list(); } break; case 8: { - this.state = 2060; + this.state = 2058; this.match(PostgreSqlParser.KW_ENCODING); - this.state = 2061; + this.state = 2059; this.sconst(); } break; } } } - this.state = 2066; + this.state = 2064; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 148, this.context); } @@ -10527,27 +10409,27 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2067; + this.state = 2065; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2068; + this.state = 2066; this.copy_generic_opt_elem(); - this.state = 2073; + this.state = 2071; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2069; + this.state = 2067; this.match(PostgreSqlParser.COMMA); - this.state = 2070; + this.state = 2068; this.copy_generic_opt_elem(); } } - this.state = 2075; + this.state = 2073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2076; + this.state = 2074; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -10574,19 +10456,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2080; + this.state = 2078; this.collabel(); - this.state = 2095; + this.state = 2093; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_ON: case PostgreSqlParser.KW_TRUE: case PostgreSqlParser.KW_AUTHORIZATION: @@ -10991,6 +10867,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -11003,7 +10880,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2081; + this.state = 2079; this.opt_boolean_or_string(); } break; @@ -11012,39 +10889,39 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: { - this.state = 2082; + this.state = 2080; this.numericonly(); } break; case PostgreSqlParser.STAR: { - this.state = 2083; + this.state = 2081; this.match(PostgreSqlParser.STAR); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 2084; + this.state = 2082; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2085; + this.state = 2083; this.opt_boolean_or_string_column(); - this.state = 2090; + this.state = 2088; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2086; + this.state = 2084; this.match(PostgreSqlParser.COMMA); - this.state = 2087; + this.state = 2085; this.opt_boolean_or_string_column(); } } - this.state = 2092; + this.state = 2090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2093; + this.state = 2091; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -11078,107 +10955,107 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ColumnCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2097; + this.state = 2095; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2099; + this.state = 2097; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 2098; + this.state = 2096; this.opttemp(); } } - this.state = 2101; + this.state = 2099; this.match(PostgreSqlParser.KW_TABLE); - this.state = 2103; + this.state = 2101; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 154, this.context) ) { case 1: { - this.state = 2102; + this.state = 2100; this.opt_if_not_exists(); } break; } - this.state = 2105; + this.state = 2103; this.table_name_create(); - this.state = 2171; + this.state = 2169; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 2106; + this.state = 2104; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2108; + this.state = 2106; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2099209) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 286719) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2107; + this.state = 2105; this.tableelementlist(); } } - this.state = 2110; + this.state = 2108; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2112; + this.state = 2110; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 156, this.context) ) { case 1: { - this.state = 2111; + this.state = 2109; this.optinherit(); } break; } - this.state = 2115; + this.state = 2113; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { case 1: { - this.state = 2114; + this.state = 2112; this.partitionspec(); } break; } - this.state = 2118; + this.state = 2116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2117; + this.state = 2115; this.table_access_method_clause(); } } - this.state = 2121; + this.state = 2119; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { case 1: { - this.state = 2120; + this.state = 2118; this.optwith(); } break; } - this.state = 2124; + this.state = 2122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2123; + this.state = 2121; this.oncommitoption(); } } - this.state = 2127; + this.state = 2125; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { case 1: { - this.state = 2126; + this.state = 2124; this.opttablespace(); } break; @@ -11187,66 +11064,66 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_OF: { - this.state = 2129; + this.state = 2127; this.match(PostgreSqlParser.KW_OF); - this.state = 2130; + this.state = 2128; this.any_name(); - this.state = 2132; + this.state = 2130; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 162, this.context) ) { case 1: { - this.state = 2131; + this.state = 2129; this.opttypedtableelementlist(); } break; } - this.state = 2135; + this.state = 2133; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { case 1: { - this.state = 2134; + this.state = 2132; this.partitionspec(); } break; } - this.state = 2138; + this.state = 2136; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2137; + this.state = 2135; this.table_access_method_clause(); } } - this.state = 2141; + this.state = 2139; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { case 1: { - this.state = 2140; + this.state = 2138; this.optwith(); } break; } - this.state = 2144; + this.state = 2142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2143; + this.state = 2141; this.oncommitoption(); } } - this.state = 2147; + this.state = 2145; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: { - this.state = 2146; + this.state = 2144; this.opttablespace(); } break; @@ -11255,70 +11132,70 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_PARTITION: { - this.state = 2149; + this.state = 2147; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2150; + this.state = 2148; this.match(PostgreSqlParser.KW_OF); - this.state = 2151; + this.state = 2149; this.qualified_name(); - this.state = 2153; + this.state = 2151; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2152; + this.state = 2150; this.opttypedtableelementlist(); } } - this.state = 2155; + this.state = 2153; this.partitionboundspec(); - this.state = 2157; + this.state = 2155; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { case 1: { - this.state = 2156; + this.state = 2154; this.partitionspec(); } break; } - this.state = 2160; + this.state = 2158; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2159; + this.state = 2157; this.table_access_method_clause(); } } - this.state = 2163; + this.state = 2161; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: { - this.state = 2162; + this.state = 2160; this.optwith(); } break; } - this.state = 2166; + this.state = 2164; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2165; + this.state = 2163; this.oncommitoption(); } } - this.state = 2169; + this.state = 2167; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { case 1: { - this.state = 2168; + this.state = 2166; this.opttablespace(); } break; @@ -11349,20 +11226,20 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 122, PostgreSqlParser.RULE_opttemp); let _la: number; try { - this.state = 2178; + this.state = 2176; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEMPORARY: this.enterOuterAlt(localContext, 1); { - this.state = 2173; + this.state = 2171; this.match(PostgreSqlParser.KW_TEMPORARY); } break; case PostgreSqlParser.KW_TEMP: this.enterOuterAlt(localContext, 2); { - this.state = 2174; + this.state = 2172; this.match(PostgreSqlParser.KW_TEMP); } break; @@ -11370,7 +11247,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LOCAL: this.enterOuterAlt(localContext, 3); { - this.state = 2175; + this.state = 2173; _la = this.tokenStream.LA(1); if(!(_la === 213 || _la === 254)) { this.errorHandler.recoverInline(this); @@ -11379,7 +11256,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2176; + this.state = 2174; _la = this.tokenStream.LA(1); if(!(_la === 352 || _la === 354)) { this.errorHandler.recoverInline(this); @@ -11393,7 +11270,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_UNLOGGED: this.enterOuterAlt(localContext, 4); { - this.state = 2177; + this.state = 2175; this.match(PostgreSqlParser.KW_UNLOGGED); } break; @@ -11422,27 +11299,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2180; + this.state = 2178; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2181; + this.state = 2179; this.typedtableelement(); - this.state = 2186; + this.state = 2184; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2182; + this.state = 2180; this.match(PostgreSqlParser.COMMA); - this.state = 2183; + this.state = 2181; this.typedtableelement(); } } - this.state = 2188; + this.state = 2186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2189; + this.state = 2187; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -11467,21 +11344,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2191; + this.state = 2189; this.tableelement(); - this.state = 2196; + this.state = 2194; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2192; + this.state = 2190; this.match(PostgreSqlParser.COMMA); - this.state = 2193; + this.state = 2191; this.tableelement(); } } - this.state = 2198; + this.state = 2196; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -11506,30 +11383,49 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 128, PostgreSqlParser.RULE_tableelement); let _la: number; try { - this.state = 2214; + this.state = 2212; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 180, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { this.state = 2199; - this.column_def(); + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 45) { + { + this.state = 2197; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 2198; + this.colid(); + } + } + + this.state = 2201; + this.constraintelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2200; + this.state = 2202; + this.column_def(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 2203; this.match(PostgreSqlParser.KW_LIKE); - this.state = 2201; + this.state = 2204; this.qualified_name(); - this.state = 2206; + this.state = 2209; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 200 || _la === 224) { { { - this.state = 2202; + this.state = 2205; _la = this.tokenStream.LA(1); if(!(_la === 200 || _la === 224)) { this.errorHandler.recoverInline(this); @@ -11538,35 +11434,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2203; + this.state = 2206; this.tablelikeoption(); } } - this.state = 2208; + this.state = 2211; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2211; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 45) { - { - this.state = 2209; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2210; - this.colid(); - } - } - - this.state = 2213; - this.constraintelem(); - } - break; } } catch (re) { @@ -11588,37 +11465,37 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 130, PostgreSqlParser.RULE_typedtableelement); let _la: number; try { - this.state = 2232; + this.state = 2230; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2216; + this.state = 2214; this.column_name_create(); - this.state = 2219; + this.state = 2217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 2217; + this.state = 2215; this.match(PostgreSqlParser.KW_WITH); - this.state = 2218; + this.state = 2216; this.match(PostgreSqlParser.KW_OPTIONS); } } - this.state = 2224; + this.state = 2222; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2059) !== 0) || ((((_la - 77)) & ~0x1F) === 0 && ((1 << (_la - 77)) & 2097923) !== 0) || _la === 438) { { { - this.state = 2221; + this.state = 2219; this.colconstraint(); } } - this.state = 2226; + this.state = 2224; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -11627,19 +11504,19 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2229; + this.state = 2227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 2227; + this.state = 2225; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2228; + this.state = 2226; this.colid(); } } - this.state = 2231; + this.state = 2229; this.constraintelem(); } break; @@ -11667,63 +11544,63 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2234; + this.state = 2232; this.column_name_create(); - this.state = 2235; + this.state = 2233; this.typename(); - this.state = 2237; + this.state = 2235; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: { - this.state = 2236; + this.state = 2234; this.create_generic_options(); } break; } - this.state = 2248; + this.state = 2246; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: { - this.state = 2239; + this.state = 2237; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 2246; + this.state = 2244; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { case 1: { - this.state = 2240; + this.state = 2238; this.match(PostgreSqlParser.KW_PLAIN); } break; case 2: { - this.state = 2241; + this.state = 2239; this.match(PostgreSqlParser.KW_EXTERNAL); } break; case 3: { - this.state = 2242; + this.state = 2240; this.match(PostgreSqlParser.KW_EXTENDED); } break; case 4: { - this.state = 2243; + this.state = 2241; this.match(PostgreSqlParser.KW_MAIN); } break; case 5: { - this.state = 2244; + this.state = 2242; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 6: { - this.state = 2245; + this.state = 2243; this.colid(); } break; @@ -11731,53 +11608,53 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 2252; + this.state = 2250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 543) { { - this.state = 2250; + this.state = 2248; this.match(PostgreSqlParser.KW_COMPRESSION); - this.state = 2251; + this.state = 2249; this.colid(); } } - this.state = 2255; + this.state = 2253; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 189, this.context) ) { case 1: { - this.state = 2254; + this.state = 2252; this.opt_collate_clause(); } break; } - this.state = 2259; + this.state = 2257; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { case 1: { - this.state = 2257; + this.state = 2255; this.match(PostgreSqlParser.KW_WITH); - this.state = 2258; + this.state = 2256; this.match(PostgreSqlParser.KW_OPTIONS); } break; } - this.state = 2264; + this.state = 2262; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 191, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2261; + this.state = 2259; this.colconstraint(); } } } - this.state = 2266; + this.state = 2264; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 191, this.context); } @@ -11804,48 +11681,48 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2269; + this.state = 2267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 2267; + this.state = 2265; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2268; + this.state = 2266; this.colid(); } } - this.state = 2271; + this.state = 2269; this.colconstraintelem(); - this.state = 2276; + this.state = 2274; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 194, this.context) ) { case 1: { - this.state = 2273; + this.state = 2271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2272; + this.state = 2270; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2275; + this.state = 2273; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; } - this.state = 2280; + this.state = 2278; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 69) { { - this.state = 2278; + this.state = 2276; this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 2279; + this.state = 2277; _la = this.tokenStream.LA(1); if(!(_la === 180 || _la === 221)) { this.errorHandler.recoverInline(this); @@ -11878,47 +11755,47 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 136, PostgreSqlParser.RULE_colconstraintelem); let _la: number; try { - this.state = 2362; + this.state = 2360; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2283; + this.state = 2281; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2282; + this.state = 2280; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2285; + this.state = 2283; this.match(PostgreSqlParser.KW_NULL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2286; + this.state = 2284; this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 2288; + this.state = 2286; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 2287; + this.state = 2285; this.opt_definition(); } break; } - this.state = 2291; + this.state = 2289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2290; + this.state = 2288; this.optconstablespace(); } } @@ -11928,59 +11805,59 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2293; + this.state = 2291; this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 2299; + this.state = 2297; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 200, this.context) ) { case 1: { - this.state = 2294; + this.state = 2292; this.match(PostgreSqlParser.KW_NULLS); - this.state = 2296; + this.state = 2294; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2295; + this.state = 2293; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2298; + this.state = 2296; this.match(PostgreSqlParser.KW_DISTINCT); } break; } { - this.state = 2303; + this.state = 2301; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { case 1: { - this.state = 2301; + this.state = 2299; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 2302; + this.state = 2300; this.index_params(); } break; } - this.state = 2306; + this.state = 2304; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { case 1: { - this.state = 2305; + this.state = 2303; this.with_clause(); } break; } - this.state = 2309; + this.state = 2307; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2308; + this.state = 2306; this.optconstablespace(); } } @@ -11991,26 +11868,26 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2311; + this.state = 2309; this.match(PostgreSqlParser.KW_PRIMARY); - this.state = 2312; + this.state = 2310; this.match(PostgreSqlParser.KW_KEY); - this.state = 2314; + this.state = 2312; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) { case 1: { - this.state = 2313; + this.state = 2311; this.opt_definition(); } break; } - this.state = 2317; + this.state = 2315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2316; + this.state = 2314; this.optconstablespace(); } } @@ -12020,22 +11897,22 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2319; + this.state = 2317; this.match(PostgreSqlParser.KW_CHECK); - this.state = 2320; + this.state = 2318; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2321; + this.state = 2319; this.expression(); - this.state = 2322; + this.state = 2320; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2325; + this.state = 2323; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 206, this.context) ) { case 1: { - this.state = 2323; + this.state = 2321; this.match(PostgreSqlParser.KW_NO); - this.state = 2324; + this.state = 2322; this.match(PostgreSqlParser.KW_INHERIT); } break; @@ -12045,50 +11922,50 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2327; + this.state = 2325; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 2328; + this.state = 2326; this.primaryExpression(0); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2329; + this.state = 2327; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 2330; + this.state = 2328; this.generated_when(); - this.state = 2331; + this.state = 2329; this.match(PostgreSqlParser.KW_AS); - this.state = 2348; + this.state = 2346; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IDENTITY: { - this.state = 2332; + this.state = 2330; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 2341; + this.state = 2339; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { case 1: { - this.state = 2333; + this.state = 2331; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2335; + this.state = 2333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2334; + this.state = 2332; this.seqoptelem(); } } - this.state = 2337; + this.state = 2335; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 36 || _la === 148 || _la === 225 || ((((_la - 260)) & ~0x1F) === 0 && ((1 << (_la - 260)) & 2097669) !== 0) || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67125249) !== 0)); - this.state = 2339; + this.state = 2337; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -12097,13 +11974,13 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 2343; + this.state = 2341; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2344; + this.state = 2342; this.expression(); - this.state = 2345; + this.state = 2343; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2346; + this.state = 2344; this.match(PostgreSqlParser.KW_STORED); } break; @@ -12115,36 +11992,36 @@ export class PostgreSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2350; + this.state = 2348; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 2351; + this.state = 2349; this.qualified_name(); - this.state = 2353; + this.state = 2351; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { case 1: { - this.state = 2352; + this.state = 2350; this.opt_column_list(); } break; } - this.state = 2356; + this.state = 2354; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { case 1: { - this.state = 2355; + this.state = 2353; this.key_match(); } break; } - this.state = 2359; + this.state = 2357; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2358; + this.state = 2356; this.key_actions(); } } @@ -12154,7 +12031,7 @@ export class PostgreSqlParser extends SQLParserBase { case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2361; + this.state = 2359; this.opt_collate_clause(); } break; @@ -12178,22 +12055,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Generated_whenContext(this.context, this.state); this.enterRule(localContext, 138, PostgreSqlParser.RULE_generated_when); try { - this.state = 2367; + this.state = 2365; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALWAYS: this.enterOuterAlt(localContext, 1); { - this.state = 2364; + this.state = 2362; this.match(PostgreSqlParser.KW_ALWAYS); } break; case PostgreSqlParser.KW_BY: this.enterOuterAlt(localContext, 2); { - this.state = 2365; + this.state = 2363; this.match(PostgreSqlParser.KW_BY); - this.state = 2366; + this.state = 2364; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -12222,7 +12099,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2369; + this.state = 2367; _la = this.tokenStream.LA(1); if(!(_la === 30 || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 524321) !== 0) || _la === 219 || _la === 227 || _la === 342 || _la === 345 || _la === 438)) { this.errorHandler.recoverInline(this); @@ -12253,33 +12130,33 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 2467; + this.state = 2465; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CHECK: this.enterOuterAlt(localContext, 1); { - this.state = 2371; + this.state = 2369; this.match(PostgreSqlParser.KW_CHECK); - this.state = 2372; + this.state = 2370; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2373; + this.state = 2371; this.expression(); - this.state = 2374; + this.state = 2372; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2378; + this.state = 2376; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 215, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2375; + this.state = 2373; this.constraintattributeElem(); } } } - this.state = 2380; + this.state = 2378; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 215, this.context); } @@ -12289,21 +12166,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_UNIQUE: this.enterOuterAlt(localContext, 2); { - this.state = 2384; + this.state = 2382; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UNIQUE: { - this.state = 2381; + this.state = 2379; this.match(PostgreSqlParser.KW_UNIQUE); } break; case PostgreSqlParser.KW_PRIMARY: { { - this.state = 2382; + this.state = 2380; this.match(PostgreSqlParser.KW_PRIMARY); - this.state = 2383; + this.state = 2381; this.match(PostgreSqlParser.KW_KEY); } } @@ -12311,56 +12188,56 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2409; + this.state = 2407; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 2386; + this.state = 2384; this.opt_column_list(); - this.state = 2388; + this.state = 2386; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 217, this.context) ) { case 1: { - this.state = 2387; + this.state = 2385; this.opt_c_include(); } break; } - this.state = 2391; + this.state = 2389; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { case 1: { - this.state = 2390; + this.state = 2388; this.opt_definition(); } break; } - this.state = 2394; + this.state = 2392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2393; + this.state = 2391; this.optconstablespace(); } } - this.state = 2399; + this.state = 2397; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 220, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2396; + this.state = 2394; this.constraintattributeElem(); } } } - this.state = 2401; + this.state = 2399; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 220, this.context); } @@ -12368,21 +12245,21 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_USING: { - this.state = 2402; + this.state = 2400; this.existingindex(); - this.state = 2406; + this.state = 2404; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2403; + this.state = 2401; this.constraintattributeElem(); } } } - this.state = 2408; + this.state = 2406; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); } @@ -12396,99 +12273,99 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCLUDE: this.enterOuterAlt(localContext, 3); { - this.state = 2411; + this.state = 2409; this.match(PostgreSqlParser.KW_EXCLUDE); - this.state = 2413; + this.state = 2411; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2412; + this.state = 2410; this.table_access_method_clause(); } } - this.state = 2415; + this.state = 2413; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2416; + this.state = 2414; this.exclusionconstraintelem(); - this.state = 2421; + this.state = 2419; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2417; + this.state = 2415; this.match(PostgreSqlParser.COMMA); - this.state = 2418; + this.state = 2416; this.exclusionconstraintelem(); } } - this.state = 2423; + this.state = 2421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2424; + this.state = 2422; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2426; + this.state = 2424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 225, this.context) ) { case 1: { - this.state = 2425; + this.state = 2423; this.opt_c_include(); } break; } - this.state = 2429; + this.state = 2427; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 226, this.context) ) { case 1: { - this.state = 2428; + this.state = 2426; this.opt_definition(); } break; } - this.state = 2432; + this.state = 2430; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2431; + this.state = 2429; this.optconstablespace(); } } - this.state = 2439; + this.state = 2437; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 2434; + this.state = 2432; this.match(PostgreSqlParser.KW_WHERE); - this.state = 2435; + this.state = 2433; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2436; + this.state = 2434; this.expression(); - this.state = 2437; + this.state = 2435; this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 2444; + this.state = 2442; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 229, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2441; + this.state = 2439; this.constraintattributeElem(); } } } - this.state = 2446; + this.state = 2444; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 229, this.context); } @@ -12497,59 +12374,59 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_FOREIGN: this.enterOuterAlt(localContext, 4); { - this.state = 2447; + this.state = 2445; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2448; + this.state = 2446; this.match(PostgreSqlParser.KW_KEY); - this.state = 2449; + this.state = 2447; this.opt_column_list(); - this.state = 2450; + this.state = 2448; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 2451; + this.state = 2449; this.qualified_name(); - this.state = 2453; + this.state = 2451; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { - this.state = 2452; + this.state = 2450; this.opt_column_list(); } break; } - this.state = 2456; + this.state = 2454; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { case 1: { - this.state = 2455; + this.state = 2453; this.key_match(); } break; } - this.state = 2459; + this.state = 2457; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2458; + this.state = 2456; this.key_actions(); } } - this.state = 2464; + this.state = 2462; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2461; + this.state = 2459; this.constraintattributeElem(); } } } - this.state = 2466; + this.state = 2464; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); } @@ -12579,11 +12456,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2469; + this.state = 2467; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2470; + this.state = 2468; this.column_list(); - this.state = 2471; + this.state = 2469; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -12608,27 +12485,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2473; + this.state = 2471; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2474; + this.state = 2472; this.column_name_create(); - this.state = 2479; + this.state = 2477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2475; + this.state = 2473; this.match(PostgreSqlParser.COMMA); - this.state = 2476; + this.state = 2474; this.column_name_create(); } } - this.state = 2481; + this.state = 2479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2482; + this.state = 2480; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -12653,23 +12530,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2484; + this.state = 2482; this.column_name(); - this.state = 2489; + this.state = 2487; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 236, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2485; + this.state = 2483; this.match(PostgreSqlParser.COMMA); - this.state = 2486; + this.state = 2484; this.column_name(); } } } - this.state = 2491; + this.state = 2489; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 236, this.context); } @@ -12695,9 +12572,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2492; + this.state = 2490; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 2493; + this.state = 2491; this.opt_column_list(); } } @@ -12722,9 +12599,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2495; + this.state = 2493; this.match(PostgreSqlParser.KW_MATCH); - this.state = 2496; + this.state = 2494; _la = this.tokenStream.LA(1); if(!(_la === 113 || _la === 284 || _la === 336)) { this.errorHandler.recoverInline(this); @@ -12755,28 +12632,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2498; + this.state = 2496; this.index_elem(); - this.state = 2499; + this.state = 2497; this.match(PostgreSqlParser.KW_WITH); - this.state = 2506; + this.state = 2504; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { case 1: { - this.state = 2500; + this.state = 2498; this.any_operator(); } break; case 2: { - this.state = 2501; + this.state = 2499; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 2502; + this.state = 2500; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2503; + this.state = 2501; this.any_operator(); - this.state = 2504; + this.state = 2502; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -12802,20 +12679,20 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 156, PostgreSqlParser.RULE_key_actions); let _la: number; try { - this.state = 2516; + this.state = 2514; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 240, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2508; + this.state = 2506; this.key_update(); - this.state = 2510; + this.state = 2508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2509; + this.state = 2507; this.key_delete(); } } @@ -12825,14 +12702,14 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2512; + this.state = 2510; this.key_delete(); - this.state = 2514; + this.state = 2512; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2513; + this.state = 2511; this.key_update(); } } @@ -12861,11 +12738,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2518; + this.state = 2516; this.match(PostgreSqlParser.KW_ON); - this.state = 2519; + this.state = 2517; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 2520; + this.state = 2518; this.key_action(); } } @@ -12889,11 +12766,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2522; + this.state = 2520; this.match(PostgreSqlParser.KW_ON); - this.state = 2523; + this.state = 2521; this.match(PostgreSqlParser.KW_DELETE); - this.state = 2524; + this.state = 2522; this.key_action(); } } @@ -12916,38 +12793,38 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 162, PostgreSqlParser.RULE_key_action); let _la: number; try { - this.state = 2535; + this.state = 2533; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 1); { - this.state = 2526; + this.state = 2524; this.match(PostgreSqlParser.KW_NO); - this.state = 2527; + this.state = 2525; this.match(PostgreSqlParser.KW_ACTION); } break; case PostgreSqlParser.KW_RESTRICT: this.enterOuterAlt(localContext, 2); { - this.state = 2528; + this.state = 2526; this.match(PostgreSqlParser.KW_RESTRICT); } break; case PostgreSqlParser.KW_CASCADE: this.enterOuterAlt(localContext, 3); { - this.state = 2529; + this.state = 2527; this.match(PostgreSqlParser.KW_CASCADE); } break; case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 4); { - this.state = 2530; + this.state = 2528; this.match(PostgreSqlParser.KW_SET); - this.state = 2531; + this.state = 2529; _la = this.tokenStream.LA(1); if(!(_la === 53 || _la === 78)) { this.errorHandler.recoverInline(this); @@ -12956,12 +12833,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2533; + this.state = 2531; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { case 1: { - this.state = 2532; + this.state = 2530; this.column_list(); } break; @@ -12992,13 +12869,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2537; + this.state = 2535; this.match(PostgreSqlParser.KW_INHERITS); - this.state = 2538; + this.state = 2536; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2539; + this.state = 2537; this.qualified_name_list(); - this.state = 2540; + this.state = 2538; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -13023,33 +12900,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2542; + this.state = 2540; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2543; + this.state = 2541; this.match(PostgreSqlParser.KW_BY); - this.state = 2544; + this.state = 2542; this.colid(); - this.state = 2545; + this.state = 2543; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2546; + this.state = 2544; this.part_elem(); - this.state = 2551; + this.state = 2549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2547; + this.state = 2545; this.match(PostgreSqlParser.COMMA); - this.state = 2548; + this.state = 2546; this.part_elem(); } } - this.state = 2553; + this.state = 2551; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2554; + this.state = 2552; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -13074,50 +12951,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2562; + this.state = 2560; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { case 1: { - this.state = 2556; + this.state = 2554; this.column_name(); } break; case 2: { - this.state = 2557; + this.state = 2555; this.func_expr_windowless(); } break; case 3: { { - this.state = 2558; + this.state = 2556; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2559; + this.state = 2557; this.expression(); - this.state = 2560; + this.state = 2558; this.match(PostgreSqlParser.CLOSE_PAREN); } } break; } - this.state = 2565; + this.state = 2563; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 2564; + this.state = 2562; this.opt_collate_clause(); } - break; } - this.state = 2568; + + this.state = 2566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2567; + this.state = 2565; this.any_name(); } } @@ -13144,9 +13021,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2570; + this.state = 2568; this.match(PostgreSqlParser.KW_USING); - this.state = 2571; + this.state = 2569; this.colid(); } } @@ -13169,22 +13046,22 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 172, PostgreSqlParser.RULE_optwith); let _la: number; try { - this.state = 2577; + this.state = 2575; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2573; + this.state = 2571; this.match(PostgreSqlParser.KW_WITH); - this.state = 2574; + this.state = 2572; this.reloptions(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2575; + this.state = 2573; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 379)) { this.errorHandler.recoverInline(this); @@ -13193,7 +13070,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2576; + this.state = 2574; this.match(PostgreSqlParser.KW_OIDS); } break; @@ -13219,32 +13096,32 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2579; + this.state = 2577; this.match(PostgreSqlParser.KW_ON); - this.state = 2580; + this.state = 2578; this.match(PostgreSqlParser.KW_COMMIT); - this.state = 2586; + this.state = 2584; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DROP: { - this.state = 2581; + this.state = 2579; this.match(PostgreSqlParser.KW_DROP); } break; case PostgreSqlParser.KW_DELETE: { - this.state = 2582; + this.state = 2580; this.match(PostgreSqlParser.KW_DELETE); - this.state = 2583; + this.state = 2581; this.match(PostgreSqlParser.KW_ROWS); } break; case PostgreSqlParser.KW_PRESERVE: { - this.state = 2584; + this.state = 2582; this.match(PostgreSqlParser.KW_PRESERVE); - this.state = 2585; + this.state = 2583; this.match(PostgreSqlParser.KW_ROWS); } break; @@ -13273,9 +13150,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2588; + this.state = 2586; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2589; + this.state = 2587; this.tablespace_name(); } } @@ -13299,11 +13176,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2591; + this.state = 2589; this.match(PostgreSqlParser.KW_USING); - this.state = 2592; + this.state = 2590; this.match(PostgreSqlParser.KW_INDEX); - this.state = 2593; + this.state = 2591; this.opttablespace(); } } @@ -13327,11 +13204,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2595; + this.state = 2593; this.match(PostgreSqlParser.KW_USING); - this.state = 2596; + this.state = 2594; this.match(PostgreSqlParser.KW_INDEX); - this.state = 2597; + this.state = 2595; this.colid(); } } @@ -13356,62 +13233,62 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2599; + this.state = 2597; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2600; + this.state = 2598; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2605; + this.state = 2603; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2602; + this.state = 2600; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { case 1: { - this.state = 2601; + this.state = 2599; this.opt_if_not_exists(); } break; } - this.state = 2604; + this.state = 2602; this.any_name(); } } - this.state = 2608; + this.state = 2606; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2607; + this.state = 2605; this.opt_column_list(); } } - this.state = 2610; + this.state = 2608; this.match(PostgreSqlParser.KW_ON); - this.state = 2620; + this.state = 2618; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { case 1: { - this.state = 2611; + this.state = 2609; this.column_expr(); - this.state = 2616; + this.state = 2614; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2612; + this.state = 2610; this.match(PostgreSqlParser.COMMA); - this.state = 2613; + this.state = 2611; this.column_expr(); } } - this.state = 2618; + this.state = 2616; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -13419,12 +13296,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 2619; + this.state = 2617; this.expr_list(); } break; } - this.state = 2622; + this.state = 2620; this.from_clause(); } } @@ -13448,27 +13325,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2624; + this.state = 2622; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2625; + this.state = 2623; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2627; + this.state = 2625; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 254, this.context) ) { case 1: { - this.state = 2626; + this.state = 2624; this.opt_if_exists(); } break; } - this.state = 2629; + this.state = 2627; this.any_name(); - this.state = 2630; + this.state = 2628; this.match(PostgreSqlParser.KW_SET); - this.state = 2631; + this.state = 2629; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2632; + this.state = 2630; this.signediconst(); } } @@ -13494,42 +13371,42 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new QueryCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2634; + this.state = 2632; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2636; + this.state = 2634; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 2635; + this.state = 2633; this.opttemp(); } } - this.state = 2638; + this.state = 2636; this.match(PostgreSqlParser.KW_TABLE); - this.state = 2640; + this.state = 2638; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { case 1: { - this.state = 2639; + this.state = 2637; this.opt_if_not_exists(); } break; } - this.state = 2642; + this.state = 2640; this.create_as_target(); - this.state = 2643; + this.state = 2641; this.match(PostgreSqlParser.KW_AS); - this.state = 2644; + this.state = 2642; this.selectstmt(); - this.state = 2646; + this.state = 2644; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 257, this.context) ) { case 1: { - this.state = 2645; + this.state = 2643; this.opt_with_data(); } break; @@ -13557,54 +13434,54 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2648; + this.state = 2646; this.table_name_create(); - this.state = 2650; + this.state = 2648; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2649; + this.state = 2647; this.opt_column_list_create(); } } - this.state = 2653; + this.state = 2651; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2652; + this.state = 2650; this.table_access_method_clause(); } } - this.state = 2656; + this.state = 2654; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105 || _la === 379) { { - this.state = 2655; + this.state = 2653; this.optwith(); } } - this.state = 2659; + this.state = 2657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2658; + this.state = 2656; this.oncommitoption(); } } - this.state = 2662; + this.state = 2660; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 351) { { - this.state = 2661; + this.state = 2659; this.opttablespace(); } } @@ -13631,22 +13508,22 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2664; + this.state = 2662; this.match(PostgreSqlParser.KW_WITH); - this.state = 2668; + this.state = 2666; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DATA: { - this.state = 2665; + this.state = 2663; this.match(PostgreSqlParser.KW_DATA); } break; case PostgreSqlParser.KW_NO: { - this.state = 2666; + this.state = 2664; this.match(PostgreSqlParser.KW_NO); - this.state = 2667; + this.state = 2665; this.match(PostgreSqlParser.KW_DATA); } break; @@ -13677,84 +13554,84 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreateMaterializedViewContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2670; + this.state = 2668; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2672; + this.state = 2670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 367) { { - this.state = 2671; + this.state = 2669; this.match(PostgreSqlParser.KW_UNLOGGED); } } - this.state = 2674; + this.state = 2672; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 2675; + this.state = 2673; this.match(PostgreSqlParser.KW_VIEW); - this.state = 2677; + this.state = 2675; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { case 1: { - this.state = 2676; + this.state = 2674; this.opt_if_not_exists(); } break; } - this.state = 2679; + this.state = 2677; this.view_name_create(); - this.state = 2681; + this.state = 2679; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2680; + this.state = 2678; this.opt_column_list_create(); } } - this.state = 2684; + this.state = 2682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2683; + this.state = 2681; this.table_access_method_clause(); } } - this.state = 2687; + this.state = 2685; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 2686; + this.state = 2684; this.opt_reloptions(); } } - this.state = 2690; + this.state = 2688; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 351) { { - this.state = 2689; + this.state = 2687; this.opttablespace(); } } - this.state = 2692; + this.state = 2690; this.match(PostgreSqlParser.KW_AS); - this.state = 2693; + this.state = 2691; this.selectstmt(); - this.state = 2695; + this.state = 2693; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 270, this.context) ) { case 1: { - this.state = 2694; + this.state = 2692; this.opt_with_data(); } break; @@ -13782,30 +13659,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2697; + this.state = 2695; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 2698; + this.state = 2696; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 2699; + this.state = 2697; this.match(PostgreSqlParser.KW_VIEW); - this.state = 2701; + this.state = 2699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 2700; + this.state = 2698; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 2703; + this.state = 2701; this.view_name(); - this.state = 2705; + this.state = 2703; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 272, this.context) ) { case 1: { - this.state = 2704; + this.state = 2702; this.opt_with_data(); } break; @@ -13834,38 +13711,38 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2707; + this.state = 2705; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2709; + this.state = 2707; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 2708; + this.state = 2706; this.opttemp(); } } - this.state = 2711; + this.state = 2709; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2713; + this.state = 2711; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { case 1: { - this.state = 2712; + this.state = 2710; this.opt_if_not_exists(); } break; } - this.state = 2715; + this.state = 2713; this.qualified_name(); - this.state = 2721; + this.state = 2719; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 276, this.context) ) { case 1: { - this.state = 2717; + this.state = 2715; this.errorHandler.sync(this); alternative = 1; do { @@ -13873,7 +13750,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2716; + this.state = 2714; this.seqoptelem(); } } @@ -13881,7 +13758,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2719; + this.state = 2717; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 275, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -13911,23 +13788,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2723; + this.state = 2721; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2724; + this.state = 2722; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2726; + this.state = 2724; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { - this.state = 2725; + this.state = 2723; this.opt_if_exists(); } break; } - this.state = 2728; + this.state = 2726; this.qualified_name(); - this.state = 2730; + this.state = 2728; this.errorHandler.sync(this); alternative = 1; do { @@ -13935,7 +13812,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2729; + this.state = 2727; this.seqoptelem(); } } @@ -13943,7 +13820,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2732; + this.state = 2730; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -13968,29 +13845,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 200, PostgreSqlParser.RULE_seqoptelem); let _la: number; try { - this.state = 2767; + this.state = 2765; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: this.enterOuterAlt(localContext, 1); { - this.state = 2734; + this.state = 2732; this.match(PostgreSqlParser.KW_AS); - this.state = 2735; + this.state = 2733; this.simpletypename(); } break; case PostgreSqlParser.KW_CACHE: this.enterOuterAlt(localContext, 2); { - this.state = 2736; + this.state = 2734; this.match(PostgreSqlParser.KW_CACHE); - this.state = 2738; + this.state = 2736; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571 || _la === 573) { { - this.state = 2737; + this.state = 2735; this.numericonly(); } } @@ -14000,19 +13877,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_INCREMENT: this.enterOuterAlt(localContext, 3); { - this.state = 2740; + this.state = 2738; this.match(PostgreSqlParser.KW_INCREMENT); - this.state = 2742; + this.state = 2740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 2741; + this.state = 2739; this.match(PostgreSqlParser.KW_BY); } } - this.state = 2744; + this.state = 2742; this.numericonly(); } break; @@ -14020,7 +13897,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_MINVALUE: this.enterOuterAlt(localContext, 4); { - this.state = 2745; + this.state = 2743; _la = this.tokenStream.LA(1); if(!(_la === 260 || _la === 262)) { this.errorHandler.recoverInline(this); @@ -14029,16 +13906,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2746; + this.state = 2744; this.numericonly(); } break; case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 5); { - this.state = 2747; + this.state = 2745; this.match(PostgreSqlParser.KW_NO); - this.state = 2748; + this.state = 2746; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 260 || _la === 262)) { this.errorHandler.recoverInline(this); @@ -14052,65 +13929,65 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OWNED: this.enterOuterAlt(localContext, 6); { - this.state = 2749; + this.state = 2747; this.match(PostgreSqlParser.KW_OWNED); - this.state = 2750; + this.state = 2748; this.match(PostgreSqlParser.KW_BY); - this.state = 2751; + this.state = 2749; this.column_name(); } break; case PostgreSqlParser.KW_SEQUENCE: this.enterOuterAlt(localContext, 7); { - this.state = 2752; + this.state = 2750; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2753; + this.state = 2751; this.match(PostgreSqlParser.KW_NAME); - this.state = 2754; + this.state = 2752; this.any_name(); } break; case PostgreSqlParser.KW_START: this.enterOuterAlt(localContext, 8); { - this.state = 2755; + this.state = 2753; this.match(PostgreSqlParser.KW_START); - this.state = 2757; + this.state = 2755; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 2756; + this.state = 2754; this.match(PostgreSqlParser.KW_WITH); } } - this.state = 2759; + this.state = 2757; this.numericonly(); } break; case PostgreSqlParser.KW_RESTART: this.enterOuterAlt(localContext, 9); { - this.state = 2760; + this.state = 2758; this.match(PostgreSqlParser.KW_RESTART); - this.state = 2762; + this.state = 2760; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { case 1: { - this.state = 2761; + this.state = 2759; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2765; + this.state = 2763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571 || _la === 573) { { - this.state = 2764; + this.state = 2762; this.numericonly(); } } @@ -14140,18 +14017,18 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 202, PostgreSqlParser.RULE_numericonly); let _la: number; try { - this.state = 2774; + this.state = 2772; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 286, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2770; + this.state = 2768; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13) { { - this.state = 2769; + this.state = 2767; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -14163,14 +14040,14 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 2772; + this.state = 2770; this.match(PostgreSqlParser.Numeric); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2773; + this.state = 2771; this.signediconst(); } break; @@ -14197,79 +14074,79 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2776; + this.state = 2774; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2778; + this.state = 2776; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 2777; + this.state = 2775; this.opt_or_replace(); } } - this.state = 2781; + this.state = 2779; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 359) { { - this.state = 2780; + this.state = 2778; this.match(PostgreSqlParser.KW_TRUSTED); } } - this.state = 2784; + this.state = 2782; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 2783; + this.state = 2781; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 2786; + this.state = 2784; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 2787; + this.state = 2785; this.colid(); - this.state = 2800; + this.state = 2798; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { case 1: { - this.state = 2788; + this.state = 2786; this.match(PostgreSqlParser.KW_HANDLER); - this.state = 2789; + this.state = 2787; this.any_name(); - this.state = 2792; + this.state = 2790; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context) ) { case 1: { - this.state = 2790; + this.state = 2788; this.match(PostgreSqlParser.KW_INLINE); - this.state = 2791; + this.state = 2789; this.any_name(); } break; } - this.state = 2798; + this.state = 2796; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 291, this.context) ) { case 1: { - this.state = 2794; + this.state = 2792; this.match(PostgreSqlParser.KW_VALIDATOR); - this.state = 2795; + this.state = 2793; this.any_name(); } break; case 2: { - this.state = 2796; + this.state = 2794; this.match(PostgreSqlParser.KW_NO); - this.state = 2797; + this.state = 2795; this.match(PostgreSqlParser.KW_VALIDATOR); } break; @@ -14300,32 +14177,32 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2802; + this.state = 2800; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2803; + this.state = 2801; this.opttablespace(); - this.state = 2806; + this.state = 2804; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 282) { { - this.state = 2804; + this.state = 2802; this.match(PostgreSqlParser.KW_OWNER); - this.state = 2805; + this.state = 2803; this.rolespec(); } } - this.state = 2808; + this.state = 2806; this.match(PostgreSqlParser.KW_LOCATION); - this.state = 2809; + this.state = 2807; this.sconst(); - this.state = 2811; + this.state = 2809; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { case 1: { - this.state = 2810; + this.state = 2808; this.opt_reloptions(); } break; @@ -14354,53 +14231,53 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2813; + this.state = 2811; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2814; + this.state = 2812; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2816; + this.state = 2814; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 295, this.context) ) { case 1: { - this.state = 2815; + this.state = 2813; this.opt_if_not_exists(); } break; } - this.state = 2818; + this.state = 2816; this.colid(); - this.state = 2820; + this.state = 2818; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { case 1: { - this.state = 2819; + this.state = 2817; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2829; + this.state = 2827; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 298, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 2827; + this.state = 2825; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SCHEMA: { - this.state = 2822; + this.state = 2820; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 2823; + this.state = 2821; this.schema_name(); } break; case PostgreSqlParser.KW_FROM: case PostgreSqlParser.KW_VERSION: { - this.state = 2824; + this.state = 2822; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -14409,13 +14286,13 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2825; + this.state = 2823; this.nonreservedword_or_sconst(); } break; case PostgreSqlParser.KW_CASCADE: { - this.state = 2826; + this.state = 2824; this.match(PostgreSqlParser.KW_CASCADE); } break; @@ -14424,7 +14301,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 2831; + this.state = 2829; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 298, this.context); } @@ -14451,27 +14328,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2832; + this.state = 2830; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2833; + this.state = 2831; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2834; + this.state = 2832; this.colid(); - this.state = 2835; + this.state = 2833; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 2840; + this.state = 2838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 94) { { { - this.state = 2836; + this.state = 2834; this.match(PostgreSqlParser.KW_TO); - this.state = 2837; + this.state = 2835; this.nonreservedword_or_sconst(); } } - this.state = 2842; + this.state = 2840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -14498,13 +14375,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2843; + this.state = 2841; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2844; + this.state = 2842; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2845; + this.state = 2843; this.colid(); - this.state = 2846; + this.state = 2844; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191)) { this.errorHandler.recoverInline(this); @@ -14513,44 +14390,44 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2879; + this.state = 2877; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 300, this.context) ) { case 1: { - this.state = 2847; + this.state = 2845; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 2848; + this.state = 2846; this.match(PostgreSqlParser.KW_FOR); - this.state = 2849; + this.state = 2847; this.typename(); - this.state = 2850; + this.state = 2848; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 2851; + this.state = 2849; this.colid(); } break; case 2: { - this.state = 2853; + this.state = 2851; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 2854; + this.state = 2852; this.routine_with_argtypes(); } break; case 3: { - this.state = 2855; + this.state = 2853; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 2856; + this.state = 2854; this.procedure_with_argtypes(); } break; case 4: { - this.state = 2857; + this.state = 2855; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 2858; + this.state = 2856; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -14559,31 +14436,31 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2859; + this.state = 2857; this.any_name(); - this.state = 2860; + this.state = 2858; this.table_access_method_clause(); } break; case 5: { - this.state = 2862; + this.state = 2860; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 2863; + this.state = 2861; this.operator_with_argtypes(); } break; case 6: { - this.state = 2864; + this.state = 2862; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 2865; + this.state = 2863; this.function_with_argtypes(); } break; case 7: { - this.state = 2866; + this.state = 2864; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -14592,43 +14469,43 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2867; + this.state = 2865; this.typename(); } break; case 8: { - this.state = 2868; + this.state = 2866; this.match(PostgreSqlParser.KW_CAST); - this.state = 2869; + this.state = 2867; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2870; + this.state = 2868; this.typename(); - this.state = 2871; + this.state = 2869; this.match(PostgreSqlParser.KW_AS); - this.state = 2872; + this.state = 2870; this.typename(); - this.state = 2873; + this.state = 2871; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 9: { - this.state = 2875; + this.state = 2873; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 2876; + this.state = 2874; this.aggregate_with_argtypes(); } break; case 10: { - this.state = 2877; + this.state = 2875; this.object_type_name(); } break; case 11: { - this.state = 2878; + this.state = 2876; this.object_type_any_name(); } break; @@ -14656,22 +14533,22 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2881; + this.state = 2879; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2882; + this.state = 2880; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2883; + this.state = 2881; this.match(PostgreSqlParser.KW_DATA); - this.state = 2884; + this.state = 2882; this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 2885; + this.state = 2883; this.colid(); - this.state = 2891; + this.state = 2889; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2887; + this.state = 2885; this.errorHandler.sync(this); alternative = 1; do { @@ -14679,7 +14556,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2886; + this.state = 2884; this.fdw_option(); } } @@ -14687,19 +14564,19 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2889; + this.state = 2887; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 301, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; } - this.state = 2894; + this.state = 2892; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { case 1: { - this.state = 2893; + this.state = 2891; this.create_generic_options(); } break; @@ -14725,14 +14602,14 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 216, PostgreSqlParser.RULE_fdw_option); let _la: number; try { - this.state = 2902; + this.state = 2900; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_HANDLER: case PostgreSqlParser.KW_VALIDATOR: this.enterOuterAlt(localContext, 1); { - this.state = 2896; + this.state = 2894; _la = this.tokenStream.LA(1); if(!(_la === 215 || _la === 373)) { this.errorHandler.recoverInline(this); @@ -14741,12 +14618,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2898; + this.state = 2896; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { case 1: { - this.state = 2897; + this.state = 2895; this.any_name(); } break; @@ -14756,9 +14633,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 2); { - this.state = 2900; + this.state = 2898; this.match(PostgreSqlParser.KW_NO); - this.state = 2901; + this.state = 2899; _la = this.tokenStream.LA(1); if(!(_la === 215 || _la === 373)) { this.errorHandler.recoverInline(this); @@ -14795,50 +14672,50 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2904; + this.state = 2902; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2905; + this.state = 2903; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2906; + this.state = 2904; this.match(PostgreSqlParser.KW_DATA); - this.state = 2907; + this.state = 2905; this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 2908; + this.state = 2906; this.colid(); - this.state = 2922; + this.state = 2920; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 309, this.context) ) { case 1: { - this.state = 2914; + this.state = 2912; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 215 || _la === 269 || _la === 373) { { - this.state = 2910; + this.state = 2908; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2909; + this.state = 2907; this.fdw_option(); } } - this.state = 2912; + this.state = 2910; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 215 || _la === 269 || _la === 373); } } - this.state = 2916; + this.state = 2914; this.alter_generic_options(); } break; case 2: { - this.state = 2918; + this.state = 2916; this.errorHandler.sync(this); alternative = 1; do { @@ -14846,7 +14723,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2917; + this.state = 2915; this.fdw_option(); } } @@ -14854,7 +14731,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2920; + this.state = 2918; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 308, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -14884,29 +14761,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2924; + this.state = 2922; this.match(PostgreSqlParser.KW_OPTIONS); - this.state = 2925; + this.state = 2923; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2926; + this.state = 2924; this.generic_option_elem(); - this.state = 2931; + this.state = 2929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2927; + this.state = 2925; this.match(PostgreSqlParser.COMMA); - this.state = 2928; + this.state = 2926; this.generic_option_elem(); } } - this.state = 2933; + this.state = 2931; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2934; + this.state = 2932; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14931,29 +14808,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2936; + this.state = 2934; this.match(PostgreSqlParser.KW_OPTIONS); - this.state = 2937; + this.state = 2935; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2938; + this.state = 2936; this.alter_generic_option_elem(); - this.state = 2943; + this.state = 2941; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2939; + this.state = 2937; this.match(PostgreSqlParser.COMMA); - this.state = 2940; + this.state = 2938; this.alter_generic_option_elem(); } } - this.state = 2945; + this.state = 2943; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2946; + this.state = 2944; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14978,7 +14855,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2948; + this.state = 2946; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -14987,7 +14864,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2949; + this.state = 2947; this.generic_option_elem(); } } @@ -15011,9 +14888,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2951; + this.state = 2949; this.collabel(); - this.state = 2952; + this.state = 2950; this.sconst(); } } @@ -15038,58 +14915,58 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2954; + this.state = 2952; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2955; + this.state = 2953; this.match(PostgreSqlParser.KW_SERVER); - this.state = 2957; + this.state = 2955; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { case 1: { - this.state = 2956; + this.state = 2954; this.opt_if_not_exists(); } break; } - this.state = 2959; + this.state = 2957; this.colid(); - this.state = 2962; + this.state = 2960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 360) { { - this.state = 2960; + this.state = 2958; this.match(PostgreSqlParser.KW_TYPE); - this.state = 2961; + this.state = 2959; this.sconst(); } } - this.state = 2965; + this.state = 2963; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 375) { { - this.state = 2964; + this.state = 2962; this.foreign_server_version(); } } - this.state = 2967; + this.state = 2965; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2968; + this.state = 2966; this.match(PostgreSqlParser.KW_DATA); - this.state = 2969; + this.state = 2967; this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 2970; + this.state = 2968; this.colid(); - this.state = 2972; + this.state = 2970; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { case 1: { - this.state = 2971; + this.state = 2969; this.create_generic_options(); } break; @@ -15116,9 +14993,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2974; + this.state = 2972; this.match(PostgreSqlParser.KW_VERSION); - this.state = 2977; + this.state = 2975; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -15126,13 +15003,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2975; + this.state = 2973; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 2976; + this.state = 2974; this.match(PostgreSqlParser.KW_NULL); } break; @@ -15161,31 +15038,31 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2979; + this.state = 2977; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2980; + this.state = 2978; this.match(PostgreSqlParser.KW_SERVER); - this.state = 2981; + this.state = 2979; this.colid(); - this.state = 2987; + this.state = 2985; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_OPTIONS: { - this.state = 2982; + this.state = 2980; this.alter_generic_options(); } break; case PostgreSqlParser.KW_VERSION: { - this.state = 2983; + this.state = 2981; this.foreign_server_version(); - this.state = 2985; + this.state = 2983; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { case 1: { - this.state = 2984; + this.state = 2982; this.alter_generic_options(); } break; @@ -15216,65 +15093,65 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 234, PostgreSqlParser.RULE_createforeigntablestmt); let _la: number; try { - this.state = 3028; + this.state = 3026; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { case 1: localContext = new CreateForeignTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2989; + this.state = 2987; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2990; + this.state = 2988; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2991; + this.state = 2989; this.match(PostgreSqlParser.KW_TABLE); - this.state = 2993; + this.state = 2991; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) { case 1: { - this.state = 2992; + this.state = 2990; this.opt_if_not_exists(); } break; } - this.state = 2995; + this.state = 2993; this.table_name_create(); - this.state = 2996; + this.state = 2994; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2998; + this.state = 2996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2099209) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 286719) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2997; + this.state = 2995; this.tableelementlist(); } } - this.state = 3000; + this.state = 2998; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3002; + this.state = 3000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 3001; + this.state = 2999; this.optinherit(); } } - this.state = 3004; + this.state = 3002; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3005; + this.state = 3003; this.colid(); - this.state = 3007; + this.state = 3005; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { case 1: { - this.state = 3006; + this.state = 3004; this.create_generic_options(); } break; @@ -15285,52 +15162,52 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreatePartitionForeignTableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3009; + this.state = 3007; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3010; + this.state = 3008; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3011; + this.state = 3009; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3013; + this.state = 3011; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { case 1: { - this.state = 3012; + this.state = 3010; this.opt_if_not_exists(); } break; } - this.state = 3015; + this.state = 3013; this.table_name_create(); - this.state = 3016; + this.state = 3014; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 3017; + this.state = 3015; this.match(PostgreSqlParser.KW_OF); - this.state = 3018; + this.state = 3016; this.table_name(); - this.state = 3020; + this.state = 3018; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3019; + this.state = 3017; this.opttypedtableelementlist(); } } - this.state = 3022; + this.state = 3020; this.partitionboundspec(); - this.state = 3023; + this.state = 3021; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3024; + this.state = 3022; this.colid(); - this.state = 3026; + this.state = 3024; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { case 1: { - this.state = 3025; + this.state = 3023; this.create_generic_options(); } break; @@ -15360,64 +15237,64 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3030; + this.state = 3028; this.match(PostgreSqlParser.KW_IMPORT); - this.state = 3031; + this.state = 3029; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3032; + this.state = 3030; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3033; + this.state = 3031; this.schema_name(); - this.state = 3043; + this.state = 3041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59 || _la === 74) { { - this.state = 3037; + this.state = 3035; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_LIMIT: { - this.state = 3034; + this.state = 3032; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 3035; + this.state = 3033; this.match(PostgreSqlParser.KW_TO); } break; case PostgreSqlParser.KW_EXCEPT: { - this.state = 3036; + this.state = 3034; this.match(PostgreSqlParser.KW_EXCEPT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3039; + this.state = 3037; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3040; + this.state = 3038; this.relation_expr_list(); - this.state = 3041; + this.state = 3039; this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 3045; + this.state = 3043; this.match(PostgreSqlParser.KW_FROM); - this.state = 3046; + this.state = 3044; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3047; + this.state = 3045; this.colid(); - this.state = 3048; + this.state = 3046; this.match(PostgreSqlParser.KW_INTO); - this.state = 3049; + this.state = 3047; this.colid(); - this.state = 3051; + this.state = 3049; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { case 1: { - this.state = 3050; + this.state = 3048; this.create_generic_options(); } break; @@ -15445,36 +15322,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3053; + this.state = 3051; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3054; + this.state = 3052; this.match(PostgreSqlParser.KW_USER); - this.state = 3055; + this.state = 3053; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 3057; + this.state = 3055; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3056; + this.state = 3054; this.opt_if_not_exists(); } } - this.state = 3059; + this.state = 3057; this.match(PostgreSqlParser.KW_FOR); - this.state = 3062; + this.state = 3060; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -15891,29 +15762,29 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3060; + this.state = 3058; this.rolespec(); } break; case PostgreSqlParser.KW_USER: { - this.state = 3061; + this.state = 3059; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3064; + this.state = 3062; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3065; + this.state = 3063; this.colid(); - this.state = 3067; + this.state = 3065; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 332, this.context) ) { case 1: { - this.state = 3066; + this.state = 3064; this.create_generic_options(); } break; @@ -15940,26 +15811,20 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3069; + this.state = 3067; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3070; + this.state = 3068; this.match(PostgreSqlParser.KW_USER); - this.state = 3071; + this.state = 3069; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 3072; + this.state = 3070; this.match(PostgreSqlParser.KW_FOR); - this.state = 3075; + this.state = 3073; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -16376,24 +16241,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3073; + this.state = 3071; this.rolespec(); } break; case PostgreSqlParser.KW_USER: { - this.state = 3074; + this.state = 3072; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3077; + this.state = 3075; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3078; + this.state = 3076; this.colid(); - this.state = 3079; + this.state = 3077; this.alter_generic_options(); } } @@ -16418,73 +16283,341 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3081; + this.state = 3079; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3082; + this.state = 3080; this.match(PostgreSqlParser.KW_POLICY); - this.state = 3083; + this.state = 3081; this.colid(); - this.state = 3084; + this.state = 3082; this.match(PostgreSqlParser.KW_ON); - this.state = 3085; + this.state = 3083; this.qualified_name(); - this.state = 3092; + this.state = 3090; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { case 1: { - this.state = 3086; + this.state = 3084; this.match(PostgreSqlParser.KW_AS); - this.state = 3090; + this.state = 3088; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_PERMISSIVE: { - this.state = 3087; + this.state = 3085; this.match(PostgreSqlParser.KW_PERMISSIVE); } break; case PostgreSqlParser.KW_RESTRICTIVE: { - this.state = 3088; + this.state = 3086; this.match(PostgreSqlParser.KW_RESTRICTIVE); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_COLUMNS: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -16513,6 +16646,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: case PostgreSqlParser.QuotedIdentifier: case PostgreSqlParser.UnicodeQuotedIdentifier: @@ -16523,7 +16659,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3089; + this.state = 3087; this.identifier(); } break; @@ -16533,14 +16669,14 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 3096; + this.state = 3094; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3094; + this.state = 3092; this.match(PostgreSqlParser.KW_FOR); - this.state = 3095; + this.state = 3093; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 88 || _la === 182 || _la === 241 || _la === 369)) { this.errorHandler.recoverInline(this); @@ -16552,34 +16688,34 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3100; + this.state = 3098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94) { { - this.state = 3098; + this.state = 3096; this.match(PostgreSqlParser.KW_TO); - this.state = 3099; + this.state = 3097; this.role_list(); } } - this.state = 3103; + this.state = 3101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3102; + this.state = 3100; this.rowsecurityoptionalexpr(); } } - this.state = 3106; + this.state = 3104; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { case 1: { - this.state = 3105; + this.state = 3103; this.rowsecurityoptionalwithcheck(); } break; @@ -16607,44 +16743,44 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3108; + this.state = 3106; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3109; + this.state = 3107; this.match(PostgreSqlParser.KW_POLICY); - this.state = 3110; + this.state = 3108; this.colid(); - this.state = 3111; + this.state = 3109; this.match(PostgreSqlParser.KW_ON); - this.state = 3112; + this.state = 3110; this.qualified_name(); - this.state = 3115; + this.state = 3113; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94) { { - this.state = 3113; + this.state = 3111; this.match(PostgreSqlParser.KW_TO); - this.state = 3114; + this.state = 3112; this.role_list(); } } - this.state = 3118; + this.state = 3116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3117; + this.state = 3115; this.rowsecurityoptionalexpr(); } } - this.state = 3121; + this.state = 3119; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 342, this.context) ) { case 1: { - this.state = 3120; + this.state = 3118; this.rowsecurityoptionalwithcheck(); } break; @@ -16673,51 +16809,51 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3123; + this.state = 3121; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3124; + this.state = 3122; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3125; + this.state = 3123; this.procedure_name(); - this.state = 3127; + this.state = 3125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3126; + this.state = 3124; this.func_args(); } } - this.state = 3155; + this.state = 3153; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 347, this.context) ) { case 1: { - this.state = 3129; + this.state = 3127; this.procedure_action(); - this.state = 3133; + this.state = 3131; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 344, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3130; + this.state = 3128; this.procedure_action(); } } } - this.state = 3135; + this.state = 3133; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 344, this.context); } - this.state = 3137; + this.state = 3135; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { case 1: { - this.state = 3136; + this.state = 3134; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -16726,53 +16862,53 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 3139; + this.state = 3137; this.match(PostgreSqlParser.KW_RENAME); - this.state = 3140; + this.state = 3138; this.match(PostgreSqlParser.KW_TO); - this.state = 3141; + this.state = 3139; this.procedure_name_create(); } break; case 3: { - this.state = 3142; + this.state = 3140; this.match(PostgreSqlParser.KW_OWNER); - this.state = 3143; + this.state = 3141; this.match(PostgreSqlParser.KW_TO); - this.state = 3144; + this.state = 3142; this.rolespec(); } break; case 4: { - this.state = 3145; + this.state = 3143; this.match(PostgreSqlParser.KW_SET); - this.state = 3146; + this.state = 3144; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3147; + this.state = 3145; this.schema_name_create(); } break; case 5: { - this.state = 3149; + this.state = 3147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 3148; + this.state = 3146; this.match(PostgreSqlParser.KW_NO); } } - this.state = 3151; + this.state = 3149; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 3152; + this.state = 3150; this.match(PostgreSqlParser.KW_ON); - this.state = 3153; + this.state = 3151; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3154; + this.state = 3152; this.colid(); } break; @@ -16798,48 +16934,48 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 248, PostgreSqlParser.RULE_procedure_action); let _la: number; try { - this.state = 3186; + this.state = 3184; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 353, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3167; + this.state = 3165; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 350, this.context) ) { case 1: { - this.state = 3158; + this.state = 3156; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 3157; + this.state = 3155; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 3160; + this.state = 3158; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 3161; + this.state = 3159; this.match(PostgreSqlParser.KW_INVOKER); } break; case 2: { - this.state = 3163; + this.state = 3161; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 3162; + this.state = 3160; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 3165; + this.state = 3163; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 3166; + this.state = 3164; this.match(PostgreSqlParser.KW_DEFINER); } break; @@ -16849,11 +16985,11 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3169; + this.state = 3167; this.match(PostgreSqlParser.KW_SET); - this.state = 3170; + this.state = 3168; this.colid(); - this.state = 3171; + this.state = 3169; _la = this.tokenStream.LA(1); if(!(_la === 9 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -16862,18 +16998,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3174; + this.state = 3172; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { case 1: { - this.state = 3172; + this.state = 3170; this.colid(); } break; case 2: { - this.state = 3173; + this.state = 3171; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -16883,31 +17019,25 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3176; + this.state = 3174; this.match(PostgreSqlParser.KW_SET); - this.state = 3177; + this.state = 3175; this.colid(); - this.state = 3178; + this.state = 3176; this.match(PostgreSqlParser.KW_FROM); - this.state = 3179; + this.state = 3177; this.match(PostgreSqlParser.KW_CURRENT); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3181; + this.state = 3179; this.match(PostgreSqlParser.KW_RESET); - this.state = 3184; + this.state = 3182; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -17289,6 +17419,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -17301,13 +17432,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3182; + this.state = 3180; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 3183; + this.state = 3181; this.match(PostgreSqlParser.KW_ALL); } break; @@ -17338,13 +17469,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3188; + this.state = 3186; this.match(PostgreSqlParser.KW_USING); - this.state = 3189; + this.state = 3187; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3190; + this.state = 3188; this.expression(); - this.state = 3191; + this.state = 3189; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -17368,15 +17499,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3193; + this.state = 3191; this.match(PostgreSqlParser.KW_WITH); - this.state = 3194; + this.state = 3192; this.match(PostgreSqlParser.KW_CHECK); - this.state = 3195; + this.state = 3193; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3196; + this.state = 3194; this.expression(); - this.state = 3197; + this.state = 3195; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -17401,17 +17532,17 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3199; + this.state = 3197; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3200; + this.state = 3198; this.match(PostgreSqlParser.KW_ACCESS); - this.state = 3201; + this.state = 3199; this.match(PostgreSqlParser.KW_METHOD); - this.state = 3202; + this.state = 3200; this.colid(); - this.state = 3203; + this.state = 3201; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3204; + this.state = 3202; _la = this.tokenStream.LA(1); if(!(_la === 92 || _la === 226)) { this.errorHandler.recoverInline(this); @@ -17420,9 +17551,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3205; + this.state = 3203; this.match(PostgreSqlParser.KW_HANDLER); - this.state = 3206; + this.state = 3204; this.any_name(); } } @@ -17445,50 +17576,50 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 256, PostgreSqlParser.RULE_createtrigstmt); let _la: number; try { - this.state = 3286; + this.state = 3284; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 368, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3208; + this.state = 3206; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3210; + this.state = 3208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3209; + this.state = 3207; this.opt_or_replace(); } } - this.state = 3212; + this.state = 3210; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3213; + this.state = 3211; this.colid(); - this.state = 3214; + this.state = 3212; this.triggeractiontime(); - this.state = 3215; + this.state = 3213; this.triggerevents(); - this.state = 3216; + this.state = 3214; this.match(PostgreSqlParser.KW_ON); - this.state = 3217; + this.state = 3215; this.table_name(); - this.state = 3229; + this.state = 3227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 447) { { - this.state = 3218; + this.state = 3216; this.match(PostgreSqlParser.KW_REFERENCING); - this.state = 3225; + this.state = 3223; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3219; + this.state = 3217; _la = this.tokenStream.LA(1); if(!(_la === 448 || _la === 449)) { this.errorHandler.recoverInline(this); @@ -17497,7 +17628,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3220; + this.state = 3218; _la = this.tokenStream.LA(1); if(!(_la === 92 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -17506,45 +17637,45 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3222; + this.state = 3220; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 3221; + this.state = 3219; this.match(PostgreSqlParser.KW_AS); } } - this.state = 3224; + this.state = 3222; this.colid(); } } - this.state = 3227; + this.state = 3225; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 448 || _la === 449); } } - this.state = 3236; + this.state = 3234; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3231; + this.state = 3229; this.match(PostgreSqlParser.KW_FOR); - this.state = 3233; + this.state = 3231; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3232; + this.state = 3230; this.match(PostgreSqlParser.KW_EACH); } } - this.state = 3235; + this.state = 3233; _la = this.tokenStream.LA(1); if(!(_la === 341 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -17556,109 +17687,109 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3239; + this.state = 3237; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3238; + this.state = 3236; this.triggerwhen(); } } - this.state = 3241; + this.state = 3239; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 3242; + this.state = 3240; this.function_or_procedure(); - this.state = 3243; + this.state = 3241; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3244; + this.state = 3242; this.triggerfuncargs(); - this.state = 3245; + this.state = 3243; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3247; + this.state = 3245; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3249; + this.state = 3247; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3248; + this.state = 3246; this.opt_or_replace(); } } - this.state = 3252; + this.state = 3250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 3251; + this.state = 3249; this.match(PostgreSqlParser.KW_CONSTRAINT); } } - this.state = 3254; + this.state = 3252; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3255; + this.state = 3253; this.colid(); - this.state = 3256; + this.state = 3254; this.triggeractiontime(); - this.state = 3257; + this.state = 3255; this.triggerevents(); - this.state = 3258; + this.state = 3256; this.match(PostgreSqlParser.KW_ON); - this.state = 3259; + this.state = 3257; this.table_name(); - this.state = 3262; + this.state = 3260; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 3260; + this.state = 3258; this.match(PostgreSqlParser.KW_FROM); - this.state = 3261; + this.state = 3259; this.qualified_name(); } } - this.state = 3267; + this.state = 3265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 54)) & ~0x1F) === 0 && ((1 << (_la - 54)) & 8421377) !== 0) || _la === 269) { { { - this.state = 3264; + this.state = 3262; this.constraintattributeElem(); } } - this.state = 3269; + this.state = 3267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3275; + this.state = 3273; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3270; + this.state = 3268; this.match(PostgreSqlParser.KW_FOR); - this.state = 3272; + this.state = 3270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3271; + this.state = 3269; this.match(PostgreSqlParser.KW_EACH); } } - this.state = 3274; + this.state = 3272; _la = this.tokenStream.LA(1); if(!(_la === 341 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -17670,25 +17801,25 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3278; + this.state = 3276; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3277; + this.state = 3275; this.triggerwhen(); } } - this.state = 3280; + this.state = 3278; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 3281; + this.state = 3279; this.function_or_procedure(); - this.state = 3282; + this.state = 3280; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3283; + this.state = 3281; this.triggerfuncargs(); - this.state = 3284; + this.state = 3282; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -17712,29 +17843,29 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new TriggeractiontimeContext(this.context, this.state); this.enterRule(localContext, 258, PostgreSqlParser.RULE_triggeractiontime); try { - this.state = 3292; + this.state = 3290; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_BEFORE: this.enterOuterAlt(localContext, 1); { - this.state = 3288; + this.state = 3286; this.match(PostgreSqlParser.KW_BEFORE); } break; case PostgreSqlParser.KW_AFTER: this.enterOuterAlt(localContext, 2); { - this.state = 3289; + this.state = 3287; this.match(PostgreSqlParser.KW_AFTER); } break; case PostgreSqlParser.KW_INSTEAD: this.enterOuterAlt(localContext, 3); { - this.state = 3290; + this.state = 3288; this.match(PostgreSqlParser.KW_INSTEAD); - this.state = 3291; + this.state = 3289; this.match(PostgreSqlParser.KW_OF); } break; @@ -17763,21 +17894,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3294; + this.state = 3292; this.triggeroneevent(); - this.state = 3299; + this.state = 3297; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 82) { { { - this.state = 3295; + this.state = 3293; this.match(PostgreSqlParser.KW_OR); - this.state = 3296; + this.state = 3294; this.triggeroneevent(); } } - this.state = 3301; + this.state = 3299; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17802,36 +17933,36 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 262, PostgreSqlParser.RULE_triggeroneevent); let _la: number; try { - this.state = 3310; + this.state = 3308; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INSERT: this.enterOuterAlt(localContext, 1); { - this.state = 3302; + this.state = 3300; this.match(PostgreSqlParser.KW_INSERT); } break; case PostgreSqlParser.KW_DELETE: this.enterOuterAlt(localContext, 2); { - this.state = 3303; + this.state = 3301; this.match(PostgreSqlParser.KW_DELETE); } break; case PostgreSqlParser.KW_UPDATE: this.enterOuterAlt(localContext, 3); { - this.state = 3304; + this.state = 3302; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 3307; + this.state = 3305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 275) { { - this.state = 3305; + this.state = 3303; this.match(PostgreSqlParser.KW_OF); - this.state = 3306; + this.state = 3304; this.column_list(); } } @@ -17841,7 +17972,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_TRUNCATE: this.enterOuterAlt(localContext, 4); { - this.state = 3309; + this.state = 3307; this.match(PostgreSqlParser.KW_TRUNCATE); } break; @@ -17869,13 +18000,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3312; + this.state = 3310; this.match(PostgreSqlParser.KW_WHEN); - this.state = 3313; + this.state = 3311; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3314; + this.state = 3312; this.expression(); - this.state = 3315; + this.state = 3313; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -17897,24 +18028,24 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_or_procedureContext(this.context, this.state); this.enterRule(localContext, 266, PostgreSqlParser.RULE_function_or_procedure); try { - this.state = 3321; + this.state = 3319; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 1); { - this.state = 3317; + this.state = 3315; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3318; + this.state = 3316; this.function_name(); } break; case PostgreSqlParser.KW_PROCEDURE: this.enterOuterAlt(localContext, 2); { - this.state = 3319; + this.state = 3317; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3320; + this.state = 3318; this.procedure_name(); } break; @@ -17943,7 +18074,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3325; + this.state = 3323; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: @@ -18424,6 +18555,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -18438,7 +18570,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3323; + this.state = 3321; this.triggerfuncarg(); } break; @@ -18451,19 +18583,19 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3331; + this.state = 3329; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3327; + this.state = 3325; this.match(PostgreSqlParser.COMMA); - this.state = 3328; + this.state = 3326; this.triggerfuncarg(); } } - this.state = 3333; + this.state = 3331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -18487,34 +18619,34 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new TriggerfuncargContext(this.context, this.state); this.enterRule(localContext, 270, PostgreSqlParser.RULE_triggerfuncarg); try { - this.state = 3338; + this.state = 3336; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 376, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3334; + this.state = 3332; this.match(PostgreSqlParser.Integral); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3335; + this.state = 3333; this.match(PostgreSqlParser.Numeric); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3336; + this.state = 3334; this.sconst(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3337; + this.state = 3335; this.collabel(); } break; @@ -18539,32 +18671,32 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 272, PostgreSqlParser.RULE_constraintattributeElem); let _la: number; try { - this.state = 3350; + this.state = 3348; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3341; + this.state = 3339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 3340; + this.state = 3338; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 3343; + this.state = 3341; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3344; + this.state = 3342; this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 3345; + this.state = 3343; _la = this.tokenStream.LA(1); if(!(_la === 180 || _la === 221)) { this.errorHandler.recoverInline(this); @@ -18578,18 +18710,18 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3346; + this.state = 3344; this.match(PostgreSqlParser.KW_NOT); - this.state = 3347; + this.state = 3345; this.match(PostgreSqlParser.KW_VALID); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3348; + this.state = 3346; this.match(PostgreSqlParser.KW_NO); - this.state = 3349; + this.state = 3347; this.match(PostgreSqlParser.KW_INHERIT); } break; @@ -18616,53 +18748,53 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3352; + this.state = 3350; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3353; + this.state = 3351; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3354; + this.state = 3352; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3355; + this.state = 3353; this.colid(); - this.state = 3356; + this.state = 3354; this.match(PostgreSqlParser.KW_ON); - this.state = 3357; + this.state = 3355; this.collabel(); - this.state = 3367; + this.state = 3365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3358; + this.state = 3356; this.match(PostgreSqlParser.KW_WHEN); - this.state = 3359; + this.state = 3357; this.event_trigger_when_item(); - this.state = 3364; + this.state = 3362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 33) { { { - this.state = 3360; + this.state = 3358; this.match(PostgreSqlParser.KW_AND); - this.state = 3361; + this.state = 3359; this.event_trigger_when_item(); } } - this.state = 3366; + this.state = 3364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3369; + this.state = 3367; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 3370; + this.state = 3368; this.function_or_procedure(); - this.state = 3371; + this.state = 3369; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3372; + this.state = 3370; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -18687,29 +18819,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3374; + this.state = 3372; this.colid(); - this.state = 3375; + this.state = 3373; this.match(PostgreSqlParser.KW_IN); - this.state = 3376; + this.state = 3374; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3377; + this.state = 3375; this.sconst(); - this.state = 3381; + this.state = 3379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3378; + this.state = 3376; this.notify_payload(); } } - this.state = 3383; + this.state = 3381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3384; + this.state = 3382; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -18734,27 +18866,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3386; + this.state = 3384; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3387; + this.state = 3385; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3388; + this.state = 3386; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3389; + this.state = 3387; this.colid(); - this.state = 3395; + this.state = 3393; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ENABLE: { - this.state = 3390; + this.state = 3388; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 3392; + this.state = 3390; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { case 1: { - this.state = 3391; + this.state = 3389; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -18770,7 +18902,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_DISABLE: { - this.state = 3394; + this.state = 3392; this.match(PostgreSqlParser.KW_DISABLE); } break; @@ -18800,33 +18932,33 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3397; + this.state = 3395; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3398; + this.state = 3396; this.match(PostgreSqlParser.KW_ASSERTION); - this.state = 3399; + this.state = 3397; this.any_name(); - this.state = 3400; + this.state = 3398; this.match(PostgreSqlParser.KW_CHECK); - this.state = 3401; + this.state = 3399; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3402; + this.state = 3400; this.expression(); - this.state = 3403; + this.state = 3401; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3407; + this.state = 3405; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 384, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3404; + this.state = 3402; this.constraintattributeElem(); } } } - this.state = 3409; + this.state = 3407; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 384, this.context); } @@ -18851,64 +18983,64 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 282, PostgreSqlParser.RULE_definestmt); let _la: number; try { - this.state = 3488; + this.state = 3486; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3410; + this.state = 3408; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3412; + this.state = 3410; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3411; + this.state = 3409; this.opt_or_replace(); } } - this.state = 3414; + this.state = 3412; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 3415; + this.state = 3413; this.function_name(); - this.state = 3430; + this.state = 3428; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { case 1: { { - this.state = 3416; + this.state = 3414; this.aggr_args(); - this.state = 3417; + this.state = 3415; this.definition(); } } break; case 2: { - this.state = 3419; + this.state = 3417; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3420; + this.state = 3418; this.old_aggr_elem(); - this.state = 3425; + this.state = 3423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3421; + this.state = 3419; this.match(PostgreSqlParser.COMMA); - this.state = 3422; + this.state = 3420; this.old_aggr_elem(); } } - this.state = 3427; + this.state = 3425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3428; + this.state = 3426; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -18918,79 +19050,79 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3432; + this.state = 3430; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3433; + this.state = 3431; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3434; + this.state = 3432; this.any_operator(); - this.state = 3435; + this.state = 3433; this.definition(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3437; + this.state = 3435; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3438; + this.state = 3436; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3439; + this.state = 3437; this.any_name(); - this.state = 3440; + this.state = 3438; this.match(PostgreSqlParser.KW_AS); - this.state = 3458; + this.state = 3456; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 3441; + this.state = 3439; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3443; + this.state = 3441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 3442; + this.state = 3440; this.tablefuncelementlist(); } } - this.state = 3445; + this.state = 3443; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_ENUM: { - this.state = 3446; + this.state = 3444; this.match(PostgreSqlParser.KW_ENUM); - this.state = 3447; + this.state = 3445; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3455; + this.state = 3453; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 67108885) !== 0)) { { - this.state = 3448; + this.state = 3446; this.sconst(); - this.state = 3452; + this.state = 3450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3449; + this.state = 3447; this.notify_payload(); } } - this.state = 3454; + this.state = 3452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3457; + this.state = 3455; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -19002,30 +19134,30 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3460; + this.state = 3458; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3461; + this.state = 3459; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3462; + this.state = 3460; this.any_name(); - this.state = 3468; + this.state = 3466; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 393, this.context) ) { case 1: { - this.state = 3465; + this.state = 3463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 3463; + this.state = 3461; this.match(PostgreSqlParser.KW_AS); - this.state = 3464; + this.state = 3462; this.match(PostgreSqlParser.KW_RANGE); } } - this.state = 3467; + this.state = 3465; this.definition(); } break; @@ -19035,13 +19167,13 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3470; + this.state = 3468; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3471; + this.state = 3469; this.match(PostgreSqlParser.KW_TEXT); - this.state = 3472; + this.state = 3470; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 3473; + this.state = 3471; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -19050,46 +19182,46 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3474; + this.state = 3472; this.any_name(); - this.state = 3475; + this.state = 3473; this.definition(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3477; + this.state = 3475; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3478; + this.state = 3476; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 3480; + this.state = 3478; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { case 1: { - this.state = 3479; + this.state = 3477; this.opt_if_not_exists(); } break; } - this.state = 3482; + this.state = 3480; this.any_name(); - this.state = 3486; + this.state = 3484; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 3483; + this.state = 3481; this.definition(); } break; case PostgreSqlParser.KW_FROM: { { - this.state = 3484; + this.state = 3482; this.match(PostgreSqlParser.KW_FROM); - this.state = 3485; + this.state = 3483; this.any_name(); } } @@ -19122,27 +19254,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3490; + this.state = 3488; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3491; + this.state = 3489; this.def_elem(); - this.state = 3496; + this.state = 3494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3492; + this.state = 3490; this.match(PostgreSqlParser.COMMA); - this.state = 3493; + this.state = 3491; this.def_elem(); } } - this.state = 3498; + this.state = 3496; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3499; + this.state = 3497; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -19167,16 +19299,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3501; + this.state = 3499; this.collabel(); - this.state = 3504; + this.state = 3502; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10) { { - this.state = 3502; + this.state = 3500; this.match(PostgreSqlParser.EQUAL); - this.state = 3503; + this.state = 3501; this.def_arg(); } } @@ -19201,48 +19333,48 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Def_argContext(this.context, this.state); this.enterRule(localContext, 288, PostgreSqlParser.RULE_def_arg); try { - this.state = 3512; + this.state = 3510; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3506; + this.state = 3504; this.func_type(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3507; + this.state = 3505; this.reserved_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3508; + this.state = 3506; this.qual_all_op(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3509; + this.state = 3507; this.numericonly(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3510; + this.state = 3508; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3511; + this.state = 3509; this.match(PostgreSqlParser.KW_NONE); } break; @@ -19268,11 +19400,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3514; + this.state = 3512; this.identifier(); - this.state = 3515; + this.state = 3513; this.match(PostgreSqlParser.EQUAL); - this.state = 3516; + this.state = 3514; this.def_arg(); } } @@ -19295,40 +19427,40 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 292, PostgreSqlParser.RULE_alterenumstmt); let _la: number; try { - this.state = 3540; + this.state = 3538; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 402, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3518; + this.state = 3516; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3519; + this.state = 3517; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3520; + this.state = 3518; this.any_name(); - this.state = 3521; + this.state = 3519; this.match(PostgreSqlParser.KW_ADD); - this.state = 3522; + this.state = 3520; this.match(PostgreSqlParser.KW_VALUE); - this.state = 3524; + this.state = 3522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3523; + this.state = 3521; this.opt_if_not_exists(); } } - this.state = 3526; + this.state = 3524; this.sconst(); - this.state = 3529; + this.state = 3527; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { case 1: { - this.state = 3527; + this.state = 3525; _la = this.tokenStream.LA(1); if(!(_la === 135 || _la === 145)) { this.errorHandler.recoverInline(this); @@ -19337,7 +19469,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3528; + this.state = 3526; this.sconst(); } break; @@ -19347,21 +19479,21 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3531; + this.state = 3529; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3532; + this.state = 3530; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3533; + this.state = 3531; this.any_name(); - this.state = 3534; + this.state = 3532; this.match(PostgreSqlParser.KW_RENAME); - this.state = 3535; + this.state = 3533; this.match(PostgreSqlParser.KW_VALUE); - this.state = 3536; + this.state = 3534; this.sconst(); - this.state = 3537; + this.state = 3535; this.match(PostgreSqlParser.KW_TO); - this.state = 3538; + this.state = 3536; this.sconst(); } break; @@ -19387,11 +19519,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3542; + this.state = 3540; this.match(PostgreSqlParser.KW_IF); - this.state = 3543; + this.state = 3541; this.match(PostgreSqlParser.KW_NOT); - this.state = 3544; + this.state = 3542; this.match(PostgreSqlParser.KW_EXISTS); } } @@ -19416,61 +19548,61 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3546; + this.state = 3544; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3547; + this.state = 3545; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3548; + this.state = 3546; this.match(PostgreSqlParser.KW_CLASS); - this.state = 3549; + this.state = 3547; this.any_name(); - this.state = 3551; + this.state = 3549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 3550; + this.state = 3548; this.match(PostgreSqlParser.KW_DEFAULT); } } - this.state = 3553; + this.state = 3551; this.match(PostgreSqlParser.KW_FOR); - this.state = 3554; + this.state = 3552; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3555; + this.state = 3553; this.typename(); - this.state = 3556; + this.state = 3554; this.table_access_method_clause(); - this.state = 3559; + this.state = 3557; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 206) { { - this.state = 3557; + this.state = 3555; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3558; + this.state = 3556; this.any_name(); } } - this.state = 3561; + this.state = 3559; this.match(PostgreSqlParser.KW_AS); - this.state = 3562; + this.state = 3560; this.opclass_item(); - this.state = 3567; + this.state = 3565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3563; + this.state = 3561; this.match(PostgreSqlParser.COMMA); - this.state = 3564; + this.state = 3562; this.opclass_item(); } } - this.state = 3569; + this.state = 3567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19495,52 +19627,52 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 298, PostgreSqlParser.RULE_opclass_item); let _la: number; try { - this.state = 3596; + this.state = 3594; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 1); { - this.state = 3570; + this.state = 3568; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3571; + this.state = 3569; this.match(PostgreSqlParser.Integral); - this.state = 3572; + this.state = 3570; this.any_operator(); - this.state = 3574; + this.state = 3572; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 406, this.context) ) { case 1: { - this.state = 3573; + this.state = 3571; this.oper_argtypes(); } break; } - this.state = 3583; + this.state = 3581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3576; + this.state = 3574; this.match(PostgreSqlParser.KW_FOR); - this.state = 3581; + this.state = 3579; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SEARCH: { - this.state = 3577; + this.state = 3575; this.match(PostgreSqlParser.KW_SEARCH); } break; case PostgreSqlParser.KW_ORDER: { { - this.state = 3578; + this.state = 3576; this.match(PostgreSqlParser.KW_ORDER); - this.state = 3579; + this.state = 3577; this.match(PostgreSqlParser.KW_BY); - this.state = 3580; + this.state = 3578; this.any_name(); } } @@ -19551,12 +19683,12 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3586; + this.state = 3584; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { case 1: { - this.state = 3585; + this.state = 3583; this.match(PostgreSqlParser.KW_RECHECK); } break; @@ -19566,30 +19698,30 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 2); { - this.state = 3588; + this.state = 3586; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3589; + this.state = 3587; this.match(PostgreSqlParser.Integral); - this.state = 3591; + this.state = 3589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3590; + this.state = 3588; this.prep_type_clause(); } } - this.state = 3593; + this.state = 3591; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_STORAGE: this.enterOuterAlt(localContext, 3); { - this.state = 3594; + this.state = 3592; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 3595; + this.state = 3593; this.typename(); } break; @@ -19617,15 +19749,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3598; + this.state = 3596; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3599; + this.state = 3597; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3600; + this.state = 3598; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3601; + this.state = 3599; this.any_name(); - this.state = 3602; + this.state = 3600; this.table_access_method_clause(); } } @@ -19650,38 +19782,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3604; + this.state = 3602; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3605; + this.state = 3603; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3606; + this.state = 3604; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3607; + this.state = 3605; this.any_name(); - this.state = 3608; + this.state = 3606; this.table_access_method_clause(); - this.state = 3627; + this.state = 3625; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ADD: { - this.state = 3609; + this.state = 3607; this.match(PostgreSqlParser.KW_ADD); - this.state = 3610; + this.state = 3608; this.opclass_item(); - this.state = 3615; + this.state = 3613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3611; + this.state = 3609; this.match(PostgreSqlParser.COMMA); - this.state = 3612; + this.state = 3610; this.opclass_item(); } } - this.state = 3617; + this.state = 3615; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19689,23 +19821,23 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_DROP: { - this.state = 3618; + this.state = 3616; this.match(PostgreSqlParser.KW_DROP); - this.state = 3619; + this.state = 3617; this.opclass_drop(); - this.state = 3624; + this.state = 3622; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3620; + this.state = 3618; this.match(PostgreSqlParser.COMMA); - this.state = 3621; + this.state = 3619; this.opclass_drop(); } } - this.state = 3626; + this.state = 3624; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19737,7 +19869,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3629; + this.state = 3627; _la = this.tokenStream.LA(1); if(!(_la === 211 || _la === 278)) { this.errorHandler.recoverInline(this); @@ -19746,9 +19878,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3630; + this.state = 3628; this.match(PostgreSqlParser.Integral); - this.state = 3631; + this.state = 3629; this.prep_type_clause(); } } @@ -19772,17 +19904,17 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3633; + this.state = 3631; this.match(PostgreSqlParser.KW_REASSIGN); - this.state = 3634; + this.state = 3632; this.match(PostgreSqlParser.KW_OWNED); - this.state = 3635; + this.state = 3633; this.match(PostgreSqlParser.KW_BY); - this.state = 3636; + this.state = 3634; this.role_list(); - this.state = 3637; + this.state = 3635; this.match(PostgreSqlParser.KW_TO); - this.state = 3638; + this.state = 3636; this.rolespec(); } } @@ -19805,115 +19937,115 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 308, PostgreSqlParser.RULE_dropstmt); let _la: number; try { - this.state = 3847; + this.state = 3845; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3640; + this.state = 3638; this.match(PostgreSqlParser.KW_DROP); - this.state = 3663; + this.state = 3661; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SEQUENCE: { - this.state = 3641; + this.state = 3639; this.match(PostgreSqlParser.KW_SEQUENCE); } break; case PostgreSqlParser.KW_INDEX: { - this.state = 3642; + this.state = 3640; this.match(PostgreSqlParser.KW_INDEX); } break; case PostgreSqlParser.KW_COLLATION: { - this.state = 3643; + this.state = 3641; this.match(PostgreSqlParser.KW_COLLATION); } break; case PostgreSqlParser.KW_CONVERSION: { - this.state = 3644; + this.state = 3642; this.match(PostgreSqlParser.KW_CONVERSION); } break; case PostgreSqlParser.KW_STATISTICS: { - this.state = 3645; + this.state = 3643; this.match(PostgreSqlParser.KW_STATISTICS); } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 3646; + this.state = 3644; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 3647; + this.state = 3645; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_ACCESS: { - this.state = 3648; + this.state = 3646; this.match(PostgreSqlParser.KW_ACCESS); - this.state = 3649; + this.state = 3647; this.match(PostgreSqlParser.KW_METHOD); } break; case PostgreSqlParser.KW_EVENT: { - this.state = 3650; + this.state = 3648; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3651; + this.state = 3649; this.match(PostgreSqlParser.KW_TRIGGER); } break; case PostgreSqlParser.KW_EXTENSION: { - this.state = 3652; + this.state = 3650; this.match(PostgreSqlParser.KW_EXTENSION); } break; case PostgreSqlParser.KW_LANGUAGE: case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 3654; + this.state = 3652; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 3653; + this.state = 3651; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 3656; + this.state = 3654; this.match(PostgreSqlParser.KW_LANGUAGE); } break; case PostgreSqlParser.KW_FOREIGN: { - this.state = 3657; + this.state = 3655; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3658; + this.state = 3656; this.match(PostgreSqlParser.KW_DATA); - this.state = 3659; + this.state = 3657; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_TEXT: { - this.state = 3660; + this.state = 3658; this.match(PostgreSqlParser.KW_TEXT); - this.state = 3661; + this.state = 3659; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 3662; + this.state = 3660; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -19927,24 +20059,24 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3666; + this.state = 3664; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { case 1: { - this.state = 3665; + this.state = 3663; this.opt_if_exists(); } break; } - this.state = 3668; + this.state = 3666; this.name_list(); - this.state = 3670; + this.state = 3668; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 418, this.context) ) { case 1: { - this.state = 3669; + this.state = 3667; this.opt_drop_behavior(); } break; @@ -19954,54 +20086,54 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3672; + this.state = 3670; this.match(PostgreSqlParser.KW_DROP); - this.state = 3674; + this.state = 3672; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 3673; + this.state = 3671; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 3676; + this.state = 3674; this.match(PostgreSqlParser.KW_VIEW); - this.state = 3678; + this.state = 3676; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { case 1: { - this.state = 3677; + this.state = 3675; this.opt_if_exists(); } break; } - this.state = 3680; + this.state = 3678; this.view_name(); - this.state = 3685; + this.state = 3683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3681; + this.state = 3679; this.match(PostgreSqlParser.COMMA); - this.state = 3682; + this.state = 3680; this.view_name(); } } - this.state = 3687; + this.state = 3685; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3689; + this.state = 3687; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { case 1: { - this.state = 3688; + this.state = 3686; this.opt_drop_behavior(); } break; @@ -20011,38 +20143,38 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3691; + this.state = 3689; this.match(PostgreSqlParser.KW_DROP); - this.state = 3693; + this.state = 3691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 3692; + this.state = 3690; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 3695; + this.state = 3693; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3697; + this.state = 3695; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { case 1: { - this.state = 3696; + this.state = 3694; this.opt_if_exists(); } break; } - this.state = 3699; + this.state = 3697; this.table_name_list(); - this.state = 3701; + this.state = 3699; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 425, this.context) ) { case 1: { - this.state = 3700; + this.state = 3698; this.opt_drop_behavior(); } break; @@ -20052,28 +20184,28 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3703; + this.state = 3701; this.match(PostgreSqlParser.KW_DROP); - this.state = 3704; + this.state = 3702; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3706; + this.state = 3704; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 426, this.context) ) { case 1: { - this.state = 3705; + this.state = 3703; this.opt_if_exists(); } break; } - this.state = 3708; + this.state = 3706; this.schema_name_list(); - this.state = 3710; + this.state = 3708; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { case 1: { - this.state = 3709; + this.state = 3707; this.opt_drop_behavior(); } break; @@ -20083,9 +20215,9 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3712; + this.state = 3710; this.match(PostgreSqlParser.KW_DROP); - this.state = 3713; + this.state = 3711; _la = this.tokenStream.LA(1); if(!(_la === 321 || _la === 357 || _la === 445)) { this.errorHandler.recoverInline(this); @@ -20094,28 +20226,28 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3715; + this.state = 3713; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { case 1: { - this.state = 3714; + this.state = 3712; this.opt_if_exists(); } break; } - this.state = 3717; + this.state = 3715; this.colid(); - this.state = 3718; + this.state = 3716; this.match(PostgreSqlParser.KW_ON); - this.state = 3719; + this.state = 3717; this.any_name(); - this.state = 3721; + this.state = 3719; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 429, this.context) ) { case 1: { - this.state = 3720; + this.state = 3718; this.opt_drop_behavior(); } break; @@ -20125,9 +20257,9 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3723; + this.state = 3721; this.match(PostgreSqlParser.KW_DROP); - this.state = 3724; + this.state = 3722; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -20136,40 +20268,40 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3726; + this.state = 3724; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 430, this.context) ) { case 1: { - this.state = 3725; + this.state = 3723; this.opt_if_exists(); } break; } - this.state = 3728; + this.state = 3726; this.typename(); - this.state = 3733; + this.state = 3731; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3729; + this.state = 3727; this.match(PostgreSqlParser.COMMA); - this.state = 3730; + this.state = 3728; this.typename(); } } - this.state = 3735; + this.state = 3733; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3737; + this.state = 3735; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { case 1: { - this.state = 3736; + this.state = 3734; this.opt_drop_behavior(); } break; @@ -20179,30 +20311,30 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 3739; + this.state = 3737; this.match(PostgreSqlParser.KW_DROP); - this.state = 3740; + this.state = 3738; this.match(PostgreSqlParser.KW_INDEX); - this.state = 3741; + this.state = 3739; this.match(PostgreSqlParser.KW_CONCURRENTLY); - this.state = 3743; + this.state = 3741; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 433, this.context) ) { case 1: { - this.state = 3742; + this.state = 3740; this.opt_if_exists(); } break; } - this.state = 3745; + this.state = 3743; this.any_name_list(); - this.state = 3747; + this.state = 3745; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { case 1: { - this.state = 3746; + this.state = 3744; this.opt_drop_behavior(); } break; @@ -20212,36 +20344,36 @@ export class PostgreSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 3749; + this.state = 3747; this.match(PostgreSqlParser.KW_DROP); - this.state = 3750; + this.state = 3748; this.match(PostgreSqlParser.KW_CAST); - this.state = 3752; + this.state = 3750; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3751; + this.state = 3749; this.opt_if_exists(); } } - this.state = 3754; + this.state = 3752; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3755; + this.state = 3753; this.typename(); - this.state = 3756; + this.state = 3754; this.match(PostgreSqlParser.KW_AS); - this.state = 3757; + this.state = 3755; this.typename(); - this.state = 3758; + this.state = 3756; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3760; + this.state = 3758; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 436, this.context) ) { case 1: { - this.state = 3759; + this.state = 3757; this.opt_drop_behavior(); } break; @@ -20251,11 +20383,11 @@ export class PostgreSqlParser extends SQLParserBase { case 9: this.enterOuterAlt(localContext, 9); { - this.state = 3762; + this.state = 3760; this.match(PostgreSqlParser.KW_DROP); - this.state = 3763; + this.state = 3761; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3764; + this.state = 3762; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -20264,26 +20396,26 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3766; + this.state = 3764; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 437, this.context) ) { case 1: { - this.state = 3765; + this.state = 3763; this.opt_if_exists(); } break; } - this.state = 3768; + this.state = 3766; this.any_name(); - this.state = 3769; + this.state = 3767; this.table_access_method_clause(); - this.state = 3771; + this.state = 3769; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 438, this.context) ) { case 1: { - this.state = 3770; + this.state = 3768; this.opt_drop_behavior(); } break; @@ -20293,20 +20425,20 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 3773; + this.state = 3771; this.match(PostgreSqlParser.KW_DROP); - this.state = 3774; + this.state = 3772; this.match(PostgreSqlParser.KW_OWNED); - this.state = 3775; + this.state = 3773; this.match(PostgreSqlParser.KW_BY); - this.state = 3776; + this.state = 3774; this.role_list(); - this.state = 3778; + this.state = 3776; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 439, this.context) ) { case 1: { - this.state = 3777; + this.state = 3775; this.opt_drop_behavior(); } break; @@ -20316,28 +20448,28 @@ export class PostgreSqlParser extends SQLParserBase { case 11: this.enterOuterAlt(localContext, 11); { - this.state = 3780; + this.state = 3778; this.match(PostgreSqlParser.KW_DROP); - this.state = 3781; + this.state = 3779; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 3783; + this.state = 3781; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 440, this.context) ) { case 1: { - this.state = 3782; + this.state = 3780; this.opt_if_exists(); } break; } - this.state = 3785; + this.state = 3783; this.colid(); - this.state = 3787; + this.state = 3785; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 441, this.context) ) { case 1: { - this.state = 3786; + this.state = 3784; this.opt_drop_behavior(); } break; @@ -20347,55 +20479,55 @@ export class PostgreSqlParser extends SQLParserBase { case 12: this.enterOuterAlt(localContext, 12); { - this.state = 3789; + this.state = 3787; this.match(PostgreSqlParser.KW_DROP); - this.state = 3790; + this.state = 3788; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 3792; + this.state = 3790; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 442, this.context) ) { case 1: { - this.state = 3791; + this.state = 3789; this.opt_if_exists(); } break; } - this.state = 3794; + this.state = 3792; this.tablespace_name(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 3795; + this.state = 3793; this.match(PostgreSqlParser.KW_DROP); - this.state = 3796; + this.state = 3794; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 3798; + this.state = 3796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3797; + this.state = 3795; this.opt_if_exists(); } } - this.state = 3800; + this.state = 3798; this.match(PostgreSqlParser.KW_FOR); - this.state = 3801; + this.state = 3799; this.typename(); - this.state = 3802; + this.state = 3800; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 3803; + this.state = 3801; this.colid(); - this.state = 3805; + this.state = 3803; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { case 1: { - this.state = 3804; + this.state = 3802; this.opt_drop_behavior(); } break; @@ -20405,9 +20537,9 @@ export class PostgreSqlParser extends SQLParserBase { case 14: this.enterOuterAlt(localContext, 14); { - this.state = 3807; + this.state = 3805; this.match(PostgreSqlParser.KW_DROP); - this.state = 3808; + this.state = 3806; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -20416,53 +20548,47 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3810; + this.state = 3808; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 445, this.context) ) { case 1: { - this.state = 3809; + this.state = 3807; this.opt_if_exists(); } break; } - this.state = 3812; + this.state = 3810; this.role_list(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 3813; + this.state = 3811; this.match(PostgreSqlParser.KW_DROP); - this.state = 3814; + this.state = 3812; this.match(PostgreSqlParser.KW_USER); - this.state = 3815; + this.state = 3813; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 3817; + this.state = 3815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3816; + this.state = 3814; this.opt_if_exists(); } } - this.state = 3819; + this.state = 3817; this.match(PostgreSqlParser.KW_FOR); - this.state = 3822; + this.state = 3820; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -20879,81 +21005,81 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3820; + this.state = 3818; this.rolespec(); } break; case PostgreSqlParser.KW_USER: { - this.state = 3821; + this.state = 3819; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3824; + this.state = 3822; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3825; + this.state = 3823; this.colid(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 3826; + this.state = 3824; this.match(PostgreSqlParser.KW_DROP); - this.state = 3827; + this.state = 3825; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 3829; + this.state = 3827; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 448, this.context) ) { case 1: { - this.state = 3828; + this.state = 3826; this.opt_if_exists(); } break; } - this.state = 3831; + this.state = 3829; this.database_name(); - this.state = 3845; + this.state = 3843; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { case 1: { - this.state = 3833; + this.state = 3831; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 3832; + this.state = 3830; this.match(PostgreSqlParser.KW_WITH); } } { - this.state = 3835; + this.state = 3833; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3836; + this.state = 3834; this.match(PostgreSqlParser.KW_FORCE); - this.state = 3841; + this.state = 3839; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3837; + this.state = 3835; this.match(PostgreSqlParser.COMMA); - this.state = 3838; + this.state = 3836; this.match(PostgreSqlParser.KW_FORCE); } } - this.state = 3843; + this.state = 3841; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3844; + this.state = 3842; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -20982,26 +21108,26 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 310, PostgreSqlParser.RULE_object_type_any_name); let _la: number; try { - this.state = 3865; + this.state = 3863; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: case PostgreSqlParser.KW_TABLE: this.enterOuterAlt(localContext, 1); { - this.state = 3850; + this.state = 3848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 3849; + this.state = 3847; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 3852; + this.state = 3850; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3853; + this.state = 3851; this.table_name(); } break; @@ -21009,19 +21135,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_VIEW: this.enterOuterAlt(localContext, 2); { - this.state = 3855; + this.state = 3853; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 3854; + this.state = 3852; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 3857; + this.state = 3855; this.match(PostgreSqlParser.KW_VIEW); - this.state = 3858; + this.state = 3856; this.view_name(); } break; @@ -21032,7 +21158,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_STATISTICS: this.enterOuterAlt(localContext, 3); { - this.state = 3859; + this.state = 3857; _la = this.tokenStream.LA(1); if(!(_la === 108 || _la === 168 || _la === 226 || _la === 328 || _la === 342)) { this.errorHandler.recoverInline(this); @@ -21041,18 +21167,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3860; + this.state = 3858; this.any_name(); } break; case PostgreSqlParser.KW_TEXT: this.enterOuterAlt(localContext, 4); { - this.state = 3861; + this.state = 3859; this.match(PostgreSqlParser.KW_TEXT); - this.state = 3862; + this.state = 3860; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 3863; + this.state = 3861; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -21061,7 +21187,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3864; + this.state = 3862; this.any_name(); } break; @@ -21088,7 +21214,7 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 312, PostgreSqlParser.RULE_object_type_name); let _la: number; try { - this.state = 3891; + this.state = 3889; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: @@ -21103,111 +21229,111 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_PUBLICATION: this.enterOuterAlt(localContext, 1); { - this.state = 3883; + this.state = 3881; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_EVENT: { - this.state = 3867; + this.state = 3865; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3868; + this.state = 3866; this.match(PostgreSqlParser.KW_TRIGGER); } break; case PostgreSqlParser.KW_ACCESS: { - this.state = 3869; + this.state = 3867; this.match(PostgreSqlParser.KW_ACCESS); - this.state = 3870; + this.state = 3868; this.match(PostgreSqlParser.KW_METHOD); } break; case PostgreSqlParser.KW_EXTENSION: { - this.state = 3871; + this.state = 3869; this.match(PostgreSqlParser.KW_EXTENSION); } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 3872; + this.state = 3870; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 3873; + this.state = 3871; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_ROLE: { - this.state = 3874; + this.state = 3872; this.match(PostgreSqlParser.KW_ROLE); } break; case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 3875; + this.state = 3873; this.match(PostgreSqlParser.KW_SUBSCRIPTION); } break; case PostgreSqlParser.KW_FOREIGN: { - this.state = 3876; + this.state = 3874; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3877; + this.state = 3875; this.match(PostgreSqlParser.KW_DATA); - this.state = 3878; + this.state = 3876; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_LANGUAGE: case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 3880; + this.state = 3878; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 3879; + this.state = 3877; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 3882; + this.state = 3880; this.match(PostgreSqlParser.KW_LANGUAGE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3885; + this.state = 3883; this.colid(); } break; case PostgreSqlParser.KW_SCHEMA: this.enterOuterAlt(localContext, 2); { - this.state = 3886; + this.state = 3884; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3887; + this.state = 3885; this.schema_name(); } break; case PostgreSqlParser.KW_DATABASE: this.enterOuterAlt(localContext, 3); { - this.state = 3888; + this.state = 3886; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 3889; + this.state = 3887; this.database_name(); } break; case PostgreSqlParser.KW_TABLESPACE: this.enterOuterAlt(localContext, 4); { - this.state = 3890; + this.state = 3888; this.opttablespace(); } break; @@ -21236,21 +21362,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3893; + this.state = 3891; this.any_name(); - this.state = 3898; + this.state = 3896; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3894; + this.state = 3892; this.match(PostgreSqlParser.COMMA); - this.state = 3895; + this.state = 3893; this.any_name(); } } - this.state = 3900; + this.state = 3898; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -21276,14 +21402,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3901; + this.state = 3899; this.colid(); - this.state = 3903; + this.state = 3901; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { case 1: { - this.state = 3902; + this.state = 3900; this.attrs(); } break; @@ -21311,7 +21437,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3907; + this.state = 3905; this.errorHandler.sync(this); alternative = 1; do { @@ -21319,9 +21445,9 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 3905; + this.state = 3903; this.match(PostgreSqlParser.DOT); - this.state = 3906; + this.state = 3904; this.collabel(); } } @@ -21329,7 +21455,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3909; + this.state = 3907; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -21356,42 +21482,42 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3911; + this.state = 3909; this.match(PostgreSqlParser.KW_TRUNCATE); - this.state = 3913; + this.state = 3911; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 3912; + this.state = 3910; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 3915; + this.state = 3913; this.truncate_table(); - this.state = 3920; + this.state = 3918; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3916; + this.state = 3914; this.match(PostgreSqlParser.COMMA); - this.state = 3917; + this.state = 3915; this.truncate_table(); } } - this.state = 3922; + this.state = 3920; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3925; + this.state = 3923; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: { - this.state = 3923; + this.state = 3921; _la = this.tokenStream.LA(1); if(!(_la === 167 || _la === 314)) { this.errorHandler.recoverInline(this); @@ -21400,17 +21526,17 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3924; + this.state = 3922; this.match(PostgreSqlParser.KW_IDENTITY); } break; } - this.state = 3928; + this.state = 3926; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: { - this.state = 3927; + this.state = 3925; this.opt_drop_behavior(); } break; @@ -21438,24 +21564,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3931; + this.state = 3929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 3930; + this.state = 3928; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 3933; + this.state = 3931; this.table_name(); - this.state = 3935; + this.state = 3933; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 3934; + this.state = 3932; this.match(PostgreSqlParser.STAR); } } @@ -21483,52 +21609,52 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3937; + this.state = 3935; this.match(PostgreSqlParser.KW_COMMENT); - this.state = 3938; + this.state = 3936; this.match(PostgreSqlParser.KW_ON); - this.state = 3997; + this.state = 3995; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { case 1: { - this.state = 3939; + this.state = 3937; this.object_type_any_name(); } break; case 2: { - this.state = 3940; + this.state = 3938; this.object_type_name(); } break; case 3: { - this.state = 3941; + this.state = 3939; this.match(PostgreSqlParser.KW_COLUMN); { - this.state = 3942; + this.state = 3940; this.colid(); - this.state = 3944; + this.state = 3942; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { case 1: { - this.state = 3943; + this.state = 3941; this.attrs(); } break; } } - this.state = 3946; + this.state = 3944; this.match(PostgreSqlParser.DOT); - this.state = 3947; + this.state = 3945; this.column_name(); } break; case 4: { - this.state = 3949; + this.state = 3947; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -21537,65 +21663,65 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3950; + this.state = 3948; this.typename(); } break; case 5: { - this.state = 3951; + this.state = 3949; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 3952; + this.state = 3950; this.aggregate_with_argtypes(); } break; case 6: { - this.state = 3953; + this.state = 3951; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3954; + this.state = 3952; this.function_with_argtypes(); } break; case 7: { - this.state = 3955; + this.state = 3953; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3956; + this.state = 3954; this.operator_with_argtypes(); } break; case 8: { - this.state = 3957; + this.state = 3955; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 3958; + this.state = 3956; this.colid(); - this.state = 3959; + this.state = 3957; this.match(PostgreSqlParser.KW_ON); - this.state = 3965; + this.state = 3963; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { case 1: { - this.state = 3960; + this.state = 3958; this.table_name(); } break; case 2: { { - this.state = 3962; + this.state = 3960; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { case 1: { - this.state = 3961; + this.state = 3959; this.match(PostgreSqlParser.KW_DOMAIN); } break; } - this.state = 3964; + this.state = 3962; this.any_name(); } } @@ -21605,7 +21731,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case 9: { - this.state = 3967; + this.state = 3965; _la = this.tokenStream.LA(1); if(!(_la === 321 || _la === 357 || _la === 445)) { this.errorHandler.recoverInline(this); @@ -21614,49 +21740,49 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3968; + this.state = 3966; this.colid(); - this.state = 3969; + this.state = 3967; this.match(PostgreSqlParser.KW_ON); - this.state = 3970; + this.state = 3968; this.any_name(); } break; case 10: { - this.state = 3972; + this.state = 3970; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3973; + this.state = 3971; this.procedure_with_argtypes(); } break; case 11: { - this.state = 3974; + this.state = 3972; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 3975; + this.state = 3973; this.routine_with_argtypes(); } break; case 12: { - this.state = 3976; + this.state = 3974; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 3977; + this.state = 3975; this.match(PostgreSqlParser.KW_FOR); - this.state = 3978; + this.state = 3976; this.typename(); - this.state = 3979; + this.state = 3977; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 3980; + this.state = 3978; this.colid(); } break; case 13: { - this.state = 3982; + this.state = 3980; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3983; + this.state = 3981; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -21665,42 +21791,42 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3984; + this.state = 3982; this.any_name(); - this.state = 3985; + this.state = 3983; this.table_access_method_clause(); } break; case 14: { - this.state = 3987; + this.state = 3985; this.match(PostgreSqlParser.KW_LARGE); - this.state = 3988; + this.state = 3986; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 3989; + this.state = 3987; this.numericonly(); } break; case 15: { - this.state = 3990; + this.state = 3988; this.match(PostgreSqlParser.KW_CAST); - this.state = 3991; + this.state = 3989; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3992; + this.state = 3990; this.typename(); - this.state = 3993; + this.state = 3991; this.match(PostgreSqlParser.KW_AS); - this.state = 3994; + this.state = 3992; this.typename(); - this.state = 3995; + this.state = 3993; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 3999; + this.state = 3997; this.match(PostgreSqlParser.KW_IS); - this.state = 4002; + this.state = 4000; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -21708,13 +21834,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4000; + this.state = 3998; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 4001; + this.state = 3999; this.match(PostgreSqlParser.KW_NULL); } break; @@ -21744,30 +21870,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4004; + this.state = 4002; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 4005; + this.state = 4003; this.match(PostgreSqlParser.KW_LABEL); - this.state = 4008; + this.state = 4006; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 4006; + this.state = 4004; this.match(PostgreSqlParser.KW_FOR); - this.state = 4007; + this.state = 4005; this.nonreservedword_or_sconst(); } } - this.state = 4010; + this.state = 4008; this.match(PostgreSqlParser.KW_ON); - this.state = 4028; + this.state = 4026; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 474, this.context) ) { case 1: { - this.state = 4011; + this.state = 4009; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -21776,76 +21902,76 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4012; + this.state = 4010; this.typename(); } break; case 2: { - this.state = 4013; + this.state = 4011; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4014; + this.state = 4012; this.aggregate_with_argtypes(); } break; case 3: { - this.state = 4015; + this.state = 4013; this.match(PostgreSqlParser.KW_COLUMN); - this.state = 4016; + this.state = 4014; this.column_name(); } break; case 4: { - this.state = 4017; + this.state = 4015; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4018; + this.state = 4016; this.function_with_argtypes(); } break; case 5: { - this.state = 4019; + this.state = 4017; this.match(PostgreSqlParser.KW_LARGE); - this.state = 4020; + this.state = 4018; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 4021; + this.state = 4019; this.numericonly(); } break; case 6: { - this.state = 4022; + this.state = 4020; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4023; + this.state = 4021; this.procedure_with_argtypes(); } break; case 7: { - this.state = 4024; + this.state = 4022; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4025; + this.state = 4023; this.routine_with_argtypes(); } break; case 8: { - this.state = 4026; + this.state = 4024; this.object_type_any_name(); } break; case 9: { - this.state = 4027; + this.state = 4025; this.object_type_name(); } break; } - this.state = 4030; + this.state = 4028; this.match(PostgreSqlParser.KW_IS); - this.state = 4033; + this.state = 4031; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -21853,13 +21979,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4031; + this.state = 4029; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 4032; + this.state = 4030; this.match(PostgreSqlParser.KW_NULL); } break; @@ -21889,7 +22015,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4035; + this.state = 4033; _la = this.tokenStream.LA(1); if(!(_la === 61 || _la === 265)) { this.errorHandler.recoverInline(this); @@ -21898,7 +22024,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4036; + this.state = 4034; this.fetch_args(); } } @@ -21921,18 +22047,18 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 330, PostgreSqlParser.RULE_fetch_args); let _la: number; try { - this.state = 4081; + this.state = 4079; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 487, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4039; + this.state = 4037; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { case 1: { - this.state = 4038; + this.state = 4036; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 249 || _la === 268 || _la === 293)) { this.errorHandler.recoverInline(this); @@ -21944,29 +22070,29 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 4042; + this.state = 4040; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4041; + this.state = 4039; this.from_in(); } } - this.state = 4044; + this.state = 4042; this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4046; + this.state = 4044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130 || _la === 307) { { - this.state = 4045; + this.state = 4043; _la = this.tokenStream.LA(1); if(!(_la === 130 || _la === 307)) { this.errorHandler.recoverInline(this); @@ -21978,96 +22104,90 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 4048; + this.state = 4046; this.signediconst(); - this.state = 4050; + this.state = 4048; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4049; + this.state = 4047; this.from_in(); } } - this.state = 4052; + this.state = 4050; this.colid(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4054; + this.state = 4052; this.match(PostgreSqlParser.KW_FORWARD); - this.state = 4056; + this.state = 4054; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571) { { - this.state = 4055; + this.state = 4053; this.signediconst(); } } - this.state = 4059; + this.state = 4057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4058; + this.state = 4056; this.from_in(); } } - this.state = 4061; + this.state = 4059; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4063; + this.state = 4061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 210) { { - this.state = 4062; + this.state = 4060; this.match(PostgreSqlParser.KW_FORWARD); } } - this.state = 4065; + this.state = 4063; this.match(PostgreSqlParser.KW_ALL); - this.state = 4067; + this.state = 4065; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4066; + this.state = 4064; this.from_in(); } } - this.state = 4069; + this.state = 4067; this.colid(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4070; + this.state = 4068; this.match(PostgreSqlParser.KW_BACKWARD); - this.state = 4075; + this.state = 4073; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_FROM: case PostgreSqlParser.KW_IN: case PostgreSqlParser.KW_IS: @@ -22451,6 +22571,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -22463,12 +22584,12 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4072; + this.state = 4070; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 30) { { - this.state = 4071; + this.state = 4069; this.match(PostgreSqlParser.KW_ALL); } } @@ -22479,24 +22600,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.Integral: { - this.state = 4074; + this.state = 4072; this.signediconst(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4078; + this.state = 4076; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4077; + this.state = 4075; this.from_in(); } } - this.state = 4080; + this.state = 4078; this.colid(); } break; @@ -22523,7 +22644,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4083; + this.state = 4081; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 68)) { this.errorHandler.recoverInline(this); @@ -22554,28 +22675,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4085; + this.state = 4083; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4086; + this.state = 4084; this.privileges(); - this.state = 4087; + this.state = 4085; this.match(PostgreSqlParser.KW_ON); - this.state = 4088; + this.state = 4086; this.privilege_target(); - this.state = 4089; + this.state = 4087; this.match(PostgreSqlParser.KW_TO); - this.state = 4090; + this.state = 4088; this.grantee_list(); - this.state = 4094; + this.state = 4092; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) { case 1: { - this.state = 4091; + this.state = 4089; this.match(PostgreSqlParser.KW_WITH); - this.state = 4092; + this.state = 4090; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4093; + this.state = 4091; this.match(PostgreSqlParser.KW_OPTION); } break; @@ -22603,38 +22724,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4096; + this.state = 4094; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 4100; + this.state = 4098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4097; + this.state = 4095; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4098; + this.state = 4096; this.match(PostgreSqlParser.KW_OPTION); - this.state = 4099; + this.state = 4097; this.match(PostgreSqlParser.KW_FOR); } } - this.state = 4102; + this.state = 4100; this.privileges(); - this.state = 4103; + this.state = 4101; this.match(PostgreSqlParser.KW_ON); - this.state = 4104; + this.state = 4102; this.privilege_target(); - this.state = 4105; + this.state = 4103; this.match(PostgreSqlParser.KW_FROM); - this.state = 4106; + this.state = 4104; this.grantee_list(); - this.state = 4108; + this.state = 4106; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { case 1: { - this.state = 4107; + this.state = 4105; this.opt_drop_behavior(); } break; @@ -22660,27 +22781,27 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 338, PostgreSqlParser.RULE_privileges); let _la: number; try { - this.state = 4133; + this.state = 4131; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 495, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4110; + this.state = 4108; this.privilege(); - this.state = 4115; + this.state = 4113; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4111; + this.state = 4109; this.match(PostgreSqlParser.COMMA); - this.state = 4112; + this.state = 4110; this.privilege(); } } - this.state = 4117; + this.state = 4115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22689,24 +22810,24 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4118; + this.state = 4116; this.match(PostgreSqlParser.KW_ALL); - this.state = 4120; + this.state = 4118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 294) { { - this.state = 4119; + this.state = 4117; this.match(PostgreSqlParser.KW_PRIVILEGES); } } - this.state = 4123; + this.state = 4121; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 4122; + this.state = 4120; this.opt_column_list(); } } @@ -22716,21 +22837,21 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4125; + this.state = 4123; this.beforeprivilegeselect(); - this.state = 4130; + this.state = 4128; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4126; + this.state = 4124; this.match(PostgreSqlParser.COMMA); - this.state = 4127; + this.state = 4125; this.beforeprivilegeselect(); } } - this.state = 4132; + this.state = 4130; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22759,7 +22880,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4135; + this.state = 4133; _la = this.tokenStream.LA(1); if(!(_la === 46 || _la === 88 || _la === 182 || _la === 202 || _la === 241 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 131173) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -22791,34 +22912,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4141; + this.state = 4139; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SELECT: { - this.state = 4137; + this.state = 4135; this.match(PostgreSqlParser.KW_SELECT); } break; case PostgreSqlParser.KW_REFERENCES: { - this.state = 4138; + this.state = 4136; this.match(PostgreSqlParser.KW_REFERENCES); } break; case PostgreSqlParser.KW_CREATE: { - this.state = 4139; + this.state = 4137; this.match(PostgreSqlParser.KW_CREATE); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -23200,6 +23315,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -23212,19 +23328,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4140; + this.state = 4138; this.colid(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4144; + this.state = 4142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 4143; + this.state = 4141; this.opt_column_list(); } } @@ -23250,59 +23366,59 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 344, PostgreSqlParser.RULE_privilege_target); let _la: number; try { - this.state = 4191; + this.state = 4189; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 502, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4146; + this.state = 4144; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4147; + this.state = 4145; this.table_name_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4149; + this.state = 4147; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 498, this.context) ) { case 1: { - this.state = 4148; + this.state = 4146; this.match(PostgreSqlParser.KW_SEQUENCE); } break; } - this.state = 4151; + this.state = 4149; this.qualified_name_list(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4159; + this.state = 4157; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: { - this.state = 4152; + this.state = 4150; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4156; + this.state = 4154; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DATA: { - this.state = 4153; + this.state = 4151; this.match(PostgreSqlParser.KW_DATA); - this.state = 4154; + this.state = 4152; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 4155; + this.state = 4153; this.match(PostgreSqlParser.KW_SERVER); } break; @@ -23313,57 +23429,57 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_LANGUAGE: { - this.state = 4158; + this.state = 4156; this.match(PostgreSqlParser.KW_LANGUAGE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4161; + this.state = 4159; this.name_list(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4162; + this.state = 4160; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4163; + this.state = 4161; this.function_with_argtypes_list(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4164; + this.state = 4162; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4165; + this.state = 4163; this.procedure_with_argtypes_list(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4166; + this.state = 4164; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4167; + this.state = 4165; this.routine_with_argtypes_list(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4168; + this.state = 4166; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 4169; + this.state = 4167; this.database_nameList(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4170; + this.state = 4168; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -23372,32 +23488,32 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4171; + this.state = 4169; this.any_name_list(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4172; + this.state = 4170; this.match(PostgreSqlParser.KW_LARGE); - this.state = 4173; + this.state = 4171; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 4174; + this.state = 4172; this.numericonly(); - this.state = 4179; + this.state = 4177; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4175; + this.state = 4173; this.match(PostgreSqlParser.COMMA); - this.state = 4176; + this.state = 4174; this.numericonly(); } } - this.state = 4181; + this.state = 4179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -23406,27 +23522,27 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 4182; + this.state = 4180; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4183; + this.state = 4181; this.schema_name_list(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 4184; + this.state = 4182; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 4185; + this.state = 4183; this.tablespace_name_list(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 4186; + this.state = 4184; this.match(PostgreSqlParser.KW_ALL); - this.state = 4187; + this.state = 4185; _la = this.tokenStream.LA(1); if(!(_la === 212 || _la === 329 || _la === 350 || _la === 455 || _la === 457)) { this.errorHandler.recoverInline(this); @@ -23435,11 +23551,11 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4188; + this.state = 4186; this.match(PostgreSqlParser.KW_IN); - this.state = 4189; + this.state = 4187; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4190; + this.state = 4188; this.schema_name_list(); } break; @@ -23467,44 +23583,44 @@ export class PostgreSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 1); { { - this.state = 4194; + this.state = 4192; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 4193; + this.state = 4191; this.match(PostgreSqlParser.KW_GROUP); } } - this.state = 4196; + this.state = 4194; this.rolespec(); } - this.state = 4205; + this.state = 4203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4198; + this.state = 4196; this.match(PostgreSqlParser.COMMA); { - this.state = 4200; + this.state = 4198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 4199; + this.state = 4197; this.match(PostgreSqlParser.KW_GROUP); } } - this.state = 4202; + this.state = 4200; this.rolespec(); } } } - this.state = 4207; + this.state = 4205; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -23531,54 +23647,54 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4208; + this.state = 4206; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4209; + this.state = 4207; this.privilege(); - this.state = 4214; + this.state = 4212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4210; + this.state = 4208; this.match(PostgreSqlParser.COMMA); - this.state = 4211; + this.state = 4209; this.privilege(); } } - this.state = 4216; + this.state = 4214; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4217; + this.state = 4215; this.match(PostgreSqlParser.KW_TO); - this.state = 4218; + this.state = 4216; this.role_list(); - this.state = 4222; + this.state = 4220; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { case 1: { - this.state = 4219; + this.state = 4217; this.match(PostgreSqlParser.KW_WITH); - this.state = 4220; + this.state = 4218; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 4221; + this.state = 4219; this.match(PostgreSqlParser.KW_OPTION); } break; } - this.state = 4227; + this.state = 4225; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 508, this.context) ) { case 1: { - this.state = 4224; + this.state = 4222; this.match(PostgreSqlParser.KW_GRANTED); - this.state = 4225; + this.state = 4223; this.match(PostgreSqlParser.KW_BY); - this.state = 4226; + this.state = 4224; this.rolespec(); } break; @@ -23606,64 +23722,64 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4229; + this.state = 4227; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 4233; + this.state = 4231; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 509, this.context) ) { case 1: { - this.state = 4230; + this.state = 4228; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 4231; + this.state = 4229; this.match(PostgreSqlParser.KW_OPTION); - this.state = 4232; + this.state = 4230; this.match(PostgreSqlParser.KW_FOR); } break; } - this.state = 4235; + this.state = 4233; this.privilege(); - this.state = 4240; + this.state = 4238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4236; + this.state = 4234; this.match(PostgreSqlParser.COMMA); - this.state = 4237; + this.state = 4235; this.privilege(); } } - this.state = 4242; + this.state = 4240; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4243; + this.state = 4241; this.match(PostgreSqlParser.KW_FROM); - this.state = 4244; + this.state = 4242; this.role_list(); - this.state = 4248; + this.state = 4246; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 511, this.context) ) { case 1: { - this.state = 4245; + this.state = 4243; this.match(PostgreSqlParser.KW_GRANTED); - this.state = 4246; + this.state = 4244; this.match(PostgreSqlParser.KW_BY); - this.state = 4247; + this.state = 4245; this.rolespec(); } break; } - this.state = 4251; + this.state = 4249; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context) ) { case 1: { - this.state = 4250; + this.state = 4248; this.opt_drop_behavior(); } break; @@ -23691,35 +23807,35 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4253; + this.state = 4251; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4254; + this.state = 4252; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 4255; + this.state = 4253; this.match(PostgreSqlParser.KW_PRIVILEGES); - this.state = 4264; + this.state = 4262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 62 || _la === 68) { { - this.state = 4262; + this.state = 4260; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: { - this.state = 4256; + this.state = 4254; this.match(PostgreSqlParser.KW_IN); - this.state = 4257; + this.state = 4255; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4258; + this.state = 4256; this.schema_name_list(); } break; case PostgreSqlParser.KW_FOR: { - this.state = 4259; + this.state = 4257; this.match(PostgreSqlParser.KW_FOR); - this.state = 4260; + this.state = 4258; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -23728,7 +23844,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4261; + this.state = 4259; this.role_list(); } break; @@ -23736,11 +23852,11 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 4266; + this.state = 4264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4267; + this.state = 4265; this.defaclaction(); } } @@ -23763,34 +23879,34 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 354, PostgreSqlParser.RULE_defaclaction); let _la: number; try { - this.state = 4294; + this.state = 4292; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_GRANT: this.enterOuterAlt(localContext, 1); { - this.state = 4269; + this.state = 4267; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4270; + this.state = 4268; this.privileges(); - this.state = 4271; + this.state = 4269; this.match(PostgreSqlParser.KW_ON); - this.state = 4272; + this.state = 4270; this.defacl_privilege_target(); - this.state = 4273; + this.state = 4271; this.match(PostgreSqlParser.KW_TO); - this.state = 4274; + this.state = 4272; this.grantee_list(); - this.state = 4278; + this.state = 4276; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 515, this.context) ) { case 1: { - this.state = 4275; + this.state = 4273; this.match(PostgreSqlParser.KW_WITH); - this.state = 4276; + this.state = 4274; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4277; + this.state = 4275; this.match(PostgreSqlParser.KW_OPTION); } break; @@ -23800,38 +23916,38 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_REVOKE: this.enterOuterAlt(localContext, 2); { - this.state = 4280; + this.state = 4278; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 4284; + this.state = 4282; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4281; + this.state = 4279; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4282; + this.state = 4280; this.match(PostgreSqlParser.KW_OPTION); - this.state = 4283; + this.state = 4281; this.match(PostgreSqlParser.KW_FOR); } } - this.state = 4286; + this.state = 4284; this.privileges(); - this.state = 4287; + this.state = 4285; this.match(PostgreSqlParser.KW_ON); - this.state = 4288; + this.state = 4286; this.defacl_privilege_target(); - this.state = 4289; + this.state = 4287; this.match(PostgreSqlParser.KW_FROM); - this.state = 4290; + this.state = 4288; this.grantee_list(); - this.state = 4292; + this.state = 4290; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 517, this.context) ) { case 1: { - this.state = 4291; + this.state = 4289; this.opt_drop_behavior(); } break; @@ -23863,7 +23979,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4296; + this.state = 4294; _la = this.tokenStream.LA(1); if(!(_la === 212 || _la === 329 || _la === 350 || _la === 361 || _la === 455 || _la === 456)) { this.errorHandler.recoverInline(this); @@ -23895,126 +24011,126 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4298; + this.state = 4296; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4300; + this.state = 4298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 98) { { - this.state = 4299; + this.state = 4297; this.match(PostgreSqlParser.KW_UNIQUE); } } - this.state = 4302; + this.state = 4300; this.match(PostgreSqlParser.KW_INDEX); - this.state = 4304; + this.state = 4302; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4303; + this.state = 4301; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4307; + this.state = 4305; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 521, this.context) ) { case 1: { - this.state = 4306; + this.state = 4304; this.opt_if_not_exists(); } break; } - this.state = 4310; + this.state = 4308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4309; + this.state = 4307; this.colid(); } } - this.state = 4312; + this.state = 4310; this.match(PostgreSqlParser.KW_ON); - this.state = 4313; + this.state = 4311; this.relation_expr(); - this.state = 4315; + this.state = 4313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 4314; + this.state = 4312; this.table_access_method_clause(); } } - this.state = 4317; + this.state = 4315; this.index_params(); - this.state = 4320; + this.state = 4318; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { case 1: { - this.state = 4318; + this.state = 4316; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 4319; + this.state = 4317; this.index_params(); } break; } - this.state = 4327; + this.state = 4325; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 526, this.context) ) { case 1: { - this.state = 4322; + this.state = 4320; this.match(PostgreSqlParser.KW_NULLS); - this.state = 4324; + this.state = 4322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 4323; + this.state = 4321; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 4326; + this.state = 4324; this.match(PostgreSqlParser.KW_DISTINCT); } break; } - this.state = 4330; + this.state = 4328; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 527, this.context) ) { case 1: { - this.state = 4329; + this.state = 4327; this.opt_reloptions(); } break; } - this.state = 4333; + this.state = 4331; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 528, this.context) ) { case 1: { - this.state = 4332; + this.state = 4330; this.opttablespace(); } break; } - this.state = 4336; + this.state = 4334; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 4335; + this.state = 4333; this.where_clause(); } } @@ -24042,27 +24158,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4338; + this.state = 4336; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4339; + this.state = 4337; this.index_elem(); - this.state = 4344; + this.state = 4342; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4340; + this.state = 4338; this.match(PostgreSqlParser.COMMA); - this.state = 4341; + this.state = 4339; this.index_elem(); } } - this.state = 4346; + this.state = 4344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4347; + this.state = 4345; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -24087,53 +24203,53 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4355; + this.state = 4353; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 531, this.context) ) { case 1: { - this.state = 4349; + this.state = 4347; this.column_name(); } break; case 2: { - this.state = 4350; + this.state = 4348; this.func_expr_windowless(); } break; case 3: { - this.state = 4351; + this.state = 4349; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4352; + this.state = 4350; this.expression(); - this.state = 4353; + this.state = 4351; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 4358; + this.state = 4356; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 532, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 4357; + this.state = 4355; this.opt_collate_clause(); } - break; } - this.state = 4366; + + this.state = 4364; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context) ) { case 1: { - this.state = 4361; + this.state = 4359; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 533, this.context) ) { case 1: { - this.state = 4360; + this.state = 4358; this.any_name(); } break; @@ -24142,19 +24258,19 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 4363; + this.state = 4361; this.any_name(); - this.state = 4364; + this.state = 4362; this.reloptions(); } break; } - this.state = 4369; + this.state = 4367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 37 || _la === 55) { { - this.state = 4368; + this.state = 4366; _la = this.tokenStream.LA(1); if(!(_la === 37 || _la === 55)) { this.errorHandler.recoverInline(this); @@ -24166,14 +24282,14 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 4373; + this.state = 4371; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 273) { { - this.state = 4371; + this.state = 4369; this.match(PostgreSqlParser.KW_NULLS); - this.state = 4372; + this.state = 4370; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 249)) { this.errorHandler.recoverInline(this); @@ -24209,34 +24325,34 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4375; + this.state = 4373; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4377; + this.state = 4375; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 4376; + this.state = 4374; this.opt_or_replace(); } } - this.state = 4383; + this.state = 4381; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4379; + this.state = 4377; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4380; + this.state = 4378; this.function_name_create(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 4381; + this.state = 4379; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4382; + this.state = 4380; this.procedure_name_create(); } break; @@ -24244,54 +24360,48 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } { - this.state = 4385; + this.state = 4383; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4394; + this.state = 4392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4386; + this.state = 4384; this.func_arg_with_default(); - this.state = 4391; + this.state = 4389; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4387; + this.state = 4385; this.match(PostgreSqlParser.COMMA); - this.state = 4388; + this.state = 4386; this.func_arg_with_default(); } } - this.state = 4393; + this.state = 4391; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4396; + this.state = 4394; this.match(PostgreSqlParser.CLOSE_PAREN); } - this.state = 4414; + this.state = 4412; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 543, this.context) ) { case 1: { - this.state = 4398; + this.state = 4396; this.match(PostgreSqlParser.KW_RETURNS); - this.state = 4412; + this.state = 4410; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -24694,6 +24804,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -24706,36 +24817,36 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4399; + this.state = 4397; this.func_type(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 4400; + this.state = 4398; this.match(PostgreSqlParser.KW_TABLE); { - this.state = 4401; + this.state = 4399; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4402; + this.state = 4400; this.table_func_column(); - this.state = 4407; + this.state = 4405; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4403; + this.state = 4401; this.match(PostgreSqlParser.COMMA); - this.state = 4404; + this.state = 4402; this.table_func_column(); } } - this.state = 4409; + this.state = 4407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4410; + this.state = 4408; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -24746,7 +24857,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 4417; + this.state = 4415; this.errorHandler.sync(this); alternative = 1; do { @@ -24754,7 +24865,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 4416; + this.state = 4414; this.createfunc_opt_item(); } } @@ -24762,22 +24873,22 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4419; + this.state = 4417; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 544, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 4426; + this.state = 4424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { case 1: { - this.state = 4421; + this.state = 4419; this.match(PostgreSqlParser.KW_WITH); - this.state = 4422; + this.state = 4420; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4423; + this.state = 4421; this.name_list(); - this.state = 4424; + this.state = 4422; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -24804,9 +24915,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4428; + this.state = 4426; this.match(PostgreSqlParser.KW_OR); - this.state = 4429; + this.state = 4427; this.match(PostgreSqlParser.KW_REPLACE); } } @@ -24831,19 +24942,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4431; + this.state = 4429; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4433; + this.state = 4431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4432; + this.state = 4430; this.func_args_list(); } } - this.state = 4435; + this.state = 4433; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -24868,21 +24979,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4437; + this.state = 4435; this.func_arg(); - this.state = 4442; + this.state = 4440; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4438; + this.state = 4436; this.match(PostgreSqlParser.COMMA); - this.state = 4439; + this.state = 4437; this.func_arg(); } } - this.state = 4444; + this.state = 4442; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24909,21 +25020,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4445; + this.state = 4443; this.routine_with_argtypes(); - this.state = 4450; + this.state = 4448; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4446; + this.state = 4444; this.match(PostgreSqlParser.COMMA); - this.state = 4447; + this.state = 4445; this.routine_with_argtypes(); } } - this.state = 4452; + this.state = 4450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24947,116 +25058,116 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Routine_with_argtypesContext(this.context, this.state); this.enterRule(localContext, 374, PostgreSqlParser.RULE_routine_with_argtypes); try { - this.state = 4458; + this.state = 4456; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4453; + this.state = 4451; this.routine_name(); + this.state = 4452; + this.func_args(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { this.state = 4454; + this.type_func_name_keyword(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 4455; + this.qualified_name(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext { + let localContext = new Procedure_with_argtypes_listContext(this.context, this.state); + this.enterRule(localContext, 376, PostgreSqlParser.RULE_procedure_with_argtypes_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 4458; + this.procedure_with_argtypes(); + this.state = 4463; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4459; + this.match(PostgreSqlParser.COMMA); + this.state = 4460; + this.procedure_with_argtypes(); + } + } + this.state = 4465; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public procedure_with_argtypes(): Procedure_with_argtypesContext { + let localContext = new Procedure_with_argtypesContext(this.context, this.state); + this.enterRule(localContext, 378, PostgreSqlParser.RULE_procedure_with_argtypes); + try { + this.state = 4471; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 4466; + this.procedure_name(); + this.state = 4467; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4456; + this.state = 4469; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4457; - this.qualified_name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext { - let localContext = new Procedure_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 376, PostgreSqlParser.RULE_procedure_with_argtypes_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4460; - this.procedure_with_argtypes(); - this.state = 4465; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4461; - this.match(PostgreSqlParser.COMMA); - this.state = 4462; - this.procedure_with_argtypes(); - } - } - this.state = 4467; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_with_argtypes(): Procedure_with_argtypesContext { - let localContext = new Procedure_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 378, PostgreSqlParser.RULE_procedure_with_argtypes); - try { - this.state = 4473; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4468; - this.procedure_name(); - this.state = 4469; - this.func_args(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4471; - this.type_func_name_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4472; + this.state = 4470; this.qualified_name(); } break; @@ -25083,21 +25194,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4475; + this.state = 4473; this.function_with_argtypes(); - this.state = 4480; + this.state = 4478; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4476; + this.state = 4474; this.match(PostgreSqlParser.COMMA); - this.state = 4477; + this.state = 4475; this.function_with_argtypes(); } } - this.state = 4482; + this.state = 4480; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -25121,29 +25232,29 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_with_argtypesContext(this.context, this.state); this.enterRule(localContext, 382, PostgreSqlParser.RULE_function_with_argtypes); try { - this.state = 4488; + this.state = 4486; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4483; + this.state = 4481; this.function_name(); - this.state = 4484; + this.state = 4482; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4486; + this.state = 4484; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4487; + this.state = 4485; this.qualified_name(); } break; @@ -25169,19 +25280,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4498; + this.state = 4496; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 556, this.context) ) { case 1: { - this.state = 4490; + this.state = 4488; this.arg_class(); - this.state = 4492; + this.state = 4490; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 554, this.context) ) { case 1: { - this.state = 4491; + this.state = 4489; this.type_function_name(); } break; @@ -25190,14 +25301,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 4494; + this.state = 4492; this.type_function_name(); - this.state = 4496; + this.state = 4494; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { case 1: { - this.state = 4495; + this.state = 4493; this.arg_class(); } break; @@ -25205,7 +25316,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 4500; + this.state = 4498; this.func_type(); } } @@ -25227,20 +25338,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Arg_classContext(this.context, this.state); this.enterRule(localContext, 386, PostgreSqlParser.RULE_arg_class); try { - this.state = 4509; + this.state = 4507; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 4502; + this.state = 4500; this.match(PostgreSqlParser.KW_IN); - this.state = 4504; + this.state = 4502; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { case 1: { - this.state = 4503; + this.state = 4501; this.match(PostgreSqlParser.KW_OUT); } break; @@ -25250,21 +25361,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OUT: this.enterOuterAlt(localContext, 2); { - this.state = 4506; + this.state = 4504; this.match(PostgreSqlParser.KW_OUT); } break; case PostgreSqlParser.KW_INOUT: this.enterOuterAlt(localContext, 3); { - this.state = 4507; + this.state = 4505; this.match(PostgreSqlParser.KW_INOUT); } break; case PostgreSqlParser.KW_VARIADIC: this.enterOuterAlt(localContext, 4); { - this.state = 4508; + this.state = 4506; this.match(PostgreSqlParser.KW_VARIADIC); } break; @@ -25291,36 +25402,36 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 388, PostgreSqlParser.RULE_func_type); let _la: number; try { - this.state = 4520; + this.state = 4518; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 560, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4511; + this.state = 4509; this.typename(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4513; + this.state = 4511; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 415) { { - this.state = 4512; + this.state = 4510; this.match(PostgreSqlParser.KW_SETOF); } } - this.state = 4515; + this.state = 4513; this.type_function_name(); - this.state = 4516; + this.state = 4514; this.attrs(); - this.state = 4517; + this.state = 4515; this.match(PostgreSqlParser.PERCENT); - this.state = 4518; + this.state = 4516; this.match(PostgreSqlParser.KW_TYPE); } break; @@ -25347,14 +25458,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4522; + this.state = 4520; this.func_arg(); - this.state = 4525; + this.state = 4523; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 53) { { - this.state = 4523; + this.state = 4521; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 53)) { this.errorHandler.recoverInline(this); @@ -25363,7 +25474,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4524; + this.state = 4522; this.expression(); } } @@ -25391,25 +25502,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4527; + this.state = 4525; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4537; + this.state = 4535; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.STAR: { - this.state = 4528; + this.state = 4526; this.match(PostgreSqlParser.STAR); } break; case PostgreSqlParser.CLOSE_PAREN: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IN: case PostgreSqlParser.KW_ORDER: case PostgreSqlParser.KW_VARIADIC: @@ -25815,6 +25920,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -25827,26 +25933,26 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4530; + this.state = 4528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4529; + this.state = 4527; this.func_args_list(); } } - this.state = 4535; + this.state = 4533; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 4532; + this.state = 4530; this.match(PostgreSqlParser.KW_ORDER); - this.state = 4533; + this.state = 4531; this.match(PostgreSqlParser.KW_BY); - this.state = 4534; + this.state = 4532; this.func_args_list(); } } @@ -25856,7 +25962,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4539; + this.state = 4537; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -25880,9 +25986,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4541; + this.state = 4539; this.function_name(); - this.state = 4542; + this.state = 4540; this.aggr_args(); } } @@ -25905,66 +26011,66 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 396, PostgreSqlParser.RULE_common_func_opt_item); let _la: number; try { - this.state = 4573; + this.state = 4571; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CALLED: case PostgreSqlParser.KW_RETURNS: this.enterOuterAlt(localContext, 1); { - this.state = 4547; + this.state = 4545; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_RETURNS: { - this.state = 4544; + this.state = 4542; this.match(PostgreSqlParser.KW_RETURNS); - this.state = 4545; + this.state = 4543; this.match(PostgreSqlParser.KW_NULL); } break; case PostgreSqlParser.KW_CALLED: { - this.state = 4546; + this.state = 4544; this.match(PostgreSqlParser.KW_CALLED); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4549; + this.state = 4547; this.match(PostgreSqlParser.KW_ON); - this.state = 4550; + this.state = 4548; this.match(PostgreSqlParser.KW_NULL); - this.state = 4551; + this.state = 4549; this.match(PostgreSqlParser.KW_INPUT); } break; case PostgreSqlParser.KW_STRICT: this.enterOuterAlt(localContext, 2); { - this.state = 4552; + this.state = 4550; this.match(PostgreSqlParser.KW_STRICT); } break; case PostgreSqlParser.KW_IMMUTABLE: this.enterOuterAlt(localContext, 3); { - this.state = 4553; + this.state = 4551; this.match(PostgreSqlParser.KW_IMMUTABLE); } break; case PostgreSqlParser.KW_STABLE: this.enterOuterAlt(localContext, 4); { - this.state = 4554; + this.state = 4552; this.match(PostgreSqlParser.KW_STABLE); } break; case PostgreSqlParser.KW_VOLATILE: this.enterOuterAlt(localContext, 5); { - this.state = 4555; + this.state = 4553; this.match(PostgreSqlParser.KW_VOLATILE); } break; @@ -25972,19 +26078,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SECURITY: this.enterOuterAlt(localContext, 6); { - this.state = 4557; + this.state = 4555; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 4556; + this.state = 4554; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 4559; + this.state = 4557; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 4560; + this.state = 4558; _la = this.tokenStream.LA(1); if(!(_la === 181 || _la === 243)) { this.errorHandler.recoverInline(this); @@ -25998,16 +26104,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LEAKPROOF: this.enterOuterAlt(localContext, 7); { - this.state = 4561; + this.state = 4559; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; case PostgreSqlParser.KW_NOT: this.enterOuterAlt(localContext, 8); { - this.state = 4562; + this.state = 4560; this.match(PostgreSqlParser.KW_NOT); - this.state = 4563; + this.state = 4561; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; @@ -26015,7 +26121,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ROWS: this.enterOuterAlt(localContext, 9); { - this.state = 4564; + this.state = 4562; _la = this.tokenStream.LA(1); if(!(_la === 170 || _la === 320)) { this.errorHandler.recoverInline(this); @@ -26024,41 +26130,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4565; + this.state = 4563; this.numericonly(); } break; case PostgreSqlParser.KW_SUPPORT: this.enterOuterAlt(localContext, 10); { - this.state = 4566; + this.state = 4564; this.match(PostgreSqlParser.KW_SUPPORT); - this.state = 4567; + this.state = 4565; this.any_name(); } break; case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 11); { - this.state = 4568; + this.state = 4566; this.match(PostgreSqlParser.KW_SET); - this.state = 4569; + this.state = 4567; this.set_rest_more(); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 12); { - this.state = 4570; + this.state = 4568; this.variableresetstmt(); } break; case PostgreSqlParser.KW_PARALLEL: this.enterOuterAlt(localContext, 13); { - this.state = 4571; + this.state = 4569; this.match(PostgreSqlParser.KW_PARALLEL); - this.state = 4572; + this.state = 4570; this.colid(); } break; @@ -26085,57 +26191,57 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 398, PostgreSqlParser.RULE_createfunc_opt_item); let _la: number; try { - this.state = 4610; + this.state = 4608; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 570, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4575; + this.state = 4573; this.match(PostgreSqlParser.KW_AS); - this.state = 4576; + this.state = 4574; this.sconst(); - this.state = 4577; + this.state = 4575; this.notify_payload(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4579; + this.state = 4577; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 4580; + this.state = 4578; this.nonreservedword_or_sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4581; + this.state = 4579; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 4582; + this.state = 4580; this.match(PostgreSqlParser.KW_FOR); - this.state = 4583; + this.state = 4581; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4584; + this.state = 4582; this.typename(); - this.state = 4591; + this.state = 4589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4585; + this.state = 4583; this.match(PostgreSqlParser.COMMA); - this.state = 4586; + this.state = 4584; this.match(PostgreSqlParser.KW_FOR); - this.state = 4587; + this.state = 4585; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4588; + this.state = 4586; this.typename(); } } - this.state = 4593; + this.state = 4591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -26144,41 +26250,41 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4594; + this.state = 4592; this.match(PostgreSqlParser.KW_WINDOW); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4595; + this.state = 4593; this.match(PostgreSqlParser.KW_SET); - this.state = 4596; + this.state = 4594; this.colid(); - this.state = 4603; + this.state = 4601; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TO: { - this.state = 4597; + this.state = 4595; this.match(PostgreSqlParser.KW_TO); - this.state = 4598; + this.state = 4596; this.colid(); } break; case PostgreSqlParser.EQUAL: { - this.state = 4599; + this.state = 4597; this.match(PostgreSqlParser.EQUAL); - this.state = 4600; + this.state = 4598; this.colid(); } break; case PostgreSqlParser.KW_FROM: { - this.state = 4601; + this.state = 4599; this.match(PostgreSqlParser.KW_FROM); - this.state = 4602; + this.state = 4600; this.match(PostgreSqlParser.KW_CURRENT); } break; @@ -26190,30 +26296,30 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4605; + this.state = 4603; this.match(PostgreSqlParser.KW_AS); - this.state = 4606; + this.state = 4604; this.colid(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4607; + this.state = 4605; this.stmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4608; + this.state = 4606; this.common_func_opt_item(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4609; + this.state = 4607; this.colid(); } break; @@ -26239,9 +26345,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4612; + this.state = 4610; this.match(PostgreSqlParser.KW_WITH); - this.state = 4613; + this.state = 4611; this.definition(); } } @@ -26265,9 +26371,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4615; + this.state = 4613; this.column_name(); - this.state = 4616; + this.state = 4614; this.func_type(); } } @@ -26292,39 +26398,39 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4618; + this.state = 4616; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4625; + this.state = 4623; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4619; + this.state = 4617; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4620; + this.state = 4618; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 4621; + this.state = 4619; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4622; + this.state = 4620; this.procedure_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 4623; + this.state = 4621; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4624; + this.state = 4622; this.routine_with_argtypes(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4628; + this.state = 4626; this.errorHandler.sync(this); alternative = 1; do { @@ -26332,7 +26438,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 4627; + this.state = 4625; this.common_func_opt_item(); } } @@ -26340,16 +26446,16 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4630; + this.state = 4628; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 572, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 4633; + this.state = 4631; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 573, this.context) ) { case 1: { - this.state = 4632; + this.state = 4630; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -26376,74 +26482,74 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4635; + this.state = 4633; this.match(PostgreSqlParser.KW_DROP); - this.state = 4651; + this.state = 4649; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4636; + this.state = 4634; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4638; + this.state = 4636; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 574, this.context) ) { case 1: { - this.state = 4637; + this.state = 4635; this.opt_if_exists(); } break; } - this.state = 4640; + this.state = 4638; this.function_with_argtypes_list(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 4641; + this.state = 4639; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4643; + this.state = 4641; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 575, this.context) ) { case 1: { - this.state = 4642; + this.state = 4640; this.opt_if_exists(); } break; } - this.state = 4645; + this.state = 4643; this.procedure_with_argtypes_list(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 4646; + this.state = 4644; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4648; + this.state = 4646; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 576, this.context) ) { case 1: { - this.state = 4647; + this.state = 4645; this.opt_if_exists(); } break; } - this.state = 4650; + this.state = 4648; this.routine_with_argtypes_list(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4654; + this.state = 4652; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { case 1: { - this.state = 4653; + this.state = 4651; this.opt_drop_behavior(); } break; @@ -26471,46 +26577,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4656; + this.state = 4654; this.match(PostgreSqlParser.KW_DROP); - this.state = 4657; + this.state = 4655; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4659; + this.state = 4657; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { case 1: { - this.state = 4658; + this.state = 4656; this.opt_if_exists(); } break; } { - this.state = 4661; + this.state = 4659; this.aggregate_with_argtypes(); - this.state = 4666; + this.state = 4664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4662; + this.state = 4660; this.match(PostgreSqlParser.COMMA); - this.state = 4663; + this.state = 4661; this.aggregate_with_argtypes(); } } - this.state = 4668; + this.state = 4666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 4670; + this.state = 4668; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) { case 1: { - this.state = 4669; + this.state = 4667; this.opt_drop_behavior(); } break; @@ -26538,46 +26644,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4672; + this.state = 4670; this.match(PostgreSqlParser.KW_DROP); - this.state = 4673; + this.state = 4671; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4675; + this.state = 4673; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { case 1: { - this.state = 4674; + this.state = 4672; this.opt_if_exists(); } break; } { - this.state = 4677; + this.state = 4675; this.operator_with_argtypes(); - this.state = 4682; + this.state = 4680; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4678; + this.state = 4676; this.match(PostgreSqlParser.COMMA); - this.state = 4679; + this.state = 4677; this.operator_with_argtypes(); } } - this.state = 4684; + this.state = 4682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 4686; + this.state = 4684; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 584, this.context) ) { case 1: { - this.state = 4685; + this.state = 4683; this.opt_drop_behavior(); } break; @@ -26605,23 +26711,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4688; + this.state = 4686; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4701; + this.state = 4699; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 586, this.context) ) { case 1: { - this.state = 4689; + this.state = 4687; this.typename(); - this.state = 4692; + this.state = 4690; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 4690; + this.state = 4688; this.match(PostgreSqlParser.COMMA); - this.state = 4691; + this.state = 4689; this.typename(); } } @@ -26630,26 +26736,26 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 4694; + this.state = 4692; this.match(PostgreSqlParser.KW_NONE); - this.state = 4695; + this.state = 4693; this.match(PostgreSqlParser.COMMA); - this.state = 4696; + this.state = 4694; this.typename(); } break; case 3: { - this.state = 4697; + this.state = 4695; this.typename(); - this.state = 4698; + this.state = 4696; this.match(PostgreSqlParser.COMMA); - this.state = 4699; + this.state = 4697; this.match(PostgreSqlParser.KW_NONE); } break; } - this.state = 4703; + this.state = 4701; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -26674,23 +26780,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4710; + this.state = 4708; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + while (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { { - this.state = 4705; + this.state = 4703; this.colid(); - this.state = 4706; + this.state = 4704; this.match(PostgreSqlParser.DOT); } } - this.state = 4712; + this.state = 4710; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4713; + this.state = 4711; this.all_op(); } } @@ -26714,9 +26820,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4715; + this.state = 4713; this.any_operator(); - this.state = 4716; + this.state = 4714; this.oper_argtypes(); } } @@ -26741,16 +26847,16 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4718; + this.state = 4716; this.match(PostgreSqlParser.KW_DO); - this.state = 4722; + this.state = 4720; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 4722; + this.state = 4720; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -26758,15 +26864,15 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4719; + this.state = 4717; this.sconst(); } break; case PostgreSqlParser.KW_LANGUAGE: { - this.state = 4720; + this.state = 4718; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 4721; + this.state = 4719; this.nonreservedword_or_sconst(); } break; @@ -26778,7 +26884,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4724; + this.state = 4722; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 589, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -26805,38 +26911,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4726; + this.state = 4724; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4727; + this.state = 4725; this.match(PostgreSqlParser.KW_CAST); - this.state = 4728; + this.state = 4726; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4729; + this.state = 4727; this.typename(); - this.state = 4730; + this.state = 4728; this.match(PostgreSqlParser.KW_AS); - this.state = 4731; + this.state = 4729; this.typename(); - this.state = 4732; + this.state = 4730; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 4749; + this.state = 4747; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_WITHOUT: { { - this.state = 4733; + this.state = 4731; this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 4734; + this.state = 4732; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4737; + this.state = 4735; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 590, this.context) ) { case 1: { - this.state = 4735; + this.state = 4733; this.match(PostgreSqlParser.KW_AS); - this.state = 4736; + this.state = 4734; _la = this.tokenStream.LA(1); if(!(_la === 141 || _la === 223)) { this.errorHandler.recoverInline(this); @@ -26854,36 +26960,36 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_WITH: { { - this.state = 4739; + this.state = 4737; this.match(PostgreSqlParser.KW_WITH); - this.state = 4743; + this.state = 4741; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4740; + this.state = 4738; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4741; + this.state = 4739; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_INOUT: { - this.state = 4742; + this.state = 4740; this.match(PostgreSqlParser.KW_INOUT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4747; + this.state = 4745; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 592, this.context) ) { case 1: { - this.state = 4745; + this.state = 4743; this.match(PostgreSqlParser.KW_AS); - this.state = 4746; + this.state = 4744; _la = this.tokenStream.LA(1); if(!(_la === 141 || _la === 223)) { this.errorHandler.recoverInline(this); @@ -26923,9 +27029,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4751; + this.state = 4749; this.match(PostgreSqlParser.KW_IF); - this.state = 4752; + this.state = 4750; this.match(PostgreSqlParser.KW_EXISTS); } } @@ -26950,49 +27056,49 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4754; + this.state = 4752; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4756; + this.state = 4754; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 4755; + this.state = 4753; this.opt_or_replace(); } } - this.state = 4758; + this.state = 4756; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 4759; + this.state = 4757; this.match(PostgreSqlParser.KW_FOR); - this.state = 4760; + this.state = 4758; this.typename(); - this.state = 4761; + this.state = 4759; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 4762; + this.state = 4760; this.colid(); - this.state = 4763; + this.state = 4761; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4778; + this.state = 4776; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FROM: { - this.state = 4764; + this.state = 4762; this.match(PostgreSqlParser.KW_FROM); - this.state = 4765; + this.state = 4763; this.sql_with_function(); - this.state = 4769; + this.state = 4767; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 4766; + this.state = 4764; this.match(PostgreSqlParser.COMMA); - this.state = 4767; + this.state = 4765; this.match(PostgreSqlParser.KW_TO); - this.state = 4768; + this.state = 4766; this.sql_with_function(); } } @@ -27001,20 +27107,20 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_TO: { - this.state = 4771; + this.state = 4769; this.match(PostgreSqlParser.KW_TO); - this.state = 4772; + this.state = 4770; this.sql_with_function(); - this.state = 4776; + this.state = 4774; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 4773; + this.state = 4771; this.match(PostgreSqlParser.COMMA); - this.state = 4774; + this.state = 4772; this.match(PostgreSqlParser.KW_FROM); - this.state = 4775; + this.state = 4773; this.sql_with_function(); } } @@ -27024,7 +27130,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4780; + this.state = 4778; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -27048,13 +27154,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4782; + this.state = 4780; this.match(PostgreSqlParser.KW_SQL); - this.state = 4783; + this.state = 4781; this.match(PostgreSqlParser.KW_WITH); - this.state = 4784; + this.state = 4782; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4785; + this.state = 4783; this.function_with_argtypes(); } } @@ -27079,129 +27185,129 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4787; + this.state = 4785; this.match(PostgreSqlParser.KW_REINDEX); - this.state = 4798; + this.state = 4796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 4788; + this.state = 4786; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4789; + this.state = 4787; this.match(PostgreSqlParser.KW_VERBOSE); - this.state = 4794; + this.state = 4792; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4790; + this.state = 4788; this.match(PostgreSqlParser.COMMA); - this.state = 4791; + this.state = 4789; this.match(PostgreSqlParser.KW_VERBOSE); } } - this.state = 4796; + this.state = 4794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4797; + this.state = 4795; this.match(PostgreSqlParser.CLOSE_PAREN); } } { - this.state = 4825; + this.state = 4823; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INDEX: { - this.state = 4800; + this.state = 4798; this.match(PostgreSqlParser.KW_INDEX); - this.state = 4802; + this.state = 4800; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4801; + this.state = 4799; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4804; + this.state = 4802; this.qualified_name(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 4805; + this.state = 4803; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4807; + this.state = 4805; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4806; + this.state = 4804; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4809; + this.state = 4807; this.table_name(); } break; case PostgreSqlParser.KW_SCHEMA: { - this.state = 4810; + this.state = 4808; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4812; + this.state = 4810; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4811; + this.state = 4809; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4814; + this.state = 4812; this.schema_name(); } break; case PostgreSqlParser.KW_SYSTEM: { - this.state = 4815; + this.state = 4813; this.match(PostgreSqlParser.KW_SYSTEM); - this.state = 4817; + this.state = 4815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4816; + this.state = 4814; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4819; + this.state = 4817; this.colid(); } break; case PostgreSqlParser.KW_DATABASE: { - this.state = 4820; + this.state = 4818; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 4822; + this.state = 4820; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4821; + this.state = 4819; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4824; + this.state = 4822; this.database_name(); } break; @@ -27232,11 +27338,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4827; + this.state = 4825; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4828; + this.state = 4826; this.opttablespace(); - this.state = 4829; + this.state = 4827; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -27245,7 +27351,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4830; + this.state = 4828; this.reloptions(); } } @@ -27268,67 +27374,67 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 432, PostgreSqlParser.RULE_renamestmt); let _la: number; try { - this.state = 5039; + this.state = 5037; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 626, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4832; + this.state = 4830; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4837; + this.state = 4835; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AGGREGATE: { - this.state = 4833; + this.state = 4831; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4834; + this.state = 4832; this.aggregate_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 4835; + this.state = 4833; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4836; + this.state = 4834; this.routine_with_argtypes(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4839; + this.state = 4837; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4840; + this.state = 4838; this.match(PostgreSqlParser.KW_TO); - this.state = 4841; + this.state = 4839; this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4843; + this.state = 4841; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4844; + this.state = 4842; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 4845; + this.state = 4843; this.database_name(); - this.state = 4846; + this.state = 4844; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4847; + this.state = 4845; this.match(PostgreSqlParser.KW_TO); - this.state = 4848; + this.state = 4846; this.database_name_create(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4850; + this.state = 4848; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4851; + this.state = 4849; _la = this.tokenStream.LA(1); if(!(_la === 108 || _la === 168 || _la === 189 || _la === 342 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -27337,41 +27443,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4852; + this.state = 4850; this.any_name(); - this.state = 4853; + this.state = 4851; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4854; + this.state = 4852; this.match(PostgreSqlParser.KW_TO); - this.state = 4855; + this.state = 4853; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4857; + this.state = 4855; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4858; + this.state = 4856; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4859; + this.state = 4857; this.function_with_argtypes(); - this.state = 4860; + this.state = 4858; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4861; + this.state = 4859; this.match(PostgreSqlParser.KW_TO); - this.state = 4862; + this.state = 4860; this.function_name_create(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4864; + this.state = 4862; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4865; + this.state = 4863; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4866; + this.state = 4864; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -27380,58 +27486,58 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4867; + this.state = 4865; this.any_name(); - this.state = 4868; + this.state = 4866; this.table_access_method_clause(); - this.state = 4869; + this.state = 4867; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4870; + this.state = 4868; this.match(PostgreSqlParser.KW_TO); - this.state = 4871; + this.state = 4869; this.colid(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4873; + this.state = 4871; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4874; + this.state = 4872; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4875; + this.state = 4873; this.procedure_with_argtypes(); - this.state = 4876; + this.state = 4874; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4877; + this.state = 4875; this.match(PostgreSqlParser.KW_TO); - this.state = 4878; + this.state = 4876; this.procedure_name_create(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4880; + this.state = 4878; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4881; + this.state = 4879; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4882; + this.state = 4880; this.schema_name(); - this.state = 4883; + this.state = 4881; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4884; + this.state = 4882; this.match(PostgreSqlParser.KW_TO); - this.state = 4885; + this.state = 4883; this.schema_name_create(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4887; + this.state = 4885; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4888; + this.state = 4886; _la = this.tokenStream.LA(1); if(!(_la === 226 || _la === 328)) { this.errorHandler.recoverInline(this); @@ -27440,143 +27546,143 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4890; + this.state = 4888; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 607, this.context) ) { case 1: { - this.state = 4889; + this.state = 4887; this.opt_if_exists(); } break; } - this.state = 4892; + this.state = 4890; this.qualified_name(); - this.state = 4893; + this.state = 4891; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4894; + this.state = 4892; this.match(PostgreSqlParser.KW_TO); - this.state = 4895; + this.state = 4893; this.colid(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4897; + this.state = 4895; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4899; + this.state = 4897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 4898; + this.state = 4896; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 4901; + this.state = 4899; this.match(PostgreSqlParser.KW_VIEW); - this.state = 4903; + this.state = 4901; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 609, this.context) ) { case 1: { - this.state = 4902; + this.state = 4900; this.opt_if_exists(); } break; } - this.state = 4905; + this.state = 4903; this.view_name(); - this.state = 4906; + this.state = 4904; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4907; + this.state = 4905; this.match(PostgreSqlParser.KW_TO); - this.state = 4908; + this.state = 4906; this.view_name_create(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 4910; + this.state = 4908; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4912; + this.state = 4910; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 4911; + this.state = 4909; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 4914; + this.state = 4912; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4916; + this.state = 4914; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { case 1: { - this.state = 4915; + this.state = 4913; this.opt_if_exists(); } break; } - this.state = 4918; + this.state = 4916; this.relation_expr(); - this.state = 4919; + this.state = 4917; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4920; + this.state = 4918; this.match(PostgreSqlParser.KW_TO); - this.state = 4921; + this.state = 4919; this.table_name_create(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 4923; + this.state = 4921; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4948; + this.state = 4946; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: case PostgreSqlParser.KW_TABLE: { - this.state = 4925; + this.state = 4923; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 4924; + this.state = 4922; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 4927; + this.state = 4925; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4929; + this.state = 4927; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 613, this.context) ) { case 1: { - this.state = 4928; + this.state = 4926; this.opt_if_exists(); } break; } - this.state = 4931; + this.state = 4929; this.relation_expr(); - this.state = 4932; + this.state = 4930; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4934; + this.state = 4932; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 614, this.context) ) { case 1: { - this.state = 4933; + this.state = 4931; this.match(PostgreSqlParser.KW_COLUMN); } break; @@ -27586,38 +27692,38 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_MATERIALIZED: case PostgreSqlParser.KW_VIEW: { - this.state = 4937; + this.state = 4935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 4936; + this.state = 4934; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 4939; + this.state = 4937; this.match(PostgreSqlParser.KW_VIEW); - this.state = 4941; + this.state = 4939; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { case 1: { - this.state = 4940; + this.state = 4938; this.opt_if_exists(); } break; } - this.state = 4943; + this.state = 4941; this.view_name(); - this.state = 4944; + this.state = 4942; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4946; + this.state = 4944; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { case 1: { - this.state = 4945; + this.state = 4943; this.match(PostgreSqlParser.KW_COLUMN); } break; @@ -27627,82 +27733,82 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4950; + this.state = 4948; this.column_name(); - this.state = 4951; + this.state = 4949; this.match(PostgreSqlParser.KW_TO); - this.state = 4952; + this.state = 4950; this.column_name_create(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 4954; + this.state = 4952; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4962; + this.state = 4960; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TABLE: { - this.state = 4955; + this.state = 4953; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4957; + this.state = 4955; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 619, this.context) ) { case 1: { - this.state = 4956; + this.state = 4954; this.opt_if_exists(); } break; } - this.state = 4959; + this.state = 4957; this.relation_expr(); } break; case PostgreSqlParser.KW_DOMAIN: { - this.state = 4960; + this.state = 4958; this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 4961; + this.state = 4959; this.any_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4964; + this.state = 4962; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4965; + this.state = 4963; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 4966; + this.state = 4964; this.colid(); - this.state = 4967; + this.state = 4965; this.match(PostgreSqlParser.KW_TO); - this.state = 4968; + this.state = 4966; this.colid(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 4970; + this.state = 4968; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4977; + this.state = 4975; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_POLICY: { { - this.state = 4971; + this.state = 4969; this.match(PostgreSqlParser.KW_POLICY); - this.state = 4973; + this.state = 4971; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 621, this.context) ) { case 1: { - this.state = 4972; + this.state = 4970; this.opt_if_exists(); } break; @@ -27712,113 +27818,113 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_RULE: { - this.state = 4975; + this.state = 4973; this.match(PostgreSqlParser.KW_RULE); } break; case PostgreSqlParser.KW_TRIGGER: { - this.state = 4976; + this.state = 4974; this.match(PostgreSqlParser.KW_TRIGGER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4979; + this.state = 4977; this.colid(); - this.state = 4980; + this.state = 4978; this.match(PostgreSqlParser.KW_ON); - this.state = 4981; + this.state = 4979; this.qualified_name(); - this.state = 4982; + this.state = 4980; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4983; + this.state = 4981; this.match(PostgreSqlParser.KW_TO); - this.state = 4984; + this.state = 4982; this.colid(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 4986; + this.state = 4984; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4999; + this.state = 4997; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: { - this.state = 4987; + this.state = 4985; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4988; + this.state = 4986; this.match(PostgreSqlParser.KW_DATA); - this.state = 4989; + this.state = 4987; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_LANGUAGE: case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 4991; + this.state = 4989; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 4990; + this.state = 4988; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 4993; + this.state = 4991; this.match(PostgreSqlParser.KW_LANGUAGE); } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 4994; + this.state = 4992; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 4995; + this.state = 4993; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 4996; + this.state = 4994; this.match(PostgreSqlParser.KW_SUBSCRIPTION); } break; case PostgreSqlParser.KW_EVENT: { - this.state = 4997; + this.state = 4995; this.match(PostgreSqlParser.KW_EVENT); - this.state = 4998; + this.state = 4996; this.match(PostgreSqlParser.KW_TRIGGER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5001; + this.state = 4999; this.colid(); - this.state = 5002; + this.state = 5000; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5003; + this.state = 5001; this.match(PostgreSqlParser.KW_TO); - this.state = 5004; + this.state = 5002; this.colid(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 5006; + this.state = 5004; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5007; + this.state = 5005; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -27827,41 +27933,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5008; + this.state = 5006; this.rolespec(); - this.state = 5009; + this.state = 5007; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5010; + this.state = 5008; this.match(PostgreSqlParser.KW_TO); - this.state = 5011; + this.state = 5009; this.rolespec(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 5013; + this.state = 5011; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5014; + this.state = 5012; this.opttablespace(); - this.state = 5015; + this.state = 5013; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5016; + this.state = 5014; this.match(PostgreSqlParser.KW_TO); - this.state = 5017; + this.state = 5015; this.tablespace_name_create(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 5019; + this.state = 5017; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5020; + this.state = 5018; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5021; + this.state = 5019; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5022; + this.state = 5020; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -27870,41 +27976,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5023; + this.state = 5021; this.any_name(); - this.state = 5024; + this.state = 5022; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5025; + this.state = 5023; this.match(PostgreSqlParser.KW_TO); - this.state = 5026; + this.state = 5024; this.colid(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 5028; + this.state = 5026; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5029; + this.state = 5027; this.match(PostgreSqlParser.KW_TYPE); - this.state = 5030; + this.state = 5028; this.any_name(); - this.state = 5031; + this.state = 5029; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5032; + this.state = 5030; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 5033; + this.state = 5031; this.colid(); - this.state = 5034; + this.state = 5032; this.match(PostgreSqlParser.KW_TO); - this.state = 5035; + this.state = 5033; this.colid(); - this.state = 5037; + this.state = 5035; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 625, this.context) ) { case 1: { - this.state = 5036; + this.state = 5034; this.opt_drop_behavior(); } break; @@ -27934,85 +28040,85 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5041; + this.state = 5039; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5058; + this.state = 5056; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 5042; + this.state = 5040; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5043; + this.state = 5041; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 5044; + this.state = 5042; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5045; + this.state = 5043; this.procedure_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 5046; + this.state = 5044; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5047; + this.state = 5045; this.routine_with_argtypes(); } break; case PostgreSqlParser.KW_TRIGGER: { - this.state = 5048; + this.state = 5046; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 5049; + this.state = 5047; this.colid(); - this.state = 5050; + this.state = 5048; this.match(PostgreSqlParser.KW_ON); - this.state = 5051; + this.state = 5049; this.qualified_name(); } break; case PostgreSqlParser.KW_MATERIALIZED: { - this.state = 5053; + this.state = 5051; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 5054; + this.state = 5052; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5055; + this.state = 5053; this.view_name(); } break; case PostgreSqlParser.KW_INDEX: { - this.state = 5056; + this.state = 5054; this.match(PostgreSqlParser.KW_INDEX); - this.state = 5057; + this.state = 5055; this.qualified_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5061; + this.state = 5059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 5060; + this.state = 5058; this.match(PostgreSqlParser.KW_NO); } } - this.state = 5063; + this.state = 5061; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 5064; + this.state = 5062; this.match(PostgreSqlParser.KW_ON); - this.state = 5065; + this.state = 5063; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 5066; + this.state = 5064; this.colid(); } } @@ -28035,54 +28141,54 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 436, PostgreSqlParser.RULE_alterobjectschemastmt); let _la: number; try { - this.state = 5129; + this.state = 5127; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 636, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5068; + this.state = 5066; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5107; + this.state = 5105; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 634, this.context) ) { case 1: { - this.state = 5069; + this.state = 5067; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 5070; + this.state = 5068; this.aggregate_with_argtypes(); } break; case 2: { - this.state = 5071; + this.state = 5069; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 5072; + this.state = 5070; this.colid(); } break; case 3: { - this.state = 5073; + this.state = 5071; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5074; + this.state = 5072; this.function_with_argtypes(); } break; case 4: { - this.state = 5075; + this.state = 5073; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5076; + this.state = 5074; this.operator_with_argtypes(); } break; case 5: { - this.state = 5077; + this.state = 5075; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5078; + this.state = 5076; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -28091,126 +28197,126 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5079; + this.state = 5077; this.any_name(); - this.state = 5080; + this.state = 5078; this.table_access_method_clause(); } break; case 6: { - this.state = 5082; + this.state = 5080; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5083; + this.state = 5081; this.procedure_with_argtypes(); } break; case 7: { - this.state = 5084; + this.state = 5082; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5085; + this.state = 5083; this.routine_with_argtypes(); } break; case 8: { - this.state = 5086; + this.state = 5084; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 5088; + this.state = 5086; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 629, this.context) ) { case 1: { - this.state = 5087; + this.state = 5085; this.opt_if_exists(); } break; } - this.state = 5090; + this.state = 5088; this.qualified_name(); } break; case 9: { - this.state = 5092; + this.state = 5090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 5091; + this.state = 5089; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 5094; + this.state = 5092; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5096; + this.state = 5094; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 631, this.context) ) { case 1: { - this.state = 5095; + this.state = 5093; this.opt_if_exists(); } break; } - this.state = 5098; + this.state = 5096; this.view_name(); } break; case 10: { - this.state = 5100; + this.state = 5098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 5099; + this.state = 5097; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 5102; + this.state = 5100; this.match(PostgreSqlParser.KW_TABLE); - this.state = 5104; + this.state = 5102; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 633, this.context) ) { case 1: { - this.state = 5103; + this.state = 5101; this.opt_if_exists(); } break; } - this.state = 5106; + this.state = 5104; this.relation_expr(); } break; } - this.state = 5109; + this.state = 5107; this.match(PostgreSqlParser.KW_SET); - this.state = 5110; + this.state = 5108; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5111; + this.state = 5109; this.schema_name(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5113; + this.state = 5111; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5122; + this.state = 5120; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEXT: { - this.state = 5114; + this.state = 5112; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5115; + this.state = 5113; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5116; + this.state = 5114; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -28223,44 +28329,44 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_COLLATION: { - this.state = 5117; + this.state = 5115; this.match(PostgreSqlParser.KW_COLLATION); } break; case PostgreSqlParser.KW_CONVERSION: { - this.state = 5118; + this.state = 5116; this.match(PostgreSqlParser.KW_CONVERSION); } break; case PostgreSqlParser.KW_DOMAIN: { - this.state = 5119; + this.state = 5117; this.match(PostgreSqlParser.KW_DOMAIN); } break; case PostgreSqlParser.KW_STATISTICS: { - this.state = 5120; + this.state = 5118; this.match(PostgreSqlParser.KW_STATISTICS); } break; case PostgreSqlParser.KW_TYPE: { - this.state = 5121; + this.state = 5119; this.match(PostgreSqlParser.KW_TYPE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5124; + this.state = 5122; this.any_name(); - this.state = 5125; + this.state = 5123; this.match(PostgreSqlParser.KW_SET); - this.state = 5126; + this.state = 5124; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5127; + this.state = 5125; this.schema_name(); } break; @@ -28286,15 +28392,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5131; + this.state = 5129; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5132; + this.state = 5130; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5133; + this.state = 5131; this.operator_with_argtypes(); - this.state = 5134; + this.state = 5132; this.match(PostgreSqlParser.KW_SET); - this.state = 5135; + this.state = 5133; this.operator_def_list(); } } @@ -28319,27 +28425,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5137; + this.state = 5135; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5138; + this.state = 5136; this.operator_def_elem(); - this.state = 5143; + this.state = 5141; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5139; + this.state = 5137; this.match(PostgreSqlParser.COMMA); - this.state = 5140; + this.state = 5138; this.operator_def_elem(); } } - this.state = 5145; + this.state = 5143; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5146; + this.state = 5144; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -28363,46 +28469,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5148; + this.state = 5146; this.collabel(); - this.state = 5149; + this.state = 5147; this.match(PostgreSqlParser.EQUAL); - this.state = 5156; + this.state = 5154; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { case 1: { - this.state = 5150; + this.state = 5148; this.match(PostgreSqlParser.KW_NONE); } break; case 2: { - this.state = 5151; + this.state = 5149; this.func_type(); } break; case 3: { - this.state = 5152; + this.state = 5150; this.reserved_keyword(); } break; case 4: { - this.state = 5153; + this.state = 5151; this.qual_all_op(); } break; case 5: { - this.state = 5154; + this.state = 5152; this.numericonly(); } break; case 6: { - this.state = 5155; + this.state = 5153; this.sconst(); } break; @@ -28429,15 +28535,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5158; + this.state = 5156; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5159; + this.state = 5157; this.match(PostgreSqlParser.KW_TYPE); - this.state = 5160; + this.state = 5158; this.any_name(); - this.state = 5161; + this.state = 5159; this.match(PostgreSqlParser.KW_SET); - this.state = 5162; + this.state = 5160; this.operator_def_list(); } } @@ -28460,17 +28566,17 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 446, PostgreSqlParser.RULE_alterownerstmt); let _la: number; try { - this.state = 5238; + this.state = 5236; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 643, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5164; + this.state = 5162; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5165; + this.state = 5163; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5166; + this.state = 5164; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -28479,150 +28585,150 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5167; + this.state = 5165; this.any_name(); - this.state = 5168; + this.state = 5166; this.table_access_method_clause(); - this.state = 5169; + this.state = 5167; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5170; + this.state = 5168; this.match(PostgreSqlParser.KW_TO); - this.state = 5171; + this.state = 5169; this.rolespec(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5173; + this.state = 5171; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5200; + this.state = 5198; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 640, this.context) ) { case 1: { - this.state = 5174; + this.state = 5172; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 5175; + this.state = 5173; this.aggregate_with_argtypes(); } break; case 2: { - this.state = 5176; + this.state = 5174; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5177; + this.state = 5175; this.database_name(); } break; case 3: { - this.state = 5178; + this.state = 5176; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5179; + this.state = 5177; this.function_with_argtypes(); } break; case 4: { - this.state = 5181; + this.state = 5179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 5180; + this.state = 5178; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 5183; + this.state = 5181; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5184; + this.state = 5182; this.colid(); } break; case 5: { - this.state = 5185; + this.state = 5183; this.match(PostgreSqlParser.KW_LARGE); - this.state = 5186; + this.state = 5184; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5187; + this.state = 5185; this.numericonly(); } break; case 6: { - this.state = 5188; + this.state = 5186; this.match(PostgreSqlParser.KW_LARGE); - this.state = 5189; + this.state = 5187; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5190; + this.state = 5188; this.numericonly(); } break; case 7: { - this.state = 5191; + this.state = 5189; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5192; + this.state = 5190; this.operator_with_argtypes(); } break; case 8: { - this.state = 5193; + this.state = 5191; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5194; + this.state = 5192; this.procedure_with_argtypes(); } break; case 9: { - this.state = 5195; + this.state = 5193; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5196; + this.state = 5194; this.routine_with_argtypes(); } break; case 10: { - this.state = 5197; + this.state = 5195; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5198; + this.state = 5196; this.schema_name(); } break; case 11: { - this.state = 5199; + this.state = 5197; this.opttablespace(); } break; } - this.state = 5202; + this.state = 5200; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5203; + this.state = 5201; this.match(PostgreSqlParser.KW_TO); - this.state = 5204; + this.state = 5202; this.rolespec(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5206; + this.state = 5204; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5215; + this.state = 5213; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEXT: { - this.state = 5207; + this.state = 5205; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5208; + this.state = 5206; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5209; + this.state = 5207; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185)) { this.errorHandler.recoverInline(this); @@ -28635,69 +28741,69 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_COLLATION: { - this.state = 5210; + this.state = 5208; this.match(PostgreSqlParser.KW_COLLATION); } break; case PostgreSqlParser.KW_CONVERSION: { - this.state = 5211; + this.state = 5209; this.match(PostgreSqlParser.KW_CONVERSION); } break; case PostgreSqlParser.KW_DOMAIN: { - this.state = 5212; + this.state = 5210; this.match(PostgreSqlParser.KW_DOMAIN); } break; case PostgreSqlParser.KW_TYPE: { - this.state = 5213; + this.state = 5211; this.match(PostgreSqlParser.KW_TYPE); } break; case PostgreSqlParser.KW_STATISTICS: { - this.state = 5214; + this.state = 5212; this.match(PostgreSqlParser.KW_STATISTICS); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5217; + this.state = 5215; this.any_name(); - this.state = 5218; + this.state = 5216; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5219; + this.state = 5217; this.match(PostgreSqlParser.KW_TO); - this.state = 5220; + this.state = 5218; this.rolespec(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5222; + this.state = 5220; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5231; + this.state = 5229; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SERVER: { - this.state = 5223; + this.state = 5221; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_FOREIGN: { { - this.state = 5224; + this.state = 5222; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 5225; + this.state = 5223; this.match(PostgreSqlParser.KW_DATA); - this.state = 5226; + this.state = 5224; this.match(PostgreSqlParser.KW_WRAPPER); } } @@ -28705,35 +28811,35 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EVENT: { { - this.state = 5227; + this.state = 5225; this.match(PostgreSqlParser.KW_EVENT); - this.state = 5228; + this.state = 5226; this.match(PostgreSqlParser.KW_TRIGGER); } } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 5229; + this.state = 5227; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 5230; + this.state = 5228; this.match(PostgreSqlParser.KW_SUBSCRIPTION); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5233; + this.state = 5231; this.colid(); - this.state = 5234; + this.state = 5232; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5235; + this.state = 5233; this.match(PostgreSqlParser.KW_TO); - this.state = 5236; + this.state = 5234; this.rolespec(); } break; @@ -28759,42 +28865,42 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5240; + this.state = 5238; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5241; + this.state = 5239; this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5242; + this.state = 5240; this.colid(); - this.state = 5249; + this.state = 5247; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 644, this.context) ) { case 1: { - this.state = 5243; + this.state = 5241; this.match(PostgreSqlParser.KW_FOR); - this.state = 5244; + this.state = 5242; this.match(PostgreSqlParser.KW_TABLE); - this.state = 5245; + this.state = 5243; this.relation_expr_list(); } break; case 2: { - this.state = 5246; + this.state = 5244; this.match(PostgreSqlParser.KW_FOR); - this.state = 5247; + this.state = 5245; this.match(PostgreSqlParser.KW_ALL); - this.state = 5248; + this.state = 5246; this.match(PostgreSqlParser.KW_TABLES); } break; } - this.state = 5252; + this.state = 5250; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { case 1: { - this.state = 5251; + this.state = 5249; this.opt_definition(); } break; @@ -28822,23 +28928,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5254; + this.state = 5252; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5255; + this.state = 5253; this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5256; + this.state = 5254; this.colid(); - this.state = 5274; + this.state = 5272; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 647, this.context) ) { case 1: { { - this.state = 5257; + this.state = 5255; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5258; + this.state = 5256; this.match(PostgreSqlParser.KW_TO); - this.state = 5259; + this.state = 5257; this.rolespec(); } } @@ -28846,9 +28952,9 @@ export class PostgreSqlParser extends SQLParserBase { case 2: { { - this.state = 5260; + this.state = 5258; this.match(PostgreSqlParser.KW_SET); - this.state = 5261; + this.state = 5259; this.definition(); } } @@ -28856,18 +28962,18 @@ export class PostgreSqlParser extends SQLParserBase { case 3: { { - this.state = 5262; + this.state = 5260; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5263; + this.state = 5261; this.match(PostgreSqlParser.KW_TO); - this.state = 5264; + this.state = 5262; this.colid(); } } break; case 4: { - this.state = 5265; + this.state = 5263; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -28876,21 +28982,21 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5266; + this.state = 5264; this.publication_relation_expr(); - this.state = 5271; + this.state = 5269; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5267; + this.state = 5265; this.match(PostgreSqlParser.COMMA); - this.state = 5268; + this.state = 5266; this.publication_relation_expr(); } } - this.state = 5273; + this.state = 5271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -28920,44 +29026,44 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5276; + this.state = 5274; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5277; + this.state = 5275; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5278; + this.state = 5276; this.colid(); - this.state = 5279; + this.state = 5277; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 5280; + this.state = 5278; this.sconst(); - this.state = 5281; + this.state = 5279; this.match(PostgreSqlParser.KW_PUBLICATION); { - this.state = 5282; + this.state = 5280; this.collabel(); - this.state = 5287; + this.state = 5285; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5283; + this.state = 5281; this.match(PostgreSqlParser.COMMA); - this.state = 5284; + this.state = 5282; this.collabel(); } } - this.state = 5289; + this.state = 5287; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 5291; + this.state = 5289; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 649, this.context) ) { case 1: { - this.state = 5290; + this.state = 5288; this.opt_definition(); } break; @@ -28983,58 +29089,58 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 454, PostgreSqlParser.RULE_altersubscriptionstmt); let _la: number; try { - this.state = 5349; + this.state = 5347; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 653, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5293; + this.state = 5291; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5294; + this.state = 5292; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5295; + this.state = 5293; this.colid(); - this.state = 5296; + this.state = 5294; this.match(PostgreSqlParser.KW_SET); - this.state = 5297; + this.state = 5295; this.definition(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5299; + this.state = 5297; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5300; + this.state = 5298; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5301; + this.state = 5299; this.colid(); - this.state = 5302; + this.state = 5300; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 5303; + this.state = 5301; this.sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5305; + this.state = 5303; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5306; + this.state = 5304; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5307; + this.state = 5305; this.colid(); - this.state = 5308; + this.state = 5306; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 5309; + this.state = 5307; this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5311; + this.state = 5309; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 650, this.context) ) { case 1: { - this.state = 5310; + this.state = 5308; this.opt_definition(); } break; @@ -29044,13 +29150,13 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5313; + this.state = 5311; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5314; + this.state = 5312; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5315; + this.state = 5313; this.colid(); - this.state = 5316; + this.state = 5314; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -29059,34 +29165,34 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5317; + this.state = 5315; this.match(PostgreSqlParser.KW_PUBLICATION); { - this.state = 5318; + this.state = 5316; this.collabel(); - this.state = 5323; + this.state = 5321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5319; + this.state = 5317; this.match(PostgreSqlParser.COMMA); - this.state = 5320; + this.state = 5318; this.collabel(); } } - this.state = 5325; + this.state = 5323; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 5327; + this.state = 5325; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 652, this.context) ) { case 1: { - this.state = 5326; + this.state = 5324; this.opt_definition(); } break; @@ -29096,13 +29202,13 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5329; + this.state = 5327; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5330; + this.state = 5328; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5331; + this.state = 5329; this.colid(); - this.state = 5332; + this.state = 5330; _la = this.tokenStream.LA(1); if(!(_la === 186 || _la === 193)) { this.errorHandler.recoverInline(this); @@ -29116,36 +29222,36 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5334; + this.state = 5332; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5335; + this.state = 5333; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5336; + this.state = 5334; this.colid(); - this.state = 5337; + this.state = 5335; this.match(PostgreSqlParser.KW_SKIP); - this.state = 5338; + this.state = 5336; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5339; + this.state = 5337; this.old_aggr_elem(); - this.state = 5340; + this.state = 5338; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5342; + this.state = 5340; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5343; + this.state = 5341; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5344; + this.state = 5342; this.colid(); - this.state = 5345; + this.state = 5343; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5346; + this.state = 5344; this.match(PostgreSqlParser.KW_TO); - this.state = 5347; + this.state = 5345; this.rolespec(); } break; @@ -29172,27 +29278,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5351; + this.state = 5349; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5353; + this.state = 5351; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 5352; + this.state = 5350; this.opt_or_replace(); } } - this.state = 5355; + this.state = 5353; this.match(PostgreSqlParser.KW_RULE); - this.state = 5356; + this.state = 5354; this.colid(); - this.state = 5357; + this.state = 5355; this.match(PostgreSqlParser.KW_AS); - this.state = 5358; + this.state = 5356; this.match(PostgreSqlParser.KW_ON); - this.state = 5359; + this.state = 5357; _la = this.tokenStream.LA(1); if(!(_la === 88 || _la === 182 || _la === 241 || _la === 369)) { this.errorHandler.recoverInline(this); @@ -29201,28 +29307,28 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5360; + this.state = 5358; this.match(PostgreSqlParser.KW_TO); - this.state = 5361; + this.state = 5359; this.qualified_name(); - this.state = 5363; + this.state = 5361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5362; + this.state = 5360; this.where_clause(); } } - this.state = 5365; + this.state = 5363; this.match(PostgreSqlParser.KW_DO); - this.state = 5367; + this.state = 5365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 137 || _la === 242) { { - this.state = 5366; + this.state = 5364; _la = this.tokenStream.LA(1); if(!(_la === 137 || _la === 242)) { this.errorHandler.recoverInline(this); @@ -29234,62 +29340,62 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 5385; + this.state = 5383; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 660, this.context) ) { case 1: { - this.state = 5369; + this.state = 5367; this.match(PostgreSqlParser.KW_NOTHING); } break; case 2: { - this.state = 5370; + this.state = 5368; this.ruleactionstmt(); } break; case 3: { - this.state = 5371; + this.state = 5369; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 5373; + this.state = 5371; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { { - this.state = 5372; + this.state = 5370; this.ruleactionstmt(); } } - this.state = 5381; + this.state = 5379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 7) { { { - this.state = 5375; + this.state = 5373; this.match(PostgreSqlParser.SEMI); - this.state = 5377; + this.state = 5375; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { { - this.state = 5376; + this.state = 5374; this.ruleactionstmt(); } } } } - this.state = 5383; + this.state = 5381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 5384; + this.state = 5382; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -29314,41 +29420,41 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new RuleactionstmtContext(this.context, this.state); this.enterRule(localContext, 458, PostgreSqlParser.RULE_ruleactionstmt); try { - this.state = 5392; + this.state = 5390; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 661, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5387; + this.state = 5385; this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5388; + this.state = 5386; this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5389; + this.state = 5387; this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5390; + this.state = 5388; this.deletestmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5391; + this.state = 5389; this.notifystmt(); } break; @@ -29375,16 +29481,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5394; + this.state = 5392; this.match(PostgreSqlParser.KW_NOTIFY); - this.state = 5395; + this.state = 5393; this.colid(); - this.state = 5397; + this.state = 5395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 5396; + this.state = 5394; this.notify_payload(); } } @@ -29411,9 +29517,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5399; + this.state = 5397; this.match(PostgreSqlParser.COMMA); - this.state = 5400; + this.state = 5398; this.sconst(); } } @@ -29437,9 +29543,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5402; + this.state = 5400; this.match(PostgreSqlParser.KW_LISTEN); - this.state = 5403; + this.state = 5401; this.colid(); } } @@ -29463,18 +29569,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5405; + this.state = 5403; this.match(PostgreSqlParser.KW_UNLISTEN); - this.state = 5408; + this.state = 5406; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -29856,6 +29956,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -29868,13 +29969,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5406; + this.state = 5404; this.colid(); } break; case PostgreSqlParser.STAR: { - this.state = 5407; + this.state = 5405; this.match(PostgreSqlParser.STAR); } break; @@ -29902,30 +30003,30 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 468, PostgreSqlParser.RULE_transactionstmt); let _la: number; try { - this.state = 5455; + this.state = 5453; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 673, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5410; + this.state = 5408; this.match(PostgreSqlParser.KW_BEGIN); - this.state = 5412; + this.state = 5410; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 664, this.context) ) { case 1: { - this.state = 5411; + this.state = 5409; this.opt_transaction(); } break; } - this.state = 5415; + this.state = 5413; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 665, this.context) ) { case 1: { - this.state = 5414; + this.state = 5412; this.transaction_mode_list(); } break; @@ -29935,16 +30036,16 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5417; + this.state = 5415; this.match(PostgreSqlParser.KW_START); - this.state = 5418; + this.state = 5416; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 5420; + this.state = 5418; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 666, this.context) ) { case 1: { - this.state = 5419; + this.state = 5417; this.transaction_mode_list(); } break; @@ -29954,46 +30055,46 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5422; + this.state = 5420; this.match(PostgreSqlParser.KW_SAVEPOINT); - this.state = 5423; + this.state = 5421; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5424; + this.state = 5422; this.match(PostgreSqlParser.KW_RELEASE); - this.state = 5426; + this.state = 5424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 667, this.context) ) { case 1: { - this.state = 5425; + this.state = 5423; this.match(PostgreSqlParser.KW_SAVEPOINT); } break; } - this.state = 5428; + this.state = 5426; this.colid(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5429; + this.state = 5427; this.match(PostgreSqlParser.KW_PREPARE); - this.state = 5430; + this.state = 5428; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 5431; + this.state = 5429; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5432; + this.state = 5430; _la = this.tokenStream.LA(1); if(!(_la === 161 || _la === 319)) { this.errorHandler.recoverInline(this); @@ -30002,16 +30103,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5433; + this.state = 5431; this.match(PostgreSqlParser.KW_PREPARED); - this.state = 5434; + this.state = 5432; this.sconst(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5435; + this.state = 5433; _la = this.tokenStream.LA(1); if(!(_la === 129 || _la === 161 || _la === 319 || _la === 454)) { this.errorHandler.recoverInline(this); @@ -30020,68 +30121,68 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5437; + this.state = 5435; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 668, this.context) ) { case 1: { - this.state = 5436; + this.state = 5434; this.opt_transaction(); } break; } - this.state = 5444; + this.state = 5442; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 670, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 33) { { - this.state = 5439; + this.state = 5437; this.match(PostgreSqlParser.KW_AND); - this.state = 5441; + this.state = 5439; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 5440; + this.state = 5438; this.match(PostgreSqlParser.KW_NO); } } - this.state = 5443; + this.state = 5441; this.match(PostgreSqlParser.KW_CHAIN); } - break; } + } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5446; + this.state = 5444; this.match(PostgreSqlParser.KW_ROLLBACK); - this.state = 5448; + this.state = 5446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 356 || _la === 380) { { - this.state = 5447; + this.state = 5445; this.opt_transaction(); } } - this.state = 5450; + this.state = 5448; this.match(PostgreSqlParser.KW_TO); - this.state = 5452; + this.state = 5450; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 672, this.context) ) { case 1: { - this.state = 5451; + this.state = 5449; this.match(PostgreSqlParser.KW_SAVEPOINT); } break; } - this.state = 5454; + this.state = 5452; this.colid(); } break; @@ -30108,7 +30209,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5457; + this.state = 5455; _la = this.tokenStream.LA(1); if(!(_la === 356 || _la === 380)) { this.errorHandler.recoverInline(this); @@ -30138,26 +30239,26 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 472, PostgreSqlParser.RULE_transaction_mode_item); let _la: number; try { - this.state = 5468; + this.state = 5466; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ISOLATION: this.enterOuterAlt(localContext, 1); { - this.state = 5459; + this.state = 5457; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 5460; + this.state = 5458; this.match(PostgreSqlParser.KW_LEVEL); - this.state = 5461; + this.state = 5459; this.iso_level(); } break; case PostgreSqlParser.KW_READ: this.enterOuterAlt(localContext, 2); { - this.state = 5462; + this.state = 5460; this.match(PostgreSqlParser.KW_READ); - this.state = 5463; + this.state = 5461; _la = this.tokenStream.LA(1); if(!(_la === 81 || _la === 382)) { this.errorHandler.recoverInline(this); @@ -30172,17 +30273,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NOT: this.enterOuterAlt(localContext, 3); { - this.state = 5465; + this.state = 5463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 5464; + this.state = 5462; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 5467; + this.state = 5465; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; @@ -30212,31 +30313,31 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5470; + this.state = 5468; this.transaction_mode_item(); - this.state = 5477; + this.state = 5475; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 677, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 5472; + this.state = 5470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 5471; + this.state = 5469; this.match(PostgreSqlParser.COMMA); } } - this.state = 5474; + this.state = 5472; this.transaction_mode_item(); } } } - this.state = 5479; + this.state = 5477; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 677, this.context); } @@ -30264,55 +30365,55 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreateViewContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5480; + this.state = 5478; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5483; + this.state = 5481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 5481; + this.state = 5479; this.match(PostgreSqlParser.KW_OR); - this.state = 5482; + this.state = 5480; this.match(PostgreSqlParser.KW_REPLACE); } } - this.state = 5486; + this.state = 5484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 5485; + this.state = 5483; this.opttemp(); } } - this.state = 5503; + this.state = 5501; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_VIEW: { - this.state = 5488; + this.state = 5486; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5489; + this.state = 5487; this.view_name_create(); - this.state = 5491; + this.state = 5489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 5490; + this.state = 5488; this.opt_column_list_create(); } } - this.state = 5494; + this.state = 5492; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5493; + this.state = 5491; this.opt_reloptions(); } } @@ -30321,20 +30422,20 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_RECURSIVE: { - this.state = 5496; + this.state = 5494; this.match(PostgreSqlParser.KW_RECURSIVE); - this.state = 5497; + this.state = 5495; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5498; + this.state = 5496; this.view_name_create(); - this.state = 5499; + this.state = 5497; this.opt_column_list(); - this.state = 5501; + this.state = 5499; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5500; + this.state = 5498; this.opt_reloptions(); } } @@ -30344,23 +30445,23 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5505; + this.state = 5503; this.match(PostgreSqlParser.KW_AS); - this.state = 5506; + this.state = 5504; this.selectstmt(); - this.state = 5513; + this.state = 5511; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 685, this.context) ) { case 1: { - this.state = 5507; + this.state = 5505; this.match(PostgreSqlParser.KW_WITH); - this.state = 5509; + this.state = 5507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151 || _la === 254) { { - this.state = 5508; + this.state = 5506; _la = this.tokenStream.LA(1); if(!(_la === 151 || _la === 254)) { this.errorHandler.recoverInline(this); @@ -30372,9 +30473,9 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 5511; + this.state = 5509; this.match(PostgreSqlParser.KW_CHECK); - this.state = 5512; + this.state = 5510; this.match(PostgreSqlParser.KW_OPTION); } break; @@ -30401,9 +30502,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5515; + this.state = 5513; this.match(PostgreSqlParser.KW_LOAD); - this.state = 5516; + this.state = 5514; this.sconst(); } } @@ -30429,28 +30530,28 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreateDatabaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5518; + this.state = 5516; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5519; + this.state = 5517; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5520; + this.state = 5518; this.database_name_create(); - this.state = 5522; + this.state = 5520; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 686, this.context) ) { case 1: { - this.state = 5521; + this.state = 5519; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 5529; + this.state = 5527; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 688, this.context) ) { case 1: { - this.state = 5525; + this.state = 5523; this.errorHandler.sync(this); alternative = 1; do { @@ -30458,7 +30559,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 5524; + this.state = 5522; this.createdb_opt_item(); } } @@ -30466,7 +30567,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5527; + this.state = 5525; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 687, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -30496,155 +30597,82 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5539; + this.state = 5537; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CONNECTION: + switch (this.interpreter.adaptivePredict(this.tokenStream, 689, this.context) ) { + case 1: { - this.state = 5531; + this.state = 5529; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 5532; + this.state = 5530; this.match(PostgreSqlParser.KW_LIMIT); } break; - case PostgreSqlParser.KW_ENCODING: + case 2: { - this.state = 5533; + this.state = 5531; this.match(PostgreSqlParser.KW_ENCODING); } break; - case PostgreSqlParser.KW_LOCATION: + case 3: { - this.state = 5534; + this.state = 5532; this.match(PostgreSqlParser.KW_LOCATION); } break; - case PostgreSqlParser.KW_OWNER: + case 4: { - this.state = 5535; + this.state = 5533; this.match(PostgreSqlParser.KW_OWNER); } break; - case PostgreSqlParser.KW_TABLESPACE: + case 5: { - this.state = 5536; + this.state = 5534; this.match(PostgreSqlParser.KW_TABLESPACE); } break; - case PostgreSqlParser.KW_TEMPLATE: + case 6: { - this.state = 5537; + this.state = 5535; this.match(PostgreSqlParser.KW_TEMPLATE); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + case 7: { - this.state = 5538; + this.state = 5536; this.identifier(); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 5542; + this.state = 5540; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10) { { - this.state = 5541; + this.state = 5539; this.match(PostgreSqlParser.EQUAL); } } - this.state = 5547; + this.state = 5545; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 691, this.context) ) { case 1: { - this.state = 5544; + this.state = 5542; this.signediconst(); } break; case 2: { - this.state = 5545; + this.state = 5543; this.opt_boolean_or_string(); } break; case 3: { - this.state = 5546; + this.state = 5544; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -30673,27 +30701,27 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5549; + this.state = 5547; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5550; + this.state = 5548; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5551; + this.state = 5549; this.database_name(); - this.state = 5567; + this.state = 5565; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 696, this.context) ) { case 1: { - this.state = 5555; + this.state = 5553; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 692, this.context) ) { case 1: { - this.state = 5552; + this.state = 5550; this.match(PostgreSqlParser.KW_SET); - this.state = 5553; + this.state = 5551; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 5554; + this.state = 5552; this.tablespace_name_create(); } break; @@ -30702,22 +30730,22 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 5565; + this.state = 5563; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 695, this.context) ) { case 1: { - this.state = 5558; + this.state = 5556; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5557; + this.state = 5555; this.match(PostgreSqlParser.KW_WITH); } } - this.state = 5561; + this.state = 5559; this.errorHandler.sync(this); alternative = 1; do { @@ -30725,7 +30753,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 5560; + this.state = 5558; this.createdb_opt_item(); } } @@ -30733,7 +30761,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5563; + this.state = 5561; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 694, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -30765,18 +30793,18 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5569; + this.state = 5567; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5570; + this.state = 5568; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5571; + this.state = 5569; this.database_name(); - this.state = 5573; + this.state = 5571; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 697, this.context) ) { case 1: { - this.state = 5572; + this.state = 5570; this.setresetclause(); } break; @@ -30803,15 +30831,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5575; + this.state = 5573; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5576; + this.state = 5574; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 5577; + this.state = 5575; this.any_name(); - this.state = 5578; + this.state = 5576; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 5579; + this.state = 5577; this.match(PostgreSqlParser.KW_VERSION); } } @@ -30836,11 +30864,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5581; + this.state = 5579; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5582; + this.state = 5580; this.match(PostgreSqlParser.KW_SYSTEM); - this.state = 5583; + this.state = 5581; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -30849,7 +30877,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5584; + this.state = 5582; this.generic_set(); } } @@ -30875,37 +30903,37 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5586; + this.state = 5584; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5587; + this.state = 5585; this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5588; + this.state = 5586; this.any_name(); - this.state = 5590; + this.state = 5588; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 5589; + this.state = 5587; this.match(PostgreSqlParser.KW_AS); } } - this.state = 5592; + this.state = 5590; this.typename(); - this.state = 5596; + this.state = 5594; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 5593; + this.state = 5591; this.colconstraint(); } } } - this.state = 5598; + this.state = 5596; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); } @@ -30932,24 +30960,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5599; + this.state = 5597; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5600; + this.state = 5598; this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5601; + this.state = 5599; this.any_name(); - this.state = 5624; + this.state = 5622; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 703, this.context) ) { case 1: { - this.state = 5602; + this.state = 5600; this.alter_column_default(); } break; case 2: { - this.state = 5603; + this.state = 5601; _la = this.tokenStream.LA(1); if(!(_la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -30958,56 +30986,56 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5604; + this.state = 5602; this.match(PostgreSqlParser.KW_NOT); - this.state = 5605; + this.state = 5603; this.match(PostgreSqlParser.KW_NULL); } break; case 3: { - this.state = 5606; + this.state = 5604; this.match(PostgreSqlParser.KW_ADD); - this.state = 5609; + this.state = 5607; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 5607; + this.state = 5605; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5608; + this.state = 5606; this.colid(); } } - this.state = 5611; + this.state = 5609; this.constraintelem(); } break; case 4: { - this.state = 5612; + this.state = 5610; this.match(PostgreSqlParser.KW_DROP); - this.state = 5613; + this.state = 5611; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5615; + this.state = 5613; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 701, this.context) ) { case 1: { - this.state = 5614; + this.state = 5612; this.opt_if_exists(); } break; } - this.state = 5617; + this.state = 5615; this.colid(); - this.state = 5619; + this.state = 5617; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 702, this.context) ) { case 1: { - this.state = 5618; + this.state = 5616; this.opt_drop_behavior(); } break; @@ -31016,11 +31044,11 @@ export class PostgreSqlParser extends SQLParserBase { break; case 5: { - this.state = 5621; + this.state = 5619; this.match(PostgreSqlParser.KW_VALIDATE); - this.state = 5622; + this.state = 5620; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5623; + this.state = 5621; this.colid(); } break; @@ -31047,17 +31075,17 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5626; + this.state = 5624; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5627; + this.state = 5625; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5628; + this.state = 5626; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5629; + this.state = 5627; this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 5630; + this.state = 5628; this.any_name(); - this.state = 5631; + this.state = 5629; this.definition(); } } @@ -31080,23 +31108,23 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 498, PostgreSqlParser.RULE_altertsconfigurationstmt); let _la: number; try { - this.state = 5674; + this.state = 5672; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 706, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5633; + this.state = 5631; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5634; + this.state = 5632; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5635; + this.state = 5633; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5636; + this.state = 5634; this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 5637; + this.state = 5635; this.any_name(); - this.state = 5638; + this.state = 5636; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 138)) { this.errorHandler.recoverInline(this); @@ -31105,87 +31133,87 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5639; + this.state = 5637; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5640; + this.state = 5638; this.match(PostgreSqlParser.KW_FOR); - this.state = 5641; + this.state = 5639; this.name_list(); - this.state = 5642; + this.state = 5640; this.match(PostgreSqlParser.KW_WITH); - this.state = 5643; + this.state = 5641; this.any_name_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5645; + this.state = 5643; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5646; + this.state = 5644; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5647; + this.state = 5645; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5648; + this.state = 5646; this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 5649; + this.state = 5647; this.any_name(); - this.state = 5650; + this.state = 5648; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5651; + this.state = 5649; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5654; + this.state = 5652; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 5652; + this.state = 5650; this.match(PostgreSqlParser.KW_FOR); - this.state = 5653; + this.state = 5651; this.name_list(); } } - this.state = 5656; + this.state = 5654; this.match(PostgreSqlParser.KW_REPLACE); - this.state = 5657; + this.state = 5655; this.any_name(); - this.state = 5658; + this.state = 5656; this.match(PostgreSqlParser.KW_WITH); - this.state = 5659; + this.state = 5657; this.any_name(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5661; + this.state = 5659; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5662; + this.state = 5660; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5663; + this.state = 5661; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5664; + this.state = 5662; this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 5665; + this.state = 5663; this.any_name(); - this.state = 5666; + this.state = 5664; this.match(PostgreSqlParser.KW_DROP); - this.state = 5667; + this.state = 5665; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5669; + this.state = 5667; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 5668; + this.state = 5666; this.opt_if_exists(); } } - this.state = 5671; + this.state = 5669; this.match(PostgreSqlParser.KW_FOR); - this.state = 5672; + this.state = 5670; this.name_list(); } break; @@ -31212,33 +31240,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5676; + this.state = 5674; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5678; + this.state = 5676; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 5677; + this.state = 5675; this.match(PostgreSqlParser.KW_DEFAULT); } } - this.state = 5680; + this.state = 5678; this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 5681; + this.state = 5679; this.any_name(); - this.state = 5682; + this.state = 5680; this.match(PostgreSqlParser.KW_FOR); - this.state = 5683; + this.state = 5681; this.sconst(); - this.state = 5684; + this.state = 5682; this.match(PostgreSqlParser.KW_TO); - this.state = 5685; + this.state = 5683; this.sconst(); - this.state = 5686; + this.state = 5684; this.match(PostgreSqlParser.KW_FROM); - this.state = 5687; + this.state = 5685; this.any_name(); } } @@ -31261,37 +31289,37 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 502, PostgreSqlParser.RULE_clusterstmt); let _la: number; try { - this.state = 5714; + this.state = 5712; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 713, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5689; + this.state = 5687; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 5691; + this.state = 5689; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5690; + this.state = 5688; this.opt_verbose(); } } - this.state = 5697; + this.state = 5695; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 710, this.context) ) { case 1: { - this.state = 5693; + this.state = 5691; this.table_name(); - this.state = 5695; + this.state = 5693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 5694; + this.state = 5692; this.table_access_method_clause(); } } @@ -31304,38 +31332,38 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5699; + this.state = 5697; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 5700; + this.state = 5698; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5701; + this.state = 5699; this.opt_verbose(); - this.state = 5706; + this.state = 5704; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5702; + this.state = 5700; this.match(PostgreSqlParser.COMMA); - this.state = 5703; + this.state = 5701; this.opt_verbose(); } } - this.state = 5708; + this.state = 5706; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5709; + this.state = 5707; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 5710; + this.state = 5708; this.table_name(); - this.state = 5712; + this.state = 5710; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 5711; + this.state = 5709; this.table_access_method_clause(); } } @@ -31365,50 +31393,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5716; + this.state = 5714; this.match(PostgreSqlParser.KW_VACUUM); - this.state = 5732; + this.state = 5730; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 719, this.context) ) { case 1: { { - this.state = 5718; + this.state = 5716; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 113) { { - this.state = 5717; + this.state = 5715; this.match(PostgreSqlParser.KW_FULL); } } - this.state = 5721; + this.state = 5719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 112) { { - this.state = 5720; + this.state = 5718; this.match(PostgreSqlParser.KW_FREEZE); } } - this.state = 5724; + this.state = 5722; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5723; + this.state = 5721; this.opt_verbose(); } } - this.state = 5727; + this.state = 5725; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 717, this.context) ) { case 1: { - this.state = 5726; + this.state = 5724; this.analyze_keyword(); } break; @@ -31418,12 +31446,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 5730; + this.state = 5728; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 718, this.context) ) { case 1: { - this.state = 5729; + this.state = 5727; this.explain_option_list(); } break; @@ -31431,12 +31459,12 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 5735; + this.state = 5733; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 720, this.context) ) { case 1: { - this.state = 5734; + this.state = 5732; this.vacuum_relation_list(); } break; @@ -31464,19 +31492,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5737; + this.state = 5735; this.analyze_keyword(); - this.state = 5752; + this.state = 5750; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 723, this.context) ) { case 1: { - this.state = 5739; + this.state = 5737; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5738; + this.state = 5736; this.opt_verbose(); } } @@ -31485,37 +31513,37 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 5741; + this.state = 5739; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5742; + this.state = 5740; this.analyze_option_elem(); - this.state = 5747; + this.state = 5745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5743; + this.state = 5741; this.match(PostgreSqlParser.COMMA); - this.state = 5744; + this.state = 5742; this.analyze_option_elem(); } } - this.state = 5749; + this.state = 5747; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5750; + this.state = 5748; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 5755; + this.state = 5753; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 724, this.context) ) { case 1: { - this.state = 5754; + this.state = 5752; this.vacuum_relation_list(); } break; @@ -31543,7 +31571,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5757; + this.state = 5755; _la = this.tokenStream.LA(1); if(!(_la === 31 || _la === 32)) { this.errorHandler.recoverInline(this); @@ -31574,16 +31602,10 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5761; + this.state = 5759; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -31986,6 +32008,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -31998,31 +32021,25 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5759; + this.state = 5757; this.nonreservedword(); } break; case PostgreSqlParser.KW_ANALYSE: case PostgreSqlParser.KW_ANALYZE: { - this.state = 5760; + this.state = 5758; this.analyze_keyword(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5765; + this.state = 5763; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_ON: case PostgreSqlParser.KW_TRUE: case PostgreSqlParser.KW_AUTHORIZATION: @@ -32427,6 +32444,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -32439,7 +32457,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5763; + this.state = 5761; this.opt_boolean_or_string(); } break; @@ -32448,7 +32466,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: { - this.state = 5764; + this.state = 5762; this.numericonly(); } break; @@ -32479,14 +32497,14 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 512, PostgreSqlParser.RULE_analyze_option_elem); let _la: number; try { - this.state = 5776; + this.state = 5774; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_VERBOSE: case PostgreSqlParser.KW_SKIP_LOCKED: this.enterOuterAlt(localContext, 1); { - this.state = 5767; + this.state = 5765; _la = this.tokenStream.LA(1); if(!(_la === 128 || _la === 547)) { this.errorHandler.recoverInline(this); @@ -32495,12 +32513,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5769; + this.state = 5767; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 60 || _la === 96) { { - this.state = 5768; + this.state = 5766; _la = this.tokenStream.LA(1); if(!(_la === 60 || _la === 96)) { this.errorHandler.recoverInline(this); @@ -32517,9 +32535,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: this.enterOuterAlt(localContext, 2); { - this.state = 5771; + this.state = 5769; this.match(PostgreSqlParser.KW_BUFFER_USAGE_LIMIT); - this.state = 5774; + this.state = 5772; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.PLUS: @@ -32527,7 +32545,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: { - this.state = 5772; + this.state = 5770; this.numericonly(); } break; @@ -32536,7 +32554,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5773; + this.state = 5771; this.sconst(); } break; @@ -32570,14 +32588,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5778; + this.state = 5776; this.match(PostgreSqlParser.KW_VERBOSE); - this.state = 5780; + this.state = 5778; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 60 || _la === 96) { { - this.state = 5779; + this.state = 5777; _la = this.tokenStream.LA(1); if(!(_la === 60 || _la === 96)) { this.errorHandler.recoverInline(this); @@ -32611,14 +32629,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5782; + this.state = 5780; this.table_name(); - this.state = 5784; + this.state = 5782; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 731, this.context) ) { case 1: { - this.state = 5783; + this.state = 5781; this.opt_column_list(); } break; @@ -32646,21 +32664,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5786; + this.state = 5784; this.vacuum_relation(); - this.state = 5791; + this.state = 5789; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5787; + this.state = 5785; this.match(PostgreSqlParser.COMMA); - this.state = 5788; + this.state = 5786; this.vacuum_relation(); } } - this.state = 5793; + this.state = 5791; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -32687,25 +32705,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5794; + this.state = 5792; this.match(PostgreSqlParser.KW_EXPLAIN); - this.state = 5805; + this.state = 5803; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 736, this.context) ) { case 1: { - this.state = 5795; + this.state = 5793; this.explain_option_list(); } break; case 2: { - this.state = 5797; + this.state = 5795; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5796; + this.state = 5794; this.match(PostgreSqlParser.KW_VERBOSE); } } @@ -32714,19 +32732,19 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 5803; + this.state = 5801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31 || _la === 32) { { - this.state = 5799; + this.state = 5797; this.analyze_keyword(); - this.state = 5801; + this.state = 5799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5800; + this.state = 5798; this.opt_verbose(); } } @@ -32737,7 +32755,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 5807; + this.state = 5805; this.explainablestmt(); } } @@ -32759,69 +32777,69 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ExplainablestmtContext(this.context, this.state); this.enterRule(localContext, 522, PostgreSqlParser.RULE_explainablestmt); try { - this.state = 5818; + this.state = 5816; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 737, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5809; + this.state = 5807; this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5810; + this.state = 5808; this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5811; + this.state = 5809; this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5812; + this.state = 5810; this.deletestmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5813; + this.state = 5811; this.declarecursorstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5814; + this.state = 5812; this.createasstmt(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5815; + this.state = 5813; this.creatematviewstmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5816; + this.state = 5814; this.refreshmatviewstmt(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 5817; + this.state = 5815; this.executestmt(); } break; @@ -32848,27 +32866,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5820; + this.state = 5818; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5821; + this.state = 5819; this.vac_analyze_option_elem(); - this.state = 5826; + this.state = 5824; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5822; + this.state = 5820; this.match(PostgreSqlParser.COMMA); - this.state = 5823; + this.state = 5821; this.vac_analyze_option_elem(); } } - this.state = 5828; + this.state = 5826; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5829; + this.state = 5827; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -32893,23 +32911,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5831; + this.state = 5829; this.match(PostgreSqlParser.KW_PREPARE); - this.state = 5832; + this.state = 5830; this.colid(); - this.state = 5834; + this.state = 5832; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 5833; + this.state = 5831; this.prep_type_clause(); } } - this.state = 5836; + this.state = 5834; this.match(PostgreSqlParser.KW_AS); - this.state = 5837; + this.state = 5835; this.preparablestmt(); } } @@ -32934,27 +32952,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5839; + this.state = 5837; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5840; + this.state = 5838; this.typename(); - this.state = 5845; + this.state = 5843; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5841; + this.state = 5839; this.match(PostgreSqlParser.COMMA); - this.state = 5842; + this.state = 5840; this.typename(); } } - this.state = 5847; + this.state = 5845; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5848; + this.state = 5846; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -32976,34 +32994,34 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new PreparablestmtContext(this.context, this.state); this.enterRule(localContext, 530, PostgreSqlParser.RULE_preparablestmt); try { - this.state = 5854; + this.state = 5852; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 741, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5850; + this.state = 5848; this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5851; + this.state = 5849; this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5852; + this.state = 5850; this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5853; + this.state = 5851; this.deletestmt(); } break; @@ -33028,22 +33046,22 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 532, PostgreSqlParser.RULE_executestmt); let _la: number; try { - this.state = 5879; + this.state = 5877; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_EXECUTE: this.enterOuterAlt(localContext, 1); { - this.state = 5856; + this.state = 5854; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 5857; + this.state = 5855; this.colid(); - this.state = 5859; + this.state = 5857; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 742, this.context) ) { case 1: { - this.state = 5858; + this.state = 5856; this.execute_param_clause(); } break; @@ -33053,54 +33071,54 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CREATE: this.enterOuterAlt(localContext, 2); { - this.state = 5861; + this.state = 5859; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5863; + this.state = 5861; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 5862; + this.state = 5860; this.opttemp(); } } - this.state = 5865; + this.state = 5863; this.match(PostgreSqlParser.KW_TABLE); - this.state = 5867; + this.state = 5865; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 744, this.context) ) { case 1: { - this.state = 5866; + this.state = 5864; this.opt_if_not_exists(); } break; } - this.state = 5869; + this.state = 5867; this.create_as_target(); - this.state = 5870; + this.state = 5868; this.match(PostgreSqlParser.KW_AS); - this.state = 5871; + this.state = 5869; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 5872; + this.state = 5870; this.colid(); - this.state = 5874; + this.state = 5872; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 745, this.context) ) { case 1: { - this.state = 5873; + this.state = 5871; this.execute_param_clause(); } break; } - this.state = 5877; + this.state = 5875; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 746, this.context) ) { case 1: { - this.state = 5876; + this.state = 5874; this.opt_with_data(); } break; @@ -33131,11 +33149,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5881; + this.state = 5879; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5882; + this.state = 5880; this.expr_list(); - this.state = 5883; + this.state = 5881; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -33159,28 +33177,22 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5885; + this.state = 5883; this.match(PostgreSqlParser.KW_DEALLOCATE); - this.state = 5887; + this.state = 5885; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 748, this.context) ) { case 1: { - this.state = 5886; + this.state = 5884; this.match(PostgreSqlParser.KW_PREPARE); } break; } - this.state = 5891; + this.state = 5889; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -33562,6 +33574,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -33574,13 +33587,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5889; + this.state = 5887; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 5890; + this.state = 5888; this.match(PostgreSqlParser.KW_ALL); } break; @@ -33611,58 +33624,58 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new InsertStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5894; + this.state = 5892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5893; + this.state = 5891; this.with_clause(); } } - this.state = 5896; + this.state = 5894; this.match(PostgreSqlParser.KW_INSERT); - this.state = 5897; + this.state = 5895; this.match(PostgreSqlParser.KW_INTO); - this.state = 5898; + this.state = 5896; this.table_name(); - this.state = 5901; + this.state = 5899; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 5899; + this.state = 5897; this.match(PostgreSqlParser.KW_AS); - this.state = 5900; + this.state = 5898; this.colid(); } } - this.state = 5903; + this.state = 5901; this.insert_rest(); - this.state = 5925; + this.state = 5923; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 5904; + this.state = 5902; this.match(PostgreSqlParser.KW_ON); - this.state = 5905; + this.state = 5903; this.match(PostgreSqlParser.KW_CONFLICT); - this.state = 5913; + this.state = 5911; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 5906; + this.state = 5904; this.index_params(); - this.state = 5908; + this.state = 5906; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5907; + this.state = 5905; this.where_clause(); } } @@ -33671,11 +33684,11 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_ON: { - this.state = 5910; + this.state = 5908; this.match(PostgreSqlParser.KW_ON); - this.state = 5911; + this.state = 5909; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5912; + this.state = 5910; this.colid(); } break; @@ -33684,25 +33697,25 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 5915; + this.state = 5913; this.match(PostgreSqlParser.KW_DO); - this.state = 5923; + this.state = 5921; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UPDATE: { - this.state = 5916; + this.state = 5914; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 5917; + this.state = 5915; this.match(PostgreSqlParser.KW_SET); - this.state = 5918; + this.state = 5916; this.set_clause_list(); - this.state = 5920; + this.state = 5918; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5919; + this.state = 5917; this.where_clause(); } } @@ -33711,7 +33724,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_NOTHING: { - this.state = 5922; + this.state = 5920; this.match(PostgreSqlParser.KW_NOTHING); } break; @@ -33721,12 +33734,12 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 5928; + this.state = 5926; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 87) { { - this.state = 5927; + this.state = 5925; this.returning_clause(); } } @@ -33754,28 +33767,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5934; + this.state = 5932; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 758, this.context) ) { case 1: { - this.state = 5930; + this.state = 5928; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5931; + this.state = 5929; this.insert_column_list(); - this.state = 5932; + this.state = 5930; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 5939; + this.state = 5937; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 463) { { - this.state = 5936; + this.state = 5934; this.match(PostgreSqlParser.KW_OVERRIDING); - this.state = 5937; + this.state = 5935; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 349)) { this.errorHandler.recoverInline(this); @@ -33784,23 +33797,23 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5938; + this.state = 5936; this.match(PostgreSqlParser.KW_VALUE); } } - this.state = 5943; + this.state = 5941; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 760, this.context) ) { case 1: { - this.state = 5941; + this.state = 5939; this.default_values_or_values(); } break; case 2: { - this.state = 5942; + this.state = 5940; this.selectstmt(); } break; @@ -33828,21 +33841,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5945; + this.state = 5943; this.insert_column_item(); - this.state = 5950; + this.state = 5948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5946; + this.state = 5944; this.match(PostgreSqlParser.COMMA); - this.state = 5947; + this.state = 5945; this.insert_column_item(); } } - this.state = 5952; + this.state = 5950; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33868,9 +33881,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5953; + this.state = 5951; this.column_name(); - this.state = 5954; + this.state = 5952; this.opt_indirection(); } } @@ -33894,9 +33907,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5956; + this.state = 5954; this.match(PostgreSqlParser.KW_RETURNING); - this.state = 5957; + this.state = 5955; this.target_list(); } } @@ -33921,50 +33934,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5960; + this.state = 5958; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5959; + this.state = 5957; this.with_clause(); } } - this.state = 5962; + this.state = 5960; this.match(PostgreSqlParser.KW_DELETE); - this.state = 5963; + this.state = 5961; this.match(PostgreSqlParser.KW_FROM); - this.state = 5964; + this.state = 5962; this.relation_expr_opt_alias(); - this.state = 5967; + this.state = 5965; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 5965; + this.state = 5963; this.match(PostgreSqlParser.KW_USING); - this.state = 5966; + this.state = 5964; this.from_list(); } } - this.state = 5970; + this.state = 5968; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5969; + this.state = 5967; this.where_or_current_clause(); } } - this.state = 5973; + this.state = 5971; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 87) { { - this.state = 5972; + this.state = 5970; this.returning_clause(); } } @@ -33992,34 +34005,34 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5975; + this.state = 5973; this.match(PostgreSqlParser.KW_LOCK); - this.state = 5977; + this.state = 5975; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 5976; + this.state = 5974; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 5979; + this.state = 5977; this.relation_expr_list(); - this.state = 5994; + this.state = 5992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68) { { - this.state = 5980; + this.state = 5978; this.match(PostgreSqlParser.KW_IN); - this.state = 5991; + this.state = 5989; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ACCESS: case PostgreSqlParser.KW_ROW: { - this.state = 5981; + this.state = 5979; _la = this.tokenStream.LA(1); if(!(_la === 131 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -34028,7 +34041,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5982; + this.state = 5980; _la = this.tokenStream.LA(1); if(!(_la === 201 || _la === 334)) { this.errorHandler.recoverInline(this); @@ -34041,24 +34054,24 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_SHARE: { - this.state = 5983; + this.state = 5981; this.match(PostgreSqlParser.KW_SHARE); - this.state = 5988; + this.state = 5986; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UPDATE: { - this.state = 5984; + this.state = 5982; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 5985; + this.state = 5983; this.match(PostgreSqlParser.KW_EXCLUSIVE); } break; case PostgreSqlParser.KW_ROW: { - this.state = 5986; + this.state = 5984; this.match(PostgreSqlParser.KW_ROW); - this.state = 5987; + this.state = 5985; this.match(PostgreSqlParser.KW_EXCLUSIVE); } break; @@ -34071,24 +34084,24 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_EXCLUSIVE: { - this.state = 5990; + this.state = 5988; this.match(PostgreSqlParser.KW_EXCLUSIVE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5993; + this.state = 5991; this.match(PostgreSqlParser.KW_MODE); } } - this.state = 5997; + this.state = 5995; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 770, this.context) ) { case 1: { - this.state = 5996; + this.state = 5994; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -34116,50 +34129,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6000; + this.state = 5998; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5999; + this.state = 5997; this.with_clause(); } } - this.state = 6002; + this.state = 6000; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 6003; + this.state = 6001; this.relation_expr_opt_alias(); - this.state = 6004; + this.state = 6002; this.match(PostgreSqlParser.KW_SET); - this.state = 6005; + this.state = 6003; this.set_clause_list(); - this.state = 6007; + this.state = 6005; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 6006; + this.state = 6004; this.from_clause(); } } - this.state = 6010; + this.state = 6008; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 6009; + this.state = 6007; this.where_or_current_clause(); } } - this.state = 6013; + this.state = 6011; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 87) { { - this.state = 6012; + this.state = 6010; this.returning_clause(); } } @@ -34187,21 +34200,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6015; + this.state = 6013; this.set_clause(); - this.state = 6020; + this.state = 6018; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6016; + this.state = 6014; this.match(PostgreSqlParser.COMMA); - this.state = 6017; + this.state = 6015; this.set_clause(); } } - this.state = 6022; + this.state = 6020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -34225,57 +34238,57 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Set_clauseContext(this.context, this.state); this.enterRule(localContext, 556, PostgreSqlParser.RULE_set_clause); try { - this.state = 6041; + this.state = 6039; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 778, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6023; + this.state = 6021; this.insert_column_item(); - this.state = 6024; + this.state = 6022; this.match(PostgreSqlParser.EQUAL); - this.state = 6025; + this.state = 6023; this.expression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6027; + this.state = 6025; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6028; + this.state = 6026; this.insert_column_list(); - this.state = 6029; + this.state = 6027; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6030; + this.state = 6028; this.match(PostgreSqlParser.EQUAL); - this.state = 6039; + this.state = 6037; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { case 1: { - this.state = 6032; + this.state = 6030; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 776, this.context) ) { case 1: { - this.state = 6031; + this.state = 6029; this.match(PostgreSqlParser.KW_ROW); } break; } - this.state = 6034; + this.state = 6032; this.expression(); } break; case 2: { - this.state = 6035; + this.state = 6033; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6036; + this.state = 6034; this.select_clause(); - this.state = 6037; + this.state = 6035; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -34305,47 +34318,47 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6043; + this.state = 6041; this.match(PostgreSqlParser.KW_DECLARE); - this.state = 6044; + this.state = 6042; this.colid(); { - this.state = 6053; + this.state = 6051; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 107 || _la === 240 || _la === 269 || _la === 324) { { - this.state = 6051; + this.state = 6049; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: case PostgreSqlParser.KW_SCROLL: { { - this.state = 6046; + this.state = 6044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 6045; + this.state = 6043; this.match(PostgreSqlParser.KW_NO); } } - this.state = 6048; + this.state = 6046; this.match(PostgreSqlParser.KW_SCROLL); } } break; case PostgreSqlParser.KW_BINARY: { - this.state = 6049; + this.state = 6047; this.match(PostgreSqlParser.KW_BINARY); } break; case PostgreSqlParser.KW_INSENSITIVE: { - this.state = 6050; + this.state = 6048; this.match(PostgreSqlParser.KW_INSENSITIVE); } break; @@ -34353,19 +34366,19 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 6055; + this.state = 6053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 6056; + this.state = 6054; this.match(PostgreSqlParser.KW_CURSOR); - this.state = 6059; + this.state = 6057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105 || _la === 379) { { - this.state = 6057; + this.state = 6055; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 379)) { this.errorHandler.recoverInline(this); @@ -34374,14 +34387,14 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6058; + this.state = 6056; this.match(PostgreSqlParser.KW_HOLD); } } - this.state = 6061; + this.state = 6059; this.match(PostgreSqlParser.KW_FOR); - this.state = 6062; + this.state = 6060; this.selectstmt(); } } @@ -34403,14 +34416,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new SelectstmtContext(this.context, this.state); this.enterRule(localContext, 560, PostgreSqlParser.RULE_selectstmt); try { - this.state = 6066; + this.state = 6064; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 783, this.context) ) { case 1: localContext = new SelectStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6064; + this.state = 6062; this.select_no_parens(); } break; @@ -34418,7 +34431,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new SelectStatementContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6065; + this.state = 6063; this.select_with_parens(); } break; @@ -34444,25 +34457,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6068; + this.state = 6066; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6071; + this.state = 6069; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 784, this.context) ) { case 1: { - this.state = 6069; + this.state = 6067; this.select_no_parens(); } break; case 2: { - this.state = 6070; + this.state = 6068; this.select_with_parens(); } break; } - this.state = 6073; + this.state = 6071; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -34487,41 +34500,41 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6076; + this.state = 6074; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 6075; + this.state = 6073; this.with_clause(); } } - this.state = 6078; + this.state = 6076; this.select_clause(); - this.state = 6080; + this.state = 6078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 6079; + this.state = 6077; this.sort_clause(); } } - this.state = 6090; + this.state = 6088; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 789, this.context) ) { case 1: { - this.state = 6082; + this.state = 6080; this.for_locking_clause(); - this.state = 6084; + this.state = 6082; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 787, this.context) ) { case 1: { - this.state = 6083; + this.state = 6081; this.select_limit(); } break; @@ -34530,14 +34543,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6086; + this.state = 6084; this.select_limit(); - this.state = 6088; + this.state = 6086; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 6087; + this.state = 6085; this.for_locking_clause(); } } @@ -34565,20 +34578,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Select_clauseContext(this.context, this.state); this.enterRule(localContext, 566, PostgreSqlParser.RULE_select_clause); try { - this.state = 6094; + this.state = 6092; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 790, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6092; + this.state = 6090; this.simple_select(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6093; + this.state = 6091; this.select_with_parens(); } break; @@ -34605,34 +34618,34 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6118; + this.state = 6116; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SELECT: { - this.state = 6096; + this.state = 6094; this.match(PostgreSqlParser.KW_SELECT); - this.state = 6106; + this.state = 6104; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 794, this.context) ) { case 1: { - this.state = 6098; + this.state = 6096; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 791, this.context) ) { case 1: { - this.state = 6097; + this.state = 6095; this.match(PostgreSqlParser.KW_ALL); } break; } - this.state = 6101; + this.state = 6099; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 792, this.context) ) { case 1: { - this.state = 6100; + this.state = 6098; this.into_clause(); } break; @@ -34641,12 +34654,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6104; + this.state = 6102; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 793, this.context) ) { case 1: { - this.state = 6103; + this.state = 6101; this.distinct_clause(); } break; @@ -34654,42 +34667,42 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6108; + this.state = 6106; this.sql_expression(); } break; case PostgreSqlParser.KW_VALUES: { - this.state = 6109; + this.state = 6107; this.values_clause(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 6110; + this.state = 6108; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6111; + this.state = 6109; this.relation_expr(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6112; + this.state = 6110; this.select_with_parens(); - this.state = 6113; + this.state = 6111; this.set_operator_with_all_or_distinct(); - this.state = 6116; + this.state = 6114; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 795, this.context) ) { case 1: { - this.state = 6114; + this.state = 6112; this.simple_select(); } break; case 2: { - this.state = 6115; + this.state = 6113; this.select_with_parens(); } break; @@ -34699,27 +34712,27 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6127; + this.state = 6125; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 798, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6120; + this.state = 6118; this.set_operator_with_all_or_distinct(); - this.state = 6123; + this.state = 6121; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 797, this.context) ) { case 1: { - this.state = 6121; + this.state = 6119; this.simple_select(); } break; case 2: { - this.state = 6122; + this.state = 6120; this.select_with_parens(); } break; @@ -34727,7 +34740,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 6129; + this.state = 6127; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 798, this.context); } @@ -34754,7 +34767,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6130; + this.state = 6128; _la = this.tokenStream.LA(1); if(!(_la === 59 || _la === 70 || _la === 97)) { this.errorHandler.recoverInline(this); @@ -34763,12 +34776,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6132; + this.state = 6130; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 30 || _la === 56) { { - this.state = 6131; + this.state = 6129; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 56)) { this.errorHandler.recoverInline(this); @@ -34803,36 +34816,36 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6134; + this.state = 6132; this.match(PostgreSqlParser.KW_WITH); - this.state = 6136; + this.state = 6134; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 800, this.context) ) { case 1: { - this.state = 6135; + this.state = 6133; this.match(PostgreSqlParser.KW_RECURSIVE); } break; } { - this.state = 6138; + this.state = 6136; this.common_table_expr(); - this.state = 6143; + this.state = 6141; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 801, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6139; + this.state = 6137; this.match(PostgreSqlParser.COMMA); - this.state = 6140; + this.state = 6138; this.common_table_expr(); } } } - this.state = 6145; + this.state = 6143; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 801, this.context); } @@ -34860,62 +34873,62 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6146; + this.state = 6144; this.colid(); - this.state = 6148; + this.state = 6146; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 6147; + this.state = 6145; this.opt_column_list(); } } - this.state = 6150; + this.state = 6148; this.match(PostgreSqlParser.KW_AS); - this.state = 6155; + this.state = 6153; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77 || _la === 259) { { - this.state = 6152; + this.state = 6150; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6151; + this.state = 6149; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6154; + this.state = 6152; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 6157; + this.state = 6155; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6158; + this.state = 6156; this.preparablestmt(); - this.state = 6159; + this.state = 6157; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6161; + this.state = 6159; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 805, this.context) ) { case 1: { - this.state = 6160; + this.state = 6158; this.search_cluase(); } break; } - this.state = 6164; + this.state = 6162; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 806, this.context) ) { case 1: { - this.state = 6163; + this.state = 6161; this.cycle_cluase(); } break; @@ -34943,9 +34956,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6166; + this.state = 6164; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 6167; + this.state = 6165; _la = this.tokenStream.LA(1); if(!(_la === 527 || _la === 528)) { this.errorHandler.recoverInline(this); @@ -34954,15 +34967,15 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6168; + this.state = 6166; this.match(PostgreSqlParser.KW_FIRST); - this.state = 6169; + this.state = 6167; this.match(PostgreSqlParser.KW_BY); - this.state = 6170; + this.state = 6168; this.column_list(); - this.state = 6171; + this.state = 6169; this.match(PostgreSqlParser.KW_SET); - this.state = 6172; + this.state = 6170; this.column_name(); } } @@ -34987,33 +35000,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6174; + this.state = 6172; this.match(PostgreSqlParser.KW_CYCLE); - this.state = 6175; + this.state = 6173; this.column_list(); - this.state = 6176; + this.state = 6174; this.match(PostgreSqlParser.KW_SET); - this.state = 6177; + this.state = 6175; this.column_name(); - this.state = 6183; + this.state = 6181; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94) { { - this.state = 6178; + this.state = 6176; this.match(PostgreSqlParser.KW_TO); - this.state = 6179; + this.state = 6177; this.colid(); - this.state = 6180; + this.state = 6178; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 6181; + this.state = 6179; this.colid(); } } - this.state = 6185; + this.state = 6183; this.match(PostgreSqlParser.KW_USING); - this.state = 6186; + this.state = 6184; this.column_name(); } } @@ -35037,30 +35050,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6188; + this.state = 6186; this.match(PostgreSqlParser.KW_INTO); - this.state = 6194; + this.state = 6192; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 809, this.context) ) { case 1: { - this.state = 6190; + this.state = 6188; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 808, this.context) ) { case 1: { - this.state = 6189; + this.state = 6187; this.match(PostgreSqlParser.KW_STRICT); } break; } - this.state = 6192; + this.state = 6190; this.opttempTableName(); } break; case 2: { - this.state = 6193; + this.state = 6191; this.expr_list(); } break; @@ -35086,18 +35099,18 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 582, PostgreSqlParser.RULE_opttempTableName); let _la: number; try { - this.state = 6211; + this.state = 6209; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 814, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6197; + this.state = 6195; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254) { { - this.state = 6196; + this.state = 6194; _la = this.tokenStream.LA(1); if(!(_la === 213 || _la === 254)) { this.errorHandler.recoverInline(this); @@ -35109,7 +35122,7 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 6199; + this.state = 6197; _la = this.tokenStream.LA(1); if(!(_la === 352 || _la === 354)) { this.errorHandler.recoverInline(this); @@ -35118,44 +35131,44 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6201; + this.state = 6199; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 6200; + this.state = 6198; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 6203; + this.state = 6201; this.table_name_create(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6205; + this.state = 6203; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 812, this.context) ) { case 1: { - this.state = 6204; + this.state = 6202; this.match(PostgreSqlParser.KW_UNLOGGED); } break; } - this.state = 6208; + this.state = 6206; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 6207; + this.state = 6205; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 6210; + this.state = 6208; this.table_name_create(); } break; @@ -35181,16 +35194,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6213; + this.state = 6211; this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 6216; + this.state = 6214; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 815, this.context) ) { case 1: { - this.state = 6214; + this.state = 6212; this.match(PostgreSqlParser.KW_ON); - this.state = 6215; + this.state = 6213; this.execute_param_clause(); } break; @@ -35218,25 +35231,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6218; + this.state = 6216; this.match(PostgreSqlParser.KW_ORDER); - this.state = 6219; + this.state = 6217; this.match(PostgreSqlParser.KW_BY); - this.state = 6220; + this.state = 6218; this.sortby(); - this.state = 6225; + this.state = 6223; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6221; + this.state = 6219; this.match(PostgreSqlParser.COMMA); - this.state = 6222; + this.state = 6220; this.sortby(); } } - this.state = 6227; + this.state = 6225; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -35263,22 +35276,22 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6228; + this.state = 6226; this.column_expr_noparen(); - this.state = 6232; + this.state = 6230; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 817, this.context) ) { case 1: { - this.state = 6229; + this.state = 6227; this.match(PostgreSqlParser.KW_USING); - this.state = 6230; + this.state = 6228; this.qual_all_op(); } break; case 2: { - this.state = 6231; + this.state = 6229; _la = this.tokenStream.LA(1); if(!(_la === 37 || _la === 55)) { this.errorHandler.recoverInline(this); @@ -35290,14 +35303,14 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6236; + this.state = 6234; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 818, this.context) ) { case 1: { - this.state = 6234; + this.state = 6232; this.match(PostgreSqlParser.KW_NULLS); - this.state = 6235; + this.state = 6233; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 249)) { this.errorHandler.recoverInline(this); @@ -35330,20 +35343,20 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 590, PostgreSqlParser.RULE_select_limit); let _la: number; try { - this.state = 6249; + this.state = 6247; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_OFFSET: this.enterOuterAlt(localContext, 1); { - this.state = 6238; + this.state = 6236; this.offset_clause(); - this.state = 6240; + this.state = 6238; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 819, this.context) ) { case 1: { - this.state = 6239; + this.state = 6237; this.fetch_clause(); } break; @@ -35354,30 +35367,30 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LIMIT: this.enterOuterAlt(localContext, 2); { - this.state = 6244; + this.state = 6242; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_LIMIT: { - this.state = 6242; + this.state = 6240; this.limit_clause(); } break; case PostgreSqlParser.KW_FETCH: { - this.state = 6243; + this.state = 6241; this.fetch_clause(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6247; + this.state = 6245; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 6246; + this.state = 6244; this.offset_clause(); } } @@ -35409,9 +35422,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6251; + this.state = 6249; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 6254; + this.state = 6252; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -35419,12 +35432,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -35432,9 +35442,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NOT: @@ -35845,6 +35853,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -35861,27 +35870,27 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6252; + this.state = 6250; this.expression(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 6253; + this.state = 6251; this.match(PostgreSqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6258; + this.state = 6256; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 6256; + this.state = 6254; this.match(PostgreSqlParser.COMMA); - this.state = 6257; + this.state = 6255; this.expression(); } } @@ -35909,9 +35918,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6260; + this.state = 6258; this.match(PostgreSqlParser.KW_FETCH); - this.state = 6261; + this.state = 6259; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 268)) { this.errorHandler.recoverInline(this); @@ -35921,17 +35930,17 @@ export class PostgreSqlParser extends SQLParserBase { this.consume(); } { - this.state = 6263; + this.state = 6261; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 825, this.context) ) { case 1: { - this.state = 6262; + this.state = 6260; this.select_fetch_first_value(); } break; } - this.state = 6265; + this.state = 6263; _la = this.tokenStream.LA(1); if(!(_la === 320 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -35940,20 +35949,20 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6269; + this.state = 6267; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ONLY: { - this.state = 6266; + this.state = 6264; this.match(PostgreSqlParser.KW_ONLY); } break; case PostgreSqlParser.KW_WITH: { - this.state = 6267; + this.state = 6265; this.match(PostgreSqlParser.KW_WITH); - this.state = 6268; + this.state = 6266; this.match(PostgreSqlParser.KW_TIES); } break; @@ -35984,16 +35993,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6271; + this.state = 6269; this.match(PostgreSqlParser.KW_OFFSET); - this.state = 6276; + this.state = 6274; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 827, this.context) ) { case 1: { - this.state = 6272; + this.state = 6270; this.select_fetch_first_value(); - this.state = 6273; + this.state = 6271; _la = this.tokenStream.LA(1); if(!(_la === 320 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -36006,7 +36015,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6275; + this.state = 6273; this.expression(); } break; @@ -36032,13 +36041,13 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 598, PostgreSqlParser.RULE_select_fetch_first_value); let _la: number; try { - this.state = 6281; + this.state = 6279; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 828, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6278; + this.state = 6276; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -36047,7 +36056,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6279; + this.state = 6277; _la = this.tokenStream.LA(1); if(!(_la === 571 || _la === 573)) { this.errorHandler.recoverInline(this); @@ -36061,7 +36070,7 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6280; + this.state = 6278; this.primaryExpression(0); } break; @@ -36088,16 +36097,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6283; + this.state = 6281; this.match(PostgreSqlParser.KW_GROUP); - this.state = 6284; + this.state = 6282; this.match(PostgreSqlParser.KW_BY); - this.state = 6286; + this.state = 6284; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 829, this.context) ) { case 1: { - this.state = 6285; + this.state = 6283; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 56)) { this.errorHandler.recoverInline(this); @@ -36109,7 +36118,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6288; + this.state = 6286; this.group_by_list(); } } @@ -36134,23 +36143,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6290; + this.state = 6288; this.group_by_item(); - this.state = 6295; + this.state = 6293; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 830, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6291; + this.state = 6289; this.match(PostgreSqlParser.COMMA); - this.state = 6292; + this.state = 6290; this.group_by_item(); } } } - this.state = 6297; + this.state = 6295; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 830, this.context); } @@ -36175,34 +36184,34 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 604, PostgreSqlParser.RULE_group_by_item); let _la: number; try { - this.state = 6321; + this.state = 6319; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 833, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6298; + this.state = 6296; this.column_expr_noparen(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6299; + this.state = 6297; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6300; + this.state = 6298; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6302; + this.state = 6300; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 468 || _la === 469) { { - this.state = 6301; + this.state = 6299; _la = this.tokenStream.LA(1); if(!(_la === 468 || _la === 469)) { this.errorHandler.recoverInline(this); @@ -36214,44 +36223,44 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 6304; + this.state = 6302; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 6305; + this.state = 6303; this.column_expr_noparen(); - this.state = 6310; + this.state = 6308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6306; + this.state = 6304; this.match(PostgreSqlParser.COMMA); - this.state = 6307; + this.state = 6305; this.column_expr_noparen(); } } - this.state = 6312; + this.state = 6310; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 6313; + this.state = 6311; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6315; + this.state = 6313; this.match(PostgreSqlParser.KW_GROUPING); - this.state = 6316; + this.state = 6314; this.match(PostgreSqlParser.KW_SETS); - this.state = 6317; + this.state = 6315; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6318; + this.state = 6316; this.group_by_list(); - this.state = 6319; + this.state = 6317; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -36276,95 +36285,95 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 606, PostgreSqlParser.RULE_for_locking_clause); let _la: number; try { - this.state = 6351; + this.state = 6349; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 840, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6344; + this.state = 6342; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6323; + this.state = 6321; this.match(PostgreSqlParser.KW_FOR); - this.state = 6333; + this.state = 6331; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: case PostgreSqlParser.KW_UPDATE: { - this.state = 6326; + this.state = 6324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 6324; + this.state = 6322; this.match(PostgreSqlParser.KW_NO); - this.state = 6325; + this.state = 6323; this.match(PostgreSqlParser.KW_KEY); } } - this.state = 6328; + this.state = 6326; this.match(PostgreSqlParser.KW_UPDATE); } break; case PostgreSqlParser.KW_KEY: case PostgreSqlParser.KW_SHARE: { - this.state = 6330; + this.state = 6328; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 245) { { - this.state = 6329; + this.state = 6327; this.match(PostgreSqlParser.KW_KEY); } } - this.state = 6332; + this.state = 6330; this.match(PostgreSqlParser.KW_SHARE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6337; + this.state = 6335; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 837, this.context) ) { case 1: { - this.state = 6335; + this.state = 6333; this.match(PostgreSqlParser.KW_OF); - this.state = 6336; + this.state = 6334; this.qualified_name_list(); } break; } - this.state = 6342; + this.state = 6340; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 838, this.context) ) { case 1: { - this.state = 6339; + this.state = 6337; this.match(PostgreSqlParser.KW_NOWAIT); } break; case 2: { - this.state = 6340; + this.state = 6338; this.match(PostgreSqlParser.KW_SKIP); - this.state = 6341; + this.state = 6339; this.match(PostgreSqlParser.KW_LOCKED); } break; } } } - this.state = 6346; + this.state = 6344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 62); @@ -36373,11 +36382,11 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6348; + this.state = 6346; this.match(PostgreSqlParser.KW_FOR); - this.state = 6349; + this.state = 6347; this.match(PostgreSqlParser.KW_READ); - this.state = 6350; + this.state = 6348; this.match(PostgreSqlParser.KW_ONLY); } break; @@ -36404,23 +36413,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6353; + this.state = 6351; this.match(PostgreSqlParser.KW_VALUES); - this.state = 6354; + this.state = 6352; this.execute_param_clause(); - this.state = 6359; + this.state = 6357; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6355; + this.state = 6353; this.match(PostgreSqlParser.COMMA); - this.state = 6356; + this.state = 6354; this.execute_param_clause(); } } - this.state = 6361; + this.state = 6359; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36446,9 +36455,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6362; + this.state = 6360; this.match(PostgreSqlParser.KW_FROM); - this.state = 6363; + this.state = 6361; this.from_list(); } } @@ -36473,23 +36482,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6365; + this.state = 6363; this.table_ref(); - this.state = 6370; + this.state = 6368; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 842, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6366; + this.state = 6364; this.match(PostgreSqlParser.COMMA); - this.state = 6367; + this.state = 6365; this.table_ref(); } } } - this.state = 6372; + this.state = 6370; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 842, this.context); } @@ -36517,61 +36526,61 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6436; + this.state = 6434; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 859, this.context) ) { case 1: { - this.state = 6387; + this.state = 6385; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 847, this.context) ) { case 1: { - this.state = 6373; + this.state = 6371; this.relation_expr(); } break; case 2: { { - this.state = 6375; + this.state = 6373; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 6374; + this.state = 6372; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 6377; + this.state = 6375; this.view_name(); - this.state = 6379; + this.state = 6377; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 844, this.context) ) { case 1: { - this.state = 6378; + this.state = 6376; this.match(PostgreSqlParser.STAR); } break; } - this.state = 6382; + this.state = 6380; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 845, this.context) ) { case 1: { - this.state = 6381; + this.state = 6379; this.column_list(); } break; } - this.state = 6385; + this.state = 6383; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 846, this.context) ) { case 1: { - this.state = 6384; + this.state = 6382; this.where_clause(); } break; @@ -36580,22 +36589,22 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6390; + this.state = 6388; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 848, this.context) ) { case 1: { - this.state = 6389; + this.state = 6387; this.alias_clause(); } break; } - this.state = 6393; + this.state = 6391; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 472) { { - this.state = 6392; + this.state = 6390; this.tablesample_clause(); } } @@ -36604,29 +36613,29 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6396; + this.state = 6394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 72) { { - this.state = 6395; + this.state = 6393; this.match(PostgreSqlParser.KW_LATERAL); } } - this.state = 6410; + this.state = 6408; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 854, this.context) ) { case 1: { - this.state = 6398; + this.state = 6396; this.xmltable(); - this.state = 6400; + this.state = 6398; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 851, this.context) ) { case 1: { - this.state = 6399; + this.state = 6397; this.alias_clause(); } break; @@ -36635,14 +36644,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6402; + this.state = 6400; this.func_table(); - this.state = 6404; + this.state = 6402; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 852, this.context) ) { case 1: { - this.state = 6403; + this.state = 6401; this.func_alias_clause(); } break; @@ -36651,14 +36660,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 6406; + this.state = 6404; this.select_with_parens(); - this.state = 6408; + this.state = 6406; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 853, this.context) ) { case 1: { - this.state = 6407; + this.state = 6405; this.alias_clause(); } break; @@ -36670,40 +36679,40 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 6412; + this.state = 6410; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6413; + this.state = 6411; this.table_ref(); - this.state = 6430; + this.state = 6428; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CROSS: { - this.state = 6414; + this.state = 6412; this.match(PostgreSqlParser.KW_CROSS); - this.state = 6415; + this.state = 6413; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6416; + this.state = 6414; this.table_ref(); } break; case PostgreSqlParser.KW_NATURAL: { - this.state = 6417; + this.state = 6415; this.match(PostgreSqlParser.KW_NATURAL); - this.state = 6419; + this.state = 6417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6418; + this.state = 6416; this.join_type(); } } - this.state = 6421; + this.state = 6419; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6422; + this.state = 6420; this.table_ref(); } break; @@ -36713,21 +36722,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LEFT: case PostgreSqlParser.KW_RIGHT: { - this.state = 6424; + this.state = 6422; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6423; + this.state = 6421; this.join_type(); } } - this.state = 6426; + this.state = 6424; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6427; + this.state = 6425; this.table_ref(); - this.state = 6428; + this.state = 6426; this.join_qual(); } break; @@ -36736,14 +36745,14 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 6432; + this.state = 6430; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6434; + this.state = 6432; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 858, this.context) ) { case 1: { - this.state = 6433; + this.state = 6431; this.alias_clause(); } break; @@ -36751,42 +36760,42 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6456; + this.state = 6454; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 863, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 6454; + this.state = 6452; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CROSS: { - this.state = 6438; + this.state = 6436; this.match(PostgreSqlParser.KW_CROSS); - this.state = 6439; + this.state = 6437; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6440; + this.state = 6438; this.table_ref(); } break; case PostgreSqlParser.KW_NATURAL: { - this.state = 6441; + this.state = 6439; this.match(PostgreSqlParser.KW_NATURAL); - this.state = 6443; + this.state = 6441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6442; + this.state = 6440; this.join_type(); } } - this.state = 6445; + this.state = 6443; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6446; + this.state = 6444; this.table_ref(); } break; @@ -36796,21 +36805,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LEFT: case PostgreSqlParser.KW_RIGHT: { - this.state = 6448; + this.state = 6446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6447; + this.state = 6445; this.join_type(); } } - this.state = 6450; + this.state = 6448; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6451; + this.state = 6449; this.table_ref(); - this.state = 6452; + this.state = 6450; this.join_qual(); } break; @@ -36819,7 +36828,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 6458; + this.state = 6456; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 863, this.context); } @@ -36846,28 +36855,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6460; + this.state = 6458; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 6459; + this.state = 6457; this.match(PostgreSqlParser.KW_AS); } } - this.state = 6462; + this.state = 6460; this.colid(); - this.state = 6467; + this.state = 6465; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 865, this.context) ) { case 1: { - this.state = 6463; + this.state = 6461; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6464; + this.state = 6462; this.name_list(); - this.state = 6465; + this.state = 6463; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -36893,45 +36902,39 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 618, PostgreSqlParser.RULE_func_alias_clause); let _la: number; try { - this.state = 6481; + this.state = 6479; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 868, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6469; + this.state = 6467; this.alias_clause(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6475; + this.state = 6473; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: { - this.state = 6470; + this.state = 6468; this.match(PostgreSqlParser.KW_AS); - this.state = 6472; + this.state = 6470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6471; + this.state = 6469; this.colid(); } } } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -37313,6 +37316,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -37325,18 +37329,18 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6474; + this.state = 6472; this.colid(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6477; + this.state = 6475; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6478; + this.state = 6476; this.tablefuncelementlist(); - this.state = 6479; + this.state = 6477; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -37363,7 +37367,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6483; + this.state = 6481; _la = this.tokenStream.LA(1); if(!(((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0))) { this.errorHandler.recoverInline(this); @@ -37372,12 +37376,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6485; + this.state = 6483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123) { { - this.state = 6484; + this.state = 6482; this.match(PostgreSqlParser.KW_OUTER); } } @@ -37402,24 +37406,24 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Join_qualContext(this.context, this.state); this.enterRule(localContext, 622, PostgreSqlParser.RULE_join_qual); try { - this.state = 6491; + this.state = 6489; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_USING: this.enterOuterAlt(localContext, 1); { - this.state = 6487; + this.state = 6485; this.match(PostgreSqlParser.KW_USING); - this.state = 6488; + this.state = 6486; this.opt_column_list(); } break; case PostgreSqlParser.KW_ON: this.enterOuterAlt(localContext, 2); { - this.state = 6489; + this.state = 6487; this.match(PostgreSqlParser.KW_ON); - this.state = 6490; + this.state = 6488; this.expression(); } break; @@ -37445,31 +37449,25 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Relation_exprContext(this.context, this.state); this.enterRule(localContext, 624, PostgreSqlParser.RULE_relation_expr); try { - this.state = 6508; + this.state = 6506; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 873, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6493; + this.state = 6491; this.truncate_table(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6494; + this.state = 6492; this.match(PostgreSqlParser.KW_ONLY); - this.state = 6500; + this.state = 6498; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -37851,6 +37849,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -37863,17 +37862,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6495; + this.state = 6493; this.table_name(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6496; + this.state = 6494; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6497; + this.state = 6495; this.table_name(); - this.state = 6498; + this.state = 6496; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -37885,20 +37884,14 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6502; + this.state = 6500; this.match(PostgreSqlParser.KW_IN); - this.state = 6503; + this.state = 6501; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 6506; + this.state = 6504; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -38280,6 +38273,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -38292,13 +38286,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6504; + this.state = 6502; this.schema_name(); } break; case PostgreSqlParser.KW_CURRENT_SCHEMA: { - this.state = 6505; + this.state = 6503; this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; @@ -38328,32 +38322,32 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 626, PostgreSqlParser.RULE_publication_relation_expr); let _la: number; try { - this.state = 6534; + this.state = 6532; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6510; + this.state = 6508; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6511; + this.state = 6509; this.truncate_table(); - this.state = 6513; + this.state = 6511; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 874, this.context) ) { case 1: { - this.state = 6512; + this.state = 6510; this.opt_column_list(); } break; } - this.state = 6516; + this.state = 6514; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 6515; + this.state = 6513; this.where_clause(); } } @@ -38363,20 +38357,14 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6518; + this.state = 6516; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6519; + this.state = 6517; this.match(PostgreSqlParser.KW_ONLY); - this.state = 6525; + this.state = 6523; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -38758,6 +38746,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -38770,17 +38759,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6520; + this.state = 6518; this.table_name(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6521; + this.state = 6519; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6522; + this.state = 6520; this.table_name(); - this.state = 6523; + this.state = 6521; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -38792,22 +38781,16 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6527; + this.state = 6525; this.match(PostgreSqlParser.KW_TABLES); - this.state = 6528; + this.state = 6526; this.match(PostgreSqlParser.KW_IN); - this.state = 6529; + this.state = 6527; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 6532; + this.state = 6530; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -39189,6 +39172,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -39201,13 +39185,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6530; + this.state = 6528; this.schema_name(); } break; case PostgreSqlParser.KW_CURRENT_SCHEMA: { - this.state = 6531; + this.state = 6529; this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; @@ -39239,21 +39223,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6536; + this.state = 6534; this.relation_expr(); - this.state = 6541; + this.state = 6539; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6537; + this.state = 6535; this.match(PostgreSqlParser.COMMA); - this.state = 6538; + this.state = 6536; this.relation_expr(); } } - this.state = 6543; + this.state = 6541; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39280,24 +39264,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6544; + this.state = 6542; this.relation_expr(); - this.state = 6549; + this.state = 6547; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 881, this.context) ) { case 1: { - this.state = 6546; + this.state = 6544; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 6545; + this.state = 6543; this.match(PostgreSqlParser.KW_AS); } } - this.state = 6548; + this.state = 6546; this.colid(); } break; @@ -39324,24 +39308,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6551; + this.state = 6549; this.match(PostgreSqlParser.KW_TABLESAMPLE); - this.state = 6552; + this.state = 6550; this.function_name(); - this.state = 6553; + this.state = 6551; this.execute_param_clause(); - this.state = 6559; + this.state = 6557; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 882, this.context) ) { case 1: { - this.state = 6554; + this.state = 6552; this.match(PostgreSqlParser.KW_REPEATABLE); - this.state = 6555; + this.state = 6553; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6556; + this.state = 6554; this.expression(); - this.state = 6557; + this.state = 6555; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -39369,56 +39353,56 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6575; + this.state = 6573; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 884, this.context) ) { case 1: { - this.state = 6561; + this.state = 6559; this.func_expr_windowless(); } break; case 2: { { - this.state = 6562; + this.state = 6560; this.match(PostgreSqlParser.KW_ROWS); - this.state = 6563; + this.state = 6561; this.match(PostgreSqlParser.KW_FROM); - this.state = 6564; + this.state = 6562; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6565; + this.state = 6563; this.rowsfrom_item(); - this.state = 6570; + this.state = 6568; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6566; + this.state = 6564; this.match(PostgreSqlParser.COMMA); - this.state = 6567; + this.state = 6565; this.rowsfrom_item(); } } - this.state = 6572; + this.state = 6570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6573; + this.state = 6571; this.match(PostgreSqlParser.CLOSE_PAREN); } } break; } - this.state = 6579; + this.state = 6577; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 885, this.context) ) { case 1: { - this.state = 6577; + this.state = 6575; this.match(PostgreSqlParser.KW_WITH); - this.state = 6578; + this.state = 6576; this.match(PostgreSqlParser.KW_ORDINALITY); } break; @@ -39446,20 +39430,20 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6581; + this.state = 6579; this.func_expr_windowless(); - this.state = 6587; + this.state = 6585; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 6582; + this.state = 6580; this.match(PostgreSqlParser.KW_AS); - this.state = 6583; + this.state = 6581; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6584; + this.state = 6582; this.tablefuncelementlist(); - this.state = 6585; + this.state = 6583; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -39486,9 +39470,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6589; + this.state = 6587; this.match(PostgreSqlParser.KW_WHERE); - this.state = 6590; + this.state = 6588; this.column_expr_noparen(); } } @@ -39512,24 +39496,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6592; + this.state = 6590; this.match(PostgreSqlParser.KW_WHERE); - this.state = 6597; + this.state = 6595; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { case 1: { - this.state = 6593; + this.state = 6591; this.match(PostgreSqlParser.KW_CURRENT); - this.state = 6594; + this.state = 6592; this.match(PostgreSqlParser.KW_OF); - this.state = 6595; + this.state = 6593; this.colid(); } break; case 2: { - this.state = 6596; + this.state = 6594; this.expression(); } break; @@ -39557,21 +39541,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6599; + this.state = 6597; this.tablefuncelement(); - this.state = 6604; + this.state = 6602; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6600; + this.state = 6598; this.match(PostgreSqlParser.COMMA); - this.state = 6601; + this.state = 6599; this.tablefuncelement(); } } - this.state = 6606; + this.state = 6604; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39594,23 +39578,24 @@ export class PostgreSqlParser extends SQLParserBase { public tablefuncelement(): TablefuncelementContext { let localContext = new TablefuncelementContext(this.context, this.state); this.enterRule(localContext, 644, PostgreSqlParser.RULE_tablefuncelement); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6607; + this.state = 6605; this.colid(); - this.state = 6608; + this.state = 6606; this.typename(); - this.state = 6610; + this.state = 6608; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 889, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 6609; + this.state = 6607; this.opt_collate_clause(); } - break; } + } } catch (re) { @@ -39634,71 +39619,71 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6612; + this.state = 6610; this.match(PostgreSqlParser.KW_XMLTABLE); - this.state = 6613; + this.state = 6611; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 6627; + this.state = 6625; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 891, this.context) ) { case 1: { - this.state = 6614; + this.state = 6612; this.match(PostgreSqlParser.KW_XMLNAMESPACES); - this.state = 6615; + this.state = 6613; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6616; + this.state = 6614; this.xml_namespace_el(); - this.state = 6621; + this.state = 6619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6617; + this.state = 6615; this.match(PostgreSqlParser.COMMA); - this.state = 6618; + this.state = 6616; this.xml_namespace_el(); } } - this.state = 6623; + this.state = 6621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6624; + this.state = 6622; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6625; + this.state = 6623; this.match(PostgreSqlParser.COMMA); } break; } - this.state = 6629; + this.state = 6627; this.primaryExpression(0); - this.state = 6630; + this.state = 6628; this.xmlexists_argument(); - this.state = 6631; + this.state = 6629; this.match(PostgreSqlParser.KW_COLUMNS); - this.state = 6632; + this.state = 6630; this.xmltable_column_el(); - this.state = 6637; + this.state = 6635; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6633; + this.state = 6631; this.match(PostgreSqlParser.COMMA); - this.state = 6634; + this.state = 6632; this.xmltable_column_el(); } } - this.state = 6639; + this.state = 6637; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 6640; + this.state = 6638; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -39723,18 +39708,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6642; + this.state = 6640; this.colid(); - this.state = 6661; + this.state = 6659; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -40137,6 +40116,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -40149,56 +40129,324 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6643; + this.state = 6641; this.typename(); - this.state = 6657; + this.state = 6655; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { + if (((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 50331649) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6653; + this.state = 6651; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { - this.state = 6653; + this.state = 6651; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_COLUMNS: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -40227,6 +40475,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: case PostgreSqlParser.QuotedIdentifier: case PostgreSqlParser.UnicodeQuotedIdentifier: @@ -40237,40 +40488,40 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6646; + this.state = 6644; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 893, this.context) ) { case 1: { - this.state = 6644; + this.state = 6642; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 2: { - this.state = 6645; + this.state = 6643; this.identifier(); } break; } - this.state = 6648; + this.state = 6646; this.expression(); } break; case PostgreSqlParser.KW_NOT: case PostgreSqlParser.KW_NULL: { - this.state = 6650; + this.state = 6648; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6649; + this.state = 6647; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6652; + this.state = 6650; this.match(PostgreSqlParser.KW_NULL); } break; @@ -40278,10 +40529,10 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 6655; + this.state = 6653; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584); + } while (((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 50331649) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584); } } @@ -40289,9 +40540,9 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_FOR: { - this.state = 6659; + this.state = 6657; this.match(PostgreSqlParser.KW_FOR); - this.state = 6660; + this.state = 6658; this.match(PostgreSqlParser.KW_ORDINALITY); } break; @@ -40318,26 +40569,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Xml_namespace_elContext(this.context, this.state); this.enterRule(localContext, 650, PostgreSqlParser.RULE_xml_namespace_el); try { - this.state = 6669; + this.state = 6667; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 899, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6663; + this.state = 6661; this.primaryExpression(0); - this.state = 6664; + this.state = 6662; this.match(PostgreSqlParser.KW_AS); - this.state = 6665; + this.state = 6663; this.collabel(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6667; + this.state = 6665; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 6668; + this.state = 6666; this.primaryExpression(0); } break; @@ -40363,55 +40614,55 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 6697; + this.state = 6695; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 905, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6672; + this.state = 6670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 415) { { - this.state = 6671; + this.state = 6669; this.match(PostgreSqlParser.KW_SETOF); } } - this.state = 6674; + this.state = 6672; this.simpletypename(); - this.state = 6691; + this.state = 6689; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 904, this.context) ) { case 1: { { - this.state = 6682; + this.state = 6680; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6675; + this.state = 6673; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 6677; + this.state = 6675; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 571) { { - this.state = 6676; + this.state = 6674; this.match(PostgreSqlParser.Integral); } } - this.state = 6679; + this.state = 6677; this.match(PostgreSqlParser.CLOSE_BRACKET); } } } - this.state = 6684; + this.state = 6682; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); } @@ -40420,18 +40671,18 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6685; + this.state = 6683; this.match(PostgreSqlParser.KW_ARRAY); - this.state = 6689; + this.state = 6687; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 903, this.context) ) { case 1: { - this.state = 6686; + this.state = 6684; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 6687; + this.state = 6685; this.match(PostgreSqlParser.Integral); - this.state = 6688; + this.state = 6686; this.match(PostgreSqlParser.CLOSE_BRACKET); } break; @@ -40444,11 +40695,11 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6693; + this.state = 6691; this.qualified_name(); - this.state = 6694; + this.state = 6692; this.match(PostgreSqlParser.PERCENT); - this.state = 6695; + this.state = 6693; _la = this.tokenStream.LA(1); if(!(_la === 360 || _la === 477)) { this.errorHandler.recoverInline(this); @@ -40479,30 +40730,30 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new SimpletypenameContext(this.context, this.state); this.enterRule(localContext, 654, PostgreSqlParser.RULE_simpletypename); try { - this.state = 6714; + this.state = 6712; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 910, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6699; + this.state = 6697; this.type_function_name(); - this.state = 6701; + this.state = 6699; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 906, this.context) ) { case 1: { - this.state = 6700; + this.state = 6698; this.attrs(); } break; } - this.state = 6704; + this.state = 6702; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 907, this.context) ) { case 1: { - this.state = 6703; + this.state = 6701; this.execute_param_clause(); } break; @@ -40512,26 +40763,26 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6706; + this.state = 6704; this.consttypename(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6707; + this.state = 6705; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 6712; + this.state = 6710; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 909, this.context) ) { case 1: { - this.state = 6709; + this.state = 6707; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 908, this.context) ) { case 1: { - this.state = 6708; + this.state = 6706; this.opt_interval(); } break; @@ -40540,7 +40791,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6711; + this.state = 6709; this.opt_float(); } break; @@ -40567,7 +40818,7 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ConsttypenameContext(this.context, this.state); this.enterRule(localContext, 656, PostgreSqlParser.RULE_consttypename); try { - this.state = 6720; + this.state = 6718; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DOUBLE: @@ -40583,14 +40834,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SMALLINT: this.enterOuterAlt(localContext, 1); { - this.state = 6716; + this.state = 6714; this.numeric(); } break; case PostgreSqlParser.KW_BIT: this.enterOuterAlt(localContext, 2); { - this.state = 6717; + this.state = 6715; this.bit(); } break; @@ -40601,7 +40852,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_VARCHAR: this.enterOuterAlt(localContext, 3); { - this.state = 6718; + this.state = 6716; this.character(); } break; @@ -40609,7 +40860,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_TIMESTAMP: this.enterOuterAlt(localContext, 4); { - this.state = 6719; + this.state = 6717; this.constdatetime(); } break; @@ -40636,55 +40887,55 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 658, PostgreSqlParser.RULE_numeric); let _la: number; try { - this.state = 6738; + this.state = 6736; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INT: this.enterOuterAlt(localContext, 1); { - this.state = 6722; + this.state = 6720; this.match(PostgreSqlParser.KW_INT); } break; case PostgreSqlParser.KW_INTEGER: this.enterOuterAlt(localContext, 2); { - this.state = 6723; + this.state = 6721; this.match(PostgreSqlParser.KW_INTEGER); } break; case PostgreSqlParser.KW_SMALLINT: this.enterOuterAlt(localContext, 3); { - this.state = 6724; + this.state = 6722; this.match(PostgreSqlParser.KW_SMALLINT); } break; case PostgreSqlParser.KW_BIGINT: this.enterOuterAlt(localContext, 4); { - this.state = 6725; + this.state = 6723; this.match(PostgreSqlParser.KW_BIGINT); } break; case PostgreSqlParser.KW_REAL: this.enterOuterAlt(localContext, 5); { - this.state = 6726; + this.state = 6724; this.match(PostgreSqlParser.KW_REAL); } break; case PostgreSqlParser.KW_FLOAT: this.enterOuterAlt(localContext, 6); { - this.state = 6727; + this.state = 6725; this.match(PostgreSqlParser.KW_FLOAT); - this.state = 6729; + this.state = 6727; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 912, this.context) ) { case 1: { - this.state = 6728; + this.state = 6726; this.opt_float(); } break; @@ -40694,9 +40945,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DOUBLE: this.enterOuterAlt(localContext, 7); { - this.state = 6731; + this.state = 6729; this.match(PostgreSqlParser.KW_DOUBLE); - this.state = 6732; + this.state = 6730; this.match(PostgreSqlParser.KW_PRECISION); } break; @@ -40705,7 +40956,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NUMERIC: this.enterOuterAlt(localContext, 8); { - this.state = 6733; + this.state = 6731; _la = this.tokenStream.LA(1); if(!(((((_la - 394)) & ~0x1F) === 0 && ((1 << (_la - 394)) & 32771) !== 0))) { this.errorHandler.recoverInline(this); @@ -40714,12 +40965,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6735; + this.state = 6733; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 913, this.context) ) { case 1: { - this.state = 6734; + this.state = 6732; this.execute_param_clause(); } break; @@ -40729,7 +40980,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_BOOLEAN: this.enterOuterAlt(localContext, 9); { - this.state = 6737; + this.state = 6735; this.match(PostgreSqlParser.KW_BOOLEAN); } break; @@ -40757,11 +41008,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6740; + this.state = 6738; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6741; + this.state = 6739; this.match(PostgreSqlParser.Integral); - this.state = 6742; + this.state = 6740; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -40785,24 +41036,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6744; + this.state = 6742; this.match(PostgreSqlParser.KW_BIT); - this.state = 6746; + this.state = 6744; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 915, this.context) ) { case 1: { - this.state = 6745; + this.state = 6743; this.match(PostgreSqlParser.KW_VARYING); } break; } - this.state = 6749; + this.state = 6747; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 916, this.context) ) { case 1: { - this.state = 6748; + this.state = 6746; this.execute_param_clause(); } break; @@ -40830,14 +41081,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6761; + this.state = 6759; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CHAR: case PostgreSqlParser.KW_CHARACTER: case PostgreSqlParser.KW_NCHAR: { - this.state = 6751; + this.state = 6749; _la = this.tokenStream.LA(1); if(!(((((_la - 391)) & ~0x1F) === 0 && ((1 << (_la - 391)) & 32771) !== 0))) { this.errorHandler.recoverInline(this); @@ -40846,12 +41097,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6753; + this.state = 6751; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 917, this.context) ) { case 1: { - this.state = 6752; + this.state = 6750; this.match(PostgreSqlParser.KW_VARYING); } break; @@ -40860,15 +41111,15 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_VARCHAR: { - this.state = 6755; + this.state = 6753; this.match(PostgreSqlParser.KW_VARCHAR); } break; case PostgreSqlParser.KW_NATIONAL: { - this.state = 6756; + this.state = 6754; this.match(PostgreSqlParser.KW_NATIONAL); - this.state = 6757; + this.state = 6755; _la = this.tokenStream.LA(1); if(!(_la === 391 || _la === 392)) { this.errorHandler.recoverInline(this); @@ -40877,12 +41128,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6759; + this.state = 6757; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 918, this.context) ) { case 1: { - this.state = 6758; + this.state = 6756; this.match(PostgreSqlParser.KW_VARYING); } break; @@ -40892,12 +41143,12 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6764; + this.state = 6762; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 920, this.context) ) { case 1: { - this.state = 6763; + this.state = 6761; this.opt_float(); } break; @@ -40925,7 +41176,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6766; + this.state = 6764; _la = this.tokenStream.LA(1); if(!(_la === 418 || _la === 419)) { this.errorHandler.recoverInline(this); @@ -40934,22 +41185,22 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6768; + this.state = 6766; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 921, this.context) ) { case 1: { - this.state = 6767; + this.state = 6765; this.opt_float(); } break; } - this.state = 6773; + this.state = 6771; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 922, this.context) ) { case 1: { - this.state = 6770; + this.state = 6768; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 379)) { this.errorHandler.recoverInline(this); @@ -40958,9 +41209,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6771; + this.state = 6769; this.match(PostgreSqlParser.KW_TIME); - this.state = 6772; + this.state = 6770; this.match(PostgreSqlParser.KW_ZONE); } break; @@ -40985,36 +41236,36 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Opt_intervalContext(this.context, this.state); this.enterRule(localContext, 668, PostgreSqlParser.RULE_opt_interval); try { - this.state = 6804; + this.state = 6802; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_MONTH: this.enterOuterAlt(localContext, 1); { - this.state = 6775; + this.state = 6773; this.match(PostgreSqlParser.KW_MONTH); } break; case PostgreSqlParser.KW_SECOND: this.enterOuterAlt(localContext, 2); { - this.state = 6776; + this.state = 6774; this.interval_second(); } break; case PostgreSqlParser.KW_YEAR: this.enterOuterAlt(localContext, 3); { - this.state = 6777; + this.state = 6775; this.match(PostgreSqlParser.KW_YEAR); - this.state = 6780; + this.state = 6778; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 923, this.context) ) { case 1: { - this.state = 6778; + this.state = 6776; this.match(PostgreSqlParser.KW_TO); - this.state = 6779; + this.state = 6777; this.match(PostgreSqlParser.KW_MONTH); } break; @@ -41024,33 +41275,33 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DAY: this.enterOuterAlt(localContext, 4); { - this.state = 6782; + this.state = 6780; this.match(PostgreSqlParser.KW_DAY); - this.state = 6789; + this.state = 6787; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 925, this.context) ) { case 1: { - this.state = 6783; + this.state = 6781; this.match(PostgreSqlParser.KW_TO); - this.state = 6787; + this.state = 6785; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_HOUR: { - this.state = 6784; + this.state = 6782; this.match(PostgreSqlParser.KW_HOUR); } break; case PostgreSqlParser.KW_MINUTE: { - this.state = 6785; + this.state = 6783; this.match(PostgreSqlParser.KW_MINUTE); } break; case PostgreSqlParser.KW_SECOND: { - this.state = 6786; + this.state = 6784; this.interval_second(); } break; @@ -41065,27 +41316,27 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_HOUR: this.enterOuterAlt(localContext, 5); { - this.state = 6791; + this.state = 6789; this.match(PostgreSqlParser.KW_HOUR); - this.state = 6797; + this.state = 6795; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 927, this.context) ) { case 1: { - this.state = 6792; + this.state = 6790; this.match(PostgreSqlParser.KW_TO); - this.state = 6795; + this.state = 6793; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_MINUTE: { - this.state = 6793; + this.state = 6791; this.match(PostgreSqlParser.KW_MINUTE); } break; case PostgreSqlParser.KW_SECOND: { - this.state = 6794; + this.state = 6792; this.interval_second(); } break; @@ -41100,16 +41351,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_MINUTE: this.enterOuterAlt(localContext, 6); { - this.state = 6799; + this.state = 6797; this.match(PostgreSqlParser.KW_MINUTE); - this.state = 6802; + this.state = 6800; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 928, this.context) ) { case 1: { - this.state = 6800; + this.state = 6798; this.match(PostgreSqlParser.KW_TO); - this.state = 6801; + this.state = 6799; this.interval_second(); } break; @@ -41140,14 +41391,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6806; + this.state = 6804; this.match(PostgreSqlParser.KW_SECOND); - this.state = 6808; + this.state = 6806; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 930, this.context) ) { case 1: { - this.state = 6807; + this.state = 6805; this.opt_float(); } break; @@ -41175,7 +41426,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6810; + this.state = 6808; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 44237824) !== 0))) { this.errorHandler.recoverInline(this); @@ -41206,7 +41457,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6812; + this.state = 6810; this.booleanExpression(0); } } @@ -41242,7 +41493,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6821; + this.state = 6819; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -41250,12 +41501,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -41263,9 +41511,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NULL: @@ -41675,6 +41921,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -41695,14 +41942,14 @@ export class PostgreSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 6815; + this.state = 6813; (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 6817; + this.state = 6815; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 931, this.context) ) { case 1: { - this.state = 6816; + this.state = 6814; this.predicate((localContext as PredicatedContext)._valueExpression); } break; @@ -41714,9 +41961,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 6819; + this.state = 6817; this.match(PostgreSqlParser.KW_NOT); - this.state = 6820; + this.state = 6818; this.booleanExpression(3); } break; @@ -41724,7 +41971,7 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 6831; + this.state = 6829; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 934, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { @@ -41734,7 +41981,7 @@ export class PostgreSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 6829; + this.state = 6827; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 933, this.context) ) { case 1: @@ -41742,13 +41989,13 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_booleanExpression); - this.state = 6823; + this.state = 6821; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 6824; + this.state = 6822; (localContext as LogicalBinaryContext)._operator = this.match(PostgreSqlParser.KW_AND); - this.state = 6825; + this.state = 6823; (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -41757,20 +42004,20 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_booleanExpression); - this.state = 6826; + this.state = 6824; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 6827; + this.state = 6825; (localContext as LogicalBinaryContext)._operator = this.match(PostgreSqlParser.KW_OR); - this.state = 6828; + this.state = 6826; (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); } break; } } } - this.state = 6833; + this.state = 6831; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 934, this.context); } @@ -41795,16 +42042,16 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 678, PostgreSqlParser.RULE_predicate); let _la: number; try { - this.state = 6905; + this.state = 6903; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { case 1: localContext = new ComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6834; + this.state = 6832; this.comparisonOperator(); - this.state = 6835; + this.state = 6833; (localContext as ComparisonContext)._right = this.valueExpression(0); } break; @@ -41812,28 +42059,28 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new QuantifiedComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6837; + this.state = 6835; this.comparisonOperator(); - this.state = 6838; + this.state = 6836; this.subquery_Op(); - this.state = 6839; + this.state = 6837; this.sub_type(); - this.state = 6845; + this.state = 6843; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 935, this.context) ) { case 1: { - this.state = 6840; + this.state = 6838; this.select_with_parens(); } break; case 2: { - this.state = 6841; + this.state = 6839; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6842; + this.state = 6840; this.expression(); - this.state = 6843; + this.state = 6841; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -41844,23 +42091,23 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new BetweenContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6848; + this.state = 6846; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6847; + this.state = 6845; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6850; + this.state = 6848; this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 6851; + this.state = 6849; (localContext as BetweenContext)._lower = this.valueExpression(0); - this.state = 6852; + this.state = 6850; this.match(PostgreSqlParser.KW_AND); - this.state = 6853; + this.state = 6851; (localContext as BetweenContext)._upper = this.valueExpression(0); } break; @@ -41868,39 +42115,39 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new InListContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 6856; + this.state = 6854; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6855; + this.state = 6853; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6858; + this.state = 6856; this.match(PostgreSqlParser.KW_IN); - this.state = 6859; + this.state = 6857; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6860; + this.state = 6858; this.expression(); - this.state = 6865; + this.state = 6863; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6861; + this.state = 6859; this.match(PostgreSqlParser.COMMA); - this.state = 6862; + this.state = 6860; this.expression(); } } - this.state = 6867; + this.state = 6865; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6868; + this.state = 6866; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -41908,19 +42155,19 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new InSubqueryContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 6871; + this.state = 6869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6870; + this.state = 6868; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6873; + this.state = 6871; this.match(PostgreSqlParser.KW_IN); - this.state = 6874; + this.state = 6872; this.select_with_parens(); } break; @@ -41928,49 +42175,49 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LikeContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 6876; + this.state = 6874; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6875; + this.state = 6873; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6886; + this.state = 6884; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_LIKE: { - this.state = 6878; + this.state = 6876; this.match(PostgreSqlParser.KW_LIKE); } break; case PostgreSqlParser.KW_ILIKE: { - this.state = 6879; + this.state = 6877; this.match(PostgreSqlParser.KW_ILIKE); } break; case PostgreSqlParser.KW_SIMILAR: { - this.state = 6880; + this.state = 6878; this.match(PostgreSqlParser.KW_SIMILAR); - this.state = 6881; + this.state = 6879; this.match(PostgreSqlParser.KW_TO); } break; case PostgreSqlParser.KW_BETWEEN: { - this.state = 6882; + this.state = 6880; this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 6884; + this.state = 6882; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 91) { { - this.state = 6883; + this.state = 6881; this.match(PostgreSqlParser.KW_SYMMETRIC); } } @@ -41980,16 +42227,16 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6888; + this.state = 6886; (localContext as LikeContext)._pattern = this.valueExpression(0); - this.state = 6891; + this.state = 6889; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 943, this.context) ) { case 1: { - this.state = 6889; + this.state = 6887; this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 6890; + this.state = 6888; (localContext as LikeContext)._escape = this.valueExpression(0); } break; @@ -42000,19 +42247,19 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new NullPredicateContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 6893; + this.state = 6891; this.match(PostgreSqlParser.KW_IS); - this.state = 6895; + this.state = 6893; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6894; + this.state = 6892; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6897; + this.state = 6895; this.match(PostgreSqlParser.KW_NULL); } break; @@ -42020,23 +42267,23 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new DistinctFromContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 6898; + this.state = 6896; this.match(PostgreSqlParser.KW_IS); - this.state = 6900; + this.state = 6898; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6899; + this.state = 6897; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6902; + this.state = 6900; this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 6903; + this.state = 6901; this.match(PostgreSqlParser.KW_FROM); - this.state = 6904; + this.state = 6902; (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; @@ -42075,7 +42322,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6911; + this.state = 6909; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 947, this.context) ) { case 1: @@ -42084,7 +42331,7 @@ export class PostgreSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 6908; + this.state = 6906; this.primaryExpression(0); } break; @@ -42093,7 +42340,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ArithmeticUnaryContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 6909; + this.state = 6907; (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { @@ -42103,13 +42350,13 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6910; + this.state = 6908; this.valueExpression(4); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 6929; + this.state = 6927; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 949, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { @@ -42119,7 +42366,7 @@ export class PostgreSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 6927; + this.state = 6925; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 948, this.context) ) { case 1: @@ -42127,11 +42374,11 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6913; + this.state = 6911; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 6914; + this.state = 6912; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 134234624) !== 0))) { @@ -42141,7 +42388,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6915; + this.state = 6913; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -42150,11 +42397,11 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6916; + this.state = 6914; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 6917; + this.state = 6915; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { @@ -42164,7 +42411,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6918; + this.state = 6916; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -42173,13 +42420,13 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ConcatenationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6919; + this.state = 6917; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 6920; + this.state = 6918; this.match(PostgreSqlParser.CARET); - this.state = 6921; + this.state = 6919; (localContext as ConcatenationContext)._right = this.valueExpression(2); } break; @@ -42187,24 +42434,24 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6922; + this.state = 6920; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 6923; + this.state = 6921; this.match(PostgreSqlParser.KW_AT); - this.state = 6924; + this.state = 6922; this.match(PostgreSqlParser.KW_TIME); - this.state = 6925; + this.state = 6923; this.match(PostgreSqlParser.KW_ZONE); - this.state = 6926; + this.state = 6924; this.expression(); } break; } } } - this.state = 6931; + this.state = 6929; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 949, this.context); } @@ -42243,12 +42490,12 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7020; + this.state = 7018; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 960, this.context) ) { case 1: { - this.state = 6933; + this.state = 6931; _la = this.tokenStream.LA(1); if(!(_la === 98 || _la === 396)) { this.errorHandler.recoverInline(this); @@ -42257,26 +42504,26 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6934; + this.state = 6932; this.select_with_parens(); } break; case 2: { - this.state = 6935; + this.state = 6933; this.match(PostgreSqlParser.KW_ARRAY); - this.state = 6938; + this.state = 6936; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 6936; + this.state = 6934; this.select_with_parens(); } break; case PostgreSqlParser.OPEN_BRACKET: { - this.state = 6937; + this.state = 6935; this.array_expr(); } break; @@ -42287,49 +42534,49 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 6940; + this.state = 6938; this.match(PostgreSqlParser.PARAM); - this.state = 6941; + this.state = 6939; this.opt_indirection(); } break; case 4: { - this.state = 6942; + this.state = 6940; this.match(PostgreSqlParser.KW_GROUPING); - this.state = 6943; + this.state = 6941; this.execute_param_clause(); } break; case 5: { - this.state = 6944; + this.state = 6942; this.match(PostgreSqlParser.Integral); } break; case 6: { - this.state = 6945; + this.state = 6943; this.match(PostgreSqlParser.Numeric); } break; case 7: { - this.state = 6946; + this.state = 6944; this.match(PostgreSqlParser.BinaryStringConstant); } break; case 8: { - this.state = 6947; + this.state = 6945; this.match(PostgreSqlParser.HexadecimalStringConstant); } break; case 9: { - this.state = 6948; + this.state = 6946; this.function_name(); - this.state = 6958; + this.state = 6956; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -42337,29 +42584,29 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6949; + this.state = 6947; this.sconst(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6950; + this.state = 6948; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6951; + this.state = 6949; this.func_arg_list(); - this.state = 6953; + this.state = 6951; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 6952; + this.state = 6950; this.sort_clause(); } } - this.state = 6955; + this.state = 6953; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6956; + this.state = 6954; this.sconst(); } break; @@ -42370,25 +42617,25 @@ export class PostgreSqlParser extends SQLParserBase { break; case 10: { - this.state = 6961; + this.state = 6959; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 190 || ((((_la - 388)) & ~0x1F) === 0 && ((1 << (_la - 388)) & 3525731551) !== 0) || _la === 423) { { - this.state = 6960; + this.state = 6958; this.consttypename(); } } - this.state = 6963; + this.state = 6961; this.sconst(); } break; case 11: { - this.state = 6964; + this.state = 6962; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 6972; + this.state = 6970; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -42396,14 +42643,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6965; + this.state = 6963; this.sconst(); - this.state = 6967; + this.state = 6965; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { case 1: { - this.state = 6966; + this.state = 6964; this.opt_interval(); } break; @@ -42412,9 +42659,9 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6969; + this.state = 6967; this.opt_float(); - this.state = 6970; + this.state = 6968; this.sconst(); } break; @@ -42425,100 +42672,100 @@ export class PostgreSqlParser extends SQLParserBase { break; case 12: { - this.state = 6974; + this.state = 6972; this.match(PostgreSqlParser.KW_TRUE); } break; case 13: { - this.state = 6975; + this.state = 6973; this.match(PostgreSqlParser.KW_FALSE); } break; case 14: { - this.state = 6976; + this.state = 6974; this.match(PostgreSqlParser.KW_NULL); } break; case 15: { - this.state = 6977; + this.state = 6975; this.match(PostgreSqlParser.PLSQLVARIABLENAME); } break; case 16: { - this.state = 6978; + this.state = 6976; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6979; + this.state = 6977; localContext._a_expr_in_parens = this.expression(); - this.state = 6980; + this.state = 6978; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6981; + this.state = 6979; this.opt_indirection(); } break; case 17: { - this.state = 6983; + this.state = 6981; this.match(PostgreSqlParser.KW_CASE); - this.state = 6985; + this.state = 6983; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 6984; + this.state = 6982; this.expression(); } } - this.state = 6988; + this.state = 6986; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6987; + this.state = 6985; this.when_clause(); } } - this.state = 6990; + this.state = 6988; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); - this.state = 6994; + this.state = 6992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 58) { { - this.state = 6992; + this.state = 6990; this.match(PostgreSqlParser.KW_ELSE); - this.state = 6993; + this.state = 6991; this.expression(); } } - this.state = 6996; + this.state = 6994; this.match(PostgreSqlParser.KW_END); } break; case 18: { - this.state = 6998; + this.state = 6996; this.func_expr(); } break; case 19: { - this.state = 6999; + this.state = 6997; this.select_with_parens(); - this.state = 7001; + this.state = 6999; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 959, this.context) ) { case 1: { - this.state = 7000; + this.state = 6998; this.indirection(); } break; @@ -42527,43 +42774,43 @@ export class PostgreSqlParser extends SQLParserBase { break; case 20: { - this.state = 7003; + this.state = 7001; this.explicit_row(); } break; case 21: { - this.state = 7004; + this.state = 7002; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7005; + this.state = 7003; this.expression(); - this.state = 7006; + this.state = 7004; this.match(PostgreSqlParser.COMMA); - this.state = 7007; + this.state = 7005; this.expr_list(); - this.state = 7008; + this.state = 7006; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 22: { - this.state = 7010; + this.state = 7008; this.row(); - this.state = 7011; + this.state = 7009; this.match(PostgreSqlParser.KW_OVERLAPS); - this.state = 7012; + this.state = 7010; this.row(); } break; case 23: { - this.state = 7014; + this.state = 7012; this.qualified_name(); } break; case 24: { - this.state = 7015; + this.state = 7013; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -42572,21 +42819,21 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7016; + this.state = 7014; this.primaryExpression(5); } break; case 25: { - this.state = 7017; + this.state = 7015; this.qual_op(); - this.state = 7018; + this.state = 7016; this.primaryExpression(2); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7049; + this.state = 7047; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 965, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { @@ -42596,20 +42843,20 @@ export class PostgreSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 7047; + this.state = 7045; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 964, this.context) ) { case 1: { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7022; + this.state = 7020; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7023; + this.state = 7021; this.mathop(); - this.state = 7024; + this.state = 7022; this.primaryExpression(4); } break; @@ -42617,13 +42864,13 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7026; + this.state = 7024; if (!(this.precpred(this.context, 6))) { throw this.createFailedPredicateException("this.precpred(this.context, 6)"); } - this.state = 7027; + this.state = 7025; this.match(PostgreSqlParser.TYPECAST); - this.state = 7028; + this.state = 7026; this.typename(); } break; @@ -42631,18 +42878,18 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7029; + this.state = 7027; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 7030; + this.state = 7028; this.qual_op(); - this.state = 7032; + this.state = 7030; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 961, this.context) ) { case 1: { - this.state = 7031; + this.state = 7029; this.primaryExpression(0); } break; @@ -42653,46 +42900,46 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7034; + this.state = 7032; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 7035; + this.state = 7033; this.match(PostgreSqlParser.KW_IS); - this.state = 7037; + this.state = 7035; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 7036; + this.state = 7034; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 7045; + this.state = 7043; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DISTINCT: { - this.state = 7039; + this.state = 7037; this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 7040; + this.state = 7038; this.match(PostgreSqlParser.KW_FROM); - this.state = 7041; + this.state = 7039; this.primaryExpression(0); } break; case PostgreSqlParser.KW_OF: { - this.state = 7042; + this.state = 7040; this.match(PostgreSqlParser.KW_OF); - this.state = 7043; + this.state = 7041; this.prep_type_clause(); } break; case PostgreSqlParser.KW_DOCUMENT: { - this.state = 7044; + this.state = 7042; this.match(PostgreSqlParser.KW_DOCUMENT); } break; @@ -42704,7 +42951,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 7051; + this.state = 7049; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 965, this.context); } @@ -42731,16 +42978,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7052; + this.state = 7050; this.function_name(); - this.state = 7078; + this.state = 7076; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 971, this.context) ) { case 1: { - this.state = 7053; + this.state = 7051; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7075; + this.state = 7073; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -42748,12 +42995,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -42761,9 +43005,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NOT: @@ -43174,6 +43416,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -43190,28 +43433,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7054; + this.state = 7052; this.func_arg_list(); - this.state = 7058; + this.state = 7056; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7055; + this.state = 7053; this.match(PostgreSqlParser.COMMA); - this.state = 7056; + this.state = 7054; this.match(PostgreSqlParser.KW_VARIADIC); - this.state = 7057; + this.state = 7055; this.func_arg_expr(); } } - this.state = 7061; + this.state = 7059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7060; + this.state = 7058; this.sort_clause(); } } @@ -43220,16 +43463,16 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_VARIADIC: { - this.state = 7063; + this.state = 7061; this.match(PostgreSqlParser.KW_VARIADIC); - this.state = 7064; + this.state = 7062; this.func_arg_expr(); - this.state = 7066; + this.state = 7064; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7065; + this.state = 7063; this.sort_clause(); } } @@ -43239,7 +43482,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ALL: case PostgreSqlParser.KW_DISTINCT: { - this.state = 7068; + this.state = 7066; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 56)) { this.errorHandler.recoverInline(this); @@ -43248,14 +43491,14 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7069; + this.state = 7067; this.func_arg_list(); - this.state = 7071; + this.state = 7069; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7070; + this.state = 7068; this.sort_clause(); } } @@ -43264,7 +43507,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.STAR: { - this.state = 7073; + this.state = 7071; this.match(PostgreSqlParser.STAR); } break; @@ -43276,7 +43519,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7077; + this.state = 7075; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -43301,73 +43544,67 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Func_exprContext(this.context, this.state); this.enterRule(localContext, 686, PostgreSqlParser.RULE_func_expr); try { - this.state = 7105; + this.state = 7103; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 976, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7080; + this.state = 7078; this.func_application(); - this.state = 7087; + this.state = 7085; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 972, this.context) ) { case 1: { - this.state = 7081; + this.state = 7079; this.match(PostgreSqlParser.KW_WITHIN); - this.state = 7082; + this.state = 7080; this.match(PostgreSqlParser.KW_GROUP); - this.state = 7083; + this.state = 7081; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7084; + this.state = 7082; this.sort_clause(); - this.state = 7085; + this.state = 7083; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 7095; + this.state = 7093; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 973, this.context) ) { case 1: { - this.state = 7089; + this.state = 7087; this.match(PostgreSqlParser.KW_FILTER); - this.state = 7090; + this.state = 7088; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7091; + this.state = 7089; this.match(PostgreSqlParser.KW_WHERE); - this.state = 7092; + this.state = 7090; this.expression(); - this.state = 7093; + this.state = 7091; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 7102; + this.state = 7100; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 975, this.context) ) { case 1: { - this.state = 7097; + this.state = 7095; this.match(PostgreSqlParser.KW_OVER); - this.state = 7100; + this.state = 7098; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 7098; + this.state = 7096; this.window_specification(); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -43749,6 +43986,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -43761,7 +43999,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7099; + this.state = 7097; this.colid(); } break; @@ -43776,7 +44014,7 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7104; + this.state = 7102; this.func_expr_common_subexpr(); } break; @@ -43800,20 +44038,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Func_expr_windowlessContext(this.context, this.state); this.enterRule(localContext, 688, PostgreSqlParser.RULE_func_expr_windowless); try { - this.state = 7109; + this.state = 7107; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 977, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7107; + this.state = 7105; this.func_application(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7108; + this.state = 7106; this.func_expr_common_subexpr(); } break; @@ -43838,28 +44076,28 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 690, PostgreSqlParser.RULE_func_expr_common_subexpr); let _la: number; try { - this.state = 7285; + this.state = 7283; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_COLLATION: this.enterOuterAlt(localContext, 1); { - this.state = 7111; + this.state = 7109; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 7112; + this.state = 7110; this.match(PostgreSqlParser.KW_FOR); - this.state = 7113; + this.state = 7111; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7114; + this.state = 7112; this.expression(); - this.state = 7115; + this.state = 7113; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_CURRENT_DATE: this.enterOuterAlt(localContext, 2); { - this.state = 7117; + this.state = 7115; this.match(PostgreSqlParser.KW_CURRENT_DATE); } break; @@ -43869,7 +44107,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LOCALTIMESTAMP: this.enterOuterAlt(localContext, 3); { - this.state = 7118; + this.state = 7116; _la = this.tokenStream.LA(1); if(!(((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 100663299) !== 0))) { this.errorHandler.recoverInline(this); @@ -43878,12 +44116,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7120; + this.state = 7118; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 978, this.context) ) { case 1: { - this.state = 7119; + this.state = 7117; this.opt_float(); } break; @@ -43893,42 +44131,42 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_ROLE: this.enterOuterAlt(localContext, 4); { - this.state = 7122; + this.state = 7120; this.match(PostgreSqlParser.KW_CURRENT_ROLE); } break; case PostgreSqlParser.KW_CURRENT_USER: this.enterOuterAlt(localContext, 5); { - this.state = 7123; + this.state = 7121; this.match(PostgreSqlParser.KW_CURRENT_USER); } break; case PostgreSqlParser.KW_SESSION_USER: this.enterOuterAlt(localContext, 6); { - this.state = 7124; + this.state = 7122; this.match(PostgreSqlParser.KW_SESSION_USER); } break; case PostgreSqlParser.KW_USER: this.enterOuterAlt(localContext, 7); { - this.state = 7125; + this.state = 7123; this.match(PostgreSqlParser.KW_USER); } break; case PostgreSqlParser.KW_CURRENT_CATALOG: this.enterOuterAlt(localContext, 8); { - this.state = 7126; + this.state = 7124; this.match(PostgreSqlParser.KW_CURRENT_CATALOG); } break; case PostgreSqlParser.KW_CURRENT_SCHEMA: this.enterOuterAlt(localContext, 9); { - this.state = 7127; + this.state = 7125; this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; @@ -43936,7 +44174,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_TREAT: this.enterOuterAlt(localContext, 10); { - this.state = 7128; + this.state = 7126; _la = this.tokenStream.LA(1); if(!(_la === 41 || _la === 420)) { this.errorHandler.recoverInline(this); @@ -43945,162 +44183,162 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7129; + this.state = 7127; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7130; + this.state = 7128; this.expression(); - this.state = 7131; + this.state = 7129; this.match(PostgreSqlParser.KW_AS); - this.state = 7132; + this.state = 7130; this.typename(); - this.state = 7133; + this.state = 7131; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_EXTRACT: this.enterOuterAlt(localContext, 11); { - this.state = 7135; + this.state = 7133; this.match(PostgreSqlParser.KW_EXTRACT); - this.state = 7136; + this.state = 7134; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7141; + this.state = 7139; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8929553) !== 0) || ((((_la - 207)) & ~0x1F) === 0 && ((1 << (_la - 207)) & 2057) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 428867841) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1059905) !== 0) || _la === 360 || _la === 384 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 7137; + this.state = 7135; this.extract_arg(); - this.state = 7138; + this.state = 7136; this.match(PostgreSqlParser.KW_FROM); - this.state = 7139; + this.state = 7137; this.expression(); } } - this.state = 7143; + this.state = 7141; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_NORMALIZE: this.enterOuterAlt(localContext, 12); { - this.state = 7144; + this.state = 7142; this.match(PostgreSqlParser.KW_NORMALIZE); - this.state = 7145; + this.state = 7143; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7146; + this.state = 7144; this.expression(); - this.state = 7149; + this.state = 7147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7147; + this.state = 7145; this.match(PostgreSqlParser.COMMA); - this.state = 7148; + this.state = 7146; this.unicode_normal_form(); } } - this.state = 7151; + this.state = 7149; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_OVERLAY: this.enterOuterAlt(localContext, 13); { - this.state = 7153; + this.state = 7151; this.match(PostgreSqlParser.KW_OVERLAY); - this.state = 7154; + this.state = 7152; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 7155; + this.state = 7153; this.expression(); - this.state = 7156; + this.state = 7154; this.match(PostgreSqlParser.KW_PLACING); - this.state = 7157; + this.state = 7155; this.expression(); - this.state = 7158; + this.state = 7156; this.match(PostgreSqlParser.KW_FROM); - this.state = 7159; + this.state = 7157; this.expression(); - this.state = 7162; + this.state = 7160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 7160; + this.state = 7158; this.match(PostgreSqlParser.KW_FOR); - this.state = 7161; + this.state = 7159; this.expression(); } } } - this.state = 7164; + this.state = 7162; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_POSITION: this.enterOuterAlt(localContext, 14); { - this.state = 7166; + this.state = 7164; this.match(PostgreSqlParser.KW_POSITION); - this.state = 7167; + this.state = 7165; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7172; + this.state = 7170; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763019) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763019) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7168; + this.state = 7166; this.primaryExpression(0); - this.state = 7169; + this.state = 7167; this.match(PostgreSqlParser.KW_IN); - this.state = 7170; + this.state = 7168; this.primaryExpression(0); } } - this.state = 7174; + this.state = 7172; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_SUBSTRING: this.enterOuterAlt(localContext, 15); { - this.state = 7175; + this.state = 7173; this.match(PostgreSqlParser.KW_SUBSTRING); - this.state = 7176; + this.state = 7174; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7178; + this.state = 7176; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7177; + this.state = 7175; this.substr_list(); } } - this.state = 7180; + this.state = 7178; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_TRIM: this.enterOuterAlt(localContext, 16); { - this.state = 7181; + this.state = 7179; this.match(PostgreSqlParser.KW_TRIM); - this.state = 7182; + this.state = 7180; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7184; + this.state = 7182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 39 || _la === 73 || _la === 95) { { - this.state = 7183; + this.state = 7181; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 73 || _la === 95)) { this.errorHandler.recoverInline(this); @@ -44113,47 +44351,47 @@ export class PostgreSqlParser extends SQLParserBase { } { - this.state = 7190; + this.state = 7188; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 986, this.context) ) { case 1: { - this.state = 7187; + this.state = 7185; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7186; + this.state = 7184; this.expression(); } } - this.state = 7189; + this.state = 7187; this.match(PostgreSqlParser.KW_FROM); } break; } - this.state = 7192; + this.state = 7190; this.expr_list(); } - this.state = 7194; + this.state = 7192; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_NULLIF: this.enterOuterAlt(localContext, 17); { - this.state = 7196; + this.state = 7194; this.match(PostgreSqlParser.KW_NULLIF); - this.state = 7197; + this.state = 7195; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7198; + this.state = 7196; this.expression(); - this.state = 7199; + this.state = 7197; this.match(PostgreSqlParser.COMMA); - this.state = 7200; + this.state = 7198; this.expression(); - this.state = 7201; + this.state = 7199; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -44163,7 +44401,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_XMLCONCAT: this.enterOuterAlt(localContext, 18); { - this.state = 7203; + this.state = 7201; _la = this.tokenStream.LA(1); if(!(((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 2113) !== 0) || _la === 425)) { this.errorHandler.recoverInline(this); @@ -44172,48 +44410,48 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7204; + this.state = 7202; this.execute_param_clause(); } break; case PostgreSqlParser.KW_XMLELEMENT: this.enterOuterAlt(localContext, 19); { - this.state = 7205; + this.state = 7203; this.match(PostgreSqlParser.KW_XMLELEMENT); - this.state = 7206; + this.state = 7204; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7207; + this.state = 7205; this.match(PostgreSqlParser.KW_NAME); - this.state = 7208; + this.state = 7206; this.collabel(); - this.state = 7218; + this.state = 7216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7209; + this.state = 7207; this.match(PostgreSqlParser.COMMA); - this.state = 7216; + this.state = 7214; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 987, this.context) ) { case 1: { { - this.state = 7210; + this.state = 7208; this.match(PostgreSqlParser.KW_XMLATTRIBUTES); - this.state = 7211; + this.state = 7209; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7212; + this.state = 7210; this.xml_attribute_list(); - this.state = 7213; + this.state = 7211; this.match(PostgreSqlParser.CLOSE_PAREN); } } break; case 2: { - this.state = 7215; + this.state = 7213; this.expr_list(); } break; @@ -44221,55 +44459,55 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7220; + this.state = 7218; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLEXISTS: this.enterOuterAlt(localContext, 20); { - this.state = 7222; + this.state = 7220; this.match(PostgreSqlParser.KW_XMLEXISTS); - this.state = 7223; + this.state = 7221; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7224; + this.state = 7222; this.primaryExpression(0); - this.state = 7225; + this.state = 7223; this.xmlexists_argument(); - this.state = 7226; + this.state = 7224; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLFOREST: this.enterOuterAlt(localContext, 21); { - this.state = 7228; + this.state = 7226; this.match(PostgreSqlParser.KW_XMLFOREST); - this.state = 7229; + this.state = 7227; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7230; + this.state = 7228; this.xml_attribute_list(); - this.state = 7231; + this.state = 7229; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLPARSE: this.enterOuterAlt(localContext, 22); { - this.state = 7233; + this.state = 7231; this.match(PostgreSqlParser.KW_XMLPARSE); - this.state = 7234; + this.state = 7232; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7235; + this.state = 7233; this.document_or_content(); - this.state = 7236; + this.state = 7234; this.expression(); - this.state = 7239; + this.state = 7237; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 292 || _la === 347) { { - this.state = 7237; + this.state = 7235; _la = this.tokenStream.LA(1); if(!(_la === 292 || _la === 347)) { this.errorHandler.recoverInline(this); @@ -44278,111 +44516,111 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7238; + this.state = 7236; this.match(PostgreSqlParser.KW_WHITESPACE); } } - this.state = 7241; + this.state = 7239; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLPI: this.enterOuterAlt(localContext, 23); { - this.state = 7243; + this.state = 7241; this.match(PostgreSqlParser.KW_XMLPI); - this.state = 7244; + this.state = 7242; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7245; + this.state = 7243; this.match(PostgreSqlParser.KW_NAME); - this.state = 7246; + this.state = 7244; this.collabel(); - this.state = 7249; + this.state = 7247; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7247; + this.state = 7245; this.match(PostgreSqlParser.COMMA); - this.state = 7248; + this.state = 7246; this.expression(); } } - this.state = 7251; + this.state = 7249; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLROOT: this.enterOuterAlt(localContext, 24); { - this.state = 7253; + this.state = 7251; this.match(PostgreSqlParser.KW_XMLROOT); - this.state = 7254; + this.state = 7252; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7255; + this.state = 7253; this.match(PostgreSqlParser.KW_XML); - this.state = 7256; + this.state = 7254; this.expression(); - this.state = 7257; + this.state = 7255; this.match(PostgreSqlParser.COMMA); - this.state = 7258; + this.state = 7256; this.match(PostgreSqlParser.KW_VERSION); - this.state = 7262; + this.state = 7260; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 991, this.context) ) { case 1: { { - this.state = 7259; + this.state = 7257; this.match(PostgreSqlParser.KW_NO); - this.state = 7260; + this.state = 7258; this.match(PostgreSqlParser.KW_VALUE); } } break; case 2: { - this.state = 7261; + this.state = 7259; this.expression(); } break; } - this.state = 7273; + this.state = 7271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7264; + this.state = 7262; this.match(PostgreSqlParser.COMMA); - this.state = 7265; + this.state = 7263; this.match(PostgreSqlParser.KW_STANDALONE); - this.state = 7271; + this.state = 7269; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: case PostgreSqlParser.KW_VALUE: { { - this.state = 7267; + this.state = 7265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 7266; + this.state = 7264; this.match(PostgreSqlParser.KW_NO); } } - this.state = 7269; + this.state = 7267; this.match(PostgreSqlParser.KW_VALUE); } } break; case PostgreSqlParser.KW_YES: { - this.state = 7270; + this.state = 7268; this.match(PostgreSqlParser.KW_YES); } break; @@ -44392,26 +44630,26 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7275; + this.state = 7273; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLSERIALIZE: this.enterOuterAlt(localContext, 25); { - this.state = 7277; + this.state = 7275; this.match(PostgreSqlParser.KW_XMLSERIALIZE); - this.state = 7278; + this.state = 7276; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7279; + this.state = 7277; this.document_or_content(); - this.state = 7280; + this.state = 7278; this.expression(); - this.state = 7281; + this.state = 7279; this.match(PostgreSqlParser.KW_AS); - this.state = 7282; + this.state = 7280; this.simpletypename(); - this.state = 7283; + this.state = 7281; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -44440,21 +44678,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7287; + this.state = 7285; this.xml_attribute_el(); - this.state = 7292; + this.state = 7290; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7288; + this.state = 7286; this.match(PostgreSqlParser.COMMA); - this.state = 7289; + this.state = 7287; this.xml_attribute_el(); } } - this.state = 7294; + this.state = 7292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -44481,16 +44719,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7295; + this.state = 7293; this.expression(); - this.state = 7298; + this.state = 7296; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 7296; + this.state = 7294; this.match(PostgreSqlParser.KW_AS); - this.state = 7297; + this.state = 7295; this.collabel(); } } @@ -44518,7 +44756,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7300; + this.state = 7298; _la = this.tokenStream.LA(1); if(!(_la === 166 || _la === 188)) { this.errorHandler.recoverInline(this); @@ -44550,26 +44788,26 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7302; + this.state = 7300; this.match(PostgreSqlParser.KW_PASSING); - this.state = 7304; + this.state = 7302; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { case 1: { - this.state = 7303; + this.state = 7301; this.xml_passing_mech(); } break; } - this.state = 7306; + this.state = 7304; this.primaryExpression(0); - this.state = 7308; + this.state = 7306; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 7307; + this.state = 7305; this.xml_passing_mech(); } } @@ -44597,9 +44835,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7310; + this.state = 7308; this.match(PostgreSqlParser.KW_BY); - this.state = 7311; + this.state = 7309; _la = this.tokenStream.LA(1); if(!(_la === 304 || _la === 450)) { this.errorHandler.recoverInline(this); @@ -44631,25 +44869,25 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7313; + this.state = 7311; this.match(PostgreSqlParser.KW_WINDOW); - this.state = 7314; + this.state = 7312; this.window_definition(); - this.state = 7319; + this.state = 7317; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7315; + this.state = 7313; this.match(PostgreSqlParser.COMMA); - this.state = 7316; + this.state = 7314; this.window_definition(); } } } - this.state = 7321; + this.state = 7319; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); } @@ -44675,11 +44913,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7322; + this.state = 7320; this.colid(); - this.state = 7323; + this.state = 7321; this.match(PostgreSqlParser.KW_AS); - this.state = 7324; + this.state = 7322; this.window_specification(); } } @@ -44703,24 +44941,18 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7326; + this.state = 7324; this.match(PostgreSqlParser.KW_OVER); - this.state = 7329; + this.state = 7327; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 7327; + this.state = 7325; this.window_specification(); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -45102,6 +45334,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -45114,7 +45347,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7328; + this.state = 7326; this.colid(); } break; @@ -45144,53 +45377,53 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7331; + this.state = 7329; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7333; + this.state = 7331; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context) ) { case 1: { - this.state = 7332; + this.state = 7330; this.colid(); } break; } - this.state = 7338; + this.state = 7336; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 285) { { - this.state = 7335; + this.state = 7333; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 7336; + this.state = 7334; this.match(PostgreSqlParser.KW_BY); - this.state = 7337; + this.state = 7335; this.expr_list(); } } - this.state = 7341; + this.state = 7339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7340; + this.state = 7338; this.sort_clause(); } } - this.state = 7344; + this.state = 7342; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 299 || _la === 320 || _la === 481) { { - this.state = 7343; + this.state = 7341; this.opt_frame_clause(); } } - this.state = 7346; + this.state = 7344; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -45215,7 +45448,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7348; + this.state = 7346; _la = this.tokenStream.LA(1); if(!(_la === 299 || _la === 320 || _la === 481)) { this.errorHandler.recoverInline(this); @@ -45225,58 +45458,58 @@ export class PostgreSqlParser extends SQLParserBase { this.consume(); } { - this.state = 7353; + this.state = 7351; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1006, this.context) ) { case 1: { - this.state = 7349; + this.state = 7347; this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 7350; + this.state = 7348; this.frame_bound(); - this.state = 7351; + this.state = 7349; this.match(PostgreSqlParser.KW_AND); } break; } - this.state = 7355; + this.state = 7353; this.frame_bound(); } - this.state = 7366; + this.state = 7364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 199) { { - this.state = 7357; + this.state = 7355; this.match(PostgreSqlParser.KW_EXCLUDE); - this.state = 7364; + this.state = 7362; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CURRENT: { - this.state = 7358; + this.state = 7356; this.match(PostgreSqlParser.KW_CURRENT); - this.state = 7359; + this.state = 7357; this.match(PostgreSqlParser.KW_ROW); } break; case PostgreSqlParser.KW_GROUP: { - this.state = 7360; + this.state = 7358; this.match(PostgreSqlParser.KW_GROUP); } break; case PostgreSqlParser.KW_TIES: { - this.state = 7361; + this.state = 7359; this.match(PostgreSqlParser.KW_TIES); } break; case PostgreSqlParser.KW_NO: { - this.state = 7362; + this.state = 7360; this.match(PostgreSqlParser.KW_NO); - this.state = 7363; + this.state = 7361; this.match(PostgreSqlParser.KW_OTHERS); } break; @@ -45307,29 +45540,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 712, PostgreSqlParser.RULE_frame_bound); let _la: number; try { - this.state = 7375; + this.state = 7373; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1010, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7370; + this.state = 7368; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1009, this.context) ) { case 1: { - this.state = 7368; + this.state = 7366; this.match(PostgreSqlParser.KW_UNBOUNDED); } break; case 2: { - this.state = 7369; + this.state = 7367; this.expression(); } break; } - this.state = 7372; + this.state = 7370; _la = this.tokenStream.LA(1); if(!(_la === 208 || _la === 289)) { this.errorHandler.recoverInline(this); @@ -45343,9 +45576,9 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7373; + this.state = 7371; this.match(PostgreSqlParser.KW_CURRENT); - this.state = 7374; + this.state = 7372; this.match(PostgreSqlParser.KW_ROW); } break; @@ -45369,28 +45602,28 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new RowContext(this.context, this.state); this.enterRule(localContext, 714, PostgreSqlParser.RULE_row); try { - this.state = 7384; + this.state = 7382; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ROW: this.enterOuterAlt(localContext, 1); { - this.state = 7377; + this.state = 7375; this.explicit_row(); } break; case PostgreSqlParser.OPEN_PAREN: this.enterOuterAlt(localContext, 2); { - this.state = 7378; + this.state = 7376; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7379; + this.state = 7377; this.expr_list(); - this.state = 7380; + this.state = 7378; this.match(PostgreSqlParser.COMMA); - this.state = 7381; + this.state = 7379; this.expression(); - this.state = 7382; + this.state = 7380; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -45419,21 +45652,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7386; + this.state = 7384; this.match(PostgreSqlParser.KW_ROW); - this.state = 7387; + this.state = 7385; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7389; + this.state = 7387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7388; + this.state = 7386; this.expr_list(); } } - this.state = 7391; + this.state = 7389; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -45458,7 +45691,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7393; + this.state = 7391; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 34 || _la === 90)) { this.errorHandler.recoverInline(this); @@ -45487,13 +45720,13 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new All_opContext(this.context, this.state); this.enterRule(localContext, 720, PostgreSqlParser.RULE_all_op); try { - this.state = 7397; + this.state = 7395; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 7395; + this.state = 7393; this.match(PostgreSqlParser.Operator); } break; @@ -45511,7 +45744,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PERCENT: this.enterOuterAlt(localContext, 2); { - this.state = 7396; + this.state = 7394; this.mathop(); } break; @@ -45540,7 +45773,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7399; + this.state = 7397; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 178517504) !== 0))) { this.errorHandler.recoverInline(this); @@ -45569,26 +45802,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Qual_opContext(this.context, this.state); this.enterRule(localContext, 724, PostgreSqlParser.RULE_qual_op); try { - this.state = 7407; + this.state = 7405; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 7401; + this.state = 7399; this.match(PostgreSqlParser.Operator); } break; case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 2); { - this.state = 7402; + this.state = 7400; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7403; + this.state = 7401; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7404; + this.state = 7402; this.any_operator(); - this.state = 7405; + this.state = 7403; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -45614,7 +45847,7 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Qual_all_opContext(this.context, this.state); this.enterRule(localContext, 726, PostgreSqlParser.RULE_qual_all_op); try { - this.state = 7415; + this.state = 7413; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.STAR: @@ -45632,20 +45865,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 7409; + this.state = 7407; this.all_op(); } break; case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 2); { - this.state = 7410; + this.state = 7408; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7411; + this.state = 7409; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7412; + this.state = 7410; this.any_operator(); - this.state = 7413; + this.state = 7411; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -45672,7 +45905,7 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 728, PostgreSqlParser.RULE_subquery_Op); let _la: number; try { - this.state = 7422; + this.state = 7420; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.STAR: @@ -45691,7 +45924,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 1); { - this.state = 7417; + this.state = 7415; this.qual_all_op(); } break; @@ -45700,17 +45933,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 2); { - this.state = 7419; + this.state = 7417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 7418; + this.state = 7416; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 7421; + this.state = 7419; _la = this.tokenStream.LA(1); if(!(_la === 114 || _la === 120)) { this.errorHandler.recoverInline(this); @@ -45746,23 +45979,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7424; + this.state = 7422; this.expression(); - this.state = 7429; + this.state = 7427; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7425; + this.state = 7423; this.match(PostgreSqlParser.COMMA); - this.state = 7426; + this.state = 7424; this.expression(); } } } - this.state = 7431; + this.state = 7429; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); } @@ -45786,18 +46019,18 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Column_exprContext(this.context, this.state); this.enterRule(localContext, 732, PostgreSqlParser.RULE_column_expr); try { - this.state = 7437; + this.state = 7435; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1019, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { { - this.state = 7432; + this.state = 7430; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7433; + this.state = 7431; this.expression(); - this.state = 7434; + this.state = 7432; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -45805,7 +46038,7 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7436; + this.state = 7434; this.column_name(); } break; @@ -45829,20 +46062,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Column_expr_noparenContext(this.context, this.state); this.enterRule(localContext, 734, PostgreSqlParser.RULE_column_expr_noparen); try { - this.state = 7441; + this.state = 7439; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1020, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7439; + this.state = 7437; this.expression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7440; + this.state = 7438; this.column_name(); } break; @@ -45869,23 +46102,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7443; + this.state = 7441; this.func_arg_expr(); - this.state = 7448; + this.state = 7446; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7444; + this.state = 7442; this.match(PostgreSqlParser.COMMA); - this.state = 7445; + this.state = 7443; this.func_arg_expr(); } } } - this.state = 7450; + this.state = 7448; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); } @@ -45910,22 +46143,22 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 738, PostgreSqlParser.RULE_func_arg_expr); let _la: number; try { - this.state = 7456; + this.state = 7454; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1022, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7451; + this.state = 7449; this.expression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7452; + this.state = 7450; this.type_function_name(); - this.state = 7453; + this.state = 7451; _la = this.tokenStream.LA(1); if(!(_la === 20 || _la === 22)) { this.errorHandler.recoverInline(this); @@ -45934,7 +46167,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7454; + this.state = 7452; this.expression(); } break; @@ -45961,9 +46194,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7458; + this.state = 7456; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 7468; + this.state = 7466; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -45971,12 +46204,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -45984,9 +46214,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NOT: @@ -46397,6 +46625,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -46413,28 +46642,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7459; + this.state = 7457; this.expr_list(); } break; case PostgreSqlParser.OPEN_BRACKET: { { - this.state = 7460; + this.state = 7458; this.array_expr(); - this.state = 7465; + this.state = 7463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7461; + this.state = 7459; this.match(PostgreSqlParser.COMMA); - this.state = 7462; + this.state = 7460; this.array_expr(); } } - this.state = 7467; + this.state = 7465; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -46446,7 +46675,7 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 7470; + this.state = 7468; this.match(PostgreSqlParser.CLOSE_BRACKET); } } @@ -46468,62 +46697,62 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Extract_argContext(this.context, this.state); this.enterRule(localContext, 742, PostgreSqlParser.RULE_extract_arg); try { - this.state = 7480; + this.state = 7478; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1025, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7472; + this.state = 7470; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7473; + this.state = 7471; this.match(PostgreSqlParser.KW_YEAR); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7474; + this.state = 7472; this.match(PostgreSqlParser.KW_MONTH); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7475; + this.state = 7473; this.match(PostgreSqlParser.KW_DAY); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7476; + this.state = 7474; this.match(PostgreSqlParser.KW_HOUR); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7477; + this.state = 7475; this.match(PostgreSqlParser.KW_MINUTE); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7478; + this.state = 7476; this.match(PostgreSqlParser.KW_SECOND); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7479; + this.state = 7477; this.sconst(); } break; @@ -46550,7 +46779,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7482; + this.state = 7480; _la = this.tokenStream.LA(1); if(!(((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -46580,26 +46809,26 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 746, PostgreSqlParser.RULE_substr_list); let _la: number; try { - this.state = 7505; + this.state = 7503; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1028, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7484; + this.state = 7482; this.expression(); - this.state = 7485; + this.state = 7483; this.match(PostgreSqlParser.KW_FROM); - this.state = 7486; + this.state = 7484; this.expression(); - this.state = 7489; + this.state = 7487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 7487; + this.state = 7485; this.match(PostgreSqlParser.KW_FOR); - this.state = 7488; + this.state = 7486; this.expression(); } } @@ -46609,20 +46838,20 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7491; + this.state = 7489; this.expression(); - this.state = 7492; + this.state = 7490; this.match(PostgreSqlParser.KW_FOR); - this.state = 7493; + this.state = 7491; this.expression(); - this.state = 7496; + this.state = 7494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 7494; + this.state = 7492; this.match(PostgreSqlParser.KW_FROM); - this.state = 7495; + this.state = 7493; this.expression(); } } @@ -46632,22 +46861,22 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7498; + this.state = 7496; this.expression(); - this.state = 7499; + this.state = 7497; this.match(PostgreSqlParser.KW_SIMILAR); - this.state = 7500; + this.state = 7498; this.expression(); - this.state = 7501; + this.state = 7499; this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 7502; + this.state = 7500; this.expression(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7504; + this.state = 7502; this.expr_list(); } break; @@ -46673,13 +46902,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7507; + this.state = 7505; this.match(PostgreSqlParser.KW_WHEN); - this.state = 7508; + this.state = 7506; this.expression(); - this.state = 7509; + this.state = 7507; this.match(PostgreSqlParser.KW_THEN); - this.state = 7510; + this.state = 7508; this.expression(); } } @@ -46702,15 +46931,15 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 750, PostgreSqlParser.RULE_indirection_el); let _la: number; try { - this.state = 7529; + this.state = 7527; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.DOT: this.enterOuterAlt(localContext, 1); { - this.state = 7512; + this.state = 7510; this.match(PostgreSqlParser.DOT); - this.state = 7515; + this.state = 7513; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: @@ -47191,6 +47420,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -47203,13 +47433,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7513; + this.state = 7511; this.collabel(); } break; case PostgreSqlParser.STAR: { - this.state = 7514; + this.state = 7512; this.match(PostgreSqlParser.STAR); } break; @@ -47221,37 +47451,37 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.OPEN_BRACKET: this.enterOuterAlt(localContext, 2); { - this.state = 7517; + this.state = 7515; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 7526; + this.state = 7524; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1032, this.context) ) { case 1: { - this.state = 7518; + this.state = 7516; this.expression(); } break; case 2: { - this.state = 7520; + this.state = 7518; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7519; + this.state = 7517; this.expression(); } } - this.state = 7522; + this.state = 7520; this.match(PostgreSqlParser.COLON); - this.state = 7524; + this.state = 7522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7523; + this.state = 7521; this.expression(); } } @@ -47259,7 +47489,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 7528; + this.state = 7526; this.match(PostgreSqlParser.CLOSE_BRACKET); } break; @@ -47288,7 +47518,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7532; + this.state = 7530; this.errorHandler.sync(this); alternative = 1; do { @@ -47296,7 +47526,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 7531; + this.state = 7529; this.indirection_el(); } } @@ -47304,7 +47534,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7534; + this.state = 7532; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -47331,19 +47561,19 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7539; + this.state = 7537; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7536; + this.state = 7534; this.indirection_el(); } } } - this.state = 7541; + this.state = 7539; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context); } @@ -47370,23 +47600,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7542; + this.state = 7540; this.target_el(); - this.state = 7547; + this.state = 7545; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7543; + this.state = 7541; this.match(PostgreSqlParser.COMMA); - this.state = 7544; + this.state = 7542; this.target_el(); } } } - this.state = 7549; + this.state = 7547; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context); } @@ -47410,29 +47640,29 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Target_elContext(this.context, this.state); this.enterRule(localContext, 758, PostgreSqlParser.RULE_target_el); try { - this.state = 7558; + this.state = 7556; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1038, this.context) ) { case 1: localContext = new Target_labelContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7550; + this.state = 7548; this.column_expr_noparen(); - this.state = 7555; + this.state = 7553; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1037, this.context) ) { case 1: { - this.state = 7551; + this.state = 7549; this.match(PostgreSqlParser.KW_AS); - this.state = 7552; + this.state = 7550; this.collabel(); } break; case 2: { - this.state = 7553; + this.state = 7551; this.identifier(); } break; @@ -47448,7 +47678,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new Target_starContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7557; + this.state = 7555; this.match(PostgreSqlParser.STAR); } break; @@ -47475,21 +47705,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7560; + this.state = 7558; this.qualified_name(); - this.state = 7565; + this.state = 7563; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7561; + this.state = 7559; this.match(PostgreSqlParser.COMMA); - this.state = 7562; + this.state = 7560; this.qualified_name(); } } - this.state = 7567; + this.state = 7565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47516,21 +47746,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7568; + this.state = 7566; this.table_name(); - this.state = 7573; + this.state = 7571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7569; + this.state = 7567; this.match(PostgreSqlParser.COMMA); - this.state = 7570; + this.state = 7568; this.table_name(); } } - this.state = 7575; + this.state = 7573; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47557,21 +47787,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7576; + this.state = 7574; this.schema_name(); - this.state = 7581; + this.state = 7579; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7577; + this.state = 7575; this.match(PostgreSqlParser.COMMA); - this.state = 7578; + this.state = 7576; this.schema_name(); } } - this.state = 7583; + this.state = 7581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47598,21 +47828,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7584; + this.state = 7582; this.database_name(); - this.state = 7589; + this.state = 7587; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7585; + this.state = 7583; this.match(PostgreSqlParser.COMMA); - this.state = 7586; + this.state = 7584; this.database_name(); } } - this.state = 7591; + this.state = 7589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47639,7 +47869,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TablespaceNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7592; + this.state = 7590; this.qualified_name(); } } @@ -47664,7 +47894,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TablespaceNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7594; + this.state = 7592; this.qualified_name(); } } @@ -47689,7 +47919,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TableNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7596; + this.state = 7594; this.qualified_name(); } } @@ -47714,7 +47944,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TableNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7598; + this.state = 7596; this.qualified_name(); } } @@ -47739,7 +47969,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ViewNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7600; + this.state = 7598; this.qualified_name(); } } @@ -47764,7 +47994,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ViewNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7602; + this.state = 7600; this.any_name(); } } @@ -47788,14 +48018,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7604; + this.state = 7602; this.colid(); - this.state = 7606; + this.state = 7604; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { case 1: { - this.state = 7605; + this.state = 7603; this.indirection(); } break; @@ -47823,21 +48053,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7608; + this.state = 7606; this.tablespace_name(); - this.state = 7613; + this.state = 7611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7609; + this.state = 7607; this.match(PostgreSqlParser.COMMA); - this.state = 7610; + this.state = 7608; this.tablespace_name(); } } - this.state = 7615; + this.state = 7613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47864,21 +48094,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7616; + this.state = 7614; this.colid(); - this.state = 7621; + this.state = 7619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7617; + this.state = 7615; this.match(PostgreSqlParser.COMMA); - this.state = 7618; + this.state = 7616; this.colid(); } } - this.state = 7623; + this.state = 7621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47905,7 +48135,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new DatabaseNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7624; + this.state = 7622; this.any_name(); } } @@ -47930,7 +48160,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new DatabaseNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7626; + this.state = 7624; this.any_name(); } } @@ -47955,7 +48185,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new SchemaNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7628; + this.state = 7626; this.any_name(); } } @@ -47980,7 +48210,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new RoutineNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7630; + this.state = 7628; this.colid(); } } @@ -48005,7 +48235,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new RoutineNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7632; + this.state = 7630; this.colid(); } } @@ -48027,14 +48257,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Procedure_nameContext(this.context, this.state); this.enterRule(localContext, 796, PostgreSqlParser.RULE_procedure_name); try { - this.state = 7638; + this.state = 7636; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context) ) { case 1: localContext = new ProcedureNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7634; + this.state = 7632; this.type_function_name(); } break; @@ -48042,9 +48272,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ProcedureNameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7635; + this.state = 7633; this.colid(); - this.state = 7636; + this.state = 7634; this.indirection(); } break; @@ -48068,14 +48298,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Procedure_name_createContext(this.context, this.state); this.enterRule(localContext, 798, PostgreSqlParser.RULE_procedure_name_create); try { - this.state = 7644; + this.state = 7642; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1047, this.context) ) { case 1: localContext = new ProcedureNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7640; + this.state = 7638; this.type_function_name(); } break; @@ -48083,9 +48313,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ProcedureNameCreateContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7641; + this.state = 7639; this.colid(); - this.state = 7642; + this.state = 7640; this.indirection(); } break; @@ -48109,16 +48339,16 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Column_nameContext(this.context, this.state); this.enterRule(localContext, 800, PostgreSqlParser.RULE_column_name); try { - this.state = 7650; + this.state = 7648; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1048, this.context) ) { case 1: localContext = new ColumnNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7646; + this.state = 7644; this.colid(); - this.state = 7647; + this.state = 7645; this.opt_indirection(); } break; @@ -48126,7 +48356,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ColumnNameMatchContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7649; + this.state = 7647; if (!(this.shouldMatchEmpty())) { throw this.createFailedPredicateException("this.shouldMatchEmpty()"); } @@ -48155,7 +48385,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ColumnNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7652; + this.state = 7650; this.colid(); } } @@ -48177,14 +48407,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_name_createContext(this.context, this.state); this.enterRule(localContext, 804, PostgreSqlParser.RULE_function_name_create); try { - this.state = 7658; + this.state = 7656; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context) ) { case 1: localContext = new FunctionNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7654; + this.state = 7652; this.type_function_name(); } break; @@ -48192,9 +48422,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new FunctionNameCreateContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7655; + this.state = 7653; this.colid(); - this.state = 7656; + this.state = 7654; this.indirection(); } break; @@ -48218,14 +48448,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_nameContext(this.context, this.state); this.enterRule(localContext, 806, PostgreSqlParser.RULE_function_name); try { - this.state = 7664; + this.state = 7662; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { case 1: localContext = new FunctionNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7660; + this.state = 7658; this.type_function_name(); } break; @@ -48233,9 +48463,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new FunctionNameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7661; + this.state = 7659; this.colid(); - this.state = 7662; + this.state = 7660; this.indirection(); } break; @@ -48261,16 +48491,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7666; + this.state = 7664; this.anysconst(); - this.state = 7669; + this.state = 7667; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context) ) { case 1: { - this.state = 7667; + this.state = 7665; this.match(PostgreSqlParser.KW_UESCAPE); - this.state = 7668; + this.state = 7666; this.anysconst(); } break; @@ -48296,50 +48526,50 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 810, PostgreSqlParser.RULE_anysconst); let _la: number; try { - this.state = 7682; + this.state = 7680; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 7671; + this.state = 7669; this.match(PostgreSqlParser.StringConstant); } break; case PostgreSqlParser.UnicodeEscapeStringConstant: this.enterOuterAlt(localContext, 2); { - this.state = 7672; + this.state = 7670; this.match(PostgreSqlParser.UnicodeEscapeStringConstant); } break; case PostgreSqlParser.BeginDollarStringConstant: this.enterOuterAlt(localContext, 3); { - this.state = 7673; + this.state = 7671; this.match(PostgreSqlParser.BeginDollarStringConstant); - this.state = 7677; + this.state = 7675; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 588) { { { - this.state = 7674; + this.state = 7672; this.match(PostgreSqlParser.DollarText); } } - this.state = 7679; + this.state = 7677; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7680; + this.state = 7678; this.match(PostgreSqlParser.EndDollarStringConstant); } break; case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 4); { - this.state = 7681; + this.state = 7679; this.match(PostgreSqlParser.EscapeStringConstant); } break; @@ -48368,12 +48598,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7685; + this.state = 7683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13) { { - this.state = 7684; + this.state = 7682; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -48385,7 +48615,7 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7687; + this.state = 7685; this.match(PostgreSqlParser.Integral); } } @@ -48407,465 +48637,44 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new RolespecContext(this.context, this.state); this.enterRule(localContext, 814, PostgreSqlParser.RULE_rolespec); try { - this.state = 7694; + this.state = 7692; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + switch (this.interpreter.adaptivePredict(this.tokenStream, 1055, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7689; + this.state = 7687; this.nonreservedword(); } break; - case PostgreSqlParser.KW_CURRENT_USER: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7690; + this.state = 7688; this.match(PostgreSqlParser.KW_CURRENT_USER); } break; - case PostgreSqlParser.KW_CURRENT_ROLE: + case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7691; + this.state = 7689; this.match(PostgreSqlParser.KW_CURRENT_ROLE); } break; - case PostgreSqlParser.KW_SESSION_USER: + case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7692; + this.state = 7690; this.match(PostgreSqlParser.KW_SESSION_USER); } break; - case PostgreSqlParser.KW_PUBLIC: + case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7693; + this.state = 7691; this.match(PostgreSqlParser.KW_PUBLIC); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48889,21 +48698,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7696; + this.state = 7694; this.rolespec(); - this.state = 7701; + this.state = 7699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7697; + this.state = 7695; this.match(PostgreSqlParser.COMMA); - this.state = 7698; + this.state = 7696; this.rolespec(); } } - this.state = 7703; + this.state = 7701; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -48927,37 +48736,23 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ColidContext(this.context, this.state); this.enterRule(localContext, 818, PostgreSqlParser.RULE_colid); try { - this.state = 7708; + this.state = 7704; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1057, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7704; + this.state = 7702; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7705; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7706; + this.state = 7703; this.col_name_keyword(); } break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7707; - this.plsql_unreserved_keyword(); - } - break; } } catch (re) { @@ -48978,34 +48773,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Type_function_nameContext(this.context, this.state); this.enterRule(localContext, 820, PostgreSqlParser.RULE_type_function_name); try { - this.state = 7714; + this.state = 7708; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1058, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7710; + this.state = 7706; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7711; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7712; - this.plsql_unreserved_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7713; + this.state = 7707; this.type_func_name_keyword(); } break; @@ -49029,34 +48810,27 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new NonreservedwordContext(this.context, this.state); this.enterRule(localContext, 822, PostgreSqlParser.RULE_nonreservedword); try { - this.state = 7720; + this.state = 7713; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1059, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7716; + this.state = 7710; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7717; - this.unreserved_keyword(); + this.state = 7711; + this.col_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7718; - this.col_name_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7719; + this.state = 7712; this.type_func_name_keyword(); } break; @@ -49080,27 +48854,34 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new CollabelContext(this.context, this.state); this.enterRule(localContext, 824, PostgreSqlParser.RULE_collabel); try { - this.state = 7725; + this.state = 7719; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1060, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7722; - this.nonreservedword(); + this.state = 7715; + this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7723; - this.plsql_unreserved_keyword(); + this.state = 7716; + this.col_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7724; + this.state = 7717; + this.type_func_name_keyword(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7718; this.reserved_keyword(); } break; @@ -49124,22 +48905,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new IdentifierContext(this.context, this.state); this.enterRule(localContext, 826, PostgreSqlParser.RULE_identifier); try { - this.state = 7738; + this.state = 7732; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.Identifier: this.enterOuterAlt(localContext, 1); { - this.state = 7727; + this.state = 7721; this.match(PostgreSqlParser.Identifier); - this.state = 7730; + this.state = 7724; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1061, this.context) ) { case 1: { - this.state = 7728; + this.state = 7722; this.match(PostgreSqlParser.KW_UESCAPE); - this.state = 7729; + this.state = 7723; this.anysconst(); } break; @@ -49152,73 +48933,341 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 2); { - this.state = 7732; + this.state = 7726; this.sconst(); } break; case PostgreSqlParser.QuotedIdentifier: this.enterOuterAlt(localContext, 3); { - this.state = 7733; + this.state = 7727; this.match(PostgreSqlParser.QuotedIdentifier); } break; case PostgreSqlParser.UnicodeQuotedIdentifier: this.enterOuterAlt(localContext, 4); { - this.state = 7734; + this.state = 7728; this.match(PostgreSqlParser.UnicodeQuotedIdentifier); } break; case PostgreSqlParser.PLSQLVARIABLENAME: this.enterOuterAlt(localContext, 5); { - this.state = 7735; + this.state = 7729; this.match(PostgreSqlParser.PLSQLVARIABLENAME); } break; case PostgreSqlParser.PLSQLIDENTIFIER: this.enterOuterAlt(localContext, 6); { - this.state = 7736; + this.state = 7730; this.match(PostgreSqlParser.PLSQLIDENTIFIER); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_COLUMNS: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -49247,10 +49296,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: this.enterOuterAlt(localContext, 7); { - this.state = 7737; - this.plsql_unreserved_keyword(); + this.state = 7731; + this.unreserved_keyword(); } break; default: @@ -49278,9 +49330,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7740; + this.state = 7734; _la = this.tokenStream.LA(1); - if(!(((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & 4294967265) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 4294967295) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4294967295) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 4294705663) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & 4294967295) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & 4294967295) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & 4294967295) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & 4294967295) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 127) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 16770399) !== 0) || _la === 547 || _la === 548)) { + if(!(_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || _la === 547 || _la === 548)) { this.errorHandler.recoverInline(this); } else { @@ -49307,363 +49359,363 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Col_name_keywordContext(this.context, this.state); this.enterRule(localContext, 830, PostgreSqlParser.RULE_col_name_keyword); try { - this.state = 7793; + this.state = 7787; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1063, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7742; + this.state = 7736; this.match(PostgreSqlParser.KW_BETWEEN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7743; + this.state = 7737; this.match(PostgreSqlParser.KW_BIGINT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7744; + this.state = 7738; this.bit(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7745; + this.state = 7739; this.match(PostgreSqlParser.KW_BOOLEAN); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7746; + this.state = 7740; this.match(PostgreSqlParser.KW_CHAR); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7747; + this.state = 7741; this.character(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7748; + this.state = 7742; this.match(PostgreSqlParser.KW_COALESCE); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7749; + this.state = 7743; this.match(PostgreSqlParser.KW_DEC); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 7750; + this.state = 7744; this.match(PostgreSqlParser.KW_DECIMAL); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 7751; + this.state = 7745; this.match(PostgreSqlParser.KW_EXISTS); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 7752; + this.state = 7746; this.match(PostgreSqlParser.KW_EXTRACT); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 7753; + this.state = 7747; this.match(PostgreSqlParser.KW_FLOAT); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 7754; + this.state = 7748; this.match(PostgreSqlParser.KW_GREATEST); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 7755; + this.state = 7749; this.match(PostgreSqlParser.KW_GROUPING); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 7756; + this.state = 7750; this.match(PostgreSqlParser.KW_INOUT); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 7757; + this.state = 7751; this.match(PostgreSqlParser.KW_INT); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 7758; + this.state = 7752; this.match(PostgreSqlParser.KW_INTEGER); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 7759; + this.state = 7753; this.match(PostgreSqlParser.KW_INTERVAL); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 7760; + this.state = 7754; this.match(PostgreSqlParser.KW_LEAST); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 7761; + this.state = 7755; this.match(PostgreSqlParser.KW_NATIONAL); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 7762; + this.state = 7756; this.match(PostgreSqlParser.KW_NCHAR); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 7763; + this.state = 7757; this.match(PostgreSqlParser.KW_NONE); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 7764; + this.state = 7758; this.match(PostgreSqlParser.KW_NORMALIZE); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 7765; + this.state = 7759; this.match(PostgreSqlParser.KW_NULLIF); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 7766; + this.state = 7760; this.numeric(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 7767; + this.state = 7761; this.match(PostgreSqlParser.KW_OUT); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 7768; + this.state = 7762; this.match(PostgreSqlParser.KW_OVERLAY); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 7769; + this.state = 7763; this.match(PostgreSqlParser.KW_POSITION); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 7770; + this.state = 7764; this.match(PostgreSqlParser.KW_PRECISION); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 7771; + this.state = 7765; this.match(PostgreSqlParser.KW_REAL); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 7772; + this.state = 7766; this.match(PostgreSqlParser.KW_ROW); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 7773; + this.state = 7767; this.match(PostgreSqlParser.KW_SETOF); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 7774; + this.state = 7768; this.match(PostgreSqlParser.KW_SMALLINT); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 7775; + this.state = 7769; this.match(PostgreSqlParser.KW_SUBSTRING); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 7776; + this.state = 7770; this.match(PostgreSqlParser.KW_TIME); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 7777; + this.state = 7771; this.match(PostgreSqlParser.KW_TIMESTAMP); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 7778; + this.state = 7772; this.match(PostgreSqlParser.KW_TREAT); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 7779; + this.state = 7773; this.match(PostgreSqlParser.KW_TRIM); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 7780; + this.state = 7774; this.match(PostgreSqlParser.KW_VALUES); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 7781; + this.state = 7775; this.match(PostgreSqlParser.KW_VARCHAR); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 7782; + this.state = 7776; this.match(PostgreSqlParser.KW_XMLATTRIBUTES); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 7783; + this.state = 7777; this.match(PostgreSqlParser.KW_XMLCONCAT); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 7784; + this.state = 7778; this.match(PostgreSqlParser.KW_XMLELEMENT); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 7785; + this.state = 7779; this.match(PostgreSqlParser.KW_XMLEXISTS); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 7786; + this.state = 7780; this.match(PostgreSqlParser.KW_XMLFOREST); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 7787; + this.state = 7781; this.match(PostgreSqlParser.KW_XMLNAMESPACES); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 7788; + this.state = 7782; this.match(PostgreSqlParser.KW_XMLPARSE); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 7789; + this.state = 7783; this.match(PostgreSqlParser.KW_XMLPI); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 7790; + this.state = 7784; this.match(PostgreSqlParser.KW_XMLROOT); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 7791; + this.state = 7785; this.match(PostgreSqlParser.KW_XMLSERIALIZE); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 7792; + this.state = 7786; this.match(PostgreSqlParser.KW_XMLTABLE); } break; @@ -49690,7 +49742,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7795; + this.state = 7789; _la = this.tokenStream.LA(1); if(!(((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 8126463) !== 0) || _la === 472)) { this.errorHandler.recoverInline(this); @@ -49722,7 +49774,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7797; + this.state = 7791; _la = this.tokenStream.LA(1); if(!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & 4286578687) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & 4294966783) !== 0) || ((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 4095) !== 0) || _la === 454)) { this.errorHandler.recoverInline(this); @@ -49756,53 +49808,53 @@ export class PostgreSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 1); { { - this.state = 7800; + this.state = 7794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18) { { - this.state = 7799; + this.state = 7793; this.label_decl(); } } - this.state = 7812; + this.state = 7806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 178) { { - this.state = 7802; + this.state = 7796; this.match(PostgreSqlParser.KW_DECLARE); - this.state = 7810; + this.state = 7804; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1067, this.context) ) { case 1: { - this.state = 7806; + this.state = 7800; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 7806; + this.state = 7800; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1065, this.context) ) { case 1: { - this.state = 7803; + this.state = 7797; this.decl_statement(); } break; case 2: { - this.state = 7804; + this.state = 7798; this.match(PostgreSqlParser.KW_DECLARE); } break; case 3: { - this.state = 7805; + this.state = 7799; this.label_decl(); } break; @@ -49812,7 +49864,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7808; + this.state = 7802; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1066, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -49823,42 +49875,42 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7814; + this.state = 7808; this.match(PostgreSqlParser.KW_BEGIN); - this.state = 7818; + this.state = 7812; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7815; + this.state = 7809; this.proc_stmt(); } } } - this.state = 7820; + this.state = 7814; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context); } - this.state = 7822; + this.state = 7816; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 517) { { - this.state = 7821; + this.state = 7815; this.exception_sect(); } } - this.state = 7824; + this.state = 7818; this.match(PostgreSqlParser.KW_END); - this.state = 7826; + this.state = 7820; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 7825; + this.state = 7819; this.any_identifier(); } } @@ -49885,11 +49937,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7828; + this.state = 7822; this.match(PostgreSqlParser.LESS_LESS); - this.state = 7829; + this.state = 7823; this.any_identifier(); - this.state = 7830; + this.state = 7824; this.match(PostgreSqlParser.GREATER_GREATER); } } @@ -49914,33 +49966,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7832; + this.state = 7826; this.any_identifier(); - this.state = 7879; + this.state = 7873; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1082, this.context) ) { case 1: { - this.state = 7833; + this.state = 7827; this.match(PostgreSqlParser.KW_ALIAS); - this.state = 7834; + this.state = 7828; this.match(PostgreSqlParser.KW_FOR); - this.state = 7837; + this.state = 7831; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.PARAM: { - this.state = 7835; + this.state = 7829; this.match(PostgreSqlParser.PARAM); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -50322,6 +50368,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -50334,7 +50381,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7836; + this.state = 7830; this.colid(); } break; @@ -50345,65 +50392,65 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 7840; + this.state = 7834; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1073, this.context) ) { case 1: { - this.state = 7839; + this.state = 7833; this.match(PostgreSqlParser.KW_CONSTANT); } break; } - this.state = 7842; + this.state = 7836; this.typename(); - this.state = 7844; + this.state = 7838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 43) { { - this.state = 7843; + this.state = 7837; this.opt_collate_clause(); } } - this.state = 7848; + this.state = 7842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 7846; + this.state = 7840; this.match(PostgreSqlParser.KW_NOT); - this.state = 7847; + this.state = 7841; this.match(PostgreSqlParser.KW_NULL); } } - this.state = 7855; + this.state = 7849; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 20 || _la === 53) { { - this.state = 7852; + this.state = 7846; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.EQUAL: case PostgreSqlParser.COLON_EQUALS: { - this.state = 7850; + this.state = 7844; this.assign_operator(); } break; case PostgreSqlParser.KW_DEFAULT: { - this.state = 7851; + this.state = 7845; this.match(PostgreSqlParser.KW_DEFAULT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7854; + this.state = 7848; this.sql_expression(); } } @@ -50412,59 +50459,59 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 7861; + this.state = 7855; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269 || _la === 324) { { - this.state = 7858; + this.state = 7852; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 7857; + this.state = 7851; this.match(PostgreSqlParser.KW_NO); } } - this.state = 7860; + this.state = 7854; this.match(PostgreSqlParser.KW_SCROLL); } } - this.state = 7863; + this.state = 7857; this.match(PostgreSqlParser.KW_CURSOR); - this.state = 7875; + this.state = 7869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 7864; + this.state = 7858; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7865; + this.state = 7859; this.decl_cursor_arg(); - this.state = 7870; + this.state = 7864; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7866; + this.state = 7860; this.match(PostgreSqlParser.COMMA); - this.state = 7867; + this.state = 7861; this.decl_cursor_arg(); } } - this.state = 7872; + this.state = 7866; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7873; + this.state = 7867; this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 7877; + this.state = 7871; _la = this.tokenStream.LA(1); if(!(_la === 62 || _la === 116)) { this.errorHandler.recoverInline(this); @@ -50473,12 +50520,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7878; + this.state = 7872; this.selectstmt(); } break; } - this.state = 7881; + this.state = 7875; this.match(PostgreSqlParser.SEMI); } } @@ -50502,9 +50549,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7883; + this.state = 7877; this.any_identifier(); - this.state = 7884; + this.state = 7878; this.typename(); } } @@ -50529,7 +50576,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7886; + this.state = 7880; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 20)) { this.errorHandler.recoverInline(this); @@ -50558,162 +50605,162 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Proc_stmtContext(this.context, this.state); this.enterRule(localContext, 846, PostgreSqlParser.RULE_proc_stmt); try { - this.state = 7912; + this.state = 7906; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1083, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7888; + this.state = 7882; this.pl_block(); - this.state = 7889; + this.state = 7883; this.match(PostgreSqlParser.SEMI); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7891; + this.state = 7885; this.stmt_return(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7892; + this.state = 7886; this.stmt_raise(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7893; + this.state = 7887; this.stmt_assign(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7894; + this.state = 7888; this.stmt_if(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7895; + this.state = 7889; this.stmt_case(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7896; + this.state = 7890; this.stmt_loop_while_for(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7897; + this.state = 7891; this.stmt_foreach_a(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 7898; + this.state = 7892; this.stmt_exit(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 7899; + this.state = 7893; this.stmt_assert(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 7900; + this.state = 7894; this.stmt_execsql(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 7901; + this.state = 7895; this.stmt_dynexecute(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 7902; + this.state = 7896; this.stmt_perform(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 7903; + this.state = 7897; this.stmt_call(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 7904; + this.state = 7898; this.stmt_getdiag(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 7905; + this.state = 7899; this.stmt_open(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 7906; + this.state = 7900; this.stmt_fetch(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 7907; + this.state = 7901; this.stmt_move(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 7908; + this.state = 7902; this.stmt_close(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 7909; + this.state = 7903; this.stmt_null(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 7910; + this.state = 7904; this.stmt_commit_or_rollback(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 7911; + this.state = 7905; this.stmt_set(); } break; @@ -50739,11 +50786,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7914; + this.state = 7908; this.match(PostgreSqlParser.KW_PERFORM); - this.state = 7915; + this.state = 7909; this.sql_expression(); - this.state = 7916; + this.state = 7910; this.match(PostgreSqlParser.SEMI); } } @@ -50766,36 +50813,36 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 850, PostgreSqlParser.RULE_stmt_call); let _la: number; try { - this.state = 7937; + this.state = 7931; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CALL: this.enterOuterAlt(localContext, 1); { - this.state = 7918; + this.state = 7912; this.match(PostgreSqlParser.KW_CALL); - this.state = 7919; + this.state = 7913; this.any_identifier(); - this.state = 7926; + this.state = 7920; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { case 1: { - this.state = 7920; + this.state = 7914; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7922; + this.state = 7916; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7921; + this.state = 7915; this.expr_list(); } } - this.state = 7924; + this.state = 7918; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 7925; + this.state = 7919; this.match(PostgreSqlParser.SEMI); } break; @@ -50805,25 +50852,25 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DO: this.enterOuterAlt(localContext, 2); { - this.state = 7928; + this.state = 7922; this.match(PostgreSqlParser.KW_DO); - this.state = 7929; + this.state = 7923; this.any_identifier(); - this.state = 7930; + this.state = 7924; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7932; + this.state = 7926; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7931; + this.state = 7925; this.expr_list(); } } - this.state = 7934; + this.state = 7928; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 7935; + this.state = 7929; this.match(PostgreSqlParser.SEMI); } break; @@ -50851,13 +50898,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7939; + this.state = 7933; this.assign_var(); - this.state = 7940; + this.state = 7934; this.assign_operator(); - this.state = 7941; + this.state = 7935; this.sql_expression(); - this.state = 7942; + this.state = 7936; this.match(PostgreSqlParser.SEMI); } } @@ -50882,14 +50929,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7944; + this.state = 7938; this.match(PostgreSqlParser.KW_GET); - this.state = 7946; + this.state = 7940; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 434 || _la === 501) { { - this.state = 7945; + this.state = 7939; _la = this.tokenStream.LA(1); if(!(_la === 434 || _la === 501)) { this.errorHandler.recoverInline(this); @@ -50901,29 +50948,29 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7948; + this.state = 7942; this.match(PostgreSqlParser.KW_DIAGNOSTICS); { - this.state = 7949; + this.state = 7943; this.getdiag_list_item(); - this.state = 7954; + this.state = 7948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7950; + this.state = 7944; this.match(PostgreSqlParser.COMMA); - this.state = 7951; + this.state = 7945; this.getdiag_list_item(); } } - this.state = 7956; + this.state = 7950; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 7957; + this.state = 7951; this.match(PostgreSqlParser.SEMI); } } @@ -50947,11 +50994,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7959; + this.state = 7953; this.assign_var(); - this.state = 7960; + this.state = 7954; this.assign_operator(); - this.state = 7961; + this.state = 7955; this.colid(); } } @@ -50976,16 +51023,10 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7965; + this.state = 7959; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -51367,6 +51408,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -51379,34 +51421,34 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7963; + this.state = 7957; this.any_name(); } break; case PostgreSqlParser.PARAM: { - this.state = 7964; + this.state = 7958; this.match(PostgreSqlParser.PARAM); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7973; + this.state = 7967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 4) { { { - this.state = 7967; + this.state = 7961; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 7968; + this.state = 7962; this.expression(); - this.state = 7969; + this.state = 7963; this.match(PostgreSqlParser.CLOSE_BRACKET); } } - this.state = 7975; + this.state = 7969; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -51434,79 +51476,79 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7976; + this.state = 7970; this.match(PostgreSqlParser.KW_IF); - this.state = 7977; + this.state = 7971; this.sql_expression(); - this.state = 7978; + this.state = 7972; this.match(PostgreSqlParser.KW_THEN); - this.state = 7982; + this.state = 7976; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7979; + this.state = 7973; this.proc_stmt(); } } } - this.state = 7984; + this.state = 7978; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); } { - this.state = 7996; + this.state = 7990; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 502) { { { - this.state = 7985; + this.state = 7979; this.match(PostgreSqlParser.KW_ELSIF); - this.state = 7986; + this.state = 7980; this.expression(); - this.state = 7987; + this.state = 7981; this.match(PostgreSqlParser.KW_THEN); - this.state = 7991; + this.state = 7985; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7988; + this.state = 7982; this.proc_stmt(); } } } - this.state = 7993; + this.state = 7987; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context); } } } - this.state = 7998; + this.state = 7992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 8000; + this.state = 7994; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 58) { { - this.state = 7999; + this.state = 7993; this.stmt_else(); } } - this.state = 8002; + this.state = 7996; this.match(PostgreSqlParser.KW_END); - this.state = 8003; + this.state = 7997; this.match(PostgreSqlParser.KW_IF); - this.state = 8004; + this.state = 7998; this.match(PostgreSqlParser.SEMI); } } @@ -51531,21 +51573,21 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8006; + this.state = 8000; this.match(PostgreSqlParser.KW_ELSE); - this.state = 8010; + this.state = 8004; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8007; + this.state = 8001; this.proc_stmt(); } } } - this.state = 8012; + this.state = 8006; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context); } @@ -51573,67 +51615,67 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8013; + this.state = 8007; this.match(PostgreSqlParser.KW_CASE); - this.state = 8015; + this.state = 8009; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1097, this.context) ) { case 1: { - this.state = 8014; + this.state = 8008; this.sql_expression(); } break; } - this.state = 8026; + this.state = 8020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8017; + this.state = 8011; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8018; + this.state = 8012; this.expr_list(); - this.state = 8019; + this.state = 8013; this.match(PostgreSqlParser.KW_THEN); - this.state = 8023; + this.state = 8017; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8020; + this.state = 8014; this.proc_stmt(); } } } - this.state = 8025; + this.state = 8019; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context); } } } - this.state = 8028; + this.state = 8022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); - this.state = 8031; + this.state = 8025; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 58) { { - this.state = 8030; + this.state = 8024; this.stmt_else(); } } - this.state = 8033; + this.state = 8027; this.match(PostgreSqlParser.KW_END); - this.state = 8034; + this.state = 8028; this.match(PostgreSqlParser.KW_CASE); - this.state = 8035; + this.state = 8029; this.match(PostgreSqlParser.SEMI); } } @@ -51658,25 +51700,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8038; + this.state = 8032; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18) { { - this.state = 8037; + this.state = 8031; this.label_decl(); } } - this.state = 8044; + this.state = 8038; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_WHILE: { { - this.state = 8040; + this.state = 8034; this.match(PostgreSqlParser.KW_WHILE); - this.state = 8041; + this.state = 8035; this.expression(); } } @@ -51684,9 +51726,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_FOR: { { - this.state = 8042; + this.state = 8036; this.match(PostgreSqlParser.KW_FOR); - this.state = 8043; + this.state = 8037; this.for_control(); } } @@ -51696,7 +51738,7 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 8046; + this.state = 8040; this.loop_body(); } } @@ -51721,23 +51763,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8048; + this.state = 8042; this.any_name_list(); - this.state = 8049; + this.state = 8043; this.match(PostgreSqlParser.KW_IN); - this.state = 8072; + this.state = 8066; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { case 1: { - this.state = 8050; + this.state = 8044; this.colid(); - this.state = 8052; + this.state = 8046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 8051; + this.state = 8045; this.execute_param_clause(); } } @@ -51746,30 +51788,30 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8054; + this.state = 8048; this.selectstmt(); } break; case 3: { - this.state = 8055; + this.state = 8049; this.explainstmt(); } break; case 4: { - this.state = 8056; + this.state = 8050; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8057; + this.state = 8051; this.expression(); - this.state = 8060; + this.state = 8054; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8058; + this.state = 8052; this.match(PostgreSqlParser.KW_USING); - this.state = 8059; + this.state = 8053; this.expr_list(); } } @@ -51778,30 +51820,30 @@ export class PostgreSqlParser extends SQLParserBase { break; case 5: { - this.state = 8063; + this.state = 8057; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1105, this.context) ) { case 1: { - this.state = 8062; + this.state = 8056; this.match(PostgreSqlParser.KW_REVERSE); } break; } - this.state = 8065; + this.state = 8059; this.expression(); - this.state = 8066; + this.state = 8060; this.match(PostgreSqlParser.DOT_DOT); - this.state = 8067; + this.state = 8061; this.expression(); - this.state = 8070; + this.state = 8064; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 8068; + this.state = 8062; this.match(PostgreSqlParser.KW_BY); - this.state = 8069; + this.state = 8063; this.expression(); } } @@ -51832,39 +51874,39 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8075; + this.state = 8069; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18) { { - this.state = 8074; + this.state = 8068; this.label_decl(); } } - this.state = 8077; + this.state = 8071; this.match(PostgreSqlParser.KW_FOREACH); - this.state = 8078; + this.state = 8072; this.any_name_list(); - this.state = 8081; + this.state = 8075; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 506) { { - this.state = 8079; + this.state = 8073; this.match(PostgreSqlParser.KW_SLICE); - this.state = 8080; + this.state = 8074; this.match(PostgreSqlParser.Integral); } } - this.state = 8083; + this.state = 8077; this.match(PostgreSqlParser.KW_IN); - this.state = 8084; + this.state = 8078; this.match(PostgreSqlParser.KW_ARRAY); - this.state = 8085; + this.state = 8079; this.expression(); - this.state = 8086; + this.state = 8080; this.loop_body(); } } @@ -51889,7 +51931,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8088; + this.state = 8082; _la = this.tokenStream.LA(1); if(!(_la === 167 || _la === 507)) { this.errorHandler.recoverInline(this); @@ -51898,29 +51940,29 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8090; + this.state = 8084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8089; + this.state = 8083; this.any_identifier(); } } - this.state = 8094; + this.state = 8088; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 8092; + this.state = 8086; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8093; + this.state = 8087; this.sql_expression(); } } - this.state = 8096; + this.state = 8090; this.match(PostgreSqlParser.SEMI); } } @@ -51944,35 +51986,35 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8098; + this.state = 8092; this.match(PostgreSqlParser.KW_RETURN); - this.state = 8113; + this.state = 8107; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1114, this.context) ) { case 1: { - this.state = 8099; + this.state = 8093; this.match(PostgreSqlParser.KW_NEXT); - this.state = 8100; + this.state = 8094; this.sql_expression(); } break; case 2: { - this.state = 8101; + this.state = 8095; this.match(PostgreSqlParser.KW_QUERY); - this.state = 8108; + this.state = 8102; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_EXECUTE: { - this.state = 8102; + this.state = 8096; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8103; + this.state = 8097; this.expression(); - this.state = 8104; + this.state = 8098; this.match(PostgreSqlParser.KW_USING); - this.state = 8105; + this.state = 8099; this.expr_list(); } break; @@ -51982,7 +52024,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_WITH: case PostgreSqlParser.KW_VALUES: { - this.state = 8107; + this.state = 8101; this.selectstmt(); } break; @@ -51993,12 +52035,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 8111; + this.state = 8105; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { case 1: { - this.state = 8110; + this.state = 8104; this.sql_expression(); } break; @@ -52006,7 +52048,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8115; + this.state = 8109; this.match(PostgreSqlParser.SEMI); } } @@ -52031,19 +52073,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8117; + this.state = 8111; this.match(PostgreSqlParser.KW_RAISE); - this.state = 8147; + this.state = 8141; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1121, this.context) ) { case 1: { - this.state = 8119; + this.state = 8113; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1115, this.context) ) { case 1: { - this.state = 8118; + this.state = 8112; _la = this.tokenStream.LA(1); if(!(((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0))) { this.errorHandler.recoverInline(this); @@ -52055,21 +52097,21 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8133; + this.state = 8127; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { case 1: { - this.state = 8121; + this.state = 8115; this.identifier(); } break; case 2: { { - this.state = 8122; + this.state = 8116; this.match(PostgreSqlParser.KW_SQLSTATE); - this.state = 8123; + this.state = 8117; this.sconst(); } } @@ -52077,26 +52119,26 @@ export class PostgreSqlParser extends SQLParserBase { case 3: { { - this.state = 8124; + this.state = 8118; this.sconst(); - this.state = 8131; + this.state = 8125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 8127; + this.state = 8121; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8125; + this.state = 8119; this.match(PostgreSqlParser.COMMA); - this.state = 8126; + this.state = 8120; this.expression(); } } - this.state = 8129; + this.state = 8123; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 6); @@ -52107,29 +52149,29 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8144; + this.state = 8138; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8135; + this.state = 8129; this.match(PostgreSqlParser.KW_USING); { - this.state = 8136; + this.state = 8130; this.opt_raise_using_elem(); - this.state = 8141; + this.state = 8135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8137; + this.state = 8131; this.match(PostgreSqlParser.COMMA); - this.state = 8138; + this.state = 8132; this.opt_raise_using_elem(); } } - this.state = 8143; + this.state = 8137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -52137,7 +52179,7 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 8146; + this.state = 8140; this.match(PostgreSqlParser.SEMI); } break; @@ -52164,11 +52206,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8149; + this.state = 8143; this.identifier(); - this.state = 8150; + this.state = 8144; this.match(PostgreSqlParser.EQUAL); - this.state = 8151; + this.state = 8145; this.expression(); } } @@ -52193,23 +52235,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8153; + this.state = 8147; this.match(PostgreSqlParser.KW_ASSERT); - this.state = 8154; + this.state = 8148; this.sql_expression(); - this.state = 8157; + this.state = 8151; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 8155; + this.state = 8149; this.match(PostgreSqlParser.COMMA); - this.state = 8156; + this.state = 8150; this.sql_expression(); } } - this.state = 8159; + this.state = 8153; this.match(PostgreSqlParser.SEMI); } } @@ -52235,39 +52277,39 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8161; + this.state = 8155; this.match(PostgreSqlParser.KW_LOOP); - this.state = 8165; + this.state = 8159; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8162; + this.state = 8156; this.proc_stmt(); } } } - this.state = 8167; + this.state = 8161; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context); } - this.state = 8168; + this.state = 8162; this.match(PostgreSqlParser.KW_END); - this.state = 8169; + this.state = 8163; this.match(PostgreSqlParser.KW_LOOP); - this.state = 8171; + this.state = 8165; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8170; + this.state = 8164; this.any_identifier(); } } - this.state = 8173; + this.state = 8167; this.match(PostgreSqlParser.SEMI); } } @@ -52292,19 +52334,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8175; + this.state = 8169; this.stmt(); - this.state = 8177; + this.state = 8171; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 8176; + this.state = 8170; this.opt_execute_into(); } } - this.state = 8179; + this.state = 8173; this.match(PostgreSqlParser.SEMI); } } @@ -52329,33 +52371,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8181; + this.state = 8175; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8182; + this.state = 8176; this.expression(); - this.state = 8198; + this.state = 8192; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1130, this.context) ) { case 1: { - this.state = 8184; + this.state = 8178; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 8183; + this.state = 8177; this.opt_execute_into(); } } - this.state = 8188; + this.state = 8182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8186; + this.state = 8180; this.match(PostgreSqlParser.KW_USING); - this.state = 8187; + this.state = 8181; this.expr_list(); } } @@ -52364,24 +52406,24 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8192; + this.state = 8186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8190; + this.state = 8184; this.match(PostgreSqlParser.KW_USING); - this.state = 8191; + this.state = 8185; this.expr_list(); } } - this.state = 8195; + this.state = 8189; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 8194; + this.state = 8188; this.opt_execute_into(); } } @@ -52394,7 +52436,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8200; + this.state = 8194; this.match(PostgreSqlParser.SEMI); } } @@ -52418,19 +52460,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8202; + this.state = 8196; this.match(PostgreSqlParser.KW_INTO); - this.state = 8204; + this.state = 8198; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { case 1: { - this.state = 8203; + this.state = 8197; this.match(PostgreSqlParser.KW_STRICT); } break; } - this.state = 8206; + this.state = 8200; this.expr_list(); } } @@ -52455,38 +52497,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8208; + this.state = 8202; this.match(PostgreSqlParser.KW_OPEN); - this.state = 8240; + this.state = 8234; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1138, this.context) ) { case 1: { - this.state = 8209; + this.state = 8203; this.cursor_variable(); - this.state = 8214; + this.state = 8208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269 || _la === 324) { { - this.state = 8211; + this.state = 8205; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 8210; + this.state = 8204; this.match(PostgreSqlParser.KW_NO); } } - this.state = 8213; + this.state = 8207; this.match(PostgreSqlParser.KW_SCROLL); } } - this.state = 8216; + this.state = 8210; this.match(PostgreSqlParser.KW_FOR); - this.state = 8224; + this.state = 8218; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -52495,24 +52537,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_WITH: case PostgreSqlParser.KW_VALUES: { - this.state = 8217; + this.state = 8211; this.selectstmt(); } break; case PostgreSqlParser.KW_EXECUTE: { - this.state = 8218; + this.state = 8212; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8219; + this.state = 8213; this.sql_expression(); - this.state = 8222; + this.state = 8216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8220; + this.state = 8214; this.match(PostgreSqlParser.KW_USING); - this.state = 8221; + this.state = 8215; this.expr_list(); } } @@ -52526,36 +52568,36 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8226; + this.state = 8220; this.colid(); - this.state = 8238; + this.state = 8232; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 8227; + this.state = 8221; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 8228; + this.state = 8222; this.opt_open_bound_list_item(); - this.state = 8233; + this.state = 8227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8229; + this.state = 8223; this.match(PostgreSqlParser.COMMA); - this.state = 8230; + this.state = 8224; this.opt_open_bound_list_item(); } } - this.state = 8235; + this.state = 8229; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 8236; + this.state = 8230; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -52563,7 +52605,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8242; + this.state = 8236; this.match(PostgreSqlParser.SEMI); } } @@ -52587,19 +52629,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8247; + this.state = 8241; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1139, this.context) ) { case 1: { - this.state = 8244; + this.state = 8238; this.colid(); - this.state = 8245; + this.state = 8239; this.match(PostgreSqlParser.COLON_EQUALS); } break; } - this.state = 8249; + this.state = 8243; this.expression(); } } @@ -52624,35 +52666,35 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8251; + this.state = 8245; this.match(PostgreSqlParser.KW_FETCH); - this.state = 8253; + this.state = 8247; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1140, this.context) ) { case 1: { - this.state = 8252; + this.state = 8246; localContext._direction = this.opt_fetch_direction(); } break; } - this.state = 8256; + this.state = 8250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 8255; + this.state = 8249; this.from_in(); } } - this.state = 8258; + this.state = 8252; this.cursor_variable(); - this.state = 8259; + this.state = 8253; this.match(PostgreSqlParser.KW_INTO); - this.state = 8260; + this.state = 8254; this.expr_list(); - this.state = 8261; + this.state = 8255; this.match(PostgreSqlParser.SEMI); } } @@ -52675,46 +52717,46 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 896, PostgreSqlParser.RULE_opt_fetch_direction); let _la: number; try { - this.state = 8277; + this.state = 8271; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1144, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8263; + this.state = 8257; this.match(PostgreSqlParser.KW_NEXT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8264; + this.state = 8258; this.match(PostgreSqlParser.KW_PRIOR); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 8265; + this.state = 8259; this.match(PostgreSqlParser.KW_FIRST); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 8266; + this.state = 8260; this.match(PostgreSqlParser.KW_LAST); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 8268; + this.state = 8262; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { case 1: { - this.state = 8267; + this.state = 8261; _la = this.tokenStream.LA(1); if(!(_la === 130 || _la === 307)) { this.errorHandler.recoverInline(this); @@ -52726,21 +52768,21 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8270; + this.state = 8264; this.expression(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 8271; + this.state = 8265; this.match(PostgreSqlParser.KW_ALL); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 8272; + this.state = 8266; _la = this.tokenStream.LA(1); if(!(_la === 144 || _la === 210)) { this.errorHandler.recoverInline(this); @@ -52749,18 +52791,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8275; + this.state = 8269; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context) ) { case 1: { - this.state = 8273; + this.state = 8267; this.expression(); } break; case 2: { - this.state = 8274; + this.state = 8268; this.match(PostgreSqlParser.KW_ALL); } break; @@ -52789,21 +52831,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8279; + this.state = 8273; this.match(PostgreSqlParser.KW_MOVE); - this.state = 8281; + this.state = 8275; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1145, this.context) ) { case 1: { - this.state = 8280; + this.state = 8274; this.opt_fetch_direction(); } break; } - this.state = 8283; + this.state = 8277; this.cursor_variable(); - this.state = 8284; + this.state = 8278; this.match(PostgreSqlParser.SEMI); } } @@ -52828,81 +52870,81 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8287; + this.state = 8281; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 8286; + this.state = 8280; this.with_clause(); } } - this.state = 8289; + this.state = 8283; this.match(PostgreSqlParser.KW_MERGE); - this.state = 8290; + this.state = 8284; this.match(PostgreSqlParser.KW_INTO); - this.state = 8292; + this.state = 8286; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 8291; + this.state = 8285; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 8294; + this.state = 8288; this.table_name(); - this.state = 8296; + this.state = 8290; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 8295; + this.state = 8289; this.match(PostgreSqlParser.STAR); } } - this.state = 8302; + this.state = 8296; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 36 || _la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8299; + this.state = 8293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 8298; + this.state = 8292; this.match(PostgreSqlParser.KW_AS); } } - this.state = 8301; + this.state = 8295; this.colid(); } } - this.state = 8304; + this.state = 8298; this.match(PostgreSqlParser.KW_USING); - this.state = 8305; + this.state = 8299; this.data_source(); - this.state = 8306; + this.state = 8300; this.match(PostgreSqlParser.KW_ON); - this.state = 8307; + this.state = 8301; this.expression(); - this.state = 8309; + this.state = 8303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8308; + this.state = 8302; this.merge_when_clause(); } } - this.state = 8311; + this.state = 8305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); @@ -52929,29 +52971,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8324; + this.state = 8318; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1155, this.context) ) { case 1: { - this.state = 8314; + this.state = 8308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 8313; + this.state = 8307; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 8316; + this.state = 8310; this.table_name(); - this.state = 8318; + this.state = 8312; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 8317; + this.state = 8311; this.match(PostgreSqlParser.STAR); } } @@ -52960,18 +53002,18 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8322; + this.state = 8316; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1154, this.context) ) { case 1: { - this.state = 8320; + this.state = 8314; this.select_no_parens(); } break; case 2: { - this.state = 8321; + this.state = 8315; this.values_clause(); } break; @@ -52979,22 +53021,22 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8330; + this.state = 8324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 36 || _la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8327; + this.state = 8321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 8326; + this.state = 8320; this.match(PostgreSqlParser.KW_AS); } } - this.state = 8329; + this.state = 8323; this.colid(); } } @@ -53020,50 +53062,50 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 904, PostgreSqlParser.RULE_merge_when_clause); let _la: number; try { - this.state = 8358; + this.state = 8352; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1162, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8332; + this.state = 8326; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8333; + this.state = 8327; this.match(PostgreSqlParser.KW_MATCHED); - this.state = 8336; + this.state = 8330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 8334; + this.state = 8328; this.match(PostgreSqlParser.KW_AND); - this.state = 8335; + this.state = 8329; this.expression(); } } - this.state = 8338; + this.state = 8332; this.match(PostgreSqlParser.KW_THEN); - this.state = 8343; + this.state = 8337; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UPDATE: { - this.state = 8339; + this.state = 8333; this.merge_update(); } break; case PostgreSqlParser.KW_DELETE: { - this.state = 8340; + this.state = 8334; this.match(PostgreSqlParser.KW_DELETE); } break; case PostgreSqlParser.KW_DO: { - this.state = 8341; + this.state = 8335; this.match(PostgreSqlParser.KW_DO); - this.state = 8342; + this.state = 8336; this.match(PostgreSqlParser.KW_NOTHING); } break; @@ -53075,40 +53117,40 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8345; + this.state = 8339; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8346; + this.state = 8340; this.match(PostgreSqlParser.KW_NOT); - this.state = 8347; + this.state = 8341; this.match(PostgreSqlParser.KW_MATCHED); - this.state = 8350; + this.state = 8344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 8348; + this.state = 8342; this.match(PostgreSqlParser.KW_AND); - this.state = 8349; + this.state = 8343; this.expression(); } } - this.state = 8352; + this.state = 8346; this.match(PostgreSqlParser.KW_THEN); - this.state = 8356; + this.state = 8350; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INSERT: { - this.state = 8353; + this.state = 8347; this.merge_insert(); } break; case PostgreSqlParser.KW_DO: { - this.state = 8354; + this.state = 8348; this.match(PostgreSqlParser.KW_DO); - this.state = 8355; + this.state = 8349; this.match(PostgreSqlParser.KW_NOTHING); } break; @@ -53140,26 +53182,26 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8360; + this.state = 8354; this.match(PostgreSqlParser.KW_INSERT); - this.state = 8362; + this.state = 8356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 8361; + this.state = 8355; this.opt_column_list(); } } - this.state = 8367; + this.state = 8361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 463) { { - this.state = 8364; + this.state = 8358; this.match(PostgreSqlParser.KW_OVERRIDING); - this.state = 8365; + this.state = 8359; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 349)) { this.errorHandler.recoverInline(this); @@ -53168,12 +53210,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8366; + this.state = 8360; this.match(PostgreSqlParser.KW_VALUE); } } - this.state = 8369; + this.state = 8363; this.default_values_or_values(); } } @@ -53199,57 +53241,57 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8371; + this.state = 8365; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 8372; + this.state = 8366; this.match(PostgreSqlParser.KW_SET); - this.state = 8390; + this.state = 8384; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 8390; + this.state = 8384; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1166, this.context) ) { case 1: { - this.state = 8373; + this.state = 8367; this.column_name(); - this.state = 8374; + this.state = 8368; this.match(PostgreSqlParser.EQUAL); - this.state = 8375; + this.state = 8369; this.exprofdefault(); } break; case 2: { - this.state = 8377; + this.state = 8371; this.opt_column_list(); - this.state = 8378; + this.state = 8372; this.match(PostgreSqlParser.EQUAL); - this.state = 8379; + this.state = 8373; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8380; + this.state = 8374; this.exprofdefault(); - this.state = 8385; + this.state = 8379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8381; + this.state = 8375; this.match(PostgreSqlParser.COMMA); - this.state = 8382; + this.state = 8376; this.exprofdefault(); } } - this.state = 8387; + this.state = 8381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 8388; + this.state = 8382; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -53259,7 +53301,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 8392; + this.state = 8386; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1167, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -53284,44 +53326,44 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 910, PostgreSqlParser.RULE_default_values_or_values); let _la: number; try { - this.state = 8408; + this.state = 8402; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_VALUES: this.enterOuterAlt(localContext, 1); { - this.state = 8394; + this.state = 8388; this.match(PostgreSqlParser.KW_VALUES); - this.state = 8395; + this.state = 8389; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8396; + this.state = 8390; this.exprofdefault(); - this.state = 8401; + this.state = 8395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8397; + this.state = 8391; this.match(PostgreSqlParser.COMMA); - this.state = 8398; + this.state = 8392; this.exprofdefault(); } } - this.state = 8403; + this.state = 8397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 8404; + this.state = 8398; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 2); { - this.state = 8406; + this.state = 8400; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 8407; + this.state = 8401; this.match(PostgreSqlParser.KW_VALUES); } break; @@ -53347,20 +53389,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ExprofdefaultContext(this.context, this.state); this.enterRule(localContext, 912, PostgreSqlParser.RULE_exprofdefault); try { - this.state = 8412; + this.state = 8406; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1170, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8410; + this.state = 8404; this.sortby(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8411; + this.state = 8405; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -53386,11 +53428,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8414; + this.state = 8408; this.match(PostgreSqlParser.KW_CLOSE); - this.state = 8415; + this.state = 8409; this.cursor_variable(); - this.state = 8416; + this.state = 8410; this.match(PostgreSqlParser.SEMI); } } @@ -53414,9 +53456,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8418; + this.state = 8412; this.match(PostgreSqlParser.KW_NULL); - this.state = 8419; + this.state = 8413; this.match(PostgreSqlParser.SEMI); } } @@ -53441,7 +53483,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8421; + this.state = 8415; _la = this.tokenStream.LA(1); if(!(_la === 161 || _la === 319)) { this.errorHandler.recoverInline(this); @@ -53450,29 +53492,29 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8427; + this.state = 8421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 8422; + this.state = 8416; this.match(PostgreSqlParser.KW_AND); - this.state = 8424; + this.state = 8418; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 8423; + this.state = 8417; this.match(PostgreSqlParser.KW_NO); } } - this.state = 8426; + this.state = 8420; this.match(PostgreSqlParser.KW_CHAIN); } } - this.state = 8429; + this.state = 8423; this.match(PostgreSqlParser.SEMI); } } @@ -53494,39 +53536,33 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Stmt_setContext(this.context, this.state); this.enterRule(localContext, 920, PostgreSqlParser.RULE_stmt_set); try { - this.state = 8443; + this.state = 8437; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 8431; + this.state = 8425; this.match(PostgreSqlParser.KW_SET); - this.state = 8432; + this.state = 8426; this.any_name(); - this.state = 8433; + this.state = 8427; this.match(PostgreSqlParser.KW_TO); - this.state = 8434; + this.state = 8428; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 8435; + this.state = 8429; this.match(PostgreSqlParser.SEMI); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 8437; + this.state = 8431; this.match(PostgreSqlParser.KW_RESET); - this.state = 8440; + this.state = 8434; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -53908,6 +53944,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -53920,20 +53957,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 8438; + this.state = 8432; this.any_name(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 8439; + this.state = 8433; this.match(PostgreSqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 8442; + this.state = 8436; this.match(PostgreSqlParser.SEMI); } break; @@ -53959,16 +53996,10 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Cursor_variableContext(this.context, this.state); this.enterRule(localContext, 922, PostgreSqlParser.RULE_cursor_variable); try { - this.state = 8447; + this.state = 8441; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -54350,6 +54381,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -54363,14 +54395,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 8445; + this.state = 8439; this.colid(); } break; case PostgreSqlParser.PARAM: this.enterOuterAlt(localContext, 2); { - this.state = 8446; + this.state = 8440; this.match(PostgreSqlParser.PARAM); } break; @@ -54400,57 +54432,57 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8449; + this.state = 8443; this.match(PostgreSqlParser.KW_EXCEPTION); - this.state = 8466; + this.state = 8460; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8450; + this.state = 8444; this.match(PostgreSqlParser.KW_WHEN); { - this.state = 8451; + this.state = 8445; this.proc_condition(); - this.state = 8456; + this.state = 8450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 82) { { { - this.state = 8452; + this.state = 8446; this.match(PostgreSqlParser.KW_OR); - this.state = 8453; + this.state = 8447; this.proc_condition(); } } - this.state = 8458; + this.state = 8452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 8459; + this.state = 8453; this.match(PostgreSqlParser.KW_THEN); - this.state = 8463; + this.state = 8457; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1177, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8460; + this.state = 8454; this.proc_stmt(); } } } - this.state = 8465; + this.state = 8459; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1177, this.context); } } } - this.state = 8468; + this.state = 8462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); @@ -54474,22 +54506,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Proc_conditionContext(this.context, this.state); this.enterRule(localContext, 926, PostgreSqlParser.RULE_proc_condition); try { - this.state = 8473; + this.state = 8467; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1179, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8470; + this.state = 8464; this.any_identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8471; + this.state = 8465; this.match(PostgreSqlParser.KW_SQLSTATE); - this.state = 8472; + this.state = 8466; this.sconst(); } break; @@ -54513,21 +54545,21 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Any_identifierContext(this.context, this.state); this.enterRule(localContext, 928, PostgreSqlParser.RULE_any_identifier); try { - this.state = 8477; + this.state = 8471; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1180, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8475; + this.state = 8469; this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8476; - this.plsql_unreserved_keyword(); + this.state = 8470; + this.unreserved_keyword(); } break; } @@ -54546,113 +54578,81 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext { - let localContext = new Plsql_unreserved_keywordContext(this.context, this.state); - this.enterRule(localContext, 930, PostgreSqlParser.RULE_plsql_unreserved_keyword); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8479; - _la = this.tokenStream.LA(1); - if(!(((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public sql_expression(): Sql_expressionContext { let localContext = new Sql_expressionContext(this.context, this.state); - this.enterRule(localContext, 932, PostgreSqlParser.RULE_sql_expression); + this.enterRule(localContext, 930, PostgreSqlParser.RULE_sql_expression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8482; + this.state = 8474; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1181, this.context) ) { case 1: { - this.state = 8481; + this.state = 8473; this.target_list(); } break; } - this.state = 8485; + this.state = 8477; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1182, this.context) ) { case 1: { - this.state = 8484; + this.state = 8476; this.into_clause(); } break; } - this.state = 8488; + this.state = 8480; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 8487; + this.state = 8479; this.from_clause(); } } - this.state = 8491; + this.state = 8483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 8490; + this.state = 8482; this.where_clause(); } } - this.state = 8494; + this.state = 8486; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 8493; + this.state = 8485; this.group_clause(); } } - this.state = 8498; + this.state = 8490; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 67) { { - this.state = 8496; + this.state = 8488; this.match(PostgreSqlParser.KW_HAVING); - this.state = 8497; + this.state = 8489; this.expression(); } } - this.state = 8501; + this.state = 8493; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1187, this.context) ) { case 1: { - this.state = 8500; + this.state = 8492; this.window_clause(); } break; @@ -54731,7 +54731,7 @@ export class PostgreSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,590,8504,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,590,8496,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -54812,8 +54812,8 @@ export class PostgreSqlParser extends SQLParserBase { 2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450, 7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455, 2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461, - 7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466, - 1,0,5,0,936,8,0,10,0,12,0,939,9,0,1,0,1,0,1,1,1,1,3,1,945,8,1,1, + 7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,1,0,5,0,934, + 8,0,10,0,12,0,937,9,0,1,0,1,0,1,1,1,1,3,1,943,8,1,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, @@ -54821,803 +54821,802 @@ export class PostgreSqlParser extends SQLParserBase { 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,3,2,1065,8,2,3,2,1067,8,2,1,3,1,3,1,3,1,4, - 1,4,1,4,1,4,3,4,1076,8,4,1,4,5,4,1079,8,4,10,4,12,4,1082,9,4,1,5, - 1,5,1,5,3,5,1087,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 2,1,2,1,2,3,2,1063,8,2,3,2,1065,8,2,1,3,1,3,1,3,1,4,1,4,1,4,1,4, + 3,4,1074,8,4,1,4,5,4,1077,8,4,10,4,12,4,1080,9,4,1,5,1,5,1,5,3,5, + 1085,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, - 1,5,1,5,1,5,1,5,1,5,1,5,3,5,1122,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6, - 1,6,3,6,1132,8,6,1,7,1,7,1,7,1,7,3,7,1138,8,7,1,7,5,7,1141,8,7,10, - 7,12,7,1144,9,7,1,8,1,8,1,8,1,8,3,8,1150,8,8,1,8,5,8,1153,8,8,10, - 8,12,8,1156,9,8,1,9,1,9,1,9,1,9,3,9,1162,8,9,1,9,1,9,1,9,1,9,1,9, - 1,10,1,10,1,10,1,10,3,10,1173,8,10,1,10,1,10,1,11,1,11,5,11,1179, - 8,11,10,11,12,11,1182,9,11,1,11,3,11,1185,8,11,1,11,1,11,1,11,1, - 11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,1197,8,11,1,11,1,11,1,11,1, - 11,3,11,1203,8,11,1,12,1,12,1,12,1,12,3,12,1209,8,12,1,12,1,12,3, - 12,1213,8,12,1,12,1,12,1,12,3,12,1218,8,12,1,12,1,12,3,12,1222,8, - 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1235, - 8,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1245,8,12,3,12, - 1247,8,12,1,13,1,13,1,13,1,13,3,13,1253,8,13,1,13,5,13,1256,8,13, - 10,13,12,13,1259,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1, - 15,1,15,3,15,1271,8,15,1,15,3,15,1274,8,15,1,15,1,15,1,15,3,15,1279, - 8,15,1,15,5,15,1282,8,15,10,15,12,15,1285,9,15,1,16,1,16,1,17,1, - 17,1,17,1,17,1,17,1,17,3,17,1295,8,17,1,18,1,18,3,18,1299,8,18,1, - 18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1311,8,19,1, - 20,1,20,3,20,1315,8,20,1,20,3,20,1318,8,20,1,20,1,20,3,20,1322,8, - 20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1334,8, - 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,21,1,21,3,21,1352,8,21,1,22,1,22,1,22,5,22,1357,8,22,10, - 22,12,22,1360,9,22,1,23,1,23,1,23,5,23,1365,8,23,10,23,12,23,1368, - 9,23,1,24,1,24,3,24,1372,8,24,1,25,1,25,1,25,1,25,1,25,3,25,1379, - 8,25,1,26,1,26,1,26,1,26,1,26,1,26,3,26,1387,8,26,1,27,1,27,1,27, - 1,27,3,27,1393,8,27,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1401,8,28, - 1,28,1,28,1,28,1,28,1,28,1,28,3,28,1409,8,28,1,29,1,29,3,29,1413, - 8,29,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, - 3,31,1427,8,31,1,32,1,32,1,32,3,32,1432,8,32,1,33,1,33,1,33,3,33, - 1437,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34, - 1449,8,34,1,35,1,35,1,35,1,35,3,35,1455,8,35,1,35,1,35,1,36,1,36, - 1,37,1,37,1,37,1,38,1,38,1,38,3,38,1467,8,38,1,38,1,38,1,38,3,38, - 1472,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1482,8,38, - 1,38,1,38,1,38,1,38,3,38,1488,8,38,1,38,1,38,1,38,3,38,1493,8,38, - 1,38,1,38,1,38,1,38,1,38,1,38,3,38,1501,8,38,1,38,1,38,1,38,3,38, - 1506,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1513,8,38,1,38,1,38,1,38, - 3,38,1518,8,38,1,38,1,38,1,38,3,38,1523,8,38,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,3,38,1533,8,38,1,38,1,38,1,38,3,38,1538,8,38, - 1,38,1,38,1,38,3,38,1543,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1550, - 8,38,1,38,1,38,3,38,1554,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,1,38,3,38,1568,8,38,1,38,1,38,1,38,1,38,3,38, - 1574,8,38,1,38,1,38,1,38,1,38,3,38,1580,8,38,1,38,1,38,1,38,3,38, - 1585,8,38,1,39,1,39,1,39,5,39,1590,8,39,10,39,12,39,1593,9,39,1, - 40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1604,8,40,1,41,1, - 41,1,41,1,41,5,41,1610,8,41,10,41,12,41,1613,9,41,1,41,1,41,1,42, - 1,42,1,42,3,42,1620,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, - 1,44,1,44,1,44,1,44,1,44,1,44,3,44,1636,8,44,1,45,1,45,1,45,1,45, - 1,46,1,46,1,46,3,46,1645,8,46,1,46,1,46,1,46,1,46,1,46,5,46,1652, - 8,46,10,46,12,46,1655,9,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1663, - 8,46,1,46,1,46,3,46,1667,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, - 1,46,1,46,1,46,3,46,1679,8,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46, - 1687,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1697,8,46, + 1,5,1,5,1,5,3,5,1120,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,1130, + 8,6,1,7,1,7,1,7,1,7,3,7,1136,8,7,1,7,5,7,1139,8,7,10,7,12,7,1142, + 9,7,1,8,1,8,1,8,1,8,3,8,1148,8,8,1,8,5,8,1151,8,8,10,8,12,8,1154, + 9,8,1,9,1,9,1,9,1,9,3,9,1160,8,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1, + 10,1,10,3,10,1171,8,10,1,10,1,10,1,11,1,11,5,11,1177,8,11,10,11, + 12,11,1180,9,11,1,11,3,11,1183,8,11,1,11,1,11,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,3,11,1195,8,11,1,11,1,11,1,11,1,11,3,11,1201, + 8,11,1,12,1,12,1,12,1,12,3,12,1207,8,12,1,12,1,12,3,12,1211,8,12, + 1,12,1,12,1,12,3,12,1216,8,12,1,12,1,12,3,12,1220,8,12,1,12,1,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1233,8,12,1,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1243,8,12,3,12,1245,8,12, + 1,13,1,13,1,13,1,13,3,13,1251,8,13,1,13,5,13,1254,8,13,10,13,12, + 13,1257,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,3, + 15,1269,8,15,1,15,3,15,1272,8,15,1,15,1,15,1,15,3,15,1277,8,15,1, + 15,5,15,1280,8,15,10,15,12,15,1283,9,15,1,16,1,16,1,17,1,17,1,17, + 1,17,1,17,1,17,3,17,1293,8,17,1,18,1,18,3,18,1297,8,18,1,18,1,18, + 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1309,8,19,1,20,1,20, + 3,20,1313,8,20,1,20,3,20,1316,8,20,1,20,1,20,3,20,1320,8,20,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1332,8,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21, + 1,21,1,21,3,21,1350,8,21,1,22,1,22,1,22,5,22,1355,8,22,10,22,12, + 22,1358,9,22,1,23,1,23,1,23,5,23,1363,8,23,10,23,12,23,1366,9,23, + 1,24,1,24,3,24,1370,8,24,1,25,1,25,1,25,1,25,1,25,3,25,1377,8,25, + 1,26,1,26,1,26,1,26,1,26,1,26,3,26,1385,8,26,1,27,1,27,1,27,1,27, + 3,27,1391,8,27,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1399,8,28,1,28, + 1,28,1,28,1,28,1,28,1,28,3,28,1407,8,28,1,29,1,29,3,29,1411,8,29, + 1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31, + 1425,8,31,1,32,1,32,1,32,3,32,1430,8,32,1,33,1,33,1,33,3,33,1435, + 8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,1447, + 8,34,1,35,1,35,1,35,1,35,3,35,1453,8,35,1,35,1,35,1,36,1,36,1,37, + 1,37,1,37,1,38,1,38,1,38,3,38,1465,8,38,1,38,1,38,1,38,3,38,1470, + 8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1480,8,38,1,38, + 1,38,1,38,1,38,3,38,1486,8,38,1,38,1,38,1,38,3,38,1491,8,38,1,38, + 1,38,1,38,1,38,1,38,1,38,3,38,1499,8,38,1,38,1,38,1,38,3,38,1504, + 8,38,1,38,1,38,1,38,1,38,1,38,3,38,1511,8,38,1,38,1,38,1,38,3,38, + 1516,8,38,1,38,1,38,1,38,3,38,1521,8,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,3,38,1531,8,38,1,38,1,38,1,38,3,38,1536,8,38,1,38, + 1,38,1,38,3,38,1541,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1548,8,38, + 1,38,1,38,3,38,1552,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,3,38,1566,8,38,1,38,1,38,1,38,1,38,3,38,1572, + 8,38,1,38,1,38,1,38,1,38,3,38,1578,8,38,1,38,1,38,1,38,3,38,1583, + 8,38,1,39,1,39,1,39,5,39,1588,8,39,10,39,12,39,1591,9,39,1,40,1, + 40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1602,8,40,1,41,1,41,1, + 41,1,41,5,41,1608,8,41,10,41,12,41,1611,9,41,1,41,1,41,1,42,1,42, + 1,42,3,42,1618,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44, + 1,44,1,44,1,44,1,44,1,44,3,44,1634,8,44,1,45,1,45,1,45,1,45,1,46, + 1,46,1,46,3,46,1643,8,46,1,46,1,46,1,46,1,46,1,46,5,46,1650,8,46, + 10,46,12,46,1653,9,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1661,8, + 46,1,46,1,46,3,46,1665,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1, + 46,1,46,1,46,3,46,1677,8,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1685, + 8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1695,8,46,1,46, 1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, - 1,46,1,46,1,46,1,46,1,46,3,46,1717,8,46,1,46,1,46,1,46,3,46,1722, - 8,46,1,46,3,46,1725,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1732,8,46, - 1,46,3,46,1735,8,46,1,46,1,46,3,46,1739,8,46,1,46,1,46,3,46,1743, - 8,46,1,46,3,46,1746,8,46,1,46,1,46,1,46,3,46,1751,8,46,1,46,1,46, - 1,46,3,46,1756,8,46,1,46,1,46,3,46,1760,8,46,1,46,1,46,1,46,1,46, - 1,46,1,46,1,46,3,46,1769,8,46,1,46,1,46,1,46,1,46,3,46,1775,8,46, - 1,46,1,46,3,46,1779,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46, - 1788,8,46,1,46,3,46,1791,8,46,1,46,1,46,1,46,1,46,3,46,1797,8,46, - 1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1806,8,46,1,46,1,46,1,46, - 1,46,1,46,1,46,1,46,1,46,4,46,1816,8,46,11,46,12,46,1817,1,46,1, - 46,3,46,1822,8,46,1,46,1,46,3,46,1826,8,46,1,46,1,46,1,46,3,46,1831, - 8,46,1,46,3,46,1834,8,46,1,46,1,46,1,46,1,46,3,46,1840,8,46,4,46, - 1842,8,46,11,46,12,46,1843,1,46,1,46,3,46,1848,8,46,1,46,1,46,1, - 46,1,46,3,46,1854,8,46,1,46,1,46,3,46,1858,8,46,1,46,1,46,1,46,3, - 46,1863,8,46,1,46,1,46,1,46,3,46,1868,8,46,1,46,1,46,3,46,1872,8, - 46,1,46,3,46,1875,8,46,1,47,1,47,1,47,1,47,1,47,3,47,1882,8,47,1, - 48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,5,50,1893,8,50,10,50, - 12,50,1896,9,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52, - 3,52,1908,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, - 5,53,1920,8,53,10,53,12,53,1923,9,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1939,8,53,1,54,1, - 54,1,54,1,54,1,54,1,54,5,54,1947,8,54,10,54,12,54,1950,9,54,1,55, - 1,55,1,55,1,55,3,55,1956,8,55,1,55,1,55,1,55,3,55,1961,8,55,1,55, - 1,55,3,55,1965,8,55,1,55,1,55,1,55,1,55,1,55,3,55,1972,8,55,1,55, - 1,55,1,55,3,55,1977,8,55,1,55,3,55,1980,8,55,3,55,1982,8,55,1,56, - 1,56,1,56,3,56,1987,8,56,1,57,1,57,3,57,1991,8,57,1,57,1,57,3,57, - 1995,8,57,1,57,1,57,3,57,1999,8,57,1,57,1,57,1,57,3,57,2004,8,57, - 1,57,3,57,2007,8,57,1,57,1,57,3,57,2011,8,57,1,57,3,57,2014,8,57, - 1,57,1,57,3,57,2018,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2026, - 8,57,1,57,1,57,1,57,3,57,2031,8,57,1,57,3,57,2034,8,57,1,57,1,57, - 3,57,2038,8,57,1,58,1,58,1,58,1,58,3,58,2044,8,58,1,58,1,58,1,58, - 1,58,1,58,1,58,1,58,3,58,2053,8,58,1,58,1,58,3,58,2057,8,58,1,58, - 1,58,1,58,1,58,5,58,2063,8,58,10,58,12,58,2066,9,58,1,58,1,58,1, - 58,1,58,5,58,2072,8,58,10,58,12,58,2075,9,58,1,58,1,58,3,58,2079, - 8,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,5,59,2089,8,59,10,59, - 12,59,2092,9,59,1,59,1,59,3,59,2096,8,59,1,60,1,60,3,60,2100,8,60, - 1,60,1,60,3,60,2104,8,60,1,60,1,60,1,60,3,60,2109,8,60,1,60,1,60, - 3,60,2113,8,60,1,60,3,60,2116,8,60,1,60,3,60,2119,8,60,1,60,3,60, - 2122,8,60,1,60,3,60,2125,8,60,1,60,3,60,2128,8,60,1,60,1,60,1,60, - 3,60,2133,8,60,1,60,3,60,2136,8,60,1,60,3,60,2139,8,60,1,60,3,60, - 2142,8,60,1,60,3,60,2145,8,60,1,60,3,60,2148,8,60,1,60,1,60,1,60, - 1,60,3,60,2154,8,60,1,60,1,60,3,60,2158,8,60,1,60,3,60,2161,8,60, - 1,60,3,60,2164,8,60,1,60,3,60,2167,8,60,1,60,3,60,2170,8,60,3,60, - 2172,8,60,1,61,1,61,1,61,1,61,1,61,3,61,2179,8,61,1,62,1,62,1,62, - 1,62,5,62,2185,8,62,10,62,12,62,2188,9,62,1,62,1,62,1,63,1,63,1, - 63,5,63,2195,8,63,10,63,12,63,2198,9,63,1,64,1,64,1,64,1,64,1,64, - 5,64,2205,8,64,10,64,12,64,2208,9,64,1,64,1,64,3,64,2212,8,64,1, - 64,3,64,2215,8,64,1,65,1,65,1,65,3,65,2220,8,65,1,65,5,65,2223,8, - 65,10,65,12,65,2226,9,65,1,65,1,65,3,65,2230,8,65,1,65,3,65,2233, - 8,65,1,66,1,66,1,66,3,66,2238,8,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,3,66,2247,8,66,3,66,2249,8,66,1,66,1,66,3,66,2253,8,66,1,66, - 3,66,2256,8,66,1,66,1,66,3,66,2260,8,66,1,66,5,66,2263,8,66,10,66, - 12,66,2266,9,66,1,67,1,67,3,67,2270,8,67,1,67,1,67,3,67,2274,8,67, - 1,67,3,67,2277,8,67,1,67,1,67,3,67,2281,8,67,1,68,3,68,2284,8,68, - 1,68,1,68,1,68,3,68,2289,8,68,1,68,3,68,2292,8,68,1,68,1,68,1,68, - 3,68,2297,8,68,1,68,3,68,2300,8,68,1,68,1,68,3,68,2304,8,68,1,68, - 3,68,2307,8,68,1,68,3,68,2310,8,68,1,68,1,68,1,68,3,68,2315,8,68, - 1,68,3,68,2318,8,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2326,8,68, - 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,4,68,2336,8,68,11,68,12, - 68,2337,1,68,1,68,3,68,2342,8,68,1,68,1,68,1,68,1,68,1,68,3,68,2349, - 8,68,1,68,1,68,1,68,3,68,2354,8,68,1,68,3,68,2357,8,68,1,68,3,68, - 2360,8,68,1,68,3,68,2363,8,68,1,69,1,69,1,69,3,69,2368,8,69,1,70, - 1,70,1,71,1,71,1,71,1,71,1,71,5,71,2377,8,71,10,71,12,71,2380,9, - 71,1,71,1,71,1,71,3,71,2385,8,71,1,71,1,71,3,71,2389,8,71,1,71,3, - 71,2392,8,71,1,71,3,71,2395,8,71,1,71,5,71,2398,8,71,10,71,12,71, - 2401,9,71,1,71,1,71,5,71,2405,8,71,10,71,12,71,2408,9,71,3,71,2410, - 8,71,1,71,1,71,3,71,2414,8,71,1,71,1,71,1,71,1,71,5,71,2420,8,71, - 10,71,12,71,2423,9,71,1,71,1,71,3,71,2427,8,71,1,71,3,71,2430,8, - 71,1,71,3,71,2433,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2440,8,71,1, - 71,5,71,2443,8,71,10,71,12,71,2446,9,71,1,71,1,71,1,71,1,71,1,71, - 1,71,3,71,2454,8,71,1,71,3,71,2457,8,71,1,71,3,71,2460,8,71,1,71, - 5,71,2463,8,71,10,71,12,71,2466,9,71,3,71,2468,8,71,1,72,1,72,1, - 72,1,72,1,73,1,73,1,73,1,73,5,73,2478,8,73,10,73,12,73,2481,9,73, - 1,73,1,73,1,74,1,74,1,74,5,74,2488,8,74,10,74,12,74,2491,9,74,1, - 75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,3,77,2507,8,77,1,78,1,78,3,78,2511,8,78,1,78,1,78,3,78,2515,8, - 78,3,78,2517,8,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1, - 81,1,81,1,81,1,81,1,81,1,81,3,81,2534,8,81,3,81,2536,8,81,1,82,1, - 82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,5,83,2550,8, - 83,10,83,12,83,2553,9,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84, - 3,84,2563,8,84,1,84,3,84,2566,8,84,1,84,3,84,2569,8,84,1,85,1,85, - 1,85,1,86,1,86,1,86,1,86,3,86,2578,8,86,1,87,1,87,1,87,1,87,1,87, - 1,87,1,87,3,87,2587,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,90, - 1,90,1,90,1,90,1,91,1,91,1,91,3,91,2603,8,91,1,91,3,91,2606,8,91, - 1,91,3,91,2609,8,91,1,91,1,91,1,91,1,91,5,91,2615,8,91,10,91,12, - 91,2618,9,91,1,91,3,91,2621,8,91,1,91,1,91,1,92,1,92,1,92,3,92,2628, - 8,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,3,93,2637,8,93,1,93,1,93, - 3,93,2641,8,93,1,93,1,93,1,93,1,93,3,93,2647,8,93,1,94,1,94,3,94, - 2651,8,94,1,94,3,94,2654,8,94,1,94,3,94,2657,8,94,1,94,3,94,2660, - 8,94,1,94,3,94,2663,8,94,1,95,1,95,1,95,1,95,3,95,2669,8,95,1,96, - 1,96,3,96,2673,8,96,1,96,1,96,1,96,3,96,2678,8,96,1,96,1,96,3,96, - 2682,8,96,1,96,3,96,2685,8,96,1,96,3,96,2688,8,96,1,96,3,96,2691, - 8,96,1,96,1,96,1,96,3,96,2696,8,96,1,97,1,97,1,97,1,97,3,97,2702, - 8,97,1,97,1,97,3,97,2706,8,97,1,98,1,98,3,98,2710,8,98,1,98,1,98, - 3,98,2714,8,98,1,98,1,98,4,98,2718,8,98,11,98,12,98,2719,3,98,2722, - 8,98,1,99,1,99,1,99,3,99,2727,8,99,1,99,1,99,4,99,2731,8,99,11,99, - 12,99,2732,1,100,1,100,1,100,1,100,3,100,2739,8,100,1,100,1,100, - 3,100,2743,8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, - 1,100,1,100,1,100,1,100,1,100,3,100,2758,8,100,1,100,1,100,1,100, - 3,100,2763,8,100,1,100,3,100,2766,8,100,3,100,2768,8,100,1,101,3, - 101,2771,8,101,1,101,1,101,3,101,2775,8,101,1,102,1,102,3,102,2779, - 8,102,1,102,3,102,2782,8,102,1,102,3,102,2785,8,102,1,102,1,102, - 1,102,1,102,1,102,1,102,3,102,2793,8,102,1,102,1,102,1,102,1,102, - 3,102,2799,8,102,3,102,2801,8,102,1,103,1,103,1,103,1,103,3,103, - 2807,8,103,1,103,1,103,1,103,3,103,2812,8,103,1,104,1,104,1,104, - 3,104,2817,8,104,1,104,1,104,3,104,2821,8,104,1,104,1,104,1,104, - 1,104,1,104,5,104,2828,8,104,10,104,12,104,2831,9,104,1,105,1,105, - 1,105,1,105,1,105,1,105,5,105,2839,8,105,10,105,12,105,2842,9,105, + 1,46,1,46,1,46,1,46,3,46,1715,8,46,1,46,1,46,1,46,3,46,1720,8,46, + 1,46,3,46,1723,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1730,8,46,1,46, + 3,46,1733,8,46,1,46,1,46,3,46,1737,8,46,1,46,1,46,3,46,1741,8,46, + 1,46,3,46,1744,8,46,1,46,1,46,1,46,3,46,1749,8,46,1,46,1,46,1,46, + 3,46,1754,8,46,1,46,1,46,3,46,1758,8,46,1,46,1,46,1,46,1,46,1,46, + 1,46,1,46,3,46,1767,8,46,1,46,1,46,1,46,1,46,3,46,1773,8,46,1,46, + 1,46,3,46,1777,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1786, + 8,46,1,46,3,46,1789,8,46,1,46,1,46,1,46,1,46,3,46,1795,8,46,1,46, + 1,46,1,46,1,46,1,46,1,46,1,46,3,46,1804,8,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,4,46,1814,8,46,11,46,12,46,1815,1,46,1,46,3, + 46,1820,8,46,1,46,1,46,3,46,1824,8,46,1,46,1,46,1,46,3,46,1829,8, + 46,1,46,3,46,1832,8,46,1,46,1,46,1,46,1,46,3,46,1838,8,46,4,46,1840, + 8,46,11,46,12,46,1841,1,46,1,46,3,46,1846,8,46,1,46,1,46,1,46,1, + 46,3,46,1852,8,46,1,46,1,46,3,46,1856,8,46,1,46,1,46,1,46,3,46,1861, + 8,46,1,46,1,46,1,46,3,46,1866,8,46,1,46,1,46,3,46,1870,8,46,1,46, + 3,46,1873,8,46,1,47,1,47,1,47,1,47,1,47,3,47,1880,8,47,1,48,1,48, + 1,49,1,49,1,49,1,50,1,50,1,50,1,50,5,50,1891,8,50,10,50,12,50,1894, + 9,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,3,52,1906, + 8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,5,53,1918, + 8,53,10,53,12,53,1921,9,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1937,8,53,1,54,1,54,1,54,1, + 54,1,54,1,54,5,54,1945,8,54,10,54,12,54,1948,9,54,1,55,1,55,1,55, + 1,55,3,55,1954,8,55,1,55,1,55,1,55,3,55,1959,8,55,1,55,1,55,3,55, + 1963,8,55,1,55,1,55,1,55,1,55,1,55,3,55,1970,8,55,1,55,1,55,1,55, + 3,55,1975,8,55,1,55,3,55,1978,8,55,3,55,1980,8,55,1,56,1,56,1,56, + 3,56,1985,8,56,1,57,1,57,3,57,1989,8,57,1,57,1,57,3,57,1993,8,57, + 1,57,1,57,3,57,1997,8,57,1,57,1,57,1,57,3,57,2002,8,57,1,57,3,57, + 2005,8,57,1,57,1,57,3,57,2009,8,57,1,57,3,57,2012,8,57,1,57,1,57, + 3,57,2016,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2024,8,57,1,57, + 1,57,1,57,3,57,2029,8,57,1,57,3,57,2032,8,57,1,57,1,57,3,57,2036, + 8,57,1,58,1,58,1,58,1,58,3,58,2042,8,58,1,58,1,58,1,58,1,58,1,58, + 1,58,1,58,3,58,2051,8,58,1,58,1,58,3,58,2055,8,58,1,58,1,58,1,58, + 1,58,5,58,2061,8,58,10,58,12,58,2064,9,58,1,58,1,58,1,58,1,58,5, + 58,2070,8,58,10,58,12,58,2073,9,58,1,58,1,58,3,58,2077,8,58,1,59, + 1,59,1,59,1,59,1,59,1,59,1,59,1,59,5,59,2087,8,59,10,59,12,59,2090, + 9,59,1,59,1,59,3,59,2094,8,59,1,60,1,60,3,60,2098,8,60,1,60,1,60, + 3,60,2102,8,60,1,60,1,60,1,60,3,60,2107,8,60,1,60,1,60,3,60,2111, + 8,60,1,60,3,60,2114,8,60,1,60,3,60,2117,8,60,1,60,3,60,2120,8,60, + 1,60,3,60,2123,8,60,1,60,3,60,2126,8,60,1,60,1,60,1,60,3,60,2131, + 8,60,1,60,3,60,2134,8,60,1,60,3,60,2137,8,60,1,60,3,60,2140,8,60, + 1,60,3,60,2143,8,60,1,60,3,60,2146,8,60,1,60,1,60,1,60,1,60,3,60, + 2152,8,60,1,60,1,60,3,60,2156,8,60,1,60,3,60,2159,8,60,1,60,3,60, + 2162,8,60,1,60,3,60,2165,8,60,1,60,3,60,2168,8,60,3,60,2170,8,60, + 1,61,1,61,1,61,1,61,1,61,3,61,2177,8,61,1,62,1,62,1,62,1,62,5,62, + 2183,8,62,10,62,12,62,2186,9,62,1,62,1,62,1,63,1,63,1,63,5,63,2193, + 8,63,10,63,12,63,2196,9,63,1,64,1,64,3,64,2200,8,64,1,64,1,64,1, + 64,1,64,1,64,1,64,5,64,2208,8,64,10,64,12,64,2211,9,64,3,64,2213, + 8,64,1,65,1,65,1,65,3,65,2218,8,65,1,65,5,65,2221,8,65,10,65,12, + 65,2224,9,65,1,65,1,65,3,65,2228,8,65,1,65,3,65,2231,8,65,1,66,1, + 66,1,66,3,66,2236,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,2245, + 8,66,3,66,2247,8,66,1,66,1,66,3,66,2251,8,66,1,66,3,66,2254,8,66, + 1,66,1,66,3,66,2258,8,66,1,66,5,66,2261,8,66,10,66,12,66,2264,9, + 66,1,67,1,67,3,67,2268,8,67,1,67,1,67,3,67,2272,8,67,1,67,3,67,2275, + 8,67,1,67,1,67,3,67,2279,8,67,1,68,3,68,2282,8,68,1,68,1,68,1,68, + 3,68,2287,8,68,1,68,3,68,2290,8,68,1,68,1,68,1,68,3,68,2295,8,68, + 1,68,3,68,2298,8,68,1,68,1,68,3,68,2302,8,68,1,68,3,68,2305,8,68, + 1,68,3,68,2308,8,68,1,68,1,68,1,68,3,68,2313,8,68,1,68,3,68,2316, + 8,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2324,8,68,1,68,1,68,1,68, + 1,68,1,68,1,68,1,68,1,68,4,68,2334,8,68,11,68,12,68,2335,1,68,1, + 68,3,68,2340,8,68,1,68,1,68,1,68,1,68,1,68,3,68,2347,8,68,1,68,1, + 68,1,68,3,68,2352,8,68,1,68,3,68,2355,8,68,1,68,3,68,2358,8,68,1, + 68,3,68,2361,8,68,1,69,1,69,1,69,3,69,2366,8,69,1,70,1,70,1,71,1, + 71,1,71,1,71,1,71,5,71,2375,8,71,10,71,12,71,2378,9,71,1,71,1,71, + 1,71,3,71,2383,8,71,1,71,1,71,3,71,2387,8,71,1,71,3,71,2390,8,71, + 1,71,3,71,2393,8,71,1,71,5,71,2396,8,71,10,71,12,71,2399,9,71,1, + 71,1,71,5,71,2403,8,71,10,71,12,71,2406,9,71,3,71,2408,8,71,1,71, + 1,71,3,71,2412,8,71,1,71,1,71,1,71,1,71,5,71,2418,8,71,10,71,12, + 71,2421,9,71,1,71,1,71,3,71,2425,8,71,1,71,3,71,2428,8,71,1,71,3, + 71,2431,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2438,8,71,1,71,5,71,2441, + 8,71,10,71,12,71,2444,9,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,2452, + 8,71,1,71,3,71,2455,8,71,1,71,3,71,2458,8,71,1,71,5,71,2461,8,71, + 10,71,12,71,2464,9,71,3,71,2466,8,71,1,72,1,72,1,72,1,72,1,73,1, + 73,1,73,1,73,5,73,2476,8,73,10,73,12,73,2479,9,73,1,73,1,73,1,74, + 1,74,1,74,5,74,2486,8,74,10,74,12,74,2489,9,74,1,75,1,75,1,75,1, + 76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,3,77,2505,8, + 77,1,78,1,78,3,78,2509,8,78,1,78,1,78,3,78,2513,8,78,3,78,2515,8, + 78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1, + 81,1,81,1,81,3,81,2532,8,81,3,81,2534,8,81,1,82,1,82,1,82,1,82,1, + 82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,5,83,2548,8,83,10,83,12,83, + 2551,9,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,3,84,2561,8,84, + 1,84,3,84,2564,8,84,1,84,3,84,2567,8,84,1,85,1,85,1,85,1,86,1,86, + 1,86,1,86,3,86,2576,8,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,3,87, + 2585,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90, + 1,91,1,91,1,91,3,91,2601,8,91,1,91,3,91,2604,8,91,1,91,3,91,2607, + 8,91,1,91,1,91,1,91,1,91,5,91,2613,8,91,10,91,12,91,2616,9,91,1, + 91,3,91,2619,8,91,1,91,1,91,1,92,1,92,1,92,3,92,2626,8,92,1,92,1, + 92,1,92,1,92,1,92,1,93,1,93,3,93,2635,8,93,1,93,1,93,3,93,2639,8, + 93,1,93,1,93,1,93,1,93,3,93,2645,8,93,1,94,1,94,3,94,2649,8,94,1, + 94,3,94,2652,8,94,1,94,3,94,2655,8,94,1,94,3,94,2658,8,94,1,94,3, + 94,2661,8,94,1,95,1,95,1,95,1,95,3,95,2667,8,95,1,96,1,96,3,96,2671, + 8,96,1,96,1,96,1,96,3,96,2676,8,96,1,96,1,96,3,96,2680,8,96,1,96, + 3,96,2683,8,96,1,96,3,96,2686,8,96,1,96,3,96,2689,8,96,1,96,1,96, + 1,96,3,96,2694,8,96,1,97,1,97,1,97,1,97,3,97,2700,8,97,1,97,1,97, + 3,97,2704,8,97,1,98,1,98,3,98,2708,8,98,1,98,1,98,3,98,2712,8,98, + 1,98,1,98,4,98,2716,8,98,11,98,12,98,2717,3,98,2720,8,98,1,99,1, + 99,1,99,3,99,2725,8,99,1,99,1,99,4,99,2729,8,99,11,99,12,99,2730, + 1,100,1,100,1,100,1,100,3,100,2737,8,100,1,100,1,100,3,100,2741, + 8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,3,100,2756,8,100,1,100,1,100,1,100,3,100,2761, + 8,100,1,100,3,100,2764,8,100,3,100,2766,8,100,1,101,3,101,2769,8, + 101,1,101,1,101,3,101,2773,8,101,1,102,1,102,3,102,2777,8,102,1, + 102,3,102,2780,8,102,1,102,3,102,2783,8,102,1,102,1,102,1,102,1, + 102,1,102,1,102,3,102,2791,8,102,1,102,1,102,1,102,1,102,3,102,2797, + 8,102,3,102,2799,8,102,1,103,1,103,1,103,1,103,3,103,2805,8,103, + 1,103,1,103,1,103,3,103,2810,8,103,1,104,1,104,1,104,3,104,2815, + 8,104,1,104,1,104,3,104,2819,8,104,1,104,1,104,1,104,1,104,1,104, + 5,104,2826,8,104,10,104,12,104,2829,9,104,1,105,1,105,1,105,1,105, + 1,105,1,105,5,105,2837,8,105,10,105,12,105,2840,9,105,1,106,1,106, 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, - 1,106,1,106,1,106,3,106,2880,8,106,1,107,1,107,1,107,1,107,1,107, - 1,107,4,107,2888,8,107,11,107,12,107,2889,3,107,2892,8,107,1,107, - 3,107,2895,8,107,1,108,1,108,3,108,2899,8,108,1,108,1,108,3,108, - 2903,8,108,1,109,1,109,1,109,1,109,1,109,1,109,4,109,2911,8,109, - 11,109,12,109,2912,3,109,2915,8,109,1,109,1,109,4,109,2919,8,109, - 11,109,12,109,2920,3,109,2923,8,109,1,110,1,110,1,110,1,110,1,110, - 5,110,2930,8,110,10,110,12,110,2933,9,110,1,110,1,110,1,111,1,111, - 1,111,1,111,1,111,5,111,2942,8,111,10,111,12,111,2945,9,111,1,111, - 1,111,1,112,1,112,1,112,1,113,1,113,1,113,1,114,1,114,1,114,3,114, - 2958,8,114,1,114,1,114,1,114,3,114,2963,8,114,1,114,3,114,2966,8, - 114,1,114,1,114,1,114,1,114,1,114,3,114,2973,8,114,1,115,1,115,1, - 115,3,115,2978,8,115,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2986, - 8,116,3,116,2988,8,116,1,117,1,117,1,117,1,117,3,117,2994,8,117, - 1,117,1,117,1,117,3,117,2999,8,117,1,117,1,117,3,117,3003,8,117, - 1,117,1,117,1,117,3,117,3008,8,117,1,117,1,117,1,117,1,117,3,117, - 3014,8,117,1,117,1,117,1,117,1,117,1,117,3,117,3021,8,117,1,117, - 1,117,1,117,1,117,3,117,3027,8,117,3,117,3029,8,117,1,118,1,118, - 1,118,1,118,1,118,1,118,1,118,3,118,3038,8,118,1,118,1,118,1,118, - 1,118,3,118,3044,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, - 3052,8,118,1,119,1,119,1,119,1,119,3,119,3058,8,119,1,119,1,119, - 1,119,3,119,3063,8,119,1,119,1,119,1,119,3,119,3068,8,119,1,120, - 1,120,1,120,1,120,1,120,1,120,3,120,3076,8,120,1,120,1,120,1,120, - 1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121, - 3091,8,121,3,121,3093,8,121,1,121,1,121,3,121,3097,8,121,1,121,1, - 121,3,121,3101,8,121,1,121,3,121,3104,8,121,1,121,3,121,3107,8,121, - 1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,3116,8,122,1,122, - 3,122,3119,8,122,1,122,3,122,3122,8,122,1,123,1,123,1,123,1,123, - 3,123,3128,8,123,1,123,1,123,5,123,3132,8,123,10,123,12,123,3135, - 9,123,1,123,3,123,3138,8,123,1,123,1,123,1,123,1,123,1,123,1,123, - 1,123,1,123,1,123,1,123,3,123,3150,8,123,1,123,1,123,1,123,1,123, - 3,123,3156,8,123,1,124,3,124,3159,8,124,1,124,1,124,1,124,3,124, - 3164,8,124,1,124,1,124,3,124,3168,8,124,1,124,1,124,1,124,1,124, - 1,124,3,124,3175,8,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, - 1,124,3,124,3185,8,124,3,124,3187,8,124,1,125,1,125,1,125,1,125, - 1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,128,1,128,3,128,3211,8,128,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3223, - 8,128,1,128,4,128,3226,8,128,11,128,12,128,3227,3,128,3230,8,128, - 1,128,1,128,3,128,3234,8,128,1,128,3,128,3237,8,128,1,128,3,128, - 3240,8,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128, - 3250,8,128,1,128,3,128,3253,8,128,1,128,1,128,1,128,1,128,1,128, - 1,128,1,128,1,128,3,128,3263,8,128,1,128,5,128,3266,8,128,10,128, - 12,128,3269,9,128,1,128,1,128,3,128,3273,8,128,1,128,3,128,3276, - 8,128,1,128,3,128,3279,8,128,1,128,1,128,1,128,1,128,1,128,1,128, - 3,128,3287,8,128,1,129,1,129,1,129,1,129,3,129,3293,8,129,1,130, - 1,130,1,130,5,130,3298,8,130,10,130,12,130,3301,9,130,1,131,1,131, - 1,131,1,131,1,131,3,131,3308,8,131,1,131,3,131,3311,8,131,1,132, - 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,3,133,3322,8,133, - 1,134,1,134,3,134,3326,8,134,1,134,1,134,5,134,3330,8,134,10,134, - 12,134,3333,9,134,1,135,1,135,1,135,1,135,3,135,3339,8,135,1,136, - 3,136,3342,8,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136, - 3351,8,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137, - 1,137,5,137,3363,8,137,10,137,12,137,3366,9,137,3,137,3368,8,137, - 1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,5,138, - 3380,8,138,10,138,12,138,3383,9,138,1,138,1,138,1,139,1,139,1,139, - 1,139,1,139,1,139,3,139,3393,8,139,1,139,3,139,3396,8,139,1,140, - 1,140,1,140,1,140,1,140,1,140,1,140,1,140,5,140,3406,8,140,10,140, - 12,140,3409,9,140,1,141,1,141,3,141,3413,8,141,1,141,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,5,141,3424,8,141,10,141,12,141, - 3427,9,141,1,141,1,141,3,141,3431,8,141,1,141,1,141,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,3444,8,141,1,141, - 1,141,1,141,1,141,1,141,5,141,3451,8,141,10,141,12,141,3454,9,141, - 3,141,3456,8,141,1,141,3,141,3459,8,141,1,141,1,141,1,141,1,141, - 1,141,3,141,3466,8,141,1,141,3,141,3469,8,141,1,141,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,3481,8,141,1,141, - 1,141,1,141,1,141,3,141,3487,8,141,3,141,3489,8,141,1,142,1,142, - 1,142,1,142,5,142,3495,8,142,10,142,12,142,3498,9,142,1,142,1,142, - 1,143,1,143,1,143,3,143,3505,8,143,1,144,1,144,1,144,1,144,1,144, - 1,144,3,144,3513,8,144,1,145,1,145,1,145,1,145,1,146,1,146,1,146, - 1,146,1,146,1,146,3,146,3525,8,146,1,146,1,146,1,146,3,146,3530, - 8,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,3,146, - 3541,8,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148, - 3,148,3552,8,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,3560, - 8,148,1,148,1,148,1,148,1,148,5,148,3566,8,148,10,148,12,148,3569, - 9,148,1,149,1,149,1,149,1,149,3,149,3575,8,149,1,149,1,149,1,149, - 1,149,1,149,3,149,3582,8,149,3,149,3584,8,149,1,149,3,149,3587,8, - 149,1,149,1,149,1,149,3,149,3592,8,149,1,149,1,149,1,149,3,149,3597, - 8,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151, - 1,151,1,151,1,151,1,151,1,151,5,151,3614,8,151,10,151,12,151,3617, - 9,151,1,151,1,151,1,151,1,151,5,151,3623,8,151,10,151,12,151,3626, - 9,151,3,151,3628,8,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153, - 1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154,3655,8,154,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,3,154,3664,8,154,1,154,3,154, - 3667,8,154,1,154,1,154,3,154,3671,8,154,1,154,1,154,3,154,3675,8, - 154,1,154,1,154,3,154,3679,8,154,1,154,1,154,1,154,5,154,3684,8, - 154,10,154,12,154,3687,9,154,1,154,3,154,3690,8,154,1,154,1,154, - 3,154,3694,8,154,1,154,1,154,3,154,3698,8,154,1,154,1,154,3,154, - 3702,8,154,1,154,1,154,1,154,3,154,3707,8,154,1,154,1,154,3,154, - 3711,8,154,1,154,1,154,1,154,3,154,3716,8,154,1,154,1,154,1,154, - 1,154,3,154,3722,8,154,1,154,1,154,1,154,3,154,3727,8,154,1,154, - 1,154,1,154,5,154,3732,8,154,10,154,12,154,3735,9,154,1,154,3,154, - 3738,8,154,1,154,1,154,1,154,1,154,3,154,3744,8,154,1,154,1,154, - 3,154,3748,8,154,1,154,1,154,1,154,3,154,3753,8,154,1,154,1,154, - 1,154,1,154,1,154,1,154,3,154,3761,8,154,1,154,1,154,1,154,1,154, - 3,154,3767,8,154,1,154,1,154,1,154,3,154,3772,8,154,1,154,1,154, - 1,154,1,154,1,154,3,154,3779,8,154,1,154,1,154,1,154,3,154,3784, - 8,154,1,154,1,154,3,154,3788,8,154,1,154,1,154,1,154,3,154,3793, - 8,154,1,154,1,154,1,154,1,154,3,154,3799,8,154,1,154,1,154,1,154, - 1,154,1,154,3,154,3806,8,154,1,154,1,154,1,154,3,154,3811,8,154, - 1,154,1,154,1,154,1,154,1,154,3,154,3818,8,154,1,154,1,154,1,154, - 3,154,3823,8,154,1,154,1,154,1,154,1,154,1,154,3,154,3830,8,154, - 1,154,1,154,3,154,3834,8,154,1,154,1,154,1,154,1,154,5,154,3840, - 8,154,10,154,12,154,3843,9,154,1,154,3,154,3846,8,154,3,154,3848, - 8,154,1,155,3,155,3851,8,155,1,155,1,155,1,155,3,155,3856,8,155, - 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,3,155,3866,8,155, + 1,106,3,106,2878,8,106,1,107,1,107,1,107,1,107,1,107,1,107,4,107, + 2886,8,107,11,107,12,107,2887,3,107,2890,8,107,1,107,3,107,2893, + 8,107,1,108,1,108,3,108,2897,8,108,1,108,1,108,3,108,2901,8,108, + 1,109,1,109,1,109,1,109,1,109,1,109,4,109,2909,8,109,11,109,12,109, + 2910,3,109,2913,8,109,1,109,1,109,4,109,2917,8,109,11,109,12,109, + 2918,3,109,2921,8,109,1,110,1,110,1,110,1,110,1,110,5,110,2928,8, + 110,10,110,12,110,2931,9,110,1,110,1,110,1,111,1,111,1,111,1,111, + 1,111,5,111,2940,8,111,10,111,12,111,2943,9,111,1,111,1,111,1,112, + 1,112,1,112,1,113,1,113,1,113,1,114,1,114,1,114,3,114,2956,8,114, + 1,114,1,114,1,114,3,114,2961,8,114,1,114,3,114,2964,8,114,1,114, + 1,114,1,114,1,114,1,114,3,114,2971,8,114,1,115,1,115,1,115,3,115, + 2976,8,115,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2984,8,116, + 3,116,2986,8,116,1,117,1,117,1,117,1,117,3,117,2992,8,117,1,117, + 1,117,1,117,3,117,2997,8,117,1,117,1,117,3,117,3001,8,117,1,117, + 1,117,1,117,3,117,3006,8,117,1,117,1,117,1,117,1,117,3,117,3012, + 8,117,1,117,1,117,1,117,1,117,1,117,3,117,3019,8,117,1,117,1,117, + 1,117,1,117,3,117,3025,8,117,3,117,3027,8,117,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,3,118,3036,8,118,1,118,1,118,1,118,1,118, + 3,118,3042,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118,3050, + 8,118,1,119,1,119,1,119,1,119,3,119,3056,8,119,1,119,1,119,1,119, + 3,119,3061,8,119,1,119,1,119,1,119,3,119,3066,8,119,1,120,1,120, + 1,120,1,120,1,120,1,120,3,120,3074,8,120,1,120,1,120,1,120,1,120, + 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121,3089, + 8,121,3,121,3091,8,121,1,121,1,121,3,121,3095,8,121,1,121,1,121, + 3,121,3099,8,121,1,121,3,121,3102,8,121,1,121,3,121,3105,8,121,1, + 122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,3114,8,122,1,122,3, + 122,3117,8,122,1,122,3,122,3120,8,122,1,123,1,123,1,123,1,123,3, + 123,3126,8,123,1,123,1,123,5,123,3130,8,123,10,123,12,123,3133,9, + 123,1,123,3,123,3136,8,123,1,123,1,123,1,123,1,123,1,123,1,123,1, + 123,1,123,1,123,1,123,3,123,3148,8,123,1,123,1,123,1,123,1,123,3, + 123,3154,8,123,1,124,3,124,3157,8,124,1,124,1,124,1,124,3,124,3162, + 8,124,1,124,1,124,3,124,3166,8,124,1,124,1,124,1,124,1,124,1,124, + 3,124,3173,8,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, + 3,124,3183,8,124,3,124,3185,8,124,1,125,1,125,1,125,1,125,1,125, + 1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,128,1,128,3,128,3209,8,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3221,8,128, + 1,128,4,128,3224,8,128,11,128,12,128,3225,3,128,3228,8,128,1,128, + 1,128,3,128,3232,8,128,1,128,3,128,3235,8,128,1,128,3,128,3238,8, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3248,8, + 128,1,128,3,128,3251,8,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3261,8,128,1,128,5,128,3264,8,128,10,128,12,128, + 3267,9,128,1,128,1,128,3,128,3271,8,128,1,128,3,128,3274,8,128,1, + 128,3,128,3277,8,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3285, + 8,128,1,129,1,129,1,129,1,129,3,129,3291,8,129,1,130,1,130,1,130, + 5,130,3296,8,130,10,130,12,130,3299,9,130,1,131,1,131,1,131,1,131, + 1,131,3,131,3306,8,131,1,131,3,131,3309,8,131,1,132,1,132,1,132, + 1,132,1,132,1,133,1,133,1,133,1,133,3,133,3320,8,133,1,134,1,134, + 3,134,3324,8,134,1,134,1,134,5,134,3328,8,134,10,134,12,134,3331, + 9,134,1,135,1,135,1,135,1,135,3,135,3337,8,135,1,136,3,136,3340, + 8,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136,3349,8,136, + 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,5,137, + 3361,8,137,10,137,12,137,3364,9,137,3,137,3366,8,137,1,137,1,137, + 1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,5,138,3378,8,138, + 10,138,12,138,3381,9,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139, + 1,139,3,139,3391,8,139,1,139,3,139,3394,8,139,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,5,140,3404,8,140,10,140,12,140,3407, + 9,140,1,141,1,141,3,141,3411,8,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,5,141,3422,8,141,10,141,12,141,3425,9,141, + 1,141,1,141,3,141,3429,8,141,1,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,3,141,3442,8,141,1,141,1,141,1,141, + 1,141,1,141,5,141,3449,8,141,10,141,12,141,3452,9,141,3,141,3454, + 8,141,1,141,3,141,3457,8,141,1,141,1,141,1,141,1,141,1,141,3,141, + 3464,8,141,1,141,3,141,3467,8,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,3,141,3479,8,141,1,141,1,141,1,141, + 1,141,3,141,3485,8,141,3,141,3487,8,141,1,142,1,142,1,142,1,142, + 5,142,3493,8,142,10,142,12,142,3496,9,142,1,142,1,142,1,143,1,143, + 1,143,3,143,3503,8,143,1,144,1,144,1,144,1,144,1,144,1,144,3,144, + 3511,8,144,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146, + 1,146,3,146,3523,8,146,1,146,1,146,1,146,3,146,3528,8,146,1,146, + 1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,3,146,3539,8,146, + 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,3,148,3550, + 8,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,3558,8,148,1,148, + 1,148,1,148,1,148,5,148,3564,8,148,10,148,12,148,3567,9,148,1,149, + 1,149,1,149,1,149,3,149,3573,8,149,1,149,1,149,1,149,1,149,1,149, + 3,149,3580,8,149,3,149,3582,8,149,1,149,3,149,3585,8,149,1,149,1, + 149,1,149,3,149,3590,8,149,1,149,1,149,1,149,3,149,3595,8,149,1, + 150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,5,151,3612,8,151,10,151,12,151,3615,9,151, + 1,151,1,151,1,151,1,151,5,151,3621,8,151,10,151,12,151,3624,9,151, + 3,151,3626,8,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153, + 1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,3,154,3653,8,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,3,154,3662,8,154,1,154,3,154,3665, + 8,154,1,154,1,154,3,154,3669,8,154,1,154,1,154,3,154,3673,8,154, + 1,154,1,154,3,154,3677,8,154,1,154,1,154,1,154,5,154,3682,8,154, + 10,154,12,154,3685,9,154,1,154,3,154,3688,8,154,1,154,1,154,3,154, + 3692,8,154,1,154,1,154,3,154,3696,8,154,1,154,1,154,3,154,3700,8, + 154,1,154,1,154,1,154,3,154,3705,8,154,1,154,1,154,3,154,3709,8, + 154,1,154,1,154,1,154,3,154,3714,8,154,1,154,1,154,1,154,1,154,3, + 154,3720,8,154,1,154,1,154,1,154,3,154,3725,8,154,1,154,1,154,1, + 154,5,154,3730,8,154,10,154,12,154,3733,9,154,1,154,3,154,3736,8, + 154,1,154,1,154,1,154,1,154,3,154,3742,8,154,1,154,1,154,3,154,3746, + 8,154,1,154,1,154,1,154,3,154,3751,8,154,1,154,1,154,1,154,1,154, + 1,154,1,154,3,154,3759,8,154,1,154,1,154,1,154,1,154,3,154,3765, + 8,154,1,154,1,154,1,154,3,154,3770,8,154,1,154,1,154,1,154,1,154, + 1,154,3,154,3777,8,154,1,154,1,154,1,154,3,154,3782,8,154,1,154, + 1,154,3,154,3786,8,154,1,154,1,154,1,154,3,154,3791,8,154,1,154, + 1,154,1,154,1,154,3,154,3797,8,154,1,154,1,154,1,154,1,154,1,154, + 3,154,3804,8,154,1,154,1,154,1,154,3,154,3809,8,154,1,154,1,154, + 1,154,1,154,1,154,3,154,3816,8,154,1,154,1,154,1,154,3,154,3821, + 8,154,1,154,1,154,1,154,1,154,1,154,3,154,3828,8,154,1,154,1,154, + 3,154,3832,8,154,1,154,1,154,1,154,1,154,5,154,3838,8,154,10,154, + 12,154,3841,9,154,1,154,3,154,3844,8,154,3,154,3846,8,154,1,155, + 3,155,3849,8,155,1,155,1,155,1,155,3,155,3854,8,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,3,155,3864,8,155,1,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,3,156,3881,8,156,1,156,3,156,3884,8,156,1,156,1,156, - 1,156,1,156,1,156,1,156,3,156,3892,8,156,1,157,1,157,1,157,5,157, - 3897,8,157,10,157,12,157,3900,9,157,1,158,1,158,3,158,3904,8,158, - 1,159,1,159,4,159,3908,8,159,11,159,12,159,3909,1,160,1,160,3,160, - 3914,8,160,1,160,1,160,1,160,5,160,3919,8,160,10,160,12,160,3922, - 9,160,1,160,1,160,3,160,3926,8,160,1,160,3,160,3929,8,160,1,161, - 3,161,3932,8,161,1,161,1,161,3,161,3936,8,161,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,3,162,3945,8,162,1,162,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, - 1,162,3,162,3963,8,162,1,162,3,162,3966,8,162,1,162,1,162,1,162, + 3,156,3879,8,156,1,156,3,156,3882,8,156,1,156,1,156,1,156,1,156, + 1,156,1,156,3,156,3890,8,156,1,157,1,157,1,157,5,157,3895,8,157, + 10,157,12,157,3898,9,157,1,158,1,158,3,158,3902,8,158,1,159,1,159, + 4,159,3906,8,159,11,159,12,159,3907,1,160,1,160,3,160,3912,8,160, + 1,160,1,160,1,160,5,160,3917,8,160,10,160,12,160,3920,9,160,1,160, + 1,160,3,160,3924,8,160,1,160,3,160,3927,8,160,1,161,3,161,3930,8, + 161,1,161,1,161,3,161,3934,8,161,1,162,1,162,1,162,1,162,1,162,1, + 162,1,162,3,162,3943,8,162,1,162,1,162,1,162,1,162,1,162,1,162,1, + 162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,3,162, + 3961,8,162,1,162,3,162,3964,8,162,1,162,1,162,1,162,1,162,1,162, 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,3,162,3998,8,162,1,162,1,162,1,162, - 3,162,4003,8,162,1,163,1,163,1,163,1,163,3,163,4009,8,163,1,163, + 1,162,1,162,1,162,3,162,3996,8,162,1,162,1,162,1,162,3,162,4001, + 8,162,1,163,1,163,1,163,1,163,3,163,4007,8,163,1,163,1,163,1,163, 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163, - 1,163,1,163,1,163,1,163,1,163,1,163,3,163,4029,8,163,1,163,1,163, - 1,163,3,163,4034,8,163,1,164,1,164,1,164,1,165,3,165,4040,8,165, - 1,165,3,165,4043,8,165,1,165,1,165,3,165,4047,8,165,1,165,1,165, - 3,165,4051,8,165,1,165,1,165,1,165,1,165,3,165,4057,8,165,1,165, - 3,165,4060,8,165,1,165,1,165,3,165,4064,8,165,1,165,1,165,3,165, - 4068,8,165,1,165,1,165,1,165,3,165,4073,8,165,1,165,3,165,4076,8, - 165,1,165,3,165,4079,8,165,1,165,3,165,4082,8,165,1,166,1,166,1, - 167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,4095,8, - 167,1,168,1,168,1,168,1,168,3,168,4101,8,168,1,168,1,168,1,168,1, - 168,1,168,1,168,3,168,4109,8,168,1,169,1,169,1,169,5,169,4114,8, - 169,10,169,12,169,4117,9,169,1,169,1,169,3,169,4121,8,169,1,169, - 3,169,4124,8,169,1,169,1,169,1,169,5,169,4129,8,169,10,169,12,169, - 4132,9,169,3,169,4134,8,169,1,170,1,170,1,171,1,171,1,171,1,171, - 3,171,4142,8,171,1,171,3,171,4145,8,171,1,172,1,172,1,172,3,172, - 4150,8,172,1,172,1,172,1,172,1,172,1,172,3,172,4157,8,172,1,172, - 3,172,4160,8,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, - 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,5,172,4178,8,172, - 10,172,12,172,4181,9,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, - 1,172,1,172,3,172,4192,8,172,1,173,3,173,4195,8,173,1,173,1,173, - 1,173,1,173,3,173,4201,8,173,1,173,5,173,4204,8,173,10,173,12,173, - 4207,9,173,1,174,1,174,1,174,1,174,5,174,4213,8,174,10,174,12,174, - 4216,9,174,1,174,1,174,1,174,1,174,1,174,3,174,4223,8,174,1,174, - 1,174,1,174,3,174,4228,8,174,1,175,1,175,1,175,1,175,3,175,4234, - 8,175,1,175,1,175,1,175,5,175,4239,8,175,10,175,12,175,4242,9,175, - 1,175,1,175,1,175,1,175,1,175,3,175,4249,8,175,1,175,3,175,4252, - 8,175,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,5,176, - 4263,8,176,10,176,12,176,4266,9,176,1,176,1,176,1,177,1,177,1,177, - 1,177,1,177,1,177,1,177,1,177,1,177,3,177,4279,8,177,1,177,1,177, - 1,177,1,177,3,177,4285,8,177,1,177,1,177,1,177,1,177,1,177,1,177, - 3,177,4293,8,177,3,177,4295,8,177,1,178,1,178,1,179,1,179,3,179, - 4301,8,179,1,179,1,179,3,179,4305,8,179,1,179,3,179,4308,8,179,1, - 179,3,179,4311,8,179,1,179,1,179,1,179,3,179,4316,8,179,1,179,1, - 179,1,179,3,179,4321,8,179,1,179,1,179,3,179,4325,8,179,1,179,3, - 179,4328,8,179,1,179,3,179,4331,8,179,1,179,3,179,4334,8,179,1,179, - 3,179,4337,8,179,1,180,1,180,1,180,1,180,5,180,4343,8,180,10,180, - 12,180,4346,9,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181, - 3,181,4356,8,181,1,181,3,181,4359,8,181,1,181,3,181,4362,8,181,1, - 181,1,181,1,181,3,181,4367,8,181,1,181,3,181,4370,8,181,1,181,1, - 181,3,181,4374,8,181,1,182,1,182,3,182,4378,8,182,1,182,1,182,1, - 182,1,182,3,182,4384,8,182,1,182,1,182,1,182,1,182,5,182,4390,8, - 182,10,182,12,182,4393,9,182,3,182,4395,8,182,1,182,1,182,1,182, - 1,182,1,182,1,182,1,182,1,182,1,182,5,182,4406,8,182,10,182,12,182, - 4409,9,182,1,182,1,182,3,182,4413,8,182,3,182,4415,8,182,1,182,4, - 182,4418,8,182,11,182,12,182,4419,1,182,1,182,1,182,1,182,1,182, - 3,182,4427,8,182,1,183,1,183,1,183,1,184,1,184,3,184,4434,8,184, - 1,184,1,184,1,185,1,185,1,185,5,185,4441,8,185,10,185,12,185,4444, - 9,185,1,186,1,186,1,186,5,186,4449,8,186,10,186,12,186,4452,9,186, - 1,187,1,187,1,187,1,187,1,187,3,187,4459,8,187,1,188,1,188,1,188, - 5,188,4464,8,188,10,188,12,188,4467,9,188,1,189,1,189,1,189,1,189, - 1,189,3,189,4474,8,189,1,190,1,190,1,190,5,190,4479,8,190,10,190, - 12,190,4482,9,190,1,191,1,191,1,191,1,191,1,191,3,191,4489,8,191, - 1,192,1,192,3,192,4493,8,192,1,192,1,192,3,192,4497,8,192,3,192, - 4499,8,192,1,192,1,192,1,193,1,193,3,193,4505,8,193,1,193,1,193, - 1,193,3,193,4510,8,193,1,194,1,194,3,194,4514,8,194,1,194,1,194, - 1,194,1,194,1,194,3,194,4521,8,194,1,195,1,195,1,195,3,195,4526, - 8,195,1,196,1,196,1,196,3,196,4531,8,196,1,196,1,196,1,196,3,196, - 4536,8,196,3,196,4538,8,196,1,196,1,196,1,197,1,197,1,197,1,198, - 1,198,1,198,3,198,4548,8,198,1,198,1,198,1,198,1,198,1,198,1,198, - 1,198,1,198,3,198,4558,8,198,1,198,1,198,1,198,1,198,1,198,1,198, - 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,3,198,4574,8,198, - 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, - 1,199,1,199,1,199,5,199,4590,8,199,10,199,12,199,4593,9,199,1,199, - 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,3,199,4604,8,199, - 1,199,1,199,1,199,1,199,1,199,3,199,4611,8,199,1,200,1,200,1,200, - 1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,3,202, - 4626,8,202,1,202,4,202,4629,8,202,11,202,12,202,4630,1,202,3,202, - 4634,8,202,1,203,1,203,1,203,3,203,4639,8,203,1,203,1,203,1,203, - 3,203,4644,8,203,1,203,1,203,1,203,3,203,4649,8,203,1,203,3,203, - 4652,8,203,1,203,3,203,4655,8,203,1,204,1,204,1,204,3,204,4660,8, - 204,1,204,1,204,1,204,5,204,4665,8,204,10,204,12,204,4668,9,204, - 1,204,3,204,4671,8,204,1,205,1,205,1,205,3,205,4676,8,205,1,205, - 1,205,1,205,5,205,4681,8,205,10,205,12,205,4684,9,205,1,205,3,205, - 4687,8,205,1,206,1,206,1,206,1,206,3,206,4693,8,206,1,206,1,206, - 1,206,1,206,1,206,1,206,1,206,3,206,4702,8,206,1,206,1,206,1,207, - 1,207,1,207,5,207,4709,8,207,10,207,12,207,4712,9,207,1,207,1,207, - 1,208,1,208,1,208,1,209,1,209,1,209,1,209,4,209,4723,8,209,11,209, - 12,209,4724,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210, - 1,210,1,210,3,210,4738,8,210,1,210,1,210,1,210,1,210,3,210,4744, - 8,210,1,210,1,210,3,210,4748,8,210,3,210,4750,8,210,1,211,1,211, - 1,211,1,212,1,212,3,212,4757,8,212,1,212,1,212,1,212,1,212,1,212, - 1,212,1,212,1,212,1,212,1,212,1,212,3,212,4770,8,212,1,212,1,212, - 1,212,1,212,1,212,3,212,4777,8,212,3,212,4779,8,212,1,212,1,212, - 1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,5,214, - 4793,8,214,10,214,12,214,4796,9,214,1,214,3,214,4799,8,214,1,214, - 1,214,3,214,4803,8,214,1,214,1,214,1,214,3,214,4808,8,214,1,214, - 1,214,1,214,3,214,4813,8,214,1,214,1,214,1,214,3,214,4818,8,214, - 1,214,1,214,1,214,3,214,4823,8,214,1,214,3,214,4826,8,214,1,215, - 1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,3,216,4838, - 8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,163,1,163,1,163,1,163,3,163,4027,8,163,1,163,1,163,1,163,3,163, + 4032,8,163,1,164,1,164,1,164,1,165,3,165,4038,8,165,1,165,3,165, + 4041,8,165,1,165,1,165,3,165,4045,8,165,1,165,1,165,3,165,4049,8, + 165,1,165,1,165,1,165,1,165,3,165,4055,8,165,1,165,3,165,4058,8, + 165,1,165,1,165,3,165,4062,8,165,1,165,1,165,3,165,4066,8,165,1, + 165,1,165,1,165,3,165,4071,8,165,1,165,3,165,4074,8,165,1,165,3, + 165,4077,8,165,1,165,3,165,4080,8,165,1,166,1,166,1,167,1,167,1, + 167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,4093,8,167,1,168,1, + 168,1,168,1,168,3,168,4099,8,168,1,168,1,168,1,168,1,168,1,168,1, + 168,3,168,4107,8,168,1,169,1,169,1,169,5,169,4112,8,169,10,169,12, + 169,4115,9,169,1,169,1,169,3,169,4119,8,169,1,169,3,169,4122,8,169, + 1,169,1,169,1,169,5,169,4127,8,169,10,169,12,169,4130,9,169,3,169, + 4132,8,169,1,170,1,170,1,171,1,171,1,171,1,171,3,171,4140,8,171, + 1,171,3,171,4143,8,171,1,172,1,172,1,172,3,172,4148,8,172,1,172, + 1,172,1,172,1,172,1,172,3,172,4155,8,172,1,172,3,172,4158,8,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,1,172,1,172,1,172,5,172,4176,8,172,10,172,12,172,4179, + 9,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172, + 4190,8,172,1,173,3,173,4193,8,173,1,173,1,173,1,173,1,173,3,173, + 4199,8,173,1,173,5,173,4202,8,173,10,173,12,173,4205,9,173,1,174, + 1,174,1,174,1,174,5,174,4211,8,174,10,174,12,174,4214,9,174,1,174, + 1,174,1,174,1,174,1,174,3,174,4221,8,174,1,174,1,174,1,174,3,174, + 4226,8,174,1,175,1,175,1,175,1,175,3,175,4232,8,175,1,175,1,175, + 1,175,5,175,4237,8,175,10,175,12,175,4240,9,175,1,175,1,175,1,175, + 1,175,1,175,3,175,4247,8,175,1,175,3,175,4250,8,175,1,176,1,176, + 1,176,1,176,1,176,1,176,1,176,1,176,1,176,5,176,4261,8,176,10,176, + 12,176,4264,9,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,177, + 1,177,1,177,1,177,3,177,4277,8,177,1,177,1,177,1,177,1,177,3,177, + 4283,8,177,1,177,1,177,1,177,1,177,1,177,1,177,3,177,4291,8,177, + 3,177,4293,8,177,1,178,1,178,1,179,1,179,3,179,4299,8,179,1,179, + 1,179,3,179,4303,8,179,1,179,3,179,4306,8,179,1,179,3,179,4309,8, + 179,1,179,1,179,1,179,3,179,4314,8,179,1,179,1,179,1,179,3,179,4319, + 8,179,1,179,1,179,3,179,4323,8,179,1,179,3,179,4326,8,179,1,179, + 3,179,4329,8,179,1,179,3,179,4332,8,179,1,179,3,179,4335,8,179,1, + 180,1,180,1,180,1,180,5,180,4341,8,180,10,180,12,180,4344,9,180, + 1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,3,181,4354,8,181, + 1,181,3,181,4357,8,181,1,181,3,181,4360,8,181,1,181,1,181,1,181, + 3,181,4365,8,181,1,181,3,181,4368,8,181,1,181,1,181,3,181,4372,8, + 181,1,182,1,182,3,182,4376,8,182,1,182,1,182,1,182,1,182,3,182,4382, + 8,182,1,182,1,182,1,182,1,182,5,182,4388,8,182,10,182,12,182,4391, + 9,182,3,182,4393,8,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, + 1,182,1,182,5,182,4404,8,182,10,182,12,182,4407,9,182,1,182,1,182, + 3,182,4411,8,182,3,182,4413,8,182,1,182,4,182,4416,8,182,11,182, + 12,182,4417,1,182,1,182,1,182,1,182,1,182,3,182,4425,8,182,1,183, + 1,183,1,183,1,184,1,184,3,184,4432,8,184,1,184,1,184,1,185,1,185, + 1,185,5,185,4439,8,185,10,185,12,185,4442,9,185,1,186,1,186,1,186, + 5,186,4447,8,186,10,186,12,186,4450,9,186,1,187,1,187,1,187,1,187, + 1,187,3,187,4457,8,187,1,188,1,188,1,188,5,188,4462,8,188,10,188, + 12,188,4465,9,188,1,189,1,189,1,189,1,189,1,189,3,189,4472,8,189, + 1,190,1,190,1,190,5,190,4477,8,190,10,190,12,190,4480,9,190,1,191, + 1,191,1,191,1,191,1,191,3,191,4487,8,191,1,192,1,192,3,192,4491, + 8,192,1,192,1,192,3,192,4495,8,192,3,192,4497,8,192,1,192,1,192, + 1,193,1,193,3,193,4503,8,193,1,193,1,193,1,193,3,193,4508,8,193, + 1,194,1,194,3,194,4512,8,194,1,194,1,194,1,194,1,194,1,194,3,194, + 4519,8,194,1,195,1,195,1,195,3,195,4524,8,195,1,196,1,196,1,196, + 3,196,4529,8,196,1,196,1,196,1,196,3,196,4534,8,196,3,196,4536,8, + 196,1,196,1,196,1,197,1,197,1,197,1,198,1,198,1,198,3,198,4546,8, + 198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,3,198,4556,8, + 198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198, + 1,198,1,198,1,198,1,198,3,198,4572,8,198,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,5,199, + 4588,8,199,10,199,12,199,4591,9,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,3,199,4602,8,199,1,199,1,199,1,199,1,199, + 1,199,3,199,4609,8,199,1,200,1,200,1,200,1,201,1,201,1,201,1,202, + 1,202,1,202,1,202,1,202,1,202,1,202,3,202,4624,8,202,1,202,4,202, + 4627,8,202,11,202,12,202,4628,1,202,3,202,4632,8,202,1,203,1,203, + 1,203,3,203,4637,8,203,1,203,1,203,1,203,3,203,4642,8,203,1,203, + 1,203,1,203,3,203,4647,8,203,1,203,3,203,4650,8,203,1,203,3,203, + 4653,8,203,1,204,1,204,1,204,3,204,4658,8,204,1,204,1,204,1,204, + 5,204,4663,8,204,10,204,12,204,4666,9,204,1,204,3,204,4669,8,204, + 1,205,1,205,1,205,3,205,4674,8,205,1,205,1,205,1,205,5,205,4679, + 8,205,10,205,12,205,4682,9,205,1,205,3,205,4685,8,205,1,206,1,206, + 1,206,1,206,3,206,4691,8,206,1,206,1,206,1,206,1,206,1,206,1,206, + 1,206,3,206,4700,8,206,1,206,1,206,1,207,1,207,1,207,5,207,4707, + 8,207,10,207,12,207,4710,9,207,1,207,1,207,1,208,1,208,1,208,1,209, + 1,209,1,209,1,209,4,209,4721,8,209,11,209,12,209,4722,1,210,1,210, + 1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,3,210,4736, + 8,210,1,210,1,210,1,210,1,210,3,210,4742,8,210,1,210,1,210,3,210, + 4746,8,210,3,210,4748,8,210,1,211,1,211,1,211,1,212,1,212,3,212, + 4755,8,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,3,212,4768,8,212,1,212,1,212,1,212,1,212,1,212,3,212, + 4775,8,212,3,212,4777,8,212,1,212,1,212,1,213,1,213,1,213,1,213, + 1,213,1,214,1,214,1,214,1,214,1,214,5,214,4791,8,214,10,214,12,214, + 4794,9,214,1,214,3,214,4797,8,214,1,214,1,214,3,214,4801,8,214,1, + 214,1,214,1,214,3,214,4806,8,214,1,214,1,214,1,214,3,214,4811,8, + 214,1,214,1,214,1,214,3,214,4816,8,214,1,214,1,214,1,214,3,214,4821, + 8,214,1,214,3,214,4824,8,214,1,215,1,215,1,215,1,215,1,215,1,216, + 1,216,1,216,1,216,1,216,3,216,4836,8,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,3,216,4889,8,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,3,216,4898,8,216,1,216,1,216,3,216,4902,8,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,3,216,4911,8,216,1,216,1,216, + 3,216,4915,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, + 4924,8,216,1,216,1,216,3,216,4928,8,216,1,216,1,216,1,216,3,216, + 4933,8,216,1,216,3,216,4936,8,216,1,216,1,216,3,216,4940,8,216,1, + 216,1,216,1,216,3,216,4945,8,216,3,216,4947,8,216,1,216,1,216,1, + 216,1,216,1,216,1,216,1,216,3,216,4956,8,216,1,216,1,216,1,216,3, + 216,4961,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1, + 216,3,216,4972,8,216,1,216,1,216,3,216,4976,8,216,1,216,1,216,1, + 216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, + 4990,8,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4998,8,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4891,8,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4900,8,216,1,216, - 1,216,3,216,4904,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 3,216,4913,8,216,1,216,1,216,3,216,4917,8,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,3,216,4926,8,216,1,216,1,216,3,216,4930, - 8,216,1,216,1,216,1,216,3,216,4935,8,216,1,216,3,216,4938,8,216, - 1,216,1,216,3,216,4942,8,216,1,216,1,216,1,216,3,216,4947,8,216, - 3,216,4949,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, - 4958,8,216,1,216,1,216,1,216,3,216,4963,8,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,3,216,4974,8,216,1,216,1,216, - 3,216,4978,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,3,216,4992,8,216,1,216,1,216,1,216,1,216, - 1,216,1,216,3,216,5000,8,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,5038,8,216, - 3,216,5040,8,216,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217, - 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,3,217,5059, - 8,217,1,217,3,217,5062,8,217,1,217,1,217,1,217,1,217,1,217,1,218, + 1,216,1,216,1,216,3,216,5036,8,216,3,216,5038,8,216,1,217,1,217, + 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217, + 1,217,1,217,1,217,1,217,3,217,5057,8,217,1,217,3,217,5060,8,217, + 1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218, 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218,5089,8,218, - 1,218,1,218,3,218,5093,8,218,1,218,1,218,3,218,5097,8,218,1,218, - 1,218,3,218,5101,8,218,1,218,1,218,3,218,5105,8,218,1,218,3,218, - 5108,8,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,3,218,5123,8,218,1,218,1,218,1,218,1,218, - 1,218,3,218,5130,8,218,1,219,1,219,1,219,1,219,1,219,1,219,1,220, - 1,220,1,220,1,220,5,220,5142,8,220,10,220,12,220,5145,9,220,1,220, - 1,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,3,221,5157, - 8,221,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223, + 1,218,1,218,1,218,3,218,5087,8,218,1,218,1,218,3,218,5091,8,218, + 1,218,1,218,3,218,5095,8,218,1,218,1,218,3,218,5099,8,218,1,218, + 1,218,3,218,5103,8,218,1,218,3,218,5106,8,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218, + 5121,8,218,1,218,1,218,1,218,1,218,1,218,3,218,5128,8,218,1,219, + 1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,5,220,5140, + 8,220,10,220,12,220,5143,9,220,1,220,1,220,1,221,1,221,1,221,1,221, + 1,221,1,221,1,221,1,221,3,221,5155,8,221,1,222,1,222,1,222,1,222, + 1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,3,223,5180,8,223, 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 1,223,1,223,3,223,5182,8,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,3,223,5199,8,223,1,223,1,223, 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 3,223,5201,8,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 1,223,1,223,1,223,1,223,1,223,3,223,5216,8,223,1,223,1,223,1,223, - 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 3,223,5232,8,223,1,223,1,223,1,223,1,223,1,223,3,223,5239,8,223, - 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,3,224,5250, - 8,224,1,224,3,224,5253,8,224,1,225,1,225,1,225,1,225,1,225,1,225, - 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,5,225,5270, - 8,225,10,225,12,225,5273,9,225,3,225,5275,8,225,1,226,1,226,1,226, - 1,226,1,226,1,226,1,226,1,226,1,226,5,226,5286,8,226,10,226,12,226, - 5289,9,226,1,226,3,226,5292,8,226,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,3,227,5312,8,227,1,227,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,5,227,5322,8,227,10,227,12,227,5325,9,227,1,227,3,227, - 5328,8,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 3,223,5214,8,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,3,223,5230,8,223,1,223,1,223, + 1,223,1,223,1,223,3,223,5237,8,223,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,3,224,5248,8,224,1,224,3,224,5251,8,224, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225, + 1,225,1,225,1,225,1,225,5,225,5268,8,225,10,225,12,225,5271,9,225, + 3,225,5273,8,225,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226, + 1,226,5,226,5284,8,226,10,226,12,226,5287,9,226,1,226,3,226,5290, + 8,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,3,227,5310,8,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,5,227,5320,8,227, + 10,227,12,227,5323,9,227,1,227,3,227,5326,8,227,1,227,1,227,1,227, 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, - 3,227,5350,8,227,1,228,1,228,3,228,5354,8,228,1,228,1,228,1,228, - 1,228,1,228,1,228,1,228,1,228,3,228,5364,8,228,1,228,1,228,3,228, - 5368,8,228,1,228,1,228,1,228,1,228,3,228,5374,8,228,1,228,1,228, - 3,228,5378,8,228,5,228,5380,8,228,10,228,12,228,5383,9,228,1,228, - 3,228,5386,8,228,1,229,1,229,1,229,1,229,1,229,3,229,5393,8,229, - 1,230,1,230,1,230,3,230,5398,8,230,1,231,1,231,1,231,1,232,1,232, - 1,232,1,233,1,233,1,233,3,233,5409,8,233,1,234,1,234,3,234,5413, - 8,234,1,234,3,234,5416,8,234,1,234,1,234,1,234,3,234,5421,8,234, - 1,234,1,234,1,234,1,234,3,234,5427,8,234,1,234,1,234,1,234,1,234, - 1,234,1,234,1,234,1,234,1,234,3,234,5438,8,234,1,234,1,234,3,234, - 5442,8,234,1,234,3,234,5445,8,234,1,234,1,234,3,234,5449,8,234,1, - 234,1,234,3,234,5453,8,234,1,234,3,234,5456,8,234,1,235,1,235,1, - 236,1,236,1,236,1,236,1,236,1,236,3,236,5466,8,236,1,236,3,236,5469, - 8,236,1,237,1,237,3,237,5473,8,237,1,237,5,237,5476,8,237,10,237, - 12,237,5479,9,237,1,238,1,238,1,238,3,238,5484,8,238,1,238,3,238, - 5487,8,238,1,238,1,238,1,238,3,238,5492,8,238,1,238,3,238,5495,8, - 238,1,238,1,238,1,238,1,238,1,238,3,238,5502,8,238,3,238,5504,8, - 238,1,238,1,238,1,238,1,238,3,238,5510,8,238,1,238,1,238,3,238,5514, - 8,238,1,239,1,239,1,239,1,240,1,240,1,240,1,240,3,240,5523,8,240, - 1,240,4,240,5526,8,240,11,240,12,240,5527,3,240,5530,8,240,1,241, - 1,241,1,241,1,241,1,241,1,241,1,241,1,241,3,241,5540,8,241,1,241, - 3,241,5543,8,241,1,241,1,241,1,241,3,241,5548,8,241,1,242,1,242, - 1,242,1,242,1,242,1,242,3,242,5556,8,242,1,242,3,242,5559,8,242, - 1,242,4,242,5562,8,242,11,242,12,242,5563,3,242,5566,8,242,3,242, - 5568,8,242,1,243,1,243,1,243,1,243,3,243,5574,8,243,1,244,1,244, - 1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245,1,246,1,246, - 1,246,1,246,3,246,5591,8,246,1,246,1,246,5,246,5595,8,246,10,246, - 12,246,5598,9,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,3,247,5610,8,247,1,247,1,247,1,247,1,247,3,247,5616, - 8,247,1,247,1,247,3,247,5620,8,247,1,247,1,247,1,247,3,247,5625, - 8,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249, + 1,227,1,227,1,227,1,227,1,227,1,227,3,227,5348,8,227,1,228,1,228, + 3,228,5352,8,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228, + 3,228,5362,8,228,1,228,1,228,3,228,5366,8,228,1,228,1,228,1,228, + 1,228,3,228,5372,8,228,1,228,1,228,3,228,5376,8,228,5,228,5378,8, + 228,10,228,12,228,5381,9,228,1,228,3,228,5384,8,228,1,229,1,229, + 1,229,1,229,1,229,3,229,5391,8,229,1,230,1,230,1,230,3,230,5396, + 8,230,1,231,1,231,1,231,1,232,1,232,1,232,1,233,1,233,1,233,3,233, + 5407,8,233,1,234,1,234,3,234,5411,8,234,1,234,3,234,5414,8,234,1, + 234,1,234,1,234,3,234,5419,8,234,1,234,1,234,1,234,1,234,3,234,5425, + 8,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234, + 5436,8,234,1,234,1,234,3,234,5440,8,234,1,234,3,234,5443,8,234,1, + 234,1,234,3,234,5447,8,234,1,234,1,234,3,234,5451,8,234,1,234,3, + 234,5454,8,234,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,3, + 236,5464,8,236,1,236,3,236,5467,8,236,1,237,1,237,3,237,5471,8,237, + 1,237,5,237,5474,8,237,10,237,12,237,5477,9,237,1,238,1,238,1,238, + 3,238,5482,8,238,1,238,3,238,5485,8,238,1,238,1,238,1,238,3,238, + 5490,8,238,1,238,3,238,5493,8,238,1,238,1,238,1,238,1,238,1,238, + 3,238,5500,8,238,3,238,5502,8,238,1,238,1,238,1,238,1,238,3,238, + 5508,8,238,1,238,1,238,3,238,5512,8,238,1,239,1,239,1,239,1,240, + 1,240,1,240,1,240,3,240,5521,8,240,1,240,4,240,5524,8,240,11,240, + 12,240,5525,3,240,5528,8,240,1,241,1,241,1,241,1,241,1,241,1,241, + 1,241,1,241,3,241,5538,8,241,1,241,3,241,5541,8,241,1,241,1,241, + 1,241,3,241,5546,8,241,1,242,1,242,1,242,1,242,1,242,1,242,3,242, + 5554,8,242,1,242,3,242,5557,8,242,1,242,4,242,5560,8,242,11,242, + 12,242,5561,3,242,5564,8,242,3,242,5566,8,242,1,243,1,243,1,243, + 1,243,3,243,5572,8,243,1,244,1,244,1,244,1,244,1,244,1,244,1,245, + 1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,3,246,5589,8,246, + 1,246,1,246,5,246,5593,8,246,10,246,12,246,5596,9,246,1,247,1,247, + 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,3,247,5608,8,247, + 1,247,1,247,1,247,1,247,3,247,5614,8,247,1,247,1,247,3,247,5618, + 8,247,1,247,1,247,1,247,3,247,5623,8,247,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,3,249,5655,8,249,1,249, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, - 1,249,3,249,5670,8,249,1,249,1,249,1,249,3,249,5675,8,249,1,250, - 1,250,3,250,5679,8,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250, - 1,250,1,250,1,251,1,251,3,251,5692,8,251,1,251,1,251,3,251,5696, - 8,251,3,251,5698,8,251,1,251,1,251,1,251,1,251,1,251,5,251,5705, - 8,251,10,251,12,251,5708,9,251,1,251,1,251,1,251,3,251,5713,8,251, - 3,251,5715,8,251,1,252,1,252,3,252,5719,8,252,1,252,3,252,5722,8, - 252,1,252,3,252,5725,8,252,1,252,3,252,5728,8,252,1,252,3,252,5731, - 8,252,3,252,5733,8,252,1,252,3,252,5736,8,252,1,253,1,253,3,253, - 5740,8,253,1,253,1,253,1,253,1,253,5,253,5746,8,253,10,253,12,253, - 5749,9,253,1,253,1,253,3,253,5753,8,253,1,253,3,253,5756,8,253,1, - 254,1,254,1,255,1,255,3,255,5762,8,255,1,255,1,255,3,255,5766,8, - 255,1,256,1,256,3,256,5770,8,256,1,256,1,256,1,256,3,256,5775,8, - 256,3,256,5777,8,256,1,257,1,257,3,257,5781,8,257,1,258,1,258,3, - 258,5785,8,258,1,259,1,259,1,259,5,259,5790,8,259,10,259,12,259, - 5793,9,259,1,260,1,260,1,260,3,260,5798,8,260,1,260,1,260,3,260, - 5802,8,260,3,260,5804,8,260,3,260,5806,8,260,1,260,1,260,1,261,1, - 261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,3,261,5819,8,261,1, - 262,1,262,1,262,1,262,5,262,5825,8,262,10,262,12,262,5828,9,262, - 1,262,1,262,1,263,1,263,1,263,3,263,5835,8,263,1,263,1,263,1,263, - 1,264,1,264,1,264,1,264,5,264,5844,8,264,10,264,12,264,5847,9,264, - 1,264,1,264,1,265,1,265,1,265,1,265,3,265,5855,8,265,1,266,1,266, - 1,266,3,266,5860,8,266,1,266,1,266,3,266,5864,8,266,1,266,1,266, - 3,266,5868,8,266,1,266,1,266,1,266,1,266,1,266,3,266,5875,8,266, - 1,266,3,266,5878,8,266,3,266,5880,8,266,1,267,1,267,1,267,1,267, - 1,268,1,268,3,268,5888,8,268,1,268,1,268,3,268,5892,8,268,1,269, - 3,269,5895,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5902,8,269, - 1,269,1,269,1,269,1,269,1,269,3,269,5909,8,269,1,269,1,269,1,269, - 3,269,5914,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5921,8,269, - 1,269,3,269,5924,8,269,3,269,5926,8,269,1,269,3,269,5929,8,269,1, - 270,1,270,1,270,1,270,3,270,5935,8,270,1,270,1,270,1,270,3,270,5940, - 8,270,1,270,1,270,3,270,5944,8,270,1,271,1,271,1,271,5,271,5949, - 8,271,10,271,12,271,5952,9,271,1,272,1,272,1,272,1,273,1,273,1,273, - 1,274,3,274,5961,8,274,1,274,1,274,1,274,1,274,1,274,3,274,5968, - 8,274,1,274,3,274,5971,8,274,1,274,3,274,5974,8,274,1,275,1,275, - 3,275,5978,8,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, - 1,275,3,275,5989,8,275,1,275,3,275,5992,8,275,1,275,3,275,5995,8, - 275,1,275,3,275,5998,8,275,1,276,3,276,6001,8,276,1,276,1,276,1, - 276,1,276,1,276,3,276,6008,8,276,1,276,3,276,6011,8,276,1,276,3, - 276,6014,8,276,1,277,1,277,1,277,5,277,6019,8,277,10,277,12,277, - 6022,9,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, - 3,278,6033,8,278,1,278,1,278,1,278,1,278,1,278,3,278,6040,8,278, - 3,278,6042,8,278,1,279,1,279,1,279,3,279,6047,8,279,1,279,1,279, - 1,279,5,279,6052,8,279,10,279,12,279,6055,9,279,1,279,1,279,1,279, - 3,279,6060,8,279,1,279,1,279,1,279,1,280,1,280,3,280,6067,8,280, - 1,281,1,281,1,281,3,281,6072,8,281,1,281,1,281,1,282,3,282,6077, - 8,282,1,282,1,282,3,282,6081,8,282,1,282,1,282,3,282,6085,8,282, - 1,282,1,282,3,282,6089,8,282,3,282,6091,8,282,1,283,1,283,3,283, - 6095,8,283,1,284,1,284,3,284,6099,8,284,1,284,3,284,6102,8,284,1, - 284,3,284,6105,8,284,3,284,6107,8,284,1,284,1,284,1,284,1,284,1, - 284,1,284,1,284,1,284,3,284,6117,8,284,3,284,6119,8,284,1,284,1, - 284,1,284,3,284,6124,8,284,5,284,6126,8,284,10,284,12,284,6129,9, - 284,1,285,1,285,3,285,6133,8,285,1,286,1,286,3,286,6137,8,286,1, - 286,1,286,1,286,5,286,6142,8,286,10,286,12,286,6145,9,286,1,287, - 1,287,3,287,6149,8,287,1,287,1,287,3,287,6153,8,287,1,287,3,287, - 6156,8,287,1,287,1,287,1,287,1,287,3,287,6162,8,287,1,287,3,287, - 6165,8,287,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,289, - 1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289,3,289,6184,8,289, - 1,289,1,289,1,289,1,290,1,290,3,290,6191,8,290,1,290,1,290,3,290, - 6195,8,290,1,291,3,291,6198,8,291,1,291,1,291,3,291,6202,8,291,1, - 291,1,291,3,291,6206,8,291,1,291,3,291,6209,8,291,1,291,3,291,6212, - 8,291,1,292,1,292,1,292,3,292,6217,8,292,1,293,1,293,1,293,1,293, - 1,293,5,293,6224,8,293,10,293,12,293,6227,9,293,1,294,1,294,1,294, - 1,294,3,294,6233,8,294,1,294,1,294,3,294,6237,8,294,1,295,1,295, - 3,295,6241,8,295,1,295,1,295,3,295,6245,8,295,1,295,3,295,6248,8, - 295,3,295,6250,8,295,1,296,1,296,1,296,3,296,6255,8,296,1,296,1, - 296,3,296,6259,8,296,1,297,1,297,1,297,3,297,6264,8,297,1,297,1, - 297,1,297,1,297,3,297,6270,8,297,1,298,1,298,1,298,1,298,1,298,3, - 298,6277,8,298,1,299,1,299,1,299,3,299,6282,8,299,1,300,1,300,1, - 300,3,300,6287,8,300,1,300,1,300,1,301,1,301,1,301,5,301,6294,8, - 301,10,301,12,301,6297,9,301,1,302,1,302,1,302,1,302,3,302,6303, - 8,302,1,302,1,302,1,302,1,302,5,302,6309,8,302,10,302,12,302,6312, - 9,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,3,302,6322, - 8,302,1,303,1,303,1,303,3,303,6327,8,303,1,303,1,303,3,303,6331, - 8,303,1,303,3,303,6334,8,303,1,303,1,303,3,303,6338,8,303,1,303, - 1,303,1,303,3,303,6343,8,303,4,303,6345,8,303,11,303,12,303,6346, - 1,303,1,303,1,303,3,303,6352,8,303,1,304,1,304,1,304,1,304,5,304, - 6358,8,304,10,304,12,304,6361,9,304,1,305,1,305,1,305,1,306,1,306, - 1,306,5,306,6369,8,306,10,306,12,306,6372,9,306,1,307,1,307,3,307, - 6376,8,307,1,307,1,307,3,307,6380,8,307,1,307,3,307,6383,8,307,1, - 307,3,307,6386,8,307,3,307,6388,8,307,1,307,3,307,6391,8,307,1,307, - 3,307,6394,8,307,1,307,3,307,6397,8,307,1,307,1,307,3,307,6401,8, - 307,1,307,1,307,3,307,6405,8,307,1,307,1,307,3,307,6409,8,307,3, - 307,6411,8,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,3,307,6420, - 8,307,1,307,1,307,1,307,3,307,6425,8,307,1,307,1,307,1,307,1,307, - 3,307,6431,8,307,1,307,1,307,3,307,6435,8,307,3,307,6437,8,307,1, - 307,1,307,1,307,1,307,1,307,3,307,6444,8,307,1,307,1,307,1,307,3, - 307,6449,8,307,1,307,1,307,1,307,1,307,5,307,6455,8,307,10,307,12, - 307,6458,9,307,1,308,3,308,6461,8,308,1,308,1,308,1,308,1,308,1, - 308,3,308,6468,8,308,1,309,1,309,1,309,3,309,6473,8,309,1,309,3, - 309,6476,8,309,1,309,1,309,1,309,1,309,3,309,6482,8,309,1,310,1, - 310,3,310,6486,8,310,1,311,1,311,1,311,1,311,3,311,6492,8,311,1, - 312,1,312,1,312,1,312,1,312,1,312,1,312,3,312,6501,8,312,1,312,1, - 312,1,312,1,312,3,312,6507,8,312,3,312,6509,8,312,1,313,1,313,1, - 313,3,313,6514,8,313,1,313,3,313,6517,8,313,1,313,1,313,1,313,1, - 313,1,313,1,313,1,313,3,313,6526,8,313,1,313,1,313,1,313,1,313,1, - 313,3,313,6533,8,313,3,313,6535,8,313,1,314,1,314,1,314,5,314,6540, - 8,314,10,314,12,314,6543,9,314,1,315,1,315,3,315,6547,8,315,1,315, - 3,315,6550,8,315,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316, - 3,316,6560,8,316,1,317,1,317,1,317,1,317,1,317,1,317,1,317,5,317, - 6569,8,317,10,317,12,317,6572,9,317,1,317,1,317,3,317,6576,8,317, - 1,317,1,317,3,317,6580,8,317,1,318,1,318,1,318,1,318,1,318,1,318, - 3,318,6588,8,318,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320, - 3,320,6598,8,320,1,321,1,321,1,321,5,321,6603,8,321,10,321,12,321, - 6606,9,321,1,322,1,322,1,322,3,322,6611,8,322,1,323,1,323,1,323, - 1,323,1,323,1,323,1,323,5,323,6620,8,323,10,323,12,323,6623,9,323, - 1,323,1,323,1,323,3,323,6628,8,323,1,323,1,323,1,323,1,323,1,323, - 1,323,5,323,6636,8,323,10,323,12,323,6639,9,323,1,323,1,323,1,324, - 1,324,1,324,1,324,3,324,6647,8,324,1,324,1,324,3,324,6651,8,324, - 1,324,4,324,6654,8,324,11,324,12,324,6655,3,324,6658,8,324,1,324, - 1,324,3,324,6662,8,324,1,325,1,325,1,325,1,325,1,325,1,325,3,325, - 6670,8,325,1,326,3,326,6673,8,326,1,326,1,326,1,326,3,326,6678,8, - 326,1,326,5,326,6681,8,326,10,326,12,326,6684,9,326,1,326,1,326, - 1,326,1,326,3,326,6690,8,326,3,326,6692,8,326,1,326,1,326,1,326, - 1,326,3,326,6698,8,326,1,327,1,327,3,327,6702,8,327,1,327,3,327, - 6705,8,327,1,327,1,327,1,327,3,327,6710,8,327,1,327,3,327,6713,8, - 327,3,327,6715,8,327,1,328,1,328,1,328,1,328,3,328,6721,8,328,1, - 329,1,329,1,329,1,329,1,329,1,329,1,329,3,329,6730,8,329,1,329,1, - 329,1,329,1,329,3,329,6736,8,329,1,329,3,329,6739,8,329,1,330,1, - 330,1,330,1,330,1,331,1,331,3,331,6747,8,331,1,331,3,331,6750,8, - 331,1,332,1,332,3,332,6754,8,332,1,332,1,332,1,332,1,332,3,332,6760, - 8,332,3,332,6762,8,332,1,332,3,332,6765,8,332,1,333,1,333,3,333, - 6769,8,333,1,333,1,333,1,333,3,333,6774,8,333,1,334,1,334,1,334, - 1,334,1,334,3,334,6781,8,334,1,334,1,334,1,334,1,334,1,334,3,334, - 6788,8,334,3,334,6790,8,334,1,334,1,334,1,334,1,334,3,334,6796,8, - 334,3,334,6798,8,334,1,334,1,334,1,334,3,334,6803,8,334,3,334,6805, - 8,334,1,335,1,335,3,335,6809,8,335,1,336,1,336,1,337,1,337,1,338, - 1,338,1,338,3,338,6818,8,338,1,338,1,338,3,338,6822,8,338,1,338, - 1,338,1,338,1,338,1,338,1,338,5,338,6830,8,338,10,338,12,338,6833, - 9,338,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339, - 1,339,3,339,6846,8,339,1,339,3,339,6849,8,339,1,339,1,339,1,339, - 1,339,1,339,1,339,3,339,6857,8,339,1,339,1,339,1,339,1,339,1,339, - 5,339,6864,8,339,10,339,12,339,6867,9,339,1,339,1,339,1,339,3,339, - 6872,8,339,1,339,1,339,1,339,3,339,6877,8,339,1,339,1,339,1,339, - 1,339,1,339,1,339,3,339,6885,8,339,3,339,6887,8,339,1,339,1,339, - 1,339,3,339,6892,8,339,1,339,1,339,3,339,6896,8,339,1,339,1,339, - 1,339,3,339,6901,8,339,1,339,1,339,1,339,3,339,6906,8,339,1,340, - 1,340,1,340,1,340,3,340,6912,8,340,1,340,1,340,1,340,1,340,1,340, - 1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,5,340,6928, - 8,340,10,340,12,340,6931,9,340,1,341,1,341,1,341,1,341,1,341,1,341, - 3,341,6939,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,3,341,6954,8,341,1,341,1,341,1,341, - 3,341,6959,8,341,1,341,3,341,6962,8,341,1,341,1,341,1,341,1,341, - 3,341,6968,8,341,1,341,1,341,1,341,3,341,6973,8,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,6986, - 8,341,1,341,4,341,6989,8,341,11,341,12,341,6990,1,341,1,341,3,341, - 6995,8,341,1,341,1,341,1,341,1,341,1,341,3,341,7002,8,341,1,341, + 1,249,1,249,3,249,5653,8,249,1,249,1,249,1,249,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,3,249,5668,8,249,1,249, + 1,249,1,249,3,249,5673,8,249,1,250,1,250,3,250,5677,8,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251,3,251, + 5690,8,251,1,251,1,251,3,251,5694,8,251,3,251,5696,8,251,1,251,1, + 251,1,251,1,251,1,251,5,251,5703,8,251,10,251,12,251,5706,9,251, + 1,251,1,251,1,251,3,251,5711,8,251,3,251,5713,8,251,1,252,1,252, + 3,252,5717,8,252,1,252,3,252,5720,8,252,1,252,3,252,5723,8,252,1, + 252,3,252,5726,8,252,1,252,3,252,5729,8,252,3,252,5731,8,252,1,252, + 3,252,5734,8,252,1,253,1,253,3,253,5738,8,253,1,253,1,253,1,253, + 1,253,5,253,5744,8,253,10,253,12,253,5747,9,253,1,253,1,253,3,253, + 5751,8,253,1,253,3,253,5754,8,253,1,254,1,254,1,255,1,255,3,255, + 5760,8,255,1,255,1,255,3,255,5764,8,255,1,256,1,256,3,256,5768,8, + 256,1,256,1,256,1,256,3,256,5773,8,256,3,256,5775,8,256,1,257,1, + 257,3,257,5779,8,257,1,258,1,258,3,258,5783,8,258,1,259,1,259,1, + 259,5,259,5788,8,259,10,259,12,259,5791,9,259,1,260,1,260,1,260, + 3,260,5796,8,260,1,260,1,260,3,260,5800,8,260,3,260,5802,8,260,3, + 260,5804,8,260,1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,261,1, + 261,1,261,1,261,3,261,5817,8,261,1,262,1,262,1,262,1,262,5,262,5823, + 8,262,10,262,12,262,5826,9,262,1,262,1,262,1,263,1,263,1,263,3,263, + 5833,8,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,5,264,5842, + 8,264,10,264,12,264,5845,9,264,1,264,1,264,1,265,1,265,1,265,1,265, + 3,265,5853,8,265,1,266,1,266,1,266,3,266,5858,8,266,1,266,1,266, + 3,266,5862,8,266,1,266,1,266,3,266,5866,8,266,1,266,1,266,1,266, + 1,266,1,266,3,266,5873,8,266,1,266,3,266,5876,8,266,3,266,5878,8, + 266,1,267,1,267,1,267,1,267,1,268,1,268,3,268,5886,8,268,1,268,1, + 268,3,268,5890,8,268,1,269,3,269,5893,8,269,1,269,1,269,1,269,1, + 269,1,269,3,269,5900,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5907, + 8,269,1,269,1,269,1,269,3,269,5912,8,269,1,269,1,269,1,269,1,269, + 1,269,3,269,5919,8,269,1,269,3,269,5922,8,269,3,269,5924,8,269,1, + 269,3,269,5927,8,269,1,270,1,270,1,270,1,270,3,270,5933,8,270,1, + 270,1,270,1,270,3,270,5938,8,270,1,270,1,270,3,270,5942,8,270,1, + 271,1,271,1,271,5,271,5947,8,271,10,271,12,271,5950,9,271,1,272, + 1,272,1,272,1,273,1,273,1,273,1,274,3,274,5959,8,274,1,274,1,274, + 1,274,1,274,1,274,3,274,5966,8,274,1,274,3,274,5969,8,274,1,274, + 3,274,5972,8,274,1,275,1,275,3,275,5976,8,275,1,275,1,275,1,275, + 1,275,1,275,1,275,1,275,1,275,1,275,3,275,5987,8,275,1,275,3,275, + 5990,8,275,1,275,3,275,5993,8,275,1,275,3,275,5996,8,275,1,276,3, + 276,5999,8,276,1,276,1,276,1,276,1,276,1,276,3,276,6006,8,276,1, + 276,3,276,6009,8,276,1,276,3,276,6012,8,276,1,277,1,277,1,277,5, + 277,6017,8,277,10,277,12,277,6020,9,277,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,3,278,6031,8,278,1,278,1,278,1,278, + 1,278,1,278,3,278,6038,8,278,3,278,6040,8,278,1,279,1,279,1,279, + 3,279,6045,8,279,1,279,1,279,1,279,5,279,6050,8,279,10,279,12,279, + 6053,9,279,1,279,1,279,1,279,3,279,6058,8,279,1,279,1,279,1,279, + 1,280,1,280,3,280,6065,8,280,1,281,1,281,1,281,3,281,6070,8,281, + 1,281,1,281,1,282,3,282,6075,8,282,1,282,1,282,3,282,6079,8,282, + 1,282,1,282,3,282,6083,8,282,1,282,1,282,3,282,6087,8,282,3,282, + 6089,8,282,1,283,1,283,3,283,6093,8,283,1,284,1,284,3,284,6097,8, + 284,1,284,3,284,6100,8,284,1,284,3,284,6103,8,284,3,284,6105,8,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,3,284,6115,8,284, + 3,284,6117,8,284,1,284,1,284,1,284,3,284,6122,8,284,5,284,6124,8, + 284,10,284,12,284,6127,9,284,1,285,1,285,3,285,6131,8,285,1,286, + 1,286,3,286,6135,8,286,1,286,1,286,1,286,5,286,6140,8,286,10,286, + 12,286,6143,9,286,1,287,1,287,3,287,6147,8,287,1,287,1,287,3,287, + 6151,8,287,1,287,3,287,6154,8,287,1,287,1,287,1,287,1,287,3,287, + 6160,8,287,1,287,3,287,6163,8,287,1,288,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289, + 1,289,3,289,6182,8,289,1,289,1,289,1,289,1,290,1,290,3,290,6189, + 8,290,1,290,1,290,3,290,6193,8,290,1,291,3,291,6196,8,291,1,291, + 1,291,3,291,6200,8,291,1,291,1,291,3,291,6204,8,291,1,291,3,291, + 6207,8,291,1,291,3,291,6210,8,291,1,292,1,292,1,292,3,292,6215,8, + 292,1,293,1,293,1,293,1,293,1,293,5,293,6222,8,293,10,293,12,293, + 6225,9,293,1,294,1,294,1,294,1,294,3,294,6231,8,294,1,294,1,294, + 3,294,6235,8,294,1,295,1,295,3,295,6239,8,295,1,295,1,295,3,295, + 6243,8,295,1,295,3,295,6246,8,295,3,295,6248,8,295,1,296,1,296,1, + 296,3,296,6253,8,296,1,296,1,296,3,296,6257,8,296,1,297,1,297,1, + 297,3,297,6262,8,297,1,297,1,297,1,297,1,297,3,297,6268,8,297,1, + 298,1,298,1,298,1,298,1,298,3,298,6275,8,298,1,299,1,299,1,299,3, + 299,6280,8,299,1,300,1,300,1,300,3,300,6285,8,300,1,300,1,300,1, + 301,1,301,1,301,5,301,6292,8,301,10,301,12,301,6295,9,301,1,302, + 1,302,1,302,1,302,3,302,6301,8,302,1,302,1,302,1,302,1,302,5,302, + 6307,8,302,10,302,12,302,6310,9,302,1,302,1,302,1,302,1,302,1,302, + 1,302,1,302,1,302,3,302,6320,8,302,1,303,1,303,1,303,3,303,6325, + 8,303,1,303,1,303,3,303,6329,8,303,1,303,3,303,6332,8,303,1,303, + 1,303,3,303,6336,8,303,1,303,1,303,1,303,3,303,6341,8,303,4,303, + 6343,8,303,11,303,12,303,6344,1,303,1,303,1,303,3,303,6350,8,303, + 1,304,1,304,1,304,1,304,5,304,6356,8,304,10,304,12,304,6359,9,304, + 1,305,1,305,1,305,1,306,1,306,1,306,5,306,6367,8,306,10,306,12,306, + 6370,9,306,1,307,1,307,3,307,6374,8,307,1,307,1,307,3,307,6378,8, + 307,1,307,3,307,6381,8,307,1,307,3,307,6384,8,307,3,307,6386,8,307, + 1,307,3,307,6389,8,307,1,307,3,307,6392,8,307,1,307,3,307,6395,8, + 307,1,307,1,307,3,307,6399,8,307,1,307,1,307,3,307,6403,8,307,1, + 307,1,307,3,307,6407,8,307,3,307,6409,8,307,1,307,1,307,1,307,1, + 307,1,307,1,307,1,307,3,307,6418,8,307,1,307,1,307,1,307,3,307,6423, + 8,307,1,307,1,307,1,307,1,307,3,307,6429,8,307,1,307,1,307,3,307, + 6433,8,307,3,307,6435,8,307,1,307,1,307,1,307,1,307,1,307,3,307, + 6442,8,307,1,307,1,307,1,307,3,307,6447,8,307,1,307,1,307,1,307, + 1,307,5,307,6453,8,307,10,307,12,307,6456,9,307,1,308,3,308,6459, + 8,308,1,308,1,308,1,308,1,308,1,308,3,308,6466,8,308,1,309,1,309, + 1,309,3,309,6471,8,309,1,309,3,309,6474,8,309,1,309,1,309,1,309, + 1,309,3,309,6480,8,309,1,310,1,310,3,310,6484,8,310,1,311,1,311, + 1,311,1,311,3,311,6490,8,311,1,312,1,312,1,312,1,312,1,312,1,312, + 1,312,3,312,6499,8,312,1,312,1,312,1,312,1,312,3,312,6505,8,312, + 3,312,6507,8,312,1,313,1,313,1,313,3,313,6512,8,313,1,313,3,313, + 6515,8,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,3,313,6524, + 8,313,1,313,1,313,1,313,1,313,1,313,3,313,6531,8,313,3,313,6533, + 8,313,1,314,1,314,1,314,5,314,6538,8,314,10,314,12,314,6541,9,314, + 1,315,1,315,3,315,6545,8,315,1,315,3,315,6548,8,315,1,316,1,316, + 1,316,1,316,1,316,1,316,1,316,1,316,3,316,6558,8,316,1,317,1,317, + 1,317,1,317,1,317,1,317,1,317,5,317,6567,8,317,10,317,12,317,6570, + 9,317,1,317,1,317,3,317,6574,8,317,1,317,1,317,3,317,6578,8,317, + 1,318,1,318,1,318,1,318,1,318,1,318,3,318,6586,8,318,1,319,1,319, + 1,319,1,320,1,320,1,320,1,320,1,320,3,320,6596,8,320,1,321,1,321, + 1,321,5,321,6601,8,321,10,321,12,321,6604,9,321,1,322,1,322,1,322, + 3,322,6609,8,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,5,323, + 6618,8,323,10,323,12,323,6621,9,323,1,323,1,323,1,323,3,323,6626, + 8,323,1,323,1,323,1,323,1,323,1,323,1,323,5,323,6634,8,323,10,323, + 12,323,6637,9,323,1,323,1,323,1,324,1,324,1,324,1,324,3,324,6645, + 8,324,1,324,1,324,3,324,6649,8,324,1,324,4,324,6652,8,324,11,324, + 12,324,6653,3,324,6656,8,324,1,324,1,324,3,324,6660,8,324,1,325, + 1,325,1,325,1,325,1,325,1,325,3,325,6668,8,325,1,326,3,326,6671, + 8,326,1,326,1,326,1,326,3,326,6676,8,326,1,326,5,326,6679,8,326, + 10,326,12,326,6682,9,326,1,326,1,326,1,326,1,326,3,326,6688,8,326, + 3,326,6690,8,326,1,326,1,326,1,326,1,326,3,326,6696,8,326,1,327, + 1,327,3,327,6700,8,327,1,327,3,327,6703,8,327,1,327,1,327,1,327, + 3,327,6708,8,327,1,327,3,327,6711,8,327,3,327,6713,8,327,1,328,1, + 328,1,328,1,328,3,328,6719,8,328,1,329,1,329,1,329,1,329,1,329,1, + 329,1,329,3,329,6728,8,329,1,329,1,329,1,329,1,329,3,329,6734,8, + 329,1,329,3,329,6737,8,329,1,330,1,330,1,330,1,330,1,331,1,331,3, + 331,6745,8,331,1,331,3,331,6748,8,331,1,332,1,332,3,332,6752,8,332, + 1,332,1,332,1,332,1,332,3,332,6758,8,332,3,332,6760,8,332,1,332, + 3,332,6763,8,332,1,333,1,333,3,333,6767,8,333,1,333,1,333,1,333, + 3,333,6772,8,333,1,334,1,334,1,334,1,334,1,334,3,334,6779,8,334, + 1,334,1,334,1,334,1,334,1,334,3,334,6786,8,334,3,334,6788,8,334, + 1,334,1,334,1,334,1,334,3,334,6794,8,334,3,334,6796,8,334,1,334, + 1,334,1,334,3,334,6801,8,334,3,334,6803,8,334,1,335,1,335,3,335, + 6807,8,335,1,336,1,336,1,337,1,337,1,338,1,338,1,338,3,338,6816, + 8,338,1,338,1,338,3,338,6820,8,338,1,338,1,338,1,338,1,338,1,338, + 1,338,5,338,6828,8,338,10,338,12,338,6831,9,338,1,339,1,339,1,339, + 1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6844,8,339, + 1,339,3,339,6847,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339, + 6855,8,339,1,339,1,339,1,339,1,339,1,339,5,339,6862,8,339,10,339, + 12,339,6865,9,339,1,339,1,339,1,339,3,339,6870,8,339,1,339,1,339, + 1,339,3,339,6875,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339, + 6883,8,339,3,339,6885,8,339,1,339,1,339,1,339,3,339,6890,8,339,1, + 339,1,339,3,339,6894,8,339,1,339,1,339,1,339,3,339,6899,8,339,1, + 339,1,339,1,339,3,339,6904,8,339,1,340,1,340,1,340,1,340,3,340,6910, + 8,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340, + 1,340,1,340,1,340,1,340,5,340,6926,8,340,10,340,12,340,6929,9,340, + 1,341,1,341,1,341,1,341,1,341,1,341,3,341,6937,8,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 3,341,6952,8,341,1,341,1,341,1,341,3,341,6957,8,341,1,341,3,341, + 6960,8,341,1,341,1,341,1,341,1,341,3,341,6966,8,341,1,341,1,341, + 1,341,3,341,6971,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,1,341,1,341,3,341,6984,8,341,1,341,4,341,6987,8,341, + 11,341,12,341,6988,1,341,1,341,3,341,6993,8,341,1,341,1,341,1,341, + 1,341,1,341,3,341,7000,8,341,1,341,1,341,1,341,1,341,1,341,1,341, 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,3,341,7021,8,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,7033,8,341,1,341, - 1,341,1,341,3,341,7038,8,341,1,341,1,341,1,341,1,341,1,341,1,341, - 3,341,7046,8,341,5,341,7048,8,341,10,341,12,341,7051,9,341,1,342, - 1,342,1,342,1,342,1,342,1,342,3,342,7059,8,342,1,342,3,342,7062, - 8,342,1,342,1,342,1,342,3,342,7067,8,342,1,342,1,342,1,342,3,342, - 7072,8,342,1,342,1,342,3,342,7076,8,342,1,342,3,342,7079,8,342,1, - 343,1,343,1,343,1,343,1,343,1,343,1,343,3,343,7088,8,343,1,343,1, - 343,1,343,1,343,1,343,1,343,3,343,7096,8,343,1,343,1,343,1,343,3, - 343,7101,8,343,3,343,7103,8,343,1,343,3,343,7106,8,343,1,344,1,344, - 3,344,7110,8,344,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,3,345,7121,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 3,341,7019,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,3,341,7031,8,341,1,341,1,341,1,341,3,341,7036,8,341, + 1,341,1,341,1,341,1,341,1,341,1,341,3,341,7044,8,341,5,341,7046, + 8,341,10,341,12,341,7049,9,341,1,342,1,342,1,342,1,342,1,342,1,342, + 3,342,7057,8,342,1,342,3,342,7060,8,342,1,342,1,342,1,342,3,342, + 7065,8,342,1,342,1,342,1,342,3,342,7070,8,342,1,342,1,342,3,342, + 7074,8,342,1,342,3,342,7077,8,342,1,343,1,343,1,343,1,343,1,343, + 1,343,1,343,3,343,7086,8,343,1,343,1,343,1,343,1,343,1,343,1,343, + 3,343,7094,8,343,1,343,1,343,1,343,3,343,7099,8,343,3,343,7101,8, + 343,1,343,3,343,7104,8,343,1,344,1,344,3,344,7108,8,344,1,345,1, + 345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7119,8,345,1, + 345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7140,8,345, + 1,345,1,345,1,345,1,345,1,345,1,345,3,345,7148,8,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7161, + 8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7171, + 8,345,1,345,1,345,1,345,1,345,3,345,7177,8,345,1,345,1,345,1,345, + 1,345,3,345,7183,8,345,1,345,3,345,7186,8,345,1,345,3,345,7189,8, + 345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,3,345,7142,8,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, - 7150,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,3,345,7163,8,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,3,345,7173,8,345,1,345,1,345,1,345,1,345,3,345,7179, - 8,345,1,345,1,345,1,345,1,345,3,345,7185,8,345,1,345,3,345,7188, - 8,345,1,345,3,345,7191,8,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,3,345,7215,8,345,3,345,7217,8,345,1,345,1,345, 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7217,8,345,3,345, - 7219,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, - 7240,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, - 7250,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,3,345,7263,8,345,1,345,1,345,1,345,3,345,7268,8,345, - 1,345,1,345,3,345,7272,8,345,3,345,7274,8,345,1,345,1,345,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7286,8,345,1,346, - 1,346,1,346,5,346,7291,8,346,10,346,12,346,7294,9,346,1,347,1,347, - 1,347,3,347,7299,8,347,1,348,1,348,1,349,1,349,3,349,7305,8,349, - 1,349,1,349,3,349,7309,8,349,1,350,1,350,1,350,1,351,1,351,1,351, - 1,351,5,351,7318,8,351,10,351,12,351,7321,9,351,1,352,1,352,1,352, - 1,352,1,353,1,353,1,353,3,353,7330,8,353,1,354,1,354,3,354,7334, - 8,354,1,354,1,354,1,354,3,354,7339,8,354,1,354,3,354,7342,8,354, - 1,354,3,354,7345,8,354,1,354,1,354,1,355,1,355,1,355,1,355,1,355, - 3,355,7354,8,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355, - 1,355,3,355,7365,8,355,3,355,7367,8,355,1,356,1,356,3,356,7371,8, - 356,1,356,1,356,1,356,3,356,7376,8,356,1,357,1,357,1,357,1,357,1, - 357,1,357,1,357,3,357,7385,8,357,1,358,1,358,1,358,3,358,7390,8, - 358,1,358,1,358,1,359,1,359,1,360,1,360,3,360,7398,8,360,1,361,1, - 361,1,362,1,362,1,362,1,362,1,362,1,362,3,362,7408,8,362,1,363,1, - 363,1,363,1,363,1,363,1,363,3,363,7416,8,363,1,364,1,364,3,364,7420, - 8,364,1,364,3,364,7423,8,364,1,365,1,365,1,365,5,365,7428,8,365, - 10,365,12,365,7431,9,365,1,366,1,366,1,366,1,366,1,366,3,366,7438, - 8,366,1,367,1,367,3,367,7442,8,367,1,368,1,368,1,368,5,368,7447, - 8,368,10,368,12,368,7450,9,368,1,369,1,369,1,369,1,369,1,369,3,369, - 7457,8,369,1,370,1,370,1,370,1,370,1,370,5,370,7464,8,370,10,370, - 12,370,7467,9,370,3,370,7469,8,370,1,370,1,370,1,371,1,371,1,371, - 1,371,1,371,1,371,1,371,1,371,3,371,7481,8,371,1,372,1,372,1,373, - 1,373,1,373,1,373,1,373,3,373,7490,8,373,1,373,1,373,1,373,1,373, - 1,373,3,373,7497,8,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373, - 3,373,7506,8,373,1,374,1,374,1,374,1,374,1,374,1,375,1,375,1,375, - 3,375,7516,8,375,1,375,1,375,1,375,3,375,7521,8,375,1,375,1,375, - 3,375,7525,8,375,3,375,7527,8,375,1,375,3,375,7530,8,375,1,376,4, - 376,7533,8,376,11,376,12,376,7534,1,377,5,377,7538,8,377,10,377, - 12,377,7541,9,377,1,378,1,378,1,378,5,378,7546,8,378,10,378,12,378, - 7549,9,378,1,379,1,379,1,379,1,379,1,379,3,379,7556,8,379,1,379, - 3,379,7559,8,379,1,380,1,380,1,380,5,380,7564,8,380,10,380,12,380, - 7567,9,380,1,381,1,381,1,381,5,381,7572,8,381,10,381,12,381,7575, - 9,381,1,382,1,382,1,382,5,382,7580,8,382,10,382,12,382,7583,9,382, - 1,383,1,383,1,383,5,383,7588,8,383,10,383,12,383,7591,9,383,1,384, - 1,384,1,385,1,385,1,386,1,386,1,387,1,387,1,388,1,388,1,389,1,389, - 1,390,1,390,3,390,7607,8,390,1,391,1,391,1,391,5,391,7612,8,391, - 10,391,12,391,7615,9,391,1,392,1,392,1,392,5,392,7620,8,392,10,392, - 12,392,7623,9,392,1,393,1,393,1,394,1,394,1,395,1,395,1,396,1,396, - 1,397,1,397,1,398,1,398,1,398,1,398,3,398,7639,8,398,1,399,1,399, - 1,399,1,399,3,399,7645,8,399,1,400,1,400,1,400,1,400,3,400,7651, - 8,400,1,401,1,401,1,402,1,402,1,402,1,402,3,402,7659,8,402,1,403, - 1,403,1,403,1,403,3,403,7665,8,403,1,404,1,404,1,404,3,404,7670, - 8,404,1,405,1,405,1,405,1,405,5,405,7676,8,405,10,405,12,405,7679, - 9,405,1,405,1,405,3,405,7683,8,405,1,406,3,406,7686,8,406,1,406, - 1,406,1,407,1,407,1,407,1,407,1,407,3,407,7695,8,407,1,408,1,408, - 1,408,5,408,7700,8,408,10,408,12,408,7703,9,408,1,409,1,409,1,409, - 1,409,3,409,7709,8,409,1,410,1,410,1,410,1,410,3,410,7715,8,410, - 1,411,1,411,1,411,1,411,3,411,7721,8,411,1,412,1,412,1,412,3,412, - 7726,8,412,1,413,1,413,1,413,3,413,7731,8,413,1,413,1,413,1,413, - 1,413,1,413,1,413,3,413,7739,8,413,1,414,1,414,1,415,1,415,1,415, + 1,345,1,345,1,345,1,345,1,345,1,345,3,345,7238,8,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,3,345,7248,8,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7261, + 8,345,1,345,1,345,1,345,3,345,7266,8,345,1,345,1,345,3,345,7270, + 8,345,3,345,7272,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,3,345,7284,8,345,1,346,1,346,1,346,5,346,7289, + 8,346,10,346,12,346,7292,9,346,1,347,1,347,1,347,3,347,7297,8,347, + 1,348,1,348,1,349,1,349,3,349,7303,8,349,1,349,1,349,3,349,7307, + 8,349,1,350,1,350,1,350,1,351,1,351,1,351,1,351,5,351,7316,8,351, + 10,351,12,351,7319,9,351,1,352,1,352,1,352,1,352,1,353,1,353,1,353, + 3,353,7328,8,353,1,354,1,354,3,354,7332,8,354,1,354,1,354,1,354, + 3,354,7337,8,354,1,354,3,354,7340,8,354,1,354,3,354,7343,8,354,1, + 354,1,354,1,355,1,355,1,355,1,355,1,355,3,355,7352,8,355,1,355,1, + 355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,3,355,7363,8,355,3, + 355,7365,8,355,1,356,1,356,3,356,7369,8,356,1,356,1,356,1,356,3, + 356,7374,8,356,1,357,1,357,1,357,1,357,1,357,1,357,1,357,3,357,7383, + 8,357,1,358,1,358,1,358,3,358,7388,8,358,1,358,1,358,1,359,1,359, + 1,360,1,360,3,360,7396,8,360,1,361,1,361,1,362,1,362,1,362,1,362, + 1,362,1,362,3,362,7406,8,362,1,363,1,363,1,363,1,363,1,363,1,363, + 3,363,7414,8,363,1,364,1,364,3,364,7418,8,364,1,364,3,364,7421,8, + 364,1,365,1,365,1,365,5,365,7426,8,365,10,365,12,365,7429,9,365, + 1,366,1,366,1,366,1,366,1,366,3,366,7436,8,366,1,367,1,367,3,367, + 7440,8,367,1,368,1,368,1,368,5,368,7445,8,368,10,368,12,368,7448, + 9,368,1,369,1,369,1,369,1,369,1,369,3,369,7455,8,369,1,370,1,370, + 1,370,1,370,1,370,5,370,7462,8,370,10,370,12,370,7465,9,370,3,370, + 7467,8,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371,1,371, + 1,371,3,371,7479,8,371,1,372,1,372,1,373,1,373,1,373,1,373,1,373, + 3,373,7488,8,373,1,373,1,373,1,373,1,373,1,373,3,373,7495,8,373, + 1,373,1,373,1,373,1,373,1,373,1,373,1,373,3,373,7504,8,373,1,374, + 1,374,1,374,1,374,1,374,1,375,1,375,1,375,3,375,7514,8,375,1,375, + 1,375,1,375,3,375,7519,8,375,1,375,1,375,3,375,7523,8,375,3,375, + 7525,8,375,1,375,3,375,7528,8,375,1,376,4,376,7531,8,376,11,376, + 12,376,7532,1,377,5,377,7536,8,377,10,377,12,377,7539,9,377,1,378, + 1,378,1,378,5,378,7544,8,378,10,378,12,378,7547,9,378,1,379,1,379, + 1,379,1,379,1,379,3,379,7554,8,379,1,379,3,379,7557,8,379,1,380, + 1,380,1,380,5,380,7562,8,380,10,380,12,380,7565,9,380,1,381,1,381, + 1,381,5,381,7570,8,381,10,381,12,381,7573,9,381,1,382,1,382,1,382, + 5,382,7578,8,382,10,382,12,382,7581,9,382,1,383,1,383,1,383,5,383, + 7586,8,383,10,383,12,383,7589,9,383,1,384,1,384,1,385,1,385,1,386, + 1,386,1,387,1,387,1,388,1,388,1,389,1,389,1,390,1,390,3,390,7605, + 8,390,1,391,1,391,1,391,5,391,7610,8,391,10,391,12,391,7613,9,391, + 1,392,1,392,1,392,5,392,7618,8,392,10,392,12,392,7621,9,392,1,393, + 1,393,1,394,1,394,1,395,1,395,1,396,1,396,1,397,1,397,1,398,1,398, + 1,398,1,398,3,398,7637,8,398,1,399,1,399,1,399,1,399,3,399,7643, + 8,399,1,400,1,400,1,400,1,400,3,400,7649,8,400,1,401,1,401,1,402, + 1,402,1,402,1,402,3,402,7657,8,402,1,403,1,403,1,403,1,403,3,403, + 7663,8,403,1,404,1,404,1,404,3,404,7668,8,404,1,405,1,405,1,405, + 1,405,5,405,7674,8,405,10,405,12,405,7677,9,405,1,405,1,405,3,405, + 7681,8,405,1,406,3,406,7684,8,406,1,406,1,406,1,407,1,407,1,407, + 1,407,1,407,3,407,7693,8,407,1,408,1,408,1,408,5,408,7698,8,408, + 10,408,12,408,7701,9,408,1,409,1,409,3,409,7705,8,409,1,410,1,410, + 3,410,7709,8,410,1,411,1,411,1,411,3,411,7714,8,411,1,412,1,412, + 1,412,1,412,3,412,7720,8,412,1,413,1,413,1,413,3,413,7725,8,413, + 1,413,1,413,1,413,1,413,1,413,1,413,3,413,7733,8,413,1,414,1,414, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, - 1,415,1,415,1,415,1,415,3,415,7794,8,415,1,416,1,416,1,417,1,417, - 1,418,3,418,7801,8,418,1,418,1,418,1,418,1,418,4,418,7807,8,418, - 11,418,12,418,7808,3,418,7811,8,418,3,418,7813,8,418,1,418,1,418, - 5,418,7817,8,418,10,418,12,418,7820,9,418,1,418,3,418,7823,8,418, - 1,418,1,418,3,418,7827,8,418,1,419,1,419,1,419,1,419,1,420,1,420, - 1,420,1,420,1,420,3,420,7838,8,420,1,420,3,420,7841,8,420,1,420, - 1,420,3,420,7845,8,420,1,420,1,420,3,420,7849,8,420,1,420,1,420, - 3,420,7853,8,420,1,420,3,420,7856,8,420,1,420,3,420,7859,8,420,1, - 420,3,420,7862,8,420,1,420,1,420,1,420,1,420,1,420,5,420,7869,8, - 420,10,420,12,420,7872,9,420,1,420,1,420,3,420,7876,8,420,1,420, - 1,420,3,420,7880,8,420,1,420,1,420,1,421,1,421,1,421,1,422,1,422, + 1,415,1,415,1,415,1,415,1,415,1,415,1,415,3,415,7788,8,415,1,416, + 1,416,1,417,1,417,1,418,3,418,7795,8,418,1,418,1,418,1,418,1,418, + 4,418,7801,8,418,11,418,12,418,7802,3,418,7805,8,418,3,418,7807, + 8,418,1,418,1,418,5,418,7811,8,418,10,418,12,418,7814,9,418,1,418, + 3,418,7817,8,418,1,418,1,418,3,418,7821,8,418,1,419,1,419,1,419, + 1,419,1,420,1,420,1,420,1,420,1,420,3,420,7832,8,420,1,420,3,420, + 7835,8,420,1,420,1,420,3,420,7839,8,420,1,420,1,420,3,420,7843,8, + 420,1,420,1,420,3,420,7847,8,420,1,420,3,420,7850,8,420,1,420,3, + 420,7853,8,420,1,420,3,420,7856,8,420,1,420,1,420,1,420,1,420,1, + 420,5,420,7863,8,420,10,420,12,420,7866,9,420,1,420,1,420,3,420, + 7870,8,420,1,420,1,420,3,420,7874,8,420,1,420,1,420,1,421,1,421, + 1,421,1,422,1,422,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, - 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, - 1,423,1,423,3,423,7913,8,423,1,424,1,424,1,424,1,424,1,425,1,425, - 1,425,1,425,3,425,7923,8,425,1,425,1,425,3,425,7927,8,425,1,425, - 1,425,1,425,1,425,3,425,7933,8,425,1,425,1,425,1,425,3,425,7938, - 8,425,1,426,1,426,1,426,1,426,1,426,1,427,1,427,3,427,7947,8,427, - 1,427,1,427,1,427,1,427,5,427,7953,8,427,10,427,12,427,7956,9,427, - 1,427,1,427,1,428,1,428,1,428,1,428,1,429,1,429,3,429,7966,8,429, - 1,429,1,429,1,429,1,429,5,429,7972,8,429,10,429,12,429,7975,9,429, - 1,430,1,430,1,430,1,430,5,430,7981,8,430,10,430,12,430,7984,9,430, - 1,430,1,430,1,430,1,430,5,430,7990,8,430,10,430,12,430,7993,9,430, - 5,430,7995,8,430,10,430,12,430,7998,9,430,1,430,3,430,8001,8,430, - 1,430,1,430,1,430,1,430,1,431,1,431,5,431,8009,8,431,10,431,12,431, - 8012,9,431,1,432,1,432,3,432,8016,8,432,1,432,1,432,1,432,1,432, - 5,432,8022,8,432,10,432,12,432,8025,9,432,4,432,8027,8,432,11,432, - 12,432,8028,1,432,3,432,8032,8,432,1,432,1,432,1,432,1,432,1,433, - 3,433,8039,8,433,1,433,1,433,1,433,1,433,3,433,8045,8,433,1,433, - 1,433,1,434,1,434,1,434,1,434,3,434,8053,8,434,1,434,1,434,1,434, - 1,434,1,434,1,434,3,434,8061,8,434,1,434,3,434,8064,8,434,1,434, - 1,434,1,434,1,434,1,434,3,434,8071,8,434,3,434,8073,8,434,1,435, - 3,435,8076,8,435,1,435,1,435,1,435,1,435,3,435,8082,8,435,1,435, - 1,435,1,435,1,435,1,435,1,436,1,436,3,436,8091,8,436,1,436,1,436, - 3,436,8095,8,436,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437, - 1,437,1,437,1,437,1,437,3,437,8109,8,437,1,437,3,437,8112,8,437, - 3,437,8114,8,437,1,437,1,437,1,438,1,438,3,438,8120,8,438,1,438, - 1,438,1,438,1,438,1,438,1,438,4,438,8128,8,438,11,438,12,438,8129, - 3,438,8132,8,438,3,438,8134,8,438,1,438,1,438,1,438,1,438,5,438, - 8140,8,438,10,438,12,438,8143,9,438,3,438,8145,8,438,1,438,3,438, - 8148,8,438,1,439,1,439,1,439,1,439,1,440,1,440,1,440,1,440,3,440, - 8158,8,440,1,440,1,440,1,441,1,441,5,441,8164,8,441,10,441,12,441, - 8167,9,441,1,441,1,441,1,441,3,441,8172,8,441,1,441,1,441,1,442, - 1,442,3,442,8178,8,442,1,442,1,442,1,443,1,443,1,443,3,443,8185, - 8,443,1,443,1,443,3,443,8189,8,443,1,443,1,443,3,443,8193,8,443, - 1,443,3,443,8196,8,443,1,443,3,443,8199,8,443,1,443,1,443,1,444, - 1,444,3,444,8205,8,444,1,444,1,444,1,445,1,445,1,445,3,445,8212, - 8,445,1,445,3,445,8215,8,445,1,445,1,445,1,445,1,445,1,445,1,445, - 3,445,8223,8,445,3,445,8225,8,445,1,445,1,445,1,445,1,445,1,445, - 5,445,8232,8,445,10,445,12,445,8235,9,445,1,445,1,445,3,445,8239, - 8,445,3,445,8241,8,445,1,445,1,445,1,446,1,446,1,446,3,446,8248, - 8,446,1,446,1,446,1,447,1,447,3,447,8254,8,447,1,447,3,447,8257, - 8,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448, - 3,448,8269,8,448,1,448,1,448,1,448,1,448,1,448,3,448,8276,8,448, - 3,448,8278,8,448,1,449,1,449,3,449,8282,8,449,1,449,1,449,1,449, - 1,450,3,450,8288,8,450,1,450,1,450,1,450,3,450,8293,8,450,1,450, - 1,450,3,450,8297,8,450,1,450,3,450,8300,8,450,1,450,3,450,8303,8, - 450,1,450,1,450,1,450,1,450,1,450,4,450,8310,8,450,11,450,12,450, - 8311,1,451,3,451,8315,8,451,1,451,1,451,3,451,8319,8,451,1,451,1, - 451,3,451,8323,8,451,3,451,8325,8,451,1,451,3,451,8328,8,451,1,451, - 3,451,8331,8,451,1,452,1,452,1,452,1,452,3,452,8337,8,452,1,452, - 1,452,1,452,1,452,1,452,3,452,8344,8,452,1,452,1,452,1,452,1,452, - 1,452,3,452,8351,8,452,1,452,1,452,1,452,1,452,3,452,8357,8,452, - 3,452,8359,8,452,1,453,1,453,3,453,8363,8,453,1,453,1,453,1,453, - 3,453,8368,8,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,454, - 1,454,1,454,1,454,1,454,1,454,1,454,5,454,8384,8,454,10,454,12,454, - 8387,9,454,1,454,1,454,4,454,8391,8,454,11,454,12,454,8392,1,455, - 1,455,1,455,1,455,1,455,5,455,8400,8,455,10,455,12,455,8403,9,455, - 1,455,1,455,1,455,1,455,3,455,8409,8,455,1,456,1,456,3,456,8413, - 8,456,1,457,1,457,1,457,1,457,1,458,1,458,1,458,1,459,1,459,1,459, - 3,459,8425,8,459,1,459,3,459,8428,8,459,1,459,1,459,1,460,1,460, - 1,460,1,460,1,460,1,460,1,460,1,460,1,460,3,460,8441,8,460,1,460, - 3,460,8444,8,460,1,461,1,461,3,461,8448,8,461,1,462,1,462,1,462, - 1,462,1,462,5,462,8455,8,462,10,462,12,462,8458,9,462,1,462,1,462, - 5,462,8462,8,462,10,462,12,462,8465,9,462,4,462,8467,8,462,11,462, - 12,462,8468,1,463,1,463,1,463,3,463,8474,8,463,1,464,1,464,3,464, - 8478,8,464,1,465,1,465,1,466,3,466,8483,8,466,1,466,3,466,8486,8, - 466,1,466,3,466,8489,8,466,1,466,3,466,8492,8,466,1,466,3,466,8495, - 8,466,1,466,1,466,3,466,8499,8,466,1,466,3,466,8502,8,466,1,466, - 0,3,676,680,682,467,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32, - 34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76, - 78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114, - 116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146, - 148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178, - 180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210, - 212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242, - 244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274, - 276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306, - 308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338, - 340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370, - 372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402, - 404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434, - 436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466, - 468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498, - 500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530, - 532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562, - 564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594, - 596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626, - 628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658, - 660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690, - 692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722, - 724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754, - 756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786, - 788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818, - 820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850, - 852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882, - 884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914, - 916,918,920,922,924,926,928,930,932,0,119,2,0,195,195,364,364,2, + 1,423,1,423,1,423,1,423,1,423,3,423,7907,8,423,1,424,1,424,1,424, + 1,424,1,425,1,425,1,425,1,425,3,425,7917,8,425,1,425,1,425,3,425, + 7921,8,425,1,425,1,425,1,425,1,425,3,425,7927,8,425,1,425,1,425, + 1,425,3,425,7932,8,425,1,426,1,426,1,426,1,426,1,426,1,427,1,427, + 3,427,7941,8,427,1,427,1,427,1,427,1,427,5,427,7947,8,427,10,427, + 12,427,7950,9,427,1,427,1,427,1,428,1,428,1,428,1,428,1,429,1,429, + 3,429,7960,8,429,1,429,1,429,1,429,1,429,5,429,7966,8,429,10,429, + 12,429,7969,9,429,1,430,1,430,1,430,1,430,5,430,7975,8,430,10,430, + 12,430,7978,9,430,1,430,1,430,1,430,1,430,5,430,7984,8,430,10,430, + 12,430,7987,9,430,5,430,7989,8,430,10,430,12,430,7992,9,430,1,430, + 3,430,7995,8,430,1,430,1,430,1,430,1,430,1,431,1,431,5,431,8003, + 8,431,10,431,12,431,8006,9,431,1,432,1,432,3,432,8010,8,432,1,432, + 1,432,1,432,1,432,5,432,8016,8,432,10,432,12,432,8019,9,432,4,432, + 8021,8,432,11,432,12,432,8022,1,432,3,432,8026,8,432,1,432,1,432, + 1,432,1,432,1,433,3,433,8033,8,433,1,433,1,433,1,433,1,433,3,433, + 8039,8,433,1,433,1,433,1,434,1,434,1,434,1,434,3,434,8047,8,434, + 1,434,1,434,1,434,1,434,1,434,1,434,3,434,8055,8,434,1,434,3,434, + 8058,8,434,1,434,1,434,1,434,1,434,1,434,3,434,8065,8,434,3,434, + 8067,8,434,1,435,3,435,8070,8,435,1,435,1,435,1,435,1,435,3,435, + 8076,8,435,1,435,1,435,1,435,1,435,1,435,1,436,1,436,3,436,8085, + 8,436,1,436,1,436,3,436,8089,8,436,1,436,1,436,1,437,1,437,1,437, + 1,437,1,437,1,437,1,437,1,437,1,437,1,437,3,437,8103,8,437,1,437, + 3,437,8106,8,437,3,437,8108,8,437,1,437,1,437,1,438,1,438,3,438, + 8114,8,438,1,438,1,438,1,438,1,438,1,438,1,438,4,438,8122,8,438, + 11,438,12,438,8123,3,438,8126,8,438,3,438,8128,8,438,1,438,1,438, + 1,438,1,438,5,438,8134,8,438,10,438,12,438,8137,9,438,3,438,8139, + 8,438,1,438,3,438,8142,8,438,1,439,1,439,1,439,1,439,1,440,1,440, + 1,440,1,440,3,440,8152,8,440,1,440,1,440,1,441,1,441,5,441,8158, + 8,441,10,441,12,441,8161,9,441,1,441,1,441,1,441,3,441,8166,8,441, + 1,441,1,441,1,442,1,442,3,442,8172,8,442,1,442,1,442,1,443,1,443, + 1,443,3,443,8179,8,443,1,443,1,443,3,443,8183,8,443,1,443,1,443, + 3,443,8187,8,443,1,443,3,443,8190,8,443,1,443,3,443,8193,8,443,1, + 443,1,443,1,444,1,444,3,444,8199,8,444,1,444,1,444,1,445,1,445,1, + 445,3,445,8206,8,445,1,445,3,445,8209,8,445,1,445,1,445,1,445,1, + 445,1,445,1,445,3,445,8217,8,445,3,445,8219,8,445,1,445,1,445,1, + 445,1,445,1,445,5,445,8226,8,445,10,445,12,445,8229,9,445,1,445, + 1,445,3,445,8233,8,445,3,445,8235,8,445,1,445,1,445,1,446,1,446, + 1,446,3,446,8242,8,446,1,446,1,446,1,447,1,447,3,447,8248,8,447, + 1,447,3,447,8251,8,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448, + 1,448,1,448,1,448,3,448,8263,8,448,1,448,1,448,1,448,1,448,1,448, + 3,448,8270,8,448,3,448,8272,8,448,1,449,1,449,3,449,8276,8,449,1, + 449,1,449,1,449,1,450,3,450,8282,8,450,1,450,1,450,1,450,3,450,8287, + 8,450,1,450,1,450,3,450,8291,8,450,1,450,3,450,8294,8,450,1,450, + 3,450,8297,8,450,1,450,1,450,1,450,1,450,1,450,4,450,8304,8,450, + 11,450,12,450,8305,1,451,3,451,8309,8,451,1,451,1,451,3,451,8313, + 8,451,1,451,1,451,3,451,8317,8,451,3,451,8319,8,451,1,451,3,451, + 8322,8,451,1,451,3,451,8325,8,451,1,452,1,452,1,452,1,452,3,452, + 8331,8,452,1,452,1,452,1,452,1,452,1,452,3,452,8338,8,452,1,452, + 1,452,1,452,1,452,1,452,3,452,8345,8,452,1,452,1,452,1,452,1,452, + 3,452,8351,8,452,3,452,8353,8,452,1,453,1,453,3,453,8357,8,453,1, + 453,1,453,1,453,3,453,8362,8,453,1,453,1,453,1,454,1,454,1,454,1, + 454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,5,454,8378,8, + 454,10,454,12,454,8381,9,454,1,454,1,454,4,454,8385,8,454,11,454, + 12,454,8386,1,455,1,455,1,455,1,455,1,455,5,455,8394,8,455,10,455, + 12,455,8397,9,455,1,455,1,455,1,455,1,455,3,455,8403,8,455,1,456, + 1,456,3,456,8407,8,456,1,457,1,457,1,457,1,457,1,458,1,458,1,458, + 1,459,1,459,1,459,3,459,8419,8,459,1,459,3,459,8422,8,459,1,459, + 1,459,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,3,460, + 8435,8,460,1,460,3,460,8438,8,460,1,461,1,461,3,461,8442,8,461,1, + 462,1,462,1,462,1,462,1,462,5,462,8449,8,462,10,462,12,462,8452, + 9,462,1,462,1,462,5,462,8456,8,462,10,462,12,462,8459,9,462,4,462, + 8461,8,462,11,462,12,462,8462,1,463,1,463,1,463,3,463,8468,8,463, + 1,464,1,464,3,464,8472,8,464,1,465,3,465,8475,8,465,1,465,3,465, + 8478,8,465,1,465,3,465,8481,8,465,1,465,3,465,8484,8,465,1,465,3, + 465,8487,8,465,1,465,1,465,3,465,8491,8,465,1,465,3,465,8494,8,465, + 1,465,0,3,676,680,682,466,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28, + 30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72, + 74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112, + 114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144, + 146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176, + 178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208, + 210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240, + 242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272, + 274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304, + 306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336, + 338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368, + 370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400, + 402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432, + 434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464, + 466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496, + 498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528, + 530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560, + 562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592, + 594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624, + 626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656, + 658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688, + 690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720, + 722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752, + 754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784, + 786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816, + 818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848, + 850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880, + 882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912, + 914,916,918,920,922,924,926,928,930,0,118,2,0,195,195,364,364,2, 0,66,66,318,318,2,0,99,99,318,318,2,0,134,134,318,318,1,0,529,531, 2,0,10,10,94,94,2,0,133,133,191,191,2,0,254,254,332,332,2,0,162, 162,363,363,2,0,180,180,221,221,5,0,30,30,288,288,329,329,352,352, @@ -55655,2985 +55654,2979 @@ export class PostgreSqlParser extends SQLParserBase { 95,4,0,393,393,399,399,404,404,425,425,2,0,292,292,347,347,2,0,166, 166,188,188,2,0,304,304,450,450,3,0,299,299,320,320,481,481,2,0, 208,208,289,289,3,0,30,30,34,34,90,90,6,0,9,10,12,17,21,21,23,23, - 25,25,27,27,2,0,114,114,120,120,2,0,20,20,22,22,1,0,483,486,10,0, - 124,124,129,228,238,386,433,452,455,469,471,471,473,473,475,475, - 478,488,547,548,3,0,106,123,125,128,472,472,4,0,30,52,54,70,72,105, - 454,454,2,0,62,62,116,116,2,0,10,10,20,20,2,0,434,434,501,501,2, - 0,167,167,507,507,1,0,512,517,2,0,144,144,210,210,36,0,33,33,35, - 35,43,43,45,45,53,53,57,57,61,61,116,116,123,123,130,130,144,144, - 153,153,157,157,161,161,167,167,172,172,207,207,210,210,241,241, - 249,249,265,265,268,269,279,279,293,293,307,307,313,313,319,319, - 323,324,333,333,360,360,433,434,477,477,490,502,504,504,506,518, - 520,520,9941,0,937,1,0,0,0,2,942,1,0,0,0,4,1066,1,0,0,0,6,1068,1, - 0,0,0,8,1071,1,0,0,0,10,1121,1,0,0,0,12,1131,1,0,0,0,14,1133,1,0, - 0,0,16,1145,1,0,0,0,18,1157,1,0,0,0,20,1168,1,0,0,0,22,1202,1,0, - 0,0,24,1246,1,0,0,0,26,1248,1,0,0,0,28,1260,1,0,0,0,30,1267,1,0, - 0,0,32,1286,1,0,0,0,34,1294,1,0,0,0,36,1296,1,0,0,0,38,1310,1,0, - 0,0,40,1314,1,0,0,0,42,1351,1,0,0,0,44,1353,1,0,0,0,46,1361,1,0, - 0,0,48,1371,1,0,0,0,50,1378,1,0,0,0,52,1386,1,0,0,0,54,1392,1,0, - 0,0,56,1408,1,0,0,0,58,1412,1,0,0,0,60,1414,1,0,0,0,62,1426,1,0, - 0,0,64,1431,1,0,0,0,66,1436,1,0,0,0,68,1438,1,0,0,0,70,1450,1,0, - 0,0,72,1458,1,0,0,0,74,1460,1,0,0,0,76,1584,1,0,0,0,78,1586,1,0, - 0,0,80,1603,1,0,0,0,82,1605,1,0,0,0,84,1619,1,0,0,0,86,1621,1,0, - 0,0,88,1635,1,0,0,0,90,1637,1,0,0,0,92,1874,1,0,0,0,94,1881,1,0, - 0,0,96,1883,1,0,0,0,98,1885,1,0,0,0,100,1888,1,0,0,0,102,1899,1, - 0,0,0,104,1902,1,0,0,0,106,1938,1,0,0,0,108,1940,1,0,0,0,110,1981, - 1,0,0,0,112,1983,1,0,0,0,114,2037,1,0,0,0,116,2078,1,0,0,0,118,2080, - 1,0,0,0,120,2097,1,0,0,0,122,2178,1,0,0,0,124,2180,1,0,0,0,126,2191, - 1,0,0,0,128,2214,1,0,0,0,130,2232,1,0,0,0,132,2234,1,0,0,0,134,2269, - 1,0,0,0,136,2362,1,0,0,0,138,2367,1,0,0,0,140,2369,1,0,0,0,142,2467, - 1,0,0,0,144,2469,1,0,0,0,146,2473,1,0,0,0,148,2484,1,0,0,0,150,2492, - 1,0,0,0,152,2495,1,0,0,0,154,2498,1,0,0,0,156,2516,1,0,0,0,158,2518, - 1,0,0,0,160,2522,1,0,0,0,162,2535,1,0,0,0,164,2537,1,0,0,0,166,2542, - 1,0,0,0,168,2562,1,0,0,0,170,2570,1,0,0,0,172,2577,1,0,0,0,174,2579, - 1,0,0,0,176,2588,1,0,0,0,178,2591,1,0,0,0,180,2595,1,0,0,0,182,2599, - 1,0,0,0,184,2624,1,0,0,0,186,2634,1,0,0,0,188,2648,1,0,0,0,190,2664, - 1,0,0,0,192,2670,1,0,0,0,194,2697,1,0,0,0,196,2707,1,0,0,0,198,2723, - 1,0,0,0,200,2767,1,0,0,0,202,2774,1,0,0,0,204,2776,1,0,0,0,206,2802, - 1,0,0,0,208,2813,1,0,0,0,210,2832,1,0,0,0,212,2843,1,0,0,0,214,2881, - 1,0,0,0,216,2902,1,0,0,0,218,2904,1,0,0,0,220,2924,1,0,0,0,222,2936, - 1,0,0,0,224,2948,1,0,0,0,226,2951,1,0,0,0,228,2954,1,0,0,0,230,2974, - 1,0,0,0,232,2979,1,0,0,0,234,3028,1,0,0,0,236,3030,1,0,0,0,238,3053, - 1,0,0,0,240,3069,1,0,0,0,242,3081,1,0,0,0,244,3108,1,0,0,0,246,3123, - 1,0,0,0,248,3186,1,0,0,0,250,3188,1,0,0,0,252,3193,1,0,0,0,254,3199, - 1,0,0,0,256,3286,1,0,0,0,258,3292,1,0,0,0,260,3294,1,0,0,0,262,3310, - 1,0,0,0,264,3312,1,0,0,0,266,3321,1,0,0,0,268,3325,1,0,0,0,270,3338, - 1,0,0,0,272,3350,1,0,0,0,274,3352,1,0,0,0,276,3374,1,0,0,0,278,3386, - 1,0,0,0,280,3397,1,0,0,0,282,3488,1,0,0,0,284,3490,1,0,0,0,286,3501, - 1,0,0,0,288,3512,1,0,0,0,290,3514,1,0,0,0,292,3540,1,0,0,0,294,3542, - 1,0,0,0,296,3546,1,0,0,0,298,3596,1,0,0,0,300,3598,1,0,0,0,302,3604, - 1,0,0,0,304,3629,1,0,0,0,306,3633,1,0,0,0,308,3847,1,0,0,0,310,3865, - 1,0,0,0,312,3891,1,0,0,0,314,3893,1,0,0,0,316,3901,1,0,0,0,318,3907, - 1,0,0,0,320,3911,1,0,0,0,322,3931,1,0,0,0,324,3937,1,0,0,0,326,4004, - 1,0,0,0,328,4035,1,0,0,0,330,4081,1,0,0,0,332,4083,1,0,0,0,334,4085, - 1,0,0,0,336,4096,1,0,0,0,338,4133,1,0,0,0,340,4135,1,0,0,0,342,4141, - 1,0,0,0,344,4191,1,0,0,0,346,4194,1,0,0,0,348,4208,1,0,0,0,350,4229, - 1,0,0,0,352,4253,1,0,0,0,354,4294,1,0,0,0,356,4296,1,0,0,0,358,4298, - 1,0,0,0,360,4338,1,0,0,0,362,4355,1,0,0,0,364,4375,1,0,0,0,366,4428, - 1,0,0,0,368,4431,1,0,0,0,370,4437,1,0,0,0,372,4445,1,0,0,0,374,4458, - 1,0,0,0,376,4460,1,0,0,0,378,4473,1,0,0,0,380,4475,1,0,0,0,382,4488, - 1,0,0,0,384,4498,1,0,0,0,386,4509,1,0,0,0,388,4520,1,0,0,0,390,4522, - 1,0,0,0,392,4527,1,0,0,0,394,4541,1,0,0,0,396,4573,1,0,0,0,398,4610, - 1,0,0,0,400,4612,1,0,0,0,402,4615,1,0,0,0,404,4618,1,0,0,0,406,4635, - 1,0,0,0,408,4656,1,0,0,0,410,4672,1,0,0,0,412,4688,1,0,0,0,414,4710, - 1,0,0,0,416,4715,1,0,0,0,418,4718,1,0,0,0,420,4726,1,0,0,0,422,4751, - 1,0,0,0,424,4754,1,0,0,0,426,4782,1,0,0,0,428,4787,1,0,0,0,430,4827, - 1,0,0,0,432,5039,1,0,0,0,434,5041,1,0,0,0,436,5129,1,0,0,0,438,5131, - 1,0,0,0,440,5137,1,0,0,0,442,5148,1,0,0,0,444,5158,1,0,0,0,446,5238, - 1,0,0,0,448,5240,1,0,0,0,450,5254,1,0,0,0,452,5276,1,0,0,0,454,5349, - 1,0,0,0,456,5351,1,0,0,0,458,5392,1,0,0,0,460,5394,1,0,0,0,462,5399, - 1,0,0,0,464,5402,1,0,0,0,466,5405,1,0,0,0,468,5455,1,0,0,0,470,5457, - 1,0,0,0,472,5468,1,0,0,0,474,5470,1,0,0,0,476,5480,1,0,0,0,478,5515, - 1,0,0,0,480,5518,1,0,0,0,482,5539,1,0,0,0,484,5549,1,0,0,0,486,5569, - 1,0,0,0,488,5575,1,0,0,0,490,5581,1,0,0,0,492,5586,1,0,0,0,494,5599, - 1,0,0,0,496,5626,1,0,0,0,498,5674,1,0,0,0,500,5676,1,0,0,0,502,5714, - 1,0,0,0,504,5716,1,0,0,0,506,5737,1,0,0,0,508,5757,1,0,0,0,510,5761, - 1,0,0,0,512,5776,1,0,0,0,514,5778,1,0,0,0,516,5782,1,0,0,0,518,5786, - 1,0,0,0,520,5794,1,0,0,0,522,5818,1,0,0,0,524,5820,1,0,0,0,526,5831, - 1,0,0,0,528,5839,1,0,0,0,530,5854,1,0,0,0,532,5879,1,0,0,0,534,5881, - 1,0,0,0,536,5885,1,0,0,0,538,5894,1,0,0,0,540,5934,1,0,0,0,542,5945, - 1,0,0,0,544,5953,1,0,0,0,546,5956,1,0,0,0,548,5960,1,0,0,0,550,5975, - 1,0,0,0,552,6000,1,0,0,0,554,6015,1,0,0,0,556,6041,1,0,0,0,558,6043, - 1,0,0,0,560,6066,1,0,0,0,562,6068,1,0,0,0,564,6076,1,0,0,0,566,6094, - 1,0,0,0,568,6118,1,0,0,0,570,6130,1,0,0,0,572,6134,1,0,0,0,574,6146, - 1,0,0,0,576,6166,1,0,0,0,578,6174,1,0,0,0,580,6188,1,0,0,0,582,6211, - 1,0,0,0,584,6213,1,0,0,0,586,6218,1,0,0,0,588,6228,1,0,0,0,590,6249, - 1,0,0,0,592,6251,1,0,0,0,594,6260,1,0,0,0,596,6271,1,0,0,0,598,6281, - 1,0,0,0,600,6283,1,0,0,0,602,6290,1,0,0,0,604,6321,1,0,0,0,606,6351, - 1,0,0,0,608,6353,1,0,0,0,610,6362,1,0,0,0,612,6365,1,0,0,0,614,6436, - 1,0,0,0,616,6460,1,0,0,0,618,6481,1,0,0,0,620,6483,1,0,0,0,622,6491, - 1,0,0,0,624,6508,1,0,0,0,626,6534,1,0,0,0,628,6536,1,0,0,0,630,6544, - 1,0,0,0,632,6551,1,0,0,0,634,6575,1,0,0,0,636,6581,1,0,0,0,638,6589, - 1,0,0,0,640,6592,1,0,0,0,642,6599,1,0,0,0,644,6607,1,0,0,0,646,6612, - 1,0,0,0,648,6642,1,0,0,0,650,6669,1,0,0,0,652,6697,1,0,0,0,654,6714, - 1,0,0,0,656,6720,1,0,0,0,658,6738,1,0,0,0,660,6740,1,0,0,0,662,6744, - 1,0,0,0,664,6761,1,0,0,0,666,6766,1,0,0,0,668,6804,1,0,0,0,670,6806, - 1,0,0,0,672,6810,1,0,0,0,674,6812,1,0,0,0,676,6821,1,0,0,0,678,6905, - 1,0,0,0,680,6911,1,0,0,0,682,7020,1,0,0,0,684,7052,1,0,0,0,686,7105, - 1,0,0,0,688,7109,1,0,0,0,690,7285,1,0,0,0,692,7287,1,0,0,0,694,7295, - 1,0,0,0,696,7300,1,0,0,0,698,7302,1,0,0,0,700,7310,1,0,0,0,702,7313, - 1,0,0,0,704,7322,1,0,0,0,706,7326,1,0,0,0,708,7331,1,0,0,0,710,7348, - 1,0,0,0,712,7375,1,0,0,0,714,7384,1,0,0,0,716,7386,1,0,0,0,718,7393, - 1,0,0,0,720,7397,1,0,0,0,722,7399,1,0,0,0,724,7407,1,0,0,0,726,7415, - 1,0,0,0,728,7422,1,0,0,0,730,7424,1,0,0,0,732,7437,1,0,0,0,734,7441, - 1,0,0,0,736,7443,1,0,0,0,738,7456,1,0,0,0,740,7458,1,0,0,0,742,7480, - 1,0,0,0,744,7482,1,0,0,0,746,7505,1,0,0,0,748,7507,1,0,0,0,750,7529, - 1,0,0,0,752,7532,1,0,0,0,754,7539,1,0,0,0,756,7542,1,0,0,0,758,7558, - 1,0,0,0,760,7560,1,0,0,0,762,7568,1,0,0,0,764,7576,1,0,0,0,766,7584, - 1,0,0,0,768,7592,1,0,0,0,770,7594,1,0,0,0,772,7596,1,0,0,0,774,7598, - 1,0,0,0,776,7600,1,0,0,0,778,7602,1,0,0,0,780,7604,1,0,0,0,782,7608, - 1,0,0,0,784,7616,1,0,0,0,786,7624,1,0,0,0,788,7626,1,0,0,0,790,7628, - 1,0,0,0,792,7630,1,0,0,0,794,7632,1,0,0,0,796,7638,1,0,0,0,798,7644, - 1,0,0,0,800,7650,1,0,0,0,802,7652,1,0,0,0,804,7658,1,0,0,0,806,7664, - 1,0,0,0,808,7666,1,0,0,0,810,7682,1,0,0,0,812,7685,1,0,0,0,814,7694, - 1,0,0,0,816,7696,1,0,0,0,818,7708,1,0,0,0,820,7714,1,0,0,0,822,7720, - 1,0,0,0,824,7725,1,0,0,0,826,7738,1,0,0,0,828,7740,1,0,0,0,830,7793, - 1,0,0,0,832,7795,1,0,0,0,834,7797,1,0,0,0,836,7800,1,0,0,0,838,7828, - 1,0,0,0,840,7832,1,0,0,0,842,7883,1,0,0,0,844,7886,1,0,0,0,846,7912, - 1,0,0,0,848,7914,1,0,0,0,850,7937,1,0,0,0,852,7939,1,0,0,0,854,7944, - 1,0,0,0,856,7959,1,0,0,0,858,7965,1,0,0,0,860,7976,1,0,0,0,862,8006, - 1,0,0,0,864,8013,1,0,0,0,866,8038,1,0,0,0,868,8048,1,0,0,0,870,8075, - 1,0,0,0,872,8088,1,0,0,0,874,8098,1,0,0,0,876,8117,1,0,0,0,878,8149, - 1,0,0,0,880,8153,1,0,0,0,882,8161,1,0,0,0,884,8175,1,0,0,0,886,8181, - 1,0,0,0,888,8202,1,0,0,0,890,8208,1,0,0,0,892,8247,1,0,0,0,894,8251, - 1,0,0,0,896,8277,1,0,0,0,898,8279,1,0,0,0,900,8287,1,0,0,0,902,8324, - 1,0,0,0,904,8358,1,0,0,0,906,8360,1,0,0,0,908,8371,1,0,0,0,910,8408, - 1,0,0,0,912,8412,1,0,0,0,914,8414,1,0,0,0,916,8418,1,0,0,0,918,8421, - 1,0,0,0,920,8443,1,0,0,0,922,8447,1,0,0,0,924,8449,1,0,0,0,926,8473, - 1,0,0,0,928,8477,1,0,0,0,930,8479,1,0,0,0,932,8482,1,0,0,0,934,936, - 3,2,1,0,935,934,1,0,0,0,936,939,1,0,0,0,937,935,1,0,0,0,937,938, - 1,0,0,0,938,940,1,0,0,0,939,937,1,0,0,0,940,941,5,0,0,1,941,1,1, - 0,0,0,942,944,3,4,2,0,943,945,5,7,0,0,944,943,1,0,0,0,944,945,1, - 0,0,0,945,3,1,0,0,0,946,1067,3,278,139,0,947,1067,3,488,244,0,948, - 1067,3,484,242,0,949,1067,3,486,243,0,950,1067,3,352,176,0,951,1067, - 3,494,247,0,952,1067,3,292,146,0,953,1067,3,210,105,0,954,1067,3, - 212,106,0,955,1067,3,218,109,0,956,1067,3,232,116,0,957,1067,3,404, - 202,0,958,1067,3,28,14,0,959,1067,3,434,217,0,960,1067,3,436,218, - 0,961,1067,3,446,223,0,962,1067,3,438,219,0,963,1067,3,444,222,0, - 964,1067,3,244,122,0,965,1067,3,246,123,0,966,1067,3,198,99,0,967, - 1067,3,490,245,0,968,1067,3,76,38,0,969,1067,3,430,215,0,970,1067, - 3,108,54,0,971,1067,3,450,225,0,972,1067,3,18,9,0,973,1067,3,20, - 10,0,974,1067,3,16,8,0,975,1067,3,454,227,0,976,1067,3,184,92,0, - 977,1067,3,498,249,0,978,1067,3,496,248,0,979,1067,3,240,120,0,980, - 1067,3,506,253,0,981,1067,3,6,3,0,982,1067,3,72,36,0,983,1067,3, - 112,56,0,984,1067,3,502,251,0,985,1067,3,324,162,0,986,1067,3,70, - 35,0,987,1067,3,114,57,0,988,1067,3,254,127,0,989,1067,3,186,93, - 0,990,1067,3,280,140,0,991,1067,3,420,210,0,992,1067,3,500,250,0, - 993,1067,3,492,246,0,994,1067,3,208,104,0,995,1067,3,214,107,0,996, - 1067,3,228,114,0,997,1067,3,234,117,0,998,1067,3,364,182,0,999,1067, - 3,26,13,0,1000,1067,3,192,96,0,1001,1067,3,296,148,0,1002,1067,3, - 300,150,0,1003,1067,3,448,224,0,1004,1067,3,302,151,0,1005,1067, - 3,242,121,0,1006,1067,3,204,102,0,1007,1067,3,30,15,0,1008,1067, - 3,196,98,0,1009,1067,3,120,60,0,1010,1067,3,452,226,0,1011,1067, - 3,182,91,0,1012,1067,3,206,103,0,1013,1067,3,424,212,0,1014,1067, - 3,256,128,0,1015,1067,3,274,137,0,1016,1067,3,8,4,0,1017,1067,3, - 14,7,0,1018,1067,3,238,119,0,1019,1067,3,480,240,0,1020,1067,3,536, - 268,0,1021,1067,3,558,279,0,1022,1067,3,282,141,0,1023,1067,3,548, - 274,0,1024,1067,3,74,37,0,1025,1067,3,418,209,0,1026,1067,3,308, - 154,0,1027,1067,3,532,266,0,1028,1067,3,520,260,0,1029,1067,3,328, - 164,0,1030,1067,3,334,167,0,1031,1067,3,348,174,0,1032,1067,3,900, - 450,0,1033,1067,3,236,118,0,1034,1067,3,358,179,0,1035,1067,3,538, - 269,0,1036,1067,3,464,232,0,1037,1067,3,194,97,0,1038,1067,3,478, - 239,0,1039,1067,3,550,275,0,1040,1067,3,460,230,0,1041,1067,3,526, - 263,0,1042,1067,3,306,153,0,1043,1067,3,428,214,0,1044,1067,3,408, - 204,0,1045,1067,3,406,203,0,1046,1067,3,410,205,0,1047,1067,3,432, - 216,0,1048,1067,3,336,168,0,1049,1067,3,350,175,0,1050,1067,3,456, - 228,0,1051,1067,3,326,163,0,1052,1067,3,560,280,0,1053,1067,3,468, - 234,0,1054,1067,3,320,160,0,1055,1067,3,466,233,0,1056,1067,3,552, - 276,0,1057,1067,3,504,252,0,1058,1067,3,60,30,0,1059,1067,3,36,18, - 0,1060,1067,3,68,34,0,1061,1067,3,476,238,0,1062,1064,5,581,0,0, - 1063,1065,5,582,0,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1067, - 1,0,0,0,1066,946,1,0,0,0,1066,947,1,0,0,0,1066,948,1,0,0,0,1066, - 949,1,0,0,0,1066,950,1,0,0,0,1066,951,1,0,0,0,1066,952,1,0,0,0,1066, - 953,1,0,0,0,1066,954,1,0,0,0,1066,955,1,0,0,0,1066,956,1,0,0,0,1066, - 957,1,0,0,0,1066,958,1,0,0,0,1066,959,1,0,0,0,1066,960,1,0,0,0,1066, - 961,1,0,0,0,1066,962,1,0,0,0,1066,963,1,0,0,0,1066,964,1,0,0,0,1066, - 965,1,0,0,0,1066,966,1,0,0,0,1066,967,1,0,0,0,1066,968,1,0,0,0,1066, - 969,1,0,0,0,1066,970,1,0,0,0,1066,971,1,0,0,0,1066,972,1,0,0,0,1066, - 973,1,0,0,0,1066,974,1,0,0,0,1066,975,1,0,0,0,1066,976,1,0,0,0,1066, - 977,1,0,0,0,1066,978,1,0,0,0,1066,979,1,0,0,0,1066,980,1,0,0,0,1066, - 981,1,0,0,0,1066,982,1,0,0,0,1066,983,1,0,0,0,1066,984,1,0,0,0,1066, - 985,1,0,0,0,1066,986,1,0,0,0,1066,987,1,0,0,0,1066,988,1,0,0,0,1066, - 989,1,0,0,0,1066,990,1,0,0,0,1066,991,1,0,0,0,1066,992,1,0,0,0,1066, - 993,1,0,0,0,1066,994,1,0,0,0,1066,995,1,0,0,0,1066,996,1,0,0,0,1066, - 997,1,0,0,0,1066,998,1,0,0,0,1066,999,1,0,0,0,1066,1000,1,0,0,0, - 1066,1001,1,0,0,0,1066,1002,1,0,0,0,1066,1003,1,0,0,0,1066,1004, - 1,0,0,0,1066,1005,1,0,0,0,1066,1006,1,0,0,0,1066,1007,1,0,0,0,1066, - 1008,1,0,0,0,1066,1009,1,0,0,0,1066,1010,1,0,0,0,1066,1011,1,0,0, - 0,1066,1012,1,0,0,0,1066,1013,1,0,0,0,1066,1014,1,0,0,0,1066,1015, - 1,0,0,0,1066,1016,1,0,0,0,1066,1017,1,0,0,0,1066,1018,1,0,0,0,1066, - 1019,1,0,0,0,1066,1020,1,0,0,0,1066,1021,1,0,0,0,1066,1022,1,0,0, - 0,1066,1023,1,0,0,0,1066,1024,1,0,0,0,1066,1025,1,0,0,0,1066,1026, - 1,0,0,0,1066,1027,1,0,0,0,1066,1028,1,0,0,0,1066,1029,1,0,0,0,1066, - 1030,1,0,0,0,1066,1031,1,0,0,0,1066,1032,1,0,0,0,1066,1033,1,0,0, - 0,1066,1034,1,0,0,0,1066,1035,1,0,0,0,1066,1036,1,0,0,0,1066,1037, - 1,0,0,0,1066,1038,1,0,0,0,1066,1039,1,0,0,0,1066,1040,1,0,0,0,1066, - 1041,1,0,0,0,1066,1042,1,0,0,0,1066,1043,1,0,0,0,1066,1044,1,0,0, - 0,1066,1045,1,0,0,0,1066,1046,1,0,0,0,1066,1047,1,0,0,0,1066,1048, - 1,0,0,0,1066,1049,1,0,0,0,1066,1050,1,0,0,0,1066,1051,1,0,0,0,1066, - 1052,1,0,0,0,1066,1053,1,0,0,0,1066,1054,1,0,0,0,1066,1055,1,0,0, - 0,1066,1056,1,0,0,0,1066,1057,1,0,0,0,1066,1058,1,0,0,0,1066,1059, - 1,0,0,0,1066,1060,1,0,0,0,1066,1061,1,0,0,0,1066,1062,1,0,0,0,1067, - 5,1,0,0,0,1068,1069,5,433,0,0,1069,1070,3,684,342,0,1070,7,1,0,0, - 0,1071,1072,5,46,0,0,1072,1073,5,318,0,0,1073,1075,3,814,407,0,1074, - 1076,5,105,0,0,1075,1074,1,0,0,0,1075,1076,1,0,0,0,1076,1080,1,0, - 0,0,1077,1079,3,12,6,0,1078,1077,1,0,0,0,1079,1082,1,0,0,0,1080, - 1078,1,0,0,0,1080,1081,1,0,0,0,1081,9,1,0,0,0,1082,1080,1,0,0,0, - 1083,1086,5,287,0,0,1084,1087,3,808,404,0,1085,1087,5,78,0,0,1086, - 1084,1,0,0,0,1086,1085,1,0,0,0,1087,1122,1,0,0,0,1088,1089,7,0,0, - 0,1089,1090,5,287,0,0,1090,1122,3,808,404,0,1091,1122,5,228,0,0, - 1092,1122,5,229,0,0,1093,1122,5,236,0,0,1094,1122,5,237,0,0,1095, - 1122,5,234,0,0,1096,1122,5,235,0,0,1097,1122,5,232,0,0,1098,1122, - 5,233,0,0,1099,1122,5,230,0,0,1100,1122,5,231,0,0,1101,1122,5,535, - 0,0,1102,1122,5,536,0,0,1103,1122,5,537,0,0,1104,1122,5,538,0,0, - 1105,1122,5,539,0,0,1106,1122,5,540,0,0,1107,1108,5,164,0,0,1108, - 1109,5,74,0,0,1109,1122,3,812,406,0,1110,1111,5,371,0,0,1111,1112, - 5,368,0,0,1112,1122,3,808,404,0,1113,1114,5,68,0,0,1114,1115,7,1, - 0,0,1115,1122,3,784,392,0,1116,1117,7,2,0,0,1117,1122,3,816,408, - 0,1118,1119,5,134,0,0,1119,1122,3,784,392,0,1120,1122,3,826,413, - 0,1121,1083,1,0,0,0,1121,1088,1,0,0,0,1121,1091,1,0,0,0,1121,1092, - 1,0,0,0,1121,1093,1,0,0,0,1121,1094,1,0,0,0,1121,1095,1,0,0,0,1121, - 1096,1,0,0,0,1121,1097,1,0,0,0,1121,1098,1,0,0,0,1121,1099,1,0,0, - 0,1121,1100,1,0,0,0,1121,1101,1,0,0,0,1121,1102,1,0,0,0,1121,1103, - 1,0,0,0,1121,1104,1,0,0,0,1121,1105,1,0,0,0,1121,1106,1,0,0,0,1121, - 1107,1,0,0,0,1121,1110,1,0,0,0,1121,1113,1,0,0,0,1121,1116,1,0,0, - 0,1121,1118,1,0,0,0,1121,1120,1,0,0,0,1122,11,1,0,0,0,1123,1132, - 3,10,5,0,1124,1125,5,348,0,0,1125,1132,5,571,0,0,1126,1127,7,3,0, - 0,1127,1132,3,816,408,0,1128,1129,5,68,0,0,1129,1130,7,1,0,0,1130, - 1132,3,816,408,0,1131,1123,1,0,0,0,1131,1124,1,0,0,0,1131,1126,1, - 0,0,0,1131,1128,1,0,0,0,1132,13,1,0,0,0,1133,1134,5,46,0,0,1134, - 1135,5,99,0,0,1135,1137,3,814,407,0,1136,1138,5,105,0,0,1137,1136, - 1,0,0,0,1137,1138,1,0,0,0,1138,1142,1,0,0,0,1139,1141,3,12,6,0,1140, - 1139,1,0,0,0,1141,1144,1,0,0,0,1142,1140,1,0,0,0,1142,1143,1,0,0, - 0,1143,15,1,0,0,0,1144,1142,1,0,0,0,1145,1146,5,138,0,0,1146,1147, - 7,2,0,0,1147,1149,3,814,407,0,1148,1150,5,105,0,0,1149,1148,1,0, - 0,0,1149,1150,1,0,0,0,1150,1154,1,0,0,0,1151,1153,3,10,5,0,1152, - 1151,1,0,0,0,1153,1156,1,0,0,0,1154,1152,1,0,0,0,1154,1155,1,0,0, - 0,1155,17,1,0,0,0,1156,1154,1,0,0,0,1157,1158,5,138,0,0,1158,1161, - 7,2,0,0,1159,1162,5,30,0,0,1160,1162,3,814,407,0,1161,1159,1,0,0, - 0,1161,1160,1,0,0,0,1162,1163,1,0,0,0,1163,1164,5,68,0,0,1164,1165, - 5,175,0,0,1165,1166,3,788,394,0,1166,1167,3,64,32,0,1167,19,1,0, - 0,0,1168,1169,5,138,0,0,1169,1170,5,442,0,0,1170,1172,3,794,397, - 0,1171,1173,3,368,184,0,1172,1171,1,0,0,0,1172,1173,1,0,0,0,1173, - 1174,1,0,0,0,1174,1175,3,22,11,0,1175,21,1,0,0,0,1176,1180,3,24, - 12,0,1177,1179,3,24,12,0,1178,1177,1,0,0,0,1179,1182,1,0,0,0,1180, - 1178,1,0,0,0,1180,1181,1,0,0,0,1181,1184,1,0,0,0,1182,1180,1,0,0, - 0,1183,1185,5,315,0,0,1184,1183,1,0,0,0,1184,1185,1,0,0,0,1185,1203, - 1,0,0,0,1186,1187,5,309,0,0,1187,1188,5,94,0,0,1188,1203,3,792,396, - 0,1189,1190,5,282,0,0,1190,1191,5,94,0,0,1191,1203,3,814,407,0,1192, - 1193,5,333,0,0,1193,1194,5,323,0,0,1194,1203,3,32,16,0,1195,1197, - 5,269,0,0,1196,1195,1,0,0,0,1196,1197,1,0,0,0,1197,1198,1,0,0,0, - 1198,1199,5,462,0,0,1199,1200,5,80,0,0,1200,1201,5,204,0,0,1201, - 1203,3,818,409,0,1202,1176,1,0,0,0,1202,1186,1,0,0,0,1202,1189,1, - 0,0,0,1202,1192,1,0,0,0,1202,1196,1,0,0,0,1203,23,1,0,0,0,1204,1247, - 5,222,0,0,1205,1247,5,338,0,0,1206,1247,5,377,0,0,1207,1209,5,77, - 0,0,1208,1207,1,0,0,0,1208,1209,1,0,0,0,1209,1210,1,0,0,0,1210,1247, - 5,250,0,0,1211,1213,5,205,0,0,1212,1211,1,0,0,0,1212,1213,1,0,0, - 0,1213,1214,1,0,0,0,1214,1215,5,327,0,0,1215,1222,5,243,0,0,1216, - 1218,5,205,0,0,1217,1216,1,0,0,0,1217,1218,1,0,0,0,1218,1219,1,0, - 0,0,1219,1220,5,327,0,0,1220,1222,5,181,0,0,1221,1212,1,0,0,0,1221, - 1217,1,0,0,0,1222,1247,1,0,0,0,1223,1224,5,460,0,0,1224,1247,7,4, - 0,0,1225,1226,5,170,0,0,1226,1247,3,824,412,0,1227,1228,5,320,0, - 0,1228,1247,3,818,409,0,1229,1230,5,333,0,0,1230,1231,3,818,409, - 0,1231,1234,7,5,0,0,1232,1235,3,818,409,0,1233,1235,5,53,0,0,1234, - 1232,1,0,0,0,1234,1233,1,0,0,0,1235,1247,1,0,0,0,1236,1237,5,333, - 0,0,1237,1238,3,818,409,0,1238,1239,5,64,0,0,1239,1240,5,434,0,0, - 1240,1247,1,0,0,0,1241,1244,5,313,0,0,1242,1245,3,818,409,0,1243, - 1245,5,30,0,0,1244,1242,1,0,0,0,1244,1243,1,0,0,0,1245,1247,1,0, - 0,0,1246,1204,1,0,0,0,1246,1205,1,0,0,0,1246,1206,1,0,0,0,1246,1208, - 1,0,0,0,1246,1221,1,0,0,0,1246,1223,1,0,0,0,1246,1225,1,0,0,0,1246, - 1227,1,0,0,0,1246,1229,1,0,0,0,1246,1236,1,0,0,0,1246,1241,1,0,0, - 0,1247,25,1,0,0,0,1248,1249,5,46,0,0,1249,1250,5,66,0,0,1250,1252, - 3,814,407,0,1251,1253,5,105,0,0,1252,1251,1,0,0,0,1252,1253,1,0, - 0,0,1253,1257,1,0,0,0,1254,1256,3,12,6,0,1255,1254,1,0,0,0,1256, - 1259,1,0,0,0,1257,1255,1,0,0,0,1257,1258,1,0,0,0,1258,27,1,0,0,0, - 1259,1257,1,0,0,0,1260,1261,5,138,0,0,1261,1262,5,66,0,0,1262,1263, - 3,814,407,0,1263,1264,7,6,0,0,1264,1265,5,99,0,0,1265,1266,3,816, - 408,0,1266,29,1,0,0,0,1267,1268,5,46,0,0,1268,1270,5,323,0,0,1269, - 1271,3,294,147,0,1270,1269,1,0,0,0,1270,1271,1,0,0,0,1271,1278,1, - 0,0,0,1272,1274,3,32,16,0,1273,1272,1,0,0,0,1273,1274,1,0,0,0,1274, - 1275,1,0,0,0,1275,1276,5,106,0,0,1276,1279,3,814,407,0,1277,1279, - 3,32,16,0,1278,1273,1,0,0,0,1278,1277,1,0,0,0,1279,1283,1,0,0,0, - 1280,1282,3,34,17,0,1281,1280,1,0,0,0,1282,1285,1,0,0,0,1283,1281, - 1,0,0,0,1283,1284,1,0,0,0,1284,31,1,0,0,0,1285,1283,1,0,0,0,1286, - 1287,3,316,158,0,1287,33,1,0,0,0,1288,1295,3,120,60,0,1289,1295, - 3,358,179,0,1290,1295,3,196,98,0,1291,1295,3,256,128,0,1292,1295, - 3,334,167,0,1293,1295,3,476,238,0,1294,1288,1,0,0,0,1294,1289,1, - 0,0,0,1294,1290,1,0,0,0,1294,1291,1,0,0,0,1294,1292,1,0,0,0,1294, - 1293,1,0,0,0,1295,35,1,0,0,0,1296,1298,5,333,0,0,1297,1299,7,7,0, - 0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300,1301, - 3,38,19,0,1301,37,1,0,0,0,1302,1303,5,356,0,0,1303,1311,3,474,237, - 0,1304,1305,5,332,0,0,1305,1306,5,154,0,0,1306,1307,5,36,0,0,1307, - 1308,5,356,0,0,1308,1311,3,474,237,0,1309,1311,3,42,21,0,1310,1302, - 1,0,0,0,1310,1304,1,0,0,0,1310,1309,1,0,0,0,1311,39,1,0,0,0,1312, - 1315,5,30,0,0,1313,1315,3,44,22,0,1314,1312,1,0,0,0,1314,1313,1, - 0,0,0,1315,1317,1,0,0,0,1316,1318,7,5,0,0,1317,1316,1,0,0,0,1317, - 1318,1,0,0,0,1318,1321,1,0,0,0,1319,1322,5,53,0,0,1320,1322,3,46, - 23,0,1321,1319,1,0,0,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322, - 41,1,0,0,0,1323,1324,5,418,0,0,1324,1325,5,386,0,0,1325,1352,3,56, - 28,0,1326,1327,5,152,0,0,1327,1352,3,808,404,0,1328,1329,5,323,0, - 0,1329,1352,3,790,395,0,1330,1333,5,267,0,0,1331,1334,3,808,404, - 0,1332,1334,5,53,0,0,1333,1331,1,0,0,0,1333,1332,1,0,0,0,1333,1334, - 1,0,0,0,1334,1352,1,0,0,0,1335,1336,5,318,0,0,1336,1352,3,58,29, - 0,1337,1338,5,332,0,0,1338,1339,5,106,0,0,1339,1352,3,58,29,0,1340, - 1341,5,383,0,0,1341,1342,5,279,0,0,1342,1352,3,696,348,0,1343,1344, - 5,356,0,0,1344,1345,5,337,0,0,1345,1352,3,808,404,0,1346,1347,3, - 44,22,0,1347,1348,5,64,0,0,1348,1349,5,434,0,0,1349,1352,1,0,0,0, - 1350,1352,3,40,20,0,1351,1323,1,0,0,0,1351,1326,1,0,0,0,1351,1328, - 1,0,0,0,1351,1330,1,0,0,0,1351,1335,1,0,0,0,1351,1337,1,0,0,0,1351, - 1340,1,0,0,0,1351,1343,1,0,0,0,1351,1346,1,0,0,0,1351,1350,1,0,0, - 0,1352,43,1,0,0,0,1353,1358,3,818,409,0,1354,1355,5,11,0,0,1355, - 1357,3,818,409,0,1356,1354,1,0,0,0,1357,1360,1,0,0,0,1358,1356,1, - 0,0,0,1358,1359,1,0,0,0,1359,45,1,0,0,0,1360,1358,1,0,0,0,1361,1366, - 3,48,24,0,1362,1363,5,6,0,0,1363,1365,3,48,24,0,1364,1362,1,0,0, - 0,1365,1368,1,0,0,0,1366,1364,1,0,0,0,1366,1367,1,0,0,0,1367,47, - 1,0,0,0,1368,1366,1,0,0,0,1369,1372,3,54,27,0,1370,1372,3,202,101, - 0,1371,1369,1,0,0,0,1371,1370,1,0,0,0,1372,49,1,0,0,0,1373,1374, - 5,300,0,0,1374,1379,7,8,0,0,1375,1376,5,310,0,0,1376,1379,5,300, - 0,0,1377,1379,5,330,0,0,1378,1373,1,0,0,0,1378,1375,1,0,0,0,1378, - 1377,1,0,0,0,1379,51,1,0,0,0,1380,1387,5,96,0,0,1381,1387,5,60,0, - 0,1382,1387,5,80,0,0,1383,1387,3,800,400,0,1384,1387,3,832,416,0, - 1385,1387,3,808,404,0,1386,1380,1,0,0,0,1386,1381,1,0,0,0,1386,1382, - 1,0,0,0,1386,1383,1,0,0,0,1386,1384,1,0,0,0,1386,1385,1,0,0,0,1387, - 53,1,0,0,0,1388,1393,5,96,0,0,1389,1393,5,60,0,0,1390,1393,5,80, - 0,0,1391,1393,3,58,29,0,1392,1388,1,0,0,0,1392,1389,1,0,0,0,1392, - 1390,1,0,0,0,1392,1391,1,0,0,0,1393,55,1,0,0,0,1394,1409,3,808,404, - 0,1395,1409,5,53,0,0,1396,1409,3,826,413,0,1397,1398,5,403,0,0,1398, - 1400,3,808,404,0,1399,1401,3,668,334,0,1400,1399,1,0,0,0,1400,1401, - 1,0,0,0,1401,1409,1,0,0,0,1402,1403,5,403,0,0,1403,1404,3,660,330, - 0,1404,1405,3,808,404,0,1405,1409,1,0,0,0,1406,1409,3,202,101,0, - 1407,1409,5,254,0,0,1408,1394,1,0,0,0,1408,1395,1,0,0,0,1408,1396, - 1,0,0,0,1408,1397,1,0,0,0,1408,1402,1,0,0,0,1408,1406,1,0,0,0,1408, - 1407,1,0,0,0,1409,57,1,0,0,0,1410,1413,3,822,411,0,1411,1413,3,808, - 404,0,1412,1410,1,0,0,0,1412,1411,1,0,0,0,1413,59,1,0,0,0,1414,1415, - 5,313,0,0,1415,1416,3,62,31,0,1416,61,1,0,0,0,1417,1418,5,418,0, - 0,1418,1427,5,386,0,0,1419,1420,5,356,0,0,1420,1421,5,244,0,0,1421, - 1427,5,251,0,0,1422,1423,5,332,0,0,1423,1427,5,106,0,0,1424,1427, - 5,30,0,0,1425,1427,3,44,22,0,1426,1417,1,0,0,0,1426,1419,1,0,0,0, - 1426,1422,1,0,0,0,1426,1424,1,0,0,0,1426,1425,1,0,0,0,1427,63,1, - 0,0,0,1428,1429,5,333,0,0,1429,1432,3,38,19,0,1430,1432,3,60,30, - 0,1431,1428,1,0,0,0,1431,1430,1,0,0,0,1432,65,1,0,0,0,1433,1434, - 5,333,0,0,1434,1437,3,42,21,0,1435,1437,3,60,30,0,1436,1433,1,0, - 0,0,1436,1435,1,0,0,0,1437,67,1,0,0,0,1438,1448,5,335,0,0,1439,1449, - 3,44,22,0,1440,1441,5,418,0,0,1441,1449,5,386,0,0,1442,1443,5,356, - 0,0,1443,1444,5,244,0,0,1444,1449,5,251,0,0,1445,1446,5,332,0,0, - 1446,1449,5,106,0,0,1447,1449,5,30,0,0,1448,1439,1,0,0,0,1448,1440, - 1,0,0,0,1448,1442,1,0,0,0,1448,1445,1,0,0,0,1448,1447,1,0,0,0,1449, - 69,1,0,0,0,1450,1451,5,333,0,0,1451,1454,5,165,0,0,1452,1455,5,30, - 0,0,1453,1455,3,760,380,0,1454,1452,1,0,0,0,1454,1453,1,0,0,0,1455, - 1456,1,0,0,0,1456,1457,7,9,0,0,1457,71,1,0,0,0,1458,1459,5,155,0, - 0,1459,73,1,0,0,0,1460,1461,5,187,0,0,1461,1462,7,10,0,0,1462,75, - 1,0,0,0,1463,1464,5,138,0,0,1464,1466,5,92,0,0,1465,1467,3,422,211, - 0,1466,1465,1,0,0,0,1466,1467,1,0,0,0,1467,1468,1,0,0,0,1468,1471, - 3,624,312,0,1469,1472,3,78,39,0,1470,1472,3,88,44,0,1471,1469,1, - 0,0,0,1471,1470,1,0,0,0,1472,1585,1,0,0,0,1473,1474,5,138,0,0,1474, - 1475,5,92,0,0,1475,1476,5,30,0,0,1476,1477,5,68,0,0,1477,1481,3, - 176,88,0,1478,1479,5,281,0,0,1479,1480,5,147,0,0,1480,1482,3,816, - 408,0,1481,1478,1,0,0,0,1481,1482,1,0,0,0,1482,1483,1,0,0,0,1483, - 1484,5,333,0,0,1484,1485,5,351,0,0,1485,1487,3,768,384,0,1486,1488, - 5,272,0,0,1487,1486,1,0,0,0,1487,1488,1,0,0,0,1488,1585,1,0,0,0, - 1489,1490,5,138,0,0,1490,1492,5,92,0,0,1491,1493,3,422,211,0,1492, - 1491,1,0,0,0,1492,1493,1,0,0,0,1493,1494,1,0,0,0,1494,1495,3,774, - 387,0,1495,1500,3,90,45,0,1496,1497,5,62,0,0,1497,1498,5,422,0,0, - 1498,1501,3,80,40,0,1499,1501,5,53,0,0,1500,1496,1,0,0,0,1500,1499, - 1,0,0,0,1501,1585,1,0,0,0,1502,1503,5,138,0,0,1503,1505,5,92,0,0, - 1504,1506,3,422,211,0,1505,1504,1,0,0,0,1505,1506,1,0,0,0,1506,1507, - 1,0,0,0,1507,1508,3,774,387,0,1508,1509,5,436,0,0,1509,1510,5,285, - 0,0,1510,1512,3,780,390,0,1511,1513,7,11,0,0,1512,1511,1,0,0,0,1512, - 1513,1,0,0,0,1513,1585,1,0,0,0,1514,1515,5,138,0,0,1515,1517,5,226, - 0,0,1516,1518,3,422,211,0,1517,1516,1,0,0,0,1517,1518,1,0,0,0,1518, - 1519,1,0,0,0,1519,1522,3,780,390,0,1520,1523,3,78,39,0,1521,1523, - 3,90,45,0,1522,1520,1,0,0,0,1522,1521,1,0,0,0,1523,1585,1,0,0,0, - 1524,1525,5,138,0,0,1525,1526,5,226,0,0,1526,1527,5,30,0,0,1527, - 1528,5,68,0,0,1528,1532,3,176,88,0,1529,1530,5,281,0,0,1530,1531, - 5,147,0,0,1531,1533,3,816,408,0,1532,1529,1,0,0,0,1532,1533,1,0, - 0,0,1533,1534,1,0,0,0,1534,1535,5,333,0,0,1535,1537,3,176,88,0,1536, - 1538,5,272,0,0,1537,1536,1,0,0,0,1537,1538,1,0,0,0,1538,1585,1,0, - 0,0,1539,1540,5,138,0,0,1540,1542,5,328,0,0,1541,1543,3,422,211, - 0,1542,1541,1,0,0,0,1542,1543,1,0,0,0,1543,1544,1,0,0,0,1544,1545, - 3,780,390,0,1545,1546,3,78,39,0,1546,1585,1,0,0,0,1547,1549,5,138, - 0,0,1548,1550,5,259,0,0,1549,1548,1,0,0,0,1549,1550,1,0,0,0,1550, - 1551,1,0,0,0,1551,1553,5,376,0,0,1552,1554,3,422,211,0,1553,1552, - 1,0,0,0,1553,1554,1,0,0,0,1554,1555,1,0,0,0,1555,1556,3,778,389, - 0,1556,1557,3,78,39,0,1557,1585,1,0,0,0,1558,1559,5,138,0,0,1559, - 1560,5,259,0,0,1560,1561,5,376,0,0,1561,1562,5,30,0,0,1562,1563, - 5,68,0,0,1563,1567,3,176,88,0,1564,1565,5,281,0,0,1565,1566,5,147, - 0,0,1566,1568,3,816,408,0,1567,1564,1,0,0,0,1567,1568,1,0,0,0,1568, - 1569,1,0,0,0,1569,1570,5,333,0,0,1570,1571,5,351,0,0,1571,1573,3, - 768,384,0,1572,1574,5,272,0,0,1573,1572,1,0,0,0,1573,1574,1,0,0, - 0,1574,1585,1,0,0,0,1575,1576,5,138,0,0,1576,1577,5,63,0,0,1577, - 1579,5,92,0,0,1578,1580,3,422,211,0,1579,1578,1,0,0,0,1579,1580, - 1,0,0,0,1580,1581,1,0,0,0,1581,1582,3,624,312,0,1582,1583,3,78,39, - 0,1583,1585,1,0,0,0,1584,1463,1,0,0,0,1584,1473,1,0,0,0,1584,1489, - 1,0,0,0,1584,1502,1,0,0,0,1584,1514,1,0,0,0,1584,1524,1,0,0,0,1584, - 1539,1,0,0,0,1584,1547,1,0,0,0,1584,1558,1,0,0,0,1584,1575,1,0,0, - 0,1585,77,1,0,0,0,1586,1591,3,92,46,0,1587,1588,5,6,0,0,1588,1590, - 3,92,46,0,1589,1587,1,0,0,0,1590,1593,1,0,0,0,1591,1589,1,0,0,0, - 1591,1592,1,0,0,0,1592,79,1,0,0,0,1593,1591,1,0,0,0,1594,1595,5, - 68,0,0,1595,1604,3,534,267,0,1596,1597,5,64,0,0,1597,1598,3,82,41, - 0,1598,1599,5,94,0,0,1599,1600,3,82,41,0,1600,1604,1,0,0,0,1601, - 1602,5,105,0,0,1602,1604,3,86,43,0,1603,1594,1,0,0,0,1603,1596,1, - 0,0,0,1603,1601,1,0,0,0,1604,81,1,0,0,0,1605,1606,5,2,0,0,1606,1611, - 3,84,42,0,1607,1608,5,6,0,0,1608,1610,3,84,42,0,1609,1607,1,0,0, - 0,1610,1613,1,0,0,0,1611,1609,1,0,0,0,1611,1612,1,0,0,0,1612,1614, - 1,0,0,0,1613,1611,1,0,0,0,1614,1615,5,3,0,0,1615,83,1,0,0,0,1616, - 1620,3,534,267,0,1617,1620,5,262,0,0,1618,1620,5,260,0,0,1619,1616, - 1,0,0,0,1619,1617,1,0,0,0,1619,1618,1,0,0,0,1620,85,1,0,0,0,1621, - 1622,5,2,0,0,1622,1623,5,533,0,0,1623,1624,3,202,101,0,1624,1625, - 5,6,0,0,1625,1626,5,534,0,0,1626,1627,3,202,101,0,1627,1628,5,3, - 0,0,1628,87,1,0,0,0,1629,1630,3,90,45,0,1630,1631,3,106,53,0,1631, - 1636,1,0,0,0,1632,1633,5,436,0,0,1633,1634,5,285,0,0,1634,1636,3, - 780,390,0,1635,1629,1,0,0,0,1635,1632,1,0,0,0,1636,89,1,0,0,0,1637, - 1638,5,435,0,0,1638,1639,5,285,0,0,1639,1640,3,780,390,0,1640,91, - 1,0,0,0,1641,1644,5,133,0,0,1642,1643,5,45,0,0,1643,1645,3,818,409, - 0,1644,1642,1,0,0,0,1644,1645,1,0,0,0,1645,1646,1,0,0,0,1646,1875, - 3,142,71,0,1647,1648,5,138,0,0,1648,1649,5,45,0,0,1649,1653,3,818, - 409,0,1650,1652,3,272,136,0,1651,1650,1,0,0,0,1652,1655,1,0,0,0, - 1653,1651,1,0,0,0,1653,1654,1,0,0,0,1654,1875,1,0,0,0,1655,1653, - 1,0,0,0,1656,1657,5,372,0,0,1657,1658,5,45,0,0,1658,1875,3,818,409, - 0,1659,1660,5,191,0,0,1660,1662,5,45,0,0,1661,1663,3,422,211,0,1662, - 1661,1,0,0,0,1662,1663,1,0,0,0,1663,1664,1,0,0,0,1664,1666,3,818, - 409,0,1665,1667,3,96,48,0,1666,1665,1,0,0,0,1666,1667,1,0,0,0,1667, - 1875,1,0,0,0,1668,1669,5,333,0,0,1669,1670,5,379,0,0,1670,1875,7, - 12,0,0,1671,1672,5,158,0,0,1672,1673,5,80,0,0,1673,1875,3,818,409, - 0,1674,1675,5,333,0,0,1675,1875,7,13,0,0,1676,1678,5,193,0,0,1677, - 1679,7,14,0,0,1678,1677,1,0,0,0,1678,1679,1,0,0,0,1679,1680,1,0, - 0,0,1680,1875,5,357,0,0,1681,1682,5,186,0,0,1682,1686,5,357,0,0, - 1683,1687,5,30,0,0,1684,1687,5,99,0,0,1685,1687,3,818,409,0,1686, - 1683,1,0,0,0,1686,1684,1,0,0,0,1686,1685,1,0,0,0,1687,1875,1,0,0, - 0,1688,1689,5,193,0,0,1689,1690,7,14,0,0,1690,1691,5,321,0,0,1691, - 1875,3,818,409,0,1692,1693,5,186,0,0,1693,1694,5,321,0,0,1694,1875, - 3,818,409,0,1695,1697,5,269,0,0,1696,1695,1,0,0,0,1696,1697,1,0, - 0,0,1697,1698,1,0,0,0,1698,1699,5,228,0,0,1699,1875,3,780,390,0, - 1700,1701,5,275,0,0,1701,1875,3,316,158,0,1702,1703,5,77,0,0,1703, - 1875,5,275,0,0,1704,1705,5,282,0,0,1705,1706,5,94,0,0,1706,1875, - 3,814,407,0,1707,1708,5,333,0,0,1708,1709,5,351,0,0,1709,1875,3, - 768,384,0,1710,1711,5,312,0,0,1711,1716,5,219,0,0,1712,1717,5,270, - 0,0,1713,1717,5,113,0,0,1714,1717,5,53,0,0,1715,1717,3,180,90,0, - 1716,1712,1,0,0,0,1716,1713,1,0,0,0,1716,1714,1,0,0,0,1716,1715, - 1,0,0,0,1717,1875,1,0,0,0,1718,1725,5,193,0,0,1719,1725,5,186,0, - 0,1720,1722,5,269,0,0,1721,1720,1,0,0,0,1721,1722,1,0,0,0,1722,1723, - 1,0,0,0,1723,1725,5,209,0,0,1724,1718,1,0,0,0,1724,1719,1,0,0,0, - 1724,1721,1,0,0,0,1725,1726,1,0,0,0,1726,1727,5,414,0,0,1727,1728, - 5,251,0,0,1728,1875,5,327,0,0,1729,1731,5,191,0,0,1730,1732,5,44, - 0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732,1734,1,0,0,0,1733,1735, - 3,422,211,0,1734,1733,1,0,0,0,1734,1735,1,0,0,0,1735,1736,1,0,0, - 0,1736,1738,3,800,400,0,1737,1739,3,96,48,0,1738,1737,1,0,0,0,1738, - 1739,1,0,0,0,1739,1875,1,0,0,0,1740,1742,5,133,0,0,1741,1743,5,44, - 0,0,1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1745,1,0,0,0,1744,1746, - 3,294,147,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0, - 0,1747,1875,3,132,66,0,1748,1750,5,138,0,0,1749,1751,5,44,0,0,1750, - 1749,1,0,0,0,1750,1751,1,0,0,0,1751,1752,1,0,0,0,1752,1755,3,800, - 400,0,1753,1756,3,94,47,0,1754,1756,3,222,111,0,1755,1753,1,0,0, - 0,1755,1754,1,0,0,0,1756,1875,1,0,0,0,1757,1759,5,138,0,0,1758,1760, - 5,44,0,0,1759,1758,1,0,0,0,1759,1760,1,0,0,0,1760,1761,1,0,0,0,1761, - 1762,3,800,400,0,1762,1763,7,15,0,0,1763,1764,5,77,0,0,1764,1765, - 5,78,0,0,1765,1875,1,0,0,0,1766,1768,5,138,0,0,1767,1769,5,44,0, - 0,1768,1767,1,0,0,0,1768,1769,1,0,0,0,1769,1770,1,0,0,0,1770,1771, - 3,800,400,0,1771,1772,5,191,0,0,1772,1774,5,437,0,0,1773,1775,3, - 422,211,0,1774,1773,1,0,0,0,1774,1775,1,0,0,0,1775,1875,1,0,0,0, - 1776,1778,5,138,0,0,1777,1779,5,44,0,0,1778,1777,1,0,0,0,1778,1779, - 1,0,0,0,1779,1780,1,0,0,0,1780,1781,3,800,400,0,1781,1782,5,333, - 0,0,1782,1783,5,342,0,0,1783,1784,3,812,406,0,1784,1875,1,0,0,0, - 1785,1787,5,138,0,0,1786,1788,5,44,0,0,1787,1786,1,0,0,0,1787,1788, - 1,0,0,0,1788,1789,1,0,0,0,1789,1791,3,800,400,0,1790,1785,1,0,0, - 0,1790,1791,1,0,0,0,1791,1792,1,0,0,0,1792,1793,7,16,0,0,1793,1875, - 3,100,50,0,1794,1796,5,138,0,0,1795,1797,5,44,0,0,1796,1795,1,0, - 0,0,1796,1797,1,0,0,0,1797,1798,1,0,0,0,1798,1799,3,800,400,0,1799, - 1800,5,333,0,0,1800,1801,5,345,0,0,1801,1802,3,818,409,0,1802,1875, - 1,0,0,0,1803,1805,5,138,0,0,1804,1806,5,44,0,0,1805,1804,1,0,0,0, - 1805,1806,1,0,0,0,1806,1807,1,0,0,0,1807,1808,3,800,400,0,1808,1809, - 5,133,0,0,1809,1810,5,438,0,0,1810,1811,3,138,69,0,1811,1812,5,36, - 0,0,1812,1821,5,219,0,0,1813,1815,5,2,0,0,1814,1816,3,200,100,0, - 1815,1814,1,0,0,0,1816,1817,1,0,0,0,1817,1815,1,0,0,0,1817,1818, - 1,0,0,0,1818,1819,1,0,0,0,1819,1820,5,3,0,0,1820,1822,1,0,0,0,1821, - 1813,1,0,0,0,1821,1822,1,0,0,0,1822,1875,1,0,0,0,1823,1825,5,138, - 0,0,1824,1826,5,44,0,0,1825,1824,1,0,0,0,1825,1826,1,0,0,0,1826, - 1827,1,0,0,0,1827,1841,3,800,400,0,1828,1833,5,314,0,0,1829,1831, - 5,105,0,0,1830,1829,1,0,0,0,1830,1831,1,0,0,0,1831,1832,1,0,0,0, - 1832,1834,3,202,101,0,1833,1830,1,0,0,0,1833,1834,1,0,0,0,1834,1842, - 1,0,0,0,1835,1839,5,333,0,0,1836,1840,3,200,100,0,1837,1838,5,438, - 0,0,1838,1840,3,138,69,0,1839,1836,1,0,0,0,1839,1837,1,0,0,0,1840, - 1842,1,0,0,0,1841,1828,1,0,0,0,1841,1835,1,0,0,0,1842,1843,1,0,0, - 0,1843,1841,1,0,0,0,1843,1844,1,0,0,0,1844,1875,1,0,0,0,1845,1847, - 5,138,0,0,1846,1848,5,44,0,0,1847,1846,1,0,0,0,1847,1848,1,0,0,0, - 1848,1849,1,0,0,0,1849,1850,3,800,400,0,1850,1851,5,191,0,0,1851, - 1853,5,219,0,0,1852,1854,3,422,211,0,1853,1852,1,0,0,0,1853,1854, - 1,0,0,0,1854,1875,1,0,0,0,1855,1857,5,138,0,0,1856,1858,5,44,0,0, - 1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1862, - 3,800,400,0,1860,1861,5,333,0,0,1861,1863,5,174,0,0,1862,1860,1, - 0,0,0,1862,1863,1,0,0,0,1863,1864,1,0,0,0,1864,1865,5,360,0,0,1865, - 1867,3,652,326,0,1866,1868,3,98,49,0,1867,1866,1,0,0,0,1867,1868, - 1,0,0,0,1868,1871,1,0,0,0,1869,1870,5,100,0,0,1870,1872,3,674,337, - 0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1875,1,0,0,0,1873,1875, - 3,222,111,0,1874,1641,1,0,0,0,1874,1647,1,0,0,0,1874,1656,1,0,0, - 0,1874,1659,1,0,0,0,1874,1668,1,0,0,0,1874,1671,1,0,0,0,1874,1674, - 1,0,0,0,1874,1676,1,0,0,0,1874,1681,1,0,0,0,1874,1688,1,0,0,0,1874, - 1692,1,0,0,0,1874,1696,1,0,0,0,1874,1700,1,0,0,0,1874,1702,1,0,0, - 0,1874,1704,1,0,0,0,1874,1707,1,0,0,0,1874,1710,1,0,0,0,1874,1724, - 1,0,0,0,1874,1729,1,0,0,0,1874,1740,1,0,0,0,1874,1748,1,0,0,0,1874, - 1757,1,0,0,0,1874,1766,1,0,0,0,1874,1776,1,0,0,0,1874,1790,1,0,0, - 0,1874,1794,1,0,0,0,1874,1803,1,0,0,0,1874,1823,1,0,0,0,1874,1845, - 1,0,0,0,1874,1855,1,0,0,0,1874,1873,1,0,0,0,1875,93,1,0,0,0,1876, - 1877,5,333,0,0,1877,1878,5,53,0,0,1878,1882,3,674,337,0,1879,1880, - 5,191,0,0,1880,1882,5,53,0,0,1881,1876,1,0,0,0,1881,1879,1,0,0,0, - 1882,95,1,0,0,0,1883,1884,7,17,0,0,1884,97,1,0,0,0,1885,1886,5,43, - 0,0,1886,1887,3,316,158,0,1887,99,1,0,0,0,1888,1889,5,2,0,0,1889, - 1894,3,104,52,0,1890,1891,5,6,0,0,1891,1893,3,104,52,0,1892,1890, - 1,0,0,0,1893,1896,1,0,0,0,1894,1892,1,0,0,0,1894,1895,1,0,0,0,1895, - 1897,1,0,0,0,1896,1894,1,0,0,0,1897,1898,5,3,0,0,1898,101,1,0,0, - 0,1899,1900,5,105,0,0,1900,1901,3,100,50,0,1901,103,1,0,0,0,1902, - 1907,3,824,412,0,1903,1904,5,10,0,0,1904,1908,3,288,144,0,1905,1906, - 5,11,0,0,1906,1908,3,286,143,0,1907,1903,1,0,0,0,1907,1905,1,0,0, - 0,1907,1908,1,0,0,0,1908,105,1,0,0,0,1909,1910,5,62,0,0,1910,1911, - 5,422,0,0,1911,1912,5,105,0,0,1912,1913,5,2,0,0,1913,1914,3,822, - 411,0,1914,1921,5,571,0,0,1915,1916,5,6,0,0,1916,1917,3,822,411, - 0,1917,1918,5,571,0,0,1918,1920,1,0,0,0,1919,1915,1,0,0,0,1920,1923, - 1,0,0,0,1921,1919,1,0,0,0,1921,1922,1,0,0,0,1922,1924,1,0,0,0,1923, - 1921,1,0,0,0,1924,1925,5,3,0,0,1925,1939,1,0,0,0,1926,1927,5,62, - 0,0,1927,1928,5,422,0,0,1928,1929,5,68,0,0,1929,1939,3,534,267,0, - 1930,1931,5,62,0,0,1931,1932,5,422,0,0,1932,1933,5,64,0,0,1933,1934, - 3,534,267,0,1934,1935,5,94,0,0,1935,1936,3,534,267,0,1936,1939,1, - 0,0,0,1937,1939,5,53,0,0,1938,1909,1,0,0,0,1938,1926,1,0,0,0,1938, - 1930,1,0,0,0,1938,1937,1,0,0,0,1939,107,1,0,0,0,1940,1941,5,138, - 0,0,1941,1942,5,360,0,0,1942,1943,3,316,158,0,1943,1948,3,110,55, - 0,1944,1945,5,6,0,0,1945,1947,3,110,55,0,1946,1944,1,0,0,0,1947, - 1950,1,0,0,0,1948,1946,1,0,0,0,1948,1949,1,0,0,0,1949,109,1,0,0, - 0,1950,1948,1,0,0,0,1951,1952,5,133,0,0,1952,1953,5,143,0,0,1953, - 1955,3,644,322,0,1954,1956,3,96,48,0,1955,1954,1,0,0,0,1955,1956, - 1,0,0,0,1956,1982,1,0,0,0,1957,1958,5,191,0,0,1958,1960,5,143,0, - 0,1959,1961,3,422,211,0,1960,1959,1,0,0,0,1960,1961,1,0,0,0,1961, - 1962,1,0,0,0,1962,1964,3,818,409,0,1963,1965,3,96,48,0,1964,1963, - 1,0,0,0,1964,1965,1,0,0,0,1965,1982,1,0,0,0,1966,1967,5,138,0,0, - 1967,1968,5,143,0,0,1968,1971,3,818,409,0,1969,1970,5,333,0,0,1970, - 1972,5,174,0,0,1971,1969,1,0,0,0,1971,1972,1,0,0,0,1972,1973,1,0, - 0,0,1973,1974,5,360,0,0,1974,1976,3,652,326,0,1975,1977,3,98,49, - 0,1976,1975,1,0,0,0,1976,1977,1,0,0,0,1977,1979,1,0,0,0,1978,1980, - 3,96,48,0,1979,1978,1,0,0,0,1979,1980,1,0,0,0,1980,1982,1,0,0,0, - 1981,1951,1,0,0,0,1981,1957,1,0,0,0,1981,1966,1,0,0,0,1982,111,1, - 0,0,0,1983,1986,5,157,0,0,1984,1987,3,818,409,0,1985,1987,5,30,0, - 0,1986,1984,1,0,0,0,1986,1985,1,0,0,0,1987,113,1,0,0,0,1988,1990, - 5,169,0,0,1989,1991,5,107,0,0,1990,1989,1,0,0,0,1990,1991,1,0,0, - 0,1991,1992,1,0,0,0,1992,1994,3,774,387,0,1993,1995,3,144,72,0,1994, - 1993,1,0,0,0,1994,1995,1,0,0,0,1995,1996,1,0,0,0,1996,1998,7,18, - 0,0,1997,1999,5,297,0,0,1998,1997,1,0,0,0,1998,1999,1,0,0,0,1999, - 2003,1,0,0,0,2000,2004,3,808,404,0,2001,2004,5,343,0,0,2002,2004, - 5,344,0,0,2003,2000,1,0,0,0,2003,2001,1,0,0,0,2003,2002,1,0,0,0, - 2004,2010,1,0,0,0,2005,2007,5,100,0,0,2006,2005,1,0,0,0,2006,2007, - 1,0,0,0,2007,2008,1,0,0,0,2008,2009,5,184,0,0,2009,2011,3,808,404, - 0,2010,2006,1,0,0,0,2010,2011,1,0,0,0,2011,2013,1,0,0,0,2012,2014, - 5,105,0,0,2013,2012,1,0,0,0,2013,2014,1,0,0,0,2014,2015,1,0,0,0, - 2015,2017,3,116,58,0,2016,2018,3,638,319,0,2017,2016,1,0,0,0,2017, - 2018,1,0,0,0,2018,2038,1,0,0,0,2019,2020,5,169,0,0,2020,2021,5,2, - 0,0,2021,2022,3,530,265,0,2022,2023,5,3,0,0,2023,2025,5,94,0,0,2024, - 2026,5,297,0,0,2025,2024,1,0,0,0,2025,2026,1,0,0,0,2026,2030,1,0, - 0,0,2027,2031,3,808,404,0,2028,2031,5,343,0,0,2029,2031,5,344,0, - 0,2030,2027,1,0,0,0,2030,2028,1,0,0,0,2030,2029,1,0,0,0,2031,2033, - 1,0,0,0,2032,2034,5,105,0,0,2033,2032,1,0,0,0,2033,2034,1,0,0,0, - 2034,2035,1,0,0,0,2035,2036,3,116,58,0,2036,2038,1,0,0,0,2037,1988, - 1,0,0,0,2037,2019,1,0,0,0,2038,115,1,0,0,0,2039,2063,5,107,0,0,2040, - 2063,5,112,0,0,2041,2043,7,19,0,0,2042,2044,5,36,0,0,2043,2042,1, - 0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,0,0,2045,2063,3,808,404,0, - 2046,2063,5,171,0,0,2047,2063,5,216,0,0,2048,2049,5,209,0,0,2049, - 2052,5,298,0,0,2050,2053,3,148,74,0,2051,2053,5,9,0,0,2052,2050, - 1,0,0,0,2052,2051,1,0,0,0,2053,2063,1,0,0,0,2054,2056,5,209,0,0, - 2055,2057,5,77,0,0,2056,2055,1,0,0,0,2056,2057,1,0,0,0,2057,2058, - 1,0,0,0,2058,2059,5,78,0,0,2059,2063,3,148,74,0,2060,2061,5,194, - 0,0,2061,2063,3,808,404,0,2062,2039,1,0,0,0,2062,2040,1,0,0,0,2062, - 2041,1,0,0,0,2062,2046,1,0,0,0,2062,2047,1,0,0,0,2062,2048,1,0,0, - 0,2062,2054,1,0,0,0,2062,2060,1,0,0,0,2063,2066,1,0,0,0,2064,2062, - 1,0,0,0,2064,2065,1,0,0,0,2065,2079,1,0,0,0,2066,2064,1,0,0,0,2067, - 2068,5,2,0,0,2068,2073,3,118,59,0,2069,2070,5,6,0,0,2070,2072,3, - 118,59,0,2071,2069,1,0,0,0,2072,2075,1,0,0,0,2073,2071,1,0,0,0,2073, - 2074,1,0,0,0,2074,2076,1,0,0,0,2075,2073,1,0,0,0,2076,2077,5,3,0, - 0,2077,2079,1,0,0,0,2078,2064,1,0,0,0,2078,2067,1,0,0,0,2079,117, - 1,0,0,0,2080,2095,3,824,412,0,2081,2096,3,54,27,0,2082,2096,3,202, - 101,0,2083,2096,5,9,0,0,2084,2085,5,2,0,0,2085,2090,3,52,26,0,2086, - 2087,5,6,0,0,2087,2089,3,52,26,0,2088,2086,1,0,0,0,2089,2092,1,0, - 0,0,2090,2088,1,0,0,0,2090,2091,1,0,0,0,2091,2093,1,0,0,0,2092,2090, - 1,0,0,0,2093,2094,5,3,0,0,2094,2096,1,0,0,0,2095,2081,1,0,0,0,2095, - 2082,1,0,0,0,2095,2083,1,0,0,0,2095,2084,1,0,0,0,2095,2096,1,0,0, - 0,2096,119,1,0,0,0,2097,2099,5,46,0,0,2098,2100,3,122,61,0,2099, - 2098,1,0,0,0,2099,2100,1,0,0,0,2100,2101,1,0,0,0,2101,2103,5,92, - 0,0,2102,2104,3,294,147,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104, - 2105,1,0,0,0,2105,2171,3,772,386,0,2106,2108,5,2,0,0,2107,2109,3, - 126,63,0,2108,2107,1,0,0,0,2108,2109,1,0,0,0,2109,2110,1,0,0,0,2110, - 2112,5,3,0,0,2111,2113,3,164,82,0,2112,2111,1,0,0,0,2112,2113,1, - 0,0,0,2113,2115,1,0,0,0,2114,2116,3,166,83,0,2115,2114,1,0,0,0,2115, - 2116,1,0,0,0,2116,2118,1,0,0,0,2117,2119,3,170,85,0,2118,2117,1, - 0,0,0,2118,2119,1,0,0,0,2119,2121,1,0,0,0,2120,2122,3,172,86,0,2121, - 2120,1,0,0,0,2121,2122,1,0,0,0,2122,2124,1,0,0,0,2123,2125,3,174, - 87,0,2124,2123,1,0,0,0,2124,2125,1,0,0,0,2125,2127,1,0,0,0,2126, - 2128,3,176,88,0,2127,2126,1,0,0,0,2127,2128,1,0,0,0,2128,2172,1, - 0,0,0,2129,2130,5,275,0,0,2130,2132,3,316,158,0,2131,2133,3,124, - 62,0,2132,2131,1,0,0,0,2132,2133,1,0,0,0,2133,2135,1,0,0,0,2134, - 2136,3,166,83,0,2135,2134,1,0,0,0,2135,2136,1,0,0,0,2136,2138,1, - 0,0,0,2137,2139,3,170,85,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139, - 2141,1,0,0,0,2140,2142,3,172,86,0,2141,2140,1,0,0,0,2141,2142,1, - 0,0,0,2142,2144,1,0,0,0,2143,2145,3,174,87,0,2144,2143,1,0,0,0,2144, - 2145,1,0,0,0,2145,2147,1,0,0,0,2146,2148,3,176,88,0,2147,2146,1, - 0,0,0,2147,2148,1,0,0,0,2148,2172,1,0,0,0,2149,2150,5,285,0,0,2150, - 2151,5,275,0,0,2151,2153,3,780,390,0,2152,2154,3,124,62,0,2153,2152, - 1,0,0,0,2153,2154,1,0,0,0,2154,2155,1,0,0,0,2155,2157,3,106,53,0, - 2156,2158,3,166,83,0,2157,2156,1,0,0,0,2157,2158,1,0,0,0,2158,2160, - 1,0,0,0,2159,2161,3,170,85,0,2160,2159,1,0,0,0,2160,2161,1,0,0,0, - 2161,2163,1,0,0,0,2162,2164,3,172,86,0,2163,2162,1,0,0,0,2163,2164, - 1,0,0,0,2164,2166,1,0,0,0,2165,2167,3,174,87,0,2166,2165,1,0,0,0, - 2166,2167,1,0,0,0,2167,2169,1,0,0,0,2168,2170,3,176,88,0,2169,2168, - 1,0,0,0,2169,2170,1,0,0,0,2170,2172,1,0,0,0,2171,2106,1,0,0,0,2171, - 2129,1,0,0,0,2171,2149,1,0,0,0,2172,121,1,0,0,0,2173,2179,5,354, - 0,0,2174,2179,5,352,0,0,2175,2176,7,20,0,0,2176,2179,7,21,0,0,2177, - 2179,5,367,0,0,2178,2173,1,0,0,0,2178,2174,1,0,0,0,2178,2175,1,0, - 0,0,2178,2177,1,0,0,0,2179,123,1,0,0,0,2180,2181,5,2,0,0,2181,2186, - 3,130,65,0,2182,2183,5,6,0,0,2183,2185,3,130,65,0,2184,2182,1,0, - 0,0,2185,2188,1,0,0,0,2186,2184,1,0,0,0,2186,2187,1,0,0,0,2187,2189, - 1,0,0,0,2188,2186,1,0,0,0,2189,2190,5,3,0,0,2190,125,1,0,0,0,2191, - 2196,3,128,64,0,2192,2193,5,6,0,0,2193,2195,3,128,64,0,2194,2192, - 1,0,0,0,2195,2198,1,0,0,0,2196,2194,1,0,0,0,2196,2197,1,0,0,0,2197, - 127,1,0,0,0,2198,2196,1,0,0,0,2199,2215,3,132,66,0,2200,2201,5,120, - 0,0,2201,2206,3,780,390,0,2202,2203,7,22,0,0,2203,2205,3,140,70, - 0,2204,2202,1,0,0,0,2205,2208,1,0,0,0,2206,2204,1,0,0,0,2206,2207, - 1,0,0,0,2207,2215,1,0,0,0,2208,2206,1,0,0,0,2209,2210,5,45,0,0,2210, - 2212,3,818,409,0,2211,2209,1,0,0,0,2211,2212,1,0,0,0,2212,2213,1, - 0,0,0,2213,2215,3,142,71,0,2214,2199,1,0,0,0,2214,2200,1,0,0,0,2214, - 2211,1,0,0,0,2215,129,1,0,0,0,2216,2219,3,802,401,0,2217,2218,5, - 105,0,0,2218,2220,5,280,0,0,2219,2217,1,0,0,0,2219,2220,1,0,0,0, - 2220,2224,1,0,0,0,2221,2223,3,134,67,0,2222,2221,1,0,0,0,2223,2226, - 1,0,0,0,2224,2222,1,0,0,0,2224,2225,1,0,0,0,2225,2233,1,0,0,0,2226, - 2224,1,0,0,0,2227,2228,5,45,0,0,2228,2230,3,818,409,0,2229,2227, - 1,0,0,0,2229,2230,1,0,0,0,2230,2231,1,0,0,0,2231,2233,3,142,71,0, - 2232,2216,1,0,0,0,2232,2229,1,0,0,0,2233,131,1,0,0,0,2234,2235,3, - 802,401,0,2235,2237,3,652,326,0,2236,2238,3,220,110,0,2237,2236, - 1,0,0,0,2237,2238,1,0,0,0,2238,2248,1,0,0,0,2239,2246,5,345,0,0, - 2240,2247,5,544,0,0,2241,2247,5,205,0,0,2242,2247,5,545,0,0,2243, - 2247,5,546,0,0,2244,2247,5,53,0,0,2245,2247,3,818,409,0,2246,2240, - 1,0,0,0,2246,2241,1,0,0,0,2246,2242,1,0,0,0,2246,2243,1,0,0,0,2246, - 2244,1,0,0,0,2246,2245,1,0,0,0,2247,2249,1,0,0,0,2248,2239,1,0,0, - 0,2248,2249,1,0,0,0,2249,2252,1,0,0,0,2250,2251,5,543,0,0,2251,2253, - 3,818,409,0,2252,2250,1,0,0,0,2252,2253,1,0,0,0,2253,2255,1,0,0, - 0,2254,2256,3,98,49,0,2255,2254,1,0,0,0,2255,2256,1,0,0,0,2256,2259, - 1,0,0,0,2257,2258,5,105,0,0,2258,2260,5,280,0,0,2259,2257,1,0,0, - 0,2259,2260,1,0,0,0,2260,2264,1,0,0,0,2261,2263,3,134,67,0,2262, - 2261,1,0,0,0,2263,2266,1,0,0,0,2264,2262,1,0,0,0,2264,2265,1,0,0, - 0,2265,133,1,0,0,0,2266,2264,1,0,0,0,2267,2268,5,45,0,0,2268,2270, - 3,818,409,0,2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270,2271,1,0,0, - 0,2271,2276,3,136,68,0,2272,2274,5,77,0,0,2273,2272,1,0,0,0,2273, - 2274,1,0,0,0,2274,2275,1,0,0,0,2275,2277,5,54,0,0,2276,2273,1,0, - 0,0,2276,2277,1,0,0,0,2277,2280,1,0,0,0,2278,2279,5,69,0,0,2279, - 2281,7,9,0,0,2280,2278,1,0,0,0,2280,2281,1,0,0,0,2281,135,1,0,0, - 0,2282,2284,5,77,0,0,2283,2282,1,0,0,0,2283,2284,1,0,0,0,2284,2285, - 1,0,0,0,2285,2363,5,78,0,0,2286,2288,5,98,0,0,2287,2289,3,400,200, - 0,2288,2287,1,0,0,0,2288,2289,1,0,0,0,2289,2291,1,0,0,0,2290,2292, - 3,178,89,0,2291,2290,1,0,0,0,2291,2292,1,0,0,0,2292,2363,1,0,0,0, - 2293,2299,5,98,0,0,2294,2296,5,273,0,0,2295,2297,5,77,0,0,2296,2295, - 1,0,0,0,2296,2297,1,0,0,0,2297,2298,1,0,0,0,2298,2300,5,56,0,0,2299, - 2294,1,0,0,0,2299,2300,1,0,0,0,2300,2303,1,0,0,0,2301,2302,5,441, - 0,0,2302,2304,3,360,180,0,2303,2301,1,0,0,0,2303,2304,1,0,0,0,2304, - 2306,1,0,0,0,2305,2307,3,572,286,0,2306,2305,1,0,0,0,2306,2307,1, - 0,0,0,2307,2309,1,0,0,0,2308,2310,3,178,89,0,2309,2308,1,0,0,0,2309, - 2310,1,0,0,0,2310,2363,1,0,0,0,2311,2312,5,85,0,0,2312,2314,5,245, - 0,0,2313,2315,3,400,200,0,2314,2313,1,0,0,0,2314,2315,1,0,0,0,2315, - 2317,1,0,0,0,2316,2318,3,178,89,0,2317,2316,1,0,0,0,2317,2318,1, - 0,0,0,2318,2363,1,0,0,0,2319,2320,5,42,0,0,2320,2321,5,2,0,0,2321, - 2322,3,674,337,0,2322,2325,5,3,0,0,2323,2324,5,269,0,0,2324,2326, - 5,228,0,0,2325,2323,1,0,0,0,2325,2326,1,0,0,0,2326,2363,1,0,0,0, - 2327,2328,5,53,0,0,2328,2363,3,682,341,0,2329,2330,5,438,0,0,2330, - 2331,3,138,69,0,2331,2348,5,36,0,0,2332,2341,5,219,0,0,2333,2335, - 5,2,0,0,2334,2336,3,200,100,0,2335,2334,1,0,0,0,2336,2337,1,0,0, - 0,2337,2335,1,0,0,0,2337,2338,1,0,0,0,2338,2339,1,0,0,0,2339,2340, - 5,3,0,0,2340,2342,1,0,0,0,2341,2333,1,0,0,0,2341,2342,1,0,0,0,2342, - 2349,1,0,0,0,2343,2344,5,2,0,0,2344,2345,3,674,337,0,2345,2346,5, - 3,0,0,2346,2347,5,440,0,0,2347,2349,1,0,0,0,2348,2332,1,0,0,0,2348, - 2343,1,0,0,0,2349,2363,1,0,0,0,2350,2351,5,86,0,0,2351,2353,3,780, - 390,0,2352,2354,3,144,72,0,2353,2352,1,0,0,0,2353,2354,1,0,0,0,2354, - 2356,1,0,0,0,2355,2357,3,152,76,0,2356,2355,1,0,0,0,2356,2357,1, - 0,0,0,2357,2359,1,0,0,0,2358,2360,3,156,78,0,2359,2358,1,0,0,0,2359, - 2360,1,0,0,0,2360,2363,1,0,0,0,2361,2363,3,98,49,0,2362,2283,1,0, - 0,0,2362,2286,1,0,0,0,2362,2293,1,0,0,0,2362,2311,1,0,0,0,2362,2319, - 1,0,0,0,2362,2327,1,0,0,0,2362,2329,1,0,0,0,2362,2350,1,0,0,0,2362, - 2361,1,0,0,0,2363,137,1,0,0,0,2364,2368,5,139,0,0,2365,2366,5,147, - 0,0,2366,2368,5,53,0,0,2367,2364,1,0,0,0,2367,2365,1,0,0,0,2368, - 139,1,0,0,0,2369,2370,7,23,0,0,2370,141,1,0,0,0,2371,2372,5,42,0, - 0,2372,2373,5,2,0,0,2373,2374,3,674,337,0,2374,2378,5,3,0,0,2375, - 2377,3,272,136,0,2376,2375,1,0,0,0,2377,2380,1,0,0,0,2378,2376,1, - 0,0,0,2378,2379,1,0,0,0,2379,2468,1,0,0,0,2380,2378,1,0,0,0,2381, - 2385,5,98,0,0,2382,2383,5,85,0,0,2383,2385,5,245,0,0,2384,2381,1, - 0,0,0,2384,2382,1,0,0,0,2385,2409,1,0,0,0,2386,2388,3,144,72,0,2387, - 2389,3,150,75,0,2388,2387,1,0,0,0,2388,2389,1,0,0,0,2389,2391,1, - 0,0,0,2390,2392,3,400,200,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0, - 2392,2394,1,0,0,0,2393,2395,3,178,89,0,2394,2393,1,0,0,0,2394,2395, - 1,0,0,0,2395,2399,1,0,0,0,2396,2398,3,272,136,0,2397,2396,1,0,0, - 0,2398,2401,1,0,0,0,2399,2397,1,0,0,0,2399,2400,1,0,0,0,2400,2410, - 1,0,0,0,2401,2399,1,0,0,0,2402,2406,3,180,90,0,2403,2405,3,272,136, - 0,2404,2403,1,0,0,0,2405,2408,1,0,0,0,2406,2404,1,0,0,0,2406,2407, - 1,0,0,0,2407,2410,1,0,0,0,2408,2406,1,0,0,0,2409,2386,1,0,0,0,2409, - 2402,1,0,0,0,2410,2468,1,0,0,0,2411,2413,5,199,0,0,2412,2414,3,170, - 85,0,2413,2412,1,0,0,0,2413,2414,1,0,0,0,2414,2415,1,0,0,0,2415, - 2416,5,2,0,0,2416,2421,3,154,77,0,2417,2418,5,6,0,0,2418,2420,3, - 154,77,0,2419,2417,1,0,0,0,2420,2423,1,0,0,0,2421,2419,1,0,0,0,2421, - 2422,1,0,0,0,2422,2424,1,0,0,0,2423,2421,1,0,0,0,2424,2426,5,3,0, - 0,2425,2427,3,150,75,0,2426,2425,1,0,0,0,2426,2427,1,0,0,0,2427, - 2429,1,0,0,0,2428,2430,3,400,200,0,2429,2428,1,0,0,0,2429,2430,1, - 0,0,0,2430,2432,1,0,0,0,2431,2433,3,178,89,0,2432,2431,1,0,0,0,2432, - 2433,1,0,0,0,2433,2439,1,0,0,0,2434,2435,5,103,0,0,2435,2436,5,2, - 0,0,2436,2437,3,674,337,0,2437,2438,5,3,0,0,2438,2440,1,0,0,0,2439, - 2434,1,0,0,0,2439,2440,1,0,0,0,2440,2444,1,0,0,0,2441,2443,3,272, - 136,0,2442,2441,1,0,0,0,2443,2446,1,0,0,0,2444,2442,1,0,0,0,2444, - 2445,1,0,0,0,2445,2468,1,0,0,0,2446,2444,1,0,0,0,2447,2448,5,63, - 0,0,2448,2449,5,245,0,0,2449,2450,3,144,72,0,2450,2451,5,86,0,0, - 2451,2453,3,780,390,0,2452,2454,3,144,72,0,2453,2452,1,0,0,0,2453, - 2454,1,0,0,0,2454,2456,1,0,0,0,2455,2457,3,152,76,0,2456,2455,1, - 0,0,0,2456,2457,1,0,0,0,2457,2459,1,0,0,0,2458,2460,3,156,78,0,2459, - 2458,1,0,0,0,2459,2460,1,0,0,0,2460,2464,1,0,0,0,2461,2463,3,272, - 136,0,2462,2461,1,0,0,0,2463,2466,1,0,0,0,2464,2462,1,0,0,0,2464, - 2465,1,0,0,0,2465,2468,1,0,0,0,2466,2464,1,0,0,0,2467,2371,1,0,0, - 0,2467,2384,1,0,0,0,2467,2411,1,0,0,0,2467,2447,1,0,0,0,2468,143, - 1,0,0,0,2469,2470,5,2,0,0,2470,2471,3,148,74,0,2471,2472,5,3,0,0, - 2472,145,1,0,0,0,2473,2474,5,2,0,0,2474,2479,3,802,401,0,2475,2476, - 5,6,0,0,2476,2478,3,802,401,0,2477,2475,1,0,0,0,2478,2481,1,0,0, - 0,2479,2477,1,0,0,0,2479,2480,1,0,0,0,2480,2482,1,0,0,0,2481,2479, - 1,0,0,0,2482,2483,5,3,0,0,2483,147,1,0,0,0,2484,2489,3,800,400,0, - 2485,2486,5,6,0,0,2486,2488,3,800,400,0,2487,2485,1,0,0,0,2488,2491, - 1,0,0,0,2489,2487,1,0,0,0,2489,2490,1,0,0,0,2490,149,1,0,0,0,2491, - 2489,1,0,0,0,2492,2493,5,441,0,0,2493,2494,3,144,72,0,2494,151,1, - 0,0,0,2495,2496,5,258,0,0,2496,2497,7,24,0,0,2497,153,1,0,0,0,2498, - 2499,3,362,181,0,2499,2506,5,105,0,0,2500,2507,3,414,207,0,2501, - 2502,5,278,0,0,2502,2503,5,2,0,0,2503,2504,3,414,207,0,2504,2505, - 5,3,0,0,2505,2507,1,0,0,0,2506,2500,1,0,0,0,2506,2501,1,0,0,0,2507, - 155,1,0,0,0,2508,2510,3,158,79,0,2509,2511,3,160,80,0,2510,2509, - 1,0,0,0,2510,2511,1,0,0,0,2511,2517,1,0,0,0,2512,2514,3,160,80,0, - 2513,2515,3,158,79,0,2514,2513,1,0,0,0,2514,2515,1,0,0,0,2515,2517, - 1,0,0,0,2516,2508,1,0,0,0,2516,2512,1,0,0,0,2517,157,1,0,0,0,2518, - 2519,5,80,0,0,2519,2520,5,369,0,0,2520,2521,3,162,81,0,2521,159, - 1,0,0,0,2522,2523,5,80,0,0,2523,2524,5,182,0,0,2524,2525,3,162,81, - 0,2525,161,1,0,0,0,2526,2527,5,269,0,0,2527,2536,5,132,0,0,2528, - 2536,5,315,0,0,2529,2536,5,150,0,0,2530,2531,5,333,0,0,2531,2533, - 7,25,0,0,2532,2534,3,148,74,0,2533,2532,1,0,0,0,2533,2534,1,0,0, - 0,2534,2536,1,0,0,0,2535,2526,1,0,0,0,2535,2528,1,0,0,0,2535,2529, - 1,0,0,0,2535,2530,1,0,0,0,2536,163,1,0,0,0,2537,2538,5,238,0,0,2538, - 2539,5,2,0,0,2539,2540,3,760,380,0,2540,2541,5,3,0,0,2541,165,1, - 0,0,0,2542,2543,5,285,0,0,2543,2544,5,147,0,0,2544,2545,3,818,409, - 0,2545,2546,5,2,0,0,2546,2551,3,168,84,0,2547,2548,5,6,0,0,2548, - 2550,3,168,84,0,2549,2547,1,0,0,0,2550,2553,1,0,0,0,2551,2549,1, - 0,0,0,2551,2552,1,0,0,0,2552,2554,1,0,0,0,2553,2551,1,0,0,0,2554, - 2555,5,3,0,0,2555,167,1,0,0,0,2556,2563,3,800,400,0,2557,2563,3, - 688,344,0,2558,2559,5,2,0,0,2559,2560,3,674,337,0,2560,2561,5,3, - 0,0,2561,2563,1,0,0,0,2562,2556,1,0,0,0,2562,2557,1,0,0,0,2562,2558, - 1,0,0,0,2563,2565,1,0,0,0,2564,2566,3,98,49,0,2565,2564,1,0,0,0, - 2565,2566,1,0,0,0,2566,2568,1,0,0,0,2567,2569,3,316,158,0,2568,2567, - 1,0,0,0,2568,2569,1,0,0,0,2569,169,1,0,0,0,2570,2571,5,100,0,0,2571, - 2572,3,818,409,0,2572,171,1,0,0,0,2573,2574,5,105,0,0,2574,2578, - 3,100,50,0,2575,2576,7,26,0,0,2576,2578,5,277,0,0,2577,2573,1,0, - 0,0,2577,2575,1,0,0,0,2578,173,1,0,0,0,2579,2580,5,80,0,0,2580,2586, - 5,161,0,0,2581,2587,5,191,0,0,2582,2583,5,182,0,0,2583,2587,5,320, - 0,0,2584,2585,5,292,0,0,2585,2587,5,320,0,0,2586,2581,1,0,0,0,2586, - 2582,1,0,0,0,2586,2584,1,0,0,0,2587,175,1,0,0,0,2588,2589,5,351, - 0,0,2589,2590,3,770,385,0,2590,177,1,0,0,0,2591,2592,5,100,0,0,2592, - 2593,5,226,0,0,2593,2594,3,176,88,0,2594,179,1,0,0,0,2595,2596,5, - 100,0,0,2596,2597,5,226,0,0,2597,2598,3,818,409,0,2598,181,1,0,0, - 0,2599,2600,5,46,0,0,2600,2605,5,342,0,0,2601,2603,3,294,147,0,2602, - 2601,1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,0,0,2604,2606,3,316, - 158,0,2605,2602,1,0,0,0,2605,2606,1,0,0,0,2606,2608,1,0,0,0,2607, - 2609,3,144,72,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2610,1, - 0,0,0,2610,2620,5,80,0,0,2611,2616,3,732,366,0,2612,2613,5,6,0,0, - 2613,2615,3,732,366,0,2614,2612,1,0,0,0,2615,2618,1,0,0,0,2616,2614, - 1,0,0,0,2616,2617,1,0,0,0,2617,2621,1,0,0,0,2618,2616,1,0,0,0,2619, - 2621,3,730,365,0,2620,2611,1,0,0,0,2620,2619,1,0,0,0,2621,2622,1, - 0,0,0,2622,2623,3,610,305,0,2623,183,1,0,0,0,2624,2625,5,138,0,0, - 2625,2627,5,342,0,0,2626,2628,3,422,211,0,2627,2626,1,0,0,0,2627, - 2628,1,0,0,0,2628,2629,1,0,0,0,2629,2630,3,316,158,0,2630,2631,5, - 333,0,0,2631,2632,5,342,0,0,2632,2633,3,812,406,0,2633,185,1,0,0, - 0,2634,2636,5,46,0,0,2635,2637,3,122,61,0,2636,2635,1,0,0,0,2636, - 2637,1,0,0,0,2637,2638,1,0,0,0,2638,2640,5,92,0,0,2639,2641,3,294, - 147,0,2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0,2642, - 2643,3,188,94,0,2643,2644,5,36,0,0,2644,2646,3,560,280,0,2645,2647, - 3,190,95,0,2646,2645,1,0,0,0,2646,2647,1,0,0,0,2647,187,1,0,0,0, - 2648,2650,3,772,386,0,2649,2651,3,146,73,0,2650,2649,1,0,0,0,2650, - 2651,1,0,0,0,2651,2653,1,0,0,0,2652,2654,3,170,85,0,2653,2652,1, - 0,0,0,2653,2654,1,0,0,0,2654,2656,1,0,0,0,2655,2657,3,172,86,0,2656, - 2655,1,0,0,0,2656,2657,1,0,0,0,2657,2659,1,0,0,0,2658,2660,3,174, - 87,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0,2660,2662,1,0,0,0,2661, - 2663,3,176,88,0,2662,2661,1,0,0,0,2662,2663,1,0,0,0,2663,189,1,0, - 0,0,2664,2668,5,105,0,0,2665,2669,5,174,0,0,2666,2667,5,269,0,0, - 2667,2669,5,174,0,0,2668,2665,1,0,0,0,2668,2666,1,0,0,0,2669,191, - 1,0,0,0,2670,2672,5,46,0,0,2671,2673,5,367,0,0,2672,2671,1,0,0,0, - 2672,2673,1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,259,0,0,2675,2677, - 5,376,0,0,2676,2678,3,294,147,0,2677,2676,1,0,0,0,2677,2678,1,0, - 0,0,2678,2679,1,0,0,0,2679,2681,3,776,388,0,2680,2682,3,146,73,0, - 2681,2680,1,0,0,0,2681,2682,1,0,0,0,2682,2684,1,0,0,0,2683,2685, - 3,170,85,0,2684,2683,1,0,0,0,2684,2685,1,0,0,0,2685,2687,1,0,0,0, - 2686,2688,3,102,51,0,2687,2686,1,0,0,0,2687,2688,1,0,0,0,2688,2690, - 1,0,0,0,2689,2691,3,176,88,0,2690,2689,1,0,0,0,2690,2691,1,0,0,0, - 2691,2692,1,0,0,0,2692,2693,5,36,0,0,2693,2695,3,560,280,0,2694, - 2696,3,190,95,0,2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696,193,1,0, - 0,0,2697,2698,5,305,0,0,2698,2699,5,259,0,0,2699,2701,5,376,0,0, - 2700,2702,5,109,0,0,2701,2700,1,0,0,0,2701,2702,1,0,0,0,2702,2703, - 1,0,0,0,2703,2705,3,778,389,0,2704,2706,3,190,95,0,2705,2704,1,0, - 0,0,2705,2706,1,0,0,0,2706,195,1,0,0,0,2707,2709,5,46,0,0,2708,2710, - 3,122,61,0,2709,2708,1,0,0,0,2709,2710,1,0,0,0,2710,2711,1,0,0,0, - 2711,2713,5,328,0,0,2712,2714,3,294,147,0,2713,2712,1,0,0,0,2713, - 2714,1,0,0,0,2714,2715,1,0,0,0,2715,2721,3,780,390,0,2716,2718,3, - 200,100,0,2717,2716,1,0,0,0,2718,2719,1,0,0,0,2719,2717,1,0,0,0, - 2719,2720,1,0,0,0,2720,2722,1,0,0,0,2721,2717,1,0,0,0,2721,2722, - 1,0,0,0,2722,197,1,0,0,0,2723,2724,5,138,0,0,2724,2726,5,328,0,0, - 2725,2727,3,422,211,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727,2728, - 1,0,0,0,2728,2730,3,780,390,0,2729,2731,3,200,100,0,2730,2729,1, - 0,0,0,2731,2732,1,0,0,0,2732,2730,1,0,0,0,2732,2733,1,0,0,0,2733, - 199,1,0,0,0,2734,2735,5,36,0,0,2735,2768,3,654,327,0,2736,2738,5, - 148,0,0,2737,2739,3,202,101,0,2738,2737,1,0,0,0,2738,2739,1,0,0, - 0,2739,2768,1,0,0,0,2740,2742,5,225,0,0,2741,2743,5,147,0,0,2742, - 2741,1,0,0,0,2742,2743,1,0,0,0,2743,2744,1,0,0,0,2744,2768,3,202, - 101,0,2745,2746,7,27,0,0,2746,2768,3,202,101,0,2747,2748,5,269,0, - 0,2748,2768,7,28,0,0,2749,2750,5,281,0,0,2750,2751,5,147,0,0,2751, - 2768,3,800,400,0,2752,2753,5,328,0,0,2753,2754,5,266,0,0,2754,2768, - 3,316,158,0,2755,2757,5,340,0,0,2756,2758,5,105,0,0,2757,2756,1, - 0,0,0,2757,2758,1,0,0,0,2758,2759,1,0,0,0,2759,2768,3,202,101,0, - 2760,2762,5,314,0,0,2761,2763,5,105,0,0,2762,2761,1,0,0,0,2762,2763, - 1,0,0,0,2763,2765,1,0,0,0,2764,2766,3,202,101,0,2765,2764,1,0,0, - 0,2765,2766,1,0,0,0,2766,2768,1,0,0,0,2767,2734,1,0,0,0,2767,2736, - 1,0,0,0,2767,2740,1,0,0,0,2767,2745,1,0,0,0,2767,2747,1,0,0,0,2767, - 2749,1,0,0,0,2767,2752,1,0,0,0,2767,2755,1,0,0,0,2767,2760,1,0,0, - 0,2768,201,1,0,0,0,2769,2771,7,29,0,0,2770,2769,1,0,0,0,2770,2771, - 1,0,0,0,2771,2772,1,0,0,0,2772,2775,5,573,0,0,2773,2775,3,812,406, - 0,2774,2770,1,0,0,0,2774,2773,1,0,0,0,2775,203,1,0,0,0,2776,2778, - 5,46,0,0,2777,2779,3,366,183,0,2778,2777,1,0,0,0,2778,2779,1,0,0, - 0,2779,2781,1,0,0,0,2780,2782,5,359,0,0,2781,2780,1,0,0,0,2781,2782, - 1,0,0,0,2782,2784,1,0,0,0,2783,2785,5,295,0,0,2784,2783,1,0,0,0, - 2784,2785,1,0,0,0,2785,2786,1,0,0,0,2786,2787,5,247,0,0,2787,2800, - 3,818,409,0,2788,2789,5,215,0,0,2789,2792,3,316,158,0,2790,2791, - 5,239,0,0,2791,2793,3,316,158,0,2792,2790,1,0,0,0,2792,2793,1,0, - 0,0,2793,2798,1,0,0,0,2794,2795,5,373,0,0,2795,2799,3,316,158,0, - 2796,2797,5,269,0,0,2797,2799,5,373,0,0,2798,2794,1,0,0,0,2798,2796, - 1,0,0,0,2798,2799,1,0,0,0,2799,2801,1,0,0,0,2800,2788,1,0,0,0,2800, - 2801,1,0,0,0,2801,205,1,0,0,0,2802,2803,5,46,0,0,2803,2806,3,176, - 88,0,2804,2805,5,282,0,0,2805,2807,3,814,407,0,2806,2804,1,0,0,0, - 2806,2807,1,0,0,0,2807,2808,1,0,0,0,2808,2809,5,255,0,0,2809,2811, - 3,808,404,0,2810,2812,3,102,51,0,2811,2810,1,0,0,0,2811,2812,1,0, - 0,0,2812,207,1,0,0,0,2813,2814,5,46,0,0,2814,2816,5,204,0,0,2815, - 2817,3,294,147,0,2816,2815,1,0,0,0,2816,2817,1,0,0,0,2817,2818,1, - 0,0,0,2818,2820,3,818,409,0,2819,2821,5,105,0,0,2820,2819,1,0,0, - 0,2820,2821,1,0,0,0,2821,2829,1,0,0,0,2822,2823,5,323,0,0,2823,2828, - 3,790,395,0,2824,2825,7,30,0,0,2825,2828,3,58,29,0,2826,2828,5,150, - 0,0,2827,2822,1,0,0,0,2827,2824,1,0,0,0,2827,2826,1,0,0,0,2828,2831, - 1,0,0,0,2829,2827,1,0,0,0,2829,2830,1,0,0,0,2830,209,1,0,0,0,2831, - 2829,1,0,0,0,2832,2833,5,138,0,0,2833,2834,5,204,0,0,2834,2835,3, - 818,409,0,2835,2840,5,369,0,0,2836,2837,5,94,0,0,2837,2839,3,58, - 29,0,2838,2836,1,0,0,0,2839,2842,1,0,0,0,2840,2838,1,0,0,0,2840, - 2841,1,0,0,0,2841,211,1,0,0,0,2842,2840,1,0,0,0,2843,2844,5,138, - 0,0,2844,2845,5,204,0,0,2845,2846,3,818,409,0,2846,2879,7,6,0,0, - 2847,2848,5,443,0,0,2848,2849,5,62,0,0,2849,2850,3,652,326,0,2850, - 2851,5,247,0,0,2851,2852,3,818,409,0,2852,2880,1,0,0,0,2853,2854, - 5,442,0,0,2854,2880,3,374,187,0,2855,2856,5,296,0,0,2856,2880,3, - 378,189,0,2857,2858,5,278,0,0,2858,2859,7,31,0,0,2859,2860,3,316, - 158,0,2860,2861,3,170,85,0,2861,2880,1,0,0,0,2862,2863,5,278,0,0, - 2863,2880,3,416,208,0,2864,2865,5,211,0,0,2865,2880,3,382,191,0, - 2866,2867,7,32,0,0,2867,2880,3,652,326,0,2868,2869,5,41,0,0,2869, - 2870,5,2,0,0,2870,2871,3,652,326,0,2871,2872,5,36,0,0,2872,2873, - 3,652,326,0,2873,2874,5,3,0,0,2874,2880,1,0,0,0,2875,2876,5,136, - 0,0,2876,2880,3,394,197,0,2877,2880,3,312,156,0,2878,2880,3,310, - 155,0,2879,2847,1,0,0,0,2879,2853,1,0,0,0,2879,2855,1,0,0,0,2879, - 2857,1,0,0,0,2879,2862,1,0,0,0,2879,2864,1,0,0,0,2879,2866,1,0,0, - 0,2879,2868,1,0,0,0,2879,2875,1,0,0,0,2879,2877,1,0,0,0,2879,2878, - 1,0,0,0,2880,213,1,0,0,0,2881,2882,5,46,0,0,2882,2883,5,63,0,0,2883, - 2884,5,174,0,0,2884,2885,5,381,0,0,2885,2891,3,818,409,0,2886,2888, - 3,216,108,0,2887,2886,1,0,0,0,2888,2889,1,0,0,0,2889,2887,1,0,0, - 0,2889,2890,1,0,0,0,2890,2892,1,0,0,0,2891,2887,1,0,0,0,2891,2892, - 1,0,0,0,2892,2894,1,0,0,0,2893,2895,3,220,110,0,2894,2893,1,0,0, - 0,2894,2895,1,0,0,0,2895,215,1,0,0,0,2896,2898,7,33,0,0,2897,2899, - 3,316,158,0,2898,2897,1,0,0,0,2898,2899,1,0,0,0,2899,2903,1,0,0, - 0,2900,2901,5,269,0,0,2901,2903,7,33,0,0,2902,2896,1,0,0,0,2902, - 2900,1,0,0,0,2903,217,1,0,0,0,2904,2905,5,138,0,0,2905,2906,5,63, - 0,0,2906,2907,5,174,0,0,2907,2908,5,381,0,0,2908,2922,3,818,409, - 0,2909,2911,3,216,108,0,2910,2909,1,0,0,0,2911,2912,1,0,0,0,2912, - 2910,1,0,0,0,2912,2913,1,0,0,0,2913,2915,1,0,0,0,2914,2910,1,0,0, - 0,2914,2915,1,0,0,0,2915,2916,1,0,0,0,2916,2923,3,222,111,0,2917, - 2919,3,216,108,0,2918,2917,1,0,0,0,2919,2920,1,0,0,0,2920,2918,1, - 0,0,0,2920,2921,1,0,0,0,2921,2923,1,0,0,0,2922,2914,1,0,0,0,2922, - 2918,1,0,0,0,2923,219,1,0,0,0,2924,2925,5,280,0,0,2925,2926,5,2, - 0,0,2926,2931,3,226,113,0,2927,2928,5,6,0,0,2928,2930,3,226,113, - 0,2929,2927,1,0,0,0,2930,2933,1,0,0,0,2931,2929,1,0,0,0,2931,2932, - 1,0,0,0,2932,2934,1,0,0,0,2933,2931,1,0,0,0,2934,2935,5,3,0,0,2935, - 221,1,0,0,0,2936,2937,5,280,0,0,2937,2938,5,2,0,0,2938,2943,3,224, - 112,0,2939,2940,5,6,0,0,2940,2942,3,224,112,0,2941,2939,1,0,0,0, - 2942,2945,1,0,0,0,2943,2941,1,0,0,0,2943,2944,1,0,0,0,2944,2946, - 1,0,0,0,2945,2943,1,0,0,0,2946,2947,5,3,0,0,2947,223,1,0,0,0,2948, - 2949,7,34,0,0,2949,2950,3,226,113,0,2950,225,1,0,0,0,2951,2952,3, - 824,412,0,2952,2953,3,808,404,0,2953,227,1,0,0,0,2954,2955,5,46, - 0,0,2955,2957,5,331,0,0,2956,2958,3,294,147,0,2957,2956,1,0,0,0, - 2957,2958,1,0,0,0,2958,2959,1,0,0,0,2959,2962,3,818,409,0,2960,2961, - 5,360,0,0,2961,2963,3,808,404,0,2962,2960,1,0,0,0,2962,2963,1,0, - 0,0,2963,2965,1,0,0,0,2964,2966,3,230,115,0,2965,2964,1,0,0,0,2965, - 2966,1,0,0,0,2966,2967,1,0,0,0,2967,2968,5,63,0,0,2968,2969,5,174, - 0,0,2969,2970,5,381,0,0,2970,2972,3,818,409,0,2971,2973,3,220,110, - 0,2972,2971,1,0,0,0,2972,2973,1,0,0,0,2973,229,1,0,0,0,2974,2977, - 5,375,0,0,2975,2978,3,808,404,0,2976,2978,5,78,0,0,2977,2975,1,0, - 0,0,2977,2976,1,0,0,0,2978,231,1,0,0,0,2979,2980,5,138,0,0,2980, - 2981,5,331,0,0,2981,2987,3,818,409,0,2982,2988,3,222,111,0,2983, - 2985,3,230,115,0,2984,2986,3,222,111,0,2985,2984,1,0,0,0,2985,2986, - 1,0,0,0,2986,2988,1,0,0,0,2987,2982,1,0,0,0,2987,2983,1,0,0,0,2988, - 233,1,0,0,0,2989,2990,5,46,0,0,2990,2991,5,63,0,0,2991,2993,5,92, - 0,0,2992,2994,3,294,147,0,2993,2992,1,0,0,0,2993,2994,1,0,0,0,2994, - 2995,1,0,0,0,2995,2996,3,772,386,0,2996,2998,5,2,0,0,2997,2999,3, - 126,63,0,2998,2997,1,0,0,0,2998,2999,1,0,0,0,2999,3000,1,0,0,0,3000, - 3002,5,3,0,0,3001,3003,3,164,82,0,3002,3001,1,0,0,0,3002,3003,1, - 0,0,0,3003,3004,1,0,0,0,3004,3005,5,331,0,0,3005,3007,3,818,409, - 0,3006,3008,3,220,110,0,3007,3006,1,0,0,0,3007,3008,1,0,0,0,3008, - 3029,1,0,0,0,3009,3010,5,46,0,0,3010,3011,5,63,0,0,3011,3013,5,92, - 0,0,3012,3014,3,294,147,0,3013,3012,1,0,0,0,3013,3014,1,0,0,0,3014, - 3015,1,0,0,0,3015,3016,3,772,386,0,3016,3017,5,285,0,0,3017,3018, - 5,275,0,0,3018,3020,3,774,387,0,3019,3021,3,124,62,0,3020,3019,1, - 0,0,0,3020,3021,1,0,0,0,3021,3022,1,0,0,0,3022,3023,3,106,53,0,3023, - 3024,5,331,0,0,3024,3026,3,818,409,0,3025,3027,3,220,110,0,3026, - 3025,1,0,0,0,3026,3027,1,0,0,0,3027,3029,1,0,0,0,3028,2989,1,0,0, - 0,3028,3009,1,0,0,0,3029,235,1,0,0,0,3030,3031,5,444,0,0,3031,3032, - 5,63,0,0,3032,3033,5,323,0,0,3033,3043,3,790,395,0,3034,3035,5,74, - 0,0,3035,3038,5,94,0,0,3036,3038,5,59,0,0,3037,3034,1,0,0,0,3037, - 3036,1,0,0,0,3038,3039,1,0,0,0,3039,3040,5,2,0,0,3040,3041,3,628, - 314,0,3041,3042,5,3,0,0,3042,3044,1,0,0,0,3043,3037,1,0,0,0,3043, - 3044,1,0,0,0,3044,3045,1,0,0,0,3045,3046,5,64,0,0,3046,3047,5,331, - 0,0,3047,3048,3,818,409,0,3048,3049,5,71,0,0,3049,3051,3,818,409, - 0,3050,3052,3,220,110,0,3051,3050,1,0,0,0,3051,3052,1,0,0,0,3052, - 237,1,0,0,0,3053,3054,5,46,0,0,3054,3055,5,99,0,0,3055,3057,5,257, - 0,0,3056,3058,3,294,147,0,3057,3056,1,0,0,0,3057,3058,1,0,0,0,3058, - 3059,1,0,0,0,3059,3062,5,62,0,0,3060,3063,3,814,407,0,3061,3063, - 5,99,0,0,3062,3060,1,0,0,0,3062,3061,1,0,0,0,3063,3064,1,0,0,0,3064, - 3065,5,331,0,0,3065,3067,3,818,409,0,3066,3068,3,220,110,0,3067, - 3066,1,0,0,0,3067,3068,1,0,0,0,3068,239,1,0,0,0,3069,3070,5,138, - 0,0,3070,3071,5,99,0,0,3071,3072,5,257,0,0,3072,3075,5,62,0,0,3073, - 3076,3,814,407,0,3074,3076,5,99,0,0,3075,3073,1,0,0,0,3075,3074, - 1,0,0,0,3076,3077,1,0,0,0,3077,3078,5,331,0,0,3078,3079,3,818,409, - 0,3079,3080,3,222,111,0,3080,241,1,0,0,0,3081,3082,5,46,0,0,3082, - 3083,5,445,0,0,3083,3084,3,818,409,0,3084,3085,5,80,0,0,3085,3092, - 3,780,390,0,3086,3090,5,36,0,0,3087,3091,5,541,0,0,3088,3091,5,542, - 0,0,3089,3091,3,826,413,0,3090,3087,1,0,0,0,3090,3088,1,0,0,0,3090, - 3089,1,0,0,0,3091,3093,1,0,0,0,3092,3086,1,0,0,0,3092,3093,1,0,0, - 0,3093,3096,1,0,0,0,3094,3095,5,62,0,0,3095,3097,7,35,0,0,3096,3094, - 1,0,0,0,3096,3097,1,0,0,0,3097,3100,1,0,0,0,3098,3099,5,94,0,0,3099, - 3101,3,816,408,0,3100,3098,1,0,0,0,3100,3101,1,0,0,0,3101,3103,1, - 0,0,0,3102,3104,3,250,125,0,3103,3102,1,0,0,0,3103,3104,1,0,0,0, - 3104,3106,1,0,0,0,3105,3107,3,252,126,0,3106,3105,1,0,0,0,3106,3107, - 1,0,0,0,3107,243,1,0,0,0,3108,3109,5,138,0,0,3109,3110,5,445,0,0, - 3110,3111,3,818,409,0,3111,3112,5,80,0,0,3112,3115,3,780,390,0,3113, - 3114,5,94,0,0,3114,3116,3,816,408,0,3115,3113,1,0,0,0,3115,3116, - 1,0,0,0,3116,3118,1,0,0,0,3117,3119,3,250,125,0,3118,3117,1,0,0, - 0,3118,3119,1,0,0,0,3119,3121,1,0,0,0,3120,3122,3,252,126,0,3121, - 3120,1,0,0,0,3121,3122,1,0,0,0,3122,245,1,0,0,0,3123,3124,5,138, - 0,0,3124,3125,5,296,0,0,3125,3127,3,796,398,0,3126,3128,3,368,184, - 0,3127,3126,1,0,0,0,3127,3128,1,0,0,0,3128,3155,1,0,0,0,3129,3133, - 3,248,124,0,3130,3132,3,248,124,0,3131,3130,1,0,0,0,3132,3135,1, - 0,0,0,3133,3131,1,0,0,0,3133,3134,1,0,0,0,3134,3137,1,0,0,0,3135, - 3133,1,0,0,0,3136,3138,5,315,0,0,3137,3136,1,0,0,0,3137,3138,1,0, - 0,0,3138,3156,1,0,0,0,3139,3140,5,309,0,0,3140,3141,5,94,0,0,3141, - 3156,3,798,399,0,3142,3143,5,282,0,0,3143,3144,5,94,0,0,3144,3156, - 3,814,407,0,3145,3146,5,333,0,0,3146,3147,5,323,0,0,3147,3156,3, - 32,16,0,3148,3150,5,269,0,0,3149,3148,1,0,0,0,3149,3150,1,0,0,0, - 3150,3151,1,0,0,0,3151,3152,5,462,0,0,3152,3153,5,80,0,0,3153,3154, - 5,204,0,0,3154,3156,3,818,409,0,3155,3129,1,0,0,0,3155,3139,1,0, - 0,0,3155,3142,1,0,0,0,3155,3145,1,0,0,0,3155,3149,1,0,0,0,3156,247, - 1,0,0,0,3157,3159,5,205,0,0,3158,3157,1,0,0,0,3158,3159,1,0,0,0, - 3159,3160,1,0,0,0,3160,3161,5,327,0,0,3161,3168,5,243,0,0,3162,3164, - 5,205,0,0,3163,3162,1,0,0,0,3163,3164,1,0,0,0,3164,3165,1,0,0,0, - 3165,3166,5,327,0,0,3166,3168,5,181,0,0,3167,3158,1,0,0,0,3167,3163, - 1,0,0,0,3168,3187,1,0,0,0,3169,3170,5,333,0,0,3170,3171,3,818,409, - 0,3171,3174,7,36,0,0,3172,3175,3,818,409,0,3173,3175,5,53,0,0,3174, - 3172,1,0,0,0,3174,3173,1,0,0,0,3175,3187,1,0,0,0,3176,3177,5,333, - 0,0,3177,3178,3,818,409,0,3178,3179,5,64,0,0,3179,3180,5,434,0,0, - 3180,3187,1,0,0,0,3181,3184,5,313,0,0,3182,3185,3,818,409,0,3183, - 3185,5,30,0,0,3184,3182,1,0,0,0,3184,3183,1,0,0,0,3185,3187,1,0, - 0,0,3186,3167,1,0,0,0,3186,3169,1,0,0,0,3186,3176,1,0,0,0,3186,3181, - 1,0,0,0,3187,249,1,0,0,0,3188,3189,5,100,0,0,3189,3190,5,2,0,0,3190, - 3191,3,674,337,0,3191,3192,5,3,0,0,3192,251,1,0,0,0,3193,3194,5, - 105,0,0,3194,3195,5,42,0,0,3195,3196,5,2,0,0,3196,3197,3,674,337, - 0,3197,3198,5,3,0,0,3198,253,1,0,0,0,3199,3200,5,46,0,0,3200,3201, - 5,131,0,0,3201,3202,5,446,0,0,3202,3203,3,818,409,0,3203,3204,5, - 360,0,0,3204,3205,7,37,0,0,3205,3206,5,215,0,0,3206,3207,3,316,158, - 0,3207,255,1,0,0,0,3208,3210,5,46,0,0,3209,3211,3,366,183,0,3210, - 3209,1,0,0,0,3210,3211,1,0,0,0,3211,3212,1,0,0,0,3212,3213,5,357, - 0,0,3213,3214,3,818,409,0,3214,3215,3,258,129,0,3215,3216,3,260, - 130,0,3216,3217,5,80,0,0,3217,3229,3,774,387,0,3218,3225,5,447,0, - 0,3219,3220,7,38,0,0,3220,3222,7,39,0,0,3221,3223,5,36,0,0,3222, - 3221,1,0,0,0,3222,3223,1,0,0,0,3223,3224,1,0,0,0,3224,3226,3,818, - 409,0,3225,3219,1,0,0,0,3226,3227,1,0,0,0,3227,3225,1,0,0,0,3227, - 3228,1,0,0,0,3228,3230,1,0,0,0,3229,3218,1,0,0,0,3229,3230,1,0,0, - 0,3230,3236,1,0,0,0,3231,3233,5,62,0,0,3232,3234,5,192,0,0,3233, - 3232,1,0,0,0,3233,3234,1,0,0,0,3234,3235,1,0,0,0,3235,3237,7,40, - 0,0,3236,3231,1,0,0,0,3236,3237,1,0,0,0,3237,3239,1,0,0,0,3238,3240, - 3,264,132,0,3239,3238,1,0,0,0,3239,3240,1,0,0,0,3240,3241,1,0,0, - 0,3241,3242,5,202,0,0,3242,3243,3,266,133,0,3243,3244,5,2,0,0,3244, - 3245,3,268,134,0,3245,3246,5,3,0,0,3246,3287,1,0,0,0,3247,3249,5, - 46,0,0,3248,3250,3,366,183,0,3249,3248,1,0,0,0,3249,3250,1,0,0,0, - 3250,3252,1,0,0,0,3251,3253,5,45,0,0,3252,3251,1,0,0,0,3252,3253, - 1,0,0,0,3253,3254,1,0,0,0,3254,3255,5,357,0,0,3255,3256,3,818,409, - 0,3256,3257,3,258,129,0,3257,3258,3,260,130,0,3258,3259,5,80,0,0, - 3259,3262,3,774,387,0,3260,3261,5,64,0,0,3261,3263,3,780,390,0,3262, - 3260,1,0,0,0,3262,3263,1,0,0,0,3263,3267,1,0,0,0,3264,3266,3,272, - 136,0,3265,3264,1,0,0,0,3266,3269,1,0,0,0,3267,3265,1,0,0,0,3267, - 3268,1,0,0,0,3268,3275,1,0,0,0,3269,3267,1,0,0,0,3270,3272,5,62, - 0,0,3271,3273,5,192,0,0,3272,3271,1,0,0,0,3272,3273,1,0,0,0,3273, - 3274,1,0,0,0,3274,3276,7,40,0,0,3275,3270,1,0,0,0,3275,3276,1,0, - 0,0,3276,3278,1,0,0,0,3277,3279,3,264,132,0,3278,3277,1,0,0,0,3278, - 3279,1,0,0,0,3279,3280,1,0,0,0,3280,3281,5,202,0,0,3281,3282,3,266, - 133,0,3282,3283,5,2,0,0,3283,3284,3,268,134,0,3284,3285,5,3,0,0, - 3285,3287,1,0,0,0,3286,3208,1,0,0,0,3286,3247,1,0,0,0,3287,257,1, - 0,0,0,3288,3293,5,145,0,0,3289,3293,5,135,0,0,3290,3291,5,242,0, - 0,3291,3293,5,275,0,0,3292,3288,1,0,0,0,3292,3289,1,0,0,0,3292,3290, - 1,0,0,0,3293,259,1,0,0,0,3294,3299,3,262,131,0,3295,3296,5,82,0, - 0,3296,3298,3,262,131,0,3297,3295,1,0,0,0,3298,3301,1,0,0,0,3299, - 3297,1,0,0,0,3299,3300,1,0,0,0,3300,261,1,0,0,0,3301,3299,1,0,0, - 0,3302,3311,5,241,0,0,3303,3311,5,182,0,0,3304,3307,5,369,0,0,3305, - 3306,5,275,0,0,3306,3308,3,148,74,0,3307,3305,1,0,0,0,3307,3308, - 1,0,0,0,3308,3311,1,0,0,0,3309,3311,5,358,0,0,3310,3302,1,0,0,0, - 3310,3303,1,0,0,0,3310,3304,1,0,0,0,3310,3309,1,0,0,0,3311,263,1, - 0,0,0,3312,3313,5,102,0,0,3313,3314,5,2,0,0,3314,3315,3,674,337, - 0,3315,3316,5,3,0,0,3316,265,1,0,0,0,3317,3318,5,211,0,0,3318,3322, - 3,806,403,0,3319,3320,5,296,0,0,3320,3322,3,796,398,0,3321,3317, - 1,0,0,0,3321,3319,1,0,0,0,3322,267,1,0,0,0,3323,3326,3,270,135,0, - 3324,3326,1,0,0,0,3325,3323,1,0,0,0,3325,3324,1,0,0,0,3326,3331, - 1,0,0,0,3327,3328,5,6,0,0,3328,3330,3,270,135,0,3329,3327,1,0,0, - 0,3330,3333,1,0,0,0,3331,3329,1,0,0,0,3331,3332,1,0,0,0,3332,269, - 1,0,0,0,3333,3331,1,0,0,0,3334,3339,5,571,0,0,3335,3339,5,573,0, - 0,3336,3339,3,808,404,0,3337,3339,3,824,412,0,3338,3334,1,0,0,0, - 3338,3335,1,0,0,0,3338,3336,1,0,0,0,3338,3337,1,0,0,0,3339,271,1, - 0,0,0,3340,3342,5,77,0,0,3341,3340,1,0,0,0,3341,3342,1,0,0,0,3342, - 3343,1,0,0,0,3343,3351,5,54,0,0,3344,3345,5,69,0,0,3345,3351,7,9, - 0,0,3346,3347,5,77,0,0,3347,3351,5,371,0,0,3348,3349,5,269,0,0,3349, - 3351,5,228,0,0,3350,3341,1,0,0,0,3350,3344,1,0,0,0,3350,3346,1,0, - 0,0,3350,3348,1,0,0,0,3351,273,1,0,0,0,3352,3353,5,46,0,0,3353,3354, - 5,198,0,0,3354,3355,5,357,0,0,3355,3356,3,818,409,0,3356,3357,5, - 80,0,0,3357,3367,3,824,412,0,3358,3359,5,102,0,0,3359,3364,3,276, - 138,0,3360,3361,5,33,0,0,3361,3363,3,276,138,0,3362,3360,1,0,0,0, - 3363,3366,1,0,0,0,3364,3362,1,0,0,0,3364,3365,1,0,0,0,3365,3368, - 1,0,0,0,3366,3364,1,0,0,0,3367,3358,1,0,0,0,3367,3368,1,0,0,0,3368, - 3369,1,0,0,0,3369,3370,5,202,0,0,3370,3371,3,266,133,0,3371,3372, - 5,2,0,0,3372,3373,5,3,0,0,3373,275,1,0,0,0,3374,3375,3,818,409,0, - 3375,3376,5,68,0,0,3376,3377,5,2,0,0,3377,3381,3,808,404,0,3378, - 3380,3,462,231,0,3379,3378,1,0,0,0,3380,3383,1,0,0,0,3381,3379,1, - 0,0,0,3381,3382,1,0,0,0,3382,3384,1,0,0,0,3383,3381,1,0,0,0,3384, - 3385,5,3,0,0,3385,277,1,0,0,0,3386,3387,5,138,0,0,3387,3388,5,198, - 0,0,3388,3389,5,357,0,0,3389,3395,3,818,409,0,3390,3392,5,193,0, - 0,3391,3393,7,14,0,0,3392,3391,1,0,0,0,3392,3393,1,0,0,0,3393,3396, - 1,0,0,0,3394,3396,5,186,0,0,3395,3390,1,0,0,0,3395,3394,1,0,0,0, - 3396,279,1,0,0,0,3397,3398,5,46,0,0,3398,3399,5,140,0,0,3399,3400, - 3,316,158,0,3400,3401,5,42,0,0,3401,3402,5,2,0,0,3402,3403,3,674, - 337,0,3403,3407,5,3,0,0,3404,3406,3,272,136,0,3405,3404,1,0,0,0, - 3406,3409,1,0,0,0,3407,3405,1,0,0,0,3407,3408,1,0,0,0,3408,281,1, - 0,0,0,3409,3407,1,0,0,0,3410,3412,5,46,0,0,3411,3413,3,366,183,0, - 3412,3411,1,0,0,0,3412,3413,1,0,0,0,3413,3414,1,0,0,0,3414,3415, - 5,136,0,0,3415,3430,3,806,403,0,3416,3417,3,392,196,0,3417,3418, - 3,284,142,0,3418,3431,1,0,0,0,3419,3420,5,2,0,0,3420,3425,3,290, - 145,0,3421,3422,5,6,0,0,3422,3424,3,290,145,0,3423,3421,1,0,0,0, - 3424,3427,1,0,0,0,3425,3423,1,0,0,0,3425,3426,1,0,0,0,3426,3428, - 1,0,0,0,3427,3425,1,0,0,0,3428,3429,5,3,0,0,3429,3431,1,0,0,0,3430, - 3416,1,0,0,0,3430,3419,1,0,0,0,3431,3489,1,0,0,0,3432,3433,5,46, - 0,0,3433,3434,5,278,0,0,3434,3435,3,414,207,0,3435,3436,3,284,142, - 0,3436,3489,1,0,0,0,3437,3438,5,46,0,0,3438,3439,5,360,0,0,3439, - 3440,3,316,158,0,3440,3458,5,36,0,0,3441,3443,5,2,0,0,3442,3444, - 3,642,321,0,3443,3442,1,0,0,0,3443,3444,1,0,0,0,3444,3445,1,0,0, - 0,3445,3459,5,3,0,0,3446,3447,5,196,0,0,3447,3455,5,2,0,0,3448,3452, - 3,808,404,0,3449,3451,3,462,231,0,3450,3449,1,0,0,0,3451,3454,1, - 0,0,0,3452,3450,1,0,0,0,3452,3453,1,0,0,0,3453,3456,1,0,0,0,3454, - 3452,1,0,0,0,3455,3448,1,0,0,0,3455,3456,1,0,0,0,3456,3457,1,0,0, - 0,3457,3459,5,3,0,0,3458,3441,1,0,0,0,3458,3446,1,0,0,0,3459,3489, - 1,0,0,0,3460,3461,5,46,0,0,3461,3462,5,360,0,0,3462,3468,3,316,158, - 0,3463,3464,5,36,0,0,3464,3466,5,299,0,0,3465,3463,1,0,0,0,3465, - 3466,1,0,0,0,3466,3467,1,0,0,0,3467,3469,3,284,142,0,3468,3465,1, - 0,0,0,3468,3469,1,0,0,0,3469,3489,1,0,0,0,3470,3471,5,46,0,0,3471, - 3472,5,355,0,0,3472,3473,5,325,0,0,3473,3474,7,41,0,0,3474,3475, - 3,316,158,0,3475,3476,3,284,142,0,3476,3489,1,0,0,0,3477,3478,5, - 46,0,0,3478,3480,5,108,0,0,3479,3481,3,294,147,0,3480,3479,1,0,0, - 0,3480,3481,1,0,0,0,3481,3482,1,0,0,0,3482,3486,3,316,158,0,3483, - 3487,3,284,142,0,3484,3485,5,64,0,0,3485,3487,3,316,158,0,3486,3483, - 1,0,0,0,3486,3484,1,0,0,0,3487,3489,1,0,0,0,3488,3410,1,0,0,0,3488, - 3432,1,0,0,0,3488,3437,1,0,0,0,3488,3460,1,0,0,0,3488,3470,1,0,0, - 0,3488,3477,1,0,0,0,3489,283,1,0,0,0,3490,3491,5,2,0,0,3491,3496, - 3,286,143,0,3492,3493,5,6,0,0,3493,3495,3,286,143,0,3494,3492,1, - 0,0,0,3495,3498,1,0,0,0,3496,3494,1,0,0,0,3496,3497,1,0,0,0,3497, - 3499,1,0,0,0,3498,3496,1,0,0,0,3499,3500,5,3,0,0,3500,285,1,0,0, - 0,3501,3504,3,824,412,0,3502,3503,5,10,0,0,3503,3505,3,288,144,0, - 3504,3502,1,0,0,0,3504,3505,1,0,0,0,3505,287,1,0,0,0,3506,3513,3, - 388,194,0,3507,3513,3,834,417,0,3508,3513,3,726,363,0,3509,3513, - 3,202,101,0,3510,3513,3,808,404,0,3511,3513,5,407,0,0,3512,3506, - 1,0,0,0,3512,3507,1,0,0,0,3512,3508,1,0,0,0,3512,3509,1,0,0,0,3512, - 3510,1,0,0,0,3512,3511,1,0,0,0,3513,289,1,0,0,0,3514,3515,3,826, - 413,0,3515,3516,5,10,0,0,3516,3517,3,288,144,0,3517,291,1,0,0,0, - 3518,3519,5,138,0,0,3519,3520,5,360,0,0,3520,3521,3,316,158,0,3521, - 3522,5,133,0,0,3522,3524,5,450,0,0,3523,3525,3,294,147,0,3524,3523, - 1,0,0,0,3524,3525,1,0,0,0,3525,3526,1,0,0,0,3526,3529,3,808,404, - 0,3527,3528,7,42,0,0,3528,3530,3,808,404,0,3529,3527,1,0,0,0,3529, - 3530,1,0,0,0,3530,3541,1,0,0,0,3531,3532,5,138,0,0,3532,3533,5,360, - 0,0,3533,3534,3,316,158,0,3534,3535,5,309,0,0,3535,3536,5,450,0, - 0,3536,3537,3,808,404,0,3537,3538,5,94,0,0,3538,3539,3,808,404,0, - 3539,3541,1,0,0,0,3540,3518,1,0,0,0,3540,3531,1,0,0,0,3541,293,1, - 0,0,0,3542,3543,5,220,0,0,3543,3544,5,77,0,0,3544,3545,5,396,0,0, - 3545,295,1,0,0,0,3546,3547,5,46,0,0,3547,3548,5,278,0,0,3548,3549, - 5,156,0,0,3549,3551,3,316,158,0,3550,3552,5,53,0,0,3551,3550,1,0, - 0,0,3551,3552,1,0,0,0,3552,3553,1,0,0,0,3553,3554,5,62,0,0,3554, - 3555,5,360,0,0,3555,3556,3,652,326,0,3556,3559,3,170,85,0,3557,3558, - 5,206,0,0,3558,3560,3,316,158,0,3559,3557,1,0,0,0,3559,3560,1,0, - 0,0,3560,3561,1,0,0,0,3561,3562,5,36,0,0,3562,3567,3,298,149,0,3563, - 3564,5,6,0,0,3564,3566,3,298,149,0,3565,3563,1,0,0,0,3566,3569,1, - 0,0,0,3567,3565,1,0,0,0,3567,3568,1,0,0,0,3568,297,1,0,0,0,3569, - 3567,1,0,0,0,3570,3571,5,278,0,0,3571,3572,5,571,0,0,3572,3574,3, - 414,207,0,3573,3575,3,412,206,0,3574,3573,1,0,0,0,3574,3575,1,0, - 0,0,3575,3583,1,0,0,0,3576,3581,5,62,0,0,3577,3582,5,325,0,0,3578, - 3579,5,83,0,0,3579,3580,5,147,0,0,3580,3582,3,316,158,0,3581,3577, - 1,0,0,0,3581,3578,1,0,0,0,3582,3584,1,0,0,0,3583,3576,1,0,0,0,3583, - 3584,1,0,0,0,3584,3586,1,0,0,0,3585,3587,5,302,0,0,3586,3585,1,0, - 0,0,3586,3587,1,0,0,0,3587,3597,1,0,0,0,3588,3589,5,211,0,0,3589, - 3591,5,571,0,0,3590,3592,3,528,264,0,3591,3590,1,0,0,0,3591,3592, - 1,0,0,0,3592,3593,1,0,0,0,3593,3597,3,382,191,0,3594,3595,5,345, - 0,0,3595,3597,3,652,326,0,3596,3570,1,0,0,0,3596,3588,1,0,0,0,3596, - 3594,1,0,0,0,3597,299,1,0,0,0,3598,3599,5,46,0,0,3599,3600,5,278, - 0,0,3600,3601,5,206,0,0,3601,3602,3,316,158,0,3602,3603,3,170,85, - 0,3603,301,1,0,0,0,3604,3605,5,138,0,0,3605,3606,5,278,0,0,3606, - 3607,5,206,0,0,3607,3608,3,316,158,0,3608,3627,3,170,85,0,3609,3610, - 5,133,0,0,3610,3615,3,298,149,0,3611,3612,5,6,0,0,3612,3614,3,298, - 149,0,3613,3611,1,0,0,0,3614,3617,1,0,0,0,3615,3613,1,0,0,0,3615, - 3616,1,0,0,0,3616,3628,1,0,0,0,3617,3615,1,0,0,0,3618,3619,5,191, - 0,0,3619,3624,3,304,152,0,3620,3621,5,6,0,0,3621,3623,3,304,152, - 0,3622,3620,1,0,0,0,3623,3626,1,0,0,0,3624,3622,1,0,0,0,3624,3625, - 1,0,0,0,3625,3628,1,0,0,0,3626,3624,1,0,0,0,3627,3609,1,0,0,0,3627, - 3618,1,0,0,0,3628,303,1,0,0,0,3629,3630,7,43,0,0,3630,3631,5,571, - 0,0,3631,3632,3,528,264,0,3632,305,1,0,0,0,3633,3634,5,301,0,0,3634, - 3635,5,281,0,0,3635,3636,5,147,0,0,3636,3637,3,816,408,0,3637,3638, - 5,94,0,0,3638,3639,3,814,407,0,3639,307,1,0,0,0,3640,3663,5,191, - 0,0,3641,3664,5,328,0,0,3642,3664,5,226,0,0,3643,3664,5,108,0,0, - 3644,3664,5,168,0,0,3645,3664,5,342,0,0,3646,3664,5,452,0,0,3647, - 3664,5,331,0,0,3648,3649,5,131,0,0,3649,3664,5,446,0,0,3650,3651, - 5,198,0,0,3651,3664,5,357,0,0,3652,3664,5,204,0,0,3653,3655,5,295, - 0,0,3654,3653,1,0,0,0,3654,3655,1,0,0,0,3655,3656,1,0,0,0,3656,3664, - 5,247,0,0,3657,3658,5,63,0,0,3658,3659,5,174,0,0,3659,3664,5,381, - 0,0,3660,3661,5,355,0,0,3661,3662,5,325,0,0,3662,3664,7,41,0,0,3663, - 3641,1,0,0,0,3663,3642,1,0,0,0,3663,3643,1,0,0,0,3663,3644,1,0,0, - 0,3663,3645,1,0,0,0,3663,3646,1,0,0,0,3663,3647,1,0,0,0,3663,3648, - 1,0,0,0,3663,3650,1,0,0,0,3663,3652,1,0,0,0,3663,3654,1,0,0,0,3663, - 3657,1,0,0,0,3663,3660,1,0,0,0,3664,3666,1,0,0,0,3665,3667,3,422, - 211,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0,3667,3668,1,0,0,0,3668, - 3670,3,784,392,0,3669,3671,3,96,48,0,3670,3669,1,0,0,0,3670,3671, - 1,0,0,0,3671,3848,1,0,0,0,3672,3674,5,191,0,0,3673,3675,5,259,0, - 0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3678, - 5,376,0,0,3677,3679,3,422,211,0,3678,3677,1,0,0,0,3678,3679,1,0, - 0,0,3679,3680,1,0,0,0,3680,3685,3,778,389,0,3681,3682,5,6,0,0,3682, - 3684,3,778,389,0,3683,3681,1,0,0,0,3684,3687,1,0,0,0,3685,3683,1, - 0,0,0,3685,3686,1,0,0,0,3686,3689,1,0,0,0,3687,3685,1,0,0,0,3688, - 3690,3,96,48,0,3689,3688,1,0,0,0,3689,3690,1,0,0,0,3690,3848,1,0, - 0,0,3691,3693,5,191,0,0,3692,3694,5,63,0,0,3693,3692,1,0,0,0,3693, - 3694,1,0,0,0,3694,3695,1,0,0,0,3695,3697,5,92,0,0,3696,3698,3,422, - 211,0,3697,3696,1,0,0,0,3697,3698,1,0,0,0,3698,3699,1,0,0,0,3699, - 3701,3,762,381,0,3700,3702,3,96,48,0,3701,3700,1,0,0,0,3701,3702, - 1,0,0,0,3702,3848,1,0,0,0,3703,3704,5,191,0,0,3704,3706,5,323,0, - 0,3705,3707,3,422,211,0,3706,3705,1,0,0,0,3706,3707,1,0,0,0,3707, - 3708,1,0,0,0,3708,3710,3,764,382,0,3709,3711,3,96,48,0,3710,3709, - 1,0,0,0,3710,3711,1,0,0,0,3711,3848,1,0,0,0,3712,3713,5,191,0,0, - 3713,3715,7,44,0,0,3714,3716,3,422,211,0,3715,3714,1,0,0,0,3715, - 3716,1,0,0,0,3716,3717,1,0,0,0,3717,3718,3,818,409,0,3718,3719,5, - 80,0,0,3719,3721,3,316,158,0,3720,3722,3,96,48,0,3721,3720,1,0,0, - 0,3721,3722,1,0,0,0,3722,3848,1,0,0,0,3723,3724,5,191,0,0,3724,3726, - 7,32,0,0,3725,3727,3,422,211,0,3726,3725,1,0,0,0,3726,3727,1,0,0, - 0,3727,3728,1,0,0,0,3728,3733,3,652,326,0,3729,3730,5,6,0,0,3730, - 3732,3,652,326,0,3731,3729,1,0,0,0,3732,3735,1,0,0,0,3733,3731,1, - 0,0,0,3733,3734,1,0,0,0,3734,3737,1,0,0,0,3735,3733,1,0,0,0,3736, - 3738,3,96,48,0,3737,3736,1,0,0,0,3737,3738,1,0,0,0,3738,3848,1,0, - 0,0,3739,3740,5,191,0,0,3740,3741,5,226,0,0,3741,3743,5,109,0,0, - 3742,3744,3,422,211,0,3743,3742,1,0,0,0,3743,3744,1,0,0,0,3744,3745, - 1,0,0,0,3745,3747,3,314,157,0,3746,3748,3,96,48,0,3747,3746,1,0, - 0,0,3747,3748,1,0,0,0,3748,3848,1,0,0,0,3749,3750,5,191,0,0,3750, - 3752,5,41,0,0,3751,3753,3,422,211,0,3752,3751,1,0,0,0,3752,3753, - 1,0,0,0,3753,3754,1,0,0,0,3754,3755,5,2,0,0,3755,3756,3,652,326, - 0,3756,3757,5,36,0,0,3757,3758,3,652,326,0,3758,3760,5,3,0,0,3759, - 3761,3,96,48,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3848,1,0, - 0,0,3762,3763,5,191,0,0,3763,3764,5,278,0,0,3764,3766,7,31,0,0,3765, - 3767,3,422,211,0,3766,3765,1,0,0,0,3766,3767,1,0,0,0,3767,3768,1, - 0,0,0,3768,3769,3,316,158,0,3769,3771,3,170,85,0,3770,3772,3,96, - 48,0,3771,3770,1,0,0,0,3771,3772,1,0,0,0,3772,3848,1,0,0,0,3773, - 3774,5,191,0,0,3774,3775,5,281,0,0,3775,3776,5,147,0,0,3776,3778, - 3,816,408,0,3777,3779,3,96,48,0,3778,3777,1,0,0,0,3778,3779,1,0, - 0,0,3779,3848,1,0,0,0,3780,3781,5,191,0,0,3781,3783,5,451,0,0,3782, - 3784,3,422,211,0,3783,3782,1,0,0,0,3783,3784,1,0,0,0,3784,3785,1, - 0,0,0,3785,3787,3,818,409,0,3786,3788,3,96,48,0,3787,3786,1,0,0, - 0,3787,3788,1,0,0,0,3788,3848,1,0,0,0,3789,3790,5,191,0,0,3790,3792, - 5,351,0,0,3791,3793,3,422,211,0,3792,3791,1,0,0,0,3792,3793,1,0, - 0,0,3793,3794,1,0,0,0,3794,3848,3,770,385,0,3795,3796,5,191,0,0, - 3796,3798,5,443,0,0,3797,3799,3,422,211,0,3798,3797,1,0,0,0,3798, - 3799,1,0,0,0,3799,3800,1,0,0,0,3800,3801,5,62,0,0,3801,3802,3,652, - 326,0,3802,3803,5,247,0,0,3803,3805,3,818,409,0,3804,3806,3,96,48, - 0,3805,3804,1,0,0,0,3805,3806,1,0,0,0,3806,3848,1,0,0,0,3807,3808, - 5,191,0,0,3808,3810,7,45,0,0,3809,3811,3,422,211,0,3810,3809,1,0, - 0,0,3810,3811,1,0,0,0,3811,3812,1,0,0,0,3812,3848,3,816,408,0,3813, - 3814,5,191,0,0,3814,3815,5,99,0,0,3815,3817,5,257,0,0,3816,3818, - 3,422,211,0,3817,3816,1,0,0,0,3817,3818,1,0,0,0,3818,3819,1,0,0, - 0,3819,3822,5,62,0,0,3820,3823,3,814,407,0,3821,3823,5,99,0,0,3822, - 3820,1,0,0,0,3822,3821,1,0,0,0,3823,3824,1,0,0,0,3824,3825,5,331, - 0,0,3825,3848,3,818,409,0,3826,3827,5,191,0,0,3827,3829,5,175,0, - 0,3828,3830,3,422,211,0,3829,3828,1,0,0,0,3829,3830,1,0,0,0,3830, - 3831,1,0,0,0,3831,3845,3,788,394,0,3832,3834,5,105,0,0,3833,3832, - 1,0,0,0,3833,3834,1,0,0,0,3834,3835,1,0,0,0,3835,3836,5,2,0,0,3836, - 3841,5,209,0,0,3837,3838,5,6,0,0,3838,3840,5,209,0,0,3839,3837,1, - 0,0,0,3840,3843,1,0,0,0,3841,3839,1,0,0,0,3841,3842,1,0,0,0,3842, - 3844,1,0,0,0,3843,3841,1,0,0,0,3844,3846,5,3,0,0,3845,3833,1,0,0, - 0,3845,3846,1,0,0,0,3846,3848,1,0,0,0,3847,3640,1,0,0,0,3847,3672, - 1,0,0,0,3847,3691,1,0,0,0,3847,3703,1,0,0,0,3847,3712,1,0,0,0,3847, - 3723,1,0,0,0,3847,3739,1,0,0,0,3847,3749,1,0,0,0,3847,3762,1,0,0, - 0,3847,3773,1,0,0,0,3847,3780,1,0,0,0,3847,3789,1,0,0,0,3847,3795, - 1,0,0,0,3847,3807,1,0,0,0,3847,3813,1,0,0,0,3847,3826,1,0,0,0,3848, - 309,1,0,0,0,3849,3851,5,63,0,0,3850,3849,1,0,0,0,3850,3851,1,0,0, - 0,3851,3852,1,0,0,0,3852,3853,5,92,0,0,3853,3866,3,774,387,0,3854, - 3856,5,259,0,0,3855,3854,1,0,0,0,3855,3856,1,0,0,0,3856,3857,1,0, - 0,0,3857,3858,5,376,0,0,3858,3866,3,778,389,0,3859,3860,7,46,0,0, - 3860,3866,3,316,158,0,3861,3862,5,355,0,0,3862,3863,5,325,0,0,3863, - 3864,7,41,0,0,3864,3866,3,316,158,0,3865,3850,1,0,0,0,3865,3855, - 1,0,0,0,3865,3859,1,0,0,0,3865,3861,1,0,0,0,3866,311,1,0,0,0,3867, - 3868,5,198,0,0,3868,3884,5,357,0,0,3869,3870,5,131,0,0,3870,3884, - 5,446,0,0,3871,3884,5,204,0,0,3872,3884,5,452,0,0,3873,3884,5,331, - 0,0,3874,3884,5,318,0,0,3875,3884,5,451,0,0,3876,3877,5,63,0,0,3877, - 3878,5,174,0,0,3878,3884,5,381,0,0,3879,3881,5,295,0,0,3880,3879, - 1,0,0,0,3880,3881,1,0,0,0,3881,3882,1,0,0,0,3882,3884,5,247,0,0, - 3883,3867,1,0,0,0,3883,3869,1,0,0,0,3883,3871,1,0,0,0,3883,3872, - 1,0,0,0,3883,3873,1,0,0,0,3883,3874,1,0,0,0,3883,3875,1,0,0,0,3883, - 3876,1,0,0,0,3883,3880,1,0,0,0,3884,3885,1,0,0,0,3885,3892,3,818, - 409,0,3886,3887,5,323,0,0,3887,3892,3,790,395,0,3888,3889,5,175, - 0,0,3889,3892,3,788,394,0,3890,3892,3,176,88,0,3891,3883,1,0,0,0, - 3891,3886,1,0,0,0,3891,3888,1,0,0,0,3891,3890,1,0,0,0,3892,313,1, - 0,0,0,3893,3898,3,316,158,0,3894,3895,5,6,0,0,3895,3897,3,316,158, - 0,3896,3894,1,0,0,0,3897,3900,1,0,0,0,3898,3896,1,0,0,0,3898,3899, - 1,0,0,0,3899,315,1,0,0,0,3900,3898,1,0,0,0,3901,3903,3,818,409,0, - 3902,3904,3,318,159,0,3903,3902,1,0,0,0,3903,3904,1,0,0,0,3904,317, - 1,0,0,0,3905,3906,5,11,0,0,3906,3908,3,824,412,0,3907,3905,1,0,0, - 0,3908,3909,1,0,0,0,3909,3907,1,0,0,0,3909,3910,1,0,0,0,3910,319, - 1,0,0,0,3911,3913,5,358,0,0,3912,3914,5,92,0,0,3913,3912,1,0,0,0, - 3913,3914,1,0,0,0,3914,3915,1,0,0,0,3915,3920,3,322,161,0,3916,3917, - 5,6,0,0,3917,3919,3,322,161,0,3918,3916,1,0,0,0,3919,3922,1,0,0, - 0,3920,3918,1,0,0,0,3920,3921,1,0,0,0,3921,3925,1,0,0,0,3922,3920, - 1,0,0,0,3923,3924,7,47,0,0,3924,3926,5,219,0,0,3925,3923,1,0,0,0, - 3925,3926,1,0,0,0,3926,3928,1,0,0,0,3927,3929,3,96,48,0,3928,3927, - 1,0,0,0,3928,3929,1,0,0,0,3929,321,1,0,0,0,3930,3932,5,81,0,0,3931, - 3930,1,0,0,0,3931,3932,1,0,0,0,3932,3933,1,0,0,0,3933,3935,3,774, - 387,0,3934,3936,5,9,0,0,3935,3934,1,0,0,0,3935,3936,1,0,0,0,3936, - 323,1,0,0,0,3937,3938,5,159,0,0,3938,3997,5,80,0,0,3939,3998,3,310, - 155,0,3940,3998,3,312,156,0,3941,3942,5,44,0,0,3942,3944,3,818,409, - 0,3943,3945,3,318,159,0,3944,3943,1,0,0,0,3944,3945,1,0,0,0,3945, - 3946,1,0,0,0,3946,3947,5,11,0,0,3947,3948,3,800,400,0,3948,3998, - 1,0,0,0,3949,3950,7,32,0,0,3950,3998,3,652,326,0,3951,3952,5,136, - 0,0,3952,3998,3,394,197,0,3953,3954,5,211,0,0,3954,3998,3,382,191, - 0,3955,3956,5,278,0,0,3956,3998,3,416,208,0,3957,3958,5,45,0,0,3958, - 3959,3,818,409,0,3959,3965,5,80,0,0,3960,3966,3,774,387,0,3961,3963, - 5,189,0,0,3962,3961,1,0,0,0,3962,3963,1,0,0,0,3963,3964,1,0,0,0, - 3964,3966,3,316,158,0,3965,3960,1,0,0,0,3965,3962,1,0,0,0,3966,3998, - 1,0,0,0,3967,3968,7,44,0,0,3968,3969,3,818,409,0,3969,3970,5,80, - 0,0,3970,3971,3,316,158,0,3971,3998,1,0,0,0,3972,3973,5,296,0,0, - 3973,3998,3,378,189,0,3974,3975,5,442,0,0,3975,3998,3,374,187,0, - 3976,3977,5,443,0,0,3977,3978,5,62,0,0,3978,3979,3,652,326,0,3979, - 3980,5,247,0,0,3980,3981,3,818,409,0,3981,3998,1,0,0,0,3982,3983, - 5,278,0,0,3983,3984,7,31,0,0,3984,3985,3,316,158,0,3985,3986,3,170, - 85,0,3986,3998,1,0,0,0,3987,3988,5,248,0,0,3988,3989,5,274,0,0,3989, - 3998,3,202,101,0,3990,3991,5,41,0,0,3991,3992,5,2,0,0,3992,3993, - 3,652,326,0,3993,3994,5,36,0,0,3994,3995,3,652,326,0,3995,3996,5, - 3,0,0,3996,3998,1,0,0,0,3997,3939,1,0,0,0,3997,3940,1,0,0,0,3997, - 3941,1,0,0,0,3997,3949,1,0,0,0,3997,3951,1,0,0,0,3997,3953,1,0,0, - 0,3997,3955,1,0,0,0,3997,3957,1,0,0,0,3997,3967,1,0,0,0,3997,3972, - 1,0,0,0,3997,3974,1,0,0,0,3997,3976,1,0,0,0,3997,3982,1,0,0,0,3997, - 3987,1,0,0,0,3997,3990,1,0,0,0,3998,3999,1,0,0,0,3999,4002,5,116, - 0,0,4000,4003,3,808,404,0,4001,4003,5,78,0,0,4002,4000,1,0,0,0,4002, - 4001,1,0,0,0,4003,325,1,0,0,0,4004,4005,5,327,0,0,4005,4008,5,246, - 0,0,4006,4007,5,62,0,0,4007,4009,3,58,29,0,4008,4006,1,0,0,0,4008, - 4009,1,0,0,0,4009,4010,1,0,0,0,4010,4028,5,80,0,0,4011,4012,7,32, - 0,0,4012,4029,3,652,326,0,4013,4014,5,136,0,0,4014,4029,3,394,197, - 0,4015,4016,5,44,0,0,4016,4029,3,800,400,0,4017,4018,5,211,0,0,4018, - 4029,3,382,191,0,4019,4020,5,248,0,0,4020,4021,5,274,0,0,4021,4029, - 3,202,101,0,4022,4023,5,296,0,0,4023,4029,3,378,189,0,4024,4025, - 5,442,0,0,4025,4029,3,374,187,0,4026,4029,3,310,155,0,4027,4029, - 3,312,156,0,4028,4011,1,0,0,0,4028,4013,1,0,0,0,4028,4015,1,0,0, - 0,4028,4017,1,0,0,0,4028,4019,1,0,0,0,4028,4022,1,0,0,0,4028,4024, - 1,0,0,0,4028,4026,1,0,0,0,4028,4027,1,0,0,0,4029,4030,1,0,0,0,4030, - 4033,5,116,0,0,4031,4034,3,808,404,0,4032,4034,5,78,0,0,4033,4031, - 1,0,0,0,4033,4032,1,0,0,0,4034,327,1,0,0,0,4035,4036,7,48,0,0,4036, - 4037,3,330,165,0,4037,329,1,0,0,0,4038,4040,7,49,0,0,4039,4038,1, - 0,0,0,4039,4040,1,0,0,0,4040,4042,1,0,0,0,4041,4043,3,332,166,0, - 4042,4041,1,0,0,0,4042,4043,1,0,0,0,4043,4044,1,0,0,0,4044,4082, - 3,818,409,0,4045,4047,7,50,0,0,4046,4045,1,0,0,0,4046,4047,1,0,0, - 0,4047,4048,1,0,0,0,4048,4050,3,812,406,0,4049,4051,3,332,166,0, - 4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4052,1,0,0,0,4052,4053, - 3,818,409,0,4053,4082,1,0,0,0,4054,4056,5,210,0,0,4055,4057,3,812, - 406,0,4056,4055,1,0,0,0,4056,4057,1,0,0,0,4057,4059,1,0,0,0,4058, - 4060,3,332,166,0,4059,4058,1,0,0,0,4059,4060,1,0,0,0,4060,4061,1, - 0,0,0,4061,4082,3,818,409,0,4062,4064,5,210,0,0,4063,4062,1,0,0, - 0,4063,4064,1,0,0,0,4064,4065,1,0,0,0,4065,4067,5,30,0,0,4066,4068, - 3,332,166,0,4067,4066,1,0,0,0,4067,4068,1,0,0,0,4068,4069,1,0,0, - 0,4069,4082,3,818,409,0,4070,4075,5,144,0,0,4071,4073,5,30,0,0,4072, - 4071,1,0,0,0,4072,4073,1,0,0,0,4073,4076,1,0,0,0,4074,4076,3,812, - 406,0,4075,4072,1,0,0,0,4075,4074,1,0,0,0,4076,4078,1,0,0,0,4077, - 4079,3,332,166,0,4078,4077,1,0,0,0,4078,4079,1,0,0,0,4079,4080,1, - 0,0,0,4080,4082,3,818,409,0,4081,4039,1,0,0,0,4081,4046,1,0,0,0, - 4081,4054,1,0,0,0,4081,4063,1,0,0,0,4081,4070,1,0,0,0,4082,331,1, - 0,0,0,4083,4084,7,51,0,0,4084,333,1,0,0,0,4085,4086,5,65,0,0,4086, - 4087,3,338,169,0,4087,4088,5,80,0,0,4088,4089,3,344,172,0,4089,4090, - 5,94,0,0,4090,4094,3,346,173,0,4091,4092,5,105,0,0,4092,4093,5,65, - 0,0,4093,4095,5,279,0,0,4094,4091,1,0,0,0,4094,4095,1,0,0,0,4095, - 335,1,0,0,0,4096,4100,5,317,0,0,4097,4098,5,65,0,0,4098,4099,5,279, - 0,0,4099,4101,5,62,0,0,4100,4097,1,0,0,0,4100,4101,1,0,0,0,4101, - 4102,1,0,0,0,4102,4103,3,338,169,0,4103,4104,5,80,0,0,4104,4105, - 3,344,172,0,4105,4106,5,64,0,0,4106,4108,3,346,173,0,4107,4109,3, - 96,48,0,4108,4107,1,0,0,0,4108,4109,1,0,0,0,4109,337,1,0,0,0,4110, - 4115,3,342,171,0,4111,4112,5,6,0,0,4112,4114,3,342,171,0,4113,4111, - 1,0,0,0,4114,4117,1,0,0,0,4115,4113,1,0,0,0,4115,4116,1,0,0,0,4116, - 4134,1,0,0,0,4117,4115,1,0,0,0,4118,4120,5,30,0,0,4119,4121,5,294, - 0,0,4120,4119,1,0,0,0,4120,4121,1,0,0,0,4121,4123,1,0,0,0,4122,4124, - 3,144,72,0,4123,4122,1,0,0,0,4123,4124,1,0,0,0,4124,4134,1,0,0,0, - 4125,4130,3,340,170,0,4126,4127,5,6,0,0,4127,4129,3,340,170,0,4128, - 4126,1,0,0,0,4129,4132,1,0,0,0,4130,4128,1,0,0,0,4130,4131,1,0,0, - 0,4131,4134,1,0,0,0,4132,4130,1,0,0,0,4133,4110,1,0,0,0,4133,4118, - 1,0,0,0,4133,4125,1,0,0,0,4134,339,1,0,0,0,4135,4136,7,52,0,0,4136, - 341,1,0,0,0,4137,4142,5,88,0,0,4138,4142,5,86,0,0,4139,4142,5,46, - 0,0,4140,4142,3,818,409,0,4141,4137,1,0,0,0,4141,4138,1,0,0,0,4141, - 4139,1,0,0,0,4141,4140,1,0,0,0,4142,4144,1,0,0,0,4143,4145,3,144, - 72,0,4144,4143,1,0,0,0,4144,4145,1,0,0,0,4145,343,1,0,0,0,4146,4147, - 5,92,0,0,4147,4192,3,762,381,0,4148,4150,5,328,0,0,4149,4148,1,0, - 0,0,4149,4150,1,0,0,0,4150,4151,1,0,0,0,4151,4192,3,760,380,0,4152, - 4156,5,63,0,0,4153,4154,5,174,0,0,4154,4157,5,381,0,0,4155,4157, - 5,331,0,0,4156,4153,1,0,0,0,4156,4155,1,0,0,0,4157,4160,1,0,0,0, - 4158,4160,5,247,0,0,4159,4152,1,0,0,0,4159,4158,1,0,0,0,4160,4161, - 1,0,0,0,4161,4192,3,784,392,0,4162,4163,5,211,0,0,4163,4192,3,380, - 190,0,4164,4165,5,296,0,0,4165,4192,3,376,188,0,4166,4167,5,442, - 0,0,4167,4192,3,372,186,0,4168,4169,5,175,0,0,4169,4192,3,766,383, - 0,4170,4171,7,32,0,0,4171,4192,3,314,157,0,4172,4173,5,248,0,0,4173, - 4174,5,274,0,0,4174,4179,3,202,101,0,4175,4176,5,6,0,0,4176,4178, - 3,202,101,0,4177,4175,1,0,0,0,4178,4181,1,0,0,0,4179,4177,1,0,0, - 0,4179,4180,1,0,0,0,4180,4192,1,0,0,0,4181,4179,1,0,0,0,4182,4183, - 5,323,0,0,4183,4192,3,764,382,0,4184,4185,5,351,0,0,4185,4192,3, - 782,391,0,4186,4187,5,30,0,0,4187,4188,7,53,0,0,4188,4189,5,68,0, - 0,4189,4190,5,323,0,0,4190,4192,3,764,382,0,4191,4146,1,0,0,0,4191, - 4149,1,0,0,0,4191,4159,1,0,0,0,4191,4162,1,0,0,0,4191,4164,1,0,0, - 0,4191,4166,1,0,0,0,4191,4168,1,0,0,0,4191,4170,1,0,0,0,4191,4172, - 1,0,0,0,4191,4182,1,0,0,0,4191,4184,1,0,0,0,4191,4186,1,0,0,0,4192, - 345,1,0,0,0,4193,4195,5,66,0,0,4194,4193,1,0,0,0,4194,4195,1,0,0, - 0,4195,4196,1,0,0,0,4196,4197,3,814,407,0,4197,4205,1,0,0,0,4198, - 4200,5,6,0,0,4199,4201,5,66,0,0,4200,4199,1,0,0,0,4200,4201,1,0, - 0,0,4201,4202,1,0,0,0,4202,4204,3,814,407,0,4203,4198,1,0,0,0,4204, - 4207,1,0,0,0,4205,4203,1,0,0,0,4205,4206,1,0,0,0,4206,347,1,0,0, - 0,4207,4205,1,0,0,0,4208,4209,5,65,0,0,4209,4214,3,342,171,0,4210, - 4211,5,6,0,0,4211,4213,3,342,171,0,4212,4210,1,0,0,0,4213,4216,1, - 0,0,0,4214,4212,1,0,0,0,4214,4215,1,0,0,0,4215,4217,1,0,0,0,4216, - 4214,1,0,0,0,4217,4218,5,94,0,0,4218,4222,3,816,408,0,4219,4220, - 5,105,0,0,4220,4221,5,134,0,0,4221,4223,5,279,0,0,4222,4219,1,0, - 0,0,4222,4223,1,0,0,0,4223,4227,1,0,0,0,4224,4225,5,214,0,0,4225, - 4226,5,147,0,0,4226,4228,3,814,407,0,4227,4224,1,0,0,0,4227,4228, - 1,0,0,0,4228,349,1,0,0,0,4229,4233,5,317,0,0,4230,4231,5,134,0,0, - 4231,4232,5,279,0,0,4232,4234,5,62,0,0,4233,4230,1,0,0,0,4233,4234, - 1,0,0,0,4234,4235,1,0,0,0,4235,4240,3,342,171,0,4236,4237,5,6,0, - 0,4237,4239,3,342,171,0,4238,4236,1,0,0,0,4239,4242,1,0,0,0,4240, - 4238,1,0,0,0,4240,4241,1,0,0,0,4241,4243,1,0,0,0,4242,4240,1,0,0, - 0,4243,4244,5,64,0,0,4244,4248,3,816,408,0,4245,4246,5,214,0,0,4246, - 4247,5,147,0,0,4247,4249,3,814,407,0,4248,4245,1,0,0,0,4248,4249, - 1,0,0,0,4249,4251,1,0,0,0,4250,4252,3,96,48,0,4251,4250,1,0,0,0, - 4251,4252,1,0,0,0,4252,351,1,0,0,0,4253,4254,5,138,0,0,4254,4255, - 5,53,0,0,4255,4264,5,294,0,0,4256,4257,5,68,0,0,4257,4258,5,323, - 0,0,4258,4263,3,764,382,0,4259,4260,5,62,0,0,4260,4261,7,2,0,0,4261, - 4263,3,816,408,0,4262,4256,1,0,0,0,4262,4259,1,0,0,0,4263,4266,1, - 0,0,0,4264,4262,1,0,0,0,4264,4265,1,0,0,0,4265,4267,1,0,0,0,4266, - 4264,1,0,0,0,4267,4268,3,354,177,0,4268,353,1,0,0,0,4269,4270,5, - 65,0,0,4270,4271,3,338,169,0,4271,4272,5,80,0,0,4272,4273,3,356, - 178,0,4273,4274,5,94,0,0,4274,4278,3,346,173,0,4275,4276,5,105,0, - 0,4276,4277,5,65,0,0,4277,4279,5,279,0,0,4278,4275,1,0,0,0,4278, - 4279,1,0,0,0,4279,4295,1,0,0,0,4280,4284,5,317,0,0,4281,4282,5,65, - 0,0,4282,4283,5,279,0,0,4283,4285,5,62,0,0,4284,4281,1,0,0,0,4284, - 4285,1,0,0,0,4285,4286,1,0,0,0,4286,4287,3,338,169,0,4287,4288,5, - 80,0,0,4288,4289,3,356,178,0,4289,4290,5,64,0,0,4290,4292,3,346, - 173,0,4291,4293,3,96,48,0,4292,4291,1,0,0,0,4292,4293,1,0,0,0,4293, - 4295,1,0,0,0,4294,4269,1,0,0,0,4294,4280,1,0,0,0,4295,355,1,0,0, - 0,4296,4297,7,54,0,0,4297,357,1,0,0,0,4298,4300,5,46,0,0,4299,4301, - 5,98,0,0,4300,4299,1,0,0,0,4300,4301,1,0,0,0,4301,4302,1,0,0,0,4302, - 4304,5,226,0,0,4303,4305,5,109,0,0,4304,4303,1,0,0,0,4304,4305,1, - 0,0,0,4305,4307,1,0,0,0,4306,4308,3,294,147,0,4307,4306,1,0,0,0, - 4307,4308,1,0,0,0,4308,4310,1,0,0,0,4309,4311,3,818,409,0,4310,4309, - 1,0,0,0,4310,4311,1,0,0,0,4311,4312,1,0,0,0,4312,4313,5,80,0,0,4313, - 4315,3,624,312,0,4314,4316,3,170,85,0,4315,4314,1,0,0,0,4315,4316, - 1,0,0,0,4316,4317,1,0,0,0,4317,4320,3,360,180,0,4318,4319,5,441, - 0,0,4319,4321,3,360,180,0,4320,4318,1,0,0,0,4320,4321,1,0,0,0,4321, - 4327,1,0,0,0,4322,4324,5,273,0,0,4323,4325,5,77,0,0,4324,4323,1, - 0,0,0,4324,4325,1,0,0,0,4325,4326,1,0,0,0,4326,4328,5,56,0,0,4327, - 4322,1,0,0,0,4327,4328,1,0,0,0,4328,4330,1,0,0,0,4329,4331,3,102, - 51,0,4330,4329,1,0,0,0,4330,4331,1,0,0,0,4331,4333,1,0,0,0,4332, - 4334,3,176,88,0,4333,4332,1,0,0,0,4333,4334,1,0,0,0,4334,4336,1, - 0,0,0,4335,4337,3,638,319,0,4336,4335,1,0,0,0,4336,4337,1,0,0,0, - 4337,359,1,0,0,0,4338,4339,5,2,0,0,4339,4344,3,362,181,0,4340,4341, - 5,6,0,0,4341,4343,3,362,181,0,4342,4340,1,0,0,0,4343,4346,1,0,0, - 0,4344,4342,1,0,0,0,4344,4345,1,0,0,0,4345,4347,1,0,0,0,4346,4344, - 1,0,0,0,4347,4348,5,3,0,0,4348,361,1,0,0,0,4349,4356,3,800,400,0, - 4350,4356,3,688,344,0,4351,4352,5,2,0,0,4352,4353,3,674,337,0,4353, - 4354,5,3,0,0,4354,4356,1,0,0,0,4355,4349,1,0,0,0,4355,4350,1,0,0, - 0,4355,4351,1,0,0,0,4356,4358,1,0,0,0,4357,4359,3,98,49,0,4358,4357, - 1,0,0,0,4358,4359,1,0,0,0,4359,4366,1,0,0,0,4360,4362,3,316,158, - 0,4361,4360,1,0,0,0,4361,4362,1,0,0,0,4362,4367,1,0,0,0,4363,4364, - 3,316,158,0,4364,4365,3,100,50,0,4365,4367,1,0,0,0,4366,4361,1,0, - 0,0,4366,4363,1,0,0,0,4367,4369,1,0,0,0,4368,4370,7,55,0,0,4369, - 4368,1,0,0,0,4369,4370,1,0,0,0,4370,4373,1,0,0,0,4371,4372,5,273, - 0,0,4372,4374,7,56,0,0,4373,4371,1,0,0,0,4373,4374,1,0,0,0,4374, - 363,1,0,0,0,4375,4377,5,46,0,0,4376,4378,3,366,183,0,4377,4376,1, - 0,0,0,4377,4378,1,0,0,0,4378,4383,1,0,0,0,4379,4380,5,211,0,0,4380, - 4384,3,804,402,0,4381,4382,5,296,0,0,4382,4384,3,798,399,0,4383, - 4379,1,0,0,0,4383,4381,1,0,0,0,4384,4385,1,0,0,0,4385,4394,5,2,0, - 0,4386,4391,3,390,195,0,4387,4388,5,6,0,0,4388,4390,3,390,195,0, - 4389,4387,1,0,0,0,4390,4393,1,0,0,0,4391,4389,1,0,0,0,4391,4392, - 1,0,0,0,4392,4395,1,0,0,0,4393,4391,1,0,0,0,4394,4386,1,0,0,0,4394, - 4395,1,0,0,0,4395,4396,1,0,0,0,4396,4397,5,3,0,0,4397,4414,1,0,0, - 0,4398,4412,5,316,0,0,4399,4413,3,388,194,0,4400,4401,5,92,0,0,4401, - 4402,5,2,0,0,4402,4407,3,402,201,0,4403,4404,5,6,0,0,4404,4406,3, - 402,201,0,4405,4403,1,0,0,0,4406,4409,1,0,0,0,4407,4405,1,0,0,0, - 4407,4408,1,0,0,0,4408,4410,1,0,0,0,4409,4407,1,0,0,0,4410,4411, - 5,3,0,0,4411,4413,1,0,0,0,4412,4399,1,0,0,0,4412,4400,1,0,0,0,4413, - 4415,1,0,0,0,4414,4398,1,0,0,0,4414,4415,1,0,0,0,4415,4417,1,0,0, - 0,4416,4418,3,398,199,0,4417,4416,1,0,0,0,4418,4419,1,0,0,0,4419, - 4417,1,0,0,0,4419,4420,1,0,0,0,4420,4426,1,0,0,0,4421,4422,5,105, - 0,0,4422,4423,5,2,0,0,4423,4424,3,784,392,0,4424,4425,5,3,0,0,4425, - 4427,1,0,0,0,4426,4421,1,0,0,0,4426,4427,1,0,0,0,4427,365,1,0,0, - 0,4428,4429,5,82,0,0,4429,4430,5,311,0,0,4430,367,1,0,0,0,4431,4433, - 5,2,0,0,4432,4434,3,370,185,0,4433,4432,1,0,0,0,4433,4434,1,0,0, - 0,4434,4435,1,0,0,0,4435,4436,5,3,0,0,4436,369,1,0,0,0,4437,4442, - 3,384,192,0,4438,4439,5,6,0,0,4439,4441,3,384,192,0,4440,4438,1, - 0,0,0,4441,4444,1,0,0,0,4442,4440,1,0,0,0,4442,4443,1,0,0,0,4443, - 371,1,0,0,0,4444,4442,1,0,0,0,4445,4450,3,374,187,0,4446,4447,5, - 6,0,0,4447,4449,3,374,187,0,4448,4446,1,0,0,0,4449,4452,1,0,0,0, - 4450,4448,1,0,0,0,4450,4451,1,0,0,0,4451,373,1,0,0,0,4452,4450,1, - 0,0,0,4453,4454,3,794,397,0,4454,4455,3,368,184,0,4455,4459,1,0, - 0,0,4456,4459,3,832,416,0,4457,4459,3,780,390,0,4458,4453,1,0,0, - 0,4458,4456,1,0,0,0,4458,4457,1,0,0,0,4459,375,1,0,0,0,4460,4465, - 3,378,189,0,4461,4462,5,6,0,0,4462,4464,3,378,189,0,4463,4461,1, - 0,0,0,4464,4467,1,0,0,0,4465,4463,1,0,0,0,4465,4466,1,0,0,0,4466, - 377,1,0,0,0,4467,4465,1,0,0,0,4468,4469,3,796,398,0,4469,4470,3, - 368,184,0,4470,4474,1,0,0,0,4471,4474,3,832,416,0,4472,4474,3,780, - 390,0,4473,4468,1,0,0,0,4473,4471,1,0,0,0,4473,4472,1,0,0,0,4474, - 379,1,0,0,0,4475,4480,3,382,191,0,4476,4477,5,6,0,0,4477,4479,3, - 382,191,0,4478,4476,1,0,0,0,4479,4482,1,0,0,0,4480,4478,1,0,0,0, - 4480,4481,1,0,0,0,4481,381,1,0,0,0,4482,4480,1,0,0,0,4483,4484,3, - 806,403,0,4484,4485,3,368,184,0,4485,4489,1,0,0,0,4486,4489,3,832, - 416,0,4487,4489,3,780,390,0,4488,4483,1,0,0,0,4488,4486,1,0,0,0, - 4488,4487,1,0,0,0,4489,383,1,0,0,0,4490,4492,3,386,193,0,4491,4493, - 3,820,410,0,4492,4491,1,0,0,0,4492,4493,1,0,0,0,4493,4499,1,0,0, - 0,4494,4496,3,820,410,0,4495,4497,3,386,193,0,4496,4495,1,0,0,0, - 4496,4497,1,0,0,0,4497,4499,1,0,0,0,4498,4490,1,0,0,0,4498,4494, - 1,0,0,0,4498,4499,1,0,0,0,4499,4500,1,0,0,0,4500,4501,3,388,194, - 0,4501,385,1,0,0,0,4502,4504,5,68,0,0,4503,4505,5,453,0,0,4504,4503, - 1,0,0,0,4504,4505,1,0,0,0,4505,4510,1,0,0,0,4506,4510,5,453,0,0, - 4507,4510,5,400,0,0,4508,4510,5,101,0,0,4509,4502,1,0,0,0,4509,4506, - 1,0,0,0,4509,4507,1,0,0,0,4509,4508,1,0,0,0,4510,387,1,0,0,0,4511, - 4521,3,652,326,0,4512,4514,5,415,0,0,4513,4512,1,0,0,0,4513,4514, - 1,0,0,0,4514,4515,1,0,0,0,4515,4516,3,820,410,0,4516,4517,3,318, - 159,0,4517,4518,5,27,0,0,4518,4519,5,360,0,0,4519,4521,1,0,0,0,4520, - 4511,1,0,0,0,4520,4513,1,0,0,0,4521,389,1,0,0,0,4522,4525,3,384, - 192,0,4523,4524,7,57,0,0,4524,4526,3,674,337,0,4525,4523,1,0,0,0, - 4525,4526,1,0,0,0,4526,391,1,0,0,0,4527,4537,5,2,0,0,4528,4538,5, - 9,0,0,4529,4531,3,370,185,0,4530,4529,1,0,0,0,4530,4531,1,0,0,0, - 4531,4535,1,0,0,0,4532,4533,5,83,0,0,4533,4534,5,147,0,0,4534,4536, - 3,370,185,0,4535,4532,1,0,0,0,4535,4536,1,0,0,0,4536,4538,1,0,0, - 0,4537,4528,1,0,0,0,4537,4530,1,0,0,0,4538,4539,1,0,0,0,4539,4540, - 5,3,0,0,4540,393,1,0,0,0,4541,4542,3,806,403,0,4542,4543,3,392,196, - 0,4543,395,1,0,0,0,4544,4545,5,316,0,0,4545,4548,5,78,0,0,4546,4548, - 5,149,0,0,4547,4544,1,0,0,0,4547,4546,1,0,0,0,4548,4549,1,0,0,0, - 4549,4550,5,80,0,0,4550,4551,5,78,0,0,4551,4574,5,458,0,0,4552,4574, - 5,346,0,0,4553,4574,5,222,0,0,4554,4574,5,338,0,0,4555,4574,5,377, - 0,0,4556,4558,5,205,0,0,4557,4556,1,0,0,0,4557,4558,1,0,0,0,4558, - 4559,1,0,0,0,4559,4560,5,327,0,0,4560,4574,7,58,0,0,4561,4574,5, - 250,0,0,4562,4563,5,77,0,0,4563,4574,5,250,0,0,4564,4565,7,59,0, - 0,4565,4574,3,202,101,0,4566,4567,5,459,0,0,4567,4574,3,316,158, - 0,4568,4569,5,333,0,0,4569,4574,3,42,21,0,4570,4574,3,60,30,0,4571, - 4572,5,460,0,0,4572,4574,3,818,409,0,4573,4547,1,0,0,0,4573,4552, - 1,0,0,0,4573,4553,1,0,0,0,4573,4554,1,0,0,0,4573,4555,1,0,0,0,4573, - 4557,1,0,0,0,4573,4561,1,0,0,0,4573,4562,1,0,0,0,4573,4564,1,0,0, - 0,4573,4566,1,0,0,0,4573,4568,1,0,0,0,4573,4570,1,0,0,0,4573,4571, - 1,0,0,0,4574,397,1,0,0,0,4575,4576,5,36,0,0,4576,4577,3,808,404, - 0,4577,4578,3,462,231,0,4578,4611,1,0,0,0,4579,4580,5,247,0,0,4580, - 4611,3,58,29,0,4581,4582,5,443,0,0,4582,4583,5,62,0,0,4583,4584, - 5,360,0,0,4584,4591,3,652,326,0,4585,4586,5,6,0,0,4586,4587,5,62, - 0,0,4587,4588,5,360,0,0,4588,4590,3,652,326,0,4589,4585,1,0,0,0, - 4590,4593,1,0,0,0,4591,4589,1,0,0,0,4591,4592,1,0,0,0,4592,4611, - 1,0,0,0,4593,4591,1,0,0,0,4594,4611,5,104,0,0,4595,4596,5,333,0, - 0,4596,4603,3,818,409,0,4597,4598,5,94,0,0,4598,4604,3,818,409,0, - 4599,4600,5,10,0,0,4600,4604,3,818,409,0,4601,4602,5,64,0,0,4602, - 4604,5,434,0,0,4603,4597,1,0,0,0,4603,4599,1,0,0,0,4603,4601,1,0, - 0,0,4604,4611,1,0,0,0,4605,4606,5,36,0,0,4606,4611,3,818,409,0,4607, - 4611,3,4,2,0,4608,4611,3,396,198,0,4609,4611,3,818,409,0,4610,4575, - 1,0,0,0,4610,4579,1,0,0,0,4610,4581,1,0,0,0,4610,4594,1,0,0,0,4610, - 4595,1,0,0,0,4610,4605,1,0,0,0,4610,4607,1,0,0,0,4610,4608,1,0,0, - 0,4610,4609,1,0,0,0,4611,399,1,0,0,0,4612,4613,5,105,0,0,4613,4614, - 3,284,142,0,4614,401,1,0,0,0,4615,4616,3,800,400,0,4616,4617,3,388, - 194,0,4617,403,1,0,0,0,4618,4625,5,138,0,0,4619,4620,5,211,0,0,4620, - 4626,3,382,191,0,4621,4622,5,296,0,0,4622,4626,3,378,189,0,4623, - 4624,5,442,0,0,4624,4626,3,374,187,0,4625,4619,1,0,0,0,4625,4621, - 1,0,0,0,4625,4623,1,0,0,0,4626,4628,1,0,0,0,4627,4629,3,396,198, - 0,4628,4627,1,0,0,0,4629,4630,1,0,0,0,4630,4628,1,0,0,0,4630,4631, - 1,0,0,0,4631,4633,1,0,0,0,4632,4634,5,315,0,0,4633,4632,1,0,0,0, - 4633,4634,1,0,0,0,4634,405,1,0,0,0,4635,4651,5,191,0,0,4636,4638, - 5,211,0,0,4637,4639,3,422,211,0,4638,4637,1,0,0,0,4638,4639,1,0, - 0,0,4639,4640,1,0,0,0,4640,4652,3,380,190,0,4641,4643,5,296,0,0, - 4642,4644,3,422,211,0,4643,4642,1,0,0,0,4643,4644,1,0,0,0,4644,4645, - 1,0,0,0,4645,4652,3,376,188,0,4646,4648,5,442,0,0,4647,4649,3,422, - 211,0,4648,4647,1,0,0,0,4648,4649,1,0,0,0,4649,4650,1,0,0,0,4650, - 4652,3,372,186,0,4651,4636,1,0,0,0,4651,4641,1,0,0,0,4651,4646,1, - 0,0,0,4652,4654,1,0,0,0,4653,4655,3,96,48,0,4654,4653,1,0,0,0,4654, - 4655,1,0,0,0,4655,407,1,0,0,0,4656,4657,5,191,0,0,4657,4659,5,136, - 0,0,4658,4660,3,422,211,0,4659,4658,1,0,0,0,4659,4660,1,0,0,0,4660, - 4661,1,0,0,0,4661,4666,3,394,197,0,4662,4663,5,6,0,0,4663,4665,3, - 394,197,0,4664,4662,1,0,0,0,4665,4668,1,0,0,0,4666,4664,1,0,0,0, - 4666,4667,1,0,0,0,4667,4670,1,0,0,0,4668,4666,1,0,0,0,4669,4671, - 3,96,48,0,4670,4669,1,0,0,0,4670,4671,1,0,0,0,4671,409,1,0,0,0,4672, - 4673,5,191,0,0,4673,4675,5,278,0,0,4674,4676,3,422,211,0,4675,4674, - 1,0,0,0,4675,4676,1,0,0,0,4676,4677,1,0,0,0,4677,4682,3,416,208, - 0,4678,4679,5,6,0,0,4679,4681,3,416,208,0,4680,4678,1,0,0,0,4681, - 4684,1,0,0,0,4682,4680,1,0,0,0,4682,4683,1,0,0,0,4683,4686,1,0,0, - 0,4684,4682,1,0,0,0,4685,4687,3,96,48,0,4686,4685,1,0,0,0,4686,4687, - 1,0,0,0,4687,411,1,0,0,0,4688,4701,5,2,0,0,4689,4692,3,652,326,0, - 4690,4691,5,6,0,0,4691,4693,3,652,326,0,4692,4690,1,0,0,0,4692,4693, - 1,0,0,0,4693,4702,1,0,0,0,4694,4695,5,407,0,0,4695,4696,5,6,0,0, - 4696,4702,3,652,326,0,4697,4698,3,652,326,0,4698,4699,5,6,0,0,4699, - 4700,5,407,0,0,4700,4702,1,0,0,0,4701,4689,1,0,0,0,4701,4694,1,0, - 0,0,4701,4697,1,0,0,0,4702,4703,1,0,0,0,4703,4704,5,3,0,0,4704,413, - 1,0,0,0,4705,4706,3,818,409,0,4706,4707,5,11,0,0,4707,4709,1,0,0, - 0,4708,4705,1,0,0,0,4709,4712,1,0,0,0,4710,4708,1,0,0,0,4710,4711, - 1,0,0,0,4711,4713,1,0,0,0,4712,4710,1,0,0,0,4713,4714,3,720,360, - 0,4714,415,1,0,0,0,4715,4716,3,414,207,0,4716,4717,3,412,206,0,4717, - 417,1,0,0,0,4718,4722,5,57,0,0,4719,4723,3,808,404,0,4720,4721,5, - 247,0,0,4721,4723,3,58,29,0,4722,4719,1,0,0,0,4722,4720,1,0,0,0, - 4723,4724,1,0,0,0,4724,4722,1,0,0,0,4724,4725,1,0,0,0,4725,419,1, - 0,0,0,4726,4727,5,46,0,0,4727,4728,5,41,0,0,4728,4729,5,2,0,0,4729, - 4730,3,652,326,0,4730,4731,5,36,0,0,4731,4732,3,652,326,0,4732,4749, - 5,3,0,0,4733,4734,5,379,0,0,4734,4737,5,211,0,0,4735,4736,5,36,0, - 0,4736,4738,7,60,0,0,4737,4735,1,0,0,0,4737,4738,1,0,0,0,4738,4750, - 1,0,0,0,4739,4743,5,105,0,0,4740,4741,5,211,0,0,4741,4744,3,382, - 191,0,4742,4744,5,400,0,0,4743,4740,1,0,0,0,4743,4742,1,0,0,0,4744, - 4747,1,0,0,0,4745,4746,5,36,0,0,4746,4748,7,60,0,0,4747,4745,1,0, - 0,0,4747,4748,1,0,0,0,4748,4750,1,0,0,0,4749,4733,1,0,0,0,4749,4739, - 1,0,0,0,4750,421,1,0,0,0,4751,4752,5,220,0,0,4752,4753,5,396,0,0, - 4753,423,1,0,0,0,4754,4756,5,46,0,0,4755,4757,3,366,183,0,4756,4755, - 1,0,0,0,4756,4757,1,0,0,0,4757,4758,1,0,0,0,4758,4759,5,443,0,0, - 4759,4760,5,62,0,0,4760,4761,3,652,326,0,4761,4762,5,247,0,0,4762, - 4763,3,818,409,0,4763,4778,5,2,0,0,4764,4765,5,64,0,0,4765,4769, - 3,426,213,0,4766,4767,5,6,0,0,4767,4768,5,94,0,0,4768,4770,3,426, - 213,0,4769,4766,1,0,0,0,4769,4770,1,0,0,0,4770,4779,1,0,0,0,4771, - 4772,5,94,0,0,4772,4776,3,426,213,0,4773,4774,5,6,0,0,4774,4775, - 5,64,0,0,4775,4777,3,426,213,0,4776,4773,1,0,0,0,4776,4777,1,0,0, - 0,4777,4779,1,0,0,0,4778,4764,1,0,0,0,4778,4771,1,0,0,0,4779,4780, - 1,0,0,0,4780,4781,5,3,0,0,4781,425,1,0,0,0,4782,4783,5,461,0,0,4783, - 4784,5,105,0,0,4784,4785,5,211,0,0,4785,4786,3,382,191,0,4786,427, - 1,0,0,0,4787,4798,5,306,0,0,4788,4789,5,2,0,0,4789,4794,5,128,0, - 0,4790,4791,5,6,0,0,4791,4793,5,128,0,0,4792,4790,1,0,0,0,4793,4796, - 1,0,0,0,4794,4792,1,0,0,0,4794,4795,1,0,0,0,4795,4797,1,0,0,0,4796, - 4794,1,0,0,0,4797,4799,5,3,0,0,4798,4788,1,0,0,0,4798,4799,1,0,0, - 0,4799,4825,1,0,0,0,4800,4802,5,226,0,0,4801,4803,5,109,0,0,4802, - 4801,1,0,0,0,4802,4803,1,0,0,0,4803,4804,1,0,0,0,4804,4826,3,780, - 390,0,4805,4807,5,92,0,0,4806,4808,5,109,0,0,4807,4806,1,0,0,0,4807, - 4808,1,0,0,0,4808,4809,1,0,0,0,4809,4826,3,774,387,0,4810,4812,5, - 323,0,0,4811,4813,5,109,0,0,4812,4811,1,0,0,0,4812,4813,1,0,0,0, - 4813,4814,1,0,0,0,4814,4826,3,790,395,0,4815,4817,5,349,0,0,4816, - 4818,5,109,0,0,4817,4816,1,0,0,0,4817,4818,1,0,0,0,4818,4819,1,0, - 0,0,4819,4826,3,818,409,0,4820,4822,5,175,0,0,4821,4823,5,109,0, - 0,4822,4821,1,0,0,0,4822,4823,1,0,0,0,4823,4824,1,0,0,0,4824,4826, - 3,788,394,0,4825,4800,1,0,0,0,4825,4805,1,0,0,0,4825,4810,1,0,0, - 0,4825,4815,1,0,0,0,4825,4820,1,0,0,0,4826,429,1,0,0,0,4827,4828, - 5,138,0,0,4828,4829,3,176,88,0,4829,4830,7,16,0,0,4830,4831,3,100, - 50,0,4831,431,1,0,0,0,4832,4837,5,138,0,0,4833,4834,5,136,0,0,4834, - 4838,3,394,197,0,4835,4836,5,442,0,0,4836,4838,3,374,187,0,4837, - 4833,1,0,0,0,4837,4835,1,0,0,0,4838,4839,1,0,0,0,4839,4840,5,309, - 0,0,4840,4841,5,94,0,0,4841,4842,3,818,409,0,4842,5040,1,0,0,0,4843, - 4844,5,138,0,0,4844,4845,5,175,0,0,4845,4846,3,788,394,0,4846,4847, - 5,309,0,0,4847,4848,5,94,0,0,4848,4849,3,786,393,0,4849,5040,1,0, - 0,0,4850,4851,5,138,0,0,4851,4852,7,61,0,0,4852,4853,3,316,158,0, - 4853,4854,5,309,0,0,4854,4855,5,94,0,0,4855,4856,3,818,409,0,4856, - 5040,1,0,0,0,4857,4858,5,138,0,0,4858,4859,5,211,0,0,4859,4860,3, - 382,191,0,4860,4861,5,309,0,0,4861,4862,5,94,0,0,4862,4863,3,804, - 402,0,4863,5040,1,0,0,0,4864,4865,5,138,0,0,4865,4866,5,278,0,0, - 4866,4867,7,31,0,0,4867,4868,3,316,158,0,4868,4869,3,170,85,0,4869, - 4870,5,309,0,0,4870,4871,5,94,0,0,4871,4872,3,818,409,0,4872,5040, - 1,0,0,0,4873,4874,5,138,0,0,4874,4875,5,296,0,0,4875,4876,3,378, - 189,0,4876,4877,5,309,0,0,4877,4878,5,94,0,0,4878,4879,3,798,399, - 0,4879,5040,1,0,0,0,4880,4881,5,138,0,0,4881,4882,5,323,0,0,4882, - 4883,3,790,395,0,4883,4884,5,309,0,0,4884,4885,5,94,0,0,4885,4886, - 3,32,16,0,4886,5040,1,0,0,0,4887,4888,5,138,0,0,4888,4890,7,62,0, - 0,4889,4891,3,422,211,0,4890,4889,1,0,0,0,4890,4891,1,0,0,0,4891, - 4892,1,0,0,0,4892,4893,3,780,390,0,4893,4894,5,309,0,0,4894,4895, - 5,94,0,0,4895,4896,3,818,409,0,4896,5040,1,0,0,0,4897,4899,5,138, - 0,0,4898,4900,5,259,0,0,4899,4898,1,0,0,0,4899,4900,1,0,0,0,4900, - 4901,1,0,0,0,4901,4903,5,376,0,0,4902,4904,3,422,211,0,4903,4902, - 1,0,0,0,4903,4904,1,0,0,0,4904,4905,1,0,0,0,4905,4906,3,778,389, - 0,4906,4907,5,309,0,0,4907,4908,5,94,0,0,4908,4909,3,776,388,0,4909, - 5040,1,0,0,0,4910,4912,5,138,0,0,4911,4913,5,63,0,0,4912,4911,1, - 0,0,0,4912,4913,1,0,0,0,4913,4914,1,0,0,0,4914,4916,5,92,0,0,4915, - 4917,3,422,211,0,4916,4915,1,0,0,0,4916,4917,1,0,0,0,4917,4918,1, - 0,0,0,4918,4919,3,624,312,0,4919,4920,5,309,0,0,4920,4921,5,94,0, - 0,4921,4922,3,772,386,0,4922,5040,1,0,0,0,4923,4948,5,138,0,0,4924, - 4926,5,63,0,0,4925,4924,1,0,0,0,4925,4926,1,0,0,0,4926,4927,1,0, - 0,0,4927,4929,5,92,0,0,4928,4930,3,422,211,0,4929,4928,1,0,0,0,4929, - 4930,1,0,0,0,4930,4931,1,0,0,0,4931,4932,3,624,312,0,4932,4934,5, - 309,0,0,4933,4935,5,44,0,0,4934,4933,1,0,0,0,4934,4935,1,0,0,0,4935, - 4949,1,0,0,0,4936,4938,5,259,0,0,4937,4936,1,0,0,0,4937,4938,1,0, - 0,0,4938,4939,1,0,0,0,4939,4941,5,376,0,0,4940,4942,3,422,211,0, - 4941,4940,1,0,0,0,4941,4942,1,0,0,0,4942,4943,1,0,0,0,4943,4944, - 3,778,389,0,4944,4946,5,309,0,0,4945,4947,5,44,0,0,4946,4945,1,0, - 0,0,4946,4947,1,0,0,0,4947,4949,1,0,0,0,4948,4925,1,0,0,0,4948,4937, - 1,0,0,0,4949,4950,1,0,0,0,4950,4951,3,800,400,0,4951,4952,5,94,0, - 0,4952,4953,3,802,401,0,4953,5040,1,0,0,0,4954,4962,5,138,0,0,4955, - 4957,5,92,0,0,4956,4958,3,422,211,0,4957,4956,1,0,0,0,4957,4958, - 1,0,0,0,4958,4959,1,0,0,0,4959,4963,3,624,312,0,4960,4961,5,189, - 0,0,4961,4963,3,316,158,0,4962,4955,1,0,0,0,4962,4960,1,0,0,0,4963, - 4964,1,0,0,0,4964,4965,5,309,0,0,4965,4966,5,45,0,0,4966,4967,3, - 818,409,0,4967,4968,5,94,0,0,4968,4969,3,818,409,0,4969,5040,1,0, - 0,0,4970,4977,5,138,0,0,4971,4973,5,445,0,0,4972,4974,3,422,211, - 0,4973,4972,1,0,0,0,4973,4974,1,0,0,0,4974,4978,1,0,0,0,4975,4978, - 5,321,0,0,4976,4978,5,357,0,0,4977,4971,1,0,0,0,4977,4975,1,0,0, - 0,4977,4976,1,0,0,0,4978,4979,1,0,0,0,4979,4980,3,818,409,0,4980, - 4981,5,80,0,0,4981,4982,3,780,390,0,4982,4983,5,309,0,0,4983,4984, - 5,94,0,0,4984,4985,3,818,409,0,4985,5040,1,0,0,0,4986,4999,5,138, - 0,0,4987,4988,5,63,0,0,4988,4989,5,174,0,0,4989,5000,5,381,0,0,4990, - 4992,5,295,0,0,4991,4990,1,0,0,0,4991,4992,1,0,0,0,4992,4993,1,0, - 0,0,4993,5000,5,247,0,0,4994,5000,5,452,0,0,4995,5000,5,331,0,0, - 4996,5000,5,451,0,0,4997,4998,5,198,0,0,4998,5000,5,357,0,0,4999, - 4987,1,0,0,0,4999,4991,1,0,0,0,4999,4994,1,0,0,0,4999,4995,1,0,0, - 0,4999,4996,1,0,0,0,4999,4997,1,0,0,0,5000,5001,1,0,0,0,5001,5002, - 3,818,409,0,5002,5003,5,309,0,0,5003,5004,5,94,0,0,5004,5005,3,818, - 409,0,5005,5040,1,0,0,0,5006,5007,5,138,0,0,5007,5008,7,45,0,0,5008, - 5009,3,814,407,0,5009,5010,5,309,0,0,5010,5011,5,94,0,0,5011,5012, - 3,814,407,0,5012,5040,1,0,0,0,5013,5014,5,138,0,0,5014,5015,3,176, - 88,0,5015,5016,5,309,0,0,5016,5017,5,94,0,0,5017,5018,3,768,384, - 0,5018,5040,1,0,0,0,5019,5020,5,138,0,0,5020,5021,5,355,0,0,5021, - 5022,5,325,0,0,5022,5023,7,41,0,0,5023,5024,3,316,158,0,5024,5025, - 5,309,0,0,5025,5026,5,94,0,0,5026,5027,3,818,409,0,5027,5040,1,0, - 0,0,5028,5029,5,138,0,0,5029,5030,5,360,0,0,5030,5031,3,316,158, - 0,5031,5032,5,309,0,0,5032,5033,5,143,0,0,5033,5034,3,818,409,0, - 5034,5035,5,94,0,0,5035,5037,3,818,409,0,5036,5038,3,96,48,0,5037, - 5036,1,0,0,0,5037,5038,1,0,0,0,5038,5040,1,0,0,0,5039,4832,1,0,0, - 0,5039,4843,1,0,0,0,5039,4850,1,0,0,0,5039,4857,1,0,0,0,5039,4864, - 1,0,0,0,5039,4873,1,0,0,0,5039,4880,1,0,0,0,5039,4887,1,0,0,0,5039, - 4897,1,0,0,0,5039,4910,1,0,0,0,5039,4923,1,0,0,0,5039,4954,1,0,0, - 0,5039,4970,1,0,0,0,5039,4986,1,0,0,0,5039,5006,1,0,0,0,5039,5013, - 1,0,0,0,5039,5019,1,0,0,0,5039,5028,1,0,0,0,5040,433,1,0,0,0,5041, - 5058,5,138,0,0,5042,5043,5,211,0,0,5043,5059,3,382,191,0,5044,5045, - 5,296,0,0,5045,5059,3,378,189,0,5046,5047,5,442,0,0,5047,5059,3, - 374,187,0,5048,5049,5,357,0,0,5049,5050,3,818,409,0,5050,5051,5, - 80,0,0,5051,5052,3,780,390,0,5052,5059,1,0,0,0,5053,5054,5,259,0, - 0,5054,5055,5,376,0,0,5055,5059,3,778,389,0,5056,5057,5,226,0,0, - 5057,5059,3,780,390,0,5058,5042,1,0,0,0,5058,5044,1,0,0,0,5058,5046, - 1,0,0,0,5058,5048,1,0,0,0,5058,5053,1,0,0,0,5058,5056,1,0,0,0,5059, - 5061,1,0,0,0,5060,5062,5,269,0,0,5061,5060,1,0,0,0,5061,5062,1,0, - 0,0,5062,5063,1,0,0,0,5063,5064,5,462,0,0,5064,5065,5,80,0,0,5065, - 5066,5,204,0,0,5066,5067,3,818,409,0,5067,435,1,0,0,0,5068,5107, - 5,138,0,0,5069,5070,5,136,0,0,5070,5108,3,394,197,0,5071,5072,5, - 204,0,0,5072,5108,3,818,409,0,5073,5074,5,211,0,0,5074,5108,3,382, - 191,0,5075,5076,5,278,0,0,5076,5108,3,416,208,0,5077,5078,5,278, - 0,0,5078,5079,7,31,0,0,5079,5080,3,316,158,0,5080,5081,3,170,85, - 0,5081,5108,1,0,0,0,5082,5083,5,296,0,0,5083,5108,3,378,189,0,5084, - 5085,5,442,0,0,5085,5108,3,374,187,0,5086,5088,5,328,0,0,5087,5089, - 3,422,211,0,5088,5087,1,0,0,0,5088,5089,1,0,0,0,5089,5090,1,0,0, - 0,5090,5108,3,780,390,0,5091,5093,5,259,0,0,5092,5091,1,0,0,0,5092, - 5093,1,0,0,0,5093,5094,1,0,0,0,5094,5096,5,376,0,0,5095,5097,3,422, - 211,0,5096,5095,1,0,0,0,5096,5097,1,0,0,0,5097,5098,1,0,0,0,5098, - 5108,3,778,389,0,5099,5101,5,63,0,0,5100,5099,1,0,0,0,5100,5101, - 1,0,0,0,5101,5102,1,0,0,0,5102,5104,5,92,0,0,5103,5105,3,422,211, - 0,5104,5103,1,0,0,0,5104,5105,1,0,0,0,5105,5106,1,0,0,0,5106,5108, - 3,624,312,0,5107,5069,1,0,0,0,5107,5071,1,0,0,0,5107,5073,1,0,0, - 0,5107,5075,1,0,0,0,5107,5077,1,0,0,0,5107,5082,1,0,0,0,5107,5084, - 1,0,0,0,5107,5086,1,0,0,0,5107,5092,1,0,0,0,5107,5100,1,0,0,0,5108, - 5109,1,0,0,0,5109,5110,5,333,0,0,5110,5111,5,323,0,0,5111,5112,3, - 790,395,0,5112,5130,1,0,0,0,5113,5122,5,138,0,0,5114,5115,5,355, - 0,0,5115,5116,5,325,0,0,5116,5123,7,41,0,0,5117,5123,5,108,0,0,5118, - 5123,5,168,0,0,5119,5123,5,189,0,0,5120,5123,5,342,0,0,5121,5123, - 5,360,0,0,5122,5114,1,0,0,0,5122,5117,1,0,0,0,5122,5118,1,0,0,0, - 5122,5119,1,0,0,0,5122,5120,1,0,0,0,5122,5121,1,0,0,0,5123,5124, - 1,0,0,0,5124,5125,3,316,158,0,5125,5126,5,333,0,0,5126,5127,5,323, - 0,0,5127,5128,3,790,395,0,5128,5130,1,0,0,0,5129,5068,1,0,0,0,5129, - 5113,1,0,0,0,5130,437,1,0,0,0,5131,5132,5,138,0,0,5132,5133,5,278, - 0,0,5133,5134,3,416,208,0,5134,5135,5,333,0,0,5135,5136,3,440,220, - 0,5136,439,1,0,0,0,5137,5138,5,2,0,0,5138,5143,3,442,221,0,5139, - 5140,5,6,0,0,5140,5142,3,442,221,0,5141,5139,1,0,0,0,5142,5145,1, - 0,0,0,5143,5141,1,0,0,0,5143,5144,1,0,0,0,5144,5146,1,0,0,0,5145, - 5143,1,0,0,0,5146,5147,5,3,0,0,5147,441,1,0,0,0,5148,5149,3,824, - 412,0,5149,5156,5,10,0,0,5150,5157,5,407,0,0,5151,5157,3,388,194, - 0,5152,5157,3,834,417,0,5153,5157,3,726,363,0,5154,5157,3,202,101, - 0,5155,5157,3,808,404,0,5156,5150,1,0,0,0,5156,5151,1,0,0,0,5156, - 5152,1,0,0,0,5156,5153,1,0,0,0,5156,5154,1,0,0,0,5156,5155,1,0,0, - 0,5157,443,1,0,0,0,5158,5159,5,138,0,0,5159,5160,5,360,0,0,5160, - 5161,3,316,158,0,5161,5162,5,333,0,0,5162,5163,3,440,220,0,5163, - 445,1,0,0,0,5164,5165,5,138,0,0,5165,5166,5,278,0,0,5166,5167,7, - 31,0,0,5167,5168,3,316,158,0,5168,5169,3,170,85,0,5169,5170,5,282, - 0,0,5170,5171,5,94,0,0,5171,5172,3,814,407,0,5172,5239,1,0,0,0,5173, - 5200,5,138,0,0,5174,5175,5,136,0,0,5175,5201,3,394,197,0,5176,5177, - 5,175,0,0,5177,5201,3,788,394,0,5178,5179,5,211,0,0,5179,5201,3, - 382,191,0,5180,5182,5,295,0,0,5181,5180,1,0,0,0,5181,5182,1,0,0, - 0,5182,5183,1,0,0,0,5183,5184,5,247,0,0,5184,5201,3,818,409,0,5185, - 5186,5,248,0,0,5186,5187,5,274,0,0,5187,5201,3,202,101,0,5188,5189, - 5,248,0,0,5189,5190,5,274,0,0,5190,5201,3,202,101,0,5191,5192,5, - 278,0,0,5192,5201,3,416,208,0,5193,5194,5,296,0,0,5194,5201,3,378, - 189,0,5195,5196,5,442,0,0,5196,5201,3,374,187,0,5197,5198,5,323, - 0,0,5198,5201,3,790,395,0,5199,5201,3,176,88,0,5200,5174,1,0,0,0, - 5200,5176,1,0,0,0,5200,5178,1,0,0,0,5200,5181,1,0,0,0,5200,5185, - 1,0,0,0,5200,5188,1,0,0,0,5200,5191,1,0,0,0,5200,5193,1,0,0,0,5200, - 5195,1,0,0,0,5200,5197,1,0,0,0,5200,5199,1,0,0,0,5201,5202,1,0,0, - 0,5202,5203,5,282,0,0,5203,5204,5,94,0,0,5204,5205,3,814,407,0,5205, - 5239,1,0,0,0,5206,5215,5,138,0,0,5207,5208,5,355,0,0,5208,5209,5, - 325,0,0,5209,5216,7,63,0,0,5210,5216,5,108,0,0,5211,5216,5,168,0, - 0,5212,5216,5,189,0,0,5213,5216,5,360,0,0,5214,5216,5,342,0,0,5215, - 5207,1,0,0,0,5215,5210,1,0,0,0,5215,5211,1,0,0,0,5215,5212,1,0,0, - 0,5215,5213,1,0,0,0,5215,5214,1,0,0,0,5216,5217,1,0,0,0,5217,5218, - 3,316,158,0,5218,5219,5,282,0,0,5219,5220,5,94,0,0,5220,5221,3,814, - 407,0,5221,5239,1,0,0,0,5222,5231,5,138,0,0,5223,5232,5,331,0,0, - 5224,5225,5,63,0,0,5225,5226,5,174,0,0,5226,5232,5,381,0,0,5227, - 5228,5,198,0,0,5228,5232,5,357,0,0,5229,5232,5,452,0,0,5230,5232, - 5,451,0,0,5231,5223,1,0,0,0,5231,5224,1,0,0,0,5231,5227,1,0,0,0, - 5231,5229,1,0,0,0,5231,5230,1,0,0,0,5232,5233,1,0,0,0,5233,5234, - 3,818,409,0,5234,5235,5,282,0,0,5235,5236,5,94,0,0,5236,5237,3,814, - 407,0,5237,5239,1,0,0,0,5238,5164,1,0,0,0,5238,5173,1,0,0,0,5238, - 5206,1,0,0,0,5238,5222,1,0,0,0,5239,447,1,0,0,0,5240,5241,5,46,0, - 0,5241,5242,5,452,0,0,5242,5249,3,818,409,0,5243,5244,5,62,0,0,5244, - 5245,5,92,0,0,5245,5250,3,628,314,0,5246,5247,5,62,0,0,5247,5248, - 5,30,0,0,5248,5250,5,350,0,0,5249,5243,1,0,0,0,5249,5246,1,0,0,0, - 5249,5250,1,0,0,0,5250,5252,1,0,0,0,5251,5253,3,400,200,0,5252,5251, - 1,0,0,0,5252,5253,1,0,0,0,5253,449,1,0,0,0,5254,5255,5,138,0,0,5255, - 5256,5,452,0,0,5256,5274,3,818,409,0,5257,5258,5,282,0,0,5258,5259, - 5,94,0,0,5259,5275,3,814,407,0,5260,5261,5,333,0,0,5261,5275,3,284, - 142,0,5262,5263,5,309,0,0,5263,5264,5,94,0,0,5264,5275,3,818,409, - 0,5265,5266,7,34,0,0,5266,5271,3,626,313,0,5267,5268,5,6,0,0,5268, - 5270,3,626,313,0,5269,5267,1,0,0,0,5270,5273,1,0,0,0,5271,5269,1, - 0,0,0,5271,5272,1,0,0,0,5272,5275,1,0,0,0,5273,5271,1,0,0,0,5274, - 5257,1,0,0,0,5274,5260,1,0,0,0,5274,5262,1,0,0,0,5274,5265,1,0,0, - 0,5275,451,1,0,0,0,5276,5277,5,46,0,0,5277,5278,5,451,0,0,5278,5279, - 3,818,409,0,5279,5280,5,164,0,0,5280,5281,3,808,404,0,5281,5282, - 5,452,0,0,5282,5287,3,824,412,0,5283,5284,5,6,0,0,5284,5286,3,824, - 412,0,5285,5283,1,0,0,0,5286,5289,1,0,0,0,5287,5285,1,0,0,0,5287, - 5288,1,0,0,0,5288,5291,1,0,0,0,5289,5287,1,0,0,0,5290,5292,3,400, - 200,0,5291,5290,1,0,0,0,5291,5292,1,0,0,0,5292,453,1,0,0,0,5293, - 5294,5,138,0,0,5294,5295,5,451,0,0,5295,5296,3,818,409,0,5296,5297, - 5,333,0,0,5297,5298,3,284,142,0,5298,5350,1,0,0,0,5299,5300,5,138, - 0,0,5300,5301,5,451,0,0,5301,5302,3,818,409,0,5302,5303,5,164,0, - 0,5303,5304,3,808,404,0,5304,5350,1,0,0,0,5305,5306,5,138,0,0,5306, - 5307,5,451,0,0,5307,5308,3,818,409,0,5308,5309,5,305,0,0,5309,5311, - 5,452,0,0,5310,5312,3,400,200,0,5311,5310,1,0,0,0,5311,5312,1,0, - 0,0,5312,5350,1,0,0,0,5313,5314,5,138,0,0,5314,5315,5,451,0,0,5315, - 5316,3,818,409,0,5316,5317,7,34,0,0,5317,5318,5,452,0,0,5318,5323, - 3,824,412,0,5319,5320,5,6,0,0,5320,5322,3,824,412,0,5321,5319,1, - 0,0,0,5322,5325,1,0,0,0,5323,5321,1,0,0,0,5323,5324,1,0,0,0,5324, - 5327,1,0,0,0,5325,5323,1,0,0,0,5326,5328,3,400,200,0,5327,5326,1, - 0,0,0,5327,5328,1,0,0,0,5328,5350,1,0,0,0,5329,5330,5,138,0,0,5330, - 5331,5,451,0,0,5331,5332,3,818,409,0,5332,5333,7,64,0,0,5333,5350, - 1,0,0,0,5334,5335,5,138,0,0,5335,5336,5,451,0,0,5336,5337,3,818, - 409,0,5337,5338,5,465,0,0,5338,5339,5,2,0,0,5339,5340,3,290,145, - 0,5340,5341,5,3,0,0,5341,5350,1,0,0,0,5342,5343,5,138,0,0,5343,5344, - 5,451,0,0,5344,5345,3,818,409,0,5345,5346,5,282,0,0,5346,5347,5, - 94,0,0,5347,5348,3,814,407,0,5348,5350,1,0,0,0,5349,5293,1,0,0,0, - 5349,5299,1,0,0,0,5349,5305,1,0,0,0,5349,5313,1,0,0,0,5349,5329, - 1,0,0,0,5349,5334,1,0,0,0,5349,5342,1,0,0,0,5350,455,1,0,0,0,5351, - 5353,5,46,0,0,5352,5354,3,366,183,0,5353,5352,1,0,0,0,5353,5354, - 1,0,0,0,5354,5355,1,0,0,0,5355,5356,5,321,0,0,5356,5357,3,818,409, - 0,5357,5358,5,36,0,0,5358,5359,5,80,0,0,5359,5360,7,65,0,0,5360, - 5361,5,94,0,0,5361,5363,3,780,390,0,5362,5364,3,638,319,0,5363,5362, - 1,0,0,0,5363,5364,1,0,0,0,5364,5365,1,0,0,0,5365,5367,5,57,0,0,5366, - 5368,7,66,0,0,5367,5366,1,0,0,0,5367,5368,1,0,0,0,5368,5385,1,0, - 0,0,5369,5386,5,270,0,0,5370,5386,3,458,229,0,5371,5373,5,2,0,0, - 5372,5374,3,458,229,0,5373,5372,1,0,0,0,5373,5374,1,0,0,0,5374,5381, - 1,0,0,0,5375,5377,5,7,0,0,5376,5378,3,458,229,0,5377,5376,1,0,0, - 0,5377,5378,1,0,0,0,5378,5380,1,0,0,0,5379,5375,1,0,0,0,5380,5383, - 1,0,0,0,5381,5379,1,0,0,0,5381,5382,1,0,0,0,5382,5384,1,0,0,0,5383, - 5381,1,0,0,0,5384,5386,5,3,0,0,5385,5369,1,0,0,0,5385,5370,1,0,0, - 0,5385,5371,1,0,0,0,5386,457,1,0,0,0,5387,5393,3,560,280,0,5388, - 5393,3,538,269,0,5389,5393,3,552,276,0,5390,5393,3,548,274,0,5391, - 5393,3,460,230,0,5392,5387,1,0,0,0,5392,5388,1,0,0,0,5392,5389,1, - 0,0,0,5392,5390,1,0,0,0,5392,5391,1,0,0,0,5393,459,1,0,0,0,5394, - 5395,5,271,0,0,5395,5397,3,818,409,0,5396,5398,3,462,231,0,5397, - 5396,1,0,0,0,5397,5398,1,0,0,0,5398,461,1,0,0,0,5399,5400,5,6,0, - 0,5400,5401,3,808,404,0,5401,463,1,0,0,0,5402,5403,5,252,0,0,5403, - 5404,3,818,409,0,5404,465,1,0,0,0,5405,5408,5,366,0,0,5406,5409, - 3,818,409,0,5407,5409,5,9,0,0,5408,5406,1,0,0,0,5408,5407,1,0,0, - 0,5409,467,1,0,0,0,5410,5412,5,146,0,0,5411,5413,3,470,235,0,5412, - 5411,1,0,0,0,5412,5413,1,0,0,0,5413,5415,1,0,0,0,5414,5416,3,474, - 237,0,5415,5414,1,0,0,0,5415,5416,1,0,0,0,5416,5456,1,0,0,0,5417, - 5418,5,340,0,0,5418,5420,5,356,0,0,5419,5421,3,474,237,0,5420,5419, - 1,0,0,0,5420,5421,1,0,0,0,5421,5456,1,0,0,0,5422,5423,5,322,0,0, - 5423,5456,3,818,409,0,5424,5426,5,308,0,0,5425,5427,5,322,0,0,5426, - 5425,1,0,0,0,5426,5427,1,0,0,0,5427,5428,1,0,0,0,5428,5456,3,818, - 409,0,5429,5430,5,290,0,0,5430,5431,5,356,0,0,5431,5456,3,808,404, - 0,5432,5433,7,67,0,0,5433,5434,5,291,0,0,5434,5456,3,808,404,0,5435, - 5437,7,68,0,0,5436,5438,3,470,235,0,5437,5436,1,0,0,0,5437,5438, - 1,0,0,0,5438,5444,1,0,0,0,5439,5441,5,33,0,0,5440,5442,5,269,0,0, - 5441,5440,1,0,0,0,5441,5442,1,0,0,0,5442,5443,1,0,0,0,5443,5445, - 5,153,0,0,5444,5439,1,0,0,0,5444,5445,1,0,0,0,5445,5456,1,0,0,0, - 5446,5448,5,319,0,0,5447,5449,3,470,235,0,5448,5447,1,0,0,0,5448, - 5449,1,0,0,0,5449,5450,1,0,0,0,5450,5452,5,94,0,0,5451,5453,5,322, - 0,0,5452,5451,1,0,0,0,5452,5453,1,0,0,0,5453,5454,1,0,0,0,5454,5456, - 3,818,409,0,5455,5410,1,0,0,0,5455,5417,1,0,0,0,5455,5422,1,0,0, - 0,5455,5424,1,0,0,0,5455,5429,1,0,0,0,5455,5432,1,0,0,0,5455,5435, - 1,0,0,0,5455,5446,1,0,0,0,5456,469,1,0,0,0,5457,5458,7,69,0,0,5458, - 471,1,0,0,0,5459,5460,5,244,0,0,5460,5461,5,251,0,0,5461,5469,3, - 50,25,0,5462,5463,5,300,0,0,5463,5469,7,70,0,0,5464,5466,5,77,0, - 0,5465,5464,1,0,0,0,5465,5466,1,0,0,0,5466,5467,1,0,0,0,5467,5469, - 5,54,0,0,5468,5459,1,0,0,0,5468,5462,1,0,0,0,5468,5465,1,0,0,0,5469, - 473,1,0,0,0,5470,5477,3,472,236,0,5471,5473,5,6,0,0,5472,5471,1, - 0,0,0,5472,5473,1,0,0,0,5473,5474,1,0,0,0,5474,5476,3,472,236,0, - 5475,5472,1,0,0,0,5476,5479,1,0,0,0,5477,5475,1,0,0,0,5477,5478, - 1,0,0,0,5478,475,1,0,0,0,5479,5477,1,0,0,0,5480,5483,5,46,0,0,5481, - 5482,5,82,0,0,5482,5484,5,311,0,0,5483,5481,1,0,0,0,5483,5484,1, - 0,0,0,5484,5486,1,0,0,0,5485,5487,3,122,61,0,5486,5485,1,0,0,0,5486, - 5487,1,0,0,0,5487,5503,1,0,0,0,5488,5489,5,376,0,0,5489,5491,3,776, - 388,0,5490,5492,3,146,73,0,5491,5490,1,0,0,0,5491,5492,1,0,0,0,5492, - 5494,1,0,0,0,5493,5495,3,102,51,0,5494,5493,1,0,0,0,5494,5495,1, - 0,0,0,5495,5504,1,0,0,0,5496,5497,5,303,0,0,5497,5498,5,376,0,0, - 5498,5499,3,776,388,0,5499,5501,3,144,72,0,5500,5502,3,102,51,0, - 5501,5500,1,0,0,0,5501,5502,1,0,0,0,5502,5504,1,0,0,0,5503,5488, - 1,0,0,0,5503,5496,1,0,0,0,5504,5505,1,0,0,0,5505,5506,5,36,0,0,5506, - 5513,3,560,280,0,5507,5509,5,105,0,0,5508,5510,7,71,0,0,5509,5508, - 1,0,0,0,5509,5510,1,0,0,0,5510,5511,1,0,0,0,5511,5512,5,42,0,0,5512, - 5514,5,279,0,0,5513,5507,1,0,0,0,5513,5514,1,0,0,0,5514,477,1,0, - 0,0,5515,5516,5,253,0,0,5516,5517,3,808,404,0,5517,479,1,0,0,0,5518, - 5519,5,46,0,0,5519,5520,5,175,0,0,5520,5522,3,786,393,0,5521,5523, - 5,105,0,0,5522,5521,1,0,0,0,5522,5523,1,0,0,0,5523,5529,1,0,0,0, - 5524,5526,3,482,241,0,5525,5524,1,0,0,0,5526,5527,1,0,0,0,5527,5525, - 1,0,0,0,5527,5528,1,0,0,0,5528,5530,1,0,0,0,5529,5525,1,0,0,0,5529, - 5530,1,0,0,0,5530,481,1,0,0,0,5531,5532,5,164,0,0,5532,5540,5,74, - 0,0,5533,5540,5,194,0,0,5534,5540,5,255,0,0,5535,5540,5,282,0,0, - 5536,5540,5,351,0,0,5537,5540,5,353,0,0,5538,5540,3,826,413,0,5539, - 5531,1,0,0,0,5539,5533,1,0,0,0,5539,5534,1,0,0,0,5539,5535,1,0,0, - 0,5539,5536,1,0,0,0,5539,5537,1,0,0,0,5539,5538,1,0,0,0,5540,5542, - 1,0,0,0,5541,5543,5,10,0,0,5542,5541,1,0,0,0,5542,5543,1,0,0,0,5543, - 5547,1,0,0,0,5544,5548,3,812,406,0,5545,5548,3,54,27,0,5546,5548, - 5,53,0,0,5547,5544,1,0,0,0,5547,5545,1,0,0,0,5547,5546,1,0,0,0,5548, - 483,1,0,0,0,5549,5550,5,138,0,0,5550,5551,5,175,0,0,5551,5567,3, - 788,394,0,5552,5553,5,333,0,0,5553,5554,5,351,0,0,5554,5556,3,768, - 384,0,5555,5552,1,0,0,0,5555,5556,1,0,0,0,5556,5568,1,0,0,0,5557, - 5559,5,105,0,0,5558,5557,1,0,0,0,5558,5559,1,0,0,0,5559,5561,1,0, - 0,0,5560,5562,3,482,241,0,5561,5560,1,0,0,0,5562,5563,1,0,0,0,5563, - 5561,1,0,0,0,5563,5564,1,0,0,0,5564,5566,1,0,0,0,5565,5558,1,0,0, - 0,5565,5566,1,0,0,0,5566,5568,1,0,0,0,5567,5555,1,0,0,0,5567,5565, - 1,0,0,0,5568,485,1,0,0,0,5569,5570,5,138,0,0,5570,5571,5,175,0,0, - 5571,5573,3,788,394,0,5572,5574,3,64,32,0,5573,5572,1,0,0,0,5573, - 5574,1,0,0,0,5574,487,1,0,0,0,5575,5576,5,138,0,0,5576,5577,5,108, - 0,0,5577,5578,3,316,158,0,5578,5579,5,305,0,0,5579,5580,5,375,0, - 0,5580,489,1,0,0,0,5581,5582,5,138,0,0,5582,5583,5,349,0,0,5583, - 5584,7,16,0,0,5584,5585,3,40,20,0,5585,491,1,0,0,0,5586,5587,5,46, - 0,0,5587,5588,5,189,0,0,5588,5590,3,316,158,0,5589,5591,5,36,0,0, - 5590,5589,1,0,0,0,5590,5591,1,0,0,0,5591,5592,1,0,0,0,5592,5596, - 3,652,326,0,5593,5595,3,134,67,0,5594,5593,1,0,0,0,5595,5598,1,0, - 0,0,5596,5594,1,0,0,0,5596,5597,1,0,0,0,5597,493,1,0,0,0,5598,5596, - 1,0,0,0,5599,5600,5,138,0,0,5600,5601,5,189,0,0,5601,5624,3,316, - 158,0,5602,5625,3,94,47,0,5603,5604,7,15,0,0,5604,5605,5,77,0,0, - 5605,5625,5,78,0,0,5606,5609,5,133,0,0,5607,5608,5,45,0,0,5608,5610, - 3,818,409,0,5609,5607,1,0,0,0,5609,5610,1,0,0,0,5610,5611,1,0,0, - 0,5611,5625,3,142,71,0,5612,5613,5,191,0,0,5613,5615,5,45,0,0,5614, - 5616,3,422,211,0,5615,5614,1,0,0,0,5615,5616,1,0,0,0,5616,5617,1, - 0,0,0,5617,5619,3,818,409,0,5618,5620,3,96,48,0,5619,5618,1,0,0, - 0,5619,5620,1,0,0,0,5620,5625,1,0,0,0,5621,5622,5,372,0,0,5622,5623, - 5,45,0,0,5623,5625,3,818,409,0,5624,5602,1,0,0,0,5624,5603,1,0,0, - 0,5624,5606,1,0,0,0,5624,5612,1,0,0,0,5624,5621,1,0,0,0,5625,495, - 1,0,0,0,5626,5627,5,138,0,0,5627,5628,5,355,0,0,5628,5629,5,325, - 0,0,5629,5630,5,185,0,0,5630,5631,3,316,158,0,5631,5632,3,284,142, - 0,5632,497,1,0,0,0,5633,5634,5,138,0,0,5634,5635,5,355,0,0,5635, - 5636,5,325,0,0,5636,5637,5,163,0,0,5637,5638,3,316,158,0,5638,5639, - 7,72,0,0,5639,5640,5,257,0,0,5640,5641,5,62,0,0,5641,5642,3,784, - 392,0,5642,5643,5,105,0,0,5643,5644,3,314,157,0,5644,5675,1,0,0, - 0,5645,5646,5,138,0,0,5646,5647,5,355,0,0,5647,5648,5,325,0,0,5648, - 5649,5,163,0,0,5649,5650,3,316,158,0,5650,5651,5,138,0,0,5651,5654, - 5,257,0,0,5652,5653,5,62,0,0,5653,5655,3,784,392,0,5654,5652,1,0, - 0,0,5654,5655,1,0,0,0,5655,5656,1,0,0,0,5656,5657,5,311,0,0,5657, - 5658,3,316,158,0,5658,5659,5,105,0,0,5659,5660,3,316,158,0,5660, - 5675,1,0,0,0,5661,5662,5,138,0,0,5662,5663,5,355,0,0,5663,5664,5, - 325,0,0,5664,5665,5,163,0,0,5665,5666,3,316,158,0,5666,5667,5,191, - 0,0,5667,5669,5,257,0,0,5668,5670,3,422,211,0,5669,5668,1,0,0,0, - 5669,5670,1,0,0,0,5670,5671,1,0,0,0,5671,5672,5,62,0,0,5672,5673, - 3,784,392,0,5673,5675,1,0,0,0,5674,5633,1,0,0,0,5674,5645,1,0,0, - 0,5674,5661,1,0,0,0,5675,499,1,0,0,0,5676,5678,5,46,0,0,5677,5679, - 5,53,0,0,5678,5677,1,0,0,0,5678,5679,1,0,0,0,5679,5680,1,0,0,0,5680, - 5681,5,168,0,0,5681,5682,3,316,158,0,5682,5683,5,62,0,0,5683,5684, - 3,808,404,0,5684,5685,5,94,0,0,5685,5686,3,808,404,0,5686,5687,5, - 64,0,0,5687,5688,3,316,158,0,5688,501,1,0,0,0,5689,5691,5,158,0, - 0,5690,5692,3,514,257,0,5691,5690,1,0,0,0,5691,5692,1,0,0,0,5692, - 5697,1,0,0,0,5693,5695,3,774,387,0,5694,5696,3,170,85,0,5695,5694, - 1,0,0,0,5695,5696,1,0,0,0,5696,5698,1,0,0,0,5697,5693,1,0,0,0,5697, - 5698,1,0,0,0,5698,5715,1,0,0,0,5699,5700,5,158,0,0,5700,5701,5,2, - 0,0,5701,5706,3,514,257,0,5702,5703,5,6,0,0,5703,5705,3,514,257, - 0,5704,5702,1,0,0,0,5705,5708,1,0,0,0,5706,5704,1,0,0,0,5706,5707, - 1,0,0,0,5707,5709,1,0,0,0,5708,5706,1,0,0,0,5709,5710,5,3,0,0,5710, - 5712,3,774,387,0,5711,5713,3,170,85,0,5712,5711,1,0,0,0,5712,5713, - 1,0,0,0,5713,5715,1,0,0,0,5714,5689,1,0,0,0,5714,5699,1,0,0,0,5715, - 503,1,0,0,0,5716,5732,5,370,0,0,5717,5719,5,113,0,0,5718,5717,1, - 0,0,0,5718,5719,1,0,0,0,5719,5721,1,0,0,0,5720,5722,5,112,0,0,5721, - 5720,1,0,0,0,5721,5722,1,0,0,0,5722,5724,1,0,0,0,5723,5725,3,514, - 257,0,5724,5723,1,0,0,0,5724,5725,1,0,0,0,5725,5727,1,0,0,0,5726, - 5728,3,508,254,0,5727,5726,1,0,0,0,5727,5728,1,0,0,0,5728,5733,1, - 0,0,0,5729,5731,3,524,262,0,5730,5729,1,0,0,0,5730,5731,1,0,0,0, - 5731,5733,1,0,0,0,5732,5718,1,0,0,0,5732,5730,1,0,0,0,5733,5735, - 1,0,0,0,5734,5736,3,518,259,0,5735,5734,1,0,0,0,5735,5736,1,0,0, - 0,5736,505,1,0,0,0,5737,5752,3,508,254,0,5738,5740,3,514,257,0,5739, - 5738,1,0,0,0,5739,5740,1,0,0,0,5740,5753,1,0,0,0,5741,5742,5,2,0, - 0,5742,5747,3,512,256,0,5743,5744,5,6,0,0,5744,5746,3,512,256,0, - 5745,5743,1,0,0,0,5746,5749,1,0,0,0,5747,5745,1,0,0,0,5747,5748, - 1,0,0,0,5748,5750,1,0,0,0,5749,5747,1,0,0,0,5750,5751,5,3,0,0,5751, - 5753,1,0,0,0,5752,5739,1,0,0,0,5752,5741,1,0,0,0,5753,5755,1,0,0, - 0,5754,5756,3,518,259,0,5755,5754,1,0,0,0,5755,5756,1,0,0,0,5756, - 507,1,0,0,0,5757,5758,7,73,0,0,5758,509,1,0,0,0,5759,5762,3,822, - 411,0,5760,5762,3,508,254,0,5761,5759,1,0,0,0,5761,5760,1,0,0,0, - 5762,5765,1,0,0,0,5763,5766,3,54,27,0,5764,5766,3,202,101,0,5765, - 5763,1,0,0,0,5765,5764,1,0,0,0,5765,5766,1,0,0,0,5766,511,1,0,0, - 0,5767,5769,7,74,0,0,5768,5770,7,75,0,0,5769,5768,1,0,0,0,5769,5770, - 1,0,0,0,5770,5777,1,0,0,0,5771,5774,5,548,0,0,5772,5775,3,202,101, - 0,5773,5775,3,808,404,0,5774,5772,1,0,0,0,5774,5773,1,0,0,0,5775, - 5777,1,0,0,0,5776,5767,1,0,0,0,5776,5771,1,0,0,0,5777,513,1,0,0, - 0,5778,5780,5,128,0,0,5779,5781,7,75,0,0,5780,5779,1,0,0,0,5780, - 5781,1,0,0,0,5781,515,1,0,0,0,5782,5784,3,774,387,0,5783,5785,3, - 144,72,0,5784,5783,1,0,0,0,5784,5785,1,0,0,0,5785,517,1,0,0,0,5786, - 5791,3,516,258,0,5787,5788,5,6,0,0,5788,5790,3,516,258,0,5789,5787, - 1,0,0,0,5790,5793,1,0,0,0,5791,5789,1,0,0,0,5791,5792,1,0,0,0,5792, - 519,1,0,0,0,5793,5791,1,0,0,0,5794,5805,5,203,0,0,5795,5806,3,524, - 262,0,5796,5798,5,128,0,0,5797,5796,1,0,0,0,5797,5798,1,0,0,0,5798, - 5806,1,0,0,0,5799,5801,3,508,254,0,5800,5802,3,514,257,0,5801,5800, - 1,0,0,0,5801,5802,1,0,0,0,5802,5804,1,0,0,0,5803,5799,1,0,0,0,5803, - 5804,1,0,0,0,5804,5806,1,0,0,0,5805,5795,1,0,0,0,5805,5797,1,0,0, - 0,5805,5803,1,0,0,0,5806,5807,1,0,0,0,5807,5808,3,522,261,0,5808, - 521,1,0,0,0,5809,5819,3,560,280,0,5810,5819,3,538,269,0,5811,5819, - 3,552,276,0,5812,5819,3,548,274,0,5813,5819,3,558,279,0,5814,5819, - 3,186,93,0,5815,5819,3,192,96,0,5816,5819,3,194,97,0,5817,5819,3, - 532,266,0,5818,5809,1,0,0,0,5818,5810,1,0,0,0,5818,5811,1,0,0,0, - 5818,5812,1,0,0,0,5818,5813,1,0,0,0,5818,5814,1,0,0,0,5818,5815, - 1,0,0,0,5818,5816,1,0,0,0,5818,5817,1,0,0,0,5819,523,1,0,0,0,5820, - 5821,5,2,0,0,5821,5826,3,510,255,0,5822,5823,5,6,0,0,5823,5825,3, - 510,255,0,5824,5822,1,0,0,0,5825,5828,1,0,0,0,5826,5824,1,0,0,0, - 5826,5827,1,0,0,0,5827,5829,1,0,0,0,5828,5826,1,0,0,0,5829,5830, - 5,3,0,0,5830,525,1,0,0,0,5831,5832,5,290,0,0,5832,5834,3,818,409, - 0,5833,5835,3,528,264,0,5834,5833,1,0,0,0,5834,5835,1,0,0,0,5835, - 5836,1,0,0,0,5836,5837,5,36,0,0,5837,5838,3,530,265,0,5838,527,1, - 0,0,0,5839,5840,5,2,0,0,5840,5845,3,652,326,0,5841,5842,5,6,0,0, - 5842,5844,3,652,326,0,5843,5841,1,0,0,0,5844,5847,1,0,0,0,5845,5843, - 1,0,0,0,5845,5846,1,0,0,0,5846,5848,1,0,0,0,5847,5845,1,0,0,0,5848, - 5849,5,3,0,0,5849,529,1,0,0,0,5850,5855,3,560,280,0,5851,5855,3, - 538,269,0,5852,5855,3,552,276,0,5853,5855,3,548,274,0,5854,5850, - 1,0,0,0,5854,5851,1,0,0,0,5854,5852,1,0,0,0,5854,5853,1,0,0,0,5855, - 531,1,0,0,0,5856,5857,5,202,0,0,5857,5859,3,818,409,0,5858,5860, - 3,534,267,0,5859,5858,1,0,0,0,5859,5860,1,0,0,0,5860,5880,1,0,0, - 0,5861,5863,5,46,0,0,5862,5864,3,122,61,0,5863,5862,1,0,0,0,5863, - 5864,1,0,0,0,5864,5865,1,0,0,0,5865,5867,5,92,0,0,5866,5868,3,294, - 147,0,5867,5866,1,0,0,0,5867,5868,1,0,0,0,5868,5869,1,0,0,0,5869, - 5870,3,188,94,0,5870,5871,5,36,0,0,5871,5872,5,202,0,0,5872,5874, - 3,818,409,0,5873,5875,3,534,267,0,5874,5873,1,0,0,0,5874,5875,1, - 0,0,0,5875,5877,1,0,0,0,5876,5878,3,190,95,0,5877,5876,1,0,0,0,5877, - 5878,1,0,0,0,5878,5880,1,0,0,0,5879,5856,1,0,0,0,5879,5861,1,0,0, - 0,5880,533,1,0,0,0,5881,5882,5,2,0,0,5882,5883,3,730,365,0,5883, - 5884,5,3,0,0,5884,535,1,0,0,0,5885,5887,5,177,0,0,5886,5888,5,290, - 0,0,5887,5886,1,0,0,0,5887,5888,1,0,0,0,5888,5891,1,0,0,0,5889,5892, - 3,818,409,0,5890,5892,5,30,0,0,5891,5889,1,0,0,0,5891,5890,1,0,0, - 0,5892,537,1,0,0,0,5893,5895,3,572,286,0,5894,5893,1,0,0,0,5894, - 5895,1,0,0,0,5895,5896,1,0,0,0,5896,5897,5,241,0,0,5897,5898,5,71, - 0,0,5898,5901,3,774,387,0,5899,5900,5,36,0,0,5900,5902,3,818,409, - 0,5901,5899,1,0,0,0,5901,5902,1,0,0,0,5902,5903,1,0,0,0,5903,5925, - 3,540,270,0,5904,5905,5,80,0,0,5905,5913,5,464,0,0,5906,5908,3,360, - 180,0,5907,5909,3,638,319,0,5908,5907,1,0,0,0,5908,5909,1,0,0,0, - 5909,5914,1,0,0,0,5910,5911,5,80,0,0,5911,5912,5,45,0,0,5912,5914, - 3,818,409,0,5913,5906,1,0,0,0,5913,5910,1,0,0,0,5913,5914,1,0,0, - 0,5914,5915,1,0,0,0,5915,5923,5,57,0,0,5916,5917,5,369,0,0,5917, - 5918,5,333,0,0,5918,5920,3,554,277,0,5919,5921,3,638,319,0,5920, - 5919,1,0,0,0,5920,5921,1,0,0,0,5921,5924,1,0,0,0,5922,5924,5,270, - 0,0,5923,5916,1,0,0,0,5923,5922,1,0,0,0,5924,5926,1,0,0,0,5925,5904, - 1,0,0,0,5925,5926,1,0,0,0,5926,5928,1,0,0,0,5927,5929,3,546,273, - 0,5928,5927,1,0,0,0,5928,5929,1,0,0,0,5929,539,1,0,0,0,5930,5931, - 5,2,0,0,5931,5932,3,542,271,0,5932,5933,5,3,0,0,5933,5935,1,0,0, - 0,5934,5930,1,0,0,0,5934,5935,1,0,0,0,5935,5939,1,0,0,0,5936,5937, - 5,463,0,0,5937,5938,7,76,0,0,5938,5940,5,450,0,0,5939,5936,1,0,0, - 0,5939,5940,1,0,0,0,5940,5943,1,0,0,0,5941,5944,3,910,455,0,5942, - 5944,3,560,280,0,5943,5941,1,0,0,0,5943,5942,1,0,0,0,5944,541,1, - 0,0,0,5945,5950,3,544,272,0,5946,5947,5,6,0,0,5947,5949,3,544,272, - 0,5948,5946,1,0,0,0,5949,5952,1,0,0,0,5950,5948,1,0,0,0,5950,5951, - 1,0,0,0,5951,543,1,0,0,0,5952,5950,1,0,0,0,5953,5954,3,800,400,0, - 5954,5955,3,754,377,0,5955,545,1,0,0,0,5956,5957,5,87,0,0,5957,5958, - 3,756,378,0,5958,547,1,0,0,0,5959,5961,3,572,286,0,5960,5959,1,0, - 0,0,5960,5961,1,0,0,0,5961,5962,1,0,0,0,5962,5963,5,182,0,0,5963, - 5964,5,64,0,0,5964,5967,3,630,315,0,5965,5966,5,100,0,0,5966,5968, - 3,612,306,0,5967,5965,1,0,0,0,5967,5968,1,0,0,0,5968,5970,1,0,0, - 0,5969,5971,3,640,320,0,5970,5969,1,0,0,0,5970,5971,1,0,0,0,5971, - 5973,1,0,0,0,5972,5974,3,546,273,0,5973,5972,1,0,0,0,5973,5974,1, - 0,0,0,5974,549,1,0,0,0,5975,5977,5,256,0,0,5976,5978,5,92,0,0,5977, - 5976,1,0,0,0,5977,5978,1,0,0,0,5978,5979,1,0,0,0,5979,5994,3,628, - 314,0,5980,5991,5,68,0,0,5981,5982,7,77,0,0,5982,5992,7,78,0,0,5983, - 5988,5,334,0,0,5984,5985,5,369,0,0,5985,5989,5,201,0,0,5986,5987, - 5,414,0,0,5987,5989,5,201,0,0,5988,5984,1,0,0,0,5988,5986,1,0,0, - 0,5988,5989,1,0,0,0,5989,5992,1,0,0,0,5990,5992,5,201,0,0,5991,5981, - 1,0,0,0,5991,5983,1,0,0,0,5991,5990,1,0,0,0,5992,5993,1,0,0,0,5993, - 5995,5,263,0,0,5994,5980,1,0,0,0,5994,5995,1,0,0,0,5995,5997,1,0, - 0,0,5996,5998,5,272,0,0,5997,5996,1,0,0,0,5997,5998,1,0,0,0,5998, - 551,1,0,0,0,5999,6001,3,572,286,0,6000,5999,1,0,0,0,6000,6001,1, - 0,0,0,6001,6002,1,0,0,0,6002,6003,5,369,0,0,6003,6004,3,630,315, - 0,6004,6005,5,333,0,0,6005,6007,3,554,277,0,6006,6008,3,610,305, - 0,6007,6006,1,0,0,0,6007,6008,1,0,0,0,6008,6010,1,0,0,0,6009,6011, - 3,640,320,0,6010,6009,1,0,0,0,6010,6011,1,0,0,0,6011,6013,1,0,0, - 0,6012,6014,3,546,273,0,6013,6012,1,0,0,0,6013,6014,1,0,0,0,6014, - 553,1,0,0,0,6015,6020,3,556,278,0,6016,6017,5,6,0,0,6017,6019,3, - 556,278,0,6018,6016,1,0,0,0,6019,6022,1,0,0,0,6020,6018,1,0,0,0, - 6020,6021,1,0,0,0,6021,555,1,0,0,0,6022,6020,1,0,0,0,6023,6024,3, - 544,272,0,6024,6025,5,10,0,0,6025,6026,3,674,337,0,6026,6042,1,0, - 0,0,6027,6028,5,2,0,0,6028,6029,3,542,271,0,6029,6030,5,3,0,0,6030, - 6039,5,10,0,0,6031,6033,5,414,0,0,6032,6031,1,0,0,0,6032,6033,1, - 0,0,0,6033,6034,1,0,0,0,6034,6040,3,674,337,0,6035,6036,5,2,0,0, - 6036,6037,3,566,283,0,6037,6038,5,3,0,0,6038,6040,1,0,0,0,6039,6032, - 1,0,0,0,6039,6035,1,0,0,0,6040,6042,1,0,0,0,6041,6023,1,0,0,0,6041, - 6027,1,0,0,0,6042,557,1,0,0,0,6043,6044,5,178,0,0,6044,6053,3,818, - 409,0,6045,6047,5,269,0,0,6046,6045,1,0,0,0,6046,6047,1,0,0,0,6047, - 6048,1,0,0,0,6048,6052,5,324,0,0,6049,6052,5,107,0,0,6050,6052,5, - 240,0,0,6051,6046,1,0,0,0,6051,6049,1,0,0,0,6051,6050,1,0,0,0,6052, - 6055,1,0,0,0,6053,6051,1,0,0,0,6053,6054,1,0,0,0,6054,6056,1,0,0, - 0,6055,6053,1,0,0,0,6056,6059,5,172,0,0,6057,6058,7,26,0,0,6058, - 6060,5,217,0,0,6059,6057,1,0,0,0,6059,6060,1,0,0,0,6060,6061,1,0, - 0,0,6061,6062,5,62,0,0,6062,6063,3,560,280,0,6063,559,1,0,0,0,6064, - 6067,3,564,282,0,6065,6067,3,562,281,0,6066,6064,1,0,0,0,6066,6065, - 1,0,0,0,6067,561,1,0,0,0,6068,6071,5,2,0,0,6069,6072,3,564,282,0, - 6070,6072,3,562,281,0,6071,6069,1,0,0,0,6071,6070,1,0,0,0,6072,6073, - 1,0,0,0,6073,6074,5,3,0,0,6074,563,1,0,0,0,6075,6077,3,572,286,0, - 6076,6075,1,0,0,0,6076,6077,1,0,0,0,6077,6078,1,0,0,0,6078,6080, - 3,566,283,0,6079,6081,3,586,293,0,6080,6079,1,0,0,0,6080,6081,1, - 0,0,0,6081,6090,1,0,0,0,6082,6084,3,606,303,0,6083,6085,3,590,295, - 0,6084,6083,1,0,0,0,6084,6085,1,0,0,0,6085,6091,1,0,0,0,6086,6088, - 3,590,295,0,6087,6089,3,606,303,0,6088,6087,1,0,0,0,6088,6089,1, - 0,0,0,6089,6091,1,0,0,0,6090,6082,1,0,0,0,6090,6086,1,0,0,0,6090, - 6091,1,0,0,0,6091,565,1,0,0,0,6092,6095,3,568,284,0,6093,6095,3, - 562,281,0,6094,6092,1,0,0,0,6094,6093,1,0,0,0,6095,567,1,0,0,0,6096, - 6106,5,88,0,0,6097,6099,5,30,0,0,6098,6097,1,0,0,0,6098,6099,1,0, - 0,0,6099,6101,1,0,0,0,6100,6102,3,580,290,0,6101,6100,1,0,0,0,6101, - 6102,1,0,0,0,6102,6107,1,0,0,0,6103,6105,3,584,292,0,6104,6103,1, - 0,0,0,6104,6105,1,0,0,0,6105,6107,1,0,0,0,6106,6098,1,0,0,0,6106, - 6104,1,0,0,0,6107,6108,1,0,0,0,6108,6119,3,932,466,0,6109,6119,3, - 608,304,0,6110,6111,5,92,0,0,6111,6119,3,624,312,0,6112,6113,3,562, - 281,0,6113,6116,3,570,285,0,6114,6117,3,568,284,0,6115,6117,3,562, - 281,0,6116,6114,1,0,0,0,6116,6115,1,0,0,0,6117,6119,1,0,0,0,6118, - 6096,1,0,0,0,6118,6109,1,0,0,0,6118,6110,1,0,0,0,6118,6112,1,0,0, - 0,6119,6127,1,0,0,0,6120,6123,3,570,285,0,6121,6124,3,568,284,0, - 6122,6124,3,562,281,0,6123,6121,1,0,0,0,6123,6122,1,0,0,0,6124,6126, - 1,0,0,0,6125,6120,1,0,0,0,6126,6129,1,0,0,0,6127,6125,1,0,0,0,6127, - 6128,1,0,0,0,6128,569,1,0,0,0,6129,6127,1,0,0,0,6130,6132,7,79,0, - 0,6131,6133,7,80,0,0,6132,6131,1,0,0,0,6132,6133,1,0,0,0,6133,571, - 1,0,0,0,6134,6136,5,105,0,0,6135,6137,5,303,0,0,6136,6135,1,0,0, - 0,6136,6137,1,0,0,0,6137,6138,1,0,0,0,6138,6143,3,574,287,0,6139, - 6140,5,6,0,0,6140,6142,3,574,287,0,6141,6139,1,0,0,0,6142,6145,1, - 0,0,0,6143,6141,1,0,0,0,6143,6144,1,0,0,0,6144,573,1,0,0,0,6145, - 6143,1,0,0,0,6146,6148,3,818,409,0,6147,6149,3,144,72,0,6148,6147, - 1,0,0,0,6148,6149,1,0,0,0,6149,6150,1,0,0,0,6150,6155,5,36,0,0,6151, - 6153,5,77,0,0,6152,6151,1,0,0,0,6152,6153,1,0,0,0,6153,6154,1,0, - 0,0,6154,6156,5,259,0,0,6155,6152,1,0,0,0,6155,6156,1,0,0,0,6156, - 6157,1,0,0,0,6157,6158,5,2,0,0,6158,6159,3,530,265,0,6159,6161,5, - 3,0,0,6160,6162,3,576,288,0,6161,6160,1,0,0,0,6161,6162,1,0,0,0, - 6162,6164,1,0,0,0,6163,6165,3,578,289,0,6164,6163,1,0,0,0,6164,6165, - 1,0,0,0,6165,575,1,0,0,0,6166,6167,5,325,0,0,6167,6168,7,81,0,0, - 6168,6169,5,207,0,0,6169,6170,5,147,0,0,6170,6171,3,148,74,0,6171, - 6172,5,333,0,0,6172,6173,3,800,400,0,6173,577,1,0,0,0,6174,6175, - 5,173,0,0,6175,6176,3,148,74,0,6176,6177,5,333,0,0,6177,6183,3,800, - 400,0,6178,6179,5,94,0,0,6179,6180,3,818,409,0,6180,6181,5,53,0, - 0,6181,6182,3,818,409,0,6182,6184,1,0,0,0,6183,6178,1,0,0,0,6183, - 6184,1,0,0,0,6184,6185,1,0,0,0,6185,6186,5,100,0,0,6186,6187,3,800, - 400,0,6187,579,1,0,0,0,6188,6194,5,71,0,0,6189,6191,5,346,0,0,6190, - 6189,1,0,0,0,6190,6191,1,0,0,0,6191,6192,1,0,0,0,6192,6195,3,582, - 291,0,6193,6195,3,730,365,0,6194,6190,1,0,0,0,6194,6193,1,0,0,0, - 6195,581,1,0,0,0,6196,6198,7,20,0,0,6197,6196,1,0,0,0,6197,6198, - 1,0,0,0,6198,6199,1,0,0,0,6199,6201,7,21,0,0,6200,6202,5,92,0,0, - 6201,6200,1,0,0,0,6201,6202,1,0,0,0,6202,6203,1,0,0,0,6203,6212, - 3,772,386,0,6204,6206,5,367,0,0,6205,6204,1,0,0,0,6205,6206,1,0, - 0,0,6206,6208,1,0,0,0,6207,6209,5,92,0,0,6208,6207,1,0,0,0,6208, - 6209,1,0,0,0,6209,6210,1,0,0,0,6210,6212,3,772,386,0,6211,6197,1, - 0,0,0,6211,6205,1,0,0,0,6212,583,1,0,0,0,6213,6216,5,56,0,0,6214, - 6215,5,80,0,0,6215,6217,3,534,267,0,6216,6214,1,0,0,0,6216,6217, - 1,0,0,0,6217,585,1,0,0,0,6218,6219,5,83,0,0,6219,6220,5,147,0,0, - 6220,6225,3,588,294,0,6221,6222,5,6,0,0,6222,6224,3,588,294,0,6223, - 6221,1,0,0,0,6224,6227,1,0,0,0,6225,6223,1,0,0,0,6225,6226,1,0,0, - 0,6226,587,1,0,0,0,6227,6225,1,0,0,0,6228,6232,3,734,367,0,6229, - 6230,5,100,0,0,6230,6233,3,726,363,0,6231,6233,7,55,0,0,6232,6229, - 1,0,0,0,6232,6231,1,0,0,0,6232,6233,1,0,0,0,6233,6236,1,0,0,0,6234, - 6235,5,273,0,0,6235,6237,7,56,0,0,6236,6234,1,0,0,0,6236,6237,1, - 0,0,0,6237,589,1,0,0,0,6238,6240,3,596,298,0,6239,6241,3,594,297, - 0,6240,6239,1,0,0,0,6240,6241,1,0,0,0,6241,6250,1,0,0,0,6242,6245, - 3,592,296,0,6243,6245,3,594,297,0,6244,6242,1,0,0,0,6244,6243,1, - 0,0,0,6245,6247,1,0,0,0,6246,6248,3,596,298,0,6247,6246,1,0,0,0, - 6247,6248,1,0,0,0,6248,6250,1,0,0,0,6249,6238,1,0,0,0,6249,6244, - 1,0,0,0,6250,591,1,0,0,0,6251,6254,5,74,0,0,6252,6255,3,674,337, - 0,6253,6255,5,30,0,0,6254,6252,1,0,0,0,6254,6253,1,0,0,0,6255,6258, - 1,0,0,0,6256,6257,5,6,0,0,6257,6259,3,674,337,0,6258,6256,1,0,0, - 0,6258,6259,1,0,0,0,6259,593,1,0,0,0,6260,6261,5,61,0,0,6261,6263, - 7,82,0,0,6262,6264,3,598,299,0,6263,6262,1,0,0,0,6263,6264,1,0,0, - 0,6264,6265,1,0,0,0,6265,6269,7,83,0,0,6266,6270,5,81,0,0,6267,6268, - 5,105,0,0,6268,6270,5,467,0,0,6269,6266,1,0,0,0,6269,6267,1,0,0, - 0,6270,595,1,0,0,0,6271,6276,5,79,0,0,6272,6273,3,598,299,0,6273, - 6274,7,83,0,0,6274,6277,1,0,0,0,6275,6277,3,674,337,0,6276,6272, - 1,0,0,0,6276,6275,1,0,0,0,6277,597,1,0,0,0,6278,6279,7,29,0,0,6279, - 6282,7,84,0,0,6280,6282,3,682,341,0,6281,6278,1,0,0,0,6281,6280, - 1,0,0,0,6282,599,1,0,0,0,6283,6284,5,66,0,0,6284,6286,5,147,0,0, - 6285,6287,7,80,0,0,6286,6285,1,0,0,0,6286,6287,1,0,0,0,6287,6288, - 1,0,0,0,6288,6289,3,602,301,0,6289,601,1,0,0,0,6290,6295,3,604,302, - 0,6291,6292,5,6,0,0,6292,6294,3,604,302,0,6293,6291,1,0,0,0,6294, - 6297,1,0,0,0,6295,6293,1,0,0,0,6295,6296,1,0,0,0,6296,603,1,0,0, - 0,6297,6295,1,0,0,0,6298,6322,3,734,367,0,6299,6300,5,2,0,0,6300, - 6322,5,3,0,0,6301,6303,7,85,0,0,6302,6301,1,0,0,0,6302,6303,1,0, - 0,0,6303,6304,1,0,0,0,6304,6305,5,2,0,0,6305,6310,3,734,367,0,6306, - 6307,5,6,0,0,6307,6309,3,734,367,0,6308,6306,1,0,0,0,6309,6312,1, - 0,0,0,6310,6308,1,0,0,0,6310,6311,1,0,0,0,6311,6313,1,0,0,0,6312, - 6310,1,0,0,0,6313,6314,5,3,0,0,6314,6322,1,0,0,0,6315,6316,5,470, - 0,0,6316,6317,5,471,0,0,6317,6318,5,2,0,0,6318,6319,3,602,301,0, - 6319,6320,5,3,0,0,6320,6322,1,0,0,0,6321,6298,1,0,0,0,6321,6299, - 1,0,0,0,6321,6302,1,0,0,0,6321,6315,1,0,0,0,6322,605,1,0,0,0,6323, - 6333,5,62,0,0,6324,6325,5,269,0,0,6325,6327,5,245,0,0,6326,6324, - 1,0,0,0,6326,6327,1,0,0,0,6327,6328,1,0,0,0,6328,6334,5,369,0,0, - 6329,6331,5,245,0,0,6330,6329,1,0,0,0,6330,6331,1,0,0,0,6331,6332, - 1,0,0,0,6332,6334,5,334,0,0,6333,6326,1,0,0,0,6333,6330,1,0,0,0, - 6334,6337,1,0,0,0,6335,6336,5,275,0,0,6336,6338,3,760,380,0,6337, - 6335,1,0,0,0,6337,6338,1,0,0,0,6338,6342,1,0,0,0,6339,6343,5,272, - 0,0,6340,6341,5,465,0,0,6341,6343,5,466,0,0,6342,6339,1,0,0,0,6342, - 6340,1,0,0,0,6342,6343,1,0,0,0,6343,6345,1,0,0,0,6344,6323,1,0,0, - 0,6345,6346,1,0,0,0,6346,6344,1,0,0,0,6346,6347,1,0,0,0,6347,6352, - 1,0,0,0,6348,6349,5,62,0,0,6349,6350,5,300,0,0,6350,6352,5,81,0, - 0,6351,6344,1,0,0,0,6351,6348,1,0,0,0,6352,607,1,0,0,0,6353,6354, - 5,422,0,0,6354,6359,3,534,267,0,6355,6356,5,6,0,0,6356,6358,3,534, - 267,0,6357,6355,1,0,0,0,6358,6361,1,0,0,0,6359,6357,1,0,0,0,6359, - 6360,1,0,0,0,6360,609,1,0,0,0,6361,6359,1,0,0,0,6362,6363,5,64,0, - 0,6363,6364,3,612,306,0,6364,611,1,0,0,0,6365,6370,3,614,307,0,6366, - 6367,5,6,0,0,6367,6369,3,614,307,0,6368,6366,1,0,0,0,6369,6372,1, - 0,0,0,6370,6368,1,0,0,0,6370,6371,1,0,0,0,6371,613,1,0,0,0,6372, - 6370,1,0,0,0,6373,6388,3,624,312,0,6374,6376,5,81,0,0,6375,6374, - 1,0,0,0,6375,6376,1,0,0,0,6376,6377,1,0,0,0,6377,6379,3,778,389, - 0,6378,6380,5,9,0,0,6379,6378,1,0,0,0,6379,6380,1,0,0,0,6380,6382, - 1,0,0,0,6381,6383,3,148,74,0,6382,6381,1,0,0,0,6382,6383,1,0,0,0, - 6383,6385,1,0,0,0,6384,6386,3,638,319,0,6385,6384,1,0,0,0,6385,6386, - 1,0,0,0,6386,6388,1,0,0,0,6387,6373,1,0,0,0,6387,6375,1,0,0,0,6388, - 6390,1,0,0,0,6389,6391,3,616,308,0,6390,6389,1,0,0,0,6390,6391,1, - 0,0,0,6391,6393,1,0,0,0,6392,6394,3,632,316,0,6393,6392,1,0,0,0, - 6393,6394,1,0,0,0,6394,6437,1,0,0,0,6395,6397,5,72,0,0,6396,6395, - 1,0,0,0,6396,6397,1,0,0,0,6397,6410,1,0,0,0,6398,6400,3,646,323, - 0,6399,6401,3,616,308,0,6400,6399,1,0,0,0,6400,6401,1,0,0,0,6401, - 6411,1,0,0,0,6402,6404,3,634,317,0,6403,6405,3,618,309,0,6404,6403, - 1,0,0,0,6404,6405,1,0,0,0,6405,6411,1,0,0,0,6406,6408,3,562,281, - 0,6407,6409,3,616,308,0,6408,6407,1,0,0,0,6408,6409,1,0,0,0,6409, - 6411,1,0,0,0,6410,6398,1,0,0,0,6410,6402,1,0,0,0,6410,6406,1,0,0, - 0,6411,6437,1,0,0,0,6412,6413,5,2,0,0,6413,6430,3,614,307,0,6414, - 6415,5,110,0,0,6415,6416,5,118,0,0,6416,6431,3,614,307,0,6417,6419, - 5,121,0,0,6418,6420,3,620,310,0,6419,6418,1,0,0,0,6419,6420,1,0, - 0,0,6420,6421,1,0,0,0,6421,6422,5,118,0,0,6422,6431,3,614,307,0, - 6423,6425,3,620,310,0,6424,6423,1,0,0,0,6424,6425,1,0,0,0,6425,6426, - 1,0,0,0,6426,6427,5,118,0,0,6427,6428,3,614,307,0,6428,6429,3,622, - 311,0,6429,6431,1,0,0,0,6430,6414,1,0,0,0,6430,6417,1,0,0,0,6430, - 6424,1,0,0,0,6430,6431,1,0,0,0,6431,6432,1,0,0,0,6432,6434,5,3,0, - 0,6433,6435,3,616,308,0,6434,6433,1,0,0,0,6434,6435,1,0,0,0,6435, - 6437,1,0,0,0,6436,6387,1,0,0,0,6436,6396,1,0,0,0,6436,6412,1,0,0, - 0,6437,6456,1,0,0,0,6438,6439,5,110,0,0,6439,6440,5,118,0,0,6440, - 6455,3,614,307,0,6441,6443,5,121,0,0,6442,6444,3,620,310,0,6443, - 6442,1,0,0,0,6443,6444,1,0,0,0,6444,6445,1,0,0,0,6445,6446,5,118, - 0,0,6446,6455,3,614,307,0,6447,6449,3,620,310,0,6448,6447,1,0,0, - 0,6448,6449,1,0,0,0,6449,6450,1,0,0,0,6450,6451,5,118,0,0,6451,6452, - 3,614,307,0,6452,6453,3,622,311,0,6453,6455,1,0,0,0,6454,6438,1, - 0,0,0,6454,6441,1,0,0,0,6454,6448,1,0,0,0,6455,6458,1,0,0,0,6456, - 6454,1,0,0,0,6456,6457,1,0,0,0,6457,615,1,0,0,0,6458,6456,1,0,0, - 0,6459,6461,5,36,0,0,6460,6459,1,0,0,0,6460,6461,1,0,0,0,6461,6462, - 1,0,0,0,6462,6467,3,818,409,0,6463,6464,5,2,0,0,6464,6465,3,784, - 392,0,6465,6466,5,3,0,0,6466,6468,1,0,0,0,6467,6463,1,0,0,0,6467, - 6468,1,0,0,0,6468,617,1,0,0,0,6469,6482,3,616,308,0,6470,6472,5, - 36,0,0,6471,6473,3,818,409,0,6472,6471,1,0,0,0,6472,6473,1,0,0,0, - 6473,6476,1,0,0,0,6474,6476,3,818,409,0,6475,6470,1,0,0,0,6475,6474, - 1,0,0,0,6476,6477,1,0,0,0,6477,6478,5,2,0,0,6478,6479,3,642,321, - 0,6479,6480,5,3,0,0,6480,6482,1,0,0,0,6481,6469,1,0,0,0,6481,6475, - 1,0,0,0,6482,619,1,0,0,0,6483,6485,7,86,0,0,6484,6486,5,123,0,0, - 6485,6484,1,0,0,0,6485,6486,1,0,0,0,6486,621,1,0,0,0,6487,6488,5, - 100,0,0,6488,6492,3,144,72,0,6489,6490,5,80,0,0,6490,6492,3,674, - 337,0,6491,6487,1,0,0,0,6491,6489,1,0,0,0,6492,623,1,0,0,0,6493, - 6509,3,322,161,0,6494,6500,5,81,0,0,6495,6501,3,774,387,0,6496,6497, - 5,2,0,0,6497,6498,3,774,387,0,6498,6499,5,3,0,0,6499,6501,1,0,0, - 0,6500,6495,1,0,0,0,6500,6496,1,0,0,0,6501,6509,1,0,0,0,6502,6503, - 5,68,0,0,6503,6506,5,323,0,0,6504,6507,3,790,395,0,6505,6507,5,111, - 0,0,6506,6504,1,0,0,0,6506,6505,1,0,0,0,6507,6509,1,0,0,0,6508,6493, - 1,0,0,0,6508,6494,1,0,0,0,6508,6502,1,0,0,0,6509,625,1,0,0,0,6510, - 6511,5,92,0,0,6511,6513,3,322,161,0,6512,6514,3,144,72,0,6513,6512, - 1,0,0,0,6513,6514,1,0,0,0,6514,6516,1,0,0,0,6515,6517,3,638,319, - 0,6516,6515,1,0,0,0,6516,6517,1,0,0,0,6517,6535,1,0,0,0,6518,6519, - 5,92,0,0,6519,6525,5,81,0,0,6520,6526,3,774,387,0,6521,6522,5,2, - 0,0,6522,6523,3,774,387,0,6523,6524,5,3,0,0,6524,6526,1,0,0,0,6525, - 6520,1,0,0,0,6525,6521,1,0,0,0,6526,6535,1,0,0,0,6527,6528,5,350, - 0,0,6528,6529,5,68,0,0,6529,6532,5,323,0,0,6530,6533,3,790,395,0, - 6531,6533,5,111,0,0,6532,6530,1,0,0,0,6532,6531,1,0,0,0,6533,6535, - 1,0,0,0,6534,6510,1,0,0,0,6534,6518,1,0,0,0,6534,6527,1,0,0,0,6535, - 627,1,0,0,0,6536,6541,3,624,312,0,6537,6538,5,6,0,0,6538,6540,3, - 624,312,0,6539,6537,1,0,0,0,6540,6543,1,0,0,0,6541,6539,1,0,0,0, - 6541,6542,1,0,0,0,6542,629,1,0,0,0,6543,6541,1,0,0,0,6544,6549,3, - 624,312,0,6545,6547,5,36,0,0,6546,6545,1,0,0,0,6546,6547,1,0,0,0, - 6547,6548,1,0,0,0,6548,6550,3,818,409,0,6549,6546,1,0,0,0,6549,6550, - 1,0,0,0,6550,631,1,0,0,0,6551,6552,5,472,0,0,6552,6553,3,806,403, - 0,6553,6559,3,534,267,0,6554,6555,5,310,0,0,6555,6556,5,2,0,0,6556, - 6557,3,674,337,0,6557,6558,5,3,0,0,6558,6560,1,0,0,0,6559,6554,1, - 0,0,0,6559,6560,1,0,0,0,6560,633,1,0,0,0,6561,6576,3,688,344,0,6562, - 6563,5,320,0,0,6563,6564,5,64,0,0,6564,6565,5,2,0,0,6565,6570,3, - 636,318,0,6566,6567,5,6,0,0,6567,6569,3,636,318,0,6568,6566,1,0, - 0,0,6569,6572,1,0,0,0,6570,6568,1,0,0,0,6570,6571,1,0,0,0,6571,6573, - 1,0,0,0,6572,6570,1,0,0,0,6573,6574,5,3,0,0,6574,6576,1,0,0,0,6575, - 6561,1,0,0,0,6575,6562,1,0,0,0,6576,6579,1,0,0,0,6577,6578,5,105, - 0,0,6578,6580,5,473,0,0,6579,6577,1,0,0,0,6579,6580,1,0,0,0,6580, - 635,1,0,0,0,6581,6587,3,688,344,0,6582,6583,5,36,0,0,6583,6584,5, - 2,0,0,6584,6585,3,642,321,0,6585,6586,5,3,0,0,6586,6588,1,0,0,0, - 6587,6582,1,0,0,0,6587,6588,1,0,0,0,6588,637,1,0,0,0,6589,6590,5, - 103,0,0,6590,6591,3,734,367,0,6591,639,1,0,0,0,6592,6597,5,103,0, - 0,6593,6594,5,434,0,0,6594,6595,5,275,0,0,6595,6598,3,818,409,0, - 6596,6598,3,674,337,0,6597,6593,1,0,0,0,6597,6596,1,0,0,0,6598,641, - 1,0,0,0,6599,6604,3,644,322,0,6600,6601,5,6,0,0,6601,6603,3,644, - 322,0,6602,6600,1,0,0,0,6603,6606,1,0,0,0,6604,6602,1,0,0,0,6604, - 6605,1,0,0,0,6605,643,1,0,0,0,6606,6604,1,0,0,0,6607,6608,3,818, - 409,0,6608,6610,3,652,326,0,6609,6611,3,98,49,0,6610,6609,1,0,0, - 0,6610,6611,1,0,0,0,6611,645,1,0,0,0,6612,6613,5,474,0,0,6613,6627, - 5,2,0,0,6614,6615,5,476,0,0,6615,6616,5,2,0,0,6616,6621,3,650,325, - 0,6617,6618,5,6,0,0,6618,6620,3,650,325,0,6619,6617,1,0,0,0,6620, - 6623,1,0,0,0,6621,6619,1,0,0,0,6621,6622,1,0,0,0,6622,6624,1,0,0, - 0,6623,6621,1,0,0,0,6624,6625,5,3,0,0,6625,6626,5,6,0,0,6626,6628, - 1,0,0,0,6627,6614,1,0,0,0,6627,6628,1,0,0,0,6628,6629,1,0,0,0,6629, - 6630,3,682,341,0,6630,6631,3,698,349,0,6631,6632,5,475,0,0,6632, - 6637,3,648,324,0,6633,6634,5,6,0,0,6634,6636,3,648,324,0,6635,6633, - 1,0,0,0,6636,6639,1,0,0,0,6637,6635,1,0,0,0,6637,6638,1,0,0,0,6638, - 6640,1,0,0,0,6639,6637,1,0,0,0,6640,6641,5,3,0,0,6641,647,1,0,0, - 0,6642,6661,3,818,409,0,6643,6657,3,652,326,0,6644,6647,5,53,0,0, - 6645,6647,3,826,413,0,6646,6644,1,0,0,0,6646,6645,1,0,0,0,6647,6648, - 1,0,0,0,6648,6654,3,674,337,0,6649,6651,5,77,0,0,6650,6649,1,0,0, - 0,6650,6651,1,0,0,0,6651,6652,1,0,0,0,6652,6654,5,78,0,0,6653,6646, - 1,0,0,0,6653,6650,1,0,0,0,6654,6655,1,0,0,0,6655,6653,1,0,0,0,6655, - 6656,1,0,0,0,6656,6658,1,0,0,0,6657,6653,1,0,0,0,6657,6658,1,0,0, - 0,6658,6662,1,0,0,0,6659,6660,5,62,0,0,6660,6662,5,473,0,0,6661, - 6643,1,0,0,0,6661,6659,1,0,0,0,6662,649,1,0,0,0,6663,6664,3,682, - 341,0,6664,6665,5,36,0,0,6665,6666,3,824,412,0,6666,6670,1,0,0,0, - 6667,6668,5,53,0,0,6668,6670,3,682,341,0,6669,6663,1,0,0,0,6669, - 6667,1,0,0,0,6670,651,1,0,0,0,6671,6673,5,415,0,0,6672,6671,1,0, - 0,0,6672,6673,1,0,0,0,6673,6674,1,0,0,0,6674,6691,3,654,327,0,6675, - 6677,5,4,0,0,6676,6678,5,571,0,0,6677,6676,1,0,0,0,6677,6678,1,0, - 0,0,6678,6679,1,0,0,0,6679,6681,5,5,0,0,6680,6675,1,0,0,0,6681,6684, - 1,0,0,0,6682,6680,1,0,0,0,6682,6683,1,0,0,0,6683,6692,1,0,0,0,6684, - 6682,1,0,0,0,6685,6689,5,35,0,0,6686,6687,5,4,0,0,6687,6688,5,571, - 0,0,6688,6690,5,5,0,0,6689,6686,1,0,0,0,6689,6690,1,0,0,0,6690,6692, - 1,0,0,0,6691,6682,1,0,0,0,6691,6685,1,0,0,0,6692,6698,1,0,0,0,6693, - 6694,3,780,390,0,6694,6695,5,27,0,0,6695,6696,7,87,0,0,6696,6698, - 1,0,0,0,6697,6672,1,0,0,0,6697,6693,1,0,0,0,6698,653,1,0,0,0,6699, - 6701,3,820,410,0,6700,6702,3,318,159,0,6701,6700,1,0,0,0,6701,6702, - 1,0,0,0,6702,6704,1,0,0,0,6703,6705,3,534,267,0,6704,6703,1,0,0, - 0,6704,6705,1,0,0,0,6705,6715,1,0,0,0,6706,6715,3,656,328,0,6707, - 6712,5,403,0,0,6708,6710,3,668,334,0,6709,6708,1,0,0,0,6709,6710, - 1,0,0,0,6710,6713,1,0,0,0,6711,6713,3,660,330,0,6712,6709,1,0,0, - 0,6712,6711,1,0,0,0,6713,6715,1,0,0,0,6714,6699,1,0,0,0,6714,6706, - 1,0,0,0,6714,6707,1,0,0,0,6715,655,1,0,0,0,6716,6721,3,658,329,0, - 6717,6721,3,662,331,0,6718,6721,3,664,332,0,6719,6721,3,666,333, - 0,6720,6716,1,0,0,0,6720,6717,1,0,0,0,6720,6718,1,0,0,0,6720,6719, - 1,0,0,0,6721,657,1,0,0,0,6722,6739,5,401,0,0,6723,6739,5,402,0,0, - 6724,6739,5,416,0,0,6725,6739,5,388,0,0,6726,6739,5,413,0,0,6727, - 6729,5,398,0,0,6728,6730,3,660,330,0,6729,6728,1,0,0,0,6729,6730, - 1,0,0,0,6730,6739,1,0,0,0,6731,6732,5,190,0,0,6732,6739,5,412,0, - 0,6733,6735,7,88,0,0,6734,6736,3,534,267,0,6735,6734,1,0,0,0,6735, - 6736,1,0,0,0,6736,6739,1,0,0,0,6737,6739,5,390,0,0,6738,6722,1,0, - 0,0,6738,6723,1,0,0,0,6738,6724,1,0,0,0,6738,6725,1,0,0,0,6738,6726, - 1,0,0,0,6738,6727,1,0,0,0,6738,6731,1,0,0,0,6738,6733,1,0,0,0,6738, - 6737,1,0,0,0,6739,659,1,0,0,0,6740,6741,5,2,0,0,6741,6742,5,571, - 0,0,6742,6743,5,3,0,0,6743,661,1,0,0,0,6744,6746,5,389,0,0,6745, - 6747,5,374,0,0,6746,6745,1,0,0,0,6746,6747,1,0,0,0,6747,6749,1,0, - 0,0,6748,6750,3,534,267,0,6749,6748,1,0,0,0,6749,6750,1,0,0,0,6750, - 663,1,0,0,0,6751,6753,7,89,0,0,6752,6754,5,374,0,0,6753,6752,1,0, - 0,0,6753,6754,1,0,0,0,6754,6762,1,0,0,0,6755,6762,5,423,0,0,6756, - 6757,5,405,0,0,6757,6759,7,90,0,0,6758,6760,5,374,0,0,6759,6758, - 1,0,0,0,6759,6760,1,0,0,0,6760,6762,1,0,0,0,6761,6751,1,0,0,0,6761, - 6755,1,0,0,0,6761,6756,1,0,0,0,6762,6764,1,0,0,0,6763,6765,3,660, - 330,0,6764,6763,1,0,0,0,6764,6765,1,0,0,0,6765,665,1,0,0,0,6766, - 6768,7,91,0,0,6767,6769,3,660,330,0,6768,6767,1,0,0,0,6768,6769, - 1,0,0,0,6769,6773,1,0,0,0,6770,6771,7,26,0,0,6771,6772,5,418,0,0, - 6772,6774,5,386,0,0,6773,6770,1,0,0,0,6773,6774,1,0,0,0,6774,667, - 1,0,0,0,6775,6805,5,264,0,0,6776,6805,3,670,335,0,6777,6780,5,384, - 0,0,6778,6779,5,94,0,0,6779,6781,5,264,0,0,6780,6778,1,0,0,0,6780, - 6781,1,0,0,0,6781,6805,1,0,0,0,6782,6789,5,176,0,0,6783,6787,5,94, - 0,0,6784,6788,5,218,0,0,6785,6788,5,261,0,0,6786,6788,3,670,335, - 0,6787,6784,1,0,0,0,6787,6785,1,0,0,0,6787,6786,1,0,0,0,6788,6790, - 1,0,0,0,6789,6783,1,0,0,0,6789,6790,1,0,0,0,6790,6805,1,0,0,0,6791, - 6797,5,218,0,0,6792,6795,5,94,0,0,6793,6796,5,261,0,0,6794,6796, - 3,670,335,0,6795,6793,1,0,0,0,6795,6794,1,0,0,0,6796,6798,1,0,0, - 0,6797,6792,1,0,0,0,6797,6798,1,0,0,0,6798,6805,1,0,0,0,6799,6802, - 5,261,0,0,6800,6801,5,94,0,0,6801,6803,3,670,335,0,6802,6800,1,0, - 0,0,6802,6803,1,0,0,0,6803,6805,1,0,0,0,6804,6775,1,0,0,0,6804,6776, - 1,0,0,0,6804,6777,1,0,0,0,6804,6782,1,0,0,0,6804,6791,1,0,0,0,6804, - 6799,1,0,0,0,6805,669,1,0,0,0,6806,6808,5,326,0,0,6807,6809,3,660, - 330,0,6808,6807,1,0,0,0,6808,6809,1,0,0,0,6809,671,1,0,0,0,6810, - 6811,7,92,0,0,6811,673,1,0,0,0,6812,6813,3,676,338,0,6813,675,1, - 0,0,0,6814,6815,6,338,-1,0,6815,6817,3,680,340,0,6816,6818,3,678, - 339,0,6817,6816,1,0,0,0,6817,6818,1,0,0,0,6818,6822,1,0,0,0,6819, - 6820,5,77,0,0,6820,6822,3,676,338,3,6821,6814,1,0,0,0,6821,6819, - 1,0,0,0,6822,6831,1,0,0,0,6823,6824,10,2,0,0,6824,6825,5,33,0,0, - 6825,6830,3,676,338,3,6826,6827,10,1,0,0,6827,6828,5,82,0,0,6828, - 6830,3,676,338,2,6829,6823,1,0,0,0,6829,6826,1,0,0,0,6830,6833,1, - 0,0,0,6831,6829,1,0,0,0,6831,6832,1,0,0,0,6832,677,1,0,0,0,6833, - 6831,1,0,0,0,6834,6835,3,672,336,0,6835,6836,3,680,340,0,6836,6906, - 1,0,0,0,6837,6838,3,672,336,0,6838,6839,3,728,364,0,6839,6845,3, - 718,359,0,6840,6846,3,562,281,0,6841,6842,5,2,0,0,6842,6843,3,674, - 337,0,6843,6844,5,3,0,0,6844,6846,1,0,0,0,6845,6840,1,0,0,0,6845, - 6841,1,0,0,0,6846,6906,1,0,0,0,6847,6849,5,77,0,0,6848,6847,1,0, - 0,0,6848,6849,1,0,0,0,6849,6850,1,0,0,0,6850,6851,5,387,0,0,6851, - 6852,3,680,340,0,6852,6853,5,33,0,0,6853,6854,3,680,340,0,6854,6906, - 1,0,0,0,6855,6857,5,77,0,0,6856,6855,1,0,0,0,6856,6857,1,0,0,0,6857, - 6858,1,0,0,0,6858,6859,5,68,0,0,6859,6860,5,2,0,0,6860,6865,3,674, - 337,0,6861,6862,5,6,0,0,6862,6864,3,674,337,0,6863,6861,1,0,0,0, - 6864,6867,1,0,0,0,6865,6863,1,0,0,0,6865,6866,1,0,0,0,6866,6868, - 1,0,0,0,6867,6865,1,0,0,0,6868,6869,5,3,0,0,6869,6906,1,0,0,0,6870, - 6872,5,77,0,0,6871,6870,1,0,0,0,6871,6872,1,0,0,0,6872,6873,1,0, - 0,0,6873,6874,5,68,0,0,6874,6906,3,562,281,0,6875,6877,5,77,0,0, - 6876,6875,1,0,0,0,6876,6877,1,0,0,0,6877,6886,1,0,0,0,6878,6887, - 5,120,0,0,6879,6887,5,114,0,0,6880,6881,5,127,0,0,6881,6887,5,94, - 0,0,6882,6884,5,387,0,0,6883,6885,5,91,0,0,6884,6883,1,0,0,0,6884, - 6885,1,0,0,0,6885,6887,1,0,0,0,6886,6878,1,0,0,0,6886,6879,1,0,0, - 0,6886,6880,1,0,0,0,6886,6882,1,0,0,0,6887,6888,1,0,0,0,6888,6891, - 3,680,340,0,6889,6890,5,197,0,0,6890,6892,3,680,340,0,6891,6889, - 1,0,0,0,6891,6892,1,0,0,0,6892,6906,1,0,0,0,6893,6895,5,116,0,0, - 6894,6896,5,77,0,0,6895,6894,1,0,0,0,6895,6896,1,0,0,0,6896,6897, - 1,0,0,0,6897,6906,5,78,0,0,6898,6900,5,116,0,0,6899,6901,5,77,0, - 0,6900,6899,1,0,0,0,6900,6901,1,0,0,0,6901,6902,1,0,0,0,6902,6903, - 5,56,0,0,6903,6904,5,64,0,0,6904,6906,3,680,340,0,6905,6834,1,0, - 0,0,6905,6837,1,0,0,0,6905,6848,1,0,0,0,6905,6856,1,0,0,0,6905,6871, - 1,0,0,0,6905,6876,1,0,0,0,6905,6893,1,0,0,0,6905,6898,1,0,0,0,6906, - 679,1,0,0,0,6907,6908,6,340,-1,0,6908,6912,3,682,341,0,6909,6910, - 7,29,0,0,6910,6912,3,680,340,4,6911,6907,1,0,0,0,6911,6909,1,0,0, - 0,6912,6929,1,0,0,0,6913,6914,10,3,0,0,6914,6915,7,93,0,0,6915,6928, - 3,680,340,4,6916,6917,10,2,0,0,6917,6918,7,29,0,0,6918,6928,3,680, - 340,3,6919,6920,10,1,0,0,6920,6921,5,15,0,0,6921,6928,3,680,340, - 2,6922,6923,10,5,0,0,6923,6924,5,142,0,0,6924,6925,5,418,0,0,6925, - 6926,5,386,0,0,6926,6928,3,674,337,0,6927,6913,1,0,0,0,6927,6916, - 1,0,0,0,6927,6919,1,0,0,0,6927,6922,1,0,0,0,6928,6931,1,0,0,0,6929, - 6927,1,0,0,0,6929,6930,1,0,0,0,6930,681,1,0,0,0,6931,6929,1,0,0, - 0,6932,6933,6,341,-1,0,6933,6934,7,94,0,0,6934,7021,3,562,281,0, - 6935,6938,5,35,0,0,6936,6939,3,562,281,0,6937,6939,3,740,370,0,6938, - 6936,1,0,0,0,6938,6937,1,0,0,0,6939,7021,1,0,0,0,6940,6941,5,28, - 0,0,6941,7021,3,754,377,0,6942,6943,5,470,0,0,6943,7021,3,534,267, - 0,6944,7021,5,571,0,0,6945,7021,5,573,0,0,6946,7021,5,563,0,0,6947, - 7021,5,567,0,0,6948,6958,3,806,403,0,6949,6959,3,808,404,0,6950, - 6951,5,2,0,0,6951,6953,3,736,368,0,6952,6954,3,586,293,0,6953,6952, - 1,0,0,0,6953,6954,1,0,0,0,6954,6955,1,0,0,0,6955,6956,5,3,0,0,6956, - 6957,3,808,404,0,6957,6959,1,0,0,0,6958,6949,1,0,0,0,6958,6950,1, - 0,0,0,6959,7021,1,0,0,0,6960,6962,3,656,328,0,6961,6960,1,0,0,0, - 6961,6962,1,0,0,0,6962,6963,1,0,0,0,6963,7021,3,808,404,0,6964,6972, - 5,403,0,0,6965,6967,3,808,404,0,6966,6968,3,668,334,0,6967,6966, - 1,0,0,0,6967,6968,1,0,0,0,6968,6973,1,0,0,0,6969,6970,3,660,330, - 0,6970,6971,3,808,404,0,6971,6973,1,0,0,0,6972,6965,1,0,0,0,6972, - 6969,1,0,0,0,6973,7021,1,0,0,0,6974,7021,5,96,0,0,6975,7021,5,60, - 0,0,6976,7021,5,78,0,0,6977,7021,5,574,0,0,6978,6979,5,2,0,0,6979, - 6980,3,674,337,0,6980,6981,5,3,0,0,6981,6982,3,754,377,0,6982,7021, - 1,0,0,0,6983,6985,5,40,0,0,6984,6986,3,674,337,0,6985,6984,1,0,0, - 0,6985,6986,1,0,0,0,6986,6988,1,0,0,0,6987,6989,3,748,374,0,6988, - 6987,1,0,0,0,6989,6990,1,0,0,0,6990,6988,1,0,0,0,6990,6991,1,0,0, - 0,6991,6994,1,0,0,0,6992,6993,5,58,0,0,6993,6995,3,674,337,0,6994, - 6992,1,0,0,0,6994,6995,1,0,0,0,6995,6996,1,0,0,0,6996,6997,5,454, - 0,0,6997,7021,1,0,0,0,6998,7021,3,686,343,0,6999,7001,3,562,281, - 0,7000,7002,3,752,376,0,7001,7000,1,0,0,0,7001,7002,1,0,0,0,7002, - 7021,1,0,0,0,7003,7021,3,716,358,0,7004,7005,5,2,0,0,7005,7006,3, - 674,337,0,7006,7007,5,6,0,0,7007,7008,3,730,365,0,7008,7009,5,3, - 0,0,7009,7021,1,0,0,0,7010,7011,3,714,357,0,7011,7012,5,125,0,0, - 7012,7013,3,714,357,0,7013,7021,1,0,0,0,7014,7021,3,780,390,0,7015, - 7016,7,29,0,0,7016,7021,3,682,341,5,7017,7018,3,724,362,0,7018,7019, - 3,682,341,2,7019,7021,1,0,0,0,7020,6932,1,0,0,0,7020,6935,1,0,0, - 0,7020,6940,1,0,0,0,7020,6942,1,0,0,0,7020,6944,1,0,0,0,7020,6945, - 1,0,0,0,7020,6946,1,0,0,0,7020,6947,1,0,0,0,7020,6948,1,0,0,0,7020, - 6961,1,0,0,0,7020,6964,1,0,0,0,7020,6974,1,0,0,0,7020,6975,1,0,0, - 0,7020,6976,1,0,0,0,7020,6977,1,0,0,0,7020,6978,1,0,0,0,7020,6983, - 1,0,0,0,7020,6998,1,0,0,0,7020,6999,1,0,0,0,7020,7003,1,0,0,0,7020, - 7004,1,0,0,0,7020,7010,1,0,0,0,7020,7014,1,0,0,0,7020,7015,1,0,0, - 0,7020,7017,1,0,0,0,7021,7049,1,0,0,0,7022,7023,10,3,0,0,7023,7024, - 3,722,361,0,7024,7025,3,682,341,4,7025,7048,1,0,0,0,7026,7027,10, - 6,0,0,7027,7028,5,26,0,0,7028,7048,3,652,326,0,7029,7030,10,4,0, - 0,7030,7032,3,724,362,0,7031,7033,3,682,341,0,7032,7031,1,0,0,0, - 7032,7033,1,0,0,0,7033,7048,1,0,0,0,7034,7035,10,1,0,0,7035,7037, - 5,116,0,0,7036,7038,5,77,0,0,7037,7036,1,0,0,0,7037,7038,1,0,0,0, - 7038,7045,1,0,0,0,7039,7040,5,56,0,0,7040,7041,5,64,0,0,7041,7046, - 3,682,341,0,7042,7043,5,275,0,0,7043,7046,3,528,264,0,7044,7046, - 5,188,0,0,7045,7039,1,0,0,0,7045,7042,1,0,0,0,7045,7044,1,0,0,0, - 7046,7048,1,0,0,0,7047,7022,1,0,0,0,7047,7026,1,0,0,0,7047,7029, - 1,0,0,0,7047,7034,1,0,0,0,7048,7051,1,0,0,0,7049,7047,1,0,0,0,7049, - 7050,1,0,0,0,7050,683,1,0,0,0,7051,7049,1,0,0,0,7052,7078,3,806, - 403,0,7053,7075,5,2,0,0,7054,7058,3,736,368,0,7055,7056,5,6,0,0, - 7056,7057,5,101,0,0,7057,7059,3,738,369,0,7058,7055,1,0,0,0,7058, - 7059,1,0,0,0,7059,7061,1,0,0,0,7060,7062,3,586,293,0,7061,7060,1, - 0,0,0,7061,7062,1,0,0,0,7062,7076,1,0,0,0,7063,7064,5,101,0,0,7064, - 7066,3,738,369,0,7065,7067,3,586,293,0,7066,7065,1,0,0,0,7066,7067, - 1,0,0,0,7067,7076,1,0,0,0,7068,7069,7,80,0,0,7069,7071,3,736,368, - 0,7070,7072,3,586,293,0,7071,7070,1,0,0,0,7071,7072,1,0,0,0,7072, - 7076,1,0,0,0,7073,7076,5,9,0,0,7074,7076,1,0,0,0,7075,7054,1,0,0, - 0,7075,7063,1,0,0,0,7075,7068,1,0,0,0,7075,7073,1,0,0,0,7075,7074, - 1,0,0,0,7076,7077,1,0,0,0,7077,7079,5,3,0,0,7078,7053,1,0,0,0,7078, - 7079,1,0,0,0,7079,685,1,0,0,0,7080,7087,3,684,342,0,7081,7082,5, - 479,0,0,7082,7083,5,66,0,0,7083,7084,5,2,0,0,7084,7085,3,586,293, - 0,7085,7086,5,3,0,0,7086,7088,1,0,0,0,7087,7081,1,0,0,0,7087,7088, - 1,0,0,0,7088,7095,1,0,0,0,7089,7090,5,480,0,0,7090,7091,5,2,0,0, - 7091,7092,5,103,0,0,7092,7093,3,674,337,0,7093,7094,5,3,0,0,7094, - 7096,1,0,0,0,7095,7089,1,0,0,0,7095,7096,1,0,0,0,7096,7102,1,0,0, - 0,7097,7100,5,124,0,0,7098,7101,3,708,354,0,7099,7101,3,818,409, - 0,7100,7098,1,0,0,0,7100,7099,1,0,0,0,7101,7103,1,0,0,0,7102,7097, - 1,0,0,0,7102,7103,1,0,0,0,7103,7106,1,0,0,0,7104,7106,3,690,345, - 0,7105,7080,1,0,0,0,7105,7104,1,0,0,0,7106,687,1,0,0,0,7107,7110, - 3,684,342,0,7108,7110,3,690,345,0,7109,7107,1,0,0,0,7109,7108,1, - 0,0,0,7110,689,1,0,0,0,7111,7112,5,108,0,0,7112,7113,5,62,0,0,7113, - 7114,5,2,0,0,7114,7115,3,674,337,0,7115,7116,5,3,0,0,7116,7286,1, - 0,0,0,7117,7286,5,48,0,0,7118,7120,7,95,0,0,7119,7121,3,660,330, - 0,7120,7119,1,0,0,0,7120,7121,1,0,0,0,7121,7286,1,0,0,0,7122,7286, - 5,49,0,0,7123,7286,5,52,0,0,7124,7286,5,89,0,0,7125,7286,5,99,0, - 0,7126,7286,5,47,0,0,7127,7286,5,111,0,0,7128,7129,7,96,0,0,7129, - 7130,5,2,0,0,7130,7131,3,674,337,0,7131,7132,5,36,0,0,7132,7133, - 3,652,326,0,7133,7134,5,3,0,0,7134,7286,1,0,0,0,7135,7136,5,397, - 0,0,7136,7141,5,2,0,0,7137,7138,3,742,371,0,7138,7139,5,64,0,0,7139, - 7140,3,674,337,0,7140,7142,1,0,0,0,7141,7137,1,0,0,0,7141,7142,1, - 0,0,0,7142,7143,1,0,0,0,7143,7286,5,3,0,0,7144,7145,5,489,0,0,7145, - 7146,5,2,0,0,7146,7149,3,674,337,0,7147,7148,5,6,0,0,7148,7150,3, - 744,372,0,7149,7147,1,0,0,0,7149,7150,1,0,0,0,7150,7151,1,0,0,0, - 7151,7152,5,3,0,0,7152,7286,1,0,0,0,7153,7154,5,410,0,0,7154,7155, - 5,2,0,0,7155,7156,3,674,337,0,7156,7157,5,84,0,0,7157,7158,3,674, - 337,0,7158,7159,5,64,0,0,7159,7162,3,674,337,0,7160,7161,5,62,0, - 0,7161,7163,3,674,337,0,7162,7160,1,0,0,0,7162,7163,1,0,0,0,7163, - 7164,1,0,0,0,7164,7165,5,3,0,0,7165,7286,1,0,0,0,7166,7167,5,411, - 0,0,7167,7172,5,2,0,0,7168,7169,3,682,341,0,7169,7170,5,68,0,0,7170, - 7171,3,682,341,0,7171,7173,1,0,0,0,7172,7168,1,0,0,0,7172,7173,1, - 0,0,0,7173,7174,1,0,0,0,7174,7286,5,3,0,0,7175,7176,5,417,0,0,7176, - 7178,5,2,0,0,7177,7179,3,746,373,0,7178,7177,1,0,0,0,7178,7179,1, - 0,0,0,7179,7180,1,0,0,0,7180,7286,5,3,0,0,7181,7182,5,421,0,0,7182, - 7184,5,2,0,0,7183,7185,7,97,0,0,7184,7183,1,0,0,0,7184,7185,1,0, - 0,0,7185,7190,1,0,0,0,7186,7188,3,674,337,0,7187,7186,1,0,0,0,7187, - 7188,1,0,0,0,7188,7189,1,0,0,0,7189,7191,5,64,0,0,7190,7187,1,0, - 0,0,7190,7191,1,0,0,0,7191,7192,1,0,0,0,7192,7193,3,730,365,0,7193, - 7194,1,0,0,0,7194,7195,5,3,0,0,7195,7286,1,0,0,0,7196,7197,5,408, - 0,0,7197,7198,5,2,0,0,7198,7199,3,674,337,0,7199,7200,5,6,0,0,7200, - 7201,3,674,337,0,7201,7202,5,3,0,0,7202,7286,1,0,0,0,7203,7204,7, - 98,0,0,7204,7286,3,534,267,0,7205,7206,5,426,0,0,7206,7207,5,2,0, - 0,7207,7208,5,266,0,0,7208,7218,3,824,412,0,7209,7216,5,6,0,0,7210, - 7211,5,424,0,0,7211,7212,5,2,0,0,7212,7213,3,692,346,0,7213,7214, - 5,3,0,0,7214,7217,1,0,0,0,7215,7217,3,730,365,0,7216,7210,1,0,0, - 0,7216,7215,1,0,0,0,7217,7219,1,0,0,0,7218,7209,1,0,0,0,7218,7219, - 1,0,0,0,7219,7220,1,0,0,0,7220,7221,5,3,0,0,7221,7286,1,0,0,0,7222, - 7223,5,427,0,0,7223,7224,5,2,0,0,7224,7225,3,682,341,0,7225,7226, - 3,698,349,0,7226,7227,5,3,0,0,7227,7286,1,0,0,0,7228,7229,5,428, - 0,0,7229,7230,5,2,0,0,7230,7231,3,692,346,0,7231,7232,5,3,0,0,7232, - 7286,1,0,0,0,7233,7234,5,429,0,0,7234,7235,5,2,0,0,7235,7236,3,696, - 348,0,7236,7239,3,674,337,0,7237,7238,7,99,0,0,7238,7240,5,378,0, - 0,7239,7237,1,0,0,0,7239,7240,1,0,0,0,7240,7241,1,0,0,0,7241,7242, - 5,3,0,0,7242,7286,1,0,0,0,7243,7244,5,430,0,0,7244,7245,5,2,0,0, - 7245,7246,5,266,0,0,7246,7249,3,824,412,0,7247,7248,5,6,0,0,7248, - 7250,3,674,337,0,7249,7247,1,0,0,0,7249,7250,1,0,0,0,7250,7251,1, - 0,0,0,7251,7252,5,3,0,0,7252,7286,1,0,0,0,7253,7254,5,431,0,0,7254, - 7255,5,2,0,0,7255,7256,5,383,0,0,7256,7257,3,674,337,0,7257,7258, - 5,6,0,0,7258,7262,5,375,0,0,7259,7260,5,269,0,0,7260,7263,5,450, - 0,0,7261,7263,3,674,337,0,7262,7259,1,0,0,0,7262,7261,1,0,0,0,7263, - 7273,1,0,0,0,7264,7265,5,6,0,0,7265,7271,5,339,0,0,7266,7268,5,269, - 0,0,7267,7266,1,0,0,0,7267,7268,1,0,0,0,7268,7269,1,0,0,0,7269,7272, - 5,450,0,0,7270,7272,5,385,0,0,7271,7267,1,0,0,0,7271,7270,1,0,0, - 0,7272,7274,1,0,0,0,7273,7264,1,0,0,0,7273,7274,1,0,0,0,7274,7275, - 1,0,0,0,7275,7276,5,3,0,0,7276,7286,1,0,0,0,7277,7278,5,432,0,0, - 7278,7279,5,2,0,0,7279,7280,3,696,348,0,7280,7281,3,674,337,0,7281, - 7282,5,36,0,0,7282,7283,3,654,327,0,7283,7284,5,3,0,0,7284,7286, - 1,0,0,0,7285,7111,1,0,0,0,7285,7117,1,0,0,0,7285,7118,1,0,0,0,7285, - 7122,1,0,0,0,7285,7123,1,0,0,0,7285,7124,1,0,0,0,7285,7125,1,0,0, - 0,7285,7126,1,0,0,0,7285,7127,1,0,0,0,7285,7128,1,0,0,0,7285,7135, - 1,0,0,0,7285,7144,1,0,0,0,7285,7153,1,0,0,0,7285,7166,1,0,0,0,7285, - 7175,1,0,0,0,7285,7181,1,0,0,0,7285,7196,1,0,0,0,7285,7203,1,0,0, - 0,7285,7205,1,0,0,0,7285,7222,1,0,0,0,7285,7228,1,0,0,0,7285,7233, - 1,0,0,0,7285,7243,1,0,0,0,7285,7253,1,0,0,0,7285,7277,1,0,0,0,7286, - 691,1,0,0,0,7287,7292,3,694,347,0,7288,7289,5,6,0,0,7289,7291,3, - 694,347,0,7290,7288,1,0,0,0,7291,7294,1,0,0,0,7292,7290,1,0,0,0, - 7292,7293,1,0,0,0,7293,693,1,0,0,0,7294,7292,1,0,0,0,7295,7298,3, - 674,337,0,7296,7297,5,36,0,0,7297,7299,3,824,412,0,7298,7296,1,0, - 0,0,7298,7299,1,0,0,0,7299,695,1,0,0,0,7300,7301,7,100,0,0,7301, - 697,1,0,0,0,7302,7304,5,286,0,0,7303,7305,3,700,350,0,7304,7303, - 1,0,0,0,7304,7305,1,0,0,0,7305,7306,1,0,0,0,7306,7308,3,682,341, - 0,7307,7309,3,700,350,0,7308,7307,1,0,0,0,7308,7309,1,0,0,0,7309, - 699,1,0,0,0,7310,7311,5,147,0,0,7311,7312,7,101,0,0,7312,701,1,0, - 0,0,7313,7314,5,104,0,0,7314,7319,3,704,352,0,7315,7316,5,6,0,0, - 7316,7318,3,704,352,0,7317,7315,1,0,0,0,7318,7321,1,0,0,0,7319,7317, - 1,0,0,0,7319,7320,1,0,0,0,7320,703,1,0,0,0,7321,7319,1,0,0,0,7322, - 7323,3,818,409,0,7323,7324,5,36,0,0,7324,7325,3,708,354,0,7325,705, - 1,0,0,0,7326,7329,5,124,0,0,7327,7330,3,708,354,0,7328,7330,3,818, - 409,0,7329,7327,1,0,0,0,7329,7328,1,0,0,0,7330,707,1,0,0,0,7331, - 7333,5,2,0,0,7332,7334,3,818,409,0,7333,7332,1,0,0,0,7333,7334,1, - 0,0,0,7334,7338,1,0,0,0,7335,7336,5,285,0,0,7336,7337,5,147,0,0, - 7337,7339,3,730,365,0,7338,7335,1,0,0,0,7338,7339,1,0,0,0,7339,7341, - 1,0,0,0,7340,7342,3,586,293,0,7341,7340,1,0,0,0,7341,7342,1,0,0, - 0,7342,7344,1,0,0,0,7343,7345,3,710,355,0,7344,7343,1,0,0,0,7344, - 7345,1,0,0,0,7345,7346,1,0,0,0,7346,7347,5,3,0,0,7347,709,1,0,0, - 0,7348,7353,7,102,0,0,7349,7350,5,387,0,0,7350,7351,3,712,356,0, - 7351,7352,5,33,0,0,7352,7354,1,0,0,0,7353,7349,1,0,0,0,7353,7354, - 1,0,0,0,7354,7355,1,0,0,0,7355,7356,3,712,356,0,7356,7366,1,0,0, - 0,7357,7364,5,199,0,0,7358,7359,5,434,0,0,7359,7365,5,414,0,0,7360, - 7365,5,66,0,0,7361,7365,5,467,0,0,7362,7363,5,269,0,0,7363,7365, - 5,482,0,0,7364,7358,1,0,0,0,7364,7360,1,0,0,0,7364,7361,1,0,0,0, - 7364,7362,1,0,0,0,7365,7367,1,0,0,0,7366,7357,1,0,0,0,7366,7367, - 1,0,0,0,7367,711,1,0,0,0,7368,7371,5,362,0,0,7369,7371,3,674,337, - 0,7370,7368,1,0,0,0,7370,7369,1,0,0,0,7371,7372,1,0,0,0,7372,7376, - 7,103,0,0,7373,7374,5,434,0,0,7374,7376,5,414,0,0,7375,7370,1,0, - 0,0,7375,7373,1,0,0,0,7376,713,1,0,0,0,7377,7385,3,716,358,0,7378, - 7379,5,2,0,0,7379,7380,3,730,365,0,7380,7381,5,6,0,0,7381,7382,3, - 674,337,0,7382,7383,5,3,0,0,7383,7385,1,0,0,0,7384,7377,1,0,0,0, - 7384,7378,1,0,0,0,7385,715,1,0,0,0,7386,7387,5,414,0,0,7387,7389, - 5,2,0,0,7388,7390,3,730,365,0,7389,7388,1,0,0,0,7389,7390,1,0,0, - 0,7390,7391,1,0,0,0,7391,7392,5,3,0,0,7392,717,1,0,0,0,7393,7394, - 7,104,0,0,7394,719,1,0,0,0,7395,7398,5,29,0,0,7396,7398,3,722,361, - 0,7397,7395,1,0,0,0,7397,7396,1,0,0,0,7398,721,1,0,0,0,7399,7400, - 7,105,0,0,7400,723,1,0,0,0,7401,7408,5,29,0,0,7402,7403,5,278,0, - 0,7403,7404,5,2,0,0,7404,7405,3,414,207,0,7405,7406,5,3,0,0,7406, - 7408,1,0,0,0,7407,7401,1,0,0,0,7407,7402,1,0,0,0,7408,725,1,0,0, - 0,7409,7416,3,720,360,0,7410,7411,5,278,0,0,7411,7412,5,2,0,0,7412, - 7413,3,414,207,0,7413,7414,5,3,0,0,7414,7416,1,0,0,0,7415,7409,1, - 0,0,0,7415,7410,1,0,0,0,7416,727,1,0,0,0,7417,7423,3,726,363,0,7418, - 7420,5,77,0,0,7419,7418,1,0,0,0,7419,7420,1,0,0,0,7420,7421,1,0, - 0,0,7421,7423,7,106,0,0,7422,7417,1,0,0,0,7422,7419,1,0,0,0,7423, - 729,1,0,0,0,7424,7429,3,674,337,0,7425,7426,5,6,0,0,7426,7428,3, - 674,337,0,7427,7425,1,0,0,0,7428,7431,1,0,0,0,7429,7427,1,0,0,0, - 7429,7430,1,0,0,0,7430,731,1,0,0,0,7431,7429,1,0,0,0,7432,7433,5, - 2,0,0,7433,7434,3,674,337,0,7434,7435,5,3,0,0,7435,7438,1,0,0,0, - 7436,7438,3,800,400,0,7437,7432,1,0,0,0,7437,7436,1,0,0,0,7438,733, - 1,0,0,0,7439,7442,3,674,337,0,7440,7442,3,800,400,0,7441,7439,1, - 0,0,0,7441,7440,1,0,0,0,7442,735,1,0,0,0,7443,7448,3,738,369,0,7444, - 7445,5,6,0,0,7445,7447,3,738,369,0,7446,7444,1,0,0,0,7447,7450,1, - 0,0,0,7448,7446,1,0,0,0,7448,7449,1,0,0,0,7449,737,1,0,0,0,7450, - 7448,1,0,0,0,7451,7457,3,674,337,0,7452,7453,3,820,410,0,7453,7454, - 7,107,0,0,7454,7455,3,674,337,0,7455,7457,1,0,0,0,7456,7451,1,0, - 0,0,7456,7452,1,0,0,0,7457,739,1,0,0,0,7458,7468,5,4,0,0,7459,7469, - 3,730,365,0,7460,7465,3,740,370,0,7461,7462,5,6,0,0,7462,7464,3, - 740,370,0,7463,7461,1,0,0,0,7464,7467,1,0,0,0,7465,7463,1,0,0,0, - 7465,7466,1,0,0,0,7466,7469,1,0,0,0,7467,7465,1,0,0,0,7468,7459, - 1,0,0,0,7468,7460,1,0,0,0,7468,7469,1,0,0,0,7469,7470,1,0,0,0,7470, - 7471,5,5,0,0,7471,741,1,0,0,0,7472,7481,3,826,413,0,7473,7481,5, - 384,0,0,7474,7481,5,264,0,0,7475,7481,5,176,0,0,7476,7481,5,218, - 0,0,7477,7481,5,261,0,0,7478,7481,5,326,0,0,7479,7481,3,808,404, - 0,7480,7472,1,0,0,0,7480,7473,1,0,0,0,7480,7474,1,0,0,0,7480,7475, - 1,0,0,0,7480,7476,1,0,0,0,7480,7477,1,0,0,0,7480,7478,1,0,0,0,7480, - 7479,1,0,0,0,7481,743,1,0,0,0,7482,7483,7,108,0,0,7483,745,1,0,0, - 0,7484,7485,3,674,337,0,7485,7486,5,64,0,0,7486,7489,3,674,337,0, - 7487,7488,5,62,0,0,7488,7490,3,674,337,0,7489,7487,1,0,0,0,7489, - 7490,1,0,0,0,7490,7506,1,0,0,0,7491,7492,3,674,337,0,7492,7493,5, - 62,0,0,7493,7496,3,674,337,0,7494,7495,5,64,0,0,7495,7497,3,674, - 337,0,7496,7494,1,0,0,0,7496,7497,1,0,0,0,7497,7506,1,0,0,0,7498, - 7499,3,674,337,0,7499,7500,5,127,0,0,7500,7501,3,674,337,0,7501, - 7502,5,197,0,0,7502,7503,3,674,337,0,7503,7506,1,0,0,0,7504,7506, - 3,730,365,0,7505,7484,1,0,0,0,7505,7491,1,0,0,0,7505,7498,1,0,0, - 0,7505,7504,1,0,0,0,7506,747,1,0,0,0,7507,7508,5,102,0,0,7508,7509, - 3,674,337,0,7509,7510,5,93,0,0,7510,7511,3,674,337,0,7511,749,1, - 0,0,0,7512,7515,5,11,0,0,7513,7516,3,824,412,0,7514,7516,5,9,0,0, - 7515,7513,1,0,0,0,7515,7514,1,0,0,0,7516,7530,1,0,0,0,7517,7526, - 5,4,0,0,7518,7527,3,674,337,0,7519,7521,3,674,337,0,7520,7519,1, - 0,0,0,7520,7521,1,0,0,0,7521,7522,1,0,0,0,7522,7524,5,8,0,0,7523, - 7525,3,674,337,0,7524,7523,1,0,0,0,7524,7525,1,0,0,0,7525,7527,1, - 0,0,0,7526,7518,1,0,0,0,7526,7520,1,0,0,0,7527,7528,1,0,0,0,7528, - 7530,5,5,0,0,7529,7512,1,0,0,0,7529,7517,1,0,0,0,7530,751,1,0,0, - 0,7531,7533,3,750,375,0,7532,7531,1,0,0,0,7533,7534,1,0,0,0,7534, - 7532,1,0,0,0,7534,7535,1,0,0,0,7535,753,1,0,0,0,7536,7538,3,750, - 375,0,7537,7536,1,0,0,0,7538,7541,1,0,0,0,7539,7537,1,0,0,0,7539, - 7540,1,0,0,0,7540,755,1,0,0,0,7541,7539,1,0,0,0,7542,7547,3,758, - 379,0,7543,7544,5,6,0,0,7544,7546,3,758,379,0,7545,7543,1,0,0,0, - 7546,7549,1,0,0,0,7547,7545,1,0,0,0,7547,7548,1,0,0,0,7548,757,1, - 0,0,0,7549,7547,1,0,0,0,7550,7555,3,734,367,0,7551,7552,5,36,0,0, - 7552,7556,3,824,412,0,7553,7556,3,826,413,0,7554,7556,1,0,0,0,7555, - 7551,1,0,0,0,7555,7553,1,0,0,0,7555,7554,1,0,0,0,7556,7559,1,0,0, - 0,7557,7559,5,9,0,0,7558,7550,1,0,0,0,7558,7557,1,0,0,0,7559,759, - 1,0,0,0,7560,7565,3,780,390,0,7561,7562,5,6,0,0,7562,7564,3,780, - 390,0,7563,7561,1,0,0,0,7564,7567,1,0,0,0,7565,7563,1,0,0,0,7565, - 7566,1,0,0,0,7566,761,1,0,0,0,7567,7565,1,0,0,0,7568,7573,3,774, - 387,0,7569,7570,5,6,0,0,7570,7572,3,774,387,0,7571,7569,1,0,0,0, - 7572,7575,1,0,0,0,7573,7571,1,0,0,0,7573,7574,1,0,0,0,7574,763,1, - 0,0,0,7575,7573,1,0,0,0,7576,7581,3,790,395,0,7577,7578,5,6,0,0, - 7578,7580,3,790,395,0,7579,7577,1,0,0,0,7580,7583,1,0,0,0,7581,7579, - 1,0,0,0,7581,7582,1,0,0,0,7582,765,1,0,0,0,7583,7581,1,0,0,0,7584, - 7589,3,788,394,0,7585,7586,5,6,0,0,7586,7588,3,788,394,0,7587,7585, - 1,0,0,0,7588,7591,1,0,0,0,7589,7587,1,0,0,0,7589,7590,1,0,0,0,7590, - 767,1,0,0,0,7591,7589,1,0,0,0,7592,7593,3,780,390,0,7593,769,1,0, - 0,0,7594,7595,3,780,390,0,7595,771,1,0,0,0,7596,7597,3,780,390,0, - 7597,773,1,0,0,0,7598,7599,3,780,390,0,7599,775,1,0,0,0,7600,7601, - 3,780,390,0,7601,777,1,0,0,0,7602,7603,3,316,158,0,7603,779,1,0, - 0,0,7604,7606,3,818,409,0,7605,7607,3,752,376,0,7606,7605,1,0,0, - 0,7606,7607,1,0,0,0,7607,781,1,0,0,0,7608,7613,3,770,385,0,7609, - 7610,5,6,0,0,7610,7612,3,770,385,0,7611,7609,1,0,0,0,7612,7615,1, - 0,0,0,7613,7611,1,0,0,0,7613,7614,1,0,0,0,7614,783,1,0,0,0,7615, - 7613,1,0,0,0,7616,7621,3,818,409,0,7617,7618,5,6,0,0,7618,7620,3, - 818,409,0,7619,7617,1,0,0,0,7620,7623,1,0,0,0,7621,7619,1,0,0,0, - 7621,7622,1,0,0,0,7622,785,1,0,0,0,7623,7621,1,0,0,0,7624,7625,3, - 316,158,0,7625,787,1,0,0,0,7626,7627,3,316,158,0,7627,789,1,0,0, - 0,7628,7629,3,316,158,0,7629,791,1,0,0,0,7630,7631,3,818,409,0,7631, - 793,1,0,0,0,7632,7633,3,818,409,0,7633,795,1,0,0,0,7634,7639,3,820, - 410,0,7635,7636,3,818,409,0,7636,7637,3,752,376,0,7637,7639,1,0, - 0,0,7638,7634,1,0,0,0,7638,7635,1,0,0,0,7639,797,1,0,0,0,7640,7645, - 3,820,410,0,7641,7642,3,818,409,0,7642,7643,3,752,376,0,7643,7645, - 1,0,0,0,7644,7640,1,0,0,0,7644,7641,1,0,0,0,7645,799,1,0,0,0,7646, - 7647,3,818,409,0,7647,7648,3,754,377,0,7648,7651,1,0,0,0,7649,7651, - 4,400,10,0,7650,7646,1,0,0,0,7650,7649,1,0,0,0,7651,801,1,0,0,0, - 7652,7653,3,818,409,0,7653,803,1,0,0,0,7654,7659,3,820,410,0,7655, - 7656,3,818,409,0,7656,7657,3,752,376,0,7657,7659,1,0,0,0,7658,7654, - 1,0,0,0,7658,7655,1,0,0,0,7659,805,1,0,0,0,7660,7665,3,820,410,0, - 7661,7662,3,818,409,0,7662,7663,3,752,376,0,7663,7665,1,0,0,0,7664, - 7660,1,0,0,0,7664,7661,1,0,0,0,7665,807,1,0,0,0,7666,7669,3,810, - 405,0,7667,7668,5,487,0,0,7668,7670,3,810,405,0,7669,7667,1,0,0, - 0,7669,7670,1,0,0,0,7670,809,1,0,0,0,7671,7683,5,558,0,0,7672,7683, - 5,560,0,0,7673,7677,5,562,0,0,7674,7676,5,588,0,0,7675,7674,1,0, - 0,0,7676,7679,1,0,0,0,7677,7675,1,0,0,0,7677,7678,1,0,0,0,7678,7680, - 1,0,0,0,7679,7677,1,0,0,0,7680,7683,5,589,0,0,7681,7683,5,584,0, - 0,7682,7671,1,0,0,0,7682,7672,1,0,0,0,7682,7673,1,0,0,0,7682,7681, - 1,0,0,0,7683,811,1,0,0,0,7684,7686,7,29,0,0,7685,7684,1,0,0,0,7685, - 7686,1,0,0,0,7686,7687,1,0,0,0,7687,7688,5,571,0,0,7688,813,1,0, - 0,0,7689,7695,3,822,411,0,7690,7695,5,52,0,0,7691,7695,5,49,0,0, - 7692,7695,5,89,0,0,7693,7695,5,524,0,0,7694,7689,1,0,0,0,7694,7690, - 1,0,0,0,7694,7691,1,0,0,0,7694,7692,1,0,0,0,7694,7693,1,0,0,0,7695, - 815,1,0,0,0,7696,7701,3,814,407,0,7697,7698,5,6,0,0,7698,7700,3, - 814,407,0,7699,7697,1,0,0,0,7700,7703,1,0,0,0,7701,7699,1,0,0,0, - 7701,7702,1,0,0,0,7702,817,1,0,0,0,7703,7701,1,0,0,0,7704,7709,3, - 826,413,0,7705,7709,3,828,414,0,7706,7709,3,830,415,0,7707,7709, - 3,930,465,0,7708,7704,1,0,0,0,7708,7705,1,0,0,0,7708,7706,1,0,0, - 0,7708,7707,1,0,0,0,7709,819,1,0,0,0,7710,7715,3,826,413,0,7711, - 7715,3,828,414,0,7712,7715,3,930,465,0,7713,7715,3,832,416,0,7714, - 7710,1,0,0,0,7714,7711,1,0,0,0,7714,7712,1,0,0,0,7714,7713,1,0,0, - 0,7715,821,1,0,0,0,7716,7721,3,826,413,0,7717,7721,3,828,414,0,7718, - 7721,3,830,415,0,7719,7721,3,832,416,0,7720,7716,1,0,0,0,7720,7717, - 1,0,0,0,7720,7718,1,0,0,0,7720,7719,1,0,0,0,7721,823,1,0,0,0,7722, - 7726,3,822,411,0,7723,7726,3,930,465,0,7724,7726,3,834,417,0,7725, - 7722,1,0,0,0,7725,7723,1,0,0,0,7725,7724,1,0,0,0,7726,825,1,0,0, - 0,7727,7730,5,549,0,0,7728,7729,5,487,0,0,7729,7731,3,810,405,0, - 7730,7728,1,0,0,0,7730,7731,1,0,0,0,7731,7739,1,0,0,0,7732,7739, - 3,808,404,0,7733,7739,5,550,0,0,7734,7739,5,554,0,0,7735,7739,5, - 574,0,0,7736,7739,5,575,0,0,7737,7739,3,930,465,0,7738,7727,1,0, - 0,0,7738,7732,1,0,0,0,7738,7733,1,0,0,0,7738,7734,1,0,0,0,7738,7735, - 1,0,0,0,7738,7736,1,0,0,0,7738,7737,1,0,0,0,7739,827,1,0,0,0,7740, - 7741,7,109,0,0,7741,829,1,0,0,0,7742,7794,5,387,0,0,7743,7794,5, - 388,0,0,7744,7794,3,662,331,0,7745,7794,5,390,0,0,7746,7794,5,391, - 0,0,7747,7794,3,664,332,0,7748,7794,5,393,0,0,7749,7794,5,394,0, - 0,7750,7794,5,395,0,0,7751,7794,5,396,0,0,7752,7794,5,397,0,0,7753, - 7794,5,398,0,0,7754,7794,5,399,0,0,7755,7794,5,470,0,0,7756,7794, - 5,400,0,0,7757,7794,5,401,0,0,7758,7794,5,402,0,0,7759,7794,5,403, - 0,0,7760,7794,5,404,0,0,7761,7794,5,405,0,0,7762,7794,5,406,0,0, - 7763,7794,5,407,0,0,7764,7794,5,489,0,0,7765,7794,5,408,0,0,7766, - 7794,3,658,329,0,7767,7794,5,453,0,0,7768,7794,5,410,0,0,7769,7794, - 5,411,0,0,7770,7794,5,412,0,0,7771,7794,5,413,0,0,7772,7794,5,414, - 0,0,7773,7794,5,415,0,0,7774,7794,5,416,0,0,7775,7794,5,417,0,0, - 7776,7794,5,418,0,0,7777,7794,5,419,0,0,7778,7794,5,420,0,0,7779, - 7794,5,421,0,0,7780,7794,5,422,0,0,7781,7794,5,423,0,0,7782,7794, - 5,424,0,0,7783,7794,5,425,0,0,7784,7794,5,426,0,0,7785,7794,5,427, - 0,0,7786,7794,5,428,0,0,7787,7794,5,476,0,0,7788,7794,5,429,0,0, - 7789,7794,5,430,0,0,7790,7794,5,431,0,0,7791,7794,5,432,0,0,7792, - 7794,5,474,0,0,7793,7742,1,0,0,0,7793,7743,1,0,0,0,7793,7744,1,0, - 0,0,7793,7745,1,0,0,0,7793,7746,1,0,0,0,7793,7747,1,0,0,0,7793,7748, - 1,0,0,0,7793,7749,1,0,0,0,7793,7750,1,0,0,0,7793,7751,1,0,0,0,7793, - 7752,1,0,0,0,7793,7753,1,0,0,0,7793,7754,1,0,0,0,7793,7755,1,0,0, - 0,7793,7756,1,0,0,0,7793,7757,1,0,0,0,7793,7758,1,0,0,0,7793,7759, - 1,0,0,0,7793,7760,1,0,0,0,7793,7761,1,0,0,0,7793,7762,1,0,0,0,7793, - 7763,1,0,0,0,7793,7764,1,0,0,0,7793,7765,1,0,0,0,7793,7766,1,0,0, - 0,7793,7767,1,0,0,0,7793,7768,1,0,0,0,7793,7769,1,0,0,0,7793,7770, - 1,0,0,0,7793,7771,1,0,0,0,7793,7772,1,0,0,0,7793,7773,1,0,0,0,7793, - 7774,1,0,0,0,7793,7775,1,0,0,0,7793,7776,1,0,0,0,7793,7777,1,0,0, - 0,7793,7778,1,0,0,0,7793,7779,1,0,0,0,7793,7780,1,0,0,0,7793,7781, - 1,0,0,0,7793,7782,1,0,0,0,7793,7783,1,0,0,0,7793,7784,1,0,0,0,7793, - 7785,1,0,0,0,7793,7786,1,0,0,0,7793,7787,1,0,0,0,7793,7788,1,0,0, - 0,7793,7789,1,0,0,0,7793,7790,1,0,0,0,7793,7791,1,0,0,0,7793,7792, - 1,0,0,0,7794,831,1,0,0,0,7795,7796,7,110,0,0,7796,833,1,0,0,0,7797, - 7798,7,111,0,0,7798,835,1,0,0,0,7799,7801,3,838,419,0,7800,7799, - 1,0,0,0,7800,7801,1,0,0,0,7801,7812,1,0,0,0,7802,7810,5,178,0,0, - 7803,7807,3,840,420,0,7804,7807,5,178,0,0,7805,7807,3,838,419,0, - 7806,7803,1,0,0,0,7806,7804,1,0,0,0,7806,7805,1,0,0,0,7807,7808, - 1,0,0,0,7808,7806,1,0,0,0,7808,7809,1,0,0,0,7809,7811,1,0,0,0,7810, - 7806,1,0,0,0,7810,7811,1,0,0,0,7811,7813,1,0,0,0,7812,7802,1,0,0, - 0,7812,7813,1,0,0,0,7813,7814,1,0,0,0,7814,7818,5,146,0,0,7815,7817, - 3,846,423,0,7816,7815,1,0,0,0,7817,7820,1,0,0,0,7818,7816,1,0,0, - 0,7818,7819,1,0,0,0,7819,7822,1,0,0,0,7820,7818,1,0,0,0,7821,7823, - 3,924,462,0,7822,7821,1,0,0,0,7822,7823,1,0,0,0,7823,7824,1,0,0, - 0,7824,7826,5,454,0,0,7825,7827,3,928,464,0,7826,7825,1,0,0,0,7826, - 7827,1,0,0,0,7827,837,1,0,0,0,7828,7829,5,18,0,0,7829,7830,3,928, - 464,0,7830,7831,5,19,0,0,7831,839,1,0,0,0,7832,7879,3,928,464,0, - 7833,7834,5,496,0,0,7834,7837,5,62,0,0,7835,7838,5,28,0,0,7836,7838, - 3,818,409,0,7837,7835,1,0,0,0,7837,7836,1,0,0,0,7838,7880,1,0,0, - 0,7839,7841,5,497,0,0,7840,7839,1,0,0,0,7840,7841,1,0,0,0,7841,7842, - 1,0,0,0,7842,7844,3,652,326,0,7843,7845,3,98,49,0,7844,7843,1,0, - 0,0,7844,7845,1,0,0,0,7845,7848,1,0,0,0,7846,7847,5,77,0,0,7847, - 7849,5,78,0,0,7848,7846,1,0,0,0,7848,7849,1,0,0,0,7849,7855,1,0, - 0,0,7850,7853,3,844,422,0,7851,7853,5,53,0,0,7852,7850,1,0,0,0,7852, - 7851,1,0,0,0,7853,7854,1,0,0,0,7854,7856,3,932,466,0,7855,7852,1, - 0,0,0,7855,7856,1,0,0,0,7856,7880,1,0,0,0,7857,7859,5,269,0,0,7858, - 7857,1,0,0,0,7858,7859,1,0,0,0,7859,7860,1,0,0,0,7860,7862,5,324, - 0,0,7861,7858,1,0,0,0,7861,7862,1,0,0,0,7862,7863,1,0,0,0,7863,7875, - 5,172,0,0,7864,7865,5,2,0,0,7865,7870,3,842,421,0,7866,7867,5,6, - 0,0,7867,7869,3,842,421,0,7868,7866,1,0,0,0,7869,7872,1,0,0,0,7870, - 7868,1,0,0,0,7870,7871,1,0,0,0,7871,7873,1,0,0,0,7872,7870,1,0,0, - 0,7873,7874,5,3,0,0,7874,7876,1,0,0,0,7875,7864,1,0,0,0,7875,7876, - 1,0,0,0,7876,7877,1,0,0,0,7877,7878,7,112,0,0,7878,7880,3,560,280, - 0,7879,7833,1,0,0,0,7879,7840,1,0,0,0,7879,7861,1,0,0,0,7880,7881, - 1,0,0,0,7881,7882,5,7,0,0,7882,841,1,0,0,0,7883,7884,3,928,464,0, - 7884,7885,3,652,326,0,7885,843,1,0,0,0,7886,7887,7,113,0,0,7887, - 845,1,0,0,0,7888,7889,3,836,418,0,7889,7890,5,7,0,0,7890,7913,1, - 0,0,0,7891,7913,3,874,437,0,7892,7913,3,876,438,0,7893,7913,3,852, - 426,0,7894,7913,3,860,430,0,7895,7913,3,864,432,0,7896,7913,3,866, - 433,0,7897,7913,3,870,435,0,7898,7913,3,872,436,0,7899,7913,3,880, - 440,0,7900,7913,3,884,442,0,7901,7913,3,886,443,0,7902,7913,3,848, - 424,0,7903,7913,3,850,425,0,7904,7913,3,854,427,0,7905,7913,3,890, - 445,0,7906,7913,3,894,447,0,7907,7913,3,898,449,0,7908,7913,3,914, - 457,0,7909,7913,3,916,458,0,7910,7913,3,918,459,0,7911,7913,3,920, - 460,0,7912,7888,1,0,0,0,7912,7891,1,0,0,0,7912,7892,1,0,0,0,7912, - 7893,1,0,0,0,7912,7894,1,0,0,0,7912,7895,1,0,0,0,7912,7896,1,0,0, - 0,7912,7897,1,0,0,0,7912,7898,1,0,0,0,7912,7899,1,0,0,0,7912,7900, - 1,0,0,0,7912,7901,1,0,0,0,7912,7902,1,0,0,0,7912,7903,1,0,0,0,7912, - 7904,1,0,0,0,7912,7905,1,0,0,0,7912,7906,1,0,0,0,7912,7907,1,0,0, - 0,7912,7908,1,0,0,0,7912,7909,1,0,0,0,7912,7910,1,0,0,0,7912,7911, - 1,0,0,0,7913,847,1,0,0,0,7914,7915,5,498,0,0,7915,7916,3,932,466, - 0,7916,7917,5,7,0,0,7917,849,1,0,0,0,7918,7919,5,433,0,0,7919,7926, - 3,928,464,0,7920,7922,5,2,0,0,7921,7923,3,730,365,0,7922,7921,1, - 0,0,0,7922,7923,1,0,0,0,7923,7924,1,0,0,0,7924,7925,5,3,0,0,7925, - 7927,5,7,0,0,7926,7920,1,0,0,0,7926,7927,1,0,0,0,7927,7938,1,0,0, - 0,7928,7929,5,57,0,0,7929,7930,3,928,464,0,7930,7932,5,2,0,0,7931, - 7933,3,730,365,0,7932,7931,1,0,0,0,7932,7933,1,0,0,0,7933,7934,1, - 0,0,0,7934,7935,5,3,0,0,7935,7936,5,7,0,0,7936,7938,1,0,0,0,7937, - 7918,1,0,0,0,7937,7928,1,0,0,0,7938,851,1,0,0,0,7939,7940,3,858, - 429,0,7940,7941,3,844,422,0,7941,7942,3,932,466,0,7942,7943,5,7, - 0,0,7943,853,1,0,0,0,7944,7946,5,499,0,0,7945,7947,7,114,0,0,7946, - 7945,1,0,0,0,7946,7947,1,0,0,0,7947,7948,1,0,0,0,7948,7949,5,500, - 0,0,7949,7954,3,856,428,0,7950,7951,5,6,0,0,7951,7953,3,856,428, - 0,7952,7950,1,0,0,0,7953,7956,1,0,0,0,7954,7952,1,0,0,0,7954,7955, - 1,0,0,0,7955,7957,1,0,0,0,7956,7954,1,0,0,0,7957,7958,5,7,0,0,7958, - 855,1,0,0,0,7959,7960,3,858,429,0,7960,7961,3,844,422,0,7961,7962, - 3,818,409,0,7962,857,1,0,0,0,7963,7966,3,316,158,0,7964,7966,5,28, - 0,0,7965,7963,1,0,0,0,7965,7964,1,0,0,0,7966,7973,1,0,0,0,7967,7968, - 5,4,0,0,7968,7969,3,674,337,0,7969,7970,5,5,0,0,7970,7972,1,0,0, - 0,7971,7967,1,0,0,0,7972,7975,1,0,0,0,7973,7971,1,0,0,0,7973,7974, - 1,0,0,0,7974,859,1,0,0,0,7975,7973,1,0,0,0,7976,7977,5,220,0,0,7977, - 7978,3,932,466,0,7978,7982,5,93,0,0,7979,7981,3,846,423,0,7980,7979, - 1,0,0,0,7981,7984,1,0,0,0,7982,7980,1,0,0,0,7982,7983,1,0,0,0,7983, - 7996,1,0,0,0,7984,7982,1,0,0,0,7985,7986,5,502,0,0,7986,7987,3,674, - 337,0,7987,7991,5,93,0,0,7988,7990,3,846,423,0,7989,7988,1,0,0,0, - 7990,7993,1,0,0,0,7991,7989,1,0,0,0,7991,7992,1,0,0,0,7992,7995, - 1,0,0,0,7993,7991,1,0,0,0,7994,7985,1,0,0,0,7995,7998,1,0,0,0,7996, - 7994,1,0,0,0,7996,7997,1,0,0,0,7997,8000,1,0,0,0,7998,7996,1,0,0, - 0,7999,8001,3,862,431,0,8000,7999,1,0,0,0,8000,8001,1,0,0,0,8001, - 8002,1,0,0,0,8002,8003,5,454,0,0,8003,8004,5,220,0,0,8004,8005,5, - 7,0,0,8005,861,1,0,0,0,8006,8010,5,58,0,0,8007,8009,3,846,423,0, - 8008,8007,1,0,0,0,8009,8012,1,0,0,0,8010,8008,1,0,0,0,8010,8011, - 1,0,0,0,8011,863,1,0,0,0,8012,8010,1,0,0,0,8013,8015,5,40,0,0,8014, - 8016,3,932,466,0,8015,8014,1,0,0,0,8015,8016,1,0,0,0,8016,8026,1, - 0,0,0,8017,8018,5,102,0,0,8018,8019,3,730,365,0,8019,8023,5,93,0, - 0,8020,8022,3,846,423,0,8021,8020,1,0,0,0,8022,8025,1,0,0,0,8023, - 8021,1,0,0,0,8023,8024,1,0,0,0,8024,8027,1,0,0,0,8025,8023,1,0,0, - 0,8026,8017,1,0,0,0,8027,8028,1,0,0,0,8028,8026,1,0,0,0,8028,8029, - 1,0,0,0,8029,8031,1,0,0,0,8030,8032,3,862,431,0,8031,8030,1,0,0, - 0,8031,8032,1,0,0,0,8032,8033,1,0,0,0,8033,8034,5,454,0,0,8034,8035, - 5,40,0,0,8035,8036,5,7,0,0,8036,865,1,0,0,0,8037,8039,3,838,419, - 0,8038,8037,1,0,0,0,8038,8039,1,0,0,0,8039,8044,1,0,0,0,8040,8041, - 5,503,0,0,8041,8045,3,674,337,0,8042,8043,5,62,0,0,8043,8045,3,868, - 434,0,8044,8040,1,0,0,0,8044,8042,1,0,0,0,8044,8045,1,0,0,0,8045, - 8046,1,0,0,0,8046,8047,3,882,441,0,8047,867,1,0,0,0,8048,8049,3, - 314,157,0,8049,8072,5,68,0,0,8050,8052,3,818,409,0,8051,8053,3,534, - 267,0,8052,8051,1,0,0,0,8052,8053,1,0,0,0,8053,8073,1,0,0,0,8054, - 8073,3,560,280,0,8055,8073,3,520,260,0,8056,8057,5,202,0,0,8057, - 8060,3,674,337,0,8058,8059,5,100,0,0,8059,8061,3,730,365,0,8060, - 8058,1,0,0,0,8060,8061,1,0,0,0,8061,8073,1,0,0,0,8062,8064,5,504, - 0,0,8063,8062,1,0,0,0,8063,8064,1,0,0,0,8064,8065,1,0,0,0,8065,8066, - 3,674,337,0,8066,8067,5,24,0,0,8067,8070,3,674,337,0,8068,8069,5, - 147,0,0,8069,8071,3,674,337,0,8070,8068,1,0,0,0,8070,8071,1,0,0, - 0,8071,8073,1,0,0,0,8072,8050,1,0,0,0,8072,8054,1,0,0,0,8072,8055, - 1,0,0,0,8072,8056,1,0,0,0,8072,8063,1,0,0,0,8073,869,1,0,0,0,8074, - 8076,3,838,419,0,8075,8074,1,0,0,0,8075,8076,1,0,0,0,8076,8077,1, - 0,0,0,8077,8078,5,505,0,0,8078,8081,3,314,157,0,8079,8080,5,506, - 0,0,8080,8082,5,571,0,0,8081,8079,1,0,0,0,8081,8082,1,0,0,0,8082, - 8083,1,0,0,0,8083,8084,5,68,0,0,8084,8085,5,35,0,0,8085,8086,3,674, - 337,0,8086,8087,3,882,441,0,8087,871,1,0,0,0,8088,8090,7,115,0,0, - 8089,8091,3,928,464,0,8090,8089,1,0,0,0,8090,8091,1,0,0,0,8091,8094, - 1,0,0,0,8092,8093,5,102,0,0,8093,8095,3,932,466,0,8094,8092,1,0, - 0,0,8094,8095,1,0,0,0,8095,8096,1,0,0,0,8096,8097,5,7,0,0,8097,873, - 1,0,0,0,8098,8113,5,508,0,0,8099,8100,5,268,0,0,8100,8114,3,932, - 466,0,8101,8108,5,509,0,0,8102,8103,5,202,0,0,8103,8104,3,674,337, - 0,8104,8105,5,100,0,0,8105,8106,3,730,365,0,8106,8109,1,0,0,0,8107, - 8109,3,560,280,0,8108,8102,1,0,0,0,8108,8107,1,0,0,0,8109,8114,1, - 0,0,0,8110,8112,3,932,466,0,8111,8110,1,0,0,0,8111,8112,1,0,0,0, - 8112,8114,1,0,0,0,8113,8099,1,0,0,0,8113,8101,1,0,0,0,8113,8111, - 1,0,0,0,8114,8115,1,0,0,0,8115,8116,5,7,0,0,8116,875,1,0,0,0,8117, - 8147,5,510,0,0,8118,8120,7,116,0,0,8119,8118,1,0,0,0,8119,8120,1, - 0,0,0,8120,8133,1,0,0,0,8121,8134,3,826,413,0,8122,8123,5,511,0, - 0,8123,8134,3,808,404,0,8124,8131,3,808,404,0,8125,8126,5,6,0,0, - 8126,8128,3,674,337,0,8127,8125,1,0,0,0,8128,8129,1,0,0,0,8129,8127, - 1,0,0,0,8129,8130,1,0,0,0,8130,8132,1,0,0,0,8131,8127,1,0,0,0,8131, - 8132,1,0,0,0,8132,8134,1,0,0,0,8133,8121,1,0,0,0,8133,8122,1,0,0, - 0,8133,8124,1,0,0,0,8133,8134,1,0,0,0,8134,8144,1,0,0,0,8135,8136, - 5,100,0,0,8136,8141,3,878,439,0,8137,8138,5,6,0,0,8138,8140,3,878, - 439,0,8139,8137,1,0,0,0,8140,8143,1,0,0,0,8141,8139,1,0,0,0,8141, - 8142,1,0,0,0,8142,8145,1,0,0,0,8143,8141,1,0,0,0,8144,8135,1,0,0, - 0,8144,8145,1,0,0,0,8145,8146,1,0,0,0,8146,8148,5,7,0,0,8147,8119, - 1,0,0,0,8147,8148,1,0,0,0,8148,877,1,0,0,0,8149,8150,3,826,413,0, - 8150,8151,5,10,0,0,8151,8152,3,674,337,0,8152,879,1,0,0,0,8153,8154, - 5,518,0,0,8154,8157,3,932,466,0,8155,8156,5,6,0,0,8156,8158,3,932, - 466,0,8157,8155,1,0,0,0,8157,8158,1,0,0,0,8158,8159,1,0,0,0,8159, - 8160,5,7,0,0,8160,881,1,0,0,0,8161,8165,5,519,0,0,8162,8164,3,846, - 423,0,8163,8162,1,0,0,0,8164,8167,1,0,0,0,8165,8163,1,0,0,0,8165, - 8166,1,0,0,0,8166,8168,1,0,0,0,8167,8165,1,0,0,0,8168,8169,5,454, - 0,0,8169,8171,5,519,0,0,8170,8172,3,928,464,0,8171,8170,1,0,0,0, - 8171,8172,1,0,0,0,8172,8173,1,0,0,0,8173,8174,5,7,0,0,8174,883,1, - 0,0,0,8175,8177,3,4,2,0,8176,8178,3,888,444,0,8177,8176,1,0,0,0, - 8177,8178,1,0,0,0,8178,8179,1,0,0,0,8179,8180,5,7,0,0,8180,885,1, - 0,0,0,8181,8182,5,202,0,0,8182,8198,3,674,337,0,8183,8185,3,888, - 444,0,8184,8183,1,0,0,0,8184,8185,1,0,0,0,8185,8188,1,0,0,0,8186, - 8187,5,100,0,0,8187,8189,3,730,365,0,8188,8186,1,0,0,0,8188,8189, - 1,0,0,0,8189,8199,1,0,0,0,8190,8191,5,100,0,0,8191,8193,3,730,365, - 0,8192,8190,1,0,0,0,8192,8193,1,0,0,0,8193,8195,1,0,0,0,8194,8196, - 3,888,444,0,8195,8194,1,0,0,0,8195,8196,1,0,0,0,8196,8199,1,0,0, - 0,8197,8199,1,0,0,0,8198,8184,1,0,0,0,8198,8192,1,0,0,0,8198,8197, - 1,0,0,0,8199,8200,1,0,0,0,8200,8201,5,7,0,0,8201,887,1,0,0,0,8202, - 8204,5,71,0,0,8203,8205,5,346,0,0,8204,8203,1,0,0,0,8204,8205,1, - 0,0,0,8205,8206,1,0,0,0,8206,8207,3,730,365,0,8207,889,1,0,0,0,8208, - 8240,5,520,0,0,8209,8214,3,922,461,0,8210,8212,5,269,0,0,8211,8210, - 1,0,0,0,8211,8212,1,0,0,0,8212,8213,1,0,0,0,8213,8215,5,324,0,0, - 8214,8211,1,0,0,0,8214,8215,1,0,0,0,8215,8216,1,0,0,0,8216,8224, - 5,62,0,0,8217,8225,3,560,280,0,8218,8219,5,202,0,0,8219,8222,3,932, - 466,0,8220,8221,5,100,0,0,8221,8223,3,730,365,0,8222,8220,1,0,0, - 0,8222,8223,1,0,0,0,8223,8225,1,0,0,0,8224,8217,1,0,0,0,8224,8218, - 1,0,0,0,8225,8241,1,0,0,0,8226,8238,3,818,409,0,8227,8228,5,2,0, - 0,8228,8233,3,892,446,0,8229,8230,5,6,0,0,8230,8232,3,892,446,0, - 8231,8229,1,0,0,0,8232,8235,1,0,0,0,8233,8231,1,0,0,0,8233,8234, - 1,0,0,0,8234,8236,1,0,0,0,8235,8233,1,0,0,0,8236,8237,5,3,0,0,8237, - 8239,1,0,0,0,8238,8227,1,0,0,0,8238,8239,1,0,0,0,8239,8241,1,0,0, - 0,8240,8209,1,0,0,0,8240,8226,1,0,0,0,8241,8242,1,0,0,0,8242,8243, - 5,7,0,0,8243,891,1,0,0,0,8244,8245,3,818,409,0,8245,8246,5,20,0, - 0,8246,8248,1,0,0,0,8247,8244,1,0,0,0,8247,8248,1,0,0,0,8248,8249, - 1,0,0,0,8249,8250,3,674,337,0,8250,893,1,0,0,0,8251,8253,5,61,0, - 0,8252,8254,3,896,448,0,8253,8252,1,0,0,0,8253,8254,1,0,0,0,8254, - 8256,1,0,0,0,8255,8257,3,332,166,0,8256,8255,1,0,0,0,8256,8257,1, - 0,0,0,8257,8258,1,0,0,0,8258,8259,3,922,461,0,8259,8260,5,71,0,0, - 8260,8261,3,730,365,0,8261,8262,5,7,0,0,8262,895,1,0,0,0,8263,8278, - 5,268,0,0,8264,8278,5,293,0,0,8265,8278,5,207,0,0,8266,8278,5,249, - 0,0,8267,8269,7,50,0,0,8268,8267,1,0,0,0,8268,8269,1,0,0,0,8269, - 8270,1,0,0,0,8270,8278,3,674,337,0,8271,8278,5,30,0,0,8272,8275, - 7,117,0,0,8273,8276,3,674,337,0,8274,8276,5,30,0,0,8275,8273,1,0, - 0,0,8275,8274,1,0,0,0,8275,8276,1,0,0,0,8276,8278,1,0,0,0,8277,8263, - 1,0,0,0,8277,8264,1,0,0,0,8277,8265,1,0,0,0,8277,8266,1,0,0,0,8277, - 8268,1,0,0,0,8277,8271,1,0,0,0,8277,8272,1,0,0,0,8278,897,1,0,0, - 0,8279,8281,5,265,0,0,8280,8282,3,896,448,0,8281,8280,1,0,0,0,8281, - 8282,1,0,0,0,8282,8283,1,0,0,0,8283,8284,3,922,461,0,8284,8285,5, - 7,0,0,8285,899,1,0,0,0,8286,8288,3,572,286,0,8287,8286,1,0,0,0,8287, - 8288,1,0,0,0,8288,8289,1,0,0,0,8289,8290,5,525,0,0,8290,8292,5,71, - 0,0,8291,8293,5,81,0,0,8292,8291,1,0,0,0,8292,8293,1,0,0,0,8293, - 8294,1,0,0,0,8294,8296,3,774,387,0,8295,8297,5,9,0,0,8296,8295,1, - 0,0,0,8296,8297,1,0,0,0,8297,8302,1,0,0,0,8298,8300,5,36,0,0,8299, - 8298,1,0,0,0,8299,8300,1,0,0,0,8300,8301,1,0,0,0,8301,8303,3,818, - 409,0,8302,8299,1,0,0,0,8302,8303,1,0,0,0,8303,8304,1,0,0,0,8304, - 8305,5,100,0,0,8305,8306,3,902,451,0,8306,8307,5,80,0,0,8307,8309, - 3,674,337,0,8308,8310,3,904,452,0,8309,8308,1,0,0,0,8310,8311,1, - 0,0,0,8311,8309,1,0,0,0,8311,8312,1,0,0,0,8312,901,1,0,0,0,8313, - 8315,5,81,0,0,8314,8313,1,0,0,0,8314,8315,1,0,0,0,8315,8316,1,0, - 0,0,8316,8318,3,774,387,0,8317,8319,5,9,0,0,8318,8317,1,0,0,0,8318, - 8319,1,0,0,0,8319,8325,1,0,0,0,8320,8323,3,564,282,0,8321,8323,3, - 608,304,0,8322,8320,1,0,0,0,8322,8321,1,0,0,0,8323,8325,1,0,0,0, - 8324,8314,1,0,0,0,8324,8322,1,0,0,0,8325,8330,1,0,0,0,8326,8328, - 5,36,0,0,8327,8326,1,0,0,0,8327,8328,1,0,0,0,8328,8329,1,0,0,0,8329, - 8331,3,818,409,0,8330,8327,1,0,0,0,8330,8331,1,0,0,0,8331,903,1, - 0,0,0,8332,8333,5,102,0,0,8333,8336,5,526,0,0,8334,8335,5,33,0,0, - 8335,8337,3,674,337,0,8336,8334,1,0,0,0,8336,8337,1,0,0,0,8337,8338, - 1,0,0,0,8338,8343,5,93,0,0,8339,8344,3,908,454,0,8340,8344,5,182, - 0,0,8341,8342,5,57,0,0,8342,8344,5,270,0,0,8343,8339,1,0,0,0,8343, - 8340,1,0,0,0,8343,8341,1,0,0,0,8344,8359,1,0,0,0,8345,8346,5,102, - 0,0,8346,8347,5,77,0,0,8347,8350,5,526,0,0,8348,8349,5,33,0,0,8349, - 8351,3,674,337,0,8350,8348,1,0,0,0,8350,8351,1,0,0,0,8351,8352,1, - 0,0,0,8352,8356,5,93,0,0,8353,8357,3,906,453,0,8354,8355,5,57,0, - 0,8355,8357,5,270,0,0,8356,8353,1,0,0,0,8356,8354,1,0,0,0,8357,8359, - 1,0,0,0,8358,8332,1,0,0,0,8358,8345,1,0,0,0,8359,905,1,0,0,0,8360, - 8362,5,241,0,0,8361,8363,3,144,72,0,8362,8361,1,0,0,0,8362,8363, - 1,0,0,0,8363,8367,1,0,0,0,8364,8365,5,463,0,0,8365,8366,7,76,0,0, - 8366,8368,5,450,0,0,8367,8364,1,0,0,0,8367,8368,1,0,0,0,8368,8369, - 1,0,0,0,8369,8370,3,910,455,0,8370,907,1,0,0,0,8371,8372,5,369,0, - 0,8372,8390,5,333,0,0,8373,8374,3,800,400,0,8374,8375,5,10,0,0,8375, - 8376,3,912,456,0,8376,8391,1,0,0,0,8377,8378,3,144,72,0,8378,8379, - 5,10,0,0,8379,8380,5,2,0,0,8380,8385,3,912,456,0,8381,8382,5,6,0, - 0,8382,8384,3,912,456,0,8383,8381,1,0,0,0,8384,8387,1,0,0,0,8385, - 8383,1,0,0,0,8385,8386,1,0,0,0,8386,8388,1,0,0,0,8387,8385,1,0,0, - 0,8388,8389,5,3,0,0,8389,8391,1,0,0,0,8390,8373,1,0,0,0,8390,8377, - 1,0,0,0,8391,8392,1,0,0,0,8392,8390,1,0,0,0,8392,8393,1,0,0,0,8393, - 909,1,0,0,0,8394,8395,5,422,0,0,8395,8396,5,2,0,0,8396,8401,3,912, - 456,0,8397,8398,5,6,0,0,8398,8400,3,912,456,0,8399,8397,1,0,0,0, - 8400,8403,1,0,0,0,8401,8399,1,0,0,0,8401,8402,1,0,0,0,8402,8404, - 1,0,0,0,8403,8401,1,0,0,0,8404,8405,5,3,0,0,8405,8409,1,0,0,0,8406, - 8407,5,53,0,0,8407,8409,5,422,0,0,8408,8394,1,0,0,0,8408,8406,1, - 0,0,0,8409,911,1,0,0,0,8410,8413,3,588,294,0,8411,8413,5,53,0,0, - 8412,8410,1,0,0,0,8412,8411,1,0,0,0,8413,913,1,0,0,0,8414,8415,5, - 157,0,0,8415,8416,3,922,461,0,8416,8417,5,7,0,0,8417,915,1,0,0,0, - 8418,8419,5,78,0,0,8419,8420,5,7,0,0,8420,917,1,0,0,0,8421,8427, - 7,67,0,0,8422,8424,5,33,0,0,8423,8425,5,269,0,0,8424,8423,1,0,0, - 0,8424,8425,1,0,0,0,8425,8426,1,0,0,0,8426,8428,5,153,0,0,8427,8422, - 1,0,0,0,8427,8428,1,0,0,0,8428,8429,1,0,0,0,8429,8430,5,7,0,0,8430, - 919,1,0,0,0,8431,8432,5,333,0,0,8432,8433,3,316,158,0,8433,8434, - 5,94,0,0,8434,8435,5,53,0,0,8435,8436,5,7,0,0,8436,8444,1,0,0,0, - 8437,8440,5,313,0,0,8438,8441,3,316,158,0,8439,8441,5,30,0,0,8440, - 8438,1,0,0,0,8440,8439,1,0,0,0,8441,8442,1,0,0,0,8442,8444,5,7,0, - 0,8443,8431,1,0,0,0,8443,8437,1,0,0,0,8444,921,1,0,0,0,8445,8448, - 3,818,409,0,8446,8448,5,28,0,0,8447,8445,1,0,0,0,8447,8446,1,0,0, - 0,8448,923,1,0,0,0,8449,8466,5,517,0,0,8450,8451,5,102,0,0,8451, - 8456,3,926,463,0,8452,8453,5,82,0,0,8453,8455,3,926,463,0,8454,8452, - 1,0,0,0,8455,8458,1,0,0,0,8456,8454,1,0,0,0,8456,8457,1,0,0,0,8457, - 8459,1,0,0,0,8458,8456,1,0,0,0,8459,8463,5,93,0,0,8460,8462,3,846, - 423,0,8461,8460,1,0,0,0,8462,8465,1,0,0,0,8463,8461,1,0,0,0,8463, - 8464,1,0,0,0,8464,8467,1,0,0,0,8465,8463,1,0,0,0,8466,8450,1,0,0, - 0,8467,8468,1,0,0,0,8468,8466,1,0,0,0,8468,8469,1,0,0,0,8469,925, - 1,0,0,0,8470,8474,3,928,464,0,8471,8472,5,511,0,0,8472,8474,3,808, - 404,0,8473,8470,1,0,0,0,8473,8471,1,0,0,0,8474,927,1,0,0,0,8475, - 8478,3,818,409,0,8476,8478,3,930,465,0,8477,8475,1,0,0,0,8477,8476, - 1,0,0,0,8478,929,1,0,0,0,8479,8480,7,118,0,0,8480,931,1,0,0,0,8481, - 8483,3,756,378,0,8482,8481,1,0,0,0,8482,8483,1,0,0,0,8483,8485,1, - 0,0,0,8484,8486,3,580,290,0,8485,8484,1,0,0,0,8485,8486,1,0,0,0, - 8486,8488,1,0,0,0,8487,8489,3,610,305,0,8488,8487,1,0,0,0,8488,8489, - 1,0,0,0,8489,8491,1,0,0,0,8490,8492,3,638,319,0,8491,8490,1,0,0, - 0,8491,8492,1,0,0,0,8492,8494,1,0,0,0,8493,8495,3,600,300,0,8494, - 8493,1,0,0,0,8494,8495,1,0,0,0,8495,8498,1,0,0,0,8496,8497,5,67, - 0,0,8497,8499,3,674,337,0,8498,8496,1,0,0,0,8498,8499,1,0,0,0,8499, - 8501,1,0,0,0,8500,8502,3,702,351,0,8501,8500,1,0,0,0,8501,8502,1, - 0,0,0,8502,933,1,0,0,0,1188,937,944,1064,1066,1075,1080,1086,1121, - 1131,1137,1142,1149,1154,1161,1172,1180,1184,1196,1202,1208,1212, - 1217,1221,1234,1244,1246,1252,1257,1270,1273,1278,1283,1294,1298, - 1310,1314,1317,1321,1333,1351,1358,1366,1371,1378,1386,1392,1400, - 1408,1412,1426,1431,1436,1448,1454,1466,1471,1481,1487,1492,1500, - 1505,1512,1517,1522,1532,1537,1542,1549,1553,1567,1573,1579,1584, - 1591,1603,1611,1619,1635,1644,1653,1662,1666,1678,1686,1696,1716, - 1721,1724,1731,1734,1738,1742,1745,1750,1755,1759,1768,1774,1778, - 1787,1790,1796,1805,1817,1821,1825,1830,1833,1839,1841,1843,1847, - 1853,1857,1862,1867,1871,1874,1881,1894,1907,1921,1938,1948,1955, - 1960,1964,1971,1976,1979,1981,1986,1990,1994,1998,2003,2006,2010, - 2013,2017,2025,2030,2033,2037,2043,2052,2056,2062,2064,2073,2078, - 2090,2095,2099,2103,2108,2112,2115,2118,2121,2124,2127,2132,2135, - 2138,2141,2144,2147,2153,2157,2160,2163,2166,2169,2171,2178,2186, - 2196,2206,2211,2214,2219,2224,2229,2232,2237,2246,2248,2252,2255, - 2259,2264,2269,2273,2276,2280,2283,2288,2291,2296,2299,2303,2306, - 2309,2314,2317,2325,2337,2341,2348,2353,2356,2359,2362,2367,2378, - 2384,2388,2391,2394,2399,2406,2409,2413,2421,2426,2429,2432,2439, - 2444,2453,2456,2459,2464,2467,2479,2489,2506,2510,2514,2516,2533, - 2535,2551,2562,2565,2568,2577,2586,2602,2605,2608,2616,2620,2627, - 2636,2640,2646,2650,2653,2656,2659,2662,2668,2672,2677,2681,2684, - 2687,2690,2695,2701,2705,2709,2713,2719,2721,2726,2732,2738,2742, - 2757,2762,2765,2767,2770,2774,2778,2781,2784,2792,2798,2800,2806, - 2811,2816,2820,2827,2829,2840,2879,2889,2891,2894,2898,2902,2912, - 2914,2920,2922,2931,2943,2957,2962,2965,2972,2977,2985,2987,2993, - 2998,3002,3007,3013,3020,3026,3028,3037,3043,3051,3057,3062,3067, - 3075,3090,3092,3096,3100,3103,3106,3115,3118,3121,3127,3133,3137, - 3149,3155,3158,3163,3167,3174,3184,3186,3210,3222,3227,3229,3233, - 3236,3239,3249,3252,3262,3267,3272,3275,3278,3286,3292,3299,3307, - 3310,3321,3325,3331,3338,3341,3350,3364,3367,3381,3392,3395,3407, - 3412,3425,3430,3443,3452,3455,3458,3465,3468,3480,3486,3488,3496, - 3504,3512,3524,3529,3540,3551,3559,3567,3574,3581,3583,3586,3591, - 3596,3615,3624,3627,3654,3663,3666,3670,3674,3678,3685,3689,3693, - 3697,3701,3706,3710,3715,3721,3726,3733,3737,3743,3747,3752,3760, - 3766,3771,3778,3783,3787,3792,3798,3805,3810,3817,3822,3829,3833, - 3841,3845,3847,3850,3855,3865,3880,3883,3891,3898,3903,3909,3913, - 3920,3925,3928,3931,3935,3944,3962,3965,3997,4002,4008,4028,4033, - 4039,4042,4046,4050,4056,4059,4063,4067,4072,4075,4078,4081,4094, - 4100,4108,4115,4120,4123,4130,4133,4141,4144,4149,4156,4159,4179, - 4191,4194,4200,4205,4214,4222,4227,4233,4240,4248,4251,4262,4264, - 4278,4284,4292,4294,4300,4304,4307,4310,4315,4320,4324,4327,4330, - 4333,4336,4344,4355,4358,4361,4366,4369,4373,4377,4383,4391,4394, - 4407,4412,4414,4419,4426,4433,4442,4450,4458,4465,4473,4480,4488, - 4492,4496,4498,4504,4509,4513,4520,4525,4530,4535,4537,4547,4557, - 4573,4591,4603,4610,4625,4630,4633,4638,4643,4648,4651,4654,4659, - 4666,4670,4675,4682,4686,4692,4701,4710,4722,4724,4737,4743,4747, - 4749,4756,4769,4776,4778,4794,4798,4802,4807,4812,4817,4822,4825, - 4837,4890,4899,4903,4912,4916,4925,4929,4934,4937,4941,4946,4948, - 4957,4962,4973,4977,4991,4999,5037,5039,5058,5061,5088,5092,5096, - 5100,5104,5107,5122,5129,5143,5156,5181,5200,5215,5231,5238,5249, - 5252,5271,5274,5287,5291,5311,5323,5327,5349,5353,5363,5367,5373, - 5377,5381,5385,5392,5397,5408,5412,5415,5420,5426,5437,5441,5444, - 5448,5452,5455,5465,5468,5472,5477,5483,5486,5491,5494,5501,5503, - 5509,5513,5522,5527,5529,5539,5542,5547,5555,5558,5563,5565,5567, - 5573,5590,5596,5609,5615,5619,5624,5654,5669,5674,5678,5691,5695, - 5697,5706,5712,5714,5718,5721,5724,5727,5730,5732,5735,5739,5747, - 5752,5755,5761,5765,5769,5774,5776,5780,5784,5791,5797,5801,5803, - 5805,5818,5826,5834,5845,5854,5859,5863,5867,5874,5877,5879,5887, - 5891,5894,5901,5908,5913,5920,5923,5925,5928,5934,5939,5943,5950, - 5960,5967,5970,5973,5977,5988,5991,5994,5997,6000,6007,6010,6013, - 6020,6032,6039,6041,6046,6051,6053,6059,6066,6071,6076,6080,6084, - 6088,6090,6094,6098,6101,6104,6106,6116,6118,6123,6127,6132,6136, - 6143,6148,6152,6155,6161,6164,6183,6190,6194,6197,6201,6205,6208, - 6211,6216,6225,6232,6236,6240,6244,6247,6249,6254,6258,6263,6269, - 6276,6281,6286,6295,6302,6310,6321,6326,6330,6333,6337,6342,6346, - 6351,6359,6370,6375,6379,6382,6385,6387,6390,6393,6396,6400,6404, - 6408,6410,6419,6424,6430,6434,6436,6443,6448,6454,6456,6460,6467, - 6472,6475,6481,6485,6491,6500,6506,6508,6513,6516,6525,6532,6534, - 6541,6546,6549,6559,6570,6575,6579,6587,6597,6604,6610,6621,6627, - 6637,6646,6650,6653,6655,6657,6661,6669,6672,6677,6682,6689,6691, - 6697,6701,6704,6709,6712,6714,6720,6729,6735,6738,6746,6749,6753, - 6759,6761,6764,6768,6773,6780,6787,6789,6795,6797,6802,6804,6808, - 6817,6821,6829,6831,6845,6848,6856,6865,6871,6876,6884,6886,6891, - 6895,6900,6905,6911,6927,6929,6938,6953,6958,6961,6967,6972,6985, - 6990,6994,7001,7020,7032,7037,7045,7047,7049,7058,7061,7066,7071, - 7075,7078,7087,7095,7100,7102,7105,7109,7120,7141,7149,7162,7172, - 7178,7184,7187,7190,7216,7218,7239,7249,7262,7267,7271,7273,7285, - 7292,7298,7304,7308,7319,7329,7333,7338,7341,7344,7353,7364,7366, - 7370,7375,7384,7389,7397,7407,7415,7419,7422,7429,7437,7441,7448, - 7456,7465,7468,7480,7489,7496,7505,7515,7520,7524,7526,7529,7534, - 7539,7547,7555,7558,7565,7573,7581,7589,7606,7613,7621,7638,7644, - 7650,7658,7664,7669,7677,7682,7685,7694,7701,7708,7714,7720,7725, - 7730,7738,7793,7800,7806,7808,7810,7812,7818,7822,7826,7837,7840, - 7844,7848,7852,7855,7858,7861,7870,7875,7879,7912,7922,7926,7932, - 7937,7946,7954,7965,7973,7982,7991,7996,8000,8010,8015,8023,8028, - 8031,8038,8044,8052,8060,8063,8070,8072,8075,8081,8090,8094,8108, - 8111,8113,8119,8129,8131,8133,8141,8144,8147,8157,8165,8171,8177, - 8184,8188,8192,8195,8198,8204,8211,8214,8222,8224,8233,8238,8240, - 8247,8253,8256,8268,8275,8277,8281,8287,8292,8296,8299,8302,8311, - 8314,8318,8322,8324,8327,8330,8336,8343,8350,8356,8358,8362,8367, - 8385,8390,8392,8401,8408,8412,8424,8427,8440,8443,8447,8456,8463, - 8468,8473,8477,8482,8485,8488,8491,8494,8498,8501 + 25,25,27,27,2,0,114,114,120,120,2,0,20,20,22,22,1,0,483,486,17,0, + 53,53,116,116,123,124,129,228,238,386,433,452,455,469,471,471,473, + 473,475,475,477,488,490,502,504,504,506,518,520,520,524,524,547, + 548,3,0,106,123,125,128,472,472,4,0,30,52,54,70,72,105,454,454,2, + 0,62,62,116,116,2,0,10,10,20,20,2,0,434,434,501,501,2,0,167,167, + 507,507,1,0,512,517,2,0,144,144,210,210,9930,0,935,1,0,0,0,2,940, + 1,0,0,0,4,1064,1,0,0,0,6,1066,1,0,0,0,8,1069,1,0,0,0,10,1119,1,0, + 0,0,12,1129,1,0,0,0,14,1131,1,0,0,0,16,1143,1,0,0,0,18,1155,1,0, + 0,0,20,1166,1,0,0,0,22,1200,1,0,0,0,24,1244,1,0,0,0,26,1246,1,0, + 0,0,28,1258,1,0,0,0,30,1265,1,0,0,0,32,1284,1,0,0,0,34,1292,1,0, + 0,0,36,1294,1,0,0,0,38,1308,1,0,0,0,40,1312,1,0,0,0,42,1349,1,0, + 0,0,44,1351,1,0,0,0,46,1359,1,0,0,0,48,1369,1,0,0,0,50,1376,1,0, + 0,0,52,1384,1,0,0,0,54,1390,1,0,0,0,56,1406,1,0,0,0,58,1410,1,0, + 0,0,60,1412,1,0,0,0,62,1424,1,0,0,0,64,1429,1,0,0,0,66,1434,1,0, + 0,0,68,1436,1,0,0,0,70,1448,1,0,0,0,72,1456,1,0,0,0,74,1458,1,0, + 0,0,76,1582,1,0,0,0,78,1584,1,0,0,0,80,1601,1,0,0,0,82,1603,1,0, + 0,0,84,1617,1,0,0,0,86,1619,1,0,0,0,88,1633,1,0,0,0,90,1635,1,0, + 0,0,92,1872,1,0,0,0,94,1879,1,0,0,0,96,1881,1,0,0,0,98,1883,1,0, + 0,0,100,1886,1,0,0,0,102,1897,1,0,0,0,104,1900,1,0,0,0,106,1936, + 1,0,0,0,108,1938,1,0,0,0,110,1979,1,0,0,0,112,1981,1,0,0,0,114,2035, + 1,0,0,0,116,2076,1,0,0,0,118,2078,1,0,0,0,120,2095,1,0,0,0,122,2176, + 1,0,0,0,124,2178,1,0,0,0,126,2189,1,0,0,0,128,2212,1,0,0,0,130,2230, + 1,0,0,0,132,2232,1,0,0,0,134,2267,1,0,0,0,136,2360,1,0,0,0,138,2365, + 1,0,0,0,140,2367,1,0,0,0,142,2465,1,0,0,0,144,2467,1,0,0,0,146,2471, + 1,0,0,0,148,2482,1,0,0,0,150,2490,1,0,0,0,152,2493,1,0,0,0,154,2496, + 1,0,0,0,156,2514,1,0,0,0,158,2516,1,0,0,0,160,2520,1,0,0,0,162,2533, + 1,0,0,0,164,2535,1,0,0,0,166,2540,1,0,0,0,168,2560,1,0,0,0,170,2568, + 1,0,0,0,172,2575,1,0,0,0,174,2577,1,0,0,0,176,2586,1,0,0,0,178,2589, + 1,0,0,0,180,2593,1,0,0,0,182,2597,1,0,0,0,184,2622,1,0,0,0,186,2632, + 1,0,0,0,188,2646,1,0,0,0,190,2662,1,0,0,0,192,2668,1,0,0,0,194,2695, + 1,0,0,0,196,2705,1,0,0,0,198,2721,1,0,0,0,200,2765,1,0,0,0,202,2772, + 1,0,0,0,204,2774,1,0,0,0,206,2800,1,0,0,0,208,2811,1,0,0,0,210,2830, + 1,0,0,0,212,2841,1,0,0,0,214,2879,1,0,0,0,216,2900,1,0,0,0,218,2902, + 1,0,0,0,220,2922,1,0,0,0,222,2934,1,0,0,0,224,2946,1,0,0,0,226,2949, + 1,0,0,0,228,2952,1,0,0,0,230,2972,1,0,0,0,232,2977,1,0,0,0,234,3026, + 1,0,0,0,236,3028,1,0,0,0,238,3051,1,0,0,0,240,3067,1,0,0,0,242,3079, + 1,0,0,0,244,3106,1,0,0,0,246,3121,1,0,0,0,248,3184,1,0,0,0,250,3186, + 1,0,0,0,252,3191,1,0,0,0,254,3197,1,0,0,0,256,3284,1,0,0,0,258,3290, + 1,0,0,0,260,3292,1,0,0,0,262,3308,1,0,0,0,264,3310,1,0,0,0,266,3319, + 1,0,0,0,268,3323,1,0,0,0,270,3336,1,0,0,0,272,3348,1,0,0,0,274,3350, + 1,0,0,0,276,3372,1,0,0,0,278,3384,1,0,0,0,280,3395,1,0,0,0,282,3486, + 1,0,0,0,284,3488,1,0,0,0,286,3499,1,0,0,0,288,3510,1,0,0,0,290,3512, + 1,0,0,0,292,3538,1,0,0,0,294,3540,1,0,0,0,296,3544,1,0,0,0,298,3594, + 1,0,0,0,300,3596,1,0,0,0,302,3602,1,0,0,0,304,3627,1,0,0,0,306,3631, + 1,0,0,0,308,3845,1,0,0,0,310,3863,1,0,0,0,312,3889,1,0,0,0,314,3891, + 1,0,0,0,316,3899,1,0,0,0,318,3905,1,0,0,0,320,3909,1,0,0,0,322,3929, + 1,0,0,0,324,3935,1,0,0,0,326,4002,1,0,0,0,328,4033,1,0,0,0,330,4079, + 1,0,0,0,332,4081,1,0,0,0,334,4083,1,0,0,0,336,4094,1,0,0,0,338,4131, + 1,0,0,0,340,4133,1,0,0,0,342,4139,1,0,0,0,344,4189,1,0,0,0,346,4192, + 1,0,0,0,348,4206,1,0,0,0,350,4227,1,0,0,0,352,4251,1,0,0,0,354,4292, + 1,0,0,0,356,4294,1,0,0,0,358,4296,1,0,0,0,360,4336,1,0,0,0,362,4353, + 1,0,0,0,364,4373,1,0,0,0,366,4426,1,0,0,0,368,4429,1,0,0,0,370,4435, + 1,0,0,0,372,4443,1,0,0,0,374,4456,1,0,0,0,376,4458,1,0,0,0,378,4471, + 1,0,0,0,380,4473,1,0,0,0,382,4486,1,0,0,0,384,4496,1,0,0,0,386,4507, + 1,0,0,0,388,4518,1,0,0,0,390,4520,1,0,0,0,392,4525,1,0,0,0,394,4539, + 1,0,0,0,396,4571,1,0,0,0,398,4608,1,0,0,0,400,4610,1,0,0,0,402,4613, + 1,0,0,0,404,4616,1,0,0,0,406,4633,1,0,0,0,408,4654,1,0,0,0,410,4670, + 1,0,0,0,412,4686,1,0,0,0,414,4708,1,0,0,0,416,4713,1,0,0,0,418,4716, + 1,0,0,0,420,4724,1,0,0,0,422,4749,1,0,0,0,424,4752,1,0,0,0,426,4780, + 1,0,0,0,428,4785,1,0,0,0,430,4825,1,0,0,0,432,5037,1,0,0,0,434,5039, + 1,0,0,0,436,5127,1,0,0,0,438,5129,1,0,0,0,440,5135,1,0,0,0,442,5146, + 1,0,0,0,444,5156,1,0,0,0,446,5236,1,0,0,0,448,5238,1,0,0,0,450,5252, + 1,0,0,0,452,5274,1,0,0,0,454,5347,1,0,0,0,456,5349,1,0,0,0,458,5390, + 1,0,0,0,460,5392,1,0,0,0,462,5397,1,0,0,0,464,5400,1,0,0,0,466,5403, + 1,0,0,0,468,5453,1,0,0,0,470,5455,1,0,0,0,472,5466,1,0,0,0,474,5468, + 1,0,0,0,476,5478,1,0,0,0,478,5513,1,0,0,0,480,5516,1,0,0,0,482,5537, + 1,0,0,0,484,5547,1,0,0,0,486,5567,1,0,0,0,488,5573,1,0,0,0,490,5579, + 1,0,0,0,492,5584,1,0,0,0,494,5597,1,0,0,0,496,5624,1,0,0,0,498,5672, + 1,0,0,0,500,5674,1,0,0,0,502,5712,1,0,0,0,504,5714,1,0,0,0,506,5735, + 1,0,0,0,508,5755,1,0,0,0,510,5759,1,0,0,0,512,5774,1,0,0,0,514,5776, + 1,0,0,0,516,5780,1,0,0,0,518,5784,1,0,0,0,520,5792,1,0,0,0,522,5816, + 1,0,0,0,524,5818,1,0,0,0,526,5829,1,0,0,0,528,5837,1,0,0,0,530,5852, + 1,0,0,0,532,5877,1,0,0,0,534,5879,1,0,0,0,536,5883,1,0,0,0,538,5892, + 1,0,0,0,540,5932,1,0,0,0,542,5943,1,0,0,0,544,5951,1,0,0,0,546,5954, + 1,0,0,0,548,5958,1,0,0,0,550,5973,1,0,0,0,552,5998,1,0,0,0,554,6013, + 1,0,0,0,556,6039,1,0,0,0,558,6041,1,0,0,0,560,6064,1,0,0,0,562,6066, + 1,0,0,0,564,6074,1,0,0,0,566,6092,1,0,0,0,568,6116,1,0,0,0,570,6128, + 1,0,0,0,572,6132,1,0,0,0,574,6144,1,0,0,0,576,6164,1,0,0,0,578,6172, + 1,0,0,0,580,6186,1,0,0,0,582,6209,1,0,0,0,584,6211,1,0,0,0,586,6216, + 1,0,0,0,588,6226,1,0,0,0,590,6247,1,0,0,0,592,6249,1,0,0,0,594,6258, + 1,0,0,0,596,6269,1,0,0,0,598,6279,1,0,0,0,600,6281,1,0,0,0,602,6288, + 1,0,0,0,604,6319,1,0,0,0,606,6349,1,0,0,0,608,6351,1,0,0,0,610,6360, + 1,0,0,0,612,6363,1,0,0,0,614,6434,1,0,0,0,616,6458,1,0,0,0,618,6479, + 1,0,0,0,620,6481,1,0,0,0,622,6489,1,0,0,0,624,6506,1,0,0,0,626,6532, + 1,0,0,0,628,6534,1,0,0,0,630,6542,1,0,0,0,632,6549,1,0,0,0,634,6573, + 1,0,0,0,636,6579,1,0,0,0,638,6587,1,0,0,0,640,6590,1,0,0,0,642,6597, + 1,0,0,0,644,6605,1,0,0,0,646,6610,1,0,0,0,648,6640,1,0,0,0,650,6667, + 1,0,0,0,652,6695,1,0,0,0,654,6712,1,0,0,0,656,6718,1,0,0,0,658,6736, + 1,0,0,0,660,6738,1,0,0,0,662,6742,1,0,0,0,664,6759,1,0,0,0,666,6764, + 1,0,0,0,668,6802,1,0,0,0,670,6804,1,0,0,0,672,6808,1,0,0,0,674,6810, + 1,0,0,0,676,6819,1,0,0,0,678,6903,1,0,0,0,680,6909,1,0,0,0,682,7018, + 1,0,0,0,684,7050,1,0,0,0,686,7103,1,0,0,0,688,7107,1,0,0,0,690,7283, + 1,0,0,0,692,7285,1,0,0,0,694,7293,1,0,0,0,696,7298,1,0,0,0,698,7300, + 1,0,0,0,700,7308,1,0,0,0,702,7311,1,0,0,0,704,7320,1,0,0,0,706,7324, + 1,0,0,0,708,7329,1,0,0,0,710,7346,1,0,0,0,712,7373,1,0,0,0,714,7382, + 1,0,0,0,716,7384,1,0,0,0,718,7391,1,0,0,0,720,7395,1,0,0,0,722,7397, + 1,0,0,0,724,7405,1,0,0,0,726,7413,1,0,0,0,728,7420,1,0,0,0,730,7422, + 1,0,0,0,732,7435,1,0,0,0,734,7439,1,0,0,0,736,7441,1,0,0,0,738,7454, + 1,0,0,0,740,7456,1,0,0,0,742,7478,1,0,0,0,744,7480,1,0,0,0,746,7503, + 1,0,0,0,748,7505,1,0,0,0,750,7527,1,0,0,0,752,7530,1,0,0,0,754,7537, + 1,0,0,0,756,7540,1,0,0,0,758,7556,1,0,0,0,760,7558,1,0,0,0,762,7566, + 1,0,0,0,764,7574,1,0,0,0,766,7582,1,0,0,0,768,7590,1,0,0,0,770,7592, + 1,0,0,0,772,7594,1,0,0,0,774,7596,1,0,0,0,776,7598,1,0,0,0,778,7600, + 1,0,0,0,780,7602,1,0,0,0,782,7606,1,0,0,0,784,7614,1,0,0,0,786,7622, + 1,0,0,0,788,7624,1,0,0,0,790,7626,1,0,0,0,792,7628,1,0,0,0,794,7630, + 1,0,0,0,796,7636,1,0,0,0,798,7642,1,0,0,0,800,7648,1,0,0,0,802,7650, + 1,0,0,0,804,7656,1,0,0,0,806,7662,1,0,0,0,808,7664,1,0,0,0,810,7680, + 1,0,0,0,812,7683,1,0,0,0,814,7692,1,0,0,0,816,7694,1,0,0,0,818,7704, + 1,0,0,0,820,7708,1,0,0,0,822,7713,1,0,0,0,824,7719,1,0,0,0,826,7732, + 1,0,0,0,828,7734,1,0,0,0,830,7787,1,0,0,0,832,7789,1,0,0,0,834,7791, + 1,0,0,0,836,7794,1,0,0,0,838,7822,1,0,0,0,840,7826,1,0,0,0,842,7877, + 1,0,0,0,844,7880,1,0,0,0,846,7906,1,0,0,0,848,7908,1,0,0,0,850,7931, + 1,0,0,0,852,7933,1,0,0,0,854,7938,1,0,0,0,856,7953,1,0,0,0,858,7959, + 1,0,0,0,860,7970,1,0,0,0,862,8000,1,0,0,0,864,8007,1,0,0,0,866,8032, + 1,0,0,0,868,8042,1,0,0,0,870,8069,1,0,0,0,872,8082,1,0,0,0,874,8092, + 1,0,0,0,876,8111,1,0,0,0,878,8143,1,0,0,0,880,8147,1,0,0,0,882,8155, + 1,0,0,0,884,8169,1,0,0,0,886,8175,1,0,0,0,888,8196,1,0,0,0,890,8202, + 1,0,0,0,892,8241,1,0,0,0,894,8245,1,0,0,0,896,8271,1,0,0,0,898,8273, + 1,0,0,0,900,8281,1,0,0,0,902,8318,1,0,0,0,904,8352,1,0,0,0,906,8354, + 1,0,0,0,908,8365,1,0,0,0,910,8402,1,0,0,0,912,8406,1,0,0,0,914,8408, + 1,0,0,0,916,8412,1,0,0,0,918,8415,1,0,0,0,920,8437,1,0,0,0,922,8441, + 1,0,0,0,924,8443,1,0,0,0,926,8467,1,0,0,0,928,8471,1,0,0,0,930,8474, + 1,0,0,0,932,934,3,2,1,0,933,932,1,0,0,0,934,937,1,0,0,0,935,933, + 1,0,0,0,935,936,1,0,0,0,936,938,1,0,0,0,937,935,1,0,0,0,938,939, + 5,0,0,1,939,1,1,0,0,0,940,942,3,4,2,0,941,943,5,7,0,0,942,941,1, + 0,0,0,942,943,1,0,0,0,943,3,1,0,0,0,944,1065,3,278,139,0,945,1065, + 3,488,244,0,946,1065,3,484,242,0,947,1065,3,486,243,0,948,1065,3, + 352,176,0,949,1065,3,494,247,0,950,1065,3,292,146,0,951,1065,3,210, + 105,0,952,1065,3,212,106,0,953,1065,3,218,109,0,954,1065,3,232,116, + 0,955,1065,3,404,202,0,956,1065,3,28,14,0,957,1065,3,434,217,0,958, + 1065,3,436,218,0,959,1065,3,446,223,0,960,1065,3,438,219,0,961,1065, + 3,444,222,0,962,1065,3,244,122,0,963,1065,3,246,123,0,964,1065,3, + 198,99,0,965,1065,3,490,245,0,966,1065,3,76,38,0,967,1065,3,430, + 215,0,968,1065,3,108,54,0,969,1065,3,450,225,0,970,1065,3,18,9,0, + 971,1065,3,20,10,0,972,1065,3,16,8,0,973,1065,3,454,227,0,974,1065, + 3,184,92,0,975,1065,3,498,249,0,976,1065,3,496,248,0,977,1065,3, + 240,120,0,978,1065,3,506,253,0,979,1065,3,6,3,0,980,1065,3,72,36, + 0,981,1065,3,112,56,0,982,1065,3,502,251,0,983,1065,3,324,162,0, + 984,1065,3,70,35,0,985,1065,3,114,57,0,986,1065,3,254,127,0,987, + 1065,3,186,93,0,988,1065,3,280,140,0,989,1065,3,420,210,0,990,1065, + 3,500,250,0,991,1065,3,492,246,0,992,1065,3,208,104,0,993,1065,3, + 214,107,0,994,1065,3,228,114,0,995,1065,3,234,117,0,996,1065,3,364, + 182,0,997,1065,3,26,13,0,998,1065,3,192,96,0,999,1065,3,296,148, + 0,1000,1065,3,300,150,0,1001,1065,3,448,224,0,1002,1065,3,302,151, + 0,1003,1065,3,242,121,0,1004,1065,3,204,102,0,1005,1065,3,30,15, + 0,1006,1065,3,196,98,0,1007,1065,3,120,60,0,1008,1065,3,452,226, + 0,1009,1065,3,182,91,0,1010,1065,3,206,103,0,1011,1065,3,424,212, + 0,1012,1065,3,256,128,0,1013,1065,3,274,137,0,1014,1065,3,8,4,0, + 1015,1065,3,14,7,0,1016,1065,3,238,119,0,1017,1065,3,480,240,0,1018, + 1065,3,536,268,0,1019,1065,3,558,279,0,1020,1065,3,282,141,0,1021, + 1065,3,548,274,0,1022,1065,3,74,37,0,1023,1065,3,418,209,0,1024, + 1065,3,308,154,0,1025,1065,3,532,266,0,1026,1065,3,520,260,0,1027, + 1065,3,328,164,0,1028,1065,3,334,167,0,1029,1065,3,348,174,0,1030, + 1065,3,900,450,0,1031,1065,3,236,118,0,1032,1065,3,358,179,0,1033, + 1065,3,538,269,0,1034,1065,3,464,232,0,1035,1065,3,194,97,0,1036, + 1065,3,478,239,0,1037,1065,3,550,275,0,1038,1065,3,460,230,0,1039, + 1065,3,526,263,0,1040,1065,3,306,153,0,1041,1065,3,428,214,0,1042, + 1065,3,408,204,0,1043,1065,3,406,203,0,1044,1065,3,410,205,0,1045, + 1065,3,432,216,0,1046,1065,3,336,168,0,1047,1065,3,350,175,0,1048, + 1065,3,456,228,0,1049,1065,3,326,163,0,1050,1065,3,560,280,0,1051, + 1065,3,468,234,0,1052,1065,3,320,160,0,1053,1065,3,466,233,0,1054, + 1065,3,552,276,0,1055,1065,3,504,252,0,1056,1065,3,60,30,0,1057, + 1065,3,36,18,0,1058,1065,3,68,34,0,1059,1065,3,476,238,0,1060,1062, + 5,581,0,0,1061,1063,5,582,0,0,1062,1061,1,0,0,0,1062,1063,1,0,0, + 0,1063,1065,1,0,0,0,1064,944,1,0,0,0,1064,945,1,0,0,0,1064,946,1, + 0,0,0,1064,947,1,0,0,0,1064,948,1,0,0,0,1064,949,1,0,0,0,1064,950, + 1,0,0,0,1064,951,1,0,0,0,1064,952,1,0,0,0,1064,953,1,0,0,0,1064, + 954,1,0,0,0,1064,955,1,0,0,0,1064,956,1,0,0,0,1064,957,1,0,0,0,1064, + 958,1,0,0,0,1064,959,1,0,0,0,1064,960,1,0,0,0,1064,961,1,0,0,0,1064, + 962,1,0,0,0,1064,963,1,0,0,0,1064,964,1,0,0,0,1064,965,1,0,0,0,1064, + 966,1,0,0,0,1064,967,1,0,0,0,1064,968,1,0,0,0,1064,969,1,0,0,0,1064, + 970,1,0,0,0,1064,971,1,0,0,0,1064,972,1,0,0,0,1064,973,1,0,0,0,1064, + 974,1,0,0,0,1064,975,1,0,0,0,1064,976,1,0,0,0,1064,977,1,0,0,0,1064, + 978,1,0,0,0,1064,979,1,0,0,0,1064,980,1,0,0,0,1064,981,1,0,0,0,1064, + 982,1,0,0,0,1064,983,1,0,0,0,1064,984,1,0,0,0,1064,985,1,0,0,0,1064, + 986,1,0,0,0,1064,987,1,0,0,0,1064,988,1,0,0,0,1064,989,1,0,0,0,1064, + 990,1,0,0,0,1064,991,1,0,0,0,1064,992,1,0,0,0,1064,993,1,0,0,0,1064, + 994,1,0,0,0,1064,995,1,0,0,0,1064,996,1,0,0,0,1064,997,1,0,0,0,1064, + 998,1,0,0,0,1064,999,1,0,0,0,1064,1000,1,0,0,0,1064,1001,1,0,0,0, + 1064,1002,1,0,0,0,1064,1003,1,0,0,0,1064,1004,1,0,0,0,1064,1005, + 1,0,0,0,1064,1006,1,0,0,0,1064,1007,1,0,0,0,1064,1008,1,0,0,0,1064, + 1009,1,0,0,0,1064,1010,1,0,0,0,1064,1011,1,0,0,0,1064,1012,1,0,0, + 0,1064,1013,1,0,0,0,1064,1014,1,0,0,0,1064,1015,1,0,0,0,1064,1016, + 1,0,0,0,1064,1017,1,0,0,0,1064,1018,1,0,0,0,1064,1019,1,0,0,0,1064, + 1020,1,0,0,0,1064,1021,1,0,0,0,1064,1022,1,0,0,0,1064,1023,1,0,0, + 0,1064,1024,1,0,0,0,1064,1025,1,0,0,0,1064,1026,1,0,0,0,1064,1027, + 1,0,0,0,1064,1028,1,0,0,0,1064,1029,1,0,0,0,1064,1030,1,0,0,0,1064, + 1031,1,0,0,0,1064,1032,1,0,0,0,1064,1033,1,0,0,0,1064,1034,1,0,0, + 0,1064,1035,1,0,0,0,1064,1036,1,0,0,0,1064,1037,1,0,0,0,1064,1038, + 1,0,0,0,1064,1039,1,0,0,0,1064,1040,1,0,0,0,1064,1041,1,0,0,0,1064, + 1042,1,0,0,0,1064,1043,1,0,0,0,1064,1044,1,0,0,0,1064,1045,1,0,0, + 0,1064,1046,1,0,0,0,1064,1047,1,0,0,0,1064,1048,1,0,0,0,1064,1049, + 1,0,0,0,1064,1050,1,0,0,0,1064,1051,1,0,0,0,1064,1052,1,0,0,0,1064, + 1053,1,0,0,0,1064,1054,1,0,0,0,1064,1055,1,0,0,0,1064,1056,1,0,0, + 0,1064,1057,1,0,0,0,1064,1058,1,0,0,0,1064,1059,1,0,0,0,1064,1060, + 1,0,0,0,1065,5,1,0,0,0,1066,1067,5,433,0,0,1067,1068,3,684,342,0, + 1068,7,1,0,0,0,1069,1070,5,46,0,0,1070,1071,5,318,0,0,1071,1073, + 3,814,407,0,1072,1074,5,105,0,0,1073,1072,1,0,0,0,1073,1074,1,0, + 0,0,1074,1078,1,0,0,0,1075,1077,3,12,6,0,1076,1075,1,0,0,0,1077, + 1080,1,0,0,0,1078,1076,1,0,0,0,1078,1079,1,0,0,0,1079,9,1,0,0,0, + 1080,1078,1,0,0,0,1081,1084,5,287,0,0,1082,1085,3,808,404,0,1083, + 1085,5,78,0,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0,1085,1120,1,0, + 0,0,1086,1087,7,0,0,0,1087,1088,5,287,0,0,1088,1120,3,808,404,0, + 1089,1120,5,228,0,0,1090,1120,5,229,0,0,1091,1120,5,236,0,0,1092, + 1120,5,237,0,0,1093,1120,5,234,0,0,1094,1120,5,235,0,0,1095,1120, + 5,232,0,0,1096,1120,5,233,0,0,1097,1120,5,230,0,0,1098,1120,5,231, + 0,0,1099,1120,5,535,0,0,1100,1120,5,536,0,0,1101,1120,5,537,0,0, + 1102,1120,5,538,0,0,1103,1120,5,539,0,0,1104,1120,5,540,0,0,1105, + 1106,5,164,0,0,1106,1107,5,74,0,0,1107,1120,3,812,406,0,1108,1109, + 5,371,0,0,1109,1110,5,368,0,0,1110,1120,3,808,404,0,1111,1112,5, + 68,0,0,1112,1113,7,1,0,0,1113,1120,3,784,392,0,1114,1115,7,2,0,0, + 1115,1120,3,816,408,0,1116,1117,5,134,0,0,1117,1120,3,784,392,0, + 1118,1120,3,826,413,0,1119,1081,1,0,0,0,1119,1086,1,0,0,0,1119,1089, + 1,0,0,0,1119,1090,1,0,0,0,1119,1091,1,0,0,0,1119,1092,1,0,0,0,1119, + 1093,1,0,0,0,1119,1094,1,0,0,0,1119,1095,1,0,0,0,1119,1096,1,0,0, + 0,1119,1097,1,0,0,0,1119,1098,1,0,0,0,1119,1099,1,0,0,0,1119,1100, + 1,0,0,0,1119,1101,1,0,0,0,1119,1102,1,0,0,0,1119,1103,1,0,0,0,1119, + 1104,1,0,0,0,1119,1105,1,0,0,0,1119,1108,1,0,0,0,1119,1111,1,0,0, + 0,1119,1114,1,0,0,0,1119,1116,1,0,0,0,1119,1118,1,0,0,0,1120,11, + 1,0,0,0,1121,1130,3,10,5,0,1122,1123,5,348,0,0,1123,1130,5,571,0, + 0,1124,1125,7,3,0,0,1125,1130,3,816,408,0,1126,1127,5,68,0,0,1127, + 1128,7,1,0,0,1128,1130,3,816,408,0,1129,1121,1,0,0,0,1129,1122,1, + 0,0,0,1129,1124,1,0,0,0,1129,1126,1,0,0,0,1130,13,1,0,0,0,1131,1132, + 5,46,0,0,1132,1133,5,99,0,0,1133,1135,3,814,407,0,1134,1136,5,105, + 0,0,1135,1134,1,0,0,0,1135,1136,1,0,0,0,1136,1140,1,0,0,0,1137,1139, + 3,12,6,0,1138,1137,1,0,0,0,1139,1142,1,0,0,0,1140,1138,1,0,0,0,1140, + 1141,1,0,0,0,1141,15,1,0,0,0,1142,1140,1,0,0,0,1143,1144,5,138,0, + 0,1144,1145,7,2,0,0,1145,1147,3,814,407,0,1146,1148,5,105,0,0,1147, + 1146,1,0,0,0,1147,1148,1,0,0,0,1148,1152,1,0,0,0,1149,1151,3,10, + 5,0,1150,1149,1,0,0,0,1151,1154,1,0,0,0,1152,1150,1,0,0,0,1152,1153, + 1,0,0,0,1153,17,1,0,0,0,1154,1152,1,0,0,0,1155,1156,5,138,0,0,1156, + 1159,7,2,0,0,1157,1160,5,30,0,0,1158,1160,3,814,407,0,1159,1157, + 1,0,0,0,1159,1158,1,0,0,0,1160,1161,1,0,0,0,1161,1162,5,68,0,0,1162, + 1163,5,175,0,0,1163,1164,3,788,394,0,1164,1165,3,64,32,0,1165,19, + 1,0,0,0,1166,1167,5,138,0,0,1167,1168,5,442,0,0,1168,1170,3,794, + 397,0,1169,1171,3,368,184,0,1170,1169,1,0,0,0,1170,1171,1,0,0,0, + 1171,1172,1,0,0,0,1172,1173,3,22,11,0,1173,21,1,0,0,0,1174,1178, + 3,24,12,0,1175,1177,3,24,12,0,1176,1175,1,0,0,0,1177,1180,1,0,0, + 0,1178,1176,1,0,0,0,1178,1179,1,0,0,0,1179,1182,1,0,0,0,1180,1178, + 1,0,0,0,1181,1183,5,315,0,0,1182,1181,1,0,0,0,1182,1183,1,0,0,0, + 1183,1201,1,0,0,0,1184,1185,5,309,0,0,1185,1186,5,94,0,0,1186,1201, + 3,792,396,0,1187,1188,5,282,0,0,1188,1189,5,94,0,0,1189,1201,3,814, + 407,0,1190,1191,5,333,0,0,1191,1192,5,323,0,0,1192,1201,3,32,16, + 0,1193,1195,5,269,0,0,1194,1193,1,0,0,0,1194,1195,1,0,0,0,1195,1196, + 1,0,0,0,1196,1197,5,462,0,0,1197,1198,5,80,0,0,1198,1199,5,204,0, + 0,1199,1201,3,818,409,0,1200,1174,1,0,0,0,1200,1184,1,0,0,0,1200, + 1187,1,0,0,0,1200,1190,1,0,0,0,1200,1194,1,0,0,0,1201,23,1,0,0,0, + 1202,1245,5,222,0,0,1203,1245,5,338,0,0,1204,1245,5,377,0,0,1205, + 1207,5,77,0,0,1206,1205,1,0,0,0,1206,1207,1,0,0,0,1207,1208,1,0, + 0,0,1208,1245,5,250,0,0,1209,1211,5,205,0,0,1210,1209,1,0,0,0,1210, + 1211,1,0,0,0,1211,1212,1,0,0,0,1212,1213,5,327,0,0,1213,1220,5,243, + 0,0,1214,1216,5,205,0,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216, + 1217,1,0,0,0,1217,1218,5,327,0,0,1218,1220,5,181,0,0,1219,1210,1, + 0,0,0,1219,1215,1,0,0,0,1220,1245,1,0,0,0,1221,1222,5,460,0,0,1222, + 1245,7,4,0,0,1223,1224,5,170,0,0,1224,1245,3,824,412,0,1225,1226, + 5,320,0,0,1226,1245,3,818,409,0,1227,1228,5,333,0,0,1228,1229,3, + 818,409,0,1229,1232,7,5,0,0,1230,1233,3,818,409,0,1231,1233,5,53, + 0,0,1232,1230,1,0,0,0,1232,1231,1,0,0,0,1233,1245,1,0,0,0,1234,1235, + 5,333,0,0,1235,1236,3,818,409,0,1236,1237,5,64,0,0,1237,1238,5,434, + 0,0,1238,1245,1,0,0,0,1239,1242,5,313,0,0,1240,1243,3,818,409,0, + 1241,1243,5,30,0,0,1242,1240,1,0,0,0,1242,1241,1,0,0,0,1243,1245, + 1,0,0,0,1244,1202,1,0,0,0,1244,1203,1,0,0,0,1244,1204,1,0,0,0,1244, + 1206,1,0,0,0,1244,1219,1,0,0,0,1244,1221,1,0,0,0,1244,1223,1,0,0, + 0,1244,1225,1,0,0,0,1244,1227,1,0,0,0,1244,1234,1,0,0,0,1244,1239, + 1,0,0,0,1245,25,1,0,0,0,1246,1247,5,46,0,0,1247,1248,5,66,0,0,1248, + 1250,3,814,407,0,1249,1251,5,105,0,0,1250,1249,1,0,0,0,1250,1251, + 1,0,0,0,1251,1255,1,0,0,0,1252,1254,3,12,6,0,1253,1252,1,0,0,0,1254, + 1257,1,0,0,0,1255,1253,1,0,0,0,1255,1256,1,0,0,0,1256,27,1,0,0,0, + 1257,1255,1,0,0,0,1258,1259,5,138,0,0,1259,1260,5,66,0,0,1260,1261, + 3,814,407,0,1261,1262,7,6,0,0,1262,1263,5,99,0,0,1263,1264,3,816, + 408,0,1264,29,1,0,0,0,1265,1266,5,46,0,0,1266,1268,5,323,0,0,1267, + 1269,3,294,147,0,1268,1267,1,0,0,0,1268,1269,1,0,0,0,1269,1276,1, + 0,0,0,1270,1272,3,32,16,0,1271,1270,1,0,0,0,1271,1272,1,0,0,0,1272, + 1273,1,0,0,0,1273,1274,5,106,0,0,1274,1277,3,814,407,0,1275,1277, + 3,32,16,0,1276,1271,1,0,0,0,1276,1275,1,0,0,0,1277,1281,1,0,0,0, + 1278,1280,3,34,17,0,1279,1278,1,0,0,0,1280,1283,1,0,0,0,1281,1279, + 1,0,0,0,1281,1282,1,0,0,0,1282,31,1,0,0,0,1283,1281,1,0,0,0,1284, + 1285,3,316,158,0,1285,33,1,0,0,0,1286,1293,3,120,60,0,1287,1293, + 3,358,179,0,1288,1293,3,196,98,0,1289,1293,3,256,128,0,1290,1293, + 3,334,167,0,1291,1293,3,476,238,0,1292,1286,1,0,0,0,1292,1287,1, + 0,0,0,1292,1288,1,0,0,0,1292,1289,1,0,0,0,1292,1290,1,0,0,0,1292, + 1291,1,0,0,0,1293,35,1,0,0,0,1294,1296,5,333,0,0,1295,1297,7,7,0, + 0,1296,1295,1,0,0,0,1296,1297,1,0,0,0,1297,1298,1,0,0,0,1298,1299, + 3,38,19,0,1299,37,1,0,0,0,1300,1301,5,356,0,0,1301,1309,3,474,237, + 0,1302,1303,5,332,0,0,1303,1304,5,154,0,0,1304,1305,5,36,0,0,1305, + 1306,5,356,0,0,1306,1309,3,474,237,0,1307,1309,3,42,21,0,1308,1300, + 1,0,0,0,1308,1302,1,0,0,0,1308,1307,1,0,0,0,1309,39,1,0,0,0,1310, + 1313,5,30,0,0,1311,1313,3,44,22,0,1312,1310,1,0,0,0,1312,1311,1, + 0,0,0,1313,1315,1,0,0,0,1314,1316,7,5,0,0,1315,1314,1,0,0,0,1315, + 1316,1,0,0,0,1316,1319,1,0,0,0,1317,1320,5,53,0,0,1318,1320,3,46, + 23,0,1319,1317,1,0,0,0,1319,1318,1,0,0,0,1319,1320,1,0,0,0,1320, + 41,1,0,0,0,1321,1322,5,418,0,0,1322,1323,5,386,0,0,1323,1350,3,56, + 28,0,1324,1325,5,152,0,0,1325,1350,3,808,404,0,1326,1327,5,323,0, + 0,1327,1350,3,790,395,0,1328,1331,5,267,0,0,1329,1332,3,808,404, + 0,1330,1332,5,53,0,0,1331,1329,1,0,0,0,1331,1330,1,0,0,0,1331,1332, + 1,0,0,0,1332,1350,1,0,0,0,1333,1334,5,318,0,0,1334,1350,3,58,29, + 0,1335,1336,5,332,0,0,1336,1337,5,106,0,0,1337,1350,3,58,29,0,1338, + 1339,5,383,0,0,1339,1340,5,279,0,0,1340,1350,3,696,348,0,1341,1342, + 5,356,0,0,1342,1343,5,337,0,0,1343,1350,3,808,404,0,1344,1345,3, + 44,22,0,1345,1346,5,64,0,0,1346,1347,5,434,0,0,1347,1350,1,0,0,0, + 1348,1350,3,40,20,0,1349,1321,1,0,0,0,1349,1324,1,0,0,0,1349,1326, + 1,0,0,0,1349,1328,1,0,0,0,1349,1333,1,0,0,0,1349,1335,1,0,0,0,1349, + 1338,1,0,0,0,1349,1341,1,0,0,0,1349,1344,1,0,0,0,1349,1348,1,0,0, + 0,1350,43,1,0,0,0,1351,1356,3,818,409,0,1352,1353,5,11,0,0,1353, + 1355,3,818,409,0,1354,1352,1,0,0,0,1355,1358,1,0,0,0,1356,1354,1, + 0,0,0,1356,1357,1,0,0,0,1357,45,1,0,0,0,1358,1356,1,0,0,0,1359,1364, + 3,48,24,0,1360,1361,5,6,0,0,1361,1363,3,48,24,0,1362,1360,1,0,0, + 0,1363,1366,1,0,0,0,1364,1362,1,0,0,0,1364,1365,1,0,0,0,1365,47, + 1,0,0,0,1366,1364,1,0,0,0,1367,1370,3,54,27,0,1368,1370,3,202,101, + 0,1369,1367,1,0,0,0,1369,1368,1,0,0,0,1370,49,1,0,0,0,1371,1372, + 5,300,0,0,1372,1377,7,8,0,0,1373,1374,5,310,0,0,1374,1377,5,300, + 0,0,1375,1377,5,330,0,0,1376,1371,1,0,0,0,1376,1373,1,0,0,0,1376, + 1375,1,0,0,0,1377,51,1,0,0,0,1378,1385,5,96,0,0,1379,1385,5,60,0, + 0,1380,1385,5,80,0,0,1381,1385,3,800,400,0,1382,1385,3,832,416,0, + 1383,1385,3,808,404,0,1384,1378,1,0,0,0,1384,1379,1,0,0,0,1384,1380, + 1,0,0,0,1384,1381,1,0,0,0,1384,1382,1,0,0,0,1384,1383,1,0,0,0,1385, + 53,1,0,0,0,1386,1391,5,96,0,0,1387,1391,5,60,0,0,1388,1391,5,80, + 0,0,1389,1391,3,58,29,0,1390,1386,1,0,0,0,1390,1387,1,0,0,0,1390, + 1388,1,0,0,0,1390,1389,1,0,0,0,1391,55,1,0,0,0,1392,1407,3,808,404, + 0,1393,1407,5,53,0,0,1394,1407,3,826,413,0,1395,1396,5,403,0,0,1396, + 1398,3,808,404,0,1397,1399,3,668,334,0,1398,1397,1,0,0,0,1398,1399, + 1,0,0,0,1399,1407,1,0,0,0,1400,1401,5,403,0,0,1401,1402,3,660,330, + 0,1402,1403,3,808,404,0,1403,1407,1,0,0,0,1404,1407,3,202,101,0, + 1405,1407,5,254,0,0,1406,1392,1,0,0,0,1406,1393,1,0,0,0,1406,1394, + 1,0,0,0,1406,1395,1,0,0,0,1406,1400,1,0,0,0,1406,1404,1,0,0,0,1406, + 1405,1,0,0,0,1407,57,1,0,0,0,1408,1411,3,822,411,0,1409,1411,3,808, + 404,0,1410,1408,1,0,0,0,1410,1409,1,0,0,0,1411,59,1,0,0,0,1412,1413, + 5,313,0,0,1413,1414,3,62,31,0,1414,61,1,0,0,0,1415,1416,5,418,0, + 0,1416,1425,5,386,0,0,1417,1418,5,356,0,0,1418,1419,5,244,0,0,1419, + 1425,5,251,0,0,1420,1421,5,332,0,0,1421,1425,5,106,0,0,1422,1425, + 5,30,0,0,1423,1425,3,44,22,0,1424,1415,1,0,0,0,1424,1417,1,0,0,0, + 1424,1420,1,0,0,0,1424,1422,1,0,0,0,1424,1423,1,0,0,0,1425,63,1, + 0,0,0,1426,1427,5,333,0,0,1427,1430,3,38,19,0,1428,1430,3,60,30, + 0,1429,1426,1,0,0,0,1429,1428,1,0,0,0,1430,65,1,0,0,0,1431,1432, + 5,333,0,0,1432,1435,3,42,21,0,1433,1435,3,60,30,0,1434,1431,1,0, + 0,0,1434,1433,1,0,0,0,1435,67,1,0,0,0,1436,1446,5,335,0,0,1437,1447, + 3,44,22,0,1438,1439,5,418,0,0,1439,1447,5,386,0,0,1440,1441,5,356, + 0,0,1441,1442,5,244,0,0,1442,1447,5,251,0,0,1443,1444,5,332,0,0, + 1444,1447,5,106,0,0,1445,1447,5,30,0,0,1446,1437,1,0,0,0,1446,1438, + 1,0,0,0,1446,1440,1,0,0,0,1446,1443,1,0,0,0,1446,1445,1,0,0,0,1447, + 69,1,0,0,0,1448,1449,5,333,0,0,1449,1452,5,165,0,0,1450,1453,5,30, + 0,0,1451,1453,3,760,380,0,1452,1450,1,0,0,0,1452,1451,1,0,0,0,1453, + 1454,1,0,0,0,1454,1455,7,9,0,0,1455,71,1,0,0,0,1456,1457,5,155,0, + 0,1457,73,1,0,0,0,1458,1459,5,187,0,0,1459,1460,7,10,0,0,1460,75, + 1,0,0,0,1461,1462,5,138,0,0,1462,1464,5,92,0,0,1463,1465,3,422,211, + 0,1464,1463,1,0,0,0,1464,1465,1,0,0,0,1465,1466,1,0,0,0,1466,1469, + 3,624,312,0,1467,1470,3,78,39,0,1468,1470,3,88,44,0,1469,1467,1, + 0,0,0,1469,1468,1,0,0,0,1470,1583,1,0,0,0,1471,1472,5,138,0,0,1472, + 1473,5,92,0,0,1473,1474,5,30,0,0,1474,1475,5,68,0,0,1475,1479,3, + 176,88,0,1476,1477,5,281,0,0,1477,1478,5,147,0,0,1478,1480,3,816, + 408,0,1479,1476,1,0,0,0,1479,1480,1,0,0,0,1480,1481,1,0,0,0,1481, + 1482,5,333,0,0,1482,1483,5,351,0,0,1483,1485,3,768,384,0,1484,1486, + 5,272,0,0,1485,1484,1,0,0,0,1485,1486,1,0,0,0,1486,1583,1,0,0,0, + 1487,1488,5,138,0,0,1488,1490,5,92,0,0,1489,1491,3,422,211,0,1490, + 1489,1,0,0,0,1490,1491,1,0,0,0,1491,1492,1,0,0,0,1492,1493,3,774, + 387,0,1493,1498,3,90,45,0,1494,1495,5,62,0,0,1495,1496,5,422,0,0, + 1496,1499,3,80,40,0,1497,1499,5,53,0,0,1498,1494,1,0,0,0,1498,1497, + 1,0,0,0,1499,1583,1,0,0,0,1500,1501,5,138,0,0,1501,1503,5,92,0,0, + 1502,1504,3,422,211,0,1503,1502,1,0,0,0,1503,1504,1,0,0,0,1504,1505, + 1,0,0,0,1505,1506,3,774,387,0,1506,1507,5,436,0,0,1507,1508,5,285, + 0,0,1508,1510,3,780,390,0,1509,1511,7,11,0,0,1510,1509,1,0,0,0,1510, + 1511,1,0,0,0,1511,1583,1,0,0,0,1512,1513,5,138,0,0,1513,1515,5,226, + 0,0,1514,1516,3,422,211,0,1515,1514,1,0,0,0,1515,1516,1,0,0,0,1516, + 1517,1,0,0,0,1517,1520,3,780,390,0,1518,1521,3,78,39,0,1519,1521, + 3,90,45,0,1520,1518,1,0,0,0,1520,1519,1,0,0,0,1521,1583,1,0,0,0, + 1522,1523,5,138,0,0,1523,1524,5,226,0,0,1524,1525,5,30,0,0,1525, + 1526,5,68,0,0,1526,1530,3,176,88,0,1527,1528,5,281,0,0,1528,1529, + 5,147,0,0,1529,1531,3,816,408,0,1530,1527,1,0,0,0,1530,1531,1,0, + 0,0,1531,1532,1,0,0,0,1532,1533,5,333,0,0,1533,1535,3,176,88,0,1534, + 1536,5,272,0,0,1535,1534,1,0,0,0,1535,1536,1,0,0,0,1536,1583,1,0, + 0,0,1537,1538,5,138,0,0,1538,1540,5,328,0,0,1539,1541,3,422,211, + 0,1540,1539,1,0,0,0,1540,1541,1,0,0,0,1541,1542,1,0,0,0,1542,1543, + 3,780,390,0,1543,1544,3,78,39,0,1544,1583,1,0,0,0,1545,1547,5,138, + 0,0,1546,1548,5,259,0,0,1547,1546,1,0,0,0,1547,1548,1,0,0,0,1548, + 1549,1,0,0,0,1549,1551,5,376,0,0,1550,1552,3,422,211,0,1551,1550, + 1,0,0,0,1551,1552,1,0,0,0,1552,1553,1,0,0,0,1553,1554,3,778,389, + 0,1554,1555,3,78,39,0,1555,1583,1,0,0,0,1556,1557,5,138,0,0,1557, + 1558,5,259,0,0,1558,1559,5,376,0,0,1559,1560,5,30,0,0,1560,1561, + 5,68,0,0,1561,1565,3,176,88,0,1562,1563,5,281,0,0,1563,1564,5,147, + 0,0,1564,1566,3,816,408,0,1565,1562,1,0,0,0,1565,1566,1,0,0,0,1566, + 1567,1,0,0,0,1567,1568,5,333,0,0,1568,1569,5,351,0,0,1569,1571,3, + 768,384,0,1570,1572,5,272,0,0,1571,1570,1,0,0,0,1571,1572,1,0,0, + 0,1572,1583,1,0,0,0,1573,1574,5,138,0,0,1574,1575,5,63,0,0,1575, + 1577,5,92,0,0,1576,1578,3,422,211,0,1577,1576,1,0,0,0,1577,1578, + 1,0,0,0,1578,1579,1,0,0,0,1579,1580,3,624,312,0,1580,1581,3,78,39, + 0,1581,1583,1,0,0,0,1582,1461,1,0,0,0,1582,1471,1,0,0,0,1582,1487, + 1,0,0,0,1582,1500,1,0,0,0,1582,1512,1,0,0,0,1582,1522,1,0,0,0,1582, + 1537,1,0,0,0,1582,1545,1,0,0,0,1582,1556,1,0,0,0,1582,1573,1,0,0, + 0,1583,77,1,0,0,0,1584,1589,3,92,46,0,1585,1586,5,6,0,0,1586,1588, + 3,92,46,0,1587,1585,1,0,0,0,1588,1591,1,0,0,0,1589,1587,1,0,0,0, + 1589,1590,1,0,0,0,1590,79,1,0,0,0,1591,1589,1,0,0,0,1592,1593,5, + 68,0,0,1593,1602,3,534,267,0,1594,1595,5,64,0,0,1595,1596,3,82,41, + 0,1596,1597,5,94,0,0,1597,1598,3,82,41,0,1598,1602,1,0,0,0,1599, + 1600,5,105,0,0,1600,1602,3,86,43,0,1601,1592,1,0,0,0,1601,1594,1, + 0,0,0,1601,1599,1,0,0,0,1602,81,1,0,0,0,1603,1604,5,2,0,0,1604,1609, + 3,84,42,0,1605,1606,5,6,0,0,1606,1608,3,84,42,0,1607,1605,1,0,0, + 0,1608,1611,1,0,0,0,1609,1607,1,0,0,0,1609,1610,1,0,0,0,1610,1612, + 1,0,0,0,1611,1609,1,0,0,0,1612,1613,5,3,0,0,1613,83,1,0,0,0,1614, + 1618,3,534,267,0,1615,1618,5,262,0,0,1616,1618,5,260,0,0,1617,1614, + 1,0,0,0,1617,1615,1,0,0,0,1617,1616,1,0,0,0,1618,85,1,0,0,0,1619, + 1620,5,2,0,0,1620,1621,5,533,0,0,1621,1622,3,202,101,0,1622,1623, + 5,6,0,0,1623,1624,5,534,0,0,1624,1625,3,202,101,0,1625,1626,5,3, + 0,0,1626,87,1,0,0,0,1627,1628,3,90,45,0,1628,1629,3,106,53,0,1629, + 1634,1,0,0,0,1630,1631,5,436,0,0,1631,1632,5,285,0,0,1632,1634,3, + 780,390,0,1633,1627,1,0,0,0,1633,1630,1,0,0,0,1634,89,1,0,0,0,1635, + 1636,5,435,0,0,1636,1637,5,285,0,0,1637,1638,3,780,390,0,1638,91, + 1,0,0,0,1639,1642,5,133,0,0,1640,1641,5,45,0,0,1641,1643,3,818,409, + 0,1642,1640,1,0,0,0,1642,1643,1,0,0,0,1643,1644,1,0,0,0,1644,1873, + 3,142,71,0,1645,1646,5,138,0,0,1646,1647,5,45,0,0,1647,1651,3,818, + 409,0,1648,1650,3,272,136,0,1649,1648,1,0,0,0,1650,1653,1,0,0,0, + 1651,1649,1,0,0,0,1651,1652,1,0,0,0,1652,1873,1,0,0,0,1653,1651, + 1,0,0,0,1654,1655,5,372,0,0,1655,1656,5,45,0,0,1656,1873,3,818,409, + 0,1657,1658,5,191,0,0,1658,1660,5,45,0,0,1659,1661,3,422,211,0,1660, + 1659,1,0,0,0,1660,1661,1,0,0,0,1661,1662,1,0,0,0,1662,1664,3,818, + 409,0,1663,1665,3,96,48,0,1664,1663,1,0,0,0,1664,1665,1,0,0,0,1665, + 1873,1,0,0,0,1666,1667,5,333,0,0,1667,1668,5,379,0,0,1668,1873,7, + 12,0,0,1669,1670,5,158,0,0,1670,1671,5,80,0,0,1671,1873,3,818,409, + 0,1672,1673,5,333,0,0,1673,1873,7,13,0,0,1674,1676,5,193,0,0,1675, + 1677,7,14,0,0,1676,1675,1,0,0,0,1676,1677,1,0,0,0,1677,1678,1,0, + 0,0,1678,1873,5,357,0,0,1679,1680,5,186,0,0,1680,1684,5,357,0,0, + 1681,1685,5,30,0,0,1682,1685,5,99,0,0,1683,1685,3,818,409,0,1684, + 1681,1,0,0,0,1684,1682,1,0,0,0,1684,1683,1,0,0,0,1685,1873,1,0,0, + 0,1686,1687,5,193,0,0,1687,1688,7,14,0,0,1688,1689,5,321,0,0,1689, + 1873,3,818,409,0,1690,1691,5,186,0,0,1691,1692,5,321,0,0,1692,1873, + 3,818,409,0,1693,1695,5,269,0,0,1694,1693,1,0,0,0,1694,1695,1,0, + 0,0,1695,1696,1,0,0,0,1696,1697,5,228,0,0,1697,1873,3,780,390,0, + 1698,1699,5,275,0,0,1699,1873,3,316,158,0,1700,1701,5,77,0,0,1701, + 1873,5,275,0,0,1702,1703,5,282,0,0,1703,1704,5,94,0,0,1704,1873, + 3,814,407,0,1705,1706,5,333,0,0,1706,1707,5,351,0,0,1707,1873,3, + 768,384,0,1708,1709,5,312,0,0,1709,1714,5,219,0,0,1710,1715,5,270, + 0,0,1711,1715,5,113,0,0,1712,1715,5,53,0,0,1713,1715,3,180,90,0, + 1714,1710,1,0,0,0,1714,1711,1,0,0,0,1714,1712,1,0,0,0,1714,1713, + 1,0,0,0,1715,1873,1,0,0,0,1716,1723,5,193,0,0,1717,1723,5,186,0, + 0,1718,1720,5,269,0,0,1719,1718,1,0,0,0,1719,1720,1,0,0,0,1720,1721, + 1,0,0,0,1721,1723,5,209,0,0,1722,1716,1,0,0,0,1722,1717,1,0,0,0, + 1722,1719,1,0,0,0,1723,1724,1,0,0,0,1724,1725,5,414,0,0,1725,1726, + 5,251,0,0,1726,1873,5,327,0,0,1727,1729,5,191,0,0,1728,1730,5,44, + 0,0,1729,1728,1,0,0,0,1729,1730,1,0,0,0,1730,1732,1,0,0,0,1731,1733, + 3,422,211,0,1732,1731,1,0,0,0,1732,1733,1,0,0,0,1733,1734,1,0,0, + 0,1734,1736,3,800,400,0,1735,1737,3,96,48,0,1736,1735,1,0,0,0,1736, + 1737,1,0,0,0,1737,1873,1,0,0,0,1738,1740,5,133,0,0,1739,1741,5,44, + 0,0,1740,1739,1,0,0,0,1740,1741,1,0,0,0,1741,1743,1,0,0,0,1742,1744, + 3,294,147,0,1743,1742,1,0,0,0,1743,1744,1,0,0,0,1744,1745,1,0,0, + 0,1745,1873,3,132,66,0,1746,1748,5,138,0,0,1747,1749,5,44,0,0,1748, + 1747,1,0,0,0,1748,1749,1,0,0,0,1749,1750,1,0,0,0,1750,1753,3,800, + 400,0,1751,1754,3,94,47,0,1752,1754,3,222,111,0,1753,1751,1,0,0, + 0,1753,1752,1,0,0,0,1754,1873,1,0,0,0,1755,1757,5,138,0,0,1756,1758, + 5,44,0,0,1757,1756,1,0,0,0,1757,1758,1,0,0,0,1758,1759,1,0,0,0,1759, + 1760,3,800,400,0,1760,1761,7,15,0,0,1761,1762,5,77,0,0,1762,1763, + 5,78,0,0,1763,1873,1,0,0,0,1764,1766,5,138,0,0,1765,1767,5,44,0, + 0,1766,1765,1,0,0,0,1766,1767,1,0,0,0,1767,1768,1,0,0,0,1768,1769, + 3,800,400,0,1769,1770,5,191,0,0,1770,1772,5,437,0,0,1771,1773,3, + 422,211,0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1873,1,0,0,0, + 1774,1776,5,138,0,0,1775,1777,5,44,0,0,1776,1775,1,0,0,0,1776,1777, + 1,0,0,0,1777,1778,1,0,0,0,1778,1779,3,800,400,0,1779,1780,5,333, + 0,0,1780,1781,5,342,0,0,1781,1782,3,812,406,0,1782,1873,1,0,0,0, + 1783,1785,5,138,0,0,1784,1786,5,44,0,0,1785,1784,1,0,0,0,1785,1786, + 1,0,0,0,1786,1787,1,0,0,0,1787,1789,3,800,400,0,1788,1783,1,0,0, + 0,1788,1789,1,0,0,0,1789,1790,1,0,0,0,1790,1791,7,16,0,0,1791,1873, + 3,100,50,0,1792,1794,5,138,0,0,1793,1795,5,44,0,0,1794,1793,1,0, + 0,0,1794,1795,1,0,0,0,1795,1796,1,0,0,0,1796,1797,3,800,400,0,1797, + 1798,5,333,0,0,1798,1799,5,345,0,0,1799,1800,3,818,409,0,1800,1873, + 1,0,0,0,1801,1803,5,138,0,0,1802,1804,5,44,0,0,1803,1802,1,0,0,0, + 1803,1804,1,0,0,0,1804,1805,1,0,0,0,1805,1806,3,800,400,0,1806,1807, + 5,133,0,0,1807,1808,5,438,0,0,1808,1809,3,138,69,0,1809,1810,5,36, + 0,0,1810,1819,5,219,0,0,1811,1813,5,2,0,0,1812,1814,3,200,100,0, + 1813,1812,1,0,0,0,1814,1815,1,0,0,0,1815,1813,1,0,0,0,1815,1816, + 1,0,0,0,1816,1817,1,0,0,0,1817,1818,5,3,0,0,1818,1820,1,0,0,0,1819, + 1811,1,0,0,0,1819,1820,1,0,0,0,1820,1873,1,0,0,0,1821,1823,5,138, + 0,0,1822,1824,5,44,0,0,1823,1822,1,0,0,0,1823,1824,1,0,0,0,1824, + 1825,1,0,0,0,1825,1839,3,800,400,0,1826,1831,5,314,0,0,1827,1829, + 5,105,0,0,1828,1827,1,0,0,0,1828,1829,1,0,0,0,1829,1830,1,0,0,0, + 1830,1832,3,202,101,0,1831,1828,1,0,0,0,1831,1832,1,0,0,0,1832,1840, + 1,0,0,0,1833,1837,5,333,0,0,1834,1838,3,200,100,0,1835,1836,5,438, + 0,0,1836,1838,3,138,69,0,1837,1834,1,0,0,0,1837,1835,1,0,0,0,1838, + 1840,1,0,0,0,1839,1826,1,0,0,0,1839,1833,1,0,0,0,1840,1841,1,0,0, + 0,1841,1839,1,0,0,0,1841,1842,1,0,0,0,1842,1873,1,0,0,0,1843,1845, + 5,138,0,0,1844,1846,5,44,0,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0, + 1846,1847,1,0,0,0,1847,1848,3,800,400,0,1848,1849,5,191,0,0,1849, + 1851,5,219,0,0,1850,1852,3,422,211,0,1851,1850,1,0,0,0,1851,1852, + 1,0,0,0,1852,1873,1,0,0,0,1853,1855,5,138,0,0,1854,1856,5,44,0,0, + 1855,1854,1,0,0,0,1855,1856,1,0,0,0,1856,1857,1,0,0,0,1857,1860, + 3,800,400,0,1858,1859,5,333,0,0,1859,1861,5,174,0,0,1860,1858,1, + 0,0,0,1860,1861,1,0,0,0,1861,1862,1,0,0,0,1862,1863,5,360,0,0,1863, + 1865,3,652,326,0,1864,1866,3,98,49,0,1865,1864,1,0,0,0,1865,1866, + 1,0,0,0,1866,1869,1,0,0,0,1867,1868,5,100,0,0,1868,1870,3,674,337, + 0,1869,1867,1,0,0,0,1869,1870,1,0,0,0,1870,1873,1,0,0,0,1871,1873, + 3,222,111,0,1872,1639,1,0,0,0,1872,1645,1,0,0,0,1872,1654,1,0,0, + 0,1872,1657,1,0,0,0,1872,1666,1,0,0,0,1872,1669,1,0,0,0,1872,1672, + 1,0,0,0,1872,1674,1,0,0,0,1872,1679,1,0,0,0,1872,1686,1,0,0,0,1872, + 1690,1,0,0,0,1872,1694,1,0,0,0,1872,1698,1,0,0,0,1872,1700,1,0,0, + 0,1872,1702,1,0,0,0,1872,1705,1,0,0,0,1872,1708,1,0,0,0,1872,1722, + 1,0,0,0,1872,1727,1,0,0,0,1872,1738,1,0,0,0,1872,1746,1,0,0,0,1872, + 1755,1,0,0,0,1872,1764,1,0,0,0,1872,1774,1,0,0,0,1872,1788,1,0,0, + 0,1872,1792,1,0,0,0,1872,1801,1,0,0,0,1872,1821,1,0,0,0,1872,1843, + 1,0,0,0,1872,1853,1,0,0,0,1872,1871,1,0,0,0,1873,93,1,0,0,0,1874, + 1875,5,333,0,0,1875,1876,5,53,0,0,1876,1880,3,674,337,0,1877,1878, + 5,191,0,0,1878,1880,5,53,0,0,1879,1874,1,0,0,0,1879,1877,1,0,0,0, + 1880,95,1,0,0,0,1881,1882,7,17,0,0,1882,97,1,0,0,0,1883,1884,5,43, + 0,0,1884,1885,3,316,158,0,1885,99,1,0,0,0,1886,1887,5,2,0,0,1887, + 1892,3,104,52,0,1888,1889,5,6,0,0,1889,1891,3,104,52,0,1890,1888, + 1,0,0,0,1891,1894,1,0,0,0,1892,1890,1,0,0,0,1892,1893,1,0,0,0,1893, + 1895,1,0,0,0,1894,1892,1,0,0,0,1895,1896,5,3,0,0,1896,101,1,0,0, + 0,1897,1898,5,105,0,0,1898,1899,3,100,50,0,1899,103,1,0,0,0,1900, + 1905,3,824,412,0,1901,1902,5,10,0,0,1902,1906,3,288,144,0,1903,1904, + 5,11,0,0,1904,1906,3,286,143,0,1905,1901,1,0,0,0,1905,1903,1,0,0, + 0,1905,1906,1,0,0,0,1906,105,1,0,0,0,1907,1908,5,62,0,0,1908,1909, + 5,422,0,0,1909,1910,5,105,0,0,1910,1911,5,2,0,0,1911,1912,3,822, + 411,0,1912,1919,5,571,0,0,1913,1914,5,6,0,0,1914,1915,3,822,411, + 0,1915,1916,5,571,0,0,1916,1918,1,0,0,0,1917,1913,1,0,0,0,1918,1921, + 1,0,0,0,1919,1917,1,0,0,0,1919,1920,1,0,0,0,1920,1922,1,0,0,0,1921, + 1919,1,0,0,0,1922,1923,5,3,0,0,1923,1937,1,0,0,0,1924,1925,5,62, + 0,0,1925,1926,5,422,0,0,1926,1927,5,68,0,0,1927,1937,3,534,267,0, + 1928,1929,5,62,0,0,1929,1930,5,422,0,0,1930,1931,5,64,0,0,1931,1932, + 3,534,267,0,1932,1933,5,94,0,0,1933,1934,3,534,267,0,1934,1937,1, + 0,0,0,1935,1937,5,53,0,0,1936,1907,1,0,0,0,1936,1924,1,0,0,0,1936, + 1928,1,0,0,0,1936,1935,1,0,0,0,1937,107,1,0,0,0,1938,1939,5,138, + 0,0,1939,1940,5,360,0,0,1940,1941,3,316,158,0,1941,1946,3,110,55, + 0,1942,1943,5,6,0,0,1943,1945,3,110,55,0,1944,1942,1,0,0,0,1945, + 1948,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947,109,1,0,0, + 0,1948,1946,1,0,0,0,1949,1950,5,133,0,0,1950,1951,5,143,0,0,1951, + 1953,3,644,322,0,1952,1954,3,96,48,0,1953,1952,1,0,0,0,1953,1954, + 1,0,0,0,1954,1980,1,0,0,0,1955,1956,5,191,0,0,1956,1958,5,143,0, + 0,1957,1959,3,422,211,0,1958,1957,1,0,0,0,1958,1959,1,0,0,0,1959, + 1960,1,0,0,0,1960,1962,3,818,409,0,1961,1963,3,96,48,0,1962,1961, + 1,0,0,0,1962,1963,1,0,0,0,1963,1980,1,0,0,0,1964,1965,5,138,0,0, + 1965,1966,5,143,0,0,1966,1969,3,818,409,0,1967,1968,5,333,0,0,1968, + 1970,5,174,0,0,1969,1967,1,0,0,0,1969,1970,1,0,0,0,1970,1971,1,0, + 0,0,1971,1972,5,360,0,0,1972,1974,3,652,326,0,1973,1975,3,98,49, + 0,1974,1973,1,0,0,0,1974,1975,1,0,0,0,1975,1977,1,0,0,0,1976,1978, + 3,96,48,0,1977,1976,1,0,0,0,1977,1978,1,0,0,0,1978,1980,1,0,0,0, + 1979,1949,1,0,0,0,1979,1955,1,0,0,0,1979,1964,1,0,0,0,1980,111,1, + 0,0,0,1981,1984,5,157,0,0,1982,1985,3,818,409,0,1983,1985,5,30,0, + 0,1984,1982,1,0,0,0,1984,1983,1,0,0,0,1985,113,1,0,0,0,1986,1988, + 5,169,0,0,1987,1989,5,107,0,0,1988,1987,1,0,0,0,1988,1989,1,0,0, + 0,1989,1990,1,0,0,0,1990,1992,3,774,387,0,1991,1993,3,144,72,0,1992, + 1991,1,0,0,0,1992,1993,1,0,0,0,1993,1994,1,0,0,0,1994,1996,7,18, + 0,0,1995,1997,5,297,0,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997, + 2001,1,0,0,0,1998,2002,3,808,404,0,1999,2002,5,343,0,0,2000,2002, + 5,344,0,0,2001,1998,1,0,0,0,2001,1999,1,0,0,0,2001,2000,1,0,0,0, + 2002,2008,1,0,0,0,2003,2005,5,100,0,0,2004,2003,1,0,0,0,2004,2005, + 1,0,0,0,2005,2006,1,0,0,0,2006,2007,5,184,0,0,2007,2009,3,808,404, + 0,2008,2004,1,0,0,0,2008,2009,1,0,0,0,2009,2011,1,0,0,0,2010,2012, + 5,105,0,0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012,2013,1,0,0,0, + 2013,2015,3,116,58,0,2014,2016,3,638,319,0,2015,2014,1,0,0,0,2015, + 2016,1,0,0,0,2016,2036,1,0,0,0,2017,2018,5,169,0,0,2018,2019,5,2, + 0,0,2019,2020,3,530,265,0,2020,2021,5,3,0,0,2021,2023,5,94,0,0,2022, + 2024,5,297,0,0,2023,2022,1,0,0,0,2023,2024,1,0,0,0,2024,2028,1,0, + 0,0,2025,2029,3,808,404,0,2026,2029,5,343,0,0,2027,2029,5,344,0, + 0,2028,2025,1,0,0,0,2028,2026,1,0,0,0,2028,2027,1,0,0,0,2029,2031, + 1,0,0,0,2030,2032,5,105,0,0,2031,2030,1,0,0,0,2031,2032,1,0,0,0, + 2032,2033,1,0,0,0,2033,2034,3,116,58,0,2034,2036,1,0,0,0,2035,1986, + 1,0,0,0,2035,2017,1,0,0,0,2036,115,1,0,0,0,2037,2061,5,107,0,0,2038, + 2061,5,112,0,0,2039,2041,7,19,0,0,2040,2042,5,36,0,0,2041,2040,1, + 0,0,0,2041,2042,1,0,0,0,2042,2043,1,0,0,0,2043,2061,3,808,404,0, + 2044,2061,5,171,0,0,2045,2061,5,216,0,0,2046,2047,5,209,0,0,2047, + 2050,5,298,0,0,2048,2051,3,148,74,0,2049,2051,5,9,0,0,2050,2048, + 1,0,0,0,2050,2049,1,0,0,0,2051,2061,1,0,0,0,2052,2054,5,209,0,0, + 2053,2055,5,77,0,0,2054,2053,1,0,0,0,2054,2055,1,0,0,0,2055,2056, + 1,0,0,0,2056,2057,5,78,0,0,2057,2061,3,148,74,0,2058,2059,5,194, + 0,0,2059,2061,3,808,404,0,2060,2037,1,0,0,0,2060,2038,1,0,0,0,2060, + 2039,1,0,0,0,2060,2044,1,0,0,0,2060,2045,1,0,0,0,2060,2046,1,0,0, + 0,2060,2052,1,0,0,0,2060,2058,1,0,0,0,2061,2064,1,0,0,0,2062,2060, + 1,0,0,0,2062,2063,1,0,0,0,2063,2077,1,0,0,0,2064,2062,1,0,0,0,2065, + 2066,5,2,0,0,2066,2071,3,118,59,0,2067,2068,5,6,0,0,2068,2070,3, + 118,59,0,2069,2067,1,0,0,0,2070,2073,1,0,0,0,2071,2069,1,0,0,0,2071, + 2072,1,0,0,0,2072,2074,1,0,0,0,2073,2071,1,0,0,0,2074,2075,5,3,0, + 0,2075,2077,1,0,0,0,2076,2062,1,0,0,0,2076,2065,1,0,0,0,2077,117, + 1,0,0,0,2078,2093,3,824,412,0,2079,2094,3,54,27,0,2080,2094,3,202, + 101,0,2081,2094,5,9,0,0,2082,2083,5,2,0,0,2083,2088,3,52,26,0,2084, + 2085,5,6,0,0,2085,2087,3,52,26,0,2086,2084,1,0,0,0,2087,2090,1,0, + 0,0,2088,2086,1,0,0,0,2088,2089,1,0,0,0,2089,2091,1,0,0,0,2090,2088, + 1,0,0,0,2091,2092,5,3,0,0,2092,2094,1,0,0,0,2093,2079,1,0,0,0,2093, + 2080,1,0,0,0,2093,2081,1,0,0,0,2093,2082,1,0,0,0,2093,2094,1,0,0, + 0,2094,119,1,0,0,0,2095,2097,5,46,0,0,2096,2098,3,122,61,0,2097, + 2096,1,0,0,0,2097,2098,1,0,0,0,2098,2099,1,0,0,0,2099,2101,5,92, + 0,0,2100,2102,3,294,147,0,2101,2100,1,0,0,0,2101,2102,1,0,0,0,2102, + 2103,1,0,0,0,2103,2169,3,772,386,0,2104,2106,5,2,0,0,2105,2107,3, + 126,63,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107,2108,1,0,0,0,2108, + 2110,5,3,0,0,2109,2111,3,164,82,0,2110,2109,1,0,0,0,2110,2111,1, + 0,0,0,2111,2113,1,0,0,0,2112,2114,3,166,83,0,2113,2112,1,0,0,0,2113, + 2114,1,0,0,0,2114,2116,1,0,0,0,2115,2117,3,170,85,0,2116,2115,1, + 0,0,0,2116,2117,1,0,0,0,2117,2119,1,0,0,0,2118,2120,3,172,86,0,2119, + 2118,1,0,0,0,2119,2120,1,0,0,0,2120,2122,1,0,0,0,2121,2123,3,174, + 87,0,2122,2121,1,0,0,0,2122,2123,1,0,0,0,2123,2125,1,0,0,0,2124, + 2126,3,176,88,0,2125,2124,1,0,0,0,2125,2126,1,0,0,0,2126,2170,1, + 0,0,0,2127,2128,5,275,0,0,2128,2130,3,316,158,0,2129,2131,3,124, + 62,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2133,1,0,0,0,2132, + 2134,3,166,83,0,2133,2132,1,0,0,0,2133,2134,1,0,0,0,2134,2136,1, + 0,0,0,2135,2137,3,170,85,0,2136,2135,1,0,0,0,2136,2137,1,0,0,0,2137, + 2139,1,0,0,0,2138,2140,3,172,86,0,2139,2138,1,0,0,0,2139,2140,1, + 0,0,0,2140,2142,1,0,0,0,2141,2143,3,174,87,0,2142,2141,1,0,0,0,2142, + 2143,1,0,0,0,2143,2145,1,0,0,0,2144,2146,3,176,88,0,2145,2144,1, + 0,0,0,2145,2146,1,0,0,0,2146,2170,1,0,0,0,2147,2148,5,285,0,0,2148, + 2149,5,275,0,0,2149,2151,3,780,390,0,2150,2152,3,124,62,0,2151,2150, + 1,0,0,0,2151,2152,1,0,0,0,2152,2153,1,0,0,0,2153,2155,3,106,53,0, + 2154,2156,3,166,83,0,2155,2154,1,0,0,0,2155,2156,1,0,0,0,2156,2158, + 1,0,0,0,2157,2159,3,170,85,0,2158,2157,1,0,0,0,2158,2159,1,0,0,0, + 2159,2161,1,0,0,0,2160,2162,3,172,86,0,2161,2160,1,0,0,0,2161,2162, + 1,0,0,0,2162,2164,1,0,0,0,2163,2165,3,174,87,0,2164,2163,1,0,0,0, + 2164,2165,1,0,0,0,2165,2167,1,0,0,0,2166,2168,3,176,88,0,2167,2166, + 1,0,0,0,2167,2168,1,0,0,0,2168,2170,1,0,0,0,2169,2104,1,0,0,0,2169, + 2127,1,0,0,0,2169,2147,1,0,0,0,2170,121,1,0,0,0,2171,2177,5,354, + 0,0,2172,2177,5,352,0,0,2173,2174,7,20,0,0,2174,2177,7,21,0,0,2175, + 2177,5,367,0,0,2176,2171,1,0,0,0,2176,2172,1,0,0,0,2176,2173,1,0, + 0,0,2176,2175,1,0,0,0,2177,123,1,0,0,0,2178,2179,5,2,0,0,2179,2184, + 3,130,65,0,2180,2181,5,6,0,0,2181,2183,3,130,65,0,2182,2180,1,0, + 0,0,2183,2186,1,0,0,0,2184,2182,1,0,0,0,2184,2185,1,0,0,0,2185,2187, + 1,0,0,0,2186,2184,1,0,0,0,2187,2188,5,3,0,0,2188,125,1,0,0,0,2189, + 2194,3,128,64,0,2190,2191,5,6,0,0,2191,2193,3,128,64,0,2192,2190, + 1,0,0,0,2193,2196,1,0,0,0,2194,2192,1,0,0,0,2194,2195,1,0,0,0,2195, + 127,1,0,0,0,2196,2194,1,0,0,0,2197,2198,5,45,0,0,2198,2200,3,818, + 409,0,2199,2197,1,0,0,0,2199,2200,1,0,0,0,2200,2201,1,0,0,0,2201, + 2213,3,142,71,0,2202,2213,3,132,66,0,2203,2204,5,120,0,0,2204,2209, + 3,780,390,0,2205,2206,7,22,0,0,2206,2208,3,140,70,0,2207,2205,1, + 0,0,0,2208,2211,1,0,0,0,2209,2207,1,0,0,0,2209,2210,1,0,0,0,2210, + 2213,1,0,0,0,2211,2209,1,0,0,0,2212,2199,1,0,0,0,2212,2202,1,0,0, + 0,2212,2203,1,0,0,0,2213,129,1,0,0,0,2214,2217,3,802,401,0,2215, + 2216,5,105,0,0,2216,2218,5,280,0,0,2217,2215,1,0,0,0,2217,2218,1, + 0,0,0,2218,2222,1,0,0,0,2219,2221,3,134,67,0,2220,2219,1,0,0,0,2221, + 2224,1,0,0,0,2222,2220,1,0,0,0,2222,2223,1,0,0,0,2223,2231,1,0,0, + 0,2224,2222,1,0,0,0,2225,2226,5,45,0,0,2226,2228,3,818,409,0,2227, + 2225,1,0,0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2231,3,142, + 71,0,2230,2214,1,0,0,0,2230,2227,1,0,0,0,2231,131,1,0,0,0,2232,2233, + 3,802,401,0,2233,2235,3,652,326,0,2234,2236,3,220,110,0,2235,2234, + 1,0,0,0,2235,2236,1,0,0,0,2236,2246,1,0,0,0,2237,2244,5,345,0,0, + 2238,2245,5,544,0,0,2239,2245,5,205,0,0,2240,2245,5,545,0,0,2241, + 2245,5,546,0,0,2242,2245,5,53,0,0,2243,2245,3,818,409,0,2244,2238, + 1,0,0,0,2244,2239,1,0,0,0,2244,2240,1,0,0,0,2244,2241,1,0,0,0,2244, + 2242,1,0,0,0,2244,2243,1,0,0,0,2245,2247,1,0,0,0,2246,2237,1,0,0, + 0,2246,2247,1,0,0,0,2247,2250,1,0,0,0,2248,2249,5,543,0,0,2249,2251, + 3,818,409,0,2250,2248,1,0,0,0,2250,2251,1,0,0,0,2251,2253,1,0,0, + 0,2252,2254,3,98,49,0,2253,2252,1,0,0,0,2253,2254,1,0,0,0,2254,2257, + 1,0,0,0,2255,2256,5,105,0,0,2256,2258,5,280,0,0,2257,2255,1,0,0, + 0,2257,2258,1,0,0,0,2258,2262,1,0,0,0,2259,2261,3,134,67,0,2260, + 2259,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0,0,2262,2263,1,0,0, + 0,2263,133,1,0,0,0,2264,2262,1,0,0,0,2265,2266,5,45,0,0,2266,2268, + 3,818,409,0,2267,2265,1,0,0,0,2267,2268,1,0,0,0,2268,2269,1,0,0, + 0,2269,2274,3,136,68,0,2270,2272,5,77,0,0,2271,2270,1,0,0,0,2271, + 2272,1,0,0,0,2272,2273,1,0,0,0,2273,2275,5,54,0,0,2274,2271,1,0, + 0,0,2274,2275,1,0,0,0,2275,2278,1,0,0,0,2276,2277,5,69,0,0,2277, + 2279,7,9,0,0,2278,2276,1,0,0,0,2278,2279,1,0,0,0,2279,135,1,0,0, + 0,2280,2282,5,77,0,0,2281,2280,1,0,0,0,2281,2282,1,0,0,0,2282,2283, + 1,0,0,0,2283,2361,5,78,0,0,2284,2286,5,98,0,0,2285,2287,3,400,200, + 0,2286,2285,1,0,0,0,2286,2287,1,0,0,0,2287,2289,1,0,0,0,2288,2290, + 3,178,89,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2361,1,0,0,0, + 2291,2297,5,98,0,0,2292,2294,5,273,0,0,2293,2295,5,77,0,0,2294,2293, + 1,0,0,0,2294,2295,1,0,0,0,2295,2296,1,0,0,0,2296,2298,5,56,0,0,2297, + 2292,1,0,0,0,2297,2298,1,0,0,0,2298,2301,1,0,0,0,2299,2300,5,441, + 0,0,2300,2302,3,360,180,0,2301,2299,1,0,0,0,2301,2302,1,0,0,0,2302, + 2304,1,0,0,0,2303,2305,3,572,286,0,2304,2303,1,0,0,0,2304,2305,1, + 0,0,0,2305,2307,1,0,0,0,2306,2308,3,178,89,0,2307,2306,1,0,0,0,2307, + 2308,1,0,0,0,2308,2361,1,0,0,0,2309,2310,5,85,0,0,2310,2312,5,245, + 0,0,2311,2313,3,400,200,0,2312,2311,1,0,0,0,2312,2313,1,0,0,0,2313, + 2315,1,0,0,0,2314,2316,3,178,89,0,2315,2314,1,0,0,0,2315,2316,1, + 0,0,0,2316,2361,1,0,0,0,2317,2318,5,42,0,0,2318,2319,5,2,0,0,2319, + 2320,3,674,337,0,2320,2323,5,3,0,0,2321,2322,5,269,0,0,2322,2324, + 5,228,0,0,2323,2321,1,0,0,0,2323,2324,1,0,0,0,2324,2361,1,0,0,0, + 2325,2326,5,53,0,0,2326,2361,3,682,341,0,2327,2328,5,438,0,0,2328, + 2329,3,138,69,0,2329,2346,5,36,0,0,2330,2339,5,219,0,0,2331,2333, + 5,2,0,0,2332,2334,3,200,100,0,2333,2332,1,0,0,0,2334,2335,1,0,0, + 0,2335,2333,1,0,0,0,2335,2336,1,0,0,0,2336,2337,1,0,0,0,2337,2338, + 5,3,0,0,2338,2340,1,0,0,0,2339,2331,1,0,0,0,2339,2340,1,0,0,0,2340, + 2347,1,0,0,0,2341,2342,5,2,0,0,2342,2343,3,674,337,0,2343,2344,5, + 3,0,0,2344,2345,5,440,0,0,2345,2347,1,0,0,0,2346,2330,1,0,0,0,2346, + 2341,1,0,0,0,2347,2361,1,0,0,0,2348,2349,5,86,0,0,2349,2351,3,780, + 390,0,2350,2352,3,144,72,0,2351,2350,1,0,0,0,2351,2352,1,0,0,0,2352, + 2354,1,0,0,0,2353,2355,3,152,76,0,2354,2353,1,0,0,0,2354,2355,1, + 0,0,0,2355,2357,1,0,0,0,2356,2358,3,156,78,0,2357,2356,1,0,0,0,2357, + 2358,1,0,0,0,2358,2361,1,0,0,0,2359,2361,3,98,49,0,2360,2281,1,0, + 0,0,2360,2284,1,0,0,0,2360,2291,1,0,0,0,2360,2309,1,0,0,0,2360,2317, + 1,0,0,0,2360,2325,1,0,0,0,2360,2327,1,0,0,0,2360,2348,1,0,0,0,2360, + 2359,1,0,0,0,2361,137,1,0,0,0,2362,2366,5,139,0,0,2363,2364,5,147, + 0,0,2364,2366,5,53,0,0,2365,2362,1,0,0,0,2365,2363,1,0,0,0,2366, + 139,1,0,0,0,2367,2368,7,23,0,0,2368,141,1,0,0,0,2369,2370,5,42,0, + 0,2370,2371,5,2,0,0,2371,2372,3,674,337,0,2372,2376,5,3,0,0,2373, + 2375,3,272,136,0,2374,2373,1,0,0,0,2375,2378,1,0,0,0,2376,2374,1, + 0,0,0,2376,2377,1,0,0,0,2377,2466,1,0,0,0,2378,2376,1,0,0,0,2379, + 2383,5,98,0,0,2380,2381,5,85,0,0,2381,2383,5,245,0,0,2382,2379,1, + 0,0,0,2382,2380,1,0,0,0,2383,2407,1,0,0,0,2384,2386,3,144,72,0,2385, + 2387,3,150,75,0,2386,2385,1,0,0,0,2386,2387,1,0,0,0,2387,2389,1, + 0,0,0,2388,2390,3,400,200,0,2389,2388,1,0,0,0,2389,2390,1,0,0,0, + 2390,2392,1,0,0,0,2391,2393,3,178,89,0,2392,2391,1,0,0,0,2392,2393, + 1,0,0,0,2393,2397,1,0,0,0,2394,2396,3,272,136,0,2395,2394,1,0,0, + 0,2396,2399,1,0,0,0,2397,2395,1,0,0,0,2397,2398,1,0,0,0,2398,2408, + 1,0,0,0,2399,2397,1,0,0,0,2400,2404,3,180,90,0,2401,2403,3,272,136, + 0,2402,2401,1,0,0,0,2403,2406,1,0,0,0,2404,2402,1,0,0,0,2404,2405, + 1,0,0,0,2405,2408,1,0,0,0,2406,2404,1,0,0,0,2407,2384,1,0,0,0,2407, + 2400,1,0,0,0,2408,2466,1,0,0,0,2409,2411,5,199,0,0,2410,2412,3,170, + 85,0,2411,2410,1,0,0,0,2411,2412,1,0,0,0,2412,2413,1,0,0,0,2413, + 2414,5,2,0,0,2414,2419,3,154,77,0,2415,2416,5,6,0,0,2416,2418,3, + 154,77,0,2417,2415,1,0,0,0,2418,2421,1,0,0,0,2419,2417,1,0,0,0,2419, + 2420,1,0,0,0,2420,2422,1,0,0,0,2421,2419,1,0,0,0,2422,2424,5,3,0, + 0,2423,2425,3,150,75,0,2424,2423,1,0,0,0,2424,2425,1,0,0,0,2425, + 2427,1,0,0,0,2426,2428,3,400,200,0,2427,2426,1,0,0,0,2427,2428,1, + 0,0,0,2428,2430,1,0,0,0,2429,2431,3,178,89,0,2430,2429,1,0,0,0,2430, + 2431,1,0,0,0,2431,2437,1,0,0,0,2432,2433,5,103,0,0,2433,2434,5,2, + 0,0,2434,2435,3,674,337,0,2435,2436,5,3,0,0,2436,2438,1,0,0,0,2437, + 2432,1,0,0,0,2437,2438,1,0,0,0,2438,2442,1,0,0,0,2439,2441,3,272, + 136,0,2440,2439,1,0,0,0,2441,2444,1,0,0,0,2442,2440,1,0,0,0,2442, + 2443,1,0,0,0,2443,2466,1,0,0,0,2444,2442,1,0,0,0,2445,2446,5,63, + 0,0,2446,2447,5,245,0,0,2447,2448,3,144,72,0,2448,2449,5,86,0,0, + 2449,2451,3,780,390,0,2450,2452,3,144,72,0,2451,2450,1,0,0,0,2451, + 2452,1,0,0,0,2452,2454,1,0,0,0,2453,2455,3,152,76,0,2454,2453,1, + 0,0,0,2454,2455,1,0,0,0,2455,2457,1,0,0,0,2456,2458,3,156,78,0,2457, + 2456,1,0,0,0,2457,2458,1,0,0,0,2458,2462,1,0,0,0,2459,2461,3,272, + 136,0,2460,2459,1,0,0,0,2461,2464,1,0,0,0,2462,2460,1,0,0,0,2462, + 2463,1,0,0,0,2463,2466,1,0,0,0,2464,2462,1,0,0,0,2465,2369,1,0,0, + 0,2465,2382,1,0,0,0,2465,2409,1,0,0,0,2465,2445,1,0,0,0,2466,143, + 1,0,0,0,2467,2468,5,2,0,0,2468,2469,3,148,74,0,2469,2470,5,3,0,0, + 2470,145,1,0,0,0,2471,2472,5,2,0,0,2472,2477,3,802,401,0,2473,2474, + 5,6,0,0,2474,2476,3,802,401,0,2475,2473,1,0,0,0,2476,2479,1,0,0, + 0,2477,2475,1,0,0,0,2477,2478,1,0,0,0,2478,2480,1,0,0,0,2479,2477, + 1,0,0,0,2480,2481,5,3,0,0,2481,147,1,0,0,0,2482,2487,3,800,400,0, + 2483,2484,5,6,0,0,2484,2486,3,800,400,0,2485,2483,1,0,0,0,2486,2489, + 1,0,0,0,2487,2485,1,0,0,0,2487,2488,1,0,0,0,2488,149,1,0,0,0,2489, + 2487,1,0,0,0,2490,2491,5,441,0,0,2491,2492,3,144,72,0,2492,151,1, + 0,0,0,2493,2494,5,258,0,0,2494,2495,7,24,0,0,2495,153,1,0,0,0,2496, + 2497,3,362,181,0,2497,2504,5,105,0,0,2498,2505,3,414,207,0,2499, + 2500,5,278,0,0,2500,2501,5,2,0,0,2501,2502,3,414,207,0,2502,2503, + 5,3,0,0,2503,2505,1,0,0,0,2504,2498,1,0,0,0,2504,2499,1,0,0,0,2505, + 155,1,0,0,0,2506,2508,3,158,79,0,2507,2509,3,160,80,0,2508,2507, + 1,0,0,0,2508,2509,1,0,0,0,2509,2515,1,0,0,0,2510,2512,3,160,80,0, + 2511,2513,3,158,79,0,2512,2511,1,0,0,0,2512,2513,1,0,0,0,2513,2515, + 1,0,0,0,2514,2506,1,0,0,0,2514,2510,1,0,0,0,2515,157,1,0,0,0,2516, + 2517,5,80,0,0,2517,2518,5,369,0,0,2518,2519,3,162,81,0,2519,159, + 1,0,0,0,2520,2521,5,80,0,0,2521,2522,5,182,0,0,2522,2523,3,162,81, + 0,2523,161,1,0,0,0,2524,2525,5,269,0,0,2525,2534,5,132,0,0,2526, + 2534,5,315,0,0,2527,2534,5,150,0,0,2528,2529,5,333,0,0,2529,2531, + 7,25,0,0,2530,2532,3,148,74,0,2531,2530,1,0,0,0,2531,2532,1,0,0, + 0,2532,2534,1,0,0,0,2533,2524,1,0,0,0,2533,2526,1,0,0,0,2533,2527, + 1,0,0,0,2533,2528,1,0,0,0,2534,163,1,0,0,0,2535,2536,5,238,0,0,2536, + 2537,5,2,0,0,2537,2538,3,760,380,0,2538,2539,5,3,0,0,2539,165,1, + 0,0,0,2540,2541,5,285,0,0,2541,2542,5,147,0,0,2542,2543,3,818,409, + 0,2543,2544,5,2,0,0,2544,2549,3,168,84,0,2545,2546,5,6,0,0,2546, + 2548,3,168,84,0,2547,2545,1,0,0,0,2548,2551,1,0,0,0,2549,2547,1, + 0,0,0,2549,2550,1,0,0,0,2550,2552,1,0,0,0,2551,2549,1,0,0,0,2552, + 2553,5,3,0,0,2553,167,1,0,0,0,2554,2561,3,800,400,0,2555,2561,3, + 688,344,0,2556,2557,5,2,0,0,2557,2558,3,674,337,0,2558,2559,5,3, + 0,0,2559,2561,1,0,0,0,2560,2554,1,0,0,0,2560,2555,1,0,0,0,2560,2556, + 1,0,0,0,2561,2563,1,0,0,0,2562,2564,3,98,49,0,2563,2562,1,0,0,0, + 2563,2564,1,0,0,0,2564,2566,1,0,0,0,2565,2567,3,316,158,0,2566,2565, + 1,0,0,0,2566,2567,1,0,0,0,2567,169,1,0,0,0,2568,2569,5,100,0,0,2569, + 2570,3,818,409,0,2570,171,1,0,0,0,2571,2572,5,105,0,0,2572,2576, + 3,100,50,0,2573,2574,7,26,0,0,2574,2576,5,277,0,0,2575,2571,1,0, + 0,0,2575,2573,1,0,0,0,2576,173,1,0,0,0,2577,2578,5,80,0,0,2578,2584, + 5,161,0,0,2579,2585,5,191,0,0,2580,2581,5,182,0,0,2581,2585,5,320, + 0,0,2582,2583,5,292,0,0,2583,2585,5,320,0,0,2584,2579,1,0,0,0,2584, + 2580,1,0,0,0,2584,2582,1,0,0,0,2585,175,1,0,0,0,2586,2587,5,351, + 0,0,2587,2588,3,770,385,0,2588,177,1,0,0,0,2589,2590,5,100,0,0,2590, + 2591,5,226,0,0,2591,2592,3,176,88,0,2592,179,1,0,0,0,2593,2594,5, + 100,0,0,2594,2595,5,226,0,0,2595,2596,3,818,409,0,2596,181,1,0,0, + 0,2597,2598,5,46,0,0,2598,2603,5,342,0,0,2599,2601,3,294,147,0,2600, + 2599,1,0,0,0,2600,2601,1,0,0,0,2601,2602,1,0,0,0,2602,2604,3,316, + 158,0,2603,2600,1,0,0,0,2603,2604,1,0,0,0,2604,2606,1,0,0,0,2605, + 2607,3,144,72,0,2606,2605,1,0,0,0,2606,2607,1,0,0,0,2607,2608,1, + 0,0,0,2608,2618,5,80,0,0,2609,2614,3,732,366,0,2610,2611,5,6,0,0, + 2611,2613,3,732,366,0,2612,2610,1,0,0,0,2613,2616,1,0,0,0,2614,2612, + 1,0,0,0,2614,2615,1,0,0,0,2615,2619,1,0,0,0,2616,2614,1,0,0,0,2617, + 2619,3,730,365,0,2618,2609,1,0,0,0,2618,2617,1,0,0,0,2619,2620,1, + 0,0,0,2620,2621,3,610,305,0,2621,183,1,0,0,0,2622,2623,5,138,0,0, + 2623,2625,5,342,0,0,2624,2626,3,422,211,0,2625,2624,1,0,0,0,2625, + 2626,1,0,0,0,2626,2627,1,0,0,0,2627,2628,3,316,158,0,2628,2629,5, + 333,0,0,2629,2630,5,342,0,0,2630,2631,3,812,406,0,2631,185,1,0,0, + 0,2632,2634,5,46,0,0,2633,2635,3,122,61,0,2634,2633,1,0,0,0,2634, + 2635,1,0,0,0,2635,2636,1,0,0,0,2636,2638,5,92,0,0,2637,2639,3,294, + 147,0,2638,2637,1,0,0,0,2638,2639,1,0,0,0,2639,2640,1,0,0,0,2640, + 2641,3,188,94,0,2641,2642,5,36,0,0,2642,2644,3,560,280,0,2643,2645, + 3,190,95,0,2644,2643,1,0,0,0,2644,2645,1,0,0,0,2645,187,1,0,0,0, + 2646,2648,3,772,386,0,2647,2649,3,146,73,0,2648,2647,1,0,0,0,2648, + 2649,1,0,0,0,2649,2651,1,0,0,0,2650,2652,3,170,85,0,2651,2650,1, + 0,0,0,2651,2652,1,0,0,0,2652,2654,1,0,0,0,2653,2655,3,172,86,0,2654, + 2653,1,0,0,0,2654,2655,1,0,0,0,2655,2657,1,0,0,0,2656,2658,3,174, + 87,0,2657,2656,1,0,0,0,2657,2658,1,0,0,0,2658,2660,1,0,0,0,2659, + 2661,3,176,88,0,2660,2659,1,0,0,0,2660,2661,1,0,0,0,2661,189,1,0, + 0,0,2662,2666,5,105,0,0,2663,2667,5,174,0,0,2664,2665,5,269,0,0, + 2665,2667,5,174,0,0,2666,2663,1,0,0,0,2666,2664,1,0,0,0,2667,191, + 1,0,0,0,2668,2670,5,46,0,0,2669,2671,5,367,0,0,2670,2669,1,0,0,0, + 2670,2671,1,0,0,0,2671,2672,1,0,0,0,2672,2673,5,259,0,0,2673,2675, + 5,376,0,0,2674,2676,3,294,147,0,2675,2674,1,0,0,0,2675,2676,1,0, + 0,0,2676,2677,1,0,0,0,2677,2679,3,776,388,0,2678,2680,3,146,73,0, + 2679,2678,1,0,0,0,2679,2680,1,0,0,0,2680,2682,1,0,0,0,2681,2683, + 3,170,85,0,2682,2681,1,0,0,0,2682,2683,1,0,0,0,2683,2685,1,0,0,0, + 2684,2686,3,102,51,0,2685,2684,1,0,0,0,2685,2686,1,0,0,0,2686,2688, + 1,0,0,0,2687,2689,3,176,88,0,2688,2687,1,0,0,0,2688,2689,1,0,0,0, + 2689,2690,1,0,0,0,2690,2691,5,36,0,0,2691,2693,3,560,280,0,2692, + 2694,3,190,95,0,2693,2692,1,0,0,0,2693,2694,1,0,0,0,2694,193,1,0, + 0,0,2695,2696,5,305,0,0,2696,2697,5,259,0,0,2697,2699,5,376,0,0, + 2698,2700,5,109,0,0,2699,2698,1,0,0,0,2699,2700,1,0,0,0,2700,2701, + 1,0,0,0,2701,2703,3,778,389,0,2702,2704,3,190,95,0,2703,2702,1,0, + 0,0,2703,2704,1,0,0,0,2704,195,1,0,0,0,2705,2707,5,46,0,0,2706,2708, + 3,122,61,0,2707,2706,1,0,0,0,2707,2708,1,0,0,0,2708,2709,1,0,0,0, + 2709,2711,5,328,0,0,2710,2712,3,294,147,0,2711,2710,1,0,0,0,2711, + 2712,1,0,0,0,2712,2713,1,0,0,0,2713,2719,3,780,390,0,2714,2716,3, + 200,100,0,2715,2714,1,0,0,0,2716,2717,1,0,0,0,2717,2715,1,0,0,0, + 2717,2718,1,0,0,0,2718,2720,1,0,0,0,2719,2715,1,0,0,0,2719,2720, + 1,0,0,0,2720,197,1,0,0,0,2721,2722,5,138,0,0,2722,2724,5,328,0,0, + 2723,2725,3,422,211,0,2724,2723,1,0,0,0,2724,2725,1,0,0,0,2725,2726, + 1,0,0,0,2726,2728,3,780,390,0,2727,2729,3,200,100,0,2728,2727,1, + 0,0,0,2729,2730,1,0,0,0,2730,2728,1,0,0,0,2730,2731,1,0,0,0,2731, + 199,1,0,0,0,2732,2733,5,36,0,0,2733,2766,3,654,327,0,2734,2736,5, + 148,0,0,2735,2737,3,202,101,0,2736,2735,1,0,0,0,2736,2737,1,0,0, + 0,2737,2766,1,0,0,0,2738,2740,5,225,0,0,2739,2741,5,147,0,0,2740, + 2739,1,0,0,0,2740,2741,1,0,0,0,2741,2742,1,0,0,0,2742,2766,3,202, + 101,0,2743,2744,7,27,0,0,2744,2766,3,202,101,0,2745,2746,5,269,0, + 0,2746,2766,7,28,0,0,2747,2748,5,281,0,0,2748,2749,5,147,0,0,2749, + 2766,3,800,400,0,2750,2751,5,328,0,0,2751,2752,5,266,0,0,2752,2766, + 3,316,158,0,2753,2755,5,340,0,0,2754,2756,5,105,0,0,2755,2754,1, + 0,0,0,2755,2756,1,0,0,0,2756,2757,1,0,0,0,2757,2766,3,202,101,0, + 2758,2760,5,314,0,0,2759,2761,5,105,0,0,2760,2759,1,0,0,0,2760,2761, + 1,0,0,0,2761,2763,1,0,0,0,2762,2764,3,202,101,0,2763,2762,1,0,0, + 0,2763,2764,1,0,0,0,2764,2766,1,0,0,0,2765,2732,1,0,0,0,2765,2734, + 1,0,0,0,2765,2738,1,0,0,0,2765,2743,1,0,0,0,2765,2745,1,0,0,0,2765, + 2747,1,0,0,0,2765,2750,1,0,0,0,2765,2753,1,0,0,0,2765,2758,1,0,0, + 0,2766,201,1,0,0,0,2767,2769,7,29,0,0,2768,2767,1,0,0,0,2768,2769, + 1,0,0,0,2769,2770,1,0,0,0,2770,2773,5,573,0,0,2771,2773,3,812,406, + 0,2772,2768,1,0,0,0,2772,2771,1,0,0,0,2773,203,1,0,0,0,2774,2776, + 5,46,0,0,2775,2777,3,366,183,0,2776,2775,1,0,0,0,2776,2777,1,0,0, + 0,2777,2779,1,0,0,0,2778,2780,5,359,0,0,2779,2778,1,0,0,0,2779,2780, + 1,0,0,0,2780,2782,1,0,0,0,2781,2783,5,295,0,0,2782,2781,1,0,0,0, + 2782,2783,1,0,0,0,2783,2784,1,0,0,0,2784,2785,5,247,0,0,2785,2798, + 3,818,409,0,2786,2787,5,215,0,0,2787,2790,3,316,158,0,2788,2789, + 5,239,0,0,2789,2791,3,316,158,0,2790,2788,1,0,0,0,2790,2791,1,0, + 0,0,2791,2796,1,0,0,0,2792,2793,5,373,0,0,2793,2797,3,316,158,0, + 2794,2795,5,269,0,0,2795,2797,5,373,0,0,2796,2792,1,0,0,0,2796,2794, + 1,0,0,0,2796,2797,1,0,0,0,2797,2799,1,0,0,0,2798,2786,1,0,0,0,2798, + 2799,1,0,0,0,2799,205,1,0,0,0,2800,2801,5,46,0,0,2801,2804,3,176, + 88,0,2802,2803,5,282,0,0,2803,2805,3,814,407,0,2804,2802,1,0,0,0, + 2804,2805,1,0,0,0,2805,2806,1,0,0,0,2806,2807,5,255,0,0,2807,2809, + 3,808,404,0,2808,2810,3,102,51,0,2809,2808,1,0,0,0,2809,2810,1,0, + 0,0,2810,207,1,0,0,0,2811,2812,5,46,0,0,2812,2814,5,204,0,0,2813, + 2815,3,294,147,0,2814,2813,1,0,0,0,2814,2815,1,0,0,0,2815,2816,1, + 0,0,0,2816,2818,3,818,409,0,2817,2819,5,105,0,0,2818,2817,1,0,0, + 0,2818,2819,1,0,0,0,2819,2827,1,0,0,0,2820,2821,5,323,0,0,2821,2826, + 3,790,395,0,2822,2823,7,30,0,0,2823,2826,3,58,29,0,2824,2826,5,150, + 0,0,2825,2820,1,0,0,0,2825,2822,1,0,0,0,2825,2824,1,0,0,0,2826,2829, + 1,0,0,0,2827,2825,1,0,0,0,2827,2828,1,0,0,0,2828,209,1,0,0,0,2829, + 2827,1,0,0,0,2830,2831,5,138,0,0,2831,2832,5,204,0,0,2832,2833,3, + 818,409,0,2833,2838,5,369,0,0,2834,2835,5,94,0,0,2835,2837,3,58, + 29,0,2836,2834,1,0,0,0,2837,2840,1,0,0,0,2838,2836,1,0,0,0,2838, + 2839,1,0,0,0,2839,211,1,0,0,0,2840,2838,1,0,0,0,2841,2842,5,138, + 0,0,2842,2843,5,204,0,0,2843,2844,3,818,409,0,2844,2877,7,6,0,0, + 2845,2846,5,443,0,0,2846,2847,5,62,0,0,2847,2848,3,652,326,0,2848, + 2849,5,247,0,0,2849,2850,3,818,409,0,2850,2878,1,0,0,0,2851,2852, + 5,442,0,0,2852,2878,3,374,187,0,2853,2854,5,296,0,0,2854,2878,3, + 378,189,0,2855,2856,5,278,0,0,2856,2857,7,31,0,0,2857,2858,3,316, + 158,0,2858,2859,3,170,85,0,2859,2878,1,0,0,0,2860,2861,5,278,0,0, + 2861,2878,3,416,208,0,2862,2863,5,211,0,0,2863,2878,3,382,191,0, + 2864,2865,7,32,0,0,2865,2878,3,652,326,0,2866,2867,5,41,0,0,2867, + 2868,5,2,0,0,2868,2869,3,652,326,0,2869,2870,5,36,0,0,2870,2871, + 3,652,326,0,2871,2872,5,3,0,0,2872,2878,1,0,0,0,2873,2874,5,136, + 0,0,2874,2878,3,394,197,0,2875,2878,3,312,156,0,2876,2878,3,310, + 155,0,2877,2845,1,0,0,0,2877,2851,1,0,0,0,2877,2853,1,0,0,0,2877, + 2855,1,0,0,0,2877,2860,1,0,0,0,2877,2862,1,0,0,0,2877,2864,1,0,0, + 0,2877,2866,1,0,0,0,2877,2873,1,0,0,0,2877,2875,1,0,0,0,2877,2876, + 1,0,0,0,2878,213,1,0,0,0,2879,2880,5,46,0,0,2880,2881,5,63,0,0,2881, + 2882,5,174,0,0,2882,2883,5,381,0,0,2883,2889,3,818,409,0,2884,2886, + 3,216,108,0,2885,2884,1,0,0,0,2886,2887,1,0,0,0,2887,2885,1,0,0, + 0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2885,1,0,0,0,2889,2890, + 1,0,0,0,2890,2892,1,0,0,0,2891,2893,3,220,110,0,2892,2891,1,0,0, + 0,2892,2893,1,0,0,0,2893,215,1,0,0,0,2894,2896,7,33,0,0,2895,2897, + 3,316,158,0,2896,2895,1,0,0,0,2896,2897,1,0,0,0,2897,2901,1,0,0, + 0,2898,2899,5,269,0,0,2899,2901,7,33,0,0,2900,2894,1,0,0,0,2900, + 2898,1,0,0,0,2901,217,1,0,0,0,2902,2903,5,138,0,0,2903,2904,5,63, + 0,0,2904,2905,5,174,0,0,2905,2906,5,381,0,0,2906,2920,3,818,409, + 0,2907,2909,3,216,108,0,2908,2907,1,0,0,0,2909,2910,1,0,0,0,2910, + 2908,1,0,0,0,2910,2911,1,0,0,0,2911,2913,1,0,0,0,2912,2908,1,0,0, + 0,2912,2913,1,0,0,0,2913,2914,1,0,0,0,2914,2921,3,222,111,0,2915, + 2917,3,216,108,0,2916,2915,1,0,0,0,2917,2918,1,0,0,0,2918,2916,1, + 0,0,0,2918,2919,1,0,0,0,2919,2921,1,0,0,0,2920,2912,1,0,0,0,2920, + 2916,1,0,0,0,2921,219,1,0,0,0,2922,2923,5,280,0,0,2923,2924,5,2, + 0,0,2924,2929,3,226,113,0,2925,2926,5,6,0,0,2926,2928,3,226,113, + 0,2927,2925,1,0,0,0,2928,2931,1,0,0,0,2929,2927,1,0,0,0,2929,2930, + 1,0,0,0,2930,2932,1,0,0,0,2931,2929,1,0,0,0,2932,2933,5,3,0,0,2933, + 221,1,0,0,0,2934,2935,5,280,0,0,2935,2936,5,2,0,0,2936,2941,3,224, + 112,0,2937,2938,5,6,0,0,2938,2940,3,224,112,0,2939,2937,1,0,0,0, + 2940,2943,1,0,0,0,2941,2939,1,0,0,0,2941,2942,1,0,0,0,2942,2944, + 1,0,0,0,2943,2941,1,0,0,0,2944,2945,5,3,0,0,2945,223,1,0,0,0,2946, + 2947,7,34,0,0,2947,2948,3,226,113,0,2948,225,1,0,0,0,2949,2950,3, + 824,412,0,2950,2951,3,808,404,0,2951,227,1,0,0,0,2952,2953,5,46, + 0,0,2953,2955,5,331,0,0,2954,2956,3,294,147,0,2955,2954,1,0,0,0, + 2955,2956,1,0,0,0,2956,2957,1,0,0,0,2957,2960,3,818,409,0,2958,2959, + 5,360,0,0,2959,2961,3,808,404,0,2960,2958,1,0,0,0,2960,2961,1,0, + 0,0,2961,2963,1,0,0,0,2962,2964,3,230,115,0,2963,2962,1,0,0,0,2963, + 2964,1,0,0,0,2964,2965,1,0,0,0,2965,2966,5,63,0,0,2966,2967,5,174, + 0,0,2967,2968,5,381,0,0,2968,2970,3,818,409,0,2969,2971,3,220,110, + 0,2970,2969,1,0,0,0,2970,2971,1,0,0,0,2971,229,1,0,0,0,2972,2975, + 5,375,0,0,2973,2976,3,808,404,0,2974,2976,5,78,0,0,2975,2973,1,0, + 0,0,2975,2974,1,0,0,0,2976,231,1,0,0,0,2977,2978,5,138,0,0,2978, + 2979,5,331,0,0,2979,2985,3,818,409,0,2980,2986,3,222,111,0,2981, + 2983,3,230,115,0,2982,2984,3,222,111,0,2983,2982,1,0,0,0,2983,2984, + 1,0,0,0,2984,2986,1,0,0,0,2985,2980,1,0,0,0,2985,2981,1,0,0,0,2986, + 233,1,0,0,0,2987,2988,5,46,0,0,2988,2989,5,63,0,0,2989,2991,5,92, + 0,0,2990,2992,3,294,147,0,2991,2990,1,0,0,0,2991,2992,1,0,0,0,2992, + 2993,1,0,0,0,2993,2994,3,772,386,0,2994,2996,5,2,0,0,2995,2997,3, + 126,63,0,2996,2995,1,0,0,0,2996,2997,1,0,0,0,2997,2998,1,0,0,0,2998, + 3000,5,3,0,0,2999,3001,3,164,82,0,3000,2999,1,0,0,0,3000,3001,1, + 0,0,0,3001,3002,1,0,0,0,3002,3003,5,331,0,0,3003,3005,3,818,409, + 0,3004,3006,3,220,110,0,3005,3004,1,0,0,0,3005,3006,1,0,0,0,3006, + 3027,1,0,0,0,3007,3008,5,46,0,0,3008,3009,5,63,0,0,3009,3011,5,92, + 0,0,3010,3012,3,294,147,0,3011,3010,1,0,0,0,3011,3012,1,0,0,0,3012, + 3013,1,0,0,0,3013,3014,3,772,386,0,3014,3015,5,285,0,0,3015,3016, + 5,275,0,0,3016,3018,3,774,387,0,3017,3019,3,124,62,0,3018,3017,1, + 0,0,0,3018,3019,1,0,0,0,3019,3020,1,0,0,0,3020,3021,3,106,53,0,3021, + 3022,5,331,0,0,3022,3024,3,818,409,0,3023,3025,3,220,110,0,3024, + 3023,1,0,0,0,3024,3025,1,0,0,0,3025,3027,1,0,0,0,3026,2987,1,0,0, + 0,3026,3007,1,0,0,0,3027,235,1,0,0,0,3028,3029,5,444,0,0,3029,3030, + 5,63,0,0,3030,3031,5,323,0,0,3031,3041,3,790,395,0,3032,3033,5,74, + 0,0,3033,3036,5,94,0,0,3034,3036,5,59,0,0,3035,3032,1,0,0,0,3035, + 3034,1,0,0,0,3036,3037,1,0,0,0,3037,3038,5,2,0,0,3038,3039,3,628, + 314,0,3039,3040,5,3,0,0,3040,3042,1,0,0,0,3041,3035,1,0,0,0,3041, + 3042,1,0,0,0,3042,3043,1,0,0,0,3043,3044,5,64,0,0,3044,3045,5,331, + 0,0,3045,3046,3,818,409,0,3046,3047,5,71,0,0,3047,3049,3,818,409, + 0,3048,3050,3,220,110,0,3049,3048,1,0,0,0,3049,3050,1,0,0,0,3050, + 237,1,0,0,0,3051,3052,5,46,0,0,3052,3053,5,99,0,0,3053,3055,5,257, + 0,0,3054,3056,3,294,147,0,3055,3054,1,0,0,0,3055,3056,1,0,0,0,3056, + 3057,1,0,0,0,3057,3060,5,62,0,0,3058,3061,3,814,407,0,3059,3061, + 5,99,0,0,3060,3058,1,0,0,0,3060,3059,1,0,0,0,3061,3062,1,0,0,0,3062, + 3063,5,331,0,0,3063,3065,3,818,409,0,3064,3066,3,220,110,0,3065, + 3064,1,0,0,0,3065,3066,1,0,0,0,3066,239,1,0,0,0,3067,3068,5,138, + 0,0,3068,3069,5,99,0,0,3069,3070,5,257,0,0,3070,3073,5,62,0,0,3071, + 3074,3,814,407,0,3072,3074,5,99,0,0,3073,3071,1,0,0,0,3073,3072, + 1,0,0,0,3074,3075,1,0,0,0,3075,3076,5,331,0,0,3076,3077,3,818,409, + 0,3077,3078,3,222,111,0,3078,241,1,0,0,0,3079,3080,5,46,0,0,3080, + 3081,5,445,0,0,3081,3082,3,818,409,0,3082,3083,5,80,0,0,3083,3090, + 3,780,390,0,3084,3088,5,36,0,0,3085,3089,5,541,0,0,3086,3089,5,542, + 0,0,3087,3089,3,826,413,0,3088,3085,1,0,0,0,3088,3086,1,0,0,0,3088, + 3087,1,0,0,0,3089,3091,1,0,0,0,3090,3084,1,0,0,0,3090,3091,1,0,0, + 0,3091,3094,1,0,0,0,3092,3093,5,62,0,0,3093,3095,7,35,0,0,3094,3092, + 1,0,0,0,3094,3095,1,0,0,0,3095,3098,1,0,0,0,3096,3097,5,94,0,0,3097, + 3099,3,816,408,0,3098,3096,1,0,0,0,3098,3099,1,0,0,0,3099,3101,1, + 0,0,0,3100,3102,3,250,125,0,3101,3100,1,0,0,0,3101,3102,1,0,0,0, + 3102,3104,1,0,0,0,3103,3105,3,252,126,0,3104,3103,1,0,0,0,3104,3105, + 1,0,0,0,3105,243,1,0,0,0,3106,3107,5,138,0,0,3107,3108,5,445,0,0, + 3108,3109,3,818,409,0,3109,3110,5,80,0,0,3110,3113,3,780,390,0,3111, + 3112,5,94,0,0,3112,3114,3,816,408,0,3113,3111,1,0,0,0,3113,3114, + 1,0,0,0,3114,3116,1,0,0,0,3115,3117,3,250,125,0,3116,3115,1,0,0, + 0,3116,3117,1,0,0,0,3117,3119,1,0,0,0,3118,3120,3,252,126,0,3119, + 3118,1,0,0,0,3119,3120,1,0,0,0,3120,245,1,0,0,0,3121,3122,5,138, + 0,0,3122,3123,5,296,0,0,3123,3125,3,796,398,0,3124,3126,3,368,184, + 0,3125,3124,1,0,0,0,3125,3126,1,0,0,0,3126,3153,1,0,0,0,3127,3131, + 3,248,124,0,3128,3130,3,248,124,0,3129,3128,1,0,0,0,3130,3133,1, + 0,0,0,3131,3129,1,0,0,0,3131,3132,1,0,0,0,3132,3135,1,0,0,0,3133, + 3131,1,0,0,0,3134,3136,5,315,0,0,3135,3134,1,0,0,0,3135,3136,1,0, + 0,0,3136,3154,1,0,0,0,3137,3138,5,309,0,0,3138,3139,5,94,0,0,3139, + 3154,3,798,399,0,3140,3141,5,282,0,0,3141,3142,5,94,0,0,3142,3154, + 3,814,407,0,3143,3144,5,333,0,0,3144,3145,5,323,0,0,3145,3154,3, + 32,16,0,3146,3148,5,269,0,0,3147,3146,1,0,0,0,3147,3148,1,0,0,0, + 3148,3149,1,0,0,0,3149,3150,5,462,0,0,3150,3151,5,80,0,0,3151,3152, + 5,204,0,0,3152,3154,3,818,409,0,3153,3127,1,0,0,0,3153,3137,1,0, + 0,0,3153,3140,1,0,0,0,3153,3143,1,0,0,0,3153,3147,1,0,0,0,3154,247, + 1,0,0,0,3155,3157,5,205,0,0,3156,3155,1,0,0,0,3156,3157,1,0,0,0, + 3157,3158,1,0,0,0,3158,3159,5,327,0,0,3159,3166,5,243,0,0,3160,3162, + 5,205,0,0,3161,3160,1,0,0,0,3161,3162,1,0,0,0,3162,3163,1,0,0,0, + 3163,3164,5,327,0,0,3164,3166,5,181,0,0,3165,3156,1,0,0,0,3165,3161, + 1,0,0,0,3166,3185,1,0,0,0,3167,3168,5,333,0,0,3168,3169,3,818,409, + 0,3169,3172,7,36,0,0,3170,3173,3,818,409,0,3171,3173,5,53,0,0,3172, + 3170,1,0,0,0,3172,3171,1,0,0,0,3173,3185,1,0,0,0,3174,3175,5,333, + 0,0,3175,3176,3,818,409,0,3176,3177,5,64,0,0,3177,3178,5,434,0,0, + 3178,3185,1,0,0,0,3179,3182,5,313,0,0,3180,3183,3,818,409,0,3181, + 3183,5,30,0,0,3182,3180,1,0,0,0,3182,3181,1,0,0,0,3183,3185,1,0, + 0,0,3184,3165,1,0,0,0,3184,3167,1,0,0,0,3184,3174,1,0,0,0,3184,3179, + 1,0,0,0,3185,249,1,0,0,0,3186,3187,5,100,0,0,3187,3188,5,2,0,0,3188, + 3189,3,674,337,0,3189,3190,5,3,0,0,3190,251,1,0,0,0,3191,3192,5, + 105,0,0,3192,3193,5,42,0,0,3193,3194,5,2,0,0,3194,3195,3,674,337, + 0,3195,3196,5,3,0,0,3196,253,1,0,0,0,3197,3198,5,46,0,0,3198,3199, + 5,131,0,0,3199,3200,5,446,0,0,3200,3201,3,818,409,0,3201,3202,5, + 360,0,0,3202,3203,7,37,0,0,3203,3204,5,215,0,0,3204,3205,3,316,158, + 0,3205,255,1,0,0,0,3206,3208,5,46,0,0,3207,3209,3,366,183,0,3208, + 3207,1,0,0,0,3208,3209,1,0,0,0,3209,3210,1,0,0,0,3210,3211,5,357, + 0,0,3211,3212,3,818,409,0,3212,3213,3,258,129,0,3213,3214,3,260, + 130,0,3214,3215,5,80,0,0,3215,3227,3,774,387,0,3216,3223,5,447,0, + 0,3217,3218,7,38,0,0,3218,3220,7,39,0,0,3219,3221,5,36,0,0,3220, + 3219,1,0,0,0,3220,3221,1,0,0,0,3221,3222,1,0,0,0,3222,3224,3,818, + 409,0,3223,3217,1,0,0,0,3224,3225,1,0,0,0,3225,3223,1,0,0,0,3225, + 3226,1,0,0,0,3226,3228,1,0,0,0,3227,3216,1,0,0,0,3227,3228,1,0,0, + 0,3228,3234,1,0,0,0,3229,3231,5,62,0,0,3230,3232,5,192,0,0,3231, + 3230,1,0,0,0,3231,3232,1,0,0,0,3232,3233,1,0,0,0,3233,3235,7,40, + 0,0,3234,3229,1,0,0,0,3234,3235,1,0,0,0,3235,3237,1,0,0,0,3236,3238, + 3,264,132,0,3237,3236,1,0,0,0,3237,3238,1,0,0,0,3238,3239,1,0,0, + 0,3239,3240,5,202,0,0,3240,3241,3,266,133,0,3241,3242,5,2,0,0,3242, + 3243,3,268,134,0,3243,3244,5,3,0,0,3244,3285,1,0,0,0,3245,3247,5, + 46,0,0,3246,3248,3,366,183,0,3247,3246,1,0,0,0,3247,3248,1,0,0,0, + 3248,3250,1,0,0,0,3249,3251,5,45,0,0,3250,3249,1,0,0,0,3250,3251, + 1,0,0,0,3251,3252,1,0,0,0,3252,3253,5,357,0,0,3253,3254,3,818,409, + 0,3254,3255,3,258,129,0,3255,3256,3,260,130,0,3256,3257,5,80,0,0, + 3257,3260,3,774,387,0,3258,3259,5,64,0,0,3259,3261,3,780,390,0,3260, + 3258,1,0,0,0,3260,3261,1,0,0,0,3261,3265,1,0,0,0,3262,3264,3,272, + 136,0,3263,3262,1,0,0,0,3264,3267,1,0,0,0,3265,3263,1,0,0,0,3265, + 3266,1,0,0,0,3266,3273,1,0,0,0,3267,3265,1,0,0,0,3268,3270,5,62, + 0,0,3269,3271,5,192,0,0,3270,3269,1,0,0,0,3270,3271,1,0,0,0,3271, + 3272,1,0,0,0,3272,3274,7,40,0,0,3273,3268,1,0,0,0,3273,3274,1,0, + 0,0,3274,3276,1,0,0,0,3275,3277,3,264,132,0,3276,3275,1,0,0,0,3276, + 3277,1,0,0,0,3277,3278,1,0,0,0,3278,3279,5,202,0,0,3279,3280,3,266, + 133,0,3280,3281,5,2,0,0,3281,3282,3,268,134,0,3282,3283,5,3,0,0, + 3283,3285,1,0,0,0,3284,3206,1,0,0,0,3284,3245,1,0,0,0,3285,257,1, + 0,0,0,3286,3291,5,145,0,0,3287,3291,5,135,0,0,3288,3289,5,242,0, + 0,3289,3291,5,275,0,0,3290,3286,1,0,0,0,3290,3287,1,0,0,0,3290,3288, + 1,0,0,0,3291,259,1,0,0,0,3292,3297,3,262,131,0,3293,3294,5,82,0, + 0,3294,3296,3,262,131,0,3295,3293,1,0,0,0,3296,3299,1,0,0,0,3297, + 3295,1,0,0,0,3297,3298,1,0,0,0,3298,261,1,0,0,0,3299,3297,1,0,0, + 0,3300,3309,5,241,0,0,3301,3309,5,182,0,0,3302,3305,5,369,0,0,3303, + 3304,5,275,0,0,3304,3306,3,148,74,0,3305,3303,1,0,0,0,3305,3306, + 1,0,0,0,3306,3309,1,0,0,0,3307,3309,5,358,0,0,3308,3300,1,0,0,0, + 3308,3301,1,0,0,0,3308,3302,1,0,0,0,3308,3307,1,0,0,0,3309,263,1, + 0,0,0,3310,3311,5,102,0,0,3311,3312,5,2,0,0,3312,3313,3,674,337, + 0,3313,3314,5,3,0,0,3314,265,1,0,0,0,3315,3316,5,211,0,0,3316,3320, + 3,806,403,0,3317,3318,5,296,0,0,3318,3320,3,796,398,0,3319,3315, + 1,0,0,0,3319,3317,1,0,0,0,3320,267,1,0,0,0,3321,3324,3,270,135,0, + 3322,3324,1,0,0,0,3323,3321,1,0,0,0,3323,3322,1,0,0,0,3324,3329, + 1,0,0,0,3325,3326,5,6,0,0,3326,3328,3,270,135,0,3327,3325,1,0,0, + 0,3328,3331,1,0,0,0,3329,3327,1,0,0,0,3329,3330,1,0,0,0,3330,269, + 1,0,0,0,3331,3329,1,0,0,0,3332,3337,5,571,0,0,3333,3337,5,573,0, + 0,3334,3337,3,808,404,0,3335,3337,3,824,412,0,3336,3332,1,0,0,0, + 3336,3333,1,0,0,0,3336,3334,1,0,0,0,3336,3335,1,0,0,0,3337,271,1, + 0,0,0,3338,3340,5,77,0,0,3339,3338,1,0,0,0,3339,3340,1,0,0,0,3340, + 3341,1,0,0,0,3341,3349,5,54,0,0,3342,3343,5,69,0,0,3343,3349,7,9, + 0,0,3344,3345,5,77,0,0,3345,3349,5,371,0,0,3346,3347,5,269,0,0,3347, + 3349,5,228,0,0,3348,3339,1,0,0,0,3348,3342,1,0,0,0,3348,3344,1,0, + 0,0,3348,3346,1,0,0,0,3349,273,1,0,0,0,3350,3351,5,46,0,0,3351,3352, + 5,198,0,0,3352,3353,5,357,0,0,3353,3354,3,818,409,0,3354,3355,5, + 80,0,0,3355,3365,3,824,412,0,3356,3357,5,102,0,0,3357,3362,3,276, + 138,0,3358,3359,5,33,0,0,3359,3361,3,276,138,0,3360,3358,1,0,0,0, + 3361,3364,1,0,0,0,3362,3360,1,0,0,0,3362,3363,1,0,0,0,3363,3366, + 1,0,0,0,3364,3362,1,0,0,0,3365,3356,1,0,0,0,3365,3366,1,0,0,0,3366, + 3367,1,0,0,0,3367,3368,5,202,0,0,3368,3369,3,266,133,0,3369,3370, + 5,2,0,0,3370,3371,5,3,0,0,3371,275,1,0,0,0,3372,3373,3,818,409,0, + 3373,3374,5,68,0,0,3374,3375,5,2,0,0,3375,3379,3,808,404,0,3376, + 3378,3,462,231,0,3377,3376,1,0,0,0,3378,3381,1,0,0,0,3379,3377,1, + 0,0,0,3379,3380,1,0,0,0,3380,3382,1,0,0,0,3381,3379,1,0,0,0,3382, + 3383,5,3,0,0,3383,277,1,0,0,0,3384,3385,5,138,0,0,3385,3386,5,198, + 0,0,3386,3387,5,357,0,0,3387,3393,3,818,409,0,3388,3390,5,193,0, + 0,3389,3391,7,14,0,0,3390,3389,1,0,0,0,3390,3391,1,0,0,0,3391,3394, + 1,0,0,0,3392,3394,5,186,0,0,3393,3388,1,0,0,0,3393,3392,1,0,0,0, + 3394,279,1,0,0,0,3395,3396,5,46,0,0,3396,3397,5,140,0,0,3397,3398, + 3,316,158,0,3398,3399,5,42,0,0,3399,3400,5,2,0,0,3400,3401,3,674, + 337,0,3401,3405,5,3,0,0,3402,3404,3,272,136,0,3403,3402,1,0,0,0, + 3404,3407,1,0,0,0,3405,3403,1,0,0,0,3405,3406,1,0,0,0,3406,281,1, + 0,0,0,3407,3405,1,0,0,0,3408,3410,5,46,0,0,3409,3411,3,366,183,0, + 3410,3409,1,0,0,0,3410,3411,1,0,0,0,3411,3412,1,0,0,0,3412,3413, + 5,136,0,0,3413,3428,3,806,403,0,3414,3415,3,392,196,0,3415,3416, + 3,284,142,0,3416,3429,1,0,0,0,3417,3418,5,2,0,0,3418,3423,3,290, + 145,0,3419,3420,5,6,0,0,3420,3422,3,290,145,0,3421,3419,1,0,0,0, + 3422,3425,1,0,0,0,3423,3421,1,0,0,0,3423,3424,1,0,0,0,3424,3426, + 1,0,0,0,3425,3423,1,0,0,0,3426,3427,5,3,0,0,3427,3429,1,0,0,0,3428, + 3414,1,0,0,0,3428,3417,1,0,0,0,3429,3487,1,0,0,0,3430,3431,5,46, + 0,0,3431,3432,5,278,0,0,3432,3433,3,414,207,0,3433,3434,3,284,142, + 0,3434,3487,1,0,0,0,3435,3436,5,46,0,0,3436,3437,5,360,0,0,3437, + 3438,3,316,158,0,3438,3456,5,36,0,0,3439,3441,5,2,0,0,3440,3442, + 3,642,321,0,3441,3440,1,0,0,0,3441,3442,1,0,0,0,3442,3443,1,0,0, + 0,3443,3457,5,3,0,0,3444,3445,5,196,0,0,3445,3453,5,2,0,0,3446,3450, + 3,808,404,0,3447,3449,3,462,231,0,3448,3447,1,0,0,0,3449,3452,1, + 0,0,0,3450,3448,1,0,0,0,3450,3451,1,0,0,0,3451,3454,1,0,0,0,3452, + 3450,1,0,0,0,3453,3446,1,0,0,0,3453,3454,1,0,0,0,3454,3455,1,0,0, + 0,3455,3457,5,3,0,0,3456,3439,1,0,0,0,3456,3444,1,0,0,0,3457,3487, + 1,0,0,0,3458,3459,5,46,0,0,3459,3460,5,360,0,0,3460,3466,3,316,158, + 0,3461,3462,5,36,0,0,3462,3464,5,299,0,0,3463,3461,1,0,0,0,3463, + 3464,1,0,0,0,3464,3465,1,0,0,0,3465,3467,3,284,142,0,3466,3463,1, + 0,0,0,3466,3467,1,0,0,0,3467,3487,1,0,0,0,3468,3469,5,46,0,0,3469, + 3470,5,355,0,0,3470,3471,5,325,0,0,3471,3472,7,41,0,0,3472,3473, + 3,316,158,0,3473,3474,3,284,142,0,3474,3487,1,0,0,0,3475,3476,5, + 46,0,0,3476,3478,5,108,0,0,3477,3479,3,294,147,0,3478,3477,1,0,0, + 0,3478,3479,1,0,0,0,3479,3480,1,0,0,0,3480,3484,3,316,158,0,3481, + 3485,3,284,142,0,3482,3483,5,64,0,0,3483,3485,3,316,158,0,3484,3481, + 1,0,0,0,3484,3482,1,0,0,0,3485,3487,1,0,0,0,3486,3408,1,0,0,0,3486, + 3430,1,0,0,0,3486,3435,1,0,0,0,3486,3458,1,0,0,0,3486,3468,1,0,0, + 0,3486,3475,1,0,0,0,3487,283,1,0,0,0,3488,3489,5,2,0,0,3489,3494, + 3,286,143,0,3490,3491,5,6,0,0,3491,3493,3,286,143,0,3492,3490,1, + 0,0,0,3493,3496,1,0,0,0,3494,3492,1,0,0,0,3494,3495,1,0,0,0,3495, + 3497,1,0,0,0,3496,3494,1,0,0,0,3497,3498,5,3,0,0,3498,285,1,0,0, + 0,3499,3502,3,824,412,0,3500,3501,5,10,0,0,3501,3503,3,288,144,0, + 3502,3500,1,0,0,0,3502,3503,1,0,0,0,3503,287,1,0,0,0,3504,3511,3, + 388,194,0,3505,3511,3,834,417,0,3506,3511,3,726,363,0,3507,3511, + 3,202,101,0,3508,3511,3,808,404,0,3509,3511,5,407,0,0,3510,3504, + 1,0,0,0,3510,3505,1,0,0,0,3510,3506,1,0,0,0,3510,3507,1,0,0,0,3510, + 3508,1,0,0,0,3510,3509,1,0,0,0,3511,289,1,0,0,0,3512,3513,3,826, + 413,0,3513,3514,5,10,0,0,3514,3515,3,288,144,0,3515,291,1,0,0,0, + 3516,3517,5,138,0,0,3517,3518,5,360,0,0,3518,3519,3,316,158,0,3519, + 3520,5,133,0,0,3520,3522,5,450,0,0,3521,3523,3,294,147,0,3522,3521, + 1,0,0,0,3522,3523,1,0,0,0,3523,3524,1,0,0,0,3524,3527,3,808,404, + 0,3525,3526,7,42,0,0,3526,3528,3,808,404,0,3527,3525,1,0,0,0,3527, + 3528,1,0,0,0,3528,3539,1,0,0,0,3529,3530,5,138,0,0,3530,3531,5,360, + 0,0,3531,3532,3,316,158,0,3532,3533,5,309,0,0,3533,3534,5,450,0, + 0,3534,3535,3,808,404,0,3535,3536,5,94,0,0,3536,3537,3,808,404,0, + 3537,3539,1,0,0,0,3538,3516,1,0,0,0,3538,3529,1,0,0,0,3539,293,1, + 0,0,0,3540,3541,5,220,0,0,3541,3542,5,77,0,0,3542,3543,5,396,0,0, + 3543,295,1,0,0,0,3544,3545,5,46,0,0,3545,3546,5,278,0,0,3546,3547, + 5,156,0,0,3547,3549,3,316,158,0,3548,3550,5,53,0,0,3549,3548,1,0, + 0,0,3549,3550,1,0,0,0,3550,3551,1,0,0,0,3551,3552,5,62,0,0,3552, + 3553,5,360,0,0,3553,3554,3,652,326,0,3554,3557,3,170,85,0,3555,3556, + 5,206,0,0,3556,3558,3,316,158,0,3557,3555,1,0,0,0,3557,3558,1,0, + 0,0,3558,3559,1,0,0,0,3559,3560,5,36,0,0,3560,3565,3,298,149,0,3561, + 3562,5,6,0,0,3562,3564,3,298,149,0,3563,3561,1,0,0,0,3564,3567,1, + 0,0,0,3565,3563,1,0,0,0,3565,3566,1,0,0,0,3566,297,1,0,0,0,3567, + 3565,1,0,0,0,3568,3569,5,278,0,0,3569,3570,5,571,0,0,3570,3572,3, + 414,207,0,3571,3573,3,412,206,0,3572,3571,1,0,0,0,3572,3573,1,0, + 0,0,3573,3581,1,0,0,0,3574,3579,5,62,0,0,3575,3580,5,325,0,0,3576, + 3577,5,83,0,0,3577,3578,5,147,0,0,3578,3580,3,316,158,0,3579,3575, + 1,0,0,0,3579,3576,1,0,0,0,3580,3582,1,0,0,0,3581,3574,1,0,0,0,3581, + 3582,1,0,0,0,3582,3584,1,0,0,0,3583,3585,5,302,0,0,3584,3583,1,0, + 0,0,3584,3585,1,0,0,0,3585,3595,1,0,0,0,3586,3587,5,211,0,0,3587, + 3589,5,571,0,0,3588,3590,3,528,264,0,3589,3588,1,0,0,0,3589,3590, + 1,0,0,0,3590,3591,1,0,0,0,3591,3595,3,382,191,0,3592,3593,5,345, + 0,0,3593,3595,3,652,326,0,3594,3568,1,0,0,0,3594,3586,1,0,0,0,3594, + 3592,1,0,0,0,3595,299,1,0,0,0,3596,3597,5,46,0,0,3597,3598,5,278, + 0,0,3598,3599,5,206,0,0,3599,3600,3,316,158,0,3600,3601,3,170,85, + 0,3601,301,1,0,0,0,3602,3603,5,138,0,0,3603,3604,5,278,0,0,3604, + 3605,5,206,0,0,3605,3606,3,316,158,0,3606,3625,3,170,85,0,3607,3608, + 5,133,0,0,3608,3613,3,298,149,0,3609,3610,5,6,0,0,3610,3612,3,298, + 149,0,3611,3609,1,0,0,0,3612,3615,1,0,0,0,3613,3611,1,0,0,0,3613, + 3614,1,0,0,0,3614,3626,1,0,0,0,3615,3613,1,0,0,0,3616,3617,5,191, + 0,0,3617,3622,3,304,152,0,3618,3619,5,6,0,0,3619,3621,3,304,152, + 0,3620,3618,1,0,0,0,3621,3624,1,0,0,0,3622,3620,1,0,0,0,3622,3623, + 1,0,0,0,3623,3626,1,0,0,0,3624,3622,1,0,0,0,3625,3607,1,0,0,0,3625, + 3616,1,0,0,0,3626,303,1,0,0,0,3627,3628,7,43,0,0,3628,3629,5,571, + 0,0,3629,3630,3,528,264,0,3630,305,1,0,0,0,3631,3632,5,301,0,0,3632, + 3633,5,281,0,0,3633,3634,5,147,0,0,3634,3635,3,816,408,0,3635,3636, + 5,94,0,0,3636,3637,3,814,407,0,3637,307,1,0,0,0,3638,3661,5,191, + 0,0,3639,3662,5,328,0,0,3640,3662,5,226,0,0,3641,3662,5,108,0,0, + 3642,3662,5,168,0,0,3643,3662,5,342,0,0,3644,3662,5,452,0,0,3645, + 3662,5,331,0,0,3646,3647,5,131,0,0,3647,3662,5,446,0,0,3648,3649, + 5,198,0,0,3649,3662,5,357,0,0,3650,3662,5,204,0,0,3651,3653,5,295, + 0,0,3652,3651,1,0,0,0,3652,3653,1,0,0,0,3653,3654,1,0,0,0,3654,3662, + 5,247,0,0,3655,3656,5,63,0,0,3656,3657,5,174,0,0,3657,3662,5,381, + 0,0,3658,3659,5,355,0,0,3659,3660,5,325,0,0,3660,3662,7,41,0,0,3661, + 3639,1,0,0,0,3661,3640,1,0,0,0,3661,3641,1,0,0,0,3661,3642,1,0,0, + 0,3661,3643,1,0,0,0,3661,3644,1,0,0,0,3661,3645,1,0,0,0,3661,3646, + 1,0,0,0,3661,3648,1,0,0,0,3661,3650,1,0,0,0,3661,3652,1,0,0,0,3661, + 3655,1,0,0,0,3661,3658,1,0,0,0,3662,3664,1,0,0,0,3663,3665,3,422, + 211,0,3664,3663,1,0,0,0,3664,3665,1,0,0,0,3665,3666,1,0,0,0,3666, + 3668,3,784,392,0,3667,3669,3,96,48,0,3668,3667,1,0,0,0,3668,3669, + 1,0,0,0,3669,3846,1,0,0,0,3670,3672,5,191,0,0,3671,3673,5,259,0, + 0,3672,3671,1,0,0,0,3672,3673,1,0,0,0,3673,3674,1,0,0,0,3674,3676, + 5,376,0,0,3675,3677,3,422,211,0,3676,3675,1,0,0,0,3676,3677,1,0, + 0,0,3677,3678,1,0,0,0,3678,3683,3,778,389,0,3679,3680,5,6,0,0,3680, + 3682,3,778,389,0,3681,3679,1,0,0,0,3682,3685,1,0,0,0,3683,3681,1, + 0,0,0,3683,3684,1,0,0,0,3684,3687,1,0,0,0,3685,3683,1,0,0,0,3686, + 3688,3,96,48,0,3687,3686,1,0,0,0,3687,3688,1,0,0,0,3688,3846,1,0, + 0,0,3689,3691,5,191,0,0,3690,3692,5,63,0,0,3691,3690,1,0,0,0,3691, + 3692,1,0,0,0,3692,3693,1,0,0,0,3693,3695,5,92,0,0,3694,3696,3,422, + 211,0,3695,3694,1,0,0,0,3695,3696,1,0,0,0,3696,3697,1,0,0,0,3697, + 3699,3,762,381,0,3698,3700,3,96,48,0,3699,3698,1,0,0,0,3699,3700, + 1,0,0,0,3700,3846,1,0,0,0,3701,3702,5,191,0,0,3702,3704,5,323,0, + 0,3703,3705,3,422,211,0,3704,3703,1,0,0,0,3704,3705,1,0,0,0,3705, + 3706,1,0,0,0,3706,3708,3,764,382,0,3707,3709,3,96,48,0,3708,3707, + 1,0,0,0,3708,3709,1,0,0,0,3709,3846,1,0,0,0,3710,3711,5,191,0,0, + 3711,3713,7,44,0,0,3712,3714,3,422,211,0,3713,3712,1,0,0,0,3713, + 3714,1,0,0,0,3714,3715,1,0,0,0,3715,3716,3,818,409,0,3716,3717,5, + 80,0,0,3717,3719,3,316,158,0,3718,3720,3,96,48,0,3719,3718,1,0,0, + 0,3719,3720,1,0,0,0,3720,3846,1,0,0,0,3721,3722,5,191,0,0,3722,3724, + 7,32,0,0,3723,3725,3,422,211,0,3724,3723,1,0,0,0,3724,3725,1,0,0, + 0,3725,3726,1,0,0,0,3726,3731,3,652,326,0,3727,3728,5,6,0,0,3728, + 3730,3,652,326,0,3729,3727,1,0,0,0,3730,3733,1,0,0,0,3731,3729,1, + 0,0,0,3731,3732,1,0,0,0,3732,3735,1,0,0,0,3733,3731,1,0,0,0,3734, + 3736,3,96,48,0,3735,3734,1,0,0,0,3735,3736,1,0,0,0,3736,3846,1,0, + 0,0,3737,3738,5,191,0,0,3738,3739,5,226,0,0,3739,3741,5,109,0,0, + 3740,3742,3,422,211,0,3741,3740,1,0,0,0,3741,3742,1,0,0,0,3742,3743, + 1,0,0,0,3743,3745,3,314,157,0,3744,3746,3,96,48,0,3745,3744,1,0, + 0,0,3745,3746,1,0,0,0,3746,3846,1,0,0,0,3747,3748,5,191,0,0,3748, + 3750,5,41,0,0,3749,3751,3,422,211,0,3750,3749,1,0,0,0,3750,3751, + 1,0,0,0,3751,3752,1,0,0,0,3752,3753,5,2,0,0,3753,3754,3,652,326, + 0,3754,3755,5,36,0,0,3755,3756,3,652,326,0,3756,3758,5,3,0,0,3757, + 3759,3,96,48,0,3758,3757,1,0,0,0,3758,3759,1,0,0,0,3759,3846,1,0, + 0,0,3760,3761,5,191,0,0,3761,3762,5,278,0,0,3762,3764,7,31,0,0,3763, + 3765,3,422,211,0,3764,3763,1,0,0,0,3764,3765,1,0,0,0,3765,3766,1, + 0,0,0,3766,3767,3,316,158,0,3767,3769,3,170,85,0,3768,3770,3,96, + 48,0,3769,3768,1,0,0,0,3769,3770,1,0,0,0,3770,3846,1,0,0,0,3771, + 3772,5,191,0,0,3772,3773,5,281,0,0,3773,3774,5,147,0,0,3774,3776, + 3,816,408,0,3775,3777,3,96,48,0,3776,3775,1,0,0,0,3776,3777,1,0, + 0,0,3777,3846,1,0,0,0,3778,3779,5,191,0,0,3779,3781,5,451,0,0,3780, + 3782,3,422,211,0,3781,3780,1,0,0,0,3781,3782,1,0,0,0,3782,3783,1, + 0,0,0,3783,3785,3,818,409,0,3784,3786,3,96,48,0,3785,3784,1,0,0, + 0,3785,3786,1,0,0,0,3786,3846,1,0,0,0,3787,3788,5,191,0,0,3788,3790, + 5,351,0,0,3789,3791,3,422,211,0,3790,3789,1,0,0,0,3790,3791,1,0, + 0,0,3791,3792,1,0,0,0,3792,3846,3,770,385,0,3793,3794,5,191,0,0, + 3794,3796,5,443,0,0,3795,3797,3,422,211,0,3796,3795,1,0,0,0,3796, + 3797,1,0,0,0,3797,3798,1,0,0,0,3798,3799,5,62,0,0,3799,3800,3,652, + 326,0,3800,3801,5,247,0,0,3801,3803,3,818,409,0,3802,3804,3,96,48, + 0,3803,3802,1,0,0,0,3803,3804,1,0,0,0,3804,3846,1,0,0,0,3805,3806, + 5,191,0,0,3806,3808,7,45,0,0,3807,3809,3,422,211,0,3808,3807,1,0, + 0,0,3808,3809,1,0,0,0,3809,3810,1,0,0,0,3810,3846,3,816,408,0,3811, + 3812,5,191,0,0,3812,3813,5,99,0,0,3813,3815,5,257,0,0,3814,3816, + 3,422,211,0,3815,3814,1,0,0,0,3815,3816,1,0,0,0,3816,3817,1,0,0, + 0,3817,3820,5,62,0,0,3818,3821,3,814,407,0,3819,3821,5,99,0,0,3820, + 3818,1,0,0,0,3820,3819,1,0,0,0,3821,3822,1,0,0,0,3822,3823,5,331, + 0,0,3823,3846,3,818,409,0,3824,3825,5,191,0,0,3825,3827,5,175,0, + 0,3826,3828,3,422,211,0,3827,3826,1,0,0,0,3827,3828,1,0,0,0,3828, + 3829,1,0,0,0,3829,3843,3,788,394,0,3830,3832,5,105,0,0,3831,3830, + 1,0,0,0,3831,3832,1,0,0,0,3832,3833,1,0,0,0,3833,3834,5,2,0,0,3834, + 3839,5,209,0,0,3835,3836,5,6,0,0,3836,3838,5,209,0,0,3837,3835,1, + 0,0,0,3838,3841,1,0,0,0,3839,3837,1,0,0,0,3839,3840,1,0,0,0,3840, + 3842,1,0,0,0,3841,3839,1,0,0,0,3842,3844,5,3,0,0,3843,3831,1,0,0, + 0,3843,3844,1,0,0,0,3844,3846,1,0,0,0,3845,3638,1,0,0,0,3845,3670, + 1,0,0,0,3845,3689,1,0,0,0,3845,3701,1,0,0,0,3845,3710,1,0,0,0,3845, + 3721,1,0,0,0,3845,3737,1,0,0,0,3845,3747,1,0,0,0,3845,3760,1,0,0, + 0,3845,3771,1,0,0,0,3845,3778,1,0,0,0,3845,3787,1,0,0,0,3845,3793, + 1,0,0,0,3845,3805,1,0,0,0,3845,3811,1,0,0,0,3845,3824,1,0,0,0,3846, + 309,1,0,0,0,3847,3849,5,63,0,0,3848,3847,1,0,0,0,3848,3849,1,0,0, + 0,3849,3850,1,0,0,0,3850,3851,5,92,0,0,3851,3864,3,774,387,0,3852, + 3854,5,259,0,0,3853,3852,1,0,0,0,3853,3854,1,0,0,0,3854,3855,1,0, + 0,0,3855,3856,5,376,0,0,3856,3864,3,778,389,0,3857,3858,7,46,0,0, + 3858,3864,3,316,158,0,3859,3860,5,355,0,0,3860,3861,5,325,0,0,3861, + 3862,7,41,0,0,3862,3864,3,316,158,0,3863,3848,1,0,0,0,3863,3853, + 1,0,0,0,3863,3857,1,0,0,0,3863,3859,1,0,0,0,3864,311,1,0,0,0,3865, + 3866,5,198,0,0,3866,3882,5,357,0,0,3867,3868,5,131,0,0,3868,3882, + 5,446,0,0,3869,3882,5,204,0,0,3870,3882,5,452,0,0,3871,3882,5,331, + 0,0,3872,3882,5,318,0,0,3873,3882,5,451,0,0,3874,3875,5,63,0,0,3875, + 3876,5,174,0,0,3876,3882,5,381,0,0,3877,3879,5,295,0,0,3878,3877, + 1,0,0,0,3878,3879,1,0,0,0,3879,3880,1,0,0,0,3880,3882,5,247,0,0, + 3881,3865,1,0,0,0,3881,3867,1,0,0,0,3881,3869,1,0,0,0,3881,3870, + 1,0,0,0,3881,3871,1,0,0,0,3881,3872,1,0,0,0,3881,3873,1,0,0,0,3881, + 3874,1,0,0,0,3881,3878,1,0,0,0,3882,3883,1,0,0,0,3883,3890,3,818, + 409,0,3884,3885,5,323,0,0,3885,3890,3,790,395,0,3886,3887,5,175, + 0,0,3887,3890,3,788,394,0,3888,3890,3,176,88,0,3889,3881,1,0,0,0, + 3889,3884,1,0,0,0,3889,3886,1,0,0,0,3889,3888,1,0,0,0,3890,313,1, + 0,0,0,3891,3896,3,316,158,0,3892,3893,5,6,0,0,3893,3895,3,316,158, + 0,3894,3892,1,0,0,0,3895,3898,1,0,0,0,3896,3894,1,0,0,0,3896,3897, + 1,0,0,0,3897,315,1,0,0,0,3898,3896,1,0,0,0,3899,3901,3,818,409,0, + 3900,3902,3,318,159,0,3901,3900,1,0,0,0,3901,3902,1,0,0,0,3902,317, + 1,0,0,0,3903,3904,5,11,0,0,3904,3906,3,824,412,0,3905,3903,1,0,0, + 0,3906,3907,1,0,0,0,3907,3905,1,0,0,0,3907,3908,1,0,0,0,3908,319, + 1,0,0,0,3909,3911,5,358,0,0,3910,3912,5,92,0,0,3911,3910,1,0,0,0, + 3911,3912,1,0,0,0,3912,3913,1,0,0,0,3913,3918,3,322,161,0,3914,3915, + 5,6,0,0,3915,3917,3,322,161,0,3916,3914,1,0,0,0,3917,3920,1,0,0, + 0,3918,3916,1,0,0,0,3918,3919,1,0,0,0,3919,3923,1,0,0,0,3920,3918, + 1,0,0,0,3921,3922,7,47,0,0,3922,3924,5,219,0,0,3923,3921,1,0,0,0, + 3923,3924,1,0,0,0,3924,3926,1,0,0,0,3925,3927,3,96,48,0,3926,3925, + 1,0,0,0,3926,3927,1,0,0,0,3927,321,1,0,0,0,3928,3930,5,81,0,0,3929, + 3928,1,0,0,0,3929,3930,1,0,0,0,3930,3931,1,0,0,0,3931,3933,3,774, + 387,0,3932,3934,5,9,0,0,3933,3932,1,0,0,0,3933,3934,1,0,0,0,3934, + 323,1,0,0,0,3935,3936,5,159,0,0,3936,3995,5,80,0,0,3937,3996,3,310, + 155,0,3938,3996,3,312,156,0,3939,3940,5,44,0,0,3940,3942,3,818,409, + 0,3941,3943,3,318,159,0,3942,3941,1,0,0,0,3942,3943,1,0,0,0,3943, + 3944,1,0,0,0,3944,3945,5,11,0,0,3945,3946,3,800,400,0,3946,3996, + 1,0,0,0,3947,3948,7,32,0,0,3948,3996,3,652,326,0,3949,3950,5,136, + 0,0,3950,3996,3,394,197,0,3951,3952,5,211,0,0,3952,3996,3,382,191, + 0,3953,3954,5,278,0,0,3954,3996,3,416,208,0,3955,3956,5,45,0,0,3956, + 3957,3,818,409,0,3957,3963,5,80,0,0,3958,3964,3,774,387,0,3959,3961, + 5,189,0,0,3960,3959,1,0,0,0,3960,3961,1,0,0,0,3961,3962,1,0,0,0, + 3962,3964,3,316,158,0,3963,3958,1,0,0,0,3963,3960,1,0,0,0,3964,3996, + 1,0,0,0,3965,3966,7,44,0,0,3966,3967,3,818,409,0,3967,3968,5,80, + 0,0,3968,3969,3,316,158,0,3969,3996,1,0,0,0,3970,3971,5,296,0,0, + 3971,3996,3,378,189,0,3972,3973,5,442,0,0,3973,3996,3,374,187,0, + 3974,3975,5,443,0,0,3975,3976,5,62,0,0,3976,3977,3,652,326,0,3977, + 3978,5,247,0,0,3978,3979,3,818,409,0,3979,3996,1,0,0,0,3980,3981, + 5,278,0,0,3981,3982,7,31,0,0,3982,3983,3,316,158,0,3983,3984,3,170, + 85,0,3984,3996,1,0,0,0,3985,3986,5,248,0,0,3986,3987,5,274,0,0,3987, + 3996,3,202,101,0,3988,3989,5,41,0,0,3989,3990,5,2,0,0,3990,3991, + 3,652,326,0,3991,3992,5,36,0,0,3992,3993,3,652,326,0,3993,3994,5, + 3,0,0,3994,3996,1,0,0,0,3995,3937,1,0,0,0,3995,3938,1,0,0,0,3995, + 3939,1,0,0,0,3995,3947,1,0,0,0,3995,3949,1,0,0,0,3995,3951,1,0,0, + 0,3995,3953,1,0,0,0,3995,3955,1,0,0,0,3995,3965,1,0,0,0,3995,3970, + 1,0,0,0,3995,3972,1,0,0,0,3995,3974,1,0,0,0,3995,3980,1,0,0,0,3995, + 3985,1,0,0,0,3995,3988,1,0,0,0,3996,3997,1,0,0,0,3997,4000,5,116, + 0,0,3998,4001,3,808,404,0,3999,4001,5,78,0,0,4000,3998,1,0,0,0,4000, + 3999,1,0,0,0,4001,325,1,0,0,0,4002,4003,5,327,0,0,4003,4006,5,246, + 0,0,4004,4005,5,62,0,0,4005,4007,3,58,29,0,4006,4004,1,0,0,0,4006, + 4007,1,0,0,0,4007,4008,1,0,0,0,4008,4026,5,80,0,0,4009,4010,7,32, + 0,0,4010,4027,3,652,326,0,4011,4012,5,136,0,0,4012,4027,3,394,197, + 0,4013,4014,5,44,0,0,4014,4027,3,800,400,0,4015,4016,5,211,0,0,4016, + 4027,3,382,191,0,4017,4018,5,248,0,0,4018,4019,5,274,0,0,4019,4027, + 3,202,101,0,4020,4021,5,296,0,0,4021,4027,3,378,189,0,4022,4023, + 5,442,0,0,4023,4027,3,374,187,0,4024,4027,3,310,155,0,4025,4027, + 3,312,156,0,4026,4009,1,0,0,0,4026,4011,1,0,0,0,4026,4013,1,0,0, + 0,4026,4015,1,0,0,0,4026,4017,1,0,0,0,4026,4020,1,0,0,0,4026,4022, + 1,0,0,0,4026,4024,1,0,0,0,4026,4025,1,0,0,0,4027,4028,1,0,0,0,4028, + 4031,5,116,0,0,4029,4032,3,808,404,0,4030,4032,5,78,0,0,4031,4029, + 1,0,0,0,4031,4030,1,0,0,0,4032,327,1,0,0,0,4033,4034,7,48,0,0,4034, + 4035,3,330,165,0,4035,329,1,0,0,0,4036,4038,7,49,0,0,4037,4036,1, + 0,0,0,4037,4038,1,0,0,0,4038,4040,1,0,0,0,4039,4041,3,332,166,0, + 4040,4039,1,0,0,0,4040,4041,1,0,0,0,4041,4042,1,0,0,0,4042,4080, + 3,818,409,0,4043,4045,7,50,0,0,4044,4043,1,0,0,0,4044,4045,1,0,0, + 0,4045,4046,1,0,0,0,4046,4048,3,812,406,0,4047,4049,3,332,166,0, + 4048,4047,1,0,0,0,4048,4049,1,0,0,0,4049,4050,1,0,0,0,4050,4051, + 3,818,409,0,4051,4080,1,0,0,0,4052,4054,5,210,0,0,4053,4055,3,812, + 406,0,4054,4053,1,0,0,0,4054,4055,1,0,0,0,4055,4057,1,0,0,0,4056, + 4058,3,332,166,0,4057,4056,1,0,0,0,4057,4058,1,0,0,0,4058,4059,1, + 0,0,0,4059,4080,3,818,409,0,4060,4062,5,210,0,0,4061,4060,1,0,0, + 0,4061,4062,1,0,0,0,4062,4063,1,0,0,0,4063,4065,5,30,0,0,4064,4066, + 3,332,166,0,4065,4064,1,0,0,0,4065,4066,1,0,0,0,4066,4067,1,0,0, + 0,4067,4080,3,818,409,0,4068,4073,5,144,0,0,4069,4071,5,30,0,0,4070, + 4069,1,0,0,0,4070,4071,1,0,0,0,4071,4074,1,0,0,0,4072,4074,3,812, + 406,0,4073,4070,1,0,0,0,4073,4072,1,0,0,0,4074,4076,1,0,0,0,4075, + 4077,3,332,166,0,4076,4075,1,0,0,0,4076,4077,1,0,0,0,4077,4078,1, + 0,0,0,4078,4080,3,818,409,0,4079,4037,1,0,0,0,4079,4044,1,0,0,0, + 4079,4052,1,0,0,0,4079,4061,1,0,0,0,4079,4068,1,0,0,0,4080,331,1, + 0,0,0,4081,4082,7,51,0,0,4082,333,1,0,0,0,4083,4084,5,65,0,0,4084, + 4085,3,338,169,0,4085,4086,5,80,0,0,4086,4087,3,344,172,0,4087,4088, + 5,94,0,0,4088,4092,3,346,173,0,4089,4090,5,105,0,0,4090,4091,5,65, + 0,0,4091,4093,5,279,0,0,4092,4089,1,0,0,0,4092,4093,1,0,0,0,4093, + 335,1,0,0,0,4094,4098,5,317,0,0,4095,4096,5,65,0,0,4096,4097,5,279, + 0,0,4097,4099,5,62,0,0,4098,4095,1,0,0,0,4098,4099,1,0,0,0,4099, + 4100,1,0,0,0,4100,4101,3,338,169,0,4101,4102,5,80,0,0,4102,4103, + 3,344,172,0,4103,4104,5,64,0,0,4104,4106,3,346,173,0,4105,4107,3, + 96,48,0,4106,4105,1,0,0,0,4106,4107,1,0,0,0,4107,337,1,0,0,0,4108, + 4113,3,342,171,0,4109,4110,5,6,0,0,4110,4112,3,342,171,0,4111,4109, + 1,0,0,0,4112,4115,1,0,0,0,4113,4111,1,0,0,0,4113,4114,1,0,0,0,4114, + 4132,1,0,0,0,4115,4113,1,0,0,0,4116,4118,5,30,0,0,4117,4119,5,294, + 0,0,4118,4117,1,0,0,0,4118,4119,1,0,0,0,4119,4121,1,0,0,0,4120,4122, + 3,144,72,0,4121,4120,1,0,0,0,4121,4122,1,0,0,0,4122,4132,1,0,0,0, + 4123,4128,3,340,170,0,4124,4125,5,6,0,0,4125,4127,3,340,170,0,4126, + 4124,1,0,0,0,4127,4130,1,0,0,0,4128,4126,1,0,0,0,4128,4129,1,0,0, + 0,4129,4132,1,0,0,0,4130,4128,1,0,0,0,4131,4108,1,0,0,0,4131,4116, + 1,0,0,0,4131,4123,1,0,0,0,4132,339,1,0,0,0,4133,4134,7,52,0,0,4134, + 341,1,0,0,0,4135,4140,5,88,0,0,4136,4140,5,86,0,0,4137,4140,5,46, + 0,0,4138,4140,3,818,409,0,4139,4135,1,0,0,0,4139,4136,1,0,0,0,4139, + 4137,1,0,0,0,4139,4138,1,0,0,0,4140,4142,1,0,0,0,4141,4143,3,144, + 72,0,4142,4141,1,0,0,0,4142,4143,1,0,0,0,4143,343,1,0,0,0,4144,4145, + 5,92,0,0,4145,4190,3,762,381,0,4146,4148,5,328,0,0,4147,4146,1,0, + 0,0,4147,4148,1,0,0,0,4148,4149,1,0,0,0,4149,4190,3,760,380,0,4150, + 4154,5,63,0,0,4151,4152,5,174,0,0,4152,4155,5,381,0,0,4153,4155, + 5,331,0,0,4154,4151,1,0,0,0,4154,4153,1,0,0,0,4155,4158,1,0,0,0, + 4156,4158,5,247,0,0,4157,4150,1,0,0,0,4157,4156,1,0,0,0,4158,4159, + 1,0,0,0,4159,4190,3,784,392,0,4160,4161,5,211,0,0,4161,4190,3,380, + 190,0,4162,4163,5,296,0,0,4163,4190,3,376,188,0,4164,4165,5,442, + 0,0,4165,4190,3,372,186,0,4166,4167,5,175,0,0,4167,4190,3,766,383, + 0,4168,4169,7,32,0,0,4169,4190,3,314,157,0,4170,4171,5,248,0,0,4171, + 4172,5,274,0,0,4172,4177,3,202,101,0,4173,4174,5,6,0,0,4174,4176, + 3,202,101,0,4175,4173,1,0,0,0,4176,4179,1,0,0,0,4177,4175,1,0,0, + 0,4177,4178,1,0,0,0,4178,4190,1,0,0,0,4179,4177,1,0,0,0,4180,4181, + 5,323,0,0,4181,4190,3,764,382,0,4182,4183,5,351,0,0,4183,4190,3, + 782,391,0,4184,4185,5,30,0,0,4185,4186,7,53,0,0,4186,4187,5,68,0, + 0,4187,4188,5,323,0,0,4188,4190,3,764,382,0,4189,4144,1,0,0,0,4189, + 4147,1,0,0,0,4189,4157,1,0,0,0,4189,4160,1,0,0,0,4189,4162,1,0,0, + 0,4189,4164,1,0,0,0,4189,4166,1,0,0,0,4189,4168,1,0,0,0,4189,4170, + 1,0,0,0,4189,4180,1,0,0,0,4189,4182,1,0,0,0,4189,4184,1,0,0,0,4190, + 345,1,0,0,0,4191,4193,5,66,0,0,4192,4191,1,0,0,0,4192,4193,1,0,0, + 0,4193,4194,1,0,0,0,4194,4195,3,814,407,0,4195,4203,1,0,0,0,4196, + 4198,5,6,0,0,4197,4199,5,66,0,0,4198,4197,1,0,0,0,4198,4199,1,0, + 0,0,4199,4200,1,0,0,0,4200,4202,3,814,407,0,4201,4196,1,0,0,0,4202, + 4205,1,0,0,0,4203,4201,1,0,0,0,4203,4204,1,0,0,0,4204,347,1,0,0, + 0,4205,4203,1,0,0,0,4206,4207,5,65,0,0,4207,4212,3,342,171,0,4208, + 4209,5,6,0,0,4209,4211,3,342,171,0,4210,4208,1,0,0,0,4211,4214,1, + 0,0,0,4212,4210,1,0,0,0,4212,4213,1,0,0,0,4213,4215,1,0,0,0,4214, + 4212,1,0,0,0,4215,4216,5,94,0,0,4216,4220,3,816,408,0,4217,4218, + 5,105,0,0,4218,4219,5,134,0,0,4219,4221,5,279,0,0,4220,4217,1,0, + 0,0,4220,4221,1,0,0,0,4221,4225,1,0,0,0,4222,4223,5,214,0,0,4223, + 4224,5,147,0,0,4224,4226,3,814,407,0,4225,4222,1,0,0,0,4225,4226, + 1,0,0,0,4226,349,1,0,0,0,4227,4231,5,317,0,0,4228,4229,5,134,0,0, + 4229,4230,5,279,0,0,4230,4232,5,62,0,0,4231,4228,1,0,0,0,4231,4232, + 1,0,0,0,4232,4233,1,0,0,0,4233,4238,3,342,171,0,4234,4235,5,6,0, + 0,4235,4237,3,342,171,0,4236,4234,1,0,0,0,4237,4240,1,0,0,0,4238, + 4236,1,0,0,0,4238,4239,1,0,0,0,4239,4241,1,0,0,0,4240,4238,1,0,0, + 0,4241,4242,5,64,0,0,4242,4246,3,816,408,0,4243,4244,5,214,0,0,4244, + 4245,5,147,0,0,4245,4247,3,814,407,0,4246,4243,1,0,0,0,4246,4247, + 1,0,0,0,4247,4249,1,0,0,0,4248,4250,3,96,48,0,4249,4248,1,0,0,0, + 4249,4250,1,0,0,0,4250,351,1,0,0,0,4251,4252,5,138,0,0,4252,4253, + 5,53,0,0,4253,4262,5,294,0,0,4254,4255,5,68,0,0,4255,4256,5,323, + 0,0,4256,4261,3,764,382,0,4257,4258,5,62,0,0,4258,4259,7,2,0,0,4259, + 4261,3,816,408,0,4260,4254,1,0,0,0,4260,4257,1,0,0,0,4261,4264,1, + 0,0,0,4262,4260,1,0,0,0,4262,4263,1,0,0,0,4263,4265,1,0,0,0,4264, + 4262,1,0,0,0,4265,4266,3,354,177,0,4266,353,1,0,0,0,4267,4268,5, + 65,0,0,4268,4269,3,338,169,0,4269,4270,5,80,0,0,4270,4271,3,356, + 178,0,4271,4272,5,94,0,0,4272,4276,3,346,173,0,4273,4274,5,105,0, + 0,4274,4275,5,65,0,0,4275,4277,5,279,0,0,4276,4273,1,0,0,0,4276, + 4277,1,0,0,0,4277,4293,1,0,0,0,4278,4282,5,317,0,0,4279,4280,5,65, + 0,0,4280,4281,5,279,0,0,4281,4283,5,62,0,0,4282,4279,1,0,0,0,4282, + 4283,1,0,0,0,4283,4284,1,0,0,0,4284,4285,3,338,169,0,4285,4286,5, + 80,0,0,4286,4287,3,356,178,0,4287,4288,5,64,0,0,4288,4290,3,346, + 173,0,4289,4291,3,96,48,0,4290,4289,1,0,0,0,4290,4291,1,0,0,0,4291, + 4293,1,0,0,0,4292,4267,1,0,0,0,4292,4278,1,0,0,0,4293,355,1,0,0, + 0,4294,4295,7,54,0,0,4295,357,1,0,0,0,4296,4298,5,46,0,0,4297,4299, + 5,98,0,0,4298,4297,1,0,0,0,4298,4299,1,0,0,0,4299,4300,1,0,0,0,4300, + 4302,5,226,0,0,4301,4303,5,109,0,0,4302,4301,1,0,0,0,4302,4303,1, + 0,0,0,4303,4305,1,0,0,0,4304,4306,3,294,147,0,4305,4304,1,0,0,0, + 4305,4306,1,0,0,0,4306,4308,1,0,0,0,4307,4309,3,818,409,0,4308,4307, + 1,0,0,0,4308,4309,1,0,0,0,4309,4310,1,0,0,0,4310,4311,5,80,0,0,4311, + 4313,3,624,312,0,4312,4314,3,170,85,0,4313,4312,1,0,0,0,4313,4314, + 1,0,0,0,4314,4315,1,0,0,0,4315,4318,3,360,180,0,4316,4317,5,441, + 0,0,4317,4319,3,360,180,0,4318,4316,1,0,0,0,4318,4319,1,0,0,0,4319, + 4325,1,0,0,0,4320,4322,5,273,0,0,4321,4323,5,77,0,0,4322,4321,1, + 0,0,0,4322,4323,1,0,0,0,4323,4324,1,0,0,0,4324,4326,5,56,0,0,4325, + 4320,1,0,0,0,4325,4326,1,0,0,0,4326,4328,1,0,0,0,4327,4329,3,102, + 51,0,4328,4327,1,0,0,0,4328,4329,1,0,0,0,4329,4331,1,0,0,0,4330, + 4332,3,176,88,0,4331,4330,1,0,0,0,4331,4332,1,0,0,0,4332,4334,1, + 0,0,0,4333,4335,3,638,319,0,4334,4333,1,0,0,0,4334,4335,1,0,0,0, + 4335,359,1,0,0,0,4336,4337,5,2,0,0,4337,4342,3,362,181,0,4338,4339, + 5,6,0,0,4339,4341,3,362,181,0,4340,4338,1,0,0,0,4341,4344,1,0,0, + 0,4342,4340,1,0,0,0,4342,4343,1,0,0,0,4343,4345,1,0,0,0,4344,4342, + 1,0,0,0,4345,4346,5,3,0,0,4346,361,1,0,0,0,4347,4354,3,800,400,0, + 4348,4354,3,688,344,0,4349,4350,5,2,0,0,4350,4351,3,674,337,0,4351, + 4352,5,3,0,0,4352,4354,1,0,0,0,4353,4347,1,0,0,0,4353,4348,1,0,0, + 0,4353,4349,1,0,0,0,4354,4356,1,0,0,0,4355,4357,3,98,49,0,4356,4355, + 1,0,0,0,4356,4357,1,0,0,0,4357,4364,1,0,0,0,4358,4360,3,316,158, + 0,4359,4358,1,0,0,0,4359,4360,1,0,0,0,4360,4365,1,0,0,0,4361,4362, + 3,316,158,0,4362,4363,3,100,50,0,4363,4365,1,0,0,0,4364,4359,1,0, + 0,0,4364,4361,1,0,0,0,4365,4367,1,0,0,0,4366,4368,7,55,0,0,4367, + 4366,1,0,0,0,4367,4368,1,0,0,0,4368,4371,1,0,0,0,4369,4370,5,273, + 0,0,4370,4372,7,56,0,0,4371,4369,1,0,0,0,4371,4372,1,0,0,0,4372, + 363,1,0,0,0,4373,4375,5,46,0,0,4374,4376,3,366,183,0,4375,4374,1, + 0,0,0,4375,4376,1,0,0,0,4376,4381,1,0,0,0,4377,4378,5,211,0,0,4378, + 4382,3,804,402,0,4379,4380,5,296,0,0,4380,4382,3,798,399,0,4381, + 4377,1,0,0,0,4381,4379,1,0,0,0,4382,4383,1,0,0,0,4383,4392,5,2,0, + 0,4384,4389,3,390,195,0,4385,4386,5,6,0,0,4386,4388,3,390,195,0, + 4387,4385,1,0,0,0,4388,4391,1,0,0,0,4389,4387,1,0,0,0,4389,4390, + 1,0,0,0,4390,4393,1,0,0,0,4391,4389,1,0,0,0,4392,4384,1,0,0,0,4392, + 4393,1,0,0,0,4393,4394,1,0,0,0,4394,4395,5,3,0,0,4395,4412,1,0,0, + 0,4396,4410,5,316,0,0,4397,4411,3,388,194,0,4398,4399,5,92,0,0,4399, + 4400,5,2,0,0,4400,4405,3,402,201,0,4401,4402,5,6,0,0,4402,4404,3, + 402,201,0,4403,4401,1,0,0,0,4404,4407,1,0,0,0,4405,4403,1,0,0,0, + 4405,4406,1,0,0,0,4406,4408,1,0,0,0,4407,4405,1,0,0,0,4408,4409, + 5,3,0,0,4409,4411,1,0,0,0,4410,4397,1,0,0,0,4410,4398,1,0,0,0,4411, + 4413,1,0,0,0,4412,4396,1,0,0,0,4412,4413,1,0,0,0,4413,4415,1,0,0, + 0,4414,4416,3,398,199,0,4415,4414,1,0,0,0,4416,4417,1,0,0,0,4417, + 4415,1,0,0,0,4417,4418,1,0,0,0,4418,4424,1,0,0,0,4419,4420,5,105, + 0,0,4420,4421,5,2,0,0,4421,4422,3,784,392,0,4422,4423,5,3,0,0,4423, + 4425,1,0,0,0,4424,4419,1,0,0,0,4424,4425,1,0,0,0,4425,365,1,0,0, + 0,4426,4427,5,82,0,0,4427,4428,5,311,0,0,4428,367,1,0,0,0,4429,4431, + 5,2,0,0,4430,4432,3,370,185,0,4431,4430,1,0,0,0,4431,4432,1,0,0, + 0,4432,4433,1,0,0,0,4433,4434,5,3,0,0,4434,369,1,0,0,0,4435,4440, + 3,384,192,0,4436,4437,5,6,0,0,4437,4439,3,384,192,0,4438,4436,1, + 0,0,0,4439,4442,1,0,0,0,4440,4438,1,0,0,0,4440,4441,1,0,0,0,4441, + 371,1,0,0,0,4442,4440,1,0,0,0,4443,4448,3,374,187,0,4444,4445,5, + 6,0,0,4445,4447,3,374,187,0,4446,4444,1,0,0,0,4447,4450,1,0,0,0, + 4448,4446,1,0,0,0,4448,4449,1,0,0,0,4449,373,1,0,0,0,4450,4448,1, + 0,0,0,4451,4452,3,794,397,0,4452,4453,3,368,184,0,4453,4457,1,0, + 0,0,4454,4457,3,832,416,0,4455,4457,3,780,390,0,4456,4451,1,0,0, + 0,4456,4454,1,0,0,0,4456,4455,1,0,0,0,4457,375,1,0,0,0,4458,4463, + 3,378,189,0,4459,4460,5,6,0,0,4460,4462,3,378,189,0,4461,4459,1, + 0,0,0,4462,4465,1,0,0,0,4463,4461,1,0,0,0,4463,4464,1,0,0,0,4464, + 377,1,0,0,0,4465,4463,1,0,0,0,4466,4467,3,796,398,0,4467,4468,3, + 368,184,0,4468,4472,1,0,0,0,4469,4472,3,832,416,0,4470,4472,3,780, + 390,0,4471,4466,1,0,0,0,4471,4469,1,0,0,0,4471,4470,1,0,0,0,4472, + 379,1,0,0,0,4473,4478,3,382,191,0,4474,4475,5,6,0,0,4475,4477,3, + 382,191,0,4476,4474,1,0,0,0,4477,4480,1,0,0,0,4478,4476,1,0,0,0, + 4478,4479,1,0,0,0,4479,381,1,0,0,0,4480,4478,1,0,0,0,4481,4482,3, + 806,403,0,4482,4483,3,368,184,0,4483,4487,1,0,0,0,4484,4487,3,832, + 416,0,4485,4487,3,780,390,0,4486,4481,1,0,0,0,4486,4484,1,0,0,0, + 4486,4485,1,0,0,0,4487,383,1,0,0,0,4488,4490,3,386,193,0,4489,4491, + 3,820,410,0,4490,4489,1,0,0,0,4490,4491,1,0,0,0,4491,4497,1,0,0, + 0,4492,4494,3,820,410,0,4493,4495,3,386,193,0,4494,4493,1,0,0,0, + 4494,4495,1,0,0,0,4495,4497,1,0,0,0,4496,4488,1,0,0,0,4496,4492, + 1,0,0,0,4496,4497,1,0,0,0,4497,4498,1,0,0,0,4498,4499,3,388,194, + 0,4499,385,1,0,0,0,4500,4502,5,68,0,0,4501,4503,5,453,0,0,4502,4501, + 1,0,0,0,4502,4503,1,0,0,0,4503,4508,1,0,0,0,4504,4508,5,453,0,0, + 4505,4508,5,400,0,0,4506,4508,5,101,0,0,4507,4500,1,0,0,0,4507,4504, + 1,0,0,0,4507,4505,1,0,0,0,4507,4506,1,0,0,0,4508,387,1,0,0,0,4509, + 4519,3,652,326,0,4510,4512,5,415,0,0,4511,4510,1,0,0,0,4511,4512, + 1,0,0,0,4512,4513,1,0,0,0,4513,4514,3,820,410,0,4514,4515,3,318, + 159,0,4515,4516,5,27,0,0,4516,4517,5,360,0,0,4517,4519,1,0,0,0,4518, + 4509,1,0,0,0,4518,4511,1,0,0,0,4519,389,1,0,0,0,4520,4523,3,384, + 192,0,4521,4522,7,57,0,0,4522,4524,3,674,337,0,4523,4521,1,0,0,0, + 4523,4524,1,0,0,0,4524,391,1,0,0,0,4525,4535,5,2,0,0,4526,4536,5, + 9,0,0,4527,4529,3,370,185,0,4528,4527,1,0,0,0,4528,4529,1,0,0,0, + 4529,4533,1,0,0,0,4530,4531,5,83,0,0,4531,4532,5,147,0,0,4532,4534, + 3,370,185,0,4533,4530,1,0,0,0,4533,4534,1,0,0,0,4534,4536,1,0,0, + 0,4535,4526,1,0,0,0,4535,4528,1,0,0,0,4536,4537,1,0,0,0,4537,4538, + 5,3,0,0,4538,393,1,0,0,0,4539,4540,3,806,403,0,4540,4541,3,392,196, + 0,4541,395,1,0,0,0,4542,4543,5,316,0,0,4543,4546,5,78,0,0,4544,4546, + 5,149,0,0,4545,4542,1,0,0,0,4545,4544,1,0,0,0,4546,4547,1,0,0,0, + 4547,4548,5,80,0,0,4548,4549,5,78,0,0,4549,4572,5,458,0,0,4550,4572, + 5,346,0,0,4551,4572,5,222,0,0,4552,4572,5,338,0,0,4553,4572,5,377, + 0,0,4554,4556,5,205,0,0,4555,4554,1,0,0,0,4555,4556,1,0,0,0,4556, + 4557,1,0,0,0,4557,4558,5,327,0,0,4558,4572,7,58,0,0,4559,4572,5, + 250,0,0,4560,4561,5,77,0,0,4561,4572,5,250,0,0,4562,4563,7,59,0, + 0,4563,4572,3,202,101,0,4564,4565,5,459,0,0,4565,4572,3,316,158, + 0,4566,4567,5,333,0,0,4567,4572,3,42,21,0,4568,4572,3,60,30,0,4569, + 4570,5,460,0,0,4570,4572,3,818,409,0,4571,4545,1,0,0,0,4571,4550, + 1,0,0,0,4571,4551,1,0,0,0,4571,4552,1,0,0,0,4571,4553,1,0,0,0,4571, + 4555,1,0,0,0,4571,4559,1,0,0,0,4571,4560,1,0,0,0,4571,4562,1,0,0, + 0,4571,4564,1,0,0,0,4571,4566,1,0,0,0,4571,4568,1,0,0,0,4571,4569, + 1,0,0,0,4572,397,1,0,0,0,4573,4574,5,36,0,0,4574,4575,3,808,404, + 0,4575,4576,3,462,231,0,4576,4609,1,0,0,0,4577,4578,5,247,0,0,4578, + 4609,3,58,29,0,4579,4580,5,443,0,0,4580,4581,5,62,0,0,4581,4582, + 5,360,0,0,4582,4589,3,652,326,0,4583,4584,5,6,0,0,4584,4585,5,62, + 0,0,4585,4586,5,360,0,0,4586,4588,3,652,326,0,4587,4583,1,0,0,0, + 4588,4591,1,0,0,0,4589,4587,1,0,0,0,4589,4590,1,0,0,0,4590,4609, + 1,0,0,0,4591,4589,1,0,0,0,4592,4609,5,104,0,0,4593,4594,5,333,0, + 0,4594,4601,3,818,409,0,4595,4596,5,94,0,0,4596,4602,3,818,409,0, + 4597,4598,5,10,0,0,4598,4602,3,818,409,0,4599,4600,5,64,0,0,4600, + 4602,5,434,0,0,4601,4595,1,0,0,0,4601,4597,1,0,0,0,4601,4599,1,0, + 0,0,4602,4609,1,0,0,0,4603,4604,5,36,0,0,4604,4609,3,818,409,0,4605, + 4609,3,4,2,0,4606,4609,3,396,198,0,4607,4609,3,818,409,0,4608,4573, + 1,0,0,0,4608,4577,1,0,0,0,4608,4579,1,0,0,0,4608,4592,1,0,0,0,4608, + 4593,1,0,0,0,4608,4603,1,0,0,0,4608,4605,1,0,0,0,4608,4606,1,0,0, + 0,4608,4607,1,0,0,0,4609,399,1,0,0,0,4610,4611,5,105,0,0,4611,4612, + 3,284,142,0,4612,401,1,0,0,0,4613,4614,3,800,400,0,4614,4615,3,388, + 194,0,4615,403,1,0,0,0,4616,4623,5,138,0,0,4617,4618,5,211,0,0,4618, + 4624,3,382,191,0,4619,4620,5,296,0,0,4620,4624,3,378,189,0,4621, + 4622,5,442,0,0,4622,4624,3,374,187,0,4623,4617,1,0,0,0,4623,4619, + 1,0,0,0,4623,4621,1,0,0,0,4624,4626,1,0,0,0,4625,4627,3,396,198, + 0,4626,4625,1,0,0,0,4627,4628,1,0,0,0,4628,4626,1,0,0,0,4628,4629, + 1,0,0,0,4629,4631,1,0,0,0,4630,4632,5,315,0,0,4631,4630,1,0,0,0, + 4631,4632,1,0,0,0,4632,405,1,0,0,0,4633,4649,5,191,0,0,4634,4636, + 5,211,0,0,4635,4637,3,422,211,0,4636,4635,1,0,0,0,4636,4637,1,0, + 0,0,4637,4638,1,0,0,0,4638,4650,3,380,190,0,4639,4641,5,296,0,0, + 4640,4642,3,422,211,0,4641,4640,1,0,0,0,4641,4642,1,0,0,0,4642,4643, + 1,0,0,0,4643,4650,3,376,188,0,4644,4646,5,442,0,0,4645,4647,3,422, + 211,0,4646,4645,1,0,0,0,4646,4647,1,0,0,0,4647,4648,1,0,0,0,4648, + 4650,3,372,186,0,4649,4634,1,0,0,0,4649,4639,1,0,0,0,4649,4644,1, + 0,0,0,4650,4652,1,0,0,0,4651,4653,3,96,48,0,4652,4651,1,0,0,0,4652, + 4653,1,0,0,0,4653,407,1,0,0,0,4654,4655,5,191,0,0,4655,4657,5,136, + 0,0,4656,4658,3,422,211,0,4657,4656,1,0,0,0,4657,4658,1,0,0,0,4658, + 4659,1,0,0,0,4659,4664,3,394,197,0,4660,4661,5,6,0,0,4661,4663,3, + 394,197,0,4662,4660,1,0,0,0,4663,4666,1,0,0,0,4664,4662,1,0,0,0, + 4664,4665,1,0,0,0,4665,4668,1,0,0,0,4666,4664,1,0,0,0,4667,4669, + 3,96,48,0,4668,4667,1,0,0,0,4668,4669,1,0,0,0,4669,409,1,0,0,0,4670, + 4671,5,191,0,0,4671,4673,5,278,0,0,4672,4674,3,422,211,0,4673,4672, + 1,0,0,0,4673,4674,1,0,0,0,4674,4675,1,0,0,0,4675,4680,3,416,208, + 0,4676,4677,5,6,0,0,4677,4679,3,416,208,0,4678,4676,1,0,0,0,4679, + 4682,1,0,0,0,4680,4678,1,0,0,0,4680,4681,1,0,0,0,4681,4684,1,0,0, + 0,4682,4680,1,0,0,0,4683,4685,3,96,48,0,4684,4683,1,0,0,0,4684,4685, + 1,0,0,0,4685,411,1,0,0,0,4686,4699,5,2,0,0,4687,4690,3,652,326,0, + 4688,4689,5,6,0,0,4689,4691,3,652,326,0,4690,4688,1,0,0,0,4690,4691, + 1,0,0,0,4691,4700,1,0,0,0,4692,4693,5,407,0,0,4693,4694,5,6,0,0, + 4694,4700,3,652,326,0,4695,4696,3,652,326,0,4696,4697,5,6,0,0,4697, + 4698,5,407,0,0,4698,4700,1,0,0,0,4699,4687,1,0,0,0,4699,4692,1,0, + 0,0,4699,4695,1,0,0,0,4700,4701,1,0,0,0,4701,4702,5,3,0,0,4702,413, + 1,0,0,0,4703,4704,3,818,409,0,4704,4705,5,11,0,0,4705,4707,1,0,0, + 0,4706,4703,1,0,0,0,4707,4710,1,0,0,0,4708,4706,1,0,0,0,4708,4709, + 1,0,0,0,4709,4711,1,0,0,0,4710,4708,1,0,0,0,4711,4712,3,720,360, + 0,4712,415,1,0,0,0,4713,4714,3,414,207,0,4714,4715,3,412,206,0,4715, + 417,1,0,0,0,4716,4720,5,57,0,0,4717,4721,3,808,404,0,4718,4719,5, + 247,0,0,4719,4721,3,58,29,0,4720,4717,1,0,0,0,4720,4718,1,0,0,0, + 4721,4722,1,0,0,0,4722,4720,1,0,0,0,4722,4723,1,0,0,0,4723,419,1, + 0,0,0,4724,4725,5,46,0,0,4725,4726,5,41,0,0,4726,4727,5,2,0,0,4727, + 4728,3,652,326,0,4728,4729,5,36,0,0,4729,4730,3,652,326,0,4730,4747, + 5,3,0,0,4731,4732,5,379,0,0,4732,4735,5,211,0,0,4733,4734,5,36,0, + 0,4734,4736,7,60,0,0,4735,4733,1,0,0,0,4735,4736,1,0,0,0,4736,4748, + 1,0,0,0,4737,4741,5,105,0,0,4738,4739,5,211,0,0,4739,4742,3,382, + 191,0,4740,4742,5,400,0,0,4741,4738,1,0,0,0,4741,4740,1,0,0,0,4742, + 4745,1,0,0,0,4743,4744,5,36,0,0,4744,4746,7,60,0,0,4745,4743,1,0, + 0,0,4745,4746,1,0,0,0,4746,4748,1,0,0,0,4747,4731,1,0,0,0,4747,4737, + 1,0,0,0,4748,421,1,0,0,0,4749,4750,5,220,0,0,4750,4751,5,396,0,0, + 4751,423,1,0,0,0,4752,4754,5,46,0,0,4753,4755,3,366,183,0,4754,4753, + 1,0,0,0,4754,4755,1,0,0,0,4755,4756,1,0,0,0,4756,4757,5,443,0,0, + 4757,4758,5,62,0,0,4758,4759,3,652,326,0,4759,4760,5,247,0,0,4760, + 4761,3,818,409,0,4761,4776,5,2,0,0,4762,4763,5,64,0,0,4763,4767, + 3,426,213,0,4764,4765,5,6,0,0,4765,4766,5,94,0,0,4766,4768,3,426, + 213,0,4767,4764,1,0,0,0,4767,4768,1,0,0,0,4768,4777,1,0,0,0,4769, + 4770,5,94,0,0,4770,4774,3,426,213,0,4771,4772,5,6,0,0,4772,4773, + 5,64,0,0,4773,4775,3,426,213,0,4774,4771,1,0,0,0,4774,4775,1,0,0, + 0,4775,4777,1,0,0,0,4776,4762,1,0,0,0,4776,4769,1,0,0,0,4777,4778, + 1,0,0,0,4778,4779,5,3,0,0,4779,425,1,0,0,0,4780,4781,5,461,0,0,4781, + 4782,5,105,0,0,4782,4783,5,211,0,0,4783,4784,3,382,191,0,4784,427, + 1,0,0,0,4785,4796,5,306,0,0,4786,4787,5,2,0,0,4787,4792,5,128,0, + 0,4788,4789,5,6,0,0,4789,4791,5,128,0,0,4790,4788,1,0,0,0,4791,4794, + 1,0,0,0,4792,4790,1,0,0,0,4792,4793,1,0,0,0,4793,4795,1,0,0,0,4794, + 4792,1,0,0,0,4795,4797,5,3,0,0,4796,4786,1,0,0,0,4796,4797,1,0,0, + 0,4797,4823,1,0,0,0,4798,4800,5,226,0,0,4799,4801,5,109,0,0,4800, + 4799,1,0,0,0,4800,4801,1,0,0,0,4801,4802,1,0,0,0,4802,4824,3,780, + 390,0,4803,4805,5,92,0,0,4804,4806,5,109,0,0,4805,4804,1,0,0,0,4805, + 4806,1,0,0,0,4806,4807,1,0,0,0,4807,4824,3,774,387,0,4808,4810,5, + 323,0,0,4809,4811,5,109,0,0,4810,4809,1,0,0,0,4810,4811,1,0,0,0, + 4811,4812,1,0,0,0,4812,4824,3,790,395,0,4813,4815,5,349,0,0,4814, + 4816,5,109,0,0,4815,4814,1,0,0,0,4815,4816,1,0,0,0,4816,4817,1,0, + 0,0,4817,4824,3,818,409,0,4818,4820,5,175,0,0,4819,4821,5,109,0, + 0,4820,4819,1,0,0,0,4820,4821,1,0,0,0,4821,4822,1,0,0,0,4822,4824, + 3,788,394,0,4823,4798,1,0,0,0,4823,4803,1,0,0,0,4823,4808,1,0,0, + 0,4823,4813,1,0,0,0,4823,4818,1,0,0,0,4824,429,1,0,0,0,4825,4826, + 5,138,0,0,4826,4827,3,176,88,0,4827,4828,7,16,0,0,4828,4829,3,100, + 50,0,4829,431,1,0,0,0,4830,4835,5,138,0,0,4831,4832,5,136,0,0,4832, + 4836,3,394,197,0,4833,4834,5,442,0,0,4834,4836,3,374,187,0,4835, + 4831,1,0,0,0,4835,4833,1,0,0,0,4836,4837,1,0,0,0,4837,4838,5,309, + 0,0,4838,4839,5,94,0,0,4839,4840,3,818,409,0,4840,5038,1,0,0,0,4841, + 4842,5,138,0,0,4842,4843,5,175,0,0,4843,4844,3,788,394,0,4844,4845, + 5,309,0,0,4845,4846,5,94,0,0,4846,4847,3,786,393,0,4847,5038,1,0, + 0,0,4848,4849,5,138,0,0,4849,4850,7,61,0,0,4850,4851,3,316,158,0, + 4851,4852,5,309,0,0,4852,4853,5,94,0,0,4853,4854,3,818,409,0,4854, + 5038,1,0,0,0,4855,4856,5,138,0,0,4856,4857,5,211,0,0,4857,4858,3, + 382,191,0,4858,4859,5,309,0,0,4859,4860,5,94,0,0,4860,4861,3,804, + 402,0,4861,5038,1,0,0,0,4862,4863,5,138,0,0,4863,4864,5,278,0,0, + 4864,4865,7,31,0,0,4865,4866,3,316,158,0,4866,4867,3,170,85,0,4867, + 4868,5,309,0,0,4868,4869,5,94,0,0,4869,4870,3,818,409,0,4870,5038, + 1,0,0,0,4871,4872,5,138,0,0,4872,4873,5,296,0,0,4873,4874,3,378, + 189,0,4874,4875,5,309,0,0,4875,4876,5,94,0,0,4876,4877,3,798,399, + 0,4877,5038,1,0,0,0,4878,4879,5,138,0,0,4879,4880,5,323,0,0,4880, + 4881,3,790,395,0,4881,4882,5,309,0,0,4882,4883,5,94,0,0,4883,4884, + 3,32,16,0,4884,5038,1,0,0,0,4885,4886,5,138,0,0,4886,4888,7,62,0, + 0,4887,4889,3,422,211,0,4888,4887,1,0,0,0,4888,4889,1,0,0,0,4889, + 4890,1,0,0,0,4890,4891,3,780,390,0,4891,4892,5,309,0,0,4892,4893, + 5,94,0,0,4893,4894,3,818,409,0,4894,5038,1,0,0,0,4895,4897,5,138, + 0,0,4896,4898,5,259,0,0,4897,4896,1,0,0,0,4897,4898,1,0,0,0,4898, + 4899,1,0,0,0,4899,4901,5,376,0,0,4900,4902,3,422,211,0,4901,4900, + 1,0,0,0,4901,4902,1,0,0,0,4902,4903,1,0,0,0,4903,4904,3,778,389, + 0,4904,4905,5,309,0,0,4905,4906,5,94,0,0,4906,4907,3,776,388,0,4907, + 5038,1,0,0,0,4908,4910,5,138,0,0,4909,4911,5,63,0,0,4910,4909,1, + 0,0,0,4910,4911,1,0,0,0,4911,4912,1,0,0,0,4912,4914,5,92,0,0,4913, + 4915,3,422,211,0,4914,4913,1,0,0,0,4914,4915,1,0,0,0,4915,4916,1, + 0,0,0,4916,4917,3,624,312,0,4917,4918,5,309,0,0,4918,4919,5,94,0, + 0,4919,4920,3,772,386,0,4920,5038,1,0,0,0,4921,4946,5,138,0,0,4922, + 4924,5,63,0,0,4923,4922,1,0,0,0,4923,4924,1,0,0,0,4924,4925,1,0, + 0,0,4925,4927,5,92,0,0,4926,4928,3,422,211,0,4927,4926,1,0,0,0,4927, + 4928,1,0,0,0,4928,4929,1,0,0,0,4929,4930,3,624,312,0,4930,4932,5, + 309,0,0,4931,4933,5,44,0,0,4932,4931,1,0,0,0,4932,4933,1,0,0,0,4933, + 4947,1,0,0,0,4934,4936,5,259,0,0,4935,4934,1,0,0,0,4935,4936,1,0, + 0,0,4936,4937,1,0,0,0,4937,4939,5,376,0,0,4938,4940,3,422,211,0, + 4939,4938,1,0,0,0,4939,4940,1,0,0,0,4940,4941,1,0,0,0,4941,4942, + 3,778,389,0,4942,4944,5,309,0,0,4943,4945,5,44,0,0,4944,4943,1,0, + 0,0,4944,4945,1,0,0,0,4945,4947,1,0,0,0,4946,4923,1,0,0,0,4946,4935, + 1,0,0,0,4947,4948,1,0,0,0,4948,4949,3,800,400,0,4949,4950,5,94,0, + 0,4950,4951,3,802,401,0,4951,5038,1,0,0,0,4952,4960,5,138,0,0,4953, + 4955,5,92,0,0,4954,4956,3,422,211,0,4955,4954,1,0,0,0,4955,4956, + 1,0,0,0,4956,4957,1,0,0,0,4957,4961,3,624,312,0,4958,4959,5,189, + 0,0,4959,4961,3,316,158,0,4960,4953,1,0,0,0,4960,4958,1,0,0,0,4961, + 4962,1,0,0,0,4962,4963,5,309,0,0,4963,4964,5,45,0,0,4964,4965,3, + 818,409,0,4965,4966,5,94,0,0,4966,4967,3,818,409,0,4967,5038,1,0, + 0,0,4968,4975,5,138,0,0,4969,4971,5,445,0,0,4970,4972,3,422,211, + 0,4971,4970,1,0,0,0,4971,4972,1,0,0,0,4972,4976,1,0,0,0,4973,4976, + 5,321,0,0,4974,4976,5,357,0,0,4975,4969,1,0,0,0,4975,4973,1,0,0, + 0,4975,4974,1,0,0,0,4976,4977,1,0,0,0,4977,4978,3,818,409,0,4978, + 4979,5,80,0,0,4979,4980,3,780,390,0,4980,4981,5,309,0,0,4981,4982, + 5,94,0,0,4982,4983,3,818,409,0,4983,5038,1,0,0,0,4984,4997,5,138, + 0,0,4985,4986,5,63,0,0,4986,4987,5,174,0,0,4987,4998,5,381,0,0,4988, + 4990,5,295,0,0,4989,4988,1,0,0,0,4989,4990,1,0,0,0,4990,4991,1,0, + 0,0,4991,4998,5,247,0,0,4992,4998,5,452,0,0,4993,4998,5,331,0,0, + 4994,4998,5,451,0,0,4995,4996,5,198,0,0,4996,4998,5,357,0,0,4997, + 4985,1,0,0,0,4997,4989,1,0,0,0,4997,4992,1,0,0,0,4997,4993,1,0,0, + 0,4997,4994,1,0,0,0,4997,4995,1,0,0,0,4998,4999,1,0,0,0,4999,5000, + 3,818,409,0,5000,5001,5,309,0,0,5001,5002,5,94,0,0,5002,5003,3,818, + 409,0,5003,5038,1,0,0,0,5004,5005,5,138,0,0,5005,5006,7,45,0,0,5006, + 5007,3,814,407,0,5007,5008,5,309,0,0,5008,5009,5,94,0,0,5009,5010, + 3,814,407,0,5010,5038,1,0,0,0,5011,5012,5,138,0,0,5012,5013,3,176, + 88,0,5013,5014,5,309,0,0,5014,5015,5,94,0,0,5015,5016,3,768,384, + 0,5016,5038,1,0,0,0,5017,5018,5,138,0,0,5018,5019,5,355,0,0,5019, + 5020,5,325,0,0,5020,5021,7,41,0,0,5021,5022,3,316,158,0,5022,5023, + 5,309,0,0,5023,5024,5,94,0,0,5024,5025,3,818,409,0,5025,5038,1,0, + 0,0,5026,5027,5,138,0,0,5027,5028,5,360,0,0,5028,5029,3,316,158, + 0,5029,5030,5,309,0,0,5030,5031,5,143,0,0,5031,5032,3,818,409,0, + 5032,5033,5,94,0,0,5033,5035,3,818,409,0,5034,5036,3,96,48,0,5035, + 5034,1,0,0,0,5035,5036,1,0,0,0,5036,5038,1,0,0,0,5037,4830,1,0,0, + 0,5037,4841,1,0,0,0,5037,4848,1,0,0,0,5037,4855,1,0,0,0,5037,4862, + 1,0,0,0,5037,4871,1,0,0,0,5037,4878,1,0,0,0,5037,4885,1,0,0,0,5037, + 4895,1,0,0,0,5037,4908,1,0,0,0,5037,4921,1,0,0,0,5037,4952,1,0,0, + 0,5037,4968,1,0,0,0,5037,4984,1,0,0,0,5037,5004,1,0,0,0,5037,5011, + 1,0,0,0,5037,5017,1,0,0,0,5037,5026,1,0,0,0,5038,433,1,0,0,0,5039, + 5056,5,138,0,0,5040,5041,5,211,0,0,5041,5057,3,382,191,0,5042,5043, + 5,296,0,0,5043,5057,3,378,189,0,5044,5045,5,442,0,0,5045,5057,3, + 374,187,0,5046,5047,5,357,0,0,5047,5048,3,818,409,0,5048,5049,5, + 80,0,0,5049,5050,3,780,390,0,5050,5057,1,0,0,0,5051,5052,5,259,0, + 0,5052,5053,5,376,0,0,5053,5057,3,778,389,0,5054,5055,5,226,0,0, + 5055,5057,3,780,390,0,5056,5040,1,0,0,0,5056,5042,1,0,0,0,5056,5044, + 1,0,0,0,5056,5046,1,0,0,0,5056,5051,1,0,0,0,5056,5054,1,0,0,0,5057, + 5059,1,0,0,0,5058,5060,5,269,0,0,5059,5058,1,0,0,0,5059,5060,1,0, + 0,0,5060,5061,1,0,0,0,5061,5062,5,462,0,0,5062,5063,5,80,0,0,5063, + 5064,5,204,0,0,5064,5065,3,818,409,0,5065,435,1,0,0,0,5066,5105, + 5,138,0,0,5067,5068,5,136,0,0,5068,5106,3,394,197,0,5069,5070,5, + 204,0,0,5070,5106,3,818,409,0,5071,5072,5,211,0,0,5072,5106,3,382, + 191,0,5073,5074,5,278,0,0,5074,5106,3,416,208,0,5075,5076,5,278, + 0,0,5076,5077,7,31,0,0,5077,5078,3,316,158,0,5078,5079,3,170,85, + 0,5079,5106,1,0,0,0,5080,5081,5,296,0,0,5081,5106,3,378,189,0,5082, + 5083,5,442,0,0,5083,5106,3,374,187,0,5084,5086,5,328,0,0,5085,5087, + 3,422,211,0,5086,5085,1,0,0,0,5086,5087,1,0,0,0,5087,5088,1,0,0, + 0,5088,5106,3,780,390,0,5089,5091,5,259,0,0,5090,5089,1,0,0,0,5090, + 5091,1,0,0,0,5091,5092,1,0,0,0,5092,5094,5,376,0,0,5093,5095,3,422, + 211,0,5094,5093,1,0,0,0,5094,5095,1,0,0,0,5095,5096,1,0,0,0,5096, + 5106,3,778,389,0,5097,5099,5,63,0,0,5098,5097,1,0,0,0,5098,5099, + 1,0,0,0,5099,5100,1,0,0,0,5100,5102,5,92,0,0,5101,5103,3,422,211, + 0,5102,5101,1,0,0,0,5102,5103,1,0,0,0,5103,5104,1,0,0,0,5104,5106, + 3,624,312,0,5105,5067,1,0,0,0,5105,5069,1,0,0,0,5105,5071,1,0,0, + 0,5105,5073,1,0,0,0,5105,5075,1,0,0,0,5105,5080,1,0,0,0,5105,5082, + 1,0,0,0,5105,5084,1,0,0,0,5105,5090,1,0,0,0,5105,5098,1,0,0,0,5106, + 5107,1,0,0,0,5107,5108,5,333,0,0,5108,5109,5,323,0,0,5109,5110,3, + 790,395,0,5110,5128,1,0,0,0,5111,5120,5,138,0,0,5112,5113,5,355, + 0,0,5113,5114,5,325,0,0,5114,5121,7,41,0,0,5115,5121,5,108,0,0,5116, + 5121,5,168,0,0,5117,5121,5,189,0,0,5118,5121,5,342,0,0,5119,5121, + 5,360,0,0,5120,5112,1,0,0,0,5120,5115,1,0,0,0,5120,5116,1,0,0,0, + 5120,5117,1,0,0,0,5120,5118,1,0,0,0,5120,5119,1,0,0,0,5121,5122, + 1,0,0,0,5122,5123,3,316,158,0,5123,5124,5,333,0,0,5124,5125,5,323, + 0,0,5125,5126,3,790,395,0,5126,5128,1,0,0,0,5127,5066,1,0,0,0,5127, + 5111,1,0,0,0,5128,437,1,0,0,0,5129,5130,5,138,0,0,5130,5131,5,278, + 0,0,5131,5132,3,416,208,0,5132,5133,5,333,0,0,5133,5134,3,440,220, + 0,5134,439,1,0,0,0,5135,5136,5,2,0,0,5136,5141,3,442,221,0,5137, + 5138,5,6,0,0,5138,5140,3,442,221,0,5139,5137,1,0,0,0,5140,5143,1, + 0,0,0,5141,5139,1,0,0,0,5141,5142,1,0,0,0,5142,5144,1,0,0,0,5143, + 5141,1,0,0,0,5144,5145,5,3,0,0,5145,441,1,0,0,0,5146,5147,3,824, + 412,0,5147,5154,5,10,0,0,5148,5155,5,407,0,0,5149,5155,3,388,194, + 0,5150,5155,3,834,417,0,5151,5155,3,726,363,0,5152,5155,3,202,101, + 0,5153,5155,3,808,404,0,5154,5148,1,0,0,0,5154,5149,1,0,0,0,5154, + 5150,1,0,0,0,5154,5151,1,0,0,0,5154,5152,1,0,0,0,5154,5153,1,0,0, + 0,5155,443,1,0,0,0,5156,5157,5,138,0,0,5157,5158,5,360,0,0,5158, + 5159,3,316,158,0,5159,5160,5,333,0,0,5160,5161,3,440,220,0,5161, + 445,1,0,0,0,5162,5163,5,138,0,0,5163,5164,5,278,0,0,5164,5165,7, + 31,0,0,5165,5166,3,316,158,0,5166,5167,3,170,85,0,5167,5168,5,282, + 0,0,5168,5169,5,94,0,0,5169,5170,3,814,407,0,5170,5237,1,0,0,0,5171, + 5198,5,138,0,0,5172,5173,5,136,0,0,5173,5199,3,394,197,0,5174,5175, + 5,175,0,0,5175,5199,3,788,394,0,5176,5177,5,211,0,0,5177,5199,3, + 382,191,0,5178,5180,5,295,0,0,5179,5178,1,0,0,0,5179,5180,1,0,0, + 0,5180,5181,1,0,0,0,5181,5182,5,247,0,0,5182,5199,3,818,409,0,5183, + 5184,5,248,0,0,5184,5185,5,274,0,0,5185,5199,3,202,101,0,5186,5187, + 5,248,0,0,5187,5188,5,274,0,0,5188,5199,3,202,101,0,5189,5190,5, + 278,0,0,5190,5199,3,416,208,0,5191,5192,5,296,0,0,5192,5199,3,378, + 189,0,5193,5194,5,442,0,0,5194,5199,3,374,187,0,5195,5196,5,323, + 0,0,5196,5199,3,790,395,0,5197,5199,3,176,88,0,5198,5172,1,0,0,0, + 5198,5174,1,0,0,0,5198,5176,1,0,0,0,5198,5179,1,0,0,0,5198,5183, + 1,0,0,0,5198,5186,1,0,0,0,5198,5189,1,0,0,0,5198,5191,1,0,0,0,5198, + 5193,1,0,0,0,5198,5195,1,0,0,0,5198,5197,1,0,0,0,5199,5200,1,0,0, + 0,5200,5201,5,282,0,0,5201,5202,5,94,0,0,5202,5203,3,814,407,0,5203, + 5237,1,0,0,0,5204,5213,5,138,0,0,5205,5206,5,355,0,0,5206,5207,5, + 325,0,0,5207,5214,7,63,0,0,5208,5214,5,108,0,0,5209,5214,5,168,0, + 0,5210,5214,5,189,0,0,5211,5214,5,360,0,0,5212,5214,5,342,0,0,5213, + 5205,1,0,0,0,5213,5208,1,0,0,0,5213,5209,1,0,0,0,5213,5210,1,0,0, + 0,5213,5211,1,0,0,0,5213,5212,1,0,0,0,5214,5215,1,0,0,0,5215,5216, + 3,316,158,0,5216,5217,5,282,0,0,5217,5218,5,94,0,0,5218,5219,3,814, + 407,0,5219,5237,1,0,0,0,5220,5229,5,138,0,0,5221,5230,5,331,0,0, + 5222,5223,5,63,0,0,5223,5224,5,174,0,0,5224,5230,5,381,0,0,5225, + 5226,5,198,0,0,5226,5230,5,357,0,0,5227,5230,5,452,0,0,5228,5230, + 5,451,0,0,5229,5221,1,0,0,0,5229,5222,1,0,0,0,5229,5225,1,0,0,0, + 5229,5227,1,0,0,0,5229,5228,1,0,0,0,5230,5231,1,0,0,0,5231,5232, + 3,818,409,0,5232,5233,5,282,0,0,5233,5234,5,94,0,0,5234,5235,3,814, + 407,0,5235,5237,1,0,0,0,5236,5162,1,0,0,0,5236,5171,1,0,0,0,5236, + 5204,1,0,0,0,5236,5220,1,0,0,0,5237,447,1,0,0,0,5238,5239,5,46,0, + 0,5239,5240,5,452,0,0,5240,5247,3,818,409,0,5241,5242,5,62,0,0,5242, + 5243,5,92,0,0,5243,5248,3,628,314,0,5244,5245,5,62,0,0,5245,5246, + 5,30,0,0,5246,5248,5,350,0,0,5247,5241,1,0,0,0,5247,5244,1,0,0,0, + 5247,5248,1,0,0,0,5248,5250,1,0,0,0,5249,5251,3,400,200,0,5250,5249, + 1,0,0,0,5250,5251,1,0,0,0,5251,449,1,0,0,0,5252,5253,5,138,0,0,5253, + 5254,5,452,0,0,5254,5272,3,818,409,0,5255,5256,5,282,0,0,5256,5257, + 5,94,0,0,5257,5273,3,814,407,0,5258,5259,5,333,0,0,5259,5273,3,284, + 142,0,5260,5261,5,309,0,0,5261,5262,5,94,0,0,5262,5273,3,818,409, + 0,5263,5264,7,34,0,0,5264,5269,3,626,313,0,5265,5266,5,6,0,0,5266, + 5268,3,626,313,0,5267,5265,1,0,0,0,5268,5271,1,0,0,0,5269,5267,1, + 0,0,0,5269,5270,1,0,0,0,5270,5273,1,0,0,0,5271,5269,1,0,0,0,5272, + 5255,1,0,0,0,5272,5258,1,0,0,0,5272,5260,1,0,0,0,5272,5263,1,0,0, + 0,5273,451,1,0,0,0,5274,5275,5,46,0,0,5275,5276,5,451,0,0,5276,5277, + 3,818,409,0,5277,5278,5,164,0,0,5278,5279,3,808,404,0,5279,5280, + 5,452,0,0,5280,5285,3,824,412,0,5281,5282,5,6,0,0,5282,5284,3,824, + 412,0,5283,5281,1,0,0,0,5284,5287,1,0,0,0,5285,5283,1,0,0,0,5285, + 5286,1,0,0,0,5286,5289,1,0,0,0,5287,5285,1,0,0,0,5288,5290,3,400, + 200,0,5289,5288,1,0,0,0,5289,5290,1,0,0,0,5290,453,1,0,0,0,5291, + 5292,5,138,0,0,5292,5293,5,451,0,0,5293,5294,3,818,409,0,5294,5295, + 5,333,0,0,5295,5296,3,284,142,0,5296,5348,1,0,0,0,5297,5298,5,138, + 0,0,5298,5299,5,451,0,0,5299,5300,3,818,409,0,5300,5301,5,164,0, + 0,5301,5302,3,808,404,0,5302,5348,1,0,0,0,5303,5304,5,138,0,0,5304, + 5305,5,451,0,0,5305,5306,3,818,409,0,5306,5307,5,305,0,0,5307,5309, + 5,452,0,0,5308,5310,3,400,200,0,5309,5308,1,0,0,0,5309,5310,1,0, + 0,0,5310,5348,1,0,0,0,5311,5312,5,138,0,0,5312,5313,5,451,0,0,5313, + 5314,3,818,409,0,5314,5315,7,34,0,0,5315,5316,5,452,0,0,5316,5321, + 3,824,412,0,5317,5318,5,6,0,0,5318,5320,3,824,412,0,5319,5317,1, + 0,0,0,5320,5323,1,0,0,0,5321,5319,1,0,0,0,5321,5322,1,0,0,0,5322, + 5325,1,0,0,0,5323,5321,1,0,0,0,5324,5326,3,400,200,0,5325,5324,1, + 0,0,0,5325,5326,1,0,0,0,5326,5348,1,0,0,0,5327,5328,5,138,0,0,5328, + 5329,5,451,0,0,5329,5330,3,818,409,0,5330,5331,7,64,0,0,5331,5348, + 1,0,0,0,5332,5333,5,138,0,0,5333,5334,5,451,0,0,5334,5335,3,818, + 409,0,5335,5336,5,465,0,0,5336,5337,5,2,0,0,5337,5338,3,290,145, + 0,5338,5339,5,3,0,0,5339,5348,1,0,0,0,5340,5341,5,138,0,0,5341,5342, + 5,451,0,0,5342,5343,3,818,409,0,5343,5344,5,282,0,0,5344,5345,5, + 94,0,0,5345,5346,3,814,407,0,5346,5348,1,0,0,0,5347,5291,1,0,0,0, + 5347,5297,1,0,0,0,5347,5303,1,0,0,0,5347,5311,1,0,0,0,5347,5327, + 1,0,0,0,5347,5332,1,0,0,0,5347,5340,1,0,0,0,5348,455,1,0,0,0,5349, + 5351,5,46,0,0,5350,5352,3,366,183,0,5351,5350,1,0,0,0,5351,5352, + 1,0,0,0,5352,5353,1,0,0,0,5353,5354,5,321,0,0,5354,5355,3,818,409, + 0,5355,5356,5,36,0,0,5356,5357,5,80,0,0,5357,5358,7,65,0,0,5358, + 5359,5,94,0,0,5359,5361,3,780,390,0,5360,5362,3,638,319,0,5361,5360, + 1,0,0,0,5361,5362,1,0,0,0,5362,5363,1,0,0,0,5363,5365,5,57,0,0,5364, + 5366,7,66,0,0,5365,5364,1,0,0,0,5365,5366,1,0,0,0,5366,5383,1,0, + 0,0,5367,5384,5,270,0,0,5368,5384,3,458,229,0,5369,5371,5,2,0,0, + 5370,5372,3,458,229,0,5371,5370,1,0,0,0,5371,5372,1,0,0,0,5372,5379, + 1,0,0,0,5373,5375,5,7,0,0,5374,5376,3,458,229,0,5375,5374,1,0,0, + 0,5375,5376,1,0,0,0,5376,5378,1,0,0,0,5377,5373,1,0,0,0,5378,5381, + 1,0,0,0,5379,5377,1,0,0,0,5379,5380,1,0,0,0,5380,5382,1,0,0,0,5381, + 5379,1,0,0,0,5382,5384,5,3,0,0,5383,5367,1,0,0,0,5383,5368,1,0,0, + 0,5383,5369,1,0,0,0,5384,457,1,0,0,0,5385,5391,3,560,280,0,5386, + 5391,3,538,269,0,5387,5391,3,552,276,0,5388,5391,3,548,274,0,5389, + 5391,3,460,230,0,5390,5385,1,0,0,0,5390,5386,1,0,0,0,5390,5387,1, + 0,0,0,5390,5388,1,0,0,0,5390,5389,1,0,0,0,5391,459,1,0,0,0,5392, + 5393,5,271,0,0,5393,5395,3,818,409,0,5394,5396,3,462,231,0,5395, + 5394,1,0,0,0,5395,5396,1,0,0,0,5396,461,1,0,0,0,5397,5398,5,6,0, + 0,5398,5399,3,808,404,0,5399,463,1,0,0,0,5400,5401,5,252,0,0,5401, + 5402,3,818,409,0,5402,465,1,0,0,0,5403,5406,5,366,0,0,5404,5407, + 3,818,409,0,5405,5407,5,9,0,0,5406,5404,1,0,0,0,5406,5405,1,0,0, + 0,5407,467,1,0,0,0,5408,5410,5,146,0,0,5409,5411,3,470,235,0,5410, + 5409,1,0,0,0,5410,5411,1,0,0,0,5411,5413,1,0,0,0,5412,5414,3,474, + 237,0,5413,5412,1,0,0,0,5413,5414,1,0,0,0,5414,5454,1,0,0,0,5415, + 5416,5,340,0,0,5416,5418,5,356,0,0,5417,5419,3,474,237,0,5418,5417, + 1,0,0,0,5418,5419,1,0,0,0,5419,5454,1,0,0,0,5420,5421,5,322,0,0, + 5421,5454,3,818,409,0,5422,5424,5,308,0,0,5423,5425,5,322,0,0,5424, + 5423,1,0,0,0,5424,5425,1,0,0,0,5425,5426,1,0,0,0,5426,5454,3,818, + 409,0,5427,5428,5,290,0,0,5428,5429,5,356,0,0,5429,5454,3,808,404, + 0,5430,5431,7,67,0,0,5431,5432,5,291,0,0,5432,5454,3,808,404,0,5433, + 5435,7,68,0,0,5434,5436,3,470,235,0,5435,5434,1,0,0,0,5435,5436, + 1,0,0,0,5436,5442,1,0,0,0,5437,5439,5,33,0,0,5438,5440,5,269,0,0, + 5439,5438,1,0,0,0,5439,5440,1,0,0,0,5440,5441,1,0,0,0,5441,5443, + 5,153,0,0,5442,5437,1,0,0,0,5442,5443,1,0,0,0,5443,5454,1,0,0,0, + 5444,5446,5,319,0,0,5445,5447,3,470,235,0,5446,5445,1,0,0,0,5446, + 5447,1,0,0,0,5447,5448,1,0,0,0,5448,5450,5,94,0,0,5449,5451,5,322, + 0,0,5450,5449,1,0,0,0,5450,5451,1,0,0,0,5451,5452,1,0,0,0,5452,5454, + 3,818,409,0,5453,5408,1,0,0,0,5453,5415,1,0,0,0,5453,5420,1,0,0, + 0,5453,5422,1,0,0,0,5453,5427,1,0,0,0,5453,5430,1,0,0,0,5453,5433, + 1,0,0,0,5453,5444,1,0,0,0,5454,469,1,0,0,0,5455,5456,7,69,0,0,5456, + 471,1,0,0,0,5457,5458,5,244,0,0,5458,5459,5,251,0,0,5459,5467,3, + 50,25,0,5460,5461,5,300,0,0,5461,5467,7,70,0,0,5462,5464,5,77,0, + 0,5463,5462,1,0,0,0,5463,5464,1,0,0,0,5464,5465,1,0,0,0,5465,5467, + 5,54,0,0,5466,5457,1,0,0,0,5466,5460,1,0,0,0,5466,5463,1,0,0,0,5467, + 473,1,0,0,0,5468,5475,3,472,236,0,5469,5471,5,6,0,0,5470,5469,1, + 0,0,0,5470,5471,1,0,0,0,5471,5472,1,0,0,0,5472,5474,3,472,236,0, + 5473,5470,1,0,0,0,5474,5477,1,0,0,0,5475,5473,1,0,0,0,5475,5476, + 1,0,0,0,5476,475,1,0,0,0,5477,5475,1,0,0,0,5478,5481,5,46,0,0,5479, + 5480,5,82,0,0,5480,5482,5,311,0,0,5481,5479,1,0,0,0,5481,5482,1, + 0,0,0,5482,5484,1,0,0,0,5483,5485,3,122,61,0,5484,5483,1,0,0,0,5484, + 5485,1,0,0,0,5485,5501,1,0,0,0,5486,5487,5,376,0,0,5487,5489,3,776, + 388,0,5488,5490,3,146,73,0,5489,5488,1,0,0,0,5489,5490,1,0,0,0,5490, + 5492,1,0,0,0,5491,5493,3,102,51,0,5492,5491,1,0,0,0,5492,5493,1, + 0,0,0,5493,5502,1,0,0,0,5494,5495,5,303,0,0,5495,5496,5,376,0,0, + 5496,5497,3,776,388,0,5497,5499,3,144,72,0,5498,5500,3,102,51,0, + 5499,5498,1,0,0,0,5499,5500,1,0,0,0,5500,5502,1,0,0,0,5501,5486, + 1,0,0,0,5501,5494,1,0,0,0,5502,5503,1,0,0,0,5503,5504,5,36,0,0,5504, + 5511,3,560,280,0,5505,5507,5,105,0,0,5506,5508,7,71,0,0,5507,5506, + 1,0,0,0,5507,5508,1,0,0,0,5508,5509,1,0,0,0,5509,5510,5,42,0,0,5510, + 5512,5,279,0,0,5511,5505,1,0,0,0,5511,5512,1,0,0,0,5512,477,1,0, + 0,0,5513,5514,5,253,0,0,5514,5515,3,808,404,0,5515,479,1,0,0,0,5516, + 5517,5,46,0,0,5517,5518,5,175,0,0,5518,5520,3,786,393,0,5519,5521, + 5,105,0,0,5520,5519,1,0,0,0,5520,5521,1,0,0,0,5521,5527,1,0,0,0, + 5522,5524,3,482,241,0,5523,5522,1,0,0,0,5524,5525,1,0,0,0,5525,5523, + 1,0,0,0,5525,5526,1,0,0,0,5526,5528,1,0,0,0,5527,5523,1,0,0,0,5527, + 5528,1,0,0,0,5528,481,1,0,0,0,5529,5530,5,164,0,0,5530,5538,5,74, + 0,0,5531,5538,5,194,0,0,5532,5538,5,255,0,0,5533,5538,5,282,0,0, + 5534,5538,5,351,0,0,5535,5538,5,353,0,0,5536,5538,3,826,413,0,5537, + 5529,1,0,0,0,5537,5531,1,0,0,0,5537,5532,1,0,0,0,5537,5533,1,0,0, + 0,5537,5534,1,0,0,0,5537,5535,1,0,0,0,5537,5536,1,0,0,0,5538,5540, + 1,0,0,0,5539,5541,5,10,0,0,5540,5539,1,0,0,0,5540,5541,1,0,0,0,5541, + 5545,1,0,0,0,5542,5546,3,812,406,0,5543,5546,3,54,27,0,5544,5546, + 5,53,0,0,5545,5542,1,0,0,0,5545,5543,1,0,0,0,5545,5544,1,0,0,0,5546, + 483,1,0,0,0,5547,5548,5,138,0,0,5548,5549,5,175,0,0,5549,5565,3, + 788,394,0,5550,5551,5,333,0,0,5551,5552,5,351,0,0,5552,5554,3,768, + 384,0,5553,5550,1,0,0,0,5553,5554,1,0,0,0,5554,5566,1,0,0,0,5555, + 5557,5,105,0,0,5556,5555,1,0,0,0,5556,5557,1,0,0,0,5557,5559,1,0, + 0,0,5558,5560,3,482,241,0,5559,5558,1,0,0,0,5560,5561,1,0,0,0,5561, + 5559,1,0,0,0,5561,5562,1,0,0,0,5562,5564,1,0,0,0,5563,5556,1,0,0, + 0,5563,5564,1,0,0,0,5564,5566,1,0,0,0,5565,5553,1,0,0,0,5565,5563, + 1,0,0,0,5566,485,1,0,0,0,5567,5568,5,138,0,0,5568,5569,5,175,0,0, + 5569,5571,3,788,394,0,5570,5572,3,64,32,0,5571,5570,1,0,0,0,5571, + 5572,1,0,0,0,5572,487,1,0,0,0,5573,5574,5,138,0,0,5574,5575,5,108, + 0,0,5575,5576,3,316,158,0,5576,5577,5,305,0,0,5577,5578,5,375,0, + 0,5578,489,1,0,0,0,5579,5580,5,138,0,0,5580,5581,5,349,0,0,5581, + 5582,7,16,0,0,5582,5583,3,40,20,0,5583,491,1,0,0,0,5584,5585,5,46, + 0,0,5585,5586,5,189,0,0,5586,5588,3,316,158,0,5587,5589,5,36,0,0, + 5588,5587,1,0,0,0,5588,5589,1,0,0,0,5589,5590,1,0,0,0,5590,5594, + 3,652,326,0,5591,5593,3,134,67,0,5592,5591,1,0,0,0,5593,5596,1,0, + 0,0,5594,5592,1,0,0,0,5594,5595,1,0,0,0,5595,493,1,0,0,0,5596,5594, + 1,0,0,0,5597,5598,5,138,0,0,5598,5599,5,189,0,0,5599,5622,3,316, + 158,0,5600,5623,3,94,47,0,5601,5602,7,15,0,0,5602,5603,5,77,0,0, + 5603,5623,5,78,0,0,5604,5607,5,133,0,0,5605,5606,5,45,0,0,5606,5608, + 3,818,409,0,5607,5605,1,0,0,0,5607,5608,1,0,0,0,5608,5609,1,0,0, + 0,5609,5623,3,142,71,0,5610,5611,5,191,0,0,5611,5613,5,45,0,0,5612, + 5614,3,422,211,0,5613,5612,1,0,0,0,5613,5614,1,0,0,0,5614,5615,1, + 0,0,0,5615,5617,3,818,409,0,5616,5618,3,96,48,0,5617,5616,1,0,0, + 0,5617,5618,1,0,0,0,5618,5623,1,0,0,0,5619,5620,5,372,0,0,5620,5621, + 5,45,0,0,5621,5623,3,818,409,0,5622,5600,1,0,0,0,5622,5601,1,0,0, + 0,5622,5604,1,0,0,0,5622,5610,1,0,0,0,5622,5619,1,0,0,0,5623,495, + 1,0,0,0,5624,5625,5,138,0,0,5625,5626,5,355,0,0,5626,5627,5,325, + 0,0,5627,5628,5,185,0,0,5628,5629,3,316,158,0,5629,5630,3,284,142, + 0,5630,497,1,0,0,0,5631,5632,5,138,0,0,5632,5633,5,355,0,0,5633, + 5634,5,325,0,0,5634,5635,5,163,0,0,5635,5636,3,316,158,0,5636,5637, + 7,72,0,0,5637,5638,5,257,0,0,5638,5639,5,62,0,0,5639,5640,3,784, + 392,0,5640,5641,5,105,0,0,5641,5642,3,314,157,0,5642,5673,1,0,0, + 0,5643,5644,5,138,0,0,5644,5645,5,355,0,0,5645,5646,5,325,0,0,5646, + 5647,5,163,0,0,5647,5648,3,316,158,0,5648,5649,5,138,0,0,5649,5652, + 5,257,0,0,5650,5651,5,62,0,0,5651,5653,3,784,392,0,5652,5650,1,0, + 0,0,5652,5653,1,0,0,0,5653,5654,1,0,0,0,5654,5655,5,311,0,0,5655, + 5656,3,316,158,0,5656,5657,5,105,0,0,5657,5658,3,316,158,0,5658, + 5673,1,0,0,0,5659,5660,5,138,0,0,5660,5661,5,355,0,0,5661,5662,5, + 325,0,0,5662,5663,5,163,0,0,5663,5664,3,316,158,0,5664,5665,5,191, + 0,0,5665,5667,5,257,0,0,5666,5668,3,422,211,0,5667,5666,1,0,0,0, + 5667,5668,1,0,0,0,5668,5669,1,0,0,0,5669,5670,5,62,0,0,5670,5671, + 3,784,392,0,5671,5673,1,0,0,0,5672,5631,1,0,0,0,5672,5643,1,0,0, + 0,5672,5659,1,0,0,0,5673,499,1,0,0,0,5674,5676,5,46,0,0,5675,5677, + 5,53,0,0,5676,5675,1,0,0,0,5676,5677,1,0,0,0,5677,5678,1,0,0,0,5678, + 5679,5,168,0,0,5679,5680,3,316,158,0,5680,5681,5,62,0,0,5681,5682, + 3,808,404,0,5682,5683,5,94,0,0,5683,5684,3,808,404,0,5684,5685,5, + 64,0,0,5685,5686,3,316,158,0,5686,501,1,0,0,0,5687,5689,5,158,0, + 0,5688,5690,3,514,257,0,5689,5688,1,0,0,0,5689,5690,1,0,0,0,5690, + 5695,1,0,0,0,5691,5693,3,774,387,0,5692,5694,3,170,85,0,5693,5692, + 1,0,0,0,5693,5694,1,0,0,0,5694,5696,1,0,0,0,5695,5691,1,0,0,0,5695, + 5696,1,0,0,0,5696,5713,1,0,0,0,5697,5698,5,158,0,0,5698,5699,5,2, + 0,0,5699,5704,3,514,257,0,5700,5701,5,6,0,0,5701,5703,3,514,257, + 0,5702,5700,1,0,0,0,5703,5706,1,0,0,0,5704,5702,1,0,0,0,5704,5705, + 1,0,0,0,5705,5707,1,0,0,0,5706,5704,1,0,0,0,5707,5708,5,3,0,0,5708, + 5710,3,774,387,0,5709,5711,3,170,85,0,5710,5709,1,0,0,0,5710,5711, + 1,0,0,0,5711,5713,1,0,0,0,5712,5687,1,0,0,0,5712,5697,1,0,0,0,5713, + 503,1,0,0,0,5714,5730,5,370,0,0,5715,5717,5,113,0,0,5716,5715,1, + 0,0,0,5716,5717,1,0,0,0,5717,5719,1,0,0,0,5718,5720,5,112,0,0,5719, + 5718,1,0,0,0,5719,5720,1,0,0,0,5720,5722,1,0,0,0,5721,5723,3,514, + 257,0,5722,5721,1,0,0,0,5722,5723,1,0,0,0,5723,5725,1,0,0,0,5724, + 5726,3,508,254,0,5725,5724,1,0,0,0,5725,5726,1,0,0,0,5726,5731,1, + 0,0,0,5727,5729,3,524,262,0,5728,5727,1,0,0,0,5728,5729,1,0,0,0, + 5729,5731,1,0,0,0,5730,5716,1,0,0,0,5730,5728,1,0,0,0,5731,5733, + 1,0,0,0,5732,5734,3,518,259,0,5733,5732,1,0,0,0,5733,5734,1,0,0, + 0,5734,505,1,0,0,0,5735,5750,3,508,254,0,5736,5738,3,514,257,0,5737, + 5736,1,0,0,0,5737,5738,1,0,0,0,5738,5751,1,0,0,0,5739,5740,5,2,0, + 0,5740,5745,3,512,256,0,5741,5742,5,6,0,0,5742,5744,3,512,256,0, + 5743,5741,1,0,0,0,5744,5747,1,0,0,0,5745,5743,1,0,0,0,5745,5746, + 1,0,0,0,5746,5748,1,0,0,0,5747,5745,1,0,0,0,5748,5749,5,3,0,0,5749, + 5751,1,0,0,0,5750,5737,1,0,0,0,5750,5739,1,0,0,0,5751,5753,1,0,0, + 0,5752,5754,3,518,259,0,5753,5752,1,0,0,0,5753,5754,1,0,0,0,5754, + 507,1,0,0,0,5755,5756,7,73,0,0,5756,509,1,0,0,0,5757,5760,3,822, + 411,0,5758,5760,3,508,254,0,5759,5757,1,0,0,0,5759,5758,1,0,0,0, + 5760,5763,1,0,0,0,5761,5764,3,54,27,0,5762,5764,3,202,101,0,5763, + 5761,1,0,0,0,5763,5762,1,0,0,0,5763,5764,1,0,0,0,5764,511,1,0,0, + 0,5765,5767,7,74,0,0,5766,5768,7,75,0,0,5767,5766,1,0,0,0,5767,5768, + 1,0,0,0,5768,5775,1,0,0,0,5769,5772,5,548,0,0,5770,5773,3,202,101, + 0,5771,5773,3,808,404,0,5772,5770,1,0,0,0,5772,5771,1,0,0,0,5773, + 5775,1,0,0,0,5774,5765,1,0,0,0,5774,5769,1,0,0,0,5775,513,1,0,0, + 0,5776,5778,5,128,0,0,5777,5779,7,75,0,0,5778,5777,1,0,0,0,5778, + 5779,1,0,0,0,5779,515,1,0,0,0,5780,5782,3,774,387,0,5781,5783,3, + 144,72,0,5782,5781,1,0,0,0,5782,5783,1,0,0,0,5783,517,1,0,0,0,5784, + 5789,3,516,258,0,5785,5786,5,6,0,0,5786,5788,3,516,258,0,5787,5785, + 1,0,0,0,5788,5791,1,0,0,0,5789,5787,1,0,0,0,5789,5790,1,0,0,0,5790, + 519,1,0,0,0,5791,5789,1,0,0,0,5792,5803,5,203,0,0,5793,5804,3,524, + 262,0,5794,5796,5,128,0,0,5795,5794,1,0,0,0,5795,5796,1,0,0,0,5796, + 5804,1,0,0,0,5797,5799,3,508,254,0,5798,5800,3,514,257,0,5799,5798, + 1,0,0,0,5799,5800,1,0,0,0,5800,5802,1,0,0,0,5801,5797,1,0,0,0,5801, + 5802,1,0,0,0,5802,5804,1,0,0,0,5803,5793,1,0,0,0,5803,5795,1,0,0, + 0,5803,5801,1,0,0,0,5804,5805,1,0,0,0,5805,5806,3,522,261,0,5806, + 521,1,0,0,0,5807,5817,3,560,280,0,5808,5817,3,538,269,0,5809,5817, + 3,552,276,0,5810,5817,3,548,274,0,5811,5817,3,558,279,0,5812,5817, + 3,186,93,0,5813,5817,3,192,96,0,5814,5817,3,194,97,0,5815,5817,3, + 532,266,0,5816,5807,1,0,0,0,5816,5808,1,0,0,0,5816,5809,1,0,0,0, + 5816,5810,1,0,0,0,5816,5811,1,0,0,0,5816,5812,1,0,0,0,5816,5813, + 1,0,0,0,5816,5814,1,0,0,0,5816,5815,1,0,0,0,5817,523,1,0,0,0,5818, + 5819,5,2,0,0,5819,5824,3,510,255,0,5820,5821,5,6,0,0,5821,5823,3, + 510,255,0,5822,5820,1,0,0,0,5823,5826,1,0,0,0,5824,5822,1,0,0,0, + 5824,5825,1,0,0,0,5825,5827,1,0,0,0,5826,5824,1,0,0,0,5827,5828, + 5,3,0,0,5828,525,1,0,0,0,5829,5830,5,290,0,0,5830,5832,3,818,409, + 0,5831,5833,3,528,264,0,5832,5831,1,0,0,0,5832,5833,1,0,0,0,5833, + 5834,1,0,0,0,5834,5835,5,36,0,0,5835,5836,3,530,265,0,5836,527,1, + 0,0,0,5837,5838,5,2,0,0,5838,5843,3,652,326,0,5839,5840,5,6,0,0, + 5840,5842,3,652,326,0,5841,5839,1,0,0,0,5842,5845,1,0,0,0,5843,5841, + 1,0,0,0,5843,5844,1,0,0,0,5844,5846,1,0,0,0,5845,5843,1,0,0,0,5846, + 5847,5,3,0,0,5847,529,1,0,0,0,5848,5853,3,560,280,0,5849,5853,3, + 538,269,0,5850,5853,3,552,276,0,5851,5853,3,548,274,0,5852,5848, + 1,0,0,0,5852,5849,1,0,0,0,5852,5850,1,0,0,0,5852,5851,1,0,0,0,5853, + 531,1,0,0,0,5854,5855,5,202,0,0,5855,5857,3,818,409,0,5856,5858, + 3,534,267,0,5857,5856,1,0,0,0,5857,5858,1,0,0,0,5858,5878,1,0,0, + 0,5859,5861,5,46,0,0,5860,5862,3,122,61,0,5861,5860,1,0,0,0,5861, + 5862,1,0,0,0,5862,5863,1,0,0,0,5863,5865,5,92,0,0,5864,5866,3,294, + 147,0,5865,5864,1,0,0,0,5865,5866,1,0,0,0,5866,5867,1,0,0,0,5867, + 5868,3,188,94,0,5868,5869,5,36,0,0,5869,5870,5,202,0,0,5870,5872, + 3,818,409,0,5871,5873,3,534,267,0,5872,5871,1,0,0,0,5872,5873,1, + 0,0,0,5873,5875,1,0,0,0,5874,5876,3,190,95,0,5875,5874,1,0,0,0,5875, + 5876,1,0,0,0,5876,5878,1,0,0,0,5877,5854,1,0,0,0,5877,5859,1,0,0, + 0,5878,533,1,0,0,0,5879,5880,5,2,0,0,5880,5881,3,730,365,0,5881, + 5882,5,3,0,0,5882,535,1,0,0,0,5883,5885,5,177,0,0,5884,5886,5,290, + 0,0,5885,5884,1,0,0,0,5885,5886,1,0,0,0,5886,5889,1,0,0,0,5887,5890, + 3,818,409,0,5888,5890,5,30,0,0,5889,5887,1,0,0,0,5889,5888,1,0,0, + 0,5890,537,1,0,0,0,5891,5893,3,572,286,0,5892,5891,1,0,0,0,5892, + 5893,1,0,0,0,5893,5894,1,0,0,0,5894,5895,5,241,0,0,5895,5896,5,71, + 0,0,5896,5899,3,774,387,0,5897,5898,5,36,0,0,5898,5900,3,818,409, + 0,5899,5897,1,0,0,0,5899,5900,1,0,0,0,5900,5901,1,0,0,0,5901,5923, + 3,540,270,0,5902,5903,5,80,0,0,5903,5911,5,464,0,0,5904,5906,3,360, + 180,0,5905,5907,3,638,319,0,5906,5905,1,0,0,0,5906,5907,1,0,0,0, + 5907,5912,1,0,0,0,5908,5909,5,80,0,0,5909,5910,5,45,0,0,5910,5912, + 3,818,409,0,5911,5904,1,0,0,0,5911,5908,1,0,0,0,5911,5912,1,0,0, + 0,5912,5913,1,0,0,0,5913,5921,5,57,0,0,5914,5915,5,369,0,0,5915, + 5916,5,333,0,0,5916,5918,3,554,277,0,5917,5919,3,638,319,0,5918, + 5917,1,0,0,0,5918,5919,1,0,0,0,5919,5922,1,0,0,0,5920,5922,5,270, + 0,0,5921,5914,1,0,0,0,5921,5920,1,0,0,0,5922,5924,1,0,0,0,5923,5902, + 1,0,0,0,5923,5924,1,0,0,0,5924,5926,1,0,0,0,5925,5927,3,546,273, + 0,5926,5925,1,0,0,0,5926,5927,1,0,0,0,5927,539,1,0,0,0,5928,5929, + 5,2,0,0,5929,5930,3,542,271,0,5930,5931,5,3,0,0,5931,5933,1,0,0, + 0,5932,5928,1,0,0,0,5932,5933,1,0,0,0,5933,5937,1,0,0,0,5934,5935, + 5,463,0,0,5935,5936,7,76,0,0,5936,5938,5,450,0,0,5937,5934,1,0,0, + 0,5937,5938,1,0,0,0,5938,5941,1,0,0,0,5939,5942,3,910,455,0,5940, + 5942,3,560,280,0,5941,5939,1,0,0,0,5941,5940,1,0,0,0,5942,541,1, + 0,0,0,5943,5948,3,544,272,0,5944,5945,5,6,0,0,5945,5947,3,544,272, + 0,5946,5944,1,0,0,0,5947,5950,1,0,0,0,5948,5946,1,0,0,0,5948,5949, + 1,0,0,0,5949,543,1,0,0,0,5950,5948,1,0,0,0,5951,5952,3,800,400,0, + 5952,5953,3,754,377,0,5953,545,1,0,0,0,5954,5955,5,87,0,0,5955,5956, + 3,756,378,0,5956,547,1,0,0,0,5957,5959,3,572,286,0,5958,5957,1,0, + 0,0,5958,5959,1,0,0,0,5959,5960,1,0,0,0,5960,5961,5,182,0,0,5961, + 5962,5,64,0,0,5962,5965,3,630,315,0,5963,5964,5,100,0,0,5964,5966, + 3,612,306,0,5965,5963,1,0,0,0,5965,5966,1,0,0,0,5966,5968,1,0,0, + 0,5967,5969,3,640,320,0,5968,5967,1,0,0,0,5968,5969,1,0,0,0,5969, + 5971,1,0,0,0,5970,5972,3,546,273,0,5971,5970,1,0,0,0,5971,5972,1, + 0,0,0,5972,549,1,0,0,0,5973,5975,5,256,0,0,5974,5976,5,92,0,0,5975, + 5974,1,0,0,0,5975,5976,1,0,0,0,5976,5977,1,0,0,0,5977,5992,3,628, + 314,0,5978,5989,5,68,0,0,5979,5980,7,77,0,0,5980,5990,7,78,0,0,5981, + 5986,5,334,0,0,5982,5983,5,369,0,0,5983,5987,5,201,0,0,5984,5985, + 5,414,0,0,5985,5987,5,201,0,0,5986,5982,1,0,0,0,5986,5984,1,0,0, + 0,5986,5987,1,0,0,0,5987,5990,1,0,0,0,5988,5990,5,201,0,0,5989,5979, + 1,0,0,0,5989,5981,1,0,0,0,5989,5988,1,0,0,0,5990,5991,1,0,0,0,5991, + 5993,5,263,0,0,5992,5978,1,0,0,0,5992,5993,1,0,0,0,5993,5995,1,0, + 0,0,5994,5996,5,272,0,0,5995,5994,1,0,0,0,5995,5996,1,0,0,0,5996, + 551,1,0,0,0,5997,5999,3,572,286,0,5998,5997,1,0,0,0,5998,5999,1, + 0,0,0,5999,6000,1,0,0,0,6000,6001,5,369,0,0,6001,6002,3,630,315, + 0,6002,6003,5,333,0,0,6003,6005,3,554,277,0,6004,6006,3,610,305, + 0,6005,6004,1,0,0,0,6005,6006,1,0,0,0,6006,6008,1,0,0,0,6007,6009, + 3,640,320,0,6008,6007,1,0,0,0,6008,6009,1,0,0,0,6009,6011,1,0,0, + 0,6010,6012,3,546,273,0,6011,6010,1,0,0,0,6011,6012,1,0,0,0,6012, + 553,1,0,0,0,6013,6018,3,556,278,0,6014,6015,5,6,0,0,6015,6017,3, + 556,278,0,6016,6014,1,0,0,0,6017,6020,1,0,0,0,6018,6016,1,0,0,0, + 6018,6019,1,0,0,0,6019,555,1,0,0,0,6020,6018,1,0,0,0,6021,6022,3, + 544,272,0,6022,6023,5,10,0,0,6023,6024,3,674,337,0,6024,6040,1,0, + 0,0,6025,6026,5,2,0,0,6026,6027,3,542,271,0,6027,6028,5,3,0,0,6028, + 6037,5,10,0,0,6029,6031,5,414,0,0,6030,6029,1,0,0,0,6030,6031,1, + 0,0,0,6031,6032,1,0,0,0,6032,6038,3,674,337,0,6033,6034,5,2,0,0, + 6034,6035,3,566,283,0,6035,6036,5,3,0,0,6036,6038,1,0,0,0,6037,6030, + 1,0,0,0,6037,6033,1,0,0,0,6038,6040,1,0,0,0,6039,6021,1,0,0,0,6039, + 6025,1,0,0,0,6040,557,1,0,0,0,6041,6042,5,178,0,0,6042,6051,3,818, + 409,0,6043,6045,5,269,0,0,6044,6043,1,0,0,0,6044,6045,1,0,0,0,6045, + 6046,1,0,0,0,6046,6050,5,324,0,0,6047,6050,5,107,0,0,6048,6050,5, + 240,0,0,6049,6044,1,0,0,0,6049,6047,1,0,0,0,6049,6048,1,0,0,0,6050, + 6053,1,0,0,0,6051,6049,1,0,0,0,6051,6052,1,0,0,0,6052,6054,1,0,0, + 0,6053,6051,1,0,0,0,6054,6057,5,172,0,0,6055,6056,7,26,0,0,6056, + 6058,5,217,0,0,6057,6055,1,0,0,0,6057,6058,1,0,0,0,6058,6059,1,0, + 0,0,6059,6060,5,62,0,0,6060,6061,3,560,280,0,6061,559,1,0,0,0,6062, + 6065,3,564,282,0,6063,6065,3,562,281,0,6064,6062,1,0,0,0,6064,6063, + 1,0,0,0,6065,561,1,0,0,0,6066,6069,5,2,0,0,6067,6070,3,564,282,0, + 6068,6070,3,562,281,0,6069,6067,1,0,0,0,6069,6068,1,0,0,0,6070,6071, + 1,0,0,0,6071,6072,5,3,0,0,6072,563,1,0,0,0,6073,6075,3,572,286,0, + 6074,6073,1,0,0,0,6074,6075,1,0,0,0,6075,6076,1,0,0,0,6076,6078, + 3,566,283,0,6077,6079,3,586,293,0,6078,6077,1,0,0,0,6078,6079,1, + 0,0,0,6079,6088,1,0,0,0,6080,6082,3,606,303,0,6081,6083,3,590,295, + 0,6082,6081,1,0,0,0,6082,6083,1,0,0,0,6083,6089,1,0,0,0,6084,6086, + 3,590,295,0,6085,6087,3,606,303,0,6086,6085,1,0,0,0,6086,6087,1, + 0,0,0,6087,6089,1,0,0,0,6088,6080,1,0,0,0,6088,6084,1,0,0,0,6088, + 6089,1,0,0,0,6089,565,1,0,0,0,6090,6093,3,568,284,0,6091,6093,3, + 562,281,0,6092,6090,1,0,0,0,6092,6091,1,0,0,0,6093,567,1,0,0,0,6094, + 6104,5,88,0,0,6095,6097,5,30,0,0,6096,6095,1,0,0,0,6096,6097,1,0, + 0,0,6097,6099,1,0,0,0,6098,6100,3,580,290,0,6099,6098,1,0,0,0,6099, + 6100,1,0,0,0,6100,6105,1,0,0,0,6101,6103,3,584,292,0,6102,6101,1, + 0,0,0,6102,6103,1,0,0,0,6103,6105,1,0,0,0,6104,6096,1,0,0,0,6104, + 6102,1,0,0,0,6105,6106,1,0,0,0,6106,6117,3,930,465,0,6107,6117,3, + 608,304,0,6108,6109,5,92,0,0,6109,6117,3,624,312,0,6110,6111,3,562, + 281,0,6111,6114,3,570,285,0,6112,6115,3,568,284,0,6113,6115,3,562, + 281,0,6114,6112,1,0,0,0,6114,6113,1,0,0,0,6115,6117,1,0,0,0,6116, + 6094,1,0,0,0,6116,6107,1,0,0,0,6116,6108,1,0,0,0,6116,6110,1,0,0, + 0,6117,6125,1,0,0,0,6118,6121,3,570,285,0,6119,6122,3,568,284,0, + 6120,6122,3,562,281,0,6121,6119,1,0,0,0,6121,6120,1,0,0,0,6122,6124, + 1,0,0,0,6123,6118,1,0,0,0,6124,6127,1,0,0,0,6125,6123,1,0,0,0,6125, + 6126,1,0,0,0,6126,569,1,0,0,0,6127,6125,1,0,0,0,6128,6130,7,79,0, + 0,6129,6131,7,80,0,0,6130,6129,1,0,0,0,6130,6131,1,0,0,0,6131,571, + 1,0,0,0,6132,6134,5,105,0,0,6133,6135,5,303,0,0,6134,6133,1,0,0, + 0,6134,6135,1,0,0,0,6135,6136,1,0,0,0,6136,6141,3,574,287,0,6137, + 6138,5,6,0,0,6138,6140,3,574,287,0,6139,6137,1,0,0,0,6140,6143,1, + 0,0,0,6141,6139,1,0,0,0,6141,6142,1,0,0,0,6142,573,1,0,0,0,6143, + 6141,1,0,0,0,6144,6146,3,818,409,0,6145,6147,3,144,72,0,6146,6145, + 1,0,0,0,6146,6147,1,0,0,0,6147,6148,1,0,0,0,6148,6153,5,36,0,0,6149, + 6151,5,77,0,0,6150,6149,1,0,0,0,6150,6151,1,0,0,0,6151,6152,1,0, + 0,0,6152,6154,5,259,0,0,6153,6150,1,0,0,0,6153,6154,1,0,0,0,6154, + 6155,1,0,0,0,6155,6156,5,2,0,0,6156,6157,3,530,265,0,6157,6159,5, + 3,0,0,6158,6160,3,576,288,0,6159,6158,1,0,0,0,6159,6160,1,0,0,0, + 6160,6162,1,0,0,0,6161,6163,3,578,289,0,6162,6161,1,0,0,0,6162,6163, + 1,0,0,0,6163,575,1,0,0,0,6164,6165,5,325,0,0,6165,6166,7,81,0,0, + 6166,6167,5,207,0,0,6167,6168,5,147,0,0,6168,6169,3,148,74,0,6169, + 6170,5,333,0,0,6170,6171,3,800,400,0,6171,577,1,0,0,0,6172,6173, + 5,173,0,0,6173,6174,3,148,74,0,6174,6175,5,333,0,0,6175,6181,3,800, + 400,0,6176,6177,5,94,0,0,6177,6178,3,818,409,0,6178,6179,5,53,0, + 0,6179,6180,3,818,409,0,6180,6182,1,0,0,0,6181,6176,1,0,0,0,6181, + 6182,1,0,0,0,6182,6183,1,0,0,0,6183,6184,5,100,0,0,6184,6185,3,800, + 400,0,6185,579,1,0,0,0,6186,6192,5,71,0,0,6187,6189,5,346,0,0,6188, + 6187,1,0,0,0,6188,6189,1,0,0,0,6189,6190,1,0,0,0,6190,6193,3,582, + 291,0,6191,6193,3,730,365,0,6192,6188,1,0,0,0,6192,6191,1,0,0,0, + 6193,581,1,0,0,0,6194,6196,7,20,0,0,6195,6194,1,0,0,0,6195,6196, + 1,0,0,0,6196,6197,1,0,0,0,6197,6199,7,21,0,0,6198,6200,5,92,0,0, + 6199,6198,1,0,0,0,6199,6200,1,0,0,0,6200,6201,1,0,0,0,6201,6210, + 3,772,386,0,6202,6204,5,367,0,0,6203,6202,1,0,0,0,6203,6204,1,0, + 0,0,6204,6206,1,0,0,0,6205,6207,5,92,0,0,6206,6205,1,0,0,0,6206, + 6207,1,0,0,0,6207,6208,1,0,0,0,6208,6210,3,772,386,0,6209,6195,1, + 0,0,0,6209,6203,1,0,0,0,6210,583,1,0,0,0,6211,6214,5,56,0,0,6212, + 6213,5,80,0,0,6213,6215,3,534,267,0,6214,6212,1,0,0,0,6214,6215, + 1,0,0,0,6215,585,1,0,0,0,6216,6217,5,83,0,0,6217,6218,5,147,0,0, + 6218,6223,3,588,294,0,6219,6220,5,6,0,0,6220,6222,3,588,294,0,6221, + 6219,1,0,0,0,6222,6225,1,0,0,0,6223,6221,1,0,0,0,6223,6224,1,0,0, + 0,6224,587,1,0,0,0,6225,6223,1,0,0,0,6226,6230,3,734,367,0,6227, + 6228,5,100,0,0,6228,6231,3,726,363,0,6229,6231,7,55,0,0,6230,6227, + 1,0,0,0,6230,6229,1,0,0,0,6230,6231,1,0,0,0,6231,6234,1,0,0,0,6232, + 6233,5,273,0,0,6233,6235,7,56,0,0,6234,6232,1,0,0,0,6234,6235,1, + 0,0,0,6235,589,1,0,0,0,6236,6238,3,596,298,0,6237,6239,3,594,297, + 0,6238,6237,1,0,0,0,6238,6239,1,0,0,0,6239,6248,1,0,0,0,6240,6243, + 3,592,296,0,6241,6243,3,594,297,0,6242,6240,1,0,0,0,6242,6241,1, + 0,0,0,6243,6245,1,0,0,0,6244,6246,3,596,298,0,6245,6244,1,0,0,0, + 6245,6246,1,0,0,0,6246,6248,1,0,0,0,6247,6236,1,0,0,0,6247,6242, + 1,0,0,0,6248,591,1,0,0,0,6249,6252,5,74,0,0,6250,6253,3,674,337, + 0,6251,6253,5,30,0,0,6252,6250,1,0,0,0,6252,6251,1,0,0,0,6253,6256, + 1,0,0,0,6254,6255,5,6,0,0,6255,6257,3,674,337,0,6256,6254,1,0,0, + 0,6256,6257,1,0,0,0,6257,593,1,0,0,0,6258,6259,5,61,0,0,6259,6261, + 7,82,0,0,6260,6262,3,598,299,0,6261,6260,1,0,0,0,6261,6262,1,0,0, + 0,6262,6263,1,0,0,0,6263,6267,7,83,0,0,6264,6268,5,81,0,0,6265,6266, + 5,105,0,0,6266,6268,5,467,0,0,6267,6264,1,0,0,0,6267,6265,1,0,0, + 0,6268,595,1,0,0,0,6269,6274,5,79,0,0,6270,6271,3,598,299,0,6271, + 6272,7,83,0,0,6272,6275,1,0,0,0,6273,6275,3,674,337,0,6274,6270, + 1,0,0,0,6274,6273,1,0,0,0,6275,597,1,0,0,0,6276,6277,7,29,0,0,6277, + 6280,7,84,0,0,6278,6280,3,682,341,0,6279,6276,1,0,0,0,6279,6278, + 1,0,0,0,6280,599,1,0,0,0,6281,6282,5,66,0,0,6282,6284,5,147,0,0, + 6283,6285,7,80,0,0,6284,6283,1,0,0,0,6284,6285,1,0,0,0,6285,6286, + 1,0,0,0,6286,6287,3,602,301,0,6287,601,1,0,0,0,6288,6293,3,604,302, + 0,6289,6290,5,6,0,0,6290,6292,3,604,302,0,6291,6289,1,0,0,0,6292, + 6295,1,0,0,0,6293,6291,1,0,0,0,6293,6294,1,0,0,0,6294,603,1,0,0, + 0,6295,6293,1,0,0,0,6296,6320,3,734,367,0,6297,6298,5,2,0,0,6298, + 6320,5,3,0,0,6299,6301,7,85,0,0,6300,6299,1,0,0,0,6300,6301,1,0, + 0,0,6301,6302,1,0,0,0,6302,6303,5,2,0,0,6303,6308,3,734,367,0,6304, + 6305,5,6,0,0,6305,6307,3,734,367,0,6306,6304,1,0,0,0,6307,6310,1, + 0,0,0,6308,6306,1,0,0,0,6308,6309,1,0,0,0,6309,6311,1,0,0,0,6310, + 6308,1,0,0,0,6311,6312,5,3,0,0,6312,6320,1,0,0,0,6313,6314,5,470, + 0,0,6314,6315,5,471,0,0,6315,6316,5,2,0,0,6316,6317,3,602,301,0, + 6317,6318,5,3,0,0,6318,6320,1,0,0,0,6319,6296,1,0,0,0,6319,6297, + 1,0,0,0,6319,6300,1,0,0,0,6319,6313,1,0,0,0,6320,605,1,0,0,0,6321, + 6331,5,62,0,0,6322,6323,5,269,0,0,6323,6325,5,245,0,0,6324,6322, + 1,0,0,0,6324,6325,1,0,0,0,6325,6326,1,0,0,0,6326,6332,5,369,0,0, + 6327,6329,5,245,0,0,6328,6327,1,0,0,0,6328,6329,1,0,0,0,6329,6330, + 1,0,0,0,6330,6332,5,334,0,0,6331,6324,1,0,0,0,6331,6328,1,0,0,0, + 6332,6335,1,0,0,0,6333,6334,5,275,0,0,6334,6336,3,760,380,0,6335, + 6333,1,0,0,0,6335,6336,1,0,0,0,6336,6340,1,0,0,0,6337,6341,5,272, + 0,0,6338,6339,5,465,0,0,6339,6341,5,466,0,0,6340,6337,1,0,0,0,6340, + 6338,1,0,0,0,6340,6341,1,0,0,0,6341,6343,1,0,0,0,6342,6321,1,0,0, + 0,6343,6344,1,0,0,0,6344,6342,1,0,0,0,6344,6345,1,0,0,0,6345,6350, + 1,0,0,0,6346,6347,5,62,0,0,6347,6348,5,300,0,0,6348,6350,5,81,0, + 0,6349,6342,1,0,0,0,6349,6346,1,0,0,0,6350,607,1,0,0,0,6351,6352, + 5,422,0,0,6352,6357,3,534,267,0,6353,6354,5,6,0,0,6354,6356,3,534, + 267,0,6355,6353,1,0,0,0,6356,6359,1,0,0,0,6357,6355,1,0,0,0,6357, + 6358,1,0,0,0,6358,609,1,0,0,0,6359,6357,1,0,0,0,6360,6361,5,64,0, + 0,6361,6362,3,612,306,0,6362,611,1,0,0,0,6363,6368,3,614,307,0,6364, + 6365,5,6,0,0,6365,6367,3,614,307,0,6366,6364,1,0,0,0,6367,6370,1, + 0,0,0,6368,6366,1,0,0,0,6368,6369,1,0,0,0,6369,613,1,0,0,0,6370, + 6368,1,0,0,0,6371,6386,3,624,312,0,6372,6374,5,81,0,0,6373,6372, + 1,0,0,0,6373,6374,1,0,0,0,6374,6375,1,0,0,0,6375,6377,3,778,389, + 0,6376,6378,5,9,0,0,6377,6376,1,0,0,0,6377,6378,1,0,0,0,6378,6380, + 1,0,0,0,6379,6381,3,148,74,0,6380,6379,1,0,0,0,6380,6381,1,0,0,0, + 6381,6383,1,0,0,0,6382,6384,3,638,319,0,6383,6382,1,0,0,0,6383,6384, + 1,0,0,0,6384,6386,1,0,0,0,6385,6371,1,0,0,0,6385,6373,1,0,0,0,6386, + 6388,1,0,0,0,6387,6389,3,616,308,0,6388,6387,1,0,0,0,6388,6389,1, + 0,0,0,6389,6391,1,0,0,0,6390,6392,3,632,316,0,6391,6390,1,0,0,0, + 6391,6392,1,0,0,0,6392,6435,1,0,0,0,6393,6395,5,72,0,0,6394,6393, + 1,0,0,0,6394,6395,1,0,0,0,6395,6408,1,0,0,0,6396,6398,3,646,323, + 0,6397,6399,3,616,308,0,6398,6397,1,0,0,0,6398,6399,1,0,0,0,6399, + 6409,1,0,0,0,6400,6402,3,634,317,0,6401,6403,3,618,309,0,6402,6401, + 1,0,0,0,6402,6403,1,0,0,0,6403,6409,1,0,0,0,6404,6406,3,562,281, + 0,6405,6407,3,616,308,0,6406,6405,1,0,0,0,6406,6407,1,0,0,0,6407, + 6409,1,0,0,0,6408,6396,1,0,0,0,6408,6400,1,0,0,0,6408,6404,1,0,0, + 0,6409,6435,1,0,0,0,6410,6411,5,2,0,0,6411,6428,3,614,307,0,6412, + 6413,5,110,0,0,6413,6414,5,118,0,0,6414,6429,3,614,307,0,6415,6417, + 5,121,0,0,6416,6418,3,620,310,0,6417,6416,1,0,0,0,6417,6418,1,0, + 0,0,6418,6419,1,0,0,0,6419,6420,5,118,0,0,6420,6429,3,614,307,0, + 6421,6423,3,620,310,0,6422,6421,1,0,0,0,6422,6423,1,0,0,0,6423,6424, + 1,0,0,0,6424,6425,5,118,0,0,6425,6426,3,614,307,0,6426,6427,3,622, + 311,0,6427,6429,1,0,0,0,6428,6412,1,0,0,0,6428,6415,1,0,0,0,6428, + 6422,1,0,0,0,6428,6429,1,0,0,0,6429,6430,1,0,0,0,6430,6432,5,3,0, + 0,6431,6433,3,616,308,0,6432,6431,1,0,0,0,6432,6433,1,0,0,0,6433, + 6435,1,0,0,0,6434,6385,1,0,0,0,6434,6394,1,0,0,0,6434,6410,1,0,0, + 0,6435,6454,1,0,0,0,6436,6437,5,110,0,0,6437,6438,5,118,0,0,6438, + 6453,3,614,307,0,6439,6441,5,121,0,0,6440,6442,3,620,310,0,6441, + 6440,1,0,0,0,6441,6442,1,0,0,0,6442,6443,1,0,0,0,6443,6444,5,118, + 0,0,6444,6453,3,614,307,0,6445,6447,3,620,310,0,6446,6445,1,0,0, + 0,6446,6447,1,0,0,0,6447,6448,1,0,0,0,6448,6449,5,118,0,0,6449,6450, + 3,614,307,0,6450,6451,3,622,311,0,6451,6453,1,0,0,0,6452,6436,1, + 0,0,0,6452,6439,1,0,0,0,6452,6446,1,0,0,0,6453,6456,1,0,0,0,6454, + 6452,1,0,0,0,6454,6455,1,0,0,0,6455,615,1,0,0,0,6456,6454,1,0,0, + 0,6457,6459,5,36,0,0,6458,6457,1,0,0,0,6458,6459,1,0,0,0,6459,6460, + 1,0,0,0,6460,6465,3,818,409,0,6461,6462,5,2,0,0,6462,6463,3,784, + 392,0,6463,6464,5,3,0,0,6464,6466,1,0,0,0,6465,6461,1,0,0,0,6465, + 6466,1,0,0,0,6466,617,1,0,0,0,6467,6480,3,616,308,0,6468,6470,5, + 36,0,0,6469,6471,3,818,409,0,6470,6469,1,0,0,0,6470,6471,1,0,0,0, + 6471,6474,1,0,0,0,6472,6474,3,818,409,0,6473,6468,1,0,0,0,6473,6472, + 1,0,0,0,6474,6475,1,0,0,0,6475,6476,5,2,0,0,6476,6477,3,642,321, + 0,6477,6478,5,3,0,0,6478,6480,1,0,0,0,6479,6467,1,0,0,0,6479,6473, + 1,0,0,0,6480,619,1,0,0,0,6481,6483,7,86,0,0,6482,6484,5,123,0,0, + 6483,6482,1,0,0,0,6483,6484,1,0,0,0,6484,621,1,0,0,0,6485,6486,5, + 100,0,0,6486,6490,3,144,72,0,6487,6488,5,80,0,0,6488,6490,3,674, + 337,0,6489,6485,1,0,0,0,6489,6487,1,0,0,0,6490,623,1,0,0,0,6491, + 6507,3,322,161,0,6492,6498,5,81,0,0,6493,6499,3,774,387,0,6494,6495, + 5,2,0,0,6495,6496,3,774,387,0,6496,6497,5,3,0,0,6497,6499,1,0,0, + 0,6498,6493,1,0,0,0,6498,6494,1,0,0,0,6499,6507,1,0,0,0,6500,6501, + 5,68,0,0,6501,6504,5,323,0,0,6502,6505,3,790,395,0,6503,6505,5,111, + 0,0,6504,6502,1,0,0,0,6504,6503,1,0,0,0,6505,6507,1,0,0,0,6506,6491, + 1,0,0,0,6506,6492,1,0,0,0,6506,6500,1,0,0,0,6507,625,1,0,0,0,6508, + 6509,5,92,0,0,6509,6511,3,322,161,0,6510,6512,3,144,72,0,6511,6510, + 1,0,0,0,6511,6512,1,0,0,0,6512,6514,1,0,0,0,6513,6515,3,638,319, + 0,6514,6513,1,0,0,0,6514,6515,1,0,0,0,6515,6533,1,0,0,0,6516,6517, + 5,92,0,0,6517,6523,5,81,0,0,6518,6524,3,774,387,0,6519,6520,5,2, + 0,0,6520,6521,3,774,387,0,6521,6522,5,3,0,0,6522,6524,1,0,0,0,6523, + 6518,1,0,0,0,6523,6519,1,0,0,0,6524,6533,1,0,0,0,6525,6526,5,350, + 0,0,6526,6527,5,68,0,0,6527,6530,5,323,0,0,6528,6531,3,790,395,0, + 6529,6531,5,111,0,0,6530,6528,1,0,0,0,6530,6529,1,0,0,0,6531,6533, + 1,0,0,0,6532,6508,1,0,0,0,6532,6516,1,0,0,0,6532,6525,1,0,0,0,6533, + 627,1,0,0,0,6534,6539,3,624,312,0,6535,6536,5,6,0,0,6536,6538,3, + 624,312,0,6537,6535,1,0,0,0,6538,6541,1,0,0,0,6539,6537,1,0,0,0, + 6539,6540,1,0,0,0,6540,629,1,0,0,0,6541,6539,1,0,0,0,6542,6547,3, + 624,312,0,6543,6545,5,36,0,0,6544,6543,1,0,0,0,6544,6545,1,0,0,0, + 6545,6546,1,0,0,0,6546,6548,3,818,409,0,6547,6544,1,0,0,0,6547,6548, + 1,0,0,0,6548,631,1,0,0,0,6549,6550,5,472,0,0,6550,6551,3,806,403, + 0,6551,6557,3,534,267,0,6552,6553,5,310,0,0,6553,6554,5,2,0,0,6554, + 6555,3,674,337,0,6555,6556,5,3,0,0,6556,6558,1,0,0,0,6557,6552,1, + 0,0,0,6557,6558,1,0,0,0,6558,633,1,0,0,0,6559,6574,3,688,344,0,6560, + 6561,5,320,0,0,6561,6562,5,64,0,0,6562,6563,5,2,0,0,6563,6568,3, + 636,318,0,6564,6565,5,6,0,0,6565,6567,3,636,318,0,6566,6564,1,0, + 0,0,6567,6570,1,0,0,0,6568,6566,1,0,0,0,6568,6569,1,0,0,0,6569,6571, + 1,0,0,0,6570,6568,1,0,0,0,6571,6572,5,3,0,0,6572,6574,1,0,0,0,6573, + 6559,1,0,0,0,6573,6560,1,0,0,0,6574,6577,1,0,0,0,6575,6576,5,105, + 0,0,6576,6578,5,473,0,0,6577,6575,1,0,0,0,6577,6578,1,0,0,0,6578, + 635,1,0,0,0,6579,6585,3,688,344,0,6580,6581,5,36,0,0,6581,6582,5, + 2,0,0,6582,6583,3,642,321,0,6583,6584,5,3,0,0,6584,6586,1,0,0,0, + 6585,6580,1,0,0,0,6585,6586,1,0,0,0,6586,637,1,0,0,0,6587,6588,5, + 103,0,0,6588,6589,3,734,367,0,6589,639,1,0,0,0,6590,6595,5,103,0, + 0,6591,6592,5,434,0,0,6592,6593,5,275,0,0,6593,6596,3,818,409,0, + 6594,6596,3,674,337,0,6595,6591,1,0,0,0,6595,6594,1,0,0,0,6596,641, + 1,0,0,0,6597,6602,3,644,322,0,6598,6599,5,6,0,0,6599,6601,3,644, + 322,0,6600,6598,1,0,0,0,6601,6604,1,0,0,0,6602,6600,1,0,0,0,6602, + 6603,1,0,0,0,6603,643,1,0,0,0,6604,6602,1,0,0,0,6605,6606,3,818, + 409,0,6606,6608,3,652,326,0,6607,6609,3,98,49,0,6608,6607,1,0,0, + 0,6608,6609,1,0,0,0,6609,645,1,0,0,0,6610,6611,5,474,0,0,6611,6625, + 5,2,0,0,6612,6613,5,476,0,0,6613,6614,5,2,0,0,6614,6619,3,650,325, + 0,6615,6616,5,6,0,0,6616,6618,3,650,325,0,6617,6615,1,0,0,0,6618, + 6621,1,0,0,0,6619,6617,1,0,0,0,6619,6620,1,0,0,0,6620,6622,1,0,0, + 0,6621,6619,1,0,0,0,6622,6623,5,3,0,0,6623,6624,5,6,0,0,6624,6626, + 1,0,0,0,6625,6612,1,0,0,0,6625,6626,1,0,0,0,6626,6627,1,0,0,0,6627, + 6628,3,682,341,0,6628,6629,3,698,349,0,6629,6630,5,475,0,0,6630, + 6635,3,648,324,0,6631,6632,5,6,0,0,6632,6634,3,648,324,0,6633,6631, + 1,0,0,0,6634,6637,1,0,0,0,6635,6633,1,0,0,0,6635,6636,1,0,0,0,6636, + 6638,1,0,0,0,6637,6635,1,0,0,0,6638,6639,5,3,0,0,6639,647,1,0,0, + 0,6640,6659,3,818,409,0,6641,6655,3,652,326,0,6642,6645,5,53,0,0, + 6643,6645,3,826,413,0,6644,6642,1,0,0,0,6644,6643,1,0,0,0,6645,6646, + 1,0,0,0,6646,6652,3,674,337,0,6647,6649,5,77,0,0,6648,6647,1,0,0, + 0,6648,6649,1,0,0,0,6649,6650,1,0,0,0,6650,6652,5,78,0,0,6651,6644, + 1,0,0,0,6651,6648,1,0,0,0,6652,6653,1,0,0,0,6653,6651,1,0,0,0,6653, + 6654,1,0,0,0,6654,6656,1,0,0,0,6655,6651,1,0,0,0,6655,6656,1,0,0, + 0,6656,6660,1,0,0,0,6657,6658,5,62,0,0,6658,6660,5,473,0,0,6659, + 6641,1,0,0,0,6659,6657,1,0,0,0,6660,649,1,0,0,0,6661,6662,3,682, + 341,0,6662,6663,5,36,0,0,6663,6664,3,824,412,0,6664,6668,1,0,0,0, + 6665,6666,5,53,0,0,6666,6668,3,682,341,0,6667,6661,1,0,0,0,6667, + 6665,1,0,0,0,6668,651,1,0,0,0,6669,6671,5,415,0,0,6670,6669,1,0, + 0,0,6670,6671,1,0,0,0,6671,6672,1,0,0,0,6672,6689,3,654,327,0,6673, + 6675,5,4,0,0,6674,6676,5,571,0,0,6675,6674,1,0,0,0,6675,6676,1,0, + 0,0,6676,6677,1,0,0,0,6677,6679,5,5,0,0,6678,6673,1,0,0,0,6679,6682, + 1,0,0,0,6680,6678,1,0,0,0,6680,6681,1,0,0,0,6681,6690,1,0,0,0,6682, + 6680,1,0,0,0,6683,6687,5,35,0,0,6684,6685,5,4,0,0,6685,6686,5,571, + 0,0,6686,6688,5,5,0,0,6687,6684,1,0,0,0,6687,6688,1,0,0,0,6688,6690, + 1,0,0,0,6689,6680,1,0,0,0,6689,6683,1,0,0,0,6690,6696,1,0,0,0,6691, + 6692,3,780,390,0,6692,6693,5,27,0,0,6693,6694,7,87,0,0,6694,6696, + 1,0,0,0,6695,6670,1,0,0,0,6695,6691,1,0,0,0,6696,653,1,0,0,0,6697, + 6699,3,820,410,0,6698,6700,3,318,159,0,6699,6698,1,0,0,0,6699,6700, + 1,0,0,0,6700,6702,1,0,0,0,6701,6703,3,534,267,0,6702,6701,1,0,0, + 0,6702,6703,1,0,0,0,6703,6713,1,0,0,0,6704,6713,3,656,328,0,6705, + 6710,5,403,0,0,6706,6708,3,668,334,0,6707,6706,1,0,0,0,6707,6708, + 1,0,0,0,6708,6711,1,0,0,0,6709,6711,3,660,330,0,6710,6707,1,0,0, + 0,6710,6709,1,0,0,0,6711,6713,1,0,0,0,6712,6697,1,0,0,0,6712,6704, + 1,0,0,0,6712,6705,1,0,0,0,6713,655,1,0,0,0,6714,6719,3,658,329,0, + 6715,6719,3,662,331,0,6716,6719,3,664,332,0,6717,6719,3,666,333, + 0,6718,6714,1,0,0,0,6718,6715,1,0,0,0,6718,6716,1,0,0,0,6718,6717, + 1,0,0,0,6719,657,1,0,0,0,6720,6737,5,401,0,0,6721,6737,5,402,0,0, + 6722,6737,5,416,0,0,6723,6737,5,388,0,0,6724,6737,5,413,0,0,6725, + 6727,5,398,0,0,6726,6728,3,660,330,0,6727,6726,1,0,0,0,6727,6728, + 1,0,0,0,6728,6737,1,0,0,0,6729,6730,5,190,0,0,6730,6737,5,412,0, + 0,6731,6733,7,88,0,0,6732,6734,3,534,267,0,6733,6732,1,0,0,0,6733, + 6734,1,0,0,0,6734,6737,1,0,0,0,6735,6737,5,390,0,0,6736,6720,1,0, + 0,0,6736,6721,1,0,0,0,6736,6722,1,0,0,0,6736,6723,1,0,0,0,6736,6724, + 1,0,0,0,6736,6725,1,0,0,0,6736,6729,1,0,0,0,6736,6731,1,0,0,0,6736, + 6735,1,0,0,0,6737,659,1,0,0,0,6738,6739,5,2,0,0,6739,6740,5,571, + 0,0,6740,6741,5,3,0,0,6741,661,1,0,0,0,6742,6744,5,389,0,0,6743, + 6745,5,374,0,0,6744,6743,1,0,0,0,6744,6745,1,0,0,0,6745,6747,1,0, + 0,0,6746,6748,3,534,267,0,6747,6746,1,0,0,0,6747,6748,1,0,0,0,6748, + 663,1,0,0,0,6749,6751,7,89,0,0,6750,6752,5,374,0,0,6751,6750,1,0, + 0,0,6751,6752,1,0,0,0,6752,6760,1,0,0,0,6753,6760,5,423,0,0,6754, + 6755,5,405,0,0,6755,6757,7,90,0,0,6756,6758,5,374,0,0,6757,6756, + 1,0,0,0,6757,6758,1,0,0,0,6758,6760,1,0,0,0,6759,6749,1,0,0,0,6759, + 6753,1,0,0,0,6759,6754,1,0,0,0,6760,6762,1,0,0,0,6761,6763,3,660, + 330,0,6762,6761,1,0,0,0,6762,6763,1,0,0,0,6763,665,1,0,0,0,6764, + 6766,7,91,0,0,6765,6767,3,660,330,0,6766,6765,1,0,0,0,6766,6767, + 1,0,0,0,6767,6771,1,0,0,0,6768,6769,7,26,0,0,6769,6770,5,418,0,0, + 6770,6772,5,386,0,0,6771,6768,1,0,0,0,6771,6772,1,0,0,0,6772,667, + 1,0,0,0,6773,6803,5,264,0,0,6774,6803,3,670,335,0,6775,6778,5,384, + 0,0,6776,6777,5,94,0,0,6777,6779,5,264,0,0,6778,6776,1,0,0,0,6778, + 6779,1,0,0,0,6779,6803,1,0,0,0,6780,6787,5,176,0,0,6781,6785,5,94, + 0,0,6782,6786,5,218,0,0,6783,6786,5,261,0,0,6784,6786,3,670,335, + 0,6785,6782,1,0,0,0,6785,6783,1,0,0,0,6785,6784,1,0,0,0,6786,6788, + 1,0,0,0,6787,6781,1,0,0,0,6787,6788,1,0,0,0,6788,6803,1,0,0,0,6789, + 6795,5,218,0,0,6790,6793,5,94,0,0,6791,6794,5,261,0,0,6792,6794, + 3,670,335,0,6793,6791,1,0,0,0,6793,6792,1,0,0,0,6794,6796,1,0,0, + 0,6795,6790,1,0,0,0,6795,6796,1,0,0,0,6796,6803,1,0,0,0,6797,6800, + 5,261,0,0,6798,6799,5,94,0,0,6799,6801,3,670,335,0,6800,6798,1,0, + 0,0,6800,6801,1,0,0,0,6801,6803,1,0,0,0,6802,6773,1,0,0,0,6802,6774, + 1,0,0,0,6802,6775,1,0,0,0,6802,6780,1,0,0,0,6802,6789,1,0,0,0,6802, + 6797,1,0,0,0,6803,669,1,0,0,0,6804,6806,5,326,0,0,6805,6807,3,660, + 330,0,6806,6805,1,0,0,0,6806,6807,1,0,0,0,6807,671,1,0,0,0,6808, + 6809,7,92,0,0,6809,673,1,0,0,0,6810,6811,3,676,338,0,6811,675,1, + 0,0,0,6812,6813,6,338,-1,0,6813,6815,3,680,340,0,6814,6816,3,678, + 339,0,6815,6814,1,0,0,0,6815,6816,1,0,0,0,6816,6820,1,0,0,0,6817, + 6818,5,77,0,0,6818,6820,3,676,338,3,6819,6812,1,0,0,0,6819,6817, + 1,0,0,0,6820,6829,1,0,0,0,6821,6822,10,2,0,0,6822,6823,5,33,0,0, + 6823,6828,3,676,338,3,6824,6825,10,1,0,0,6825,6826,5,82,0,0,6826, + 6828,3,676,338,2,6827,6821,1,0,0,0,6827,6824,1,0,0,0,6828,6831,1, + 0,0,0,6829,6827,1,0,0,0,6829,6830,1,0,0,0,6830,677,1,0,0,0,6831, + 6829,1,0,0,0,6832,6833,3,672,336,0,6833,6834,3,680,340,0,6834,6904, + 1,0,0,0,6835,6836,3,672,336,0,6836,6837,3,728,364,0,6837,6843,3, + 718,359,0,6838,6844,3,562,281,0,6839,6840,5,2,0,0,6840,6841,3,674, + 337,0,6841,6842,5,3,0,0,6842,6844,1,0,0,0,6843,6838,1,0,0,0,6843, + 6839,1,0,0,0,6844,6904,1,0,0,0,6845,6847,5,77,0,0,6846,6845,1,0, + 0,0,6846,6847,1,0,0,0,6847,6848,1,0,0,0,6848,6849,5,387,0,0,6849, + 6850,3,680,340,0,6850,6851,5,33,0,0,6851,6852,3,680,340,0,6852,6904, + 1,0,0,0,6853,6855,5,77,0,0,6854,6853,1,0,0,0,6854,6855,1,0,0,0,6855, + 6856,1,0,0,0,6856,6857,5,68,0,0,6857,6858,5,2,0,0,6858,6863,3,674, + 337,0,6859,6860,5,6,0,0,6860,6862,3,674,337,0,6861,6859,1,0,0,0, + 6862,6865,1,0,0,0,6863,6861,1,0,0,0,6863,6864,1,0,0,0,6864,6866, + 1,0,0,0,6865,6863,1,0,0,0,6866,6867,5,3,0,0,6867,6904,1,0,0,0,6868, + 6870,5,77,0,0,6869,6868,1,0,0,0,6869,6870,1,0,0,0,6870,6871,1,0, + 0,0,6871,6872,5,68,0,0,6872,6904,3,562,281,0,6873,6875,5,77,0,0, + 6874,6873,1,0,0,0,6874,6875,1,0,0,0,6875,6884,1,0,0,0,6876,6885, + 5,120,0,0,6877,6885,5,114,0,0,6878,6879,5,127,0,0,6879,6885,5,94, + 0,0,6880,6882,5,387,0,0,6881,6883,5,91,0,0,6882,6881,1,0,0,0,6882, + 6883,1,0,0,0,6883,6885,1,0,0,0,6884,6876,1,0,0,0,6884,6877,1,0,0, + 0,6884,6878,1,0,0,0,6884,6880,1,0,0,0,6885,6886,1,0,0,0,6886,6889, + 3,680,340,0,6887,6888,5,197,0,0,6888,6890,3,680,340,0,6889,6887, + 1,0,0,0,6889,6890,1,0,0,0,6890,6904,1,0,0,0,6891,6893,5,116,0,0, + 6892,6894,5,77,0,0,6893,6892,1,0,0,0,6893,6894,1,0,0,0,6894,6895, + 1,0,0,0,6895,6904,5,78,0,0,6896,6898,5,116,0,0,6897,6899,5,77,0, + 0,6898,6897,1,0,0,0,6898,6899,1,0,0,0,6899,6900,1,0,0,0,6900,6901, + 5,56,0,0,6901,6902,5,64,0,0,6902,6904,3,680,340,0,6903,6832,1,0, + 0,0,6903,6835,1,0,0,0,6903,6846,1,0,0,0,6903,6854,1,0,0,0,6903,6869, + 1,0,0,0,6903,6874,1,0,0,0,6903,6891,1,0,0,0,6903,6896,1,0,0,0,6904, + 679,1,0,0,0,6905,6906,6,340,-1,0,6906,6910,3,682,341,0,6907,6908, + 7,29,0,0,6908,6910,3,680,340,4,6909,6905,1,0,0,0,6909,6907,1,0,0, + 0,6910,6927,1,0,0,0,6911,6912,10,3,0,0,6912,6913,7,93,0,0,6913,6926, + 3,680,340,4,6914,6915,10,2,0,0,6915,6916,7,29,0,0,6916,6926,3,680, + 340,3,6917,6918,10,1,0,0,6918,6919,5,15,0,0,6919,6926,3,680,340, + 2,6920,6921,10,5,0,0,6921,6922,5,142,0,0,6922,6923,5,418,0,0,6923, + 6924,5,386,0,0,6924,6926,3,674,337,0,6925,6911,1,0,0,0,6925,6914, + 1,0,0,0,6925,6917,1,0,0,0,6925,6920,1,0,0,0,6926,6929,1,0,0,0,6927, + 6925,1,0,0,0,6927,6928,1,0,0,0,6928,681,1,0,0,0,6929,6927,1,0,0, + 0,6930,6931,6,341,-1,0,6931,6932,7,94,0,0,6932,7019,3,562,281,0, + 6933,6936,5,35,0,0,6934,6937,3,562,281,0,6935,6937,3,740,370,0,6936, + 6934,1,0,0,0,6936,6935,1,0,0,0,6937,7019,1,0,0,0,6938,6939,5,28, + 0,0,6939,7019,3,754,377,0,6940,6941,5,470,0,0,6941,7019,3,534,267, + 0,6942,7019,5,571,0,0,6943,7019,5,573,0,0,6944,7019,5,563,0,0,6945, + 7019,5,567,0,0,6946,6956,3,806,403,0,6947,6957,3,808,404,0,6948, + 6949,5,2,0,0,6949,6951,3,736,368,0,6950,6952,3,586,293,0,6951,6950, + 1,0,0,0,6951,6952,1,0,0,0,6952,6953,1,0,0,0,6953,6954,5,3,0,0,6954, + 6955,3,808,404,0,6955,6957,1,0,0,0,6956,6947,1,0,0,0,6956,6948,1, + 0,0,0,6957,7019,1,0,0,0,6958,6960,3,656,328,0,6959,6958,1,0,0,0, + 6959,6960,1,0,0,0,6960,6961,1,0,0,0,6961,7019,3,808,404,0,6962,6970, + 5,403,0,0,6963,6965,3,808,404,0,6964,6966,3,668,334,0,6965,6964, + 1,0,0,0,6965,6966,1,0,0,0,6966,6971,1,0,0,0,6967,6968,3,660,330, + 0,6968,6969,3,808,404,0,6969,6971,1,0,0,0,6970,6963,1,0,0,0,6970, + 6967,1,0,0,0,6971,7019,1,0,0,0,6972,7019,5,96,0,0,6973,7019,5,60, + 0,0,6974,7019,5,78,0,0,6975,7019,5,574,0,0,6976,6977,5,2,0,0,6977, + 6978,3,674,337,0,6978,6979,5,3,0,0,6979,6980,3,754,377,0,6980,7019, + 1,0,0,0,6981,6983,5,40,0,0,6982,6984,3,674,337,0,6983,6982,1,0,0, + 0,6983,6984,1,0,0,0,6984,6986,1,0,0,0,6985,6987,3,748,374,0,6986, + 6985,1,0,0,0,6987,6988,1,0,0,0,6988,6986,1,0,0,0,6988,6989,1,0,0, + 0,6989,6992,1,0,0,0,6990,6991,5,58,0,0,6991,6993,3,674,337,0,6992, + 6990,1,0,0,0,6992,6993,1,0,0,0,6993,6994,1,0,0,0,6994,6995,5,454, + 0,0,6995,7019,1,0,0,0,6996,7019,3,686,343,0,6997,6999,3,562,281, + 0,6998,7000,3,752,376,0,6999,6998,1,0,0,0,6999,7000,1,0,0,0,7000, + 7019,1,0,0,0,7001,7019,3,716,358,0,7002,7003,5,2,0,0,7003,7004,3, + 674,337,0,7004,7005,5,6,0,0,7005,7006,3,730,365,0,7006,7007,5,3, + 0,0,7007,7019,1,0,0,0,7008,7009,3,714,357,0,7009,7010,5,125,0,0, + 7010,7011,3,714,357,0,7011,7019,1,0,0,0,7012,7019,3,780,390,0,7013, + 7014,7,29,0,0,7014,7019,3,682,341,5,7015,7016,3,724,362,0,7016,7017, + 3,682,341,2,7017,7019,1,0,0,0,7018,6930,1,0,0,0,7018,6933,1,0,0, + 0,7018,6938,1,0,0,0,7018,6940,1,0,0,0,7018,6942,1,0,0,0,7018,6943, + 1,0,0,0,7018,6944,1,0,0,0,7018,6945,1,0,0,0,7018,6946,1,0,0,0,7018, + 6959,1,0,0,0,7018,6962,1,0,0,0,7018,6972,1,0,0,0,7018,6973,1,0,0, + 0,7018,6974,1,0,0,0,7018,6975,1,0,0,0,7018,6976,1,0,0,0,7018,6981, + 1,0,0,0,7018,6996,1,0,0,0,7018,6997,1,0,0,0,7018,7001,1,0,0,0,7018, + 7002,1,0,0,0,7018,7008,1,0,0,0,7018,7012,1,0,0,0,7018,7013,1,0,0, + 0,7018,7015,1,0,0,0,7019,7047,1,0,0,0,7020,7021,10,3,0,0,7021,7022, + 3,722,361,0,7022,7023,3,682,341,4,7023,7046,1,0,0,0,7024,7025,10, + 6,0,0,7025,7026,5,26,0,0,7026,7046,3,652,326,0,7027,7028,10,4,0, + 0,7028,7030,3,724,362,0,7029,7031,3,682,341,0,7030,7029,1,0,0,0, + 7030,7031,1,0,0,0,7031,7046,1,0,0,0,7032,7033,10,1,0,0,7033,7035, + 5,116,0,0,7034,7036,5,77,0,0,7035,7034,1,0,0,0,7035,7036,1,0,0,0, + 7036,7043,1,0,0,0,7037,7038,5,56,0,0,7038,7039,5,64,0,0,7039,7044, + 3,682,341,0,7040,7041,5,275,0,0,7041,7044,3,528,264,0,7042,7044, + 5,188,0,0,7043,7037,1,0,0,0,7043,7040,1,0,0,0,7043,7042,1,0,0,0, + 7044,7046,1,0,0,0,7045,7020,1,0,0,0,7045,7024,1,0,0,0,7045,7027, + 1,0,0,0,7045,7032,1,0,0,0,7046,7049,1,0,0,0,7047,7045,1,0,0,0,7047, + 7048,1,0,0,0,7048,683,1,0,0,0,7049,7047,1,0,0,0,7050,7076,3,806, + 403,0,7051,7073,5,2,0,0,7052,7056,3,736,368,0,7053,7054,5,6,0,0, + 7054,7055,5,101,0,0,7055,7057,3,738,369,0,7056,7053,1,0,0,0,7056, + 7057,1,0,0,0,7057,7059,1,0,0,0,7058,7060,3,586,293,0,7059,7058,1, + 0,0,0,7059,7060,1,0,0,0,7060,7074,1,0,0,0,7061,7062,5,101,0,0,7062, + 7064,3,738,369,0,7063,7065,3,586,293,0,7064,7063,1,0,0,0,7064,7065, + 1,0,0,0,7065,7074,1,0,0,0,7066,7067,7,80,0,0,7067,7069,3,736,368, + 0,7068,7070,3,586,293,0,7069,7068,1,0,0,0,7069,7070,1,0,0,0,7070, + 7074,1,0,0,0,7071,7074,5,9,0,0,7072,7074,1,0,0,0,7073,7052,1,0,0, + 0,7073,7061,1,0,0,0,7073,7066,1,0,0,0,7073,7071,1,0,0,0,7073,7072, + 1,0,0,0,7074,7075,1,0,0,0,7075,7077,5,3,0,0,7076,7051,1,0,0,0,7076, + 7077,1,0,0,0,7077,685,1,0,0,0,7078,7085,3,684,342,0,7079,7080,5, + 479,0,0,7080,7081,5,66,0,0,7081,7082,5,2,0,0,7082,7083,3,586,293, + 0,7083,7084,5,3,0,0,7084,7086,1,0,0,0,7085,7079,1,0,0,0,7085,7086, + 1,0,0,0,7086,7093,1,0,0,0,7087,7088,5,480,0,0,7088,7089,5,2,0,0, + 7089,7090,5,103,0,0,7090,7091,3,674,337,0,7091,7092,5,3,0,0,7092, + 7094,1,0,0,0,7093,7087,1,0,0,0,7093,7094,1,0,0,0,7094,7100,1,0,0, + 0,7095,7098,5,124,0,0,7096,7099,3,708,354,0,7097,7099,3,818,409, + 0,7098,7096,1,0,0,0,7098,7097,1,0,0,0,7099,7101,1,0,0,0,7100,7095, + 1,0,0,0,7100,7101,1,0,0,0,7101,7104,1,0,0,0,7102,7104,3,690,345, + 0,7103,7078,1,0,0,0,7103,7102,1,0,0,0,7104,687,1,0,0,0,7105,7108, + 3,684,342,0,7106,7108,3,690,345,0,7107,7105,1,0,0,0,7107,7106,1, + 0,0,0,7108,689,1,0,0,0,7109,7110,5,108,0,0,7110,7111,5,62,0,0,7111, + 7112,5,2,0,0,7112,7113,3,674,337,0,7113,7114,5,3,0,0,7114,7284,1, + 0,0,0,7115,7284,5,48,0,0,7116,7118,7,95,0,0,7117,7119,3,660,330, + 0,7118,7117,1,0,0,0,7118,7119,1,0,0,0,7119,7284,1,0,0,0,7120,7284, + 5,49,0,0,7121,7284,5,52,0,0,7122,7284,5,89,0,0,7123,7284,5,99,0, + 0,7124,7284,5,47,0,0,7125,7284,5,111,0,0,7126,7127,7,96,0,0,7127, + 7128,5,2,0,0,7128,7129,3,674,337,0,7129,7130,5,36,0,0,7130,7131, + 3,652,326,0,7131,7132,5,3,0,0,7132,7284,1,0,0,0,7133,7134,5,397, + 0,0,7134,7139,5,2,0,0,7135,7136,3,742,371,0,7136,7137,5,64,0,0,7137, + 7138,3,674,337,0,7138,7140,1,0,0,0,7139,7135,1,0,0,0,7139,7140,1, + 0,0,0,7140,7141,1,0,0,0,7141,7284,5,3,0,0,7142,7143,5,489,0,0,7143, + 7144,5,2,0,0,7144,7147,3,674,337,0,7145,7146,5,6,0,0,7146,7148,3, + 744,372,0,7147,7145,1,0,0,0,7147,7148,1,0,0,0,7148,7149,1,0,0,0, + 7149,7150,5,3,0,0,7150,7284,1,0,0,0,7151,7152,5,410,0,0,7152,7153, + 5,2,0,0,7153,7154,3,674,337,0,7154,7155,5,84,0,0,7155,7156,3,674, + 337,0,7156,7157,5,64,0,0,7157,7160,3,674,337,0,7158,7159,5,62,0, + 0,7159,7161,3,674,337,0,7160,7158,1,0,0,0,7160,7161,1,0,0,0,7161, + 7162,1,0,0,0,7162,7163,5,3,0,0,7163,7284,1,0,0,0,7164,7165,5,411, + 0,0,7165,7170,5,2,0,0,7166,7167,3,682,341,0,7167,7168,5,68,0,0,7168, + 7169,3,682,341,0,7169,7171,1,0,0,0,7170,7166,1,0,0,0,7170,7171,1, + 0,0,0,7171,7172,1,0,0,0,7172,7284,5,3,0,0,7173,7174,5,417,0,0,7174, + 7176,5,2,0,0,7175,7177,3,746,373,0,7176,7175,1,0,0,0,7176,7177,1, + 0,0,0,7177,7178,1,0,0,0,7178,7284,5,3,0,0,7179,7180,5,421,0,0,7180, + 7182,5,2,0,0,7181,7183,7,97,0,0,7182,7181,1,0,0,0,7182,7183,1,0, + 0,0,7183,7188,1,0,0,0,7184,7186,3,674,337,0,7185,7184,1,0,0,0,7185, + 7186,1,0,0,0,7186,7187,1,0,0,0,7187,7189,5,64,0,0,7188,7185,1,0, + 0,0,7188,7189,1,0,0,0,7189,7190,1,0,0,0,7190,7191,3,730,365,0,7191, + 7192,1,0,0,0,7192,7193,5,3,0,0,7193,7284,1,0,0,0,7194,7195,5,408, + 0,0,7195,7196,5,2,0,0,7196,7197,3,674,337,0,7197,7198,5,6,0,0,7198, + 7199,3,674,337,0,7199,7200,5,3,0,0,7200,7284,1,0,0,0,7201,7202,7, + 98,0,0,7202,7284,3,534,267,0,7203,7204,5,426,0,0,7204,7205,5,2,0, + 0,7205,7206,5,266,0,0,7206,7216,3,824,412,0,7207,7214,5,6,0,0,7208, + 7209,5,424,0,0,7209,7210,5,2,0,0,7210,7211,3,692,346,0,7211,7212, + 5,3,0,0,7212,7215,1,0,0,0,7213,7215,3,730,365,0,7214,7208,1,0,0, + 0,7214,7213,1,0,0,0,7215,7217,1,0,0,0,7216,7207,1,0,0,0,7216,7217, + 1,0,0,0,7217,7218,1,0,0,0,7218,7219,5,3,0,0,7219,7284,1,0,0,0,7220, + 7221,5,427,0,0,7221,7222,5,2,0,0,7222,7223,3,682,341,0,7223,7224, + 3,698,349,0,7224,7225,5,3,0,0,7225,7284,1,0,0,0,7226,7227,5,428, + 0,0,7227,7228,5,2,0,0,7228,7229,3,692,346,0,7229,7230,5,3,0,0,7230, + 7284,1,0,0,0,7231,7232,5,429,0,0,7232,7233,5,2,0,0,7233,7234,3,696, + 348,0,7234,7237,3,674,337,0,7235,7236,7,99,0,0,7236,7238,5,378,0, + 0,7237,7235,1,0,0,0,7237,7238,1,0,0,0,7238,7239,1,0,0,0,7239,7240, + 5,3,0,0,7240,7284,1,0,0,0,7241,7242,5,430,0,0,7242,7243,5,2,0,0, + 7243,7244,5,266,0,0,7244,7247,3,824,412,0,7245,7246,5,6,0,0,7246, + 7248,3,674,337,0,7247,7245,1,0,0,0,7247,7248,1,0,0,0,7248,7249,1, + 0,0,0,7249,7250,5,3,0,0,7250,7284,1,0,0,0,7251,7252,5,431,0,0,7252, + 7253,5,2,0,0,7253,7254,5,383,0,0,7254,7255,3,674,337,0,7255,7256, + 5,6,0,0,7256,7260,5,375,0,0,7257,7258,5,269,0,0,7258,7261,5,450, + 0,0,7259,7261,3,674,337,0,7260,7257,1,0,0,0,7260,7259,1,0,0,0,7261, + 7271,1,0,0,0,7262,7263,5,6,0,0,7263,7269,5,339,0,0,7264,7266,5,269, + 0,0,7265,7264,1,0,0,0,7265,7266,1,0,0,0,7266,7267,1,0,0,0,7267,7270, + 5,450,0,0,7268,7270,5,385,0,0,7269,7265,1,0,0,0,7269,7268,1,0,0, + 0,7270,7272,1,0,0,0,7271,7262,1,0,0,0,7271,7272,1,0,0,0,7272,7273, + 1,0,0,0,7273,7274,5,3,0,0,7274,7284,1,0,0,0,7275,7276,5,432,0,0, + 7276,7277,5,2,0,0,7277,7278,3,696,348,0,7278,7279,3,674,337,0,7279, + 7280,5,36,0,0,7280,7281,3,654,327,0,7281,7282,5,3,0,0,7282,7284, + 1,0,0,0,7283,7109,1,0,0,0,7283,7115,1,0,0,0,7283,7116,1,0,0,0,7283, + 7120,1,0,0,0,7283,7121,1,0,0,0,7283,7122,1,0,0,0,7283,7123,1,0,0, + 0,7283,7124,1,0,0,0,7283,7125,1,0,0,0,7283,7126,1,0,0,0,7283,7133, + 1,0,0,0,7283,7142,1,0,0,0,7283,7151,1,0,0,0,7283,7164,1,0,0,0,7283, + 7173,1,0,0,0,7283,7179,1,0,0,0,7283,7194,1,0,0,0,7283,7201,1,0,0, + 0,7283,7203,1,0,0,0,7283,7220,1,0,0,0,7283,7226,1,0,0,0,7283,7231, + 1,0,0,0,7283,7241,1,0,0,0,7283,7251,1,0,0,0,7283,7275,1,0,0,0,7284, + 691,1,0,0,0,7285,7290,3,694,347,0,7286,7287,5,6,0,0,7287,7289,3, + 694,347,0,7288,7286,1,0,0,0,7289,7292,1,0,0,0,7290,7288,1,0,0,0, + 7290,7291,1,0,0,0,7291,693,1,0,0,0,7292,7290,1,0,0,0,7293,7296,3, + 674,337,0,7294,7295,5,36,0,0,7295,7297,3,824,412,0,7296,7294,1,0, + 0,0,7296,7297,1,0,0,0,7297,695,1,0,0,0,7298,7299,7,100,0,0,7299, + 697,1,0,0,0,7300,7302,5,286,0,0,7301,7303,3,700,350,0,7302,7301, + 1,0,0,0,7302,7303,1,0,0,0,7303,7304,1,0,0,0,7304,7306,3,682,341, + 0,7305,7307,3,700,350,0,7306,7305,1,0,0,0,7306,7307,1,0,0,0,7307, + 699,1,0,0,0,7308,7309,5,147,0,0,7309,7310,7,101,0,0,7310,701,1,0, + 0,0,7311,7312,5,104,0,0,7312,7317,3,704,352,0,7313,7314,5,6,0,0, + 7314,7316,3,704,352,0,7315,7313,1,0,0,0,7316,7319,1,0,0,0,7317,7315, + 1,0,0,0,7317,7318,1,0,0,0,7318,703,1,0,0,0,7319,7317,1,0,0,0,7320, + 7321,3,818,409,0,7321,7322,5,36,0,0,7322,7323,3,708,354,0,7323,705, + 1,0,0,0,7324,7327,5,124,0,0,7325,7328,3,708,354,0,7326,7328,3,818, + 409,0,7327,7325,1,0,0,0,7327,7326,1,0,0,0,7328,707,1,0,0,0,7329, + 7331,5,2,0,0,7330,7332,3,818,409,0,7331,7330,1,0,0,0,7331,7332,1, + 0,0,0,7332,7336,1,0,0,0,7333,7334,5,285,0,0,7334,7335,5,147,0,0, + 7335,7337,3,730,365,0,7336,7333,1,0,0,0,7336,7337,1,0,0,0,7337,7339, + 1,0,0,0,7338,7340,3,586,293,0,7339,7338,1,0,0,0,7339,7340,1,0,0, + 0,7340,7342,1,0,0,0,7341,7343,3,710,355,0,7342,7341,1,0,0,0,7342, + 7343,1,0,0,0,7343,7344,1,0,0,0,7344,7345,5,3,0,0,7345,709,1,0,0, + 0,7346,7351,7,102,0,0,7347,7348,5,387,0,0,7348,7349,3,712,356,0, + 7349,7350,5,33,0,0,7350,7352,1,0,0,0,7351,7347,1,0,0,0,7351,7352, + 1,0,0,0,7352,7353,1,0,0,0,7353,7354,3,712,356,0,7354,7364,1,0,0, + 0,7355,7362,5,199,0,0,7356,7357,5,434,0,0,7357,7363,5,414,0,0,7358, + 7363,5,66,0,0,7359,7363,5,467,0,0,7360,7361,5,269,0,0,7361,7363, + 5,482,0,0,7362,7356,1,0,0,0,7362,7358,1,0,0,0,7362,7359,1,0,0,0, + 7362,7360,1,0,0,0,7363,7365,1,0,0,0,7364,7355,1,0,0,0,7364,7365, + 1,0,0,0,7365,711,1,0,0,0,7366,7369,5,362,0,0,7367,7369,3,674,337, + 0,7368,7366,1,0,0,0,7368,7367,1,0,0,0,7369,7370,1,0,0,0,7370,7374, + 7,103,0,0,7371,7372,5,434,0,0,7372,7374,5,414,0,0,7373,7368,1,0, + 0,0,7373,7371,1,0,0,0,7374,713,1,0,0,0,7375,7383,3,716,358,0,7376, + 7377,5,2,0,0,7377,7378,3,730,365,0,7378,7379,5,6,0,0,7379,7380,3, + 674,337,0,7380,7381,5,3,0,0,7381,7383,1,0,0,0,7382,7375,1,0,0,0, + 7382,7376,1,0,0,0,7383,715,1,0,0,0,7384,7385,5,414,0,0,7385,7387, + 5,2,0,0,7386,7388,3,730,365,0,7387,7386,1,0,0,0,7387,7388,1,0,0, + 0,7388,7389,1,0,0,0,7389,7390,5,3,0,0,7390,717,1,0,0,0,7391,7392, + 7,104,0,0,7392,719,1,0,0,0,7393,7396,5,29,0,0,7394,7396,3,722,361, + 0,7395,7393,1,0,0,0,7395,7394,1,0,0,0,7396,721,1,0,0,0,7397,7398, + 7,105,0,0,7398,723,1,0,0,0,7399,7406,5,29,0,0,7400,7401,5,278,0, + 0,7401,7402,5,2,0,0,7402,7403,3,414,207,0,7403,7404,5,3,0,0,7404, + 7406,1,0,0,0,7405,7399,1,0,0,0,7405,7400,1,0,0,0,7406,725,1,0,0, + 0,7407,7414,3,720,360,0,7408,7409,5,278,0,0,7409,7410,5,2,0,0,7410, + 7411,3,414,207,0,7411,7412,5,3,0,0,7412,7414,1,0,0,0,7413,7407,1, + 0,0,0,7413,7408,1,0,0,0,7414,727,1,0,0,0,7415,7421,3,726,363,0,7416, + 7418,5,77,0,0,7417,7416,1,0,0,0,7417,7418,1,0,0,0,7418,7419,1,0, + 0,0,7419,7421,7,106,0,0,7420,7415,1,0,0,0,7420,7417,1,0,0,0,7421, + 729,1,0,0,0,7422,7427,3,674,337,0,7423,7424,5,6,0,0,7424,7426,3, + 674,337,0,7425,7423,1,0,0,0,7426,7429,1,0,0,0,7427,7425,1,0,0,0, + 7427,7428,1,0,0,0,7428,731,1,0,0,0,7429,7427,1,0,0,0,7430,7431,5, + 2,0,0,7431,7432,3,674,337,0,7432,7433,5,3,0,0,7433,7436,1,0,0,0, + 7434,7436,3,800,400,0,7435,7430,1,0,0,0,7435,7434,1,0,0,0,7436,733, + 1,0,0,0,7437,7440,3,674,337,0,7438,7440,3,800,400,0,7439,7437,1, + 0,0,0,7439,7438,1,0,0,0,7440,735,1,0,0,0,7441,7446,3,738,369,0,7442, + 7443,5,6,0,0,7443,7445,3,738,369,0,7444,7442,1,0,0,0,7445,7448,1, + 0,0,0,7446,7444,1,0,0,0,7446,7447,1,0,0,0,7447,737,1,0,0,0,7448, + 7446,1,0,0,0,7449,7455,3,674,337,0,7450,7451,3,820,410,0,7451,7452, + 7,107,0,0,7452,7453,3,674,337,0,7453,7455,1,0,0,0,7454,7449,1,0, + 0,0,7454,7450,1,0,0,0,7455,739,1,0,0,0,7456,7466,5,4,0,0,7457,7467, + 3,730,365,0,7458,7463,3,740,370,0,7459,7460,5,6,0,0,7460,7462,3, + 740,370,0,7461,7459,1,0,0,0,7462,7465,1,0,0,0,7463,7461,1,0,0,0, + 7463,7464,1,0,0,0,7464,7467,1,0,0,0,7465,7463,1,0,0,0,7466,7457, + 1,0,0,0,7466,7458,1,0,0,0,7466,7467,1,0,0,0,7467,7468,1,0,0,0,7468, + 7469,5,5,0,0,7469,741,1,0,0,0,7470,7479,3,826,413,0,7471,7479,5, + 384,0,0,7472,7479,5,264,0,0,7473,7479,5,176,0,0,7474,7479,5,218, + 0,0,7475,7479,5,261,0,0,7476,7479,5,326,0,0,7477,7479,3,808,404, + 0,7478,7470,1,0,0,0,7478,7471,1,0,0,0,7478,7472,1,0,0,0,7478,7473, + 1,0,0,0,7478,7474,1,0,0,0,7478,7475,1,0,0,0,7478,7476,1,0,0,0,7478, + 7477,1,0,0,0,7479,743,1,0,0,0,7480,7481,7,108,0,0,7481,745,1,0,0, + 0,7482,7483,3,674,337,0,7483,7484,5,64,0,0,7484,7487,3,674,337,0, + 7485,7486,5,62,0,0,7486,7488,3,674,337,0,7487,7485,1,0,0,0,7487, + 7488,1,0,0,0,7488,7504,1,0,0,0,7489,7490,3,674,337,0,7490,7491,5, + 62,0,0,7491,7494,3,674,337,0,7492,7493,5,64,0,0,7493,7495,3,674, + 337,0,7494,7492,1,0,0,0,7494,7495,1,0,0,0,7495,7504,1,0,0,0,7496, + 7497,3,674,337,0,7497,7498,5,127,0,0,7498,7499,3,674,337,0,7499, + 7500,5,197,0,0,7500,7501,3,674,337,0,7501,7504,1,0,0,0,7502,7504, + 3,730,365,0,7503,7482,1,0,0,0,7503,7489,1,0,0,0,7503,7496,1,0,0, + 0,7503,7502,1,0,0,0,7504,747,1,0,0,0,7505,7506,5,102,0,0,7506,7507, + 3,674,337,0,7507,7508,5,93,0,0,7508,7509,3,674,337,0,7509,749,1, + 0,0,0,7510,7513,5,11,0,0,7511,7514,3,824,412,0,7512,7514,5,9,0,0, + 7513,7511,1,0,0,0,7513,7512,1,0,0,0,7514,7528,1,0,0,0,7515,7524, + 5,4,0,0,7516,7525,3,674,337,0,7517,7519,3,674,337,0,7518,7517,1, + 0,0,0,7518,7519,1,0,0,0,7519,7520,1,0,0,0,7520,7522,5,8,0,0,7521, + 7523,3,674,337,0,7522,7521,1,0,0,0,7522,7523,1,0,0,0,7523,7525,1, + 0,0,0,7524,7516,1,0,0,0,7524,7518,1,0,0,0,7525,7526,1,0,0,0,7526, + 7528,5,5,0,0,7527,7510,1,0,0,0,7527,7515,1,0,0,0,7528,751,1,0,0, + 0,7529,7531,3,750,375,0,7530,7529,1,0,0,0,7531,7532,1,0,0,0,7532, + 7530,1,0,0,0,7532,7533,1,0,0,0,7533,753,1,0,0,0,7534,7536,3,750, + 375,0,7535,7534,1,0,0,0,7536,7539,1,0,0,0,7537,7535,1,0,0,0,7537, + 7538,1,0,0,0,7538,755,1,0,0,0,7539,7537,1,0,0,0,7540,7545,3,758, + 379,0,7541,7542,5,6,0,0,7542,7544,3,758,379,0,7543,7541,1,0,0,0, + 7544,7547,1,0,0,0,7545,7543,1,0,0,0,7545,7546,1,0,0,0,7546,757,1, + 0,0,0,7547,7545,1,0,0,0,7548,7553,3,734,367,0,7549,7550,5,36,0,0, + 7550,7554,3,824,412,0,7551,7554,3,826,413,0,7552,7554,1,0,0,0,7553, + 7549,1,0,0,0,7553,7551,1,0,0,0,7553,7552,1,0,0,0,7554,7557,1,0,0, + 0,7555,7557,5,9,0,0,7556,7548,1,0,0,0,7556,7555,1,0,0,0,7557,759, + 1,0,0,0,7558,7563,3,780,390,0,7559,7560,5,6,0,0,7560,7562,3,780, + 390,0,7561,7559,1,0,0,0,7562,7565,1,0,0,0,7563,7561,1,0,0,0,7563, + 7564,1,0,0,0,7564,761,1,0,0,0,7565,7563,1,0,0,0,7566,7571,3,774, + 387,0,7567,7568,5,6,0,0,7568,7570,3,774,387,0,7569,7567,1,0,0,0, + 7570,7573,1,0,0,0,7571,7569,1,0,0,0,7571,7572,1,0,0,0,7572,763,1, + 0,0,0,7573,7571,1,0,0,0,7574,7579,3,790,395,0,7575,7576,5,6,0,0, + 7576,7578,3,790,395,0,7577,7575,1,0,0,0,7578,7581,1,0,0,0,7579,7577, + 1,0,0,0,7579,7580,1,0,0,0,7580,765,1,0,0,0,7581,7579,1,0,0,0,7582, + 7587,3,788,394,0,7583,7584,5,6,0,0,7584,7586,3,788,394,0,7585,7583, + 1,0,0,0,7586,7589,1,0,0,0,7587,7585,1,0,0,0,7587,7588,1,0,0,0,7588, + 767,1,0,0,0,7589,7587,1,0,0,0,7590,7591,3,780,390,0,7591,769,1,0, + 0,0,7592,7593,3,780,390,0,7593,771,1,0,0,0,7594,7595,3,780,390,0, + 7595,773,1,0,0,0,7596,7597,3,780,390,0,7597,775,1,0,0,0,7598,7599, + 3,780,390,0,7599,777,1,0,0,0,7600,7601,3,316,158,0,7601,779,1,0, + 0,0,7602,7604,3,818,409,0,7603,7605,3,752,376,0,7604,7603,1,0,0, + 0,7604,7605,1,0,0,0,7605,781,1,0,0,0,7606,7611,3,770,385,0,7607, + 7608,5,6,0,0,7608,7610,3,770,385,0,7609,7607,1,0,0,0,7610,7613,1, + 0,0,0,7611,7609,1,0,0,0,7611,7612,1,0,0,0,7612,783,1,0,0,0,7613, + 7611,1,0,0,0,7614,7619,3,818,409,0,7615,7616,5,6,0,0,7616,7618,3, + 818,409,0,7617,7615,1,0,0,0,7618,7621,1,0,0,0,7619,7617,1,0,0,0, + 7619,7620,1,0,0,0,7620,785,1,0,0,0,7621,7619,1,0,0,0,7622,7623,3, + 316,158,0,7623,787,1,0,0,0,7624,7625,3,316,158,0,7625,789,1,0,0, + 0,7626,7627,3,316,158,0,7627,791,1,0,0,0,7628,7629,3,818,409,0,7629, + 793,1,0,0,0,7630,7631,3,818,409,0,7631,795,1,0,0,0,7632,7637,3,820, + 410,0,7633,7634,3,818,409,0,7634,7635,3,752,376,0,7635,7637,1,0, + 0,0,7636,7632,1,0,0,0,7636,7633,1,0,0,0,7637,797,1,0,0,0,7638,7643, + 3,820,410,0,7639,7640,3,818,409,0,7640,7641,3,752,376,0,7641,7643, + 1,0,0,0,7642,7638,1,0,0,0,7642,7639,1,0,0,0,7643,799,1,0,0,0,7644, + 7645,3,818,409,0,7645,7646,3,754,377,0,7646,7649,1,0,0,0,7647,7649, + 4,400,10,0,7648,7644,1,0,0,0,7648,7647,1,0,0,0,7649,801,1,0,0,0, + 7650,7651,3,818,409,0,7651,803,1,0,0,0,7652,7657,3,820,410,0,7653, + 7654,3,818,409,0,7654,7655,3,752,376,0,7655,7657,1,0,0,0,7656,7652, + 1,0,0,0,7656,7653,1,0,0,0,7657,805,1,0,0,0,7658,7663,3,820,410,0, + 7659,7660,3,818,409,0,7660,7661,3,752,376,0,7661,7663,1,0,0,0,7662, + 7658,1,0,0,0,7662,7659,1,0,0,0,7663,807,1,0,0,0,7664,7667,3,810, + 405,0,7665,7666,5,487,0,0,7666,7668,3,810,405,0,7667,7665,1,0,0, + 0,7667,7668,1,0,0,0,7668,809,1,0,0,0,7669,7681,5,558,0,0,7670,7681, + 5,560,0,0,7671,7675,5,562,0,0,7672,7674,5,588,0,0,7673,7672,1,0, + 0,0,7674,7677,1,0,0,0,7675,7673,1,0,0,0,7675,7676,1,0,0,0,7676,7678, + 1,0,0,0,7677,7675,1,0,0,0,7678,7681,5,589,0,0,7679,7681,5,584,0, + 0,7680,7669,1,0,0,0,7680,7670,1,0,0,0,7680,7671,1,0,0,0,7680,7679, + 1,0,0,0,7681,811,1,0,0,0,7682,7684,7,29,0,0,7683,7682,1,0,0,0,7683, + 7684,1,0,0,0,7684,7685,1,0,0,0,7685,7686,5,571,0,0,7686,813,1,0, + 0,0,7687,7693,3,822,411,0,7688,7693,5,52,0,0,7689,7693,5,49,0,0, + 7690,7693,5,89,0,0,7691,7693,5,524,0,0,7692,7687,1,0,0,0,7692,7688, + 1,0,0,0,7692,7689,1,0,0,0,7692,7690,1,0,0,0,7692,7691,1,0,0,0,7693, + 815,1,0,0,0,7694,7699,3,814,407,0,7695,7696,5,6,0,0,7696,7698,3, + 814,407,0,7697,7695,1,0,0,0,7698,7701,1,0,0,0,7699,7697,1,0,0,0, + 7699,7700,1,0,0,0,7700,817,1,0,0,0,7701,7699,1,0,0,0,7702,7705,3, + 826,413,0,7703,7705,3,830,415,0,7704,7702,1,0,0,0,7704,7703,1,0, + 0,0,7705,819,1,0,0,0,7706,7709,3,826,413,0,7707,7709,3,832,416,0, + 7708,7706,1,0,0,0,7708,7707,1,0,0,0,7709,821,1,0,0,0,7710,7714,3, + 826,413,0,7711,7714,3,830,415,0,7712,7714,3,832,416,0,7713,7710, + 1,0,0,0,7713,7711,1,0,0,0,7713,7712,1,0,0,0,7714,823,1,0,0,0,7715, + 7720,3,826,413,0,7716,7720,3,830,415,0,7717,7720,3,832,416,0,7718, + 7720,3,834,417,0,7719,7715,1,0,0,0,7719,7716,1,0,0,0,7719,7717,1, + 0,0,0,7719,7718,1,0,0,0,7720,825,1,0,0,0,7721,7724,5,549,0,0,7722, + 7723,5,487,0,0,7723,7725,3,810,405,0,7724,7722,1,0,0,0,7724,7725, + 1,0,0,0,7725,7733,1,0,0,0,7726,7733,3,808,404,0,7727,7733,5,550, + 0,0,7728,7733,5,554,0,0,7729,7733,5,574,0,0,7730,7733,5,575,0,0, + 7731,7733,3,828,414,0,7732,7721,1,0,0,0,7732,7726,1,0,0,0,7732,7727, + 1,0,0,0,7732,7728,1,0,0,0,7732,7729,1,0,0,0,7732,7730,1,0,0,0,7732, + 7731,1,0,0,0,7733,827,1,0,0,0,7734,7735,7,109,0,0,7735,829,1,0,0, + 0,7736,7788,5,387,0,0,7737,7788,5,388,0,0,7738,7788,3,662,331,0, + 7739,7788,5,390,0,0,7740,7788,5,391,0,0,7741,7788,3,664,332,0,7742, + 7788,5,393,0,0,7743,7788,5,394,0,0,7744,7788,5,395,0,0,7745,7788, + 5,396,0,0,7746,7788,5,397,0,0,7747,7788,5,398,0,0,7748,7788,5,399, + 0,0,7749,7788,5,470,0,0,7750,7788,5,400,0,0,7751,7788,5,401,0,0, + 7752,7788,5,402,0,0,7753,7788,5,403,0,0,7754,7788,5,404,0,0,7755, + 7788,5,405,0,0,7756,7788,5,406,0,0,7757,7788,5,407,0,0,7758,7788, + 5,489,0,0,7759,7788,5,408,0,0,7760,7788,3,658,329,0,7761,7788,5, + 453,0,0,7762,7788,5,410,0,0,7763,7788,5,411,0,0,7764,7788,5,412, + 0,0,7765,7788,5,413,0,0,7766,7788,5,414,0,0,7767,7788,5,415,0,0, + 7768,7788,5,416,0,0,7769,7788,5,417,0,0,7770,7788,5,418,0,0,7771, + 7788,5,419,0,0,7772,7788,5,420,0,0,7773,7788,5,421,0,0,7774,7788, + 5,422,0,0,7775,7788,5,423,0,0,7776,7788,5,424,0,0,7777,7788,5,425, + 0,0,7778,7788,5,426,0,0,7779,7788,5,427,0,0,7780,7788,5,428,0,0, + 7781,7788,5,476,0,0,7782,7788,5,429,0,0,7783,7788,5,430,0,0,7784, + 7788,5,431,0,0,7785,7788,5,432,0,0,7786,7788,5,474,0,0,7787,7736, + 1,0,0,0,7787,7737,1,0,0,0,7787,7738,1,0,0,0,7787,7739,1,0,0,0,7787, + 7740,1,0,0,0,7787,7741,1,0,0,0,7787,7742,1,0,0,0,7787,7743,1,0,0, + 0,7787,7744,1,0,0,0,7787,7745,1,0,0,0,7787,7746,1,0,0,0,7787,7747, + 1,0,0,0,7787,7748,1,0,0,0,7787,7749,1,0,0,0,7787,7750,1,0,0,0,7787, + 7751,1,0,0,0,7787,7752,1,0,0,0,7787,7753,1,0,0,0,7787,7754,1,0,0, + 0,7787,7755,1,0,0,0,7787,7756,1,0,0,0,7787,7757,1,0,0,0,7787,7758, + 1,0,0,0,7787,7759,1,0,0,0,7787,7760,1,0,0,0,7787,7761,1,0,0,0,7787, + 7762,1,0,0,0,7787,7763,1,0,0,0,7787,7764,1,0,0,0,7787,7765,1,0,0, + 0,7787,7766,1,0,0,0,7787,7767,1,0,0,0,7787,7768,1,0,0,0,7787,7769, + 1,0,0,0,7787,7770,1,0,0,0,7787,7771,1,0,0,0,7787,7772,1,0,0,0,7787, + 7773,1,0,0,0,7787,7774,1,0,0,0,7787,7775,1,0,0,0,7787,7776,1,0,0, + 0,7787,7777,1,0,0,0,7787,7778,1,0,0,0,7787,7779,1,0,0,0,7787,7780, + 1,0,0,0,7787,7781,1,0,0,0,7787,7782,1,0,0,0,7787,7783,1,0,0,0,7787, + 7784,1,0,0,0,7787,7785,1,0,0,0,7787,7786,1,0,0,0,7788,831,1,0,0, + 0,7789,7790,7,110,0,0,7790,833,1,0,0,0,7791,7792,7,111,0,0,7792, + 835,1,0,0,0,7793,7795,3,838,419,0,7794,7793,1,0,0,0,7794,7795,1, + 0,0,0,7795,7806,1,0,0,0,7796,7804,5,178,0,0,7797,7801,3,840,420, + 0,7798,7801,5,178,0,0,7799,7801,3,838,419,0,7800,7797,1,0,0,0,7800, + 7798,1,0,0,0,7800,7799,1,0,0,0,7801,7802,1,0,0,0,7802,7800,1,0,0, + 0,7802,7803,1,0,0,0,7803,7805,1,0,0,0,7804,7800,1,0,0,0,7804,7805, + 1,0,0,0,7805,7807,1,0,0,0,7806,7796,1,0,0,0,7806,7807,1,0,0,0,7807, + 7808,1,0,0,0,7808,7812,5,146,0,0,7809,7811,3,846,423,0,7810,7809, + 1,0,0,0,7811,7814,1,0,0,0,7812,7810,1,0,0,0,7812,7813,1,0,0,0,7813, + 7816,1,0,0,0,7814,7812,1,0,0,0,7815,7817,3,924,462,0,7816,7815,1, + 0,0,0,7816,7817,1,0,0,0,7817,7818,1,0,0,0,7818,7820,5,454,0,0,7819, + 7821,3,928,464,0,7820,7819,1,0,0,0,7820,7821,1,0,0,0,7821,837,1, + 0,0,0,7822,7823,5,18,0,0,7823,7824,3,928,464,0,7824,7825,5,19,0, + 0,7825,839,1,0,0,0,7826,7873,3,928,464,0,7827,7828,5,496,0,0,7828, + 7831,5,62,0,0,7829,7832,5,28,0,0,7830,7832,3,818,409,0,7831,7829, + 1,0,0,0,7831,7830,1,0,0,0,7832,7874,1,0,0,0,7833,7835,5,497,0,0, + 7834,7833,1,0,0,0,7834,7835,1,0,0,0,7835,7836,1,0,0,0,7836,7838, + 3,652,326,0,7837,7839,3,98,49,0,7838,7837,1,0,0,0,7838,7839,1,0, + 0,0,7839,7842,1,0,0,0,7840,7841,5,77,0,0,7841,7843,5,78,0,0,7842, + 7840,1,0,0,0,7842,7843,1,0,0,0,7843,7849,1,0,0,0,7844,7847,3,844, + 422,0,7845,7847,5,53,0,0,7846,7844,1,0,0,0,7846,7845,1,0,0,0,7847, + 7848,1,0,0,0,7848,7850,3,930,465,0,7849,7846,1,0,0,0,7849,7850,1, + 0,0,0,7850,7874,1,0,0,0,7851,7853,5,269,0,0,7852,7851,1,0,0,0,7852, + 7853,1,0,0,0,7853,7854,1,0,0,0,7854,7856,5,324,0,0,7855,7852,1,0, + 0,0,7855,7856,1,0,0,0,7856,7857,1,0,0,0,7857,7869,5,172,0,0,7858, + 7859,5,2,0,0,7859,7864,3,842,421,0,7860,7861,5,6,0,0,7861,7863,3, + 842,421,0,7862,7860,1,0,0,0,7863,7866,1,0,0,0,7864,7862,1,0,0,0, + 7864,7865,1,0,0,0,7865,7867,1,0,0,0,7866,7864,1,0,0,0,7867,7868, + 5,3,0,0,7868,7870,1,0,0,0,7869,7858,1,0,0,0,7869,7870,1,0,0,0,7870, + 7871,1,0,0,0,7871,7872,7,112,0,0,7872,7874,3,560,280,0,7873,7827, + 1,0,0,0,7873,7834,1,0,0,0,7873,7855,1,0,0,0,7874,7875,1,0,0,0,7875, + 7876,5,7,0,0,7876,841,1,0,0,0,7877,7878,3,928,464,0,7878,7879,3, + 652,326,0,7879,843,1,0,0,0,7880,7881,7,113,0,0,7881,845,1,0,0,0, + 7882,7883,3,836,418,0,7883,7884,5,7,0,0,7884,7907,1,0,0,0,7885,7907, + 3,874,437,0,7886,7907,3,876,438,0,7887,7907,3,852,426,0,7888,7907, + 3,860,430,0,7889,7907,3,864,432,0,7890,7907,3,866,433,0,7891,7907, + 3,870,435,0,7892,7907,3,872,436,0,7893,7907,3,880,440,0,7894,7907, + 3,884,442,0,7895,7907,3,886,443,0,7896,7907,3,848,424,0,7897,7907, + 3,850,425,0,7898,7907,3,854,427,0,7899,7907,3,890,445,0,7900,7907, + 3,894,447,0,7901,7907,3,898,449,0,7902,7907,3,914,457,0,7903,7907, + 3,916,458,0,7904,7907,3,918,459,0,7905,7907,3,920,460,0,7906,7882, + 1,0,0,0,7906,7885,1,0,0,0,7906,7886,1,0,0,0,7906,7887,1,0,0,0,7906, + 7888,1,0,0,0,7906,7889,1,0,0,0,7906,7890,1,0,0,0,7906,7891,1,0,0, + 0,7906,7892,1,0,0,0,7906,7893,1,0,0,0,7906,7894,1,0,0,0,7906,7895, + 1,0,0,0,7906,7896,1,0,0,0,7906,7897,1,0,0,0,7906,7898,1,0,0,0,7906, + 7899,1,0,0,0,7906,7900,1,0,0,0,7906,7901,1,0,0,0,7906,7902,1,0,0, + 0,7906,7903,1,0,0,0,7906,7904,1,0,0,0,7906,7905,1,0,0,0,7907,847, + 1,0,0,0,7908,7909,5,498,0,0,7909,7910,3,930,465,0,7910,7911,5,7, + 0,0,7911,849,1,0,0,0,7912,7913,5,433,0,0,7913,7920,3,928,464,0,7914, + 7916,5,2,0,0,7915,7917,3,730,365,0,7916,7915,1,0,0,0,7916,7917,1, + 0,0,0,7917,7918,1,0,0,0,7918,7919,5,3,0,0,7919,7921,5,7,0,0,7920, + 7914,1,0,0,0,7920,7921,1,0,0,0,7921,7932,1,0,0,0,7922,7923,5,57, + 0,0,7923,7924,3,928,464,0,7924,7926,5,2,0,0,7925,7927,3,730,365, + 0,7926,7925,1,0,0,0,7926,7927,1,0,0,0,7927,7928,1,0,0,0,7928,7929, + 5,3,0,0,7929,7930,5,7,0,0,7930,7932,1,0,0,0,7931,7912,1,0,0,0,7931, + 7922,1,0,0,0,7932,851,1,0,0,0,7933,7934,3,858,429,0,7934,7935,3, + 844,422,0,7935,7936,3,930,465,0,7936,7937,5,7,0,0,7937,853,1,0,0, + 0,7938,7940,5,499,0,0,7939,7941,7,114,0,0,7940,7939,1,0,0,0,7940, + 7941,1,0,0,0,7941,7942,1,0,0,0,7942,7943,5,500,0,0,7943,7948,3,856, + 428,0,7944,7945,5,6,0,0,7945,7947,3,856,428,0,7946,7944,1,0,0,0, + 7947,7950,1,0,0,0,7948,7946,1,0,0,0,7948,7949,1,0,0,0,7949,7951, + 1,0,0,0,7950,7948,1,0,0,0,7951,7952,5,7,0,0,7952,855,1,0,0,0,7953, + 7954,3,858,429,0,7954,7955,3,844,422,0,7955,7956,3,818,409,0,7956, + 857,1,0,0,0,7957,7960,3,316,158,0,7958,7960,5,28,0,0,7959,7957,1, + 0,0,0,7959,7958,1,0,0,0,7960,7967,1,0,0,0,7961,7962,5,4,0,0,7962, + 7963,3,674,337,0,7963,7964,5,5,0,0,7964,7966,1,0,0,0,7965,7961,1, + 0,0,0,7966,7969,1,0,0,0,7967,7965,1,0,0,0,7967,7968,1,0,0,0,7968, + 859,1,0,0,0,7969,7967,1,0,0,0,7970,7971,5,220,0,0,7971,7972,3,930, + 465,0,7972,7976,5,93,0,0,7973,7975,3,846,423,0,7974,7973,1,0,0,0, + 7975,7978,1,0,0,0,7976,7974,1,0,0,0,7976,7977,1,0,0,0,7977,7990, + 1,0,0,0,7978,7976,1,0,0,0,7979,7980,5,502,0,0,7980,7981,3,674,337, + 0,7981,7985,5,93,0,0,7982,7984,3,846,423,0,7983,7982,1,0,0,0,7984, + 7987,1,0,0,0,7985,7983,1,0,0,0,7985,7986,1,0,0,0,7986,7989,1,0,0, + 0,7987,7985,1,0,0,0,7988,7979,1,0,0,0,7989,7992,1,0,0,0,7990,7988, + 1,0,0,0,7990,7991,1,0,0,0,7991,7994,1,0,0,0,7992,7990,1,0,0,0,7993, + 7995,3,862,431,0,7994,7993,1,0,0,0,7994,7995,1,0,0,0,7995,7996,1, + 0,0,0,7996,7997,5,454,0,0,7997,7998,5,220,0,0,7998,7999,5,7,0,0, + 7999,861,1,0,0,0,8000,8004,5,58,0,0,8001,8003,3,846,423,0,8002,8001, + 1,0,0,0,8003,8006,1,0,0,0,8004,8002,1,0,0,0,8004,8005,1,0,0,0,8005, + 863,1,0,0,0,8006,8004,1,0,0,0,8007,8009,5,40,0,0,8008,8010,3,930, + 465,0,8009,8008,1,0,0,0,8009,8010,1,0,0,0,8010,8020,1,0,0,0,8011, + 8012,5,102,0,0,8012,8013,3,730,365,0,8013,8017,5,93,0,0,8014,8016, + 3,846,423,0,8015,8014,1,0,0,0,8016,8019,1,0,0,0,8017,8015,1,0,0, + 0,8017,8018,1,0,0,0,8018,8021,1,0,0,0,8019,8017,1,0,0,0,8020,8011, + 1,0,0,0,8021,8022,1,0,0,0,8022,8020,1,0,0,0,8022,8023,1,0,0,0,8023, + 8025,1,0,0,0,8024,8026,3,862,431,0,8025,8024,1,0,0,0,8025,8026,1, + 0,0,0,8026,8027,1,0,0,0,8027,8028,5,454,0,0,8028,8029,5,40,0,0,8029, + 8030,5,7,0,0,8030,865,1,0,0,0,8031,8033,3,838,419,0,8032,8031,1, + 0,0,0,8032,8033,1,0,0,0,8033,8038,1,0,0,0,8034,8035,5,503,0,0,8035, + 8039,3,674,337,0,8036,8037,5,62,0,0,8037,8039,3,868,434,0,8038,8034, + 1,0,0,0,8038,8036,1,0,0,0,8038,8039,1,0,0,0,8039,8040,1,0,0,0,8040, + 8041,3,882,441,0,8041,867,1,0,0,0,8042,8043,3,314,157,0,8043,8066, + 5,68,0,0,8044,8046,3,818,409,0,8045,8047,3,534,267,0,8046,8045,1, + 0,0,0,8046,8047,1,0,0,0,8047,8067,1,0,0,0,8048,8067,3,560,280,0, + 8049,8067,3,520,260,0,8050,8051,5,202,0,0,8051,8054,3,674,337,0, + 8052,8053,5,100,0,0,8053,8055,3,730,365,0,8054,8052,1,0,0,0,8054, + 8055,1,0,0,0,8055,8067,1,0,0,0,8056,8058,5,504,0,0,8057,8056,1,0, + 0,0,8057,8058,1,0,0,0,8058,8059,1,0,0,0,8059,8060,3,674,337,0,8060, + 8061,5,24,0,0,8061,8064,3,674,337,0,8062,8063,5,147,0,0,8063,8065, + 3,674,337,0,8064,8062,1,0,0,0,8064,8065,1,0,0,0,8065,8067,1,0,0, + 0,8066,8044,1,0,0,0,8066,8048,1,0,0,0,8066,8049,1,0,0,0,8066,8050, + 1,0,0,0,8066,8057,1,0,0,0,8067,869,1,0,0,0,8068,8070,3,838,419,0, + 8069,8068,1,0,0,0,8069,8070,1,0,0,0,8070,8071,1,0,0,0,8071,8072, + 5,505,0,0,8072,8075,3,314,157,0,8073,8074,5,506,0,0,8074,8076,5, + 571,0,0,8075,8073,1,0,0,0,8075,8076,1,0,0,0,8076,8077,1,0,0,0,8077, + 8078,5,68,0,0,8078,8079,5,35,0,0,8079,8080,3,674,337,0,8080,8081, + 3,882,441,0,8081,871,1,0,0,0,8082,8084,7,115,0,0,8083,8085,3,928, + 464,0,8084,8083,1,0,0,0,8084,8085,1,0,0,0,8085,8088,1,0,0,0,8086, + 8087,5,102,0,0,8087,8089,3,930,465,0,8088,8086,1,0,0,0,8088,8089, + 1,0,0,0,8089,8090,1,0,0,0,8090,8091,5,7,0,0,8091,873,1,0,0,0,8092, + 8107,5,508,0,0,8093,8094,5,268,0,0,8094,8108,3,930,465,0,8095,8102, + 5,509,0,0,8096,8097,5,202,0,0,8097,8098,3,674,337,0,8098,8099,5, + 100,0,0,8099,8100,3,730,365,0,8100,8103,1,0,0,0,8101,8103,3,560, + 280,0,8102,8096,1,0,0,0,8102,8101,1,0,0,0,8103,8108,1,0,0,0,8104, + 8106,3,930,465,0,8105,8104,1,0,0,0,8105,8106,1,0,0,0,8106,8108,1, + 0,0,0,8107,8093,1,0,0,0,8107,8095,1,0,0,0,8107,8105,1,0,0,0,8108, + 8109,1,0,0,0,8109,8110,5,7,0,0,8110,875,1,0,0,0,8111,8141,5,510, + 0,0,8112,8114,7,116,0,0,8113,8112,1,0,0,0,8113,8114,1,0,0,0,8114, + 8127,1,0,0,0,8115,8128,3,826,413,0,8116,8117,5,511,0,0,8117,8128, + 3,808,404,0,8118,8125,3,808,404,0,8119,8120,5,6,0,0,8120,8122,3, + 674,337,0,8121,8119,1,0,0,0,8122,8123,1,0,0,0,8123,8121,1,0,0,0, + 8123,8124,1,0,0,0,8124,8126,1,0,0,0,8125,8121,1,0,0,0,8125,8126, + 1,0,0,0,8126,8128,1,0,0,0,8127,8115,1,0,0,0,8127,8116,1,0,0,0,8127, + 8118,1,0,0,0,8127,8128,1,0,0,0,8128,8138,1,0,0,0,8129,8130,5,100, + 0,0,8130,8135,3,878,439,0,8131,8132,5,6,0,0,8132,8134,3,878,439, + 0,8133,8131,1,0,0,0,8134,8137,1,0,0,0,8135,8133,1,0,0,0,8135,8136, + 1,0,0,0,8136,8139,1,0,0,0,8137,8135,1,0,0,0,8138,8129,1,0,0,0,8138, + 8139,1,0,0,0,8139,8140,1,0,0,0,8140,8142,5,7,0,0,8141,8113,1,0,0, + 0,8141,8142,1,0,0,0,8142,877,1,0,0,0,8143,8144,3,826,413,0,8144, + 8145,5,10,0,0,8145,8146,3,674,337,0,8146,879,1,0,0,0,8147,8148,5, + 518,0,0,8148,8151,3,930,465,0,8149,8150,5,6,0,0,8150,8152,3,930, + 465,0,8151,8149,1,0,0,0,8151,8152,1,0,0,0,8152,8153,1,0,0,0,8153, + 8154,5,7,0,0,8154,881,1,0,0,0,8155,8159,5,519,0,0,8156,8158,3,846, + 423,0,8157,8156,1,0,0,0,8158,8161,1,0,0,0,8159,8157,1,0,0,0,8159, + 8160,1,0,0,0,8160,8162,1,0,0,0,8161,8159,1,0,0,0,8162,8163,5,454, + 0,0,8163,8165,5,519,0,0,8164,8166,3,928,464,0,8165,8164,1,0,0,0, + 8165,8166,1,0,0,0,8166,8167,1,0,0,0,8167,8168,5,7,0,0,8168,883,1, + 0,0,0,8169,8171,3,4,2,0,8170,8172,3,888,444,0,8171,8170,1,0,0,0, + 8171,8172,1,0,0,0,8172,8173,1,0,0,0,8173,8174,5,7,0,0,8174,885,1, + 0,0,0,8175,8176,5,202,0,0,8176,8192,3,674,337,0,8177,8179,3,888, + 444,0,8178,8177,1,0,0,0,8178,8179,1,0,0,0,8179,8182,1,0,0,0,8180, + 8181,5,100,0,0,8181,8183,3,730,365,0,8182,8180,1,0,0,0,8182,8183, + 1,0,0,0,8183,8193,1,0,0,0,8184,8185,5,100,0,0,8185,8187,3,730,365, + 0,8186,8184,1,0,0,0,8186,8187,1,0,0,0,8187,8189,1,0,0,0,8188,8190, + 3,888,444,0,8189,8188,1,0,0,0,8189,8190,1,0,0,0,8190,8193,1,0,0, + 0,8191,8193,1,0,0,0,8192,8178,1,0,0,0,8192,8186,1,0,0,0,8192,8191, + 1,0,0,0,8193,8194,1,0,0,0,8194,8195,5,7,0,0,8195,887,1,0,0,0,8196, + 8198,5,71,0,0,8197,8199,5,346,0,0,8198,8197,1,0,0,0,8198,8199,1, + 0,0,0,8199,8200,1,0,0,0,8200,8201,3,730,365,0,8201,889,1,0,0,0,8202, + 8234,5,520,0,0,8203,8208,3,922,461,0,8204,8206,5,269,0,0,8205,8204, + 1,0,0,0,8205,8206,1,0,0,0,8206,8207,1,0,0,0,8207,8209,5,324,0,0, + 8208,8205,1,0,0,0,8208,8209,1,0,0,0,8209,8210,1,0,0,0,8210,8218, + 5,62,0,0,8211,8219,3,560,280,0,8212,8213,5,202,0,0,8213,8216,3,930, + 465,0,8214,8215,5,100,0,0,8215,8217,3,730,365,0,8216,8214,1,0,0, + 0,8216,8217,1,0,0,0,8217,8219,1,0,0,0,8218,8211,1,0,0,0,8218,8212, + 1,0,0,0,8219,8235,1,0,0,0,8220,8232,3,818,409,0,8221,8222,5,2,0, + 0,8222,8227,3,892,446,0,8223,8224,5,6,0,0,8224,8226,3,892,446,0, + 8225,8223,1,0,0,0,8226,8229,1,0,0,0,8227,8225,1,0,0,0,8227,8228, + 1,0,0,0,8228,8230,1,0,0,0,8229,8227,1,0,0,0,8230,8231,5,3,0,0,8231, + 8233,1,0,0,0,8232,8221,1,0,0,0,8232,8233,1,0,0,0,8233,8235,1,0,0, + 0,8234,8203,1,0,0,0,8234,8220,1,0,0,0,8235,8236,1,0,0,0,8236,8237, + 5,7,0,0,8237,891,1,0,0,0,8238,8239,3,818,409,0,8239,8240,5,20,0, + 0,8240,8242,1,0,0,0,8241,8238,1,0,0,0,8241,8242,1,0,0,0,8242,8243, + 1,0,0,0,8243,8244,3,674,337,0,8244,893,1,0,0,0,8245,8247,5,61,0, + 0,8246,8248,3,896,448,0,8247,8246,1,0,0,0,8247,8248,1,0,0,0,8248, + 8250,1,0,0,0,8249,8251,3,332,166,0,8250,8249,1,0,0,0,8250,8251,1, + 0,0,0,8251,8252,1,0,0,0,8252,8253,3,922,461,0,8253,8254,5,71,0,0, + 8254,8255,3,730,365,0,8255,8256,5,7,0,0,8256,895,1,0,0,0,8257,8272, + 5,268,0,0,8258,8272,5,293,0,0,8259,8272,5,207,0,0,8260,8272,5,249, + 0,0,8261,8263,7,50,0,0,8262,8261,1,0,0,0,8262,8263,1,0,0,0,8263, + 8264,1,0,0,0,8264,8272,3,674,337,0,8265,8272,5,30,0,0,8266,8269, + 7,117,0,0,8267,8270,3,674,337,0,8268,8270,5,30,0,0,8269,8267,1,0, + 0,0,8269,8268,1,0,0,0,8269,8270,1,0,0,0,8270,8272,1,0,0,0,8271,8257, + 1,0,0,0,8271,8258,1,0,0,0,8271,8259,1,0,0,0,8271,8260,1,0,0,0,8271, + 8262,1,0,0,0,8271,8265,1,0,0,0,8271,8266,1,0,0,0,8272,897,1,0,0, + 0,8273,8275,5,265,0,0,8274,8276,3,896,448,0,8275,8274,1,0,0,0,8275, + 8276,1,0,0,0,8276,8277,1,0,0,0,8277,8278,3,922,461,0,8278,8279,5, + 7,0,0,8279,899,1,0,0,0,8280,8282,3,572,286,0,8281,8280,1,0,0,0,8281, + 8282,1,0,0,0,8282,8283,1,0,0,0,8283,8284,5,525,0,0,8284,8286,5,71, + 0,0,8285,8287,5,81,0,0,8286,8285,1,0,0,0,8286,8287,1,0,0,0,8287, + 8288,1,0,0,0,8288,8290,3,774,387,0,8289,8291,5,9,0,0,8290,8289,1, + 0,0,0,8290,8291,1,0,0,0,8291,8296,1,0,0,0,8292,8294,5,36,0,0,8293, + 8292,1,0,0,0,8293,8294,1,0,0,0,8294,8295,1,0,0,0,8295,8297,3,818, + 409,0,8296,8293,1,0,0,0,8296,8297,1,0,0,0,8297,8298,1,0,0,0,8298, + 8299,5,100,0,0,8299,8300,3,902,451,0,8300,8301,5,80,0,0,8301,8303, + 3,674,337,0,8302,8304,3,904,452,0,8303,8302,1,0,0,0,8304,8305,1, + 0,0,0,8305,8303,1,0,0,0,8305,8306,1,0,0,0,8306,901,1,0,0,0,8307, + 8309,5,81,0,0,8308,8307,1,0,0,0,8308,8309,1,0,0,0,8309,8310,1,0, + 0,0,8310,8312,3,774,387,0,8311,8313,5,9,0,0,8312,8311,1,0,0,0,8312, + 8313,1,0,0,0,8313,8319,1,0,0,0,8314,8317,3,564,282,0,8315,8317,3, + 608,304,0,8316,8314,1,0,0,0,8316,8315,1,0,0,0,8317,8319,1,0,0,0, + 8318,8308,1,0,0,0,8318,8316,1,0,0,0,8319,8324,1,0,0,0,8320,8322, + 5,36,0,0,8321,8320,1,0,0,0,8321,8322,1,0,0,0,8322,8323,1,0,0,0,8323, + 8325,3,818,409,0,8324,8321,1,0,0,0,8324,8325,1,0,0,0,8325,903,1, + 0,0,0,8326,8327,5,102,0,0,8327,8330,5,526,0,0,8328,8329,5,33,0,0, + 8329,8331,3,674,337,0,8330,8328,1,0,0,0,8330,8331,1,0,0,0,8331,8332, + 1,0,0,0,8332,8337,5,93,0,0,8333,8338,3,908,454,0,8334,8338,5,182, + 0,0,8335,8336,5,57,0,0,8336,8338,5,270,0,0,8337,8333,1,0,0,0,8337, + 8334,1,0,0,0,8337,8335,1,0,0,0,8338,8353,1,0,0,0,8339,8340,5,102, + 0,0,8340,8341,5,77,0,0,8341,8344,5,526,0,0,8342,8343,5,33,0,0,8343, + 8345,3,674,337,0,8344,8342,1,0,0,0,8344,8345,1,0,0,0,8345,8346,1, + 0,0,0,8346,8350,5,93,0,0,8347,8351,3,906,453,0,8348,8349,5,57,0, + 0,8349,8351,5,270,0,0,8350,8347,1,0,0,0,8350,8348,1,0,0,0,8351,8353, + 1,0,0,0,8352,8326,1,0,0,0,8352,8339,1,0,0,0,8353,905,1,0,0,0,8354, + 8356,5,241,0,0,8355,8357,3,144,72,0,8356,8355,1,0,0,0,8356,8357, + 1,0,0,0,8357,8361,1,0,0,0,8358,8359,5,463,0,0,8359,8360,7,76,0,0, + 8360,8362,5,450,0,0,8361,8358,1,0,0,0,8361,8362,1,0,0,0,8362,8363, + 1,0,0,0,8363,8364,3,910,455,0,8364,907,1,0,0,0,8365,8366,5,369,0, + 0,8366,8384,5,333,0,0,8367,8368,3,800,400,0,8368,8369,5,10,0,0,8369, + 8370,3,912,456,0,8370,8385,1,0,0,0,8371,8372,3,144,72,0,8372,8373, + 5,10,0,0,8373,8374,5,2,0,0,8374,8379,3,912,456,0,8375,8376,5,6,0, + 0,8376,8378,3,912,456,0,8377,8375,1,0,0,0,8378,8381,1,0,0,0,8379, + 8377,1,0,0,0,8379,8380,1,0,0,0,8380,8382,1,0,0,0,8381,8379,1,0,0, + 0,8382,8383,5,3,0,0,8383,8385,1,0,0,0,8384,8367,1,0,0,0,8384,8371, + 1,0,0,0,8385,8386,1,0,0,0,8386,8384,1,0,0,0,8386,8387,1,0,0,0,8387, + 909,1,0,0,0,8388,8389,5,422,0,0,8389,8390,5,2,0,0,8390,8395,3,912, + 456,0,8391,8392,5,6,0,0,8392,8394,3,912,456,0,8393,8391,1,0,0,0, + 8394,8397,1,0,0,0,8395,8393,1,0,0,0,8395,8396,1,0,0,0,8396,8398, + 1,0,0,0,8397,8395,1,0,0,0,8398,8399,5,3,0,0,8399,8403,1,0,0,0,8400, + 8401,5,53,0,0,8401,8403,5,422,0,0,8402,8388,1,0,0,0,8402,8400,1, + 0,0,0,8403,911,1,0,0,0,8404,8407,3,588,294,0,8405,8407,5,53,0,0, + 8406,8404,1,0,0,0,8406,8405,1,0,0,0,8407,913,1,0,0,0,8408,8409,5, + 157,0,0,8409,8410,3,922,461,0,8410,8411,5,7,0,0,8411,915,1,0,0,0, + 8412,8413,5,78,0,0,8413,8414,5,7,0,0,8414,917,1,0,0,0,8415,8421, + 7,67,0,0,8416,8418,5,33,0,0,8417,8419,5,269,0,0,8418,8417,1,0,0, + 0,8418,8419,1,0,0,0,8419,8420,1,0,0,0,8420,8422,5,153,0,0,8421,8416, + 1,0,0,0,8421,8422,1,0,0,0,8422,8423,1,0,0,0,8423,8424,5,7,0,0,8424, + 919,1,0,0,0,8425,8426,5,333,0,0,8426,8427,3,316,158,0,8427,8428, + 5,94,0,0,8428,8429,5,53,0,0,8429,8430,5,7,0,0,8430,8438,1,0,0,0, + 8431,8434,5,313,0,0,8432,8435,3,316,158,0,8433,8435,5,30,0,0,8434, + 8432,1,0,0,0,8434,8433,1,0,0,0,8435,8436,1,0,0,0,8436,8438,5,7,0, + 0,8437,8425,1,0,0,0,8437,8431,1,0,0,0,8438,921,1,0,0,0,8439,8442, + 3,818,409,0,8440,8442,5,28,0,0,8441,8439,1,0,0,0,8441,8440,1,0,0, + 0,8442,923,1,0,0,0,8443,8460,5,517,0,0,8444,8445,5,102,0,0,8445, + 8450,3,926,463,0,8446,8447,5,82,0,0,8447,8449,3,926,463,0,8448,8446, + 1,0,0,0,8449,8452,1,0,0,0,8450,8448,1,0,0,0,8450,8451,1,0,0,0,8451, + 8453,1,0,0,0,8452,8450,1,0,0,0,8453,8457,5,93,0,0,8454,8456,3,846, + 423,0,8455,8454,1,0,0,0,8456,8459,1,0,0,0,8457,8455,1,0,0,0,8457, + 8458,1,0,0,0,8458,8461,1,0,0,0,8459,8457,1,0,0,0,8460,8444,1,0,0, + 0,8461,8462,1,0,0,0,8462,8460,1,0,0,0,8462,8463,1,0,0,0,8463,925, + 1,0,0,0,8464,8468,3,928,464,0,8465,8466,5,511,0,0,8466,8468,3,808, + 404,0,8467,8464,1,0,0,0,8467,8465,1,0,0,0,8468,927,1,0,0,0,8469, + 8472,3,818,409,0,8470,8472,3,828,414,0,8471,8469,1,0,0,0,8471,8470, + 1,0,0,0,8472,929,1,0,0,0,8473,8475,3,756,378,0,8474,8473,1,0,0,0, + 8474,8475,1,0,0,0,8475,8477,1,0,0,0,8476,8478,3,580,290,0,8477,8476, + 1,0,0,0,8477,8478,1,0,0,0,8478,8480,1,0,0,0,8479,8481,3,610,305, + 0,8480,8479,1,0,0,0,8480,8481,1,0,0,0,8481,8483,1,0,0,0,8482,8484, + 3,638,319,0,8483,8482,1,0,0,0,8483,8484,1,0,0,0,8484,8486,1,0,0, + 0,8485,8487,3,600,300,0,8486,8485,1,0,0,0,8486,8487,1,0,0,0,8487, + 8490,1,0,0,0,8488,8489,5,67,0,0,8489,8491,3,674,337,0,8490,8488, + 1,0,0,0,8490,8491,1,0,0,0,8491,8493,1,0,0,0,8492,8494,3,702,351, + 0,8493,8492,1,0,0,0,8493,8494,1,0,0,0,8494,931,1,0,0,0,1188,935, + 942,1062,1064,1073,1078,1084,1119,1129,1135,1140,1147,1152,1159, + 1170,1178,1182,1194,1200,1206,1210,1215,1219,1232,1242,1244,1250, + 1255,1268,1271,1276,1281,1292,1296,1308,1312,1315,1319,1331,1349, + 1356,1364,1369,1376,1384,1390,1398,1406,1410,1424,1429,1434,1446, + 1452,1464,1469,1479,1485,1490,1498,1503,1510,1515,1520,1530,1535, + 1540,1547,1551,1565,1571,1577,1582,1589,1601,1609,1617,1633,1642, + 1651,1660,1664,1676,1684,1694,1714,1719,1722,1729,1732,1736,1740, + 1743,1748,1753,1757,1766,1772,1776,1785,1788,1794,1803,1815,1819, + 1823,1828,1831,1837,1839,1841,1845,1851,1855,1860,1865,1869,1872, + 1879,1892,1905,1919,1936,1946,1953,1958,1962,1969,1974,1977,1979, + 1984,1988,1992,1996,2001,2004,2008,2011,2015,2023,2028,2031,2035, + 2041,2050,2054,2060,2062,2071,2076,2088,2093,2097,2101,2106,2110, + 2113,2116,2119,2122,2125,2130,2133,2136,2139,2142,2145,2151,2155, + 2158,2161,2164,2167,2169,2176,2184,2194,2199,2209,2212,2217,2222, + 2227,2230,2235,2244,2246,2250,2253,2257,2262,2267,2271,2274,2278, + 2281,2286,2289,2294,2297,2301,2304,2307,2312,2315,2323,2335,2339, + 2346,2351,2354,2357,2360,2365,2376,2382,2386,2389,2392,2397,2404, + 2407,2411,2419,2424,2427,2430,2437,2442,2451,2454,2457,2462,2465, + 2477,2487,2504,2508,2512,2514,2531,2533,2549,2560,2563,2566,2575, + 2584,2600,2603,2606,2614,2618,2625,2634,2638,2644,2648,2651,2654, + 2657,2660,2666,2670,2675,2679,2682,2685,2688,2693,2699,2703,2707, + 2711,2717,2719,2724,2730,2736,2740,2755,2760,2763,2765,2768,2772, + 2776,2779,2782,2790,2796,2798,2804,2809,2814,2818,2825,2827,2838, + 2877,2887,2889,2892,2896,2900,2910,2912,2918,2920,2929,2941,2955, + 2960,2963,2970,2975,2983,2985,2991,2996,3000,3005,3011,3018,3024, + 3026,3035,3041,3049,3055,3060,3065,3073,3088,3090,3094,3098,3101, + 3104,3113,3116,3119,3125,3131,3135,3147,3153,3156,3161,3165,3172, + 3182,3184,3208,3220,3225,3227,3231,3234,3237,3247,3250,3260,3265, + 3270,3273,3276,3284,3290,3297,3305,3308,3319,3323,3329,3336,3339, + 3348,3362,3365,3379,3390,3393,3405,3410,3423,3428,3441,3450,3453, + 3456,3463,3466,3478,3484,3486,3494,3502,3510,3522,3527,3538,3549, + 3557,3565,3572,3579,3581,3584,3589,3594,3613,3622,3625,3652,3661, + 3664,3668,3672,3676,3683,3687,3691,3695,3699,3704,3708,3713,3719, + 3724,3731,3735,3741,3745,3750,3758,3764,3769,3776,3781,3785,3790, + 3796,3803,3808,3815,3820,3827,3831,3839,3843,3845,3848,3853,3863, + 3878,3881,3889,3896,3901,3907,3911,3918,3923,3926,3929,3933,3942, + 3960,3963,3995,4000,4006,4026,4031,4037,4040,4044,4048,4054,4057, + 4061,4065,4070,4073,4076,4079,4092,4098,4106,4113,4118,4121,4128, + 4131,4139,4142,4147,4154,4157,4177,4189,4192,4198,4203,4212,4220, + 4225,4231,4238,4246,4249,4260,4262,4276,4282,4290,4292,4298,4302, + 4305,4308,4313,4318,4322,4325,4328,4331,4334,4342,4353,4356,4359, + 4364,4367,4371,4375,4381,4389,4392,4405,4410,4412,4417,4424,4431, + 4440,4448,4456,4463,4471,4478,4486,4490,4494,4496,4502,4507,4511, + 4518,4523,4528,4533,4535,4545,4555,4571,4589,4601,4608,4623,4628, + 4631,4636,4641,4646,4649,4652,4657,4664,4668,4673,4680,4684,4690, + 4699,4708,4720,4722,4735,4741,4745,4747,4754,4767,4774,4776,4792, + 4796,4800,4805,4810,4815,4820,4823,4835,4888,4897,4901,4910,4914, + 4923,4927,4932,4935,4939,4944,4946,4955,4960,4971,4975,4989,4997, + 5035,5037,5056,5059,5086,5090,5094,5098,5102,5105,5120,5127,5141, + 5154,5179,5198,5213,5229,5236,5247,5250,5269,5272,5285,5289,5309, + 5321,5325,5347,5351,5361,5365,5371,5375,5379,5383,5390,5395,5406, + 5410,5413,5418,5424,5435,5439,5442,5446,5450,5453,5463,5466,5470, + 5475,5481,5484,5489,5492,5499,5501,5507,5511,5520,5525,5527,5537, + 5540,5545,5553,5556,5561,5563,5565,5571,5588,5594,5607,5613,5617, + 5622,5652,5667,5672,5676,5689,5693,5695,5704,5710,5712,5716,5719, + 5722,5725,5728,5730,5733,5737,5745,5750,5753,5759,5763,5767,5772, + 5774,5778,5782,5789,5795,5799,5801,5803,5816,5824,5832,5843,5852, + 5857,5861,5865,5872,5875,5877,5885,5889,5892,5899,5906,5911,5918, + 5921,5923,5926,5932,5937,5941,5948,5958,5965,5968,5971,5975,5986, + 5989,5992,5995,5998,6005,6008,6011,6018,6030,6037,6039,6044,6049, + 6051,6057,6064,6069,6074,6078,6082,6086,6088,6092,6096,6099,6102, + 6104,6114,6116,6121,6125,6130,6134,6141,6146,6150,6153,6159,6162, + 6181,6188,6192,6195,6199,6203,6206,6209,6214,6223,6230,6234,6238, + 6242,6245,6247,6252,6256,6261,6267,6274,6279,6284,6293,6300,6308, + 6319,6324,6328,6331,6335,6340,6344,6349,6357,6368,6373,6377,6380, + 6383,6385,6388,6391,6394,6398,6402,6406,6408,6417,6422,6428,6432, + 6434,6441,6446,6452,6454,6458,6465,6470,6473,6479,6483,6489,6498, + 6504,6506,6511,6514,6523,6530,6532,6539,6544,6547,6557,6568,6573, + 6577,6585,6595,6602,6608,6619,6625,6635,6644,6648,6651,6653,6655, + 6659,6667,6670,6675,6680,6687,6689,6695,6699,6702,6707,6710,6712, + 6718,6727,6733,6736,6744,6747,6751,6757,6759,6762,6766,6771,6778, + 6785,6787,6793,6795,6800,6802,6806,6815,6819,6827,6829,6843,6846, + 6854,6863,6869,6874,6882,6884,6889,6893,6898,6903,6909,6925,6927, + 6936,6951,6956,6959,6965,6970,6983,6988,6992,6999,7018,7030,7035, + 7043,7045,7047,7056,7059,7064,7069,7073,7076,7085,7093,7098,7100, + 7103,7107,7118,7139,7147,7160,7170,7176,7182,7185,7188,7214,7216, + 7237,7247,7260,7265,7269,7271,7283,7290,7296,7302,7306,7317,7327, + 7331,7336,7339,7342,7351,7362,7364,7368,7373,7382,7387,7395,7405, + 7413,7417,7420,7427,7435,7439,7446,7454,7463,7466,7478,7487,7494, + 7503,7513,7518,7522,7524,7527,7532,7537,7545,7553,7556,7563,7571, + 7579,7587,7604,7611,7619,7636,7642,7648,7656,7662,7667,7675,7680, + 7683,7692,7699,7704,7708,7713,7719,7724,7732,7787,7794,7800,7802, + 7804,7806,7812,7816,7820,7831,7834,7838,7842,7846,7849,7852,7855, + 7864,7869,7873,7906,7916,7920,7926,7931,7940,7948,7959,7967,7976, + 7985,7990,7994,8004,8009,8017,8022,8025,8032,8038,8046,8054,8057, + 8064,8066,8069,8075,8084,8088,8102,8105,8107,8113,8123,8125,8127, + 8135,8138,8141,8151,8159,8165,8171,8178,8182,8186,8189,8192,8198, + 8205,8208,8216,8218,8227,8232,8234,8241,8247,8250,8262,8269,8271, + 8275,8281,8286,8290,8293,8296,8305,8308,8312,8316,8318,8321,8324, + 8330,8337,8344,8350,8352,8356,8361,8379,8384,8386,8395,8402,8406, + 8418,8421,8434,8437,8441,8450,8457,8462,8467,8471,8474,8477,8480, + 8483,8486,8490,8493 ]; private static __ATN: antlr.ATN; @@ -62667,6 +62660,15 @@ export class TableelementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public constraintelem(): ConstraintelemContext | null { + return this.getRuleContext(0, ConstraintelemContext); + } + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } public column_def(): Column_defContext | null { return this.getRuleContext(0, Column_defContext); } @@ -62703,15 +62705,6 @@ export class TableelementContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.KW_EXCLUDING, i); } } - public constraintelem(): ConstraintelemContext | null { - return this.getRuleContext(0, ConstraintelemContext); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } public override get ruleIndex(): number { return PostgreSqlParser.RULE_tableelement; } @@ -82471,15 +82464,9 @@ export class ColidContext extends antlr.ParserRuleContext { public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } public col_name_keyword(): Col_name_keywordContext | null { return this.getRuleContext(0, Col_name_keywordContext); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); - } public override get ruleIndex(): number { return PostgreSqlParser.RULE_colid; } @@ -82510,12 +82497,6 @@ export class Type_function_nameContext extends antlr.ParserRuleContext { public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); - } public type_func_name_keyword(): Type_func_name_keywordContext | null { return this.getRuleContext(0, Type_func_name_keywordContext); } @@ -82549,9 +82530,6 @@ export class NonreservedwordContext extends antlr.ParserRuleContext { public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } public col_name_keyword(): Col_name_keywordContext | null { return this.getRuleContext(0, Col_name_keywordContext); } @@ -82585,11 +82563,14 @@ export class CollabelContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public nonreservedword(): NonreservedwordContext | null { - return this.getRuleContext(0, NonreservedwordContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public col_name_keyword(): Col_name_keywordContext | null { + return this.getRuleContext(0, Col_name_keywordContext); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public type_func_name_keyword(): Type_func_name_keywordContext | null { + return this.getRuleContext(0, Type_func_name_keywordContext); } public reserved_keyword(): Reserved_keywordContext | null { return this.getRuleContext(0, Reserved_keywordContext); @@ -82645,8 +82626,8 @@ export class IdentifierContext extends antlr.ParserRuleContext { public PLSQLIDENTIFIER(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.PLSQLIDENTIFIER, 0); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public unreserved_keyword(): Unreserved_keywordContext | null { + return this.getRuleContext(0, Unreserved_keywordContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_identifier; @@ -83578,6 +83559,105 @@ export class Unreserved_keywordContext extends antlr.ParserRuleContext { public KW_ZONE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ZONE, 0); } + public KW_ALIAS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALIAS, 0); + } + public KW_ASSERT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASSERT, 0); + } + public KW_CONSTANT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTANT, 0); + } + public KW_DEBUG(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEBUG, 0); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } + public KW_DIAGNOSTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DIAGNOSTICS, 0); + } + public KW_DUMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DUMP, 0); + } + public KW_ELSIF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ELSIF, 0); + } + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ERROR, 0); + } + public KW_EXCEPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0); + } + public KW_EXIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXIT, 0); + } + public KW_GET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GET, 0); + } + public KW_INFO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INFO, 0); + } + public KW_IS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IS, 0); + } + public KW_LOG(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOG, 0); + } + public KW_NOTICE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOTICE, 0); + } + public KW_OPEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPEN, 0); + } + public KW_PUBLIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLIC, 0); + } + public KW_PERFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PERFORM, 0); + } + public KW_PRINT_STRICT_PARAMS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRINT_STRICT_PARAMS, 0); + } + public KW_QUERY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_QUERY, 0); + } + public KW_RAISE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RAISE, 0); + } + public KW_RETURN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RETURN, 0); + } + public KW_REVERSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REVERSE, 0); + } + public KW_ROWTYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWTYPE, 0); + } + public KW_SLICE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SLICE, 0); + } + public KW_SQLSTATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SQLSTATE, 0); + } + public KW_STACKED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STACKED, 0); + } + public KW_USE_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USE_COLUMN, 0); + } + public KW_USE_VARIABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USE_VARIABLE, 0); + } + public KW_VARIABLE_CONFLICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARIABLE_CONFLICT, 0); + } + public KW_WARNING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WARNING, 0); + } + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OUTER, 0); + } public override get ruleIndex(): number { return PostgreSqlParser.RULE_unreserved_keyword; } @@ -86606,8 +86686,8 @@ export class Any_identifierContext extends antlr.ParserRuleContext { public colid(): ColidContext | null { return this.getRuleContext(0, ColidContext); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public unreserved_keyword(): Unreserved_keywordContext | null { + return this.getRuleContext(0, Unreserved_keywordContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_any_identifier; @@ -86632,222 +86712,6 @@ export class Any_identifierContext extends antlr.ParserRuleContext { } -export class Plsql_unreserved_keywordContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ABSOLUTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ABSOLUTE, 0); - } - public KW_ALIAS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALIAS, 0); - } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AND, 0); - } - public KW_ARRAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ARRAY, 0); - } - public KW_ASSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ASSERT, 0); - } - public KW_BACKWARD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BACKWARD, 0); - } - public KW_CALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CALL, 0); - } - public KW_CHAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHAIN, 0); - } - public KW_CLOSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLOSE, 0); - } - public KW_COLLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0); - } - public KW_COMMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COMMIT, 0); - } - public KW_CONSTANT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTANT, 0); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public KW_CONTINUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONTINUE, 0); - } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); - } - public KW_CURSOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURSOR, 0); - } - public KW_DEBUG(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEBUG, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_DIAGNOSTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DIAGNOSTICS, 0); - } - public KW_DO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DO, 0); - } - public KW_DUMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DUMP, 0); - } - public KW_ELSIF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ELSIF, 0); - } - public KW_ERROR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ERROR, 0); - } - public KW_EXCEPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0); - } - public KW_EXIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXIT, 0); - } - public KW_FETCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FETCH, 0); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FIRST, 0); - } - public KW_FORWARD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FORWARD, 0); - } - public KW_GET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GET, 0); - } - public KW_INFO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INFO, 0); - } - public KW_INSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSERT, 0); - } - public KW_IS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IS, 0); - } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LAST, 0); - } - public KW_LOG(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOG, 0); - } - public KW_MOVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MOVE, 0); - } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NEXT, 0); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_NOTICE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTICE, 0); - } - public KW_OPEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPEN, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); - } - public KW_PERFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PERFORM, 0); - } - public KW_PRINT_STRICT_PARAMS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRINT_STRICT_PARAMS, 0); - } - public KW_PRIOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIOR, 0); - } - public KW_QUERY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_QUERY, 0); - } - public KW_RAISE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RAISE, 0); - } - public KW_RELATIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); - } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); - } - public KW_RETURN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RETURN, 0); - } - public KW_REVERSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REVERSE, 0); - } - public KW_ROLLBACK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); - } - public KW_ROWTYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWTYPE, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public KW_SCROLL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCROLL, 0); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_SLICE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SLICE, 0); - } - public KW_SQLSTATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SQLSTATE, 0); - } - public KW_STACKED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STACKED, 0); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public KW_USE_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USE_COLUMN, 0); - } - public KW_USE_VARIABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USE_VARIABLE, 0); - } - public KW_VARIABLE_CONFLICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARIABLE_CONFLICT, 0); - } - public KW_WARNING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WARNING, 0); - } - public KW_OUTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OUTER, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsql_unreserved_keyword; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsql_unreserved_keyword) { - listener.enterPlsql_unreserved_keyword(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsql_unreserved_keyword) { - listener.exitPlsql_unreserved_keyword(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsql_unreserved_keyword) { - return visitor.visitPlsql_unreserved_keyword(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Sql_expressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); diff --git a/src/lib/postgresql/PostgreSqlParserListener.ts b/src/lib/postgresql/PostgreSqlParserListener.ts index b2e80b98..6d3ec5ef 100644 --- a/src/lib/postgresql/PostgreSqlParserListener.ts +++ b/src/lib/postgresql/PostgreSqlParserListener.ts @@ -489,7 +489,6 @@ import { Cursor_variableContext } from "./PostgreSqlParser.js"; import { Exception_sectContext } from "./PostgreSqlParser.js"; import { Proc_conditionContext } from "./PostgreSqlParser.js"; import { Any_identifierContext } from "./PostgreSqlParser.js"; -import { Plsql_unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Sql_expressionContext } from "./PostgreSqlParser.js"; @@ -5400,16 +5399,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAny_identifier?: (ctx: Any_identifierContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.plsql_unreserved_keyword`. - * @param ctx the parse tree - */ - enterPlsql_unreserved_keyword?: (ctx: Plsql_unreserved_keywordContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.plsql_unreserved_keyword`. - * @param ctx the parse tree - */ - exitPlsql_unreserved_keyword?: (ctx: Plsql_unreserved_keywordContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.sql_expression`. * @param ctx the parse tree diff --git a/src/lib/postgresql/PostgreSqlParserVisitor.ts b/src/lib/postgresql/PostgreSqlParserVisitor.ts index fabf31ee..3b4c9e52 100644 --- a/src/lib/postgresql/PostgreSqlParserVisitor.ts +++ b/src/lib/postgresql/PostgreSqlParserVisitor.ts @@ -489,7 +489,6 @@ import { Cursor_variableContext } from "./PostgreSqlParser.js"; import { Exception_sectContext } from "./PostgreSqlParser.js"; import { Proc_conditionContext } from "./PostgreSqlParser.js"; import { Any_identifierContext } from "./PostgreSqlParser.js"; -import { Plsql_unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Sql_expressionContext } from "./PostgreSqlParser.js"; @@ -3433,12 +3432,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.plsql_unreserved_keyword`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPlsql_unreserved_keyword?: (ctx: Plsql_unreserved_keywordContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.sql_expression`. * @param ctx the parse tree diff --git a/test/parser/postgresql/contextCollect/entityCollector.test.ts b/test/parser/postgresql/contextCollect/entityCollector.test.ts index 410c563e..e0b7b27c 100644 --- a/test/parser/postgresql/contextCollect/entityCollector.test.ts +++ b/test/parser/postgresql/contextCollect/entityCollector.test.ts @@ -139,7 +139,7 @@ describe('PostgreSql entity collector tests', () => { endColumn: 2, }); - expect(tableCreateEntity.columns.length).toBe(3); + expect(tableCreateEntity.columns.length).toBe(2); tableCreateEntity.columns.forEach((columEntity) => { expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); From 2b0de6a3da16561ec52b0c69d4e052226d54a553 Mon Sep 17 00:00:00 2001 From: Hayden Date: Thu, 4 Jul 2024 09:54:54 +0800 Subject: [PATCH 05/16] feat: upgrade trino to 450 (#323) * feat: upgrade trino grammar to 450 * feat: prefix KW to keyword rule * feat: resume suggestion and collect entity * feat: optimize trino drop function * feat: add test cases to trino unit tests * feat: correct types --- src/grammar/trino/TrinoSql.g4 | 930 +- src/lib/trino/TrinoSql.interp | 210 +- src/lib/trino/TrinoSql.tokens | 1160 +- src/lib/trino/TrinoSqlLexer.interp | 227 +- src/lib/trino/TrinoSqlLexer.tokens | 1158 +- src/lib/trino/TrinoSqlLexer.ts | 2871 +- src/lib/trino/TrinoSqlListener.ts | 1511 +- src/lib/trino/TrinoSqlParser.ts | 35122 ++++++++++------ src/lib/trino/TrinoSqlVisitor.ts | 830 +- src/parser/trino/index.ts | 29 +- src/parser/trino/trinoEntityCollector.ts | 24 +- test/helper.ts | 4 +- .../suggestion/fixtures/syntaxSuggestion.sql | 8 + .../trino/suggestion/syntaxSuggestion.test.ts | 70 + .../trino/suggestion/tokenSuggestion.test.ts | 20 +- .../trino/syntax/createStatement.test.ts | 12 + .../parser/trino/syntax/dropStatement.test.ts | 12 + .../trino/syntax/fixtures/alter_table.sql | 2 + test/parser/trino/syntax/fixtures/comment.sql | 2 + .../trino/syntax/fixtures/create_catalog.sql | 13 + .../trino/syntax/fixtures/create_function.sql | 8 + .../fixtures/create_materialized_view.sql | 28 + .../trino/syntax/fixtures/create_table.sql | 1 + .../trino/syntax/fixtures/drop_catalog.sql | 1 + .../trino/syntax/fixtures/drop_function.sql | 5 + test/parser/trino/syntax/fixtures/execute.sql | 8 + .../trino/syntax/fixtures/reset_session.sql | 2 + .../fixtures/select_function_tables.sql | 16 + .../trino/syntax/fixtures/set_session.sql | 4 + .../trino/syntax/fixtures/show_create.sql | 5 +- .../trino/syntax/selectStatement.test.ts | 6 + 31 files changed, 28551 insertions(+), 15748 deletions(-) create mode 100644 test/parser/trino/syntax/fixtures/create_catalog.sql create mode 100644 test/parser/trino/syntax/fixtures/create_function.sql create mode 100644 test/parser/trino/syntax/fixtures/drop_catalog.sql create mode 100644 test/parser/trino/syntax/fixtures/drop_function.sql create mode 100644 test/parser/trino/syntax/fixtures/select_function_tables.sql diff --git a/src/grammar/trino/TrinoSql.g4 b/src/grammar/trino/TrinoSql.g4 index 98a2e0c6..ed74b529 100644 --- a/src/grammar/trino/TrinoSql.g4 +++ b/src/grammar/trino/TrinoSql.g4 @@ -15,9 +15,10 @@ /** * This file is an adaptation of trino's trino/core/trino-parser/src/main/antlr4/io/trino/sql/parser/SqlBase.g4 grammar. * Reference: https://github.com/trinodb/trino/blob/385/core/trino-parser/src/main/antlr4/io/trino/sql/parser/SqlBase.g4 + * current version 450 */ -// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format alignTrailingComments true, columnLimit 160, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false // $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging // $antlr-format spaceBeforeAssignmentOperators false, keepEmptyLinesAtTheStartOfBlocks true @@ -45,13 +46,6 @@ statements : singleStatement ; -standaloneClause - : standaloneExpression - | standalonePathSpecification - | standaloneType - | standaloneRowPattern - ; - singleStatement : statement SEMICOLON? ; @@ -72,114 +66,138 @@ standaloneRowPattern : rowPattern SEMICOLON? ; +standaloneFunctionSpecification + : functionSpecification EOF + ; + statement - : query # statementDefault - | KW_USE schemaName # use + : rootQuery # statementDefault + | KW_USE schemaRef # use + | KW_CREATE KW_CATALOG (KW_IF KW_NOT KW_EXISTS)? catalog=catalogNameCreate KW_USING connectorName=identifier ( + KW_COMMENT string + )? (KW_AUTHORIZATION principal)? (KW_WITH properties)? # createCatalog + | KW_DROP KW_CATALOG (KW_IF KW_EXISTS)? catalog=catalogRef (KW_CASCADE | KW_RESTRICT)? # dropCatalog | KW_CREATE KW_SCHEMA (KW_IF KW_NOT KW_EXISTS)? schemaNameCreate (KW_AUTHORIZATION principal)? ( KW_WITH properties - )? # createSchema - | KW_DROP KW_SCHEMA (KW_IF KW_EXISTS)? schemaName (KW_CASCADE | KW_RESTRICT)? # dropSchema - | KW_ALTER KW_SCHEMA schemaName KW_RENAME KW_TO schemaNameCreate # renameSchema - | KW_ALTER KW_SCHEMA schemaName KW_SET KW_AUTHORIZATION principal # setSchemaAuthorization - | KW_CREATE KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate columnListCreate? ( + )? # createSchema + | KW_DROP KW_SCHEMA (KW_IF KW_EXISTS)? schemaRef (KW_CASCADE | KW_RESTRICT)? # dropSchema + | KW_ALTER KW_SCHEMA schemaRef KW_RENAME KW_TO schemaNameCreate # renameSchema + | KW_ALTER KW_SCHEMA schemaRef KW_SET KW_AUTHORIZATION principal # setSchemaAuthorization + | KW_CREATE (KW_OR KW_REPLACE)? KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate columnListCreate? ( KW_COMMENT string - )? (KW_WITH properties)? KW_AS (query | '(' query ')') (KW_WITH (KW_NO)? KW_DATA)? # createTableAsSelect - | KW_CREATE KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate '(' tableElement ( + )? (KW_WITH properties)? KW_AS (rootQuery | '(' rootQuery ')') (KW_WITH (KW_NO)? KW_DATA)? # createTableAsSelect + | KW_CREATE (KW_OR KW_REPLACE)? KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate '(' tableElement ( ',' tableElement - )* ')' (KW_COMMENT string)? (KW_WITH properties)? # createTable - | KW_DROP KW_TABLE (KW_IF KW_EXISTS)? tableName # dropTable - | KW_INSERT KW_INTO tableName columnList? query # insertInto - | KW_DELETE KW_FROM tableName (KW_WHERE booleanExpression)? # delete - | KW_TRUNCATE KW_TABLE tableName # truncateTable - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? from= tableName KW_RENAME KW_TO to= tableNameCreate # renameTable - | KW_COMMENT KW_ON KW_TABLE tableName KW_IS (string | KW_NULL) # commentTable - | KW_COMMENT KW_ON KW_COLUMN columnName KW_IS (string | KW_NULL) # commentColumn - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_RENAME KW_COLUMN (KW_IF KW_EXISTS)? from= columnName KW_TO to= columnNameCreate # renameColumn - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_DROP KW_COLUMN (KW_IF KW_EXISTS)? column= columnName # dropColumn - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_ADD KW_COLUMN (KW_IF KW_NOT KW_EXISTS)? column= columnDefinition # addColumn - | KW_ALTER KW_TABLE tableName KW_SET KW_AUTHORIZATION principal # setTableAuthorization - | KW_ALTER KW_TABLE tableName KW_SET KW_PROPERTIES propertyAssignments # setTableProperties - | KW_ALTER KW_TABLE tableName KW_EXECUTE procedureName= identifier ( + )* ')' (KW_COMMENT string)? (KW_WITH properties)? # createTable + | KW_DROP KW_TABLE (KW_IF KW_EXISTS)? tableRef # dropTable + | KW_INSERT KW_INTO tableRef columnList? rootQuery # insertInto + | KW_DELETE KW_FROM tableRef (KW_WHERE booleanExpression)? # delete + | KW_TRUNCATE KW_TABLE tableRef # truncateTable + | KW_COMMENT KW_ON KW_TABLE tableRef KW_IS (string | KW_NULL) # commentTable + | KW_COMMENT KW_ON KW_VIEW viewRef KW_IS (string | KW_NULL) # commentView + | KW_COMMENT KW_ON KW_COLUMN columnRef KW_IS (string | KW_NULL) # commentColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? from=tableRef KW_RENAME KW_TO to=tableNameCreate # renameTable + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_ADD KW_COLUMN (KW_IF KW_NOT KW_EXISTS)? column=columnDefinition # addColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_RENAME KW_COLUMN (KW_IF KW_EXISTS)? from=columnRef KW_TO to=columnNameCreate # renameColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_DROP KW_COLUMN (KW_IF KW_EXISTS)? column=columnRef # dropColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_ALTER KW_COLUMN column=columnRef KW_SET KW_DATA KW_TYPE type # setColumnType + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_ALTER KW_COLUMN column=columnRef KW_DROP KW_NOT KW_NULL # dropNotNullConstraint + | KW_ALTER KW_TABLE tableName=tableRef KW_SET KW_AUTHORIZATION principal # setTableAuthorization + | KW_ALTER KW_TABLE tableName=tableRef KW_SET KW_PROPERTIES propertyAssignments # setTableProperties + | KW_ALTER KW_TABLE tableName=tableRef KW_EXECUTE procedureName=functionName ( '(' (callArgument (',' callArgument)*)? ')' - )? (KW_WHERE where= booleanExpression)? # tableExecute - | KW_ANALYZE tableName (KW_WITH properties)? # analyze + )? (KW_WHERE where=booleanExpression)? # tableExecute + | KW_ANALYZE tableRef (KW_WITH properties)? # analyze | KW_CREATE (KW_OR KW_REPLACE)? KW_MATERIALIZED KW_VIEW (KW_IF KW_NOT KW_EXISTS)? viewNameCreate ( - KW_COMMENT string - )? (KW_WITH properties)? KW_AS query # createMaterializedView + KW_GRACE KW_PERIOD interval + )? (KW_COMMENT string)? (KW_WITH properties)? KW_AS rootQuery # createMaterializedView | KW_CREATE (KW_OR KW_REPLACE)? KW_VIEW viewNameCreate (KW_COMMENT string)? ( KW_SECURITY (KW_DEFINER | KW_INVOKER) - )? KW_AS query # createView - | KW_REFRESH KW_MATERIALIZED KW_VIEW viewName # refreshMaterializedView - | KW_DROP KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? viewName # dropMaterializedView - | KW_ALTER KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? from= viewName KW_RENAME KW_TO to= viewNameCreate # renameMaterializedView - | KW_ALTER KW_MATERIALIZED KW_VIEW viewName KW_SET KW_PROPERTIES propertyAssignments # setMaterializedViewProperties - | KW_DROP KW_VIEW (KW_IF KW_EXISTS)? viewName # dropView - | KW_ALTER KW_VIEW from= viewName KW_RENAME KW_TO to= viewNameCreate # renameView - | KW_ALTER KW_VIEW from= viewName KW_SET KW_AUTHORIZATION principal # setViewAuthorization - | KW_CALL functionName '(' (callArgument (',' callArgument)*)? ')' # call - | KW_CREATE KW_ROLE name= identifier (KW_WITH KW_ADMIN grantor)? (KW_IN catalogName)? # createRole - | KW_DROP KW_ROLE name= identifier # dropRole - | KW_GRANT roles KW_TO principal (',' principal)* (KW_WITH KW_ADMIN KW_OPTION)? ( - KW_GRANTED KW_BY grantor - )? (KW_IN catalogName)? # grantRoles - | KW_REVOKE (KW_ADMIN KW_OPTION KW_FOR)? roles KW_FROM principal (',' principal)* ( - KW_GRANTED KW_BY grantor - )? (KW_IN catalogName)? # revokeRoles - | KW_SET KW_ROLE (KW_ALL | KW_NONE | role= identifier) (KW_IN catalogName)? # setRole - | KW_GRANT (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( - KW_SCHEMA? schemaName - | KW_TABLE? tableName - )? KW_TO grantee= principal (KW_WITH KW_GRANT KW_OPTION)? # grant - | KW_DENY (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( - KW_SCHEMA? schemaName - | KW_TABLE? tableName - ) KW_TO grantee= principal # deny - | KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( - KW_SCHEMA? schemaName - | KW_TABLE? tableName - )? KW_FROM grantee= principal # revoke - | KW_SHOW KW_GRANTS (KW_ON KW_TABLE? tableName)? # showGrants - | KW_EXPLAIN KW_ANALYZE? KW_VERBOSE? ('(' explainOption (',' explainOption)* ')')? statement # explain - | KW_SHOW KW_CREATE KW_TABLE tableName # showCreateTable - | KW_SHOW KW_CREATE KW_SCHEMA schemaName # showCreateSchema - | KW_SHOW KW_CREATE KW_VIEW viewName # showCreateView - | KW_SHOW KW_CREATE KW_MATERIALIZED KW_VIEW viewName # showCreateMaterializedView - | KW_SHOW KW_TABLES ((KW_FROM | KW_IN) schemaName)? ( - KW_LIKE pattern= string (KW_ESCAPE escape= string)? + )? (KW_WITH properties)? KW_AS rootQuery # createView + | KW_REFRESH KW_MATERIALIZED KW_VIEW viewRef # refreshMaterializedView + | KW_DROP KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? viewRef # dropMaterializedView + | KW_ALTER KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? from=viewRef KW_RENAME KW_TO to=viewNameCreate # renameMaterializedView + | KW_ALTER KW_MATERIALIZED KW_VIEW viewRef KW_SET KW_PROPERTIES propertyAssignments # setMaterializedViewProperties + | KW_DROP KW_VIEW (KW_IF KW_EXISTS)? viewRef # dropView + | KW_ALTER KW_VIEW from=viewRef KW_RENAME KW_TO to=viewNameCreate # renameView + | KW_ALTER KW_VIEW from=viewRef KW_SET KW_AUTHORIZATION principal # setViewAuthorization + | KW_CALL functionName '(' (callArgument (',' callArgument)*)? ')' # call + | KW_CREATE (KW_OR KW_REPLACE)? functionSpecification # createFunction + | KW_DROP KW_FUNCTION (KW_IF KW_EXISTS)? functionSignature # dropFunction + | KW_CREATE KW_ROLE name=identifier (KW_WITH KW_ADMIN grantor)? (KW_IN catalog=catalogRef)? # createRole + | KW_DROP KW_ROLE name=identifier (KW_IN catalog=catalogRef)? # dropRole + | KW_GRANT privilegeOrRole (',' privilegeOrRole)* KW_TO principal (',' principal)* ( + KW_WITH KW_ADMIN KW_OPTION + )? (KW_GRANTED KW_BY grantor)? (KW_IN catalog=catalogRef)? # grantRoles + | KW_GRANT ((privilegeOrRole (',' privilegeOrRole)*) | KW_ALL KW_PRIVILEGES) KW_ON grantObject KW_TO principal ( + KW_WITH KW_GRANT KW_OPTION + )? # grantPrivileges + | KW_REVOKE (KW_ADMIN KW_OPTION KW_FOR)? privilegeOrRole (',' privilegeOrRole)* KW_FROM principal ( + ',' principal + )* (KW_GRANTED KW_BY grantor)? (KW_IN catalog=catalogRef)? # revokeRoles + | KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? ( + (privilegeOrRole (',' privilegeOrRole)*) + | KW_ALL KW_PRIVILEGES + ) KW_ON grantObject KW_FROM grantee=principal # revokePrivileges + | KW_DENY (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON grantObject KW_TO grantee=principal # deny + | KW_SET KW_ROLE (KW_ALL | KW_NONE | role=identifier) (KW_IN catalog=catalogRef)? # setRole + | KW_SHOW KW_GRANTS (KW_ON grantObject)? # showGrants + | KW_EXPLAIN ('(' explainOption (',' explainOption)* ')')? statement # explain + | KW_EXPLAIN KW_ANALYZE KW_VERBOSE? statement # explainAnalyze + | KW_SHOW KW_CREATE KW_TABLE tableRef # showCreateTable + | KW_SHOW KW_CREATE KW_SCHEMA schemaRef # showCreateSchema + | KW_SHOW KW_CREATE KW_VIEW viewRef # showCreateView + | KW_SHOW KW_CREATE KW_MATERIALIZED KW_VIEW viewRef # showCreateMaterializedView + | KW_SHOW KW_CREATE KW_FUNCTION functionName # showCreateFunction + | KW_SHOW KW_TABLES ((KW_FROM | KW_IN) schemaRef)? ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? )? # showTables - | KW_SHOW KW_SCHEMAS ((KW_FROM | KW_IN) catalogName)? ( - KW_LIKE pattern= string (KW_ESCAPE escape= string)? - )? # showSchemas - | KW_SHOW KW_CATALOGS (KW_LIKE pattern= string (KW_ESCAPE escape= string)?)? # showCatalogs - | KW_SHOW KW_COLUMNS (KW_FROM | KW_IN) tableOrViewName? ( - KW_LIKE pattern= string (KW_ESCAPE escape= string)? - )? # showColumns - | KW_SHOW KW_STATS KW_FOR tableName # showStats - | KW_SHOW KW_STATS KW_FOR '(' query ')' # showStatsForQuery - | KW_SHOW KW_CURRENT? KW_ROLES ((KW_FROM | KW_IN) identifier)? # showRoles - | KW_SHOW KW_ROLE KW_GRANTS ((KW_FROM | KW_IN) identifier)? # showRoleGrants - | KW_DESCRIBE tableOrViewName # showColumns - | KW_DESC tableOrViewName # showColumns - | KW_SHOW KW_FUNCTIONS (KW_LIKE pattern= string (KW_ESCAPE escape= string)?)? # showFunctions - | KW_SHOW KW_SESSION (KW_LIKE pattern= string (KW_ESCAPE escape= string)?)? # showSession - | KW_SET KW_SESSION qualifiedName EQ expression # setSession - | KW_RESET KW_SESSION qualifiedName # resetSession - | KW_START KW_TRANSACTION (transactionMode (',' transactionMode)*)? # startTransaction - | KW_COMMIT KW_WORK? # commit - | KW_ROLLBACK KW_WORK? # rollback - | KW_PREPARE identifier KW_FROM statement # prepare - | KW_DEALLOCATE KW_PREPARE identifier # deallocate - | KW_EXECUTE identifier (KW_USING expression (',' expression)*)? # execute - | KW_DESCRIBE KW_INPUT identifier # describeInput - | KW_DESCRIBE KW_OUTPUT identifier # describeOutput - | KW_SET KW_PATH pathSpecification # setPath - | KW_SET KW_TIME KW_ZONE (KW_LOCAL | expression) # setTimeZone - | KW_UPDATE tableName KW_SET updateAssignment (',' updateAssignment)* ( - KW_WHERE where= booleanExpression - )? # update - | KW_MERGE KW_INTO tableName (KW_AS? identifier)? KW_USING relation KW_ON expression mergeCase+ # merge - | KW_SHOW KW_COMMENT KW_ON KW_TABLE tableName # showTableComment // dtstack - | KW_SHOW KW_COMMENT KW_ON KW_COLUMN columnName # showColumnComment // dtstack + | KW_SHOW KW_SCHEMAS ((KW_FROM | KW_IN) catalogRef)? ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? + )? # showSchemas + | KW_SHOW KW_CATALOGS (KW_LIKE pattern=string (KW_ESCAPE escape=string)?)? # showCatalogs + | KW_SHOW KW_COLUMNS (KW_FROM | KW_IN) tableOrViewName ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? + )? # showColumns + | KW_SHOW KW_STATS KW_FOR tableOrViewName # showStats + | KW_SHOW KW_STATS KW_FOR '(' rootQuery ')' # showStatsForQuery + | KW_SHOW KW_CURRENT? KW_ROLES ((KW_FROM | KW_IN) catalogRef)? # showRoles + | KW_SHOW KW_ROLE KW_GRANTS ((KW_FROM | KW_IN) catalogRef)? # showRoleGrants + | KW_DESCRIBE tableOrViewName # showColumns + | KW_DESC tableOrViewName # showColumns + | KW_SHOW KW_FUNCTIONS ((KW_FROM | KW_IN) schemaRef)? ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? + )? # showFunctions + | KW_SHOW KW_SESSION (KW_LIKE pattern=string (KW_ESCAPE escape=string)?)? # showSession + | KW_SET KW_SESSION KW_AUTHORIZATION authorizationUser # setSessionAuthorization + | KW_RESET KW_SESSION KW_AUTHORIZATION # resetSessionAuthorization + | KW_SET KW_SESSION qualifiedName EQ expression # setSession + | KW_RESET KW_SESSION qualifiedName # resetSession + | KW_START KW_TRANSACTION (transactionMode (',' transactionMode)*)? # startTransaction + | KW_COMMIT KW_WORK? # commit + | KW_ROLLBACK KW_WORK? # rollback + | KW_PREPARE identifier KW_FROM statement # prepare + | KW_DEALLOCATE KW_PREPARE identifier # deallocate + | KW_EXECUTE identifier (KW_USING expression (',' expression)*)? # execute + | KW_EXECUTE KW_IMMEDIATE string (KW_USING expression (',' expression)*)? # executeImmediate + | KW_DESCRIBE KW_INPUT identifier # describeInput + | KW_DESCRIBE KW_OUTPUT identifier # describeOutput + | KW_SET KW_PATH pathSpecification # setPath + | KW_SET KW_TIME KW_ZONE ( KW_LOCAL | expression) # setTimeZone + | KW_UPDATE tableRef KW_SET updateAssignment (',' updateAssignment)* ( + KW_WHERE where=booleanExpression + )? # update + | KW_MERGE KW_INTO tableRef (KW_AS? identifier)? KW_USING relation KW_ON expression mergeCase+ # merge + | KW_SHOW KW_COMMENT KW_ON KW_TABLE tableRef # showTableComment // dtstack + | KW_SHOW KW_COMMENT KW_ON KW_COLUMN columnRef # showColumnComment // dtstack + ; + +rootQuery + : withFunction? query + ; + +withFunction + : KW_WITH functionSpecification (',' functionSpecification)* ; query @@ -200,7 +218,7 @@ columnDefinition ; likeClause - : KW_LIKE tableName (optionType= (KW_INCLUDING | KW_EXCLUDING) KW_PROPERTIES)? + : KW_LIKE tableRef (optionType=( KW_INCLUDING | KW_EXCLUDING) KW_PROPERTIES)? ; properties @@ -222,11 +240,11 @@ propertyValue queryNoWith : queryTerm (KW_ORDER KW_BY sortItem (',' sortItem)*)? ( - KW_OFFSET offset= rowCount (KW_ROW | KW_ROWS)? + KW_OFFSET offset=rowCount (KW_ROW | KW_ROWS)? )? ( - (KW_LIMIT limit= limitRowCount) + (KW_LIMIT limit=limitRowCount) | ( - KW_FETCH (KW_FIRST | KW_NEXT) (fetchFirst= rowCount)? (KW_ROW | KW_ROWS) ( + KW_FETCH (KW_FIRST | KW_NEXT) (fetchFirst=rowCount)? (KW_ROW | KW_ROWS) ( KW_ONLY | KW_WITH KW_TIES ) @@ -245,28 +263,28 @@ rowCount ; queryTerm - : queryPrimary # queryTermDefault - | left= queryTerm operator= KW_INTERSECT setQuantifier? right= queryTerm # setOperation - | left= queryTerm operator= (KW_UNION | KW_EXCEPT) setQuantifier? right= queryTerm # setOperation + : queryPrimary # queryTermDefault + | left=queryTerm operator=KW_INTERSECT setQuantifier? right=queryTerm # setOperation + | left=queryTerm operator=(KW_UNION | KW_EXCEPT) setQuantifier? right=queryTerm # setOperation ; queryPrimary : querySpecification # queryPrimaryDefault - | KW_TABLE tableName # table + | KW_TABLE tableRef # table | KW_VALUES expression (',' expression)* # inlineTable | '(' queryNoWith ')' # subquery ; sortItem - : (columnName | expression) ordering= (KW_ASC | KW_DESC)? ( - KW_NULLS nullOrdering= (KW_FIRST | KW_LAST) + : (columnRef | expression) ordering=(KW_ASC | KW_DESC)? ( + KW_NULLS nullOrdering=(KW_FIRST | KW_LAST) )? ; querySpecification : KW_SELECT setQuantifier? selectItem (',' selectItem)* (KW_FROM relation (',' relation)*)? ( - KW_WHERE where= booleanExpression - )? (KW_GROUP KW_BY groupBy)? (KW_HAVING having= booleanExpression)? ( + KW_WHERE where=booleanExpression + )? (KW_GROUP KW_BY groupBy)? (KW_HAVING having=booleanExpression)? ( KW_WINDOW windowDefinition (',' windowDefinition)* )? ; @@ -277,8 +295,8 @@ groupBy groupingElement : groupingSet # singleGroupingSet - | KW_ROLLUP '(' (groupingTerm (',' groupingTerm)*)? ')' # rollup - | KW_CUBE '(' (groupingTerm (',' groupingTerm)*)? ')' # cube + | KW_ROLLUP '(' (groupingSet (',' groupingSet)*)? ')' # rollup + | KW_CUBE '(' (groupingSet (',' groupingSet)*)? ')' # cube | KW_GROUPING KW_SETS '(' groupingSet (',' groupingSet)* ')' # multipleGroupingSets ; @@ -288,22 +306,22 @@ groupingSet ; groupingTerm - : columnName + : columnRef | expression ; windowDefinition - : name= identifier KW_AS '(' windowSpecification ')' + : name=identifier KW_AS '(' windowSpecification ')' ; windowSpecification - : (existingWindowName= identifier)? ( - KW_PARTITION KW_BY partition+= expression (',' partition+= expression)* + : (existingWindowName=identifier)? ( + KW_PARTITION KW_BY partition+=expression (',' partition+=expression)* )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? windowFrame? ; namedQuery - : name= identifier (columnAliases)? KW_AS '(' query ')' + : name=identifier (columnAliases)? KW_AS '(' query ')' ; setQuantifier @@ -312,16 +330,16 @@ setQuantifier ; selectItem - : (columnName | expression) (KW_AS? identifier)? # selectSingle + : (columnRef | expression) (KW_AS? identifier)? # selectSingle | primaryExpression '.' ASTERISK (KW_AS columnAliases)? # selectAll | ASTERISK # selectAll ; relation - : left= relation ( - KW_CROSS KW_JOIN right= sampledRelation - | joinType KW_JOIN rightRelation= relation joinCriteria - | KW_NATURAL joinType KW_JOIN right= sampledRelation + : left=relation ( + KW_CROSS KW_JOIN right=sampledRelation + | joinType KW_JOIN rightRelation=relation joinCriteria + | KW_NATURAL joinType KW_JOIN right=sampledRelation ) # joinRelation | sampledRelation # relationDefault ; @@ -339,7 +357,7 @@ joinCriteria ; sampledRelation - : patternRecognition (KW_TABLESAMPLE sampleType '(' percentage= expression ')')? + : patternRecognition (KW_TABLESAMPLE sampleType '(' percentage=expression ')')? ; sampleType @@ -347,17 +365,31 @@ sampleType | KW_SYSTEM ; +trimsSpecification + : KW_LEADING + | KW_TRAILING + | KW_BOTH + ; + +listAggOverflowBehavior + : KW_ERROR + | KW_TRUNCATE string? listaggCountIndication + ; + +listaggCountIndication + : KW_WITH KW_COUNT + | KW_WITHOUT KW_COUNT + ; + patternRecognition : aliasedRelation ( KW_MATCH_RECOGNIZE '(' ( - KW_PARTITION KW_BY partition+= expression (',' partition+= expression)* + KW_PARTITION KW_BY partition+=expression (',' partition+=expression)* )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? ( KW_MEASURES measureDefinition (',' measureDefinition)* )? rowsPerMatch? (KW_AFTER KW_MATCH skipTo)? (KW_INITIAL | KW_SEEK)? KW_PATTERN '(' rowPattern ')' ( KW_SUBSET subsetDefinition (',' subsetDefinition)* - )? KW_DEFINE variableDefinition (',' variableDefinition)* ')' ( - KW_AS? identifier columnAliases? - )? + )? KW_DEFINE variableDefinition (',' variableDefinition)* ')' (KW_AS? identifier columnAliases?)? )? ; @@ -385,7 +417,7 @@ skipTo ; subsetDefinition - : name= identifier EQ '(' union+= identifier (',' union+= identifier)* ')' + : name=identifier EQ '(' union+=identifier (',' union+=identifier)* ')' ; variableDefinition @@ -401,7 +433,7 @@ columnListCreate ; columnList - : '(' columnName (',' columnName)* ')' + : '(' columnRef (',' columnRef)* ')' ; columnAliases @@ -409,11 +441,89 @@ columnAliases ; relationPrimary - : tableOrViewName # tableOrViewRelation + : tableOrViewName queryPeriod? # tableName | '(' query ')' # subqueryRelation | KW_UNNEST '(' expression (',' expression)* ')' (KW_WITH KW_ORDINALITY)? # unnest | KW_LATERAL '(' query ')' # lateral + | KW_TABLE '(' tableFunctionCall ')' # tableFunctionInvocation | '(' relation ')' # parenthesizedRelation + | KW_JSON_TABLE '(' jsonPathInvocation KW_COLUMNS '(' jsonTableColumn (',' jsonTableColumn)* ')' ( + KW_PLAN '(' jsonTableSpecificPlan ')' + | KW_PLAN KW_DEFAULT '(' jsonTableDefaultPlan ')' + )? ((KW_ERROR | KW_EMPTY) KW_ON KW_ERROR)? ')' # jsonTable + ; + +jsonTableColumn + : identifier KW_FOR KW_ORDINALITY # ordinalityColumn + | identifier type (KW_PATH string)? (emptyBehavior=jsonValueBehavior KW_ON KW_EMPTY)? ( + errorBehavior=jsonValueBehavior KW_ON KW_ERROR + )? # valueColumn + | identifier type KW_FORMAT jsonRepresentation (KW_PATH string)? ( + jsonQueryWrapperBehavior KW_WRAPPER + )? ((KW_KEEP | KW_OMIT) KW_QUOTES (KW_ON KW_SCALAR KW_TEXT_STRING)?)? ( + emptyBehavior=jsonQueryBehavior KW_ON KW_EMPTY + )? (errorBehavior=jsonQueryBehavior KW_ON KW_ERROR)? # queryColumn + | KW_NESTED KW_PATH? string (KW_AS identifier)? KW_COLUMNS '(' jsonTableColumn (',' jsonTableColumn)* ')' # nestedColumns + ; + +jsonTableSpecificPlan + : jsonTablePathName # leafPlan + | jsonTablePathName (KW_OUTER | KW_INNER) planPrimary # joinPlan + | planPrimary KW_UNION planPrimary (KW_UNION planPrimary)* # unionPlan + | planPrimary KW_CROSS planPrimary (KW_CROSS planPrimary)* # crossPlan + ; + +jsonTablePathName + : identifier + ; + +planPrimary + : jsonTablePathName + | '(' jsonTableSpecificPlan ')' + ; + +jsonTableDefaultPlan + : (KW_OUTER | KW_INNER) (',' (KW_UNION | KW_CROSS))? + | (KW_UNION | KW_CROSS) (',' (KW_OUTER | KW_INNER))? + ; + +tableFunctionCall + : functionName '(' (tableFunctionArgument (',' tableFunctionArgument)*)? ( + KW_COPARTITION copartitionTables (',' copartitionTables)* + )? ')' + ; + +tableFunctionArgument + : (identifier '=>')? ( + tableArgument + | descriptorArgument + | expression + ) // descriptor before expression to avoid parsing descriptor as a function call + ; + +tableArgument + : tableArgumentRelation (KW_PARTITION KW_BY ('(' (expression (',' expression)*)? ')' | expression))? ( + KW_PRUNE KW_WHEN KW_EMPTY + | KW_KEEP KW_WHEN KW_EMPTY + )? (KW_ORDER KW_BY ('(' sortItem (',' sortItem)* ')' | sortItem))? + ; + +tableArgumentRelation + : KW_TABLE '(' tableRef ')' (KW_AS? identifier columnAliases?)? # tableArgumentTable + | KW_TABLE '(' query ')' (KW_AS? identifier columnAliases?)? # tableArgumentQuery + ; + +descriptorArgument + : KW_DESCRIPTOR '(' descriptorField (',' descriptorField)* ')' + | KW_CAST '(' KW_NULL KW_AS KW_DESCRIPTOR ')' + ; + +descriptorField + : identifier type? + ; + +copartitionTables + : '(' qualifiedName ',' qualifiedName (',' qualifiedName)* ')' ; expression @@ -421,31 +531,31 @@ expression ; booleanExpression - : valueExpression predicate[$valueExpression.ctx]? # predicated - | KW_NOT booleanExpression # logicalNot - | left= booleanExpression operator= KW_AND right= booleanExpression # logicalBinary - | left= booleanExpression operator= KW_OR right= booleanExpression # logicalBinary + : valueExpression predicate[$valueExpression.ctx]? # predicated + | KW_NOT booleanExpression # logicalNot + | booleanExpression KW_AND booleanExpression # and + | booleanExpression KW_OR booleanExpression # or ; // workaround for https://github.com/antlr/antlr4/issues/780 predicate[antlr.ParserRuleContext value] - : comparisonOperator right= valueExpression # comparison - | comparisonOperator comparisonQuantifier '(' query ')' # quantifiedComparison - | KW_NOT? KW_BETWEEN lower= valueExpression KW_AND upper= valueExpression # between - | KW_NOT? KW_IN '(' expression (',' expression)* ')' # inList - | KW_NOT? KW_IN '(' query ')' # inSubquery - | KW_NOT? KW_LIKE pattern= valueExpression (KW_ESCAPE escape= valueExpression)? # like - | KW_IS KW_NOT? KW_NULL # nullPredicate - | KW_IS KW_NOT? KW_DISTINCT KW_FROM right= valueExpression # distinctFrom + : comparisonOperator right=valueExpression # comparison + | comparisonOperator comparisonQuantifier '(' query ')' # quantifiedComparison + | KW_NOT? KW_BETWEEN lower=valueExpression KW_AND upper=valueExpression # between + | KW_NOT? KW_IN '(' expression (',' expression)* ')' # inList + | KW_NOT? KW_IN '(' query ')' # inSubquery + | KW_NOT? KW_LIKE pattern=valueExpression (KW_ESCAPE escape=valueExpression)? # like + | KW_IS KW_NOT? KW_NULL # nullPredicate + | KW_IS KW_NOT? KW_DISTINCT KW_FROM right=valueExpression # distinctFrom ; valueExpression - : primaryExpression # valueExpressionDefault - | valueExpression KW_AT timeZoneSpecifier # atTimeZone - | operator= (MINUS | PLUS) valueExpression # arithmeticUnary - | left= valueExpression operator= (ASTERISK | SLASH | PERCENT) right= valueExpression # arithmeticBinary - | left= valueExpression operator= (PLUS | MINUS) right= valueExpression # arithmeticBinary - | left= valueExpression CONCAT right= valueExpression # concatenation + : primaryExpression # valueExpressionDefault + | valueExpression KW_AT timeZoneSpecifier # atTimeZone + | operator=(MINUS | PLUS) valueExpression # arithmeticUnary + | left=valueExpression operator=(ASTERISK | SLASH | PERCENT) right=valueExpression # arithmeticBinary + | left=valueExpression operator=(PLUS | MINUS) right=valueExpression # arithmeticBinary + | left=valueExpression CONCAT right=valueExpression # concatenation ; primaryExpression @@ -461,7 +571,10 @@ primaryExpression | KW_POSITION '(' valueExpression KW_IN valueExpression ')' # position | '(' expression (',' expression)+ ')' # rowConstructor | KW_ROW '(' expression (',' expression)* ')' # rowConstructor - | functionName '(' ASTERISK ')' filter? over? # functionCall + | name=KW_LISTAGG '(' setQuantifier? expression (',' string)? ( + KW_ON KW_OVERFLOW listAggOverflowBehavior + )? ')' (KW_WITHIN KW_GROUP '(' KW_ORDER KW_BY sortItem (',' sortItem)* ')') filter? # listagg + | processingMode? functionName '(' (label=identifier '.')? ASTERISK ')' filter? over? # functionCall | processingMode? functionName '(' (setQuantifier? expression (',' expression)*)? ( KW_ORDER KW_BY sortItem (',' sortItem)* )? ')' filter? (nullTreatment? over)? # functionCall @@ -470,29 +583,97 @@ primaryExpression | '(' (identifier (',' identifier)*)? ')' '->' expression # lambda | '(' query ')' # subqueryExpression // This is an extension to ANSI SQL, which considers KW_EXISTS to be a - | KW_EXISTS '(' query ')' # exists - | KW_CASE operand= expression whenClause+ (KW_ELSE elseExpression= expression)? KW_END # simpleCase - | KW_CASE whenClause+ (KW_ELSE elseExpression= expression)? KW_END # searchedCase - | KW_CAST '(' expression KW_AS type ')' # cast - | KW_TRY_CAST '(' expression KW_AS type ')' # cast - | KW_ARRAY '[' (expression (',' expression)*)? ']' # arrayConstructor - | value= primaryExpression '[' index= valueExpression ']' # subscript - | identifier # columnReference - | base= primaryExpression '.' fieldName= identifier # dereference - | name= KW_CURRENT_DATE # specialDateTimeFunction - | name= KW_CURRENT_TIME ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_CURRENT_TIMESTAMP ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_LOCALTIME ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_LOCALTIMESTAMP ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_CURRENT_USER # currentUser - | name= KW_CURRENT_CATALOG # currentCatalog - | name= KW_CURRENT_SCHEMA # currentSchema - | name= KW_CURRENT_PATH # currentPath - | KW_SUBSTRING '(' valueExpression KW_FROM valueExpression (KW_FOR valueExpression)? ')' # substring - | KW_NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize - | KW_EXTRACT '(' identifier KW_FROM valueExpression ')' # extract - | '(' expression ')' # parenthesizedExpression - | KW_GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation + | KW_EXISTS '(' query ')' # exists + | KW_CASE operand=expression whenClause+ (KW_ELSE elseExpression=expression)? KW_END # simpleCase + | KW_CASE whenClause+ (KW_ELSE elseExpression=expression)? KW_END # searchedCase + | KW_CAST '(' expression KW_AS type ')' # cast + | KW_TRY_CAST '(' expression KW_AS type ')' # cast + | KW_ARRAY '[' (expression (',' expression)*)? ']' # arrayConstructor + | value=primaryExpression '[' index=valueExpression ']' # subscript + | identifier # columnReference + | base=primaryExpression '.' fieldName=identifier # dereference + | name=KW_CURRENT_DATE # currentDate + | name=KW_CURRENT_TIME ('(' precision=INTEGER_VALUE ')')? # currentTime + | name=KW_CURRENT_TIMESTAMP ('(' precision=INTEGER_VALUE ')')? # currentTimestamp + | name=KW_LOCALTIME ('(' precision=INTEGER_VALUE ')')? # localTime + | name=KW_LOCALTIMESTAMP ('(' precision=INTEGER_VALUE ')')? # localTimestamp + | name=KW_CURRENT_USER # currentUser + | name=KW_CURRENT_CATALOG # currentCatalog + | name=KW_CURRENT_SCHEMA # currentSchema + | name=KW_CURRENT_PATH # currentPath + | KW_TRIM '(' (trimsSpecification? trimChar=valueExpression? KW_FROM)? trimSource=valueExpression ')' # trim + | KW_TRIM '(' trimSource=valueExpression ',' trimChar=valueExpression ')' # trim + | KW_SUBSTRING '(' valueExpression KW_FROM valueExpression (KW_FOR valueExpression)? ')' # substring + | KW_NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize + | KW_EXTRACT '(' identifier KW_FROM valueExpression ')' # extract + | '(' expression ')' # parenthesizedExpression + | KW_GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation + | KW_JSON_EXISTS '(' jsonPathInvocation (jsonExistsErrorBehavior KW_ON KW_ERROR)? ')' # jsonExists + | KW_JSON_VALUE '(' jsonPathInvocation (KW_RETURNING type)? ( + emptyBehavior=jsonValueBehavior KW_ON KW_EMPTY + )? (errorBehavior=jsonValueBehavior KW_ON KW_ERROR)? ')' # jsonValue + | KW_JSON_QUERY '(' jsonPathInvocation (KW_RETURNING type (KW_FORMAT jsonRepresentation)?)? ( + jsonQueryWrapperBehavior KW_WRAPPER + )? ((KW_KEEP | KW_OMIT) KW_QUOTES (KW_ON KW_SCALAR KW_TEXT_STRING)?)? ( + emptyBehavior=jsonQueryBehavior KW_ON KW_EMPTY + )? (errorBehavior=jsonQueryBehavior KW_ON KW_ERROR)? ')' # jsonQuery + | KW_JSON_OBJECT '(' ( + jsonObjectMember (',' jsonObjectMember)* (KW_NULL KW_ON KW_NULL | KW_ABSENT KW_ON KW_NULL)? ( + KW_WITH KW_UNIQUE KW_KEYS? + | KW_WITHOUT KW_UNIQUE KW_KEYS? + )? + )? (KW_RETURNING type (KW_FORMAT jsonRepresentation)?)? ')' # jsonObject + | KW_JSON_ARRAY '(' ( + jsonValueExpression (',' jsonValueExpression)* (KW_NULL KW_ON KW_NULL | KW_ABSENT KW_ON KW_NULL)? + )? (KW_RETURNING type (KW_FORMAT jsonRepresentation)?)? ')' # jsonArray + ; + +jsonPathInvocation + : jsonValueExpression ',' path=string (KW_AS pathName=identifier)? ( + KW_PASSING jsonArgument (',' jsonArgument)* + )? + ; + +jsonValueExpression + : expression (KW_FORMAT jsonRepresentation)? + ; + +jsonRepresentation + : KW_JSON (KW_ENCODING (KW_UTF8 | KW_UTF16 | KW_UTF32))? // TODO add implementation-defined JSON representation option + ; + +jsonArgument + : jsonValueExpression KW_AS identifier + ; + +jsonExistsErrorBehavior + : KW_TRUE + | KW_FALSE + | KW_UNKNOWN + | KW_ERROR + ; + +jsonValueBehavior + : KW_ERROR + | KW_NULL + | KW_DEFAULT expression + ; + +jsonQueryWrapperBehavior + : KW_WITHOUT KW_ARRAY? + | KW_WITH (KW_CONDITIONAL | KW_UNCONDITIONAL)? KW_ARRAY? + ; + +jsonQueryBehavior + : KW_ERROR + | KW_NULL + | KW_EMPTY KW_ARRAY + | KW_EMPTY KW_OBJECT + ; + +jsonObjectMember + : KW_KEY? expression KW_VALUE jsonValueExpression + | expression ':' jsonValueExpression ; processingMode @@ -536,7 +717,7 @@ booleanValue ; interval - : KW_INTERVAL sign= (PLUS | MINUS)? string from= intervalField (KW_TO to= intervalField)? + : KW_INTERVAL sign=(PLUS | MINUS)? string from=intervalField (KW_TO to=intervalField)? ; intervalField @@ -556,17 +737,17 @@ normalForm ; type - : KW_ROW '(' rowField (',' rowField)* ')' # rowType - | KW_INTERVAL from= intervalField (KW_TO to= intervalField)? # intervalType - | base= KW_TIMESTAMP ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType - | base= KW_TIMESTAMP ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType - | base= KW_TIME ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType - | base= KW_TIME ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType - | KW_DOUBLE KW_PRECISION # doublePrecisionType - | KW_ARRAY '<' type '>' # legacyArrayType - | KW_MAP '<' keyType= type ',' valueType= type '>' # legacyMapType - | type KW_ARRAY ('[' INTEGER_VALUE ']')? # arrayType - | identifier ('(' typeParameter (',' typeParameter)* ')')? # genericType + : KW_ROW '(' rowField (',' rowField)* ')' # rowType + | KW_INTERVAL from=intervalField (KW_TO to=intervalField)? # intervalType + | base=KW_TIMESTAMP ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType + | base=KW_TIMESTAMP ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType + | base=KW_TIME ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType + | base=KW_TIME ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType + | KW_DOUBLE KW_PRECISION # doublePrecisionType + | KW_ARRAY '<' type '>' # legacyArrayType + | KW_MAP '<' keyType=type ',' valueType=type '>' # legacyMapType + | type KW_ARRAY ('[' INTEGER_VALUE ']')? # arrayType + | identifier ('(' typeParameter (',' typeParameter)* ')')? # genericType ; rowField @@ -580,7 +761,7 @@ typeParameter ; whenClause - : KW_WHEN condition= expression KW_THEN result= expression + : KW_WHEN condition=expression KW_THEN result=expression ; filter @@ -588,41 +769,42 @@ filter ; mergeCase - : KW_WHEN KW_MATCHED (KW_AND condition= expression)? KW_THEN KW_UPDATE KW_SET targets+= identifier EQ values+= expression ( - ',' targets+= identifier EQ values+= expression - )* # mergeUpdate - | KW_WHEN KW_MATCHED (KW_AND condition= expression)? KW_THEN KW_DELETE # mergeDelete - | KW_WHEN KW_NOT KW_MATCHED (KW_AND condition= expression)? KW_THEN KW_INSERT ( - '(' targets+= identifier (',' targets+= identifier)* ')' - )? KW_VALUES '(' values+= expression (',' values+= expression)* ')' # mergeInsert + : KW_WHEN KW_MATCHED (KW_AND condition=expression)? KW_THEN KW_UPDATE KW_SET targets+=identifier EQ values+=expression ( + ',' targets+=identifier EQ values+=expression + )* # mergeUpdate + | KW_WHEN KW_MATCHED (KW_AND condition=expression)? KW_THEN KW_DELETE # mergeDelete + | KW_WHEN KW_NOT KW_MATCHED (KW_AND condition=expression)? KW_THEN KW_INSERT ( + '(' targets+=identifier (',' targets+=identifier)* ')' + )? KW_VALUES '(' values+=expression (',' values+=expression)* ')' # mergeInsert ; over - : KW_OVER (windowName= identifier | '(' windowSpecification ')') + : KW_OVER (windowName=identifier | '(' windowSpecification ')') ; windowFrame - : (KW_MEASURES measureDefinition (',' measureDefinition)*)? frameExtent ( - KW_AFTER KW_MATCH skipTo - )? (KW_INITIAL | KW_SEEK)? (KW_PATTERN '(' rowPattern ')')? ( - KW_SUBSET subsetDefinition (',' subsetDefinition)* - )? (KW_DEFINE variableDefinition (',' variableDefinition)*)? + : (KW_MEASURES measureDefinition (',' measureDefinition)*)? frameExtent (KW_AFTER KW_MATCH skipTo)? ( + KW_INITIAL + | KW_SEEK + )? (KW_PATTERN '(' rowPattern ')')? (KW_SUBSET subsetDefinition (',' subsetDefinition)*)? ( + KW_DEFINE variableDefinition (',' variableDefinition)* + )? ; frameExtent - : frameType= KW_RANGE frameStart= frameBound - | frameType= KW_ROWS frameStart= frameBound - | frameType= KW_GROUPS frameStart= frameBound - | frameType= KW_RANGE KW_BETWEEN frameStart= frameBound KW_AND end= frameBound - | frameType= KW_ROWS KW_BETWEEN frameStart= frameBound KW_AND end= frameBound - | frameType= KW_GROUPS KW_BETWEEN frameStart= frameBound KW_AND end= frameBound + : frameType=KW_RANGE start=frameBound + | frameType=KW_ROWS start=frameBound + | frameType=KW_GROUPS start=frameBound + | frameType=KW_RANGE KW_BETWEEN start=frameBound KW_AND end=frameBound + | frameType=KW_ROWS KW_BETWEEN start=frameBound KW_AND end=frameBound + | frameType=KW_GROUPS KW_BETWEEN start=frameBound KW_AND end=frameBound ; frameBound - : KW_UNBOUNDED boundType= KW_PRECEDING # unboundedFrame - | KW_UNBOUNDED boundType= KW_FOLLOWING # unboundedFrame - | KW_CURRENT KW_ROW # currentRowBound - | expression boundType= (KW_PRECEDING | KW_FOLLOWING) # boundedFrame + : KW_UNBOUNDED boundType=KW_PRECEDING # unboundedFrame + | KW_UNBOUNDED boundType=KW_FOLLOWING # unboundedFrame + | KW_CURRENT KW_ROW # currentRowBound + | expression boundType=(KW_PRECEDING | KW_FOLLOWING) # boundedFrame ; rowPattern @@ -642,11 +824,11 @@ patternPrimary ; patternQuantifier - : ASTERISK (reluctant= QUESTION_MARK)? # zeroOrMoreQuantifier - | PLUS (reluctant= QUESTION_MARK)? # oneOrMoreQuantifier - | QUESTION_MARK (reluctant= QUESTION_MARK)? # zeroOrOneQuantifier - | '{' exactly= INTEGER_VALUE '}' (reluctant= QUESTION_MARK)? # rangeQuantifier - | '{' (atLeast= INTEGER_VALUE)? ',' (atMost= INTEGER_VALUE)? '}' (reluctant= QUESTION_MARK)? # rangeQuantifier + : ASTERISK (reluctant=QUESTION_MARK)? # zeroOrMoreQuantifier + | PLUS (reluctant=QUESTION_MARK)? # oneOrMoreQuantifier + | QUESTION_MARK (reluctant=QUESTION_MARK)? # zeroOrOneQuantifier + | '{' exactly=INTEGER_VALUE '}' (reluctant=QUESTION_MARK)? # rangeQuantifier + | '{' (atLeast=INTEGER_VALUE)? ',' (atMost=INTEGER_VALUE)? '}' (reluctant=QUESTION_MARK)? # rangeQuantifier ; updateAssignment @@ -654,13 +836,13 @@ updateAssignment ; explainOption - : KW_FORMAT value= (KW_TEXT | KW_GRAPHVIZ | KW_JSON) # explainFormat - | KW_TYPE value= (KW_LOGICAL | KW_DISTRIBUTED | KW_VALIDATE | KW_IO) # explainType + : KW_FORMAT value=(KW_TEXT | KW_GRAPHVIZ | KW_JSON) # explainFormat + | KW_TYPE value=(KW_LOGICAL | KW_DISTRIBUTED | KW_VALIDATE | KW_IO) # explainType ; transactionMode - : KW_ISOLATION KW_LEVEL levelOfIsolation # isolationLevel - | KW_READ accessMode= (KW_ONLY | KW_WRITE) # transactionAccessMode + : KW_ISOLATION KW_LEVEL levelOfIsolation # isolationLevel + | KW_READ accessMode=(KW_ONLY | KW_WRITE) # transactionAccessMode ; levelOfIsolation @@ -684,60 +866,128 @@ pathSpecification : pathElement (',' pathElement)* ; +functionSpecification + : KW_FUNCTION functionDeclaration returnsClause routineCharacteristic* controlStatement + ; + +functionDeclaration + : functionNameCreate '(' (parameterDeclaration (',' parameterDeclaration)*)? ')' + ; + +functionSignature + : functionName '(' (parameterDeclaration (',' parameterDeclaration)*)? ')' + ; + +parameterDeclaration + : identifier? type + ; + +returnsClause + : KW_RETURNS type + ; + +routineCharacteristic + : KW_LANGUAGE identifier # languageCharacteristic + | KW_NOT? KW_DETERMINISTIC # deterministicCharacteristic + | KW_RETURNS KW_NULL KW_ON KW_NULL KW_INPUT # returnsNullOnNullInputCharacteristic + | KW_CALLED KW_ON KW_NULL KW_INPUT # calledOnNullInputCharacteristic + | KW_SECURITY (KW_DEFINER | KW_INVOKER) # securityCharacteristic + | KW_COMMENT string # commentCharacteristic + ; + +controlStatement + : KW_RETURN valueExpression # returnStatement + | KW_SET identifier EQ expression # assignmentStatement + | KW_CASE expression caseStatementWhenClause+ elseClause? KW_END KW_CASE # simpleCaseStatement + | KW_CASE caseStatementWhenClause+ elseClause? KW_END KW_CASE # searchedCaseStatement + | KW_IF expression KW_THEN sqlStatementList elseIfClause* elseClause? KW_END KW_IF # ifStatement + | KW_ITERATE identifier # iterateStatement + | KW_LEAVE identifier # leaveStatement + | KW_BEGIN (variableDeclaration SEMICOLON)* sqlStatementList? KW_END # compoundStatement + | (label=identifier ':')? KW_LOOP sqlStatementList KW_END KW_LOOP # loopStatement + | (label=identifier ':')? KW_WHILE expression KW_DO sqlStatementList KW_END KW_WHILE # whileStatement + | (label=identifier ':')? KW_REPEAT sqlStatementList KW_UNTIL expression KW_END KW_REPEAT # repeatStatement + ; + +caseStatementWhenClause + : KW_WHEN expression KW_THEN sqlStatementList + ; + +elseIfClause + : KW_ELSEIF expression KW_THEN sqlStatementList + ; + +elseClause + : KW_ELSE sqlStatementList + ; + +variableDeclaration + : KW_DECLARE identifier (',' identifier)* type (KW_DEFAULT valueExpression)? + ; + +sqlStatementList + : (controlStatement SEMICOLON)+ + ; + privilege - : KW_SELECT + : KW_CREATE + | KW_SELECT | KW_DELETE | KW_INSERT | KW_UPDATE + | identifier ; -tableOrViewName - : tableName - | viewName - ; - -tableName - : tablePath +entityKind + : KW_TABLE + | KW_SCHEMA + | identifier ; -tableNameCreate - : tablePath +grantObject + : entityKind? qualifiedName ; -viewName - : viewPath +tableOrViewName + : tableRef + | viewRef ; -viewNameCreate - : viewPath +tableRef + : table= identifier + | schema= identifier '.' table= identifier + | catalog= identifier '.' schema= identifier '.' table= identifier ; -tablePath +tableNameCreate : table= identifier | schema= identifier '.' table= identifier | catalog= identifier '.' schema= identifier '.' table= identifier ; -viewPath +viewRef : view= identifier | schema= identifier '.' view= identifier | catalog= identifier '.' schema= identifier '.' view= identifier ; -schemaName - : schemaPath +viewNameCreate + : view= identifier + | schema= identifier '.' view= identifier + | catalog= identifier '.' schema= identifier '.' view= identifier ; -schemaNameCreate - : schemaPath +schemaRef + : schema= identifier + | catalog= identifier '.' schema= identifier ; -schemaPath +schemaNameCreate : schema= identifier | catalog= identifier '.' schema= identifier ; -catalogName +catalogRef : catalog= identifier ; @@ -749,7 +999,11 @@ functionName : qualifiedName ; -columnName +functionNameCreate + : qualifiedName + ; + +columnRef : qualifiedName | {this.shouldMatchEmpty()}? ; @@ -762,6 +1016,15 @@ qualifiedName : identifier ('.' identifier)* ; +queryPeriod + : KW_FOR rangeType KW_AS KW_OF end=valueExpression + ; + +rangeType + : KW_TIMESTAMP + | KW_VERSION + ; + grantor : principal # specifiedPrincipal | KW_CURRENT_USER # currentUserGrantor @@ -778,6 +1041,16 @@ roles : identifier (',' identifier)* ; +privilegeOrRole + : KW_CREATE + | KW_SELECT + | KW_DELETE + | KW_INSERT + | KW_UPDATE + | KW_EXECUTE + | identifier + ; + identifier : IDENTIFIER # unquotedIdentifier | QUOTED_IDENTIFIER # quotedIdentifier @@ -792,8 +1065,15 @@ number | MINUS? INTEGER_VALUE # integerLiteral ; +authorizationUser + : identifier # identifierUser + | string # stringUser + ; + nonReserved - : KW_ADD + // IMPORTANT: this rule must only contain tokens. Nested rules are not supported. See SqlParser.exitNonReserved + : KW_ABSENT + | KW_ADD | KW_ADMIN | KW_AFTER | KW_ALL @@ -803,26 +1083,41 @@ nonReserved | KW_ASC | KW_AT | KW_AUTHORIZATION + | KW_BEGIN | KW_BERNOULLI + | KW_BOTH | KW_CALL + | KW_CALLED | KW_CASCADE + | KW_CATALOG | KW_CATALOGS | KW_COLUMN | KW_COLUMNS | KW_COMMENT | KW_COMMIT | KW_COMMITTED + | KW_CONDITIONAL + | KW_COPARTITION + | KW_COUNT | KW_CURRENT | KW_DATA | KW_DATE | KW_DAY + | KW_DECLARE | KW_DEFAULT | KW_DEFINE | KW_DEFINER + | KW_DENY | KW_DESC + | KW_DESCRIPTOR + | KW_DETERMINISTIC | KW_DISTRIBUTED + | KW_DO | KW_DOUBLE + | KW_ELSEIF | KW_EMPTY + | KW_ENCODING + | KW_ERROR | KW_EXCLUDING | KW_EXPLAIN | KW_FETCH @@ -831,30 +1126,40 @@ nonReserved | KW_FIRST | KW_FOLLOWING | KW_FORMAT + | KW_FUNCTION | KW_FUNCTIONS + | KW_GRACE | KW_GRANT | KW_GRANTED | KW_GRANTS - | KW_DENY | KW_GRAPHVIZ | KW_GROUPS | KW_HOUR | KW_IF | KW_IGNORE + | KW_IMMEDIATE | KW_INCLUDING | KW_INITIAL | KW_INPUT | KW_INTERVAL | KW_INVOKER | KW_IO + | KW_ITERATE | KW_ISOLATION | KW_JSON + | KW_KEEP + | KW_KEY + | KW_KEYS + | KW_LANGUAGE | KW_LAST | KW_LATERAL + | KW_LEADING + | KW_LEAVE | KW_LEVEL | KW_LIMIT | KW_LOCAL | KW_LOGICAL + | KW_LOOP | KW_MAP | KW_MATCH | KW_MATCHED @@ -865,6 +1170,7 @@ nonReserved | KW_MERGE | KW_MINUTE | KW_MONTH + | KW_NESTED | KW_NEXT | KW_NFC | KW_NFD @@ -874,6 +1180,8 @@ nonReserved | KW_NONE | KW_NULLIF | KW_NULLS + | KW_OBJECT + | KW_OF | KW_OFFSET | KW_OMIT | KW_ONE @@ -882,27 +1190,37 @@ nonReserved | KW_ORDINALITY | KW_OUTPUT | KW_OVER + | KW_OVERFLOW | KW_PARTITION | KW_PARTITIONS + | KW_PASSING | KW_PAST | KW_PATH | KW_PATTERN | KW_PER + | KW_PERIOD | KW_PERMUTE + | KW_PLAN | KW_POSITION | KW_PRECEDING | KW_PRECISION | KW_PRIVILEGES | KW_PROPERTIES + | KW_PRUNE + | KW_QUOTES | KW_RANGE | KW_READ | KW_REFRESH | KW_RENAME + | KW_REPEAT | KW_REPEATABLE | KW_REPLACE | KW_RESET | KW_RESPECT | KW_RESTRICT + | KW_RETURN + | KW_RETURNING + | KW_RETURNS | KW_REVOKE | KW_ROLE | KW_ROLES @@ -910,6 +1228,7 @@ nonReserved | KW_ROW | KW_ROWS | KW_RUNNING + | KW_SCALAR | KW_SCHEMA | KW_SCHEMAS | KW_SECOND @@ -929,26 +1248,40 @@ nonReserved | KW_TABLES | KW_TABLESAMPLE | KW_TEXT + | KW_TEXT_STRING | KW_TIES | KW_TIME | KW_TIMESTAMP | KW_TO + | KW_TRAILING | KW_TRANSACTION | KW_TRUNCATE | KW_TRY_CAST | KW_TYPE | KW_UNBOUNDED | KW_UNCOMMITTED + | KW_UNCONDITIONAL + | KW_UNIQUE + | KW_UNKNOWN | KW_UNMATCHED + | KW_UNTIL | KW_UPDATE | KW_USE | KW_USER + | KW_UTF16 + | KW_UTF32 + | KW_UTF8 | KW_VALIDATE + | KW_VALUE | KW_VERBOSE + | KW_VERSION | KW_VIEW + | KW_WHILE | KW_WINDOW + | KW_WITHIN | KW_WITHOUT | KW_WORK + | KW_WRAPPER | KW_WRITE | KW_YEAR | KW_ZONE @@ -965,6 +1298,7 @@ nonReserved // $antlr-format singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true // $antlr-format spaceBeforeAssignmentOperators false, groupedAlignments true +KW_ABSENT : 'ABSENT'; KW_ADD : 'ADD'; KW_ADMIN : 'ADMIN'; KW_AFTER : 'AFTER'; @@ -978,20 +1312,27 @@ KW_AS : 'AS'; KW_ASC : 'ASC'; KW_AT : 'AT'; KW_AUTHORIZATION : 'AUTHORIZATION'; +KW_BEGIN : 'BEGIN'; KW_BERNOULLI : 'BERNOULLI'; KW_BETWEEN : 'BETWEEN'; +KW_BOTH : 'BOTH'; KW_BY : 'BY'; KW_CALL : 'CALL'; +KW_CALLED : 'CALLED'; KW_CASCADE : 'CASCADE'; KW_CASE : 'CASE'; KW_CAST : 'CAST'; +KW_CATALOG : 'CATALOG'; KW_CATALOGS : 'CATALOGS'; KW_COLUMN : 'COLUMN'; KW_COLUMNS : 'COLUMNS'; KW_COMMENT : 'COMMENT'; KW_COMMIT : 'COMMIT'; KW_COMMITTED : 'COMMITTED'; +KW_CONDITIONAL : 'CONDITIONAL'; KW_CONSTRAINT : 'CONSTRAINT'; +KW_COUNT : 'COUNT'; +KW_COPARTITION : 'COPARTITION'; KW_CREATE : 'CREATE'; KW_CROSS : 'CROSS'; KW_CUBE : 'CUBE'; @@ -1007,20 +1348,28 @@ KW_CURRENT_USER : 'CURRENT_USER'; KW_DATA : 'DATA'; KW_DATE : 'DATE'; KW_DAY : 'DAY'; -KW_DEFAULT : 'DEFAULT'; KW_DEALLOCATE : 'DEALLOCATE'; +KW_DECLARE : 'DECLARE'; +KW_DEFAULT : 'DEFAULT'; +KW_DEFINE : 'DEFINE'; KW_DEFINER : 'DEFINER'; KW_DELETE : 'DELETE'; +KW_DENY : 'DENY'; KW_DESC : 'DESC'; KW_DESCRIBE : 'DESCRIBE'; -KW_DEFINE : 'DEFINE'; +KW_DESCRIPTOR : 'DESCRIPTOR'; +KW_DETERMINISTIC : 'DETERMINISTIC'; KW_DISTINCT : 'DISTINCT'; KW_DISTRIBUTED : 'DISTRIBUTED'; +KW_DO : 'DO'; KW_DOUBLE : 'DOUBLE'; KW_DROP : 'DROP'; KW_ELSE : 'ELSE'; KW_EMPTY : 'EMPTY'; +KW_ELSEIF : 'ELSEIF'; +KW_ENCODING : 'ENCODING'; KW_END : 'END'; +KW_ERROR : 'ERROR'; KW_ESCAPE : 'ESCAPE'; KW_EXCEPT : 'EXCEPT'; KW_EXCLUDING : 'EXCLUDING'; @@ -1038,11 +1387,12 @@ KW_FOR : 'FOR'; KW_FORMAT : 'FORMAT'; KW_FROM : 'FROM'; KW_FULL : 'FULL'; +KW_FUNCTION : 'FUNCTION'; KW_FUNCTIONS : 'FUNCTIONS'; +KW_GRACE : 'GRACE'; KW_GRANT : 'GRANT'; KW_GRANTED : 'GRANTED'; KW_GRANTS : 'GRANTS'; -KW_DENY : 'DENY'; KW_GRAPHVIZ : 'GRAPHVIZ'; KW_GROUP : 'GROUP'; KW_GROUPING : 'GROUPING'; @@ -1051,6 +1401,7 @@ KW_HAVING : 'HAVING'; KW_HOUR : 'HOUR'; KW_IF : 'IF'; KW_IGNORE : 'IGNORE'; +KW_IMMEDIATE : 'IMMEDIATE'; KW_IN : 'IN'; KW_INCLUDING : 'INCLUDING'; KW_INITIAL : 'INITIAL'; @@ -1064,18 +1415,33 @@ KW_INVOKER : 'INVOKER'; KW_IO : 'IO'; KW_IS : 'IS'; KW_ISOLATION : 'ISOLATION'; +KW_ITERATE : 'ITERATE'; KW_JOIN : 'JOIN'; KW_JSON : 'JSON'; +KW_JSON_ARRAY : 'JSON_ARRAY'; +KW_JSON_EXISTS : 'JSON_EXISTS'; +KW_JSON_OBJECT : 'JSON_OBJECT'; +KW_JSON_QUERY : 'JSON_QUERY'; +KW_JSON_TABLE : 'JSON_TABLE'; +KW_JSON_VALUE : 'JSON_VALUE'; +KW_KEEP : 'KEEP'; +KW_KEY : 'KEY'; +KW_KEYS : 'KEYS'; +KW_LANGUAGE : 'LANGUAGE'; KW_LAST : 'LAST'; KW_LATERAL : 'LATERAL'; +KW_LEADING : 'LEADING'; +KW_LEAVE : 'LEAVE'; KW_LEFT : 'LEFT'; KW_LEVEL : 'LEVEL'; KW_LIKE : 'LIKE'; KW_LIMIT : 'LIMIT'; +KW_LISTAGG : 'LISTAGG'; KW_LOCAL : 'LOCAL'; KW_LOCALTIME : 'LOCALTIME'; KW_LOCALTIMESTAMP : 'LOCALTIMESTAMP'; KW_LOGICAL : 'LOGICAL'; +KW_LOOP : 'LOOP'; KW_MAP : 'MAP'; KW_MATCH : 'MATCH'; KW_MATCHED : 'MATCHED'; @@ -1087,6 +1453,7 @@ KW_MERGE : 'MERGE'; KW_MINUTE : 'MINUTE'; KW_MONTH : 'MONTH'; KW_NATURAL : 'NATURAL'; +KW_NESTED : 'NESTED'; KW_NEXT : 'NEXT'; KW_NFC : 'NFC'; KW_NFD : 'NFD'; @@ -1099,6 +1466,8 @@ KW_NOT : 'NOT'; KW_NULL : 'NULL'; KW_NULLIF : 'NULLIF'; KW_NULLS : 'NULLS'; +KW_OBJECT : 'OBJECT'; +KW_OF : 'OF'; KW_OFFSET : 'OFFSET'; KW_OMIT : 'OMIT'; KW_ON : 'ON'; @@ -1111,29 +1480,39 @@ KW_ORDINALITY : 'ORDINALITY'; KW_OUTER : 'OUTER'; KW_OUTPUT : 'OUTPUT'; KW_OVER : 'OVER'; +KW_OVERFLOW : 'OVERFLOW'; KW_PARTITION : 'PARTITION'; KW_PARTITIONS : 'PARTITIONS'; +KW_PASSING : 'PASSING'; KW_PAST : 'PAST'; KW_PATH : 'PATH'; KW_PATTERN : 'PATTERN'; KW_PER : 'PER'; +KW_PERIOD : 'PERIOD'; KW_PERMUTE : 'PERMUTE'; +KW_PLAN : 'PLAN'; KW_POSITION : 'POSITION'; KW_PRECEDING : 'PRECEDING'; KW_PRECISION : 'PRECISION'; KW_PREPARE : 'PREPARE'; KW_PRIVILEGES : 'PRIVILEGES'; KW_PROPERTIES : 'PROPERTIES'; +KW_PRUNE : 'PRUNE'; +KW_QUOTES : 'QUOTES'; KW_RANGE : 'RANGE'; KW_READ : 'READ'; KW_RECURSIVE : 'RECURSIVE'; KW_REFRESH : 'REFRESH'; KW_RENAME : 'RENAME'; +KW_REPEAT : 'REPEAT'; KW_REPEATABLE : 'REPEATABLE'; KW_REPLACE : 'REPLACE'; KW_RESET : 'RESET'; KW_RESPECT : 'RESPECT'; KW_RESTRICT : 'RESTRICT'; +KW_RETURN : 'RETURN'; +KW_RETURNING : 'RETURNING'; +KW_RETURNS : 'RETURNS'; KW_REVOKE : 'REVOKE'; KW_RIGHT : 'RIGHT'; KW_ROLE : 'ROLE'; @@ -1143,6 +1522,7 @@ KW_ROLLUP : 'ROLLUP'; KW_ROW : 'ROW'; KW_ROWS : 'ROWS'; KW_RUNNING : 'RUNNING'; +KW_SCALAR : 'SCALAR'; KW_SCHEMA : 'SCHEMA'; KW_SCHEMAS : 'SCHEMAS'; KW_SECOND : 'SECOND'; @@ -1164,36 +1544,51 @@ KW_TABLE : 'TABLE'; KW_TABLES : 'TABLES'; KW_TABLESAMPLE : 'TABLESAMPLE'; KW_TEXT : 'TEXT'; +KW_TEXT_STRING : 'STRING'; KW_THEN : 'THEN'; KW_TIES : 'TIES'; KW_TIME : 'TIME'; KW_TIMESTAMP : 'TIMESTAMP'; KW_TO : 'TO'; +KW_TRAILING : 'TRAILING'; KW_TRANSACTION : 'TRANSACTION'; -KW_TRUNCATE : 'TRUNCATE'; +KW_TRIM : 'TRIM'; KW_TRUE : 'TRUE'; +KW_TRUNCATE : 'TRUNCATE'; KW_TRY_CAST : 'TRY_CAST'; KW_TYPE : 'TYPE'; KW_UESCAPE : 'UESCAPE'; KW_UNBOUNDED : 'UNBOUNDED'; KW_UNCOMMITTED : 'UNCOMMITTED'; +KW_UNCONDITIONAL : 'UNCONDITIONAL'; KW_UNION : 'UNION'; +KW_UNIQUE : 'UNIQUE'; +KW_UNKNOWN : 'UNKNOWN'; KW_UNMATCHED : 'UNMATCHED'; KW_UNNEST : 'UNNEST'; +KW_UNTIL : 'UNTIL'; KW_UPDATE : 'UPDATE'; KW_USE : 'USE'; KW_USER : 'USER'; KW_USING : 'USING'; +KW_UTF16 : 'UTF16'; +KW_UTF32 : 'UTF32'; +KW_UTF8 : 'UTF8'; KW_VALIDATE : 'VALIDATE'; +KW_VALUE : 'VALUE'; KW_VALUES : 'VALUES'; KW_VERBOSE : 'VERBOSE'; +KW_VERSION : 'VERSION'; KW_VIEW : 'VIEW'; KW_WHEN : 'WHEN'; KW_WHERE : 'WHERE'; +KW_WHILE : 'WHILE'; KW_WINDOW : 'WINDOW'; KW_WITH : 'WITH'; +KW_WITHIN : 'WITHIN'; KW_WITHOUT : 'WITHOUT'; KW_WORK : 'WORK'; +KW_WRAPPER : 'WRAPPER'; KW_WRITE : 'WRITE'; KW_YEAR : 'YEAR'; KW_ZONE : 'ZONE'; @@ -1212,19 +1607,20 @@ SLASH : '/'; PERCENT : '%'; CONCAT : '||'; QUESTION_MARK : '?'; +SEMICOLON : ';'; STRING: '\'' ( ~'\'' | '\'\'')* '\''; UNICODE_STRING: 'U&\'' ( ~'\'' | '\'\'')* '\''; -// Note: we allow any character inside the binary literal and validate its a correct literal when -// the AST is being constructed. This allows us to provide more meaningful error messages to the -// user +// Note: we allow any character inside the binary literal and validate +// its a correct literal when the AST is being constructed. This +// allows us to provide more meaningful error messages to the user BINARY_LITERAL: 'X\'' (~'\'')* '\''; -INTEGER_VALUE: DIGIT+; +INTEGER_VALUE: DECIMAL_INTEGER | HEXADECIMAL_INTEGER | OCTAL_INTEGER | BINARY_INTEGER; -DECIMAL_VALUE: DIGIT+ '.' DIGIT* | '.' DIGIT+; +DECIMAL_VALUE: DECIMAL_INTEGER '.' DECIMAL_INTEGER? | '.' DECIMAL_INTEGER; DOUBLE_VALUE: DIGIT+ ('.' DIGIT*)? EXPONENT | '.' DIGIT+ EXPONENT; @@ -1234,8 +1630,15 @@ DIGIT_IDENTIFIER: DIGIT (LETTER | DIGIT | '_')+; QUOTED_IDENTIFIER: '"' ( ~'"' | '""')* '"'; -BACKQUOTED_IDENTIFIER : '`' ( ~'`' | '``')* '`'; -SEMICOLON : ';'; +BACKQUOTED_IDENTIFIER: '`' ( ~'`' | '``')* '`'; + +fragment DECIMAL_INTEGER: DIGIT ('_'? DIGIT)*; + +fragment HEXADECIMAL_INTEGER: '0X' ('_'? (DIGIT | [A-F]))+; + +fragment OCTAL_INTEGER: '0O' ('_'? [0-7])+; + +fragment BINARY_INTEGER: '0B' ('_'? [01])+; fragment EXPONENT: 'E' [+-]? DIGIT+; @@ -1249,6 +1652,7 @@ BRACKETED_COMMENT: '/*' .*? '*/' -> channel(HIDDEN); WS: [ \r\n\t]+ -> channel(HIDDEN); -// Catch-all for anything we can't recognize. We use this to be able to ignore and recover all the -// text when splitting statements with DelimiterLexer +// Catch-all for anything we can't recognize. +// We use this to be able to ignore and recover all the text +// when splitting statements with DelimiterLexer UNRECOGNIZED: .; \ No newline at end of file diff --git a/src/lib/trino/TrinoSql.interp b/src/lib/trino/TrinoSql.interp index 2b47bb1e..4b2b7d8d 100644 --- a/src/lib/trino/TrinoSql.interp +++ b/src/lib/trino/TrinoSql.interp @@ -5,9 +5,11 @@ null ',' '.' 'SKIP' +'=>' '->' '[' ']' +':' '|' '^' '$' @@ -15,7 +17,7 @@ null '-}' '{' '}' -'=>' +'ABSENT' 'ADD' 'ADMIN' 'AFTER' @@ -29,20 +31,27 @@ null 'ASC' 'AT' 'AUTHORIZATION' +'BEGIN' 'BERNOULLI' 'BETWEEN' +'BOTH' 'BY' 'CALL' +'CALLED' 'CASCADE' 'CASE' 'CAST' +'CATALOG' 'CATALOGS' 'COLUMN' 'COLUMNS' 'COMMENT' 'COMMIT' 'COMMITTED' +'CONDITIONAL' 'CONSTRAINT' +'COUNT' +'COPARTITION' 'CREATE' 'CROSS' 'CUBE' @@ -58,20 +67,28 @@ null 'DATA' 'DATE' 'DAY' -'DEFAULT' 'DEALLOCATE' +'DECLARE' +'DEFAULT' +'DEFINE' 'DEFINER' 'DELETE' +'DENY' 'DESC' 'DESCRIBE' -'DEFINE' +'DESCRIPTOR' +'DETERMINISTIC' 'DISTINCT' 'DISTRIBUTED' +'DO' 'DOUBLE' 'DROP' 'ELSE' 'EMPTY' +'ELSEIF' +'ENCODING' 'END' +'ERROR' 'ESCAPE' 'EXCEPT' 'EXCLUDING' @@ -89,11 +106,12 @@ null 'FORMAT' 'FROM' 'FULL' +'FUNCTION' 'FUNCTIONS' +'GRACE' 'GRANT' 'GRANTED' 'GRANTS' -'DENY' 'GRAPHVIZ' 'GROUP' 'GROUPING' @@ -102,6 +120,7 @@ null 'HOUR' 'IF' 'IGNORE' +'IMMEDIATE' 'IN' 'INCLUDING' 'INITIAL' @@ -115,18 +134,33 @@ null 'IO' 'IS' 'ISOLATION' +'ITERATE' 'JOIN' 'JSON' +'JSON_ARRAY' +'JSON_EXISTS' +'JSON_OBJECT' +'JSON_QUERY' +'JSON_TABLE' +'JSON_VALUE' +'KEEP' +'KEY' +'KEYS' +'LANGUAGE' 'LAST' 'LATERAL' +'LEADING' +'LEAVE' 'LEFT' 'LEVEL' 'LIKE' 'LIMIT' +'LISTAGG' 'LOCAL' 'LOCALTIME' 'LOCALTIMESTAMP' 'LOGICAL' +'LOOP' 'MAP' 'MATCH' 'MATCHED' @@ -138,6 +172,7 @@ null 'MINUTE' 'MONTH' 'NATURAL' +'NESTED' 'NEXT' 'NFC' 'NFD' @@ -150,6 +185,8 @@ null 'NULL' 'NULLIF' 'NULLS' +'OBJECT' +'OF' 'OFFSET' 'OMIT' 'ON' @@ -162,29 +199,39 @@ null 'OUTER' 'OUTPUT' 'OVER' +'OVERFLOW' 'PARTITION' 'PARTITIONS' +'PASSING' 'PAST' 'PATH' 'PATTERN' 'PER' +'PERIOD' 'PERMUTE' +'PLAN' 'POSITION' 'PRECEDING' 'PRECISION' 'PREPARE' 'PRIVILEGES' 'PROPERTIES' +'PRUNE' +'QUOTES' 'RANGE' 'READ' 'RECURSIVE' 'REFRESH' 'RENAME' +'REPEAT' 'REPEATABLE' 'REPLACE' 'RESET' 'RESPECT' 'RESTRICT' +'RETURN' +'RETURNING' +'RETURNS' 'REVOKE' 'RIGHT' 'ROLE' @@ -194,6 +241,7 @@ null 'ROW' 'ROWS' 'RUNNING' +'SCALAR' 'SCHEMA' 'SCHEMAS' 'SECOND' @@ -215,36 +263,51 @@ null 'TABLES' 'TABLESAMPLE' 'TEXT' +'STRING' 'THEN' 'TIES' 'TIME' 'TIMESTAMP' 'TO' +'TRAILING' 'TRANSACTION' -'TRUNCATE' +'TRIM' 'TRUE' +'TRUNCATE' 'TRY_CAST' 'TYPE' 'UESCAPE' 'UNBOUNDED' 'UNCOMMITTED' +'UNCONDITIONAL' 'UNION' +'UNIQUE' +'UNKNOWN' 'UNMATCHED' 'UNNEST' +'UNTIL' 'UPDATE' 'USE' 'USER' 'USING' +'UTF16' +'UTF32' +'UTF8' 'VALIDATE' +'VALUE' 'VALUES' 'VERBOSE' +'VERSION' 'VIEW' 'WHEN' 'WHERE' +'WHILE' 'WINDOW' 'WITH' +'WITHIN' 'WITHOUT' 'WORK' +'WRAPPER' 'WRITE' 'YEAR' 'ZONE' @@ -261,6 +324,7 @@ null '%' '||' '?' +';' null null null @@ -271,7 +335,6 @@ null null null null -';' null null null @@ -296,6 +359,8 @@ null null null null +null +KW_ABSENT KW_ADD KW_ADMIN KW_AFTER @@ -309,20 +374,27 @@ KW_AS KW_ASC KW_AT KW_AUTHORIZATION +KW_BEGIN KW_BERNOULLI KW_BETWEEN +KW_BOTH KW_BY KW_CALL +KW_CALLED KW_CASCADE KW_CASE KW_CAST +KW_CATALOG KW_CATALOGS KW_COLUMN KW_COLUMNS KW_COMMENT KW_COMMIT KW_COMMITTED +KW_CONDITIONAL KW_CONSTRAINT +KW_COUNT +KW_COPARTITION KW_CREATE KW_CROSS KW_CUBE @@ -338,20 +410,28 @@ KW_CURRENT_USER KW_DATA KW_DATE KW_DAY -KW_DEFAULT KW_DEALLOCATE +KW_DECLARE +KW_DEFAULT +KW_DEFINE KW_DEFINER KW_DELETE +KW_DENY KW_DESC KW_DESCRIBE -KW_DEFINE +KW_DESCRIPTOR +KW_DETERMINISTIC KW_DISTINCT KW_DISTRIBUTED +KW_DO KW_DOUBLE KW_DROP KW_ELSE KW_EMPTY +KW_ELSEIF +KW_ENCODING KW_END +KW_ERROR KW_ESCAPE KW_EXCEPT KW_EXCLUDING @@ -369,11 +449,12 @@ KW_FOR KW_FORMAT KW_FROM KW_FULL +KW_FUNCTION KW_FUNCTIONS +KW_GRACE KW_GRANT KW_GRANTED KW_GRANTS -KW_DENY KW_GRAPHVIZ KW_GROUP KW_GROUPING @@ -382,6 +463,7 @@ KW_HAVING KW_HOUR KW_IF KW_IGNORE +KW_IMMEDIATE KW_IN KW_INCLUDING KW_INITIAL @@ -395,18 +477,33 @@ KW_INVOKER KW_IO KW_IS KW_ISOLATION +KW_ITERATE KW_JOIN KW_JSON +KW_JSON_ARRAY +KW_JSON_EXISTS +KW_JSON_OBJECT +KW_JSON_QUERY +KW_JSON_TABLE +KW_JSON_VALUE +KW_KEEP +KW_KEY +KW_KEYS +KW_LANGUAGE KW_LAST KW_LATERAL +KW_LEADING +KW_LEAVE KW_LEFT KW_LEVEL KW_LIKE KW_LIMIT +KW_LISTAGG KW_LOCAL KW_LOCALTIME KW_LOCALTIMESTAMP KW_LOGICAL +KW_LOOP KW_MAP KW_MATCH KW_MATCHED @@ -418,6 +515,7 @@ KW_MERGE KW_MINUTE KW_MONTH KW_NATURAL +KW_NESTED KW_NEXT KW_NFC KW_NFD @@ -430,6 +528,8 @@ KW_NOT KW_NULL KW_NULLIF KW_NULLS +KW_OBJECT +KW_OF KW_OFFSET KW_OMIT KW_ON @@ -442,29 +542,39 @@ KW_ORDINALITY KW_OUTER KW_OUTPUT KW_OVER +KW_OVERFLOW KW_PARTITION KW_PARTITIONS +KW_PASSING KW_PAST KW_PATH KW_PATTERN KW_PER +KW_PERIOD KW_PERMUTE +KW_PLAN KW_POSITION KW_PRECEDING KW_PRECISION KW_PREPARE KW_PRIVILEGES KW_PROPERTIES +KW_PRUNE +KW_QUOTES KW_RANGE KW_READ KW_RECURSIVE KW_REFRESH KW_RENAME +KW_REPEAT KW_REPEATABLE KW_REPLACE KW_RESET KW_RESPECT KW_RESTRICT +KW_RETURN +KW_RETURNING +KW_RETURNS KW_REVOKE KW_RIGHT KW_ROLE @@ -474,6 +584,7 @@ KW_ROLLUP KW_ROW KW_ROWS KW_RUNNING +KW_SCALAR KW_SCHEMA KW_SCHEMAS KW_SECOND @@ -495,36 +606,51 @@ KW_TABLE KW_TABLES KW_TABLESAMPLE KW_TEXT +KW_TEXT_STRING KW_THEN KW_TIES KW_TIME KW_TIMESTAMP KW_TO +KW_TRAILING KW_TRANSACTION -KW_TRUNCATE +KW_TRIM KW_TRUE +KW_TRUNCATE KW_TRY_CAST KW_TYPE KW_UESCAPE KW_UNBOUNDED KW_UNCOMMITTED +KW_UNCONDITIONAL KW_UNION +KW_UNIQUE +KW_UNKNOWN KW_UNMATCHED KW_UNNEST +KW_UNTIL KW_UPDATE KW_USE KW_USER KW_USING +KW_UTF16 +KW_UTF32 +KW_UTF8 KW_VALIDATE +KW_VALUE KW_VALUES KW_VERBOSE +KW_VERSION KW_VIEW KW_WHEN KW_WHERE +KW_WHILE KW_WINDOW KW_WITH +KW_WITHIN KW_WITHOUT KW_WORK +KW_WRAPPER KW_WRITE KW_YEAR KW_ZONE @@ -541,6 +667,7 @@ SLASH PERCENT CONCAT QUESTION_MARK +SEMICOLON STRING UNICODE_STRING BINARY_LITERAL @@ -551,7 +678,6 @@ IDENTIFIER DIGIT_IDENTIFIER QUOTED_IDENTIFIER BACKQUOTED_IDENTIFIER -SEMICOLON SIMPLE_COMMENT BRACKETED_COMMENT WS @@ -561,13 +687,15 @@ DELIMITER rule names: program statements -standaloneClause singleStatement standaloneExpression standalonePathSpecification standaloneType standaloneRowPattern +standaloneFunctionSpecification statement +rootQuery +withFunction query with tableElement @@ -598,6 +726,9 @@ joinType joinCriteria sampledRelation sampleType +trimsSpecification +listAggOverflowBehavior +listaggCountIndication patternRecognition measureDefinition rowsPerMatch @@ -610,11 +741,32 @@ columnListCreate columnList columnAliases relationPrimary +jsonTableColumn +jsonTableSpecificPlan +jsonTablePathName +planPrimary +jsonTableDefaultPlan +tableFunctionCall +tableFunctionArgument +tableArgument +tableArgumentRelation +descriptorArgument +descriptorField +copartitionTables expression booleanExpression predicate valueExpression primaryExpression +jsonPathInvocation +jsonValueExpression +jsonRepresentation +jsonArgument +jsonExistsErrorBehavior +jsonValueBehavior +jsonQueryWrapperBehavior +jsonQueryBehavior +jsonObjectMember processingMode nullTreatment string @@ -645,30 +797,46 @@ levelOfIsolation callArgument pathElement pathSpecification +functionSpecification +functionDeclaration +functionSignature +parameterDeclaration +returnsClause +routineCharacteristic +controlStatement +caseStatementWhenClause +elseIfClause +elseClause +variableDeclaration +sqlStatementList privilege +entityKind +grantObject tableOrViewName -tableName +tableRef tableNameCreate -viewName +viewRef viewNameCreate -tablePath -viewPath -schemaName +schemaRef schemaNameCreate -schemaPath -catalogName +catalogRef catalogNameCreate functionName -columnName +functionNameCreate +columnRef columnNameCreate qualifiedName +queryPeriod +rangeType grantor principal roles +privilegeOrRole identifier number +authorizationUser nonReserved atn: -[4, 1, 277, 2607, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 1, 0, 5, 0, 220, 8, 0, 10, 0, 12, 0, 223, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 233, 8, 2, 1, 3, 1, 3, 3, 3, 237, 8, 3, 1, 4, 1, 4, 3, 4, 241, 8, 4, 1, 5, 1, 5, 3, 5, 245, 8, 5, 1, 6, 1, 6, 3, 6, 249, 8, 6, 1, 7, 1, 7, 3, 7, 253, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 263, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 268, 8, 8, 1, 8, 1, 8, 3, 8, 272, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 278, 8, 8, 1, 8, 1, 8, 3, 8, 282, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 303, 8, 8, 1, 8, 1, 8, 3, 8, 307, 8, 8, 1, 8, 1, 8, 3, 8, 311, 8, 8, 1, 8, 1, 8, 3, 8, 315, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 323, 8, 8, 1, 8, 1, 8, 3, 8, 327, 8, 8, 1, 8, 3, 8, 330, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 337, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 344, 8, 8, 10, 8, 12, 8, 347, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 352, 8, 8, 1, 8, 1, 8, 3, 8, 356, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 362, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 369, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 378, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 387, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 401, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 410, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 416, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 423, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 433, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 440, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 448, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 456, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 483, 8, 8, 10, 8, 12, 8, 486, 9, 8, 3, 8, 488, 8, 8, 1, 8, 3, 8, 491, 8, 8, 1, 8, 1, 8, 3, 8, 495, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 501, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 506, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 513, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 518, 8, 8, 1, 8, 1, 8, 3, 8, 522, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 530, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 536, 8, 8, 1, 8, 1, 8, 3, 8, 540, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 554, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 562, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 581, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 604, 8, 8, 10, 8, 12, 8, 607, 9, 8, 3, 8, 609, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 619, 8, 8, 1, 8, 1, 8, 3, 8, 623, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 634, 8, 8, 10, 8, 12, 8, 637, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 642, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 647, 8, 8, 1, 8, 1, 8, 3, 8, 651, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 657, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 664, 8, 8, 10, 8, 12, 8, 667, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 672, 8, 8, 1, 8, 1, 8, 3, 8, 676, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 683, 8, 8, 1, 8, 1, 8, 3, 8, 687, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 693, 8, 8, 10, 8, 12, 8, 696, 9, 8, 1, 8, 1, 8, 3, 8, 700, 8, 8, 1, 8, 1, 8, 3, 8, 704, 8, 8, 1, 8, 1, 8, 3, 8, 708, 8, 8, 1, 8, 3, 8, 711, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 718, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 724, 8, 8, 10, 8, 12, 8, 727, 9, 8, 1, 8, 1, 8, 3, 8, 731, 8, 8, 1, 8, 1, 8, 3, 8, 735, 8, 8, 1, 8, 1, 8, 3, 8, 739, 8, 8, 1, 8, 3, 8, 742, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 751, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 756, 8, 8, 10, 8, 12, 8, 759, 9, 8, 1, 8, 1, 8, 3, 8, 763, 8, 8, 1, 8, 1, 8, 3, 8, 767, 8, 8, 1, 8, 1, 8, 3, 8, 771, 8, 8, 1, 8, 3, 8, 774, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 782, 8, 8, 1, 8, 3, 8, 785, 8, 8, 1, 8, 1, 8, 3, 8, 789, 8, 8, 1, 8, 3, 8, 792, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 798, 8, 8, 10, 8, 12, 8, 801, 9, 8, 1, 8, 1, 8, 3, 8, 805, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 829, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 835, 8, 8, 3, 8, 837, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 843, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 849, 8, 8, 3, 8, 851, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 859, 8, 8, 3, 8, 861, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 867, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 873, 8, 8, 3, 8, 875, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 890, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 895, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 902, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 914, 8, 8, 3, 8, 916, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 924, 8, 8, 3, 8, 926, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 942, 8, 8, 10, 8, 12, 8, 945, 9, 8, 3, 8, 947, 8, 8, 1, 8, 1, 8, 3, 8, 951, 8, 8, 1, 8, 1, 8, 3, 8, 955, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 971, 8, 8, 10, 8, 12, 8, 974, 9, 8, 3, 8, 976, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 992, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1000, 8, 8, 10, 8, 12, 8, 1003, 9, 8, 1, 8, 1, 8, 3, 8, 1007, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1013, 8, 8, 1, 8, 3, 8, 1016, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1023, 8, 8, 11, 8, 12, 8, 1024, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1037, 8, 8, 1, 9, 3, 9, 1040, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 3, 10, 1046, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1051, 8, 10, 10, 10, 12, 10, 1054, 9, 10, 1, 11, 1, 11, 3, 11, 1058, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1064, 8, 12, 1, 12, 1, 12, 3, 12, 1068, 8, 12, 1, 12, 1, 12, 3, 12, 1072, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1078, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 5, 15, 1087, 8, 15, 10, 15, 12, 15, 1090, 9, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 1098, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1106, 8, 18, 10, 18, 12, 18, 1109, 9, 18, 3, 18, 1111, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1116, 8, 18, 3, 18, 1118, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1125, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1131, 8, 18, 3, 18, 1133, 8, 18, 1, 19, 1, 19, 3, 19, 1137, 8, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1147, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1153, 8, 21, 1, 21, 5, 21, 1156, 8, 21, 10, 21, 12, 21, 1159, 9, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 1168, 8, 22, 10, 22, 12, 22, 1171, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1177, 8, 22, 1, 23, 1, 23, 3, 23, 1181, 8, 23, 1, 23, 3, 23, 1184, 8, 23, 1, 23, 1, 23, 3, 23, 1188, 8, 23, 1, 24, 1, 24, 3, 24, 1192, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1197, 8, 24, 10, 24, 12, 24, 1200, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1206, 8, 24, 10, 24, 12, 24, 1209, 9, 24, 3, 24, 1211, 8, 24, 1, 24, 1, 24, 3, 24, 1215, 8, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1220, 8, 24, 1, 24, 1, 24, 3, 24, 1224, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1230, 8, 24, 10, 24, 12, 24, 1233, 9, 24, 3, 24, 1235, 8, 24, 1, 25, 3, 25, 1238, 8, 25, 1, 25, 1, 25, 1, 25, 5, 25, 1243, 8, 25, 10, 25, 12, 25, 1246, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1254, 8, 26, 10, 26, 12, 26, 1257, 9, 26, 3, 26, 1259, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1267, 8, 26, 10, 26, 12, 26, 1270, 9, 26, 3, 26, 1272, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1281, 8, 26, 10, 26, 12, 26, 1284, 9, 26, 1, 26, 1, 26, 3, 26, 1288, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1294, 8, 27, 10, 27, 12, 27, 1297, 9, 27, 3, 27, 1299, 8, 27, 1, 27, 1, 27, 3, 27, 1303, 8, 27, 1, 28, 1, 28, 3, 28, 1307, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 3, 30, 1316, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1323, 8, 30, 10, 30, 12, 30, 1326, 9, 30, 3, 30, 1328, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1335, 8, 30, 10, 30, 12, 30, 1338, 9, 30, 3, 30, 1340, 8, 30, 1, 30, 3, 30, 1343, 8, 30, 1, 31, 1, 31, 3, 31, 1347, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 1358, 8, 33, 1, 33, 3, 33, 1361, 8, 33, 1, 33, 3, 33, 1364, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1371, 8, 33, 1, 33, 3, 33, 1374, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1393, 8, 34, 5, 34, 1395, 8, 34, 10, 34, 12, 34, 1398, 9, 34, 1, 35, 3, 35, 1401, 8, 35, 1, 35, 1, 35, 3, 35, 1405, 8, 35, 1, 35, 1, 35, 3, 35, 1409, 8, 35, 1, 35, 1, 35, 3, 35, 1413, 8, 35, 3, 35, 1415, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 1424, 8, 36, 10, 36, 12, 36, 1427, 9, 36, 1, 36, 1, 36, 3, 36, 1431, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1440, 8, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1452, 8, 39, 10, 39, 12, 39, 1455, 9, 39, 3, 39, 1457, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1464, 8, 39, 10, 39, 12, 39, 1467, 9, 39, 3, 39, 1469, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1475, 8, 39, 10, 39, 12, 39, 1478, 9, 39, 3, 39, 1480, 8, 39, 1, 39, 3, 39, 1483, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1488, 8, 39, 1, 39, 3, 39, 1491, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1501, 8, 39, 10, 39, 12, 39, 1504, 9, 39, 3, 39, 1506, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1512, 8, 39, 10, 39, 12, 39, 1515, 9, 39, 1, 39, 1, 39, 3, 39, 1519, 8, 39, 1, 39, 1, 39, 3, 39, 1523, 8, 39, 3, 39, 1525, 8, 39, 3, 39, 1527, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1542, 8, 41, 3, 41, 1544, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1555, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1576, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1584, 8, 44, 10, 44, 12, 44, 1587, 9, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 1597, 8, 46, 1, 46, 1, 46, 3, 46, 1601, 8, 46, 3, 46, 1603, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1609, 8, 47, 10, 47, 12, 47, 1612, 9, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1620, 8, 48, 10, 48, 12, 48, 1623, 9, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1631, 8, 49, 10, 49, 12, 49, 1634, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1648, 8, 50, 10, 50, 12, 50, 1651, 9, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1656, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1667, 8, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 1674, 8, 52, 1, 52, 1, 52, 3, 52, 1678, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1686, 8, 52, 10, 52, 12, 52, 1689, 9, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1701, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1709, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1716, 8, 53, 10, 53, 12, 53, 1719, 9, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1724, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1732, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1738, 8, 53, 1, 53, 1, 53, 3, 53, 1742, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1747, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1752, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1758, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1772, 8, 54, 10, 54, 12, 54, 1775, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 4, 55, 1802, 8, 55, 11, 55, 12, 55, 1803, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1813, 8, 55, 10, 55, 12, 55, 1816, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1825, 8, 55, 1, 55, 3, 55, 1828, 8, 55, 1, 55, 3, 55, 1831, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1836, 8, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1841, 8, 55, 10, 55, 12, 55, 1844, 9, 55, 3, 55, 1846, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1853, 8, 55, 10, 55, 12, 55, 1856, 9, 55, 3, 55, 1858, 8, 55, 1, 55, 1, 55, 3, 55, 1862, 8, 55, 1, 55, 3, 55, 1865, 8, 55, 1, 55, 3, 55, 1868, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1881, 8, 55, 10, 55, 12, 55, 1884, 9, 55, 3, 55, 1886, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 4, 55, 1903, 8, 55, 11, 55, 12, 55, 1904, 1, 55, 1, 55, 3, 55, 1909, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 4, 55, 1915, 8, 55, 11, 55, 12, 55, 1916, 1, 55, 1, 55, 3, 55, 1921, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1944, 8, 55, 10, 55, 12, 55, 1947, 9, 55, 3, 55, 1949, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1958, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1964, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1970, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1976, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1989, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1998, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2018, 8, 55, 10, 55, 12, 55, 2021, 9, 55, 3, 55, 2023, 8, 55, 1, 55, 3, 55, 2026, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2036, 8, 55, 10, 55, 12, 55, 2039, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2047, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2053, 8, 58, 3, 58, 2055, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2063, 8, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 3, 63, 2073, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2079, 8, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2091, 8, 66, 10, 66, 12, 66, 2094, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2102, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2109, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2114, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2121, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2131, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2136, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2143, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2167, 8, 66, 10, 66, 12, 66, 2170, 9, 66, 1, 66, 1, 66, 3, 66, 2174, 8, 66, 3, 66, 2176, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2183, 8, 66, 5, 66, 2185, 8, 66, 10, 66, 12, 66, 2188, 9, 66, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2194, 8, 67, 1, 68, 1, 68, 3, 68, 2198, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2215, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2228, 8, 71, 10, 71, 12, 71, 2231, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2237, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2246, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2254, 8, 71, 10, 71, 12, 71, 2257, 9, 71, 1, 71, 1, 71, 3, 71, 2261, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2268, 8, 71, 10, 71, 12, 71, 2271, 9, 71, 1, 71, 1, 71, 3, 71, 2275, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2283, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2289, 8, 73, 10, 73, 12, 73, 2292, 9, 73, 3, 73, 2294, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2300, 8, 73, 1, 73, 3, 73, 2303, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2310, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2316, 8, 73, 10, 73, 12, 73, 2319, 9, 73, 3, 73, 2321, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2327, 8, 73, 10, 73, 12, 73, 2330, 9, 73, 3, 73, 2332, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2358, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2369, 8, 75, 1, 76, 1, 76, 1, 76, 3, 76, 2374, 8, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 2381, 8, 76, 10, 76, 12, 76, 2384, 9, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 5, 77, 2394, 8, 77, 10, 77, 12, 77, 2397, 9, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2411, 8, 77, 1, 78, 1, 78, 3, 78, 2415, 8, 78, 1, 78, 1, 78, 3, 78, 2419, 8, 78, 1, 78, 1, 78, 3, 78, 2423, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 2429, 8, 78, 1, 78, 1, 78, 3, 78, 2433, 8, 78, 1, 78, 1, 78, 3, 78, 2437, 8, 78, 1, 78, 1, 78, 3, 78, 2441, 8, 78, 3, 78, 2443, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2453, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2460, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 2469, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2476, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2483, 8, 84, 1, 85, 1, 85, 1, 85, 5, 85, 2488, 8, 85, 10, 85, 12, 85, 2491, 9, 85, 1, 86, 1, 86, 1, 87, 1, 87, 3, 87, 2497, 8, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2518, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2531, 8, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2542, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 3, 100, 2552, 8, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 5, 102, 2559, 8, 102, 10, 102, 12, 102, 2562, 9, 102, 1, 103, 1, 103, 1, 103, 3, 103, 2567, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 2574, 8, 104, 1, 105, 1, 105, 1, 105, 5, 105, 2579, 8, 105, 10, 105, 12, 105, 2582, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2589, 8, 106, 1, 107, 3, 107, 2592, 8, 107, 1, 107, 1, 107, 3, 107, 2596, 8, 107, 1, 107, 1, 107, 3, 107, 2600, 8, 107, 1, 107, 3, 107, 2603, 8, 107, 1, 108, 1, 108, 1, 108, 0, 7, 42, 68, 104, 108, 110, 132, 152, 109, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 0, 27, 2, 0, 34, 34, 185, 185, 2, 0, 61, 61, 112, 112, 2, 0, 88, 88, 103, 103, 2, 0, 75, 75, 104, 104, 1, 0, 192, 193, 2, 0, 84, 84, 139, 139, 2, 0, 261, 261, 265, 265, 2, 0, 74, 74, 229, 229, 2, 0, 27, 27, 63, 63, 2, 0, 84, 84, 118, 118, 2, 0, 20, 20, 66, 66, 2, 0, 30, 30, 211, 211, 2, 0, 105, 105, 199, 199, 1, 0, 255, 256, 1, 0, 257, 259, 2, 0, 83, 83, 194, 194, 1, 0, 249, 254, 3, 0, 20, 20, 24, 24, 206, 206, 2, 0, 80, 80, 223, 223, 5, 0, 58, 58, 100, 100, 136, 137, 197, 197, 247, 247, 1, 0, 140, 143, 2, 0, 85, 85, 171, 171, 3, 0, 95, 95, 117, 117, 215, 215, 4, 0, 67, 67, 113, 113, 127, 127, 236, 236, 2, 0, 155, 155, 246, 246, 4, 0, 62, 62, 108, 108, 200, 200, 232, 232, 49, 0, 17, 20, 22, 22, 24, 25, 27, 30, 33, 34, 37, 42, 47, 47, 56, 59, 61, 61, 63, 63, 65, 65, 67, 68, 71, 71, 75, 75, 78, 78, 81, 85, 87, 87, 90, 95, 98, 98, 100, 102, 104, 105, 107, 107, 110, 110, 112, 113, 115, 115, 117, 119, 121, 121, 123, 124, 127, 137, 139, 145, 149, 152, 154, 156, 159, 159, 161, 172, 174, 177, 179, 186, 188, 190, 192, 199, 201, 211, 213, 215, 217, 222, 224, 225, 227, 228, 230, 230, 232, 234, 236, 236, 238, 239, 242, 242, 244, 248, 3008, 0, 221, 1, 0, 0, 0, 2, 226, 1, 0, 0, 0, 4, 232, 1, 0, 0, 0, 6, 234, 1, 0, 0, 0, 8, 238, 1, 0, 0, 0, 10, 242, 1, 0, 0, 0, 12, 246, 1, 0, 0, 0, 14, 250, 1, 0, 0, 0, 16, 1036, 1, 0, 0, 0, 18, 1039, 1, 0, 0, 0, 20, 1043, 1, 0, 0, 0, 22, 1057, 1, 0, 0, 0, 24, 1059, 1, 0, 0, 0, 26, 1073, 1, 0, 0, 0, 28, 1079, 1, 0, 0, 0, 30, 1083, 1, 0, 0, 0, 32, 1091, 1, 0, 0, 0, 34, 1097, 1, 0, 0, 0, 36, 1099, 1, 0, 0, 0, 38, 1136, 1, 0, 0, 0, 40, 1138, 1, 0, 0, 0, 42, 1140, 1, 0, 0, 0, 44, 1176, 1, 0, 0, 0, 46, 1180, 1, 0, 0, 0, 48, 1189, 1, 0, 0, 0, 50, 1237, 1, 0, 0, 0, 52, 1287, 1, 0, 0, 0, 54, 1302, 1, 0, 0, 0, 56, 1306, 1, 0, 0, 0, 58, 1308, 1, 0, 0, 0, 60, 1315, 1, 0, 0, 0, 62, 1344, 1, 0, 0, 0, 64, 1353, 1, 0, 0, 0, 66, 1373, 1, 0, 0, 0, 68, 1375, 1, 0, 0, 0, 70, 1414, 1, 0, 0, 0, 72, 1430, 1, 0, 0, 0, 74, 1432, 1, 0, 0, 0, 76, 1441, 1, 0, 0, 0, 78, 1443, 1, 0, 0, 0, 80, 1528, 1, 0, 0, 0, 82, 1543, 1, 0, 0, 0, 84, 1554, 1, 0, 0, 0, 86, 1575, 1, 0, 0, 0, 88, 1577, 1, 0, 0, 0, 90, 1590, 1, 0, 0, 0, 92, 1594, 1, 0, 0, 0, 94, 1604, 1, 0, 0, 0, 96, 1615, 1, 0, 0, 0, 98, 1626, 1, 0, 0, 0, 100, 1666, 1, 0, 0, 0, 102, 1668, 1, 0, 0, 0, 104, 1677, 1, 0, 0, 0, 106, 1751, 1, 0, 0, 0, 108, 1757, 1, 0, 0, 0, 110, 2025, 1, 0, 0, 0, 112, 2040, 1, 0, 0, 0, 114, 2046, 1, 0, 0, 0, 116, 2054, 1, 0, 0, 0, 118, 2062, 1, 0, 0, 0, 120, 2064, 1, 0, 0, 0, 122, 2066, 1, 0, 0, 0, 124, 2068, 1, 0, 0, 0, 126, 2070, 1, 0, 0, 0, 128, 2080, 1, 0, 0, 0, 130, 2082, 1, 0, 0, 0, 132, 2175, 1, 0, 0, 0, 134, 2193, 1, 0, 0, 0, 136, 2197, 1, 0, 0, 0, 138, 2199, 1, 0, 0, 0, 140, 2204, 1, 0, 0, 0, 142, 2274, 1, 0, 0, 0, 144, 2276, 1, 0, 0, 0, 146, 2293, 1, 0, 0, 0, 148, 2357, 1, 0, 0, 0, 150, 2368, 1, 0, 0, 0, 152, 2370, 1, 0, 0, 0, 154, 2410, 1, 0, 0, 0, 156, 2442, 1, 0, 0, 0, 158, 2444, 1, 0, 0, 0, 160, 2452, 1, 0, 0, 0, 162, 2459, 1, 0, 0, 0, 164, 2468, 1, 0, 0, 0, 166, 2475, 1, 0, 0, 0, 168, 2482, 1, 0, 0, 0, 170, 2484, 1, 0, 0, 0, 172, 2492, 1, 0, 0, 0, 174, 2496, 1, 0, 0, 0, 176, 2498, 1, 0, 0, 0, 178, 2500, 1, 0, 0, 0, 180, 2502, 1, 0, 0, 0, 182, 2504, 1, 0, 0, 0, 184, 2517, 1, 0, 0, 0, 186, 2530, 1, 0, 0, 0, 188, 2532, 1, 0, 0, 0, 190, 2534, 1, 0, 0, 0, 192, 2541, 1, 0, 0, 0, 194, 2543, 1, 0, 0, 0, 196, 2545, 1, 0, 0, 0, 198, 2547, 1, 0, 0, 0, 200, 2551, 1, 0, 0, 0, 202, 2553, 1, 0, 0, 0, 204, 2555, 1, 0, 0, 0, 206, 2566, 1, 0, 0, 0, 208, 2573, 1, 0, 0, 0, 210, 2575, 1, 0, 0, 0, 212, 2588, 1, 0, 0, 0, 214, 2602, 1, 0, 0, 0, 216, 2604, 1, 0, 0, 0, 218, 220, 3, 2, 1, 0, 219, 218, 1, 0, 0, 0, 220, 223, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 224, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 224, 225, 5, 0, 0, 1, 225, 1, 1, 0, 0, 0, 226, 227, 3, 6, 3, 0, 227, 3, 1, 0, 0, 0, 228, 233, 3, 8, 4, 0, 229, 233, 3, 10, 5, 0, 230, 233, 3, 12, 6, 0, 231, 233, 3, 14, 7, 0, 232, 228, 1, 0, 0, 0, 232, 229, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 231, 1, 0, 0, 0, 233, 5, 1, 0, 0, 0, 234, 236, 3, 16, 8, 0, 235, 237, 5, 272, 0, 0, 236, 235, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 7, 1, 0, 0, 0, 238, 240, 3, 102, 51, 0, 239, 241, 5, 272, 0, 0, 240, 239, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 9, 1, 0, 0, 0, 242, 244, 3, 170, 85, 0, 243, 245, 5, 272, 0, 0, 244, 243, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 11, 1, 0, 0, 0, 246, 248, 3, 132, 66, 0, 247, 249, 5, 272, 0, 0, 248, 247, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 13, 1, 0, 0, 0, 250, 252, 3, 152, 76, 0, 251, 253, 5, 272, 0, 0, 252, 251, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 15, 1, 0, 0, 0, 254, 1037, 3, 18, 9, 0, 255, 256, 5, 233, 0, 0, 256, 1037, 3, 188, 94, 0, 257, 258, 5, 44, 0, 0, 258, 262, 5, 195, 0, 0, 259, 260, 5, 101, 0, 0, 260, 261, 5, 147, 0, 0, 261, 263, 5, 77, 0, 0, 262, 259, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 267, 3, 190, 95, 0, 265, 266, 5, 29, 0, 0, 266, 268, 3, 208, 104, 0, 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 270, 5, 243, 0, 0, 270, 272, 3, 28, 14, 0, 271, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 1037, 1, 0, 0, 0, 273, 274, 5, 69, 0, 0, 274, 277, 5, 195, 0, 0, 275, 276, 5, 101, 0, 0, 276, 278, 5, 77, 0, 0, 277, 275, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 3, 188, 94, 0, 280, 282, 7, 0, 0, 0, 281, 280, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 1037, 1, 0, 0, 0, 283, 284, 5, 21, 0, 0, 284, 285, 5, 195, 0, 0, 285, 286, 3, 188, 94, 0, 286, 287, 5, 180, 0, 0, 287, 288, 5, 220, 0, 0, 288, 289, 3, 190, 95, 0, 289, 1037, 1, 0, 0, 0, 290, 291, 5, 21, 0, 0, 291, 292, 5, 195, 0, 0, 292, 293, 3, 188, 94, 0, 293, 294, 5, 203, 0, 0, 294, 295, 5, 29, 0, 0, 295, 296, 3, 208, 104, 0, 296, 1037, 1, 0, 0, 0, 297, 298, 5, 44, 0, 0, 298, 302, 5, 212, 0, 0, 299, 300, 5, 101, 0, 0, 300, 301, 5, 147, 0, 0, 301, 303, 5, 77, 0, 0, 302, 299, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 306, 3, 178, 89, 0, 305, 307, 3, 94, 47, 0, 306, 305, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 309, 5, 40, 0, 0, 309, 311, 3, 116, 58, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 313, 5, 243, 0, 0, 313, 315, 3, 28, 14, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 322, 5, 26, 0, 0, 317, 323, 3, 18, 9, 0, 318, 319, 5, 1, 0, 0, 319, 320, 3, 18, 9, 0, 320, 321, 5, 2, 0, 0, 321, 323, 1, 0, 0, 0, 322, 317, 1, 0, 0, 0, 322, 318, 1, 0, 0, 0, 323, 329, 1, 0, 0, 0, 324, 326, 5, 243, 0, 0, 325, 327, 5, 144, 0, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 330, 5, 56, 0, 0, 329, 324, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 1037, 1, 0, 0, 0, 331, 332, 5, 44, 0, 0, 332, 336, 5, 212, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 147, 0, 0, 335, 337, 5, 77, 0, 0, 336, 333, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 3, 178, 89, 0, 339, 340, 5, 1, 0, 0, 340, 345, 3, 22, 11, 0, 341, 342, 5, 3, 0, 0, 342, 344, 3, 22, 11, 0, 343, 341, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 351, 5, 2, 0, 0, 349, 350, 5, 40, 0, 0, 350, 352, 3, 116, 58, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 354, 5, 243, 0, 0, 354, 356, 3, 28, 14, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 1037, 1, 0, 0, 0, 357, 358, 5, 69, 0, 0, 358, 361, 5, 212, 0, 0, 359, 360, 5, 101, 0, 0, 360, 362, 5, 77, 0, 0, 361, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 1037, 3, 176, 88, 0, 364, 365, 5, 108, 0, 0, 365, 366, 5, 111, 0, 0, 366, 368, 3, 176, 88, 0, 367, 369, 3, 96, 48, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 371, 3, 18, 9, 0, 371, 1037, 1, 0, 0, 0, 372, 373, 5, 62, 0, 0, 373, 374, 5, 88, 0, 0, 374, 377, 3, 176, 88, 0, 375, 376, 5, 241, 0, 0, 376, 378, 3, 104, 52, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 1037, 1, 0, 0, 0, 379, 380, 5, 222, 0, 0, 380, 381, 5, 212, 0, 0, 381, 1037, 3, 176, 88, 0, 382, 383, 5, 21, 0, 0, 383, 386, 5, 212, 0, 0, 384, 385, 5, 101, 0, 0, 385, 387, 5, 77, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 3, 176, 88, 0, 389, 390, 5, 180, 0, 0, 390, 391, 5, 220, 0, 0, 391, 392, 3, 178, 89, 0, 392, 1037, 1, 0, 0, 0, 393, 394, 5, 40, 0, 0, 394, 395, 5, 153, 0, 0, 395, 396, 5, 212, 0, 0, 396, 397, 3, 176, 88, 0, 397, 400, 5, 114, 0, 0, 398, 401, 3, 116, 58, 0, 399, 401, 5, 148, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 1037, 1, 0, 0, 0, 402, 403, 5, 40, 0, 0, 403, 404, 5, 153, 0, 0, 404, 405, 5, 38, 0, 0, 405, 406, 3, 200, 100, 0, 406, 409, 5, 114, 0, 0, 407, 410, 3, 116, 58, 0, 408, 410, 5, 148, 0, 0, 409, 407, 1, 0, 0, 0, 409, 408, 1, 0, 0, 0, 410, 1037, 1, 0, 0, 0, 411, 412, 5, 21, 0, 0, 412, 415, 5, 212, 0, 0, 413, 414, 5, 101, 0, 0, 414, 416, 5, 77, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 3, 176, 88, 0, 418, 419, 5, 180, 0, 0, 419, 422, 5, 38, 0, 0, 420, 421, 5, 101, 0, 0, 421, 423, 5, 77, 0, 0, 422, 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 425, 3, 200, 100, 0, 425, 426, 5, 220, 0, 0, 426, 427, 3, 202, 101, 0, 427, 1037, 1, 0, 0, 0, 428, 429, 5, 21, 0, 0, 429, 432, 5, 212, 0, 0, 430, 431, 5, 101, 0, 0, 431, 433, 5, 77, 0, 0, 432, 430, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 435, 3, 176, 88, 0, 435, 436, 5, 69, 0, 0, 436, 439, 5, 38, 0, 0, 437, 438, 5, 101, 0, 0, 438, 440, 5, 77, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 3, 200, 100, 0, 442, 1037, 1, 0, 0, 0, 443, 444, 5, 21, 0, 0, 444, 447, 5, 212, 0, 0, 445, 446, 5, 101, 0, 0, 446, 448, 5, 77, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 450, 3, 176, 88, 0, 450, 451, 5, 17, 0, 0, 451, 455, 5, 38, 0, 0, 452, 453, 5, 101, 0, 0, 453, 454, 5, 147, 0, 0, 454, 456, 5, 77, 0, 0, 455, 452, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 3, 24, 12, 0, 458, 1037, 1, 0, 0, 0, 459, 460, 5, 21, 0, 0, 460, 461, 5, 212, 0, 0, 461, 462, 3, 176, 88, 0, 462, 463, 5, 203, 0, 0, 463, 464, 5, 29, 0, 0, 464, 465, 3, 208, 104, 0, 465, 1037, 1, 0, 0, 0, 466, 467, 5, 21, 0, 0, 467, 468, 5, 212, 0, 0, 468, 469, 3, 176, 88, 0, 469, 470, 5, 203, 0, 0, 470, 471, 5, 175, 0, 0, 471, 472, 3, 30, 15, 0, 472, 1037, 1, 0, 0, 0, 473, 474, 5, 21, 0, 0, 474, 475, 5, 212, 0, 0, 475, 476, 3, 176, 88, 0, 476, 477, 5, 76, 0, 0, 477, 490, 3, 212, 106, 0, 478, 487, 5, 1, 0, 0, 479, 484, 3, 166, 83, 0, 480, 481, 5, 3, 0, 0, 481, 483, 3, 166, 83, 0, 482, 480, 1, 0, 0, 0, 483, 486, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 487, 479, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 491, 5, 2, 0, 0, 490, 478, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 493, 5, 241, 0, 0, 493, 495, 3, 104, 52, 0, 494, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 1037, 1, 0, 0, 0, 496, 497, 5, 22, 0, 0, 497, 500, 3, 176, 88, 0, 498, 499, 5, 243, 0, 0, 499, 501, 3, 28, 14, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 1037, 1, 0, 0, 0, 502, 505, 5, 44, 0, 0, 503, 504, 5, 157, 0, 0, 504, 506, 5, 182, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 5, 133, 0, 0, 508, 512, 5, 239, 0, 0, 509, 510, 5, 101, 0, 0, 510, 511, 5, 147, 0, 0, 511, 513, 5, 77, 0, 0, 512, 509, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 517, 3, 182, 91, 0, 515, 516, 5, 40, 0, 0, 516, 518, 3, 116, 58, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 521, 1, 0, 0, 0, 519, 520, 5, 243, 0, 0, 520, 522, 3, 28, 14, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 5, 26, 0, 0, 524, 525, 3, 18, 9, 0, 525, 1037, 1, 0, 0, 0, 526, 529, 5, 44, 0, 0, 527, 528, 5, 157, 0, 0, 528, 530, 5, 182, 0, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 5, 239, 0, 0, 532, 535, 3, 182, 91, 0, 533, 534, 5, 40, 0, 0, 534, 536, 3, 116, 58, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 539, 1, 0, 0, 0, 537, 538, 5, 198, 0, 0, 538, 540, 7, 1, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 5, 26, 0, 0, 542, 543, 3, 18, 9, 0, 543, 1037, 1, 0, 0, 0, 544, 545, 5, 179, 0, 0, 545, 546, 5, 133, 0, 0, 546, 547, 5, 239, 0, 0, 547, 1037, 3, 180, 90, 0, 548, 549, 5, 69, 0, 0, 549, 550, 5, 133, 0, 0, 550, 553, 5, 239, 0, 0, 551, 552, 5, 101, 0, 0, 552, 554, 5, 77, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 1037, 3, 180, 90, 0, 556, 557, 5, 21, 0, 0, 557, 558, 5, 133, 0, 0, 558, 561, 5, 239, 0, 0, 559, 560, 5, 101, 0, 0, 560, 562, 5, 77, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 3, 180, 90, 0, 564, 565, 5, 180, 0, 0, 565, 566, 5, 220, 0, 0, 566, 567, 3, 182, 91, 0, 567, 1037, 1, 0, 0, 0, 568, 569, 5, 21, 0, 0, 569, 570, 5, 133, 0, 0, 570, 571, 5, 239, 0, 0, 571, 572, 3, 180, 90, 0, 572, 573, 5, 203, 0, 0, 573, 574, 5, 175, 0, 0, 574, 575, 3, 30, 15, 0, 575, 1037, 1, 0, 0, 0, 576, 577, 5, 69, 0, 0, 577, 580, 5, 239, 0, 0, 578, 579, 5, 101, 0, 0, 579, 581, 5, 77, 0, 0, 580, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 1037, 3, 180, 90, 0, 583, 584, 5, 21, 0, 0, 584, 585, 5, 239, 0, 0, 585, 586, 3, 180, 90, 0, 586, 587, 5, 180, 0, 0, 587, 588, 5, 220, 0, 0, 588, 589, 3, 182, 91, 0, 589, 1037, 1, 0, 0, 0, 590, 591, 5, 21, 0, 0, 591, 592, 5, 239, 0, 0, 592, 593, 3, 180, 90, 0, 593, 594, 5, 203, 0, 0, 594, 595, 5, 29, 0, 0, 595, 596, 3, 208, 104, 0, 596, 1037, 1, 0, 0, 0, 597, 598, 5, 33, 0, 0, 598, 599, 3, 198, 99, 0, 599, 608, 5, 1, 0, 0, 600, 605, 3, 166, 83, 0, 601, 602, 5, 3, 0, 0, 602, 604, 3, 166, 83, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 600, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 2, 0, 0, 611, 1037, 1, 0, 0, 0, 612, 613, 5, 44, 0, 0, 613, 614, 5, 188, 0, 0, 614, 618, 3, 212, 106, 0, 615, 616, 5, 243, 0, 0, 616, 617, 5, 18, 0, 0, 617, 619, 3, 206, 103, 0, 618, 615, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 621, 5, 103, 0, 0, 621, 623, 3, 194, 97, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 1037, 1, 0, 0, 0, 624, 625, 5, 69, 0, 0, 625, 626, 5, 188, 0, 0, 626, 1037, 3, 212, 106, 0, 627, 628, 5, 91, 0, 0, 628, 629, 3, 210, 105, 0, 629, 630, 5, 220, 0, 0, 630, 635, 3, 208, 104, 0, 631, 632, 5, 3, 0, 0, 632, 634, 3, 208, 104, 0, 633, 631, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 641, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 639, 5, 243, 0, 0, 639, 640, 5, 18, 0, 0, 640, 642, 5, 156, 0, 0, 641, 638, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 5, 92, 0, 0, 644, 645, 5, 32, 0, 0, 645, 647, 3, 206, 103, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 649, 5, 103, 0, 0, 649, 651, 3, 194, 97, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 1037, 1, 0, 0, 0, 652, 656, 5, 186, 0, 0, 653, 654, 5, 18, 0, 0, 654, 655, 5, 156, 0, 0, 655, 657, 5, 86, 0, 0, 656, 653, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 3, 210, 105, 0, 659, 660, 5, 88, 0, 0, 660, 665, 3, 208, 104, 0, 661, 662, 5, 3, 0, 0, 662, 664, 3, 208, 104, 0, 663, 661, 1, 0, 0, 0, 664, 667, 1, 0, 0, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 671, 1, 0, 0, 0, 667, 665, 1, 0, 0, 0, 668, 669, 5, 92, 0, 0, 669, 670, 5, 32, 0, 0, 670, 672, 3, 206, 103, 0, 671, 668, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 675, 1, 0, 0, 0, 673, 674, 5, 103, 0, 0, 674, 676, 3, 194, 97, 0, 675, 673, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 1037, 1, 0, 0, 0, 677, 678, 5, 203, 0, 0, 678, 682, 5, 188, 0, 0, 679, 683, 5, 20, 0, 0, 680, 683, 5, 145, 0, 0, 681, 683, 3, 212, 106, 0, 682, 679, 1, 0, 0, 0, 682, 680, 1, 0, 0, 0, 682, 681, 1, 0, 0, 0, 683, 686, 1, 0, 0, 0, 684, 685, 5, 103, 0, 0, 685, 687, 3, 194, 97, 0, 686, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 1037, 1, 0, 0, 0, 688, 699, 5, 91, 0, 0, 689, 694, 3, 172, 86, 0, 690, 691, 5, 3, 0, 0, 691, 693, 3, 172, 86, 0, 692, 690, 1, 0, 0, 0, 693, 696, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 700, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 697, 698, 5, 20, 0, 0, 698, 700, 5, 174, 0, 0, 699, 689, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 710, 5, 153, 0, 0, 702, 704, 5, 195, 0, 0, 703, 702, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 711, 3, 188, 94, 0, 706, 708, 5, 212, 0, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 711, 3, 176, 88, 0, 710, 703, 1, 0, 0, 0, 710, 707, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 713, 5, 220, 0, 0, 713, 717, 3, 208, 104, 0, 714, 715, 5, 243, 0, 0, 715, 716, 5, 91, 0, 0, 716, 718, 5, 156, 0, 0, 717, 714, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 1037, 1, 0, 0, 0, 719, 730, 5, 94, 0, 0, 720, 725, 3, 172, 86, 0, 721, 722, 5, 3, 0, 0, 722, 724, 3, 172, 86, 0, 723, 721, 1, 0, 0, 0, 724, 727, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 731, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 728, 729, 5, 20, 0, 0, 729, 731, 5, 174, 0, 0, 730, 720, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 741, 5, 153, 0, 0, 733, 735, 5, 195, 0, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 742, 3, 188, 94, 0, 737, 739, 5, 212, 0, 0, 738, 737, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 742, 3, 176, 88, 0, 741, 734, 1, 0, 0, 0, 741, 738, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 5, 220, 0, 0, 744, 745, 3, 208, 104, 0, 745, 1037, 1, 0, 0, 0, 746, 750, 5, 186, 0, 0, 747, 748, 5, 91, 0, 0, 748, 749, 5, 156, 0, 0, 749, 751, 5, 86, 0, 0, 750, 747, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 762, 1, 0, 0, 0, 752, 757, 3, 172, 86, 0, 753, 754, 5, 3, 0, 0, 754, 756, 3, 172, 86, 0, 755, 753, 1, 0, 0, 0, 756, 759, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 763, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 760, 761, 5, 20, 0, 0, 761, 763, 5, 174, 0, 0, 762, 752, 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 773, 5, 153, 0, 0, 765, 767, 5, 195, 0, 0, 766, 765, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 774, 3, 188, 94, 0, 769, 771, 5, 212, 0, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 3, 176, 88, 0, 773, 766, 1, 0, 0, 0, 773, 770, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 5, 88, 0, 0, 776, 1037, 3, 208, 104, 0, 777, 778, 5, 205, 0, 0, 778, 784, 5, 93, 0, 0, 779, 781, 5, 153, 0, 0, 780, 782, 5, 212, 0, 0, 781, 780, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 785, 3, 176, 88, 0, 784, 779, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 1037, 1, 0, 0, 0, 786, 788, 5, 78, 0, 0, 787, 789, 5, 22, 0, 0, 788, 787, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 792, 5, 238, 0, 0, 791, 790, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 804, 1, 0, 0, 0, 793, 794, 5, 1, 0, 0, 794, 799, 3, 160, 80, 0, 795, 796, 5, 3, 0, 0, 796, 798, 3, 160, 80, 0, 797, 795, 1, 0, 0, 0, 798, 801, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 802, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 803, 5, 2, 0, 0, 803, 805, 1, 0, 0, 0, 804, 793, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 1037, 3, 16, 8, 0, 807, 808, 5, 205, 0, 0, 808, 809, 5, 44, 0, 0, 809, 810, 5, 212, 0, 0, 810, 1037, 3, 176, 88, 0, 811, 812, 5, 205, 0, 0, 812, 813, 5, 44, 0, 0, 813, 814, 5, 195, 0, 0, 814, 1037, 3, 188, 94, 0, 815, 816, 5, 205, 0, 0, 816, 817, 5, 44, 0, 0, 817, 818, 5, 239, 0, 0, 818, 1037, 3, 180, 90, 0, 819, 820, 5, 205, 0, 0, 820, 821, 5, 44, 0, 0, 821, 822, 5, 133, 0, 0, 822, 823, 5, 239, 0, 0, 823, 1037, 3, 180, 90, 0, 824, 825, 5, 205, 0, 0, 825, 828, 5, 213, 0, 0, 826, 827, 7, 2, 0, 0, 827, 829, 3, 188, 94, 0, 828, 826, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 836, 1, 0, 0, 0, 830, 831, 5, 122, 0, 0, 831, 834, 3, 116, 58, 0, 832, 833, 5, 73, 0, 0, 833, 835, 3, 116, 58, 0, 834, 832, 1, 0, 0, 0, 834, 835, 1, 0, 0, 0, 835, 837, 1, 0, 0, 0, 836, 830, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 1037, 1, 0, 0, 0, 838, 839, 5, 205, 0, 0, 839, 842, 5, 196, 0, 0, 840, 841, 7, 2, 0, 0, 841, 843, 3, 194, 97, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 850, 1, 0, 0, 0, 844, 845, 5, 122, 0, 0, 845, 848, 3, 116, 58, 0, 846, 847, 5, 73, 0, 0, 847, 849, 3, 116, 58, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, 1, 0, 0, 0, 850, 844, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 1037, 1, 0, 0, 0, 852, 853, 5, 205, 0, 0, 853, 860, 5, 37, 0, 0, 854, 855, 5, 122, 0, 0, 855, 858, 3, 116, 58, 0, 856, 857, 5, 73, 0, 0, 857, 859, 3, 116, 58, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 861, 1, 0, 0, 0, 860, 854, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 1037, 1, 0, 0, 0, 862, 863, 5, 205, 0, 0, 863, 864, 5, 39, 0, 0, 864, 866, 7, 2, 0, 0, 865, 867, 3, 174, 87, 0, 866, 865, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 874, 1, 0, 0, 0, 868, 869, 5, 122, 0, 0, 869, 872, 3, 116, 58, 0, 870, 871, 5, 73, 0, 0, 871, 873, 3, 116, 58, 0, 872, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 875, 1, 0, 0, 0, 874, 868, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 1037, 1, 0, 0, 0, 876, 877, 5, 205, 0, 0, 877, 878, 5, 208, 0, 0, 878, 879, 5, 86, 0, 0, 879, 1037, 3, 176, 88, 0, 880, 881, 5, 205, 0, 0, 881, 882, 5, 208, 0, 0, 882, 883, 5, 86, 0, 0, 883, 884, 5, 1, 0, 0, 884, 885, 3, 18, 9, 0, 885, 886, 5, 2, 0, 0, 886, 1037, 1, 0, 0, 0, 887, 889, 5, 205, 0, 0, 888, 890, 5, 47, 0, 0, 889, 888, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 894, 5, 189, 0, 0, 892, 893, 7, 2, 0, 0, 893, 895, 3, 212, 106, 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 1037, 1, 0, 0, 0, 896, 897, 5, 205, 0, 0, 897, 898, 5, 188, 0, 0, 898, 901, 5, 93, 0, 0, 899, 900, 7, 2, 0, 0, 900, 902, 3, 212, 106, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 1037, 1, 0, 0, 0, 903, 904, 5, 64, 0, 0, 904, 1037, 3, 174, 87, 0, 905, 906, 5, 63, 0, 0, 906, 1037, 3, 174, 87, 0, 907, 908, 5, 205, 0, 0, 908, 915, 5, 90, 0, 0, 909, 910, 5, 122, 0, 0, 910, 913, 3, 116, 58, 0, 911, 912, 5, 73, 0, 0, 912, 914, 3, 116, 58, 0, 913, 911, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 916, 1, 0, 0, 0, 915, 909, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 1037, 1, 0, 0, 0, 917, 918, 5, 205, 0, 0, 918, 925, 5, 202, 0, 0, 919, 920, 5, 122, 0, 0, 920, 923, 3, 116, 58, 0, 921, 922, 5, 73, 0, 0, 922, 924, 3, 116, 58, 0, 923, 921, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 926, 1, 0, 0, 0, 925, 919, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 1037, 1, 0, 0, 0, 927, 928, 5, 203, 0, 0, 928, 929, 5, 202, 0, 0, 929, 930, 3, 204, 102, 0, 930, 931, 5, 249, 0, 0, 931, 932, 3, 102, 51, 0, 932, 1037, 1, 0, 0, 0, 933, 934, 5, 183, 0, 0, 934, 935, 5, 202, 0, 0, 935, 1037, 3, 204, 102, 0, 936, 937, 5, 207, 0, 0, 937, 946, 5, 221, 0, 0, 938, 943, 3, 162, 81, 0, 939, 940, 5, 3, 0, 0, 940, 942, 3, 162, 81, 0, 941, 939, 1, 0, 0, 0, 942, 945, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 947, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 946, 938, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 1037, 1, 0, 0, 0, 948, 950, 5, 41, 0, 0, 949, 951, 5, 245, 0, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 1037, 1, 0, 0, 0, 952, 954, 5, 190, 0, 0, 953, 955, 5, 245, 0, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 1037, 1, 0, 0, 0, 956, 957, 5, 173, 0, 0, 957, 958, 3, 212, 106, 0, 958, 959, 5, 88, 0, 0, 959, 960, 3, 16, 8, 0, 960, 1037, 1, 0, 0, 0, 961, 962, 5, 60, 0, 0, 962, 963, 5, 173, 0, 0, 963, 1037, 3, 212, 106, 0, 964, 965, 5, 76, 0, 0, 965, 975, 3, 212, 106, 0, 966, 967, 5, 235, 0, 0, 967, 972, 3, 102, 51, 0, 968, 969, 5, 3, 0, 0, 969, 971, 3, 102, 51, 0, 970, 968, 1, 0, 0, 0, 971, 974, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 976, 1, 0, 0, 0, 974, 972, 1, 0, 0, 0, 975, 966, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1037, 1, 0, 0, 0, 977, 978, 5, 64, 0, 0, 978, 979, 5, 107, 0, 0, 979, 1037, 3, 212, 106, 0, 980, 981, 5, 64, 0, 0, 981, 982, 5, 161, 0, 0, 982, 1037, 3, 212, 106, 0, 983, 984, 5, 203, 0, 0, 984, 985, 5, 166, 0, 0, 985, 1037, 3, 170, 85, 0, 986, 987, 5, 203, 0, 0, 987, 988, 5, 218, 0, 0, 988, 991, 5, 248, 0, 0, 989, 992, 5, 124, 0, 0, 990, 992, 3, 102, 51, 0, 991, 989, 1, 0, 0, 0, 991, 990, 1, 0, 0, 0, 992, 1037, 1, 0, 0, 0, 993, 994, 5, 232, 0, 0, 994, 995, 3, 176, 88, 0, 995, 996, 5, 203, 0, 0, 996, 1001, 3, 158, 79, 0, 997, 998, 5, 3, 0, 0, 998, 1000, 3, 158, 79, 0, 999, 997, 1, 0, 0, 0, 1000, 1003, 1, 0, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1006, 1, 0, 0, 0, 1003, 1001, 1, 0, 0, 0, 1004, 1005, 5, 241, 0, 0, 1005, 1007, 3, 104, 52, 0, 1006, 1004, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1037, 1, 0, 0, 0, 1008, 1009, 5, 135, 0, 0, 1009, 1010, 5, 111, 0, 0, 1010, 1015, 3, 176, 88, 0, 1011, 1013, 5, 26, 0, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1016, 3, 212, 106, 0, 1015, 1012, 1, 0, 0, 0, 1015, 1016, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1018, 5, 235, 0, 0, 1018, 1019, 3, 68, 34, 0, 1019, 1020, 5, 153, 0, 0, 1020, 1022, 3, 102, 51, 0, 1021, 1023, 3, 142, 71, 0, 1022, 1021, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1022, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1037, 1, 0, 0, 0, 1026, 1027, 5, 205, 0, 0, 1027, 1028, 5, 40, 0, 0, 1028, 1029, 5, 153, 0, 0, 1029, 1030, 5, 212, 0, 0, 1030, 1037, 3, 176, 88, 0, 1031, 1032, 5, 205, 0, 0, 1032, 1033, 5, 40, 0, 0, 1033, 1034, 5, 153, 0, 0, 1034, 1035, 5, 38, 0, 0, 1035, 1037, 3, 200, 100, 0, 1036, 254, 1, 0, 0, 0, 1036, 255, 1, 0, 0, 0, 1036, 257, 1, 0, 0, 0, 1036, 273, 1, 0, 0, 0, 1036, 283, 1, 0, 0, 0, 1036, 290, 1, 0, 0, 0, 1036, 297, 1, 0, 0, 0, 1036, 331, 1, 0, 0, 0, 1036, 357, 1, 0, 0, 0, 1036, 364, 1, 0, 0, 0, 1036, 372, 1, 0, 0, 0, 1036, 379, 1, 0, 0, 0, 1036, 382, 1, 0, 0, 0, 1036, 393, 1, 0, 0, 0, 1036, 402, 1, 0, 0, 0, 1036, 411, 1, 0, 0, 0, 1036, 428, 1, 0, 0, 0, 1036, 443, 1, 0, 0, 0, 1036, 459, 1, 0, 0, 0, 1036, 466, 1, 0, 0, 0, 1036, 473, 1, 0, 0, 0, 1036, 496, 1, 0, 0, 0, 1036, 502, 1, 0, 0, 0, 1036, 526, 1, 0, 0, 0, 1036, 544, 1, 0, 0, 0, 1036, 548, 1, 0, 0, 0, 1036, 556, 1, 0, 0, 0, 1036, 568, 1, 0, 0, 0, 1036, 576, 1, 0, 0, 0, 1036, 583, 1, 0, 0, 0, 1036, 590, 1, 0, 0, 0, 1036, 597, 1, 0, 0, 0, 1036, 612, 1, 0, 0, 0, 1036, 624, 1, 0, 0, 0, 1036, 627, 1, 0, 0, 0, 1036, 652, 1, 0, 0, 0, 1036, 677, 1, 0, 0, 0, 1036, 688, 1, 0, 0, 0, 1036, 719, 1, 0, 0, 0, 1036, 746, 1, 0, 0, 0, 1036, 777, 1, 0, 0, 0, 1036, 786, 1, 0, 0, 0, 1036, 807, 1, 0, 0, 0, 1036, 811, 1, 0, 0, 0, 1036, 815, 1, 0, 0, 0, 1036, 819, 1, 0, 0, 0, 1036, 824, 1, 0, 0, 0, 1036, 838, 1, 0, 0, 0, 1036, 852, 1, 0, 0, 0, 1036, 862, 1, 0, 0, 0, 1036, 876, 1, 0, 0, 0, 1036, 880, 1, 0, 0, 0, 1036, 887, 1, 0, 0, 0, 1036, 896, 1, 0, 0, 0, 1036, 903, 1, 0, 0, 0, 1036, 905, 1, 0, 0, 0, 1036, 907, 1, 0, 0, 0, 1036, 917, 1, 0, 0, 0, 1036, 927, 1, 0, 0, 0, 1036, 933, 1, 0, 0, 0, 1036, 936, 1, 0, 0, 0, 1036, 948, 1, 0, 0, 0, 1036, 952, 1, 0, 0, 0, 1036, 956, 1, 0, 0, 0, 1036, 961, 1, 0, 0, 0, 1036, 964, 1, 0, 0, 0, 1036, 977, 1, 0, 0, 0, 1036, 980, 1, 0, 0, 0, 1036, 983, 1, 0, 0, 0, 1036, 986, 1, 0, 0, 0, 1036, 993, 1, 0, 0, 0, 1036, 1008, 1, 0, 0, 0, 1036, 1026, 1, 0, 0, 0, 1036, 1031, 1, 0, 0, 0, 1037, 17, 1, 0, 0, 0, 1038, 1040, 3, 20, 10, 0, 1039, 1038, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 3, 36, 18, 0, 1042, 19, 1, 0, 0, 0, 1043, 1045, 5, 243, 0, 0, 1044, 1046, 5, 178, 0, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1052, 3, 62, 31, 0, 1048, 1049, 5, 3, 0, 0, 1049, 1051, 3, 62, 31, 0, 1050, 1048, 1, 0, 0, 0, 1051, 1054, 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 21, 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1055, 1058, 3, 24, 12, 0, 1056, 1058, 3, 26, 13, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1056, 1, 0, 0, 0, 1058, 23, 1, 0, 0, 0, 1059, 1060, 3, 202, 101, 0, 1060, 1063, 3, 132, 66, 0, 1061, 1062, 5, 147, 0, 0, 1062, 1064, 5, 148, 0, 0, 1063, 1061, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1067, 1, 0, 0, 0, 1065, 1066, 5, 40, 0, 0, 1066, 1068, 3, 116, 58, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1070, 5, 243, 0, 0, 1070, 1072, 3, 28, 14, 0, 1071, 1069, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 25, 1, 0, 0, 0, 1073, 1074, 5, 122, 0, 0, 1074, 1077, 3, 176, 88, 0, 1075, 1076, 7, 3, 0, 0, 1076, 1078, 5, 175, 0, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 27, 1, 0, 0, 0, 1079, 1080, 5, 1, 0, 0, 1080, 1081, 3, 30, 15, 0, 1081, 1082, 5, 2, 0, 0, 1082, 29, 1, 0, 0, 0, 1083, 1088, 3, 32, 16, 0, 1084, 1085, 5, 3, 0, 0, 1085, 1087, 3, 32, 16, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1090, 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 31, 1, 0, 0, 0, 1090, 1088, 1, 0, 0, 0, 1091, 1092, 3, 212, 106, 0, 1092, 1093, 5, 249, 0, 0, 1093, 1094, 3, 34, 17, 0, 1094, 33, 1, 0, 0, 0, 1095, 1098, 5, 59, 0, 0, 1096, 1098, 3, 102, 51, 0, 1097, 1095, 1, 0, 0, 0, 1097, 1096, 1, 0, 0, 0, 1098, 35, 1, 0, 0, 0, 1099, 1110, 3, 42, 21, 0, 1100, 1101, 5, 158, 0, 0, 1101, 1102, 5, 32, 0, 0, 1102, 1107, 3, 46, 23, 0, 1103, 1104, 5, 3, 0, 0, 1104, 1106, 3, 46, 23, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1109, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1111, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1100, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1117, 1, 0, 0, 0, 1112, 1113, 5, 151, 0, 0, 1113, 1115, 3, 40, 20, 0, 1114, 1116, 7, 4, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1118, 1, 0, 0, 0, 1117, 1112, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1132, 1, 0, 0, 0, 1119, 1120, 5, 123, 0, 0, 1120, 1133, 3, 38, 19, 0, 1121, 1122, 5, 81, 0, 0, 1122, 1124, 7, 5, 0, 0, 1123, 1125, 3, 40, 20, 0, 1124, 1123, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1130, 7, 4, 0, 0, 1127, 1131, 5, 155, 0, 0, 1128, 1129, 5, 243, 0, 0, 1129, 1131, 5, 217, 0, 0, 1130, 1127, 1, 0, 0, 0, 1130, 1128, 1, 0, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1119, 1, 0, 0, 0, 1132, 1121, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 37, 1, 0, 0, 0, 1134, 1137, 5, 20, 0, 0, 1135, 1137, 3, 40, 20, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1135, 1, 0, 0, 0, 1137, 39, 1, 0, 0, 0, 1138, 1139, 7, 6, 0, 0, 1139, 41, 1, 0, 0, 0, 1140, 1141, 6, 21, -1, 0, 1141, 1142, 3, 44, 22, 0, 1142, 1157, 1, 0, 0, 0, 1143, 1144, 10, 2, 0, 0, 1144, 1146, 5, 109, 0, 0, 1145, 1147, 3, 64, 32, 0, 1146, 1145, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1156, 3, 42, 21, 3, 1149, 1150, 10, 1, 0, 0, 1150, 1152, 7, 7, 0, 0, 1151, 1153, 3, 64, 32, 0, 1152, 1151, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1156, 3, 42, 21, 2, 1155, 1143, 1, 0, 0, 0, 1155, 1149, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 43, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1177, 3, 48, 24, 0, 1161, 1162, 5, 212, 0, 0, 1162, 1177, 3, 176, 88, 0, 1163, 1164, 5, 237, 0, 0, 1164, 1169, 3, 102, 51, 0, 1165, 1166, 5, 3, 0, 0, 1166, 1168, 3, 102, 51, 0, 1167, 1165, 1, 0, 0, 0, 1168, 1171, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1177, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1172, 1173, 5, 1, 0, 0, 1173, 1174, 3, 36, 18, 0, 1174, 1175, 5, 2, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1160, 1, 0, 0, 0, 1176, 1161, 1, 0, 0, 0, 1176, 1163, 1, 0, 0, 0, 1176, 1172, 1, 0, 0, 0, 1177, 45, 1, 0, 0, 0, 1178, 1181, 3, 200, 100, 0, 1179, 1181, 3, 102, 51, 0, 1180, 1178, 1, 0, 0, 0, 1180, 1179, 1, 0, 0, 0, 1181, 1183, 1, 0, 0, 0, 1182, 1184, 7, 8, 0, 0, 1183, 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1186, 5, 150, 0, 0, 1186, 1188, 7, 9, 0, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1188, 1, 0, 0, 0, 1188, 47, 1, 0, 0, 0, 1189, 1191, 5, 200, 0, 0, 1190, 1192, 3, 64, 32, 0, 1191, 1190, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1198, 3, 66, 33, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 3, 66, 33, 0, 1196, 1194, 1, 0, 0, 0, 1197, 1200, 1, 0, 0, 0, 1198, 1196, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1210, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1201, 1202, 5, 88, 0, 0, 1202, 1207, 3, 68, 34, 0, 1203, 1204, 5, 3, 0, 0, 1204, 1206, 3, 68, 34, 0, 1205, 1203, 1, 0, 0, 0, 1206, 1209, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1211, 1, 0, 0, 0, 1209, 1207, 1, 0, 0, 0, 1210, 1201, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1214, 1, 0, 0, 0, 1212, 1213, 5, 241, 0, 0, 1213, 1215, 3, 104, 52, 0, 1214, 1212, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1219, 1, 0, 0, 0, 1216, 1217, 5, 96, 0, 0, 1217, 1218, 5, 32, 0, 0, 1218, 1220, 3, 50, 25, 0, 1219, 1216, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1223, 1, 0, 0, 0, 1221, 1222, 5, 99, 0, 0, 1222, 1224, 3, 104, 52, 0, 1223, 1221, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1234, 1, 0, 0, 0, 1225, 1226, 5, 242, 0, 0, 1226, 1231, 3, 58, 29, 0, 1227, 1228, 5, 3, 0, 0, 1228, 1230, 3, 58, 29, 0, 1229, 1227, 1, 0, 0, 0, 1230, 1233, 1, 0, 0, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1235, 1, 0, 0, 0, 1233, 1231, 1, 0, 0, 0, 1234, 1225, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 49, 1, 0, 0, 0, 1236, 1238, 3, 64, 32, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1244, 3, 52, 26, 0, 1240, 1241, 5, 3, 0, 0, 1241, 1243, 3, 52, 26, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1246, 1, 0, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 51, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1247, 1288, 3, 54, 27, 0, 1248, 1249, 5, 191, 0, 0, 1249, 1258, 5, 1, 0, 0, 1250, 1255, 3, 56, 28, 0, 1251, 1252, 5, 3, 0, 0, 1252, 1254, 3, 56, 28, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1257, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1259, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1258, 1250, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1288, 5, 2, 0, 0, 1261, 1262, 5, 46, 0, 0, 1262, 1271, 5, 1, 0, 0, 1263, 1268, 3, 56, 28, 0, 1264, 1265, 5, 3, 0, 0, 1265, 1267, 3, 56, 28, 0, 1266, 1264, 1, 0, 0, 0, 1267, 1270, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1272, 1, 0, 0, 0, 1270, 1268, 1, 0, 0, 0, 1271, 1263, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1288, 5, 2, 0, 0, 1274, 1275, 5, 97, 0, 0, 1275, 1276, 5, 204, 0, 0, 1276, 1277, 5, 1, 0, 0, 1277, 1282, 3, 54, 27, 0, 1278, 1279, 5, 3, 0, 0, 1279, 1281, 3, 54, 27, 0, 1280, 1278, 1, 0, 0, 0, 1281, 1284, 1, 0, 0, 0, 1282, 1280, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1285, 1, 0, 0, 0, 1284, 1282, 1, 0, 0, 0, 1285, 1286, 5, 2, 0, 0, 1286, 1288, 1, 0, 0, 0, 1287, 1247, 1, 0, 0, 0, 1287, 1248, 1, 0, 0, 0, 1287, 1261, 1, 0, 0, 0, 1287, 1274, 1, 0, 0, 0, 1288, 53, 1, 0, 0, 0, 1289, 1298, 5, 1, 0, 0, 1290, 1295, 3, 56, 28, 0, 1291, 1292, 5, 3, 0, 0, 1292, 1294, 3, 56, 28, 0, 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1290, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1303, 5, 2, 0, 0, 1301, 1303, 3, 56, 28, 0, 1302, 1289, 1, 0, 0, 0, 1302, 1301, 1, 0, 0, 0, 1303, 55, 1, 0, 0, 0, 1304, 1307, 3, 200, 100, 0, 1305, 1307, 3, 102, 51, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1305, 1, 0, 0, 0, 1307, 57, 1, 0, 0, 0, 1308, 1309, 3, 212, 106, 0, 1309, 1310, 5, 26, 0, 0, 1310, 1311, 5, 1, 0, 0, 1311, 1312, 3, 60, 30, 0, 1312, 1313, 5, 2, 0, 0, 1313, 59, 1, 0, 0, 0, 1314, 1316, 3, 212, 106, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1327, 1, 0, 0, 0, 1317, 1318, 5, 163, 0, 0, 1318, 1319, 5, 32, 0, 0, 1319, 1324, 3, 102, 51, 0, 1320, 1321, 5, 3, 0, 0, 1321, 1323, 3, 102, 51, 0, 1322, 1320, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1328, 1, 0, 0, 0, 1326, 1324, 1, 0, 0, 0, 1327, 1317, 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1339, 1, 0, 0, 0, 1329, 1330, 5, 158, 0, 0, 1330, 1331, 5, 32, 0, 0, 1331, 1336, 3, 46, 23, 0, 1332, 1333, 5, 3, 0, 0, 1333, 1335, 3, 46, 23, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1329, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1342, 1, 0, 0, 0, 1341, 1343, 3, 146, 73, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 61, 1, 0, 0, 0, 1344, 1346, 3, 212, 106, 0, 1345, 1347, 3, 98, 49, 0, 1346, 1345, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1349, 5, 26, 0, 0, 1349, 1350, 5, 1, 0, 0, 1350, 1351, 3, 18, 9, 0, 1351, 1352, 5, 2, 0, 0, 1352, 63, 1, 0, 0, 0, 1353, 1354, 7, 10, 0, 0, 1354, 65, 1, 0, 0, 0, 1355, 1358, 3, 200, 100, 0, 1356, 1358, 3, 102, 51, 0, 1357, 1355, 1, 0, 0, 0, 1357, 1356, 1, 0, 0, 0, 1358, 1363, 1, 0, 0, 0, 1359, 1361, 5, 26, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1364, 3, 212, 106, 0, 1363, 1360, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1374, 1, 0, 0, 0, 1365, 1366, 3, 110, 55, 0, 1366, 1367, 5, 4, 0, 0, 1367, 1370, 5, 257, 0, 0, 1368, 1369, 5, 26, 0, 0, 1369, 1371, 3, 98, 49, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1374, 1, 0, 0, 0, 1372, 1374, 5, 257, 0, 0, 1373, 1357, 1, 0, 0, 0, 1373, 1365, 1, 0, 0, 0, 1373, 1372, 1, 0, 0, 0, 1374, 67, 1, 0, 0, 0, 1375, 1376, 6, 34, -1, 0, 1376, 1377, 3, 74, 37, 0, 1377, 1396, 1, 0, 0, 0, 1378, 1392, 10, 2, 0, 0, 1379, 1380, 5, 45, 0, 0, 1380, 1381, 5, 116, 0, 0, 1381, 1393, 3, 74, 37, 0, 1382, 1383, 3, 70, 35, 0, 1383, 1384, 5, 116, 0, 0, 1384, 1385, 3, 68, 34, 0, 1385, 1386, 3, 72, 36, 0, 1386, 1393, 1, 0, 0, 0, 1387, 1388, 5, 138, 0, 0, 1388, 1389, 3, 70, 35, 0, 1389, 1390, 5, 116, 0, 0, 1390, 1391, 3, 74, 37, 0, 1391, 1393, 1, 0, 0, 0, 1392, 1379, 1, 0, 0, 0, 1392, 1382, 1, 0, 0, 0, 1392, 1387, 1, 0, 0, 0, 1393, 1395, 1, 0, 0, 0, 1394, 1378, 1, 0, 0, 0, 1395, 1398, 1, 0, 0, 0, 1396, 1394, 1, 0, 0, 0, 1396, 1397, 1, 0, 0, 0, 1397, 69, 1, 0, 0, 0, 1398, 1396, 1, 0, 0, 0, 1399, 1401, 5, 106, 0, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1415, 1, 0, 0, 0, 1402, 1404, 5, 120, 0, 0, 1403, 1405, 5, 160, 0, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1415, 1, 0, 0, 0, 1406, 1408, 5, 187, 0, 0, 1407, 1409, 5, 160, 0, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1415, 1, 0, 0, 0, 1410, 1412, 5, 89, 0, 0, 1411, 1413, 5, 160, 0, 0, 1412, 1411, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1415, 1, 0, 0, 0, 1414, 1400, 1, 0, 0, 0, 1414, 1402, 1, 0, 0, 0, 1414, 1406, 1, 0, 0, 0, 1414, 1410, 1, 0, 0, 0, 1415, 71, 1, 0, 0, 0, 1416, 1417, 5, 153, 0, 0, 1417, 1431, 3, 104, 52, 0, 1418, 1419, 5, 235, 0, 0, 1419, 1420, 5, 1, 0, 0, 1420, 1425, 3, 212, 106, 0, 1421, 1422, 5, 3, 0, 0, 1422, 1424, 3, 212, 106, 0, 1423, 1421, 1, 0, 0, 0, 1424, 1427, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1428, 1, 0, 0, 0, 1427, 1425, 1, 0, 0, 0, 1428, 1429, 5, 2, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1416, 1, 0, 0, 0, 1430, 1418, 1, 0, 0, 0, 1431, 73, 1, 0, 0, 0, 1432, 1439, 3, 78, 39, 0, 1433, 1434, 5, 214, 0, 0, 1434, 1435, 3, 76, 38, 0, 1435, 1436, 5, 1, 0, 0, 1436, 1437, 3, 102, 51, 0, 1437, 1438, 5, 2, 0, 0, 1438, 1440, 1, 0, 0, 0, 1439, 1433, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 75, 1, 0, 0, 0, 1441, 1442, 7, 11, 0, 0, 1442, 77, 1, 0, 0, 0, 1443, 1526, 3, 92, 46, 0, 1444, 1445, 5, 132, 0, 0, 1445, 1456, 5, 1, 0, 0, 1446, 1447, 5, 163, 0, 0, 1447, 1448, 5, 32, 0, 0, 1448, 1453, 3, 102, 51, 0, 1449, 1450, 5, 3, 0, 0, 1450, 1452, 3, 102, 51, 0, 1451, 1449, 1, 0, 0, 0, 1452, 1455, 1, 0, 0, 0, 1453, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1457, 1, 0, 0, 0, 1455, 1453, 1, 0, 0, 0, 1456, 1446, 1, 0, 0, 0, 1456, 1457, 1, 0, 0, 0, 1457, 1468, 1, 0, 0, 0, 1458, 1459, 5, 158, 0, 0, 1459, 1460, 5, 32, 0, 0, 1460, 1465, 3, 46, 23, 0, 1461, 1462, 5, 3, 0, 0, 1462, 1464, 3, 46, 23, 0, 1463, 1461, 1, 0, 0, 0, 1464, 1467, 1, 0, 0, 0, 1465, 1463, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1469, 1, 0, 0, 0, 1467, 1465, 1, 0, 0, 0, 1468, 1458, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 1479, 1, 0, 0, 0, 1470, 1471, 5, 134, 0, 0, 1471, 1476, 3, 80, 40, 0, 1472, 1473, 5, 3, 0, 0, 1473, 1475, 3, 80, 40, 0, 1474, 1472, 1, 0, 0, 0, 1475, 1478, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1480, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1479, 1470, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1482, 1, 0, 0, 0, 1481, 1483, 3, 82, 41, 0, 1482, 1481, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1487, 1, 0, 0, 0, 1484, 1485, 5, 19, 0, 0, 1485, 1486, 5, 129, 0, 0, 1486, 1488, 3, 86, 43, 0, 1487, 1484, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1490, 1, 0, 0, 0, 1489, 1491, 7, 12, 0, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 5, 167, 0, 0, 1493, 1494, 5, 1, 0, 0, 1494, 1495, 3, 152, 76, 0, 1495, 1505, 5, 2, 0, 0, 1496, 1497, 5, 209, 0, 0, 1497, 1502, 3, 88, 44, 0, 1498, 1499, 5, 3, 0, 0, 1499, 1501, 3, 88, 44, 0, 1500, 1498, 1, 0, 0, 0, 1501, 1504, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1506, 1, 0, 0, 0, 1504, 1502, 1, 0, 0, 0, 1505, 1496, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 5, 65, 0, 0, 1508, 1513, 3, 90, 45, 0, 1509, 1510, 5, 3, 0, 0, 1510, 1512, 3, 90, 45, 0, 1511, 1509, 1, 0, 0, 0, 1512, 1515, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1516, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1516, 1524, 5, 2, 0, 0, 1517, 1519, 5, 26, 0, 0, 1518, 1517, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 3, 212, 106, 0, 1521, 1523, 3, 98, 49, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1518, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1527, 1, 0, 0, 0, 1526, 1444, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 79, 1, 0, 0, 0, 1528, 1529, 3, 102, 51, 0, 1529, 1530, 5, 26, 0, 0, 1530, 1531, 3, 212, 106, 0, 1531, 81, 1, 0, 0, 0, 1532, 1533, 5, 154, 0, 0, 1533, 1534, 5, 192, 0, 0, 1534, 1535, 5, 168, 0, 0, 1535, 1544, 5, 129, 0, 0, 1536, 1537, 5, 20, 0, 0, 1537, 1538, 5, 193, 0, 0, 1538, 1539, 5, 168, 0, 0, 1539, 1541, 5, 129, 0, 0, 1540, 1542, 3, 84, 42, 0, 1541, 1540, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1532, 1, 0, 0, 0, 1543, 1536, 1, 0, 0, 0, 1544, 83, 1, 0, 0, 0, 1545, 1546, 5, 205, 0, 0, 1546, 1547, 5, 71, 0, 0, 1547, 1555, 5, 131, 0, 0, 1548, 1549, 5, 152, 0, 0, 1549, 1550, 5, 71, 0, 0, 1550, 1555, 5, 131, 0, 0, 1551, 1552, 5, 243, 0, 0, 1552, 1553, 5, 230, 0, 0, 1553, 1555, 5, 193, 0, 0, 1554, 1545, 1, 0, 0, 0, 1554, 1548, 1, 0, 0, 0, 1554, 1551, 1, 0, 0, 0, 1555, 85, 1, 0, 0, 0, 1556, 1557, 5, 5, 0, 0, 1557, 1558, 5, 220, 0, 0, 1558, 1559, 5, 139, 0, 0, 1559, 1576, 5, 192, 0, 0, 1560, 1561, 5, 5, 0, 0, 1561, 1562, 5, 165, 0, 0, 1562, 1563, 5, 118, 0, 0, 1563, 1576, 5, 192, 0, 0, 1564, 1565, 5, 5, 0, 0, 1565, 1566, 5, 220, 0, 0, 1566, 1567, 5, 84, 0, 0, 1567, 1576, 3, 212, 106, 0, 1568, 1569, 5, 5, 0, 0, 1569, 1570, 5, 220, 0, 0, 1570, 1571, 5, 118, 0, 0, 1571, 1576, 3, 212, 106, 0, 1572, 1573, 5, 5, 0, 0, 1573, 1574, 5, 220, 0, 0, 1574, 1576, 3, 212, 106, 0, 1575, 1556, 1, 0, 0, 0, 1575, 1560, 1, 0, 0, 0, 1575, 1564, 1, 0, 0, 0, 1575, 1568, 1, 0, 0, 0, 1575, 1572, 1, 0, 0, 0, 1576, 87, 1, 0, 0, 0, 1577, 1578, 3, 212, 106, 0, 1578, 1579, 5, 249, 0, 0, 1579, 1580, 5, 1, 0, 0, 1580, 1585, 3, 212, 106, 0, 1581, 1582, 5, 3, 0, 0, 1582, 1584, 3, 212, 106, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1587, 1, 0, 0, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1585, 1, 0, 0, 0, 1588, 1589, 5, 2, 0, 0, 1589, 89, 1, 0, 0, 0, 1590, 1591, 3, 212, 106, 0, 1591, 1592, 5, 26, 0, 0, 1592, 1593, 3, 102, 51, 0, 1593, 91, 1, 0, 0, 0, 1594, 1602, 3, 100, 50, 0, 1595, 1597, 5, 26, 0, 0, 1596, 1595, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1600, 3, 212, 106, 0, 1599, 1601, 3, 98, 49, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1603, 1, 0, 0, 0, 1602, 1596, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 93, 1, 0, 0, 0, 1604, 1605, 5, 1, 0, 0, 1605, 1610, 3, 202, 101, 0, 1606, 1607, 5, 3, 0, 0, 1607, 1609, 3, 202, 101, 0, 1608, 1606, 1, 0, 0, 0, 1609, 1612, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1613, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, 0, 1613, 1614, 5, 2, 0, 0, 1614, 95, 1, 0, 0, 0, 1615, 1616, 5, 1, 0, 0, 1616, 1621, 3, 200, 100, 0, 1617, 1618, 5, 3, 0, 0, 1618, 1620, 3, 200, 100, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1624, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1625, 5, 2, 0, 0, 1625, 97, 1, 0, 0, 0, 1626, 1627, 5, 1, 0, 0, 1627, 1632, 3, 212, 106, 0, 1628, 1629, 5, 3, 0, 0, 1629, 1631, 3, 212, 106, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1635, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1636, 5, 2, 0, 0, 1636, 99, 1, 0, 0, 0, 1637, 1667, 3, 174, 87, 0, 1638, 1639, 5, 1, 0, 0, 1639, 1640, 3, 18, 9, 0, 1640, 1641, 5, 2, 0, 0, 1641, 1667, 1, 0, 0, 0, 1642, 1643, 5, 231, 0, 0, 1643, 1644, 5, 1, 0, 0, 1644, 1649, 3, 102, 51, 0, 1645, 1646, 5, 3, 0, 0, 1646, 1648, 3, 102, 51, 0, 1647, 1645, 1, 0, 0, 0, 1648, 1651, 1, 0, 0, 0, 1649, 1647, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1652, 1, 0, 0, 0, 1651, 1649, 1, 0, 0, 0, 1652, 1655, 5, 2, 0, 0, 1653, 1654, 5, 243, 0, 0, 1654, 1656, 5, 159, 0, 0, 1655, 1653, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1667, 1, 0, 0, 0, 1657, 1658, 5, 119, 0, 0, 1658, 1659, 5, 1, 0, 0, 1659, 1660, 3, 18, 9, 0, 1660, 1661, 5, 2, 0, 0, 1661, 1667, 1, 0, 0, 0, 1662, 1663, 5, 1, 0, 0, 1663, 1664, 3, 68, 34, 0, 1664, 1665, 5, 2, 0, 0, 1665, 1667, 1, 0, 0, 0, 1666, 1637, 1, 0, 0, 0, 1666, 1638, 1, 0, 0, 0, 1666, 1642, 1, 0, 0, 0, 1666, 1657, 1, 0, 0, 0, 1666, 1662, 1, 0, 0, 0, 1667, 101, 1, 0, 0, 0, 1668, 1669, 3, 104, 52, 0, 1669, 103, 1, 0, 0, 0, 1670, 1671, 6, 52, -1, 0, 1671, 1673, 3, 108, 54, 0, 1672, 1674, 3, 106, 53, 0, 1673, 1672, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1678, 1, 0, 0, 0, 1675, 1676, 5, 147, 0, 0, 1676, 1678, 3, 104, 52, 3, 1677, 1670, 1, 0, 0, 0, 1677, 1675, 1, 0, 0, 0, 1678, 1687, 1, 0, 0, 0, 1679, 1680, 10, 2, 0, 0, 1680, 1681, 5, 23, 0, 0, 1681, 1686, 3, 104, 52, 3, 1682, 1683, 10, 1, 0, 0, 1683, 1684, 5, 157, 0, 0, 1684, 1686, 3, 104, 52, 2, 1685, 1679, 1, 0, 0, 0, 1685, 1682, 1, 0, 0, 0, 1686, 1689, 1, 0, 0, 0, 1687, 1685, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 105, 1, 0, 0, 0, 1689, 1687, 1, 0, 0, 0, 1690, 1691, 3, 120, 60, 0, 1691, 1692, 3, 108, 54, 0, 1692, 1752, 1, 0, 0, 0, 1693, 1694, 3, 120, 60, 0, 1694, 1695, 3, 122, 61, 0, 1695, 1696, 5, 1, 0, 0, 1696, 1697, 3, 18, 9, 0, 1697, 1698, 5, 2, 0, 0, 1698, 1752, 1, 0, 0, 0, 1699, 1701, 5, 147, 0, 0, 1700, 1699, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1703, 5, 31, 0, 0, 1703, 1704, 3, 108, 54, 0, 1704, 1705, 5, 23, 0, 0, 1705, 1706, 3, 108, 54, 0, 1706, 1752, 1, 0, 0, 0, 1707, 1709, 5, 147, 0, 0, 1708, 1707, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1711, 5, 103, 0, 0, 1711, 1712, 5, 1, 0, 0, 1712, 1717, 3, 102, 51, 0, 1713, 1714, 5, 3, 0, 0, 1714, 1716, 3, 102, 51, 0, 1715, 1713, 1, 0, 0, 0, 1716, 1719, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1720, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1720, 1721, 5, 2, 0, 0, 1721, 1752, 1, 0, 0, 0, 1722, 1724, 5, 147, 0, 0, 1723, 1722, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1726, 5, 103, 0, 0, 1726, 1727, 5, 1, 0, 0, 1727, 1728, 3, 18, 9, 0, 1728, 1729, 5, 2, 0, 0, 1729, 1752, 1, 0, 0, 0, 1730, 1732, 5, 147, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 5, 122, 0, 0, 1734, 1737, 3, 108, 54, 0, 1735, 1736, 5, 73, 0, 0, 1736, 1738, 3, 108, 54, 0, 1737, 1735, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1752, 1, 0, 0, 0, 1739, 1741, 5, 114, 0, 0, 1740, 1742, 5, 147, 0, 0, 1741, 1740, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1752, 5, 148, 0, 0, 1744, 1746, 5, 114, 0, 0, 1745, 1747, 5, 147, 0, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 5, 66, 0, 0, 1749, 1750, 5, 88, 0, 0, 1750, 1752, 3, 108, 54, 0, 1751, 1690, 1, 0, 0, 0, 1751, 1693, 1, 0, 0, 0, 1751, 1700, 1, 0, 0, 0, 1751, 1708, 1, 0, 0, 0, 1751, 1723, 1, 0, 0, 0, 1751, 1731, 1, 0, 0, 0, 1751, 1739, 1, 0, 0, 0, 1751, 1744, 1, 0, 0, 0, 1752, 107, 1, 0, 0, 0, 1753, 1754, 6, 54, -1, 0, 1754, 1758, 3, 110, 55, 0, 1755, 1756, 7, 13, 0, 0, 1756, 1758, 3, 108, 54, 4, 1757, 1753, 1, 0, 0, 0, 1757, 1755, 1, 0, 0, 0, 1758, 1773, 1, 0, 0, 0, 1759, 1760, 10, 3, 0, 0, 1760, 1761, 7, 14, 0, 0, 1761, 1772, 3, 108, 54, 4, 1762, 1763, 10, 2, 0, 0, 1763, 1764, 7, 13, 0, 0, 1764, 1772, 3, 108, 54, 3, 1765, 1766, 10, 1, 0, 0, 1766, 1767, 5, 260, 0, 0, 1767, 1772, 3, 108, 54, 2, 1768, 1769, 10, 5, 0, 0, 1769, 1770, 5, 28, 0, 0, 1770, 1772, 3, 118, 59, 0, 1771, 1759, 1, 0, 0, 0, 1771, 1762, 1, 0, 0, 0, 1771, 1765, 1, 0, 0, 0, 1771, 1768, 1, 0, 0, 0, 1772, 1775, 1, 0, 0, 0, 1773, 1771, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 109, 1, 0, 0, 0, 1775, 1773, 1, 0, 0, 0, 1776, 1777, 6, 55, -1, 0, 1777, 2026, 5, 148, 0, 0, 1778, 2026, 3, 126, 63, 0, 1779, 1780, 3, 212, 106, 0, 1780, 1781, 3, 116, 58, 0, 1781, 2026, 1, 0, 0, 0, 1782, 1783, 5, 68, 0, 0, 1783, 1784, 5, 172, 0, 0, 1784, 2026, 3, 116, 58, 0, 1785, 2026, 3, 214, 107, 0, 1786, 2026, 3, 124, 62, 0, 1787, 2026, 3, 116, 58, 0, 1788, 2026, 5, 264, 0, 0, 1789, 2026, 5, 261, 0, 0, 1790, 1791, 5, 170, 0, 0, 1791, 1792, 5, 1, 0, 0, 1792, 1793, 3, 108, 54, 0, 1793, 1794, 5, 103, 0, 0, 1794, 1795, 3, 108, 54, 0, 1795, 1796, 5, 2, 0, 0, 1796, 2026, 1, 0, 0, 0, 1797, 1798, 5, 1, 0, 0, 1798, 1801, 3, 102, 51, 0, 1799, 1800, 5, 3, 0, 0, 1800, 1802, 3, 102, 51, 0, 1801, 1799, 1, 0, 0, 0, 1802, 1803, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1806, 5, 2, 0, 0, 1806, 2026, 1, 0, 0, 0, 1807, 1808, 5, 192, 0, 0, 1808, 1809, 5, 1, 0, 0, 1809, 1814, 3, 102, 51, 0, 1810, 1811, 5, 3, 0, 0, 1811, 1813, 3, 102, 51, 0, 1812, 1810, 1, 0, 0, 0, 1813, 1816, 1, 0, 0, 0, 1814, 1812, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1817, 1, 0, 0, 0, 1816, 1814, 1, 0, 0, 0, 1817, 1818, 5, 2, 0, 0, 1818, 2026, 1, 0, 0, 0, 1819, 1820, 3, 198, 99, 0, 1820, 1821, 5, 1, 0, 0, 1821, 1822, 5, 257, 0, 0, 1822, 1824, 5, 2, 0, 0, 1823, 1825, 3, 140, 70, 0, 1824, 1823, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1827, 1, 0, 0, 0, 1826, 1828, 3, 144, 72, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 2026, 1, 0, 0, 0, 1829, 1831, 3, 112, 56, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1833, 3, 198, 99, 0, 1833, 1845, 5, 1, 0, 0, 1834, 1836, 3, 64, 32, 0, 1835, 1834, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 1837, 1, 0, 0, 0, 1837, 1842, 3, 102, 51, 0, 1838, 1839, 5, 3, 0, 0, 1839, 1841, 3, 102, 51, 0, 1840, 1838, 1, 0, 0, 0, 1841, 1844, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1846, 1, 0, 0, 0, 1844, 1842, 1, 0, 0, 0, 1845, 1835, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1857, 1, 0, 0, 0, 1847, 1848, 5, 158, 0, 0, 1848, 1849, 5, 32, 0, 0, 1849, 1854, 3, 46, 23, 0, 1850, 1851, 5, 3, 0, 0, 1851, 1853, 3, 46, 23, 0, 1852, 1850, 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1858, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1847, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1861, 5, 2, 0, 0, 1860, 1862, 3, 140, 70, 0, 1861, 1860, 1, 0, 0, 0, 1861, 1862, 1, 0, 0, 0, 1862, 1867, 1, 0, 0, 0, 1863, 1865, 3, 114, 57, 0, 1864, 1863, 1, 0, 0, 0, 1864, 1865, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1868, 3, 144, 72, 0, 1867, 1864, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 2026, 1, 0, 0, 0, 1869, 1870, 3, 212, 106, 0, 1870, 1871, 3, 144, 72, 0, 1871, 2026, 1, 0, 0, 0, 1872, 1873, 3, 212, 106, 0, 1873, 1874, 5, 6, 0, 0, 1874, 1875, 3, 102, 51, 0, 1875, 2026, 1, 0, 0, 0, 1876, 1885, 5, 1, 0, 0, 1877, 1882, 3, 212, 106, 0, 1878, 1879, 5, 3, 0, 0, 1879, 1881, 3, 212, 106, 0, 1880, 1878, 1, 0, 0, 0, 1881, 1884, 1, 0, 0, 0, 1882, 1880, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1886, 1, 0, 0, 0, 1884, 1882, 1, 0, 0, 0, 1885, 1877, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 1888, 5, 2, 0, 0, 1888, 1889, 5, 6, 0, 0, 1889, 2026, 3, 102, 51, 0, 1890, 1891, 5, 1, 0, 0, 1891, 1892, 3, 18, 9, 0, 1892, 1893, 5, 2, 0, 0, 1893, 2026, 1, 0, 0, 0, 1894, 1895, 5, 77, 0, 0, 1895, 1896, 5, 1, 0, 0, 1896, 1897, 3, 18, 9, 0, 1897, 1898, 5, 2, 0, 0, 1898, 2026, 1, 0, 0, 0, 1899, 1900, 5, 35, 0, 0, 1900, 1902, 3, 102, 51, 0, 1901, 1903, 3, 138, 69, 0, 1902, 1901, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1908, 1, 0, 0, 0, 1906, 1907, 5, 70, 0, 0, 1907, 1909, 3, 102, 51, 0, 1908, 1906, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 1910, 1, 0, 0, 0, 1910, 1911, 5, 72, 0, 0, 1911, 2026, 1, 0, 0, 0, 1912, 1914, 5, 35, 0, 0, 1913, 1915, 3, 138, 69, 0, 1914, 1913, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1920, 1, 0, 0, 0, 1918, 1919, 5, 70, 0, 0, 1919, 1921, 3, 102, 51, 0, 1920, 1918, 1, 0, 0, 0, 1920, 1921, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1923, 5, 72, 0, 0, 1923, 2026, 1, 0, 0, 0, 1924, 1925, 5, 36, 0, 0, 1925, 1926, 5, 1, 0, 0, 1926, 1927, 3, 102, 51, 0, 1927, 1928, 5, 26, 0, 0, 1928, 1929, 3, 132, 66, 0, 1929, 1930, 5, 2, 0, 0, 1930, 2026, 1, 0, 0, 0, 1931, 1932, 5, 224, 0, 0, 1932, 1933, 5, 1, 0, 0, 1933, 1934, 3, 102, 51, 0, 1934, 1935, 5, 26, 0, 0, 1935, 1936, 3, 132, 66, 0, 1936, 1937, 5, 2, 0, 0, 1937, 2026, 1, 0, 0, 0, 1938, 1939, 5, 25, 0, 0, 1939, 1948, 5, 7, 0, 0, 1940, 1945, 3, 102, 51, 0, 1941, 1942, 5, 3, 0, 0, 1942, 1944, 3, 102, 51, 0, 1943, 1941, 1, 0, 0, 0, 1944, 1947, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1949, 1, 0, 0, 0, 1947, 1945, 1, 0, 0, 0, 1948, 1940, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1950, 1, 0, 0, 0, 1950, 2026, 5, 8, 0, 0, 1951, 2026, 3, 212, 106, 0, 1952, 2026, 5, 49, 0, 0, 1953, 1957, 5, 53, 0, 0, 1954, 1955, 5, 1, 0, 0, 1955, 1956, 5, 265, 0, 0, 1956, 1958, 5, 2, 0, 0, 1957, 1954, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 2026, 1, 0, 0, 0, 1959, 1963, 5, 54, 0, 0, 1960, 1961, 5, 1, 0, 0, 1961, 1962, 5, 265, 0, 0, 1962, 1964, 5, 2, 0, 0, 1963, 1960, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 2026, 1, 0, 0, 0, 1965, 1969, 5, 125, 0, 0, 1966, 1967, 5, 1, 0, 0, 1967, 1968, 5, 265, 0, 0, 1968, 1970, 5, 2, 0, 0, 1969, 1966, 1, 0, 0, 0, 1969, 1970, 1, 0, 0, 0, 1970, 2026, 1, 0, 0, 0, 1971, 1975, 5, 126, 0, 0, 1972, 1973, 5, 1, 0, 0, 1973, 1974, 5, 265, 0, 0, 1974, 1976, 5, 2, 0, 0, 1975, 1972, 1, 0, 0, 0, 1975, 1976, 1, 0, 0, 0, 1976, 2026, 1, 0, 0, 0, 1977, 2026, 5, 55, 0, 0, 1978, 2026, 5, 48, 0, 0, 1979, 2026, 5, 52, 0, 0, 1980, 2026, 5, 50, 0, 0, 1981, 1982, 5, 210, 0, 0, 1982, 1983, 5, 1, 0, 0, 1983, 1984, 3, 108, 54, 0, 1984, 1985, 5, 88, 0, 0, 1985, 1988, 3, 108, 54, 0, 1986, 1987, 5, 86, 0, 0, 1987, 1989, 3, 108, 54, 0, 1988, 1986, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 5, 2, 0, 0, 1991, 2026, 1, 0, 0, 0, 1992, 1993, 5, 146, 0, 0, 1993, 1994, 5, 1, 0, 0, 1994, 1997, 3, 108, 54, 0, 1995, 1996, 5, 3, 0, 0, 1996, 1998, 3, 130, 65, 0, 1997, 1995, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2000, 5, 2, 0, 0, 2000, 2026, 1, 0, 0, 0, 2001, 2002, 5, 79, 0, 0, 2002, 2003, 5, 1, 0, 0, 2003, 2004, 3, 212, 106, 0, 2004, 2005, 5, 88, 0, 0, 2005, 2006, 3, 108, 54, 0, 2006, 2007, 5, 2, 0, 0, 2007, 2026, 1, 0, 0, 0, 2008, 2009, 5, 1, 0, 0, 2009, 2010, 3, 102, 51, 0, 2010, 2011, 5, 2, 0, 0, 2011, 2026, 1, 0, 0, 0, 2012, 2013, 5, 97, 0, 0, 2013, 2022, 5, 1, 0, 0, 2014, 2019, 3, 204, 102, 0, 2015, 2016, 5, 3, 0, 0, 2016, 2018, 3, 204, 102, 0, 2017, 2015, 1, 0, 0, 0, 2018, 2021, 1, 0, 0, 0, 2019, 2017, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 2023, 1, 0, 0, 0, 2021, 2019, 1, 0, 0, 0, 2022, 2014, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2026, 5, 2, 0, 0, 2025, 1776, 1, 0, 0, 0, 2025, 1778, 1, 0, 0, 0, 2025, 1779, 1, 0, 0, 0, 2025, 1782, 1, 0, 0, 0, 2025, 1785, 1, 0, 0, 0, 2025, 1786, 1, 0, 0, 0, 2025, 1787, 1, 0, 0, 0, 2025, 1788, 1, 0, 0, 0, 2025, 1789, 1, 0, 0, 0, 2025, 1790, 1, 0, 0, 0, 2025, 1797, 1, 0, 0, 0, 2025, 1807, 1, 0, 0, 0, 2025, 1819, 1, 0, 0, 0, 2025, 1830, 1, 0, 0, 0, 2025, 1869, 1, 0, 0, 0, 2025, 1872, 1, 0, 0, 0, 2025, 1876, 1, 0, 0, 0, 2025, 1890, 1, 0, 0, 0, 2025, 1894, 1, 0, 0, 0, 2025, 1899, 1, 0, 0, 0, 2025, 1912, 1, 0, 0, 0, 2025, 1924, 1, 0, 0, 0, 2025, 1931, 1, 0, 0, 0, 2025, 1938, 1, 0, 0, 0, 2025, 1951, 1, 0, 0, 0, 2025, 1952, 1, 0, 0, 0, 2025, 1953, 1, 0, 0, 0, 2025, 1959, 1, 0, 0, 0, 2025, 1965, 1, 0, 0, 0, 2025, 1971, 1, 0, 0, 0, 2025, 1977, 1, 0, 0, 0, 2025, 1978, 1, 0, 0, 0, 2025, 1979, 1, 0, 0, 0, 2025, 1980, 1, 0, 0, 0, 2025, 1981, 1, 0, 0, 0, 2025, 1992, 1, 0, 0, 0, 2025, 2001, 1, 0, 0, 0, 2025, 2008, 1, 0, 0, 0, 2025, 2012, 1, 0, 0, 0, 2026, 2037, 1, 0, 0, 0, 2027, 2028, 10, 17, 0, 0, 2028, 2029, 5, 7, 0, 0, 2029, 2030, 3, 108, 54, 0, 2030, 2031, 5, 8, 0, 0, 2031, 2036, 1, 0, 0, 0, 2032, 2033, 10, 15, 0, 0, 2033, 2034, 5, 4, 0, 0, 2034, 2036, 3, 212, 106, 0, 2035, 2027, 1, 0, 0, 0, 2035, 2032, 1, 0, 0, 0, 2036, 2039, 1, 0, 0, 0, 2037, 2035, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 111, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2041, 7, 15, 0, 0, 2041, 113, 1, 0, 0, 0, 2042, 2043, 5, 102, 0, 0, 2043, 2047, 5, 150, 0, 0, 2044, 2045, 5, 184, 0, 0, 2045, 2047, 5, 150, 0, 0, 2046, 2042, 1, 0, 0, 0, 2046, 2044, 1, 0, 0, 0, 2047, 115, 1, 0, 0, 0, 2048, 2055, 5, 262, 0, 0, 2049, 2052, 5, 263, 0, 0, 2050, 2051, 5, 226, 0, 0, 2051, 2053, 5, 262, 0, 0, 2052, 2050, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2055, 1, 0, 0, 0, 2054, 2048, 1, 0, 0, 0, 2054, 2049, 1, 0, 0, 0, 2055, 117, 1, 0, 0, 0, 2056, 2057, 5, 218, 0, 0, 2057, 2058, 5, 248, 0, 0, 2058, 2063, 3, 126, 63, 0, 2059, 2060, 5, 218, 0, 0, 2060, 2061, 5, 248, 0, 0, 2061, 2063, 3, 116, 58, 0, 2062, 2056, 1, 0, 0, 0, 2062, 2059, 1, 0, 0, 0, 2063, 119, 1, 0, 0, 0, 2064, 2065, 7, 16, 0, 0, 2065, 121, 1, 0, 0, 0, 2066, 2067, 7, 17, 0, 0, 2067, 123, 1, 0, 0, 0, 2068, 2069, 7, 18, 0, 0, 2069, 125, 1, 0, 0, 0, 2070, 2072, 5, 110, 0, 0, 2071, 2073, 7, 13, 0, 0, 2072, 2071, 1, 0, 0, 0, 2072, 2073, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2075, 3, 116, 58, 0, 2075, 2078, 3, 128, 64, 0, 2076, 2077, 5, 220, 0, 0, 2077, 2079, 3, 128, 64, 0, 2078, 2076, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 127, 1, 0, 0, 0, 2080, 2081, 7, 19, 0, 0, 2081, 129, 1, 0, 0, 0, 2082, 2083, 7, 20, 0, 0, 2083, 131, 1, 0, 0, 0, 2084, 2085, 6, 66, -1, 0, 2085, 2086, 5, 192, 0, 0, 2086, 2087, 5, 1, 0, 0, 2087, 2092, 3, 134, 67, 0, 2088, 2089, 5, 3, 0, 0, 2089, 2091, 3, 134, 67, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2094, 1, 0, 0, 0, 2092, 2090, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2095, 1, 0, 0, 0, 2094, 2092, 1, 0, 0, 0, 2095, 2096, 5, 2, 0, 0, 2096, 2176, 1, 0, 0, 0, 2097, 2098, 5, 110, 0, 0, 2098, 2101, 3, 128, 64, 0, 2099, 2100, 5, 220, 0, 0, 2100, 2102, 3, 128, 64, 0, 2101, 2099, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 2176, 1, 0, 0, 0, 2103, 2108, 5, 219, 0, 0, 2104, 2105, 5, 1, 0, 0, 2105, 2106, 3, 136, 68, 0, 2106, 2107, 5, 2, 0, 0, 2107, 2109, 1, 0, 0, 0, 2108, 2104, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2113, 1, 0, 0, 0, 2110, 2111, 5, 244, 0, 0, 2111, 2112, 5, 218, 0, 0, 2112, 2114, 5, 248, 0, 0, 2113, 2110, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2176, 1, 0, 0, 0, 2115, 2120, 5, 219, 0, 0, 2116, 2117, 5, 1, 0, 0, 2117, 2118, 3, 136, 68, 0, 2118, 2119, 5, 2, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2116, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 5, 243, 0, 0, 2123, 2124, 5, 218, 0, 0, 2124, 2176, 5, 248, 0, 0, 2125, 2130, 5, 218, 0, 0, 2126, 2127, 5, 1, 0, 0, 2127, 2128, 3, 136, 68, 0, 2128, 2129, 5, 2, 0, 0, 2129, 2131, 1, 0, 0, 0, 2130, 2126, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2135, 1, 0, 0, 0, 2132, 2133, 5, 244, 0, 0, 2133, 2134, 5, 218, 0, 0, 2134, 2136, 5, 248, 0, 0, 2135, 2132, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2176, 1, 0, 0, 0, 2137, 2142, 5, 218, 0, 0, 2138, 2139, 5, 1, 0, 0, 2139, 2140, 3, 136, 68, 0, 2140, 2141, 5, 2, 0, 0, 2141, 2143, 1, 0, 0, 0, 2142, 2138, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2145, 5, 243, 0, 0, 2145, 2146, 5, 218, 0, 0, 2146, 2176, 5, 248, 0, 0, 2147, 2148, 5, 68, 0, 0, 2148, 2176, 5, 172, 0, 0, 2149, 2150, 5, 25, 0, 0, 2150, 2151, 5, 251, 0, 0, 2151, 2152, 3, 132, 66, 0, 2152, 2153, 5, 253, 0, 0, 2153, 2176, 1, 0, 0, 0, 2154, 2155, 5, 128, 0, 0, 2155, 2156, 5, 251, 0, 0, 2156, 2157, 3, 132, 66, 0, 2157, 2158, 5, 3, 0, 0, 2158, 2159, 3, 132, 66, 0, 2159, 2160, 5, 253, 0, 0, 2160, 2176, 1, 0, 0, 0, 2161, 2173, 3, 212, 106, 0, 2162, 2163, 5, 1, 0, 0, 2163, 2168, 3, 136, 68, 0, 2164, 2165, 5, 3, 0, 0, 2165, 2167, 3, 136, 68, 0, 2166, 2164, 1, 0, 0, 0, 2167, 2170, 1, 0, 0, 0, 2168, 2166, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2171, 1, 0, 0, 0, 2170, 2168, 1, 0, 0, 0, 2171, 2172, 5, 2, 0, 0, 2172, 2174, 1, 0, 0, 0, 2173, 2162, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2176, 1, 0, 0, 0, 2175, 2084, 1, 0, 0, 0, 2175, 2097, 1, 0, 0, 0, 2175, 2103, 1, 0, 0, 0, 2175, 2115, 1, 0, 0, 0, 2175, 2125, 1, 0, 0, 0, 2175, 2137, 1, 0, 0, 0, 2175, 2147, 1, 0, 0, 0, 2175, 2149, 1, 0, 0, 0, 2175, 2154, 1, 0, 0, 0, 2175, 2161, 1, 0, 0, 0, 2176, 2186, 1, 0, 0, 0, 2177, 2178, 10, 2, 0, 0, 2178, 2182, 5, 25, 0, 0, 2179, 2180, 5, 7, 0, 0, 2180, 2181, 5, 265, 0, 0, 2181, 2183, 5, 8, 0, 0, 2182, 2179, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2185, 1, 0, 0, 0, 2184, 2177, 1, 0, 0, 0, 2185, 2188, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 133, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0, 2189, 2194, 3, 132, 66, 0, 2190, 2191, 3, 212, 106, 0, 2191, 2192, 3, 132, 66, 0, 2192, 2194, 1, 0, 0, 0, 2193, 2189, 1, 0, 0, 0, 2193, 2190, 1, 0, 0, 0, 2194, 135, 1, 0, 0, 0, 2195, 2198, 5, 265, 0, 0, 2196, 2198, 3, 132, 66, 0, 2197, 2195, 1, 0, 0, 0, 2197, 2196, 1, 0, 0, 0, 2198, 137, 1, 0, 0, 0, 2199, 2200, 5, 240, 0, 0, 2200, 2201, 3, 102, 51, 0, 2201, 2202, 5, 216, 0, 0, 2202, 2203, 3, 102, 51, 0, 2203, 139, 1, 0, 0, 0, 2204, 2205, 5, 82, 0, 0, 2205, 2206, 5, 1, 0, 0, 2206, 2207, 5, 241, 0, 0, 2207, 2208, 3, 104, 52, 0, 2208, 2209, 5, 2, 0, 0, 2209, 141, 1, 0, 0, 0, 2210, 2211, 5, 240, 0, 0, 2211, 2214, 5, 130, 0, 0, 2212, 2213, 5, 23, 0, 0, 2213, 2215, 3, 102, 51, 0, 2214, 2212, 1, 0, 0, 0, 2214, 2215, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2217, 5, 216, 0, 0, 2217, 2218, 5, 232, 0, 0, 2218, 2219, 5, 203, 0, 0, 2219, 2220, 3, 212, 106, 0, 2220, 2221, 5, 249, 0, 0, 2221, 2229, 3, 102, 51, 0, 2222, 2223, 5, 3, 0, 0, 2223, 2224, 3, 212, 106, 0, 2224, 2225, 5, 249, 0, 0, 2225, 2226, 3, 102, 51, 0, 2226, 2228, 1, 0, 0, 0, 2227, 2222, 1, 0, 0, 0, 2228, 2231, 1, 0, 0, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2275, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2232, 2233, 5, 240, 0, 0, 2233, 2236, 5, 130, 0, 0, 2234, 2235, 5, 23, 0, 0, 2235, 2237, 3, 102, 51, 0, 2236, 2234, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2239, 5, 216, 0, 0, 2239, 2275, 5, 62, 0, 0, 2240, 2241, 5, 240, 0, 0, 2241, 2242, 5, 147, 0, 0, 2242, 2245, 5, 130, 0, 0, 2243, 2244, 5, 23, 0, 0, 2244, 2246, 3, 102, 51, 0, 2245, 2243, 1, 0, 0, 0, 2245, 2246, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2248, 5, 216, 0, 0, 2248, 2260, 5, 108, 0, 0, 2249, 2250, 5, 1, 0, 0, 2250, 2255, 3, 212, 106, 0, 2251, 2252, 5, 3, 0, 0, 2252, 2254, 3, 212, 106, 0, 2253, 2251, 1, 0, 0, 0, 2254, 2257, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2258, 1, 0, 0, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2259, 5, 2, 0, 0, 2259, 2261, 1, 0, 0, 0, 2260, 2249, 1, 0, 0, 0, 2260, 2261, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2263, 5, 237, 0, 0, 2263, 2264, 5, 1, 0, 0, 2264, 2269, 3, 102, 51, 0, 2265, 2266, 5, 3, 0, 0, 2266, 2268, 3, 102, 51, 0, 2267, 2265, 1, 0, 0, 0, 2268, 2271, 1, 0, 0, 0, 2269, 2267, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2272, 1, 0, 0, 0, 2271, 2269, 1, 0, 0, 0, 2272, 2273, 5, 2, 0, 0, 2273, 2275, 1, 0, 0, 0, 2274, 2210, 1, 0, 0, 0, 2274, 2232, 1, 0, 0, 0, 2274, 2240, 1, 0, 0, 0, 2275, 143, 1, 0, 0, 0, 2276, 2282, 5, 162, 0, 0, 2277, 2283, 3, 212, 106, 0, 2278, 2279, 5, 1, 0, 0, 2279, 2280, 3, 60, 30, 0, 2280, 2281, 5, 2, 0, 0, 2281, 2283, 1, 0, 0, 0, 2282, 2277, 1, 0, 0, 0, 2282, 2278, 1, 0, 0, 0, 2283, 145, 1, 0, 0, 0, 2284, 2285, 5, 134, 0, 0, 2285, 2290, 3, 80, 40, 0, 2286, 2287, 5, 3, 0, 0, 2287, 2289, 3, 80, 40, 0, 2288, 2286, 1, 0, 0, 0, 2289, 2292, 1, 0, 0, 0, 2290, 2288, 1, 0, 0, 0, 2290, 2291, 1, 0, 0, 0, 2291, 2294, 1, 0, 0, 0, 2292, 2290, 1, 0, 0, 0, 2293, 2284, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2299, 3, 148, 74, 0, 2296, 2297, 5, 19, 0, 0, 2297, 2298, 5, 129, 0, 0, 2298, 2300, 3, 86, 43, 0, 2299, 2296, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2302, 1, 0, 0, 0, 2301, 2303, 7, 12, 0, 0, 2302, 2301, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2309, 1, 0, 0, 0, 2304, 2305, 5, 167, 0, 0, 2305, 2306, 5, 1, 0, 0, 2306, 2307, 3, 152, 76, 0, 2307, 2308, 5, 2, 0, 0, 2308, 2310, 1, 0, 0, 0, 2309, 2304, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2320, 1, 0, 0, 0, 2311, 2312, 5, 209, 0, 0, 2312, 2317, 3, 88, 44, 0, 2313, 2314, 5, 3, 0, 0, 2314, 2316, 3, 88, 44, 0, 2315, 2313, 1, 0, 0, 0, 2316, 2319, 1, 0, 0, 0, 2317, 2315, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2321, 1, 0, 0, 0, 2319, 2317, 1, 0, 0, 0, 2320, 2311, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2331, 1, 0, 0, 0, 2322, 2323, 5, 65, 0, 0, 2323, 2328, 3, 90, 45, 0, 2324, 2325, 5, 3, 0, 0, 2325, 2327, 3, 90, 45, 0, 2326, 2324, 1, 0, 0, 0, 2327, 2330, 1, 0, 0, 0, 2328, 2326, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2332, 1, 0, 0, 0, 2330, 2328, 1, 0, 0, 0, 2331, 2322, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 147, 1, 0, 0, 0, 2333, 2334, 5, 176, 0, 0, 2334, 2358, 3, 150, 75, 0, 2335, 2336, 5, 193, 0, 0, 2336, 2358, 3, 150, 75, 0, 2337, 2338, 5, 98, 0, 0, 2338, 2358, 3, 150, 75, 0, 2339, 2340, 5, 176, 0, 0, 2340, 2341, 5, 31, 0, 0, 2341, 2342, 3, 150, 75, 0, 2342, 2343, 5, 23, 0, 0, 2343, 2344, 3, 150, 75, 0, 2344, 2358, 1, 0, 0, 0, 2345, 2346, 5, 193, 0, 0, 2346, 2347, 5, 31, 0, 0, 2347, 2348, 3, 150, 75, 0, 2348, 2349, 5, 23, 0, 0, 2349, 2350, 3, 150, 75, 0, 2350, 2358, 1, 0, 0, 0, 2351, 2352, 5, 98, 0, 0, 2352, 2353, 5, 31, 0, 0, 2353, 2354, 3, 150, 75, 0, 2354, 2355, 5, 23, 0, 0, 2355, 2356, 3, 150, 75, 0, 2356, 2358, 1, 0, 0, 0, 2357, 2333, 1, 0, 0, 0, 2357, 2335, 1, 0, 0, 0, 2357, 2337, 1, 0, 0, 0, 2357, 2339, 1, 0, 0, 0, 2357, 2345, 1, 0, 0, 0, 2357, 2351, 1, 0, 0, 0, 2358, 149, 1, 0, 0, 0, 2359, 2360, 5, 227, 0, 0, 2360, 2369, 5, 171, 0, 0, 2361, 2362, 5, 227, 0, 0, 2362, 2369, 5, 85, 0, 0, 2363, 2364, 5, 47, 0, 0, 2364, 2369, 5, 192, 0, 0, 2365, 2366, 3, 102, 51, 0, 2366, 2367, 7, 21, 0, 0, 2367, 2369, 1, 0, 0, 0, 2368, 2359, 1, 0, 0, 0, 2368, 2361, 1, 0, 0, 0, 2368, 2363, 1, 0, 0, 0, 2368, 2365, 1, 0, 0, 0, 2369, 151, 1, 0, 0, 0, 2370, 2371, 6, 76, -1, 0, 2371, 2373, 3, 154, 77, 0, 2372, 2374, 3, 156, 78, 0, 2373, 2372, 1, 0, 0, 0, 2373, 2374, 1, 0, 0, 0, 2374, 2382, 1, 0, 0, 0, 2375, 2376, 10, 2, 0, 0, 2376, 2381, 3, 152, 76, 3, 2377, 2378, 10, 1, 0, 0, 2378, 2379, 5, 9, 0, 0, 2379, 2381, 3, 152, 76, 2, 2380, 2375, 1, 0, 0, 0, 2380, 2377, 1, 0, 0, 0, 2381, 2384, 1, 0, 0, 0, 2382, 2380, 1, 0, 0, 0, 2382, 2383, 1, 0, 0, 0, 2383, 153, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2385, 2411, 3, 212, 106, 0, 2386, 2387, 5, 1, 0, 0, 2387, 2411, 5, 2, 0, 0, 2388, 2389, 5, 169, 0, 0, 2389, 2390, 5, 1, 0, 0, 2390, 2395, 3, 152, 76, 0, 2391, 2392, 5, 3, 0, 0, 2392, 2394, 3, 152, 76, 0, 2393, 2391, 1, 0, 0, 0, 2394, 2397, 1, 0, 0, 0, 2395, 2393, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2398, 1, 0, 0, 0, 2397, 2395, 1, 0, 0, 0, 2398, 2399, 5, 2, 0, 0, 2399, 2411, 1, 0, 0, 0, 2400, 2401, 5, 1, 0, 0, 2401, 2402, 3, 152, 76, 0, 2402, 2403, 5, 2, 0, 0, 2403, 2411, 1, 0, 0, 0, 2404, 2411, 5, 10, 0, 0, 2405, 2411, 5, 11, 0, 0, 2406, 2407, 5, 12, 0, 0, 2407, 2408, 3, 152, 76, 0, 2408, 2409, 5, 13, 0, 0, 2409, 2411, 1, 0, 0, 0, 2410, 2385, 1, 0, 0, 0, 2410, 2386, 1, 0, 0, 0, 2410, 2388, 1, 0, 0, 0, 2410, 2400, 1, 0, 0, 0, 2410, 2404, 1, 0, 0, 0, 2410, 2405, 1, 0, 0, 0, 2410, 2406, 1, 0, 0, 0, 2411, 155, 1, 0, 0, 0, 2412, 2414, 5, 257, 0, 0, 2413, 2415, 5, 261, 0, 0, 2414, 2413, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2443, 1, 0, 0, 0, 2416, 2418, 5, 255, 0, 0, 2417, 2419, 5, 261, 0, 0, 2418, 2417, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2443, 1, 0, 0, 0, 2420, 2422, 5, 261, 0, 0, 2421, 2423, 5, 261, 0, 0, 2422, 2421, 1, 0, 0, 0, 2422, 2423, 1, 0, 0, 0, 2423, 2443, 1, 0, 0, 0, 2424, 2425, 5, 14, 0, 0, 2425, 2426, 5, 265, 0, 0, 2426, 2428, 5, 15, 0, 0, 2427, 2429, 5, 261, 0, 0, 2428, 2427, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2443, 1, 0, 0, 0, 2430, 2432, 5, 14, 0, 0, 2431, 2433, 5, 265, 0, 0, 2432, 2431, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2436, 5, 3, 0, 0, 2435, 2437, 5, 265, 0, 0, 2436, 2435, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2440, 5, 15, 0, 0, 2439, 2441, 5, 261, 0, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2443, 1, 0, 0, 0, 2442, 2412, 1, 0, 0, 0, 2442, 2416, 1, 0, 0, 0, 2442, 2420, 1, 0, 0, 0, 2442, 2424, 1, 0, 0, 0, 2442, 2430, 1, 0, 0, 0, 2443, 157, 1, 0, 0, 0, 2444, 2445, 3, 212, 106, 0, 2445, 2446, 5, 249, 0, 0, 2446, 2447, 3, 102, 51, 0, 2447, 159, 1, 0, 0, 0, 2448, 2449, 5, 87, 0, 0, 2449, 2453, 7, 22, 0, 0, 2450, 2451, 5, 225, 0, 0, 2451, 2453, 7, 23, 0, 0, 2452, 2448, 1, 0, 0, 0, 2452, 2450, 1, 0, 0, 0, 2453, 161, 1, 0, 0, 0, 2454, 2455, 5, 115, 0, 0, 2455, 2456, 5, 121, 0, 0, 2456, 2460, 3, 164, 82, 0, 2457, 2458, 5, 177, 0, 0, 2458, 2460, 7, 24, 0, 0, 2459, 2454, 1, 0, 0, 0, 2459, 2457, 1, 0, 0, 0, 2460, 163, 1, 0, 0, 0, 2461, 2462, 5, 177, 0, 0, 2462, 2469, 5, 228, 0, 0, 2463, 2464, 5, 177, 0, 0, 2464, 2469, 5, 42, 0, 0, 2465, 2466, 5, 181, 0, 0, 2466, 2469, 5, 177, 0, 0, 2467, 2469, 5, 201, 0, 0, 2468, 2461, 1, 0, 0, 0, 2468, 2463, 1, 0, 0, 0, 2468, 2465, 1, 0, 0, 0, 2468, 2467, 1, 0, 0, 0, 2469, 165, 1, 0, 0, 0, 2470, 2476, 3, 102, 51, 0, 2471, 2472, 3, 212, 106, 0, 2472, 2473, 5, 16, 0, 0, 2473, 2474, 3, 102, 51, 0, 2474, 2476, 1, 0, 0, 0, 2475, 2470, 1, 0, 0, 0, 2475, 2471, 1, 0, 0, 0, 2476, 167, 1, 0, 0, 0, 2477, 2478, 3, 212, 106, 0, 2478, 2479, 5, 4, 0, 0, 2479, 2480, 3, 212, 106, 0, 2480, 2483, 1, 0, 0, 0, 2481, 2483, 3, 212, 106, 0, 2482, 2477, 1, 0, 0, 0, 2482, 2481, 1, 0, 0, 0, 2483, 169, 1, 0, 0, 0, 2484, 2489, 3, 168, 84, 0, 2485, 2486, 5, 3, 0, 0, 2486, 2488, 3, 168, 84, 0, 2487, 2485, 1, 0, 0, 0, 2488, 2491, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 171, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2492, 2493, 7, 25, 0, 0, 2493, 173, 1, 0, 0, 0, 2494, 2497, 3, 176, 88, 0, 2495, 2497, 3, 180, 90, 0, 2496, 2494, 1, 0, 0, 0, 2496, 2495, 1, 0, 0, 0, 2497, 175, 1, 0, 0, 0, 2498, 2499, 3, 184, 92, 0, 2499, 177, 1, 0, 0, 0, 2500, 2501, 3, 184, 92, 0, 2501, 179, 1, 0, 0, 0, 2502, 2503, 3, 186, 93, 0, 2503, 181, 1, 0, 0, 0, 2504, 2505, 3, 186, 93, 0, 2505, 183, 1, 0, 0, 0, 2506, 2518, 3, 212, 106, 0, 2507, 2508, 3, 212, 106, 0, 2508, 2509, 5, 4, 0, 0, 2509, 2510, 3, 212, 106, 0, 2510, 2518, 1, 0, 0, 0, 2511, 2512, 3, 212, 106, 0, 2512, 2513, 5, 4, 0, 0, 2513, 2514, 3, 212, 106, 0, 2514, 2515, 5, 4, 0, 0, 2515, 2516, 3, 212, 106, 0, 2516, 2518, 1, 0, 0, 0, 2517, 2506, 1, 0, 0, 0, 2517, 2507, 1, 0, 0, 0, 2517, 2511, 1, 0, 0, 0, 2518, 185, 1, 0, 0, 0, 2519, 2531, 3, 212, 106, 0, 2520, 2521, 3, 212, 106, 0, 2521, 2522, 5, 4, 0, 0, 2522, 2523, 3, 212, 106, 0, 2523, 2531, 1, 0, 0, 0, 2524, 2525, 3, 212, 106, 0, 2525, 2526, 5, 4, 0, 0, 2526, 2527, 3, 212, 106, 0, 2527, 2528, 5, 4, 0, 0, 2528, 2529, 3, 212, 106, 0, 2529, 2531, 1, 0, 0, 0, 2530, 2519, 1, 0, 0, 0, 2530, 2520, 1, 0, 0, 0, 2530, 2524, 1, 0, 0, 0, 2531, 187, 1, 0, 0, 0, 2532, 2533, 3, 192, 96, 0, 2533, 189, 1, 0, 0, 0, 2534, 2535, 3, 192, 96, 0, 2535, 191, 1, 0, 0, 0, 2536, 2542, 3, 212, 106, 0, 2537, 2538, 3, 212, 106, 0, 2538, 2539, 5, 4, 0, 0, 2539, 2540, 3, 212, 106, 0, 2540, 2542, 1, 0, 0, 0, 2541, 2536, 1, 0, 0, 0, 2541, 2537, 1, 0, 0, 0, 2542, 193, 1, 0, 0, 0, 2543, 2544, 3, 212, 106, 0, 2544, 195, 1, 0, 0, 0, 2545, 2546, 3, 212, 106, 0, 2546, 197, 1, 0, 0, 0, 2547, 2548, 3, 204, 102, 0, 2548, 199, 1, 0, 0, 0, 2549, 2552, 3, 204, 102, 0, 2550, 2552, 4, 100, 14, 0, 2551, 2549, 1, 0, 0, 0, 2551, 2550, 1, 0, 0, 0, 2552, 201, 1, 0, 0, 0, 2553, 2554, 3, 212, 106, 0, 2554, 203, 1, 0, 0, 0, 2555, 2560, 3, 212, 106, 0, 2556, 2557, 5, 4, 0, 0, 2557, 2559, 3, 212, 106, 0, 2558, 2556, 1, 0, 0, 0, 2559, 2562, 1, 0, 0, 0, 2560, 2558, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 205, 1, 0, 0, 0, 2562, 2560, 1, 0, 0, 0, 2563, 2567, 3, 208, 104, 0, 2564, 2567, 5, 55, 0, 0, 2565, 2567, 5, 51, 0, 0, 2566, 2563, 1, 0, 0, 0, 2566, 2564, 1, 0, 0, 0, 2566, 2565, 1, 0, 0, 0, 2567, 207, 1, 0, 0, 0, 2568, 2574, 3, 212, 106, 0, 2569, 2570, 5, 234, 0, 0, 2570, 2574, 3, 212, 106, 0, 2571, 2572, 5, 188, 0, 0, 2572, 2574, 3, 212, 106, 0, 2573, 2568, 1, 0, 0, 0, 2573, 2569, 1, 0, 0, 0, 2573, 2571, 1, 0, 0, 0, 2574, 209, 1, 0, 0, 0, 2575, 2580, 3, 212, 106, 0, 2576, 2577, 5, 3, 0, 0, 2577, 2579, 3, 212, 106, 0, 2578, 2576, 1, 0, 0, 0, 2579, 2582, 1, 0, 0, 0, 2580, 2578, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 211, 1, 0, 0, 0, 2582, 2580, 1, 0, 0, 0, 2583, 2589, 5, 268, 0, 0, 2584, 2589, 5, 270, 0, 0, 2585, 2589, 3, 216, 108, 0, 2586, 2589, 5, 271, 0, 0, 2587, 2589, 5, 269, 0, 0, 2588, 2583, 1, 0, 0, 0, 2588, 2584, 1, 0, 0, 0, 2588, 2585, 1, 0, 0, 0, 2588, 2586, 1, 0, 0, 0, 2588, 2587, 1, 0, 0, 0, 2589, 213, 1, 0, 0, 0, 2590, 2592, 5, 256, 0, 0, 2591, 2590, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593, 2603, 5, 266, 0, 0, 2594, 2596, 5, 256, 0, 0, 2595, 2594, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2597, 1, 0, 0, 0, 2597, 2603, 5, 267, 0, 0, 2598, 2600, 5, 256, 0, 0, 2599, 2598, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2603, 5, 265, 0, 0, 2602, 2591, 1, 0, 0, 0, 2602, 2595, 1, 0, 0, 0, 2602, 2599, 1, 0, 0, 0, 2603, 215, 1, 0, 0, 0, 2604, 2605, 7, 26, 0, 0, 2605, 217, 1, 0, 0, 0, 340, 221, 232, 236, 240, 244, 248, 252, 262, 267, 271, 277, 281, 302, 306, 310, 314, 322, 326, 329, 336, 345, 351, 355, 361, 368, 377, 386, 400, 409, 415, 422, 432, 439, 447, 455, 484, 487, 490, 494, 500, 505, 512, 517, 521, 529, 535, 539, 553, 561, 580, 605, 608, 618, 622, 635, 641, 646, 650, 656, 665, 671, 675, 682, 686, 694, 699, 703, 707, 710, 717, 725, 730, 734, 738, 741, 750, 757, 762, 766, 770, 773, 781, 784, 788, 791, 799, 804, 828, 834, 836, 842, 848, 850, 858, 860, 866, 872, 874, 889, 894, 901, 913, 915, 923, 925, 943, 946, 950, 954, 972, 975, 991, 1001, 1006, 1012, 1015, 1024, 1036, 1039, 1045, 1052, 1057, 1063, 1067, 1071, 1077, 1088, 1097, 1107, 1110, 1115, 1117, 1124, 1130, 1132, 1136, 1146, 1152, 1155, 1157, 1169, 1176, 1180, 1183, 1187, 1191, 1198, 1207, 1210, 1214, 1219, 1223, 1231, 1234, 1237, 1244, 1255, 1258, 1268, 1271, 1282, 1287, 1295, 1298, 1302, 1306, 1315, 1324, 1327, 1336, 1339, 1342, 1346, 1357, 1360, 1363, 1370, 1373, 1392, 1396, 1400, 1404, 1408, 1412, 1414, 1425, 1430, 1439, 1453, 1456, 1465, 1468, 1476, 1479, 1482, 1487, 1490, 1502, 1505, 1513, 1518, 1522, 1524, 1526, 1541, 1543, 1554, 1575, 1585, 1596, 1600, 1602, 1610, 1621, 1632, 1649, 1655, 1666, 1673, 1677, 1685, 1687, 1700, 1708, 1717, 1723, 1731, 1737, 1741, 1746, 1751, 1757, 1771, 1773, 1803, 1814, 1824, 1827, 1830, 1835, 1842, 1845, 1854, 1857, 1861, 1864, 1867, 1882, 1885, 1904, 1908, 1916, 1920, 1945, 1948, 1957, 1963, 1969, 1975, 1988, 1997, 2019, 2022, 2025, 2035, 2037, 2046, 2052, 2054, 2062, 2072, 2078, 2092, 2101, 2108, 2113, 2120, 2130, 2135, 2142, 2168, 2173, 2175, 2182, 2186, 2193, 2197, 2214, 2229, 2236, 2245, 2255, 2260, 2269, 2274, 2282, 2290, 2293, 2299, 2302, 2309, 2317, 2320, 2328, 2331, 2357, 2368, 2373, 2380, 2382, 2395, 2410, 2414, 2418, 2422, 2428, 2432, 2436, 2440, 2442, 2452, 2459, 2468, 2475, 2482, 2489, 2496, 2517, 2530, 2541, 2551, 2560, 2566, 2573, 2580, 2588, 2591, 2595, 2599, 2602] \ No newline at end of file +[4, 1, 340, 3690, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 1, 0, 5, 0, 304, 8, 0, 10, 0, 12, 0, 307, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 315, 8, 2, 1, 3, 1, 3, 3, 3, 319, 8, 3, 1, 4, 1, 4, 3, 4, 323, 8, 4, 1, 5, 1, 5, 3, 5, 327, 8, 5, 1, 6, 1, 6, 3, 6, 331, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 344, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 351, 8, 8, 1, 8, 1, 8, 3, 8, 355, 8, 8, 1, 8, 1, 8, 3, 8, 359, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 365, 8, 8, 1, 8, 1, 8, 3, 8, 369, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 376, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 381, 8, 8, 1, 8, 1, 8, 3, 8, 385, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 391, 8, 8, 1, 8, 1, 8, 3, 8, 395, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 414, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 420, 8, 8, 1, 8, 1, 8, 3, 8, 424, 8, 8, 1, 8, 1, 8, 3, 8, 428, 8, 8, 1, 8, 1, 8, 3, 8, 432, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 440, 8, 8, 1, 8, 1, 8, 3, 8, 444, 8, 8, 1, 8, 3, 8, 447, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 452, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 458, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 465, 8, 8, 10, 8, 12, 8, 468, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 473, 8, 8, 1, 8, 1, 8, 3, 8, 477, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 483, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 490, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 499, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 511, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 520, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 529, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 535, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 546, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 554, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 562, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 569, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 579, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 586, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 594, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 609, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 642, 8, 8, 10, 8, 12, 8, 645, 9, 8, 3, 8, 647, 8, 8, 1, 8, 3, 8, 650, 8, 8, 1, 8, 1, 8, 3, 8, 654, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 660, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 665, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 672, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 678, 8, 8, 1, 8, 1, 8, 3, 8, 682, 8, 8, 1, 8, 1, 8, 3, 8, 686, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 694, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 700, 8, 8, 1, 8, 1, 8, 3, 8, 704, 8, 8, 1, 8, 1, 8, 3, 8, 708, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 722, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 730, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 749, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 772, 8, 8, 10, 8, 12, 8, 775, 9, 8, 3, 8, 777, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 784, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 791, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 800, 8, 8, 1, 8, 1, 8, 3, 8, 804, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 811, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 817, 8, 8, 10, 8, 12, 8, 820, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 826, 8, 8, 10, 8, 12, 8, 829, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 834, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 839, 8, 8, 1, 8, 1, 8, 3, 8, 843, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 849, 8, 8, 10, 8, 12, 8, 852, 9, 8, 1, 8, 1, 8, 3, 8, 856, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 865, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 871, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 876, 8, 8, 10, 8, 12, 8, 879, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 885, 8, 8, 10, 8, 12, 8, 888, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 893, 8, 8, 1, 8, 1, 8, 3, 8, 897, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 903, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 908, 8, 8, 10, 8, 12, 8, 911, 9, 8, 1, 8, 1, 8, 3, 8, 915, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 926, 8, 8, 10, 8, 12, 8, 929, 9, 8, 1, 8, 1, 8, 3, 8, 933, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 945, 8, 8, 1, 8, 1, 8, 3, 8, 949, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 955, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 962, 8, 8, 10, 8, 12, 8, 965, 9, 8, 1, 8, 1, 8, 3, 8, 969, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 975, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1003, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1009, 8, 8, 3, 8, 1011, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1017, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1023, 8, 8, 3, 8, 1025, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1033, 8, 8, 3, 8, 1035, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1045, 8, 8, 3, 8, 1047, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1062, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1067, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1074, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1084, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1090, 8, 8, 3, 8, 1092, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1100, 8, 8, 3, 8, 1102, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1125, 8, 8, 10, 8, 12, 8, 1128, 9, 8, 3, 8, 1130, 8, 8, 1, 8, 1, 8, 3, 8, 1134, 8, 8, 1, 8, 1, 8, 3, 8, 1138, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1154, 8, 8, 10, 8, 12, 8, 1157, 9, 8, 3, 8, 1159, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1168, 8, 8, 10, 8, 12, 8, 1171, 9, 8, 3, 8, 1173, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1189, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1197, 8, 8, 10, 8, 12, 8, 1200, 9, 8, 1, 8, 1, 8, 3, 8, 1204, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1210, 8, 8, 1, 8, 3, 8, 1213, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1220, 8, 8, 11, 8, 12, 8, 1221, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1234, 8, 8, 1, 9, 3, 9, 1237, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1245, 8, 10, 10, 10, 12, 10, 1248, 9, 10, 1, 11, 3, 11, 1251, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 1257, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 1262, 8, 12, 10, 12, 12, 12, 1265, 9, 12, 1, 13, 1, 13, 3, 13, 1269, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1275, 8, 14, 1, 14, 1, 14, 3, 14, 1279, 8, 14, 1, 14, 1, 14, 3, 14, 1283, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1289, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 1298, 8, 17, 10, 17, 12, 17, 1301, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 1309, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 1317, 8, 20, 10, 20, 12, 20, 1320, 9, 20, 3, 20, 1322, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1327, 8, 20, 3, 20, 1329, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1336, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1342, 8, 20, 3, 20, 1344, 8, 20, 1, 21, 1, 21, 3, 21, 1348, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1358, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1364, 8, 23, 1, 23, 5, 23, 1367, 8, 23, 10, 23, 12, 23, 1370, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1379, 8, 24, 10, 24, 12, 24, 1382, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1388, 8, 24, 1, 25, 1, 25, 3, 25, 1392, 8, 25, 1, 25, 3, 25, 1395, 8, 25, 1, 25, 1, 25, 3, 25, 1399, 8, 25, 1, 26, 1, 26, 3, 26, 1403, 8, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1408, 8, 26, 10, 26, 12, 26, 1411, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1417, 8, 26, 10, 26, 12, 26, 1420, 9, 26, 3, 26, 1422, 8, 26, 1, 26, 1, 26, 3, 26, 1426, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1431, 8, 26, 1, 26, 1, 26, 3, 26, 1435, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1441, 8, 26, 10, 26, 12, 26, 1444, 9, 26, 3, 26, 1446, 8, 26, 1, 27, 3, 27, 1449, 8, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1454, 8, 27, 10, 27, 12, 27, 1457, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 1465, 8, 28, 10, 28, 12, 28, 1468, 9, 28, 3, 28, 1470, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 1478, 8, 28, 10, 28, 12, 28, 1481, 9, 28, 3, 28, 1483, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 1492, 8, 28, 10, 28, 12, 28, 1495, 9, 28, 1, 28, 1, 28, 3, 28, 1499, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1505, 8, 29, 10, 29, 12, 29, 1508, 9, 29, 3, 29, 1510, 8, 29, 1, 29, 1, 29, 3, 29, 1514, 8, 29, 1, 30, 1, 30, 3, 30, 1518, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 3, 32, 1527, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1534, 8, 32, 10, 32, 12, 32, 1537, 9, 32, 3, 32, 1539, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1546, 8, 32, 10, 32, 12, 32, 1549, 9, 32, 3, 32, 1551, 8, 32, 1, 32, 3, 32, 1554, 8, 32, 1, 33, 1, 33, 3, 33, 1558, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 1569, 8, 35, 1, 35, 3, 35, 1572, 8, 35, 1, 35, 3, 35, 1575, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1582, 8, 35, 1, 35, 3, 35, 1585, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1604, 8, 36, 5, 36, 1606, 8, 36, 10, 36, 12, 36, 1609, 9, 36, 1, 37, 3, 37, 1612, 8, 37, 1, 37, 1, 37, 3, 37, 1616, 8, 37, 1, 37, 1, 37, 3, 37, 1620, 8, 37, 1, 37, 1, 37, 3, 37, 1624, 8, 37, 3, 37, 1626, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 1635, 8, 38, 10, 38, 12, 38, 1638, 9, 38, 1, 38, 1, 38, 3, 38, 1642, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1651, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1660, 8, 42, 1, 42, 3, 42, 1663, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1669, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1679, 8, 44, 10, 44, 12, 44, 1682, 9, 44, 3, 44, 1684, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1691, 8, 44, 10, 44, 12, 44, 1694, 9, 44, 3, 44, 1696, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1702, 8, 44, 10, 44, 12, 44, 1705, 9, 44, 3, 44, 1707, 8, 44, 1, 44, 3, 44, 1710, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1715, 8, 44, 1, 44, 3, 44, 1718, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1728, 8, 44, 10, 44, 12, 44, 1731, 9, 44, 3, 44, 1733, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1739, 8, 44, 10, 44, 12, 44, 1742, 9, 44, 1, 44, 1, 44, 3, 44, 1746, 8, 44, 1, 44, 1, 44, 3, 44, 1750, 8, 44, 3, 44, 1752, 8, 44, 3, 44, 1754, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1769, 8, 46, 3, 46, 1771, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1782, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1803, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1811, 8, 49, 10, 49, 12, 49, 1814, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 1824, 8, 51, 1, 51, 1, 51, 3, 51, 1828, 8, 51, 3, 51, 1830, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1836, 8, 52, 10, 52, 12, 52, 1839, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1847, 8, 53, 10, 53, 12, 53, 1850, 9, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1858, 8, 54, 10, 54, 12, 54, 1861, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1867, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1878, 8, 55, 10, 55, 12, 55, 1881, 9, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1886, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1910, 8, 55, 10, 55, 12, 55, 1913, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1927, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1932, 8, 55, 1, 55, 1, 55, 3, 55, 1936, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1946, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1952, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1958, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1966, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1971, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1978, 8, 56, 3, 56, 1980, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1986, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1992, 8, 56, 1, 56, 1, 56, 3, 56, 1996, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2001, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 2008, 8, 56, 10, 56, 12, 56, 2011, 9, 56, 1, 56, 1, 56, 3, 56, 2015, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 2027, 8, 57, 10, 57, 12, 57, 2030, 9, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 2037, 8, 57, 10, 57, 12, 57, 2040, 9, 57, 3, 57, 2042, 8, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2051, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 2056, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2061, 8, 60, 3, 60, 2063, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 2070, 8, 61, 10, 61, 12, 61, 2073, 9, 61, 3, 61, 2075, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 2081, 8, 61, 10, 61, 12, 61, 2084, 9, 61, 3, 61, 2086, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 3, 62, 2093, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2098, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 2107, 8, 63, 10, 63, 12, 63, 2110, 9, 63, 3, 63, 2112, 8, 63, 1, 63, 1, 63, 3, 63, 2116, 8, 63, 3, 63, 2118, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2126, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 2134, 8, 63, 10, 63, 12, 63, 2137, 9, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2142, 8, 63, 3, 63, 2144, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2151, 8, 64, 1, 64, 1, 64, 3, 64, 2155, 8, 64, 3, 64, 2157, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2164, 8, 64, 1, 64, 1, 64, 3, 64, 2168, 8, 64, 3, 64, 2170, 8, 64, 3, 64, 2172, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 2179, 8, 65, 10, 65, 12, 65, 2182, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 2192, 8, 65, 1, 66, 1, 66, 3, 66, 2196, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 2204, 8, 67, 10, 67, 12, 67, 2207, 9, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2216, 8, 69, 1, 69, 1, 69, 3, 69, 2220, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 2228, 8, 69, 10, 69, 12, 69, 2231, 9, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2243, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2251, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2258, 8, 70, 10, 70, 12, 70, 2261, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2266, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2274, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2280, 8, 70, 1, 70, 1, 70, 3, 70, 2284, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2289, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2294, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2300, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2314, 8, 71, 10, 71, 12, 71, 2317, 9, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 4, 72, 2344, 8, 72, 11, 72, 12, 72, 2345, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2355, 8, 72, 10, 72, 12, 72, 2358, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2365, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2370, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2375, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2386, 8, 72, 10, 72, 12, 72, 2389, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2394, 8, 72, 1, 72, 3, 72, 2397, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2404, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2409, 8, 72, 1, 72, 3, 72, 2412, 8, 72, 1, 72, 3, 72, 2415, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2420, 8, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2425, 8, 72, 10, 72, 12, 72, 2428, 9, 72, 3, 72, 2430, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2437, 8, 72, 10, 72, 12, 72, 2440, 9, 72, 3, 72, 2442, 8, 72, 1, 72, 1, 72, 3, 72, 2446, 8, 72, 1, 72, 3, 72, 2449, 8, 72, 1, 72, 3, 72, 2452, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2465, 8, 72, 10, 72, 12, 72, 2468, 9, 72, 3, 72, 2470, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 4, 72, 2487, 8, 72, 11, 72, 12, 72, 2488, 1, 72, 1, 72, 3, 72, 2493, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 4, 72, 2499, 8, 72, 11, 72, 12, 72, 2500, 1, 72, 1, 72, 3, 72, 2505, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2528, 8, 72, 10, 72, 12, 72, 2531, 9, 72, 3, 72, 2533, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2542, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2548, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2554, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2560, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2569, 8, 72, 1, 72, 3, 72, 2572, 8, 72, 1, 72, 3, 72, 2575, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2594, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2603, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2623, 8, 72, 10, 72, 12, 72, 2626, 9, 72, 3, 72, 2628, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2638, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2647, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2653, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2659, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2670, 8, 72, 3, 72, 2672, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2677, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2684, 8, 72, 3, 72, 2686, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2692, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2698, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2707, 8, 72, 10, 72, 12, 72, 2710, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2718, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2723, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2728, 8, 72, 3, 72, 2730, 8, 72, 3, 72, 2732, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2738, 8, 72, 3, 72, 2740, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2748, 8, 72, 10, 72, 12, 72, 2751, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2759, 8, 72, 3, 72, 2761, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2767, 8, 72, 3, 72, 2769, 8, 72, 1, 72, 3, 72, 2772, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2782, 8, 72, 10, 72, 12, 72, 2785, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2792, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2798, 8, 73, 10, 73, 12, 73, 2801, 9, 73, 3, 73, 2803, 8, 73, 1, 74, 1, 74, 1, 74, 3, 74, 2808, 8, 74, 1, 75, 1, 75, 1, 75, 3, 75, 2813, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 2825, 8, 78, 1, 79, 1, 79, 3, 79, 2829, 8, 79, 1, 79, 1, 79, 3, 79, 2833, 8, 79, 1, 79, 3, 79, 2836, 8, 79, 3, 79, 2838, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2846, 8, 80, 1, 81, 3, 81, 2849, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2859, 8, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2867, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2873, 8, 84, 3, 84, 2875, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2883, 8, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 3, 89, 2893, 8, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2899, 8, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 2911, 8, 92, 10, 92, 12, 92, 2914, 9, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2922, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2929, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2934, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2941, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2951, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2956, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2963, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 2987, 8, 92, 10, 92, 12, 92, 2990, 9, 92, 1, 92, 1, 92, 3, 92, 2994, 8, 92, 3, 92, 2996, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 3003, 8, 92, 5, 92, 3005, 8, 92, 10, 92, 12, 92, 3008, 9, 92, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 3014, 8, 93, 1, 94, 1, 94, 3, 94, 3018, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 3035, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 3048, 8, 97, 10, 97, 12, 97, 3051, 9, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 3057, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 3066, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 3074, 8, 97, 10, 97, 12, 97, 3077, 9, 97, 1, 97, 1, 97, 3, 97, 3081, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 3088, 8, 97, 10, 97, 12, 97, 3091, 9, 97, 1, 97, 1, 97, 3, 97, 3095, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3103, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3109, 8, 99, 10, 99, 12, 99, 3112, 9, 99, 3, 99, 3114, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3120, 8, 99, 1, 99, 3, 99, 3123, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3130, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3136, 8, 99, 10, 99, 12, 99, 3139, 9, 99, 3, 99, 3141, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3147, 8, 99, 10, 99, 12, 99, 3150, 9, 99, 3, 99, 3152, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3178, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3189, 8, 101, 1, 102, 1, 102, 1, 102, 3, 102, 3194, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3201, 8, 102, 10, 102, 12, 102, 3204, 9, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 3214, 8, 103, 10, 103, 12, 103, 3217, 9, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 3231, 8, 103, 1, 104, 1, 104, 3, 104, 3235, 8, 104, 1, 104, 1, 104, 3, 104, 3239, 8, 104, 1, 104, 1, 104, 3, 104, 3243, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3249, 8, 104, 1, 104, 1, 104, 3, 104, 3253, 8, 104, 1, 104, 1, 104, 3, 104, 3257, 8, 104, 1, 104, 1, 104, 3, 104, 3261, 8, 104, 3, 104, 3263, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 3273, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3280, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 3289, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3296, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 3303, 8, 110, 1, 111, 1, 111, 1, 111, 5, 111, 3308, 8, 111, 10, 111, 12, 111, 3311, 9, 111, 1, 112, 1, 112, 1, 112, 1, 112, 5, 112, 3317, 8, 112, 10, 112, 12, 112, 3320, 9, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 3329, 8, 113, 10, 113, 12, 113, 3332, 9, 113, 3, 113, 3334, 8, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 3343, 8, 114, 10, 114, 12, 114, 3346, 9, 114, 3, 114, 3348, 8, 114, 1, 114, 1, 114, 1, 115, 3, 115, 3353, 8, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 3, 117, 3363, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3379, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 4, 118, 3391, 8, 118, 11, 118, 12, 118, 3392, 1, 118, 3, 118, 3396, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 4, 118, 3403, 8, 118, 11, 118, 12, 118, 3404, 1, 118, 3, 118, 3408, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 3418, 8, 118, 10, 118, 12, 118, 3421, 9, 118, 1, 118, 3, 118, 3424, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 3437, 8, 118, 10, 118, 12, 118, 3440, 9, 118, 1, 118, 3, 118, 3443, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3449, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3459, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3471, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3480, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 5, 122, 3499, 8, 122, 10, 122, 12, 122, 3502, 9, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3507, 8, 122, 1, 123, 1, 123, 1, 123, 4, 123, 3512, 8, 123, 11, 123, 12, 123, 3513, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3522, 8, 124, 1, 125, 1, 125, 1, 125, 3, 125, 3527, 8, 125, 1, 126, 3, 126, 3530, 8, 126, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 3536, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3549, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3562, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3575, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3588, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3595, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3602, 8, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 3614, 8, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 5, 140, 3621, 8, 140, 10, 140, 12, 140, 3624, 9, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3637, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3644, 8, 144, 1, 145, 1, 145, 1, 145, 5, 145, 3649, 8, 145, 10, 145, 12, 145, 3652, 9, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3661, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3668, 8, 147, 1, 148, 3, 148, 3671, 8, 148, 1, 148, 1, 148, 3, 148, 3675, 8, 148, 1, 148, 1, 148, 3, 148, 3679, 8, 148, 1, 148, 3, 148, 3682, 8, 148, 1, 149, 1, 149, 3, 149, 3686, 8, 149, 1, 150, 1, 150, 1, 150, 0, 7, 46, 72, 138, 142, 144, 184, 204, 151, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 0, 35, 2, 0, 39, 39, 229, 229, 2, 0, 72, 72, 131, 131, 2, 0, 105, 105, 122, 122, 2, 0, 92, 92, 123, 123, 1, 0, 239, 240, 2, 0, 101, 101, 174, 174, 2, 0, 324, 324, 329, 329, 2, 0, 91, 91, 281, 281, 2, 0, 29, 29, 75, 75, 2, 0, 101, 101, 148, 148, 2, 0, 22, 22, 79, 79, 2, 0, 33, 33, 259, 259, 3, 0, 35, 35, 150, 150, 270, 270, 2, 0, 124, 124, 247, 247, 2, 0, 85, 85, 89, 89, 2, 0, 144, 144, 189, 189, 2, 0, 125, 125, 197, 197, 2, 0, 54, 54, 281, 281, 1, 0, 318, 319, 1, 0, 320, 322, 1, 0, 291, 293, 4, 0, 89, 89, 97, 97, 273, 273, 283, 283, 2, 0, 49, 49, 280, 280, 2, 0, 100, 100, 241, 241, 1, 0, 312, 317, 3, 0, 22, 22, 26, 26, 254, 254, 2, 0, 97, 97, 273, 273, 5, 0, 67, 67, 118, 118, 170, 171, 245, 245, 310, 310, 1, 0, 175, 178, 2, 0, 102, 102, 212, 212, 3, 0, 113, 113, 137, 137, 263, 263, 4, 0, 80, 80, 132, 132, 160, 160, 294, 294, 2, 0, 192, 192, 309, 309, 2, 0, 268, 268, 298, 298, 54, 0, 18, 22, 24, 24, 26, 27, 29, 33, 35, 35, 37, 39, 42, 49, 51, 52, 56, 56, 65, 67, 69, 72, 74, 75, 77, 78, 80, 82, 85, 87, 89, 89, 92, 92, 95, 95, 98, 102, 104, 104, 107, 113, 116, 116, 118, 121, 123, 124, 126, 126, 129, 129, 131, 132, 134, 135, 137, 137, 144, 151, 153, 153, 155, 155, 157, 157, 160, 171, 173, 180, 184, 189, 191, 193, 196, 196, 198, 213, 215, 220, 222, 233, 235, 237, 239, 247, 249, 259, 261, 264, 266, 271, 274, 276, 278, 280, 282, 284, 286, 289, 291, 295, 297, 299, 302, 303, 305, 311, 4245, 0, 305, 1, 0, 0, 0, 2, 310, 1, 0, 0, 0, 4, 312, 1, 0, 0, 0, 6, 316, 1, 0, 0, 0, 8, 320, 1, 0, 0, 0, 10, 324, 1, 0, 0, 0, 12, 328, 1, 0, 0, 0, 14, 332, 1, 0, 0, 0, 16, 1233, 1, 0, 0, 0, 18, 1236, 1, 0, 0, 0, 20, 1240, 1, 0, 0, 0, 22, 1250, 1, 0, 0, 0, 24, 1254, 1, 0, 0, 0, 26, 1268, 1, 0, 0, 0, 28, 1270, 1, 0, 0, 0, 30, 1284, 1, 0, 0, 0, 32, 1290, 1, 0, 0, 0, 34, 1294, 1, 0, 0, 0, 36, 1302, 1, 0, 0, 0, 38, 1308, 1, 0, 0, 0, 40, 1310, 1, 0, 0, 0, 42, 1347, 1, 0, 0, 0, 44, 1349, 1, 0, 0, 0, 46, 1351, 1, 0, 0, 0, 48, 1387, 1, 0, 0, 0, 50, 1391, 1, 0, 0, 0, 52, 1400, 1, 0, 0, 0, 54, 1448, 1, 0, 0, 0, 56, 1498, 1, 0, 0, 0, 58, 1513, 1, 0, 0, 0, 60, 1517, 1, 0, 0, 0, 62, 1519, 1, 0, 0, 0, 64, 1526, 1, 0, 0, 0, 66, 1555, 1, 0, 0, 0, 68, 1564, 1, 0, 0, 0, 70, 1584, 1, 0, 0, 0, 72, 1586, 1, 0, 0, 0, 74, 1625, 1, 0, 0, 0, 76, 1641, 1, 0, 0, 0, 78, 1643, 1, 0, 0, 0, 80, 1652, 1, 0, 0, 0, 82, 1654, 1, 0, 0, 0, 84, 1662, 1, 0, 0, 0, 86, 1668, 1, 0, 0, 0, 88, 1670, 1, 0, 0, 0, 90, 1755, 1, 0, 0, 0, 92, 1770, 1, 0, 0, 0, 94, 1781, 1, 0, 0, 0, 96, 1802, 1, 0, 0, 0, 98, 1804, 1, 0, 0, 0, 100, 1817, 1, 0, 0, 0, 102, 1821, 1, 0, 0, 0, 104, 1831, 1, 0, 0, 0, 106, 1842, 1, 0, 0, 0, 108, 1853, 1, 0, 0, 0, 110, 1935, 1, 0, 0, 0, 112, 2014, 1, 0, 0, 0, 114, 2041, 1, 0, 0, 0, 116, 2043, 1, 0, 0, 0, 118, 2050, 1, 0, 0, 0, 120, 2062, 1, 0, 0, 0, 122, 2064, 1, 0, 0, 0, 124, 2092, 1, 0, 0, 0, 126, 2099, 1, 0, 0, 0, 128, 2171, 1, 0, 0, 0, 130, 2191, 1, 0, 0, 0, 132, 2193, 1, 0, 0, 0, 134, 2197, 1, 0, 0, 0, 136, 2210, 1, 0, 0, 0, 138, 2219, 1, 0, 0, 0, 140, 2293, 1, 0, 0, 0, 142, 2299, 1, 0, 0, 0, 144, 2771, 1, 0, 0, 0, 146, 2786, 1, 0, 0, 0, 148, 2804, 1, 0, 0, 0, 150, 2809, 1, 0, 0, 0, 152, 2814, 1, 0, 0, 0, 154, 2818, 1, 0, 0, 0, 156, 2824, 1, 0, 0, 0, 158, 2837, 1, 0, 0, 0, 160, 2845, 1, 0, 0, 0, 162, 2858, 1, 0, 0, 0, 164, 2860, 1, 0, 0, 0, 166, 2866, 1, 0, 0, 0, 168, 2874, 1, 0, 0, 0, 170, 2882, 1, 0, 0, 0, 172, 2884, 1, 0, 0, 0, 174, 2886, 1, 0, 0, 0, 176, 2888, 1, 0, 0, 0, 178, 2890, 1, 0, 0, 0, 180, 2900, 1, 0, 0, 0, 182, 2902, 1, 0, 0, 0, 184, 2995, 1, 0, 0, 0, 186, 3013, 1, 0, 0, 0, 188, 3017, 1, 0, 0, 0, 190, 3019, 1, 0, 0, 0, 192, 3024, 1, 0, 0, 0, 194, 3094, 1, 0, 0, 0, 196, 3096, 1, 0, 0, 0, 198, 3113, 1, 0, 0, 0, 200, 3177, 1, 0, 0, 0, 202, 3188, 1, 0, 0, 0, 204, 3190, 1, 0, 0, 0, 206, 3230, 1, 0, 0, 0, 208, 3262, 1, 0, 0, 0, 210, 3264, 1, 0, 0, 0, 212, 3272, 1, 0, 0, 0, 214, 3279, 1, 0, 0, 0, 216, 3288, 1, 0, 0, 0, 218, 3295, 1, 0, 0, 0, 220, 3302, 1, 0, 0, 0, 222, 3304, 1, 0, 0, 0, 224, 3312, 1, 0, 0, 0, 226, 3323, 1, 0, 0, 0, 228, 3337, 1, 0, 0, 0, 230, 3352, 1, 0, 0, 0, 232, 3356, 1, 0, 0, 0, 234, 3378, 1, 0, 0, 0, 236, 3479, 1, 0, 0, 0, 238, 3481, 1, 0, 0, 0, 240, 3486, 1, 0, 0, 0, 242, 3491, 1, 0, 0, 0, 244, 3494, 1, 0, 0, 0, 246, 3511, 1, 0, 0, 0, 248, 3521, 1, 0, 0, 0, 250, 3526, 1, 0, 0, 0, 252, 3529, 1, 0, 0, 0, 254, 3535, 1, 0, 0, 0, 256, 3548, 1, 0, 0, 0, 258, 3561, 1, 0, 0, 0, 260, 3574, 1, 0, 0, 0, 262, 3587, 1, 0, 0, 0, 264, 3594, 1, 0, 0, 0, 266, 3601, 1, 0, 0, 0, 268, 3603, 1, 0, 0, 0, 270, 3605, 1, 0, 0, 0, 272, 3607, 1, 0, 0, 0, 274, 3609, 1, 0, 0, 0, 276, 3613, 1, 0, 0, 0, 278, 3615, 1, 0, 0, 0, 280, 3617, 1, 0, 0, 0, 282, 3625, 1, 0, 0, 0, 284, 3631, 1, 0, 0, 0, 286, 3636, 1, 0, 0, 0, 288, 3643, 1, 0, 0, 0, 290, 3645, 1, 0, 0, 0, 292, 3660, 1, 0, 0, 0, 294, 3667, 1, 0, 0, 0, 296, 3681, 1, 0, 0, 0, 298, 3685, 1, 0, 0, 0, 300, 3687, 1, 0, 0, 0, 302, 304, 3, 2, 1, 0, 303, 302, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 309, 5, 0, 0, 1, 309, 1, 1, 0, 0, 0, 310, 311, 3, 4, 2, 0, 311, 3, 1, 0, 0, 0, 312, 314, 3, 16, 8, 0, 313, 315, 5, 325, 0, 0, 314, 313, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 5, 1, 0, 0, 0, 316, 318, 3, 136, 68, 0, 317, 319, 5, 325, 0, 0, 318, 317, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 7, 1, 0, 0, 0, 320, 322, 3, 222, 111, 0, 321, 323, 5, 325, 0, 0, 322, 321, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 9, 1, 0, 0, 0, 324, 326, 3, 184, 92, 0, 325, 327, 5, 325, 0, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 11, 1, 0, 0, 0, 328, 330, 3, 204, 102, 0, 329, 331, 5, 325, 0, 0, 330, 329, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 13, 1, 0, 0, 0, 332, 333, 3, 224, 112, 0, 333, 334, 5, 0, 0, 1, 334, 15, 1, 0, 0, 0, 335, 1234, 3, 18, 9, 0, 336, 337, 5, 288, 0, 0, 337, 1234, 3, 264, 132, 0, 338, 339, 5, 53, 0, 0, 339, 343, 5, 42, 0, 0, 340, 341, 5, 119, 0, 0, 341, 342, 5, 182, 0, 0, 342, 344, 5, 94, 0, 0, 343, 340, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 3, 270, 135, 0, 346, 347, 5, 290, 0, 0, 347, 350, 3, 294, 147, 0, 348, 349, 5, 46, 0, 0, 349, 351, 3, 168, 84, 0, 350, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 354, 1, 0, 0, 0, 352, 353, 5, 31, 0, 0, 353, 355, 3, 288, 144, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 357, 5, 304, 0, 0, 357, 359, 3, 32, 16, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 1234, 1, 0, 0, 0, 360, 361, 5, 83, 0, 0, 361, 364, 5, 42, 0, 0, 362, 363, 5, 119, 0, 0, 363, 365, 5, 94, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 368, 3, 268, 134, 0, 367, 369, 7, 0, 0, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 1234, 1, 0, 0, 0, 370, 371, 5, 53, 0, 0, 371, 375, 5, 243, 0, 0, 372, 373, 5, 119, 0, 0, 373, 374, 5, 182, 0, 0, 374, 376, 5, 94, 0, 0, 375, 372, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 380, 3, 266, 133, 0, 378, 379, 5, 31, 0, 0, 379, 381, 3, 288, 144, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 384, 1, 0, 0, 0, 382, 383, 5, 304, 0, 0, 383, 385, 3, 32, 16, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 1234, 1, 0, 0, 0, 386, 387, 5, 83, 0, 0, 387, 390, 5, 243, 0, 0, 388, 389, 5, 119, 0, 0, 389, 391, 5, 94, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 394, 3, 264, 132, 0, 393, 395, 7, 0, 0, 0, 394, 393, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 1234, 1, 0, 0, 0, 396, 397, 5, 23, 0, 0, 397, 398, 5, 243, 0, 0, 398, 399, 3, 264, 132, 0, 399, 400, 5, 223, 0, 0, 400, 401, 5, 269, 0, 0, 401, 402, 3, 266, 133, 0, 402, 1234, 1, 0, 0, 0, 403, 404, 5, 23, 0, 0, 404, 405, 5, 243, 0, 0, 405, 406, 3, 264, 132, 0, 406, 407, 5, 251, 0, 0, 407, 408, 5, 31, 0, 0, 408, 409, 3, 288, 144, 0, 409, 1234, 1, 0, 0, 0, 410, 413, 5, 53, 0, 0, 411, 412, 5, 194, 0, 0, 412, 414, 5, 226, 0, 0, 413, 411, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 419, 5, 260, 0, 0, 416, 417, 5, 119, 0, 0, 417, 418, 5, 182, 0, 0, 418, 420, 5, 94, 0, 0, 419, 416, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 423, 3, 258, 129, 0, 422, 424, 3, 104, 52, 0, 423, 422, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 426, 5, 46, 0, 0, 426, 428, 3, 168, 84, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 430, 5, 304, 0, 0, 430, 432, 3, 32, 16, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 439, 5, 28, 0, 0, 434, 440, 3, 18, 9, 0, 435, 436, 5, 1, 0, 0, 436, 437, 3, 18, 9, 0, 437, 438, 5, 2, 0, 0, 438, 440, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 435, 1, 0, 0, 0, 440, 446, 1, 0, 0, 0, 441, 443, 5, 304, 0, 0, 442, 444, 5, 179, 0, 0, 443, 442, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 447, 5, 65, 0, 0, 446, 441, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 1234, 1, 0, 0, 0, 448, 451, 5, 53, 0, 0, 449, 450, 5, 194, 0, 0, 450, 452, 5, 226, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 457, 5, 260, 0, 0, 454, 455, 5, 119, 0, 0, 455, 456, 5, 182, 0, 0, 456, 458, 5, 94, 0, 0, 457, 454, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 460, 3, 258, 129, 0, 460, 461, 5, 1, 0, 0, 461, 466, 3, 26, 13, 0, 462, 463, 5, 3, 0, 0, 463, 465, 3, 26, 13, 0, 464, 462, 1, 0, 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 469, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 472, 5, 2, 0, 0, 470, 471, 5, 46, 0, 0, 471, 473, 3, 168, 84, 0, 472, 470, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 476, 1, 0, 0, 0, 474, 475, 5, 304, 0, 0, 475, 477, 3, 32, 16, 0, 476, 474, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 1234, 1, 0, 0, 0, 478, 479, 5, 83, 0, 0, 479, 482, 5, 260, 0, 0, 480, 481, 5, 119, 0, 0, 481, 483, 5, 94, 0, 0, 482, 480, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 1234, 3, 256, 128, 0, 485, 486, 5, 127, 0, 0, 486, 487, 5, 130, 0, 0, 487, 489, 3, 256, 128, 0, 488, 490, 3, 106, 53, 0, 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 3, 18, 9, 0, 492, 1234, 1, 0, 0, 0, 493, 494, 5, 73, 0, 0, 494, 495, 5, 105, 0, 0, 495, 498, 3, 256, 128, 0, 496, 497, 5, 301, 0, 0, 497, 499, 3, 138, 69, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 1234, 1, 0, 0, 0, 500, 501, 5, 274, 0, 0, 501, 502, 5, 260, 0, 0, 502, 1234, 3, 256, 128, 0, 503, 504, 5, 46, 0, 0, 504, 505, 5, 190, 0, 0, 505, 506, 5, 260, 0, 0, 506, 507, 3, 256, 128, 0, 507, 510, 5, 133, 0, 0, 508, 511, 3, 168, 84, 0, 509, 511, 5, 183, 0, 0, 510, 508, 1, 0, 0, 0, 510, 509, 1, 0, 0, 0, 511, 1234, 1, 0, 0, 0, 512, 513, 5, 46, 0, 0, 513, 514, 5, 190, 0, 0, 514, 515, 5, 299, 0, 0, 515, 516, 3, 260, 130, 0, 516, 519, 5, 133, 0, 0, 517, 520, 3, 168, 84, 0, 518, 520, 5, 183, 0, 0, 519, 517, 1, 0, 0, 0, 519, 518, 1, 0, 0, 0, 520, 1234, 1, 0, 0, 0, 521, 522, 5, 46, 0, 0, 522, 523, 5, 190, 0, 0, 523, 524, 5, 44, 0, 0, 524, 525, 3, 276, 138, 0, 525, 528, 5, 133, 0, 0, 526, 529, 3, 168, 84, 0, 527, 529, 5, 183, 0, 0, 528, 526, 1, 0, 0, 0, 528, 527, 1, 0, 0, 0, 529, 1234, 1, 0, 0, 0, 530, 531, 5, 23, 0, 0, 531, 534, 5, 260, 0, 0, 532, 533, 5, 119, 0, 0, 533, 535, 5, 94, 0, 0, 534, 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 537, 3, 256, 128, 0, 537, 538, 5, 223, 0, 0, 538, 539, 5, 269, 0, 0, 539, 540, 3, 258, 129, 0, 540, 1234, 1, 0, 0, 0, 541, 542, 5, 23, 0, 0, 542, 545, 5, 260, 0, 0, 543, 544, 5, 119, 0, 0, 544, 546, 5, 94, 0, 0, 545, 543, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 3, 256, 128, 0, 548, 549, 5, 19, 0, 0, 549, 553, 5, 44, 0, 0, 550, 551, 5, 119, 0, 0, 551, 552, 5, 182, 0, 0, 552, 554, 5, 94, 0, 0, 553, 550, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 3, 28, 14, 0, 556, 1234, 1, 0, 0, 0, 557, 558, 5, 23, 0, 0, 558, 561, 5, 260, 0, 0, 559, 560, 5, 119, 0, 0, 560, 562, 5, 94, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 3, 256, 128, 0, 564, 565, 5, 223, 0, 0, 565, 568, 5, 44, 0, 0, 566, 567, 5, 119, 0, 0, 567, 569, 5, 94, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 3, 276, 138, 0, 571, 572, 5, 269, 0, 0, 572, 573, 3, 278, 139, 0, 573, 1234, 1, 0, 0, 0, 574, 575, 5, 23, 0, 0, 575, 578, 5, 260, 0, 0, 576, 577, 5, 119, 0, 0, 577, 579, 5, 94, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 3, 256, 128, 0, 581, 582, 5, 83, 0, 0, 582, 585, 5, 44, 0, 0, 583, 584, 5, 119, 0, 0, 584, 586, 5, 94, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 3, 276, 138, 0, 588, 1234, 1, 0, 0, 0, 589, 590, 5, 23, 0, 0, 590, 593, 5, 260, 0, 0, 591, 592, 5, 119, 0, 0, 592, 594, 5, 94, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 3, 256, 128, 0, 596, 597, 5, 23, 0, 0, 597, 598, 5, 44, 0, 0, 598, 599, 3, 276, 138, 0, 599, 600, 5, 251, 0, 0, 600, 601, 5, 65, 0, 0, 601, 602, 5, 276, 0, 0, 602, 603, 3, 184, 92, 0, 603, 1234, 1, 0, 0, 0, 604, 605, 5, 23, 0, 0, 605, 608, 5, 260, 0, 0, 606, 607, 5, 119, 0, 0, 607, 609, 5, 94, 0, 0, 608, 606, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 3, 256, 128, 0, 611, 612, 5, 23, 0, 0, 612, 613, 5, 44, 0, 0, 613, 614, 3, 276, 138, 0, 614, 615, 5, 83, 0, 0, 615, 616, 5, 182, 0, 0, 616, 617, 5, 183, 0, 0, 617, 1234, 1, 0, 0, 0, 618, 619, 5, 23, 0, 0, 619, 620, 5, 260, 0, 0, 620, 621, 3, 256, 128, 0, 621, 622, 5, 251, 0, 0, 622, 623, 5, 31, 0, 0, 623, 624, 3, 288, 144, 0, 624, 1234, 1, 0, 0, 0, 625, 626, 5, 23, 0, 0, 626, 627, 5, 260, 0, 0, 627, 628, 3, 256, 128, 0, 628, 629, 5, 251, 0, 0, 629, 630, 5, 216, 0, 0, 630, 631, 3, 34, 17, 0, 631, 1234, 1, 0, 0, 0, 632, 633, 5, 23, 0, 0, 633, 634, 5, 260, 0, 0, 634, 635, 3, 256, 128, 0, 635, 636, 5, 93, 0, 0, 636, 649, 3, 272, 136, 0, 637, 646, 5, 1, 0, 0, 638, 643, 3, 218, 109, 0, 639, 640, 5, 3, 0, 0, 640, 642, 3, 218, 109, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 638, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 5, 2, 0, 0, 649, 637, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 652, 5, 301, 0, 0, 652, 654, 3, 138, 69, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 1234, 1, 0, 0, 0, 655, 656, 5, 24, 0, 0, 656, 659, 3, 256, 128, 0, 657, 658, 5, 304, 0, 0, 658, 660, 3, 32, 16, 0, 659, 657, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 1234, 1, 0, 0, 0, 661, 664, 5, 53, 0, 0, 662, 663, 5, 194, 0, 0, 663, 665, 5, 226, 0, 0, 664, 662, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 5, 167, 0, 0, 667, 671, 5, 299, 0, 0, 668, 669, 5, 119, 0, 0, 669, 670, 5, 182, 0, 0, 670, 672, 5, 94, 0, 0, 671, 668, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 677, 3, 262, 131, 0, 674, 675, 5, 109, 0, 0, 675, 676, 5, 208, 0, 0, 676, 678, 3, 178, 89, 0, 677, 674, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 680, 5, 46, 0, 0, 680, 682, 3, 168, 84, 0, 681, 679, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0, 683, 684, 5, 304, 0, 0, 684, 686, 3, 32, 16, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 688, 5, 28, 0, 0, 688, 689, 3, 18, 9, 0, 689, 1234, 1, 0, 0, 0, 690, 693, 5, 53, 0, 0, 691, 692, 5, 194, 0, 0, 692, 694, 5, 226, 0, 0, 693, 691, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 5, 299, 0, 0, 696, 699, 3, 262, 131, 0, 697, 698, 5, 46, 0, 0, 698, 700, 3, 168, 84, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 703, 1, 0, 0, 0, 701, 702, 5, 246, 0, 0, 702, 704, 7, 1, 0, 0, 703, 701, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 707, 1, 0, 0, 0, 705, 706, 5, 304, 0, 0, 706, 708, 3, 32, 16, 0, 707, 705, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 5, 28, 0, 0, 710, 711, 3, 18, 9, 0, 711, 1234, 1, 0, 0, 0, 712, 713, 5, 222, 0, 0, 713, 714, 5, 167, 0, 0, 714, 715, 5, 299, 0, 0, 715, 1234, 3, 260, 130, 0, 716, 717, 5, 83, 0, 0, 717, 718, 5, 167, 0, 0, 718, 721, 5, 299, 0, 0, 719, 720, 5, 119, 0, 0, 720, 722, 5, 94, 0, 0, 721, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 1234, 3, 260, 130, 0, 724, 725, 5, 23, 0, 0, 725, 726, 5, 167, 0, 0, 726, 729, 5, 299, 0, 0, 727, 728, 5, 119, 0, 0, 728, 730, 5, 94, 0, 0, 729, 727, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 732, 3, 260, 130, 0, 732, 733, 5, 223, 0, 0, 733, 734, 5, 269, 0, 0, 734, 735, 3, 262, 131, 0, 735, 1234, 1, 0, 0, 0, 736, 737, 5, 23, 0, 0, 737, 738, 5, 167, 0, 0, 738, 739, 5, 299, 0, 0, 739, 740, 3, 260, 130, 0, 740, 741, 5, 251, 0, 0, 741, 742, 5, 216, 0, 0, 742, 743, 3, 34, 17, 0, 743, 1234, 1, 0, 0, 0, 744, 745, 5, 83, 0, 0, 745, 748, 5, 299, 0, 0, 746, 747, 5, 119, 0, 0, 747, 749, 5, 94, 0, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 1234, 3, 260, 130, 0, 751, 752, 5, 23, 0, 0, 752, 753, 5, 299, 0, 0, 753, 754, 3, 260, 130, 0, 754, 755, 5, 223, 0, 0, 755, 756, 5, 269, 0, 0, 756, 757, 3, 262, 131, 0, 757, 1234, 1, 0, 0, 0, 758, 759, 5, 23, 0, 0, 759, 760, 5, 299, 0, 0, 760, 761, 3, 260, 130, 0, 761, 762, 5, 251, 0, 0, 762, 763, 5, 31, 0, 0, 763, 764, 3, 288, 144, 0, 764, 1234, 1, 0, 0, 0, 765, 766, 5, 37, 0, 0, 766, 767, 3, 272, 136, 0, 767, 776, 5, 1, 0, 0, 768, 773, 3, 218, 109, 0, 769, 770, 5, 3, 0, 0, 770, 772, 3, 218, 109, 0, 771, 769, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 777, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 768, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 779, 5, 2, 0, 0, 779, 1234, 1, 0, 0, 0, 780, 783, 5, 53, 0, 0, 781, 782, 5, 194, 0, 0, 782, 784, 5, 226, 0, 0, 783, 781, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 1234, 3, 224, 112, 0, 786, 787, 5, 83, 0, 0, 787, 790, 5, 107, 0, 0, 788, 789, 5, 119, 0, 0, 789, 791, 5, 94, 0, 0, 790, 788, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 1234, 3, 228, 114, 0, 793, 794, 5, 53, 0, 0, 794, 795, 5, 235, 0, 0, 795, 799, 3, 294, 147, 0, 796, 797, 5, 304, 0, 0, 797, 798, 5, 20, 0, 0, 798, 800, 3, 286, 143, 0, 799, 796, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 802, 5, 122, 0, 0, 802, 804, 3, 268, 134, 0, 803, 801, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 1234, 1, 0, 0, 0, 805, 806, 5, 83, 0, 0, 806, 807, 5, 235, 0, 0, 807, 810, 3, 294, 147, 0, 808, 809, 5, 122, 0, 0, 809, 811, 3, 268, 134, 0, 810, 808, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 1234, 1, 0, 0, 0, 812, 813, 5, 110, 0, 0, 813, 818, 3, 292, 146, 0, 814, 815, 5, 3, 0, 0, 815, 817, 3, 292, 146, 0, 816, 814, 1, 0, 0, 0, 817, 820, 1, 0, 0, 0, 818, 816, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 818, 1, 0, 0, 0, 821, 822, 5, 269, 0, 0, 822, 827, 3, 288, 144, 0, 823, 824, 5, 3, 0, 0, 824, 826, 3, 288, 144, 0, 825, 823, 1, 0, 0, 0, 826, 829, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 833, 1, 0, 0, 0, 829, 827, 1, 0, 0, 0, 830, 831, 5, 304, 0, 0, 831, 832, 5, 20, 0, 0, 832, 834, 5, 193, 0, 0, 833, 830, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 838, 1, 0, 0, 0, 835, 836, 5, 111, 0, 0, 836, 837, 5, 36, 0, 0, 837, 839, 3, 286, 143, 0, 838, 835, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 842, 1, 0, 0, 0, 840, 841, 5, 122, 0, 0, 841, 843, 3, 268, 134, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 1234, 1, 0, 0, 0, 844, 855, 5, 110, 0, 0, 845, 850, 3, 292, 146, 0, 846, 847, 5, 3, 0, 0, 847, 849, 3, 292, 146, 0, 848, 846, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 856, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 853, 854, 5, 22, 0, 0, 854, 856, 5, 215, 0, 0, 855, 845, 1, 0, 0, 0, 855, 853, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 858, 5, 190, 0, 0, 858, 859, 3, 252, 126, 0, 859, 860, 5, 269, 0, 0, 860, 864, 3, 288, 144, 0, 861, 862, 5, 304, 0, 0, 862, 863, 5, 110, 0, 0, 863, 865, 5, 193, 0, 0, 864, 861, 1, 0, 0, 0, 864, 865, 1, 0, 0, 0, 865, 1234, 1, 0, 0, 0, 866, 870, 5, 233, 0, 0, 867, 868, 5, 20, 0, 0, 868, 869, 5, 193, 0, 0, 869, 871, 5, 103, 0, 0, 870, 867, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 877, 3, 292, 146, 0, 873, 874, 5, 3, 0, 0, 874, 876, 3, 292, 146, 0, 875, 873, 1, 0, 0, 0, 876, 879, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 880, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 880, 881, 5, 105, 0, 0, 881, 886, 3, 288, 144, 0, 882, 883, 5, 3, 0, 0, 883, 885, 3, 288, 144, 0, 884, 882, 1, 0, 0, 0, 885, 888, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 892, 1, 0, 0, 0, 888, 886, 1, 0, 0, 0, 889, 890, 5, 111, 0, 0, 890, 891, 5, 36, 0, 0, 891, 893, 3, 286, 143, 0, 892, 889, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 896, 1, 0, 0, 0, 894, 895, 5, 122, 0, 0, 895, 897, 3, 268, 134, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 1234, 1, 0, 0, 0, 898, 902, 5, 233, 0, 0, 899, 900, 5, 110, 0, 0, 900, 901, 5, 193, 0, 0, 901, 903, 5, 103, 0, 0, 902, 899, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 914, 1, 0, 0, 0, 904, 909, 3, 292, 146, 0, 905, 906, 5, 3, 0, 0, 906, 908, 3, 292, 146, 0, 907, 905, 1, 0, 0, 0, 908, 911, 1, 0, 0, 0, 909, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 915, 1, 0, 0, 0, 911, 909, 1, 0, 0, 0, 912, 913, 5, 22, 0, 0, 913, 915, 5, 215, 0, 0, 914, 904, 1, 0, 0, 0, 914, 912, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 5, 190, 0, 0, 917, 918, 3, 252, 126, 0, 918, 919, 5, 105, 0, 0, 919, 920, 3, 288, 144, 0, 920, 1234, 1, 0, 0, 0, 921, 932, 5, 74, 0, 0, 922, 927, 3, 248, 124, 0, 923, 924, 5, 3, 0, 0, 924, 926, 3, 248, 124, 0, 925, 923, 1, 0, 0, 0, 926, 929, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 933, 1, 0, 0, 0, 929, 927, 1, 0, 0, 0, 930, 931, 5, 22, 0, 0, 931, 933, 5, 215, 0, 0, 932, 922, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 935, 5, 190, 0, 0, 935, 936, 3, 252, 126, 0, 936, 937, 5, 269, 0, 0, 937, 938, 3, 288, 144, 0, 938, 1234, 1, 0, 0, 0, 939, 940, 5, 251, 0, 0, 940, 944, 5, 235, 0, 0, 941, 945, 5, 22, 0, 0, 942, 945, 5, 180, 0, 0, 943, 945, 3, 294, 147, 0, 944, 941, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 944, 943, 1, 0, 0, 0, 945, 948, 1, 0, 0, 0, 946, 947, 5, 122, 0, 0, 947, 949, 3, 268, 134, 0, 948, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 1234, 1, 0, 0, 0, 950, 951, 5, 253, 0, 0, 951, 954, 5, 112, 0, 0, 952, 953, 5, 190, 0, 0, 953, 955, 3, 252, 126, 0, 954, 952, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 1234, 1, 0, 0, 0, 956, 968, 5, 95, 0, 0, 957, 958, 5, 1, 0, 0, 958, 963, 3, 212, 106, 0, 959, 960, 5, 3, 0, 0, 960, 962, 3, 212, 106, 0, 961, 959, 1, 0, 0, 0, 962, 965, 1, 0, 0, 0, 963, 961, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 966, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 966, 967, 5, 2, 0, 0, 967, 969, 1, 0, 0, 0, 968, 957, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 1234, 3, 16, 8, 0, 971, 972, 5, 95, 0, 0, 972, 974, 5, 24, 0, 0, 973, 975, 5, 297, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1234, 3, 16, 8, 0, 977, 978, 5, 253, 0, 0, 978, 979, 5, 53, 0, 0, 979, 980, 5, 260, 0, 0, 980, 1234, 3, 256, 128, 0, 981, 982, 5, 253, 0, 0, 982, 983, 5, 53, 0, 0, 983, 984, 5, 243, 0, 0, 984, 1234, 3, 264, 132, 0, 985, 986, 5, 253, 0, 0, 986, 987, 5, 53, 0, 0, 987, 988, 5, 299, 0, 0, 988, 1234, 3, 260, 130, 0, 989, 990, 5, 253, 0, 0, 990, 991, 5, 53, 0, 0, 991, 992, 5, 167, 0, 0, 992, 993, 5, 299, 0, 0, 993, 1234, 3, 260, 130, 0, 994, 995, 5, 253, 0, 0, 995, 996, 5, 53, 0, 0, 996, 997, 5, 107, 0, 0, 997, 1234, 3, 272, 136, 0, 998, 999, 5, 253, 0, 0, 999, 1002, 5, 261, 0, 0, 1000, 1001, 7, 2, 0, 0, 1001, 1003, 3, 264, 132, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1010, 1, 0, 0, 0, 1004, 1005, 5, 154, 0, 0, 1005, 1008, 3, 168, 84, 0, 1006, 1007, 5, 90, 0, 0, 1007, 1009, 3, 168, 84, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 1, 0, 0, 0, 1010, 1004, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1234, 1, 0, 0, 0, 1012, 1013, 5, 253, 0, 0, 1013, 1016, 5, 244, 0, 0, 1014, 1015, 7, 2, 0, 0, 1015, 1017, 3, 268, 134, 0, 1016, 1014, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1024, 1, 0, 0, 0, 1018, 1019, 5, 154, 0, 0, 1019, 1022, 3, 168, 84, 0, 1020, 1021, 5, 90, 0, 0, 1021, 1023, 3, 168, 84, 0, 1022, 1020, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1025, 1, 0, 0, 0, 1024, 1018, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1234, 1, 0, 0, 0, 1026, 1027, 5, 253, 0, 0, 1027, 1034, 5, 43, 0, 0, 1028, 1029, 5, 154, 0, 0, 1029, 1032, 3, 168, 84, 0, 1030, 1031, 5, 90, 0, 0, 1031, 1033, 3, 168, 84, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1035, 1, 0, 0, 0, 1034, 1028, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1234, 1, 0, 0, 0, 1036, 1037, 5, 253, 0, 0, 1037, 1038, 5, 45, 0, 0, 1038, 1039, 7, 2, 0, 0, 1039, 1046, 3, 254, 127, 0, 1040, 1041, 5, 154, 0, 0, 1041, 1044, 3, 168, 84, 0, 1042, 1043, 5, 90, 0, 0, 1043, 1045, 3, 168, 84, 0, 1044, 1042, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1047, 1, 0, 0, 0, 1046, 1040, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1234, 1, 0, 0, 0, 1048, 1049, 5, 253, 0, 0, 1049, 1050, 5, 256, 0, 0, 1050, 1051, 5, 103, 0, 0, 1051, 1234, 3, 254, 127, 0, 1052, 1053, 5, 253, 0, 0, 1053, 1054, 5, 256, 0, 0, 1054, 1055, 5, 103, 0, 0, 1055, 1056, 5, 1, 0, 0, 1056, 1057, 3, 18, 9, 0, 1057, 1058, 5, 2, 0, 0, 1058, 1234, 1, 0, 0, 0, 1059, 1061, 5, 253, 0, 0, 1060, 1062, 5, 56, 0, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1066, 5, 236, 0, 0, 1064, 1065, 7, 2, 0, 0, 1065, 1067, 3, 268, 134, 0, 1066, 1064, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1234, 1, 0, 0, 0, 1068, 1069, 5, 253, 0, 0, 1069, 1070, 5, 235, 0, 0, 1070, 1073, 5, 112, 0, 0, 1071, 1072, 7, 2, 0, 0, 1072, 1074, 3, 268, 134, 0, 1073, 1071, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 1074, 1234, 1, 0, 0, 0, 1075, 1076, 5, 76, 0, 0, 1076, 1234, 3, 254, 127, 0, 1077, 1078, 5, 75, 0, 0, 1078, 1234, 3, 254, 127, 0, 1079, 1080, 5, 253, 0, 0, 1080, 1083, 5, 108, 0, 0, 1081, 1082, 7, 2, 0, 0, 1082, 1084, 3, 264, 132, 0, 1083, 1081, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1091, 1, 0, 0, 0, 1085, 1086, 5, 154, 0, 0, 1086, 1089, 3, 168, 84, 0, 1087, 1088, 5, 90, 0, 0, 1088, 1090, 3, 168, 84, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1085, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1234, 1, 0, 0, 0, 1093, 1094, 5, 253, 0, 0, 1094, 1101, 5, 250, 0, 0, 1095, 1096, 5, 154, 0, 0, 1096, 1099, 3, 168, 84, 0, 1097, 1098, 5, 90, 0, 0, 1098, 1100, 3, 168, 84, 0, 1099, 1097, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1102, 1, 0, 0, 0, 1101, 1095, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1234, 1, 0, 0, 0, 1103, 1104, 5, 251, 0, 0, 1104, 1105, 5, 250, 0, 0, 1105, 1106, 5, 31, 0, 0, 1106, 1234, 3, 298, 149, 0, 1107, 1108, 5, 227, 0, 0, 1108, 1109, 5, 250, 0, 0, 1109, 1234, 5, 31, 0, 0, 1110, 1111, 5, 251, 0, 0, 1111, 1112, 5, 250, 0, 0, 1112, 1113, 3, 280, 140, 0, 1113, 1114, 5, 312, 0, 0, 1114, 1115, 3, 136, 68, 0, 1115, 1234, 1, 0, 0, 0, 1116, 1117, 5, 227, 0, 0, 1117, 1118, 5, 250, 0, 0, 1118, 1234, 3, 280, 140, 0, 1119, 1120, 5, 255, 0, 0, 1120, 1129, 5, 271, 0, 0, 1121, 1126, 3, 214, 107, 0, 1122, 1123, 5, 3, 0, 0, 1123, 1125, 3, 214, 107, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1128, 1, 0, 0, 0, 1126, 1124, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, 1126, 1, 0, 0, 0, 1129, 1121, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1234, 1, 0, 0, 0, 1131, 1133, 5, 47, 0, 0, 1132, 1134, 5, 307, 0, 0, 1133, 1132, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1234, 1, 0, 0, 0, 1135, 1137, 5, 237, 0, 0, 1136, 1138, 5, 307, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1234, 1, 0, 0, 0, 1139, 1140, 5, 214, 0, 0, 1140, 1141, 3, 294, 147, 0, 1141, 1142, 5, 105, 0, 0, 1142, 1143, 3, 16, 8, 0, 1143, 1234, 1, 0, 0, 0, 1144, 1145, 5, 68, 0, 0, 1145, 1146, 5, 214, 0, 0, 1146, 1234, 3, 294, 147, 0, 1147, 1148, 5, 93, 0, 0, 1148, 1158, 3, 294, 147, 0, 1149, 1150, 5, 290, 0, 0, 1150, 1155, 3, 136, 68, 0, 1151, 1152, 5, 3, 0, 0, 1152, 1154, 3, 136, 68, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1149, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1234, 1, 0, 0, 0, 1160, 1161, 5, 93, 0, 0, 1161, 1162, 5, 121, 0, 0, 1162, 1172, 3, 168, 84, 0, 1163, 1164, 5, 290, 0, 0, 1164, 1169, 3, 136, 68, 0, 1165, 1166, 5, 3, 0, 0, 1166, 1168, 3, 136, 68, 0, 1167, 1165, 1, 0, 0, 0, 1168, 1171, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1173, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1172, 1163, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1234, 1, 0, 0, 0, 1174, 1175, 5, 76, 0, 0, 1175, 1176, 5, 126, 0, 0, 1176, 1234, 3, 294, 147, 0, 1177, 1178, 5, 76, 0, 0, 1178, 1179, 5, 198, 0, 0, 1179, 1234, 3, 294, 147, 0, 1180, 1181, 5, 251, 0, 0, 1181, 1182, 5, 205, 0, 0, 1182, 1234, 3, 222, 111, 0, 1183, 1184, 5, 251, 0, 0, 1184, 1185, 5, 267, 0, 0, 1185, 1188, 5, 311, 0, 0, 1186, 1189, 5, 157, 0, 0, 1187, 1189, 3, 136, 68, 0, 1188, 1186, 1, 0, 0, 0, 1188, 1187, 1, 0, 0, 0, 1189, 1234, 1, 0, 0, 0, 1190, 1191, 5, 287, 0, 0, 1191, 1192, 3, 256, 128, 0, 1192, 1193, 5, 251, 0, 0, 1193, 1198, 3, 210, 105, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 3, 210, 105, 0, 1196, 1194, 1, 0, 0, 0, 1197, 1200, 1, 0, 0, 0, 1198, 1196, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1203, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1201, 1202, 5, 301, 0, 0, 1202, 1204, 3, 138, 69, 0, 1203, 1201, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1234, 1, 0, 0, 0, 1205, 1206, 5, 169, 0, 0, 1206, 1207, 5, 130, 0, 0, 1207, 1212, 3, 256, 128, 0, 1208, 1210, 5, 28, 0, 0, 1209, 1208, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1213, 3, 294, 147, 0, 1212, 1209, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 5, 290, 0, 0, 1215, 1216, 3, 72, 36, 0, 1216, 1217, 5, 190, 0, 0, 1217, 1219, 3, 136, 68, 0, 1218, 1220, 3, 194, 97, 0, 1219, 1218, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1219, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1234, 1, 0, 0, 0, 1223, 1224, 5, 253, 0, 0, 1224, 1225, 5, 46, 0, 0, 1225, 1226, 5, 190, 0, 0, 1226, 1227, 5, 260, 0, 0, 1227, 1234, 3, 256, 128, 0, 1228, 1229, 5, 253, 0, 0, 1229, 1230, 5, 46, 0, 0, 1230, 1231, 5, 190, 0, 0, 1231, 1232, 5, 44, 0, 0, 1232, 1234, 3, 276, 138, 0, 1233, 335, 1, 0, 0, 0, 1233, 336, 1, 0, 0, 0, 1233, 338, 1, 0, 0, 0, 1233, 360, 1, 0, 0, 0, 1233, 370, 1, 0, 0, 0, 1233, 386, 1, 0, 0, 0, 1233, 396, 1, 0, 0, 0, 1233, 403, 1, 0, 0, 0, 1233, 410, 1, 0, 0, 0, 1233, 448, 1, 0, 0, 0, 1233, 478, 1, 0, 0, 0, 1233, 485, 1, 0, 0, 0, 1233, 493, 1, 0, 0, 0, 1233, 500, 1, 0, 0, 0, 1233, 503, 1, 0, 0, 0, 1233, 512, 1, 0, 0, 0, 1233, 521, 1, 0, 0, 0, 1233, 530, 1, 0, 0, 0, 1233, 541, 1, 0, 0, 0, 1233, 557, 1, 0, 0, 0, 1233, 574, 1, 0, 0, 0, 1233, 589, 1, 0, 0, 0, 1233, 604, 1, 0, 0, 0, 1233, 618, 1, 0, 0, 0, 1233, 625, 1, 0, 0, 0, 1233, 632, 1, 0, 0, 0, 1233, 655, 1, 0, 0, 0, 1233, 661, 1, 0, 0, 0, 1233, 690, 1, 0, 0, 0, 1233, 712, 1, 0, 0, 0, 1233, 716, 1, 0, 0, 0, 1233, 724, 1, 0, 0, 0, 1233, 736, 1, 0, 0, 0, 1233, 744, 1, 0, 0, 0, 1233, 751, 1, 0, 0, 0, 1233, 758, 1, 0, 0, 0, 1233, 765, 1, 0, 0, 0, 1233, 780, 1, 0, 0, 0, 1233, 786, 1, 0, 0, 0, 1233, 793, 1, 0, 0, 0, 1233, 805, 1, 0, 0, 0, 1233, 812, 1, 0, 0, 0, 1233, 844, 1, 0, 0, 0, 1233, 866, 1, 0, 0, 0, 1233, 898, 1, 0, 0, 0, 1233, 921, 1, 0, 0, 0, 1233, 939, 1, 0, 0, 0, 1233, 950, 1, 0, 0, 0, 1233, 956, 1, 0, 0, 0, 1233, 971, 1, 0, 0, 0, 1233, 977, 1, 0, 0, 0, 1233, 981, 1, 0, 0, 0, 1233, 985, 1, 0, 0, 0, 1233, 989, 1, 0, 0, 0, 1233, 994, 1, 0, 0, 0, 1233, 998, 1, 0, 0, 0, 1233, 1012, 1, 0, 0, 0, 1233, 1026, 1, 0, 0, 0, 1233, 1036, 1, 0, 0, 0, 1233, 1048, 1, 0, 0, 0, 1233, 1052, 1, 0, 0, 0, 1233, 1059, 1, 0, 0, 0, 1233, 1068, 1, 0, 0, 0, 1233, 1075, 1, 0, 0, 0, 1233, 1077, 1, 0, 0, 0, 1233, 1079, 1, 0, 0, 0, 1233, 1093, 1, 0, 0, 0, 1233, 1103, 1, 0, 0, 0, 1233, 1107, 1, 0, 0, 0, 1233, 1110, 1, 0, 0, 0, 1233, 1116, 1, 0, 0, 0, 1233, 1119, 1, 0, 0, 0, 1233, 1131, 1, 0, 0, 0, 1233, 1135, 1, 0, 0, 0, 1233, 1139, 1, 0, 0, 0, 1233, 1144, 1, 0, 0, 0, 1233, 1147, 1, 0, 0, 0, 1233, 1160, 1, 0, 0, 0, 1233, 1174, 1, 0, 0, 0, 1233, 1177, 1, 0, 0, 0, 1233, 1180, 1, 0, 0, 0, 1233, 1183, 1, 0, 0, 0, 1233, 1190, 1, 0, 0, 0, 1233, 1205, 1, 0, 0, 0, 1233, 1223, 1, 0, 0, 0, 1233, 1228, 1, 0, 0, 0, 1234, 17, 1, 0, 0, 0, 1235, 1237, 3, 20, 10, 0, 1236, 1235, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 3, 22, 11, 0, 1239, 19, 1, 0, 0, 0, 1240, 1241, 5, 304, 0, 0, 1241, 1246, 3, 224, 112, 0, 1242, 1243, 5, 3, 0, 0, 1243, 1245, 3, 224, 112, 0, 1244, 1242, 1, 0, 0, 0, 1245, 1248, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 21, 1, 0, 0, 0, 1248, 1246, 1, 0, 0, 0, 1249, 1251, 3, 24, 12, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1253, 3, 40, 20, 0, 1253, 23, 1, 0, 0, 0, 1254, 1256, 5, 304, 0, 0, 1255, 1257, 5, 221, 0, 0, 1256, 1255, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1263, 3, 66, 33, 0, 1259, 1260, 5, 3, 0, 0, 1260, 1262, 3, 66, 33, 0, 1261, 1259, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 25, 1, 0, 0, 0, 1265, 1263, 1, 0, 0, 0, 1266, 1269, 3, 28, 14, 0, 1267, 1269, 3, 30, 15, 0, 1268, 1266, 1, 0, 0, 0, 1268, 1267, 1, 0, 0, 0, 1269, 27, 1, 0, 0, 0, 1270, 1271, 3, 278, 139, 0, 1271, 1274, 3, 184, 92, 0, 1272, 1273, 5, 182, 0, 0, 1273, 1275, 5, 183, 0, 0, 1274, 1272, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1278, 1, 0, 0, 0, 1276, 1277, 5, 46, 0, 0, 1277, 1279, 3, 168, 84, 0, 1278, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1282, 1, 0, 0, 0, 1280, 1281, 5, 304, 0, 0, 1281, 1283, 3, 32, 16, 0, 1282, 1280, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 29, 1, 0, 0, 0, 1284, 1285, 5, 154, 0, 0, 1285, 1288, 3, 256, 128, 0, 1286, 1287, 7, 3, 0, 0, 1287, 1289, 5, 216, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 31, 1, 0, 0, 0, 1290, 1291, 5, 1, 0, 0, 1291, 1292, 3, 34, 17, 0, 1292, 1293, 5, 2, 0, 0, 1293, 33, 1, 0, 0, 0, 1294, 1299, 3, 36, 18, 0, 1295, 1296, 5, 3, 0, 0, 1296, 1298, 3, 36, 18, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1301, 1, 0, 0, 0, 1299, 1297, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 35, 1, 0, 0, 0, 1301, 1299, 1, 0, 0, 0, 1302, 1303, 3, 294, 147, 0, 1303, 1304, 5, 312, 0, 0, 1304, 1305, 3, 38, 19, 0, 1305, 37, 1, 0, 0, 0, 1306, 1309, 5, 70, 0, 0, 1307, 1309, 3, 136, 68, 0, 1308, 1306, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 39, 1, 0, 0, 0, 1310, 1321, 3, 46, 23, 0, 1311, 1312, 5, 195, 0, 0, 1312, 1313, 5, 36, 0, 0, 1313, 1318, 3, 50, 25, 0, 1314, 1315, 5, 3, 0, 0, 1315, 1317, 3, 50, 25, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1320, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1322, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, 0, 1321, 1311, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1328, 1, 0, 0, 0, 1323, 1324, 5, 188, 0, 0, 1324, 1326, 3, 44, 22, 0, 1325, 1327, 7, 4, 0, 0, 1326, 1325, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, 0, 0, 1328, 1323, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1343, 1, 0, 0, 0, 1330, 1331, 5, 155, 0, 0, 1331, 1344, 3, 42, 21, 0, 1332, 1333, 5, 98, 0, 0, 1333, 1335, 7, 5, 0, 0, 1334, 1336, 3, 44, 22, 0, 1335, 1334, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1341, 7, 4, 0, 0, 1338, 1342, 5, 192, 0, 0, 1339, 1340, 5, 304, 0, 0, 1340, 1342, 5, 266, 0, 0, 1341, 1338, 1, 0, 0, 0, 1341, 1339, 1, 0, 0, 0, 1342, 1344, 1, 0, 0, 0, 1343, 1330, 1, 0, 0, 0, 1343, 1332, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 41, 1, 0, 0, 0, 1345, 1348, 5, 22, 0, 0, 1346, 1348, 3, 44, 22, 0, 1347, 1345, 1, 0, 0, 0, 1347, 1346, 1, 0, 0, 0, 1348, 43, 1, 0, 0, 0, 1349, 1350, 7, 6, 0, 0, 1350, 45, 1, 0, 0, 0, 1351, 1352, 6, 23, -1, 0, 1352, 1353, 3, 48, 24, 0, 1353, 1368, 1, 0, 0, 0, 1354, 1355, 10, 2, 0, 0, 1355, 1357, 5, 128, 0, 0, 1356, 1358, 3, 68, 34, 0, 1357, 1356, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1367, 3, 46, 23, 3, 1360, 1361, 10, 1, 0, 0, 1361, 1363, 7, 7, 0, 0, 1362, 1364, 3, 68, 34, 0, 1363, 1362, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1367, 3, 46, 23, 2, 1366, 1354, 1, 0, 0, 0, 1366, 1360, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 47, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1388, 3, 52, 26, 0, 1372, 1373, 5, 260, 0, 0, 1373, 1388, 3, 256, 128, 0, 1374, 1375, 5, 296, 0, 0, 1375, 1380, 3, 136, 68, 0, 1376, 1377, 5, 3, 0, 0, 1377, 1379, 3, 136, 68, 0, 1378, 1376, 1, 0, 0, 0, 1379, 1382, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1388, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1384, 5, 1, 0, 0, 1384, 1385, 3, 40, 20, 0, 1385, 1386, 5, 2, 0, 0, 1386, 1388, 1, 0, 0, 0, 1387, 1371, 1, 0, 0, 0, 1387, 1372, 1, 0, 0, 0, 1387, 1374, 1, 0, 0, 0, 1387, 1383, 1, 0, 0, 0, 1388, 49, 1, 0, 0, 0, 1389, 1392, 3, 276, 138, 0, 1390, 1392, 3, 136, 68, 0, 1391, 1389, 1, 0, 0, 0, 1391, 1390, 1, 0, 0, 0, 1392, 1394, 1, 0, 0, 0, 1393, 1395, 7, 8, 0, 0, 1394, 1393, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1398, 1, 0, 0, 0, 1396, 1397, 5, 185, 0, 0, 1397, 1399, 7, 9, 0, 0, 1398, 1396, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 51, 1, 0, 0, 0, 1400, 1402, 5, 248, 0, 0, 1401, 1403, 3, 68, 34, 0, 1402, 1401, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1409, 3, 70, 35, 0, 1405, 1406, 5, 3, 0, 0, 1406, 1408, 3, 70, 35, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1421, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1413, 5, 105, 0, 0, 1413, 1418, 3, 72, 36, 0, 1414, 1415, 5, 3, 0, 0, 1415, 1417, 3, 72, 36, 0, 1416, 1414, 1, 0, 0, 0, 1417, 1420, 1, 0, 0, 0, 1418, 1416, 1, 0, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1422, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1421, 1412, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1425, 1, 0, 0, 0, 1423, 1424, 5, 301, 0, 0, 1424, 1426, 3, 138, 69, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1430, 1, 0, 0, 0, 1427, 1428, 5, 114, 0, 0, 1428, 1429, 5, 36, 0, 0, 1429, 1431, 3, 54, 27, 0, 1430, 1427, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 1434, 1, 0, 0, 0, 1432, 1433, 5, 117, 0, 0, 1433, 1435, 3, 138, 69, 0, 1434, 1432, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1445, 1, 0, 0, 0, 1436, 1437, 5, 303, 0, 0, 1437, 1442, 3, 62, 31, 0, 1438, 1439, 5, 3, 0, 0, 1439, 1441, 3, 62, 31, 0, 1440, 1438, 1, 0, 0, 0, 1441, 1444, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1446, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1436, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 53, 1, 0, 0, 0, 1447, 1449, 3, 68, 34, 0, 1448, 1447, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1455, 3, 56, 28, 0, 1451, 1452, 5, 3, 0, 0, 1452, 1454, 3, 56, 28, 0, 1453, 1451, 1, 0, 0, 0, 1454, 1457, 1, 0, 0, 0, 1455, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 55, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1458, 1499, 3, 58, 29, 0, 1459, 1460, 5, 238, 0, 0, 1460, 1469, 5, 1, 0, 0, 1461, 1466, 3, 58, 29, 0, 1462, 1463, 5, 3, 0, 0, 1463, 1465, 3, 58, 29, 0, 1464, 1462, 1, 0, 0, 0, 1465, 1468, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1470, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1461, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1499, 5, 2, 0, 0, 1472, 1473, 5, 55, 0, 0, 1473, 1482, 5, 1, 0, 0, 1474, 1479, 3, 58, 29, 0, 1475, 1476, 5, 3, 0, 0, 1476, 1478, 3, 58, 29, 0, 1477, 1475, 1, 0, 0, 0, 1478, 1481, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1483, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1474, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1499, 5, 2, 0, 0, 1485, 1486, 5, 115, 0, 0, 1486, 1487, 5, 252, 0, 0, 1487, 1488, 5, 1, 0, 0, 1488, 1493, 3, 58, 29, 0, 1489, 1490, 5, 3, 0, 0, 1490, 1492, 3, 58, 29, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1495, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1496, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 5, 2, 0, 0, 1497, 1499, 1, 0, 0, 0, 1498, 1458, 1, 0, 0, 0, 1498, 1459, 1, 0, 0, 0, 1498, 1472, 1, 0, 0, 0, 1498, 1485, 1, 0, 0, 0, 1499, 57, 1, 0, 0, 0, 1500, 1509, 5, 1, 0, 0, 1501, 1506, 3, 60, 30, 0, 1502, 1503, 5, 3, 0, 0, 1503, 1505, 3, 60, 30, 0, 1504, 1502, 1, 0, 0, 0, 1505, 1508, 1, 0, 0, 0, 1506, 1504, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1510, 1, 0, 0, 0, 1508, 1506, 1, 0, 0, 0, 1509, 1501, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1514, 5, 2, 0, 0, 1512, 1514, 3, 60, 30, 0, 1513, 1500, 1, 0, 0, 0, 1513, 1512, 1, 0, 0, 0, 1514, 59, 1, 0, 0, 0, 1515, 1518, 3, 276, 138, 0, 1516, 1518, 3, 136, 68, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1516, 1, 0, 0, 0, 1518, 61, 1, 0, 0, 0, 1519, 1520, 3, 294, 147, 0, 1520, 1521, 5, 28, 0, 0, 1521, 1522, 5, 1, 0, 0, 1522, 1523, 3, 64, 32, 0, 1523, 1524, 5, 2, 0, 0, 1524, 63, 1, 0, 0, 0, 1525, 1527, 3, 294, 147, 0, 1526, 1525, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1538, 1, 0, 0, 0, 1528, 1529, 5, 201, 0, 0, 1529, 1530, 5, 36, 0, 0, 1530, 1535, 3, 136, 68, 0, 1531, 1532, 5, 3, 0, 0, 1532, 1534, 3, 136, 68, 0, 1533, 1531, 1, 0, 0, 0, 1534, 1537, 1, 0, 0, 0, 1535, 1533, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1539, 1, 0, 0, 0, 1537, 1535, 1, 0, 0, 0, 1538, 1528, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1550, 1, 0, 0, 0, 1540, 1541, 5, 195, 0, 0, 1541, 1542, 5, 36, 0, 0, 1542, 1547, 3, 50, 25, 0, 1543, 1544, 5, 3, 0, 0, 1544, 1546, 3, 50, 25, 0, 1545, 1543, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1551, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1550, 1540, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553, 1, 0, 0, 0, 1552, 1554, 3, 198, 99, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 65, 1, 0, 0, 0, 1555, 1557, 3, 294, 147, 0, 1556, 1558, 3, 108, 54, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1560, 5, 28, 0, 0, 1560, 1561, 5, 1, 0, 0, 1561, 1562, 3, 22, 11, 0, 1562, 1563, 5, 2, 0, 0, 1563, 67, 1, 0, 0, 0, 1564, 1565, 7, 10, 0, 0, 1565, 69, 1, 0, 0, 0, 1566, 1569, 3, 276, 138, 0, 1567, 1569, 3, 136, 68, 0, 1568, 1566, 1, 0, 0, 0, 1568, 1567, 1, 0, 0, 0, 1569, 1574, 1, 0, 0, 0, 1570, 1572, 5, 28, 0, 0, 1571, 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1575, 3, 294, 147, 0, 1574, 1571, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1585, 1, 0, 0, 0, 1576, 1577, 3, 144, 72, 0, 1577, 1578, 5, 4, 0, 0, 1578, 1581, 5, 320, 0, 0, 1579, 1580, 5, 28, 0, 0, 1580, 1582, 3, 108, 54, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1585, 1, 0, 0, 0, 1583, 1585, 5, 320, 0, 0, 1584, 1568, 1, 0, 0, 0, 1584, 1576, 1, 0, 0, 0, 1584, 1583, 1, 0, 0, 0, 1585, 71, 1, 0, 0, 0, 1586, 1587, 6, 36, -1, 0, 1587, 1588, 3, 78, 39, 0, 1588, 1607, 1, 0, 0, 0, 1589, 1603, 10, 2, 0, 0, 1590, 1591, 5, 54, 0, 0, 1591, 1592, 5, 136, 0, 0, 1592, 1604, 3, 78, 39, 0, 1593, 1594, 3, 74, 37, 0, 1594, 1595, 5, 136, 0, 0, 1595, 1596, 3, 72, 36, 0, 1596, 1597, 3, 76, 38, 0, 1597, 1604, 1, 0, 0, 0, 1598, 1599, 5, 172, 0, 0, 1599, 1600, 3, 74, 37, 0, 1600, 1601, 5, 136, 0, 0, 1601, 1602, 3, 78, 39, 0, 1602, 1604, 1, 0, 0, 0, 1603, 1590, 1, 0, 0, 0, 1603, 1593, 1, 0, 0, 0, 1603, 1598, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, 1589, 1, 0, 0, 0, 1606, 1609, 1, 0, 0, 0, 1607, 1605, 1, 0, 0, 0, 1607, 1608, 1, 0, 0, 0, 1608, 73, 1, 0, 0, 0, 1609, 1607, 1, 0, 0, 0, 1610, 1612, 5, 125, 0, 0, 1611, 1610, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1626, 1, 0, 0, 0, 1613, 1615, 5, 152, 0, 0, 1614, 1616, 5, 197, 0, 0, 1615, 1614, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1626, 1, 0, 0, 0, 1617, 1619, 5, 234, 0, 0, 1618, 1620, 5, 197, 0, 0, 1619, 1618, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1626, 1, 0, 0, 0, 1621, 1623, 5, 106, 0, 0, 1622, 1624, 5, 197, 0, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1626, 1, 0, 0, 0, 1625, 1611, 1, 0, 0, 0, 1625, 1613, 1, 0, 0, 0, 1625, 1617, 1, 0, 0, 0, 1625, 1621, 1, 0, 0, 0, 1626, 75, 1, 0, 0, 0, 1627, 1628, 5, 190, 0, 0, 1628, 1642, 3, 138, 69, 0, 1629, 1630, 5, 290, 0, 0, 1630, 1631, 5, 1, 0, 0, 1631, 1636, 3, 294, 147, 0, 1632, 1633, 5, 3, 0, 0, 1633, 1635, 3, 294, 147, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1638, 1, 0, 0, 0, 1636, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1639, 1640, 5, 2, 0, 0, 1640, 1642, 1, 0, 0, 0, 1641, 1627, 1, 0, 0, 0, 1641, 1629, 1, 0, 0, 0, 1642, 77, 1, 0, 0, 0, 1643, 1650, 3, 88, 44, 0, 1644, 1645, 5, 262, 0, 0, 1645, 1646, 3, 80, 40, 0, 1646, 1647, 5, 1, 0, 0, 1647, 1648, 3, 136, 68, 0, 1648, 1649, 5, 2, 0, 0, 1649, 1651, 1, 0, 0, 0, 1650, 1644, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 79, 1, 0, 0, 0, 1652, 1653, 7, 11, 0, 0, 1653, 81, 1, 0, 0, 0, 1654, 1655, 7, 12, 0, 0, 1655, 83, 1, 0, 0, 0, 1656, 1663, 5, 89, 0, 0, 1657, 1659, 5, 274, 0, 0, 1658, 1660, 3, 168, 84, 0, 1659, 1658, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1663, 3, 86, 43, 0, 1662, 1656, 1, 0, 0, 0, 1662, 1657, 1, 0, 0, 0, 1663, 85, 1, 0, 0, 0, 1664, 1665, 5, 304, 0, 0, 1665, 1669, 5, 51, 0, 0, 1666, 1667, 5, 306, 0, 0, 1667, 1669, 5, 51, 0, 0, 1668, 1664, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1669, 87, 1, 0, 0, 0, 1670, 1753, 3, 102, 51, 0, 1671, 1672, 5, 166, 0, 0, 1672, 1683, 5, 1, 0, 0, 1673, 1674, 5, 201, 0, 0, 1674, 1675, 5, 36, 0, 0, 1675, 1680, 3, 136, 68, 0, 1676, 1677, 5, 3, 0, 0, 1677, 1679, 3, 136, 68, 0, 1678, 1676, 1, 0, 0, 0, 1679, 1682, 1, 0, 0, 0, 1680, 1678, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1684, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1683, 1673, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1695, 1, 0, 0, 0, 1685, 1686, 5, 195, 0, 0, 1686, 1687, 5, 36, 0, 0, 1687, 1692, 3, 50, 25, 0, 1688, 1689, 5, 3, 0, 0, 1689, 1691, 3, 50, 25, 0, 1690, 1688, 1, 0, 0, 0, 1691, 1694, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1696, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1695, 1685, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1706, 1, 0, 0, 0, 1697, 1698, 5, 168, 0, 0, 1698, 1703, 3, 90, 45, 0, 1699, 1700, 5, 3, 0, 0, 1700, 1702, 3, 90, 45, 0, 1701, 1699, 1, 0, 0, 0, 1702, 1705, 1, 0, 0, 0, 1703, 1701, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1707, 1, 0, 0, 0, 1705, 1703, 1, 0, 0, 0, 1706, 1697, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1709, 1, 0, 0, 0, 1708, 1710, 3, 92, 46, 0, 1709, 1708, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1714, 1, 0, 0, 0, 1711, 1712, 5, 21, 0, 0, 1712, 1713, 5, 163, 0, 0, 1713, 1715, 3, 96, 48, 0, 1714, 1711, 1, 0, 0, 0, 1714, 1715, 1, 0, 0, 0, 1715, 1717, 1, 0, 0, 0, 1716, 1718, 7, 13, 0, 0, 1717, 1716, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1719, 1, 0, 0, 0, 1719, 1720, 5, 206, 0, 0, 1720, 1721, 5, 1, 0, 0, 1721, 1722, 3, 204, 102, 0, 1722, 1732, 5, 2, 0, 0, 1723, 1724, 5, 257, 0, 0, 1724, 1729, 3, 98, 49, 0, 1725, 1726, 5, 3, 0, 0, 1726, 1728, 3, 98, 49, 0, 1727, 1725, 1, 0, 0, 0, 1728, 1731, 1, 0, 0, 0, 1729, 1727, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1733, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1732, 1723, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1735, 5, 71, 0, 0, 1735, 1740, 3, 100, 50, 0, 1736, 1737, 5, 3, 0, 0, 1737, 1739, 3, 100, 50, 0, 1738, 1736, 1, 0, 0, 0, 1739, 1742, 1, 0, 0, 0, 1740, 1738, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1743, 1, 0, 0, 0, 1742, 1740, 1, 0, 0, 0, 1743, 1751, 5, 2, 0, 0, 1744, 1746, 5, 28, 0, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1749, 3, 294, 147, 0, 1748, 1750, 3, 108, 54, 0, 1749, 1748, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1752, 1, 0, 0, 0, 1751, 1745, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1754, 1, 0, 0, 0, 1753, 1671, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 89, 1, 0, 0, 0, 1755, 1756, 3, 136, 68, 0, 1756, 1757, 5, 28, 0, 0, 1757, 1758, 3, 294, 147, 0, 1758, 91, 1, 0, 0, 0, 1759, 1760, 5, 191, 0, 0, 1760, 1761, 5, 239, 0, 0, 1761, 1762, 5, 207, 0, 0, 1762, 1771, 5, 163, 0, 0, 1763, 1764, 5, 22, 0, 0, 1764, 1765, 5, 240, 0, 0, 1765, 1766, 5, 207, 0, 0, 1766, 1768, 5, 163, 0, 0, 1767, 1769, 3, 94, 47, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1771, 1, 0, 0, 0, 1770, 1759, 1, 0, 0, 0, 1770, 1763, 1, 0, 0, 0, 1771, 93, 1, 0, 0, 0, 1772, 1773, 5, 253, 0, 0, 1773, 1774, 5, 85, 0, 0, 1774, 1782, 5, 165, 0, 0, 1775, 1776, 5, 189, 0, 0, 1776, 1777, 5, 85, 0, 0, 1777, 1782, 5, 165, 0, 0, 1778, 1779, 5, 304, 0, 0, 1779, 1780, 5, 284, 0, 0, 1780, 1782, 5, 240, 0, 0, 1781, 1772, 1, 0, 0, 0, 1781, 1775, 1, 0, 0, 0, 1781, 1778, 1, 0, 0, 0, 1782, 95, 1, 0, 0, 0, 1783, 1784, 5, 5, 0, 0, 1784, 1785, 5, 269, 0, 0, 1785, 1786, 5, 174, 0, 0, 1786, 1803, 5, 239, 0, 0, 1787, 1788, 5, 5, 0, 0, 1788, 1789, 5, 204, 0, 0, 1789, 1790, 5, 148, 0, 0, 1790, 1803, 5, 239, 0, 0, 1791, 1792, 5, 5, 0, 0, 1792, 1793, 5, 269, 0, 0, 1793, 1794, 5, 101, 0, 0, 1794, 1803, 3, 294, 147, 0, 1795, 1796, 5, 5, 0, 0, 1796, 1797, 5, 269, 0, 0, 1797, 1798, 5, 148, 0, 0, 1798, 1803, 3, 294, 147, 0, 1799, 1800, 5, 5, 0, 0, 1800, 1801, 5, 269, 0, 0, 1801, 1803, 3, 294, 147, 0, 1802, 1783, 1, 0, 0, 0, 1802, 1787, 1, 0, 0, 0, 1802, 1791, 1, 0, 0, 0, 1802, 1795, 1, 0, 0, 0, 1802, 1799, 1, 0, 0, 0, 1803, 97, 1, 0, 0, 0, 1804, 1805, 3, 294, 147, 0, 1805, 1806, 5, 312, 0, 0, 1806, 1807, 5, 1, 0, 0, 1807, 1812, 3, 294, 147, 0, 1808, 1809, 5, 3, 0, 0, 1809, 1811, 3, 294, 147, 0, 1810, 1808, 1, 0, 0, 0, 1811, 1814, 1, 0, 0, 0, 1812, 1810, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1815, 1, 0, 0, 0, 1814, 1812, 1, 0, 0, 0, 1815, 1816, 5, 2, 0, 0, 1816, 99, 1, 0, 0, 0, 1817, 1818, 3, 294, 147, 0, 1818, 1819, 5, 28, 0, 0, 1819, 1820, 3, 136, 68, 0, 1820, 101, 1, 0, 0, 0, 1821, 1829, 3, 110, 55, 0, 1822, 1824, 5, 28, 0, 0, 1823, 1822, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1827, 3, 294, 147, 0, 1826, 1828, 3, 108, 54, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1830, 1, 0, 0, 0, 1829, 1823, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 103, 1, 0, 0, 0, 1831, 1832, 5, 1, 0, 0, 1832, 1837, 3, 278, 139, 0, 1833, 1834, 5, 3, 0, 0, 1834, 1836, 3, 278, 139, 0, 1835, 1833, 1, 0, 0, 0, 1836, 1839, 1, 0, 0, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1840, 1, 0, 0, 0, 1839, 1837, 1, 0, 0, 0, 1840, 1841, 5, 2, 0, 0, 1841, 105, 1, 0, 0, 0, 1842, 1843, 5, 1, 0, 0, 1843, 1848, 3, 276, 138, 0, 1844, 1845, 5, 3, 0, 0, 1845, 1847, 3, 276, 138, 0, 1846, 1844, 1, 0, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 1851, 1, 0, 0, 0, 1850, 1848, 1, 0, 0, 0, 1851, 1852, 5, 2, 0, 0, 1852, 107, 1, 0, 0, 0, 1853, 1854, 5, 1, 0, 0, 1854, 1859, 3, 294, 147, 0, 1855, 1856, 5, 3, 0, 0, 1856, 1858, 3, 294, 147, 0, 1857, 1855, 1, 0, 0, 0, 1858, 1861, 1, 0, 0, 0, 1859, 1857, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 1862, 1, 0, 0, 0, 1861, 1859, 1, 0, 0, 0, 1862, 1863, 5, 2, 0, 0, 1863, 109, 1, 0, 0, 0, 1864, 1866, 3, 254, 127, 0, 1865, 1867, 3, 282, 141, 0, 1866, 1865, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 1936, 1, 0, 0, 0, 1868, 1869, 5, 1, 0, 0, 1869, 1870, 3, 22, 11, 0, 1870, 1871, 5, 2, 0, 0, 1871, 1936, 1, 0, 0, 0, 1872, 1873, 5, 285, 0, 0, 1873, 1874, 5, 1, 0, 0, 1874, 1879, 3, 136, 68, 0, 1875, 1876, 5, 3, 0, 0, 1876, 1878, 3, 136, 68, 0, 1877, 1875, 1, 0, 0, 0, 1878, 1881, 1, 0, 0, 0, 1879, 1877, 1, 0, 0, 0, 1879, 1880, 1, 0, 0, 0, 1880, 1882, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1882, 1885, 5, 2, 0, 0, 1883, 1884, 5, 304, 0, 0, 1884, 1886, 5, 196, 0, 0, 1885, 1883, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1936, 1, 0, 0, 0, 1887, 1888, 5, 149, 0, 0, 1888, 1889, 5, 1, 0, 0, 1889, 1890, 3, 22, 11, 0, 1890, 1891, 5, 2, 0, 0, 1891, 1936, 1, 0, 0, 0, 1892, 1893, 5, 260, 0, 0, 1893, 1894, 5, 1, 0, 0, 1894, 1895, 3, 122, 61, 0, 1895, 1896, 5, 2, 0, 0, 1896, 1936, 1, 0, 0, 0, 1897, 1898, 5, 1, 0, 0, 1898, 1899, 3, 72, 36, 0, 1899, 1900, 5, 2, 0, 0, 1900, 1936, 1, 0, 0, 0, 1901, 1902, 5, 142, 0, 0, 1902, 1903, 5, 1, 0, 0, 1903, 1904, 3, 146, 73, 0, 1904, 1905, 5, 45, 0, 0, 1905, 1906, 5, 1, 0, 0, 1906, 1911, 3, 112, 56, 0, 1907, 1908, 5, 3, 0, 0, 1908, 1910, 3, 112, 56, 0, 1909, 1907, 1, 0, 0, 0, 1910, 1913, 1, 0, 0, 0, 1911, 1909, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 1, 0, 0, 0, 1913, 1911, 1, 0, 0, 0, 1914, 1926, 5, 2, 0, 0, 1915, 1916, 5, 210, 0, 0, 1916, 1917, 5, 1, 0, 0, 1917, 1918, 3, 114, 57, 0, 1918, 1919, 5, 2, 0, 0, 1919, 1927, 1, 0, 0, 0, 1920, 1921, 5, 210, 0, 0, 1921, 1922, 5, 70, 0, 0, 1922, 1923, 5, 1, 0, 0, 1923, 1924, 3, 120, 60, 0, 1924, 1925, 5, 2, 0, 0, 1925, 1927, 1, 0, 0, 0, 1926, 1915, 1, 0, 0, 0, 1926, 1920, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1931, 1, 0, 0, 0, 1928, 1929, 7, 14, 0, 0, 1929, 1930, 5, 190, 0, 0, 1930, 1932, 5, 89, 0, 0, 1931, 1928, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1933, 1, 0, 0, 0, 1933, 1934, 5, 2, 0, 0, 1934, 1936, 1, 0, 0, 0, 1935, 1864, 1, 0, 0, 0, 1935, 1868, 1, 0, 0, 0, 1935, 1872, 1, 0, 0, 0, 1935, 1887, 1, 0, 0, 0, 1935, 1892, 1, 0, 0, 0, 1935, 1897, 1, 0, 0, 0, 1935, 1901, 1, 0, 0, 0, 1936, 111, 1, 0, 0, 0, 1937, 1938, 3, 294, 147, 0, 1938, 1939, 5, 103, 0, 0, 1939, 1940, 5, 196, 0, 0, 1940, 2015, 1, 0, 0, 0, 1941, 1942, 3, 294, 147, 0, 1942, 1945, 3, 184, 92, 0, 1943, 1944, 5, 205, 0, 0, 1944, 1946, 3, 168, 84, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1951, 1, 0, 0, 0, 1947, 1948, 3, 156, 78, 0, 1948, 1949, 5, 190, 0, 0, 1949, 1950, 5, 85, 0, 0, 1950, 1952, 1, 0, 0, 0, 1951, 1947, 1, 0, 0, 0, 1951, 1952, 1, 0, 0, 0, 1952, 1957, 1, 0, 0, 0, 1953, 1954, 3, 156, 78, 0, 1954, 1955, 5, 190, 0, 0, 1955, 1956, 5, 89, 0, 0, 1956, 1958, 1, 0, 0, 0, 1957, 1953, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 2015, 1, 0, 0, 0, 1959, 1960, 3, 294, 147, 0, 1960, 1961, 3, 184, 92, 0, 1961, 1962, 5, 104, 0, 0, 1962, 1965, 3, 150, 75, 0, 1963, 1964, 5, 205, 0, 0, 1964, 1966, 3, 168, 84, 0, 1965, 1963, 1, 0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 1970, 1, 0, 0, 0, 1967, 1968, 3, 158, 79, 0, 1968, 1969, 5, 308, 0, 0, 1969, 1971, 1, 0, 0, 0, 1970, 1967, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1979, 1, 0, 0, 0, 1972, 1973, 7, 15, 0, 0, 1973, 1977, 5, 218, 0, 0, 1974, 1975, 5, 190, 0, 0, 1975, 1976, 5, 242, 0, 0, 1976, 1978, 5, 264, 0, 0, 1977, 1974, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0, 1979, 1972, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1985, 1, 0, 0, 0, 1981, 1982, 3, 160, 80, 0, 1982, 1983, 5, 190, 0, 0, 1983, 1984, 5, 85, 0, 0, 1984, 1986, 1, 0, 0, 0, 1985, 1981, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1991, 1, 0, 0, 0, 1987, 1988, 3, 160, 80, 0, 1988, 1989, 5, 190, 0, 0, 1989, 1990, 5, 89, 0, 0, 1990, 1992, 1, 0, 0, 0, 1991, 1987, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 2015, 1, 0, 0, 0, 1993, 1995, 5, 173, 0, 0, 1994, 1996, 5, 205, 0, 0, 1995, 1994, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 2000, 3, 168, 84, 0, 1998, 1999, 5, 28, 0, 0, 1999, 2001, 3, 294, 147, 0, 2000, 1998, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 5, 45, 0, 0, 2003, 2004, 5, 1, 0, 0, 2004, 2009, 3, 112, 56, 0, 2005, 2006, 5, 3, 0, 0, 2006, 2008, 3, 112, 56, 0, 2007, 2005, 1, 0, 0, 0, 2008, 2011, 1, 0, 0, 0, 2009, 2007, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2012, 1, 0, 0, 0, 2011, 2009, 1, 0, 0, 0, 2012, 2013, 5, 2, 0, 0, 2013, 2015, 1, 0, 0, 0, 2014, 1937, 1, 0, 0, 0, 2014, 1941, 1, 0, 0, 0, 2014, 1959, 1, 0, 0, 0, 2014, 1993, 1, 0, 0, 0, 2015, 113, 1, 0, 0, 0, 2016, 2042, 3, 116, 58, 0, 2017, 2018, 3, 116, 58, 0, 2018, 2019, 7, 16, 0, 0, 2019, 2020, 3, 118, 59, 0, 2020, 2042, 1, 0, 0, 0, 2021, 2022, 3, 118, 59, 0, 2022, 2023, 5, 281, 0, 0, 2023, 2028, 3, 118, 59, 0, 2024, 2025, 5, 281, 0, 0, 2025, 2027, 3, 118, 59, 0, 2026, 2024, 1, 0, 0, 0, 2027, 2030, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2042, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2031, 2032, 3, 118, 59, 0, 2032, 2033, 5, 54, 0, 0, 2033, 2038, 3, 118, 59, 0, 2034, 2035, 5, 54, 0, 0, 2035, 2037, 3, 118, 59, 0, 2036, 2034, 1, 0, 0, 0, 2037, 2040, 1, 0, 0, 0, 2038, 2036, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2042, 1, 0, 0, 0, 2040, 2038, 1, 0, 0, 0, 2041, 2016, 1, 0, 0, 0, 2041, 2017, 1, 0, 0, 0, 2041, 2021, 1, 0, 0, 0, 2041, 2031, 1, 0, 0, 0, 2042, 115, 1, 0, 0, 0, 2043, 2044, 3, 294, 147, 0, 2044, 117, 1, 0, 0, 0, 2045, 2051, 3, 116, 58, 0, 2046, 2047, 5, 1, 0, 0, 2047, 2048, 3, 114, 57, 0, 2048, 2049, 5, 2, 0, 0, 2049, 2051, 1, 0, 0, 0, 2050, 2045, 1, 0, 0, 0, 2050, 2046, 1, 0, 0, 0, 2051, 119, 1, 0, 0, 0, 2052, 2055, 7, 16, 0, 0, 2053, 2054, 5, 3, 0, 0, 2054, 2056, 7, 17, 0, 0, 2055, 2053, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2063, 1, 0, 0, 0, 2057, 2060, 7, 17, 0, 0, 2058, 2059, 5, 3, 0, 0, 2059, 2061, 7, 16, 0, 0, 2060, 2058, 1, 0, 0, 0, 2060, 2061, 1, 0, 0, 0, 2061, 2063, 1, 0, 0, 0, 2062, 2052, 1, 0, 0, 0, 2062, 2057, 1, 0, 0, 0, 2063, 121, 1, 0, 0, 0, 2064, 2065, 3, 272, 136, 0, 2065, 2074, 5, 1, 0, 0, 2066, 2071, 3, 124, 62, 0, 2067, 2068, 5, 3, 0, 0, 2068, 2070, 3, 124, 62, 0, 2069, 2067, 1, 0, 0, 0, 2070, 2073, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2074, 2066, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2085, 1, 0, 0, 0, 2076, 2077, 5, 52, 0, 0, 2077, 2082, 3, 134, 67, 0, 2078, 2079, 5, 3, 0, 0, 2079, 2081, 3, 134, 67, 0, 2080, 2078, 1, 0, 0, 0, 2081, 2084, 1, 0, 0, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2086, 1, 0, 0, 0, 2084, 2082, 1, 0, 0, 0, 2085, 2076, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2088, 5, 2, 0, 0, 2088, 123, 1, 0, 0, 0, 2089, 2090, 3, 294, 147, 0, 2090, 2091, 5, 6, 0, 0, 2091, 2093, 1, 0, 0, 0, 2092, 2089, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2097, 1, 0, 0, 0, 2094, 2098, 3, 126, 63, 0, 2095, 2098, 3, 130, 65, 0, 2096, 2098, 3, 136, 68, 0, 2097, 2094, 1, 0, 0, 0, 2097, 2095, 1, 0, 0, 0, 2097, 2096, 1, 0, 0, 0, 2098, 125, 1, 0, 0, 0, 2099, 2117, 3, 128, 64, 0, 2100, 2101, 5, 201, 0, 0, 2101, 2115, 5, 36, 0, 0, 2102, 2111, 5, 1, 0, 0, 2103, 2108, 3, 136, 68, 0, 2104, 2105, 5, 3, 0, 0, 2105, 2107, 3, 136, 68, 0, 2106, 2104, 1, 0, 0, 0, 2107, 2110, 1, 0, 0, 0, 2108, 2106, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2112, 1, 0, 0, 0, 2110, 2108, 1, 0, 0, 0, 2111, 2103, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2116, 5, 2, 0, 0, 2114, 2116, 3, 136, 68, 0, 2115, 2102, 1, 0, 0, 0, 2115, 2114, 1, 0, 0, 0, 2116, 2118, 1, 0, 0, 0, 2117, 2100, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, 2125, 1, 0, 0, 0, 2119, 2120, 5, 217, 0, 0, 2120, 2121, 5, 300, 0, 0, 2121, 2126, 5, 85, 0, 0, 2122, 2123, 5, 144, 0, 0, 2123, 2124, 5, 300, 0, 0, 2124, 2126, 5, 85, 0, 0, 2125, 2119, 1, 0, 0, 0, 2125, 2122, 1, 0, 0, 0, 2125, 2126, 1, 0, 0, 0, 2126, 2143, 1, 0, 0, 0, 2127, 2128, 5, 195, 0, 0, 2128, 2141, 5, 36, 0, 0, 2129, 2130, 5, 1, 0, 0, 2130, 2135, 3, 50, 25, 0, 2131, 2132, 5, 3, 0, 0, 2132, 2134, 3, 50, 25, 0, 2133, 2131, 1, 0, 0, 0, 2134, 2137, 1, 0, 0, 0, 2135, 2133, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2138, 1, 0, 0, 0, 2137, 2135, 1, 0, 0, 0, 2138, 2139, 5, 2, 0, 0, 2139, 2142, 1, 0, 0, 0, 2140, 2142, 3, 50, 25, 0, 2141, 2129, 1, 0, 0, 0, 2141, 2140, 1, 0, 0, 0, 2142, 2144, 1, 0, 0, 0, 2143, 2127, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 127, 1, 0, 0, 0, 2145, 2146, 5, 260, 0, 0, 2146, 2147, 5, 1, 0, 0, 2147, 2148, 3, 256, 128, 0, 2148, 2156, 5, 2, 0, 0, 2149, 2151, 5, 28, 0, 0, 2150, 2149, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2154, 3, 294, 147, 0, 2153, 2155, 3, 108, 54, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2157, 1, 0, 0, 0, 2156, 2150, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2172, 1, 0, 0, 0, 2158, 2159, 5, 260, 0, 0, 2159, 2160, 5, 1, 0, 0, 2160, 2161, 3, 22, 11, 0, 2161, 2169, 5, 2, 0, 0, 2162, 2164, 5, 28, 0, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2167, 3, 294, 147, 0, 2166, 2168, 3, 108, 54, 0, 2167, 2166, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2170, 1, 0, 0, 0, 2169, 2163, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 1, 0, 0, 0, 2171, 2145, 1, 0, 0, 0, 2171, 2158, 1, 0, 0, 0, 2172, 129, 1, 0, 0, 0, 2173, 2174, 5, 77, 0, 0, 2174, 2175, 5, 1, 0, 0, 2175, 2180, 3, 132, 66, 0, 2176, 2177, 5, 3, 0, 0, 2177, 2179, 3, 132, 66, 0, 2178, 2176, 1, 0, 0, 0, 2179, 2182, 1, 0, 0, 0, 2180, 2178, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2183, 1, 0, 0, 0, 2182, 2180, 1, 0, 0, 0, 2183, 2184, 5, 2, 0, 0, 2184, 2192, 1, 0, 0, 0, 2185, 2186, 5, 41, 0, 0, 2186, 2187, 5, 1, 0, 0, 2187, 2188, 5, 183, 0, 0, 2188, 2189, 5, 28, 0, 0, 2189, 2190, 5, 77, 0, 0, 2190, 2192, 5, 2, 0, 0, 2191, 2173, 1, 0, 0, 0, 2191, 2185, 1, 0, 0, 0, 2192, 131, 1, 0, 0, 0, 2193, 2195, 3, 294, 147, 0, 2194, 2196, 3, 184, 92, 0, 2195, 2194, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 133, 1, 0, 0, 0, 2197, 2198, 5, 1, 0, 0, 2198, 2199, 3, 280, 140, 0, 2199, 2200, 5, 3, 0, 0, 2200, 2205, 3, 280, 140, 0, 2201, 2202, 5, 3, 0, 0, 2202, 2204, 3, 280, 140, 0, 2203, 2201, 1, 0, 0, 0, 2204, 2207, 1, 0, 0, 0, 2205, 2203, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 2208, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2209, 5, 2, 0, 0, 2209, 135, 1, 0, 0, 0, 2210, 2211, 3, 138, 69, 0, 2211, 137, 1, 0, 0, 0, 2212, 2213, 6, 69, -1, 0, 2213, 2215, 3, 142, 71, 0, 2214, 2216, 3, 140, 70, 0, 2215, 2214, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2220, 1, 0, 0, 0, 2217, 2218, 5, 182, 0, 0, 2218, 2220, 3, 138, 69, 3, 2219, 2212, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2220, 2229, 1, 0, 0, 0, 2221, 2222, 10, 2, 0, 0, 2222, 2223, 5, 25, 0, 0, 2223, 2228, 3, 138, 69, 3, 2224, 2225, 10, 1, 0, 0, 2225, 2226, 5, 194, 0, 0, 2226, 2228, 3, 138, 69, 2, 2227, 2221, 1, 0, 0, 0, 2227, 2224, 1, 0, 0, 0, 2228, 2231, 1, 0, 0, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 139, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2232, 2233, 3, 172, 86, 0, 2233, 2234, 3, 142, 71, 0, 2234, 2294, 1, 0, 0, 0, 2235, 2236, 3, 172, 86, 0, 2236, 2237, 3, 174, 87, 0, 2237, 2238, 5, 1, 0, 0, 2238, 2239, 3, 22, 11, 0, 2239, 2240, 5, 2, 0, 0, 2240, 2294, 1, 0, 0, 0, 2241, 2243, 5, 182, 0, 0, 2242, 2241, 1, 0, 0, 0, 2242, 2243, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2245, 5, 34, 0, 0, 2245, 2246, 3, 142, 71, 0, 2246, 2247, 5, 25, 0, 0, 2247, 2248, 3, 142, 71, 0, 2248, 2294, 1, 0, 0, 0, 2249, 2251, 5, 182, 0, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2253, 5, 122, 0, 0, 2253, 2254, 5, 1, 0, 0, 2254, 2259, 3, 136, 68, 0, 2255, 2256, 5, 3, 0, 0, 2256, 2258, 3, 136, 68, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2261, 1, 0, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2262, 1, 0, 0, 0, 2261, 2259, 1, 0, 0, 0, 2262, 2263, 5, 2, 0, 0, 2263, 2294, 1, 0, 0, 0, 2264, 2266, 5, 182, 0, 0, 2265, 2264, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2268, 5, 122, 0, 0, 2268, 2269, 5, 1, 0, 0, 2269, 2270, 3, 22, 11, 0, 2270, 2271, 5, 2, 0, 0, 2271, 2294, 1, 0, 0, 0, 2272, 2274, 5, 182, 0, 0, 2273, 2272, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2276, 5, 154, 0, 0, 2276, 2279, 3, 142, 71, 0, 2277, 2278, 5, 90, 0, 0, 2278, 2280, 3, 142, 71, 0, 2279, 2277, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2294, 1, 0, 0, 0, 2281, 2283, 5, 133, 0, 0, 2282, 2284, 5, 182, 0, 0, 2283, 2282, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2294, 5, 183, 0, 0, 2286, 2288, 5, 133, 0, 0, 2287, 2289, 5, 182, 0, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2291, 5, 79, 0, 0, 2291, 2292, 5, 105, 0, 0, 2292, 2294, 3, 142, 71, 0, 2293, 2232, 1, 0, 0, 0, 2293, 2235, 1, 0, 0, 0, 2293, 2242, 1, 0, 0, 0, 2293, 2250, 1, 0, 0, 0, 2293, 2265, 1, 0, 0, 0, 2293, 2273, 1, 0, 0, 0, 2293, 2281, 1, 0, 0, 0, 2293, 2286, 1, 0, 0, 0, 2294, 141, 1, 0, 0, 0, 2295, 2296, 6, 71, -1, 0, 2296, 2300, 3, 144, 72, 0, 2297, 2298, 7, 18, 0, 0, 2298, 2300, 3, 142, 71, 4, 2299, 2295, 1, 0, 0, 0, 2299, 2297, 1, 0, 0, 0, 2300, 2315, 1, 0, 0, 0, 2301, 2302, 10, 3, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2314, 3, 142, 71, 4, 2304, 2305, 10, 2, 0, 0, 2305, 2306, 7, 18, 0, 0, 2306, 2314, 3, 142, 71, 3, 2307, 2308, 10, 1, 0, 0, 2308, 2309, 5, 323, 0, 0, 2309, 2314, 3, 142, 71, 2, 2310, 2311, 10, 5, 0, 0, 2311, 2312, 5, 30, 0, 0, 2312, 2314, 3, 170, 85, 0, 2313, 2301, 1, 0, 0, 0, 2313, 2304, 1, 0, 0, 0, 2313, 2307, 1, 0, 0, 0, 2313, 2310, 1, 0, 0, 0, 2314, 2317, 1, 0, 0, 0, 2315, 2313, 1, 0, 0, 0, 2315, 2316, 1, 0, 0, 0, 2316, 143, 1, 0, 0, 0, 2317, 2315, 1, 0, 0, 0, 2318, 2319, 6, 72, -1, 0, 2319, 2772, 5, 183, 0, 0, 2320, 2772, 3, 178, 89, 0, 2321, 2322, 3, 294, 147, 0, 2322, 2323, 3, 168, 84, 0, 2323, 2772, 1, 0, 0, 0, 2324, 2325, 5, 82, 0, 0, 2325, 2326, 5, 213, 0, 0, 2326, 2772, 3, 168, 84, 0, 2327, 2772, 3, 296, 148, 0, 2328, 2772, 3, 176, 88, 0, 2329, 2772, 3, 168, 84, 0, 2330, 2772, 5, 328, 0, 0, 2331, 2772, 5, 324, 0, 0, 2332, 2333, 5, 211, 0, 0, 2333, 2334, 5, 1, 0, 0, 2334, 2335, 3, 142, 71, 0, 2335, 2336, 5, 122, 0, 0, 2336, 2337, 3, 142, 71, 0, 2337, 2338, 5, 2, 0, 0, 2338, 2772, 1, 0, 0, 0, 2339, 2340, 5, 1, 0, 0, 2340, 2343, 3, 136, 68, 0, 2341, 2342, 5, 3, 0, 0, 2342, 2344, 3, 136, 68, 0, 2343, 2341, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2343, 1, 0, 0, 0, 2345, 2346, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2348, 5, 2, 0, 0, 2348, 2772, 1, 0, 0, 0, 2349, 2350, 5, 239, 0, 0, 2350, 2351, 5, 1, 0, 0, 2351, 2356, 3, 136, 68, 0, 2352, 2353, 5, 3, 0, 0, 2353, 2355, 3, 136, 68, 0, 2354, 2352, 1, 0, 0, 0, 2355, 2358, 1, 0, 0, 0, 2356, 2354, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2356, 1, 0, 0, 0, 2359, 2360, 5, 2, 0, 0, 2360, 2772, 1, 0, 0, 0, 2361, 2362, 5, 156, 0, 0, 2362, 2364, 5, 1, 0, 0, 2363, 2365, 3, 68, 34, 0, 2364, 2363, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2369, 3, 136, 68, 0, 2367, 2368, 5, 3, 0, 0, 2368, 2370, 3, 168, 84, 0, 2369, 2367, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2374, 1, 0, 0, 0, 2371, 2372, 5, 190, 0, 0, 2372, 2373, 5, 200, 0, 0, 2373, 2375, 3, 84, 42, 0, 2374, 2371, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 5, 2, 0, 0, 2377, 2378, 5, 305, 0, 0, 2378, 2379, 5, 114, 0, 0, 2379, 2380, 5, 1, 0, 0, 2380, 2381, 5, 195, 0, 0, 2381, 2382, 5, 36, 0, 0, 2382, 2387, 3, 50, 25, 0, 2383, 2384, 5, 3, 0, 0, 2384, 2386, 3, 50, 25, 0, 2385, 2383, 1, 0, 0, 0, 2386, 2389, 1, 0, 0, 0, 2387, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2390, 1, 0, 0, 0, 2389, 2387, 1, 0, 0, 0, 2390, 2391, 5, 2, 0, 0, 2391, 2393, 1, 0, 0, 0, 2392, 2394, 3, 192, 96, 0, 2393, 2392, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2772, 1, 0, 0, 0, 2395, 2397, 3, 164, 82, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2399, 3, 272, 136, 0, 2399, 2403, 5, 1, 0, 0, 2400, 2401, 3, 294, 147, 0, 2401, 2402, 5, 4, 0, 0, 2402, 2404, 1, 0, 0, 0, 2403, 2400, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2406, 5, 320, 0, 0, 2406, 2408, 5, 2, 0, 0, 2407, 2409, 3, 192, 96, 0, 2408, 2407, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2411, 1, 0, 0, 0, 2410, 2412, 3, 196, 98, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2772, 1, 0, 0, 0, 2413, 2415, 3, 164, 82, 0, 2414, 2413, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2417, 3, 272, 136, 0, 2417, 2429, 5, 1, 0, 0, 2418, 2420, 3, 68, 34, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2426, 3, 136, 68, 0, 2422, 2423, 5, 3, 0, 0, 2423, 2425, 3, 136, 68, 0, 2424, 2422, 1, 0, 0, 0, 2425, 2428, 1, 0, 0, 0, 2426, 2424, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2430, 1, 0, 0, 0, 2428, 2426, 1, 0, 0, 0, 2429, 2419, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2441, 1, 0, 0, 0, 2431, 2432, 5, 195, 0, 0, 2432, 2433, 5, 36, 0, 0, 2433, 2438, 3, 50, 25, 0, 2434, 2435, 5, 3, 0, 0, 2435, 2437, 3, 50, 25, 0, 2436, 2434, 1, 0, 0, 0, 2437, 2440, 1, 0, 0, 0, 2438, 2436, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2442, 1, 0, 0, 0, 2440, 2438, 1, 0, 0, 0, 2441, 2431, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2445, 5, 2, 0, 0, 2444, 2446, 3, 192, 96, 0, 2445, 2444, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2451, 1, 0, 0, 0, 2447, 2449, 3, 166, 83, 0, 2448, 2447, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2450, 1, 0, 0, 0, 2450, 2452, 3, 196, 98, 0, 2451, 2448, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2772, 1, 0, 0, 0, 2453, 2454, 3, 294, 147, 0, 2454, 2455, 3, 196, 98, 0, 2455, 2772, 1, 0, 0, 0, 2456, 2457, 3, 294, 147, 0, 2457, 2458, 5, 7, 0, 0, 2458, 2459, 3, 136, 68, 0, 2459, 2772, 1, 0, 0, 0, 2460, 2469, 5, 1, 0, 0, 2461, 2466, 3, 294, 147, 0, 2462, 2463, 5, 3, 0, 0, 2463, 2465, 3, 294, 147, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2468, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2470, 1, 0, 0, 0, 2468, 2466, 1, 0, 0, 0, 2469, 2461, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2471, 1, 0, 0, 0, 2471, 2472, 5, 2, 0, 0, 2472, 2473, 5, 7, 0, 0, 2473, 2772, 3, 136, 68, 0, 2474, 2475, 5, 1, 0, 0, 2475, 2476, 3, 22, 11, 0, 2476, 2477, 5, 2, 0, 0, 2477, 2772, 1, 0, 0, 0, 2478, 2479, 5, 94, 0, 0, 2479, 2480, 5, 1, 0, 0, 2480, 2481, 3, 22, 11, 0, 2481, 2482, 5, 2, 0, 0, 2482, 2772, 1, 0, 0, 0, 2483, 2484, 5, 40, 0, 0, 2484, 2486, 3, 136, 68, 0, 2485, 2487, 3, 190, 95, 0, 2486, 2485, 1, 0, 0, 0, 2487, 2488, 1, 0, 0, 0, 2488, 2486, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2492, 1, 0, 0, 0, 2490, 2491, 5, 84, 0, 0, 2491, 2493, 3, 136, 68, 0, 2492, 2490, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2495, 5, 88, 0, 0, 2495, 2772, 1, 0, 0, 0, 2496, 2498, 5, 40, 0, 0, 2497, 2499, 3, 190, 95, 0, 2498, 2497, 1, 0, 0, 0, 2499, 2500, 1, 0, 0, 0, 2500, 2498, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 2504, 1, 0, 0, 0, 2502, 2503, 5, 84, 0, 0, 2503, 2505, 3, 136, 68, 0, 2504, 2502, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2507, 5, 88, 0, 0, 2507, 2772, 1, 0, 0, 0, 2508, 2509, 5, 41, 0, 0, 2509, 2510, 5, 1, 0, 0, 2510, 2511, 3, 136, 68, 0, 2511, 2512, 5, 28, 0, 0, 2512, 2513, 3, 184, 92, 0, 2513, 2514, 5, 2, 0, 0, 2514, 2772, 1, 0, 0, 0, 2515, 2516, 5, 275, 0, 0, 2516, 2517, 5, 1, 0, 0, 2517, 2518, 3, 136, 68, 0, 2518, 2519, 5, 28, 0, 0, 2519, 2520, 3, 184, 92, 0, 2520, 2521, 5, 2, 0, 0, 2521, 2772, 1, 0, 0, 0, 2522, 2523, 5, 27, 0, 0, 2523, 2532, 5, 8, 0, 0, 2524, 2529, 3, 136, 68, 0, 2525, 2526, 5, 3, 0, 0, 2526, 2528, 3, 136, 68, 0, 2527, 2525, 1, 0, 0, 0, 2528, 2531, 1, 0, 0, 0, 2529, 2527, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2533, 1, 0, 0, 0, 2531, 2529, 1, 0, 0, 0, 2532, 2524, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2772, 5, 9, 0, 0, 2535, 2772, 3, 294, 147, 0, 2536, 2772, 5, 58, 0, 0, 2537, 2541, 5, 62, 0, 0, 2538, 2539, 5, 1, 0, 0, 2539, 2540, 5, 329, 0, 0, 2540, 2542, 5, 2, 0, 0, 2541, 2538, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 2772, 1, 0, 0, 0, 2543, 2547, 5, 63, 0, 0, 2544, 2545, 5, 1, 0, 0, 2545, 2546, 5, 329, 0, 0, 2546, 2548, 5, 2, 0, 0, 2547, 2544, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2772, 1, 0, 0, 0, 2549, 2553, 5, 158, 0, 0, 2550, 2551, 5, 1, 0, 0, 2551, 2552, 5, 329, 0, 0, 2552, 2554, 5, 2, 0, 0, 2553, 2550, 1, 0, 0, 0, 2553, 2554, 1, 0, 0, 0, 2554, 2772, 1, 0, 0, 0, 2555, 2559, 5, 159, 0, 0, 2556, 2557, 5, 1, 0, 0, 2557, 2558, 5, 329, 0, 0, 2558, 2560, 5, 2, 0, 0, 2559, 2556, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2772, 1, 0, 0, 0, 2561, 2772, 5, 64, 0, 0, 2562, 2772, 5, 57, 0, 0, 2563, 2772, 5, 61, 0, 0, 2564, 2772, 5, 59, 0, 0, 2565, 2566, 5, 272, 0, 0, 2566, 2574, 5, 1, 0, 0, 2567, 2569, 3, 82, 41, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2571, 1, 0, 0, 0, 2570, 2572, 3, 142, 71, 0, 2571, 2570, 1, 0, 0, 0, 2571, 2572, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2575, 5, 105, 0, 0, 2574, 2568, 1, 0, 0, 0, 2574, 2575, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2577, 3, 142, 71, 0, 2577, 2578, 5, 2, 0, 0, 2578, 2772, 1, 0, 0, 0, 2579, 2580, 5, 272, 0, 0, 2580, 2581, 5, 1, 0, 0, 2581, 2582, 3, 142, 71, 0, 2582, 2583, 5, 3, 0, 0, 2583, 2584, 3, 142, 71, 0, 2584, 2585, 5, 2, 0, 0, 2585, 2772, 1, 0, 0, 0, 2586, 2587, 5, 258, 0, 0, 2587, 2588, 5, 1, 0, 0, 2588, 2589, 3, 142, 71, 0, 2589, 2590, 5, 105, 0, 0, 2590, 2593, 3, 142, 71, 0, 2591, 2592, 5, 103, 0, 0, 2592, 2594, 3, 142, 71, 0, 2593, 2591, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2596, 5, 2, 0, 0, 2596, 2772, 1, 0, 0, 0, 2597, 2598, 5, 181, 0, 0, 2598, 2599, 5, 1, 0, 0, 2599, 2602, 3, 142, 71, 0, 2600, 2601, 5, 3, 0, 0, 2601, 2603, 3, 182, 91, 0, 2602, 2600, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2605, 5, 2, 0, 0, 2605, 2772, 1, 0, 0, 0, 2606, 2607, 5, 96, 0, 0, 2607, 2608, 5, 1, 0, 0, 2608, 2609, 3, 294, 147, 0, 2609, 2610, 5, 105, 0, 0, 2610, 2611, 3, 142, 71, 0, 2611, 2612, 5, 2, 0, 0, 2612, 2772, 1, 0, 0, 0, 2613, 2614, 5, 1, 0, 0, 2614, 2615, 3, 136, 68, 0, 2615, 2616, 5, 2, 0, 0, 2616, 2772, 1, 0, 0, 0, 2617, 2618, 5, 115, 0, 0, 2618, 2627, 5, 1, 0, 0, 2619, 2624, 3, 280, 140, 0, 2620, 2621, 5, 3, 0, 0, 2621, 2623, 3, 280, 140, 0, 2622, 2620, 1, 0, 0, 0, 2623, 2626, 1, 0, 0, 0, 2624, 2622, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2628, 1, 0, 0, 0, 2626, 2624, 1, 0, 0, 0, 2627, 2619, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2772, 5, 2, 0, 0, 2630, 2631, 5, 139, 0, 0, 2631, 2632, 5, 1, 0, 0, 2632, 2637, 3, 146, 73, 0, 2633, 2634, 3, 154, 77, 0, 2634, 2635, 5, 190, 0, 0, 2635, 2636, 5, 89, 0, 0, 2636, 2638, 1, 0, 0, 0, 2637, 2633, 1, 0, 0, 0, 2637, 2638, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 2640, 5, 2, 0, 0, 2640, 2772, 1, 0, 0, 0, 2641, 2642, 5, 143, 0, 0, 2642, 2643, 5, 1, 0, 0, 2643, 2646, 3, 146, 73, 0, 2644, 2645, 5, 231, 0, 0, 2645, 2647, 3, 184, 92, 0, 2646, 2644, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2652, 1, 0, 0, 0, 2648, 2649, 3, 156, 78, 0, 2649, 2650, 5, 190, 0, 0, 2650, 2651, 5, 85, 0, 0, 2651, 2653, 1, 0, 0, 0, 2652, 2648, 1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2658, 1, 0, 0, 0, 2654, 2655, 3, 156, 78, 0, 2655, 2656, 5, 190, 0, 0, 2656, 2657, 5, 89, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2654, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2661, 5, 2, 0, 0, 2661, 2772, 1, 0, 0, 0, 2662, 2663, 5, 141, 0, 0, 2663, 2664, 5, 1, 0, 0, 2664, 2671, 3, 146, 73, 0, 2665, 2666, 5, 231, 0, 0, 2666, 2669, 3, 184, 92, 0, 2667, 2668, 5, 104, 0, 0, 2668, 2670, 3, 150, 75, 0, 2669, 2667, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2672, 1, 0, 0, 0, 2671, 2665, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2676, 1, 0, 0, 0, 2673, 2674, 3, 158, 79, 0, 2674, 2675, 5, 308, 0, 0, 2675, 2677, 1, 0, 0, 0, 2676, 2673, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 2685, 1, 0, 0, 0, 2678, 2679, 7, 15, 0, 0, 2679, 2683, 5, 218, 0, 0, 2680, 2681, 5, 190, 0, 0, 2681, 2682, 5, 242, 0, 0, 2682, 2684, 5, 264, 0, 0, 2683, 2680, 1, 0, 0, 0, 2683, 2684, 1, 0, 0, 0, 2684, 2686, 1, 0, 0, 0, 2685, 2678, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2691, 1, 0, 0, 0, 2687, 2688, 3, 160, 80, 0, 2688, 2689, 5, 190, 0, 0, 2689, 2690, 5, 85, 0, 0, 2690, 2692, 1, 0, 0, 0, 2691, 2687, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2697, 1, 0, 0, 0, 2693, 2694, 3, 160, 80, 0, 2694, 2695, 5, 190, 0, 0, 2695, 2696, 5, 89, 0, 0, 2696, 2698, 1, 0, 0, 0, 2697, 2693, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2700, 5, 2, 0, 0, 2700, 2772, 1, 0, 0, 0, 2701, 2702, 5, 140, 0, 0, 2702, 2731, 5, 1, 0, 0, 2703, 2708, 3, 162, 81, 0, 2704, 2705, 5, 3, 0, 0, 2705, 2707, 3, 162, 81, 0, 2706, 2704, 1, 0, 0, 0, 2707, 2710, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2717, 1, 0, 0, 0, 2710, 2708, 1, 0, 0, 0, 2711, 2712, 5, 183, 0, 0, 2712, 2713, 5, 190, 0, 0, 2713, 2718, 5, 183, 0, 0, 2714, 2715, 5, 18, 0, 0, 2715, 2716, 5, 190, 0, 0, 2716, 2718, 5, 183, 0, 0, 2717, 2711, 1, 0, 0, 0, 2717, 2714, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2729, 1, 0, 0, 0, 2719, 2720, 5, 304, 0, 0, 2720, 2722, 5, 282, 0, 0, 2721, 2723, 5, 146, 0, 0, 2722, 2721, 1, 0, 0, 0, 2722, 2723, 1, 0, 0, 0, 2723, 2730, 1, 0, 0, 0, 2724, 2725, 5, 306, 0, 0, 2725, 2727, 5, 282, 0, 0, 2726, 2728, 5, 146, 0, 0, 2727, 2726, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2730, 1, 0, 0, 0, 2729, 2719, 1, 0, 0, 0, 2729, 2724, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2732, 1, 0, 0, 0, 2731, 2703, 1, 0, 0, 0, 2731, 2732, 1, 0, 0, 0, 2732, 2739, 1, 0, 0, 0, 2733, 2734, 5, 231, 0, 0, 2734, 2737, 3, 184, 92, 0, 2735, 2736, 5, 104, 0, 0, 2736, 2738, 3, 150, 75, 0, 2737, 2735, 1, 0, 0, 0, 2737, 2738, 1, 0, 0, 0, 2738, 2740, 1, 0, 0, 0, 2739, 2733, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2772, 5, 2, 0, 0, 2742, 2743, 5, 138, 0, 0, 2743, 2760, 5, 1, 0, 0, 2744, 2749, 3, 148, 74, 0, 2745, 2746, 5, 3, 0, 0, 2746, 2748, 3, 148, 74, 0, 2747, 2745, 1, 0, 0, 0, 2748, 2751, 1, 0, 0, 0, 2749, 2747, 1, 0, 0, 0, 2749, 2750, 1, 0, 0, 0, 2750, 2758, 1, 0, 0, 0, 2751, 2749, 1, 0, 0, 0, 2752, 2753, 5, 183, 0, 0, 2753, 2754, 5, 190, 0, 0, 2754, 2759, 5, 183, 0, 0, 2755, 2756, 5, 18, 0, 0, 2756, 2757, 5, 190, 0, 0, 2757, 2759, 5, 183, 0, 0, 2758, 2752, 1, 0, 0, 0, 2758, 2755, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2761, 1, 0, 0, 0, 2760, 2744, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2768, 1, 0, 0, 0, 2762, 2763, 5, 231, 0, 0, 2763, 2766, 3, 184, 92, 0, 2764, 2765, 5, 104, 0, 0, 2765, 2767, 3, 150, 75, 0, 2766, 2764, 1, 0, 0, 0, 2766, 2767, 1, 0, 0, 0, 2767, 2769, 1, 0, 0, 0, 2768, 2762, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2772, 5, 2, 0, 0, 2771, 2318, 1, 0, 0, 0, 2771, 2320, 1, 0, 0, 0, 2771, 2321, 1, 0, 0, 0, 2771, 2324, 1, 0, 0, 0, 2771, 2327, 1, 0, 0, 0, 2771, 2328, 1, 0, 0, 0, 2771, 2329, 1, 0, 0, 0, 2771, 2330, 1, 0, 0, 0, 2771, 2331, 1, 0, 0, 0, 2771, 2332, 1, 0, 0, 0, 2771, 2339, 1, 0, 0, 0, 2771, 2349, 1, 0, 0, 0, 2771, 2361, 1, 0, 0, 0, 2771, 2396, 1, 0, 0, 0, 2771, 2414, 1, 0, 0, 0, 2771, 2453, 1, 0, 0, 0, 2771, 2456, 1, 0, 0, 0, 2771, 2460, 1, 0, 0, 0, 2771, 2474, 1, 0, 0, 0, 2771, 2478, 1, 0, 0, 0, 2771, 2483, 1, 0, 0, 0, 2771, 2496, 1, 0, 0, 0, 2771, 2508, 1, 0, 0, 0, 2771, 2515, 1, 0, 0, 0, 2771, 2522, 1, 0, 0, 0, 2771, 2535, 1, 0, 0, 0, 2771, 2536, 1, 0, 0, 0, 2771, 2537, 1, 0, 0, 0, 2771, 2543, 1, 0, 0, 0, 2771, 2549, 1, 0, 0, 0, 2771, 2555, 1, 0, 0, 0, 2771, 2561, 1, 0, 0, 0, 2771, 2562, 1, 0, 0, 0, 2771, 2563, 1, 0, 0, 0, 2771, 2564, 1, 0, 0, 0, 2771, 2565, 1, 0, 0, 0, 2771, 2579, 1, 0, 0, 0, 2771, 2586, 1, 0, 0, 0, 2771, 2597, 1, 0, 0, 0, 2771, 2606, 1, 0, 0, 0, 2771, 2613, 1, 0, 0, 0, 2771, 2617, 1, 0, 0, 0, 2771, 2630, 1, 0, 0, 0, 2771, 2641, 1, 0, 0, 0, 2771, 2662, 1, 0, 0, 0, 2771, 2701, 1, 0, 0, 0, 2771, 2742, 1, 0, 0, 0, 2772, 2783, 1, 0, 0, 0, 2773, 2774, 10, 24, 0, 0, 2774, 2775, 5, 8, 0, 0, 2775, 2776, 3, 142, 71, 0, 2776, 2777, 5, 9, 0, 0, 2777, 2782, 1, 0, 0, 0, 2778, 2779, 10, 22, 0, 0, 2779, 2780, 5, 4, 0, 0, 2780, 2782, 3, 294, 147, 0, 2781, 2773, 1, 0, 0, 0, 2781, 2778, 1, 0, 0, 0, 2782, 2785, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 145, 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2786, 2787, 3, 148, 74, 0, 2787, 2788, 5, 3, 0, 0, 2788, 2791, 3, 168, 84, 0, 2789, 2790, 5, 28, 0, 0, 2790, 2792, 3, 294, 147, 0, 2791, 2789, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 2802, 1, 0, 0, 0, 2793, 2794, 5, 203, 0, 0, 2794, 2799, 3, 152, 76, 0, 2795, 2796, 5, 3, 0, 0, 2796, 2798, 3, 152, 76, 0, 2797, 2795, 1, 0, 0, 0, 2798, 2801, 1, 0, 0, 0, 2799, 2797, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2803, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2802, 2793, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 147, 1, 0, 0, 0, 2804, 2807, 3, 136, 68, 0, 2805, 2806, 5, 104, 0, 0, 2806, 2808, 3, 150, 75, 0, 2807, 2805, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 149, 1, 0, 0, 0, 2809, 2812, 5, 137, 0, 0, 2810, 2811, 5, 87, 0, 0, 2811, 2813, 7, 20, 0, 0, 2812, 2810, 1, 0, 0, 0, 2812, 2813, 1, 0, 0, 0, 2813, 151, 1, 0, 0, 0, 2814, 2815, 3, 148, 74, 0, 2815, 2816, 5, 28, 0, 0, 2816, 2817, 3, 294, 147, 0, 2817, 153, 1, 0, 0, 0, 2818, 2819, 7, 21, 0, 0, 2819, 155, 1, 0, 0, 0, 2820, 2825, 5, 89, 0, 0, 2821, 2825, 5, 183, 0, 0, 2822, 2823, 5, 70, 0, 0, 2823, 2825, 3, 136, 68, 0, 2824, 2820, 1, 0, 0, 0, 2824, 2821, 1, 0, 0, 0, 2824, 2822, 1, 0, 0, 0, 2825, 157, 1, 0, 0, 0, 2826, 2828, 5, 306, 0, 0, 2827, 2829, 5, 27, 0, 0, 2828, 2827, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, 2838, 1, 0, 0, 0, 2830, 2832, 5, 304, 0, 0, 2831, 2833, 7, 22, 0, 0, 2832, 2831, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 2835, 1, 0, 0, 0, 2834, 2836, 5, 27, 0, 0, 2835, 2834, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2838, 1, 0, 0, 0, 2837, 2826, 1, 0, 0, 0, 2837, 2830, 1, 0, 0, 0, 2838, 159, 1, 0, 0, 0, 2839, 2846, 5, 89, 0, 0, 2840, 2846, 5, 183, 0, 0, 2841, 2842, 5, 85, 0, 0, 2842, 2846, 5, 27, 0, 0, 2843, 2844, 5, 85, 0, 0, 2844, 2846, 5, 186, 0, 0, 2845, 2839, 1, 0, 0, 0, 2845, 2840, 1, 0, 0, 0, 2845, 2841, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2846, 161, 1, 0, 0, 0, 2847, 2849, 5, 145, 0, 0, 2848, 2847, 1, 0, 0, 0, 2848, 2849, 1, 0, 0, 0, 2849, 2850, 1, 0, 0, 0, 2850, 2851, 3, 136, 68, 0, 2851, 2852, 5, 295, 0, 0, 2852, 2853, 3, 148, 74, 0, 2853, 2859, 1, 0, 0, 0, 2854, 2855, 3, 136, 68, 0, 2855, 2856, 5, 10, 0, 0, 2856, 2857, 3, 148, 74, 0, 2857, 2859, 1, 0, 0, 0, 2858, 2848, 1, 0, 0, 0, 2858, 2854, 1, 0, 0, 0, 2859, 163, 1, 0, 0, 0, 2860, 2861, 7, 23, 0, 0, 2861, 165, 1, 0, 0, 0, 2862, 2863, 5, 120, 0, 0, 2863, 2867, 5, 185, 0, 0, 2864, 2865, 5, 228, 0, 0, 2865, 2867, 5, 185, 0, 0, 2866, 2862, 1, 0, 0, 0, 2866, 2864, 1, 0, 0, 0, 2867, 167, 1, 0, 0, 0, 2868, 2875, 5, 326, 0, 0, 2869, 2872, 5, 327, 0, 0, 2870, 2871, 5, 277, 0, 0, 2871, 2873, 5, 326, 0, 0, 2872, 2870, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2875, 1, 0, 0, 0, 2874, 2868, 1, 0, 0, 0, 2874, 2869, 1, 0, 0, 0, 2875, 169, 1, 0, 0, 0, 2876, 2877, 5, 267, 0, 0, 2877, 2878, 5, 311, 0, 0, 2878, 2883, 3, 178, 89, 0, 2879, 2880, 5, 267, 0, 0, 2880, 2881, 5, 311, 0, 0, 2881, 2883, 3, 168, 84, 0, 2882, 2876, 1, 0, 0, 0, 2882, 2879, 1, 0, 0, 0, 2883, 171, 1, 0, 0, 0, 2884, 2885, 7, 24, 0, 0, 2885, 173, 1, 0, 0, 0, 2886, 2887, 7, 25, 0, 0, 2887, 175, 1, 0, 0, 0, 2888, 2889, 7, 26, 0, 0, 2889, 177, 1, 0, 0, 0, 2890, 2892, 5, 129, 0, 0, 2891, 2893, 7, 18, 0, 0, 2892, 2891, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 2894, 1, 0, 0, 0, 2894, 2895, 3, 168, 84, 0, 2895, 2898, 3, 180, 90, 0, 2896, 2897, 5, 269, 0, 0, 2897, 2899, 3, 180, 90, 0, 2898, 2896, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 179, 1, 0, 0, 0, 2900, 2901, 7, 27, 0, 0, 2901, 181, 1, 0, 0, 0, 2902, 2903, 7, 28, 0, 0, 2903, 183, 1, 0, 0, 0, 2904, 2905, 6, 92, -1, 0, 2905, 2906, 5, 239, 0, 0, 2906, 2907, 5, 1, 0, 0, 2907, 2912, 3, 186, 93, 0, 2908, 2909, 5, 3, 0, 0, 2909, 2911, 3, 186, 93, 0, 2910, 2908, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912, 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 1, 0, 0, 0, 2914, 2912, 1, 0, 0, 0, 2915, 2916, 5, 2, 0, 0, 2916, 2996, 1, 0, 0, 0, 2917, 2918, 5, 129, 0, 0, 2918, 2921, 3, 180, 90, 0, 2919, 2920, 5, 269, 0, 0, 2920, 2922, 3, 180, 90, 0, 2921, 2919, 1, 0, 0, 0, 2921, 2922, 1, 0, 0, 0, 2922, 2996, 1, 0, 0, 0, 2923, 2928, 5, 268, 0, 0, 2924, 2925, 5, 1, 0, 0, 2925, 2926, 3, 188, 94, 0, 2926, 2927, 5, 2, 0, 0, 2927, 2929, 1, 0, 0, 0, 2928, 2924, 1, 0, 0, 0, 2928, 2929, 1, 0, 0, 0, 2929, 2933, 1, 0, 0, 0, 2930, 2931, 5, 306, 0, 0, 2931, 2932, 5, 267, 0, 0, 2932, 2934, 5, 311, 0, 0, 2933, 2930, 1, 0, 0, 0, 2933, 2934, 1, 0, 0, 0, 2934, 2996, 1, 0, 0, 0, 2935, 2940, 5, 268, 0, 0, 2936, 2937, 5, 1, 0, 0, 2937, 2938, 3, 188, 94, 0, 2938, 2939, 5, 2, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2936, 1, 0, 0, 0, 2940, 2941, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2943, 5, 304, 0, 0, 2943, 2944, 5, 267, 0, 0, 2944, 2996, 5, 311, 0, 0, 2945, 2950, 5, 267, 0, 0, 2946, 2947, 5, 1, 0, 0, 2947, 2948, 3, 188, 94, 0, 2948, 2949, 5, 2, 0, 0, 2949, 2951, 1, 0, 0, 0, 2950, 2946, 1, 0, 0, 0, 2950, 2951, 1, 0, 0, 0, 2951, 2955, 1, 0, 0, 0, 2952, 2953, 5, 306, 0, 0, 2953, 2954, 5, 267, 0, 0, 2954, 2956, 5, 311, 0, 0, 2955, 2952, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2996, 1, 0, 0, 0, 2957, 2962, 5, 267, 0, 0, 2958, 2959, 5, 1, 0, 0, 2959, 2960, 3, 188, 94, 0, 2960, 2961, 5, 2, 0, 0, 2961, 2963, 1, 0, 0, 0, 2962, 2958, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 5, 304, 0, 0, 2965, 2966, 5, 267, 0, 0, 2966, 2996, 5, 311, 0, 0, 2967, 2968, 5, 82, 0, 0, 2968, 2996, 5, 213, 0, 0, 2969, 2970, 5, 27, 0, 0, 2970, 2971, 5, 314, 0, 0, 2971, 2972, 3, 184, 92, 0, 2972, 2973, 5, 316, 0, 0, 2973, 2996, 1, 0, 0, 0, 2974, 2975, 5, 162, 0, 0, 2975, 2976, 5, 314, 0, 0, 2976, 2977, 3, 184, 92, 0, 2977, 2978, 5, 3, 0, 0, 2978, 2979, 3, 184, 92, 0, 2979, 2980, 5, 316, 0, 0, 2980, 2996, 1, 0, 0, 0, 2981, 2993, 3, 294, 147, 0, 2982, 2983, 5, 1, 0, 0, 2983, 2988, 3, 188, 94, 0, 2984, 2985, 5, 3, 0, 0, 2985, 2987, 3, 188, 94, 0, 2986, 2984, 1, 0, 0, 0, 2987, 2990, 1, 0, 0, 0, 2988, 2986, 1, 0, 0, 0, 2988, 2989, 1, 0, 0, 0, 2989, 2991, 1, 0, 0, 0, 2990, 2988, 1, 0, 0, 0, 2991, 2992, 5, 2, 0, 0, 2992, 2994, 1, 0, 0, 0, 2993, 2982, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2996, 1, 0, 0, 0, 2995, 2904, 1, 0, 0, 0, 2995, 2917, 1, 0, 0, 0, 2995, 2923, 1, 0, 0, 0, 2995, 2935, 1, 0, 0, 0, 2995, 2945, 1, 0, 0, 0, 2995, 2957, 1, 0, 0, 0, 2995, 2967, 1, 0, 0, 0, 2995, 2969, 1, 0, 0, 0, 2995, 2974, 1, 0, 0, 0, 2995, 2981, 1, 0, 0, 0, 2996, 3006, 1, 0, 0, 0, 2997, 2998, 10, 2, 0, 0, 2998, 3002, 5, 27, 0, 0, 2999, 3000, 5, 8, 0, 0, 3000, 3001, 5, 329, 0, 0, 3001, 3003, 5, 9, 0, 0, 3002, 2999, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3005, 1, 0, 0, 0, 3004, 2997, 1, 0, 0, 0, 3005, 3008, 1, 0, 0, 0, 3006, 3004, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 185, 1, 0, 0, 0, 3008, 3006, 1, 0, 0, 0, 3009, 3014, 3, 184, 92, 0, 3010, 3011, 3, 294, 147, 0, 3011, 3012, 3, 184, 92, 0, 3012, 3014, 1, 0, 0, 0, 3013, 3009, 1, 0, 0, 0, 3013, 3010, 1, 0, 0, 0, 3014, 187, 1, 0, 0, 0, 3015, 3018, 5, 329, 0, 0, 3016, 3018, 3, 184, 92, 0, 3017, 3015, 1, 0, 0, 0, 3017, 3016, 1, 0, 0, 0, 3018, 189, 1, 0, 0, 0, 3019, 3020, 5, 300, 0, 0, 3020, 3021, 3, 136, 68, 0, 3021, 3022, 5, 265, 0, 0, 3022, 3023, 3, 136, 68, 0, 3023, 191, 1, 0, 0, 0, 3024, 3025, 5, 99, 0, 0, 3025, 3026, 5, 1, 0, 0, 3026, 3027, 5, 301, 0, 0, 3027, 3028, 3, 138, 69, 0, 3028, 3029, 5, 2, 0, 0, 3029, 193, 1, 0, 0, 0, 3030, 3031, 5, 300, 0, 0, 3031, 3034, 5, 164, 0, 0, 3032, 3033, 5, 25, 0, 0, 3033, 3035, 3, 136, 68, 0, 3034, 3032, 1, 0, 0, 0, 3034, 3035, 1, 0, 0, 0, 3035, 3036, 1, 0, 0, 0, 3036, 3037, 5, 265, 0, 0, 3037, 3038, 5, 287, 0, 0, 3038, 3039, 5, 251, 0, 0, 3039, 3040, 3, 294, 147, 0, 3040, 3041, 5, 312, 0, 0, 3041, 3049, 3, 136, 68, 0, 3042, 3043, 5, 3, 0, 0, 3043, 3044, 3, 294, 147, 0, 3044, 3045, 5, 312, 0, 0, 3045, 3046, 3, 136, 68, 0, 3046, 3048, 1, 0, 0, 0, 3047, 3042, 1, 0, 0, 0, 3048, 3051, 1, 0, 0, 0, 3049, 3047, 1, 0, 0, 0, 3049, 3050, 1, 0, 0, 0, 3050, 3095, 1, 0, 0, 0, 3051, 3049, 1, 0, 0, 0, 3052, 3053, 5, 300, 0, 0, 3053, 3056, 5, 164, 0, 0, 3054, 3055, 5, 25, 0, 0, 3055, 3057, 3, 136, 68, 0, 3056, 3054, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 5, 265, 0, 0, 3059, 3095, 5, 73, 0, 0, 3060, 3061, 5, 300, 0, 0, 3061, 3062, 5, 182, 0, 0, 3062, 3065, 5, 164, 0, 0, 3063, 3064, 5, 25, 0, 0, 3064, 3066, 3, 136, 68, 0, 3065, 3063, 1, 0, 0, 0, 3065, 3066, 1, 0, 0, 0, 3066, 3067, 1, 0, 0, 0, 3067, 3068, 5, 265, 0, 0, 3068, 3080, 5, 127, 0, 0, 3069, 3070, 5, 1, 0, 0, 3070, 3075, 3, 294, 147, 0, 3071, 3072, 5, 3, 0, 0, 3072, 3074, 3, 294, 147, 0, 3073, 3071, 1, 0, 0, 0, 3074, 3077, 1, 0, 0, 0, 3075, 3073, 1, 0, 0, 0, 3075, 3076, 1, 0, 0, 0, 3076, 3078, 1, 0, 0, 0, 3077, 3075, 1, 0, 0, 0, 3078, 3079, 5, 2, 0, 0, 3079, 3081, 1, 0, 0, 0, 3080, 3069, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 3082, 1, 0, 0, 0, 3082, 3083, 5, 296, 0, 0, 3083, 3084, 5, 1, 0, 0, 3084, 3089, 3, 136, 68, 0, 3085, 3086, 5, 3, 0, 0, 3086, 3088, 3, 136, 68, 0, 3087, 3085, 1, 0, 0, 0, 3088, 3091, 1, 0, 0, 0, 3089, 3087, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 3092, 1, 0, 0, 0, 3091, 3089, 1, 0, 0, 0, 3092, 3093, 5, 2, 0, 0, 3093, 3095, 1, 0, 0, 0, 3094, 3030, 1, 0, 0, 0, 3094, 3052, 1, 0, 0, 0, 3094, 3060, 1, 0, 0, 0, 3095, 195, 1, 0, 0, 0, 3096, 3102, 5, 199, 0, 0, 3097, 3103, 3, 294, 147, 0, 3098, 3099, 5, 1, 0, 0, 3099, 3100, 3, 64, 32, 0, 3100, 3101, 5, 2, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3097, 1, 0, 0, 0, 3102, 3098, 1, 0, 0, 0, 3103, 197, 1, 0, 0, 0, 3104, 3105, 5, 168, 0, 0, 3105, 3110, 3, 90, 45, 0, 3106, 3107, 5, 3, 0, 0, 3107, 3109, 3, 90, 45, 0, 3108, 3106, 1, 0, 0, 0, 3109, 3112, 1, 0, 0, 0, 3110, 3108, 1, 0, 0, 0, 3110, 3111, 1, 0, 0, 0, 3111, 3114, 1, 0, 0, 0, 3112, 3110, 1, 0, 0, 0, 3113, 3104, 1, 0, 0, 0, 3113, 3114, 1, 0, 0, 0, 3114, 3115, 1, 0, 0, 0, 3115, 3119, 3, 200, 100, 0, 3116, 3117, 5, 21, 0, 0, 3117, 3118, 5, 163, 0, 0, 3118, 3120, 3, 96, 48, 0, 3119, 3116, 1, 0, 0, 0, 3119, 3120, 1, 0, 0, 0, 3120, 3122, 1, 0, 0, 0, 3121, 3123, 7, 13, 0, 0, 3122, 3121, 1, 0, 0, 0, 3122, 3123, 1, 0, 0, 0, 3123, 3129, 1, 0, 0, 0, 3124, 3125, 5, 206, 0, 0, 3125, 3126, 5, 1, 0, 0, 3126, 3127, 3, 204, 102, 0, 3127, 3128, 5, 2, 0, 0, 3128, 3130, 1, 0, 0, 0, 3129, 3124, 1, 0, 0, 0, 3129, 3130, 1, 0, 0, 0, 3130, 3140, 1, 0, 0, 0, 3131, 3132, 5, 257, 0, 0, 3132, 3137, 3, 98, 49, 0, 3133, 3134, 5, 3, 0, 0, 3134, 3136, 3, 98, 49, 0, 3135, 3133, 1, 0, 0, 0, 3136, 3139, 1, 0, 0, 0, 3137, 3135, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 3141, 1, 0, 0, 0, 3139, 3137, 1, 0, 0, 0, 3140, 3131, 1, 0, 0, 0, 3140, 3141, 1, 0, 0, 0, 3141, 3151, 1, 0, 0, 0, 3142, 3143, 5, 71, 0, 0, 3143, 3148, 3, 100, 50, 0, 3144, 3145, 5, 3, 0, 0, 3145, 3147, 3, 100, 50, 0, 3146, 3144, 1, 0, 0, 0, 3147, 3150, 1, 0, 0, 0, 3148, 3146, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3152, 1, 0, 0, 0, 3150, 3148, 1, 0, 0, 0, 3151, 3142, 1, 0, 0, 0, 3151, 3152, 1, 0, 0, 0, 3152, 199, 1, 0, 0, 0, 3153, 3154, 5, 219, 0, 0, 3154, 3178, 3, 202, 101, 0, 3155, 3156, 5, 240, 0, 0, 3156, 3178, 3, 202, 101, 0, 3157, 3158, 5, 116, 0, 0, 3158, 3178, 3, 202, 101, 0, 3159, 3160, 5, 219, 0, 0, 3160, 3161, 5, 34, 0, 0, 3161, 3162, 3, 202, 101, 0, 3162, 3163, 5, 25, 0, 0, 3163, 3164, 3, 202, 101, 0, 3164, 3178, 1, 0, 0, 0, 3165, 3166, 5, 240, 0, 0, 3166, 3167, 5, 34, 0, 0, 3167, 3168, 3, 202, 101, 0, 3168, 3169, 5, 25, 0, 0, 3169, 3170, 3, 202, 101, 0, 3170, 3178, 1, 0, 0, 0, 3171, 3172, 5, 116, 0, 0, 3172, 3173, 5, 34, 0, 0, 3173, 3174, 3, 202, 101, 0, 3174, 3175, 5, 25, 0, 0, 3175, 3176, 3, 202, 101, 0, 3176, 3178, 1, 0, 0, 0, 3177, 3153, 1, 0, 0, 0, 3177, 3155, 1, 0, 0, 0, 3177, 3157, 1, 0, 0, 0, 3177, 3159, 1, 0, 0, 0, 3177, 3165, 1, 0, 0, 0, 3177, 3171, 1, 0, 0, 0, 3178, 201, 1, 0, 0, 0, 3179, 3180, 5, 278, 0, 0, 3180, 3189, 5, 212, 0, 0, 3181, 3182, 5, 278, 0, 0, 3182, 3189, 5, 102, 0, 0, 3183, 3184, 5, 56, 0, 0, 3184, 3189, 5, 239, 0, 0, 3185, 3186, 3, 136, 68, 0, 3186, 3187, 7, 29, 0, 0, 3187, 3189, 1, 0, 0, 0, 3188, 3179, 1, 0, 0, 0, 3188, 3181, 1, 0, 0, 0, 3188, 3183, 1, 0, 0, 0, 3188, 3185, 1, 0, 0, 0, 3189, 203, 1, 0, 0, 0, 3190, 3191, 6, 102, -1, 0, 3191, 3193, 3, 206, 103, 0, 3192, 3194, 3, 208, 104, 0, 3193, 3192, 1, 0, 0, 0, 3193, 3194, 1, 0, 0, 0, 3194, 3202, 1, 0, 0, 0, 3195, 3196, 10, 2, 0, 0, 3196, 3201, 3, 204, 102, 3, 3197, 3198, 10, 1, 0, 0, 3198, 3199, 5, 11, 0, 0, 3199, 3201, 3, 204, 102, 2, 3200, 3195, 1, 0, 0, 0, 3200, 3197, 1, 0, 0, 0, 3201, 3204, 1, 0, 0, 0, 3202, 3200, 1, 0, 0, 0, 3202, 3203, 1, 0, 0, 0, 3203, 205, 1, 0, 0, 0, 3204, 3202, 1, 0, 0, 0, 3205, 3231, 3, 294, 147, 0, 3206, 3207, 5, 1, 0, 0, 3207, 3231, 5, 2, 0, 0, 3208, 3209, 5, 209, 0, 0, 3209, 3210, 5, 1, 0, 0, 3210, 3215, 3, 204, 102, 0, 3211, 3212, 5, 3, 0, 0, 3212, 3214, 3, 204, 102, 0, 3213, 3211, 1, 0, 0, 0, 3214, 3217, 1, 0, 0, 0, 3215, 3213, 1, 0, 0, 0, 3215, 3216, 1, 0, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3215, 1, 0, 0, 0, 3218, 3219, 5, 2, 0, 0, 3219, 3231, 1, 0, 0, 0, 3220, 3221, 5, 1, 0, 0, 3221, 3222, 3, 204, 102, 0, 3222, 3223, 5, 2, 0, 0, 3223, 3231, 1, 0, 0, 0, 3224, 3231, 5, 12, 0, 0, 3225, 3231, 5, 13, 0, 0, 3226, 3227, 5, 14, 0, 0, 3227, 3228, 3, 204, 102, 0, 3228, 3229, 5, 15, 0, 0, 3229, 3231, 1, 0, 0, 0, 3230, 3205, 1, 0, 0, 0, 3230, 3206, 1, 0, 0, 0, 3230, 3208, 1, 0, 0, 0, 3230, 3220, 1, 0, 0, 0, 3230, 3224, 1, 0, 0, 0, 3230, 3225, 1, 0, 0, 0, 3230, 3226, 1, 0, 0, 0, 3231, 207, 1, 0, 0, 0, 3232, 3234, 5, 320, 0, 0, 3233, 3235, 5, 324, 0, 0, 3234, 3233, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3263, 1, 0, 0, 0, 3236, 3238, 5, 318, 0, 0, 3237, 3239, 5, 324, 0, 0, 3238, 3237, 1, 0, 0, 0, 3238, 3239, 1, 0, 0, 0, 3239, 3263, 1, 0, 0, 0, 3240, 3242, 5, 324, 0, 0, 3241, 3243, 5, 324, 0, 0, 3242, 3241, 1, 0, 0, 0, 3242, 3243, 1, 0, 0, 0, 3243, 3263, 1, 0, 0, 0, 3244, 3245, 5, 16, 0, 0, 3245, 3246, 5, 329, 0, 0, 3246, 3248, 5, 17, 0, 0, 3247, 3249, 5, 324, 0, 0, 3248, 3247, 1, 0, 0, 0, 3248, 3249, 1, 0, 0, 0, 3249, 3263, 1, 0, 0, 0, 3250, 3252, 5, 16, 0, 0, 3251, 3253, 5, 329, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3256, 5, 3, 0, 0, 3255, 3257, 5, 329, 0, 0, 3256, 3255, 1, 0, 0, 0, 3256, 3257, 1, 0, 0, 0, 3257, 3258, 1, 0, 0, 0, 3258, 3260, 5, 17, 0, 0, 3259, 3261, 5, 324, 0, 0, 3260, 3259, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3263, 1, 0, 0, 0, 3262, 3232, 1, 0, 0, 0, 3262, 3236, 1, 0, 0, 0, 3262, 3240, 1, 0, 0, 0, 3262, 3244, 1, 0, 0, 0, 3262, 3250, 1, 0, 0, 0, 3263, 209, 1, 0, 0, 0, 3264, 3265, 3, 294, 147, 0, 3265, 3266, 5, 312, 0, 0, 3266, 3267, 3, 136, 68, 0, 3267, 211, 1, 0, 0, 0, 3268, 3269, 5, 104, 0, 0, 3269, 3273, 7, 30, 0, 0, 3270, 3271, 5, 276, 0, 0, 3271, 3273, 7, 31, 0, 0, 3272, 3268, 1, 0, 0, 0, 3272, 3270, 1, 0, 0, 0, 3273, 213, 1, 0, 0, 0, 3274, 3275, 5, 134, 0, 0, 3275, 3276, 5, 153, 0, 0, 3276, 3280, 3, 216, 108, 0, 3277, 3278, 5, 220, 0, 0, 3278, 3280, 7, 32, 0, 0, 3279, 3274, 1, 0, 0, 0, 3279, 3277, 1, 0, 0, 0, 3280, 215, 1, 0, 0, 0, 3281, 3282, 5, 220, 0, 0, 3282, 3289, 5, 279, 0, 0, 3283, 3284, 5, 220, 0, 0, 3284, 3289, 5, 48, 0, 0, 3285, 3286, 5, 225, 0, 0, 3286, 3289, 5, 220, 0, 0, 3287, 3289, 5, 249, 0, 0, 3288, 3281, 1, 0, 0, 0, 3288, 3283, 1, 0, 0, 0, 3288, 3285, 1, 0, 0, 0, 3288, 3287, 1, 0, 0, 0, 3289, 217, 1, 0, 0, 0, 3290, 3296, 3, 136, 68, 0, 3291, 3292, 3, 294, 147, 0, 3292, 3293, 5, 6, 0, 0, 3293, 3294, 3, 136, 68, 0, 3294, 3296, 1, 0, 0, 0, 3295, 3290, 1, 0, 0, 0, 3295, 3291, 1, 0, 0, 0, 3296, 219, 1, 0, 0, 0, 3297, 3298, 3, 294, 147, 0, 3298, 3299, 5, 4, 0, 0, 3299, 3300, 3, 294, 147, 0, 3300, 3303, 1, 0, 0, 0, 3301, 3303, 3, 294, 147, 0, 3302, 3297, 1, 0, 0, 0, 3302, 3301, 1, 0, 0, 0, 3303, 221, 1, 0, 0, 0, 3304, 3309, 3, 220, 110, 0, 3305, 3306, 5, 3, 0, 0, 3306, 3308, 3, 220, 110, 0, 3307, 3305, 1, 0, 0, 0, 3308, 3311, 1, 0, 0, 0, 3309, 3307, 1, 0, 0, 0, 3309, 3310, 1, 0, 0, 0, 3310, 223, 1, 0, 0, 0, 3311, 3309, 1, 0, 0, 0, 3312, 3313, 5, 107, 0, 0, 3313, 3314, 3, 226, 113, 0, 3314, 3318, 3, 232, 116, 0, 3315, 3317, 3, 234, 117, 0, 3316, 3315, 1, 0, 0, 0, 3317, 3320, 1, 0, 0, 0, 3318, 3316, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3321, 1, 0, 0, 0, 3320, 3318, 1, 0, 0, 0, 3321, 3322, 3, 236, 118, 0, 3322, 225, 1, 0, 0, 0, 3323, 3324, 3, 274, 137, 0, 3324, 3333, 5, 1, 0, 0, 3325, 3330, 3, 230, 115, 0, 3326, 3327, 5, 3, 0, 0, 3327, 3329, 3, 230, 115, 0, 3328, 3326, 1, 0, 0, 0, 3329, 3332, 1, 0, 0, 0, 3330, 3328, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3334, 1, 0, 0, 0, 3332, 3330, 1, 0, 0, 0, 3333, 3325, 1, 0, 0, 0, 3333, 3334, 1, 0, 0, 0, 3334, 3335, 1, 0, 0, 0, 3335, 3336, 5, 2, 0, 0, 3336, 227, 1, 0, 0, 0, 3337, 3338, 3, 272, 136, 0, 3338, 3347, 5, 1, 0, 0, 3339, 3344, 3, 230, 115, 0, 3340, 3341, 5, 3, 0, 0, 3341, 3343, 3, 230, 115, 0, 3342, 3340, 1, 0, 0, 0, 3343, 3346, 1, 0, 0, 0, 3344, 3342, 1, 0, 0, 0, 3344, 3345, 1, 0, 0, 0, 3345, 3348, 1, 0, 0, 0, 3346, 3344, 1, 0, 0, 0, 3347, 3339, 1, 0, 0, 0, 3347, 3348, 1, 0, 0, 0, 3348, 3349, 1, 0, 0, 0, 3349, 3350, 5, 2, 0, 0, 3350, 229, 1, 0, 0, 0, 3351, 3353, 3, 294, 147, 0, 3352, 3351, 1, 0, 0, 0, 3352, 3353, 1, 0, 0, 0, 3353, 3354, 1, 0, 0, 0, 3354, 3355, 3, 184, 92, 0, 3355, 231, 1, 0, 0, 0, 3356, 3357, 5, 232, 0, 0, 3357, 3358, 3, 184, 92, 0, 3358, 233, 1, 0, 0, 0, 3359, 3360, 5, 147, 0, 0, 3360, 3379, 3, 294, 147, 0, 3361, 3363, 5, 182, 0, 0, 3362, 3361, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3379, 5, 78, 0, 0, 3365, 3366, 5, 232, 0, 0, 3366, 3367, 5, 183, 0, 0, 3367, 3368, 5, 190, 0, 0, 3368, 3369, 5, 183, 0, 0, 3369, 3379, 5, 126, 0, 0, 3370, 3371, 5, 38, 0, 0, 3371, 3372, 5, 190, 0, 0, 3372, 3373, 5, 183, 0, 0, 3373, 3379, 5, 126, 0, 0, 3374, 3375, 5, 246, 0, 0, 3375, 3379, 7, 1, 0, 0, 3376, 3377, 5, 46, 0, 0, 3377, 3379, 3, 168, 84, 0, 3378, 3359, 1, 0, 0, 0, 3378, 3362, 1, 0, 0, 0, 3378, 3365, 1, 0, 0, 0, 3378, 3370, 1, 0, 0, 0, 3378, 3374, 1, 0, 0, 0, 3378, 3376, 1, 0, 0, 0, 3379, 235, 1, 0, 0, 0, 3380, 3381, 5, 230, 0, 0, 3381, 3480, 3, 142, 71, 0, 3382, 3383, 5, 251, 0, 0, 3383, 3384, 3, 294, 147, 0, 3384, 3385, 5, 312, 0, 0, 3385, 3386, 3, 136, 68, 0, 3386, 3480, 1, 0, 0, 0, 3387, 3388, 5, 40, 0, 0, 3388, 3390, 3, 136, 68, 0, 3389, 3391, 3, 238, 119, 0, 3390, 3389, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3390, 1, 0, 0, 0, 3392, 3393, 1, 0, 0, 0, 3393, 3395, 1, 0, 0, 0, 3394, 3396, 3, 242, 121, 0, 3395, 3394, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3397, 1, 0, 0, 0, 3397, 3398, 5, 88, 0, 0, 3398, 3399, 5, 40, 0, 0, 3399, 3480, 1, 0, 0, 0, 3400, 3402, 5, 40, 0, 0, 3401, 3403, 3, 238, 119, 0, 3402, 3401, 1, 0, 0, 0, 3403, 3404, 1, 0, 0, 0, 3404, 3402, 1, 0, 0, 0, 3404, 3405, 1, 0, 0, 0, 3405, 3407, 1, 0, 0, 0, 3406, 3408, 3, 242, 121, 0, 3407, 3406, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3410, 5, 88, 0, 0, 3410, 3411, 5, 40, 0, 0, 3411, 3480, 1, 0, 0, 0, 3412, 3413, 5, 119, 0, 0, 3413, 3414, 3, 136, 68, 0, 3414, 3415, 5, 265, 0, 0, 3415, 3419, 3, 246, 123, 0, 3416, 3418, 3, 240, 120, 0, 3417, 3416, 1, 0, 0, 0, 3418, 3421, 1, 0, 0, 0, 3419, 3417, 1, 0, 0, 0, 3419, 3420, 1, 0, 0, 0, 3420, 3423, 1, 0, 0, 0, 3421, 3419, 1, 0, 0, 0, 3422, 3424, 3, 242, 121, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3426, 5, 88, 0, 0, 3426, 3427, 5, 119, 0, 0, 3427, 3480, 1, 0, 0, 0, 3428, 3429, 5, 135, 0, 0, 3429, 3480, 3, 294, 147, 0, 3430, 3431, 5, 151, 0, 0, 3431, 3480, 3, 294, 147, 0, 3432, 3438, 5, 32, 0, 0, 3433, 3434, 3, 244, 122, 0, 3434, 3435, 5, 325, 0, 0, 3435, 3437, 1, 0, 0, 0, 3436, 3433, 1, 0, 0, 0, 3437, 3440, 1, 0, 0, 0, 3438, 3436, 1, 0, 0, 0, 3438, 3439, 1, 0, 0, 0, 3439, 3442, 1, 0, 0, 0, 3440, 3438, 1, 0, 0, 0, 3441, 3443, 3, 246, 123, 0, 3442, 3441, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3480, 5, 88, 0, 0, 3445, 3446, 3, 294, 147, 0, 3446, 3447, 5, 10, 0, 0, 3447, 3449, 1, 0, 0, 0, 3448, 3445, 1, 0, 0, 0, 3448, 3449, 1, 0, 0, 0, 3449, 3450, 1, 0, 0, 0, 3450, 3451, 5, 161, 0, 0, 3451, 3452, 3, 246, 123, 0, 3452, 3453, 5, 88, 0, 0, 3453, 3454, 5, 161, 0, 0, 3454, 3480, 1, 0, 0, 0, 3455, 3456, 3, 294, 147, 0, 3456, 3457, 5, 10, 0, 0, 3457, 3459, 1, 0, 0, 0, 3458, 3455, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 3461, 5, 302, 0, 0, 3461, 3462, 3, 136, 68, 0, 3462, 3463, 5, 81, 0, 0, 3463, 3464, 3, 246, 123, 0, 3464, 3465, 5, 88, 0, 0, 3465, 3466, 5, 302, 0, 0, 3466, 3480, 1, 0, 0, 0, 3467, 3468, 3, 294, 147, 0, 3468, 3469, 5, 10, 0, 0, 3469, 3471, 1, 0, 0, 0, 3470, 3467, 1, 0, 0, 0, 3470, 3471, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3473, 5, 224, 0, 0, 3473, 3474, 3, 246, 123, 0, 3474, 3475, 5, 286, 0, 0, 3475, 3476, 3, 136, 68, 0, 3476, 3477, 5, 88, 0, 0, 3477, 3478, 5, 224, 0, 0, 3478, 3480, 1, 0, 0, 0, 3479, 3380, 1, 0, 0, 0, 3479, 3382, 1, 0, 0, 0, 3479, 3387, 1, 0, 0, 0, 3479, 3400, 1, 0, 0, 0, 3479, 3412, 1, 0, 0, 0, 3479, 3428, 1, 0, 0, 0, 3479, 3430, 1, 0, 0, 0, 3479, 3432, 1, 0, 0, 0, 3479, 3448, 1, 0, 0, 0, 3479, 3458, 1, 0, 0, 0, 3479, 3470, 1, 0, 0, 0, 3480, 237, 1, 0, 0, 0, 3481, 3482, 5, 300, 0, 0, 3482, 3483, 3, 136, 68, 0, 3483, 3484, 5, 265, 0, 0, 3484, 3485, 3, 246, 123, 0, 3485, 239, 1, 0, 0, 0, 3486, 3487, 5, 86, 0, 0, 3487, 3488, 3, 136, 68, 0, 3488, 3489, 5, 265, 0, 0, 3489, 3490, 3, 246, 123, 0, 3490, 241, 1, 0, 0, 0, 3491, 3492, 5, 84, 0, 0, 3492, 3493, 3, 246, 123, 0, 3493, 243, 1, 0, 0, 0, 3494, 3495, 5, 69, 0, 0, 3495, 3500, 3, 294, 147, 0, 3496, 3497, 5, 3, 0, 0, 3497, 3499, 3, 294, 147, 0, 3498, 3496, 1, 0, 0, 0, 3499, 3502, 1, 0, 0, 0, 3500, 3498, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 3503, 1, 0, 0, 0, 3502, 3500, 1, 0, 0, 0, 3503, 3506, 3, 184, 92, 0, 3504, 3505, 5, 70, 0, 0, 3505, 3507, 3, 142, 71, 0, 3506, 3504, 1, 0, 0, 0, 3506, 3507, 1, 0, 0, 0, 3507, 245, 1, 0, 0, 0, 3508, 3509, 3, 236, 118, 0, 3509, 3510, 5, 325, 0, 0, 3510, 3512, 1, 0, 0, 0, 3511, 3508, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3511, 1, 0, 0, 0, 3513, 3514, 1, 0, 0, 0, 3514, 247, 1, 0, 0, 0, 3515, 3522, 5, 53, 0, 0, 3516, 3522, 5, 248, 0, 0, 3517, 3522, 5, 73, 0, 0, 3518, 3522, 5, 127, 0, 0, 3519, 3522, 5, 287, 0, 0, 3520, 3522, 3, 294, 147, 0, 3521, 3515, 1, 0, 0, 0, 3521, 3516, 1, 0, 0, 0, 3521, 3517, 1, 0, 0, 0, 3521, 3518, 1, 0, 0, 0, 3521, 3519, 1, 0, 0, 0, 3521, 3520, 1, 0, 0, 0, 3522, 249, 1, 0, 0, 0, 3523, 3527, 5, 260, 0, 0, 3524, 3527, 5, 243, 0, 0, 3525, 3527, 3, 294, 147, 0, 3526, 3523, 1, 0, 0, 0, 3526, 3524, 1, 0, 0, 0, 3526, 3525, 1, 0, 0, 0, 3527, 251, 1, 0, 0, 0, 3528, 3530, 3, 250, 125, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3531, 1, 0, 0, 0, 3531, 3532, 3, 280, 140, 0, 3532, 253, 1, 0, 0, 0, 3533, 3536, 3, 256, 128, 0, 3534, 3536, 3, 260, 130, 0, 3535, 3533, 1, 0, 0, 0, 3535, 3534, 1, 0, 0, 0, 3536, 255, 1, 0, 0, 0, 3537, 3549, 3, 294, 147, 0, 3538, 3539, 3, 294, 147, 0, 3539, 3540, 5, 4, 0, 0, 3540, 3541, 3, 294, 147, 0, 3541, 3549, 1, 0, 0, 0, 3542, 3543, 3, 294, 147, 0, 3543, 3544, 5, 4, 0, 0, 3544, 3545, 3, 294, 147, 0, 3545, 3546, 5, 4, 0, 0, 3546, 3547, 3, 294, 147, 0, 3547, 3549, 1, 0, 0, 0, 3548, 3537, 1, 0, 0, 0, 3548, 3538, 1, 0, 0, 0, 3548, 3542, 1, 0, 0, 0, 3549, 257, 1, 0, 0, 0, 3550, 3562, 3, 294, 147, 0, 3551, 3552, 3, 294, 147, 0, 3552, 3553, 5, 4, 0, 0, 3553, 3554, 3, 294, 147, 0, 3554, 3562, 1, 0, 0, 0, 3555, 3556, 3, 294, 147, 0, 3556, 3557, 5, 4, 0, 0, 3557, 3558, 3, 294, 147, 0, 3558, 3559, 5, 4, 0, 0, 3559, 3560, 3, 294, 147, 0, 3560, 3562, 1, 0, 0, 0, 3561, 3550, 1, 0, 0, 0, 3561, 3551, 1, 0, 0, 0, 3561, 3555, 1, 0, 0, 0, 3562, 259, 1, 0, 0, 0, 3563, 3575, 3, 294, 147, 0, 3564, 3565, 3, 294, 147, 0, 3565, 3566, 5, 4, 0, 0, 3566, 3567, 3, 294, 147, 0, 3567, 3575, 1, 0, 0, 0, 3568, 3569, 3, 294, 147, 0, 3569, 3570, 5, 4, 0, 0, 3570, 3571, 3, 294, 147, 0, 3571, 3572, 5, 4, 0, 0, 3572, 3573, 3, 294, 147, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3563, 1, 0, 0, 0, 3574, 3564, 1, 0, 0, 0, 3574, 3568, 1, 0, 0, 0, 3575, 261, 1, 0, 0, 0, 3576, 3588, 3, 294, 147, 0, 3577, 3578, 3, 294, 147, 0, 3578, 3579, 5, 4, 0, 0, 3579, 3580, 3, 294, 147, 0, 3580, 3588, 1, 0, 0, 0, 3581, 3582, 3, 294, 147, 0, 3582, 3583, 5, 4, 0, 0, 3583, 3584, 3, 294, 147, 0, 3584, 3585, 5, 4, 0, 0, 3585, 3586, 3, 294, 147, 0, 3586, 3588, 1, 0, 0, 0, 3587, 3576, 1, 0, 0, 0, 3587, 3577, 1, 0, 0, 0, 3587, 3581, 1, 0, 0, 0, 3588, 263, 1, 0, 0, 0, 3589, 3595, 3, 294, 147, 0, 3590, 3591, 3, 294, 147, 0, 3591, 3592, 5, 4, 0, 0, 3592, 3593, 3, 294, 147, 0, 3593, 3595, 1, 0, 0, 0, 3594, 3589, 1, 0, 0, 0, 3594, 3590, 1, 0, 0, 0, 3595, 265, 1, 0, 0, 0, 3596, 3602, 3, 294, 147, 0, 3597, 3598, 3, 294, 147, 0, 3598, 3599, 5, 4, 0, 0, 3599, 3600, 3, 294, 147, 0, 3600, 3602, 1, 0, 0, 0, 3601, 3596, 1, 0, 0, 0, 3601, 3597, 1, 0, 0, 0, 3602, 267, 1, 0, 0, 0, 3603, 3604, 3, 294, 147, 0, 3604, 269, 1, 0, 0, 0, 3605, 3606, 3, 294, 147, 0, 3606, 271, 1, 0, 0, 0, 3607, 3608, 3, 280, 140, 0, 3608, 273, 1, 0, 0, 0, 3609, 3610, 3, 280, 140, 0, 3610, 275, 1, 0, 0, 0, 3611, 3614, 3, 280, 140, 0, 3612, 3614, 4, 138, 14, 0, 3613, 3611, 1, 0, 0, 0, 3613, 3612, 1, 0, 0, 0, 3614, 277, 1, 0, 0, 0, 3615, 3616, 3, 294, 147, 0, 3616, 279, 1, 0, 0, 0, 3617, 3622, 3, 294, 147, 0, 3618, 3619, 5, 4, 0, 0, 3619, 3621, 3, 294, 147, 0, 3620, 3618, 1, 0, 0, 0, 3621, 3624, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 281, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3625, 3626, 5, 103, 0, 0, 3626, 3627, 3, 284, 142, 0, 3627, 3628, 5, 28, 0, 0, 3628, 3629, 5, 187, 0, 0, 3629, 3630, 3, 142, 71, 0, 3630, 283, 1, 0, 0, 0, 3631, 3632, 7, 33, 0, 0, 3632, 285, 1, 0, 0, 0, 3633, 3637, 3, 288, 144, 0, 3634, 3637, 5, 64, 0, 0, 3635, 3637, 5, 60, 0, 0, 3636, 3633, 1, 0, 0, 0, 3636, 3634, 1, 0, 0, 0, 3636, 3635, 1, 0, 0, 0, 3637, 287, 1, 0, 0, 0, 3638, 3644, 3, 294, 147, 0, 3639, 3640, 5, 289, 0, 0, 3640, 3644, 3, 294, 147, 0, 3641, 3642, 5, 235, 0, 0, 3642, 3644, 3, 294, 147, 0, 3643, 3638, 1, 0, 0, 0, 3643, 3639, 1, 0, 0, 0, 3643, 3641, 1, 0, 0, 0, 3644, 289, 1, 0, 0, 0, 3645, 3650, 3, 294, 147, 0, 3646, 3647, 5, 3, 0, 0, 3647, 3649, 3, 294, 147, 0, 3648, 3646, 1, 0, 0, 0, 3649, 3652, 1, 0, 0, 0, 3650, 3648, 1, 0, 0, 0, 3650, 3651, 1, 0, 0, 0, 3651, 291, 1, 0, 0, 0, 3652, 3650, 1, 0, 0, 0, 3653, 3661, 5, 53, 0, 0, 3654, 3661, 5, 248, 0, 0, 3655, 3661, 5, 73, 0, 0, 3656, 3661, 5, 127, 0, 0, 3657, 3661, 5, 287, 0, 0, 3658, 3661, 5, 93, 0, 0, 3659, 3661, 3, 294, 147, 0, 3660, 3653, 1, 0, 0, 0, 3660, 3654, 1, 0, 0, 0, 3660, 3655, 1, 0, 0, 0, 3660, 3656, 1, 0, 0, 0, 3660, 3657, 1, 0, 0, 0, 3660, 3658, 1, 0, 0, 0, 3660, 3659, 1, 0, 0, 0, 3661, 293, 1, 0, 0, 0, 3662, 3668, 5, 332, 0, 0, 3663, 3668, 5, 334, 0, 0, 3664, 3668, 3, 300, 150, 0, 3665, 3668, 5, 335, 0, 0, 3666, 3668, 5, 333, 0, 0, 3667, 3662, 1, 0, 0, 0, 3667, 3663, 1, 0, 0, 0, 3667, 3664, 1, 0, 0, 0, 3667, 3665, 1, 0, 0, 0, 3667, 3666, 1, 0, 0, 0, 3668, 295, 1, 0, 0, 0, 3669, 3671, 5, 319, 0, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3672, 1, 0, 0, 0, 3672, 3682, 5, 330, 0, 0, 3673, 3675, 5, 319, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3682, 5, 331, 0, 0, 3677, 3679, 5, 319, 0, 0, 3678, 3677, 1, 0, 0, 0, 3678, 3679, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3682, 5, 329, 0, 0, 3681, 3670, 1, 0, 0, 0, 3681, 3674, 1, 0, 0, 0, 3681, 3678, 1, 0, 0, 0, 3682, 297, 1, 0, 0, 0, 3683, 3686, 3, 294, 147, 0, 3684, 3686, 3, 168, 84, 0, 3685, 3683, 1, 0, 0, 0, 3685, 3684, 1, 0, 0, 0, 3686, 299, 1, 0, 0, 0, 3687, 3688, 7, 34, 0, 0, 3688, 301, 1, 0, 0, 0, 480, 305, 314, 318, 322, 326, 330, 343, 350, 354, 358, 364, 368, 375, 380, 384, 390, 394, 413, 419, 423, 427, 431, 439, 443, 446, 451, 457, 466, 472, 476, 482, 489, 498, 510, 519, 528, 534, 545, 553, 561, 568, 578, 585, 593, 608, 643, 646, 649, 653, 659, 664, 671, 677, 681, 685, 693, 699, 703, 707, 721, 729, 748, 773, 776, 783, 790, 799, 803, 810, 818, 827, 833, 838, 842, 850, 855, 864, 870, 877, 886, 892, 896, 902, 909, 914, 927, 932, 944, 948, 954, 963, 968, 974, 1002, 1008, 1010, 1016, 1022, 1024, 1032, 1034, 1044, 1046, 1061, 1066, 1073, 1083, 1089, 1091, 1099, 1101, 1126, 1129, 1133, 1137, 1155, 1158, 1169, 1172, 1188, 1198, 1203, 1209, 1212, 1221, 1233, 1236, 1246, 1250, 1256, 1263, 1268, 1274, 1278, 1282, 1288, 1299, 1308, 1318, 1321, 1326, 1328, 1335, 1341, 1343, 1347, 1357, 1363, 1366, 1368, 1380, 1387, 1391, 1394, 1398, 1402, 1409, 1418, 1421, 1425, 1430, 1434, 1442, 1445, 1448, 1455, 1466, 1469, 1479, 1482, 1493, 1498, 1506, 1509, 1513, 1517, 1526, 1535, 1538, 1547, 1550, 1553, 1557, 1568, 1571, 1574, 1581, 1584, 1603, 1607, 1611, 1615, 1619, 1623, 1625, 1636, 1641, 1650, 1659, 1662, 1668, 1680, 1683, 1692, 1695, 1703, 1706, 1709, 1714, 1717, 1729, 1732, 1740, 1745, 1749, 1751, 1753, 1768, 1770, 1781, 1802, 1812, 1823, 1827, 1829, 1837, 1848, 1859, 1866, 1879, 1885, 1911, 1926, 1931, 1935, 1945, 1951, 1957, 1965, 1970, 1977, 1979, 1985, 1991, 1995, 2000, 2009, 2014, 2028, 2038, 2041, 2050, 2055, 2060, 2062, 2071, 2074, 2082, 2085, 2092, 2097, 2108, 2111, 2115, 2117, 2125, 2135, 2141, 2143, 2150, 2154, 2156, 2163, 2167, 2169, 2171, 2180, 2191, 2195, 2205, 2215, 2219, 2227, 2229, 2242, 2250, 2259, 2265, 2273, 2279, 2283, 2288, 2293, 2299, 2313, 2315, 2345, 2356, 2364, 2369, 2374, 2387, 2393, 2396, 2403, 2408, 2411, 2414, 2419, 2426, 2429, 2438, 2441, 2445, 2448, 2451, 2466, 2469, 2488, 2492, 2500, 2504, 2529, 2532, 2541, 2547, 2553, 2559, 2568, 2571, 2574, 2593, 2602, 2624, 2627, 2637, 2646, 2652, 2658, 2669, 2671, 2676, 2683, 2685, 2691, 2697, 2708, 2717, 2722, 2727, 2729, 2731, 2737, 2739, 2749, 2758, 2760, 2766, 2768, 2771, 2781, 2783, 2791, 2799, 2802, 2807, 2812, 2824, 2828, 2832, 2835, 2837, 2845, 2848, 2858, 2866, 2872, 2874, 2882, 2892, 2898, 2912, 2921, 2928, 2933, 2940, 2950, 2955, 2962, 2988, 2993, 2995, 3002, 3006, 3013, 3017, 3034, 3049, 3056, 3065, 3075, 3080, 3089, 3094, 3102, 3110, 3113, 3119, 3122, 3129, 3137, 3140, 3148, 3151, 3177, 3188, 3193, 3200, 3202, 3215, 3230, 3234, 3238, 3242, 3248, 3252, 3256, 3260, 3262, 3272, 3279, 3288, 3295, 3302, 3309, 3318, 3330, 3333, 3344, 3347, 3352, 3362, 3378, 3392, 3395, 3404, 3407, 3419, 3423, 3438, 3442, 3448, 3458, 3470, 3479, 3500, 3506, 3513, 3521, 3526, 3529, 3535, 3548, 3561, 3574, 3587, 3594, 3601, 3613, 3622, 3636, 3643, 3650, 3660, 3667, 3670, 3674, 3678, 3681, 3685] \ No newline at end of file diff --git a/src/lib/trino/TrinoSql.tokens b/src/lib/trino/TrinoSql.tokens index 50a3a1fe..48b31716 100644 --- a/src/lib/trino/TrinoSql.tokens +++ b/src/lib/trino/TrinoSql.tokens @@ -14,525 +14,651 @@ T__12=13 T__13=14 T__14=15 T__15=16 -KW_ADD=17 -KW_ADMIN=18 -KW_AFTER=19 -KW_ALL=20 -KW_ALTER=21 -KW_ANALYZE=22 -KW_AND=23 -KW_ANY=24 -KW_ARRAY=25 -KW_AS=26 -KW_ASC=27 -KW_AT=28 -KW_AUTHORIZATION=29 -KW_BERNOULLI=30 -KW_BETWEEN=31 -KW_BY=32 -KW_CALL=33 -KW_CASCADE=34 -KW_CASE=35 -KW_CAST=36 -KW_CATALOGS=37 -KW_COLUMN=38 -KW_COLUMNS=39 -KW_COMMENT=40 -KW_COMMIT=41 -KW_COMMITTED=42 -KW_CONSTRAINT=43 -KW_CREATE=44 -KW_CROSS=45 -KW_CUBE=46 -KW_CURRENT=47 -KW_CURRENT_CATALOG=48 -KW_CURRENT_DATE=49 -KW_CURRENT_PATH=50 -KW_CURRENT_ROLE=51 -KW_CURRENT_SCHEMA=52 -KW_CURRENT_TIME=53 -KW_CURRENT_TIMESTAMP=54 -KW_CURRENT_USER=55 -KW_DATA=56 -KW_DATE=57 -KW_DAY=58 -KW_DEFAULT=59 -KW_DEALLOCATE=60 -KW_DEFINER=61 -KW_DELETE=62 -KW_DESC=63 -KW_DESCRIBE=64 -KW_DEFINE=65 -KW_DISTINCT=66 -KW_DISTRIBUTED=67 -KW_DOUBLE=68 -KW_DROP=69 -KW_ELSE=70 -KW_EMPTY=71 -KW_END=72 -KW_ESCAPE=73 -KW_EXCEPT=74 -KW_EXCLUDING=75 -KW_EXECUTE=76 -KW_EXISTS=77 -KW_EXPLAIN=78 -KW_EXTRACT=79 -KW_FALSE=80 -KW_FETCH=81 -KW_FILTER=82 -KW_FINAL=83 -KW_FIRST=84 -KW_FOLLOWING=85 -KW_FOR=86 -KW_FORMAT=87 -KW_FROM=88 -KW_FULL=89 -KW_FUNCTIONS=90 -KW_GRANT=91 -KW_GRANTED=92 -KW_GRANTS=93 -KW_DENY=94 -KW_GRAPHVIZ=95 -KW_GROUP=96 -KW_GROUPING=97 -KW_GROUPS=98 -KW_HAVING=99 -KW_HOUR=100 -KW_IF=101 -KW_IGNORE=102 -KW_IN=103 -KW_INCLUDING=104 -KW_INITIAL=105 -KW_INNER=106 -KW_INPUT=107 -KW_INSERT=108 -KW_INTERSECT=109 -KW_INTERVAL=110 -KW_INTO=111 -KW_INVOKER=112 -KW_IO=113 -KW_IS=114 -KW_ISOLATION=115 -KW_JOIN=116 -KW_JSON=117 -KW_LAST=118 -KW_LATERAL=119 -KW_LEFT=120 -KW_LEVEL=121 -KW_LIKE=122 -KW_LIMIT=123 -KW_LOCAL=124 -KW_LOCALTIME=125 -KW_LOCALTIMESTAMP=126 -KW_LOGICAL=127 -KW_MAP=128 -KW_MATCH=129 -KW_MATCHED=130 -KW_MATCHES=131 -KW_MATCH_RECOGNIZE=132 -KW_MATERIALIZED=133 -KW_MEASURES=134 -KW_MERGE=135 -KW_MINUTE=136 -KW_MONTH=137 -KW_NATURAL=138 -KW_NEXT=139 -KW_NFC=140 -KW_NFD=141 -KW_NFKC=142 -KW_NFKD=143 -KW_NO=144 -KW_NONE=145 -KW_NORMALIZE=146 -KW_NOT=147 -KW_NULL=148 -KW_NULLIF=149 -KW_NULLS=150 -KW_OFFSET=151 -KW_OMIT=152 -KW_ON=153 -KW_ONE=154 -KW_ONLY=155 -KW_OPTION=156 -KW_OR=157 -KW_ORDER=158 -KW_ORDINALITY=159 -KW_OUTER=160 -KW_OUTPUT=161 -KW_OVER=162 -KW_PARTITION=163 -KW_PARTITIONS=164 -KW_PAST=165 -KW_PATH=166 -KW_PATTERN=167 -KW_PER=168 -KW_PERMUTE=169 -KW_POSITION=170 -KW_PRECEDING=171 -KW_PRECISION=172 -KW_PREPARE=173 -KW_PRIVILEGES=174 -KW_PROPERTIES=175 -KW_RANGE=176 -KW_READ=177 -KW_RECURSIVE=178 -KW_REFRESH=179 -KW_RENAME=180 -KW_REPEATABLE=181 -KW_REPLACE=182 -KW_RESET=183 -KW_RESPECT=184 -KW_RESTRICT=185 -KW_REVOKE=186 -KW_RIGHT=187 -KW_ROLE=188 -KW_ROLES=189 -KW_ROLLBACK=190 -KW_ROLLUP=191 -KW_ROW=192 -KW_ROWS=193 -KW_RUNNING=194 -KW_SCHEMA=195 -KW_SCHEMAS=196 -KW_SECOND=197 -KW_SECURITY=198 -KW_SEEK=199 -KW_SELECT=200 -KW_SERIALIZABLE=201 -KW_SESSION=202 -KW_SET=203 -KW_SETS=204 -KW_SHOW=205 -KW_SOME=206 -KW_START=207 -KW_STATS=208 -KW_SUBSET=209 -KW_SUBSTRING=210 -KW_SYSTEM=211 -KW_TABLE=212 -KW_TABLES=213 -KW_TABLESAMPLE=214 -KW_TEXT=215 -KW_THEN=216 -KW_TIES=217 -KW_TIME=218 -KW_TIMESTAMP=219 -KW_TO=220 -KW_TRANSACTION=221 -KW_TRUNCATE=222 -KW_TRUE=223 -KW_TRY_CAST=224 -KW_TYPE=225 -KW_UESCAPE=226 -KW_UNBOUNDED=227 -KW_UNCOMMITTED=228 -KW_UNION=229 -KW_UNMATCHED=230 -KW_UNNEST=231 -KW_UPDATE=232 -KW_USE=233 -KW_USER=234 -KW_USING=235 -KW_VALIDATE=236 -KW_VALUES=237 -KW_VERBOSE=238 -KW_VIEW=239 -KW_WHEN=240 -KW_WHERE=241 -KW_WINDOW=242 -KW_WITH=243 -KW_WITHOUT=244 -KW_WORK=245 -KW_WRITE=246 -KW_YEAR=247 -KW_ZONE=248 -EQ=249 -NEQ=250 -LT=251 -LTE=252 -GT=253 -GTE=254 -PLUS=255 -MINUS=256 -ASTERISK=257 -SLASH=258 -PERCENT=259 -CONCAT=260 -QUESTION_MARK=261 -STRING=262 -UNICODE_STRING=263 -BINARY_LITERAL=264 -INTEGER_VALUE=265 -DECIMAL_VALUE=266 -DOUBLE_VALUE=267 -IDENTIFIER=268 -DIGIT_IDENTIFIER=269 -QUOTED_IDENTIFIER=270 -BACKQUOTED_IDENTIFIER=271 -SEMICOLON=272 -SIMPLE_COMMENT=273 -BRACKETED_COMMENT=274 -WS=275 -UNRECOGNIZED=276 -DELIMITER=277 +T__16=17 +KW_ABSENT=18 +KW_ADD=19 +KW_ADMIN=20 +KW_AFTER=21 +KW_ALL=22 +KW_ALTER=23 +KW_ANALYZE=24 +KW_AND=25 +KW_ANY=26 +KW_ARRAY=27 +KW_AS=28 +KW_ASC=29 +KW_AT=30 +KW_AUTHORIZATION=31 +KW_BEGIN=32 +KW_BERNOULLI=33 +KW_BETWEEN=34 +KW_BOTH=35 +KW_BY=36 +KW_CALL=37 +KW_CALLED=38 +KW_CASCADE=39 +KW_CASE=40 +KW_CAST=41 +KW_CATALOG=42 +KW_CATALOGS=43 +KW_COLUMN=44 +KW_COLUMNS=45 +KW_COMMENT=46 +KW_COMMIT=47 +KW_COMMITTED=48 +KW_CONDITIONAL=49 +KW_CONSTRAINT=50 +KW_COUNT=51 +KW_COPARTITION=52 +KW_CREATE=53 +KW_CROSS=54 +KW_CUBE=55 +KW_CURRENT=56 +KW_CURRENT_CATALOG=57 +KW_CURRENT_DATE=58 +KW_CURRENT_PATH=59 +KW_CURRENT_ROLE=60 +KW_CURRENT_SCHEMA=61 +KW_CURRENT_TIME=62 +KW_CURRENT_TIMESTAMP=63 +KW_CURRENT_USER=64 +KW_DATA=65 +KW_DATE=66 +KW_DAY=67 +KW_DEALLOCATE=68 +KW_DECLARE=69 +KW_DEFAULT=70 +KW_DEFINE=71 +KW_DEFINER=72 +KW_DELETE=73 +KW_DENY=74 +KW_DESC=75 +KW_DESCRIBE=76 +KW_DESCRIPTOR=77 +KW_DETERMINISTIC=78 +KW_DISTINCT=79 +KW_DISTRIBUTED=80 +KW_DO=81 +KW_DOUBLE=82 +KW_DROP=83 +KW_ELSE=84 +KW_EMPTY=85 +KW_ELSEIF=86 +KW_ENCODING=87 +KW_END=88 +KW_ERROR=89 +KW_ESCAPE=90 +KW_EXCEPT=91 +KW_EXCLUDING=92 +KW_EXECUTE=93 +KW_EXISTS=94 +KW_EXPLAIN=95 +KW_EXTRACT=96 +KW_FALSE=97 +KW_FETCH=98 +KW_FILTER=99 +KW_FINAL=100 +KW_FIRST=101 +KW_FOLLOWING=102 +KW_FOR=103 +KW_FORMAT=104 +KW_FROM=105 +KW_FULL=106 +KW_FUNCTION=107 +KW_FUNCTIONS=108 +KW_GRACE=109 +KW_GRANT=110 +KW_GRANTED=111 +KW_GRANTS=112 +KW_GRAPHVIZ=113 +KW_GROUP=114 +KW_GROUPING=115 +KW_GROUPS=116 +KW_HAVING=117 +KW_HOUR=118 +KW_IF=119 +KW_IGNORE=120 +KW_IMMEDIATE=121 +KW_IN=122 +KW_INCLUDING=123 +KW_INITIAL=124 +KW_INNER=125 +KW_INPUT=126 +KW_INSERT=127 +KW_INTERSECT=128 +KW_INTERVAL=129 +KW_INTO=130 +KW_INVOKER=131 +KW_IO=132 +KW_IS=133 +KW_ISOLATION=134 +KW_ITERATE=135 +KW_JOIN=136 +KW_JSON=137 +KW_JSON_ARRAY=138 +KW_JSON_EXISTS=139 +KW_JSON_OBJECT=140 +KW_JSON_QUERY=141 +KW_JSON_TABLE=142 +KW_JSON_VALUE=143 +KW_KEEP=144 +KW_KEY=145 +KW_KEYS=146 +KW_LANGUAGE=147 +KW_LAST=148 +KW_LATERAL=149 +KW_LEADING=150 +KW_LEAVE=151 +KW_LEFT=152 +KW_LEVEL=153 +KW_LIKE=154 +KW_LIMIT=155 +KW_LISTAGG=156 +KW_LOCAL=157 +KW_LOCALTIME=158 +KW_LOCALTIMESTAMP=159 +KW_LOGICAL=160 +KW_LOOP=161 +KW_MAP=162 +KW_MATCH=163 +KW_MATCHED=164 +KW_MATCHES=165 +KW_MATCH_RECOGNIZE=166 +KW_MATERIALIZED=167 +KW_MEASURES=168 +KW_MERGE=169 +KW_MINUTE=170 +KW_MONTH=171 +KW_NATURAL=172 +KW_NESTED=173 +KW_NEXT=174 +KW_NFC=175 +KW_NFD=176 +KW_NFKC=177 +KW_NFKD=178 +KW_NO=179 +KW_NONE=180 +KW_NORMALIZE=181 +KW_NOT=182 +KW_NULL=183 +KW_NULLIF=184 +KW_NULLS=185 +KW_OBJECT=186 +KW_OF=187 +KW_OFFSET=188 +KW_OMIT=189 +KW_ON=190 +KW_ONE=191 +KW_ONLY=192 +KW_OPTION=193 +KW_OR=194 +KW_ORDER=195 +KW_ORDINALITY=196 +KW_OUTER=197 +KW_OUTPUT=198 +KW_OVER=199 +KW_OVERFLOW=200 +KW_PARTITION=201 +KW_PARTITIONS=202 +KW_PASSING=203 +KW_PAST=204 +KW_PATH=205 +KW_PATTERN=206 +KW_PER=207 +KW_PERIOD=208 +KW_PERMUTE=209 +KW_PLAN=210 +KW_POSITION=211 +KW_PRECEDING=212 +KW_PRECISION=213 +KW_PREPARE=214 +KW_PRIVILEGES=215 +KW_PROPERTIES=216 +KW_PRUNE=217 +KW_QUOTES=218 +KW_RANGE=219 +KW_READ=220 +KW_RECURSIVE=221 +KW_REFRESH=222 +KW_RENAME=223 +KW_REPEAT=224 +KW_REPEATABLE=225 +KW_REPLACE=226 +KW_RESET=227 +KW_RESPECT=228 +KW_RESTRICT=229 +KW_RETURN=230 +KW_RETURNING=231 +KW_RETURNS=232 +KW_REVOKE=233 +KW_RIGHT=234 +KW_ROLE=235 +KW_ROLES=236 +KW_ROLLBACK=237 +KW_ROLLUP=238 +KW_ROW=239 +KW_ROWS=240 +KW_RUNNING=241 +KW_SCALAR=242 +KW_SCHEMA=243 +KW_SCHEMAS=244 +KW_SECOND=245 +KW_SECURITY=246 +KW_SEEK=247 +KW_SELECT=248 +KW_SERIALIZABLE=249 +KW_SESSION=250 +KW_SET=251 +KW_SETS=252 +KW_SHOW=253 +KW_SOME=254 +KW_START=255 +KW_STATS=256 +KW_SUBSET=257 +KW_SUBSTRING=258 +KW_SYSTEM=259 +KW_TABLE=260 +KW_TABLES=261 +KW_TABLESAMPLE=262 +KW_TEXT=263 +KW_TEXT_STRING=264 +KW_THEN=265 +KW_TIES=266 +KW_TIME=267 +KW_TIMESTAMP=268 +KW_TO=269 +KW_TRAILING=270 +KW_TRANSACTION=271 +KW_TRIM=272 +KW_TRUE=273 +KW_TRUNCATE=274 +KW_TRY_CAST=275 +KW_TYPE=276 +KW_UESCAPE=277 +KW_UNBOUNDED=278 +KW_UNCOMMITTED=279 +KW_UNCONDITIONAL=280 +KW_UNION=281 +KW_UNIQUE=282 +KW_UNKNOWN=283 +KW_UNMATCHED=284 +KW_UNNEST=285 +KW_UNTIL=286 +KW_UPDATE=287 +KW_USE=288 +KW_USER=289 +KW_USING=290 +KW_UTF16=291 +KW_UTF32=292 +KW_UTF8=293 +KW_VALIDATE=294 +KW_VALUE=295 +KW_VALUES=296 +KW_VERBOSE=297 +KW_VERSION=298 +KW_VIEW=299 +KW_WHEN=300 +KW_WHERE=301 +KW_WHILE=302 +KW_WINDOW=303 +KW_WITH=304 +KW_WITHIN=305 +KW_WITHOUT=306 +KW_WORK=307 +KW_WRAPPER=308 +KW_WRITE=309 +KW_YEAR=310 +KW_ZONE=311 +EQ=312 +NEQ=313 +LT=314 +LTE=315 +GT=316 +GTE=317 +PLUS=318 +MINUS=319 +ASTERISK=320 +SLASH=321 +PERCENT=322 +CONCAT=323 +QUESTION_MARK=324 +SEMICOLON=325 +STRING=326 +UNICODE_STRING=327 +BINARY_LITERAL=328 +INTEGER_VALUE=329 +DECIMAL_VALUE=330 +DOUBLE_VALUE=331 +IDENTIFIER=332 +DIGIT_IDENTIFIER=333 +QUOTED_IDENTIFIER=334 +BACKQUOTED_IDENTIFIER=335 +SIMPLE_COMMENT=336 +BRACKETED_COMMENT=337 +WS=338 +UNRECOGNIZED=339 +DELIMITER=340 '('=1 ')'=2 ','=3 '.'=4 'SKIP'=5 -'->'=6 -'['=7 -']'=8 -'|'=9 -'^'=10 -'$'=11 -'{-'=12 -'-}'=13 -'{'=14 -'}'=15 -'=>'=16 -'ADD'=17 -'ADMIN'=18 -'AFTER'=19 -'ALL'=20 -'ALTER'=21 -'ANALYZE'=22 -'AND'=23 -'ANY'=24 -'ARRAY'=25 -'AS'=26 -'ASC'=27 -'AT'=28 -'AUTHORIZATION'=29 -'BERNOULLI'=30 -'BETWEEN'=31 -'BY'=32 -'CALL'=33 -'CASCADE'=34 -'CASE'=35 -'CAST'=36 -'CATALOGS'=37 -'COLUMN'=38 -'COLUMNS'=39 -'COMMENT'=40 -'COMMIT'=41 -'COMMITTED'=42 -'CONSTRAINT'=43 -'CREATE'=44 -'CROSS'=45 -'CUBE'=46 -'CURRENT'=47 -'CURRENT_CATALOG'=48 -'CURRENT_DATE'=49 -'CURRENT_PATH'=50 -'CURRENT_ROLE'=51 -'CURRENT_SCHEMA'=52 -'CURRENT_TIME'=53 -'CURRENT_TIMESTAMP'=54 -'CURRENT_USER'=55 -'DATA'=56 -'DATE'=57 -'DAY'=58 -'DEFAULT'=59 -'DEALLOCATE'=60 -'DEFINER'=61 -'DELETE'=62 -'DESC'=63 -'DESCRIBE'=64 -'DEFINE'=65 -'DISTINCT'=66 -'DISTRIBUTED'=67 -'DOUBLE'=68 -'DROP'=69 -'ELSE'=70 -'EMPTY'=71 -'END'=72 -'ESCAPE'=73 -'EXCEPT'=74 -'EXCLUDING'=75 -'EXECUTE'=76 -'EXISTS'=77 -'EXPLAIN'=78 -'EXTRACT'=79 -'FALSE'=80 -'FETCH'=81 -'FILTER'=82 -'FINAL'=83 -'FIRST'=84 -'FOLLOWING'=85 -'FOR'=86 -'FORMAT'=87 -'FROM'=88 -'FULL'=89 -'FUNCTIONS'=90 -'GRANT'=91 -'GRANTED'=92 -'GRANTS'=93 -'DENY'=94 -'GRAPHVIZ'=95 -'GROUP'=96 -'GROUPING'=97 -'GROUPS'=98 -'HAVING'=99 -'HOUR'=100 -'IF'=101 -'IGNORE'=102 -'IN'=103 -'INCLUDING'=104 -'INITIAL'=105 -'INNER'=106 -'INPUT'=107 -'INSERT'=108 -'INTERSECT'=109 -'INTERVAL'=110 -'INTO'=111 -'INVOKER'=112 -'IO'=113 -'IS'=114 -'ISOLATION'=115 -'JOIN'=116 -'JSON'=117 -'LAST'=118 -'LATERAL'=119 -'LEFT'=120 -'LEVEL'=121 -'LIKE'=122 -'LIMIT'=123 -'LOCAL'=124 -'LOCALTIME'=125 -'LOCALTIMESTAMP'=126 -'LOGICAL'=127 -'MAP'=128 -'MATCH'=129 -'MATCHED'=130 -'MATCHES'=131 -'MATCH_RECOGNIZE'=132 -'MATERIALIZED'=133 -'MEASURES'=134 -'MERGE'=135 -'MINUTE'=136 -'MONTH'=137 -'NATURAL'=138 -'NEXT'=139 -'NFC'=140 -'NFD'=141 -'NFKC'=142 -'NFKD'=143 -'NO'=144 -'NONE'=145 -'NORMALIZE'=146 -'NOT'=147 -'NULL'=148 -'NULLIF'=149 -'NULLS'=150 -'OFFSET'=151 -'OMIT'=152 -'ON'=153 -'ONE'=154 -'ONLY'=155 -'OPTION'=156 -'OR'=157 -'ORDER'=158 -'ORDINALITY'=159 -'OUTER'=160 -'OUTPUT'=161 -'OVER'=162 -'PARTITION'=163 -'PARTITIONS'=164 -'PAST'=165 -'PATH'=166 -'PATTERN'=167 -'PER'=168 -'PERMUTE'=169 -'POSITION'=170 -'PRECEDING'=171 -'PRECISION'=172 -'PREPARE'=173 -'PRIVILEGES'=174 -'PROPERTIES'=175 -'RANGE'=176 -'READ'=177 -'RECURSIVE'=178 -'REFRESH'=179 -'RENAME'=180 -'REPEATABLE'=181 -'REPLACE'=182 -'RESET'=183 -'RESPECT'=184 -'RESTRICT'=185 -'REVOKE'=186 -'RIGHT'=187 -'ROLE'=188 -'ROLES'=189 -'ROLLBACK'=190 -'ROLLUP'=191 -'ROW'=192 -'ROWS'=193 -'RUNNING'=194 -'SCHEMA'=195 -'SCHEMAS'=196 -'SECOND'=197 -'SECURITY'=198 -'SEEK'=199 -'SELECT'=200 -'SERIALIZABLE'=201 -'SESSION'=202 -'SET'=203 -'SETS'=204 -'SHOW'=205 -'SOME'=206 -'START'=207 -'STATS'=208 -'SUBSET'=209 -'SUBSTRING'=210 -'SYSTEM'=211 -'TABLE'=212 -'TABLES'=213 -'TABLESAMPLE'=214 -'TEXT'=215 -'THEN'=216 -'TIES'=217 -'TIME'=218 -'TIMESTAMP'=219 -'TO'=220 -'TRANSACTION'=221 -'TRUNCATE'=222 -'TRUE'=223 -'TRY_CAST'=224 -'TYPE'=225 -'UESCAPE'=226 -'UNBOUNDED'=227 -'UNCOMMITTED'=228 -'UNION'=229 -'UNMATCHED'=230 -'UNNEST'=231 -'UPDATE'=232 -'USE'=233 -'USER'=234 -'USING'=235 -'VALIDATE'=236 -'VALUES'=237 -'VERBOSE'=238 -'VIEW'=239 -'WHEN'=240 -'WHERE'=241 -'WINDOW'=242 -'WITH'=243 -'WITHOUT'=244 -'WORK'=245 -'WRITE'=246 -'YEAR'=247 -'ZONE'=248 -'='=249 -'<'=251 -'<='=252 -'>'=253 -'>='=254 -'+'=255 -'-'=256 -'*'=257 -'/'=258 -'%'=259 -'||'=260 -'?'=261 -';'=272 +'=>'=6 +'->'=7 +'['=8 +']'=9 +':'=10 +'|'=11 +'^'=12 +'$'=13 +'{-'=14 +'-}'=15 +'{'=16 +'}'=17 +'ABSENT'=18 +'ADD'=19 +'ADMIN'=20 +'AFTER'=21 +'ALL'=22 +'ALTER'=23 +'ANALYZE'=24 +'AND'=25 +'ANY'=26 +'ARRAY'=27 +'AS'=28 +'ASC'=29 +'AT'=30 +'AUTHORIZATION'=31 +'BEGIN'=32 +'BERNOULLI'=33 +'BETWEEN'=34 +'BOTH'=35 +'BY'=36 +'CALL'=37 +'CALLED'=38 +'CASCADE'=39 +'CASE'=40 +'CAST'=41 +'CATALOG'=42 +'CATALOGS'=43 +'COLUMN'=44 +'COLUMNS'=45 +'COMMENT'=46 +'COMMIT'=47 +'COMMITTED'=48 +'CONDITIONAL'=49 +'CONSTRAINT'=50 +'COUNT'=51 +'COPARTITION'=52 +'CREATE'=53 +'CROSS'=54 +'CUBE'=55 +'CURRENT'=56 +'CURRENT_CATALOG'=57 +'CURRENT_DATE'=58 +'CURRENT_PATH'=59 +'CURRENT_ROLE'=60 +'CURRENT_SCHEMA'=61 +'CURRENT_TIME'=62 +'CURRENT_TIMESTAMP'=63 +'CURRENT_USER'=64 +'DATA'=65 +'DATE'=66 +'DAY'=67 +'DEALLOCATE'=68 +'DECLARE'=69 +'DEFAULT'=70 +'DEFINE'=71 +'DEFINER'=72 +'DELETE'=73 +'DENY'=74 +'DESC'=75 +'DESCRIBE'=76 +'DESCRIPTOR'=77 +'DETERMINISTIC'=78 +'DISTINCT'=79 +'DISTRIBUTED'=80 +'DO'=81 +'DOUBLE'=82 +'DROP'=83 +'ELSE'=84 +'EMPTY'=85 +'ELSEIF'=86 +'ENCODING'=87 +'END'=88 +'ERROR'=89 +'ESCAPE'=90 +'EXCEPT'=91 +'EXCLUDING'=92 +'EXECUTE'=93 +'EXISTS'=94 +'EXPLAIN'=95 +'EXTRACT'=96 +'FALSE'=97 +'FETCH'=98 +'FILTER'=99 +'FINAL'=100 +'FIRST'=101 +'FOLLOWING'=102 +'FOR'=103 +'FORMAT'=104 +'FROM'=105 +'FULL'=106 +'FUNCTION'=107 +'FUNCTIONS'=108 +'GRACE'=109 +'GRANT'=110 +'GRANTED'=111 +'GRANTS'=112 +'GRAPHVIZ'=113 +'GROUP'=114 +'GROUPING'=115 +'GROUPS'=116 +'HAVING'=117 +'HOUR'=118 +'IF'=119 +'IGNORE'=120 +'IMMEDIATE'=121 +'IN'=122 +'INCLUDING'=123 +'INITIAL'=124 +'INNER'=125 +'INPUT'=126 +'INSERT'=127 +'INTERSECT'=128 +'INTERVAL'=129 +'INTO'=130 +'INVOKER'=131 +'IO'=132 +'IS'=133 +'ISOLATION'=134 +'ITERATE'=135 +'JOIN'=136 +'JSON'=137 +'JSON_ARRAY'=138 +'JSON_EXISTS'=139 +'JSON_OBJECT'=140 +'JSON_QUERY'=141 +'JSON_TABLE'=142 +'JSON_VALUE'=143 +'KEEP'=144 +'KEY'=145 +'KEYS'=146 +'LANGUAGE'=147 +'LAST'=148 +'LATERAL'=149 +'LEADING'=150 +'LEAVE'=151 +'LEFT'=152 +'LEVEL'=153 +'LIKE'=154 +'LIMIT'=155 +'LISTAGG'=156 +'LOCAL'=157 +'LOCALTIME'=158 +'LOCALTIMESTAMP'=159 +'LOGICAL'=160 +'LOOP'=161 +'MAP'=162 +'MATCH'=163 +'MATCHED'=164 +'MATCHES'=165 +'MATCH_RECOGNIZE'=166 +'MATERIALIZED'=167 +'MEASURES'=168 +'MERGE'=169 +'MINUTE'=170 +'MONTH'=171 +'NATURAL'=172 +'NESTED'=173 +'NEXT'=174 +'NFC'=175 +'NFD'=176 +'NFKC'=177 +'NFKD'=178 +'NO'=179 +'NONE'=180 +'NORMALIZE'=181 +'NOT'=182 +'NULL'=183 +'NULLIF'=184 +'NULLS'=185 +'OBJECT'=186 +'OF'=187 +'OFFSET'=188 +'OMIT'=189 +'ON'=190 +'ONE'=191 +'ONLY'=192 +'OPTION'=193 +'OR'=194 +'ORDER'=195 +'ORDINALITY'=196 +'OUTER'=197 +'OUTPUT'=198 +'OVER'=199 +'OVERFLOW'=200 +'PARTITION'=201 +'PARTITIONS'=202 +'PASSING'=203 +'PAST'=204 +'PATH'=205 +'PATTERN'=206 +'PER'=207 +'PERIOD'=208 +'PERMUTE'=209 +'PLAN'=210 +'POSITION'=211 +'PRECEDING'=212 +'PRECISION'=213 +'PREPARE'=214 +'PRIVILEGES'=215 +'PROPERTIES'=216 +'PRUNE'=217 +'QUOTES'=218 +'RANGE'=219 +'READ'=220 +'RECURSIVE'=221 +'REFRESH'=222 +'RENAME'=223 +'REPEAT'=224 +'REPEATABLE'=225 +'REPLACE'=226 +'RESET'=227 +'RESPECT'=228 +'RESTRICT'=229 +'RETURN'=230 +'RETURNING'=231 +'RETURNS'=232 +'REVOKE'=233 +'RIGHT'=234 +'ROLE'=235 +'ROLES'=236 +'ROLLBACK'=237 +'ROLLUP'=238 +'ROW'=239 +'ROWS'=240 +'RUNNING'=241 +'SCALAR'=242 +'SCHEMA'=243 +'SCHEMAS'=244 +'SECOND'=245 +'SECURITY'=246 +'SEEK'=247 +'SELECT'=248 +'SERIALIZABLE'=249 +'SESSION'=250 +'SET'=251 +'SETS'=252 +'SHOW'=253 +'SOME'=254 +'START'=255 +'STATS'=256 +'SUBSET'=257 +'SUBSTRING'=258 +'SYSTEM'=259 +'TABLE'=260 +'TABLES'=261 +'TABLESAMPLE'=262 +'TEXT'=263 +'STRING'=264 +'THEN'=265 +'TIES'=266 +'TIME'=267 +'TIMESTAMP'=268 +'TO'=269 +'TRAILING'=270 +'TRANSACTION'=271 +'TRIM'=272 +'TRUE'=273 +'TRUNCATE'=274 +'TRY_CAST'=275 +'TYPE'=276 +'UESCAPE'=277 +'UNBOUNDED'=278 +'UNCOMMITTED'=279 +'UNCONDITIONAL'=280 +'UNION'=281 +'UNIQUE'=282 +'UNKNOWN'=283 +'UNMATCHED'=284 +'UNNEST'=285 +'UNTIL'=286 +'UPDATE'=287 +'USE'=288 +'USER'=289 +'USING'=290 +'UTF16'=291 +'UTF32'=292 +'UTF8'=293 +'VALIDATE'=294 +'VALUE'=295 +'VALUES'=296 +'VERBOSE'=297 +'VERSION'=298 +'VIEW'=299 +'WHEN'=300 +'WHERE'=301 +'WHILE'=302 +'WINDOW'=303 +'WITH'=304 +'WITHIN'=305 +'WITHOUT'=306 +'WORK'=307 +'WRAPPER'=308 +'WRITE'=309 +'YEAR'=310 +'ZONE'=311 +'='=312 +'<'=314 +'<='=315 +'>'=316 +'>='=317 +'+'=318 +'-'=319 +'*'=320 +'/'=321 +'%'=322 +'||'=323 +'?'=324 +';'=325 diff --git a/src/lib/trino/TrinoSqlLexer.interp b/src/lib/trino/TrinoSqlLexer.interp index 83be15a3..6ba8c438 100644 --- a/src/lib/trino/TrinoSqlLexer.interp +++ b/src/lib/trino/TrinoSqlLexer.interp @@ -5,9 +5,11 @@ null ',' '.' 'SKIP' +'=>' '->' '[' ']' +':' '|' '^' '$' @@ -15,7 +17,7 @@ null '-}' '{' '}' -'=>' +'ABSENT' 'ADD' 'ADMIN' 'AFTER' @@ -29,20 +31,27 @@ null 'ASC' 'AT' 'AUTHORIZATION' +'BEGIN' 'BERNOULLI' 'BETWEEN' +'BOTH' 'BY' 'CALL' +'CALLED' 'CASCADE' 'CASE' 'CAST' +'CATALOG' 'CATALOGS' 'COLUMN' 'COLUMNS' 'COMMENT' 'COMMIT' 'COMMITTED' +'CONDITIONAL' 'CONSTRAINT' +'COUNT' +'COPARTITION' 'CREATE' 'CROSS' 'CUBE' @@ -58,20 +67,28 @@ null 'DATA' 'DATE' 'DAY' -'DEFAULT' 'DEALLOCATE' +'DECLARE' +'DEFAULT' +'DEFINE' 'DEFINER' 'DELETE' +'DENY' 'DESC' 'DESCRIBE' -'DEFINE' +'DESCRIPTOR' +'DETERMINISTIC' 'DISTINCT' 'DISTRIBUTED' +'DO' 'DOUBLE' 'DROP' 'ELSE' 'EMPTY' +'ELSEIF' +'ENCODING' 'END' +'ERROR' 'ESCAPE' 'EXCEPT' 'EXCLUDING' @@ -89,11 +106,12 @@ null 'FORMAT' 'FROM' 'FULL' +'FUNCTION' 'FUNCTIONS' +'GRACE' 'GRANT' 'GRANTED' 'GRANTS' -'DENY' 'GRAPHVIZ' 'GROUP' 'GROUPING' @@ -102,6 +120,7 @@ null 'HOUR' 'IF' 'IGNORE' +'IMMEDIATE' 'IN' 'INCLUDING' 'INITIAL' @@ -115,18 +134,33 @@ null 'IO' 'IS' 'ISOLATION' +'ITERATE' 'JOIN' 'JSON' +'JSON_ARRAY' +'JSON_EXISTS' +'JSON_OBJECT' +'JSON_QUERY' +'JSON_TABLE' +'JSON_VALUE' +'KEEP' +'KEY' +'KEYS' +'LANGUAGE' 'LAST' 'LATERAL' +'LEADING' +'LEAVE' 'LEFT' 'LEVEL' 'LIKE' 'LIMIT' +'LISTAGG' 'LOCAL' 'LOCALTIME' 'LOCALTIMESTAMP' 'LOGICAL' +'LOOP' 'MAP' 'MATCH' 'MATCHED' @@ -138,6 +172,7 @@ null 'MINUTE' 'MONTH' 'NATURAL' +'NESTED' 'NEXT' 'NFC' 'NFD' @@ -150,6 +185,8 @@ null 'NULL' 'NULLIF' 'NULLS' +'OBJECT' +'OF' 'OFFSET' 'OMIT' 'ON' @@ -162,29 +199,39 @@ null 'OUTER' 'OUTPUT' 'OVER' +'OVERFLOW' 'PARTITION' 'PARTITIONS' +'PASSING' 'PAST' 'PATH' 'PATTERN' 'PER' +'PERIOD' 'PERMUTE' +'PLAN' 'POSITION' 'PRECEDING' 'PRECISION' 'PREPARE' 'PRIVILEGES' 'PROPERTIES' +'PRUNE' +'QUOTES' 'RANGE' 'READ' 'RECURSIVE' 'REFRESH' 'RENAME' +'REPEAT' 'REPEATABLE' 'REPLACE' 'RESET' 'RESPECT' 'RESTRICT' +'RETURN' +'RETURNING' +'RETURNS' 'REVOKE' 'RIGHT' 'ROLE' @@ -194,6 +241,7 @@ null 'ROW' 'ROWS' 'RUNNING' +'SCALAR' 'SCHEMA' 'SCHEMAS' 'SECOND' @@ -215,36 +263,51 @@ null 'TABLES' 'TABLESAMPLE' 'TEXT' +'STRING' 'THEN' 'TIES' 'TIME' 'TIMESTAMP' 'TO' +'TRAILING' 'TRANSACTION' -'TRUNCATE' +'TRIM' 'TRUE' +'TRUNCATE' 'TRY_CAST' 'TYPE' 'UESCAPE' 'UNBOUNDED' 'UNCOMMITTED' +'UNCONDITIONAL' 'UNION' +'UNIQUE' +'UNKNOWN' 'UNMATCHED' 'UNNEST' +'UNTIL' 'UPDATE' 'USE' 'USER' 'USING' +'UTF16' +'UTF32' +'UTF8' 'VALIDATE' +'VALUE' 'VALUES' 'VERBOSE' +'VERSION' 'VIEW' 'WHEN' 'WHERE' +'WHILE' 'WINDOW' 'WITH' +'WITHIN' 'WITHOUT' 'WORK' +'WRAPPER' 'WRITE' 'YEAR' 'ZONE' @@ -261,6 +324,7 @@ null '%' '||' '?' +';' null null null @@ -271,7 +335,6 @@ null null null null -';' null null null @@ -295,6 +358,8 @@ null null null null +null +KW_ABSENT KW_ADD KW_ADMIN KW_AFTER @@ -308,20 +373,27 @@ KW_AS KW_ASC KW_AT KW_AUTHORIZATION +KW_BEGIN KW_BERNOULLI KW_BETWEEN +KW_BOTH KW_BY KW_CALL +KW_CALLED KW_CASCADE KW_CASE KW_CAST +KW_CATALOG KW_CATALOGS KW_COLUMN KW_COLUMNS KW_COMMENT KW_COMMIT KW_COMMITTED +KW_CONDITIONAL KW_CONSTRAINT +KW_COUNT +KW_COPARTITION KW_CREATE KW_CROSS KW_CUBE @@ -337,20 +409,28 @@ KW_CURRENT_USER KW_DATA KW_DATE KW_DAY -KW_DEFAULT KW_DEALLOCATE +KW_DECLARE +KW_DEFAULT +KW_DEFINE KW_DEFINER KW_DELETE +KW_DENY KW_DESC KW_DESCRIBE -KW_DEFINE +KW_DESCRIPTOR +KW_DETERMINISTIC KW_DISTINCT KW_DISTRIBUTED +KW_DO KW_DOUBLE KW_DROP KW_ELSE KW_EMPTY +KW_ELSEIF +KW_ENCODING KW_END +KW_ERROR KW_ESCAPE KW_EXCEPT KW_EXCLUDING @@ -368,11 +448,12 @@ KW_FOR KW_FORMAT KW_FROM KW_FULL +KW_FUNCTION KW_FUNCTIONS +KW_GRACE KW_GRANT KW_GRANTED KW_GRANTS -KW_DENY KW_GRAPHVIZ KW_GROUP KW_GROUPING @@ -381,6 +462,7 @@ KW_HAVING KW_HOUR KW_IF KW_IGNORE +KW_IMMEDIATE KW_IN KW_INCLUDING KW_INITIAL @@ -394,18 +476,33 @@ KW_INVOKER KW_IO KW_IS KW_ISOLATION +KW_ITERATE KW_JOIN KW_JSON +KW_JSON_ARRAY +KW_JSON_EXISTS +KW_JSON_OBJECT +KW_JSON_QUERY +KW_JSON_TABLE +KW_JSON_VALUE +KW_KEEP +KW_KEY +KW_KEYS +KW_LANGUAGE KW_LAST KW_LATERAL +KW_LEADING +KW_LEAVE KW_LEFT KW_LEVEL KW_LIKE KW_LIMIT +KW_LISTAGG KW_LOCAL KW_LOCALTIME KW_LOCALTIMESTAMP KW_LOGICAL +KW_LOOP KW_MAP KW_MATCH KW_MATCHED @@ -417,6 +514,7 @@ KW_MERGE KW_MINUTE KW_MONTH KW_NATURAL +KW_NESTED KW_NEXT KW_NFC KW_NFD @@ -429,6 +527,8 @@ KW_NOT KW_NULL KW_NULLIF KW_NULLS +KW_OBJECT +KW_OF KW_OFFSET KW_OMIT KW_ON @@ -441,29 +541,39 @@ KW_ORDINALITY KW_OUTER KW_OUTPUT KW_OVER +KW_OVERFLOW KW_PARTITION KW_PARTITIONS +KW_PASSING KW_PAST KW_PATH KW_PATTERN KW_PER +KW_PERIOD KW_PERMUTE +KW_PLAN KW_POSITION KW_PRECEDING KW_PRECISION KW_PREPARE KW_PRIVILEGES KW_PROPERTIES +KW_PRUNE +KW_QUOTES KW_RANGE KW_READ KW_RECURSIVE KW_REFRESH KW_RENAME +KW_REPEAT KW_REPEATABLE KW_REPLACE KW_RESET KW_RESPECT KW_RESTRICT +KW_RETURN +KW_RETURNING +KW_RETURNS KW_REVOKE KW_RIGHT KW_ROLE @@ -473,6 +583,7 @@ KW_ROLLUP KW_ROW KW_ROWS KW_RUNNING +KW_SCALAR KW_SCHEMA KW_SCHEMAS KW_SECOND @@ -494,36 +605,51 @@ KW_TABLE KW_TABLES KW_TABLESAMPLE KW_TEXT +KW_TEXT_STRING KW_THEN KW_TIES KW_TIME KW_TIMESTAMP KW_TO +KW_TRAILING KW_TRANSACTION -KW_TRUNCATE +KW_TRIM KW_TRUE +KW_TRUNCATE KW_TRY_CAST KW_TYPE KW_UESCAPE KW_UNBOUNDED KW_UNCOMMITTED +KW_UNCONDITIONAL KW_UNION +KW_UNIQUE +KW_UNKNOWN KW_UNMATCHED KW_UNNEST +KW_UNTIL KW_UPDATE KW_USE KW_USER KW_USING +KW_UTF16 +KW_UTF32 +KW_UTF8 KW_VALIDATE +KW_VALUE KW_VALUES KW_VERBOSE +KW_VERSION KW_VIEW KW_WHEN KW_WHERE +KW_WHILE KW_WINDOW KW_WITH +KW_WITHIN KW_WITHOUT KW_WORK +KW_WRAPPER KW_WRITE KW_YEAR KW_ZONE @@ -540,6 +666,7 @@ SLASH PERCENT CONCAT QUESTION_MARK +SEMICOLON STRING UNICODE_STRING BINARY_LITERAL @@ -550,7 +677,6 @@ IDENTIFIER DIGIT_IDENTIFIER QUOTED_IDENTIFIER BACKQUOTED_IDENTIFIER -SEMICOLON SIMPLE_COMMENT BRACKETED_COMMENT WS @@ -573,6 +699,8 @@ T__12 T__13 T__14 T__15 +T__16 +KW_ABSENT KW_ADD KW_ADMIN KW_AFTER @@ -586,20 +714,27 @@ KW_AS KW_ASC KW_AT KW_AUTHORIZATION +KW_BEGIN KW_BERNOULLI KW_BETWEEN +KW_BOTH KW_BY KW_CALL +KW_CALLED KW_CASCADE KW_CASE KW_CAST +KW_CATALOG KW_CATALOGS KW_COLUMN KW_COLUMNS KW_COMMENT KW_COMMIT KW_COMMITTED +KW_CONDITIONAL KW_CONSTRAINT +KW_COUNT +KW_COPARTITION KW_CREATE KW_CROSS KW_CUBE @@ -615,20 +750,28 @@ KW_CURRENT_USER KW_DATA KW_DATE KW_DAY -KW_DEFAULT KW_DEALLOCATE +KW_DECLARE +KW_DEFAULT +KW_DEFINE KW_DEFINER KW_DELETE +KW_DENY KW_DESC KW_DESCRIBE -KW_DEFINE +KW_DESCRIPTOR +KW_DETERMINISTIC KW_DISTINCT KW_DISTRIBUTED +KW_DO KW_DOUBLE KW_DROP KW_ELSE KW_EMPTY +KW_ELSEIF +KW_ENCODING KW_END +KW_ERROR KW_ESCAPE KW_EXCEPT KW_EXCLUDING @@ -646,11 +789,12 @@ KW_FOR KW_FORMAT KW_FROM KW_FULL +KW_FUNCTION KW_FUNCTIONS +KW_GRACE KW_GRANT KW_GRANTED KW_GRANTS -KW_DENY KW_GRAPHVIZ KW_GROUP KW_GROUPING @@ -659,6 +803,7 @@ KW_HAVING KW_HOUR KW_IF KW_IGNORE +KW_IMMEDIATE KW_IN KW_INCLUDING KW_INITIAL @@ -672,18 +817,33 @@ KW_INVOKER KW_IO KW_IS KW_ISOLATION +KW_ITERATE KW_JOIN KW_JSON +KW_JSON_ARRAY +KW_JSON_EXISTS +KW_JSON_OBJECT +KW_JSON_QUERY +KW_JSON_TABLE +KW_JSON_VALUE +KW_KEEP +KW_KEY +KW_KEYS +KW_LANGUAGE KW_LAST KW_LATERAL +KW_LEADING +KW_LEAVE KW_LEFT KW_LEVEL KW_LIKE KW_LIMIT +KW_LISTAGG KW_LOCAL KW_LOCALTIME KW_LOCALTIMESTAMP KW_LOGICAL +KW_LOOP KW_MAP KW_MATCH KW_MATCHED @@ -695,6 +855,7 @@ KW_MERGE KW_MINUTE KW_MONTH KW_NATURAL +KW_NESTED KW_NEXT KW_NFC KW_NFD @@ -707,6 +868,8 @@ KW_NOT KW_NULL KW_NULLIF KW_NULLS +KW_OBJECT +KW_OF KW_OFFSET KW_OMIT KW_ON @@ -719,29 +882,39 @@ KW_ORDINALITY KW_OUTER KW_OUTPUT KW_OVER +KW_OVERFLOW KW_PARTITION KW_PARTITIONS +KW_PASSING KW_PAST KW_PATH KW_PATTERN KW_PER +KW_PERIOD KW_PERMUTE +KW_PLAN KW_POSITION KW_PRECEDING KW_PRECISION KW_PREPARE KW_PRIVILEGES KW_PROPERTIES +KW_PRUNE +KW_QUOTES KW_RANGE KW_READ KW_RECURSIVE KW_REFRESH KW_RENAME +KW_REPEAT KW_REPEATABLE KW_REPLACE KW_RESET KW_RESPECT KW_RESTRICT +KW_RETURN +KW_RETURNING +KW_RETURNS KW_REVOKE KW_RIGHT KW_ROLE @@ -751,6 +924,7 @@ KW_ROLLUP KW_ROW KW_ROWS KW_RUNNING +KW_SCALAR KW_SCHEMA KW_SCHEMAS KW_SECOND @@ -772,36 +946,51 @@ KW_TABLE KW_TABLES KW_TABLESAMPLE KW_TEXT +KW_TEXT_STRING KW_THEN KW_TIES KW_TIME KW_TIMESTAMP KW_TO +KW_TRAILING KW_TRANSACTION -KW_TRUNCATE +KW_TRIM KW_TRUE +KW_TRUNCATE KW_TRY_CAST KW_TYPE KW_UESCAPE KW_UNBOUNDED KW_UNCOMMITTED +KW_UNCONDITIONAL KW_UNION +KW_UNIQUE +KW_UNKNOWN KW_UNMATCHED KW_UNNEST +KW_UNTIL KW_UPDATE KW_USE KW_USER KW_USING +KW_UTF16 +KW_UTF32 +KW_UTF8 KW_VALIDATE +KW_VALUE KW_VALUES KW_VERBOSE +KW_VERSION KW_VIEW KW_WHEN KW_WHERE +KW_WHILE KW_WINDOW KW_WITH +KW_WITHIN KW_WITHOUT KW_WORK +KW_WRAPPER KW_WRITE KW_YEAR KW_ZONE @@ -818,6 +1007,7 @@ SLASH PERCENT CONCAT QUESTION_MARK +SEMICOLON STRING UNICODE_STRING BINARY_LITERAL @@ -828,7 +1018,10 @@ IDENTIFIER DIGIT_IDENTIFIER QUOTED_IDENTIFIER BACKQUOTED_IDENTIFIER -SEMICOLON +DECIMAL_INTEGER +HEXADECIMAL_INTEGER +OCTAL_INTEGER +BINARY_INTEGER EXPONENT DIGIT LETTER @@ -845,4 +1038,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 276, 2467, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 2257, 8, 249, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 255, 1, 255, 1, 256, 1, 256, 1, 257, 1, 257, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 5, 261, 2288, 8, 261, 10, 261, 12, 261, 2291, 9, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 2302, 8, 262, 10, 262, 12, 262, 2305, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 5, 263, 2313, 8, 263, 10, 263, 12, 263, 2316, 9, 263, 1, 263, 1, 263, 1, 264, 4, 264, 2321, 8, 264, 11, 264, 12, 264, 2322, 1, 265, 4, 265, 2326, 8, 265, 11, 265, 12, 265, 2327, 1, 265, 1, 265, 5, 265, 2332, 8, 265, 10, 265, 12, 265, 2335, 9, 265, 1, 265, 1, 265, 4, 265, 2339, 8, 265, 11, 265, 12, 265, 2340, 3, 265, 2343, 8, 265, 1, 266, 4, 266, 2346, 8, 266, 11, 266, 12, 266, 2347, 1, 266, 1, 266, 5, 266, 2352, 8, 266, 10, 266, 12, 266, 2355, 9, 266, 3, 266, 2357, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 4, 266, 2363, 8, 266, 11, 266, 12, 266, 2364, 1, 266, 1, 266, 3, 266, 2369, 8, 266, 1, 267, 1, 267, 3, 267, 2373, 8, 267, 1, 267, 1, 267, 1, 267, 5, 267, 2378, 8, 267, 10, 267, 12, 267, 2381, 9, 267, 1, 268, 1, 268, 1, 268, 1, 268, 4, 268, 2387, 8, 268, 11, 268, 12, 268, 2388, 1, 269, 1, 269, 1, 269, 1, 269, 5, 269, 2395, 8, 269, 10, 269, 12, 269, 2398, 9, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 5, 270, 2406, 8, 270, 10, 270, 12, 270, 2409, 9, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 272, 1, 272, 3, 272, 2417, 8, 272, 1, 272, 4, 272, 2420, 8, 272, 11, 272, 12, 272, 2421, 1, 273, 1, 273, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 5, 275, 2432, 8, 275, 10, 275, 12, 275, 2435, 9, 275, 1, 275, 3, 275, 2438, 8, 275, 1, 275, 3, 275, 2441, 8, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 2449, 8, 276, 10, 276, 12, 276, 2452, 9, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 4, 277, 2460, 8, 277, 11, 277, 12, 277, 2461, 1, 277, 1, 277, 1, 278, 1, 278, 1, 2450, 0, 279, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 0, 547, 0, 549, 0, 551, 273, 553, 274, 555, 275, 557, 276, 1, 0, 33, 2, 0, 83, 83, 115, 115, 2, 0, 75, 75, 107, 107, 2, 0, 73, 73, 105, 105, 2, 0, 80, 80, 112, 112, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 70, 70, 102, 102, 2, 0, 84, 84, 116, 116, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 67, 67, 99, 99, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 79, 79, 111, 111, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 71, 71, 103, 103, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 2497, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 1, 559, 1, 0, 0, 0, 3, 561, 1, 0, 0, 0, 5, 563, 1, 0, 0, 0, 7, 565, 1, 0, 0, 0, 9, 567, 1, 0, 0, 0, 11, 572, 1, 0, 0, 0, 13, 575, 1, 0, 0, 0, 15, 577, 1, 0, 0, 0, 17, 579, 1, 0, 0, 0, 19, 581, 1, 0, 0, 0, 21, 583, 1, 0, 0, 0, 23, 585, 1, 0, 0, 0, 25, 588, 1, 0, 0, 0, 27, 591, 1, 0, 0, 0, 29, 593, 1, 0, 0, 0, 31, 595, 1, 0, 0, 0, 33, 598, 1, 0, 0, 0, 35, 602, 1, 0, 0, 0, 37, 608, 1, 0, 0, 0, 39, 614, 1, 0, 0, 0, 41, 618, 1, 0, 0, 0, 43, 624, 1, 0, 0, 0, 45, 632, 1, 0, 0, 0, 47, 636, 1, 0, 0, 0, 49, 640, 1, 0, 0, 0, 51, 646, 1, 0, 0, 0, 53, 649, 1, 0, 0, 0, 55, 653, 1, 0, 0, 0, 57, 656, 1, 0, 0, 0, 59, 670, 1, 0, 0, 0, 61, 680, 1, 0, 0, 0, 63, 688, 1, 0, 0, 0, 65, 691, 1, 0, 0, 0, 67, 696, 1, 0, 0, 0, 69, 704, 1, 0, 0, 0, 71, 709, 1, 0, 0, 0, 73, 714, 1, 0, 0, 0, 75, 723, 1, 0, 0, 0, 77, 730, 1, 0, 0, 0, 79, 738, 1, 0, 0, 0, 81, 746, 1, 0, 0, 0, 83, 753, 1, 0, 0, 0, 85, 763, 1, 0, 0, 0, 87, 774, 1, 0, 0, 0, 89, 781, 1, 0, 0, 0, 91, 787, 1, 0, 0, 0, 93, 792, 1, 0, 0, 0, 95, 800, 1, 0, 0, 0, 97, 816, 1, 0, 0, 0, 99, 829, 1, 0, 0, 0, 101, 842, 1, 0, 0, 0, 103, 855, 1, 0, 0, 0, 105, 870, 1, 0, 0, 0, 107, 883, 1, 0, 0, 0, 109, 901, 1, 0, 0, 0, 111, 914, 1, 0, 0, 0, 113, 919, 1, 0, 0, 0, 115, 924, 1, 0, 0, 0, 117, 928, 1, 0, 0, 0, 119, 936, 1, 0, 0, 0, 121, 947, 1, 0, 0, 0, 123, 955, 1, 0, 0, 0, 125, 962, 1, 0, 0, 0, 127, 967, 1, 0, 0, 0, 129, 976, 1, 0, 0, 0, 131, 983, 1, 0, 0, 0, 133, 992, 1, 0, 0, 0, 135, 1004, 1, 0, 0, 0, 137, 1011, 1, 0, 0, 0, 139, 1016, 1, 0, 0, 0, 141, 1021, 1, 0, 0, 0, 143, 1027, 1, 0, 0, 0, 145, 1031, 1, 0, 0, 0, 147, 1038, 1, 0, 0, 0, 149, 1045, 1, 0, 0, 0, 151, 1055, 1, 0, 0, 0, 153, 1063, 1, 0, 0, 0, 155, 1070, 1, 0, 0, 0, 157, 1078, 1, 0, 0, 0, 159, 1086, 1, 0, 0, 0, 161, 1092, 1, 0, 0, 0, 163, 1098, 1, 0, 0, 0, 165, 1105, 1, 0, 0, 0, 167, 1111, 1, 0, 0, 0, 169, 1117, 1, 0, 0, 0, 171, 1127, 1, 0, 0, 0, 173, 1131, 1, 0, 0, 0, 175, 1138, 1, 0, 0, 0, 177, 1143, 1, 0, 0, 0, 179, 1148, 1, 0, 0, 0, 181, 1158, 1, 0, 0, 0, 183, 1164, 1, 0, 0, 0, 185, 1172, 1, 0, 0, 0, 187, 1179, 1, 0, 0, 0, 189, 1184, 1, 0, 0, 0, 191, 1193, 1, 0, 0, 0, 193, 1199, 1, 0, 0, 0, 195, 1208, 1, 0, 0, 0, 197, 1215, 1, 0, 0, 0, 199, 1222, 1, 0, 0, 0, 201, 1227, 1, 0, 0, 0, 203, 1230, 1, 0, 0, 0, 205, 1237, 1, 0, 0, 0, 207, 1240, 1, 0, 0, 0, 209, 1250, 1, 0, 0, 0, 211, 1258, 1, 0, 0, 0, 213, 1264, 1, 0, 0, 0, 215, 1270, 1, 0, 0, 0, 217, 1277, 1, 0, 0, 0, 219, 1287, 1, 0, 0, 0, 221, 1296, 1, 0, 0, 0, 223, 1301, 1, 0, 0, 0, 225, 1309, 1, 0, 0, 0, 227, 1312, 1, 0, 0, 0, 229, 1315, 1, 0, 0, 0, 231, 1325, 1, 0, 0, 0, 233, 1330, 1, 0, 0, 0, 235, 1335, 1, 0, 0, 0, 237, 1340, 1, 0, 0, 0, 239, 1348, 1, 0, 0, 0, 241, 1353, 1, 0, 0, 0, 243, 1359, 1, 0, 0, 0, 245, 1364, 1, 0, 0, 0, 247, 1370, 1, 0, 0, 0, 249, 1376, 1, 0, 0, 0, 251, 1386, 1, 0, 0, 0, 253, 1401, 1, 0, 0, 0, 255, 1409, 1, 0, 0, 0, 257, 1413, 1, 0, 0, 0, 259, 1419, 1, 0, 0, 0, 261, 1427, 1, 0, 0, 0, 263, 1435, 1, 0, 0, 0, 265, 1451, 1, 0, 0, 0, 267, 1464, 1, 0, 0, 0, 269, 1473, 1, 0, 0, 0, 271, 1479, 1, 0, 0, 0, 273, 1486, 1, 0, 0, 0, 275, 1492, 1, 0, 0, 0, 277, 1500, 1, 0, 0, 0, 279, 1505, 1, 0, 0, 0, 281, 1509, 1, 0, 0, 0, 283, 1513, 1, 0, 0, 0, 285, 1518, 1, 0, 0, 0, 287, 1523, 1, 0, 0, 0, 289, 1526, 1, 0, 0, 0, 291, 1531, 1, 0, 0, 0, 293, 1541, 1, 0, 0, 0, 295, 1545, 1, 0, 0, 0, 297, 1550, 1, 0, 0, 0, 299, 1557, 1, 0, 0, 0, 301, 1563, 1, 0, 0, 0, 303, 1570, 1, 0, 0, 0, 305, 1575, 1, 0, 0, 0, 307, 1578, 1, 0, 0, 0, 309, 1582, 1, 0, 0, 0, 311, 1587, 1, 0, 0, 0, 313, 1594, 1, 0, 0, 0, 315, 1597, 1, 0, 0, 0, 317, 1603, 1, 0, 0, 0, 319, 1614, 1, 0, 0, 0, 321, 1620, 1, 0, 0, 0, 323, 1627, 1, 0, 0, 0, 325, 1632, 1, 0, 0, 0, 327, 1642, 1, 0, 0, 0, 329, 1653, 1, 0, 0, 0, 331, 1658, 1, 0, 0, 0, 333, 1663, 1, 0, 0, 0, 335, 1671, 1, 0, 0, 0, 337, 1675, 1, 0, 0, 0, 339, 1683, 1, 0, 0, 0, 341, 1692, 1, 0, 0, 0, 343, 1702, 1, 0, 0, 0, 345, 1712, 1, 0, 0, 0, 347, 1720, 1, 0, 0, 0, 349, 1731, 1, 0, 0, 0, 351, 1742, 1, 0, 0, 0, 353, 1748, 1, 0, 0, 0, 355, 1753, 1, 0, 0, 0, 357, 1763, 1, 0, 0, 0, 359, 1771, 1, 0, 0, 0, 361, 1778, 1, 0, 0, 0, 363, 1789, 1, 0, 0, 0, 365, 1797, 1, 0, 0, 0, 367, 1803, 1, 0, 0, 0, 369, 1811, 1, 0, 0, 0, 371, 1820, 1, 0, 0, 0, 373, 1827, 1, 0, 0, 0, 375, 1833, 1, 0, 0, 0, 377, 1838, 1, 0, 0, 0, 379, 1844, 1, 0, 0, 0, 381, 1853, 1, 0, 0, 0, 383, 1860, 1, 0, 0, 0, 385, 1864, 1, 0, 0, 0, 387, 1869, 1, 0, 0, 0, 389, 1877, 1, 0, 0, 0, 391, 1884, 1, 0, 0, 0, 393, 1892, 1, 0, 0, 0, 395, 1899, 1, 0, 0, 0, 397, 1908, 1, 0, 0, 0, 399, 1913, 1, 0, 0, 0, 401, 1920, 1, 0, 0, 0, 403, 1933, 1, 0, 0, 0, 405, 1941, 1, 0, 0, 0, 407, 1945, 1, 0, 0, 0, 409, 1950, 1, 0, 0, 0, 411, 1955, 1, 0, 0, 0, 413, 1960, 1, 0, 0, 0, 415, 1966, 1, 0, 0, 0, 417, 1972, 1, 0, 0, 0, 419, 1979, 1, 0, 0, 0, 421, 1989, 1, 0, 0, 0, 423, 1996, 1, 0, 0, 0, 425, 2002, 1, 0, 0, 0, 427, 2009, 1, 0, 0, 0, 429, 2021, 1, 0, 0, 0, 431, 2026, 1, 0, 0, 0, 433, 2031, 1, 0, 0, 0, 435, 2036, 1, 0, 0, 0, 437, 2041, 1, 0, 0, 0, 439, 2051, 1, 0, 0, 0, 441, 2054, 1, 0, 0, 0, 443, 2066, 1, 0, 0, 0, 445, 2075, 1, 0, 0, 0, 447, 2080, 1, 0, 0, 0, 449, 2089, 1, 0, 0, 0, 451, 2094, 1, 0, 0, 0, 453, 2102, 1, 0, 0, 0, 455, 2112, 1, 0, 0, 0, 457, 2124, 1, 0, 0, 0, 459, 2130, 1, 0, 0, 0, 461, 2140, 1, 0, 0, 0, 463, 2147, 1, 0, 0, 0, 465, 2154, 1, 0, 0, 0, 467, 2158, 1, 0, 0, 0, 469, 2163, 1, 0, 0, 0, 471, 2169, 1, 0, 0, 0, 473, 2178, 1, 0, 0, 0, 475, 2185, 1, 0, 0, 0, 477, 2193, 1, 0, 0, 0, 479, 2198, 1, 0, 0, 0, 481, 2203, 1, 0, 0, 0, 483, 2209, 1, 0, 0, 0, 485, 2216, 1, 0, 0, 0, 487, 2221, 1, 0, 0, 0, 489, 2229, 1, 0, 0, 0, 491, 2234, 1, 0, 0, 0, 493, 2240, 1, 0, 0, 0, 495, 2245, 1, 0, 0, 0, 497, 2250, 1, 0, 0, 0, 499, 2256, 1, 0, 0, 0, 501, 2258, 1, 0, 0, 0, 503, 2260, 1, 0, 0, 0, 505, 2263, 1, 0, 0, 0, 507, 2265, 1, 0, 0, 0, 509, 2268, 1, 0, 0, 0, 511, 2270, 1, 0, 0, 0, 513, 2272, 1, 0, 0, 0, 515, 2274, 1, 0, 0, 0, 517, 2276, 1, 0, 0, 0, 519, 2278, 1, 0, 0, 0, 521, 2281, 1, 0, 0, 0, 523, 2283, 1, 0, 0, 0, 525, 2294, 1, 0, 0, 0, 527, 2308, 1, 0, 0, 0, 529, 2320, 1, 0, 0, 0, 531, 2342, 1, 0, 0, 0, 533, 2368, 1, 0, 0, 0, 535, 2372, 1, 0, 0, 0, 537, 2382, 1, 0, 0, 0, 539, 2390, 1, 0, 0, 0, 541, 2401, 1, 0, 0, 0, 543, 2412, 1, 0, 0, 0, 545, 2414, 1, 0, 0, 0, 547, 2423, 1, 0, 0, 0, 549, 2425, 1, 0, 0, 0, 551, 2427, 1, 0, 0, 0, 553, 2444, 1, 0, 0, 0, 555, 2459, 1, 0, 0, 0, 557, 2465, 1, 0, 0, 0, 559, 560, 5, 40, 0, 0, 560, 2, 1, 0, 0, 0, 561, 562, 5, 41, 0, 0, 562, 4, 1, 0, 0, 0, 563, 564, 5, 44, 0, 0, 564, 6, 1, 0, 0, 0, 565, 566, 5, 46, 0, 0, 566, 8, 1, 0, 0, 0, 567, 568, 7, 0, 0, 0, 568, 569, 7, 1, 0, 0, 569, 570, 7, 2, 0, 0, 570, 571, 7, 3, 0, 0, 571, 10, 1, 0, 0, 0, 572, 573, 5, 45, 0, 0, 573, 574, 5, 62, 0, 0, 574, 12, 1, 0, 0, 0, 575, 576, 5, 91, 0, 0, 576, 14, 1, 0, 0, 0, 577, 578, 5, 93, 0, 0, 578, 16, 1, 0, 0, 0, 579, 580, 5, 124, 0, 0, 580, 18, 1, 0, 0, 0, 581, 582, 5, 94, 0, 0, 582, 20, 1, 0, 0, 0, 583, 584, 5, 36, 0, 0, 584, 22, 1, 0, 0, 0, 585, 586, 5, 123, 0, 0, 586, 587, 5, 45, 0, 0, 587, 24, 1, 0, 0, 0, 588, 589, 5, 45, 0, 0, 589, 590, 5, 125, 0, 0, 590, 26, 1, 0, 0, 0, 591, 592, 5, 123, 0, 0, 592, 28, 1, 0, 0, 0, 593, 594, 5, 125, 0, 0, 594, 30, 1, 0, 0, 0, 595, 596, 5, 61, 0, 0, 596, 597, 5, 62, 0, 0, 597, 32, 1, 0, 0, 0, 598, 599, 7, 4, 0, 0, 599, 600, 7, 5, 0, 0, 600, 601, 7, 5, 0, 0, 601, 34, 1, 0, 0, 0, 602, 603, 7, 4, 0, 0, 603, 604, 7, 5, 0, 0, 604, 605, 7, 6, 0, 0, 605, 606, 7, 2, 0, 0, 606, 607, 7, 7, 0, 0, 607, 36, 1, 0, 0, 0, 608, 609, 7, 4, 0, 0, 609, 610, 7, 8, 0, 0, 610, 611, 7, 9, 0, 0, 611, 612, 7, 10, 0, 0, 612, 613, 7, 11, 0, 0, 613, 38, 1, 0, 0, 0, 614, 615, 7, 4, 0, 0, 615, 616, 7, 12, 0, 0, 616, 617, 7, 12, 0, 0, 617, 40, 1, 0, 0, 0, 618, 619, 7, 4, 0, 0, 619, 620, 7, 12, 0, 0, 620, 621, 7, 9, 0, 0, 621, 622, 7, 10, 0, 0, 622, 623, 7, 11, 0, 0, 623, 42, 1, 0, 0, 0, 624, 625, 7, 4, 0, 0, 625, 626, 7, 7, 0, 0, 626, 627, 7, 4, 0, 0, 627, 628, 7, 12, 0, 0, 628, 629, 7, 13, 0, 0, 629, 630, 7, 14, 0, 0, 630, 631, 7, 10, 0, 0, 631, 44, 1, 0, 0, 0, 632, 633, 7, 4, 0, 0, 633, 634, 7, 7, 0, 0, 634, 635, 7, 5, 0, 0, 635, 46, 1, 0, 0, 0, 636, 637, 7, 4, 0, 0, 637, 638, 7, 7, 0, 0, 638, 639, 7, 13, 0, 0, 639, 48, 1, 0, 0, 0, 640, 641, 7, 4, 0, 0, 641, 642, 7, 11, 0, 0, 642, 643, 7, 11, 0, 0, 643, 644, 7, 4, 0, 0, 644, 645, 7, 13, 0, 0, 645, 50, 1, 0, 0, 0, 646, 647, 7, 4, 0, 0, 647, 648, 7, 0, 0, 0, 648, 52, 1, 0, 0, 0, 649, 650, 7, 4, 0, 0, 650, 651, 7, 0, 0, 0, 651, 652, 7, 15, 0, 0, 652, 54, 1, 0, 0, 0, 653, 654, 7, 4, 0, 0, 654, 655, 7, 9, 0, 0, 655, 56, 1, 0, 0, 0, 656, 657, 7, 4, 0, 0, 657, 658, 7, 16, 0, 0, 658, 659, 7, 9, 0, 0, 659, 660, 7, 17, 0, 0, 660, 661, 7, 18, 0, 0, 661, 662, 7, 11, 0, 0, 662, 663, 7, 2, 0, 0, 663, 664, 7, 14, 0, 0, 664, 665, 7, 4, 0, 0, 665, 666, 7, 9, 0, 0, 666, 667, 7, 2, 0, 0, 667, 668, 7, 18, 0, 0, 668, 669, 7, 7, 0, 0, 669, 58, 1, 0, 0, 0, 670, 671, 7, 19, 0, 0, 671, 672, 7, 10, 0, 0, 672, 673, 7, 11, 0, 0, 673, 674, 7, 7, 0, 0, 674, 675, 7, 18, 0, 0, 675, 676, 7, 16, 0, 0, 676, 677, 7, 12, 0, 0, 677, 678, 7, 12, 0, 0, 678, 679, 7, 2, 0, 0, 679, 60, 1, 0, 0, 0, 680, 681, 7, 19, 0, 0, 681, 682, 7, 10, 0, 0, 682, 683, 7, 9, 0, 0, 683, 684, 7, 20, 0, 0, 684, 685, 7, 10, 0, 0, 685, 686, 7, 10, 0, 0, 686, 687, 7, 7, 0, 0, 687, 62, 1, 0, 0, 0, 688, 689, 7, 19, 0, 0, 689, 690, 7, 13, 0, 0, 690, 64, 1, 0, 0, 0, 691, 692, 7, 15, 0, 0, 692, 693, 7, 4, 0, 0, 693, 694, 7, 12, 0, 0, 694, 695, 7, 12, 0, 0, 695, 66, 1, 0, 0, 0, 696, 697, 7, 15, 0, 0, 697, 698, 7, 4, 0, 0, 698, 699, 7, 0, 0, 0, 699, 700, 7, 15, 0, 0, 700, 701, 7, 4, 0, 0, 701, 702, 7, 5, 0, 0, 702, 703, 7, 10, 0, 0, 703, 68, 1, 0, 0, 0, 704, 705, 7, 15, 0, 0, 705, 706, 7, 4, 0, 0, 706, 707, 7, 0, 0, 0, 707, 708, 7, 10, 0, 0, 708, 70, 1, 0, 0, 0, 709, 710, 7, 15, 0, 0, 710, 711, 7, 4, 0, 0, 711, 712, 7, 0, 0, 0, 712, 713, 7, 9, 0, 0, 713, 72, 1, 0, 0, 0, 714, 715, 7, 15, 0, 0, 715, 716, 7, 4, 0, 0, 716, 717, 7, 9, 0, 0, 717, 718, 7, 4, 0, 0, 718, 719, 7, 12, 0, 0, 719, 720, 7, 18, 0, 0, 720, 721, 7, 21, 0, 0, 721, 722, 7, 0, 0, 0, 722, 74, 1, 0, 0, 0, 723, 724, 7, 15, 0, 0, 724, 725, 7, 18, 0, 0, 725, 726, 7, 12, 0, 0, 726, 727, 7, 16, 0, 0, 727, 728, 7, 6, 0, 0, 728, 729, 7, 7, 0, 0, 729, 76, 1, 0, 0, 0, 730, 731, 7, 15, 0, 0, 731, 732, 7, 18, 0, 0, 732, 733, 7, 12, 0, 0, 733, 734, 7, 16, 0, 0, 734, 735, 7, 6, 0, 0, 735, 736, 7, 7, 0, 0, 736, 737, 7, 0, 0, 0, 737, 78, 1, 0, 0, 0, 738, 739, 7, 15, 0, 0, 739, 740, 7, 18, 0, 0, 740, 741, 7, 6, 0, 0, 741, 742, 7, 6, 0, 0, 742, 743, 7, 10, 0, 0, 743, 744, 7, 7, 0, 0, 744, 745, 7, 9, 0, 0, 745, 80, 1, 0, 0, 0, 746, 747, 7, 15, 0, 0, 747, 748, 7, 18, 0, 0, 748, 749, 7, 6, 0, 0, 749, 750, 7, 6, 0, 0, 750, 751, 7, 2, 0, 0, 751, 752, 7, 9, 0, 0, 752, 82, 1, 0, 0, 0, 753, 754, 7, 15, 0, 0, 754, 755, 7, 18, 0, 0, 755, 756, 7, 6, 0, 0, 756, 757, 7, 6, 0, 0, 757, 758, 7, 2, 0, 0, 758, 759, 7, 9, 0, 0, 759, 760, 7, 9, 0, 0, 760, 761, 7, 10, 0, 0, 761, 762, 7, 5, 0, 0, 762, 84, 1, 0, 0, 0, 763, 764, 7, 15, 0, 0, 764, 765, 7, 18, 0, 0, 765, 766, 7, 7, 0, 0, 766, 767, 7, 0, 0, 0, 767, 768, 7, 9, 0, 0, 768, 769, 7, 11, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 2, 0, 0, 771, 772, 7, 7, 0, 0, 772, 773, 7, 9, 0, 0, 773, 86, 1, 0, 0, 0, 774, 775, 7, 15, 0, 0, 775, 776, 7, 11, 0, 0, 776, 777, 7, 10, 0, 0, 777, 778, 7, 4, 0, 0, 778, 779, 7, 9, 0, 0, 779, 780, 7, 10, 0, 0, 780, 88, 1, 0, 0, 0, 781, 782, 7, 15, 0, 0, 782, 783, 7, 11, 0, 0, 783, 784, 7, 18, 0, 0, 784, 785, 7, 0, 0, 0, 785, 786, 7, 0, 0, 0, 786, 90, 1, 0, 0, 0, 787, 788, 7, 15, 0, 0, 788, 789, 7, 16, 0, 0, 789, 790, 7, 19, 0, 0, 790, 791, 7, 10, 0, 0, 791, 92, 1, 0, 0, 0, 792, 793, 7, 15, 0, 0, 793, 794, 7, 16, 0, 0, 794, 795, 7, 11, 0, 0, 795, 796, 7, 11, 0, 0, 796, 797, 7, 10, 0, 0, 797, 798, 7, 7, 0, 0, 798, 799, 7, 9, 0, 0, 799, 94, 1, 0, 0, 0, 800, 801, 7, 15, 0, 0, 801, 802, 7, 16, 0, 0, 802, 803, 7, 11, 0, 0, 803, 804, 7, 11, 0, 0, 804, 805, 7, 10, 0, 0, 805, 806, 7, 7, 0, 0, 806, 807, 7, 9, 0, 0, 807, 808, 5, 95, 0, 0, 808, 809, 7, 15, 0, 0, 809, 810, 7, 4, 0, 0, 810, 811, 7, 9, 0, 0, 811, 812, 7, 4, 0, 0, 812, 813, 7, 12, 0, 0, 813, 814, 7, 18, 0, 0, 814, 815, 7, 21, 0, 0, 815, 96, 1, 0, 0, 0, 816, 817, 7, 15, 0, 0, 817, 818, 7, 16, 0, 0, 818, 819, 7, 11, 0, 0, 819, 820, 7, 11, 0, 0, 820, 821, 7, 10, 0, 0, 821, 822, 7, 7, 0, 0, 822, 823, 7, 9, 0, 0, 823, 824, 5, 95, 0, 0, 824, 825, 7, 5, 0, 0, 825, 826, 7, 4, 0, 0, 826, 827, 7, 9, 0, 0, 827, 828, 7, 10, 0, 0, 828, 98, 1, 0, 0, 0, 829, 830, 7, 15, 0, 0, 830, 831, 7, 16, 0, 0, 831, 832, 7, 11, 0, 0, 832, 833, 7, 11, 0, 0, 833, 834, 7, 10, 0, 0, 834, 835, 7, 7, 0, 0, 835, 836, 7, 9, 0, 0, 836, 837, 5, 95, 0, 0, 837, 838, 7, 3, 0, 0, 838, 839, 7, 4, 0, 0, 839, 840, 7, 9, 0, 0, 840, 841, 7, 17, 0, 0, 841, 100, 1, 0, 0, 0, 842, 843, 7, 15, 0, 0, 843, 844, 7, 16, 0, 0, 844, 845, 7, 11, 0, 0, 845, 846, 7, 11, 0, 0, 846, 847, 7, 10, 0, 0, 847, 848, 7, 7, 0, 0, 848, 849, 7, 9, 0, 0, 849, 850, 5, 95, 0, 0, 850, 851, 7, 11, 0, 0, 851, 852, 7, 18, 0, 0, 852, 853, 7, 12, 0, 0, 853, 854, 7, 10, 0, 0, 854, 102, 1, 0, 0, 0, 855, 856, 7, 15, 0, 0, 856, 857, 7, 16, 0, 0, 857, 858, 7, 11, 0, 0, 858, 859, 7, 11, 0, 0, 859, 860, 7, 10, 0, 0, 860, 861, 7, 7, 0, 0, 861, 862, 7, 9, 0, 0, 862, 863, 5, 95, 0, 0, 863, 864, 7, 0, 0, 0, 864, 865, 7, 15, 0, 0, 865, 866, 7, 17, 0, 0, 866, 867, 7, 10, 0, 0, 867, 868, 7, 6, 0, 0, 868, 869, 7, 4, 0, 0, 869, 104, 1, 0, 0, 0, 870, 871, 7, 15, 0, 0, 871, 872, 7, 16, 0, 0, 872, 873, 7, 11, 0, 0, 873, 874, 7, 11, 0, 0, 874, 875, 7, 10, 0, 0, 875, 876, 7, 7, 0, 0, 876, 877, 7, 9, 0, 0, 877, 878, 5, 95, 0, 0, 878, 879, 7, 9, 0, 0, 879, 880, 7, 2, 0, 0, 880, 881, 7, 6, 0, 0, 881, 882, 7, 10, 0, 0, 882, 106, 1, 0, 0, 0, 883, 884, 7, 15, 0, 0, 884, 885, 7, 16, 0, 0, 885, 886, 7, 11, 0, 0, 886, 887, 7, 11, 0, 0, 887, 888, 7, 10, 0, 0, 888, 889, 7, 7, 0, 0, 889, 890, 7, 9, 0, 0, 890, 891, 5, 95, 0, 0, 891, 892, 7, 9, 0, 0, 892, 893, 7, 2, 0, 0, 893, 894, 7, 6, 0, 0, 894, 895, 7, 10, 0, 0, 895, 896, 7, 0, 0, 0, 896, 897, 7, 9, 0, 0, 897, 898, 7, 4, 0, 0, 898, 899, 7, 6, 0, 0, 899, 900, 7, 3, 0, 0, 900, 108, 1, 0, 0, 0, 901, 902, 7, 15, 0, 0, 902, 903, 7, 16, 0, 0, 903, 904, 7, 11, 0, 0, 904, 905, 7, 11, 0, 0, 905, 906, 7, 10, 0, 0, 906, 907, 7, 7, 0, 0, 907, 908, 7, 9, 0, 0, 908, 909, 5, 95, 0, 0, 909, 910, 7, 16, 0, 0, 910, 911, 7, 0, 0, 0, 911, 912, 7, 10, 0, 0, 912, 913, 7, 11, 0, 0, 913, 110, 1, 0, 0, 0, 914, 915, 7, 5, 0, 0, 915, 916, 7, 4, 0, 0, 916, 917, 7, 9, 0, 0, 917, 918, 7, 4, 0, 0, 918, 112, 1, 0, 0, 0, 919, 920, 7, 5, 0, 0, 920, 921, 7, 4, 0, 0, 921, 922, 7, 9, 0, 0, 922, 923, 7, 10, 0, 0, 923, 114, 1, 0, 0, 0, 924, 925, 7, 5, 0, 0, 925, 926, 7, 4, 0, 0, 926, 927, 7, 13, 0, 0, 927, 116, 1, 0, 0, 0, 928, 929, 7, 5, 0, 0, 929, 930, 7, 10, 0, 0, 930, 931, 7, 8, 0, 0, 931, 932, 7, 4, 0, 0, 932, 933, 7, 16, 0, 0, 933, 934, 7, 12, 0, 0, 934, 935, 7, 9, 0, 0, 935, 118, 1, 0, 0, 0, 936, 937, 7, 5, 0, 0, 937, 938, 7, 10, 0, 0, 938, 939, 7, 4, 0, 0, 939, 940, 7, 12, 0, 0, 940, 941, 7, 12, 0, 0, 941, 942, 7, 18, 0, 0, 942, 943, 7, 15, 0, 0, 943, 944, 7, 4, 0, 0, 944, 945, 7, 9, 0, 0, 945, 946, 7, 10, 0, 0, 946, 120, 1, 0, 0, 0, 947, 948, 7, 5, 0, 0, 948, 949, 7, 10, 0, 0, 949, 950, 7, 8, 0, 0, 950, 951, 7, 2, 0, 0, 951, 952, 7, 7, 0, 0, 952, 953, 7, 10, 0, 0, 953, 954, 7, 11, 0, 0, 954, 122, 1, 0, 0, 0, 955, 956, 7, 5, 0, 0, 956, 957, 7, 10, 0, 0, 957, 958, 7, 12, 0, 0, 958, 959, 7, 10, 0, 0, 959, 960, 7, 9, 0, 0, 960, 961, 7, 10, 0, 0, 961, 124, 1, 0, 0, 0, 962, 963, 7, 5, 0, 0, 963, 964, 7, 10, 0, 0, 964, 965, 7, 0, 0, 0, 965, 966, 7, 15, 0, 0, 966, 126, 1, 0, 0, 0, 967, 968, 7, 5, 0, 0, 968, 969, 7, 10, 0, 0, 969, 970, 7, 0, 0, 0, 970, 971, 7, 15, 0, 0, 971, 972, 7, 11, 0, 0, 972, 973, 7, 2, 0, 0, 973, 974, 7, 19, 0, 0, 974, 975, 7, 10, 0, 0, 975, 128, 1, 0, 0, 0, 976, 977, 7, 5, 0, 0, 977, 978, 7, 10, 0, 0, 978, 979, 7, 8, 0, 0, 979, 980, 7, 2, 0, 0, 980, 981, 7, 7, 0, 0, 981, 982, 7, 10, 0, 0, 982, 130, 1, 0, 0, 0, 983, 984, 7, 5, 0, 0, 984, 985, 7, 2, 0, 0, 985, 986, 7, 0, 0, 0, 986, 987, 7, 9, 0, 0, 987, 988, 7, 2, 0, 0, 988, 989, 7, 7, 0, 0, 989, 990, 7, 15, 0, 0, 990, 991, 7, 9, 0, 0, 991, 132, 1, 0, 0, 0, 992, 993, 7, 5, 0, 0, 993, 994, 7, 2, 0, 0, 994, 995, 7, 0, 0, 0, 995, 996, 7, 9, 0, 0, 996, 997, 7, 11, 0, 0, 997, 998, 7, 2, 0, 0, 998, 999, 7, 19, 0, 0, 999, 1000, 7, 16, 0, 0, 1000, 1001, 7, 9, 0, 0, 1001, 1002, 7, 10, 0, 0, 1002, 1003, 7, 5, 0, 0, 1003, 134, 1, 0, 0, 0, 1004, 1005, 7, 5, 0, 0, 1005, 1006, 7, 18, 0, 0, 1006, 1007, 7, 16, 0, 0, 1007, 1008, 7, 19, 0, 0, 1008, 1009, 7, 12, 0, 0, 1009, 1010, 7, 10, 0, 0, 1010, 136, 1, 0, 0, 0, 1011, 1012, 7, 5, 0, 0, 1012, 1013, 7, 11, 0, 0, 1013, 1014, 7, 18, 0, 0, 1014, 1015, 7, 3, 0, 0, 1015, 138, 1, 0, 0, 0, 1016, 1017, 7, 10, 0, 0, 1017, 1018, 7, 12, 0, 0, 1018, 1019, 7, 0, 0, 0, 1019, 1020, 7, 10, 0, 0, 1020, 140, 1, 0, 0, 0, 1021, 1022, 7, 10, 0, 0, 1022, 1023, 7, 6, 0, 0, 1023, 1024, 7, 3, 0, 0, 1024, 1025, 7, 9, 0, 0, 1025, 1026, 7, 13, 0, 0, 1026, 142, 1, 0, 0, 0, 1027, 1028, 7, 10, 0, 0, 1028, 1029, 7, 7, 0, 0, 1029, 1030, 7, 5, 0, 0, 1030, 144, 1, 0, 0, 0, 1031, 1032, 7, 10, 0, 0, 1032, 1033, 7, 0, 0, 0, 1033, 1034, 7, 15, 0, 0, 1034, 1035, 7, 4, 0, 0, 1035, 1036, 7, 3, 0, 0, 1036, 1037, 7, 10, 0, 0, 1037, 146, 1, 0, 0, 0, 1038, 1039, 7, 10, 0, 0, 1039, 1040, 7, 22, 0, 0, 1040, 1041, 7, 15, 0, 0, 1041, 1042, 7, 10, 0, 0, 1042, 1043, 7, 3, 0, 0, 1043, 1044, 7, 9, 0, 0, 1044, 148, 1, 0, 0, 0, 1045, 1046, 7, 10, 0, 0, 1046, 1047, 7, 22, 0, 0, 1047, 1048, 7, 15, 0, 0, 1048, 1049, 7, 12, 0, 0, 1049, 1050, 7, 16, 0, 0, 1050, 1051, 7, 5, 0, 0, 1051, 1052, 7, 2, 0, 0, 1052, 1053, 7, 7, 0, 0, 1053, 1054, 7, 21, 0, 0, 1054, 150, 1, 0, 0, 0, 1055, 1056, 7, 10, 0, 0, 1056, 1057, 7, 22, 0, 0, 1057, 1058, 7, 10, 0, 0, 1058, 1059, 7, 15, 0, 0, 1059, 1060, 7, 16, 0, 0, 1060, 1061, 7, 9, 0, 0, 1061, 1062, 7, 10, 0, 0, 1062, 152, 1, 0, 0, 0, 1063, 1064, 7, 10, 0, 0, 1064, 1065, 7, 22, 0, 0, 1065, 1066, 7, 2, 0, 0, 1066, 1067, 7, 0, 0, 0, 1067, 1068, 7, 9, 0, 0, 1068, 1069, 7, 0, 0, 0, 1069, 154, 1, 0, 0, 0, 1070, 1071, 7, 10, 0, 0, 1071, 1072, 7, 22, 0, 0, 1072, 1073, 7, 3, 0, 0, 1073, 1074, 7, 12, 0, 0, 1074, 1075, 7, 4, 0, 0, 1075, 1076, 7, 2, 0, 0, 1076, 1077, 7, 7, 0, 0, 1077, 156, 1, 0, 0, 0, 1078, 1079, 7, 10, 0, 0, 1079, 1080, 7, 22, 0, 0, 1080, 1081, 7, 9, 0, 0, 1081, 1082, 7, 11, 0, 0, 1082, 1083, 7, 4, 0, 0, 1083, 1084, 7, 15, 0, 0, 1084, 1085, 7, 9, 0, 0, 1085, 158, 1, 0, 0, 0, 1086, 1087, 7, 8, 0, 0, 1087, 1088, 7, 4, 0, 0, 1088, 1089, 7, 12, 0, 0, 1089, 1090, 7, 0, 0, 0, 1090, 1091, 7, 10, 0, 0, 1091, 160, 1, 0, 0, 0, 1092, 1093, 7, 8, 0, 0, 1093, 1094, 7, 10, 0, 0, 1094, 1095, 7, 9, 0, 0, 1095, 1096, 7, 15, 0, 0, 1096, 1097, 7, 17, 0, 0, 1097, 162, 1, 0, 0, 0, 1098, 1099, 7, 8, 0, 0, 1099, 1100, 7, 2, 0, 0, 1100, 1101, 7, 12, 0, 0, 1101, 1102, 7, 9, 0, 0, 1102, 1103, 7, 10, 0, 0, 1103, 1104, 7, 11, 0, 0, 1104, 164, 1, 0, 0, 0, 1105, 1106, 7, 8, 0, 0, 1106, 1107, 7, 2, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 1109, 7, 4, 0, 0, 1109, 1110, 7, 12, 0, 0, 1110, 166, 1, 0, 0, 0, 1111, 1112, 7, 8, 0, 0, 1112, 1113, 7, 2, 0, 0, 1113, 1114, 7, 11, 0, 0, 1114, 1115, 7, 0, 0, 0, 1115, 1116, 7, 9, 0, 0, 1116, 168, 1, 0, 0, 0, 1117, 1118, 7, 8, 0, 0, 1118, 1119, 7, 18, 0, 0, 1119, 1120, 7, 12, 0, 0, 1120, 1121, 7, 12, 0, 0, 1121, 1122, 7, 18, 0, 0, 1122, 1123, 7, 20, 0, 0, 1123, 1124, 7, 2, 0, 0, 1124, 1125, 7, 7, 0, 0, 1125, 1126, 7, 21, 0, 0, 1126, 170, 1, 0, 0, 0, 1127, 1128, 7, 8, 0, 0, 1128, 1129, 7, 18, 0, 0, 1129, 1130, 7, 11, 0, 0, 1130, 172, 1, 0, 0, 0, 1131, 1132, 7, 8, 0, 0, 1132, 1133, 7, 18, 0, 0, 1133, 1134, 7, 11, 0, 0, 1134, 1135, 7, 6, 0, 0, 1135, 1136, 7, 4, 0, 0, 1136, 1137, 7, 9, 0, 0, 1137, 174, 1, 0, 0, 0, 1138, 1139, 7, 8, 0, 0, 1139, 1140, 7, 11, 0, 0, 1140, 1141, 7, 18, 0, 0, 1141, 1142, 7, 6, 0, 0, 1142, 176, 1, 0, 0, 0, 1143, 1144, 7, 8, 0, 0, 1144, 1145, 7, 16, 0, 0, 1145, 1146, 7, 12, 0, 0, 1146, 1147, 7, 12, 0, 0, 1147, 178, 1, 0, 0, 0, 1148, 1149, 7, 8, 0, 0, 1149, 1150, 7, 16, 0, 0, 1150, 1151, 7, 7, 0, 0, 1151, 1152, 7, 15, 0, 0, 1152, 1153, 7, 9, 0, 0, 1153, 1154, 7, 2, 0, 0, 1154, 1155, 7, 18, 0, 0, 1155, 1156, 7, 7, 0, 0, 1156, 1157, 7, 0, 0, 0, 1157, 180, 1, 0, 0, 0, 1158, 1159, 7, 21, 0, 0, 1159, 1160, 7, 11, 0, 0, 1160, 1161, 7, 4, 0, 0, 1161, 1162, 7, 7, 0, 0, 1162, 1163, 7, 9, 0, 0, 1163, 182, 1, 0, 0, 0, 1164, 1165, 7, 21, 0, 0, 1165, 1166, 7, 11, 0, 0, 1166, 1167, 7, 4, 0, 0, 1167, 1168, 7, 7, 0, 0, 1168, 1169, 7, 9, 0, 0, 1169, 1170, 7, 10, 0, 0, 1170, 1171, 7, 5, 0, 0, 1171, 184, 1, 0, 0, 0, 1172, 1173, 7, 21, 0, 0, 1173, 1174, 7, 11, 0, 0, 1174, 1175, 7, 4, 0, 0, 1175, 1176, 7, 7, 0, 0, 1176, 1177, 7, 9, 0, 0, 1177, 1178, 7, 0, 0, 0, 1178, 186, 1, 0, 0, 0, 1179, 1180, 7, 5, 0, 0, 1180, 1181, 7, 10, 0, 0, 1181, 1182, 7, 7, 0, 0, 1182, 1183, 7, 13, 0, 0, 1183, 188, 1, 0, 0, 0, 1184, 1185, 7, 21, 0, 0, 1185, 1186, 7, 11, 0, 0, 1186, 1187, 7, 4, 0, 0, 1187, 1188, 7, 3, 0, 0, 1188, 1189, 7, 17, 0, 0, 1189, 1190, 7, 23, 0, 0, 1190, 1191, 7, 2, 0, 0, 1191, 1192, 7, 14, 0, 0, 1192, 190, 1, 0, 0, 0, 1193, 1194, 7, 21, 0, 0, 1194, 1195, 7, 11, 0, 0, 1195, 1196, 7, 18, 0, 0, 1196, 1197, 7, 16, 0, 0, 1197, 1198, 7, 3, 0, 0, 1198, 192, 1, 0, 0, 0, 1199, 1200, 7, 21, 0, 0, 1200, 1201, 7, 11, 0, 0, 1201, 1202, 7, 18, 0, 0, 1202, 1203, 7, 16, 0, 0, 1203, 1204, 7, 3, 0, 0, 1204, 1205, 7, 2, 0, 0, 1205, 1206, 7, 7, 0, 0, 1206, 1207, 7, 21, 0, 0, 1207, 194, 1, 0, 0, 0, 1208, 1209, 7, 21, 0, 0, 1209, 1210, 7, 11, 0, 0, 1210, 1211, 7, 18, 0, 0, 1211, 1212, 7, 16, 0, 0, 1212, 1213, 7, 3, 0, 0, 1213, 1214, 7, 0, 0, 0, 1214, 196, 1, 0, 0, 0, 1215, 1216, 7, 17, 0, 0, 1216, 1217, 7, 4, 0, 0, 1217, 1218, 7, 23, 0, 0, 1218, 1219, 7, 2, 0, 0, 1219, 1220, 7, 7, 0, 0, 1220, 1221, 7, 21, 0, 0, 1221, 198, 1, 0, 0, 0, 1222, 1223, 7, 17, 0, 0, 1223, 1224, 7, 18, 0, 0, 1224, 1225, 7, 16, 0, 0, 1225, 1226, 7, 11, 0, 0, 1226, 200, 1, 0, 0, 0, 1227, 1228, 7, 2, 0, 0, 1228, 1229, 7, 8, 0, 0, 1229, 202, 1, 0, 0, 0, 1230, 1231, 7, 2, 0, 0, 1231, 1232, 7, 21, 0, 0, 1232, 1233, 7, 7, 0, 0, 1233, 1234, 7, 18, 0, 0, 1234, 1235, 7, 11, 0, 0, 1235, 1236, 7, 10, 0, 0, 1236, 204, 1, 0, 0, 0, 1237, 1238, 7, 2, 0, 0, 1238, 1239, 7, 7, 0, 0, 1239, 206, 1, 0, 0, 0, 1240, 1241, 7, 2, 0, 0, 1241, 1242, 7, 7, 0, 0, 1242, 1243, 7, 15, 0, 0, 1243, 1244, 7, 12, 0, 0, 1244, 1245, 7, 16, 0, 0, 1245, 1246, 7, 5, 0, 0, 1246, 1247, 7, 2, 0, 0, 1247, 1248, 7, 7, 0, 0, 1248, 1249, 7, 21, 0, 0, 1249, 208, 1, 0, 0, 0, 1250, 1251, 7, 2, 0, 0, 1251, 1252, 7, 7, 0, 0, 1252, 1253, 7, 2, 0, 0, 1253, 1254, 7, 9, 0, 0, 1254, 1255, 7, 2, 0, 0, 1255, 1256, 7, 4, 0, 0, 1256, 1257, 7, 12, 0, 0, 1257, 210, 1, 0, 0, 0, 1258, 1259, 7, 2, 0, 0, 1259, 1260, 7, 7, 0, 0, 1260, 1261, 7, 7, 0, 0, 1261, 1262, 7, 10, 0, 0, 1262, 1263, 7, 11, 0, 0, 1263, 212, 1, 0, 0, 0, 1264, 1265, 7, 2, 0, 0, 1265, 1266, 7, 7, 0, 0, 1266, 1267, 7, 3, 0, 0, 1267, 1268, 7, 16, 0, 0, 1268, 1269, 7, 9, 0, 0, 1269, 214, 1, 0, 0, 0, 1270, 1271, 7, 2, 0, 0, 1271, 1272, 7, 7, 0, 0, 1272, 1273, 7, 0, 0, 0, 1273, 1274, 7, 10, 0, 0, 1274, 1275, 7, 11, 0, 0, 1275, 1276, 7, 9, 0, 0, 1276, 216, 1, 0, 0, 0, 1277, 1278, 7, 2, 0, 0, 1278, 1279, 7, 7, 0, 0, 1279, 1280, 7, 9, 0, 0, 1280, 1281, 7, 10, 0, 0, 1281, 1282, 7, 11, 0, 0, 1282, 1283, 7, 0, 0, 0, 1283, 1284, 7, 10, 0, 0, 1284, 1285, 7, 15, 0, 0, 1285, 1286, 7, 9, 0, 0, 1286, 218, 1, 0, 0, 0, 1287, 1288, 7, 2, 0, 0, 1288, 1289, 7, 7, 0, 0, 1289, 1290, 7, 9, 0, 0, 1290, 1291, 7, 10, 0, 0, 1291, 1292, 7, 11, 0, 0, 1292, 1293, 7, 23, 0, 0, 1293, 1294, 7, 4, 0, 0, 1294, 1295, 7, 12, 0, 0, 1295, 220, 1, 0, 0, 0, 1296, 1297, 7, 2, 0, 0, 1297, 1298, 7, 7, 0, 0, 1298, 1299, 7, 9, 0, 0, 1299, 1300, 7, 18, 0, 0, 1300, 222, 1, 0, 0, 0, 1301, 1302, 7, 2, 0, 0, 1302, 1303, 7, 7, 0, 0, 1303, 1304, 7, 23, 0, 0, 1304, 1305, 7, 18, 0, 0, 1305, 1306, 7, 1, 0, 0, 1306, 1307, 7, 10, 0, 0, 1307, 1308, 7, 11, 0, 0, 1308, 224, 1, 0, 0, 0, 1309, 1310, 7, 2, 0, 0, 1310, 1311, 7, 18, 0, 0, 1311, 226, 1, 0, 0, 0, 1312, 1313, 7, 2, 0, 0, 1313, 1314, 7, 0, 0, 0, 1314, 228, 1, 0, 0, 0, 1315, 1316, 7, 2, 0, 0, 1316, 1317, 7, 0, 0, 0, 1317, 1318, 7, 18, 0, 0, 1318, 1319, 7, 12, 0, 0, 1319, 1320, 7, 4, 0, 0, 1320, 1321, 7, 9, 0, 0, 1321, 1322, 7, 2, 0, 0, 1322, 1323, 7, 18, 0, 0, 1323, 1324, 7, 7, 0, 0, 1324, 230, 1, 0, 0, 0, 1325, 1326, 7, 24, 0, 0, 1326, 1327, 7, 18, 0, 0, 1327, 1328, 7, 2, 0, 0, 1328, 1329, 7, 7, 0, 0, 1329, 232, 1, 0, 0, 0, 1330, 1331, 7, 24, 0, 0, 1331, 1332, 7, 0, 0, 0, 1332, 1333, 7, 18, 0, 0, 1333, 1334, 7, 7, 0, 0, 1334, 234, 1, 0, 0, 0, 1335, 1336, 7, 12, 0, 0, 1336, 1337, 7, 4, 0, 0, 1337, 1338, 7, 0, 0, 0, 1338, 1339, 7, 9, 0, 0, 1339, 236, 1, 0, 0, 0, 1340, 1341, 7, 12, 0, 0, 1341, 1342, 7, 4, 0, 0, 1342, 1343, 7, 9, 0, 0, 1343, 1344, 7, 10, 0, 0, 1344, 1345, 7, 11, 0, 0, 1345, 1346, 7, 4, 0, 0, 1346, 1347, 7, 12, 0, 0, 1347, 238, 1, 0, 0, 0, 1348, 1349, 7, 12, 0, 0, 1349, 1350, 7, 10, 0, 0, 1350, 1351, 7, 8, 0, 0, 1351, 1352, 7, 9, 0, 0, 1352, 240, 1, 0, 0, 0, 1353, 1354, 7, 12, 0, 0, 1354, 1355, 7, 10, 0, 0, 1355, 1356, 7, 23, 0, 0, 1356, 1357, 7, 10, 0, 0, 1357, 1358, 7, 12, 0, 0, 1358, 242, 1, 0, 0, 0, 1359, 1360, 7, 12, 0, 0, 1360, 1361, 7, 2, 0, 0, 1361, 1362, 7, 1, 0, 0, 1362, 1363, 7, 10, 0, 0, 1363, 244, 1, 0, 0, 0, 1364, 1365, 7, 12, 0, 0, 1365, 1366, 7, 2, 0, 0, 1366, 1367, 7, 6, 0, 0, 1367, 1368, 7, 2, 0, 0, 1368, 1369, 7, 9, 0, 0, 1369, 246, 1, 0, 0, 0, 1370, 1371, 7, 12, 0, 0, 1371, 1372, 7, 18, 0, 0, 1372, 1373, 7, 15, 0, 0, 1373, 1374, 7, 4, 0, 0, 1374, 1375, 7, 12, 0, 0, 1375, 248, 1, 0, 0, 0, 1376, 1377, 7, 12, 0, 0, 1377, 1378, 7, 18, 0, 0, 1378, 1379, 7, 15, 0, 0, 1379, 1380, 7, 4, 0, 0, 1380, 1381, 7, 12, 0, 0, 1381, 1382, 7, 9, 0, 0, 1382, 1383, 7, 2, 0, 0, 1383, 1384, 7, 6, 0, 0, 1384, 1385, 7, 10, 0, 0, 1385, 250, 1, 0, 0, 0, 1386, 1387, 7, 12, 0, 0, 1387, 1388, 7, 18, 0, 0, 1388, 1389, 7, 15, 0, 0, 1389, 1390, 7, 4, 0, 0, 1390, 1391, 7, 12, 0, 0, 1391, 1392, 7, 9, 0, 0, 1392, 1393, 7, 2, 0, 0, 1393, 1394, 7, 6, 0, 0, 1394, 1395, 7, 10, 0, 0, 1395, 1396, 7, 0, 0, 0, 1396, 1397, 7, 9, 0, 0, 1397, 1398, 7, 4, 0, 0, 1398, 1399, 7, 6, 0, 0, 1399, 1400, 7, 3, 0, 0, 1400, 252, 1, 0, 0, 0, 1401, 1402, 7, 12, 0, 0, 1402, 1403, 7, 18, 0, 0, 1403, 1404, 7, 21, 0, 0, 1404, 1405, 7, 2, 0, 0, 1405, 1406, 7, 15, 0, 0, 1406, 1407, 7, 4, 0, 0, 1407, 1408, 7, 12, 0, 0, 1408, 254, 1, 0, 0, 0, 1409, 1410, 7, 6, 0, 0, 1410, 1411, 7, 4, 0, 0, 1411, 1412, 7, 3, 0, 0, 1412, 256, 1, 0, 0, 0, 1413, 1414, 7, 6, 0, 0, 1414, 1415, 7, 4, 0, 0, 1415, 1416, 7, 9, 0, 0, 1416, 1417, 7, 15, 0, 0, 1417, 1418, 7, 17, 0, 0, 1418, 258, 1, 0, 0, 0, 1419, 1420, 7, 6, 0, 0, 1420, 1421, 7, 4, 0, 0, 1421, 1422, 7, 9, 0, 0, 1422, 1423, 7, 15, 0, 0, 1423, 1424, 7, 17, 0, 0, 1424, 1425, 7, 10, 0, 0, 1425, 1426, 7, 5, 0, 0, 1426, 260, 1, 0, 0, 0, 1427, 1428, 7, 6, 0, 0, 1428, 1429, 7, 4, 0, 0, 1429, 1430, 7, 9, 0, 0, 1430, 1431, 7, 15, 0, 0, 1431, 1432, 7, 17, 0, 0, 1432, 1433, 7, 10, 0, 0, 1433, 1434, 7, 0, 0, 0, 1434, 262, 1, 0, 0, 0, 1435, 1436, 7, 6, 0, 0, 1436, 1437, 7, 4, 0, 0, 1437, 1438, 7, 9, 0, 0, 1438, 1439, 7, 15, 0, 0, 1439, 1440, 7, 17, 0, 0, 1440, 1441, 5, 95, 0, 0, 1441, 1442, 7, 11, 0, 0, 1442, 1443, 7, 10, 0, 0, 1443, 1444, 7, 15, 0, 0, 1444, 1445, 7, 18, 0, 0, 1445, 1446, 7, 21, 0, 0, 1446, 1447, 7, 7, 0, 0, 1447, 1448, 7, 2, 0, 0, 1448, 1449, 7, 14, 0, 0, 1449, 1450, 7, 10, 0, 0, 1450, 264, 1, 0, 0, 0, 1451, 1452, 7, 6, 0, 0, 1452, 1453, 7, 4, 0, 0, 1453, 1454, 7, 9, 0, 0, 1454, 1455, 7, 10, 0, 0, 1455, 1456, 7, 11, 0, 0, 1456, 1457, 7, 2, 0, 0, 1457, 1458, 7, 4, 0, 0, 1458, 1459, 7, 12, 0, 0, 1459, 1460, 7, 2, 0, 0, 1460, 1461, 7, 14, 0, 0, 1461, 1462, 7, 10, 0, 0, 1462, 1463, 7, 5, 0, 0, 1463, 266, 1, 0, 0, 0, 1464, 1465, 7, 6, 0, 0, 1465, 1466, 7, 10, 0, 0, 1466, 1467, 7, 4, 0, 0, 1467, 1468, 7, 0, 0, 0, 1468, 1469, 7, 16, 0, 0, 1469, 1470, 7, 11, 0, 0, 1470, 1471, 7, 10, 0, 0, 1471, 1472, 7, 0, 0, 0, 1472, 268, 1, 0, 0, 0, 1473, 1474, 7, 6, 0, 0, 1474, 1475, 7, 10, 0, 0, 1475, 1476, 7, 11, 0, 0, 1476, 1477, 7, 21, 0, 0, 1477, 1478, 7, 10, 0, 0, 1478, 270, 1, 0, 0, 0, 1479, 1480, 7, 6, 0, 0, 1480, 1481, 7, 2, 0, 0, 1481, 1482, 7, 7, 0, 0, 1482, 1483, 7, 16, 0, 0, 1483, 1484, 7, 9, 0, 0, 1484, 1485, 7, 10, 0, 0, 1485, 272, 1, 0, 0, 0, 1486, 1487, 7, 6, 0, 0, 1487, 1488, 7, 18, 0, 0, 1488, 1489, 7, 7, 0, 0, 1489, 1490, 7, 9, 0, 0, 1490, 1491, 7, 17, 0, 0, 1491, 274, 1, 0, 0, 0, 1492, 1493, 7, 7, 0, 0, 1493, 1494, 7, 4, 0, 0, 1494, 1495, 7, 9, 0, 0, 1495, 1496, 7, 16, 0, 0, 1496, 1497, 7, 11, 0, 0, 1497, 1498, 7, 4, 0, 0, 1498, 1499, 7, 12, 0, 0, 1499, 276, 1, 0, 0, 0, 1500, 1501, 7, 7, 0, 0, 1501, 1502, 7, 10, 0, 0, 1502, 1503, 7, 22, 0, 0, 1503, 1504, 7, 9, 0, 0, 1504, 278, 1, 0, 0, 0, 1505, 1506, 7, 7, 0, 0, 1506, 1507, 7, 8, 0, 0, 1507, 1508, 7, 15, 0, 0, 1508, 280, 1, 0, 0, 0, 1509, 1510, 7, 7, 0, 0, 1510, 1511, 7, 8, 0, 0, 1511, 1512, 7, 5, 0, 0, 1512, 282, 1, 0, 0, 0, 1513, 1514, 7, 7, 0, 0, 1514, 1515, 7, 8, 0, 0, 1515, 1516, 7, 1, 0, 0, 1516, 1517, 7, 15, 0, 0, 1517, 284, 1, 0, 0, 0, 1518, 1519, 7, 7, 0, 0, 1519, 1520, 7, 8, 0, 0, 1520, 1521, 7, 1, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 286, 1, 0, 0, 0, 1523, 1524, 7, 7, 0, 0, 1524, 1525, 7, 18, 0, 0, 1525, 288, 1, 0, 0, 0, 1526, 1527, 7, 7, 0, 0, 1527, 1528, 7, 18, 0, 0, 1528, 1529, 7, 7, 0, 0, 1529, 1530, 7, 10, 0, 0, 1530, 290, 1, 0, 0, 0, 1531, 1532, 7, 7, 0, 0, 1532, 1533, 7, 18, 0, 0, 1533, 1534, 7, 11, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 4, 0, 0, 1536, 1537, 7, 12, 0, 0, 1537, 1538, 7, 2, 0, 0, 1538, 1539, 7, 14, 0, 0, 1539, 1540, 7, 10, 0, 0, 1540, 292, 1, 0, 0, 0, 1541, 1542, 7, 7, 0, 0, 1542, 1543, 7, 18, 0, 0, 1543, 1544, 7, 9, 0, 0, 1544, 294, 1, 0, 0, 0, 1545, 1546, 7, 7, 0, 0, 1546, 1547, 7, 16, 0, 0, 1547, 1548, 7, 12, 0, 0, 1548, 1549, 7, 12, 0, 0, 1549, 296, 1, 0, 0, 0, 1550, 1551, 7, 7, 0, 0, 1551, 1552, 7, 16, 0, 0, 1552, 1553, 7, 12, 0, 0, 1553, 1554, 7, 12, 0, 0, 1554, 1555, 7, 2, 0, 0, 1555, 1556, 7, 8, 0, 0, 1556, 298, 1, 0, 0, 0, 1557, 1558, 7, 7, 0, 0, 1558, 1559, 7, 16, 0, 0, 1559, 1560, 7, 12, 0, 0, 1560, 1561, 7, 12, 0, 0, 1561, 1562, 7, 0, 0, 0, 1562, 300, 1, 0, 0, 0, 1563, 1564, 7, 18, 0, 0, 1564, 1565, 7, 8, 0, 0, 1565, 1566, 7, 8, 0, 0, 1566, 1567, 7, 0, 0, 0, 1567, 1568, 7, 10, 0, 0, 1568, 1569, 7, 9, 0, 0, 1569, 302, 1, 0, 0, 0, 1570, 1571, 7, 18, 0, 0, 1571, 1572, 7, 6, 0, 0, 1572, 1573, 7, 2, 0, 0, 1573, 1574, 7, 9, 0, 0, 1574, 304, 1, 0, 0, 0, 1575, 1576, 7, 18, 0, 0, 1576, 1577, 7, 7, 0, 0, 1577, 306, 1, 0, 0, 0, 1578, 1579, 7, 18, 0, 0, 1579, 1580, 7, 7, 0, 0, 1580, 1581, 7, 10, 0, 0, 1581, 308, 1, 0, 0, 0, 1582, 1583, 7, 18, 0, 0, 1583, 1584, 7, 7, 0, 0, 1584, 1585, 7, 12, 0, 0, 1585, 1586, 7, 13, 0, 0, 1586, 310, 1, 0, 0, 0, 1587, 1588, 7, 18, 0, 0, 1588, 1589, 7, 3, 0, 0, 1589, 1590, 7, 9, 0, 0, 1590, 1591, 7, 2, 0, 0, 1591, 1592, 7, 18, 0, 0, 1592, 1593, 7, 7, 0, 0, 1593, 312, 1, 0, 0, 0, 1594, 1595, 7, 18, 0, 0, 1595, 1596, 7, 11, 0, 0, 1596, 314, 1, 0, 0, 0, 1597, 1598, 7, 18, 0, 0, 1598, 1599, 7, 11, 0, 0, 1599, 1600, 7, 5, 0, 0, 1600, 1601, 7, 10, 0, 0, 1601, 1602, 7, 11, 0, 0, 1602, 316, 1, 0, 0, 0, 1603, 1604, 7, 18, 0, 0, 1604, 1605, 7, 11, 0, 0, 1605, 1606, 7, 5, 0, 0, 1606, 1607, 7, 2, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 1609, 7, 4, 0, 0, 1609, 1610, 7, 12, 0, 0, 1610, 1611, 7, 2, 0, 0, 1611, 1612, 7, 9, 0, 0, 1612, 1613, 7, 13, 0, 0, 1613, 318, 1, 0, 0, 0, 1614, 1615, 7, 18, 0, 0, 1615, 1616, 7, 16, 0, 0, 1616, 1617, 7, 9, 0, 0, 1617, 1618, 7, 10, 0, 0, 1618, 1619, 7, 11, 0, 0, 1619, 320, 1, 0, 0, 0, 1620, 1621, 7, 18, 0, 0, 1621, 1622, 7, 16, 0, 0, 1622, 1623, 7, 9, 0, 0, 1623, 1624, 7, 3, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 1626, 7, 9, 0, 0, 1626, 322, 1, 0, 0, 0, 1627, 1628, 7, 18, 0, 0, 1628, 1629, 7, 23, 0, 0, 1629, 1630, 7, 10, 0, 0, 1630, 1631, 7, 11, 0, 0, 1631, 324, 1, 0, 0, 0, 1632, 1633, 7, 3, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, 7, 11, 0, 0, 1635, 1636, 7, 9, 0, 0, 1636, 1637, 7, 2, 0, 0, 1637, 1638, 7, 9, 0, 0, 1638, 1639, 7, 2, 0, 0, 1639, 1640, 7, 18, 0, 0, 1640, 1641, 7, 7, 0, 0, 1641, 326, 1, 0, 0, 0, 1642, 1643, 7, 3, 0, 0, 1643, 1644, 7, 4, 0, 0, 1644, 1645, 7, 11, 0, 0, 1645, 1646, 7, 9, 0, 0, 1646, 1647, 7, 2, 0, 0, 1647, 1648, 7, 9, 0, 0, 1648, 1649, 7, 2, 0, 0, 1649, 1650, 7, 18, 0, 0, 1650, 1651, 7, 7, 0, 0, 1651, 1652, 7, 0, 0, 0, 1652, 328, 1, 0, 0, 0, 1653, 1654, 7, 3, 0, 0, 1654, 1655, 7, 4, 0, 0, 1655, 1656, 7, 0, 0, 0, 1656, 1657, 7, 9, 0, 0, 1657, 330, 1, 0, 0, 0, 1658, 1659, 7, 3, 0, 0, 1659, 1660, 7, 4, 0, 0, 1660, 1661, 7, 9, 0, 0, 1661, 1662, 7, 17, 0, 0, 1662, 332, 1, 0, 0, 0, 1663, 1664, 7, 3, 0, 0, 1664, 1665, 7, 4, 0, 0, 1665, 1666, 7, 9, 0, 0, 1666, 1667, 7, 9, 0, 0, 1667, 1668, 7, 10, 0, 0, 1668, 1669, 7, 11, 0, 0, 1669, 1670, 7, 7, 0, 0, 1670, 334, 1, 0, 0, 0, 1671, 1672, 7, 3, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 1674, 7, 11, 0, 0, 1674, 336, 1, 0, 0, 0, 1675, 1676, 7, 3, 0, 0, 1676, 1677, 7, 10, 0, 0, 1677, 1678, 7, 11, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 7, 9, 0, 0, 1681, 1682, 7, 10, 0, 0, 1682, 338, 1, 0, 0, 0, 1683, 1684, 7, 3, 0, 0, 1684, 1685, 7, 18, 0, 0, 1685, 1686, 7, 0, 0, 0, 1686, 1687, 7, 2, 0, 0, 1687, 1688, 7, 9, 0, 0, 1688, 1689, 7, 2, 0, 0, 1689, 1690, 7, 18, 0, 0, 1690, 1691, 7, 7, 0, 0, 1691, 340, 1, 0, 0, 0, 1692, 1693, 7, 3, 0, 0, 1693, 1694, 7, 11, 0, 0, 1694, 1695, 7, 10, 0, 0, 1695, 1696, 7, 15, 0, 0, 1696, 1697, 7, 10, 0, 0, 1697, 1698, 7, 5, 0, 0, 1698, 1699, 7, 2, 0, 0, 1699, 1700, 7, 7, 0, 0, 1700, 1701, 7, 21, 0, 0, 1701, 342, 1, 0, 0, 0, 1702, 1703, 7, 3, 0, 0, 1703, 1704, 7, 11, 0, 0, 1704, 1705, 7, 10, 0, 0, 1705, 1706, 7, 15, 0, 0, 1706, 1707, 7, 2, 0, 0, 1707, 1708, 7, 0, 0, 0, 1708, 1709, 7, 2, 0, 0, 1709, 1710, 7, 18, 0, 0, 1710, 1711, 7, 7, 0, 0, 1711, 344, 1, 0, 0, 0, 1712, 1713, 7, 3, 0, 0, 1713, 1714, 7, 11, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 3, 0, 0, 1716, 1717, 7, 4, 0, 0, 1717, 1718, 7, 11, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 346, 1, 0, 0, 0, 1720, 1721, 7, 3, 0, 0, 1721, 1722, 7, 11, 0, 0, 1722, 1723, 7, 2, 0, 0, 1723, 1724, 7, 23, 0, 0, 1724, 1725, 7, 2, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 21, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 0, 0, 0, 1730, 348, 1, 0, 0, 0, 1731, 1732, 7, 3, 0, 0, 1732, 1733, 7, 11, 0, 0, 1733, 1734, 7, 18, 0, 0, 1734, 1735, 7, 3, 0, 0, 1735, 1736, 7, 10, 0, 0, 1736, 1737, 7, 11, 0, 0, 1737, 1738, 7, 9, 0, 0, 1738, 1739, 7, 2, 0, 0, 1739, 1740, 7, 10, 0, 0, 1740, 1741, 7, 0, 0, 0, 1741, 350, 1, 0, 0, 0, 1742, 1743, 7, 11, 0, 0, 1743, 1744, 7, 4, 0, 0, 1744, 1745, 7, 7, 0, 0, 1745, 1746, 7, 21, 0, 0, 1746, 1747, 7, 10, 0, 0, 1747, 352, 1, 0, 0, 0, 1748, 1749, 7, 11, 0, 0, 1749, 1750, 7, 10, 0, 0, 1750, 1751, 7, 4, 0, 0, 1751, 1752, 7, 5, 0, 0, 1752, 354, 1, 0, 0, 0, 1753, 1754, 7, 11, 0, 0, 1754, 1755, 7, 10, 0, 0, 1755, 1756, 7, 15, 0, 0, 1756, 1757, 7, 16, 0, 0, 1757, 1758, 7, 11, 0, 0, 1758, 1759, 7, 0, 0, 0, 1759, 1760, 7, 2, 0, 0, 1760, 1761, 7, 23, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 356, 1, 0, 0, 0, 1763, 1764, 7, 11, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 8, 0, 0, 1766, 1767, 7, 11, 0, 0, 1767, 1768, 7, 10, 0, 0, 1768, 1769, 7, 0, 0, 0, 1769, 1770, 7, 17, 0, 0, 1770, 358, 1, 0, 0, 0, 1771, 1772, 7, 11, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 7, 0, 0, 1774, 1775, 7, 4, 0, 0, 1775, 1776, 7, 6, 0, 0, 1776, 1777, 7, 10, 0, 0, 1777, 360, 1, 0, 0, 0, 1778, 1779, 7, 11, 0, 0, 1779, 1780, 7, 10, 0, 0, 1780, 1781, 7, 3, 0, 0, 1781, 1782, 7, 10, 0, 0, 1782, 1783, 7, 4, 0, 0, 1783, 1784, 7, 9, 0, 0, 1784, 1785, 7, 4, 0, 0, 1785, 1786, 7, 19, 0, 0, 1786, 1787, 7, 12, 0, 0, 1787, 1788, 7, 10, 0, 0, 1788, 362, 1, 0, 0, 0, 1789, 1790, 7, 11, 0, 0, 1790, 1791, 7, 10, 0, 0, 1791, 1792, 7, 3, 0, 0, 1792, 1793, 7, 12, 0, 0, 1793, 1794, 7, 4, 0, 0, 1794, 1795, 7, 15, 0, 0, 1795, 1796, 7, 10, 0, 0, 1796, 364, 1, 0, 0, 0, 1797, 1798, 7, 11, 0, 0, 1798, 1799, 7, 10, 0, 0, 1799, 1800, 7, 0, 0, 0, 1800, 1801, 7, 10, 0, 0, 1801, 1802, 7, 9, 0, 0, 1802, 366, 1, 0, 0, 0, 1803, 1804, 7, 11, 0, 0, 1804, 1805, 7, 10, 0, 0, 1805, 1806, 7, 0, 0, 0, 1806, 1807, 7, 3, 0, 0, 1807, 1808, 7, 10, 0, 0, 1808, 1809, 7, 15, 0, 0, 1809, 1810, 7, 9, 0, 0, 1810, 368, 1, 0, 0, 0, 1811, 1812, 7, 11, 0, 0, 1812, 1813, 7, 10, 0, 0, 1813, 1814, 7, 0, 0, 0, 1814, 1815, 7, 9, 0, 0, 1815, 1816, 7, 11, 0, 0, 1816, 1817, 7, 2, 0, 0, 1817, 1818, 7, 15, 0, 0, 1818, 1819, 7, 9, 0, 0, 1819, 370, 1, 0, 0, 0, 1820, 1821, 7, 11, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 23, 0, 0, 1823, 1824, 7, 18, 0, 0, 1824, 1825, 7, 1, 0, 0, 1825, 1826, 7, 10, 0, 0, 1826, 372, 1, 0, 0, 0, 1827, 1828, 7, 11, 0, 0, 1828, 1829, 7, 2, 0, 0, 1829, 1830, 7, 21, 0, 0, 1830, 1831, 7, 17, 0, 0, 1831, 1832, 7, 9, 0, 0, 1832, 374, 1, 0, 0, 0, 1833, 1834, 7, 11, 0, 0, 1834, 1835, 7, 18, 0, 0, 1835, 1836, 7, 12, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 376, 1, 0, 0, 0, 1838, 1839, 7, 11, 0, 0, 1839, 1840, 7, 18, 0, 0, 1840, 1841, 7, 12, 0, 0, 1841, 1842, 7, 10, 0, 0, 1842, 1843, 7, 0, 0, 0, 1843, 378, 1, 0, 0, 0, 1844, 1845, 7, 11, 0, 0, 1845, 1846, 7, 18, 0, 0, 1846, 1847, 7, 12, 0, 0, 1847, 1848, 7, 12, 0, 0, 1848, 1849, 7, 19, 0, 0, 1849, 1850, 7, 4, 0, 0, 1850, 1851, 7, 15, 0, 0, 1851, 1852, 7, 1, 0, 0, 1852, 380, 1, 0, 0, 0, 1853, 1854, 7, 11, 0, 0, 1854, 1855, 7, 18, 0, 0, 1855, 1856, 7, 12, 0, 0, 1856, 1857, 7, 12, 0, 0, 1857, 1858, 7, 16, 0, 0, 1858, 1859, 7, 3, 0, 0, 1859, 382, 1, 0, 0, 0, 1860, 1861, 7, 11, 0, 0, 1861, 1862, 7, 18, 0, 0, 1862, 1863, 7, 20, 0, 0, 1863, 384, 1, 0, 0, 0, 1864, 1865, 7, 11, 0, 0, 1865, 1866, 7, 18, 0, 0, 1866, 1867, 7, 20, 0, 0, 1867, 1868, 7, 0, 0, 0, 1868, 386, 1, 0, 0, 0, 1869, 1870, 7, 11, 0, 0, 1870, 1871, 7, 16, 0, 0, 1871, 1872, 7, 7, 0, 0, 1872, 1873, 7, 7, 0, 0, 1873, 1874, 7, 2, 0, 0, 1874, 1875, 7, 7, 0, 0, 1875, 1876, 7, 21, 0, 0, 1876, 388, 1, 0, 0, 0, 1877, 1878, 7, 0, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 17, 0, 0, 1880, 1881, 7, 10, 0, 0, 1881, 1882, 7, 6, 0, 0, 1882, 1883, 7, 4, 0, 0, 1883, 390, 1, 0, 0, 0, 1884, 1885, 7, 0, 0, 0, 1885, 1886, 7, 15, 0, 0, 1886, 1887, 7, 17, 0, 0, 1887, 1888, 7, 10, 0, 0, 1888, 1889, 7, 6, 0, 0, 1889, 1890, 7, 4, 0, 0, 1890, 1891, 7, 0, 0, 0, 1891, 392, 1, 0, 0, 0, 1892, 1893, 7, 0, 0, 0, 1893, 1894, 7, 10, 0, 0, 1894, 1895, 7, 15, 0, 0, 1895, 1896, 7, 18, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 5, 0, 0, 1898, 394, 1, 0, 0, 0, 1899, 1900, 7, 0, 0, 0, 1900, 1901, 7, 10, 0, 0, 1901, 1902, 7, 15, 0, 0, 1902, 1903, 7, 16, 0, 0, 1903, 1904, 7, 11, 0, 0, 1904, 1905, 7, 2, 0, 0, 1905, 1906, 7, 9, 0, 0, 1906, 1907, 7, 13, 0, 0, 1907, 396, 1, 0, 0, 0, 1908, 1909, 7, 0, 0, 0, 1909, 1910, 7, 10, 0, 0, 1910, 1911, 7, 10, 0, 0, 1911, 1912, 7, 1, 0, 0, 1912, 398, 1, 0, 0, 0, 1913, 1914, 7, 0, 0, 0, 1914, 1915, 7, 10, 0, 0, 1915, 1916, 7, 12, 0, 0, 1916, 1917, 7, 10, 0, 0, 1917, 1918, 7, 15, 0, 0, 1918, 1919, 7, 9, 0, 0, 1919, 400, 1, 0, 0, 0, 1920, 1921, 7, 0, 0, 0, 1921, 1922, 7, 10, 0, 0, 1922, 1923, 7, 11, 0, 0, 1923, 1924, 7, 2, 0, 0, 1924, 1925, 7, 4, 0, 0, 1925, 1926, 7, 12, 0, 0, 1926, 1927, 7, 2, 0, 0, 1927, 1928, 7, 14, 0, 0, 1928, 1929, 7, 4, 0, 0, 1929, 1930, 7, 19, 0, 0, 1930, 1931, 7, 12, 0, 0, 1931, 1932, 7, 10, 0, 0, 1932, 402, 1, 0, 0, 0, 1933, 1934, 7, 0, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 0, 0, 0, 1936, 1937, 7, 0, 0, 0, 1937, 1938, 7, 2, 0, 0, 1938, 1939, 7, 18, 0, 0, 1939, 1940, 7, 7, 0, 0, 1940, 404, 1, 0, 0, 0, 1941, 1942, 7, 0, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 9, 0, 0, 1944, 406, 1, 0, 0, 0, 1945, 1946, 7, 0, 0, 0, 1946, 1947, 7, 10, 0, 0, 1947, 1948, 7, 9, 0, 0, 1948, 1949, 7, 0, 0, 0, 1949, 408, 1, 0, 0, 0, 1950, 1951, 7, 0, 0, 0, 1951, 1952, 7, 17, 0, 0, 1952, 1953, 7, 18, 0, 0, 1953, 1954, 7, 20, 0, 0, 1954, 410, 1, 0, 0, 0, 1955, 1956, 7, 0, 0, 0, 1956, 1957, 7, 18, 0, 0, 1957, 1958, 7, 6, 0, 0, 1958, 1959, 7, 10, 0, 0, 1959, 412, 1, 0, 0, 0, 1960, 1961, 7, 0, 0, 0, 1961, 1962, 7, 9, 0, 0, 1962, 1963, 7, 4, 0, 0, 1963, 1964, 7, 11, 0, 0, 1964, 1965, 7, 9, 0, 0, 1965, 414, 1, 0, 0, 0, 1966, 1967, 7, 0, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 4, 0, 0, 1969, 1970, 7, 9, 0, 0, 1970, 1971, 7, 0, 0, 0, 1971, 416, 1, 0, 0, 0, 1972, 1973, 7, 0, 0, 0, 1973, 1974, 7, 16, 0, 0, 1974, 1975, 7, 19, 0, 0, 1975, 1976, 7, 0, 0, 0, 1976, 1977, 7, 10, 0, 0, 1977, 1978, 7, 9, 0, 0, 1978, 418, 1, 0, 0, 0, 1979, 1980, 7, 0, 0, 0, 1980, 1981, 7, 16, 0, 0, 1981, 1982, 7, 19, 0, 0, 1982, 1983, 7, 0, 0, 0, 1983, 1984, 7, 9, 0, 0, 1984, 1985, 7, 11, 0, 0, 1985, 1986, 7, 2, 0, 0, 1986, 1987, 7, 7, 0, 0, 1987, 1988, 7, 21, 0, 0, 1988, 420, 1, 0, 0, 0, 1989, 1990, 7, 0, 0, 0, 1990, 1991, 7, 13, 0, 0, 1991, 1992, 7, 0, 0, 0, 1992, 1993, 7, 9, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 1995, 7, 6, 0, 0, 1995, 422, 1, 0, 0, 0, 1996, 1997, 7, 9, 0, 0, 1997, 1998, 7, 4, 0, 0, 1998, 1999, 7, 19, 0, 0, 1999, 2000, 7, 12, 0, 0, 2000, 2001, 7, 10, 0, 0, 2001, 424, 1, 0, 0, 0, 2002, 2003, 7, 9, 0, 0, 2003, 2004, 7, 4, 0, 0, 2004, 2005, 7, 19, 0, 0, 2005, 2006, 7, 12, 0, 0, 2006, 2007, 7, 10, 0, 0, 2007, 2008, 7, 0, 0, 0, 2008, 426, 1, 0, 0, 0, 2009, 2010, 7, 9, 0, 0, 2010, 2011, 7, 4, 0, 0, 2011, 2012, 7, 19, 0, 0, 2012, 2013, 7, 12, 0, 0, 2013, 2014, 7, 10, 0, 0, 2014, 2015, 7, 0, 0, 0, 2015, 2016, 7, 4, 0, 0, 2016, 2017, 7, 6, 0, 0, 2017, 2018, 7, 3, 0, 0, 2018, 2019, 7, 12, 0, 0, 2019, 2020, 7, 10, 0, 0, 2020, 428, 1, 0, 0, 0, 2021, 2022, 7, 9, 0, 0, 2022, 2023, 7, 10, 0, 0, 2023, 2024, 7, 22, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 430, 1, 0, 0, 0, 2026, 2027, 7, 9, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 2030, 7, 7, 0, 0, 2030, 432, 1, 0, 0, 0, 2031, 2032, 7, 9, 0, 0, 2032, 2033, 7, 2, 0, 0, 2033, 2034, 7, 10, 0, 0, 2034, 2035, 7, 0, 0, 0, 2035, 434, 1, 0, 0, 0, 2036, 2037, 7, 9, 0, 0, 2037, 2038, 7, 2, 0, 0, 2038, 2039, 7, 6, 0, 0, 2039, 2040, 7, 10, 0, 0, 2040, 436, 1, 0, 0, 0, 2041, 2042, 7, 9, 0, 0, 2042, 2043, 7, 2, 0, 0, 2043, 2044, 7, 6, 0, 0, 2044, 2045, 7, 10, 0, 0, 2045, 2046, 7, 0, 0, 0, 2046, 2047, 7, 9, 0, 0, 2047, 2048, 7, 4, 0, 0, 2048, 2049, 7, 6, 0, 0, 2049, 2050, 7, 3, 0, 0, 2050, 438, 1, 0, 0, 0, 2051, 2052, 7, 9, 0, 0, 2052, 2053, 7, 18, 0, 0, 2053, 440, 1, 0, 0, 0, 2054, 2055, 7, 9, 0, 0, 2055, 2056, 7, 11, 0, 0, 2056, 2057, 7, 4, 0, 0, 2057, 2058, 7, 7, 0, 0, 2058, 2059, 7, 0, 0, 0, 2059, 2060, 7, 4, 0, 0, 2060, 2061, 7, 15, 0, 0, 2061, 2062, 7, 9, 0, 0, 2062, 2063, 7, 2, 0, 0, 2063, 2064, 7, 18, 0, 0, 2064, 2065, 7, 7, 0, 0, 2065, 442, 1, 0, 0, 0, 2066, 2067, 7, 9, 0, 0, 2067, 2068, 7, 11, 0, 0, 2068, 2069, 7, 16, 0, 0, 2069, 2070, 7, 7, 0, 0, 2070, 2071, 7, 15, 0, 0, 2071, 2072, 7, 4, 0, 0, 2072, 2073, 7, 9, 0, 0, 2073, 2074, 7, 10, 0, 0, 2074, 444, 1, 0, 0, 0, 2075, 2076, 7, 9, 0, 0, 2076, 2077, 7, 11, 0, 0, 2077, 2078, 7, 16, 0, 0, 2078, 2079, 7, 10, 0, 0, 2079, 446, 1, 0, 0, 0, 2080, 2081, 7, 9, 0, 0, 2081, 2082, 7, 11, 0, 0, 2082, 2083, 7, 13, 0, 0, 2083, 2084, 5, 95, 0, 0, 2084, 2085, 7, 15, 0, 0, 2085, 2086, 7, 4, 0, 0, 2086, 2087, 7, 0, 0, 0, 2087, 2088, 7, 9, 0, 0, 2088, 448, 1, 0, 0, 0, 2089, 2090, 7, 9, 0, 0, 2090, 2091, 7, 13, 0, 0, 2091, 2092, 7, 3, 0, 0, 2092, 2093, 7, 10, 0, 0, 2093, 450, 1, 0, 0, 0, 2094, 2095, 7, 16, 0, 0, 2095, 2096, 7, 10, 0, 0, 2096, 2097, 7, 0, 0, 0, 2097, 2098, 7, 15, 0, 0, 2098, 2099, 7, 4, 0, 0, 2099, 2100, 7, 3, 0, 0, 2100, 2101, 7, 10, 0, 0, 2101, 452, 1, 0, 0, 0, 2102, 2103, 7, 16, 0, 0, 2103, 2104, 7, 7, 0, 0, 2104, 2105, 7, 19, 0, 0, 2105, 2106, 7, 18, 0, 0, 2106, 2107, 7, 16, 0, 0, 2107, 2108, 7, 7, 0, 0, 2108, 2109, 7, 5, 0, 0, 2109, 2110, 7, 10, 0, 0, 2110, 2111, 7, 5, 0, 0, 2111, 454, 1, 0, 0, 0, 2112, 2113, 7, 16, 0, 0, 2113, 2114, 7, 7, 0, 0, 2114, 2115, 7, 15, 0, 0, 2115, 2116, 7, 18, 0, 0, 2116, 2117, 7, 6, 0, 0, 2117, 2118, 7, 6, 0, 0, 2118, 2119, 7, 2, 0, 0, 2119, 2120, 7, 9, 0, 0, 2120, 2121, 7, 9, 0, 0, 2121, 2122, 7, 10, 0, 0, 2122, 2123, 7, 5, 0, 0, 2123, 456, 1, 0, 0, 0, 2124, 2125, 7, 16, 0, 0, 2125, 2126, 7, 7, 0, 0, 2126, 2127, 7, 2, 0, 0, 2127, 2128, 7, 18, 0, 0, 2128, 2129, 7, 7, 0, 0, 2129, 458, 1, 0, 0, 0, 2130, 2131, 7, 16, 0, 0, 2131, 2132, 7, 7, 0, 0, 2132, 2133, 7, 6, 0, 0, 2133, 2134, 7, 4, 0, 0, 2134, 2135, 7, 9, 0, 0, 2135, 2136, 7, 15, 0, 0, 2136, 2137, 7, 17, 0, 0, 2137, 2138, 7, 10, 0, 0, 2138, 2139, 7, 5, 0, 0, 2139, 460, 1, 0, 0, 0, 2140, 2141, 7, 16, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 2143, 7, 7, 0, 0, 2143, 2144, 7, 10, 0, 0, 2144, 2145, 7, 0, 0, 0, 2145, 2146, 7, 9, 0, 0, 2146, 462, 1, 0, 0, 0, 2147, 2148, 7, 16, 0, 0, 2148, 2149, 7, 3, 0, 0, 2149, 2150, 7, 5, 0, 0, 2150, 2151, 7, 4, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 10, 0, 0, 2153, 464, 1, 0, 0, 0, 2154, 2155, 7, 16, 0, 0, 2155, 2156, 7, 0, 0, 0, 2156, 2157, 7, 10, 0, 0, 2157, 466, 1, 0, 0, 0, 2158, 2159, 7, 16, 0, 0, 2159, 2160, 7, 0, 0, 0, 2160, 2161, 7, 10, 0, 0, 2161, 2162, 7, 11, 0, 0, 2162, 468, 1, 0, 0, 0, 2163, 2164, 7, 16, 0, 0, 2164, 2165, 7, 0, 0, 0, 2165, 2166, 7, 2, 0, 0, 2166, 2167, 7, 7, 0, 0, 2167, 2168, 7, 21, 0, 0, 2168, 470, 1, 0, 0, 0, 2169, 2170, 7, 23, 0, 0, 2170, 2171, 7, 4, 0, 0, 2171, 2172, 7, 12, 0, 0, 2172, 2173, 7, 2, 0, 0, 2173, 2174, 7, 5, 0, 0, 2174, 2175, 7, 4, 0, 0, 2175, 2176, 7, 9, 0, 0, 2176, 2177, 7, 10, 0, 0, 2177, 472, 1, 0, 0, 0, 2178, 2179, 7, 23, 0, 0, 2179, 2180, 7, 4, 0, 0, 2180, 2181, 7, 12, 0, 0, 2181, 2182, 7, 16, 0, 0, 2182, 2183, 7, 10, 0, 0, 2183, 2184, 7, 0, 0, 0, 2184, 474, 1, 0, 0, 0, 2185, 2186, 7, 23, 0, 0, 2186, 2187, 7, 10, 0, 0, 2187, 2188, 7, 11, 0, 0, 2188, 2189, 7, 19, 0, 0, 2189, 2190, 7, 18, 0, 0, 2190, 2191, 7, 0, 0, 0, 2191, 2192, 7, 10, 0, 0, 2192, 476, 1, 0, 0, 0, 2193, 2194, 7, 23, 0, 0, 2194, 2195, 7, 2, 0, 0, 2195, 2196, 7, 10, 0, 0, 2196, 2197, 7, 20, 0, 0, 2197, 478, 1, 0, 0, 0, 2198, 2199, 7, 20, 0, 0, 2199, 2200, 7, 17, 0, 0, 2200, 2201, 7, 10, 0, 0, 2201, 2202, 7, 7, 0, 0, 2202, 480, 1, 0, 0, 0, 2203, 2204, 7, 20, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 10, 0, 0, 2206, 2207, 7, 11, 0, 0, 2207, 2208, 7, 10, 0, 0, 2208, 482, 1, 0, 0, 0, 2209, 2210, 7, 20, 0, 0, 2210, 2211, 7, 2, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 5, 0, 0, 2213, 2214, 7, 18, 0, 0, 2214, 2215, 7, 20, 0, 0, 2215, 484, 1, 0, 0, 0, 2216, 2217, 7, 20, 0, 0, 2217, 2218, 7, 2, 0, 0, 2218, 2219, 7, 9, 0, 0, 2219, 2220, 7, 17, 0, 0, 2220, 486, 1, 0, 0, 0, 2221, 2222, 7, 20, 0, 0, 2222, 2223, 7, 2, 0, 0, 2223, 2224, 7, 9, 0, 0, 2224, 2225, 7, 17, 0, 0, 2225, 2226, 7, 18, 0, 0, 2226, 2227, 7, 16, 0, 0, 2227, 2228, 7, 9, 0, 0, 2228, 488, 1, 0, 0, 0, 2229, 2230, 7, 20, 0, 0, 2230, 2231, 7, 18, 0, 0, 2231, 2232, 7, 11, 0, 0, 2232, 2233, 7, 1, 0, 0, 2233, 490, 1, 0, 0, 0, 2234, 2235, 7, 20, 0, 0, 2235, 2236, 7, 11, 0, 0, 2236, 2237, 7, 2, 0, 0, 2237, 2238, 7, 9, 0, 0, 2238, 2239, 7, 10, 0, 0, 2239, 492, 1, 0, 0, 0, 2240, 2241, 7, 13, 0, 0, 2241, 2242, 7, 10, 0, 0, 2242, 2243, 7, 4, 0, 0, 2243, 2244, 7, 11, 0, 0, 2244, 494, 1, 0, 0, 0, 2245, 2246, 7, 14, 0, 0, 2246, 2247, 7, 18, 0, 0, 2247, 2248, 7, 7, 0, 0, 2248, 2249, 7, 10, 0, 0, 2249, 496, 1, 0, 0, 0, 2250, 2251, 5, 61, 0, 0, 2251, 498, 1, 0, 0, 0, 2252, 2253, 5, 60, 0, 0, 2253, 2257, 5, 62, 0, 0, 2254, 2255, 5, 33, 0, 0, 2255, 2257, 5, 61, 0, 0, 2256, 2252, 1, 0, 0, 0, 2256, 2254, 1, 0, 0, 0, 2257, 500, 1, 0, 0, 0, 2258, 2259, 5, 60, 0, 0, 2259, 502, 1, 0, 0, 0, 2260, 2261, 5, 60, 0, 0, 2261, 2262, 5, 61, 0, 0, 2262, 504, 1, 0, 0, 0, 2263, 2264, 5, 62, 0, 0, 2264, 506, 1, 0, 0, 0, 2265, 2266, 5, 62, 0, 0, 2266, 2267, 5, 61, 0, 0, 2267, 508, 1, 0, 0, 0, 2268, 2269, 5, 43, 0, 0, 2269, 510, 1, 0, 0, 0, 2270, 2271, 5, 45, 0, 0, 2271, 512, 1, 0, 0, 0, 2272, 2273, 5, 42, 0, 0, 2273, 514, 1, 0, 0, 0, 2274, 2275, 5, 47, 0, 0, 2275, 516, 1, 0, 0, 0, 2276, 2277, 5, 37, 0, 0, 2277, 518, 1, 0, 0, 0, 2278, 2279, 5, 124, 0, 0, 2279, 2280, 5, 124, 0, 0, 2280, 520, 1, 0, 0, 0, 2281, 2282, 5, 63, 0, 0, 2282, 522, 1, 0, 0, 0, 2283, 2289, 5, 39, 0, 0, 2284, 2288, 8, 25, 0, 0, 2285, 2286, 5, 39, 0, 0, 2286, 2288, 5, 39, 0, 0, 2287, 2284, 1, 0, 0, 0, 2287, 2285, 1, 0, 0, 0, 2288, 2291, 1, 0, 0, 0, 2289, 2287, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2292, 1, 0, 0, 0, 2291, 2289, 1, 0, 0, 0, 2292, 2293, 5, 39, 0, 0, 2293, 524, 1, 0, 0, 0, 2294, 2295, 7, 16, 0, 0, 2295, 2296, 5, 38, 0, 0, 2296, 2297, 5, 39, 0, 0, 2297, 2303, 1, 0, 0, 0, 2298, 2302, 8, 25, 0, 0, 2299, 2300, 5, 39, 0, 0, 2300, 2302, 5, 39, 0, 0, 2301, 2298, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2302, 2305, 1, 0, 0, 0, 2303, 2301, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 1, 0, 0, 0, 2305, 2303, 1, 0, 0, 0, 2306, 2307, 5, 39, 0, 0, 2307, 526, 1, 0, 0, 0, 2308, 2309, 7, 22, 0, 0, 2309, 2310, 5, 39, 0, 0, 2310, 2314, 1, 0, 0, 0, 2311, 2313, 8, 25, 0, 0, 2312, 2311, 1, 0, 0, 0, 2313, 2316, 1, 0, 0, 0, 2314, 2312, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, 1, 0, 0, 0, 2316, 2314, 1, 0, 0, 0, 2317, 2318, 5, 39, 0, 0, 2318, 528, 1, 0, 0, 0, 2319, 2321, 3, 547, 273, 0, 2320, 2319, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2320, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 530, 1, 0, 0, 0, 2324, 2326, 3, 547, 273, 0, 2325, 2324, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2325, 1, 0, 0, 0, 2327, 2328, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2333, 5, 46, 0, 0, 2330, 2332, 3, 547, 273, 0, 2331, 2330, 1, 0, 0, 0, 2332, 2335, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2343, 1, 0, 0, 0, 2335, 2333, 1, 0, 0, 0, 2336, 2338, 5, 46, 0, 0, 2337, 2339, 3, 547, 273, 0, 2338, 2337, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2338, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2343, 1, 0, 0, 0, 2342, 2325, 1, 0, 0, 0, 2342, 2336, 1, 0, 0, 0, 2343, 532, 1, 0, 0, 0, 2344, 2346, 3, 547, 273, 0, 2345, 2344, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2345, 1, 0, 0, 0, 2347, 2348, 1, 0, 0, 0, 2348, 2356, 1, 0, 0, 0, 2349, 2353, 5, 46, 0, 0, 2350, 2352, 3, 547, 273, 0, 2351, 2350, 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2357, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2349, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2359, 3, 545, 272, 0, 2359, 2369, 1, 0, 0, 0, 2360, 2362, 5, 46, 0, 0, 2361, 2363, 3, 547, 273, 0, 2362, 2361, 1, 0, 0, 0, 2363, 2364, 1, 0, 0, 0, 2364, 2362, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2367, 3, 545, 272, 0, 2367, 2369, 1, 0, 0, 0, 2368, 2345, 1, 0, 0, 0, 2368, 2360, 1, 0, 0, 0, 2369, 534, 1, 0, 0, 0, 2370, 2373, 3, 549, 274, 0, 2371, 2373, 5, 95, 0, 0, 2372, 2370, 1, 0, 0, 0, 2372, 2371, 1, 0, 0, 0, 2373, 2379, 1, 0, 0, 0, 2374, 2378, 3, 549, 274, 0, 2375, 2378, 3, 547, 273, 0, 2376, 2378, 5, 95, 0, 0, 2377, 2374, 1, 0, 0, 0, 2377, 2375, 1, 0, 0, 0, 2377, 2376, 1, 0, 0, 0, 2378, 2381, 1, 0, 0, 0, 2379, 2377, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 536, 1, 0, 0, 0, 2381, 2379, 1, 0, 0, 0, 2382, 2386, 3, 547, 273, 0, 2383, 2387, 3, 549, 274, 0, 2384, 2387, 3, 547, 273, 0, 2385, 2387, 5, 95, 0, 0, 2386, 2383, 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2386, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2386, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 538, 1, 0, 0, 0, 2390, 2396, 5, 34, 0, 0, 2391, 2395, 8, 26, 0, 0, 2392, 2393, 5, 34, 0, 0, 2393, 2395, 5, 34, 0, 0, 2394, 2391, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2395, 2398, 1, 0, 0, 0, 2396, 2394, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2399, 1, 0, 0, 0, 2398, 2396, 1, 0, 0, 0, 2399, 2400, 5, 34, 0, 0, 2400, 540, 1, 0, 0, 0, 2401, 2407, 5, 96, 0, 0, 2402, 2406, 8, 27, 0, 0, 2403, 2404, 5, 96, 0, 0, 2404, 2406, 5, 96, 0, 0, 2405, 2402, 1, 0, 0, 0, 2405, 2403, 1, 0, 0, 0, 2406, 2409, 1, 0, 0, 0, 2407, 2405, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 1, 0, 0, 0, 2409, 2407, 1, 0, 0, 0, 2410, 2411, 5, 96, 0, 0, 2411, 542, 1, 0, 0, 0, 2412, 2413, 5, 59, 0, 0, 2413, 544, 1, 0, 0, 0, 2414, 2416, 7, 10, 0, 0, 2415, 2417, 7, 28, 0, 0, 2416, 2415, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2419, 1, 0, 0, 0, 2418, 2420, 3, 547, 273, 0, 2419, 2418, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 546, 1, 0, 0, 0, 2423, 2424, 7, 29, 0, 0, 2424, 548, 1, 0, 0, 0, 2425, 2426, 7, 30, 0, 0, 2426, 550, 1, 0, 0, 0, 2427, 2428, 5, 45, 0, 0, 2428, 2429, 5, 45, 0, 0, 2429, 2433, 1, 0, 0, 0, 2430, 2432, 8, 31, 0, 0, 2431, 2430, 1, 0, 0, 0, 2432, 2435, 1, 0, 0, 0, 2433, 2431, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2437, 1, 0, 0, 0, 2435, 2433, 1, 0, 0, 0, 2436, 2438, 5, 13, 0, 0, 2437, 2436, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2441, 5, 10, 0, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 6, 275, 0, 0, 2443, 552, 1, 0, 0, 0, 2444, 2445, 5, 47, 0, 0, 2445, 2446, 5, 42, 0, 0, 2446, 2450, 1, 0, 0, 0, 2447, 2449, 9, 0, 0, 0, 2448, 2447, 1, 0, 0, 0, 2449, 2452, 1, 0, 0, 0, 2450, 2451, 1, 0, 0, 0, 2450, 2448, 1, 0, 0, 0, 2451, 2453, 1, 0, 0, 0, 2452, 2450, 1, 0, 0, 0, 2453, 2454, 5, 42, 0, 0, 2454, 2455, 5, 47, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 6, 276, 0, 0, 2457, 554, 1, 0, 0, 0, 2458, 2460, 7, 32, 0, 0, 2459, 2458, 1, 0, 0, 0, 2460, 2461, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2461, 2462, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 6, 277, 0, 0, 2464, 556, 1, 0, 0, 0, 2465, 2466, 9, 0, 0, 0, 2466, 558, 1, 0, 0, 0, 33, 0, 2256, 2287, 2289, 2301, 2303, 2314, 2322, 2327, 2333, 2340, 2342, 2347, 2353, 2356, 2364, 2368, 2372, 2377, 2379, 2386, 2388, 2394, 2396, 2405, 2407, 2416, 2421, 2433, 2437, 2440, 2450, 2461, 1, 0, 1, 0] \ No newline at end of file +[4, 0, 339, 3117, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 2871, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 5, 325, 2904, 8, 325, 10, 325, 12, 325, 2907, 9, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 5, 326, 2918, 8, 326, 10, 326, 12, 326, 2921, 9, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 2929, 8, 327, 10, 327, 12, 327, 2932, 9, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 2940, 8, 328, 1, 329, 1, 329, 1, 329, 3, 329, 2945, 8, 329, 1, 329, 1, 329, 3, 329, 2949, 8, 329, 1, 330, 4, 330, 2952, 8, 330, 11, 330, 12, 330, 2953, 1, 330, 1, 330, 5, 330, 2958, 8, 330, 10, 330, 12, 330, 2961, 9, 330, 3, 330, 2963, 8, 330, 1, 330, 1, 330, 1, 330, 1, 330, 4, 330, 2969, 8, 330, 11, 330, 12, 330, 2970, 1, 330, 1, 330, 3, 330, 2975, 8, 330, 1, 331, 1, 331, 3, 331, 2979, 8, 331, 1, 331, 1, 331, 1, 331, 5, 331, 2984, 8, 331, 10, 331, 12, 331, 2987, 9, 331, 1, 332, 1, 332, 1, 332, 1, 332, 4, 332, 2993, 8, 332, 11, 332, 12, 332, 2994, 1, 333, 1, 333, 1, 333, 1, 333, 5, 333, 3001, 8, 333, 10, 333, 12, 333, 3004, 9, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 5, 334, 3012, 8, 334, 10, 334, 12, 334, 3015, 9, 334, 1, 334, 1, 334, 1, 335, 1, 335, 3, 335, 3021, 8, 335, 1, 335, 5, 335, 3024, 8, 335, 10, 335, 12, 335, 3027, 9, 335, 1, 336, 1, 336, 1, 336, 1, 336, 3, 336, 3033, 8, 336, 1, 336, 1, 336, 3, 336, 3037, 8, 336, 4, 336, 3039, 8, 336, 11, 336, 12, 336, 3040, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3047, 8, 337, 1, 337, 4, 337, 3050, 8, 337, 11, 337, 12, 337, 3051, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 3058, 8, 338, 1, 338, 4, 338, 3061, 8, 338, 11, 338, 12, 338, 3062, 1, 339, 1, 339, 3, 339, 3067, 8, 339, 1, 339, 4, 339, 3070, 8, 339, 11, 339, 12, 339, 3071, 1, 340, 1, 340, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 5, 342, 3082, 8, 342, 10, 342, 12, 342, 3085, 9, 342, 1, 342, 3, 342, 3088, 8, 342, 1, 342, 3, 342, 3091, 8, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 5, 343, 3099, 8, 343, 10, 343, 12, 343, 3102, 9, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 4, 344, 3110, 8, 344, 11, 344, 12, 344, 3111, 1, 344, 1, 344, 1, 345, 1, 345, 1, 3100, 0, 346, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 0, 673, 0, 675, 0, 677, 0, 679, 0, 681, 0, 683, 0, 685, 336, 687, 337, 689, 338, 691, 339, 1, 0, 37, 2, 0, 83, 83, 115, 115, 2, 0, 75, 75, 107, 107, 2, 0, 73, 73, 105, 105, 2, 0, 80, 80, 112, 112, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 84, 84, 116, 116, 2, 0, 68, 68, 100, 100, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 67, 67, 99, 99, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 79, 79, 111, 111, 2, 0, 71, 71, 103, 103, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 65, 70, 97, 102, 1, 0, 48, 55, 1, 0, 48, 49, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 3152, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 1, 693, 1, 0, 0, 0, 3, 695, 1, 0, 0, 0, 5, 697, 1, 0, 0, 0, 7, 699, 1, 0, 0, 0, 9, 701, 1, 0, 0, 0, 11, 706, 1, 0, 0, 0, 13, 709, 1, 0, 0, 0, 15, 712, 1, 0, 0, 0, 17, 714, 1, 0, 0, 0, 19, 716, 1, 0, 0, 0, 21, 718, 1, 0, 0, 0, 23, 720, 1, 0, 0, 0, 25, 722, 1, 0, 0, 0, 27, 724, 1, 0, 0, 0, 29, 727, 1, 0, 0, 0, 31, 730, 1, 0, 0, 0, 33, 732, 1, 0, 0, 0, 35, 734, 1, 0, 0, 0, 37, 741, 1, 0, 0, 0, 39, 745, 1, 0, 0, 0, 41, 751, 1, 0, 0, 0, 43, 757, 1, 0, 0, 0, 45, 761, 1, 0, 0, 0, 47, 767, 1, 0, 0, 0, 49, 775, 1, 0, 0, 0, 51, 779, 1, 0, 0, 0, 53, 783, 1, 0, 0, 0, 55, 789, 1, 0, 0, 0, 57, 792, 1, 0, 0, 0, 59, 796, 1, 0, 0, 0, 61, 799, 1, 0, 0, 0, 63, 813, 1, 0, 0, 0, 65, 819, 1, 0, 0, 0, 67, 829, 1, 0, 0, 0, 69, 837, 1, 0, 0, 0, 71, 842, 1, 0, 0, 0, 73, 845, 1, 0, 0, 0, 75, 850, 1, 0, 0, 0, 77, 857, 1, 0, 0, 0, 79, 865, 1, 0, 0, 0, 81, 870, 1, 0, 0, 0, 83, 875, 1, 0, 0, 0, 85, 883, 1, 0, 0, 0, 87, 892, 1, 0, 0, 0, 89, 899, 1, 0, 0, 0, 91, 907, 1, 0, 0, 0, 93, 915, 1, 0, 0, 0, 95, 922, 1, 0, 0, 0, 97, 932, 1, 0, 0, 0, 99, 944, 1, 0, 0, 0, 101, 955, 1, 0, 0, 0, 103, 961, 1, 0, 0, 0, 105, 973, 1, 0, 0, 0, 107, 980, 1, 0, 0, 0, 109, 986, 1, 0, 0, 0, 111, 991, 1, 0, 0, 0, 113, 999, 1, 0, 0, 0, 115, 1015, 1, 0, 0, 0, 117, 1028, 1, 0, 0, 0, 119, 1041, 1, 0, 0, 0, 121, 1054, 1, 0, 0, 0, 123, 1069, 1, 0, 0, 0, 125, 1082, 1, 0, 0, 0, 127, 1100, 1, 0, 0, 0, 129, 1113, 1, 0, 0, 0, 131, 1118, 1, 0, 0, 0, 133, 1123, 1, 0, 0, 0, 135, 1127, 1, 0, 0, 0, 137, 1138, 1, 0, 0, 0, 139, 1146, 1, 0, 0, 0, 141, 1154, 1, 0, 0, 0, 143, 1161, 1, 0, 0, 0, 145, 1169, 1, 0, 0, 0, 147, 1176, 1, 0, 0, 0, 149, 1181, 1, 0, 0, 0, 151, 1186, 1, 0, 0, 0, 153, 1195, 1, 0, 0, 0, 155, 1206, 1, 0, 0, 0, 157, 1220, 1, 0, 0, 0, 159, 1229, 1, 0, 0, 0, 161, 1241, 1, 0, 0, 0, 163, 1244, 1, 0, 0, 0, 165, 1251, 1, 0, 0, 0, 167, 1256, 1, 0, 0, 0, 169, 1261, 1, 0, 0, 0, 171, 1267, 1, 0, 0, 0, 173, 1274, 1, 0, 0, 0, 175, 1283, 1, 0, 0, 0, 177, 1287, 1, 0, 0, 0, 179, 1293, 1, 0, 0, 0, 181, 1300, 1, 0, 0, 0, 183, 1307, 1, 0, 0, 0, 185, 1317, 1, 0, 0, 0, 187, 1325, 1, 0, 0, 0, 189, 1332, 1, 0, 0, 0, 191, 1340, 1, 0, 0, 0, 193, 1348, 1, 0, 0, 0, 195, 1354, 1, 0, 0, 0, 197, 1360, 1, 0, 0, 0, 199, 1367, 1, 0, 0, 0, 201, 1373, 1, 0, 0, 0, 203, 1379, 1, 0, 0, 0, 205, 1389, 1, 0, 0, 0, 207, 1393, 1, 0, 0, 0, 209, 1400, 1, 0, 0, 0, 211, 1405, 1, 0, 0, 0, 213, 1410, 1, 0, 0, 0, 215, 1419, 1, 0, 0, 0, 217, 1429, 1, 0, 0, 0, 219, 1435, 1, 0, 0, 0, 221, 1441, 1, 0, 0, 0, 223, 1449, 1, 0, 0, 0, 225, 1456, 1, 0, 0, 0, 227, 1465, 1, 0, 0, 0, 229, 1471, 1, 0, 0, 0, 231, 1480, 1, 0, 0, 0, 233, 1487, 1, 0, 0, 0, 235, 1494, 1, 0, 0, 0, 237, 1499, 1, 0, 0, 0, 239, 1502, 1, 0, 0, 0, 241, 1509, 1, 0, 0, 0, 243, 1519, 1, 0, 0, 0, 245, 1522, 1, 0, 0, 0, 247, 1532, 1, 0, 0, 0, 249, 1540, 1, 0, 0, 0, 251, 1546, 1, 0, 0, 0, 253, 1552, 1, 0, 0, 0, 255, 1559, 1, 0, 0, 0, 257, 1569, 1, 0, 0, 0, 259, 1578, 1, 0, 0, 0, 261, 1583, 1, 0, 0, 0, 263, 1591, 1, 0, 0, 0, 265, 1594, 1, 0, 0, 0, 267, 1597, 1, 0, 0, 0, 269, 1607, 1, 0, 0, 0, 271, 1615, 1, 0, 0, 0, 273, 1620, 1, 0, 0, 0, 275, 1625, 1, 0, 0, 0, 277, 1636, 1, 0, 0, 0, 279, 1648, 1, 0, 0, 0, 281, 1660, 1, 0, 0, 0, 283, 1671, 1, 0, 0, 0, 285, 1682, 1, 0, 0, 0, 287, 1693, 1, 0, 0, 0, 289, 1698, 1, 0, 0, 0, 291, 1702, 1, 0, 0, 0, 293, 1707, 1, 0, 0, 0, 295, 1716, 1, 0, 0, 0, 297, 1721, 1, 0, 0, 0, 299, 1729, 1, 0, 0, 0, 301, 1737, 1, 0, 0, 0, 303, 1743, 1, 0, 0, 0, 305, 1748, 1, 0, 0, 0, 307, 1754, 1, 0, 0, 0, 309, 1759, 1, 0, 0, 0, 311, 1765, 1, 0, 0, 0, 313, 1773, 1, 0, 0, 0, 315, 1779, 1, 0, 0, 0, 317, 1789, 1, 0, 0, 0, 319, 1804, 1, 0, 0, 0, 321, 1812, 1, 0, 0, 0, 323, 1817, 1, 0, 0, 0, 325, 1821, 1, 0, 0, 0, 327, 1827, 1, 0, 0, 0, 329, 1835, 1, 0, 0, 0, 331, 1843, 1, 0, 0, 0, 333, 1859, 1, 0, 0, 0, 335, 1872, 1, 0, 0, 0, 337, 1881, 1, 0, 0, 0, 339, 1887, 1, 0, 0, 0, 341, 1894, 1, 0, 0, 0, 343, 1900, 1, 0, 0, 0, 345, 1908, 1, 0, 0, 0, 347, 1915, 1, 0, 0, 0, 349, 1920, 1, 0, 0, 0, 351, 1924, 1, 0, 0, 0, 353, 1928, 1, 0, 0, 0, 355, 1933, 1, 0, 0, 0, 357, 1938, 1, 0, 0, 0, 359, 1941, 1, 0, 0, 0, 361, 1946, 1, 0, 0, 0, 363, 1956, 1, 0, 0, 0, 365, 1960, 1, 0, 0, 0, 367, 1965, 1, 0, 0, 0, 369, 1972, 1, 0, 0, 0, 371, 1978, 1, 0, 0, 0, 373, 1985, 1, 0, 0, 0, 375, 1988, 1, 0, 0, 0, 377, 1995, 1, 0, 0, 0, 379, 2000, 1, 0, 0, 0, 381, 2003, 1, 0, 0, 0, 383, 2007, 1, 0, 0, 0, 385, 2012, 1, 0, 0, 0, 387, 2019, 1, 0, 0, 0, 389, 2022, 1, 0, 0, 0, 391, 2028, 1, 0, 0, 0, 393, 2039, 1, 0, 0, 0, 395, 2045, 1, 0, 0, 0, 397, 2052, 1, 0, 0, 0, 399, 2057, 1, 0, 0, 0, 401, 2066, 1, 0, 0, 0, 403, 2076, 1, 0, 0, 0, 405, 2087, 1, 0, 0, 0, 407, 2095, 1, 0, 0, 0, 409, 2100, 1, 0, 0, 0, 411, 2105, 1, 0, 0, 0, 413, 2113, 1, 0, 0, 0, 415, 2117, 1, 0, 0, 0, 417, 2124, 1, 0, 0, 0, 419, 2132, 1, 0, 0, 0, 421, 2137, 1, 0, 0, 0, 423, 2146, 1, 0, 0, 0, 425, 2156, 1, 0, 0, 0, 427, 2166, 1, 0, 0, 0, 429, 2174, 1, 0, 0, 0, 431, 2185, 1, 0, 0, 0, 433, 2196, 1, 0, 0, 0, 435, 2202, 1, 0, 0, 0, 437, 2209, 1, 0, 0, 0, 439, 2215, 1, 0, 0, 0, 441, 2220, 1, 0, 0, 0, 443, 2230, 1, 0, 0, 0, 445, 2238, 1, 0, 0, 0, 447, 2245, 1, 0, 0, 0, 449, 2252, 1, 0, 0, 0, 451, 2263, 1, 0, 0, 0, 453, 2271, 1, 0, 0, 0, 455, 2277, 1, 0, 0, 0, 457, 2285, 1, 0, 0, 0, 459, 2294, 1, 0, 0, 0, 461, 2301, 1, 0, 0, 0, 463, 2311, 1, 0, 0, 0, 465, 2319, 1, 0, 0, 0, 467, 2326, 1, 0, 0, 0, 469, 2332, 1, 0, 0, 0, 471, 2337, 1, 0, 0, 0, 473, 2343, 1, 0, 0, 0, 475, 2352, 1, 0, 0, 0, 477, 2359, 1, 0, 0, 0, 479, 2363, 1, 0, 0, 0, 481, 2368, 1, 0, 0, 0, 483, 2376, 1, 0, 0, 0, 485, 2383, 1, 0, 0, 0, 487, 2390, 1, 0, 0, 0, 489, 2398, 1, 0, 0, 0, 491, 2405, 1, 0, 0, 0, 493, 2414, 1, 0, 0, 0, 495, 2419, 1, 0, 0, 0, 497, 2426, 1, 0, 0, 0, 499, 2439, 1, 0, 0, 0, 501, 2447, 1, 0, 0, 0, 503, 2451, 1, 0, 0, 0, 505, 2456, 1, 0, 0, 0, 507, 2461, 1, 0, 0, 0, 509, 2466, 1, 0, 0, 0, 511, 2472, 1, 0, 0, 0, 513, 2478, 1, 0, 0, 0, 515, 2485, 1, 0, 0, 0, 517, 2495, 1, 0, 0, 0, 519, 2502, 1, 0, 0, 0, 521, 2508, 1, 0, 0, 0, 523, 2515, 1, 0, 0, 0, 525, 2527, 1, 0, 0, 0, 527, 2532, 1, 0, 0, 0, 529, 2539, 1, 0, 0, 0, 531, 2544, 1, 0, 0, 0, 533, 2549, 1, 0, 0, 0, 535, 2554, 1, 0, 0, 0, 537, 2564, 1, 0, 0, 0, 539, 2567, 1, 0, 0, 0, 541, 2576, 1, 0, 0, 0, 543, 2588, 1, 0, 0, 0, 545, 2593, 1, 0, 0, 0, 547, 2598, 1, 0, 0, 0, 549, 2607, 1, 0, 0, 0, 551, 2616, 1, 0, 0, 0, 553, 2621, 1, 0, 0, 0, 555, 2629, 1, 0, 0, 0, 557, 2639, 1, 0, 0, 0, 559, 2651, 1, 0, 0, 0, 561, 2665, 1, 0, 0, 0, 563, 2671, 1, 0, 0, 0, 565, 2678, 1, 0, 0, 0, 567, 2686, 1, 0, 0, 0, 569, 2696, 1, 0, 0, 0, 571, 2703, 1, 0, 0, 0, 573, 2709, 1, 0, 0, 0, 575, 2716, 1, 0, 0, 0, 577, 2720, 1, 0, 0, 0, 579, 2725, 1, 0, 0, 0, 581, 2731, 1, 0, 0, 0, 583, 2737, 1, 0, 0, 0, 585, 2743, 1, 0, 0, 0, 587, 2748, 1, 0, 0, 0, 589, 2757, 1, 0, 0, 0, 591, 2763, 1, 0, 0, 0, 593, 2770, 1, 0, 0, 0, 595, 2778, 1, 0, 0, 0, 597, 2786, 1, 0, 0, 0, 599, 2791, 1, 0, 0, 0, 601, 2796, 1, 0, 0, 0, 603, 2802, 1, 0, 0, 0, 605, 2808, 1, 0, 0, 0, 607, 2815, 1, 0, 0, 0, 609, 2820, 1, 0, 0, 0, 611, 2827, 1, 0, 0, 0, 613, 2835, 1, 0, 0, 0, 615, 2840, 1, 0, 0, 0, 617, 2848, 1, 0, 0, 0, 619, 2854, 1, 0, 0, 0, 621, 2859, 1, 0, 0, 0, 623, 2864, 1, 0, 0, 0, 625, 2870, 1, 0, 0, 0, 627, 2872, 1, 0, 0, 0, 629, 2874, 1, 0, 0, 0, 631, 2877, 1, 0, 0, 0, 633, 2879, 1, 0, 0, 0, 635, 2882, 1, 0, 0, 0, 637, 2884, 1, 0, 0, 0, 639, 2886, 1, 0, 0, 0, 641, 2888, 1, 0, 0, 0, 643, 2890, 1, 0, 0, 0, 645, 2892, 1, 0, 0, 0, 647, 2895, 1, 0, 0, 0, 649, 2897, 1, 0, 0, 0, 651, 2899, 1, 0, 0, 0, 653, 2910, 1, 0, 0, 0, 655, 2924, 1, 0, 0, 0, 657, 2939, 1, 0, 0, 0, 659, 2948, 1, 0, 0, 0, 661, 2974, 1, 0, 0, 0, 663, 2978, 1, 0, 0, 0, 665, 2988, 1, 0, 0, 0, 667, 2996, 1, 0, 0, 0, 669, 3007, 1, 0, 0, 0, 671, 3018, 1, 0, 0, 0, 673, 3028, 1, 0, 0, 0, 675, 3042, 1, 0, 0, 0, 677, 3053, 1, 0, 0, 0, 679, 3064, 1, 0, 0, 0, 681, 3073, 1, 0, 0, 0, 683, 3075, 1, 0, 0, 0, 685, 3077, 1, 0, 0, 0, 687, 3094, 1, 0, 0, 0, 689, 3109, 1, 0, 0, 0, 691, 3115, 1, 0, 0, 0, 693, 694, 5, 40, 0, 0, 694, 2, 1, 0, 0, 0, 695, 696, 5, 41, 0, 0, 696, 4, 1, 0, 0, 0, 697, 698, 5, 44, 0, 0, 698, 6, 1, 0, 0, 0, 699, 700, 5, 46, 0, 0, 700, 8, 1, 0, 0, 0, 701, 702, 7, 0, 0, 0, 702, 703, 7, 1, 0, 0, 703, 704, 7, 2, 0, 0, 704, 705, 7, 3, 0, 0, 705, 10, 1, 0, 0, 0, 706, 707, 5, 61, 0, 0, 707, 708, 5, 62, 0, 0, 708, 12, 1, 0, 0, 0, 709, 710, 5, 45, 0, 0, 710, 711, 5, 62, 0, 0, 711, 14, 1, 0, 0, 0, 712, 713, 5, 91, 0, 0, 713, 16, 1, 0, 0, 0, 714, 715, 5, 93, 0, 0, 715, 18, 1, 0, 0, 0, 716, 717, 5, 58, 0, 0, 717, 20, 1, 0, 0, 0, 718, 719, 5, 124, 0, 0, 719, 22, 1, 0, 0, 0, 720, 721, 5, 94, 0, 0, 721, 24, 1, 0, 0, 0, 722, 723, 5, 36, 0, 0, 723, 26, 1, 0, 0, 0, 724, 725, 5, 123, 0, 0, 725, 726, 5, 45, 0, 0, 726, 28, 1, 0, 0, 0, 727, 728, 5, 45, 0, 0, 728, 729, 5, 125, 0, 0, 729, 30, 1, 0, 0, 0, 730, 731, 5, 123, 0, 0, 731, 32, 1, 0, 0, 0, 732, 733, 5, 125, 0, 0, 733, 34, 1, 0, 0, 0, 734, 735, 7, 4, 0, 0, 735, 736, 7, 5, 0, 0, 736, 737, 7, 0, 0, 0, 737, 738, 7, 6, 0, 0, 738, 739, 7, 7, 0, 0, 739, 740, 7, 8, 0, 0, 740, 36, 1, 0, 0, 0, 741, 742, 7, 4, 0, 0, 742, 743, 7, 9, 0, 0, 743, 744, 7, 9, 0, 0, 744, 38, 1, 0, 0, 0, 745, 746, 7, 4, 0, 0, 746, 747, 7, 9, 0, 0, 747, 748, 7, 10, 0, 0, 748, 749, 7, 2, 0, 0, 749, 750, 7, 7, 0, 0, 750, 40, 1, 0, 0, 0, 751, 752, 7, 4, 0, 0, 752, 753, 7, 11, 0, 0, 753, 754, 7, 8, 0, 0, 754, 755, 7, 6, 0, 0, 755, 756, 7, 12, 0, 0, 756, 42, 1, 0, 0, 0, 757, 758, 7, 4, 0, 0, 758, 759, 7, 13, 0, 0, 759, 760, 7, 13, 0, 0, 760, 44, 1, 0, 0, 0, 761, 762, 7, 4, 0, 0, 762, 763, 7, 13, 0, 0, 763, 764, 7, 8, 0, 0, 764, 765, 7, 6, 0, 0, 765, 766, 7, 12, 0, 0, 766, 46, 1, 0, 0, 0, 767, 768, 7, 4, 0, 0, 768, 769, 7, 7, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 13, 0, 0, 771, 772, 7, 14, 0, 0, 772, 773, 7, 15, 0, 0, 773, 774, 7, 6, 0, 0, 774, 48, 1, 0, 0, 0, 775, 776, 7, 4, 0, 0, 776, 777, 7, 7, 0, 0, 777, 778, 7, 9, 0, 0, 778, 50, 1, 0, 0, 0, 779, 780, 7, 4, 0, 0, 780, 781, 7, 7, 0, 0, 781, 782, 7, 14, 0, 0, 782, 52, 1, 0, 0, 0, 783, 784, 7, 4, 0, 0, 784, 785, 7, 12, 0, 0, 785, 786, 7, 12, 0, 0, 786, 787, 7, 4, 0, 0, 787, 788, 7, 14, 0, 0, 788, 54, 1, 0, 0, 0, 789, 790, 7, 4, 0, 0, 790, 791, 7, 0, 0, 0, 791, 56, 1, 0, 0, 0, 792, 793, 7, 4, 0, 0, 793, 794, 7, 0, 0, 0, 794, 795, 7, 16, 0, 0, 795, 58, 1, 0, 0, 0, 796, 797, 7, 4, 0, 0, 797, 798, 7, 8, 0, 0, 798, 60, 1, 0, 0, 0, 799, 800, 7, 4, 0, 0, 800, 801, 7, 17, 0, 0, 801, 802, 7, 8, 0, 0, 802, 803, 7, 18, 0, 0, 803, 804, 7, 19, 0, 0, 804, 805, 7, 12, 0, 0, 805, 806, 7, 2, 0, 0, 806, 807, 7, 15, 0, 0, 807, 808, 7, 4, 0, 0, 808, 809, 7, 8, 0, 0, 809, 810, 7, 2, 0, 0, 810, 811, 7, 19, 0, 0, 811, 812, 7, 7, 0, 0, 812, 62, 1, 0, 0, 0, 813, 814, 7, 5, 0, 0, 814, 815, 7, 6, 0, 0, 815, 816, 7, 20, 0, 0, 816, 817, 7, 2, 0, 0, 817, 818, 7, 7, 0, 0, 818, 64, 1, 0, 0, 0, 819, 820, 7, 5, 0, 0, 820, 821, 7, 6, 0, 0, 821, 822, 7, 12, 0, 0, 822, 823, 7, 7, 0, 0, 823, 824, 7, 19, 0, 0, 824, 825, 7, 17, 0, 0, 825, 826, 7, 13, 0, 0, 826, 827, 7, 13, 0, 0, 827, 828, 7, 2, 0, 0, 828, 66, 1, 0, 0, 0, 829, 830, 7, 5, 0, 0, 830, 831, 7, 6, 0, 0, 831, 832, 7, 8, 0, 0, 832, 833, 7, 21, 0, 0, 833, 834, 7, 6, 0, 0, 834, 835, 7, 6, 0, 0, 835, 836, 7, 7, 0, 0, 836, 68, 1, 0, 0, 0, 837, 838, 7, 5, 0, 0, 838, 839, 7, 19, 0, 0, 839, 840, 7, 8, 0, 0, 840, 841, 7, 18, 0, 0, 841, 70, 1, 0, 0, 0, 842, 843, 7, 5, 0, 0, 843, 844, 7, 14, 0, 0, 844, 72, 1, 0, 0, 0, 845, 846, 7, 16, 0, 0, 846, 847, 7, 4, 0, 0, 847, 848, 7, 13, 0, 0, 848, 849, 7, 13, 0, 0, 849, 74, 1, 0, 0, 0, 850, 851, 7, 16, 0, 0, 851, 852, 7, 4, 0, 0, 852, 853, 7, 13, 0, 0, 853, 854, 7, 13, 0, 0, 854, 855, 7, 6, 0, 0, 855, 856, 7, 9, 0, 0, 856, 76, 1, 0, 0, 0, 857, 858, 7, 16, 0, 0, 858, 859, 7, 4, 0, 0, 859, 860, 7, 0, 0, 0, 860, 861, 7, 16, 0, 0, 861, 862, 7, 4, 0, 0, 862, 863, 7, 9, 0, 0, 863, 864, 7, 6, 0, 0, 864, 78, 1, 0, 0, 0, 865, 866, 7, 16, 0, 0, 866, 867, 7, 4, 0, 0, 867, 868, 7, 0, 0, 0, 868, 869, 7, 6, 0, 0, 869, 80, 1, 0, 0, 0, 870, 871, 7, 16, 0, 0, 871, 872, 7, 4, 0, 0, 872, 873, 7, 0, 0, 0, 873, 874, 7, 8, 0, 0, 874, 82, 1, 0, 0, 0, 875, 876, 7, 16, 0, 0, 876, 877, 7, 4, 0, 0, 877, 878, 7, 8, 0, 0, 878, 879, 7, 4, 0, 0, 879, 880, 7, 13, 0, 0, 880, 881, 7, 19, 0, 0, 881, 882, 7, 20, 0, 0, 882, 84, 1, 0, 0, 0, 883, 884, 7, 16, 0, 0, 884, 885, 7, 4, 0, 0, 885, 886, 7, 8, 0, 0, 886, 887, 7, 4, 0, 0, 887, 888, 7, 13, 0, 0, 888, 889, 7, 19, 0, 0, 889, 890, 7, 20, 0, 0, 890, 891, 7, 0, 0, 0, 891, 86, 1, 0, 0, 0, 892, 893, 7, 16, 0, 0, 893, 894, 7, 19, 0, 0, 894, 895, 7, 13, 0, 0, 895, 896, 7, 17, 0, 0, 896, 897, 7, 10, 0, 0, 897, 898, 7, 7, 0, 0, 898, 88, 1, 0, 0, 0, 899, 900, 7, 16, 0, 0, 900, 901, 7, 19, 0, 0, 901, 902, 7, 13, 0, 0, 902, 903, 7, 17, 0, 0, 903, 904, 7, 10, 0, 0, 904, 905, 7, 7, 0, 0, 905, 906, 7, 0, 0, 0, 906, 90, 1, 0, 0, 0, 907, 908, 7, 16, 0, 0, 908, 909, 7, 19, 0, 0, 909, 910, 7, 10, 0, 0, 910, 911, 7, 10, 0, 0, 911, 912, 7, 6, 0, 0, 912, 913, 7, 7, 0, 0, 913, 914, 7, 8, 0, 0, 914, 92, 1, 0, 0, 0, 915, 916, 7, 16, 0, 0, 916, 917, 7, 19, 0, 0, 917, 918, 7, 10, 0, 0, 918, 919, 7, 10, 0, 0, 919, 920, 7, 2, 0, 0, 920, 921, 7, 8, 0, 0, 921, 94, 1, 0, 0, 0, 922, 923, 7, 16, 0, 0, 923, 924, 7, 19, 0, 0, 924, 925, 7, 10, 0, 0, 925, 926, 7, 10, 0, 0, 926, 927, 7, 2, 0, 0, 927, 928, 7, 8, 0, 0, 928, 929, 7, 8, 0, 0, 929, 930, 7, 6, 0, 0, 930, 931, 7, 9, 0, 0, 931, 96, 1, 0, 0, 0, 932, 933, 7, 16, 0, 0, 933, 934, 7, 19, 0, 0, 934, 935, 7, 7, 0, 0, 935, 936, 7, 9, 0, 0, 936, 937, 7, 2, 0, 0, 937, 938, 7, 8, 0, 0, 938, 939, 7, 2, 0, 0, 939, 940, 7, 19, 0, 0, 940, 941, 7, 7, 0, 0, 941, 942, 7, 4, 0, 0, 942, 943, 7, 13, 0, 0, 943, 98, 1, 0, 0, 0, 944, 945, 7, 16, 0, 0, 945, 946, 7, 19, 0, 0, 946, 947, 7, 7, 0, 0, 947, 948, 7, 0, 0, 0, 948, 949, 7, 8, 0, 0, 949, 950, 7, 12, 0, 0, 950, 951, 7, 4, 0, 0, 951, 952, 7, 2, 0, 0, 952, 953, 7, 7, 0, 0, 953, 954, 7, 8, 0, 0, 954, 100, 1, 0, 0, 0, 955, 956, 7, 16, 0, 0, 956, 957, 7, 19, 0, 0, 957, 958, 7, 17, 0, 0, 958, 959, 7, 7, 0, 0, 959, 960, 7, 8, 0, 0, 960, 102, 1, 0, 0, 0, 961, 962, 7, 16, 0, 0, 962, 963, 7, 19, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 4, 0, 0, 965, 966, 7, 12, 0, 0, 966, 967, 7, 8, 0, 0, 967, 968, 7, 2, 0, 0, 968, 969, 7, 8, 0, 0, 969, 970, 7, 2, 0, 0, 970, 971, 7, 19, 0, 0, 971, 972, 7, 7, 0, 0, 972, 104, 1, 0, 0, 0, 973, 974, 7, 16, 0, 0, 974, 975, 7, 12, 0, 0, 975, 976, 7, 6, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 8, 0, 0, 978, 979, 7, 6, 0, 0, 979, 106, 1, 0, 0, 0, 980, 981, 7, 16, 0, 0, 981, 982, 7, 12, 0, 0, 982, 983, 7, 19, 0, 0, 983, 984, 7, 0, 0, 0, 984, 985, 7, 0, 0, 0, 985, 108, 1, 0, 0, 0, 986, 987, 7, 16, 0, 0, 987, 988, 7, 17, 0, 0, 988, 989, 7, 5, 0, 0, 989, 990, 7, 6, 0, 0, 990, 110, 1, 0, 0, 0, 991, 992, 7, 16, 0, 0, 992, 993, 7, 17, 0, 0, 993, 994, 7, 12, 0, 0, 994, 995, 7, 12, 0, 0, 995, 996, 7, 6, 0, 0, 996, 997, 7, 7, 0, 0, 997, 998, 7, 8, 0, 0, 998, 112, 1, 0, 0, 0, 999, 1000, 7, 16, 0, 0, 1000, 1001, 7, 17, 0, 0, 1001, 1002, 7, 12, 0, 0, 1002, 1003, 7, 12, 0, 0, 1003, 1004, 7, 6, 0, 0, 1004, 1005, 7, 7, 0, 0, 1005, 1006, 7, 8, 0, 0, 1006, 1007, 5, 95, 0, 0, 1007, 1008, 7, 16, 0, 0, 1008, 1009, 7, 4, 0, 0, 1009, 1010, 7, 8, 0, 0, 1010, 1011, 7, 4, 0, 0, 1011, 1012, 7, 13, 0, 0, 1012, 1013, 7, 19, 0, 0, 1013, 1014, 7, 20, 0, 0, 1014, 114, 1, 0, 0, 0, 1015, 1016, 7, 16, 0, 0, 1016, 1017, 7, 17, 0, 0, 1017, 1018, 7, 12, 0, 0, 1018, 1019, 7, 12, 0, 0, 1019, 1020, 7, 6, 0, 0, 1020, 1021, 7, 7, 0, 0, 1021, 1022, 7, 8, 0, 0, 1022, 1023, 5, 95, 0, 0, 1023, 1024, 7, 9, 0, 0, 1024, 1025, 7, 4, 0, 0, 1025, 1026, 7, 8, 0, 0, 1026, 1027, 7, 6, 0, 0, 1027, 116, 1, 0, 0, 0, 1028, 1029, 7, 16, 0, 0, 1029, 1030, 7, 17, 0, 0, 1030, 1031, 7, 12, 0, 0, 1031, 1032, 7, 12, 0, 0, 1032, 1033, 7, 6, 0, 0, 1033, 1034, 7, 7, 0, 0, 1034, 1035, 7, 8, 0, 0, 1035, 1036, 5, 95, 0, 0, 1036, 1037, 7, 3, 0, 0, 1037, 1038, 7, 4, 0, 0, 1038, 1039, 7, 8, 0, 0, 1039, 1040, 7, 18, 0, 0, 1040, 118, 1, 0, 0, 0, 1041, 1042, 7, 16, 0, 0, 1042, 1043, 7, 17, 0, 0, 1043, 1044, 7, 12, 0, 0, 1044, 1045, 7, 12, 0, 0, 1045, 1046, 7, 6, 0, 0, 1046, 1047, 7, 7, 0, 0, 1047, 1048, 7, 8, 0, 0, 1048, 1049, 5, 95, 0, 0, 1049, 1050, 7, 12, 0, 0, 1050, 1051, 7, 19, 0, 0, 1051, 1052, 7, 13, 0, 0, 1052, 1053, 7, 6, 0, 0, 1053, 120, 1, 0, 0, 0, 1054, 1055, 7, 16, 0, 0, 1055, 1056, 7, 17, 0, 0, 1056, 1057, 7, 12, 0, 0, 1057, 1058, 7, 12, 0, 0, 1058, 1059, 7, 6, 0, 0, 1059, 1060, 7, 7, 0, 0, 1060, 1061, 7, 8, 0, 0, 1061, 1062, 5, 95, 0, 0, 1062, 1063, 7, 0, 0, 0, 1063, 1064, 7, 16, 0, 0, 1064, 1065, 7, 18, 0, 0, 1065, 1066, 7, 6, 0, 0, 1066, 1067, 7, 10, 0, 0, 1067, 1068, 7, 4, 0, 0, 1068, 122, 1, 0, 0, 0, 1069, 1070, 7, 16, 0, 0, 1070, 1071, 7, 17, 0, 0, 1071, 1072, 7, 12, 0, 0, 1072, 1073, 7, 12, 0, 0, 1073, 1074, 7, 6, 0, 0, 1074, 1075, 7, 7, 0, 0, 1075, 1076, 7, 8, 0, 0, 1076, 1077, 5, 95, 0, 0, 1077, 1078, 7, 8, 0, 0, 1078, 1079, 7, 2, 0, 0, 1079, 1080, 7, 10, 0, 0, 1080, 1081, 7, 6, 0, 0, 1081, 124, 1, 0, 0, 0, 1082, 1083, 7, 16, 0, 0, 1083, 1084, 7, 17, 0, 0, 1084, 1085, 7, 12, 0, 0, 1085, 1086, 7, 12, 0, 0, 1086, 1087, 7, 6, 0, 0, 1087, 1088, 7, 7, 0, 0, 1088, 1089, 7, 8, 0, 0, 1089, 1090, 5, 95, 0, 0, 1090, 1091, 7, 8, 0, 0, 1091, 1092, 7, 2, 0, 0, 1092, 1093, 7, 10, 0, 0, 1093, 1094, 7, 6, 0, 0, 1094, 1095, 7, 0, 0, 0, 1095, 1096, 7, 8, 0, 0, 1096, 1097, 7, 4, 0, 0, 1097, 1098, 7, 10, 0, 0, 1098, 1099, 7, 3, 0, 0, 1099, 126, 1, 0, 0, 0, 1100, 1101, 7, 16, 0, 0, 1101, 1102, 7, 17, 0, 0, 1102, 1103, 7, 12, 0, 0, 1103, 1104, 7, 12, 0, 0, 1104, 1105, 7, 6, 0, 0, 1105, 1106, 7, 7, 0, 0, 1106, 1107, 7, 8, 0, 0, 1107, 1108, 5, 95, 0, 0, 1108, 1109, 7, 17, 0, 0, 1109, 1110, 7, 0, 0, 0, 1110, 1111, 7, 6, 0, 0, 1111, 1112, 7, 12, 0, 0, 1112, 128, 1, 0, 0, 0, 1113, 1114, 7, 9, 0, 0, 1114, 1115, 7, 4, 0, 0, 1115, 1116, 7, 8, 0, 0, 1116, 1117, 7, 4, 0, 0, 1117, 130, 1, 0, 0, 0, 1118, 1119, 7, 9, 0, 0, 1119, 1120, 7, 4, 0, 0, 1120, 1121, 7, 8, 0, 0, 1121, 1122, 7, 6, 0, 0, 1122, 132, 1, 0, 0, 0, 1123, 1124, 7, 9, 0, 0, 1124, 1125, 7, 4, 0, 0, 1125, 1126, 7, 14, 0, 0, 1126, 134, 1, 0, 0, 0, 1127, 1128, 7, 9, 0, 0, 1128, 1129, 7, 6, 0, 0, 1129, 1130, 7, 4, 0, 0, 1130, 1131, 7, 13, 0, 0, 1131, 1132, 7, 13, 0, 0, 1132, 1133, 7, 19, 0, 0, 1133, 1134, 7, 16, 0, 0, 1134, 1135, 7, 4, 0, 0, 1135, 1136, 7, 8, 0, 0, 1136, 1137, 7, 6, 0, 0, 1137, 136, 1, 0, 0, 0, 1138, 1139, 7, 9, 0, 0, 1139, 1140, 7, 6, 0, 0, 1140, 1141, 7, 16, 0, 0, 1141, 1142, 7, 13, 0, 0, 1142, 1143, 7, 4, 0, 0, 1143, 1144, 7, 12, 0, 0, 1144, 1145, 7, 6, 0, 0, 1145, 138, 1, 0, 0, 0, 1146, 1147, 7, 9, 0, 0, 1147, 1148, 7, 6, 0, 0, 1148, 1149, 7, 11, 0, 0, 1149, 1150, 7, 4, 0, 0, 1150, 1151, 7, 17, 0, 0, 1151, 1152, 7, 13, 0, 0, 1152, 1153, 7, 8, 0, 0, 1153, 140, 1, 0, 0, 0, 1154, 1155, 7, 9, 0, 0, 1155, 1156, 7, 6, 0, 0, 1156, 1157, 7, 11, 0, 0, 1157, 1158, 7, 2, 0, 0, 1158, 1159, 7, 7, 0, 0, 1159, 1160, 7, 6, 0, 0, 1160, 142, 1, 0, 0, 0, 1161, 1162, 7, 9, 0, 0, 1162, 1163, 7, 6, 0, 0, 1163, 1164, 7, 11, 0, 0, 1164, 1165, 7, 2, 0, 0, 1165, 1166, 7, 7, 0, 0, 1166, 1167, 7, 6, 0, 0, 1167, 1168, 7, 12, 0, 0, 1168, 144, 1, 0, 0, 0, 1169, 1170, 7, 9, 0, 0, 1170, 1171, 7, 6, 0, 0, 1171, 1172, 7, 13, 0, 0, 1172, 1173, 7, 6, 0, 0, 1173, 1174, 7, 8, 0, 0, 1174, 1175, 7, 6, 0, 0, 1175, 146, 1, 0, 0, 0, 1176, 1177, 7, 9, 0, 0, 1177, 1178, 7, 6, 0, 0, 1178, 1179, 7, 7, 0, 0, 1179, 1180, 7, 14, 0, 0, 1180, 148, 1, 0, 0, 0, 1181, 1182, 7, 9, 0, 0, 1182, 1183, 7, 6, 0, 0, 1183, 1184, 7, 0, 0, 0, 1184, 1185, 7, 16, 0, 0, 1185, 150, 1, 0, 0, 0, 1186, 1187, 7, 9, 0, 0, 1187, 1188, 7, 6, 0, 0, 1188, 1189, 7, 0, 0, 0, 1189, 1190, 7, 16, 0, 0, 1190, 1191, 7, 12, 0, 0, 1191, 1192, 7, 2, 0, 0, 1192, 1193, 7, 5, 0, 0, 1193, 1194, 7, 6, 0, 0, 1194, 152, 1, 0, 0, 0, 1195, 1196, 7, 9, 0, 0, 1196, 1197, 7, 6, 0, 0, 1197, 1198, 7, 0, 0, 0, 1198, 1199, 7, 16, 0, 0, 1199, 1200, 7, 12, 0, 0, 1200, 1201, 7, 2, 0, 0, 1201, 1202, 7, 3, 0, 0, 1202, 1203, 7, 8, 0, 0, 1203, 1204, 7, 19, 0, 0, 1204, 1205, 7, 12, 0, 0, 1205, 154, 1, 0, 0, 0, 1206, 1207, 7, 9, 0, 0, 1207, 1208, 7, 6, 0, 0, 1208, 1209, 7, 8, 0, 0, 1209, 1210, 7, 6, 0, 0, 1210, 1211, 7, 12, 0, 0, 1211, 1212, 7, 10, 0, 0, 1212, 1213, 7, 2, 0, 0, 1213, 1214, 7, 7, 0, 0, 1214, 1215, 7, 2, 0, 0, 1215, 1216, 7, 0, 0, 0, 1216, 1217, 7, 8, 0, 0, 1217, 1218, 7, 2, 0, 0, 1218, 1219, 7, 16, 0, 0, 1219, 156, 1, 0, 0, 0, 1220, 1221, 7, 9, 0, 0, 1221, 1222, 7, 2, 0, 0, 1222, 1223, 7, 0, 0, 0, 1223, 1224, 7, 8, 0, 0, 1224, 1225, 7, 2, 0, 0, 1225, 1226, 7, 7, 0, 0, 1226, 1227, 7, 16, 0, 0, 1227, 1228, 7, 8, 0, 0, 1228, 158, 1, 0, 0, 0, 1229, 1230, 7, 9, 0, 0, 1230, 1231, 7, 2, 0, 0, 1231, 1232, 7, 0, 0, 0, 1232, 1233, 7, 8, 0, 0, 1233, 1234, 7, 12, 0, 0, 1234, 1235, 7, 2, 0, 0, 1235, 1236, 7, 5, 0, 0, 1236, 1237, 7, 17, 0, 0, 1237, 1238, 7, 8, 0, 0, 1238, 1239, 7, 6, 0, 0, 1239, 1240, 7, 9, 0, 0, 1240, 160, 1, 0, 0, 0, 1241, 1242, 7, 9, 0, 0, 1242, 1243, 7, 19, 0, 0, 1243, 162, 1, 0, 0, 0, 1244, 1245, 7, 9, 0, 0, 1245, 1246, 7, 19, 0, 0, 1246, 1247, 7, 17, 0, 0, 1247, 1248, 7, 5, 0, 0, 1248, 1249, 7, 13, 0, 0, 1249, 1250, 7, 6, 0, 0, 1250, 164, 1, 0, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 12, 0, 0, 1253, 1254, 7, 19, 0, 0, 1254, 1255, 7, 3, 0, 0, 1255, 166, 1, 0, 0, 0, 1256, 1257, 7, 6, 0, 0, 1257, 1258, 7, 13, 0, 0, 1258, 1259, 7, 0, 0, 0, 1259, 1260, 7, 6, 0, 0, 1260, 168, 1, 0, 0, 0, 1261, 1262, 7, 6, 0, 0, 1262, 1263, 7, 10, 0, 0, 1263, 1264, 7, 3, 0, 0, 1264, 1265, 7, 8, 0, 0, 1265, 1266, 7, 14, 0, 0, 1266, 170, 1, 0, 0, 0, 1267, 1268, 7, 6, 0, 0, 1268, 1269, 7, 13, 0, 0, 1269, 1270, 7, 0, 0, 0, 1270, 1271, 7, 6, 0, 0, 1271, 1272, 7, 2, 0, 0, 1272, 1273, 7, 11, 0, 0, 1273, 172, 1, 0, 0, 0, 1274, 1275, 7, 6, 0, 0, 1275, 1276, 7, 7, 0, 0, 1276, 1277, 7, 16, 0, 0, 1277, 1278, 7, 19, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1280, 7, 2, 0, 0, 1280, 1281, 7, 7, 0, 0, 1281, 1282, 7, 20, 0, 0, 1282, 174, 1, 0, 0, 0, 1283, 1284, 7, 6, 0, 0, 1284, 1285, 7, 7, 0, 0, 1285, 1286, 7, 9, 0, 0, 1286, 176, 1, 0, 0, 0, 1287, 1288, 7, 6, 0, 0, 1288, 1289, 7, 12, 0, 0, 1289, 1290, 7, 12, 0, 0, 1290, 1291, 7, 19, 0, 0, 1291, 1292, 7, 12, 0, 0, 1292, 178, 1, 0, 0, 0, 1293, 1294, 7, 6, 0, 0, 1294, 1295, 7, 0, 0, 0, 1295, 1296, 7, 16, 0, 0, 1296, 1297, 7, 4, 0, 0, 1297, 1298, 7, 3, 0, 0, 1298, 1299, 7, 6, 0, 0, 1299, 180, 1, 0, 0, 0, 1300, 1301, 7, 6, 0, 0, 1301, 1302, 7, 22, 0, 0, 1302, 1303, 7, 16, 0, 0, 1303, 1304, 7, 6, 0, 0, 1304, 1305, 7, 3, 0, 0, 1305, 1306, 7, 8, 0, 0, 1306, 182, 1, 0, 0, 0, 1307, 1308, 7, 6, 0, 0, 1308, 1309, 7, 22, 0, 0, 1309, 1310, 7, 16, 0, 0, 1310, 1311, 7, 13, 0, 0, 1311, 1312, 7, 17, 0, 0, 1312, 1313, 7, 9, 0, 0, 1313, 1314, 7, 2, 0, 0, 1314, 1315, 7, 7, 0, 0, 1315, 1316, 7, 20, 0, 0, 1316, 184, 1, 0, 0, 0, 1317, 1318, 7, 6, 0, 0, 1318, 1319, 7, 22, 0, 0, 1319, 1320, 7, 6, 0, 0, 1320, 1321, 7, 16, 0, 0, 1321, 1322, 7, 17, 0, 0, 1322, 1323, 7, 8, 0, 0, 1323, 1324, 7, 6, 0, 0, 1324, 186, 1, 0, 0, 0, 1325, 1326, 7, 6, 0, 0, 1326, 1327, 7, 22, 0, 0, 1327, 1328, 7, 2, 0, 0, 1328, 1329, 7, 0, 0, 0, 1329, 1330, 7, 8, 0, 0, 1330, 1331, 7, 0, 0, 0, 1331, 188, 1, 0, 0, 0, 1332, 1333, 7, 6, 0, 0, 1333, 1334, 7, 22, 0, 0, 1334, 1335, 7, 3, 0, 0, 1335, 1336, 7, 13, 0, 0, 1336, 1337, 7, 4, 0, 0, 1337, 1338, 7, 2, 0, 0, 1338, 1339, 7, 7, 0, 0, 1339, 190, 1, 0, 0, 0, 1340, 1341, 7, 6, 0, 0, 1341, 1342, 7, 22, 0, 0, 1342, 1343, 7, 8, 0, 0, 1343, 1344, 7, 12, 0, 0, 1344, 1345, 7, 4, 0, 0, 1345, 1346, 7, 16, 0, 0, 1346, 1347, 7, 8, 0, 0, 1347, 192, 1, 0, 0, 0, 1348, 1349, 7, 11, 0, 0, 1349, 1350, 7, 4, 0, 0, 1350, 1351, 7, 13, 0, 0, 1351, 1352, 7, 0, 0, 0, 1352, 1353, 7, 6, 0, 0, 1353, 194, 1, 0, 0, 0, 1354, 1355, 7, 11, 0, 0, 1355, 1356, 7, 6, 0, 0, 1356, 1357, 7, 8, 0, 0, 1357, 1358, 7, 16, 0, 0, 1358, 1359, 7, 18, 0, 0, 1359, 196, 1, 0, 0, 0, 1360, 1361, 7, 11, 0, 0, 1361, 1362, 7, 2, 0, 0, 1362, 1363, 7, 13, 0, 0, 1363, 1364, 7, 8, 0, 0, 1364, 1365, 7, 6, 0, 0, 1365, 1366, 7, 12, 0, 0, 1366, 198, 1, 0, 0, 0, 1367, 1368, 7, 11, 0, 0, 1368, 1369, 7, 2, 0, 0, 1369, 1370, 7, 7, 0, 0, 1370, 1371, 7, 4, 0, 0, 1371, 1372, 7, 13, 0, 0, 1372, 200, 1, 0, 0, 0, 1373, 1374, 7, 11, 0, 0, 1374, 1375, 7, 2, 0, 0, 1375, 1376, 7, 12, 0, 0, 1376, 1377, 7, 0, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 202, 1, 0, 0, 0, 1379, 1380, 7, 11, 0, 0, 1380, 1381, 7, 19, 0, 0, 1381, 1382, 7, 13, 0, 0, 1382, 1383, 7, 13, 0, 0, 1383, 1384, 7, 19, 0, 0, 1384, 1385, 7, 21, 0, 0, 1385, 1386, 7, 2, 0, 0, 1386, 1387, 7, 7, 0, 0, 1387, 1388, 7, 20, 0, 0, 1388, 204, 1, 0, 0, 0, 1389, 1390, 7, 11, 0, 0, 1390, 1391, 7, 19, 0, 0, 1391, 1392, 7, 12, 0, 0, 1392, 206, 1, 0, 0, 0, 1393, 1394, 7, 11, 0, 0, 1394, 1395, 7, 19, 0, 0, 1395, 1396, 7, 12, 0, 0, 1396, 1397, 7, 10, 0, 0, 1397, 1398, 7, 4, 0, 0, 1398, 1399, 7, 8, 0, 0, 1399, 208, 1, 0, 0, 0, 1400, 1401, 7, 11, 0, 0, 1401, 1402, 7, 12, 0, 0, 1402, 1403, 7, 19, 0, 0, 1403, 1404, 7, 10, 0, 0, 1404, 210, 1, 0, 0, 0, 1405, 1406, 7, 11, 0, 0, 1406, 1407, 7, 17, 0, 0, 1407, 1408, 7, 13, 0, 0, 1408, 1409, 7, 13, 0, 0, 1409, 212, 1, 0, 0, 0, 1410, 1411, 7, 11, 0, 0, 1411, 1412, 7, 17, 0, 0, 1412, 1413, 7, 7, 0, 0, 1413, 1414, 7, 16, 0, 0, 1414, 1415, 7, 8, 0, 0, 1415, 1416, 7, 2, 0, 0, 1416, 1417, 7, 19, 0, 0, 1417, 1418, 7, 7, 0, 0, 1418, 214, 1, 0, 0, 0, 1419, 1420, 7, 11, 0, 0, 1420, 1421, 7, 17, 0, 0, 1421, 1422, 7, 7, 0, 0, 1422, 1423, 7, 16, 0, 0, 1423, 1424, 7, 8, 0, 0, 1424, 1425, 7, 2, 0, 0, 1425, 1426, 7, 19, 0, 0, 1426, 1427, 7, 7, 0, 0, 1427, 1428, 7, 0, 0, 0, 1428, 216, 1, 0, 0, 0, 1429, 1430, 7, 20, 0, 0, 1430, 1431, 7, 12, 0, 0, 1431, 1432, 7, 4, 0, 0, 1432, 1433, 7, 16, 0, 0, 1433, 1434, 7, 6, 0, 0, 1434, 218, 1, 0, 0, 0, 1435, 1436, 7, 20, 0, 0, 1436, 1437, 7, 12, 0, 0, 1437, 1438, 7, 4, 0, 0, 1438, 1439, 7, 7, 0, 0, 1439, 1440, 7, 8, 0, 0, 1440, 220, 1, 0, 0, 0, 1441, 1442, 7, 20, 0, 0, 1442, 1443, 7, 12, 0, 0, 1443, 1444, 7, 4, 0, 0, 1444, 1445, 7, 7, 0, 0, 1445, 1446, 7, 8, 0, 0, 1446, 1447, 7, 6, 0, 0, 1447, 1448, 7, 9, 0, 0, 1448, 222, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 1451, 7, 12, 0, 0, 1451, 1452, 7, 4, 0, 0, 1452, 1453, 7, 7, 0, 0, 1453, 1454, 7, 8, 0, 0, 1454, 1455, 7, 0, 0, 0, 1455, 224, 1, 0, 0, 0, 1456, 1457, 7, 20, 0, 0, 1457, 1458, 7, 12, 0, 0, 1458, 1459, 7, 4, 0, 0, 1459, 1460, 7, 3, 0, 0, 1460, 1461, 7, 18, 0, 0, 1461, 1462, 7, 23, 0, 0, 1462, 1463, 7, 2, 0, 0, 1463, 1464, 7, 15, 0, 0, 1464, 226, 1, 0, 0, 0, 1465, 1466, 7, 20, 0, 0, 1466, 1467, 7, 12, 0, 0, 1467, 1468, 7, 19, 0, 0, 1468, 1469, 7, 17, 0, 0, 1469, 1470, 7, 3, 0, 0, 1470, 228, 1, 0, 0, 0, 1471, 1472, 7, 20, 0, 0, 1472, 1473, 7, 12, 0, 0, 1473, 1474, 7, 19, 0, 0, 1474, 1475, 7, 17, 0, 0, 1475, 1476, 7, 3, 0, 0, 1476, 1477, 7, 2, 0, 0, 1477, 1478, 7, 7, 0, 0, 1478, 1479, 7, 20, 0, 0, 1479, 230, 1, 0, 0, 0, 1480, 1481, 7, 20, 0, 0, 1481, 1482, 7, 12, 0, 0, 1482, 1483, 7, 19, 0, 0, 1483, 1484, 7, 17, 0, 0, 1484, 1485, 7, 3, 0, 0, 1485, 1486, 7, 0, 0, 0, 1486, 232, 1, 0, 0, 0, 1487, 1488, 7, 18, 0, 0, 1488, 1489, 7, 4, 0, 0, 1489, 1490, 7, 23, 0, 0, 1490, 1491, 7, 2, 0, 0, 1491, 1492, 7, 7, 0, 0, 1492, 1493, 7, 20, 0, 0, 1493, 234, 1, 0, 0, 0, 1494, 1495, 7, 18, 0, 0, 1495, 1496, 7, 19, 0, 0, 1496, 1497, 7, 17, 0, 0, 1497, 1498, 7, 12, 0, 0, 1498, 236, 1, 0, 0, 0, 1499, 1500, 7, 2, 0, 0, 1500, 1501, 7, 11, 0, 0, 1501, 238, 1, 0, 0, 0, 1502, 1503, 7, 2, 0, 0, 1503, 1504, 7, 20, 0, 0, 1504, 1505, 7, 7, 0, 0, 1505, 1506, 7, 19, 0, 0, 1506, 1507, 7, 12, 0, 0, 1507, 1508, 7, 6, 0, 0, 1508, 240, 1, 0, 0, 0, 1509, 1510, 7, 2, 0, 0, 1510, 1511, 7, 10, 0, 0, 1511, 1512, 7, 10, 0, 0, 1512, 1513, 7, 6, 0, 0, 1513, 1514, 7, 9, 0, 0, 1514, 1515, 7, 2, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 1517, 7, 8, 0, 0, 1517, 1518, 7, 6, 0, 0, 1518, 242, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 1521, 7, 7, 0, 0, 1521, 244, 1, 0, 0, 0, 1522, 1523, 7, 2, 0, 0, 1523, 1524, 7, 7, 0, 0, 1524, 1525, 7, 16, 0, 0, 1525, 1526, 7, 13, 0, 0, 1526, 1527, 7, 17, 0, 0, 1527, 1528, 7, 9, 0, 0, 1528, 1529, 7, 2, 0, 0, 1529, 1530, 7, 7, 0, 0, 1530, 1531, 7, 20, 0, 0, 1531, 246, 1, 0, 0, 0, 1532, 1533, 7, 2, 0, 0, 1533, 1534, 7, 7, 0, 0, 1534, 1535, 7, 2, 0, 0, 1535, 1536, 7, 8, 0, 0, 1536, 1537, 7, 2, 0, 0, 1537, 1538, 7, 4, 0, 0, 1538, 1539, 7, 13, 0, 0, 1539, 248, 1, 0, 0, 0, 1540, 1541, 7, 2, 0, 0, 1541, 1542, 7, 7, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 6, 0, 0, 1544, 1545, 7, 12, 0, 0, 1545, 250, 1, 0, 0, 0, 1546, 1547, 7, 2, 0, 0, 1547, 1548, 7, 7, 0, 0, 1548, 1549, 7, 3, 0, 0, 1549, 1550, 7, 17, 0, 0, 1550, 1551, 7, 8, 0, 0, 1551, 252, 1, 0, 0, 0, 1552, 1553, 7, 2, 0, 0, 1553, 1554, 7, 7, 0, 0, 1554, 1555, 7, 0, 0, 0, 1555, 1556, 7, 6, 0, 0, 1556, 1557, 7, 12, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 254, 1, 0, 0, 0, 1559, 1560, 7, 2, 0, 0, 1560, 1561, 7, 7, 0, 0, 1561, 1562, 7, 8, 0, 0, 1562, 1563, 7, 6, 0, 0, 1563, 1564, 7, 12, 0, 0, 1564, 1565, 7, 0, 0, 0, 1565, 1566, 7, 6, 0, 0, 1566, 1567, 7, 16, 0, 0, 1567, 1568, 7, 8, 0, 0, 1568, 256, 1, 0, 0, 0, 1569, 1570, 7, 2, 0, 0, 1570, 1571, 7, 7, 0, 0, 1571, 1572, 7, 8, 0, 0, 1572, 1573, 7, 6, 0, 0, 1573, 1574, 7, 12, 0, 0, 1574, 1575, 7, 23, 0, 0, 1575, 1576, 7, 4, 0, 0, 1576, 1577, 7, 13, 0, 0, 1577, 258, 1, 0, 0, 0, 1578, 1579, 7, 2, 0, 0, 1579, 1580, 7, 7, 0, 0, 1580, 1581, 7, 8, 0, 0, 1581, 1582, 7, 19, 0, 0, 1582, 260, 1, 0, 0, 0, 1583, 1584, 7, 2, 0, 0, 1584, 1585, 7, 7, 0, 0, 1585, 1586, 7, 23, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 1, 0, 0, 1588, 1589, 7, 6, 0, 0, 1589, 1590, 7, 12, 0, 0, 1590, 262, 1, 0, 0, 0, 1591, 1592, 7, 2, 0, 0, 1592, 1593, 7, 19, 0, 0, 1593, 264, 1, 0, 0, 0, 1594, 1595, 7, 2, 0, 0, 1595, 1596, 7, 0, 0, 0, 1596, 266, 1, 0, 0, 0, 1597, 1598, 7, 2, 0, 0, 1598, 1599, 7, 0, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 13, 0, 0, 1601, 1602, 7, 4, 0, 0, 1602, 1603, 7, 8, 0, 0, 1603, 1604, 7, 2, 0, 0, 1604, 1605, 7, 19, 0, 0, 1605, 1606, 7, 7, 0, 0, 1606, 268, 1, 0, 0, 0, 1607, 1608, 7, 2, 0, 0, 1608, 1609, 7, 8, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 12, 0, 0, 1611, 1612, 7, 4, 0, 0, 1612, 1613, 7, 8, 0, 0, 1613, 1614, 7, 6, 0, 0, 1614, 270, 1, 0, 0, 0, 1615, 1616, 7, 24, 0, 0, 1616, 1617, 7, 19, 0, 0, 1617, 1618, 7, 2, 0, 0, 1618, 1619, 7, 7, 0, 0, 1619, 272, 1, 0, 0, 0, 1620, 1621, 7, 24, 0, 0, 1621, 1622, 7, 0, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 274, 1, 0, 0, 0, 1625, 1626, 7, 24, 0, 0, 1626, 1627, 7, 0, 0, 0, 1627, 1628, 7, 19, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 5, 95, 0, 0, 1630, 1631, 7, 4, 0, 0, 1631, 1632, 7, 12, 0, 0, 1632, 1633, 7, 12, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, 7, 14, 0, 0, 1635, 276, 1, 0, 0, 0, 1636, 1637, 7, 24, 0, 0, 1637, 1638, 7, 0, 0, 0, 1638, 1639, 7, 19, 0, 0, 1639, 1640, 7, 7, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 6, 0, 0, 1642, 1643, 7, 22, 0, 0, 1643, 1644, 7, 2, 0, 0, 1644, 1645, 7, 0, 0, 0, 1645, 1646, 7, 8, 0, 0, 1646, 1647, 7, 0, 0, 0, 1647, 278, 1, 0, 0, 0, 1648, 1649, 7, 24, 0, 0, 1649, 1650, 7, 0, 0, 0, 1650, 1651, 7, 19, 0, 0, 1651, 1652, 7, 7, 0, 0, 1652, 1653, 5, 95, 0, 0, 1653, 1654, 7, 19, 0, 0, 1654, 1655, 7, 5, 0, 0, 1655, 1656, 7, 24, 0, 0, 1656, 1657, 7, 6, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 8, 0, 0, 1659, 280, 1, 0, 0, 0, 1660, 1661, 7, 24, 0, 0, 1661, 1662, 7, 0, 0, 0, 1662, 1663, 7, 19, 0, 0, 1663, 1664, 7, 7, 0, 0, 1664, 1665, 5, 95, 0, 0, 1665, 1666, 7, 25, 0, 0, 1666, 1667, 7, 17, 0, 0, 1667, 1668, 7, 6, 0, 0, 1668, 1669, 7, 12, 0, 0, 1669, 1670, 7, 14, 0, 0, 1670, 282, 1, 0, 0, 0, 1671, 1672, 7, 24, 0, 0, 1672, 1673, 7, 0, 0, 0, 1673, 1674, 7, 19, 0, 0, 1674, 1675, 7, 7, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 8, 0, 0, 1677, 1678, 7, 4, 0, 0, 1678, 1679, 7, 5, 0, 0, 1679, 1680, 7, 13, 0, 0, 1680, 1681, 7, 6, 0, 0, 1681, 284, 1, 0, 0, 0, 1682, 1683, 7, 24, 0, 0, 1683, 1684, 7, 0, 0, 0, 1684, 1685, 7, 19, 0, 0, 1685, 1686, 7, 7, 0, 0, 1686, 1687, 5, 95, 0, 0, 1687, 1688, 7, 23, 0, 0, 1688, 1689, 7, 4, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 6, 0, 0, 1692, 286, 1, 0, 0, 0, 1693, 1694, 7, 1, 0, 0, 1694, 1695, 7, 6, 0, 0, 1695, 1696, 7, 6, 0, 0, 1696, 1697, 7, 3, 0, 0, 1697, 288, 1, 0, 0, 0, 1698, 1699, 7, 1, 0, 0, 1699, 1700, 7, 6, 0, 0, 1700, 1701, 7, 14, 0, 0, 1701, 290, 1, 0, 0, 0, 1702, 1703, 7, 1, 0, 0, 1703, 1704, 7, 6, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 0, 0, 0, 1706, 292, 1, 0, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 4, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 20, 0, 0, 1711, 1712, 7, 17, 0, 0, 1712, 1713, 7, 4, 0, 0, 1713, 1714, 7, 20, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 294, 1, 0, 0, 0, 1716, 1717, 7, 13, 0, 0, 1717, 1718, 7, 4, 0, 0, 1718, 1719, 7, 0, 0, 0, 1719, 1720, 7, 8, 0, 0, 1720, 296, 1, 0, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 4, 0, 0, 1723, 1724, 7, 8, 0, 0, 1724, 1725, 7, 6, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 4, 0, 0, 1727, 1728, 7, 13, 0, 0, 1728, 298, 1, 0, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 4, 0, 0, 1732, 1733, 7, 9, 0, 0, 1733, 1734, 7, 2, 0, 0, 1734, 1735, 7, 7, 0, 0, 1735, 1736, 7, 20, 0, 0, 1736, 300, 1, 0, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 6, 0, 0, 1739, 1740, 7, 4, 0, 0, 1740, 1741, 7, 23, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 302, 1, 0, 0, 0, 1743, 1744, 7, 13, 0, 0, 1744, 1745, 7, 6, 0, 0, 1745, 1746, 7, 11, 0, 0, 1746, 1747, 7, 8, 0, 0, 1747, 304, 1, 0, 0, 0, 1748, 1749, 7, 13, 0, 0, 1749, 1750, 7, 6, 0, 0, 1750, 1751, 7, 23, 0, 0, 1751, 1752, 7, 6, 0, 0, 1752, 1753, 7, 13, 0, 0, 1753, 306, 1, 0, 0, 0, 1754, 1755, 7, 13, 0, 0, 1755, 1756, 7, 2, 0, 0, 1756, 1757, 7, 1, 0, 0, 1757, 1758, 7, 6, 0, 0, 1758, 308, 1, 0, 0, 0, 1759, 1760, 7, 13, 0, 0, 1760, 1761, 7, 2, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 2, 0, 0, 1763, 1764, 7, 8, 0, 0, 1764, 310, 1, 0, 0, 0, 1765, 1766, 7, 13, 0, 0, 1766, 1767, 7, 2, 0, 0, 1767, 1768, 7, 0, 0, 0, 1768, 1769, 7, 8, 0, 0, 1769, 1770, 7, 4, 0, 0, 1770, 1771, 7, 20, 0, 0, 1771, 1772, 7, 20, 0, 0, 1772, 312, 1, 0, 0, 0, 1773, 1774, 7, 13, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 16, 0, 0, 1776, 1777, 7, 4, 0, 0, 1777, 1778, 7, 13, 0, 0, 1778, 314, 1, 0, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 4, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 8, 0, 0, 1785, 1786, 7, 2, 0, 0, 1786, 1787, 7, 10, 0, 0, 1787, 1788, 7, 6, 0, 0, 1788, 316, 1, 0, 0, 0, 1789, 1790, 7, 13, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 16, 0, 0, 1792, 1793, 7, 4, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 8, 0, 0, 1795, 1796, 7, 2, 0, 0, 1796, 1797, 7, 10, 0, 0, 1797, 1798, 7, 6, 0, 0, 1798, 1799, 7, 0, 0, 0, 1799, 1800, 7, 8, 0, 0, 1800, 1801, 7, 4, 0, 0, 1801, 1802, 7, 10, 0, 0, 1802, 1803, 7, 3, 0, 0, 1803, 318, 1, 0, 0, 0, 1804, 1805, 7, 13, 0, 0, 1805, 1806, 7, 19, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 2, 0, 0, 1808, 1809, 7, 16, 0, 0, 1809, 1810, 7, 4, 0, 0, 1810, 1811, 7, 13, 0, 0, 1811, 320, 1, 0, 0, 0, 1812, 1813, 7, 13, 0, 0, 1813, 1814, 7, 19, 0, 0, 1814, 1815, 7, 19, 0, 0, 1815, 1816, 7, 3, 0, 0, 1816, 322, 1, 0, 0, 0, 1817, 1818, 7, 10, 0, 0, 1818, 1819, 7, 4, 0, 0, 1819, 1820, 7, 3, 0, 0, 1820, 324, 1, 0, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 4, 0, 0, 1823, 1824, 7, 8, 0, 0, 1824, 1825, 7, 16, 0, 0, 1825, 1826, 7, 18, 0, 0, 1826, 326, 1, 0, 0, 0, 1827, 1828, 7, 10, 0, 0, 1828, 1829, 7, 4, 0, 0, 1829, 1830, 7, 8, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 18, 0, 0, 1832, 1833, 7, 6, 0, 0, 1833, 1834, 7, 9, 0, 0, 1834, 328, 1, 0, 0, 0, 1835, 1836, 7, 10, 0, 0, 1836, 1837, 7, 4, 0, 0, 1837, 1838, 7, 8, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 18, 0, 0, 1840, 1841, 7, 6, 0, 0, 1841, 1842, 7, 0, 0, 0, 1842, 330, 1, 0, 0, 0, 1843, 1844, 7, 10, 0, 0, 1844, 1845, 7, 4, 0, 0, 1845, 1846, 7, 8, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 18, 0, 0, 1848, 1849, 5, 95, 0, 0, 1849, 1850, 7, 12, 0, 0, 1850, 1851, 7, 6, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 19, 0, 0, 1853, 1854, 7, 20, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 2, 0, 0, 1856, 1857, 7, 15, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 332, 1, 0, 0, 0, 1859, 1860, 7, 10, 0, 0, 1860, 1861, 7, 4, 0, 0, 1861, 1862, 7, 8, 0, 0, 1862, 1863, 7, 6, 0, 0, 1863, 1864, 7, 12, 0, 0, 1864, 1865, 7, 2, 0, 0, 1865, 1866, 7, 4, 0, 0, 1866, 1867, 7, 13, 0, 0, 1867, 1868, 7, 2, 0, 0, 1868, 1869, 7, 15, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 9, 0, 0, 1871, 334, 1, 0, 0, 0, 1872, 1873, 7, 10, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 4, 0, 0, 1875, 1876, 7, 0, 0, 0, 1876, 1877, 7, 17, 0, 0, 1877, 1878, 7, 12, 0, 0, 1878, 1879, 7, 6, 0, 0, 1879, 1880, 7, 0, 0, 0, 1880, 336, 1, 0, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 6, 0, 0, 1883, 1884, 7, 12, 0, 0, 1884, 1885, 7, 20, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 338, 1, 0, 0, 0, 1887, 1888, 7, 10, 0, 0, 1888, 1889, 7, 2, 0, 0, 1889, 1890, 7, 7, 0, 0, 1890, 1891, 7, 17, 0, 0, 1891, 1892, 7, 8, 0, 0, 1892, 1893, 7, 6, 0, 0, 1893, 340, 1, 0, 0, 0, 1894, 1895, 7, 10, 0, 0, 1895, 1896, 7, 19, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 8, 0, 0, 1898, 1899, 7, 18, 0, 0, 1899, 342, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 4, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 1904, 7, 17, 0, 0, 1904, 1905, 7, 12, 0, 0, 1905, 1906, 7, 4, 0, 0, 1906, 1907, 7, 13, 0, 0, 1907, 344, 1, 0, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 0, 0, 0, 1911, 1912, 7, 8, 0, 0, 1912, 1913, 7, 6, 0, 0, 1913, 1914, 7, 9, 0, 0, 1914, 346, 1, 0, 0, 0, 1915, 1916, 7, 7, 0, 0, 1916, 1917, 7, 6, 0, 0, 1917, 1918, 7, 22, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 348, 1, 0, 0, 0, 1920, 1921, 7, 7, 0, 0, 1921, 1922, 7, 11, 0, 0, 1922, 1923, 7, 16, 0, 0, 1923, 350, 1, 0, 0, 0, 1924, 1925, 7, 7, 0, 0, 1925, 1926, 7, 11, 0, 0, 1926, 1927, 7, 9, 0, 0, 1927, 352, 1, 0, 0, 0, 1928, 1929, 7, 7, 0, 0, 1929, 1930, 7, 11, 0, 0, 1930, 1931, 7, 1, 0, 0, 1931, 1932, 7, 16, 0, 0, 1932, 354, 1, 0, 0, 0, 1933, 1934, 7, 7, 0, 0, 1934, 1935, 7, 11, 0, 0, 1935, 1936, 7, 1, 0, 0, 1936, 1937, 7, 9, 0, 0, 1937, 356, 1, 0, 0, 0, 1938, 1939, 7, 7, 0, 0, 1939, 1940, 7, 19, 0, 0, 1940, 358, 1, 0, 0, 0, 1941, 1942, 7, 7, 0, 0, 1942, 1943, 7, 19, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 6, 0, 0, 1945, 360, 1, 0, 0, 0, 1946, 1947, 7, 7, 0, 0, 1947, 1948, 7, 19, 0, 0, 1948, 1949, 7, 12, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 4, 0, 0, 1951, 1952, 7, 13, 0, 0, 1952, 1953, 7, 2, 0, 0, 1953, 1954, 7, 15, 0, 0, 1954, 1955, 7, 6, 0, 0, 1955, 362, 1, 0, 0, 0, 1956, 1957, 7, 7, 0, 0, 1957, 1958, 7, 19, 0, 0, 1958, 1959, 7, 8, 0, 0, 1959, 364, 1, 0, 0, 0, 1960, 1961, 7, 7, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 13, 0, 0, 1963, 1964, 7, 13, 0, 0, 1964, 366, 1, 0, 0, 0, 1965, 1966, 7, 7, 0, 0, 1966, 1967, 7, 17, 0, 0, 1967, 1968, 7, 13, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 1970, 7, 2, 0, 0, 1970, 1971, 7, 11, 0, 0, 1971, 368, 1, 0, 0, 0, 1972, 1973, 7, 7, 0, 0, 1973, 1974, 7, 17, 0, 0, 1974, 1975, 7, 13, 0, 0, 1975, 1976, 7, 13, 0, 0, 1976, 1977, 7, 0, 0, 0, 1977, 370, 1, 0, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 5, 0, 0, 1980, 1981, 7, 24, 0, 0, 1981, 1982, 7, 6, 0, 0, 1982, 1983, 7, 16, 0, 0, 1983, 1984, 7, 8, 0, 0, 1984, 372, 1, 0, 0, 0, 1985, 1986, 7, 19, 0, 0, 1986, 1987, 7, 11, 0, 0, 1987, 374, 1, 0, 0, 0, 1988, 1989, 7, 19, 0, 0, 1989, 1990, 7, 11, 0, 0, 1990, 1991, 7, 11, 0, 0, 1991, 1992, 7, 0, 0, 0, 1992, 1993, 7, 6, 0, 0, 1993, 1994, 7, 8, 0, 0, 1994, 376, 1, 0, 0, 0, 1995, 1996, 7, 19, 0, 0, 1996, 1997, 7, 10, 0, 0, 1997, 1998, 7, 2, 0, 0, 1998, 1999, 7, 8, 0, 0, 1999, 378, 1, 0, 0, 0, 2000, 2001, 7, 19, 0, 0, 2001, 2002, 7, 7, 0, 0, 2002, 380, 1, 0, 0, 0, 2003, 2004, 7, 19, 0, 0, 2004, 2005, 7, 7, 0, 0, 2005, 2006, 7, 6, 0, 0, 2006, 382, 1, 0, 0, 0, 2007, 2008, 7, 19, 0, 0, 2008, 2009, 7, 7, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 14, 0, 0, 2011, 384, 1, 0, 0, 0, 2012, 2013, 7, 19, 0, 0, 2013, 2014, 7, 3, 0, 0, 2014, 2015, 7, 8, 0, 0, 2015, 2016, 7, 2, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 386, 1, 0, 0, 0, 2019, 2020, 7, 19, 0, 0, 2020, 2021, 7, 12, 0, 0, 2021, 388, 1, 0, 0, 0, 2022, 2023, 7, 19, 0, 0, 2023, 2024, 7, 12, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 12, 0, 0, 2027, 390, 1, 0, 0, 0, 2028, 2029, 7, 19, 0, 0, 2029, 2030, 7, 12, 0, 0, 2030, 2031, 7, 9, 0, 0, 2031, 2032, 7, 2, 0, 0, 2032, 2033, 7, 7, 0, 0, 2033, 2034, 7, 4, 0, 0, 2034, 2035, 7, 13, 0, 0, 2035, 2036, 7, 2, 0, 0, 2036, 2037, 7, 8, 0, 0, 2037, 2038, 7, 14, 0, 0, 2038, 392, 1, 0, 0, 0, 2039, 2040, 7, 19, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 8, 0, 0, 2042, 2043, 7, 6, 0, 0, 2043, 2044, 7, 12, 0, 0, 2044, 394, 1, 0, 0, 0, 2045, 2046, 7, 19, 0, 0, 2046, 2047, 7, 17, 0, 0, 2047, 2048, 7, 8, 0, 0, 2048, 2049, 7, 3, 0, 0, 2049, 2050, 7, 17, 0, 0, 2050, 2051, 7, 8, 0, 0, 2051, 396, 1, 0, 0, 0, 2052, 2053, 7, 19, 0, 0, 2053, 2054, 7, 23, 0, 0, 2054, 2055, 7, 6, 0, 0, 2055, 2056, 7, 12, 0, 0, 2056, 398, 1, 0, 0, 0, 2057, 2058, 7, 19, 0, 0, 2058, 2059, 7, 23, 0, 0, 2059, 2060, 7, 6, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 11, 0, 0, 2062, 2063, 7, 13, 0, 0, 2063, 2064, 7, 19, 0, 0, 2064, 2065, 7, 21, 0, 0, 2065, 400, 1, 0, 0, 0, 2066, 2067, 7, 3, 0, 0, 2067, 2068, 7, 4, 0, 0, 2068, 2069, 7, 12, 0, 0, 2069, 2070, 7, 8, 0, 0, 2070, 2071, 7, 2, 0, 0, 2071, 2072, 7, 8, 0, 0, 2072, 2073, 7, 2, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 7, 0, 0, 2075, 402, 1, 0, 0, 0, 2076, 2077, 7, 3, 0, 0, 2077, 2078, 7, 4, 0, 0, 2078, 2079, 7, 12, 0, 0, 2079, 2080, 7, 8, 0, 0, 2080, 2081, 7, 2, 0, 0, 2081, 2082, 7, 8, 0, 0, 2082, 2083, 7, 2, 0, 0, 2083, 2084, 7, 19, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 2086, 7, 0, 0, 0, 2086, 404, 1, 0, 0, 0, 2087, 2088, 7, 3, 0, 0, 2088, 2089, 7, 4, 0, 0, 2089, 2090, 7, 0, 0, 0, 2090, 2091, 7, 0, 0, 0, 2091, 2092, 7, 2, 0, 0, 2092, 2093, 7, 7, 0, 0, 2093, 2094, 7, 20, 0, 0, 2094, 406, 1, 0, 0, 0, 2095, 2096, 7, 3, 0, 0, 2096, 2097, 7, 4, 0, 0, 2097, 2098, 7, 0, 0, 0, 2098, 2099, 7, 8, 0, 0, 2099, 408, 1, 0, 0, 0, 2100, 2101, 7, 3, 0, 0, 2101, 2102, 7, 4, 0, 0, 2102, 2103, 7, 8, 0, 0, 2103, 2104, 7, 18, 0, 0, 2104, 410, 1, 0, 0, 0, 2105, 2106, 7, 3, 0, 0, 2106, 2107, 7, 4, 0, 0, 2107, 2108, 7, 8, 0, 0, 2108, 2109, 7, 8, 0, 0, 2109, 2110, 7, 6, 0, 0, 2110, 2111, 7, 12, 0, 0, 2111, 2112, 7, 7, 0, 0, 2112, 412, 1, 0, 0, 0, 2113, 2114, 7, 3, 0, 0, 2114, 2115, 7, 6, 0, 0, 2115, 2116, 7, 12, 0, 0, 2116, 414, 1, 0, 0, 0, 2117, 2118, 7, 3, 0, 0, 2118, 2119, 7, 6, 0, 0, 2119, 2120, 7, 12, 0, 0, 2120, 2121, 7, 2, 0, 0, 2121, 2122, 7, 19, 0, 0, 2122, 2123, 7, 9, 0, 0, 2123, 416, 1, 0, 0, 0, 2124, 2125, 7, 3, 0, 0, 2125, 2126, 7, 6, 0, 0, 2126, 2127, 7, 12, 0, 0, 2127, 2128, 7, 10, 0, 0, 2128, 2129, 7, 17, 0, 0, 2129, 2130, 7, 8, 0, 0, 2130, 2131, 7, 6, 0, 0, 2131, 418, 1, 0, 0, 0, 2132, 2133, 7, 3, 0, 0, 2133, 2134, 7, 13, 0, 0, 2134, 2135, 7, 4, 0, 0, 2135, 2136, 7, 7, 0, 0, 2136, 420, 1, 0, 0, 0, 2137, 2138, 7, 3, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 0, 0, 0, 2140, 2141, 7, 2, 0, 0, 2141, 2142, 7, 8, 0, 0, 2142, 2143, 7, 2, 0, 0, 2143, 2144, 7, 19, 0, 0, 2144, 2145, 7, 7, 0, 0, 2145, 422, 1, 0, 0, 0, 2146, 2147, 7, 3, 0, 0, 2147, 2148, 7, 12, 0, 0, 2148, 2149, 7, 6, 0, 0, 2149, 2150, 7, 16, 0, 0, 2150, 2151, 7, 6, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 2, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 20, 0, 0, 2155, 424, 1, 0, 0, 0, 2156, 2157, 7, 3, 0, 0, 2157, 2158, 7, 12, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 16, 0, 0, 2160, 2161, 7, 2, 0, 0, 2161, 2162, 7, 0, 0, 0, 2162, 2163, 7, 2, 0, 0, 2163, 2164, 7, 19, 0, 0, 2164, 2165, 7, 7, 0, 0, 2165, 426, 1, 0, 0, 0, 2166, 2167, 7, 3, 0, 0, 2167, 2168, 7, 12, 0, 0, 2168, 2169, 7, 6, 0, 0, 2169, 2170, 7, 3, 0, 0, 2170, 2171, 7, 4, 0, 0, 2171, 2172, 7, 12, 0, 0, 2172, 2173, 7, 6, 0, 0, 2173, 428, 1, 0, 0, 0, 2174, 2175, 7, 3, 0, 0, 2175, 2176, 7, 12, 0, 0, 2176, 2177, 7, 2, 0, 0, 2177, 2178, 7, 23, 0, 0, 2178, 2179, 7, 2, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 6, 0, 0, 2181, 2182, 7, 20, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 0, 0, 0, 2184, 430, 1, 0, 0, 0, 2185, 2186, 7, 3, 0, 0, 2186, 2187, 7, 12, 0, 0, 2187, 2188, 7, 19, 0, 0, 2188, 2189, 7, 3, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 2191, 7, 12, 0, 0, 2191, 2192, 7, 8, 0, 0, 2192, 2193, 7, 2, 0, 0, 2193, 2194, 7, 6, 0, 0, 2194, 2195, 7, 0, 0, 0, 2195, 432, 1, 0, 0, 0, 2196, 2197, 7, 3, 0, 0, 2197, 2198, 7, 12, 0, 0, 2198, 2199, 7, 17, 0, 0, 2199, 2200, 7, 7, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 434, 1, 0, 0, 0, 2202, 2203, 7, 25, 0, 0, 2203, 2204, 7, 17, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 8, 0, 0, 2206, 2207, 7, 6, 0, 0, 2207, 2208, 7, 0, 0, 0, 2208, 436, 1, 0, 0, 0, 2209, 2210, 7, 12, 0, 0, 2210, 2211, 7, 4, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 20, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 438, 1, 0, 0, 0, 2215, 2216, 7, 12, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 4, 0, 0, 2218, 2219, 7, 9, 0, 0, 2219, 440, 1, 0, 0, 0, 2220, 2221, 7, 12, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 16, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 12, 0, 0, 2225, 2226, 7, 0, 0, 0, 2226, 2227, 7, 2, 0, 0, 2227, 2228, 7, 23, 0, 0, 2228, 2229, 7, 6, 0, 0, 2229, 442, 1, 0, 0, 0, 2230, 2231, 7, 12, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 11, 0, 0, 2233, 2234, 7, 12, 0, 0, 2234, 2235, 7, 6, 0, 0, 2235, 2236, 7, 0, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 444, 1, 0, 0, 0, 2238, 2239, 7, 12, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 7, 0, 0, 2241, 2242, 7, 4, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 446, 1, 0, 0, 0, 2245, 2246, 7, 12, 0, 0, 2246, 2247, 7, 6, 0, 0, 2247, 2248, 7, 3, 0, 0, 2248, 2249, 7, 6, 0, 0, 2249, 2250, 7, 4, 0, 0, 2250, 2251, 7, 8, 0, 0, 2251, 448, 1, 0, 0, 0, 2252, 2253, 7, 12, 0, 0, 2253, 2254, 7, 6, 0, 0, 2254, 2255, 7, 3, 0, 0, 2255, 2256, 7, 6, 0, 0, 2256, 2257, 7, 4, 0, 0, 2257, 2258, 7, 8, 0, 0, 2258, 2259, 7, 4, 0, 0, 2259, 2260, 7, 5, 0, 0, 2260, 2261, 7, 13, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 450, 1, 0, 0, 0, 2263, 2264, 7, 12, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 3, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 2268, 7, 4, 0, 0, 2268, 2269, 7, 16, 0, 0, 2269, 2270, 7, 6, 0, 0, 2270, 452, 1, 0, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 2274, 7, 0, 0, 0, 2274, 2275, 7, 6, 0, 0, 2275, 2276, 7, 8, 0, 0, 2276, 454, 1, 0, 0, 0, 2277, 2278, 7, 12, 0, 0, 2278, 2279, 7, 6, 0, 0, 2279, 2280, 7, 0, 0, 0, 2280, 2281, 7, 3, 0, 0, 2281, 2282, 7, 6, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 8, 0, 0, 2284, 456, 1, 0, 0, 0, 2285, 2286, 7, 12, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 0, 0, 0, 2288, 2289, 7, 8, 0, 0, 2289, 2290, 7, 12, 0, 0, 2290, 2291, 7, 2, 0, 0, 2291, 2292, 7, 16, 0, 0, 2292, 2293, 7, 8, 0, 0, 2293, 458, 1, 0, 0, 0, 2294, 2295, 7, 12, 0, 0, 2295, 2296, 7, 6, 0, 0, 2296, 2297, 7, 8, 0, 0, 2297, 2298, 7, 17, 0, 0, 2298, 2299, 7, 12, 0, 0, 2299, 2300, 7, 7, 0, 0, 2300, 460, 1, 0, 0, 0, 2301, 2302, 7, 12, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 8, 0, 0, 2304, 2305, 7, 17, 0, 0, 2305, 2306, 7, 12, 0, 0, 2306, 2307, 7, 7, 0, 0, 2307, 2308, 7, 2, 0, 0, 2308, 2309, 7, 7, 0, 0, 2309, 2310, 7, 20, 0, 0, 2310, 462, 1, 0, 0, 0, 2311, 2312, 7, 12, 0, 0, 2312, 2313, 7, 6, 0, 0, 2313, 2314, 7, 8, 0, 0, 2314, 2315, 7, 17, 0, 0, 2315, 2316, 7, 12, 0, 0, 2316, 2317, 7, 7, 0, 0, 2317, 2318, 7, 0, 0, 0, 2318, 464, 1, 0, 0, 0, 2319, 2320, 7, 12, 0, 0, 2320, 2321, 7, 6, 0, 0, 2321, 2322, 7, 23, 0, 0, 2322, 2323, 7, 19, 0, 0, 2323, 2324, 7, 1, 0, 0, 2324, 2325, 7, 6, 0, 0, 2325, 466, 1, 0, 0, 0, 2326, 2327, 7, 12, 0, 0, 2327, 2328, 7, 2, 0, 0, 2328, 2329, 7, 20, 0, 0, 2329, 2330, 7, 18, 0, 0, 2330, 2331, 7, 8, 0, 0, 2331, 468, 1, 0, 0, 0, 2332, 2333, 7, 12, 0, 0, 2333, 2334, 7, 19, 0, 0, 2334, 2335, 7, 13, 0, 0, 2335, 2336, 7, 6, 0, 0, 2336, 470, 1, 0, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 2339, 7, 19, 0, 0, 2339, 2340, 7, 13, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 0, 0, 0, 2342, 472, 1, 0, 0, 0, 2343, 2344, 7, 12, 0, 0, 2344, 2345, 7, 19, 0, 0, 2345, 2346, 7, 13, 0, 0, 2346, 2347, 7, 13, 0, 0, 2347, 2348, 7, 5, 0, 0, 2348, 2349, 7, 4, 0, 0, 2349, 2350, 7, 16, 0, 0, 2350, 2351, 7, 1, 0, 0, 2351, 474, 1, 0, 0, 0, 2352, 2353, 7, 12, 0, 0, 2353, 2354, 7, 19, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 13, 0, 0, 2356, 2357, 7, 17, 0, 0, 2357, 2358, 7, 3, 0, 0, 2358, 476, 1, 0, 0, 0, 2359, 2360, 7, 12, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 21, 0, 0, 2362, 478, 1, 0, 0, 0, 2363, 2364, 7, 12, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 21, 0, 0, 2366, 2367, 7, 0, 0, 0, 2367, 480, 1, 0, 0, 0, 2368, 2369, 7, 12, 0, 0, 2369, 2370, 7, 17, 0, 0, 2370, 2371, 7, 7, 0, 0, 2371, 2372, 7, 7, 0, 0, 2372, 2373, 7, 2, 0, 0, 2373, 2374, 7, 7, 0, 0, 2374, 2375, 7, 20, 0, 0, 2375, 482, 1, 0, 0, 0, 2376, 2377, 7, 0, 0, 0, 2377, 2378, 7, 16, 0, 0, 2378, 2379, 7, 4, 0, 0, 2379, 2380, 7, 13, 0, 0, 2380, 2381, 7, 4, 0, 0, 2381, 2382, 7, 12, 0, 0, 2382, 484, 1, 0, 0, 0, 2383, 2384, 7, 0, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 18, 0, 0, 2386, 2387, 7, 6, 0, 0, 2387, 2388, 7, 10, 0, 0, 2388, 2389, 7, 4, 0, 0, 2389, 486, 1, 0, 0, 0, 2390, 2391, 7, 0, 0, 0, 2391, 2392, 7, 16, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 6, 0, 0, 2394, 2395, 7, 10, 0, 0, 2395, 2396, 7, 4, 0, 0, 2396, 2397, 7, 0, 0, 0, 2397, 488, 1, 0, 0, 0, 2398, 2399, 7, 0, 0, 0, 2399, 2400, 7, 6, 0, 0, 2400, 2401, 7, 16, 0, 0, 2401, 2402, 7, 19, 0, 0, 2402, 2403, 7, 7, 0, 0, 2403, 2404, 7, 9, 0, 0, 2404, 490, 1, 0, 0, 0, 2405, 2406, 7, 0, 0, 0, 2406, 2407, 7, 6, 0, 0, 2407, 2408, 7, 16, 0, 0, 2408, 2409, 7, 17, 0, 0, 2409, 2410, 7, 12, 0, 0, 2410, 2411, 7, 2, 0, 0, 2411, 2412, 7, 8, 0, 0, 2412, 2413, 7, 14, 0, 0, 2413, 492, 1, 0, 0, 0, 2414, 2415, 7, 0, 0, 0, 2415, 2416, 7, 6, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 1, 0, 0, 2418, 494, 1, 0, 0, 0, 2419, 2420, 7, 0, 0, 0, 2420, 2421, 7, 6, 0, 0, 2421, 2422, 7, 13, 0, 0, 2422, 2423, 7, 6, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 8, 0, 0, 2425, 496, 1, 0, 0, 0, 2426, 2427, 7, 0, 0, 0, 2427, 2428, 7, 6, 0, 0, 2428, 2429, 7, 12, 0, 0, 2429, 2430, 7, 2, 0, 0, 2430, 2431, 7, 4, 0, 0, 2431, 2432, 7, 13, 0, 0, 2432, 2433, 7, 2, 0, 0, 2433, 2434, 7, 15, 0, 0, 2434, 2435, 7, 4, 0, 0, 2435, 2436, 7, 5, 0, 0, 2436, 2437, 7, 13, 0, 0, 2437, 2438, 7, 6, 0, 0, 2438, 498, 1, 0, 0, 0, 2439, 2440, 7, 0, 0, 0, 2440, 2441, 7, 6, 0, 0, 2441, 2442, 7, 0, 0, 0, 2442, 2443, 7, 0, 0, 0, 2443, 2444, 7, 2, 0, 0, 2444, 2445, 7, 19, 0, 0, 2445, 2446, 7, 7, 0, 0, 2446, 500, 1, 0, 0, 0, 2447, 2448, 7, 0, 0, 0, 2448, 2449, 7, 6, 0, 0, 2449, 2450, 7, 8, 0, 0, 2450, 502, 1, 0, 0, 0, 2451, 2452, 7, 0, 0, 0, 2452, 2453, 7, 6, 0, 0, 2453, 2454, 7, 8, 0, 0, 2454, 2455, 7, 0, 0, 0, 2455, 504, 1, 0, 0, 0, 2456, 2457, 7, 0, 0, 0, 2457, 2458, 7, 18, 0, 0, 2458, 2459, 7, 19, 0, 0, 2459, 2460, 7, 21, 0, 0, 2460, 506, 1, 0, 0, 0, 2461, 2462, 7, 0, 0, 0, 2462, 2463, 7, 19, 0, 0, 2463, 2464, 7, 10, 0, 0, 2464, 2465, 7, 6, 0, 0, 2465, 508, 1, 0, 0, 0, 2466, 2467, 7, 0, 0, 0, 2467, 2468, 7, 8, 0, 0, 2468, 2469, 7, 4, 0, 0, 2469, 2470, 7, 12, 0, 0, 2470, 2471, 7, 8, 0, 0, 2471, 510, 1, 0, 0, 0, 2472, 2473, 7, 0, 0, 0, 2473, 2474, 7, 8, 0, 0, 2474, 2475, 7, 4, 0, 0, 2475, 2476, 7, 8, 0, 0, 2476, 2477, 7, 0, 0, 0, 2477, 512, 1, 0, 0, 0, 2478, 2479, 7, 0, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 5, 0, 0, 2481, 2482, 7, 0, 0, 0, 2482, 2483, 7, 6, 0, 0, 2483, 2484, 7, 8, 0, 0, 2484, 514, 1, 0, 0, 0, 2485, 2486, 7, 0, 0, 0, 2486, 2487, 7, 17, 0, 0, 2487, 2488, 7, 5, 0, 0, 2488, 2489, 7, 0, 0, 0, 2489, 2490, 7, 8, 0, 0, 2490, 2491, 7, 12, 0, 0, 2491, 2492, 7, 2, 0, 0, 2492, 2493, 7, 7, 0, 0, 2493, 2494, 7, 20, 0, 0, 2494, 516, 1, 0, 0, 0, 2495, 2496, 7, 0, 0, 0, 2496, 2497, 7, 14, 0, 0, 2497, 2498, 7, 0, 0, 0, 2498, 2499, 7, 8, 0, 0, 2499, 2500, 7, 6, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 518, 1, 0, 0, 0, 2502, 2503, 7, 8, 0, 0, 2503, 2504, 7, 4, 0, 0, 2504, 2505, 7, 5, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 6, 0, 0, 2507, 520, 1, 0, 0, 0, 2508, 2509, 7, 8, 0, 0, 2509, 2510, 7, 4, 0, 0, 2510, 2511, 7, 5, 0, 0, 2511, 2512, 7, 13, 0, 0, 2512, 2513, 7, 6, 0, 0, 2513, 2514, 7, 0, 0, 0, 2514, 522, 1, 0, 0, 0, 2515, 2516, 7, 8, 0, 0, 2516, 2517, 7, 4, 0, 0, 2517, 2518, 7, 5, 0, 0, 2518, 2519, 7, 13, 0, 0, 2519, 2520, 7, 6, 0, 0, 2520, 2521, 7, 0, 0, 0, 2521, 2522, 7, 4, 0, 0, 2522, 2523, 7, 10, 0, 0, 2523, 2524, 7, 3, 0, 0, 2524, 2525, 7, 13, 0, 0, 2525, 2526, 7, 6, 0, 0, 2526, 524, 1, 0, 0, 0, 2527, 2528, 7, 8, 0, 0, 2528, 2529, 7, 6, 0, 0, 2529, 2530, 7, 22, 0, 0, 2530, 2531, 7, 8, 0, 0, 2531, 526, 1, 0, 0, 0, 2532, 2533, 7, 0, 0, 0, 2533, 2534, 7, 8, 0, 0, 2534, 2535, 7, 12, 0, 0, 2535, 2536, 7, 2, 0, 0, 2536, 2537, 7, 7, 0, 0, 2537, 2538, 7, 20, 0, 0, 2538, 528, 1, 0, 0, 0, 2539, 2540, 7, 8, 0, 0, 2540, 2541, 7, 18, 0, 0, 2541, 2542, 7, 6, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 530, 1, 0, 0, 0, 2544, 2545, 7, 8, 0, 0, 2545, 2546, 7, 2, 0, 0, 2546, 2547, 7, 6, 0, 0, 2547, 2548, 7, 0, 0, 0, 2548, 532, 1, 0, 0, 0, 2549, 2550, 7, 8, 0, 0, 2550, 2551, 7, 2, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 6, 0, 0, 2553, 534, 1, 0, 0, 0, 2554, 2555, 7, 8, 0, 0, 2555, 2556, 7, 2, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 6, 0, 0, 2558, 2559, 7, 0, 0, 0, 2559, 2560, 7, 8, 0, 0, 2560, 2561, 7, 4, 0, 0, 2561, 2562, 7, 10, 0, 0, 2562, 2563, 7, 3, 0, 0, 2563, 536, 1, 0, 0, 0, 2564, 2565, 7, 8, 0, 0, 2565, 2566, 7, 19, 0, 0, 2566, 538, 1, 0, 0, 0, 2567, 2568, 7, 8, 0, 0, 2568, 2569, 7, 12, 0, 0, 2569, 2570, 7, 4, 0, 0, 2570, 2571, 7, 2, 0, 0, 2571, 2572, 7, 13, 0, 0, 2572, 2573, 7, 2, 0, 0, 2573, 2574, 7, 7, 0, 0, 2574, 2575, 7, 20, 0, 0, 2575, 540, 1, 0, 0, 0, 2576, 2577, 7, 8, 0, 0, 2577, 2578, 7, 12, 0, 0, 2578, 2579, 7, 4, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 0, 0, 0, 2581, 2582, 7, 4, 0, 0, 2582, 2583, 7, 16, 0, 0, 2583, 2584, 7, 8, 0, 0, 2584, 2585, 7, 2, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 542, 1, 0, 0, 0, 2588, 2589, 7, 8, 0, 0, 2589, 2590, 7, 12, 0, 0, 2590, 2591, 7, 2, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 544, 1, 0, 0, 0, 2593, 2594, 7, 8, 0, 0, 2594, 2595, 7, 12, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 6, 0, 0, 2597, 546, 1, 0, 0, 0, 2598, 2599, 7, 8, 0, 0, 2599, 2600, 7, 12, 0, 0, 2600, 2601, 7, 17, 0, 0, 2601, 2602, 7, 7, 0, 0, 2602, 2603, 7, 16, 0, 0, 2603, 2604, 7, 4, 0, 0, 2604, 2605, 7, 8, 0, 0, 2605, 2606, 7, 6, 0, 0, 2606, 548, 1, 0, 0, 0, 2607, 2608, 7, 8, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 14, 0, 0, 2610, 2611, 5, 95, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 4, 0, 0, 2613, 2614, 7, 0, 0, 0, 2614, 2615, 7, 8, 0, 0, 2615, 550, 1, 0, 0, 0, 2616, 2617, 7, 8, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 3, 0, 0, 2619, 2620, 7, 6, 0, 0, 2620, 552, 1, 0, 0, 0, 2621, 2622, 7, 17, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 0, 0, 0, 2624, 2625, 7, 16, 0, 0, 2625, 2626, 7, 4, 0, 0, 2626, 2627, 7, 3, 0, 0, 2627, 2628, 7, 6, 0, 0, 2628, 554, 1, 0, 0, 0, 2629, 2630, 7, 17, 0, 0, 2630, 2631, 7, 7, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 19, 0, 0, 2633, 2634, 7, 17, 0, 0, 2634, 2635, 7, 7, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 6, 0, 0, 2637, 2638, 7, 9, 0, 0, 2638, 556, 1, 0, 0, 0, 2639, 2640, 7, 17, 0, 0, 2640, 2641, 7, 7, 0, 0, 2641, 2642, 7, 16, 0, 0, 2642, 2643, 7, 19, 0, 0, 2643, 2644, 7, 10, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 2, 0, 0, 2646, 2647, 7, 8, 0, 0, 2647, 2648, 7, 8, 0, 0, 2648, 2649, 7, 6, 0, 0, 2649, 2650, 7, 9, 0, 0, 2650, 558, 1, 0, 0, 0, 2651, 2652, 7, 17, 0, 0, 2652, 2653, 7, 7, 0, 0, 2653, 2654, 7, 16, 0, 0, 2654, 2655, 7, 19, 0, 0, 2655, 2656, 7, 7, 0, 0, 2656, 2657, 7, 9, 0, 0, 2657, 2658, 7, 2, 0, 0, 2658, 2659, 7, 8, 0, 0, 2659, 2660, 7, 2, 0, 0, 2660, 2661, 7, 19, 0, 0, 2661, 2662, 7, 7, 0, 0, 2662, 2663, 7, 4, 0, 0, 2663, 2664, 7, 13, 0, 0, 2664, 560, 1, 0, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 7, 0, 0, 2667, 2668, 7, 2, 0, 0, 2668, 2669, 7, 19, 0, 0, 2669, 2670, 7, 7, 0, 0, 2670, 562, 1, 0, 0, 0, 2671, 2672, 7, 17, 0, 0, 2672, 2673, 7, 7, 0, 0, 2673, 2674, 7, 2, 0, 0, 2674, 2675, 7, 25, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 564, 1, 0, 0, 0, 2678, 2679, 7, 17, 0, 0, 2679, 2680, 7, 7, 0, 0, 2680, 2681, 7, 1, 0, 0, 2681, 2682, 7, 7, 0, 0, 2682, 2683, 7, 19, 0, 0, 2683, 2684, 7, 21, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 566, 1, 0, 0, 0, 2686, 2687, 7, 17, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 10, 0, 0, 2689, 2690, 7, 4, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 2692, 7, 16, 0, 0, 2692, 2693, 7, 18, 0, 0, 2693, 2694, 7, 6, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 568, 1, 0, 0, 0, 2696, 2697, 7, 17, 0, 0, 2697, 2698, 7, 7, 0, 0, 2698, 2699, 7, 7, 0, 0, 2699, 2700, 7, 6, 0, 0, 2700, 2701, 7, 0, 0, 0, 2701, 2702, 7, 8, 0, 0, 2702, 570, 1, 0, 0, 0, 2703, 2704, 7, 17, 0, 0, 2704, 2705, 7, 7, 0, 0, 2705, 2706, 7, 8, 0, 0, 2706, 2707, 7, 2, 0, 0, 2707, 2708, 7, 13, 0, 0, 2708, 572, 1, 0, 0, 0, 2709, 2710, 7, 17, 0, 0, 2710, 2711, 7, 3, 0, 0, 2711, 2712, 7, 9, 0, 0, 2712, 2713, 7, 4, 0, 0, 2713, 2714, 7, 8, 0, 0, 2714, 2715, 7, 6, 0, 0, 2715, 574, 1, 0, 0, 0, 2716, 2717, 7, 17, 0, 0, 2717, 2718, 7, 0, 0, 0, 2718, 2719, 7, 6, 0, 0, 2719, 576, 1, 0, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 0, 0, 0, 2722, 2723, 7, 6, 0, 0, 2723, 2724, 7, 12, 0, 0, 2724, 578, 1, 0, 0, 0, 2725, 2726, 7, 17, 0, 0, 2726, 2727, 7, 0, 0, 0, 2727, 2728, 7, 2, 0, 0, 2728, 2729, 7, 7, 0, 0, 2729, 2730, 7, 20, 0, 0, 2730, 580, 1, 0, 0, 0, 2731, 2732, 7, 17, 0, 0, 2732, 2733, 7, 8, 0, 0, 2733, 2734, 7, 11, 0, 0, 2734, 2735, 5, 49, 0, 0, 2735, 2736, 5, 54, 0, 0, 2736, 582, 1, 0, 0, 0, 2737, 2738, 7, 17, 0, 0, 2738, 2739, 7, 8, 0, 0, 2739, 2740, 7, 11, 0, 0, 2740, 2741, 5, 51, 0, 0, 2741, 2742, 5, 50, 0, 0, 2742, 584, 1, 0, 0, 0, 2743, 2744, 7, 17, 0, 0, 2744, 2745, 7, 8, 0, 0, 2745, 2746, 7, 11, 0, 0, 2746, 2747, 5, 56, 0, 0, 2747, 586, 1, 0, 0, 0, 2748, 2749, 7, 23, 0, 0, 2749, 2750, 7, 4, 0, 0, 2750, 2751, 7, 13, 0, 0, 2751, 2752, 7, 2, 0, 0, 2752, 2753, 7, 9, 0, 0, 2753, 2754, 7, 4, 0, 0, 2754, 2755, 7, 8, 0, 0, 2755, 2756, 7, 6, 0, 0, 2756, 588, 1, 0, 0, 0, 2757, 2758, 7, 23, 0, 0, 2758, 2759, 7, 4, 0, 0, 2759, 2760, 7, 13, 0, 0, 2760, 2761, 7, 17, 0, 0, 2761, 2762, 7, 6, 0, 0, 2762, 590, 1, 0, 0, 0, 2763, 2764, 7, 23, 0, 0, 2764, 2765, 7, 4, 0, 0, 2765, 2766, 7, 13, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 6, 0, 0, 2768, 2769, 7, 0, 0, 0, 2769, 592, 1, 0, 0, 0, 2770, 2771, 7, 23, 0, 0, 2771, 2772, 7, 6, 0, 0, 2772, 2773, 7, 12, 0, 0, 2773, 2774, 7, 5, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 0, 0, 0, 2776, 2777, 7, 6, 0, 0, 2777, 594, 1, 0, 0, 0, 2778, 2779, 7, 23, 0, 0, 2779, 2780, 7, 6, 0, 0, 2780, 2781, 7, 12, 0, 0, 2781, 2782, 7, 0, 0, 0, 2782, 2783, 7, 2, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 596, 1, 0, 0, 0, 2786, 2787, 7, 23, 0, 0, 2787, 2788, 7, 2, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 21, 0, 0, 2790, 598, 1, 0, 0, 0, 2791, 2792, 7, 21, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 7, 0, 0, 2795, 600, 1, 0, 0, 0, 2796, 2797, 7, 21, 0, 0, 2797, 2798, 7, 18, 0, 0, 2798, 2799, 7, 6, 0, 0, 2799, 2800, 7, 12, 0, 0, 2800, 2801, 7, 6, 0, 0, 2801, 602, 1, 0, 0, 0, 2802, 2803, 7, 21, 0, 0, 2803, 2804, 7, 18, 0, 0, 2804, 2805, 7, 2, 0, 0, 2805, 2806, 7, 13, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 604, 1, 0, 0, 0, 2808, 2809, 7, 21, 0, 0, 2809, 2810, 7, 2, 0, 0, 2810, 2811, 7, 7, 0, 0, 2811, 2812, 7, 9, 0, 0, 2812, 2813, 7, 19, 0, 0, 2813, 2814, 7, 21, 0, 0, 2814, 606, 1, 0, 0, 0, 2815, 2816, 7, 21, 0, 0, 2816, 2817, 7, 2, 0, 0, 2817, 2818, 7, 8, 0, 0, 2818, 2819, 7, 18, 0, 0, 2819, 608, 1, 0, 0, 0, 2820, 2821, 7, 21, 0, 0, 2821, 2822, 7, 2, 0, 0, 2822, 2823, 7, 8, 0, 0, 2823, 2824, 7, 18, 0, 0, 2824, 2825, 7, 2, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 610, 1, 0, 0, 0, 2827, 2828, 7, 21, 0, 0, 2828, 2829, 7, 2, 0, 0, 2829, 2830, 7, 8, 0, 0, 2830, 2831, 7, 18, 0, 0, 2831, 2832, 7, 19, 0, 0, 2832, 2833, 7, 17, 0, 0, 2833, 2834, 7, 8, 0, 0, 2834, 612, 1, 0, 0, 0, 2835, 2836, 7, 21, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 12, 0, 0, 2838, 2839, 7, 1, 0, 0, 2839, 614, 1, 0, 0, 0, 2840, 2841, 7, 21, 0, 0, 2841, 2842, 7, 12, 0, 0, 2842, 2843, 7, 4, 0, 0, 2843, 2844, 7, 3, 0, 0, 2844, 2845, 7, 3, 0, 0, 2845, 2846, 7, 6, 0, 0, 2846, 2847, 7, 12, 0, 0, 2847, 616, 1, 0, 0, 0, 2848, 2849, 7, 21, 0, 0, 2849, 2850, 7, 12, 0, 0, 2850, 2851, 7, 2, 0, 0, 2851, 2852, 7, 8, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 618, 1, 0, 0, 0, 2854, 2855, 7, 14, 0, 0, 2855, 2856, 7, 6, 0, 0, 2856, 2857, 7, 4, 0, 0, 2857, 2858, 7, 12, 0, 0, 2858, 620, 1, 0, 0, 0, 2859, 2860, 7, 15, 0, 0, 2860, 2861, 7, 19, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 6, 0, 0, 2863, 622, 1, 0, 0, 0, 2864, 2865, 5, 61, 0, 0, 2865, 624, 1, 0, 0, 0, 2866, 2867, 5, 60, 0, 0, 2867, 2871, 5, 62, 0, 0, 2868, 2869, 5, 33, 0, 0, 2869, 2871, 5, 61, 0, 0, 2870, 2866, 1, 0, 0, 0, 2870, 2868, 1, 0, 0, 0, 2871, 626, 1, 0, 0, 0, 2872, 2873, 5, 60, 0, 0, 2873, 628, 1, 0, 0, 0, 2874, 2875, 5, 60, 0, 0, 2875, 2876, 5, 61, 0, 0, 2876, 630, 1, 0, 0, 0, 2877, 2878, 5, 62, 0, 0, 2878, 632, 1, 0, 0, 0, 2879, 2880, 5, 62, 0, 0, 2880, 2881, 5, 61, 0, 0, 2881, 634, 1, 0, 0, 0, 2882, 2883, 5, 43, 0, 0, 2883, 636, 1, 0, 0, 0, 2884, 2885, 5, 45, 0, 0, 2885, 638, 1, 0, 0, 0, 2886, 2887, 5, 42, 0, 0, 2887, 640, 1, 0, 0, 0, 2888, 2889, 5, 47, 0, 0, 2889, 642, 1, 0, 0, 0, 2890, 2891, 5, 37, 0, 0, 2891, 644, 1, 0, 0, 0, 2892, 2893, 5, 124, 0, 0, 2893, 2894, 5, 124, 0, 0, 2894, 646, 1, 0, 0, 0, 2895, 2896, 5, 63, 0, 0, 2896, 648, 1, 0, 0, 0, 2897, 2898, 5, 59, 0, 0, 2898, 650, 1, 0, 0, 0, 2899, 2905, 5, 39, 0, 0, 2900, 2904, 8, 26, 0, 0, 2901, 2902, 5, 39, 0, 0, 2902, 2904, 5, 39, 0, 0, 2903, 2900, 1, 0, 0, 0, 2903, 2901, 1, 0, 0, 0, 2904, 2907, 1, 0, 0, 0, 2905, 2903, 1, 0, 0, 0, 2905, 2906, 1, 0, 0, 0, 2906, 2908, 1, 0, 0, 0, 2907, 2905, 1, 0, 0, 0, 2908, 2909, 5, 39, 0, 0, 2909, 652, 1, 0, 0, 0, 2910, 2911, 7, 17, 0, 0, 2911, 2912, 5, 38, 0, 0, 2912, 2913, 5, 39, 0, 0, 2913, 2919, 1, 0, 0, 0, 2914, 2918, 8, 26, 0, 0, 2915, 2916, 5, 39, 0, 0, 2916, 2918, 5, 39, 0, 0, 2917, 2914, 1, 0, 0, 0, 2917, 2915, 1, 0, 0, 0, 2918, 2921, 1, 0, 0, 0, 2919, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2922, 1, 0, 0, 0, 2921, 2919, 1, 0, 0, 0, 2922, 2923, 5, 39, 0, 0, 2923, 654, 1, 0, 0, 0, 2924, 2925, 7, 22, 0, 0, 2925, 2926, 5, 39, 0, 0, 2926, 2930, 1, 0, 0, 0, 2927, 2929, 8, 26, 0, 0, 2928, 2927, 1, 0, 0, 0, 2929, 2932, 1, 0, 0, 0, 2930, 2928, 1, 0, 0, 0, 2930, 2931, 1, 0, 0, 0, 2931, 2933, 1, 0, 0, 0, 2932, 2930, 1, 0, 0, 0, 2933, 2934, 5, 39, 0, 0, 2934, 656, 1, 0, 0, 0, 2935, 2940, 3, 671, 335, 0, 2936, 2940, 3, 673, 336, 0, 2937, 2940, 3, 675, 337, 0, 2938, 2940, 3, 677, 338, 0, 2939, 2935, 1, 0, 0, 0, 2939, 2936, 1, 0, 0, 0, 2939, 2937, 1, 0, 0, 0, 2939, 2938, 1, 0, 0, 0, 2940, 658, 1, 0, 0, 0, 2941, 2942, 3, 671, 335, 0, 2942, 2944, 5, 46, 0, 0, 2943, 2945, 3, 671, 335, 0, 2944, 2943, 1, 0, 0, 0, 2944, 2945, 1, 0, 0, 0, 2945, 2949, 1, 0, 0, 0, 2946, 2947, 5, 46, 0, 0, 2947, 2949, 3, 671, 335, 0, 2948, 2941, 1, 0, 0, 0, 2948, 2946, 1, 0, 0, 0, 2949, 660, 1, 0, 0, 0, 2950, 2952, 3, 681, 340, 0, 2951, 2950, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2951, 1, 0, 0, 0, 2953, 2954, 1, 0, 0, 0, 2954, 2962, 1, 0, 0, 0, 2955, 2959, 5, 46, 0, 0, 2956, 2958, 3, 681, 340, 0, 2957, 2956, 1, 0, 0, 0, 2958, 2961, 1, 0, 0, 0, 2959, 2957, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, 2963, 1, 0, 0, 0, 2961, 2959, 1, 0, 0, 0, 2962, 2955, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 3, 679, 339, 0, 2965, 2975, 1, 0, 0, 0, 2966, 2968, 5, 46, 0, 0, 2967, 2969, 3, 681, 340, 0, 2968, 2967, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, 2970, 2968, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 2973, 3, 679, 339, 0, 2973, 2975, 1, 0, 0, 0, 2974, 2951, 1, 0, 0, 0, 2974, 2966, 1, 0, 0, 0, 2975, 662, 1, 0, 0, 0, 2976, 2979, 3, 683, 341, 0, 2977, 2979, 5, 95, 0, 0, 2978, 2976, 1, 0, 0, 0, 2978, 2977, 1, 0, 0, 0, 2979, 2985, 1, 0, 0, 0, 2980, 2984, 3, 683, 341, 0, 2981, 2984, 3, 681, 340, 0, 2982, 2984, 5, 95, 0, 0, 2983, 2980, 1, 0, 0, 0, 2983, 2981, 1, 0, 0, 0, 2983, 2982, 1, 0, 0, 0, 2984, 2987, 1, 0, 0, 0, 2985, 2983, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 664, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 2992, 3, 681, 340, 0, 2989, 2993, 3, 683, 341, 0, 2990, 2993, 3, 681, 340, 0, 2991, 2993, 5, 95, 0, 0, 2992, 2989, 1, 0, 0, 0, 2992, 2990, 1, 0, 0, 0, 2992, 2991, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2992, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 666, 1, 0, 0, 0, 2996, 3002, 5, 34, 0, 0, 2997, 3001, 8, 27, 0, 0, 2998, 2999, 5, 34, 0, 0, 2999, 3001, 5, 34, 0, 0, 3000, 2997, 1, 0, 0, 0, 3000, 2998, 1, 0, 0, 0, 3001, 3004, 1, 0, 0, 0, 3002, 3000, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3005, 1, 0, 0, 0, 3004, 3002, 1, 0, 0, 0, 3005, 3006, 5, 34, 0, 0, 3006, 668, 1, 0, 0, 0, 3007, 3013, 5, 96, 0, 0, 3008, 3012, 8, 28, 0, 0, 3009, 3010, 5, 96, 0, 0, 3010, 3012, 5, 96, 0, 0, 3011, 3008, 1, 0, 0, 0, 3011, 3009, 1, 0, 0, 0, 3012, 3015, 1, 0, 0, 0, 3013, 3011, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3016, 1, 0, 0, 0, 3015, 3013, 1, 0, 0, 0, 3016, 3017, 5, 96, 0, 0, 3017, 670, 1, 0, 0, 0, 3018, 3025, 3, 681, 340, 0, 3019, 3021, 5, 95, 0, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3024, 3, 681, 340, 0, 3023, 3020, 1, 0, 0, 0, 3024, 3027, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3025, 3026, 1, 0, 0, 0, 3026, 672, 1, 0, 0, 0, 3027, 3025, 1, 0, 0, 0, 3028, 3029, 5, 48, 0, 0, 3029, 3030, 7, 22, 0, 0, 3030, 3038, 1, 0, 0, 0, 3031, 3033, 5, 95, 0, 0, 3032, 3031, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3036, 1, 0, 0, 0, 3034, 3037, 3, 681, 340, 0, 3035, 3037, 7, 29, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3035, 1, 0, 0, 0, 3037, 3039, 1, 0, 0, 0, 3038, 3032, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3038, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 674, 1, 0, 0, 0, 3042, 3043, 5, 48, 0, 0, 3043, 3044, 7, 19, 0, 0, 3044, 3049, 1, 0, 0, 0, 3045, 3047, 5, 95, 0, 0, 3046, 3045, 1, 0, 0, 0, 3046, 3047, 1, 0, 0, 0, 3047, 3048, 1, 0, 0, 0, 3048, 3050, 7, 30, 0, 0, 3049, 3046, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3049, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 676, 1, 0, 0, 0, 3053, 3054, 5, 48, 0, 0, 3054, 3055, 7, 5, 0, 0, 3055, 3060, 1, 0, 0, 0, 3056, 3058, 5, 95, 0, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3061, 7, 31, 0, 0, 3060, 3057, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 678, 1, 0, 0, 0, 3064, 3066, 7, 6, 0, 0, 3065, 3067, 7, 32, 0, 0, 3066, 3065, 1, 0, 0, 0, 3066, 3067, 1, 0, 0, 0, 3067, 3069, 1, 0, 0, 0, 3068, 3070, 3, 681, 340, 0, 3069, 3068, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3069, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 680, 1, 0, 0, 0, 3073, 3074, 7, 33, 0, 0, 3074, 682, 1, 0, 0, 0, 3075, 3076, 7, 34, 0, 0, 3076, 684, 1, 0, 0, 0, 3077, 3078, 5, 45, 0, 0, 3078, 3079, 5, 45, 0, 0, 3079, 3083, 1, 0, 0, 0, 3080, 3082, 8, 35, 0, 0, 3081, 3080, 1, 0, 0, 0, 3082, 3085, 1, 0, 0, 0, 3083, 3081, 1, 0, 0, 0, 3083, 3084, 1, 0, 0, 0, 3084, 3087, 1, 0, 0, 0, 3085, 3083, 1, 0, 0, 0, 3086, 3088, 5, 13, 0, 0, 3087, 3086, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3090, 1, 0, 0, 0, 3089, 3091, 5, 10, 0, 0, 3090, 3089, 1, 0, 0, 0, 3090, 3091, 1, 0, 0, 0, 3091, 3092, 1, 0, 0, 0, 3092, 3093, 6, 342, 0, 0, 3093, 686, 1, 0, 0, 0, 3094, 3095, 5, 47, 0, 0, 3095, 3096, 5, 42, 0, 0, 3096, 3100, 1, 0, 0, 0, 3097, 3099, 9, 0, 0, 0, 3098, 3097, 1, 0, 0, 0, 3099, 3102, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3100, 3098, 1, 0, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3100, 1, 0, 0, 0, 3103, 3104, 5, 42, 0, 0, 3104, 3105, 5, 47, 0, 0, 3105, 3106, 1, 0, 0, 0, 3106, 3107, 6, 343, 0, 0, 3107, 688, 1, 0, 0, 0, 3108, 3110, 7, 36, 0, 0, 3109, 3108, 1, 0, 0, 0, 3110, 3111, 1, 0, 0, 0, 3111, 3109, 1, 0, 0, 0, 3111, 3112, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 3114, 6, 344, 0, 0, 3114, 690, 1, 0, 0, 0, 3115, 3116, 9, 0, 0, 0, 3116, 692, 1, 0, 0, 0, 40, 0, 2870, 2903, 2905, 2917, 2919, 2930, 2939, 2944, 2948, 2953, 2959, 2962, 2970, 2974, 2978, 2983, 2985, 2992, 2994, 3000, 3002, 3011, 3013, 3020, 3025, 3032, 3036, 3040, 3046, 3051, 3057, 3062, 3066, 3071, 3083, 3087, 3090, 3100, 3111, 1, 0, 1, 0] \ No newline at end of file diff --git a/src/lib/trino/TrinoSqlLexer.tokens b/src/lib/trino/TrinoSqlLexer.tokens index 5cdf889b..88570b2a 100644 --- a/src/lib/trino/TrinoSqlLexer.tokens +++ b/src/lib/trino/TrinoSqlLexer.tokens @@ -14,524 +14,650 @@ T__12=13 T__13=14 T__14=15 T__15=16 -KW_ADD=17 -KW_ADMIN=18 -KW_AFTER=19 -KW_ALL=20 -KW_ALTER=21 -KW_ANALYZE=22 -KW_AND=23 -KW_ANY=24 -KW_ARRAY=25 -KW_AS=26 -KW_ASC=27 -KW_AT=28 -KW_AUTHORIZATION=29 -KW_BERNOULLI=30 -KW_BETWEEN=31 -KW_BY=32 -KW_CALL=33 -KW_CASCADE=34 -KW_CASE=35 -KW_CAST=36 -KW_CATALOGS=37 -KW_COLUMN=38 -KW_COLUMNS=39 -KW_COMMENT=40 -KW_COMMIT=41 -KW_COMMITTED=42 -KW_CONSTRAINT=43 -KW_CREATE=44 -KW_CROSS=45 -KW_CUBE=46 -KW_CURRENT=47 -KW_CURRENT_CATALOG=48 -KW_CURRENT_DATE=49 -KW_CURRENT_PATH=50 -KW_CURRENT_ROLE=51 -KW_CURRENT_SCHEMA=52 -KW_CURRENT_TIME=53 -KW_CURRENT_TIMESTAMP=54 -KW_CURRENT_USER=55 -KW_DATA=56 -KW_DATE=57 -KW_DAY=58 -KW_DEFAULT=59 -KW_DEALLOCATE=60 -KW_DEFINER=61 -KW_DELETE=62 -KW_DESC=63 -KW_DESCRIBE=64 -KW_DEFINE=65 -KW_DISTINCT=66 -KW_DISTRIBUTED=67 -KW_DOUBLE=68 -KW_DROP=69 -KW_ELSE=70 -KW_EMPTY=71 -KW_END=72 -KW_ESCAPE=73 -KW_EXCEPT=74 -KW_EXCLUDING=75 -KW_EXECUTE=76 -KW_EXISTS=77 -KW_EXPLAIN=78 -KW_EXTRACT=79 -KW_FALSE=80 -KW_FETCH=81 -KW_FILTER=82 -KW_FINAL=83 -KW_FIRST=84 -KW_FOLLOWING=85 -KW_FOR=86 -KW_FORMAT=87 -KW_FROM=88 -KW_FULL=89 -KW_FUNCTIONS=90 -KW_GRANT=91 -KW_GRANTED=92 -KW_GRANTS=93 -KW_DENY=94 -KW_GRAPHVIZ=95 -KW_GROUP=96 -KW_GROUPING=97 -KW_GROUPS=98 -KW_HAVING=99 -KW_HOUR=100 -KW_IF=101 -KW_IGNORE=102 -KW_IN=103 -KW_INCLUDING=104 -KW_INITIAL=105 -KW_INNER=106 -KW_INPUT=107 -KW_INSERT=108 -KW_INTERSECT=109 -KW_INTERVAL=110 -KW_INTO=111 -KW_INVOKER=112 -KW_IO=113 -KW_IS=114 -KW_ISOLATION=115 -KW_JOIN=116 -KW_JSON=117 -KW_LAST=118 -KW_LATERAL=119 -KW_LEFT=120 -KW_LEVEL=121 -KW_LIKE=122 -KW_LIMIT=123 -KW_LOCAL=124 -KW_LOCALTIME=125 -KW_LOCALTIMESTAMP=126 -KW_LOGICAL=127 -KW_MAP=128 -KW_MATCH=129 -KW_MATCHED=130 -KW_MATCHES=131 -KW_MATCH_RECOGNIZE=132 -KW_MATERIALIZED=133 -KW_MEASURES=134 -KW_MERGE=135 -KW_MINUTE=136 -KW_MONTH=137 -KW_NATURAL=138 -KW_NEXT=139 -KW_NFC=140 -KW_NFD=141 -KW_NFKC=142 -KW_NFKD=143 -KW_NO=144 -KW_NONE=145 -KW_NORMALIZE=146 -KW_NOT=147 -KW_NULL=148 -KW_NULLIF=149 -KW_NULLS=150 -KW_OFFSET=151 -KW_OMIT=152 -KW_ON=153 -KW_ONE=154 -KW_ONLY=155 -KW_OPTION=156 -KW_OR=157 -KW_ORDER=158 -KW_ORDINALITY=159 -KW_OUTER=160 -KW_OUTPUT=161 -KW_OVER=162 -KW_PARTITION=163 -KW_PARTITIONS=164 -KW_PAST=165 -KW_PATH=166 -KW_PATTERN=167 -KW_PER=168 -KW_PERMUTE=169 -KW_POSITION=170 -KW_PRECEDING=171 -KW_PRECISION=172 -KW_PREPARE=173 -KW_PRIVILEGES=174 -KW_PROPERTIES=175 -KW_RANGE=176 -KW_READ=177 -KW_RECURSIVE=178 -KW_REFRESH=179 -KW_RENAME=180 -KW_REPEATABLE=181 -KW_REPLACE=182 -KW_RESET=183 -KW_RESPECT=184 -KW_RESTRICT=185 -KW_REVOKE=186 -KW_RIGHT=187 -KW_ROLE=188 -KW_ROLES=189 -KW_ROLLBACK=190 -KW_ROLLUP=191 -KW_ROW=192 -KW_ROWS=193 -KW_RUNNING=194 -KW_SCHEMA=195 -KW_SCHEMAS=196 -KW_SECOND=197 -KW_SECURITY=198 -KW_SEEK=199 -KW_SELECT=200 -KW_SERIALIZABLE=201 -KW_SESSION=202 -KW_SET=203 -KW_SETS=204 -KW_SHOW=205 -KW_SOME=206 -KW_START=207 -KW_STATS=208 -KW_SUBSET=209 -KW_SUBSTRING=210 -KW_SYSTEM=211 -KW_TABLE=212 -KW_TABLES=213 -KW_TABLESAMPLE=214 -KW_TEXT=215 -KW_THEN=216 -KW_TIES=217 -KW_TIME=218 -KW_TIMESTAMP=219 -KW_TO=220 -KW_TRANSACTION=221 -KW_TRUNCATE=222 -KW_TRUE=223 -KW_TRY_CAST=224 -KW_TYPE=225 -KW_UESCAPE=226 -KW_UNBOUNDED=227 -KW_UNCOMMITTED=228 -KW_UNION=229 -KW_UNMATCHED=230 -KW_UNNEST=231 -KW_UPDATE=232 -KW_USE=233 -KW_USER=234 -KW_USING=235 -KW_VALIDATE=236 -KW_VALUES=237 -KW_VERBOSE=238 -KW_VIEW=239 -KW_WHEN=240 -KW_WHERE=241 -KW_WINDOW=242 -KW_WITH=243 -KW_WITHOUT=244 -KW_WORK=245 -KW_WRITE=246 -KW_YEAR=247 -KW_ZONE=248 -EQ=249 -NEQ=250 -LT=251 -LTE=252 -GT=253 -GTE=254 -PLUS=255 -MINUS=256 -ASTERISK=257 -SLASH=258 -PERCENT=259 -CONCAT=260 -QUESTION_MARK=261 -STRING=262 -UNICODE_STRING=263 -BINARY_LITERAL=264 -INTEGER_VALUE=265 -DECIMAL_VALUE=266 -DOUBLE_VALUE=267 -IDENTIFIER=268 -DIGIT_IDENTIFIER=269 -QUOTED_IDENTIFIER=270 -BACKQUOTED_IDENTIFIER=271 -SEMICOLON=272 -SIMPLE_COMMENT=273 -BRACKETED_COMMENT=274 -WS=275 -UNRECOGNIZED=276 +T__16=17 +KW_ABSENT=18 +KW_ADD=19 +KW_ADMIN=20 +KW_AFTER=21 +KW_ALL=22 +KW_ALTER=23 +KW_ANALYZE=24 +KW_AND=25 +KW_ANY=26 +KW_ARRAY=27 +KW_AS=28 +KW_ASC=29 +KW_AT=30 +KW_AUTHORIZATION=31 +KW_BEGIN=32 +KW_BERNOULLI=33 +KW_BETWEEN=34 +KW_BOTH=35 +KW_BY=36 +KW_CALL=37 +KW_CALLED=38 +KW_CASCADE=39 +KW_CASE=40 +KW_CAST=41 +KW_CATALOG=42 +KW_CATALOGS=43 +KW_COLUMN=44 +KW_COLUMNS=45 +KW_COMMENT=46 +KW_COMMIT=47 +KW_COMMITTED=48 +KW_CONDITIONAL=49 +KW_CONSTRAINT=50 +KW_COUNT=51 +KW_COPARTITION=52 +KW_CREATE=53 +KW_CROSS=54 +KW_CUBE=55 +KW_CURRENT=56 +KW_CURRENT_CATALOG=57 +KW_CURRENT_DATE=58 +KW_CURRENT_PATH=59 +KW_CURRENT_ROLE=60 +KW_CURRENT_SCHEMA=61 +KW_CURRENT_TIME=62 +KW_CURRENT_TIMESTAMP=63 +KW_CURRENT_USER=64 +KW_DATA=65 +KW_DATE=66 +KW_DAY=67 +KW_DEALLOCATE=68 +KW_DECLARE=69 +KW_DEFAULT=70 +KW_DEFINE=71 +KW_DEFINER=72 +KW_DELETE=73 +KW_DENY=74 +KW_DESC=75 +KW_DESCRIBE=76 +KW_DESCRIPTOR=77 +KW_DETERMINISTIC=78 +KW_DISTINCT=79 +KW_DISTRIBUTED=80 +KW_DO=81 +KW_DOUBLE=82 +KW_DROP=83 +KW_ELSE=84 +KW_EMPTY=85 +KW_ELSEIF=86 +KW_ENCODING=87 +KW_END=88 +KW_ERROR=89 +KW_ESCAPE=90 +KW_EXCEPT=91 +KW_EXCLUDING=92 +KW_EXECUTE=93 +KW_EXISTS=94 +KW_EXPLAIN=95 +KW_EXTRACT=96 +KW_FALSE=97 +KW_FETCH=98 +KW_FILTER=99 +KW_FINAL=100 +KW_FIRST=101 +KW_FOLLOWING=102 +KW_FOR=103 +KW_FORMAT=104 +KW_FROM=105 +KW_FULL=106 +KW_FUNCTION=107 +KW_FUNCTIONS=108 +KW_GRACE=109 +KW_GRANT=110 +KW_GRANTED=111 +KW_GRANTS=112 +KW_GRAPHVIZ=113 +KW_GROUP=114 +KW_GROUPING=115 +KW_GROUPS=116 +KW_HAVING=117 +KW_HOUR=118 +KW_IF=119 +KW_IGNORE=120 +KW_IMMEDIATE=121 +KW_IN=122 +KW_INCLUDING=123 +KW_INITIAL=124 +KW_INNER=125 +KW_INPUT=126 +KW_INSERT=127 +KW_INTERSECT=128 +KW_INTERVAL=129 +KW_INTO=130 +KW_INVOKER=131 +KW_IO=132 +KW_IS=133 +KW_ISOLATION=134 +KW_ITERATE=135 +KW_JOIN=136 +KW_JSON=137 +KW_JSON_ARRAY=138 +KW_JSON_EXISTS=139 +KW_JSON_OBJECT=140 +KW_JSON_QUERY=141 +KW_JSON_TABLE=142 +KW_JSON_VALUE=143 +KW_KEEP=144 +KW_KEY=145 +KW_KEYS=146 +KW_LANGUAGE=147 +KW_LAST=148 +KW_LATERAL=149 +KW_LEADING=150 +KW_LEAVE=151 +KW_LEFT=152 +KW_LEVEL=153 +KW_LIKE=154 +KW_LIMIT=155 +KW_LISTAGG=156 +KW_LOCAL=157 +KW_LOCALTIME=158 +KW_LOCALTIMESTAMP=159 +KW_LOGICAL=160 +KW_LOOP=161 +KW_MAP=162 +KW_MATCH=163 +KW_MATCHED=164 +KW_MATCHES=165 +KW_MATCH_RECOGNIZE=166 +KW_MATERIALIZED=167 +KW_MEASURES=168 +KW_MERGE=169 +KW_MINUTE=170 +KW_MONTH=171 +KW_NATURAL=172 +KW_NESTED=173 +KW_NEXT=174 +KW_NFC=175 +KW_NFD=176 +KW_NFKC=177 +KW_NFKD=178 +KW_NO=179 +KW_NONE=180 +KW_NORMALIZE=181 +KW_NOT=182 +KW_NULL=183 +KW_NULLIF=184 +KW_NULLS=185 +KW_OBJECT=186 +KW_OF=187 +KW_OFFSET=188 +KW_OMIT=189 +KW_ON=190 +KW_ONE=191 +KW_ONLY=192 +KW_OPTION=193 +KW_OR=194 +KW_ORDER=195 +KW_ORDINALITY=196 +KW_OUTER=197 +KW_OUTPUT=198 +KW_OVER=199 +KW_OVERFLOW=200 +KW_PARTITION=201 +KW_PARTITIONS=202 +KW_PASSING=203 +KW_PAST=204 +KW_PATH=205 +KW_PATTERN=206 +KW_PER=207 +KW_PERIOD=208 +KW_PERMUTE=209 +KW_PLAN=210 +KW_POSITION=211 +KW_PRECEDING=212 +KW_PRECISION=213 +KW_PREPARE=214 +KW_PRIVILEGES=215 +KW_PROPERTIES=216 +KW_PRUNE=217 +KW_QUOTES=218 +KW_RANGE=219 +KW_READ=220 +KW_RECURSIVE=221 +KW_REFRESH=222 +KW_RENAME=223 +KW_REPEAT=224 +KW_REPEATABLE=225 +KW_REPLACE=226 +KW_RESET=227 +KW_RESPECT=228 +KW_RESTRICT=229 +KW_RETURN=230 +KW_RETURNING=231 +KW_RETURNS=232 +KW_REVOKE=233 +KW_RIGHT=234 +KW_ROLE=235 +KW_ROLES=236 +KW_ROLLBACK=237 +KW_ROLLUP=238 +KW_ROW=239 +KW_ROWS=240 +KW_RUNNING=241 +KW_SCALAR=242 +KW_SCHEMA=243 +KW_SCHEMAS=244 +KW_SECOND=245 +KW_SECURITY=246 +KW_SEEK=247 +KW_SELECT=248 +KW_SERIALIZABLE=249 +KW_SESSION=250 +KW_SET=251 +KW_SETS=252 +KW_SHOW=253 +KW_SOME=254 +KW_START=255 +KW_STATS=256 +KW_SUBSET=257 +KW_SUBSTRING=258 +KW_SYSTEM=259 +KW_TABLE=260 +KW_TABLES=261 +KW_TABLESAMPLE=262 +KW_TEXT=263 +KW_TEXT_STRING=264 +KW_THEN=265 +KW_TIES=266 +KW_TIME=267 +KW_TIMESTAMP=268 +KW_TO=269 +KW_TRAILING=270 +KW_TRANSACTION=271 +KW_TRIM=272 +KW_TRUE=273 +KW_TRUNCATE=274 +KW_TRY_CAST=275 +KW_TYPE=276 +KW_UESCAPE=277 +KW_UNBOUNDED=278 +KW_UNCOMMITTED=279 +KW_UNCONDITIONAL=280 +KW_UNION=281 +KW_UNIQUE=282 +KW_UNKNOWN=283 +KW_UNMATCHED=284 +KW_UNNEST=285 +KW_UNTIL=286 +KW_UPDATE=287 +KW_USE=288 +KW_USER=289 +KW_USING=290 +KW_UTF16=291 +KW_UTF32=292 +KW_UTF8=293 +KW_VALIDATE=294 +KW_VALUE=295 +KW_VALUES=296 +KW_VERBOSE=297 +KW_VERSION=298 +KW_VIEW=299 +KW_WHEN=300 +KW_WHERE=301 +KW_WHILE=302 +KW_WINDOW=303 +KW_WITH=304 +KW_WITHIN=305 +KW_WITHOUT=306 +KW_WORK=307 +KW_WRAPPER=308 +KW_WRITE=309 +KW_YEAR=310 +KW_ZONE=311 +EQ=312 +NEQ=313 +LT=314 +LTE=315 +GT=316 +GTE=317 +PLUS=318 +MINUS=319 +ASTERISK=320 +SLASH=321 +PERCENT=322 +CONCAT=323 +QUESTION_MARK=324 +SEMICOLON=325 +STRING=326 +UNICODE_STRING=327 +BINARY_LITERAL=328 +INTEGER_VALUE=329 +DECIMAL_VALUE=330 +DOUBLE_VALUE=331 +IDENTIFIER=332 +DIGIT_IDENTIFIER=333 +QUOTED_IDENTIFIER=334 +BACKQUOTED_IDENTIFIER=335 +SIMPLE_COMMENT=336 +BRACKETED_COMMENT=337 +WS=338 +UNRECOGNIZED=339 '('=1 ')'=2 ','=3 '.'=4 'SKIP'=5 -'->'=6 -'['=7 -']'=8 -'|'=9 -'^'=10 -'$'=11 -'{-'=12 -'-}'=13 -'{'=14 -'}'=15 -'=>'=16 -'ADD'=17 -'ADMIN'=18 -'AFTER'=19 -'ALL'=20 -'ALTER'=21 -'ANALYZE'=22 -'AND'=23 -'ANY'=24 -'ARRAY'=25 -'AS'=26 -'ASC'=27 -'AT'=28 -'AUTHORIZATION'=29 -'BERNOULLI'=30 -'BETWEEN'=31 -'BY'=32 -'CALL'=33 -'CASCADE'=34 -'CASE'=35 -'CAST'=36 -'CATALOGS'=37 -'COLUMN'=38 -'COLUMNS'=39 -'COMMENT'=40 -'COMMIT'=41 -'COMMITTED'=42 -'CONSTRAINT'=43 -'CREATE'=44 -'CROSS'=45 -'CUBE'=46 -'CURRENT'=47 -'CURRENT_CATALOG'=48 -'CURRENT_DATE'=49 -'CURRENT_PATH'=50 -'CURRENT_ROLE'=51 -'CURRENT_SCHEMA'=52 -'CURRENT_TIME'=53 -'CURRENT_TIMESTAMP'=54 -'CURRENT_USER'=55 -'DATA'=56 -'DATE'=57 -'DAY'=58 -'DEFAULT'=59 -'DEALLOCATE'=60 -'DEFINER'=61 -'DELETE'=62 -'DESC'=63 -'DESCRIBE'=64 -'DEFINE'=65 -'DISTINCT'=66 -'DISTRIBUTED'=67 -'DOUBLE'=68 -'DROP'=69 -'ELSE'=70 -'EMPTY'=71 -'END'=72 -'ESCAPE'=73 -'EXCEPT'=74 -'EXCLUDING'=75 -'EXECUTE'=76 -'EXISTS'=77 -'EXPLAIN'=78 -'EXTRACT'=79 -'FALSE'=80 -'FETCH'=81 -'FILTER'=82 -'FINAL'=83 -'FIRST'=84 -'FOLLOWING'=85 -'FOR'=86 -'FORMAT'=87 -'FROM'=88 -'FULL'=89 -'FUNCTIONS'=90 -'GRANT'=91 -'GRANTED'=92 -'GRANTS'=93 -'DENY'=94 -'GRAPHVIZ'=95 -'GROUP'=96 -'GROUPING'=97 -'GROUPS'=98 -'HAVING'=99 -'HOUR'=100 -'IF'=101 -'IGNORE'=102 -'IN'=103 -'INCLUDING'=104 -'INITIAL'=105 -'INNER'=106 -'INPUT'=107 -'INSERT'=108 -'INTERSECT'=109 -'INTERVAL'=110 -'INTO'=111 -'INVOKER'=112 -'IO'=113 -'IS'=114 -'ISOLATION'=115 -'JOIN'=116 -'JSON'=117 -'LAST'=118 -'LATERAL'=119 -'LEFT'=120 -'LEVEL'=121 -'LIKE'=122 -'LIMIT'=123 -'LOCAL'=124 -'LOCALTIME'=125 -'LOCALTIMESTAMP'=126 -'LOGICAL'=127 -'MAP'=128 -'MATCH'=129 -'MATCHED'=130 -'MATCHES'=131 -'MATCH_RECOGNIZE'=132 -'MATERIALIZED'=133 -'MEASURES'=134 -'MERGE'=135 -'MINUTE'=136 -'MONTH'=137 -'NATURAL'=138 -'NEXT'=139 -'NFC'=140 -'NFD'=141 -'NFKC'=142 -'NFKD'=143 -'NO'=144 -'NONE'=145 -'NORMALIZE'=146 -'NOT'=147 -'NULL'=148 -'NULLIF'=149 -'NULLS'=150 -'OFFSET'=151 -'OMIT'=152 -'ON'=153 -'ONE'=154 -'ONLY'=155 -'OPTION'=156 -'OR'=157 -'ORDER'=158 -'ORDINALITY'=159 -'OUTER'=160 -'OUTPUT'=161 -'OVER'=162 -'PARTITION'=163 -'PARTITIONS'=164 -'PAST'=165 -'PATH'=166 -'PATTERN'=167 -'PER'=168 -'PERMUTE'=169 -'POSITION'=170 -'PRECEDING'=171 -'PRECISION'=172 -'PREPARE'=173 -'PRIVILEGES'=174 -'PROPERTIES'=175 -'RANGE'=176 -'READ'=177 -'RECURSIVE'=178 -'REFRESH'=179 -'RENAME'=180 -'REPEATABLE'=181 -'REPLACE'=182 -'RESET'=183 -'RESPECT'=184 -'RESTRICT'=185 -'REVOKE'=186 -'RIGHT'=187 -'ROLE'=188 -'ROLES'=189 -'ROLLBACK'=190 -'ROLLUP'=191 -'ROW'=192 -'ROWS'=193 -'RUNNING'=194 -'SCHEMA'=195 -'SCHEMAS'=196 -'SECOND'=197 -'SECURITY'=198 -'SEEK'=199 -'SELECT'=200 -'SERIALIZABLE'=201 -'SESSION'=202 -'SET'=203 -'SETS'=204 -'SHOW'=205 -'SOME'=206 -'START'=207 -'STATS'=208 -'SUBSET'=209 -'SUBSTRING'=210 -'SYSTEM'=211 -'TABLE'=212 -'TABLES'=213 -'TABLESAMPLE'=214 -'TEXT'=215 -'THEN'=216 -'TIES'=217 -'TIME'=218 -'TIMESTAMP'=219 -'TO'=220 -'TRANSACTION'=221 -'TRUNCATE'=222 -'TRUE'=223 -'TRY_CAST'=224 -'TYPE'=225 -'UESCAPE'=226 -'UNBOUNDED'=227 -'UNCOMMITTED'=228 -'UNION'=229 -'UNMATCHED'=230 -'UNNEST'=231 -'UPDATE'=232 -'USE'=233 -'USER'=234 -'USING'=235 -'VALIDATE'=236 -'VALUES'=237 -'VERBOSE'=238 -'VIEW'=239 -'WHEN'=240 -'WHERE'=241 -'WINDOW'=242 -'WITH'=243 -'WITHOUT'=244 -'WORK'=245 -'WRITE'=246 -'YEAR'=247 -'ZONE'=248 -'='=249 -'<'=251 -'<='=252 -'>'=253 -'>='=254 -'+'=255 -'-'=256 -'*'=257 -'/'=258 -'%'=259 -'||'=260 -'?'=261 -';'=272 +'=>'=6 +'->'=7 +'['=8 +']'=9 +':'=10 +'|'=11 +'^'=12 +'$'=13 +'{-'=14 +'-}'=15 +'{'=16 +'}'=17 +'ABSENT'=18 +'ADD'=19 +'ADMIN'=20 +'AFTER'=21 +'ALL'=22 +'ALTER'=23 +'ANALYZE'=24 +'AND'=25 +'ANY'=26 +'ARRAY'=27 +'AS'=28 +'ASC'=29 +'AT'=30 +'AUTHORIZATION'=31 +'BEGIN'=32 +'BERNOULLI'=33 +'BETWEEN'=34 +'BOTH'=35 +'BY'=36 +'CALL'=37 +'CALLED'=38 +'CASCADE'=39 +'CASE'=40 +'CAST'=41 +'CATALOG'=42 +'CATALOGS'=43 +'COLUMN'=44 +'COLUMNS'=45 +'COMMENT'=46 +'COMMIT'=47 +'COMMITTED'=48 +'CONDITIONAL'=49 +'CONSTRAINT'=50 +'COUNT'=51 +'COPARTITION'=52 +'CREATE'=53 +'CROSS'=54 +'CUBE'=55 +'CURRENT'=56 +'CURRENT_CATALOG'=57 +'CURRENT_DATE'=58 +'CURRENT_PATH'=59 +'CURRENT_ROLE'=60 +'CURRENT_SCHEMA'=61 +'CURRENT_TIME'=62 +'CURRENT_TIMESTAMP'=63 +'CURRENT_USER'=64 +'DATA'=65 +'DATE'=66 +'DAY'=67 +'DEALLOCATE'=68 +'DECLARE'=69 +'DEFAULT'=70 +'DEFINE'=71 +'DEFINER'=72 +'DELETE'=73 +'DENY'=74 +'DESC'=75 +'DESCRIBE'=76 +'DESCRIPTOR'=77 +'DETERMINISTIC'=78 +'DISTINCT'=79 +'DISTRIBUTED'=80 +'DO'=81 +'DOUBLE'=82 +'DROP'=83 +'ELSE'=84 +'EMPTY'=85 +'ELSEIF'=86 +'ENCODING'=87 +'END'=88 +'ERROR'=89 +'ESCAPE'=90 +'EXCEPT'=91 +'EXCLUDING'=92 +'EXECUTE'=93 +'EXISTS'=94 +'EXPLAIN'=95 +'EXTRACT'=96 +'FALSE'=97 +'FETCH'=98 +'FILTER'=99 +'FINAL'=100 +'FIRST'=101 +'FOLLOWING'=102 +'FOR'=103 +'FORMAT'=104 +'FROM'=105 +'FULL'=106 +'FUNCTION'=107 +'FUNCTIONS'=108 +'GRACE'=109 +'GRANT'=110 +'GRANTED'=111 +'GRANTS'=112 +'GRAPHVIZ'=113 +'GROUP'=114 +'GROUPING'=115 +'GROUPS'=116 +'HAVING'=117 +'HOUR'=118 +'IF'=119 +'IGNORE'=120 +'IMMEDIATE'=121 +'IN'=122 +'INCLUDING'=123 +'INITIAL'=124 +'INNER'=125 +'INPUT'=126 +'INSERT'=127 +'INTERSECT'=128 +'INTERVAL'=129 +'INTO'=130 +'INVOKER'=131 +'IO'=132 +'IS'=133 +'ISOLATION'=134 +'ITERATE'=135 +'JOIN'=136 +'JSON'=137 +'JSON_ARRAY'=138 +'JSON_EXISTS'=139 +'JSON_OBJECT'=140 +'JSON_QUERY'=141 +'JSON_TABLE'=142 +'JSON_VALUE'=143 +'KEEP'=144 +'KEY'=145 +'KEYS'=146 +'LANGUAGE'=147 +'LAST'=148 +'LATERAL'=149 +'LEADING'=150 +'LEAVE'=151 +'LEFT'=152 +'LEVEL'=153 +'LIKE'=154 +'LIMIT'=155 +'LISTAGG'=156 +'LOCAL'=157 +'LOCALTIME'=158 +'LOCALTIMESTAMP'=159 +'LOGICAL'=160 +'LOOP'=161 +'MAP'=162 +'MATCH'=163 +'MATCHED'=164 +'MATCHES'=165 +'MATCH_RECOGNIZE'=166 +'MATERIALIZED'=167 +'MEASURES'=168 +'MERGE'=169 +'MINUTE'=170 +'MONTH'=171 +'NATURAL'=172 +'NESTED'=173 +'NEXT'=174 +'NFC'=175 +'NFD'=176 +'NFKC'=177 +'NFKD'=178 +'NO'=179 +'NONE'=180 +'NORMALIZE'=181 +'NOT'=182 +'NULL'=183 +'NULLIF'=184 +'NULLS'=185 +'OBJECT'=186 +'OF'=187 +'OFFSET'=188 +'OMIT'=189 +'ON'=190 +'ONE'=191 +'ONLY'=192 +'OPTION'=193 +'OR'=194 +'ORDER'=195 +'ORDINALITY'=196 +'OUTER'=197 +'OUTPUT'=198 +'OVER'=199 +'OVERFLOW'=200 +'PARTITION'=201 +'PARTITIONS'=202 +'PASSING'=203 +'PAST'=204 +'PATH'=205 +'PATTERN'=206 +'PER'=207 +'PERIOD'=208 +'PERMUTE'=209 +'PLAN'=210 +'POSITION'=211 +'PRECEDING'=212 +'PRECISION'=213 +'PREPARE'=214 +'PRIVILEGES'=215 +'PROPERTIES'=216 +'PRUNE'=217 +'QUOTES'=218 +'RANGE'=219 +'READ'=220 +'RECURSIVE'=221 +'REFRESH'=222 +'RENAME'=223 +'REPEAT'=224 +'REPEATABLE'=225 +'REPLACE'=226 +'RESET'=227 +'RESPECT'=228 +'RESTRICT'=229 +'RETURN'=230 +'RETURNING'=231 +'RETURNS'=232 +'REVOKE'=233 +'RIGHT'=234 +'ROLE'=235 +'ROLES'=236 +'ROLLBACK'=237 +'ROLLUP'=238 +'ROW'=239 +'ROWS'=240 +'RUNNING'=241 +'SCALAR'=242 +'SCHEMA'=243 +'SCHEMAS'=244 +'SECOND'=245 +'SECURITY'=246 +'SEEK'=247 +'SELECT'=248 +'SERIALIZABLE'=249 +'SESSION'=250 +'SET'=251 +'SETS'=252 +'SHOW'=253 +'SOME'=254 +'START'=255 +'STATS'=256 +'SUBSET'=257 +'SUBSTRING'=258 +'SYSTEM'=259 +'TABLE'=260 +'TABLES'=261 +'TABLESAMPLE'=262 +'TEXT'=263 +'STRING'=264 +'THEN'=265 +'TIES'=266 +'TIME'=267 +'TIMESTAMP'=268 +'TO'=269 +'TRAILING'=270 +'TRANSACTION'=271 +'TRIM'=272 +'TRUE'=273 +'TRUNCATE'=274 +'TRY_CAST'=275 +'TYPE'=276 +'UESCAPE'=277 +'UNBOUNDED'=278 +'UNCOMMITTED'=279 +'UNCONDITIONAL'=280 +'UNION'=281 +'UNIQUE'=282 +'UNKNOWN'=283 +'UNMATCHED'=284 +'UNNEST'=285 +'UNTIL'=286 +'UPDATE'=287 +'USE'=288 +'USER'=289 +'USING'=290 +'UTF16'=291 +'UTF32'=292 +'UTF8'=293 +'VALIDATE'=294 +'VALUE'=295 +'VALUES'=296 +'VERBOSE'=297 +'VERSION'=298 +'VIEW'=299 +'WHEN'=300 +'WHERE'=301 +'WHILE'=302 +'WINDOW'=303 +'WITH'=304 +'WITHIN'=305 +'WITHOUT'=306 +'WORK'=307 +'WRAPPER'=308 +'WRITE'=309 +'YEAR'=310 +'ZONE'=311 +'='=312 +'<'=314 +'<='=315 +'>'=316 +'>='=317 +'+'=318 +'-'=319 +'*'=320 +'/'=321 +'%'=322 +'||'=323 +'?'=324 +';'=325 diff --git a/src/lib/trino/TrinoSqlLexer.ts b/src/lib/trino/TrinoSqlLexer.ts index b0489daa..02d6cb1e 100644 --- a/src/lib/trino/TrinoSqlLexer.ts +++ b/src/lib/trino/TrinoSqlLexer.ts @@ -26,370 +26,456 @@ export class TrinoSqlLexer extends antlr.Lexer { public static readonly T__13 = 14; public static readonly T__14 = 15; public static readonly T__15 = 16; - public static readonly KW_ADD = 17; - public static readonly KW_ADMIN = 18; - public static readonly KW_AFTER = 19; - public static readonly KW_ALL = 20; - public static readonly KW_ALTER = 21; - public static readonly KW_ANALYZE = 22; - public static readonly KW_AND = 23; - public static readonly KW_ANY = 24; - public static readonly KW_ARRAY = 25; - public static readonly KW_AS = 26; - public static readonly KW_ASC = 27; - public static readonly KW_AT = 28; - public static readonly KW_AUTHORIZATION = 29; - public static readonly KW_BERNOULLI = 30; - public static readonly KW_BETWEEN = 31; - public static readonly KW_BY = 32; - public static readonly KW_CALL = 33; - public static readonly KW_CASCADE = 34; - public static readonly KW_CASE = 35; - public static readonly KW_CAST = 36; - public static readonly KW_CATALOGS = 37; - public static readonly KW_COLUMN = 38; - public static readonly KW_COLUMNS = 39; - public static readonly KW_COMMENT = 40; - public static readonly KW_COMMIT = 41; - public static readonly KW_COMMITTED = 42; - public static readonly KW_CONSTRAINT = 43; - public static readonly KW_CREATE = 44; - public static readonly KW_CROSS = 45; - public static readonly KW_CUBE = 46; - public static readonly KW_CURRENT = 47; - public static readonly KW_CURRENT_CATALOG = 48; - public static readonly KW_CURRENT_DATE = 49; - public static readonly KW_CURRENT_PATH = 50; - public static readonly KW_CURRENT_ROLE = 51; - public static readonly KW_CURRENT_SCHEMA = 52; - public static readonly KW_CURRENT_TIME = 53; - public static readonly KW_CURRENT_TIMESTAMP = 54; - public static readonly KW_CURRENT_USER = 55; - public static readonly KW_DATA = 56; - public static readonly KW_DATE = 57; - public static readonly KW_DAY = 58; - public static readonly KW_DEFAULT = 59; - public static readonly KW_DEALLOCATE = 60; - public static readonly KW_DEFINER = 61; - public static readonly KW_DELETE = 62; - public static readonly KW_DESC = 63; - public static readonly KW_DESCRIBE = 64; - public static readonly KW_DEFINE = 65; - public static readonly KW_DISTINCT = 66; - public static readonly KW_DISTRIBUTED = 67; - public static readonly KW_DOUBLE = 68; - public static readonly KW_DROP = 69; - public static readonly KW_ELSE = 70; - public static readonly KW_EMPTY = 71; - public static readonly KW_END = 72; - public static readonly KW_ESCAPE = 73; - public static readonly KW_EXCEPT = 74; - public static readonly KW_EXCLUDING = 75; - public static readonly KW_EXECUTE = 76; - public static readonly KW_EXISTS = 77; - public static readonly KW_EXPLAIN = 78; - public static readonly KW_EXTRACT = 79; - public static readonly KW_FALSE = 80; - public static readonly KW_FETCH = 81; - public static readonly KW_FILTER = 82; - public static readonly KW_FINAL = 83; - public static readonly KW_FIRST = 84; - public static readonly KW_FOLLOWING = 85; - public static readonly KW_FOR = 86; - public static readonly KW_FORMAT = 87; - public static readonly KW_FROM = 88; - public static readonly KW_FULL = 89; - public static readonly KW_FUNCTIONS = 90; - public static readonly KW_GRANT = 91; - public static readonly KW_GRANTED = 92; - public static readonly KW_GRANTS = 93; - public static readonly KW_DENY = 94; - public static readonly KW_GRAPHVIZ = 95; - public static readonly KW_GROUP = 96; - public static readonly KW_GROUPING = 97; - public static readonly KW_GROUPS = 98; - public static readonly KW_HAVING = 99; - public static readonly KW_HOUR = 100; - public static readonly KW_IF = 101; - public static readonly KW_IGNORE = 102; - public static readonly KW_IN = 103; - public static readonly KW_INCLUDING = 104; - public static readonly KW_INITIAL = 105; - public static readonly KW_INNER = 106; - public static readonly KW_INPUT = 107; - public static readonly KW_INSERT = 108; - public static readonly KW_INTERSECT = 109; - public static readonly KW_INTERVAL = 110; - public static readonly KW_INTO = 111; - public static readonly KW_INVOKER = 112; - public static readonly KW_IO = 113; - public static readonly KW_IS = 114; - public static readonly KW_ISOLATION = 115; - public static readonly KW_JOIN = 116; - public static readonly KW_JSON = 117; - public static readonly KW_LAST = 118; - public static readonly KW_LATERAL = 119; - public static readonly KW_LEFT = 120; - public static readonly KW_LEVEL = 121; - public static readonly KW_LIKE = 122; - public static readonly KW_LIMIT = 123; - public static readonly KW_LOCAL = 124; - public static readonly KW_LOCALTIME = 125; - public static readonly KW_LOCALTIMESTAMP = 126; - public static readonly KW_LOGICAL = 127; - public static readonly KW_MAP = 128; - public static readonly KW_MATCH = 129; - public static readonly KW_MATCHED = 130; - public static readonly KW_MATCHES = 131; - public static readonly KW_MATCH_RECOGNIZE = 132; - public static readonly KW_MATERIALIZED = 133; - public static readonly KW_MEASURES = 134; - public static readonly KW_MERGE = 135; - public static readonly KW_MINUTE = 136; - public static readonly KW_MONTH = 137; - public static readonly KW_NATURAL = 138; - public static readonly KW_NEXT = 139; - public static readonly KW_NFC = 140; - public static readonly KW_NFD = 141; - public static readonly KW_NFKC = 142; - public static readonly KW_NFKD = 143; - public static readonly KW_NO = 144; - public static readonly KW_NONE = 145; - public static readonly KW_NORMALIZE = 146; - public static readonly KW_NOT = 147; - public static readonly KW_NULL = 148; - public static readonly KW_NULLIF = 149; - public static readonly KW_NULLS = 150; - public static readonly KW_OFFSET = 151; - public static readonly KW_OMIT = 152; - public static readonly KW_ON = 153; - public static readonly KW_ONE = 154; - public static readonly KW_ONLY = 155; - public static readonly KW_OPTION = 156; - public static readonly KW_OR = 157; - public static readonly KW_ORDER = 158; - public static readonly KW_ORDINALITY = 159; - public static readonly KW_OUTER = 160; - public static readonly KW_OUTPUT = 161; - public static readonly KW_OVER = 162; - public static readonly KW_PARTITION = 163; - public static readonly KW_PARTITIONS = 164; - public static readonly KW_PAST = 165; - public static readonly KW_PATH = 166; - public static readonly KW_PATTERN = 167; - public static readonly KW_PER = 168; - public static readonly KW_PERMUTE = 169; - public static readonly KW_POSITION = 170; - public static readonly KW_PRECEDING = 171; - public static readonly KW_PRECISION = 172; - public static readonly KW_PREPARE = 173; - public static readonly KW_PRIVILEGES = 174; - public static readonly KW_PROPERTIES = 175; - public static readonly KW_RANGE = 176; - public static readonly KW_READ = 177; - public static readonly KW_RECURSIVE = 178; - public static readonly KW_REFRESH = 179; - public static readonly KW_RENAME = 180; - public static readonly KW_REPEATABLE = 181; - public static readonly KW_REPLACE = 182; - public static readonly KW_RESET = 183; - public static readonly KW_RESPECT = 184; - public static readonly KW_RESTRICT = 185; - public static readonly KW_REVOKE = 186; - public static readonly KW_RIGHT = 187; - public static readonly KW_ROLE = 188; - public static readonly KW_ROLES = 189; - public static readonly KW_ROLLBACK = 190; - public static readonly KW_ROLLUP = 191; - public static readonly KW_ROW = 192; - public static readonly KW_ROWS = 193; - public static readonly KW_RUNNING = 194; - public static readonly KW_SCHEMA = 195; - public static readonly KW_SCHEMAS = 196; - public static readonly KW_SECOND = 197; - public static readonly KW_SECURITY = 198; - public static readonly KW_SEEK = 199; - public static readonly KW_SELECT = 200; - public static readonly KW_SERIALIZABLE = 201; - public static readonly KW_SESSION = 202; - public static readonly KW_SET = 203; - public static readonly KW_SETS = 204; - public static readonly KW_SHOW = 205; - public static readonly KW_SOME = 206; - public static readonly KW_START = 207; - public static readonly KW_STATS = 208; - public static readonly KW_SUBSET = 209; - public static readonly KW_SUBSTRING = 210; - public static readonly KW_SYSTEM = 211; - public static readonly KW_TABLE = 212; - public static readonly KW_TABLES = 213; - public static readonly KW_TABLESAMPLE = 214; - public static readonly KW_TEXT = 215; - public static readonly KW_THEN = 216; - public static readonly KW_TIES = 217; - public static readonly KW_TIME = 218; - public static readonly KW_TIMESTAMP = 219; - public static readonly KW_TO = 220; - public static readonly KW_TRANSACTION = 221; - public static readonly KW_TRUNCATE = 222; - public static readonly KW_TRUE = 223; - public static readonly KW_TRY_CAST = 224; - public static readonly KW_TYPE = 225; - public static readonly KW_UESCAPE = 226; - public static readonly KW_UNBOUNDED = 227; - public static readonly KW_UNCOMMITTED = 228; - public static readonly KW_UNION = 229; - public static readonly KW_UNMATCHED = 230; - public static readonly KW_UNNEST = 231; - public static readonly KW_UPDATE = 232; - public static readonly KW_USE = 233; - public static readonly KW_USER = 234; - public static readonly KW_USING = 235; - public static readonly KW_VALIDATE = 236; - public static readonly KW_VALUES = 237; - public static readonly KW_VERBOSE = 238; - public static readonly KW_VIEW = 239; - public static readonly KW_WHEN = 240; - public static readonly KW_WHERE = 241; - public static readonly KW_WINDOW = 242; - public static readonly KW_WITH = 243; - public static readonly KW_WITHOUT = 244; - public static readonly KW_WORK = 245; - public static readonly KW_WRITE = 246; - public static readonly KW_YEAR = 247; - public static readonly KW_ZONE = 248; - public static readonly EQ = 249; - public static readonly NEQ = 250; - public static readonly LT = 251; - public static readonly LTE = 252; - public static readonly GT = 253; - public static readonly GTE = 254; - public static readonly PLUS = 255; - public static readonly MINUS = 256; - public static readonly ASTERISK = 257; - public static readonly SLASH = 258; - public static readonly PERCENT = 259; - public static readonly CONCAT = 260; - public static readonly QUESTION_MARK = 261; - public static readonly STRING = 262; - public static readonly UNICODE_STRING = 263; - public static readonly BINARY_LITERAL = 264; - public static readonly INTEGER_VALUE = 265; - public static readonly DECIMAL_VALUE = 266; - public static readonly DOUBLE_VALUE = 267; - public static readonly IDENTIFIER = 268; - public static readonly DIGIT_IDENTIFIER = 269; - public static readonly QUOTED_IDENTIFIER = 270; - public static readonly BACKQUOTED_IDENTIFIER = 271; - public static readonly SEMICOLON = 272; - public static readonly SIMPLE_COMMENT = 273; - public static readonly BRACKETED_COMMENT = 274; - public static readonly WS = 275; - public static readonly UNRECOGNIZED = 276; + public static readonly T__16 = 17; + public static readonly KW_ABSENT = 18; + public static readonly KW_ADD = 19; + public static readonly KW_ADMIN = 20; + public static readonly KW_AFTER = 21; + public static readonly KW_ALL = 22; + public static readonly KW_ALTER = 23; + public static readonly KW_ANALYZE = 24; + public static readonly KW_AND = 25; + public static readonly KW_ANY = 26; + public static readonly KW_ARRAY = 27; + public static readonly KW_AS = 28; + public static readonly KW_ASC = 29; + public static readonly KW_AT = 30; + public static readonly KW_AUTHORIZATION = 31; + public static readonly KW_BEGIN = 32; + public static readonly KW_BERNOULLI = 33; + public static readonly KW_BETWEEN = 34; + public static readonly KW_BOTH = 35; + public static readonly KW_BY = 36; + public static readonly KW_CALL = 37; + public static readonly KW_CALLED = 38; + public static readonly KW_CASCADE = 39; + public static readonly KW_CASE = 40; + public static readonly KW_CAST = 41; + public static readonly KW_CATALOG = 42; + public static readonly KW_CATALOGS = 43; + public static readonly KW_COLUMN = 44; + public static readonly KW_COLUMNS = 45; + public static readonly KW_COMMENT = 46; + public static readonly KW_COMMIT = 47; + public static readonly KW_COMMITTED = 48; + public static readonly KW_CONDITIONAL = 49; + public static readonly KW_CONSTRAINT = 50; + public static readonly KW_COUNT = 51; + public static readonly KW_COPARTITION = 52; + public static readonly KW_CREATE = 53; + public static readonly KW_CROSS = 54; + public static readonly KW_CUBE = 55; + public static readonly KW_CURRENT = 56; + public static readonly KW_CURRENT_CATALOG = 57; + public static readonly KW_CURRENT_DATE = 58; + public static readonly KW_CURRENT_PATH = 59; + public static readonly KW_CURRENT_ROLE = 60; + public static readonly KW_CURRENT_SCHEMA = 61; + public static readonly KW_CURRENT_TIME = 62; + public static readonly KW_CURRENT_TIMESTAMP = 63; + public static readonly KW_CURRENT_USER = 64; + public static readonly KW_DATA = 65; + public static readonly KW_DATE = 66; + public static readonly KW_DAY = 67; + public static readonly KW_DEALLOCATE = 68; + public static readonly KW_DECLARE = 69; + public static readonly KW_DEFAULT = 70; + public static readonly KW_DEFINE = 71; + public static readonly KW_DEFINER = 72; + public static readonly KW_DELETE = 73; + public static readonly KW_DENY = 74; + public static readonly KW_DESC = 75; + public static readonly KW_DESCRIBE = 76; + public static readonly KW_DESCRIPTOR = 77; + public static readonly KW_DETERMINISTIC = 78; + public static readonly KW_DISTINCT = 79; + public static readonly KW_DISTRIBUTED = 80; + public static readonly KW_DO = 81; + public static readonly KW_DOUBLE = 82; + public static readonly KW_DROP = 83; + public static readonly KW_ELSE = 84; + public static readonly KW_EMPTY = 85; + public static readonly KW_ELSEIF = 86; + public static readonly KW_ENCODING = 87; + public static readonly KW_END = 88; + public static readonly KW_ERROR = 89; + public static readonly KW_ESCAPE = 90; + public static readonly KW_EXCEPT = 91; + public static readonly KW_EXCLUDING = 92; + public static readonly KW_EXECUTE = 93; + public static readonly KW_EXISTS = 94; + public static readonly KW_EXPLAIN = 95; + public static readonly KW_EXTRACT = 96; + public static readonly KW_FALSE = 97; + public static readonly KW_FETCH = 98; + public static readonly KW_FILTER = 99; + public static readonly KW_FINAL = 100; + public static readonly KW_FIRST = 101; + public static readonly KW_FOLLOWING = 102; + public static readonly KW_FOR = 103; + public static readonly KW_FORMAT = 104; + public static readonly KW_FROM = 105; + public static readonly KW_FULL = 106; + public static readonly KW_FUNCTION = 107; + public static readonly KW_FUNCTIONS = 108; + public static readonly KW_GRACE = 109; + public static readonly KW_GRANT = 110; + public static readonly KW_GRANTED = 111; + public static readonly KW_GRANTS = 112; + public static readonly KW_GRAPHVIZ = 113; + public static readonly KW_GROUP = 114; + public static readonly KW_GROUPING = 115; + public static readonly KW_GROUPS = 116; + public static readonly KW_HAVING = 117; + public static readonly KW_HOUR = 118; + public static readonly KW_IF = 119; + public static readonly KW_IGNORE = 120; + public static readonly KW_IMMEDIATE = 121; + public static readonly KW_IN = 122; + public static readonly KW_INCLUDING = 123; + public static readonly KW_INITIAL = 124; + public static readonly KW_INNER = 125; + public static readonly KW_INPUT = 126; + public static readonly KW_INSERT = 127; + public static readonly KW_INTERSECT = 128; + public static readonly KW_INTERVAL = 129; + public static readonly KW_INTO = 130; + public static readonly KW_INVOKER = 131; + public static readonly KW_IO = 132; + public static readonly KW_IS = 133; + public static readonly KW_ISOLATION = 134; + public static readonly KW_ITERATE = 135; + public static readonly KW_JOIN = 136; + public static readonly KW_JSON = 137; + public static readonly KW_JSON_ARRAY = 138; + public static readonly KW_JSON_EXISTS = 139; + public static readonly KW_JSON_OBJECT = 140; + public static readonly KW_JSON_QUERY = 141; + public static readonly KW_JSON_TABLE = 142; + public static readonly KW_JSON_VALUE = 143; + public static readonly KW_KEEP = 144; + public static readonly KW_KEY = 145; + public static readonly KW_KEYS = 146; + public static readonly KW_LANGUAGE = 147; + public static readonly KW_LAST = 148; + public static readonly KW_LATERAL = 149; + public static readonly KW_LEADING = 150; + public static readonly KW_LEAVE = 151; + public static readonly KW_LEFT = 152; + public static readonly KW_LEVEL = 153; + public static readonly KW_LIKE = 154; + public static readonly KW_LIMIT = 155; + public static readonly KW_LISTAGG = 156; + public static readonly KW_LOCAL = 157; + public static readonly KW_LOCALTIME = 158; + public static readonly KW_LOCALTIMESTAMP = 159; + public static readonly KW_LOGICAL = 160; + public static readonly KW_LOOP = 161; + public static readonly KW_MAP = 162; + public static readonly KW_MATCH = 163; + public static readonly KW_MATCHED = 164; + public static readonly KW_MATCHES = 165; + public static readonly KW_MATCH_RECOGNIZE = 166; + public static readonly KW_MATERIALIZED = 167; + public static readonly KW_MEASURES = 168; + public static readonly KW_MERGE = 169; + public static readonly KW_MINUTE = 170; + public static readonly KW_MONTH = 171; + public static readonly KW_NATURAL = 172; + public static readonly KW_NESTED = 173; + public static readonly KW_NEXT = 174; + public static readonly KW_NFC = 175; + public static readonly KW_NFD = 176; + public static readonly KW_NFKC = 177; + public static readonly KW_NFKD = 178; + public static readonly KW_NO = 179; + public static readonly KW_NONE = 180; + public static readonly KW_NORMALIZE = 181; + public static readonly KW_NOT = 182; + public static readonly KW_NULL = 183; + public static readonly KW_NULLIF = 184; + public static readonly KW_NULLS = 185; + public static readonly KW_OBJECT = 186; + public static readonly KW_OF = 187; + public static readonly KW_OFFSET = 188; + public static readonly KW_OMIT = 189; + public static readonly KW_ON = 190; + public static readonly KW_ONE = 191; + public static readonly KW_ONLY = 192; + public static readonly KW_OPTION = 193; + public static readonly KW_OR = 194; + public static readonly KW_ORDER = 195; + public static readonly KW_ORDINALITY = 196; + public static readonly KW_OUTER = 197; + public static readonly KW_OUTPUT = 198; + public static readonly KW_OVER = 199; + public static readonly KW_OVERFLOW = 200; + public static readonly KW_PARTITION = 201; + public static readonly KW_PARTITIONS = 202; + public static readonly KW_PASSING = 203; + public static readonly KW_PAST = 204; + public static readonly KW_PATH = 205; + public static readonly KW_PATTERN = 206; + public static readonly KW_PER = 207; + public static readonly KW_PERIOD = 208; + public static readonly KW_PERMUTE = 209; + public static readonly KW_PLAN = 210; + public static readonly KW_POSITION = 211; + public static readonly KW_PRECEDING = 212; + public static readonly KW_PRECISION = 213; + public static readonly KW_PREPARE = 214; + public static readonly KW_PRIVILEGES = 215; + public static readonly KW_PROPERTIES = 216; + public static readonly KW_PRUNE = 217; + public static readonly KW_QUOTES = 218; + public static readonly KW_RANGE = 219; + public static readonly KW_READ = 220; + public static readonly KW_RECURSIVE = 221; + public static readonly KW_REFRESH = 222; + public static readonly KW_RENAME = 223; + public static readonly KW_REPEAT = 224; + public static readonly KW_REPEATABLE = 225; + public static readonly KW_REPLACE = 226; + public static readonly KW_RESET = 227; + public static readonly KW_RESPECT = 228; + public static readonly KW_RESTRICT = 229; + public static readonly KW_RETURN = 230; + public static readonly KW_RETURNING = 231; + public static readonly KW_RETURNS = 232; + public static readonly KW_REVOKE = 233; + public static readonly KW_RIGHT = 234; + public static readonly KW_ROLE = 235; + public static readonly KW_ROLES = 236; + public static readonly KW_ROLLBACK = 237; + public static readonly KW_ROLLUP = 238; + public static readonly KW_ROW = 239; + public static readonly KW_ROWS = 240; + public static readonly KW_RUNNING = 241; + public static readonly KW_SCALAR = 242; + public static readonly KW_SCHEMA = 243; + public static readonly KW_SCHEMAS = 244; + public static readonly KW_SECOND = 245; + public static readonly KW_SECURITY = 246; + public static readonly KW_SEEK = 247; + public static readonly KW_SELECT = 248; + public static readonly KW_SERIALIZABLE = 249; + public static readonly KW_SESSION = 250; + public static readonly KW_SET = 251; + public static readonly KW_SETS = 252; + public static readonly KW_SHOW = 253; + public static readonly KW_SOME = 254; + public static readonly KW_START = 255; + public static readonly KW_STATS = 256; + public static readonly KW_SUBSET = 257; + public static readonly KW_SUBSTRING = 258; + public static readonly KW_SYSTEM = 259; + public static readonly KW_TABLE = 260; + public static readonly KW_TABLES = 261; + public static readonly KW_TABLESAMPLE = 262; + public static readonly KW_TEXT = 263; + public static readonly KW_TEXT_STRING = 264; + public static readonly KW_THEN = 265; + public static readonly KW_TIES = 266; + public static readonly KW_TIME = 267; + public static readonly KW_TIMESTAMP = 268; + public static readonly KW_TO = 269; + public static readonly KW_TRAILING = 270; + public static readonly KW_TRANSACTION = 271; + public static readonly KW_TRIM = 272; + public static readonly KW_TRUE = 273; + public static readonly KW_TRUNCATE = 274; + public static readonly KW_TRY_CAST = 275; + public static readonly KW_TYPE = 276; + public static readonly KW_UESCAPE = 277; + public static readonly KW_UNBOUNDED = 278; + public static readonly KW_UNCOMMITTED = 279; + public static readonly KW_UNCONDITIONAL = 280; + public static readonly KW_UNION = 281; + public static readonly KW_UNIQUE = 282; + public static readonly KW_UNKNOWN = 283; + public static readonly KW_UNMATCHED = 284; + public static readonly KW_UNNEST = 285; + public static readonly KW_UNTIL = 286; + public static readonly KW_UPDATE = 287; + public static readonly KW_USE = 288; + public static readonly KW_USER = 289; + public static readonly KW_USING = 290; + public static readonly KW_UTF16 = 291; + public static readonly KW_UTF32 = 292; + public static readonly KW_UTF8 = 293; + public static readonly KW_VALIDATE = 294; + public static readonly KW_VALUE = 295; + public static readonly KW_VALUES = 296; + public static readonly KW_VERBOSE = 297; + public static readonly KW_VERSION = 298; + public static readonly KW_VIEW = 299; + public static readonly KW_WHEN = 300; + public static readonly KW_WHERE = 301; + public static readonly KW_WHILE = 302; + public static readonly KW_WINDOW = 303; + public static readonly KW_WITH = 304; + public static readonly KW_WITHIN = 305; + public static readonly KW_WITHOUT = 306; + public static readonly KW_WORK = 307; + public static readonly KW_WRAPPER = 308; + public static readonly KW_WRITE = 309; + public static readonly KW_YEAR = 310; + public static readonly KW_ZONE = 311; + public static readonly EQ = 312; + public static readonly NEQ = 313; + public static readonly LT = 314; + public static readonly LTE = 315; + public static readonly GT = 316; + public static readonly GTE = 317; + public static readonly PLUS = 318; + public static readonly MINUS = 319; + public static readonly ASTERISK = 320; + public static readonly SLASH = 321; + public static readonly PERCENT = 322; + public static readonly CONCAT = 323; + public static readonly QUESTION_MARK = 324; + public static readonly SEMICOLON = 325; + public static readonly STRING = 326; + public static readonly UNICODE_STRING = 327; + public static readonly BINARY_LITERAL = 328; + public static readonly INTEGER_VALUE = 329; + public static readonly DECIMAL_VALUE = 330; + public static readonly DOUBLE_VALUE = 331; + public static readonly IDENTIFIER = 332; + public static readonly DIGIT_IDENTIFIER = 333; + public static readonly QUOTED_IDENTIFIER = 334; + public static readonly BACKQUOTED_IDENTIFIER = 335; + public static readonly SIMPLE_COMMENT = 336; + public static readonly BRACKETED_COMMENT = 337; + public static readonly WS = 338; + public static readonly UNRECOGNIZED = 339; public static readonly channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; public static readonly literalNames = [ - null, "'('", "')'", "','", "'.'", "'SKIP'", "'->'", "'['", "']'", - "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", "'=>'", "'ADD'", - "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", - "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", - "'BERNOULLI'", "'BETWEEN'", "'BY'", "'CALL'", "'CASCADE'", "'CASE'", - "'CAST'", "'CATALOGS'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", - "'COMMITTED'", "'CONSTRAINT'", "'CREATE'", "'CROSS'", "'CUBE'", - "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_PATH'", - "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", - "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", "'DEFAULT'", "'DEALLOCATE'", - "'DEFINER'", "'DELETE'", "'DESC'", "'DESCRIBE'", "'DEFINE'", "'DISTINCT'", - "'DISTRIBUTED'", "'DOUBLE'", "'DROP'", "'ELSE'", "'EMPTY'", "'END'", - "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", - "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", - "'FIRST'", "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", - "'FUNCTIONS'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'DENY'", "'GRAPHVIZ'", + null, "'('", "')'", "','", "'.'", "'SKIP'", "'=>'", "'->'", "'['", + "']'", "':'", "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", + "'ABSENT'", "'ADD'", "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", + "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", + "'BEGIN'", "'BERNOULLI'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", + "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOG'", "'CATALOGS'", + "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", + "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", "'CREATE'", + "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", + "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", + "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", + "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", "'DEFINER'", + "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", "'DETERMINISTIC'", + "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", "'ELSE'", + "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", "'ERROR'", "'ESCAPE'", + "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'", + "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", "'FIRST'", + "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", "'HOUR'", "'IF'", - "'IGNORE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", "'INPUT'", - "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", - "'IO'", "'IS'", "'ISOLATION'", "'JOIN'", "'JSON'", "'LAST'", "'LATERAL'", - "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LOCAL'", "'LOCALTIME'", - "'LOCALTIMESTAMP'", "'LOGICAL'", "'MAP'", "'MATCH'", "'MATCHED'", - "'MATCHES'", "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", - "'MERGE'", "'MINUTE'", "'MONTH'", "'NATURAL'", "'NEXT'", "'NFC'", + "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", + "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", + "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", "'JOIN'", "'JSON'", + "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", "'JSON_QUERY'", + "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", "'KEYS'", "'LANGUAGE'", + "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LEVEL'", + "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", + "'LOGICAL'", "'LOOP'", "'MAP'", "'MATCH'", "'MATCHED'", "'MATCHES'", + "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", "'MERGE'", + "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", "'NEXT'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", - "'NULL'", "'NULLIF'", "'NULLS'", "'OFFSET'", "'OMIT'", "'ON'", "'ONE'", - "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'", - "'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'", "'PAST'", "'PATH'", - "'PATTERN'", "'PER'", "'PERMUTE'", "'POSITION'", "'PRECEDING'", - "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'RANGE'", - "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", "'REPEATABLE'", - "'REPLACE'", "'RESET'", "'RESPECT'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", - "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", - "'RUNNING'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECURITY'", - "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", "'SET'", "'SETS'", - "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", "'SUBSTRING'", - "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", - "'TIES'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRANSACTION'", "'TRUNCATE'", - "'TRUE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", - "'UNION'", "'UNMATCHED'", "'UNNEST'", "'UPDATE'", "'USE'", "'USER'", - "'USING'", "'VALIDATE'", "'VALUES'", "'VERBOSE'", "'VIEW'", "'WHEN'", - "'WHERE'", "'WINDOW'", "'WITH'", "'WITHOUT'", "'WORK'", "'WRITE'", - "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", - "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", null, null, null, null, - null, null, null, null, null, null, "';'" + "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", "'OF'", "'OFFSET'", + "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", + "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", "'OVERFLOW'", "'PARTITION'", + "'PARTITIONS'", "'PASSING'", "'PAST'", "'PATH'", "'PATTERN'", "'PER'", + "'PERIOD'", "'PERMUTE'", "'PLAN'", "'POSITION'", "'PRECEDING'", + "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'PRUNE'", + "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", + "'REPEAT'", "'REPEATABLE'", "'REPLACE'", "'RESET'", "'RESPECT'", + "'RESTRICT'", "'RETURN'", "'RETURNING'", "'RETURNS'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", + "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", + "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", + "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", + "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TEXT'", "'STRING'", "'THEN'", "'TIES'", "'TIME'", "'TIMESTAMP'", + "'TO'", "'TRAILING'", "'TRANSACTION'", "'TRIM'", "'TRUE'", "'TRUNCATE'", + "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", + "'UNCONDITIONAL'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", "'UNMATCHED'", + "'UNNEST'", "'UNTIL'", "'UPDATE'", "'USE'", "'USER'", "'USING'", + "'UTF16'", "'UTF32'", "'UTF8'", "'VALIDATE'", "'VALUE'", "'VALUES'", + "'VERBOSE'", "'VERSION'", "'VIEW'", "'WHEN'", "'WHERE'", "'WHILE'", + "'WINDOW'", "'WITH'", "'WITHIN'", "'WITHOUT'", "'WORK'", "'WRAPPER'", + "'WRITE'", "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", + "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", "';'" ]; public static readonly symbolicNames = [ null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, "KW_ADD", "KW_ADMIN", "KW_AFTER", - "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", - "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BERNOULLI", - "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", "KW_CASE", "KW_CAST", - "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", - "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", "KW_CROSS", "KW_CUBE", - "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", - "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", - "KW_CURRENT_USER", "KW_DATA", "KW_DATE", "KW_DAY", "KW_DEFAULT", - "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", "KW_DESC", "KW_DESCRIBE", - "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DOUBLE", "KW_DROP", - "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + null, null, null, null, null, null, null, "KW_ABSENT", "KW_ADD", + "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", + "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", + "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", + "KW_CALLED", "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", + "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", + "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", + "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", + "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", + "KW_DATE", "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", + "KW_DEFINE", "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", + "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", - "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", "KW_GRANT", - "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", - "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", "KW_IF", "KW_IGNORE", - "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", "KW_INPUT", "KW_INSERT", - "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", "KW_INVOKER", "KW_IO", - "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", "KW_LAST", "KW_LATERAL", - "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LOCAL", "KW_LOCALTIME", - "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", "KW_MATCH", "KW_MATCHED", - "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", "KW_MEASURES", - "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", "KW_NEXT", "KW_NFC", - "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", - "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", "KW_OMIT", + "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", + "KW_GRACE", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_GRAPHVIZ", + "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", + "KW_IF", "KW_IGNORE", "KW_IMMEDIATE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", + "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_ITERATE", + "KW_JOIN", "KW_JSON", "KW_JSON_ARRAY", "KW_JSON_EXISTS", "KW_JSON_OBJECT", + "KW_JSON_QUERY", "KW_JSON_TABLE", "KW_JSON_VALUE", "KW_KEEP", "KW_KEY", + "KW_KEYS", "KW_LANGUAGE", "KW_LAST", "KW_LATERAL", "KW_LEADING", + "KW_LEAVE", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LISTAGG", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_LOOP", + "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NESTED", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", + "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", + "KW_NULLIF", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFFSET", "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", - "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", - "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", - "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", - "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", - "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", - "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", - "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", - "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", - "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", - "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", - "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", - "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", - "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", - "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", - "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", - "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", - "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", - "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", - "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", - "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", - "SEMICOLON", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED" + "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_OVERFLOW", + "KW_PARTITION", "KW_PARTITIONS", "KW_PASSING", "KW_PAST", "KW_PATH", + "KW_PATTERN", "KW_PER", "KW_PERIOD", "KW_PERMUTE", "KW_PLAN", "KW_POSITION", + "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", + "KW_PRUNE", "KW_QUOTES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", + "KW_REFRESH", "KW_RENAME", "KW_REPEAT", "KW_REPEATABLE", "KW_REPLACE", + "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_RETURN", "KW_RETURNING", + "KW_RETURNS", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCALAR", "KW_SCHEMA", + "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", + "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", + "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", + "KW_TEXT_STRING", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", + "KW_TO", "KW_TRAILING", "KW_TRANSACTION", "KW_TRIM", "KW_TRUE", + "KW_TRUNCATE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNCONDITIONAL", "KW_UNION", "KW_UNIQUE", "KW_UNKNOWN", + "KW_UNMATCHED", "KW_UNNEST", "KW_UNTIL", "KW_UPDATE", "KW_USE", + "KW_USER", "KW_USING", "KW_UTF16", "KW_UTF32", "KW_UTF8", "KW_VALIDATE", + "KW_VALUE", "KW_VALUES", "KW_VERBOSE", "KW_VERSION", "KW_VIEW", + "KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WINDOW", "KW_WITH", "KW_WITHIN", + "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_WRITE", "KW_YEAR", "KW_ZONE", + "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "SEMICOLON", "STRING", + "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", + "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED" ]; public static readonly modeNames = [ @@ -399,55 +485,69 @@ export class TrinoSqlLexer extends antlr.Lexer { public static readonly ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", - "KW_ADD", "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", - "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", - "KW_BERNOULLI", "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", - "KW_CASE", "KW_CAST", "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", - "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", - "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", + "T__16", "KW_ABSENT", "KW_ADD", "KW_ADMIN", "KW_AFTER", "KW_ALL", + "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", + "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BEGIN", "KW_BERNOULLI", + "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", "KW_CALLED", "KW_CASCADE", + "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", "KW_COLUMN", + "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONDITIONAL", + "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", "KW_CREATE", "KW_CROSS", + "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", "KW_DATE", - "KW_DAY", "KW_DEFAULT", "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", - "KW_DESC", "KW_DESCRIBE", "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", - "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", - "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", - "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", - "KW_FOLLOWING", "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", - "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", + "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", "KW_DEFINE", + "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", + "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", + "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", + "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", + "KW_GRACE", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_GRAPHVIZ", "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", - "KW_IF", "KW_IGNORE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", - "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", - "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", - "KW_LAST", "KW_LATERAL", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", - "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", - "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", - "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", - "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", - "KW_NORMALIZE", "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", - "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", - "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", - "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", - "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", - "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", - "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", - "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", - "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", - "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", - "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", - "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", - "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", - "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", - "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", - "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", - "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", - "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", - "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", - "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", - "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", - "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", - "SEMICOLON", "EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "WS", "UNRECOGNIZED", + "KW_IF", "KW_IGNORE", "KW_IMMEDIATE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", + "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_ITERATE", + "KW_JOIN", "KW_JSON", "KW_JSON_ARRAY", "KW_JSON_EXISTS", "KW_JSON_OBJECT", + "KW_JSON_QUERY", "KW_JSON_TABLE", "KW_JSON_VALUE", "KW_KEEP", "KW_KEY", + "KW_KEYS", "KW_LANGUAGE", "KW_LAST", "KW_LATERAL", "KW_LEADING", + "KW_LEAVE", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LISTAGG", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_LOOP", + "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NESTED", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", + "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", + "KW_NULLIF", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFFSET", "KW_OMIT", + "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", + "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_OVERFLOW", + "KW_PARTITION", "KW_PARTITIONS", "KW_PASSING", "KW_PAST", "KW_PATH", + "KW_PATTERN", "KW_PER", "KW_PERIOD", "KW_PERMUTE", "KW_PLAN", "KW_POSITION", + "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", + "KW_PRUNE", "KW_QUOTES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", + "KW_REFRESH", "KW_RENAME", "KW_REPEAT", "KW_REPEATABLE", "KW_REPLACE", + "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_RETURN", "KW_RETURNING", + "KW_RETURNS", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCALAR", "KW_SCHEMA", + "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", + "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", + "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", + "KW_TEXT_STRING", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", + "KW_TO", "KW_TRAILING", "KW_TRANSACTION", "KW_TRIM", "KW_TRUE", + "KW_TRUNCATE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNCONDITIONAL", "KW_UNION", "KW_UNIQUE", "KW_UNKNOWN", + "KW_UNMATCHED", "KW_UNNEST", "KW_UNTIL", "KW_UPDATE", "KW_USE", + "KW_USER", "KW_USING", "KW_UTF16", "KW_UTF32", "KW_UTF8", "KW_VALIDATE", + "KW_VALUE", "KW_VALUES", "KW_VERBOSE", "KW_VERSION", "KW_VIEW", + "KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WINDOW", "KW_WITH", "KW_WITHIN", + "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_WRITE", "KW_YEAR", "KW_ZONE", + "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "SEMICOLON", "STRING", + "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", + "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "DECIMAL_INTEGER", "HEXADECIMAL_INTEGER", + "OCTAL_INTEGER", "BINARY_INTEGER", "EXPONENT", "DIGIT", "LETTER", + "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", ]; @@ -469,7 +569,7 @@ export class TrinoSqlLexer extends antlr.Lexer { public get modeNames(): string[] { return TrinoSqlLexer.modeNames; } public static readonly _serializedATN: number[] = [ - 4,0,276,2467,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, + 4,0,339,3117,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, 5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12, 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19, 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, @@ -516,877 +616,1124 @@ export class TrinoSqlLexer extends antlr.Lexer { 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, 7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273, - 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,1,0, - 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,6, - 1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1, - 12,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,17,1, - 17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1, - 19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,21,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,24,1,24,1, - 24,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1, - 27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, - 28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1, - 30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,32,1,32,1,32,1, - 32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1, - 34,1,34,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1, - 36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1, - 38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1, - 40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1, - 41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, - 42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1, - 44,1,44,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1, - 46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, - 47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, - 48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1, - 49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1, + 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279, + 7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284, + 2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, + 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295, + 2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, + 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306, + 2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312, + 7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317, + 2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323, + 7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328, + 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, + 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, + 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, + 7,345,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,5,1, + 5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1, + 12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1, + 17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1, + 19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1, + 22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1, + 23,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1, + 26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1, + 30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, + 31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1, + 34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1, + 37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, + 39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1, + 41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1, + 44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, + 48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1, 50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1, - 51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1, - 54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1, - 55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1, - 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1, - 59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, - 60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1, - 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1, - 64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1, - 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1, - 67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1, - 69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,72,1, - 72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1, - 75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1, - 77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1, - 78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1, - 80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1, - 82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1, - 84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1, - 86,1,86,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,89,1, - 89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1, - 90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1, - 92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1, - 94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1, - 96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1, + 51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1, + 53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1, + 55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1, + 57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1, + 59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1, + 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1, + 66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1, + 68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1, + 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1, + 71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1, + 73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, + 75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, + 76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, + 77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, + 79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1, + 80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1, + 82,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1, + 85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, + 86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1, + 89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, + 91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1, + 92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1, + 94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1, + 95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1, 97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1, - 100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102, - 1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, - 1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105, - 1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,107, - 1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109, - 1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111, - 1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,113,1,113,1,113, - 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115, - 1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117, - 1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1, + 101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,103, + 1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104, + 1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, + 1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, + 1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115, + 1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116, + 1,116,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119, 1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120, - 1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122, - 1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124, - 1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125, - 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126, - 1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,128, - 1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,122, + 1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125, + 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129, 1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131, - 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, - 1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132, - 1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,135, - 1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136, - 1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138, - 1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140, - 1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143, - 1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145, - 1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,147, - 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148, - 1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150, - 1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,153, - 1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155, - 1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,157,1,157,1,157,1,157, - 1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158, - 1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160, - 1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163, - 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164, - 1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166, - 1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168, - 1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169, - 1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170, - 1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, - 1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173, - 1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,174,1,174, - 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,175,1,175, - 1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,177,1,177, - 1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,179, - 1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180, - 1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,182,1,182, - 1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,185, - 1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186, - 1,186,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188, - 1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,190, - 1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,192, - 1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195, - 1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196, - 1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198, - 1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199, - 1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, - 1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,202, - 1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204, - 1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206, - 1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208, - 1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209, - 1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,211, - 1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212, - 1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213, - 1,213,1,213,1,214,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215, - 1,215,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217, - 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219, - 1,219,1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220, - 1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221, - 1,221,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223, - 1,223,1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,225,1,225, - 1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226,1,226, - 1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228, - 1,228,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231, - 1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233, - 1,233,1,234,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,235, - 1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236, - 1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238, - 1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240, + 1,131,1,131,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134, + 1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136, + 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137, + 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138, + 1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144, + 1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146, + 1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148, + 1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149, + 1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151, + 1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153, + 1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156, + 1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158, + 1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158, + 1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, + 1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162, + 1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163, + 1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165, + 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165, + 1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166, + 1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167, + 1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169, + 1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170, + 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172, + 1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174, + 1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176, + 1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,179, + 1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180, + 1,180,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,183, + 1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184, + 1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186, + 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188, + 1,188,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,191,1,191,1,191, + 1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193, + 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195, + 1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196, + 1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198, + 1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, + 1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201, + 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203, + 1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205, + 1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,207,1,207,1,207, + 1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208, + 1,208,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210, + 1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211, + 1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214, + 1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215, + 1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216, + 1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217, + 1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219, + 1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220, + 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222, + 1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226, + 1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229,1,229, + 1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,1,230, + 1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,233,1,233,1,233, + 1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235, + 1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236, + 1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238, + 1,238,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240, 1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242, - 1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,243,1,243, - 1,243,1,244,1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245, - 1,245,1,246,1,246,1,246,1,246,1,246,1,247,1,247,1,247,1,247,1,247, - 1,248,1,248,1,249,1,249,1,249,1,249,3,249,2257,8,249,1,250,1,250, - 1,251,1,251,1,251,1,252,1,252,1,253,1,253,1,253,1,254,1,254,1,255, - 1,255,1,256,1,256,1,257,1,257,1,258,1,258,1,259,1,259,1,259,1,260, - 1,260,1,261,1,261,1,261,1,261,5,261,2288,8,261,10,261,12,261,2291, - 9,261,1,261,1,261,1,262,1,262,1,262,1,262,1,262,1,262,1,262,5,262, - 2302,8,262,10,262,12,262,2305,9,262,1,262,1,262,1,263,1,263,1,263, - 1,263,5,263,2313,8,263,10,263,12,263,2316,9,263,1,263,1,263,1,264, - 4,264,2321,8,264,11,264,12,264,2322,1,265,4,265,2326,8,265,11,265, - 12,265,2327,1,265,1,265,5,265,2332,8,265,10,265,12,265,2335,9,265, - 1,265,1,265,4,265,2339,8,265,11,265,12,265,2340,3,265,2343,8,265, - 1,266,4,266,2346,8,266,11,266,12,266,2347,1,266,1,266,5,266,2352, - 8,266,10,266,12,266,2355,9,266,3,266,2357,8,266,1,266,1,266,1,266, - 1,266,4,266,2363,8,266,11,266,12,266,2364,1,266,1,266,3,266,2369, - 8,266,1,267,1,267,3,267,2373,8,267,1,267,1,267,1,267,5,267,2378, - 8,267,10,267,12,267,2381,9,267,1,268,1,268,1,268,1,268,4,268,2387, - 8,268,11,268,12,268,2388,1,269,1,269,1,269,1,269,5,269,2395,8,269, - 10,269,12,269,2398,9,269,1,269,1,269,1,270,1,270,1,270,1,270,5,270, - 2406,8,270,10,270,12,270,2409,9,270,1,270,1,270,1,271,1,271,1,272, - 1,272,3,272,2417,8,272,1,272,4,272,2420,8,272,11,272,12,272,2421, - 1,273,1,273,1,274,1,274,1,275,1,275,1,275,1,275,5,275,2432,8,275, - 10,275,12,275,2435,9,275,1,275,3,275,2438,8,275,1,275,3,275,2441, - 8,275,1,275,1,275,1,276,1,276,1,276,1,276,5,276,2449,8,276,10,276, - 12,276,2452,9,276,1,276,1,276,1,276,1,276,1,276,1,277,4,277,2460, - 8,277,11,277,12,277,2461,1,277,1,277,1,278,1,278,1,2450,0,279,1, - 1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27, - 14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, - 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71, - 36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93, - 47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, - 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66, - 133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, - 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85, - 171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189, - 95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207, - 104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223, - 112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239, - 120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255, - 128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271, - 136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287, - 144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303, - 152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319, - 160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335, - 168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351, - 176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367, - 184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383, - 192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399, - 200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415, - 208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431, - 216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447, - 224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463, - 232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479, - 240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495, - 248,497,249,499,250,501,251,503,252,505,253,507,254,509,255,511, - 256,513,257,515,258,517,259,519,260,521,261,523,262,525,263,527, - 264,529,265,531,266,533,267,535,268,537,269,539,270,541,271,543, - 272,545,0,547,0,549,0,551,273,553,274,555,275,557,276,1,0,33,2,0, - 83,83,115,115,2,0,75,75,107,107,2,0,73,73,105,105,2,0,80,80,112, - 112,2,0,65,65,97,97,2,0,68,68,100,100,2,0,77,77,109,109,2,0,78,78, - 110,110,2,0,70,70,102,102,2,0,84,84,116,116,2,0,69,69,101,101,2, - 0,82,82,114,114,2,0,76,76,108,108,2,0,89,89,121,121,2,0,90,90,122, - 122,2,0,67,67,99,99,2,0,85,85,117,117,2,0,72,72,104,104,2,0,79,79, - 111,111,2,0,66,66,98,98,2,0,87,87,119,119,2,0,71,71,103,103,2,0, - 88,88,120,120,2,0,86,86,118,118,2,0,74,74,106,106,1,0,39,39,1,0, - 34,34,1,0,96,96,2,0,43,43,45,45,1,0,48,57,2,0,65,90,97,122,2,0,10, - 10,13,13,3,0,9,10,13,13,32,32,2497,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1, - 0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0, - 0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0, - 0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0, - 0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0, - 0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0, - 0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0, - 0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0, - 0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0, - 0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0, - 0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105, - 1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0, - 0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1, - 0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, - 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0, - 0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151, - 1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0, - 0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1, - 0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0, - 179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0, - 0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197, - 1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0, - 0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1, - 0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0, - 225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0, - 0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243, - 1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0, - 0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1, - 0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0, - 271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0, - 0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289, - 1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, - 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1, - 0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, - 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0, - 0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335, - 1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0, - 0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1, - 0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, - 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0, - 0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381, - 1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0, - 0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1, - 0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0, - 409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0, - 0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427, - 1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0, - 0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1, - 0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0, - 455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0, - 0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473, - 1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0, - 0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1, - 0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0, - 501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0, - 0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519, - 1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0, - 0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1, - 0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0,551,1,0,0,0,0, - 553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,1,559,1,0,0,0,3,561,1,0, - 0,0,5,563,1,0,0,0,7,565,1,0,0,0,9,567,1,0,0,0,11,572,1,0,0,0,13, - 575,1,0,0,0,15,577,1,0,0,0,17,579,1,0,0,0,19,581,1,0,0,0,21,583, - 1,0,0,0,23,585,1,0,0,0,25,588,1,0,0,0,27,591,1,0,0,0,29,593,1,0, - 0,0,31,595,1,0,0,0,33,598,1,0,0,0,35,602,1,0,0,0,37,608,1,0,0,0, - 39,614,1,0,0,0,41,618,1,0,0,0,43,624,1,0,0,0,45,632,1,0,0,0,47,636, - 1,0,0,0,49,640,1,0,0,0,51,646,1,0,0,0,53,649,1,0,0,0,55,653,1,0, - 0,0,57,656,1,0,0,0,59,670,1,0,0,0,61,680,1,0,0,0,63,688,1,0,0,0, - 65,691,1,0,0,0,67,696,1,0,0,0,69,704,1,0,0,0,71,709,1,0,0,0,73,714, - 1,0,0,0,75,723,1,0,0,0,77,730,1,0,0,0,79,738,1,0,0,0,81,746,1,0, - 0,0,83,753,1,0,0,0,85,763,1,0,0,0,87,774,1,0,0,0,89,781,1,0,0,0, - 91,787,1,0,0,0,93,792,1,0,0,0,95,800,1,0,0,0,97,816,1,0,0,0,99,829, - 1,0,0,0,101,842,1,0,0,0,103,855,1,0,0,0,105,870,1,0,0,0,107,883, - 1,0,0,0,109,901,1,0,0,0,111,914,1,0,0,0,113,919,1,0,0,0,115,924, - 1,0,0,0,117,928,1,0,0,0,119,936,1,0,0,0,121,947,1,0,0,0,123,955, - 1,0,0,0,125,962,1,0,0,0,127,967,1,0,0,0,129,976,1,0,0,0,131,983, - 1,0,0,0,133,992,1,0,0,0,135,1004,1,0,0,0,137,1011,1,0,0,0,139,1016, - 1,0,0,0,141,1021,1,0,0,0,143,1027,1,0,0,0,145,1031,1,0,0,0,147,1038, - 1,0,0,0,149,1045,1,0,0,0,151,1055,1,0,0,0,153,1063,1,0,0,0,155,1070, - 1,0,0,0,157,1078,1,0,0,0,159,1086,1,0,0,0,161,1092,1,0,0,0,163,1098, - 1,0,0,0,165,1105,1,0,0,0,167,1111,1,0,0,0,169,1117,1,0,0,0,171,1127, - 1,0,0,0,173,1131,1,0,0,0,175,1138,1,0,0,0,177,1143,1,0,0,0,179,1148, - 1,0,0,0,181,1158,1,0,0,0,183,1164,1,0,0,0,185,1172,1,0,0,0,187,1179, - 1,0,0,0,189,1184,1,0,0,0,191,1193,1,0,0,0,193,1199,1,0,0,0,195,1208, - 1,0,0,0,197,1215,1,0,0,0,199,1222,1,0,0,0,201,1227,1,0,0,0,203,1230, - 1,0,0,0,205,1237,1,0,0,0,207,1240,1,0,0,0,209,1250,1,0,0,0,211,1258, - 1,0,0,0,213,1264,1,0,0,0,215,1270,1,0,0,0,217,1277,1,0,0,0,219,1287, - 1,0,0,0,221,1296,1,0,0,0,223,1301,1,0,0,0,225,1309,1,0,0,0,227,1312, - 1,0,0,0,229,1315,1,0,0,0,231,1325,1,0,0,0,233,1330,1,0,0,0,235,1335, - 1,0,0,0,237,1340,1,0,0,0,239,1348,1,0,0,0,241,1353,1,0,0,0,243,1359, - 1,0,0,0,245,1364,1,0,0,0,247,1370,1,0,0,0,249,1376,1,0,0,0,251,1386, - 1,0,0,0,253,1401,1,0,0,0,255,1409,1,0,0,0,257,1413,1,0,0,0,259,1419, - 1,0,0,0,261,1427,1,0,0,0,263,1435,1,0,0,0,265,1451,1,0,0,0,267,1464, - 1,0,0,0,269,1473,1,0,0,0,271,1479,1,0,0,0,273,1486,1,0,0,0,275,1492, - 1,0,0,0,277,1500,1,0,0,0,279,1505,1,0,0,0,281,1509,1,0,0,0,283,1513, - 1,0,0,0,285,1518,1,0,0,0,287,1523,1,0,0,0,289,1526,1,0,0,0,291,1531, - 1,0,0,0,293,1541,1,0,0,0,295,1545,1,0,0,0,297,1550,1,0,0,0,299,1557, - 1,0,0,0,301,1563,1,0,0,0,303,1570,1,0,0,0,305,1575,1,0,0,0,307,1578, - 1,0,0,0,309,1582,1,0,0,0,311,1587,1,0,0,0,313,1594,1,0,0,0,315,1597, - 1,0,0,0,317,1603,1,0,0,0,319,1614,1,0,0,0,321,1620,1,0,0,0,323,1627, - 1,0,0,0,325,1632,1,0,0,0,327,1642,1,0,0,0,329,1653,1,0,0,0,331,1658, - 1,0,0,0,333,1663,1,0,0,0,335,1671,1,0,0,0,337,1675,1,0,0,0,339,1683, - 1,0,0,0,341,1692,1,0,0,0,343,1702,1,0,0,0,345,1712,1,0,0,0,347,1720, - 1,0,0,0,349,1731,1,0,0,0,351,1742,1,0,0,0,353,1748,1,0,0,0,355,1753, - 1,0,0,0,357,1763,1,0,0,0,359,1771,1,0,0,0,361,1778,1,0,0,0,363,1789, - 1,0,0,0,365,1797,1,0,0,0,367,1803,1,0,0,0,369,1811,1,0,0,0,371,1820, - 1,0,0,0,373,1827,1,0,0,0,375,1833,1,0,0,0,377,1838,1,0,0,0,379,1844, - 1,0,0,0,381,1853,1,0,0,0,383,1860,1,0,0,0,385,1864,1,0,0,0,387,1869, - 1,0,0,0,389,1877,1,0,0,0,391,1884,1,0,0,0,393,1892,1,0,0,0,395,1899, - 1,0,0,0,397,1908,1,0,0,0,399,1913,1,0,0,0,401,1920,1,0,0,0,403,1933, - 1,0,0,0,405,1941,1,0,0,0,407,1945,1,0,0,0,409,1950,1,0,0,0,411,1955, - 1,0,0,0,413,1960,1,0,0,0,415,1966,1,0,0,0,417,1972,1,0,0,0,419,1979, - 1,0,0,0,421,1989,1,0,0,0,423,1996,1,0,0,0,425,2002,1,0,0,0,427,2009, - 1,0,0,0,429,2021,1,0,0,0,431,2026,1,0,0,0,433,2031,1,0,0,0,435,2036, - 1,0,0,0,437,2041,1,0,0,0,439,2051,1,0,0,0,441,2054,1,0,0,0,443,2066, - 1,0,0,0,445,2075,1,0,0,0,447,2080,1,0,0,0,449,2089,1,0,0,0,451,2094, - 1,0,0,0,453,2102,1,0,0,0,455,2112,1,0,0,0,457,2124,1,0,0,0,459,2130, - 1,0,0,0,461,2140,1,0,0,0,463,2147,1,0,0,0,465,2154,1,0,0,0,467,2158, - 1,0,0,0,469,2163,1,0,0,0,471,2169,1,0,0,0,473,2178,1,0,0,0,475,2185, - 1,0,0,0,477,2193,1,0,0,0,479,2198,1,0,0,0,481,2203,1,0,0,0,483,2209, - 1,0,0,0,485,2216,1,0,0,0,487,2221,1,0,0,0,489,2229,1,0,0,0,491,2234, - 1,0,0,0,493,2240,1,0,0,0,495,2245,1,0,0,0,497,2250,1,0,0,0,499,2256, - 1,0,0,0,501,2258,1,0,0,0,503,2260,1,0,0,0,505,2263,1,0,0,0,507,2265, - 1,0,0,0,509,2268,1,0,0,0,511,2270,1,0,0,0,513,2272,1,0,0,0,515,2274, - 1,0,0,0,517,2276,1,0,0,0,519,2278,1,0,0,0,521,2281,1,0,0,0,523,2283, - 1,0,0,0,525,2294,1,0,0,0,527,2308,1,0,0,0,529,2320,1,0,0,0,531,2342, - 1,0,0,0,533,2368,1,0,0,0,535,2372,1,0,0,0,537,2382,1,0,0,0,539,2390, - 1,0,0,0,541,2401,1,0,0,0,543,2412,1,0,0,0,545,2414,1,0,0,0,547,2423, - 1,0,0,0,549,2425,1,0,0,0,551,2427,1,0,0,0,553,2444,1,0,0,0,555,2459, - 1,0,0,0,557,2465,1,0,0,0,559,560,5,40,0,0,560,2,1,0,0,0,561,562, - 5,41,0,0,562,4,1,0,0,0,563,564,5,44,0,0,564,6,1,0,0,0,565,566,5, - 46,0,0,566,8,1,0,0,0,567,568,7,0,0,0,568,569,7,1,0,0,569,570,7,2, - 0,0,570,571,7,3,0,0,571,10,1,0,0,0,572,573,5,45,0,0,573,574,5,62, - 0,0,574,12,1,0,0,0,575,576,5,91,0,0,576,14,1,0,0,0,577,578,5,93, - 0,0,578,16,1,0,0,0,579,580,5,124,0,0,580,18,1,0,0,0,581,582,5,94, - 0,0,582,20,1,0,0,0,583,584,5,36,0,0,584,22,1,0,0,0,585,586,5,123, - 0,0,586,587,5,45,0,0,587,24,1,0,0,0,588,589,5,45,0,0,589,590,5,125, - 0,0,590,26,1,0,0,0,591,592,5,123,0,0,592,28,1,0,0,0,593,594,5,125, - 0,0,594,30,1,0,0,0,595,596,5,61,0,0,596,597,5,62,0,0,597,32,1,0, - 0,0,598,599,7,4,0,0,599,600,7,5,0,0,600,601,7,5,0,0,601,34,1,0,0, - 0,602,603,7,4,0,0,603,604,7,5,0,0,604,605,7,6,0,0,605,606,7,2,0, - 0,606,607,7,7,0,0,607,36,1,0,0,0,608,609,7,4,0,0,609,610,7,8,0,0, - 610,611,7,9,0,0,611,612,7,10,0,0,612,613,7,11,0,0,613,38,1,0,0,0, - 614,615,7,4,0,0,615,616,7,12,0,0,616,617,7,12,0,0,617,40,1,0,0,0, - 618,619,7,4,0,0,619,620,7,12,0,0,620,621,7,9,0,0,621,622,7,10,0, - 0,622,623,7,11,0,0,623,42,1,0,0,0,624,625,7,4,0,0,625,626,7,7,0, - 0,626,627,7,4,0,0,627,628,7,12,0,0,628,629,7,13,0,0,629,630,7,14, - 0,0,630,631,7,10,0,0,631,44,1,0,0,0,632,633,7,4,0,0,633,634,7,7, - 0,0,634,635,7,5,0,0,635,46,1,0,0,0,636,637,7,4,0,0,637,638,7,7,0, - 0,638,639,7,13,0,0,639,48,1,0,0,0,640,641,7,4,0,0,641,642,7,11,0, - 0,642,643,7,11,0,0,643,644,7,4,0,0,644,645,7,13,0,0,645,50,1,0,0, - 0,646,647,7,4,0,0,647,648,7,0,0,0,648,52,1,0,0,0,649,650,7,4,0,0, - 650,651,7,0,0,0,651,652,7,15,0,0,652,54,1,0,0,0,653,654,7,4,0,0, - 654,655,7,9,0,0,655,56,1,0,0,0,656,657,7,4,0,0,657,658,7,16,0,0, - 658,659,7,9,0,0,659,660,7,17,0,0,660,661,7,18,0,0,661,662,7,11,0, - 0,662,663,7,2,0,0,663,664,7,14,0,0,664,665,7,4,0,0,665,666,7,9,0, - 0,666,667,7,2,0,0,667,668,7,18,0,0,668,669,7,7,0,0,669,58,1,0,0, - 0,670,671,7,19,0,0,671,672,7,10,0,0,672,673,7,11,0,0,673,674,7,7, - 0,0,674,675,7,18,0,0,675,676,7,16,0,0,676,677,7,12,0,0,677,678,7, - 12,0,0,678,679,7,2,0,0,679,60,1,0,0,0,680,681,7,19,0,0,681,682,7, - 10,0,0,682,683,7,9,0,0,683,684,7,20,0,0,684,685,7,10,0,0,685,686, - 7,10,0,0,686,687,7,7,0,0,687,62,1,0,0,0,688,689,7,19,0,0,689,690, - 7,13,0,0,690,64,1,0,0,0,691,692,7,15,0,0,692,693,7,4,0,0,693,694, - 7,12,0,0,694,695,7,12,0,0,695,66,1,0,0,0,696,697,7,15,0,0,697,698, - 7,4,0,0,698,699,7,0,0,0,699,700,7,15,0,0,700,701,7,4,0,0,701,702, - 7,5,0,0,702,703,7,10,0,0,703,68,1,0,0,0,704,705,7,15,0,0,705,706, - 7,4,0,0,706,707,7,0,0,0,707,708,7,10,0,0,708,70,1,0,0,0,709,710, - 7,15,0,0,710,711,7,4,0,0,711,712,7,0,0,0,712,713,7,9,0,0,713,72, - 1,0,0,0,714,715,7,15,0,0,715,716,7,4,0,0,716,717,7,9,0,0,717,718, - 7,4,0,0,718,719,7,12,0,0,719,720,7,18,0,0,720,721,7,21,0,0,721,722, - 7,0,0,0,722,74,1,0,0,0,723,724,7,15,0,0,724,725,7,18,0,0,725,726, - 7,12,0,0,726,727,7,16,0,0,727,728,7,6,0,0,728,729,7,7,0,0,729,76, - 1,0,0,0,730,731,7,15,0,0,731,732,7,18,0,0,732,733,7,12,0,0,733,734, - 7,16,0,0,734,735,7,6,0,0,735,736,7,7,0,0,736,737,7,0,0,0,737,78, - 1,0,0,0,738,739,7,15,0,0,739,740,7,18,0,0,740,741,7,6,0,0,741,742, - 7,6,0,0,742,743,7,10,0,0,743,744,7,7,0,0,744,745,7,9,0,0,745,80, - 1,0,0,0,746,747,7,15,0,0,747,748,7,18,0,0,748,749,7,6,0,0,749,750, - 7,6,0,0,750,751,7,2,0,0,751,752,7,9,0,0,752,82,1,0,0,0,753,754,7, - 15,0,0,754,755,7,18,0,0,755,756,7,6,0,0,756,757,7,6,0,0,757,758, - 7,2,0,0,758,759,7,9,0,0,759,760,7,9,0,0,760,761,7,10,0,0,761,762, - 7,5,0,0,762,84,1,0,0,0,763,764,7,15,0,0,764,765,7,18,0,0,765,766, - 7,7,0,0,766,767,7,0,0,0,767,768,7,9,0,0,768,769,7,11,0,0,769,770, - 7,4,0,0,770,771,7,2,0,0,771,772,7,7,0,0,772,773,7,9,0,0,773,86,1, - 0,0,0,774,775,7,15,0,0,775,776,7,11,0,0,776,777,7,10,0,0,777,778, - 7,4,0,0,778,779,7,9,0,0,779,780,7,10,0,0,780,88,1,0,0,0,781,782, - 7,15,0,0,782,783,7,11,0,0,783,784,7,18,0,0,784,785,7,0,0,0,785,786, - 7,0,0,0,786,90,1,0,0,0,787,788,7,15,0,0,788,789,7,16,0,0,789,790, - 7,19,0,0,790,791,7,10,0,0,791,92,1,0,0,0,792,793,7,15,0,0,793,794, - 7,16,0,0,794,795,7,11,0,0,795,796,7,11,0,0,796,797,7,10,0,0,797, - 798,7,7,0,0,798,799,7,9,0,0,799,94,1,0,0,0,800,801,7,15,0,0,801, - 802,7,16,0,0,802,803,7,11,0,0,803,804,7,11,0,0,804,805,7,10,0,0, - 805,806,7,7,0,0,806,807,7,9,0,0,807,808,5,95,0,0,808,809,7,15,0, - 0,809,810,7,4,0,0,810,811,7,9,0,0,811,812,7,4,0,0,812,813,7,12,0, - 0,813,814,7,18,0,0,814,815,7,21,0,0,815,96,1,0,0,0,816,817,7,15, - 0,0,817,818,7,16,0,0,818,819,7,11,0,0,819,820,7,11,0,0,820,821,7, - 10,0,0,821,822,7,7,0,0,822,823,7,9,0,0,823,824,5,95,0,0,824,825, - 7,5,0,0,825,826,7,4,0,0,826,827,7,9,0,0,827,828,7,10,0,0,828,98, - 1,0,0,0,829,830,7,15,0,0,830,831,7,16,0,0,831,832,7,11,0,0,832,833, - 7,11,0,0,833,834,7,10,0,0,834,835,7,7,0,0,835,836,7,9,0,0,836,837, - 5,95,0,0,837,838,7,3,0,0,838,839,7,4,0,0,839,840,7,9,0,0,840,841, - 7,17,0,0,841,100,1,0,0,0,842,843,7,15,0,0,843,844,7,16,0,0,844,845, - 7,11,0,0,845,846,7,11,0,0,846,847,7,10,0,0,847,848,7,7,0,0,848,849, - 7,9,0,0,849,850,5,95,0,0,850,851,7,11,0,0,851,852,7,18,0,0,852,853, - 7,12,0,0,853,854,7,10,0,0,854,102,1,0,0,0,855,856,7,15,0,0,856,857, - 7,16,0,0,857,858,7,11,0,0,858,859,7,11,0,0,859,860,7,10,0,0,860, - 861,7,7,0,0,861,862,7,9,0,0,862,863,5,95,0,0,863,864,7,0,0,0,864, - 865,7,15,0,0,865,866,7,17,0,0,866,867,7,10,0,0,867,868,7,6,0,0,868, - 869,7,4,0,0,869,104,1,0,0,0,870,871,7,15,0,0,871,872,7,16,0,0,872, - 873,7,11,0,0,873,874,7,11,0,0,874,875,7,10,0,0,875,876,7,7,0,0,876, - 877,7,9,0,0,877,878,5,95,0,0,878,879,7,9,0,0,879,880,7,2,0,0,880, - 881,7,6,0,0,881,882,7,10,0,0,882,106,1,0,0,0,883,884,7,15,0,0,884, - 885,7,16,0,0,885,886,7,11,0,0,886,887,7,11,0,0,887,888,7,10,0,0, - 888,889,7,7,0,0,889,890,7,9,0,0,890,891,5,95,0,0,891,892,7,9,0,0, - 892,893,7,2,0,0,893,894,7,6,0,0,894,895,7,10,0,0,895,896,7,0,0,0, - 896,897,7,9,0,0,897,898,7,4,0,0,898,899,7,6,0,0,899,900,7,3,0,0, - 900,108,1,0,0,0,901,902,7,15,0,0,902,903,7,16,0,0,903,904,7,11,0, - 0,904,905,7,11,0,0,905,906,7,10,0,0,906,907,7,7,0,0,907,908,7,9, - 0,0,908,909,5,95,0,0,909,910,7,16,0,0,910,911,7,0,0,0,911,912,7, - 10,0,0,912,913,7,11,0,0,913,110,1,0,0,0,914,915,7,5,0,0,915,916, - 7,4,0,0,916,917,7,9,0,0,917,918,7,4,0,0,918,112,1,0,0,0,919,920, - 7,5,0,0,920,921,7,4,0,0,921,922,7,9,0,0,922,923,7,10,0,0,923,114, - 1,0,0,0,924,925,7,5,0,0,925,926,7,4,0,0,926,927,7,13,0,0,927,116, - 1,0,0,0,928,929,7,5,0,0,929,930,7,10,0,0,930,931,7,8,0,0,931,932, - 7,4,0,0,932,933,7,16,0,0,933,934,7,12,0,0,934,935,7,9,0,0,935,118, - 1,0,0,0,936,937,7,5,0,0,937,938,7,10,0,0,938,939,7,4,0,0,939,940, - 7,12,0,0,940,941,7,12,0,0,941,942,7,18,0,0,942,943,7,15,0,0,943, - 944,7,4,0,0,944,945,7,9,0,0,945,946,7,10,0,0,946,120,1,0,0,0,947, - 948,7,5,0,0,948,949,7,10,0,0,949,950,7,8,0,0,950,951,7,2,0,0,951, - 952,7,7,0,0,952,953,7,10,0,0,953,954,7,11,0,0,954,122,1,0,0,0,955, - 956,7,5,0,0,956,957,7,10,0,0,957,958,7,12,0,0,958,959,7,10,0,0,959, - 960,7,9,0,0,960,961,7,10,0,0,961,124,1,0,0,0,962,963,7,5,0,0,963, - 964,7,10,0,0,964,965,7,0,0,0,965,966,7,15,0,0,966,126,1,0,0,0,967, - 968,7,5,0,0,968,969,7,10,0,0,969,970,7,0,0,0,970,971,7,15,0,0,971, - 972,7,11,0,0,972,973,7,2,0,0,973,974,7,19,0,0,974,975,7,10,0,0,975, - 128,1,0,0,0,976,977,7,5,0,0,977,978,7,10,0,0,978,979,7,8,0,0,979, - 980,7,2,0,0,980,981,7,7,0,0,981,982,7,10,0,0,982,130,1,0,0,0,983, - 984,7,5,0,0,984,985,7,2,0,0,985,986,7,0,0,0,986,987,7,9,0,0,987, - 988,7,2,0,0,988,989,7,7,0,0,989,990,7,15,0,0,990,991,7,9,0,0,991, - 132,1,0,0,0,992,993,7,5,0,0,993,994,7,2,0,0,994,995,7,0,0,0,995, - 996,7,9,0,0,996,997,7,11,0,0,997,998,7,2,0,0,998,999,7,19,0,0,999, - 1000,7,16,0,0,1000,1001,7,9,0,0,1001,1002,7,10,0,0,1002,1003,7,5, - 0,0,1003,134,1,0,0,0,1004,1005,7,5,0,0,1005,1006,7,18,0,0,1006,1007, - 7,16,0,0,1007,1008,7,19,0,0,1008,1009,7,12,0,0,1009,1010,7,10,0, - 0,1010,136,1,0,0,0,1011,1012,7,5,0,0,1012,1013,7,11,0,0,1013,1014, - 7,18,0,0,1014,1015,7,3,0,0,1015,138,1,0,0,0,1016,1017,7,10,0,0,1017, - 1018,7,12,0,0,1018,1019,7,0,0,0,1019,1020,7,10,0,0,1020,140,1,0, - 0,0,1021,1022,7,10,0,0,1022,1023,7,6,0,0,1023,1024,7,3,0,0,1024, - 1025,7,9,0,0,1025,1026,7,13,0,0,1026,142,1,0,0,0,1027,1028,7,10, - 0,0,1028,1029,7,7,0,0,1029,1030,7,5,0,0,1030,144,1,0,0,0,1031,1032, - 7,10,0,0,1032,1033,7,0,0,0,1033,1034,7,15,0,0,1034,1035,7,4,0,0, - 1035,1036,7,3,0,0,1036,1037,7,10,0,0,1037,146,1,0,0,0,1038,1039, - 7,10,0,0,1039,1040,7,22,0,0,1040,1041,7,15,0,0,1041,1042,7,10,0, - 0,1042,1043,7,3,0,0,1043,1044,7,9,0,0,1044,148,1,0,0,0,1045,1046, - 7,10,0,0,1046,1047,7,22,0,0,1047,1048,7,15,0,0,1048,1049,7,12,0, - 0,1049,1050,7,16,0,0,1050,1051,7,5,0,0,1051,1052,7,2,0,0,1052,1053, - 7,7,0,0,1053,1054,7,21,0,0,1054,150,1,0,0,0,1055,1056,7,10,0,0,1056, - 1057,7,22,0,0,1057,1058,7,10,0,0,1058,1059,7,15,0,0,1059,1060,7, - 16,0,0,1060,1061,7,9,0,0,1061,1062,7,10,0,0,1062,152,1,0,0,0,1063, - 1064,7,10,0,0,1064,1065,7,22,0,0,1065,1066,7,2,0,0,1066,1067,7,0, - 0,0,1067,1068,7,9,0,0,1068,1069,7,0,0,0,1069,154,1,0,0,0,1070,1071, - 7,10,0,0,1071,1072,7,22,0,0,1072,1073,7,3,0,0,1073,1074,7,12,0,0, - 1074,1075,7,4,0,0,1075,1076,7,2,0,0,1076,1077,7,7,0,0,1077,156,1, - 0,0,0,1078,1079,7,10,0,0,1079,1080,7,22,0,0,1080,1081,7,9,0,0,1081, - 1082,7,11,0,0,1082,1083,7,4,0,0,1083,1084,7,15,0,0,1084,1085,7,9, - 0,0,1085,158,1,0,0,0,1086,1087,7,8,0,0,1087,1088,7,4,0,0,1088,1089, - 7,12,0,0,1089,1090,7,0,0,0,1090,1091,7,10,0,0,1091,160,1,0,0,0,1092, - 1093,7,8,0,0,1093,1094,7,10,0,0,1094,1095,7,9,0,0,1095,1096,7,15, - 0,0,1096,1097,7,17,0,0,1097,162,1,0,0,0,1098,1099,7,8,0,0,1099,1100, - 7,2,0,0,1100,1101,7,12,0,0,1101,1102,7,9,0,0,1102,1103,7,10,0,0, - 1103,1104,7,11,0,0,1104,164,1,0,0,0,1105,1106,7,8,0,0,1106,1107, - 7,2,0,0,1107,1108,7,7,0,0,1108,1109,7,4,0,0,1109,1110,7,12,0,0,1110, - 166,1,0,0,0,1111,1112,7,8,0,0,1112,1113,7,2,0,0,1113,1114,7,11,0, - 0,1114,1115,7,0,0,0,1115,1116,7,9,0,0,1116,168,1,0,0,0,1117,1118, - 7,8,0,0,1118,1119,7,18,0,0,1119,1120,7,12,0,0,1120,1121,7,12,0,0, - 1121,1122,7,18,0,0,1122,1123,7,20,0,0,1123,1124,7,2,0,0,1124,1125, - 7,7,0,0,1125,1126,7,21,0,0,1126,170,1,0,0,0,1127,1128,7,8,0,0,1128, - 1129,7,18,0,0,1129,1130,7,11,0,0,1130,172,1,0,0,0,1131,1132,7,8, - 0,0,1132,1133,7,18,0,0,1133,1134,7,11,0,0,1134,1135,7,6,0,0,1135, - 1136,7,4,0,0,1136,1137,7,9,0,0,1137,174,1,0,0,0,1138,1139,7,8,0, - 0,1139,1140,7,11,0,0,1140,1141,7,18,0,0,1141,1142,7,6,0,0,1142,176, - 1,0,0,0,1143,1144,7,8,0,0,1144,1145,7,16,0,0,1145,1146,7,12,0,0, - 1146,1147,7,12,0,0,1147,178,1,0,0,0,1148,1149,7,8,0,0,1149,1150, - 7,16,0,0,1150,1151,7,7,0,0,1151,1152,7,15,0,0,1152,1153,7,9,0,0, - 1153,1154,7,2,0,0,1154,1155,7,18,0,0,1155,1156,7,7,0,0,1156,1157, - 7,0,0,0,1157,180,1,0,0,0,1158,1159,7,21,0,0,1159,1160,7,11,0,0,1160, - 1161,7,4,0,0,1161,1162,7,7,0,0,1162,1163,7,9,0,0,1163,182,1,0,0, - 0,1164,1165,7,21,0,0,1165,1166,7,11,0,0,1166,1167,7,4,0,0,1167,1168, - 7,7,0,0,1168,1169,7,9,0,0,1169,1170,7,10,0,0,1170,1171,7,5,0,0,1171, - 184,1,0,0,0,1172,1173,7,21,0,0,1173,1174,7,11,0,0,1174,1175,7,4, - 0,0,1175,1176,7,7,0,0,1176,1177,7,9,0,0,1177,1178,7,0,0,0,1178,186, - 1,0,0,0,1179,1180,7,5,0,0,1180,1181,7,10,0,0,1181,1182,7,7,0,0,1182, - 1183,7,13,0,0,1183,188,1,0,0,0,1184,1185,7,21,0,0,1185,1186,7,11, - 0,0,1186,1187,7,4,0,0,1187,1188,7,3,0,0,1188,1189,7,17,0,0,1189, - 1190,7,23,0,0,1190,1191,7,2,0,0,1191,1192,7,14,0,0,1192,190,1,0, - 0,0,1193,1194,7,21,0,0,1194,1195,7,11,0,0,1195,1196,7,18,0,0,1196, - 1197,7,16,0,0,1197,1198,7,3,0,0,1198,192,1,0,0,0,1199,1200,7,21, - 0,0,1200,1201,7,11,0,0,1201,1202,7,18,0,0,1202,1203,7,16,0,0,1203, - 1204,7,3,0,0,1204,1205,7,2,0,0,1205,1206,7,7,0,0,1206,1207,7,21, - 0,0,1207,194,1,0,0,0,1208,1209,7,21,0,0,1209,1210,7,11,0,0,1210, - 1211,7,18,0,0,1211,1212,7,16,0,0,1212,1213,7,3,0,0,1213,1214,7,0, - 0,0,1214,196,1,0,0,0,1215,1216,7,17,0,0,1216,1217,7,4,0,0,1217,1218, - 7,23,0,0,1218,1219,7,2,0,0,1219,1220,7,7,0,0,1220,1221,7,21,0,0, - 1221,198,1,0,0,0,1222,1223,7,17,0,0,1223,1224,7,18,0,0,1224,1225, - 7,16,0,0,1225,1226,7,11,0,0,1226,200,1,0,0,0,1227,1228,7,2,0,0,1228, - 1229,7,8,0,0,1229,202,1,0,0,0,1230,1231,7,2,0,0,1231,1232,7,21,0, - 0,1232,1233,7,7,0,0,1233,1234,7,18,0,0,1234,1235,7,11,0,0,1235,1236, - 7,10,0,0,1236,204,1,0,0,0,1237,1238,7,2,0,0,1238,1239,7,7,0,0,1239, - 206,1,0,0,0,1240,1241,7,2,0,0,1241,1242,7,7,0,0,1242,1243,7,15,0, - 0,1243,1244,7,12,0,0,1244,1245,7,16,0,0,1245,1246,7,5,0,0,1246,1247, - 7,2,0,0,1247,1248,7,7,0,0,1248,1249,7,21,0,0,1249,208,1,0,0,0,1250, - 1251,7,2,0,0,1251,1252,7,7,0,0,1252,1253,7,2,0,0,1253,1254,7,9,0, - 0,1254,1255,7,2,0,0,1255,1256,7,4,0,0,1256,1257,7,12,0,0,1257,210, - 1,0,0,0,1258,1259,7,2,0,0,1259,1260,7,7,0,0,1260,1261,7,7,0,0,1261, - 1262,7,10,0,0,1262,1263,7,11,0,0,1263,212,1,0,0,0,1264,1265,7,2, - 0,0,1265,1266,7,7,0,0,1266,1267,7,3,0,0,1267,1268,7,16,0,0,1268, - 1269,7,9,0,0,1269,214,1,0,0,0,1270,1271,7,2,0,0,1271,1272,7,7,0, - 0,1272,1273,7,0,0,0,1273,1274,7,10,0,0,1274,1275,7,11,0,0,1275,1276, - 7,9,0,0,1276,216,1,0,0,0,1277,1278,7,2,0,0,1278,1279,7,7,0,0,1279, - 1280,7,9,0,0,1280,1281,7,10,0,0,1281,1282,7,11,0,0,1282,1283,7,0, - 0,0,1283,1284,7,10,0,0,1284,1285,7,15,0,0,1285,1286,7,9,0,0,1286, - 218,1,0,0,0,1287,1288,7,2,0,0,1288,1289,7,7,0,0,1289,1290,7,9,0, - 0,1290,1291,7,10,0,0,1291,1292,7,11,0,0,1292,1293,7,23,0,0,1293, - 1294,7,4,0,0,1294,1295,7,12,0,0,1295,220,1,0,0,0,1296,1297,7,2,0, - 0,1297,1298,7,7,0,0,1298,1299,7,9,0,0,1299,1300,7,18,0,0,1300,222, - 1,0,0,0,1301,1302,7,2,0,0,1302,1303,7,7,0,0,1303,1304,7,23,0,0,1304, - 1305,7,18,0,0,1305,1306,7,1,0,0,1306,1307,7,10,0,0,1307,1308,7,11, - 0,0,1308,224,1,0,0,0,1309,1310,7,2,0,0,1310,1311,7,18,0,0,1311,226, - 1,0,0,0,1312,1313,7,2,0,0,1313,1314,7,0,0,0,1314,228,1,0,0,0,1315, - 1316,7,2,0,0,1316,1317,7,0,0,0,1317,1318,7,18,0,0,1318,1319,7,12, - 0,0,1319,1320,7,4,0,0,1320,1321,7,9,0,0,1321,1322,7,2,0,0,1322,1323, - 7,18,0,0,1323,1324,7,7,0,0,1324,230,1,0,0,0,1325,1326,7,24,0,0,1326, - 1327,7,18,0,0,1327,1328,7,2,0,0,1328,1329,7,7,0,0,1329,232,1,0,0, - 0,1330,1331,7,24,0,0,1331,1332,7,0,0,0,1332,1333,7,18,0,0,1333,1334, - 7,7,0,0,1334,234,1,0,0,0,1335,1336,7,12,0,0,1336,1337,7,4,0,0,1337, - 1338,7,0,0,0,1338,1339,7,9,0,0,1339,236,1,0,0,0,1340,1341,7,12,0, - 0,1341,1342,7,4,0,0,1342,1343,7,9,0,0,1343,1344,7,10,0,0,1344,1345, - 7,11,0,0,1345,1346,7,4,0,0,1346,1347,7,12,0,0,1347,238,1,0,0,0,1348, - 1349,7,12,0,0,1349,1350,7,10,0,0,1350,1351,7,8,0,0,1351,1352,7,9, - 0,0,1352,240,1,0,0,0,1353,1354,7,12,0,0,1354,1355,7,10,0,0,1355, - 1356,7,23,0,0,1356,1357,7,10,0,0,1357,1358,7,12,0,0,1358,242,1,0, - 0,0,1359,1360,7,12,0,0,1360,1361,7,2,0,0,1361,1362,7,1,0,0,1362, - 1363,7,10,0,0,1363,244,1,0,0,0,1364,1365,7,12,0,0,1365,1366,7,2, - 0,0,1366,1367,7,6,0,0,1367,1368,7,2,0,0,1368,1369,7,9,0,0,1369,246, - 1,0,0,0,1370,1371,7,12,0,0,1371,1372,7,18,0,0,1372,1373,7,15,0,0, - 1373,1374,7,4,0,0,1374,1375,7,12,0,0,1375,248,1,0,0,0,1376,1377, - 7,12,0,0,1377,1378,7,18,0,0,1378,1379,7,15,0,0,1379,1380,7,4,0,0, - 1380,1381,7,12,0,0,1381,1382,7,9,0,0,1382,1383,7,2,0,0,1383,1384, - 7,6,0,0,1384,1385,7,10,0,0,1385,250,1,0,0,0,1386,1387,7,12,0,0,1387, - 1388,7,18,0,0,1388,1389,7,15,0,0,1389,1390,7,4,0,0,1390,1391,7,12, - 0,0,1391,1392,7,9,0,0,1392,1393,7,2,0,0,1393,1394,7,6,0,0,1394,1395, - 7,10,0,0,1395,1396,7,0,0,0,1396,1397,7,9,0,0,1397,1398,7,4,0,0,1398, - 1399,7,6,0,0,1399,1400,7,3,0,0,1400,252,1,0,0,0,1401,1402,7,12,0, - 0,1402,1403,7,18,0,0,1403,1404,7,21,0,0,1404,1405,7,2,0,0,1405,1406, - 7,15,0,0,1406,1407,7,4,0,0,1407,1408,7,12,0,0,1408,254,1,0,0,0,1409, - 1410,7,6,0,0,1410,1411,7,4,0,0,1411,1412,7,3,0,0,1412,256,1,0,0, - 0,1413,1414,7,6,0,0,1414,1415,7,4,0,0,1415,1416,7,9,0,0,1416,1417, - 7,15,0,0,1417,1418,7,17,0,0,1418,258,1,0,0,0,1419,1420,7,6,0,0,1420, - 1421,7,4,0,0,1421,1422,7,9,0,0,1422,1423,7,15,0,0,1423,1424,7,17, - 0,0,1424,1425,7,10,0,0,1425,1426,7,5,0,0,1426,260,1,0,0,0,1427,1428, - 7,6,0,0,1428,1429,7,4,0,0,1429,1430,7,9,0,0,1430,1431,7,15,0,0,1431, - 1432,7,17,0,0,1432,1433,7,10,0,0,1433,1434,7,0,0,0,1434,262,1,0, - 0,0,1435,1436,7,6,0,0,1436,1437,7,4,0,0,1437,1438,7,9,0,0,1438,1439, - 7,15,0,0,1439,1440,7,17,0,0,1440,1441,5,95,0,0,1441,1442,7,11,0, - 0,1442,1443,7,10,0,0,1443,1444,7,15,0,0,1444,1445,7,18,0,0,1445, - 1446,7,21,0,0,1446,1447,7,7,0,0,1447,1448,7,2,0,0,1448,1449,7,14, - 0,0,1449,1450,7,10,0,0,1450,264,1,0,0,0,1451,1452,7,6,0,0,1452,1453, - 7,4,0,0,1453,1454,7,9,0,0,1454,1455,7,10,0,0,1455,1456,7,11,0,0, - 1456,1457,7,2,0,0,1457,1458,7,4,0,0,1458,1459,7,12,0,0,1459,1460, - 7,2,0,0,1460,1461,7,14,0,0,1461,1462,7,10,0,0,1462,1463,7,5,0,0, - 1463,266,1,0,0,0,1464,1465,7,6,0,0,1465,1466,7,10,0,0,1466,1467, - 7,4,0,0,1467,1468,7,0,0,0,1468,1469,7,16,0,0,1469,1470,7,11,0,0, - 1470,1471,7,10,0,0,1471,1472,7,0,0,0,1472,268,1,0,0,0,1473,1474, - 7,6,0,0,1474,1475,7,10,0,0,1475,1476,7,11,0,0,1476,1477,7,21,0,0, - 1477,1478,7,10,0,0,1478,270,1,0,0,0,1479,1480,7,6,0,0,1480,1481, - 7,2,0,0,1481,1482,7,7,0,0,1482,1483,7,16,0,0,1483,1484,7,9,0,0,1484, - 1485,7,10,0,0,1485,272,1,0,0,0,1486,1487,7,6,0,0,1487,1488,7,18, - 0,0,1488,1489,7,7,0,0,1489,1490,7,9,0,0,1490,1491,7,17,0,0,1491, - 274,1,0,0,0,1492,1493,7,7,0,0,1493,1494,7,4,0,0,1494,1495,7,9,0, - 0,1495,1496,7,16,0,0,1496,1497,7,11,0,0,1497,1498,7,4,0,0,1498,1499, - 7,12,0,0,1499,276,1,0,0,0,1500,1501,7,7,0,0,1501,1502,7,10,0,0,1502, - 1503,7,22,0,0,1503,1504,7,9,0,0,1504,278,1,0,0,0,1505,1506,7,7,0, - 0,1506,1507,7,8,0,0,1507,1508,7,15,0,0,1508,280,1,0,0,0,1509,1510, - 7,7,0,0,1510,1511,7,8,0,0,1511,1512,7,5,0,0,1512,282,1,0,0,0,1513, - 1514,7,7,0,0,1514,1515,7,8,0,0,1515,1516,7,1,0,0,1516,1517,7,15, - 0,0,1517,284,1,0,0,0,1518,1519,7,7,0,0,1519,1520,7,8,0,0,1520,1521, - 7,1,0,0,1521,1522,7,5,0,0,1522,286,1,0,0,0,1523,1524,7,7,0,0,1524, - 1525,7,18,0,0,1525,288,1,0,0,0,1526,1527,7,7,0,0,1527,1528,7,18, - 0,0,1528,1529,7,7,0,0,1529,1530,7,10,0,0,1530,290,1,0,0,0,1531,1532, - 7,7,0,0,1532,1533,7,18,0,0,1533,1534,7,11,0,0,1534,1535,7,6,0,0, - 1535,1536,7,4,0,0,1536,1537,7,12,0,0,1537,1538,7,2,0,0,1538,1539, - 7,14,0,0,1539,1540,7,10,0,0,1540,292,1,0,0,0,1541,1542,7,7,0,0,1542, - 1543,7,18,0,0,1543,1544,7,9,0,0,1544,294,1,0,0,0,1545,1546,7,7,0, - 0,1546,1547,7,16,0,0,1547,1548,7,12,0,0,1548,1549,7,12,0,0,1549, - 296,1,0,0,0,1550,1551,7,7,0,0,1551,1552,7,16,0,0,1552,1553,7,12, - 0,0,1553,1554,7,12,0,0,1554,1555,7,2,0,0,1555,1556,7,8,0,0,1556, - 298,1,0,0,0,1557,1558,7,7,0,0,1558,1559,7,16,0,0,1559,1560,7,12, - 0,0,1560,1561,7,12,0,0,1561,1562,7,0,0,0,1562,300,1,0,0,0,1563,1564, - 7,18,0,0,1564,1565,7,8,0,0,1565,1566,7,8,0,0,1566,1567,7,0,0,0,1567, - 1568,7,10,0,0,1568,1569,7,9,0,0,1569,302,1,0,0,0,1570,1571,7,18, - 0,0,1571,1572,7,6,0,0,1572,1573,7,2,0,0,1573,1574,7,9,0,0,1574,304, - 1,0,0,0,1575,1576,7,18,0,0,1576,1577,7,7,0,0,1577,306,1,0,0,0,1578, - 1579,7,18,0,0,1579,1580,7,7,0,0,1580,1581,7,10,0,0,1581,308,1,0, - 0,0,1582,1583,7,18,0,0,1583,1584,7,7,0,0,1584,1585,7,12,0,0,1585, - 1586,7,13,0,0,1586,310,1,0,0,0,1587,1588,7,18,0,0,1588,1589,7,3, - 0,0,1589,1590,7,9,0,0,1590,1591,7,2,0,0,1591,1592,7,18,0,0,1592, - 1593,7,7,0,0,1593,312,1,0,0,0,1594,1595,7,18,0,0,1595,1596,7,11, - 0,0,1596,314,1,0,0,0,1597,1598,7,18,0,0,1598,1599,7,11,0,0,1599, - 1600,7,5,0,0,1600,1601,7,10,0,0,1601,1602,7,11,0,0,1602,316,1,0, - 0,0,1603,1604,7,18,0,0,1604,1605,7,11,0,0,1605,1606,7,5,0,0,1606, - 1607,7,2,0,0,1607,1608,7,7,0,0,1608,1609,7,4,0,0,1609,1610,7,12, - 0,0,1610,1611,7,2,0,0,1611,1612,7,9,0,0,1612,1613,7,13,0,0,1613, - 318,1,0,0,0,1614,1615,7,18,0,0,1615,1616,7,16,0,0,1616,1617,7,9, - 0,0,1617,1618,7,10,0,0,1618,1619,7,11,0,0,1619,320,1,0,0,0,1620, - 1621,7,18,0,0,1621,1622,7,16,0,0,1622,1623,7,9,0,0,1623,1624,7,3, - 0,0,1624,1625,7,16,0,0,1625,1626,7,9,0,0,1626,322,1,0,0,0,1627,1628, - 7,18,0,0,1628,1629,7,23,0,0,1629,1630,7,10,0,0,1630,1631,7,11,0, - 0,1631,324,1,0,0,0,1632,1633,7,3,0,0,1633,1634,7,4,0,0,1634,1635, - 7,11,0,0,1635,1636,7,9,0,0,1636,1637,7,2,0,0,1637,1638,7,9,0,0,1638, - 1639,7,2,0,0,1639,1640,7,18,0,0,1640,1641,7,7,0,0,1641,326,1,0,0, - 0,1642,1643,7,3,0,0,1643,1644,7,4,0,0,1644,1645,7,11,0,0,1645,1646, - 7,9,0,0,1646,1647,7,2,0,0,1647,1648,7,9,0,0,1648,1649,7,2,0,0,1649, - 1650,7,18,0,0,1650,1651,7,7,0,0,1651,1652,7,0,0,0,1652,328,1,0,0, - 0,1653,1654,7,3,0,0,1654,1655,7,4,0,0,1655,1656,7,0,0,0,1656,1657, - 7,9,0,0,1657,330,1,0,0,0,1658,1659,7,3,0,0,1659,1660,7,4,0,0,1660, - 1661,7,9,0,0,1661,1662,7,17,0,0,1662,332,1,0,0,0,1663,1664,7,3,0, - 0,1664,1665,7,4,0,0,1665,1666,7,9,0,0,1666,1667,7,9,0,0,1667,1668, - 7,10,0,0,1668,1669,7,11,0,0,1669,1670,7,7,0,0,1670,334,1,0,0,0,1671, - 1672,7,3,0,0,1672,1673,7,10,0,0,1673,1674,7,11,0,0,1674,336,1,0, - 0,0,1675,1676,7,3,0,0,1676,1677,7,10,0,0,1677,1678,7,11,0,0,1678, - 1679,7,6,0,0,1679,1680,7,16,0,0,1680,1681,7,9,0,0,1681,1682,7,10, - 0,0,1682,338,1,0,0,0,1683,1684,7,3,0,0,1684,1685,7,18,0,0,1685,1686, - 7,0,0,0,1686,1687,7,2,0,0,1687,1688,7,9,0,0,1688,1689,7,2,0,0,1689, - 1690,7,18,0,0,1690,1691,7,7,0,0,1691,340,1,0,0,0,1692,1693,7,3,0, - 0,1693,1694,7,11,0,0,1694,1695,7,10,0,0,1695,1696,7,15,0,0,1696, - 1697,7,10,0,0,1697,1698,7,5,0,0,1698,1699,7,2,0,0,1699,1700,7,7, - 0,0,1700,1701,7,21,0,0,1701,342,1,0,0,0,1702,1703,7,3,0,0,1703,1704, - 7,11,0,0,1704,1705,7,10,0,0,1705,1706,7,15,0,0,1706,1707,7,2,0,0, - 1707,1708,7,0,0,0,1708,1709,7,2,0,0,1709,1710,7,18,0,0,1710,1711, - 7,7,0,0,1711,344,1,0,0,0,1712,1713,7,3,0,0,1713,1714,7,11,0,0,1714, - 1715,7,10,0,0,1715,1716,7,3,0,0,1716,1717,7,4,0,0,1717,1718,7,11, - 0,0,1718,1719,7,10,0,0,1719,346,1,0,0,0,1720,1721,7,3,0,0,1721,1722, - 7,11,0,0,1722,1723,7,2,0,0,1723,1724,7,23,0,0,1724,1725,7,2,0,0, - 1725,1726,7,12,0,0,1726,1727,7,10,0,0,1727,1728,7,21,0,0,1728,1729, - 7,10,0,0,1729,1730,7,0,0,0,1730,348,1,0,0,0,1731,1732,7,3,0,0,1732, - 1733,7,11,0,0,1733,1734,7,18,0,0,1734,1735,7,3,0,0,1735,1736,7,10, - 0,0,1736,1737,7,11,0,0,1737,1738,7,9,0,0,1738,1739,7,2,0,0,1739, - 1740,7,10,0,0,1740,1741,7,0,0,0,1741,350,1,0,0,0,1742,1743,7,11, - 0,0,1743,1744,7,4,0,0,1744,1745,7,7,0,0,1745,1746,7,21,0,0,1746, - 1747,7,10,0,0,1747,352,1,0,0,0,1748,1749,7,11,0,0,1749,1750,7,10, - 0,0,1750,1751,7,4,0,0,1751,1752,7,5,0,0,1752,354,1,0,0,0,1753,1754, - 7,11,0,0,1754,1755,7,10,0,0,1755,1756,7,15,0,0,1756,1757,7,16,0, - 0,1757,1758,7,11,0,0,1758,1759,7,0,0,0,1759,1760,7,2,0,0,1760,1761, - 7,23,0,0,1761,1762,7,10,0,0,1762,356,1,0,0,0,1763,1764,7,11,0,0, - 1764,1765,7,10,0,0,1765,1766,7,8,0,0,1766,1767,7,11,0,0,1767,1768, - 7,10,0,0,1768,1769,7,0,0,0,1769,1770,7,17,0,0,1770,358,1,0,0,0,1771, - 1772,7,11,0,0,1772,1773,7,10,0,0,1773,1774,7,7,0,0,1774,1775,7,4, - 0,0,1775,1776,7,6,0,0,1776,1777,7,10,0,0,1777,360,1,0,0,0,1778,1779, - 7,11,0,0,1779,1780,7,10,0,0,1780,1781,7,3,0,0,1781,1782,7,10,0,0, - 1782,1783,7,4,0,0,1783,1784,7,9,0,0,1784,1785,7,4,0,0,1785,1786, - 7,19,0,0,1786,1787,7,12,0,0,1787,1788,7,10,0,0,1788,362,1,0,0,0, - 1789,1790,7,11,0,0,1790,1791,7,10,0,0,1791,1792,7,3,0,0,1792,1793, - 7,12,0,0,1793,1794,7,4,0,0,1794,1795,7,15,0,0,1795,1796,7,10,0,0, - 1796,364,1,0,0,0,1797,1798,7,11,0,0,1798,1799,7,10,0,0,1799,1800, - 7,0,0,0,1800,1801,7,10,0,0,1801,1802,7,9,0,0,1802,366,1,0,0,0,1803, - 1804,7,11,0,0,1804,1805,7,10,0,0,1805,1806,7,0,0,0,1806,1807,7,3, - 0,0,1807,1808,7,10,0,0,1808,1809,7,15,0,0,1809,1810,7,9,0,0,1810, - 368,1,0,0,0,1811,1812,7,11,0,0,1812,1813,7,10,0,0,1813,1814,7,0, - 0,0,1814,1815,7,9,0,0,1815,1816,7,11,0,0,1816,1817,7,2,0,0,1817, - 1818,7,15,0,0,1818,1819,7,9,0,0,1819,370,1,0,0,0,1820,1821,7,11, - 0,0,1821,1822,7,10,0,0,1822,1823,7,23,0,0,1823,1824,7,18,0,0,1824, - 1825,7,1,0,0,1825,1826,7,10,0,0,1826,372,1,0,0,0,1827,1828,7,11, - 0,0,1828,1829,7,2,0,0,1829,1830,7,21,0,0,1830,1831,7,17,0,0,1831, - 1832,7,9,0,0,1832,374,1,0,0,0,1833,1834,7,11,0,0,1834,1835,7,18, - 0,0,1835,1836,7,12,0,0,1836,1837,7,10,0,0,1837,376,1,0,0,0,1838, - 1839,7,11,0,0,1839,1840,7,18,0,0,1840,1841,7,12,0,0,1841,1842,7, - 10,0,0,1842,1843,7,0,0,0,1843,378,1,0,0,0,1844,1845,7,11,0,0,1845, - 1846,7,18,0,0,1846,1847,7,12,0,0,1847,1848,7,12,0,0,1848,1849,7, - 19,0,0,1849,1850,7,4,0,0,1850,1851,7,15,0,0,1851,1852,7,1,0,0,1852, - 380,1,0,0,0,1853,1854,7,11,0,0,1854,1855,7,18,0,0,1855,1856,7,12, - 0,0,1856,1857,7,12,0,0,1857,1858,7,16,0,0,1858,1859,7,3,0,0,1859, - 382,1,0,0,0,1860,1861,7,11,0,0,1861,1862,7,18,0,0,1862,1863,7,20, - 0,0,1863,384,1,0,0,0,1864,1865,7,11,0,0,1865,1866,7,18,0,0,1866, - 1867,7,20,0,0,1867,1868,7,0,0,0,1868,386,1,0,0,0,1869,1870,7,11, - 0,0,1870,1871,7,16,0,0,1871,1872,7,7,0,0,1872,1873,7,7,0,0,1873, - 1874,7,2,0,0,1874,1875,7,7,0,0,1875,1876,7,21,0,0,1876,388,1,0,0, - 0,1877,1878,7,0,0,0,1878,1879,7,15,0,0,1879,1880,7,17,0,0,1880,1881, - 7,10,0,0,1881,1882,7,6,0,0,1882,1883,7,4,0,0,1883,390,1,0,0,0,1884, - 1885,7,0,0,0,1885,1886,7,15,0,0,1886,1887,7,17,0,0,1887,1888,7,10, - 0,0,1888,1889,7,6,0,0,1889,1890,7,4,0,0,1890,1891,7,0,0,0,1891,392, - 1,0,0,0,1892,1893,7,0,0,0,1893,1894,7,10,0,0,1894,1895,7,15,0,0, - 1895,1896,7,18,0,0,1896,1897,7,7,0,0,1897,1898,7,5,0,0,1898,394, - 1,0,0,0,1899,1900,7,0,0,0,1900,1901,7,10,0,0,1901,1902,7,15,0,0, - 1902,1903,7,16,0,0,1903,1904,7,11,0,0,1904,1905,7,2,0,0,1905,1906, - 7,9,0,0,1906,1907,7,13,0,0,1907,396,1,0,0,0,1908,1909,7,0,0,0,1909, - 1910,7,10,0,0,1910,1911,7,10,0,0,1911,1912,7,1,0,0,1912,398,1,0, - 0,0,1913,1914,7,0,0,0,1914,1915,7,10,0,0,1915,1916,7,12,0,0,1916, - 1917,7,10,0,0,1917,1918,7,15,0,0,1918,1919,7,9,0,0,1919,400,1,0, - 0,0,1920,1921,7,0,0,0,1921,1922,7,10,0,0,1922,1923,7,11,0,0,1923, - 1924,7,2,0,0,1924,1925,7,4,0,0,1925,1926,7,12,0,0,1926,1927,7,2, - 0,0,1927,1928,7,14,0,0,1928,1929,7,4,0,0,1929,1930,7,19,0,0,1930, - 1931,7,12,0,0,1931,1932,7,10,0,0,1932,402,1,0,0,0,1933,1934,7,0, - 0,0,1934,1935,7,10,0,0,1935,1936,7,0,0,0,1936,1937,7,0,0,0,1937, - 1938,7,2,0,0,1938,1939,7,18,0,0,1939,1940,7,7,0,0,1940,404,1,0,0, - 0,1941,1942,7,0,0,0,1942,1943,7,10,0,0,1943,1944,7,9,0,0,1944,406, - 1,0,0,0,1945,1946,7,0,0,0,1946,1947,7,10,0,0,1947,1948,7,9,0,0,1948, - 1949,7,0,0,0,1949,408,1,0,0,0,1950,1951,7,0,0,0,1951,1952,7,17,0, - 0,1952,1953,7,18,0,0,1953,1954,7,20,0,0,1954,410,1,0,0,0,1955,1956, - 7,0,0,0,1956,1957,7,18,0,0,1957,1958,7,6,0,0,1958,1959,7,10,0,0, - 1959,412,1,0,0,0,1960,1961,7,0,0,0,1961,1962,7,9,0,0,1962,1963,7, - 4,0,0,1963,1964,7,11,0,0,1964,1965,7,9,0,0,1965,414,1,0,0,0,1966, - 1967,7,0,0,0,1967,1968,7,9,0,0,1968,1969,7,4,0,0,1969,1970,7,9,0, - 0,1970,1971,7,0,0,0,1971,416,1,0,0,0,1972,1973,7,0,0,0,1973,1974, - 7,16,0,0,1974,1975,7,19,0,0,1975,1976,7,0,0,0,1976,1977,7,10,0,0, - 1977,1978,7,9,0,0,1978,418,1,0,0,0,1979,1980,7,0,0,0,1980,1981,7, - 16,0,0,1981,1982,7,19,0,0,1982,1983,7,0,0,0,1983,1984,7,9,0,0,1984, - 1985,7,11,0,0,1985,1986,7,2,0,0,1986,1987,7,7,0,0,1987,1988,7,21, - 0,0,1988,420,1,0,0,0,1989,1990,7,0,0,0,1990,1991,7,13,0,0,1991,1992, - 7,0,0,0,1992,1993,7,9,0,0,1993,1994,7,10,0,0,1994,1995,7,6,0,0,1995, - 422,1,0,0,0,1996,1997,7,9,0,0,1997,1998,7,4,0,0,1998,1999,7,19,0, - 0,1999,2000,7,12,0,0,2000,2001,7,10,0,0,2001,424,1,0,0,0,2002,2003, - 7,9,0,0,2003,2004,7,4,0,0,2004,2005,7,19,0,0,2005,2006,7,12,0,0, - 2006,2007,7,10,0,0,2007,2008,7,0,0,0,2008,426,1,0,0,0,2009,2010, - 7,9,0,0,2010,2011,7,4,0,0,2011,2012,7,19,0,0,2012,2013,7,12,0,0, - 2013,2014,7,10,0,0,2014,2015,7,0,0,0,2015,2016,7,4,0,0,2016,2017, - 7,6,0,0,2017,2018,7,3,0,0,2018,2019,7,12,0,0,2019,2020,7,10,0,0, - 2020,428,1,0,0,0,2021,2022,7,9,0,0,2022,2023,7,10,0,0,2023,2024, - 7,22,0,0,2024,2025,7,9,0,0,2025,430,1,0,0,0,2026,2027,7,9,0,0,2027, - 2028,7,17,0,0,2028,2029,7,10,0,0,2029,2030,7,7,0,0,2030,432,1,0, - 0,0,2031,2032,7,9,0,0,2032,2033,7,2,0,0,2033,2034,7,10,0,0,2034, - 2035,7,0,0,0,2035,434,1,0,0,0,2036,2037,7,9,0,0,2037,2038,7,2,0, - 0,2038,2039,7,6,0,0,2039,2040,7,10,0,0,2040,436,1,0,0,0,2041,2042, - 7,9,0,0,2042,2043,7,2,0,0,2043,2044,7,6,0,0,2044,2045,7,10,0,0,2045, - 2046,7,0,0,0,2046,2047,7,9,0,0,2047,2048,7,4,0,0,2048,2049,7,6,0, - 0,2049,2050,7,3,0,0,2050,438,1,0,0,0,2051,2052,7,9,0,0,2052,2053, - 7,18,0,0,2053,440,1,0,0,0,2054,2055,7,9,0,0,2055,2056,7,11,0,0,2056, - 2057,7,4,0,0,2057,2058,7,7,0,0,2058,2059,7,0,0,0,2059,2060,7,4,0, - 0,2060,2061,7,15,0,0,2061,2062,7,9,0,0,2062,2063,7,2,0,0,2063,2064, - 7,18,0,0,2064,2065,7,7,0,0,2065,442,1,0,0,0,2066,2067,7,9,0,0,2067, - 2068,7,11,0,0,2068,2069,7,16,0,0,2069,2070,7,7,0,0,2070,2071,7,15, - 0,0,2071,2072,7,4,0,0,2072,2073,7,9,0,0,2073,2074,7,10,0,0,2074, - 444,1,0,0,0,2075,2076,7,9,0,0,2076,2077,7,11,0,0,2077,2078,7,16, - 0,0,2078,2079,7,10,0,0,2079,446,1,0,0,0,2080,2081,7,9,0,0,2081,2082, - 7,11,0,0,2082,2083,7,13,0,0,2083,2084,5,95,0,0,2084,2085,7,15,0, - 0,2085,2086,7,4,0,0,2086,2087,7,0,0,0,2087,2088,7,9,0,0,2088,448, - 1,0,0,0,2089,2090,7,9,0,0,2090,2091,7,13,0,0,2091,2092,7,3,0,0,2092, - 2093,7,10,0,0,2093,450,1,0,0,0,2094,2095,7,16,0,0,2095,2096,7,10, - 0,0,2096,2097,7,0,0,0,2097,2098,7,15,0,0,2098,2099,7,4,0,0,2099, - 2100,7,3,0,0,2100,2101,7,10,0,0,2101,452,1,0,0,0,2102,2103,7,16, - 0,0,2103,2104,7,7,0,0,2104,2105,7,19,0,0,2105,2106,7,18,0,0,2106, - 2107,7,16,0,0,2107,2108,7,7,0,0,2108,2109,7,5,0,0,2109,2110,7,10, - 0,0,2110,2111,7,5,0,0,2111,454,1,0,0,0,2112,2113,7,16,0,0,2113,2114, - 7,7,0,0,2114,2115,7,15,0,0,2115,2116,7,18,0,0,2116,2117,7,6,0,0, - 2117,2118,7,6,0,0,2118,2119,7,2,0,0,2119,2120,7,9,0,0,2120,2121, - 7,9,0,0,2121,2122,7,10,0,0,2122,2123,7,5,0,0,2123,456,1,0,0,0,2124, - 2125,7,16,0,0,2125,2126,7,7,0,0,2126,2127,7,2,0,0,2127,2128,7,18, - 0,0,2128,2129,7,7,0,0,2129,458,1,0,0,0,2130,2131,7,16,0,0,2131,2132, - 7,7,0,0,2132,2133,7,6,0,0,2133,2134,7,4,0,0,2134,2135,7,9,0,0,2135, - 2136,7,15,0,0,2136,2137,7,17,0,0,2137,2138,7,10,0,0,2138,2139,7, - 5,0,0,2139,460,1,0,0,0,2140,2141,7,16,0,0,2141,2142,7,7,0,0,2142, - 2143,7,7,0,0,2143,2144,7,10,0,0,2144,2145,7,0,0,0,2145,2146,7,9, - 0,0,2146,462,1,0,0,0,2147,2148,7,16,0,0,2148,2149,7,3,0,0,2149,2150, - 7,5,0,0,2150,2151,7,4,0,0,2151,2152,7,9,0,0,2152,2153,7,10,0,0,2153, - 464,1,0,0,0,2154,2155,7,16,0,0,2155,2156,7,0,0,0,2156,2157,7,10, - 0,0,2157,466,1,0,0,0,2158,2159,7,16,0,0,2159,2160,7,0,0,0,2160,2161, - 7,10,0,0,2161,2162,7,11,0,0,2162,468,1,0,0,0,2163,2164,7,16,0,0, - 2164,2165,7,0,0,0,2165,2166,7,2,0,0,2166,2167,7,7,0,0,2167,2168, - 7,21,0,0,2168,470,1,0,0,0,2169,2170,7,23,0,0,2170,2171,7,4,0,0,2171, - 2172,7,12,0,0,2172,2173,7,2,0,0,2173,2174,7,5,0,0,2174,2175,7,4, - 0,0,2175,2176,7,9,0,0,2176,2177,7,10,0,0,2177,472,1,0,0,0,2178,2179, - 7,23,0,0,2179,2180,7,4,0,0,2180,2181,7,12,0,0,2181,2182,7,16,0,0, - 2182,2183,7,10,0,0,2183,2184,7,0,0,0,2184,474,1,0,0,0,2185,2186, - 7,23,0,0,2186,2187,7,10,0,0,2187,2188,7,11,0,0,2188,2189,7,19,0, - 0,2189,2190,7,18,0,0,2190,2191,7,0,0,0,2191,2192,7,10,0,0,2192,476, - 1,0,0,0,2193,2194,7,23,0,0,2194,2195,7,2,0,0,2195,2196,7,10,0,0, - 2196,2197,7,20,0,0,2197,478,1,0,0,0,2198,2199,7,20,0,0,2199,2200, - 7,17,0,0,2200,2201,7,10,0,0,2201,2202,7,7,0,0,2202,480,1,0,0,0,2203, - 2204,7,20,0,0,2204,2205,7,17,0,0,2205,2206,7,10,0,0,2206,2207,7, - 11,0,0,2207,2208,7,10,0,0,2208,482,1,0,0,0,2209,2210,7,20,0,0,2210, - 2211,7,2,0,0,2211,2212,7,7,0,0,2212,2213,7,5,0,0,2213,2214,7,18, - 0,0,2214,2215,7,20,0,0,2215,484,1,0,0,0,2216,2217,7,20,0,0,2217, - 2218,7,2,0,0,2218,2219,7,9,0,0,2219,2220,7,17,0,0,2220,486,1,0,0, - 0,2221,2222,7,20,0,0,2222,2223,7,2,0,0,2223,2224,7,9,0,0,2224,2225, - 7,17,0,0,2225,2226,7,18,0,0,2226,2227,7,16,0,0,2227,2228,7,9,0,0, - 2228,488,1,0,0,0,2229,2230,7,20,0,0,2230,2231,7,18,0,0,2231,2232, - 7,11,0,0,2232,2233,7,1,0,0,2233,490,1,0,0,0,2234,2235,7,20,0,0,2235, - 2236,7,11,0,0,2236,2237,7,2,0,0,2237,2238,7,9,0,0,2238,2239,7,10, - 0,0,2239,492,1,0,0,0,2240,2241,7,13,0,0,2241,2242,7,10,0,0,2242, - 2243,7,4,0,0,2243,2244,7,11,0,0,2244,494,1,0,0,0,2245,2246,7,14, - 0,0,2246,2247,7,18,0,0,2247,2248,7,7,0,0,2248,2249,7,10,0,0,2249, - 496,1,0,0,0,2250,2251,5,61,0,0,2251,498,1,0,0,0,2252,2253,5,60,0, - 0,2253,2257,5,62,0,0,2254,2255,5,33,0,0,2255,2257,5,61,0,0,2256, - 2252,1,0,0,0,2256,2254,1,0,0,0,2257,500,1,0,0,0,2258,2259,5,60,0, - 0,2259,502,1,0,0,0,2260,2261,5,60,0,0,2261,2262,5,61,0,0,2262,504, - 1,0,0,0,2263,2264,5,62,0,0,2264,506,1,0,0,0,2265,2266,5,62,0,0,2266, - 2267,5,61,0,0,2267,508,1,0,0,0,2268,2269,5,43,0,0,2269,510,1,0,0, - 0,2270,2271,5,45,0,0,2271,512,1,0,0,0,2272,2273,5,42,0,0,2273,514, - 1,0,0,0,2274,2275,5,47,0,0,2275,516,1,0,0,0,2276,2277,5,37,0,0,2277, - 518,1,0,0,0,2278,2279,5,124,0,0,2279,2280,5,124,0,0,2280,520,1,0, - 0,0,2281,2282,5,63,0,0,2282,522,1,0,0,0,2283,2289,5,39,0,0,2284, - 2288,8,25,0,0,2285,2286,5,39,0,0,2286,2288,5,39,0,0,2287,2284,1, - 0,0,0,2287,2285,1,0,0,0,2288,2291,1,0,0,0,2289,2287,1,0,0,0,2289, - 2290,1,0,0,0,2290,2292,1,0,0,0,2291,2289,1,0,0,0,2292,2293,5,39, - 0,0,2293,524,1,0,0,0,2294,2295,7,16,0,0,2295,2296,5,38,0,0,2296, - 2297,5,39,0,0,2297,2303,1,0,0,0,2298,2302,8,25,0,0,2299,2300,5,39, - 0,0,2300,2302,5,39,0,0,2301,2298,1,0,0,0,2301,2299,1,0,0,0,2302, - 2305,1,0,0,0,2303,2301,1,0,0,0,2303,2304,1,0,0,0,2304,2306,1,0,0, - 0,2305,2303,1,0,0,0,2306,2307,5,39,0,0,2307,526,1,0,0,0,2308,2309, - 7,22,0,0,2309,2310,5,39,0,0,2310,2314,1,0,0,0,2311,2313,8,25,0,0, - 2312,2311,1,0,0,0,2313,2316,1,0,0,0,2314,2312,1,0,0,0,2314,2315, - 1,0,0,0,2315,2317,1,0,0,0,2316,2314,1,0,0,0,2317,2318,5,39,0,0,2318, - 528,1,0,0,0,2319,2321,3,547,273,0,2320,2319,1,0,0,0,2321,2322,1, - 0,0,0,2322,2320,1,0,0,0,2322,2323,1,0,0,0,2323,530,1,0,0,0,2324, - 2326,3,547,273,0,2325,2324,1,0,0,0,2326,2327,1,0,0,0,2327,2325,1, - 0,0,0,2327,2328,1,0,0,0,2328,2329,1,0,0,0,2329,2333,5,46,0,0,2330, - 2332,3,547,273,0,2331,2330,1,0,0,0,2332,2335,1,0,0,0,2333,2331,1, - 0,0,0,2333,2334,1,0,0,0,2334,2343,1,0,0,0,2335,2333,1,0,0,0,2336, - 2338,5,46,0,0,2337,2339,3,547,273,0,2338,2337,1,0,0,0,2339,2340, - 1,0,0,0,2340,2338,1,0,0,0,2340,2341,1,0,0,0,2341,2343,1,0,0,0,2342, - 2325,1,0,0,0,2342,2336,1,0,0,0,2343,532,1,0,0,0,2344,2346,3,547, - 273,0,2345,2344,1,0,0,0,2346,2347,1,0,0,0,2347,2345,1,0,0,0,2347, - 2348,1,0,0,0,2348,2356,1,0,0,0,2349,2353,5,46,0,0,2350,2352,3,547, - 273,0,2351,2350,1,0,0,0,2352,2355,1,0,0,0,2353,2351,1,0,0,0,2353, - 2354,1,0,0,0,2354,2357,1,0,0,0,2355,2353,1,0,0,0,2356,2349,1,0,0, - 0,2356,2357,1,0,0,0,2357,2358,1,0,0,0,2358,2359,3,545,272,0,2359, - 2369,1,0,0,0,2360,2362,5,46,0,0,2361,2363,3,547,273,0,2362,2361, - 1,0,0,0,2363,2364,1,0,0,0,2364,2362,1,0,0,0,2364,2365,1,0,0,0,2365, - 2366,1,0,0,0,2366,2367,3,545,272,0,2367,2369,1,0,0,0,2368,2345,1, - 0,0,0,2368,2360,1,0,0,0,2369,534,1,0,0,0,2370,2373,3,549,274,0,2371, - 2373,5,95,0,0,2372,2370,1,0,0,0,2372,2371,1,0,0,0,2373,2379,1,0, - 0,0,2374,2378,3,549,274,0,2375,2378,3,547,273,0,2376,2378,5,95,0, - 0,2377,2374,1,0,0,0,2377,2375,1,0,0,0,2377,2376,1,0,0,0,2378,2381, - 1,0,0,0,2379,2377,1,0,0,0,2379,2380,1,0,0,0,2380,536,1,0,0,0,2381, - 2379,1,0,0,0,2382,2386,3,547,273,0,2383,2387,3,549,274,0,2384,2387, - 3,547,273,0,2385,2387,5,95,0,0,2386,2383,1,0,0,0,2386,2384,1,0,0, - 0,2386,2385,1,0,0,0,2387,2388,1,0,0,0,2388,2386,1,0,0,0,2388,2389, - 1,0,0,0,2389,538,1,0,0,0,2390,2396,5,34,0,0,2391,2395,8,26,0,0,2392, - 2393,5,34,0,0,2393,2395,5,34,0,0,2394,2391,1,0,0,0,2394,2392,1,0, - 0,0,2395,2398,1,0,0,0,2396,2394,1,0,0,0,2396,2397,1,0,0,0,2397,2399, - 1,0,0,0,2398,2396,1,0,0,0,2399,2400,5,34,0,0,2400,540,1,0,0,0,2401, - 2407,5,96,0,0,2402,2406,8,27,0,0,2403,2404,5,96,0,0,2404,2406,5, - 96,0,0,2405,2402,1,0,0,0,2405,2403,1,0,0,0,2406,2409,1,0,0,0,2407, - 2405,1,0,0,0,2407,2408,1,0,0,0,2408,2410,1,0,0,0,2409,2407,1,0,0, - 0,2410,2411,5,96,0,0,2411,542,1,0,0,0,2412,2413,5,59,0,0,2413,544, - 1,0,0,0,2414,2416,7,10,0,0,2415,2417,7,28,0,0,2416,2415,1,0,0,0, - 2416,2417,1,0,0,0,2417,2419,1,0,0,0,2418,2420,3,547,273,0,2419,2418, - 1,0,0,0,2420,2421,1,0,0,0,2421,2419,1,0,0,0,2421,2422,1,0,0,0,2422, - 546,1,0,0,0,2423,2424,7,29,0,0,2424,548,1,0,0,0,2425,2426,7,30,0, - 0,2426,550,1,0,0,0,2427,2428,5,45,0,0,2428,2429,5,45,0,0,2429,2433, - 1,0,0,0,2430,2432,8,31,0,0,2431,2430,1,0,0,0,2432,2435,1,0,0,0,2433, - 2431,1,0,0,0,2433,2434,1,0,0,0,2434,2437,1,0,0,0,2435,2433,1,0,0, - 0,2436,2438,5,13,0,0,2437,2436,1,0,0,0,2437,2438,1,0,0,0,2438,2440, - 1,0,0,0,2439,2441,5,10,0,0,2440,2439,1,0,0,0,2440,2441,1,0,0,0,2441, - 2442,1,0,0,0,2442,2443,6,275,0,0,2443,552,1,0,0,0,2444,2445,5,47, - 0,0,2445,2446,5,42,0,0,2446,2450,1,0,0,0,2447,2449,9,0,0,0,2448, - 2447,1,0,0,0,2449,2452,1,0,0,0,2450,2451,1,0,0,0,2450,2448,1,0,0, - 0,2451,2453,1,0,0,0,2452,2450,1,0,0,0,2453,2454,5,42,0,0,2454,2455, - 5,47,0,0,2455,2456,1,0,0,0,2456,2457,6,276,0,0,2457,554,1,0,0,0, - 2458,2460,7,32,0,0,2459,2458,1,0,0,0,2460,2461,1,0,0,0,2461,2459, - 1,0,0,0,2461,2462,1,0,0,0,2462,2463,1,0,0,0,2463,2464,6,277,0,0, - 2464,556,1,0,0,0,2465,2466,9,0,0,0,2466,558,1,0,0,0,33,0,2256,2287, - 2289,2301,2303,2314,2322,2327,2333,2340,2342,2347,2353,2356,2364, - 2368,2372,2377,2379,2386,2388,2394,2396,2405,2407,2416,2421,2433, - 2437,2440,2450,2461,1,0,1,0 + 1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243, + 1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245, + 1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246,1,246, + 1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250, + 1,250,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,252,1,252,1,252, + 1,253,1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254, + 1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256, + 1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257, + 1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259, + 1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263, + 1,263,1,264,1,264,1,264,1,264,1,264,1,265,1,265,1,265,1,265,1,265, + 1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267,1,267,1,267, + 1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,269,1,269,1,269,1,269, + 1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270, + 1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,271,1,271, + 1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273, + 1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274, + 1,274,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,1,276, + 1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279, + 1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280, + 1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282, + 1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283, + 1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,285,1,285,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288, + 1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,290, + 1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,1,292, + 1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294, + 1,294,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295, + 1,295,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297, + 1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298, + 1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,300,1,300, + 1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302, + 1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304, + 1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305, + 1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,307, + 1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308,1,309,1,309,1,309, + 1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,312,1,312, + 1,312,1,312,3,312,2871,8,312,1,313,1,313,1,314,1,314,1,314,1,315, + 1,315,1,316,1,316,1,316,1,317,1,317,1,318,1,318,1,319,1,319,1,320, + 1,320,1,321,1,321,1,322,1,322,1,322,1,323,1,323,1,324,1,324,1,325, + 1,325,1,325,1,325,5,325,2904,8,325,10,325,12,325,2907,9,325,1,325, + 1,325,1,326,1,326,1,326,1,326,1,326,1,326,1,326,5,326,2918,8,326, + 10,326,12,326,2921,9,326,1,326,1,326,1,327,1,327,1,327,1,327,5,327, + 2929,8,327,10,327,12,327,2932,9,327,1,327,1,327,1,328,1,328,1,328, + 1,328,3,328,2940,8,328,1,329,1,329,1,329,3,329,2945,8,329,1,329, + 1,329,3,329,2949,8,329,1,330,4,330,2952,8,330,11,330,12,330,2953, + 1,330,1,330,5,330,2958,8,330,10,330,12,330,2961,9,330,3,330,2963, + 8,330,1,330,1,330,1,330,1,330,4,330,2969,8,330,11,330,12,330,2970, + 1,330,1,330,3,330,2975,8,330,1,331,1,331,3,331,2979,8,331,1,331, + 1,331,1,331,5,331,2984,8,331,10,331,12,331,2987,9,331,1,332,1,332, + 1,332,1,332,4,332,2993,8,332,11,332,12,332,2994,1,333,1,333,1,333, + 1,333,5,333,3001,8,333,10,333,12,333,3004,9,333,1,333,1,333,1,334, + 1,334,1,334,1,334,5,334,3012,8,334,10,334,12,334,3015,9,334,1,334, + 1,334,1,335,1,335,3,335,3021,8,335,1,335,5,335,3024,8,335,10,335, + 12,335,3027,9,335,1,336,1,336,1,336,1,336,3,336,3033,8,336,1,336, + 1,336,3,336,3037,8,336,4,336,3039,8,336,11,336,12,336,3040,1,337, + 1,337,1,337,1,337,3,337,3047,8,337,1,337,4,337,3050,8,337,11,337, + 12,337,3051,1,338,1,338,1,338,1,338,3,338,3058,8,338,1,338,4,338, + 3061,8,338,11,338,12,338,3062,1,339,1,339,3,339,3067,8,339,1,339, + 4,339,3070,8,339,11,339,12,339,3071,1,340,1,340,1,341,1,341,1,342, + 1,342,1,342,1,342,5,342,3082,8,342,10,342,12,342,3085,9,342,1,342, + 3,342,3088,8,342,1,342,3,342,3091,8,342,1,342,1,342,1,343,1,343, + 1,343,1,343,5,343,3099,8,343,10,343,12,343,3102,9,343,1,343,1,343, + 1,343,1,343,1,343,1,344,4,344,3110,8,344,11,344,12,344,3111,1,344, + 1,344,1,345,1,345,1,3100,0,346,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, + 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37, + 19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, + 30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81, + 41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51, + 103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121, + 61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70, + 141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159, + 80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89, + 179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197, + 99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107, + 215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115, + 231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123, + 247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131, + 263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139, + 279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147, + 295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155, + 311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163, + 327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171, + 343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179, + 359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187, + 375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195, + 391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203, + 407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211, + 423,212,425,213,427,214,429,215,431,216,433,217,435,218,437,219, + 439,220,441,221,443,222,445,223,447,224,449,225,451,226,453,227, + 455,228,457,229,459,230,461,231,463,232,465,233,467,234,469,235, + 471,236,473,237,475,238,477,239,479,240,481,241,483,242,485,243, + 487,244,489,245,491,246,493,247,495,248,497,249,499,250,501,251, + 503,252,505,253,507,254,509,255,511,256,513,257,515,258,517,259, + 519,260,521,261,523,262,525,263,527,264,529,265,531,266,533,267, + 535,268,537,269,539,270,541,271,543,272,545,273,547,274,549,275, + 551,276,553,277,555,278,557,279,559,280,561,281,563,282,565,283, + 567,284,569,285,571,286,573,287,575,288,577,289,579,290,581,291, + 583,292,585,293,587,294,589,295,591,296,593,297,595,298,597,299, + 599,300,601,301,603,302,605,303,607,304,609,305,611,306,613,307, + 615,308,617,309,619,310,621,311,623,312,625,313,627,314,629,315, + 631,316,633,317,635,318,637,319,639,320,641,321,643,322,645,323, + 647,324,649,325,651,326,653,327,655,328,657,329,659,330,661,331, + 663,332,665,333,667,334,669,335,671,0,673,0,675,0,677,0,679,0,681, + 0,683,0,685,336,687,337,689,338,691,339,1,0,37,2,0,83,83,115,115, + 2,0,75,75,107,107,2,0,73,73,105,105,2,0,80,80,112,112,2,0,65,65, + 97,97,2,0,66,66,98,98,2,0,69,69,101,101,2,0,78,78,110,110,2,0,84, + 84,116,116,2,0,68,68,100,100,2,0,77,77,109,109,2,0,70,70,102,102, + 2,0,82,82,114,114,2,0,76,76,108,108,2,0,89,89,121,121,2,0,90,90, + 122,122,2,0,67,67,99,99,2,0,85,85,117,117,2,0,72,72,104,104,2,0, + 79,79,111,111,2,0,71,71,103,103,2,0,87,87,119,119,2,0,88,88,120, + 120,2,0,86,86,118,118,2,0,74,74,106,106,2,0,81,81,113,113,1,0,39, + 39,1,0,34,34,1,0,96,96,2,0,65,70,97,102,1,0,48,55,1,0,48,49,2,0, + 43,43,45,45,1,0,48,57,2,0,65,90,97,122,2,0,10,10,13,13,3,0,9,10, + 13,13,32,32,3152,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0, + 0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0, + 0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0, + 0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0, + 0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0, + 0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0, + 0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0, + 0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0, + 0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0, + 0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0, + 0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0, + 0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117, + 1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0, + 0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1, + 0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0, + 145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0, + 0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163, + 1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0, + 0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1, + 0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0, + 191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0, + 0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209, + 1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0, + 0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1, + 0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0, + 237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0, + 0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255, + 1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0, + 0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1, + 0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, + 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0, + 0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301, + 1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0, + 0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1, + 0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0, + 329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0, + 0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347, + 1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0, + 0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1, + 0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0, + 375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0, + 0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393, + 1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0, + 0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1, + 0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0, + 421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0, + 0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439, + 1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0, + 0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1, + 0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0, + 467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0, + 0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485, + 1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0, + 0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1, + 0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0, + 513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0, + 0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531, + 1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0, + 0,541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1, + 0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0, + 559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0, + 0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577, + 1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0, + 0,587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1, + 0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0, + 605,1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0, + 0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623, + 1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0, + 0,633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1, + 0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0, + 651,1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0, + 0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669, + 1,0,0,0,0,685,1,0,0,0,0,687,1,0,0,0,0,689,1,0,0,0,0,691,1,0,0,0, + 1,693,1,0,0,0,3,695,1,0,0,0,5,697,1,0,0,0,7,699,1,0,0,0,9,701,1, + 0,0,0,11,706,1,0,0,0,13,709,1,0,0,0,15,712,1,0,0,0,17,714,1,0,0, + 0,19,716,1,0,0,0,21,718,1,0,0,0,23,720,1,0,0,0,25,722,1,0,0,0,27, + 724,1,0,0,0,29,727,1,0,0,0,31,730,1,0,0,0,33,732,1,0,0,0,35,734, + 1,0,0,0,37,741,1,0,0,0,39,745,1,0,0,0,41,751,1,0,0,0,43,757,1,0, + 0,0,45,761,1,0,0,0,47,767,1,0,0,0,49,775,1,0,0,0,51,779,1,0,0,0, + 53,783,1,0,0,0,55,789,1,0,0,0,57,792,1,0,0,0,59,796,1,0,0,0,61,799, + 1,0,0,0,63,813,1,0,0,0,65,819,1,0,0,0,67,829,1,0,0,0,69,837,1,0, + 0,0,71,842,1,0,0,0,73,845,1,0,0,0,75,850,1,0,0,0,77,857,1,0,0,0, + 79,865,1,0,0,0,81,870,1,0,0,0,83,875,1,0,0,0,85,883,1,0,0,0,87,892, + 1,0,0,0,89,899,1,0,0,0,91,907,1,0,0,0,93,915,1,0,0,0,95,922,1,0, + 0,0,97,932,1,0,0,0,99,944,1,0,0,0,101,955,1,0,0,0,103,961,1,0,0, + 0,105,973,1,0,0,0,107,980,1,0,0,0,109,986,1,0,0,0,111,991,1,0,0, + 0,113,999,1,0,0,0,115,1015,1,0,0,0,117,1028,1,0,0,0,119,1041,1,0, + 0,0,121,1054,1,0,0,0,123,1069,1,0,0,0,125,1082,1,0,0,0,127,1100, + 1,0,0,0,129,1113,1,0,0,0,131,1118,1,0,0,0,133,1123,1,0,0,0,135,1127, + 1,0,0,0,137,1138,1,0,0,0,139,1146,1,0,0,0,141,1154,1,0,0,0,143,1161, + 1,0,0,0,145,1169,1,0,0,0,147,1176,1,0,0,0,149,1181,1,0,0,0,151,1186, + 1,0,0,0,153,1195,1,0,0,0,155,1206,1,0,0,0,157,1220,1,0,0,0,159,1229, + 1,0,0,0,161,1241,1,0,0,0,163,1244,1,0,0,0,165,1251,1,0,0,0,167,1256, + 1,0,0,0,169,1261,1,0,0,0,171,1267,1,0,0,0,173,1274,1,0,0,0,175,1283, + 1,0,0,0,177,1287,1,0,0,0,179,1293,1,0,0,0,181,1300,1,0,0,0,183,1307, + 1,0,0,0,185,1317,1,0,0,0,187,1325,1,0,0,0,189,1332,1,0,0,0,191,1340, + 1,0,0,0,193,1348,1,0,0,0,195,1354,1,0,0,0,197,1360,1,0,0,0,199,1367, + 1,0,0,0,201,1373,1,0,0,0,203,1379,1,0,0,0,205,1389,1,0,0,0,207,1393, + 1,0,0,0,209,1400,1,0,0,0,211,1405,1,0,0,0,213,1410,1,0,0,0,215,1419, + 1,0,0,0,217,1429,1,0,0,0,219,1435,1,0,0,0,221,1441,1,0,0,0,223,1449, + 1,0,0,0,225,1456,1,0,0,0,227,1465,1,0,0,0,229,1471,1,0,0,0,231,1480, + 1,0,0,0,233,1487,1,0,0,0,235,1494,1,0,0,0,237,1499,1,0,0,0,239,1502, + 1,0,0,0,241,1509,1,0,0,0,243,1519,1,0,0,0,245,1522,1,0,0,0,247,1532, + 1,0,0,0,249,1540,1,0,0,0,251,1546,1,0,0,0,253,1552,1,0,0,0,255,1559, + 1,0,0,0,257,1569,1,0,0,0,259,1578,1,0,0,0,261,1583,1,0,0,0,263,1591, + 1,0,0,0,265,1594,1,0,0,0,267,1597,1,0,0,0,269,1607,1,0,0,0,271,1615, + 1,0,0,0,273,1620,1,0,0,0,275,1625,1,0,0,0,277,1636,1,0,0,0,279,1648, + 1,0,0,0,281,1660,1,0,0,0,283,1671,1,0,0,0,285,1682,1,0,0,0,287,1693, + 1,0,0,0,289,1698,1,0,0,0,291,1702,1,0,0,0,293,1707,1,0,0,0,295,1716, + 1,0,0,0,297,1721,1,0,0,0,299,1729,1,0,0,0,301,1737,1,0,0,0,303,1743, + 1,0,0,0,305,1748,1,0,0,0,307,1754,1,0,0,0,309,1759,1,0,0,0,311,1765, + 1,0,0,0,313,1773,1,0,0,0,315,1779,1,0,0,0,317,1789,1,0,0,0,319,1804, + 1,0,0,0,321,1812,1,0,0,0,323,1817,1,0,0,0,325,1821,1,0,0,0,327,1827, + 1,0,0,0,329,1835,1,0,0,0,331,1843,1,0,0,0,333,1859,1,0,0,0,335,1872, + 1,0,0,0,337,1881,1,0,0,0,339,1887,1,0,0,0,341,1894,1,0,0,0,343,1900, + 1,0,0,0,345,1908,1,0,0,0,347,1915,1,0,0,0,349,1920,1,0,0,0,351,1924, + 1,0,0,0,353,1928,1,0,0,0,355,1933,1,0,0,0,357,1938,1,0,0,0,359,1941, + 1,0,0,0,361,1946,1,0,0,0,363,1956,1,0,0,0,365,1960,1,0,0,0,367,1965, + 1,0,0,0,369,1972,1,0,0,0,371,1978,1,0,0,0,373,1985,1,0,0,0,375,1988, + 1,0,0,0,377,1995,1,0,0,0,379,2000,1,0,0,0,381,2003,1,0,0,0,383,2007, + 1,0,0,0,385,2012,1,0,0,0,387,2019,1,0,0,0,389,2022,1,0,0,0,391,2028, + 1,0,0,0,393,2039,1,0,0,0,395,2045,1,0,0,0,397,2052,1,0,0,0,399,2057, + 1,0,0,0,401,2066,1,0,0,0,403,2076,1,0,0,0,405,2087,1,0,0,0,407,2095, + 1,0,0,0,409,2100,1,0,0,0,411,2105,1,0,0,0,413,2113,1,0,0,0,415,2117, + 1,0,0,0,417,2124,1,0,0,0,419,2132,1,0,0,0,421,2137,1,0,0,0,423,2146, + 1,0,0,0,425,2156,1,0,0,0,427,2166,1,0,0,0,429,2174,1,0,0,0,431,2185, + 1,0,0,0,433,2196,1,0,0,0,435,2202,1,0,0,0,437,2209,1,0,0,0,439,2215, + 1,0,0,0,441,2220,1,0,0,0,443,2230,1,0,0,0,445,2238,1,0,0,0,447,2245, + 1,0,0,0,449,2252,1,0,0,0,451,2263,1,0,0,0,453,2271,1,0,0,0,455,2277, + 1,0,0,0,457,2285,1,0,0,0,459,2294,1,0,0,0,461,2301,1,0,0,0,463,2311, + 1,0,0,0,465,2319,1,0,0,0,467,2326,1,0,0,0,469,2332,1,0,0,0,471,2337, + 1,0,0,0,473,2343,1,0,0,0,475,2352,1,0,0,0,477,2359,1,0,0,0,479,2363, + 1,0,0,0,481,2368,1,0,0,0,483,2376,1,0,0,0,485,2383,1,0,0,0,487,2390, + 1,0,0,0,489,2398,1,0,0,0,491,2405,1,0,0,0,493,2414,1,0,0,0,495,2419, + 1,0,0,0,497,2426,1,0,0,0,499,2439,1,0,0,0,501,2447,1,0,0,0,503,2451, + 1,0,0,0,505,2456,1,0,0,0,507,2461,1,0,0,0,509,2466,1,0,0,0,511,2472, + 1,0,0,0,513,2478,1,0,0,0,515,2485,1,0,0,0,517,2495,1,0,0,0,519,2502, + 1,0,0,0,521,2508,1,0,0,0,523,2515,1,0,0,0,525,2527,1,0,0,0,527,2532, + 1,0,0,0,529,2539,1,0,0,0,531,2544,1,0,0,0,533,2549,1,0,0,0,535,2554, + 1,0,0,0,537,2564,1,0,0,0,539,2567,1,0,0,0,541,2576,1,0,0,0,543,2588, + 1,0,0,0,545,2593,1,0,0,0,547,2598,1,0,0,0,549,2607,1,0,0,0,551,2616, + 1,0,0,0,553,2621,1,0,0,0,555,2629,1,0,0,0,557,2639,1,0,0,0,559,2651, + 1,0,0,0,561,2665,1,0,0,0,563,2671,1,0,0,0,565,2678,1,0,0,0,567,2686, + 1,0,0,0,569,2696,1,0,0,0,571,2703,1,0,0,0,573,2709,1,0,0,0,575,2716, + 1,0,0,0,577,2720,1,0,0,0,579,2725,1,0,0,0,581,2731,1,0,0,0,583,2737, + 1,0,0,0,585,2743,1,0,0,0,587,2748,1,0,0,0,589,2757,1,0,0,0,591,2763, + 1,0,0,0,593,2770,1,0,0,0,595,2778,1,0,0,0,597,2786,1,0,0,0,599,2791, + 1,0,0,0,601,2796,1,0,0,0,603,2802,1,0,0,0,605,2808,1,0,0,0,607,2815, + 1,0,0,0,609,2820,1,0,0,0,611,2827,1,0,0,0,613,2835,1,0,0,0,615,2840, + 1,0,0,0,617,2848,1,0,0,0,619,2854,1,0,0,0,621,2859,1,0,0,0,623,2864, + 1,0,0,0,625,2870,1,0,0,0,627,2872,1,0,0,0,629,2874,1,0,0,0,631,2877, + 1,0,0,0,633,2879,1,0,0,0,635,2882,1,0,0,0,637,2884,1,0,0,0,639,2886, + 1,0,0,0,641,2888,1,0,0,0,643,2890,1,0,0,0,645,2892,1,0,0,0,647,2895, + 1,0,0,0,649,2897,1,0,0,0,651,2899,1,0,0,0,653,2910,1,0,0,0,655,2924, + 1,0,0,0,657,2939,1,0,0,0,659,2948,1,0,0,0,661,2974,1,0,0,0,663,2978, + 1,0,0,0,665,2988,1,0,0,0,667,2996,1,0,0,0,669,3007,1,0,0,0,671,3018, + 1,0,0,0,673,3028,1,0,0,0,675,3042,1,0,0,0,677,3053,1,0,0,0,679,3064, + 1,0,0,0,681,3073,1,0,0,0,683,3075,1,0,0,0,685,3077,1,0,0,0,687,3094, + 1,0,0,0,689,3109,1,0,0,0,691,3115,1,0,0,0,693,694,5,40,0,0,694,2, + 1,0,0,0,695,696,5,41,0,0,696,4,1,0,0,0,697,698,5,44,0,0,698,6,1, + 0,0,0,699,700,5,46,0,0,700,8,1,0,0,0,701,702,7,0,0,0,702,703,7,1, + 0,0,703,704,7,2,0,0,704,705,7,3,0,0,705,10,1,0,0,0,706,707,5,61, + 0,0,707,708,5,62,0,0,708,12,1,0,0,0,709,710,5,45,0,0,710,711,5,62, + 0,0,711,14,1,0,0,0,712,713,5,91,0,0,713,16,1,0,0,0,714,715,5,93, + 0,0,715,18,1,0,0,0,716,717,5,58,0,0,717,20,1,0,0,0,718,719,5,124, + 0,0,719,22,1,0,0,0,720,721,5,94,0,0,721,24,1,0,0,0,722,723,5,36, + 0,0,723,26,1,0,0,0,724,725,5,123,0,0,725,726,5,45,0,0,726,28,1,0, + 0,0,727,728,5,45,0,0,728,729,5,125,0,0,729,30,1,0,0,0,730,731,5, + 123,0,0,731,32,1,0,0,0,732,733,5,125,0,0,733,34,1,0,0,0,734,735, + 7,4,0,0,735,736,7,5,0,0,736,737,7,0,0,0,737,738,7,6,0,0,738,739, + 7,7,0,0,739,740,7,8,0,0,740,36,1,0,0,0,741,742,7,4,0,0,742,743,7, + 9,0,0,743,744,7,9,0,0,744,38,1,0,0,0,745,746,7,4,0,0,746,747,7,9, + 0,0,747,748,7,10,0,0,748,749,7,2,0,0,749,750,7,7,0,0,750,40,1,0, + 0,0,751,752,7,4,0,0,752,753,7,11,0,0,753,754,7,8,0,0,754,755,7,6, + 0,0,755,756,7,12,0,0,756,42,1,0,0,0,757,758,7,4,0,0,758,759,7,13, + 0,0,759,760,7,13,0,0,760,44,1,0,0,0,761,762,7,4,0,0,762,763,7,13, + 0,0,763,764,7,8,0,0,764,765,7,6,0,0,765,766,7,12,0,0,766,46,1,0, + 0,0,767,768,7,4,0,0,768,769,7,7,0,0,769,770,7,4,0,0,770,771,7,13, + 0,0,771,772,7,14,0,0,772,773,7,15,0,0,773,774,7,6,0,0,774,48,1,0, + 0,0,775,776,7,4,0,0,776,777,7,7,0,0,777,778,7,9,0,0,778,50,1,0,0, + 0,779,780,7,4,0,0,780,781,7,7,0,0,781,782,7,14,0,0,782,52,1,0,0, + 0,783,784,7,4,0,0,784,785,7,12,0,0,785,786,7,12,0,0,786,787,7,4, + 0,0,787,788,7,14,0,0,788,54,1,0,0,0,789,790,7,4,0,0,790,791,7,0, + 0,0,791,56,1,0,0,0,792,793,7,4,0,0,793,794,7,0,0,0,794,795,7,16, + 0,0,795,58,1,0,0,0,796,797,7,4,0,0,797,798,7,8,0,0,798,60,1,0,0, + 0,799,800,7,4,0,0,800,801,7,17,0,0,801,802,7,8,0,0,802,803,7,18, + 0,0,803,804,7,19,0,0,804,805,7,12,0,0,805,806,7,2,0,0,806,807,7, + 15,0,0,807,808,7,4,0,0,808,809,7,8,0,0,809,810,7,2,0,0,810,811,7, + 19,0,0,811,812,7,7,0,0,812,62,1,0,0,0,813,814,7,5,0,0,814,815,7, + 6,0,0,815,816,7,20,0,0,816,817,7,2,0,0,817,818,7,7,0,0,818,64,1, + 0,0,0,819,820,7,5,0,0,820,821,7,6,0,0,821,822,7,12,0,0,822,823,7, + 7,0,0,823,824,7,19,0,0,824,825,7,17,0,0,825,826,7,13,0,0,826,827, + 7,13,0,0,827,828,7,2,0,0,828,66,1,0,0,0,829,830,7,5,0,0,830,831, + 7,6,0,0,831,832,7,8,0,0,832,833,7,21,0,0,833,834,7,6,0,0,834,835, + 7,6,0,0,835,836,7,7,0,0,836,68,1,0,0,0,837,838,7,5,0,0,838,839,7, + 19,0,0,839,840,7,8,0,0,840,841,7,18,0,0,841,70,1,0,0,0,842,843,7, + 5,0,0,843,844,7,14,0,0,844,72,1,0,0,0,845,846,7,16,0,0,846,847,7, + 4,0,0,847,848,7,13,0,0,848,849,7,13,0,0,849,74,1,0,0,0,850,851,7, + 16,0,0,851,852,7,4,0,0,852,853,7,13,0,0,853,854,7,13,0,0,854,855, + 7,6,0,0,855,856,7,9,0,0,856,76,1,0,0,0,857,858,7,16,0,0,858,859, + 7,4,0,0,859,860,7,0,0,0,860,861,7,16,0,0,861,862,7,4,0,0,862,863, + 7,9,0,0,863,864,7,6,0,0,864,78,1,0,0,0,865,866,7,16,0,0,866,867, + 7,4,0,0,867,868,7,0,0,0,868,869,7,6,0,0,869,80,1,0,0,0,870,871,7, + 16,0,0,871,872,7,4,0,0,872,873,7,0,0,0,873,874,7,8,0,0,874,82,1, + 0,0,0,875,876,7,16,0,0,876,877,7,4,0,0,877,878,7,8,0,0,878,879,7, + 4,0,0,879,880,7,13,0,0,880,881,7,19,0,0,881,882,7,20,0,0,882,84, + 1,0,0,0,883,884,7,16,0,0,884,885,7,4,0,0,885,886,7,8,0,0,886,887, + 7,4,0,0,887,888,7,13,0,0,888,889,7,19,0,0,889,890,7,20,0,0,890,891, + 7,0,0,0,891,86,1,0,0,0,892,893,7,16,0,0,893,894,7,19,0,0,894,895, + 7,13,0,0,895,896,7,17,0,0,896,897,7,10,0,0,897,898,7,7,0,0,898,88, + 1,0,0,0,899,900,7,16,0,0,900,901,7,19,0,0,901,902,7,13,0,0,902,903, + 7,17,0,0,903,904,7,10,0,0,904,905,7,7,0,0,905,906,7,0,0,0,906,90, + 1,0,0,0,907,908,7,16,0,0,908,909,7,19,0,0,909,910,7,10,0,0,910,911, + 7,10,0,0,911,912,7,6,0,0,912,913,7,7,0,0,913,914,7,8,0,0,914,92, + 1,0,0,0,915,916,7,16,0,0,916,917,7,19,0,0,917,918,7,10,0,0,918,919, + 7,10,0,0,919,920,7,2,0,0,920,921,7,8,0,0,921,94,1,0,0,0,922,923, + 7,16,0,0,923,924,7,19,0,0,924,925,7,10,0,0,925,926,7,10,0,0,926, + 927,7,2,0,0,927,928,7,8,0,0,928,929,7,8,0,0,929,930,7,6,0,0,930, + 931,7,9,0,0,931,96,1,0,0,0,932,933,7,16,0,0,933,934,7,19,0,0,934, + 935,7,7,0,0,935,936,7,9,0,0,936,937,7,2,0,0,937,938,7,8,0,0,938, + 939,7,2,0,0,939,940,7,19,0,0,940,941,7,7,0,0,941,942,7,4,0,0,942, + 943,7,13,0,0,943,98,1,0,0,0,944,945,7,16,0,0,945,946,7,19,0,0,946, + 947,7,7,0,0,947,948,7,0,0,0,948,949,7,8,0,0,949,950,7,12,0,0,950, + 951,7,4,0,0,951,952,7,2,0,0,952,953,7,7,0,0,953,954,7,8,0,0,954, + 100,1,0,0,0,955,956,7,16,0,0,956,957,7,19,0,0,957,958,7,17,0,0,958, + 959,7,7,0,0,959,960,7,8,0,0,960,102,1,0,0,0,961,962,7,16,0,0,962, + 963,7,19,0,0,963,964,7,3,0,0,964,965,7,4,0,0,965,966,7,12,0,0,966, + 967,7,8,0,0,967,968,7,2,0,0,968,969,7,8,0,0,969,970,7,2,0,0,970, + 971,7,19,0,0,971,972,7,7,0,0,972,104,1,0,0,0,973,974,7,16,0,0,974, + 975,7,12,0,0,975,976,7,6,0,0,976,977,7,4,0,0,977,978,7,8,0,0,978, + 979,7,6,0,0,979,106,1,0,0,0,980,981,7,16,0,0,981,982,7,12,0,0,982, + 983,7,19,0,0,983,984,7,0,0,0,984,985,7,0,0,0,985,108,1,0,0,0,986, + 987,7,16,0,0,987,988,7,17,0,0,988,989,7,5,0,0,989,990,7,6,0,0,990, + 110,1,0,0,0,991,992,7,16,0,0,992,993,7,17,0,0,993,994,7,12,0,0,994, + 995,7,12,0,0,995,996,7,6,0,0,996,997,7,7,0,0,997,998,7,8,0,0,998, + 112,1,0,0,0,999,1000,7,16,0,0,1000,1001,7,17,0,0,1001,1002,7,12, + 0,0,1002,1003,7,12,0,0,1003,1004,7,6,0,0,1004,1005,7,7,0,0,1005, + 1006,7,8,0,0,1006,1007,5,95,0,0,1007,1008,7,16,0,0,1008,1009,7,4, + 0,0,1009,1010,7,8,0,0,1010,1011,7,4,0,0,1011,1012,7,13,0,0,1012, + 1013,7,19,0,0,1013,1014,7,20,0,0,1014,114,1,0,0,0,1015,1016,7,16, + 0,0,1016,1017,7,17,0,0,1017,1018,7,12,0,0,1018,1019,7,12,0,0,1019, + 1020,7,6,0,0,1020,1021,7,7,0,0,1021,1022,7,8,0,0,1022,1023,5,95, + 0,0,1023,1024,7,9,0,0,1024,1025,7,4,0,0,1025,1026,7,8,0,0,1026,1027, + 7,6,0,0,1027,116,1,0,0,0,1028,1029,7,16,0,0,1029,1030,7,17,0,0,1030, + 1031,7,12,0,0,1031,1032,7,12,0,0,1032,1033,7,6,0,0,1033,1034,7,7, + 0,0,1034,1035,7,8,0,0,1035,1036,5,95,0,0,1036,1037,7,3,0,0,1037, + 1038,7,4,0,0,1038,1039,7,8,0,0,1039,1040,7,18,0,0,1040,118,1,0,0, + 0,1041,1042,7,16,0,0,1042,1043,7,17,0,0,1043,1044,7,12,0,0,1044, + 1045,7,12,0,0,1045,1046,7,6,0,0,1046,1047,7,7,0,0,1047,1048,7,8, + 0,0,1048,1049,5,95,0,0,1049,1050,7,12,0,0,1050,1051,7,19,0,0,1051, + 1052,7,13,0,0,1052,1053,7,6,0,0,1053,120,1,0,0,0,1054,1055,7,16, + 0,0,1055,1056,7,17,0,0,1056,1057,7,12,0,0,1057,1058,7,12,0,0,1058, + 1059,7,6,0,0,1059,1060,7,7,0,0,1060,1061,7,8,0,0,1061,1062,5,95, + 0,0,1062,1063,7,0,0,0,1063,1064,7,16,0,0,1064,1065,7,18,0,0,1065, + 1066,7,6,0,0,1066,1067,7,10,0,0,1067,1068,7,4,0,0,1068,122,1,0,0, + 0,1069,1070,7,16,0,0,1070,1071,7,17,0,0,1071,1072,7,12,0,0,1072, + 1073,7,12,0,0,1073,1074,7,6,0,0,1074,1075,7,7,0,0,1075,1076,7,8, + 0,0,1076,1077,5,95,0,0,1077,1078,7,8,0,0,1078,1079,7,2,0,0,1079, + 1080,7,10,0,0,1080,1081,7,6,0,0,1081,124,1,0,0,0,1082,1083,7,16, + 0,0,1083,1084,7,17,0,0,1084,1085,7,12,0,0,1085,1086,7,12,0,0,1086, + 1087,7,6,0,0,1087,1088,7,7,0,0,1088,1089,7,8,0,0,1089,1090,5,95, + 0,0,1090,1091,7,8,0,0,1091,1092,7,2,0,0,1092,1093,7,10,0,0,1093, + 1094,7,6,0,0,1094,1095,7,0,0,0,1095,1096,7,8,0,0,1096,1097,7,4,0, + 0,1097,1098,7,10,0,0,1098,1099,7,3,0,0,1099,126,1,0,0,0,1100,1101, + 7,16,0,0,1101,1102,7,17,0,0,1102,1103,7,12,0,0,1103,1104,7,12,0, + 0,1104,1105,7,6,0,0,1105,1106,7,7,0,0,1106,1107,7,8,0,0,1107,1108, + 5,95,0,0,1108,1109,7,17,0,0,1109,1110,7,0,0,0,1110,1111,7,6,0,0, + 1111,1112,7,12,0,0,1112,128,1,0,0,0,1113,1114,7,9,0,0,1114,1115, + 7,4,0,0,1115,1116,7,8,0,0,1116,1117,7,4,0,0,1117,130,1,0,0,0,1118, + 1119,7,9,0,0,1119,1120,7,4,0,0,1120,1121,7,8,0,0,1121,1122,7,6,0, + 0,1122,132,1,0,0,0,1123,1124,7,9,0,0,1124,1125,7,4,0,0,1125,1126, + 7,14,0,0,1126,134,1,0,0,0,1127,1128,7,9,0,0,1128,1129,7,6,0,0,1129, + 1130,7,4,0,0,1130,1131,7,13,0,0,1131,1132,7,13,0,0,1132,1133,7,19, + 0,0,1133,1134,7,16,0,0,1134,1135,7,4,0,0,1135,1136,7,8,0,0,1136, + 1137,7,6,0,0,1137,136,1,0,0,0,1138,1139,7,9,0,0,1139,1140,7,6,0, + 0,1140,1141,7,16,0,0,1141,1142,7,13,0,0,1142,1143,7,4,0,0,1143,1144, + 7,12,0,0,1144,1145,7,6,0,0,1145,138,1,0,0,0,1146,1147,7,9,0,0,1147, + 1148,7,6,0,0,1148,1149,7,11,0,0,1149,1150,7,4,0,0,1150,1151,7,17, + 0,0,1151,1152,7,13,0,0,1152,1153,7,8,0,0,1153,140,1,0,0,0,1154,1155, + 7,9,0,0,1155,1156,7,6,0,0,1156,1157,7,11,0,0,1157,1158,7,2,0,0,1158, + 1159,7,7,0,0,1159,1160,7,6,0,0,1160,142,1,0,0,0,1161,1162,7,9,0, + 0,1162,1163,7,6,0,0,1163,1164,7,11,0,0,1164,1165,7,2,0,0,1165,1166, + 7,7,0,0,1166,1167,7,6,0,0,1167,1168,7,12,0,0,1168,144,1,0,0,0,1169, + 1170,7,9,0,0,1170,1171,7,6,0,0,1171,1172,7,13,0,0,1172,1173,7,6, + 0,0,1173,1174,7,8,0,0,1174,1175,7,6,0,0,1175,146,1,0,0,0,1176,1177, + 7,9,0,0,1177,1178,7,6,0,0,1178,1179,7,7,0,0,1179,1180,7,14,0,0,1180, + 148,1,0,0,0,1181,1182,7,9,0,0,1182,1183,7,6,0,0,1183,1184,7,0,0, + 0,1184,1185,7,16,0,0,1185,150,1,0,0,0,1186,1187,7,9,0,0,1187,1188, + 7,6,0,0,1188,1189,7,0,0,0,1189,1190,7,16,0,0,1190,1191,7,12,0,0, + 1191,1192,7,2,0,0,1192,1193,7,5,0,0,1193,1194,7,6,0,0,1194,152,1, + 0,0,0,1195,1196,7,9,0,0,1196,1197,7,6,0,0,1197,1198,7,0,0,0,1198, + 1199,7,16,0,0,1199,1200,7,12,0,0,1200,1201,7,2,0,0,1201,1202,7,3, + 0,0,1202,1203,7,8,0,0,1203,1204,7,19,0,0,1204,1205,7,12,0,0,1205, + 154,1,0,0,0,1206,1207,7,9,0,0,1207,1208,7,6,0,0,1208,1209,7,8,0, + 0,1209,1210,7,6,0,0,1210,1211,7,12,0,0,1211,1212,7,10,0,0,1212,1213, + 7,2,0,0,1213,1214,7,7,0,0,1214,1215,7,2,0,0,1215,1216,7,0,0,0,1216, + 1217,7,8,0,0,1217,1218,7,2,0,0,1218,1219,7,16,0,0,1219,156,1,0,0, + 0,1220,1221,7,9,0,0,1221,1222,7,2,0,0,1222,1223,7,0,0,0,1223,1224, + 7,8,0,0,1224,1225,7,2,0,0,1225,1226,7,7,0,0,1226,1227,7,16,0,0,1227, + 1228,7,8,0,0,1228,158,1,0,0,0,1229,1230,7,9,0,0,1230,1231,7,2,0, + 0,1231,1232,7,0,0,0,1232,1233,7,8,0,0,1233,1234,7,12,0,0,1234,1235, + 7,2,0,0,1235,1236,7,5,0,0,1236,1237,7,17,0,0,1237,1238,7,8,0,0,1238, + 1239,7,6,0,0,1239,1240,7,9,0,0,1240,160,1,0,0,0,1241,1242,7,9,0, + 0,1242,1243,7,19,0,0,1243,162,1,0,0,0,1244,1245,7,9,0,0,1245,1246, + 7,19,0,0,1246,1247,7,17,0,0,1247,1248,7,5,0,0,1248,1249,7,13,0,0, + 1249,1250,7,6,0,0,1250,164,1,0,0,0,1251,1252,7,9,0,0,1252,1253,7, + 12,0,0,1253,1254,7,19,0,0,1254,1255,7,3,0,0,1255,166,1,0,0,0,1256, + 1257,7,6,0,0,1257,1258,7,13,0,0,1258,1259,7,0,0,0,1259,1260,7,6, + 0,0,1260,168,1,0,0,0,1261,1262,7,6,0,0,1262,1263,7,10,0,0,1263,1264, + 7,3,0,0,1264,1265,7,8,0,0,1265,1266,7,14,0,0,1266,170,1,0,0,0,1267, + 1268,7,6,0,0,1268,1269,7,13,0,0,1269,1270,7,0,0,0,1270,1271,7,6, + 0,0,1271,1272,7,2,0,0,1272,1273,7,11,0,0,1273,172,1,0,0,0,1274,1275, + 7,6,0,0,1275,1276,7,7,0,0,1276,1277,7,16,0,0,1277,1278,7,19,0,0, + 1278,1279,7,9,0,0,1279,1280,7,2,0,0,1280,1281,7,7,0,0,1281,1282, + 7,20,0,0,1282,174,1,0,0,0,1283,1284,7,6,0,0,1284,1285,7,7,0,0,1285, + 1286,7,9,0,0,1286,176,1,0,0,0,1287,1288,7,6,0,0,1288,1289,7,12,0, + 0,1289,1290,7,12,0,0,1290,1291,7,19,0,0,1291,1292,7,12,0,0,1292, + 178,1,0,0,0,1293,1294,7,6,0,0,1294,1295,7,0,0,0,1295,1296,7,16,0, + 0,1296,1297,7,4,0,0,1297,1298,7,3,0,0,1298,1299,7,6,0,0,1299,180, + 1,0,0,0,1300,1301,7,6,0,0,1301,1302,7,22,0,0,1302,1303,7,16,0,0, + 1303,1304,7,6,0,0,1304,1305,7,3,0,0,1305,1306,7,8,0,0,1306,182,1, + 0,0,0,1307,1308,7,6,0,0,1308,1309,7,22,0,0,1309,1310,7,16,0,0,1310, + 1311,7,13,0,0,1311,1312,7,17,0,0,1312,1313,7,9,0,0,1313,1314,7,2, + 0,0,1314,1315,7,7,0,0,1315,1316,7,20,0,0,1316,184,1,0,0,0,1317,1318, + 7,6,0,0,1318,1319,7,22,0,0,1319,1320,7,6,0,0,1320,1321,7,16,0,0, + 1321,1322,7,17,0,0,1322,1323,7,8,0,0,1323,1324,7,6,0,0,1324,186, + 1,0,0,0,1325,1326,7,6,0,0,1326,1327,7,22,0,0,1327,1328,7,2,0,0,1328, + 1329,7,0,0,0,1329,1330,7,8,0,0,1330,1331,7,0,0,0,1331,188,1,0,0, + 0,1332,1333,7,6,0,0,1333,1334,7,22,0,0,1334,1335,7,3,0,0,1335,1336, + 7,13,0,0,1336,1337,7,4,0,0,1337,1338,7,2,0,0,1338,1339,7,7,0,0,1339, + 190,1,0,0,0,1340,1341,7,6,0,0,1341,1342,7,22,0,0,1342,1343,7,8,0, + 0,1343,1344,7,12,0,0,1344,1345,7,4,0,0,1345,1346,7,16,0,0,1346,1347, + 7,8,0,0,1347,192,1,0,0,0,1348,1349,7,11,0,0,1349,1350,7,4,0,0,1350, + 1351,7,13,0,0,1351,1352,7,0,0,0,1352,1353,7,6,0,0,1353,194,1,0,0, + 0,1354,1355,7,11,0,0,1355,1356,7,6,0,0,1356,1357,7,8,0,0,1357,1358, + 7,16,0,0,1358,1359,7,18,0,0,1359,196,1,0,0,0,1360,1361,7,11,0,0, + 1361,1362,7,2,0,0,1362,1363,7,13,0,0,1363,1364,7,8,0,0,1364,1365, + 7,6,0,0,1365,1366,7,12,0,0,1366,198,1,0,0,0,1367,1368,7,11,0,0,1368, + 1369,7,2,0,0,1369,1370,7,7,0,0,1370,1371,7,4,0,0,1371,1372,7,13, + 0,0,1372,200,1,0,0,0,1373,1374,7,11,0,0,1374,1375,7,2,0,0,1375,1376, + 7,12,0,0,1376,1377,7,0,0,0,1377,1378,7,8,0,0,1378,202,1,0,0,0,1379, + 1380,7,11,0,0,1380,1381,7,19,0,0,1381,1382,7,13,0,0,1382,1383,7, + 13,0,0,1383,1384,7,19,0,0,1384,1385,7,21,0,0,1385,1386,7,2,0,0,1386, + 1387,7,7,0,0,1387,1388,7,20,0,0,1388,204,1,0,0,0,1389,1390,7,11, + 0,0,1390,1391,7,19,0,0,1391,1392,7,12,0,0,1392,206,1,0,0,0,1393, + 1394,7,11,0,0,1394,1395,7,19,0,0,1395,1396,7,12,0,0,1396,1397,7, + 10,0,0,1397,1398,7,4,0,0,1398,1399,7,8,0,0,1399,208,1,0,0,0,1400, + 1401,7,11,0,0,1401,1402,7,12,0,0,1402,1403,7,19,0,0,1403,1404,7, + 10,0,0,1404,210,1,0,0,0,1405,1406,7,11,0,0,1406,1407,7,17,0,0,1407, + 1408,7,13,0,0,1408,1409,7,13,0,0,1409,212,1,0,0,0,1410,1411,7,11, + 0,0,1411,1412,7,17,0,0,1412,1413,7,7,0,0,1413,1414,7,16,0,0,1414, + 1415,7,8,0,0,1415,1416,7,2,0,0,1416,1417,7,19,0,0,1417,1418,7,7, + 0,0,1418,214,1,0,0,0,1419,1420,7,11,0,0,1420,1421,7,17,0,0,1421, + 1422,7,7,0,0,1422,1423,7,16,0,0,1423,1424,7,8,0,0,1424,1425,7,2, + 0,0,1425,1426,7,19,0,0,1426,1427,7,7,0,0,1427,1428,7,0,0,0,1428, + 216,1,0,0,0,1429,1430,7,20,0,0,1430,1431,7,12,0,0,1431,1432,7,4, + 0,0,1432,1433,7,16,0,0,1433,1434,7,6,0,0,1434,218,1,0,0,0,1435,1436, + 7,20,0,0,1436,1437,7,12,0,0,1437,1438,7,4,0,0,1438,1439,7,7,0,0, + 1439,1440,7,8,0,0,1440,220,1,0,0,0,1441,1442,7,20,0,0,1442,1443, + 7,12,0,0,1443,1444,7,4,0,0,1444,1445,7,7,0,0,1445,1446,7,8,0,0,1446, + 1447,7,6,0,0,1447,1448,7,9,0,0,1448,222,1,0,0,0,1449,1450,7,20,0, + 0,1450,1451,7,12,0,0,1451,1452,7,4,0,0,1452,1453,7,7,0,0,1453,1454, + 7,8,0,0,1454,1455,7,0,0,0,1455,224,1,0,0,0,1456,1457,7,20,0,0,1457, + 1458,7,12,0,0,1458,1459,7,4,0,0,1459,1460,7,3,0,0,1460,1461,7,18, + 0,0,1461,1462,7,23,0,0,1462,1463,7,2,0,0,1463,1464,7,15,0,0,1464, + 226,1,0,0,0,1465,1466,7,20,0,0,1466,1467,7,12,0,0,1467,1468,7,19, + 0,0,1468,1469,7,17,0,0,1469,1470,7,3,0,0,1470,228,1,0,0,0,1471,1472, + 7,20,0,0,1472,1473,7,12,0,0,1473,1474,7,19,0,0,1474,1475,7,17,0, + 0,1475,1476,7,3,0,0,1476,1477,7,2,0,0,1477,1478,7,7,0,0,1478,1479, + 7,20,0,0,1479,230,1,0,0,0,1480,1481,7,20,0,0,1481,1482,7,12,0,0, + 1482,1483,7,19,0,0,1483,1484,7,17,0,0,1484,1485,7,3,0,0,1485,1486, + 7,0,0,0,1486,232,1,0,0,0,1487,1488,7,18,0,0,1488,1489,7,4,0,0,1489, + 1490,7,23,0,0,1490,1491,7,2,0,0,1491,1492,7,7,0,0,1492,1493,7,20, + 0,0,1493,234,1,0,0,0,1494,1495,7,18,0,0,1495,1496,7,19,0,0,1496, + 1497,7,17,0,0,1497,1498,7,12,0,0,1498,236,1,0,0,0,1499,1500,7,2, + 0,0,1500,1501,7,11,0,0,1501,238,1,0,0,0,1502,1503,7,2,0,0,1503,1504, + 7,20,0,0,1504,1505,7,7,0,0,1505,1506,7,19,0,0,1506,1507,7,12,0,0, + 1507,1508,7,6,0,0,1508,240,1,0,0,0,1509,1510,7,2,0,0,1510,1511,7, + 10,0,0,1511,1512,7,10,0,0,1512,1513,7,6,0,0,1513,1514,7,9,0,0,1514, + 1515,7,2,0,0,1515,1516,7,4,0,0,1516,1517,7,8,0,0,1517,1518,7,6,0, + 0,1518,242,1,0,0,0,1519,1520,7,2,0,0,1520,1521,7,7,0,0,1521,244, + 1,0,0,0,1522,1523,7,2,0,0,1523,1524,7,7,0,0,1524,1525,7,16,0,0,1525, + 1526,7,13,0,0,1526,1527,7,17,0,0,1527,1528,7,9,0,0,1528,1529,7,2, + 0,0,1529,1530,7,7,0,0,1530,1531,7,20,0,0,1531,246,1,0,0,0,1532,1533, + 7,2,0,0,1533,1534,7,7,0,0,1534,1535,7,2,0,0,1535,1536,7,8,0,0,1536, + 1537,7,2,0,0,1537,1538,7,4,0,0,1538,1539,7,13,0,0,1539,248,1,0,0, + 0,1540,1541,7,2,0,0,1541,1542,7,7,0,0,1542,1543,7,7,0,0,1543,1544, + 7,6,0,0,1544,1545,7,12,0,0,1545,250,1,0,0,0,1546,1547,7,2,0,0,1547, + 1548,7,7,0,0,1548,1549,7,3,0,0,1549,1550,7,17,0,0,1550,1551,7,8, + 0,0,1551,252,1,0,0,0,1552,1553,7,2,0,0,1553,1554,7,7,0,0,1554,1555, + 7,0,0,0,1555,1556,7,6,0,0,1556,1557,7,12,0,0,1557,1558,7,8,0,0,1558, + 254,1,0,0,0,1559,1560,7,2,0,0,1560,1561,7,7,0,0,1561,1562,7,8,0, + 0,1562,1563,7,6,0,0,1563,1564,7,12,0,0,1564,1565,7,0,0,0,1565,1566, + 7,6,0,0,1566,1567,7,16,0,0,1567,1568,7,8,0,0,1568,256,1,0,0,0,1569, + 1570,7,2,0,0,1570,1571,7,7,0,0,1571,1572,7,8,0,0,1572,1573,7,6,0, + 0,1573,1574,7,12,0,0,1574,1575,7,23,0,0,1575,1576,7,4,0,0,1576,1577, + 7,13,0,0,1577,258,1,0,0,0,1578,1579,7,2,0,0,1579,1580,7,7,0,0,1580, + 1581,7,8,0,0,1581,1582,7,19,0,0,1582,260,1,0,0,0,1583,1584,7,2,0, + 0,1584,1585,7,7,0,0,1585,1586,7,23,0,0,1586,1587,7,19,0,0,1587,1588, + 7,1,0,0,1588,1589,7,6,0,0,1589,1590,7,12,0,0,1590,262,1,0,0,0,1591, + 1592,7,2,0,0,1592,1593,7,19,0,0,1593,264,1,0,0,0,1594,1595,7,2,0, + 0,1595,1596,7,0,0,0,1596,266,1,0,0,0,1597,1598,7,2,0,0,1598,1599, + 7,0,0,0,1599,1600,7,19,0,0,1600,1601,7,13,0,0,1601,1602,7,4,0,0, + 1602,1603,7,8,0,0,1603,1604,7,2,0,0,1604,1605,7,19,0,0,1605,1606, + 7,7,0,0,1606,268,1,0,0,0,1607,1608,7,2,0,0,1608,1609,7,8,0,0,1609, + 1610,7,6,0,0,1610,1611,7,12,0,0,1611,1612,7,4,0,0,1612,1613,7,8, + 0,0,1613,1614,7,6,0,0,1614,270,1,0,0,0,1615,1616,7,24,0,0,1616,1617, + 7,19,0,0,1617,1618,7,2,0,0,1618,1619,7,7,0,0,1619,272,1,0,0,0,1620, + 1621,7,24,0,0,1621,1622,7,0,0,0,1622,1623,7,19,0,0,1623,1624,7,7, + 0,0,1624,274,1,0,0,0,1625,1626,7,24,0,0,1626,1627,7,0,0,0,1627,1628, + 7,19,0,0,1628,1629,7,7,0,0,1629,1630,5,95,0,0,1630,1631,7,4,0,0, + 1631,1632,7,12,0,0,1632,1633,7,12,0,0,1633,1634,7,4,0,0,1634,1635, + 7,14,0,0,1635,276,1,0,0,0,1636,1637,7,24,0,0,1637,1638,7,0,0,0,1638, + 1639,7,19,0,0,1639,1640,7,7,0,0,1640,1641,5,95,0,0,1641,1642,7,6, + 0,0,1642,1643,7,22,0,0,1643,1644,7,2,0,0,1644,1645,7,0,0,0,1645, + 1646,7,8,0,0,1646,1647,7,0,0,0,1647,278,1,0,0,0,1648,1649,7,24,0, + 0,1649,1650,7,0,0,0,1650,1651,7,19,0,0,1651,1652,7,7,0,0,1652,1653, + 5,95,0,0,1653,1654,7,19,0,0,1654,1655,7,5,0,0,1655,1656,7,24,0,0, + 1656,1657,7,6,0,0,1657,1658,7,16,0,0,1658,1659,7,8,0,0,1659,280, + 1,0,0,0,1660,1661,7,24,0,0,1661,1662,7,0,0,0,1662,1663,7,19,0,0, + 1663,1664,7,7,0,0,1664,1665,5,95,0,0,1665,1666,7,25,0,0,1666,1667, + 7,17,0,0,1667,1668,7,6,0,0,1668,1669,7,12,0,0,1669,1670,7,14,0,0, + 1670,282,1,0,0,0,1671,1672,7,24,0,0,1672,1673,7,0,0,0,1673,1674, + 7,19,0,0,1674,1675,7,7,0,0,1675,1676,5,95,0,0,1676,1677,7,8,0,0, + 1677,1678,7,4,0,0,1678,1679,7,5,0,0,1679,1680,7,13,0,0,1680,1681, + 7,6,0,0,1681,284,1,0,0,0,1682,1683,7,24,0,0,1683,1684,7,0,0,0,1684, + 1685,7,19,0,0,1685,1686,7,7,0,0,1686,1687,5,95,0,0,1687,1688,7,23, + 0,0,1688,1689,7,4,0,0,1689,1690,7,13,0,0,1690,1691,7,17,0,0,1691, + 1692,7,6,0,0,1692,286,1,0,0,0,1693,1694,7,1,0,0,1694,1695,7,6,0, + 0,1695,1696,7,6,0,0,1696,1697,7,3,0,0,1697,288,1,0,0,0,1698,1699, + 7,1,0,0,1699,1700,7,6,0,0,1700,1701,7,14,0,0,1701,290,1,0,0,0,1702, + 1703,7,1,0,0,1703,1704,7,6,0,0,1704,1705,7,14,0,0,1705,1706,7,0, + 0,0,1706,292,1,0,0,0,1707,1708,7,13,0,0,1708,1709,7,4,0,0,1709,1710, + 7,7,0,0,1710,1711,7,20,0,0,1711,1712,7,17,0,0,1712,1713,7,4,0,0, + 1713,1714,7,20,0,0,1714,1715,7,6,0,0,1715,294,1,0,0,0,1716,1717, + 7,13,0,0,1717,1718,7,4,0,0,1718,1719,7,0,0,0,1719,1720,7,8,0,0,1720, + 296,1,0,0,0,1721,1722,7,13,0,0,1722,1723,7,4,0,0,1723,1724,7,8,0, + 0,1724,1725,7,6,0,0,1725,1726,7,12,0,0,1726,1727,7,4,0,0,1727,1728, + 7,13,0,0,1728,298,1,0,0,0,1729,1730,7,13,0,0,1730,1731,7,6,0,0,1731, + 1732,7,4,0,0,1732,1733,7,9,0,0,1733,1734,7,2,0,0,1734,1735,7,7,0, + 0,1735,1736,7,20,0,0,1736,300,1,0,0,0,1737,1738,7,13,0,0,1738,1739, + 7,6,0,0,1739,1740,7,4,0,0,1740,1741,7,23,0,0,1741,1742,7,6,0,0,1742, + 302,1,0,0,0,1743,1744,7,13,0,0,1744,1745,7,6,0,0,1745,1746,7,11, + 0,0,1746,1747,7,8,0,0,1747,304,1,0,0,0,1748,1749,7,13,0,0,1749,1750, + 7,6,0,0,1750,1751,7,23,0,0,1751,1752,7,6,0,0,1752,1753,7,13,0,0, + 1753,306,1,0,0,0,1754,1755,7,13,0,0,1755,1756,7,2,0,0,1756,1757, + 7,1,0,0,1757,1758,7,6,0,0,1758,308,1,0,0,0,1759,1760,7,13,0,0,1760, + 1761,7,2,0,0,1761,1762,7,10,0,0,1762,1763,7,2,0,0,1763,1764,7,8, + 0,0,1764,310,1,0,0,0,1765,1766,7,13,0,0,1766,1767,7,2,0,0,1767,1768, + 7,0,0,0,1768,1769,7,8,0,0,1769,1770,7,4,0,0,1770,1771,7,20,0,0,1771, + 1772,7,20,0,0,1772,312,1,0,0,0,1773,1774,7,13,0,0,1774,1775,7,19, + 0,0,1775,1776,7,16,0,0,1776,1777,7,4,0,0,1777,1778,7,13,0,0,1778, + 314,1,0,0,0,1779,1780,7,13,0,0,1780,1781,7,19,0,0,1781,1782,7,16, + 0,0,1782,1783,7,4,0,0,1783,1784,7,13,0,0,1784,1785,7,8,0,0,1785, + 1786,7,2,0,0,1786,1787,7,10,0,0,1787,1788,7,6,0,0,1788,316,1,0,0, + 0,1789,1790,7,13,0,0,1790,1791,7,19,0,0,1791,1792,7,16,0,0,1792, + 1793,7,4,0,0,1793,1794,7,13,0,0,1794,1795,7,8,0,0,1795,1796,7,2, + 0,0,1796,1797,7,10,0,0,1797,1798,7,6,0,0,1798,1799,7,0,0,0,1799, + 1800,7,8,0,0,1800,1801,7,4,0,0,1801,1802,7,10,0,0,1802,1803,7,3, + 0,0,1803,318,1,0,0,0,1804,1805,7,13,0,0,1805,1806,7,19,0,0,1806, + 1807,7,20,0,0,1807,1808,7,2,0,0,1808,1809,7,16,0,0,1809,1810,7,4, + 0,0,1810,1811,7,13,0,0,1811,320,1,0,0,0,1812,1813,7,13,0,0,1813, + 1814,7,19,0,0,1814,1815,7,19,0,0,1815,1816,7,3,0,0,1816,322,1,0, + 0,0,1817,1818,7,10,0,0,1818,1819,7,4,0,0,1819,1820,7,3,0,0,1820, + 324,1,0,0,0,1821,1822,7,10,0,0,1822,1823,7,4,0,0,1823,1824,7,8,0, + 0,1824,1825,7,16,0,0,1825,1826,7,18,0,0,1826,326,1,0,0,0,1827,1828, + 7,10,0,0,1828,1829,7,4,0,0,1829,1830,7,8,0,0,1830,1831,7,16,0,0, + 1831,1832,7,18,0,0,1832,1833,7,6,0,0,1833,1834,7,9,0,0,1834,328, + 1,0,0,0,1835,1836,7,10,0,0,1836,1837,7,4,0,0,1837,1838,7,8,0,0,1838, + 1839,7,16,0,0,1839,1840,7,18,0,0,1840,1841,7,6,0,0,1841,1842,7,0, + 0,0,1842,330,1,0,0,0,1843,1844,7,10,0,0,1844,1845,7,4,0,0,1845,1846, + 7,8,0,0,1846,1847,7,16,0,0,1847,1848,7,18,0,0,1848,1849,5,95,0,0, + 1849,1850,7,12,0,0,1850,1851,7,6,0,0,1851,1852,7,16,0,0,1852,1853, + 7,19,0,0,1853,1854,7,20,0,0,1854,1855,7,7,0,0,1855,1856,7,2,0,0, + 1856,1857,7,15,0,0,1857,1858,7,6,0,0,1858,332,1,0,0,0,1859,1860, + 7,10,0,0,1860,1861,7,4,0,0,1861,1862,7,8,0,0,1862,1863,7,6,0,0,1863, + 1864,7,12,0,0,1864,1865,7,2,0,0,1865,1866,7,4,0,0,1866,1867,7,13, + 0,0,1867,1868,7,2,0,0,1868,1869,7,15,0,0,1869,1870,7,6,0,0,1870, + 1871,7,9,0,0,1871,334,1,0,0,0,1872,1873,7,10,0,0,1873,1874,7,6,0, + 0,1874,1875,7,4,0,0,1875,1876,7,0,0,0,1876,1877,7,17,0,0,1877,1878, + 7,12,0,0,1878,1879,7,6,0,0,1879,1880,7,0,0,0,1880,336,1,0,0,0,1881, + 1882,7,10,0,0,1882,1883,7,6,0,0,1883,1884,7,12,0,0,1884,1885,7,20, + 0,0,1885,1886,7,6,0,0,1886,338,1,0,0,0,1887,1888,7,10,0,0,1888,1889, + 7,2,0,0,1889,1890,7,7,0,0,1890,1891,7,17,0,0,1891,1892,7,8,0,0,1892, + 1893,7,6,0,0,1893,340,1,0,0,0,1894,1895,7,10,0,0,1895,1896,7,19, + 0,0,1896,1897,7,7,0,0,1897,1898,7,8,0,0,1898,1899,7,18,0,0,1899, + 342,1,0,0,0,1900,1901,7,7,0,0,1901,1902,7,4,0,0,1902,1903,7,8,0, + 0,1903,1904,7,17,0,0,1904,1905,7,12,0,0,1905,1906,7,4,0,0,1906,1907, + 7,13,0,0,1907,344,1,0,0,0,1908,1909,7,7,0,0,1909,1910,7,6,0,0,1910, + 1911,7,0,0,0,1911,1912,7,8,0,0,1912,1913,7,6,0,0,1913,1914,7,9,0, + 0,1914,346,1,0,0,0,1915,1916,7,7,0,0,1916,1917,7,6,0,0,1917,1918, + 7,22,0,0,1918,1919,7,8,0,0,1919,348,1,0,0,0,1920,1921,7,7,0,0,1921, + 1922,7,11,0,0,1922,1923,7,16,0,0,1923,350,1,0,0,0,1924,1925,7,7, + 0,0,1925,1926,7,11,0,0,1926,1927,7,9,0,0,1927,352,1,0,0,0,1928,1929, + 7,7,0,0,1929,1930,7,11,0,0,1930,1931,7,1,0,0,1931,1932,7,16,0,0, + 1932,354,1,0,0,0,1933,1934,7,7,0,0,1934,1935,7,11,0,0,1935,1936, + 7,1,0,0,1936,1937,7,9,0,0,1937,356,1,0,0,0,1938,1939,7,7,0,0,1939, + 1940,7,19,0,0,1940,358,1,0,0,0,1941,1942,7,7,0,0,1942,1943,7,19, + 0,0,1943,1944,7,7,0,0,1944,1945,7,6,0,0,1945,360,1,0,0,0,1946,1947, + 7,7,0,0,1947,1948,7,19,0,0,1948,1949,7,12,0,0,1949,1950,7,10,0,0, + 1950,1951,7,4,0,0,1951,1952,7,13,0,0,1952,1953,7,2,0,0,1953,1954, + 7,15,0,0,1954,1955,7,6,0,0,1955,362,1,0,0,0,1956,1957,7,7,0,0,1957, + 1958,7,19,0,0,1958,1959,7,8,0,0,1959,364,1,0,0,0,1960,1961,7,7,0, + 0,1961,1962,7,17,0,0,1962,1963,7,13,0,0,1963,1964,7,13,0,0,1964, + 366,1,0,0,0,1965,1966,7,7,0,0,1966,1967,7,17,0,0,1967,1968,7,13, + 0,0,1968,1969,7,13,0,0,1969,1970,7,2,0,0,1970,1971,7,11,0,0,1971, + 368,1,0,0,0,1972,1973,7,7,0,0,1973,1974,7,17,0,0,1974,1975,7,13, + 0,0,1975,1976,7,13,0,0,1976,1977,7,0,0,0,1977,370,1,0,0,0,1978,1979, + 7,19,0,0,1979,1980,7,5,0,0,1980,1981,7,24,0,0,1981,1982,7,6,0,0, + 1982,1983,7,16,0,0,1983,1984,7,8,0,0,1984,372,1,0,0,0,1985,1986, + 7,19,0,0,1986,1987,7,11,0,0,1987,374,1,0,0,0,1988,1989,7,19,0,0, + 1989,1990,7,11,0,0,1990,1991,7,11,0,0,1991,1992,7,0,0,0,1992,1993, + 7,6,0,0,1993,1994,7,8,0,0,1994,376,1,0,0,0,1995,1996,7,19,0,0,1996, + 1997,7,10,0,0,1997,1998,7,2,0,0,1998,1999,7,8,0,0,1999,378,1,0,0, + 0,2000,2001,7,19,0,0,2001,2002,7,7,0,0,2002,380,1,0,0,0,2003,2004, + 7,19,0,0,2004,2005,7,7,0,0,2005,2006,7,6,0,0,2006,382,1,0,0,0,2007, + 2008,7,19,0,0,2008,2009,7,7,0,0,2009,2010,7,13,0,0,2010,2011,7,14, + 0,0,2011,384,1,0,0,0,2012,2013,7,19,0,0,2013,2014,7,3,0,0,2014,2015, + 7,8,0,0,2015,2016,7,2,0,0,2016,2017,7,19,0,0,2017,2018,7,7,0,0,2018, + 386,1,0,0,0,2019,2020,7,19,0,0,2020,2021,7,12,0,0,2021,388,1,0,0, + 0,2022,2023,7,19,0,0,2023,2024,7,12,0,0,2024,2025,7,9,0,0,2025,2026, + 7,6,0,0,2026,2027,7,12,0,0,2027,390,1,0,0,0,2028,2029,7,19,0,0,2029, + 2030,7,12,0,0,2030,2031,7,9,0,0,2031,2032,7,2,0,0,2032,2033,7,7, + 0,0,2033,2034,7,4,0,0,2034,2035,7,13,0,0,2035,2036,7,2,0,0,2036, + 2037,7,8,0,0,2037,2038,7,14,0,0,2038,392,1,0,0,0,2039,2040,7,19, + 0,0,2040,2041,7,17,0,0,2041,2042,7,8,0,0,2042,2043,7,6,0,0,2043, + 2044,7,12,0,0,2044,394,1,0,0,0,2045,2046,7,19,0,0,2046,2047,7,17, + 0,0,2047,2048,7,8,0,0,2048,2049,7,3,0,0,2049,2050,7,17,0,0,2050, + 2051,7,8,0,0,2051,396,1,0,0,0,2052,2053,7,19,0,0,2053,2054,7,23, + 0,0,2054,2055,7,6,0,0,2055,2056,7,12,0,0,2056,398,1,0,0,0,2057,2058, + 7,19,0,0,2058,2059,7,23,0,0,2059,2060,7,6,0,0,2060,2061,7,12,0,0, + 2061,2062,7,11,0,0,2062,2063,7,13,0,0,2063,2064,7,19,0,0,2064,2065, + 7,21,0,0,2065,400,1,0,0,0,2066,2067,7,3,0,0,2067,2068,7,4,0,0,2068, + 2069,7,12,0,0,2069,2070,7,8,0,0,2070,2071,7,2,0,0,2071,2072,7,8, + 0,0,2072,2073,7,2,0,0,2073,2074,7,19,0,0,2074,2075,7,7,0,0,2075, + 402,1,0,0,0,2076,2077,7,3,0,0,2077,2078,7,4,0,0,2078,2079,7,12,0, + 0,2079,2080,7,8,0,0,2080,2081,7,2,0,0,2081,2082,7,8,0,0,2082,2083, + 7,2,0,0,2083,2084,7,19,0,0,2084,2085,7,7,0,0,2085,2086,7,0,0,0,2086, + 404,1,0,0,0,2087,2088,7,3,0,0,2088,2089,7,4,0,0,2089,2090,7,0,0, + 0,2090,2091,7,0,0,0,2091,2092,7,2,0,0,2092,2093,7,7,0,0,2093,2094, + 7,20,0,0,2094,406,1,0,0,0,2095,2096,7,3,0,0,2096,2097,7,4,0,0,2097, + 2098,7,0,0,0,2098,2099,7,8,0,0,2099,408,1,0,0,0,2100,2101,7,3,0, + 0,2101,2102,7,4,0,0,2102,2103,7,8,0,0,2103,2104,7,18,0,0,2104,410, + 1,0,0,0,2105,2106,7,3,0,0,2106,2107,7,4,0,0,2107,2108,7,8,0,0,2108, + 2109,7,8,0,0,2109,2110,7,6,0,0,2110,2111,7,12,0,0,2111,2112,7,7, + 0,0,2112,412,1,0,0,0,2113,2114,7,3,0,0,2114,2115,7,6,0,0,2115,2116, + 7,12,0,0,2116,414,1,0,0,0,2117,2118,7,3,0,0,2118,2119,7,6,0,0,2119, + 2120,7,12,0,0,2120,2121,7,2,0,0,2121,2122,7,19,0,0,2122,2123,7,9, + 0,0,2123,416,1,0,0,0,2124,2125,7,3,0,0,2125,2126,7,6,0,0,2126,2127, + 7,12,0,0,2127,2128,7,10,0,0,2128,2129,7,17,0,0,2129,2130,7,8,0,0, + 2130,2131,7,6,0,0,2131,418,1,0,0,0,2132,2133,7,3,0,0,2133,2134,7, + 13,0,0,2134,2135,7,4,0,0,2135,2136,7,7,0,0,2136,420,1,0,0,0,2137, + 2138,7,3,0,0,2138,2139,7,19,0,0,2139,2140,7,0,0,0,2140,2141,7,2, + 0,0,2141,2142,7,8,0,0,2142,2143,7,2,0,0,2143,2144,7,19,0,0,2144, + 2145,7,7,0,0,2145,422,1,0,0,0,2146,2147,7,3,0,0,2147,2148,7,12,0, + 0,2148,2149,7,6,0,0,2149,2150,7,16,0,0,2150,2151,7,6,0,0,2151,2152, + 7,9,0,0,2152,2153,7,2,0,0,2153,2154,7,7,0,0,2154,2155,7,20,0,0,2155, + 424,1,0,0,0,2156,2157,7,3,0,0,2157,2158,7,12,0,0,2158,2159,7,6,0, + 0,2159,2160,7,16,0,0,2160,2161,7,2,0,0,2161,2162,7,0,0,0,2162,2163, + 7,2,0,0,2163,2164,7,19,0,0,2164,2165,7,7,0,0,2165,426,1,0,0,0,2166, + 2167,7,3,0,0,2167,2168,7,12,0,0,2168,2169,7,6,0,0,2169,2170,7,3, + 0,0,2170,2171,7,4,0,0,2171,2172,7,12,0,0,2172,2173,7,6,0,0,2173, + 428,1,0,0,0,2174,2175,7,3,0,0,2175,2176,7,12,0,0,2176,2177,7,2,0, + 0,2177,2178,7,23,0,0,2178,2179,7,2,0,0,2179,2180,7,13,0,0,2180,2181, + 7,6,0,0,2181,2182,7,20,0,0,2182,2183,7,6,0,0,2183,2184,7,0,0,0,2184, + 430,1,0,0,0,2185,2186,7,3,0,0,2186,2187,7,12,0,0,2187,2188,7,19, + 0,0,2188,2189,7,3,0,0,2189,2190,7,6,0,0,2190,2191,7,12,0,0,2191, + 2192,7,8,0,0,2192,2193,7,2,0,0,2193,2194,7,6,0,0,2194,2195,7,0,0, + 0,2195,432,1,0,0,0,2196,2197,7,3,0,0,2197,2198,7,12,0,0,2198,2199, + 7,17,0,0,2199,2200,7,7,0,0,2200,2201,7,6,0,0,2201,434,1,0,0,0,2202, + 2203,7,25,0,0,2203,2204,7,17,0,0,2204,2205,7,19,0,0,2205,2206,7, + 8,0,0,2206,2207,7,6,0,0,2207,2208,7,0,0,0,2208,436,1,0,0,0,2209, + 2210,7,12,0,0,2210,2211,7,4,0,0,2211,2212,7,7,0,0,2212,2213,7,20, + 0,0,2213,2214,7,6,0,0,2214,438,1,0,0,0,2215,2216,7,12,0,0,2216,2217, + 7,6,0,0,2217,2218,7,4,0,0,2218,2219,7,9,0,0,2219,440,1,0,0,0,2220, + 2221,7,12,0,0,2221,2222,7,6,0,0,2222,2223,7,16,0,0,2223,2224,7,17, + 0,0,2224,2225,7,12,0,0,2225,2226,7,0,0,0,2226,2227,7,2,0,0,2227, + 2228,7,23,0,0,2228,2229,7,6,0,0,2229,442,1,0,0,0,2230,2231,7,12, + 0,0,2231,2232,7,6,0,0,2232,2233,7,11,0,0,2233,2234,7,12,0,0,2234, + 2235,7,6,0,0,2235,2236,7,0,0,0,2236,2237,7,18,0,0,2237,444,1,0,0, + 0,2238,2239,7,12,0,0,2239,2240,7,6,0,0,2240,2241,7,7,0,0,2241,2242, + 7,4,0,0,2242,2243,7,10,0,0,2243,2244,7,6,0,0,2244,446,1,0,0,0,2245, + 2246,7,12,0,0,2246,2247,7,6,0,0,2247,2248,7,3,0,0,2248,2249,7,6, + 0,0,2249,2250,7,4,0,0,2250,2251,7,8,0,0,2251,448,1,0,0,0,2252,2253, + 7,12,0,0,2253,2254,7,6,0,0,2254,2255,7,3,0,0,2255,2256,7,6,0,0,2256, + 2257,7,4,0,0,2257,2258,7,8,0,0,2258,2259,7,4,0,0,2259,2260,7,5,0, + 0,2260,2261,7,13,0,0,2261,2262,7,6,0,0,2262,450,1,0,0,0,2263,2264, + 7,12,0,0,2264,2265,7,6,0,0,2265,2266,7,3,0,0,2266,2267,7,13,0,0, + 2267,2268,7,4,0,0,2268,2269,7,16,0,0,2269,2270,7,6,0,0,2270,452, + 1,0,0,0,2271,2272,7,12,0,0,2272,2273,7,6,0,0,2273,2274,7,0,0,0,2274, + 2275,7,6,0,0,2275,2276,7,8,0,0,2276,454,1,0,0,0,2277,2278,7,12,0, + 0,2278,2279,7,6,0,0,2279,2280,7,0,0,0,2280,2281,7,3,0,0,2281,2282, + 7,6,0,0,2282,2283,7,16,0,0,2283,2284,7,8,0,0,2284,456,1,0,0,0,2285, + 2286,7,12,0,0,2286,2287,7,6,0,0,2287,2288,7,0,0,0,2288,2289,7,8, + 0,0,2289,2290,7,12,0,0,2290,2291,7,2,0,0,2291,2292,7,16,0,0,2292, + 2293,7,8,0,0,2293,458,1,0,0,0,2294,2295,7,12,0,0,2295,2296,7,6,0, + 0,2296,2297,7,8,0,0,2297,2298,7,17,0,0,2298,2299,7,12,0,0,2299,2300, + 7,7,0,0,2300,460,1,0,0,0,2301,2302,7,12,0,0,2302,2303,7,6,0,0,2303, + 2304,7,8,0,0,2304,2305,7,17,0,0,2305,2306,7,12,0,0,2306,2307,7,7, + 0,0,2307,2308,7,2,0,0,2308,2309,7,7,0,0,2309,2310,7,20,0,0,2310, + 462,1,0,0,0,2311,2312,7,12,0,0,2312,2313,7,6,0,0,2313,2314,7,8,0, + 0,2314,2315,7,17,0,0,2315,2316,7,12,0,0,2316,2317,7,7,0,0,2317,2318, + 7,0,0,0,2318,464,1,0,0,0,2319,2320,7,12,0,0,2320,2321,7,6,0,0,2321, + 2322,7,23,0,0,2322,2323,7,19,0,0,2323,2324,7,1,0,0,2324,2325,7,6, + 0,0,2325,466,1,0,0,0,2326,2327,7,12,0,0,2327,2328,7,2,0,0,2328,2329, + 7,20,0,0,2329,2330,7,18,0,0,2330,2331,7,8,0,0,2331,468,1,0,0,0,2332, + 2333,7,12,0,0,2333,2334,7,19,0,0,2334,2335,7,13,0,0,2335,2336,7, + 6,0,0,2336,470,1,0,0,0,2337,2338,7,12,0,0,2338,2339,7,19,0,0,2339, + 2340,7,13,0,0,2340,2341,7,6,0,0,2341,2342,7,0,0,0,2342,472,1,0,0, + 0,2343,2344,7,12,0,0,2344,2345,7,19,0,0,2345,2346,7,13,0,0,2346, + 2347,7,13,0,0,2347,2348,7,5,0,0,2348,2349,7,4,0,0,2349,2350,7,16, + 0,0,2350,2351,7,1,0,0,2351,474,1,0,0,0,2352,2353,7,12,0,0,2353,2354, + 7,19,0,0,2354,2355,7,13,0,0,2355,2356,7,13,0,0,2356,2357,7,17,0, + 0,2357,2358,7,3,0,0,2358,476,1,0,0,0,2359,2360,7,12,0,0,2360,2361, + 7,19,0,0,2361,2362,7,21,0,0,2362,478,1,0,0,0,2363,2364,7,12,0,0, + 2364,2365,7,19,0,0,2365,2366,7,21,0,0,2366,2367,7,0,0,0,2367,480, + 1,0,0,0,2368,2369,7,12,0,0,2369,2370,7,17,0,0,2370,2371,7,7,0,0, + 2371,2372,7,7,0,0,2372,2373,7,2,0,0,2373,2374,7,7,0,0,2374,2375, + 7,20,0,0,2375,482,1,0,0,0,2376,2377,7,0,0,0,2377,2378,7,16,0,0,2378, + 2379,7,4,0,0,2379,2380,7,13,0,0,2380,2381,7,4,0,0,2381,2382,7,12, + 0,0,2382,484,1,0,0,0,2383,2384,7,0,0,0,2384,2385,7,16,0,0,2385,2386, + 7,18,0,0,2386,2387,7,6,0,0,2387,2388,7,10,0,0,2388,2389,7,4,0,0, + 2389,486,1,0,0,0,2390,2391,7,0,0,0,2391,2392,7,16,0,0,2392,2393, + 7,18,0,0,2393,2394,7,6,0,0,2394,2395,7,10,0,0,2395,2396,7,4,0,0, + 2396,2397,7,0,0,0,2397,488,1,0,0,0,2398,2399,7,0,0,0,2399,2400,7, + 6,0,0,2400,2401,7,16,0,0,2401,2402,7,19,0,0,2402,2403,7,7,0,0,2403, + 2404,7,9,0,0,2404,490,1,0,0,0,2405,2406,7,0,0,0,2406,2407,7,6,0, + 0,2407,2408,7,16,0,0,2408,2409,7,17,0,0,2409,2410,7,12,0,0,2410, + 2411,7,2,0,0,2411,2412,7,8,0,0,2412,2413,7,14,0,0,2413,492,1,0,0, + 0,2414,2415,7,0,0,0,2415,2416,7,6,0,0,2416,2417,7,6,0,0,2417,2418, + 7,1,0,0,2418,494,1,0,0,0,2419,2420,7,0,0,0,2420,2421,7,6,0,0,2421, + 2422,7,13,0,0,2422,2423,7,6,0,0,2423,2424,7,16,0,0,2424,2425,7,8, + 0,0,2425,496,1,0,0,0,2426,2427,7,0,0,0,2427,2428,7,6,0,0,2428,2429, + 7,12,0,0,2429,2430,7,2,0,0,2430,2431,7,4,0,0,2431,2432,7,13,0,0, + 2432,2433,7,2,0,0,2433,2434,7,15,0,0,2434,2435,7,4,0,0,2435,2436, + 7,5,0,0,2436,2437,7,13,0,0,2437,2438,7,6,0,0,2438,498,1,0,0,0,2439, + 2440,7,0,0,0,2440,2441,7,6,0,0,2441,2442,7,0,0,0,2442,2443,7,0,0, + 0,2443,2444,7,2,0,0,2444,2445,7,19,0,0,2445,2446,7,7,0,0,2446,500, + 1,0,0,0,2447,2448,7,0,0,0,2448,2449,7,6,0,0,2449,2450,7,8,0,0,2450, + 502,1,0,0,0,2451,2452,7,0,0,0,2452,2453,7,6,0,0,2453,2454,7,8,0, + 0,2454,2455,7,0,0,0,2455,504,1,0,0,0,2456,2457,7,0,0,0,2457,2458, + 7,18,0,0,2458,2459,7,19,0,0,2459,2460,7,21,0,0,2460,506,1,0,0,0, + 2461,2462,7,0,0,0,2462,2463,7,19,0,0,2463,2464,7,10,0,0,2464,2465, + 7,6,0,0,2465,508,1,0,0,0,2466,2467,7,0,0,0,2467,2468,7,8,0,0,2468, + 2469,7,4,0,0,2469,2470,7,12,0,0,2470,2471,7,8,0,0,2471,510,1,0,0, + 0,2472,2473,7,0,0,0,2473,2474,7,8,0,0,2474,2475,7,4,0,0,2475,2476, + 7,8,0,0,2476,2477,7,0,0,0,2477,512,1,0,0,0,2478,2479,7,0,0,0,2479, + 2480,7,17,0,0,2480,2481,7,5,0,0,2481,2482,7,0,0,0,2482,2483,7,6, + 0,0,2483,2484,7,8,0,0,2484,514,1,0,0,0,2485,2486,7,0,0,0,2486,2487, + 7,17,0,0,2487,2488,7,5,0,0,2488,2489,7,0,0,0,2489,2490,7,8,0,0,2490, + 2491,7,12,0,0,2491,2492,7,2,0,0,2492,2493,7,7,0,0,2493,2494,7,20, + 0,0,2494,516,1,0,0,0,2495,2496,7,0,0,0,2496,2497,7,14,0,0,2497,2498, + 7,0,0,0,2498,2499,7,8,0,0,2499,2500,7,6,0,0,2500,2501,7,10,0,0,2501, + 518,1,0,0,0,2502,2503,7,8,0,0,2503,2504,7,4,0,0,2504,2505,7,5,0, + 0,2505,2506,7,13,0,0,2506,2507,7,6,0,0,2507,520,1,0,0,0,2508,2509, + 7,8,0,0,2509,2510,7,4,0,0,2510,2511,7,5,0,0,2511,2512,7,13,0,0,2512, + 2513,7,6,0,0,2513,2514,7,0,0,0,2514,522,1,0,0,0,2515,2516,7,8,0, + 0,2516,2517,7,4,0,0,2517,2518,7,5,0,0,2518,2519,7,13,0,0,2519,2520, + 7,6,0,0,2520,2521,7,0,0,0,2521,2522,7,4,0,0,2522,2523,7,10,0,0,2523, + 2524,7,3,0,0,2524,2525,7,13,0,0,2525,2526,7,6,0,0,2526,524,1,0,0, + 0,2527,2528,7,8,0,0,2528,2529,7,6,0,0,2529,2530,7,22,0,0,2530,2531, + 7,8,0,0,2531,526,1,0,0,0,2532,2533,7,0,0,0,2533,2534,7,8,0,0,2534, + 2535,7,12,0,0,2535,2536,7,2,0,0,2536,2537,7,7,0,0,2537,2538,7,20, + 0,0,2538,528,1,0,0,0,2539,2540,7,8,0,0,2540,2541,7,18,0,0,2541,2542, + 7,6,0,0,2542,2543,7,7,0,0,2543,530,1,0,0,0,2544,2545,7,8,0,0,2545, + 2546,7,2,0,0,2546,2547,7,6,0,0,2547,2548,7,0,0,0,2548,532,1,0,0, + 0,2549,2550,7,8,0,0,2550,2551,7,2,0,0,2551,2552,7,10,0,0,2552,2553, + 7,6,0,0,2553,534,1,0,0,0,2554,2555,7,8,0,0,2555,2556,7,2,0,0,2556, + 2557,7,10,0,0,2557,2558,7,6,0,0,2558,2559,7,0,0,0,2559,2560,7,8, + 0,0,2560,2561,7,4,0,0,2561,2562,7,10,0,0,2562,2563,7,3,0,0,2563, + 536,1,0,0,0,2564,2565,7,8,0,0,2565,2566,7,19,0,0,2566,538,1,0,0, + 0,2567,2568,7,8,0,0,2568,2569,7,12,0,0,2569,2570,7,4,0,0,2570,2571, + 7,2,0,0,2571,2572,7,13,0,0,2572,2573,7,2,0,0,2573,2574,7,7,0,0,2574, + 2575,7,20,0,0,2575,540,1,0,0,0,2576,2577,7,8,0,0,2577,2578,7,12, + 0,0,2578,2579,7,4,0,0,2579,2580,7,7,0,0,2580,2581,7,0,0,0,2581,2582, + 7,4,0,0,2582,2583,7,16,0,0,2583,2584,7,8,0,0,2584,2585,7,2,0,0,2585, + 2586,7,19,0,0,2586,2587,7,7,0,0,2587,542,1,0,0,0,2588,2589,7,8,0, + 0,2589,2590,7,12,0,0,2590,2591,7,2,0,0,2591,2592,7,10,0,0,2592,544, + 1,0,0,0,2593,2594,7,8,0,0,2594,2595,7,12,0,0,2595,2596,7,17,0,0, + 2596,2597,7,6,0,0,2597,546,1,0,0,0,2598,2599,7,8,0,0,2599,2600,7, + 12,0,0,2600,2601,7,17,0,0,2601,2602,7,7,0,0,2602,2603,7,16,0,0,2603, + 2604,7,4,0,0,2604,2605,7,8,0,0,2605,2606,7,6,0,0,2606,548,1,0,0, + 0,2607,2608,7,8,0,0,2608,2609,7,12,0,0,2609,2610,7,14,0,0,2610,2611, + 5,95,0,0,2611,2612,7,16,0,0,2612,2613,7,4,0,0,2613,2614,7,0,0,0, + 2614,2615,7,8,0,0,2615,550,1,0,0,0,2616,2617,7,8,0,0,2617,2618,7, + 14,0,0,2618,2619,7,3,0,0,2619,2620,7,6,0,0,2620,552,1,0,0,0,2621, + 2622,7,17,0,0,2622,2623,7,6,0,0,2623,2624,7,0,0,0,2624,2625,7,16, + 0,0,2625,2626,7,4,0,0,2626,2627,7,3,0,0,2627,2628,7,6,0,0,2628,554, + 1,0,0,0,2629,2630,7,17,0,0,2630,2631,7,7,0,0,2631,2632,7,5,0,0,2632, + 2633,7,19,0,0,2633,2634,7,17,0,0,2634,2635,7,7,0,0,2635,2636,7,9, + 0,0,2636,2637,7,6,0,0,2637,2638,7,9,0,0,2638,556,1,0,0,0,2639,2640, + 7,17,0,0,2640,2641,7,7,0,0,2641,2642,7,16,0,0,2642,2643,7,19,0,0, + 2643,2644,7,10,0,0,2644,2645,7,10,0,0,2645,2646,7,2,0,0,2646,2647, + 7,8,0,0,2647,2648,7,8,0,0,2648,2649,7,6,0,0,2649,2650,7,9,0,0,2650, + 558,1,0,0,0,2651,2652,7,17,0,0,2652,2653,7,7,0,0,2653,2654,7,16, + 0,0,2654,2655,7,19,0,0,2655,2656,7,7,0,0,2656,2657,7,9,0,0,2657, + 2658,7,2,0,0,2658,2659,7,8,0,0,2659,2660,7,2,0,0,2660,2661,7,19, + 0,0,2661,2662,7,7,0,0,2662,2663,7,4,0,0,2663,2664,7,13,0,0,2664, + 560,1,0,0,0,2665,2666,7,17,0,0,2666,2667,7,7,0,0,2667,2668,7,2,0, + 0,2668,2669,7,19,0,0,2669,2670,7,7,0,0,2670,562,1,0,0,0,2671,2672, + 7,17,0,0,2672,2673,7,7,0,0,2673,2674,7,2,0,0,2674,2675,7,25,0,0, + 2675,2676,7,17,0,0,2676,2677,7,6,0,0,2677,564,1,0,0,0,2678,2679, + 7,17,0,0,2679,2680,7,7,0,0,2680,2681,7,1,0,0,2681,2682,7,7,0,0,2682, + 2683,7,19,0,0,2683,2684,7,21,0,0,2684,2685,7,7,0,0,2685,566,1,0, + 0,0,2686,2687,7,17,0,0,2687,2688,7,7,0,0,2688,2689,7,10,0,0,2689, + 2690,7,4,0,0,2690,2691,7,8,0,0,2691,2692,7,16,0,0,2692,2693,7,18, + 0,0,2693,2694,7,6,0,0,2694,2695,7,9,0,0,2695,568,1,0,0,0,2696,2697, + 7,17,0,0,2697,2698,7,7,0,0,2698,2699,7,7,0,0,2699,2700,7,6,0,0,2700, + 2701,7,0,0,0,2701,2702,7,8,0,0,2702,570,1,0,0,0,2703,2704,7,17,0, + 0,2704,2705,7,7,0,0,2705,2706,7,8,0,0,2706,2707,7,2,0,0,2707,2708, + 7,13,0,0,2708,572,1,0,0,0,2709,2710,7,17,0,0,2710,2711,7,3,0,0,2711, + 2712,7,9,0,0,2712,2713,7,4,0,0,2713,2714,7,8,0,0,2714,2715,7,6,0, + 0,2715,574,1,0,0,0,2716,2717,7,17,0,0,2717,2718,7,0,0,0,2718,2719, + 7,6,0,0,2719,576,1,0,0,0,2720,2721,7,17,0,0,2721,2722,7,0,0,0,2722, + 2723,7,6,0,0,2723,2724,7,12,0,0,2724,578,1,0,0,0,2725,2726,7,17, + 0,0,2726,2727,7,0,0,0,2727,2728,7,2,0,0,2728,2729,7,7,0,0,2729,2730, + 7,20,0,0,2730,580,1,0,0,0,2731,2732,7,17,0,0,2732,2733,7,8,0,0,2733, + 2734,7,11,0,0,2734,2735,5,49,0,0,2735,2736,5,54,0,0,2736,582,1,0, + 0,0,2737,2738,7,17,0,0,2738,2739,7,8,0,0,2739,2740,7,11,0,0,2740, + 2741,5,51,0,0,2741,2742,5,50,0,0,2742,584,1,0,0,0,2743,2744,7,17, + 0,0,2744,2745,7,8,0,0,2745,2746,7,11,0,0,2746,2747,5,56,0,0,2747, + 586,1,0,0,0,2748,2749,7,23,0,0,2749,2750,7,4,0,0,2750,2751,7,13, + 0,0,2751,2752,7,2,0,0,2752,2753,7,9,0,0,2753,2754,7,4,0,0,2754,2755, + 7,8,0,0,2755,2756,7,6,0,0,2756,588,1,0,0,0,2757,2758,7,23,0,0,2758, + 2759,7,4,0,0,2759,2760,7,13,0,0,2760,2761,7,17,0,0,2761,2762,7,6, + 0,0,2762,590,1,0,0,0,2763,2764,7,23,0,0,2764,2765,7,4,0,0,2765,2766, + 7,13,0,0,2766,2767,7,17,0,0,2767,2768,7,6,0,0,2768,2769,7,0,0,0, + 2769,592,1,0,0,0,2770,2771,7,23,0,0,2771,2772,7,6,0,0,2772,2773, + 7,12,0,0,2773,2774,7,5,0,0,2774,2775,7,19,0,0,2775,2776,7,0,0,0, + 2776,2777,7,6,0,0,2777,594,1,0,0,0,2778,2779,7,23,0,0,2779,2780, + 7,6,0,0,2780,2781,7,12,0,0,2781,2782,7,0,0,0,2782,2783,7,2,0,0,2783, + 2784,7,19,0,0,2784,2785,7,7,0,0,2785,596,1,0,0,0,2786,2787,7,23, + 0,0,2787,2788,7,2,0,0,2788,2789,7,6,0,0,2789,2790,7,21,0,0,2790, + 598,1,0,0,0,2791,2792,7,21,0,0,2792,2793,7,18,0,0,2793,2794,7,6, + 0,0,2794,2795,7,7,0,0,2795,600,1,0,0,0,2796,2797,7,21,0,0,2797,2798, + 7,18,0,0,2798,2799,7,6,0,0,2799,2800,7,12,0,0,2800,2801,7,6,0,0, + 2801,602,1,0,0,0,2802,2803,7,21,0,0,2803,2804,7,18,0,0,2804,2805, + 7,2,0,0,2805,2806,7,13,0,0,2806,2807,7,6,0,0,2807,604,1,0,0,0,2808, + 2809,7,21,0,0,2809,2810,7,2,0,0,2810,2811,7,7,0,0,2811,2812,7,9, + 0,0,2812,2813,7,19,0,0,2813,2814,7,21,0,0,2814,606,1,0,0,0,2815, + 2816,7,21,0,0,2816,2817,7,2,0,0,2817,2818,7,8,0,0,2818,2819,7,18, + 0,0,2819,608,1,0,0,0,2820,2821,7,21,0,0,2821,2822,7,2,0,0,2822,2823, + 7,8,0,0,2823,2824,7,18,0,0,2824,2825,7,2,0,0,2825,2826,7,7,0,0,2826, + 610,1,0,0,0,2827,2828,7,21,0,0,2828,2829,7,2,0,0,2829,2830,7,8,0, + 0,2830,2831,7,18,0,0,2831,2832,7,19,0,0,2832,2833,7,17,0,0,2833, + 2834,7,8,0,0,2834,612,1,0,0,0,2835,2836,7,21,0,0,2836,2837,7,19, + 0,0,2837,2838,7,12,0,0,2838,2839,7,1,0,0,2839,614,1,0,0,0,2840,2841, + 7,21,0,0,2841,2842,7,12,0,0,2842,2843,7,4,0,0,2843,2844,7,3,0,0, + 2844,2845,7,3,0,0,2845,2846,7,6,0,0,2846,2847,7,12,0,0,2847,616, + 1,0,0,0,2848,2849,7,21,0,0,2849,2850,7,12,0,0,2850,2851,7,2,0,0, + 2851,2852,7,8,0,0,2852,2853,7,6,0,0,2853,618,1,0,0,0,2854,2855,7, + 14,0,0,2855,2856,7,6,0,0,2856,2857,7,4,0,0,2857,2858,7,12,0,0,2858, + 620,1,0,0,0,2859,2860,7,15,0,0,2860,2861,7,19,0,0,2861,2862,7,7, + 0,0,2862,2863,7,6,0,0,2863,622,1,0,0,0,2864,2865,5,61,0,0,2865,624, + 1,0,0,0,2866,2867,5,60,0,0,2867,2871,5,62,0,0,2868,2869,5,33,0,0, + 2869,2871,5,61,0,0,2870,2866,1,0,0,0,2870,2868,1,0,0,0,2871,626, + 1,0,0,0,2872,2873,5,60,0,0,2873,628,1,0,0,0,2874,2875,5,60,0,0,2875, + 2876,5,61,0,0,2876,630,1,0,0,0,2877,2878,5,62,0,0,2878,632,1,0,0, + 0,2879,2880,5,62,0,0,2880,2881,5,61,0,0,2881,634,1,0,0,0,2882,2883, + 5,43,0,0,2883,636,1,0,0,0,2884,2885,5,45,0,0,2885,638,1,0,0,0,2886, + 2887,5,42,0,0,2887,640,1,0,0,0,2888,2889,5,47,0,0,2889,642,1,0,0, + 0,2890,2891,5,37,0,0,2891,644,1,0,0,0,2892,2893,5,124,0,0,2893,2894, + 5,124,0,0,2894,646,1,0,0,0,2895,2896,5,63,0,0,2896,648,1,0,0,0,2897, + 2898,5,59,0,0,2898,650,1,0,0,0,2899,2905,5,39,0,0,2900,2904,8,26, + 0,0,2901,2902,5,39,0,0,2902,2904,5,39,0,0,2903,2900,1,0,0,0,2903, + 2901,1,0,0,0,2904,2907,1,0,0,0,2905,2903,1,0,0,0,2905,2906,1,0,0, + 0,2906,2908,1,0,0,0,2907,2905,1,0,0,0,2908,2909,5,39,0,0,2909,652, + 1,0,0,0,2910,2911,7,17,0,0,2911,2912,5,38,0,0,2912,2913,5,39,0,0, + 2913,2919,1,0,0,0,2914,2918,8,26,0,0,2915,2916,5,39,0,0,2916,2918, + 5,39,0,0,2917,2914,1,0,0,0,2917,2915,1,0,0,0,2918,2921,1,0,0,0,2919, + 2917,1,0,0,0,2919,2920,1,0,0,0,2920,2922,1,0,0,0,2921,2919,1,0,0, + 0,2922,2923,5,39,0,0,2923,654,1,0,0,0,2924,2925,7,22,0,0,2925,2926, + 5,39,0,0,2926,2930,1,0,0,0,2927,2929,8,26,0,0,2928,2927,1,0,0,0, + 2929,2932,1,0,0,0,2930,2928,1,0,0,0,2930,2931,1,0,0,0,2931,2933, + 1,0,0,0,2932,2930,1,0,0,0,2933,2934,5,39,0,0,2934,656,1,0,0,0,2935, + 2940,3,671,335,0,2936,2940,3,673,336,0,2937,2940,3,675,337,0,2938, + 2940,3,677,338,0,2939,2935,1,0,0,0,2939,2936,1,0,0,0,2939,2937,1, + 0,0,0,2939,2938,1,0,0,0,2940,658,1,0,0,0,2941,2942,3,671,335,0,2942, + 2944,5,46,0,0,2943,2945,3,671,335,0,2944,2943,1,0,0,0,2944,2945, + 1,0,0,0,2945,2949,1,0,0,0,2946,2947,5,46,0,0,2947,2949,3,671,335, + 0,2948,2941,1,0,0,0,2948,2946,1,0,0,0,2949,660,1,0,0,0,2950,2952, + 3,681,340,0,2951,2950,1,0,0,0,2952,2953,1,0,0,0,2953,2951,1,0,0, + 0,2953,2954,1,0,0,0,2954,2962,1,0,0,0,2955,2959,5,46,0,0,2956,2958, + 3,681,340,0,2957,2956,1,0,0,0,2958,2961,1,0,0,0,2959,2957,1,0,0, + 0,2959,2960,1,0,0,0,2960,2963,1,0,0,0,2961,2959,1,0,0,0,2962,2955, + 1,0,0,0,2962,2963,1,0,0,0,2963,2964,1,0,0,0,2964,2965,3,679,339, + 0,2965,2975,1,0,0,0,2966,2968,5,46,0,0,2967,2969,3,681,340,0,2968, + 2967,1,0,0,0,2969,2970,1,0,0,0,2970,2968,1,0,0,0,2970,2971,1,0,0, + 0,2971,2972,1,0,0,0,2972,2973,3,679,339,0,2973,2975,1,0,0,0,2974, + 2951,1,0,0,0,2974,2966,1,0,0,0,2975,662,1,0,0,0,2976,2979,3,683, + 341,0,2977,2979,5,95,0,0,2978,2976,1,0,0,0,2978,2977,1,0,0,0,2979, + 2985,1,0,0,0,2980,2984,3,683,341,0,2981,2984,3,681,340,0,2982,2984, + 5,95,0,0,2983,2980,1,0,0,0,2983,2981,1,0,0,0,2983,2982,1,0,0,0,2984, + 2987,1,0,0,0,2985,2983,1,0,0,0,2985,2986,1,0,0,0,2986,664,1,0,0, + 0,2987,2985,1,0,0,0,2988,2992,3,681,340,0,2989,2993,3,683,341,0, + 2990,2993,3,681,340,0,2991,2993,5,95,0,0,2992,2989,1,0,0,0,2992, + 2990,1,0,0,0,2992,2991,1,0,0,0,2993,2994,1,0,0,0,2994,2992,1,0,0, + 0,2994,2995,1,0,0,0,2995,666,1,0,0,0,2996,3002,5,34,0,0,2997,3001, + 8,27,0,0,2998,2999,5,34,0,0,2999,3001,5,34,0,0,3000,2997,1,0,0,0, + 3000,2998,1,0,0,0,3001,3004,1,0,0,0,3002,3000,1,0,0,0,3002,3003, + 1,0,0,0,3003,3005,1,0,0,0,3004,3002,1,0,0,0,3005,3006,5,34,0,0,3006, + 668,1,0,0,0,3007,3013,5,96,0,0,3008,3012,8,28,0,0,3009,3010,5,96, + 0,0,3010,3012,5,96,0,0,3011,3008,1,0,0,0,3011,3009,1,0,0,0,3012, + 3015,1,0,0,0,3013,3011,1,0,0,0,3013,3014,1,0,0,0,3014,3016,1,0,0, + 0,3015,3013,1,0,0,0,3016,3017,5,96,0,0,3017,670,1,0,0,0,3018,3025, + 3,681,340,0,3019,3021,5,95,0,0,3020,3019,1,0,0,0,3020,3021,1,0,0, + 0,3021,3022,1,0,0,0,3022,3024,3,681,340,0,3023,3020,1,0,0,0,3024, + 3027,1,0,0,0,3025,3023,1,0,0,0,3025,3026,1,0,0,0,3026,672,1,0,0, + 0,3027,3025,1,0,0,0,3028,3029,5,48,0,0,3029,3030,7,22,0,0,3030,3038, + 1,0,0,0,3031,3033,5,95,0,0,3032,3031,1,0,0,0,3032,3033,1,0,0,0,3033, + 3036,1,0,0,0,3034,3037,3,681,340,0,3035,3037,7,29,0,0,3036,3034, + 1,0,0,0,3036,3035,1,0,0,0,3037,3039,1,0,0,0,3038,3032,1,0,0,0,3039, + 3040,1,0,0,0,3040,3038,1,0,0,0,3040,3041,1,0,0,0,3041,674,1,0,0, + 0,3042,3043,5,48,0,0,3043,3044,7,19,0,0,3044,3049,1,0,0,0,3045,3047, + 5,95,0,0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3048,1,0,0,0,3048, + 3050,7,30,0,0,3049,3046,1,0,0,0,3050,3051,1,0,0,0,3051,3049,1,0, + 0,0,3051,3052,1,0,0,0,3052,676,1,0,0,0,3053,3054,5,48,0,0,3054,3055, + 7,5,0,0,3055,3060,1,0,0,0,3056,3058,5,95,0,0,3057,3056,1,0,0,0,3057, + 3058,1,0,0,0,3058,3059,1,0,0,0,3059,3061,7,31,0,0,3060,3057,1,0, + 0,0,3061,3062,1,0,0,0,3062,3060,1,0,0,0,3062,3063,1,0,0,0,3063,678, + 1,0,0,0,3064,3066,7,6,0,0,3065,3067,7,32,0,0,3066,3065,1,0,0,0,3066, + 3067,1,0,0,0,3067,3069,1,0,0,0,3068,3070,3,681,340,0,3069,3068,1, + 0,0,0,3070,3071,1,0,0,0,3071,3069,1,0,0,0,3071,3072,1,0,0,0,3072, + 680,1,0,0,0,3073,3074,7,33,0,0,3074,682,1,0,0,0,3075,3076,7,34,0, + 0,3076,684,1,0,0,0,3077,3078,5,45,0,0,3078,3079,5,45,0,0,3079,3083, + 1,0,0,0,3080,3082,8,35,0,0,3081,3080,1,0,0,0,3082,3085,1,0,0,0,3083, + 3081,1,0,0,0,3083,3084,1,0,0,0,3084,3087,1,0,0,0,3085,3083,1,0,0, + 0,3086,3088,5,13,0,0,3087,3086,1,0,0,0,3087,3088,1,0,0,0,3088,3090, + 1,0,0,0,3089,3091,5,10,0,0,3090,3089,1,0,0,0,3090,3091,1,0,0,0,3091, + 3092,1,0,0,0,3092,3093,6,342,0,0,3093,686,1,0,0,0,3094,3095,5,47, + 0,0,3095,3096,5,42,0,0,3096,3100,1,0,0,0,3097,3099,9,0,0,0,3098, + 3097,1,0,0,0,3099,3102,1,0,0,0,3100,3101,1,0,0,0,3100,3098,1,0,0, + 0,3101,3103,1,0,0,0,3102,3100,1,0,0,0,3103,3104,5,42,0,0,3104,3105, + 5,47,0,0,3105,3106,1,0,0,0,3106,3107,6,343,0,0,3107,688,1,0,0,0, + 3108,3110,7,36,0,0,3109,3108,1,0,0,0,3110,3111,1,0,0,0,3111,3109, + 1,0,0,0,3111,3112,1,0,0,0,3112,3113,1,0,0,0,3113,3114,6,344,0,0, + 3114,690,1,0,0,0,3115,3116,9,0,0,0,3116,692,1,0,0,0,40,0,2870,2903, + 2905,2917,2919,2930,2939,2944,2948,2953,2959,2962,2970,2974,2978, + 2983,2985,2992,2994,3000,3002,3011,3013,3020,3025,3032,3036,3040, + 3046,3051,3057,3062,3066,3071,3083,3087,3090,3100,3111,1,0,1,0 ]; private static __ATN: antlr.ATN; diff --git a/src/lib/trino/TrinoSqlListener.ts b/src/lib/trino/TrinoSqlListener.ts index 558f1a42..8a0856c6 100644 --- a/src/lib/trino/TrinoSqlListener.ts +++ b/src/lib/trino/TrinoSqlListener.ts @@ -10,14 +10,16 @@ import { SQLParserBase } from '../SQLParserBase'; import { ProgramContext } from "./TrinoSqlParser.js"; import { StatementsContext } from "./TrinoSqlParser.js"; -import { StandaloneClauseContext } from "./TrinoSqlParser.js"; import { SingleStatementContext } from "./TrinoSqlParser.js"; import { StandaloneExpressionContext } from "./TrinoSqlParser.js"; import { StandalonePathSpecificationContext } from "./TrinoSqlParser.js"; import { StandaloneTypeContext } from "./TrinoSqlParser.js"; import { StandaloneRowPatternContext } from "./TrinoSqlParser.js"; +import { StandaloneFunctionSpecificationContext } from "./TrinoSqlParser.js"; import { StatementDefaultContext } from "./TrinoSqlParser.js"; import { UseContext } from "./TrinoSqlParser.js"; +import { CreateCatalogContext } from "./TrinoSqlParser.js"; +import { DropCatalogContext } from "./TrinoSqlParser.js"; import { CreateSchemaContext } from "./TrinoSqlParser.js"; import { DropSchemaContext } from "./TrinoSqlParser.js"; import { RenameSchemaContext } from "./TrinoSqlParser.js"; @@ -28,12 +30,15 @@ import { DropTableContext } from "./TrinoSqlParser.js"; import { InsertIntoContext } from "./TrinoSqlParser.js"; import { DeleteContext } from "./TrinoSqlParser.js"; import { TruncateTableContext } from "./TrinoSqlParser.js"; -import { RenameTableContext } from "./TrinoSqlParser.js"; import { CommentTableContext } from "./TrinoSqlParser.js"; +import { CommentViewContext } from "./TrinoSqlParser.js"; import { CommentColumnContext } from "./TrinoSqlParser.js"; +import { RenameTableContext } from "./TrinoSqlParser.js"; +import { AddColumnContext } from "./TrinoSqlParser.js"; import { RenameColumnContext } from "./TrinoSqlParser.js"; import { DropColumnContext } from "./TrinoSqlParser.js"; -import { AddColumnContext } from "./TrinoSqlParser.js"; +import { SetColumnTypeContext } from "./TrinoSqlParser.js"; +import { DropNotNullConstraintContext } from "./TrinoSqlParser.js"; import { SetTableAuthorizationContext } from "./TrinoSqlParser.js"; import { SetTablePropertiesContext } from "./TrinoSqlParser.js"; import { TableExecuteContext } from "./TrinoSqlParser.js"; @@ -48,20 +53,24 @@ import { DropViewContext } from "./TrinoSqlParser.js"; import { RenameViewContext } from "./TrinoSqlParser.js"; import { SetViewAuthorizationContext } from "./TrinoSqlParser.js"; import { CallContext } from "./TrinoSqlParser.js"; +import { CreateFunctionContext } from "./TrinoSqlParser.js"; +import { DropFunctionContext } from "./TrinoSqlParser.js"; import { CreateRoleContext } from "./TrinoSqlParser.js"; import { DropRoleContext } from "./TrinoSqlParser.js"; import { GrantRolesContext } from "./TrinoSqlParser.js"; +import { GrantPrivilegesContext } from "./TrinoSqlParser.js"; import { RevokeRolesContext } from "./TrinoSqlParser.js"; -import { SetRoleContext } from "./TrinoSqlParser.js"; -import { GrantContext } from "./TrinoSqlParser.js"; +import { RevokePrivilegesContext } from "./TrinoSqlParser.js"; import { DenyContext } from "./TrinoSqlParser.js"; -import { RevokeContext } from "./TrinoSqlParser.js"; +import { SetRoleContext } from "./TrinoSqlParser.js"; import { ShowGrantsContext } from "./TrinoSqlParser.js"; import { ExplainContext } from "./TrinoSqlParser.js"; +import { ExplainAnalyzeContext } from "./TrinoSqlParser.js"; import { ShowCreateTableContext } from "./TrinoSqlParser.js"; import { ShowCreateSchemaContext } from "./TrinoSqlParser.js"; import { ShowCreateViewContext } from "./TrinoSqlParser.js"; import { ShowCreateMaterializedViewContext } from "./TrinoSqlParser.js"; +import { ShowCreateFunctionContext } from "./TrinoSqlParser.js"; import { ShowTablesContext } from "./TrinoSqlParser.js"; import { ShowSchemasContext } from "./TrinoSqlParser.js"; import { ShowCatalogsContext } from "./TrinoSqlParser.js"; @@ -72,6 +81,8 @@ import { ShowRolesContext } from "./TrinoSqlParser.js"; import { ShowRoleGrantsContext } from "./TrinoSqlParser.js"; import { ShowFunctionsContext } from "./TrinoSqlParser.js"; import { ShowSessionContext } from "./TrinoSqlParser.js"; +import { SetSessionAuthorizationContext } from "./TrinoSqlParser.js"; +import { ResetSessionAuthorizationContext } from "./TrinoSqlParser.js"; import { SetSessionContext } from "./TrinoSqlParser.js"; import { ResetSessionContext } from "./TrinoSqlParser.js"; import { StartTransactionContext } from "./TrinoSqlParser.js"; @@ -80,6 +91,7 @@ import { RollbackContext } from "./TrinoSqlParser.js"; import { PrepareContext } from "./TrinoSqlParser.js"; import { DeallocateContext } from "./TrinoSqlParser.js"; import { ExecuteContext } from "./TrinoSqlParser.js"; +import { ExecuteImmediateContext } from "./TrinoSqlParser.js"; import { DescribeInputContext } from "./TrinoSqlParser.js"; import { DescribeOutputContext } from "./TrinoSqlParser.js"; import { SetPathContext } from "./TrinoSqlParser.js"; @@ -88,6 +100,8 @@ import { UpdateContext } from "./TrinoSqlParser.js"; import { MergeContext } from "./TrinoSqlParser.js"; import { ShowTableCommentContext } from "./TrinoSqlParser.js"; import { ShowColumnCommentContext } from "./TrinoSqlParser.js"; +import { RootQueryContext } from "./TrinoSqlParser.js"; +import { WithFunctionContext } from "./TrinoSqlParser.js"; import { QueryStatementContext } from "./TrinoSqlParser.js"; import { WithContext } from "./TrinoSqlParser.js"; import { TableElementContext } from "./TrinoSqlParser.js"; @@ -128,6 +142,9 @@ import { JoinTypeContext } from "./TrinoSqlParser.js"; import { JoinCriteriaContext } from "./TrinoSqlParser.js"; import { SampledRelationContext } from "./TrinoSqlParser.js"; import { SampleTypeContext } from "./TrinoSqlParser.js"; +import { TrimsSpecificationContext } from "./TrinoSqlParser.js"; +import { ListAggOverflowBehaviorContext } from "./TrinoSqlParser.js"; +import { ListaggCountIndicationContext } from "./TrinoSqlParser.js"; import { PatternRecognitionContext } from "./TrinoSqlParser.js"; import { MeasureDefinitionContext } from "./TrinoSqlParser.js"; import { RowsPerMatchContext } from "./TrinoSqlParser.js"; @@ -139,15 +156,37 @@ import { AliasedRelationContext } from "./TrinoSqlParser.js"; import { ColumnListCreateContext } from "./TrinoSqlParser.js"; import { ColumnListContext } from "./TrinoSqlParser.js"; import { ColumnAliasesContext } from "./TrinoSqlParser.js"; -import { TableOrViewRelationContext } from "./TrinoSqlParser.js"; +import { TableNameContext } from "./TrinoSqlParser.js"; import { SubqueryRelationContext } from "./TrinoSqlParser.js"; import { UnnestContext } from "./TrinoSqlParser.js"; import { LateralContext } from "./TrinoSqlParser.js"; +import { TableFunctionInvocationContext } from "./TrinoSqlParser.js"; import { ParenthesizedRelationContext } from "./TrinoSqlParser.js"; +import { JsonTableContext } from "./TrinoSqlParser.js"; +import { OrdinalityColumnContext } from "./TrinoSqlParser.js"; +import { ValueColumnContext } from "./TrinoSqlParser.js"; +import { QueryColumnContext } from "./TrinoSqlParser.js"; +import { NestedColumnsContext } from "./TrinoSqlParser.js"; +import { LeafPlanContext } from "./TrinoSqlParser.js"; +import { JoinPlanContext } from "./TrinoSqlParser.js"; +import { UnionPlanContext } from "./TrinoSqlParser.js"; +import { CrossPlanContext } from "./TrinoSqlParser.js"; +import { JsonTablePathNameContext } from "./TrinoSqlParser.js"; +import { PlanPrimaryContext } from "./TrinoSqlParser.js"; +import { JsonTableDefaultPlanContext } from "./TrinoSqlParser.js"; +import { TableFunctionCallContext } from "./TrinoSqlParser.js"; +import { TableFunctionArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentTableContext } from "./TrinoSqlParser.js"; +import { TableArgumentQueryContext } from "./TrinoSqlParser.js"; +import { DescriptorArgumentContext } from "./TrinoSqlParser.js"; +import { DescriptorFieldContext } from "./TrinoSqlParser.js"; +import { CopartitionTablesContext } from "./TrinoSqlParser.js"; import { ExpressionContext } from "./TrinoSqlParser.js"; import { LogicalNotContext } from "./TrinoSqlParser.js"; import { PredicatedContext } from "./TrinoSqlParser.js"; -import { LogicalBinaryContext } from "./TrinoSqlParser.js"; +import { OrContext } from "./TrinoSqlParser.js"; +import { AndContext } from "./TrinoSqlParser.js"; import { ComparisonContext } from "./TrinoSqlParser.js"; import { QuantifiedComparisonContext } from "./TrinoSqlParser.js"; import { BetweenContext } from "./TrinoSqlParser.js"; @@ -163,36 +202,56 @@ import { ArithmeticUnaryContext } from "./TrinoSqlParser.js"; import { AtTimeZoneContext } from "./TrinoSqlParser.js"; import { DereferenceContext } from "./TrinoSqlParser.js"; import { TypeConstructorContext } from "./TrinoSqlParser.js"; -import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser.js"; +import { JsonValueContext } from "./TrinoSqlParser.js"; +import { CurrentDateContext } from "./TrinoSqlParser.js"; import { SubstringContext } from "./TrinoSqlParser.js"; import { CastContext } from "./TrinoSqlParser.js"; import { LambdaContext } from "./TrinoSqlParser.js"; import { ParenthesizedExpressionContext } from "./TrinoSqlParser.js"; +import { TrimContext } from "./TrinoSqlParser.js"; import { ParameterContext } from "./TrinoSqlParser.js"; import { NormalizeContext } from "./TrinoSqlParser.js"; +import { LocalTimestampContext } from "./TrinoSqlParser.js"; +import { JsonObjectContext } from "./TrinoSqlParser.js"; import { IntervalLiteralContext } from "./TrinoSqlParser.js"; import { NumericLiteralContext } from "./TrinoSqlParser.js"; import { BooleanLiteralContext } from "./TrinoSqlParser.js"; +import { JsonArrayContext } from "./TrinoSqlParser.js"; import { SimpleCaseContext } from "./TrinoSqlParser.js"; import { ColumnReferenceContext } from "./TrinoSqlParser.js"; import { NullLiteralContext } from "./TrinoSqlParser.js"; import { RowConstructorContext } from "./TrinoSqlParser.js"; import { SubscriptContext } from "./TrinoSqlParser.js"; +import { JsonExistsContext } from "./TrinoSqlParser.js"; import { CurrentPathContext } from "./TrinoSqlParser.js"; import { SubqueryExpressionContext } from "./TrinoSqlParser.js"; import { BinaryLiteralContext } from "./TrinoSqlParser.js"; +import { CurrentTimeContext } from "./TrinoSqlParser.js"; +import { LocalTimeContext } from "./TrinoSqlParser.js"; import { CurrentUserContext } from "./TrinoSqlParser.js"; +import { JsonQueryContext } from "./TrinoSqlParser.js"; import { MeasureContext } from "./TrinoSqlParser.js"; import { ExtractContext } from "./TrinoSqlParser.js"; import { StringLiteralContext } from "./TrinoSqlParser.js"; import { ArrayConstructorContext } from "./TrinoSqlParser.js"; import { FunctionCallContext } from "./TrinoSqlParser.js"; +import { CurrentTimestampContext } from "./TrinoSqlParser.js"; import { CurrentSchemaContext } from "./TrinoSqlParser.js"; import { ExistsContext } from "./TrinoSqlParser.js"; import { PositionContext } from "./TrinoSqlParser.js"; +import { ListaggContext } from "./TrinoSqlParser.js"; import { SearchedCaseContext } from "./TrinoSqlParser.js"; import { CurrentCatalogContext } from "./TrinoSqlParser.js"; import { GroupingOperationContext } from "./TrinoSqlParser.js"; +import { JsonPathInvocationContext } from "./TrinoSqlParser.js"; +import { JsonValueExpressionContext } from "./TrinoSqlParser.js"; +import { JsonRepresentationContext } from "./TrinoSqlParser.js"; +import { JsonArgumentContext } from "./TrinoSqlParser.js"; +import { JsonExistsErrorBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonValueBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryWrapperBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonObjectMemberContext } from "./TrinoSqlParser.js"; import { ProcessingModeContext } from "./TrinoSqlParser.js"; import { NullTreatmentContext } from "./TrinoSqlParser.js"; import { BasicStringLiteralContext } from "./TrinoSqlParser.js"; @@ -254,23 +313,52 @@ import { NamedArgumentContext } from "./TrinoSqlParser.js"; import { QualifiedArgumentContext } from "./TrinoSqlParser.js"; import { UnqualifiedArgumentContext } from "./TrinoSqlParser.js"; import { PathSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionDeclarationContext } from "./TrinoSqlParser.js"; +import { FunctionSignatureContext } from "./TrinoSqlParser.js"; +import { ParameterDeclarationContext } from "./TrinoSqlParser.js"; +import { ReturnsClauseContext } from "./TrinoSqlParser.js"; +import { LanguageCharacteristicContext } from "./TrinoSqlParser.js"; +import { DeterministicCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnsNullOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { CalledOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { SecurityCharacteristicContext } from "./TrinoSqlParser.js"; +import { CommentCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnStatementContext } from "./TrinoSqlParser.js"; +import { AssignmentStatementContext } from "./TrinoSqlParser.js"; +import { SimpleCaseStatementContext } from "./TrinoSqlParser.js"; +import { SearchedCaseStatementContext } from "./TrinoSqlParser.js"; +import { IfStatementContext } from "./TrinoSqlParser.js"; +import { IterateStatementContext } from "./TrinoSqlParser.js"; +import { LeaveStatementContext } from "./TrinoSqlParser.js"; +import { CompoundStatementContext } from "./TrinoSqlParser.js"; +import { LoopStatementContext } from "./TrinoSqlParser.js"; +import { WhileStatementContext } from "./TrinoSqlParser.js"; +import { RepeatStatementContext } from "./TrinoSqlParser.js"; +import { CaseStatementWhenClauseContext } from "./TrinoSqlParser.js"; +import { ElseIfClauseContext } from "./TrinoSqlParser.js"; +import { ElseClauseContext } from "./TrinoSqlParser.js"; +import { VariableDeclarationContext } from "./TrinoSqlParser.js"; +import { SqlStatementListContext } from "./TrinoSqlParser.js"; import { PrivilegeContext } from "./TrinoSqlParser.js"; +import { EntityKindContext } from "./TrinoSqlParser.js"; +import { GrantObjectContext } from "./TrinoSqlParser.js"; import { TableOrViewNameContext } from "./TrinoSqlParser.js"; -import { TableNameContext } from "./TrinoSqlParser.js"; +import { TableRefContext } from "./TrinoSqlParser.js"; import { TableNameCreateContext } from "./TrinoSqlParser.js"; -import { ViewNameContext } from "./TrinoSqlParser.js"; +import { ViewRefContext } from "./TrinoSqlParser.js"; import { ViewNameCreateContext } from "./TrinoSqlParser.js"; -import { TablePathContext } from "./TrinoSqlParser.js"; -import { ViewPathContext } from "./TrinoSqlParser.js"; -import { SchemaNameContext } from "./TrinoSqlParser.js"; +import { SchemaRefContext } from "./TrinoSqlParser.js"; import { SchemaNameCreateContext } from "./TrinoSqlParser.js"; -import { SchemaPathContext } from "./TrinoSqlParser.js"; -import { CatalogNameContext } from "./TrinoSqlParser.js"; +import { CatalogRefContext } from "./TrinoSqlParser.js"; import { CatalogNameCreateContext } from "./TrinoSqlParser.js"; import { FunctionNameContext } from "./TrinoSqlParser.js"; -import { ColumnNameContext } from "./TrinoSqlParser.js"; +import { FunctionNameCreateContext } from "./TrinoSqlParser.js"; +import { ColumnRefContext } from "./TrinoSqlParser.js"; import { ColumnNameCreateContext } from "./TrinoSqlParser.js"; import { QualifiedNameContext } from "./TrinoSqlParser.js"; +import { QueryPeriodContext } from "./TrinoSqlParser.js"; +import { RangeTypeContext } from "./TrinoSqlParser.js"; import { SpecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { CurrentUserGrantorContext } from "./TrinoSqlParser.js"; import { CurrentRoleGrantorContext } from "./TrinoSqlParser.js"; @@ -278,6 +366,7 @@ import { UnspecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { UserPrincipalContext } from "./TrinoSqlParser.js"; import { RolePrincipalContext } from "./TrinoSqlParser.js"; import { RolesContext } from "./TrinoSqlParser.js"; +import { PrivilegeOrRoleContext } from "./TrinoSqlParser.js"; import { UnquotedIdentifierContext } from "./TrinoSqlParser.js"; import { QuotedIdentifierContext } from "./TrinoSqlParser.js"; import { BackQuotedIdentifierContext } from "./TrinoSqlParser.js"; @@ -285,6 +374,8 @@ import { DigitIdentifierContext } from "./TrinoSqlParser.js"; import { DecimalLiteralContext } from "./TrinoSqlParser.js"; import { DoubleLiteralContext } from "./TrinoSqlParser.js"; import { IntegerLiteralContext } from "./TrinoSqlParser.js"; +import { IdentifierUserContext } from "./TrinoSqlParser.js"; +import { StringUserContext } from "./TrinoSqlParser.js"; import { NonReservedContext } from "./TrinoSqlParser.js"; @@ -313,16 +404,6 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitStatements?: (ctx: StatementsContext) => void; - /** - * Enter a parse tree produced by `TrinoSqlParser.standaloneClause`. - * @param ctx the parse tree - */ - enterStandaloneClause?: (ctx: StandaloneClauseContext) => void; - /** - * Exit a parse tree produced by `TrinoSqlParser.standaloneClause`. - * @param ctx the parse tree - */ - exitStandaloneClause?: (ctx: StandaloneClauseContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.singleStatement`. * @param ctx the parse tree @@ -373,6 +454,16 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitStandaloneRowPattern?: (ctx: StandaloneRowPatternContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.standaloneFunctionSpecification`. + * @param ctx the parse tree + */ + enterStandaloneFunctionSpecification?: (ctx: StandaloneFunctionSpecificationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.standaloneFunctionSpecification`. + * @param ctx the parse tree + */ + exitStandaloneFunctionSpecification?: (ctx: StandaloneFunctionSpecificationContext) => void; /** * Enter a parse tree produced by the `statementDefault` * labeled alternative in `TrinoSqlParser.statement`. @@ -397,6 +488,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitUse?: (ctx: UseContext) => void; + /** + * Enter a parse tree produced by the `createCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterCreateCatalog?: (ctx: CreateCatalogContext) => void; + /** + * Exit a parse tree produced by the `createCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitCreateCatalog?: (ctx: CreateCatalogContext) => void; + /** + * Enter a parse tree produced by the `dropCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterDropCatalog?: (ctx: DropCatalogContext) => void; + /** + * Exit a parse tree produced by the `dropCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitDropCatalog?: (ctx: DropCatalogContext) => void; /** * Enter a parse tree produced by the `createSchema` * labeled alternative in `TrinoSqlParser.statement`. @@ -518,29 +633,29 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitTruncateTable?: (ctx: TruncateTableContext) => void; /** - * Enter a parse tree produced by the `renameTable` + * Enter a parse tree produced by the `commentTable` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterRenameTable?: (ctx: RenameTableContext) => void; + enterCommentTable?: (ctx: CommentTableContext) => void; /** - * Exit a parse tree produced by the `renameTable` + * Exit a parse tree produced by the `commentTable` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitRenameTable?: (ctx: RenameTableContext) => void; + exitCommentTable?: (ctx: CommentTableContext) => void; /** - * Enter a parse tree produced by the `commentTable` + * Enter a parse tree produced by the `commentView` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterCommentTable?: (ctx: CommentTableContext) => void; + enterCommentView?: (ctx: CommentViewContext) => void; /** - * Exit a parse tree produced by the `commentTable` + * Exit a parse tree produced by the `commentView` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitCommentTable?: (ctx: CommentTableContext) => void; + exitCommentView?: (ctx: CommentViewContext) => void; /** * Enter a parse tree produced by the `commentColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -553,6 +668,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitCommentColumn?: (ctx: CommentColumnContext) => void; + /** + * Enter a parse tree produced by the `renameTable` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterRenameTable?: (ctx: RenameTableContext) => void; + /** + * Exit a parse tree produced by the `renameTable` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitRenameTable?: (ctx: RenameTableContext) => void; + /** + * Enter a parse tree produced by the `addColumn` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterAddColumn?: (ctx: AddColumnContext) => void; + /** + * Exit a parse tree produced by the `addColumn` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitAddColumn?: (ctx: AddColumnContext) => void; /** * Enter a parse tree produced by the `renameColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -578,17 +717,29 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitDropColumn?: (ctx: DropColumnContext) => void; /** - * Enter a parse tree produced by the `addColumn` + * Enter a parse tree produced by the `setColumnType` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterAddColumn?: (ctx: AddColumnContext) => void; + enterSetColumnType?: (ctx: SetColumnTypeContext) => void; /** - * Exit a parse tree produced by the `addColumn` + * Exit a parse tree produced by the `setColumnType` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitAddColumn?: (ctx: AddColumnContext) => void; + exitSetColumnType?: (ctx: SetColumnTypeContext) => void; + /** + * Enter a parse tree produced by the `dropNotNullConstraint` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterDropNotNullConstraint?: (ctx: DropNotNullConstraintContext) => void; + /** + * Exit a parse tree produced by the `dropNotNullConstraint` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitDropNotNullConstraint?: (ctx: DropNotNullConstraintContext) => void; /** * Enter a parse tree produced by the `setTableAuthorization` * labeled alternative in `TrinoSqlParser.statement`. @@ -757,6 +908,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitCall?: (ctx: CallContext) => void; + /** + * Enter a parse tree produced by the `createFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Exit a parse tree produced by the `createFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Enter a parse tree produced by the `dropFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterDropFunction?: (ctx: DropFunctionContext) => void; + /** + * Exit a parse tree produced by the `dropFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitDropFunction?: (ctx: DropFunctionContext) => void; /** * Enter a parse tree produced by the `createRole` * labeled alternative in `TrinoSqlParser.statement`. @@ -794,41 +969,41 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitGrantRoles?: (ctx: GrantRolesContext) => void; /** - * Enter a parse tree produced by the `revokeRoles` + * Enter a parse tree produced by the `grantPrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterRevokeRoles?: (ctx: RevokeRolesContext) => void; + enterGrantPrivileges?: (ctx: GrantPrivilegesContext) => void; /** - * Exit a parse tree produced by the `revokeRoles` + * Exit a parse tree produced by the `grantPrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitRevokeRoles?: (ctx: RevokeRolesContext) => void; + exitGrantPrivileges?: (ctx: GrantPrivilegesContext) => void; /** - * Enter a parse tree produced by the `setRole` + * Enter a parse tree produced by the `revokeRoles` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterSetRole?: (ctx: SetRoleContext) => void; + enterRevokeRoles?: (ctx: RevokeRolesContext) => void; /** - * Exit a parse tree produced by the `setRole` + * Exit a parse tree produced by the `revokeRoles` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitSetRole?: (ctx: SetRoleContext) => void; + exitRevokeRoles?: (ctx: RevokeRolesContext) => void; /** - * Enter a parse tree produced by the `grant` + * Enter a parse tree produced by the `revokePrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterGrant?: (ctx: GrantContext) => void; + enterRevokePrivileges?: (ctx: RevokePrivilegesContext) => void; /** - * Exit a parse tree produced by the `grant` + * Exit a parse tree produced by the `revokePrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitGrant?: (ctx: GrantContext) => void; + exitRevokePrivileges?: (ctx: RevokePrivilegesContext) => void; /** * Enter a parse tree produced by the `deny` * labeled alternative in `TrinoSqlParser.statement`. @@ -842,17 +1017,17 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitDeny?: (ctx: DenyContext) => void; /** - * Enter a parse tree produced by the `revoke` + * Enter a parse tree produced by the `setRole` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterRevoke?: (ctx: RevokeContext) => void; + enterSetRole?: (ctx: SetRoleContext) => void; /** - * Exit a parse tree produced by the `revoke` + * Exit a parse tree produced by the `setRole` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitRevoke?: (ctx: RevokeContext) => void; + exitSetRole?: (ctx: SetRoleContext) => void; /** * Enter a parse tree produced by the `showGrants` * labeled alternative in `TrinoSqlParser.statement`. @@ -877,6 +1052,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitExplain?: (ctx: ExplainContext) => void; + /** + * Enter a parse tree produced by the `explainAnalyze` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterExplainAnalyze?: (ctx: ExplainAnalyzeContext) => void; + /** + * Exit a parse tree produced by the `explainAnalyze` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitExplainAnalyze?: (ctx: ExplainAnalyzeContext) => void; /** * Enter a parse tree produced by the `showCreateTable` * labeled alternative in `TrinoSqlParser.statement`. @@ -925,6 +1112,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitShowCreateMaterializedView?: (ctx: ShowCreateMaterializedViewContext) => void; + /** + * Enter a parse tree produced by the `showCreateFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterShowCreateFunction?: (ctx: ShowCreateFunctionContext) => void; + /** + * Exit a parse tree produced by the `showCreateFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitShowCreateFunction?: (ctx: ShowCreateFunctionContext) => void; /** * Enter a parse tree produced by the `showTables` * labeled alternative in `TrinoSqlParser.statement`. @@ -1045,6 +1244,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitShowSession?: (ctx: ShowSessionContext) => void; + /** + * Enter a parse tree produced by the `setSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterSetSessionAuthorization?: (ctx: SetSessionAuthorizationContext) => void; + /** + * Exit a parse tree produced by the `setSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitSetSessionAuthorization?: (ctx: SetSessionAuthorizationContext) => void; + /** + * Enter a parse tree produced by the `resetSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterResetSessionAuthorization?: (ctx: ResetSessionAuthorizationContext) => void; + /** + * Exit a parse tree produced by the `resetSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitResetSessionAuthorization?: (ctx: ResetSessionAuthorizationContext) => void; /** * Enter a parse tree produced by the `setSession` * labeled alternative in `TrinoSqlParser.statement`. @@ -1141,6 +1364,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitExecute?: (ctx: ExecuteContext) => void; + /** + * Enter a parse tree produced by the `executeImmediate` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterExecuteImmediate?: (ctx: ExecuteImmediateContext) => void; + /** + * Exit a parse tree produced by the `executeImmediate` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitExecuteImmediate?: (ctx: ExecuteImmediateContext) => void; /** * Enter a parse tree produced by the `describeInput` * labeled alternative in `TrinoSqlParser.statement`. @@ -1237,6 +1472,26 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitShowColumnComment?: (ctx: ShowColumnCommentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.rootQuery`. + * @param ctx the parse tree + */ + enterRootQuery?: (ctx: RootQueryContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.rootQuery`. + * @param ctx the parse tree + */ + exitRootQuery?: (ctx: RootQueryContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.withFunction`. + * @param ctx the parse tree + */ + enterWithFunction?: (ctx: WithFunctionContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.withFunction`. + * @param ctx the parse tree + */ + exitWithFunction?: (ctx: WithFunctionContext) => void; /** * Enter a parse tree produced by the `queryStatement` * labeled alternative in `TrinoSqlParser.query`. @@ -1671,6 +1926,36 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitSampleType?: (ctx: SampleTypeContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.trimsSpecification`. + * @param ctx the parse tree + */ + enterTrimsSpecification?: (ctx: TrimsSpecificationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.trimsSpecification`. + * @param ctx the parse tree + */ + exitTrimsSpecification?: (ctx: TrimsSpecificationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.listAggOverflowBehavior`. + * @param ctx the parse tree + */ + enterListAggOverflowBehavior?: (ctx: ListAggOverflowBehaviorContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.listAggOverflowBehavior`. + * @param ctx the parse tree + */ + exitListAggOverflowBehavior?: (ctx: ListAggOverflowBehaviorContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.listaggCountIndication`. + * @param ctx the parse tree + */ + enterListaggCountIndication?: (ctx: ListaggCountIndicationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.listaggCountIndication`. + * @param ctx the parse tree + */ + exitListaggCountIndication?: (ctx: ListaggCountIndicationContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.patternRecognition`. * @param ctx the parse tree @@ -1782,17 +2067,17 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitColumnAliases?: (ctx: ColumnAliasesContext) => void; /** - * Enter a parse tree produced by the `tableOrViewRelation` + * Enter a parse tree produced by the `tableName` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - enterTableOrViewRelation?: (ctx: TableOrViewRelationContext) => void; + enterTableName?: (ctx: TableNameContext) => void; /** - * Exit a parse tree produced by the `tableOrViewRelation` + * Exit a parse tree produced by the `tableName` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - exitTableOrViewRelation?: (ctx: TableOrViewRelationContext) => void; + exitTableName?: (ctx: TableNameContext) => void; /** * Enter a parse tree produced by the `subqueryRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1829,6 +2114,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitLateral?: (ctx: LateralContext) => void; + /** + * Enter a parse tree produced by the `tableFunctionInvocation` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + */ + enterTableFunctionInvocation?: (ctx: TableFunctionInvocationContext) => void; + /** + * Exit a parse tree produced by the `tableFunctionInvocation` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + */ + exitTableFunctionInvocation?: (ctx: TableFunctionInvocationContext) => void; /** * Enter a parse tree produced by the `parenthesizedRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1842,131 +2139,365 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitParenthesizedRelation?: (ctx: ParenthesizedRelationContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.expression`. + * Enter a parse tree produced by the `jsonTable` + * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - enterExpression?: (ctx: ExpressionContext) => void; + enterJsonTable?: (ctx: JsonTableContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.expression`. + * Exit a parse tree produced by the `jsonTable` + * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - exitExpression?: (ctx: ExpressionContext) => void; + exitJsonTable?: (ctx: JsonTableContext) => void; /** - * Enter a parse tree produced by the `logicalNot` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Enter a parse tree produced by the `ordinalityColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterLogicalNot?: (ctx: LogicalNotContext) => void; + enterOrdinalityColumn?: (ctx: OrdinalityColumnContext) => void; /** - * Exit a parse tree produced by the `logicalNot` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Exit a parse tree produced by the `ordinalityColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitLogicalNot?: (ctx: LogicalNotContext) => void; + exitOrdinalityColumn?: (ctx: OrdinalityColumnContext) => void; /** - * Enter a parse tree produced by the `predicated` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Enter a parse tree produced by the `valueColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterPredicated?: (ctx: PredicatedContext) => void; + enterValueColumn?: (ctx: ValueColumnContext) => void; /** - * Exit a parse tree produced by the `predicated` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Exit a parse tree produced by the `valueColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitPredicated?: (ctx: PredicatedContext) => void; + exitValueColumn?: (ctx: ValueColumnContext) => void; /** - * Enter a parse tree produced by the `logicalBinary` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Enter a parse tree produced by the `queryColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterLogicalBinary?: (ctx: LogicalBinaryContext) => void; + enterQueryColumn?: (ctx: QueryColumnContext) => void; /** - * Exit a parse tree produced by the `logicalBinary` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Exit a parse tree produced by the `queryColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; + exitQueryColumn?: (ctx: QueryColumnContext) => void; /** - * Enter a parse tree produced by the `comparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `nestedColumns` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterComparison?: (ctx: ComparisonContext) => void; + enterNestedColumns?: (ctx: NestedColumnsContext) => void; /** - * Exit a parse tree produced by the `comparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `nestedColumns` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitComparison?: (ctx: ComparisonContext) => void; + exitNestedColumns?: (ctx: NestedColumnsContext) => void; /** - * Enter a parse tree produced by the `quantifiedComparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `leafPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + enterLeafPlan?: (ctx: LeafPlanContext) => void; /** - * Exit a parse tree produced by the `quantifiedComparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `leafPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + exitLeafPlan?: (ctx: LeafPlanContext) => void; /** - * Enter a parse tree produced by the `between` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `joinPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterBetween?: (ctx: BetweenContext) => void; + enterJoinPlan?: (ctx: JoinPlanContext) => void; /** - * Exit a parse tree produced by the `between` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `joinPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitBetween?: (ctx: BetweenContext) => void; + exitJoinPlan?: (ctx: JoinPlanContext) => void; /** - * Enter a parse tree produced by the `inList` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `unionPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterInList?: (ctx: InListContext) => void; + enterUnionPlan?: (ctx: UnionPlanContext) => void; /** - * Exit a parse tree produced by the `inList` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `unionPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitInList?: (ctx: InListContext) => void; + exitUnionPlan?: (ctx: UnionPlanContext) => void; /** - * Enter a parse tree produced by the `inSubquery` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `crossPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterInSubquery?: (ctx: InSubqueryContext) => void; + enterCrossPlan?: (ctx: CrossPlanContext) => void; /** - * Exit a parse tree produced by the `inSubquery` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `crossPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitInSubquery?: (ctx: InSubqueryContext) => void; + exitCrossPlan?: (ctx: CrossPlanContext) => void; /** - * Enter a parse tree produced by the `like` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by `TrinoSqlParser.jsonTablePathName`. * @param ctx the parse tree */ - enterLike?: (ctx: LikeContext) => void; + enterJsonTablePathName?: (ctx: JsonTablePathNameContext) => void; /** - * Exit a parse tree produced by the `like` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by `TrinoSqlParser.jsonTablePathName`. * @param ctx the parse tree */ - exitLike?: (ctx: LikeContext) => void; + exitJsonTablePathName?: (ctx: JsonTablePathNameContext) => void; /** - * Enter a parse tree produced by the `nullPredicate` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by `TrinoSqlParser.planPrimary`. * @param ctx the parse tree */ - enterNullPredicate?: (ctx: NullPredicateContext) => void; + enterPlanPrimary?: (ctx: PlanPrimaryContext) => void; /** - * Exit a parse tree produced by the `nullPredicate` + * Exit a parse tree produced by `TrinoSqlParser.planPrimary`. + * @param ctx the parse tree + */ + exitPlanPrimary?: (ctx: PlanPrimaryContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonTableDefaultPlan`. + * @param ctx the parse tree + */ + enterJsonTableDefaultPlan?: (ctx: JsonTableDefaultPlanContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonTableDefaultPlan`. + * @param ctx the parse tree + */ + exitJsonTableDefaultPlan?: (ctx: JsonTableDefaultPlanContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableFunctionCall`. + * @param ctx the parse tree + */ + enterTableFunctionCall?: (ctx: TableFunctionCallContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableFunctionCall`. + * @param ctx the parse tree + */ + exitTableFunctionCall?: (ctx: TableFunctionCallContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableFunctionArgument`. + * @param ctx the parse tree + */ + enterTableFunctionArgument?: (ctx: TableFunctionArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableFunctionArgument`. + * @param ctx the parse tree + */ + exitTableFunctionArgument?: (ctx: TableFunctionArgumentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableArgument`. + * @param ctx the parse tree + */ + enterTableArgument?: (ctx: TableArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableArgument`. + * @param ctx the parse tree + */ + exitTableArgument?: (ctx: TableArgumentContext) => void; + /** + * Enter a parse tree produced by the `tableArgumentTable` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + enterTableArgumentTable?: (ctx: TableArgumentTableContext) => void; + /** + * Exit a parse tree produced by the `tableArgumentTable` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + exitTableArgumentTable?: (ctx: TableArgumentTableContext) => void; + /** + * Enter a parse tree produced by the `tableArgumentQuery` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + enterTableArgumentQuery?: (ctx: TableArgumentQueryContext) => void; + /** + * Exit a parse tree produced by the `tableArgumentQuery` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + exitTableArgumentQuery?: (ctx: TableArgumentQueryContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.descriptorArgument`. + * @param ctx the parse tree + */ + enterDescriptorArgument?: (ctx: DescriptorArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.descriptorArgument`. + * @param ctx the parse tree + */ + exitDescriptorArgument?: (ctx: DescriptorArgumentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.descriptorField`. + * @param ctx the parse tree + */ + enterDescriptorField?: (ctx: DescriptorFieldContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.descriptorField`. + * @param ctx the parse tree + */ + exitDescriptorField?: (ctx: DescriptorFieldContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.copartitionTables`. + * @param ctx the parse tree + */ + enterCopartitionTables?: (ctx: CopartitionTablesContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.copartitionTables`. + * @param ctx the parse tree + */ + exitCopartitionTables?: (ctx: CopartitionTablesContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.expression`. + * @param ctx the parse tree + */ + enterExpression?: (ctx: ExpressionContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.expression`. + * @param ctx the parse tree + */ + exitExpression?: (ctx: ExpressionContext) => void; + /** + * Enter a parse tree produced by the `logicalNot` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Exit a parse tree produced by the `logicalNot` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Enter a parse tree produced by the `predicated` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterPredicated?: (ctx: PredicatedContext) => void; + /** + * Exit a parse tree produced by the `predicated` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitPredicated?: (ctx: PredicatedContext) => void; + /** + * Enter a parse tree produced by the `or` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterOr?: (ctx: OrContext) => void; + /** + * Exit a parse tree produced by the `or` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitOr?: (ctx: OrContext) => void; + /** + * Enter a parse tree produced by the `and` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterAnd?: (ctx: AndContext) => void; + /** + * Exit a parse tree produced by the `and` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitAnd?: (ctx: AndContext) => void; + /** + * Enter a parse tree produced by the `comparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterComparison?: (ctx: ComparisonContext) => void; + /** + * Exit a parse tree produced by the `comparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitComparison?: (ctx: ComparisonContext) => void; + /** + * Enter a parse tree produced by the `quantifiedComparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + /** + * Exit a parse tree produced by the `quantifiedComparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + /** + * Enter a parse tree produced by the `between` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterBetween?: (ctx: BetweenContext) => void; + /** + * Exit a parse tree produced by the `between` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitBetween?: (ctx: BetweenContext) => void; + /** + * Enter a parse tree produced by the `inList` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterInList?: (ctx: InListContext) => void; + /** + * Exit a parse tree produced by the `inList` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitInList?: (ctx: InListContext) => void; + /** + * Enter a parse tree produced by the `inSubquery` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterInSubquery?: (ctx: InSubqueryContext) => void; + /** + * Exit a parse tree produced by the `inSubquery` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitInSubquery?: (ctx: InSubqueryContext) => void; + /** + * Enter a parse tree produced by the `like` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterLike?: (ctx: LikeContext) => void; + /** + * Exit a parse tree produced by the `like` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitLike?: (ctx: LikeContext) => void; + /** + * Enter a parse tree produced by the `nullPredicate` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterNullPredicate?: (ctx: NullPredicateContext) => void; + /** + * Exit a parse tree produced by the `nullPredicate` * labeled alternative in `TrinoSqlParser.predicate`. * @param ctx the parse tree */ @@ -2068,17 +2599,29 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitTypeConstructor?: (ctx: TypeConstructorContext) => void; /** - * Enter a parse tree produced by the `specialDateTimeFunction` + * Enter a parse tree produced by the `jsonValue` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonValue?: (ctx: JsonValueContext) => void; + /** + * Exit a parse tree produced by the `jsonValue` * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree */ - enterSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; + exitJsonValue?: (ctx: JsonValueContext) => void; /** - * Exit a parse tree produced by the `specialDateTimeFunction` + * Enter a parse tree produced by the `currentDate` * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree */ - exitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; + enterCurrentDate?: (ctx: CurrentDateContext) => void; + /** + * Exit a parse tree produced by the `currentDate` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentDate?: (ctx: CurrentDateContext) => void; /** * Enter a parse tree produced by the `substring` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2127,6 +2670,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Enter a parse tree produced by the `trim` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterTrim?: (ctx: TrimContext) => void; + /** + * Exit a parse tree produced by the `trim` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitTrim?: (ctx: TrimContext) => void; /** * Enter a parse tree produced by the `parameter` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2151,6 +2706,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitNormalize?: (ctx: NormalizeContext) => void; + /** + * Enter a parse tree produced by the `localTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterLocalTimestamp?: (ctx: LocalTimestampContext) => void; + /** + * Exit a parse tree produced by the `localTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitLocalTimestamp?: (ctx: LocalTimestampContext) => void; + /** + * Enter a parse tree produced by the `jsonObject` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonObject?: (ctx: JsonObjectContext) => void; + /** + * Exit a parse tree produced by the `jsonObject` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonObject?: (ctx: JsonObjectContext) => void; /** * Enter a parse tree produced by the `intervalLiteral` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2187,6 +2766,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Enter a parse tree produced by the `jsonArray` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonArray?: (ctx: JsonArrayContext) => void; + /** + * Exit a parse tree produced by the `jsonArray` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonArray?: (ctx: JsonArrayContext) => void; /** * Enter a parse tree produced by the `simpleCase` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2247,6 +2838,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitSubscript?: (ctx: SubscriptContext) => void; + /** + * Enter a parse tree produced by the `jsonExists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonExists?: (ctx: JsonExistsContext) => void; + /** + * Exit a parse tree produced by the `jsonExists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonExists?: (ctx: JsonExistsContext) => void; /** * Enter a parse tree produced by the `currentPath` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2283,6 +2886,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitBinaryLiteral?: (ctx: BinaryLiteralContext) => void; + /** + * Enter a parse tree produced by the `currentTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentTime?: (ctx: CurrentTimeContext) => void; + /** + * Exit a parse tree produced by the `currentTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentTime?: (ctx: CurrentTimeContext) => void; + /** + * Enter a parse tree produced by the `localTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterLocalTime?: (ctx: LocalTimeContext) => void; + /** + * Exit a parse tree produced by the `localTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitLocalTime?: (ctx: LocalTimeContext) => void; /** * Enter a parse tree produced by the `currentUser` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2295,6 +2922,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitCurrentUser?: (ctx: CurrentUserContext) => void; + /** + * Enter a parse tree produced by the `jsonQuery` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonQuery?: (ctx: JsonQueryContext) => void; + /** + * Exit a parse tree produced by the `jsonQuery` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonQuery?: (ctx: JsonQueryContext) => void; /** * Enter a parse tree produced by the `measure` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2355,6 +2994,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitFunctionCall?: (ctx: FunctionCallContext) => void; + /** + * Enter a parse tree produced by the `currentTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentTimestamp?: (ctx: CurrentTimestampContext) => void; + /** + * Exit a parse tree produced by the `currentTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentTimestamp?: (ctx: CurrentTimestampContext) => void; /** * Enter a parse tree produced by the `currentSchema` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2378,55 +3029,157 @@ export class TrinoSqlListener implements ParseTreeListener { * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree */ - exitExists?: (ctx: ExistsContext) => void; + exitExists?: (ctx: ExistsContext) => void; + /** + * Enter a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterPosition?: (ctx: PositionContext) => void; + /** + * Exit a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitPosition?: (ctx: PositionContext) => void; + /** + * Enter a parse tree produced by the `listagg` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterListagg?: (ctx: ListaggContext) => void; + /** + * Exit a parse tree produced by the `listagg` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitListagg?: (ctx: ListaggContext) => void; + /** + * Enter a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSearchedCase?: (ctx: SearchedCaseContext) => void; + /** + * Exit a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSearchedCase?: (ctx: SearchedCaseContext) => void; + /** + * Enter a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + /** + * Exit a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + /** + * Enter a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterGroupingOperation?: (ctx: GroupingOperationContext) => void; + /** + * Exit a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitGroupingOperation?: (ctx: GroupingOperationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonPathInvocation`. + * @param ctx the parse tree + */ + enterJsonPathInvocation?: (ctx: JsonPathInvocationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonPathInvocation`. + * @param ctx the parse tree + */ + exitJsonPathInvocation?: (ctx: JsonPathInvocationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonValueExpression`. + * @param ctx the parse tree + */ + enterJsonValueExpression?: (ctx: JsonValueExpressionContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonValueExpression`. + * @param ctx the parse tree + */ + exitJsonValueExpression?: (ctx: JsonValueExpressionContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonRepresentation`. + * @param ctx the parse tree + */ + enterJsonRepresentation?: (ctx: JsonRepresentationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonRepresentation`. + * @param ctx the parse tree + */ + exitJsonRepresentation?: (ctx: JsonRepresentationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonArgument`. + * @param ctx the parse tree + */ + enterJsonArgument?: (ctx: JsonArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonArgument`. + * @param ctx the parse tree + */ + exitJsonArgument?: (ctx: JsonArgumentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonExistsErrorBehavior`. + * @param ctx the parse tree + */ + enterJsonExistsErrorBehavior?: (ctx: JsonExistsErrorBehaviorContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonExistsErrorBehavior`. + * @param ctx the parse tree + */ + exitJsonExistsErrorBehavior?: (ctx: JsonExistsErrorBehaviorContext) => void; /** - * Enter a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonValueBehavior`. * @param ctx the parse tree */ - enterPosition?: (ctx: PositionContext) => void; + enterJsonValueBehavior?: (ctx: JsonValueBehaviorContext) => void; /** - * Exit a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonValueBehavior`. * @param ctx the parse tree */ - exitPosition?: (ctx: PositionContext) => void; + exitJsonValueBehavior?: (ctx: JsonValueBehaviorContext) => void; /** - * Enter a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonQueryWrapperBehavior`. * @param ctx the parse tree */ - enterSearchedCase?: (ctx: SearchedCaseContext) => void; + enterJsonQueryWrapperBehavior?: (ctx: JsonQueryWrapperBehaviorContext) => void; /** - * Exit a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonQueryWrapperBehavior`. * @param ctx the parse tree */ - exitSearchedCase?: (ctx: SearchedCaseContext) => void; + exitJsonQueryWrapperBehavior?: (ctx: JsonQueryWrapperBehaviorContext) => void; /** - * Enter a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonQueryBehavior`. * @param ctx the parse tree */ - enterCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + enterJsonQueryBehavior?: (ctx: JsonQueryBehaviorContext) => void; /** - * Exit a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonQueryBehavior`. * @param ctx the parse tree */ - exitCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + exitJsonQueryBehavior?: (ctx: JsonQueryBehaviorContext) => void; /** - * Enter a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonObjectMember`. * @param ctx the parse tree */ - enterGroupingOperation?: (ctx: GroupingOperationContext) => void; + enterJsonObjectMember?: (ctx: JsonObjectMemberContext) => void; /** - * Exit a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonObjectMember`. * @param ctx the parse tree */ - exitGroupingOperation?: (ctx: GroupingOperationContext) => void; + exitJsonObjectMember?: (ctx: JsonObjectMemberContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.processingMode`. * @param ctx the parse tree @@ -3125,6 +3878,310 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitPathSpecification?: (ctx: PathSpecificationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.functionSpecification`. + * @param ctx the parse tree + */ + enterFunctionSpecification?: (ctx: FunctionSpecificationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionSpecification`. + * @param ctx the parse tree + */ + exitFunctionSpecification?: (ctx: FunctionSpecificationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.functionDeclaration`. + * @param ctx the parse tree + */ + enterFunctionDeclaration?: (ctx: FunctionDeclarationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionDeclaration`. + * @param ctx the parse tree + */ + exitFunctionDeclaration?: (ctx: FunctionDeclarationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.functionSignature`. + * @param ctx the parse tree + */ + enterFunctionSignature?: (ctx: FunctionSignatureContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionSignature`. + * @param ctx the parse tree + */ + exitFunctionSignature?: (ctx: FunctionSignatureContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.parameterDeclaration`. + * @param ctx the parse tree + */ + enterParameterDeclaration?: (ctx: ParameterDeclarationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.parameterDeclaration`. + * @param ctx the parse tree + */ + exitParameterDeclaration?: (ctx: ParameterDeclarationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.returnsClause`. + * @param ctx the parse tree + */ + enterReturnsClause?: (ctx: ReturnsClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.returnsClause`. + * @param ctx the parse tree + */ + exitReturnsClause?: (ctx: ReturnsClauseContext) => void; + /** + * Enter a parse tree produced by the `languageCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterLanguageCharacteristic?: (ctx: LanguageCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `languageCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitLanguageCharacteristic?: (ctx: LanguageCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `deterministicCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterDeterministicCharacteristic?: (ctx: DeterministicCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `deterministicCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitDeterministicCharacteristic?: (ctx: DeterministicCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `returnsNullOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterReturnsNullOnNullInputCharacteristic?: (ctx: ReturnsNullOnNullInputCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `returnsNullOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitReturnsNullOnNullInputCharacteristic?: (ctx: ReturnsNullOnNullInputCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `calledOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterCalledOnNullInputCharacteristic?: (ctx: CalledOnNullInputCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `calledOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitCalledOnNullInputCharacteristic?: (ctx: CalledOnNullInputCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `securityCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterSecurityCharacteristic?: (ctx: SecurityCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `securityCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitSecurityCharacteristic?: (ctx: SecurityCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `commentCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterCommentCharacteristic?: (ctx: CommentCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `commentCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitCommentCharacteristic?: (ctx: CommentCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `returnStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterReturnStatement?: (ctx: ReturnStatementContext) => void; + /** + * Exit a parse tree produced by the `returnStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitReturnStatement?: (ctx: ReturnStatementContext) => void; + /** + * Enter a parse tree produced by the `assignmentStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterAssignmentStatement?: (ctx: AssignmentStatementContext) => void; + /** + * Exit a parse tree produced by the `assignmentStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitAssignmentStatement?: (ctx: AssignmentStatementContext) => void; + /** + * Enter a parse tree produced by the `simpleCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterSimpleCaseStatement?: (ctx: SimpleCaseStatementContext) => void; + /** + * Exit a parse tree produced by the `simpleCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitSimpleCaseStatement?: (ctx: SimpleCaseStatementContext) => void; + /** + * Enter a parse tree produced by the `searchedCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterSearchedCaseStatement?: (ctx: SearchedCaseStatementContext) => void; + /** + * Exit a parse tree produced by the `searchedCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitSearchedCaseStatement?: (ctx: SearchedCaseStatementContext) => void; + /** + * Enter a parse tree produced by the `ifStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterIfStatement?: (ctx: IfStatementContext) => void; + /** + * Exit a parse tree produced by the `ifStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitIfStatement?: (ctx: IfStatementContext) => void; + /** + * Enter a parse tree produced by the `iterateStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterIterateStatement?: (ctx: IterateStatementContext) => void; + /** + * Exit a parse tree produced by the `iterateStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitIterateStatement?: (ctx: IterateStatementContext) => void; + /** + * Enter a parse tree produced by the `leaveStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterLeaveStatement?: (ctx: LeaveStatementContext) => void; + /** + * Exit a parse tree produced by the `leaveStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitLeaveStatement?: (ctx: LeaveStatementContext) => void; + /** + * Enter a parse tree produced by the `compoundStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterCompoundStatement?: (ctx: CompoundStatementContext) => void; + /** + * Exit a parse tree produced by the `compoundStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitCompoundStatement?: (ctx: CompoundStatementContext) => void; + /** + * Enter a parse tree produced by the `loopStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterLoopStatement?: (ctx: LoopStatementContext) => void; + /** + * Exit a parse tree produced by the `loopStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitLoopStatement?: (ctx: LoopStatementContext) => void; + /** + * Enter a parse tree produced by the `whileStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterWhileStatement?: (ctx: WhileStatementContext) => void; + /** + * Exit a parse tree produced by the `whileStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitWhileStatement?: (ctx: WhileStatementContext) => void; + /** + * Enter a parse tree produced by the `repeatStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterRepeatStatement?: (ctx: RepeatStatementContext) => void; + /** + * Exit a parse tree produced by the `repeatStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitRepeatStatement?: (ctx: RepeatStatementContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.caseStatementWhenClause`. + * @param ctx the parse tree + */ + enterCaseStatementWhenClause?: (ctx: CaseStatementWhenClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.caseStatementWhenClause`. + * @param ctx the parse tree + */ + exitCaseStatementWhenClause?: (ctx: CaseStatementWhenClauseContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.elseIfClause`. + * @param ctx the parse tree + */ + enterElseIfClause?: (ctx: ElseIfClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.elseIfClause`. + * @param ctx the parse tree + */ + exitElseIfClause?: (ctx: ElseIfClauseContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.elseClause`. + * @param ctx the parse tree + */ + enterElseClause?: (ctx: ElseClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.elseClause`. + * @param ctx the parse tree + */ + exitElseClause?: (ctx: ElseClauseContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.variableDeclaration`. + * @param ctx the parse tree + */ + enterVariableDeclaration?: (ctx: VariableDeclarationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.variableDeclaration`. + * @param ctx the parse tree + */ + exitVariableDeclaration?: (ctx: VariableDeclarationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.sqlStatementList`. + * @param ctx the parse tree + */ + enterSqlStatementList?: (ctx: SqlStatementListContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.sqlStatementList`. + * @param ctx the parse tree + */ + exitSqlStatementList?: (ctx: SqlStatementListContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.privilege`. * @param ctx the parse tree @@ -3136,85 +4193,85 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitPrivilege?: (ctx: PrivilegeContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * Enter a parse tree produced by `TrinoSqlParser.entityKind`. * @param ctx the parse tree */ - enterTableOrViewName?: (ctx: TableOrViewNameContext) => void; + enterEntityKind?: (ctx: EntityKindContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * Exit a parse tree produced by `TrinoSqlParser.entityKind`. * @param ctx the parse tree */ - exitTableOrViewName?: (ctx: TableOrViewNameContext) => void; + exitEntityKind?: (ctx: EntityKindContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tableName`. + * Enter a parse tree produced by `TrinoSqlParser.grantObject`. * @param ctx the parse tree */ - enterTableName?: (ctx: TableNameContext) => void; + enterGrantObject?: (ctx: GrantObjectContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tableName`. + * Exit a parse tree produced by `TrinoSqlParser.grantObject`. * @param ctx the parse tree */ - exitTableName?: (ctx: TableNameContext) => void; + exitGrantObject?: (ctx: GrantObjectContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * Enter a parse tree produced by `TrinoSqlParser.tableOrViewName`. * @param ctx the parse tree */ - enterTableNameCreate?: (ctx: TableNameCreateContext) => void; + enterTableOrViewName?: (ctx: TableOrViewNameContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * Exit a parse tree produced by `TrinoSqlParser.tableOrViewName`. * @param ctx the parse tree */ - exitTableNameCreate?: (ctx: TableNameCreateContext) => void; + exitTableOrViewName?: (ctx: TableOrViewNameContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.viewName`. + * Enter a parse tree produced by `TrinoSqlParser.tableRef`. * @param ctx the parse tree */ - enterViewName?: (ctx: ViewNameContext) => void; + enterTableRef?: (ctx: TableRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.viewName`. + * Exit a parse tree produced by `TrinoSqlParser.tableRef`. * @param ctx the parse tree */ - exitViewName?: (ctx: ViewNameContext) => void; + exitTableRef?: (ctx: TableRefContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * Enter a parse tree produced by `TrinoSqlParser.tableNameCreate`. * @param ctx the parse tree */ - enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; + enterTableNameCreate?: (ctx: TableNameCreateContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * Exit a parse tree produced by `TrinoSqlParser.tableNameCreate`. * @param ctx the parse tree */ - exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; + exitTableNameCreate?: (ctx: TableNameCreateContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tablePath`. + * Enter a parse tree produced by `TrinoSqlParser.viewRef`. * @param ctx the parse tree */ - enterTablePath?: (ctx: TablePathContext) => void; + enterViewRef?: (ctx: ViewRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tablePath`. + * Exit a parse tree produced by `TrinoSqlParser.viewRef`. * @param ctx the parse tree */ - exitTablePath?: (ctx: TablePathContext) => void; + exitViewRef?: (ctx: ViewRefContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.viewPath`. + * Enter a parse tree produced by `TrinoSqlParser.viewNameCreate`. * @param ctx the parse tree */ - enterViewPath?: (ctx: ViewPathContext) => void; + enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.viewPath`. + * Exit a parse tree produced by `TrinoSqlParser.viewNameCreate`. * @param ctx the parse tree */ - exitViewPath?: (ctx: ViewPathContext) => void; + exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.schemaName`. + * Enter a parse tree produced by `TrinoSqlParser.schemaRef`. * @param ctx the parse tree */ - enterSchemaName?: (ctx: SchemaNameContext) => void; + enterSchemaRef?: (ctx: SchemaRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.schemaName`. + * Exit a parse tree produced by `TrinoSqlParser.schemaRef`. * @param ctx the parse tree */ - exitSchemaName?: (ctx: SchemaNameContext) => void; + exitSchemaRef?: (ctx: SchemaRefContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.schemaNameCreate`. * @param ctx the parse tree @@ -3226,25 +4283,15 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.schemaPath`. - * @param ctx the parse tree - */ - enterSchemaPath?: (ctx: SchemaPathContext) => void; - /** - * Exit a parse tree produced by `TrinoSqlParser.schemaPath`. - * @param ctx the parse tree - */ - exitSchemaPath?: (ctx: SchemaPathContext) => void; - /** - * Enter a parse tree produced by `TrinoSqlParser.catalogName`. + * Enter a parse tree produced by `TrinoSqlParser.catalogRef`. * @param ctx the parse tree */ - enterCatalogName?: (ctx: CatalogNameContext) => void; + enterCatalogRef?: (ctx: CatalogRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.catalogName`. + * Exit a parse tree produced by `TrinoSqlParser.catalogRef`. * @param ctx the parse tree */ - exitCatalogName?: (ctx: CatalogNameContext) => void; + exitCatalogRef?: (ctx: CatalogRefContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.catalogNameCreate`. * @param ctx the parse tree @@ -3266,15 +4313,25 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitFunctionName?: (ctx: FunctionNameContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.columnName`. + * Enter a parse tree produced by `TrinoSqlParser.functionNameCreate`. + * @param ctx the parse tree + */ + enterFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionNameCreate`. + * @param ctx the parse tree + */ + exitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.columnRef`. * @param ctx the parse tree */ - enterColumnName?: (ctx: ColumnNameContext) => void; + enterColumnRef?: (ctx: ColumnRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.columnName`. + * Exit a parse tree produced by `TrinoSqlParser.columnRef`. * @param ctx the parse tree */ - exitColumnName?: (ctx: ColumnNameContext) => void; + exitColumnRef?: (ctx: ColumnRefContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.columnNameCreate`. * @param ctx the parse tree @@ -3295,6 +4352,26 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitQualifiedName?: (ctx: QualifiedNameContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.queryPeriod`. + * @param ctx the parse tree + */ + enterQueryPeriod?: (ctx: QueryPeriodContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.queryPeriod`. + * @param ctx the parse tree + */ + exitQueryPeriod?: (ctx: QueryPeriodContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.rangeType`. + * @param ctx the parse tree + */ + enterRangeType?: (ctx: RangeTypeContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.rangeType`. + * @param ctx the parse tree + */ + exitRangeType?: (ctx: RangeTypeContext) => void; /** * Enter a parse tree produced by the `specifiedPrincipal` * labeled alternative in `TrinoSqlParser.grantor`. @@ -3377,6 +4454,16 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitRoles?: (ctx: RolesContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.privilegeOrRole`. + * @param ctx the parse tree + */ + enterPrivilegeOrRole?: (ctx: PrivilegeOrRoleContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.privilegeOrRole`. + * @param ctx the parse tree + */ + exitPrivilegeOrRole?: (ctx: PrivilegeOrRoleContext) => void; /** * Enter a parse tree produced by the `unquotedIdentifier` * labeled alternative in `TrinoSqlParser.identifier`. @@ -3461,6 +4548,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitIntegerLiteral?: (ctx: IntegerLiteralContext) => void; + /** + * Enter a parse tree produced by the `identifierUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + enterIdentifierUser?: (ctx: IdentifierUserContext) => void; + /** + * Exit a parse tree produced by the `identifierUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + exitIdentifierUser?: (ctx: IdentifierUserContext) => void; + /** + * Enter a parse tree produced by the `stringUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + enterStringUser?: (ctx: StringUserContext) => void; + /** + * Exit a parse tree produced by the `stringUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + exitStringUser?: (ctx: StringUserContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.nonReserved`. * @param ctx the parse tree diff --git a/src/lib/trino/TrinoSqlParser.ts b/src/lib/trino/TrinoSqlParser.ts index 5b3f40c1..bf394649 100644 --- a/src/lib/trino/TrinoSqlParser.ts +++ b/src/lib/trino/TrinoSqlParser.ts @@ -33,504 +33,643 @@ export class TrinoSqlParser extends SQLParserBase { public static readonly T__13 = 14; public static readonly T__14 = 15; public static readonly T__15 = 16; - public static readonly KW_ADD = 17; - public static readonly KW_ADMIN = 18; - public static readonly KW_AFTER = 19; - public static readonly KW_ALL = 20; - public static readonly KW_ALTER = 21; - public static readonly KW_ANALYZE = 22; - public static readonly KW_AND = 23; - public static readonly KW_ANY = 24; - public static readonly KW_ARRAY = 25; - public static readonly KW_AS = 26; - public static readonly KW_ASC = 27; - public static readonly KW_AT = 28; - public static readonly KW_AUTHORIZATION = 29; - public static readonly KW_BERNOULLI = 30; - public static readonly KW_BETWEEN = 31; - public static readonly KW_BY = 32; - public static readonly KW_CALL = 33; - public static readonly KW_CASCADE = 34; - public static readonly KW_CASE = 35; - public static readonly KW_CAST = 36; - public static readonly KW_CATALOGS = 37; - public static readonly KW_COLUMN = 38; - public static readonly KW_COLUMNS = 39; - public static readonly KW_COMMENT = 40; - public static readonly KW_COMMIT = 41; - public static readonly KW_COMMITTED = 42; - public static readonly KW_CONSTRAINT = 43; - public static readonly KW_CREATE = 44; - public static readonly KW_CROSS = 45; - public static readonly KW_CUBE = 46; - public static readonly KW_CURRENT = 47; - public static readonly KW_CURRENT_CATALOG = 48; - public static readonly KW_CURRENT_DATE = 49; - public static readonly KW_CURRENT_PATH = 50; - public static readonly KW_CURRENT_ROLE = 51; - public static readonly KW_CURRENT_SCHEMA = 52; - public static readonly KW_CURRENT_TIME = 53; - public static readonly KW_CURRENT_TIMESTAMP = 54; - public static readonly KW_CURRENT_USER = 55; - public static readonly KW_DATA = 56; - public static readonly KW_DATE = 57; - public static readonly KW_DAY = 58; - public static readonly KW_DEFAULT = 59; - public static readonly KW_DEALLOCATE = 60; - public static readonly KW_DEFINER = 61; - public static readonly KW_DELETE = 62; - public static readonly KW_DESC = 63; - public static readonly KW_DESCRIBE = 64; - public static readonly KW_DEFINE = 65; - public static readonly KW_DISTINCT = 66; - public static readonly KW_DISTRIBUTED = 67; - public static readonly KW_DOUBLE = 68; - public static readonly KW_DROP = 69; - public static readonly KW_ELSE = 70; - public static readonly KW_EMPTY = 71; - public static readonly KW_END = 72; - public static readonly KW_ESCAPE = 73; - public static readonly KW_EXCEPT = 74; - public static readonly KW_EXCLUDING = 75; - public static readonly KW_EXECUTE = 76; - public static readonly KW_EXISTS = 77; - public static readonly KW_EXPLAIN = 78; - public static readonly KW_EXTRACT = 79; - public static readonly KW_FALSE = 80; - public static readonly KW_FETCH = 81; - public static readonly KW_FILTER = 82; - public static readonly KW_FINAL = 83; - public static readonly KW_FIRST = 84; - public static readonly KW_FOLLOWING = 85; - public static readonly KW_FOR = 86; - public static readonly KW_FORMAT = 87; - public static readonly KW_FROM = 88; - public static readonly KW_FULL = 89; - public static readonly KW_FUNCTIONS = 90; - public static readonly KW_GRANT = 91; - public static readonly KW_GRANTED = 92; - public static readonly KW_GRANTS = 93; - public static readonly KW_DENY = 94; - public static readonly KW_GRAPHVIZ = 95; - public static readonly KW_GROUP = 96; - public static readonly KW_GROUPING = 97; - public static readonly KW_GROUPS = 98; - public static readonly KW_HAVING = 99; - public static readonly KW_HOUR = 100; - public static readonly KW_IF = 101; - public static readonly KW_IGNORE = 102; - public static readonly KW_IN = 103; - public static readonly KW_INCLUDING = 104; - public static readonly KW_INITIAL = 105; - public static readonly KW_INNER = 106; - public static readonly KW_INPUT = 107; - public static readonly KW_INSERT = 108; - public static readonly KW_INTERSECT = 109; - public static readonly KW_INTERVAL = 110; - public static readonly KW_INTO = 111; - public static readonly KW_INVOKER = 112; - public static readonly KW_IO = 113; - public static readonly KW_IS = 114; - public static readonly KW_ISOLATION = 115; - public static readonly KW_JOIN = 116; - public static readonly KW_JSON = 117; - public static readonly KW_LAST = 118; - public static readonly KW_LATERAL = 119; - public static readonly KW_LEFT = 120; - public static readonly KW_LEVEL = 121; - public static readonly KW_LIKE = 122; - public static readonly KW_LIMIT = 123; - public static readonly KW_LOCAL = 124; - public static readonly KW_LOCALTIME = 125; - public static readonly KW_LOCALTIMESTAMP = 126; - public static readonly KW_LOGICAL = 127; - public static readonly KW_MAP = 128; - public static readonly KW_MATCH = 129; - public static readonly KW_MATCHED = 130; - public static readonly KW_MATCHES = 131; - public static readonly KW_MATCH_RECOGNIZE = 132; - public static readonly KW_MATERIALIZED = 133; - public static readonly KW_MEASURES = 134; - public static readonly KW_MERGE = 135; - public static readonly KW_MINUTE = 136; - public static readonly KW_MONTH = 137; - public static readonly KW_NATURAL = 138; - public static readonly KW_NEXT = 139; - public static readonly KW_NFC = 140; - public static readonly KW_NFD = 141; - public static readonly KW_NFKC = 142; - public static readonly KW_NFKD = 143; - public static readonly KW_NO = 144; - public static readonly KW_NONE = 145; - public static readonly KW_NORMALIZE = 146; - public static readonly KW_NOT = 147; - public static readonly KW_NULL = 148; - public static readonly KW_NULLIF = 149; - public static readonly KW_NULLS = 150; - public static readonly KW_OFFSET = 151; - public static readonly KW_OMIT = 152; - public static readonly KW_ON = 153; - public static readonly KW_ONE = 154; - public static readonly KW_ONLY = 155; - public static readonly KW_OPTION = 156; - public static readonly KW_OR = 157; - public static readonly KW_ORDER = 158; - public static readonly KW_ORDINALITY = 159; - public static readonly KW_OUTER = 160; - public static readonly KW_OUTPUT = 161; - public static readonly KW_OVER = 162; - public static readonly KW_PARTITION = 163; - public static readonly KW_PARTITIONS = 164; - public static readonly KW_PAST = 165; - public static readonly KW_PATH = 166; - public static readonly KW_PATTERN = 167; - public static readonly KW_PER = 168; - public static readonly KW_PERMUTE = 169; - public static readonly KW_POSITION = 170; - public static readonly KW_PRECEDING = 171; - public static readonly KW_PRECISION = 172; - public static readonly KW_PREPARE = 173; - public static readonly KW_PRIVILEGES = 174; - public static readonly KW_PROPERTIES = 175; - public static readonly KW_RANGE = 176; - public static readonly KW_READ = 177; - public static readonly KW_RECURSIVE = 178; - public static readonly KW_REFRESH = 179; - public static readonly KW_RENAME = 180; - public static readonly KW_REPEATABLE = 181; - public static readonly KW_REPLACE = 182; - public static readonly KW_RESET = 183; - public static readonly KW_RESPECT = 184; - public static readonly KW_RESTRICT = 185; - public static readonly KW_REVOKE = 186; - public static readonly KW_RIGHT = 187; - public static readonly KW_ROLE = 188; - public static readonly KW_ROLES = 189; - public static readonly KW_ROLLBACK = 190; - public static readonly KW_ROLLUP = 191; - public static readonly KW_ROW = 192; - public static readonly KW_ROWS = 193; - public static readonly KW_RUNNING = 194; - public static readonly KW_SCHEMA = 195; - public static readonly KW_SCHEMAS = 196; - public static readonly KW_SECOND = 197; - public static readonly KW_SECURITY = 198; - public static readonly KW_SEEK = 199; - public static readonly KW_SELECT = 200; - public static readonly KW_SERIALIZABLE = 201; - public static readonly KW_SESSION = 202; - public static readonly KW_SET = 203; - public static readonly KW_SETS = 204; - public static readonly KW_SHOW = 205; - public static readonly KW_SOME = 206; - public static readonly KW_START = 207; - public static readonly KW_STATS = 208; - public static readonly KW_SUBSET = 209; - public static readonly KW_SUBSTRING = 210; - public static readonly KW_SYSTEM = 211; - public static readonly KW_TABLE = 212; - public static readonly KW_TABLES = 213; - public static readonly KW_TABLESAMPLE = 214; - public static readonly KW_TEXT = 215; - public static readonly KW_THEN = 216; - public static readonly KW_TIES = 217; - public static readonly KW_TIME = 218; - public static readonly KW_TIMESTAMP = 219; - public static readonly KW_TO = 220; - public static readonly KW_TRANSACTION = 221; - public static readonly KW_TRUNCATE = 222; - public static readonly KW_TRUE = 223; - public static readonly KW_TRY_CAST = 224; - public static readonly KW_TYPE = 225; - public static readonly KW_UESCAPE = 226; - public static readonly KW_UNBOUNDED = 227; - public static readonly KW_UNCOMMITTED = 228; - public static readonly KW_UNION = 229; - public static readonly KW_UNMATCHED = 230; - public static readonly KW_UNNEST = 231; - public static readonly KW_UPDATE = 232; - public static readonly KW_USE = 233; - public static readonly KW_USER = 234; - public static readonly KW_USING = 235; - public static readonly KW_VALIDATE = 236; - public static readonly KW_VALUES = 237; - public static readonly KW_VERBOSE = 238; - public static readonly KW_VIEW = 239; - public static readonly KW_WHEN = 240; - public static readonly KW_WHERE = 241; - public static readonly KW_WINDOW = 242; - public static readonly KW_WITH = 243; - public static readonly KW_WITHOUT = 244; - public static readonly KW_WORK = 245; - public static readonly KW_WRITE = 246; - public static readonly KW_YEAR = 247; - public static readonly KW_ZONE = 248; - public static readonly EQ = 249; - public static readonly NEQ = 250; - public static readonly LT = 251; - public static readonly LTE = 252; - public static readonly GT = 253; - public static readonly GTE = 254; - public static readonly PLUS = 255; - public static readonly MINUS = 256; - public static readonly ASTERISK = 257; - public static readonly SLASH = 258; - public static readonly PERCENT = 259; - public static readonly CONCAT = 260; - public static readonly QUESTION_MARK = 261; - public static readonly STRING = 262; - public static readonly UNICODE_STRING = 263; - public static readonly BINARY_LITERAL = 264; - public static readonly INTEGER_VALUE = 265; - public static readonly DECIMAL_VALUE = 266; - public static readonly DOUBLE_VALUE = 267; - public static readonly IDENTIFIER = 268; - public static readonly DIGIT_IDENTIFIER = 269; - public static readonly QUOTED_IDENTIFIER = 270; - public static readonly BACKQUOTED_IDENTIFIER = 271; - public static readonly SEMICOLON = 272; - public static readonly SIMPLE_COMMENT = 273; - public static readonly BRACKETED_COMMENT = 274; - public static readonly WS = 275; - public static readonly UNRECOGNIZED = 276; - public static readonly DELIMITER = 277; + public static readonly T__16 = 17; + public static readonly KW_ABSENT = 18; + public static readonly KW_ADD = 19; + public static readonly KW_ADMIN = 20; + public static readonly KW_AFTER = 21; + public static readonly KW_ALL = 22; + public static readonly KW_ALTER = 23; + public static readonly KW_ANALYZE = 24; + public static readonly KW_AND = 25; + public static readonly KW_ANY = 26; + public static readonly KW_ARRAY = 27; + public static readonly KW_AS = 28; + public static readonly KW_ASC = 29; + public static readonly KW_AT = 30; + public static readonly KW_AUTHORIZATION = 31; + public static readonly KW_BEGIN = 32; + public static readonly KW_BERNOULLI = 33; + public static readonly KW_BETWEEN = 34; + public static readonly KW_BOTH = 35; + public static readonly KW_BY = 36; + public static readonly KW_CALL = 37; + public static readonly KW_CALLED = 38; + public static readonly KW_CASCADE = 39; + public static readonly KW_CASE = 40; + public static readonly KW_CAST = 41; + public static readonly KW_CATALOG = 42; + public static readonly KW_CATALOGS = 43; + public static readonly KW_COLUMN = 44; + public static readonly KW_COLUMNS = 45; + public static readonly KW_COMMENT = 46; + public static readonly KW_COMMIT = 47; + public static readonly KW_COMMITTED = 48; + public static readonly KW_CONDITIONAL = 49; + public static readonly KW_CONSTRAINT = 50; + public static readonly KW_COUNT = 51; + public static readonly KW_COPARTITION = 52; + public static readonly KW_CREATE = 53; + public static readonly KW_CROSS = 54; + public static readonly KW_CUBE = 55; + public static readonly KW_CURRENT = 56; + public static readonly KW_CURRENT_CATALOG = 57; + public static readonly KW_CURRENT_DATE = 58; + public static readonly KW_CURRENT_PATH = 59; + public static readonly KW_CURRENT_ROLE = 60; + public static readonly KW_CURRENT_SCHEMA = 61; + public static readonly KW_CURRENT_TIME = 62; + public static readonly KW_CURRENT_TIMESTAMP = 63; + public static readonly KW_CURRENT_USER = 64; + public static readonly KW_DATA = 65; + public static readonly KW_DATE = 66; + public static readonly KW_DAY = 67; + public static readonly KW_DEALLOCATE = 68; + public static readonly KW_DECLARE = 69; + public static readonly KW_DEFAULT = 70; + public static readonly KW_DEFINE = 71; + public static readonly KW_DEFINER = 72; + public static readonly KW_DELETE = 73; + public static readonly KW_DENY = 74; + public static readonly KW_DESC = 75; + public static readonly KW_DESCRIBE = 76; + public static readonly KW_DESCRIPTOR = 77; + public static readonly KW_DETERMINISTIC = 78; + public static readonly KW_DISTINCT = 79; + public static readonly KW_DISTRIBUTED = 80; + public static readonly KW_DO = 81; + public static readonly KW_DOUBLE = 82; + public static readonly KW_DROP = 83; + public static readonly KW_ELSE = 84; + public static readonly KW_EMPTY = 85; + public static readonly KW_ELSEIF = 86; + public static readonly KW_ENCODING = 87; + public static readonly KW_END = 88; + public static readonly KW_ERROR = 89; + public static readonly KW_ESCAPE = 90; + public static readonly KW_EXCEPT = 91; + public static readonly KW_EXCLUDING = 92; + public static readonly KW_EXECUTE = 93; + public static readonly KW_EXISTS = 94; + public static readonly KW_EXPLAIN = 95; + public static readonly KW_EXTRACT = 96; + public static readonly KW_FALSE = 97; + public static readonly KW_FETCH = 98; + public static readonly KW_FILTER = 99; + public static readonly KW_FINAL = 100; + public static readonly KW_FIRST = 101; + public static readonly KW_FOLLOWING = 102; + public static readonly KW_FOR = 103; + public static readonly KW_FORMAT = 104; + public static readonly KW_FROM = 105; + public static readonly KW_FULL = 106; + public static readonly KW_FUNCTION = 107; + public static readonly KW_FUNCTIONS = 108; + public static readonly KW_GRACE = 109; + public static readonly KW_GRANT = 110; + public static readonly KW_GRANTED = 111; + public static readonly KW_GRANTS = 112; + public static readonly KW_GRAPHVIZ = 113; + public static readonly KW_GROUP = 114; + public static readonly KW_GROUPING = 115; + public static readonly KW_GROUPS = 116; + public static readonly KW_HAVING = 117; + public static readonly KW_HOUR = 118; + public static readonly KW_IF = 119; + public static readonly KW_IGNORE = 120; + public static readonly KW_IMMEDIATE = 121; + public static readonly KW_IN = 122; + public static readonly KW_INCLUDING = 123; + public static readonly KW_INITIAL = 124; + public static readonly KW_INNER = 125; + public static readonly KW_INPUT = 126; + public static readonly KW_INSERT = 127; + public static readonly KW_INTERSECT = 128; + public static readonly KW_INTERVAL = 129; + public static readonly KW_INTO = 130; + public static readonly KW_INVOKER = 131; + public static readonly KW_IO = 132; + public static readonly KW_IS = 133; + public static readonly KW_ISOLATION = 134; + public static readonly KW_ITERATE = 135; + public static readonly KW_JOIN = 136; + public static readonly KW_JSON = 137; + public static readonly KW_JSON_ARRAY = 138; + public static readonly KW_JSON_EXISTS = 139; + public static readonly KW_JSON_OBJECT = 140; + public static readonly KW_JSON_QUERY = 141; + public static readonly KW_JSON_TABLE = 142; + public static readonly KW_JSON_VALUE = 143; + public static readonly KW_KEEP = 144; + public static readonly KW_KEY = 145; + public static readonly KW_KEYS = 146; + public static readonly KW_LANGUAGE = 147; + public static readonly KW_LAST = 148; + public static readonly KW_LATERAL = 149; + public static readonly KW_LEADING = 150; + public static readonly KW_LEAVE = 151; + public static readonly KW_LEFT = 152; + public static readonly KW_LEVEL = 153; + public static readonly KW_LIKE = 154; + public static readonly KW_LIMIT = 155; + public static readonly KW_LISTAGG = 156; + public static readonly KW_LOCAL = 157; + public static readonly KW_LOCALTIME = 158; + public static readonly KW_LOCALTIMESTAMP = 159; + public static readonly KW_LOGICAL = 160; + public static readonly KW_LOOP = 161; + public static readonly KW_MAP = 162; + public static readonly KW_MATCH = 163; + public static readonly KW_MATCHED = 164; + public static readonly KW_MATCHES = 165; + public static readonly KW_MATCH_RECOGNIZE = 166; + public static readonly KW_MATERIALIZED = 167; + public static readonly KW_MEASURES = 168; + public static readonly KW_MERGE = 169; + public static readonly KW_MINUTE = 170; + public static readonly KW_MONTH = 171; + public static readonly KW_NATURAL = 172; + public static readonly KW_NESTED = 173; + public static readonly KW_NEXT = 174; + public static readonly KW_NFC = 175; + public static readonly KW_NFD = 176; + public static readonly KW_NFKC = 177; + public static readonly KW_NFKD = 178; + public static readonly KW_NO = 179; + public static readonly KW_NONE = 180; + public static readonly KW_NORMALIZE = 181; + public static readonly KW_NOT = 182; + public static readonly KW_NULL = 183; + public static readonly KW_NULLIF = 184; + public static readonly KW_NULLS = 185; + public static readonly KW_OBJECT = 186; + public static readonly KW_OF = 187; + public static readonly KW_OFFSET = 188; + public static readonly KW_OMIT = 189; + public static readonly KW_ON = 190; + public static readonly KW_ONE = 191; + public static readonly KW_ONLY = 192; + public static readonly KW_OPTION = 193; + public static readonly KW_OR = 194; + public static readonly KW_ORDER = 195; + public static readonly KW_ORDINALITY = 196; + public static readonly KW_OUTER = 197; + public static readonly KW_OUTPUT = 198; + public static readonly KW_OVER = 199; + public static readonly KW_OVERFLOW = 200; + public static readonly KW_PARTITION = 201; + public static readonly KW_PARTITIONS = 202; + public static readonly KW_PASSING = 203; + public static readonly KW_PAST = 204; + public static readonly KW_PATH = 205; + public static readonly KW_PATTERN = 206; + public static readonly KW_PER = 207; + public static readonly KW_PERIOD = 208; + public static readonly KW_PERMUTE = 209; + public static readonly KW_PLAN = 210; + public static readonly KW_POSITION = 211; + public static readonly KW_PRECEDING = 212; + public static readonly KW_PRECISION = 213; + public static readonly KW_PREPARE = 214; + public static readonly KW_PRIVILEGES = 215; + public static readonly KW_PROPERTIES = 216; + public static readonly KW_PRUNE = 217; + public static readonly KW_QUOTES = 218; + public static readonly KW_RANGE = 219; + public static readonly KW_READ = 220; + public static readonly KW_RECURSIVE = 221; + public static readonly KW_REFRESH = 222; + public static readonly KW_RENAME = 223; + public static readonly KW_REPEAT = 224; + public static readonly KW_REPEATABLE = 225; + public static readonly KW_REPLACE = 226; + public static readonly KW_RESET = 227; + public static readonly KW_RESPECT = 228; + public static readonly KW_RESTRICT = 229; + public static readonly KW_RETURN = 230; + public static readonly KW_RETURNING = 231; + public static readonly KW_RETURNS = 232; + public static readonly KW_REVOKE = 233; + public static readonly KW_RIGHT = 234; + public static readonly KW_ROLE = 235; + public static readonly KW_ROLES = 236; + public static readonly KW_ROLLBACK = 237; + public static readonly KW_ROLLUP = 238; + public static readonly KW_ROW = 239; + public static readonly KW_ROWS = 240; + public static readonly KW_RUNNING = 241; + public static readonly KW_SCALAR = 242; + public static readonly KW_SCHEMA = 243; + public static readonly KW_SCHEMAS = 244; + public static readonly KW_SECOND = 245; + public static readonly KW_SECURITY = 246; + public static readonly KW_SEEK = 247; + public static readonly KW_SELECT = 248; + public static readonly KW_SERIALIZABLE = 249; + public static readonly KW_SESSION = 250; + public static readonly KW_SET = 251; + public static readonly KW_SETS = 252; + public static readonly KW_SHOW = 253; + public static readonly KW_SOME = 254; + public static readonly KW_START = 255; + public static readonly KW_STATS = 256; + public static readonly KW_SUBSET = 257; + public static readonly KW_SUBSTRING = 258; + public static readonly KW_SYSTEM = 259; + public static readonly KW_TABLE = 260; + public static readonly KW_TABLES = 261; + public static readonly KW_TABLESAMPLE = 262; + public static readonly KW_TEXT = 263; + public static readonly KW_TEXT_STRING = 264; + public static readonly KW_THEN = 265; + public static readonly KW_TIES = 266; + public static readonly KW_TIME = 267; + public static readonly KW_TIMESTAMP = 268; + public static readonly KW_TO = 269; + public static readonly KW_TRAILING = 270; + public static readonly KW_TRANSACTION = 271; + public static readonly KW_TRIM = 272; + public static readonly KW_TRUE = 273; + public static readonly KW_TRUNCATE = 274; + public static readonly KW_TRY_CAST = 275; + public static readonly KW_TYPE = 276; + public static readonly KW_UESCAPE = 277; + public static readonly KW_UNBOUNDED = 278; + public static readonly KW_UNCOMMITTED = 279; + public static readonly KW_UNCONDITIONAL = 280; + public static readonly KW_UNION = 281; + public static readonly KW_UNIQUE = 282; + public static readonly KW_UNKNOWN = 283; + public static readonly KW_UNMATCHED = 284; + public static readonly KW_UNNEST = 285; + public static readonly KW_UNTIL = 286; + public static readonly KW_UPDATE = 287; + public static readonly KW_USE = 288; + public static readonly KW_USER = 289; + public static readonly KW_USING = 290; + public static readonly KW_UTF16 = 291; + public static readonly KW_UTF32 = 292; + public static readonly KW_UTF8 = 293; + public static readonly KW_VALIDATE = 294; + public static readonly KW_VALUE = 295; + public static readonly KW_VALUES = 296; + public static readonly KW_VERBOSE = 297; + public static readonly KW_VERSION = 298; + public static readonly KW_VIEW = 299; + public static readonly KW_WHEN = 300; + public static readonly KW_WHERE = 301; + public static readonly KW_WHILE = 302; + public static readonly KW_WINDOW = 303; + public static readonly KW_WITH = 304; + public static readonly KW_WITHIN = 305; + public static readonly KW_WITHOUT = 306; + public static readonly KW_WORK = 307; + public static readonly KW_WRAPPER = 308; + public static readonly KW_WRITE = 309; + public static readonly KW_YEAR = 310; + public static readonly KW_ZONE = 311; + public static readonly EQ = 312; + public static readonly NEQ = 313; + public static readonly LT = 314; + public static readonly LTE = 315; + public static readonly GT = 316; + public static readonly GTE = 317; + public static readonly PLUS = 318; + public static readonly MINUS = 319; + public static readonly ASTERISK = 320; + public static readonly SLASH = 321; + public static readonly PERCENT = 322; + public static readonly CONCAT = 323; + public static readonly QUESTION_MARK = 324; + public static readonly SEMICOLON = 325; + public static readonly STRING = 326; + public static readonly UNICODE_STRING = 327; + public static readonly BINARY_LITERAL = 328; + public static readonly INTEGER_VALUE = 329; + public static readonly DECIMAL_VALUE = 330; + public static readonly DOUBLE_VALUE = 331; + public static readonly IDENTIFIER = 332; + public static readonly DIGIT_IDENTIFIER = 333; + public static readonly QUOTED_IDENTIFIER = 334; + public static readonly BACKQUOTED_IDENTIFIER = 335; + public static readonly SIMPLE_COMMENT = 336; + public static readonly BRACKETED_COMMENT = 337; + public static readonly WS = 338; + public static readonly UNRECOGNIZED = 339; + public static readonly DELIMITER = 340; public static readonly RULE_program = 0; public static readonly RULE_statements = 1; - public static readonly RULE_standaloneClause = 2; - public static readonly RULE_singleStatement = 3; - public static readonly RULE_standaloneExpression = 4; - public static readonly RULE_standalonePathSpecification = 5; - public static readonly RULE_standaloneType = 6; - public static readonly RULE_standaloneRowPattern = 7; + public static readonly RULE_singleStatement = 2; + public static readonly RULE_standaloneExpression = 3; + public static readonly RULE_standalonePathSpecification = 4; + public static readonly RULE_standaloneType = 5; + public static readonly RULE_standaloneRowPattern = 6; + public static readonly RULE_standaloneFunctionSpecification = 7; public static readonly RULE_statement = 8; - public static readonly RULE_query = 9; - public static readonly RULE_with = 10; - public static readonly RULE_tableElement = 11; - public static readonly RULE_columnDefinition = 12; - public static readonly RULE_likeClause = 13; - public static readonly RULE_properties = 14; - public static readonly RULE_propertyAssignments = 15; - public static readonly RULE_property = 16; - public static readonly RULE_propertyValue = 17; - public static readonly RULE_queryNoWith = 18; - public static readonly RULE_limitRowCount = 19; - public static readonly RULE_rowCount = 20; - public static readonly RULE_queryTerm = 21; - public static readonly RULE_queryPrimary = 22; - public static readonly RULE_sortItem = 23; - public static readonly RULE_querySpecification = 24; - public static readonly RULE_groupBy = 25; - public static readonly RULE_groupingElement = 26; - public static readonly RULE_groupingSet = 27; - public static readonly RULE_groupingTerm = 28; - public static readonly RULE_windowDefinition = 29; - public static readonly RULE_windowSpecification = 30; - public static readonly RULE_namedQuery = 31; - public static readonly RULE_setQuantifier = 32; - public static readonly RULE_selectItem = 33; - public static readonly RULE_relation = 34; - public static readonly RULE_joinType = 35; - public static readonly RULE_joinCriteria = 36; - public static readonly RULE_sampledRelation = 37; - public static readonly RULE_sampleType = 38; - public static readonly RULE_patternRecognition = 39; - public static readonly RULE_measureDefinition = 40; - public static readonly RULE_rowsPerMatch = 41; - public static readonly RULE_emptyMatchHandling = 42; - public static readonly RULE_skipTo = 43; - public static readonly RULE_subsetDefinition = 44; - public static readonly RULE_variableDefinition = 45; - public static readonly RULE_aliasedRelation = 46; - public static readonly RULE_columnListCreate = 47; - public static readonly RULE_columnList = 48; - public static readonly RULE_columnAliases = 49; - public static readonly RULE_relationPrimary = 50; - public static readonly RULE_expression = 51; - public static readonly RULE_booleanExpression = 52; - public static readonly RULE_predicate = 53; - public static readonly RULE_valueExpression = 54; - public static readonly RULE_primaryExpression = 55; - public static readonly RULE_processingMode = 56; - public static readonly RULE_nullTreatment = 57; - public static readonly RULE_string = 58; - public static readonly RULE_timeZoneSpecifier = 59; - public static readonly RULE_comparisonOperator = 60; - public static readonly RULE_comparisonQuantifier = 61; - public static readonly RULE_booleanValue = 62; - public static readonly RULE_interval = 63; - public static readonly RULE_intervalField = 64; - public static readonly RULE_normalForm = 65; - public static readonly RULE_type = 66; - public static readonly RULE_rowField = 67; - public static readonly RULE_typeParameter = 68; - public static readonly RULE_whenClause = 69; - public static readonly RULE_filter = 70; - public static readonly RULE_mergeCase = 71; - public static readonly RULE_over = 72; - public static readonly RULE_windowFrame = 73; - public static readonly RULE_frameExtent = 74; - public static readonly RULE_frameBound = 75; - public static readonly RULE_rowPattern = 76; - public static readonly RULE_patternPrimary = 77; - public static readonly RULE_patternQuantifier = 78; - public static readonly RULE_updateAssignment = 79; - public static readonly RULE_explainOption = 80; - public static readonly RULE_transactionMode = 81; - public static readonly RULE_levelOfIsolation = 82; - public static readonly RULE_callArgument = 83; - public static readonly RULE_pathElement = 84; - public static readonly RULE_pathSpecification = 85; - public static readonly RULE_privilege = 86; - public static readonly RULE_tableOrViewName = 87; - public static readonly RULE_tableName = 88; - public static readonly RULE_tableNameCreate = 89; - public static readonly RULE_viewName = 90; - public static readonly RULE_viewNameCreate = 91; - public static readonly RULE_tablePath = 92; - public static readonly RULE_viewPath = 93; - public static readonly RULE_schemaName = 94; - public static readonly RULE_schemaNameCreate = 95; - public static readonly RULE_schemaPath = 96; - public static readonly RULE_catalogName = 97; - public static readonly RULE_catalogNameCreate = 98; - public static readonly RULE_functionName = 99; - public static readonly RULE_columnName = 100; - public static readonly RULE_columnNameCreate = 101; - public static readonly RULE_qualifiedName = 102; - public static readonly RULE_grantor = 103; - public static readonly RULE_principal = 104; - public static readonly RULE_roles = 105; - public static readonly RULE_identifier = 106; - public static readonly RULE_number = 107; - public static readonly RULE_nonReserved = 108; + public static readonly RULE_rootQuery = 9; + public static readonly RULE_withFunction = 10; + public static readonly RULE_query = 11; + public static readonly RULE_with = 12; + public static readonly RULE_tableElement = 13; + public static readonly RULE_columnDefinition = 14; + public static readonly RULE_likeClause = 15; + public static readonly RULE_properties = 16; + public static readonly RULE_propertyAssignments = 17; + public static readonly RULE_property = 18; + public static readonly RULE_propertyValue = 19; + public static readonly RULE_queryNoWith = 20; + public static readonly RULE_limitRowCount = 21; + public static readonly RULE_rowCount = 22; + public static readonly RULE_queryTerm = 23; + public static readonly RULE_queryPrimary = 24; + public static readonly RULE_sortItem = 25; + public static readonly RULE_querySpecification = 26; + public static readonly RULE_groupBy = 27; + public static readonly RULE_groupingElement = 28; + public static readonly RULE_groupingSet = 29; + public static readonly RULE_groupingTerm = 30; + public static readonly RULE_windowDefinition = 31; + public static readonly RULE_windowSpecification = 32; + public static readonly RULE_namedQuery = 33; + public static readonly RULE_setQuantifier = 34; + public static readonly RULE_selectItem = 35; + public static readonly RULE_relation = 36; + public static readonly RULE_joinType = 37; + public static readonly RULE_joinCriteria = 38; + public static readonly RULE_sampledRelation = 39; + public static readonly RULE_sampleType = 40; + public static readonly RULE_trimsSpecification = 41; + public static readonly RULE_listAggOverflowBehavior = 42; + public static readonly RULE_listaggCountIndication = 43; + public static readonly RULE_patternRecognition = 44; + public static readonly RULE_measureDefinition = 45; + public static readonly RULE_rowsPerMatch = 46; + public static readonly RULE_emptyMatchHandling = 47; + public static readonly RULE_skipTo = 48; + public static readonly RULE_subsetDefinition = 49; + public static readonly RULE_variableDefinition = 50; + public static readonly RULE_aliasedRelation = 51; + public static readonly RULE_columnListCreate = 52; + public static readonly RULE_columnList = 53; + public static readonly RULE_columnAliases = 54; + public static readonly RULE_relationPrimary = 55; + public static readonly RULE_jsonTableColumn = 56; + public static readonly RULE_jsonTableSpecificPlan = 57; + public static readonly RULE_jsonTablePathName = 58; + public static readonly RULE_planPrimary = 59; + public static readonly RULE_jsonTableDefaultPlan = 60; + public static readonly RULE_tableFunctionCall = 61; + public static readonly RULE_tableFunctionArgument = 62; + public static readonly RULE_tableArgument = 63; + public static readonly RULE_tableArgumentRelation = 64; + public static readonly RULE_descriptorArgument = 65; + public static readonly RULE_descriptorField = 66; + public static readonly RULE_copartitionTables = 67; + public static readonly RULE_expression = 68; + public static readonly RULE_booleanExpression = 69; + public static readonly RULE_predicate = 70; + public static readonly RULE_valueExpression = 71; + public static readonly RULE_primaryExpression = 72; + public static readonly RULE_jsonPathInvocation = 73; + public static readonly RULE_jsonValueExpression = 74; + public static readonly RULE_jsonRepresentation = 75; + public static readonly RULE_jsonArgument = 76; + public static readonly RULE_jsonExistsErrorBehavior = 77; + public static readonly RULE_jsonValueBehavior = 78; + public static readonly RULE_jsonQueryWrapperBehavior = 79; + public static readonly RULE_jsonQueryBehavior = 80; + public static readonly RULE_jsonObjectMember = 81; + public static readonly RULE_processingMode = 82; + public static readonly RULE_nullTreatment = 83; + public static readonly RULE_string = 84; + public static readonly RULE_timeZoneSpecifier = 85; + public static readonly RULE_comparisonOperator = 86; + public static readonly RULE_comparisonQuantifier = 87; + public static readonly RULE_booleanValue = 88; + public static readonly RULE_interval = 89; + public static readonly RULE_intervalField = 90; + public static readonly RULE_normalForm = 91; + public static readonly RULE_type = 92; + public static readonly RULE_rowField = 93; + public static readonly RULE_typeParameter = 94; + public static readonly RULE_whenClause = 95; + public static readonly RULE_filter = 96; + public static readonly RULE_mergeCase = 97; + public static readonly RULE_over = 98; + public static readonly RULE_windowFrame = 99; + public static readonly RULE_frameExtent = 100; + public static readonly RULE_frameBound = 101; + public static readonly RULE_rowPattern = 102; + public static readonly RULE_patternPrimary = 103; + public static readonly RULE_patternQuantifier = 104; + public static readonly RULE_updateAssignment = 105; + public static readonly RULE_explainOption = 106; + public static readonly RULE_transactionMode = 107; + public static readonly RULE_levelOfIsolation = 108; + public static readonly RULE_callArgument = 109; + public static readonly RULE_pathElement = 110; + public static readonly RULE_pathSpecification = 111; + public static readonly RULE_functionSpecification = 112; + public static readonly RULE_functionDeclaration = 113; + public static readonly RULE_functionSignature = 114; + public static readonly RULE_parameterDeclaration = 115; + public static readonly RULE_returnsClause = 116; + public static readonly RULE_routineCharacteristic = 117; + public static readonly RULE_controlStatement = 118; + public static readonly RULE_caseStatementWhenClause = 119; + public static readonly RULE_elseIfClause = 120; + public static readonly RULE_elseClause = 121; + public static readonly RULE_variableDeclaration = 122; + public static readonly RULE_sqlStatementList = 123; + public static readonly RULE_privilege = 124; + public static readonly RULE_entityKind = 125; + public static readonly RULE_grantObject = 126; + public static readonly RULE_tableOrViewName = 127; + public static readonly RULE_tableRef = 128; + public static readonly RULE_tableNameCreate = 129; + public static readonly RULE_viewRef = 130; + public static readonly RULE_viewNameCreate = 131; + public static readonly RULE_schemaRef = 132; + public static readonly RULE_schemaNameCreate = 133; + public static readonly RULE_catalogRef = 134; + public static readonly RULE_catalogNameCreate = 135; + public static readonly RULE_functionName = 136; + public static readonly RULE_functionNameCreate = 137; + public static readonly RULE_columnRef = 138; + public static readonly RULE_columnNameCreate = 139; + public static readonly RULE_qualifiedName = 140; + public static readonly RULE_queryPeriod = 141; + public static readonly RULE_rangeType = 142; + public static readonly RULE_grantor = 143; + public static readonly RULE_principal = 144; + public static readonly RULE_roles = 145; + public static readonly RULE_privilegeOrRole = 146; + public static readonly RULE_identifier = 147; + public static readonly RULE_number = 148; + public static readonly RULE_authorizationUser = 149; + public static readonly RULE_nonReserved = 150; public static readonly literalNames = [ - null, "'('", "')'", "','", "'.'", "'SKIP'", "'->'", "'['", "']'", - "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", "'=>'", "'ADD'", - "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", - "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", - "'BERNOULLI'", "'BETWEEN'", "'BY'", "'CALL'", "'CASCADE'", "'CASE'", - "'CAST'", "'CATALOGS'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", - "'COMMITTED'", "'CONSTRAINT'", "'CREATE'", "'CROSS'", "'CUBE'", - "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_PATH'", - "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", - "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", "'DEFAULT'", "'DEALLOCATE'", - "'DEFINER'", "'DELETE'", "'DESC'", "'DESCRIBE'", "'DEFINE'", "'DISTINCT'", - "'DISTRIBUTED'", "'DOUBLE'", "'DROP'", "'ELSE'", "'EMPTY'", "'END'", - "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", - "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", - "'FIRST'", "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", - "'FUNCTIONS'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'DENY'", "'GRAPHVIZ'", + null, "'('", "')'", "','", "'.'", "'SKIP'", "'=>'", "'->'", "'['", + "']'", "':'", "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", + "'ABSENT'", "'ADD'", "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", + "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", + "'BEGIN'", "'BERNOULLI'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", + "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOG'", "'CATALOGS'", + "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", + "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", "'CREATE'", + "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", + "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", + "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", + "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", "'DEFINER'", + "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", "'DETERMINISTIC'", + "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", "'ELSE'", + "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", "'ERROR'", "'ESCAPE'", + "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'", + "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", "'FIRST'", + "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", "'HOUR'", "'IF'", - "'IGNORE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", "'INPUT'", - "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", - "'IO'", "'IS'", "'ISOLATION'", "'JOIN'", "'JSON'", "'LAST'", "'LATERAL'", - "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LOCAL'", "'LOCALTIME'", - "'LOCALTIMESTAMP'", "'LOGICAL'", "'MAP'", "'MATCH'", "'MATCHED'", - "'MATCHES'", "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", - "'MERGE'", "'MINUTE'", "'MONTH'", "'NATURAL'", "'NEXT'", "'NFC'", + "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", + "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", + "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", "'JOIN'", "'JSON'", + "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", "'JSON_QUERY'", + "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", "'KEYS'", "'LANGUAGE'", + "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LEVEL'", + "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", + "'LOGICAL'", "'LOOP'", "'MAP'", "'MATCH'", "'MATCHED'", "'MATCHES'", + "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", "'MERGE'", + "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", "'NEXT'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", - "'NULL'", "'NULLIF'", "'NULLS'", "'OFFSET'", "'OMIT'", "'ON'", "'ONE'", - "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'", - "'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'", "'PAST'", "'PATH'", - "'PATTERN'", "'PER'", "'PERMUTE'", "'POSITION'", "'PRECEDING'", - "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'RANGE'", - "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", "'REPEATABLE'", - "'REPLACE'", "'RESET'", "'RESPECT'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", - "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", - "'RUNNING'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECURITY'", - "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", "'SET'", "'SETS'", - "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", "'SUBSTRING'", - "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", - "'TIES'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRANSACTION'", "'TRUNCATE'", - "'TRUE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", - "'UNION'", "'UNMATCHED'", "'UNNEST'", "'UPDATE'", "'USE'", "'USER'", - "'USING'", "'VALIDATE'", "'VALUES'", "'VERBOSE'", "'VIEW'", "'WHEN'", - "'WHERE'", "'WINDOW'", "'WITH'", "'WITHOUT'", "'WORK'", "'WRITE'", - "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", - "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", null, null, null, null, - null, null, null, null, null, null, "';'" + "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", "'OF'", "'OFFSET'", + "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", + "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", "'OVERFLOW'", "'PARTITION'", + "'PARTITIONS'", "'PASSING'", "'PAST'", "'PATH'", "'PATTERN'", "'PER'", + "'PERIOD'", "'PERMUTE'", "'PLAN'", "'POSITION'", "'PRECEDING'", + "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'PRUNE'", + "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", + "'REPEAT'", "'REPEATABLE'", "'REPLACE'", "'RESET'", "'RESPECT'", + "'RESTRICT'", "'RETURN'", "'RETURNING'", "'RETURNS'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", + "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", + "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", + "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", + "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TEXT'", "'STRING'", "'THEN'", "'TIES'", "'TIME'", "'TIMESTAMP'", + "'TO'", "'TRAILING'", "'TRANSACTION'", "'TRIM'", "'TRUE'", "'TRUNCATE'", + "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", + "'UNCONDITIONAL'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", "'UNMATCHED'", + "'UNNEST'", "'UNTIL'", "'UPDATE'", "'USE'", "'USER'", "'USING'", + "'UTF16'", "'UTF32'", "'UTF8'", "'VALIDATE'", "'VALUE'", "'VALUES'", + "'VERBOSE'", "'VERSION'", "'VIEW'", "'WHEN'", "'WHERE'", "'WHILE'", + "'WINDOW'", "'WITH'", "'WITHIN'", "'WITHOUT'", "'WORK'", "'WRAPPER'", + "'WRITE'", "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", + "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", "';'" ]; public static readonly symbolicNames = [ null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, "KW_ADD", "KW_ADMIN", "KW_AFTER", - "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", - "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BERNOULLI", - "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", "KW_CASE", "KW_CAST", - "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", - "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", "KW_CROSS", "KW_CUBE", - "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", - "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", - "KW_CURRENT_USER", "KW_DATA", "KW_DATE", "KW_DAY", "KW_DEFAULT", - "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", "KW_DESC", "KW_DESCRIBE", - "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DOUBLE", "KW_DROP", - "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + null, null, null, null, null, null, null, "KW_ABSENT", "KW_ADD", + "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", + "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", + "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", + "KW_CALLED", "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", + "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", + "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", + "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", + "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", + "KW_DATE", "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", + "KW_DEFINE", "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", + "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", - "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", "KW_GRANT", - "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", - "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", "KW_IF", "KW_IGNORE", - "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", "KW_INPUT", "KW_INSERT", - "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", "KW_INVOKER", "KW_IO", - "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", "KW_LAST", "KW_LATERAL", - "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LOCAL", "KW_LOCALTIME", - "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", "KW_MATCH", "KW_MATCHED", - "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", "KW_MEASURES", - "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", "KW_NEXT", "KW_NFC", - "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", - "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", "KW_OMIT", + "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", + "KW_GRACE", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_GRAPHVIZ", + "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", + "KW_IF", "KW_IGNORE", "KW_IMMEDIATE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", + "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_ITERATE", + "KW_JOIN", "KW_JSON", "KW_JSON_ARRAY", "KW_JSON_EXISTS", "KW_JSON_OBJECT", + "KW_JSON_QUERY", "KW_JSON_TABLE", "KW_JSON_VALUE", "KW_KEEP", "KW_KEY", + "KW_KEYS", "KW_LANGUAGE", "KW_LAST", "KW_LATERAL", "KW_LEADING", + "KW_LEAVE", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LISTAGG", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_LOOP", + "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NESTED", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", + "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", + "KW_NULLIF", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFFSET", "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", - "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", - "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", - "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", - "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", - "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", - "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", - "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", - "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", - "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", - "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", - "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", - "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", - "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", - "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", - "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", - "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", - "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", - "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", - "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", - "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", - "SEMICOLON", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", - "DELIMITER" + "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_OVERFLOW", + "KW_PARTITION", "KW_PARTITIONS", "KW_PASSING", "KW_PAST", "KW_PATH", + "KW_PATTERN", "KW_PER", "KW_PERIOD", "KW_PERMUTE", "KW_PLAN", "KW_POSITION", + "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", + "KW_PRUNE", "KW_QUOTES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", + "KW_REFRESH", "KW_RENAME", "KW_REPEAT", "KW_REPEATABLE", "KW_REPLACE", + "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_RETURN", "KW_RETURNING", + "KW_RETURNS", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCALAR", "KW_SCHEMA", + "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", + "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", + "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", + "KW_TEXT_STRING", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", + "KW_TO", "KW_TRAILING", "KW_TRANSACTION", "KW_TRIM", "KW_TRUE", + "KW_TRUNCATE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNCONDITIONAL", "KW_UNION", "KW_UNIQUE", "KW_UNKNOWN", + "KW_UNMATCHED", "KW_UNNEST", "KW_UNTIL", "KW_UPDATE", "KW_USE", + "KW_USER", "KW_USING", "KW_UTF16", "KW_UTF32", "KW_UTF8", "KW_VALIDATE", + "KW_VALUE", "KW_VALUES", "KW_VERBOSE", "KW_VERSION", "KW_VIEW", + "KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WINDOW", "KW_WITH", "KW_WITHIN", + "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_WRITE", "KW_YEAR", "KW_ZONE", + "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "SEMICOLON", "STRING", + "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", + "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED", "DELIMITER" ]; public static readonly ruleNames = [ - "program", "statements", "standaloneClause", "singleStatement", - "standaloneExpression", "standalonePathSpecification", "standaloneType", - "standaloneRowPattern", "statement", "query", "with", "tableElement", - "columnDefinition", "likeClause", "properties", "propertyAssignments", - "property", "propertyValue", "queryNoWith", "limitRowCount", "rowCount", - "queryTerm", "queryPrimary", "sortItem", "querySpecification", "groupBy", - "groupingElement", "groupingSet", "groupingTerm", "windowDefinition", - "windowSpecification", "namedQuery", "setQuantifier", "selectItem", - "relation", "joinType", "joinCriteria", "sampledRelation", "sampleType", - "patternRecognition", "measureDefinition", "rowsPerMatch", "emptyMatchHandling", - "skipTo", "subsetDefinition", "variableDefinition", "aliasedRelation", - "columnListCreate", "columnList", "columnAliases", "relationPrimary", - "expression", "booleanExpression", "predicate", "valueExpression", - "primaryExpression", "processingMode", "nullTreatment", "string", - "timeZoneSpecifier", "comparisonOperator", "comparisonQuantifier", - "booleanValue", "interval", "intervalField", "normalForm", "type", - "rowField", "typeParameter", "whenClause", "filter", "mergeCase", - "over", "windowFrame", "frameExtent", "frameBound", "rowPattern", - "patternPrimary", "patternQuantifier", "updateAssignment", "explainOption", - "transactionMode", "levelOfIsolation", "callArgument", "pathElement", - "pathSpecification", "privilege", "tableOrViewName", "tableName", - "tableNameCreate", "viewName", "viewNameCreate", "tablePath", "viewPath", - "schemaName", "schemaNameCreate", "schemaPath", "catalogName", "catalogNameCreate", - "functionName", "columnName", "columnNameCreate", "qualifiedName", - "grantor", "principal", "roles", "identifier", "number", "nonReserved", + "program", "statements", "singleStatement", "standaloneExpression", + "standalonePathSpecification", "standaloneType", "standaloneRowPattern", + "standaloneFunctionSpecification", "statement", "rootQuery", "withFunction", + "query", "with", "tableElement", "columnDefinition", "likeClause", + "properties", "propertyAssignments", "property", "propertyValue", + "queryNoWith", "limitRowCount", "rowCount", "queryTerm", "queryPrimary", + "sortItem", "querySpecification", "groupBy", "groupingElement", + "groupingSet", "groupingTerm", "windowDefinition", "windowSpecification", + "namedQuery", "setQuantifier", "selectItem", "relation", "joinType", + "joinCriteria", "sampledRelation", "sampleType", "trimsSpecification", + "listAggOverflowBehavior", "listaggCountIndication", "patternRecognition", + "measureDefinition", "rowsPerMatch", "emptyMatchHandling", "skipTo", + "subsetDefinition", "variableDefinition", "aliasedRelation", "columnListCreate", + "columnList", "columnAliases", "relationPrimary", "jsonTableColumn", + "jsonTableSpecificPlan", "jsonTablePathName", "planPrimary", "jsonTableDefaultPlan", + "tableFunctionCall", "tableFunctionArgument", "tableArgument", "tableArgumentRelation", + "descriptorArgument", "descriptorField", "copartitionTables", "expression", + "booleanExpression", "predicate", "valueExpression", "primaryExpression", + "jsonPathInvocation", "jsonValueExpression", "jsonRepresentation", + "jsonArgument", "jsonExistsErrorBehavior", "jsonValueBehavior", + "jsonQueryWrapperBehavior", "jsonQueryBehavior", "jsonObjectMember", + "processingMode", "nullTreatment", "string", "timeZoneSpecifier", + "comparisonOperator", "comparisonQuantifier", "booleanValue", "interval", + "intervalField", "normalForm", "type", "rowField", "typeParameter", + "whenClause", "filter", "mergeCase", "over", "windowFrame", "frameExtent", + "frameBound", "rowPattern", "patternPrimary", "patternQuantifier", + "updateAssignment", "explainOption", "transactionMode", "levelOfIsolation", + "callArgument", "pathElement", "pathSpecification", "functionSpecification", + "functionDeclaration", "functionSignature", "parameterDeclaration", + "returnsClause", "routineCharacteristic", "controlStatement", "caseStatementWhenClause", + "elseIfClause", "elseClause", "variableDeclaration", "sqlStatementList", + "privilege", "entityKind", "grantObject", "tableOrViewName", "tableRef", + "tableNameCreate", "viewRef", "viewNameCreate", "schemaRef", "schemaNameCreate", + "catalogRef", "catalogNameCreate", "functionName", "functionNameCreate", + "columnRef", "columnNameCreate", "qualifiedName", "queryPeriod", + "rangeType", "grantor", "principal", "roles", "privilegeOrRole", + "identifier", "number", "authorizationUser", "nonReserved", ]; public get grammarFileName(): string { return "TrinoSql.g4"; } @@ -554,21 +693,21 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 221; + this.state = 305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 6291458) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3892316545) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 37749377) !== 0) || _la === 108 || _la === 135 || ((((_la - 173)) & ~0x1F) === 0 && ((1 << (_la - 173)) & 1208099905) !== 0) || ((((_la - 205)) & ~0x1F) === 0 && ((1 << (_la - 205)) & 402784389) !== 0) || _la === 237 || _la === 243) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 25165826) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 2147550721) !== 0) || ((((_la - 73)) & ~0x1F) === 0 && ((1 << (_la - 73)) & 5243919) !== 0) || _la === 110 || _la === 127 || _la === 169 || ((((_la - 214)) & ~0x1F) === 0 && ((1 << (_la - 214)) & 8921345) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 67113129) !== 0) || ((((_la - 287)) & ~0x1F) === 0 && ((1 << (_la - 287)) & 131587) !== 0)) { { { - this.state = 218; + this.state = 302; this.statements(); } } - this.state = 223; + this.state = 307; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 224; + this.state = 308; this.match(TrinoSqlParser.EOF); } } @@ -592,7 +731,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 226; + this.state = 310; this.singleStatement(); } } @@ -610,72 +749,21 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public standaloneClause(): StandaloneClauseContext { - let localContext = new StandaloneClauseContext(this.context, this.state); - this.enterRule(localContext, 4, TrinoSqlParser.RULE_standaloneClause); - try { - this.state = 232; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 228; - this.standaloneExpression(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 229; - this.standalonePathSpecification(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 230; - this.standaloneType(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 231; - this.standaloneRowPattern(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public singleStatement(): SingleStatementContext { let localContext = new SingleStatementContext(this.context, this.state); - this.enterRule(localContext, 6, TrinoSqlParser.RULE_singleStatement); + this.enterRule(localContext, 4, TrinoSqlParser.RULE_singleStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 234; + this.state = 312; this.statement(); - this.state = 236; + this.state = 314; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 235; + this.state = 313; this.match(TrinoSqlParser.SEMICOLON); } } @@ -698,19 +786,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standaloneExpression(): StandaloneExpressionContext { let localContext = new StandaloneExpressionContext(this.context, this.state); - this.enterRule(localContext, 8, TrinoSqlParser.RULE_standaloneExpression); + this.enterRule(localContext, 6, TrinoSqlParser.RULE_standaloneExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 238; + this.state = 316; this.expression(); - this.state = 240; + this.state = 318; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 239; + this.state = 317; this.match(TrinoSqlParser.SEMICOLON); } } @@ -733,19 +821,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standalonePathSpecification(): StandalonePathSpecificationContext { let localContext = new StandalonePathSpecificationContext(this.context, this.state); - this.enterRule(localContext, 10, TrinoSqlParser.RULE_standalonePathSpecification); + this.enterRule(localContext, 8, TrinoSqlParser.RULE_standalonePathSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 242; + this.state = 320; this.pathSpecification(); - this.state = 244; + this.state = 322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 243; + this.state = 321; this.match(TrinoSqlParser.SEMICOLON); } } @@ -768,19 +856,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standaloneType(): StandaloneTypeContext { let localContext = new StandaloneTypeContext(this.context, this.state); - this.enterRule(localContext, 12, TrinoSqlParser.RULE_standaloneType); + this.enterRule(localContext, 10, TrinoSqlParser.RULE_standaloneType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 246; + this.state = 324; this.type_(0); - this.state = 248; + this.state = 326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 247; + this.state = 325; this.match(TrinoSqlParser.SEMICOLON); } } @@ -803,19 +891,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standaloneRowPattern(): StandaloneRowPatternContext { let localContext = new StandaloneRowPatternContext(this.context, this.state); - this.enterRule(localContext, 14, TrinoSqlParser.RULE_standaloneRowPattern); + this.enterRule(localContext, 12, TrinoSqlParser.RULE_standaloneRowPattern); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 250; + this.state = 328; this.rowPattern(0); - this.state = 252; + this.state = 330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 251; + this.state = 329; this.match(TrinoSqlParser.SEMICOLON); } } @@ -836,76 +924,118 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } + public standaloneFunctionSpecification(): StandaloneFunctionSpecificationContext { + let localContext = new StandaloneFunctionSpecificationContext(this.context, this.state); + this.enterRule(localContext, 14, TrinoSqlParser.RULE_standaloneFunctionSpecification); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 332; + this.functionSpecification(); + this.state = 333; + this.match(TrinoSqlParser.EOF); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public statement(): StatementContext { let localContext = new StatementContext(this.context, this.state); this.enterRule(localContext, 16, TrinoSqlParser.RULE_statement); let _la: number; try { - this.state = 1036; + this.state = 1233; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 125, this.context) ) { case 1: localContext = new StatementDefaultContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 254; - this.query(); + this.state = 335; + this.rootQuery(); } break; case 2: localContext = new UseContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 255; + this.state = 336; this.match(TrinoSqlParser.KW_USE); - this.state = 256; - this.schemaName(); + this.state = 337; + this.schemaRef(); } break; case 3: - localContext = new CreateSchemaContext(localContext); + localContext = new CreateCatalogContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 257; + this.state = 338; this.match(TrinoSqlParser.KW_CREATE); - this.state = 258; - this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 262; + this.state = 339; + this.match(TrinoSqlParser.KW_CATALOG); + this.state = 343; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context) ) { case 1: { - this.state = 259; + this.state = 340; this.match(TrinoSqlParser.KW_IF); - this.state = 260; + this.state = 341; this.match(TrinoSqlParser.KW_NOT); - this.state = 261; + this.state = 342; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 264; - this.schemaNameCreate(); - this.state = 267; + this.state = 345; + (localContext as CreateCatalogContext)._catalog = this.catalogNameCreate(); + this.state = 346; + this.match(TrinoSqlParser.KW_USING); + this.state = 347; + (localContext as CreateCatalogContext)._connectorName = this.identifier(); + this.state = 350; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + case 1: + { + this.state = 348; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 349; + this.string_(); + } + break; + } + this.state = 354; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 29) { + if (_la === 31) { { - this.state = 265; + this.state = 352; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 266; + this.state = 353; this.principal(); } } - this.state = 271; + this.state = 358; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: { - this.state = 269; + this.state = 356; this.match(TrinoSqlParser.KW_WITH); - this.state = 270; + this.state = 357; this.properties(); } break; @@ -913,35 +1043,35 @@ export class TrinoSqlParser extends SQLParserBase { } break; case 4: - localContext = new DropSchemaContext(localContext); + localContext = new DropCatalogContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 273; + this.state = 360; this.match(TrinoSqlParser.KW_DROP); - this.state = 274; - this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 277; + this.state = 361; + this.match(TrinoSqlParser.KW_CATALOG); + this.state = 364; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 10, this.context) ) { case 1: { - this.state = 275; + this.state = 362; this.match(TrinoSqlParser.KW_IF); - this.state = 276; + this.state = 363; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 279; - this.schemaName(); - this.state = 281; + this.state = 366; + (localContext as DropCatalogContext)._catalog = this.catalogRef(); + this.state = 368; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 34 || _la === 185) { + if (_la === 39 || _la === 229) { { - this.state = 280; + this.state = 367; _la = this.tokenStream.LA(1); - if(!(_la === 34 || _la === 185)) { + if(!(_la === 39 || _la === 229)) { this.errorHandler.recoverInline(this); } else { @@ -954,358 +1084,478 @@ export class TrinoSqlParser extends SQLParserBase { } break; case 5: - localContext = new RenameSchemaContext(localContext); + localContext = new CreateSchemaContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 283; + this.state = 370; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 371; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 375; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { + case 1: + { + this.state = 372; + this.match(TrinoSqlParser.KW_IF); + this.state = 373; + this.match(TrinoSqlParser.KW_NOT); + this.state = 374; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 377; + this.schemaNameCreate(); + this.state = 380; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 31) { + { + this.state = 378; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 379; + this.principal(); + } + } + + this.state = 384; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 14, this.context) ) { + case 1: + { + this.state = 382; + this.match(TrinoSqlParser.KW_WITH); + this.state = 383; + this.properties(); + } + break; + } + } + break; + case 6: + localContext = new DropSchemaContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 386; + this.match(TrinoSqlParser.KW_DROP); + this.state = 387; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 390; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 15, this.context) ) { + case 1: + { + this.state = 388; + this.match(TrinoSqlParser.KW_IF); + this.state = 389; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 392; + this.schemaRef(); + this.state = 394; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 39 || _la === 229) { + { + this.state = 393; + _la = this.tokenStream.LA(1); + if(!(_la === 39 || _la === 229)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + } + break; + case 7: + localContext = new RenameSchemaContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 396; this.match(TrinoSqlParser.KW_ALTER); - this.state = 284; + this.state = 397; this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 285; - this.schemaName(); - this.state = 286; + this.state = 398; + this.schemaRef(); + this.state = 399; this.match(TrinoSqlParser.KW_RENAME); - this.state = 287; + this.state = 400; this.match(TrinoSqlParser.KW_TO); - this.state = 288; + this.state = 401; this.schemaNameCreate(); } break; - case 6: + case 8: localContext = new SetSchemaAuthorizationContext(localContext); - this.enterOuterAlt(localContext, 6); + this.enterOuterAlt(localContext, 8); { - this.state = 290; + this.state = 403; this.match(TrinoSqlParser.KW_ALTER); - this.state = 291; + this.state = 404; this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 292; - this.schemaName(); - this.state = 293; + this.state = 405; + this.schemaRef(); + this.state = 406; this.match(TrinoSqlParser.KW_SET); - this.state = 294; + this.state = 407; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 295; + this.state = 408; this.principal(); } break; - case 7: + case 9: localContext = new CreateTableAsSelectContext(localContext); - this.enterOuterAlt(localContext, 7); + this.enterOuterAlt(localContext, 9); { - this.state = 297; + this.state = 410; this.match(TrinoSqlParser.KW_CREATE); - this.state = 298; + this.state = 413; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 194) { + { + this.state = 411; + this.match(TrinoSqlParser.KW_OR); + this.state = 412; + this.match(TrinoSqlParser.KW_REPLACE); + } + } + + this.state = 415; this.match(TrinoSqlParser.KW_TABLE); - this.state = 302; + this.state = 419; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { case 1: { - this.state = 299; + this.state = 416; this.match(TrinoSqlParser.KW_IF); - this.state = 300; + this.state = 417; this.match(TrinoSqlParser.KW_NOT); - this.state = 301; + this.state = 418; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 304; + this.state = 421; this.tableNameCreate(); - this.state = 306; + this.state = 423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 1) { { - this.state = 305; + this.state = 422; this.columnListCreate(); } } - this.state = 310; + this.state = 427; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 40) { + if (_la === 46) { { - this.state = 308; + this.state = 425; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 309; + this.state = 426; this.string_(); } } - this.state = 314; + this.state = 431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 243) { + if (_la === 304) { { - this.state = 312; + this.state = 429; this.match(TrinoSqlParser.KW_WITH); - this.state = 313; + this.state = 430; this.properties(); } } - this.state = 316; + this.state = 433; this.match(TrinoSqlParser.KW_AS); - this.state = 322; + this.state = 439; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 16, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { case 1: { - this.state = 317; - this.query(); + this.state = 434; + this.rootQuery(); } break; case 2: { - this.state = 318; + this.state = 435; this.match(TrinoSqlParser.T__0); - this.state = 319; - this.query(); - this.state = 320; + this.state = 436; + this.rootQuery(); + this.state = 437; this.match(TrinoSqlParser.T__1); } break; } - this.state = 329; + this.state = 446; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 24, this.context) ) { case 1: { - this.state = 324; + this.state = 441; this.match(TrinoSqlParser.KW_WITH); - this.state = 326; + this.state = 443; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 144) { + if (_la === 179) { { - this.state = 325; + this.state = 442; this.match(TrinoSqlParser.KW_NO); } } - this.state = 328; + this.state = 445; this.match(TrinoSqlParser.KW_DATA); } break; } } break; - case 8: + case 10: localContext = new CreateTableContext(localContext); - this.enterOuterAlt(localContext, 8); + this.enterOuterAlt(localContext, 10); { - this.state = 331; + this.state = 448; this.match(TrinoSqlParser.KW_CREATE); - this.state = 332; + this.state = 451; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 194) { + { + this.state = 449; + this.match(TrinoSqlParser.KW_OR); + this.state = 450; + this.match(TrinoSqlParser.KW_REPLACE); + } + } + + this.state = 453; this.match(TrinoSqlParser.KW_TABLE); - this.state = 336; + this.state = 457; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 19, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { case 1: { - this.state = 333; + this.state = 454; this.match(TrinoSqlParser.KW_IF); - this.state = 334; + this.state = 455; this.match(TrinoSqlParser.KW_NOT); - this.state = 335; + this.state = 456; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 338; + this.state = 459; this.tableNameCreate(); - this.state = 339; + this.state = 460; this.match(TrinoSqlParser.T__0); - this.state = 340; + this.state = 461; this.tableElement(); - this.state = 345; + this.state = 466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 341; + this.state = 462; this.match(TrinoSqlParser.T__2); - this.state = 342; + this.state = 463; this.tableElement(); } } - this.state = 347; + this.state = 468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 348; + this.state = 469; this.match(TrinoSqlParser.T__1); - this.state = 351; + this.state = 472; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 21, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { case 1: { - this.state = 349; + this.state = 470; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 350; + this.state = 471; this.string_(); } break; } - this.state = 355; + this.state = 476; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 29, this.context) ) { case 1: { - this.state = 353; + this.state = 474; this.match(TrinoSqlParser.KW_WITH); - this.state = 354; + this.state = 475; this.properties(); } break; } } break; - case 9: + case 11: localContext = new DropTableContext(localContext); - this.enterOuterAlt(localContext, 9); + this.enterOuterAlt(localContext, 11); { - this.state = 357; + this.state = 478; this.match(TrinoSqlParser.KW_DROP); - this.state = 358; + this.state = 479; this.match(TrinoSqlParser.KW_TABLE); - this.state = 361; + this.state = 482; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 23, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { case 1: { - this.state = 359; + this.state = 480; this.match(TrinoSqlParser.KW_IF); - this.state = 360; + this.state = 481; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 363; - this.tableName(); + this.state = 484; + this.tableRef(); } break; - case 10: + case 12: localContext = new InsertIntoContext(localContext); - this.enterOuterAlt(localContext, 10); + this.enterOuterAlt(localContext, 12); { - this.state = 364; + this.state = 485; this.match(TrinoSqlParser.KW_INSERT); - this.state = 365; + this.state = 486; this.match(TrinoSqlParser.KW_INTO); - this.state = 366; - this.tableName(); - this.state = 368; + this.state = 487; + this.tableRef(); + this.state = 489; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 24, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context) ) { case 1: { - this.state = 367; + this.state = 488; this.columnList(); } break; } - this.state = 370; - this.query(); + this.state = 491; + this.rootQuery(); } break; - case 11: + case 13: localContext = new DeleteContext(localContext); - this.enterOuterAlt(localContext, 11); + this.enterOuterAlt(localContext, 13); { - this.state = 372; + this.state = 493; this.match(TrinoSqlParser.KW_DELETE); - this.state = 373; + this.state = 494; this.match(TrinoSqlParser.KW_FROM); - this.state = 374; - this.tableName(); - this.state = 377; + this.state = 495; + this.tableRef(); + this.state = 498; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 241) { + if (_la === 301) { { - this.state = 375; + this.state = 496; this.match(TrinoSqlParser.KW_WHERE); - this.state = 376; + this.state = 497; this.booleanExpression(0); } } } break; - case 12: + case 14: localContext = new TruncateTableContext(localContext); - this.enterOuterAlt(localContext, 12); + this.enterOuterAlt(localContext, 14); { - this.state = 379; + this.state = 500; this.match(TrinoSqlParser.KW_TRUNCATE); - this.state = 380; + this.state = 501; this.match(TrinoSqlParser.KW_TABLE); - this.state = 381; - this.tableName(); + this.state = 502; + this.tableRef(); } break; - case 13: - localContext = new RenameTableContext(localContext); - this.enterOuterAlt(localContext, 13); + case 15: + localContext = new CommentTableContext(localContext); + this.enterOuterAlt(localContext, 15); { - this.state = 382; - this.match(TrinoSqlParser.KW_ALTER); - this.state = 383; + this.state = 503; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 504; + this.match(TrinoSqlParser.KW_ON); + this.state = 505; this.match(TrinoSqlParser.KW_TABLE); - this.state = 386; + this.state = 506; + this.tableRef(); + this.state = 507; + this.match(TrinoSqlParser.KW_IS); + this.state = 510; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: { - this.state = 384; - this.match(TrinoSqlParser.KW_IF); - this.state = 385; - this.match(TrinoSqlParser.KW_EXISTS); + this.state = 508; + this.string_(); + } + break; + case TrinoSqlParser.KW_NULL: + { + this.state = 509; + this.match(TrinoSqlParser.KW_NULL); } break; + default: + throw new antlr.NoViableAltException(this); } - this.state = 388; - (localContext as RenameTableContext)._from_ = this.tableName(); - this.state = 389; - this.match(TrinoSqlParser.KW_RENAME); - this.state = 390; - this.match(TrinoSqlParser.KW_TO); - this.state = 391; - (localContext as RenameTableContext)._to = this.tableNameCreate(); } break; - case 14: - localContext = new CommentTableContext(localContext); - this.enterOuterAlt(localContext, 14); + case 16: + localContext = new CommentViewContext(localContext); + this.enterOuterAlt(localContext, 16); { - this.state = 393; + this.state = 512; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 394; + this.state = 513; this.match(TrinoSqlParser.KW_ON); - this.state = 395; - this.match(TrinoSqlParser.KW_TABLE); - this.state = 396; - this.tableName(); - this.state = 397; + this.state = 514; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 515; + this.viewRef(); + this.state = 516; this.match(TrinoSqlParser.KW_IS); - this.state = 400; + this.state = 519; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.STRING: case TrinoSqlParser.UNICODE_STRING: { - this.state = 398; + this.state = 517; this.string_(); } break; case TrinoSqlParser.KW_NULL: { - this.state = 399; + this.state = 518; this.match(TrinoSqlParser.KW_NULL); } break; @@ -1314,33 +1564,33 @@ export class TrinoSqlParser extends SQLParserBase { } } break; - case 15: + case 17: localContext = new CommentColumnContext(localContext); - this.enterOuterAlt(localContext, 15); + this.enterOuterAlt(localContext, 17); { - this.state = 402; + this.state = 521; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 403; + this.state = 522; this.match(TrinoSqlParser.KW_ON); - this.state = 404; + this.state = 523; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 405; - this.columnName(); - this.state = 406; + this.state = 524; + this.columnRef(); + this.state = 525; this.match(TrinoSqlParser.KW_IS); - this.state = 409; + this.state = 528; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.STRING: case TrinoSqlParser.UNICODE_STRING: { - this.state = 407; + this.state = 526; this.string_(); } break; case TrinoSqlParser.KW_NULL: { - this.state = 408; + this.state = 527; this.match(TrinoSqlParser.KW_NULL); } break; @@ -1349,374 +1599,492 @@ export class TrinoSqlParser extends SQLParserBase { } } break; - case 16: + case 18: + localContext = new RenameTableContext(localContext); + this.enterOuterAlt(localContext, 18); + { + this.state = 530; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 531; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 534; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 36, this.context) ) { + case 1: + { + this.state = 532; + this.match(TrinoSqlParser.KW_IF); + this.state = 533; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 536; + (localContext as RenameTableContext)._from_ = this.tableRef(); + this.state = 537; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 538; + this.match(TrinoSqlParser.KW_TO); + this.state = 539; + (localContext as RenameTableContext)._to = this.tableNameCreate(); + } + break; + case 19: + localContext = new AddColumnContext(localContext); + this.enterOuterAlt(localContext, 19); + { + this.state = 541; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 542; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 545; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { + case 1: + { + this.state = 543; + this.match(TrinoSqlParser.KW_IF); + this.state = 544; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 547; + (localContext as AddColumnContext)._tableName = this.tableRef(); + this.state = 548; + this.match(TrinoSqlParser.KW_ADD); + this.state = 549; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 553; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 38, this.context) ) { + case 1: + { + this.state = 550; + this.match(TrinoSqlParser.KW_IF); + this.state = 551; + this.match(TrinoSqlParser.KW_NOT); + this.state = 552; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 555; + (localContext as AddColumnContext)._column = this.columnDefinition(); + } + break; + case 20: localContext = new RenameColumnContext(localContext); - this.enterOuterAlt(localContext, 16); + this.enterOuterAlt(localContext, 20); { - this.state = 411; + this.state = 557; this.match(TrinoSqlParser.KW_ALTER); - this.state = 412; + this.state = 558; this.match(TrinoSqlParser.KW_TABLE); - this.state = 415; + this.state = 561; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 29, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { case 1: { - this.state = 413; + this.state = 559; this.match(TrinoSqlParser.KW_IF); - this.state = 414; + this.state = 560; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 417; - this.tableName(); - this.state = 418; + this.state = 563; + (localContext as RenameColumnContext)._tableName = this.tableRef(); + this.state = 564; this.match(TrinoSqlParser.KW_RENAME); - this.state = 419; + this.state = 565; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 422; + this.state = 568; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 40, this.context) ) { case 1: { - this.state = 420; + this.state = 566; this.match(TrinoSqlParser.KW_IF); - this.state = 421; + this.state = 567; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 424; - (localContext as RenameColumnContext)._from_ = this.columnName(); - this.state = 425; + this.state = 570; + (localContext as RenameColumnContext)._from_ = this.columnRef(); + this.state = 571; this.match(TrinoSqlParser.KW_TO); - this.state = 426; + this.state = 572; (localContext as RenameColumnContext)._to = this.columnNameCreate(); } break; - case 17: + case 21: localContext = new DropColumnContext(localContext); - this.enterOuterAlt(localContext, 17); + this.enterOuterAlt(localContext, 21); { - this.state = 428; + this.state = 574; this.match(TrinoSqlParser.KW_ALTER); - this.state = 429; + this.state = 575; this.match(TrinoSqlParser.KW_TABLE); - this.state = 432; + this.state = 578; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context) ) { case 1: { - this.state = 430; + this.state = 576; this.match(TrinoSqlParser.KW_IF); - this.state = 431; + this.state = 577; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 434; - this.tableName(); - this.state = 435; + this.state = 580; + (localContext as DropColumnContext)._tableName = this.tableRef(); + this.state = 581; this.match(TrinoSqlParser.KW_DROP); - this.state = 436; + this.state = 582; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 439; + this.state = 585; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context) ) { case 1: { - this.state = 437; + this.state = 583; this.match(TrinoSqlParser.KW_IF); - this.state = 438; + this.state = 584; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 441; - (localContext as DropColumnContext)._column = this.columnName(); + this.state = 587; + (localContext as DropColumnContext)._column = this.columnRef(); } break; - case 18: - localContext = new AddColumnContext(localContext); - this.enterOuterAlt(localContext, 18); + case 22: + localContext = new SetColumnTypeContext(localContext); + this.enterOuterAlt(localContext, 22); { - this.state = 443; + this.state = 589; this.match(TrinoSqlParser.KW_ALTER); - this.state = 444; + this.state = 590; this.match(TrinoSqlParser.KW_TABLE); - this.state = 447; + this.state = 593; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context) ) { case 1: { - this.state = 445; + this.state = 591; this.match(TrinoSqlParser.KW_IF); - this.state = 446; + this.state = 592; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 449; - this.tableName(); - this.state = 450; - this.match(TrinoSqlParser.KW_ADD); - this.state = 451; + this.state = 595; + (localContext as SetColumnTypeContext)._tableName = this.tableRef(); + this.state = 596; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 597; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 455; + this.state = 598; + (localContext as SetColumnTypeContext)._column = this.columnRef(); + this.state = 599; + this.match(TrinoSqlParser.KW_SET); + this.state = 600; + this.match(TrinoSqlParser.KW_DATA); + this.state = 601; + this.match(TrinoSqlParser.KW_TYPE); + this.state = 602; + this.type_(0); + } + break; + case 23: + localContext = new DropNotNullConstraintContext(localContext); + this.enterOuterAlt(localContext, 23); + { + this.state = 604; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 605; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 608; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { case 1: { - this.state = 452; + this.state = 606; this.match(TrinoSqlParser.KW_IF); - this.state = 453; - this.match(TrinoSqlParser.KW_NOT); - this.state = 454; + this.state = 607; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 457; - (localContext as AddColumnContext)._column = this.columnDefinition(); + this.state = 610; + (localContext as DropNotNullConstraintContext)._tableName = this.tableRef(); + this.state = 611; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 612; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 613; + (localContext as DropNotNullConstraintContext)._column = this.columnRef(); + this.state = 614; + this.match(TrinoSqlParser.KW_DROP); + this.state = 615; + this.match(TrinoSqlParser.KW_NOT); + this.state = 616; + this.match(TrinoSqlParser.KW_NULL); } break; - case 19: + case 24: localContext = new SetTableAuthorizationContext(localContext); - this.enterOuterAlt(localContext, 19); + this.enterOuterAlt(localContext, 24); { - this.state = 459; + this.state = 618; this.match(TrinoSqlParser.KW_ALTER); - this.state = 460; + this.state = 619; this.match(TrinoSqlParser.KW_TABLE); - this.state = 461; - this.tableName(); - this.state = 462; + this.state = 620; + (localContext as SetTableAuthorizationContext)._tableName = this.tableRef(); + this.state = 621; this.match(TrinoSqlParser.KW_SET); - this.state = 463; + this.state = 622; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 464; + this.state = 623; this.principal(); } break; - case 20: + case 25: localContext = new SetTablePropertiesContext(localContext); - this.enterOuterAlt(localContext, 20); + this.enterOuterAlt(localContext, 25); { - this.state = 466; + this.state = 625; this.match(TrinoSqlParser.KW_ALTER); - this.state = 467; + this.state = 626; this.match(TrinoSqlParser.KW_TABLE); - this.state = 468; - this.tableName(); - this.state = 469; + this.state = 627; + (localContext as SetTablePropertiesContext)._tableName = this.tableRef(); + this.state = 628; this.match(TrinoSqlParser.KW_SET); - this.state = 470; + this.state = 629; this.match(TrinoSqlParser.KW_PROPERTIES); - this.state = 471; + this.state = 630; this.propertyAssignments(); } break; - case 21: + case 26: localContext = new TableExecuteContext(localContext); - this.enterOuterAlt(localContext, 21); + this.enterOuterAlt(localContext, 26); { - this.state = 473; + this.state = 632; this.match(TrinoSqlParser.KW_ALTER); - this.state = 474; + this.state = 633; this.match(TrinoSqlParser.KW_TABLE); - this.state = 475; - this.tableName(); - this.state = 476; + this.state = 634; + (localContext as TableExecuteContext)._tableName = this.tableRef(); + this.state = 635; this.match(TrinoSqlParser.KW_EXECUTE); - this.state = 477; - (localContext as TableExecuteContext)._procedureName = this.identifier(); - this.state = 490; + this.state = 636; + (localContext as TableExecuteContext)._procedureName = this.functionName(); + this.state = 649; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { case 1: { - this.state = 478; + this.state = 637; this.match(TrinoSqlParser.T__0); - this.state = 487; + this.state = 646; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217677) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { { - this.state = 479; + this.state = 638; this.callArgument(); - this.state = 484; + this.state = 643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 480; + this.state = 639; this.match(TrinoSqlParser.T__2); - this.state = 481; + this.state = 640; this.callArgument(); } } - this.state = 486; + this.state = 645; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 489; + this.state = 648; this.match(TrinoSqlParser.T__1); } break; } - this.state = 494; + this.state = 653; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 241) { + if (_la === 301) { { - this.state = 492; + this.state = 651; this.match(TrinoSqlParser.KW_WHERE); - this.state = 493; + this.state = 652; (localContext as TableExecuteContext)._where = this.booleanExpression(0); } } } break; - case 22: + case 27: localContext = new AnalyzeContext(localContext); - this.enterOuterAlt(localContext, 22); + this.enterOuterAlt(localContext, 27); { - this.state = 496; + this.state = 655; this.match(TrinoSqlParser.KW_ANALYZE); - this.state = 497; - this.tableName(); - this.state = 500; + this.state = 656; + this.tableRef(); + this.state = 659; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { case 1: { - this.state = 498; + this.state = 657; this.match(TrinoSqlParser.KW_WITH); - this.state = 499; + this.state = 658; this.properties(); } break; } } break; - case 23: + case 28: localContext = new CreateMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 23); + this.enterOuterAlt(localContext, 28); { - this.state = 502; + this.state = 661; this.match(TrinoSqlParser.KW_CREATE); - this.state = 505; + this.state = 664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 157) { + if (_la === 194) { { - this.state = 503; + this.state = 662; this.match(TrinoSqlParser.KW_OR); - this.state = 504; + this.state = 663; this.match(TrinoSqlParser.KW_REPLACE); } } - this.state = 507; + this.state = 666; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 508; + this.state = 667; this.match(TrinoSqlParser.KW_VIEW); - this.state = 512; + this.state = 671; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context) ) { case 1: { - this.state = 509; + this.state = 668; this.match(TrinoSqlParser.KW_IF); - this.state = 510; + this.state = 669; this.match(TrinoSqlParser.KW_NOT); - this.state = 511; + this.state = 670; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 514; + this.state = 673; this.viewNameCreate(); - this.state = 517; + this.state = 677; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 109) { + { + this.state = 674; + this.match(TrinoSqlParser.KW_GRACE); + this.state = 675; + this.match(TrinoSqlParser.KW_PERIOD); + this.state = 676; + this.interval(); + } + } + + this.state = 681; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 40) { + if (_la === 46) { { - this.state = 515; + this.state = 679; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 516; + this.state = 680; this.string_(); } } - this.state = 521; + this.state = 685; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 243) { + if (_la === 304) { { - this.state = 519; + this.state = 683; this.match(TrinoSqlParser.KW_WITH); - this.state = 520; + this.state = 684; this.properties(); } } - this.state = 523; + this.state = 687; this.match(TrinoSqlParser.KW_AS); - this.state = 524; - this.query(); + this.state = 688; + this.rootQuery(); } break; - case 24: + case 29: localContext = new CreateViewContext(localContext); - this.enterOuterAlt(localContext, 24); + this.enterOuterAlt(localContext, 29); { - this.state = 526; + this.state = 690; this.match(TrinoSqlParser.KW_CREATE); - this.state = 529; + this.state = 693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 157) { + if (_la === 194) { { - this.state = 527; + this.state = 691; this.match(TrinoSqlParser.KW_OR); - this.state = 528; + this.state = 692; this.match(TrinoSqlParser.KW_REPLACE); } } - this.state = 531; + this.state = 695; this.match(TrinoSqlParser.KW_VIEW); - this.state = 532; + this.state = 696; this.viewNameCreate(); - this.state = 535; + this.state = 699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 40) { + if (_la === 46) { { - this.state = 533; + this.state = 697; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 534; + this.state = 698; this.string_(); } } - this.state = 539; + this.state = 703; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 198) { + if (_la === 246) { { - this.state = 537; + this.state = 701; this.match(TrinoSqlParser.KW_SECURITY); - this.state = 538; + this.state = 702; _la = this.tokenStream.LA(1); - if(!(_la === 61 || _la === 112)) { + if(!(_la === 72 || _la === 131)) { this.errorHandler.recoverInline(this); } else { @@ -1726,927 +2094,922 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 541; + this.state = 707; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 304) { + { + this.state = 705; + this.match(TrinoSqlParser.KW_WITH); + this.state = 706; + this.properties(); + } + } + + this.state = 709; this.match(TrinoSqlParser.KW_AS); - this.state = 542; - this.query(); + this.state = 710; + this.rootQuery(); } break; - case 25: + case 30: localContext = new RefreshMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 25); + this.enterOuterAlt(localContext, 30); { - this.state = 544; + this.state = 712; this.match(TrinoSqlParser.KW_REFRESH); - this.state = 545; + this.state = 713; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 546; + this.state = 714; this.match(TrinoSqlParser.KW_VIEW); - this.state = 547; - this.viewName(); + this.state = 715; + this.viewRef(); } break; - case 26: + case 31: localContext = new DropMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 26); + this.enterOuterAlt(localContext, 31); { - this.state = 548; + this.state = 716; this.match(TrinoSqlParser.KW_DROP); - this.state = 549; + this.state = 717; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 550; + this.state = 718; this.match(TrinoSqlParser.KW_VIEW); - this.state = 553; + this.state = 721; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context) ) { case 1: { - this.state = 551; + this.state = 719; this.match(TrinoSqlParser.KW_IF); - this.state = 552; + this.state = 720; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 555; - this.viewName(); + this.state = 723; + this.viewRef(); } break; - case 27: + case 32: localContext = new RenameMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 27); + this.enterOuterAlt(localContext, 32); { - this.state = 556; + this.state = 724; this.match(TrinoSqlParser.KW_ALTER); - this.state = 557; + this.state = 725; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 558; + this.state = 726; this.match(TrinoSqlParser.KW_VIEW); - this.state = 561; + this.state = 729; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { case 1: { - this.state = 559; + this.state = 727; this.match(TrinoSqlParser.KW_IF); - this.state = 560; + this.state = 728; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 563; - (localContext as RenameMaterializedViewContext)._from_ = this.viewName(); - this.state = 564; + this.state = 731; + (localContext as RenameMaterializedViewContext)._from_ = this.viewRef(); + this.state = 732; this.match(TrinoSqlParser.KW_RENAME); - this.state = 565; + this.state = 733; this.match(TrinoSqlParser.KW_TO); - this.state = 566; + this.state = 734; (localContext as RenameMaterializedViewContext)._to = this.viewNameCreate(); } break; - case 28: + case 33: localContext = new SetMaterializedViewPropertiesContext(localContext); - this.enterOuterAlt(localContext, 28); + this.enterOuterAlt(localContext, 33); { - this.state = 568; + this.state = 736; this.match(TrinoSqlParser.KW_ALTER); - this.state = 569; + this.state = 737; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 570; + this.state = 738; this.match(TrinoSqlParser.KW_VIEW); - this.state = 571; - this.viewName(); - this.state = 572; + this.state = 739; + this.viewRef(); + this.state = 740; this.match(TrinoSqlParser.KW_SET); - this.state = 573; + this.state = 741; this.match(TrinoSqlParser.KW_PROPERTIES); - this.state = 574; + this.state = 742; this.propertyAssignments(); } break; - case 29: + case 34: localContext = new DropViewContext(localContext); - this.enterOuterAlt(localContext, 29); + this.enterOuterAlt(localContext, 34); { - this.state = 576; + this.state = 744; this.match(TrinoSqlParser.KW_DROP); - this.state = 577; + this.state = 745; this.match(TrinoSqlParser.KW_VIEW); - this.state = 580; + this.state = 748; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 61, this.context) ) { case 1: { - this.state = 578; + this.state = 746; this.match(TrinoSqlParser.KW_IF); - this.state = 579; + this.state = 747; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 582; - this.viewName(); + this.state = 750; + this.viewRef(); } break; - case 30: + case 35: localContext = new RenameViewContext(localContext); - this.enterOuterAlt(localContext, 30); + this.enterOuterAlt(localContext, 35); { - this.state = 583; + this.state = 751; this.match(TrinoSqlParser.KW_ALTER); - this.state = 584; + this.state = 752; this.match(TrinoSqlParser.KW_VIEW); - this.state = 585; - (localContext as RenameViewContext)._from_ = this.viewName(); - this.state = 586; + this.state = 753; + (localContext as RenameViewContext)._from_ = this.viewRef(); + this.state = 754; this.match(TrinoSqlParser.KW_RENAME); - this.state = 587; + this.state = 755; this.match(TrinoSqlParser.KW_TO); - this.state = 588; + this.state = 756; (localContext as RenameViewContext)._to = this.viewNameCreate(); } break; - case 31: + case 36: localContext = new SetViewAuthorizationContext(localContext); - this.enterOuterAlt(localContext, 31); + this.enterOuterAlt(localContext, 36); { - this.state = 590; + this.state = 758; this.match(TrinoSqlParser.KW_ALTER); - this.state = 591; + this.state = 759; this.match(TrinoSqlParser.KW_VIEW); - this.state = 592; - (localContext as SetViewAuthorizationContext)._from_ = this.viewName(); - this.state = 593; + this.state = 760; + (localContext as SetViewAuthorizationContext)._from_ = this.viewRef(); + this.state = 761; this.match(TrinoSqlParser.KW_SET); - this.state = 594; + this.state = 762; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 595; + this.state = 763; this.principal(); } break; - case 32: + case 37: localContext = new CallContext(localContext); - this.enterOuterAlt(localContext, 32); + this.enterOuterAlt(localContext, 37); { - this.state = 597; + this.state = 765; this.match(TrinoSqlParser.KW_CALL); - this.state = 598; + this.state = 766; this.functionName(); - this.state = 599; + this.state = 767; this.match(TrinoSqlParser.T__0); - this.state = 608; + this.state = 776; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217677) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { { - this.state = 600; + this.state = 768; this.callArgument(); - this.state = 605; + this.state = 773; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 601; + this.state = 769; this.match(TrinoSqlParser.T__2); - this.state = 602; + this.state = 770; this.callArgument(); } } - this.state = 607; + this.state = 775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 610; + this.state = 778; this.match(TrinoSqlParser.T__1); } break; - case 33: + case 38: + localContext = new CreateFunctionContext(localContext); + this.enterOuterAlt(localContext, 38); + { + this.state = 780; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 783; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 194) { + { + this.state = 781; + this.match(TrinoSqlParser.KW_OR); + this.state = 782; + this.match(TrinoSqlParser.KW_REPLACE); + } + } + + this.state = 785; + this.functionSpecification(); + } + break; + case 39: + localContext = new DropFunctionContext(localContext); + this.enterOuterAlt(localContext, 39); + { + this.state = 786; + this.match(TrinoSqlParser.KW_DROP); + this.state = 787; + this.match(TrinoSqlParser.KW_FUNCTION); + this.state = 790; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { + case 1: + { + this.state = 788; + this.match(TrinoSqlParser.KW_IF); + this.state = 789; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 792; + this.functionSignature(); + } + break; + case 40: localContext = new CreateRoleContext(localContext); - this.enterOuterAlt(localContext, 33); + this.enterOuterAlt(localContext, 40); { - this.state = 612; + this.state = 793; this.match(TrinoSqlParser.KW_CREATE); - this.state = 613; + this.state = 794; this.match(TrinoSqlParser.KW_ROLE); - this.state = 614; + this.state = 795; (localContext as CreateRoleContext)._name = this.identifier(); - this.state = 618; + this.state = 799; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { case 1: { - this.state = 615; + this.state = 796; this.match(TrinoSqlParser.KW_WITH); - this.state = 616; + this.state = 797; this.match(TrinoSqlParser.KW_ADMIN); - this.state = 617; + this.state = 798; this.grantor(); } break; } - this.state = 622; + this.state = 803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 122) { { - this.state = 620; + this.state = 801; this.match(TrinoSqlParser.KW_IN); - this.state = 621; - this.catalogName(); + this.state = 802; + (localContext as CreateRoleContext)._catalog = this.catalogRef(); } } } break; - case 34: + case 41: localContext = new DropRoleContext(localContext); - this.enterOuterAlt(localContext, 34); + this.enterOuterAlt(localContext, 41); { - this.state = 624; + this.state = 805; this.match(TrinoSqlParser.KW_DROP); - this.state = 625; + this.state = 806; this.match(TrinoSqlParser.KW_ROLE); - this.state = 626; + this.state = 807; (localContext as DropRoleContext)._name = this.identifier(); + this.state = 810; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 122) { + { + this.state = 808; + this.match(TrinoSqlParser.KW_IN); + this.state = 809; + (localContext as DropRoleContext)._catalog = this.catalogRef(); + } + } + } break; - case 35: + case 42: localContext = new GrantRolesContext(localContext); - this.enterOuterAlt(localContext, 35); + this.enterOuterAlt(localContext, 42); { - this.state = 627; + this.state = 812; this.match(TrinoSqlParser.KW_GRANT); - this.state = 628; - this.roles(); - this.state = 629; + this.state = 813; + this.privilegeOrRole(); + this.state = 818; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 814; + this.match(TrinoSqlParser.T__2); + this.state = 815; + this.privilegeOrRole(); + } + } + this.state = 820; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 821; this.match(TrinoSqlParser.KW_TO); - this.state = 630; + this.state = 822; this.principal(); - this.state = 635; + this.state = 827; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 631; + this.state = 823; this.match(TrinoSqlParser.T__2); - this.state = 632; + this.state = 824; this.principal(); } } - this.state = 637; + this.state = 829; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 641; + this.state = 833; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 55, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { case 1: { - this.state = 638; + this.state = 830; this.match(TrinoSqlParser.KW_WITH); - this.state = 639; + this.state = 831; this.match(TrinoSqlParser.KW_ADMIN); - this.state = 640; + this.state = 832; this.match(TrinoSqlParser.KW_OPTION); } break; } - this.state = 646; + this.state = 838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 92) { + if (_la === 111) { { - this.state = 643; + this.state = 835; this.match(TrinoSqlParser.KW_GRANTED); - this.state = 644; + this.state = 836; this.match(TrinoSqlParser.KW_BY); - this.state = 645; + this.state = 837; this.grantor(); } } - this.state = 650; + this.state = 842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 122) { { - this.state = 648; + this.state = 840; this.match(TrinoSqlParser.KW_IN); - this.state = 649; - this.catalogName(); + this.state = 841; + (localContext as GrantRolesContext)._catalog = this.catalogRef(); } } } break; - case 36: - localContext = new RevokeRolesContext(localContext); - this.enterOuterAlt(localContext, 36); + case 43: + localContext = new GrantPrivilegesContext(localContext); + this.enterOuterAlt(localContext, 43); { - this.state = 652; - this.match(TrinoSqlParser.KW_REVOKE); - this.state = 656; + this.state = 844; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 855; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context) ) { case 1: { - this.state = 653; - this.match(TrinoSqlParser.KW_ADMIN); - this.state = 654; - this.match(TrinoSqlParser.KW_OPTION); - this.state = 655; - this.match(TrinoSqlParser.KW_FOR); + { + this.state = 845; + this.privilegeOrRole(); + this.state = 850; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 846; + this.match(TrinoSqlParser.T__2); + this.state = 847; + this.privilegeOrRole(); + } + } + this.state = 852; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + break; + case 2: + { + this.state = 853; + this.match(TrinoSqlParser.KW_ALL); + this.state = 854; + this.match(TrinoSqlParser.KW_PRIVILEGES); } break; } - this.state = 658; - this.roles(); - this.state = 659; - this.match(TrinoSqlParser.KW_FROM); - this.state = 660; + this.state = 857; + this.match(TrinoSqlParser.KW_ON); + this.state = 858; + this.grantObject(); + this.state = 859; + this.match(TrinoSqlParser.KW_TO); + this.state = 860; this.principal(); - this.state = 665; + this.state = 864; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 76, this.context) ) { + case 1: + { + this.state = 861; + this.match(TrinoSqlParser.KW_WITH); + this.state = 862; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 863; + this.match(TrinoSqlParser.KW_OPTION); + } + break; + } + } + break; + case 44: + localContext = new RevokeRolesContext(localContext); + this.enterOuterAlt(localContext, 44); + { + this.state = 866; + this.match(TrinoSqlParser.KW_REVOKE); + this.state = 870; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context) ) { + case 1: + { + this.state = 867; + this.match(TrinoSqlParser.KW_ADMIN); + this.state = 868; + this.match(TrinoSqlParser.KW_OPTION); + this.state = 869; + this.match(TrinoSqlParser.KW_FOR); + } + break; + } + this.state = 872; + this.privilegeOrRole(); + this.state = 877; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 661; + this.state = 873; this.match(TrinoSqlParser.T__2); - this.state = 662; + this.state = 874; + this.privilegeOrRole(); + } + } + this.state = 879; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 880; + this.match(TrinoSqlParser.KW_FROM); + this.state = 881; + this.principal(); + this.state = 886; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 882; + this.match(TrinoSqlParser.T__2); + this.state = 883; this.principal(); } } - this.state = 667; + this.state = 888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 671; + this.state = 892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 92) { + if (_la === 111) { { - this.state = 668; + this.state = 889; this.match(TrinoSqlParser.KW_GRANTED); - this.state = 669; + this.state = 890; this.match(TrinoSqlParser.KW_BY); - this.state = 670; + this.state = 891; this.grantor(); } } - this.state = 675; + this.state = 896; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 122) { { - this.state = 673; + this.state = 894; this.match(TrinoSqlParser.KW_IN); - this.state = 674; - this.catalogName(); + this.state = 895; + (localContext as RevokeRolesContext)._catalog = this.catalogRef(); } } } break; - case 37: - localContext = new SetRoleContext(localContext); - this.enterOuterAlt(localContext, 37); + case 45: + localContext = new RevokePrivilegesContext(localContext); + this.enterOuterAlt(localContext, 45); { - this.state = 677; - this.match(TrinoSqlParser.KW_SET); - this.state = 678; - this.match(TrinoSqlParser.KW_ROLE); - this.state = 682; + this.state = 898; + this.match(TrinoSqlParser.KW_REVOKE); + this.state = 902; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 82, this.context) ) { case 1: { - this.state = 679; - this.match(TrinoSqlParser.KW_ALL); - } - break; - case 2: - { - this.state = 680; - this.match(TrinoSqlParser.KW_NONE); - } - break; - case 3: - { - this.state = 681; - (localContext as SetRoleContext)._role = this.identifier(); + this.state = 899; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 900; + this.match(TrinoSqlParser.KW_OPTION); + this.state = 901; + this.match(TrinoSqlParser.KW_FOR); } break; } - this.state = 686; + this.state = 914; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 84, this.context) ) { + case 1: { - this.state = 684; - this.match(TrinoSqlParser.KW_IN); - this.state = 685; - this.catalogName(); - } - } - - } - break; - case 38: - localContext = new GrantContext(localContext); - this.enterOuterAlt(localContext, 38); - { - this.state = 688; - this.match(TrinoSqlParser.KW_GRANT); - this.state = 699; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_DELETE: - case TrinoSqlParser.KW_INSERT: - case TrinoSqlParser.KW_SELECT: - case TrinoSqlParser.KW_UPDATE: { - this.state = 689; - this.privilege(); - this.state = 694; + this.state = 904; + this.privilegeOrRole(); + this.state = 909; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 690; + this.state = 905; this.match(TrinoSqlParser.T__2); - this.state = 691; - this.privilege(); + this.state = 906; + this.privilegeOrRole(); } } - this.state = 696; + this.state = 911; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } + } break; - case TrinoSqlParser.KW_ALL: + case 2: { - this.state = 697; + this.state = 912; this.match(TrinoSqlParser.KW_ALL); - this.state = 698; + this.state = 913; this.match(TrinoSqlParser.KW_PRIVILEGES); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 701; + this.state = 916; this.match(TrinoSqlParser.KW_ON); - this.state = 710; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { - case 1: - { - this.state = 703; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { - case 1: - { - this.state = 702; - this.match(TrinoSqlParser.KW_SCHEMA); - } - break; - } - this.state = 705; - this.schemaName(); - } - break; - case 2: - { - this.state = 707; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 706; - this.match(TrinoSqlParser.KW_TABLE); - } - } - - this.state = 709; - this.tableName(); - } - break; - } - this.state = 712; - this.match(TrinoSqlParser.KW_TO); - this.state = 713; - (localContext as GrantContext)._grantee = this.principal(); - this.state = 717; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context) ) { - case 1: - { - this.state = 714; - this.match(TrinoSqlParser.KW_WITH); - this.state = 715; - this.match(TrinoSqlParser.KW_GRANT); - this.state = 716; - this.match(TrinoSqlParser.KW_OPTION); - } - break; - } + this.state = 917; + this.grantObject(); + this.state = 918; + this.match(TrinoSqlParser.KW_FROM); + this.state = 919; + (localContext as RevokePrivilegesContext)._grantee = this.principal(); } break; - case 39: + case 46: localContext = new DenyContext(localContext); - this.enterOuterAlt(localContext, 39); + this.enterOuterAlt(localContext, 46); { - this.state = 719; + this.state = 921; this.match(TrinoSqlParser.KW_DENY); - this.state = 730; + this.state = 932; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_DELETE: - case TrinoSqlParser.KW_INSERT: - case TrinoSqlParser.KW_SELECT: - case TrinoSqlParser.KW_UPDATE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 86, this.context) ) { + case 1: { - this.state = 720; + this.state = 922; this.privilege(); - this.state = 725; + this.state = 927; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 721; + this.state = 923; this.match(TrinoSqlParser.T__2); - this.state = 722; + this.state = 924; this.privilege(); } } - this.state = 727; + this.state = 929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; - case TrinoSqlParser.KW_ALL: + case 2: { - this.state = 728; + this.state = 930; this.match(TrinoSqlParser.KW_ALL); - this.state = 729; + this.state = 931; this.match(TrinoSqlParser.KW_PRIVILEGES); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 732; + this.state = 934; this.match(TrinoSqlParser.KW_ON); - this.state = 741; + this.state = 935; + this.grantObject(); + this.state = 936; + this.match(TrinoSqlParser.KW_TO); + this.state = 937; + (localContext as DenyContext)._grantee = this.principal(); + } + break; + case 47: + localContext = new SetRoleContext(localContext); + this.enterOuterAlt(localContext, 47); + { + this.state = 939; + this.match(TrinoSqlParser.KW_SET); + this.state = 940; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 944; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context) ) { case 1: { - this.state = 734; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { - case 1: - { - this.state = 733; - this.match(TrinoSqlParser.KW_SCHEMA); - } - break; - } - this.state = 736; - this.schemaName(); + this.state = 941; + this.match(TrinoSqlParser.KW_ALL); } break; case 2: { - this.state = 738; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 737; - this.match(TrinoSqlParser.KW_TABLE); - } + this.state = 942; + this.match(TrinoSqlParser.KW_NONE); } - - this.state = 740; - this.tableName(); + break; + case 3: + { + this.state = 943; + (localContext as SetRoleContext)._role = this.identifier(); } break; } - this.state = 743; - this.match(TrinoSqlParser.KW_TO); - this.state = 744; - (localContext as DenyContext)._grantee = this.principal(); + this.state = 948; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 122) { + { + this.state = 946; + this.match(TrinoSqlParser.KW_IN); + this.state = 947; + (localContext as SetRoleContext)._catalog = this.catalogRef(); + } + } + } break; - case 40: - localContext = new RevokeContext(localContext); - this.enterOuterAlt(localContext, 40); + case 48: + localContext = new ShowGrantsContext(localContext); + this.enterOuterAlt(localContext, 48); { - this.state = 746; - this.match(TrinoSqlParser.KW_REVOKE); - this.state = 750; + this.state = 950; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 951; + this.match(TrinoSqlParser.KW_GRANTS); + this.state = 954; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 91) { + if (_la === 190) { { - this.state = 747; - this.match(TrinoSqlParser.KW_GRANT); - this.state = 748; - this.match(TrinoSqlParser.KW_OPTION); - this.state = 749; - this.match(TrinoSqlParser.KW_FOR); + this.state = 952; + this.match(TrinoSqlParser.KW_ON); + this.state = 953; + this.grantObject(); } } - this.state = 762; + } + break; + case 49: + localContext = new ExplainContext(localContext); + this.enterOuterAlt(localContext, 49); + { + this.state = 956; + this.match(TrinoSqlParser.KW_EXPLAIN); + this.state = 968; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_DELETE: - case TrinoSqlParser.KW_INSERT: - case TrinoSqlParser.KW_SELECT: - case TrinoSqlParser.KW_UPDATE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) { + case 1: { - this.state = 752; - this.privilege(); - this.state = 757; + this.state = 957; + this.match(TrinoSqlParser.T__0); + this.state = 958; + this.explainOption(); + this.state = 963; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 753; + this.state = 959; this.match(TrinoSqlParser.T__2); - this.state = 754; - this.privilege(); + this.state = 960; + this.explainOption(); } } - this.state = 759; + this.state = 965; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 966; + this.match(TrinoSqlParser.T__1); } break; - case TrinoSqlParser.KW_ALL: - { - this.state = 760; - this.match(TrinoSqlParser.KW_ALL); - this.state = 761; - this.match(TrinoSqlParser.KW_PRIVILEGES); - } - break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 764; - this.match(TrinoSqlParser.KW_ON); - this.state = 773; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) { - case 1: - { - this.state = 766; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 78, this.context) ) { - case 1: - { - this.state = 765; - this.match(TrinoSqlParser.KW_SCHEMA); - } - break; - } - this.state = 768; - this.schemaName(); - } - break; - case 2: - { - this.state = 770; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 769; - this.match(TrinoSqlParser.KW_TABLE); - } - } - - this.state = 772; - this.tableName(); - } - break; - } - this.state = 775; - this.match(TrinoSqlParser.KW_FROM); - this.state = 776; - (localContext as RevokeContext)._grantee = this.principal(); - } - break; - case 41: - localContext = new ShowGrantsContext(localContext); - this.enterOuterAlt(localContext, 41); - { - this.state = 777; - this.match(TrinoSqlParser.KW_SHOW); - this.state = 778; - this.match(TrinoSqlParser.KW_GRANTS); - this.state = 784; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 153) { - { - this.state = 779; - this.match(TrinoSqlParser.KW_ON); - this.state = 781; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 780; - this.match(TrinoSqlParser.KW_TABLE); - } - } - - this.state = 783; - this.tableName(); - } - } - + this.state = 970; + this.statement(); } break; - case 42: - localContext = new ExplainContext(localContext); - this.enterOuterAlt(localContext, 42); + case 50: + localContext = new ExplainAnalyzeContext(localContext); + this.enterOuterAlt(localContext, 50); { - this.state = 786; + this.state = 971; this.match(TrinoSqlParser.KW_EXPLAIN); - this.state = 788; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 83, this.context) ) { - case 1: - { - this.state = 787; - this.match(TrinoSqlParser.KW_ANALYZE); - } - break; - } - this.state = 791; + this.state = 972; + this.match(TrinoSqlParser.KW_ANALYZE); + this.state = 974; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 238) { + if (_la === 297) { { - this.state = 790; + this.state = 973; this.match(TrinoSqlParser.KW_VERBOSE); } } - this.state = 804; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 86, this.context) ) { - case 1: - { - this.state = 793; - this.match(TrinoSqlParser.T__0); - this.state = 794; - this.explainOption(); - this.state = 799; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 795; - this.match(TrinoSqlParser.T__2); - this.state = 796; - this.explainOption(); - } - } - this.state = 801; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 802; - this.match(TrinoSqlParser.T__1); - } - break; - } - this.state = 806; + this.state = 976; this.statement(); } break; - case 43: + case 51: localContext = new ShowCreateTableContext(localContext); - this.enterOuterAlt(localContext, 43); + this.enterOuterAlt(localContext, 51); { - this.state = 807; + this.state = 977; this.match(TrinoSqlParser.KW_SHOW); - this.state = 808; + this.state = 978; this.match(TrinoSqlParser.KW_CREATE); - this.state = 809; + this.state = 979; this.match(TrinoSqlParser.KW_TABLE); - this.state = 810; - this.tableName(); + this.state = 980; + this.tableRef(); } break; - case 44: + case 52: localContext = new ShowCreateSchemaContext(localContext); - this.enterOuterAlt(localContext, 44); + this.enterOuterAlt(localContext, 52); { - this.state = 811; + this.state = 981; this.match(TrinoSqlParser.KW_SHOW); - this.state = 812; + this.state = 982; this.match(TrinoSqlParser.KW_CREATE); - this.state = 813; + this.state = 983; this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 814; - this.schemaName(); + this.state = 984; + this.schemaRef(); } break; - case 45: + case 53: localContext = new ShowCreateViewContext(localContext); - this.enterOuterAlt(localContext, 45); + this.enterOuterAlt(localContext, 53); { - this.state = 815; + this.state = 985; this.match(TrinoSqlParser.KW_SHOW); - this.state = 816; + this.state = 986; this.match(TrinoSqlParser.KW_CREATE); - this.state = 817; + this.state = 987; this.match(TrinoSqlParser.KW_VIEW); - this.state = 818; - this.viewName(); + this.state = 988; + this.viewRef(); } break; - case 46: + case 54: localContext = new ShowCreateMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 46); + this.enterOuterAlt(localContext, 54); { - this.state = 819; + this.state = 989; this.match(TrinoSqlParser.KW_SHOW); - this.state = 820; + this.state = 990; this.match(TrinoSqlParser.KW_CREATE); - this.state = 821; + this.state = 991; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 822; + this.state = 992; this.match(TrinoSqlParser.KW_VIEW); - this.state = 823; - this.viewName(); + this.state = 993; + this.viewRef(); } break; - case 47: + case 55: + localContext = new ShowCreateFunctionContext(localContext); + this.enterOuterAlt(localContext, 55); + { + this.state = 994; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 995; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 996; + this.match(TrinoSqlParser.KW_FUNCTION); + this.state = 997; + this.functionName(); + } + break; + case 56: localContext = new ShowTablesContext(localContext); - this.enterOuterAlt(localContext, 47); + this.enterOuterAlt(localContext, 56); { - this.state = 824; + this.state = 998; this.match(TrinoSqlParser.KW_SHOW); - this.state = 825; + this.state = 999; this.match(TrinoSqlParser.KW_TABLES); - this.state = 828; + this.state = 1002; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 826; + this.state = 1000; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 827; - this.schemaName(); + this.state = 1001; + this.schemaRef(); } } - this.state = 836; + this.state = 1010; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 830; + this.state = 1004; this.match(TrinoSqlParser.KW_LIKE); - this.state = 831; + this.state = 1005; (localContext as ShowTablesContext)._pattern = this.string_(); - this.state = 834; + this.state = 1008; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 832; + this.state = 1006; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 833; + this.state = 1007; (localContext as ShowTablesContext)._escape = this.string_(); } } @@ -2656,50 +3019,50 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 48: + case 57: localContext = new ShowSchemasContext(localContext); - this.enterOuterAlt(localContext, 48); + this.enterOuterAlt(localContext, 57); { - this.state = 838; + this.state = 1012; this.match(TrinoSqlParser.KW_SHOW); - this.state = 839; + this.state = 1013; this.match(TrinoSqlParser.KW_SCHEMAS); - this.state = 842; + this.state = 1016; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 840; + this.state = 1014; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 841; - this.catalogName(); + this.state = 1015; + this.catalogRef(); } } - this.state = 850; + this.state = 1024; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 844; + this.state = 1018; this.match(TrinoSqlParser.KW_LIKE); - this.state = 845; + this.state = 1019; (localContext as ShowSchemasContext)._pattern = this.string_(); - this.state = 848; + this.state = 1022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 846; + this.state = 1020; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 847; + this.state = 1021; (localContext as ShowSchemasContext)._escape = this.string_(); } } @@ -2709,31 +3072,31 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 49: + case 58: localContext = new ShowCatalogsContext(localContext); - this.enterOuterAlt(localContext, 49); + this.enterOuterAlt(localContext, 58); { - this.state = 852; + this.state = 1026; this.match(TrinoSqlParser.KW_SHOW); - this.state = 853; + this.state = 1027; this.match(TrinoSqlParser.KW_CATALOGS); - this.state = 860; + this.state = 1034; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 854; + this.state = 1028; this.match(TrinoSqlParser.KW_LIKE); - this.state = 855; + this.state = 1029; (localContext as ShowCatalogsContext)._pattern = this.string_(); - this.state = 858; + this.state = 1032; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 856; + this.state = 1030; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 857; + this.state = 1031; (localContext as ShowCatalogsContext)._escape = this.string_(); } } @@ -2743,50 +3106,42 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 50: + case 59: localContext = new ShowColumnsContext(localContext); - this.enterOuterAlt(localContext, 50); + this.enterOuterAlt(localContext, 59); { - this.state = 862; + this.state = 1036; this.match(TrinoSqlParser.KW_SHOW); - this.state = 863; + this.state = 1037; this.match(TrinoSqlParser.KW_COLUMNS); - this.state = 864; + this.state = 1038; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 866; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 95, this.context) ) { - case 1: - { - this.state = 865; - this.tableOrViewName(); - } - break; - } - this.state = 874; + this.state = 1039; + this.tableOrViewName(); + this.state = 1046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 868; + this.state = 1040; this.match(TrinoSqlParser.KW_LIKE); - this.state = 869; + this.state = 1041; (localContext as ShowColumnsContext)._pattern = this.string_(); - this.state = 872; + this.state = 1044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 870; + this.state = 1042; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 871; + this.state = 1043; (localContext as ShowColumnsContext)._escape = this.string_(); } } @@ -2796,153 +3151,172 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 51: + case 60: localContext = new ShowStatsContext(localContext); - this.enterOuterAlt(localContext, 51); + this.enterOuterAlt(localContext, 60); { - this.state = 876; + this.state = 1048; this.match(TrinoSqlParser.KW_SHOW); - this.state = 877; + this.state = 1049; this.match(TrinoSqlParser.KW_STATS); - this.state = 878; + this.state = 1050; this.match(TrinoSqlParser.KW_FOR); - this.state = 879; - this.tableName(); + this.state = 1051; + this.tableOrViewName(); } break; - case 52: + case 61: localContext = new ShowStatsForQueryContext(localContext); - this.enterOuterAlt(localContext, 52); + this.enterOuterAlt(localContext, 61); { - this.state = 880; + this.state = 1052; this.match(TrinoSqlParser.KW_SHOW); - this.state = 881; + this.state = 1053; this.match(TrinoSqlParser.KW_STATS); - this.state = 882; + this.state = 1054; this.match(TrinoSqlParser.KW_FOR); - this.state = 883; + this.state = 1055; this.match(TrinoSqlParser.T__0); - this.state = 884; - this.query(); - this.state = 885; + this.state = 1056; + this.rootQuery(); + this.state = 1057; this.match(TrinoSqlParser.T__1); } break; - case 53: + case 62: localContext = new ShowRolesContext(localContext); - this.enterOuterAlt(localContext, 53); + this.enterOuterAlt(localContext, 62); { - this.state = 887; + this.state = 1059; this.match(TrinoSqlParser.KW_SHOW); - this.state = 889; + this.state = 1061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 47) { + if (_la === 56) { { - this.state = 888; + this.state = 1060; this.match(TrinoSqlParser.KW_CURRENT); } } - this.state = 891; + this.state = 1063; this.match(TrinoSqlParser.KW_ROLES); - this.state = 894; + this.state = 1066; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 892; + this.state = 1064; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 893; - this.identifier(); + this.state = 1065; + this.catalogRef(); } } } break; - case 54: + case 63: localContext = new ShowRoleGrantsContext(localContext); - this.enterOuterAlt(localContext, 54); + this.enterOuterAlt(localContext, 63); { - this.state = 896; + this.state = 1068; this.match(TrinoSqlParser.KW_SHOW); - this.state = 897; + this.state = 1069; this.match(TrinoSqlParser.KW_ROLE); - this.state = 898; + this.state = 1070; this.match(TrinoSqlParser.KW_GRANTS); - this.state = 901; + this.state = 1073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 899; + this.state = 1071; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 900; - this.identifier(); + this.state = 1072; + this.catalogRef(); } } } break; - case 55: + case 64: localContext = new ShowColumnsContext(localContext); - this.enterOuterAlt(localContext, 55); + this.enterOuterAlt(localContext, 64); { - this.state = 903; + this.state = 1075; this.match(TrinoSqlParser.KW_DESCRIBE); - this.state = 904; + this.state = 1076; this.tableOrViewName(); } break; - case 56: + case 65: localContext = new ShowColumnsContext(localContext); - this.enterOuterAlt(localContext, 56); + this.enterOuterAlt(localContext, 65); { - this.state = 905; + this.state = 1077; this.match(TrinoSqlParser.KW_DESC); - this.state = 906; + this.state = 1078; this.tableOrViewName(); } break; - case 57: + case 66: localContext = new ShowFunctionsContext(localContext); - this.enterOuterAlt(localContext, 57); + this.enterOuterAlt(localContext, 66); { - this.state = 907; + this.state = 1079; this.match(TrinoSqlParser.KW_SHOW); - this.state = 908; + this.state = 1080; this.match(TrinoSqlParser.KW_FUNCTIONS); - this.state = 915; + this.state = 1083; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 105 || _la === 122) { { - this.state = 909; + this.state = 1081; + _la = this.tokenStream.LA(1); + if(!(_la === 105 || _la === 122)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1082; + this.schemaRef(); + } + } + + this.state = 1091; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 154) { + { + this.state = 1085; this.match(TrinoSqlParser.KW_LIKE); - this.state = 910; + this.state = 1086; (localContext as ShowFunctionsContext)._pattern = this.string_(); - this.state = 913; + this.state = 1089; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 911; + this.state = 1087; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 912; + this.state = 1088; (localContext as ShowFunctionsContext)._escape = this.string_(); } } @@ -2952,31 +3326,31 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 58: + case 67: localContext = new ShowSessionContext(localContext); - this.enterOuterAlt(localContext, 58); + this.enterOuterAlt(localContext, 67); { - this.state = 917; + this.state = 1093; this.match(TrinoSqlParser.KW_SHOW); - this.state = 918; + this.state = 1094; this.match(TrinoSqlParser.KW_SESSION); - this.state = 925; + this.state = 1101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 919; + this.state = 1095; this.match(TrinoSqlParser.KW_LIKE); - this.state = 920; + this.state = 1096; (localContext as ShowSessionContext)._pattern = this.string_(); - this.state = 923; + this.state = 1099; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 921; + this.state = 1097; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 922; + this.state = 1098; (localContext as ShowSessionContext)._escape = this.string_(); } } @@ -2986,62 +3360,88 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 59: + case 68: + localContext = new SetSessionAuthorizationContext(localContext); + this.enterOuterAlt(localContext, 68); + { + this.state = 1103; + this.match(TrinoSqlParser.KW_SET); + this.state = 1104; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 1105; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 1106; + this.authorizationUser(); + } + break; + case 69: + localContext = new ResetSessionAuthorizationContext(localContext); + this.enterOuterAlt(localContext, 69); + { + this.state = 1107; + this.match(TrinoSqlParser.KW_RESET); + this.state = 1108; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 1109; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + } + break; + case 70: localContext = new SetSessionContext(localContext); - this.enterOuterAlt(localContext, 59); + this.enterOuterAlt(localContext, 70); { - this.state = 927; + this.state = 1110; this.match(TrinoSqlParser.KW_SET); - this.state = 928; + this.state = 1111; this.match(TrinoSqlParser.KW_SESSION); - this.state = 929; + this.state = 1112; this.qualifiedName(); - this.state = 930; + this.state = 1113; this.match(TrinoSqlParser.EQ); - this.state = 931; + this.state = 1114; this.expression(); } break; - case 60: + case 71: localContext = new ResetSessionContext(localContext); - this.enterOuterAlt(localContext, 60); + this.enterOuterAlt(localContext, 71); { - this.state = 933; + this.state = 1116; this.match(TrinoSqlParser.KW_RESET); - this.state = 934; + this.state = 1117; this.match(TrinoSqlParser.KW_SESSION); - this.state = 935; + this.state = 1118; this.qualifiedName(); } break; - case 61: + case 72: localContext = new StartTransactionContext(localContext); - this.enterOuterAlt(localContext, 61); + this.enterOuterAlt(localContext, 72); { - this.state = 936; + this.state = 1119; this.match(TrinoSqlParser.KW_START); - this.state = 937; + this.state = 1120; this.match(TrinoSqlParser.KW_TRANSACTION); - this.state = 946; + this.state = 1129; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 115 || _la === 177) { + if (_la === 134 || _la === 220) { { - this.state = 938; + this.state = 1121; this.transactionMode(); - this.state = 943; + this.state = 1126; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 939; + this.state = 1122; this.match(TrinoSqlParser.T__2); - this.state = 940; + this.state = 1123; this.transactionMode(); } } - this.state = 945; + this.state = 1128; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3050,98 +3450,98 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 62: + case 73: localContext = new CommitContext(localContext); - this.enterOuterAlt(localContext, 62); + this.enterOuterAlt(localContext, 73); { - this.state = 948; + this.state = 1131; this.match(TrinoSqlParser.KW_COMMIT); - this.state = 950; + this.state = 1133; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 245) { + if (_la === 307) { { - this.state = 949; + this.state = 1132; this.match(TrinoSqlParser.KW_WORK); } } } break; - case 63: + case 74: localContext = new RollbackContext(localContext); - this.enterOuterAlt(localContext, 63); + this.enterOuterAlt(localContext, 74); { - this.state = 952; + this.state = 1135; this.match(TrinoSqlParser.KW_ROLLBACK); - this.state = 954; + this.state = 1137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 245) { + if (_la === 307) { { - this.state = 953; + this.state = 1136; this.match(TrinoSqlParser.KW_WORK); } } } break; - case 64: + case 75: localContext = new PrepareContext(localContext); - this.enterOuterAlt(localContext, 64); + this.enterOuterAlt(localContext, 75); { - this.state = 956; + this.state = 1139; this.match(TrinoSqlParser.KW_PREPARE); - this.state = 957; + this.state = 1140; this.identifier(); - this.state = 958; + this.state = 1141; this.match(TrinoSqlParser.KW_FROM); - this.state = 959; + this.state = 1142; this.statement(); } break; - case 65: + case 76: localContext = new DeallocateContext(localContext); - this.enterOuterAlt(localContext, 65); + this.enterOuterAlt(localContext, 76); { - this.state = 961; + this.state = 1144; this.match(TrinoSqlParser.KW_DEALLOCATE); - this.state = 962; + this.state = 1145; this.match(TrinoSqlParser.KW_PREPARE); - this.state = 963; + this.state = 1146; this.identifier(); } break; - case 66: + case 77: localContext = new ExecuteContext(localContext); - this.enterOuterAlt(localContext, 66); + this.enterOuterAlt(localContext, 77); { - this.state = 964; + this.state = 1147; this.match(TrinoSqlParser.KW_EXECUTE); - this.state = 965; + this.state = 1148; this.identifier(); - this.state = 975; + this.state = 1158; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 235) { + if (_la === 290) { { - this.state = 966; + this.state = 1149; this.match(TrinoSqlParser.KW_USING); - this.state = 967; + this.state = 1150; this.expression(); - this.state = 972; + this.state = 1155; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 968; + this.state = 1151; this.match(TrinoSqlParser.T__2); - this.state = 969; + this.state = 1152; this.expression(); } } - this.state = 974; + this.state = 1157; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3150,199 +3550,316 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 67: + case 78: + localContext = new ExecuteImmediateContext(localContext); + this.enterOuterAlt(localContext, 78); + { + this.state = 1160; + this.match(TrinoSqlParser.KW_EXECUTE); + this.state = 1161; + this.match(TrinoSqlParser.KW_IMMEDIATE); + this.state = 1162; + this.string_(); + this.state = 1172; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 290) { + { + this.state = 1163; + this.match(TrinoSqlParser.KW_USING); + this.state = 1164; + this.expression(); + this.state = 1169; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 1165; + this.match(TrinoSqlParser.T__2); + this.state = 1166; + this.expression(); + } + } + this.state = 1171; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + } + break; + case 79: localContext = new DescribeInputContext(localContext); - this.enterOuterAlt(localContext, 67); + this.enterOuterAlt(localContext, 79); { - this.state = 977; + this.state = 1174; this.match(TrinoSqlParser.KW_DESCRIBE); - this.state = 978; + this.state = 1175; this.match(TrinoSqlParser.KW_INPUT); - this.state = 979; + this.state = 1176; this.identifier(); } break; - case 68: + case 80: localContext = new DescribeOutputContext(localContext); - this.enterOuterAlt(localContext, 68); + this.enterOuterAlt(localContext, 80); { - this.state = 980; + this.state = 1177; this.match(TrinoSqlParser.KW_DESCRIBE); - this.state = 981; + this.state = 1178; this.match(TrinoSqlParser.KW_OUTPUT); - this.state = 982; + this.state = 1179; this.identifier(); } break; - case 69: + case 81: localContext = new SetPathContext(localContext); - this.enterOuterAlt(localContext, 69); + this.enterOuterAlt(localContext, 81); { - this.state = 983; + this.state = 1180; this.match(TrinoSqlParser.KW_SET); - this.state = 984; + this.state = 1181; this.match(TrinoSqlParser.KW_PATH); - this.state = 985; + this.state = 1182; this.pathSpecification(); } break; - case 70: + case 82: localContext = new SetTimeZoneContext(localContext); - this.enterOuterAlt(localContext, 70); + this.enterOuterAlt(localContext, 82); { - this.state = 986; + this.state = 1183; this.match(TrinoSqlParser.KW_SET); - this.state = 987; + this.state = 1184; this.match(TrinoSqlParser.KW_TIME); - this.state = 988; + this.state = 1185; this.match(TrinoSqlParser.KW_ZONE); - this.state = 991; + this.state = 1188; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 119, this.context) ) { case 1: { - this.state = 989; + this.state = 1186; this.match(TrinoSqlParser.KW_LOCAL); } break; case 2: { - this.state = 990; + this.state = 1187; this.expression(); } break; } } break; - case 71: + case 83: localContext = new UpdateContext(localContext); - this.enterOuterAlt(localContext, 71); + this.enterOuterAlt(localContext, 83); { - this.state = 993; + this.state = 1190; this.match(TrinoSqlParser.KW_UPDATE); - this.state = 994; - this.tableName(); - this.state = 995; + this.state = 1191; + this.tableRef(); + this.state = 1192; this.match(TrinoSqlParser.KW_SET); - this.state = 996; + this.state = 1193; this.updateAssignment(); - this.state = 1001; + this.state = 1198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 997; + this.state = 1194; this.match(TrinoSqlParser.T__2); - this.state = 998; + this.state = 1195; this.updateAssignment(); } } - this.state = 1003; + this.state = 1200; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1006; + this.state = 1203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 241) { + if (_la === 301) { { - this.state = 1004; + this.state = 1201; this.match(TrinoSqlParser.KW_WHERE); - this.state = 1005; + this.state = 1202; (localContext as UpdateContext)._where = this.booleanExpression(0); } } } break; - case 72: + case 84: localContext = new MergeContext(localContext); - this.enterOuterAlt(localContext, 72); + this.enterOuterAlt(localContext, 84); { - this.state = 1008; + this.state = 1205; this.match(TrinoSqlParser.KW_MERGE); - this.state = 1009; + this.state = 1206; this.match(TrinoSqlParser.KW_INTO); - this.state = 1010; - this.tableName(); - this.state = 1015; + this.state = 1207; + this.tableRef(); + this.state = 1212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140015023) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282056543) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 1012; + this.state = 1209; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1011; + this.state = 1208; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1014; + this.state = 1211; this.identifier(); } } - this.state = 1017; + this.state = 1214; this.match(TrinoSqlParser.KW_USING); - this.state = 1018; + this.state = 1215; this.relation(0); - this.state = 1019; + this.state = 1216; this.match(TrinoSqlParser.KW_ON); - this.state = 1020; + this.state = 1217; this.expression(); - this.state = 1022; + this.state = 1219; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1021; + this.state = 1218; this.mergeCase(); } } - this.state = 1024; + this.state = 1221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 240); + } while (_la === 300); } break; - case 73: + case 85: localContext = new ShowTableCommentContext(localContext); - this.enterOuterAlt(localContext, 73); + this.enterOuterAlt(localContext, 85); { - this.state = 1026; + this.state = 1223; this.match(TrinoSqlParser.KW_SHOW); - this.state = 1027; + this.state = 1224; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 1028; + this.state = 1225; this.match(TrinoSqlParser.KW_ON); - this.state = 1029; + this.state = 1226; this.match(TrinoSqlParser.KW_TABLE); - this.state = 1030; - this.tableName(); + this.state = 1227; + this.tableRef(); } break; - case 74: + case 86: localContext = new ShowColumnCommentContext(localContext); - this.enterOuterAlt(localContext, 74); + this.enterOuterAlt(localContext, 86); { - this.state = 1031; + this.state = 1228; this.match(TrinoSqlParser.KW_SHOW); - this.state = 1032; + this.state = 1229; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 1033; + this.state = 1230; this.match(TrinoSqlParser.KW_ON); - this.state = 1034; + this.state = 1231; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 1035; - this.columnName(); + this.state = 1232; + this.columnRef(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public rootQuery(): RootQueryContext { + let localContext = new RootQueryContext(this.context, this.state); + this.enterRule(localContext, 18, TrinoSqlParser.RULE_rootQuery); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1236; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { + case 1: + { + this.state = 1235; + this.withFunction(); } break; } + this.state = 1238; + this.query(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public withFunction(): WithFunctionContext { + let localContext = new WithFunctionContext(this.context, this.state); + this.enterRule(localContext, 20, TrinoSqlParser.RULE_withFunction); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1240; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1241; + this.functionSpecification(); + this.state = 1246; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 1242; + this.match(TrinoSqlParser.T__2); + this.state = 1243; + this.functionSpecification(); + } + } + this.state = 1248; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -3360,23 +3877,23 @@ export class TrinoSqlParser extends SQLParserBase { } public query(): QueryContext { let localContext = new QueryContext(this.context, this.state); - this.enterRule(localContext, 18, TrinoSqlParser.RULE_query); + this.enterRule(localContext, 22, TrinoSqlParser.RULE_query); let _la: number; try { localContext = new QueryStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1039; + this.state = 1250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 243) { + if (_la === 304) { { - this.state = 1038; + this.state = 1249; this.with_(); } } - this.state = 1041; + this.state = 1252; this.queryNoWith(); } } @@ -3396,38 +3913,38 @@ export class TrinoSqlParser extends SQLParserBase { } public with_(): WithContext { let localContext = new WithContext(this.context, this.state); - this.enterRule(localContext, 20, TrinoSqlParser.RULE_with); + this.enterRule(localContext, 24, TrinoSqlParser.RULE_with); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1043; + this.state = 1254; this.match(TrinoSqlParser.KW_WITH); - this.state = 1045; + this.state = 1256; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 178) { + if (_la === 221) { { - this.state = 1044; + this.state = 1255; this.match(TrinoSqlParser.KW_RECURSIVE); } } - this.state = 1047; + this.state = 1258; this.namedQuery(); - this.state = 1052; + this.state = 1263; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1048; + this.state = 1259; this.match(TrinoSqlParser.T__2); - this.state = 1049; + this.state = 1260; this.namedQuery(); } } - this.state = 1054; + this.state = 1265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3449,11 +3966,12 @@ export class TrinoSqlParser extends SQLParserBase { } public tableElement(): TableElementContext { let localContext = new TableElementContext(this.context, this.state); - this.enterRule(localContext, 22, TrinoSqlParser.RULE_tableElement); + this.enterRule(localContext, 26, TrinoSqlParser.RULE_tableElement); try { - this.state = 1057; + this.state = 1268; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -3464,26 +3982,41 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_FETCH: @@ -3492,16 +4025,18 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -3509,13 +4044,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -3526,6 +4069,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -3535,6 +4079,8 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NONE: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -3543,27 +4089,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -3571,6 +4127,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -3590,26 +4147,40 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: @@ -3619,14 +4190,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(localContext, 1); { - this.state = 1055; + this.state = 1266; this.columnDefinition(); } break; case TrinoSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 2); { - this.state = 1056; + this.state = 1267; this.likeClause(); } break; @@ -3650,47 +4221,47 @@ export class TrinoSqlParser extends SQLParserBase { } public columnDefinition(): ColumnDefinitionContext { let localContext = new ColumnDefinitionContext(this.context, this.state); - this.enterRule(localContext, 24, TrinoSqlParser.RULE_columnDefinition); + this.enterRule(localContext, 28, TrinoSqlParser.RULE_columnDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1059; + this.state = 1270; this.columnNameCreate(); - this.state = 1060; + this.state = 1271; this.type_(0); - this.state = 1063; + this.state = 1274; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + if (_la === 182) { { - this.state = 1061; + this.state = 1272; this.match(TrinoSqlParser.KW_NOT); - this.state = 1062; + this.state = 1273; this.match(TrinoSqlParser.KW_NULL); } } - this.state = 1067; + this.state = 1278; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 123, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 133, this.context) ) { case 1: { - this.state = 1065; + this.state = 1276; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 1066; + this.state = 1277; this.string_(); } break; } - this.state = 1071; + this.state = 1282; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 134, this.context) ) { case 1: { - this.state = 1069; + this.state = 1280; this.match(TrinoSqlParser.KW_WITH); - this.state = 1070; + this.state = 1281; this.properties(); } break; @@ -3713,31 +4284,31 @@ export class TrinoSqlParser extends SQLParserBase { } public likeClause(): LikeClauseContext { let localContext = new LikeClauseContext(this.context, this.state); - this.enterRule(localContext, 26, TrinoSqlParser.RULE_likeClause); + this.enterRule(localContext, 30, TrinoSqlParser.RULE_likeClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1073; + this.state = 1284; this.match(TrinoSqlParser.KW_LIKE); - this.state = 1074; - this.tableName(); - this.state = 1077; + this.state = 1285; + this.tableRef(); + this.state = 1288; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 75 || _la === 104) { + if (_la === 92 || _la === 123) { { - this.state = 1075; + this.state = 1286; localContext._optionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 75 || _la === 104)) { + if(!(_la === 92 || _la === 123)) { localContext._optionType = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1076; + this.state = 1287; this.match(TrinoSqlParser.KW_PROPERTIES); } } @@ -3760,15 +4331,15 @@ export class TrinoSqlParser extends SQLParserBase { } public properties(): PropertiesContext { let localContext = new PropertiesContext(this.context, this.state); - this.enterRule(localContext, 28, TrinoSqlParser.RULE_properties); + this.enterRule(localContext, 32, TrinoSqlParser.RULE_properties); try { this.enterOuterAlt(localContext, 1); { - this.state = 1079; + this.state = 1290; this.match(TrinoSqlParser.T__0); - this.state = 1080; + this.state = 1291; this.propertyAssignments(); - this.state = 1081; + this.state = 1292; this.match(TrinoSqlParser.T__1); } } @@ -3788,26 +4359,26 @@ export class TrinoSqlParser extends SQLParserBase { } public propertyAssignments(): PropertyAssignmentsContext { let localContext = new PropertyAssignmentsContext(this.context, this.state); - this.enterRule(localContext, 30, TrinoSqlParser.RULE_propertyAssignments); + this.enterRule(localContext, 34, TrinoSqlParser.RULE_propertyAssignments); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1083; + this.state = 1294; this.property(); - this.state = 1088; + this.state = 1299; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1084; + this.state = 1295; this.match(TrinoSqlParser.T__2); - this.state = 1085; + this.state = 1296; this.property(); } } - this.state = 1090; + this.state = 1301; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3829,15 +4400,15 @@ export class TrinoSqlParser extends SQLParserBase { } public property(): PropertyContext { let localContext = new PropertyContext(this.context, this.state); - this.enterRule(localContext, 32, TrinoSqlParser.RULE_property); + this.enterRule(localContext, 36, TrinoSqlParser.RULE_property); try { this.enterOuterAlt(localContext, 1); { - this.state = 1091; + this.state = 1302; this.identifier(); - this.state = 1092; + this.state = 1303; this.match(TrinoSqlParser.EQ); - this.state = 1093; + this.state = 1304; this.propertyValue(); } } @@ -3857,16 +4428,16 @@ export class TrinoSqlParser extends SQLParserBase { } public propertyValue(): PropertyValueContext { let localContext = new PropertyValueContext(this.context, this.state); - this.enterRule(localContext, 34, TrinoSqlParser.RULE_propertyValue); + this.enterRule(localContext, 38, TrinoSqlParser.RULE_propertyValue); try { - this.state = 1097; + this.state = 1308; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: localContext = new DefaultPropertyValueContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1095; + this.state = 1306; this.match(TrinoSqlParser.KW_DEFAULT); } break; @@ -3874,7 +4445,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new NonDefaultPropertyValueContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1096; + this.state = 1307; this.expression(); } break; @@ -3896,60 +4467,60 @@ export class TrinoSqlParser extends SQLParserBase { } public queryNoWith(): QueryNoWithContext { let localContext = new QueryNoWithContext(this.context, this.state); - this.enterRule(localContext, 36, TrinoSqlParser.RULE_queryNoWith); + this.enterRule(localContext, 40, TrinoSqlParser.RULE_queryNoWith); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1099; + this.state = 1310; this.queryTerm(0); - this.state = 1110; + this.state = 1321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 158) { + if (_la === 195) { { - this.state = 1100; + this.state = 1311; this.match(TrinoSqlParser.KW_ORDER); - this.state = 1101; + this.state = 1312; this.match(TrinoSqlParser.KW_BY); - this.state = 1102; + this.state = 1313; this.sortItem(); - this.state = 1107; + this.state = 1318; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1103; + this.state = 1314; this.match(TrinoSqlParser.T__2); - this.state = 1104; + this.state = 1315; this.sortItem(); } } - this.state = 1109; + this.state = 1320; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1117; + this.state = 1328; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 151) { + if (_la === 188) { { - this.state = 1112; + this.state = 1323; this.match(TrinoSqlParser.KW_OFFSET); - this.state = 1113; + this.state = 1324; localContext._offset = this.rowCount(); - this.state = 1115; + this.state = 1326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 192 || _la === 193) { + if (_la === 239 || _la === 240) { { - this.state = 1114; + this.state = 1325; _la = this.tokenStream.LA(1); - if(!(_la === 192 || _la === 193)) { + if(!(_la === 239 || _la === 240)) { this.errorHandler.recoverInline(this); } else { @@ -3962,15 +4533,15 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 1132; + this.state = 1343; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_LIMIT: { { - this.state = 1119; + this.state = 1330; this.match(TrinoSqlParser.KW_LIMIT); - this.state = 1120; + this.state = 1331; localContext._limit = this.limitRowCount(); } } @@ -3978,50 +4549,50 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FETCH: { { - this.state = 1121; + this.state = 1332; this.match(TrinoSqlParser.KW_FETCH); - this.state = 1122; + this.state = 1333; _la = this.tokenStream.LA(1); - if(!(_la === 84 || _la === 139)) { + if(!(_la === 101 || _la === 174)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1124; + this.state = 1335; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 261 || _la === 265) { + if (_la === 324 || _la === 329) { { - this.state = 1123; + this.state = 1334; localContext._fetchFirst = this.rowCount(); } } - this.state = 1126; + this.state = 1337; _la = this.tokenStream.LA(1); - if(!(_la === 192 || _la === 193)) { + if(!(_la === 239 || _la === 240)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1130; + this.state = 1341; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ONLY: { - this.state = 1127; + this.state = 1338; this.match(TrinoSqlParser.KW_ONLY); } break; case TrinoSqlParser.KW_WITH: { - this.state = 1128; + this.state = 1339; this.match(TrinoSqlParser.KW_WITH); - this.state = 1129; + this.state = 1340; this.match(TrinoSqlParser.KW_TIES); } break; @@ -4042,13 +4613,13 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CREATE: case TrinoSqlParser.KW_DEALLOCATE: case TrinoSqlParser.KW_DELETE: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: case TrinoSqlParser.KW_DESCRIBE: case TrinoSqlParser.KW_DROP: case TrinoSqlParser.KW_EXECUTE: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_GRANT: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_INSERT: case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_PREPARE: @@ -4089,15 +4660,15 @@ export class TrinoSqlParser extends SQLParserBase { } public limitRowCount(): LimitRowCountContext { let localContext = new LimitRowCountContext(this.context, this.state); - this.enterRule(localContext, 38, TrinoSqlParser.RULE_limitRowCount); + this.enterRule(localContext, 42, TrinoSqlParser.RULE_limitRowCount); try { - this.state = 1136; + this.state = 1347; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 1134; + this.state = 1345; this.match(TrinoSqlParser.KW_ALL); } break; @@ -4105,7 +4676,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 2); { - this.state = 1135; + this.state = 1346; this.rowCount(); } break; @@ -4129,14 +4700,14 @@ export class TrinoSqlParser extends SQLParserBase { } public rowCount(): RowCountContext { let localContext = new RowCountContext(this.context, this.state); - this.enterRule(localContext, 40, TrinoSqlParser.RULE_rowCount); + this.enterRule(localContext, 44, TrinoSqlParser.RULE_rowCount); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1138; + this.state = 1349; _la = this.tokenStream.LA(1); - if(!(_la === 261 || _la === 265)) { + if(!(_la === 324 || _la === 329)) { this.errorHandler.recoverInline(this); } else { @@ -4171,8 +4742,8 @@ export class TrinoSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryTermContext(this.context, parentState); let previousContext = localContext; - let _startState = 42; - this.enterRecursionRule(localContext, 42, TrinoSqlParser.RULE_queryTerm, _p); + let _startState = 46; + this.enterRecursionRule(localContext, 46, TrinoSqlParser.RULE_queryTerm, _p); let _la: number; try { let alternative: number; @@ -4183,13 +4754,13 @@ export class TrinoSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 1141; + this.state = 1352; this.queryPrimary(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1157; + this.state = 1368; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 139, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 149, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -4197,31 +4768,31 @@ export class TrinoSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 1155; + this.state = 1366; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 148, this.context) ) { case 1: { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_queryTerm); - this.state = 1143; + this.state = 1354; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1144; + this.state = 1355; (localContext as SetOperationContext)._operator = this.match(TrinoSqlParser.KW_INTERSECT); - this.state = 1146; + this.state = 1357; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 20 || _la === 66) { + if (_la === 22 || _la === 79) { { - this.state = 1145; + this.state = 1356; this.setQuantifier(); } } - this.state = 1148; + this.state = 1359; (localContext as SetOperationContext)._right = this.queryTerm(3); } break; @@ -4230,40 +4801,40 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_queryTerm); - this.state = 1149; + this.state = 1360; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 1150; + this.state = 1361; (localContext as SetOperationContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 74 || _la === 229)) { + if(!(_la === 91 || _la === 281)) { (localContext as SetOperationContext)._operator = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1152; + this.state = 1363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 20 || _la === 66) { + if (_la === 22 || _la === 79) { { - this.state = 1151; + this.state = 1362; this.setQuantifier(); } } - this.state = 1154; + this.state = 1365; (localContext as SetOperationContext)._right = this.queryTerm(2); } break; } } } - this.state = 1159; + this.state = 1370; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 139, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 149, this.context); } } } @@ -4283,17 +4854,17 @@ export class TrinoSqlParser extends SQLParserBase { } public queryPrimary(): QueryPrimaryContext { let localContext = new QueryPrimaryContext(this.context, this.state); - this.enterRule(localContext, 44, TrinoSqlParser.RULE_queryPrimary); + this.enterRule(localContext, 48, TrinoSqlParser.RULE_queryPrimary); try { let alternative: number; - this.state = 1176; + this.state = 1387; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_SELECT: localContext = new QueryPrimaryDefaultContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1160; + this.state = 1371; this.querySpecification(); } break; @@ -4301,37 +4872,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new TableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1161; + this.state = 1372; this.match(TrinoSqlParser.KW_TABLE); - this.state = 1162; - this.tableName(); + this.state = 1373; + this.tableRef(); } break; case TrinoSqlParser.KW_VALUES: localContext = new InlineTableContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1163; + this.state = 1374; this.match(TrinoSqlParser.KW_VALUES); - this.state = 1164; + this.state = 1375; this.expression(); - this.state = 1169; + this.state = 1380; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 140, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 150, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1165; + this.state = 1376; this.match(TrinoSqlParser.T__2); - this.state = 1166; + this.state = 1377; this.expression(); } } } - this.state = 1171; + this.state = 1382; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 140, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 150, this.context); } } break; @@ -4339,11 +4910,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SubqueryContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1172; + this.state = 1383; this.match(TrinoSqlParser.T__0); - this.state = 1173; + this.state = 1384; this.queryNoWith(); - this.state = 1174; + this.state = 1385; this.match(TrinoSqlParser.T__1); } break; @@ -4367,36 +4938,36 @@ export class TrinoSqlParser extends SQLParserBase { } public sortItem(): SortItemContext { let localContext = new SortItemContext(this.context, this.state); - this.enterRule(localContext, 46, TrinoSqlParser.RULE_sortItem); + this.enterRule(localContext, 50, TrinoSqlParser.RULE_sortItem); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1180; + this.state = 1391; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 142, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 152, this.context) ) { case 1: { - this.state = 1178; - this.columnName(); + this.state = 1389; + this.columnRef(); } break; case 2: { - this.state = 1179; + this.state = 1390; this.expression(); } break; } - this.state = 1183; + this.state = 1394; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 143, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 153, this.context) ) { case 1: { - this.state = 1182; + this.state = 1393; localContext._ordering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 27 || _la === 63)) { + if(!(_la === 29 || _la === 75)) { localContext._ordering = this.errorHandler.recoverInline(this); } else { @@ -4406,17 +4977,17 @@ export class TrinoSqlParser extends SQLParserBase { } break; } - this.state = 1187; + this.state = 1398; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 150) { + if (_la === 185) { { - this.state = 1185; + this.state = 1396; this.match(TrinoSqlParser.KW_NULLS); - this.state = 1186; + this.state = 1397; localContext._nullOrdering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 84 || _la === 118)) { + if(!(_la === 101 || _la === 148)) { localContext._nullOrdering = this.errorHandler.recoverInline(this); } else { @@ -4444,137 +5015,137 @@ export class TrinoSqlParser extends SQLParserBase { } public querySpecification(): QuerySpecificationContext { let localContext = new QuerySpecificationContext(this.context, this.state); - this.enterRule(localContext, 48, TrinoSqlParser.RULE_querySpecification); + this.enterRule(localContext, 52, TrinoSqlParser.RULE_querySpecification); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1189; + this.state = 1400; this.match(TrinoSqlParser.KW_SELECT); - this.state = 1191; + this.state = 1402; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 145, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 155, this.context) ) { case 1: { - this.state = 1190; + this.state = 1401; this.setQuantifier(); } break; } - this.state = 1193; + this.state = 1404; this.selectItem(); - this.state = 1198; + this.state = 1409; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 146, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 156, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1194; + this.state = 1405; this.match(TrinoSqlParser.T__2); - this.state = 1195; + this.state = 1406; this.selectItem(); } } } - this.state = 1200; + this.state = 1411; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 146, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 156, this.context); } - this.state = 1210; + this.state = 1421; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 148, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 158, this.context) ) { case 1: { - this.state = 1201; + this.state = 1412; this.match(TrinoSqlParser.KW_FROM); - this.state = 1202; + this.state = 1413; this.relation(0); - this.state = 1207; + this.state = 1418; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 147, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 157, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1203; + this.state = 1414; this.match(TrinoSqlParser.T__2); - this.state = 1204; + this.state = 1415; this.relation(0); } } } - this.state = 1209; + this.state = 1420; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 147, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 157, this.context); } } break; } - this.state = 1214; + this.state = 1425; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 149, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { case 1: { - this.state = 1212; + this.state = 1423; this.match(TrinoSqlParser.KW_WHERE); - this.state = 1213; + this.state = 1424; localContext._where = this.booleanExpression(0); } break; } - this.state = 1219; + this.state = 1430; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 150, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 160, this.context) ) { case 1: { - this.state = 1216; + this.state = 1427; this.match(TrinoSqlParser.KW_GROUP); - this.state = 1217; + this.state = 1428; this.match(TrinoSqlParser.KW_BY); - this.state = 1218; + this.state = 1429; this.groupBy(); } break; } - this.state = 1223; + this.state = 1434; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 151, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { case 1: { - this.state = 1221; + this.state = 1432; this.match(TrinoSqlParser.KW_HAVING); - this.state = 1222; + this.state = 1433; localContext._having = this.booleanExpression(0); } break; } - this.state = 1234; + this.state = 1445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 153, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { case 1: { - this.state = 1225; + this.state = 1436; this.match(TrinoSqlParser.KW_WINDOW); - this.state = 1226; + this.state = 1437; this.windowDefinition(); - this.state = 1231; + this.state = 1442; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 152, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1227; + this.state = 1438; this.match(TrinoSqlParser.T__2); - this.state = 1228; + this.state = 1439; this.windowDefinition(); } } } - this.state = 1233; + this.state = 1444; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 152, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); } } break; @@ -4597,40 +5168,40 @@ export class TrinoSqlParser extends SQLParserBase { } public groupBy(): GroupByContext { let localContext = new GroupByContext(this.context, this.state); - this.enterRule(localContext, 50, TrinoSqlParser.RULE_groupBy); + this.enterRule(localContext, 54, TrinoSqlParser.RULE_groupBy); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1237; + this.state = 1448; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 154, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 164, this.context) ) { case 1: { - this.state = 1236; + this.state = 1447; this.setQuantifier(); } break; } - this.state = 1239; + this.state = 1450; this.groupingElement(); - this.state = 1244; + this.state = 1455; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 155, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 165, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1240; + this.state = 1451; this.match(TrinoSqlParser.T__2); - this.state = 1241; + this.state = 1452; this.groupingElement(); } } } - this.state = 1246; + this.state = 1457; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 155, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 165, this.context); } } } @@ -4650,17 +5221,17 @@ export class TrinoSqlParser extends SQLParserBase { } public groupingElement(): GroupingElementContext { let localContext = new GroupingElementContext(this.context, this.state); - this.enterRule(localContext, 52, TrinoSqlParser.RULE_groupingElement); + this.enterRule(localContext, 56, TrinoSqlParser.RULE_groupingElement); let _la: number; try { - this.state = 1287; + this.state = 1498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: localContext = new SingleGroupingSetContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1247; + this.state = 1458; this.groupingSet(); } break; @@ -4668,37 +5239,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RollupContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1248; + this.state = 1459; this.match(TrinoSqlParser.KW_ROLLUP); - this.state = 1249; + this.state = 1460; this.match(TrinoSqlParser.T__0); - this.state = 1258; + this.state = 1469; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: { - this.state = 1250; - this.groupingTerm(); - this.state = 1255; + this.state = 1461; + this.groupingSet(); + this.state = 1466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1251; + this.state = 1462; this.match(TrinoSqlParser.T__2); - this.state = 1252; - this.groupingTerm(); + this.state = 1463; + this.groupingSet(); } } - this.state = 1257; + this.state = 1468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1260; + this.state = 1471; this.match(TrinoSqlParser.T__1); } break; @@ -4706,37 +5277,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CubeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1261; + this.state = 1472; this.match(TrinoSqlParser.KW_CUBE); - this.state = 1262; + this.state = 1473; this.match(TrinoSqlParser.T__0); - this.state = 1271; + this.state = 1482; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { case 1: { - this.state = 1263; - this.groupingTerm(); - this.state = 1268; + this.state = 1474; + this.groupingSet(); + this.state = 1479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1264; + this.state = 1475; this.match(TrinoSqlParser.T__2); - this.state = 1265; - this.groupingTerm(); + this.state = 1476; + this.groupingSet(); } } - this.state = 1270; + this.state = 1481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1273; + this.state = 1484; this.match(TrinoSqlParser.T__1); } break; @@ -4744,31 +5315,31 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new MultipleGroupingSetsContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1274; + this.state = 1485; this.match(TrinoSqlParser.KW_GROUPING); - this.state = 1275; + this.state = 1486; this.match(TrinoSqlParser.KW_SETS); - this.state = 1276; + this.state = 1487; this.match(TrinoSqlParser.T__0); - this.state = 1277; + this.state = 1488; this.groupingSet(); - this.state = 1282; + this.state = 1493; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1278; + this.state = 1489; this.match(TrinoSqlParser.T__2); - this.state = 1279; + this.state = 1490; this.groupingSet(); } } - this.state = 1284; + this.state = 1495; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1285; + this.state = 1496; this.match(TrinoSqlParser.T__1); } break; @@ -4790,51 +5361,51 @@ export class TrinoSqlParser extends SQLParserBase { } public groupingSet(): GroupingSetContext { let localContext = new GroupingSetContext(this.context, this.state); - this.enterRule(localContext, 54, TrinoSqlParser.RULE_groupingSet); + this.enterRule(localContext, 58, TrinoSqlParser.RULE_groupingSet); let _la: number; try { - this.state = 1302; + this.state = 1513; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 164, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 174, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1289; + this.state = 1500; this.match(TrinoSqlParser.T__0); - this.state = 1298; + this.state = 1509; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { case 1: { - this.state = 1290; + this.state = 1501; this.groupingTerm(); - this.state = 1295; + this.state = 1506; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1291; + this.state = 1502; this.match(TrinoSqlParser.T__2); - this.state = 1292; + this.state = 1503; this.groupingTerm(); } } - this.state = 1297; + this.state = 1508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1300; + this.state = 1511; this.match(TrinoSqlParser.T__1); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1301; + this.state = 1512; this.groupingTerm(); } break; @@ -4856,22 +5427,22 @@ export class TrinoSqlParser extends SQLParserBase { } public groupingTerm(): GroupingTermContext { let localContext = new GroupingTermContext(this.context, this.state); - this.enterRule(localContext, 56, TrinoSqlParser.RULE_groupingTerm); + this.enterRule(localContext, 60, TrinoSqlParser.RULE_groupingTerm); try { - this.state = 1306; + this.state = 1517; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1304; - this.columnName(); + this.state = 1515; + this.columnRef(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1305; + this.state = 1516; this.expression(); } break; @@ -4893,19 +5464,19 @@ export class TrinoSqlParser extends SQLParserBase { } public windowDefinition(): WindowDefinitionContext { let localContext = new WindowDefinitionContext(this.context, this.state); - this.enterRule(localContext, 58, TrinoSqlParser.RULE_windowDefinition); + this.enterRule(localContext, 62, TrinoSqlParser.RULE_windowDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1308; + this.state = 1519; localContext._name = this.identifier(); - this.state = 1309; + this.state = 1520; this.match(TrinoSqlParser.KW_AS); - this.state = 1310; + this.state = 1521; this.match(TrinoSqlParser.T__0); - this.state = 1311; + this.state = 1522; this.windowSpecification(); - this.state = 1312; + this.state = 1523; this.match(TrinoSqlParser.T__1); } } @@ -4925,89 +5496,89 @@ export class TrinoSqlParser extends SQLParserBase { } public windowSpecification(): WindowSpecificationContext { let localContext = new WindowSpecificationContext(this.context, this.state); - this.enterRule(localContext, 60, TrinoSqlParser.RULE_windowSpecification); + this.enterRule(localContext, 64, TrinoSqlParser.RULE_windowSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1315; + this.state = 1526; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 166, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 176, this.context) ) { case 1: { - this.state = 1314; + this.state = 1525; localContext._existingWindowName = this.identifier(); } break; } - this.state = 1327; + this.state = 1538; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 163) { + if (_la === 201) { { - this.state = 1317; + this.state = 1528; this.match(TrinoSqlParser.KW_PARTITION); - this.state = 1318; + this.state = 1529; this.match(TrinoSqlParser.KW_BY); - this.state = 1319; + this.state = 1530; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); - this.state = 1324; + this.state = 1535; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1320; + this.state = 1531; this.match(TrinoSqlParser.T__2); - this.state = 1321; + this.state = 1532; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); } } - this.state = 1326; + this.state = 1537; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1339; + this.state = 1550; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 158) { + if (_la === 195) { { - this.state = 1329; + this.state = 1540; this.match(TrinoSqlParser.KW_ORDER); - this.state = 1330; + this.state = 1541; this.match(TrinoSqlParser.KW_BY); - this.state = 1331; + this.state = 1542; this.sortItem(); - this.state = 1336; + this.state = 1547; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1332; + this.state = 1543; this.match(TrinoSqlParser.T__2); - this.state = 1333; + this.state = 1544; this.sortItem(); } } - this.state = 1338; + this.state = 1549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1342; + this.state = 1553; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 98 || _la === 134 || _la === 176 || _la === 193) { + if (_la === 116 || _la === 168 || _la === 219 || _la === 240) { { - this.state = 1341; + this.state = 1552; this.windowFrame(); } } @@ -5030,30 +5601,30 @@ export class TrinoSqlParser extends SQLParserBase { } public namedQuery(): NamedQueryContext { let localContext = new NamedQueryContext(this.context, this.state); - this.enterRule(localContext, 62, TrinoSqlParser.RULE_namedQuery); + this.enterRule(localContext, 66, TrinoSqlParser.RULE_namedQuery); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1344; + this.state = 1555; localContext._name = this.identifier(); - this.state = 1346; + this.state = 1557; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 1) { { - this.state = 1345; + this.state = 1556; this.columnAliases(); } } - this.state = 1348; + this.state = 1559; this.match(TrinoSqlParser.KW_AS); - this.state = 1349; + this.state = 1560; this.match(TrinoSqlParser.T__0); - this.state = 1350; + this.state = 1561; this.query(); - this.state = 1351; + this.state = 1562; this.match(TrinoSqlParser.T__1); } } @@ -5073,14 +5644,14 @@ export class TrinoSqlParser extends SQLParserBase { } public setQuantifier(): SetQuantifierContext { let localContext = new SetQuantifierContext(this.context, this.state); - this.enterRule(localContext, 64, TrinoSqlParser.RULE_setQuantifier); + this.enterRule(localContext, 68, TrinoSqlParser.RULE_setQuantifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1353; + this.state = 1564; _la = this.tokenStream.LA(1); - if(!(_la === 20 || _la === 66)) { + if(!(_la === 22 || _la === 79)) { this.errorHandler.recoverInline(this); } else { @@ -5105,48 +5676,48 @@ export class TrinoSqlParser extends SQLParserBase { } public selectItem(): SelectItemContext { let localContext = new SelectItemContext(this.context, this.state); - this.enterRule(localContext, 66, TrinoSqlParser.RULE_selectItem); + this.enterRule(localContext, 70, TrinoSqlParser.RULE_selectItem); let _la: number; try { - this.state = 1373; + this.state = 1584; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 177, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: localContext = new SelectSingleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1357; + this.state = 1568; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context) ) { case 1: { - this.state = 1355; - this.columnName(); + this.state = 1566; + this.columnRef(); } break; case 2: { - this.state = 1356; + this.state = 1567; this.expression(); } break; } - this.state = 1363; + this.state = 1574; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: { - this.state = 1360; + this.state = 1571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1359; + this.state = 1570; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1362; + this.state = 1573; this.identifier(); } break; @@ -5157,20 +5728,20 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1365; + this.state = 1576; this.primaryExpression(0); - this.state = 1366; + this.state = 1577; this.match(TrinoSqlParser.T__3); - this.state = 1367; + this.state = 1578; this.match(TrinoSqlParser.ASTERISK); - this.state = 1370; + this.state = 1581; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 176, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { case 1: { - this.state = 1368; + this.state = 1579; this.match(TrinoSqlParser.KW_AS); - this.state = 1369; + this.state = 1580; this.columnAliases(); } break; @@ -5181,7 +5752,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1372; + this.state = 1583; this.match(TrinoSqlParser.ASTERISK); } break; @@ -5213,8 +5784,8 @@ export class TrinoSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new RelationContext(this.context, parentState); let previousContext = localContext; - let _startState = 68; - this.enterRecursionRule(localContext, 68, TrinoSqlParser.RULE_relation, _p); + let _startState = 72; + this.enterRecursionRule(localContext, 72, TrinoSqlParser.RULE_relation, _p); try { let alternative: number; this.enterOuterAlt(localContext, 1); @@ -5224,13 +5795,13 @@ export class TrinoSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 1376; + this.state = 1587; this.sampledRelation(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1396; + this.state = 1607; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 179, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 189, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -5242,20 +5813,20 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new JoinRelationContext(new RelationContext(parentContext, parentState)); (localContext as JoinRelationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_relation); - this.state = 1378; + this.state = 1589; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1392; + this.state = 1603; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_CROSS: { - this.state = 1379; + this.state = 1590; this.match(TrinoSqlParser.KW_CROSS); - this.state = 1380; + this.state = 1591; this.match(TrinoSqlParser.KW_JOIN); - this.state = 1381; + this.state = 1592; (localContext as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -5265,25 +5836,25 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_LEFT: case TrinoSqlParser.KW_RIGHT: { - this.state = 1382; + this.state = 1593; this.joinType(); - this.state = 1383; + this.state = 1594; this.match(TrinoSqlParser.KW_JOIN); - this.state = 1384; + this.state = 1595; (localContext as JoinRelationContext)._rightRelation = this.relation(0); - this.state = 1385; + this.state = 1596; this.joinCriteria(); } break; case TrinoSqlParser.KW_NATURAL: { - this.state = 1387; + this.state = 1598; this.match(TrinoSqlParser.KW_NATURAL); - this.state = 1388; + this.state = 1599; this.joinType(); - this.state = 1389; + this.state = 1600; this.match(TrinoSqlParser.KW_JOIN); - this.state = 1390; + this.state = 1601; (localContext as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -5293,9 +5864,9 @@ export class TrinoSqlParser extends SQLParserBase { } } } - this.state = 1398; + this.state = 1609; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 179, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 189, this.context); } } } @@ -5315,22 +5886,22 @@ export class TrinoSqlParser extends SQLParserBase { } public joinType(): JoinTypeContext { let localContext = new JoinTypeContext(this.context, this.state); - this.enterRule(localContext, 70, TrinoSqlParser.RULE_joinType); + this.enterRule(localContext, 74, TrinoSqlParser.RULE_joinType); let _la: number; try { - this.state = 1414; + this.state = 1625; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_INNER: case TrinoSqlParser.KW_JOIN: this.enterOuterAlt(localContext, 1); { - this.state = 1400; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 106) { + if (_la === 125) { { - this.state = 1399; + this.state = 1610; this.match(TrinoSqlParser.KW_INNER); } } @@ -5340,14 +5911,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_LEFT: this.enterOuterAlt(localContext, 2); { - this.state = 1402; + this.state = 1613; this.match(TrinoSqlParser.KW_LEFT); - this.state = 1404; + this.state = 1615; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 160) { + if (_la === 197) { { - this.state = 1403; + this.state = 1614; this.match(TrinoSqlParser.KW_OUTER); } } @@ -5357,14 +5928,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_RIGHT: this.enterOuterAlt(localContext, 3); { - this.state = 1406; + this.state = 1617; this.match(TrinoSqlParser.KW_RIGHT); - this.state = 1408; + this.state = 1619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 160) { + if (_la === 197) { { - this.state = 1407; + this.state = 1618; this.match(TrinoSqlParser.KW_OUTER); } } @@ -5374,14 +5945,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FULL: this.enterOuterAlt(localContext, 4); { - this.state = 1410; + this.state = 1621; this.match(TrinoSqlParser.KW_FULL); - this.state = 1412; + this.state = 1623; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 160) { + if (_la === 197) { { - this.state = 1411; + this.state = 1622; this.match(TrinoSqlParser.KW_OUTER); } } @@ -5408,47 +5979,47 @@ export class TrinoSqlParser extends SQLParserBase { } public joinCriteria(): JoinCriteriaContext { let localContext = new JoinCriteriaContext(this.context, this.state); - this.enterRule(localContext, 72, TrinoSqlParser.RULE_joinCriteria); + this.enterRule(localContext, 76, TrinoSqlParser.RULE_joinCriteria); let _la: number; try { - this.state = 1430; + this.state = 1641; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { - this.state = 1416; + this.state = 1627; this.match(TrinoSqlParser.KW_ON); - this.state = 1417; + this.state = 1628; this.booleanExpression(0); } break; case TrinoSqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 1418; + this.state = 1629; this.match(TrinoSqlParser.KW_USING); - this.state = 1419; + this.state = 1630; this.match(TrinoSqlParser.T__0); - this.state = 1420; + this.state = 1631; this.identifier(); - this.state = 1425; + this.state = 1636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1421; + this.state = 1632; this.match(TrinoSqlParser.T__2); - this.state = 1422; + this.state = 1633; this.identifier(); } } - this.state = 1427; + this.state = 1638; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1428; + this.state = 1639; this.match(TrinoSqlParser.T__1); } break; @@ -5472,26 +6043,26 @@ export class TrinoSqlParser extends SQLParserBase { } public sampledRelation(): SampledRelationContext { let localContext = new SampledRelationContext(this.context, this.state); - this.enterRule(localContext, 74, TrinoSqlParser.RULE_sampledRelation); + this.enterRule(localContext, 78, TrinoSqlParser.RULE_sampledRelation); try { this.enterOuterAlt(localContext, 1); { - this.state = 1432; + this.state = 1643; this.patternRecognition(); - this.state = 1439; + this.state = 1650; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 1433; + this.state = 1644; this.match(TrinoSqlParser.KW_TABLESAMPLE); - this.state = 1434; + this.state = 1645; this.sampleType(); - this.state = 1435; + this.state = 1646; this.match(TrinoSqlParser.T__0); - this.state = 1436; + this.state = 1647; localContext._percentage = this.expression(); - this.state = 1437; + this.state = 1648; this.match(TrinoSqlParser.T__1); } break; @@ -5514,14 +6085,14 @@ export class TrinoSqlParser extends SQLParserBase { } public sampleType(): SampleTypeContext { let localContext = new SampleTypeContext(this.context, this.state); - this.enterRule(localContext, 76, TrinoSqlParser.RULE_sampleType); + this.enterRule(localContext, 80, TrinoSqlParser.RULE_sampleType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1441; + this.state = 1652; _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 211)) { + if(!(_la === 33 || _la === 259)) { this.errorHandler.recoverInline(this); } else { @@ -5544,146 +6115,273 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } + public trimsSpecification(): TrimsSpecificationContext { + let localContext = new TrimsSpecificationContext(this.context, this.state); + this.enterRule(localContext, 82, TrinoSqlParser.RULE_trimsSpecification); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1654; + _la = this.tokenStream.LA(1); + if(!(_la === 35 || _la === 150 || _la === 270)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public listAggOverflowBehavior(): ListAggOverflowBehaviorContext { + let localContext = new ListAggOverflowBehaviorContext(this.context, this.state); + this.enterRule(localContext, 84, TrinoSqlParser.RULE_listAggOverflowBehavior); + let _la: number; + try { + this.state = 1662; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ERROR: + this.enterOuterAlt(localContext, 1); + { + this.state = 1656; + this.match(TrinoSqlParser.KW_ERROR); + } + break; + case TrinoSqlParser.KW_TRUNCATE: + this.enterOuterAlt(localContext, 2); + { + this.state = 1657; + this.match(TrinoSqlParser.KW_TRUNCATE); + this.state = 1659; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 326 || _la === 327) { + { + this.state = 1658; + this.string_(); + } + } + + this.state = 1661; + this.listaggCountIndication(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public listaggCountIndication(): ListaggCountIndicationContext { + let localContext = new ListaggCountIndicationContext(this.context, this.state); + this.enterRule(localContext, 86, TrinoSqlParser.RULE_listaggCountIndication); + try { + this.state = 1668; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_WITH: + this.enterOuterAlt(localContext, 1); + { + this.state = 1664; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1665; + this.match(TrinoSqlParser.KW_COUNT); + } + break; + case TrinoSqlParser.KW_WITHOUT: + this.enterOuterAlt(localContext, 2); + { + this.state = 1666; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 1667; + this.match(TrinoSqlParser.KW_COUNT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public patternRecognition(): PatternRecognitionContext { let localContext = new PatternRecognitionContext(this.context, this.state); - this.enterRule(localContext, 78, TrinoSqlParser.RULE_patternRecognition); + this.enterRule(localContext, 88, TrinoSqlParser.RULE_patternRecognition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1443; + this.state = 1670; this.aliasedRelation(); - this.state = 1526; + this.state = 1753; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 203, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 216, this.context) ) { case 1: { - this.state = 1444; + this.state = 1671; this.match(TrinoSqlParser.KW_MATCH_RECOGNIZE); - this.state = 1445; + this.state = 1672; this.match(TrinoSqlParser.T__0); - this.state = 1456; + this.state = 1683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 163) { + if (_la === 201) { { - this.state = 1446; + this.state = 1673; this.match(TrinoSqlParser.KW_PARTITION); - this.state = 1447; + this.state = 1674; this.match(TrinoSqlParser.KW_BY); - this.state = 1448; + this.state = 1675; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); - this.state = 1453; + this.state = 1680; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1449; + this.state = 1676; this.match(TrinoSqlParser.T__2); - this.state = 1450; + this.state = 1677; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); } } - this.state = 1455; + this.state = 1682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1468; + this.state = 1695; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 158) { + if (_la === 195) { { - this.state = 1458; + this.state = 1685; this.match(TrinoSqlParser.KW_ORDER); - this.state = 1459; + this.state = 1686; this.match(TrinoSqlParser.KW_BY); - this.state = 1460; + this.state = 1687; this.sortItem(); - this.state = 1465; + this.state = 1692; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1461; + this.state = 1688; this.match(TrinoSqlParser.T__2); - this.state = 1462; + this.state = 1689; this.sortItem(); } } - this.state = 1467; + this.state = 1694; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1479; + this.state = 1706; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 134) { + if (_la === 168) { { - this.state = 1470; + this.state = 1697; this.match(TrinoSqlParser.KW_MEASURES); - this.state = 1471; + this.state = 1698; this.measureDefinition(); - this.state = 1476; + this.state = 1703; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1472; + this.state = 1699; this.match(TrinoSqlParser.T__2); - this.state = 1473; + this.state = 1700; this.measureDefinition(); } } - this.state = 1478; + this.state = 1705; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1482; + this.state = 1709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 20 || _la === 154) { + if (_la === 22 || _la === 191) { { - this.state = 1481; + this.state = 1708; this.rowsPerMatch(); } } - this.state = 1487; + this.state = 1714; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 19) { + if (_la === 21) { { - this.state = 1484; + this.state = 1711; this.match(TrinoSqlParser.KW_AFTER); - this.state = 1485; + this.state = 1712; this.match(TrinoSqlParser.KW_MATCH); - this.state = 1486; + this.state = 1713; this.skipTo(); } } - this.state = 1490; + this.state = 1717; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 199) { + if (_la === 124 || _la === 247) { { - this.state = 1489; + this.state = 1716; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 199)) { + if(!(_la === 124 || _la === 247)) { this.errorHandler.recoverInline(this); } else { @@ -5693,87 +6391,87 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 1492; + this.state = 1719; this.match(TrinoSqlParser.KW_PATTERN); - this.state = 1493; + this.state = 1720; this.match(TrinoSqlParser.T__0); - this.state = 1494; + this.state = 1721; this.rowPattern(0); - this.state = 1495; + this.state = 1722; this.match(TrinoSqlParser.T__1); - this.state = 1505; + this.state = 1732; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 209) { + if (_la === 257) { { - this.state = 1496; + this.state = 1723; this.match(TrinoSqlParser.KW_SUBSET); - this.state = 1497; + this.state = 1724; this.subsetDefinition(); - this.state = 1502; + this.state = 1729; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1498; + this.state = 1725; this.match(TrinoSqlParser.T__2); - this.state = 1499; + this.state = 1726; this.subsetDefinition(); } } - this.state = 1504; + this.state = 1731; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1507; + this.state = 1734; this.match(TrinoSqlParser.KW_DEFINE); - this.state = 1508; + this.state = 1735; this.variableDefinition(); - this.state = 1513; + this.state = 1740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1509; + this.state = 1736; this.match(TrinoSqlParser.T__2); - this.state = 1510; + this.state = 1737; this.variableDefinition(); } } - this.state = 1515; + this.state = 1742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1516; + this.state = 1743; this.match(TrinoSqlParser.T__1); - this.state = 1524; + this.state = 1751; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 215, this.context) ) { case 1: { - this.state = 1518; + this.state = 1745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1517; + this.state = 1744; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1520; + this.state = 1747; this.identifier(); - this.state = 1522; + this.state = 1749; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 214, this.context) ) { case 1: { - this.state = 1521; + this.state = 1748; this.columnAliases(); } break; @@ -5802,15 +6500,15 @@ export class TrinoSqlParser extends SQLParserBase { } public measureDefinition(): MeasureDefinitionContext { let localContext = new MeasureDefinitionContext(this.context, this.state); - this.enterRule(localContext, 80, TrinoSqlParser.RULE_measureDefinition); + this.enterRule(localContext, 90, TrinoSqlParser.RULE_measureDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1528; + this.state = 1755; this.expression(); - this.state = 1529; + this.state = 1756; this.match(TrinoSqlParser.KW_AS); - this.state = 1530; + this.state = 1757; this.identifier(); } } @@ -5830,42 +6528,42 @@ export class TrinoSqlParser extends SQLParserBase { } public rowsPerMatch(): RowsPerMatchContext { let localContext = new RowsPerMatchContext(this.context, this.state); - this.enterRule(localContext, 82, TrinoSqlParser.RULE_rowsPerMatch); + this.enterRule(localContext, 92, TrinoSqlParser.RULE_rowsPerMatch); let _la: number; try { - this.state = 1543; + this.state = 1770; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ONE: this.enterOuterAlt(localContext, 1); { - this.state = 1532; + this.state = 1759; this.match(TrinoSqlParser.KW_ONE); - this.state = 1533; + this.state = 1760; this.match(TrinoSqlParser.KW_ROW); - this.state = 1534; + this.state = 1761; this.match(TrinoSqlParser.KW_PER); - this.state = 1535; + this.state = 1762; this.match(TrinoSqlParser.KW_MATCH); } break; case TrinoSqlParser.KW_ALL: this.enterOuterAlt(localContext, 2); { - this.state = 1536; + this.state = 1763; this.match(TrinoSqlParser.KW_ALL); - this.state = 1537; + this.state = 1764; this.match(TrinoSqlParser.KW_ROWS); - this.state = 1538; + this.state = 1765; this.match(TrinoSqlParser.KW_PER); - this.state = 1539; + this.state = 1766; this.match(TrinoSqlParser.KW_MATCH); - this.state = 1541; + this.state = 1768; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 152 || _la === 205 || _la === 243) { + if (_la === 189 || _la === 253 || _la === 304) { { - this.state = 1540; + this.state = 1767; this.emptyMatchHandling(); } } @@ -5892,41 +6590,41 @@ export class TrinoSqlParser extends SQLParserBase { } public emptyMatchHandling(): EmptyMatchHandlingContext { let localContext = new EmptyMatchHandlingContext(this.context, this.state); - this.enterRule(localContext, 84, TrinoSqlParser.RULE_emptyMatchHandling); + this.enterRule(localContext, 94, TrinoSqlParser.RULE_emptyMatchHandling); try { - this.state = 1554; + this.state = 1781; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_SHOW: this.enterOuterAlt(localContext, 1); { - this.state = 1545; + this.state = 1772; this.match(TrinoSqlParser.KW_SHOW); - this.state = 1546; + this.state = 1773; this.match(TrinoSqlParser.KW_EMPTY); - this.state = 1547; + this.state = 1774; this.match(TrinoSqlParser.KW_MATCHES); } break; case TrinoSqlParser.KW_OMIT: this.enterOuterAlt(localContext, 2); { - this.state = 1548; + this.state = 1775; this.match(TrinoSqlParser.KW_OMIT); - this.state = 1549; + this.state = 1776; this.match(TrinoSqlParser.KW_EMPTY); - this.state = 1550; + this.state = 1777; this.match(TrinoSqlParser.KW_MATCHES); } break; case TrinoSqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 1551; + this.state = 1778; this.match(TrinoSqlParser.KW_WITH); - this.state = 1552; + this.state = 1779; this.match(TrinoSqlParser.KW_UNMATCHED); - this.state = 1553; + this.state = 1780; this.match(TrinoSqlParser.KW_ROWS); } break; @@ -5950,71 +6648,71 @@ export class TrinoSqlParser extends SQLParserBase { } public skipTo(): SkipToContext { let localContext = new SkipToContext(this.context, this.state); - this.enterRule(localContext, 86, TrinoSqlParser.RULE_skipTo); + this.enterRule(localContext, 96, TrinoSqlParser.RULE_skipTo); try { - this.state = 1575; + this.state = 1802; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 207, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1556; + this.state = 1783; this.match(TrinoSqlParser.T__4); - this.state = 1557; + this.state = 1784; this.match(TrinoSqlParser.KW_TO); - this.state = 1558; + this.state = 1785; this.match(TrinoSqlParser.KW_NEXT); - this.state = 1559; + this.state = 1786; this.match(TrinoSqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1560; + this.state = 1787; this.match(TrinoSqlParser.T__4); - this.state = 1561; + this.state = 1788; this.match(TrinoSqlParser.KW_PAST); - this.state = 1562; + this.state = 1789; this.match(TrinoSqlParser.KW_LAST); - this.state = 1563; + this.state = 1790; this.match(TrinoSqlParser.KW_ROW); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1564; + this.state = 1791; this.match(TrinoSqlParser.T__4); - this.state = 1565; + this.state = 1792; this.match(TrinoSqlParser.KW_TO); - this.state = 1566; + this.state = 1793; this.match(TrinoSqlParser.KW_FIRST); - this.state = 1567; + this.state = 1794; this.identifier(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1568; + this.state = 1795; this.match(TrinoSqlParser.T__4); - this.state = 1569; + this.state = 1796; this.match(TrinoSqlParser.KW_TO); - this.state = 1570; + this.state = 1797; this.match(TrinoSqlParser.KW_LAST); - this.state = 1571; + this.state = 1798; this.identifier(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1572; + this.state = 1799; this.match(TrinoSqlParser.T__4); - this.state = 1573; + this.state = 1800; this.match(TrinoSqlParser.KW_TO); - this.state = 1574; + this.state = 1801; this.identifier(); } break; @@ -6036,38 +6734,38 @@ export class TrinoSqlParser extends SQLParserBase { } public subsetDefinition(): SubsetDefinitionContext { let localContext = new SubsetDefinitionContext(this.context, this.state); - this.enterRule(localContext, 88, TrinoSqlParser.RULE_subsetDefinition); + this.enterRule(localContext, 98, TrinoSqlParser.RULE_subsetDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1577; + this.state = 1804; localContext._name = this.identifier(); - this.state = 1578; + this.state = 1805; this.match(TrinoSqlParser.EQ); - this.state = 1579; + this.state = 1806; this.match(TrinoSqlParser.T__0); - this.state = 1580; + this.state = 1807; localContext._identifier = this.identifier(); localContext._union.push(localContext._identifier); - this.state = 1585; + this.state = 1812; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1581; + this.state = 1808; this.match(TrinoSqlParser.T__2); - this.state = 1582; + this.state = 1809; localContext._identifier = this.identifier(); localContext._union.push(localContext._identifier); } } - this.state = 1587; + this.state = 1814; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1588; + this.state = 1815; this.match(TrinoSqlParser.T__1); } } @@ -6087,15 +6785,15 @@ export class TrinoSqlParser extends SQLParserBase { } public variableDefinition(): VariableDefinitionContext { let localContext = new VariableDefinitionContext(this.context, this.state); - this.enterRule(localContext, 90, TrinoSqlParser.RULE_variableDefinition); + this.enterRule(localContext, 100, TrinoSqlParser.RULE_variableDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1590; + this.state = 1817; this.identifier(); - this.state = 1591; + this.state = 1818; this.match(TrinoSqlParser.KW_AS); - this.state = 1592; + this.state = 1819; this.expression(); } } @@ -6115,36 +6813,36 @@ export class TrinoSqlParser extends SQLParserBase { } public aliasedRelation(): AliasedRelationContext { let localContext = new AliasedRelationContext(this.context, this.state); - this.enterRule(localContext, 92, TrinoSqlParser.RULE_aliasedRelation); + this.enterRule(localContext, 102, TrinoSqlParser.RULE_aliasedRelation); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1594; + this.state = 1821; this.relationPrimary(); - this.state = 1602; + this.state = 1829; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 224, this.context) ) { case 1: { - this.state = 1596; + this.state = 1823; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1595; + this.state = 1822; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1598; + this.state = 1825; this.identifier(); - this.state = 1600; + this.state = 1827; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 223, this.context) ) { case 1: { - this.state = 1599; + this.state = 1826; this.columnAliases(); } break; @@ -6170,32 +6868,32 @@ export class TrinoSqlParser extends SQLParserBase { } public columnListCreate(): ColumnListCreateContext { let localContext = new ColumnListCreateContext(this.context, this.state); - this.enterRule(localContext, 94, TrinoSqlParser.RULE_columnListCreate); + this.enterRule(localContext, 104, TrinoSqlParser.RULE_columnListCreate); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1604; + this.state = 1831; this.match(TrinoSqlParser.T__0); - this.state = 1605; + this.state = 1832; this.columnNameCreate(); - this.state = 1610; + this.state = 1837; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1606; + this.state = 1833; this.match(TrinoSqlParser.T__2); - this.state = 1607; + this.state = 1834; this.columnNameCreate(); } } - this.state = 1612; + this.state = 1839; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1613; + this.state = 1840; this.match(TrinoSqlParser.T__1); } } @@ -6215,32 +6913,32 @@ export class TrinoSqlParser extends SQLParserBase { } public columnList(): ColumnListContext { let localContext = new ColumnListContext(this.context, this.state); - this.enterRule(localContext, 96, TrinoSqlParser.RULE_columnList); + this.enterRule(localContext, 106, TrinoSqlParser.RULE_columnList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1615; + this.state = 1842; this.match(TrinoSqlParser.T__0); - this.state = 1616; - this.columnName(); - this.state = 1621; + this.state = 1843; + this.columnRef(); + this.state = 1848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1617; + this.state = 1844; this.match(TrinoSqlParser.T__2); - this.state = 1618; - this.columnName(); + this.state = 1845; + this.columnRef(); } } - this.state = 1623; + this.state = 1850; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1624; + this.state = 1851; this.match(TrinoSqlParser.T__1); } } @@ -6260,32 +6958,32 @@ export class TrinoSqlParser extends SQLParserBase { } public columnAliases(): ColumnAliasesContext { let localContext = new ColumnAliasesContext(this.context, this.state); - this.enterRule(localContext, 98, TrinoSqlParser.RULE_columnAliases); + this.enterRule(localContext, 108, TrinoSqlParser.RULE_columnAliases); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1626; + this.state = 1853; this.match(TrinoSqlParser.T__0); - this.state = 1627; + this.state = 1854; this.identifier(); - this.state = 1632; + this.state = 1859; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1628; + this.state = 1855; this.match(TrinoSqlParser.T__2); - this.state = 1629; + this.state = 1856; this.identifier(); } } - this.state = 1634; + this.state = 1861; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1635; + this.state = 1862; this.match(TrinoSqlParser.T__1); } } @@ -6305,29 +7003,39 @@ export class TrinoSqlParser extends SQLParserBase { } public relationPrimary(): RelationPrimaryContext { let localContext = new RelationPrimaryContext(this.context, this.state); - this.enterRule(localContext, 100, TrinoSqlParser.RULE_relationPrimary); + this.enterRule(localContext, 110, TrinoSqlParser.RULE_relationPrimary); let _la: number; try { - this.state = 1666; + this.state = 1935; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 217, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 234, this.context) ) { case 1: - localContext = new TableOrViewRelationContext(localContext); + localContext = new TableNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1637; + this.state = 1864; this.tableOrViewName(); + this.state = 1866; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 228, this.context) ) { + case 1: + { + this.state = 1865; + this.queryPeriod(); + } + break; + } } break; case 2: localContext = new SubqueryRelationContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1638; + this.state = 1868; this.match(TrinoSqlParser.T__0); - this.state = 1639; + this.state = 1869; this.query(); - this.state = 1640; + this.state = 1870; this.match(TrinoSqlParser.T__1); } break; @@ -6335,38 +7043,38 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UnnestContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1642; + this.state = 1872; this.match(TrinoSqlParser.KW_UNNEST); - this.state = 1643; + this.state = 1873; this.match(TrinoSqlParser.T__0); - this.state = 1644; + this.state = 1874; this.expression(); - this.state = 1649; + this.state = 1879; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1645; + this.state = 1875; this.match(TrinoSqlParser.T__2); - this.state = 1646; + this.state = 1876; this.expression(); } } - this.state = 1651; + this.state = 1881; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1652; + this.state = 1882; this.match(TrinoSqlParser.T__1); - this.state = 1655; + this.state = 1885; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 216, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { - this.state = 1653; + this.state = 1883; this.match(TrinoSqlParser.KW_WITH); - this.state = 1654; + this.state = 1884; this.match(TrinoSqlParser.KW_ORDINALITY); } break; @@ -6377,25 +7085,128 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new LateralContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1657; + this.state = 1887; this.match(TrinoSqlParser.KW_LATERAL); - this.state = 1658; + this.state = 1888; this.match(TrinoSqlParser.T__0); - this.state = 1659; + this.state = 1889; this.query(); - this.state = 1660; + this.state = 1890; this.match(TrinoSqlParser.T__1); } break; case 5: - localContext = new ParenthesizedRelationContext(localContext); + localContext = new TableFunctionInvocationContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1662; + this.state = 1892; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 1893; + this.match(TrinoSqlParser.T__0); + this.state = 1894; + this.tableFunctionCall(); + this.state = 1895; + this.match(TrinoSqlParser.T__1); + } + break; + case 6: + localContext = new ParenthesizedRelationContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 1897; this.match(TrinoSqlParser.T__0); - this.state = 1663; + this.state = 1898; this.relation(0); - this.state = 1664; + this.state = 1899; + this.match(TrinoSqlParser.T__1); + } + break; + case 7: + localContext = new JsonTableContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 1901; + this.match(TrinoSqlParser.KW_JSON_TABLE); + this.state = 1902; + this.match(TrinoSqlParser.T__0); + this.state = 1903; + this.jsonPathInvocation(); + this.state = 1904; + this.match(TrinoSqlParser.KW_COLUMNS); + this.state = 1905; + this.match(TrinoSqlParser.T__0); + this.state = 1906; + this.jsonTableColumn(); + this.state = 1911; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 1907; + this.match(TrinoSqlParser.T__2); + this.state = 1908; + this.jsonTableColumn(); + } + } + this.state = 1913; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 1914; + this.match(TrinoSqlParser.T__1); + this.state = 1926; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { + case 1: + { + this.state = 1915; + this.match(TrinoSqlParser.KW_PLAN); + this.state = 1916; + this.match(TrinoSqlParser.T__0); + this.state = 1917; + this.jsonTableSpecificPlan(); + this.state = 1918; + this.match(TrinoSqlParser.T__1); + } + break; + case 2: + { + this.state = 1920; + this.match(TrinoSqlParser.KW_PLAN); + this.state = 1921; + this.match(TrinoSqlParser.KW_DEFAULT); + this.state = 1922; + this.match(TrinoSqlParser.T__0); + this.state = 1923; + this.jsonTableDefaultPlan(); + this.state = 1924; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 1931; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 85 || _la === 89) { + { + this.state = 1928; + _la = this.tokenStream.LA(1); + if(!(_la === 85 || _la === 89)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1929; + this.match(TrinoSqlParser.KW_ON); + this.state = 1930; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + this.state = 1933; this.match(TrinoSqlParser.T__1); } break; @@ -6415,14 +7226,231 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public expression(): ExpressionContext { - let localContext = new ExpressionContext(this.context, this.state); - this.enterRule(localContext, 102, TrinoSqlParser.RULE_expression); + public jsonTableColumn(): JsonTableColumnContext { + let localContext = new JsonTableColumnContext(this.context, this.state); + this.enterRule(localContext, 112, TrinoSqlParser.RULE_jsonTableColumn); + let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1668; - this.booleanExpression(0); + this.state = 2014; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { + case 1: + localContext = new OrdinalityColumnContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 1937; + this.identifier(); + this.state = 1938; + this.match(TrinoSqlParser.KW_FOR); + this.state = 1939; + this.match(TrinoSqlParser.KW_ORDINALITY); + } + break; + case 2: + localContext = new ValueColumnContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 1941; + this.identifier(); + this.state = 1942; + this.type_(0); + this.state = 1945; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 1943; + this.match(TrinoSqlParser.KW_PATH); + this.state = 1944; + this.string_(); + } + } + + this.state = 1951; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 236, this.context) ) { + case 1: + { + this.state = 1947; + (localContext as ValueColumnContext)._emptyBehavior = this.jsonValueBehavior(); + this.state = 1948; + this.match(TrinoSqlParser.KW_ON); + this.state = 1949; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + } + this.state = 1957; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 70 || _la === 89 || _la === 183) { + { + this.state = 1953; + (localContext as ValueColumnContext)._errorBehavior = this.jsonValueBehavior(); + this.state = 1954; + this.match(TrinoSqlParser.KW_ON); + this.state = 1955; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + } + break; + case 3: + localContext = new QueryColumnContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 1959; + this.identifier(); + this.state = 1960; + this.type_(0); + this.state = 1961; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 1962; + this.jsonRepresentation(); + this.state = 1965; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 1963; + this.match(TrinoSqlParser.KW_PATH); + this.state = 1964; + this.string_(); + } + } + + this.state = 1970; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 304 || _la === 306) { + { + this.state = 1967; + this.jsonQueryWrapperBehavior(); + this.state = 1968; + this.match(TrinoSqlParser.KW_WRAPPER); + } + } + + this.state = 1979; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 144 || _la === 189) { + { + this.state = 1972; + _la = this.tokenStream.LA(1); + if(!(_la === 144 || _la === 189)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1973; + this.match(TrinoSqlParser.KW_QUOTES); + this.state = 1977; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190) { + { + this.state = 1974; + this.match(TrinoSqlParser.KW_ON); + this.state = 1975; + this.match(TrinoSqlParser.KW_SCALAR); + this.state = 1976; + this.match(TrinoSqlParser.KW_TEXT_STRING); + } + } + + } + } + + this.state = 1985; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { + case 1: + { + this.state = 1981; + (localContext as QueryColumnContext)._emptyBehavior = this.jsonQueryBehavior(); + this.state = 1982; + this.match(TrinoSqlParser.KW_ON); + this.state = 1983; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + } + this.state = 1991; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 85 || _la === 89 || _la === 183) { + { + this.state = 1987; + (localContext as QueryColumnContext)._errorBehavior = this.jsonQueryBehavior(); + this.state = 1988; + this.match(TrinoSqlParser.KW_ON); + this.state = 1989; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + } + break; + case 4: + localContext = new NestedColumnsContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 1993; + this.match(TrinoSqlParser.KW_NESTED); + this.state = 1995; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 1994; + this.match(TrinoSqlParser.KW_PATH); + } + } + + this.state = 1997; + this.string_(); + this.state = 2000; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 28) { + { + this.state = 1998; + this.match(TrinoSqlParser.KW_AS); + this.state = 1999; + this.identifier(); + } + } + + this.state = 2002; + this.match(TrinoSqlParser.KW_COLUMNS); + this.state = 2003; + this.match(TrinoSqlParser.T__0); + this.state = 2004; + this.jsonTableColumn(); + this.state = 2009; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2005; + this.match(TrinoSqlParser.T__2); + this.state = 2006; + this.jsonTableColumn(); + } + } + this.state = 2011; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2012; + this.match(TrinoSqlParser.T__1); + } + break; } } catch (re) { @@ -6439,28 +7467,145 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - - public booleanExpression(): BooleanExpressionContext; - public booleanExpression(_p: number): BooleanExpressionContext; - public booleanExpression(_p?: number): BooleanExpressionContext { - if (_p === undefined) { - _p = 0; + public jsonTableSpecificPlan(): JsonTableSpecificPlanContext { + let localContext = new JsonTableSpecificPlanContext(this.context, this.state); + this.enterRule(localContext, 114, TrinoSqlParser.RULE_jsonTableSpecificPlan); + let _la: number; + try { + this.state = 2041; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) { + case 1: + localContext = new LeafPlanContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 2016; + this.jsonTablePathName(); + } + break; + case 2: + localContext = new JoinPlanContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 2017; + this.jsonTablePathName(); + this.state = 2018; + _la = this.tokenStream.LA(1); + if(!(_la === 125 || _la === 197)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2019; + this.planPrimary(); + } + break; + case 3: + localContext = new UnionPlanContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 2021; + this.planPrimary(); + this.state = 2022; + this.match(TrinoSqlParser.KW_UNION); + this.state = 2023; + this.planPrimary(); + this.state = 2028; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 281) { + { + { + this.state = 2024; + this.match(TrinoSqlParser.KW_UNION); + this.state = 2025; + this.planPrimary(); + } + } + this.state = 2030; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + break; + case 4: + localContext = new CrossPlanContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 2031; + this.planPrimary(); + this.state = 2032; + this.match(TrinoSqlParser.KW_CROSS); + this.state = 2033; + this.planPrimary(); + this.state = 2038; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 54) { + { + { + this.state = 2034; + this.match(TrinoSqlParser.KW_CROSS); + this.state = 2035; + this.planPrimary(); + } + } + this.state = 2040; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + break; + } } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new BooleanExpressionContext(this.context, parentState); - let previousContext = localContext; - let _startState = 104; - this.enterRecursionRule(localContext, 104, TrinoSqlParser.RULE_booleanExpression, _p); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonTablePathName(): JsonTablePathNameContext { + let localContext = new JsonTablePathNameContext(this.context, this.state); + this.enterRule(localContext, 116, TrinoSqlParser.RULE_jsonTablePathName); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1677; + this.state = 2043; + this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public planPrimary(): PlanPrimaryContext { + let localContext = new PlanPrimaryContext(this.context, this.state); + this.enterRule(localContext, 118, TrinoSqlParser.RULE_planPrimary); + try { + this.state = 2050; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.T__0: + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -6471,57 +7616,61 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: - case TrinoSqlParser.KW_CASE: - case TrinoSqlParser.KW_CAST: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: - case TrinoSqlParser.KW_CURRENT_CATALOG: - case TrinoSqlParser.KW_CURRENT_DATE: - case TrinoSqlParser.KW_CURRENT_PATH: - case TrinoSqlParser.KW_CURRENT_SCHEMA: - case TrinoSqlParser.KW_CURRENT_TIME: - case TrinoSqlParser.KW_CURRENT_TIMESTAMP: - case TrinoSqlParser.KW_CURRENT_USER: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: - case TrinoSqlParser.KW_EXISTS: case TrinoSqlParser.KW_EXPLAIN: - case TrinoSqlParser.KW_EXTRACT: - case TrinoSqlParser.KW_FALSE: case TrinoSqlParser.KW_FETCH: case TrinoSqlParser.KW_FILTER: case TrinoSqlParser.KW_FINAL: case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: - case TrinoSqlParser.KW_GROUPING: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -6529,15 +7678,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: - case TrinoSqlParser.KW_LOCALTIME: - case TrinoSqlParser.KW_LOCALTIMESTAMP: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -6548,6 +7703,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -6555,10 +7711,10 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NFKD: case TrinoSqlParser.KW_NO: case TrinoSqlParser.KW_NONE: - case TrinoSqlParser.KW_NORMALIZE: - case TrinoSqlParser.KW_NULL: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -6567,27 +7723,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -6595,6 +7761,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -6614,128 +7781,67 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: - case TrinoSqlParser.KW_TRUE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: - case TrinoSqlParser.PLUS: - case TrinoSqlParser.MINUS: - case TrinoSqlParser.QUESTION_MARK: - case TrinoSqlParser.STRING: - case TrinoSqlParser.UNICODE_STRING: - case TrinoSqlParser.BINARY_LITERAL: - case TrinoSqlParser.INTEGER_VALUE: - case TrinoSqlParser.DECIMAL_VALUE: - case TrinoSqlParser.DOUBLE_VALUE: case TrinoSqlParser.IDENTIFIER: case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + this.enterOuterAlt(localContext, 1); { - localContext = new PredicatedContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 1671; - (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 1673; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { - case 1: - { - this.state = 1672; - this.predicate((localContext as PredicatedContext)._valueExpression); - } - break; - } + this.state = 2045; + this.jsonTablePathName(); } break; - case TrinoSqlParser.KW_NOT: + case TrinoSqlParser.T__0: + this.enterOuterAlt(localContext, 2); { - localContext = new LogicalNotContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1675; - this.match(TrinoSqlParser.KW_NOT); - this.state = 1676; - this.booleanExpression(3); + this.state = 2046; + this.match(TrinoSqlParser.T__0); + this.state = 2047; + this.jsonTableSpecificPlan(); + this.state = 2048; + this.match(TrinoSqlParser.T__1); } break; default: throw new antlr.NoViableAltException(this); } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 1687; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 1685; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { - case 1: - { - localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); - (localContext as LogicalBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); - this.state = 1679; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 1680; - (localContext as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.KW_AND); - this.state = 1681; - (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); - } - break; - case 2: - { - localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); - (localContext as LogicalBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); - this.state = 1682; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 1683; - (localContext as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.KW_OR); - this.state = 1684; - (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); - } - break; - } - } - } - this.state = 1689; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); - } - } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -6747,208 +7853,171 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.unrollRecursionContexts(parentContext); + this.exitRule(); } return localContext; } - public predicate(value: antlr.ParserRuleContext): PredicateContext { - let localContext = new PredicateContext(this.context, this.state, value); - this.enterRule(localContext, 106, TrinoSqlParser.RULE_predicate); + public jsonTableDefaultPlan(): JsonTableDefaultPlanContext { + let localContext = new JsonTableDefaultPlanContext(this.context, this.state); + this.enterRule(localContext, 120, TrinoSqlParser.RULE_jsonTableDefaultPlan); let _la: number; try { - this.state = 1751; + this.state = 2062; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { - case 1: - localContext = new ComparisonContext(localContext); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_INNER: + case TrinoSqlParser.KW_OUTER: this.enterOuterAlt(localContext, 1); { - this.state = 1690; - this.comparisonOperator(); - this.state = 1691; - (localContext as ComparisonContext)._right = this.valueExpression(0); + this.state = 2052; + _la = this.tokenStream.LA(1); + if(!(_la === 125 || _la === 197)) { + this.errorHandler.recoverInline(this); } - break; - case 2: - localContext = new QuantifiedComparisonContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 1693; - this.comparisonOperator(); - this.state = 1694; - this.comparisonQuantifier(); - this.state = 1695; - this.match(TrinoSqlParser.T__0); - this.state = 1696; - this.query(); - this.state = 1697; - this.match(TrinoSqlParser.T__1); + else { + this.errorHandler.reportMatch(this); + this.consume(); } - break; - case 3: - localContext = new BetweenContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 1700; + this.state = 2055; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + if (_la === 3) { { - this.state = 1699; - this.match(TrinoSqlParser.KW_NOT); + this.state = 2053; + this.match(TrinoSqlParser.T__2); + this.state = 2054; + _la = this.tokenStream.LA(1); + if(!(_la === 54 || _la === 281)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } - this.state = 1702; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 1703; - (localContext as BetweenContext)._lower = this.valueExpression(0); - this.state = 1704; - this.match(TrinoSqlParser.KW_AND); - this.state = 1705; - (localContext as BetweenContext)._upper = this.valueExpression(0); } break; - case 4: - localContext = new InListContext(localContext); - this.enterOuterAlt(localContext, 4); + case TrinoSqlParser.KW_CROSS: + case TrinoSqlParser.KW_UNION: + this.enterOuterAlt(localContext, 2); { - this.state = 1708; - this.errorHandler.sync(this); + this.state = 2057; _la = this.tokenStream.LA(1); - if (_la === 147) { - { - this.state = 1707; - this.match(TrinoSqlParser.KW_NOT); - } + if(!(_la === 54 || _la === 281)) { + this.errorHandler.recoverInline(this); } - - this.state = 1710; - this.match(TrinoSqlParser.KW_IN); - this.state = 1711; - this.match(TrinoSqlParser.T__0); - this.state = 1712; - this.expression(); - this.state = 1717; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2060; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { - { + if (_la === 3) { { - this.state = 1713; + this.state = 2058; this.match(TrinoSqlParser.T__2); - this.state = 1714; - this.expression(); - } - } - this.state = 1719; - this.errorHandler.sync(this); + this.state = 2059; _la = this.tokenStream.LA(1); - } - this.state = 1720; - this.match(TrinoSqlParser.T__1); - } - break; - case 5: - localContext = new InSubqueryContext(localContext); - this.enterOuterAlt(localContext, 5); - { - this.state = 1723; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 147) { - { - this.state = 1722; - this.match(TrinoSqlParser.KW_NOT); + if(!(_la === 125 || _la === 197)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } - this.state = 1725; - this.match(TrinoSqlParser.KW_IN); - this.state = 1726; - this.match(TrinoSqlParser.T__0); - this.state = 1727; - this.query(); - this.state = 1728; - this.match(TrinoSqlParser.T__1); } break; - case 6: - localContext = new LikeContext(localContext); - this.enterOuterAlt(localContext, 6); + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableFunctionCall(): TableFunctionCallContext { + let localContext = new TableFunctionCallContext(this.context, this.state); + this.enterRule(localContext, 122, TrinoSqlParser.RULE_tableFunctionCall); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2064; + this.functionName(); + this.state = 2065; + this.match(TrinoSqlParser.T__0); + this.state = 2074; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { + case 1: { - this.state = 1731; + this.state = 2066; + this.tableFunctionArgument(); + this.state = 2071; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + while (_la === 3) { { - this.state = 1730; - this.match(TrinoSqlParser.KW_NOT); - } - } - - this.state = 1733; - this.match(TrinoSqlParser.KW_LIKE); - this.state = 1734; - (localContext as LikeContext)._pattern = this.valueExpression(0); - this.state = 1737; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 227, this.context) ) { - case 1: { - this.state = 1735; - this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 1736; - (localContext as LikeContext)._escape = this.valueExpression(0); + this.state = 2067; + this.match(TrinoSqlParser.T__2); + this.state = 2068; + this.tableFunctionArgument(); } - break; - } - } - break; - case 7: - localContext = new NullPredicateContext(localContext); - this.enterOuterAlt(localContext, 7); - { - this.state = 1739; - this.match(TrinoSqlParser.KW_IS); - this.state = 1741; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 147) { - { - this.state = 1740; - this.match(TrinoSqlParser.KW_NOT); } + this.state = 2073; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 1743; - this.match(TrinoSqlParser.KW_NULL); } break; - case 8: - localContext = new DistinctFromContext(localContext); - this.enterOuterAlt(localContext, 8); + } + this.state = 2085; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 52) { { - this.state = 1744; - this.match(TrinoSqlParser.KW_IS); - this.state = 1746; + this.state = 2076; + this.match(TrinoSqlParser.KW_COPARTITION); + this.state = 2077; + this.copartitionTables(); + this.state = 2082; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + while (_la === 3) { { - this.state = 1745; - this.match(TrinoSqlParser.KW_NOT); + { + this.state = 2078; + this.match(TrinoSqlParser.T__2); + this.state = 2079; + this.copartitionTables(); } + } + this.state = 2084; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 1748; - this.match(TrinoSqlParser.KW_DISTINCT); - this.state = 1749; - this.match(TrinoSqlParser.KW_FROM); - this.state = 1750; - (localContext as DistinctFromContext)._right = this.valueExpression(0); } - break; + } + + this.state = 2087; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -6965,153 +8034,45 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - - public valueExpression(): ValueExpressionContext; - public valueExpression(_p: number): ValueExpressionContext; - public valueExpression(_p?: number): ValueExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new ValueExpressionContext(this.context, parentState); - let previousContext = localContext; - let _startState = 108; - this.enterRecursionRule(localContext, 108, TrinoSqlParser.RULE_valueExpression, _p); - let _la: number; + public tableFunctionArgument(): TableFunctionArgumentContext { + let localContext = new TableFunctionArgumentContext(this.context, this.state); + this.enterRule(localContext, 124, TrinoSqlParser.RULE_tableFunctionArgument); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1757; + this.state = 2092; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 259, this.context) ) { case 1: { - localContext = new ValueExpressionDefaultContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 1754; - this.primaryExpression(0); + this.state = 2089; + this.identifier(); + this.state = 2090; + this.match(TrinoSqlParser.T__5); } break; - case 2: + } + this.state = 2097; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 260, this.context) ) { + case 1: { - localContext = new ArithmeticUnaryContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1755; - (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 255 || _la === 256)) { - (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 2094; + this.tableArgument(); } - this.state = 1756; - this.valueExpression(4); + break; + case 2: + { + this.state = 2095; + this.descriptorArgument(); } break; - } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 1773; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 1771; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { - case 1: - { - localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); - (localContext as ArithmeticBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1759; - if (!(this.precpred(this.context, 3))) { - throw this.createFailedPredicateException("this.precpred(this.context, 3)"); - } - this.state = 1760; - (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 7) !== 0))) { - (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 1761; - (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); - } - break; - case 2: - { - localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); - (localContext as ArithmeticBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1762; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 1763; - (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 255 || _la === 256)) { - (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 1764; - (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); - } - break; - case 3: - { - localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); - (localContext as ConcatenationContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1765; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 1766; - this.match(TrinoSqlParser.CONCAT); - this.state = 1767; - (localContext as ConcatenationContext)._right = this.valueExpression(2); - } - break; - case 4: - { - localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1768; - if (!(this.precpred(this.context, 5))) { - throw this.createFailedPredicateException("this.precpred(this.context, 5)"); - } - this.state = 1769; - this.match(TrinoSqlParser.KW_AT); - this.state = 1770; - this.timeZoneSpecifier(); - } - break; - } - } + case 3: + { + this.state = 2096; + this.expression(); } - this.state = 1775; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + break; } } } @@ -7125,879 +8086,772 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.unrollRecursionContexts(parentContext); + this.exitRule(); } return localContext; } - - public primaryExpression(): PrimaryExpressionContext; - public primaryExpression(_p: number): PrimaryExpressionContext; - public primaryExpression(_p?: number): PrimaryExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new PrimaryExpressionContext(this.context, parentState); - let previousContext = localContext; - let _startState = 110; - this.enterRecursionRule(localContext, 110, TrinoSqlParser.RULE_primaryExpression, _p); + public tableArgument(): TableArgumentContext { + let localContext = new TableArgumentContext(this.context, this.state); + this.enterRule(localContext, 126, TrinoSqlParser.RULE_tableArgument); let _la: number; try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2025; + this.state = 2099; + this.tableArgumentRelation(); + this.state = 2117; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 201) { { - localContext = new NullLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 1777; - this.match(TrinoSqlParser.KW_NULL); - } - break; - case 2: - { - localContext = new IntervalLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1778; - this.interval(); - } - break; - case 3: - { - localContext = new TypeConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1779; - this.identifier(); - this.state = 1780; - this.string_(); - } - break; - case 4: - { - localContext = new TypeConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1782; - this.match(TrinoSqlParser.KW_DOUBLE); - this.state = 1783; - this.match(TrinoSqlParser.KW_PRECISION); - this.state = 1784; - this.string_(); - } - break; - case 5: - { - localContext = new NumericLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1785; - this.number_(); - } - break; - case 6: - { - localContext = new BooleanLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1786; - this.booleanValue(); - } - break; - case 7: - { - localContext = new StringLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1787; - this.string_(); - } - break; - case 8: - { - localContext = new BinaryLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1788; - this.match(TrinoSqlParser.BINARY_LITERAL); - } - break; - case 9: - { - localContext = new ParameterContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1789; - this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - case 10: - { - localContext = new PositionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1790; - this.match(TrinoSqlParser.KW_POSITION); - this.state = 1791; - this.match(TrinoSqlParser.T__0); - this.state = 1792; - this.valueExpression(0); - this.state = 1793; - this.match(TrinoSqlParser.KW_IN); - this.state = 1794; - this.valueExpression(0); - this.state = 1795; - this.match(TrinoSqlParser.T__1); - } - break; - case 11: - { - localContext = new RowConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1797; - this.match(TrinoSqlParser.T__0); - this.state = 1798; - this.expression(); - this.state = 1801; + this.state = 2100; + this.match(TrinoSqlParser.KW_PARTITION); + this.state = 2101; + this.match(TrinoSqlParser.KW_BY); + this.state = 2115; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { + case 1: { - this.state = 1799; - this.match(TrinoSqlParser.T__2); - this.state = 1800; - this.expression(); - } - } - this.state = 1803; + this.state = 2102; + this.match(TrinoSqlParser.T__0); + this.state = 2111; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 3); - this.state = 1805; - this.match(TrinoSqlParser.T__1); - } - break; - case 12: - { - localContext = new RowConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1807; - this.match(TrinoSqlParser.KW_ROW); - this.state = 1808; - this.match(TrinoSqlParser.T__0); - this.state = 1809; - this.expression(); - this.state = 1814; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 1810; - this.match(TrinoSqlParser.T__2); - this.state = 1811; - this.expression(); - } + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + { + this.state = 2103; + this.expression(); + this.state = 2108; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2104; + this.match(TrinoSqlParser.T__2); + this.state = 2105; + this.expression(); + } + } + this.state = 2110; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - this.state = 1816; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 1817; - this.match(TrinoSqlParser.T__1); - } - break; - case 13: - { - localContext = new FunctionCallContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1819; - this.functionName(); - this.state = 1820; - this.match(TrinoSqlParser.T__0); - this.state = 1821; - this.match(TrinoSqlParser.ASTERISK); - this.state = 1822; - this.match(TrinoSqlParser.T__1); - this.state = 1824; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 236, this.context) ) { - case 1: - { - this.state = 1823; - this.filter(); + + this.state = 2113; + this.match(TrinoSqlParser.T__1); } break; - } - this.state = 1827; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { - case 1: + case 2: { - this.state = 1826; - this.over(); + this.state = 2114; + this.expression(); } break; } } + } + + this.state = 2125; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_PRUNE: + { + this.state = 2119; + this.match(TrinoSqlParser.KW_PRUNE); + this.state = 2120; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2121; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + case TrinoSqlParser.KW_KEEP: + { + this.state = 2122; + this.match(TrinoSqlParser.KW_KEEP); + this.state = 2123; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2124; + this.match(TrinoSqlParser.KW_EMPTY); + } break; - case 14: + case TrinoSqlParser.T__1: + case TrinoSqlParser.T__2: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_ORDER: + break; + default: + break; + } + this.state = 2143; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 195) { { - localContext = new FunctionCallContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1830; + this.state = 2127; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 2128; + this.match(TrinoSqlParser.KW_BY); + this.state = 2141; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { case 1: { - this.state = 1829; - this.processingMode(); - } - break; - } - this.state = 1832; - this.functionName(); - this.state = 1833; - this.match(TrinoSqlParser.T__0); - this.state = 1845; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217679) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { - { - this.state = 1835; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 239, this.context) ) { - case 1: - { - this.state = 1834; - this.setQuantifier(); - } - break; - } - this.state = 1837; - this.expression(); - this.state = 1842; + this.state = 2129; + this.match(TrinoSqlParser.T__0); + this.state = 2130; + this.sortItem(); + this.state = 2135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1838; + this.state = 2131; this.match(TrinoSqlParser.T__2); - this.state = 1839; - this.expression(); + this.state = 2132; + this.sortItem(); } } - this.state = 1844; + this.state = 2137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 2138; + this.match(TrinoSqlParser.T__1); } - } - - this.state = 1857; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 158) { + break; + case 2: { - this.state = 1847; - this.match(TrinoSqlParser.KW_ORDER); - this.state = 1848; - this.match(TrinoSqlParser.KW_BY); - this.state = 1849; + this.state = 2140; this.sortItem(); - this.state = 1854; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 1850; - this.match(TrinoSqlParser.T__2); - this.state = 1851; - this.sortItem(); - } - } - this.state = 1856; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } } + break; } + } + } - this.state = 1859; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableArgumentRelation(): TableArgumentRelationContext { + let localContext = new TableArgumentRelationContext(this.context, this.state); + this.enterRule(localContext, 128, TrinoSqlParser.RULE_tableArgumentRelation); + let _la: number; + try { + this.state = 2171; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { + case 1: + localContext = new TableArgumentTableContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 2145; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 2146; + this.match(TrinoSqlParser.T__0); + this.state = 2147; + this.tableRef(); + this.state = 2148; this.match(TrinoSqlParser.T__1); - this.state = 1861; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { - case 1: - { - this.state = 1860; - this.filter(); - } - break; - } - this.state = 1867; + this.state = 2156; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 246, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { case 1: { - this.state = 1864; + this.state = 2150; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 102 || _la === 184) { + if (_la === 28) { { - this.state = 1863; - this.nullTreatment(); + this.state = 2149; + this.match(TrinoSqlParser.KW_AS); } } - this.state = 1866; - this.over(); - } - break; - } - } - break; - case 15: - { - localContext = new MeasureContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1869; - this.identifier(); - this.state = 1870; - this.over(); - } - break; - case 16: - { - localContext = new LambdaContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1872; - this.identifier(); - this.state = 1873; - this.match(TrinoSqlParser.T__5); - this.state = 1874; - this.expression(); - } - break; - case 17: - { - localContext = new LambdaContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1876; - this.match(TrinoSqlParser.T__0); - this.state = 1885; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140014511) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & 15) !== 0)) { - { - this.state = 1877; + this.state = 2152; this.identifier(); - this.state = 1882; + this.state = 2154; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 1) { { - { - this.state = 1878; - this.match(TrinoSqlParser.T__2); - this.state = 1879; - this.identifier(); - } + this.state = 2153; + this.columnAliases(); } - this.state = 1884; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } } - } - this.state = 1887; - this.match(TrinoSqlParser.T__1); - this.state = 1888; - this.match(TrinoSqlParser.T__5); - this.state = 1889; - this.expression(); + } + break; } - break; - case 18: - { - localContext = new SubqueryExpressionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1890; - this.match(TrinoSqlParser.T__0); - this.state = 1891; - this.query(); - this.state = 1892; - this.match(TrinoSqlParser.T__1); } break; - case 19: + case 2: + localContext = new TableArgumentQueryContext(localContext); + this.enterOuterAlt(localContext, 2); { - localContext = new ExistsContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1894; - this.match(TrinoSqlParser.KW_EXISTS); - this.state = 1895; + this.state = 2158; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 2159; this.match(TrinoSqlParser.T__0); - this.state = 1896; + this.state = 2160; this.query(); - this.state = 1897; + this.state = 2161; this.match(TrinoSqlParser.T__1); - } - break; - case 20: - { - localContext = new SimpleCaseContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1899; - this.match(TrinoSqlParser.KW_CASE); - this.state = 1900; - (localContext as SimpleCaseContext)._operand = this.expression(); - this.state = 1902; + this.state = 2169; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { + case 1: { - this.state = 1901; - this.whenClause(); - } + this.state = 2163; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 28) { + { + this.state = 2162; + this.match(TrinoSqlParser.KW_AS); + } } - this.state = 1904; + + this.state = 2165; + this.identifier(); + this.state = 2167; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 240); - this.state = 1908; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 70) { - { - this.state = 1906; - this.match(TrinoSqlParser.KW_ELSE); - this.state = 1907; - (localContext as SimpleCaseContext)._elseExpression = this.expression(); + if (_la === 1) { + { + this.state = 2166; + this.columnAliases(); + } } - } - this.state = 1910; - this.match(TrinoSqlParser.KW_END); + } + break; + } } break; - case 21: + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public descriptorArgument(): DescriptorArgumentContext { + let localContext = new DescriptorArgumentContext(this.context, this.state); + this.enterRule(localContext, 130, TrinoSqlParser.RULE_descriptorArgument); + let _la: number; + try { + this.state = 2191; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_DESCRIPTOR: + this.enterOuterAlt(localContext, 1); { - localContext = new SearchedCaseContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1912; - this.match(TrinoSqlParser.KW_CASE); - this.state = 1914; + this.state = 2173; + this.match(TrinoSqlParser.KW_DESCRIPTOR); + this.state = 2174; + this.match(TrinoSqlParser.T__0); + this.state = 2175; + this.descriptorField(); + this.state = 2180; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - do { + while (_la === 3) { { { - this.state = 1913; - this.whenClause(); + this.state = 2176; + this.match(TrinoSqlParser.T__2); + this.state = 2177; + this.descriptorField(); } } - this.state = 1916; + this.state = 2182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 240); - this.state = 1920; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 70) { - { - this.state = 1918; - this.match(TrinoSqlParser.KW_ELSE); - this.state = 1919; - (localContext as SearchedCaseContext)._elseExpression = this.expression(); - } - } - - this.state = 1922; - this.match(TrinoSqlParser.KW_END); } - break; - case 22: - { - localContext = new CastContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1924; - this.match(TrinoSqlParser.KW_CAST); - this.state = 1925; - this.match(TrinoSqlParser.T__0); - this.state = 1926; - this.expression(); - this.state = 1927; - this.match(TrinoSqlParser.KW_AS); - this.state = 1928; - this.type_(0); - this.state = 1929; + this.state = 2183; this.match(TrinoSqlParser.T__1); } break; - case 23: + case TrinoSqlParser.KW_CAST: + this.enterOuterAlt(localContext, 2); { - localContext = new CastContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1931; - this.match(TrinoSqlParser.KW_TRY_CAST); - this.state = 1932; + this.state = 2185; + this.match(TrinoSqlParser.KW_CAST); + this.state = 2186; this.match(TrinoSqlParser.T__0); - this.state = 1933; - this.expression(); - this.state = 1934; + this.state = 2187; + this.match(TrinoSqlParser.KW_NULL); + this.state = 2188; this.match(TrinoSqlParser.KW_AS); - this.state = 1935; - this.type_(0); - this.state = 1936; + this.state = 2189; + this.match(TrinoSqlParser.KW_DESCRIPTOR); + this.state = 2190; this.match(TrinoSqlParser.T__1); } break; - case 24: - { - localContext = new ArrayConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1938; - this.match(TrinoSqlParser.KW_ARRAY); - this.state = 1939; - this.match(TrinoSqlParser.T__6); - this.state = 1948; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217677) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { - { - this.state = 1940; - this.expression(); - this.state = 1945; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 1941; - this.match(TrinoSqlParser.T__2); - this.state = 1942; - this.expression(); - } - } - this.state = 1947; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - - this.state = 1950; - this.match(TrinoSqlParser.T__7); - } - break; - case 25: - { - localContext = new ColumnReferenceContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1951; - this.identifier(); - } - break; - case 26: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1952; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_DATE); - } - break; - case 27: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1953; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIME); - this.state = 1957; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 255, this.context) ) { - case 1: - { - this.state = 1954; - this.match(TrinoSqlParser.T__0); - this.state = 1955; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1956; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 28: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1959; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIMESTAMP); - this.state = 1963; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { - case 1: - { - this.state = 1960; - this.match(TrinoSqlParser.T__0); - this.state = 1961; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1962; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 29: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1965; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_LOCALTIME); - this.state = 1969; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 257, this.context) ) { - case 1: - { - this.state = 1966; - this.match(TrinoSqlParser.T__0); - this.state = 1967; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1968; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 30: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1971; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_LOCALTIMESTAMP); - this.state = 1975; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context) ) { - case 1: - { - this.state = 1972; - this.match(TrinoSqlParser.T__0); - this.state = 1973; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1974; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 31: + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public descriptorField(): DescriptorFieldContext { + let localContext = new DescriptorFieldContext(this.context, this.state); + this.enterRule(localContext, 132, TrinoSqlParser.RULE_descriptorField); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2193; + this.identifier(); + this.state = 2195; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - localContext = new CurrentUserContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1977; - (localContext as CurrentUserContext)._name = this.match(TrinoSqlParser.KW_CURRENT_USER); + this.state = 2194; + this.type_(0); } - break; - case 32: + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public copartitionTables(): CopartitionTablesContext { + let localContext = new CopartitionTablesContext(this.context, this.state); + this.enterRule(localContext, 134, TrinoSqlParser.RULE_copartitionTables); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2197; + this.match(TrinoSqlParser.T__0); + this.state = 2198; + this.qualifiedName(); + this.state = 2199; + this.match(TrinoSqlParser.T__2); + this.state = 2200; + this.qualifiedName(); + this.state = 2205; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { { - localContext = new CurrentCatalogContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1978; - (localContext as CurrentCatalogContext)._name = this.match(TrinoSqlParser.KW_CURRENT_CATALOG); - } - break; - case 33: { - localContext = new CurrentSchemaContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1979; - (localContext as CurrentSchemaContext)._name = this.match(TrinoSqlParser.KW_CURRENT_SCHEMA); + this.state = 2201; + this.match(TrinoSqlParser.T__2); + this.state = 2202; + this.qualifiedName(); } - break; - case 34: - { - localContext = new CurrentPathContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1980; - (localContext as CurrentPathContext)._name = this.match(TrinoSqlParser.KW_CURRENT_PATH); } - break; - case 35: - { - localContext = new SubstringContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1981; - this.match(TrinoSqlParser.KW_SUBSTRING); - this.state = 1982; - this.match(TrinoSqlParser.T__0); - this.state = 1983; - this.valueExpression(0); - this.state = 1984; - this.match(TrinoSqlParser.KW_FROM); - this.state = 1985; - this.valueExpression(0); - this.state = 1988; + this.state = 2207; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 86) { - { - this.state = 1986; - this.match(TrinoSqlParser.KW_FOR); - this.state = 1987; - this.valueExpression(0); - } - } + } + this.state = 2208; + this.match(TrinoSqlParser.T__1); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public expression(): ExpressionContext { + let localContext = new ExpressionContext(this.context, this.state); + this.enterRule(localContext, 136, TrinoSqlParser.RULE_expression); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2210; + this.booleanExpression(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } - this.state = 1990; - this.match(TrinoSqlParser.T__1); - } - break; - case 36: - { - localContext = new NormalizeContext(localContext); + public booleanExpression(): BooleanExpressionContext; + public booleanExpression(_p: number): BooleanExpressionContext; + public booleanExpression(_p?: number): BooleanExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new BooleanExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 138; + this.enterRecursionRule(localContext, 138, TrinoSqlParser.RULE_booleanExpression, _p); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2219; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.T__0: + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CASE: + case TrinoSqlParser.KW_CAST: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_CURRENT_CATALOG: + case TrinoSqlParser.KW_CURRENT_DATE: + case TrinoSqlParser.KW_CURRENT_PATH: + case TrinoSqlParser.KW_CURRENT_SCHEMA: + case TrinoSqlParser.KW_CURRENT_TIME: + case TrinoSqlParser.KW_CURRENT_TIMESTAMP: + case TrinoSqlParser.KW_CURRENT_USER: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXISTS: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_EXTRACT: + case TrinoSqlParser.KW_FALSE: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPING: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_JSON_ARRAY: + case TrinoSqlParser.KW_JSON_EXISTS: + case TrinoSqlParser.KW_JSON_OBJECT: + case TrinoSqlParser.KW_JSON_QUERY: + case TrinoSqlParser.KW_JSON_VALUE: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LISTAGG: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOCALTIME: + case TrinoSqlParser.KW_LOCALTIMESTAMP: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NORMALIZE: + case TrinoSqlParser.KW_NULL: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRIM: + case TrinoSqlParser.KW_TRUE: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + case TrinoSqlParser.PLUS: + case TrinoSqlParser.MINUS: + case TrinoSqlParser.QUESTION_MARK: + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: + case TrinoSqlParser.BINARY_LITERAL: + case TrinoSqlParser.INTEGER_VALUE: + case TrinoSqlParser.DECIMAL_VALUE: + case TrinoSqlParser.DOUBLE_VALUE: + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + { + localContext = new PredicatedContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1992; - this.match(TrinoSqlParser.KW_NORMALIZE); - this.state = 1993; - this.match(TrinoSqlParser.T__0); - this.state = 1994; - this.valueExpression(0); - this.state = 1997; + + this.state = 2213; + (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); + this.state = 2215; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 3) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 280, this.context) ) { + case 1: { - this.state = 1995; - this.match(TrinoSqlParser.T__2); - this.state = 1996; - this.normalForm(); + this.state = 2214; + this.predicate((localContext as PredicatedContext)._valueExpression); } + break; } - - this.state = 1999; - this.match(TrinoSqlParser.T__1); - } - break; - case 37: - { - localContext = new ExtractContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2001; - this.match(TrinoSqlParser.KW_EXTRACT); - this.state = 2002; - this.match(TrinoSqlParser.T__0); - this.state = 2003; - this.identifier(); - this.state = 2004; - this.match(TrinoSqlParser.KW_FROM); - this.state = 2005; - this.valueExpression(0); - this.state = 2006; - this.match(TrinoSqlParser.T__1); } break; - case 38: + case TrinoSqlParser.KW_NOT: { - localContext = new ParenthesizedExpressionContext(localContext); + localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2008; - this.match(TrinoSqlParser.T__0); - this.state = 2009; - this.expression(); - this.state = 2010; - this.match(TrinoSqlParser.T__1); - } - break; - case 39: - { - localContext = new GroupingOperationContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2012; - this.match(TrinoSqlParser.KW_GROUPING); - this.state = 2013; - this.match(TrinoSqlParser.T__0); - this.state = 2022; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140014511) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & 15) !== 0)) { - { - this.state = 2014; - this.qualifiedName(); - this.state = 2019; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 2015; - this.match(TrinoSqlParser.T__2); - this.state = 2016; - this.qualifiedName(); - } - } - this.state = 2021; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - - this.state = 2024; - this.match(TrinoSqlParser.T__1); + this.state = 2217; + this.match(TrinoSqlParser.KW_NOT); + this.state = 2218; + this.booleanExpression(3); } break; + default: + throw new antlr.NoViableAltException(this); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2037; + this.state = 2229; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 265, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -8005,47 +8859,43 @@ export class TrinoSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2035; + this.state = 2227; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 264, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { case 1: { - localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); - (localContext as SubscriptContext)._value = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 2027; - if (!(this.precpred(this.context, 17))) { - throw this.createFailedPredicateException("this.precpred(this.context, 17)"); + localContext = new AndContext(new BooleanExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); + this.state = 2221; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2028; - this.match(TrinoSqlParser.T__6); - this.state = 2029; - (localContext as SubscriptContext)._index = this.valueExpression(0); - this.state = 2030; - this.match(TrinoSqlParser.T__7); + this.state = 2222; + this.match(TrinoSqlParser.KW_AND); + this.state = 2223; + this.booleanExpression(3); } break; case 2: { - localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); - (localContext as DereferenceContext)._base = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 2032; - if (!(this.precpred(this.context, 15))) { - throw this.createFailedPredicateException("this.precpred(this.context, 15)"); + localContext = new OrContext(new BooleanExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); + this.state = 2224; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 2033; - this.match(TrinoSqlParser.T__3); - this.state = 2034; - (localContext as DereferenceContext)._fieldName = this.identifier(); + this.state = 2225; + this.match(TrinoSqlParser.KW_OR); + this.state = 2226; + this.booleanExpression(2); } break; } } } - this.state = 2039; + this.state = 2231; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 265, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); } } } @@ -8063,65 +8913,204 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public processingMode(): ProcessingModeContext { - let localContext = new ProcessingModeContext(this.context, this.state); - this.enterRule(localContext, 112, TrinoSqlParser.RULE_processingMode); + public predicate(value: antlr.ParserRuleContext): PredicateContext { + let localContext = new PredicateContext(this.context, this.state, value); + this.enterRule(localContext, 140, TrinoSqlParser.RULE_predicate); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2040; - _la = this.tokenStream.LA(1); - if(!(_la === 83 || _la === 194)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public nullTreatment(): NullTreatmentContext { - let localContext = new NullTreatmentContext(this.context, this.state); - this.enterRule(localContext, 114, TrinoSqlParser.RULE_nullTreatment); - try { - this.state = 2046; + this.state = 2293; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_IGNORE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { + case 1: + localContext = new ComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2042; - this.match(TrinoSqlParser.KW_IGNORE); - this.state = 2043; - this.match(TrinoSqlParser.KW_NULLS); + this.state = 2232; + this.comparisonOperator(); + this.state = 2233; + (localContext as ComparisonContext)._right = this.valueExpression(0); } break; - case TrinoSqlParser.KW_RESPECT: + case 2: + localContext = new QuantifiedComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2044; - this.match(TrinoSqlParser.KW_RESPECT); - this.state = 2045; - this.match(TrinoSqlParser.KW_NULLS); + this.state = 2235; + this.comparisonOperator(); + this.state = 2236; + this.comparisonQuantifier(); + this.state = 2237; + this.match(TrinoSqlParser.T__0); + this.state = 2238; + this.query(); + this.state = 2239; + this.match(TrinoSqlParser.T__1); + } + break; + case 3: + localContext = new BetweenContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 2242; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2241; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2244; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 2245; + (localContext as BetweenContext)._lower = this.valueExpression(0); + this.state = 2246; + this.match(TrinoSqlParser.KW_AND); + this.state = 2247; + (localContext as BetweenContext)._upper = this.valueExpression(0); + } + break; + case 4: + localContext = new InListContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 2250; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2249; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2252; + this.match(TrinoSqlParser.KW_IN); + this.state = 2253; + this.match(TrinoSqlParser.T__0); + this.state = 2254; + this.expression(); + this.state = 2259; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2255; + this.match(TrinoSqlParser.T__2); + this.state = 2256; + this.expression(); + } + } + this.state = 2261; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2262; + this.match(TrinoSqlParser.T__1); + } + break; + case 5: + localContext = new InSubqueryContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 2265; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2264; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2267; + this.match(TrinoSqlParser.KW_IN); + this.state = 2268; + this.match(TrinoSqlParser.T__0); + this.state = 2269; + this.query(); + this.state = 2270; + this.match(TrinoSqlParser.T__1); + } + break; + case 6: + localContext = new LikeContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 2273; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2272; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2275; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 2276; + (localContext as LikeContext)._pattern = this.valueExpression(0); + this.state = 2279; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { + case 1: + { + this.state = 2277; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 2278; + (localContext as LikeContext)._escape = this.valueExpression(0); + } + break; + } + } + break; + case 7: + localContext = new NullPredicateContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 2281; + this.match(TrinoSqlParser.KW_IS); + this.state = 2283; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2282; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2285; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case 8: + localContext = new DistinctFromContext(localContext); + this.enterOuterAlt(localContext, 8); + { + this.state = 2286; + this.match(TrinoSqlParser.KW_IS); + this.state = 2288; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2287; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2290; + this.match(TrinoSqlParser.KW_DISTINCT); + this.state = 2291; + this.match(TrinoSqlParser.KW_FROM); + this.state = 2292; + (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -8138,43 +9127,154 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public string_(): StringContext { - let localContext = new StringContext(this.context, this.state); - this.enterRule(localContext, 116, TrinoSqlParser.RULE_string); + + public valueExpression(): ValueExpressionContext; + public valueExpression(_p: number): ValueExpressionContext; + public valueExpression(_p?: number): ValueExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new ValueExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 142; + this.enterRecursionRule(localContext, 142, TrinoSqlParser.RULE_valueExpression, _p); + let _la: number; try { - this.state = 2054; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2299; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.STRING: - localContext = new BasicStringLiteralContext(localContext); - this.enterOuterAlt(localContext, 1); + switch (this.interpreter.adaptivePredict(this.tokenStream, 293, this.context) ) { + case 1: { - this.state = 2048; - this.match(TrinoSqlParser.STRING); + localContext = new ValueExpressionDefaultContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 2296; + this.primaryExpression(0); } break; - case TrinoSqlParser.UNICODE_STRING: - localContext = new UnicodeStringLiteralContext(localContext); - this.enterOuterAlt(localContext, 2); + case 2: { - this.state = 2049; - this.match(TrinoSqlParser.UNICODE_STRING); - this.state = 2052; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { - case 1: - { - this.state = 2050; - this.match(TrinoSqlParser.KW_UESCAPE); - this.state = 2051; - this.match(TrinoSqlParser.STRING); - } - break; + localContext = new ArithmeticUnaryContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2297; + (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 318 || _la === 319)) { + (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } + this.state = 2298; + this.valueExpression(4); } break; - default: - throw new antlr.NoViableAltException(this); + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 2315; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 295, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 2313; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { + case 1: + { + localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2301; + if (!(this.precpred(this.context, 3))) { + throw this.createFailedPredicateException("this.precpred(this.context, 3)"); + } + this.state = 2302; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(((((_la - 320)) & ~0x1F) === 0 && ((1 << (_la - 320)) & 7) !== 0))) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2303; + (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); + } + break; + case 2: + { + localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2304; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 2305; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 318 || _la === 319)) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2306; + (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); + } + break; + case 3: + { + localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ConcatenationContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2307; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 2308; + this.match(TrinoSqlParser.CONCAT); + this.state = 2309; + (localContext as ConcatenationContext)._right = this.valueExpression(2); + } + break; + case 4: + { + localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2310; + if (!(this.precpred(this.context, 5))) { + throw this.createFailedPredicateException("this.precpred(this.context, 5)"); + } + this.state = 2311; + this.match(TrinoSqlParser.KW_AT); + this.state = 2312; + this.timeZoneSpecifier(); + } + break; + } + } + } + this.state = 2317; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 295, this.context); + } } } catch (re) { @@ -8187,1465 +9287,1597 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public timeZoneSpecifier(): TimeZoneSpecifierContext { - let localContext = new TimeZoneSpecifierContext(this.context, this.state); - this.enterRule(localContext, 118, TrinoSqlParser.RULE_timeZoneSpecifier); + + public primaryExpression(): PrimaryExpressionContext; + public primaryExpression(_p: number): PrimaryExpressionContext; + public primaryExpression(_p?: number): PrimaryExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new PrimaryExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 144; + this.enterRecursionRule(localContext, 144, TrinoSqlParser.RULE_primaryExpression, _p); + let _la: number; try { - this.state = 2062; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2771; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 269, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 359, this.context) ) { case 1: - localContext = new TimeZoneIntervalContext(localContext); - this.enterOuterAlt(localContext, 1); { - this.state = 2056; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2057; - this.match(TrinoSqlParser.KW_ZONE); - this.state = 2058; - this.interval(); + localContext = new NullLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 2319; + this.match(TrinoSqlParser.KW_NULL); } break; case 2: - localContext = new TimeZoneStringContext(localContext); - this.enterOuterAlt(localContext, 2); { - this.state = 2059; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2060; - this.match(TrinoSqlParser.KW_ZONE); - this.state = 2061; + localContext = new IntervalLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2320; + this.interval(); + } + break; + case 3: + { + localContext = new TypeConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2321; + this.identifier(); + this.state = 2322; this.string_(); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comparisonOperator(): ComparisonOperatorContext { - let localContext = new ComparisonOperatorContext(this.context, this.state); - this.enterRule(localContext, 120, TrinoSqlParser.RULE_comparisonOperator); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2064; - _la = this.tokenStream.LA(1); - if(!(((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 63) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comparisonQuantifier(): ComparisonQuantifierContext { - let localContext = new ComparisonQuantifierContext(this.context, this.state); - this.enterRule(localContext, 122, TrinoSqlParser.RULE_comparisonQuantifier); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2066; - _la = this.tokenStream.LA(1); - if(!(_la === 20 || _la === 24 || _la === 206)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public booleanValue(): BooleanValueContext { - let localContext = new BooleanValueContext(this.context, this.state); - this.enterRule(localContext, 124, TrinoSqlParser.RULE_booleanValue); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2068; - _la = this.tokenStream.LA(1); - if(!(_la === 80 || _la === 223)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public interval(): IntervalContext { - let localContext = new IntervalContext(this.context, this.state); - this.enterRule(localContext, 126, TrinoSqlParser.RULE_interval); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2070; - this.match(TrinoSqlParser.KW_INTERVAL); - this.state = 2072; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 255 || _la === 256) { + case 4: { - this.state = 2071; - localContext._sign = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 255 || _la === 256)) { - localContext._sign = this.errorHandler.recoverInline(this); + localContext = new TypeConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2324; + this.match(TrinoSqlParser.KW_DOUBLE); + this.state = 2325; + this.match(TrinoSqlParser.KW_PRECISION); + this.state = 2326; + this.string_(); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + break; + case 5: + { + localContext = new NumericLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2327; + this.number_(); } + break; + case 6: + { + localContext = new BooleanLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2328; + this.booleanValue(); } - } - - this.state = 2074; - this.string_(); - this.state = 2075; - localContext._from_ = this.intervalField(); - this.state = 2078; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { - case 1: + break; + case 7: { - this.state = 2076; - this.match(TrinoSqlParser.KW_TO); - this.state = 2077; - localContext._to = this.intervalField(); + localContext = new StringLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2329; + this.string_(); } break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public intervalField(): IntervalFieldContext { - let localContext = new IntervalFieldContext(this.context, this.state); - this.enterRule(localContext, 128, TrinoSqlParser.RULE_intervalField); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2080; - _la = this.tokenStream.LA(1); - if(!(_la === 58 || _la === 100 || _la === 136 || _la === 137 || _la === 197 || _la === 247)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public normalForm(): NormalFormContext { - let localContext = new NormalFormContext(this.context, this.state); - this.enterRule(localContext, 130, TrinoSqlParser.RULE_normalForm); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2082; - _la = this.tokenStream.LA(1); - if(!(((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 15) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - - public type_(): TypeContext; - public type_(_p: number): TypeContext; - public type_(_p?: number): TypeContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new TypeContext(this.context, parentState); - let previousContext = localContext; - let _startState = 132; - this.enterRecursionRule(localContext, 132, TrinoSqlParser.RULE_type, _p); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2175; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { - case 1: + case 8: { - localContext = new RowTypeContext(localContext); + localContext = new BinaryLiteralContext(localContext); this.context = localContext; previousContext = localContext; - - this.state = 2085; - this.match(TrinoSqlParser.KW_ROW); - this.state = 2086; + this.state = 2330; + this.match(TrinoSqlParser.BINARY_LITERAL); + } + break; + case 9: + { + localContext = new ParameterContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2331; + this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + case 10: + { + localContext = new PositionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2332; + this.match(TrinoSqlParser.KW_POSITION); + this.state = 2333; this.match(TrinoSqlParser.T__0); - this.state = 2087; - this.rowField(); - this.state = 2092; + this.state = 2334; + this.valueExpression(0); + this.state = 2335; + this.match(TrinoSqlParser.KW_IN); + this.state = 2336; + this.valueExpression(0); + this.state = 2337; + this.match(TrinoSqlParser.T__1); + } + break; + case 11: + { + localContext = new RowConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2339; + this.match(TrinoSqlParser.T__0); + this.state = 2340; + this.expression(); + this.state = 2343; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + do { { { - this.state = 2088; + this.state = 2341; this.match(TrinoSqlParser.T__2); - this.state = 2089; - this.rowField(); + this.state = 2342; + this.expression(); } } - this.state = 2094; + this.state = 2345; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } - this.state = 2095; + } while (_la === 3); + this.state = 2347; this.match(TrinoSqlParser.T__1); } break; - case 2: + case 12: { - localContext = new IntervalTypeContext(localContext); + localContext = new RowConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2097; - this.match(TrinoSqlParser.KW_INTERVAL); - this.state = 2098; - (localContext as IntervalTypeContext)._from_ = this.intervalField(); - this.state = 2101; + this.state = 2349; + this.match(TrinoSqlParser.KW_ROW); + this.state = 2350; + this.match(TrinoSqlParser.T__0); + this.state = 2351; + this.expression(); + this.state = 2356; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 3) { { - this.state = 2099; - this.match(TrinoSqlParser.KW_TO); - this.state = 2100; - (localContext as IntervalTypeContext)._to = this.intervalField(); + { + this.state = 2352; + this.match(TrinoSqlParser.T__2); + this.state = 2353; + this.expression(); } - break; + } + this.state = 2358; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } + this.state = 2359; + this.match(TrinoSqlParser.T__1); } break; - case 3: + case 13: { - localContext = new DateTimeTypeContext(localContext); + localContext = new ListaggContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2103; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); - this.state = 2108; + this.state = 2361; + (localContext as ListaggContext)._name = this.match(TrinoSqlParser.KW_LISTAGG); + this.state = 2362; + this.match(TrinoSqlParser.T__0); + this.state = 2364; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 298, this.context) ) { case 1: { - this.state = 2104; - this.match(TrinoSqlParser.T__0); - this.state = 2105; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2106; - this.match(TrinoSqlParser.T__1); + this.state = 2363; + this.setQuantifier(); } break; } - this.state = 2113; + this.state = 2366; + this.expression(); + this.state = 2369; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 3) { + { + this.state = 2367; + this.match(TrinoSqlParser.T__2); + this.state = 2368; + this.string_(); + } + } + + this.state = 2374; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190) { + { + this.state = 2371; + this.match(TrinoSqlParser.KW_ON); + this.state = 2372; + this.match(TrinoSqlParser.KW_OVERFLOW); + this.state = 2373; + this.listAggOverflowBehavior(); + } + } + + this.state = 2376; + this.match(TrinoSqlParser.T__1); + { + this.state = 2377; + this.match(TrinoSqlParser.KW_WITHIN); + this.state = 2378; + this.match(TrinoSqlParser.KW_GROUP); + this.state = 2379; + this.match(TrinoSqlParser.T__0); + this.state = 2380; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 2381; + this.match(TrinoSqlParser.KW_BY); + this.state = 2382; + this.sortItem(); + this.state = 2387; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2383; + this.match(TrinoSqlParser.T__2); + this.state = 2384; + this.sortItem(); + } + } + this.state = 2389; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2390; + this.match(TrinoSqlParser.T__1); + } + this.state = 2393; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2110; - this.match(TrinoSqlParser.KW_WITHOUT); - this.state = 2111; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2112; - this.match(TrinoSqlParser.KW_ZONE); + this.state = 2392; + this.filter(); } break; } } break; - case 4: + case 14: { - localContext = new DateTimeTypeContext(localContext); + localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2115; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); - this.state = 2120; + this.state = 2396; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { + case 1: + { + this.state = 2395; + this.processingMode(); + } + break; + } + this.state = 2398; + this.functionName(); + this.state = 2399; + this.match(TrinoSqlParser.T__0); + this.state = 2403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 1) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 2116; - this.match(TrinoSqlParser.T__0); - this.state = 2117; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2118; - this.match(TrinoSqlParser.T__1); + this.state = 2400; + (localContext as FunctionCallContext)._label = this.identifier(); + this.state = 2401; + this.match(TrinoSqlParser.T__3); } } - this.state = 2122; - this.match(TrinoSqlParser.KW_WITH); - this.state = 2123; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2124; - this.match(TrinoSqlParser.KW_ZONE); - } - break; - case 5: - { - localContext = new DateTimeTypeContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2125; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); - this.state = 2130; + this.state = 2405; + this.match(TrinoSqlParser.ASTERISK); + this.state = 2406; + this.match(TrinoSqlParser.T__1); + this.state = 2408; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 305, this.context) ) { case 1: { - this.state = 2126; - this.match(TrinoSqlParser.T__0); - this.state = 2127; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2128; - this.match(TrinoSqlParser.T__1); + this.state = 2407; + this.filter(); } break; } - this.state = 2135; + this.state = 2411; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 278, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 306, this.context) ) { case 1: { - this.state = 2132; - this.match(TrinoSqlParser.KW_WITHOUT); - this.state = 2133; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2134; - this.match(TrinoSqlParser.KW_ZONE); + this.state = 2410; + this.over(); } break; } } break; - case 6: + case 15: { - localContext = new DateTimeTypeContext(localContext); + localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2137; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); - this.state = 2142; + this.state = 2414; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { + case 1: + { + this.state = 2413; + this.processingMode(); + } + break; + } + this.state = 2416; + this.functionName(); + this.state = 2417; + this.match(TrinoSqlParser.T__0); + this.state = 2429; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 1) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538415087) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { { - this.state = 2138; - this.match(TrinoSqlParser.T__0); - this.state = 2139; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2140; - this.match(TrinoSqlParser.T__1); + this.state = 2419; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 308, this.context) ) { + case 1: + { + this.state = 2418; + this.setQuantifier(); + } + break; + } + this.state = 2421; + this.expression(); + this.state = 2426; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2422; + this.match(TrinoSqlParser.T__2); + this.state = 2423; + this.expression(); + } + } + this.state = 2428; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } - this.state = 2144; - this.match(TrinoSqlParser.KW_WITH); - this.state = 2145; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2146; - this.match(TrinoSqlParser.KW_ZONE); + this.state = 2441; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 195) { + { + this.state = 2431; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 2432; + this.match(TrinoSqlParser.KW_BY); + this.state = 2433; + this.sortItem(); + this.state = 2438; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2434; + this.match(TrinoSqlParser.T__2); + this.state = 2435; + this.sortItem(); + } + } + this.state = 2440; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 2443; + this.match(TrinoSqlParser.T__1); + this.state = 2445; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { + case 1: + { + this.state = 2444; + this.filter(); + } + break; + } + this.state = 2451; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { + case 1: + { + this.state = 2448; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 120 || _la === 228) { + { + this.state = 2447; + this.nullTreatment(); + } + } + + this.state = 2450; + this.over(); + } + break; } - break; - case 7: - { - localContext = new DoublePrecisionTypeContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2147; - this.match(TrinoSqlParser.KW_DOUBLE); - this.state = 2148; - this.match(TrinoSqlParser.KW_PRECISION); } break; - case 8: + case 16: { - localContext = new LegacyArrayTypeContext(localContext); + localContext = new MeasureContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2149; - this.match(TrinoSqlParser.KW_ARRAY); - this.state = 2150; - this.match(TrinoSqlParser.LT); - this.state = 2151; - this.type_(0); - this.state = 2152; - this.match(TrinoSqlParser.GT); + this.state = 2453; + this.identifier(); + this.state = 2454; + this.over(); } break; - case 9: + case 17: { - localContext = new LegacyMapTypeContext(localContext); + localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2154; - this.match(TrinoSqlParser.KW_MAP); - this.state = 2155; - this.match(TrinoSqlParser.LT); - this.state = 2156; - (localContext as LegacyMapTypeContext)._keyType = this.type_(0); - this.state = 2157; - this.match(TrinoSqlParser.T__2); - this.state = 2158; - (localContext as LegacyMapTypeContext)._valueType = this.type_(0); - this.state = 2159; - this.match(TrinoSqlParser.GT); + this.state = 2456; + this.identifier(); + this.state = 2457; + this.match(TrinoSqlParser.T__6); + this.state = 2458; + this.expression(); } break; - case 10: + case 18: { - localContext = new GenericTypeContext(localContext); + localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2161; - this.identifier(); - this.state = 2173; + this.state = 2460; + this.match(TrinoSqlParser.T__0); + this.state = 2469; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 281, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 2162; - this.match(TrinoSqlParser.T__0); - this.state = 2163; - this.typeParameter(); - this.state = 2168; + this.state = 2461; + this.identifier(); + this.state = 2466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2164; + this.state = 2462; this.match(TrinoSqlParser.T__2); - this.state = 2165; - this.typeParameter(); + this.state = 2463; + this.identifier(); } } - this.state = 2170; + this.state = 2468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2171; - this.match(TrinoSqlParser.T__1); } - break; - } } - break; - } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 2186; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 284, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; + + this.state = 2471; + this.match(TrinoSqlParser.T__1); + this.state = 2472; + this.match(TrinoSqlParser.T__6); + this.state = 2473; + this.expression(); + } + break; + case 19: + { + localContext = new SubqueryExpressionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2474; + this.match(TrinoSqlParser.T__0); + this.state = 2475; + this.query(); + this.state = 2476; + this.match(TrinoSqlParser.T__1); + } + break; + case 20: + { + localContext = new ExistsContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2478; + this.match(TrinoSqlParser.KW_EXISTS); + this.state = 2479; + this.match(TrinoSqlParser.T__0); + this.state = 2480; + this.query(); + this.state = 2481; + this.match(TrinoSqlParser.T__1); + } + break; + case 21: + { + localContext = new SimpleCaseContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2483; + this.match(TrinoSqlParser.KW_CASE); + this.state = 2484; + (localContext as SimpleCaseContext)._operand = this.expression(); + this.state = 2486; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { { { - localContext = new ArrayTypeContext(new TypeContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_type); - this.state = 2177; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + this.state = 2485; + this.whenClause(); } - this.state = 2178; - this.match(TrinoSqlParser.KW_ARRAY); - this.state = 2182; + } + this.state = 2488; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 283, this.context) ) { - case 1: - { - this.state = 2179; - this.match(TrinoSqlParser.T__6); - this.state = 2180; - this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2181; - this.match(TrinoSqlParser.T__7); - } - break; + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 2492; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 2490; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 2491; + (localContext as SimpleCaseContext)._elseExpression = this.expression(); } + } + + this.state = 2494; + this.match(TrinoSqlParser.KW_END); + } + break; + case 22: + { + localContext = new SearchedCaseContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2496; + this.match(TrinoSqlParser.KW_CASE); + this.state = 2498; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 2497; + this.whenClause(); } } - } - this.state = 2188; + this.state = 2500; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 2504; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 284, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(parentContext); - } - return localContext; - } - public rowField(): RowFieldContext { - let localContext = new RowFieldContext(this.context, this.state); - this.enterRule(localContext, 134, TrinoSqlParser.RULE_rowField); - try { - this.state = 2193; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 285, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 2502; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 2503; + (localContext as SearchedCaseContext)._elseExpression = this.expression(); + } + } + + this.state = 2506; + this.match(TrinoSqlParser.KW_END); + } + break; + case 23: { - this.state = 2189; + localContext = new CastContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2508; + this.match(TrinoSqlParser.KW_CAST); + this.state = 2509; + this.match(TrinoSqlParser.T__0); + this.state = 2510; + this.expression(); + this.state = 2511; + this.match(TrinoSqlParser.KW_AS); + this.state = 2512; this.type_(0); + this.state = 2513; + this.match(TrinoSqlParser.T__1); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 24: { - this.state = 2190; - this.identifier(); - this.state = 2191; + localContext = new CastContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2515; + this.match(TrinoSqlParser.KW_TRY_CAST); + this.state = 2516; + this.match(TrinoSqlParser.T__0); + this.state = 2517; + this.expression(); + this.state = 2518; + this.match(TrinoSqlParser.KW_AS); + this.state = 2519; this.type_(0); + this.state = 2520; + this.match(TrinoSqlParser.T__1); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public typeParameter(): TypeParameterContext { - let localContext = new TypeParameterContext(this.context, this.state); - this.enterRule(localContext, 136, TrinoSqlParser.RULE_typeParameter); - try { - this.state = 2197; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.INTEGER_VALUE: - this.enterOuterAlt(localContext, 1); + case 25: { - this.state = 2195; - this.match(TrinoSqlParser.INTEGER_VALUE); + localContext = new ArrayConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2522; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 2523; + this.match(TrinoSqlParser.T__7); + this.state = 2532; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + { + this.state = 2524; + this.expression(); + this.state = 2529; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2525; + this.match(TrinoSqlParser.T__2); + this.state = 2526; + this.expression(); + } + } + this.state = 2531; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 2534; + this.match(TrinoSqlParser.T__8); } break; - case TrinoSqlParser.KW_ADD: - case TrinoSqlParser.KW_ADMIN: - case TrinoSqlParser.KW_AFTER: - case TrinoSqlParser.KW_ALL: - case TrinoSqlParser.KW_ANALYZE: - case TrinoSqlParser.KW_ANY: - case TrinoSqlParser.KW_ARRAY: - case TrinoSqlParser.KW_ASC: - case TrinoSqlParser.KW_AT: - case TrinoSqlParser.KW_AUTHORIZATION: - case TrinoSqlParser.KW_BERNOULLI: - case TrinoSqlParser.KW_CALL: - case TrinoSqlParser.KW_CASCADE: - case TrinoSqlParser.KW_CATALOGS: - case TrinoSqlParser.KW_COLUMN: - case TrinoSqlParser.KW_COLUMNS: - case TrinoSqlParser.KW_COMMENT: - case TrinoSqlParser.KW_COMMIT: - case TrinoSqlParser.KW_COMMITTED: - case TrinoSqlParser.KW_CURRENT: - case TrinoSqlParser.KW_DATA: - case TrinoSqlParser.KW_DATE: - case TrinoSqlParser.KW_DAY: - case TrinoSqlParser.KW_DEFAULT: - case TrinoSqlParser.KW_DEFINER: - case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: - case TrinoSqlParser.KW_DISTRIBUTED: - case TrinoSqlParser.KW_DOUBLE: - case TrinoSqlParser.KW_EMPTY: - case TrinoSqlParser.KW_EXCLUDING: - case TrinoSqlParser.KW_EXPLAIN: - case TrinoSqlParser.KW_FETCH: - case TrinoSqlParser.KW_FILTER: - case TrinoSqlParser.KW_FINAL: - case TrinoSqlParser.KW_FIRST: - case TrinoSqlParser.KW_FOLLOWING: - case TrinoSqlParser.KW_FORMAT: - case TrinoSqlParser.KW_FUNCTIONS: - case TrinoSqlParser.KW_GRANT: - case TrinoSqlParser.KW_GRANTED: - case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: - case TrinoSqlParser.KW_GRAPHVIZ: - case TrinoSqlParser.KW_GROUPS: - case TrinoSqlParser.KW_HOUR: - case TrinoSqlParser.KW_IF: - case TrinoSqlParser.KW_IGNORE: - case TrinoSqlParser.KW_INCLUDING: - case TrinoSqlParser.KW_INITIAL: - case TrinoSqlParser.KW_INPUT: - case TrinoSqlParser.KW_INTERVAL: - case TrinoSqlParser.KW_INVOKER: - case TrinoSqlParser.KW_IO: - case TrinoSqlParser.KW_ISOLATION: - case TrinoSqlParser.KW_JSON: - case TrinoSqlParser.KW_LAST: - case TrinoSqlParser.KW_LATERAL: - case TrinoSqlParser.KW_LEVEL: - case TrinoSqlParser.KW_LIMIT: - case TrinoSqlParser.KW_LOCAL: - case TrinoSqlParser.KW_LOGICAL: - case TrinoSqlParser.KW_MAP: - case TrinoSqlParser.KW_MATCH: - case TrinoSqlParser.KW_MATCHED: - case TrinoSqlParser.KW_MATCHES: - case TrinoSqlParser.KW_MATCH_RECOGNIZE: - case TrinoSqlParser.KW_MATERIALIZED: - case TrinoSqlParser.KW_MEASURES: - case TrinoSqlParser.KW_MERGE: - case TrinoSqlParser.KW_MINUTE: - case TrinoSqlParser.KW_MONTH: - case TrinoSqlParser.KW_NEXT: - case TrinoSqlParser.KW_NFC: - case TrinoSqlParser.KW_NFD: - case TrinoSqlParser.KW_NFKC: - case TrinoSqlParser.KW_NFKD: - case TrinoSqlParser.KW_NO: - case TrinoSqlParser.KW_NONE: - case TrinoSqlParser.KW_NULLIF: - case TrinoSqlParser.KW_NULLS: - case TrinoSqlParser.KW_OFFSET: - case TrinoSqlParser.KW_OMIT: - case TrinoSqlParser.KW_ONE: - case TrinoSqlParser.KW_ONLY: - case TrinoSqlParser.KW_OPTION: - case TrinoSqlParser.KW_ORDINALITY: - case TrinoSqlParser.KW_OUTPUT: - case TrinoSqlParser.KW_OVER: - case TrinoSqlParser.KW_PARTITION: - case TrinoSqlParser.KW_PARTITIONS: - case TrinoSqlParser.KW_PAST: - case TrinoSqlParser.KW_PATH: - case TrinoSqlParser.KW_PATTERN: - case TrinoSqlParser.KW_PER: - case TrinoSqlParser.KW_PERMUTE: - case TrinoSqlParser.KW_POSITION: - case TrinoSqlParser.KW_PRECEDING: - case TrinoSqlParser.KW_PRECISION: - case TrinoSqlParser.KW_PRIVILEGES: - case TrinoSqlParser.KW_PROPERTIES: - case TrinoSqlParser.KW_RANGE: - case TrinoSqlParser.KW_READ: - case TrinoSqlParser.KW_REFRESH: - case TrinoSqlParser.KW_RENAME: - case TrinoSqlParser.KW_REPEATABLE: - case TrinoSqlParser.KW_REPLACE: - case TrinoSqlParser.KW_RESET: - case TrinoSqlParser.KW_RESPECT: - case TrinoSqlParser.KW_RESTRICT: - case TrinoSqlParser.KW_REVOKE: - case TrinoSqlParser.KW_ROLE: - case TrinoSqlParser.KW_ROLES: - case TrinoSqlParser.KW_ROLLBACK: - case TrinoSqlParser.KW_ROW: - case TrinoSqlParser.KW_ROWS: - case TrinoSqlParser.KW_RUNNING: - case TrinoSqlParser.KW_SCHEMA: - case TrinoSqlParser.KW_SCHEMAS: - case TrinoSqlParser.KW_SECOND: - case TrinoSqlParser.KW_SECURITY: - case TrinoSqlParser.KW_SEEK: - case TrinoSqlParser.KW_SERIALIZABLE: - case TrinoSqlParser.KW_SESSION: - case TrinoSqlParser.KW_SET: - case TrinoSqlParser.KW_SETS: - case TrinoSqlParser.KW_SHOW: - case TrinoSqlParser.KW_SOME: - case TrinoSqlParser.KW_START: - case TrinoSqlParser.KW_STATS: - case TrinoSqlParser.KW_SUBSET: - case TrinoSqlParser.KW_SUBSTRING: - case TrinoSqlParser.KW_SYSTEM: - case TrinoSqlParser.KW_TABLES: - case TrinoSqlParser.KW_TABLESAMPLE: - case TrinoSqlParser.KW_TEXT: - case TrinoSqlParser.KW_TIES: - case TrinoSqlParser.KW_TIME: - case TrinoSqlParser.KW_TIMESTAMP: - case TrinoSqlParser.KW_TO: - case TrinoSqlParser.KW_TRANSACTION: - case TrinoSqlParser.KW_TRUNCATE: - case TrinoSqlParser.KW_TRY_CAST: - case TrinoSqlParser.KW_TYPE: - case TrinoSqlParser.KW_UNBOUNDED: - case TrinoSqlParser.KW_UNCOMMITTED: - case TrinoSqlParser.KW_UNMATCHED: - case TrinoSqlParser.KW_UPDATE: - case TrinoSqlParser.KW_USE: - case TrinoSqlParser.KW_USER: - case TrinoSqlParser.KW_VALIDATE: - case TrinoSqlParser.KW_VERBOSE: - case TrinoSqlParser.KW_VIEW: - case TrinoSqlParser.KW_WINDOW: - case TrinoSqlParser.KW_WITHOUT: - case TrinoSqlParser.KW_WORK: - case TrinoSqlParser.KW_WRITE: - case TrinoSqlParser.KW_YEAR: - case TrinoSqlParser.KW_ZONE: - case TrinoSqlParser.IDENTIFIER: - case TrinoSqlParser.DIGIT_IDENTIFIER: - case TrinoSqlParser.QUOTED_IDENTIFIER: - case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - this.enterOuterAlt(localContext, 2); + case 26: { - this.state = 2196; - this.type_(0); + localContext = new ColumnReferenceContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2535; + this.identifier(); } break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public whenClause(): WhenClauseContext { - let localContext = new WhenClauseContext(this.context, this.state); - this.enterRule(localContext, 138, TrinoSqlParser.RULE_whenClause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2199; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2200; - localContext._condition = this.expression(); - this.state = 2201; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2202; - localContext._result = this.expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public filter(): FilterContext { - let localContext = new FilterContext(this.context, this.state); - this.enterRule(localContext, 140, TrinoSqlParser.RULE_filter); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2204; - this.match(TrinoSqlParser.KW_FILTER); - this.state = 2205; - this.match(TrinoSqlParser.T__0); - this.state = 2206; - this.match(TrinoSqlParser.KW_WHERE); - this.state = 2207; - this.booleanExpression(0); - this.state = 2208; - this.match(TrinoSqlParser.T__1); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public mergeCase(): MergeCaseContext { - let localContext = new MergeCaseContext(this.context, this.state); - this.enterRule(localContext, 142, TrinoSqlParser.RULE_mergeCase); - let _la: number; - try { - this.state = 2274; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { - case 1: - localContext = new MergeUpdateContext(localContext); - this.enterOuterAlt(localContext, 1); + case 27: { - this.state = 2210; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2211; - this.match(TrinoSqlParser.KW_MATCHED); - this.state = 2214; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 23) { - { - this.state = 2212; - this.match(TrinoSqlParser.KW_AND); - this.state = 2213; - (localContext as MergeUpdateContext)._condition = this.expression(); - } + localContext = new CurrentDateContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2536; + (localContext as CurrentDateContext)._name = this.match(TrinoSqlParser.KW_CURRENT_DATE); } - - this.state = 2216; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2217; - this.match(TrinoSqlParser.KW_UPDATE); - this.state = 2218; - this.match(TrinoSqlParser.KW_SET); - this.state = 2219; - (localContext as MergeUpdateContext)._identifier = this.identifier(); - (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); - this.state = 2220; - this.match(TrinoSqlParser.EQ); - this.state = 2221; - (localContext as MergeUpdateContext)._expression = this.expression(); - (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); - this.state = 2229; + break; + case 28: + { + localContext = new CurrentTimeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2537; + (localContext as CurrentTimeContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIME); + this.state = 2541; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 324, this.context) ) { + case 1: { - this.state = 2222; - this.match(TrinoSqlParser.T__2); - this.state = 2223; - (localContext as MergeUpdateContext)._identifier = this.identifier(); - (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); - this.state = 2224; - this.match(TrinoSqlParser.EQ); - this.state = 2225; - (localContext as MergeUpdateContext)._expression = this.expression(); - (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); - } + this.state = 2538; + this.match(TrinoSqlParser.T__0); + this.state = 2539; + (localContext as CurrentTimeContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2540; + this.match(TrinoSqlParser.T__1); } - this.state = 2231; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + break; } } break; - case 2: - localContext = new MergeDeleteContext(localContext); - this.enterOuterAlt(localContext, 2); + case 29: { - this.state = 2232; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2233; - this.match(TrinoSqlParser.KW_MATCHED); - this.state = 2236; + localContext = new CurrentTimestampContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2543; + (localContext as CurrentTimestampContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIMESTAMP); + this.state = 2547; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { + case 1: + { + this.state = 2544; + this.match(TrinoSqlParser.T__0); + this.state = 2545; + (localContext as CurrentTimestampContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2546; + this.match(TrinoSqlParser.T__1); + } + break; + } + } + break; + case 30: + { + localContext = new LocalTimeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2549; + (localContext as LocalTimeContext)._name = this.match(TrinoSqlParser.KW_LOCALTIME); + this.state = 2553; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { + case 1: + { + this.state = 2550; + this.match(TrinoSqlParser.T__0); + this.state = 2551; + (localContext as LocalTimeContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2552; + this.match(TrinoSqlParser.T__1); + } + break; + } + } + break; + case 31: + { + localContext = new LocalTimestampContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2555; + (localContext as LocalTimestampContext)._name = this.match(TrinoSqlParser.KW_LOCALTIMESTAMP); + this.state = 2559; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { + case 1: + { + this.state = 2556; + this.match(TrinoSqlParser.T__0); + this.state = 2557; + (localContext as LocalTimestampContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2558; + this.match(TrinoSqlParser.T__1); + } + break; + } + } + break; + case 32: + { + localContext = new CurrentUserContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2561; + (localContext as CurrentUserContext)._name = this.match(TrinoSqlParser.KW_CURRENT_USER); + } + break; + case 33: + { + localContext = new CurrentCatalogContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2562; + (localContext as CurrentCatalogContext)._name = this.match(TrinoSqlParser.KW_CURRENT_CATALOG); + } + break; + case 34: + { + localContext = new CurrentSchemaContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2563; + (localContext as CurrentSchemaContext)._name = this.match(TrinoSqlParser.KW_CURRENT_SCHEMA); + } + break; + case 35: + { + localContext = new CurrentPathContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2564; + (localContext as CurrentPathContext)._name = this.match(TrinoSqlParser.KW_CURRENT_PATH); + } + break; + case 36: + { + localContext = new TrimContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2565; + this.match(TrinoSqlParser.KW_TRIM); + this.state = 2566; + this.match(TrinoSqlParser.T__0); + this.state = 2574; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { + case 1: + { + this.state = 2568; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { + case 1: + { + this.state = 2567; + this.trimsSpecification(); + } + break; + } + this.state = 2571; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3755997183) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + { + this.state = 2570; + (localContext as TrimContext)._trimChar = this.valueExpression(0); + } + } + + this.state = 2573; + this.match(TrinoSqlParser.KW_FROM); + } + break; + } + this.state = 2576; + (localContext as TrimContext)._trimSource = this.valueExpression(0); + this.state = 2577; + this.match(TrinoSqlParser.T__1); + } + break; + case 37: + { + localContext = new TrimContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2579; + this.match(TrinoSqlParser.KW_TRIM); + this.state = 2580; + this.match(TrinoSqlParser.T__0); + this.state = 2581; + (localContext as TrimContext)._trimSource = this.valueExpression(0); + this.state = 2582; + this.match(TrinoSqlParser.T__2); + this.state = 2583; + (localContext as TrimContext)._trimChar = this.valueExpression(0); + this.state = 2584; + this.match(TrinoSqlParser.T__1); + } + break; + case 38: + { + localContext = new SubstringContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2586; + this.match(TrinoSqlParser.KW_SUBSTRING); + this.state = 2587; + this.match(TrinoSqlParser.T__0); + this.state = 2588; + this.valueExpression(0); + this.state = 2589; + this.match(TrinoSqlParser.KW_FROM); + this.state = 2590; + this.valueExpression(0); + this.state = 2593; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 23) { + if (_la === 103) { { - this.state = 2234; - this.match(TrinoSqlParser.KW_AND); - this.state = 2235; - (localContext as MergeDeleteContext)._condition = this.expression(); + this.state = 2591; + this.match(TrinoSqlParser.KW_FOR); + this.state = 2592; + this.valueExpression(0); } } - this.state = 2238; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2239; - this.match(TrinoSqlParser.KW_DELETE); + this.state = 2595; + this.match(TrinoSqlParser.T__1); } break; - case 3: - localContext = new MergeInsertContext(localContext); - this.enterOuterAlt(localContext, 3); + case 39: { - this.state = 2240; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2241; - this.match(TrinoSqlParser.KW_NOT); - this.state = 2242; - this.match(TrinoSqlParser.KW_MATCHED); - this.state = 2245; + localContext = new NormalizeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2597; + this.match(TrinoSqlParser.KW_NORMALIZE); + this.state = 2598; + this.match(TrinoSqlParser.T__0); + this.state = 2599; + this.valueExpression(0); + this.state = 2602; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 23) { + if (_la === 3) { { - this.state = 2243; - this.match(TrinoSqlParser.KW_AND); - this.state = 2244; - (localContext as MergeInsertContext)._condition = this.expression(); + this.state = 2600; + this.match(TrinoSqlParser.T__2); + this.state = 2601; + this.normalForm(); } } - this.state = 2247; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2248; - this.match(TrinoSqlParser.KW_INSERT); - this.state = 2260; + this.state = 2604; + this.match(TrinoSqlParser.T__1); + } + break; + case 40: + { + localContext = new ExtractContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2606; + this.match(TrinoSqlParser.KW_EXTRACT); + this.state = 2607; + this.match(TrinoSqlParser.T__0); + this.state = 2608; + this.identifier(); + this.state = 2609; + this.match(TrinoSqlParser.KW_FROM); + this.state = 2610; + this.valueExpression(0); + this.state = 2611; + this.match(TrinoSqlParser.T__1); + } + break; + case 41: + { + localContext = new ParenthesizedExpressionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2613; + this.match(TrinoSqlParser.T__0); + this.state = 2614; + this.expression(); + this.state = 2615; + this.match(TrinoSqlParser.T__1); + } + break; + case 42: + { + localContext = new GroupingOperationContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2617; + this.match(TrinoSqlParser.KW_GROUPING); + this.state = 2618; + this.match(TrinoSqlParser.T__0); + this.state = 2627; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 1) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 2249; - this.match(TrinoSqlParser.T__0); - this.state = 2250; - (localContext as MergeInsertContext)._identifier = this.identifier(); - (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); - this.state = 2255; + this.state = 2619; + this.qualifiedName(); + this.state = 2624; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2251; + this.state = 2620; this.match(TrinoSqlParser.T__2); - this.state = 2252; - (localContext as MergeInsertContext)._identifier = this.identifier(); - (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); + this.state = 2621; + this.qualifiedName(); } } - this.state = 2257; + this.state = 2626; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2258; - this.match(TrinoSqlParser.T__1); } } - this.state = 2262; - this.match(TrinoSqlParser.KW_VALUES); - this.state = 2263; + this.state = 2629; + this.match(TrinoSqlParser.T__1); + } + break; + case 43: + { + localContext = new JsonExistsContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2630; + this.match(TrinoSqlParser.KW_JSON_EXISTS); + this.state = 2631; this.match(TrinoSqlParser.T__0); - this.state = 2264; - (localContext as MergeInsertContext)._expression = this.expression(); - (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); - this.state = 2269; + this.state = 2632; + this.jsonPathInvocation(); + this.state = 2637; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 89 || _la === 97 || _la === 273 || _la === 283) { { - { - this.state = 2265; - this.match(TrinoSqlParser.T__2); - this.state = 2266; - (localContext as MergeInsertContext)._expression = this.expression(); - (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); - } + this.state = 2633; + this.jsonExistsErrorBehavior(); + this.state = 2634; + this.match(TrinoSqlParser.KW_ON); + this.state = 2635; + this.match(TrinoSqlParser.KW_ERROR); } - this.state = 2271; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); } - this.state = 2272; + + this.state = 2639; this.match(TrinoSqlParser.T__1); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public over(): OverContext { - let localContext = new OverContext(this.context, this.state); - this.enterRule(localContext, 144, TrinoSqlParser.RULE_over); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2276; - this.match(TrinoSqlParser.KW_OVER); - this.state = 2282; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_ADD: - case TrinoSqlParser.KW_ADMIN: - case TrinoSqlParser.KW_AFTER: - case TrinoSqlParser.KW_ALL: - case TrinoSqlParser.KW_ANALYZE: - case TrinoSqlParser.KW_ANY: - case TrinoSqlParser.KW_ARRAY: - case TrinoSqlParser.KW_ASC: - case TrinoSqlParser.KW_AT: - case TrinoSqlParser.KW_AUTHORIZATION: - case TrinoSqlParser.KW_BERNOULLI: - case TrinoSqlParser.KW_CALL: - case TrinoSqlParser.KW_CASCADE: - case TrinoSqlParser.KW_CATALOGS: - case TrinoSqlParser.KW_COLUMN: - case TrinoSqlParser.KW_COLUMNS: - case TrinoSqlParser.KW_COMMENT: - case TrinoSqlParser.KW_COMMIT: - case TrinoSqlParser.KW_COMMITTED: - case TrinoSqlParser.KW_CURRENT: - case TrinoSqlParser.KW_DATA: - case TrinoSqlParser.KW_DATE: - case TrinoSqlParser.KW_DAY: - case TrinoSqlParser.KW_DEFAULT: - case TrinoSqlParser.KW_DEFINER: - case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: - case TrinoSqlParser.KW_DISTRIBUTED: - case TrinoSqlParser.KW_DOUBLE: - case TrinoSqlParser.KW_EMPTY: - case TrinoSqlParser.KW_EXCLUDING: - case TrinoSqlParser.KW_EXPLAIN: - case TrinoSqlParser.KW_FETCH: - case TrinoSqlParser.KW_FILTER: - case TrinoSqlParser.KW_FINAL: - case TrinoSqlParser.KW_FIRST: - case TrinoSqlParser.KW_FOLLOWING: - case TrinoSqlParser.KW_FORMAT: - case TrinoSqlParser.KW_FUNCTIONS: - case TrinoSqlParser.KW_GRANT: - case TrinoSqlParser.KW_GRANTED: - case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: - case TrinoSqlParser.KW_GRAPHVIZ: - case TrinoSqlParser.KW_GROUPS: - case TrinoSqlParser.KW_HOUR: - case TrinoSqlParser.KW_IF: - case TrinoSqlParser.KW_IGNORE: - case TrinoSqlParser.KW_INCLUDING: - case TrinoSqlParser.KW_INITIAL: - case TrinoSqlParser.KW_INPUT: - case TrinoSqlParser.KW_INTERVAL: - case TrinoSqlParser.KW_INVOKER: - case TrinoSqlParser.KW_IO: - case TrinoSqlParser.KW_ISOLATION: - case TrinoSqlParser.KW_JSON: - case TrinoSqlParser.KW_LAST: - case TrinoSqlParser.KW_LATERAL: - case TrinoSqlParser.KW_LEVEL: - case TrinoSqlParser.KW_LIMIT: - case TrinoSqlParser.KW_LOCAL: - case TrinoSqlParser.KW_LOGICAL: - case TrinoSqlParser.KW_MAP: - case TrinoSqlParser.KW_MATCH: - case TrinoSqlParser.KW_MATCHED: - case TrinoSqlParser.KW_MATCHES: - case TrinoSqlParser.KW_MATCH_RECOGNIZE: - case TrinoSqlParser.KW_MATERIALIZED: - case TrinoSqlParser.KW_MEASURES: - case TrinoSqlParser.KW_MERGE: - case TrinoSqlParser.KW_MINUTE: - case TrinoSqlParser.KW_MONTH: - case TrinoSqlParser.KW_NEXT: - case TrinoSqlParser.KW_NFC: - case TrinoSqlParser.KW_NFD: - case TrinoSqlParser.KW_NFKC: - case TrinoSqlParser.KW_NFKD: - case TrinoSqlParser.KW_NO: - case TrinoSqlParser.KW_NONE: - case TrinoSqlParser.KW_NULLIF: - case TrinoSqlParser.KW_NULLS: - case TrinoSqlParser.KW_OFFSET: - case TrinoSqlParser.KW_OMIT: - case TrinoSqlParser.KW_ONE: - case TrinoSqlParser.KW_ONLY: - case TrinoSqlParser.KW_OPTION: - case TrinoSqlParser.KW_ORDINALITY: - case TrinoSqlParser.KW_OUTPUT: - case TrinoSqlParser.KW_OVER: - case TrinoSqlParser.KW_PARTITION: - case TrinoSqlParser.KW_PARTITIONS: - case TrinoSqlParser.KW_PAST: - case TrinoSqlParser.KW_PATH: - case TrinoSqlParser.KW_PATTERN: - case TrinoSqlParser.KW_PER: - case TrinoSqlParser.KW_PERMUTE: - case TrinoSqlParser.KW_POSITION: - case TrinoSqlParser.KW_PRECEDING: - case TrinoSqlParser.KW_PRECISION: - case TrinoSqlParser.KW_PRIVILEGES: - case TrinoSqlParser.KW_PROPERTIES: - case TrinoSqlParser.KW_RANGE: - case TrinoSqlParser.KW_READ: - case TrinoSqlParser.KW_REFRESH: - case TrinoSqlParser.KW_RENAME: - case TrinoSqlParser.KW_REPEATABLE: - case TrinoSqlParser.KW_REPLACE: - case TrinoSqlParser.KW_RESET: - case TrinoSqlParser.KW_RESPECT: - case TrinoSqlParser.KW_RESTRICT: - case TrinoSqlParser.KW_REVOKE: - case TrinoSqlParser.KW_ROLE: - case TrinoSqlParser.KW_ROLES: - case TrinoSqlParser.KW_ROLLBACK: - case TrinoSqlParser.KW_ROW: - case TrinoSqlParser.KW_ROWS: - case TrinoSqlParser.KW_RUNNING: - case TrinoSqlParser.KW_SCHEMA: - case TrinoSqlParser.KW_SCHEMAS: - case TrinoSqlParser.KW_SECOND: - case TrinoSqlParser.KW_SECURITY: - case TrinoSqlParser.KW_SEEK: - case TrinoSqlParser.KW_SERIALIZABLE: - case TrinoSqlParser.KW_SESSION: - case TrinoSqlParser.KW_SET: - case TrinoSqlParser.KW_SETS: - case TrinoSqlParser.KW_SHOW: - case TrinoSqlParser.KW_SOME: - case TrinoSqlParser.KW_START: - case TrinoSqlParser.KW_STATS: - case TrinoSqlParser.KW_SUBSET: - case TrinoSqlParser.KW_SUBSTRING: - case TrinoSqlParser.KW_SYSTEM: - case TrinoSqlParser.KW_TABLES: - case TrinoSqlParser.KW_TABLESAMPLE: - case TrinoSqlParser.KW_TEXT: - case TrinoSqlParser.KW_TIES: - case TrinoSqlParser.KW_TIME: - case TrinoSqlParser.KW_TIMESTAMP: - case TrinoSqlParser.KW_TO: - case TrinoSqlParser.KW_TRANSACTION: - case TrinoSqlParser.KW_TRUNCATE: - case TrinoSqlParser.KW_TRY_CAST: - case TrinoSqlParser.KW_TYPE: - case TrinoSqlParser.KW_UNBOUNDED: - case TrinoSqlParser.KW_UNCOMMITTED: - case TrinoSqlParser.KW_UNMATCHED: - case TrinoSqlParser.KW_UPDATE: - case TrinoSqlParser.KW_USE: - case TrinoSqlParser.KW_USER: - case TrinoSqlParser.KW_VALIDATE: - case TrinoSqlParser.KW_VERBOSE: - case TrinoSqlParser.KW_VIEW: - case TrinoSqlParser.KW_WINDOW: - case TrinoSqlParser.KW_WITHOUT: - case TrinoSqlParser.KW_WORK: - case TrinoSqlParser.KW_WRITE: - case TrinoSqlParser.KW_YEAR: - case TrinoSqlParser.KW_ZONE: - case TrinoSqlParser.IDENTIFIER: - case TrinoSqlParser.DIGIT_IDENTIFIER: - case TrinoSqlParser.QUOTED_IDENTIFIER: - case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - { - this.state = 2277; - localContext._windowName = this.identifier(); - } - break; - case TrinoSqlParser.T__0: + case 44: { - this.state = 2278; + localContext = new JsonValueContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2641; + this.match(TrinoSqlParser.KW_JSON_VALUE); + this.state = 2642; this.match(TrinoSqlParser.T__0); - this.state = 2279; - this.windowSpecification(); - this.state = 2280; + this.state = 2643; + this.jsonPathInvocation(); + this.state = 2646; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 231) { + { + this.state = 2644; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2645; + this.type_(0); + } + } + + this.state = 2652; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 337, this.context) ) { + case 1: + { + this.state = 2648; + (localContext as JsonValueContext)._emptyBehavior = this.jsonValueBehavior(); + this.state = 2649; + this.match(TrinoSqlParser.KW_ON); + this.state = 2650; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + } + this.state = 2658; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 70 || _la === 89 || _la === 183) { + { + this.state = 2654; + (localContext as JsonValueContext)._errorBehavior = this.jsonValueBehavior(); + this.state = 2655; + this.match(TrinoSqlParser.KW_ON); + this.state = 2656; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + this.state = 2660; this.match(TrinoSqlParser.T__1); } break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public windowFrame(): WindowFrameContext { - let localContext = new WindowFrameContext(this.context, this.state); - this.enterRule(localContext, 146, TrinoSqlParser.RULE_windowFrame); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2293; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 134) { + case 45: { - this.state = 2284; - this.match(TrinoSqlParser.KW_MEASURES); - this.state = 2285; - this.measureDefinition(); - this.state = 2290; + localContext = new JsonQueryContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2662; + this.match(TrinoSqlParser.KW_JSON_QUERY); + this.state = 2663; + this.match(TrinoSqlParser.T__0); + this.state = 2664; + this.jsonPathInvocation(); + this.state = 2671; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { - { + if (_la === 231) { { - this.state = 2286; - this.match(TrinoSqlParser.T__2); - this.state = 2287; - this.measureDefinition(); - } - } - this.state = 2292; + this.state = 2665; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2666; + this.type_(0); + this.state = 2669; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); + if (_la === 104) { + { + this.state = 2667; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2668; + this.jsonRepresentation(); + } + } + + } } + + this.state = 2676; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 304 || _la === 306) { + { + this.state = 2673; + this.jsonQueryWrapperBehavior(); + this.state = 2674; + this.match(TrinoSqlParser.KW_WRAPPER); + } } - } - this.state = 2295; - this.frameExtent(); - this.state = 2299; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 19) { - { - this.state = 2296; - this.match(TrinoSqlParser.KW_AFTER); - this.state = 2297; - this.match(TrinoSqlParser.KW_MATCH); - this.state = 2298; - this.skipTo(); - } - } - - this.state = 2302; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 199) { - { - this.state = 2301; + this.state = 2685; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 199)) { - this.errorHandler.recoverInline(this); + if (_la === 144 || _la === 189) { + { + this.state = 2678; + _la = this.tokenStream.LA(1); + if(!(_la === 144 || _la === 189)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2679; + this.match(TrinoSqlParser.KW_QUOTES); + this.state = 2683; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190) { + { + this.state = 2680; + this.match(TrinoSqlParser.KW_ON); + this.state = 2681; + this.match(TrinoSqlParser.KW_SCALAR); + this.state = 2682; + this.match(TrinoSqlParser.KW_TEXT_STRING); + } + } + + } } - else { - this.errorHandler.reportMatch(this); - this.consume(); + + this.state = 2691; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { + case 1: + { + this.state = 2687; + (localContext as JsonQueryContext)._emptyBehavior = this.jsonQueryBehavior(); + this.state = 2688; + this.match(TrinoSqlParser.KW_ON); + this.state = 2689; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; } + this.state = 2697; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 85 || _la === 89 || _la === 183) { + { + this.state = 2693; + (localContext as JsonQueryContext)._errorBehavior = this.jsonQueryBehavior(); + this.state = 2694; + this.match(TrinoSqlParser.KW_ON); + this.state = 2695; + this.match(TrinoSqlParser.KW_ERROR); + } } - } - this.state = 2309; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 167) { - { - this.state = 2304; - this.match(TrinoSqlParser.KW_PATTERN); - this.state = 2305; - this.match(TrinoSqlParser.T__0); - this.state = 2306; - this.rowPattern(0); - this.state = 2307; + this.state = 2699; this.match(TrinoSqlParser.T__1); } - } - - this.state = 2320; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 209) { + break; + case 46: { - this.state = 2311; - this.match(TrinoSqlParser.KW_SUBSET); - this.state = 2312; - this.subsetDefinition(); - this.state = 2317; + localContext = new JsonObjectContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2701; + this.match(TrinoSqlParser.KW_JSON_OBJECT); + this.state = 2702; + this.match(TrinoSqlParser.T__0); + this.state = 2731; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { + case 1: + { + this.state = 2703; + this.jsonObjectMember(); + this.state = 2708; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2704; + this.match(TrinoSqlParser.T__2); + this.state = 2705; + this.jsonObjectMember(); + } + } + this.state = 2710; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2717; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_NULL: + { + this.state = 2711; + this.match(TrinoSqlParser.KW_NULL); + this.state = 2712; + this.match(TrinoSqlParser.KW_ON); + this.state = 2713; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.KW_ABSENT: + { + this.state = 2714; + this.match(TrinoSqlParser.KW_ABSENT); + this.state = 2715; + this.match(TrinoSqlParser.KW_ON); + this.state = 2716; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.T__1: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_WITH: + case TrinoSqlParser.KW_WITHOUT: + break; + default: + break; + } + this.state = 2729; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_WITH: + { + this.state = 2719; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2720; + this.match(TrinoSqlParser.KW_UNIQUE); + this.state = 2722; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 146) { + { + this.state = 2721; + this.match(TrinoSqlParser.KW_KEYS); + } + } + + } + break; + case TrinoSqlParser.KW_WITHOUT: + { + this.state = 2724; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2725; + this.match(TrinoSqlParser.KW_UNIQUE); + this.state = 2727; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 146) { + { + this.state = 2726; + this.match(TrinoSqlParser.KW_KEYS); + } + } + + } + break; + case TrinoSqlParser.T__1: + case TrinoSqlParser.KW_RETURNING: + break; + default: + break; + } + } + break; + } + this.state = 2739; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 231) { { + this.state = 2733; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2734; + this.type_(0); + this.state = 2737; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 104) { + { + this.state = 2735; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2736; + this.jsonRepresentation(); + } + } + + } + } + + this.state = 2741; + this.match(TrinoSqlParser.T__1); + } + break; + case 47: + { + localContext = new JsonArrayContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2742; + this.match(TrinoSqlParser.KW_JSON_ARRAY); + this.state = 2743; + this.match(TrinoSqlParser.T__0); + this.state = 2760; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 356, this.context) ) { + case 1: { - this.state = 2313; - this.match(TrinoSqlParser.T__2); - this.state = 2314; - this.subsetDefinition(); + this.state = 2744; + this.jsonValueExpression(); + this.state = 2749; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2745; + this.match(TrinoSqlParser.T__2); + this.state = 2746; + this.jsonValueExpression(); + } + } + this.state = 2751; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2758; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_NULL: + { + this.state = 2752; + this.match(TrinoSqlParser.KW_NULL); + this.state = 2753; + this.match(TrinoSqlParser.KW_ON); + this.state = 2754; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.KW_ABSENT: + { + this.state = 2755; + this.match(TrinoSqlParser.KW_ABSENT); + this.state = 2756; + this.match(TrinoSqlParser.KW_ON); + this.state = 2757; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.T__1: + case TrinoSqlParser.KW_RETURNING: + break; + default: + break; } } - this.state = 2319; + break; + } + this.state = 2768; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 231) { + { + this.state = 2762; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2763; + this.type_(0); + this.state = 2766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); + if (_la === 104) { + { + this.state = 2764; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2765; + this.jsonRepresentation(); + } + } + + } + } + + this.state = 2770; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 2783; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 361, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 2781; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 360, this.context) ) { + case 1: + { + localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); + (localContext as SubscriptContext)._value = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); + this.state = 2773; + if (!(this.precpred(this.context, 24))) { + throw this.createFailedPredicateException("this.precpred(this.context, 24)"); + } + this.state = 2774; + this.match(TrinoSqlParser.T__7); + this.state = 2775; + (localContext as SubscriptContext)._index = this.valueExpression(0); + this.state = 2776; + this.match(TrinoSqlParser.T__8); + } + break; + case 2: + { + localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); + (localContext as DereferenceContext)._base = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); + this.state = 2778; + if (!(this.precpred(this.context, 22))) { + throw this.createFailedPredicateException("this.precpred(this.context, 22)"); + } + this.state = 2779; + this.match(TrinoSqlParser.T__3); + this.state = 2780; + (localContext as DereferenceContext)._fieldName = this.identifier(); + } + break; + } + } } + this.state = 2785; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 361, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public jsonPathInvocation(): JsonPathInvocationContext { + let localContext = new JsonPathInvocationContext(this.context, this.state); + this.enterRule(localContext, 146, TrinoSqlParser.RULE_jsonPathInvocation); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2786; + this.jsonValueExpression(); + this.state = 2787; + this.match(TrinoSqlParser.T__2); + this.state = 2788; + localContext._path = this.string_(); + this.state = 2791; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 28) { + { + this.state = 2789; + this.match(TrinoSqlParser.KW_AS); + this.state = 2790; + localContext._pathName = this.identifier(); } } - this.state = 2331; + this.state = 2802; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 65) { + if (_la === 203) { { - this.state = 2322; - this.match(TrinoSqlParser.KW_DEFINE); - this.state = 2323; - this.variableDefinition(); - this.state = 2328; + this.state = 2793; + this.match(TrinoSqlParser.KW_PASSING); + this.state = 2794; + this.jsonArgument(); + this.state = 2799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2324; + this.state = 2795; this.match(TrinoSqlParser.T__2); - this.state = 2325; - this.variableDefinition(); + this.state = 2796; + this.jsonArgument(); } } - this.state = 2330; + this.state = 2801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9668,85 +10900,27 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public frameExtent(): FrameExtentContext { - let localContext = new FrameExtentContext(this.context, this.state); - this.enterRule(localContext, 148, TrinoSqlParser.RULE_frameExtent); + public jsonValueExpression(): JsonValueExpressionContext { + let localContext = new JsonValueExpressionContext(this.context, this.state); + this.enterRule(localContext, 148, TrinoSqlParser.RULE_jsonValueExpression); + let _la: number; try { - this.state = 2357; + this.enterOuterAlt(localContext, 1); + { + this.state = 2804; + this.expression(); + this.state = 2807; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 305, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 104) { { - this.state = 2333; - localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); - this.state = 2334; - localContext._frameStart = this.frameBound(); + this.state = 2805; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2806; + this.jsonRepresentation(); } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2335; - localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); - this.state = 2336; - localContext._frameStart = this.frameBound(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2337; - localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); - this.state = 2338; - localContext._frameStart = this.frameBound(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 2339; - localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); - this.state = 2340; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 2341; - localContext._frameStart = this.frameBound(); - this.state = 2342; - this.match(TrinoSqlParser.KW_AND); - this.state = 2343; - localContext._end = this.frameBound(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 2345; - localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); - this.state = 2346; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 2347; - localContext._frameStart = this.frameBound(); - this.state = 2348; - this.match(TrinoSqlParser.KW_AND); - this.state = 2349; - localContext._end = this.frameBound(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 2351; - localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); - this.state = 2352; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 2353; - localContext._frameStart = this.frameBound(); - this.state = 2354; - this.match(TrinoSqlParser.KW_AND); - this.state = 2355; - localContext._end = this.frameBound(); - } - break; + } + } } catch (re) { @@ -9763,62 +10937,34 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public frameBound(): FrameBoundContext { - let localContext = new FrameBoundContext(this.context, this.state); - this.enterRule(localContext, 150, TrinoSqlParser.RULE_frameBound); + public jsonRepresentation(): JsonRepresentationContext { + let localContext = new JsonRepresentationContext(this.context, this.state); + this.enterRule(localContext, 150, TrinoSqlParser.RULE_jsonRepresentation); let _la: number; try { - this.state = 2368; + this.enterOuterAlt(localContext, 1); + { + this.state = 2809; + this.match(TrinoSqlParser.KW_JSON); + this.state = 2812; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 306, this.context) ) { - case 1: - localContext = new UnboundedFrameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2359; - this.match(TrinoSqlParser.KW_UNBOUNDED); - this.state = 2360; - (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_PRECEDING); - } - break; - case 2: - localContext = new UnboundedFrameContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2361; - this.match(TrinoSqlParser.KW_UNBOUNDED); - this.state = 2362; - (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_FOLLOWING); - } - break; - case 3: - localContext = new CurrentRowBoundContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2363; - this.match(TrinoSqlParser.KW_CURRENT); - this.state = 2364; - this.match(TrinoSqlParser.KW_ROW); - } - break; - case 4: - localContext = new BoundedFrameContext(localContext); - this.enterOuterAlt(localContext, 4); + _la = this.tokenStream.LA(1); + if (_la === 87) { { - this.state = 2365; - this.expression(); - this.state = 2366; - (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); + this.state = 2810; + this.match(TrinoSqlParser.KW_ENCODING); + this.state = 2811; _la = this.tokenStream.LA(1); - if(!(_la === 85 || _la === 171)) { - (localContext as BoundedFrameContext)._boundType = this.errorHandler.recoverInline(this); + if(!(((((_la - 291)) & ~0x1F) === 0 && ((1 << (_la - 291)) & 7) !== 0))) { + this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } } - break; + } + } } catch (re) { @@ -9835,88 +10981,49 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - - public rowPattern(): RowPatternContext; - public rowPattern(_p: number): RowPatternContext; - public rowPattern(_p?: number): RowPatternContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new RowPatternContext(this.context, parentState); - let previousContext = localContext; - let _startState = 152; - this.enterRecursionRule(localContext, 152, TrinoSqlParser.RULE_rowPattern, _p); + public jsonArgument(): JsonArgumentContext { + let localContext = new JsonArgumentContext(this.context, this.state); + this.enterRule(localContext, 152, TrinoSqlParser.RULE_jsonArgument); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - { - localContext = new QuantifiedPrimaryContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 2371; - this.patternPrimary(); - this.state = 2373; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { - case 1: - { - this.state = 2372; - this.patternQuantifier(); - } - break; + this.state = 2814; + this.jsonValueExpression(); + this.state = 2815; + this.match(TrinoSqlParser.KW_AS); + this.state = 2816; + this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonExistsErrorBehavior(): JsonExistsErrorBehaviorContext { + let localContext = new JsonExistsErrorBehaviorContext(this.context, this.state); + this.enterRule(localContext, 154, TrinoSqlParser.RULE_jsonExistsErrorBehavior); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2818; + _la = this.tokenStream.LA(1); + if(!(_la === 89 || _la === 97 || _la === 273 || _la === 283)) { + this.errorHandler.recoverInline(this); } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 2382; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 309, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 2380; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 308, this.context) ) { - case 1: - { - localContext = new PatternConcatenationContext(new RowPatternContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 2375; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 2376; - this.rowPattern(3); - } - break; - case 2: - { - localContext = new PatternAlternationContext(new RowPatternContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 2377; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 2378; - this.match(TrinoSqlParser.T__8); - this.state = 2379; - this.rowPattern(2); - } - break; - } - } - } - this.state = 2384; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 309, this.context); + else { + this.errorHandler.reportMatch(this); + this.consume(); } } } @@ -9930,106 +11037,119 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.unrollRecursionContexts(parentContext); + this.exitRule(); } return localContext; } - public patternPrimary(): PatternPrimaryContext { - let localContext = new PatternPrimaryContext(this.context, this.state); - this.enterRule(localContext, 154, TrinoSqlParser.RULE_patternPrimary); - let _la: number; + public jsonValueBehavior(): JsonValueBehaviorContext { + let localContext = new JsonValueBehaviorContext(this.context, this.state); + this.enterRule(localContext, 156, TrinoSqlParser.RULE_jsonValueBehavior); try { - this.state = 2410; + this.state = 2824; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 311, this.context) ) { - case 1: - localContext = new PatternVariableContext(localContext); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ERROR: this.enterOuterAlt(localContext, 1); { - this.state = 2385; - this.identifier(); + this.state = 2820; + this.match(TrinoSqlParser.KW_ERROR); } break; - case 2: - localContext = new EmptyPatternContext(localContext); + case TrinoSqlParser.KW_NULL: this.enterOuterAlt(localContext, 2); { - this.state = 2386; - this.match(TrinoSqlParser.T__0); - this.state = 2387; - this.match(TrinoSqlParser.T__1); + this.state = 2821; + this.match(TrinoSqlParser.KW_NULL); } break; - case 3: - localContext = new PatternPermutationContext(localContext); + case TrinoSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 3); { - this.state = 2388; - this.match(TrinoSqlParser.KW_PERMUTE); - this.state = 2389; - this.match(TrinoSqlParser.T__0); - this.state = 2390; - this.rowPattern(0); - this.state = 2395; + this.state = 2822; + this.match(TrinoSqlParser.KW_DEFAULT); + this.state = 2823; + this.expression(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonQueryWrapperBehavior(): JsonQueryWrapperBehaviorContext { + let localContext = new JsonQueryWrapperBehaviorContext(this.context, this.state); + this.enterRule(localContext, 158, TrinoSqlParser.RULE_jsonQueryWrapperBehavior); + let _la: number; + try { + this.state = 2837; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_WITHOUT: + this.enterOuterAlt(localContext, 1); + { + this.state = 2826; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2828; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 27) { { - { - this.state = 2391; - this.match(TrinoSqlParser.T__2); - this.state = 2392; - this.rowPattern(0); - } + this.state = 2827; + this.match(TrinoSqlParser.KW_ARRAY); } - this.state = 2397; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); } - this.state = 2398; - this.match(TrinoSqlParser.T__1); + } break; - case 4: - localContext = new GroupedPatternContext(localContext); - this.enterOuterAlt(localContext, 4); + case TrinoSqlParser.KW_WITH: + this.enterOuterAlt(localContext, 2); { - this.state = 2400; - this.match(TrinoSqlParser.T__0); - this.state = 2401; - this.rowPattern(0); - this.state = 2402; - this.match(TrinoSqlParser.T__1); - } - break; - case 5: - localContext = new PartitionStartAnchorContext(localContext); - this.enterOuterAlt(localContext, 5); - { - this.state = 2404; - this.match(TrinoSqlParser.T__9); + this.state = 2830; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2832; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 49 || _la === 280) { + { + this.state = 2831; + _la = this.tokenStream.LA(1); + if(!(_la === 49 || _la === 280)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - break; - case 6: - localContext = new PartitionEndAnchorContext(localContext); - this.enterOuterAlt(localContext, 6); - { - this.state = 2405; - this.match(TrinoSqlParser.T__10); + + this.state = 2835; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 27) { + { + this.state = 2834; + this.match(TrinoSqlParser.KW_ARRAY); + } } - break; - case 7: - localContext = new ExcludedPatternContext(localContext); - this.enterOuterAlt(localContext, 7); - { - this.state = 2406; - this.match(TrinoSqlParser.T__11); - this.state = 2407; - this.rowPattern(0); - this.state = 2408; - this.match(TrinoSqlParser.T__12); + } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -10046,130 +11166,98 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public patternQuantifier(): PatternQuantifierContext { - let localContext = new PatternQuantifierContext(this.context, this.state); - this.enterRule(localContext, 156, TrinoSqlParser.RULE_patternQuantifier); - let _la: number; + public jsonQueryBehavior(): JsonQueryBehaviorContext { + let localContext = new JsonQueryBehaviorContext(this.context, this.state); + this.enterRule(localContext, 160, TrinoSqlParser.RULE_jsonQueryBehavior); try { - this.state = 2442; + this.state = 2845; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 372, this.context) ) { case 1: - localContext = new ZeroOrMoreQuantifierContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2412; - this.match(TrinoSqlParser.ASTERISK); - this.state = 2414; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { - case 1: - { - this.state = 2413; - (localContext as ZeroOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2839; + this.match(TrinoSqlParser.KW_ERROR); } break; case 2: - localContext = new OneOrMoreQuantifierContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2416; - this.match(TrinoSqlParser.PLUS); - this.state = 2418; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { - case 1: - { - this.state = 2417; - (localContext as OneOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2840; + this.match(TrinoSqlParser.KW_NULL); } break; case 3: - localContext = new ZeroOrOneQuantifierContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2420; - this.match(TrinoSqlParser.QUESTION_MARK); - this.state = 2422; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { - case 1: - { - this.state = 2421; - (localContext as ZeroOrOneQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2841; + this.match(TrinoSqlParser.KW_EMPTY); + this.state = 2842; + this.match(TrinoSqlParser.KW_ARRAY); } break; case 4: - localContext = new RangeQuantifierContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2424; - this.match(TrinoSqlParser.T__13); - this.state = 2425; - (localContext as RangeQuantifierContext)._exactly = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2426; - this.match(TrinoSqlParser.T__14); - this.state = 2428; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { - case 1: - { - this.state = 2427; - (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2843; + this.match(TrinoSqlParser.KW_EMPTY); + this.state = 2844; + this.match(TrinoSqlParser.KW_OBJECT); } break; - case 5: - localContext = new RangeQuantifierContext(localContext); - this.enterOuterAlt(localContext, 5); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonObjectMember(): JsonObjectMemberContext { + let localContext = new JsonObjectMemberContext(this.context, this.state); + this.enterRule(localContext, 162, TrinoSqlParser.RULE_jsonObjectMember); + try { + this.state = 2858; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 374, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 2430; - this.match(TrinoSqlParser.T__13); - this.state = 2432; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 265) { - { - this.state = 2431; - (localContext as RangeQuantifierContext)._atLeast = this.match(TrinoSqlParser.INTEGER_VALUE); - } - } - - this.state = 2434; - this.match(TrinoSqlParser.T__2); - this.state = 2436; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 265) { - { - this.state = 2435; - (localContext as RangeQuantifierContext)._atMost = this.match(TrinoSqlParser.INTEGER_VALUE); - } - } - - this.state = 2438; - this.match(TrinoSqlParser.T__14); - this.state = 2440; + this.state = 2848; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 318, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 373, this.context) ) { case 1: { - this.state = 2439; - (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + this.state = 2847; + this.match(TrinoSqlParser.KW_KEY); } break; } + this.state = 2850; + this.expression(); + this.state = 2851; + this.match(TrinoSqlParser.KW_VALUE); + this.state = 2852; + this.jsonValueExpression(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 2854; + this.expression(); + this.state = 2855; + this.match(TrinoSqlParser.T__9); + this.state = 2856; + this.jsonValueExpression(); } break; } @@ -10188,18 +11276,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public updateAssignment(): UpdateAssignmentContext { - let localContext = new UpdateAssignmentContext(this.context, this.state); - this.enterRule(localContext, 158, TrinoSqlParser.RULE_updateAssignment); + public processingMode(): ProcessingModeContext { + let localContext = new ProcessingModeContext(this.context, this.state); + this.enterRule(localContext, 164, TrinoSqlParser.RULE_processingMode); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2444; - this.identifier(); - this.state = 2445; - this.match(TrinoSqlParser.EQ); - this.state = 2446; - this.expression(); + this.state = 2860; + _la = this.tokenStream.LA(1); + if(!(_la === 100 || _la === 241)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } catch (re) { @@ -10216,48 +11308,29 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public explainOption(): ExplainOptionContext { - let localContext = new ExplainOptionContext(this.context, this.state); - this.enterRule(localContext, 160, TrinoSqlParser.RULE_explainOption); - let _la: number; + public nullTreatment(): NullTreatmentContext { + let localContext = new NullTreatmentContext(this.context, this.state); + this.enterRule(localContext, 166, TrinoSqlParser.RULE_nullTreatment); try { - this.state = 2452; + this.state = 2866; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_FORMAT: - localContext = new ExplainFormatContext(localContext); + case TrinoSqlParser.KW_IGNORE: this.enterOuterAlt(localContext, 1); { - this.state = 2448; - this.match(TrinoSqlParser.KW_FORMAT); - this.state = 2449; - (localContext as ExplainFormatContext)._value = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 95 || _la === 117 || _la === 215)) { - (localContext as ExplainFormatContext)._value = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 2862; + this.match(TrinoSqlParser.KW_IGNORE); + this.state = 2863; + this.match(TrinoSqlParser.KW_NULLS); } break; - case TrinoSqlParser.KW_TYPE: - localContext = new ExplainTypeContext(localContext); + case TrinoSqlParser.KW_RESPECT: this.enterOuterAlt(localContext, 2); { - this.state = 2450; - this.match(TrinoSqlParser.KW_TYPE); - this.state = 2451; - (localContext as ExplainTypeContext)._value = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 67 || _la === 113 || _la === 127 || _la === 236)) { - (localContext as ExplainTypeContext)._value = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 2864; + this.match(TrinoSqlParser.KW_RESPECT); + this.state = 2865; + this.match(TrinoSqlParser.KW_NULLS); } break; default: @@ -10278,41 +11351,38 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public transactionMode(): TransactionModeContext { - let localContext = new TransactionModeContext(this.context, this.state); - this.enterRule(localContext, 162, TrinoSqlParser.RULE_transactionMode); - let _la: number; + public string_(): StringContext { + let localContext = new StringContext(this.context, this.state); + this.enterRule(localContext, 168, TrinoSqlParser.RULE_string); try { - this.state = 2459; + this.state = 2874; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_ISOLATION: - localContext = new IsolationLevelContext(localContext); + case TrinoSqlParser.STRING: + localContext = new BasicStringLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2454; - this.match(TrinoSqlParser.KW_ISOLATION); - this.state = 2455; - this.match(TrinoSqlParser.KW_LEVEL); - this.state = 2456; - this.levelOfIsolation(); + this.state = 2868; + this.match(TrinoSqlParser.STRING); } break; - case TrinoSqlParser.KW_READ: - localContext = new TransactionAccessModeContext(localContext); + case TrinoSqlParser.UNICODE_STRING: + localContext = new UnicodeStringLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2457; - this.match(TrinoSqlParser.KW_READ); - this.state = 2458; - (localContext as TransactionAccessModeContext)._accessMode = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 155 || _la === 246)) { - (localContext as TransactionAccessModeContext)._accessMode = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 2869; + this.match(TrinoSqlParser.UNICODE_STRING); + this.state = 2872; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 376, this.context) ) { + case 1: + { + this.state = 2870; + this.match(TrinoSqlParser.KW_UESCAPE); + this.state = 2871; + this.match(TrinoSqlParser.STRING); + } + break; } } break; @@ -10334,49 +11404,35 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public levelOfIsolation(): LevelOfIsolationContext { - let localContext = new LevelOfIsolationContext(this.context, this.state); - this.enterRule(localContext, 164, TrinoSqlParser.RULE_levelOfIsolation); + public timeZoneSpecifier(): TimeZoneSpecifierContext { + let localContext = new TimeZoneSpecifierContext(this.context, this.state); + this.enterRule(localContext, 170, TrinoSqlParser.RULE_timeZoneSpecifier); try { - this.state = 2468; + this.state = 2882; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { case 1: - localContext = new ReadUncommittedContext(localContext); + localContext = new TimeZoneIntervalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2461; - this.match(TrinoSqlParser.KW_READ); - this.state = 2462; - this.match(TrinoSqlParser.KW_UNCOMMITTED); + this.state = 2876; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2877; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 2878; + this.interval(); } break; case 2: - localContext = new ReadCommittedContext(localContext); + localContext = new TimeZoneStringContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2463; - this.match(TrinoSqlParser.KW_READ); - this.state = 2464; - this.match(TrinoSqlParser.KW_COMMITTED); - } - break; - case 3: - localContext = new RepeatableReadContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2465; - this.match(TrinoSqlParser.KW_REPEATABLE); - this.state = 2466; - this.match(TrinoSqlParser.KW_READ); - } - break; - case 4: - localContext = new SerializableContext(localContext); - this.enterOuterAlt(localContext, 4); - { - this.state = 2467; - this.match(TrinoSqlParser.KW_SERIALIZABLE); + this.state = 2879; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2880; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 2881; + this.string_(); } break; } @@ -10395,76 +11451,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public callArgument(): CallArgumentContext { - let localContext = new CallArgumentContext(this.context, this.state); - this.enterRule(localContext, 166, TrinoSqlParser.RULE_callArgument); + public comparisonOperator(): ComparisonOperatorContext { + let localContext = new ComparisonOperatorContext(this.context, this.state); + this.enterRule(localContext, 172, TrinoSqlParser.RULE_comparisonOperator); + let _la: number; try { - this.state = 2475; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { - case 1: - localContext = new PositionalArgumentContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2470; - this.expression(); - } - break; - case 2: - localContext = new NamedArgumentContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2471; - this.identifier(); - this.state = 2472; - this.match(TrinoSqlParser.T__15); - this.state = 2473; - this.expression(); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 2884; + _la = this.tokenStream.LA(1); + if(!(((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 63) !== 0))) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public pathElement(): PathElementContext { - let localContext = new PathElementContext(this.context, this.state); - this.enterRule(localContext, 168, TrinoSqlParser.RULE_pathElement); - try { - this.state = 2482; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 324, this.context) ) { - case 1: - localContext = new QualifiedArgumentContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2477; - this.identifier(); - this.state = 2478; - this.match(TrinoSqlParser.T__3); - this.state = 2479; - this.identifier(); - } - break; - case 2: - localContext = new UnqualifiedArgumentContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2481; - this.identifier(); - } - break; } } catch (re) { @@ -10481,30 +11483,21 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public pathSpecification(): PathSpecificationContext { - let localContext = new PathSpecificationContext(this.context, this.state); - this.enterRule(localContext, 170, TrinoSqlParser.RULE_pathSpecification); + public comparisonQuantifier(): ComparisonQuantifierContext { + let localContext = new ComparisonQuantifierContext(this.context, this.state); + this.enterRule(localContext, 174, TrinoSqlParser.RULE_comparisonQuantifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2484; - this.pathElement(); - this.state = 2489; - this.errorHandler.sync(this); + this.state = 2886; _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 2485; - this.match(TrinoSqlParser.T__2); - this.state = 2486; - this.pathElement(); - } - } - this.state = 2491; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + if(!(_la === 22 || _la === 26 || _la === 254)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } } } @@ -10522,16 +11515,16 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public privilege(): PrivilegeContext { - let localContext = new PrivilegeContext(this.context, this.state); - this.enterRule(localContext, 172, TrinoSqlParser.RULE_privilege); + public booleanValue(): BooleanValueContext { + let localContext = new BooleanValueContext(this.context, this.state); + this.enterRule(localContext, 176, TrinoSqlParser.RULE_booleanValue); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2492; + this.state = 2888; _la = this.tokenStream.LA(1); - if(!(_la === 62 || _la === 108 || _la === 200 || _la === 232)) { + if(!(_la === 97 || _la === 273)) { this.errorHandler.recoverInline(this); } else { @@ -10554,28 +11547,50 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public tableOrViewName(): TableOrViewNameContext { - let localContext = new TableOrViewNameContext(this.context, this.state); - this.enterRule(localContext, 174, TrinoSqlParser.RULE_tableOrViewName); + public interval(): IntervalContext { + let localContext = new IntervalContext(this.context, this.state); + this.enterRule(localContext, 178, TrinoSqlParser.RULE_interval); + let _la: number; try { - this.state = 2496; + this.enterOuterAlt(localContext, 1); + { + this.state = 2890; + this.match(TrinoSqlParser.KW_INTERVAL); + this.state = 2892; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 318 || _la === 319) { { - this.state = 2494; - this.tableName(); + this.state = 2891; + localContext._sign = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 318 || _la === 319)) { + localContext._sign = this.errorHandler.recoverInline(this); } - break; - case 2: - this.enterOuterAlt(localContext, 2); + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 2894; + this.string_(); + this.state = 2895; + localContext._from_ = this.intervalField(); + this.state = 2898; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { + case 1: { - this.state = 2495; - this.viewName(); + this.state = 2896; + this.match(TrinoSqlParser.KW_TO); + this.state = 2897; + localContext._to = this.intervalField(); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -10591,38 +11606,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public tableName(): TableNameContext { - let localContext = new TableNameContext(this.context, this.state); - this.enterRule(localContext, 176, TrinoSqlParser.RULE_tableName); + public intervalField(): IntervalFieldContext { + let localContext = new IntervalFieldContext(this.context, this.state); + this.enterRule(localContext, 180, TrinoSqlParser.RULE_intervalField); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2498; - this.tablePath(); + this.state = 2900; + _la = this.tokenStream.LA(1); + if(!(_la === 67 || _la === 118 || _la === 170 || _la === 171 || _la === 245 || _la === 310)) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public tableNameCreate(): TableNameCreateContext { - let localContext = new TableNameCreateContext(this.context, this.state); - this.enterRule(localContext, 178, TrinoSqlParser.RULE_tableNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2500; - this.tablePath(); } } catch (re) { @@ -10639,38 +11638,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public viewName(): ViewNameContext { - let localContext = new ViewNameContext(this.context, this.state); - this.enterRule(localContext, 180, TrinoSqlParser.RULE_viewName); + public normalForm(): NormalFormContext { + let localContext = new NormalFormContext(this.context, this.state); + this.enterRule(localContext, 182, TrinoSqlParser.RULE_normalForm); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2502; - this.viewPath(); + this.state = 2902; + _la = this.tokenStream.LA(1); + if(!(((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 15) !== 0))) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public viewNameCreate(): ViewNameCreateContext { - let localContext = new ViewNameCreateContext(this.context, this.state); - this.enterRule(localContext, 182, TrinoSqlParser.RULE_viewNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2504; - this.viewPath(); } } catch (re) { @@ -10687,126 +11670,341 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public tablePath(): TablePathContext { - let localContext = new TablePathContext(this.context, this.state); - this.enterRule(localContext, 184, TrinoSqlParser.RULE_tablePath); + + public type_(): TypeContext; + public type_(_p: number): TypeContext; + public type_(_p?: number): TypeContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new TypeContext(this.context, parentState); + let previousContext = localContext; + let _startState = 184; + this.enterRecursionRule(localContext, 184, TrinoSqlParser.RULE_type, _p); + let _la: number; try { - this.state = 2517; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2995; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 391, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 2506; - localContext._table = this.identifier(); + localContext = new RowTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 2905; + this.match(TrinoSqlParser.KW_ROW); + this.state = 2906; + this.match(TrinoSqlParser.T__0); + this.state = 2907; + this.rowField(); + this.state = 2912; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2908; + this.match(TrinoSqlParser.T__2); + this.state = 2909; + this.rowField(); + } + } + this.state = 2914; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2915; + this.match(TrinoSqlParser.T__1); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 2507; - localContext._schema = this.identifier(); - this.state = 2508; - this.match(TrinoSqlParser.T__3); - this.state = 2509; - localContext._table = this.identifier(); + localContext = new IntervalTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2917; + this.match(TrinoSqlParser.KW_INTERVAL); + this.state = 2918; + (localContext as IntervalTypeContext)._from_ = this.intervalField(); + this.state = 2921; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { + case 1: + { + this.state = 2919; + this.match(TrinoSqlParser.KW_TO); + this.state = 2920; + (localContext as IntervalTypeContext)._to = this.intervalField(); + } + break; + } } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 2511; - localContext._catalog = this.identifier(); - this.state = 2512; - this.match(TrinoSqlParser.T__3); - this.state = 2513; - localContext._schema = this.identifier(); - this.state = 2514; - this.match(TrinoSqlParser.T__3); - this.state = 2515; - localContext._table = this.identifier(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public viewPath(): ViewPathContext { - let localContext = new ViewPathContext(this.context, this.state); - this.enterRule(localContext, 186, TrinoSqlParser.RULE_viewPath); - try { - this.state = 2530; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2923; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); + this.state = 2928; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 383, this.context) ) { + case 1: + { + this.state = 2924; + this.match(TrinoSqlParser.T__0); + this.state = 2925; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2926; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 2933; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { + case 1: + { + this.state = 2930; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2931; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2932; + this.match(TrinoSqlParser.KW_ZONE); + } + break; + } + } + break; + case 4: { - this.state = 2519; - localContext._view = this.identifier(); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2935; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); + this.state = 2940; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 1) { + { + this.state = 2936; + this.match(TrinoSqlParser.T__0); + this.state = 2937; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2938; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 2942; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2943; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2944; + this.match(TrinoSqlParser.KW_ZONE); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 5: { - this.state = 2520; - localContext._schema = this.identifier(); - this.state = 2521; - this.match(TrinoSqlParser.T__3); - this.state = 2522; - localContext._view = this.identifier(); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2945; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); + this.state = 2950; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) { + case 1: + { + this.state = 2946; + this.match(TrinoSqlParser.T__0); + this.state = 2947; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2948; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 2955; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { + case 1: + { + this.state = 2952; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2953; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2954; + this.match(TrinoSqlParser.KW_ZONE); + } + break; + } } break; - case 3: - this.enterOuterAlt(localContext, 3); + case 6: { - this.state = 2524; - localContext._catalog = this.identifier(); - this.state = 2525; - this.match(TrinoSqlParser.T__3); - this.state = 2526; - localContext._schema = this.identifier(); - this.state = 2527; - this.match(TrinoSqlParser.T__3); - this.state = 2528; - localContext._view = this.identifier(); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2957; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); + this.state = 2962; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 1) { + { + this.state = 2958; + this.match(TrinoSqlParser.T__0); + this.state = 2959; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2960; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 2964; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2965; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2966; + this.match(TrinoSqlParser.KW_ZONE); + } + break; + case 7: + { + localContext = new DoublePrecisionTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2967; + this.match(TrinoSqlParser.KW_DOUBLE); + this.state = 2968; + this.match(TrinoSqlParser.KW_PRECISION); + } + break; + case 8: + { + localContext = new LegacyArrayTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2969; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 2970; + this.match(TrinoSqlParser.LT); + this.state = 2971; + this.type_(0); + this.state = 2972; + this.match(TrinoSqlParser.GT); + } + break; + case 9: + { + localContext = new LegacyMapTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2974; + this.match(TrinoSqlParser.KW_MAP); + this.state = 2975; + this.match(TrinoSqlParser.LT); + this.state = 2976; + (localContext as LegacyMapTypeContext)._keyType = this.type_(0); + this.state = 2977; + this.match(TrinoSqlParser.T__2); + this.state = 2978; + (localContext as LegacyMapTypeContext)._valueType = this.type_(0); + this.state = 2979; + this.match(TrinoSqlParser.GT); + } + break; + case 10: + { + localContext = new GenericTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2981; + this.identifier(); + this.state = 2993; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { + case 1: + { + this.state = 2982; + this.match(TrinoSqlParser.T__0); + this.state = 2983; + this.typeParameter(); + this.state = 2988; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2984; + this.match(TrinoSqlParser.T__2); + this.state = 2985; + this.typeParameter(); + } + } + this.state = 2990; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2991; + this.match(TrinoSqlParser.T__1); + } + break; + } } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.context!.stop = this.tokenStream.LT(-1); + this.state = 3006; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 393, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + { + localContext = new ArrayTypeContext(new TypeContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_type); + this.state = 2997; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 2998; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 3002; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) { + case 1: + { + this.state = 2999; + this.match(TrinoSqlParser.T__7); + this.state = 3000; + this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 3001; + this.match(TrinoSqlParser.T__8); + } + break; + } + } + } + } + this.state = 3008; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 393, this.context); } - } - finally { - this.exitRule(); - } - return localContext; - } - public schemaName(): SchemaNameContext { - let localContext = new SchemaNameContext(this.context, this.state); - this.enterRule(localContext, 188, TrinoSqlParser.RULE_schemaName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2532; - this.schemaPath(); } } catch (re) { @@ -10819,18 +12017,33 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public schemaNameCreate(): SchemaNameCreateContext { - let localContext = new SchemaNameCreateContext(this.context, this.state); - this.enterRule(localContext, 190, TrinoSqlParser.RULE_schemaNameCreate); + public rowField(): RowFieldContext { + let localContext = new RowFieldContext(this.context, this.state); + this.enterRule(localContext, 186, TrinoSqlParser.RULE_rowField); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2534; - this.schemaPath(); + this.state = 3013; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3009; + this.type_(0); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3010; + this.identifier(); + this.state = 3011; + this.type_(0); + } + break; } } catch (re) { @@ -10847,232 +12060,21 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public schemaPath(): SchemaPathContext { - let localContext = new SchemaPathContext(this.context, this.state); - this.enterRule(localContext, 192, TrinoSqlParser.RULE_schemaPath); + public typeParameter(): TypeParameterContext { + let localContext = new TypeParameterContext(this.context, this.state); + this.enterRule(localContext, 188, TrinoSqlParser.RULE_typeParameter); try { - this.state = 2541; + this.state = 3017; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 2536; - localContext._schema = this.identifier(); + this.state = 3015; + this.match(TrinoSqlParser.INTEGER_VALUE); } break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2537; - localContext._catalog = this.identifier(); - this.state = 2538; - this.match(TrinoSqlParser.T__3); - this.state = 2539; - localContext._schema = this.identifier(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public catalogName(): CatalogNameContext { - let localContext = new CatalogNameContext(this.context, this.state); - this.enterRule(localContext, 194, TrinoSqlParser.RULE_catalogName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2543; - localContext._catalog = this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public catalogNameCreate(): CatalogNameCreateContext { - let localContext = new CatalogNameCreateContext(this.context, this.state); - this.enterRule(localContext, 196, TrinoSqlParser.RULE_catalogNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2545; - localContext._catalog = this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public functionName(): FunctionNameContext { - let localContext = new FunctionNameContext(this.context, this.state); - this.enterRule(localContext, 198, TrinoSqlParser.RULE_functionName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2547; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public columnName(): ColumnNameContext { - let localContext = new ColumnNameContext(this.context, this.state); - this.enterRule(localContext, 200, TrinoSqlParser.RULE_columnName); - try { - this.state = 2551; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 2549; - this.qualifiedName(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2550; - if (!(this.shouldMatchEmpty())) { - throw this.createFailedPredicateException("this.shouldMatchEmpty()"); - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public columnNameCreate(): ColumnNameCreateContext { - let localContext = new ColumnNameCreateContext(this.context, this.state); - this.enterRule(localContext, 202, TrinoSqlParser.RULE_columnNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2553; - this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public qualifiedName(): QualifiedNameContext { - let localContext = new QualifiedNameContext(this.context, this.state); - this.enterRule(localContext, 204, TrinoSqlParser.RULE_qualifiedName); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2555; - this.identifier(); - this.state = 2560; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 2556; - this.match(TrinoSqlParser.T__3); - this.state = 2557; - this.identifier(); - } - } - } - this.state = 2562; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public grantor(): GrantorContext { - let localContext = new GrantorContext(this.context, this.state); - this.enterRule(localContext, 206, TrinoSqlParser.RULE_grantor); - try { - this.state = 2566; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -11083,26 +12085,41 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_FETCH: @@ -11111,16 +12128,18 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -11128,13 +12147,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -11145,6 +12172,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -11154,6 +12182,8 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NONE: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -11162,27 +12192,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -11190,6 +12230,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -11209,26 +12250,40 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: @@ -11236,27 +12291,10 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - localContext = new SpecifiedPrincipalContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2563; - this.principal(); - } - break; - case TrinoSqlParser.KW_CURRENT_USER: - localContext = new CurrentUserGrantorContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2564; - this.match(TrinoSqlParser.KW_CURRENT_USER); - } - break; - case TrinoSqlParser.KW_CURRENT_ROLE: - localContext = new CurrentRoleGrantorContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2565; - this.match(TrinoSqlParser.KW_CURRENT_ROLE); + this.state = 3016; + this.type_(0); } break; default: @@ -11277,41 +12315,20 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public principal(): PrincipalContext { - let localContext = new PrincipalContext(this.context, this.state); - this.enterRule(localContext, 208, TrinoSqlParser.RULE_principal); + public whenClause(): WhenClauseContext { + let localContext = new WhenClauseContext(this.context, this.state); + this.enterRule(localContext, 190, TrinoSqlParser.RULE_whenClause); try { - this.state = 2573; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 333, this.context) ) { - case 1: - localContext = new UnspecifiedPrincipalContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2568; - this.identifier(); - } - break; - case 2: - localContext = new UserPrincipalContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2569; - this.match(TrinoSqlParser.KW_USER); - this.state = 2570; - this.identifier(); - } - break; - case 3: - localContext = new RolePrincipalContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2571; - this.match(TrinoSqlParser.KW_ROLE); - this.state = 2572; - this.identifier(); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 3019; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3020; + localContext._condition = this.expression(); + this.state = 3021; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3022; + localContext._result = this.expression(); } } catch (re) { @@ -11328,31 +12345,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public roles(): RolesContext { - let localContext = new RolesContext(this.context, this.state); - this.enterRule(localContext, 210, TrinoSqlParser.RULE_roles); - let _la: number; + public filter(): FilterContext { + let localContext = new FilterContext(this.context, this.state); + this.enterRule(localContext, 192, TrinoSqlParser.RULE_filter); try { this.enterOuterAlt(localContext, 1); { - this.state = 2575; - this.identifier(); - this.state = 2580; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 2576; - this.match(TrinoSqlParser.T__2); - this.state = 2577; - this.identifier(); - } - } - this.state = 2582; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + this.state = 3024; + this.match(TrinoSqlParser.KW_FILTER); + this.state = 3025; + this.match(TrinoSqlParser.T__0); + this.state = 3026; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 3027; + this.booleanExpression(0); + this.state = 3028; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -11369,29 +12377,212 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public identifier(): IdentifierContext { - let localContext = new IdentifierContext(this.context, this.state); - this.enterRule(localContext, 212, TrinoSqlParser.RULE_identifier); + public mergeCase(): MergeCaseContext { + let localContext = new MergeCaseContext(this.context, this.state); + this.enterRule(localContext, 194, TrinoSqlParser.RULE_mergeCase); + let _la: number; try { - this.state = 2588; + this.state = 3094; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.IDENTIFIER: - localContext = new UnquotedIdentifierContext(localContext); + switch (this.interpreter.adaptivePredict(this.tokenStream, 403, this.context) ) { + case 1: + localContext = new MergeUpdateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2583; - this.match(TrinoSqlParser.IDENTIFIER); + this.state = 3030; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3031; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 3034; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 25) { + { + this.state = 3032; + this.match(TrinoSqlParser.KW_AND); + this.state = 3033; + (localContext as MergeUpdateContext)._condition = this.expression(); + } + } + + this.state = 3036; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3037; + this.match(TrinoSqlParser.KW_UPDATE); + this.state = 3038; + this.match(TrinoSqlParser.KW_SET); + this.state = 3039; + (localContext as MergeUpdateContext)._identifier = this.identifier(); + (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); + this.state = 3040; + this.match(TrinoSqlParser.EQ); + this.state = 3041; + (localContext as MergeUpdateContext)._expression = this.expression(); + (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); + this.state = 3049; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3042; + this.match(TrinoSqlParser.T__2); + this.state = 3043; + (localContext as MergeUpdateContext)._identifier = this.identifier(); + (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); + this.state = 3044; + this.match(TrinoSqlParser.EQ); + this.state = 3045; + (localContext as MergeUpdateContext)._expression = this.expression(); + (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); + } + } + this.state = 3051; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; - case TrinoSqlParser.QUOTED_IDENTIFIER: - localContext = new QuotedIdentifierContext(localContext); + case 2: + localContext = new MergeDeleteContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2584; - this.match(TrinoSqlParser.QUOTED_IDENTIFIER); + this.state = 3052; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3053; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 3056; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 25) { + { + this.state = 3054; + this.match(TrinoSqlParser.KW_AND); + this.state = 3055; + (localContext as MergeDeleteContext)._condition = this.expression(); + } + } + + this.state = 3058; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3059; + this.match(TrinoSqlParser.KW_DELETE); + } + break; + case 3: + localContext = new MergeInsertContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3060; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3061; + this.match(TrinoSqlParser.KW_NOT); + this.state = 3062; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 3065; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 25) { + { + this.state = 3063; + this.match(TrinoSqlParser.KW_AND); + this.state = 3064; + (localContext as MergeInsertContext)._condition = this.expression(); + } + } + + this.state = 3067; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3068; + this.match(TrinoSqlParser.KW_INSERT); + this.state = 3080; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 1) { + { + this.state = 3069; + this.match(TrinoSqlParser.T__0); + this.state = 3070; + (localContext as MergeInsertContext)._identifier = this.identifier(); + (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); + this.state = 3075; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3071; + this.match(TrinoSqlParser.T__2); + this.state = 3072; + (localContext as MergeInsertContext)._identifier = this.identifier(); + (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); + } + } + this.state = 3077; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3078; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 3082; + this.match(TrinoSqlParser.KW_VALUES); + this.state = 3083; + this.match(TrinoSqlParser.T__0); + this.state = 3084; + (localContext as MergeInsertContext)._expression = this.expression(); + (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); + this.state = 3089; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3085; + this.match(TrinoSqlParser.T__2); + this.state = 3086; + (localContext as MergeInsertContext)._expression = this.expression(); + (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); + } + } + this.state = 3091; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3092; + this.match(TrinoSqlParser.T__1); } break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public over(): OverContext { + let localContext = new OverContext(this.context, this.state); + this.enterRule(localContext, 196, TrinoSqlParser.RULE_over); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3096; + this.match(TrinoSqlParser.KW_OVER); + this.state = 3102; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -11402,26 +12593,41 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_FETCH: @@ -11430,16 +12636,18 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -11447,13 +12655,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -11464,6 +12680,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -11473,6 +12690,8 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NONE: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -11481,27 +12700,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -11509,6 +12738,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -11528,1765 +12758,9277 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: - localContext = new UnquotedIdentifierContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2585; - this.nonReserved(); - } - break; + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - localContext = new BackQuotedIdentifierContext(localContext); - this.enterOuterAlt(localContext, 4); { - this.state = 2586; - this.match(TrinoSqlParser.BACKQUOTED_IDENTIFIER); + this.state = 3097; + localContext._windowName = this.identifier(); } break; - case TrinoSqlParser.DIGIT_IDENTIFIER: - localContext = new DigitIdentifierContext(localContext); - this.enterOuterAlt(localContext, 5); + case TrinoSqlParser.T__0: { - this.state = 2587; - this.match(TrinoSqlParser.DIGIT_IDENTIFIER); + this.state = 3098; + this.match(TrinoSqlParser.T__0); + this.state = 3099; + this.windowSpecification(); + this.state = 3100; + this.match(TrinoSqlParser.T__1); } break; default: throw new antlr.NoViableAltException(this); } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public windowFrame(): WindowFrameContext { + let localContext = new WindowFrameContext(this.context, this.state); + this.enterRule(localContext, 198, TrinoSqlParser.RULE_windowFrame); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3113; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 168) { + { + this.state = 3104; + this.match(TrinoSqlParser.KW_MEASURES); + this.state = 3105; + this.measureDefinition(); + this.state = 3110; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3106; + this.match(TrinoSqlParser.T__2); + this.state = 3107; + this.measureDefinition(); + } + } + this.state = 3112; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3115; + this.frameExtent(); + this.state = 3119; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 21) { + { + this.state = 3116; + this.match(TrinoSqlParser.KW_AFTER); + this.state = 3117; + this.match(TrinoSqlParser.KW_MATCH); + this.state = 3118; + this.skipTo(); + } + } + + this.state = 3122; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 124 || _la === 247) { + { + this.state = 3121; + _la = this.tokenStream.LA(1); + if(!(_la === 124 || _la === 247)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 3129; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 206) { + { + this.state = 3124; + this.match(TrinoSqlParser.KW_PATTERN); + this.state = 3125; + this.match(TrinoSqlParser.T__0); + this.state = 3126; + this.rowPattern(0); + this.state = 3127; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 3140; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 257) { + { + this.state = 3131; + this.match(TrinoSqlParser.KW_SUBSET); + this.state = 3132; + this.subsetDefinition(); + this.state = 3137; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3133; + this.match(TrinoSqlParser.T__2); + this.state = 3134; + this.subsetDefinition(); + } + } + this.state = 3139; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3151; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 71) { + { + this.state = 3142; + this.match(TrinoSqlParser.KW_DEFINE); + this.state = 3143; + this.variableDefinition(); + this.state = 3148; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3144; + this.match(TrinoSqlParser.T__2); + this.state = 3145; + this.variableDefinition(); + } + } + this.state = 3150; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public frameExtent(): FrameExtentContext { + let localContext = new FrameExtentContext(this.context, this.state); + this.enterRule(localContext, 200, TrinoSqlParser.RULE_frameExtent); + try { + this.state = 3177; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 414, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3153; + localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); + this.state = 3154; + localContext._start = this.frameBound(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3155; + localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); + this.state = 3156; + localContext._start = this.frameBound(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3157; + localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); + this.state = 3158; + localContext._start = this.frameBound(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3159; + localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); + this.state = 3160; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 3161; + localContext._start = this.frameBound(); + this.state = 3162; + this.match(TrinoSqlParser.KW_AND); + this.state = 3163; + localContext._end = this.frameBound(); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 3165; + localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); + this.state = 3166; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 3167; + localContext._start = this.frameBound(); + this.state = 3168; + this.match(TrinoSqlParser.KW_AND); + this.state = 3169; + localContext._end = this.frameBound(); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 3171; + localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); + this.state = 3172; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 3173; + localContext._start = this.frameBound(); + this.state = 3174; + this.match(TrinoSqlParser.KW_AND); + this.state = 3175; + localContext._end = this.frameBound(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public frameBound(): FrameBoundContext { + let localContext = new FrameBoundContext(this.context, this.state); + this.enterRule(localContext, 202, TrinoSqlParser.RULE_frameBound); + let _la: number; + try { + this.state = 3188; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 415, this.context) ) { + case 1: + localContext = new UnboundedFrameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3179; + this.match(TrinoSqlParser.KW_UNBOUNDED); + this.state = 3180; + (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_PRECEDING); + } + break; + case 2: + localContext = new UnboundedFrameContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3181; + this.match(TrinoSqlParser.KW_UNBOUNDED); + this.state = 3182; + (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_FOLLOWING); + } + break; + case 3: + localContext = new CurrentRowBoundContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3183; + this.match(TrinoSqlParser.KW_CURRENT); + this.state = 3184; + this.match(TrinoSqlParser.KW_ROW); + } + break; + case 4: + localContext = new BoundedFrameContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3185; + this.expression(); + this.state = 3186; + (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 102 || _la === 212)) { + (localContext as BoundedFrameContext)._boundType = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public rowPattern(): RowPatternContext; + public rowPattern(_p: number): RowPatternContext; + public rowPattern(_p?: number): RowPatternContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new RowPatternContext(this.context, parentState); + let previousContext = localContext; + let _startState = 204; + this.enterRecursionRule(localContext, 204, TrinoSqlParser.RULE_rowPattern, _p); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + { + localContext = new QuantifiedPrimaryContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 3191; + this.patternPrimary(); + this.state = 3193; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 416, this.context) ) { + case 1: + { + this.state = 3192; + this.patternQuantifier(); + } + break; + } + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 3202; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 418, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 3200; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { + case 1: + { + localContext = new PatternConcatenationContext(new RowPatternContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); + this.state = 3195; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 3196; + this.rowPattern(3); + } + break; + case 2: + { + localContext = new PatternAlternationContext(new RowPatternContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); + this.state = 3197; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 3198; + this.match(TrinoSqlParser.T__10); + this.state = 3199; + this.rowPattern(2); + } + break; + } + } + } + this.state = 3204; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 418, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public patternPrimary(): PatternPrimaryContext { + let localContext = new PatternPrimaryContext(this.context, this.state); + this.enterRule(localContext, 206, TrinoSqlParser.RULE_patternPrimary); + let _la: number; + try { + this.state = 3230; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { + case 1: + localContext = new PatternVariableContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3205; + this.identifier(); + } + break; + case 2: + localContext = new EmptyPatternContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3206; + this.match(TrinoSqlParser.T__0); + this.state = 3207; + this.match(TrinoSqlParser.T__1); + } + break; + case 3: + localContext = new PatternPermutationContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3208; + this.match(TrinoSqlParser.KW_PERMUTE); + this.state = 3209; + this.match(TrinoSqlParser.T__0); + this.state = 3210; + this.rowPattern(0); + this.state = 3215; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3211; + this.match(TrinoSqlParser.T__2); + this.state = 3212; + this.rowPattern(0); + } + } + this.state = 3217; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3218; + this.match(TrinoSqlParser.T__1); + } + break; + case 4: + localContext = new GroupedPatternContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3220; + this.match(TrinoSqlParser.T__0); + this.state = 3221; + this.rowPattern(0); + this.state = 3222; + this.match(TrinoSqlParser.T__1); + } + break; + case 5: + localContext = new PartitionStartAnchorContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3224; + this.match(TrinoSqlParser.T__11); + } + break; + case 6: + localContext = new PartitionEndAnchorContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 3225; + this.match(TrinoSqlParser.T__12); + } + break; + case 7: + localContext = new ExcludedPatternContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 3226; + this.match(TrinoSqlParser.T__13); + this.state = 3227; + this.rowPattern(0); + this.state = 3228; + this.match(TrinoSqlParser.T__14); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public patternQuantifier(): PatternQuantifierContext { + let localContext = new PatternQuantifierContext(this.context, this.state); + this.enterRule(localContext, 208, TrinoSqlParser.RULE_patternQuantifier); + let _la: number; + try { + this.state = 3262; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { + case 1: + localContext = new ZeroOrMoreQuantifierContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3232; + this.match(TrinoSqlParser.ASTERISK); + this.state = 3234; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 421, this.context) ) { + case 1: + { + this.state = 3233; + (localContext as ZeroOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 2: + localContext = new OneOrMoreQuantifierContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3236; + this.match(TrinoSqlParser.PLUS); + this.state = 3238; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { + case 1: + { + this.state = 3237; + (localContext as OneOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 3: + localContext = new ZeroOrOneQuantifierContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3240; + this.match(TrinoSqlParser.QUESTION_MARK); + this.state = 3242; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 423, this.context) ) { + case 1: + { + this.state = 3241; + (localContext as ZeroOrOneQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 4: + localContext = new RangeQuantifierContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3244; + this.match(TrinoSqlParser.T__15); + this.state = 3245; + (localContext as RangeQuantifierContext)._exactly = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 3246; + this.match(TrinoSqlParser.T__16); + this.state = 3248; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { + case 1: + { + this.state = 3247; + (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 5: + localContext = new RangeQuantifierContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3250; + this.match(TrinoSqlParser.T__15); + this.state = 3252; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 329) { + { + this.state = 3251; + (localContext as RangeQuantifierContext)._atLeast = this.match(TrinoSqlParser.INTEGER_VALUE); + } + } + + this.state = 3254; + this.match(TrinoSqlParser.T__2); + this.state = 3256; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 329) { + { + this.state = 3255; + (localContext as RangeQuantifierContext)._atMost = this.match(TrinoSqlParser.INTEGER_VALUE); + } + } + + this.state = 3258; + this.match(TrinoSqlParser.T__16); + this.state = 3260; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { + case 1: + { + this.state = 3259; + (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public updateAssignment(): UpdateAssignmentContext { + let localContext = new UpdateAssignmentContext(this.context, this.state); + this.enterRule(localContext, 210, TrinoSqlParser.RULE_updateAssignment); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3264; + this.identifier(); + this.state = 3265; + this.match(TrinoSqlParser.EQ); + this.state = 3266; + this.expression(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public explainOption(): ExplainOptionContext { + let localContext = new ExplainOptionContext(this.context, this.state); + this.enterRule(localContext, 212, TrinoSqlParser.RULE_explainOption); + let _la: number; + try { + this.state = 3272; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_FORMAT: + localContext = new ExplainFormatContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3268; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 3269; + (localContext as ExplainFormatContext)._value = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 113 || _la === 137 || _la === 263)) { + (localContext as ExplainFormatContext)._value = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case TrinoSqlParser.KW_TYPE: + localContext = new ExplainTypeContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3270; + this.match(TrinoSqlParser.KW_TYPE); + this.state = 3271; + (localContext as ExplainTypeContext)._value = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 80 || _la === 132 || _la === 160 || _la === 294)) { + (localContext as ExplainTypeContext)._value = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public transactionMode(): TransactionModeContext { + let localContext = new TransactionModeContext(this.context, this.state); + this.enterRule(localContext, 214, TrinoSqlParser.RULE_transactionMode); + let _la: number; + try { + this.state = 3279; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ISOLATION: + localContext = new IsolationLevelContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3274; + this.match(TrinoSqlParser.KW_ISOLATION); + this.state = 3275; + this.match(TrinoSqlParser.KW_LEVEL); + this.state = 3276; + this.levelOfIsolation(); + } + break; + case TrinoSqlParser.KW_READ: + localContext = new TransactionAccessModeContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3277; + this.match(TrinoSqlParser.KW_READ); + this.state = 3278; + (localContext as TransactionAccessModeContext)._accessMode = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 192 || _la === 309)) { + (localContext as TransactionAccessModeContext)._accessMode = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public levelOfIsolation(): LevelOfIsolationContext { + let localContext = new LevelOfIsolationContext(this.context, this.state); + this.enterRule(localContext, 216, TrinoSqlParser.RULE_levelOfIsolation); + try { + this.state = 3288; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 431, this.context) ) { + case 1: + localContext = new ReadUncommittedContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3281; + this.match(TrinoSqlParser.KW_READ); + this.state = 3282; + this.match(TrinoSqlParser.KW_UNCOMMITTED); + } + break; + case 2: + localContext = new ReadCommittedContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3283; + this.match(TrinoSqlParser.KW_READ); + this.state = 3284; + this.match(TrinoSqlParser.KW_COMMITTED); + } + break; + case 3: + localContext = new RepeatableReadContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3285; + this.match(TrinoSqlParser.KW_REPEATABLE); + this.state = 3286; + this.match(TrinoSqlParser.KW_READ); + } + break; + case 4: + localContext = new SerializableContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3287; + this.match(TrinoSqlParser.KW_SERIALIZABLE); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public callArgument(): CallArgumentContext { + let localContext = new CallArgumentContext(this.context, this.state); + this.enterRule(localContext, 218, TrinoSqlParser.RULE_callArgument); + try { + this.state = 3295; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { + case 1: + localContext = new PositionalArgumentContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3290; + this.expression(); + } + break; + case 2: + localContext = new NamedArgumentContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3291; + this.identifier(); + this.state = 3292; + this.match(TrinoSqlParser.T__5); + this.state = 3293; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public pathElement(): PathElementContext { + let localContext = new PathElementContext(this.context, this.state); + this.enterRule(localContext, 220, TrinoSqlParser.RULE_pathElement); + try { + this.state = 3302; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 433, this.context) ) { + case 1: + localContext = new QualifiedArgumentContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3297; + this.identifier(); + this.state = 3298; + this.match(TrinoSqlParser.T__3); + this.state = 3299; + this.identifier(); + } + break; + case 2: + localContext = new UnqualifiedArgumentContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3301; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public pathSpecification(): PathSpecificationContext { + let localContext = new PathSpecificationContext(this.context, this.state); + this.enterRule(localContext, 222, TrinoSqlParser.RULE_pathSpecification); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3304; + this.pathElement(); + this.state = 3309; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3305; + this.match(TrinoSqlParser.T__2); + this.state = 3306; + this.pathElement(); + } + } + this.state = 3311; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionSpecification(): FunctionSpecificationContext { + let localContext = new FunctionSpecificationContext(this.context, this.state); + this.enterRule(localContext, 224, TrinoSqlParser.RULE_functionSpecification); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3312; + this.match(TrinoSqlParser.KW_FUNCTION); + this.state = 3313; + this.functionDeclaration(); + this.state = 3314; + this.returnsClause(); + this.state = 3318; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3315; + this.routineCharacteristic(); + } + } + } + this.state = 3320; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context); + } + this.state = 3321; + this.controlStatement(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionDeclaration(): FunctionDeclarationContext { + let localContext = new FunctionDeclarationContext(this.context, this.state); + this.enterRule(localContext, 226, TrinoSqlParser.RULE_functionDeclaration); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3323; + this.functionNameCreate(); + this.state = 3324; + this.match(TrinoSqlParser.T__0); + this.state = 3333; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + { + this.state = 3325; + this.parameterDeclaration(); + this.state = 3330; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3326; + this.match(TrinoSqlParser.T__2); + this.state = 3327; + this.parameterDeclaration(); + } + } + this.state = 3332; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3335; + this.match(TrinoSqlParser.T__1); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionSignature(): FunctionSignatureContext { + let localContext = new FunctionSignatureContext(this.context, this.state); + this.enterRule(localContext, 228, TrinoSqlParser.RULE_functionSignature); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3337; + this.functionName(); + this.state = 3338; + this.match(TrinoSqlParser.T__0); + this.state = 3347; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + { + this.state = 3339; + this.parameterDeclaration(); + this.state = 3344; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3340; + this.match(TrinoSqlParser.T__2); + this.state = 3341; + this.parameterDeclaration(); + } + } + this.state = 3346; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3349; + this.match(TrinoSqlParser.T__1); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public parameterDeclaration(): ParameterDeclarationContext { + let localContext = new ParameterDeclarationContext(this.context, this.state); + this.enterRule(localContext, 230, TrinoSqlParser.RULE_parameterDeclaration); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3352; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 440, this.context) ) { + case 1: + { + this.state = 3351; + this.identifier(); + } + break; + } + this.state = 3354; + this.type_(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public returnsClause(): ReturnsClauseContext { + let localContext = new ReturnsClauseContext(this.context, this.state); + this.enterRule(localContext, 232, TrinoSqlParser.RULE_returnsClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3356; + this.match(TrinoSqlParser.KW_RETURNS); + this.state = 3357; + this.type_(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public routineCharacteristic(): RoutineCharacteristicContext { + let localContext = new RoutineCharacteristicContext(this.context, this.state); + this.enterRule(localContext, 234, TrinoSqlParser.RULE_routineCharacteristic); + let _la: number; + try { + this.state = 3378; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_LANGUAGE: + localContext = new LanguageCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3359; + this.match(TrinoSqlParser.KW_LANGUAGE); + this.state = 3360; + this.identifier(); + } + break; + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_NOT: + localContext = new DeterministicCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3362; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 3361; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 3364; + this.match(TrinoSqlParser.KW_DETERMINISTIC); + } + break; + case TrinoSqlParser.KW_RETURNS: + localContext = new ReturnsNullOnNullInputCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3365; + this.match(TrinoSqlParser.KW_RETURNS); + this.state = 3366; + this.match(TrinoSqlParser.KW_NULL); + this.state = 3367; + this.match(TrinoSqlParser.KW_ON); + this.state = 3368; + this.match(TrinoSqlParser.KW_NULL); + this.state = 3369; + this.match(TrinoSqlParser.KW_INPUT); + } + break; + case TrinoSqlParser.KW_CALLED: + localContext = new CalledOnNullInputCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3370; + this.match(TrinoSqlParser.KW_CALLED); + this.state = 3371; + this.match(TrinoSqlParser.KW_ON); + this.state = 3372; + this.match(TrinoSqlParser.KW_NULL); + this.state = 3373; + this.match(TrinoSqlParser.KW_INPUT); + } + break; + case TrinoSqlParser.KW_SECURITY: + localContext = new SecurityCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3374; + this.match(TrinoSqlParser.KW_SECURITY); + this.state = 3375; + _la = this.tokenStream.LA(1); + if(!(_la === 72 || _la === 131)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case TrinoSqlParser.KW_COMMENT: + localContext = new CommentCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 3376; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 3377; + this.string_(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public controlStatement(): ControlStatementContext { + let localContext = new ControlStatementContext(this.context, this.state); + this.enterRule(localContext, 236, TrinoSqlParser.RULE_controlStatement); + let _la: number; + try { + let alternative: number; + this.state = 3479; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 454, this.context) ) { + case 1: + localContext = new ReturnStatementContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3380; + this.match(TrinoSqlParser.KW_RETURN); + this.state = 3381; + this.valueExpression(0); + } + break; + case 2: + localContext = new AssignmentStatementContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3382; + this.match(TrinoSqlParser.KW_SET); + this.state = 3383; + this.identifier(); + this.state = 3384; + this.match(TrinoSqlParser.EQ); + this.state = 3385; + this.expression(); + } + break; + case 3: + localContext = new SimpleCaseStatementContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3387; + this.match(TrinoSqlParser.KW_CASE); + this.state = 3388; + this.expression(); + this.state = 3390; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3389; + this.caseStatementWhenClause(); + } + } + this.state = 3392; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 3395; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 3394; + this.elseClause(); + } + } + + this.state = 3397; + this.match(TrinoSqlParser.KW_END); + this.state = 3398; + this.match(TrinoSqlParser.KW_CASE); + } + break; + case 4: + localContext = new SearchedCaseStatementContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3400; + this.match(TrinoSqlParser.KW_CASE); + this.state = 3402; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3401; + this.caseStatementWhenClause(); + } + } + this.state = 3404; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 3407; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 3406; + this.elseClause(); + } + } + + this.state = 3409; + this.match(TrinoSqlParser.KW_END); + this.state = 3410; + this.match(TrinoSqlParser.KW_CASE); + } + break; + case 5: + localContext = new IfStatementContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3412; + this.match(TrinoSqlParser.KW_IF); + this.state = 3413; + this.expression(); + this.state = 3414; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3415; + this.sqlStatementList(); + this.state = 3419; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 86) { + { + { + this.state = 3416; + this.elseIfClause(); + } + } + this.state = 3421; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3423; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 3422; + this.elseClause(); + } + } + + this.state = 3425; + this.match(TrinoSqlParser.KW_END); + this.state = 3426; + this.match(TrinoSqlParser.KW_IF); + } + break; + case 6: + localContext = new IterateStatementContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 3428; + this.match(TrinoSqlParser.KW_ITERATE); + this.state = 3429; + this.identifier(); + } + break; + case 7: + localContext = new LeaveStatementContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 3430; + this.match(TrinoSqlParser.KW_LEAVE); + this.state = 3431; + this.identifier(); + } + break; + case 8: + localContext = new CompoundStatementContext(localContext); + this.enterOuterAlt(localContext, 8); + { + this.state = 3432; + this.match(TrinoSqlParser.KW_BEGIN); + this.state = 3438; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 449, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3433; + this.variableDeclaration(); + this.state = 3434; + this.match(TrinoSqlParser.SEMICOLON); + } + } + } + this.state = 3440; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 449, this.context); + } + this.state = 3442; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4286249823) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + { + this.state = 3441; + this.sqlStatementList(); + } + } + + this.state = 3444; + this.match(TrinoSqlParser.KW_END); + } + break; + case 9: + localContext = new LoopStatementContext(localContext); + this.enterOuterAlt(localContext, 9); + { + this.state = 3448; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { + case 1: + { + this.state = 3445; + (localContext as LoopStatementContext)._label = this.identifier(); + this.state = 3446; + this.match(TrinoSqlParser.T__9); + } + break; + } + this.state = 3450; + this.match(TrinoSqlParser.KW_LOOP); + this.state = 3451; + this.sqlStatementList(); + this.state = 3452; + this.match(TrinoSqlParser.KW_END); + this.state = 3453; + this.match(TrinoSqlParser.KW_LOOP); + } + break; + case 10: + localContext = new WhileStatementContext(localContext); + this.enterOuterAlt(localContext, 10); + { + this.state = 3458; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { + case 1: + { + this.state = 3455; + (localContext as WhileStatementContext)._label = this.identifier(); + this.state = 3456; + this.match(TrinoSqlParser.T__9); + } + break; + } + this.state = 3460; + this.match(TrinoSqlParser.KW_WHILE); + this.state = 3461; + this.expression(); + this.state = 3462; + this.match(TrinoSqlParser.KW_DO); + this.state = 3463; + this.sqlStatementList(); + this.state = 3464; + this.match(TrinoSqlParser.KW_END); + this.state = 3465; + this.match(TrinoSqlParser.KW_WHILE); + } + break; + case 11: + localContext = new RepeatStatementContext(localContext); + this.enterOuterAlt(localContext, 11); + { + this.state = 3470; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 453, this.context) ) { + case 1: + { + this.state = 3467; + (localContext as RepeatStatementContext)._label = this.identifier(); + this.state = 3468; + this.match(TrinoSqlParser.T__9); + } + break; + } + this.state = 3472; + this.match(TrinoSqlParser.KW_REPEAT); + this.state = 3473; + this.sqlStatementList(); + this.state = 3474; + this.match(TrinoSqlParser.KW_UNTIL); + this.state = 3475; + this.expression(); + this.state = 3476; + this.match(TrinoSqlParser.KW_END); + this.state = 3477; + this.match(TrinoSqlParser.KW_REPEAT); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public caseStatementWhenClause(): CaseStatementWhenClauseContext { + let localContext = new CaseStatementWhenClauseContext(this.context, this.state); + this.enterRule(localContext, 238, TrinoSqlParser.RULE_caseStatementWhenClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3481; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3482; + this.expression(); + this.state = 3483; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3484; + this.sqlStatementList(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public elseIfClause(): ElseIfClauseContext { + let localContext = new ElseIfClauseContext(this.context, this.state); + this.enterRule(localContext, 240, TrinoSqlParser.RULE_elseIfClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3486; + this.match(TrinoSqlParser.KW_ELSEIF); + this.state = 3487; + this.expression(); + this.state = 3488; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3489; + this.sqlStatementList(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public elseClause(): ElseClauseContext { + let localContext = new ElseClauseContext(this.context, this.state); + this.enterRule(localContext, 242, TrinoSqlParser.RULE_elseClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3491; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 3492; + this.sqlStatementList(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public variableDeclaration(): VariableDeclarationContext { + let localContext = new VariableDeclarationContext(this.context, this.state); + this.enterRule(localContext, 244, TrinoSqlParser.RULE_variableDeclaration); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3494; + this.match(TrinoSqlParser.KW_DECLARE); + this.state = 3495; + this.identifier(); + this.state = 3500; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3496; + this.match(TrinoSqlParser.T__2); + this.state = 3497; + this.identifier(); + } + } + this.state = 3502; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3503; + this.type_(0); + this.state = 3506; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 70) { + { + this.state = 3504; + this.match(TrinoSqlParser.KW_DEFAULT); + this.state = 3505; + this.valueExpression(0); + } + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public sqlStatementList(): SqlStatementListContext { + let localContext = new SqlStatementListContext(this.context, this.state); + this.enterRule(localContext, 246, TrinoSqlParser.RULE_sqlStatementList); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3511; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 3508; + this.controlStatement(); + this.state = 3509; + this.match(TrinoSqlParser.SEMICOLON); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 3513; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 457, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public privilege(): PrivilegeContext { + let localContext = new PrivilegeContext(this.context, this.state); + this.enterRule(localContext, 248, TrinoSqlParser.RULE_privilege); + try { + this.state = 3521; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3515; + this.match(TrinoSqlParser.KW_CREATE); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3516; + this.match(TrinoSqlParser.KW_SELECT); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3517; + this.match(TrinoSqlParser.KW_DELETE); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3518; + this.match(TrinoSqlParser.KW_INSERT); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 3519; + this.match(TrinoSqlParser.KW_UPDATE); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 3520; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public entityKind(): EntityKindContext { + let localContext = new EntityKindContext(this.context, this.state); + this.enterRule(localContext, 250, TrinoSqlParser.RULE_entityKind); + try { + this.state = 3526; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3523; + this.match(TrinoSqlParser.KW_TABLE); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3524; + this.match(TrinoSqlParser.KW_SCHEMA); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3525; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grantObject(): GrantObjectContext { + let localContext = new GrantObjectContext(this.context, this.state); + this.enterRule(localContext, 252, TrinoSqlParser.RULE_grantObject); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3529; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { + case 1: + { + this.state = 3528; + this.entityKind(); + } + break; + } + this.state = 3531; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableOrViewName(): TableOrViewNameContext { + let localContext = new TableOrViewNameContext(this.context, this.state); + this.enterRule(localContext, 254, TrinoSqlParser.RULE_tableOrViewName); + try { + this.state = 3535; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3533; + this.tableRef(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3534; + this.viewRef(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableRef(): TableRefContext { + let localContext = new TableRefContext(this.context, this.state); + this.enterRule(localContext, 256, TrinoSqlParser.RULE_tableRef); + try { + this.state = 3548; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3537; + localContext._table = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3538; + localContext._schema = this.identifier(); + this.state = 3539; + this.match(TrinoSqlParser.T__3); + this.state = 3540; + localContext._table = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3542; + localContext._catalog = this.identifier(); + this.state = 3543; + this.match(TrinoSqlParser.T__3); + this.state = 3544; + localContext._schema = this.identifier(); + this.state = 3545; + this.match(TrinoSqlParser.T__3); + this.state = 3546; + localContext._table = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableNameCreate(): TableNameCreateContext { + let localContext = new TableNameCreateContext(this.context, this.state); + this.enterRule(localContext, 258, TrinoSqlParser.RULE_tableNameCreate); + try { + this.state = 3561; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3550; + localContext._table = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3551; + localContext._schema = this.identifier(); + this.state = 3552; + this.match(TrinoSqlParser.T__3); + this.state = 3553; + localContext._table = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3555; + localContext._catalog = this.identifier(); + this.state = 3556; + this.match(TrinoSqlParser.T__3); + this.state = 3557; + localContext._schema = this.identifier(); + this.state = 3558; + this.match(TrinoSqlParser.T__3); + this.state = 3559; + localContext._table = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public viewRef(): ViewRefContext { + let localContext = new ViewRefContext(this.context, this.state); + this.enterRule(localContext, 260, TrinoSqlParser.RULE_viewRef); + try { + this.state = 3574; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3563; + localContext._view = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3564; + localContext._schema = this.identifier(); + this.state = 3565; + this.match(TrinoSqlParser.T__3); + this.state = 3566; + localContext._view = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3568; + localContext._catalog = this.identifier(); + this.state = 3569; + this.match(TrinoSqlParser.T__3); + this.state = 3570; + localContext._schema = this.identifier(); + this.state = 3571; + this.match(TrinoSqlParser.T__3); + this.state = 3572; + localContext._view = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public viewNameCreate(): ViewNameCreateContext { + let localContext = new ViewNameCreateContext(this.context, this.state); + this.enterRule(localContext, 262, TrinoSqlParser.RULE_viewNameCreate); + try { + this.state = 3587; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3576; + localContext._view = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3577; + localContext._schema = this.identifier(); + this.state = 3578; + this.match(TrinoSqlParser.T__3); + this.state = 3579; + localContext._view = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3581; + localContext._catalog = this.identifier(); + this.state = 3582; + this.match(TrinoSqlParser.T__3); + this.state = 3583; + localContext._schema = this.identifier(); + this.state = 3584; + this.match(TrinoSqlParser.T__3); + this.state = 3585; + localContext._view = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public schemaRef(): SchemaRefContext { + let localContext = new SchemaRefContext(this.context, this.state); + this.enterRule(localContext, 264, TrinoSqlParser.RULE_schemaRef); + try { + this.state = 3594; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 466, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3589; + localContext._schema = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3590; + localContext._catalog = this.identifier(); + this.state = 3591; + this.match(TrinoSqlParser.T__3); + this.state = 3592; + localContext._schema = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public schemaNameCreate(): SchemaNameCreateContext { + let localContext = new SchemaNameCreateContext(this.context, this.state); + this.enterRule(localContext, 266, TrinoSqlParser.RULE_schemaNameCreate); + try { + this.state = 3601; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 467, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3596; + localContext._schema = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3597; + localContext._catalog = this.identifier(); + this.state = 3598; + this.match(TrinoSqlParser.T__3); + this.state = 3599; + localContext._schema = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public catalogRef(): CatalogRefContext { + let localContext = new CatalogRefContext(this.context, this.state); + this.enterRule(localContext, 268, TrinoSqlParser.RULE_catalogRef); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3603; + localContext._catalog = this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public catalogNameCreate(): CatalogNameCreateContext { + let localContext = new CatalogNameCreateContext(this.context, this.state); + this.enterRule(localContext, 270, TrinoSqlParser.RULE_catalogNameCreate); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3605; + localContext._catalog = this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionName(): FunctionNameContext { + let localContext = new FunctionNameContext(this.context, this.state); + this.enterRule(localContext, 272, TrinoSqlParser.RULE_functionName); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3607; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionNameCreate(): FunctionNameCreateContext { + let localContext = new FunctionNameCreateContext(this.context, this.state); + this.enterRule(localContext, 274, TrinoSqlParser.RULE_functionNameCreate); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3609; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public columnRef(): ColumnRefContext { + let localContext = new ColumnRefContext(this.context, this.state); + this.enterRule(localContext, 276, TrinoSqlParser.RULE_columnRef); + try { + this.state = 3613; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3611; + this.qualifiedName(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3612; + if (!(this.shouldMatchEmpty())) { + throw this.createFailedPredicateException("this.shouldMatchEmpty()"); + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public columnNameCreate(): ColumnNameCreateContext { + let localContext = new ColumnNameCreateContext(this.context, this.state); + this.enterRule(localContext, 278, TrinoSqlParser.RULE_columnNameCreate); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3615; + this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public qualifiedName(): QualifiedNameContext { + let localContext = new QualifiedNameContext(this.context, this.state); + this.enterRule(localContext, 280, TrinoSqlParser.RULE_qualifiedName); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3617; + this.identifier(); + this.state = 3622; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 469, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3618; + this.match(TrinoSqlParser.T__3); + this.state = 3619; + this.identifier(); + } + } + } + this.state = 3624; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 469, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public queryPeriod(): QueryPeriodContext { + let localContext = new QueryPeriodContext(this.context, this.state); + this.enterRule(localContext, 282, TrinoSqlParser.RULE_queryPeriod); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3625; + this.match(TrinoSqlParser.KW_FOR); + this.state = 3626; + this.rangeType(); + this.state = 3627; + this.match(TrinoSqlParser.KW_AS); + this.state = 3628; + this.match(TrinoSqlParser.KW_OF); + this.state = 3629; + localContext._end = this.valueExpression(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public rangeType(): RangeTypeContext { + let localContext = new RangeTypeContext(this.context, this.state); + this.enterRule(localContext, 284, TrinoSqlParser.RULE_rangeType); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3631; + _la = this.tokenStream.LA(1); + if(!(_la === 268 || _la === 298)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grantor(): GrantorContext { + let localContext = new GrantorContext(this.context, this.state); + this.enterRule(localContext, 286, TrinoSqlParser.RULE_grantor); + try { + this.state = 3636; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + localContext = new SpecifiedPrincipalContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3633; + this.principal(); + } + break; + case TrinoSqlParser.KW_CURRENT_USER: + localContext = new CurrentUserGrantorContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3634; + this.match(TrinoSqlParser.KW_CURRENT_USER); + } + break; + case TrinoSqlParser.KW_CURRENT_ROLE: + localContext = new CurrentRoleGrantorContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3635; + this.match(TrinoSqlParser.KW_CURRENT_ROLE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public principal(): PrincipalContext { + let localContext = new PrincipalContext(this.context, this.state); + this.enterRule(localContext, 288, TrinoSqlParser.RULE_principal); + try { + this.state = 3643; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { + case 1: + localContext = new UnspecifiedPrincipalContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3638; + this.identifier(); + } + break; + case 2: + localContext = new UserPrincipalContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3639; + this.match(TrinoSqlParser.KW_USER); + this.state = 3640; + this.identifier(); + } + break; + case 3: + localContext = new RolePrincipalContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3641; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 3642; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public roles(): RolesContext { + let localContext = new RolesContext(this.context, this.state); + this.enterRule(localContext, 290, TrinoSqlParser.RULE_roles); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3645; + this.identifier(); + this.state = 3650; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3646; + this.match(TrinoSqlParser.T__2); + this.state = 3647; + this.identifier(); + } + } + this.state = 3652; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public privilegeOrRole(): PrivilegeOrRoleContext { + let localContext = new PrivilegeOrRoleContext(this.context, this.state); + this.enterRule(localContext, 292, TrinoSqlParser.RULE_privilegeOrRole); + try { + this.state = 3660; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 473, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3653; + this.match(TrinoSqlParser.KW_CREATE); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3654; + this.match(TrinoSqlParser.KW_SELECT); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3655; + this.match(TrinoSqlParser.KW_DELETE); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3656; + this.match(TrinoSqlParser.KW_INSERT); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 3657; + this.match(TrinoSqlParser.KW_UPDATE); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 3658; + this.match(TrinoSqlParser.KW_EXECUTE); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 3659; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public identifier(): IdentifierContext { + let localContext = new IdentifierContext(this.context, this.state); + this.enterRule(localContext, 294, TrinoSqlParser.RULE_identifier); + try { + this.state = 3667; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.IDENTIFIER: + localContext = new UnquotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3662; + this.match(TrinoSqlParser.IDENTIFIER); + } + break; + case TrinoSqlParser.QUOTED_IDENTIFIER: + localContext = new QuotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3663; + this.match(TrinoSqlParser.QUOTED_IDENTIFIER); + } + break; + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + localContext = new UnquotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3664; + this.nonReserved(); + } + break; + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + localContext = new BackQuotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3665; + this.match(TrinoSqlParser.BACKQUOTED_IDENTIFIER); + } + break; + case TrinoSqlParser.DIGIT_IDENTIFIER: + localContext = new DigitIdentifierContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3666; + this.match(TrinoSqlParser.DIGIT_IDENTIFIER); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public number_(): NumberContext { + let localContext = new NumberContext(this.context, this.state); + this.enterRule(localContext, 296, TrinoSqlParser.RULE_number); + let _la: number; + try { + this.state = 3681; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 478, this.context) ) { + case 1: + localContext = new DecimalLiteralContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3670; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 319) { + { + this.state = 3669; + this.match(TrinoSqlParser.MINUS); + } + } + + this.state = 3672; + this.match(TrinoSqlParser.DECIMAL_VALUE); + } + break; + case 2: + localContext = new DoubleLiteralContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3674; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 319) { + { + this.state = 3673; + this.match(TrinoSqlParser.MINUS); + } + } + + this.state = 3676; + this.match(TrinoSqlParser.DOUBLE_VALUE); + } + break; + case 3: + localContext = new IntegerLiteralContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3678; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 319) { + { + this.state = 3677; + this.match(TrinoSqlParser.MINUS); + } + } + + this.state = 3680; + this.match(TrinoSqlParser.INTEGER_VALUE); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public authorizationUser(): AuthorizationUserContext { + let localContext = new AuthorizationUserContext(this.context, this.state); + this.enterRule(localContext, 298, TrinoSqlParser.RULE_authorizationUser); + try { + this.state = 3685; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + localContext = new IdentifierUserContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3683; + this.identifier(); + } + break; + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: + localContext = new StringUserContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3684; + this.string_(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public nonReserved(): NonReservedContext { + let localContext = new NonReservedContext(this.context, this.state); + this.enterRule(localContext, 300, TrinoSqlParser.RULE_nonReserved); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3687; + _la = this.tokenStream.LA(1); + if(!(((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 23: + return this.queryTerm_sempred(localContext as QueryTermContext, predIndex); + case 36: + return this.relation_sempred(localContext as RelationContext, predIndex); + case 69: + return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); + case 71: + return this.valueExpression_sempred(localContext as ValueExpressionContext, predIndex); + case 72: + return this.primaryExpression_sempred(localContext as PrimaryExpressionContext, predIndex); + case 92: + return this.type_sempred(localContext as TypeContext, predIndex); + case 102: + return this.rowPattern_sempred(localContext as RowPatternContext, predIndex); + case 138: + return this.columnRef_sempred(localContext as ColumnRefContext, predIndex); + } + return true; + } + private queryTerm_sempred(localContext: QueryTermContext | null, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.precpred(this.context, 2); + case 1: + return this.precpred(this.context, 1); + } + return true; + } + private relation_sempred(localContext: RelationContext | null, predIndex: number): boolean { + switch (predIndex) { + case 2: + return this.precpred(this.context, 2); + } + return true; + } + private booleanExpression_sempred(localContext: BooleanExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 3: + return this.precpred(this.context, 2); + case 4: + return this.precpred(this.context, 1); + } + return true; + } + private valueExpression_sempred(localContext: ValueExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 5: + return this.precpred(this.context, 3); + case 6: + return this.precpred(this.context, 2); + case 7: + return this.precpred(this.context, 1); + case 8: + return this.precpred(this.context, 5); + } + return true; + } + private primaryExpression_sempred(localContext: PrimaryExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 9: + return this.precpred(this.context, 24); + case 10: + return this.precpred(this.context, 22); + } + return true; + } + private type_sempred(localContext: TypeContext | null, predIndex: number): boolean { + switch (predIndex) { + case 11: + return this.precpred(this.context, 2); + } + return true; + } + private rowPattern_sempred(localContext: RowPatternContext | null, predIndex: number): boolean { + switch (predIndex) { + case 12: + return this.precpred(this.context, 2); + case 13: + return this.precpred(this.context, 1); + } + return true; + } + private columnRef_sempred(localContext: ColumnRefContext | null, predIndex: number): boolean { + switch (predIndex) { + case 14: + return this.shouldMatchEmpty(); + } + return true; + } + + public static readonly _serializedATN: number[] = [ + 4,1,340,3690,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, + 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, + 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, + 26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2, + 33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7, + 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, + 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, + 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2, + 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7, + 65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2, + 72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7, + 78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2, + 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, + 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, + 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103, + 2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109, + 7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114, + 2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120, + 7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125, + 2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131, + 7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136, + 2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142, + 7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147, + 2,148,7,148,2,149,7,149,2,150,7,150,1,0,5,0,304,8,0,10,0,12,0,307, + 9,0,1,0,1,0,1,1,1,1,1,2,1,2,3,2,315,8,2,1,3,1,3,3,3,319,8,3,1,4, + 1,4,3,4,323,8,4,1,5,1,5,3,5,327,8,5,1,6,1,6,3,6,331,8,6,1,7,1,7, + 1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,344,8,8,1,8,1,8,1,8,1,8, + 1,8,3,8,351,8,8,1,8,1,8,3,8,355,8,8,1,8,1,8,3,8,359,8,8,1,8,1,8, + 1,8,1,8,3,8,365,8,8,1,8,1,8,3,8,369,8,8,1,8,1,8,1,8,1,8,1,8,3,8, + 376,8,8,1,8,1,8,1,8,3,8,381,8,8,1,8,1,8,3,8,385,8,8,1,8,1,8,1,8, + 1,8,3,8,391,8,8,1,8,1,8,3,8,395,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,414,8,8,1,8,1,8,1,8, + 1,8,3,8,420,8,8,1,8,1,8,3,8,424,8,8,1,8,1,8,3,8,428,8,8,1,8,1,8, + 3,8,432,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,440,8,8,1,8,1,8,3,8,444, + 8,8,1,8,3,8,447,8,8,1,8,1,8,1,8,3,8,452,8,8,1,8,1,8,1,8,1,8,3,8, + 458,8,8,1,8,1,8,1,8,1,8,1,8,5,8,465,8,8,10,8,12,8,468,9,8,1,8,1, + 8,1,8,3,8,473,8,8,1,8,1,8,3,8,477,8,8,1,8,1,8,1,8,1,8,3,8,483,8, + 8,1,8,1,8,1,8,1,8,1,8,3,8,490,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3, + 8,499,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,511,8,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,520,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,3,8,529,8,8,1,8,1,8,1,8,1,8,3,8,535,8,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,3,8,546,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,554,8,8,1, + 8,1,8,1,8,1,8,1,8,1,8,3,8,562,8,8,1,8,1,8,1,8,1,8,1,8,3,8,569,8, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,579,8,8,1,8,1,8,1,8,1,8,1, + 8,3,8,586,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,594,8,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,609,8,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,642,8,8,10,8,12, + 8,645,9,8,3,8,647,8,8,1,8,3,8,650,8,8,1,8,1,8,3,8,654,8,8,1,8,1, + 8,1,8,1,8,3,8,660,8,8,1,8,1,8,1,8,3,8,665,8,8,1,8,1,8,1,8,1,8,1, + 8,3,8,672,8,8,1,8,1,8,1,8,1,8,3,8,678,8,8,1,8,1,8,3,8,682,8,8,1, + 8,1,8,3,8,686,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,694,8,8,1,8,1,8,1, + 8,1,8,3,8,700,8,8,1,8,1,8,3,8,704,8,8,1,8,1,8,3,8,708,8,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,722,8,8,1,8,1,8,1, + 8,1,8,1,8,1,8,3,8,730,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,749,8,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5, + 8,772,8,8,10,8,12,8,775,9,8,3,8,777,8,8,1,8,1,8,1,8,1,8,1,8,3,8, + 784,8,8,1,8,1,8,1,8,1,8,1,8,3,8,791,8,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,3,8,800,8,8,1,8,1,8,3,8,804,8,8,1,8,1,8,1,8,1,8,1,8,3,8,811, + 8,8,1,8,1,8,1,8,1,8,5,8,817,8,8,10,8,12,8,820,9,8,1,8,1,8,1,8,1, + 8,5,8,826,8,8,10,8,12,8,829,9,8,1,8,1,8,1,8,3,8,834,8,8,1,8,1,8, + 1,8,3,8,839,8,8,1,8,1,8,3,8,843,8,8,1,8,1,8,1,8,1,8,5,8,849,8,8, + 10,8,12,8,852,9,8,1,8,1,8,3,8,856,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,3,8,865,8,8,1,8,1,8,1,8,1,8,3,8,871,8,8,1,8,1,8,1,8,5,8,876,8, + 8,10,8,12,8,879,9,8,1,8,1,8,1,8,1,8,5,8,885,8,8,10,8,12,8,888,9, + 8,1,8,1,8,1,8,3,8,893,8,8,1,8,1,8,3,8,897,8,8,1,8,1,8,1,8,1,8,3, + 8,903,8,8,1,8,1,8,1,8,5,8,908,8,8,10,8,12,8,911,9,8,1,8,1,8,3,8, + 915,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,926,8,8,10,8,12, + 8,929,9,8,1,8,1,8,3,8,933,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,3,8,945,8,8,1,8,1,8,3,8,949,8,8,1,8,1,8,1,8,1,8,3,8,955,8, + 8,1,8,1,8,1,8,1,8,1,8,5,8,962,8,8,10,8,12,8,965,9,8,1,8,1,8,3,8, + 969,8,8,1,8,1,8,1,8,1,8,3,8,975,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,3,8,1003,8,8,1,8,1,8,1,8,1,8,3,8,1009,8,8,3,8,1011,8, + 8,1,8,1,8,1,8,1,8,3,8,1017,8,8,1,8,1,8,1,8,1,8,3,8,1023,8,8,3,8, + 1025,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1033,8,8,3,8,1035,8,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1045,8,8,3,8,1047,8,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1062,8,8,1,8,1,8,1,8, + 3,8,1067,8,8,1,8,1,8,1,8,1,8,1,8,3,8,1074,8,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,3,8,1084,8,8,1,8,1,8,1,8,1,8,3,8,1090,8,8,3,8,1092, + 8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1100,8,8,3,8,1102,8,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,5,8,1125,8,8,10,8,12,8,1128,9,8,3,8,1130,8,8,1,8,1,8,3, + 8,1134,8,8,1,8,1,8,3,8,1138,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,5,8,1154,8,8,10,8,12,8,1157,9,8,3,8,1159, + 8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,1168,8,8,10,8,12,8,1171,9,8, + 3,8,1173,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,3,8,1189,8,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,1197,8,8,10,8,12,8, + 1200,9,8,1,8,1,8,3,8,1204,8,8,1,8,1,8,1,8,1,8,3,8,1210,8,8,1,8,3, + 8,1213,8,8,1,8,1,8,1,8,1,8,1,8,4,8,1220,8,8,11,8,12,8,1221,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1234,8,8,1,9,3,9,1237,8,9, + 1,9,1,9,1,10,1,10,1,10,1,10,5,10,1245,8,10,10,10,12,10,1248,9,10, + 1,11,3,11,1251,8,11,1,11,1,11,1,12,1,12,3,12,1257,8,12,1,12,1,12, + 1,12,5,12,1262,8,12,10,12,12,12,1265,9,12,1,13,1,13,3,13,1269,8, + 13,1,14,1,14,1,14,1,14,3,14,1275,8,14,1,14,1,14,3,14,1279,8,14,1, + 14,1,14,3,14,1283,8,14,1,15,1,15,1,15,1,15,3,15,1289,8,15,1,16,1, + 16,1,16,1,16,1,17,1,17,1,17,5,17,1298,8,17,10,17,12,17,1301,9,17, + 1,18,1,18,1,18,1,18,1,19,1,19,3,19,1309,8,19,1,20,1,20,1,20,1,20, + 1,20,1,20,5,20,1317,8,20,10,20,12,20,1320,9,20,3,20,1322,8,20,1, + 20,1,20,1,20,3,20,1327,8,20,3,20,1329,8,20,1,20,1,20,1,20,1,20,1, + 20,3,20,1336,8,20,1,20,1,20,1,20,1,20,3,20,1342,8,20,3,20,1344,8, + 20,1,21,1,21,3,21,1348,8,21,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1, + 23,3,23,1358,8,23,1,23,1,23,1,23,1,23,3,23,1364,8,23,1,23,5,23,1367, + 8,23,10,23,12,23,1370,9,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,5, + 24,1379,8,24,10,24,12,24,1382,9,24,1,24,1,24,1,24,1,24,3,24,1388, + 8,24,1,25,1,25,3,25,1392,8,25,1,25,3,25,1395,8,25,1,25,1,25,3,25, + 1399,8,25,1,26,1,26,3,26,1403,8,26,1,26,1,26,1,26,5,26,1408,8,26, + 10,26,12,26,1411,9,26,1,26,1,26,1,26,1,26,5,26,1417,8,26,10,26,12, + 26,1420,9,26,3,26,1422,8,26,1,26,1,26,3,26,1426,8,26,1,26,1,26,1, + 26,3,26,1431,8,26,1,26,1,26,3,26,1435,8,26,1,26,1,26,1,26,1,26,5, + 26,1441,8,26,10,26,12,26,1444,9,26,3,26,1446,8,26,1,27,3,27,1449, + 8,27,1,27,1,27,1,27,5,27,1454,8,27,10,27,12,27,1457,9,27,1,28,1, + 28,1,28,1,28,1,28,1,28,5,28,1465,8,28,10,28,12,28,1468,9,28,3,28, + 1470,8,28,1,28,1,28,1,28,1,28,1,28,1,28,5,28,1478,8,28,10,28,12, + 28,1481,9,28,3,28,1483,8,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,5, + 28,1492,8,28,10,28,12,28,1495,9,28,1,28,1,28,3,28,1499,8,28,1,29, + 1,29,1,29,1,29,5,29,1505,8,29,10,29,12,29,1508,9,29,3,29,1510,8, + 29,1,29,1,29,3,29,1514,8,29,1,30,1,30,3,30,1518,8,30,1,31,1,31,1, + 31,1,31,1,31,1,31,1,32,3,32,1527,8,32,1,32,1,32,1,32,1,32,1,32,5, + 32,1534,8,32,10,32,12,32,1537,9,32,3,32,1539,8,32,1,32,1,32,1,32, + 1,32,1,32,5,32,1546,8,32,10,32,12,32,1549,9,32,3,32,1551,8,32,1, + 32,3,32,1554,8,32,1,33,1,33,3,33,1558,8,33,1,33,1,33,1,33,1,33,1, + 33,1,34,1,34,1,35,1,35,3,35,1569,8,35,1,35,3,35,1572,8,35,1,35,3, + 35,1575,8,35,1,35,1,35,1,35,1,35,1,35,3,35,1582,8,35,1,35,3,35,1585, + 8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36, + 1,36,1,36,1,36,1,36,1,36,3,36,1604,8,36,5,36,1606,8,36,10,36,12, + 36,1609,9,36,1,37,3,37,1612,8,37,1,37,1,37,3,37,1616,8,37,1,37,1, + 37,3,37,1620,8,37,1,37,1,37,3,37,1624,8,37,3,37,1626,8,37,1,38,1, + 38,1,38,1,38,1,38,1,38,1,38,5,38,1635,8,38,10,38,12,38,1638,9,38, + 1,38,1,38,3,38,1642,8,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39, + 1651,8,39,1,40,1,40,1,41,1,41,1,42,1,42,1,42,3,42,1660,8,42,1,42, + 3,42,1663,8,42,1,43,1,43,1,43,1,43,3,43,1669,8,43,1,44,1,44,1,44, + 1,44,1,44,1,44,1,44,1,44,5,44,1679,8,44,10,44,12,44,1682,9,44,3, + 44,1684,8,44,1,44,1,44,1,44,1,44,1,44,5,44,1691,8,44,10,44,12,44, + 1694,9,44,3,44,1696,8,44,1,44,1,44,1,44,1,44,5,44,1702,8,44,10,44, + 12,44,1705,9,44,3,44,1707,8,44,1,44,3,44,1710,8,44,1,44,1,44,1,44, + 3,44,1715,8,44,1,44,3,44,1718,8,44,1,44,1,44,1,44,1,44,1,44,1,44, + 1,44,1,44,5,44,1728,8,44,10,44,12,44,1731,9,44,3,44,1733,8,44,1, + 44,1,44,1,44,1,44,5,44,1739,8,44,10,44,12,44,1742,9,44,1,44,1,44, + 3,44,1746,8,44,1,44,1,44,3,44,1750,8,44,3,44,1752,8,44,3,44,1754, + 8,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, + 1,46,3,46,1769,8,46,3,46,1771,8,46,1,47,1,47,1,47,1,47,1,47,1,47, + 1,47,1,47,1,47,3,47,1782,8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48, + 1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48, + 1803,8,48,1,49,1,49,1,49,1,49,1,49,1,49,5,49,1811,8,49,10,49,12, + 49,1814,9,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,3,51,1824,8, + 51,1,51,1,51,3,51,1828,8,51,3,51,1830,8,51,1,52,1,52,1,52,1,52,5, + 52,1836,8,52,10,52,12,52,1839,9,52,1,52,1,52,1,53,1,53,1,53,1,53, + 5,53,1847,8,53,10,53,12,53,1850,9,53,1,53,1,53,1,54,1,54,1,54,1, + 54,5,54,1858,8,54,10,54,12,54,1861,9,54,1,54,1,54,1,55,1,55,3,55, + 1867,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1878, + 8,55,10,55,12,55,1881,9,55,1,55,1,55,1,55,3,55,1886,8,55,1,55,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1910,8,55,10,55,12,55, + 1913,9,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55, + 1,55,3,55,1927,8,55,1,55,1,55,1,55,3,55,1932,8,55,1,55,1,55,3,55, + 1936,8,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,1946,8,56, + 1,56,1,56,1,56,1,56,3,56,1952,8,56,1,56,1,56,1,56,1,56,3,56,1958, + 8,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,1966,8,56,1,56,1,56,1,56, + 3,56,1971,8,56,1,56,1,56,1,56,1,56,1,56,3,56,1978,8,56,3,56,1980, + 8,56,1,56,1,56,1,56,1,56,3,56,1986,8,56,1,56,1,56,1,56,1,56,3,56, + 1992,8,56,1,56,1,56,3,56,1996,8,56,1,56,1,56,1,56,3,56,2001,8,56, + 1,56,1,56,1,56,1,56,1,56,5,56,2008,8,56,10,56,12,56,2011,9,56,1, + 56,1,56,3,56,2015,8,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1, + 57,1,57,5,57,2027,8,57,10,57,12,57,2030,9,57,1,57,1,57,1,57,1,57, + 1,57,5,57,2037,8,57,10,57,12,57,2040,9,57,3,57,2042,8,57,1,58,1, + 58,1,59,1,59,1,59,1,59,1,59,3,59,2051,8,59,1,60,1,60,1,60,3,60,2056, + 8,60,1,60,1,60,1,60,3,60,2061,8,60,3,60,2063,8,60,1,61,1,61,1,61, + 1,61,1,61,5,61,2070,8,61,10,61,12,61,2073,9,61,3,61,2075,8,61,1, + 61,1,61,1,61,1,61,5,61,2081,8,61,10,61,12,61,2084,9,61,3,61,2086, + 8,61,1,61,1,61,1,62,1,62,1,62,3,62,2093,8,62,1,62,1,62,1,62,3,62, + 2098,8,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,5,63,2107,8,63,10,63, + 12,63,2110,9,63,3,63,2112,8,63,1,63,1,63,3,63,2116,8,63,3,63,2118, + 8,63,1,63,1,63,1,63,1,63,1,63,1,63,3,63,2126,8,63,1,63,1,63,1,63, + 1,63,1,63,1,63,5,63,2134,8,63,10,63,12,63,2137,9,63,1,63,1,63,1, + 63,3,63,2142,8,63,3,63,2144,8,63,1,64,1,64,1,64,1,64,1,64,3,64,2151, + 8,64,1,64,1,64,3,64,2155,8,64,3,64,2157,8,64,1,64,1,64,1,64,1,64, + 1,64,3,64,2164,8,64,1,64,1,64,3,64,2168,8,64,3,64,2170,8,64,3,64, + 2172,8,64,1,65,1,65,1,65,1,65,1,65,5,65,2179,8,65,10,65,12,65,2182, + 9,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,2192,8,65,1,66, + 1,66,3,66,2196,8,66,1,67,1,67,1,67,1,67,1,67,1,67,5,67,2204,8,67, + 10,67,12,67,2207,9,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,3,69,2216, + 8,69,1,69,1,69,3,69,2220,8,69,1,69,1,69,1,69,1,69,1,69,1,69,5,69, + 2228,8,69,10,69,12,69,2231,9,69,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,1,70,3,70,2243,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3, + 70,2251,8,70,1,70,1,70,1,70,1,70,1,70,5,70,2258,8,70,10,70,12,70, + 2261,9,70,1,70,1,70,1,70,3,70,2266,8,70,1,70,1,70,1,70,1,70,1,70, + 1,70,3,70,2274,8,70,1,70,1,70,1,70,1,70,3,70,2280,8,70,1,70,1,70, + 3,70,2284,8,70,1,70,1,70,1,70,3,70,2289,8,70,1,70,1,70,1,70,3,70, + 2294,8,70,1,71,1,71,1,71,1,71,3,71,2300,8,71,1,71,1,71,1,71,1,71, + 1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71,2314,8,71,10,71,12, + 71,2317,9,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, + 72,1,72,4,72,2344,8,72,11,72,12,72,2345,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,5,72,2355,8,72,10,72,12,72,2358,9,72,1,72,1,72,1,72,1, + 72,1,72,3,72,2365,8,72,1,72,1,72,1,72,3,72,2370,8,72,1,72,1,72,1, + 72,3,72,2375,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,5, + 72,2386,8,72,10,72,12,72,2389,9,72,1,72,1,72,1,72,3,72,2394,8,72, + 1,72,3,72,2397,8,72,1,72,1,72,1,72,1,72,1,72,3,72,2404,8,72,1,72, + 1,72,1,72,3,72,2409,8,72,1,72,3,72,2412,8,72,1,72,3,72,2415,8,72, + 1,72,1,72,1,72,3,72,2420,8,72,1,72,1,72,1,72,5,72,2425,8,72,10,72, + 12,72,2428,9,72,3,72,2430,8,72,1,72,1,72,1,72,1,72,1,72,5,72,2437, + 8,72,10,72,12,72,2440,9,72,3,72,2442,8,72,1,72,1,72,3,72,2446,8, + 72,1,72,3,72,2449,8,72,1,72,3,72,2452,8,72,1,72,1,72,1,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,5,72,2465,8,72,10,72,12,72,2468, + 9,72,3,72,2470,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,4,72,2487,8,72,11,72,12,72,2488,1, + 72,1,72,3,72,2493,8,72,1,72,1,72,1,72,1,72,4,72,2499,8,72,11,72, + 12,72,2500,1,72,1,72,3,72,2505,8,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,5,72,2528,8,72,10,72,12,72,2531,9,72,3,72,2533,8,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2542,8,72,1,72,1,72,1,72,1, + 72,3,72,2548,8,72,1,72,1,72,1,72,1,72,3,72,2554,8,72,1,72,1,72,1, + 72,1,72,3,72,2560,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2569, + 8,72,1,72,3,72,2572,8,72,1,72,3,72,2575,8,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 3,72,2594,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2603,8,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,5,72,2623,8,72,10,72,12,72,2626,9,72,3, + 72,2628,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2638,8, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2647,8,72,1,72,1,72,1, + 72,1,72,3,72,2653,8,72,1,72,1,72,1,72,1,72,3,72,2659,8,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2670,8,72,3,72,2672,8, + 72,1,72,1,72,1,72,3,72,2677,8,72,1,72,1,72,1,72,1,72,1,72,3,72,2684, + 8,72,3,72,2686,8,72,1,72,1,72,1,72,1,72,3,72,2692,8,72,1,72,1,72, + 1,72,1,72,3,72,2698,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,5,72, + 2707,8,72,10,72,12,72,2710,9,72,1,72,1,72,1,72,1,72,1,72,1,72,3, + 72,2718,8,72,1,72,1,72,1,72,3,72,2723,8,72,1,72,1,72,1,72,3,72,2728, + 8,72,3,72,2730,8,72,3,72,2732,8,72,1,72,1,72,1,72,1,72,3,72,2738, + 8,72,3,72,2740,8,72,1,72,1,72,1,72,1,72,1,72,1,72,5,72,2748,8,72, + 10,72,12,72,2751,9,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2759,8, + 72,3,72,2761,8,72,1,72,1,72,1,72,1,72,3,72,2767,8,72,3,72,2769,8, + 72,1,72,3,72,2772,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,5, + 72,2782,8,72,10,72,12,72,2785,9,72,1,73,1,73,1,73,1,73,1,73,3,73, + 2792,8,73,1,73,1,73,1,73,1,73,5,73,2798,8,73,10,73,12,73,2801,9, + 73,3,73,2803,8,73,1,74,1,74,1,74,3,74,2808,8,74,1,75,1,75,1,75,3, + 75,2813,8,75,1,76,1,76,1,76,1,76,1,77,1,77,1,78,1,78,1,78,1,78,3, + 78,2825,8,78,1,79,1,79,3,79,2829,8,79,1,79,1,79,3,79,2833,8,79,1, + 79,3,79,2836,8,79,3,79,2838,8,79,1,80,1,80,1,80,1,80,1,80,1,80,3, + 80,2846,8,80,1,81,3,81,2849,8,81,1,81,1,81,1,81,1,81,1,81,1,81,1, + 81,1,81,3,81,2859,8,81,1,82,1,82,1,83,1,83,1,83,1,83,3,83,2867,8, + 83,1,84,1,84,1,84,1,84,3,84,2873,8,84,3,84,2875,8,84,1,85,1,85,1, + 85,1,85,1,85,1,85,3,85,2883,8,85,1,86,1,86,1,87,1,87,1,88,1,88,1, + 89,1,89,3,89,2893,8,89,1,89,1,89,1,89,1,89,3,89,2899,8,89,1,90,1, + 90,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,5,92,2911,8,92,10,92, + 12,92,2914,9,92,1,92,1,92,1,92,1,92,1,92,1,92,3,92,2922,8,92,1,92, + 1,92,1,92,1,92,1,92,3,92,2929,8,92,1,92,1,92,1,92,3,92,2934,8,92, + 1,92,1,92,1,92,1,92,1,92,3,92,2941,8,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,3,92,2951,8,92,1,92,1,92,1,92,3,92,2956,8,92,1,92, + 1,92,1,92,1,92,1,92,3,92,2963,8,92,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,5,92,2987,8,92,10,92,12,92,2990,9,92,1,92,1,92,3, + 92,2994,8,92,3,92,2996,8,92,1,92,1,92,1,92,1,92,1,92,3,92,3003,8, + 92,5,92,3005,8,92,10,92,12,92,3008,9,92,1,93,1,93,1,93,1,93,3,93, + 3014,8,93,1,94,1,94,3,94,3018,8,94,1,95,1,95,1,95,1,95,1,95,1,96, + 1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,3,97,3035,8,97,1,97, + 1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,5,97,3048,8,97, + 10,97,12,97,3051,9,97,1,97,1,97,1,97,1,97,3,97,3057,8,97,1,97,1, + 97,1,97,1,97,1,97,1,97,1,97,3,97,3066,8,97,1,97,1,97,1,97,1,97,1, + 97,1,97,5,97,3074,8,97,10,97,12,97,3077,9,97,1,97,1,97,3,97,3081, + 8,97,1,97,1,97,1,97,1,97,1,97,5,97,3088,8,97,10,97,12,97,3091,9, + 97,1,97,1,97,3,97,3095,8,97,1,98,1,98,1,98,1,98,1,98,1,98,3,98,3103, + 8,98,1,99,1,99,1,99,1,99,5,99,3109,8,99,10,99,12,99,3112,9,99,3, + 99,3114,8,99,1,99,1,99,1,99,1,99,3,99,3120,8,99,1,99,3,99,3123,8, + 99,1,99,1,99,1,99,1,99,1,99,3,99,3130,8,99,1,99,1,99,1,99,1,99,5, + 99,3136,8,99,10,99,12,99,3139,9,99,3,99,3141,8,99,1,99,1,99,1,99, + 1,99,5,99,3147,8,99,10,99,12,99,3150,9,99,3,99,3152,8,99,1,100,1, + 100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,3,100,3178,8,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,3,101,3189,8,101,1,102,1,102,1,102,3,102,3194,8,102, + 1,102,1,102,1,102,1,102,1,102,5,102,3201,8,102,10,102,12,102,3204, + 9,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,5,103,3214, + 8,103,10,103,12,103,3217,9,103,1,103,1,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,103,1,103,1,103,1,103,3,103,3231,8,103,1,104,1,104, + 3,104,3235,8,104,1,104,1,104,3,104,3239,8,104,1,104,1,104,3,104, + 3243,8,104,1,104,1,104,1,104,1,104,3,104,3249,8,104,1,104,1,104, + 3,104,3253,8,104,1,104,1,104,3,104,3257,8,104,1,104,1,104,3,104, + 3261,8,104,3,104,3263,8,104,1,105,1,105,1,105,1,105,1,106,1,106, + 1,106,1,106,3,106,3273,8,106,1,107,1,107,1,107,1,107,1,107,3,107, + 3280,8,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,3289, + 8,108,1,109,1,109,1,109,1,109,1,109,3,109,3296,8,109,1,110,1,110, + 1,110,1,110,1,110,3,110,3303,8,110,1,111,1,111,1,111,5,111,3308, + 8,111,10,111,12,111,3311,9,111,1,112,1,112,1,112,1,112,5,112,3317, + 8,112,10,112,12,112,3320,9,112,1,112,1,112,1,113,1,113,1,113,1,113, + 1,113,5,113,3329,8,113,10,113,12,113,3332,9,113,3,113,3334,8,113, + 1,113,1,113,1,114,1,114,1,114,1,114,1,114,5,114,3343,8,114,10,114, + 12,114,3346,9,114,3,114,3348,8,114,1,114,1,114,1,115,3,115,3353, + 8,115,1,115,1,115,1,116,1,116,1,116,1,117,1,117,1,117,3,117,3363, + 8,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117, + 1,117,1,117,1,117,1,117,3,117,3379,8,117,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,4,118,3391,8,118,11,118,12,118, + 3392,1,118,3,118,3396,8,118,1,118,1,118,1,118,1,118,1,118,4,118, + 3403,8,118,11,118,12,118,3404,1,118,3,118,3408,8,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,5,118,3418,8,118,10,118,12,118, + 3421,9,118,1,118,3,118,3424,8,118,1,118,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,5,118,3437,8,118,10,118,12,118, + 3440,9,118,1,118,3,118,3443,8,118,1,118,1,118,1,118,1,118,3,118, + 3449,8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, + 3459,8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 1,118,3,118,3471,8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 3,118,3480,8,118,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120, + 1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,122,5,122,3499, + 8,122,10,122,12,122,3502,9,122,1,122,1,122,1,122,3,122,3507,8,122, + 1,123,1,123,1,123,4,123,3512,8,123,11,123,12,123,3513,1,124,1,124, + 1,124,1,124,1,124,1,124,3,124,3522,8,124,1,125,1,125,1,125,3,125, + 3527,8,125,1,126,3,126,3530,8,126,1,126,1,126,1,127,1,127,3,127, + 3536,8,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,3,128,3549,8,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,3,129,3562,8,129,1,130,1,130,1,130, + 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,3,130,3575,8,130, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 3,131,3588,8,131,1,132,1,132,1,132,1,132,1,132,3,132,3595,8,132, + 1,133,1,133,1,133,1,133,1,133,3,133,3602,8,133,1,134,1,134,1,135, + 1,135,1,136,1,136,1,137,1,137,1,138,1,138,3,138,3614,8,138,1,139, + 1,139,1,140,1,140,1,140,5,140,3621,8,140,10,140,12,140,3624,9,140, + 1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,143,1,143,1,143, + 3,143,3637,8,143,1,144,1,144,1,144,1,144,1,144,3,144,3644,8,144, + 1,145,1,145,1,145,5,145,3649,8,145,10,145,12,145,3652,9,145,1,146, + 1,146,1,146,1,146,1,146,1,146,1,146,3,146,3661,8,146,1,147,1,147, + 1,147,1,147,1,147,3,147,3668,8,147,1,148,3,148,3671,8,148,1,148, + 1,148,3,148,3675,8,148,1,148,1,148,3,148,3679,8,148,1,148,3,148, + 3682,8,148,1,149,1,149,3,149,3686,8,149,1,150,1,150,1,150,0,7,46, + 72,138,142,144,184,204,151,0,2,4,6,8,10,12,14,16,18,20,22,24,26, + 28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70, + 72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110, + 112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142, + 144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174, + 176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206, + 208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238, + 240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270, + 272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,0,35, + 2,0,39,39,229,229,2,0,72,72,131,131,2,0,105,105,122,122,2,0,92,92, + 123,123,1,0,239,240,2,0,101,101,174,174,2,0,324,324,329,329,2,0, + 91,91,281,281,2,0,29,29,75,75,2,0,101,101,148,148,2,0,22,22,79,79, + 2,0,33,33,259,259,3,0,35,35,150,150,270,270,2,0,124,124,247,247, + 2,0,85,85,89,89,2,0,144,144,189,189,2,0,125,125,197,197,2,0,54,54, + 281,281,1,0,318,319,1,0,320,322,1,0,291,293,4,0,89,89,97,97,273, + 273,283,283,2,0,49,49,280,280,2,0,100,100,241,241,1,0,312,317,3, + 0,22,22,26,26,254,254,2,0,97,97,273,273,5,0,67,67,118,118,170,171, + 245,245,310,310,1,0,175,178,2,0,102,102,212,212,3,0,113,113,137, + 137,263,263,4,0,80,80,132,132,160,160,294,294,2,0,192,192,309,309, + 2,0,268,268,298,298,54,0,18,22,24,24,26,27,29,33,35,35,37,39,42, + 49,51,52,56,56,65,67,69,72,74,75,77,78,80,82,85,87,89,89,92,92,95, + 95,98,102,104,104,107,113,116,116,118,121,123,124,126,126,129,129, + 131,132,134,135,137,137,144,151,153,153,155,155,157,157,160,171, + 173,180,184,189,191,193,196,196,198,213,215,220,222,233,235,237, + 239,247,249,259,261,264,266,271,274,276,278,280,282,284,286,289, + 291,295,297,299,302,303,305,311,4245,0,305,1,0,0,0,2,310,1,0,0,0, + 4,312,1,0,0,0,6,316,1,0,0,0,8,320,1,0,0,0,10,324,1,0,0,0,12,328, + 1,0,0,0,14,332,1,0,0,0,16,1233,1,0,0,0,18,1236,1,0,0,0,20,1240,1, + 0,0,0,22,1250,1,0,0,0,24,1254,1,0,0,0,26,1268,1,0,0,0,28,1270,1, + 0,0,0,30,1284,1,0,0,0,32,1290,1,0,0,0,34,1294,1,0,0,0,36,1302,1, + 0,0,0,38,1308,1,0,0,0,40,1310,1,0,0,0,42,1347,1,0,0,0,44,1349,1, + 0,0,0,46,1351,1,0,0,0,48,1387,1,0,0,0,50,1391,1,0,0,0,52,1400,1, + 0,0,0,54,1448,1,0,0,0,56,1498,1,0,0,0,58,1513,1,0,0,0,60,1517,1, + 0,0,0,62,1519,1,0,0,0,64,1526,1,0,0,0,66,1555,1,0,0,0,68,1564,1, + 0,0,0,70,1584,1,0,0,0,72,1586,1,0,0,0,74,1625,1,0,0,0,76,1641,1, + 0,0,0,78,1643,1,0,0,0,80,1652,1,0,0,0,82,1654,1,0,0,0,84,1662,1, + 0,0,0,86,1668,1,0,0,0,88,1670,1,0,0,0,90,1755,1,0,0,0,92,1770,1, + 0,0,0,94,1781,1,0,0,0,96,1802,1,0,0,0,98,1804,1,0,0,0,100,1817,1, + 0,0,0,102,1821,1,0,0,0,104,1831,1,0,0,0,106,1842,1,0,0,0,108,1853, + 1,0,0,0,110,1935,1,0,0,0,112,2014,1,0,0,0,114,2041,1,0,0,0,116,2043, + 1,0,0,0,118,2050,1,0,0,0,120,2062,1,0,0,0,122,2064,1,0,0,0,124,2092, + 1,0,0,0,126,2099,1,0,0,0,128,2171,1,0,0,0,130,2191,1,0,0,0,132,2193, + 1,0,0,0,134,2197,1,0,0,0,136,2210,1,0,0,0,138,2219,1,0,0,0,140,2293, + 1,0,0,0,142,2299,1,0,0,0,144,2771,1,0,0,0,146,2786,1,0,0,0,148,2804, + 1,0,0,0,150,2809,1,0,0,0,152,2814,1,0,0,0,154,2818,1,0,0,0,156,2824, + 1,0,0,0,158,2837,1,0,0,0,160,2845,1,0,0,0,162,2858,1,0,0,0,164,2860, + 1,0,0,0,166,2866,1,0,0,0,168,2874,1,0,0,0,170,2882,1,0,0,0,172,2884, + 1,0,0,0,174,2886,1,0,0,0,176,2888,1,0,0,0,178,2890,1,0,0,0,180,2900, + 1,0,0,0,182,2902,1,0,0,0,184,2995,1,0,0,0,186,3013,1,0,0,0,188,3017, + 1,0,0,0,190,3019,1,0,0,0,192,3024,1,0,0,0,194,3094,1,0,0,0,196,3096, + 1,0,0,0,198,3113,1,0,0,0,200,3177,1,0,0,0,202,3188,1,0,0,0,204,3190, + 1,0,0,0,206,3230,1,0,0,0,208,3262,1,0,0,0,210,3264,1,0,0,0,212,3272, + 1,0,0,0,214,3279,1,0,0,0,216,3288,1,0,0,0,218,3295,1,0,0,0,220,3302, + 1,0,0,0,222,3304,1,0,0,0,224,3312,1,0,0,0,226,3323,1,0,0,0,228,3337, + 1,0,0,0,230,3352,1,0,0,0,232,3356,1,0,0,0,234,3378,1,0,0,0,236,3479, + 1,0,0,0,238,3481,1,0,0,0,240,3486,1,0,0,0,242,3491,1,0,0,0,244,3494, + 1,0,0,0,246,3511,1,0,0,0,248,3521,1,0,0,0,250,3526,1,0,0,0,252,3529, + 1,0,0,0,254,3535,1,0,0,0,256,3548,1,0,0,0,258,3561,1,0,0,0,260,3574, + 1,0,0,0,262,3587,1,0,0,0,264,3594,1,0,0,0,266,3601,1,0,0,0,268,3603, + 1,0,0,0,270,3605,1,0,0,0,272,3607,1,0,0,0,274,3609,1,0,0,0,276,3613, + 1,0,0,0,278,3615,1,0,0,0,280,3617,1,0,0,0,282,3625,1,0,0,0,284,3631, + 1,0,0,0,286,3636,1,0,0,0,288,3643,1,0,0,0,290,3645,1,0,0,0,292,3660, + 1,0,0,0,294,3667,1,0,0,0,296,3681,1,0,0,0,298,3685,1,0,0,0,300,3687, + 1,0,0,0,302,304,3,2,1,0,303,302,1,0,0,0,304,307,1,0,0,0,305,303, + 1,0,0,0,305,306,1,0,0,0,306,308,1,0,0,0,307,305,1,0,0,0,308,309, + 5,0,0,1,309,1,1,0,0,0,310,311,3,4,2,0,311,3,1,0,0,0,312,314,3,16, + 8,0,313,315,5,325,0,0,314,313,1,0,0,0,314,315,1,0,0,0,315,5,1,0, + 0,0,316,318,3,136,68,0,317,319,5,325,0,0,318,317,1,0,0,0,318,319, + 1,0,0,0,319,7,1,0,0,0,320,322,3,222,111,0,321,323,5,325,0,0,322, + 321,1,0,0,0,322,323,1,0,0,0,323,9,1,0,0,0,324,326,3,184,92,0,325, + 327,5,325,0,0,326,325,1,0,0,0,326,327,1,0,0,0,327,11,1,0,0,0,328, + 330,3,204,102,0,329,331,5,325,0,0,330,329,1,0,0,0,330,331,1,0,0, + 0,331,13,1,0,0,0,332,333,3,224,112,0,333,334,5,0,0,1,334,15,1,0, + 0,0,335,1234,3,18,9,0,336,337,5,288,0,0,337,1234,3,264,132,0,338, + 339,5,53,0,0,339,343,5,42,0,0,340,341,5,119,0,0,341,342,5,182,0, + 0,342,344,5,94,0,0,343,340,1,0,0,0,343,344,1,0,0,0,344,345,1,0,0, + 0,345,346,3,270,135,0,346,347,5,290,0,0,347,350,3,294,147,0,348, + 349,5,46,0,0,349,351,3,168,84,0,350,348,1,0,0,0,350,351,1,0,0,0, + 351,354,1,0,0,0,352,353,5,31,0,0,353,355,3,288,144,0,354,352,1,0, + 0,0,354,355,1,0,0,0,355,358,1,0,0,0,356,357,5,304,0,0,357,359,3, + 32,16,0,358,356,1,0,0,0,358,359,1,0,0,0,359,1234,1,0,0,0,360,361, + 5,83,0,0,361,364,5,42,0,0,362,363,5,119,0,0,363,365,5,94,0,0,364, + 362,1,0,0,0,364,365,1,0,0,0,365,366,1,0,0,0,366,368,3,268,134,0, + 367,369,7,0,0,0,368,367,1,0,0,0,368,369,1,0,0,0,369,1234,1,0,0,0, + 370,371,5,53,0,0,371,375,5,243,0,0,372,373,5,119,0,0,373,374,5,182, + 0,0,374,376,5,94,0,0,375,372,1,0,0,0,375,376,1,0,0,0,376,377,1,0, + 0,0,377,380,3,266,133,0,378,379,5,31,0,0,379,381,3,288,144,0,380, + 378,1,0,0,0,380,381,1,0,0,0,381,384,1,0,0,0,382,383,5,304,0,0,383, + 385,3,32,16,0,384,382,1,0,0,0,384,385,1,0,0,0,385,1234,1,0,0,0,386, + 387,5,83,0,0,387,390,5,243,0,0,388,389,5,119,0,0,389,391,5,94,0, + 0,390,388,1,0,0,0,390,391,1,0,0,0,391,392,1,0,0,0,392,394,3,264, + 132,0,393,395,7,0,0,0,394,393,1,0,0,0,394,395,1,0,0,0,395,1234,1, + 0,0,0,396,397,5,23,0,0,397,398,5,243,0,0,398,399,3,264,132,0,399, + 400,5,223,0,0,400,401,5,269,0,0,401,402,3,266,133,0,402,1234,1,0, + 0,0,403,404,5,23,0,0,404,405,5,243,0,0,405,406,3,264,132,0,406,407, + 5,251,0,0,407,408,5,31,0,0,408,409,3,288,144,0,409,1234,1,0,0,0, + 410,413,5,53,0,0,411,412,5,194,0,0,412,414,5,226,0,0,413,411,1,0, + 0,0,413,414,1,0,0,0,414,415,1,0,0,0,415,419,5,260,0,0,416,417,5, + 119,0,0,417,418,5,182,0,0,418,420,5,94,0,0,419,416,1,0,0,0,419,420, + 1,0,0,0,420,421,1,0,0,0,421,423,3,258,129,0,422,424,3,104,52,0,423, + 422,1,0,0,0,423,424,1,0,0,0,424,427,1,0,0,0,425,426,5,46,0,0,426, + 428,3,168,84,0,427,425,1,0,0,0,427,428,1,0,0,0,428,431,1,0,0,0,429, + 430,5,304,0,0,430,432,3,32,16,0,431,429,1,0,0,0,431,432,1,0,0,0, + 432,433,1,0,0,0,433,439,5,28,0,0,434,440,3,18,9,0,435,436,5,1,0, + 0,436,437,3,18,9,0,437,438,5,2,0,0,438,440,1,0,0,0,439,434,1,0,0, + 0,439,435,1,0,0,0,440,446,1,0,0,0,441,443,5,304,0,0,442,444,5,179, + 0,0,443,442,1,0,0,0,443,444,1,0,0,0,444,445,1,0,0,0,445,447,5,65, + 0,0,446,441,1,0,0,0,446,447,1,0,0,0,447,1234,1,0,0,0,448,451,5,53, + 0,0,449,450,5,194,0,0,450,452,5,226,0,0,451,449,1,0,0,0,451,452, + 1,0,0,0,452,453,1,0,0,0,453,457,5,260,0,0,454,455,5,119,0,0,455, + 456,5,182,0,0,456,458,5,94,0,0,457,454,1,0,0,0,457,458,1,0,0,0,458, + 459,1,0,0,0,459,460,3,258,129,0,460,461,5,1,0,0,461,466,3,26,13, + 0,462,463,5,3,0,0,463,465,3,26,13,0,464,462,1,0,0,0,465,468,1,0, + 0,0,466,464,1,0,0,0,466,467,1,0,0,0,467,469,1,0,0,0,468,466,1,0, + 0,0,469,472,5,2,0,0,470,471,5,46,0,0,471,473,3,168,84,0,472,470, + 1,0,0,0,472,473,1,0,0,0,473,476,1,0,0,0,474,475,5,304,0,0,475,477, + 3,32,16,0,476,474,1,0,0,0,476,477,1,0,0,0,477,1234,1,0,0,0,478,479, + 5,83,0,0,479,482,5,260,0,0,480,481,5,119,0,0,481,483,5,94,0,0,482, + 480,1,0,0,0,482,483,1,0,0,0,483,484,1,0,0,0,484,1234,3,256,128,0, + 485,486,5,127,0,0,486,487,5,130,0,0,487,489,3,256,128,0,488,490, + 3,106,53,0,489,488,1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,492, + 3,18,9,0,492,1234,1,0,0,0,493,494,5,73,0,0,494,495,5,105,0,0,495, + 498,3,256,128,0,496,497,5,301,0,0,497,499,3,138,69,0,498,496,1,0, + 0,0,498,499,1,0,0,0,499,1234,1,0,0,0,500,501,5,274,0,0,501,502,5, + 260,0,0,502,1234,3,256,128,0,503,504,5,46,0,0,504,505,5,190,0,0, + 505,506,5,260,0,0,506,507,3,256,128,0,507,510,5,133,0,0,508,511, + 3,168,84,0,509,511,5,183,0,0,510,508,1,0,0,0,510,509,1,0,0,0,511, + 1234,1,0,0,0,512,513,5,46,0,0,513,514,5,190,0,0,514,515,5,299,0, + 0,515,516,3,260,130,0,516,519,5,133,0,0,517,520,3,168,84,0,518,520, + 5,183,0,0,519,517,1,0,0,0,519,518,1,0,0,0,520,1234,1,0,0,0,521,522, + 5,46,0,0,522,523,5,190,0,0,523,524,5,44,0,0,524,525,3,276,138,0, + 525,528,5,133,0,0,526,529,3,168,84,0,527,529,5,183,0,0,528,526,1, + 0,0,0,528,527,1,0,0,0,529,1234,1,0,0,0,530,531,5,23,0,0,531,534, + 5,260,0,0,532,533,5,119,0,0,533,535,5,94,0,0,534,532,1,0,0,0,534, + 535,1,0,0,0,535,536,1,0,0,0,536,537,3,256,128,0,537,538,5,223,0, + 0,538,539,5,269,0,0,539,540,3,258,129,0,540,1234,1,0,0,0,541,542, + 5,23,0,0,542,545,5,260,0,0,543,544,5,119,0,0,544,546,5,94,0,0,545, + 543,1,0,0,0,545,546,1,0,0,0,546,547,1,0,0,0,547,548,3,256,128,0, + 548,549,5,19,0,0,549,553,5,44,0,0,550,551,5,119,0,0,551,552,5,182, + 0,0,552,554,5,94,0,0,553,550,1,0,0,0,553,554,1,0,0,0,554,555,1,0, + 0,0,555,556,3,28,14,0,556,1234,1,0,0,0,557,558,5,23,0,0,558,561, + 5,260,0,0,559,560,5,119,0,0,560,562,5,94,0,0,561,559,1,0,0,0,561, + 562,1,0,0,0,562,563,1,0,0,0,563,564,3,256,128,0,564,565,5,223,0, + 0,565,568,5,44,0,0,566,567,5,119,0,0,567,569,5,94,0,0,568,566,1, + 0,0,0,568,569,1,0,0,0,569,570,1,0,0,0,570,571,3,276,138,0,571,572, + 5,269,0,0,572,573,3,278,139,0,573,1234,1,0,0,0,574,575,5,23,0,0, + 575,578,5,260,0,0,576,577,5,119,0,0,577,579,5,94,0,0,578,576,1,0, + 0,0,578,579,1,0,0,0,579,580,1,0,0,0,580,581,3,256,128,0,581,582, + 5,83,0,0,582,585,5,44,0,0,583,584,5,119,0,0,584,586,5,94,0,0,585, + 583,1,0,0,0,585,586,1,0,0,0,586,587,1,0,0,0,587,588,3,276,138,0, + 588,1234,1,0,0,0,589,590,5,23,0,0,590,593,5,260,0,0,591,592,5,119, + 0,0,592,594,5,94,0,0,593,591,1,0,0,0,593,594,1,0,0,0,594,595,1,0, + 0,0,595,596,3,256,128,0,596,597,5,23,0,0,597,598,5,44,0,0,598,599, + 3,276,138,0,599,600,5,251,0,0,600,601,5,65,0,0,601,602,5,276,0,0, + 602,603,3,184,92,0,603,1234,1,0,0,0,604,605,5,23,0,0,605,608,5,260, + 0,0,606,607,5,119,0,0,607,609,5,94,0,0,608,606,1,0,0,0,608,609,1, + 0,0,0,609,610,1,0,0,0,610,611,3,256,128,0,611,612,5,23,0,0,612,613, + 5,44,0,0,613,614,3,276,138,0,614,615,5,83,0,0,615,616,5,182,0,0, + 616,617,5,183,0,0,617,1234,1,0,0,0,618,619,5,23,0,0,619,620,5,260, + 0,0,620,621,3,256,128,0,621,622,5,251,0,0,622,623,5,31,0,0,623,624, + 3,288,144,0,624,1234,1,0,0,0,625,626,5,23,0,0,626,627,5,260,0,0, + 627,628,3,256,128,0,628,629,5,251,0,0,629,630,5,216,0,0,630,631, + 3,34,17,0,631,1234,1,0,0,0,632,633,5,23,0,0,633,634,5,260,0,0,634, + 635,3,256,128,0,635,636,5,93,0,0,636,649,3,272,136,0,637,646,5,1, + 0,0,638,643,3,218,109,0,639,640,5,3,0,0,640,642,3,218,109,0,641, + 639,1,0,0,0,642,645,1,0,0,0,643,641,1,0,0,0,643,644,1,0,0,0,644, + 647,1,0,0,0,645,643,1,0,0,0,646,638,1,0,0,0,646,647,1,0,0,0,647, + 648,1,0,0,0,648,650,5,2,0,0,649,637,1,0,0,0,649,650,1,0,0,0,650, + 653,1,0,0,0,651,652,5,301,0,0,652,654,3,138,69,0,653,651,1,0,0,0, + 653,654,1,0,0,0,654,1234,1,0,0,0,655,656,5,24,0,0,656,659,3,256, + 128,0,657,658,5,304,0,0,658,660,3,32,16,0,659,657,1,0,0,0,659,660, + 1,0,0,0,660,1234,1,0,0,0,661,664,5,53,0,0,662,663,5,194,0,0,663, + 665,5,226,0,0,664,662,1,0,0,0,664,665,1,0,0,0,665,666,1,0,0,0,666, + 667,5,167,0,0,667,671,5,299,0,0,668,669,5,119,0,0,669,670,5,182, + 0,0,670,672,5,94,0,0,671,668,1,0,0,0,671,672,1,0,0,0,672,673,1,0, + 0,0,673,677,3,262,131,0,674,675,5,109,0,0,675,676,5,208,0,0,676, + 678,3,178,89,0,677,674,1,0,0,0,677,678,1,0,0,0,678,681,1,0,0,0,679, + 680,5,46,0,0,680,682,3,168,84,0,681,679,1,0,0,0,681,682,1,0,0,0, + 682,685,1,0,0,0,683,684,5,304,0,0,684,686,3,32,16,0,685,683,1,0, + 0,0,685,686,1,0,0,0,686,687,1,0,0,0,687,688,5,28,0,0,688,689,3,18, + 9,0,689,1234,1,0,0,0,690,693,5,53,0,0,691,692,5,194,0,0,692,694, + 5,226,0,0,693,691,1,0,0,0,693,694,1,0,0,0,694,695,1,0,0,0,695,696, + 5,299,0,0,696,699,3,262,131,0,697,698,5,46,0,0,698,700,3,168,84, + 0,699,697,1,0,0,0,699,700,1,0,0,0,700,703,1,0,0,0,701,702,5,246, + 0,0,702,704,7,1,0,0,703,701,1,0,0,0,703,704,1,0,0,0,704,707,1,0, + 0,0,705,706,5,304,0,0,706,708,3,32,16,0,707,705,1,0,0,0,707,708, + 1,0,0,0,708,709,1,0,0,0,709,710,5,28,0,0,710,711,3,18,9,0,711,1234, + 1,0,0,0,712,713,5,222,0,0,713,714,5,167,0,0,714,715,5,299,0,0,715, + 1234,3,260,130,0,716,717,5,83,0,0,717,718,5,167,0,0,718,721,5,299, + 0,0,719,720,5,119,0,0,720,722,5,94,0,0,721,719,1,0,0,0,721,722,1, + 0,0,0,722,723,1,0,0,0,723,1234,3,260,130,0,724,725,5,23,0,0,725, + 726,5,167,0,0,726,729,5,299,0,0,727,728,5,119,0,0,728,730,5,94,0, + 0,729,727,1,0,0,0,729,730,1,0,0,0,730,731,1,0,0,0,731,732,3,260, + 130,0,732,733,5,223,0,0,733,734,5,269,0,0,734,735,3,262,131,0,735, + 1234,1,0,0,0,736,737,5,23,0,0,737,738,5,167,0,0,738,739,5,299,0, + 0,739,740,3,260,130,0,740,741,5,251,0,0,741,742,5,216,0,0,742,743, + 3,34,17,0,743,1234,1,0,0,0,744,745,5,83,0,0,745,748,5,299,0,0,746, + 747,5,119,0,0,747,749,5,94,0,0,748,746,1,0,0,0,748,749,1,0,0,0,749, + 750,1,0,0,0,750,1234,3,260,130,0,751,752,5,23,0,0,752,753,5,299, + 0,0,753,754,3,260,130,0,754,755,5,223,0,0,755,756,5,269,0,0,756, + 757,3,262,131,0,757,1234,1,0,0,0,758,759,5,23,0,0,759,760,5,299, + 0,0,760,761,3,260,130,0,761,762,5,251,0,0,762,763,5,31,0,0,763,764, + 3,288,144,0,764,1234,1,0,0,0,765,766,5,37,0,0,766,767,3,272,136, + 0,767,776,5,1,0,0,768,773,3,218,109,0,769,770,5,3,0,0,770,772,3, + 218,109,0,771,769,1,0,0,0,772,775,1,0,0,0,773,771,1,0,0,0,773,774, + 1,0,0,0,774,777,1,0,0,0,775,773,1,0,0,0,776,768,1,0,0,0,776,777, + 1,0,0,0,777,778,1,0,0,0,778,779,5,2,0,0,779,1234,1,0,0,0,780,783, + 5,53,0,0,781,782,5,194,0,0,782,784,5,226,0,0,783,781,1,0,0,0,783, + 784,1,0,0,0,784,785,1,0,0,0,785,1234,3,224,112,0,786,787,5,83,0, + 0,787,790,5,107,0,0,788,789,5,119,0,0,789,791,5,94,0,0,790,788,1, + 0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,1234,3,228,114,0,793,794, + 5,53,0,0,794,795,5,235,0,0,795,799,3,294,147,0,796,797,5,304,0,0, + 797,798,5,20,0,0,798,800,3,286,143,0,799,796,1,0,0,0,799,800,1,0, + 0,0,800,803,1,0,0,0,801,802,5,122,0,0,802,804,3,268,134,0,803,801, + 1,0,0,0,803,804,1,0,0,0,804,1234,1,0,0,0,805,806,5,83,0,0,806,807, + 5,235,0,0,807,810,3,294,147,0,808,809,5,122,0,0,809,811,3,268,134, + 0,810,808,1,0,0,0,810,811,1,0,0,0,811,1234,1,0,0,0,812,813,5,110, + 0,0,813,818,3,292,146,0,814,815,5,3,0,0,815,817,3,292,146,0,816, + 814,1,0,0,0,817,820,1,0,0,0,818,816,1,0,0,0,818,819,1,0,0,0,819, + 821,1,0,0,0,820,818,1,0,0,0,821,822,5,269,0,0,822,827,3,288,144, + 0,823,824,5,3,0,0,824,826,3,288,144,0,825,823,1,0,0,0,826,829,1, + 0,0,0,827,825,1,0,0,0,827,828,1,0,0,0,828,833,1,0,0,0,829,827,1, + 0,0,0,830,831,5,304,0,0,831,832,5,20,0,0,832,834,5,193,0,0,833,830, + 1,0,0,0,833,834,1,0,0,0,834,838,1,0,0,0,835,836,5,111,0,0,836,837, + 5,36,0,0,837,839,3,286,143,0,838,835,1,0,0,0,838,839,1,0,0,0,839, + 842,1,0,0,0,840,841,5,122,0,0,841,843,3,268,134,0,842,840,1,0,0, + 0,842,843,1,0,0,0,843,1234,1,0,0,0,844,855,5,110,0,0,845,850,3,292, + 146,0,846,847,5,3,0,0,847,849,3,292,146,0,848,846,1,0,0,0,849,852, + 1,0,0,0,850,848,1,0,0,0,850,851,1,0,0,0,851,856,1,0,0,0,852,850, + 1,0,0,0,853,854,5,22,0,0,854,856,5,215,0,0,855,845,1,0,0,0,855,853, + 1,0,0,0,856,857,1,0,0,0,857,858,5,190,0,0,858,859,3,252,126,0,859, + 860,5,269,0,0,860,864,3,288,144,0,861,862,5,304,0,0,862,863,5,110, + 0,0,863,865,5,193,0,0,864,861,1,0,0,0,864,865,1,0,0,0,865,1234,1, + 0,0,0,866,870,5,233,0,0,867,868,5,20,0,0,868,869,5,193,0,0,869,871, + 5,103,0,0,870,867,1,0,0,0,870,871,1,0,0,0,871,872,1,0,0,0,872,877, + 3,292,146,0,873,874,5,3,0,0,874,876,3,292,146,0,875,873,1,0,0,0, + 876,879,1,0,0,0,877,875,1,0,0,0,877,878,1,0,0,0,878,880,1,0,0,0, + 879,877,1,0,0,0,880,881,5,105,0,0,881,886,3,288,144,0,882,883,5, + 3,0,0,883,885,3,288,144,0,884,882,1,0,0,0,885,888,1,0,0,0,886,884, + 1,0,0,0,886,887,1,0,0,0,887,892,1,0,0,0,888,886,1,0,0,0,889,890, + 5,111,0,0,890,891,5,36,0,0,891,893,3,286,143,0,892,889,1,0,0,0,892, + 893,1,0,0,0,893,896,1,0,0,0,894,895,5,122,0,0,895,897,3,268,134, + 0,896,894,1,0,0,0,896,897,1,0,0,0,897,1234,1,0,0,0,898,902,5,233, + 0,0,899,900,5,110,0,0,900,901,5,193,0,0,901,903,5,103,0,0,902,899, + 1,0,0,0,902,903,1,0,0,0,903,914,1,0,0,0,904,909,3,292,146,0,905, + 906,5,3,0,0,906,908,3,292,146,0,907,905,1,0,0,0,908,911,1,0,0,0, + 909,907,1,0,0,0,909,910,1,0,0,0,910,915,1,0,0,0,911,909,1,0,0,0, + 912,913,5,22,0,0,913,915,5,215,0,0,914,904,1,0,0,0,914,912,1,0,0, + 0,915,916,1,0,0,0,916,917,5,190,0,0,917,918,3,252,126,0,918,919, + 5,105,0,0,919,920,3,288,144,0,920,1234,1,0,0,0,921,932,5,74,0,0, + 922,927,3,248,124,0,923,924,5,3,0,0,924,926,3,248,124,0,925,923, + 1,0,0,0,926,929,1,0,0,0,927,925,1,0,0,0,927,928,1,0,0,0,928,933, + 1,0,0,0,929,927,1,0,0,0,930,931,5,22,0,0,931,933,5,215,0,0,932,922, + 1,0,0,0,932,930,1,0,0,0,933,934,1,0,0,0,934,935,5,190,0,0,935,936, + 3,252,126,0,936,937,5,269,0,0,937,938,3,288,144,0,938,1234,1,0,0, + 0,939,940,5,251,0,0,940,944,5,235,0,0,941,945,5,22,0,0,942,945,5, + 180,0,0,943,945,3,294,147,0,944,941,1,0,0,0,944,942,1,0,0,0,944, + 943,1,0,0,0,945,948,1,0,0,0,946,947,5,122,0,0,947,949,3,268,134, + 0,948,946,1,0,0,0,948,949,1,0,0,0,949,1234,1,0,0,0,950,951,5,253, + 0,0,951,954,5,112,0,0,952,953,5,190,0,0,953,955,3,252,126,0,954, + 952,1,0,0,0,954,955,1,0,0,0,955,1234,1,0,0,0,956,968,5,95,0,0,957, + 958,5,1,0,0,958,963,3,212,106,0,959,960,5,3,0,0,960,962,3,212,106, + 0,961,959,1,0,0,0,962,965,1,0,0,0,963,961,1,0,0,0,963,964,1,0,0, + 0,964,966,1,0,0,0,965,963,1,0,0,0,966,967,5,2,0,0,967,969,1,0,0, + 0,968,957,1,0,0,0,968,969,1,0,0,0,969,970,1,0,0,0,970,1234,3,16, + 8,0,971,972,5,95,0,0,972,974,5,24,0,0,973,975,5,297,0,0,974,973, + 1,0,0,0,974,975,1,0,0,0,975,976,1,0,0,0,976,1234,3,16,8,0,977,978, + 5,253,0,0,978,979,5,53,0,0,979,980,5,260,0,0,980,1234,3,256,128, + 0,981,982,5,253,0,0,982,983,5,53,0,0,983,984,5,243,0,0,984,1234, + 3,264,132,0,985,986,5,253,0,0,986,987,5,53,0,0,987,988,5,299,0,0, + 988,1234,3,260,130,0,989,990,5,253,0,0,990,991,5,53,0,0,991,992, + 5,167,0,0,992,993,5,299,0,0,993,1234,3,260,130,0,994,995,5,253,0, + 0,995,996,5,53,0,0,996,997,5,107,0,0,997,1234,3,272,136,0,998,999, + 5,253,0,0,999,1002,5,261,0,0,1000,1001,7,2,0,0,1001,1003,3,264,132, + 0,1002,1000,1,0,0,0,1002,1003,1,0,0,0,1003,1010,1,0,0,0,1004,1005, + 5,154,0,0,1005,1008,3,168,84,0,1006,1007,5,90,0,0,1007,1009,3,168, + 84,0,1008,1006,1,0,0,0,1008,1009,1,0,0,0,1009,1011,1,0,0,0,1010, + 1004,1,0,0,0,1010,1011,1,0,0,0,1011,1234,1,0,0,0,1012,1013,5,253, + 0,0,1013,1016,5,244,0,0,1014,1015,7,2,0,0,1015,1017,3,268,134,0, + 1016,1014,1,0,0,0,1016,1017,1,0,0,0,1017,1024,1,0,0,0,1018,1019, + 5,154,0,0,1019,1022,3,168,84,0,1020,1021,5,90,0,0,1021,1023,3,168, + 84,0,1022,1020,1,0,0,0,1022,1023,1,0,0,0,1023,1025,1,0,0,0,1024, + 1018,1,0,0,0,1024,1025,1,0,0,0,1025,1234,1,0,0,0,1026,1027,5,253, + 0,0,1027,1034,5,43,0,0,1028,1029,5,154,0,0,1029,1032,3,168,84,0, + 1030,1031,5,90,0,0,1031,1033,3,168,84,0,1032,1030,1,0,0,0,1032,1033, + 1,0,0,0,1033,1035,1,0,0,0,1034,1028,1,0,0,0,1034,1035,1,0,0,0,1035, + 1234,1,0,0,0,1036,1037,5,253,0,0,1037,1038,5,45,0,0,1038,1039,7, + 2,0,0,1039,1046,3,254,127,0,1040,1041,5,154,0,0,1041,1044,3,168, + 84,0,1042,1043,5,90,0,0,1043,1045,3,168,84,0,1044,1042,1,0,0,0,1044, + 1045,1,0,0,0,1045,1047,1,0,0,0,1046,1040,1,0,0,0,1046,1047,1,0,0, + 0,1047,1234,1,0,0,0,1048,1049,5,253,0,0,1049,1050,5,256,0,0,1050, + 1051,5,103,0,0,1051,1234,3,254,127,0,1052,1053,5,253,0,0,1053,1054, + 5,256,0,0,1054,1055,5,103,0,0,1055,1056,5,1,0,0,1056,1057,3,18,9, + 0,1057,1058,5,2,0,0,1058,1234,1,0,0,0,1059,1061,5,253,0,0,1060,1062, + 5,56,0,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063,1,0,0,0,1063, + 1066,5,236,0,0,1064,1065,7,2,0,0,1065,1067,3,268,134,0,1066,1064, + 1,0,0,0,1066,1067,1,0,0,0,1067,1234,1,0,0,0,1068,1069,5,253,0,0, + 1069,1070,5,235,0,0,1070,1073,5,112,0,0,1071,1072,7,2,0,0,1072,1074, + 3,268,134,0,1073,1071,1,0,0,0,1073,1074,1,0,0,0,1074,1234,1,0,0, + 0,1075,1076,5,76,0,0,1076,1234,3,254,127,0,1077,1078,5,75,0,0,1078, + 1234,3,254,127,0,1079,1080,5,253,0,0,1080,1083,5,108,0,0,1081,1082, + 7,2,0,0,1082,1084,3,264,132,0,1083,1081,1,0,0,0,1083,1084,1,0,0, + 0,1084,1091,1,0,0,0,1085,1086,5,154,0,0,1086,1089,3,168,84,0,1087, + 1088,5,90,0,0,1088,1090,3,168,84,0,1089,1087,1,0,0,0,1089,1090,1, + 0,0,0,1090,1092,1,0,0,0,1091,1085,1,0,0,0,1091,1092,1,0,0,0,1092, + 1234,1,0,0,0,1093,1094,5,253,0,0,1094,1101,5,250,0,0,1095,1096,5, + 154,0,0,1096,1099,3,168,84,0,1097,1098,5,90,0,0,1098,1100,3,168, + 84,0,1099,1097,1,0,0,0,1099,1100,1,0,0,0,1100,1102,1,0,0,0,1101, + 1095,1,0,0,0,1101,1102,1,0,0,0,1102,1234,1,0,0,0,1103,1104,5,251, + 0,0,1104,1105,5,250,0,0,1105,1106,5,31,0,0,1106,1234,3,298,149,0, + 1107,1108,5,227,0,0,1108,1109,5,250,0,0,1109,1234,5,31,0,0,1110, + 1111,5,251,0,0,1111,1112,5,250,0,0,1112,1113,3,280,140,0,1113,1114, + 5,312,0,0,1114,1115,3,136,68,0,1115,1234,1,0,0,0,1116,1117,5,227, + 0,0,1117,1118,5,250,0,0,1118,1234,3,280,140,0,1119,1120,5,255,0, + 0,1120,1129,5,271,0,0,1121,1126,3,214,107,0,1122,1123,5,3,0,0,1123, + 1125,3,214,107,0,1124,1122,1,0,0,0,1125,1128,1,0,0,0,1126,1124,1, + 0,0,0,1126,1127,1,0,0,0,1127,1130,1,0,0,0,1128,1126,1,0,0,0,1129, + 1121,1,0,0,0,1129,1130,1,0,0,0,1130,1234,1,0,0,0,1131,1133,5,47, + 0,0,1132,1134,5,307,0,0,1133,1132,1,0,0,0,1133,1134,1,0,0,0,1134, + 1234,1,0,0,0,1135,1137,5,237,0,0,1136,1138,5,307,0,0,1137,1136,1, + 0,0,0,1137,1138,1,0,0,0,1138,1234,1,0,0,0,1139,1140,5,214,0,0,1140, + 1141,3,294,147,0,1141,1142,5,105,0,0,1142,1143,3,16,8,0,1143,1234, + 1,0,0,0,1144,1145,5,68,0,0,1145,1146,5,214,0,0,1146,1234,3,294,147, + 0,1147,1148,5,93,0,0,1148,1158,3,294,147,0,1149,1150,5,290,0,0,1150, + 1155,3,136,68,0,1151,1152,5,3,0,0,1152,1154,3,136,68,0,1153,1151, + 1,0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156, + 1159,1,0,0,0,1157,1155,1,0,0,0,1158,1149,1,0,0,0,1158,1159,1,0,0, + 0,1159,1234,1,0,0,0,1160,1161,5,93,0,0,1161,1162,5,121,0,0,1162, + 1172,3,168,84,0,1163,1164,5,290,0,0,1164,1169,3,136,68,0,1165,1166, + 5,3,0,0,1166,1168,3,136,68,0,1167,1165,1,0,0,0,1168,1171,1,0,0,0, + 1169,1167,1,0,0,0,1169,1170,1,0,0,0,1170,1173,1,0,0,0,1171,1169, + 1,0,0,0,1172,1163,1,0,0,0,1172,1173,1,0,0,0,1173,1234,1,0,0,0,1174, + 1175,5,76,0,0,1175,1176,5,126,0,0,1176,1234,3,294,147,0,1177,1178, + 5,76,0,0,1178,1179,5,198,0,0,1179,1234,3,294,147,0,1180,1181,5,251, + 0,0,1181,1182,5,205,0,0,1182,1234,3,222,111,0,1183,1184,5,251,0, + 0,1184,1185,5,267,0,0,1185,1188,5,311,0,0,1186,1189,5,157,0,0,1187, + 1189,3,136,68,0,1188,1186,1,0,0,0,1188,1187,1,0,0,0,1189,1234,1, + 0,0,0,1190,1191,5,287,0,0,1191,1192,3,256,128,0,1192,1193,5,251, + 0,0,1193,1198,3,210,105,0,1194,1195,5,3,0,0,1195,1197,3,210,105, + 0,1196,1194,1,0,0,0,1197,1200,1,0,0,0,1198,1196,1,0,0,0,1198,1199, + 1,0,0,0,1199,1203,1,0,0,0,1200,1198,1,0,0,0,1201,1202,5,301,0,0, + 1202,1204,3,138,69,0,1203,1201,1,0,0,0,1203,1204,1,0,0,0,1204,1234, + 1,0,0,0,1205,1206,5,169,0,0,1206,1207,5,130,0,0,1207,1212,3,256, + 128,0,1208,1210,5,28,0,0,1209,1208,1,0,0,0,1209,1210,1,0,0,0,1210, + 1211,1,0,0,0,1211,1213,3,294,147,0,1212,1209,1,0,0,0,1212,1213,1, + 0,0,0,1213,1214,1,0,0,0,1214,1215,5,290,0,0,1215,1216,3,72,36,0, + 1216,1217,5,190,0,0,1217,1219,3,136,68,0,1218,1220,3,194,97,0,1219, + 1218,1,0,0,0,1220,1221,1,0,0,0,1221,1219,1,0,0,0,1221,1222,1,0,0, + 0,1222,1234,1,0,0,0,1223,1224,5,253,0,0,1224,1225,5,46,0,0,1225, + 1226,5,190,0,0,1226,1227,5,260,0,0,1227,1234,3,256,128,0,1228,1229, + 5,253,0,0,1229,1230,5,46,0,0,1230,1231,5,190,0,0,1231,1232,5,44, + 0,0,1232,1234,3,276,138,0,1233,335,1,0,0,0,1233,336,1,0,0,0,1233, + 338,1,0,0,0,1233,360,1,0,0,0,1233,370,1,0,0,0,1233,386,1,0,0,0,1233, + 396,1,0,0,0,1233,403,1,0,0,0,1233,410,1,0,0,0,1233,448,1,0,0,0,1233, + 478,1,0,0,0,1233,485,1,0,0,0,1233,493,1,0,0,0,1233,500,1,0,0,0,1233, + 503,1,0,0,0,1233,512,1,0,0,0,1233,521,1,0,0,0,1233,530,1,0,0,0,1233, + 541,1,0,0,0,1233,557,1,0,0,0,1233,574,1,0,0,0,1233,589,1,0,0,0,1233, + 604,1,0,0,0,1233,618,1,0,0,0,1233,625,1,0,0,0,1233,632,1,0,0,0,1233, + 655,1,0,0,0,1233,661,1,0,0,0,1233,690,1,0,0,0,1233,712,1,0,0,0,1233, + 716,1,0,0,0,1233,724,1,0,0,0,1233,736,1,0,0,0,1233,744,1,0,0,0,1233, + 751,1,0,0,0,1233,758,1,0,0,0,1233,765,1,0,0,0,1233,780,1,0,0,0,1233, + 786,1,0,0,0,1233,793,1,0,0,0,1233,805,1,0,0,0,1233,812,1,0,0,0,1233, + 844,1,0,0,0,1233,866,1,0,0,0,1233,898,1,0,0,0,1233,921,1,0,0,0,1233, + 939,1,0,0,0,1233,950,1,0,0,0,1233,956,1,0,0,0,1233,971,1,0,0,0,1233, + 977,1,0,0,0,1233,981,1,0,0,0,1233,985,1,0,0,0,1233,989,1,0,0,0,1233, + 994,1,0,0,0,1233,998,1,0,0,0,1233,1012,1,0,0,0,1233,1026,1,0,0,0, + 1233,1036,1,0,0,0,1233,1048,1,0,0,0,1233,1052,1,0,0,0,1233,1059, + 1,0,0,0,1233,1068,1,0,0,0,1233,1075,1,0,0,0,1233,1077,1,0,0,0,1233, + 1079,1,0,0,0,1233,1093,1,0,0,0,1233,1103,1,0,0,0,1233,1107,1,0,0, + 0,1233,1110,1,0,0,0,1233,1116,1,0,0,0,1233,1119,1,0,0,0,1233,1131, + 1,0,0,0,1233,1135,1,0,0,0,1233,1139,1,0,0,0,1233,1144,1,0,0,0,1233, + 1147,1,0,0,0,1233,1160,1,0,0,0,1233,1174,1,0,0,0,1233,1177,1,0,0, + 0,1233,1180,1,0,0,0,1233,1183,1,0,0,0,1233,1190,1,0,0,0,1233,1205, + 1,0,0,0,1233,1223,1,0,0,0,1233,1228,1,0,0,0,1234,17,1,0,0,0,1235, + 1237,3,20,10,0,1236,1235,1,0,0,0,1236,1237,1,0,0,0,1237,1238,1,0, + 0,0,1238,1239,3,22,11,0,1239,19,1,0,0,0,1240,1241,5,304,0,0,1241, + 1246,3,224,112,0,1242,1243,5,3,0,0,1243,1245,3,224,112,0,1244,1242, + 1,0,0,0,1245,1248,1,0,0,0,1246,1244,1,0,0,0,1246,1247,1,0,0,0,1247, + 21,1,0,0,0,1248,1246,1,0,0,0,1249,1251,3,24,12,0,1250,1249,1,0,0, + 0,1250,1251,1,0,0,0,1251,1252,1,0,0,0,1252,1253,3,40,20,0,1253,23, + 1,0,0,0,1254,1256,5,304,0,0,1255,1257,5,221,0,0,1256,1255,1,0,0, + 0,1256,1257,1,0,0,0,1257,1258,1,0,0,0,1258,1263,3,66,33,0,1259,1260, + 5,3,0,0,1260,1262,3,66,33,0,1261,1259,1,0,0,0,1262,1265,1,0,0,0, + 1263,1261,1,0,0,0,1263,1264,1,0,0,0,1264,25,1,0,0,0,1265,1263,1, + 0,0,0,1266,1269,3,28,14,0,1267,1269,3,30,15,0,1268,1266,1,0,0,0, + 1268,1267,1,0,0,0,1269,27,1,0,0,0,1270,1271,3,278,139,0,1271,1274, + 3,184,92,0,1272,1273,5,182,0,0,1273,1275,5,183,0,0,1274,1272,1,0, + 0,0,1274,1275,1,0,0,0,1275,1278,1,0,0,0,1276,1277,5,46,0,0,1277, + 1279,3,168,84,0,1278,1276,1,0,0,0,1278,1279,1,0,0,0,1279,1282,1, + 0,0,0,1280,1281,5,304,0,0,1281,1283,3,32,16,0,1282,1280,1,0,0,0, + 1282,1283,1,0,0,0,1283,29,1,0,0,0,1284,1285,5,154,0,0,1285,1288, + 3,256,128,0,1286,1287,7,3,0,0,1287,1289,5,216,0,0,1288,1286,1,0, + 0,0,1288,1289,1,0,0,0,1289,31,1,0,0,0,1290,1291,5,1,0,0,1291,1292, + 3,34,17,0,1292,1293,5,2,0,0,1293,33,1,0,0,0,1294,1299,3,36,18,0, + 1295,1296,5,3,0,0,1296,1298,3,36,18,0,1297,1295,1,0,0,0,1298,1301, + 1,0,0,0,1299,1297,1,0,0,0,1299,1300,1,0,0,0,1300,35,1,0,0,0,1301, + 1299,1,0,0,0,1302,1303,3,294,147,0,1303,1304,5,312,0,0,1304,1305, + 3,38,19,0,1305,37,1,0,0,0,1306,1309,5,70,0,0,1307,1309,3,136,68, + 0,1308,1306,1,0,0,0,1308,1307,1,0,0,0,1309,39,1,0,0,0,1310,1321, + 3,46,23,0,1311,1312,5,195,0,0,1312,1313,5,36,0,0,1313,1318,3,50, + 25,0,1314,1315,5,3,0,0,1315,1317,3,50,25,0,1316,1314,1,0,0,0,1317, + 1320,1,0,0,0,1318,1316,1,0,0,0,1318,1319,1,0,0,0,1319,1322,1,0,0, + 0,1320,1318,1,0,0,0,1321,1311,1,0,0,0,1321,1322,1,0,0,0,1322,1328, + 1,0,0,0,1323,1324,5,188,0,0,1324,1326,3,44,22,0,1325,1327,7,4,0, + 0,1326,1325,1,0,0,0,1326,1327,1,0,0,0,1327,1329,1,0,0,0,1328,1323, + 1,0,0,0,1328,1329,1,0,0,0,1329,1343,1,0,0,0,1330,1331,5,155,0,0, + 1331,1344,3,42,21,0,1332,1333,5,98,0,0,1333,1335,7,5,0,0,1334,1336, + 3,44,22,0,1335,1334,1,0,0,0,1335,1336,1,0,0,0,1336,1337,1,0,0,0, + 1337,1341,7,4,0,0,1338,1342,5,192,0,0,1339,1340,5,304,0,0,1340,1342, + 5,266,0,0,1341,1338,1,0,0,0,1341,1339,1,0,0,0,1342,1344,1,0,0,0, + 1343,1330,1,0,0,0,1343,1332,1,0,0,0,1343,1344,1,0,0,0,1344,41,1, + 0,0,0,1345,1348,5,22,0,0,1346,1348,3,44,22,0,1347,1345,1,0,0,0,1347, + 1346,1,0,0,0,1348,43,1,0,0,0,1349,1350,7,6,0,0,1350,45,1,0,0,0,1351, + 1352,6,23,-1,0,1352,1353,3,48,24,0,1353,1368,1,0,0,0,1354,1355,10, + 2,0,0,1355,1357,5,128,0,0,1356,1358,3,68,34,0,1357,1356,1,0,0,0, + 1357,1358,1,0,0,0,1358,1359,1,0,0,0,1359,1367,3,46,23,3,1360,1361, + 10,1,0,0,1361,1363,7,7,0,0,1362,1364,3,68,34,0,1363,1362,1,0,0,0, + 1363,1364,1,0,0,0,1364,1365,1,0,0,0,1365,1367,3,46,23,2,1366,1354, + 1,0,0,0,1366,1360,1,0,0,0,1367,1370,1,0,0,0,1368,1366,1,0,0,0,1368, + 1369,1,0,0,0,1369,47,1,0,0,0,1370,1368,1,0,0,0,1371,1388,3,52,26, + 0,1372,1373,5,260,0,0,1373,1388,3,256,128,0,1374,1375,5,296,0,0, + 1375,1380,3,136,68,0,1376,1377,5,3,0,0,1377,1379,3,136,68,0,1378, + 1376,1,0,0,0,1379,1382,1,0,0,0,1380,1378,1,0,0,0,1380,1381,1,0,0, + 0,1381,1388,1,0,0,0,1382,1380,1,0,0,0,1383,1384,5,1,0,0,1384,1385, + 3,40,20,0,1385,1386,5,2,0,0,1386,1388,1,0,0,0,1387,1371,1,0,0,0, + 1387,1372,1,0,0,0,1387,1374,1,0,0,0,1387,1383,1,0,0,0,1388,49,1, + 0,0,0,1389,1392,3,276,138,0,1390,1392,3,136,68,0,1391,1389,1,0,0, + 0,1391,1390,1,0,0,0,1392,1394,1,0,0,0,1393,1395,7,8,0,0,1394,1393, + 1,0,0,0,1394,1395,1,0,0,0,1395,1398,1,0,0,0,1396,1397,5,185,0,0, + 1397,1399,7,9,0,0,1398,1396,1,0,0,0,1398,1399,1,0,0,0,1399,51,1, + 0,0,0,1400,1402,5,248,0,0,1401,1403,3,68,34,0,1402,1401,1,0,0,0, + 1402,1403,1,0,0,0,1403,1404,1,0,0,0,1404,1409,3,70,35,0,1405,1406, + 5,3,0,0,1406,1408,3,70,35,0,1407,1405,1,0,0,0,1408,1411,1,0,0,0, + 1409,1407,1,0,0,0,1409,1410,1,0,0,0,1410,1421,1,0,0,0,1411,1409, + 1,0,0,0,1412,1413,5,105,0,0,1413,1418,3,72,36,0,1414,1415,5,3,0, + 0,1415,1417,3,72,36,0,1416,1414,1,0,0,0,1417,1420,1,0,0,0,1418,1416, + 1,0,0,0,1418,1419,1,0,0,0,1419,1422,1,0,0,0,1420,1418,1,0,0,0,1421, + 1412,1,0,0,0,1421,1422,1,0,0,0,1422,1425,1,0,0,0,1423,1424,5,301, + 0,0,1424,1426,3,138,69,0,1425,1423,1,0,0,0,1425,1426,1,0,0,0,1426, + 1430,1,0,0,0,1427,1428,5,114,0,0,1428,1429,5,36,0,0,1429,1431,3, + 54,27,0,1430,1427,1,0,0,0,1430,1431,1,0,0,0,1431,1434,1,0,0,0,1432, + 1433,5,117,0,0,1433,1435,3,138,69,0,1434,1432,1,0,0,0,1434,1435, + 1,0,0,0,1435,1445,1,0,0,0,1436,1437,5,303,0,0,1437,1442,3,62,31, + 0,1438,1439,5,3,0,0,1439,1441,3,62,31,0,1440,1438,1,0,0,0,1441,1444, + 1,0,0,0,1442,1440,1,0,0,0,1442,1443,1,0,0,0,1443,1446,1,0,0,0,1444, + 1442,1,0,0,0,1445,1436,1,0,0,0,1445,1446,1,0,0,0,1446,53,1,0,0,0, + 1447,1449,3,68,34,0,1448,1447,1,0,0,0,1448,1449,1,0,0,0,1449,1450, + 1,0,0,0,1450,1455,3,56,28,0,1451,1452,5,3,0,0,1452,1454,3,56,28, + 0,1453,1451,1,0,0,0,1454,1457,1,0,0,0,1455,1453,1,0,0,0,1455,1456, + 1,0,0,0,1456,55,1,0,0,0,1457,1455,1,0,0,0,1458,1499,3,58,29,0,1459, + 1460,5,238,0,0,1460,1469,5,1,0,0,1461,1466,3,58,29,0,1462,1463,5, + 3,0,0,1463,1465,3,58,29,0,1464,1462,1,0,0,0,1465,1468,1,0,0,0,1466, + 1464,1,0,0,0,1466,1467,1,0,0,0,1467,1470,1,0,0,0,1468,1466,1,0,0, + 0,1469,1461,1,0,0,0,1469,1470,1,0,0,0,1470,1471,1,0,0,0,1471,1499, + 5,2,0,0,1472,1473,5,55,0,0,1473,1482,5,1,0,0,1474,1479,3,58,29,0, + 1475,1476,5,3,0,0,1476,1478,3,58,29,0,1477,1475,1,0,0,0,1478,1481, + 1,0,0,0,1479,1477,1,0,0,0,1479,1480,1,0,0,0,1480,1483,1,0,0,0,1481, + 1479,1,0,0,0,1482,1474,1,0,0,0,1482,1483,1,0,0,0,1483,1484,1,0,0, + 0,1484,1499,5,2,0,0,1485,1486,5,115,0,0,1486,1487,5,252,0,0,1487, + 1488,5,1,0,0,1488,1493,3,58,29,0,1489,1490,5,3,0,0,1490,1492,3,58, + 29,0,1491,1489,1,0,0,0,1492,1495,1,0,0,0,1493,1491,1,0,0,0,1493, + 1494,1,0,0,0,1494,1496,1,0,0,0,1495,1493,1,0,0,0,1496,1497,5,2,0, + 0,1497,1499,1,0,0,0,1498,1458,1,0,0,0,1498,1459,1,0,0,0,1498,1472, + 1,0,0,0,1498,1485,1,0,0,0,1499,57,1,0,0,0,1500,1509,5,1,0,0,1501, + 1506,3,60,30,0,1502,1503,5,3,0,0,1503,1505,3,60,30,0,1504,1502,1, + 0,0,0,1505,1508,1,0,0,0,1506,1504,1,0,0,0,1506,1507,1,0,0,0,1507, + 1510,1,0,0,0,1508,1506,1,0,0,0,1509,1501,1,0,0,0,1509,1510,1,0,0, + 0,1510,1511,1,0,0,0,1511,1514,5,2,0,0,1512,1514,3,60,30,0,1513,1500, + 1,0,0,0,1513,1512,1,0,0,0,1514,59,1,0,0,0,1515,1518,3,276,138,0, + 1516,1518,3,136,68,0,1517,1515,1,0,0,0,1517,1516,1,0,0,0,1518,61, + 1,0,0,0,1519,1520,3,294,147,0,1520,1521,5,28,0,0,1521,1522,5,1,0, + 0,1522,1523,3,64,32,0,1523,1524,5,2,0,0,1524,63,1,0,0,0,1525,1527, + 3,294,147,0,1526,1525,1,0,0,0,1526,1527,1,0,0,0,1527,1538,1,0,0, + 0,1528,1529,5,201,0,0,1529,1530,5,36,0,0,1530,1535,3,136,68,0,1531, + 1532,5,3,0,0,1532,1534,3,136,68,0,1533,1531,1,0,0,0,1534,1537,1, + 0,0,0,1535,1533,1,0,0,0,1535,1536,1,0,0,0,1536,1539,1,0,0,0,1537, + 1535,1,0,0,0,1538,1528,1,0,0,0,1538,1539,1,0,0,0,1539,1550,1,0,0, + 0,1540,1541,5,195,0,0,1541,1542,5,36,0,0,1542,1547,3,50,25,0,1543, + 1544,5,3,0,0,1544,1546,3,50,25,0,1545,1543,1,0,0,0,1546,1549,1,0, + 0,0,1547,1545,1,0,0,0,1547,1548,1,0,0,0,1548,1551,1,0,0,0,1549,1547, + 1,0,0,0,1550,1540,1,0,0,0,1550,1551,1,0,0,0,1551,1553,1,0,0,0,1552, + 1554,3,198,99,0,1553,1552,1,0,0,0,1553,1554,1,0,0,0,1554,65,1,0, + 0,0,1555,1557,3,294,147,0,1556,1558,3,108,54,0,1557,1556,1,0,0,0, + 1557,1558,1,0,0,0,1558,1559,1,0,0,0,1559,1560,5,28,0,0,1560,1561, + 5,1,0,0,1561,1562,3,22,11,0,1562,1563,5,2,0,0,1563,67,1,0,0,0,1564, + 1565,7,10,0,0,1565,69,1,0,0,0,1566,1569,3,276,138,0,1567,1569,3, + 136,68,0,1568,1566,1,0,0,0,1568,1567,1,0,0,0,1569,1574,1,0,0,0,1570, + 1572,5,28,0,0,1571,1570,1,0,0,0,1571,1572,1,0,0,0,1572,1573,1,0, + 0,0,1573,1575,3,294,147,0,1574,1571,1,0,0,0,1574,1575,1,0,0,0,1575, + 1585,1,0,0,0,1576,1577,3,144,72,0,1577,1578,5,4,0,0,1578,1581,5, + 320,0,0,1579,1580,5,28,0,0,1580,1582,3,108,54,0,1581,1579,1,0,0, + 0,1581,1582,1,0,0,0,1582,1585,1,0,0,0,1583,1585,5,320,0,0,1584,1568, + 1,0,0,0,1584,1576,1,0,0,0,1584,1583,1,0,0,0,1585,71,1,0,0,0,1586, + 1587,6,36,-1,0,1587,1588,3,78,39,0,1588,1607,1,0,0,0,1589,1603,10, + 2,0,0,1590,1591,5,54,0,0,1591,1592,5,136,0,0,1592,1604,3,78,39,0, + 1593,1594,3,74,37,0,1594,1595,5,136,0,0,1595,1596,3,72,36,0,1596, + 1597,3,76,38,0,1597,1604,1,0,0,0,1598,1599,5,172,0,0,1599,1600,3, + 74,37,0,1600,1601,5,136,0,0,1601,1602,3,78,39,0,1602,1604,1,0,0, + 0,1603,1590,1,0,0,0,1603,1593,1,0,0,0,1603,1598,1,0,0,0,1604,1606, + 1,0,0,0,1605,1589,1,0,0,0,1606,1609,1,0,0,0,1607,1605,1,0,0,0,1607, + 1608,1,0,0,0,1608,73,1,0,0,0,1609,1607,1,0,0,0,1610,1612,5,125,0, + 0,1611,1610,1,0,0,0,1611,1612,1,0,0,0,1612,1626,1,0,0,0,1613,1615, + 5,152,0,0,1614,1616,5,197,0,0,1615,1614,1,0,0,0,1615,1616,1,0,0, + 0,1616,1626,1,0,0,0,1617,1619,5,234,0,0,1618,1620,5,197,0,0,1619, + 1618,1,0,0,0,1619,1620,1,0,0,0,1620,1626,1,0,0,0,1621,1623,5,106, + 0,0,1622,1624,5,197,0,0,1623,1622,1,0,0,0,1623,1624,1,0,0,0,1624, + 1626,1,0,0,0,1625,1611,1,0,0,0,1625,1613,1,0,0,0,1625,1617,1,0,0, + 0,1625,1621,1,0,0,0,1626,75,1,0,0,0,1627,1628,5,190,0,0,1628,1642, + 3,138,69,0,1629,1630,5,290,0,0,1630,1631,5,1,0,0,1631,1636,3,294, + 147,0,1632,1633,5,3,0,0,1633,1635,3,294,147,0,1634,1632,1,0,0,0, + 1635,1638,1,0,0,0,1636,1634,1,0,0,0,1636,1637,1,0,0,0,1637,1639, + 1,0,0,0,1638,1636,1,0,0,0,1639,1640,5,2,0,0,1640,1642,1,0,0,0,1641, + 1627,1,0,0,0,1641,1629,1,0,0,0,1642,77,1,0,0,0,1643,1650,3,88,44, + 0,1644,1645,5,262,0,0,1645,1646,3,80,40,0,1646,1647,5,1,0,0,1647, + 1648,3,136,68,0,1648,1649,5,2,0,0,1649,1651,1,0,0,0,1650,1644,1, + 0,0,0,1650,1651,1,0,0,0,1651,79,1,0,0,0,1652,1653,7,11,0,0,1653, + 81,1,0,0,0,1654,1655,7,12,0,0,1655,83,1,0,0,0,1656,1663,5,89,0,0, + 1657,1659,5,274,0,0,1658,1660,3,168,84,0,1659,1658,1,0,0,0,1659, + 1660,1,0,0,0,1660,1661,1,0,0,0,1661,1663,3,86,43,0,1662,1656,1,0, + 0,0,1662,1657,1,0,0,0,1663,85,1,0,0,0,1664,1665,5,304,0,0,1665,1669, + 5,51,0,0,1666,1667,5,306,0,0,1667,1669,5,51,0,0,1668,1664,1,0,0, + 0,1668,1666,1,0,0,0,1669,87,1,0,0,0,1670,1753,3,102,51,0,1671,1672, + 5,166,0,0,1672,1683,5,1,0,0,1673,1674,5,201,0,0,1674,1675,5,36,0, + 0,1675,1680,3,136,68,0,1676,1677,5,3,0,0,1677,1679,3,136,68,0,1678, + 1676,1,0,0,0,1679,1682,1,0,0,0,1680,1678,1,0,0,0,1680,1681,1,0,0, + 0,1681,1684,1,0,0,0,1682,1680,1,0,0,0,1683,1673,1,0,0,0,1683,1684, + 1,0,0,0,1684,1695,1,0,0,0,1685,1686,5,195,0,0,1686,1687,5,36,0,0, + 1687,1692,3,50,25,0,1688,1689,5,3,0,0,1689,1691,3,50,25,0,1690,1688, + 1,0,0,0,1691,1694,1,0,0,0,1692,1690,1,0,0,0,1692,1693,1,0,0,0,1693, + 1696,1,0,0,0,1694,1692,1,0,0,0,1695,1685,1,0,0,0,1695,1696,1,0,0, + 0,1696,1706,1,0,0,0,1697,1698,5,168,0,0,1698,1703,3,90,45,0,1699, + 1700,5,3,0,0,1700,1702,3,90,45,0,1701,1699,1,0,0,0,1702,1705,1,0, + 0,0,1703,1701,1,0,0,0,1703,1704,1,0,0,0,1704,1707,1,0,0,0,1705,1703, + 1,0,0,0,1706,1697,1,0,0,0,1706,1707,1,0,0,0,1707,1709,1,0,0,0,1708, + 1710,3,92,46,0,1709,1708,1,0,0,0,1709,1710,1,0,0,0,1710,1714,1,0, + 0,0,1711,1712,5,21,0,0,1712,1713,5,163,0,0,1713,1715,3,96,48,0,1714, + 1711,1,0,0,0,1714,1715,1,0,0,0,1715,1717,1,0,0,0,1716,1718,7,13, + 0,0,1717,1716,1,0,0,0,1717,1718,1,0,0,0,1718,1719,1,0,0,0,1719,1720, + 5,206,0,0,1720,1721,5,1,0,0,1721,1722,3,204,102,0,1722,1732,5,2, + 0,0,1723,1724,5,257,0,0,1724,1729,3,98,49,0,1725,1726,5,3,0,0,1726, + 1728,3,98,49,0,1727,1725,1,0,0,0,1728,1731,1,0,0,0,1729,1727,1,0, + 0,0,1729,1730,1,0,0,0,1730,1733,1,0,0,0,1731,1729,1,0,0,0,1732,1723, + 1,0,0,0,1732,1733,1,0,0,0,1733,1734,1,0,0,0,1734,1735,5,71,0,0,1735, + 1740,3,100,50,0,1736,1737,5,3,0,0,1737,1739,3,100,50,0,1738,1736, + 1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741,1,0,0,0,1741, + 1743,1,0,0,0,1742,1740,1,0,0,0,1743,1751,5,2,0,0,1744,1746,5,28, + 0,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0,0,1747,1749, + 3,294,147,0,1748,1750,3,108,54,0,1749,1748,1,0,0,0,1749,1750,1,0, + 0,0,1750,1752,1,0,0,0,1751,1745,1,0,0,0,1751,1752,1,0,0,0,1752,1754, + 1,0,0,0,1753,1671,1,0,0,0,1753,1754,1,0,0,0,1754,89,1,0,0,0,1755, + 1756,3,136,68,0,1756,1757,5,28,0,0,1757,1758,3,294,147,0,1758,91, + 1,0,0,0,1759,1760,5,191,0,0,1760,1761,5,239,0,0,1761,1762,5,207, + 0,0,1762,1771,5,163,0,0,1763,1764,5,22,0,0,1764,1765,5,240,0,0,1765, + 1766,5,207,0,0,1766,1768,5,163,0,0,1767,1769,3,94,47,0,1768,1767, + 1,0,0,0,1768,1769,1,0,0,0,1769,1771,1,0,0,0,1770,1759,1,0,0,0,1770, + 1763,1,0,0,0,1771,93,1,0,0,0,1772,1773,5,253,0,0,1773,1774,5,85, + 0,0,1774,1782,5,165,0,0,1775,1776,5,189,0,0,1776,1777,5,85,0,0,1777, + 1782,5,165,0,0,1778,1779,5,304,0,0,1779,1780,5,284,0,0,1780,1782, + 5,240,0,0,1781,1772,1,0,0,0,1781,1775,1,0,0,0,1781,1778,1,0,0,0, + 1782,95,1,0,0,0,1783,1784,5,5,0,0,1784,1785,5,269,0,0,1785,1786, + 5,174,0,0,1786,1803,5,239,0,0,1787,1788,5,5,0,0,1788,1789,5,204, + 0,0,1789,1790,5,148,0,0,1790,1803,5,239,0,0,1791,1792,5,5,0,0,1792, + 1793,5,269,0,0,1793,1794,5,101,0,0,1794,1803,3,294,147,0,1795,1796, + 5,5,0,0,1796,1797,5,269,0,0,1797,1798,5,148,0,0,1798,1803,3,294, + 147,0,1799,1800,5,5,0,0,1800,1801,5,269,0,0,1801,1803,3,294,147, + 0,1802,1783,1,0,0,0,1802,1787,1,0,0,0,1802,1791,1,0,0,0,1802,1795, + 1,0,0,0,1802,1799,1,0,0,0,1803,97,1,0,0,0,1804,1805,3,294,147,0, + 1805,1806,5,312,0,0,1806,1807,5,1,0,0,1807,1812,3,294,147,0,1808, + 1809,5,3,0,0,1809,1811,3,294,147,0,1810,1808,1,0,0,0,1811,1814,1, + 0,0,0,1812,1810,1,0,0,0,1812,1813,1,0,0,0,1813,1815,1,0,0,0,1814, + 1812,1,0,0,0,1815,1816,5,2,0,0,1816,99,1,0,0,0,1817,1818,3,294,147, + 0,1818,1819,5,28,0,0,1819,1820,3,136,68,0,1820,101,1,0,0,0,1821, + 1829,3,110,55,0,1822,1824,5,28,0,0,1823,1822,1,0,0,0,1823,1824,1, + 0,0,0,1824,1825,1,0,0,0,1825,1827,3,294,147,0,1826,1828,3,108,54, + 0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828,1830,1,0,0,0,1829,1823, + 1,0,0,0,1829,1830,1,0,0,0,1830,103,1,0,0,0,1831,1832,5,1,0,0,1832, + 1837,3,278,139,0,1833,1834,5,3,0,0,1834,1836,3,278,139,0,1835,1833, + 1,0,0,0,1836,1839,1,0,0,0,1837,1835,1,0,0,0,1837,1838,1,0,0,0,1838, + 1840,1,0,0,0,1839,1837,1,0,0,0,1840,1841,5,2,0,0,1841,105,1,0,0, + 0,1842,1843,5,1,0,0,1843,1848,3,276,138,0,1844,1845,5,3,0,0,1845, + 1847,3,276,138,0,1846,1844,1,0,0,0,1847,1850,1,0,0,0,1848,1846,1, + 0,0,0,1848,1849,1,0,0,0,1849,1851,1,0,0,0,1850,1848,1,0,0,0,1851, + 1852,5,2,0,0,1852,107,1,0,0,0,1853,1854,5,1,0,0,1854,1859,3,294, + 147,0,1855,1856,5,3,0,0,1856,1858,3,294,147,0,1857,1855,1,0,0,0, + 1858,1861,1,0,0,0,1859,1857,1,0,0,0,1859,1860,1,0,0,0,1860,1862, + 1,0,0,0,1861,1859,1,0,0,0,1862,1863,5,2,0,0,1863,109,1,0,0,0,1864, + 1866,3,254,127,0,1865,1867,3,282,141,0,1866,1865,1,0,0,0,1866,1867, + 1,0,0,0,1867,1936,1,0,0,0,1868,1869,5,1,0,0,1869,1870,3,22,11,0, + 1870,1871,5,2,0,0,1871,1936,1,0,0,0,1872,1873,5,285,0,0,1873,1874, + 5,1,0,0,1874,1879,3,136,68,0,1875,1876,5,3,0,0,1876,1878,3,136,68, + 0,1877,1875,1,0,0,0,1878,1881,1,0,0,0,1879,1877,1,0,0,0,1879,1880, + 1,0,0,0,1880,1882,1,0,0,0,1881,1879,1,0,0,0,1882,1885,5,2,0,0,1883, + 1884,5,304,0,0,1884,1886,5,196,0,0,1885,1883,1,0,0,0,1885,1886,1, + 0,0,0,1886,1936,1,0,0,0,1887,1888,5,149,0,0,1888,1889,5,1,0,0,1889, + 1890,3,22,11,0,1890,1891,5,2,0,0,1891,1936,1,0,0,0,1892,1893,5,260, + 0,0,1893,1894,5,1,0,0,1894,1895,3,122,61,0,1895,1896,5,2,0,0,1896, + 1936,1,0,0,0,1897,1898,5,1,0,0,1898,1899,3,72,36,0,1899,1900,5,2, + 0,0,1900,1936,1,0,0,0,1901,1902,5,142,0,0,1902,1903,5,1,0,0,1903, + 1904,3,146,73,0,1904,1905,5,45,0,0,1905,1906,5,1,0,0,1906,1911,3, + 112,56,0,1907,1908,5,3,0,0,1908,1910,3,112,56,0,1909,1907,1,0,0, + 0,1910,1913,1,0,0,0,1911,1909,1,0,0,0,1911,1912,1,0,0,0,1912,1914, + 1,0,0,0,1913,1911,1,0,0,0,1914,1926,5,2,0,0,1915,1916,5,210,0,0, + 1916,1917,5,1,0,0,1917,1918,3,114,57,0,1918,1919,5,2,0,0,1919,1927, + 1,0,0,0,1920,1921,5,210,0,0,1921,1922,5,70,0,0,1922,1923,5,1,0,0, + 1923,1924,3,120,60,0,1924,1925,5,2,0,0,1925,1927,1,0,0,0,1926,1915, + 1,0,0,0,1926,1920,1,0,0,0,1926,1927,1,0,0,0,1927,1931,1,0,0,0,1928, + 1929,7,14,0,0,1929,1930,5,190,0,0,1930,1932,5,89,0,0,1931,1928,1, + 0,0,0,1931,1932,1,0,0,0,1932,1933,1,0,0,0,1933,1934,5,2,0,0,1934, + 1936,1,0,0,0,1935,1864,1,0,0,0,1935,1868,1,0,0,0,1935,1872,1,0,0, + 0,1935,1887,1,0,0,0,1935,1892,1,0,0,0,1935,1897,1,0,0,0,1935,1901, + 1,0,0,0,1936,111,1,0,0,0,1937,1938,3,294,147,0,1938,1939,5,103,0, + 0,1939,1940,5,196,0,0,1940,2015,1,0,0,0,1941,1942,3,294,147,0,1942, + 1945,3,184,92,0,1943,1944,5,205,0,0,1944,1946,3,168,84,0,1945,1943, + 1,0,0,0,1945,1946,1,0,0,0,1946,1951,1,0,0,0,1947,1948,3,156,78,0, + 1948,1949,5,190,0,0,1949,1950,5,85,0,0,1950,1952,1,0,0,0,1951,1947, + 1,0,0,0,1951,1952,1,0,0,0,1952,1957,1,0,0,0,1953,1954,3,156,78,0, + 1954,1955,5,190,0,0,1955,1956,5,89,0,0,1956,1958,1,0,0,0,1957,1953, + 1,0,0,0,1957,1958,1,0,0,0,1958,2015,1,0,0,0,1959,1960,3,294,147, + 0,1960,1961,3,184,92,0,1961,1962,5,104,0,0,1962,1965,3,150,75,0, + 1963,1964,5,205,0,0,1964,1966,3,168,84,0,1965,1963,1,0,0,0,1965, + 1966,1,0,0,0,1966,1970,1,0,0,0,1967,1968,3,158,79,0,1968,1969,5, + 308,0,0,1969,1971,1,0,0,0,1970,1967,1,0,0,0,1970,1971,1,0,0,0,1971, + 1979,1,0,0,0,1972,1973,7,15,0,0,1973,1977,5,218,0,0,1974,1975,5, + 190,0,0,1975,1976,5,242,0,0,1976,1978,5,264,0,0,1977,1974,1,0,0, + 0,1977,1978,1,0,0,0,1978,1980,1,0,0,0,1979,1972,1,0,0,0,1979,1980, + 1,0,0,0,1980,1985,1,0,0,0,1981,1982,3,160,80,0,1982,1983,5,190,0, + 0,1983,1984,5,85,0,0,1984,1986,1,0,0,0,1985,1981,1,0,0,0,1985,1986, + 1,0,0,0,1986,1991,1,0,0,0,1987,1988,3,160,80,0,1988,1989,5,190,0, + 0,1989,1990,5,89,0,0,1990,1992,1,0,0,0,1991,1987,1,0,0,0,1991,1992, + 1,0,0,0,1992,2015,1,0,0,0,1993,1995,5,173,0,0,1994,1996,5,205,0, + 0,1995,1994,1,0,0,0,1995,1996,1,0,0,0,1996,1997,1,0,0,0,1997,2000, + 3,168,84,0,1998,1999,5,28,0,0,1999,2001,3,294,147,0,2000,1998,1, + 0,0,0,2000,2001,1,0,0,0,2001,2002,1,0,0,0,2002,2003,5,45,0,0,2003, + 2004,5,1,0,0,2004,2009,3,112,56,0,2005,2006,5,3,0,0,2006,2008,3, + 112,56,0,2007,2005,1,0,0,0,2008,2011,1,0,0,0,2009,2007,1,0,0,0,2009, + 2010,1,0,0,0,2010,2012,1,0,0,0,2011,2009,1,0,0,0,2012,2013,5,2,0, + 0,2013,2015,1,0,0,0,2014,1937,1,0,0,0,2014,1941,1,0,0,0,2014,1959, + 1,0,0,0,2014,1993,1,0,0,0,2015,113,1,0,0,0,2016,2042,3,116,58,0, + 2017,2018,3,116,58,0,2018,2019,7,16,0,0,2019,2020,3,118,59,0,2020, + 2042,1,0,0,0,2021,2022,3,118,59,0,2022,2023,5,281,0,0,2023,2028, + 3,118,59,0,2024,2025,5,281,0,0,2025,2027,3,118,59,0,2026,2024,1, + 0,0,0,2027,2030,1,0,0,0,2028,2026,1,0,0,0,2028,2029,1,0,0,0,2029, + 2042,1,0,0,0,2030,2028,1,0,0,0,2031,2032,3,118,59,0,2032,2033,5, + 54,0,0,2033,2038,3,118,59,0,2034,2035,5,54,0,0,2035,2037,3,118,59, + 0,2036,2034,1,0,0,0,2037,2040,1,0,0,0,2038,2036,1,0,0,0,2038,2039, + 1,0,0,0,2039,2042,1,0,0,0,2040,2038,1,0,0,0,2041,2016,1,0,0,0,2041, + 2017,1,0,0,0,2041,2021,1,0,0,0,2041,2031,1,0,0,0,2042,115,1,0,0, + 0,2043,2044,3,294,147,0,2044,117,1,0,0,0,2045,2051,3,116,58,0,2046, + 2047,5,1,0,0,2047,2048,3,114,57,0,2048,2049,5,2,0,0,2049,2051,1, + 0,0,0,2050,2045,1,0,0,0,2050,2046,1,0,0,0,2051,119,1,0,0,0,2052, + 2055,7,16,0,0,2053,2054,5,3,0,0,2054,2056,7,17,0,0,2055,2053,1,0, + 0,0,2055,2056,1,0,0,0,2056,2063,1,0,0,0,2057,2060,7,17,0,0,2058, + 2059,5,3,0,0,2059,2061,7,16,0,0,2060,2058,1,0,0,0,2060,2061,1,0, + 0,0,2061,2063,1,0,0,0,2062,2052,1,0,0,0,2062,2057,1,0,0,0,2063,121, + 1,0,0,0,2064,2065,3,272,136,0,2065,2074,5,1,0,0,2066,2071,3,124, + 62,0,2067,2068,5,3,0,0,2068,2070,3,124,62,0,2069,2067,1,0,0,0,2070, + 2073,1,0,0,0,2071,2069,1,0,0,0,2071,2072,1,0,0,0,2072,2075,1,0,0, + 0,2073,2071,1,0,0,0,2074,2066,1,0,0,0,2074,2075,1,0,0,0,2075,2085, + 1,0,0,0,2076,2077,5,52,0,0,2077,2082,3,134,67,0,2078,2079,5,3,0, + 0,2079,2081,3,134,67,0,2080,2078,1,0,0,0,2081,2084,1,0,0,0,2082, + 2080,1,0,0,0,2082,2083,1,0,0,0,2083,2086,1,0,0,0,2084,2082,1,0,0, + 0,2085,2076,1,0,0,0,2085,2086,1,0,0,0,2086,2087,1,0,0,0,2087,2088, + 5,2,0,0,2088,123,1,0,0,0,2089,2090,3,294,147,0,2090,2091,5,6,0,0, + 2091,2093,1,0,0,0,2092,2089,1,0,0,0,2092,2093,1,0,0,0,2093,2097, + 1,0,0,0,2094,2098,3,126,63,0,2095,2098,3,130,65,0,2096,2098,3,136, + 68,0,2097,2094,1,0,0,0,2097,2095,1,0,0,0,2097,2096,1,0,0,0,2098, + 125,1,0,0,0,2099,2117,3,128,64,0,2100,2101,5,201,0,0,2101,2115,5, + 36,0,0,2102,2111,5,1,0,0,2103,2108,3,136,68,0,2104,2105,5,3,0,0, + 2105,2107,3,136,68,0,2106,2104,1,0,0,0,2107,2110,1,0,0,0,2108,2106, + 1,0,0,0,2108,2109,1,0,0,0,2109,2112,1,0,0,0,2110,2108,1,0,0,0,2111, + 2103,1,0,0,0,2111,2112,1,0,0,0,2112,2113,1,0,0,0,2113,2116,5,2,0, + 0,2114,2116,3,136,68,0,2115,2102,1,0,0,0,2115,2114,1,0,0,0,2116, + 2118,1,0,0,0,2117,2100,1,0,0,0,2117,2118,1,0,0,0,2118,2125,1,0,0, + 0,2119,2120,5,217,0,0,2120,2121,5,300,0,0,2121,2126,5,85,0,0,2122, + 2123,5,144,0,0,2123,2124,5,300,0,0,2124,2126,5,85,0,0,2125,2119, + 1,0,0,0,2125,2122,1,0,0,0,2125,2126,1,0,0,0,2126,2143,1,0,0,0,2127, + 2128,5,195,0,0,2128,2141,5,36,0,0,2129,2130,5,1,0,0,2130,2135,3, + 50,25,0,2131,2132,5,3,0,0,2132,2134,3,50,25,0,2133,2131,1,0,0,0, + 2134,2137,1,0,0,0,2135,2133,1,0,0,0,2135,2136,1,0,0,0,2136,2138, + 1,0,0,0,2137,2135,1,0,0,0,2138,2139,5,2,0,0,2139,2142,1,0,0,0,2140, + 2142,3,50,25,0,2141,2129,1,0,0,0,2141,2140,1,0,0,0,2142,2144,1,0, + 0,0,2143,2127,1,0,0,0,2143,2144,1,0,0,0,2144,127,1,0,0,0,2145,2146, + 5,260,0,0,2146,2147,5,1,0,0,2147,2148,3,256,128,0,2148,2156,5,2, + 0,0,2149,2151,5,28,0,0,2150,2149,1,0,0,0,2150,2151,1,0,0,0,2151, + 2152,1,0,0,0,2152,2154,3,294,147,0,2153,2155,3,108,54,0,2154,2153, + 1,0,0,0,2154,2155,1,0,0,0,2155,2157,1,0,0,0,2156,2150,1,0,0,0,2156, + 2157,1,0,0,0,2157,2172,1,0,0,0,2158,2159,5,260,0,0,2159,2160,5,1, + 0,0,2160,2161,3,22,11,0,2161,2169,5,2,0,0,2162,2164,5,28,0,0,2163, + 2162,1,0,0,0,2163,2164,1,0,0,0,2164,2165,1,0,0,0,2165,2167,3,294, + 147,0,2166,2168,3,108,54,0,2167,2166,1,0,0,0,2167,2168,1,0,0,0,2168, + 2170,1,0,0,0,2169,2163,1,0,0,0,2169,2170,1,0,0,0,2170,2172,1,0,0, + 0,2171,2145,1,0,0,0,2171,2158,1,0,0,0,2172,129,1,0,0,0,2173,2174, + 5,77,0,0,2174,2175,5,1,0,0,2175,2180,3,132,66,0,2176,2177,5,3,0, + 0,2177,2179,3,132,66,0,2178,2176,1,0,0,0,2179,2182,1,0,0,0,2180, + 2178,1,0,0,0,2180,2181,1,0,0,0,2181,2183,1,0,0,0,2182,2180,1,0,0, + 0,2183,2184,5,2,0,0,2184,2192,1,0,0,0,2185,2186,5,41,0,0,2186,2187, + 5,1,0,0,2187,2188,5,183,0,0,2188,2189,5,28,0,0,2189,2190,5,77,0, + 0,2190,2192,5,2,0,0,2191,2173,1,0,0,0,2191,2185,1,0,0,0,2192,131, + 1,0,0,0,2193,2195,3,294,147,0,2194,2196,3,184,92,0,2195,2194,1,0, + 0,0,2195,2196,1,0,0,0,2196,133,1,0,0,0,2197,2198,5,1,0,0,2198,2199, + 3,280,140,0,2199,2200,5,3,0,0,2200,2205,3,280,140,0,2201,2202,5, + 3,0,0,2202,2204,3,280,140,0,2203,2201,1,0,0,0,2204,2207,1,0,0,0, + 2205,2203,1,0,0,0,2205,2206,1,0,0,0,2206,2208,1,0,0,0,2207,2205, + 1,0,0,0,2208,2209,5,2,0,0,2209,135,1,0,0,0,2210,2211,3,138,69,0, + 2211,137,1,0,0,0,2212,2213,6,69,-1,0,2213,2215,3,142,71,0,2214,2216, + 3,140,70,0,2215,2214,1,0,0,0,2215,2216,1,0,0,0,2216,2220,1,0,0,0, + 2217,2218,5,182,0,0,2218,2220,3,138,69,3,2219,2212,1,0,0,0,2219, + 2217,1,0,0,0,2220,2229,1,0,0,0,2221,2222,10,2,0,0,2222,2223,5,25, + 0,0,2223,2228,3,138,69,3,2224,2225,10,1,0,0,2225,2226,5,194,0,0, + 2226,2228,3,138,69,2,2227,2221,1,0,0,0,2227,2224,1,0,0,0,2228,2231, + 1,0,0,0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,139,1,0,0,0,2231, + 2229,1,0,0,0,2232,2233,3,172,86,0,2233,2234,3,142,71,0,2234,2294, + 1,0,0,0,2235,2236,3,172,86,0,2236,2237,3,174,87,0,2237,2238,5,1, + 0,0,2238,2239,3,22,11,0,2239,2240,5,2,0,0,2240,2294,1,0,0,0,2241, + 2243,5,182,0,0,2242,2241,1,0,0,0,2242,2243,1,0,0,0,2243,2244,1,0, + 0,0,2244,2245,5,34,0,0,2245,2246,3,142,71,0,2246,2247,5,25,0,0,2247, + 2248,3,142,71,0,2248,2294,1,0,0,0,2249,2251,5,182,0,0,2250,2249, + 1,0,0,0,2250,2251,1,0,0,0,2251,2252,1,0,0,0,2252,2253,5,122,0,0, + 2253,2254,5,1,0,0,2254,2259,3,136,68,0,2255,2256,5,3,0,0,2256,2258, + 3,136,68,0,2257,2255,1,0,0,0,2258,2261,1,0,0,0,2259,2257,1,0,0,0, + 2259,2260,1,0,0,0,2260,2262,1,0,0,0,2261,2259,1,0,0,0,2262,2263, + 5,2,0,0,2263,2294,1,0,0,0,2264,2266,5,182,0,0,2265,2264,1,0,0,0, + 2265,2266,1,0,0,0,2266,2267,1,0,0,0,2267,2268,5,122,0,0,2268,2269, + 5,1,0,0,2269,2270,3,22,11,0,2270,2271,5,2,0,0,2271,2294,1,0,0,0, + 2272,2274,5,182,0,0,2273,2272,1,0,0,0,2273,2274,1,0,0,0,2274,2275, + 1,0,0,0,2275,2276,5,154,0,0,2276,2279,3,142,71,0,2277,2278,5,90, + 0,0,2278,2280,3,142,71,0,2279,2277,1,0,0,0,2279,2280,1,0,0,0,2280, + 2294,1,0,0,0,2281,2283,5,133,0,0,2282,2284,5,182,0,0,2283,2282,1, + 0,0,0,2283,2284,1,0,0,0,2284,2285,1,0,0,0,2285,2294,5,183,0,0,2286, + 2288,5,133,0,0,2287,2289,5,182,0,0,2288,2287,1,0,0,0,2288,2289,1, + 0,0,0,2289,2290,1,0,0,0,2290,2291,5,79,0,0,2291,2292,5,105,0,0,2292, + 2294,3,142,71,0,2293,2232,1,0,0,0,2293,2235,1,0,0,0,2293,2242,1, + 0,0,0,2293,2250,1,0,0,0,2293,2265,1,0,0,0,2293,2273,1,0,0,0,2293, + 2281,1,0,0,0,2293,2286,1,0,0,0,2294,141,1,0,0,0,2295,2296,6,71,-1, + 0,2296,2300,3,144,72,0,2297,2298,7,18,0,0,2298,2300,3,142,71,4,2299, + 2295,1,0,0,0,2299,2297,1,0,0,0,2300,2315,1,0,0,0,2301,2302,10,3, + 0,0,2302,2303,7,19,0,0,2303,2314,3,142,71,4,2304,2305,10,2,0,0,2305, + 2306,7,18,0,0,2306,2314,3,142,71,3,2307,2308,10,1,0,0,2308,2309, + 5,323,0,0,2309,2314,3,142,71,2,2310,2311,10,5,0,0,2311,2312,5,30, + 0,0,2312,2314,3,170,85,0,2313,2301,1,0,0,0,2313,2304,1,0,0,0,2313, + 2307,1,0,0,0,2313,2310,1,0,0,0,2314,2317,1,0,0,0,2315,2313,1,0,0, + 0,2315,2316,1,0,0,0,2316,143,1,0,0,0,2317,2315,1,0,0,0,2318,2319, + 6,72,-1,0,2319,2772,5,183,0,0,2320,2772,3,178,89,0,2321,2322,3,294, + 147,0,2322,2323,3,168,84,0,2323,2772,1,0,0,0,2324,2325,5,82,0,0, + 2325,2326,5,213,0,0,2326,2772,3,168,84,0,2327,2772,3,296,148,0,2328, + 2772,3,176,88,0,2329,2772,3,168,84,0,2330,2772,5,328,0,0,2331,2772, + 5,324,0,0,2332,2333,5,211,0,0,2333,2334,5,1,0,0,2334,2335,3,142, + 71,0,2335,2336,5,122,0,0,2336,2337,3,142,71,0,2337,2338,5,2,0,0, + 2338,2772,1,0,0,0,2339,2340,5,1,0,0,2340,2343,3,136,68,0,2341,2342, + 5,3,0,0,2342,2344,3,136,68,0,2343,2341,1,0,0,0,2344,2345,1,0,0,0, + 2345,2343,1,0,0,0,2345,2346,1,0,0,0,2346,2347,1,0,0,0,2347,2348, + 5,2,0,0,2348,2772,1,0,0,0,2349,2350,5,239,0,0,2350,2351,5,1,0,0, + 2351,2356,3,136,68,0,2352,2353,5,3,0,0,2353,2355,3,136,68,0,2354, + 2352,1,0,0,0,2355,2358,1,0,0,0,2356,2354,1,0,0,0,2356,2357,1,0,0, + 0,2357,2359,1,0,0,0,2358,2356,1,0,0,0,2359,2360,5,2,0,0,2360,2772, + 1,0,0,0,2361,2362,5,156,0,0,2362,2364,5,1,0,0,2363,2365,3,68,34, + 0,2364,2363,1,0,0,0,2364,2365,1,0,0,0,2365,2366,1,0,0,0,2366,2369, + 3,136,68,0,2367,2368,5,3,0,0,2368,2370,3,168,84,0,2369,2367,1,0, + 0,0,2369,2370,1,0,0,0,2370,2374,1,0,0,0,2371,2372,5,190,0,0,2372, + 2373,5,200,0,0,2373,2375,3,84,42,0,2374,2371,1,0,0,0,2374,2375,1, + 0,0,0,2375,2376,1,0,0,0,2376,2377,5,2,0,0,2377,2378,5,305,0,0,2378, + 2379,5,114,0,0,2379,2380,5,1,0,0,2380,2381,5,195,0,0,2381,2382,5, + 36,0,0,2382,2387,3,50,25,0,2383,2384,5,3,0,0,2384,2386,3,50,25,0, + 2385,2383,1,0,0,0,2386,2389,1,0,0,0,2387,2385,1,0,0,0,2387,2388, + 1,0,0,0,2388,2390,1,0,0,0,2389,2387,1,0,0,0,2390,2391,5,2,0,0,2391, + 2393,1,0,0,0,2392,2394,3,192,96,0,2393,2392,1,0,0,0,2393,2394,1, + 0,0,0,2394,2772,1,0,0,0,2395,2397,3,164,82,0,2396,2395,1,0,0,0,2396, + 2397,1,0,0,0,2397,2398,1,0,0,0,2398,2399,3,272,136,0,2399,2403,5, + 1,0,0,2400,2401,3,294,147,0,2401,2402,5,4,0,0,2402,2404,1,0,0,0, + 2403,2400,1,0,0,0,2403,2404,1,0,0,0,2404,2405,1,0,0,0,2405,2406, + 5,320,0,0,2406,2408,5,2,0,0,2407,2409,3,192,96,0,2408,2407,1,0,0, + 0,2408,2409,1,0,0,0,2409,2411,1,0,0,0,2410,2412,3,196,98,0,2411, + 2410,1,0,0,0,2411,2412,1,0,0,0,2412,2772,1,0,0,0,2413,2415,3,164, + 82,0,2414,2413,1,0,0,0,2414,2415,1,0,0,0,2415,2416,1,0,0,0,2416, + 2417,3,272,136,0,2417,2429,5,1,0,0,2418,2420,3,68,34,0,2419,2418, + 1,0,0,0,2419,2420,1,0,0,0,2420,2421,1,0,0,0,2421,2426,3,136,68,0, + 2422,2423,5,3,0,0,2423,2425,3,136,68,0,2424,2422,1,0,0,0,2425,2428, + 1,0,0,0,2426,2424,1,0,0,0,2426,2427,1,0,0,0,2427,2430,1,0,0,0,2428, + 2426,1,0,0,0,2429,2419,1,0,0,0,2429,2430,1,0,0,0,2430,2441,1,0,0, + 0,2431,2432,5,195,0,0,2432,2433,5,36,0,0,2433,2438,3,50,25,0,2434, + 2435,5,3,0,0,2435,2437,3,50,25,0,2436,2434,1,0,0,0,2437,2440,1,0, + 0,0,2438,2436,1,0,0,0,2438,2439,1,0,0,0,2439,2442,1,0,0,0,2440,2438, + 1,0,0,0,2441,2431,1,0,0,0,2441,2442,1,0,0,0,2442,2443,1,0,0,0,2443, + 2445,5,2,0,0,2444,2446,3,192,96,0,2445,2444,1,0,0,0,2445,2446,1, + 0,0,0,2446,2451,1,0,0,0,2447,2449,3,166,83,0,2448,2447,1,0,0,0,2448, + 2449,1,0,0,0,2449,2450,1,0,0,0,2450,2452,3,196,98,0,2451,2448,1, + 0,0,0,2451,2452,1,0,0,0,2452,2772,1,0,0,0,2453,2454,3,294,147,0, + 2454,2455,3,196,98,0,2455,2772,1,0,0,0,2456,2457,3,294,147,0,2457, + 2458,5,7,0,0,2458,2459,3,136,68,0,2459,2772,1,0,0,0,2460,2469,5, + 1,0,0,2461,2466,3,294,147,0,2462,2463,5,3,0,0,2463,2465,3,294,147, + 0,2464,2462,1,0,0,0,2465,2468,1,0,0,0,2466,2464,1,0,0,0,2466,2467, + 1,0,0,0,2467,2470,1,0,0,0,2468,2466,1,0,0,0,2469,2461,1,0,0,0,2469, + 2470,1,0,0,0,2470,2471,1,0,0,0,2471,2472,5,2,0,0,2472,2473,5,7,0, + 0,2473,2772,3,136,68,0,2474,2475,5,1,0,0,2475,2476,3,22,11,0,2476, + 2477,5,2,0,0,2477,2772,1,0,0,0,2478,2479,5,94,0,0,2479,2480,5,1, + 0,0,2480,2481,3,22,11,0,2481,2482,5,2,0,0,2482,2772,1,0,0,0,2483, + 2484,5,40,0,0,2484,2486,3,136,68,0,2485,2487,3,190,95,0,2486,2485, + 1,0,0,0,2487,2488,1,0,0,0,2488,2486,1,0,0,0,2488,2489,1,0,0,0,2489, + 2492,1,0,0,0,2490,2491,5,84,0,0,2491,2493,3,136,68,0,2492,2490,1, + 0,0,0,2492,2493,1,0,0,0,2493,2494,1,0,0,0,2494,2495,5,88,0,0,2495, + 2772,1,0,0,0,2496,2498,5,40,0,0,2497,2499,3,190,95,0,2498,2497,1, + 0,0,0,2499,2500,1,0,0,0,2500,2498,1,0,0,0,2500,2501,1,0,0,0,2501, + 2504,1,0,0,0,2502,2503,5,84,0,0,2503,2505,3,136,68,0,2504,2502,1, + 0,0,0,2504,2505,1,0,0,0,2505,2506,1,0,0,0,2506,2507,5,88,0,0,2507, + 2772,1,0,0,0,2508,2509,5,41,0,0,2509,2510,5,1,0,0,2510,2511,3,136, + 68,0,2511,2512,5,28,0,0,2512,2513,3,184,92,0,2513,2514,5,2,0,0,2514, + 2772,1,0,0,0,2515,2516,5,275,0,0,2516,2517,5,1,0,0,2517,2518,3,136, + 68,0,2518,2519,5,28,0,0,2519,2520,3,184,92,0,2520,2521,5,2,0,0,2521, + 2772,1,0,0,0,2522,2523,5,27,0,0,2523,2532,5,8,0,0,2524,2529,3,136, + 68,0,2525,2526,5,3,0,0,2526,2528,3,136,68,0,2527,2525,1,0,0,0,2528, + 2531,1,0,0,0,2529,2527,1,0,0,0,2529,2530,1,0,0,0,2530,2533,1,0,0, + 0,2531,2529,1,0,0,0,2532,2524,1,0,0,0,2532,2533,1,0,0,0,2533,2534, + 1,0,0,0,2534,2772,5,9,0,0,2535,2772,3,294,147,0,2536,2772,5,58,0, + 0,2537,2541,5,62,0,0,2538,2539,5,1,0,0,2539,2540,5,329,0,0,2540, + 2542,5,2,0,0,2541,2538,1,0,0,0,2541,2542,1,0,0,0,2542,2772,1,0,0, + 0,2543,2547,5,63,0,0,2544,2545,5,1,0,0,2545,2546,5,329,0,0,2546, + 2548,5,2,0,0,2547,2544,1,0,0,0,2547,2548,1,0,0,0,2548,2772,1,0,0, + 0,2549,2553,5,158,0,0,2550,2551,5,1,0,0,2551,2552,5,329,0,0,2552, + 2554,5,2,0,0,2553,2550,1,0,0,0,2553,2554,1,0,0,0,2554,2772,1,0,0, + 0,2555,2559,5,159,0,0,2556,2557,5,1,0,0,2557,2558,5,329,0,0,2558, + 2560,5,2,0,0,2559,2556,1,0,0,0,2559,2560,1,0,0,0,2560,2772,1,0,0, + 0,2561,2772,5,64,0,0,2562,2772,5,57,0,0,2563,2772,5,61,0,0,2564, + 2772,5,59,0,0,2565,2566,5,272,0,0,2566,2574,5,1,0,0,2567,2569,3, + 82,41,0,2568,2567,1,0,0,0,2568,2569,1,0,0,0,2569,2571,1,0,0,0,2570, + 2572,3,142,71,0,2571,2570,1,0,0,0,2571,2572,1,0,0,0,2572,2573,1, + 0,0,0,2573,2575,5,105,0,0,2574,2568,1,0,0,0,2574,2575,1,0,0,0,2575, + 2576,1,0,0,0,2576,2577,3,142,71,0,2577,2578,5,2,0,0,2578,2772,1, + 0,0,0,2579,2580,5,272,0,0,2580,2581,5,1,0,0,2581,2582,3,142,71,0, + 2582,2583,5,3,0,0,2583,2584,3,142,71,0,2584,2585,5,2,0,0,2585,2772, + 1,0,0,0,2586,2587,5,258,0,0,2587,2588,5,1,0,0,2588,2589,3,142,71, + 0,2589,2590,5,105,0,0,2590,2593,3,142,71,0,2591,2592,5,103,0,0,2592, + 2594,3,142,71,0,2593,2591,1,0,0,0,2593,2594,1,0,0,0,2594,2595,1, + 0,0,0,2595,2596,5,2,0,0,2596,2772,1,0,0,0,2597,2598,5,181,0,0,2598, + 2599,5,1,0,0,2599,2602,3,142,71,0,2600,2601,5,3,0,0,2601,2603,3, + 182,91,0,2602,2600,1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,0,0,2604, + 2605,5,2,0,0,2605,2772,1,0,0,0,2606,2607,5,96,0,0,2607,2608,5,1, + 0,0,2608,2609,3,294,147,0,2609,2610,5,105,0,0,2610,2611,3,142,71, + 0,2611,2612,5,2,0,0,2612,2772,1,0,0,0,2613,2614,5,1,0,0,2614,2615, + 3,136,68,0,2615,2616,5,2,0,0,2616,2772,1,0,0,0,2617,2618,5,115,0, + 0,2618,2627,5,1,0,0,2619,2624,3,280,140,0,2620,2621,5,3,0,0,2621, + 2623,3,280,140,0,2622,2620,1,0,0,0,2623,2626,1,0,0,0,2624,2622,1, + 0,0,0,2624,2625,1,0,0,0,2625,2628,1,0,0,0,2626,2624,1,0,0,0,2627, + 2619,1,0,0,0,2627,2628,1,0,0,0,2628,2629,1,0,0,0,2629,2772,5,2,0, + 0,2630,2631,5,139,0,0,2631,2632,5,1,0,0,2632,2637,3,146,73,0,2633, + 2634,3,154,77,0,2634,2635,5,190,0,0,2635,2636,5,89,0,0,2636,2638, + 1,0,0,0,2637,2633,1,0,0,0,2637,2638,1,0,0,0,2638,2639,1,0,0,0,2639, + 2640,5,2,0,0,2640,2772,1,0,0,0,2641,2642,5,143,0,0,2642,2643,5,1, + 0,0,2643,2646,3,146,73,0,2644,2645,5,231,0,0,2645,2647,3,184,92, + 0,2646,2644,1,0,0,0,2646,2647,1,0,0,0,2647,2652,1,0,0,0,2648,2649, + 3,156,78,0,2649,2650,5,190,0,0,2650,2651,5,85,0,0,2651,2653,1,0, + 0,0,2652,2648,1,0,0,0,2652,2653,1,0,0,0,2653,2658,1,0,0,0,2654,2655, + 3,156,78,0,2655,2656,5,190,0,0,2656,2657,5,89,0,0,2657,2659,1,0, + 0,0,2658,2654,1,0,0,0,2658,2659,1,0,0,0,2659,2660,1,0,0,0,2660,2661, + 5,2,0,0,2661,2772,1,0,0,0,2662,2663,5,141,0,0,2663,2664,5,1,0,0, + 2664,2671,3,146,73,0,2665,2666,5,231,0,0,2666,2669,3,184,92,0,2667, + 2668,5,104,0,0,2668,2670,3,150,75,0,2669,2667,1,0,0,0,2669,2670, + 1,0,0,0,2670,2672,1,0,0,0,2671,2665,1,0,0,0,2671,2672,1,0,0,0,2672, + 2676,1,0,0,0,2673,2674,3,158,79,0,2674,2675,5,308,0,0,2675,2677, + 1,0,0,0,2676,2673,1,0,0,0,2676,2677,1,0,0,0,2677,2685,1,0,0,0,2678, + 2679,7,15,0,0,2679,2683,5,218,0,0,2680,2681,5,190,0,0,2681,2682, + 5,242,0,0,2682,2684,5,264,0,0,2683,2680,1,0,0,0,2683,2684,1,0,0, + 0,2684,2686,1,0,0,0,2685,2678,1,0,0,0,2685,2686,1,0,0,0,2686,2691, + 1,0,0,0,2687,2688,3,160,80,0,2688,2689,5,190,0,0,2689,2690,5,85, + 0,0,2690,2692,1,0,0,0,2691,2687,1,0,0,0,2691,2692,1,0,0,0,2692,2697, + 1,0,0,0,2693,2694,3,160,80,0,2694,2695,5,190,0,0,2695,2696,5,89, + 0,0,2696,2698,1,0,0,0,2697,2693,1,0,0,0,2697,2698,1,0,0,0,2698,2699, + 1,0,0,0,2699,2700,5,2,0,0,2700,2772,1,0,0,0,2701,2702,5,140,0,0, + 2702,2731,5,1,0,0,2703,2708,3,162,81,0,2704,2705,5,3,0,0,2705,2707, + 3,162,81,0,2706,2704,1,0,0,0,2707,2710,1,0,0,0,2708,2706,1,0,0,0, + 2708,2709,1,0,0,0,2709,2717,1,0,0,0,2710,2708,1,0,0,0,2711,2712, + 5,183,0,0,2712,2713,5,190,0,0,2713,2718,5,183,0,0,2714,2715,5,18, + 0,0,2715,2716,5,190,0,0,2716,2718,5,183,0,0,2717,2711,1,0,0,0,2717, + 2714,1,0,0,0,2717,2718,1,0,0,0,2718,2729,1,0,0,0,2719,2720,5,304, + 0,0,2720,2722,5,282,0,0,2721,2723,5,146,0,0,2722,2721,1,0,0,0,2722, + 2723,1,0,0,0,2723,2730,1,0,0,0,2724,2725,5,306,0,0,2725,2727,5,282, + 0,0,2726,2728,5,146,0,0,2727,2726,1,0,0,0,2727,2728,1,0,0,0,2728, + 2730,1,0,0,0,2729,2719,1,0,0,0,2729,2724,1,0,0,0,2729,2730,1,0,0, + 0,2730,2732,1,0,0,0,2731,2703,1,0,0,0,2731,2732,1,0,0,0,2732,2739, + 1,0,0,0,2733,2734,5,231,0,0,2734,2737,3,184,92,0,2735,2736,5,104, + 0,0,2736,2738,3,150,75,0,2737,2735,1,0,0,0,2737,2738,1,0,0,0,2738, + 2740,1,0,0,0,2739,2733,1,0,0,0,2739,2740,1,0,0,0,2740,2741,1,0,0, + 0,2741,2772,5,2,0,0,2742,2743,5,138,0,0,2743,2760,5,1,0,0,2744,2749, + 3,148,74,0,2745,2746,5,3,0,0,2746,2748,3,148,74,0,2747,2745,1,0, + 0,0,2748,2751,1,0,0,0,2749,2747,1,0,0,0,2749,2750,1,0,0,0,2750,2758, + 1,0,0,0,2751,2749,1,0,0,0,2752,2753,5,183,0,0,2753,2754,5,190,0, + 0,2754,2759,5,183,0,0,2755,2756,5,18,0,0,2756,2757,5,190,0,0,2757, + 2759,5,183,0,0,2758,2752,1,0,0,0,2758,2755,1,0,0,0,2758,2759,1,0, + 0,0,2759,2761,1,0,0,0,2760,2744,1,0,0,0,2760,2761,1,0,0,0,2761,2768, + 1,0,0,0,2762,2763,5,231,0,0,2763,2766,3,184,92,0,2764,2765,5,104, + 0,0,2765,2767,3,150,75,0,2766,2764,1,0,0,0,2766,2767,1,0,0,0,2767, + 2769,1,0,0,0,2768,2762,1,0,0,0,2768,2769,1,0,0,0,2769,2770,1,0,0, + 0,2770,2772,5,2,0,0,2771,2318,1,0,0,0,2771,2320,1,0,0,0,2771,2321, + 1,0,0,0,2771,2324,1,0,0,0,2771,2327,1,0,0,0,2771,2328,1,0,0,0,2771, + 2329,1,0,0,0,2771,2330,1,0,0,0,2771,2331,1,0,0,0,2771,2332,1,0,0, + 0,2771,2339,1,0,0,0,2771,2349,1,0,0,0,2771,2361,1,0,0,0,2771,2396, + 1,0,0,0,2771,2414,1,0,0,0,2771,2453,1,0,0,0,2771,2456,1,0,0,0,2771, + 2460,1,0,0,0,2771,2474,1,0,0,0,2771,2478,1,0,0,0,2771,2483,1,0,0, + 0,2771,2496,1,0,0,0,2771,2508,1,0,0,0,2771,2515,1,0,0,0,2771,2522, + 1,0,0,0,2771,2535,1,0,0,0,2771,2536,1,0,0,0,2771,2537,1,0,0,0,2771, + 2543,1,0,0,0,2771,2549,1,0,0,0,2771,2555,1,0,0,0,2771,2561,1,0,0, + 0,2771,2562,1,0,0,0,2771,2563,1,0,0,0,2771,2564,1,0,0,0,2771,2565, + 1,0,0,0,2771,2579,1,0,0,0,2771,2586,1,0,0,0,2771,2597,1,0,0,0,2771, + 2606,1,0,0,0,2771,2613,1,0,0,0,2771,2617,1,0,0,0,2771,2630,1,0,0, + 0,2771,2641,1,0,0,0,2771,2662,1,0,0,0,2771,2701,1,0,0,0,2771,2742, + 1,0,0,0,2772,2783,1,0,0,0,2773,2774,10,24,0,0,2774,2775,5,8,0,0, + 2775,2776,3,142,71,0,2776,2777,5,9,0,0,2777,2782,1,0,0,0,2778,2779, + 10,22,0,0,2779,2780,5,4,0,0,2780,2782,3,294,147,0,2781,2773,1,0, + 0,0,2781,2778,1,0,0,0,2782,2785,1,0,0,0,2783,2781,1,0,0,0,2783,2784, + 1,0,0,0,2784,145,1,0,0,0,2785,2783,1,0,0,0,2786,2787,3,148,74,0, + 2787,2788,5,3,0,0,2788,2791,3,168,84,0,2789,2790,5,28,0,0,2790,2792, + 3,294,147,0,2791,2789,1,0,0,0,2791,2792,1,0,0,0,2792,2802,1,0,0, + 0,2793,2794,5,203,0,0,2794,2799,3,152,76,0,2795,2796,5,3,0,0,2796, + 2798,3,152,76,0,2797,2795,1,0,0,0,2798,2801,1,0,0,0,2799,2797,1, + 0,0,0,2799,2800,1,0,0,0,2800,2803,1,0,0,0,2801,2799,1,0,0,0,2802, + 2793,1,0,0,0,2802,2803,1,0,0,0,2803,147,1,0,0,0,2804,2807,3,136, + 68,0,2805,2806,5,104,0,0,2806,2808,3,150,75,0,2807,2805,1,0,0,0, + 2807,2808,1,0,0,0,2808,149,1,0,0,0,2809,2812,5,137,0,0,2810,2811, + 5,87,0,0,2811,2813,7,20,0,0,2812,2810,1,0,0,0,2812,2813,1,0,0,0, + 2813,151,1,0,0,0,2814,2815,3,148,74,0,2815,2816,5,28,0,0,2816,2817, + 3,294,147,0,2817,153,1,0,0,0,2818,2819,7,21,0,0,2819,155,1,0,0,0, + 2820,2825,5,89,0,0,2821,2825,5,183,0,0,2822,2823,5,70,0,0,2823,2825, + 3,136,68,0,2824,2820,1,0,0,0,2824,2821,1,0,0,0,2824,2822,1,0,0,0, + 2825,157,1,0,0,0,2826,2828,5,306,0,0,2827,2829,5,27,0,0,2828,2827, + 1,0,0,0,2828,2829,1,0,0,0,2829,2838,1,0,0,0,2830,2832,5,304,0,0, + 2831,2833,7,22,0,0,2832,2831,1,0,0,0,2832,2833,1,0,0,0,2833,2835, + 1,0,0,0,2834,2836,5,27,0,0,2835,2834,1,0,0,0,2835,2836,1,0,0,0,2836, + 2838,1,0,0,0,2837,2826,1,0,0,0,2837,2830,1,0,0,0,2838,159,1,0,0, + 0,2839,2846,5,89,0,0,2840,2846,5,183,0,0,2841,2842,5,85,0,0,2842, + 2846,5,27,0,0,2843,2844,5,85,0,0,2844,2846,5,186,0,0,2845,2839,1, + 0,0,0,2845,2840,1,0,0,0,2845,2841,1,0,0,0,2845,2843,1,0,0,0,2846, + 161,1,0,0,0,2847,2849,5,145,0,0,2848,2847,1,0,0,0,2848,2849,1,0, + 0,0,2849,2850,1,0,0,0,2850,2851,3,136,68,0,2851,2852,5,295,0,0,2852, + 2853,3,148,74,0,2853,2859,1,0,0,0,2854,2855,3,136,68,0,2855,2856, + 5,10,0,0,2856,2857,3,148,74,0,2857,2859,1,0,0,0,2858,2848,1,0,0, + 0,2858,2854,1,0,0,0,2859,163,1,0,0,0,2860,2861,7,23,0,0,2861,165, + 1,0,0,0,2862,2863,5,120,0,0,2863,2867,5,185,0,0,2864,2865,5,228, + 0,0,2865,2867,5,185,0,0,2866,2862,1,0,0,0,2866,2864,1,0,0,0,2867, + 167,1,0,0,0,2868,2875,5,326,0,0,2869,2872,5,327,0,0,2870,2871,5, + 277,0,0,2871,2873,5,326,0,0,2872,2870,1,0,0,0,2872,2873,1,0,0,0, + 2873,2875,1,0,0,0,2874,2868,1,0,0,0,2874,2869,1,0,0,0,2875,169,1, + 0,0,0,2876,2877,5,267,0,0,2877,2878,5,311,0,0,2878,2883,3,178,89, + 0,2879,2880,5,267,0,0,2880,2881,5,311,0,0,2881,2883,3,168,84,0,2882, + 2876,1,0,0,0,2882,2879,1,0,0,0,2883,171,1,0,0,0,2884,2885,7,24,0, + 0,2885,173,1,0,0,0,2886,2887,7,25,0,0,2887,175,1,0,0,0,2888,2889, + 7,26,0,0,2889,177,1,0,0,0,2890,2892,5,129,0,0,2891,2893,7,18,0,0, + 2892,2891,1,0,0,0,2892,2893,1,0,0,0,2893,2894,1,0,0,0,2894,2895, + 3,168,84,0,2895,2898,3,180,90,0,2896,2897,5,269,0,0,2897,2899,3, + 180,90,0,2898,2896,1,0,0,0,2898,2899,1,0,0,0,2899,179,1,0,0,0,2900, + 2901,7,27,0,0,2901,181,1,0,0,0,2902,2903,7,28,0,0,2903,183,1,0,0, + 0,2904,2905,6,92,-1,0,2905,2906,5,239,0,0,2906,2907,5,1,0,0,2907, + 2912,3,186,93,0,2908,2909,5,3,0,0,2909,2911,3,186,93,0,2910,2908, + 1,0,0,0,2911,2914,1,0,0,0,2912,2910,1,0,0,0,2912,2913,1,0,0,0,2913, + 2915,1,0,0,0,2914,2912,1,0,0,0,2915,2916,5,2,0,0,2916,2996,1,0,0, + 0,2917,2918,5,129,0,0,2918,2921,3,180,90,0,2919,2920,5,269,0,0,2920, + 2922,3,180,90,0,2921,2919,1,0,0,0,2921,2922,1,0,0,0,2922,2996,1, + 0,0,0,2923,2928,5,268,0,0,2924,2925,5,1,0,0,2925,2926,3,188,94,0, + 2926,2927,5,2,0,0,2927,2929,1,0,0,0,2928,2924,1,0,0,0,2928,2929, + 1,0,0,0,2929,2933,1,0,0,0,2930,2931,5,306,0,0,2931,2932,5,267,0, + 0,2932,2934,5,311,0,0,2933,2930,1,0,0,0,2933,2934,1,0,0,0,2934,2996, + 1,0,0,0,2935,2940,5,268,0,0,2936,2937,5,1,0,0,2937,2938,3,188,94, + 0,2938,2939,5,2,0,0,2939,2941,1,0,0,0,2940,2936,1,0,0,0,2940,2941, + 1,0,0,0,2941,2942,1,0,0,0,2942,2943,5,304,0,0,2943,2944,5,267,0, + 0,2944,2996,5,311,0,0,2945,2950,5,267,0,0,2946,2947,5,1,0,0,2947, + 2948,3,188,94,0,2948,2949,5,2,0,0,2949,2951,1,0,0,0,2950,2946,1, + 0,0,0,2950,2951,1,0,0,0,2951,2955,1,0,0,0,2952,2953,5,306,0,0,2953, + 2954,5,267,0,0,2954,2956,5,311,0,0,2955,2952,1,0,0,0,2955,2956,1, + 0,0,0,2956,2996,1,0,0,0,2957,2962,5,267,0,0,2958,2959,5,1,0,0,2959, + 2960,3,188,94,0,2960,2961,5,2,0,0,2961,2963,1,0,0,0,2962,2958,1, + 0,0,0,2962,2963,1,0,0,0,2963,2964,1,0,0,0,2964,2965,5,304,0,0,2965, + 2966,5,267,0,0,2966,2996,5,311,0,0,2967,2968,5,82,0,0,2968,2996, + 5,213,0,0,2969,2970,5,27,0,0,2970,2971,5,314,0,0,2971,2972,3,184, + 92,0,2972,2973,5,316,0,0,2973,2996,1,0,0,0,2974,2975,5,162,0,0,2975, + 2976,5,314,0,0,2976,2977,3,184,92,0,2977,2978,5,3,0,0,2978,2979, + 3,184,92,0,2979,2980,5,316,0,0,2980,2996,1,0,0,0,2981,2993,3,294, + 147,0,2982,2983,5,1,0,0,2983,2988,3,188,94,0,2984,2985,5,3,0,0,2985, + 2987,3,188,94,0,2986,2984,1,0,0,0,2987,2990,1,0,0,0,2988,2986,1, + 0,0,0,2988,2989,1,0,0,0,2989,2991,1,0,0,0,2990,2988,1,0,0,0,2991, + 2992,5,2,0,0,2992,2994,1,0,0,0,2993,2982,1,0,0,0,2993,2994,1,0,0, + 0,2994,2996,1,0,0,0,2995,2904,1,0,0,0,2995,2917,1,0,0,0,2995,2923, + 1,0,0,0,2995,2935,1,0,0,0,2995,2945,1,0,0,0,2995,2957,1,0,0,0,2995, + 2967,1,0,0,0,2995,2969,1,0,0,0,2995,2974,1,0,0,0,2995,2981,1,0,0, + 0,2996,3006,1,0,0,0,2997,2998,10,2,0,0,2998,3002,5,27,0,0,2999,3000, + 5,8,0,0,3000,3001,5,329,0,0,3001,3003,5,9,0,0,3002,2999,1,0,0,0, + 3002,3003,1,0,0,0,3003,3005,1,0,0,0,3004,2997,1,0,0,0,3005,3008, + 1,0,0,0,3006,3004,1,0,0,0,3006,3007,1,0,0,0,3007,185,1,0,0,0,3008, + 3006,1,0,0,0,3009,3014,3,184,92,0,3010,3011,3,294,147,0,3011,3012, + 3,184,92,0,3012,3014,1,0,0,0,3013,3009,1,0,0,0,3013,3010,1,0,0,0, + 3014,187,1,0,0,0,3015,3018,5,329,0,0,3016,3018,3,184,92,0,3017,3015, + 1,0,0,0,3017,3016,1,0,0,0,3018,189,1,0,0,0,3019,3020,5,300,0,0,3020, + 3021,3,136,68,0,3021,3022,5,265,0,0,3022,3023,3,136,68,0,3023,191, + 1,0,0,0,3024,3025,5,99,0,0,3025,3026,5,1,0,0,3026,3027,5,301,0,0, + 3027,3028,3,138,69,0,3028,3029,5,2,0,0,3029,193,1,0,0,0,3030,3031, + 5,300,0,0,3031,3034,5,164,0,0,3032,3033,5,25,0,0,3033,3035,3,136, + 68,0,3034,3032,1,0,0,0,3034,3035,1,0,0,0,3035,3036,1,0,0,0,3036, + 3037,5,265,0,0,3037,3038,5,287,0,0,3038,3039,5,251,0,0,3039,3040, + 3,294,147,0,3040,3041,5,312,0,0,3041,3049,3,136,68,0,3042,3043,5, + 3,0,0,3043,3044,3,294,147,0,3044,3045,5,312,0,0,3045,3046,3,136, + 68,0,3046,3048,1,0,0,0,3047,3042,1,0,0,0,3048,3051,1,0,0,0,3049, + 3047,1,0,0,0,3049,3050,1,0,0,0,3050,3095,1,0,0,0,3051,3049,1,0,0, + 0,3052,3053,5,300,0,0,3053,3056,5,164,0,0,3054,3055,5,25,0,0,3055, + 3057,3,136,68,0,3056,3054,1,0,0,0,3056,3057,1,0,0,0,3057,3058,1, + 0,0,0,3058,3059,5,265,0,0,3059,3095,5,73,0,0,3060,3061,5,300,0,0, + 3061,3062,5,182,0,0,3062,3065,5,164,0,0,3063,3064,5,25,0,0,3064, + 3066,3,136,68,0,3065,3063,1,0,0,0,3065,3066,1,0,0,0,3066,3067,1, + 0,0,0,3067,3068,5,265,0,0,3068,3080,5,127,0,0,3069,3070,5,1,0,0, + 3070,3075,3,294,147,0,3071,3072,5,3,0,0,3072,3074,3,294,147,0,3073, + 3071,1,0,0,0,3074,3077,1,0,0,0,3075,3073,1,0,0,0,3075,3076,1,0,0, + 0,3076,3078,1,0,0,0,3077,3075,1,0,0,0,3078,3079,5,2,0,0,3079,3081, + 1,0,0,0,3080,3069,1,0,0,0,3080,3081,1,0,0,0,3081,3082,1,0,0,0,3082, + 3083,5,296,0,0,3083,3084,5,1,0,0,3084,3089,3,136,68,0,3085,3086, + 5,3,0,0,3086,3088,3,136,68,0,3087,3085,1,0,0,0,3088,3091,1,0,0,0, + 3089,3087,1,0,0,0,3089,3090,1,0,0,0,3090,3092,1,0,0,0,3091,3089, + 1,0,0,0,3092,3093,5,2,0,0,3093,3095,1,0,0,0,3094,3030,1,0,0,0,3094, + 3052,1,0,0,0,3094,3060,1,0,0,0,3095,195,1,0,0,0,3096,3102,5,199, + 0,0,3097,3103,3,294,147,0,3098,3099,5,1,0,0,3099,3100,3,64,32,0, + 3100,3101,5,2,0,0,3101,3103,1,0,0,0,3102,3097,1,0,0,0,3102,3098, + 1,0,0,0,3103,197,1,0,0,0,3104,3105,5,168,0,0,3105,3110,3,90,45,0, + 3106,3107,5,3,0,0,3107,3109,3,90,45,0,3108,3106,1,0,0,0,3109,3112, + 1,0,0,0,3110,3108,1,0,0,0,3110,3111,1,0,0,0,3111,3114,1,0,0,0,3112, + 3110,1,0,0,0,3113,3104,1,0,0,0,3113,3114,1,0,0,0,3114,3115,1,0,0, + 0,3115,3119,3,200,100,0,3116,3117,5,21,0,0,3117,3118,5,163,0,0,3118, + 3120,3,96,48,0,3119,3116,1,0,0,0,3119,3120,1,0,0,0,3120,3122,1,0, + 0,0,3121,3123,7,13,0,0,3122,3121,1,0,0,0,3122,3123,1,0,0,0,3123, + 3129,1,0,0,0,3124,3125,5,206,0,0,3125,3126,5,1,0,0,3126,3127,3,204, + 102,0,3127,3128,5,2,0,0,3128,3130,1,0,0,0,3129,3124,1,0,0,0,3129, + 3130,1,0,0,0,3130,3140,1,0,0,0,3131,3132,5,257,0,0,3132,3137,3,98, + 49,0,3133,3134,5,3,0,0,3134,3136,3,98,49,0,3135,3133,1,0,0,0,3136, + 3139,1,0,0,0,3137,3135,1,0,0,0,3137,3138,1,0,0,0,3138,3141,1,0,0, + 0,3139,3137,1,0,0,0,3140,3131,1,0,0,0,3140,3141,1,0,0,0,3141,3151, + 1,0,0,0,3142,3143,5,71,0,0,3143,3148,3,100,50,0,3144,3145,5,3,0, + 0,3145,3147,3,100,50,0,3146,3144,1,0,0,0,3147,3150,1,0,0,0,3148, + 3146,1,0,0,0,3148,3149,1,0,0,0,3149,3152,1,0,0,0,3150,3148,1,0,0, + 0,3151,3142,1,0,0,0,3151,3152,1,0,0,0,3152,199,1,0,0,0,3153,3154, + 5,219,0,0,3154,3178,3,202,101,0,3155,3156,5,240,0,0,3156,3178,3, + 202,101,0,3157,3158,5,116,0,0,3158,3178,3,202,101,0,3159,3160,5, + 219,0,0,3160,3161,5,34,0,0,3161,3162,3,202,101,0,3162,3163,5,25, + 0,0,3163,3164,3,202,101,0,3164,3178,1,0,0,0,3165,3166,5,240,0,0, + 3166,3167,5,34,0,0,3167,3168,3,202,101,0,3168,3169,5,25,0,0,3169, + 3170,3,202,101,0,3170,3178,1,0,0,0,3171,3172,5,116,0,0,3172,3173, + 5,34,0,0,3173,3174,3,202,101,0,3174,3175,5,25,0,0,3175,3176,3,202, + 101,0,3176,3178,1,0,0,0,3177,3153,1,0,0,0,3177,3155,1,0,0,0,3177, + 3157,1,0,0,0,3177,3159,1,0,0,0,3177,3165,1,0,0,0,3177,3171,1,0,0, + 0,3178,201,1,0,0,0,3179,3180,5,278,0,0,3180,3189,5,212,0,0,3181, + 3182,5,278,0,0,3182,3189,5,102,0,0,3183,3184,5,56,0,0,3184,3189, + 5,239,0,0,3185,3186,3,136,68,0,3186,3187,7,29,0,0,3187,3189,1,0, + 0,0,3188,3179,1,0,0,0,3188,3181,1,0,0,0,3188,3183,1,0,0,0,3188,3185, + 1,0,0,0,3189,203,1,0,0,0,3190,3191,6,102,-1,0,3191,3193,3,206,103, + 0,3192,3194,3,208,104,0,3193,3192,1,0,0,0,3193,3194,1,0,0,0,3194, + 3202,1,0,0,0,3195,3196,10,2,0,0,3196,3201,3,204,102,3,3197,3198, + 10,1,0,0,3198,3199,5,11,0,0,3199,3201,3,204,102,2,3200,3195,1,0, + 0,0,3200,3197,1,0,0,0,3201,3204,1,0,0,0,3202,3200,1,0,0,0,3202,3203, + 1,0,0,0,3203,205,1,0,0,0,3204,3202,1,0,0,0,3205,3231,3,294,147,0, + 3206,3207,5,1,0,0,3207,3231,5,2,0,0,3208,3209,5,209,0,0,3209,3210, + 5,1,0,0,3210,3215,3,204,102,0,3211,3212,5,3,0,0,3212,3214,3,204, + 102,0,3213,3211,1,0,0,0,3214,3217,1,0,0,0,3215,3213,1,0,0,0,3215, + 3216,1,0,0,0,3216,3218,1,0,0,0,3217,3215,1,0,0,0,3218,3219,5,2,0, + 0,3219,3231,1,0,0,0,3220,3221,5,1,0,0,3221,3222,3,204,102,0,3222, + 3223,5,2,0,0,3223,3231,1,0,0,0,3224,3231,5,12,0,0,3225,3231,5,13, + 0,0,3226,3227,5,14,0,0,3227,3228,3,204,102,0,3228,3229,5,15,0,0, + 3229,3231,1,0,0,0,3230,3205,1,0,0,0,3230,3206,1,0,0,0,3230,3208, + 1,0,0,0,3230,3220,1,0,0,0,3230,3224,1,0,0,0,3230,3225,1,0,0,0,3230, + 3226,1,0,0,0,3231,207,1,0,0,0,3232,3234,5,320,0,0,3233,3235,5,324, + 0,0,3234,3233,1,0,0,0,3234,3235,1,0,0,0,3235,3263,1,0,0,0,3236,3238, + 5,318,0,0,3237,3239,5,324,0,0,3238,3237,1,0,0,0,3238,3239,1,0,0, + 0,3239,3263,1,0,0,0,3240,3242,5,324,0,0,3241,3243,5,324,0,0,3242, + 3241,1,0,0,0,3242,3243,1,0,0,0,3243,3263,1,0,0,0,3244,3245,5,16, + 0,0,3245,3246,5,329,0,0,3246,3248,5,17,0,0,3247,3249,5,324,0,0,3248, + 3247,1,0,0,0,3248,3249,1,0,0,0,3249,3263,1,0,0,0,3250,3252,5,16, + 0,0,3251,3253,5,329,0,0,3252,3251,1,0,0,0,3252,3253,1,0,0,0,3253, + 3254,1,0,0,0,3254,3256,5,3,0,0,3255,3257,5,329,0,0,3256,3255,1,0, + 0,0,3256,3257,1,0,0,0,3257,3258,1,0,0,0,3258,3260,5,17,0,0,3259, + 3261,5,324,0,0,3260,3259,1,0,0,0,3260,3261,1,0,0,0,3261,3263,1,0, + 0,0,3262,3232,1,0,0,0,3262,3236,1,0,0,0,3262,3240,1,0,0,0,3262,3244, + 1,0,0,0,3262,3250,1,0,0,0,3263,209,1,0,0,0,3264,3265,3,294,147,0, + 3265,3266,5,312,0,0,3266,3267,3,136,68,0,3267,211,1,0,0,0,3268,3269, + 5,104,0,0,3269,3273,7,30,0,0,3270,3271,5,276,0,0,3271,3273,7,31, + 0,0,3272,3268,1,0,0,0,3272,3270,1,0,0,0,3273,213,1,0,0,0,3274,3275, + 5,134,0,0,3275,3276,5,153,0,0,3276,3280,3,216,108,0,3277,3278,5, + 220,0,0,3278,3280,7,32,0,0,3279,3274,1,0,0,0,3279,3277,1,0,0,0,3280, + 215,1,0,0,0,3281,3282,5,220,0,0,3282,3289,5,279,0,0,3283,3284,5, + 220,0,0,3284,3289,5,48,0,0,3285,3286,5,225,0,0,3286,3289,5,220,0, + 0,3287,3289,5,249,0,0,3288,3281,1,0,0,0,3288,3283,1,0,0,0,3288,3285, + 1,0,0,0,3288,3287,1,0,0,0,3289,217,1,0,0,0,3290,3296,3,136,68,0, + 3291,3292,3,294,147,0,3292,3293,5,6,0,0,3293,3294,3,136,68,0,3294, + 3296,1,0,0,0,3295,3290,1,0,0,0,3295,3291,1,0,0,0,3296,219,1,0,0, + 0,3297,3298,3,294,147,0,3298,3299,5,4,0,0,3299,3300,3,294,147,0, + 3300,3303,1,0,0,0,3301,3303,3,294,147,0,3302,3297,1,0,0,0,3302,3301, + 1,0,0,0,3303,221,1,0,0,0,3304,3309,3,220,110,0,3305,3306,5,3,0,0, + 3306,3308,3,220,110,0,3307,3305,1,0,0,0,3308,3311,1,0,0,0,3309,3307, + 1,0,0,0,3309,3310,1,0,0,0,3310,223,1,0,0,0,3311,3309,1,0,0,0,3312, + 3313,5,107,0,0,3313,3314,3,226,113,0,3314,3318,3,232,116,0,3315, + 3317,3,234,117,0,3316,3315,1,0,0,0,3317,3320,1,0,0,0,3318,3316,1, + 0,0,0,3318,3319,1,0,0,0,3319,3321,1,0,0,0,3320,3318,1,0,0,0,3321, + 3322,3,236,118,0,3322,225,1,0,0,0,3323,3324,3,274,137,0,3324,3333, + 5,1,0,0,3325,3330,3,230,115,0,3326,3327,5,3,0,0,3327,3329,3,230, + 115,0,3328,3326,1,0,0,0,3329,3332,1,0,0,0,3330,3328,1,0,0,0,3330, + 3331,1,0,0,0,3331,3334,1,0,0,0,3332,3330,1,0,0,0,3333,3325,1,0,0, + 0,3333,3334,1,0,0,0,3334,3335,1,0,0,0,3335,3336,5,2,0,0,3336,227, + 1,0,0,0,3337,3338,3,272,136,0,3338,3347,5,1,0,0,3339,3344,3,230, + 115,0,3340,3341,5,3,0,0,3341,3343,3,230,115,0,3342,3340,1,0,0,0, + 3343,3346,1,0,0,0,3344,3342,1,0,0,0,3344,3345,1,0,0,0,3345,3348, + 1,0,0,0,3346,3344,1,0,0,0,3347,3339,1,0,0,0,3347,3348,1,0,0,0,3348, + 3349,1,0,0,0,3349,3350,5,2,0,0,3350,229,1,0,0,0,3351,3353,3,294, + 147,0,3352,3351,1,0,0,0,3352,3353,1,0,0,0,3353,3354,1,0,0,0,3354, + 3355,3,184,92,0,3355,231,1,0,0,0,3356,3357,5,232,0,0,3357,3358,3, + 184,92,0,3358,233,1,0,0,0,3359,3360,5,147,0,0,3360,3379,3,294,147, + 0,3361,3363,5,182,0,0,3362,3361,1,0,0,0,3362,3363,1,0,0,0,3363,3364, + 1,0,0,0,3364,3379,5,78,0,0,3365,3366,5,232,0,0,3366,3367,5,183,0, + 0,3367,3368,5,190,0,0,3368,3369,5,183,0,0,3369,3379,5,126,0,0,3370, + 3371,5,38,0,0,3371,3372,5,190,0,0,3372,3373,5,183,0,0,3373,3379, + 5,126,0,0,3374,3375,5,246,0,0,3375,3379,7,1,0,0,3376,3377,5,46,0, + 0,3377,3379,3,168,84,0,3378,3359,1,0,0,0,3378,3362,1,0,0,0,3378, + 3365,1,0,0,0,3378,3370,1,0,0,0,3378,3374,1,0,0,0,3378,3376,1,0,0, + 0,3379,235,1,0,0,0,3380,3381,5,230,0,0,3381,3480,3,142,71,0,3382, + 3383,5,251,0,0,3383,3384,3,294,147,0,3384,3385,5,312,0,0,3385,3386, + 3,136,68,0,3386,3480,1,0,0,0,3387,3388,5,40,0,0,3388,3390,3,136, + 68,0,3389,3391,3,238,119,0,3390,3389,1,0,0,0,3391,3392,1,0,0,0,3392, + 3390,1,0,0,0,3392,3393,1,0,0,0,3393,3395,1,0,0,0,3394,3396,3,242, + 121,0,3395,3394,1,0,0,0,3395,3396,1,0,0,0,3396,3397,1,0,0,0,3397, + 3398,5,88,0,0,3398,3399,5,40,0,0,3399,3480,1,0,0,0,3400,3402,5,40, + 0,0,3401,3403,3,238,119,0,3402,3401,1,0,0,0,3403,3404,1,0,0,0,3404, + 3402,1,0,0,0,3404,3405,1,0,0,0,3405,3407,1,0,0,0,3406,3408,3,242, + 121,0,3407,3406,1,0,0,0,3407,3408,1,0,0,0,3408,3409,1,0,0,0,3409, + 3410,5,88,0,0,3410,3411,5,40,0,0,3411,3480,1,0,0,0,3412,3413,5,119, + 0,0,3413,3414,3,136,68,0,3414,3415,5,265,0,0,3415,3419,3,246,123, + 0,3416,3418,3,240,120,0,3417,3416,1,0,0,0,3418,3421,1,0,0,0,3419, + 3417,1,0,0,0,3419,3420,1,0,0,0,3420,3423,1,0,0,0,3421,3419,1,0,0, + 0,3422,3424,3,242,121,0,3423,3422,1,0,0,0,3423,3424,1,0,0,0,3424, + 3425,1,0,0,0,3425,3426,5,88,0,0,3426,3427,5,119,0,0,3427,3480,1, + 0,0,0,3428,3429,5,135,0,0,3429,3480,3,294,147,0,3430,3431,5,151, + 0,0,3431,3480,3,294,147,0,3432,3438,5,32,0,0,3433,3434,3,244,122, + 0,3434,3435,5,325,0,0,3435,3437,1,0,0,0,3436,3433,1,0,0,0,3437,3440, + 1,0,0,0,3438,3436,1,0,0,0,3438,3439,1,0,0,0,3439,3442,1,0,0,0,3440, + 3438,1,0,0,0,3441,3443,3,246,123,0,3442,3441,1,0,0,0,3442,3443,1, + 0,0,0,3443,3444,1,0,0,0,3444,3480,5,88,0,0,3445,3446,3,294,147,0, + 3446,3447,5,10,0,0,3447,3449,1,0,0,0,3448,3445,1,0,0,0,3448,3449, + 1,0,0,0,3449,3450,1,0,0,0,3450,3451,5,161,0,0,3451,3452,3,246,123, + 0,3452,3453,5,88,0,0,3453,3454,5,161,0,0,3454,3480,1,0,0,0,3455, + 3456,3,294,147,0,3456,3457,5,10,0,0,3457,3459,1,0,0,0,3458,3455, + 1,0,0,0,3458,3459,1,0,0,0,3459,3460,1,0,0,0,3460,3461,5,302,0,0, + 3461,3462,3,136,68,0,3462,3463,5,81,0,0,3463,3464,3,246,123,0,3464, + 3465,5,88,0,0,3465,3466,5,302,0,0,3466,3480,1,0,0,0,3467,3468,3, + 294,147,0,3468,3469,5,10,0,0,3469,3471,1,0,0,0,3470,3467,1,0,0,0, + 3470,3471,1,0,0,0,3471,3472,1,0,0,0,3472,3473,5,224,0,0,3473,3474, + 3,246,123,0,3474,3475,5,286,0,0,3475,3476,3,136,68,0,3476,3477,5, + 88,0,0,3477,3478,5,224,0,0,3478,3480,1,0,0,0,3479,3380,1,0,0,0,3479, + 3382,1,0,0,0,3479,3387,1,0,0,0,3479,3400,1,0,0,0,3479,3412,1,0,0, + 0,3479,3428,1,0,0,0,3479,3430,1,0,0,0,3479,3432,1,0,0,0,3479,3448, + 1,0,0,0,3479,3458,1,0,0,0,3479,3470,1,0,0,0,3480,237,1,0,0,0,3481, + 3482,5,300,0,0,3482,3483,3,136,68,0,3483,3484,5,265,0,0,3484,3485, + 3,246,123,0,3485,239,1,0,0,0,3486,3487,5,86,0,0,3487,3488,3,136, + 68,0,3488,3489,5,265,0,0,3489,3490,3,246,123,0,3490,241,1,0,0,0, + 3491,3492,5,84,0,0,3492,3493,3,246,123,0,3493,243,1,0,0,0,3494,3495, + 5,69,0,0,3495,3500,3,294,147,0,3496,3497,5,3,0,0,3497,3499,3,294, + 147,0,3498,3496,1,0,0,0,3499,3502,1,0,0,0,3500,3498,1,0,0,0,3500, + 3501,1,0,0,0,3501,3503,1,0,0,0,3502,3500,1,0,0,0,3503,3506,3,184, + 92,0,3504,3505,5,70,0,0,3505,3507,3,142,71,0,3506,3504,1,0,0,0,3506, + 3507,1,0,0,0,3507,245,1,0,0,0,3508,3509,3,236,118,0,3509,3510,5, + 325,0,0,3510,3512,1,0,0,0,3511,3508,1,0,0,0,3512,3513,1,0,0,0,3513, + 3511,1,0,0,0,3513,3514,1,0,0,0,3514,247,1,0,0,0,3515,3522,5,53,0, + 0,3516,3522,5,248,0,0,3517,3522,5,73,0,0,3518,3522,5,127,0,0,3519, + 3522,5,287,0,0,3520,3522,3,294,147,0,3521,3515,1,0,0,0,3521,3516, + 1,0,0,0,3521,3517,1,0,0,0,3521,3518,1,0,0,0,3521,3519,1,0,0,0,3521, + 3520,1,0,0,0,3522,249,1,0,0,0,3523,3527,5,260,0,0,3524,3527,5,243, + 0,0,3525,3527,3,294,147,0,3526,3523,1,0,0,0,3526,3524,1,0,0,0,3526, + 3525,1,0,0,0,3527,251,1,0,0,0,3528,3530,3,250,125,0,3529,3528,1, + 0,0,0,3529,3530,1,0,0,0,3530,3531,1,0,0,0,3531,3532,3,280,140,0, + 3532,253,1,0,0,0,3533,3536,3,256,128,0,3534,3536,3,260,130,0,3535, + 3533,1,0,0,0,3535,3534,1,0,0,0,3536,255,1,0,0,0,3537,3549,3,294, + 147,0,3538,3539,3,294,147,0,3539,3540,5,4,0,0,3540,3541,3,294,147, + 0,3541,3549,1,0,0,0,3542,3543,3,294,147,0,3543,3544,5,4,0,0,3544, + 3545,3,294,147,0,3545,3546,5,4,0,0,3546,3547,3,294,147,0,3547,3549, + 1,0,0,0,3548,3537,1,0,0,0,3548,3538,1,0,0,0,3548,3542,1,0,0,0,3549, + 257,1,0,0,0,3550,3562,3,294,147,0,3551,3552,3,294,147,0,3552,3553, + 5,4,0,0,3553,3554,3,294,147,0,3554,3562,1,0,0,0,3555,3556,3,294, + 147,0,3556,3557,5,4,0,0,3557,3558,3,294,147,0,3558,3559,5,4,0,0, + 3559,3560,3,294,147,0,3560,3562,1,0,0,0,3561,3550,1,0,0,0,3561,3551, + 1,0,0,0,3561,3555,1,0,0,0,3562,259,1,0,0,0,3563,3575,3,294,147,0, + 3564,3565,3,294,147,0,3565,3566,5,4,0,0,3566,3567,3,294,147,0,3567, + 3575,1,0,0,0,3568,3569,3,294,147,0,3569,3570,5,4,0,0,3570,3571,3, + 294,147,0,3571,3572,5,4,0,0,3572,3573,3,294,147,0,3573,3575,1,0, + 0,0,3574,3563,1,0,0,0,3574,3564,1,0,0,0,3574,3568,1,0,0,0,3575,261, + 1,0,0,0,3576,3588,3,294,147,0,3577,3578,3,294,147,0,3578,3579,5, + 4,0,0,3579,3580,3,294,147,0,3580,3588,1,0,0,0,3581,3582,3,294,147, + 0,3582,3583,5,4,0,0,3583,3584,3,294,147,0,3584,3585,5,4,0,0,3585, + 3586,3,294,147,0,3586,3588,1,0,0,0,3587,3576,1,0,0,0,3587,3577,1, + 0,0,0,3587,3581,1,0,0,0,3588,263,1,0,0,0,3589,3595,3,294,147,0,3590, + 3591,3,294,147,0,3591,3592,5,4,0,0,3592,3593,3,294,147,0,3593,3595, + 1,0,0,0,3594,3589,1,0,0,0,3594,3590,1,0,0,0,3595,265,1,0,0,0,3596, + 3602,3,294,147,0,3597,3598,3,294,147,0,3598,3599,5,4,0,0,3599,3600, + 3,294,147,0,3600,3602,1,0,0,0,3601,3596,1,0,0,0,3601,3597,1,0,0, + 0,3602,267,1,0,0,0,3603,3604,3,294,147,0,3604,269,1,0,0,0,3605,3606, + 3,294,147,0,3606,271,1,0,0,0,3607,3608,3,280,140,0,3608,273,1,0, + 0,0,3609,3610,3,280,140,0,3610,275,1,0,0,0,3611,3614,3,280,140,0, + 3612,3614,4,138,14,0,3613,3611,1,0,0,0,3613,3612,1,0,0,0,3614,277, + 1,0,0,0,3615,3616,3,294,147,0,3616,279,1,0,0,0,3617,3622,3,294,147, + 0,3618,3619,5,4,0,0,3619,3621,3,294,147,0,3620,3618,1,0,0,0,3621, + 3624,1,0,0,0,3622,3620,1,0,0,0,3622,3623,1,0,0,0,3623,281,1,0,0, + 0,3624,3622,1,0,0,0,3625,3626,5,103,0,0,3626,3627,3,284,142,0,3627, + 3628,5,28,0,0,3628,3629,5,187,0,0,3629,3630,3,142,71,0,3630,283, + 1,0,0,0,3631,3632,7,33,0,0,3632,285,1,0,0,0,3633,3637,3,288,144, + 0,3634,3637,5,64,0,0,3635,3637,5,60,0,0,3636,3633,1,0,0,0,3636,3634, + 1,0,0,0,3636,3635,1,0,0,0,3637,287,1,0,0,0,3638,3644,3,294,147,0, + 3639,3640,5,289,0,0,3640,3644,3,294,147,0,3641,3642,5,235,0,0,3642, + 3644,3,294,147,0,3643,3638,1,0,0,0,3643,3639,1,0,0,0,3643,3641,1, + 0,0,0,3644,289,1,0,0,0,3645,3650,3,294,147,0,3646,3647,5,3,0,0,3647, + 3649,3,294,147,0,3648,3646,1,0,0,0,3649,3652,1,0,0,0,3650,3648,1, + 0,0,0,3650,3651,1,0,0,0,3651,291,1,0,0,0,3652,3650,1,0,0,0,3653, + 3661,5,53,0,0,3654,3661,5,248,0,0,3655,3661,5,73,0,0,3656,3661,5, + 127,0,0,3657,3661,5,287,0,0,3658,3661,5,93,0,0,3659,3661,3,294,147, + 0,3660,3653,1,0,0,0,3660,3654,1,0,0,0,3660,3655,1,0,0,0,3660,3656, + 1,0,0,0,3660,3657,1,0,0,0,3660,3658,1,0,0,0,3660,3659,1,0,0,0,3661, + 293,1,0,0,0,3662,3668,5,332,0,0,3663,3668,5,334,0,0,3664,3668,3, + 300,150,0,3665,3668,5,335,0,0,3666,3668,5,333,0,0,3667,3662,1,0, + 0,0,3667,3663,1,0,0,0,3667,3664,1,0,0,0,3667,3665,1,0,0,0,3667,3666, + 1,0,0,0,3668,295,1,0,0,0,3669,3671,5,319,0,0,3670,3669,1,0,0,0,3670, + 3671,1,0,0,0,3671,3672,1,0,0,0,3672,3682,5,330,0,0,3673,3675,5,319, + 0,0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3682, + 5,331,0,0,3677,3679,5,319,0,0,3678,3677,1,0,0,0,3678,3679,1,0,0, + 0,3679,3680,1,0,0,0,3680,3682,5,329,0,0,3681,3670,1,0,0,0,3681,3674, + 1,0,0,0,3681,3678,1,0,0,0,3682,297,1,0,0,0,3683,3686,3,294,147,0, + 3684,3686,3,168,84,0,3685,3683,1,0,0,0,3685,3684,1,0,0,0,3686,299, + 1,0,0,0,3687,3688,7,34,0,0,3688,301,1,0,0,0,480,305,314,318,322, + 326,330,343,350,354,358,364,368,375,380,384,390,394,413,419,423, + 427,431,439,443,446,451,457,466,472,476,482,489,498,510,519,528, + 534,545,553,561,568,578,585,593,608,643,646,649,653,659,664,671, + 677,681,685,693,699,703,707,721,729,748,773,776,783,790,799,803, + 810,818,827,833,838,842,850,855,864,870,877,886,892,896,902,909, + 914,927,932,944,948,954,963,968,974,1002,1008,1010,1016,1022,1024, + 1032,1034,1044,1046,1061,1066,1073,1083,1089,1091,1099,1101,1126, + 1129,1133,1137,1155,1158,1169,1172,1188,1198,1203,1209,1212,1221, + 1233,1236,1246,1250,1256,1263,1268,1274,1278,1282,1288,1299,1308, + 1318,1321,1326,1328,1335,1341,1343,1347,1357,1363,1366,1368,1380, + 1387,1391,1394,1398,1402,1409,1418,1421,1425,1430,1434,1442,1445, + 1448,1455,1466,1469,1479,1482,1493,1498,1506,1509,1513,1517,1526, + 1535,1538,1547,1550,1553,1557,1568,1571,1574,1581,1584,1603,1607, + 1611,1615,1619,1623,1625,1636,1641,1650,1659,1662,1668,1680,1683, + 1692,1695,1703,1706,1709,1714,1717,1729,1732,1740,1745,1749,1751, + 1753,1768,1770,1781,1802,1812,1823,1827,1829,1837,1848,1859,1866, + 1879,1885,1911,1926,1931,1935,1945,1951,1957,1965,1970,1977,1979, + 1985,1991,1995,2000,2009,2014,2028,2038,2041,2050,2055,2060,2062, + 2071,2074,2082,2085,2092,2097,2108,2111,2115,2117,2125,2135,2141, + 2143,2150,2154,2156,2163,2167,2169,2171,2180,2191,2195,2205,2215, + 2219,2227,2229,2242,2250,2259,2265,2273,2279,2283,2288,2293,2299, + 2313,2315,2345,2356,2364,2369,2374,2387,2393,2396,2403,2408,2411, + 2414,2419,2426,2429,2438,2441,2445,2448,2451,2466,2469,2488,2492, + 2500,2504,2529,2532,2541,2547,2553,2559,2568,2571,2574,2593,2602, + 2624,2627,2637,2646,2652,2658,2669,2671,2676,2683,2685,2691,2697, + 2708,2717,2722,2727,2729,2731,2737,2739,2749,2758,2760,2766,2768, + 2771,2781,2783,2791,2799,2802,2807,2812,2824,2828,2832,2835,2837, + 2845,2848,2858,2866,2872,2874,2882,2892,2898,2912,2921,2928,2933, + 2940,2950,2955,2962,2988,2993,2995,3002,3006,3013,3017,3034,3049, + 3056,3065,3075,3080,3089,3094,3102,3110,3113,3119,3122,3129,3137, + 3140,3148,3151,3177,3188,3193,3200,3202,3215,3230,3234,3238,3242, + 3248,3252,3256,3260,3262,3272,3279,3288,3295,3302,3309,3318,3330, + 3333,3344,3347,3352,3362,3378,3392,3395,3404,3407,3419,3423,3438, + 3442,3448,3458,3470,3479,3500,3506,3513,3521,3526,3529,3535,3548, + 3561,3574,3587,3594,3601,3613,3622,3636,3643,3650,3660,3667,3670, + 3674,3678,3681,3685 + ]; + + private static __ATN: antlr.ATN; + public static get _ATN(): antlr.ATN { + if (!TrinoSqlParser.__ATN) { + TrinoSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(TrinoSqlParser._serializedATN); + } + + return TrinoSqlParser.__ATN; + } + + + private static readonly vocabulary = new antlr.Vocabulary(TrinoSqlParser.literalNames, TrinoSqlParser.symbolicNames, []); + + public override get vocabulary(): antlr.Vocabulary { + return TrinoSqlParser.vocabulary; + } + + private static readonly decisionsToDFA = TrinoSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); +} + +export class ProgramContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public EOF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EOF, 0)!; + } + public statements(): StatementsContext[]; + public statements(i: number): StatementsContext | null; + public statements(i?: number): StatementsContext[] | StatementsContext | null { + if (i === undefined) { + return this.getRuleContexts(StatementsContext); + } + + return this.getRuleContext(i, StatementsContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_program; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterProgram) { + listener.enterProgram(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitProgram) { + listener.exitProgram(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitProgram) { + return visitor.visitProgram(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatementsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public singleStatement(): SingleStatementContext { + return this.getRuleContext(0, SingleStatementContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_statements; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStatements) { + listener.enterStatements(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStatements) { + listener.exitStatements(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStatements) { + return visitor.visitStatements(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SingleStatementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_singleStatement; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSingleStatement) { + listener.enterSingleStatement(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSingleStatement) { + listener.exitSingleStatement(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSingleStatement) { + return visitor.visitSingleStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneExpression; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneExpression) { + listener.enterStandaloneExpression(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneExpression) { + listener.exitStandaloneExpression(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneExpression) { + return visitor.visitStandaloneExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandalonePathSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public pathSpecification(): PathSpecificationContext { + return this.getRuleContext(0, PathSpecificationContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standalonePathSpecification; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandalonePathSpecification) { + listener.enterStandalonePathSpecification(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandalonePathSpecification) { + listener.exitStandalonePathSpecification(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandalonePathSpecification) { + return visitor.visitStandalonePathSpecification(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneType; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneType) { + listener.enterStandaloneType(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneType) { + listener.exitStandaloneType(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneType) { + return visitor.visitStandaloneType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneRowPatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public rowPattern(): RowPatternContext { + return this.getRuleContext(0, RowPatternContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneRowPattern; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneRowPattern) { + listener.enterStandaloneRowPattern(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneRowPattern) { + listener.exitStandaloneRowPattern(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneRowPattern) { + return visitor.visitStandaloneRowPattern(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneFunctionSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public functionSpecification(): FunctionSpecificationContext { + return this.getRuleContext(0, FunctionSpecificationContext)!; + } + public EOF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EOF, 0)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneFunctionSpecification; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneFunctionSpecification) { + listener.enterStandaloneFunctionSpecification(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneFunctionSpecification) { + listener.exitStandaloneFunctionSpecification(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneFunctionSpecification) { + return visitor.visitStandaloneFunctionSpecification(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_statement; + } + public override copyFrom(ctx: StatementContext): void { + super.copyFrom(ctx); + } +} +export class ExplainContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXPLAIN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0)!; + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public explainOption(): ExplainOptionContext[]; + public explainOption(i: number): ExplainOptionContext | null; + public explainOption(i?: number): ExplainOptionContext[] | ExplainOptionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExplainOptionContext); + } + + return this.getRuleContext(i, ExplainOptionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExplain) { + listener.enterExplain(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExplain) { + listener.exitExplain(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExplain) { + return visitor.visitExplain(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class PrepareContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_PREPARE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPrepare) { + listener.enterPrepare(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPrepare) { + listener.exitPrepare(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPrepare) { + return visitor.visitPrepare(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropMaterializedViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropMaterializedView) { + listener.enterDropMaterializedView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropMaterializedView) { + listener.exitDropMaterializedView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropMaterializedView) { + return visitor.visitDropMaterializedView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetMaterializedViewPropertiesContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_PROPERTIES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; + } + public propertyAssignments(): PropertyAssignmentsContext { + return this.getRuleContext(0, PropertyAssignmentsContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetMaterializedViewProperties) { + listener.enterSetMaterializedViewProperties(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetMaterializedViewProperties) { + listener.exitSetMaterializedViewProperties(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetMaterializedViewProperties) { + return visitor.visitSetMaterializedViewProperties(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropNotNullConstraintContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode[]; + public KW_ALTER(i: number): antlr.TerminalNode | null; + public KW_ALTER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ALTER); + } else { + return this.getToken(TrinoSqlParser.KW_ALTER, i); + } + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_NOT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NOT, 0)!; + } + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropNotNullConstraint) { + listener.enterDropNotNullConstraint(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropNotNullConstraint) { + listener.exitDropNotNullConstraint(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropNotNullConstraint) { + return visitor.visitDropNotNullConstraint(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class UseContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_USE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_USE, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterUse) { + listener.enterUse(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitUse) { + listener.exitUse(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitUse) { + return visitor.visitUse(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DeallocateContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DEALLOCATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DEALLOCATE, 0)!; + } + public KW_PREPARE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDeallocate) { + listener.enterDeallocate(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDeallocate) { + listener.exitDeallocate(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDeallocate) { + return visitor.visitDeallocate(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameTableContext extends StatementContext { + public _from_?: TableRefContext; + public _to?: TableNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameTable) { + listener.enterRenameTable(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameTable) { + listener.exitRenameTable(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameTable) { + return visitor.visitRenameTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CommitContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COMMIT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMIT, 0)!; + } + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WORK, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCommit) { + listener.enterCommit(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCommit) { + listener.exitCommit(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCommit) { + return visitor.visitCommit(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateRoleContext extends StatementContext { + public _name?: IdentifierContext; + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + } + public grantor(): GrantorContext | null { + return this.getRuleContext(0, GrantorContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateRole) { + listener.enterCreateRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateRole) { + listener.exitCreateRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateRole) { + return visitor.visitCreateRole(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateFunctionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0)!; + } + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateFunction) { + listener.enterShowCreateFunction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateFunction) { + listener.exitShowCreateFunction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateFunction) { + return visitor.visitShowCreateFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropColumnContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } + } + public KW_EXISTS(): antlr.TerminalNode[]; + public KW_EXISTS(i: number): antlr.TerminalNode | null; + public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_EXISTS); + } else { + return this.getToken(TrinoSqlParser.KW_EXISTS, i); + } + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropColumn) { + listener.enterDropColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropColumn) { + listener.exitDropColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropColumn) { + return visitor.visitDropColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropView) { + listener.enterDropView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropView) { + listener.exitDropView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropView) { + return visitor.visitDropView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowTablesContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_TABLES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLES, 0)!; + } + public schemaRef(): SchemaRefContext | null { + return this.getRuleContext(0, SchemaRefContext); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowTables) { + listener.enterShowTables(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowTables) { + listener.exitShowTables(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowTables) { + return visitor.visitShowTables(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetViewAuthorizationContext extends StatementContext { + public _from_?: ViewRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetViewAuthorization) { + listener.enterSetViewAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetViewAuthorization) { + listener.exitSetViewAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetViewAuthorization) { + return visitor.visitSetViewAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowTableCommentContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowTableComment) { + listener.enterShowTableComment(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowTableComment) { + listener.exitShowTableComment(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowTableComment) { + return visitor.visitShowTableComment(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCatalogsContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CATALOGS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CATALOGS, 0)!; + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCatalogs) { + listener.enterShowCatalogs(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCatalogs) { + listener.exitShowCatalogs(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCatalogs) { + return visitor.visitShowCatalogs(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowRolesContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_ROLES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLES, 0)!; + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CURRENT, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowRoles) { + listener.enterShowRoles(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowRoles) { + listener.exitShowRoles(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowRoles) { + return visitor.visitShowRoles(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class MergeContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_MERGE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MERGE, 0)!; + } + public KW_INTO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_USING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_USING, 0)!; + } + public relation(): RelationContext { + return this.getRuleContext(0, RelationContext)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public mergeCase(): MergeCaseContext[]; + public mergeCase(i: number): MergeCaseContext | null; + public mergeCase(i?: number): MergeCaseContext[] | MergeCaseContext | null { + if (i === undefined) { + return this.getRuleContexts(MergeCaseContext); + } + + return this.getRuleContext(i, MergeCaseContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterMerge) { + listener.enterMerge(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitMerge) { + listener.exitMerge(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitMerge) { + return visitor.visitMerge(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameColumnContext extends StatementContext { + public _tableName?: TableRefContext; + public _from_?: ColumnRefContext; + public _to?: ColumnNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public columnNameCreate(): ColumnNameCreateContext { + return this.getRuleContext(0, ColumnNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } + } + public KW_EXISTS(): antlr.TerminalNode[]; + public KW_EXISTS(i: number): antlr.TerminalNode | null; + public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_EXISTS); + } else { + return this.getToken(TrinoSqlParser.KW_EXISTS, i); + } + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameColumn) { + listener.enterRenameColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameColumn) { + listener.exitRenameColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameColumn) { + return visitor.visitRenameColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CommentColumnContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCommentColumn) { + listener.enterCommentColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCommentColumn) { + listener.exitCommentColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCommentColumn) { + return visitor.visitCommentColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RevokeRolesContext extends StatementContext { + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_REVOKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public principal(): PrincipalContext[]; + public principal(i: number): PrincipalContext | null; + public principal(i?: number): PrincipalContext[] | PrincipalContext | null { + if (i === undefined) { + return this.getRuleContexts(PrincipalContext); + } + + return this.getRuleContext(i, PrincipalContext); + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOR, 0); + } + public KW_GRANTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRANTED, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public grantor(): GrantorContext | null { + return this.getRuleContext(0, GrantorContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRevokeRoles) { + listener.enterRevokeRoles(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRevokeRoles) { + listener.exitRevokeRoles(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRevokeRoles) { + return visitor.visitRevokeRoles(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateTable) { + listener.enterShowCreateTable(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateTable) { + listener.exitShowCreateTable(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateTable) { + return visitor.visitShowCreateTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowColumnsContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SHOW, 0); + } + public KW_COLUMNS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COLUMNS, 0); + } + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext)!; + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public KW_DESCRIBE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0); + } + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESC, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowColumns) { + listener.enterShowColumns(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowColumns) { + listener.exitShowColumns(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowColumns) { + return visitor.visitShowColumns(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowRoleGrantsContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public KW_GRANTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowRoleGrants) { + listener.enterShowRoleGrants(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowRoleGrants) { + listener.exitShowRoleGrants(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowRoleGrants) { + return visitor.visitShowRoleGrants(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class AddColumnContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnDefinitionContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_ADD(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ADD, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnDefinition(): ColumnDefinitionContext { + return this.getRuleContext(0, ColumnDefinitionContext)!; + } + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } + } + public KW_EXISTS(): antlr.TerminalNode[]; + public KW_EXISTS(i: number): antlr.TerminalNode | null; + public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_EXISTS); + } else { + return this.getToken(TrinoSqlParser.KW_EXISTS, i); + } + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterAddColumn) { + listener.enterAddColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitAddColumn) { + listener.exitAddColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitAddColumn) { + return visitor.visitAddColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DenyContext extends StatementContext { + public _grantee?: PrincipalContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DENY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DENY, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public grantObject(): GrantObjectContext { + return this.getRuleContext(0, GrantObjectContext)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public privilege(): PrivilegeContext[]; + public privilege(i: number): PrivilegeContext | null; + public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeContext); + } + + return this.getRuleContext(i, PrivilegeContext); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDeny) { + listener.enterDeny(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDeny) { + listener.exitDeny(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDeny) { + return visitor.visitDeny(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ResetSessionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_RESET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RESET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterResetSession) { + listener.enterResetSession(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitResetSession) { + listener.exitResetSession(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitResetSession) { + return visitor.visitResetSession(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class InsertIntoContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_INSERT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; + } + public KW_INTO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public columnList(): ColumnListContext | null { + return this.getRuleContext(0, ColumnListContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterInsertInto) { + listener.enterInsertInto(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitInsertInto) { + listener.exitInsertInto(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitInsertInto) { + return visitor.visitInsertInto(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowSessionContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowSession) { + listener.enterShowSession(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowSession) { + listener.exitShowSession(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowSession) { + return visitor.visitShowSession(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaNameCreate(): SchemaNameCreateContext { + return this.getRuleContext(0, SchemaNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); + } + public principal(): PrincipalContext | null { + return this.getRuleContext(0, PrincipalContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateSchema) { + listener.enterCreateSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateSchema) { + listener.exitCreateSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateSchema) { + return visitor.visitCreateSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetSessionAuthorizationContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public authorizationUser(): AuthorizationUserContext { + return this.getRuleContext(0, AuthorizationUserContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetSessionAuthorization) { + listener.enterSetSessionAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetSessionAuthorization) { + listener.exitSetSessionAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetSessionAuthorization) { + return visitor.visitSetSessionAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ExplainAnalyzeContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXPLAIN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0)!; + } + public KW_ANALYZE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ANALYZE, 0)!; + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public KW_VERBOSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VERBOSE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExplainAnalyze) { + listener.enterExplainAnalyze(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExplainAnalyze) { + listener.exitExplainAnalyze(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExplainAnalyze) { + return visitor.visitExplainAnalyze(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ExecuteContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_USING, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExecute) { + listener.enterExecute(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExecute) { + listener.exitExecute(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExecute) { + return visitor.visitExecute(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public schemaNameCreate(): SchemaNameCreateContext { + return this.getRuleContext(0, SchemaNameCreateContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameSchema) { + listener.enterRenameSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameSchema) { + listener.exitRenameSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameSchema) { + return visitor.visitRenameSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropRoleContext extends StatementContext { + public _name?: IdentifierContext; + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropRole) { + listener.enterDropRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropRole) { + listener.exitDropRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropRole) { + return visitor.visitDropRole(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class AnalyzeContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ANALYZE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ANALYZE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterAnalyze) { + listener.enterAnalyze(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitAnalyze) { + listener.exitAnalyze(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitAnalyze) { + return visitor.visitAnalyze(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetRoleContext extends StatementContext { + public _role?: IdentifierContext; + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_NONE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NONE, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetRole) { + listener.enterSetRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetRole) { + listener.exitSetRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetRole) { + return visitor.visitSetRole(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateFunctionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public functionSpecification(): FunctionSpecificationContext { + return this.getRuleContext(0, FunctionSpecificationContext)!; + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateFunction) { + listener.enterCreateFunction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateFunction) { + listener.exitCreateFunction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateFunction) { + return visitor.visitCreateFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropCatalogContext extends StatementContext { + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_CATALOG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CATALOG, 0)!; + } + public catalogRef(): CatalogRefContext { + return this.getRuleContext(0, CatalogRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CASCADE, 0); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropCatalog) { + listener.enterDropCatalog(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropCatalog) { + listener.exitDropCatalog(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropCatalog) { + return visitor.visitDropCatalog(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowGrantsContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_GRANTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); + } + public grantObject(): GrantObjectContext | null { + return this.getRuleContext(0, GrantObjectContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowGrants) { + listener.enterShowGrants(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowGrants) { + listener.exitShowGrants(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowGrants) { + return visitor.visitShowGrants(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CASCADE, 0); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropSchema) { + listener.enterDropSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropSchema) { + listener.exitDropSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropSchema) { + return visitor.visitDropSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ResetSessionAuthorizationContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_RESET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RESET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterResetSessionAuthorization) { + listener.enterResetSessionAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitResetSessionAuthorization) { + listener.exitResetSessionAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitResetSessionAuthorization) { + return visitor.visitResetSessionAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetTableAuthorizationContext extends StatementContext { + public _tableName?: TableRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetTableAuthorization) { + listener.enterSetTableAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetTableAuthorization) { + listener.exitSetTableAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetTableAuthorization) { + return visitor.visitSetTableAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateView) { + listener.enterShowCreateView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateView) { + listener.exitShowCreateView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateView) { + return visitor.visitShowCreateView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowColumnCommentContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowColumnComment) { + listener.enterShowColumnComment(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowColumnComment) { + listener.exitShowColumnComment(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowColumnComment) { + return visitor.visitShowColumnComment(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext)!; + } + public tableElement(): TableElementContext[]; + public tableElement(i: number): TableElementContext | null; + public tableElement(i?: number): TableElementContext[] | TableElementContext | null { + if (i === undefined) { + return this.getRuleContexts(TableElementContext); + } + + return this.getRuleContext(i, TableElementContext); + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateTable) { + listener.enterCreateTable(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateTable) { + listener.exitCreateTable(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateTable) { + return visitor.visitCreateTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class GrantPrivilegesContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_GRANT(): antlr.TerminalNode[]; + public KW_GRANT(i: number): antlr.TerminalNode | null; + public KW_GRANT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_GRANT); + } else { + return this.getToken(TrinoSqlParser.KW_GRANT, i); + } + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public grantObject(): GrantObjectContext { + return this.getRuleContext(0, GrantObjectContext)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterGrantPrivileges) { + listener.enterGrantPrivileges(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitGrantPrivileges) { + listener.exitGrantPrivileges(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitGrantPrivileges) { + return visitor.visitGrantPrivileges(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class StartTransactionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_START(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_START, 0)!; + } + public KW_TRANSACTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0)!; + } + public transactionMode(): TransactionModeContext[]; + public transactionMode(i: number): TransactionModeContext | null; + public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null { + if (i === undefined) { + return this.getRuleContexts(TransactionModeContext); + } + + return this.getRuleContext(i, TransactionModeContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStartTransaction) { + listener.enterStartTransaction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStartTransaction) { + listener.exitStartTransaction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStartTransaction) { + return visitor.visitStartTransaction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateTableAsSelectContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public rootQuery(): RootQueryContext | null { + return this.getRuleContext(0, RootQueryContext); + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public columnListCreate(): ColumnListCreateContext | null { + return this.getRuleContext(0, ColumnListCreateContext); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_WITH(): antlr.TerminalNode[]; + public KW_WITH(i: number): antlr.TerminalNode | null; + public KW_WITH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_WITH); + } else { + return this.getToken(TrinoSqlParser.KW_WITH, i); + } + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DATA, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NO, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateTableAsSelect) { + listener.enterCreateTableAsSelect(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateTableAsSelect) { + listener.exitCreateTableAsSelect(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateTableAsSelect) { + return visitor.visitCreateTableAsSelect(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CommentViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCommentView) { + listener.enterCommentView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCommentView) { + listener.exitCommentView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCommentView) { + return visitor.visitCommentView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowStatsContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_STATS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + } + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowStats) { + listener.enterShowStats(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowStats) { + listener.exitShowStats(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowStats) { + return visitor.visitShowStats(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateSchema) { + listener.enterShowCreateSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateSchema) { + listener.exitShowCreateSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateSchema) { + return visitor.visitShowCreateSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RevokePrivilegesContext extends StatementContext { + public _grantee?: PrincipalContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_REVOKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public grantObject(): GrantObjectContext { + return this.getRuleContext(0, GrantObjectContext)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + } + public KW_GRANT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRANT, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOR, 0); + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRevokePrivileges) { + listener.enterRevokePrivileges(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRevokePrivileges) { + listener.exitRevokePrivileges(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRevokePrivileges) { + return visitor.visitRevokePrivileges(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropFunctionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0)!; + } + public functionSignature(): FunctionSignatureContext { + return this.getRuleContext(0, FunctionSignatureContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropFunction) { + listener.enterDropFunction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropFunction) { + listener.exitDropFunction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropFunction) { + return visitor.visitDropFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class UpdateContext extends StatementContext { + public _where?: BooleanExpressionContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public updateAssignment(): UpdateAssignmentContext[]; + public updateAssignment(i: number): UpdateAssignmentContext | null; + public updateAssignment(i?: number): UpdateAssignmentContext[] | UpdateAssignmentContext | null { + if (i === undefined) { + return this.getRuleContexts(UpdateAssignmentContext); + } + + return this.getRuleContext(i, UpdateAssignmentContext); + } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterUpdate) { + listener.enterUpdate(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitUpdate) { + listener.exitUpdate(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitUpdate) { + return visitor.visitUpdate(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class TableExecuteContext extends StatementContext { + public _tableName?: TableRefContext; + public _procedureName?: FunctionNameContext; + public _where?: BooleanExpressionContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; + } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); + } + public callArgument(): CallArgumentContext[]; + public callArgument(i: number): CallArgumentContext | null; + public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { + if (i === undefined) { + return this.getRuleContexts(CallArgumentContext); + } + + return this.getRuleContext(i, CallArgumentContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterTableExecute) { + listener.enterTableExecute(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitTableExecute) { + listener.exitTableExecute(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitTableExecute) { + return visitor.visitTableExecute(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DeleteContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DELETE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDelete) { + listener.enterDelete(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDelete) { + listener.exitDelete(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDelete) { + return visitor.visitDelete(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DescribeInputContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DESCRIBE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; + } + public KW_INPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDescribeInput) { + listener.enterDescribeInput(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDescribeInput) { + listener.exitDescribeInput(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDescribeInput) { + return visitor.visitDescribeInput(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowStatsForQueryContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_STATS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowStatsForQuery) { + listener.enterShowStatsForQuery(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowStatsForQuery) { + listener.exitShowStatsForQuery(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowStatsForQuery) { + return visitor.visitShowStatsForQuery(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetColumnTypeContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode[]; + public KW_ALTER(i: number): antlr.TerminalNode | null; + public KW_ALTER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ALTER); + } else { + return this.getToken(TrinoSqlParser.KW_ALTER, i); + } + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_DATA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DATA, 0)!; + } + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TYPE, 0)!; + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetColumnType) { + listener.enterSetColumnType(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetColumnType) { + listener.exitSetColumnType(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetColumnType) { + return visitor.visitSetColumnType(this); + } else { + return visitor.visitChildren(this); } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } + } +} +export class StatementDefaultContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStatementDefault) { + listener.enterStatementDefault(this); } - finally { - this.exitRule(); + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStatementDefault) { + listener.exitStatementDefault(this); } - return localContext; } - public number_(): NumberContext { - let localContext = new NumberContext(this.context, this.state); - this.enterRule(localContext, 214, TrinoSqlParser.RULE_number); - let _la: number; - try { - this.state = 2602; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { - case 1: - localContext = new DecimalLiteralContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2591; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 256) { - { - this.state = 2590; - this.match(TrinoSqlParser.MINUS); - } - } - - this.state = 2593; - this.match(TrinoSqlParser.DECIMAL_VALUE); - } - break; - case 2: - localContext = new DoubleLiteralContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2595; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 256) { - { - this.state = 2594; - this.match(TrinoSqlParser.MINUS); - } - } - - this.state = 2597; - this.match(TrinoSqlParser.DOUBLE_VALUE); - } - break; - case 3: - localContext = new IntegerLiteralContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2599; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 256) { - { - this.state = 2598; - this.match(TrinoSqlParser.MINUS); - } - } - - this.state = 2601; - this.match(TrinoSqlParser.INTEGER_VALUE); - } - break; - } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStatementDefault) { + return visitor.visitStatementDefault(this); + } else { + return visitor.visitChildren(this); } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } + } +} +export class SetTimeZoneContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LOCAL, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetTimeZone) { + listener.enterSetTimeZone(this); } - finally { - this.exitRule(); + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetTimeZone) { + listener.exitSetTimeZone(this); } - return localContext; } - public nonReserved(): NonReservedContext { - let localContext = new NonReservedContext(this.context, this.state); - this.enterRule(localContext, 216, TrinoSqlParser.RULE_nonReserved); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2604; - _la = this.tokenStream.LA(1); - if(!(((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140014511) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetTimeZone) { + return visitor.visitSetTimeZone(this); + } else { + return visitor.visitChildren(this); } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } + } +} +export class TruncateTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_TRUNCATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterTruncateTable) { + listener.enterTruncateTable(this); } - finally { - this.exitRule(); + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitTruncateTable) { + listener.exitTruncateTable(this); } - return localContext; } - - public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 21: - return this.queryTerm_sempred(localContext as QueryTermContext, predIndex); - case 34: - return this.relation_sempred(localContext as RelationContext, predIndex); - case 52: - return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); - case 54: - return this.valueExpression_sempred(localContext as ValueExpressionContext, predIndex); - case 55: - return this.primaryExpression_sempred(localContext as PrimaryExpressionContext, predIndex); - case 66: - return this.type_sempred(localContext as TypeContext, predIndex); - case 76: - return this.rowPattern_sempred(localContext as RowPatternContext, predIndex); - case 100: - return this.columnName_sempred(localContext as ColumnNameContext, predIndex); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitTruncateTable) { + return visitor.visitTruncateTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateMaterializedViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_GRACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRACE, 0); + } + public KW_PERIOD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PERIOD, 0); + } + public interval(): IntervalContext | null { + return this.getRuleContext(0, IntervalContext); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateMaterializedView) { + listener.enterCreateMaterializedView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateMaterializedView) { + listener.exitCreateMaterializedView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateMaterializedView) { + return visitor.visitCreateMaterializedView(this); + } else { + return visitor.visitChildren(this); } - return true; } - private queryTerm_sempred(localContext: QueryTermContext | null, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this.precpred(this.context, 2); - case 1: - return this.precpred(this.context, 1); - } - return true; +} +export class SetSessionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - private relation_sempred(localContext: RelationContext | null, predIndex: number): boolean { - switch (predIndex) { - case 2: - return this.precpred(this.context, 2); + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetSession) { + listener.enterSetSession(this); } - return true; } - private booleanExpression_sempred(localContext: BooleanExpressionContext | null, predIndex: number): boolean { - switch (predIndex) { - case 3: - return this.precpred(this.context, 2); - case 4: - return this.precpred(this.context, 1); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetSession) { + listener.exitSetSession(this); } - return true; } - private valueExpression_sempred(localContext: ValueExpressionContext | null, predIndex: number): boolean { - switch (predIndex) { - case 5: - return this.precpred(this.context, 3); - case 6: - return this.precpred(this.context, 2); - case 7: - return this.precpred(this.context, 1); - case 8: - return this.precpred(this.context, 5); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetSession) { + return visitor.visitSetSession(this); + } else { + return visitor.visitChildren(this); } - return true; } - private primaryExpression_sempred(localContext: PrimaryExpressionContext | null, predIndex: number): boolean { - switch (predIndex) { - case 9: - return this.precpred(this.context, 17); - case 10: - return this.precpred(this.context, 15); +} +export class CreateViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SECURITY, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINER, 0); + } + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INVOKER, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateView) { + listener.enterCreateView(this); } - return true; } - private type_sempred(localContext: TypeContext | null, predIndex: number): boolean { - switch (predIndex) { - case 11: - return this.precpred(this.context, 2); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateView) { + listener.exitCreateView(this); } - return true; } - private rowPattern_sempred(localContext: RowPatternContext | null, predIndex: number): boolean { - switch (predIndex) { - case 12: - return this.precpred(this.context, 2); - case 13: - return this.precpred(this.context, 1); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateView) { + return visitor.visitCreateView(this); + } else { + return visitor.visitChildren(this); } - return true; } - private columnName_sempred(localContext: ColumnNameContext | null, predIndex: number): boolean { - switch (predIndex) { - case 14: - return this.shouldMatchEmpty(); +} +export class RenameMaterializedViewContext extends StatementContext { + public _from_?: ViewRefContext; + public _to?: ViewNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameMaterializedView) { + listener.enterRenameMaterializedView(this); } - return true; } - - public static readonly _serializedATN: number[] = [ - 4,1,277,2607,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, - 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, - 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, - 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, - 26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2, - 33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7, - 39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, - 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, - 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2, - 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7, - 65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2, - 72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7, - 78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2, - 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, - 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, - 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103, - 2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,1,0, - 5,0,220,8,0,10,0,12,0,223,9,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,2,3, - 2,233,8,2,1,3,1,3,3,3,237,8,3,1,4,1,4,3,4,241,8,4,1,5,1,5,3,5,245, - 8,5,1,6,1,6,3,6,249,8,6,1,7,1,7,3,7,253,8,7,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,3,8,263,8,8,1,8,1,8,1,8,3,8,268,8,8,1,8,1,8,3,8,272, - 8,8,1,8,1,8,1,8,1,8,3,8,278,8,8,1,8,1,8,3,8,282,8,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 3,8,303,8,8,1,8,1,8,3,8,307,8,8,1,8,1,8,3,8,311,8,8,1,8,1,8,3,8, - 315,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,323,8,8,1,8,1,8,3,8,327,8,8, - 1,8,3,8,330,8,8,1,8,1,8,1,8,1,8,1,8,3,8,337,8,8,1,8,1,8,1,8,1,8, - 1,8,5,8,344,8,8,10,8,12,8,347,9,8,1,8,1,8,1,8,3,8,352,8,8,1,8,1, - 8,3,8,356,8,8,1,8,1,8,1,8,1,8,3,8,362,8,8,1,8,1,8,1,8,1,8,1,8,3, - 8,369,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,378,8,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,3,8,387,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,3,8,401,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,410,8,8,1, - 8,1,8,1,8,1,8,3,8,416,8,8,1,8,1,8,1,8,1,8,1,8,3,8,423,8,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,433,8,8,1,8,1,8,1,8,1,8,1,8,3,8,440, - 8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,448,8,8,1,8,1,8,1,8,1,8,1,8,1,8, - 3,8,456,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,483,8,8,10,8, - 12,8,486,9,8,3,8,488,8,8,1,8,3,8,491,8,8,1,8,1,8,3,8,495,8,8,1,8, - 1,8,1,8,1,8,3,8,501,8,8,1,8,1,8,1,8,3,8,506,8,8,1,8,1,8,1,8,1,8, - 1,8,3,8,513,8,8,1,8,1,8,1,8,3,8,518,8,8,1,8,1,8,3,8,522,8,8,1,8, - 1,8,1,8,1,8,1,8,1,8,3,8,530,8,8,1,8,1,8,1,8,1,8,3,8,536,8,8,1,8, - 1,8,3,8,540,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 3,8,554,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,562,8,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,581,8,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,5,8,604,8,8,10,8,12,8,607,9,8,3,8,609,8,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,619,8,8,1,8,1,8,3,8,623,8,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,634,8,8,10,8,12,8,637,9,8, - 1,8,1,8,1,8,3,8,642,8,8,1,8,1,8,1,8,3,8,647,8,8,1,8,1,8,3,8,651, - 8,8,1,8,1,8,1,8,1,8,3,8,657,8,8,1,8,1,8,1,8,1,8,1,8,5,8,664,8,8, - 10,8,12,8,667,9,8,1,8,1,8,1,8,3,8,672,8,8,1,8,1,8,3,8,676,8,8,1, - 8,1,8,1,8,1,8,1,8,3,8,683,8,8,1,8,1,8,3,8,687,8,8,1,8,1,8,1,8,1, - 8,5,8,693,8,8,10,8,12,8,696,9,8,1,8,1,8,3,8,700,8,8,1,8,1,8,3,8, - 704,8,8,1,8,1,8,3,8,708,8,8,1,8,3,8,711,8,8,1,8,1,8,1,8,1,8,1,8, - 3,8,718,8,8,1,8,1,8,1,8,1,8,5,8,724,8,8,10,8,12,8,727,9,8,1,8,1, - 8,3,8,731,8,8,1,8,1,8,3,8,735,8,8,1,8,1,8,3,8,739,8,8,1,8,3,8,742, - 8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,751,8,8,1,8,1,8,1,8,5,8,756, - 8,8,10,8,12,8,759,9,8,1,8,1,8,3,8,763,8,8,1,8,1,8,3,8,767,8,8,1, - 8,1,8,3,8,771,8,8,1,8,3,8,774,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,782, - 8,8,1,8,3,8,785,8,8,1,8,1,8,3,8,789,8,8,1,8,3,8,792,8,8,1,8,1,8, - 1,8,1,8,5,8,798,8,8,10,8,12,8,801,9,8,1,8,1,8,3,8,805,8,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,3,8,829,8,8,1,8,1,8,1,8,1,8,3,8,835,8,8,3,8,837, - 8,8,1,8,1,8,1,8,1,8,3,8,843,8,8,1,8,1,8,1,8,1,8,3,8,849,8,8,3,8, - 851,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,859,8,8,3,8,861,8,8,1,8,1,8, - 1,8,1,8,3,8,867,8,8,1,8,1,8,1,8,1,8,3,8,873,8,8,3,8,875,8,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,890,8,8,1,8, - 1,8,1,8,3,8,895,8,8,1,8,1,8,1,8,1,8,1,8,3,8,902,8,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,914,8,8,3,8,916,8,8,1,8,1,8,1,8, - 1,8,1,8,1,8,3,8,924,8,8,3,8,926,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,942,8,8,10,8,12,8,945,9,8,3,8,947, - 8,8,1,8,1,8,3,8,951,8,8,1,8,1,8,3,8,955,8,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,971,8,8,10,8,12,8,974,9, - 8,3,8,976,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,3,8,992,8,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,1000,8,8,10,8,12,8, - 1003,9,8,1,8,1,8,3,8,1007,8,8,1,8,1,8,1,8,1,8,3,8,1013,8,8,1,8,3, - 8,1016,8,8,1,8,1,8,1,8,1,8,1,8,4,8,1023,8,8,11,8,12,8,1024,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1037,8,8,1,9,3,9,1040,8,9, - 1,9,1,9,1,10,1,10,3,10,1046,8,10,1,10,1,10,1,10,5,10,1051,8,10,10, - 10,12,10,1054,9,10,1,11,1,11,3,11,1058,8,11,1,12,1,12,1,12,1,12, - 3,12,1064,8,12,1,12,1,12,3,12,1068,8,12,1,12,1,12,3,12,1072,8,12, - 1,13,1,13,1,13,1,13,3,13,1078,8,13,1,14,1,14,1,14,1,14,1,15,1,15, - 1,15,5,15,1087,8,15,10,15,12,15,1090,9,15,1,16,1,16,1,16,1,16,1, - 17,1,17,3,17,1098,8,17,1,18,1,18,1,18,1,18,1,18,1,18,5,18,1106,8, - 18,10,18,12,18,1109,9,18,3,18,1111,8,18,1,18,1,18,1,18,3,18,1116, - 8,18,3,18,1118,8,18,1,18,1,18,1,18,1,18,1,18,3,18,1125,8,18,1,18, - 1,18,1,18,1,18,3,18,1131,8,18,3,18,1133,8,18,1,19,1,19,3,19,1137, - 8,19,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1147,8,21,1,21, - 1,21,1,21,1,21,3,21,1153,8,21,1,21,5,21,1156,8,21,10,21,12,21,1159, - 9,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,5,22,1168,8,22,10,22,12, - 22,1171,9,22,1,22,1,22,1,22,1,22,3,22,1177,8,22,1,23,1,23,3,23,1181, - 8,23,1,23,3,23,1184,8,23,1,23,1,23,3,23,1188,8,23,1,24,1,24,3,24, - 1192,8,24,1,24,1,24,1,24,5,24,1197,8,24,10,24,12,24,1200,9,24,1, - 24,1,24,1,24,1,24,5,24,1206,8,24,10,24,12,24,1209,9,24,3,24,1211, - 8,24,1,24,1,24,3,24,1215,8,24,1,24,1,24,1,24,3,24,1220,8,24,1,24, - 1,24,3,24,1224,8,24,1,24,1,24,1,24,1,24,5,24,1230,8,24,10,24,12, - 24,1233,9,24,3,24,1235,8,24,1,25,3,25,1238,8,25,1,25,1,25,1,25,5, - 25,1243,8,25,10,25,12,25,1246,9,25,1,26,1,26,1,26,1,26,1,26,1,26, - 5,26,1254,8,26,10,26,12,26,1257,9,26,3,26,1259,8,26,1,26,1,26,1, - 26,1,26,1,26,1,26,5,26,1267,8,26,10,26,12,26,1270,9,26,3,26,1272, - 8,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,5,26,1281,8,26,10,26,12, - 26,1284,9,26,1,26,1,26,3,26,1288,8,26,1,27,1,27,1,27,1,27,5,27,1294, - 8,27,10,27,12,27,1297,9,27,3,27,1299,8,27,1,27,1,27,3,27,1303,8, - 27,1,28,1,28,3,28,1307,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,30,3, - 30,1316,8,30,1,30,1,30,1,30,1,30,1,30,5,30,1323,8,30,10,30,12,30, - 1326,9,30,3,30,1328,8,30,1,30,1,30,1,30,1,30,1,30,5,30,1335,8,30, - 10,30,12,30,1338,9,30,3,30,1340,8,30,1,30,3,30,1343,8,30,1,31,1, - 31,3,31,1347,8,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,33,1,33,3, - 33,1358,8,33,1,33,3,33,1361,8,33,1,33,3,33,1364,8,33,1,33,1,33,1, - 33,1,33,1,33,3,33,1371,8,33,1,33,3,33,1374,8,33,1,34,1,34,1,34,1, - 34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1, - 34,3,34,1393,8,34,5,34,1395,8,34,10,34,12,34,1398,9,34,1,35,3,35, - 1401,8,35,1,35,1,35,3,35,1405,8,35,1,35,1,35,3,35,1409,8,35,1,35, - 1,35,3,35,1413,8,35,3,35,1415,8,35,1,36,1,36,1,36,1,36,1,36,1,36, - 1,36,5,36,1424,8,36,10,36,12,36,1427,9,36,1,36,1,36,3,36,1431,8, - 36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,1440,8,37,1,38,1,38,1, - 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,5,39,1452,8,39,10,39,12,39, - 1455,9,39,3,39,1457,8,39,1,39,1,39,1,39,1,39,1,39,5,39,1464,8,39, - 10,39,12,39,1467,9,39,3,39,1469,8,39,1,39,1,39,1,39,1,39,5,39,1475, - 8,39,10,39,12,39,1478,9,39,3,39,1480,8,39,1,39,3,39,1483,8,39,1, - 39,1,39,1,39,3,39,1488,8,39,1,39,3,39,1491,8,39,1,39,1,39,1,39,1, - 39,1,39,1,39,1,39,1,39,5,39,1501,8,39,10,39,12,39,1504,9,39,3,39, - 1506,8,39,1,39,1,39,1,39,1,39,5,39,1512,8,39,10,39,12,39,1515,9, - 39,1,39,1,39,3,39,1519,8,39,1,39,1,39,3,39,1523,8,39,3,39,1525,8, - 39,3,39,1527,8,39,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1, - 41,1,41,1,41,1,41,3,41,1542,8,41,3,41,1544,8,41,1,42,1,42,1,42,1, - 42,1,42,1,42,1,42,1,42,1,42,3,42,1555,8,42,1,43,1,43,1,43,1,43,1, - 43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1, - 43,1,43,3,43,1576,8,43,1,44,1,44,1,44,1,44,1,44,1,44,5,44,1584,8, - 44,10,44,12,44,1587,9,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46, - 3,46,1597,8,46,1,46,1,46,3,46,1601,8,46,3,46,1603,8,46,1,47,1,47, - 1,47,1,47,5,47,1609,8,47,10,47,12,47,1612,9,47,1,47,1,47,1,48,1, - 48,1,48,1,48,5,48,1620,8,48,10,48,12,48,1623,9,48,1,48,1,48,1,49, - 1,49,1,49,1,49,5,49,1631,8,49,10,49,12,49,1634,9,49,1,49,1,49,1, - 50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,5,50,1648,8,50,10, - 50,12,50,1651,9,50,1,50,1,50,1,50,3,50,1656,8,50,1,50,1,50,1,50, - 1,50,1,50,1,50,1,50,1,50,1,50,3,50,1667,8,50,1,51,1,51,1,52,1,52, - 1,52,3,52,1674,8,52,1,52,1,52,3,52,1678,8,52,1,52,1,52,1,52,1,52, - 1,52,1,52,5,52,1686,8,52,10,52,12,52,1689,9,52,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1701,8,53,1,53,1,53,1,53,1, - 53,1,53,1,53,3,53,1709,8,53,1,53,1,53,1,53,1,53,1,53,5,53,1716,8, - 53,10,53,12,53,1719,9,53,1,53,1,53,1,53,3,53,1724,8,53,1,53,1,53, - 1,53,1,53,1,53,1,53,3,53,1732,8,53,1,53,1,53,1,53,1,53,3,53,1738, - 8,53,1,53,1,53,3,53,1742,8,53,1,53,1,53,1,53,3,53,1747,8,53,1,53, - 1,53,1,53,3,53,1752,8,53,1,54,1,54,1,54,1,54,3,54,1758,8,54,1,54, - 1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,5,54,1772, - 8,54,10,54,12,54,1775,9,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,4,55,1802,8,55,11,55,12,55,1803,1,55,1,55, - 1,55,1,55,1,55,1,55,1,55,5,55,1813,8,55,10,55,12,55,1816,9,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1825,8,55,1,55,3,55,1828,8, - 55,1,55,3,55,1831,8,55,1,55,1,55,1,55,3,55,1836,8,55,1,55,1,55,1, - 55,5,55,1841,8,55,10,55,12,55,1844,9,55,3,55,1846,8,55,1,55,1,55, - 1,55,1,55,1,55,5,55,1853,8,55,10,55,12,55,1856,9,55,3,55,1858,8, - 55,1,55,1,55,3,55,1862,8,55,1,55,3,55,1865,8,55,1,55,3,55,1868,8, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1881, - 8,55,10,55,12,55,1884,9,55,3,55,1886,8,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,4,55,1903,8, - 55,11,55,12,55,1904,1,55,1,55,3,55,1909,8,55,1,55,1,55,1,55,1,55, - 4,55,1915,8,55,11,55,12,55,1916,1,55,1,55,3,55,1921,8,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1944,8,55,10,55,12,55,1947, - 9,55,3,55,1949,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1958, - 8,55,1,55,1,55,1,55,1,55,3,55,1964,8,55,1,55,1,55,1,55,1,55,3,55, - 1970,8,55,1,55,1,55,1,55,1,55,3,55,1976,8,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1989,8,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,3,55,1998,8,55,1,55,1,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55, - 2018,8,55,10,55,12,55,2021,9,55,3,55,2023,8,55,1,55,3,55,2026,8, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,2036,8,55,10,55, - 12,55,2039,9,55,1,56,1,56,1,57,1,57,1,57,1,57,3,57,2047,8,57,1,58, - 1,58,1,58,1,58,3,58,2053,8,58,3,58,2055,8,58,1,59,1,59,1,59,1,59, - 1,59,1,59,3,59,2063,8,59,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63, - 3,63,2073,8,63,1,63,1,63,1,63,1,63,3,63,2079,8,63,1,64,1,64,1,65, - 1,65,1,66,1,66,1,66,1,66,1,66,1,66,5,66,2091,8,66,10,66,12,66,2094, - 9,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,2102,8,66,1,66,1,66,1,66, - 1,66,1,66,3,66,2109,8,66,1,66,1,66,1,66,3,66,2114,8,66,1,66,1,66, - 1,66,1,66,1,66,3,66,2121,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,3,66,2131,8,66,1,66,1,66,1,66,3,66,2136,8,66,1,66,1,66,1,66, - 1,66,1,66,3,66,2143,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,5,66,2167,8,66,10,66,12,66,2170,9,66,1,66,1,66,3,66,2174,8, - 66,3,66,2176,8,66,1,66,1,66,1,66,1,66,1,66,3,66,2183,8,66,5,66,2185, - 8,66,10,66,12,66,2188,9,66,1,67,1,67,1,67,1,67,3,67,2194,8,67,1, - 68,1,68,3,68,2198,8,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1, - 70,1,70,1,70,1,71,1,71,1,71,1,71,3,71,2215,8,71,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71,2228,8,71,10,71,12,71, - 2231,9,71,1,71,1,71,1,71,1,71,3,71,2237,8,71,1,71,1,71,1,71,1,71, - 1,71,1,71,1,71,3,71,2246,8,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71, - 2254,8,71,10,71,12,71,2257,9,71,1,71,1,71,3,71,2261,8,71,1,71,1, - 71,1,71,1,71,1,71,5,71,2268,8,71,10,71,12,71,2271,9,71,1,71,1,71, - 3,71,2275,8,71,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2283,8,72,1,73, - 1,73,1,73,1,73,5,73,2289,8,73,10,73,12,73,2292,9,73,3,73,2294,8, - 73,1,73,1,73,1,73,1,73,3,73,2300,8,73,1,73,3,73,2303,8,73,1,73,1, - 73,1,73,1,73,1,73,3,73,2310,8,73,1,73,1,73,1,73,1,73,5,73,2316,8, - 73,10,73,12,73,2319,9,73,3,73,2321,8,73,1,73,1,73,1,73,1,73,5,73, - 2327,8,73,10,73,12,73,2330,9,73,3,73,2332,8,73,1,74,1,74,1,74,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,2358,8,74,1,75,1,75,1, - 75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,2369,8,75,1,76,1,76,1,76,3, - 76,2374,8,76,1,76,1,76,1,76,1,76,1,76,5,76,2381,8,76,10,76,12,76, - 2384,9,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,5,77,2394,8,77, - 10,77,12,77,2397,9,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,3,77,2411,8,77,1,78,1,78,3,78,2415,8,78,1,78,1, - 78,3,78,2419,8,78,1,78,1,78,3,78,2423,8,78,1,78,1,78,1,78,1,78,3, - 78,2429,8,78,1,78,1,78,3,78,2433,8,78,1,78,1,78,3,78,2437,8,78,1, - 78,1,78,3,78,2441,8,78,3,78,2443,8,78,1,79,1,79,1,79,1,79,1,80,1, - 80,1,80,1,80,3,80,2453,8,80,1,81,1,81,1,81,1,81,1,81,3,81,2460,8, - 81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,3,82,2469,8,82,1,83,1,83,1, - 83,1,83,1,83,3,83,2476,8,83,1,84,1,84,1,84,1,84,1,84,3,84,2483,8, - 84,1,85,1,85,1,85,5,85,2488,8,85,10,85,12,85,2491,9,85,1,86,1,86, - 1,87,1,87,3,87,2497,8,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1,91, - 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,3,92,2518, - 8,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,3,93, - 2531,8,93,1,94,1,94,1,95,1,95,1,96,1,96,1,96,1,96,1,96,3,96,2542, - 8,96,1,97,1,97,1,98,1,98,1,99,1,99,1,100,1,100,3,100,2552,8,100, - 1,101,1,101,1,102,1,102,1,102,5,102,2559,8,102,10,102,12,102,2562, - 9,102,1,103,1,103,1,103,3,103,2567,8,103,1,104,1,104,1,104,1,104, - 1,104,3,104,2574,8,104,1,105,1,105,1,105,5,105,2579,8,105,10,105, - 12,105,2582,9,105,1,106,1,106,1,106,1,106,1,106,3,106,2589,8,106, - 1,107,3,107,2592,8,107,1,107,1,107,3,107,2596,8,107,1,107,1,107, - 3,107,2600,8,107,1,107,3,107,2603,8,107,1,108,1,108,1,108,0,7,42, - 68,104,108,110,132,152,109,0,2,4,6,8,10,12,14,16,18,20,22,24,26, - 28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70, - 72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110, - 112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142, - 144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174, - 176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206, - 208,210,212,214,216,0,27,2,0,34,34,185,185,2,0,61,61,112,112,2,0, - 88,88,103,103,2,0,75,75,104,104,1,0,192,193,2,0,84,84,139,139,2, - 0,261,261,265,265,2,0,74,74,229,229,2,0,27,27,63,63,2,0,84,84,118, - 118,2,0,20,20,66,66,2,0,30,30,211,211,2,0,105,105,199,199,1,0,255, - 256,1,0,257,259,2,0,83,83,194,194,1,0,249,254,3,0,20,20,24,24,206, - 206,2,0,80,80,223,223,5,0,58,58,100,100,136,137,197,197,247,247, - 1,0,140,143,2,0,85,85,171,171,3,0,95,95,117,117,215,215,4,0,67,67, - 113,113,127,127,236,236,2,0,155,155,246,246,4,0,62,62,108,108,200, - 200,232,232,49,0,17,20,22,22,24,25,27,30,33,34,37,42,47,47,56,59, - 61,61,63,63,65,65,67,68,71,71,75,75,78,78,81,85,87,87,90,95,98,98, - 100,102,104,105,107,107,110,110,112,113,115,115,117,119,121,121, - 123,124,127,137,139,145,149,152,154,156,159,159,161,172,174,177, - 179,186,188,190,192,199,201,211,213,215,217,222,224,225,227,228, - 230,230,232,234,236,236,238,239,242,242,244,248,3008,0,221,1,0,0, - 0,2,226,1,0,0,0,4,232,1,0,0,0,6,234,1,0,0,0,8,238,1,0,0,0,10,242, - 1,0,0,0,12,246,1,0,0,0,14,250,1,0,0,0,16,1036,1,0,0,0,18,1039,1, - 0,0,0,20,1043,1,0,0,0,22,1057,1,0,0,0,24,1059,1,0,0,0,26,1073,1, - 0,0,0,28,1079,1,0,0,0,30,1083,1,0,0,0,32,1091,1,0,0,0,34,1097,1, - 0,0,0,36,1099,1,0,0,0,38,1136,1,0,0,0,40,1138,1,0,0,0,42,1140,1, - 0,0,0,44,1176,1,0,0,0,46,1180,1,0,0,0,48,1189,1,0,0,0,50,1237,1, - 0,0,0,52,1287,1,0,0,0,54,1302,1,0,0,0,56,1306,1,0,0,0,58,1308,1, - 0,0,0,60,1315,1,0,0,0,62,1344,1,0,0,0,64,1353,1,0,0,0,66,1373,1, - 0,0,0,68,1375,1,0,0,0,70,1414,1,0,0,0,72,1430,1,0,0,0,74,1432,1, - 0,0,0,76,1441,1,0,0,0,78,1443,1,0,0,0,80,1528,1,0,0,0,82,1543,1, - 0,0,0,84,1554,1,0,0,0,86,1575,1,0,0,0,88,1577,1,0,0,0,90,1590,1, - 0,0,0,92,1594,1,0,0,0,94,1604,1,0,0,0,96,1615,1,0,0,0,98,1626,1, - 0,0,0,100,1666,1,0,0,0,102,1668,1,0,0,0,104,1677,1,0,0,0,106,1751, - 1,0,0,0,108,1757,1,0,0,0,110,2025,1,0,0,0,112,2040,1,0,0,0,114,2046, - 1,0,0,0,116,2054,1,0,0,0,118,2062,1,0,0,0,120,2064,1,0,0,0,122,2066, - 1,0,0,0,124,2068,1,0,0,0,126,2070,1,0,0,0,128,2080,1,0,0,0,130,2082, - 1,0,0,0,132,2175,1,0,0,0,134,2193,1,0,0,0,136,2197,1,0,0,0,138,2199, - 1,0,0,0,140,2204,1,0,0,0,142,2274,1,0,0,0,144,2276,1,0,0,0,146,2293, - 1,0,0,0,148,2357,1,0,0,0,150,2368,1,0,0,0,152,2370,1,0,0,0,154,2410, - 1,0,0,0,156,2442,1,0,0,0,158,2444,1,0,0,0,160,2452,1,0,0,0,162,2459, - 1,0,0,0,164,2468,1,0,0,0,166,2475,1,0,0,0,168,2482,1,0,0,0,170,2484, - 1,0,0,0,172,2492,1,0,0,0,174,2496,1,0,0,0,176,2498,1,0,0,0,178,2500, - 1,0,0,0,180,2502,1,0,0,0,182,2504,1,0,0,0,184,2517,1,0,0,0,186,2530, - 1,0,0,0,188,2532,1,0,0,0,190,2534,1,0,0,0,192,2541,1,0,0,0,194,2543, - 1,0,0,0,196,2545,1,0,0,0,198,2547,1,0,0,0,200,2551,1,0,0,0,202,2553, - 1,0,0,0,204,2555,1,0,0,0,206,2566,1,0,0,0,208,2573,1,0,0,0,210,2575, - 1,0,0,0,212,2588,1,0,0,0,214,2602,1,0,0,0,216,2604,1,0,0,0,218,220, - 3,2,1,0,219,218,1,0,0,0,220,223,1,0,0,0,221,219,1,0,0,0,221,222, - 1,0,0,0,222,224,1,0,0,0,223,221,1,0,0,0,224,225,5,0,0,1,225,1,1, - 0,0,0,226,227,3,6,3,0,227,3,1,0,0,0,228,233,3,8,4,0,229,233,3,10, - 5,0,230,233,3,12,6,0,231,233,3,14,7,0,232,228,1,0,0,0,232,229,1, - 0,0,0,232,230,1,0,0,0,232,231,1,0,0,0,233,5,1,0,0,0,234,236,3,16, - 8,0,235,237,5,272,0,0,236,235,1,0,0,0,236,237,1,0,0,0,237,7,1,0, - 0,0,238,240,3,102,51,0,239,241,5,272,0,0,240,239,1,0,0,0,240,241, - 1,0,0,0,241,9,1,0,0,0,242,244,3,170,85,0,243,245,5,272,0,0,244,243, - 1,0,0,0,244,245,1,0,0,0,245,11,1,0,0,0,246,248,3,132,66,0,247,249, - 5,272,0,0,248,247,1,0,0,0,248,249,1,0,0,0,249,13,1,0,0,0,250,252, - 3,152,76,0,251,253,5,272,0,0,252,251,1,0,0,0,252,253,1,0,0,0,253, - 15,1,0,0,0,254,1037,3,18,9,0,255,256,5,233,0,0,256,1037,3,188,94, - 0,257,258,5,44,0,0,258,262,5,195,0,0,259,260,5,101,0,0,260,261,5, - 147,0,0,261,263,5,77,0,0,262,259,1,0,0,0,262,263,1,0,0,0,263,264, - 1,0,0,0,264,267,3,190,95,0,265,266,5,29,0,0,266,268,3,208,104,0, - 267,265,1,0,0,0,267,268,1,0,0,0,268,271,1,0,0,0,269,270,5,243,0, - 0,270,272,3,28,14,0,271,269,1,0,0,0,271,272,1,0,0,0,272,1037,1,0, - 0,0,273,274,5,69,0,0,274,277,5,195,0,0,275,276,5,101,0,0,276,278, - 5,77,0,0,277,275,1,0,0,0,277,278,1,0,0,0,278,279,1,0,0,0,279,281, - 3,188,94,0,280,282,7,0,0,0,281,280,1,0,0,0,281,282,1,0,0,0,282,1037, - 1,0,0,0,283,284,5,21,0,0,284,285,5,195,0,0,285,286,3,188,94,0,286, - 287,5,180,0,0,287,288,5,220,0,0,288,289,3,190,95,0,289,1037,1,0, - 0,0,290,291,5,21,0,0,291,292,5,195,0,0,292,293,3,188,94,0,293,294, - 5,203,0,0,294,295,5,29,0,0,295,296,3,208,104,0,296,1037,1,0,0,0, - 297,298,5,44,0,0,298,302,5,212,0,0,299,300,5,101,0,0,300,301,5,147, - 0,0,301,303,5,77,0,0,302,299,1,0,0,0,302,303,1,0,0,0,303,304,1,0, - 0,0,304,306,3,178,89,0,305,307,3,94,47,0,306,305,1,0,0,0,306,307, - 1,0,0,0,307,310,1,0,0,0,308,309,5,40,0,0,309,311,3,116,58,0,310, - 308,1,0,0,0,310,311,1,0,0,0,311,314,1,0,0,0,312,313,5,243,0,0,313, - 315,3,28,14,0,314,312,1,0,0,0,314,315,1,0,0,0,315,316,1,0,0,0,316, - 322,5,26,0,0,317,323,3,18,9,0,318,319,5,1,0,0,319,320,3,18,9,0,320, - 321,5,2,0,0,321,323,1,0,0,0,322,317,1,0,0,0,322,318,1,0,0,0,323, - 329,1,0,0,0,324,326,5,243,0,0,325,327,5,144,0,0,326,325,1,0,0,0, - 326,327,1,0,0,0,327,328,1,0,0,0,328,330,5,56,0,0,329,324,1,0,0,0, - 329,330,1,0,0,0,330,1037,1,0,0,0,331,332,5,44,0,0,332,336,5,212, - 0,0,333,334,5,101,0,0,334,335,5,147,0,0,335,337,5,77,0,0,336,333, - 1,0,0,0,336,337,1,0,0,0,337,338,1,0,0,0,338,339,3,178,89,0,339,340, - 5,1,0,0,340,345,3,22,11,0,341,342,5,3,0,0,342,344,3,22,11,0,343, - 341,1,0,0,0,344,347,1,0,0,0,345,343,1,0,0,0,345,346,1,0,0,0,346, - 348,1,0,0,0,347,345,1,0,0,0,348,351,5,2,0,0,349,350,5,40,0,0,350, - 352,3,116,58,0,351,349,1,0,0,0,351,352,1,0,0,0,352,355,1,0,0,0,353, - 354,5,243,0,0,354,356,3,28,14,0,355,353,1,0,0,0,355,356,1,0,0,0, - 356,1037,1,0,0,0,357,358,5,69,0,0,358,361,5,212,0,0,359,360,5,101, - 0,0,360,362,5,77,0,0,361,359,1,0,0,0,361,362,1,0,0,0,362,363,1,0, - 0,0,363,1037,3,176,88,0,364,365,5,108,0,0,365,366,5,111,0,0,366, - 368,3,176,88,0,367,369,3,96,48,0,368,367,1,0,0,0,368,369,1,0,0,0, - 369,370,1,0,0,0,370,371,3,18,9,0,371,1037,1,0,0,0,372,373,5,62,0, - 0,373,374,5,88,0,0,374,377,3,176,88,0,375,376,5,241,0,0,376,378, - 3,104,52,0,377,375,1,0,0,0,377,378,1,0,0,0,378,1037,1,0,0,0,379, - 380,5,222,0,0,380,381,5,212,0,0,381,1037,3,176,88,0,382,383,5,21, - 0,0,383,386,5,212,0,0,384,385,5,101,0,0,385,387,5,77,0,0,386,384, - 1,0,0,0,386,387,1,0,0,0,387,388,1,0,0,0,388,389,3,176,88,0,389,390, - 5,180,0,0,390,391,5,220,0,0,391,392,3,178,89,0,392,1037,1,0,0,0, - 393,394,5,40,0,0,394,395,5,153,0,0,395,396,5,212,0,0,396,397,3,176, - 88,0,397,400,5,114,0,0,398,401,3,116,58,0,399,401,5,148,0,0,400, - 398,1,0,0,0,400,399,1,0,0,0,401,1037,1,0,0,0,402,403,5,40,0,0,403, - 404,5,153,0,0,404,405,5,38,0,0,405,406,3,200,100,0,406,409,5,114, - 0,0,407,410,3,116,58,0,408,410,5,148,0,0,409,407,1,0,0,0,409,408, - 1,0,0,0,410,1037,1,0,0,0,411,412,5,21,0,0,412,415,5,212,0,0,413, - 414,5,101,0,0,414,416,5,77,0,0,415,413,1,0,0,0,415,416,1,0,0,0,416, - 417,1,0,0,0,417,418,3,176,88,0,418,419,5,180,0,0,419,422,5,38,0, - 0,420,421,5,101,0,0,421,423,5,77,0,0,422,420,1,0,0,0,422,423,1,0, - 0,0,423,424,1,0,0,0,424,425,3,200,100,0,425,426,5,220,0,0,426,427, - 3,202,101,0,427,1037,1,0,0,0,428,429,5,21,0,0,429,432,5,212,0,0, - 430,431,5,101,0,0,431,433,5,77,0,0,432,430,1,0,0,0,432,433,1,0,0, - 0,433,434,1,0,0,0,434,435,3,176,88,0,435,436,5,69,0,0,436,439,5, - 38,0,0,437,438,5,101,0,0,438,440,5,77,0,0,439,437,1,0,0,0,439,440, - 1,0,0,0,440,441,1,0,0,0,441,442,3,200,100,0,442,1037,1,0,0,0,443, - 444,5,21,0,0,444,447,5,212,0,0,445,446,5,101,0,0,446,448,5,77,0, - 0,447,445,1,0,0,0,447,448,1,0,0,0,448,449,1,0,0,0,449,450,3,176, - 88,0,450,451,5,17,0,0,451,455,5,38,0,0,452,453,5,101,0,0,453,454, - 5,147,0,0,454,456,5,77,0,0,455,452,1,0,0,0,455,456,1,0,0,0,456,457, - 1,0,0,0,457,458,3,24,12,0,458,1037,1,0,0,0,459,460,5,21,0,0,460, - 461,5,212,0,0,461,462,3,176,88,0,462,463,5,203,0,0,463,464,5,29, - 0,0,464,465,3,208,104,0,465,1037,1,0,0,0,466,467,5,21,0,0,467,468, - 5,212,0,0,468,469,3,176,88,0,469,470,5,203,0,0,470,471,5,175,0,0, - 471,472,3,30,15,0,472,1037,1,0,0,0,473,474,5,21,0,0,474,475,5,212, - 0,0,475,476,3,176,88,0,476,477,5,76,0,0,477,490,3,212,106,0,478, - 487,5,1,0,0,479,484,3,166,83,0,480,481,5,3,0,0,481,483,3,166,83, - 0,482,480,1,0,0,0,483,486,1,0,0,0,484,482,1,0,0,0,484,485,1,0,0, - 0,485,488,1,0,0,0,486,484,1,0,0,0,487,479,1,0,0,0,487,488,1,0,0, - 0,488,489,1,0,0,0,489,491,5,2,0,0,490,478,1,0,0,0,490,491,1,0,0, - 0,491,494,1,0,0,0,492,493,5,241,0,0,493,495,3,104,52,0,494,492,1, - 0,0,0,494,495,1,0,0,0,495,1037,1,0,0,0,496,497,5,22,0,0,497,500, - 3,176,88,0,498,499,5,243,0,0,499,501,3,28,14,0,500,498,1,0,0,0,500, - 501,1,0,0,0,501,1037,1,0,0,0,502,505,5,44,0,0,503,504,5,157,0,0, - 504,506,5,182,0,0,505,503,1,0,0,0,505,506,1,0,0,0,506,507,1,0,0, - 0,507,508,5,133,0,0,508,512,5,239,0,0,509,510,5,101,0,0,510,511, - 5,147,0,0,511,513,5,77,0,0,512,509,1,0,0,0,512,513,1,0,0,0,513,514, - 1,0,0,0,514,517,3,182,91,0,515,516,5,40,0,0,516,518,3,116,58,0,517, - 515,1,0,0,0,517,518,1,0,0,0,518,521,1,0,0,0,519,520,5,243,0,0,520, - 522,3,28,14,0,521,519,1,0,0,0,521,522,1,0,0,0,522,523,1,0,0,0,523, - 524,5,26,0,0,524,525,3,18,9,0,525,1037,1,0,0,0,526,529,5,44,0,0, - 527,528,5,157,0,0,528,530,5,182,0,0,529,527,1,0,0,0,529,530,1,0, - 0,0,530,531,1,0,0,0,531,532,5,239,0,0,532,535,3,182,91,0,533,534, - 5,40,0,0,534,536,3,116,58,0,535,533,1,0,0,0,535,536,1,0,0,0,536, - 539,1,0,0,0,537,538,5,198,0,0,538,540,7,1,0,0,539,537,1,0,0,0,539, - 540,1,0,0,0,540,541,1,0,0,0,541,542,5,26,0,0,542,543,3,18,9,0,543, - 1037,1,0,0,0,544,545,5,179,0,0,545,546,5,133,0,0,546,547,5,239,0, - 0,547,1037,3,180,90,0,548,549,5,69,0,0,549,550,5,133,0,0,550,553, - 5,239,0,0,551,552,5,101,0,0,552,554,5,77,0,0,553,551,1,0,0,0,553, - 554,1,0,0,0,554,555,1,0,0,0,555,1037,3,180,90,0,556,557,5,21,0,0, - 557,558,5,133,0,0,558,561,5,239,0,0,559,560,5,101,0,0,560,562,5, - 77,0,0,561,559,1,0,0,0,561,562,1,0,0,0,562,563,1,0,0,0,563,564,3, - 180,90,0,564,565,5,180,0,0,565,566,5,220,0,0,566,567,3,182,91,0, - 567,1037,1,0,0,0,568,569,5,21,0,0,569,570,5,133,0,0,570,571,5,239, - 0,0,571,572,3,180,90,0,572,573,5,203,0,0,573,574,5,175,0,0,574,575, - 3,30,15,0,575,1037,1,0,0,0,576,577,5,69,0,0,577,580,5,239,0,0,578, - 579,5,101,0,0,579,581,5,77,0,0,580,578,1,0,0,0,580,581,1,0,0,0,581, - 582,1,0,0,0,582,1037,3,180,90,0,583,584,5,21,0,0,584,585,5,239,0, - 0,585,586,3,180,90,0,586,587,5,180,0,0,587,588,5,220,0,0,588,589, - 3,182,91,0,589,1037,1,0,0,0,590,591,5,21,0,0,591,592,5,239,0,0,592, - 593,3,180,90,0,593,594,5,203,0,0,594,595,5,29,0,0,595,596,3,208, - 104,0,596,1037,1,0,0,0,597,598,5,33,0,0,598,599,3,198,99,0,599,608, - 5,1,0,0,600,605,3,166,83,0,601,602,5,3,0,0,602,604,3,166,83,0,603, - 601,1,0,0,0,604,607,1,0,0,0,605,603,1,0,0,0,605,606,1,0,0,0,606, - 609,1,0,0,0,607,605,1,0,0,0,608,600,1,0,0,0,608,609,1,0,0,0,609, - 610,1,0,0,0,610,611,5,2,0,0,611,1037,1,0,0,0,612,613,5,44,0,0,613, - 614,5,188,0,0,614,618,3,212,106,0,615,616,5,243,0,0,616,617,5,18, - 0,0,617,619,3,206,103,0,618,615,1,0,0,0,618,619,1,0,0,0,619,622, - 1,0,0,0,620,621,5,103,0,0,621,623,3,194,97,0,622,620,1,0,0,0,622, - 623,1,0,0,0,623,1037,1,0,0,0,624,625,5,69,0,0,625,626,5,188,0,0, - 626,1037,3,212,106,0,627,628,5,91,0,0,628,629,3,210,105,0,629,630, - 5,220,0,0,630,635,3,208,104,0,631,632,5,3,0,0,632,634,3,208,104, - 0,633,631,1,0,0,0,634,637,1,0,0,0,635,633,1,0,0,0,635,636,1,0,0, - 0,636,641,1,0,0,0,637,635,1,0,0,0,638,639,5,243,0,0,639,640,5,18, - 0,0,640,642,5,156,0,0,641,638,1,0,0,0,641,642,1,0,0,0,642,646,1, - 0,0,0,643,644,5,92,0,0,644,645,5,32,0,0,645,647,3,206,103,0,646, - 643,1,0,0,0,646,647,1,0,0,0,647,650,1,0,0,0,648,649,5,103,0,0,649, - 651,3,194,97,0,650,648,1,0,0,0,650,651,1,0,0,0,651,1037,1,0,0,0, - 652,656,5,186,0,0,653,654,5,18,0,0,654,655,5,156,0,0,655,657,5,86, - 0,0,656,653,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,659,3,210, - 105,0,659,660,5,88,0,0,660,665,3,208,104,0,661,662,5,3,0,0,662,664, - 3,208,104,0,663,661,1,0,0,0,664,667,1,0,0,0,665,663,1,0,0,0,665, - 666,1,0,0,0,666,671,1,0,0,0,667,665,1,0,0,0,668,669,5,92,0,0,669, - 670,5,32,0,0,670,672,3,206,103,0,671,668,1,0,0,0,671,672,1,0,0,0, - 672,675,1,0,0,0,673,674,5,103,0,0,674,676,3,194,97,0,675,673,1,0, - 0,0,675,676,1,0,0,0,676,1037,1,0,0,0,677,678,5,203,0,0,678,682,5, - 188,0,0,679,683,5,20,0,0,680,683,5,145,0,0,681,683,3,212,106,0,682, - 679,1,0,0,0,682,680,1,0,0,0,682,681,1,0,0,0,683,686,1,0,0,0,684, - 685,5,103,0,0,685,687,3,194,97,0,686,684,1,0,0,0,686,687,1,0,0,0, - 687,1037,1,0,0,0,688,699,5,91,0,0,689,694,3,172,86,0,690,691,5,3, - 0,0,691,693,3,172,86,0,692,690,1,0,0,0,693,696,1,0,0,0,694,692,1, - 0,0,0,694,695,1,0,0,0,695,700,1,0,0,0,696,694,1,0,0,0,697,698,5, - 20,0,0,698,700,5,174,0,0,699,689,1,0,0,0,699,697,1,0,0,0,700,701, - 1,0,0,0,701,710,5,153,0,0,702,704,5,195,0,0,703,702,1,0,0,0,703, - 704,1,0,0,0,704,705,1,0,0,0,705,711,3,188,94,0,706,708,5,212,0,0, - 707,706,1,0,0,0,707,708,1,0,0,0,708,709,1,0,0,0,709,711,3,176,88, - 0,710,703,1,0,0,0,710,707,1,0,0,0,710,711,1,0,0,0,711,712,1,0,0, - 0,712,713,5,220,0,0,713,717,3,208,104,0,714,715,5,243,0,0,715,716, - 5,91,0,0,716,718,5,156,0,0,717,714,1,0,0,0,717,718,1,0,0,0,718,1037, - 1,0,0,0,719,730,5,94,0,0,720,725,3,172,86,0,721,722,5,3,0,0,722, - 724,3,172,86,0,723,721,1,0,0,0,724,727,1,0,0,0,725,723,1,0,0,0,725, - 726,1,0,0,0,726,731,1,0,0,0,727,725,1,0,0,0,728,729,5,20,0,0,729, - 731,5,174,0,0,730,720,1,0,0,0,730,728,1,0,0,0,731,732,1,0,0,0,732, - 741,5,153,0,0,733,735,5,195,0,0,734,733,1,0,0,0,734,735,1,0,0,0, - 735,736,1,0,0,0,736,742,3,188,94,0,737,739,5,212,0,0,738,737,1,0, - 0,0,738,739,1,0,0,0,739,740,1,0,0,0,740,742,3,176,88,0,741,734,1, - 0,0,0,741,738,1,0,0,0,742,743,1,0,0,0,743,744,5,220,0,0,744,745, - 3,208,104,0,745,1037,1,0,0,0,746,750,5,186,0,0,747,748,5,91,0,0, - 748,749,5,156,0,0,749,751,5,86,0,0,750,747,1,0,0,0,750,751,1,0,0, - 0,751,762,1,0,0,0,752,757,3,172,86,0,753,754,5,3,0,0,754,756,3,172, - 86,0,755,753,1,0,0,0,756,759,1,0,0,0,757,755,1,0,0,0,757,758,1,0, - 0,0,758,763,1,0,0,0,759,757,1,0,0,0,760,761,5,20,0,0,761,763,5,174, - 0,0,762,752,1,0,0,0,762,760,1,0,0,0,763,764,1,0,0,0,764,773,5,153, - 0,0,765,767,5,195,0,0,766,765,1,0,0,0,766,767,1,0,0,0,767,768,1, - 0,0,0,768,774,3,188,94,0,769,771,5,212,0,0,770,769,1,0,0,0,770,771, - 1,0,0,0,771,772,1,0,0,0,772,774,3,176,88,0,773,766,1,0,0,0,773,770, - 1,0,0,0,773,774,1,0,0,0,774,775,1,0,0,0,775,776,5,88,0,0,776,1037, - 3,208,104,0,777,778,5,205,0,0,778,784,5,93,0,0,779,781,5,153,0,0, - 780,782,5,212,0,0,781,780,1,0,0,0,781,782,1,0,0,0,782,783,1,0,0, - 0,783,785,3,176,88,0,784,779,1,0,0,0,784,785,1,0,0,0,785,1037,1, - 0,0,0,786,788,5,78,0,0,787,789,5,22,0,0,788,787,1,0,0,0,788,789, - 1,0,0,0,789,791,1,0,0,0,790,792,5,238,0,0,791,790,1,0,0,0,791,792, - 1,0,0,0,792,804,1,0,0,0,793,794,5,1,0,0,794,799,3,160,80,0,795,796, - 5,3,0,0,796,798,3,160,80,0,797,795,1,0,0,0,798,801,1,0,0,0,799,797, - 1,0,0,0,799,800,1,0,0,0,800,802,1,0,0,0,801,799,1,0,0,0,802,803, - 5,2,0,0,803,805,1,0,0,0,804,793,1,0,0,0,804,805,1,0,0,0,805,806, - 1,0,0,0,806,1037,3,16,8,0,807,808,5,205,0,0,808,809,5,44,0,0,809, - 810,5,212,0,0,810,1037,3,176,88,0,811,812,5,205,0,0,812,813,5,44, - 0,0,813,814,5,195,0,0,814,1037,3,188,94,0,815,816,5,205,0,0,816, - 817,5,44,0,0,817,818,5,239,0,0,818,1037,3,180,90,0,819,820,5,205, - 0,0,820,821,5,44,0,0,821,822,5,133,0,0,822,823,5,239,0,0,823,1037, - 3,180,90,0,824,825,5,205,0,0,825,828,5,213,0,0,826,827,7,2,0,0,827, - 829,3,188,94,0,828,826,1,0,0,0,828,829,1,0,0,0,829,836,1,0,0,0,830, - 831,5,122,0,0,831,834,3,116,58,0,832,833,5,73,0,0,833,835,3,116, - 58,0,834,832,1,0,0,0,834,835,1,0,0,0,835,837,1,0,0,0,836,830,1,0, - 0,0,836,837,1,0,0,0,837,1037,1,0,0,0,838,839,5,205,0,0,839,842,5, - 196,0,0,840,841,7,2,0,0,841,843,3,194,97,0,842,840,1,0,0,0,842,843, - 1,0,0,0,843,850,1,0,0,0,844,845,5,122,0,0,845,848,3,116,58,0,846, - 847,5,73,0,0,847,849,3,116,58,0,848,846,1,0,0,0,848,849,1,0,0,0, - 849,851,1,0,0,0,850,844,1,0,0,0,850,851,1,0,0,0,851,1037,1,0,0,0, - 852,853,5,205,0,0,853,860,5,37,0,0,854,855,5,122,0,0,855,858,3,116, - 58,0,856,857,5,73,0,0,857,859,3,116,58,0,858,856,1,0,0,0,858,859, - 1,0,0,0,859,861,1,0,0,0,860,854,1,0,0,0,860,861,1,0,0,0,861,1037, - 1,0,0,0,862,863,5,205,0,0,863,864,5,39,0,0,864,866,7,2,0,0,865,867, - 3,174,87,0,866,865,1,0,0,0,866,867,1,0,0,0,867,874,1,0,0,0,868,869, - 5,122,0,0,869,872,3,116,58,0,870,871,5,73,0,0,871,873,3,116,58,0, - 872,870,1,0,0,0,872,873,1,0,0,0,873,875,1,0,0,0,874,868,1,0,0,0, - 874,875,1,0,0,0,875,1037,1,0,0,0,876,877,5,205,0,0,877,878,5,208, - 0,0,878,879,5,86,0,0,879,1037,3,176,88,0,880,881,5,205,0,0,881,882, - 5,208,0,0,882,883,5,86,0,0,883,884,5,1,0,0,884,885,3,18,9,0,885, - 886,5,2,0,0,886,1037,1,0,0,0,887,889,5,205,0,0,888,890,5,47,0,0, - 889,888,1,0,0,0,889,890,1,0,0,0,890,891,1,0,0,0,891,894,5,189,0, - 0,892,893,7,2,0,0,893,895,3,212,106,0,894,892,1,0,0,0,894,895,1, - 0,0,0,895,1037,1,0,0,0,896,897,5,205,0,0,897,898,5,188,0,0,898,901, - 5,93,0,0,899,900,7,2,0,0,900,902,3,212,106,0,901,899,1,0,0,0,901, - 902,1,0,0,0,902,1037,1,0,0,0,903,904,5,64,0,0,904,1037,3,174,87, - 0,905,906,5,63,0,0,906,1037,3,174,87,0,907,908,5,205,0,0,908,915, - 5,90,0,0,909,910,5,122,0,0,910,913,3,116,58,0,911,912,5,73,0,0,912, - 914,3,116,58,0,913,911,1,0,0,0,913,914,1,0,0,0,914,916,1,0,0,0,915, - 909,1,0,0,0,915,916,1,0,0,0,916,1037,1,0,0,0,917,918,5,205,0,0,918, - 925,5,202,0,0,919,920,5,122,0,0,920,923,3,116,58,0,921,922,5,73, - 0,0,922,924,3,116,58,0,923,921,1,0,0,0,923,924,1,0,0,0,924,926,1, - 0,0,0,925,919,1,0,0,0,925,926,1,0,0,0,926,1037,1,0,0,0,927,928,5, - 203,0,0,928,929,5,202,0,0,929,930,3,204,102,0,930,931,5,249,0,0, - 931,932,3,102,51,0,932,1037,1,0,0,0,933,934,5,183,0,0,934,935,5, - 202,0,0,935,1037,3,204,102,0,936,937,5,207,0,0,937,946,5,221,0,0, - 938,943,3,162,81,0,939,940,5,3,0,0,940,942,3,162,81,0,941,939,1, - 0,0,0,942,945,1,0,0,0,943,941,1,0,0,0,943,944,1,0,0,0,944,947,1, - 0,0,0,945,943,1,0,0,0,946,938,1,0,0,0,946,947,1,0,0,0,947,1037,1, - 0,0,0,948,950,5,41,0,0,949,951,5,245,0,0,950,949,1,0,0,0,950,951, - 1,0,0,0,951,1037,1,0,0,0,952,954,5,190,0,0,953,955,5,245,0,0,954, - 953,1,0,0,0,954,955,1,0,0,0,955,1037,1,0,0,0,956,957,5,173,0,0,957, - 958,3,212,106,0,958,959,5,88,0,0,959,960,3,16,8,0,960,1037,1,0,0, - 0,961,962,5,60,0,0,962,963,5,173,0,0,963,1037,3,212,106,0,964,965, - 5,76,0,0,965,975,3,212,106,0,966,967,5,235,0,0,967,972,3,102,51, - 0,968,969,5,3,0,0,969,971,3,102,51,0,970,968,1,0,0,0,971,974,1,0, - 0,0,972,970,1,0,0,0,972,973,1,0,0,0,973,976,1,0,0,0,974,972,1,0, - 0,0,975,966,1,0,0,0,975,976,1,0,0,0,976,1037,1,0,0,0,977,978,5,64, - 0,0,978,979,5,107,0,0,979,1037,3,212,106,0,980,981,5,64,0,0,981, - 982,5,161,0,0,982,1037,3,212,106,0,983,984,5,203,0,0,984,985,5,166, - 0,0,985,1037,3,170,85,0,986,987,5,203,0,0,987,988,5,218,0,0,988, - 991,5,248,0,0,989,992,5,124,0,0,990,992,3,102,51,0,991,989,1,0,0, - 0,991,990,1,0,0,0,992,1037,1,0,0,0,993,994,5,232,0,0,994,995,3,176, - 88,0,995,996,5,203,0,0,996,1001,3,158,79,0,997,998,5,3,0,0,998,1000, - 3,158,79,0,999,997,1,0,0,0,1000,1003,1,0,0,0,1001,999,1,0,0,0,1001, - 1002,1,0,0,0,1002,1006,1,0,0,0,1003,1001,1,0,0,0,1004,1005,5,241, - 0,0,1005,1007,3,104,52,0,1006,1004,1,0,0,0,1006,1007,1,0,0,0,1007, - 1037,1,0,0,0,1008,1009,5,135,0,0,1009,1010,5,111,0,0,1010,1015,3, - 176,88,0,1011,1013,5,26,0,0,1012,1011,1,0,0,0,1012,1013,1,0,0,0, - 1013,1014,1,0,0,0,1014,1016,3,212,106,0,1015,1012,1,0,0,0,1015,1016, - 1,0,0,0,1016,1017,1,0,0,0,1017,1018,5,235,0,0,1018,1019,3,68,34, - 0,1019,1020,5,153,0,0,1020,1022,3,102,51,0,1021,1023,3,142,71,0, - 1022,1021,1,0,0,0,1023,1024,1,0,0,0,1024,1022,1,0,0,0,1024,1025, - 1,0,0,0,1025,1037,1,0,0,0,1026,1027,5,205,0,0,1027,1028,5,40,0,0, - 1028,1029,5,153,0,0,1029,1030,5,212,0,0,1030,1037,3,176,88,0,1031, - 1032,5,205,0,0,1032,1033,5,40,0,0,1033,1034,5,153,0,0,1034,1035, - 5,38,0,0,1035,1037,3,200,100,0,1036,254,1,0,0,0,1036,255,1,0,0,0, - 1036,257,1,0,0,0,1036,273,1,0,0,0,1036,283,1,0,0,0,1036,290,1,0, - 0,0,1036,297,1,0,0,0,1036,331,1,0,0,0,1036,357,1,0,0,0,1036,364, - 1,0,0,0,1036,372,1,0,0,0,1036,379,1,0,0,0,1036,382,1,0,0,0,1036, - 393,1,0,0,0,1036,402,1,0,0,0,1036,411,1,0,0,0,1036,428,1,0,0,0,1036, - 443,1,0,0,0,1036,459,1,0,0,0,1036,466,1,0,0,0,1036,473,1,0,0,0,1036, - 496,1,0,0,0,1036,502,1,0,0,0,1036,526,1,0,0,0,1036,544,1,0,0,0,1036, - 548,1,0,0,0,1036,556,1,0,0,0,1036,568,1,0,0,0,1036,576,1,0,0,0,1036, - 583,1,0,0,0,1036,590,1,0,0,0,1036,597,1,0,0,0,1036,612,1,0,0,0,1036, - 624,1,0,0,0,1036,627,1,0,0,0,1036,652,1,0,0,0,1036,677,1,0,0,0,1036, - 688,1,0,0,0,1036,719,1,0,0,0,1036,746,1,0,0,0,1036,777,1,0,0,0,1036, - 786,1,0,0,0,1036,807,1,0,0,0,1036,811,1,0,0,0,1036,815,1,0,0,0,1036, - 819,1,0,0,0,1036,824,1,0,0,0,1036,838,1,0,0,0,1036,852,1,0,0,0,1036, - 862,1,0,0,0,1036,876,1,0,0,0,1036,880,1,0,0,0,1036,887,1,0,0,0,1036, - 896,1,0,0,0,1036,903,1,0,0,0,1036,905,1,0,0,0,1036,907,1,0,0,0,1036, - 917,1,0,0,0,1036,927,1,0,0,0,1036,933,1,0,0,0,1036,936,1,0,0,0,1036, - 948,1,0,0,0,1036,952,1,0,0,0,1036,956,1,0,0,0,1036,961,1,0,0,0,1036, - 964,1,0,0,0,1036,977,1,0,0,0,1036,980,1,0,0,0,1036,983,1,0,0,0,1036, - 986,1,0,0,0,1036,993,1,0,0,0,1036,1008,1,0,0,0,1036,1026,1,0,0,0, - 1036,1031,1,0,0,0,1037,17,1,0,0,0,1038,1040,3,20,10,0,1039,1038, - 1,0,0,0,1039,1040,1,0,0,0,1040,1041,1,0,0,0,1041,1042,3,36,18,0, - 1042,19,1,0,0,0,1043,1045,5,243,0,0,1044,1046,5,178,0,0,1045,1044, - 1,0,0,0,1045,1046,1,0,0,0,1046,1047,1,0,0,0,1047,1052,3,62,31,0, - 1048,1049,5,3,0,0,1049,1051,3,62,31,0,1050,1048,1,0,0,0,1051,1054, - 1,0,0,0,1052,1050,1,0,0,0,1052,1053,1,0,0,0,1053,21,1,0,0,0,1054, - 1052,1,0,0,0,1055,1058,3,24,12,0,1056,1058,3,26,13,0,1057,1055,1, - 0,0,0,1057,1056,1,0,0,0,1058,23,1,0,0,0,1059,1060,3,202,101,0,1060, - 1063,3,132,66,0,1061,1062,5,147,0,0,1062,1064,5,148,0,0,1063,1061, - 1,0,0,0,1063,1064,1,0,0,0,1064,1067,1,0,0,0,1065,1066,5,40,0,0,1066, - 1068,3,116,58,0,1067,1065,1,0,0,0,1067,1068,1,0,0,0,1068,1071,1, - 0,0,0,1069,1070,5,243,0,0,1070,1072,3,28,14,0,1071,1069,1,0,0,0, - 1071,1072,1,0,0,0,1072,25,1,0,0,0,1073,1074,5,122,0,0,1074,1077, - 3,176,88,0,1075,1076,7,3,0,0,1076,1078,5,175,0,0,1077,1075,1,0,0, - 0,1077,1078,1,0,0,0,1078,27,1,0,0,0,1079,1080,5,1,0,0,1080,1081, - 3,30,15,0,1081,1082,5,2,0,0,1082,29,1,0,0,0,1083,1088,3,32,16,0, - 1084,1085,5,3,0,0,1085,1087,3,32,16,0,1086,1084,1,0,0,0,1087,1090, - 1,0,0,0,1088,1086,1,0,0,0,1088,1089,1,0,0,0,1089,31,1,0,0,0,1090, - 1088,1,0,0,0,1091,1092,3,212,106,0,1092,1093,5,249,0,0,1093,1094, - 3,34,17,0,1094,33,1,0,0,0,1095,1098,5,59,0,0,1096,1098,3,102,51, - 0,1097,1095,1,0,0,0,1097,1096,1,0,0,0,1098,35,1,0,0,0,1099,1110, - 3,42,21,0,1100,1101,5,158,0,0,1101,1102,5,32,0,0,1102,1107,3,46, - 23,0,1103,1104,5,3,0,0,1104,1106,3,46,23,0,1105,1103,1,0,0,0,1106, - 1109,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,1111,1,0,0, - 0,1109,1107,1,0,0,0,1110,1100,1,0,0,0,1110,1111,1,0,0,0,1111,1117, - 1,0,0,0,1112,1113,5,151,0,0,1113,1115,3,40,20,0,1114,1116,7,4,0, - 0,1115,1114,1,0,0,0,1115,1116,1,0,0,0,1116,1118,1,0,0,0,1117,1112, - 1,0,0,0,1117,1118,1,0,0,0,1118,1132,1,0,0,0,1119,1120,5,123,0,0, - 1120,1133,3,38,19,0,1121,1122,5,81,0,0,1122,1124,7,5,0,0,1123,1125, - 3,40,20,0,1124,1123,1,0,0,0,1124,1125,1,0,0,0,1125,1126,1,0,0,0, - 1126,1130,7,4,0,0,1127,1131,5,155,0,0,1128,1129,5,243,0,0,1129,1131, - 5,217,0,0,1130,1127,1,0,0,0,1130,1128,1,0,0,0,1131,1133,1,0,0,0, - 1132,1119,1,0,0,0,1132,1121,1,0,0,0,1132,1133,1,0,0,0,1133,37,1, - 0,0,0,1134,1137,5,20,0,0,1135,1137,3,40,20,0,1136,1134,1,0,0,0,1136, - 1135,1,0,0,0,1137,39,1,0,0,0,1138,1139,7,6,0,0,1139,41,1,0,0,0,1140, - 1141,6,21,-1,0,1141,1142,3,44,22,0,1142,1157,1,0,0,0,1143,1144,10, - 2,0,0,1144,1146,5,109,0,0,1145,1147,3,64,32,0,1146,1145,1,0,0,0, - 1146,1147,1,0,0,0,1147,1148,1,0,0,0,1148,1156,3,42,21,3,1149,1150, - 10,1,0,0,1150,1152,7,7,0,0,1151,1153,3,64,32,0,1152,1151,1,0,0,0, - 1152,1153,1,0,0,0,1153,1154,1,0,0,0,1154,1156,3,42,21,2,1155,1143, - 1,0,0,0,1155,1149,1,0,0,0,1156,1159,1,0,0,0,1157,1155,1,0,0,0,1157, - 1158,1,0,0,0,1158,43,1,0,0,0,1159,1157,1,0,0,0,1160,1177,3,48,24, - 0,1161,1162,5,212,0,0,1162,1177,3,176,88,0,1163,1164,5,237,0,0,1164, - 1169,3,102,51,0,1165,1166,5,3,0,0,1166,1168,3,102,51,0,1167,1165, - 1,0,0,0,1168,1171,1,0,0,0,1169,1167,1,0,0,0,1169,1170,1,0,0,0,1170, - 1177,1,0,0,0,1171,1169,1,0,0,0,1172,1173,5,1,0,0,1173,1174,3,36, - 18,0,1174,1175,5,2,0,0,1175,1177,1,0,0,0,1176,1160,1,0,0,0,1176, - 1161,1,0,0,0,1176,1163,1,0,0,0,1176,1172,1,0,0,0,1177,45,1,0,0,0, - 1178,1181,3,200,100,0,1179,1181,3,102,51,0,1180,1178,1,0,0,0,1180, - 1179,1,0,0,0,1181,1183,1,0,0,0,1182,1184,7,8,0,0,1183,1182,1,0,0, - 0,1183,1184,1,0,0,0,1184,1187,1,0,0,0,1185,1186,5,150,0,0,1186,1188, - 7,9,0,0,1187,1185,1,0,0,0,1187,1188,1,0,0,0,1188,47,1,0,0,0,1189, - 1191,5,200,0,0,1190,1192,3,64,32,0,1191,1190,1,0,0,0,1191,1192,1, - 0,0,0,1192,1193,1,0,0,0,1193,1198,3,66,33,0,1194,1195,5,3,0,0,1195, - 1197,3,66,33,0,1196,1194,1,0,0,0,1197,1200,1,0,0,0,1198,1196,1,0, - 0,0,1198,1199,1,0,0,0,1199,1210,1,0,0,0,1200,1198,1,0,0,0,1201,1202, - 5,88,0,0,1202,1207,3,68,34,0,1203,1204,5,3,0,0,1204,1206,3,68,34, - 0,1205,1203,1,0,0,0,1206,1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208, - 1,0,0,0,1208,1211,1,0,0,0,1209,1207,1,0,0,0,1210,1201,1,0,0,0,1210, - 1211,1,0,0,0,1211,1214,1,0,0,0,1212,1213,5,241,0,0,1213,1215,3,104, - 52,0,1214,1212,1,0,0,0,1214,1215,1,0,0,0,1215,1219,1,0,0,0,1216, - 1217,5,96,0,0,1217,1218,5,32,0,0,1218,1220,3,50,25,0,1219,1216,1, - 0,0,0,1219,1220,1,0,0,0,1220,1223,1,0,0,0,1221,1222,5,99,0,0,1222, - 1224,3,104,52,0,1223,1221,1,0,0,0,1223,1224,1,0,0,0,1224,1234,1, - 0,0,0,1225,1226,5,242,0,0,1226,1231,3,58,29,0,1227,1228,5,3,0,0, - 1228,1230,3,58,29,0,1229,1227,1,0,0,0,1230,1233,1,0,0,0,1231,1229, - 1,0,0,0,1231,1232,1,0,0,0,1232,1235,1,0,0,0,1233,1231,1,0,0,0,1234, - 1225,1,0,0,0,1234,1235,1,0,0,0,1235,49,1,0,0,0,1236,1238,3,64,32, - 0,1237,1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1244, - 3,52,26,0,1240,1241,5,3,0,0,1241,1243,3,52,26,0,1242,1240,1,0,0, - 0,1243,1246,1,0,0,0,1244,1242,1,0,0,0,1244,1245,1,0,0,0,1245,51, - 1,0,0,0,1246,1244,1,0,0,0,1247,1288,3,54,27,0,1248,1249,5,191,0, - 0,1249,1258,5,1,0,0,1250,1255,3,56,28,0,1251,1252,5,3,0,0,1252,1254, - 3,56,28,0,1253,1251,1,0,0,0,1254,1257,1,0,0,0,1255,1253,1,0,0,0, - 1255,1256,1,0,0,0,1256,1259,1,0,0,0,1257,1255,1,0,0,0,1258,1250, - 1,0,0,0,1258,1259,1,0,0,0,1259,1260,1,0,0,0,1260,1288,5,2,0,0,1261, - 1262,5,46,0,0,1262,1271,5,1,0,0,1263,1268,3,56,28,0,1264,1265,5, - 3,0,0,1265,1267,3,56,28,0,1266,1264,1,0,0,0,1267,1270,1,0,0,0,1268, - 1266,1,0,0,0,1268,1269,1,0,0,0,1269,1272,1,0,0,0,1270,1268,1,0,0, - 0,1271,1263,1,0,0,0,1271,1272,1,0,0,0,1272,1273,1,0,0,0,1273,1288, - 5,2,0,0,1274,1275,5,97,0,0,1275,1276,5,204,0,0,1276,1277,5,1,0,0, - 1277,1282,3,54,27,0,1278,1279,5,3,0,0,1279,1281,3,54,27,0,1280,1278, - 1,0,0,0,1281,1284,1,0,0,0,1282,1280,1,0,0,0,1282,1283,1,0,0,0,1283, - 1285,1,0,0,0,1284,1282,1,0,0,0,1285,1286,5,2,0,0,1286,1288,1,0,0, - 0,1287,1247,1,0,0,0,1287,1248,1,0,0,0,1287,1261,1,0,0,0,1287,1274, - 1,0,0,0,1288,53,1,0,0,0,1289,1298,5,1,0,0,1290,1295,3,56,28,0,1291, - 1292,5,3,0,0,1292,1294,3,56,28,0,1293,1291,1,0,0,0,1294,1297,1,0, - 0,0,1295,1293,1,0,0,0,1295,1296,1,0,0,0,1296,1299,1,0,0,0,1297,1295, - 1,0,0,0,1298,1290,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300, - 1303,5,2,0,0,1301,1303,3,56,28,0,1302,1289,1,0,0,0,1302,1301,1,0, - 0,0,1303,55,1,0,0,0,1304,1307,3,200,100,0,1305,1307,3,102,51,0,1306, - 1304,1,0,0,0,1306,1305,1,0,0,0,1307,57,1,0,0,0,1308,1309,3,212,106, - 0,1309,1310,5,26,0,0,1310,1311,5,1,0,0,1311,1312,3,60,30,0,1312, - 1313,5,2,0,0,1313,59,1,0,0,0,1314,1316,3,212,106,0,1315,1314,1,0, - 0,0,1315,1316,1,0,0,0,1316,1327,1,0,0,0,1317,1318,5,163,0,0,1318, - 1319,5,32,0,0,1319,1324,3,102,51,0,1320,1321,5,3,0,0,1321,1323,3, - 102,51,0,1322,1320,1,0,0,0,1323,1326,1,0,0,0,1324,1322,1,0,0,0,1324, - 1325,1,0,0,0,1325,1328,1,0,0,0,1326,1324,1,0,0,0,1327,1317,1,0,0, - 0,1327,1328,1,0,0,0,1328,1339,1,0,0,0,1329,1330,5,158,0,0,1330,1331, - 5,32,0,0,1331,1336,3,46,23,0,1332,1333,5,3,0,0,1333,1335,3,46,23, - 0,1334,1332,1,0,0,0,1335,1338,1,0,0,0,1336,1334,1,0,0,0,1336,1337, - 1,0,0,0,1337,1340,1,0,0,0,1338,1336,1,0,0,0,1339,1329,1,0,0,0,1339, - 1340,1,0,0,0,1340,1342,1,0,0,0,1341,1343,3,146,73,0,1342,1341,1, - 0,0,0,1342,1343,1,0,0,0,1343,61,1,0,0,0,1344,1346,3,212,106,0,1345, - 1347,3,98,49,0,1346,1345,1,0,0,0,1346,1347,1,0,0,0,1347,1348,1,0, - 0,0,1348,1349,5,26,0,0,1349,1350,5,1,0,0,1350,1351,3,18,9,0,1351, - 1352,5,2,0,0,1352,63,1,0,0,0,1353,1354,7,10,0,0,1354,65,1,0,0,0, - 1355,1358,3,200,100,0,1356,1358,3,102,51,0,1357,1355,1,0,0,0,1357, - 1356,1,0,0,0,1358,1363,1,0,0,0,1359,1361,5,26,0,0,1360,1359,1,0, - 0,0,1360,1361,1,0,0,0,1361,1362,1,0,0,0,1362,1364,3,212,106,0,1363, - 1360,1,0,0,0,1363,1364,1,0,0,0,1364,1374,1,0,0,0,1365,1366,3,110, - 55,0,1366,1367,5,4,0,0,1367,1370,5,257,0,0,1368,1369,5,26,0,0,1369, - 1371,3,98,49,0,1370,1368,1,0,0,0,1370,1371,1,0,0,0,1371,1374,1,0, - 0,0,1372,1374,5,257,0,0,1373,1357,1,0,0,0,1373,1365,1,0,0,0,1373, - 1372,1,0,0,0,1374,67,1,0,0,0,1375,1376,6,34,-1,0,1376,1377,3,74, - 37,0,1377,1396,1,0,0,0,1378,1392,10,2,0,0,1379,1380,5,45,0,0,1380, - 1381,5,116,0,0,1381,1393,3,74,37,0,1382,1383,3,70,35,0,1383,1384, - 5,116,0,0,1384,1385,3,68,34,0,1385,1386,3,72,36,0,1386,1393,1,0, - 0,0,1387,1388,5,138,0,0,1388,1389,3,70,35,0,1389,1390,5,116,0,0, - 1390,1391,3,74,37,0,1391,1393,1,0,0,0,1392,1379,1,0,0,0,1392,1382, - 1,0,0,0,1392,1387,1,0,0,0,1393,1395,1,0,0,0,1394,1378,1,0,0,0,1395, - 1398,1,0,0,0,1396,1394,1,0,0,0,1396,1397,1,0,0,0,1397,69,1,0,0,0, - 1398,1396,1,0,0,0,1399,1401,5,106,0,0,1400,1399,1,0,0,0,1400,1401, - 1,0,0,0,1401,1415,1,0,0,0,1402,1404,5,120,0,0,1403,1405,5,160,0, - 0,1404,1403,1,0,0,0,1404,1405,1,0,0,0,1405,1415,1,0,0,0,1406,1408, - 5,187,0,0,1407,1409,5,160,0,0,1408,1407,1,0,0,0,1408,1409,1,0,0, - 0,1409,1415,1,0,0,0,1410,1412,5,89,0,0,1411,1413,5,160,0,0,1412, - 1411,1,0,0,0,1412,1413,1,0,0,0,1413,1415,1,0,0,0,1414,1400,1,0,0, - 0,1414,1402,1,0,0,0,1414,1406,1,0,0,0,1414,1410,1,0,0,0,1415,71, - 1,0,0,0,1416,1417,5,153,0,0,1417,1431,3,104,52,0,1418,1419,5,235, - 0,0,1419,1420,5,1,0,0,1420,1425,3,212,106,0,1421,1422,5,3,0,0,1422, - 1424,3,212,106,0,1423,1421,1,0,0,0,1424,1427,1,0,0,0,1425,1423,1, - 0,0,0,1425,1426,1,0,0,0,1426,1428,1,0,0,0,1427,1425,1,0,0,0,1428, - 1429,5,2,0,0,1429,1431,1,0,0,0,1430,1416,1,0,0,0,1430,1418,1,0,0, - 0,1431,73,1,0,0,0,1432,1439,3,78,39,0,1433,1434,5,214,0,0,1434,1435, - 3,76,38,0,1435,1436,5,1,0,0,1436,1437,3,102,51,0,1437,1438,5,2,0, - 0,1438,1440,1,0,0,0,1439,1433,1,0,0,0,1439,1440,1,0,0,0,1440,75, - 1,0,0,0,1441,1442,7,11,0,0,1442,77,1,0,0,0,1443,1526,3,92,46,0,1444, - 1445,5,132,0,0,1445,1456,5,1,0,0,1446,1447,5,163,0,0,1447,1448,5, - 32,0,0,1448,1453,3,102,51,0,1449,1450,5,3,0,0,1450,1452,3,102,51, - 0,1451,1449,1,0,0,0,1452,1455,1,0,0,0,1453,1451,1,0,0,0,1453,1454, - 1,0,0,0,1454,1457,1,0,0,0,1455,1453,1,0,0,0,1456,1446,1,0,0,0,1456, - 1457,1,0,0,0,1457,1468,1,0,0,0,1458,1459,5,158,0,0,1459,1460,5,32, - 0,0,1460,1465,3,46,23,0,1461,1462,5,3,0,0,1462,1464,3,46,23,0,1463, - 1461,1,0,0,0,1464,1467,1,0,0,0,1465,1463,1,0,0,0,1465,1466,1,0,0, - 0,1466,1469,1,0,0,0,1467,1465,1,0,0,0,1468,1458,1,0,0,0,1468,1469, - 1,0,0,0,1469,1479,1,0,0,0,1470,1471,5,134,0,0,1471,1476,3,80,40, - 0,1472,1473,5,3,0,0,1473,1475,3,80,40,0,1474,1472,1,0,0,0,1475,1478, - 1,0,0,0,1476,1474,1,0,0,0,1476,1477,1,0,0,0,1477,1480,1,0,0,0,1478, - 1476,1,0,0,0,1479,1470,1,0,0,0,1479,1480,1,0,0,0,1480,1482,1,0,0, - 0,1481,1483,3,82,41,0,1482,1481,1,0,0,0,1482,1483,1,0,0,0,1483,1487, - 1,0,0,0,1484,1485,5,19,0,0,1485,1486,5,129,0,0,1486,1488,3,86,43, - 0,1487,1484,1,0,0,0,1487,1488,1,0,0,0,1488,1490,1,0,0,0,1489,1491, - 7,12,0,0,1490,1489,1,0,0,0,1490,1491,1,0,0,0,1491,1492,1,0,0,0,1492, - 1493,5,167,0,0,1493,1494,5,1,0,0,1494,1495,3,152,76,0,1495,1505, - 5,2,0,0,1496,1497,5,209,0,0,1497,1502,3,88,44,0,1498,1499,5,3,0, - 0,1499,1501,3,88,44,0,1500,1498,1,0,0,0,1501,1504,1,0,0,0,1502,1500, - 1,0,0,0,1502,1503,1,0,0,0,1503,1506,1,0,0,0,1504,1502,1,0,0,0,1505, - 1496,1,0,0,0,1505,1506,1,0,0,0,1506,1507,1,0,0,0,1507,1508,5,65, - 0,0,1508,1513,3,90,45,0,1509,1510,5,3,0,0,1510,1512,3,90,45,0,1511, - 1509,1,0,0,0,1512,1515,1,0,0,0,1513,1511,1,0,0,0,1513,1514,1,0,0, - 0,1514,1516,1,0,0,0,1515,1513,1,0,0,0,1516,1524,5,2,0,0,1517,1519, - 5,26,0,0,1518,1517,1,0,0,0,1518,1519,1,0,0,0,1519,1520,1,0,0,0,1520, - 1522,3,212,106,0,1521,1523,3,98,49,0,1522,1521,1,0,0,0,1522,1523, - 1,0,0,0,1523,1525,1,0,0,0,1524,1518,1,0,0,0,1524,1525,1,0,0,0,1525, - 1527,1,0,0,0,1526,1444,1,0,0,0,1526,1527,1,0,0,0,1527,79,1,0,0,0, - 1528,1529,3,102,51,0,1529,1530,5,26,0,0,1530,1531,3,212,106,0,1531, - 81,1,0,0,0,1532,1533,5,154,0,0,1533,1534,5,192,0,0,1534,1535,5,168, - 0,0,1535,1544,5,129,0,0,1536,1537,5,20,0,0,1537,1538,5,193,0,0,1538, - 1539,5,168,0,0,1539,1541,5,129,0,0,1540,1542,3,84,42,0,1541,1540, - 1,0,0,0,1541,1542,1,0,0,0,1542,1544,1,0,0,0,1543,1532,1,0,0,0,1543, - 1536,1,0,0,0,1544,83,1,0,0,0,1545,1546,5,205,0,0,1546,1547,5,71, - 0,0,1547,1555,5,131,0,0,1548,1549,5,152,0,0,1549,1550,5,71,0,0,1550, - 1555,5,131,0,0,1551,1552,5,243,0,0,1552,1553,5,230,0,0,1553,1555, - 5,193,0,0,1554,1545,1,0,0,0,1554,1548,1,0,0,0,1554,1551,1,0,0,0, - 1555,85,1,0,0,0,1556,1557,5,5,0,0,1557,1558,5,220,0,0,1558,1559, - 5,139,0,0,1559,1576,5,192,0,0,1560,1561,5,5,0,0,1561,1562,5,165, - 0,0,1562,1563,5,118,0,0,1563,1576,5,192,0,0,1564,1565,5,5,0,0,1565, - 1566,5,220,0,0,1566,1567,5,84,0,0,1567,1576,3,212,106,0,1568,1569, - 5,5,0,0,1569,1570,5,220,0,0,1570,1571,5,118,0,0,1571,1576,3,212, - 106,0,1572,1573,5,5,0,0,1573,1574,5,220,0,0,1574,1576,3,212,106, - 0,1575,1556,1,0,0,0,1575,1560,1,0,0,0,1575,1564,1,0,0,0,1575,1568, - 1,0,0,0,1575,1572,1,0,0,0,1576,87,1,0,0,0,1577,1578,3,212,106,0, - 1578,1579,5,249,0,0,1579,1580,5,1,0,0,1580,1585,3,212,106,0,1581, - 1582,5,3,0,0,1582,1584,3,212,106,0,1583,1581,1,0,0,0,1584,1587,1, - 0,0,0,1585,1583,1,0,0,0,1585,1586,1,0,0,0,1586,1588,1,0,0,0,1587, - 1585,1,0,0,0,1588,1589,5,2,0,0,1589,89,1,0,0,0,1590,1591,3,212,106, - 0,1591,1592,5,26,0,0,1592,1593,3,102,51,0,1593,91,1,0,0,0,1594,1602, - 3,100,50,0,1595,1597,5,26,0,0,1596,1595,1,0,0,0,1596,1597,1,0,0, - 0,1597,1598,1,0,0,0,1598,1600,3,212,106,0,1599,1601,3,98,49,0,1600, - 1599,1,0,0,0,1600,1601,1,0,0,0,1601,1603,1,0,0,0,1602,1596,1,0,0, - 0,1602,1603,1,0,0,0,1603,93,1,0,0,0,1604,1605,5,1,0,0,1605,1610, - 3,202,101,0,1606,1607,5,3,0,0,1607,1609,3,202,101,0,1608,1606,1, - 0,0,0,1609,1612,1,0,0,0,1610,1608,1,0,0,0,1610,1611,1,0,0,0,1611, - 1613,1,0,0,0,1612,1610,1,0,0,0,1613,1614,5,2,0,0,1614,95,1,0,0,0, - 1615,1616,5,1,0,0,1616,1621,3,200,100,0,1617,1618,5,3,0,0,1618,1620, - 3,200,100,0,1619,1617,1,0,0,0,1620,1623,1,0,0,0,1621,1619,1,0,0, - 0,1621,1622,1,0,0,0,1622,1624,1,0,0,0,1623,1621,1,0,0,0,1624,1625, - 5,2,0,0,1625,97,1,0,0,0,1626,1627,5,1,0,0,1627,1632,3,212,106,0, - 1628,1629,5,3,0,0,1629,1631,3,212,106,0,1630,1628,1,0,0,0,1631,1634, - 1,0,0,0,1632,1630,1,0,0,0,1632,1633,1,0,0,0,1633,1635,1,0,0,0,1634, - 1632,1,0,0,0,1635,1636,5,2,0,0,1636,99,1,0,0,0,1637,1667,3,174,87, - 0,1638,1639,5,1,0,0,1639,1640,3,18,9,0,1640,1641,5,2,0,0,1641,1667, - 1,0,0,0,1642,1643,5,231,0,0,1643,1644,5,1,0,0,1644,1649,3,102,51, - 0,1645,1646,5,3,0,0,1646,1648,3,102,51,0,1647,1645,1,0,0,0,1648, - 1651,1,0,0,0,1649,1647,1,0,0,0,1649,1650,1,0,0,0,1650,1652,1,0,0, - 0,1651,1649,1,0,0,0,1652,1655,5,2,0,0,1653,1654,5,243,0,0,1654,1656, - 5,159,0,0,1655,1653,1,0,0,0,1655,1656,1,0,0,0,1656,1667,1,0,0,0, - 1657,1658,5,119,0,0,1658,1659,5,1,0,0,1659,1660,3,18,9,0,1660,1661, - 5,2,0,0,1661,1667,1,0,0,0,1662,1663,5,1,0,0,1663,1664,3,68,34,0, - 1664,1665,5,2,0,0,1665,1667,1,0,0,0,1666,1637,1,0,0,0,1666,1638, - 1,0,0,0,1666,1642,1,0,0,0,1666,1657,1,0,0,0,1666,1662,1,0,0,0,1667, - 101,1,0,0,0,1668,1669,3,104,52,0,1669,103,1,0,0,0,1670,1671,6,52, - -1,0,1671,1673,3,108,54,0,1672,1674,3,106,53,0,1673,1672,1,0,0,0, - 1673,1674,1,0,0,0,1674,1678,1,0,0,0,1675,1676,5,147,0,0,1676,1678, - 3,104,52,3,1677,1670,1,0,0,0,1677,1675,1,0,0,0,1678,1687,1,0,0,0, - 1679,1680,10,2,0,0,1680,1681,5,23,0,0,1681,1686,3,104,52,3,1682, - 1683,10,1,0,0,1683,1684,5,157,0,0,1684,1686,3,104,52,2,1685,1679, - 1,0,0,0,1685,1682,1,0,0,0,1686,1689,1,0,0,0,1687,1685,1,0,0,0,1687, - 1688,1,0,0,0,1688,105,1,0,0,0,1689,1687,1,0,0,0,1690,1691,3,120, - 60,0,1691,1692,3,108,54,0,1692,1752,1,0,0,0,1693,1694,3,120,60,0, - 1694,1695,3,122,61,0,1695,1696,5,1,0,0,1696,1697,3,18,9,0,1697,1698, - 5,2,0,0,1698,1752,1,0,0,0,1699,1701,5,147,0,0,1700,1699,1,0,0,0, - 1700,1701,1,0,0,0,1701,1702,1,0,0,0,1702,1703,5,31,0,0,1703,1704, - 3,108,54,0,1704,1705,5,23,0,0,1705,1706,3,108,54,0,1706,1752,1,0, - 0,0,1707,1709,5,147,0,0,1708,1707,1,0,0,0,1708,1709,1,0,0,0,1709, - 1710,1,0,0,0,1710,1711,5,103,0,0,1711,1712,5,1,0,0,1712,1717,3,102, - 51,0,1713,1714,5,3,0,0,1714,1716,3,102,51,0,1715,1713,1,0,0,0,1716, - 1719,1,0,0,0,1717,1715,1,0,0,0,1717,1718,1,0,0,0,1718,1720,1,0,0, - 0,1719,1717,1,0,0,0,1720,1721,5,2,0,0,1721,1752,1,0,0,0,1722,1724, - 5,147,0,0,1723,1722,1,0,0,0,1723,1724,1,0,0,0,1724,1725,1,0,0,0, - 1725,1726,5,103,0,0,1726,1727,5,1,0,0,1727,1728,3,18,9,0,1728,1729, - 5,2,0,0,1729,1752,1,0,0,0,1730,1732,5,147,0,0,1731,1730,1,0,0,0, - 1731,1732,1,0,0,0,1732,1733,1,0,0,0,1733,1734,5,122,0,0,1734,1737, - 3,108,54,0,1735,1736,5,73,0,0,1736,1738,3,108,54,0,1737,1735,1,0, - 0,0,1737,1738,1,0,0,0,1738,1752,1,0,0,0,1739,1741,5,114,0,0,1740, - 1742,5,147,0,0,1741,1740,1,0,0,0,1741,1742,1,0,0,0,1742,1743,1,0, - 0,0,1743,1752,5,148,0,0,1744,1746,5,114,0,0,1745,1747,5,147,0,0, - 1746,1745,1,0,0,0,1746,1747,1,0,0,0,1747,1748,1,0,0,0,1748,1749, - 5,66,0,0,1749,1750,5,88,0,0,1750,1752,3,108,54,0,1751,1690,1,0,0, - 0,1751,1693,1,0,0,0,1751,1700,1,0,0,0,1751,1708,1,0,0,0,1751,1723, - 1,0,0,0,1751,1731,1,0,0,0,1751,1739,1,0,0,0,1751,1744,1,0,0,0,1752, - 107,1,0,0,0,1753,1754,6,54,-1,0,1754,1758,3,110,55,0,1755,1756,7, - 13,0,0,1756,1758,3,108,54,4,1757,1753,1,0,0,0,1757,1755,1,0,0,0, - 1758,1773,1,0,0,0,1759,1760,10,3,0,0,1760,1761,7,14,0,0,1761,1772, - 3,108,54,4,1762,1763,10,2,0,0,1763,1764,7,13,0,0,1764,1772,3,108, - 54,3,1765,1766,10,1,0,0,1766,1767,5,260,0,0,1767,1772,3,108,54,2, - 1768,1769,10,5,0,0,1769,1770,5,28,0,0,1770,1772,3,118,59,0,1771, - 1759,1,0,0,0,1771,1762,1,0,0,0,1771,1765,1,0,0,0,1771,1768,1,0,0, - 0,1772,1775,1,0,0,0,1773,1771,1,0,0,0,1773,1774,1,0,0,0,1774,109, - 1,0,0,0,1775,1773,1,0,0,0,1776,1777,6,55,-1,0,1777,2026,5,148,0, - 0,1778,2026,3,126,63,0,1779,1780,3,212,106,0,1780,1781,3,116,58, - 0,1781,2026,1,0,0,0,1782,1783,5,68,0,0,1783,1784,5,172,0,0,1784, - 2026,3,116,58,0,1785,2026,3,214,107,0,1786,2026,3,124,62,0,1787, - 2026,3,116,58,0,1788,2026,5,264,0,0,1789,2026,5,261,0,0,1790,1791, - 5,170,0,0,1791,1792,5,1,0,0,1792,1793,3,108,54,0,1793,1794,5,103, - 0,0,1794,1795,3,108,54,0,1795,1796,5,2,0,0,1796,2026,1,0,0,0,1797, - 1798,5,1,0,0,1798,1801,3,102,51,0,1799,1800,5,3,0,0,1800,1802,3, - 102,51,0,1801,1799,1,0,0,0,1802,1803,1,0,0,0,1803,1801,1,0,0,0,1803, - 1804,1,0,0,0,1804,1805,1,0,0,0,1805,1806,5,2,0,0,1806,2026,1,0,0, - 0,1807,1808,5,192,0,0,1808,1809,5,1,0,0,1809,1814,3,102,51,0,1810, - 1811,5,3,0,0,1811,1813,3,102,51,0,1812,1810,1,0,0,0,1813,1816,1, - 0,0,0,1814,1812,1,0,0,0,1814,1815,1,0,0,0,1815,1817,1,0,0,0,1816, - 1814,1,0,0,0,1817,1818,5,2,0,0,1818,2026,1,0,0,0,1819,1820,3,198, - 99,0,1820,1821,5,1,0,0,1821,1822,5,257,0,0,1822,1824,5,2,0,0,1823, - 1825,3,140,70,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,1827,1, - 0,0,0,1826,1828,3,144,72,0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828, - 2026,1,0,0,0,1829,1831,3,112,56,0,1830,1829,1,0,0,0,1830,1831,1, - 0,0,0,1831,1832,1,0,0,0,1832,1833,3,198,99,0,1833,1845,5,1,0,0,1834, - 1836,3,64,32,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1837,1,0, - 0,0,1837,1842,3,102,51,0,1838,1839,5,3,0,0,1839,1841,3,102,51,0, - 1840,1838,1,0,0,0,1841,1844,1,0,0,0,1842,1840,1,0,0,0,1842,1843, - 1,0,0,0,1843,1846,1,0,0,0,1844,1842,1,0,0,0,1845,1835,1,0,0,0,1845, - 1846,1,0,0,0,1846,1857,1,0,0,0,1847,1848,5,158,0,0,1848,1849,5,32, - 0,0,1849,1854,3,46,23,0,1850,1851,5,3,0,0,1851,1853,3,46,23,0,1852, - 1850,1,0,0,0,1853,1856,1,0,0,0,1854,1852,1,0,0,0,1854,1855,1,0,0, - 0,1855,1858,1,0,0,0,1856,1854,1,0,0,0,1857,1847,1,0,0,0,1857,1858, - 1,0,0,0,1858,1859,1,0,0,0,1859,1861,5,2,0,0,1860,1862,3,140,70,0, - 1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1867,1,0,0,0,1863,1865, - 3,114,57,0,1864,1863,1,0,0,0,1864,1865,1,0,0,0,1865,1866,1,0,0,0, - 1866,1868,3,144,72,0,1867,1864,1,0,0,0,1867,1868,1,0,0,0,1868,2026, - 1,0,0,0,1869,1870,3,212,106,0,1870,1871,3,144,72,0,1871,2026,1,0, - 0,0,1872,1873,3,212,106,0,1873,1874,5,6,0,0,1874,1875,3,102,51,0, - 1875,2026,1,0,0,0,1876,1885,5,1,0,0,1877,1882,3,212,106,0,1878,1879, - 5,3,0,0,1879,1881,3,212,106,0,1880,1878,1,0,0,0,1881,1884,1,0,0, - 0,1882,1880,1,0,0,0,1882,1883,1,0,0,0,1883,1886,1,0,0,0,1884,1882, - 1,0,0,0,1885,1877,1,0,0,0,1885,1886,1,0,0,0,1886,1887,1,0,0,0,1887, - 1888,5,2,0,0,1888,1889,5,6,0,0,1889,2026,3,102,51,0,1890,1891,5, - 1,0,0,1891,1892,3,18,9,0,1892,1893,5,2,0,0,1893,2026,1,0,0,0,1894, - 1895,5,77,0,0,1895,1896,5,1,0,0,1896,1897,3,18,9,0,1897,1898,5,2, - 0,0,1898,2026,1,0,0,0,1899,1900,5,35,0,0,1900,1902,3,102,51,0,1901, - 1903,3,138,69,0,1902,1901,1,0,0,0,1903,1904,1,0,0,0,1904,1902,1, - 0,0,0,1904,1905,1,0,0,0,1905,1908,1,0,0,0,1906,1907,5,70,0,0,1907, - 1909,3,102,51,0,1908,1906,1,0,0,0,1908,1909,1,0,0,0,1909,1910,1, - 0,0,0,1910,1911,5,72,0,0,1911,2026,1,0,0,0,1912,1914,5,35,0,0,1913, - 1915,3,138,69,0,1914,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1914,1, - 0,0,0,1916,1917,1,0,0,0,1917,1920,1,0,0,0,1918,1919,5,70,0,0,1919, - 1921,3,102,51,0,1920,1918,1,0,0,0,1920,1921,1,0,0,0,1921,1922,1, - 0,0,0,1922,1923,5,72,0,0,1923,2026,1,0,0,0,1924,1925,5,36,0,0,1925, - 1926,5,1,0,0,1926,1927,3,102,51,0,1927,1928,5,26,0,0,1928,1929,3, - 132,66,0,1929,1930,5,2,0,0,1930,2026,1,0,0,0,1931,1932,5,224,0,0, - 1932,1933,5,1,0,0,1933,1934,3,102,51,0,1934,1935,5,26,0,0,1935,1936, - 3,132,66,0,1936,1937,5,2,0,0,1937,2026,1,0,0,0,1938,1939,5,25,0, - 0,1939,1948,5,7,0,0,1940,1945,3,102,51,0,1941,1942,5,3,0,0,1942, - 1944,3,102,51,0,1943,1941,1,0,0,0,1944,1947,1,0,0,0,1945,1943,1, - 0,0,0,1945,1946,1,0,0,0,1946,1949,1,0,0,0,1947,1945,1,0,0,0,1948, - 1940,1,0,0,0,1948,1949,1,0,0,0,1949,1950,1,0,0,0,1950,2026,5,8,0, - 0,1951,2026,3,212,106,0,1952,2026,5,49,0,0,1953,1957,5,53,0,0,1954, - 1955,5,1,0,0,1955,1956,5,265,0,0,1956,1958,5,2,0,0,1957,1954,1,0, - 0,0,1957,1958,1,0,0,0,1958,2026,1,0,0,0,1959,1963,5,54,0,0,1960, - 1961,5,1,0,0,1961,1962,5,265,0,0,1962,1964,5,2,0,0,1963,1960,1,0, - 0,0,1963,1964,1,0,0,0,1964,2026,1,0,0,0,1965,1969,5,125,0,0,1966, - 1967,5,1,0,0,1967,1968,5,265,0,0,1968,1970,5,2,0,0,1969,1966,1,0, - 0,0,1969,1970,1,0,0,0,1970,2026,1,0,0,0,1971,1975,5,126,0,0,1972, - 1973,5,1,0,0,1973,1974,5,265,0,0,1974,1976,5,2,0,0,1975,1972,1,0, - 0,0,1975,1976,1,0,0,0,1976,2026,1,0,0,0,1977,2026,5,55,0,0,1978, - 2026,5,48,0,0,1979,2026,5,52,0,0,1980,2026,5,50,0,0,1981,1982,5, - 210,0,0,1982,1983,5,1,0,0,1983,1984,3,108,54,0,1984,1985,5,88,0, - 0,1985,1988,3,108,54,0,1986,1987,5,86,0,0,1987,1989,3,108,54,0,1988, - 1986,1,0,0,0,1988,1989,1,0,0,0,1989,1990,1,0,0,0,1990,1991,5,2,0, - 0,1991,2026,1,0,0,0,1992,1993,5,146,0,0,1993,1994,5,1,0,0,1994,1997, - 3,108,54,0,1995,1996,5,3,0,0,1996,1998,3,130,65,0,1997,1995,1,0, - 0,0,1997,1998,1,0,0,0,1998,1999,1,0,0,0,1999,2000,5,2,0,0,2000,2026, - 1,0,0,0,2001,2002,5,79,0,0,2002,2003,5,1,0,0,2003,2004,3,212,106, - 0,2004,2005,5,88,0,0,2005,2006,3,108,54,0,2006,2007,5,2,0,0,2007, - 2026,1,0,0,0,2008,2009,5,1,0,0,2009,2010,3,102,51,0,2010,2011,5, - 2,0,0,2011,2026,1,0,0,0,2012,2013,5,97,0,0,2013,2022,5,1,0,0,2014, - 2019,3,204,102,0,2015,2016,5,3,0,0,2016,2018,3,204,102,0,2017,2015, - 1,0,0,0,2018,2021,1,0,0,0,2019,2017,1,0,0,0,2019,2020,1,0,0,0,2020, - 2023,1,0,0,0,2021,2019,1,0,0,0,2022,2014,1,0,0,0,2022,2023,1,0,0, - 0,2023,2024,1,0,0,0,2024,2026,5,2,0,0,2025,1776,1,0,0,0,2025,1778, - 1,0,0,0,2025,1779,1,0,0,0,2025,1782,1,0,0,0,2025,1785,1,0,0,0,2025, - 1786,1,0,0,0,2025,1787,1,0,0,0,2025,1788,1,0,0,0,2025,1789,1,0,0, - 0,2025,1790,1,0,0,0,2025,1797,1,0,0,0,2025,1807,1,0,0,0,2025,1819, - 1,0,0,0,2025,1830,1,0,0,0,2025,1869,1,0,0,0,2025,1872,1,0,0,0,2025, - 1876,1,0,0,0,2025,1890,1,0,0,0,2025,1894,1,0,0,0,2025,1899,1,0,0, - 0,2025,1912,1,0,0,0,2025,1924,1,0,0,0,2025,1931,1,0,0,0,2025,1938, - 1,0,0,0,2025,1951,1,0,0,0,2025,1952,1,0,0,0,2025,1953,1,0,0,0,2025, - 1959,1,0,0,0,2025,1965,1,0,0,0,2025,1971,1,0,0,0,2025,1977,1,0,0, - 0,2025,1978,1,0,0,0,2025,1979,1,0,0,0,2025,1980,1,0,0,0,2025,1981, - 1,0,0,0,2025,1992,1,0,0,0,2025,2001,1,0,0,0,2025,2008,1,0,0,0,2025, - 2012,1,0,0,0,2026,2037,1,0,0,0,2027,2028,10,17,0,0,2028,2029,5,7, - 0,0,2029,2030,3,108,54,0,2030,2031,5,8,0,0,2031,2036,1,0,0,0,2032, - 2033,10,15,0,0,2033,2034,5,4,0,0,2034,2036,3,212,106,0,2035,2027, - 1,0,0,0,2035,2032,1,0,0,0,2036,2039,1,0,0,0,2037,2035,1,0,0,0,2037, - 2038,1,0,0,0,2038,111,1,0,0,0,2039,2037,1,0,0,0,2040,2041,7,15,0, - 0,2041,113,1,0,0,0,2042,2043,5,102,0,0,2043,2047,5,150,0,0,2044, - 2045,5,184,0,0,2045,2047,5,150,0,0,2046,2042,1,0,0,0,2046,2044,1, - 0,0,0,2047,115,1,0,0,0,2048,2055,5,262,0,0,2049,2052,5,263,0,0,2050, - 2051,5,226,0,0,2051,2053,5,262,0,0,2052,2050,1,0,0,0,2052,2053,1, - 0,0,0,2053,2055,1,0,0,0,2054,2048,1,0,0,0,2054,2049,1,0,0,0,2055, - 117,1,0,0,0,2056,2057,5,218,0,0,2057,2058,5,248,0,0,2058,2063,3, - 126,63,0,2059,2060,5,218,0,0,2060,2061,5,248,0,0,2061,2063,3,116, - 58,0,2062,2056,1,0,0,0,2062,2059,1,0,0,0,2063,119,1,0,0,0,2064,2065, - 7,16,0,0,2065,121,1,0,0,0,2066,2067,7,17,0,0,2067,123,1,0,0,0,2068, - 2069,7,18,0,0,2069,125,1,0,0,0,2070,2072,5,110,0,0,2071,2073,7,13, - 0,0,2072,2071,1,0,0,0,2072,2073,1,0,0,0,2073,2074,1,0,0,0,2074,2075, - 3,116,58,0,2075,2078,3,128,64,0,2076,2077,5,220,0,0,2077,2079,3, - 128,64,0,2078,2076,1,0,0,0,2078,2079,1,0,0,0,2079,127,1,0,0,0,2080, - 2081,7,19,0,0,2081,129,1,0,0,0,2082,2083,7,20,0,0,2083,131,1,0,0, - 0,2084,2085,6,66,-1,0,2085,2086,5,192,0,0,2086,2087,5,1,0,0,2087, - 2092,3,134,67,0,2088,2089,5,3,0,0,2089,2091,3,134,67,0,2090,2088, - 1,0,0,0,2091,2094,1,0,0,0,2092,2090,1,0,0,0,2092,2093,1,0,0,0,2093, - 2095,1,0,0,0,2094,2092,1,0,0,0,2095,2096,5,2,0,0,2096,2176,1,0,0, - 0,2097,2098,5,110,0,0,2098,2101,3,128,64,0,2099,2100,5,220,0,0,2100, - 2102,3,128,64,0,2101,2099,1,0,0,0,2101,2102,1,0,0,0,2102,2176,1, - 0,0,0,2103,2108,5,219,0,0,2104,2105,5,1,0,0,2105,2106,3,136,68,0, - 2106,2107,5,2,0,0,2107,2109,1,0,0,0,2108,2104,1,0,0,0,2108,2109, - 1,0,0,0,2109,2113,1,0,0,0,2110,2111,5,244,0,0,2111,2112,5,218,0, - 0,2112,2114,5,248,0,0,2113,2110,1,0,0,0,2113,2114,1,0,0,0,2114,2176, - 1,0,0,0,2115,2120,5,219,0,0,2116,2117,5,1,0,0,2117,2118,3,136,68, - 0,2118,2119,5,2,0,0,2119,2121,1,0,0,0,2120,2116,1,0,0,0,2120,2121, - 1,0,0,0,2121,2122,1,0,0,0,2122,2123,5,243,0,0,2123,2124,5,218,0, - 0,2124,2176,5,248,0,0,2125,2130,5,218,0,0,2126,2127,5,1,0,0,2127, - 2128,3,136,68,0,2128,2129,5,2,0,0,2129,2131,1,0,0,0,2130,2126,1, - 0,0,0,2130,2131,1,0,0,0,2131,2135,1,0,0,0,2132,2133,5,244,0,0,2133, - 2134,5,218,0,0,2134,2136,5,248,0,0,2135,2132,1,0,0,0,2135,2136,1, - 0,0,0,2136,2176,1,0,0,0,2137,2142,5,218,0,0,2138,2139,5,1,0,0,2139, - 2140,3,136,68,0,2140,2141,5,2,0,0,2141,2143,1,0,0,0,2142,2138,1, - 0,0,0,2142,2143,1,0,0,0,2143,2144,1,0,0,0,2144,2145,5,243,0,0,2145, - 2146,5,218,0,0,2146,2176,5,248,0,0,2147,2148,5,68,0,0,2148,2176, - 5,172,0,0,2149,2150,5,25,0,0,2150,2151,5,251,0,0,2151,2152,3,132, - 66,0,2152,2153,5,253,0,0,2153,2176,1,0,0,0,2154,2155,5,128,0,0,2155, - 2156,5,251,0,0,2156,2157,3,132,66,0,2157,2158,5,3,0,0,2158,2159, - 3,132,66,0,2159,2160,5,253,0,0,2160,2176,1,0,0,0,2161,2173,3,212, - 106,0,2162,2163,5,1,0,0,2163,2168,3,136,68,0,2164,2165,5,3,0,0,2165, - 2167,3,136,68,0,2166,2164,1,0,0,0,2167,2170,1,0,0,0,2168,2166,1, - 0,0,0,2168,2169,1,0,0,0,2169,2171,1,0,0,0,2170,2168,1,0,0,0,2171, - 2172,5,2,0,0,2172,2174,1,0,0,0,2173,2162,1,0,0,0,2173,2174,1,0,0, - 0,2174,2176,1,0,0,0,2175,2084,1,0,0,0,2175,2097,1,0,0,0,2175,2103, - 1,0,0,0,2175,2115,1,0,0,0,2175,2125,1,0,0,0,2175,2137,1,0,0,0,2175, - 2147,1,0,0,0,2175,2149,1,0,0,0,2175,2154,1,0,0,0,2175,2161,1,0,0, - 0,2176,2186,1,0,0,0,2177,2178,10,2,0,0,2178,2182,5,25,0,0,2179,2180, - 5,7,0,0,2180,2181,5,265,0,0,2181,2183,5,8,0,0,2182,2179,1,0,0,0, - 2182,2183,1,0,0,0,2183,2185,1,0,0,0,2184,2177,1,0,0,0,2185,2188, - 1,0,0,0,2186,2184,1,0,0,0,2186,2187,1,0,0,0,2187,133,1,0,0,0,2188, - 2186,1,0,0,0,2189,2194,3,132,66,0,2190,2191,3,212,106,0,2191,2192, - 3,132,66,0,2192,2194,1,0,0,0,2193,2189,1,0,0,0,2193,2190,1,0,0,0, - 2194,135,1,0,0,0,2195,2198,5,265,0,0,2196,2198,3,132,66,0,2197,2195, - 1,0,0,0,2197,2196,1,0,0,0,2198,137,1,0,0,0,2199,2200,5,240,0,0,2200, - 2201,3,102,51,0,2201,2202,5,216,0,0,2202,2203,3,102,51,0,2203,139, - 1,0,0,0,2204,2205,5,82,0,0,2205,2206,5,1,0,0,2206,2207,5,241,0,0, - 2207,2208,3,104,52,0,2208,2209,5,2,0,0,2209,141,1,0,0,0,2210,2211, - 5,240,0,0,2211,2214,5,130,0,0,2212,2213,5,23,0,0,2213,2215,3,102, - 51,0,2214,2212,1,0,0,0,2214,2215,1,0,0,0,2215,2216,1,0,0,0,2216, - 2217,5,216,0,0,2217,2218,5,232,0,0,2218,2219,5,203,0,0,2219,2220, - 3,212,106,0,2220,2221,5,249,0,0,2221,2229,3,102,51,0,2222,2223,5, - 3,0,0,2223,2224,3,212,106,0,2224,2225,5,249,0,0,2225,2226,3,102, - 51,0,2226,2228,1,0,0,0,2227,2222,1,0,0,0,2228,2231,1,0,0,0,2229, - 2227,1,0,0,0,2229,2230,1,0,0,0,2230,2275,1,0,0,0,2231,2229,1,0,0, - 0,2232,2233,5,240,0,0,2233,2236,5,130,0,0,2234,2235,5,23,0,0,2235, - 2237,3,102,51,0,2236,2234,1,0,0,0,2236,2237,1,0,0,0,2237,2238,1, - 0,0,0,2238,2239,5,216,0,0,2239,2275,5,62,0,0,2240,2241,5,240,0,0, - 2241,2242,5,147,0,0,2242,2245,5,130,0,0,2243,2244,5,23,0,0,2244, - 2246,3,102,51,0,2245,2243,1,0,0,0,2245,2246,1,0,0,0,2246,2247,1, - 0,0,0,2247,2248,5,216,0,0,2248,2260,5,108,0,0,2249,2250,5,1,0,0, - 2250,2255,3,212,106,0,2251,2252,5,3,0,0,2252,2254,3,212,106,0,2253, - 2251,1,0,0,0,2254,2257,1,0,0,0,2255,2253,1,0,0,0,2255,2256,1,0,0, - 0,2256,2258,1,0,0,0,2257,2255,1,0,0,0,2258,2259,5,2,0,0,2259,2261, - 1,0,0,0,2260,2249,1,0,0,0,2260,2261,1,0,0,0,2261,2262,1,0,0,0,2262, - 2263,5,237,0,0,2263,2264,5,1,0,0,2264,2269,3,102,51,0,2265,2266, - 5,3,0,0,2266,2268,3,102,51,0,2267,2265,1,0,0,0,2268,2271,1,0,0,0, - 2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270,2272,1,0,0,0,2271,2269, - 1,0,0,0,2272,2273,5,2,0,0,2273,2275,1,0,0,0,2274,2210,1,0,0,0,2274, - 2232,1,0,0,0,2274,2240,1,0,0,0,2275,143,1,0,0,0,2276,2282,5,162, - 0,0,2277,2283,3,212,106,0,2278,2279,5,1,0,0,2279,2280,3,60,30,0, - 2280,2281,5,2,0,0,2281,2283,1,0,0,0,2282,2277,1,0,0,0,2282,2278, - 1,0,0,0,2283,145,1,0,0,0,2284,2285,5,134,0,0,2285,2290,3,80,40,0, - 2286,2287,5,3,0,0,2287,2289,3,80,40,0,2288,2286,1,0,0,0,2289,2292, - 1,0,0,0,2290,2288,1,0,0,0,2290,2291,1,0,0,0,2291,2294,1,0,0,0,2292, - 2290,1,0,0,0,2293,2284,1,0,0,0,2293,2294,1,0,0,0,2294,2295,1,0,0, - 0,2295,2299,3,148,74,0,2296,2297,5,19,0,0,2297,2298,5,129,0,0,2298, - 2300,3,86,43,0,2299,2296,1,0,0,0,2299,2300,1,0,0,0,2300,2302,1,0, - 0,0,2301,2303,7,12,0,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303, - 2309,1,0,0,0,2304,2305,5,167,0,0,2305,2306,5,1,0,0,2306,2307,3,152, - 76,0,2307,2308,5,2,0,0,2308,2310,1,0,0,0,2309,2304,1,0,0,0,2309, - 2310,1,0,0,0,2310,2320,1,0,0,0,2311,2312,5,209,0,0,2312,2317,3,88, - 44,0,2313,2314,5,3,0,0,2314,2316,3,88,44,0,2315,2313,1,0,0,0,2316, - 2319,1,0,0,0,2317,2315,1,0,0,0,2317,2318,1,0,0,0,2318,2321,1,0,0, - 0,2319,2317,1,0,0,0,2320,2311,1,0,0,0,2320,2321,1,0,0,0,2321,2331, - 1,0,0,0,2322,2323,5,65,0,0,2323,2328,3,90,45,0,2324,2325,5,3,0,0, - 2325,2327,3,90,45,0,2326,2324,1,0,0,0,2327,2330,1,0,0,0,2328,2326, - 1,0,0,0,2328,2329,1,0,0,0,2329,2332,1,0,0,0,2330,2328,1,0,0,0,2331, - 2322,1,0,0,0,2331,2332,1,0,0,0,2332,147,1,0,0,0,2333,2334,5,176, - 0,0,2334,2358,3,150,75,0,2335,2336,5,193,0,0,2336,2358,3,150,75, - 0,2337,2338,5,98,0,0,2338,2358,3,150,75,0,2339,2340,5,176,0,0,2340, - 2341,5,31,0,0,2341,2342,3,150,75,0,2342,2343,5,23,0,0,2343,2344, - 3,150,75,0,2344,2358,1,0,0,0,2345,2346,5,193,0,0,2346,2347,5,31, - 0,0,2347,2348,3,150,75,0,2348,2349,5,23,0,0,2349,2350,3,150,75,0, - 2350,2358,1,0,0,0,2351,2352,5,98,0,0,2352,2353,5,31,0,0,2353,2354, - 3,150,75,0,2354,2355,5,23,0,0,2355,2356,3,150,75,0,2356,2358,1,0, - 0,0,2357,2333,1,0,0,0,2357,2335,1,0,0,0,2357,2337,1,0,0,0,2357,2339, - 1,0,0,0,2357,2345,1,0,0,0,2357,2351,1,0,0,0,2358,149,1,0,0,0,2359, - 2360,5,227,0,0,2360,2369,5,171,0,0,2361,2362,5,227,0,0,2362,2369, - 5,85,0,0,2363,2364,5,47,0,0,2364,2369,5,192,0,0,2365,2366,3,102, - 51,0,2366,2367,7,21,0,0,2367,2369,1,0,0,0,2368,2359,1,0,0,0,2368, - 2361,1,0,0,0,2368,2363,1,0,0,0,2368,2365,1,0,0,0,2369,151,1,0,0, - 0,2370,2371,6,76,-1,0,2371,2373,3,154,77,0,2372,2374,3,156,78,0, - 2373,2372,1,0,0,0,2373,2374,1,0,0,0,2374,2382,1,0,0,0,2375,2376, - 10,2,0,0,2376,2381,3,152,76,3,2377,2378,10,1,0,0,2378,2379,5,9,0, - 0,2379,2381,3,152,76,2,2380,2375,1,0,0,0,2380,2377,1,0,0,0,2381, - 2384,1,0,0,0,2382,2380,1,0,0,0,2382,2383,1,0,0,0,2383,153,1,0,0, - 0,2384,2382,1,0,0,0,2385,2411,3,212,106,0,2386,2387,5,1,0,0,2387, - 2411,5,2,0,0,2388,2389,5,169,0,0,2389,2390,5,1,0,0,2390,2395,3,152, - 76,0,2391,2392,5,3,0,0,2392,2394,3,152,76,0,2393,2391,1,0,0,0,2394, - 2397,1,0,0,0,2395,2393,1,0,0,0,2395,2396,1,0,0,0,2396,2398,1,0,0, - 0,2397,2395,1,0,0,0,2398,2399,5,2,0,0,2399,2411,1,0,0,0,2400,2401, - 5,1,0,0,2401,2402,3,152,76,0,2402,2403,5,2,0,0,2403,2411,1,0,0,0, - 2404,2411,5,10,0,0,2405,2411,5,11,0,0,2406,2407,5,12,0,0,2407,2408, - 3,152,76,0,2408,2409,5,13,0,0,2409,2411,1,0,0,0,2410,2385,1,0,0, - 0,2410,2386,1,0,0,0,2410,2388,1,0,0,0,2410,2400,1,0,0,0,2410,2404, - 1,0,0,0,2410,2405,1,0,0,0,2410,2406,1,0,0,0,2411,155,1,0,0,0,2412, - 2414,5,257,0,0,2413,2415,5,261,0,0,2414,2413,1,0,0,0,2414,2415,1, - 0,0,0,2415,2443,1,0,0,0,2416,2418,5,255,0,0,2417,2419,5,261,0,0, - 2418,2417,1,0,0,0,2418,2419,1,0,0,0,2419,2443,1,0,0,0,2420,2422, - 5,261,0,0,2421,2423,5,261,0,0,2422,2421,1,0,0,0,2422,2423,1,0,0, - 0,2423,2443,1,0,0,0,2424,2425,5,14,0,0,2425,2426,5,265,0,0,2426, - 2428,5,15,0,0,2427,2429,5,261,0,0,2428,2427,1,0,0,0,2428,2429,1, - 0,0,0,2429,2443,1,0,0,0,2430,2432,5,14,0,0,2431,2433,5,265,0,0,2432, - 2431,1,0,0,0,2432,2433,1,0,0,0,2433,2434,1,0,0,0,2434,2436,5,3,0, - 0,2435,2437,5,265,0,0,2436,2435,1,0,0,0,2436,2437,1,0,0,0,2437,2438, - 1,0,0,0,2438,2440,5,15,0,0,2439,2441,5,261,0,0,2440,2439,1,0,0,0, - 2440,2441,1,0,0,0,2441,2443,1,0,0,0,2442,2412,1,0,0,0,2442,2416, - 1,0,0,0,2442,2420,1,0,0,0,2442,2424,1,0,0,0,2442,2430,1,0,0,0,2443, - 157,1,0,0,0,2444,2445,3,212,106,0,2445,2446,5,249,0,0,2446,2447, - 3,102,51,0,2447,159,1,0,0,0,2448,2449,5,87,0,0,2449,2453,7,22,0, - 0,2450,2451,5,225,0,0,2451,2453,7,23,0,0,2452,2448,1,0,0,0,2452, - 2450,1,0,0,0,2453,161,1,0,0,0,2454,2455,5,115,0,0,2455,2456,5,121, - 0,0,2456,2460,3,164,82,0,2457,2458,5,177,0,0,2458,2460,7,24,0,0, - 2459,2454,1,0,0,0,2459,2457,1,0,0,0,2460,163,1,0,0,0,2461,2462,5, - 177,0,0,2462,2469,5,228,0,0,2463,2464,5,177,0,0,2464,2469,5,42,0, - 0,2465,2466,5,181,0,0,2466,2469,5,177,0,0,2467,2469,5,201,0,0,2468, - 2461,1,0,0,0,2468,2463,1,0,0,0,2468,2465,1,0,0,0,2468,2467,1,0,0, - 0,2469,165,1,0,0,0,2470,2476,3,102,51,0,2471,2472,3,212,106,0,2472, - 2473,5,16,0,0,2473,2474,3,102,51,0,2474,2476,1,0,0,0,2475,2470,1, - 0,0,0,2475,2471,1,0,0,0,2476,167,1,0,0,0,2477,2478,3,212,106,0,2478, - 2479,5,4,0,0,2479,2480,3,212,106,0,2480,2483,1,0,0,0,2481,2483,3, - 212,106,0,2482,2477,1,0,0,0,2482,2481,1,0,0,0,2483,169,1,0,0,0,2484, - 2489,3,168,84,0,2485,2486,5,3,0,0,2486,2488,3,168,84,0,2487,2485, - 1,0,0,0,2488,2491,1,0,0,0,2489,2487,1,0,0,0,2489,2490,1,0,0,0,2490, - 171,1,0,0,0,2491,2489,1,0,0,0,2492,2493,7,25,0,0,2493,173,1,0,0, - 0,2494,2497,3,176,88,0,2495,2497,3,180,90,0,2496,2494,1,0,0,0,2496, - 2495,1,0,0,0,2497,175,1,0,0,0,2498,2499,3,184,92,0,2499,177,1,0, - 0,0,2500,2501,3,184,92,0,2501,179,1,0,0,0,2502,2503,3,186,93,0,2503, - 181,1,0,0,0,2504,2505,3,186,93,0,2505,183,1,0,0,0,2506,2518,3,212, - 106,0,2507,2508,3,212,106,0,2508,2509,5,4,0,0,2509,2510,3,212,106, - 0,2510,2518,1,0,0,0,2511,2512,3,212,106,0,2512,2513,5,4,0,0,2513, - 2514,3,212,106,0,2514,2515,5,4,0,0,2515,2516,3,212,106,0,2516,2518, - 1,0,0,0,2517,2506,1,0,0,0,2517,2507,1,0,0,0,2517,2511,1,0,0,0,2518, - 185,1,0,0,0,2519,2531,3,212,106,0,2520,2521,3,212,106,0,2521,2522, - 5,4,0,0,2522,2523,3,212,106,0,2523,2531,1,0,0,0,2524,2525,3,212, - 106,0,2525,2526,5,4,0,0,2526,2527,3,212,106,0,2527,2528,5,4,0,0, - 2528,2529,3,212,106,0,2529,2531,1,0,0,0,2530,2519,1,0,0,0,2530,2520, - 1,0,0,0,2530,2524,1,0,0,0,2531,187,1,0,0,0,2532,2533,3,192,96,0, - 2533,189,1,0,0,0,2534,2535,3,192,96,0,2535,191,1,0,0,0,2536,2542, - 3,212,106,0,2537,2538,3,212,106,0,2538,2539,5,4,0,0,2539,2540,3, - 212,106,0,2540,2542,1,0,0,0,2541,2536,1,0,0,0,2541,2537,1,0,0,0, - 2542,193,1,0,0,0,2543,2544,3,212,106,0,2544,195,1,0,0,0,2545,2546, - 3,212,106,0,2546,197,1,0,0,0,2547,2548,3,204,102,0,2548,199,1,0, - 0,0,2549,2552,3,204,102,0,2550,2552,4,100,14,0,2551,2549,1,0,0,0, - 2551,2550,1,0,0,0,2552,201,1,0,0,0,2553,2554,3,212,106,0,2554,203, - 1,0,0,0,2555,2560,3,212,106,0,2556,2557,5,4,0,0,2557,2559,3,212, - 106,0,2558,2556,1,0,0,0,2559,2562,1,0,0,0,2560,2558,1,0,0,0,2560, - 2561,1,0,0,0,2561,205,1,0,0,0,2562,2560,1,0,0,0,2563,2567,3,208, - 104,0,2564,2567,5,55,0,0,2565,2567,5,51,0,0,2566,2563,1,0,0,0,2566, - 2564,1,0,0,0,2566,2565,1,0,0,0,2567,207,1,0,0,0,2568,2574,3,212, - 106,0,2569,2570,5,234,0,0,2570,2574,3,212,106,0,2571,2572,5,188, - 0,0,2572,2574,3,212,106,0,2573,2568,1,0,0,0,2573,2569,1,0,0,0,2573, - 2571,1,0,0,0,2574,209,1,0,0,0,2575,2580,3,212,106,0,2576,2577,5, - 3,0,0,2577,2579,3,212,106,0,2578,2576,1,0,0,0,2579,2582,1,0,0,0, - 2580,2578,1,0,0,0,2580,2581,1,0,0,0,2581,211,1,0,0,0,2582,2580,1, - 0,0,0,2583,2589,5,268,0,0,2584,2589,5,270,0,0,2585,2589,3,216,108, - 0,2586,2589,5,271,0,0,2587,2589,5,269,0,0,2588,2583,1,0,0,0,2588, - 2584,1,0,0,0,2588,2585,1,0,0,0,2588,2586,1,0,0,0,2588,2587,1,0,0, - 0,2589,213,1,0,0,0,2590,2592,5,256,0,0,2591,2590,1,0,0,0,2591,2592, - 1,0,0,0,2592,2593,1,0,0,0,2593,2603,5,266,0,0,2594,2596,5,256,0, - 0,2595,2594,1,0,0,0,2595,2596,1,0,0,0,2596,2597,1,0,0,0,2597,2603, - 5,267,0,0,2598,2600,5,256,0,0,2599,2598,1,0,0,0,2599,2600,1,0,0, - 0,2600,2601,1,0,0,0,2601,2603,5,265,0,0,2602,2591,1,0,0,0,2602,2595, - 1,0,0,0,2602,2599,1,0,0,0,2603,215,1,0,0,0,2604,2605,7,26,0,0,2605, - 217,1,0,0,0,340,221,232,236,240,244,248,252,262,267,271,277,281, - 302,306,310,314,322,326,329,336,345,351,355,361,368,377,386,400, - 409,415,422,432,439,447,455,484,487,490,494,500,505,512,517,521, - 529,535,539,553,561,580,605,608,618,622,635,641,646,650,656,665, - 671,675,682,686,694,699,703,707,710,717,725,730,734,738,741,750, - 757,762,766,770,773,781,784,788,791,799,804,828,834,836,842,848, - 850,858,860,866,872,874,889,894,901,913,915,923,925,943,946,950, - 954,972,975,991,1001,1006,1012,1015,1024,1036,1039,1045,1052,1057, - 1063,1067,1071,1077,1088,1097,1107,1110,1115,1117,1124,1130,1132, - 1136,1146,1152,1155,1157,1169,1176,1180,1183,1187,1191,1198,1207, - 1210,1214,1219,1223,1231,1234,1237,1244,1255,1258,1268,1271,1282, - 1287,1295,1298,1302,1306,1315,1324,1327,1336,1339,1342,1346,1357, - 1360,1363,1370,1373,1392,1396,1400,1404,1408,1412,1414,1425,1430, - 1439,1453,1456,1465,1468,1476,1479,1482,1487,1490,1502,1505,1513, - 1518,1522,1524,1526,1541,1543,1554,1575,1585,1596,1600,1602,1610, - 1621,1632,1649,1655,1666,1673,1677,1685,1687,1700,1708,1717,1723, - 1731,1737,1741,1746,1751,1757,1771,1773,1803,1814,1824,1827,1830, - 1835,1842,1845,1854,1857,1861,1864,1867,1882,1885,1904,1908,1916, - 1920,1945,1948,1957,1963,1969,1975,1988,1997,2019,2022,2025,2035, - 2037,2046,2052,2054,2062,2072,2078,2092,2101,2108,2113,2120,2130, - 2135,2142,2168,2173,2175,2182,2186,2193,2197,2214,2229,2236,2245, - 2255,2260,2269,2274,2282,2290,2293,2299,2302,2309,2317,2320,2328, - 2331,2357,2368,2373,2380,2382,2395,2410,2414,2418,2422,2428,2432, - 2436,2440,2442,2452,2459,2468,2475,2482,2489,2496,2517,2530,2541, - 2551,2560,2566,2573,2580,2588,2591,2595,2599,2602 - ]; - - private static __ATN: antlr.ATN; - public static get _ATN(): antlr.ATN { - if (!TrinoSqlParser.__ATN) { - TrinoSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(TrinoSqlParser._serializedATN); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameMaterializedView) { + listener.exitRenameMaterializedView(this); } - - return TrinoSqlParser.__ATN; } - - - private static readonly vocabulary = new antlr.Vocabulary(TrinoSqlParser.literalNames, TrinoSqlParser.symbolicNames, []); - - public override get vocabulary(): antlr.Vocabulary { - return TrinoSqlParser.vocabulary; + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameMaterializedView) { + return visitor.visitRenameMaterializedView(this); + } else { + return visitor.visitChildren(this); + } } - - private static readonly decisionsToDFA = TrinoSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); } - -export class ProgramContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class ShowSchemasContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public EOF(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EOF, 0)!; + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_SCHEMAS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMAS, 0)!; + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); } - public statements(): StatementsContext[]; - public statements(i: number): StatementsContext | null; - public statements(i?: number): StatementsContext[] | StatementsContext | null { + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { if (i === undefined) { - return this.getRuleContexts(StatementsContext); + return this.getRuleContexts(StringContext); } - return this.getRuleContext(i, StatementsContext); + return this.getRuleContext(i, StringContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_program; + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProgram) { - listener.enterProgram(this); + if(listener.enterShowSchemas) { + listener.enterShowSchemas(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProgram) { - listener.exitProgram(this); + if(listener.exitShowSchemas) { + listener.exitShowSchemas(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProgram) { - return visitor.visitProgram(this); + if (visitor.visitShowSchemas) { + return visitor.visitShowSchemas(this); } else { return visitor.visitChildren(this); } } } - - -export class StatementsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class DropTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public singleStatement(): SingleStatementContext { - return this.getRuleContext(0, SingleStatementContext)!; + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_statements; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStatements) { - listener.enterStatements(this); + if(listener.enterDropTable) { + listener.enterDropTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStatements) { - listener.exitStatements(this); + if(listener.exitDropTable) { + listener.exitDropTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStatements) { - return visitor.visitStatements(this); + if (visitor.visitDropTable) { + return visitor.visitDropTable(this); } else { return visitor.visitChildren(this); } } } - - -export class StandaloneClauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class SetSchemaAuthorizationContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public standaloneExpression(): StandaloneExpressionContext | null { - return this.getRuleContext(0, StandaloneExpressionContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; } - public standalonePathSpecification(): StandalonePathSpecificationContext | null { - return this.getRuleContext(0, StandalonePathSpecificationContext); + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; } - public standaloneType(): StandaloneTypeContext | null { - return this.getRuleContext(0, StandaloneTypeContext); + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; } - public standaloneRowPattern(): StandaloneRowPatternContext | null { - return this.getRuleContext(0, StandaloneRowPatternContext); + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneClause; + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneClause) { - listener.enterStandaloneClause(this); + if(listener.enterSetSchemaAuthorization) { + listener.enterSetSchemaAuthorization(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneClause) { - listener.exitStandaloneClause(this); + if(listener.exitSetSchemaAuthorization) { + listener.exitSetSchemaAuthorization(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneClause) { - return visitor.visitStandaloneClause(this); + if (visitor.visitSetSchemaAuthorization) { + return visitor.visitSetSchemaAuthorization(this); } else { return visitor.visitChildren(this); } } } - - -export class SingleStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public statement(): StatementContext { - return this.getRuleContext(0, StatementContext)!; +export class RollbackContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_ROLLBACK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLLBACK, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_singleStatement; + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WORK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSingleStatement) { - listener.enterSingleStatement(this); + if(listener.enterRollback) { + listener.enterRollback(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSingleStatement) { - listener.exitSingleStatement(this); + if(listener.exitRollback) { + listener.exitRollback(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSingleStatement) { - return visitor.visitSingleStatement(this); + if (visitor.visitRollback) { + return visitor.visitRollback(this); } else { return visitor.visitChildren(this); } } } - - -export class StandaloneExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class CommentTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneExpression; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneExpression) { - listener.enterStandaloneExpression(this); + if(listener.enterCommentTable) { + listener.enterCommentTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneExpression) { - listener.exitStandaloneExpression(this); + if(listener.exitCommentTable) { + listener.exitCommentTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneExpression) { - return visitor.visitStandaloneExpression(this); + if (visitor.visitCommentTable) { + return visitor.visitCommentTable(this); } else { return visitor.visitChildren(this); } } } +export class ExecuteImmediateContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; + } + public KW_IMMEDIATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IMMEDIATE, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_USING, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } - -export class StandalonePathSpecificationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, ExpressionContext); } - public pathSpecification(): PathSpecificationContext { - return this.getRuleContext(0, PathSpecificationContext)!; + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExecuteImmediate) { + listener.enterExecuteImmediate(this); + } } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExecuteImmediate) { + listener.exitExecuteImmediate(this); + } } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standalonePathSpecification; + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExecuteImmediate) { + return visitor.visitExecuteImmediate(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameViewContext extends StatementContext { + public _from_?: ViewRefContext; + public _to?: ViewNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandalonePathSpecification) { - listener.enterStandalonePathSpecification(this); + if(listener.enterRenameView) { + listener.enterRenameView(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandalonePathSpecification) { - listener.exitStandalonePathSpecification(this); + if(listener.exitRenameView) { + listener.exitRenameView(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandalonePathSpecification) { - return visitor.visitStandalonePathSpecification(this); + if (visitor.visitRenameView) { + return visitor.visitRenameView(this); } else { return visitor.visitChildren(this); } } } - - -export class StandaloneTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class SetPathContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_PATH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PATH, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneType; + public pathSpecification(): PathSpecificationContext { + return this.getRuleContext(0, PathSpecificationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneType) { - listener.enterStandaloneType(this); + if(listener.enterSetPath) { + listener.enterSetPath(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneType) { - listener.exitStandaloneType(this); + if(listener.exitSetPath) { + listener.exitSetPath(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneType) { - return visitor.visitStandaloneType(this); + if (visitor.visitSetPath) { + return visitor.visitSetPath(this); } else { return visitor.visitChildren(this); } } } +export class GrantRolesContext extends StatementContext { + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_GRANT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GRANT, 0)!; + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public principal(): PrincipalContext[]; + public principal(i: number): PrincipalContext | null; + public principal(i?: number): PrincipalContext[] | PrincipalContext | null { + if (i === undefined) { + return this.getRuleContexts(PrincipalContext); + } -export class StandaloneRowPatternContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, PrincipalContext); } - public rowPattern(): RowPatternContext { - return this.getRuleContext(0, RowPatternContext)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ADMIN, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneRowPattern; + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public KW_GRANTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRANTED, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public grantor(): GrantorContext | null { + return this.getRuleContext(0, GrantorContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneRowPattern) { - listener.enterStandaloneRowPattern(this); + if(listener.enterGrantRoles) { + listener.enterGrantRoles(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneRowPattern) { - listener.exitStandaloneRowPattern(this); + if(listener.exitGrantRoles) { + listener.exitGrantRoles(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneRowPattern) { - return visitor.visitStandaloneRowPattern(this); + if (visitor.visitGrantRoles) { + return visitor.visitGrantRoles(this); } else { return visitor.visitChildren(this); } } } - - -export class StatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_statement; - } - public override copyFrom(ctx: StatementContext): void { - super.copyFrom(ctx); - } -} -export class ExplainContext extends StatementContext { +export class CallContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_EXPLAIN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0)!; - } - public statement(): StatementContext { - return this.getRuleContext(0, StatementContext)!; - } - public KW_ANALYZE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ANALYZE, 0); + public KW_CALL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CALL, 0)!; } - public KW_VERBOSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_VERBOSE, 0); + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; } - public explainOption(): ExplainOptionContext[]; - public explainOption(i: number): ExplainOptionContext | null; - public explainOption(i?: number): ExplainOptionContext[] | ExplainOptionContext | null { + public callArgument(): CallArgumentContext[]; + public callArgument(i: number): CallArgumentContext | null; + public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { if (i === undefined) { - return this.getRuleContexts(ExplainOptionContext); + return this.getRuleContexts(CallArgumentContext); } - return this.getRuleContext(i, ExplainOptionContext); + return this.getRuleContext(i, CallArgumentContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExplain) { - listener.enterExplain(this); + if(listener.enterCall) { + listener.enterCall(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExplain) { - listener.exitExplain(this); + if(listener.exitCall) { + listener.exitCall(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExplain) { - return visitor.visitExplain(this); + if (visitor.visitCall) { + return visitor.visitCall(this); } else { return visitor.visitChildren(this); } } } -export class PrepareContext extends StatementContext { +export class RefreshMaterializedViewContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_PREPARE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + public KW_REFRESH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REFRESH, 0)!; } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; } - public statement(): StatementContext { - return this.getRuleContext(0, StatementContext)!; + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPrepare) { - listener.enterPrepare(this); + if(listener.enterRefreshMaterializedView) { + listener.enterRefreshMaterializedView(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPrepare) { - listener.exitPrepare(this); + if(listener.exitRefreshMaterializedView) { + listener.exitRefreshMaterializedView(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPrepare) { - return visitor.visitPrepare(this); + if (visitor.visitRefreshMaterializedView) { + return visitor.visitRefreshMaterializedView(this); } else { return visitor.visitChildren(this); } } } -export class DropMaterializedViewContext extends StatementContext { +export class ShowCreateMaterializedViewContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; } public KW_MATERIALIZED(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; @@ -13294,141 +22036,183 @@ export class DropMaterializedViewContext extends StatementContext { public KW_VIEW(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropMaterializedView) { - listener.enterDropMaterializedView(this); + if(listener.enterShowCreateMaterializedView) { + listener.enterShowCreateMaterializedView(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropMaterializedView) { - listener.exitDropMaterializedView(this); + if(listener.exitShowCreateMaterializedView) { + listener.exitShowCreateMaterializedView(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropMaterializedView) { - return visitor.visitDropMaterializedView(this); + if (visitor.visitShowCreateMaterializedView) { + return visitor.visitShowCreateMaterializedView(this); } else { return visitor.visitChildren(this); } } } -export class SetMaterializedViewPropertiesContext extends StatementContext { +export class CreateCatalogContext extends StatementContext { + public _catalog?: CatalogNameCreateContext; + public _connectorName?: IdentifierContext; public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + public KW_CATALOG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CATALOG, 0)!; } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_USING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_USING, 0)!; } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public catalogNameCreate(): CatalogNameCreateContext { + return this.getRuleContext(0, CatalogNameCreateContext)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_PROPERTIES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); } - public propertyAssignments(): PropertyAssignmentsContext { - return this.getRuleContext(0, PropertyAssignmentsContext)!; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); + } + public principal(): PrincipalContext | null { + return this.getRuleContext(0, PrincipalContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetMaterializedViewProperties) { - listener.enterSetMaterializedViewProperties(this); + if(listener.enterCreateCatalog) { + listener.enterCreateCatalog(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetMaterializedViewProperties) { - listener.exitSetMaterializedViewProperties(this); + if(listener.exitCreateCatalog) { + listener.exitCreateCatalog(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetMaterializedViewProperties) { - return visitor.visitSetMaterializedViewProperties(this); + if (visitor.visitCreateCatalog) { + return visitor.visitCreateCatalog(this); } else { return visitor.visitChildren(this); } } } -export class UseContext extends StatementContext { +export class ShowFunctionsContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_USE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_USE, 0)!; + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_FUNCTIONS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0)!; + } + public schemaRef(): SchemaRefContext | null { + return this.getRuleContext(0, SchemaRefContext); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUse) { - listener.enterUse(this); + if(listener.enterShowFunctions) { + listener.enterShowFunctions(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUse) { - listener.exitUse(this); + if(listener.exitShowFunctions) { + listener.exitShowFunctions(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUse) { - return visitor.visitUse(this); + if (visitor.visitShowFunctions) { + return visitor.visitShowFunctions(this); } else { return visitor.visitChildren(this); } } } -export class DeallocateContext extends StatementContext { +export class DescribeOutputContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DEALLOCATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DEALLOCATE, 0)!; + public KW_DESCRIBE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; } - public KW_PREPARE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + public KW_OUTPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OUTPUT, 0)!; } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDeallocate) { - listener.enterDeallocate(this); + if(listener.enterDescribeOutput) { + listener.enterDescribeOutput(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDeallocate) { - listener.exitDeallocate(this); + if(listener.exitDescribeOutput) { + listener.exitDescribeOutput(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDeallocate) { - return visitor.visitDeallocate(this); + if (visitor.visitDescribeOutput) { + return visitor.visitDescribeOutput(this); } else { return visitor.visitChildren(this); } } } -export class RenameTableContext extends StatementContext { - public _from_?: TableNameContext; - public _to?: TableNameCreateContext; +export class SetTablePropertiesContext extends StatementContext { + public _tableName?: TableRefContext; public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); @@ -13439,3098 +22223,2933 @@ export class RenameTableContext extends StatementContext { public KW_TABLE(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; + public KW_PROPERTIES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public propertyAssignments(): PropertyAssignmentsContext { + return this.getRuleContext(0, PropertyAssignmentsContext)!; } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameTable) { - listener.enterRenameTable(this); + if(listener.enterSetTableProperties) { + listener.enterSetTableProperties(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameTable) { - listener.exitRenameTable(this); + if(listener.exitSetTableProperties) { + listener.exitSetTableProperties(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameTable) { - return visitor.visitRenameTable(this); + if (visitor.visitSetTableProperties) { + return visitor.visitSetTableProperties(this); } else { return visitor.visitChildren(this); } } } -export class CommitContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RootQueryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_COMMIT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMIT, 0)!; + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WORK, 0); + public withFunction(): WithFunctionContext | null { + return this.getRuleContext(0, WithFunctionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rootQuery; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCommit) { - listener.enterCommit(this); + if(listener.enterRootQuery) { + listener.enterRootQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCommit) { - listener.exitCommit(this); + if(listener.exitRootQuery) { + listener.exitRootQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCommit) { - return visitor.visitCommit(this); + if (visitor.visitRootQuery) { + return visitor.visitRootQuery(this); } else { return visitor.visitChildren(this); } } } -export class CreateRoleContext extends StatementContext { - public _name?: IdentifierContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + + +export class WithFunctionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public grantor(): GrantorContext | null { - return this.getRuleContext(0, GrantorContext); + public KW_WITH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WITH, 0)!; } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public functionSpecification(): FunctionSpecificationContext[]; + public functionSpecification(i: number): FunctionSpecificationContext | null; + public functionSpecification(i?: number): FunctionSpecificationContext[] | FunctionSpecificationContext | null { + if (i === undefined) { + return this.getRuleContexts(FunctionSpecificationContext); + } + + return this.getRuleContext(i, FunctionSpecificationContext); } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_withFunction; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateRole) { - listener.enterCreateRole(this); + if(listener.enterWithFunction) { + listener.enterWithFunction(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateRole) { - listener.exitCreateRole(this); + if(listener.exitWithFunction) { + listener.exitWithFunction(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateRole) { - return visitor.visitCreateRole(this); + if (visitor.visitWithFunction) { + return visitor.visitWithFunction(this); } else { return visitor.visitChildren(this); } } } -export class DropColumnContext extends StatementContext { - public _column?: ColumnNameContext; - public constructor(ctx: StatementContext) { + + +export class QueryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_query; + } + public override copyFrom(ctx: QueryContext): void { + super.copyFrom(ctx); + } +} +export class QueryStatementContext extends QueryContext { + public constructor(ctx: QueryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public queryNoWith(): QueryNoWithContext { + return this.getRuleContext(0, QueryNoWithContext)!; } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public with(): WithContext | null { + return this.getRuleContext(0, WithContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQueryStatement) { + listener.enterQueryStatement(this); + } } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQueryStatement) { + listener.exitQueryStatement(this); + } } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQueryStatement) { + return visitor.visitQueryStatement(this); + } else { + return visitor.visitChildren(this); + } } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; +} + + +export class WithContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode[]; - public KW_IF(i: number): antlr.TerminalNode | null; - public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_IF); - } else { - return this.getToken(TrinoSqlParser.KW_IF, i); - } + public KW_WITH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WITH, 0)!; } - public KW_EXISTS(): antlr.TerminalNode[]; - public KW_EXISTS(i: number): antlr.TerminalNode | null; - public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_EXISTS); - } else { - return this.getToken(TrinoSqlParser.KW_EXISTS, i); - } + public namedQuery(): NamedQueryContext[]; + public namedQuery(i: number): NamedQueryContext | null; + public namedQuery(i?: number): NamedQueryContext[] | NamedQueryContext | null { + if (i === undefined) { + return this.getRuleContexts(NamedQueryContext); + } + + return this.getRuleContext(i, NamedQueryContext); + } + public KW_RECURSIVE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RECURSIVE, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_with; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropColumn) { - listener.enterDropColumn(this); + if(listener.enterWith) { + listener.enterWith(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropColumn) { - listener.exitDropColumn(this); + if(listener.exitWith) { + listener.exitWith(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropColumn) { - return visitor.visitDropColumn(this); + if (visitor.visitWith) { + return visitor.visitWith(this); } else { return visitor.visitChildren(this); } } } -export class DropViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; - } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + + +export class TableElementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public columnDefinition(): ColumnDefinitionContext | null { + return this.getRuleContext(0, ColumnDefinitionContext); } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public likeClause(): LikeClauseContext | null { + return this.getRuleContext(0, LikeClauseContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_tableElement; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropView) { - listener.enterDropView(this); + if(listener.enterTableElement) { + listener.enterTableElement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropView) { - listener.exitDropView(this); + if(listener.exitTableElement) { + listener.exitTableElement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropView) { - return visitor.visitDropView(this); + if (visitor.visitTableElement) { + return visitor.visitTableElement(this); } else { return visitor.visitChildren(this); } } } -export class ShowTablesContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ColumnDefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public columnNameCreate(): ColumnNameCreateContext { + return this.getRuleContext(0, ColumnNameCreateContext)!; } - public KW_TABLES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLES, 0)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } - - return this.getRuleContext(i, StringContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowTables) { - listener.enterShowTables(this); + if(listener.enterColumnDefinition) { + listener.enterColumnDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowTables) { - listener.exitShowTables(this); + if(listener.exitColumnDefinition) { + listener.exitColumnDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowTables) { - return visitor.visitShowTables(this); + if (visitor.visitColumnDefinition) { + return visitor.visitColumnDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetViewAuthorizationContext extends StatementContext { - public _from_?: ViewNameContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class LikeClauseContext extends antlr.ParserRuleContext { + public _optionType?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_LIKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_PROPERTIES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); } - public KW_AUTHORIZATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + public KW_INCLUDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INCLUDING, 0); } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public KW_EXCLUDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXCLUDING, 0); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_likeClause; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetViewAuthorization) { - listener.enterSetViewAuthorization(this); + if(listener.enterLikeClause) { + listener.enterLikeClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetViewAuthorization) { - listener.exitSetViewAuthorization(this); + if(listener.exitLikeClause) { + listener.exitLikeClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetViewAuthorization) { - return visitor.visitSetViewAuthorization(this); + if (visitor.visitLikeClause) { + return visitor.visitLikeClause(this); } else { return visitor.visitChildren(this); } } } -export class ShowTableCommentContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; + + +export class PropertiesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public propertyAssignments(): PropertyAssignmentsContext { + return this.getRuleContext(0, PropertyAssignmentsContext)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_properties; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowTableComment) { - listener.enterShowTableComment(this); + if(listener.enterProperties) { + listener.enterProperties(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowTableComment) { - listener.exitShowTableComment(this); + if(listener.exitProperties) { + listener.exitProperties(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowTableComment) { - return visitor.visitShowTableComment(this); + if (visitor.visitProperties) { + return visitor.visitProperties(this); } else { return visitor.visitChildren(this); } } } -export class ShowCatalogsContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_CATALOGS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CATALOGS, 0)!; - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); + + +export class PropertyAssignmentsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { + public property(): PropertyContext[]; + public property(i: number): PropertyContext | null; + public property(i?: number): PropertyContext[] | PropertyContext | null { if (i === undefined) { - return this.getRuleContexts(StringContext); + return this.getRuleContexts(PropertyContext); } - return this.getRuleContext(i, StringContext); + return this.getRuleContext(i, PropertyContext); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_propertyAssignments; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCatalogs) { - listener.enterShowCatalogs(this); + if(listener.enterPropertyAssignments) { + listener.enterPropertyAssignments(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCatalogs) { - listener.exitShowCatalogs(this); + if(listener.exitPropertyAssignments) { + listener.exitPropertyAssignments(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCatalogs) { - return visitor.visitShowCatalogs(this); + if (visitor.visitPropertyAssignments) { + return visitor.visitPropertyAssignments(this); } else { return visitor.visitChildren(this); } } } -export class ShowRolesContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PropertyContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_ROLES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLES, 0)!; + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT, 0); + public propertyValue(): PropertyValueContext { + return this.getRuleContext(0, PropertyValueContext)!; } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_property; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterProperty) { + listener.enterProperty(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitProperty) { + listener.exitProperty(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitProperty) { + return visitor.visitProperty(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class PropertyValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_propertyValue; + } + public override copyFrom(ctx: PropertyValueContext): void { + super.copyFrom(ctx); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); +} +export class DefaultPropertyValueContext extends PropertyValueContext { + public constructor(ctx: PropertyValueContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_DEFAULT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowRoles) { - listener.enterShowRoles(this); + if(listener.enterDefaultPropertyValue) { + listener.enterDefaultPropertyValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowRoles) { - listener.exitShowRoles(this); + if(listener.exitDefaultPropertyValue) { + listener.exitDefaultPropertyValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowRoles) { - return visitor.visitShowRoles(this); + if (visitor.visitDefaultPropertyValue) { + return visitor.visitDefaultPropertyValue(this); } else { return visitor.visitChildren(this); } } } -export class MergeContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class NonDefaultPropertyValueContext extends PropertyValueContext { + public constructor(ctx: PropertyValueContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_MERGE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MERGE, 0)!; - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTO, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_USING, 0)!; - } - public relation(): RelationContext { - return this.getRuleContext(0, RelationContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public mergeCase(): MergeCaseContext[]; - public mergeCase(i: number): MergeCaseContext | null; - public mergeCase(i?: number): MergeCaseContext[] | MergeCaseContext | null { - if (i === undefined) { - return this.getRuleContexts(MergeCaseContext); - } - - return this.getRuleContext(i, MergeCaseContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMerge) { - listener.enterMerge(this); + if(listener.enterNonDefaultPropertyValue) { + listener.enterNonDefaultPropertyValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMerge) { - listener.exitMerge(this); + if(listener.exitNonDefaultPropertyValue) { + listener.exitNonDefaultPropertyValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMerge) { - return visitor.visitMerge(this); + if (visitor.visitNonDefaultPropertyValue) { + return visitor.visitNonDefaultPropertyValue(this); } else { return visitor.visitChildren(this); } } } -export class RenameColumnContext extends StatementContext { - public _from_?: ColumnNameContext; - public _to?: ColumnNameCreateContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class QueryNoWithContext extends antlr.ParserRuleContext { + public _offset?: RowCountContext; + public _limit?: LimitRowCountContext; + public _fetchFirst?: RowCountContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public queryTerm(): QueryTermContext { + return this.getRuleContext(0, QueryTermContext)!; } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + public KW_OFFSET(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OFFSET, 0); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public rowCount(): RowCountContext[]; + public rowCount(i: number): RowCountContext | null; + public rowCount(i?: number): RowCountContext[] | RowCountContext | null { + if (i === undefined) { + return this.getRuleContexts(RowCountContext); + } + + return this.getRuleContext(i, RowCountContext); } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; + public KW_LIMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIMIT, 0); } - public columnNameCreate(): ColumnNameCreateContext { - return this.getRuleContext(0, ColumnNameCreateContext)!; + public KW_FETCH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FETCH, 0); } - public KW_IF(): antlr.TerminalNode[]; - public KW_IF(i: number): antlr.TerminalNode | null; - public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public limitRowCount(): LimitRowCountContext | null { + return this.getRuleContext(0, LimitRowCountContext); + } + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FIRST, 0); + } + public KW_NEXT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NEXT, 0); + } + public KW_ROW(): antlr.TerminalNode[]; + public KW_ROW(i: number): antlr.TerminalNode | null; + public KW_ROW(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_IF); + return this.getTokens(TrinoSqlParser.KW_ROW); } else { - return this.getToken(TrinoSqlParser.KW_IF, i); + return this.getToken(TrinoSqlParser.KW_ROW, i); } } - public KW_EXISTS(): antlr.TerminalNode[]; - public KW_EXISTS(i: number): antlr.TerminalNode | null; - public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_ROWS(): antlr.TerminalNode[]; + public KW_ROWS(i: number): antlr.TerminalNode | null; + public KW_ROWS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_EXISTS); + return this.getTokens(TrinoSqlParser.KW_ROWS); } else { - return this.getToken(TrinoSqlParser.KW_EXISTS, i); + return this.getToken(TrinoSqlParser.KW_ROWS, i); } } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameColumn) { - listener.enterRenameColumn(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameColumn) { - listener.exitRenameColumn(this); - } - } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameColumn) { - return visitor.visitRenameColumn(this); - } else { - return visitor.visitChildren(this); - } - } -} -export class CommentColumnContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; - } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ONLY, 0); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public KW_TIES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TIES, 0); } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULL, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryNoWith; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCommentColumn) { - listener.enterCommentColumn(this); + if(listener.enterQueryNoWith) { + listener.enterQueryNoWith(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCommentColumn) { - listener.exitCommentColumn(this); + if(listener.exitQueryNoWith) { + listener.exitQueryNoWith(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCommentColumn) { - return visitor.visitCommentColumn(this); + if (visitor.visitQueryNoWith) { + return visitor.visitQueryNoWith(this); } else { return visitor.visitChildren(this); } } } -export class RevokeRolesContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_REVOKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; - } - public roles(): RolesContext { - return this.getRuleContext(0, RolesContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; - } - public principal(): PrincipalContext[]; - public principal(i: number): PrincipalContext | null; - public principal(i?: number): PrincipalContext[] | PrincipalContext | null { - if (i === undefined) { - return this.getRuleContexts(PrincipalContext); - } - return this.getRuleContext(i, PrincipalContext); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ADMIN, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOR, 0); - } - public KW_GRANTED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRANTED, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); - } - public grantor(): GrantorContext | null { - return this.getRuleContext(0, GrantorContext); + +export class LimitRowCountContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public rowCount(): RowCountContext | null { + return this.getRuleContext(0, RowCountContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_limitRowCount; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRevokeRoles) { - listener.enterRevokeRoles(this); + if(listener.enterLimitRowCount) { + listener.enterLimitRowCount(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRevokeRoles) { - listener.exitRevokeRoles(this); + if(listener.exitLimitRowCount) { + listener.exitLimitRowCount(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRevokeRoles) { - return visitor.visitRevokeRoles(this); + if (visitor.visitLimitRowCount) { + return visitor.visitLimitRowCount(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + + +export class RowCountContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowCount; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateTable) { - listener.enterShowCreateTable(this); + if(listener.enterRowCount) { + listener.enterRowCount(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateTable) { - listener.exitShowCreateTable(this); + if(listener.exitRowCount) { + listener.exitRowCount(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateTable) { - return visitor.visitShowCreateTable(this); + if (visitor.visitRowCount) { + return visitor.visitRowCount(this); } else { return visitor.visitChildren(this); } } } -export class ShowColumnsContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SHOW, 0); - } - public KW_COLUMNS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COLUMNS, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); - } - public tableOrViewName(): TableOrViewNameContext | null { - return this.getRuleContext(0, TableOrViewNameContext); - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); - } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } - return this.getRuleContext(i, StringContext); + +export class QueryTermContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryTerm; } - public KW_DESCRIBE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0); + public override copyFrom(ctx: QueryTermContext): void { + super.copyFrom(ctx); } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DESC, 0); +} +export class QueryTermDefaultContext extends QueryTermContext { + public constructor(ctx: QueryTermContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public queryPrimary(): QueryPrimaryContext { + return this.getRuleContext(0, QueryPrimaryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowColumns) { - listener.enterShowColumns(this); + if(listener.enterQueryTermDefault) { + listener.enterQueryTermDefault(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowColumns) { - listener.exitShowColumns(this); + if(listener.exitQueryTermDefault) { + listener.exitQueryTermDefault(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowColumns) { - return visitor.visitShowColumns(this); + if (visitor.visitQueryTermDefault) { + return visitor.visitQueryTermDefault(this); } else { return visitor.visitChildren(this); } } } -export class ShowRoleGrantsContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class SetOperationContext extends QueryTermContext { + public _left?: QueryTermContext; + public _operator?: Token | null; + public _right?: QueryTermContext; + public constructor(ctx: QueryTermContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + public queryTerm(): QueryTermContext[]; + public queryTerm(i: number): QueryTermContext | null; + public queryTerm(i?: number): QueryTermContext[] | QueryTermContext | null { + if (i === undefined) { + return this.getRuleContexts(QueryTermContext); + } + + return this.getRuleContext(i, QueryTermContext); } - public KW_GRANTS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + public KW_INTERSECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INTERSECT, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNION, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_EXCEPT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXCEPT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowRoleGrants) { - listener.enterShowRoleGrants(this); + if(listener.enterSetOperation) { + listener.enterSetOperation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowRoleGrants) { - listener.exitShowRoleGrants(this); + if(listener.exitSetOperation) { + listener.exitSetOperation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowRoleGrants) { - return visitor.visitShowRoleGrants(this); + if (visitor.visitSetOperation) { + return visitor.visitSetOperation(this); } else { return visitor.visitChildren(this); } } } -export class AddColumnContext extends StatementContext { - public _column?: ColumnDefinitionContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_ADD(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ADD, 0)!; - } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + + +export class QueryPrimaryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public columnDefinition(): ColumnDefinitionContext { - return this.getRuleContext(0, ColumnDefinitionContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryPrimary; } - public KW_IF(): antlr.TerminalNode[]; - public KW_IF(i: number): antlr.TerminalNode | null; - public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_IF); - } else { - return this.getToken(TrinoSqlParser.KW_IF, i); - } + public override copyFrom(ctx: QueryPrimaryContext): void { + super.copyFrom(ctx); } - public KW_EXISTS(): antlr.TerminalNode[]; - public KW_EXISTS(i: number): antlr.TerminalNode | null; - public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_EXISTS); - } else { - return this.getToken(TrinoSqlParser.KW_EXISTS, i); - } +} +export class SubqueryContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public queryNoWith(): QueryNoWithContext { + return this.getRuleContext(0, QueryNoWithContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAddColumn) { - listener.enterAddColumn(this); + if(listener.enterSubquery) { + listener.enterSubquery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAddColumn) { - listener.exitAddColumn(this); + if(listener.exitSubquery) { + listener.exitSubquery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAddColumn) { - return visitor.visitAddColumn(this); + if (visitor.visitSubquery) { + return visitor.visitSubquery(this); } else { return visitor.visitChildren(this); } } } -export class DenyContext extends StatementContext { - public _grantee?: PrincipalContext; - public constructor(ctx: StatementContext) { +export class QueryPrimaryDefaultContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DENY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DENY, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; - } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; - } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { - if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); - } - - return this.getRuleContext(i, PrivilegeContext); + public querySpecification(): QuerySpecificationContext { + return this.getRuleContext(0, QuerySpecificationContext)!; } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQueryPrimaryDefault) { + listener.enterQueryPrimaryDefault(this); + } } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQueryPrimaryDefault) { + listener.exitQueryPrimaryDefault(this); + } } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQueryPrimaryDefault) { + return visitor.visitQueryPrimaryDefault(this); + } else { + return visitor.visitChildren(this); + } } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); +} +export class TableContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDeny) { - listener.enterDeny(this); + if(listener.enterTable) { + listener.enterTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDeny) { - listener.exitDeny(this); + if(listener.exitTable) { + listener.exitTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDeny) { - return visitor.visitDeny(this); + if (visitor.visitTable) { + return visitor.visitTable(this); } else { return visitor.visitChildren(this); } } } -export class ResetSessionContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class InlineTableContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_RESET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RESET, 0)!; - } - public KW_SESSION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + public KW_VALUES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext)!; + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterResetSession) { - listener.enterResetSession(this); + if(listener.enterInlineTable) { + listener.enterInlineTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitResetSession) { - listener.exitResetSession(this); + if(listener.exitInlineTable) { + listener.exitInlineTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitResetSession) { - return visitor.visitResetSession(this); + if (visitor.visitInlineTable) { + return visitor.visitInlineTable(this); } else { return visitor.visitChildren(this); } } } -export class InsertIntoContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class SortItemContext extends antlr.ParserRuleContext { + public _ordering?: Token | null; + public _nullOrdering?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_INSERT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; + public columnRef(): ColumnRefContext | null { + return this.getRuleContext(0, ColumnRefContext); } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTO, 0)!; + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_NULLS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULLS, 0); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_ASC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ASC, 0); } - public columnList(): ColumnListContext | null { - return this.getRuleContext(0, ColumnListContext); + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESC, 0); + } + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FIRST, 0); + } + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LAST, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_sortItem; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInsertInto) { - listener.enterInsertInto(this); + if(listener.enterSortItem) { + listener.enterSortItem(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInsertInto) { - listener.exitInsertInto(this); + if(listener.exitSortItem) { + listener.exitSortItem(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInsertInto) { - return visitor.visitInsertInto(this); + if (visitor.visitSortItem) { + return visitor.visitSortItem(this); } else { return visitor.visitChildren(this); } } } -export class ShowSessionContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class QuerySpecificationContext extends antlr.ParserRuleContext { + public _where?: BooleanExpressionContext; + public _having?: BooleanExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_SELECT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SELECT, 0)!; } - public KW_SESSION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + public selectItem(): SelectItemContext[]; + public selectItem(i: number): SelectItemContext | null; + public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SelectItemContext); + } + + return this.getRuleContext(i, SelectItemContext); } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public relation(): RelationContext[]; + public relation(i: number): RelationContext | null; + public relation(i?: number): RelationContext[] | RelationContext | null { if (i === undefined) { - return this.getRuleContexts(StringContext); + return this.getRuleContexts(RelationContext); } - return this.getRuleContext(i, StringContext); + return this.getRuleContext(i, RelationContext); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GROUP, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public groupBy(): GroupByContext | null { + return this.getRuleContext(0, GroupByContext); + } + public KW_HAVING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_HAVING, 0); + } + public KW_WINDOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WINDOW, 0); + } + public windowDefinition(): WindowDefinitionContext[]; + public windowDefinition(i: number): WindowDefinitionContext | null; + public windowDefinition(i?: number): WindowDefinitionContext[] | WindowDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(WindowDefinitionContext); + } + + return this.getRuleContext(i, WindowDefinitionContext); + } + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(BooleanExpressionContext); + } + + return this.getRuleContext(i, BooleanExpressionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_querySpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowSession) { - listener.enterShowSession(this); + if(listener.enterQuerySpecification) { + listener.enterQuerySpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowSession) { - listener.exitShowSession(this); + if(listener.exitQuerySpecification) { + listener.exitQuerySpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowSession) { - return visitor.visitShowSession(this); + if (visitor.visitQuerySpecification) { + return visitor.visitQuerySpecification(this); } else { return visitor.visitChildren(this); } } } -export class CreateSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; - } - public schemaNameCreate(): SchemaNameCreateContext { - return this.getRuleContext(0, SchemaNameCreateContext)!; - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); - } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); + + +export class GroupByContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public principal(): PrincipalContext | null { - return this.getRuleContext(0, PrincipalContext); + public groupingElement(): GroupingElementContext[]; + public groupingElement(i: number): GroupingElementContext | null; + public groupingElement(i?: number): GroupingElementContext[] | GroupingElementContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingElementContext); + } + + return this.getRuleContext(i, GroupingElementContext); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupBy; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateSchema) { - listener.enterCreateSchema(this); + if(listener.enterGroupBy) { + listener.enterGroupBy(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateSchema) { - listener.exitCreateSchema(this); + if(listener.exitGroupBy) { + listener.exitGroupBy(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateSchema) { - return visitor.visitCreateSchema(this); + if (visitor.visitGroupBy) { + return visitor.visitGroupBy(this); } else { return visitor.visitChildren(this); } } } -export class ExecuteContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); + + +export class GroupingElementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupingElement; + } + public override copyFrom(ctx: GroupingElementContext): void { super.copyFrom(ctx); } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; +} +export class MultipleGroupingSetsContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_GROUPING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_USING, 0); + public KW_SETS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SETS, 0)!; } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public groupingSet(): GroupingSetContext[]; + public groupingSet(i: number): GroupingSetContext | null; + public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(GroupingSetContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, GroupingSetContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExecute) { - listener.enterExecute(this); + if(listener.enterMultipleGroupingSets) { + listener.enterMultipleGroupingSets(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExecute) { - listener.exitExecute(this); + if(listener.exitMultipleGroupingSets) { + listener.exitMultipleGroupingSets(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExecute) { - return visitor.visitExecute(this); + if (visitor.visitMultipleGroupingSets) { + return visitor.visitMultipleGroupingSets(this); } else { return visitor.visitChildren(this); } } } -export class RenameSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class SingleGroupingSetContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; - } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; - } - public schemaNameCreate(): SchemaNameCreateContext { - return this.getRuleContext(0, SchemaNameCreateContext)!; + public groupingSet(): GroupingSetContext { + return this.getRuleContext(0, GroupingSetContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameSchema) { - listener.enterRenameSchema(this); + if(listener.enterSingleGroupingSet) { + listener.enterSingleGroupingSet(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameSchema) { - listener.exitRenameSchema(this); + if(listener.exitSingleGroupingSet) { + listener.exitSingleGroupingSet(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameSchema) { - return visitor.visitRenameSchema(this); + if (visitor.visitSingleGroupingSet) { + return visitor.visitSingleGroupingSet(this); } else { return visitor.visitChildren(this); } } } -export class DropRoleContext extends StatementContext { - public _name?: IdentifierContext; - public constructor(ctx: StatementContext) { +export class CubeContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + public KW_CUBE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CUBE, 0)!; } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public groupingSet(): GroupingSetContext[]; + public groupingSet(i: number): GroupingSetContext | null; + public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingSetContext); + } + + return this.getRuleContext(i, GroupingSetContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropRole) { - listener.enterDropRole(this); + if(listener.enterCube) { + listener.enterCube(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropRole) { - listener.exitDropRole(this); + if(listener.exitCube) { + listener.exitCube(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropRole) { - return visitor.visitDropRole(this); + if (visitor.visitCube) { + return visitor.visitCube(this); } else { return visitor.visitChildren(this); } } } -export class AnalyzeContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class RollupContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ANALYZE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ANALYZE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_ROLLUP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLLUP, 0)!; } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public groupingSet(): GroupingSetContext[]; + public groupingSet(i: number): GroupingSetContext | null; + public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingSetContext); + } + + return this.getRuleContext(i, GroupingSetContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAnalyze) { - listener.enterAnalyze(this); + if(listener.enterRollup) { + listener.enterRollup(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAnalyze) { - listener.exitAnalyze(this); + if(listener.exitRollup) { + listener.exitRollup(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAnalyze) { - return visitor.visitAnalyze(this); + if (visitor.visitRollup) { + return visitor.visitRollup(this); } else { return visitor.visitChildren(this); } } } -export class SetRoleContext extends StatementContext { - public _role?: IdentifierContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); - } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NONE, 0); - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + + +export class GroupingSetContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public groupingTerm(): GroupingTermContext[]; + public groupingTerm(i: number): GroupingTermContext | null; + public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingTermContext); + } + + return this.getRuleContext(i, GroupingTermContext); } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupingSet; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetRole) { - listener.enterSetRole(this); + if(listener.enterGroupingSet) { + listener.enterGroupingSet(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetRole) { - listener.exitSetRole(this); + if(listener.exitGroupingSet) { + listener.exitGroupingSet(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetRole) { - return visitor.visitSetRole(this); + if (visitor.visitGroupingSet) { + return visitor.visitGroupingSet(this); } else { return visitor.visitChildren(this); } } } -export class ShowGrantsContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_GRANTS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + + +export class GroupingTermContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ON, 0); + public columnRef(): ColumnRefContext | null { + return this.getRuleContext(0, ColumnRefContext); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupingTerm; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowGrants) { - listener.enterShowGrants(this); + if(listener.enterGroupingTerm) { + listener.enterGroupingTerm(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowGrants) { - listener.exitShowGrants(this); + if(listener.exitGroupingTerm) { + listener.exitGroupingTerm(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowGrants) { - return visitor.visitShowGrants(this); + if (visitor.visitGroupingTerm) { + return visitor.visitGroupingTerm(this); } else { return visitor.visitChildren(this); } } } -export class DropSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; - } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + + +export class WindowDefinitionContext extends antlr.ParserRuleContext { + public _name?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public windowSpecification(): WindowSpecificationContext { + return this.getRuleContext(0, WindowSpecificationContext)!; } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CASCADE, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_windowDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropSchema) { - listener.enterDropSchema(this); + if(listener.enterWindowDefinition) { + listener.enterWindowDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropSchema) { - listener.exitDropSchema(this); + if(listener.exitWindowDefinition) { + listener.exitWindowDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropSchema) { - return visitor.visitDropSchema(this); + if (visitor.visitWindowDefinition) { + return visitor.visitWindowDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetTableAuthorizationContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class WindowSpecificationContext extends antlr.ParserRuleContext { + public _existingWindowName?: IdentifierContext; + public _expression?: ExpressionContext; + public _partition: ExpressionContext[] = []; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PARTITION, 0); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public KW_BY(): antlr.TerminalNode[]; + public KW_BY(i: number): antlr.TerminalNode | null; + public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_BY); + } else { + return this.getToken(TrinoSqlParser.KW_BY, i); + } } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); } - public KW_AUTHORIZATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + public windowFrame(): WindowFrameContext | null { + return this.getRuleContext(0, WindowFrameContext); } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_windowSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetTableAuthorization) { - listener.enterSetTableAuthorization(this); + if(listener.enterWindowSpecification) { + listener.enterWindowSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetTableAuthorization) { - listener.exitSetTableAuthorization(this); + if(listener.exitWindowSpecification) { + listener.exitWindowSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetTableAuthorization) { - return visitor.visitSetTableAuthorization(this); + if (visitor.visitWindowSpecification) { + return visitor.visitWindowSpecification(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class NamedQueryContext extends antlr.ParserRuleContext { + public _name?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_namedQuery; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateView) { - listener.enterShowCreateView(this); + if(listener.enterNamedQuery) { + listener.enterNamedQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateView) { - listener.exitShowCreateView(this); + if(listener.exitNamedQuery) { + listener.exitNamedQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateView) { - return visitor.visitShowCreateView(this); + if (visitor.visitNamedQuery) { + return visitor.visitNamedQuery(this); } else { return visitor.visitChildren(this); } } } -export class ShowColumnCommentContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + + +export class SetQuantifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DISTINCT, 0); } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_setQuantifier; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowColumnComment) { - listener.enterShowColumnComment(this); + if(listener.enterSetQuantifier) { + listener.enterSetQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowColumnComment) { - listener.exitShowColumnComment(this); + if(listener.exitSetQuantifier) { + listener.exitSetQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowColumnComment) { - return visitor.visitShowColumnComment(this); + if (visitor.visitSetQuantifier) { + return visitor.visitSetQuantifier(this); } else { return visitor.visitChildren(this); } } } -export class CreateTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; - } - public tableElement(): TableElementContext[]; - public tableElement(i: number): TableElementContext | null; - public tableElement(i?: number): TableElementContext[] | TableElementContext | null { - if (i === undefined) { - return this.getRuleContexts(TableElementContext); - } - return this.getRuleContext(i, TableElementContext); + +export class SelectItemContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_selectItem; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public override copyFrom(ctx: SelectItemContext): void { + super.copyFrom(ctx); } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); +} +export class SelectAllContext extends SelectItemContext { + public constructor(ctx: SelectItemContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + public primaryExpression(): PrimaryExpressionContext | null { + return this.getRuleContext(0, PrimaryExpressionContext); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public ASTERISK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.ASTERISK, 0)!; } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateTable) { - listener.enterCreateTable(this); + if(listener.enterSelectAll) { + listener.enterSelectAll(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateTable) { - listener.exitCreateTable(this); + if(listener.exitSelectAll) { + listener.exitSelectAll(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateTable) { - return visitor.visitCreateTable(this); + if (visitor.visitSelectAll) { + return visitor.visitSelectAll(this); } else { return visitor.visitChildren(this); } } } -export class StartTransactionContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class SelectSingleContext extends SelectItemContext { + public constructor(ctx: SelectItemContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_START(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_START, 0)!; + public columnRef(): ColumnRefContext | null { + return this.getRuleContext(0, ColumnRefContext); } - public KW_TRANSACTION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0)!; + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public transactionMode(): TransactionModeContext[]; - public transactionMode(i: number): TransactionModeContext | null; - public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null { - if (i === undefined) { - return this.getRuleContexts(TransactionModeContext); - } - - return this.getRuleContext(i, TransactionModeContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStartTransaction) { - listener.enterStartTransaction(this); + if(listener.enterSelectSingle) { + listener.enterSelectSingle(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStartTransaction) { - listener.exitStartTransaction(this); + if(listener.exitSelectSingle) { + listener.exitSelectSingle(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStartTransaction) { - return visitor.visitStartTransaction(this); + if (visitor.visitSelectSingle) { + return visitor.visitSelectSingle(this); } else { return visitor.visitChildren(this); } } } -export class CreateTableAsSelectContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; - } - public query(): QueryContext | null { - return this.getRuleContext(0, QueryContext); - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); - } - public columnListCreate(): ColumnListCreateContext | null { - return this.getRuleContext(0, ColumnListCreateContext); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); - } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + + +export class RelationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode[]; - public KW_WITH(i: number): antlr.TerminalNode | null; - public KW_WITH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_WITH); - } else { - return this.getToken(TrinoSqlParser.KW_WITH, i); - } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_relation; } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public override copyFrom(ctx: RelationContext): void { + super.copyFrom(ctx); } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DATA, 0); +} +export class RelationDefaultContext extends RelationContext { + public constructor(ctx: RelationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NO, 0); + public sampledRelation(): SampledRelationContext { + return this.getRuleContext(0, SampledRelationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateTableAsSelect) { - listener.enterCreateTableAsSelect(this); + if(listener.enterRelationDefault) { + listener.enterRelationDefault(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateTableAsSelect) { - listener.exitCreateTableAsSelect(this); + if(listener.exitRelationDefault) { + listener.exitRelationDefault(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateTableAsSelect) { - return visitor.visitCreateTableAsSelect(this); + if (visitor.visitRelationDefault) { + return visitor.visitRelationDefault(this); } else { return visitor.visitChildren(this); } } } -export class ShowStatsContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class JoinRelationContext extends RelationContext { + public _left?: RelationContext; + public _right?: SampledRelationContext; + public _rightRelation?: RelationContext; + public constructor(ctx: RelationContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public relation(): RelationContext[]; + public relation(i: number): RelationContext | null; + public relation(i?: number): RelationContext[] | RelationContext | null { + if (i === undefined) { + return this.getRuleContexts(RelationContext); + } + + return this.getRuleContext(i, RelationContext); } - public KW_STATS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + public KW_CROSS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CROSS, 0); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + public KW_JOIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_JOIN, 0); + } + public joinType(): JoinTypeContext | null { + return this.getRuleContext(0, JoinTypeContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public joinCriteria(): JoinCriteriaContext | null { + return this.getRuleContext(0, JoinCriteriaContext); + } + public KW_NATURAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NATURAL, 0); + } + public sampledRelation(): SampledRelationContext | null { + return this.getRuleContext(0, SampledRelationContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowStats) { - listener.enterShowStats(this); + if(listener.enterJoinRelation) { + listener.enterJoinRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowStats) { - listener.exitShowStats(this); + if(listener.exitJoinRelation) { + listener.exitJoinRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowStats) { - return visitor.visitShowStats(this); + if (visitor.visitJoinRelation) { + return visitor.visitJoinRelation(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JoinTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INNER, 0); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + public KW_LEFT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEFT, 0); } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OUTER, 0); + } + public KW_RIGHT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RIGHT, 0); } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FULL, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_joinType; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateSchema) { - listener.enterShowCreateSchema(this); + if(listener.enterJoinType) { + listener.enterJoinType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateSchema) { - listener.exitShowCreateSchema(this); + if(listener.exitJoinType) { + listener.exitJoinType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateSchema) { - return visitor.visitShowCreateSchema(this); + if (visitor.visitJoinType) { + return visitor.visitJoinType(this); } else { return visitor.visitChildren(this); } } } -export class RevokeContext extends StatementContext { - public _grantee?: PrincipalContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_REVOKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; - } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; - } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { - if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); - } - return this.getRuleContext(i, PrivilegeContext); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); - } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); - } - public KW_GRANT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRANT, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); + +export class JoinCriteriaContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOR, 0); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_USING, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_joinCriteria; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRevoke) { - listener.enterRevoke(this); + if(listener.enterJoinCriteria) { + listener.enterJoinCriteria(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRevoke) { - listener.exitRevoke(this); + if(listener.exitJoinCriteria) { + listener.exitJoinCriteria(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRevoke) { - return visitor.visitRevoke(this); + if (visitor.visitJoinCriteria) { + return visitor.visitJoinCriteria(this); } else { return visitor.visitChildren(this); } } } -export class UpdateContext extends StatementContext { - public _where?: BooleanExpressionContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + + +export class SampledRelationContext extends antlr.ParserRuleContext { + public _percentage?: ExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public patternRecognition(): PatternRecognitionContext { + return this.getRuleContext(0, PatternRecognitionContext)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_TABLESAMPLE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TABLESAMPLE, 0); } - public updateAssignment(): UpdateAssignmentContext[]; - public updateAssignment(i: number): UpdateAssignmentContext | null; - public updateAssignment(i?: number): UpdateAssignmentContext[] | UpdateAssignmentContext | null { - if (i === undefined) { - return this.getRuleContexts(UpdateAssignmentContext); - } - - return this.getRuleContext(i, UpdateAssignmentContext); + public sampleType(): SampleTypeContext | null { + return this.getRuleContext(0, SampleTypeContext); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_sampledRelation; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUpdate) { - listener.enterUpdate(this); + if(listener.enterSampledRelation) { + listener.enterSampledRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUpdate) { - listener.exitUpdate(this); + if(listener.exitSampledRelation) { + listener.exitSampledRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUpdate) { - return visitor.visitUpdate(this); + if (visitor.visitSampledRelation) { + return visitor.visitSampledRelation(this); } else { return visitor.visitChildren(this); } } } -export class TableExecuteContext extends StatementContext { - public _procedureName?: IdentifierContext; - public _where?: BooleanExpressionContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + + +export class SampleTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public KW_BERNOULLI(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BERNOULLI, 0); } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); + public KW_SYSTEM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SYSTEM, 0); } - public callArgument(): CallArgumentContext[]; - public callArgument(i: number): CallArgumentContext | null; - public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { - if (i === undefined) { - return this.getRuleContexts(CallArgumentContext); - } - - return this.getRuleContext(i, CallArgumentContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_sampleType; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableExecute) { - listener.enterTableExecute(this); + if(listener.enterSampleType) { + listener.enterSampleType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableExecute) { - listener.exitTableExecute(this); + if(listener.exitSampleType) { + listener.exitSampleType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableExecute) { - return visitor.visitTableExecute(this); + if (visitor.visitSampleType) { + return visitor.visitSampleType(this); } else { return visitor.visitChildren(this); } } } -export class DeleteContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; + + +export class TrimsSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_LEADING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEADING, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_TRAILING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRAILING, 0); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public KW_BOTH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BOTH, 0); } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_trimsSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDelete) { - listener.enterDelete(this); + if(listener.enterTrimsSpecification) { + listener.enterTrimsSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDelete) { - listener.exitDelete(this); + if(listener.exitTrimsSpecification) { + listener.exitTrimsSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDelete) { - return visitor.visitDelete(this); + if (visitor.visitTrimsSpecification) { + return visitor.visitTrimsSpecification(this); } else { return visitor.visitChildren(this); } } } -export class DescribeInputContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ListAggOverflowBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_DESCRIBE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public KW_INPUT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; + public KW_TRUNCATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public listaggCountIndication(): ListaggCountIndicationContext | null { + return this.getRuleContext(0, ListaggCountIndicationContext); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_listAggOverflowBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDescribeInput) { - listener.enterDescribeInput(this); + if(listener.enterListAggOverflowBehavior) { + listener.enterListAggOverflowBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDescribeInput) { - listener.exitDescribeInput(this); + if(listener.exitListAggOverflowBehavior) { + listener.exitListAggOverflowBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDescribeInput) { - return visitor.visitDescribeInput(this); + if (visitor.visitListAggOverflowBehavior) { + return visitor.visitListAggOverflowBehavior(this); } else { return visitor.visitChildren(this); } } } -export class ShowStatsForQueryContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ListaggCountIndicationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_STATS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + public KW_COUNT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COUNT, 0)!; } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_listaggCountIndication; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowStatsForQuery) { - listener.enterShowStatsForQuery(this); + if(listener.enterListaggCountIndication) { + listener.enterListaggCountIndication(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowStatsForQuery) { - listener.exitShowStatsForQuery(this); + if(listener.exitListaggCountIndication) { + listener.exitListaggCountIndication(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowStatsForQuery) { - return visitor.visitShowStatsForQuery(this); + if (visitor.visitListaggCountIndication) { + return visitor.visitListaggCountIndication(this); } else { return visitor.visitChildren(this); } } } -export class StatementDefaultContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PatternRecognitionContext extends antlr.ParserRuleContext { + public _expression?: ExpressionContext; + public _partition: ExpressionContext[] = []; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public aliasedRelation(): AliasedRelationContext { + return this.getRuleContext(0, AliasedRelationContext)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStatementDefault) { - listener.enterStatementDefault(this); + public KW_MATCH_RECOGNIZE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCH_RECOGNIZE, 0); + } + public KW_PATTERN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATTERN, 0); + } + public rowPattern(): RowPatternContext | null { + return this.getRuleContext(0, RowPatternContext); + } + public KW_DEFINE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINE, 0); + } + public variableDefinition(): VariableDefinitionContext[]; + public variableDefinition(i: number): VariableDefinitionContext | null; + public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(VariableDefinitionContext); } + + return this.getRuleContext(i, VariableDefinitionContext); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStatementDefault) { - listener.exitStatementDefault(this); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PARTITION, 0); + } + public KW_BY(): antlr.TerminalNode[]; + public KW_BY(i: number): antlr.TerminalNode | null; + public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_BY); + } else { + return this.getToken(TrinoSqlParser.KW_BY, i); + } + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); } + + return this.getRuleContext(i, SortItemContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStatementDefault) { - return visitor.visitStatementDefault(this); - } else { - return visitor.visitChildren(this); - } + public KW_MEASURES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MEASURES, 0); } -} -export class SetTimeZoneContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public measureDefinition(): MeasureDefinitionContext[]; + public measureDefinition(i: number): MeasureDefinitionContext | null; + public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(MeasureDefinitionContext); + } + + return this.getRuleContext(i, MeasureDefinitionContext); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public rowsPerMatch(): RowsPerMatchContext | null { + return this.getRuleContext(0, RowsPerMatchContext); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AFTER, 0); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + public KW_MATCH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCH, 0); } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOCAL, 0); + public skipTo(): SkipToContext | null { + return this.getRuleContext(0, SkipToContext); } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public KW_SUBSET(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SUBSET, 0); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetTimeZone) { - listener.enterSetTimeZone(this); + public subsetDefinition(): SubsetDefinitionContext[]; + public subsetDefinition(i: number): SubsetDefinitionContext | null; + public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(SubsetDefinitionContext); } + + return this.getRuleContext(i, SubsetDefinitionContext); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetTimeZone) { - listener.exitSetTimeZone(this); - } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetTimeZone) { - return visitor.visitSetTimeZone(this); - } else { - return visitor.visitChildren(this); + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); } + + return this.getRuleContext(i, ExpressionContext); } -} -export class TruncateTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_INITIAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INITIAL, 0); } - public KW_TRUNCATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0)!; + public KW_SEEK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SEEK, 0); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_patternRecognition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTruncateTable) { - listener.enterTruncateTable(this); + if(listener.enterPatternRecognition) { + listener.enterPatternRecognition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTruncateTable) { - listener.exitTruncateTable(this); + if(listener.exitPatternRecognition) { + listener.exitPatternRecognition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTruncateTable) { - return visitor.visitTruncateTable(this); + if (visitor.visitPatternRecognition) { + return visitor.visitPatternRecognition(this); } else { return visitor.visitChildren(this); } } } -export class CreateMaterializedViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + + +export class MeasureDefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public KW_AS(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; - } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OR, 0); - } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_REPLACE, 0); - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); - } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_measureDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateMaterializedView) { - listener.enterCreateMaterializedView(this); + if(listener.enterMeasureDefinition) { + listener.enterMeasureDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateMaterializedView) { - listener.exitCreateMaterializedView(this); + if(listener.exitMeasureDefinition) { + listener.exitMeasureDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateMaterializedView) { - return visitor.visitCreateMaterializedView(this); + if (visitor.visitMeasureDefinition) { + return visitor.visitMeasureDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetSessionContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RowsPerMatchContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_ONE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ONE, 0); } - public KW_SESSION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext)!; + public KW_PER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PER, 0)!; } - public EQ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EQ, 0)!; + public KW_MATCH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCH, 0)!; } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROWS, 0); + } + public emptyMatchHandling(): EmptyMatchHandlingContext | null { + return this.getRuleContext(0, EmptyMatchHandlingContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowsPerMatch; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetSession) { - listener.enterSetSession(this); + if(listener.enterRowsPerMatch) { + listener.enterRowsPerMatch(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetSession) { - listener.exitSetSession(this); + if(listener.exitRowsPerMatch) { + listener.exitRowsPerMatch(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetSession) { - return visitor.visitSetSession(this); + if (visitor.visitRowsPerMatch) { + return visitor.visitRowsPerMatch(this); } else { return visitor.visitChildren(this); } } } -export class CreateViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; - } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; + + +export class EmptyMatchHandlingContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_SHOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SHOW, 0); } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OR, 0); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + public KW_MATCHES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCHES, 0); } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + public KW_OMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OMIT, 0); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SECURITY, 0); + public KW_UNMATCHED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNMATCHED, 0); } - public KW_DEFINER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DEFINER, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROWS, 0); } - public KW_INVOKER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INVOKER, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_emptyMatchHandling; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateView) { - listener.enterCreateView(this); + if(listener.enterEmptyMatchHandling) { + listener.enterEmptyMatchHandling(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateView) { - listener.exitCreateView(this); + if(listener.exitEmptyMatchHandling) { + listener.exitEmptyMatchHandling(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateView) { - return visitor.visitCreateView(this); + if (visitor.visitEmptyMatchHandling) { + return visitor.visitEmptyMatchHandling(this); } else { return visitor.visitChildren(this); } } } -export class RenameMaterializedViewContext extends StatementContext { - public _from_?: ViewNameContext; - public _to?: ViewNameCreateContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + + +export class SkipToContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TO, 0); } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_NEXT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NEXT, 0); } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROW, 0); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public KW_PAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PAST, 0); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LAST, 0); } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FIRST, 0); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_skipTo; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameMaterializedView) { - listener.enterRenameMaterializedView(this); + if(listener.enterSkipTo) { + listener.enterSkipTo(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameMaterializedView) { - listener.exitRenameMaterializedView(this); + if(listener.exitSkipTo) { + listener.exitSkipTo(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameMaterializedView) { - return visitor.visitRenameMaterializedView(this); + if (visitor.visitSkipTo) { + return visitor.visitSkipTo(this); } else { return visitor.visitChildren(this); } } } -export class ShowSchemasContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_SCHEMAS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMAS, 0)!; - } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + + +export class SubsetDefinitionContext extends antlr.ParserRuleContext { + public _name?: IdentifierContext; + public _identifier?: IdentifierContext; + public _union: IdentifierContext[] = []; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { if (i === undefined) { - return this.getRuleContexts(StringContext); + return this.getRuleContexts(IdentifierContext); } - return this.getRuleContext(i, StringContext); + return this.getRuleContext(i, IdentifierContext); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_subsetDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowSchemas) { - listener.enterShowSchemas(this); + if(listener.enterSubsetDefinition) { + listener.enterSubsetDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowSchemas) { - listener.exitShowSchemas(this); + if(listener.exitSubsetDefinition) { + listener.exitSubsetDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowSchemas) { - return visitor.visitShowSchemas(this); + if (visitor.visitSubsetDefinition) { + return visitor.visitSubsetDefinition(this); } else { return visitor.visitChildren(this); } } } -export class DropTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + + +export class VariableDefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_variableDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropTable) { - listener.enterDropTable(this); + if(listener.enterVariableDefinition) { + listener.enterVariableDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropTable) { - listener.exitDropTable(this); + if(listener.exitVariableDefinition) { + listener.exitVariableDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropTable) { - return visitor.visitDropTable(this); + if (visitor.visitVariableDefinition) { + return visitor.visitVariableDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetSchemaAuthorizationContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + + +export class AliasedRelationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + public relationPrimary(): RelationPrimaryContext { + return this.getRuleContext(0, RelationPrimaryContext)!; } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public KW_AUTHORIZATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_aliasedRelation; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetSchemaAuthorization) { - listener.enterSetSchemaAuthorization(this); + if(listener.enterAliasedRelation) { + listener.enterAliasedRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetSchemaAuthorization) { - listener.exitSetSchemaAuthorization(this); + if(listener.exitAliasedRelation) { + listener.exitAliasedRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetSchemaAuthorization) { - return visitor.visitSetSchemaAuthorization(this); + if (visitor.visitAliasedRelation) { + return visitor.visitAliasedRelation(this); } else { return visitor.visitChildren(this); } } } -export class RollbackContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ColumnListCreateContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ROLLBACK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLLBACK, 0)!; + public columnNameCreate(): ColumnNameCreateContext[]; + public columnNameCreate(i: number): ColumnNameCreateContext | null; + public columnNameCreate(i?: number): ColumnNameCreateContext[] | ColumnNameCreateContext | null { + if (i === undefined) { + return this.getRuleContexts(ColumnNameCreateContext); + } + + return this.getRuleContext(i, ColumnNameCreateContext); } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WORK, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnListCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRollback) { - listener.enterRollback(this); + if(listener.enterColumnListCreate) { + listener.enterColumnListCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRollback) { - listener.exitRollback(this); + if(listener.exitColumnListCreate) { + listener.exitColumnListCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRollback) { - return visitor.visitRollback(this); + if (visitor.visitColumnListCreate) { + return visitor.visitColumnListCreate(this); } else { return visitor.visitChildren(this); } } } -export class CommentTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; + + +export class ColumnListContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public columnRef(): ColumnRefContext[]; + public columnRef(i: number): ColumnRefContext | null; + public columnRef(i?: number): ColumnRefContext[] | ColumnRefContext | null { + if (i === undefined) { + return this.getRuleContexts(ColumnRefContext); + } + + return this.getRuleContext(i, ColumnRefContext); } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULL, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnList; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCommentTable) { - listener.enterCommentTable(this); + if(listener.enterColumnList) { + listener.enterColumnList(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCommentTable) { - listener.exitCommentTable(this); + if(listener.exitColumnList) { + listener.exitColumnList(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCommentTable) { - return visitor.visitCommentTable(this); + if (visitor.visitColumnList) { + return visitor.visitColumnList(this); } else { return visitor.visitChildren(this); } } } -export class RenameViewContext extends StatementContext { - public _from_?: ViewNameContext; - public _to?: ViewNameCreateContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + + +export class ColumnAliasesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnAliases; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameView) { - listener.enterRenameView(this); + if(listener.enterColumnAliases) { + listener.enterColumnAliases(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameView) { - listener.exitRenameView(this); + if(listener.exitColumnAliases) { + listener.exitColumnAliases(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameView) { - return visitor.visitRenameView(this); + if (visitor.visitColumnAliases) { + return visitor.visitColumnAliases(this); } else { return visitor.visitChildren(this); } } } -export class SetPathContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RelationPrimaryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_relationPrimary; } - public KW_PATH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PATH, 0)!; + public override copyFrom(ctx: RelationPrimaryContext): void { + super.copyFrom(ctx); } - public pathSpecification(): PathSpecificationContext { - return this.getRuleContext(0, PathSpecificationContext)!; +} +export class SubqueryRelationContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetPath) { - listener.enterSetPath(this); + if(listener.enterSubqueryRelation) { + listener.enterSubqueryRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetPath) { - listener.exitSetPath(this); + if(listener.exitSubqueryRelation) { + listener.exitSubqueryRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetPath) { - return visitor.visitSetPath(this); + if (visitor.visitSubqueryRelation) { + return visitor.visitSubqueryRelation(this); } else { return visitor.visitChildren(this); } } } -export class GrantRolesContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class JsonTableContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_GRANT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GRANT, 0)!; + public KW_JSON_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_TABLE, 0)!; } - public roles(): RolesContext { - return this.getRuleContext(0, RolesContext)!; + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public KW_COLUMNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMNS, 0)!; } - public principal(): PrincipalContext[]; - public principal(i: number): PrincipalContext | null; - public principal(i?: number): PrincipalContext[] | PrincipalContext | null { + public jsonTableColumn(): JsonTableColumnContext[]; + public jsonTableColumn(i: number): JsonTableColumnContext | null; + public jsonTableColumn(i?: number): JsonTableColumnContext[] | JsonTableColumnContext | null { if (i === undefined) { - return this.getRuleContexts(PrincipalContext); + return this.getRuleContexts(JsonTableColumnContext); } - return this.getRuleContext(i, PrincipalContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + return this.getRuleContext(i, JsonTableColumnContext); } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + public KW_PLAN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PLAN, 0); } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); + public jsonTableSpecificPlan(): JsonTableSpecificPlanContext | null { + return this.getRuleContext(0, JsonTableSpecificPlanContext); } - public KW_GRANTED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRANTED, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); + public jsonTableDefaultPlan(): JsonTableDefaultPlanContext | null { + return this.getRuleContext(0, JsonTableDefaultPlanContext); } - public grantor(): GrantorContext | null { - return this.getRuleContext(0, GrantorContext); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_ERROR(): antlr.TerminalNode[]; + public KW_ERROR(i: number): antlr.TerminalNode | null; + public KW_ERROR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ERROR); + } else { + return this.getToken(TrinoSqlParser.KW_ERROR, i); + } } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGrantRoles) { - listener.enterGrantRoles(this); + if(listener.enterJsonTable) { + listener.enterJsonTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGrantRoles) { - listener.exitGrantRoles(this); + if(listener.exitJsonTable) { + listener.exitJsonTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGrantRoles) { - return visitor.visitGrantRoles(this); + if (visitor.visitJsonTable) { + return visitor.visitJsonTable(this); } else { return visitor.visitChildren(this); } } } -export class CallContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class ParenthesizedRelationContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_CALL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CALL, 0)!; - } - public functionName(): FunctionNameContext { - return this.getRuleContext(0, FunctionNameContext)!; - } - public callArgument(): CallArgumentContext[]; - public callArgument(i: number): CallArgumentContext | null; - public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { - if (i === undefined) { - return this.getRuleContexts(CallArgumentContext); - } - - return this.getRuleContext(i, CallArgumentContext); + public relation(): RelationContext { + return this.getRuleContext(0, RelationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCall) { - listener.enterCall(this); + if(listener.enterParenthesizedRelation) { + listener.enterParenthesizedRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCall) { - listener.exitCall(this); + if(listener.exitParenthesizedRelation) { + listener.exitParenthesizedRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCall) { - return visitor.visitCall(this); + if (visitor.visitParenthesizedRelation) { + return visitor.visitParenthesizedRelation(this); } else { return visitor.visitChildren(this); } } } -export class RefreshMaterializedViewContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class UnnestContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_REFRESH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REFRESH, 0)!; + public KW_UNNEST(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNNEST, 0)!; } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public KW_ORDINALITY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDINALITY, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRefreshMaterializedView) { - listener.enterRefreshMaterializedView(this); + if(listener.enterUnnest) { + listener.enterUnnest(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRefreshMaterializedView) { - listener.exitRefreshMaterializedView(this); + if(listener.exitUnnest) { + listener.exitUnnest(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRefreshMaterializedView) { - return visitor.visitRefreshMaterializedView(this); + if (visitor.visitUnnest) { + return visitor.visitUnnest(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateMaterializedViewContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class TableFunctionInvocationContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public tableFunctionCall(): TableFunctionCallContext { + return this.getRuleContext(0, TableFunctionCallContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateMaterializedView) { - listener.enterShowCreateMaterializedView(this); + if(listener.enterTableFunctionInvocation) { + listener.enterTableFunctionInvocation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateMaterializedView) { - listener.exitShowCreateMaterializedView(this); + if(listener.exitTableFunctionInvocation) { + listener.exitTableFunctionInvocation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateMaterializedView) { - return visitor.visitShowCreateMaterializedView(this); + if (visitor.visitTableFunctionInvocation) { + return visitor.visitTableFunctionInvocation(this); } else { return visitor.visitChildren(this); } } } -export class ShowFunctionsContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { +export class LateralContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_FUNCTIONS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0)!; - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); - } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } - - return this.getRuleContext(i, StringContext); + public KW_LATERAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LATERAL, 0)!; } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowFunctions) { - listener.enterShowFunctions(this); + if(listener.enterLateral) { + listener.enterLateral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowFunctions) { - listener.exitShowFunctions(this); + if(listener.exitLateral) { + listener.exitLateral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowFunctions) { - return visitor.visitShowFunctions(this); + if (visitor.visitLateral) { + return visitor.visitLateral(this); } else { return visitor.visitChildren(this); } } } -export class DescribeOutputContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class TableNameContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DESCRIBE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; - } - public KW_OUTPUT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_OUTPUT, 0)!; + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext)!; } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public queryPeriod(): QueryPeriodContext | null { + return this.getRuleContext(0, QueryPeriodContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDescribeOutput) { - listener.enterDescribeOutput(this); + if(listener.enterTableName) { + listener.enterTableName(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDescribeOutput) { - listener.exitDescribeOutput(this); + if(listener.exitTableName) { + listener.exitTableName(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDescribeOutput) { - return visitor.visitDescribeOutput(this); + if (visitor.visitTableName) { + return visitor.visitTableName(this); } else { return visitor.visitChildren(this); } } } -export class GrantContext extends StatementContext { - public _grantee?: PrincipalContext; - public constructor(ctx: StatementContext) { + + +export class JsonTableColumnContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonTableColumn; + } + public override copyFrom(ctx: JsonTableColumnContext): void { + super.copyFrom(ctx); + } +} +export class QueryColumnContext extends JsonTableColumnContext { + public _emptyBehavior?: JsonQueryBehaviorContext; + public _errorBehavior?: JsonQueryBehaviorContext; + public constructor(ctx: JsonTableColumnContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_GRANT(): antlr.TerminalNode[]; - public KW_GRANT(i: number): antlr.TerminalNode | null; - public KW_GRANT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_GRANT); - } else { - return this.getToken(TrinoSqlParser.KW_GRANT, i); - } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public KW_FORMAT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0)!; } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public jsonRepresentation(): JsonRepresentationContext { + return this.getRuleContext(0, JsonRepresentationContext)!; } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { - if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); - } - - return this.getRuleContext(i, PrivilegeContext); + public KW_PATH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATH, 0); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + public jsonQueryWrapperBehavior(): JsonQueryWrapperBehaviorContext | null { + return this.getRuleContext(0, JsonQueryWrapperBehaviorContext); } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRAPPER, 0); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public KW_QUOTES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_QUOTES, 0); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_OMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OMIT, 0); + } + public jsonQueryBehavior(): JsonQueryBehaviorContext[]; + public jsonQueryBehavior(i: number): JsonQueryBehaviorContext | null; + public jsonQueryBehavior(i?: number): JsonQueryBehaviorContext[] | JsonQueryBehaviorContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonQueryBehaviorContext); + } + + return this.getRuleContext(i, JsonQueryBehaviorContext); + } + public KW_SCALAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCALAR, 0); + } + public KW_TEXT_STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT_STRING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGrant) { - listener.enterGrant(this); + if(listener.enterQueryColumn) { + listener.enterQueryColumn(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGrant) { - listener.exitGrant(this); + if(listener.exitQueryColumn) { + listener.exitQueryColumn(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGrant) { - return visitor.visitGrant(this); + if (visitor.visitQueryColumn) { + return visitor.visitQueryColumn(this); } else { return visitor.visitChildren(this); } } } -export class SetTablePropertiesContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class NestedColumnsContext extends JsonTableColumnContext { + public constructor(ctx: JsonTableColumnContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_NESTED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NESTED, 0)!; } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_COLUMNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMNS, 0)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public jsonTableColumn(): JsonTableColumnContext[]; + public jsonTableColumn(i: number): JsonTableColumnContext | null; + public jsonTableColumn(i?: number): JsonTableColumnContext[] | JsonTableColumnContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonTableColumnContext); + } + + return this.getRuleContext(i, JsonTableColumnContext); } - public KW_PROPERTIES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; + public KW_PATH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATH, 0); } - public propertyAssignments(): PropertyAssignmentsContext { - return this.getRuleContext(0, PropertyAssignmentsContext)!; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetTableProperties) { - listener.enterSetTableProperties(this); + if(listener.enterNestedColumns) { + listener.enterNestedColumns(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetTableProperties) { - listener.exitSetTableProperties(this); + if(listener.exitNestedColumns) { + listener.exitNestedColumns(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetTableProperties) { - return visitor.visitSetTableProperties(this); + if (visitor.visitNestedColumns) { + return visitor.visitNestedColumns(this); } else { return visitor.visitChildren(this); } } } - - -export class QueryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_query; - } - public override copyFrom(ctx: QueryContext): void { - super.copyFrom(ctx); - } -} -export class QueryStatementContext extends QueryContext { - public constructor(ctx: QueryContext) { +export class ValueColumnContext extends JsonTableColumnContext { + public _emptyBehavior?: JsonValueBehaviorContext; + public _errorBehavior?: JsonValueBehaviorContext; + public constructor(ctx: JsonTableColumnContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public queryNoWith(): QueryNoWithContext { - return this.getRuleContext(0, QueryNoWithContext)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public with(): WithContext | null { - return this.getRuleContext(0, WithContext); + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryStatement) { - listener.enterQueryStatement(this); - } + public KW_PATH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATH, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryStatement) { - listener.exitQueryStatement(this); - } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryStatement) { - return visitor.visitQueryStatement(this); - } else { - return visitor.visitChildren(this); - } + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } -} - - -export class WithContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WITH, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public namedQuery(): NamedQueryContext[]; - public namedQuery(i: number): NamedQueryContext | null; - public namedQuery(i?: number): NamedQueryContext[] | NamedQueryContext | null { + public jsonValueBehavior(): JsonValueBehaviorContext[]; + public jsonValueBehavior(i: number): JsonValueBehaviorContext | null; + public jsonValueBehavior(i?: number): JsonValueBehaviorContext[] | JsonValueBehaviorContext | null { if (i === undefined) { - return this.getRuleContexts(NamedQueryContext); + return this.getRuleContexts(JsonValueBehaviorContext); } - return this.getRuleContext(i, NamedQueryContext); - } - public KW_RECURSIVE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RECURSIVE, 0); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_with; + return this.getRuleContext(i, JsonValueBehaviorContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWith) { - listener.enterWith(this); + if(listener.enterValueColumn) { + listener.enterValueColumn(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWith) { - listener.exitWith(this); + if(listener.exitValueColumn) { + listener.exitValueColumn(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWith) { - return visitor.visitWith(this); + if (visitor.visitValueColumn) { + return visitor.visitValueColumn(this); } else { return visitor.visitChildren(this); } } } - - -export class TableElementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class OrdinalityColumnContext extends JsonTableColumnContext { + public constructor(ctx: JsonTableColumnContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnDefinition(): ColumnDefinitionContext | null { - return this.getRuleContext(0, ColumnDefinitionContext); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public likeClause(): LikeClauseContext | null { - return this.getRuleContext(0, LikeClauseContext); + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableElement; + public KW_ORDINALITY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ORDINALITY, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableElement) { - listener.enterTableElement(this); + if(listener.enterOrdinalityColumn) { + listener.enterOrdinalityColumn(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableElement) { - listener.exitTableElement(this); + if(listener.exitOrdinalityColumn) { + listener.exitOrdinalityColumn(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableElement) { - return visitor.visitTableElement(this); + if (visitor.visitOrdinalityColumn) { + return visitor.visitOrdinalityColumn(this); } else { return visitor.visitChildren(this); } @@ -16538,159 +25157,155 @@ export class TableElementContext extends antlr.ParserRuleContext { } -export class ColumnDefinitionContext extends antlr.ParserRuleContext { +export class JsonTableSpecificPlanContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnNameCreate(): ColumnNameCreateContext { - return this.getRuleContext(0, ColumnNameCreateContext)!; - } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULL, 0); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonTableSpecificPlan; } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public override copyFrom(ctx: JsonTableSpecificPlanContext): void { + super.copyFrom(ctx); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); +} +export class CrossPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public planPrimary(): PlanPrimaryContext[]; + public planPrimary(i: number): PlanPrimaryContext | null; + public planPrimary(i?: number): PlanPrimaryContext[] | PlanPrimaryContext | null { + if (i === undefined) { + return this.getRuleContexts(PlanPrimaryContext); + } + + return this.getRuleContext(i, PlanPrimaryContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnDefinition; + public KW_CROSS(): antlr.TerminalNode[]; + public KW_CROSS(i: number): antlr.TerminalNode | null; + public KW_CROSS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_CROSS); + } else { + return this.getToken(TrinoSqlParser.KW_CROSS, i); + } } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnDefinition) { - listener.enterColumnDefinition(this); + if(listener.enterCrossPlan) { + listener.enterCrossPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnDefinition) { - listener.exitColumnDefinition(this); + if(listener.exitCrossPlan) { + listener.exitCrossPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnDefinition) { - return visitor.visitColumnDefinition(this); + if (visitor.visitCrossPlan) { + return visitor.visitCrossPlan(this); } else { return visitor.visitChildren(this); } } } - - -export class LikeClauseContext extends antlr.ParserRuleContext { - public _optionType?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LIKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; +export class JoinPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_PROPERTIES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); + public jsonTablePathName(): JsonTablePathNameContext { + return this.getRuleContext(0, JsonTablePathNameContext)!; } - public KW_INCLUDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INCLUDING, 0); + public planPrimary(): PlanPrimaryContext { + return this.getRuleContext(0, PlanPrimaryContext)!; } - public KW_EXCLUDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXCLUDING, 0); + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OUTER, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_likeClause; + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INNER, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLikeClause) { - listener.enterLikeClause(this); + if(listener.enterJoinPlan) { + listener.enterJoinPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLikeClause) { - listener.exitLikeClause(this); + if(listener.exitJoinPlan) { + listener.exitJoinPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLikeClause) { - return visitor.visitLikeClause(this); + if (visitor.visitJoinPlan) { + return visitor.visitJoinPlan(this); } else { return visitor.visitChildren(this); } } } - - -export class PropertiesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public propertyAssignments(): PropertyAssignmentsContext { - return this.getRuleContext(0, PropertyAssignmentsContext)!; +export class LeafPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_properties; + public jsonTablePathName(): JsonTablePathNameContext { + return this.getRuleContext(0, JsonTablePathNameContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProperties) { - listener.enterProperties(this); + if(listener.enterLeafPlan) { + listener.enterLeafPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProperties) { - listener.exitProperties(this); + if(listener.exitLeafPlan) { + listener.exitLeafPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProperties) { - return visitor.visitProperties(this); + if (visitor.visitLeafPlan) { + return visitor.visitLeafPlan(this); } else { return visitor.visitChildren(this); } } } - - -export class PropertyAssignmentsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class UnionPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public property(): PropertyContext[]; - public property(i: number): PropertyContext | null; - public property(i?: number): PropertyContext[] | PropertyContext | null { + public planPrimary(): PlanPrimaryContext[]; + public planPrimary(i: number): PlanPrimaryContext | null; + public planPrimary(i?: number): PlanPrimaryContext[] | PlanPrimaryContext | null { if (i === undefined) { - return this.getRuleContexts(PropertyContext); + return this.getRuleContexts(PlanPrimaryContext); } - return this.getRuleContext(i, PropertyContext); + return this.getRuleContext(i, PlanPrimaryContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_propertyAssignments; + public KW_UNION(): antlr.TerminalNode[]; + public KW_UNION(i: number): antlr.TerminalNode | null; + public KW_UNION(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_UNION); + } else { + return this.getToken(TrinoSqlParser.KW_UNION, i); + } } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPropertyAssignments) { - listener.enterPropertyAssignments(this); + if(listener.enterUnionPlan) { + listener.enterUnionPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPropertyAssignments) { - listener.exitPropertyAssignments(this); + if(listener.exitUnionPlan) { + listener.exitUnionPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPropertyAssignments) { - return visitor.visitPropertyAssignments(this); + if (visitor.visitUnionPlan) { + return visitor.visitUnionPlan(this); } else { return visitor.visitChildren(this); } @@ -16698,35 +25313,29 @@ export class PropertyAssignmentsContext extends antlr.ParserRuleContext { } -export class PropertyContext extends antlr.ParserRuleContext { +export class JsonTablePathNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; } - public EQ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EQ, 0)!; - } - public propertyValue(): PropertyValueContext { - return this.getRuleContext(0, PropertyValueContext)!; - } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_property; + return TrinoSqlParser.RULE_jsonTablePathName; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProperty) { - listener.enterProperty(this); + if(listener.enterJsonTablePathName) { + listener.enterJsonTablePathName(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProperty) { - listener.exitProperty(this); + if(listener.exitJsonTablePathName) { + listener.exitJsonTablePathName(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProperty) { - return visitor.visitProperty(this); + if (visitor.visitJsonTablePathName) { + return visitor.visitJsonTablePathName(this); } else { return visitor.visitChildren(this); } @@ -16734,64 +25343,71 @@ export class PropertyContext extends antlr.ParserRuleContext { } -export class PropertyValueContext extends antlr.ParserRuleContext { +export class PlanPrimaryContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_propertyValue; - } - public override copyFrom(ctx: PropertyValueContext): void { - super.copyFrom(ctx); + public jsonTablePathName(): JsonTablePathNameContext | null { + return this.getRuleContext(0, JsonTablePathNameContext); } -} -export class DefaultPropertyValueContext extends PropertyValueContext { - public constructor(ctx: PropertyValueContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public jsonTableSpecificPlan(): JsonTableSpecificPlanContext | null { + return this.getRuleContext(0, JsonTableSpecificPlanContext); } - public KW_DEFAULT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DEFAULT, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_planPrimary; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDefaultPropertyValue) { - listener.enterDefaultPropertyValue(this); + if(listener.enterPlanPrimary) { + listener.enterPlanPrimary(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDefaultPropertyValue) { - listener.exitDefaultPropertyValue(this); + if(listener.exitPlanPrimary) { + listener.exitPlanPrimary(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDefaultPropertyValue) { - return visitor.visitDefaultPropertyValue(this); + if (visitor.visitPlanPrimary) { + return visitor.visitPlanPrimary(this); } else { return visitor.visitChildren(this); } } } -export class NonDefaultPropertyValueContext extends PropertyValueContext { - public constructor(ctx: PropertyValueContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonTableDefaultPlanContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OUTER, 0); + } + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INNER, 0); + } + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNION, 0); + } + public KW_CROSS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CROSS, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonTableDefaultPlan; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNonDefaultPropertyValue) { - listener.enterNonDefaultPropertyValue(this); + if(listener.enterJsonTableDefaultPlan) { + listener.enterJsonTableDefaultPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNonDefaultPropertyValue) { - listener.exitNonDefaultPropertyValue(this); + if(listener.exitJsonTableDefaultPlan) { + listener.exitJsonTableDefaultPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNonDefaultPropertyValue) { - return visitor.visitNonDefaultPropertyValue(this); + if (visitor.visitJsonTableDefaultPlan) { + return visitor.visitJsonTableDefaultPlan(this); } else { return visitor.visitChildren(this); } @@ -16799,101 +25415,50 @@ export class NonDefaultPropertyValueContext extends PropertyValueContext { } -export class QueryNoWithContext extends antlr.ParserRuleContext { - public _offset?: RowCountContext; - public _limit?: LimitRowCountContext; - public _fetchFirst?: RowCountContext; +export class TableFunctionCallContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public queryTerm(): QueryTermContext { - return this.getRuleContext(0, QueryTermContext)!; - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + public tableFunctionArgument(): TableFunctionArgumentContext[]; + public tableFunctionArgument(i: number): TableFunctionArgumentContext | null; + public tableFunctionArgument(i?: number): TableFunctionArgumentContext[] | TableFunctionArgumentContext | null { if (i === undefined) { - return this.getRuleContexts(SortItemContext); + return this.getRuleContexts(TableFunctionArgumentContext); } - return this.getRuleContext(i, SortItemContext); + return this.getRuleContext(i, TableFunctionArgumentContext); } - public KW_OFFSET(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OFFSET, 0); + public KW_COPARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COPARTITION, 0); } - public rowCount(): RowCountContext[]; - public rowCount(i: number): RowCountContext | null; - public rowCount(i?: number): RowCountContext[] | RowCountContext | null { + public copartitionTables(): CopartitionTablesContext[]; + public copartitionTables(i: number): CopartitionTablesContext | null; + public copartitionTables(i?: number): CopartitionTablesContext[] | CopartitionTablesContext | null { if (i === undefined) { - return this.getRuleContexts(RowCountContext); + return this.getRuleContexts(CopartitionTablesContext); } - return this.getRuleContext(i, RowCountContext); - } - public KW_LIMIT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIMIT, 0); - } - public KW_FETCH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FETCH, 0); - } - public limitRowCount(): LimitRowCountContext | null { - return this.getRuleContext(0, LimitRowCountContext); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FIRST, 0); - } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NEXT, 0); - } - public KW_ROW(): antlr.TerminalNode[]; - public KW_ROW(i: number): antlr.TerminalNode | null; - public KW_ROW(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_ROW); - } else { - return this.getToken(TrinoSqlParser.KW_ROW, i); - } - } - public KW_ROWS(): antlr.TerminalNode[]; - public KW_ROWS(i: number): antlr.TerminalNode | null; - public KW_ROWS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_ROWS); - } else { - return this.getToken(TrinoSqlParser.KW_ROWS, i); - } - } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ONLY, 0); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); - } - public KW_TIES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TIES, 0); + return this.getRuleContext(i, CopartitionTablesContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_queryNoWith; + return TrinoSqlParser.RULE_tableFunctionCall; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryNoWith) { - listener.enterQueryNoWith(this); + if(listener.enterTableFunctionCall) { + listener.enterTableFunctionCall(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryNoWith) { - listener.exitQueryNoWith(this); + if(listener.exitTableFunctionCall) { + listener.exitTableFunctionCall(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryNoWith) { - return visitor.visitQueryNoWith(this); + if (visitor.visitTableFunctionCall) { + return visitor.visitTableFunctionCall(this); } else { return visitor.visitChildren(this); } @@ -16901,32 +25466,38 @@ export class QueryNoWithContext extends antlr.ParserRuleContext { } -export class LimitRowCountContext extends antlr.ParserRuleContext { +export class TableFunctionArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public tableArgument(): TableArgumentContext | null { + return this.getRuleContext(0, TableArgumentContext); } - public rowCount(): RowCountContext | null { - return this.getRuleContext(0, RowCountContext); + public descriptorArgument(): DescriptorArgumentContext | null { + return this.getRuleContext(0, DescriptorArgumentContext); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_limitRowCount; + return TrinoSqlParser.RULE_tableFunctionArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLimitRowCount) { - listener.enterLimitRowCount(this); + if(listener.enterTableFunctionArgument) { + listener.enterTableFunctionArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLimitRowCount) { - listener.exitLimitRowCount(this); + if(listener.exitTableFunctionArgument) { + listener.exitTableFunctionArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLimitRowCount) { - return visitor.visitLimitRowCount(this); + if (visitor.visitTableFunctionArgument) { + return visitor.visitTableFunctionArgument(this); } else { return visitor.visitChildren(this); } @@ -16934,32 +25505,74 @@ export class LimitRowCountContext extends antlr.ParserRuleContext { } -export class RowCountContext extends antlr.ParserRuleContext { +export class TableArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); + public tableArgumentRelation(): TableArgumentRelationContext { + return this.getRuleContext(0, TableArgumentRelationContext)!; } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PARTITION, 0); + } + public KW_BY(): antlr.TerminalNode[]; + public KW_BY(i: number): antlr.TerminalNode | null; + public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_BY); + } else { + return this.getToken(TrinoSqlParser.KW_BY, i); + } + } + public KW_PRUNE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRUNE, 0); + } + public KW_WHEN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHEN, 0); + } + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); + } + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowCount; + return TrinoSqlParser.RULE_tableArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowCount) { - listener.enterRowCount(this); + if(listener.enterTableArgument) { + listener.enterTableArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowCount) { - listener.exitRowCount(this); + if(listener.exitTableArgument) { + listener.exitTableArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowCount) { - return visitor.visitRowCount(this); + if (visitor.visitTableArgument) { + return visitor.visitTableArgument(this); } else { return visitor.visitChildren(this); } @@ -16967,85 +25580,88 @@ export class RowCountContext extends antlr.ParserRuleContext { } -export class QueryTermContext extends antlr.ParserRuleContext { +export class TableArgumentRelationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_queryTerm; + return TrinoSqlParser.RULE_tableArgumentRelation; } - public override copyFrom(ctx: QueryTermContext): void { + public override copyFrom(ctx: TableArgumentRelationContext): void { super.copyFrom(ctx); } } -export class QueryTermDefaultContext extends QueryTermContext { - public constructor(ctx: QueryTermContext) { +export class TableArgumentQueryContext extends TableArgumentRelationContext { + public constructor(ctx: TableArgumentRelationContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public queryPrimary(): QueryPrimaryContext { - return this.getRuleContext(0, QueryPrimaryContext)!; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryTermDefault) { - listener.enterQueryTermDefault(this); + if(listener.enterTableArgumentQuery) { + listener.enterTableArgumentQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryTermDefault) { - listener.exitQueryTermDefault(this); + if(listener.exitTableArgumentQuery) { + listener.exitTableArgumentQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryTermDefault) { - return visitor.visitQueryTermDefault(this); + if (visitor.visitTableArgumentQuery) { + return visitor.visitTableArgumentQuery(this); } else { return visitor.visitChildren(this); } } } -export class SetOperationContext extends QueryTermContext { - public _left?: QueryTermContext; - public _operator?: Token | null; - public _right?: QueryTermContext; - public constructor(ctx: QueryTermContext) { +export class TableArgumentTableContext extends TableArgumentRelationContext { + public constructor(ctx: TableArgumentRelationContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public queryTerm(): QueryTermContext[]; - public queryTerm(i: number): QueryTermContext | null; - public queryTerm(i?: number): QueryTermContext[] | QueryTermContext | null { - if (i === undefined) { - return this.getRuleContexts(QueryTermContext); - } - - return this.getRuleContext(i, QueryTermContext); + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public KW_INTERSECT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INTERSECT, 0); + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public KW_UNION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_UNION, 0); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public KW_EXCEPT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXCEPT, 0); + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetOperation) { - listener.enterSetOperation(this); + if(listener.enterTableArgumentTable) { + listener.enterTableArgumentTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetOperation) { - listener.exitSetOperation(this); + if(listener.exitTableArgumentTable) { + listener.exitTableArgumentTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetOperation) { - return visitor.visitSetOperation(this); + if (visitor.visitTableArgumentTable) { + return visitor.visitTableArgumentTable(this); } else { return visitor.visitChildren(this); } @@ -17053,128 +25669,116 @@ export class SetOperationContext extends QueryTermContext { } -export class QueryPrimaryContext extends antlr.ParserRuleContext { +export class DescriptorArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_queryPrimary; - } - public override copyFrom(ctx: QueryPrimaryContext): void { - super.copyFrom(ctx); - } -} -export class SubqueryContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public queryNoWith(): QueryNoWithContext { - return this.getRuleContext(0, QueryNoWithContext)!; + public KW_DESCRIPTOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DESCRIPTOR, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubquery) { - listener.enterSubquery(this); + public descriptorField(): DescriptorFieldContext[]; + public descriptorField(i: number): DescriptorFieldContext | null; + public descriptorField(i?: number): DescriptorFieldContext[] | DescriptorFieldContext | null { + if (i === undefined) { + return this.getRuleContexts(DescriptorFieldContext); } + + return this.getRuleContext(i, DescriptorFieldContext); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubquery) { - listener.exitSubquery(this); - } + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CAST, 0); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubquery) { - return visitor.visitSubquery(this); - } else { - return visitor.visitChildren(this); - } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } -} -export class QueryPrimaryDefaultContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public querySpecification(): QuerySpecificationContext { - return this.getRuleContext(0, QuerySpecificationContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_descriptorArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryPrimaryDefault) { - listener.enterQueryPrimaryDefault(this); + if(listener.enterDescriptorArgument) { + listener.enterDescriptorArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryPrimaryDefault) { - listener.exitQueryPrimaryDefault(this); + if(listener.exitDescriptorArgument) { + listener.exitDescriptorArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryPrimaryDefault) { - return visitor.visitQueryPrimaryDefault(this); + if (visitor.visitDescriptorArgument) { + return visitor.visitDescriptorArgument(this); } else { return visitor.visitChildren(this); } } } -export class TableContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class DescriptorFieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_descriptorField; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTable) { - listener.enterTable(this); + if(listener.enterDescriptorField) { + listener.enterDescriptorField(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTable) { - listener.exitTable(this); + if(listener.exitDescriptorField) { + listener.exitDescriptorField(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTable) { - return visitor.visitTable(this); + if (visitor.visitDescriptorField) { + return visitor.visitDescriptorField(this); } else { return visitor.visitChildren(this); } } } -export class InlineTableContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_VALUES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; + + +export class CopartitionTablesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public qualifiedName(): QualifiedNameContext[]; + public qualifiedName(i: number): QualifiedNameContext | null; + public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(QualifiedNameContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, QualifiedNameContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_copartitionTables; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInlineTable) { - listener.enterInlineTable(this); + if(listener.enterCopartitionTables) { + listener.enterCopartitionTables(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInlineTable) { - listener.exitInlineTable(this); + if(listener.exitCopartitionTables) { + listener.exitCopartitionTables(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInlineTable) { - return visitor.visitInlineTable(this); + if (visitor.visitCopartitionTables) { + return visitor.visitCopartitionTables(this); } else { return visitor.visitChildren(this); } @@ -17182,49 +25786,29 @@ export class InlineTableContext extends QueryPrimaryContext { } -export class SortItemContext extends antlr.ParserRuleContext { - public _ordering?: Token | null; - public _nullOrdering?: Token | null; +export class ExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); - } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); - } - public KW_NULLS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULLS, 0); - } - public KW_ASC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ASC, 0); - } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DESC, 0); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FIRST, 0); - } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LAST, 0); + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_sortItem; + return TrinoSqlParser.RULE_expression; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSortItem) { - listener.enterSortItem(this); + if(listener.enterExpression) { + listener.enterExpression(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSortItem) { - listener.exitSortItem(this); + if(listener.exitExpression) { + listener.exitExpression(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSortItem) { - return visitor.visitSortItem(this); + if (visitor.visitExpression) { + return visitor.visitExpression(this); } else { return visitor.visitChildren(this); } @@ -17232,65 +25816,80 @@ export class SortItemContext extends antlr.ParserRuleContext { } -export class QuerySpecificationContext extends antlr.ParserRuleContext { - public _where?: BooleanExpressionContext; - public _having?: BooleanExpressionContext; +export class BooleanExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SELECT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SELECT, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_booleanExpression; } - public selectItem(): SelectItemContext[]; - public selectItem(i: number): SelectItemContext | null; - public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SelectItemContext); - } - - return this.getRuleContext(i, SelectItemContext); + public override copyFrom(ctx: BooleanExpressionContext): void { + super.copyFrom(ctx); } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); +} +export class LogicalNotContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + public KW_NOT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NOT, 0)!; } - public relation(): RelationContext[]; - public relation(i: number): RelationContext | null; - public relation(i?: number): RelationContext[] | RelationContext | null { - if (i === undefined) { - return this.getRuleContexts(RelationContext); + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterLogicalNot) { + listener.enterLogicalNot(this); } - - return this.getRuleContext(i, RelationContext); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitLogicalNot) { + listener.exitLogicalNot(this); + } } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GROUP, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitLogicalNot) { + return visitor.visitLogicalNot(this); + } else { + return visitor.visitChildren(this); + } } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); +} +export class PredicatedContext extends BooleanExpressionContext { + public _valueExpression?: ValueExpressionContext; + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public groupBy(): GroupByContext | null { - return this.getRuleContext(0, GroupByContext); + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public KW_HAVING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_HAVING, 0); + public predicate(): PredicateContext | null { + return this.getRuleContext(0, PredicateContext); } - public KW_WINDOW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WINDOW, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPredicated) { + listener.enterPredicated(this); + } } - public windowDefinition(): WindowDefinitionContext[]; - public windowDefinition(i: number): WindowDefinitionContext | null; - public windowDefinition(i?: number): WindowDefinitionContext[] | WindowDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(WindowDefinitionContext); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPredicated) { + listener.exitPredicated(this); } - - return this.getRuleContext(i, WindowDefinitionContext); + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPredicated) { + return visitor.visitPredicated(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class OrContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } public booleanExpression(): BooleanExpressionContext[]; public booleanExpression(i: number): BooleanExpressionContext | null; @@ -17301,61 +25900,57 @@ export class QuerySpecificationContext extends antlr.ParserRuleContext { return this.getRuleContext(i, BooleanExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_querySpecification; + public KW_OR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OR, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQuerySpecification) { - listener.enterQuerySpecification(this); + if(listener.enterOr) { + listener.enterOr(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQuerySpecification) { - listener.exitQuerySpecification(this); + if(listener.exitOr) { + listener.exitOr(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQuerySpecification) { - return visitor.visitQuerySpecification(this); + if (visitor.visitOr) { + return visitor.visitOr(this); } else { return visitor.visitChildren(this); } } } - - -export class GroupByContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class AndContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public groupingElement(): GroupingElementContext[]; - public groupingElement(i: number): GroupingElementContext | null; - public groupingElement(i?: number): GroupingElementContext[] | GroupingElementContext | null { + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingElementContext); + return this.getRuleContexts(BooleanExpressionContext); } - return this.getRuleContext(i, GroupingElementContext); - } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); + return this.getRuleContext(i, BooleanExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupBy; + public KW_AND(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AND, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupBy) { - listener.enterGroupBy(this); + if(listener.enterAnd) { + listener.enterAnd(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupBy) { - listener.exitGroupBy(this); + if(listener.exitAnd) { + listener.exitAnd(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupBy) { - return visitor.visitGroupBy(this); + if (visitor.visitAnd) { + return visitor.visitAnd(this); } else { return visitor.visitChildren(this); } @@ -17363,215 +25958,304 @@ export class GroupByContext extends antlr.ParserRuleContext { } -export class GroupingElementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { +export class PredicateContext extends antlr.ParserRuleContext { + public value: antlr.ParserRuleContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number, value: antlr.ParserRuleContext) { super(parent, invokingState); + this.value = value; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupingElement; + return TrinoSqlParser.RULE_predicate; } - public override copyFrom(ctx: GroupingElementContext): void { + public override copyFrom(ctx: PredicateContext): void { super.copyFrom(ctx); + this.value = ctx.value; } } -export class MultipleGroupingSetsContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class ComparisonContext extends PredicateContext { + public _right?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public KW_GROUPING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; } - public KW_SETS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SETS, 0)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public groupingSet(): GroupingSetContext[]; - public groupingSet(i: number): GroupingSetContext | null; - public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterComparison) { + listener.enterComparison(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitComparison) { + listener.exitComparison(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitComparison) { + return visitor.visitComparison(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class LikeContext extends PredicateContext { + public _pattern?: ValueExpressionContext; + public _escape?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); + } + public KW_LIKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingSetContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, GroupingSetContext); + return this.getRuleContext(i, ValueExpressionContext); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterLike) { + listener.enterLike(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitLike) { + listener.exitLike(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitLike) { + return visitor.visitLike(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class InSubqueryContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); + } + public KW_IN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IN, 0)!; + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMultipleGroupingSets) { - listener.enterMultipleGroupingSets(this); + if(listener.enterInSubquery) { + listener.enterInSubquery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMultipleGroupingSets) { - listener.exitMultipleGroupingSets(this); + if(listener.exitInSubquery) { + listener.exitInSubquery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMultipleGroupingSets) { - return visitor.visitMultipleGroupingSets(this); + if (visitor.visitInSubquery) { + return visitor.visitInSubquery(this); } else { return visitor.visitChildren(this); } } } -export class SingleGroupingSetContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class DistinctFromContext extends PredicateContext { + public _right?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public groupingSet(): GroupingSetContext { - return this.getRuleContext(0, GroupingSetContext)!; + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public KW_DISTINCT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DISTINCT, 0)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSingleGroupingSet) { - listener.enterSingleGroupingSet(this); + if(listener.enterDistinctFrom) { + listener.enterDistinctFrom(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSingleGroupingSet) { - listener.exitSingleGroupingSet(this); + if(listener.exitDistinctFrom) { + listener.exitDistinctFrom(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSingleGroupingSet) { - return visitor.visitSingleGroupingSet(this); + if (visitor.visitDistinctFrom) { + return visitor.visitDistinctFrom(this); } else { return visitor.visitChildren(this); } } } -export class CubeContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class InListContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public KW_CUBE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CUBE, 0)!; + public KW_IN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IN, 0)!; } - public groupingTerm(): GroupingTermContext[]; - public groupingTerm(i: number): GroupingTermContext | null; - public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingTermContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, GroupingTermContext); + return this.getRuleContext(i, ExpressionContext); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCube) { - listener.enterCube(this); + if(listener.enterInList) { + listener.enterInList(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCube) { - listener.exitCube(this); + if(listener.exitInList) { + listener.exitInList(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCube) { - return visitor.visitCube(this); + if (visitor.visitInList) { + return visitor.visitInList(this); } else { return visitor.visitChildren(this); } } } -export class RollupContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class NullPredicateContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public KW_ROLLUP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLLUP, 0)!; + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; } - public groupingTerm(): GroupingTermContext[]; - public groupingTerm(i: number): GroupingTermContext | null; - public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { - if (i === undefined) { - return this.getRuleContexts(GroupingTermContext); - } - - return this.getRuleContext(i, GroupingTermContext); + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRollup) { - listener.enterRollup(this); + if(listener.enterNullPredicate) { + listener.enterNullPredicate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRollup) { - listener.exitRollup(this); + if(listener.exitNullPredicate) { + listener.exitNullPredicate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRollup) { - return visitor.visitRollup(this); + if (visitor.visitNullPredicate) { + return visitor.visitNullPredicate(this); } else { return visitor.visitChildren(this); } } } - - -export class GroupingSetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class BetweenContext extends PredicateContext { + public _lower?: ValueExpressionContext; + public _upper?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public groupingTerm(): GroupingTermContext[]; - public groupingTerm(i: number): GroupingTermContext | null; - public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { + public KW_BETWEEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_BETWEEN, 0)!; + } + public KW_AND(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AND, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingTermContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, GroupingTermContext); + return this.getRuleContext(i, ValueExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupingSet; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupingSet) { - listener.enterGroupingSet(this); + if(listener.enterBetween) { + listener.enterBetween(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupingSet) { - listener.exitGroupingSet(this); + if(listener.exitBetween) { + listener.exitBetween(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupingSet) { - return visitor.visitGroupingSet(this); + if (visitor.visitBetween) { + return visitor.visitBetween(this); } else { return visitor.visitChildren(this); } } } - - -export class GroupingTermContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class QuantifiedComparisonContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public comparisonQuantifier(): ComparisonQuantifierContext { + return this.getRuleContext(0, ComparisonQuantifierContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupingTerm; + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupingTerm) { - listener.enterGroupingTerm(this); + if(listener.enterQuantifiedComparison) { + listener.enterQuantifiedComparison(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupingTerm) { - listener.exitGroupingTerm(this); + if(listener.exitQuantifiedComparison) { + listener.exitQuantifiedComparison(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupingTerm) { - return visitor.visitGroupingTerm(this); + if (visitor.visitQuantifiedComparison) { + return visitor.visitQuantifiedComparison(this); } else { return visitor.visitChildren(this); } @@ -17579,178 +26263,190 @@ export class GroupingTermContext extends antlr.ParserRuleContext { } -export class WindowDefinitionContext extends antlr.ParserRuleContext { - public _name?: IdentifierContext; +export class ValueExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_valueExpression; } - public windowSpecification(): WindowSpecificationContext { - return this.getRuleContext(0, WindowSpecificationContext)!; + public override copyFrom(ctx: ValueExpressionContext): void { + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; +} +export class ValueExpressionDefaultContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_windowDefinition; + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWindowDefinition) { - listener.enterWindowDefinition(this); + if(listener.enterValueExpressionDefault) { + listener.enterValueExpressionDefault(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWindowDefinition) { - listener.exitWindowDefinition(this); + if(listener.exitValueExpressionDefault) { + listener.exitValueExpressionDefault(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitValueExpressionDefault) { + return visitor.visitValueExpressionDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ConcatenationContext extends ValueExpressionContext { + public _left?: ValueExpressionContext; + public _right?: ValueExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public CONCAT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.CONCAT, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ValueExpressionContext); + } + + return this.getRuleContext(i, ValueExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterConcatenation) { + listener.enterConcatenation(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitConcatenation) { + listener.exitConcatenation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWindowDefinition) { - return visitor.visitWindowDefinition(this); + if (visitor.visitConcatenation) { + return visitor.visitConcatenation(this); } else { return visitor.visitChildren(this); } } } - - -export class WindowSpecificationContext extends antlr.ParserRuleContext { - public _existingWindowName?: IdentifierContext; - public _expression?: ExpressionContext; - public _partition: ExpressionContext[] = []; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PARTITION, 0); - } - public KW_BY(): antlr.TerminalNode[]; - public KW_BY(i: number): antlr.TerminalNode | null; - public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_BY); - } else { - return this.getToken(TrinoSqlParser.KW_BY, i); - } - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); +export class ArithmeticBinaryContext extends ValueExpressionContext { + public _left?: ValueExpressionContext; + public _operator?: Token | null; + public _right?: ValueExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(SortItemContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, SortItemContext); + return this.getRuleContext(i, ValueExpressionContext); } - public windowFrame(): WindowFrameContext | null { - return this.getRuleContext(0, WindowFrameContext); + public ASTERISK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.ASTERISK, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public SLASH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SLASH, 0); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); + public PERCENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PERCENT, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_windowSpecification; + public PLUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.MINUS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWindowSpecification) { - listener.enterWindowSpecification(this); + if(listener.enterArithmeticBinary) { + listener.enterArithmeticBinary(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWindowSpecification) { - listener.exitWindowSpecification(this); + if(listener.exitArithmeticBinary) { + listener.exitArithmeticBinary(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWindowSpecification) { - return visitor.visitWindowSpecification(this); + if (visitor.visitArithmeticBinary) { + return visitor.visitArithmeticBinary(this); } else { return visitor.visitChildren(this); } } } - - -export class NamedQueryContext extends antlr.ParserRuleContext { - public _name?: IdentifierContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; - } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; +export class ArithmeticUnaryContext extends ValueExpressionContext { + public _operator?: Token | null; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); + public MINUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.MINUS, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_namedQuery; + public PLUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PLUS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNamedQuery) { - listener.enterNamedQuery(this); + if(listener.enterArithmeticUnary) { + listener.enterArithmeticUnary(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNamedQuery) { - listener.exitNamedQuery(this); + if(listener.exitArithmeticUnary) { + listener.exitArithmeticUnary(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNamedQuery) { - return visitor.visitNamedQuery(this); + if (visitor.visitArithmeticUnary) { + return visitor.visitArithmeticUnary(this); } else { return visitor.visitChildren(this); } } } - - -export class SetQuantifierContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class AtTimeZoneContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DISTINCT, 0); + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public KW_AT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AT, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_setQuantifier; + public timeZoneSpecifier(): TimeZoneSpecifierContext { + return this.getRuleContext(0, TimeZoneSpecifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetQuantifier) { - listener.enterSetQuantifier(this); + if(listener.enterAtTimeZone) { + listener.enterAtTimeZone(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetQuantifier) { - listener.exitSetQuantifier(this); + if(listener.exitAtTimeZone) { + listener.exitAtTimeZone(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetQuantifier) { - return visitor.visitSetQuantifier(this); + if (visitor.visitAtTimeZone) { + return visitor.visitAtTimeZone(this); } else { return visitor.visitChildren(this); } @@ -17758,896 +26454,894 @@ export class SetQuantifierContext extends antlr.ParserRuleContext { } -export class SelectItemContext extends antlr.ParserRuleContext { +export class PrimaryExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_selectItem; + return TrinoSqlParser.RULE_primaryExpression; } - public override copyFrom(ctx: SelectItemContext): void { + public override copyFrom(ctx: PrimaryExpressionContext): void { super.copyFrom(ctx); } } -export class SelectAllContext extends SelectItemContext { - public constructor(ctx: SelectItemContext) { +export class DereferenceContext extends PrimaryExpressionContext { + public _base?: PrimaryExpressionContext; + public _fieldName?: IdentifierContext; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public primaryExpression(): PrimaryExpressionContext | null { - return this.getRuleContext(0, PrimaryExpressionContext); - } - public ASTERISK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.ASTERISK, 0)!; - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSelectAll) { - listener.enterSelectAll(this); + if(listener.enterDereference) { + listener.enterDereference(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSelectAll) { - listener.exitSelectAll(this); + if(listener.exitDereference) { + listener.exitDereference(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSelectAll) { - return visitor.visitSelectAll(this); + if (visitor.visitDereference) { + return visitor.visitDereference(this); } else { return visitor.visitChildren(this); } } } -export class SelectSingleContext extends SelectItemContext { - public constructor(ctx: SelectItemContext) { +export class TypeConstructorContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); - } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); - } public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSelectSingle) { - listener.enterSelectSingle(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSelectSingle) { - listener.exitSelectSingle(this); - } - } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSelectSingle) { - return visitor.visitSelectSingle(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RelationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_relation; - } - public override copyFrom(ctx: RelationContext): void { - super.copyFrom(ctx); + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } -} -export class RelationDefaultContext extends RelationContext { - public constructor(ctx: RelationContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_DOUBLE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); } - public sampledRelation(): SampledRelationContext { - return this.getRuleContext(0, SampledRelationContext)!; + public KW_PRECISION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRECISION, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRelationDefault) { - listener.enterRelationDefault(this); + if(listener.enterTypeConstructor) { + listener.enterTypeConstructor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRelationDefault) { - listener.exitRelationDefault(this); + if(listener.exitTypeConstructor) { + listener.exitTypeConstructor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRelationDefault) { - return visitor.visitRelationDefault(this); + if (visitor.visitTypeConstructor) { + return visitor.visitTypeConstructor(this); } else { return visitor.visitChildren(this); } } } -export class JoinRelationContext extends RelationContext { - public _left?: RelationContext; - public _right?: SampledRelationContext; - public _rightRelation?: RelationContext; - public constructor(ctx: RelationContext) { +export class JsonValueContext extends PrimaryExpressionContext { + public _emptyBehavior?: JsonValueBehaviorContext; + public _errorBehavior?: JsonValueBehaviorContext; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public relation(): RelationContext[]; - public relation(i: number): RelationContext | null; - public relation(i?: number): RelationContext[] | RelationContext | null { - if (i === undefined) { - return this.getRuleContexts(RelationContext); - } - - return this.getRuleContext(i, RelationContext); + public KW_JSON_VALUE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_VALUE, 0)!; } - public KW_CROSS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CROSS, 0); + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; } - public KW_JOIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_JOIN, 0); + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public joinType(): JoinTypeContext | null { - return this.getRuleContext(0, JoinTypeContext); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public joinCriteria(): JoinCriteriaContext | null { - return this.getRuleContext(0, JoinCriteriaContext); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } - public KW_NATURAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NATURAL, 0); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public sampledRelation(): SampledRelationContext | null { - return this.getRuleContext(0, SampledRelationContext); + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); + } + public jsonValueBehavior(): JsonValueBehaviorContext[]; + public jsonValueBehavior(i: number): JsonValueBehaviorContext | null; + public jsonValueBehavior(i?: number): JsonValueBehaviorContext[] | JsonValueBehaviorContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonValueBehaviorContext); + } + + return this.getRuleContext(i, JsonValueBehaviorContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterJoinRelation) { - listener.enterJoinRelation(this); + if(listener.enterJsonValue) { + listener.enterJsonValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitJoinRelation) { - listener.exitJoinRelation(this); + if(listener.exitJsonValue) { + listener.exitJsonValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitJoinRelation) { - return visitor.visitJoinRelation(this); + if (visitor.visitJsonValue) { + return visitor.visitJsonValue(this); } else { return visitor.visitChildren(this); } } } - - -export class JoinTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INNER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INNER, 0); - } - public KW_LEFT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LEFT, 0); - } - public KW_OUTER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OUTER, 0); - } - public KW_RIGHT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RIGHT, 0); - } - public KW_FULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FULL, 0); +export class CurrentDateContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_joinType; + public KW_CURRENT_DATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_DATE, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterJoinType) { - listener.enterJoinType(this); + if(listener.enterCurrentDate) { + listener.enterCurrentDate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitJoinType) { - listener.exitJoinType(this); + if(listener.exitCurrentDate) { + listener.exitCurrentDate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitJoinType) { - return visitor.visitJoinType(this); + if (visitor.visitCurrentDate) { + return visitor.visitCurrentDate(this); } else { return visitor.visitChildren(this); } } } - - -export class JoinCriteriaContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ON, 0); - } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); +export class SubstringContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_USING, 0); + public KW_SUBSTRING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SUBSTRING, 0)!; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(IdentifierContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, IdentifierContext); + return this.getRuleContext(i, ValueExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_joinCriteria; + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOR, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterJoinCriteria) { - listener.enterJoinCriteria(this); + if(listener.enterSubstring) { + listener.enterSubstring(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitJoinCriteria) { - listener.exitJoinCriteria(this); + if(listener.exitSubstring) { + listener.exitSubstring(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitJoinCriteria) { - return visitor.visitJoinCriteria(this); + if (visitor.visitSubstring) { + return visitor.visitSubstring(this); } else { return visitor.visitChildren(this); } } } - - -export class SampledRelationContext extends antlr.ParserRuleContext { - public _percentage?: ExpressionContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class CastContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public patternRecognition(): PatternRecognitionContext { - return this.getRuleContext(0, PatternRecognitionContext)!; + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CAST, 0); } - public KW_TABLESAMPLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLESAMPLE, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public sampleType(): SampleTypeContext | null { - return this.getRuleContext(0, SampleTypeContext); + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_sampledRelation; + public KW_TRY_CAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRY_CAST, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSampledRelation) { - listener.enterSampledRelation(this); + if(listener.enterCast) { + listener.enterCast(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSampledRelation) { - listener.exitSampledRelation(this); + if(listener.exitCast) { + listener.exitCast(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSampledRelation) { - return visitor.visitSampledRelation(this); + if (visitor.visitCast) { + return visitor.visitCast(this); } else { return visitor.visitChildren(this); } } } - - -export class SampleTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_BERNOULLI(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BERNOULLI, 0); +export class LambdaContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SYSTEM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SYSTEM, 0); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_sampleType; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSampleType) { - listener.enterSampleType(this); + if(listener.enterLambda) { + listener.enterLambda(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSampleType) { - listener.exitSampleType(this); + if(listener.exitLambda) { + listener.exitLambda(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSampleType) { - return visitor.visitSampleType(this); + if (visitor.visitLambda) { + return visitor.visitLambda(this); } else { return visitor.visitChildren(this); } } } - - -export class PatternRecognitionContext extends antlr.ParserRuleContext { - public _expression?: ExpressionContext; - public _partition: ExpressionContext[] = []; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public aliasedRelation(): AliasedRelationContext { - return this.getRuleContext(0, AliasedRelationContext)!; - } - public KW_MATCH_RECOGNIZE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCH_RECOGNIZE, 0); - } - public KW_PATTERN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PATTERN, 0); - } - public rowPattern(): RowPatternContext | null { - return this.getRuleContext(0, RowPatternContext); +export class ParenthesizedExpressionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_DEFINE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DEFINE, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public variableDefinition(): VariableDefinitionContext[]; - public variableDefinition(i: number): VariableDefinitionContext | null; - public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(VariableDefinitionContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterParenthesizedExpression) { + listener.enterParenthesizedExpression(this); } - - return this.getRuleContext(i, VariableDefinitionContext); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PARTITION, 0); - } - public KW_BY(): antlr.TerminalNode[]; - public KW_BY(i: number): antlr.TerminalNode | null; - public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_BY); - } else { - return this.getToken(TrinoSqlParser.KW_BY, i); - } } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitParenthesizedExpression) { + listener.exitParenthesizedExpression(this); + } } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SortItemContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitParenthesizedExpression) { + return visitor.visitParenthesizedExpression(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, SortItemContext); } - public KW_MEASURES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MEASURES, 0); +} +export class TrimContext extends PrimaryExpressionContext { + public _trimChar?: ValueExpressionContext; + public _trimSource?: ValueExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public measureDefinition(): MeasureDefinitionContext[]; - public measureDefinition(i: number): MeasureDefinitionContext | null; - public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { + public KW_TRIM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TRIM, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(MeasureDefinitionContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, MeasureDefinitionContext); - } - public rowsPerMatch(): RowsPerMatchContext | null { - return this.getRuleContext(0, RowsPerMatchContext); + return this.getRuleContext(i, ValueExpressionContext); } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AFTER, 0); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); } - public KW_MATCH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCH, 0); + public trimsSpecification(): TrimsSpecificationContext | null { + return this.getRuleContext(0, TrimsSpecificationContext); } - public skipTo(): SkipToContext | null { - return this.getRuleContext(0, SkipToContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterTrim) { + listener.enterTrim(this); + } } - public KW_SUBSET(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SUBSET, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitTrim) { + listener.exitTrim(this); + } } - public subsetDefinition(): SubsetDefinitionContext[]; - public subsetDefinition(i: number): SubsetDefinitionContext | null; - public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(SubsetDefinitionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitTrim) { + return visitor.visitTrim(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, SubsetDefinitionContext); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); +} +export class ParameterContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + public QUESTION_MARK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterParameter) { + listener.enterParameter(this); } - - return this.getRuleContext(i, ExpressionContext); } - public KW_INITIAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INITIAL, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitParameter) { + listener.exitParameter(this); + } } - public KW_SEEK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SEEK, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitParameter) { + return visitor.visitParameter(this); + } else { + return visitor.visitChildren(this); + } } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); +} +export class NormalizeContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); + public KW_NORMALIZE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NORMALIZE, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_patternRecognition; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public normalForm(): NormalFormContext | null { + return this.getRuleContext(0, NormalFormContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternRecognition) { - listener.enterPatternRecognition(this); + if(listener.enterNormalize) { + listener.enterNormalize(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternRecognition) { - listener.exitPatternRecognition(this); + if(listener.exitNormalize) { + listener.exitNormalize(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternRecognition) { - return visitor.visitPatternRecognition(this); + if (visitor.visitNormalize) { + return visitor.visitNormalize(this); } else { return visitor.visitChildren(this); } } } - - -export class MeasureDefinitionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; +export class LocalTimestampContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_LOCALTIMESTAMP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LOCALTIMESTAMP, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_measureDefinition; + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMeasureDefinition) { - listener.enterMeasureDefinition(this); + if(listener.enterLocalTimestamp) { + listener.enterLocalTimestamp(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMeasureDefinition) { - listener.exitMeasureDefinition(this); + if(listener.exitLocalTimestamp) { + listener.exitLocalTimestamp(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMeasureDefinition) { - return visitor.visitMeasureDefinition(this); + if (visitor.visitLocalTimestamp) { + return visitor.visitLocalTimestamp(this); } else { return visitor.visitChildren(this); } } } +export class JsonObjectContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_JSON_OBJECT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_OBJECT, 0)!; + } + public jsonObjectMember(): JsonObjectMemberContext[]; + public jsonObjectMember(i: number): JsonObjectMemberContext | null; + public jsonObjectMember(i?: number): JsonObjectMemberContext[] | JsonObjectMemberContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonObjectMemberContext); + } - -export class RowsPerMatchContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, JsonObjectMemberContext); } - public KW_ONE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ONE, 0); + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROW, 0); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public KW_PER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PER, 0)!; + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_NULL); + } else { + return this.getToken(TrinoSqlParser.KW_NULL, i); + } } - public KW_MATCH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCH, 0)!; + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public KW_ABSENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ABSENT, 0); } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROWS, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public emptyMatchHandling(): EmptyMatchHandlingContext | null { - return this.getRuleContext(0, EmptyMatchHandlingContext); + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNIQUE, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowsPerMatch; + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); + } + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); + } + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); + } + public KW_KEYS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEYS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowsPerMatch) { - listener.enterRowsPerMatch(this); + if(listener.enterJsonObject) { + listener.enterJsonObject(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowsPerMatch) { - listener.exitRowsPerMatch(this); + if(listener.exitJsonObject) { + listener.exitJsonObject(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowsPerMatch) { - return visitor.visitRowsPerMatch(this); + if (visitor.visitJsonObject) { + return visitor.visitJsonObject(this); } else { return visitor.visitChildren(this); } } } - - -export class EmptyMatchHandlingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class IntervalLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SHOW, 0); + public interval(): IntervalContext { + return this.getRuleContext(0, IntervalContext)!; } - public KW_EMPTY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EMPTY, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterIntervalLiteral) { + listener.enterIntervalLiteral(this); + } } - public KW_MATCHES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCHES, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitIntervalLiteral) { + listener.exitIntervalLiteral(this); + } } - public KW_OMIT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OMIT, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitIntervalLiteral) { + return visitor.visitIntervalLiteral(this); + } else { + return visitor.visitChildren(this); + } } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); +} +export class NumericLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public number(): NumberContext { + return this.getRuleContext(0, NumberContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterNumericLiteral) { + listener.enterNumericLiteral(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitNumericLiteral) { + listener.exitNumericLiteral(this); + } } - public KW_UNMATCHED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_UNMATCHED, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitNumericLiteral) { + return visitor.visitNumericLiteral(this); + } else { + return visitor.visitChildren(this); + } } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROWS, 0); +} +export class BooleanLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_emptyMatchHandling; + public booleanValue(): BooleanValueContext { + return this.getRuleContext(0, BooleanValueContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterEmptyMatchHandling) { - listener.enterEmptyMatchHandling(this); + if(listener.enterBooleanLiteral) { + listener.enterBooleanLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitEmptyMatchHandling) { - listener.exitEmptyMatchHandling(this); + if(listener.exitBooleanLiteral) { + listener.exitBooleanLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitEmptyMatchHandling) { - return visitor.visitEmptyMatchHandling(this); + if (visitor.visitBooleanLiteral) { + return visitor.visitBooleanLiteral(this); } else { return visitor.visitChildren(this); } } } - - -export class SkipToContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class JsonArrayContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TO, 0); + public KW_JSON_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_ARRAY, 0)!; } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NEXT, 0); + public jsonValueExpression(): JsonValueExpressionContext[]; + public jsonValueExpression(i: number): JsonValueExpressionContext | null; + public jsonValueExpression(i?: number): JsonValueExpressionContext[] | JsonValueExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonValueExpressionContext); + } + + return this.getRuleContext(i, JsonValueExpressionContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROW, 0); + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public KW_PAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PAST, 0); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LAST, 0); + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_NULL); + } else { + return this.getToken(TrinoSqlParser.KW_NULL, i); + } } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FIRST, 0); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public KW_ABSENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ABSENT, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_skipTo; + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); + } + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSkipTo) { - listener.enterSkipTo(this); + if(listener.enterJsonArray) { + listener.enterJsonArray(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSkipTo) { - listener.exitSkipTo(this); + if(listener.exitJsonArray) { + listener.exitJsonArray(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSkipTo) { - return visitor.visitSkipTo(this); + if (visitor.visitJsonArray) { + return visitor.visitJsonArray(this); } else { return visitor.visitChildren(this); } } } - - -export class SubsetDefinitionContext extends antlr.ParserRuleContext { - public _name?: IdentifierContext; - public _identifier?: IdentifierContext; - public _union: IdentifierContext[] = []; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class SimpleCaseContext extends PrimaryExpressionContext { + public _operand?: ExpressionContext; + public _elseExpression?: ExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public EQ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EQ, 0)!; + public KW_CASE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CASE, 0)!; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(IdentifierContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, IdentifierContext); + return this.getRuleContext(i, ExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_subsetDefinition; + public whenClause(): WhenClauseContext[]; + public whenClause(i: number): WhenClauseContext | null; + public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(WhenClauseContext); + } + + return this.getRuleContext(i, WhenClauseContext); + } + public KW_ELSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ELSE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubsetDefinition) { - listener.enterSubsetDefinition(this); + if(listener.enterSimpleCase) { + listener.enterSimpleCase(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubsetDefinition) { - listener.exitSubsetDefinition(this); + if(listener.exitSimpleCase) { + listener.exitSimpleCase(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubsetDefinition) { - return visitor.visitSubsetDefinition(this); + if (visitor.visitSimpleCase) { + return visitor.visitSimpleCase(this); } else { return visitor.visitChildren(this); } } } - - -export class VariableDefinitionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class ColumnReferenceContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_variableDefinition; - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterVariableDefinition) { - listener.enterVariableDefinition(this); + if(listener.enterColumnReference) { + listener.enterColumnReference(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitVariableDefinition) { - listener.exitVariableDefinition(this); + if(listener.exitColumnReference) { + listener.exitColumnReference(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitVariableDefinition) { - return visitor.visitVariableDefinition(this); + if (visitor.visitColumnReference) { + return visitor.visitColumnReference(this); } else { return visitor.visitChildren(this); } } } - - -export class AliasedRelationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public relationPrimary(): RelationPrimaryContext { - return this.getRuleContext(0, RelationPrimaryContext)!; - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); - } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); +export class NullLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_aliasedRelation; + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAliasedRelation) { - listener.enterAliasedRelation(this); + if(listener.enterNullLiteral) { + listener.enterNullLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAliasedRelation) { - listener.exitAliasedRelation(this); + if(listener.exitNullLiteral) { + listener.exitNullLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAliasedRelation) { - return visitor.visitAliasedRelation(this); + if (visitor.visitNullLiteral) { + return visitor.visitNullLiteral(this); } else { return visitor.visitChildren(this); } } } - - -export class ColumnListCreateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class RowConstructorContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnNameCreate(): ColumnNameCreateContext[]; - public columnNameCreate(i: number): ColumnNameCreateContext | null; - public columnNameCreate(i?: number): ColumnNameCreateContext[] | ColumnNameCreateContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(ColumnNameCreateContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, ColumnNameCreateContext); + return this.getRuleContext(i, ExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnListCreate; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROW, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnListCreate) { - listener.enterColumnListCreate(this); + if(listener.enterRowConstructor) { + listener.enterRowConstructor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnListCreate) { - listener.exitColumnListCreate(this); + if(listener.exitRowConstructor) { + listener.exitRowConstructor(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRowConstructor) { + return visitor.visitRowConstructor(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SubscriptContext extends PrimaryExpressionContext { + public _value?: PrimaryExpressionContext; + public _index?: ValueExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSubscript) { + listener.enterSubscript(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSubscript) { + listener.exitSubscript(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnListCreate) { - return visitor.visitColumnListCreate(this); + if (visitor.visitSubscript) { + return visitor.visitSubscript(this); } else { return visitor.visitChildren(this); } } } - - -export class ColumnListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class JsonExistsContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnName(): ColumnNameContext[]; - public columnName(i: number): ColumnNameContext | null; - public columnName(i?: number): ColumnNameContext[] | ColumnNameContext | null { - if (i === undefined) { - return this.getRuleContexts(ColumnNameContext); - } - - return this.getRuleContext(i, ColumnNameContext); + public KW_JSON_EXISTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_EXISTS, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnList; + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; + } + public jsonExistsErrorBehavior(): JsonExistsErrorBehaviorContext | null { + return this.getRuleContext(0, JsonExistsErrorBehaviorContext); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); + } + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnList) { - listener.enterColumnList(this); + if(listener.enterJsonExists) { + listener.enterJsonExists(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnList) { - listener.exitColumnList(this); + if(listener.exitJsonExists) { + listener.exitJsonExists(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnList) { - return visitor.visitColumnList(this); + if (visitor.visitJsonExists) { + return visitor.visitJsonExists(this); } else { return visitor.visitChildren(this); } } } - - -export class ColumnAliasesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } - - return this.getRuleContext(i, IdentifierContext); +export class CurrentPathContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnAliases; + public KW_CURRENT_PATH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_PATH, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnAliases) { - listener.enterColumnAliases(this); + if(listener.enterCurrentPath) { + listener.enterCurrentPath(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnAliases) { - listener.exitColumnAliases(this); + if(listener.exitCurrentPath) { + listener.exitCurrentPath(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnAliases) { - return visitor.visitColumnAliases(this); + if (visitor.visitCurrentPath) { + return visitor.visitCurrentPath(this); } else { return visitor.visitChildren(this); } } } - - -export class RelationPrimaryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_relationPrimary; - } - public override copyFrom(ctx: RelationPrimaryContext): void { - super.copyFrom(ctx); - } -} -export class SubqueryRelationContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class SubqueryExpressionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } @@ -18655,530 +27349,517 @@ export class SubqueryRelationContext extends RelationPrimaryContext { return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubqueryRelation) { - listener.enterSubqueryRelation(this); + if(listener.enterSubqueryExpression) { + listener.enterSubqueryExpression(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubqueryRelation) { - listener.exitSubqueryRelation(this); + if(listener.exitSubqueryExpression) { + listener.exitSubqueryExpression(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubqueryRelation) { - return visitor.visitSubqueryRelation(this); + if (visitor.visitSubqueryExpression) { + return visitor.visitSubqueryExpression(this); } else { return visitor.visitChildren(this); } } } -export class ParenthesizedRelationContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class BinaryLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public relation(): RelationContext { - return this.getRuleContext(0, RelationContext)!; + public BINARY_LITERAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.BINARY_LITERAL, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterParenthesizedRelation) { - listener.enterParenthesizedRelation(this); + if(listener.enterBinaryLiteral) { + listener.enterBinaryLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitParenthesizedRelation) { - listener.exitParenthesizedRelation(this); + if(listener.exitBinaryLiteral) { + listener.exitBinaryLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitParenthesizedRelation) { - return visitor.visitParenthesizedRelation(this); + if (visitor.visitBinaryLiteral) { + return visitor.visitBinaryLiteral(this); } else { return visitor.visitChildren(this); } } } -export class UnnestContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class CurrentTimeContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_UNNEST(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UNNEST, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_CURRENT_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_TIME, 0)!; } - public KW_ORDINALITY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDINALITY, 0); + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnnest) { - listener.enterUnnest(this); + if(listener.enterCurrentTime) { + listener.enterCurrentTime(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnnest) { - listener.exitUnnest(this); + if(listener.exitCurrentTime) { + listener.exitCurrentTime(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnnest) { - return visitor.visitUnnest(this); + if (visitor.visitCurrentTime) { + return visitor.visitCurrentTime(this); } else { return visitor.visitChildren(this); } } } -export class TableOrViewRelationContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class LocalTimeContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public tableOrViewName(): TableOrViewNameContext { - return this.getRuleContext(0, TableOrViewNameContext)!; + public KW_LOCALTIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LOCALTIME, 0)!; + } + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableOrViewRelation) { - listener.enterTableOrViewRelation(this); + if(listener.enterLocalTime) { + listener.enterLocalTime(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableOrViewRelation) { - listener.exitTableOrViewRelation(this); + if(listener.exitLocalTime) { + listener.exitLocalTime(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableOrViewRelation) { - return visitor.visitTableOrViewRelation(this); + if (visitor.visitLocalTime) { + return visitor.visitLocalTime(this); } else { return visitor.visitChildren(this); } } } -export class LateralContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class CurrentUserContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_LATERAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LATERAL, 0)!; - } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_CURRENT_USER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_USER, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLateral) { - listener.enterLateral(this); + if(listener.enterCurrentUser) { + listener.enterCurrentUser(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLateral) { - listener.exitLateral(this); + if(listener.exitCurrentUser) { + listener.exitCurrentUser(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLateral) { - return visitor.visitLateral(this); + if (visitor.visitCurrentUser) { + return visitor.visitCurrentUser(this); } else { return visitor.visitChildren(this); } } } - - -export class ExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class JsonQueryContext extends PrimaryExpressionContext { + public _emptyBehavior?: JsonQueryBehaviorContext; + public _errorBehavior?: JsonQueryBehaviorContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext)!; + public KW_JSON_QUERY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_QUERY, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_expression; + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExpression) { - listener.enterExpression(this); - } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExpression) { - listener.exitExpression(this); - } + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExpression) { - return visitor.visitExpression(this); - } else { - return visitor.visitChildren(this); - } + public jsonQueryWrapperBehavior(): JsonQueryWrapperBehaviorContext | null { + return this.getRuleContext(0, JsonQueryWrapperBehaviorContext); } -} - - -export class BooleanExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRAPPER, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_booleanExpression; + public KW_QUOTES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_QUOTES, 0); } - public override copyFrom(ctx: BooleanExpressionContext): void { - super.copyFrom(ctx); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } -} -export class LogicalNotContext extends BooleanExpressionContext { - public constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_NOT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NOT, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext)!; + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_OMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OMIT, 0); + } + public jsonQueryBehavior(): JsonQueryBehaviorContext[]; + public jsonQueryBehavior(i: number): JsonQueryBehaviorContext | null; + public jsonQueryBehavior(i?: number): JsonQueryBehaviorContext[] | JsonQueryBehaviorContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonQueryBehaviorContext); + } + + return this.getRuleContext(i, JsonQueryBehaviorContext); + } + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); + } + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); + } + public KW_SCALAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCALAR, 0); + } + public KW_TEXT_STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT_STRING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLogicalNot) { - listener.enterLogicalNot(this); + if(listener.enterJsonQuery) { + listener.enterJsonQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLogicalNot) { - listener.exitLogicalNot(this); + if(listener.exitJsonQuery) { + listener.exitJsonQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLogicalNot) { - return visitor.visitLogicalNot(this); + if (visitor.visitJsonQuery) { + return visitor.visitJsonQuery(this); } else { return visitor.visitChildren(this); } } } -export class PredicatedContext extends BooleanExpressionContext { - public _valueExpression?: ValueExpressionContext; - public constructor(ctx: BooleanExpressionContext) { +export class MeasureContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; - } - public predicate(): PredicateContext | null { - return this.getRuleContext(0, PredicateContext); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public over(): OverContext { + return this.getRuleContext(0, OverContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPredicated) { - listener.enterPredicated(this); + if(listener.enterMeasure) { + listener.enterMeasure(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPredicated) { - listener.exitPredicated(this); + if(listener.exitMeasure) { + listener.exitMeasure(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPredicated) { - return visitor.visitPredicated(this); + if (visitor.visitMeasure) { + return visitor.visitMeasure(this); } else { return visitor.visitChildren(this); } } } -export class LogicalBinaryContext extends BooleanExpressionContext { - public _left?: BooleanExpressionContext; - public _operator?: Token | null; - public _right?: BooleanExpressionContext; - public constructor(ctx: BooleanExpressionContext) { +export class ExtractContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public booleanExpression(): BooleanExpressionContext[]; - public booleanExpression(i: number): BooleanExpressionContext | null; - public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(BooleanExpressionContext); - } - - return this.getRuleContext(i, BooleanExpressionContext); + public KW_EXTRACT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXTRACT, 0)!; } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OR, 0); + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLogicalBinary) { - listener.enterLogicalBinary(this); + if(listener.enterExtract) { + listener.enterExtract(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLogicalBinary) { - listener.exitLogicalBinary(this); + if(listener.exitExtract) { + listener.exitExtract(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLogicalBinary) { - return visitor.visitLogicalBinary(this); + if (visitor.visitExtract) { + return visitor.visitExtract(this); } else { return visitor.visitChildren(this); } } } - - -export class PredicateContext extends antlr.ParserRuleContext { - public value: antlr.ParserRuleContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number, value: antlr.ParserRuleContext) { - super(parent, invokingState); - this.value = value; - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_predicate; - } - public override copyFrom(ctx: PredicateContext): void { - super.copyFrom(ctx); - this.value = ctx.value; - } -} -export class ComparisonContext extends PredicateContext { - public _right?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class StringLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public comparisonOperator(): ComparisonOperatorContext { - return this.getRuleContext(0, ComparisonOperatorContext)!; - } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterComparison) { - listener.enterComparison(this); + if(listener.enterStringLiteral) { + listener.enterStringLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitComparison) { - listener.exitComparison(this); + if(listener.exitStringLiteral) { + listener.exitStringLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitComparison) { - return visitor.visitComparison(this); + if (visitor.visitStringLiteral) { + return visitor.visitStringLiteral(this); } else { return visitor.visitChildren(this); } } } -export class LikeContext extends PredicateContext { - public _pattern?: ValueExpressionContext; - public _escape?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class ArrayConstructorContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_LIKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; + public KW_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, ValueExpressionContext); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + return this.getRuleContext(i, ExpressionContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLike) { - listener.enterLike(this); + if(listener.enterArrayConstructor) { + listener.enterArrayConstructor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLike) { - listener.exitLike(this); + if(listener.exitArrayConstructor) { + listener.exitArrayConstructor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLike) { - return visitor.visitLike(this); + if (visitor.visitArrayConstructor) { + return visitor.visitArrayConstructor(this); } else { return visitor.visitChildren(this); } } } -export class InSubqueryContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class FunctionCallContext extends PrimaryExpressionContext { + public _label?: IdentifierContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IN, 0)!; + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public ASTERISK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.ASTERISK, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public processingMode(): ProcessingModeContext | null { + return this.getRuleContext(0, ProcessingModeContext); + } + public filter(): FilterContext | null { + return this.getRuleContext(0, FilterContext); + } + public over(): OverContext | null { + return this.getRuleContext(0, OverContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); + } + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); + } + public nullTreatment(): NullTreatmentContext | null { + return this.getRuleContext(0, NullTreatmentContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInSubquery) { - listener.enterInSubquery(this); + if(listener.enterFunctionCall) { + listener.enterFunctionCall(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInSubquery) { - listener.exitInSubquery(this); + if(listener.exitFunctionCall) { + listener.exitFunctionCall(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInSubquery) { - return visitor.visitInSubquery(this); + if (visitor.visitFunctionCall) { + return visitor.visitFunctionCall(this); } else { return visitor.visitChildren(this); } } } -export class DistinctFromContext extends PredicateContext { - public _right?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class CurrentTimestampContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; - } - public KW_DISTINCT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DISTINCT, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; - } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_TIMESTAMP, 0)!; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDistinctFrom) { - listener.enterDistinctFrom(this); + if(listener.enterCurrentTimestamp) { + listener.enterCurrentTimestamp(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDistinctFrom) { - listener.exitDistinctFrom(this); + if(listener.exitCurrentTimestamp) { + listener.exitCurrentTimestamp(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDistinctFrom) { - return visitor.visitDistinctFrom(this); + if (visitor.visitCurrentTimestamp) { + return visitor.visitCurrentTimestamp(this); } else { return visitor.visitChildren(this); } } } -export class InListContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class CurrentSchemaContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IN, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public KW_CURRENT_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_SCHEMA, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInList) { - listener.enterInList(this); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCurrentSchema) { + listener.enterCurrentSchema(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInList) { - listener.exitInList(this); + if(listener.exitCurrentSchema) { + listener.exitCurrentSchema(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInList) { - return visitor.visitInList(this); + if (visitor.visitCurrentSchema) { + return visitor.visitCurrentSchema(this); } else { return visitor.visitChildren(this); } } } -export class NullPredicateContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class ExistsContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; - } - public KW_NULL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + public KW_EXISTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0)!; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNullPredicate) { - listener.enterNullPredicate(this); + if(listener.enterExists) { + listener.enterExists(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNullPredicate) { - listener.exitNullPredicate(this); + if(listener.exitExists) { + listener.exitExists(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNullPredicate) { - return visitor.visitNullPredicate(this); + if (visitor.visitExists) { + return visitor.visitExists(this); } else { return visitor.visitChildren(this); } } } -export class BetweenContext extends PredicateContext { - public _lower?: ValueExpressionContext; - public _upper?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class PositionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_BETWEEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_BETWEEN, 0)!; - } - public KW_AND(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AND, 0)!; + public KW_POSITION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_POSITION, 0)!; } public valueExpression(): ValueExpressionContext[]; public valueExpression(i: number): ValueExpressionContext | null; @@ -19189,245 +27870,365 @@ export class BetweenContext extends PredicateContext { return this.getRuleContext(i, ValueExpressionContext); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public KW_IN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IN, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBetween) { - listener.enterBetween(this); + if(listener.enterPosition) { + listener.enterPosition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBetween) { - listener.exitBetween(this); + if(listener.exitPosition) { + listener.exitPosition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBetween) { - return visitor.visitBetween(this); + if (visitor.visitPosition) { + return visitor.visitPosition(this); } else { return visitor.visitChildren(this); } } } -export class QuantifiedComparisonContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class ListaggContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public comparisonOperator(): ComparisonOperatorContext { - return this.getRuleContext(0, ComparisonOperatorContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public comparisonQuantifier(): ComparisonQuantifierContext { - return this.getRuleContext(0, ComparisonQuantifierContext)!; + public KW_LISTAGG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LISTAGG, 0)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_WITHIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHIN, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GROUP, 0); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); + } + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); + } + public KW_OVERFLOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OVERFLOW, 0); + } + public listAggOverflowBehavior(): ListAggOverflowBehaviorContext | null { + return this.getRuleContext(0, ListAggOverflowBehaviorContext); + } + public filter(): FilterContext | null { + return this.getRuleContext(0, FilterContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQuantifiedComparison) { - listener.enterQuantifiedComparison(this); + if(listener.enterListagg) { + listener.enterListagg(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQuantifiedComparison) { - listener.exitQuantifiedComparison(this); + if(listener.exitListagg) { + listener.exitListagg(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQuantifiedComparison) { - return visitor.visitQuantifiedComparison(this); + if (visitor.visitListagg) { + return visitor.visitListagg(this); } else { return visitor.visitChildren(this); } } } +export class SearchedCaseContext extends PrimaryExpressionContext { + public _elseExpression?: ExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CASE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CASE, 0)!; + } + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public whenClause(): WhenClauseContext[]; + public whenClause(i: number): WhenClauseContext | null; + public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(WhenClauseContext); + } - -export class ValueExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, WhenClauseContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_valueExpression; + public KW_ELSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ELSE, 0); } - public override copyFrom(ctx: ValueExpressionContext): void { - super.copyFrom(ctx); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSearchedCase) { + listener.enterSearchedCase(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSearchedCase) { + listener.exitSearchedCase(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSearchedCase) { + return visitor.visitSearchedCase(this); + } else { + return visitor.visitChildren(this); + } } } -export class ValueExpressionDefaultContext extends ValueExpressionContext { - public constructor(ctx: ValueExpressionContext) { +export class CurrentCatalogContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext)!; + public KW_CURRENT_CATALOG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_CATALOG, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterValueExpressionDefault) { - listener.enterValueExpressionDefault(this); + if(listener.enterCurrentCatalog) { + listener.enterCurrentCatalog(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitValueExpressionDefault) { - listener.exitValueExpressionDefault(this); + if(listener.exitCurrentCatalog) { + listener.exitCurrentCatalog(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitValueExpressionDefault) { - return visitor.visitValueExpressionDefault(this); + if (visitor.visitCurrentCatalog) { + return visitor.visitCurrentCatalog(this); } else { return visitor.visitChildren(this); } } } -export class ConcatenationContext extends ValueExpressionContext { - public _left?: ValueExpressionContext; - public _right?: ValueExpressionContext; - public constructor(ctx: ValueExpressionContext) { +export class GroupingOperationContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public CONCAT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.CONCAT, 0)!; + public KW_GROUPING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + public qualifiedName(): QualifiedNameContext[]; + public qualifiedName(i: number): QualifiedNameContext | null; + public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); + return this.getRuleContexts(QualifiedNameContext); } - return this.getRuleContext(i, ValueExpressionContext); + return this.getRuleContext(i, QualifiedNameContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterConcatenation) { - listener.enterConcatenation(this); + if(listener.enterGroupingOperation) { + listener.enterGroupingOperation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitConcatenation) { - listener.exitConcatenation(this); + if(listener.exitGroupingOperation) { + listener.exitGroupingOperation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitConcatenation) { - return visitor.visitConcatenation(this); + if (visitor.visitGroupingOperation) { + return visitor.visitGroupingOperation(this); } else { return visitor.visitChildren(this); } } } -export class ArithmeticBinaryContext extends ValueExpressionContext { - public _left?: ValueExpressionContext; - public _operator?: Token | null; - public _right?: ValueExpressionContext; - public constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonPathInvocationContext extends antlr.ParserRuleContext { + public _path?: StringContext; + public _pathName?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public jsonValueExpression(): JsonValueExpressionContext { + return this.getRuleContext(0, JsonValueExpressionContext)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public KW_PASSING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PASSING, 0); + } + public jsonArgument(): JsonArgumentContext[]; + public jsonArgument(i: number): JsonArgumentContext | null; + public jsonArgument(i?: number): JsonArgumentContext[] | JsonArgumentContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonArgumentContext); + } + + return this.getRuleContext(i, JsonArgumentContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonPathInvocation; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterJsonPathInvocation) { + listener.enterJsonPathInvocation(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitJsonPathInvocation) { + listener.exitJsonPathInvocation(this); + } } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitJsonPathInvocation) { + return visitor.visitJsonPathInvocation(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, ValueExpressionContext); } - public ASTERISK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.ASTERISK, 0); +} + + +export class JsonValueExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public SLASH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SLASH, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public PERCENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PERCENT, 0); + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PLUS, 0); + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.MINUS, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonValueExpression; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArithmeticBinary) { - listener.enterArithmeticBinary(this); + if(listener.enterJsonValueExpression) { + listener.enterJsonValueExpression(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArithmeticBinary) { - listener.exitArithmeticBinary(this); + if(listener.exitJsonValueExpression) { + listener.exitJsonValueExpression(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArithmeticBinary) { - return visitor.visitArithmeticBinary(this); + if (visitor.visitJsonValueExpression) { + return visitor.visitJsonValueExpression(this); } else { return visitor.visitChildren(this); } } } -export class ArithmeticUnaryContext extends ValueExpressionContext { - public _operator?: Token | null; - public constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonRepresentationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_JSON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON, 0)!; } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.MINUS, 0); + public KW_ENCODING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ENCODING, 0); } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PLUS, 0); + public KW_UTF8(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF8, 0); + } + public KW_UTF16(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF16, 0); + } + public KW_UTF32(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF32, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonRepresentation; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArithmeticUnary) { - listener.enterArithmeticUnary(this); + if(listener.enterJsonRepresentation) { + listener.enterJsonRepresentation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArithmeticUnary) { - listener.exitArithmeticUnary(this); + if(listener.exitJsonRepresentation) { + listener.exitJsonRepresentation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArithmeticUnary) { - return visitor.visitArithmeticUnary(this); + if (visitor.visitJsonRepresentation) { + return visitor.visitJsonRepresentation(this); } else { return visitor.visitChildren(this); } } } -export class AtTimeZoneContext extends ValueExpressionContext { - public constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonArgumentContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public jsonValueExpression(): JsonValueExpressionContext { + return this.getRuleContext(0, JsonValueExpressionContext)!; } - public KW_AT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AT, 0)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public timeZoneSpecifier(): TimeZoneSpecifierContext { - return this.getRuleContext(0, TimeZoneSpecifierContext)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAtTimeZone) { - listener.enterAtTimeZone(this); + if(listener.enterJsonArgument) { + listener.enterJsonArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAtTimeZone) { - listener.exitAtTimeZone(this); + if(listener.exitJsonArgument) { + listener.exitJsonArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAtTimeZone) { - return visitor.visitAtTimeZone(this); + if (visitor.visitJsonArgument) { + return visitor.visitJsonArgument(this); } else { return visitor.visitChildren(this); } @@ -19435,1207 +28236,1358 @@ export class AtTimeZoneContext extends ValueExpressionContext { } -export class PrimaryExpressionContext extends antlr.ParserRuleContext { +export class JsonExistsErrorBehaviorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_primaryExpression; + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRUE, 0); } - public override copyFrom(ctx: PrimaryExpressionContext): void { - super.copyFrom(ctx); + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FALSE, 0); } -} -export class DereferenceContext extends PrimaryExpressionContext { - public _base?: PrimaryExpressionContext; - public _fieldName?: IdentifierContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_UNKNOWN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNKNOWN, 0); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonExistsErrorBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDereference) { - listener.enterDereference(this); + if(listener.enterJsonExistsErrorBehavior) { + listener.enterJsonExistsErrorBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDereference) { - listener.exitDereference(this); + if(listener.exitJsonExistsErrorBehavior) { + listener.exitJsonExistsErrorBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDereference) { - return visitor.visitDereference(this); + if (visitor.visitJsonExistsErrorBehavior) { + return visitor.visitJsonExistsErrorBehavior(this); } else { return visitor.visitChildren(this); } } } -export class TypeConstructorContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonValueBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } - public KW_DOUBLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } - public KW_PRECISION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRECISION, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonValueBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTypeConstructor) { - listener.enterTypeConstructor(this); + if(listener.enterJsonValueBehavior) { + listener.enterJsonValueBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTypeConstructor) { - listener.exitTypeConstructor(this); + if(listener.exitJsonValueBehavior) { + listener.exitJsonValueBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTypeConstructor) { - return visitor.visitTypeConstructor(this); + if (visitor.visitJsonValueBehavior) { + return visitor.visitJsonValueBehavior(this); } else { return visitor.visitChildren(this); } } } -export class SpecialDateTimeFunctionContext extends PrimaryExpressionContext { - public _name?: Token | null; - public _precision?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonQueryWrapperBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CURRENT_DATE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT_DATE, 0); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } - public KW_CURRENT_TIME(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT_TIME, 0); + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0); } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT_TIMESTAMP, 0); + public KW_CONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CONDITIONAL, 0); } - public KW_LOCALTIME(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOCALTIME, 0); + public KW_UNCONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNCONDITIONAL, 0); } - public KW_LOCALTIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOCALTIMESTAMP, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonQueryWrapperBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSpecialDateTimeFunction) { - listener.enterSpecialDateTimeFunction(this); + if(listener.enterJsonQueryWrapperBehavior) { + listener.enterJsonQueryWrapperBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSpecialDateTimeFunction) { - listener.exitSpecialDateTimeFunction(this); + if(listener.exitJsonQueryWrapperBehavior) { + listener.exitJsonQueryWrapperBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSpecialDateTimeFunction) { - return visitor.visitSpecialDateTimeFunction(this); + if (visitor.visitJsonQueryWrapperBehavior) { + return visitor.visitJsonQueryWrapperBehavior(this); } else { return visitor.visitChildren(this); } } } -export class SubstringContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonQueryBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SUBSTRING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SUBSTRING, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); - } - - return this.getRuleContext(i, ValueExpressionContext); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOR, 0); + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0); + } + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OBJECT, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonQueryBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubstring) { - listener.enterSubstring(this); + if(listener.enterJsonQueryBehavior) { + listener.enterJsonQueryBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubstring) { - listener.exitSubstring(this); + if(listener.exitJsonQueryBehavior) { + listener.exitJsonQueryBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubstring) { - return visitor.visitSubstring(this); + if (visitor.visitJsonQueryBehavior) { + return visitor.visitJsonQueryBehavior(this); } else { return visitor.visitChildren(this); } } } -export class CastContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CAST, 0); + + +export class JsonObjectMemberContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; + public KW_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VALUE, 0); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; + public jsonValueExpression(): JsonValueExpressionContext { + return this.getRuleContext(0, JsonValueExpressionContext)!; } - public KW_TRY_CAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TRY_CAST, 0); + public KW_KEY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEY, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonObjectMember; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCast) { - listener.enterCast(this); + if(listener.enterJsonObjectMember) { + listener.enterJsonObjectMember(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCast) { - listener.exitCast(this); + if(listener.exitJsonObjectMember) { + listener.exitJsonObjectMember(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCast) { - return visitor.visitCast(this); + if (visitor.visitJsonObjectMember) { + return visitor.visitJsonObjectMember(this); } else { return visitor.visitChildren(this); } } } -export class LambdaContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } - return this.getRuleContext(i, IdentifierContext); + +export class ProcessingModeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_RUNNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RUNNING, 0); + } + public KW_FINAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FINAL, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_processingMode; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLambda) { - listener.enterLambda(this); + if(listener.enterProcessingMode) { + listener.enterProcessingMode(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLambda) { - listener.exitLambda(this); + if(listener.exitProcessingMode) { + listener.exitProcessingMode(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLambda) { - return visitor.visitLambda(this); + if (visitor.visitProcessingMode) { + return visitor.visitProcessingMode(this); } else { return visitor.visitChildren(this); } } } -export class ParenthesizedExpressionContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class NullTreatmentContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_IGNORE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IGNORE, 0); + } + public KW_NULLS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULLS, 0)!; + } + public KW_RESPECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RESPECT, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_nullTreatment; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterParenthesizedExpression) { - listener.enterParenthesizedExpression(this); + if(listener.enterNullTreatment) { + listener.enterNullTreatment(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitParenthesizedExpression) { - listener.exitParenthesizedExpression(this); + if(listener.exitNullTreatment) { + listener.exitNullTreatment(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitParenthesizedExpression) { - return visitor.visitParenthesizedExpression(this); + if (visitor.visitNullTreatment) { + return visitor.visitNullTreatment(this); } else { return visitor.visitChildren(this); } } } -export class ParameterContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class StringContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_string; + } + public override copyFrom(ctx: StringContext): void { + super.copyFrom(ctx); + } +} +export class UnicodeStringLiteralContext extends StringContext { + public constructor(ctx: StringContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public QUESTION_MARK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0)!; + public UNICODE_STRING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.UNICODE_STRING, 0)!; + } + public KW_UESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UESCAPE, 0); + } + public STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.STRING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterParameter) { - listener.enterParameter(this); + if(listener.enterUnicodeStringLiteral) { + listener.enterUnicodeStringLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitParameter) { - listener.exitParameter(this); + if(listener.exitUnicodeStringLiteral) { + listener.exitUnicodeStringLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitParameter) { - return visitor.visitParameter(this); + if (visitor.visitUnicodeStringLiteral) { + return visitor.visitUnicodeStringLiteral(this); } else { return visitor.visitChildren(this); } } } -export class NormalizeContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class BasicStringLiteralContext extends StringContext { + public constructor(ctx: StringContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_NORMALIZE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NORMALIZE, 0)!; - } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; - } - public normalForm(): NormalFormContext | null { - return this.getRuleContext(0, NormalFormContext); + public STRING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.STRING, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNormalize) { - listener.enterNormalize(this); + if(listener.enterBasicStringLiteral) { + listener.enterBasicStringLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNormalize) { - listener.exitNormalize(this); + if(listener.exitBasicStringLiteral) { + listener.exitBasicStringLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNormalize) { - return visitor.visitNormalize(this); + if (visitor.visitBasicStringLiteral) { + return visitor.visitBasicStringLiteral(this); } else { return visitor.visitChildren(this); } } } -export class IntervalLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class TimeZoneSpecifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_timeZoneSpecifier; + } + public override copyFrom(ctx: TimeZoneSpecifierContext): void { + super.copyFrom(ctx); + } +} +export class TimeZoneIntervalContext extends TimeZoneSpecifierContext { + public constructor(ctx: TimeZoneSpecifierContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + } public interval(): IntervalContext { return this.getRuleContext(0, IntervalContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIntervalLiteral) { - listener.enterIntervalLiteral(this); + if(listener.enterTimeZoneInterval) { + listener.enterTimeZoneInterval(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIntervalLiteral) { - listener.exitIntervalLiteral(this); + if(listener.exitTimeZoneInterval) { + listener.exitTimeZoneInterval(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIntervalLiteral) { - return visitor.visitIntervalLiteral(this); + if (visitor.visitTimeZoneInterval) { + return visitor.visitTimeZoneInterval(this); } else { return visitor.visitChildren(this); } } } -export class NumericLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class TimeZoneStringContext extends TimeZoneSpecifierContext { + public constructor(ctx: TimeZoneSpecifierContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public number(): NumberContext { - return this.getRuleContext(0, NumberContext)!; + public KW_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNumericLiteral) { - listener.enterNumericLiteral(this); + if(listener.enterTimeZoneString) { + listener.enterTimeZoneString(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNumericLiteral) { - listener.exitNumericLiteral(this); + if(listener.exitTimeZoneString) { + listener.exitTimeZoneString(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNumericLiteral) { - return visitor.visitNumericLiteral(this); + if (visitor.visitTimeZoneString) { + return visitor.visitTimeZoneString(this); } else { return visitor.visitChildren(this); } } } -export class BooleanLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ComparisonOperatorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public booleanValue(): BooleanValueContext { - return this.getRuleContext(0, BooleanValueContext)!; + public EQ(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.EQ, 0); + } + public NEQ(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.NEQ, 0); + } + public LT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.LT, 0); + } + public LTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.LTE, 0); + } + public GT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.GT, 0); + } + public GTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.GTE, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_comparisonOperator; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBooleanLiteral) { - listener.enterBooleanLiteral(this); + if(listener.enterComparisonOperator) { + listener.enterComparisonOperator(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBooleanLiteral) { - listener.exitBooleanLiteral(this); + if(listener.exitComparisonOperator) { + listener.exitComparisonOperator(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBooleanLiteral) { - return visitor.visitBooleanLiteral(this); + if (visitor.visitComparisonOperator) { + return visitor.visitComparisonOperator(this); } else { return visitor.visitChildren(this); } } } -export class SimpleCaseContext extends PrimaryExpressionContext { - public _operand?: ExpressionContext; - public _elseExpression?: ExpressionContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CASE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CASE, 0)!; - } - public KW_END(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_END, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - return this.getRuleContext(i, ExpressionContext); - } - public whenClause(): WhenClauseContext[]; - public whenClause(i: number): WhenClauseContext | null; - public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { - if (i === undefined) { - return this.getRuleContexts(WhenClauseContext); - } - return this.getRuleContext(i, WhenClauseContext); - } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ELSE, 0); - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSimpleCase) { - listener.enterSimpleCase(this); - } +export class ComparisonQuantifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSimpleCase) { - listener.exitSimpleCase(this); - } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSimpleCase) { - return visitor.visitSimpleCase(this); - } else { - return visitor.visitChildren(this); - } + public KW_SOME(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SOME, 0); } -} -export class ColumnReferenceContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_ANY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ANY, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_comparisonQuantifier; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnReference) { - listener.enterColumnReference(this); + if(listener.enterComparisonQuantifier) { + listener.enterComparisonQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnReference) { - listener.exitColumnReference(this); + if(listener.exitComparisonQuantifier) { + listener.exitComparisonQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnReference) { - return visitor.visitColumnReference(this); + if (visitor.visitComparisonQuantifier) { + return visitor.visitComparisonQuantifier(this); } else { return visitor.visitChildren(this); } } } -export class NullLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class BooleanValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_NULL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRUE, 0); + } + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FALSE, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_booleanValue; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNullLiteral) { - listener.enterNullLiteral(this); + if(listener.enterBooleanValue) { + listener.enterBooleanValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNullLiteral) { - listener.exitNullLiteral(this); + if(listener.exitBooleanValue) { + listener.exitBooleanValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNullLiteral) { - return visitor.visitNullLiteral(this); + if (visitor.visitBooleanValue) { + return visitor.visitBooleanValue(this); } else { return visitor.visitChildren(this); } } } -export class RowConstructorContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class IntervalContext extends antlr.ParserRuleContext { + public _sign?: Token | null; + public _from_?: IntervalFieldContext; + public _to?: IntervalFieldContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public KW_INTERVAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public intervalField(): IntervalFieldContext[]; + public intervalField(i: number): IntervalFieldContext | null; + public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(IntervalFieldContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, IntervalFieldContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROW, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TO, 0); + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.MINUS, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_interval; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowConstructor) { - listener.enterRowConstructor(this); + if(listener.enterInterval) { + listener.enterInterval(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowConstructor) { - listener.exitRowConstructor(this); + if(listener.exitInterval) { + listener.exitInterval(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowConstructor) { - return visitor.visitRowConstructor(this); + if (visitor.visitInterval) { + return visitor.visitInterval(this); } else { return visitor.visitChildren(this); } } } -export class SubscriptContext extends PrimaryExpressionContext { - public _value?: PrimaryExpressionContext; - public _index?: ValueExpressionContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class IntervalFieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext)!; + public KW_YEAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_YEAR, 0); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_MONTH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MONTH, 0); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubscript) { - listener.enterSubscript(this); - } + public KW_DAY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DAY, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubscript) { - listener.exitSubscript(this); - } + public KW_HOUR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_HOUR, 0); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubscript) { - return visitor.visitSubscript(this); - } else { - return visitor.visitChildren(this); - } + public KW_MINUTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MINUTE, 0); } -} -export class CurrentPathContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_SECOND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SECOND, 0); } - public KW_CURRENT_PATH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_PATH, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_intervalField; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentPath) { - listener.enterCurrentPath(this); + if(listener.enterIntervalField) { + listener.enterIntervalField(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentPath) { - listener.exitCurrentPath(this); + if(listener.exitIntervalField) { + listener.exitIntervalField(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentPath) { - return visitor.visitCurrentPath(this); + if (visitor.visitIntervalField) { + return visitor.visitIntervalField(this); } else { return visitor.visitChildren(this); } } } -export class SubqueryExpressionContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class NormalFormContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_NFD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFD, 0); + } + public KW_NFC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFC, 0); + } + public KW_NFKD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFKD, 0); + } + public KW_NFKC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFKC, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_normalForm; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubqueryExpression) { - listener.enterSubqueryExpression(this); + if(listener.enterNormalForm) { + listener.enterNormalForm(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubqueryExpression) { - listener.exitSubqueryExpression(this); + if(listener.exitNormalForm) { + listener.exitNormalForm(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubqueryExpression) { - return visitor.visitSubqueryExpression(this); + if (visitor.visitNormalForm) { + return visitor.visitNormalForm(this); } else { return visitor.visitChildren(this); } } } -export class BinaryLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class TypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_type; + } + public override copyFrom(ctx: TypeContext): void { + super.copyFrom(ctx); + } +} +export class RowTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public BINARY_LITERAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.BINARY_LITERAL, 0)!; + public KW_ROW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROW, 0)!; + } + public rowField(): RowFieldContext[]; + public rowField(i: number): RowFieldContext | null; + public rowField(i?: number): RowFieldContext[] | RowFieldContext | null { + if (i === undefined) { + return this.getRuleContexts(RowFieldContext); + } + + return this.getRuleContext(i, RowFieldContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBinaryLiteral) { - listener.enterBinaryLiteral(this); + if(listener.enterRowType) { + listener.enterRowType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBinaryLiteral) { - listener.exitBinaryLiteral(this); + if(listener.exitRowType) { + listener.exitRowType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBinaryLiteral) { - return visitor.visitBinaryLiteral(this); + if (visitor.visitRowType) { + return visitor.visitRowType(this); } else { return visitor.visitChildren(this); } } } -export class CurrentUserContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { +export class IntervalTypeContext extends TypeContext { + public _from_?: IntervalFieldContext; + public _to?: IntervalFieldContext; + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_CURRENT_USER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_USER, 0)!; + public KW_INTERVAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; + } + public intervalField(): IntervalFieldContext[]; + public intervalField(i: number): IntervalFieldContext | null; + public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { + if (i === undefined) { + return this.getRuleContexts(IntervalFieldContext); + } + + return this.getRuleContext(i, IntervalFieldContext); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TO, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentUser) { - listener.enterCurrentUser(this); + if(listener.enterIntervalType) { + listener.enterIntervalType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentUser) { - listener.exitCurrentUser(this); + if(listener.exitIntervalType) { + listener.exitIntervalType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentUser) { - return visitor.visitCurrentUser(this); + if (visitor.visitIntervalType) { + return visitor.visitIntervalType(this); } else { return visitor.visitChildren(this); } } } -export class MeasureContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class ArrayTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public over(): OverContext { - return this.getRuleContext(0, OverContext)!; + public KW_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; + } + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMeasure) { - listener.enterMeasure(this); + if(listener.enterArrayType) { + listener.enterArrayType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMeasure) { - listener.exitMeasure(this); + if(listener.exitArrayType) { + listener.exitArrayType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMeasure) { - return visitor.visitMeasure(this); + if (visitor.visitArrayType) { + return visitor.visitArrayType(this); } else { return visitor.visitChildren(this); } } } -export class ExtractContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class DoublePrecisionTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_EXTRACT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXTRACT, 0)!; - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_DOUBLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DOUBLE, 0)!; } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_PRECISION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PRECISION, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExtract) { - listener.enterExtract(this); + if(listener.enterDoublePrecisionType) { + listener.enterDoublePrecisionType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExtract) { - listener.exitExtract(this); + if(listener.exitDoublePrecisionType) { + listener.exitDoublePrecisionType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExtract) { - return visitor.visitExtract(this); + if (visitor.visitDoublePrecisionType) { + return visitor.visitDoublePrecisionType(this); } else { return visitor.visitChildren(this); } } } -export class StringLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class LegacyArrayTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; + public KW_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; + } + public LT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.LT, 0)!; + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public GT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.GT, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStringLiteral) { - listener.enterStringLiteral(this); + if(listener.enterLegacyArrayType) { + listener.enterLegacyArrayType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStringLiteral) { - listener.exitStringLiteral(this); + if(listener.exitLegacyArrayType) { + listener.exitLegacyArrayType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStringLiteral) { - return visitor.visitStringLiteral(this); + if (visitor.visitLegacyArrayType) { + return visitor.visitLegacyArrayType(this); } else { return visitor.visitChildren(this); } } } -export class ArrayConstructorContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class GenericTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ARRAY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public typeParameter(): TypeParameterContext[]; + public typeParameter(i: number): TypeParameterContext | null; + public typeParameter(i?: number): TypeParameterContext[] | TypeParameterContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(TypeParameterContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, TypeParameterContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArrayConstructor) { - listener.enterArrayConstructor(this); + if(listener.enterGenericType) { + listener.enterGenericType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArrayConstructor) { - listener.exitArrayConstructor(this); + if(listener.exitGenericType) { + listener.exitGenericType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArrayConstructor) { - return visitor.visitArrayConstructor(this); + if (visitor.visitGenericType) { + return visitor.visitGenericType(this); } else { return visitor.visitChildren(this); } } } -export class FunctionCallContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class DateTimeTypeContext extends TypeContext { + public _base?: Token | null; + public _precision?: TypeParameterContext; + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public functionName(): FunctionNameContext { - return this.getRuleContext(0, FunctionNameContext)!; - } - public ASTERISK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.ASTERISK, 0); - } - public filter(): FilterContext | null { - return this.getRuleContext(0, FilterContext); - } - public over(): OverContext | null { - return this.getRuleContext(0, OverContext); - } - public processingMode(): ProcessingModeContext | null { - return this.getRuleContext(0, ProcessingModeContext); - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TIMESTAMP, 0); } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); + public KW_TIME(): antlr.TerminalNode[]; + public KW_TIME(i: number): antlr.TerminalNode | null; + public KW_TIME(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_TIME); + } else { + return this.getToken(TrinoSqlParser.KW_TIME, i); + } } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SortItemContext); - } - - return this.getRuleContext(i, SortItemContext); + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ZONE, 0); } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); + public typeParameter(): TypeParameterContext | null { + return this.getRuleContext(0, TypeParameterContext); } - public nullTreatment(): NullTreatmentContext | null { - return this.getRuleContext(0, NullTreatmentContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterFunctionCall) { - listener.enterFunctionCall(this); + if(listener.enterDateTimeType) { + listener.enterDateTimeType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitFunctionCall) { - listener.exitFunctionCall(this); + if(listener.exitDateTimeType) { + listener.exitDateTimeType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitFunctionCall) { - return visitor.visitFunctionCall(this); + if (visitor.visitDateTimeType) { + return visitor.visitDateTimeType(this); } else { return visitor.visitChildren(this); } } } -export class CurrentSchemaContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { +export class LegacyMapTypeContext extends TypeContext { + public _keyType?: TypeContext; + public _valueType?: TypeContext; + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_CURRENT_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_SCHEMA, 0)!; + public KW_MAP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MAP, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentSchema) { - listener.enterCurrentSchema(this); + public LT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.LT, 0)!; + } + public GT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.GT, 0)!; + } + public type_(): TypeContext[]; + public type_(i: number): TypeContext | null; + public type_(i?: number): TypeContext[] | TypeContext | null { + if (i === undefined) { + return this.getRuleContexts(TypeContext); + } + + return this.getRuleContext(i, TypeContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterLegacyMapType) { + listener.enterLegacyMapType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentSchema) { - listener.exitCurrentSchema(this); + if(listener.exitLegacyMapType) { + listener.exitLegacyMapType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentSchema) { - return visitor.visitCurrentSchema(this); + if (visitor.visitLegacyMapType) { + return visitor.visitLegacyMapType(this); } else { return visitor.visitChildren(this); } } } -export class ExistsContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RowFieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_EXISTS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowField; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExists) { - listener.enterExists(this); + if(listener.enterRowField) { + listener.enterRowField(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExists) { - listener.exitExists(this); + if(listener.exitRowField) { + listener.exitRowField(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExists) { - return visitor.visitExists(this); + if (visitor.visitRowField) { + return visitor.visitRowField(this); } else { return visitor.visitChildren(this); } } } -export class PositionContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class TypeParameterContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_POSITION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_POSITION, 0)!; + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); - } - - return this.getRuleContext(i, ValueExpressionContext); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IN, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_typeParameter; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPosition) { - listener.enterPosition(this); + if(listener.enterTypeParameter) { + listener.enterTypeParameter(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPosition) { - listener.exitPosition(this); + if(listener.exitTypeParameter) { + listener.exitTypeParameter(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPosition) { - return visitor.visitPosition(this); + if (visitor.visitTypeParameter) { + return visitor.visitTypeParameter(this); } else { return visitor.visitChildren(this); } } } -export class SearchedCaseContext extends PrimaryExpressionContext { - public _elseExpression?: ExpressionContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class WhenClauseContext extends antlr.ParserRuleContext { + public _condition?: ExpressionContext; + public _result?: ExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CASE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CASE, 0)!; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public KW_END(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_END, 0)!; + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public whenClause(): WhenClauseContext[]; - public whenClause(i: number): WhenClauseContext | null; - public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(WhenClauseContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, WhenClauseContext); - } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ELSE, 0); + return this.getRuleContext(i, ExpressionContext); } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_whenClause; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSearchedCase) { - listener.enterSearchedCase(this); + if(listener.enterWhenClause) { + listener.enterWhenClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSearchedCase) { - listener.exitSearchedCase(this); + if(listener.exitWhenClause) { + listener.exitWhenClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSearchedCase) { - return visitor.visitSearchedCase(this); + if (visitor.visitWhenClause) { + return visitor.visitWhenClause(this); } else { return visitor.visitChildren(this); } } } -export class CurrentCatalogContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class FilterContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CURRENT_CATALOG(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_CATALOG, 0)!; + public KW_FILTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FILTER, 0)!; + } + public KW_WHERE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHERE, 0)!; + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_filter; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentCatalog) { - listener.enterCurrentCatalog(this); + if(listener.enterFilter) { + listener.enterFilter(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentCatalog) { - listener.exitCurrentCatalog(this); + if(listener.exitFilter) { + listener.exitFilter(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentCatalog) { - return visitor.visitCurrentCatalog(this); + if (visitor.visitFilter) { + return visitor.visitFilter(this); } else { return visitor.visitChildren(this); } } } -export class GroupingOperationContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class MergeCaseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_mergeCase; + } + public override copyFrom(ctx: MergeCaseContext): void { + super.copyFrom(ctx); + } +} +export class MergeInsertContext extends MergeCaseContext { + public _condition?: ExpressionContext; + public _identifier?: IdentifierContext; + public _targets: IdentifierContext[] = []; + public _expression?: ExpressionContext; + public _values: ExpressionContext[] = []; + public constructor(ctx: MergeCaseContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_GROUPING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public qualifiedName(): QualifiedNameContext[]; - public qualifiedName(i: number): QualifiedNameContext | null; - public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { - if (i === undefined) { - return this.getRuleContexts(QualifiedNameContext); - } - - return this.getRuleContext(i, QualifiedNameContext); + public KW_NOT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NOT, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupingOperation) { - listener.enterGroupingOperation(this); - } + public KW_MATCHED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupingOperation) { - listener.exitGroupingOperation(this); - } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupingOperation) { - return visitor.visitGroupingOperation(this); - } else { - return visitor.visitChildren(this); - } + public KW_INSERT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; } -} - - -export class ProcessingModeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_VALUES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; } - public KW_RUNNING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RUNNING, 0); + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } - public KW_FINAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FINAL, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_processingMode; + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProcessingMode) { - listener.enterProcessingMode(this); + if(listener.enterMergeInsert) { + listener.enterMergeInsert(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProcessingMode) { - listener.exitProcessingMode(this); + if(listener.exitMergeInsert) { + listener.exitMergeInsert(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProcessingMode) { - return visitor.visitProcessingMode(this); + if (visitor.visitMergeInsert) { + return visitor.visitMergeInsert(this); } else { return visitor.visitChildren(this); } } } - - -export class NullTreatmentContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class MergeUpdateContext extends MergeCaseContext { + public _condition?: ExpressionContext; + public _identifier?: IdentifierContext; + public _targets: IdentifierContext[] = []; + public _expression?: ExpressionContext; + public _values: ExpressionContext[] = []; + public constructor(ctx: MergeCaseContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_IGNORE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IGNORE, 0); + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public KW_NULLS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NULLS, 0)!; + public KW_MATCHED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; } - public KW_RESPECT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RESPECT, 0); + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_nullTreatment; + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public EQ(): antlr.TerminalNode[]; + public EQ(i: number): antlr.TerminalNode | null; + public EQ(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.EQ); + } else { + return this.getToken(TrinoSqlParser.EQ, i); + } + } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNullTreatment) { - listener.enterNullTreatment(this); + if(listener.enterMergeUpdate) { + listener.enterMergeUpdate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNullTreatment) { - listener.exitNullTreatment(this); + if(listener.exitMergeUpdate) { + listener.exitMergeUpdate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNullTreatment) { - return visitor.visitNullTreatment(this); + if (visitor.visitMergeUpdate) { + return visitor.visitMergeUpdate(this); } else { return visitor.visitChildren(this); } } } - - -export class StringContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class MergeDeleteContext extends MergeCaseContext { + public _condition?: ExpressionContext; + public constructor(ctx: MergeCaseContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_string; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public override copyFrom(ctx: StringContext): void { - super.copyFrom(ctx); + public KW_MATCHED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; } -} -export class UnicodeStringLiteralContext extends StringContext { - public constructor(ctx: StringContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public UNICODE_STRING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.UNICODE_STRING, 0)!; + public KW_DELETE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; } - public KW_UESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_UESCAPE, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } - public STRING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.STRING, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnicodeStringLiteral) { - listener.enterUnicodeStringLiteral(this); + if(listener.enterMergeDelete) { + listener.enterMergeDelete(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnicodeStringLiteral) { - listener.exitUnicodeStringLiteral(this); + if(listener.exitMergeDelete) { + listener.exitMergeDelete(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnicodeStringLiteral) { - return visitor.visitUnicodeStringLiteral(this); + if (visitor.visitMergeDelete) { + return visitor.visitMergeDelete(this); } else { return visitor.visitChildren(this); } } } -export class BasicStringLiteralContext extends StringContext { - public constructor(ctx: StringContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class OverContext extends antlr.ParserRuleContext { + public _windowName?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public STRING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.STRING, 0)!; + public KW_OVER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OVER, 0)!; + } + public windowSpecification(): WindowSpecificationContext | null { + return this.getRuleContext(0, WindowSpecificationContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_over; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBasicStringLiteral) { - listener.enterBasicStringLiteral(this); + if(listener.enterOver) { + listener.enterOver(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBasicStringLiteral) { - listener.exitBasicStringLiteral(this); + if(listener.exitOver) { + listener.exitOver(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBasicStringLiteral) { - return visitor.visitBasicStringLiteral(this); + if (visitor.visitOver) { + return visitor.visitOver(this); } else { return visitor.visitChildren(this); } @@ -20643,76 +29595,86 @@ export class BasicStringLiteralContext extends StringContext { } -export class TimeZoneSpecifierContext extends antlr.ParserRuleContext { +export class WindowFrameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_timeZoneSpecifier; + public frameExtent(): FrameExtentContext { + return this.getRuleContext(0, FrameExtentContext)!; } - public override copyFrom(ctx: TimeZoneSpecifierContext): void { - super.copyFrom(ctx); + public KW_MEASURES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MEASURES, 0); } -} -export class TimeZoneIntervalContext extends TimeZoneSpecifierContext { - public constructor(ctx: TimeZoneSpecifierContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public measureDefinition(): MeasureDefinitionContext[]; + public measureDefinition(i: number): MeasureDefinitionContext | null; + public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(MeasureDefinitionContext); + } + + return this.getRuleContext(i, MeasureDefinitionContext); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AFTER, 0); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + public KW_MATCH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCH, 0); } - public interval(): IntervalContext { - return this.getRuleContext(0, IntervalContext)!; + public skipTo(): SkipToContext | null { + return this.getRuleContext(0, SkipToContext); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTimeZoneInterval) { - listener.enterTimeZoneInterval(this); - } + public KW_PATTERN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATTERN, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTimeZoneInterval) { - listener.exitTimeZoneInterval(this); - } + public rowPattern(): RowPatternContext | null { + return this.getRuleContext(0, RowPatternContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTimeZoneInterval) { - return visitor.visitTimeZoneInterval(this); - } else { - return visitor.visitChildren(this); + public KW_SUBSET(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SUBSET, 0); + } + public subsetDefinition(): SubsetDefinitionContext[]; + public subsetDefinition(i: number): SubsetDefinitionContext | null; + public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(SubsetDefinitionContext); } + + return this.getRuleContext(i, SubsetDefinitionContext); } -} -export class TimeZoneStringContext extends TimeZoneSpecifierContext { - public constructor(ctx: TimeZoneSpecifierContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_DEFINE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINE, 0); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + public variableDefinition(): VariableDefinitionContext[]; + public variableDefinition(i: number): VariableDefinitionContext | null; + public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(VariableDefinitionContext); + } + + return this.getRuleContext(i, VariableDefinitionContext); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + public KW_INITIAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INITIAL, 0); } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; + public KW_SEEK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SEEK, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_windowFrame; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTimeZoneString) { - listener.enterTimeZoneString(this); + if(listener.enterWindowFrame) { + listener.enterWindowFrame(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTimeZoneString) { - listener.exitTimeZoneString(this); + if(listener.exitWindowFrame) { + listener.exitWindowFrame(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTimeZoneString) { - return visitor.visitTimeZoneString(this); + if (visitor.visitWindowFrame) { + return visitor.visitWindowFrame(this); } else { return visitor.visitChildren(this); } @@ -20720,44 +29682,53 @@ export class TimeZoneStringContext extends TimeZoneSpecifierContext { } -export class ComparisonOperatorContext extends antlr.ParserRuleContext { +export class FrameExtentContext extends antlr.ParserRuleContext { + public _frameType?: Token | null; + public _start?: FrameBoundContext; + public _end?: FrameBoundContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public EQ(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.EQ, 0); + public KW_RANGE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RANGE, 0); } - public NEQ(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.NEQ, 0); + public frameBound(): FrameBoundContext[]; + public frameBound(i: number): FrameBoundContext | null; + public frameBound(i?: number): FrameBoundContext[] | FrameBoundContext | null { + if (i === undefined) { + return this.getRuleContexts(FrameBoundContext); + } + + return this.getRuleContext(i, FrameBoundContext); } - public LT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.LT, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROWS, 0); } - public LTE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.LTE, 0); + public KW_GROUPS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GROUPS, 0); } - public GT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.GT, 0); + public KW_BETWEEN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BETWEEN, 0); } - public GTE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.GTE, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_comparisonOperator; + return TrinoSqlParser.RULE_frameExtent; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterComparisonOperator) { - listener.enterComparisonOperator(this); + if(listener.enterFrameExtent) { + listener.enterFrameExtent(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitComparisonOperator) { - listener.exitComparisonOperator(this); + if(listener.exitFrameExtent) { + listener.exitFrameExtent(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitComparisonOperator) { - return visitor.visitComparisonOperator(this); + if (visitor.visitFrameExtent) { + return visitor.visitFrameExtent(this); } else { return visitor.visitChildren(this); } @@ -20765,122 +29736,107 @@ export class ComparisonOperatorContext extends antlr.ParserRuleContext { } -export class ComparisonQuantifierContext extends antlr.ParserRuleContext { +export class FrameBoundContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_frameBound; } - public KW_SOME(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SOME, 0); + public override copyFrom(ctx: FrameBoundContext): void { + super.copyFrom(ctx); } - public KW_ANY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ANY, 0); +} +export class BoundedFrameContext extends FrameBoundContext { + public _boundType?: Token | null; + public constructor(ctx: FrameBoundContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_comparisonQuantifier; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public KW_PRECEDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); + } + public KW_FOLLOWING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterComparisonQuantifier) { - listener.enterComparisonQuantifier(this); + if(listener.enterBoundedFrame) { + listener.enterBoundedFrame(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitComparisonQuantifier) { - listener.exitComparisonQuantifier(this); + if(listener.exitBoundedFrame) { + listener.exitBoundedFrame(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitComparisonQuantifier) { - return visitor.visitComparisonQuantifier(this); + if (visitor.visitBoundedFrame) { + return visitor.visitBoundedFrame(this); } else { return visitor.visitChildren(this); } } } - - -export class BooleanValueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class UnboundedFrameContext extends FrameBoundContext { + public _boundType?: Token | null; + public constructor(ctx: FrameBoundContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TRUE, 0); + public KW_UNBOUNDED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNBOUNDED, 0)!; } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FALSE, 0); + public KW_PRECEDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_booleanValue; + public KW_FOLLOWING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBooleanValue) { - listener.enterBooleanValue(this); + if(listener.enterUnboundedFrame) { + listener.enterUnboundedFrame(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBooleanValue) { - listener.exitBooleanValue(this); + if(listener.exitUnboundedFrame) { + listener.exitUnboundedFrame(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBooleanValue) { - return visitor.visitBooleanValue(this); + if (visitor.visitUnboundedFrame) { + return visitor.visitUnboundedFrame(this); } else { return visitor.visitChildren(this); } } } - - -export class IntervalContext extends antlr.ParserRuleContext { - public _sign?: Token | null; - public _from_?: IntervalFieldContext; - public _to?: IntervalFieldContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INTERVAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; - } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; - } - public intervalField(): IntervalFieldContext[]; - public intervalField(i: number): IntervalFieldContext | null; - public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { - if (i === undefined) { - return this.getRuleContexts(IntervalFieldContext); - } - - return this.getRuleContext(i, IntervalFieldContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TO, 0); - } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PLUS, 0); +export class CurrentRowBoundContext extends FrameBoundContext { + public constructor(ctx: FrameBoundContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.MINUS, 0); + public KW_CURRENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_interval; + public KW_ROW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROW, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInterval) { - listener.enterInterval(this); + if(listener.enterCurrentRowBound) { + listener.enterCurrentRowBound(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInterval) { - listener.exitInterval(this); + if(listener.exitCurrentRowBound) { + listener.exitCurrentRowBound(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInterval) { - return visitor.visitInterval(this); + if (visitor.visitCurrentRowBound) { + return visitor.visitCurrentRowBound(this); } else { return visitor.visitChildren(this); } @@ -20888,83 +29844,105 @@ export class IntervalContext extends antlr.ParserRuleContext { } -export class IntervalFieldContext extends antlr.ParserRuleContext { +export class RowPatternContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_YEAR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_YEAR, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowPattern; } - public KW_MONTH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MONTH, 0); + public override copyFrom(ctx: RowPatternContext): void { + super.copyFrom(ctx); } - public KW_DAY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DAY, 0); +} +export class QuantifiedPrimaryContext extends RowPatternContext { + public constructor(ctx: RowPatternContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_HOUR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_HOUR, 0); + public patternPrimary(): PatternPrimaryContext { + return this.getRuleContext(0, PatternPrimaryContext)!; } - public KW_MINUTE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MINUTE, 0); + public patternQuantifier(): PatternQuantifierContext | null { + return this.getRuleContext(0, PatternQuantifierContext); } - public KW_SECOND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SECOND, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQuantifiedPrimary) { + listener.enterQuantifiedPrimary(this); + } } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_intervalField; + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQuantifiedPrimary) { + listener.exitQuantifiedPrimary(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQuantifiedPrimary) { + return visitor.visitQuantifiedPrimary(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class PatternConcatenationContext extends RowPatternContext { + public constructor(ctx: RowPatternContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public rowPattern(): RowPatternContext[]; + public rowPattern(i: number): RowPatternContext | null; + public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + if (i === undefined) { + return this.getRuleContexts(RowPatternContext); + } + + return this.getRuleContext(i, RowPatternContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIntervalField) { - listener.enterIntervalField(this); + if(listener.enterPatternConcatenation) { + listener.enterPatternConcatenation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIntervalField) { - listener.exitIntervalField(this); + if(listener.exitPatternConcatenation) { + listener.exitPatternConcatenation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIntervalField) { - return visitor.visitIntervalField(this); + if (visitor.visitPatternConcatenation) { + return visitor.visitPatternConcatenation(this); } else { return visitor.visitChildren(this); } } } - - -export class NormalFormContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NFD(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFD, 0); - } - public KW_NFC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFC, 0); - } - public KW_NFKD(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFKD, 0); - } - public KW_NFKC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFKC, 0); +export class PatternAlternationContext extends RowPatternContext { + public constructor(ctx: RowPatternContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_normalForm; + public rowPattern(): RowPatternContext[]; + public rowPattern(i: number): RowPatternContext | null; + public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + if (i === undefined) { + return this.getRuleContexts(RowPatternContext); + } + + return this.getRuleContext(i, RowPatternContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNormalForm) { - listener.enterNormalForm(this); + if(listener.enterPatternAlternation) { + listener.enterPatternAlternation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNormalForm) { - listener.exitNormalForm(this); + if(listener.exitPatternAlternation) { + listener.exitPatternAlternation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNormalForm) { - return visitor.visitNormalForm(this); + if (visitor.visitPatternAlternation) { + return visitor.visitPatternAlternation(this); } else { return visitor.visitChildren(this); } @@ -20972,420 +29950,339 @@ export class NormalFormContext extends antlr.ParserRuleContext { } -export class TypeContext extends antlr.ParserRuleContext { +export class PatternPrimaryContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_type; + return TrinoSqlParser.RULE_patternPrimary; } - public override copyFrom(ctx: TypeContext): void { + public override copyFrom(ctx: PatternPrimaryContext): void { super.copyFrom(ctx); } } -export class RowTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class PatternPermutationContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ROW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROW, 0)!; + public KW_PERMUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PERMUTE, 0)!; } - public rowField(): RowFieldContext[]; - public rowField(i: number): RowFieldContext | null; - public rowField(i?: number): RowFieldContext[] | RowFieldContext | null { + public rowPattern(): RowPatternContext[]; + public rowPattern(i: number): RowPatternContext | null; + public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { if (i === undefined) { - return this.getRuleContexts(RowFieldContext); + return this.getRuleContexts(RowPatternContext); } - return this.getRuleContext(i, RowFieldContext); + return this.getRuleContext(i, RowPatternContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowType) { - listener.enterRowType(this); + if(listener.enterPatternPermutation) { + listener.enterPatternPermutation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowType) { - listener.exitRowType(this); + if(listener.exitPatternPermutation) { + listener.exitPatternPermutation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowType) { - return visitor.visitRowType(this); + if (visitor.visitPatternPermutation) { + return visitor.visitPatternPermutation(this); } else { return visitor.visitChildren(this); } } } -export class IntervalTypeContext extends TypeContext { - public _from_?: IntervalFieldContext; - public _to?: IntervalFieldContext; - public constructor(ctx: TypeContext) { +export class PartitionEndAnchorContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_INTERVAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; - } - public intervalField(): IntervalFieldContext[]; - public intervalField(i: number): IntervalFieldContext | null; - public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { - if (i === undefined) { - return this.getRuleContexts(IntervalFieldContext); - } - - return this.getRuleContext(i, IntervalFieldContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TO, 0); - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIntervalType) { - listener.enterIntervalType(this); + if(listener.enterPartitionEndAnchor) { + listener.enterPartitionEndAnchor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIntervalType) { - listener.exitIntervalType(this); + if(listener.exitPartitionEndAnchor) { + listener.exitPartitionEndAnchor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIntervalType) { - return visitor.visitIntervalType(this); + if (visitor.visitPartitionEndAnchor) { + return visitor.visitPartitionEndAnchor(this); } else { return visitor.visitChildren(this); } } } -export class ArrayTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class PatternVariableContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; - } - public KW_ARRAY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; - } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArrayType) { - listener.enterArrayType(this); + if(listener.enterPatternVariable) { + listener.enterPatternVariable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArrayType) { - listener.exitArrayType(this); + if(listener.exitPatternVariable) { + listener.exitPatternVariable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArrayType) { - return visitor.visitArrayType(this); + if (visitor.visitPatternVariable) { + return visitor.visitPatternVariable(this); } else { return visitor.visitChildren(this); } } } -export class DoublePrecisionTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class ExcludedPatternContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DOUBLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DOUBLE, 0)!; - } - public KW_PRECISION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PRECISION, 0)!; + public rowPattern(): RowPatternContext { + return this.getRuleContext(0, RowPatternContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDoublePrecisionType) { - listener.enterDoublePrecisionType(this); + if(listener.enterExcludedPattern) { + listener.enterExcludedPattern(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDoublePrecisionType) { - listener.exitDoublePrecisionType(this); + if(listener.exitExcludedPattern) { + listener.exitExcludedPattern(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDoublePrecisionType) { - return visitor.visitDoublePrecisionType(this); + if (visitor.visitExcludedPattern) { + return visitor.visitExcludedPattern(this); } else { return visitor.visitChildren(this); } } } -export class LegacyArrayTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class PartitionStartAnchorContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ARRAY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; - } - public LT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.LT, 0)!; - } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; - } - public GT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.GT, 0)!; - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLegacyArrayType) { - listener.enterLegacyArrayType(this); + if(listener.enterPartitionStartAnchor) { + listener.enterPartitionStartAnchor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLegacyArrayType) { - listener.exitLegacyArrayType(this); + if(listener.exitPartitionStartAnchor) { + listener.exitPartitionStartAnchor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLegacyArrayType) { - return visitor.visitLegacyArrayType(this); + if (visitor.visitPartitionStartAnchor) { + return visitor.visitPartitionStartAnchor(this); } else { return visitor.visitChildren(this); } } } -export class GenericTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class EmptyPatternContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public typeParameter(): TypeParameterContext[]; - public typeParameter(i: number): TypeParameterContext | null; - public typeParameter(i?: number): TypeParameterContext[] | TypeParameterContext | null { - if (i === undefined) { - return this.getRuleContexts(TypeParameterContext); - } - - return this.getRuleContext(i, TypeParameterContext); - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGenericType) { - listener.enterGenericType(this); + if(listener.enterEmptyPattern) { + listener.enterEmptyPattern(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGenericType) { - listener.exitGenericType(this); + if(listener.exitEmptyPattern) { + listener.exitEmptyPattern(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGenericType) { - return visitor.visitGenericType(this); + if (visitor.visitEmptyPattern) { + return visitor.visitEmptyPattern(this); } else { return visitor.visitChildren(this); } } } -export class DateTimeTypeContext extends TypeContext { - public _base?: Token | null; - public _precision?: TypeParameterContext; - public constructor(ctx: TypeContext) { +export class GroupedPatternContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TIMESTAMP, 0); - } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); - } - public KW_TIME(): antlr.TerminalNode[]; - public KW_TIME(i: number): antlr.TerminalNode | null; - public KW_TIME(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_TIME); - } else { - return this.getToken(TrinoSqlParser.KW_TIME, i); - } - } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ZONE, 0); - } - public typeParameter(): TypeParameterContext | null { - return this.getRuleContext(0, TypeParameterContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public rowPattern(): RowPatternContext { + return this.getRuleContext(0, RowPatternContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDateTimeType) { - listener.enterDateTimeType(this); + if(listener.enterGroupedPattern) { + listener.enterGroupedPattern(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDateTimeType) { - listener.exitDateTimeType(this); + if(listener.exitGroupedPattern) { + listener.exitGroupedPattern(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDateTimeType) { - return visitor.visitDateTimeType(this); + if (visitor.visitGroupedPattern) { + return visitor.visitGroupedPattern(this); } else { return visitor.visitChildren(this); } } } -export class LegacyMapTypeContext extends TypeContext { - public _keyType?: TypeContext; - public _valueType?: TypeContext; - public constructor(ctx: TypeContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PatternQuantifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_MAP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MAP, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_patternQuantifier; } - public LT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.LT, 0)!; + public override copyFrom(ctx: PatternQuantifierContext): void { + super.copyFrom(ctx); } - public GT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.GT, 0)!; +} +export class ZeroOrMoreQuantifierContext extends PatternQuantifierContext { + public _reluctant?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public type_(): TypeContext[]; - public type_(i: number): TypeContext | null; - public type_(i?: number): TypeContext[] | TypeContext | null { - if (i === undefined) { - return this.getRuleContexts(TypeContext); - } - - return this.getRuleContext(i, TypeContext); + public ASTERISK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.ASTERISK, 0)!; + } + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLegacyMapType) { - listener.enterLegacyMapType(this); + if(listener.enterZeroOrMoreQuantifier) { + listener.enterZeroOrMoreQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLegacyMapType) { - listener.exitLegacyMapType(this); + if(listener.exitZeroOrMoreQuantifier) { + listener.exitZeroOrMoreQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLegacyMapType) { - return visitor.visitLegacyMapType(this); + if (visitor.visitZeroOrMoreQuantifier) { + return visitor.visitZeroOrMoreQuantifier(this); } else { return visitor.visitChildren(this); } } } - - -export class RowFieldContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; +export class OneOrMoreQuantifierContext extends PatternQuantifierContext { + public _reluctant?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public PLUS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.PLUS, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowField; + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowField) { - listener.enterRowField(this); + if(listener.enterOneOrMoreQuantifier) { + listener.enterOneOrMoreQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowField) { - listener.exitRowField(this); + if(listener.exitOneOrMoreQuantifier) { + listener.exitOneOrMoreQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowField) { - return visitor.visitRowField(this); + if (visitor.visitOneOrMoreQuantifier) { + return visitor.visitOneOrMoreQuantifier(this); } else { return visitor.visitChildren(this); } } } - - -export class TypeParameterContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); - } - public type(): TypeContext | null { - return this.getRuleContext(0, TypeContext); +export class ZeroOrOneQuantifierContext extends PatternQuantifierContext { + public _reluctant?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_typeParameter; + public QUESTION_MARK(): antlr.TerminalNode[]; + public QUESTION_MARK(i: number): antlr.TerminalNode | null; + public QUESTION_MARK(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.QUESTION_MARK); + } else { + return this.getToken(TrinoSqlParser.QUESTION_MARK, i); + } } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTypeParameter) { - listener.enterTypeParameter(this); + if(listener.enterZeroOrOneQuantifier) { + listener.enterZeroOrOneQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTypeParameter) { - listener.exitTypeParameter(this); + if(listener.exitZeroOrOneQuantifier) { + listener.exitZeroOrOneQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTypeParameter) { - return visitor.visitTypeParameter(this); + if (visitor.visitZeroOrOneQuantifier) { + return visitor.visitZeroOrOneQuantifier(this); } else { return visitor.visitChildren(this); } } } - - -export class WhenClauseContext extends antlr.ParserRuleContext { - public _condition?: ExpressionContext; - public _result?: ExpressionContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; +export class RangeQuantifierContext extends PatternQuantifierContext { + public _exactly?: Token | null; + public _reluctant?: Token | null; + public _atLeast?: Token | null; + public _atMost?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); + public INTEGER_VALUE(): antlr.TerminalNode[]; + public INTEGER_VALUE(i: number): antlr.TerminalNode | null; + public INTEGER_VALUE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.INTEGER_VALUE); + } else { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, i); + } } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_whenClause; + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWhenClause) { - listener.enterWhenClause(this); + if(listener.enterRangeQuantifier) { + listener.enterRangeQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWhenClause) { - listener.exitWhenClause(this); + if(listener.exitRangeQuantifier) { + listener.exitRangeQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWhenClause) { - return visitor.visitWhenClause(this); + if (visitor.visitRangeQuantifier) { + return visitor.visitRangeQuantifier(this); } else { return visitor.visitChildren(this); } @@ -21393,35 +30290,35 @@ export class WhenClauseContext extends antlr.ParserRuleContext { } -export class FilterContext extends antlr.ParserRuleContext { +export class UpdateAssignmentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FILTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FILTER, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_WHERE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHERE, 0)!; + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_filter; + return TrinoSqlParser.RULE_updateAssignment; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterFilter) { - listener.enterFilter(this); + if(listener.enterUpdateAssignment) { + listener.enterUpdateAssignment(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitFilter) { - listener.exitFilter(this); + if(listener.exitUpdateAssignment) { + listener.exitUpdateAssignment(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitFilter) { - return visitor.visitFilter(this); + if (visitor.visitUpdateAssignment) { + return visitor.visitUpdateAssignment(this); } else { return visitor.visitChildren(this); } @@ -21429,194 +30326,165 @@ export class FilterContext extends antlr.ParserRuleContext { } -export class MergeCaseContext extends antlr.ParserRuleContext { +export class ExplainOptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_mergeCase; + return TrinoSqlParser.RULE_explainOption; } - public override copyFrom(ctx: MergeCaseContext): void { + public override copyFrom(ctx: ExplainOptionContext): void { super.copyFrom(ctx); } } -export class MergeInsertContext extends MergeCaseContext { - public _condition?: ExpressionContext; - public _identifier?: IdentifierContext; - public _targets: IdentifierContext[] = []; - public _expression?: ExpressionContext; - public _values: ExpressionContext[] = []; - public constructor(ctx: MergeCaseContext) { +export class ExplainFormatContext extends ExplainOptionContext { + public _value?: Token | null; + public constructor(ctx: ExplainOptionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; - } - public KW_NOT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NOT, 0)!; - } - public KW_MATCHED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; - } - public KW_INSERT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; - } - public KW_VALUES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public KW_FORMAT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0)!; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } - - return this.getRuleContext(i, IdentifierContext); + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT, 0); + } + public KW_GRAPHVIZ(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRAPHVIZ, 0); + } + public KW_JSON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_JSON, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMergeInsert) { - listener.enterMergeInsert(this); + if(listener.enterExplainFormat) { + listener.enterExplainFormat(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMergeInsert) { - listener.exitMergeInsert(this); + if(listener.exitExplainFormat) { + listener.exitExplainFormat(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMergeInsert) { - return visitor.visitMergeInsert(this); + if (visitor.visitExplainFormat) { + return visitor.visitExplainFormat(this); } else { return visitor.visitChildren(this); } } } -export class MergeUpdateContext extends MergeCaseContext { - public _condition?: ExpressionContext; - public _identifier?: IdentifierContext; - public _targets: IdentifierContext[] = []; - public _expression?: ExpressionContext; - public _values: ExpressionContext[] = []; - public constructor(ctx: MergeCaseContext) { +export class ExplainTypeContext extends ExplainOptionContext { + public _value?: Token | null; + public constructor(ctx: ExplainOptionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TYPE, 0)!; } - public KW_MATCHED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; + public KW_LOGICAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LOGICAL, 0); } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; + public KW_DISTRIBUTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DISTRIBUTED, 0); } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + public KW_VALIDATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VALIDATE, 0); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_IO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IO, 0); } - public EQ(): antlr.TerminalNode[]; - public EQ(i: number): antlr.TerminalNode | null; - public EQ(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.EQ); - } else { - return this.getToken(TrinoSqlParser.EQ, i); - } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExplainType) { + listener.enterExplainType(this); + } } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExplainType) { + listener.exitExplainType(this); } - - return this.getRuleContext(i, IdentifierContext); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExplainType) { + return visitor.visitExplainType(this); + } else { + return visitor.visitChildren(this); } + } +} - return this.getRuleContext(i, ExpressionContext); + +export class TransactionModeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_transactionMode; + } + public override copyFrom(ctx: TransactionModeContext): void { + super.copyFrom(ctx); + } +} +export class TransactionAccessModeContext extends TransactionModeContext { + public _accessMode?: Token | null; + public constructor(ctx: TransactionModeContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ONLY, 0); + } + public KW_WRITE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRITE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMergeUpdate) { - listener.enterMergeUpdate(this); + if(listener.enterTransactionAccessMode) { + listener.enterTransactionAccessMode(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMergeUpdate) { - listener.exitMergeUpdate(this); + if(listener.exitTransactionAccessMode) { + listener.exitTransactionAccessMode(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMergeUpdate) { - return visitor.visitMergeUpdate(this); + if (visitor.visitTransactionAccessMode) { + return visitor.visitTransactionAccessMode(this); } else { return visitor.visitChildren(this); } } } -export class MergeDeleteContext extends MergeCaseContext { - public _condition?: ExpressionContext; - public constructor(ctx: MergeCaseContext) { +export class IsolationLevelContext extends TransactionModeContext { + public constructor(ctx: TransactionModeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; - } - public KW_MATCHED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; - } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; + public KW_ISOLATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ISOLATION, 0)!; } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public KW_LEVEL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LEVEL, 0)!; } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public levelOfIsolation(): LevelOfIsolationContext { + return this.getRuleContext(0, LevelOfIsolationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMergeDelete) { - listener.enterMergeDelete(this); + if(listener.enterIsolationLevel) { + listener.enterIsolationLevel(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMergeDelete) { - listener.exitMergeDelete(this); + if(listener.exitIsolationLevel) { + listener.exitIsolationLevel(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMergeDelete) { - return visitor.visitMergeDelete(this); + if (visitor.visitIsolationLevel) { + return visitor.visitIsolationLevel(this); } else { return visitor.visitChildren(this); } @@ -21624,123 +30492,125 @@ export class MergeDeleteContext extends MergeCaseContext { } -export class OverContext extends antlr.ParserRuleContext { - public _windowName?: IdentifierContext; +export class LevelOfIsolationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_OVER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_OVER, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_levelOfIsolation; } - public windowSpecification(): WindowSpecificationContext | null { - return this.getRuleContext(0, WindowSpecificationContext); + public override copyFrom(ctx: LevelOfIsolationContext): void { + super.copyFrom(ctx); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); +} +export class ReadUncommittedContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_over; + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; + } + public KW_UNCOMMITTED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterOver) { - listener.enterOver(this); + if(listener.enterReadUncommitted) { + listener.enterReadUncommitted(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitOver) { - listener.exitOver(this); + if(listener.exitReadUncommitted) { + listener.exitReadUncommitted(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitOver) { - return visitor.visitOver(this); + if (visitor.visitReadUncommitted) { + return visitor.visitReadUncommitted(this); } else { return visitor.visitChildren(this); } } } - - -export class WindowFrameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public frameExtent(): FrameExtentContext { - return this.getRuleContext(0, FrameExtentContext)!; +export class SerializableContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_MEASURES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MEASURES, 0); + public KW_SERIALIZABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SERIALIZABLE, 0)!; } - public measureDefinition(): MeasureDefinitionContext[]; - public measureDefinition(i: number): MeasureDefinitionContext | null; - public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(MeasureDefinitionContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSerializable) { + listener.enterSerializable(this); } - - return this.getRuleContext(i, MeasureDefinitionContext); - } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AFTER, 0); } - public KW_MATCH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCH, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSerializable) { + listener.exitSerializable(this); + } } - public skipTo(): SkipToContext | null { - return this.getRuleContext(0, SkipToContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSerializable) { + return visitor.visitSerializable(this); + } else { + return visitor.visitChildren(this); + } } - public KW_PATTERN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PATTERN, 0); +} +export class ReadCommittedContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public rowPattern(): RowPatternContext | null { - return this.getRuleContext(0, RowPatternContext); + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; } - public KW_SUBSET(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SUBSET, 0); + public KW_COMMITTED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMITTED, 0)!; } - public subsetDefinition(): SubsetDefinitionContext[]; - public subsetDefinition(i: number): SubsetDefinitionContext | null; - public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(SubsetDefinitionContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterReadCommitted) { + listener.enterReadCommitted(this); } - - return this.getRuleContext(i, SubsetDefinitionContext); } - public KW_DEFINE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DEFINE, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitReadCommitted) { + listener.exitReadCommitted(this); + } } - public variableDefinition(): VariableDefinitionContext[]; - public variableDefinition(i: number): VariableDefinitionContext | null; - public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(VariableDefinitionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitReadCommitted) { + return visitor.visitReadCommitted(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, VariableDefinitionContext); } - public KW_INITIAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INITIAL, 0); +} +export class RepeatableReadContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SEEK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SEEK, 0); + public KW_REPEATABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_windowFrame; + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWindowFrame) { - listener.enterWindowFrame(this); + if(listener.enterRepeatableRead) { + listener.enterRepeatableRead(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWindowFrame) { - listener.exitWindowFrame(this); + if(listener.exitRepeatableRead) { + listener.exitRepeatableRead(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWindowFrame) { - return visitor.visitWindowFrame(this); + if (visitor.visitRepeatableRead) { + return visitor.visitRepeatableRead(this); } else { return visitor.visitChildren(this); } @@ -21748,53 +30618,67 @@ export class WindowFrameContext extends antlr.ParserRuleContext { } -export class FrameExtentContext extends antlr.ParserRuleContext { - public _frameType?: Token | null; - public _frameStart?: FrameBoundContext; - public _end?: FrameBoundContext; +export class CallArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_RANGE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RANGE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_callArgument; } - public frameBound(): FrameBoundContext[]; - public frameBound(i: number): FrameBoundContext | null; - public frameBound(i?: number): FrameBoundContext[] | FrameBoundContext | null { - if (i === undefined) { - return this.getRuleContexts(FrameBoundContext); + public override copyFrom(ctx: CallArgumentContext): void { + super.copyFrom(ctx); + } +} +export class PositionalArgumentContext extends CallArgumentContext { + public constructor(ctx: CallArgumentContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPositionalArgument) { + listener.enterPositionalArgument(this); } - - return this.getRuleContext(i, FrameBoundContext); } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROWS, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPositionalArgument) { + listener.exitPositionalArgument(this); + } } - public KW_GROUPS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GROUPS, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPositionalArgument) { + return visitor.visitPositionalArgument(this); + } else { + return visitor.visitChildren(this); + } } - public KW_BETWEEN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BETWEEN, 0); +} +export class NamedArgumentContext extends CallArgumentContext { + public constructor(ctx: CallArgumentContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_frameExtent; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterFrameExtent) { - listener.enterFrameExtent(this); + if(listener.enterNamedArgument) { + listener.enterNamedArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitFrameExtent) { - listener.exitFrameExtent(this); + if(listener.exitNamedArgument) { + listener.exitNamedArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitFrameExtent) { - return visitor.visitFrameExtent(this); + if (visitor.visitNamedArgument) { + return visitor.visitNamedArgument(this); } else { return visitor.visitChildren(this); } @@ -21802,107 +30686,106 @@ export class FrameExtentContext extends antlr.ParserRuleContext { } -export class FrameBoundContext extends antlr.ParserRuleContext { +export class PathElementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_frameBound; + return TrinoSqlParser.RULE_pathElement; } - public override copyFrom(ctx: FrameBoundContext): void { + public override copyFrom(ctx: PathElementContext): void { super.copyFrom(ctx); } } -export class BoundedFrameContext extends FrameBoundContext { - public _boundType?: Token | null; - public constructor(ctx: FrameBoundContext) { +export class QualifiedArgumentContext extends PathElementContext { + public constructor(ctx: PathElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public KW_PRECEDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); - } - public KW_FOLLOWING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBoundedFrame) { - listener.enterBoundedFrame(this); + if(listener.enterQualifiedArgument) { + listener.enterQualifiedArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBoundedFrame) { - listener.exitBoundedFrame(this); + if(listener.exitQualifiedArgument) { + listener.exitQualifiedArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBoundedFrame) { - return visitor.visitBoundedFrame(this); + if (visitor.visitQualifiedArgument) { + return visitor.visitQualifiedArgument(this); } else { return visitor.visitChildren(this); } } } -export class UnboundedFrameContext extends FrameBoundContext { - public _boundType?: Token | null; - public constructor(ctx: FrameBoundContext) { +export class UnqualifiedArgumentContext extends PathElementContext { + public constructor(ctx: PathElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_UNBOUNDED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UNBOUNDED, 0)!; - } - public KW_PRECEDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); - } - public KW_FOLLOWING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnboundedFrame) { - listener.enterUnboundedFrame(this); + if(listener.enterUnqualifiedArgument) { + listener.enterUnqualifiedArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnboundedFrame) { - listener.exitUnboundedFrame(this); + if(listener.exitUnqualifiedArgument) { + listener.exitUnqualifiedArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnboundedFrame) { - return visitor.visitUnboundedFrame(this); + if (visitor.visitUnqualifiedArgument) { + return visitor.visitUnqualifiedArgument(this); } else { return visitor.visitChildren(this); } } } -export class CurrentRowBoundContext extends FrameBoundContext { - public constructor(ctx: FrameBoundContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PathSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CURRENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT, 0)!; + public pathElement(): PathElementContext[]; + public pathElement(i: number): PathElementContext | null; + public pathElement(i?: number): PathElementContext[] | PathElementContext | null { + if (i === undefined) { + return this.getRuleContexts(PathElementContext); + } + + return this.getRuleContext(i, PathElementContext); } - public KW_ROW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROW, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_pathSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentRowBound) { - listener.enterCurrentRowBound(this); + if(listener.enterPathSpecification) { + listener.enterPathSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentRowBound) { - listener.exitCurrentRowBound(this); + if(listener.exitPathSpecification) { + listener.exitPathSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentRowBound) { - return visitor.visitCurrentRowBound(this); + if (visitor.visitPathSpecification) { + return visitor.visitPathSpecification(this); } else { return visitor.visitChildren(this); } @@ -21910,105 +30793,125 @@ export class CurrentRowBoundContext extends FrameBoundContext { } -export class RowPatternContext extends antlr.ParserRuleContext { +export class FunctionSpecificationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowPattern; + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0)!; } - public override copyFrom(ctx: RowPatternContext): void { - super.copyFrom(ctx); + public functionDeclaration(): FunctionDeclarationContext { + return this.getRuleContext(0, FunctionDeclarationContext)!; } -} -export class QuantifiedPrimaryContext extends RowPatternContext { - public constructor(ctx: RowPatternContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public returnsClause(): ReturnsClauseContext { + return this.getRuleContext(0, ReturnsClauseContext)!; } - public patternPrimary(): PatternPrimaryContext { - return this.getRuleContext(0, PatternPrimaryContext)!; + public controlStatement(): ControlStatementContext { + return this.getRuleContext(0, ControlStatementContext)!; + } + public routineCharacteristic(): RoutineCharacteristicContext[]; + public routineCharacteristic(i: number): RoutineCharacteristicContext | null; + public routineCharacteristic(i?: number): RoutineCharacteristicContext[] | RoutineCharacteristicContext | null { + if (i === undefined) { + return this.getRuleContexts(RoutineCharacteristicContext); + } + + return this.getRuleContext(i, RoutineCharacteristicContext); } - public patternQuantifier(): PatternQuantifierContext | null { - return this.getRuleContext(0, PatternQuantifierContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQuantifiedPrimary) { - listener.enterQuantifiedPrimary(this); + if(listener.enterFunctionSpecification) { + listener.enterFunctionSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQuantifiedPrimary) { - listener.exitQuantifiedPrimary(this); + if(listener.exitFunctionSpecification) { + listener.exitFunctionSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQuantifiedPrimary) { - return visitor.visitQuantifiedPrimary(this); + if (visitor.visitFunctionSpecification) { + return visitor.visitFunctionSpecification(this); } else { return visitor.visitChildren(this); } } } -export class PatternConcatenationContext extends RowPatternContext { - public constructor(ctx: RowPatternContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class FunctionDeclarationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public rowPattern(): RowPatternContext[]; - public rowPattern(i: number): RowPatternContext | null; - public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + public functionNameCreate(): FunctionNameCreateContext { + return this.getRuleContext(0, FunctionNameCreateContext)!; + } + public parameterDeclaration(): ParameterDeclarationContext[]; + public parameterDeclaration(i: number): ParameterDeclarationContext | null; + public parameterDeclaration(i?: number): ParameterDeclarationContext[] | ParameterDeclarationContext | null { if (i === undefined) { - return this.getRuleContexts(RowPatternContext); + return this.getRuleContexts(ParameterDeclarationContext); } - return this.getRuleContext(i, RowPatternContext); + return this.getRuleContext(i, ParameterDeclarationContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionDeclaration; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternConcatenation) { - listener.enterPatternConcatenation(this); + if(listener.enterFunctionDeclaration) { + listener.enterFunctionDeclaration(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternConcatenation) { - listener.exitPatternConcatenation(this); + if(listener.exitFunctionDeclaration) { + listener.exitFunctionDeclaration(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternConcatenation) { - return visitor.visitPatternConcatenation(this); + if (visitor.visitFunctionDeclaration) { + return visitor.visitFunctionDeclaration(this); } else { return visitor.visitChildren(this); } } } -export class PatternAlternationContext extends RowPatternContext { - public constructor(ctx: RowPatternContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class FunctionSignatureContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public rowPattern(): RowPatternContext[]; - public rowPattern(i: number): RowPatternContext | null; - public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; + } + public parameterDeclaration(): ParameterDeclarationContext[]; + public parameterDeclaration(i: number): ParameterDeclarationContext | null; + public parameterDeclaration(i?: number): ParameterDeclarationContext[] | ParameterDeclarationContext | null { if (i === undefined) { - return this.getRuleContexts(RowPatternContext); + return this.getRuleContexts(ParameterDeclarationContext); } - return this.getRuleContext(i, RowPatternContext); + return this.getRuleContext(i, ParameterDeclarationContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionSignature; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternAlternation) { - listener.enterPatternAlternation(this); + if(listener.enterFunctionSignature) { + listener.enterFunctionSignature(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternAlternation) { - listener.exitPatternAlternation(this); + if(listener.exitFunctionSignature) { + listener.exitFunctionSignature(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternAlternation) { - return visitor.visitPatternAlternation(this); + if (visitor.visitFunctionSignature) { + return visitor.visitFunctionSignature(this); } else { return visitor.visitChildren(this); } @@ -22016,194 +30919,273 @@ export class PatternAlternationContext extends RowPatternContext { } -export class PatternPrimaryContext extends antlr.ParserRuleContext { +export class ParameterDeclarationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_patternPrimary; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override copyFrom(ctx: PatternPrimaryContext): void { - super.copyFrom(ctx); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } -} -export class PatternPermutationContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_parameterDeclaration; } - public KW_PERMUTE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PERMUTE, 0)!; + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterParameterDeclaration) { + listener.enterParameterDeclaration(this); + } } - public rowPattern(): RowPatternContext[]; - public rowPattern(i: number): RowPatternContext | null; - public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { - if (i === undefined) { - return this.getRuleContexts(RowPatternContext); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitParameterDeclaration) { + listener.exitParameterDeclaration(this); } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitParameterDeclaration) { + return visitor.visitParameterDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } +} - return this.getRuleContext(i, RowPatternContext); + +export class ReturnsClauseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RETURNS, 0)!; + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_returnsClause; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternPermutation) { - listener.enterPatternPermutation(this); + if(listener.enterReturnsClause) { + listener.enterReturnsClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternPermutation) { - listener.exitPatternPermutation(this); + if(listener.exitReturnsClause) { + listener.exitReturnsClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternPermutation) { - return visitor.visitPatternPermutation(this); + if (visitor.visitReturnsClause) { + return visitor.visitReturnsClause(this); } else { return visitor.visitChildren(this); } } } -export class PartitionEndAnchorContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { + + +export class RoutineCharacteristicContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_routineCharacteristic; + } + public override copyFrom(ctx: RoutineCharacteristicContext): void { + super.copyFrom(ctx); + } +} +export class ReturnsNullOnNullInputCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RETURNS, 0)!; + } + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_NULL); + } else { + return this.getToken(TrinoSqlParser.KW_NULL, i); + } + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_INPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPartitionEndAnchor) { - listener.enterPartitionEndAnchor(this); + if(listener.enterReturnsNullOnNullInputCharacteristic) { + listener.enterReturnsNullOnNullInputCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPartitionEndAnchor) { - listener.exitPartitionEndAnchor(this); + if(listener.exitReturnsNullOnNullInputCharacteristic) { + listener.exitReturnsNullOnNullInputCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPartitionEndAnchor) { - return visitor.visitPartitionEndAnchor(this); + if (visitor.visitReturnsNullOnNullInputCharacteristic) { + return visitor.visitReturnsNullOnNullInputCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class PatternVariableContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class SecurityCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_SECURITY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SECURITY, 0)!; + } + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINER, 0); + } + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INVOKER, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternVariable) { - listener.enterPatternVariable(this); + if(listener.enterSecurityCharacteristic) { + listener.enterSecurityCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternVariable) { - listener.exitPatternVariable(this); + if(listener.exitSecurityCharacteristic) { + listener.exitSecurityCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternVariable) { - return visitor.visitPatternVariable(this); + if (visitor.visitSecurityCharacteristic) { + return visitor.visitSecurityCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class ExcludedPatternContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class CalledOnNullInputCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public rowPattern(): RowPatternContext { - return this.getRuleContext(0, RowPatternContext)!; + public KW_CALLED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CALLED, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + } + public KW_INPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExcludedPattern) { - listener.enterExcludedPattern(this); + if(listener.enterCalledOnNullInputCharacteristic) { + listener.enterCalledOnNullInputCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExcludedPattern) { - listener.exitExcludedPattern(this); + if(listener.exitCalledOnNullInputCharacteristic) { + listener.exitCalledOnNullInputCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExcludedPattern) { - return visitor.visitExcludedPattern(this); + if (visitor.visitCalledOnNullInputCharacteristic) { + return visitor.visitCalledOnNullInputCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class PartitionStartAnchorContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class CommentCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPartitionStartAnchor) { - listener.enterPartitionStartAnchor(this); + if(listener.enterCommentCharacteristic) { + listener.enterCommentCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPartitionStartAnchor) { - listener.exitPartitionStartAnchor(this); + if(listener.exitCommentCharacteristic) { + listener.exitCommentCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPartitionStartAnchor) { - return visitor.visitPartitionStartAnchor(this); + if (visitor.visitCommentCharacteristic) { + return visitor.visitCommentCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class EmptyPatternContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class LanguageCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_LANGUAGE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LANGUAGE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterEmptyPattern) { - listener.enterEmptyPattern(this); + if(listener.enterLanguageCharacteristic) { + listener.enterLanguageCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitEmptyPattern) { - listener.exitEmptyPattern(this); + if(listener.exitLanguageCharacteristic) { + listener.exitLanguageCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitEmptyPattern) { - return visitor.visitEmptyPattern(this); + if (visitor.visitLanguageCharacteristic) { + return visitor.visitLanguageCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class GroupedPatternContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class DeterministicCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public rowPattern(): RowPatternContext { - return this.getRuleContext(0, RowPatternContext)!; + public KW_DETERMINISTIC(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DETERMINISTIC, 0)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupedPattern) { - listener.enterGroupedPattern(this); + if(listener.enterDeterministicCharacteristic) { + listener.enterDeterministicCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupedPattern) { - listener.exitGroupedPattern(this); + if(listener.exitDeterministicCharacteristic) { + listener.exitDeterministicCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupedPattern) { - return visitor.visitGroupedPattern(this); + if (visitor.visitDeterministicCharacteristic) { + return visitor.visitDeterministicCharacteristic(this); } else { return visitor.visitChildren(this); } @@ -22211,154 +31193,170 @@ export class GroupedPatternContext extends PatternPrimaryContext { } -export class PatternQuantifierContext extends antlr.ParserRuleContext { +export class ControlStatementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_patternQuantifier; + return TrinoSqlParser.RULE_controlStatement; } - public override copyFrom(ctx: PatternQuantifierContext): void { + public override copyFrom(ctx: ControlStatementContext): void { super.copyFrom(ctx); } } -export class ZeroOrMoreQuantifierContext extends PatternQuantifierContext { - public _reluctant?: Token | null; - public constructor(ctx: PatternQuantifierContext) { +export class WhileStatementContext extends ControlStatementContext { + public _label?: IdentifierContext; + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public ASTERISK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.ASTERISK, 0)!; - } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterZeroOrMoreQuantifier) { - listener.enterZeroOrMoreQuantifier(this); - } + public KW_WHILE(): antlr.TerminalNode[]; + public KW_WHILE(i: number): antlr.TerminalNode | null; + public KW_WHILE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_WHILE); + } else { + return this.getToken(TrinoSqlParser.KW_WHILE, i); + } } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitZeroOrMoreQuantifier) { - listener.exitZeroOrMoreQuantifier(this); - } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitZeroOrMoreQuantifier) { - return visitor.visitZeroOrMoreQuantifier(this); - } else { - return visitor.visitChildren(this); - } + public KW_DO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DO, 0)!; } -} -export class OneOrMoreQuantifierContext extends PatternQuantifierContext { - public _reluctant?: Token | null; - public constructor(ctx: PatternQuantifierContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; } - public PLUS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.PLUS, 0)!; + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterOneOrMoreQuantifier) { - listener.enterOneOrMoreQuantifier(this); + if(listener.enterWhileStatement) { + listener.enterWhileStatement(this); } } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitOneOrMoreQuantifier) { - listener.exitOneOrMoreQuantifier(this); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitWhileStatement) { + listener.exitWhileStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitOneOrMoreQuantifier) { - return visitor.visitOneOrMoreQuantifier(this); + if (visitor.visitWhileStatement) { + return visitor.visitWhileStatement(this); } else { return visitor.visitChildren(this); } } } -export class ZeroOrOneQuantifierContext extends PatternQuantifierContext { - public _reluctant?: Token | null; - public constructor(ctx: PatternQuantifierContext) { +export class SimpleCaseStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public QUESTION_MARK(): antlr.TerminalNode[]; - public QUESTION_MARK(i: number): antlr.TerminalNode | null; - public QUESTION_MARK(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_CASE(): antlr.TerminalNode[]; + public KW_CASE(i: number): antlr.TerminalNode | null; + public KW_CASE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.QUESTION_MARK); + return this.getTokens(TrinoSqlParser.KW_CASE); } else { - return this.getToken(TrinoSqlParser.QUESTION_MARK, i); + return this.getToken(TrinoSqlParser.KW_CASE, i); } } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public caseStatementWhenClause(): CaseStatementWhenClauseContext[]; + public caseStatementWhenClause(i: number): CaseStatementWhenClauseContext | null; + public caseStatementWhenClause(i?: number): CaseStatementWhenClauseContext[] | CaseStatementWhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(CaseStatementWhenClauseContext); + } + + return this.getRuleContext(i, CaseStatementWhenClauseContext); + } + public elseClause(): ElseClauseContext | null { + return this.getRuleContext(0, ElseClauseContext); + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterZeroOrOneQuantifier) { - listener.enterZeroOrOneQuantifier(this); + if(listener.enterSimpleCaseStatement) { + listener.enterSimpleCaseStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitZeroOrOneQuantifier) { - listener.exitZeroOrOneQuantifier(this); + if(listener.exitSimpleCaseStatement) { + listener.exitSimpleCaseStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitZeroOrOneQuantifier) { - return visitor.visitZeroOrOneQuantifier(this); + if (visitor.visitSimpleCaseStatement) { + return visitor.visitSimpleCaseStatement(this); } else { return visitor.visitChildren(this); } } } -export class RangeQuantifierContext extends PatternQuantifierContext { - public _exactly?: Token | null; - public _reluctant?: Token | null; - public _atLeast?: Token | null; - public _atMost?: Token | null; - public constructor(ctx: PatternQuantifierContext) { +export class RepeatStatementContext extends ControlStatementContext { + public _label?: IdentifierContext; + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public INTEGER_VALUE(): antlr.TerminalNode[]; - public INTEGER_VALUE(i: number): antlr.TerminalNode | null; - public INTEGER_VALUE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_REPEAT(): antlr.TerminalNode[]; + public KW_REPEAT(i: number): antlr.TerminalNode | null; + public KW_REPEAT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.INTEGER_VALUE); + return this.getTokens(TrinoSqlParser.KW_REPEAT); } else { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, i); + return this.getToken(TrinoSqlParser.KW_REPEAT, i); } } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } + public KW_UNTIL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNTIL, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRangeQuantifier) { - listener.enterRangeQuantifier(this); + if(listener.enterRepeatStatement) { + listener.enterRepeatStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRangeQuantifier) { - listener.exitRangeQuantifier(this); + if(listener.exitRepeatStatement) { + listener.exitRepeatStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRangeQuantifier) { - return visitor.visitRangeQuantifier(this); + if (visitor.visitRepeatStatement) { + return visitor.visitRepeatStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class UpdateAssignmentContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class AssignmentStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; @@ -22369,314 +31367,301 @@ export class UpdateAssignmentContext extends antlr.ParserRuleContext { public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_updateAssignment; - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUpdateAssignment) { - listener.enterUpdateAssignment(this); + if(listener.enterAssignmentStatement) { + listener.enterAssignmentStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUpdateAssignment) { - listener.exitUpdateAssignment(this); + if(listener.exitAssignmentStatement) { + listener.exitAssignmentStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUpdateAssignment) { - return visitor.visitUpdateAssignment(this); + if (visitor.visitAssignmentStatement) { + return visitor.visitAssignmentStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class ExplainOptionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_explainOption; - } - public override copyFrom(ctx: ExplainOptionContext): void { - super.copyFrom(ctx); - } -} -export class ExplainFormatContext extends ExplainOptionContext { - public _value?: Token | null; - public constructor(ctx: ExplainOptionContext) { +export class LeaveStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_FORMAT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FORMAT, 0)!; - } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TEXT, 0); - } - public KW_GRAPHVIZ(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRAPHVIZ, 0); + public KW_LEAVE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LEAVE, 0)!; } - public KW_JSON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_JSON, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExplainFormat) { - listener.enterExplainFormat(this); + if(listener.enterLeaveStatement) { + listener.enterLeaveStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExplainFormat) { - listener.exitExplainFormat(this); + if(listener.exitLeaveStatement) { + listener.exitLeaveStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExplainFormat) { - return visitor.visitExplainFormat(this); + if (visitor.visitLeaveStatement) { + return visitor.visitLeaveStatement(this); } else { return visitor.visitChildren(this); } } } -export class ExplainTypeContext extends ExplainOptionContext { - public _value?: Token | null; - public constructor(ctx: ExplainOptionContext) { +export class CompoundStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TYPE, 0)!; + public KW_BEGIN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_BEGIN, 0)!; } - public KW_LOGICAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOGICAL, 0); + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; } - public KW_DISTRIBUTED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DISTRIBUTED, 0); + public variableDeclaration(): VariableDeclarationContext[]; + public variableDeclaration(i: number): VariableDeclarationContext | null; + public variableDeclaration(i?: number): VariableDeclarationContext[] | VariableDeclarationContext | null { + if (i === undefined) { + return this.getRuleContexts(VariableDeclarationContext); + } + + return this.getRuleContext(i, VariableDeclarationContext); } - public KW_VALIDATE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_VALIDATE, 0); + public SEMICOLON(): antlr.TerminalNode[]; + public SEMICOLON(i: number): antlr.TerminalNode | null; + public SEMICOLON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.SEMICOLON); + } else { + return this.getToken(TrinoSqlParser.SEMICOLON, i); + } } - public KW_IO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IO, 0); + public sqlStatementList(): SqlStatementListContext | null { + return this.getRuleContext(0, SqlStatementListContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExplainType) { - listener.enterExplainType(this); + if(listener.enterCompoundStatement) { + listener.enterCompoundStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExplainType) { - listener.exitExplainType(this); + if(listener.exitCompoundStatement) { + listener.exitCompoundStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExplainType) { - return visitor.visitExplainType(this); + if (visitor.visitCompoundStatement) { + return visitor.visitCompoundStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class TransactionModeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_transactionMode; - } - public override copyFrom(ctx: TransactionModeContext): void { - super.copyFrom(ctx); - } -} -export class TransactionAccessModeContext extends TransactionModeContext { - public _accessMode?: Token | null; - public constructor(ctx: TransactionModeContext) { +export class IterateStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; - } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ONLY, 0); + public KW_ITERATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ITERATE, 0)!; } - public KW_WRITE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WRITE, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTransactionAccessMode) { - listener.enterTransactionAccessMode(this); + if(listener.enterIterateStatement) { + listener.enterIterateStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTransactionAccessMode) { - listener.exitTransactionAccessMode(this); + if(listener.exitIterateStatement) { + listener.exitIterateStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTransactionAccessMode) { - return visitor.visitTransactionAccessMode(this); + if (visitor.visitIterateStatement) { + return visitor.visitIterateStatement(this); } else { return visitor.visitChildren(this); } } } -export class IsolationLevelContext extends TransactionModeContext { - public constructor(ctx: TransactionModeContext) { +export class LoopStatementContext extends ControlStatementContext { + public _label?: IdentifierContext; + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ISOLATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ISOLATION, 0)!; + public KW_LOOP(): antlr.TerminalNode[]; + public KW_LOOP(i: number): antlr.TerminalNode | null; + public KW_LOOP(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_LOOP); + } else { + return this.getToken(TrinoSqlParser.KW_LOOP, i); + } } - public KW_LEVEL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LEVEL, 0)!; + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; } - public levelOfIsolation(): LevelOfIsolationContext { - return this.getRuleContext(0, LevelOfIsolationContext)!; + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIsolationLevel) { - listener.enterIsolationLevel(this); + if(listener.enterLoopStatement) { + listener.enterLoopStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIsolationLevel) { - listener.exitIsolationLevel(this); + if(listener.exitLoopStatement) { + listener.exitLoopStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIsolationLevel) { - return visitor.visitIsolationLevel(this); + if (visitor.visitLoopStatement) { + return visitor.visitLoopStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class LevelOfIsolationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_levelOfIsolation; - } - public override copyFrom(ctx: LevelOfIsolationContext): void { - super.copyFrom(ctx); - } -} -export class ReadUncommittedContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { +export class ReturnStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; + public KW_RETURN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RETURN, 0)!; } - public KW_UNCOMMITTED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterReadUncommitted) { - listener.enterReadUncommitted(this); + if(listener.enterReturnStatement) { + listener.enterReturnStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitReadUncommitted) { - listener.exitReadUncommitted(this); + if(listener.exitReturnStatement) { + listener.exitReturnStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitReadUncommitted) { - return visitor.visitReadUncommitted(this); + if (visitor.visitReturnStatement) { + return visitor.visitReturnStatement(this); } else { return visitor.visitChildren(this); } } } -export class SerializableContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { +export class IfStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SERIALIZABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SERIALIZABLE, 0)!; + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSerializable) { - listener.enterSerializable(this); - } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSerializable) { - listener.exitSerializable(this); - } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSerializable) { - return visitor.visitSerializable(this); - } else { - return visitor.visitChildren(this); - } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; } -} -export class ReadCommittedContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; + public elseIfClause(): ElseIfClauseContext[]; + public elseIfClause(i: number): ElseIfClauseContext | null; + public elseIfClause(i?: number): ElseIfClauseContext[] | ElseIfClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(ElseIfClauseContext); + } + + return this.getRuleContext(i, ElseIfClauseContext); } - public KW_COMMITTED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMITTED, 0)!; + public elseClause(): ElseClauseContext | null { + return this.getRuleContext(0, ElseClauseContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterReadCommitted) { - listener.enterReadCommitted(this); + if(listener.enterIfStatement) { + listener.enterIfStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitReadCommitted) { - listener.exitReadCommitted(this); + if(listener.exitIfStatement) { + listener.exitIfStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitReadCommitted) { - return visitor.visitReadCommitted(this); + if (visitor.visitIfStatement) { + return visitor.visitIfStatement(this); } else { return visitor.visitChildren(this); } } } -export class RepeatableReadContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { +export class SearchedCaseStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_REPEATABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0)!; + public KW_CASE(): antlr.TerminalNode[]; + public KW_CASE(i: number): antlr.TerminalNode | null; + public KW_CASE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_CASE); + } else { + return this.getToken(TrinoSqlParser.KW_CASE, i); + } } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public caseStatementWhenClause(): CaseStatementWhenClauseContext[]; + public caseStatementWhenClause(i: number): CaseStatementWhenClauseContext | null; + public caseStatementWhenClause(i?: number): CaseStatementWhenClauseContext[] | CaseStatementWhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(CaseStatementWhenClauseContext); + } + + return this.getRuleContext(i, CaseStatementWhenClauseContext); + } + public elseClause(): ElseClauseContext | null { + return this.getRuleContext(0, ElseClauseContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRepeatableRead) { - listener.enterRepeatableRead(this); + if(listener.enterSearchedCaseStatement) { + listener.enterSearchedCaseStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRepeatableRead) { - listener.exitRepeatableRead(this); + if(listener.exitSearchedCaseStatement) { + listener.exitSearchedCaseStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRepeatableRead) { - return visitor.visitRepeatableRead(this); + if (visitor.visitSearchedCaseStatement) { + return visitor.visitSearchedCaseStatement(this); } else { return visitor.visitChildren(this); } @@ -22684,67 +31669,77 @@ export class RepeatableReadContext extends LevelOfIsolationContext { } -export class CallArgumentContext extends antlr.ParserRuleContext { +export class CaseStatementWhenClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_callArgument; - } - public override copyFrom(ctx: CallArgumentContext): void { - super.copyFrom(ctx); - } -} -export class PositionalArgumentContext extends CallArgumentContext { - public constructor(ctx: CallArgumentContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; + } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_caseStatementWhenClause; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPositionalArgument) { - listener.enterPositionalArgument(this); + if(listener.enterCaseStatementWhenClause) { + listener.enterCaseStatementWhenClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPositionalArgument) { - listener.exitPositionalArgument(this); + if(listener.exitCaseStatementWhenClause) { + listener.exitCaseStatementWhenClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPositionalArgument) { - return visitor.visitPositionalArgument(this); + if (visitor.visitCaseStatementWhenClause) { + return visitor.visitCaseStatementWhenClause(this); } else { return visitor.visitChildren(this); } } } -export class NamedArgumentContext extends CallArgumentContext { - public constructor(ctx: CallArgumentContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ElseIfClauseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_ELSEIF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ELSEIF, 0)!; } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; + } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_elseIfClause; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNamedArgument) { - listener.enterNamedArgument(this); + if(listener.enterElseIfClause) { + listener.enterElseIfClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNamedArgument) { - listener.exitNamedArgument(this); + if(listener.exitElseIfClause) { + listener.exitElseIfClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNamedArgument) { - return visitor.visitNamedArgument(this); + if (visitor.visitElseIfClause) { + return visitor.visitElseIfClause(this); } else { return visitor.visitChildren(this); } @@ -22752,21 +31747,45 @@ export class NamedArgumentContext extends CallArgumentContext { } -export class PathElementContext extends antlr.ParserRuleContext { +export class ElseClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_ELSE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ELSE, 0)!; + } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_pathElement; + return TrinoSqlParser.RULE_elseClause; } - public override copyFrom(ctx: PathElementContext): void { - super.copyFrom(ctx); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterElseClause) { + listener.enterElseClause(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitElseClause) { + listener.exitElseClause(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitElseClause) { + return visitor.visitElseClause(this); + } else { + return visitor.visitChildren(this); + } } } -export class QualifiedArgumentContext extends PathElementContext { - public constructor(ctx: PathElementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class VariableDeclarationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_DECLARE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DECLARE, 0)!; } public identifier(): IdentifierContext[]; public identifier(i: number): IdentifierContext | null; @@ -22777,45 +31796,31 @@ export class QualifiedArgumentContext extends PathElementContext { return this.getRuleContext(i, IdentifierContext); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQualifiedArgument) { - listener.enterQualifiedArgument(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQualifiedArgument) { - listener.exitQualifiedArgument(this); - } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQualifiedArgument) { - return visitor.visitQualifiedArgument(this); - } else { - return visitor.visitChildren(this); - } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } -} -export class UnqualifiedArgumentContext extends PathElementContext { - public constructor(ctx: PathElementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public valueExpression(): ValueExpressionContext | null { + return this.getRuleContext(0, ValueExpressionContext); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_variableDeclaration; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnqualifiedArgument) { - listener.enterUnqualifiedArgument(this); + if(listener.enterVariableDeclaration) { + listener.enterVariableDeclaration(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnqualifiedArgument) { - listener.exitUnqualifiedArgument(this); + if(listener.exitVariableDeclaration) { + listener.exitVariableDeclaration(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnqualifiedArgument) { - return visitor.visitUnqualifiedArgument(this); + if (visitor.visitVariableDeclaration) { + return visitor.visitVariableDeclaration(this); } else { return visitor.visitChildren(this); } @@ -22823,35 +31828,44 @@ export class UnqualifiedArgumentContext extends PathElementContext { } -export class PathSpecificationContext extends antlr.ParserRuleContext { +export class SqlStatementListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public pathElement(): PathElementContext[]; - public pathElement(i: number): PathElementContext | null; - public pathElement(i?: number): PathElementContext[] | PathElementContext | null { + public controlStatement(): ControlStatementContext[]; + public controlStatement(i: number): ControlStatementContext | null; + public controlStatement(i?: number): ControlStatementContext[] | ControlStatementContext | null { if (i === undefined) { - return this.getRuleContexts(PathElementContext); + return this.getRuleContexts(ControlStatementContext); } - return this.getRuleContext(i, PathElementContext); + return this.getRuleContext(i, ControlStatementContext); + } + public SEMICOLON(): antlr.TerminalNode[]; + public SEMICOLON(i: number): antlr.TerminalNode | null; + public SEMICOLON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.SEMICOLON); + } else { + return this.getToken(TrinoSqlParser.SEMICOLON, i); + } } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_pathSpecification; + return TrinoSqlParser.RULE_sqlStatementList; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPathSpecification) { - listener.enterPathSpecification(this); + if(listener.enterSqlStatementList) { + listener.enterSqlStatementList(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPathSpecification) { - listener.exitPathSpecification(this); + if(listener.exitSqlStatementList) { + listener.exitSqlStatementList(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPathSpecification) { - return visitor.visitPathSpecification(this); + if (visitor.visitSqlStatementList) { + return visitor.visitSqlStatementList(this); } else { return visitor.visitChildren(this); } @@ -22863,6 +31877,9 @@ export class PrivilegeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CREATE, 0); + } public KW_SELECT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_SELECT, 0); } @@ -22875,6 +31892,9 @@ export class PrivilegeContext extends antlr.ParserRuleContext { public KW_UPDATE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UPDATE, 0); } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } public override get ruleIndex(): number { return TrinoSqlParser.RULE_privilege; } @@ -22898,32 +31918,35 @@ export class PrivilegeContext extends antlr.ParserRuleContext { } -export class TableOrViewNameContext extends antlr.ParserRuleContext { +export class EntityKindContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TABLE, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } - public viewName(): ViewNameContext | null { - return this.getRuleContext(0, ViewNameContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableOrViewName; + return TrinoSqlParser.RULE_entityKind; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableOrViewName) { - listener.enterTableOrViewName(this); + if(listener.enterEntityKind) { + listener.enterEntityKind(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableOrViewName) { - listener.exitTableOrViewName(this); + if(listener.exitEntityKind) { + listener.exitEntityKind(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableOrViewName) { - return visitor.visitTableOrViewName(this); + if (visitor.visitEntityKind) { + return visitor.visitEntityKind(this); } else { return visitor.visitChildren(this); } @@ -22931,29 +31954,32 @@ export class TableOrViewNameContext extends antlr.ParserRuleContext { } -export class TableNameContext extends antlr.ParserRuleContext { +export class GrantObjectContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tablePath(): TablePathContext { - return this.getRuleContext(0, TablePathContext)!; + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public entityKind(): EntityKindContext | null { + return this.getRuleContext(0, EntityKindContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableName; + return TrinoSqlParser.RULE_grantObject; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableName) { - listener.enterTableName(this); + if(listener.enterGrantObject) { + listener.enterGrantObject(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableName) { - listener.exitTableName(this); + if(listener.exitGrantObject) { + listener.exitGrantObject(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableName) { - return visitor.visitTableName(this); + if (visitor.visitGrantObject) { + return visitor.visitGrantObject(this); } else { return visitor.visitChildren(this); } @@ -22961,29 +31987,32 @@ export class TableNameContext extends antlr.ParserRuleContext { } -export class TableNameCreateContext extends antlr.ParserRuleContext { +export class TableOrViewNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tablePath(): TablePathContext { - return this.getRuleContext(0, TablePathContext)!; + public tableRef(): TableRefContext | null { + return this.getRuleContext(0, TableRefContext); + } + public viewRef(): ViewRefContext | null { + return this.getRuleContext(0, ViewRefContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableNameCreate; + return TrinoSqlParser.RULE_tableOrViewName; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableNameCreate) { - listener.enterTableNameCreate(this); + if(listener.enterTableOrViewName) { + listener.enterTableOrViewName(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableNameCreate) { - listener.exitTableNameCreate(this); + if(listener.exitTableOrViewName) { + listener.exitTableOrViewName(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableNameCreate) { - return visitor.visitTableNameCreate(this); + if (visitor.visitTableOrViewName) { + return visitor.visitTableOrViewName(this); } else { return visitor.visitChildren(this); } @@ -22991,59 +32020,38 @@ export class TableNameCreateContext extends antlr.ParserRuleContext { } -export class ViewNameContext extends antlr.ParserRuleContext { +export class TableRefContext extends antlr.ParserRuleContext { + public _table?: IdentifierContext; + public _schema?: IdentifierContext; + public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public viewPath(): ViewPathContext { - return this.getRuleContext(0, ViewPathContext)!; - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_viewName; - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterViewName) { - listener.enterViewName(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitViewName) { - listener.exitViewName(this); - } - } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitViewName) { - return visitor.visitViewName(this); - } else { - return visitor.visitChildren(this); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); } - } -} - -export class ViewNameCreateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public viewPath(): ViewPathContext { - return this.getRuleContext(0, ViewPathContext)!; + return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_viewNameCreate; + return TrinoSqlParser.RULE_tableRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterViewNameCreate) { - listener.enterViewNameCreate(this); + if(listener.enterTableRef) { + listener.enterTableRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitViewNameCreate) { - listener.exitViewNameCreate(this); + if(listener.exitTableRef) { + listener.exitTableRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitViewNameCreate) { - return visitor.visitViewNameCreate(this); + if (visitor.visitTableRef) { + return visitor.visitTableRef(this); } else { return visitor.visitChildren(this); } @@ -23051,7 +32059,7 @@ export class ViewNameCreateContext extends antlr.ParserRuleContext { } -export class TablePathContext extends antlr.ParserRuleContext { +export class TableNameCreateContext extends antlr.ParserRuleContext { public _table?: IdentifierContext; public _schema?: IdentifierContext; public _catalog?: IdentifierContext; @@ -23068,21 +32076,21 @@ export class TablePathContext extends antlr.ParserRuleContext { return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tablePath; + return TrinoSqlParser.RULE_tableNameCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTablePath) { - listener.enterTablePath(this); + if(listener.enterTableNameCreate) { + listener.enterTableNameCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTablePath) { - listener.exitTablePath(this); + if(listener.exitTableNameCreate) { + listener.exitTableNameCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTablePath) { - return visitor.visitTablePath(this); + if (visitor.visitTableNameCreate) { + return visitor.visitTableNameCreate(this); } else { return visitor.visitChildren(this); } @@ -23090,7 +32098,7 @@ export class TablePathContext extends antlr.ParserRuleContext { } -export class ViewPathContext extends antlr.ParserRuleContext { +export class ViewRefContext extends antlr.ParserRuleContext { public _view?: IdentifierContext; public _schema?: IdentifierContext; public _catalog?: IdentifierContext; @@ -23107,21 +32115,21 @@ export class ViewPathContext extends antlr.ParserRuleContext { return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_viewPath; + return TrinoSqlParser.RULE_viewRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterViewPath) { - listener.enterViewPath(this); + if(listener.enterViewRef) { + listener.enterViewRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitViewPath) { - listener.exitViewPath(this); + if(listener.exitViewRef) { + listener.exitViewRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitViewPath) { - return visitor.visitViewPath(this); + if (visitor.visitViewRef) { + return visitor.visitViewRef(this); } else { return visitor.visitChildren(this); } @@ -23129,29 +32137,38 @@ export class ViewPathContext extends antlr.ParserRuleContext { } -export class SchemaNameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public schemaPath(): SchemaPathContext { - return this.getRuleContext(0, SchemaPathContext)!; +export class ViewNameCreateContext extends antlr.ParserRuleContext { + public _view?: IdentifierContext; + public _schema?: IdentifierContext; + public _catalog?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_schemaName; + return TrinoSqlParser.RULE_viewNameCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSchemaName) { - listener.enterSchemaName(this); + if(listener.enterViewNameCreate) { + listener.enterViewNameCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSchemaName) { - listener.exitSchemaName(this); + if(listener.exitViewNameCreate) { + listener.exitViewNameCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSchemaName) { - return visitor.visitSchemaName(this); + if (visitor.visitViewNameCreate) { + return visitor.visitViewNameCreate(this); } else { return visitor.visitChildren(this); } @@ -23159,29 +32176,37 @@ export class SchemaNameContext extends antlr.ParserRuleContext { } -export class SchemaNameCreateContext extends antlr.ParserRuleContext { +export class SchemaRefContext extends antlr.ParserRuleContext { + public _schema?: IdentifierContext; + public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public schemaPath(): SchemaPathContext { - return this.getRuleContext(0, SchemaPathContext)!; + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_schemaNameCreate; + return TrinoSqlParser.RULE_schemaRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSchemaNameCreate) { - listener.enterSchemaNameCreate(this); + if(listener.enterSchemaRef) { + listener.enterSchemaRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSchemaNameCreate) { - listener.exitSchemaNameCreate(this); + if(listener.exitSchemaRef) { + listener.exitSchemaRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSchemaNameCreate) { - return visitor.visitSchemaNameCreate(this); + if (visitor.visitSchemaRef) { + return visitor.visitSchemaRef(this); } else { return visitor.visitChildren(this); } @@ -23189,7 +32214,7 @@ export class SchemaNameCreateContext extends antlr.ParserRuleContext { } -export class SchemaPathContext extends antlr.ParserRuleContext { +export class SchemaNameCreateContext extends antlr.ParserRuleContext { public _schema?: IdentifierContext; public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -23205,21 +32230,21 @@ export class SchemaPathContext extends antlr.ParserRuleContext { return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_schemaPath; + return TrinoSqlParser.RULE_schemaNameCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSchemaPath) { - listener.enterSchemaPath(this); + if(listener.enterSchemaNameCreate) { + listener.enterSchemaNameCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSchemaPath) { - listener.exitSchemaPath(this); + if(listener.exitSchemaNameCreate) { + listener.exitSchemaNameCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSchemaPath) { - return visitor.visitSchemaPath(this); + if (visitor.visitSchemaNameCreate) { + return visitor.visitSchemaNameCreate(this); } else { return visitor.visitChildren(this); } @@ -23227,7 +32252,7 @@ export class SchemaPathContext extends antlr.ParserRuleContext { } -export class CatalogNameContext extends antlr.ParserRuleContext { +export class CatalogRefContext extends antlr.ParserRuleContext { public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -23236,21 +32261,21 @@ export class CatalogNameContext extends antlr.ParserRuleContext { return this.getRuleContext(0, IdentifierContext)!; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_catalogName; + return TrinoSqlParser.RULE_catalogRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCatalogName) { - listener.enterCatalogName(this); + if(listener.enterCatalogRef) { + listener.enterCatalogRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCatalogName) { - listener.exitCatalogName(this); + if(listener.exitCatalogRef) { + listener.exitCatalogRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCatalogName) { - return visitor.visitCatalogName(this); + if (visitor.visitCatalogRef) { + return visitor.visitCatalogRef(this); } else { return visitor.visitChildren(this); } @@ -23319,7 +32344,37 @@ export class FunctionNameContext extends antlr.ParserRuleContext { } -export class ColumnNameContext extends antlr.ParserRuleContext { +export class FunctionNameCreateContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionNameCreate; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterFunctionNameCreate) { + listener.enterFunctionNameCreate(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitFunctionNameCreate) { + listener.exitFunctionNameCreate(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitFunctionNameCreate) { + return visitor.visitFunctionNameCreate(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ColumnRefContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -23327,21 +32382,21 @@ export class ColumnNameContext extends antlr.ParserRuleContext { return this.getRuleContext(0, QualifiedNameContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnName; + return TrinoSqlParser.RULE_columnRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnName) { - listener.enterColumnName(this); + if(listener.enterColumnRef) { + listener.enterColumnRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnName) { - listener.exitColumnName(this); + if(listener.exitColumnRef) { + listener.exitColumnRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnName) { - return visitor.visitColumnName(this); + if (visitor.visitColumnRef) { + return visitor.visitColumnRef(this); } else { return visitor.visitChildren(this); } @@ -23415,6 +32470,82 @@ export class QualifiedNameContext extends antlr.ParserRuleContext { } +export class QueryPeriodContext extends antlr.ParserRuleContext { + public _end?: ValueExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + } + public rangeType(): RangeTypeContext { + return this.getRuleContext(0, RangeTypeContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public KW_OF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OF, 0)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryPeriod; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQueryPeriod) { + listener.enterQueryPeriod(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQueryPeriod) { + listener.exitQueryPeriod(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQueryPeriod) { + return visitor.visitQueryPeriod(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RangeTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TIMESTAMP, 0); + } + public KW_VERSION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VERSION, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rangeType; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRangeType) { + listener.enterRangeType(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRangeType) { + listener.exitRangeType(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRangeType) { + return visitor.visitRangeType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class GrantorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -23639,6 +32770,54 @@ export class RolesContext extends antlr.ParserRuleContext { } +export class PrivilegeOrRoleContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CREATE, 0); + } + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SELECT, 0); + } + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DELETE, 0); + } + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INSERT, 0); + } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UPDATE, 0); + } + public KW_EXECUTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_privilegeOrRole; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPrivilegeOrRole) { + listener.enterPrivilegeOrRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPrivilegeOrRole) { + listener.exitPrivilegeOrRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPrivilegeOrRole) { + return visitor.visitPrivilegeOrRole(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class IdentifierContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -23859,10 +33038,78 @@ export class IntegerLiteralContext extends NumberContext { } +export class AuthorizationUserContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_authorizationUser; + } + public override copyFrom(ctx: AuthorizationUserContext): void { + super.copyFrom(ctx); + } +} +export class StringUserContext extends AuthorizationUserContext { + public constructor(ctx: AuthorizationUserContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStringUser) { + listener.enterStringUser(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStringUser) { + listener.exitStringUser(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStringUser) { + return visitor.visitStringUser(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class IdentifierUserContext extends AuthorizationUserContext { + public constructor(ctx: AuthorizationUserContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterIdentifierUser) { + listener.enterIdentifierUser(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitIdentifierUser) { + listener.exitIdentifierUser(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitIdentifierUser) { + return visitor.visitIdentifierUser(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class NonReservedContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_ABSENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ABSENT, 0); + } public KW_ADD(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_ADD, 0); } @@ -23893,15 +33140,27 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_AUTHORIZATION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } + public KW_BEGIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BEGIN, 0); + } public KW_BERNOULLI(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_BERNOULLI, 0); } + public KW_BOTH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BOTH, 0); + } public KW_CALL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CALL, 0); } + public KW_CALLED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CALLED, 0); + } public KW_CASCADE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CASCADE, 0); } + public KW_CATALOG(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CATALOG, 0); + } public KW_CATALOGS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CATALOGS, 0); } @@ -23920,6 +33179,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_COMMITTED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_COMMITTED, 0); } + public KW_CONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CONDITIONAL, 0); + } + public KW_COPARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COPARTITION, 0); + } + public KW_COUNT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COUNT, 0); + } public KW_CURRENT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CURRENT, 0); } @@ -23932,6 +33200,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_DAY(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DAY, 0); } + public KW_DECLARE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DECLARE, 0); + } public KW_DEFAULT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } @@ -23941,18 +33212,39 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_DEFINER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DEFINER, 0); } + public KW_DENY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DENY, 0); + } public KW_DESC(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DESC, 0); } + public KW_DESCRIPTOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESCRIPTOR, 0); + } + public KW_DETERMINISTIC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DETERMINISTIC, 0); + } public KW_DISTRIBUTED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DISTRIBUTED, 0); } + public KW_DO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DO, 0); + } public KW_DOUBLE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); } + public KW_ELSEIF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ELSEIF, 0); + } public KW_EMPTY(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } + public KW_ENCODING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ENCODING, 0); + } + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); + } public KW_EXCLUDING(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_EXCLUDING, 0); } @@ -23977,9 +33269,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_FORMAT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_FORMAT, 0); } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0); + } public KW_FUNCTIONS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0); } + public KW_GRACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRACE, 0); + } public KW_GRANT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_GRANT, 0); } @@ -23989,9 +33287,6 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_GRANTS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_GRANTS, 0); } - public KW_DENY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DENY, 0); - } public KW_GRAPHVIZ(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_GRAPHVIZ, 0); } @@ -24007,6 +33302,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_IGNORE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_IGNORE, 0); } + public KW_IMMEDIATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IMMEDIATE, 0); + } public KW_INCLUDING(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_INCLUDING, 0); } @@ -24025,18 +33323,39 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_IO(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_IO, 0); } + public KW_ITERATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ITERATE, 0); + } public KW_ISOLATION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_ISOLATION, 0); } public KW_JSON(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_JSON, 0); } + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_KEY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEY, 0); + } + public KW_KEYS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEYS, 0); + } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LANGUAGE, 0); + } public KW_LAST(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LAST, 0); } public KW_LATERAL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LATERAL, 0); } + public KW_LEADING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEADING, 0); + } + public KW_LEAVE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEAVE, 0); + } public KW_LEVEL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LEVEL, 0); } @@ -24049,6 +33368,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_LOGICAL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LOGICAL, 0); } + public KW_LOOP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LOOP, 0); + } public KW_MAP(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_MAP, 0); } @@ -24079,6 +33401,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_MONTH(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_MONTH, 0); } + public KW_NESTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NESTED, 0); + } public KW_NEXT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_NEXT, 0); } @@ -24106,6 +33431,12 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_NULLS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_NULLS, 0); } + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OBJECT, 0); + } + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OF, 0); + } public KW_OFFSET(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_OFFSET, 0); } @@ -24130,12 +33461,18 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_OVER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_OVER, 0); } + public KW_OVERFLOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OVERFLOW, 0); + } public KW_PARTITION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PARTITION, 0); } public KW_PARTITIONS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PARTITIONS, 0); } + public KW_PASSING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PASSING, 0); + } public KW_PAST(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PAST, 0); } @@ -24148,9 +33485,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_PER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PER, 0); } + public KW_PERIOD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PERIOD, 0); + } public KW_PERMUTE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PERMUTE, 0); } + public KW_PLAN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PLAN, 0); + } public KW_POSITION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_POSITION, 0); } @@ -24166,6 +33509,12 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_PROPERTIES(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); } + public KW_PRUNE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRUNE, 0); + } + public KW_QUOTES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_QUOTES, 0); + } public KW_RANGE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RANGE, 0); } @@ -24178,6 +33527,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_RENAME(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_REPEAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPEAT, 0); + } public KW_REPEATABLE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0); } @@ -24193,6 +33545,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_RESTRICT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); } + public KW_RETURN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURN, 0); + } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); + } + public KW_RETURNS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNS, 0); + } public KW_REVOKE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_REVOKE, 0); } @@ -24214,6 +33575,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_RUNNING(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RUNNING, 0); } + public KW_SCALAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCALAR, 0); + } public KW_SCHEMA(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } @@ -24271,6 +33635,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_TEXT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TEXT, 0); } + public KW_TEXT_STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT_STRING, 0); + } public KW_TIES(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TIES, 0); } @@ -24283,6 +33650,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_TO(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TO, 0); } + public KW_TRAILING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRAILING, 0); + } public KW_TRANSACTION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0); } @@ -24301,9 +33671,21 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_UNCOMMITTED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0); } + public KW_UNCONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNCONDITIONAL, 0); + } + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNIQUE, 0); + } + public KW_UNKNOWN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNKNOWN, 0); + } public KW_UNMATCHED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UNMATCHED, 0); } + public KW_UNTIL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNTIL, 0); + } public KW_UPDATE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UPDATE, 0); } @@ -24313,24 +33695,48 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_USER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_USER, 0); } + public KW_UTF16(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF16, 0); + } + public KW_UTF32(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF32, 0); + } + public KW_UTF8(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF8, 0); + } public KW_VALIDATE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_VALIDATE, 0); } + public KW_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VALUE, 0); + } public KW_VERBOSE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_VERBOSE, 0); } + public KW_VERSION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VERSION, 0); + } public KW_VIEW(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public KW_WHILE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHILE, 0); + } public KW_WINDOW(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WINDOW, 0); } + public KW_WITHIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHIN, 0); + } public KW_WITHOUT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } public KW_WORK(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WORK, 0); } + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRAPPER, 0); + } public KW_WRITE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WRITE, 0); } diff --git a/src/lib/trino/TrinoSqlVisitor.ts b/src/lib/trino/TrinoSqlVisitor.ts index 72312cef..d7645f05 100644 --- a/src/lib/trino/TrinoSqlVisitor.ts +++ b/src/lib/trino/TrinoSqlVisitor.ts @@ -10,14 +10,16 @@ import { SQLParserBase } from '../SQLParserBase'; import { ProgramContext } from "./TrinoSqlParser.js"; import { StatementsContext } from "./TrinoSqlParser.js"; -import { StandaloneClauseContext } from "./TrinoSqlParser.js"; import { SingleStatementContext } from "./TrinoSqlParser.js"; import { StandaloneExpressionContext } from "./TrinoSqlParser.js"; import { StandalonePathSpecificationContext } from "./TrinoSqlParser.js"; import { StandaloneTypeContext } from "./TrinoSqlParser.js"; import { StandaloneRowPatternContext } from "./TrinoSqlParser.js"; +import { StandaloneFunctionSpecificationContext } from "./TrinoSqlParser.js"; import { StatementDefaultContext } from "./TrinoSqlParser.js"; import { UseContext } from "./TrinoSqlParser.js"; +import { CreateCatalogContext } from "./TrinoSqlParser.js"; +import { DropCatalogContext } from "./TrinoSqlParser.js"; import { CreateSchemaContext } from "./TrinoSqlParser.js"; import { DropSchemaContext } from "./TrinoSqlParser.js"; import { RenameSchemaContext } from "./TrinoSqlParser.js"; @@ -28,12 +30,15 @@ import { DropTableContext } from "./TrinoSqlParser.js"; import { InsertIntoContext } from "./TrinoSqlParser.js"; import { DeleteContext } from "./TrinoSqlParser.js"; import { TruncateTableContext } from "./TrinoSqlParser.js"; -import { RenameTableContext } from "./TrinoSqlParser.js"; import { CommentTableContext } from "./TrinoSqlParser.js"; +import { CommentViewContext } from "./TrinoSqlParser.js"; import { CommentColumnContext } from "./TrinoSqlParser.js"; +import { RenameTableContext } from "./TrinoSqlParser.js"; +import { AddColumnContext } from "./TrinoSqlParser.js"; import { RenameColumnContext } from "./TrinoSqlParser.js"; import { DropColumnContext } from "./TrinoSqlParser.js"; -import { AddColumnContext } from "./TrinoSqlParser.js"; +import { SetColumnTypeContext } from "./TrinoSqlParser.js"; +import { DropNotNullConstraintContext } from "./TrinoSqlParser.js"; import { SetTableAuthorizationContext } from "./TrinoSqlParser.js"; import { SetTablePropertiesContext } from "./TrinoSqlParser.js"; import { TableExecuteContext } from "./TrinoSqlParser.js"; @@ -48,20 +53,24 @@ import { DropViewContext } from "./TrinoSqlParser.js"; import { RenameViewContext } from "./TrinoSqlParser.js"; import { SetViewAuthorizationContext } from "./TrinoSqlParser.js"; import { CallContext } from "./TrinoSqlParser.js"; +import { CreateFunctionContext } from "./TrinoSqlParser.js"; +import { DropFunctionContext } from "./TrinoSqlParser.js"; import { CreateRoleContext } from "./TrinoSqlParser.js"; import { DropRoleContext } from "./TrinoSqlParser.js"; import { GrantRolesContext } from "./TrinoSqlParser.js"; +import { GrantPrivilegesContext } from "./TrinoSqlParser.js"; import { RevokeRolesContext } from "./TrinoSqlParser.js"; -import { SetRoleContext } from "./TrinoSqlParser.js"; -import { GrantContext } from "./TrinoSqlParser.js"; +import { RevokePrivilegesContext } from "./TrinoSqlParser.js"; import { DenyContext } from "./TrinoSqlParser.js"; -import { RevokeContext } from "./TrinoSqlParser.js"; +import { SetRoleContext } from "./TrinoSqlParser.js"; import { ShowGrantsContext } from "./TrinoSqlParser.js"; import { ExplainContext } from "./TrinoSqlParser.js"; +import { ExplainAnalyzeContext } from "./TrinoSqlParser.js"; import { ShowCreateTableContext } from "./TrinoSqlParser.js"; import { ShowCreateSchemaContext } from "./TrinoSqlParser.js"; import { ShowCreateViewContext } from "./TrinoSqlParser.js"; import { ShowCreateMaterializedViewContext } from "./TrinoSqlParser.js"; +import { ShowCreateFunctionContext } from "./TrinoSqlParser.js"; import { ShowTablesContext } from "./TrinoSqlParser.js"; import { ShowSchemasContext } from "./TrinoSqlParser.js"; import { ShowCatalogsContext } from "./TrinoSqlParser.js"; @@ -72,6 +81,8 @@ import { ShowRolesContext } from "./TrinoSqlParser.js"; import { ShowRoleGrantsContext } from "./TrinoSqlParser.js"; import { ShowFunctionsContext } from "./TrinoSqlParser.js"; import { ShowSessionContext } from "./TrinoSqlParser.js"; +import { SetSessionAuthorizationContext } from "./TrinoSqlParser.js"; +import { ResetSessionAuthorizationContext } from "./TrinoSqlParser.js"; import { SetSessionContext } from "./TrinoSqlParser.js"; import { ResetSessionContext } from "./TrinoSqlParser.js"; import { StartTransactionContext } from "./TrinoSqlParser.js"; @@ -80,6 +91,7 @@ import { RollbackContext } from "./TrinoSqlParser.js"; import { PrepareContext } from "./TrinoSqlParser.js"; import { DeallocateContext } from "./TrinoSqlParser.js"; import { ExecuteContext } from "./TrinoSqlParser.js"; +import { ExecuteImmediateContext } from "./TrinoSqlParser.js"; import { DescribeInputContext } from "./TrinoSqlParser.js"; import { DescribeOutputContext } from "./TrinoSqlParser.js"; import { SetPathContext } from "./TrinoSqlParser.js"; @@ -88,6 +100,8 @@ import { UpdateContext } from "./TrinoSqlParser.js"; import { MergeContext } from "./TrinoSqlParser.js"; import { ShowTableCommentContext } from "./TrinoSqlParser.js"; import { ShowColumnCommentContext } from "./TrinoSqlParser.js"; +import { RootQueryContext } from "./TrinoSqlParser.js"; +import { WithFunctionContext } from "./TrinoSqlParser.js"; import { QueryStatementContext } from "./TrinoSqlParser.js"; import { WithContext } from "./TrinoSqlParser.js"; import { TableElementContext } from "./TrinoSqlParser.js"; @@ -128,6 +142,9 @@ import { JoinTypeContext } from "./TrinoSqlParser.js"; import { JoinCriteriaContext } from "./TrinoSqlParser.js"; import { SampledRelationContext } from "./TrinoSqlParser.js"; import { SampleTypeContext } from "./TrinoSqlParser.js"; +import { TrimsSpecificationContext } from "./TrinoSqlParser.js"; +import { ListAggOverflowBehaviorContext } from "./TrinoSqlParser.js"; +import { ListaggCountIndicationContext } from "./TrinoSqlParser.js"; import { PatternRecognitionContext } from "./TrinoSqlParser.js"; import { MeasureDefinitionContext } from "./TrinoSqlParser.js"; import { RowsPerMatchContext } from "./TrinoSqlParser.js"; @@ -139,15 +156,37 @@ import { AliasedRelationContext } from "./TrinoSqlParser.js"; import { ColumnListCreateContext } from "./TrinoSqlParser.js"; import { ColumnListContext } from "./TrinoSqlParser.js"; import { ColumnAliasesContext } from "./TrinoSqlParser.js"; -import { TableOrViewRelationContext } from "./TrinoSqlParser.js"; +import { TableNameContext } from "./TrinoSqlParser.js"; import { SubqueryRelationContext } from "./TrinoSqlParser.js"; import { UnnestContext } from "./TrinoSqlParser.js"; import { LateralContext } from "./TrinoSqlParser.js"; +import { TableFunctionInvocationContext } from "./TrinoSqlParser.js"; import { ParenthesizedRelationContext } from "./TrinoSqlParser.js"; +import { JsonTableContext } from "./TrinoSqlParser.js"; +import { OrdinalityColumnContext } from "./TrinoSqlParser.js"; +import { ValueColumnContext } from "./TrinoSqlParser.js"; +import { QueryColumnContext } from "./TrinoSqlParser.js"; +import { NestedColumnsContext } from "./TrinoSqlParser.js"; +import { LeafPlanContext } from "./TrinoSqlParser.js"; +import { JoinPlanContext } from "./TrinoSqlParser.js"; +import { UnionPlanContext } from "./TrinoSqlParser.js"; +import { CrossPlanContext } from "./TrinoSqlParser.js"; +import { JsonTablePathNameContext } from "./TrinoSqlParser.js"; +import { PlanPrimaryContext } from "./TrinoSqlParser.js"; +import { JsonTableDefaultPlanContext } from "./TrinoSqlParser.js"; +import { TableFunctionCallContext } from "./TrinoSqlParser.js"; +import { TableFunctionArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentTableContext } from "./TrinoSqlParser.js"; +import { TableArgumentQueryContext } from "./TrinoSqlParser.js"; +import { DescriptorArgumentContext } from "./TrinoSqlParser.js"; +import { DescriptorFieldContext } from "./TrinoSqlParser.js"; +import { CopartitionTablesContext } from "./TrinoSqlParser.js"; import { ExpressionContext } from "./TrinoSqlParser.js"; import { LogicalNotContext } from "./TrinoSqlParser.js"; import { PredicatedContext } from "./TrinoSqlParser.js"; -import { LogicalBinaryContext } from "./TrinoSqlParser.js"; +import { OrContext } from "./TrinoSqlParser.js"; +import { AndContext } from "./TrinoSqlParser.js"; import { ComparisonContext } from "./TrinoSqlParser.js"; import { QuantifiedComparisonContext } from "./TrinoSqlParser.js"; import { BetweenContext } from "./TrinoSqlParser.js"; @@ -163,36 +202,56 @@ import { ArithmeticUnaryContext } from "./TrinoSqlParser.js"; import { AtTimeZoneContext } from "./TrinoSqlParser.js"; import { DereferenceContext } from "./TrinoSqlParser.js"; import { TypeConstructorContext } from "./TrinoSqlParser.js"; -import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser.js"; +import { JsonValueContext } from "./TrinoSqlParser.js"; +import { CurrentDateContext } from "./TrinoSqlParser.js"; import { SubstringContext } from "./TrinoSqlParser.js"; import { CastContext } from "./TrinoSqlParser.js"; import { LambdaContext } from "./TrinoSqlParser.js"; import { ParenthesizedExpressionContext } from "./TrinoSqlParser.js"; +import { TrimContext } from "./TrinoSqlParser.js"; import { ParameterContext } from "./TrinoSqlParser.js"; import { NormalizeContext } from "./TrinoSqlParser.js"; +import { LocalTimestampContext } from "./TrinoSqlParser.js"; +import { JsonObjectContext } from "./TrinoSqlParser.js"; import { IntervalLiteralContext } from "./TrinoSqlParser.js"; import { NumericLiteralContext } from "./TrinoSqlParser.js"; import { BooleanLiteralContext } from "./TrinoSqlParser.js"; +import { JsonArrayContext } from "./TrinoSqlParser.js"; import { SimpleCaseContext } from "./TrinoSqlParser.js"; import { ColumnReferenceContext } from "./TrinoSqlParser.js"; import { NullLiteralContext } from "./TrinoSqlParser.js"; import { RowConstructorContext } from "./TrinoSqlParser.js"; import { SubscriptContext } from "./TrinoSqlParser.js"; +import { JsonExistsContext } from "./TrinoSqlParser.js"; import { CurrentPathContext } from "./TrinoSqlParser.js"; import { SubqueryExpressionContext } from "./TrinoSqlParser.js"; import { BinaryLiteralContext } from "./TrinoSqlParser.js"; +import { CurrentTimeContext } from "./TrinoSqlParser.js"; +import { LocalTimeContext } from "./TrinoSqlParser.js"; import { CurrentUserContext } from "./TrinoSqlParser.js"; +import { JsonQueryContext } from "./TrinoSqlParser.js"; import { MeasureContext } from "./TrinoSqlParser.js"; import { ExtractContext } from "./TrinoSqlParser.js"; import { StringLiteralContext } from "./TrinoSqlParser.js"; import { ArrayConstructorContext } from "./TrinoSqlParser.js"; import { FunctionCallContext } from "./TrinoSqlParser.js"; +import { CurrentTimestampContext } from "./TrinoSqlParser.js"; import { CurrentSchemaContext } from "./TrinoSqlParser.js"; import { ExistsContext } from "./TrinoSqlParser.js"; import { PositionContext } from "./TrinoSqlParser.js"; +import { ListaggContext } from "./TrinoSqlParser.js"; import { SearchedCaseContext } from "./TrinoSqlParser.js"; import { CurrentCatalogContext } from "./TrinoSqlParser.js"; import { GroupingOperationContext } from "./TrinoSqlParser.js"; +import { JsonPathInvocationContext } from "./TrinoSqlParser.js"; +import { JsonValueExpressionContext } from "./TrinoSqlParser.js"; +import { JsonRepresentationContext } from "./TrinoSqlParser.js"; +import { JsonArgumentContext } from "./TrinoSqlParser.js"; +import { JsonExistsErrorBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonValueBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryWrapperBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonObjectMemberContext } from "./TrinoSqlParser.js"; import { ProcessingModeContext } from "./TrinoSqlParser.js"; import { NullTreatmentContext } from "./TrinoSqlParser.js"; import { BasicStringLiteralContext } from "./TrinoSqlParser.js"; @@ -254,23 +313,52 @@ import { NamedArgumentContext } from "./TrinoSqlParser.js"; import { QualifiedArgumentContext } from "./TrinoSqlParser.js"; import { UnqualifiedArgumentContext } from "./TrinoSqlParser.js"; import { PathSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionDeclarationContext } from "./TrinoSqlParser.js"; +import { FunctionSignatureContext } from "./TrinoSqlParser.js"; +import { ParameterDeclarationContext } from "./TrinoSqlParser.js"; +import { ReturnsClauseContext } from "./TrinoSqlParser.js"; +import { LanguageCharacteristicContext } from "./TrinoSqlParser.js"; +import { DeterministicCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnsNullOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { CalledOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { SecurityCharacteristicContext } from "./TrinoSqlParser.js"; +import { CommentCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnStatementContext } from "./TrinoSqlParser.js"; +import { AssignmentStatementContext } from "./TrinoSqlParser.js"; +import { SimpleCaseStatementContext } from "./TrinoSqlParser.js"; +import { SearchedCaseStatementContext } from "./TrinoSqlParser.js"; +import { IfStatementContext } from "./TrinoSqlParser.js"; +import { IterateStatementContext } from "./TrinoSqlParser.js"; +import { LeaveStatementContext } from "./TrinoSqlParser.js"; +import { CompoundStatementContext } from "./TrinoSqlParser.js"; +import { LoopStatementContext } from "./TrinoSqlParser.js"; +import { WhileStatementContext } from "./TrinoSqlParser.js"; +import { RepeatStatementContext } from "./TrinoSqlParser.js"; +import { CaseStatementWhenClauseContext } from "./TrinoSqlParser.js"; +import { ElseIfClauseContext } from "./TrinoSqlParser.js"; +import { ElseClauseContext } from "./TrinoSqlParser.js"; +import { VariableDeclarationContext } from "./TrinoSqlParser.js"; +import { SqlStatementListContext } from "./TrinoSqlParser.js"; import { PrivilegeContext } from "./TrinoSqlParser.js"; +import { EntityKindContext } from "./TrinoSqlParser.js"; +import { GrantObjectContext } from "./TrinoSqlParser.js"; import { TableOrViewNameContext } from "./TrinoSqlParser.js"; -import { TableNameContext } from "./TrinoSqlParser.js"; +import { TableRefContext } from "./TrinoSqlParser.js"; import { TableNameCreateContext } from "./TrinoSqlParser.js"; -import { ViewNameContext } from "./TrinoSqlParser.js"; +import { ViewRefContext } from "./TrinoSqlParser.js"; import { ViewNameCreateContext } from "./TrinoSqlParser.js"; -import { TablePathContext } from "./TrinoSqlParser.js"; -import { ViewPathContext } from "./TrinoSqlParser.js"; -import { SchemaNameContext } from "./TrinoSqlParser.js"; +import { SchemaRefContext } from "./TrinoSqlParser.js"; import { SchemaNameCreateContext } from "./TrinoSqlParser.js"; -import { SchemaPathContext } from "./TrinoSqlParser.js"; -import { CatalogNameContext } from "./TrinoSqlParser.js"; +import { CatalogRefContext } from "./TrinoSqlParser.js"; import { CatalogNameCreateContext } from "./TrinoSqlParser.js"; import { FunctionNameContext } from "./TrinoSqlParser.js"; -import { ColumnNameContext } from "./TrinoSqlParser.js"; +import { FunctionNameCreateContext } from "./TrinoSqlParser.js"; +import { ColumnRefContext } from "./TrinoSqlParser.js"; import { ColumnNameCreateContext } from "./TrinoSqlParser.js"; import { QualifiedNameContext } from "./TrinoSqlParser.js"; +import { QueryPeriodContext } from "./TrinoSqlParser.js"; +import { RangeTypeContext } from "./TrinoSqlParser.js"; import { SpecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { CurrentUserGrantorContext } from "./TrinoSqlParser.js"; import { CurrentRoleGrantorContext } from "./TrinoSqlParser.js"; @@ -278,6 +366,7 @@ import { UnspecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { UserPrincipalContext } from "./TrinoSqlParser.js"; import { RolePrincipalContext } from "./TrinoSqlParser.js"; import { RolesContext } from "./TrinoSqlParser.js"; +import { PrivilegeOrRoleContext } from "./TrinoSqlParser.js"; import { UnquotedIdentifierContext } from "./TrinoSqlParser.js"; import { QuotedIdentifierContext } from "./TrinoSqlParser.js"; import { BackQuotedIdentifierContext } from "./TrinoSqlParser.js"; @@ -285,6 +374,8 @@ import { DigitIdentifierContext } from "./TrinoSqlParser.js"; import { DecimalLiteralContext } from "./TrinoSqlParser.js"; import { DoubleLiteralContext } from "./TrinoSqlParser.js"; import { IntegerLiteralContext } from "./TrinoSqlParser.js"; +import { IdentifierUserContext } from "./TrinoSqlParser.js"; +import { StringUserContext } from "./TrinoSqlParser.js"; import { NonReservedContext } from "./TrinoSqlParser.js"; @@ -308,12 +399,6 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitStatements?: (ctx: StatementsContext) => Result; - /** - * Visit a parse tree produced by `TrinoSqlParser.standaloneClause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStandaloneClause?: (ctx: StandaloneClauseContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.singleStatement`. * @param ctx the parse tree @@ -344,6 +429,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitStandaloneRowPattern?: (ctx: StandaloneRowPatternContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.standaloneFunctionSpecification`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStandaloneFunctionSpecification?: (ctx: StandaloneFunctionSpecificationContext) => Result; /** * Visit a parse tree produced by the `statementDefault` * labeled alternative in `TrinoSqlParser.statement`. @@ -358,6 +449,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitUse?: (ctx: UseContext) => Result; + /** + * Visit a parse tree produced by the `createCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateCatalog?: (ctx: CreateCatalogContext) => Result; + /** + * Visit a parse tree produced by the `dropCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropCatalog?: (ctx: DropCatalogContext) => Result; /** * Visit a parse tree produced by the `createSchema` * labeled alternative in `TrinoSqlParser.statement`. @@ -429,19 +534,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitTruncateTable?: (ctx: TruncateTableContext) => Result; /** - * Visit a parse tree produced by the `renameTable` + * Visit a parse tree produced by the `commentTable` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitRenameTable?: (ctx: RenameTableContext) => Result; + visitCommentTable?: (ctx: CommentTableContext) => Result; /** - * Visit a parse tree produced by the `commentTable` + * Visit a parse tree produced by the `commentView` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitCommentTable?: (ctx: CommentTableContext) => Result; + visitCommentView?: (ctx: CommentViewContext) => Result; /** * Visit a parse tree produced by the `commentColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -449,6 +554,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitCommentColumn?: (ctx: CommentColumnContext) => Result; + /** + * Visit a parse tree produced by the `renameTable` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRenameTable?: (ctx: RenameTableContext) => Result; + /** + * Visit a parse tree produced by the `addColumn` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAddColumn?: (ctx: AddColumnContext) => Result; /** * Visit a parse tree produced by the `renameColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -464,12 +583,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitDropColumn?: (ctx: DropColumnContext) => Result; /** - * Visit a parse tree produced by the `addColumn` + * Visit a parse tree produced by the `setColumnType` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitAddColumn?: (ctx: AddColumnContext) => Result; + visitSetColumnType?: (ctx: SetColumnTypeContext) => Result; + /** + * Visit a parse tree produced by the `dropNotNullConstraint` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropNotNullConstraint?: (ctx: DropNotNullConstraintContext) => Result; /** * Visit a parse tree produced by the `setTableAuthorization` * labeled alternative in `TrinoSqlParser.statement`. @@ -568,6 +694,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitCall?: (ctx: CallContext) => Result; + /** + * Visit a parse tree produced by the `createFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateFunction?: (ctx: CreateFunctionContext) => Result; + /** + * Visit a parse tree produced by the `dropFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropFunction?: (ctx: DropFunctionContext) => Result; /** * Visit a parse tree produced by the `createRole` * labeled alternative in `TrinoSqlParser.statement`. @@ -590,26 +730,26 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitGrantRoles?: (ctx: GrantRolesContext) => Result; /** - * Visit a parse tree produced by the `revokeRoles` + * Visit a parse tree produced by the `grantPrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitRevokeRoles?: (ctx: RevokeRolesContext) => Result; + visitGrantPrivileges?: (ctx: GrantPrivilegesContext) => Result; /** - * Visit a parse tree produced by the `setRole` + * Visit a parse tree produced by the `revokeRoles` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitSetRole?: (ctx: SetRoleContext) => Result; + visitRevokeRoles?: (ctx: RevokeRolesContext) => Result; /** - * Visit a parse tree produced by the `grant` + * Visit a parse tree produced by the `revokePrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitGrant?: (ctx: GrantContext) => Result; + visitRevokePrivileges?: (ctx: RevokePrivilegesContext) => Result; /** * Visit a parse tree produced by the `deny` * labeled alternative in `TrinoSqlParser.statement`. @@ -618,12 +758,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitDeny?: (ctx: DenyContext) => Result; /** - * Visit a parse tree produced by the `revoke` + * Visit a parse tree produced by the `setRole` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitRevoke?: (ctx: RevokeContext) => Result; + visitSetRole?: (ctx: SetRoleContext) => Result; /** * Visit a parse tree produced by the `showGrants` * labeled alternative in `TrinoSqlParser.statement`. @@ -638,6 +778,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitExplain?: (ctx: ExplainContext) => Result; + /** + * Visit a parse tree produced by the `explainAnalyze` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExplainAnalyze?: (ctx: ExplainAnalyzeContext) => Result; /** * Visit a parse tree produced by the `showCreateTable` * labeled alternative in `TrinoSqlParser.statement`. @@ -666,6 +813,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitShowCreateMaterializedView?: (ctx: ShowCreateMaterializedViewContext) => Result; + /** + * Visit a parse tree produced by the `showCreateFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitShowCreateFunction?: (ctx: ShowCreateFunctionContext) => Result; /** * Visit a parse tree produced by the `showTables` * labeled alternative in `TrinoSqlParser.statement`. @@ -736,6 +890,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitShowSession?: (ctx: ShowSessionContext) => Result; + /** + * Visit a parse tree produced by the `setSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSetSessionAuthorization?: (ctx: SetSessionAuthorizationContext) => Result; + /** + * Visit a parse tree produced by the `resetSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitResetSessionAuthorization?: (ctx: ResetSessionAuthorizationContext) => Result; /** * Visit a parse tree produced by the `setSession` * labeled alternative in `TrinoSqlParser.statement`. @@ -792,6 +960,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitExecute?: (ctx: ExecuteContext) => Result; + /** + * Visit a parse tree produced by the `executeImmediate` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExecuteImmediate?: (ctx: ExecuteImmediateContext) => Result; /** * Visit a parse tree produced by the `describeInput` * labeled alternative in `TrinoSqlParser.statement`. @@ -848,6 +1023,18 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitShowColumnComment?: (ctx: ShowColumnCommentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.rootQuery`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRootQuery?: (ctx: RootQueryContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.withFunction`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWithFunction?: (ctx: WithFunctionContext) => Result; /** * Visit a parse tree produced by the `queryStatement` * labeled alternative in `TrinoSqlParser.query`. @@ -1105,6 +1292,24 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitSampleType?: (ctx: SampleTypeContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.trimsSpecification`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTrimsSpecification?: (ctx: TrimsSpecificationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.listAggOverflowBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitListAggOverflowBehavior?: (ctx: ListAggOverflowBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.listaggCountIndication`. + * @param ctx the parse tree + * @return the visitor result + */ + visitListaggCountIndication?: (ctx: ListaggCountIndicationContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.patternRecognition`. * @param ctx the parse tree @@ -1172,12 +1377,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitColumnAliases?: (ctx: ColumnAliasesContext) => Result; /** - * Visit a parse tree produced by the `tableOrViewRelation` + * Visit a parse tree produced by the `tableName` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree * @return the visitor result */ - visitTableOrViewRelation?: (ctx: TableOrViewRelationContext) => Result; + visitTableName?: (ctx: TableNameContext) => Result; /** * Visit a parse tree produced by the `subqueryRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1199,6 +1404,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitLateral?: (ctx: LateralContext) => Result; + /** + * Visit a parse tree produced by the `tableFunctionInvocation` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableFunctionInvocation?: (ctx: TableFunctionInvocationContext) => Result; /** * Visit a parse tree produced by the `parenthesizedRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1206,6 +1418,137 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitParenthesizedRelation?: (ctx: ParenthesizedRelationContext) => Result; + /** + * Visit a parse tree produced by the `jsonTable` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonTable?: (ctx: JsonTableContext) => Result; + /** + * Visit a parse tree produced by the `ordinalityColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitOrdinalityColumn?: (ctx: OrdinalityColumnContext) => Result; + /** + * Visit a parse tree produced by the `valueColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitValueColumn?: (ctx: ValueColumnContext) => Result; + /** + * Visit a parse tree produced by the `queryColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQueryColumn?: (ctx: QueryColumnContext) => Result; + /** + * Visit a parse tree produced by the `nestedColumns` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNestedColumns?: (ctx: NestedColumnsContext) => Result; + /** + * Visit a parse tree produced by the `leafPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLeafPlan?: (ctx: LeafPlanContext) => Result; + /** + * Visit a parse tree produced by the `joinPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJoinPlan?: (ctx: JoinPlanContext) => Result; + /** + * Visit a parse tree produced by the `unionPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnionPlan?: (ctx: UnionPlanContext) => Result; + /** + * Visit a parse tree produced by the `crossPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCrossPlan?: (ctx: CrossPlanContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonTablePathName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonTablePathName?: (ctx: JsonTablePathNameContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.planPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPlanPrimary?: (ctx: PlanPrimaryContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonTableDefaultPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonTableDefaultPlan?: (ctx: JsonTableDefaultPlanContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableFunctionCall`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableFunctionCall?: (ctx: TableFunctionCallContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableFunctionArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableFunctionArgument?: (ctx: TableFunctionArgumentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableArgument?: (ctx: TableArgumentContext) => Result; + /** + * Visit a parse tree produced by the `tableArgumentTable` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableArgumentTable?: (ctx: TableArgumentTableContext) => Result; + /** + * Visit a parse tree produced by the `tableArgumentQuery` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableArgumentQuery?: (ctx: TableArgumentQueryContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.descriptorArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDescriptorArgument?: (ctx: DescriptorArgumentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.descriptorField`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDescriptorField?: (ctx: DescriptorFieldContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.copartitionTables`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCopartitionTables?: (ctx: CopartitionTablesContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.expression`. * @param ctx the parse tree @@ -1227,12 +1570,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitPredicated?: (ctx: PredicatedContext) => Result; /** - * Visit a parse tree produced by the `logicalBinary` + * Visit a parse tree produced by the `or` * labeled alternative in `TrinoSqlParser.booleanExpression`. * @param ctx the parse tree * @return the visitor result */ - visitLogicalBinary?: (ctx: LogicalBinaryContext) => Result; + visitOr?: (ctx: OrContext) => Result; + /** + * Visit a parse tree produced by the `and` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAnd?: (ctx: AndContext) => Result; /** * Visit a parse tree produced by the `comparison` * labeled alternative in `TrinoSqlParser.predicate`. @@ -1339,12 +1689,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitTypeConstructor?: (ctx: TypeConstructorContext) => Result; /** - * Visit a parse tree produced by the `specialDateTimeFunction` + * Visit a parse tree produced by the `jsonValue` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonValue?: (ctx: JsonValueContext) => Result; + /** + * Visit a parse tree produced by the `currentDate` * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree * @return the visitor result */ - visitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => Result; + visitCurrentDate?: (ctx: CurrentDateContext) => Result; /** * Visit a parse tree produced by the `substring` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1373,6 +1730,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result; + /** + * Visit a parse tree produced by the `trim` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTrim?: (ctx: TrimContext) => Result; /** * Visit a parse tree produced by the `parameter` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1387,6 +1751,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitNormalize?: (ctx: NormalizeContext) => Result; + /** + * Visit a parse tree produced by the `localTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLocalTimestamp?: (ctx: LocalTimestampContext) => Result; + /** + * Visit a parse tree produced by the `jsonObject` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonObject?: (ctx: JsonObjectContext) => Result; /** * Visit a parse tree produced by the `intervalLiteral` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1408,6 +1786,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitBooleanLiteral?: (ctx: BooleanLiteralContext) => Result; + /** + * Visit a parse tree produced by the `jsonArray` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonArray?: (ctx: JsonArrayContext) => Result; /** * Visit a parse tree produced by the `simpleCase` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1443,6 +1828,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitSubscript?: (ctx: SubscriptContext) => Result; + /** + * Visit a parse tree produced by the `jsonExists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonExists?: (ctx: JsonExistsContext) => Result; /** * Visit a parse tree produced by the `currentPath` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1464,6 +1856,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitBinaryLiteral?: (ctx: BinaryLiteralContext) => Result; + /** + * Visit a parse tree produced by the `currentTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentTime?: (ctx: CurrentTimeContext) => Result; + /** + * Visit a parse tree produced by the `localTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLocalTime?: (ctx: LocalTimeContext) => Result; /** * Visit a parse tree produced by the `currentUser` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1471,6 +1877,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitCurrentUser?: (ctx: CurrentUserContext) => Result; + /** + * Visit a parse tree produced by the `jsonQuery` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonQuery?: (ctx: JsonQueryContext) => Result; /** * Visit a parse tree produced by the `measure` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1506,6 +1919,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitFunctionCall?: (ctx: FunctionCallContext) => Result; + /** + * Visit a parse tree produced by the `currentTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentTimestamp?: (ctx: CurrentTimestampContext) => Result; /** * Visit a parse tree produced by the `currentSchema` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1527,6 +1947,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitPosition?: (ctx: PositionContext) => Result; + /** + * Visit a parse tree produced by the `listagg` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitListagg?: (ctx: ListaggContext) => Result; /** * Visit a parse tree produced by the `searchedCase` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1548,6 +1975,60 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitGroupingOperation?: (ctx: GroupingOperationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonPathInvocation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonPathInvocation?: (ctx: JsonPathInvocationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonValueExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonValueExpression?: (ctx: JsonValueExpressionContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonRepresentation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonRepresentation?: (ctx: JsonRepresentationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonArgument?: (ctx: JsonArgumentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonExistsErrorBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonExistsErrorBehavior?: (ctx: JsonExistsErrorBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonValueBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonValueBehavior?: (ctx: JsonValueBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonQueryWrapperBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonQueryWrapperBehavior?: (ctx: JsonQueryWrapperBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonQueryBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonQueryBehavior?: (ctx: JsonQueryBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonObjectMember`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonObjectMember?: (ctx: JsonObjectMemberContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.processingMode`. * @param ctx the parse tree @@ -1959,77 +2440,250 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitPathSpecification?: (ctx: PathSpecificationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.privilege`. + * Visit a parse tree produced by `TrinoSqlParser.functionSpecification`. * @param ctx the parse tree * @return the visitor result */ - visitPrivilege?: (ctx: PrivilegeContext) => Result; + visitFunctionSpecification?: (ctx: FunctionSpecificationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * Visit a parse tree produced by `TrinoSqlParser.functionDeclaration`. * @param ctx the parse tree * @return the visitor result */ - visitTableOrViewName?: (ctx: TableOrViewNameContext) => Result; + visitFunctionDeclaration?: (ctx: FunctionDeclarationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tableName`. + * Visit a parse tree produced by `TrinoSqlParser.functionSignature`. * @param ctx the parse tree * @return the visitor result */ - visitTableName?: (ctx: TableNameContext) => Result; + visitFunctionSignature?: (ctx: FunctionSignatureContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * Visit a parse tree produced by `TrinoSqlParser.parameterDeclaration`. * @param ctx the parse tree * @return the visitor result */ - visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; + visitParameterDeclaration?: (ctx: ParameterDeclarationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.viewName`. + * Visit a parse tree produced by `TrinoSqlParser.returnsClause`. * @param ctx the parse tree * @return the visitor result */ - visitViewName?: (ctx: ViewNameContext) => Result; + visitReturnsClause?: (ctx: ReturnsClauseContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * Visit a parse tree produced by the `languageCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; + visitLanguageCharacteristic?: (ctx: LanguageCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tablePath`. + * Visit a parse tree produced by the `deterministicCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitTablePath?: (ctx: TablePathContext) => Result; + visitDeterministicCharacteristic?: (ctx: DeterministicCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.viewPath`. + * Visit a parse tree produced by the `returnsNullOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitViewPath?: (ctx: ViewPathContext) => Result; + visitReturnsNullOnNullInputCharacteristic?: (ctx: ReturnsNullOnNullInputCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.schemaName`. + * Visit a parse tree produced by the `calledOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaName?: (ctx: SchemaNameContext) => Result; + visitCalledOnNullInputCharacteristic?: (ctx: CalledOnNullInputCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.schemaNameCreate`. + * Visit a parse tree produced by the `securityCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => Result; + visitSecurityCharacteristic?: (ctx: SecurityCharacteristicContext) => Result; + /** + * Visit a parse tree produced by the `commentCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCommentCharacteristic?: (ctx: CommentCharacteristicContext) => Result; + /** + * Visit a parse tree produced by the `returnStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitReturnStatement?: (ctx: ReturnStatementContext) => Result; + /** + * Visit a parse tree produced by the `assignmentStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAssignmentStatement?: (ctx: AssignmentStatementContext) => Result; + /** + * Visit a parse tree produced by the `simpleCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSimpleCaseStatement?: (ctx: SimpleCaseStatementContext) => Result; + /** + * Visit a parse tree produced by the `searchedCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSearchedCaseStatement?: (ctx: SearchedCaseStatementContext) => Result; + /** + * Visit a parse tree produced by the `ifStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIfStatement?: (ctx: IfStatementContext) => Result; + /** + * Visit a parse tree produced by the `iterateStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIterateStatement?: (ctx: IterateStatementContext) => Result; + /** + * Visit a parse tree produced by the `leaveStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLeaveStatement?: (ctx: LeaveStatementContext) => Result; + /** + * Visit a parse tree produced by the `compoundStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCompoundStatement?: (ctx: CompoundStatementContext) => Result; + /** + * Visit a parse tree produced by the `loopStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLoopStatement?: (ctx: LoopStatementContext) => Result; + /** + * Visit a parse tree produced by the `whileStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWhileStatement?: (ctx: WhileStatementContext) => Result; + /** + * Visit a parse tree produced by the `repeatStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRepeatStatement?: (ctx: RepeatStatementContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.caseStatementWhenClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCaseStatementWhenClause?: (ctx: CaseStatementWhenClauseContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.elseIfClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitElseIfClause?: (ctx: ElseIfClauseContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.elseClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitElseClause?: (ctx: ElseClauseContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.variableDeclaration`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariableDeclaration?: (ctx: VariableDeclarationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.sqlStatementList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSqlStatementList?: (ctx: SqlStatementListContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.privilege`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPrivilege?: (ctx: PrivilegeContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.entityKind`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEntityKind?: (ctx: EntityKindContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.grantObject`. + * @param ctx the parse tree + * @return the visitor result + */ + visitGrantObject?: (ctx: GrantObjectContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.schemaPath`. + * Visit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableOrViewName?: (ctx: TableOrViewNameContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableRef`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableRef?: (ctx: TableRefContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.viewRef`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewRef?: (ctx: ViewRefContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaRef`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSchemaRef?: (ctx: SchemaRefContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaNameCreate`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaPath?: (ctx: SchemaPathContext) => Result; + visitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.catalogName`. + * Visit a parse tree produced by `TrinoSqlParser.catalogRef`. * @param ctx the parse tree * @return the visitor result */ - visitCatalogName?: (ctx: CatalogNameContext) => Result; + visitCatalogRef?: (ctx: CatalogRefContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.catalogNameCreate`. * @param ctx the parse tree @@ -2043,11 +2697,17 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitFunctionName?: (ctx: FunctionNameContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.columnName`. + * Visit a parse tree produced by `TrinoSqlParser.functionNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.columnRef`. * @param ctx the parse tree * @return the visitor result */ - visitColumnName?: (ctx: ColumnNameContext) => Result; + visitColumnRef?: (ctx: ColumnRefContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.columnNameCreate`. * @param ctx the parse tree @@ -2060,6 +2720,18 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitQualifiedName?: (ctx: QualifiedNameContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.queryPeriod`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQueryPeriod?: (ctx: QueryPeriodContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.rangeType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRangeType?: (ctx: RangeTypeContext) => Result; /** * Visit a parse tree produced by the `specifiedPrincipal` * labeled alternative in `TrinoSqlParser.grantor`. @@ -2108,6 +2780,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitRoles?: (ctx: RolesContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.privilegeOrRole`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPrivilegeOrRole?: (ctx: PrivilegeOrRoleContext) => Result; /** * Visit a parse tree produced by the `unquotedIdentifier` * labeled alternative in `TrinoSqlParser.identifier`. @@ -2157,6 +2835,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitIntegerLiteral?: (ctx: IntegerLiteralContext) => Result; + /** + * Visit a parse tree produced by the `identifierUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIdentifierUser?: (ctx: IdentifierUserContext) => Result; + /** + * Visit a parse tree produced by the `stringUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStringUser?: (ctx: StringUserContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.nonReserved`. * @param ctx the parse tree diff --git a/src/parser/trino/index.ts b/src/parser/trino/index.ts index 61ff9409..a57958a2 100644 --- a/src/parser/trino/index.ts +++ b/src/parser/trino/index.ts @@ -28,16 +28,17 @@ export class TrinoSQL extends BasicSQL = new Set([ - TrinoSqlParser.RULE_catalogName, + TrinoSqlParser.RULE_catalogRef, TrinoSqlParser.RULE_catalogNameCreate, - TrinoSqlParser.RULE_schemaName, + TrinoSqlParser.RULE_schemaRef, TrinoSqlParser.RULE_schemaNameCreate, - TrinoSqlParser.RULE_tableName, + TrinoSqlParser.RULE_tableRef, TrinoSqlParser.RULE_tableNameCreate, - TrinoSqlParser.RULE_viewName, + TrinoSqlParser.RULE_viewRef, TrinoSqlParser.RULE_viewNameCreate, TrinoSqlParser.RULE_functionName, - TrinoSqlParser.RULE_columnName, + TrinoSqlParser.RULE_functionNameCreate, + TrinoSqlParser.RULE_columnRef, TrinoSqlParser.RULE_columnNameCreate, ]); @@ -60,11 +61,15 @@ export class TrinoSQL extends BasicSQL { tmp += char; const isMulti = - tmp.includes('EXECUTE STATEMENT SET') || tmp.includes('BEGIN STATEMENT SET;'); + tmp.includes('EXECUTE STATEMENT SET') || + tmp.includes('BEGIN STATEMENT SET;') || + tmp.includes('BEGIN'); if (!isMulti) { // 非批量的先简单按照分号切割 diff --git a/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql b/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql index d3972f8b..15e05ed1 100644 --- a/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql +++ b/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql @@ -35,3 +35,11 @@ INSERT INTO tb (id, ); SELECT * FROM tb ORDER BY ; SELECT * FROM tb GROUP BY ; + +CREATE CATALOG ; + +DROP CATALOG cat ; + +CREATE FUNCTION example.default. ; + +DROP FUNCTION ; \ No newline at end of file diff --git a/test/parser/trino/suggestion/syntaxSuggestion.test.ts b/test/parser/trino/suggestion/syntaxSuggestion.test.ts index fed5c17a..74bbd084 100644 --- a/test/parser/trino/suggestion/syntaxSuggestion.test.ts +++ b/test/parser/trino/suggestion/syntaxSuggestion.test.ts @@ -349,4 +349,74 @@ describe('Trino SQL Syntax Suggestion', () => { expect(suggestion).not.toBeUndefined(); expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([]); }); + + test('Create Catalog', () => { + const pos: CaretPosition = { + lineNumber: 39, + column: 16, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.CATALOG_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([]); + }); + test('Drop Catalog', () => { + const pos: CaretPosition = { + lineNumber: 41, + column: 17, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.CATALOG + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['cat']); + }); + test('Create Function', () => { + const pos: CaretPosition = { + lineNumber: 43, + column: 33, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.FUNCTION_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([ + 'example', + '.', + 'default', + '.', + ]); + }); + test('Drop Function', () => { + const pos: CaretPosition = { + lineNumber: 45, + column: 15, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.FUNCTION + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([]); + }); }); diff --git a/test/parser/trino/suggestion/tokenSuggestion.test.ts b/test/parser/trino/suggestion/tokenSuggestion.test.ts index c2250f69..9c8d7d02 100644 --- a/test/parser/trino/suggestion/tokenSuggestion.test.ts +++ b/test/parser/trino/suggestion/tokenSuggestion.test.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import path from 'path'; import { TrinoSQL } from 'src/parser/trino'; -import { CaretPosition } from 'src/parser/common/types'; +import { CaretPosition, EntityContextType } from 'src/parser/common/types'; import { commentOtherLine } from 'test/helper'; const tokenSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'tokenSuggestion.sql'), 'utf-8'); @@ -34,11 +34,13 @@ describe('Trino SQL Token Suggestion', () => { expect(suggestion).toMatchUnorderedArrary([ 'ROLE', - 'VIEW', + 'FUNCTION', 'OR', + 'VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA', + 'CATALOG', ]); }); @@ -76,9 +78,17 @@ describe('Trino SQL Token Suggestion', () => { const suggestion = trino.getSuggestionAtCaretPosition( commentOtherLine(tokenSql, pos.lineNumber), pos - )?.keywords; + ); + + expect(suggestion?.keywords?.includes('INPUT')).toBeTruthy(); + expect(suggestion?.keywords?.includes('OUTPUT')).toBeTruthy(); - expect(suggestion).toMatchUnorderedArrary(['OUTPUT', 'INPUT']); + expect( + suggestion?.syntax?.find((item) => item.syntaxContextType === EntityContextType.TABLE) + ).not.toBeUndefined(); + expect( + suggestion?.syntax?.find((item) => item.syntaxContextType === EntityContextType.VIEW) + ).not.toBeUndefined(); }); test('After DROP', () => { @@ -93,10 +103,12 @@ describe('Trino SQL Token Suggestion', () => { expect(suggestion).toMatchUnorderedArrary([ 'ROLE', + 'FUNCTION', 'VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA', + 'CATALOG', ]); }); diff --git a/test/parser/trino/syntax/createStatement.test.ts b/test/parser/trino/syntax/createStatement.test.ts index 0c4dda29..e02e92bc 100644 --- a/test/parser/trino/syntax/createStatement.test.ts +++ b/test/parser/trino/syntax/createStatement.test.ts @@ -8,6 +8,8 @@ const features = { role: readSQL(__dirname, 'create_role.sql'), tableAsSelect: readSQL(__dirname, 'create_table_as_select.sql'), materializedView: readSQL(__dirname, 'create_materialized_view.sql'), + catalog: readSQL(__dirname, 'create_catalog.sql'), + function: readSQL(__dirname, 'create_function.sql'), }; describe('TrinoSQL Create Statements Syntax Tests', () => { @@ -43,4 +45,14 @@ describe('TrinoSQL Create Statements Syntax Tests', () => { expect(trino.validate(sql).length).toBe(0); }); }); + features.catalog.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); + features.function.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); }); diff --git a/test/parser/trino/syntax/dropStatement.test.ts b/test/parser/trino/syntax/dropStatement.test.ts index 42122987..d18f7d83 100644 --- a/test/parser/trino/syntax/dropStatement.test.ts +++ b/test/parser/trino/syntax/dropStatement.test.ts @@ -8,6 +8,8 @@ const features = { role: readSQL(__dirname, 'drop_role.sql'), column: readSQL(__dirname, 'drop_column.sql'), materializedView: readSQL(__dirname, 'drop_materialized_view.sql'), + catalog: readSQL(__dirname, 'drop_catalog.sql'), + function: readSQL(__dirname, 'drop_function.sql'), }; describe('TrinoSQL Drop Statements Syntax Tests', () => { @@ -43,4 +45,14 @@ describe('TrinoSQL Drop Statements Syntax Tests', () => { expect(trino.validate(sql).length).toBe(0); }); }); + features.catalog.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); + features.function.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); }); diff --git a/test/parser/trino/syntax/fixtures/alter_table.sql b/test/parser/trino/syntax/fixtures/alter_table.sql index 0ceb2baa..3e3bdfd3 100644 --- a/test/parser/trino/syntax/fixtures/alter_table.sql +++ b/test/parser/trino/syntax/fixtures/alter_table.sql @@ -6,6 +6,8 @@ ALTER TABLE users DROP COLUMN zip; ALTER TABLE IF EXISTS users DROP COLUMN IF EXISTS zip; ALTER TABLE users RENAME COLUMN id TO user_id; ALTER TABLE IF EXISTS users RENAME column IF EXISTS id to user_id; +ALTER TABLE users ALTER COLUMN id SET DATA TYPE bigint; +ALTER TABLE users ALTER COLUMN id DROP NOT NULL; ALTER TABLE people SET AUTHORIZATION alice; ALTER TABLE people SET AUTHORIZATION ROLE PUBLIC; ALTER TABLE people SET PROPERTIES x = 'y'; diff --git a/test/parser/trino/syntax/fixtures/comment.sql b/test/parser/trino/syntax/fixtures/comment.sql index bae01bcb..d0704dc0 100644 --- a/test/parser/trino/syntax/fixtures/comment.sql +++ b/test/parser/trino/syntax/fixtures/comment.sql @@ -1,5 +1,7 @@ COMMENT ON TABLE users IS 'master table'; +COMMENT ON VIEW users IS 'master view'; + COMMENT ON COLUMN users.name IS 'full name'; SHOW COMMENT ON COLUMN column1; diff --git a/test/parser/trino/syntax/fixtures/create_catalog.sql b/test/parser/trino/syntax/fixtures/create_catalog.sql new file mode 100644 index 00000000..ef5540ca --- /dev/null +++ b/test/parser/trino/syntax/fixtures/create_catalog.sql @@ -0,0 +1,13 @@ +CREATE CATALOG tpch USING tpch; + +CREATE CATALOG brain USING memory +WITH ("memory.max-data-per-node" = '128MB'); + + +CREATE CATALOG example USING postgresql +WITH ( + "connection-url" = 'jdbc:pg:localhost:5432', + "connection-user" = '${ENV:POSTGRES_USER}', + "connection-password" = '${ENV:POSTGRES_PASSWORD}', + "case-insensitive-name-matching" = 'true' +); \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/create_function.sql b/test/parser/trino/syntax/fixtures/create_function.sql new file mode 100644 index 00000000..86b4c81c --- /dev/null +++ b/test/parser/trino/syntax/fixtures/create_function.sql @@ -0,0 +1,8 @@ +CREATE FUNCTION example.default.meaning_of_life() + RETURNS bigint + BEGIN + RETURN 42; + END; + + +CREATE FUNCTION meaning_of_life() RETURNS bigint RETURN 42; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/create_materialized_view.sql b/test/parser/trino/syntax/fixtures/create_materialized_view.sql index 4523110f..ec690a05 100644 --- a/test/parser/trino/syntax/fixtures/create_materialized_view.sql +++ b/test/parser/trino/syntax/fixtures/create_materialized_view.sql @@ -3,3 +3,31 @@ CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple mat CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view' AS SELECT * FROM catalog2.schema2.tab; CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view'WITH (partitioned_by = ARRAY ['dateint']) AS SELECT * FROM catalog2.schema2.tab; CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A partitioned materialized view' WITH (partitioned_by = ARRAY ['dateint']) AS WITH a (t, u) AS (SELECT * FROM x), b AS (SELECT * FROM a) TABLE b; + +CREATE MATERIALIZED VIEW cancelled_orders +AS + SELECT orderkey, totalprice + FROM orders + WHERE orderstatus = 3; + +CREATE OR REPLACE MATERIALIZED VIEW order_totals_by_date +AS + SELECT orderdate, sum(totalprice) AS price + FROM orders + GROUP BY orderdate; + +CREATE MATERIALIZED VIEW orders_nation_mkgsegment +COMMENT 'Orders with nation and market segment data' +WITH ( partitioning = ARRAY['mktsegment', 'nationkey'] ) +AS + SELECT o.*, c.nationkey, c.mktsegment + FROM orders AS o + JOIN customer AS c + ON o.custkey = c.custkey; + +CREATE OR REPLACE MATERIALIZED VIEW +IF NOT EXISTS orders_nation_mkgsegment +GRACE PERIOD INTERVAL '1' YEAR +COMMENT 'Orders with nation and market segment data' +WITH ( partitioning = ARRAY['mktsegment', 'nationkey'] ) +AS SELECT * FROM t; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/create_table.sql b/test/parser/trino/syntax/fixtures/create_table.sql index 191dc6b9..f052e64c 100644 --- a/test/parser/trino/syntax/fixtures/create_table.sql +++ b/test/parser/trino/syntax/fixtures/create_table.sql @@ -1,2 +1,3 @@ CREATE TABLE IF NOT EXISTS bar (LIKE like_table); CREATE TABLE IF NOT EXISTS bar (LIKE like_table INCLUDING PROPERTIES); +CREATE OR REPLACE TABLE IF NOT EXISTS bar (LIKE like_table); diff --git a/test/parser/trino/syntax/fixtures/drop_catalog.sql b/test/parser/trino/syntax/fixtures/drop_catalog.sql new file mode 100644 index 00000000..a2d4ed3b --- /dev/null +++ b/test/parser/trino/syntax/fixtures/drop_catalog.sql @@ -0,0 +1 @@ +DROP CATALOG example; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/drop_function.sql b/test/parser/trino/syntax/fixtures/drop_function.sql new file mode 100644 index 00000000..dad1bb01 --- /dev/null +++ b/test/parser/trino/syntax/fixtures/drop_function.sql @@ -0,0 +1,5 @@ +DROP FUNCTION example.default.meaning_of_life(); + +DROP FUNCTION multiply_by_two(bigint); + +DROP FUNCTION meaning_of_life(); \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/execute.sql b/test/parser/trino/syntax/fixtures/execute.sql index ac7c7d9b..94ff3428 100644 --- a/test/parser/trino/syntax/fixtures/execute.sql +++ b/test/parser/trino/syntax/fixtures/execute.sql @@ -9,3 +9,11 @@ PREPARE my_select2 FROM SELECT name FROM nation WHERE regionkey = ? and nationkey < ?; EXECUTE my_select2 USING 1, 3; + +EXECUTE IMMEDIATE +'SELECT name FROM nation'; + + +EXECUTE IMMEDIATE +'SELECT name FROM nation WHERE regionkey = ? and nationkey < ?' +USING 1, 3; diff --git a/test/parser/trino/syntax/fixtures/reset_session.sql b/test/parser/trino/syntax/fixtures/reset_session.sql index 859afa76..a4608f00 100644 --- a/test/parser/trino/syntax/fixtures/reset_session.sql +++ b/test/parser/trino/syntax/fixtures/reset_session.sql @@ -1,2 +1,4 @@ RESET SESSION foo.bar; RESET SESSION foo; + +RESET SESSION AUTHORIZATION \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/select_function_tables.sql b/test/parser/trino/syntax/fixtures/select_function_tables.sql new file mode 100644 index 00000000..bc17ef3e --- /dev/null +++ b/test/parser/trino/syntax/fixtures/select_function_tables.sql @@ -0,0 +1,16 @@ +SELECT * FROM TABLE(my_function(1, 100)); + +SELECT * +FROM TABLE(exclude_columns( + input => TABLE(orders), + columns => DESCRIPTOR(clerk, comment))); + +SELECT * +FROM TABLE(sequence( + start => 1000000, + stop => -2000000, + step => -3)); + +SELECT * FROM TABLE(schema_name.my_function(1, 100)); + +SELECT * FROM TABLE(catalog_name.schema_name.my_function(1, 100)); \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/set_session.sql b/test/parser/trino/syntax/fixtures/set_session.sql index 159d4b9e..f346fcf4 100644 --- a/test/parser/trino/syntax/fixtures/set_session.sql +++ b/test/parser/trino/syntax/fixtures/set_session.sql @@ -2,3 +2,7 @@ SET SESSION foo = 'bar'; SET SESSION foo.bar = 'baz'; SET SESSION foo.bar.boo = 'baz'; SET SESSION foo.bar = 'ban' || 'ana'; + +SET SESSION AUTHORIZATION 'John'; +SET SESSION AUTHORIZATION John; +SET SESSION AUTHORIZATION "John"; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/show_create.sql b/test/parser/trino/syntax/fixtures/show_create.sql index 083d87cf..32459786 100644 --- a/test/parser/trino/syntax/fixtures/show_create.sql +++ b/test/parser/trino/syntax/fixtures/show_create.sql @@ -10,7 +10,6 @@ SHOW CREATE MATERIALIZED VIEW cancelled_orders AS SELECT orderkey, totalprice FROM orders - WHERE orderstatus = 3; - - + WHERE orderstatus = 3; +SHOW CREATE FUNCTION example.default.meaning_of_life; \ No newline at end of file diff --git a/test/parser/trino/syntax/selectStatement.test.ts b/test/parser/trino/syntax/selectStatement.test.ts index e99900de..10a93a7d 100644 --- a/test/parser/trino/syntax/selectStatement.test.ts +++ b/test/parser/trino/syntax/selectStatement.test.ts @@ -14,6 +14,7 @@ const features = { selectWithUNNEST: readSQL(__dirname, 'select_with_ unnest.sql'), selectWithExists: readSQL(__dirname, 'select_with_exists.sql'), selectWithUnion: readSQL(__dirname, 'select_with_union.sql'), + selectFunctionTables: readSQL(__dirname, 'select_function_tables.sql'), }; describe('TrinoSQL Select Statements Syntax Tests', () => { @@ -79,4 +80,9 @@ describe('TrinoSQL Select Statements Syntax Tests', () => { expect(trino.validate(sql).length).toBe(0); }); }); + features.selectFunctionTables.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); }); From 4a9681ed3bd188e41c30a6d7be39d6e77df7f61b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9C=9C=E5=BA=8F?= <976060700@qq.com> Date: Mon, 8 Jul 2024 09:46:45 +0800 Subject: [PATCH 06/16] fix(impala): fix alter table change statement (#332) --- src/grammar/impala/ImpalaSqlParser.g4 | 4 +- src/lib/impala/ImpalaSqlParser.interp | 2 +- src/lib/impala/ImpalaSqlParser.ts | 3839 ++++++++--------- .../suggestion/fixtures/syntaxSuggestion.sql | 2 +- .../suggestion/syntaxSuggestion.test.ts | 2 +- .../impala/syntax/fixtures/alter_table.sql | 3 +- 6 files changed, 1922 insertions(+), 1930 deletions(-) diff --git a/src/grammar/impala/ImpalaSqlParser.g4 b/src/grammar/impala/ImpalaSqlParser.g4 index 4f910793..198db2b3 100644 --- a/src/grammar/impala/ImpalaSqlParser.g4 +++ b/src/grammar/impala/ImpalaSqlParser.g4 @@ -169,7 +169,7 @@ alterPartitionCache ; changeColumnDefine - : KW_ALTER KW_TABLE tableNamePath KW_CHANGE KW_COLUMN columnSpecWithKudu + : KW_ALTER KW_TABLE tableNamePath KW_CHANGE columnNamePath columnSpecWithKudu ; alterDropSingleColumn @@ -635,7 +635,7 @@ kuduColumnDefinition ; columnSpecWithKudu - : columnSpec? (kuduAttributes kuduAttributes*?)? + : columnSpec (kuduAttributes kuduAttributes*?)? ; createColumnSpecWithKudu diff --git a/src/lib/impala/ImpalaSqlParser.interp b/src/lib/impala/ImpalaSqlParser.interp index da5ba8a2..fe75d1a6 100644 --- a/src/lib/impala/ImpalaSqlParser.interp +++ b/src/lib/impala/ImpalaSqlParser.interp @@ -769,4 +769,4 @@ nonReserved atn: -[4, 1, 289, 2773, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 1, 0, 5, 0, 368, 8, 0, 10, 0, 12, 0, 371, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 377, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 401, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 414, 8, 4, 1, 5, 1, 5, 3, 5, 418, 8, 5, 1, 5, 1, 5, 3, 5, 422, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 429, 8, 5, 10, 5, 12, 5, 432, 9, 5, 1, 5, 1, 5, 3, 5, 436, 8, 5, 1, 5, 1, 5, 3, 5, 440, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 446, 8, 5, 3, 5, 448, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 453, 8, 5, 1, 6, 1, 6, 3, 6, 457, 8, 6, 1, 6, 1, 6, 3, 6, 461, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 468, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 473, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 479, 8, 7, 1, 7, 1, 7, 3, 7, 483, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 490, 8, 7, 10, 7, 12, 7, 493, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 499, 8, 7, 1, 7, 1, 7, 3, 7, 503, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 508, 8, 7, 3, 7, 510, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 515, 8, 7, 1, 7, 1, 7, 3, 7, 519, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 526, 8, 7, 1, 7, 1, 7, 3, 7, 530, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 535, 8, 8, 1, 8, 1, 8, 3, 8, 539, 8, 8, 1, 8, 1, 8, 3, 8, 543, 8, 8, 1, 8, 1, 8, 3, 8, 547, 8, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 555, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 560, 8, 9, 1, 9, 1, 9, 3, 9, 564, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 572, 8, 11, 1, 11, 1, 11, 3, 11, 576, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 583, 8, 11, 10, 11, 12, 11, 586, 9, 11, 3, 11, 588, 8, 11, 1, 11, 3, 11, 591, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 597, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 604, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 615, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 620, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 625, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 630, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 635, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 642, 8, 12, 10, 12, 12, 12, 645, 9, 12, 3, 12, 647, 8, 12, 1, 12, 3, 12, 650, 8, 12, 1, 12, 1, 12, 3, 12, 654, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 680, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 706, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 715, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 725, 8, 16, 1, 16, 3, 16, 728, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 742, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 760, 8, 20, 3, 20, 762, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 769, 8, 20, 10, 20, 12, 20, 772, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 782, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 791, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 798, 8, 22, 1, 22, 1, 22, 3, 22, 802, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 809, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 815, 8, 23, 1, 23, 3, 23, 818, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 823, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 830, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 844, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 857, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 862, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 867, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 873, 8, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 909, 8, 32, 1, 32, 3, 32, 912, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 918, 8, 33, 1, 33, 3, 33, 921, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 927, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 933, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 945, 8, 35, 3, 35, 947, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 958, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 966, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 971, 8, 38, 1, 38, 1, 38, 3, 38, 975, 8, 38, 1, 39, 1, 39, 1, 39, 3, 39, 980, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 987, 8, 40, 1, 40, 1, 40, 3, 40, 991, 8, 40, 1, 41, 1, 41, 3, 41, 995, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1001, 8, 41, 1, 42, 1, 42, 3, 42, 1005, 8, 42, 1, 42, 1, 42, 3, 42, 1009, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 1016, 8, 42, 10, 42, 12, 42, 1019, 9, 42, 3, 42, 1021, 8, 42, 1, 42, 3, 42, 1024, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 3, 44, 1032, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1046, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1053, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1066, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1072, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1077, 8, 49, 1, 49, 3, 49, 1080, 8, 49, 1, 50, 3, 50, 1083, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1088, 8, 50, 1, 50, 1, 50, 3, 50, 1092, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1099, 8, 50, 10, 50, 12, 50, 1102, 9, 50, 1, 50, 1, 50, 3, 50, 1106, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 1112, 8, 51, 1, 52, 1, 52, 3, 52, 1116, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1121, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1126, 8, 53, 1, 53, 3, 53, 1129, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1135, 8, 53, 10, 53, 12, 53, 1138, 9, 53, 3, 53, 1140, 8, 53, 1, 53, 1, 53, 3, 53, 1144, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1154, 8, 54, 10, 54, 12, 54, 1157, 9, 54, 3, 54, 1159, 8, 54, 1, 54, 1, 54, 3, 54, 1163, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 1168, 8, 55, 1, 55, 1, 55, 3, 55, 1172, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1188, 8, 56, 1, 57, 1, 57, 1, 57, 3, 57, 1193, 8, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1198, 8, 57, 10, 57, 12, 57, 1201, 9, 57, 3, 57, 1203, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1209, 8, 58, 1, 58, 3, 58, 1212, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1217, 8, 58, 10, 58, 12, 58, 1220, 9, 58, 3, 58, 1222, 8, 58, 1, 59, 1, 59, 3, 59, 1226, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1231, 8, 59, 1, 59, 3, 59, 1234, 8, 59, 1, 59, 1, 59, 1, 59, 5, 59, 1239, 8, 59, 10, 59, 12, 59, 1242, 9, 59, 3, 59, 1244, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 1268, 8, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1282, 8, 65, 1, 65, 1, 65, 3, 65, 1286, 8, 65, 1, 66, 1, 66, 3, 66, 1290, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1310, 8, 68, 3, 68, 1312, 8, 68, 3, 68, 1314, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1323, 8, 69, 3, 69, 1325, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1334, 8, 70, 3, 70, 1336, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1345, 8, 71, 3, 71, 1347, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1352, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1361, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1370, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1379, 8, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1390, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1396, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1401, 8, 78, 1, 78, 3, 78, 1404, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1417, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1427, 8, 80, 1, 80, 1, 80, 3, 80, 1431, 8, 80, 1, 81, 1, 81, 1, 81, 3, 81, 1436, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 1445, 8, 82, 10, 82, 12, 82, 1448, 9, 82, 1, 82, 1, 82, 3, 82, 1452, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 5, 93, 1483, 8, 93, 10, 93, 12, 93, 1486, 9, 93, 1, 94, 1, 94, 1, 94, 5, 94, 1491, 8, 94, 10, 94, 12, 94, 1494, 9, 94, 1, 95, 1, 95, 3, 95, 1498, 8, 95, 1, 96, 1, 96, 3, 96, 1502, 8, 96, 1, 97, 1, 97, 3, 97, 1506, 8, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1511, 8, 98, 1, 98, 1, 98, 3, 98, 1515, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1520, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1525, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1530, 8, 98, 1, 98, 1, 98, 3, 98, 1534, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1543, 8, 98, 1, 98, 3, 98, 1546, 8, 98, 1, 98, 1, 98, 3, 98, 1550, 8, 98, 1, 99, 1, 99, 1, 99, 5, 99, 1555, 8, 99, 10, 99, 12, 99, 1558, 9, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1568, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1574, 8, 101, 5, 101, 1576, 8, 101, 10, 101, 12, 101, 1579, 9, 101, 1, 101, 1, 101, 1, 102, 3, 102, 1584, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1592, 8, 103, 10, 103, 12, 103, 1595, 9, 103, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1601, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1606, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1611, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1616, 8, 104, 1, 104, 1, 104, 5, 104, 1620, 8, 104, 10, 104, 12, 104, 1623, 9, 104, 3, 104, 1625, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1634, 8, 105, 1, 105, 3, 105, 1637, 8, 105, 1, 105, 3, 105, 1640, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1646, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 1652, 8, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 5, 109, 1660, 8, 109, 10, 109, 12, 109, 1663, 9, 109, 3, 109, 1665, 8, 109, 1, 109, 1, 109, 3, 109, 1669, 8, 109, 1, 109, 1, 109, 3, 109, 1673, 8, 109, 1, 110, 3, 110, 1676, 8, 110, 1, 110, 1, 110, 5, 110, 1680, 8, 110, 10, 110, 12, 110, 1683, 9, 110, 3, 110, 1685, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1691, 8, 111, 1, 111, 1, 111, 5, 111, 1695, 8, 111, 10, 111, 12, 111, 1698, 9, 111, 3, 111, 1700, 8, 111, 1, 112, 3, 112, 1703, 8, 112, 1, 112, 1, 112, 3, 112, 1707, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1717, 8, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 1726, 8, 116, 10, 116, 12, 116, 1729, 9, 116, 1, 116, 1, 116, 3, 116, 1733, 8, 116, 1, 116, 3, 116, 1736, 8, 116, 1, 117, 1, 117, 3, 117, 1740, 8, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 3, 118, 1747, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1755, 8, 118, 10, 118, 12, 118, 1758, 9, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1769, 8, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1775, 8, 119, 3, 119, 1777, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1786, 8, 120, 1, 120, 3, 120, 1789, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 1796, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1806, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1812, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1818, 8, 124, 10, 124, 12, 124, 1821, 9, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 1829, 8, 125, 10, 125, 12, 125, 1832, 9, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 5, 126, 1839, 8, 126, 10, 126, 12, 126, 1842, 9, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1852, 8, 127, 3, 127, 1854, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1860, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1865, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 5, 129, 1873, 8, 129, 10, 129, 12, 129, 1876, 9, 129, 3, 129, 1878, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1884, 8, 129, 3, 129, 1886, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1894, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1900, 8, 130, 1, 130, 5, 130, 1903, 8, 130, 10, 130, 12, 130, 1906, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1915, 8, 131, 10, 131, 12, 131, 1918, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1924, 8, 131, 1, 132, 1, 132, 3, 132, 1928, 8, 132, 1, 132, 1, 132, 3, 132, 1932, 8, 132, 1, 133, 1, 133, 3, 133, 1936, 8, 133, 1, 133, 3, 133, 1939, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1944, 8, 133, 10, 133, 12, 133, 1947, 9, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1953, 8, 133, 10, 133, 12, 133, 1956, 9, 133, 3, 133, 1958, 8, 133, 1, 133, 1, 133, 3, 133, 1962, 8, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1967, 8, 133, 1, 133, 1, 133, 3, 133, 1971, 8, 133, 1, 134, 3, 134, 1974, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1979, 8, 134, 10, 134, 12, 134, 1982, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 5, 136, 1990, 8, 136, 10, 136, 12, 136, 1993, 9, 136, 3, 136, 1995, 8, 136, 1, 136, 1, 136, 3, 136, 1999, 8, 136, 1, 137, 1, 137, 3, 137, 2003, 8, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 2012, 8, 139, 1, 139, 3, 139, 2015, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2022, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2036, 8, 140, 5, 140, 2038, 8, 140, 10, 140, 12, 140, 2041, 9, 140, 1, 141, 3, 141, 2044, 8, 141, 1, 141, 1, 141, 3, 141, 2048, 8, 141, 1, 141, 1, 141, 3, 141, 2052, 8, 141, 1, 141, 1, 141, 3, 141, 2056, 8, 141, 1, 141, 1, 141, 3, 141, 2060, 8, 141, 1, 141, 1, 141, 3, 141, 2064, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2074, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 2083, 8, 142, 10, 142, 12, 142, 2086, 9, 142, 1, 142, 1, 142, 3, 142, 2090, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2103, 8, 143, 3, 143, 2105, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 2111, 8, 145, 1, 145, 1, 145, 3, 145, 2115, 8, 145, 3, 145, 2117, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 2123, 8, 146, 10, 146, 12, 146, 2126, 9, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2132, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2137, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 5, 149, 2148, 8, 149, 10, 149, 12, 149, 2151, 9, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2156, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2164, 8, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2171, 8, 153, 1, 153, 1, 153, 3, 153, 2175, 8, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 5, 153, 2183, 8, 153, 10, 153, 12, 153, 2186, 9, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2196, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2204, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 2211, 8, 154, 10, 154, 12, 154, 2214, 9, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2219, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2224, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2230, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2236, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2241, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2246, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 2252, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 2263, 8, 155, 10, 155, 12, 155, 2266, 9, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2292, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2298, 8, 156, 5, 156, 2300, 8, 156, 10, 156, 12, 156, 2303, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2312, 8, 156, 10, 156, 12, 156, 2315, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2324, 8, 156, 1, 156, 3, 156, 2327, 8, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2332, 8, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2337, 8, 156, 10, 156, 12, 156, 2340, 9, 156, 3, 156, 2342, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2349, 8, 156, 10, 156, 12, 156, 2352, 9, 156, 3, 156, 2354, 8, 156, 1, 156, 1, 156, 3, 156, 2358, 8, 156, 1, 156, 3, 156, 2361, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2371, 8, 156, 10, 156, 12, 156, 2374, 9, 156, 3, 156, 2376, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2393, 8, 156, 11, 156, 12, 156, 2394, 1, 156, 1, 156, 3, 156, 2399, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2405, 8, 156, 11, 156, 12, 156, 2406, 1, 156, 1, 156, 3, 156, 2411, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2434, 8, 156, 10, 156, 12, 156, 2437, 9, 156, 3, 156, 2439, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2448, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2454, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2460, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2466, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2477, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2486, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2506, 8, 156, 10, 156, 12, 156, 2509, 9, 156, 3, 156, 2511, 8, 156, 1, 156, 3, 156, 2514, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2524, 8, 156, 10, 156, 12, 156, 2527, 9, 156, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 2533, 8, 157, 3, 157, 2535, 8, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 2557, 8, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2584, 8, 164, 10, 164, 12, 164, 2587, 9, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2593, 8, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2599, 8, 164, 10, 164, 12, 164, 2602, 9, 164, 1, 164, 1, 164, 3, 164, 2606, 8, 164, 3, 164, 2608, 8, 164, 1, 164, 1, 164, 5, 164, 2612, 8, 164, 10, 164, 12, 164, 2615, 9, 164, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 2621, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 2627, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2647, 8, 170, 10, 170, 12, 170, 2650, 9, 170, 3, 170, 2652, 8, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2659, 8, 170, 10, 170, 12, 170, 2662, 9, 170, 3, 170, 2664, 8, 170, 1, 170, 3, 170, 2667, 8, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2687, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2698, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2705, 8, 173, 1, 174, 1, 174, 1, 174, 5, 174, 2710, 8, 174, 10, 174, 12, 174, 2713, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2726, 8, 175, 3, 175, 2728, 8, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 5, 177, 2735, 8, 177, 10, 177, 12, 177, 2738, 9, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 2746, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 2753, 8, 179, 1, 180, 3, 180, 2756, 8, 180, 1, 180, 1, 180, 3, 180, 2760, 8, 180, 1, 180, 1, 180, 3, 180, 2764, 8, 180, 1, 180, 3, 180, 2767, 8, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 10, 770, 1446, 1621, 1661, 1681, 1696, 1727, 1756, 1830, 2301, 6, 260, 280, 306, 310, 312, 328, 183, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 0, 33, 2, 0, 46, 46, 170, 170, 2, 0, 166, 166, 204, 204, 2, 0, 176, 176, 202, 202, 2, 0, 69, 69, 80, 80, 2, 0, 27, 27, 159, 159, 2, 0, 103, 103, 144, 144, 2, 0, 47, 47, 171, 171, 2, 0, 3, 3, 12, 12, 3, 0, 87, 87, 166, 166, 204, 204, 2, 0, 178, 178, 209, 209, 1, 0, 245, 248, 2, 0, 147, 147, 219, 223, 2, 0, 65, 65, 95, 95, 2, 0, 64, 64, 200, 200, 2, 0, 10, 10, 55, 55, 2, 0, 75, 75, 112, 112, 2, 0, 2, 2, 57, 57, 2, 0, 14, 14, 185, 185, 3, 0, 106, 106, 115, 115, 164, 164, 2, 0, 105, 105, 163, 163, 4, 0, 70, 70, 133, 133, 194, 194, 208, 208, 1, 0, 255, 256, 1, 0, 257, 259, 1, 0, 249, 254, 3, 0, 2, 2, 6, 6, 181, 181, 2, 0, 70, 70, 194, 194, 5, 0, 48, 49, 91, 92, 122, 125, 172, 173, 217, 218, 1, 0, 127, 130, 2, 0, 8, 8, 227, 244, 2, 0, 77, 77, 149, 149, 4, 0, 46, 46, 178, 178, 188, 188, 209, 209, 16, 0, 28, 29, 40, 40, 43, 43, 48, 48, 68, 68, 91, 91, 114, 114, 122, 122, 124, 124, 158, 158, 165, 165, 172, 172, 184, 184, 196, 196, 204, 204, 217, 217, 23, 0, 14, 14, 43, 44, 48, 49, 65, 65, 68, 68, 91, 91, 95, 95, 110, 110, 119, 119, 122, 125, 127, 130, 137, 137, 140, 140, 152, 153, 172, 173, 180, 180, 184, 185, 195, 195, 204, 204, 213, 213, 217, 217, 220, 220, 231, 231, 3096, 0, 369, 1, 0, 0, 0, 2, 374, 1, 0, 0, 0, 4, 400, 1, 0, 0, 0, 6, 402, 1, 0, 0, 0, 8, 413, 1, 0, 0, 0, 10, 415, 1, 0, 0, 0, 12, 454, 1, 0, 0, 0, 14, 476, 1, 0, 0, 0, 16, 531, 1, 0, 0, 0, 18, 551, 1, 0, 0, 0, 20, 565, 1, 0, 0, 0, 22, 569, 1, 0, 0, 0, 24, 631, 1, 0, 0, 0, 26, 679, 1, 0, 0, 0, 28, 681, 1, 0, 0, 0, 30, 689, 1, 0, 0, 0, 32, 709, 1, 0, 0, 0, 34, 729, 1, 0, 0, 0, 36, 736, 1, 0, 0, 0, 38, 745, 1, 0, 0, 0, 40, 753, 1, 0, 0, 0, 42, 775, 1, 0, 0, 0, 44, 785, 1, 0, 0, 0, 46, 803, 1, 0, 0, 0, 48, 824, 1, 0, 0, 0, 50, 845, 1, 0, 0, 0, 52, 851, 1, 0, 0, 0, 54, 868, 1, 0, 0, 0, 56, 877, 1, 0, 0, 0, 58, 884, 1, 0, 0, 0, 60, 892, 1, 0, 0, 0, 62, 899, 1, 0, 0, 0, 64, 906, 1, 0, 0, 0, 66, 915, 1, 0, 0, 0, 68, 926, 1, 0, 0, 0, 70, 928, 1, 0, 0, 0, 72, 948, 1, 0, 0, 0, 74, 965, 1, 0, 0, 0, 76, 967, 1, 0, 0, 0, 78, 976, 1, 0, 0, 0, 80, 983, 1, 0, 0, 0, 82, 992, 1, 0, 0, 0, 84, 1002, 1, 0, 0, 0, 86, 1025, 1, 0, 0, 0, 88, 1031, 1, 0, 0, 0, 90, 1033, 1, 0, 0, 0, 92, 1040, 1, 0, 0, 0, 94, 1052, 1, 0, 0, 0, 96, 1054, 1, 0, 0, 0, 98, 1061, 1, 0, 0, 0, 100, 1082, 1, 0, 0, 0, 102, 1111, 1, 0, 0, 0, 104, 1113, 1, 0, 0, 0, 106, 1122, 1, 0, 0, 0, 108, 1145, 1, 0, 0, 0, 110, 1164, 1, 0, 0, 0, 112, 1187, 1, 0, 0, 0, 114, 1189, 1, 0, 0, 0, 116, 1204, 1, 0, 0, 0, 118, 1223, 1, 0, 0, 0, 120, 1245, 1, 0, 0, 0, 122, 1250, 1, 0, 0, 0, 124, 1255, 1, 0, 0, 0, 126, 1260, 1, 0, 0, 0, 128, 1265, 1, 0, 0, 0, 130, 1272, 1, 0, 0, 0, 132, 1287, 1, 0, 0, 0, 134, 1293, 1, 0, 0, 0, 136, 1313, 1, 0, 0, 0, 138, 1315, 1, 0, 0, 0, 140, 1326, 1, 0, 0, 0, 142, 1337, 1, 0, 0, 0, 144, 1351, 1, 0, 0, 0, 146, 1353, 1, 0, 0, 0, 148, 1362, 1, 0, 0, 0, 150, 1371, 1, 0, 0, 0, 152, 1380, 1, 0, 0, 0, 154, 1383, 1, 0, 0, 0, 156, 1391, 1, 0, 0, 0, 158, 1407, 1, 0, 0, 0, 160, 1411, 1, 0, 0, 0, 162, 1435, 1, 0, 0, 0, 164, 1437, 1, 0, 0, 0, 166, 1453, 1, 0, 0, 0, 168, 1456, 1, 0, 0, 0, 170, 1460, 1, 0, 0, 0, 172, 1463, 1, 0, 0, 0, 174, 1467, 1, 0, 0, 0, 176, 1469, 1, 0, 0, 0, 178, 1471, 1, 0, 0, 0, 180, 1473, 1, 0, 0, 0, 182, 1475, 1, 0, 0, 0, 184, 1477, 1, 0, 0, 0, 186, 1479, 1, 0, 0, 0, 188, 1487, 1, 0, 0, 0, 190, 1497, 1, 0, 0, 0, 192, 1501, 1, 0, 0, 0, 194, 1505, 1, 0, 0, 0, 196, 1510, 1, 0, 0, 0, 198, 1551, 1, 0, 0, 0, 200, 1559, 1, 0, 0, 0, 202, 1563, 1, 0, 0, 0, 204, 1583, 1, 0, 0, 0, 206, 1587, 1, 0, 0, 0, 208, 1596, 1, 0, 0, 0, 210, 1626, 1, 0, 0, 0, 212, 1641, 1, 0, 0, 0, 214, 1647, 1, 0, 0, 0, 216, 1653, 1, 0, 0, 0, 218, 1655, 1, 0, 0, 0, 220, 1675, 1, 0, 0, 0, 222, 1686, 1, 0, 0, 0, 224, 1706, 1, 0, 0, 0, 226, 1716, 1, 0, 0, 0, 228, 1718, 1, 0, 0, 0, 230, 1720, 1, 0, 0, 0, 232, 1735, 1, 0, 0, 0, 234, 1737, 1, 0, 0, 0, 236, 1744, 1, 0, 0, 0, 238, 1776, 1, 0, 0, 0, 240, 1788, 1, 0, 0, 0, 242, 1795, 1, 0, 0, 0, 244, 1805, 1, 0, 0, 0, 246, 1807, 1, 0, 0, 0, 248, 1813, 1, 0, 0, 0, 250, 1824, 1, 0, 0, 0, 252, 1835, 1, 0, 0, 0, 254, 1843, 1, 0, 0, 0, 256, 1861, 1, 0, 0, 0, 258, 1866, 1, 0, 0, 0, 260, 1887, 1, 0, 0, 0, 262, 1923, 1, 0, 0, 0, 264, 1925, 1, 0, 0, 0, 266, 1933, 1, 0, 0, 0, 268, 1973, 1, 0, 0, 0, 270, 1983, 1, 0, 0, 0, 272, 1998, 1, 0, 0, 0, 274, 2000, 1, 0, 0, 0, 276, 2007, 1, 0, 0, 0, 278, 2021, 1, 0, 0, 0, 280, 2023, 1, 0, 0, 0, 282, 2073, 1, 0, 0, 0, 284, 2089, 1, 0, 0, 0, 286, 2091, 1, 0, 0, 0, 288, 2106, 1, 0, 0, 0, 290, 2108, 1, 0, 0, 0, 292, 2118, 1, 0, 0, 0, 294, 2136, 1, 0, 0, 0, 296, 2138, 1, 0, 0, 0, 298, 2142, 1, 0, 0, 0, 300, 2157, 1, 0, 0, 0, 302, 2163, 1, 0, 0, 0, 304, 2165, 1, 0, 0, 0, 306, 2174, 1, 0, 0, 0, 308, 2245, 1, 0, 0, 0, 310, 2251, 1, 0, 0, 0, 312, 2513, 1, 0, 0, 0, 314, 2534, 1, 0, 0, 0, 316, 2536, 1, 0, 0, 0, 318, 2538, 1, 0, 0, 0, 320, 2540, 1, 0, 0, 0, 322, 2556, 1, 0, 0, 0, 324, 2558, 1, 0, 0, 0, 326, 2560, 1, 0, 0, 0, 328, 2607, 1, 0, 0, 0, 330, 2616, 1, 0, 0, 0, 332, 2620, 1, 0, 0, 0, 334, 2626, 1, 0, 0, 0, 336, 2628, 1, 0, 0, 0, 338, 2633, 1, 0, 0, 0, 340, 2639, 1, 0, 0, 0, 342, 2686, 1, 0, 0, 0, 344, 2697, 1, 0, 0, 0, 346, 2704, 1, 0, 0, 0, 348, 2706, 1, 0, 0, 0, 350, 2727, 1, 0, 0, 0, 352, 2729, 1, 0, 0, 0, 354, 2731, 1, 0, 0, 0, 356, 2745, 1, 0, 0, 0, 358, 2752, 1, 0, 0, 0, 360, 2766, 1, 0, 0, 0, 362, 2768, 1, 0, 0, 0, 364, 2770, 1, 0, 0, 0, 366, 368, 3, 2, 1, 0, 367, 366, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 372, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 373, 5, 0, 0, 1, 373, 1, 1, 0, 0, 0, 374, 376, 3, 4, 2, 0, 375, 377, 5, 262, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 3, 1, 0, 0, 0, 378, 401, 3, 204, 102, 0, 379, 401, 3, 6, 3, 0, 380, 401, 3, 8, 4, 0, 381, 401, 3, 26, 13, 0, 382, 401, 3, 64, 32, 0, 383, 401, 3, 66, 33, 0, 384, 401, 3, 68, 34, 0, 385, 401, 3, 74, 37, 0, 386, 401, 3, 88, 44, 0, 387, 401, 3, 94, 47, 0, 388, 401, 3, 100, 50, 0, 389, 401, 3, 102, 51, 0, 390, 401, 3, 108, 54, 0, 391, 401, 3, 110, 55, 0, 392, 401, 3, 112, 56, 0, 393, 401, 3, 144, 72, 0, 394, 401, 3, 152, 76, 0, 395, 401, 3, 154, 77, 0, 396, 401, 3, 156, 78, 0, 397, 401, 3, 158, 79, 0, 398, 401, 3, 160, 80, 0, 399, 401, 3, 162, 81, 0, 400, 378, 1, 0, 0, 0, 400, 379, 1, 0, 0, 0, 400, 380, 1, 0, 0, 0, 400, 381, 1, 0, 0, 0, 400, 382, 1, 0, 0, 0, 400, 383, 1, 0, 0, 0, 400, 384, 1, 0, 0, 0, 400, 385, 1, 0, 0, 0, 400, 386, 1, 0, 0, 0, 400, 387, 1, 0, 0, 0, 400, 388, 1, 0, 0, 0, 400, 389, 1, 0, 0, 0, 400, 390, 1, 0, 0, 0, 400, 391, 1, 0, 0, 0, 400, 392, 1, 0, 0, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 5, 1, 0, 0, 0, 402, 403, 5, 203, 0, 0, 403, 404, 3, 184, 92, 0, 404, 7, 1, 0, 0, 0, 405, 414, 3, 18, 9, 0, 406, 414, 3, 20, 10, 0, 407, 414, 3, 22, 11, 0, 408, 414, 3, 24, 12, 0, 409, 414, 3, 16, 8, 0, 410, 414, 3, 14, 7, 0, 411, 414, 3, 12, 6, 0, 412, 414, 3, 10, 5, 0, 413, 405, 1, 0, 0, 0, 413, 406, 1, 0, 0, 0, 413, 407, 1, 0, 0, 0, 413, 408, 1, 0, 0, 0, 413, 409, 1, 0, 0, 0, 413, 410, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 413, 412, 1, 0, 0, 0, 414, 9, 1, 0, 0, 0, 415, 417, 5, 37, 0, 0, 416, 418, 5, 19, 0, 0, 417, 416, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 5, 188, 0, 0, 420, 422, 3, 172, 86, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 439, 3, 174, 87, 0, 424, 425, 5, 265, 0, 0, 425, 430, 3, 214, 107, 0, 426, 427, 5, 263, 0, 0, 427, 429, 3, 214, 107, 0, 428, 426, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 434, 5, 263, 0, 0, 434, 436, 3, 208, 104, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 438, 5, 266, 0, 0, 438, 440, 1, 0, 0, 0, 439, 424, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 447, 1, 0, 0, 0, 441, 442, 5, 17, 0, 0, 442, 445, 5, 26, 0, 0, 443, 446, 3, 292, 146, 0, 444, 446, 3, 250, 125, 0, 445, 443, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 448, 1, 0, 0, 0, 447, 441, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 452, 3, 196, 98, 0, 450, 451, 5, 9, 0, 0, 451, 453, 3, 204, 102, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 11, 1, 0, 0, 0, 454, 456, 5, 37, 0, 0, 455, 457, 5, 19, 0, 0, 456, 455, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 5, 188, 0, 0, 459, 461, 3, 172, 86, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 3, 174, 87, 0, 463, 467, 5, 115, 0, 0, 464, 468, 3, 186, 93, 0, 465, 466, 5, 147, 0, 0, 466, 468, 3, 314, 157, 0, 467, 464, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 472, 1, 0, 0, 0, 469, 470, 5, 17, 0, 0, 470, 471, 5, 26, 0, 0, 471, 473, 3, 250, 125, 0, 472, 469, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 3, 196, 98, 0, 475, 13, 1, 0, 0, 0, 476, 478, 5, 37, 0, 0, 477, 479, 5, 19, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 5, 188, 0, 0, 481, 483, 3, 172, 86, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 502, 3, 174, 87, 0, 485, 486, 5, 265, 0, 0, 486, 491, 3, 216, 108, 0, 487, 488, 5, 263, 0, 0, 488, 490, 3, 216, 108, 0, 489, 487, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 498, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 495, 5, 263, 0, 0, 495, 496, 5, 150, 0, 0, 496, 497, 5, 110, 0, 0, 497, 499, 3, 292, 146, 0, 498, 494, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 5, 266, 0, 0, 501, 503, 1, 0, 0, 0, 502, 485, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 509, 1, 0, 0, 0, 504, 505, 5, 150, 0, 0, 505, 507, 5, 110, 0, 0, 506, 508, 3, 292, 146, 0, 507, 506, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 1, 0, 0, 0, 509, 504, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 514, 1, 0, 0, 0, 511, 512, 5, 145, 0, 0, 512, 513, 5, 26, 0, 0, 513, 515, 3, 232, 116, 0, 514, 511, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 518, 1, 0, 0, 0, 516, 517, 5, 34, 0, 0, 517, 519, 3, 314, 157, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521, 5, 23, 0, 0, 521, 522, 5, 9, 0, 0, 522, 525, 5, 111, 0, 0, 523, 524, 5, 25, 0, 0, 524, 526, 3, 248, 124, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 529, 1, 0, 0, 0, 527, 528, 5, 9, 0, 0, 528, 530, 3, 204, 102, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 15, 1, 0, 0, 0, 531, 532, 5, 37, 0, 0, 532, 534, 5, 212, 0, 0, 533, 535, 3, 172, 86, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 3, 178, 89, 0, 537, 539, 3, 202, 101, 0, 538, 537, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 541, 5, 34, 0, 0, 541, 543, 3, 314, 157, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 545, 5, 25, 0, 0, 545, 547, 3, 248, 124, 0, 546, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 5, 9, 0, 0, 549, 550, 3, 204, 102, 0, 550, 17, 1, 0, 0, 0, 551, 552, 5, 37, 0, 0, 552, 554, 7, 0, 0, 0, 553, 555, 3, 172, 86, 0, 554, 553, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 559, 3, 176, 88, 0, 557, 558, 5, 34, 0, 0, 558, 560, 3, 314, 157, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 562, 5, 24, 0, 0, 562, 564, 3, 314, 157, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 19, 1, 0, 0, 0, 565, 566, 5, 37, 0, 0, 566, 567, 5, 166, 0, 0, 567, 568, 3, 358, 179, 0, 568, 21, 1, 0, 0, 0, 569, 571, 5, 37, 0, 0, 570, 572, 5, 12, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 5, 84, 0, 0, 574, 576, 3, 172, 86, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 590, 3, 180, 90, 0, 578, 587, 5, 265, 0, 0, 579, 584, 3, 328, 164, 0, 580, 581, 5, 263, 0, 0, 581, 583, 3, 328, 164, 0, 582, 580, 1, 0, 0, 0, 583, 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 587, 579, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 5, 266, 0, 0, 590, 578, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 5, 160, 0, 0, 593, 596, 3, 328, 164, 0, 594, 595, 5, 102, 0, 0, 595, 597, 3, 328, 164, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 5, 24, 0, 0, 599, 603, 5, 274, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 249, 0, 0, 602, 604, 5, 274, 0, 0, 603, 600, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 5, 206, 0, 0, 606, 607, 5, 249, 0, 0, 607, 608, 5, 274, 0, 0, 608, 609, 5, 126, 0, 0, 609, 610, 5, 249, 0, 0, 610, 614, 5, 274, 0, 0, 611, 612, 5, 18, 0, 0, 612, 613, 5, 249, 0, 0, 613, 615, 5, 274, 0, 0, 614, 611, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 619, 1, 0, 0, 0, 616, 617, 5, 20, 0, 0, 617, 618, 5, 249, 0, 0, 618, 620, 5, 274, 0, 0, 619, 616, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 624, 1, 0, 0, 0, 621, 622, 5, 187, 0, 0, 622, 623, 5, 249, 0, 0, 623, 625, 5, 274, 0, 0, 624, 621, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 629, 1, 0, 0, 0, 626, 627, 5, 76, 0, 0, 627, 628, 5, 249, 0, 0, 628, 630, 5, 274, 0, 0, 629, 626, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 23, 1, 0, 0, 0, 631, 632, 5, 37, 0, 0, 632, 634, 5, 84, 0, 0, 633, 635, 3, 172, 86, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 649, 3, 180, 90, 0, 637, 646, 5, 265, 0, 0, 638, 643, 3, 328, 164, 0, 639, 640, 5, 263, 0, 0, 640, 642, 3, 328, 164, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 638, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 5, 266, 0, 0, 649, 637, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 652, 5, 160, 0, 0, 652, 654, 3, 328, 164, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 5, 24, 0, 0, 656, 657, 5, 274, 0, 0, 657, 658, 5, 186, 0, 0, 658, 659, 5, 249, 0, 0, 659, 660, 3, 314, 157, 0, 660, 25, 1, 0, 0, 0, 661, 680, 3, 28, 14, 0, 662, 680, 3, 62, 31, 0, 663, 680, 3, 60, 30, 0, 664, 680, 3, 58, 29, 0, 665, 680, 3, 54, 27, 0, 666, 680, 3, 56, 28, 0, 667, 680, 3, 52, 26, 0, 668, 680, 3, 48, 24, 0, 669, 680, 3, 50, 25, 0, 670, 680, 3, 46, 23, 0, 671, 680, 3, 44, 22, 0, 672, 680, 3, 42, 21, 0, 673, 680, 3, 40, 20, 0, 674, 680, 3, 34, 17, 0, 675, 680, 3, 30, 15, 0, 676, 680, 3, 32, 16, 0, 677, 680, 3, 36, 18, 0, 678, 680, 3, 38, 19, 0, 679, 661, 1, 0, 0, 0, 679, 662, 1, 0, 0, 0, 679, 663, 1, 0, 0, 0, 679, 664, 1, 0, 0, 0, 679, 665, 1, 0, 0, 0, 679, 666, 1, 0, 0, 0, 679, 667, 1, 0, 0, 0, 679, 668, 1, 0, 0, 0, 679, 669, 1, 0, 0, 0, 679, 670, 1, 0, 0, 0, 679, 671, 1, 0, 0, 0, 679, 672, 1, 0, 0, 0, 679, 673, 1, 0, 0, 0, 679, 674, 1, 0, 0, 0, 679, 675, 1, 0, 0, 0, 679, 676, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 678, 1, 0, 0, 0, 680, 27, 1, 0, 0, 0, 681, 682, 5, 4, 0, 0, 682, 683, 5, 46, 0, 0, 683, 684, 3, 184, 92, 0, 684, 685, 5, 176, 0, 0, 685, 686, 5, 142, 0, 0, 686, 687, 7, 1, 0, 0, 687, 688, 3, 358, 179, 0, 688, 29, 1, 0, 0, 0, 689, 690, 5, 4, 0, 0, 690, 691, 5, 188, 0, 0, 691, 692, 3, 186, 93, 0, 692, 693, 5, 176, 0, 0, 693, 694, 5, 32, 0, 0, 694, 695, 5, 182, 0, 0, 695, 696, 3, 192, 96, 0, 696, 697, 5, 265, 0, 0, 697, 698, 3, 228, 114, 0, 698, 699, 5, 249, 0, 0, 699, 705, 3, 314, 157, 0, 700, 701, 5, 263, 0, 0, 701, 702, 3, 228, 114, 0, 702, 703, 5, 249, 0, 0, 703, 704, 3, 314, 157, 0, 704, 706, 1, 0, 0, 0, 705, 700, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 5, 266, 0, 0, 708, 31, 1, 0, 0, 0, 709, 710, 5, 4, 0, 0, 710, 711, 5, 188, 0, 0, 711, 714, 3, 186, 93, 0, 712, 713, 5, 145, 0, 0, 713, 715, 3, 304, 152, 0, 714, 712, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 727, 5, 176, 0, 0, 717, 718, 5, 30, 0, 0, 718, 719, 5, 94, 0, 0, 719, 724, 3, 314, 157, 0, 720, 721, 5, 216, 0, 0, 721, 722, 5, 151, 0, 0, 722, 723, 5, 249, 0, 0, 723, 725, 3, 360, 180, 0, 724, 720, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 728, 1, 0, 0, 0, 726, 728, 5, 197, 0, 0, 727, 717, 1, 0, 0, 0, 727, 726, 1, 0, 0, 0, 728, 33, 1, 0, 0, 0, 729, 730, 5, 4, 0, 0, 730, 731, 5, 188, 0, 0, 731, 732, 3, 186, 93, 0, 732, 733, 5, 31, 0, 0, 733, 734, 5, 32, 0, 0, 734, 735, 3, 220, 110, 0, 735, 35, 1, 0, 0, 0, 736, 737, 5, 4, 0, 0, 737, 738, 5, 188, 0, 0, 738, 739, 3, 186, 93, 0, 739, 741, 5, 58, 0, 0, 740, 742, 5, 32, 0, 0, 741, 740, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 3, 192, 96, 0, 744, 37, 1, 0, 0, 0, 745, 746, 5, 4, 0, 0, 746, 747, 5, 188, 0, 0, 747, 748, 3, 186, 93, 0, 748, 749, 5, 176, 0, 0, 749, 750, 5, 142, 0, 0, 750, 751, 7, 1, 0, 0, 751, 752, 3, 358, 179, 0, 752, 39, 1, 0, 0, 0, 753, 754, 5, 4, 0, 0, 754, 755, 5, 188, 0, 0, 755, 761, 3, 186, 93, 0, 756, 762, 5, 158, 0, 0, 757, 759, 5, 1, 0, 0, 758, 760, 3, 172, 86, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 756, 1, 0, 0, 0, 761, 757, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 5, 33, 0, 0, 764, 765, 5, 265, 0, 0, 765, 770, 3, 220, 110, 0, 766, 767, 5, 263, 0, 0, 767, 769, 3, 220, 110, 0, 768, 766, 1, 0, 0, 0, 769, 772, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 773, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 773, 774, 5, 266, 0, 0, 774, 41, 1, 0, 0, 0, 775, 776, 5, 4, 0, 0, 776, 777, 5, 188, 0, 0, 777, 778, 3, 186, 93, 0, 778, 779, 5, 1, 0, 0, 779, 781, 5, 32, 0, 0, 780, 782, 3, 172, 86, 0, 781, 780, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 3, 222, 111, 0, 784, 43, 1, 0, 0, 0, 785, 786, 5, 4, 0, 0, 786, 787, 5, 188, 0, 0, 787, 788, 3, 186, 93, 0, 788, 790, 5, 4, 0, 0, 789, 791, 5, 32, 0, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 801, 3, 192, 96, 0, 793, 797, 5, 176, 0, 0, 794, 798, 3, 226, 113, 0, 795, 796, 5, 34, 0, 0, 796, 798, 3, 314, 157, 0, 797, 794, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 800, 5, 58, 0, 0, 800, 802, 5, 51, 0, 0, 801, 793, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 45, 1, 0, 0, 0, 803, 804, 5, 4, 0, 0, 804, 805, 5, 188, 0, 0, 805, 806, 3, 186, 93, 0, 806, 808, 5, 1, 0, 0, 807, 809, 3, 172, 86, 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 822, 1, 0, 0, 0, 810, 811, 5, 145, 0, 0, 811, 814, 3, 304, 152, 0, 812, 813, 5, 24, 0, 0, 813, 815, 3, 314, 157, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 818, 3, 240, 120, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 823, 1, 0, 0, 0, 819, 820, 5, 154, 0, 0, 820, 821, 5, 145, 0, 0, 821, 823, 3, 238, 119, 0, 822, 810, 1, 0, 0, 0, 822, 819, 1, 0, 0, 0, 823, 47, 1, 0, 0, 0, 824, 825, 5, 4, 0, 0, 825, 826, 5, 188, 0, 0, 826, 829, 3, 186, 93, 0, 827, 828, 5, 145, 0, 0, 828, 830, 3, 304, 152, 0, 829, 827, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 843, 5, 176, 0, 0, 832, 833, 5, 72, 0, 0, 833, 844, 3, 230, 115, 0, 834, 835, 5, 168, 0, 0, 835, 836, 5, 79, 0, 0, 836, 844, 3, 254, 127, 0, 837, 838, 5, 24, 0, 0, 838, 844, 3, 314, 157, 0, 839, 840, 5, 25, 0, 0, 840, 844, 3, 248, 124, 0, 841, 842, 5, 175, 0, 0, 842, 844, 3, 248, 124, 0, 843, 832, 1, 0, 0, 0, 843, 834, 1, 0, 0, 0, 843, 837, 1, 0, 0, 0, 843, 839, 1, 0, 0, 0, 843, 841, 1, 0, 0, 0, 844, 49, 1, 0, 0, 0, 845, 846, 5, 4, 0, 0, 846, 847, 5, 188, 0, 0, 847, 848, 3, 186, 93, 0, 848, 849, 5, 155, 0, 0, 849, 850, 5, 146, 0, 0, 850, 51, 1, 0, 0, 0, 851, 852, 5, 4, 0, 0, 852, 853, 5, 188, 0, 0, 853, 854, 3, 186, 93, 0, 854, 856, 5, 58, 0, 0, 855, 857, 3, 170, 85, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 866, 1, 0, 0, 0, 858, 859, 5, 145, 0, 0, 859, 861, 3, 304, 152, 0, 860, 862, 5, 22, 0, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 867, 1, 0, 0, 0, 863, 864, 5, 154, 0, 0, 864, 865, 5, 145, 0, 0, 865, 867, 3, 238, 119, 0, 866, 858, 1, 0, 0, 0, 866, 863, 1, 0, 0, 0, 867, 53, 1, 0, 0, 0, 868, 869, 5, 4, 0, 0, 869, 870, 5, 212, 0, 0, 870, 872, 3, 188, 94, 0, 871, 873, 3, 202, 101, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 9, 0, 0, 875, 876, 3, 204, 102, 0, 876, 55, 1, 0, 0, 0, 877, 878, 5, 4, 0, 0, 878, 879, 5, 212, 0, 0, 879, 880, 3, 188, 94, 0, 880, 881, 5, 156, 0, 0, 881, 882, 5, 193, 0, 0, 882, 883, 3, 188, 94, 0, 883, 57, 1, 0, 0, 0, 884, 885, 5, 4, 0, 0, 885, 886, 5, 212, 0, 0, 886, 887, 3, 188, 94, 0, 887, 888, 5, 176, 0, 0, 888, 889, 5, 142, 0, 0, 889, 890, 7, 1, 0, 0, 890, 891, 3, 354, 177, 0, 891, 59, 1, 0, 0, 0, 892, 893, 5, 4, 0, 0, 893, 894, 5, 188, 0, 0, 894, 895, 3, 186, 93, 0, 895, 896, 5, 156, 0, 0, 896, 897, 5, 193, 0, 0, 897, 898, 3, 186, 93, 0, 898, 61, 1, 0, 0, 0, 899, 900, 5, 4, 0, 0, 900, 901, 5, 212, 0, 0, 901, 902, 3, 188, 94, 0, 902, 903, 7, 2, 0, 0, 903, 904, 5, 25, 0, 0, 904, 905, 3, 248, 124, 0, 905, 63, 1, 0, 0, 0, 906, 908, 5, 196, 0, 0, 907, 909, 5, 188, 0, 0, 908, 907, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 1, 0, 0, 0, 910, 912, 3, 170, 85, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 3, 186, 93, 0, 914, 65, 1, 0, 0, 0, 915, 917, 5, 56, 0, 0, 916, 918, 5, 46, 0, 0, 917, 916, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 920, 1, 0, 0, 0, 919, 921, 7, 3, 0, 0, 920, 919, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 3, 354, 177, 0, 923, 67, 1, 0, 0, 0, 924, 927, 3, 70, 35, 0, 925, 927, 3, 72, 36, 0, 926, 924, 1, 0, 0, 0, 926, 925, 1, 0, 0, 0, 927, 69, 1, 0, 0, 0, 928, 929, 5, 36, 0, 0, 929, 930, 5, 182, 0, 0, 930, 932, 3, 186, 93, 0, 931, 933, 3, 292, 146, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 946, 1, 0, 0, 0, 934, 935, 5, 190, 0, 0, 935, 936, 5, 185, 0, 0, 936, 937, 5, 265, 0, 0, 937, 938, 3, 360, 180, 0, 938, 944, 5, 266, 0, 0, 939, 940, 5, 157, 0, 0, 940, 941, 5, 265, 0, 0, 941, 942, 3, 360, 180, 0, 942, 943, 5, 266, 0, 0, 943, 945, 1, 0, 0, 0, 944, 939, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 947, 1, 0, 0, 0, 946, 934, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 71, 1, 0, 0, 0, 948, 949, 5, 36, 0, 0, 949, 950, 5, 96, 0, 0, 950, 951, 5, 182, 0, 0, 951, 957, 3, 186, 93, 0, 952, 953, 5, 145, 0, 0, 953, 954, 5, 265, 0, 0, 954, 955, 3, 304, 152, 0, 955, 956, 5, 266, 0, 0, 956, 958, 1, 0, 0, 0, 957, 952, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 73, 1, 0, 0, 0, 959, 966, 3, 86, 43, 0, 960, 966, 3, 84, 42, 0, 961, 966, 3, 82, 41, 0, 962, 966, 3, 78, 39, 0, 963, 966, 3, 80, 40, 0, 964, 966, 3, 76, 38, 0, 965, 959, 1, 0, 0, 0, 965, 960, 1, 0, 0, 0, 965, 961, 1, 0, 0, 0, 965, 962, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 965, 964, 1, 0, 0, 0, 966, 75, 1, 0, 0, 0, 967, 968, 5, 58, 0, 0, 968, 970, 7, 0, 0, 0, 969, 971, 3, 170, 85, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 3, 184, 92, 0, 973, 975, 7, 4, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 77, 1, 0, 0, 0, 976, 977, 5, 58, 0, 0, 977, 979, 5, 212, 0, 0, 978, 980, 3, 170, 85, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 3, 188, 94, 0, 982, 79, 1, 0, 0, 0, 983, 984, 5, 58, 0, 0, 984, 986, 5, 188, 0, 0, 985, 987, 3, 170, 85, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 3, 186, 93, 0, 989, 991, 5, 22, 0, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 81, 1, 0, 0, 0, 992, 994, 5, 58, 0, 0, 993, 995, 5, 96, 0, 0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 5, 182, 0, 0, 997, 1000, 3, 186, 93, 0, 998, 999, 5, 145, 0, 0, 999, 1001, 3, 304, 152, 0, 1000, 998, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 83, 1, 0, 0, 0, 1002, 1004, 5, 58, 0, 0, 1003, 1005, 5, 12, 0, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1008, 5, 84, 0, 0, 1007, 1009, 3, 170, 85, 0, 1008, 1007, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 1023, 3, 190, 95, 0, 1011, 1020, 5, 265, 0, 0, 1012, 1017, 3, 328, 164, 0, 1013, 1014, 5, 263, 0, 0, 1014, 1016, 3, 328, 164, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1021, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1012, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1024, 5, 266, 0, 0, 1023, 1011, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 85, 1, 0, 0, 0, 1025, 1026, 5, 58, 0, 0, 1026, 1027, 5, 166, 0, 0, 1027, 1028, 3, 358, 179, 0, 1028, 87, 1, 0, 0, 0, 1029, 1032, 3, 90, 45, 0, 1030, 1032, 3, 92, 46, 0, 1031, 1029, 1, 0, 0, 0, 1031, 1030, 1, 0, 0, 0, 1032, 89, 1, 0, 0, 0, 1033, 1034, 5, 86, 0, 0, 1034, 1035, 5, 166, 0, 0, 1035, 1036, 3, 358, 179, 0, 1036, 1037, 5, 193, 0, 0, 1037, 1038, 5, 87, 0, 0, 1038, 1039, 3, 358, 179, 0, 1039, 91, 1, 0, 0, 0, 1040, 1041, 5, 86, 0, 0, 1041, 1042, 3, 350, 175, 0, 1042, 1043, 5, 136, 0, 0, 1043, 1045, 3, 352, 176, 0, 1044, 1046, 3, 354, 177, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 5, 193, 0, 0, 1048, 1049, 3, 356, 178, 0, 1049, 93, 1, 0, 0, 0, 1050, 1053, 3, 96, 48, 0, 1051, 1053, 3, 98, 49, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1051, 1, 0, 0, 0, 1053, 95, 1, 0, 0, 0, 1054, 1055, 5, 161, 0, 0, 1055, 1056, 5, 166, 0, 0, 1056, 1057, 3, 358, 179, 0, 1057, 1058, 5, 82, 0, 0, 1058, 1059, 5, 87, 0, 0, 1059, 1060, 3, 358, 179, 0, 1060, 97, 1, 0, 0, 0, 1061, 1065, 5, 161, 0, 0, 1062, 1063, 5, 86, 0, 0, 1063, 1064, 5, 137, 0, 0, 1064, 1066, 5, 78, 0, 0, 1065, 1062, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 3, 350, 175, 0, 1068, 1069, 5, 136, 0, 0, 1069, 1071, 3, 352, 176, 0, 1070, 1072, 3, 354, 177, 0, 1071, 1070, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1079, 5, 82, 0, 0, 1074, 1080, 3, 356, 178, 0, 1075, 1077, 5, 166, 0, 0, 1076, 1075, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1080, 3, 358, 179, 0, 1079, 1074, 1, 0, 0, 0, 1079, 1076, 1, 0, 0, 0, 1080, 99, 1, 0, 0, 0, 1081, 1083, 3, 206, 103, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 5, 99, 0, 0, 1085, 1087, 7, 5, 0, 0, 1086, 1088, 5, 188, 0, 0, 1087, 1086, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1091, 3, 186, 93, 0, 1090, 1092, 3, 292, 146, 0, 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1105, 1, 0, 0, 0, 1093, 1094, 5, 145, 0, 0, 1094, 1095, 5, 265, 0, 0, 1095, 1100, 3, 304, 152, 0, 1096, 1097, 5, 263, 0, 0, 1097, 1099, 3, 304, 152, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1102, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1100, 1101, 1, 0, 0, 0, 1101, 1103, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1103, 1104, 5, 266, 0, 0, 1104, 1106, 1, 0, 0, 0, 1105, 1093, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 3, 204, 102, 0, 1108, 101, 1, 0, 0, 0, 1109, 1112, 3, 104, 52, 0, 1110, 1112, 3, 106, 53, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 103, 1, 0, 0, 0, 1113, 1115, 5, 50, 0, 0, 1114, 1116, 5, 82, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1120, 3, 186, 93, 0, 1118, 1119, 5, 215, 0, 0, 1119, 1121, 3, 306, 153, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 105, 1, 0, 0, 0, 1122, 1123, 5, 50, 0, 0, 1123, 1128, 3, 186, 93, 0, 1124, 1126, 5, 9, 0, 0, 1125, 1124, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1129, 3, 358, 179, 0, 1128, 1125, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1139, 5, 82, 0, 0, 1131, 1136, 3, 280, 140, 0, 1132, 1133, 5, 263, 0, 0, 1133, 1135, 3, 280, 140, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1138, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1143, 1, 0, 0, 0, 1141, 1142, 5, 215, 0, 0, 1142, 1144, 3, 306, 153, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 107, 1, 0, 0, 0, 1145, 1146, 5, 54, 0, 0, 1146, 1147, 3, 186, 93, 0, 1147, 1148, 5, 176, 0, 0, 1148, 1158, 3, 198, 99, 0, 1149, 1150, 5, 82, 0, 0, 1150, 1155, 3, 280, 140, 0, 1151, 1152, 5, 263, 0, 0, 1152, 1154, 3, 280, 140, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1149, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1161, 5, 215, 0, 0, 1161, 1163, 3, 306, 153, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 109, 1, 0, 0, 0, 1164, 1165, 5, 207, 0, 0, 1165, 1167, 5, 103, 0, 0, 1166, 1168, 5, 188, 0, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1171, 3, 186, 93, 0, 1170, 1172, 3, 292, 146, 0, 1171, 1170, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 3, 204, 102, 0, 1174, 111, 1, 0, 0, 0, 1175, 1188, 3, 132, 66, 0, 1176, 1188, 3, 134, 67, 0, 1177, 1188, 3, 136, 68, 0, 1178, 1188, 3, 130, 65, 0, 1179, 1188, 3, 128, 64, 0, 1180, 1188, 3, 126, 63, 0, 1181, 1188, 3, 124, 62, 0, 1182, 1188, 3, 122, 61, 0, 1183, 1188, 3, 120, 60, 0, 1184, 1188, 3, 118, 59, 0, 1185, 1188, 3, 116, 58, 0, 1186, 1188, 3, 114, 57, 0, 1187, 1175, 1, 0, 0, 0, 1187, 1176, 1, 0, 0, 0, 1187, 1177, 1, 0, 0, 0, 1187, 1178, 1, 0, 0, 0, 1187, 1179, 1, 0, 0, 0, 1187, 1180, 1, 0, 0, 0, 1187, 1181, 1, 0, 0, 0, 1187, 1182, 1, 0, 0, 0, 1187, 1183, 1, 0, 0, 0, 1187, 1184, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1186, 1, 0, 0, 0, 1188, 113, 1, 0, 0, 0, 1189, 1190, 5, 179, 0, 0, 1190, 1202, 7, 6, 0, 0, 1191, 1193, 5, 115, 0, 0, 1192, 1191, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1199, 3, 314, 157, 0, 1195, 1196, 5, 271, 0, 0, 1196, 1198, 3, 314, 157, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 115, 1, 0, 0, 0, 1204, 1205, 5, 179, 0, 0, 1205, 1208, 5, 189, 0, 0, 1206, 1207, 5, 94, 0, 0, 1207, 1209, 3, 186, 93, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1221, 1, 0, 0, 0, 1210, 1212, 5, 115, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1218, 3, 314, 157, 0, 1214, 1215, 5, 271, 0, 0, 1215, 1217, 3, 314, 157, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1220, 1, 0, 0, 0, 1218, 1216, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1221, 1211, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 117, 1, 0, 0, 0, 1223, 1225, 5, 179, 0, 0, 1224, 1226, 7, 7, 0, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1230, 5, 85, 0, 0, 1228, 1229, 5, 94, 0, 0, 1229, 1231, 3, 184, 92, 0, 1230, 1228, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1243, 1, 0, 0, 0, 1232, 1234, 5, 115, 0, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1240, 3, 314, 157, 0, 1236, 1237, 5, 271, 0, 0, 1237, 1239, 3, 314, 157, 0, 1238, 1236, 1, 0, 0, 0, 1239, 1242, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1244, 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1233, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 119, 1, 0, 0, 0, 1245, 1246, 5, 179, 0, 0, 1246, 1247, 5, 37, 0, 0, 1247, 1248, 5, 188, 0, 0, 1248, 1249, 3, 186, 93, 0, 1249, 121, 1, 0, 0, 0, 1250, 1251, 5, 179, 0, 0, 1251, 1252, 5, 37, 0, 0, 1252, 1253, 5, 212, 0, 0, 1253, 1254, 3, 188, 94, 0, 1254, 123, 1, 0, 0, 0, 1255, 1256, 5, 179, 0, 0, 1256, 1257, 5, 188, 0, 0, 1257, 1258, 5, 182, 0, 0, 1258, 1259, 3, 186, 93, 0, 1259, 125, 1, 0, 0, 0, 1260, 1261, 5, 179, 0, 0, 1261, 1262, 5, 32, 0, 0, 1262, 1263, 5, 182, 0, 0, 1263, 1264, 3, 186, 93, 0, 1264, 127, 1, 0, 0, 0, 1265, 1267, 5, 179, 0, 0, 1266, 1268, 5, 154, 0, 0, 1267, 1266, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 5, 146, 0, 0, 1270, 1271, 3, 186, 93, 0, 1271, 129, 1, 0, 0, 0, 1272, 1273, 5, 179, 0, 0, 1273, 1274, 5, 73, 0, 0, 1274, 1275, 5, 94, 0, 0, 1275, 1285, 3, 186, 93, 0, 1276, 1277, 5, 145, 0, 0, 1277, 1278, 5, 265, 0, 0, 1278, 1281, 3, 304, 152, 0, 1279, 1280, 5, 263, 0, 0, 1280, 1282, 3, 304, 152, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 5, 266, 0, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1276, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 131, 1, 0, 0, 0, 1287, 1289, 5, 179, 0, 0, 1288, 1290, 5, 39, 0, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 5, 167, 0, 0, 1292, 133, 1, 0, 0, 0, 1293, 1294, 5, 179, 0, 0, 1294, 1295, 5, 166, 0, 0, 1295, 1296, 5, 86, 0, 0, 1296, 1297, 5, 87, 0, 0, 1297, 1298, 3, 358, 179, 0, 1298, 135, 1, 0, 0, 0, 1299, 1314, 3, 138, 69, 0, 1300, 1314, 3, 140, 70, 0, 1301, 1314, 3, 142, 71, 0, 1302, 1303, 5, 179, 0, 0, 1303, 1304, 5, 86, 0, 0, 1304, 1305, 7, 8, 0, 0, 1305, 1311, 3, 358, 179, 0, 1306, 1307, 5, 136, 0, 0, 1307, 1309, 7, 9, 0, 0, 1308, 1310, 3, 354, 177, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1306, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1299, 1, 0, 0, 0, 1313, 1300, 1, 0, 0, 0, 1313, 1301, 1, 0, 0, 0, 1313, 1302, 1, 0, 0, 0, 1314, 137, 1, 0, 0, 0, 1315, 1316, 5, 179, 0, 0, 1316, 1317, 5, 86, 0, 0, 1317, 1318, 7, 8, 0, 0, 1318, 1324, 3, 358, 179, 0, 1319, 1320, 5, 136, 0, 0, 1320, 1322, 5, 46, 0, 0, 1321, 1323, 3, 184, 92, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1319, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 139, 1, 0, 0, 0, 1326, 1327, 5, 179, 0, 0, 1327, 1328, 5, 86, 0, 0, 1328, 1329, 7, 8, 0, 0, 1329, 1335, 3, 358, 179, 0, 1330, 1331, 5, 136, 0, 0, 1331, 1333, 5, 188, 0, 0, 1332, 1334, 3, 186, 93, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 1, 0, 0, 0, 1335, 1330, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 141, 1, 0, 0, 0, 1337, 1338, 5, 179, 0, 0, 1338, 1339, 5, 86, 0, 0, 1339, 1340, 7, 8, 0, 0, 1340, 1346, 3, 358, 179, 0, 1341, 1342, 5, 136, 0, 0, 1342, 1344, 5, 32, 0, 0, 1343, 1345, 3, 192, 96, 0, 1344, 1343, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1341, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 143, 1, 0, 0, 0, 1348, 1352, 3, 146, 73, 0, 1349, 1352, 3, 148, 74, 0, 1350, 1352, 3, 150, 75, 0, 1351, 1348, 1, 0, 0, 0, 1351, 1349, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 145, 1, 0, 0, 0, 1353, 1354, 5, 34, 0, 0, 1354, 1355, 5, 136, 0, 0, 1355, 1356, 5, 46, 0, 0, 1356, 1357, 3, 184, 92, 0, 1357, 1360, 5, 108, 0, 0, 1358, 1361, 3, 314, 157, 0, 1359, 1361, 5, 133, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 147, 1, 0, 0, 0, 1362, 1363, 5, 34, 0, 0, 1363, 1364, 5, 136, 0, 0, 1364, 1365, 5, 188, 0, 0, 1365, 1366, 3, 186, 93, 0, 1366, 1369, 5, 108, 0, 0, 1367, 1370, 3, 314, 157, 0, 1368, 1370, 5, 133, 0, 0, 1369, 1367, 1, 0, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 149, 1, 0, 0, 0, 1371, 1372, 5, 34, 0, 0, 1372, 1373, 5, 136, 0, 0, 1373, 1374, 5, 32, 0, 0, 1374, 1375, 3, 192, 96, 0, 1375, 1378, 5, 108, 0, 0, 1376, 1379, 3, 314, 157, 0, 1377, 1379, 5, 133, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 151, 1, 0, 0, 0, 1380, 1381, 5, 67, 0, 0, 1381, 1382, 3, 4, 2, 0, 1382, 153, 1, 0, 0, 0, 1383, 1389, 5, 176, 0, 0, 1384, 1390, 5, 2, 0, 0, 1385, 1386, 3, 358, 179, 0, 1386, 1387, 5, 249, 0, 0, 1387, 1388, 3, 304, 152, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1384, 1, 0, 0, 0, 1389, 1385, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 155, 1, 0, 0, 0, 1391, 1392, 5, 264, 0, 0, 1392, 1393, 5, 180, 0, 0, 1393, 1403, 5, 265, 0, 0, 1394, 1396, 3, 314, 157, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1404, 1, 0, 0, 0, 1397, 1400, 3, 314, 157, 0, 1398, 1399, 5, 263, 0, 0, 1399, 1401, 3, 304, 152, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1404, 3, 304, 152, 0, 1403, 1395, 1, 0, 0, 0, 1403, 1397, 1, 0, 0, 0, 1403, 1402, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 266, 0, 0, 1406, 157, 1, 0, 0, 0, 1407, 1408, 5, 107, 0, 0, 1408, 1409, 5, 121, 0, 0, 1409, 1410, 3, 186, 93, 0, 1410, 159, 1, 0, 0, 0, 1411, 1412, 5, 118, 0, 0, 1412, 1413, 5, 45, 0, 0, 1413, 1414, 5, 98, 0, 0, 1414, 1416, 5, 274, 0, 0, 1415, 1417, 5, 144, 0, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1419, 5, 103, 0, 0, 1419, 1420, 5, 188, 0, 0, 1420, 1430, 3, 186, 93, 0, 1421, 1422, 5, 145, 0, 0, 1422, 1423, 5, 265, 0, 0, 1423, 1426, 3, 304, 152, 0, 1424, 1425, 5, 263, 0, 0, 1425, 1427, 3, 304, 152, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 5, 266, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1421, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 161, 1, 0, 0, 0, 1432, 1436, 3, 164, 82, 0, 1433, 1436, 3, 166, 83, 0, 1434, 1436, 3, 168, 84, 0, 1435, 1432, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1435, 1434, 1, 0, 0, 0, 1436, 163, 1, 0, 0, 0, 1437, 1438, 5, 162, 0, 0, 1438, 1451, 3, 186, 93, 0, 1439, 1440, 5, 145, 0, 0, 1440, 1441, 5, 265, 0, 0, 1441, 1446, 3, 304, 152, 0, 1442, 1443, 5, 263, 0, 0, 1443, 1445, 3, 304, 152, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1448, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1447, 1449, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1449, 1450, 5, 266, 0, 0, 1450, 1452, 1, 0, 0, 0, 1451, 1439, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 165, 1, 0, 0, 0, 1453, 1454, 5, 162, 0, 0, 1454, 1455, 5, 13, 0, 0, 1455, 167, 1, 0, 0, 0, 1456, 1457, 5, 162, 0, 0, 1457, 1458, 5, 85, 0, 0, 1458, 1459, 3, 190, 95, 0, 1459, 169, 1, 0, 0, 0, 1460, 1461, 5, 93, 0, 0, 1461, 1462, 5, 66, 0, 0, 1462, 171, 1, 0, 0, 0, 1463, 1464, 5, 93, 0, 0, 1464, 1465, 5, 132, 0, 0, 1465, 1466, 5, 66, 0, 0, 1466, 173, 1, 0, 0, 0, 1467, 1468, 3, 354, 177, 0, 1468, 175, 1, 0, 0, 0, 1469, 1470, 3, 354, 177, 0, 1470, 177, 1, 0, 0, 0, 1471, 1472, 3, 354, 177, 0, 1472, 179, 1, 0, 0, 0, 1473, 1474, 3, 354, 177, 0, 1474, 181, 1, 0, 0, 0, 1475, 1476, 3, 354, 177, 0, 1476, 183, 1, 0, 0, 0, 1477, 1478, 3, 354, 177, 0, 1478, 185, 1, 0, 0, 0, 1479, 1484, 3, 358, 179, 0, 1480, 1481, 5, 261, 0, 0, 1481, 1483, 3, 358, 179, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 187, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1492, 3, 358, 179, 0, 1488, 1489, 5, 261, 0, 0, 1489, 1491, 3, 358, 179, 0, 1490, 1488, 1, 0, 0, 0, 1491, 1494, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 189, 1, 0, 0, 0, 1494, 1492, 1, 0, 0, 0, 1495, 1498, 3, 362, 181, 0, 1496, 1498, 3, 354, 177, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1496, 1, 0, 0, 0, 1498, 191, 1, 0, 0, 0, 1499, 1502, 3, 354, 177, 0, 1500, 1502, 4, 96, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1500, 1, 0, 0, 0, 1502, 193, 1, 0, 0, 0, 1503, 1506, 3, 186, 93, 0, 1504, 1506, 3, 188, 94, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1504, 1, 0, 0, 0, 1506, 195, 1, 0, 0, 0, 1507, 1508, 5, 21, 0, 0, 1508, 1509, 5, 26, 0, 0, 1509, 1511, 3, 292, 146, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1514, 1, 0, 0, 0, 1512, 1513, 5, 34, 0, 0, 1513, 1515, 3, 314, 157, 0, 1514, 1512, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1519, 1, 0, 0, 0, 1516, 1517, 5, 168, 0, 0, 1517, 1518, 5, 79, 0, 0, 1518, 1520, 3, 254, 127, 0, 1519, 1516, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1524, 1, 0, 0, 0, 1521, 1522, 5, 216, 0, 0, 1522, 1523, 5, 175, 0, 0, 1523, 1525, 3, 248, 124, 0, 1524, 1521, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1529, 1, 0, 0, 0, 1526, 1527, 5, 23, 0, 0, 1527, 1528, 5, 9, 0, 0, 1528, 1530, 3, 230, 115, 0, 1529, 1526, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1532, 5, 24, 0, 0, 1532, 1534, 3, 314, 157, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1545, 1, 0, 0, 0, 1535, 1536, 5, 30, 0, 0, 1536, 1537, 5, 94, 0, 0, 1537, 1542, 3, 354, 177, 0, 1538, 1539, 5, 216, 0, 0, 1539, 1540, 5, 151, 0, 0, 1540, 1541, 5, 249, 0, 0, 1541, 1543, 5, 277, 0, 0, 1542, 1538, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1546, 1, 0, 0, 0, 1544, 1546, 5, 197, 0, 0, 1545, 1535, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1548, 5, 25, 0, 0, 1548, 1550, 3, 248, 124, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 197, 1, 0, 0, 0, 1551, 1556, 3, 200, 100, 0, 1552, 1553, 5, 263, 0, 0, 1553, 1555, 3, 200, 100, 0, 1554, 1552, 1, 0, 0, 0, 1555, 1558, 1, 0, 0, 0, 1556, 1554, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 199, 1, 0, 0, 0, 1558, 1556, 1, 0, 0, 0, 1559, 1560, 3, 354, 177, 0, 1560, 1561, 5, 249, 0, 0, 1561, 1562, 3, 304, 152, 0, 1562, 201, 1, 0, 0, 0, 1563, 1564, 5, 265, 0, 0, 1564, 1567, 3, 182, 91, 0, 1565, 1566, 5, 34, 0, 0, 1566, 1568, 3, 314, 157, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1577, 1, 0, 0, 0, 1569, 1570, 5, 263, 0, 0, 1570, 1573, 3, 182, 91, 0, 1571, 1572, 5, 34, 0, 0, 1572, 1574, 3, 314, 157, 0, 1573, 1571, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1569, 1, 0, 0, 0, 1576, 1579, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1580, 1, 0, 0, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1581, 5, 266, 0, 0, 1581, 203, 1, 0, 0, 0, 1582, 1584, 3, 206, 103, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1586, 3, 258, 129, 0, 1586, 205, 1, 0, 0, 0, 1587, 1588, 5, 216, 0, 0, 1588, 1593, 3, 274, 137, 0, 1589, 1590, 5, 263, 0, 0, 1590, 1592, 3, 274, 137, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 207, 1, 0, 0, 0, 1595, 1593, 1, 0, 0, 0, 1596, 1597, 5, 150, 0, 0, 1597, 1598, 5, 110, 0, 0, 1598, 1600, 3, 292, 146, 0, 1599, 1601, 5, 53, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1605, 1, 0, 0, 0, 1602, 1606, 5, 225, 0, 0, 1603, 1604, 5, 263, 0, 0, 1604, 1606, 5, 225, 0, 0, 1605, 1602, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1610, 1, 0, 0, 0, 1607, 1611, 5, 226, 0, 0, 1608, 1609, 5, 263, 0, 0, 1609, 1611, 5, 226, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1624, 1, 0, 0, 0, 1612, 1613, 5, 263, 0, 0, 1613, 1616, 3, 210, 105, 0, 1614, 1616, 3, 210, 105, 0, 1615, 1612, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0, 1616, 1621, 1, 0, 0, 0, 1617, 1618, 5, 263, 0, 0, 1618, 1620, 3, 210, 105, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1625, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1615, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 209, 1, 0, 0, 0, 1626, 1627, 5, 81, 0, 0, 1627, 1628, 5, 110, 0, 0, 1628, 1629, 3, 292, 146, 0, 1629, 1630, 5, 224, 0, 0, 1630, 1631, 3, 186, 93, 0, 1631, 1633, 3, 292, 146, 0, 1632, 1634, 5, 53, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1637, 5, 225, 0, 0, 1636, 1635, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1640, 5, 226, 0, 0, 1639, 1638, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 211, 1, 0, 0, 0, 1641, 1642, 3, 192, 96, 0, 1642, 1645, 3, 328, 164, 0, 1643, 1644, 5, 34, 0, 0, 1644, 1646, 3, 314, 157, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 213, 1, 0, 0, 0, 1647, 1648, 3, 182, 91, 0, 1648, 1651, 3, 328, 164, 0, 1649, 1650, 5, 34, 0, 0, 1650, 1652, 3, 314, 157, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 215, 1, 0, 0, 0, 1653, 1654, 3, 218, 109, 0, 1654, 217, 1, 0, 0, 0, 1655, 1656, 3, 182, 91, 0, 1656, 1664, 3, 328, 164, 0, 1657, 1661, 3, 224, 112, 0, 1658, 1660, 3, 224, 112, 0, 1659, 1658, 1, 0, 0, 0, 1660, 1663, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1661, 1659, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1664, 1657, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1668, 1, 0, 0, 0, 1666, 1667, 5, 34, 0, 0, 1667, 1669, 3, 314, 157, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1672, 1, 0, 0, 0, 1670, 1671, 5, 150, 0, 0, 1671, 1673, 5, 110, 0, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 219, 1, 0, 0, 0, 1674, 1676, 3, 212, 106, 0, 1675, 1674, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1684, 1, 0, 0, 0, 1677, 1681, 3, 224, 112, 0, 1678, 1680, 3, 224, 112, 0, 1679, 1678, 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1684, 1677, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 221, 1, 0, 0, 0, 1686, 1687, 3, 182, 91, 0, 1687, 1690, 3, 328, 164, 0, 1688, 1689, 5, 34, 0, 0, 1689, 1691, 3, 314, 157, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1699, 1, 0, 0, 0, 1692, 1696, 3, 224, 112, 0, 1693, 1695, 3, 224, 112, 0, 1694, 1693, 1, 0, 0, 0, 1695, 1698, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1696, 1694, 1, 0, 0, 0, 1697, 1700, 1, 0, 0, 0, 1698, 1696, 1, 0, 0, 0, 1699, 1692, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 223, 1, 0, 0, 0, 1701, 1703, 5, 132, 0, 0, 1702, 1701, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1707, 5, 133, 0, 0, 1705, 1707, 3, 226, 113, 0, 1706, 1702, 1, 0, 0, 0, 1706, 1705, 1, 0, 0, 0, 1707, 225, 1, 0, 0, 0, 1708, 1709, 5, 60, 0, 0, 1709, 1717, 3, 304, 152, 0, 1710, 1711, 5, 35, 0, 0, 1711, 1717, 3, 304, 152, 0, 1712, 1713, 5, 51, 0, 0, 1713, 1717, 3, 304, 152, 0, 1714, 1715, 5, 16, 0, 0, 1715, 1717, 3, 360, 180, 0, 1716, 1708, 1, 0, 0, 0, 1716, 1710, 1, 0, 0, 0, 1716, 1712, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1717, 227, 1, 0, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 229, 1, 0, 0, 0, 1720, 1721, 7, 11, 0, 0, 1721, 231, 1, 0, 0, 0, 1722, 1727, 3, 234, 117, 0, 1723, 1724, 5, 263, 0, 0, 1724, 1726, 3, 234, 117, 0, 1725, 1723, 1, 0, 0, 0, 1726, 1729, 1, 0, 0, 0, 1727, 1728, 1, 0, 0, 0, 1727, 1725, 1, 0, 0, 0, 1728, 1732, 1, 0, 0, 0, 1729, 1727, 1, 0, 0, 0, 1730, 1731, 5, 263, 0, 0, 1731, 1733, 3, 236, 118, 0, 1732, 1730, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1736, 3, 236, 118, 0, 1735, 1722, 1, 0, 0, 0, 1735, 1734, 1, 0, 0, 0, 1736, 233, 1, 0, 0, 0, 1737, 1739, 5, 89, 0, 0, 1738, 1740, 3, 292, 146, 0, 1739, 1738, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 5, 146, 0, 0, 1742, 1743, 3, 360, 180, 0, 1743, 235, 1, 0, 0, 0, 1744, 1746, 5, 154, 0, 0, 1745, 1747, 3, 292, 146, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 5, 265, 0, 0, 1749, 1750, 5, 145, 0, 0, 1750, 1756, 3, 238, 119, 0, 1751, 1752, 5, 263, 0, 0, 1752, 1753, 5, 145, 0, 0, 1753, 1755, 3, 238, 119, 0, 1754, 1751, 1, 0, 0, 0, 1755, 1758, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1757, 1759, 1, 0, 0, 0, 1758, 1756, 1, 0, 0, 0, 1759, 1760, 5, 266, 0, 0, 1760, 237, 1, 0, 0, 0, 1761, 1762, 5, 210, 0, 0, 1762, 1763, 3, 244, 122, 0, 1763, 1764, 3, 304, 152, 0, 1764, 1777, 1, 0, 0, 0, 1765, 1766, 3, 304, 152, 0, 1766, 1767, 3, 242, 121, 0, 1767, 1769, 1, 0, 0, 0, 1768, 1765, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1774, 5, 211, 0, 0, 1771, 1772, 3, 242, 121, 0, 1772, 1773, 3, 304, 152, 0, 1773, 1775, 1, 0, 0, 0, 1774, 1771, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1777, 1, 0, 0, 0, 1776, 1761, 1, 0, 0, 0, 1776, 1768, 1, 0, 0, 0, 1777, 239, 1, 0, 0, 0, 1778, 1779, 5, 30, 0, 0, 1779, 1780, 5, 94, 0, 0, 1780, 1785, 3, 358, 179, 0, 1781, 1782, 5, 216, 0, 0, 1782, 1783, 5, 151, 0, 0, 1783, 1784, 5, 249, 0, 0, 1784, 1786, 3, 360, 180, 0, 1785, 1781, 1, 0, 0, 0, 1785, 1786, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1789, 5, 197, 0, 0, 1788, 1778, 1, 0, 0, 0, 1788, 1787, 1, 0, 0, 0, 1789, 241, 1, 0, 0, 0, 1790, 1796, 1, 0, 0, 0, 1791, 1796, 5, 251, 0, 0, 1792, 1796, 5, 252, 0, 0, 1793, 1796, 5, 253, 0, 0, 1794, 1796, 5, 254, 0, 0, 1795, 1790, 1, 0, 0, 0, 1795, 1791, 1, 0, 0, 0, 1795, 1792, 1, 0, 0, 0, 1795, 1793, 1, 0, 0, 0, 1795, 1794, 1, 0, 0, 0, 1796, 243, 1, 0, 0, 0, 1797, 1806, 5, 249, 0, 0, 1798, 1806, 5, 250, 0, 0, 1799, 1806, 5, 115, 0, 0, 1800, 1806, 5, 164, 0, 0, 1801, 1806, 5, 163, 0, 0, 1802, 1806, 5, 15, 0, 0, 1803, 1806, 5, 94, 0, 0, 1804, 1806, 3, 242, 121, 0, 1805, 1797, 1, 0, 0, 0, 1805, 1798, 1, 0, 0, 0, 1805, 1799, 1, 0, 0, 0, 1805, 1800, 1, 0, 0, 0, 1805, 1801, 1, 0, 0, 0, 1805, 1802, 1, 0, 0, 0, 1805, 1803, 1, 0, 0, 0, 1805, 1804, 1, 0, 0, 0, 1806, 245, 1, 0, 0, 0, 1807, 1808, 5, 115, 0, 0, 1808, 1811, 3, 354, 177, 0, 1809, 1810, 7, 12, 0, 0, 1810, 1812, 5, 153, 0, 0, 1811, 1809, 1, 0, 0, 0, 1811, 1812, 1, 0, 0, 0, 1812, 247, 1, 0, 0, 0, 1813, 1814, 5, 265, 0, 0, 1814, 1819, 3, 256, 128, 0, 1815, 1816, 5, 263, 0, 0, 1816, 1818, 3, 256, 128, 0, 1817, 1815, 1, 0, 0, 0, 1818, 1821, 1, 0, 0, 0, 1819, 1817, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1822, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1822, 1823, 5, 266, 0, 0, 1823, 249, 1, 0, 0, 0, 1824, 1825, 5, 265, 0, 0, 1825, 1830, 3, 212, 106, 0, 1826, 1827, 5, 263, 0, 0, 1827, 1829, 3, 212, 106, 0, 1828, 1826, 1, 0, 0, 0, 1829, 1832, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1830, 1, 0, 0, 0, 1833, 1834, 5, 266, 0, 0, 1834, 251, 1, 0, 0, 0, 1835, 1840, 3, 304, 152, 0, 1836, 1837, 5, 263, 0, 0, 1837, 1839, 3, 304, 152, 0, 1838, 1836, 1, 0, 0, 0, 1839, 1842, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 253, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1843, 1853, 5, 52, 0, 0, 1844, 1845, 5, 71, 0, 0, 1845, 1846, 5, 191, 0, 0, 1846, 1847, 5, 26, 0, 0, 1847, 1851, 3, 314, 157, 0, 1848, 1849, 5, 63, 0, 0, 1849, 1850, 5, 26, 0, 0, 1850, 1852, 3, 314, 157, 0, 1851, 1848, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1854, 1, 0, 0, 0, 1853, 1844, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1859, 1, 0, 0, 0, 1855, 1856, 5, 117, 0, 0, 1856, 1857, 5, 191, 0, 0, 1857, 1858, 5, 26, 0, 0, 1858, 1860, 3, 314, 157, 0, 1859, 1855, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 255, 1, 0, 0, 0, 1861, 1864, 3, 358, 179, 0, 1862, 1863, 5, 249, 0, 0, 1863, 1865, 3, 304, 152, 0, 1864, 1862, 1, 0, 0, 0, 1864, 1865, 1, 0, 0, 0, 1865, 257, 1, 0, 0, 0, 1866, 1877, 3, 260, 130, 0, 1867, 1868, 5, 139, 0, 0, 1868, 1869, 5, 26, 0, 0, 1869, 1874, 3, 264, 132, 0, 1870, 1871, 5, 263, 0, 0, 1871, 1873, 3, 264, 132, 0, 1872, 1870, 1, 0, 0, 0, 1873, 1876, 1, 0, 0, 0, 1874, 1872, 1, 0, 0, 0, 1874, 1875, 1, 0, 0, 0, 1875, 1878, 1, 0, 0, 0, 1876, 1874, 1, 0, 0, 0, 1877, 1867, 1, 0, 0, 0, 1877, 1878, 1, 0, 0, 0, 1878, 1885, 1, 0, 0, 0, 1879, 1880, 5, 116, 0, 0, 1880, 1883, 3, 304, 152, 0, 1881, 1882, 5, 135, 0, 0, 1882, 1884, 5, 277, 0, 0, 1883, 1881, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1886, 1, 0, 0, 0, 1885, 1879, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 259, 1, 0, 0, 0, 1887, 1888, 6, 130, -1, 0, 1888, 1889, 3, 262, 131, 0, 1889, 1904, 1, 0, 0, 0, 1890, 1891, 10, 2, 0, 0, 1891, 1893, 5, 100, 0, 0, 1892, 1894, 3, 276, 138, 0, 1893, 1892, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1903, 3, 260, 130, 3, 1896, 1897, 10, 1, 0, 0, 1897, 1899, 7, 13, 0, 0, 1898, 1900, 3, 276, 138, 0, 1899, 1898, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1901, 1, 0, 0, 0, 1901, 1903, 3, 260, 130, 2, 1902, 1890, 1, 0, 0, 0, 1902, 1896, 1, 0, 0, 0, 1903, 1906, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 261, 1, 0, 0, 0, 1906, 1904, 1, 0, 0, 0, 1907, 1924, 3, 266, 133, 0, 1908, 1909, 5, 188, 0, 0, 1909, 1924, 3, 186, 93, 0, 1910, 1911, 5, 211, 0, 0, 1911, 1916, 3, 304, 152, 0, 1912, 1913, 5, 263, 0, 0, 1913, 1915, 3, 304, 152, 0, 1914, 1912, 1, 0, 0, 0, 1915, 1918, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1924, 1, 0, 0, 0, 1918, 1916, 1, 0, 0, 0, 1919, 1920, 5, 265, 0, 0, 1920, 1921, 3, 258, 129, 0, 1921, 1922, 5, 266, 0, 0, 1922, 1924, 1, 0, 0, 0, 1923, 1907, 1, 0, 0, 0, 1923, 1908, 1, 0, 0, 0, 1923, 1910, 1, 0, 0, 0, 1923, 1919, 1, 0, 0, 0, 1924, 263, 1, 0, 0, 0, 1925, 1927, 3, 302, 151, 0, 1926, 1928, 7, 14, 0, 0, 1927, 1926, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1931, 1, 0, 0, 0, 1929, 1930, 5, 134, 0, 0, 1930, 1932, 7, 15, 0, 0, 1931, 1929, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 265, 1, 0, 0, 0, 1933, 1935, 5, 174, 0, 0, 1934, 1936, 3, 276, 138, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1938, 1, 0, 0, 0, 1937, 1939, 5, 183, 0, 0, 1938, 1937, 1, 0, 0, 0, 1938, 1939, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1945, 3, 278, 139, 0, 1941, 1942, 5, 263, 0, 0, 1942, 1944, 3, 278, 139, 0, 1943, 1941, 1, 0, 0, 0, 1944, 1947, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1957, 1, 0, 0, 0, 1947, 1945, 1, 0, 0, 0, 1948, 1949, 5, 82, 0, 0, 1949, 1954, 3, 280, 140, 0, 1950, 1951, 5, 263, 0, 0, 1951, 1953, 3, 280, 140, 0, 1952, 1950, 1, 0, 0, 0, 1953, 1956, 1, 0, 0, 0, 1954, 1952, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1958, 1, 0, 0, 0, 1956, 1954, 1, 0, 0, 0, 1957, 1948, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1961, 1, 0, 0, 0, 1959, 1960, 5, 215, 0, 0, 1960, 1962, 3, 306, 153, 0, 1961, 1959, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1966, 1, 0, 0, 0, 1963, 1964, 5, 87, 0, 0, 1964, 1965, 5, 26, 0, 0, 1965, 1967, 3, 268, 134, 0, 1966, 1963, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1970, 1, 0, 0, 0, 1968, 1969, 5, 90, 0, 0, 1969, 1971, 3, 306, 153, 0, 1970, 1968, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 267, 1, 0, 0, 0, 1972, 1974, 3, 276, 138, 0, 1973, 1972, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1980, 3, 270, 135, 0, 1976, 1977, 5, 263, 0, 0, 1977, 1979, 3, 270, 135, 0, 1978, 1976, 1, 0, 0, 0, 1979, 1982, 1, 0, 0, 0, 1980, 1978, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 269, 1, 0, 0, 0, 1982, 1980, 1, 0, 0, 0, 1983, 1984, 3, 272, 136, 0, 1984, 271, 1, 0, 0, 0, 1985, 1994, 5, 265, 0, 0, 1986, 1991, 3, 302, 151, 0, 1987, 1988, 5, 263, 0, 0, 1988, 1990, 3, 302, 151, 0, 1989, 1987, 1, 0, 0, 0, 1990, 1993, 1, 0, 0, 0, 1991, 1989, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1995, 1, 0, 0, 0, 1993, 1991, 1, 0, 0, 0, 1994, 1986, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1999, 5, 266, 0, 0, 1997, 1999, 3, 302, 151, 0, 1998, 1985, 1, 0, 0, 0, 1998, 1997, 1, 0, 0, 0, 1999, 273, 1, 0, 0, 0, 2000, 2002, 3, 358, 179, 0, 2001, 2003, 3, 292, 146, 0, 2002, 2001, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2005, 5, 9, 0, 0, 2005, 2006, 3, 296, 148, 0, 2006, 275, 1, 0, 0, 0, 2007, 2008, 7, 16, 0, 0, 2008, 277, 1, 0, 0, 0, 2009, 2014, 3, 302, 151, 0, 2010, 2012, 5, 9, 0, 0, 2011, 2010, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 3, 358, 179, 0, 2014, 2011, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2022, 1, 0, 0, 0, 2016, 2017, 3, 354, 177, 0, 2017, 2018, 5, 261, 0, 0, 2018, 2019, 5, 257, 0, 0, 2019, 2022, 1, 0, 0, 0, 2020, 2022, 5, 257, 0, 0, 2021, 2009, 1, 0, 0, 0, 2021, 2016, 1, 0, 0, 0, 2021, 2020, 1, 0, 0, 0, 2022, 279, 1, 0, 0, 0, 2023, 2024, 6, 140, -1, 0, 2024, 2025, 3, 286, 143, 0, 2025, 2039, 1, 0, 0, 0, 2026, 2035, 10, 2, 0, 0, 2027, 2028, 5, 38, 0, 0, 2028, 2029, 5, 109, 0, 0, 2029, 2036, 3, 286, 143, 0, 2030, 2031, 3, 282, 141, 0, 2031, 2032, 5, 109, 0, 0, 2032, 2033, 3, 280, 140, 0, 2033, 2034, 3, 284, 142, 0, 2034, 2036, 1, 0, 0, 0, 2035, 2027, 1, 0, 0, 0, 2035, 2030, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2026, 1, 0, 0, 0, 2038, 2041, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 281, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2042, 2044, 5, 97, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2074, 1, 0, 0, 0, 2045, 2047, 5, 114, 0, 0, 2046, 2048, 5, 97, 0, 0, 2047, 2046, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2074, 1, 0, 0, 0, 2049, 2051, 5, 165, 0, 0, 2050, 2052, 5, 97, 0, 0, 2051, 2050, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2074, 1, 0, 0, 0, 2053, 2055, 5, 114, 0, 0, 2054, 2056, 5, 141, 0, 0, 2055, 2054, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2074, 1, 0, 0, 0, 2057, 2059, 5, 165, 0, 0, 2058, 2060, 5, 141, 0, 0, 2059, 2058, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 2074, 1, 0, 0, 0, 2061, 2063, 5, 83, 0, 0, 2062, 2064, 5, 141, 0, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2074, 1, 0, 0, 0, 2065, 2066, 5, 114, 0, 0, 2066, 2074, 5, 177, 0, 0, 2067, 2068, 5, 165, 0, 0, 2068, 2074, 5, 177, 0, 0, 2069, 2070, 5, 114, 0, 0, 2070, 2074, 5, 7, 0, 0, 2071, 2072, 5, 165, 0, 0, 2072, 2074, 5, 7, 0, 0, 2073, 2043, 1, 0, 0, 0, 2073, 2045, 1, 0, 0, 0, 2073, 2049, 1, 0, 0, 0, 2073, 2053, 1, 0, 0, 0, 2073, 2057, 1, 0, 0, 0, 2073, 2061, 1, 0, 0, 0, 2073, 2065, 1, 0, 0, 0, 2073, 2067, 1, 0, 0, 0, 2073, 2069, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2074, 283, 1, 0, 0, 0, 2075, 2076, 5, 136, 0, 0, 2076, 2090, 3, 306, 153, 0, 2077, 2078, 5, 205, 0, 0, 2078, 2079, 5, 265, 0, 0, 2079, 2084, 3, 358, 179, 0, 2080, 2081, 5, 263, 0, 0, 2081, 2083, 3, 358, 179, 0, 2082, 2080, 1, 0, 0, 0, 2083, 2086, 1, 0, 0, 0, 2084, 2082, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 2087, 1, 0, 0, 0, 2086, 2084, 1, 0, 0, 0, 2087, 2088, 5, 266, 0, 0, 2088, 2090, 1, 0, 0, 0, 2089, 2075, 1, 0, 0, 0, 2089, 2077, 1, 0, 0, 0, 2090, 285, 1, 0, 0, 0, 2091, 2104, 3, 290, 145, 0, 2092, 2093, 5, 190, 0, 0, 2093, 2094, 3, 288, 144, 0, 2094, 2095, 5, 265, 0, 0, 2095, 2096, 3, 304, 152, 0, 2096, 2102, 5, 266, 0, 0, 2097, 2098, 5, 157, 0, 0, 2098, 2099, 5, 265, 0, 0, 2099, 2100, 3, 304, 152, 0, 2100, 2101, 5, 266, 0, 0, 2101, 2103, 1, 0, 0, 0, 2102, 2097, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2105, 1, 0, 0, 0, 2104, 2092, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 287, 1, 0, 0, 0, 2106, 2107, 7, 17, 0, 0, 2107, 289, 1, 0, 0, 0, 2108, 2116, 3, 294, 147, 0, 2109, 2111, 5, 9, 0, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2114, 3, 358, 179, 0, 2113, 2115, 3, 292, 146, 0, 2114, 2113, 1, 0, 0, 0, 2114, 2115, 1, 0, 0, 0, 2115, 2117, 1, 0, 0, 0, 2116, 2110, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 291, 1, 0, 0, 0, 2118, 2119, 5, 265, 0, 0, 2119, 2124, 3, 192, 96, 0, 2120, 2121, 5, 263, 0, 0, 2121, 2123, 3, 192, 96, 0, 2122, 2120, 1, 0, 0, 0, 2123, 2126, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 1, 0, 0, 0, 2126, 2124, 1, 0, 0, 0, 2127, 2128, 5, 266, 0, 0, 2128, 293, 1, 0, 0, 0, 2129, 2137, 3, 194, 97, 0, 2130, 2132, 5, 113, 0, 0, 2131, 2130, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2137, 3, 296, 148, 0, 2134, 2137, 3, 298, 149, 0, 2135, 2137, 3, 300, 150, 0, 2136, 2129, 1, 0, 0, 0, 2136, 2131, 1, 0, 0, 0, 2136, 2134, 1, 0, 0, 0, 2136, 2135, 1, 0, 0, 0, 2137, 295, 1, 0, 0, 0, 2138, 2139, 5, 265, 0, 0, 2139, 2140, 3, 204, 102, 0, 2140, 2141, 5, 266, 0, 0, 2141, 297, 1, 0, 0, 0, 2142, 2143, 5, 201, 0, 0, 2143, 2144, 5, 265, 0, 0, 2144, 2149, 3, 304, 152, 0, 2145, 2146, 5, 263, 0, 0, 2146, 2148, 3, 304, 152, 0, 2147, 2145, 1, 0, 0, 0, 2148, 2151, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2152, 1, 0, 0, 0, 2151, 2149, 1, 0, 0, 0, 2152, 2155, 5, 266, 0, 0, 2153, 2154, 5, 216, 0, 0, 2154, 2156, 5, 140, 0, 0, 2155, 2153, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 299, 1, 0, 0, 0, 2157, 2158, 5, 265, 0, 0, 2158, 2159, 3, 280, 140, 0, 2159, 2160, 5, 266, 0, 0, 2160, 301, 1, 0, 0, 0, 2161, 2164, 3, 192, 96, 0, 2162, 2164, 3, 304, 152, 0, 2163, 2161, 1, 0, 0, 0, 2163, 2162, 1, 0, 0, 0, 2164, 303, 1, 0, 0, 0, 2165, 2166, 3, 306, 153, 0, 2166, 305, 1, 0, 0, 0, 2167, 2168, 6, 153, -1, 0, 2168, 2170, 3, 310, 155, 0, 2169, 2171, 3, 308, 154, 0, 2170, 2169, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2175, 1, 0, 0, 0, 2172, 2173, 5, 132, 0, 0, 2173, 2175, 3, 306, 153, 3, 2174, 2167, 1, 0, 0, 0, 2174, 2172, 1, 0, 0, 0, 2175, 2184, 1, 0, 0, 0, 2176, 2177, 10, 2, 0, 0, 2177, 2178, 5, 5, 0, 0, 2178, 2183, 3, 306, 153, 3, 2179, 2180, 10, 1, 0, 0, 2180, 2181, 5, 138, 0, 0, 2181, 2183, 3, 306, 153, 2, 2182, 2176, 1, 0, 0, 0, 2182, 2179, 1, 0, 0, 0, 2183, 2186, 1, 0, 0, 0, 2184, 2182, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 307, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2187, 2188, 3, 316, 158, 0, 2188, 2189, 3, 310, 155, 0, 2189, 2246, 1, 0, 0, 0, 2190, 2191, 3, 316, 158, 0, 2191, 2192, 3, 318, 159, 0, 2192, 2193, 3, 296, 148, 0, 2193, 2246, 1, 0, 0, 0, 2194, 2196, 5, 132, 0, 0, 2195, 2194, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2198, 5, 15, 0, 0, 2198, 2199, 3, 310, 155, 0, 2199, 2200, 5, 5, 0, 0, 2200, 2201, 3, 310, 155, 0, 2201, 2246, 1, 0, 0, 0, 2202, 2204, 5, 132, 0, 0, 2203, 2202, 1, 0, 0, 0, 2203, 2204, 1, 0, 0, 0, 2204, 2205, 1, 0, 0, 0, 2205, 2206, 5, 94, 0, 0, 2206, 2207, 5, 265, 0, 0, 2207, 2212, 3, 304, 152, 0, 2208, 2209, 5, 263, 0, 0, 2209, 2211, 3, 304, 152, 0, 2210, 2208, 1, 0, 0, 0, 2211, 2214, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 1, 0, 0, 0, 2214, 2212, 1, 0, 0, 0, 2215, 2216, 5, 266, 0, 0, 2216, 2246, 1, 0, 0, 0, 2217, 2219, 5, 132, 0, 0, 2218, 2217, 1, 0, 0, 0, 2218, 2219, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2221, 5, 94, 0, 0, 2221, 2246, 3, 296, 148, 0, 2222, 2224, 5, 132, 0, 0, 2223, 2222, 1, 0, 0, 0, 2223, 2224, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2226, 7, 18, 0, 0, 2226, 2229, 3, 310, 155, 0, 2227, 2228, 5, 62, 0, 0, 2228, 2230, 3, 310, 155, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2246, 1, 0, 0, 0, 2231, 2232, 7, 19, 0, 0, 2232, 2246, 3, 310, 155, 0, 2233, 2235, 5, 108, 0, 0, 2234, 2236, 5, 132, 0, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2246, 7, 20, 0, 0, 2238, 2240, 5, 108, 0, 0, 2239, 2241, 5, 132, 0, 0, 2240, 2239, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2243, 5, 57, 0, 0, 2243, 2244, 5, 82, 0, 0, 2244, 2246, 3, 310, 155, 0, 2245, 2187, 1, 0, 0, 0, 2245, 2190, 1, 0, 0, 0, 2245, 2195, 1, 0, 0, 0, 2245, 2203, 1, 0, 0, 0, 2245, 2218, 1, 0, 0, 0, 2245, 2223, 1, 0, 0, 0, 2245, 2231, 1, 0, 0, 0, 2245, 2233, 1, 0, 0, 0, 2245, 2238, 1, 0, 0, 0, 2246, 309, 1, 0, 0, 0, 2247, 2248, 6, 155, -1, 0, 2248, 2252, 3, 312, 156, 0, 2249, 2250, 7, 21, 0, 0, 2250, 2252, 3, 310, 155, 4, 2251, 2247, 1, 0, 0, 0, 2251, 2249, 1, 0, 0, 0, 2252, 2264, 1, 0, 0, 0, 2253, 2254, 10, 3, 0, 0, 2254, 2255, 7, 22, 0, 0, 2255, 2263, 3, 310, 155, 4, 2256, 2257, 10, 2, 0, 0, 2257, 2258, 7, 21, 0, 0, 2258, 2263, 3, 310, 155, 3, 2259, 2260, 10, 1, 0, 0, 2260, 2261, 5, 260, 0, 0, 2261, 2263, 3, 310, 155, 2, 2262, 2253, 1, 0, 0, 0, 2262, 2256, 1, 0, 0, 0, 2262, 2259, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 311, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2268, 6, 156, -1, 0, 2268, 2514, 5, 133, 0, 0, 2269, 2514, 3, 322, 161, 0, 2270, 2271, 3, 358, 179, 0, 2271, 2272, 3, 314, 157, 0, 2272, 2514, 1, 0, 0, 0, 2273, 2274, 5, 286, 0, 0, 2274, 2514, 3, 314, 157, 0, 2275, 2514, 3, 360, 180, 0, 2276, 2514, 3, 320, 160, 0, 2277, 2514, 3, 314, 157, 0, 2278, 2514, 5, 276, 0, 0, 2279, 2514, 5, 272, 0, 0, 2280, 2281, 5, 148, 0, 0, 2281, 2282, 5, 265, 0, 0, 2282, 2283, 3, 310, 155, 0, 2283, 2284, 5, 94, 0, 0, 2284, 2285, 3, 310, 155, 0, 2285, 2286, 5, 266, 0, 0, 2286, 2514, 1, 0, 0, 0, 2287, 2288, 5, 265, 0, 0, 2288, 2291, 3, 304, 152, 0, 2289, 2290, 5, 9, 0, 0, 2290, 2292, 3, 328, 164, 0, 2291, 2289, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2301, 1, 0, 0, 0, 2293, 2294, 5, 263, 0, 0, 2294, 2297, 3, 304, 152, 0, 2295, 2296, 5, 9, 0, 0, 2296, 2298, 3, 328, 164, 0, 2297, 2295, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2300, 1, 0, 0, 0, 2299, 2293, 1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2302, 2304, 1, 0, 0, 0, 2303, 2301, 1, 0, 0, 0, 2304, 2305, 5, 266, 0, 0, 2305, 2514, 1, 0, 0, 0, 2306, 2307, 5, 168, 0, 0, 2307, 2308, 5, 265, 0, 0, 2308, 2313, 3, 304, 152, 0, 2309, 2310, 5, 263, 0, 0, 2310, 2312, 3, 304, 152, 0, 2311, 2309, 1, 0, 0, 0, 2312, 2315, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2316, 1, 0, 0, 0, 2315, 2313, 1, 0, 0, 0, 2316, 2317, 5, 266, 0, 0, 2317, 2514, 1, 0, 0, 0, 2318, 2319, 3, 190, 95, 0, 2319, 2320, 5, 265, 0, 0, 2320, 2321, 5, 257, 0, 0, 2321, 2323, 5, 266, 0, 0, 2322, 2324, 3, 338, 169, 0, 2323, 2322, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2326, 1, 0, 0, 0, 2325, 2327, 3, 340, 170, 0, 2326, 2325, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2514, 1, 0, 0, 0, 2328, 2329, 3, 190, 95, 0, 2329, 2341, 5, 265, 0, 0, 2330, 2332, 3, 276, 138, 0, 2331, 2330, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2338, 3, 304, 152, 0, 2334, 2335, 5, 263, 0, 0, 2335, 2337, 3, 304, 152, 0, 2336, 2334, 1, 0, 0, 0, 2337, 2340, 1, 0, 0, 0, 2338, 2336, 1, 0, 0, 0, 2338, 2339, 1, 0, 0, 0, 2339, 2342, 1, 0, 0, 0, 2340, 2338, 1, 0, 0, 0, 2341, 2331, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2353, 1, 0, 0, 0, 2343, 2344, 5, 139, 0, 0, 2344, 2345, 5, 26, 0, 0, 2345, 2350, 3, 264, 132, 0, 2346, 2347, 5, 263, 0, 0, 2347, 2349, 3, 264, 132, 0, 2348, 2346, 1, 0, 0, 0, 2349, 2352, 1, 0, 0, 0, 2350, 2348, 1, 0, 0, 0, 2350, 2351, 1, 0, 0, 0, 2351, 2354, 1, 0, 0, 0, 2352, 2350, 1, 0, 0, 0, 2353, 2343, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2357, 5, 266, 0, 0, 2356, 2358, 3, 338, 169, 0, 2357, 2356, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2360, 1, 0, 0, 0, 2359, 2361, 3, 340, 170, 0, 2360, 2359, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2514, 1, 0, 0, 0, 2362, 2363, 3, 358, 179, 0, 2363, 2364, 5, 273, 0, 0, 2364, 2365, 3, 304, 152, 0, 2365, 2514, 1, 0, 0, 0, 2366, 2375, 5, 265, 0, 0, 2367, 2372, 3, 358, 179, 0, 2368, 2369, 5, 263, 0, 0, 2369, 2371, 3, 358, 179, 0, 2370, 2368, 1, 0, 0, 0, 2371, 2374, 1, 0, 0, 0, 2372, 2370, 1, 0, 0, 0, 2372, 2373, 1, 0, 0, 0, 2373, 2376, 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2375, 2367, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2378, 5, 266, 0, 0, 2378, 2379, 5, 273, 0, 0, 2379, 2514, 3, 304, 152, 0, 2380, 2381, 5, 265, 0, 0, 2381, 2382, 3, 204, 102, 0, 2382, 2383, 5, 266, 0, 0, 2383, 2514, 1, 0, 0, 0, 2384, 2385, 5, 66, 0, 0, 2385, 2386, 5, 265, 0, 0, 2386, 2387, 3, 204, 102, 0, 2387, 2388, 5, 266, 0, 0, 2388, 2514, 1, 0, 0, 0, 2389, 2390, 5, 28, 0, 0, 2390, 2392, 3, 310, 155, 0, 2391, 2393, 3, 336, 168, 0, 2392, 2391, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2398, 1, 0, 0, 0, 2396, 2397, 5, 59, 0, 0, 2397, 2399, 3, 304, 152, 0, 2398, 2396, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2401, 5, 61, 0, 0, 2401, 2514, 1, 0, 0, 0, 2402, 2404, 5, 28, 0, 0, 2403, 2405, 3, 336, 168, 0, 2404, 2403, 1, 0, 0, 0, 2405, 2406, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2410, 1, 0, 0, 0, 2408, 2409, 5, 59, 0, 0, 2409, 2411, 3, 304, 152, 0, 2410, 2408, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 5, 61, 0, 0, 2413, 2514, 1, 0, 0, 0, 2414, 2415, 5, 29, 0, 0, 2415, 2416, 5, 265, 0, 0, 2416, 2417, 3, 304, 152, 0, 2417, 2418, 5, 9, 0, 0, 2418, 2419, 3, 328, 164, 0, 2419, 2420, 5, 266, 0, 0, 2420, 2514, 1, 0, 0, 0, 2421, 2422, 5, 195, 0, 0, 2422, 2423, 5, 265, 0, 0, 2423, 2424, 3, 304, 152, 0, 2424, 2425, 5, 9, 0, 0, 2425, 2426, 3, 328, 164, 0, 2426, 2427, 5, 266, 0, 0, 2427, 2514, 1, 0, 0, 0, 2428, 2429, 5, 8, 0, 0, 2429, 2438, 5, 267, 0, 0, 2430, 2435, 3, 304, 152, 0, 2431, 2432, 5, 263, 0, 0, 2432, 2434, 3, 304, 152, 0, 2433, 2431, 1, 0, 0, 0, 2434, 2437, 1, 0, 0, 0, 2435, 2433, 1, 0, 0, 0, 2435, 2436, 1, 0, 0, 0, 2436, 2439, 1, 0, 0, 0, 2437, 2435, 1, 0, 0, 0, 2438, 2430, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2514, 5, 268, 0, 0, 2441, 2514, 3, 358, 179, 0, 2442, 2514, 5, 40, 0, 0, 2443, 2447, 5, 42, 0, 0, 2444, 2445, 5, 265, 0, 0, 2445, 2446, 5, 277, 0, 0, 2446, 2448, 5, 266, 0, 0, 2447, 2444, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2514, 1, 0, 0, 0, 2449, 2453, 5, 43, 0, 0, 2450, 2451, 5, 265, 0, 0, 2451, 2452, 5, 277, 0, 0, 2452, 2454, 5, 266, 0, 0, 2453, 2450, 1, 0, 0, 0, 2453, 2454, 1, 0, 0, 0, 2454, 2514, 1, 0, 0, 0, 2455, 2459, 5, 119, 0, 0, 2456, 2457, 5, 265, 0, 0, 2457, 2458, 5, 277, 0, 0, 2458, 2460, 5, 266, 0, 0, 2459, 2456, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2514, 1, 0, 0, 0, 2461, 2465, 5, 120, 0, 0, 2462, 2463, 5, 265, 0, 0, 2463, 2464, 5, 277, 0, 0, 2464, 2466, 5, 266, 0, 0, 2465, 2462, 1, 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2514, 1, 0, 0, 0, 2467, 2514, 5, 44, 0, 0, 2468, 2514, 5, 41, 0, 0, 2469, 2470, 5, 184, 0, 0, 2470, 2471, 5, 265, 0, 0, 2471, 2472, 3, 310, 155, 0, 2472, 2473, 5, 82, 0, 0, 2473, 2476, 3, 310, 155, 0, 2474, 2475, 5, 78, 0, 0, 2475, 2477, 3, 310, 155, 0, 2476, 2474, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 2479, 5, 266, 0, 0, 2479, 2514, 1, 0, 0, 0, 2480, 2481, 5, 131, 0, 0, 2481, 2482, 5, 265, 0, 0, 2482, 2485, 3, 310, 155, 0, 2483, 2484, 5, 263, 0, 0, 2484, 2486, 3, 326, 163, 0, 2485, 2483, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2488, 5, 266, 0, 0, 2488, 2514, 1, 0, 0, 0, 2489, 2490, 5, 68, 0, 0, 2490, 2491, 5, 265, 0, 0, 2491, 2492, 3, 358, 179, 0, 2492, 2493, 5, 82, 0, 0, 2493, 2494, 3, 310, 155, 0, 2494, 2495, 5, 266, 0, 0, 2495, 2514, 1, 0, 0, 0, 2496, 2497, 5, 265, 0, 0, 2497, 2498, 3, 304, 152, 0, 2498, 2499, 5, 266, 0, 0, 2499, 2514, 1, 0, 0, 0, 2500, 2501, 5, 88, 0, 0, 2501, 2510, 5, 265, 0, 0, 2502, 2507, 3, 354, 177, 0, 2503, 2504, 5, 263, 0, 0, 2504, 2506, 3, 354, 177, 0, 2505, 2503, 1, 0, 0, 0, 2506, 2509, 1, 0, 0, 0, 2507, 2505, 1, 0, 0, 0, 2507, 2508, 1, 0, 0, 0, 2508, 2511, 1, 0, 0, 0, 2509, 2507, 1, 0, 0, 0, 2510, 2502, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2514, 5, 266, 0, 0, 2513, 2267, 1, 0, 0, 0, 2513, 2269, 1, 0, 0, 0, 2513, 2270, 1, 0, 0, 0, 2513, 2273, 1, 0, 0, 0, 2513, 2275, 1, 0, 0, 0, 2513, 2276, 1, 0, 0, 0, 2513, 2277, 1, 0, 0, 0, 2513, 2278, 1, 0, 0, 0, 2513, 2279, 1, 0, 0, 0, 2513, 2280, 1, 0, 0, 0, 2513, 2287, 1, 0, 0, 0, 2513, 2306, 1, 0, 0, 0, 2513, 2318, 1, 0, 0, 0, 2513, 2328, 1, 0, 0, 0, 2513, 2362, 1, 0, 0, 0, 2513, 2366, 1, 0, 0, 0, 2513, 2380, 1, 0, 0, 0, 2513, 2384, 1, 0, 0, 0, 2513, 2389, 1, 0, 0, 0, 2513, 2402, 1, 0, 0, 0, 2513, 2414, 1, 0, 0, 0, 2513, 2421, 1, 0, 0, 0, 2513, 2428, 1, 0, 0, 0, 2513, 2441, 1, 0, 0, 0, 2513, 2442, 1, 0, 0, 0, 2513, 2443, 1, 0, 0, 0, 2513, 2449, 1, 0, 0, 0, 2513, 2455, 1, 0, 0, 0, 2513, 2461, 1, 0, 0, 0, 2513, 2467, 1, 0, 0, 0, 2513, 2468, 1, 0, 0, 0, 2513, 2469, 1, 0, 0, 0, 2513, 2480, 1, 0, 0, 0, 2513, 2489, 1, 0, 0, 0, 2513, 2496, 1, 0, 0, 0, 2513, 2500, 1, 0, 0, 0, 2514, 2525, 1, 0, 0, 0, 2515, 2516, 10, 15, 0, 0, 2516, 2517, 5, 267, 0, 0, 2517, 2518, 3, 310, 155, 0, 2518, 2519, 5, 268, 0, 0, 2519, 2524, 1, 0, 0, 0, 2520, 2521, 10, 13, 0, 0, 2521, 2522, 5, 261, 0, 0, 2522, 2524, 3, 358, 179, 0, 2523, 2515, 1, 0, 0, 0, 2523, 2520, 1, 0, 0, 0, 2524, 2527, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 313, 1, 0, 0, 0, 2527, 2525, 1, 0, 0, 0, 2528, 2535, 5, 274, 0, 0, 2529, 2532, 5, 275, 0, 0, 2530, 2531, 5, 198, 0, 0, 2531, 2533, 5, 274, 0, 0, 2532, 2530, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2535, 1, 0, 0, 0, 2534, 2528, 1, 0, 0, 0, 2534, 2529, 1, 0, 0, 0, 2535, 315, 1, 0, 0, 0, 2536, 2537, 7, 23, 0, 0, 2537, 317, 1, 0, 0, 0, 2538, 2539, 7, 24, 0, 0, 2539, 319, 1, 0, 0, 0, 2540, 2541, 7, 25, 0, 0, 2541, 321, 1, 0, 0, 0, 2542, 2543, 5, 277, 0, 0, 2543, 2557, 3, 324, 162, 0, 2544, 2545, 5, 265, 0, 0, 2545, 2546, 5, 277, 0, 0, 2546, 2547, 5, 266, 0, 0, 2547, 2557, 3, 324, 162, 0, 2548, 2549, 5, 101, 0, 0, 2549, 2550, 5, 277, 0, 0, 2550, 2557, 3, 324, 162, 0, 2551, 2552, 5, 101, 0, 0, 2552, 2553, 5, 265, 0, 0, 2553, 2554, 5, 277, 0, 0, 2554, 2555, 5, 266, 0, 0, 2555, 2557, 3, 324, 162, 0, 2556, 2542, 1, 0, 0, 0, 2556, 2544, 1, 0, 0, 0, 2556, 2548, 1, 0, 0, 0, 2556, 2551, 1, 0, 0, 0, 2557, 323, 1, 0, 0, 0, 2558, 2559, 7, 26, 0, 0, 2559, 325, 1, 0, 0, 0, 2560, 2561, 7, 27, 0, 0, 2561, 327, 1, 0, 0, 0, 2562, 2563, 6, 164, -1, 0, 2563, 2564, 5, 8, 0, 0, 2564, 2565, 5, 251, 0, 0, 2565, 2566, 3, 328, 164, 0, 2566, 2567, 5, 253, 0, 0, 2567, 2608, 1, 0, 0, 0, 2568, 2569, 5, 235, 0, 0, 2569, 2570, 5, 251, 0, 0, 2570, 2571, 3, 328, 164, 0, 2571, 2572, 5, 263, 0, 0, 2572, 2573, 3, 328, 164, 0, 2573, 2574, 5, 253, 0, 0, 2574, 2608, 1, 0, 0, 0, 2575, 2576, 5, 240, 0, 0, 2576, 2577, 5, 251, 0, 0, 2577, 2578, 3, 358, 179, 0, 2578, 2585, 3, 328, 164, 0, 2579, 2580, 5, 263, 0, 0, 2580, 2581, 3, 358, 179, 0, 2581, 2582, 3, 328, 164, 0, 2582, 2584, 1, 0, 0, 0, 2583, 2579, 1, 0, 0, 0, 2584, 2587, 1, 0, 0, 0, 2585, 2583, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2588, 1, 0, 0, 0, 2587, 2585, 1, 0, 0, 0, 2588, 2589, 5, 253, 0, 0, 2589, 2608, 1, 0, 0, 0, 2590, 2593, 3, 334, 167, 0, 2591, 2593, 3, 330, 165, 0, 2592, 2590, 1, 0, 0, 0, 2592, 2591, 1, 0, 0, 0, 2593, 2605, 1, 0, 0, 0, 2594, 2595, 5, 265, 0, 0, 2595, 2600, 3, 332, 166, 0, 2596, 2597, 5, 263, 0, 0, 2597, 2599, 3, 332, 166, 0, 2598, 2596, 1, 0, 0, 0, 2599, 2602, 1, 0, 0, 0, 2600, 2598, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2603, 1, 0, 0, 0, 2602, 2600, 1, 0, 0, 0, 2603, 2604, 5, 266, 0, 0, 2604, 2606, 1, 0, 0, 0, 2605, 2594, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2608, 1, 0, 0, 0, 2607, 2562, 1, 0, 0, 0, 2607, 2568, 1, 0, 0, 0, 2607, 2575, 1, 0, 0, 0, 2607, 2592, 1, 0, 0, 0, 2608, 2613, 1, 0, 0, 0, 2609, 2610, 10, 5, 0, 0, 2610, 2612, 5, 8, 0, 0, 2611, 2609, 1, 0, 0, 0, 2612, 2615, 1, 0, 0, 0, 2613, 2611, 1, 0, 0, 0, 2613, 2614, 1, 0, 0, 0, 2614, 329, 1, 0, 0, 0, 2615, 2613, 1, 0, 0, 0, 2616, 2617, 7, 28, 0, 0, 2617, 331, 1, 0, 0, 0, 2618, 2621, 5, 277, 0, 0, 2619, 2621, 3, 328, 164, 0, 2620, 2618, 1, 0, 0, 0, 2620, 2619, 1, 0, 0, 0, 2621, 333, 1, 0, 0, 0, 2622, 2627, 5, 284, 0, 0, 2623, 2627, 5, 285, 0, 0, 2624, 2627, 5, 286, 0, 0, 2625, 2627, 3, 358, 179, 0, 2626, 2622, 1, 0, 0, 0, 2626, 2623, 1, 0, 0, 0, 2626, 2624, 1, 0, 0, 0, 2626, 2625, 1, 0, 0, 0, 2627, 335, 1, 0, 0, 0, 2628, 2629, 5, 214, 0, 0, 2629, 2630, 3, 304, 152, 0, 2630, 2631, 5, 192, 0, 0, 2631, 2632, 3, 304, 152, 0, 2632, 337, 1, 0, 0, 0, 2633, 2634, 5, 74, 0, 0, 2634, 2635, 5, 265, 0, 0, 2635, 2636, 5, 215, 0, 0, 2636, 2637, 3, 306, 153, 0, 2637, 2638, 5, 266, 0, 0, 2638, 339, 1, 0, 0, 0, 2639, 2640, 5, 143, 0, 0, 2640, 2651, 5, 265, 0, 0, 2641, 2642, 5, 145, 0, 0, 2642, 2643, 5, 26, 0, 0, 2643, 2648, 3, 304, 152, 0, 2644, 2645, 5, 263, 0, 0, 2645, 2647, 3, 304, 152, 0, 2646, 2644, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2652, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2651, 2641, 1, 0, 0, 0, 2651, 2652, 1, 0, 0, 0, 2652, 2663, 1, 0, 0, 0, 2653, 2654, 5, 139, 0, 0, 2654, 2655, 5, 26, 0, 0, 2655, 2660, 3, 264, 132, 0, 2656, 2657, 5, 263, 0, 0, 2657, 2659, 3, 264, 132, 0, 2658, 2656, 1, 0, 0, 0, 2659, 2662, 1, 0, 0, 0, 2660, 2658, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 2664, 1, 0, 0, 0, 2662, 2660, 1, 0, 0, 0, 2663, 2653, 1, 0, 0, 0, 2663, 2664, 1, 0, 0, 0, 2664, 2666, 1, 0, 0, 0, 2665, 2667, 3, 342, 171, 0, 2666, 2665, 1, 0, 0, 0, 2666, 2667, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 2669, 5, 266, 0, 0, 2669, 341, 1, 0, 0, 0, 2670, 2671, 5, 154, 0, 0, 2671, 2687, 3, 344, 172, 0, 2672, 2673, 5, 169, 0, 0, 2673, 2687, 3, 344, 172, 0, 2674, 2675, 5, 154, 0, 0, 2675, 2676, 5, 15, 0, 0, 2676, 2677, 3, 344, 172, 0, 2677, 2678, 5, 5, 0, 0, 2678, 2679, 3, 344, 172, 0, 2679, 2687, 1, 0, 0, 0, 2680, 2681, 5, 169, 0, 0, 2681, 2682, 5, 15, 0, 0, 2682, 2683, 3, 344, 172, 0, 2683, 2684, 5, 5, 0, 0, 2684, 2685, 3, 344, 172, 0, 2685, 2687, 1, 0, 0, 0, 2686, 2670, 1, 0, 0, 0, 2686, 2672, 1, 0, 0, 0, 2686, 2674, 1, 0, 0, 0, 2686, 2680, 1, 0, 0, 0, 2687, 343, 1, 0, 0, 0, 2688, 2689, 5, 199, 0, 0, 2689, 2698, 5, 149, 0, 0, 2690, 2691, 5, 199, 0, 0, 2691, 2698, 5, 77, 0, 0, 2692, 2693, 5, 39, 0, 0, 2693, 2698, 5, 168, 0, 0, 2694, 2695, 3, 304, 152, 0, 2695, 2696, 7, 29, 0, 0, 2696, 2698, 1, 0, 0, 0, 2697, 2688, 1, 0, 0, 0, 2697, 2690, 1, 0, 0, 0, 2697, 2692, 1, 0, 0, 0, 2697, 2694, 1, 0, 0, 0, 2698, 345, 1, 0, 0, 0, 2699, 2700, 3, 358, 179, 0, 2700, 2701, 5, 261, 0, 0, 2701, 2702, 3, 358, 179, 0, 2702, 2705, 1, 0, 0, 0, 2703, 2705, 3, 358, 179, 0, 2704, 2699, 1, 0, 0, 0, 2704, 2703, 1, 0, 0, 0, 2705, 347, 1, 0, 0, 0, 2706, 2711, 3, 346, 173, 0, 2707, 2708, 5, 263, 0, 0, 2708, 2710, 3, 346, 173, 0, 2709, 2707, 1, 0, 0, 0, 2710, 2713, 1, 0, 0, 0, 2711, 2709, 1, 0, 0, 0, 2711, 2712, 1, 0, 0, 0, 2712, 349, 1, 0, 0, 0, 2713, 2711, 1, 0, 0, 0, 2714, 2728, 5, 2, 0, 0, 2715, 2728, 5, 4, 0, 0, 2716, 2728, 5, 58, 0, 0, 2717, 2728, 5, 37, 0, 0, 2718, 2728, 5, 99, 0, 0, 2719, 2728, 5, 162, 0, 0, 2720, 2725, 5, 174, 0, 0, 2721, 2722, 5, 265, 0, 0, 2722, 2723, 3, 358, 179, 0, 2723, 2724, 5, 266, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2721, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2728, 1, 0, 0, 0, 2727, 2714, 1, 0, 0, 0, 2727, 2715, 1, 0, 0, 0, 2727, 2716, 1, 0, 0, 0, 2727, 2717, 1, 0, 0, 0, 2727, 2718, 1, 0, 0, 0, 2727, 2719, 1, 0, 0, 0, 2727, 2720, 1, 0, 0, 0, 2728, 351, 1, 0, 0, 0, 2729, 2730, 7, 30, 0, 0, 2730, 353, 1, 0, 0, 0, 2731, 2736, 3, 358, 179, 0, 2732, 2733, 5, 261, 0, 0, 2733, 2735, 3, 358, 179, 0, 2734, 2732, 1, 0, 0, 0, 2735, 2738, 1, 0, 0, 0, 2736, 2734, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 355, 1, 0, 0, 0, 2738, 2736, 1, 0, 0, 0, 2739, 2740, 5, 166, 0, 0, 2740, 2746, 3, 358, 179, 0, 2741, 2742, 5, 204, 0, 0, 2742, 2746, 3, 358, 179, 0, 2743, 2744, 5, 87, 0, 0, 2744, 2746, 3, 358, 179, 0, 2745, 2739, 1, 0, 0, 0, 2745, 2741, 1, 0, 0, 0, 2745, 2743, 1, 0, 0, 0, 2746, 357, 1, 0, 0, 0, 2747, 2753, 5, 280, 0, 0, 2748, 2753, 5, 274, 0, 0, 2749, 2753, 3, 364, 182, 0, 2750, 2753, 5, 283, 0, 0, 2751, 2753, 5, 281, 0, 0, 2752, 2747, 1, 0, 0, 0, 2752, 2748, 1, 0, 0, 0, 2752, 2749, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2752, 2751, 1, 0, 0, 0, 2753, 359, 1, 0, 0, 0, 2754, 2756, 5, 256, 0, 0, 2755, 2754, 1, 0, 0, 0, 2755, 2756, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2767, 5, 278, 0, 0, 2758, 2760, 5, 256, 0, 0, 2759, 2758, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2767, 5, 279, 0, 0, 2762, 2764, 5, 256, 0, 0, 2763, 2762, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2767, 5, 277, 0, 0, 2766, 2755, 1, 0, 0, 0, 2766, 2759, 1, 0, 0, 0, 2766, 2763, 1, 0, 0, 0, 2767, 361, 1, 0, 0, 0, 2768, 2769, 7, 31, 0, 0, 2769, 363, 1, 0, 0, 0, 2770, 2771, 7, 32, 0, 0, 2771, 365, 1, 0, 0, 0, 353, 369, 376, 400, 413, 417, 421, 430, 435, 439, 445, 447, 452, 456, 460, 467, 472, 478, 482, 491, 498, 502, 507, 509, 514, 518, 525, 529, 534, 538, 542, 546, 554, 559, 563, 571, 575, 584, 587, 590, 596, 603, 614, 619, 624, 629, 634, 643, 646, 649, 653, 679, 705, 714, 724, 727, 741, 759, 761, 770, 781, 790, 797, 801, 808, 814, 817, 822, 829, 843, 856, 861, 866, 872, 908, 911, 917, 920, 926, 932, 944, 946, 957, 965, 970, 974, 979, 986, 990, 994, 1000, 1004, 1008, 1017, 1020, 1023, 1031, 1045, 1052, 1065, 1071, 1076, 1079, 1082, 1087, 1091, 1100, 1105, 1111, 1115, 1120, 1125, 1128, 1136, 1139, 1143, 1155, 1158, 1162, 1167, 1171, 1187, 1192, 1199, 1202, 1208, 1211, 1218, 1221, 1225, 1230, 1233, 1240, 1243, 1267, 1281, 1285, 1289, 1309, 1311, 1313, 1322, 1324, 1333, 1335, 1344, 1346, 1351, 1360, 1369, 1378, 1389, 1395, 1400, 1403, 1416, 1426, 1430, 1435, 1446, 1451, 1484, 1492, 1497, 1501, 1505, 1510, 1514, 1519, 1524, 1529, 1533, 1542, 1545, 1549, 1556, 1567, 1573, 1577, 1583, 1593, 1600, 1605, 1610, 1615, 1621, 1624, 1633, 1636, 1639, 1645, 1651, 1661, 1664, 1668, 1672, 1675, 1681, 1684, 1690, 1696, 1699, 1702, 1706, 1716, 1727, 1732, 1735, 1739, 1746, 1756, 1768, 1774, 1776, 1785, 1788, 1795, 1805, 1811, 1819, 1830, 1840, 1851, 1853, 1859, 1864, 1874, 1877, 1883, 1885, 1893, 1899, 1902, 1904, 1916, 1923, 1927, 1931, 1935, 1938, 1945, 1954, 1957, 1961, 1966, 1970, 1973, 1980, 1991, 1994, 1998, 2002, 2011, 2014, 2021, 2035, 2039, 2043, 2047, 2051, 2055, 2059, 2063, 2073, 2084, 2089, 2102, 2104, 2110, 2114, 2116, 2124, 2131, 2136, 2149, 2155, 2163, 2170, 2174, 2182, 2184, 2195, 2203, 2212, 2218, 2223, 2229, 2235, 2240, 2245, 2251, 2262, 2264, 2291, 2297, 2301, 2313, 2323, 2326, 2331, 2338, 2341, 2350, 2353, 2357, 2360, 2372, 2375, 2394, 2398, 2406, 2410, 2435, 2438, 2447, 2453, 2459, 2465, 2476, 2485, 2507, 2510, 2513, 2523, 2525, 2532, 2534, 2556, 2585, 2592, 2600, 2605, 2607, 2613, 2620, 2626, 2648, 2651, 2660, 2663, 2666, 2686, 2697, 2704, 2711, 2725, 2727, 2736, 2745, 2752, 2755, 2759, 2763, 2766] \ No newline at end of file +[4, 1, 289, 2771, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 1, 0, 5, 0, 368, 8, 0, 10, 0, 12, 0, 371, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 377, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 401, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 414, 8, 4, 1, 5, 1, 5, 3, 5, 418, 8, 5, 1, 5, 1, 5, 3, 5, 422, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 429, 8, 5, 10, 5, 12, 5, 432, 9, 5, 1, 5, 1, 5, 3, 5, 436, 8, 5, 1, 5, 1, 5, 3, 5, 440, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 446, 8, 5, 3, 5, 448, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 453, 8, 5, 1, 6, 1, 6, 3, 6, 457, 8, 6, 1, 6, 1, 6, 3, 6, 461, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 468, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 473, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 479, 8, 7, 1, 7, 1, 7, 3, 7, 483, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 490, 8, 7, 10, 7, 12, 7, 493, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 499, 8, 7, 1, 7, 1, 7, 3, 7, 503, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 508, 8, 7, 3, 7, 510, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 515, 8, 7, 1, 7, 1, 7, 3, 7, 519, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 526, 8, 7, 1, 7, 1, 7, 3, 7, 530, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 535, 8, 8, 1, 8, 1, 8, 3, 8, 539, 8, 8, 1, 8, 1, 8, 3, 8, 543, 8, 8, 1, 8, 1, 8, 3, 8, 547, 8, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 555, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 560, 8, 9, 1, 9, 1, 9, 3, 9, 564, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 572, 8, 11, 1, 11, 1, 11, 3, 11, 576, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 583, 8, 11, 10, 11, 12, 11, 586, 9, 11, 3, 11, 588, 8, 11, 1, 11, 3, 11, 591, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 597, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 604, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 615, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 620, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 625, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 630, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 635, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 642, 8, 12, 10, 12, 12, 12, 645, 9, 12, 3, 12, 647, 8, 12, 1, 12, 3, 12, 650, 8, 12, 1, 12, 1, 12, 3, 12, 654, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 680, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 706, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 715, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 725, 8, 16, 1, 16, 3, 16, 728, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 742, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 760, 8, 20, 3, 20, 762, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 769, 8, 20, 10, 20, 12, 20, 772, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 782, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 791, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 798, 8, 22, 1, 22, 1, 22, 3, 22, 802, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 809, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 815, 8, 23, 1, 23, 3, 23, 818, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 823, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 830, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 844, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 857, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 862, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 867, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 873, 8, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 909, 8, 32, 1, 32, 3, 32, 912, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 918, 8, 33, 1, 33, 3, 33, 921, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 927, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 933, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 945, 8, 35, 3, 35, 947, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 958, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 966, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 971, 8, 38, 1, 38, 1, 38, 3, 38, 975, 8, 38, 1, 39, 1, 39, 1, 39, 3, 39, 980, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 987, 8, 40, 1, 40, 1, 40, 3, 40, 991, 8, 40, 1, 41, 1, 41, 3, 41, 995, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1001, 8, 41, 1, 42, 1, 42, 3, 42, 1005, 8, 42, 1, 42, 1, 42, 3, 42, 1009, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 1016, 8, 42, 10, 42, 12, 42, 1019, 9, 42, 3, 42, 1021, 8, 42, 1, 42, 3, 42, 1024, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 3, 44, 1032, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1046, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1053, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1066, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1072, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1077, 8, 49, 1, 49, 3, 49, 1080, 8, 49, 1, 50, 3, 50, 1083, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1088, 8, 50, 1, 50, 1, 50, 3, 50, 1092, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1099, 8, 50, 10, 50, 12, 50, 1102, 9, 50, 1, 50, 1, 50, 3, 50, 1106, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 1112, 8, 51, 1, 52, 1, 52, 3, 52, 1116, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1121, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1126, 8, 53, 1, 53, 3, 53, 1129, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1135, 8, 53, 10, 53, 12, 53, 1138, 9, 53, 3, 53, 1140, 8, 53, 1, 53, 1, 53, 3, 53, 1144, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1154, 8, 54, 10, 54, 12, 54, 1157, 9, 54, 3, 54, 1159, 8, 54, 1, 54, 1, 54, 3, 54, 1163, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 1168, 8, 55, 1, 55, 1, 55, 3, 55, 1172, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1188, 8, 56, 1, 57, 1, 57, 1, 57, 3, 57, 1193, 8, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1198, 8, 57, 10, 57, 12, 57, 1201, 9, 57, 3, 57, 1203, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1209, 8, 58, 1, 58, 3, 58, 1212, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1217, 8, 58, 10, 58, 12, 58, 1220, 9, 58, 3, 58, 1222, 8, 58, 1, 59, 1, 59, 3, 59, 1226, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1231, 8, 59, 1, 59, 3, 59, 1234, 8, 59, 1, 59, 1, 59, 1, 59, 5, 59, 1239, 8, 59, 10, 59, 12, 59, 1242, 9, 59, 3, 59, 1244, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 1268, 8, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1282, 8, 65, 1, 65, 1, 65, 3, 65, 1286, 8, 65, 1, 66, 1, 66, 3, 66, 1290, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1310, 8, 68, 3, 68, 1312, 8, 68, 3, 68, 1314, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1323, 8, 69, 3, 69, 1325, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1334, 8, 70, 3, 70, 1336, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1345, 8, 71, 3, 71, 1347, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1352, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1361, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1370, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1379, 8, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1390, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1396, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1401, 8, 78, 1, 78, 3, 78, 1404, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1417, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1427, 8, 80, 1, 80, 1, 80, 3, 80, 1431, 8, 80, 1, 81, 1, 81, 1, 81, 3, 81, 1436, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 1445, 8, 82, 10, 82, 12, 82, 1448, 9, 82, 1, 82, 1, 82, 3, 82, 1452, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 5, 93, 1483, 8, 93, 10, 93, 12, 93, 1486, 9, 93, 1, 94, 1, 94, 1, 94, 5, 94, 1491, 8, 94, 10, 94, 12, 94, 1494, 9, 94, 1, 95, 1, 95, 3, 95, 1498, 8, 95, 1, 96, 1, 96, 3, 96, 1502, 8, 96, 1, 97, 1, 97, 3, 97, 1506, 8, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1511, 8, 98, 1, 98, 1, 98, 3, 98, 1515, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1520, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1525, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1530, 8, 98, 1, 98, 1, 98, 3, 98, 1534, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1543, 8, 98, 1, 98, 3, 98, 1546, 8, 98, 1, 98, 1, 98, 3, 98, 1550, 8, 98, 1, 99, 1, 99, 1, 99, 5, 99, 1555, 8, 99, 10, 99, 12, 99, 1558, 9, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1568, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1574, 8, 101, 5, 101, 1576, 8, 101, 10, 101, 12, 101, 1579, 9, 101, 1, 101, 1, 101, 1, 102, 3, 102, 1584, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1592, 8, 103, 10, 103, 12, 103, 1595, 9, 103, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1601, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1606, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1611, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1616, 8, 104, 1, 104, 1, 104, 5, 104, 1620, 8, 104, 10, 104, 12, 104, 1623, 9, 104, 3, 104, 1625, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1634, 8, 105, 1, 105, 3, 105, 1637, 8, 105, 1, 105, 3, 105, 1640, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1646, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 1652, 8, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 5, 109, 1660, 8, 109, 10, 109, 12, 109, 1663, 9, 109, 3, 109, 1665, 8, 109, 1, 109, 1, 109, 3, 109, 1669, 8, 109, 1, 109, 1, 109, 3, 109, 1673, 8, 109, 1, 110, 1, 110, 1, 110, 5, 110, 1678, 8, 110, 10, 110, 12, 110, 1681, 9, 110, 3, 110, 1683, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1689, 8, 111, 1, 111, 1, 111, 5, 111, 1693, 8, 111, 10, 111, 12, 111, 1696, 9, 111, 3, 111, 1698, 8, 111, 1, 112, 3, 112, 1701, 8, 112, 1, 112, 1, 112, 3, 112, 1705, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1715, 8, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 1724, 8, 116, 10, 116, 12, 116, 1727, 9, 116, 1, 116, 1, 116, 3, 116, 1731, 8, 116, 1, 116, 3, 116, 1734, 8, 116, 1, 117, 1, 117, 3, 117, 1738, 8, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 3, 118, 1745, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1753, 8, 118, 10, 118, 12, 118, 1756, 9, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1767, 8, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1773, 8, 119, 3, 119, 1775, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1784, 8, 120, 1, 120, 3, 120, 1787, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 1794, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1804, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1810, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1816, 8, 124, 10, 124, 12, 124, 1819, 9, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 1827, 8, 125, 10, 125, 12, 125, 1830, 9, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 5, 126, 1837, 8, 126, 10, 126, 12, 126, 1840, 9, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1850, 8, 127, 3, 127, 1852, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1858, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1863, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 5, 129, 1871, 8, 129, 10, 129, 12, 129, 1874, 9, 129, 3, 129, 1876, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1882, 8, 129, 3, 129, 1884, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1892, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1898, 8, 130, 1, 130, 5, 130, 1901, 8, 130, 10, 130, 12, 130, 1904, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1913, 8, 131, 10, 131, 12, 131, 1916, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1922, 8, 131, 1, 132, 1, 132, 3, 132, 1926, 8, 132, 1, 132, 1, 132, 3, 132, 1930, 8, 132, 1, 133, 1, 133, 3, 133, 1934, 8, 133, 1, 133, 3, 133, 1937, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1942, 8, 133, 10, 133, 12, 133, 1945, 9, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1951, 8, 133, 10, 133, 12, 133, 1954, 9, 133, 3, 133, 1956, 8, 133, 1, 133, 1, 133, 3, 133, 1960, 8, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1965, 8, 133, 1, 133, 1, 133, 3, 133, 1969, 8, 133, 1, 134, 3, 134, 1972, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1977, 8, 134, 10, 134, 12, 134, 1980, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 5, 136, 1988, 8, 136, 10, 136, 12, 136, 1991, 9, 136, 3, 136, 1993, 8, 136, 1, 136, 1, 136, 3, 136, 1997, 8, 136, 1, 137, 1, 137, 3, 137, 2001, 8, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 2010, 8, 139, 1, 139, 3, 139, 2013, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2020, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2034, 8, 140, 5, 140, 2036, 8, 140, 10, 140, 12, 140, 2039, 9, 140, 1, 141, 3, 141, 2042, 8, 141, 1, 141, 1, 141, 3, 141, 2046, 8, 141, 1, 141, 1, 141, 3, 141, 2050, 8, 141, 1, 141, 1, 141, 3, 141, 2054, 8, 141, 1, 141, 1, 141, 3, 141, 2058, 8, 141, 1, 141, 1, 141, 3, 141, 2062, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2072, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 2081, 8, 142, 10, 142, 12, 142, 2084, 9, 142, 1, 142, 1, 142, 3, 142, 2088, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2101, 8, 143, 3, 143, 2103, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 2109, 8, 145, 1, 145, 1, 145, 3, 145, 2113, 8, 145, 3, 145, 2115, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 2121, 8, 146, 10, 146, 12, 146, 2124, 9, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2130, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2135, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 5, 149, 2146, 8, 149, 10, 149, 12, 149, 2149, 9, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2154, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2162, 8, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2169, 8, 153, 1, 153, 1, 153, 3, 153, 2173, 8, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 5, 153, 2181, 8, 153, 10, 153, 12, 153, 2184, 9, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2194, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2202, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 2209, 8, 154, 10, 154, 12, 154, 2212, 9, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2217, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2222, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2228, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2234, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2239, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2244, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 2250, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 2261, 8, 155, 10, 155, 12, 155, 2264, 9, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2290, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2296, 8, 156, 5, 156, 2298, 8, 156, 10, 156, 12, 156, 2301, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2310, 8, 156, 10, 156, 12, 156, 2313, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2322, 8, 156, 1, 156, 3, 156, 2325, 8, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2330, 8, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2335, 8, 156, 10, 156, 12, 156, 2338, 9, 156, 3, 156, 2340, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2347, 8, 156, 10, 156, 12, 156, 2350, 9, 156, 3, 156, 2352, 8, 156, 1, 156, 1, 156, 3, 156, 2356, 8, 156, 1, 156, 3, 156, 2359, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2369, 8, 156, 10, 156, 12, 156, 2372, 9, 156, 3, 156, 2374, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2391, 8, 156, 11, 156, 12, 156, 2392, 1, 156, 1, 156, 3, 156, 2397, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2403, 8, 156, 11, 156, 12, 156, 2404, 1, 156, 1, 156, 3, 156, 2409, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2432, 8, 156, 10, 156, 12, 156, 2435, 9, 156, 3, 156, 2437, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2446, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2452, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2458, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2464, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2475, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2484, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2504, 8, 156, 10, 156, 12, 156, 2507, 9, 156, 3, 156, 2509, 8, 156, 1, 156, 3, 156, 2512, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2522, 8, 156, 10, 156, 12, 156, 2525, 9, 156, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 2531, 8, 157, 3, 157, 2533, 8, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 2555, 8, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2582, 8, 164, 10, 164, 12, 164, 2585, 9, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2591, 8, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2597, 8, 164, 10, 164, 12, 164, 2600, 9, 164, 1, 164, 1, 164, 3, 164, 2604, 8, 164, 3, 164, 2606, 8, 164, 1, 164, 1, 164, 5, 164, 2610, 8, 164, 10, 164, 12, 164, 2613, 9, 164, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 2619, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 2625, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2645, 8, 170, 10, 170, 12, 170, 2648, 9, 170, 3, 170, 2650, 8, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2657, 8, 170, 10, 170, 12, 170, 2660, 9, 170, 3, 170, 2662, 8, 170, 1, 170, 3, 170, 2665, 8, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2685, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2696, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2703, 8, 173, 1, 174, 1, 174, 1, 174, 5, 174, 2708, 8, 174, 10, 174, 12, 174, 2711, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2724, 8, 175, 3, 175, 2726, 8, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 5, 177, 2733, 8, 177, 10, 177, 12, 177, 2736, 9, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 2744, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 2751, 8, 179, 1, 180, 3, 180, 2754, 8, 180, 1, 180, 1, 180, 3, 180, 2758, 8, 180, 1, 180, 1, 180, 3, 180, 2762, 8, 180, 1, 180, 3, 180, 2765, 8, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 10, 770, 1446, 1621, 1661, 1679, 1694, 1725, 1754, 1828, 2299, 6, 260, 280, 306, 310, 312, 328, 183, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 0, 33, 2, 0, 46, 46, 170, 170, 2, 0, 166, 166, 204, 204, 2, 0, 176, 176, 202, 202, 2, 0, 69, 69, 80, 80, 2, 0, 27, 27, 159, 159, 2, 0, 103, 103, 144, 144, 2, 0, 47, 47, 171, 171, 2, 0, 3, 3, 12, 12, 3, 0, 87, 87, 166, 166, 204, 204, 2, 0, 178, 178, 209, 209, 1, 0, 245, 248, 2, 0, 147, 147, 219, 223, 2, 0, 65, 65, 95, 95, 2, 0, 64, 64, 200, 200, 2, 0, 10, 10, 55, 55, 2, 0, 75, 75, 112, 112, 2, 0, 2, 2, 57, 57, 2, 0, 14, 14, 185, 185, 3, 0, 106, 106, 115, 115, 164, 164, 2, 0, 105, 105, 163, 163, 4, 0, 70, 70, 133, 133, 194, 194, 208, 208, 1, 0, 255, 256, 1, 0, 257, 259, 1, 0, 249, 254, 3, 0, 2, 2, 6, 6, 181, 181, 2, 0, 70, 70, 194, 194, 5, 0, 48, 49, 91, 92, 122, 125, 172, 173, 217, 218, 1, 0, 127, 130, 2, 0, 8, 8, 227, 244, 2, 0, 77, 77, 149, 149, 4, 0, 46, 46, 178, 178, 188, 188, 209, 209, 16, 0, 28, 29, 40, 40, 43, 43, 48, 48, 68, 68, 91, 91, 114, 114, 122, 122, 124, 124, 158, 158, 165, 165, 172, 172, 184, 184, 196, 196, 204, 204, 217, 217, 23, 0, 14, 14, 43, 44, 48, 49, 65, 65, 68, 68, 91, 91, 95, 95, 110, 110, 119, 119, 122, 125, 127, 130, 137, 137, 140, 140, 152, 153, 172, 173, 180, 180, 184, 185, 195, 195, 204, 204, 213, 213, 217, 217, 220, 220, 231, 231, 3093, 0, 369, 1, 0, 0, 0, 2, 374, 1, 0, 0, 0, 4, 400, 1, 0, 0, 0, 6, 402, 1, 0, 0, 0, 8, 413, 1, 0, 0, 0, 10, 415, 1, 0, 0, 0, 12, 454, 1, 0, 0, 0, 14, 476, 1, 0, 0, 0, 16, 531, 1, 0, 0, 0, 18, 551, 1, 0, 0, 0, 20, 565, 1, 0, 0, 0, 22, 569, 1, 0, 0, 0, 24, 631, 1, 0, 0, 0, 26, 679, 1, 0, 0, 0, 28, 681, 1, 0, 0, 0, 30, 689, 1, 0, 0, 0, 32, 709, 1, 0, 0, 0, 34, 729, 1, 0, 0, 0, 36, 736, 1, 0, 0, 0, 38, 745, 1, 0, 0, 0, 40, 753, 1, 0, 0, 0, 42, 775, 1, 0, 0, 0, 44, 785, 1, 0, 0, 0, 46, 803, 1, 0, 0, 0, 48, 824, 1, 0, 0, 0, 50, 845, 1, 0, 0, 0, 52, 851, 1, 0, 0, 0, 54, 868, 1, 0, 0, 0, 56, 877, 1, 0, 0, 0, 58, 884, 1, 0, 0, 0, 60, 892, 1, 0, 0, 0, 62, 899, 1, 0, 0, 0, 64, 906, 1, 0, 0, 0, 66, 915, 1, 0, 0, 0, 68, 926, 1, 0, 0, 0, 70, 928, 1, 0, 0, 0, 72, 948, 1, 0, 0, 0, 74, 965, 1, 0, 0, 0, 76, 967, 1, 0, 0, 0, 78, 976, 1, 0, 0, 0, 80, 983, 1, 0, 0, 0, 82, 992, 1, 0, 0, 0, 84, 1002, 1, 0, 0, 0, 86, 1025, 1, 0, 0, 0, 88, 1031, 1, 0, 0, 0, 90, 1033, 1, 0, 0, 0, 92, 1040, 1, 0, 0, 0, 94, 1052, 1, 0, 0, 0, 96, 1054, 1, 0, 0, 0, 98, 1061, 1, 0, 0, 0, 100, 1082, 1, 0, 0, 0, 102, 1111, 1, 0, 0, 0, 104, 1113, 1, 0, 0, 0, 106, 1122, 1, 0, 0, 0, 108, 1145, 1, 0, 0, 0, 110, 1164, 1, 0, 0, 0, 112, 1187, 1, 0, 0, 0, 114, 1189, 1, 0, 0, 0, 116, 1204, 1, 0, 0, 0, 118, 1223, 1, 0, 0, 0, 120, 1245, 1, 0, 0, 0, 122, 1250, 1, 0, 0, 0, 124, 1255, 1, 0, 0, 0, 126, 1260, 1, 0, 0, 0, 128, 1265, 1, 0, 0, 0, 130, 1272, 1, 0, 0, 0, 132, 1287, 1, 0, 0, 0, 134, 1293, 1, 0, 0, 0, 136, 1313, 1, 0, 0, 0, 138, 1315, 1, 0, 0, 0, 140, 1326, 1, 0, 0, 0, 142, 1337, 1, 0, 0, 0, 144, 1351, 1, 0, 0, 0, 146, 1353, 1, 0, 0, 0, 148, 1362, 1, 0, 0, 0, 150, 1371, 1, 0, 0, 0, 152, 1380, 1, 0, 0, 0, 154, 1383, 1, 0, 0, 0, 156, 1391, 1, 0, 0, 0, 158, 1407, 1, 0, 0, 0, 160, 1411, 1, 0, 0, 0, 162, 1435, 1, 0, 0, 0, 164, 1437, 1, 0, 0, 0, 166, 1453, 1, 0, 0, 0, 168, 1456, 1, 0, 0, 0, 170, 1460, 1, 0, 0, 0, 172, 1463, 1, 0, 0, 0, 174, 1467, 1, 0, 0, 0, 176, 1469, 1, 0, 0, 0, 178, 1471, 1, 0, 0, 0, 180, 1473, 1, 0, 0, 0, 182, 1475, 1, 0, 0, 0, 184, 1477, 1, 0, 0, 0, 186, 1479, 1, 0, 0, 0, 188, 1487, 1, 0, 0, 0, 190, 1497, 1, 0, 0, 0, 192, 1501, 1, 0, 0, 0, 194, 1505, 1, 0, 0, 0, 196, 1510, 1, 0, 0, 0, 198, 1551, 1, 0, 0, 0, 200, 1559, 1, 0, 0, 0, 202, 1563, 1, 0, 0, 0, 204, 1583, 1, 0, 0, 0, 206, 1587, 1, 0, 0, 0, 208, 1596, 1, 0, 0, 0, 210, 1626, 1, 0, 0, 0, 212, 1641, 1, 0, 0, 0, 214, 1647, 1, 0, 0, 0, 216, 1653, 1, 0, 0, 0, 218, 1655, 1, 0, 0, 0, 220, 1674, 1, 0, 0, 0, 222, 1684, 1, 0, 0, 0, 224, 1704, 1, 0, 0, 0, 226, 1714, 1, 0, 0, 0, 228, 1716, 1, 0, 0, 0, 230, 1718, 1, 0, 0, 0, 232, 1733, 1, 0, 0, 0, 234, 1735, 1, 0, 0, 0, 236, 1742, 1, 0, 0, 0, 238, 1774, 1, 0, 0, 0, 240, 1786, 1, 0, 0, 0, 242, 1793, 1, 0, 0, 0, 244, 1803, 1, 0, 0, 0, 246, 1805, 1, 0, 0, 0, 248, 1811, 1, 0, 0, 0, 250, 1822, 1, 0, 0, 0, 252, 1833, 1, 0, 0, 0, 254, 1841, 1, 0, 0, 0, 256, 1859, 1, 0, 0, 0, 258, 1864, 1, 0, 0, 0, 260, 1885, 1, 0, 0, 0, 262, 1921, 1, 0, 0, 0, 264, 1923, 1, 0, 0, 0, 266, 1931, 1, 0, 0, 0, 268, 1971, 1, 0, 0, 0, 270, 1981, 1, 0, 0, 0, 272, 1996, 1, 0, 0, 0, 274, 1998, 1, 0, 0, 0, 276, 2005, 1, 0, 0, 0, 278, 2019, 1, 0, 0, 0, 280, 2021, 1, 0, 0, 0, 282, 2071, 1, 0, 0, 0, 284, 2087, 1, 0, 0, 0, 286, 2089, 1, 0, 0, 0, 288, 2104, 1, 0, 0, 0, 290, 2106, 1, 0, 0, 0, 292, 2116, 1, 0, 0, 0, 294, 2134, 1, 0, 0, 0, 296, 2136, 1, 0, 0, 0, 298, 2140, 1, 0, 0, 0, 300, 2155, 1, 0, 0, 0, 302, 2161, 1, 0, 0, 0, 304, 2163, 1, 0, 0, 0, 306, 2172, 1, 0, 0, 0, 308, 2243, 1, 0, 0, 0, 310, 2249, 1, 0, 0, 0, 312, 2511, 1, 0, 0, 0, 314, 2532, 1, 0, 0, 0, 316, 2534, 1, 0, 0, 0, 318, 2536, 1, 0, 0, 0, 320, 2538, 1, 0, 0, 0, 322, 2554, 1, 0, 0, 0, 324, 2556, 1, 0, 0, 0, 326, 2558, 1, 0, 0, 0, 328, 2605, 1, 0, 0, 0, 330, 2614, 1, 0, 0, 0, 332, 2618, 1, 0, 0, 0, 334, 2624, 1, 0, 0, 0, 336, 2626, 1, 0, 0, 0, 338, 2631, 1, 0, 0, 0, 340, 2637, 1, 0, 0, 0, 342, 2684, 1, 0, 0, 0, 344, 2695, 1, 0, 0, 0, 346, 2702, 1, 0, 0, 0, 348, 2704, 1, 0, 0, 0, 350, 2725, 1, 0, 0, 0, 352, 2727, 1, 0, 0, 0, 354, 2729, 1, 0, 0, 0, 356, 2743, 1, 0, 0, 0, 358, 2750, 1, 0, 0, 0, 360, 2764, 1, 0, 0, 0, 362, 2766, 1, 0, 0, 0, 364, 2768, 1, 0, 0, 0, 366, 368, 3, 2, 1, 0, 367, 366, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 372, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 373, 5, 0, 0, 1, 373, 1, 1, 0, 0, 0, 374, 376, 3, 4, 2, 0, 375, 377, 5, 262, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 3, 1, 0, 0, 0, 378, 401, 3, 204, 102, 0, 379, 401, 3, 6, 3, 0, 380, 401, 3, 8, 4, 0, 381, 401, 3, 26, 13, 0, 382, 401, 3, 64, 32, 0, 383, 401, 3, 66, 33, 0, 384, 401, 3, 68, 34, 0, 385, 401, 3, 74, 37, 0, 386, 401, 3, 88, 44, 0, 387, 401, 3, 94, 47, 0, 388, 401, 3, 100, 50, 0, 389, 401, 3, 102, 51, 0, 390, 401, 3, 108, 54, 0, 391, 401, 3, 110, 55, 0, 392, 401, 3, 112, 56, 0, 393, 401, 3, 144, 72, 0, 394, 401, 3, 152, 76, 0, 395, 401, 3, 154, 77, 0, 396, 401, 3, 156, 78, 0, 397, 401, 3, 158, 79, 0, 398, 401, 3, 160, 80, 0, 399, 401, 3, 162, 81, 0, 400, 378, 1, 0, 0, 0, 400, 379, 1, 0, 0, 0, 400, 380, 1, 0, 0, 0, 400, 381, 1, 0, 0, 0, 400, 382, 1, 0, 0, 0, 400, 383, 1, 0, 0, 0, 400, 384, 1, 0, 0, 0, 400, 385, 1, 0, 0, 0, 400, 386, 1, 0, 0, 0, 400, 387, 1, 0, 0, 0, 400, 388, 1, 0, 0, 0, 400, 389, 1, 0, 0, 0, 400, 390, 1, 0, 0, 0, 400, 391, 1, 0, 0, 0, 400, 392, 1, 0, 0, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 5, 1, 0, 0, 0, 402, 403, 5, 203, 0, 0, 403, 404, 3, 184, 92, 0, 404, 7, 1, 0, 0, 0, 405, 414, 3, 18, 9, 0, 406, 414, 3, 20, 10, 0, 407, 414, 3, 22, 11, 0, 408, 414, 3, 24, 12, 0, 409, 414, 3, 16, 8, 0, 410, 414, 3, 14, 7, 0, 411, 414, 3, 12, 6, 0, 412, 414, 3, 10, 5, 0, 413, 405, 1, 0, 0, 0, 413, 406, 1, 0, 0, 0, 413, 407, 1, 0, 0, 0, 413, 408, 1, 0, 0, 0, 413, 409, 1, 0, 0, 0, 413, 410, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 413, 412, 1, 0, 0, 0, 414, 9, 1, 0, 0, 0, 415, 417, 5, 37, 0, 0, 416, 418, 5, 19, 0, 0, 417, 416, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 5, 188, 0, 0, 420, 422, 3, 172, 86, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 439, 3, 174, 87, 0, 424, 425, 5, 265, 0, 0, 425, 430, 3, 214, 107, 0, 426, 427, 5, 263, 0, 0, 427, 429, 3, 214, 107, 0, 428, 426, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 434, 5, 263, 0, 0, 434, 436, 3, 208, 104, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 438, 5, 266, 0, 0, 438, 440, 1, 0, 0, 0, 439, 424, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 447, 1, 0, 0, 0, 441, 442, 5, 17, 0, 0, 442, 445, 5, 26, 0, 0, 443, 446, 3, 292, 146, 0, 444, 446, 3, 250, 125, 0, 445, 443, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 448, 1, 0, 0, 0, 447, 441, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 452, 3, 196, 98, 0, 450, 451, 5, 9, 0, 0, 451, 453, 3, 204, 102, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 11, 1, 0, 0, 0, 454, 456, 5, 37, 0, 0, 455, 457, 5, 19, 0, 0, 456, 455, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 5, 188, 0, 0, 459, 461, 3, 172, 86, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 3, 174, 87, 0, 463, 467, 5, 115, 0, 0, 464, 468, 3, 186, 93, 0, 465, 466, 5, 147, 0, 0, 466, 468, 3, 314, 157, 0, 467, 464, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 472, 1, 0, 0, 0, 469, 470, 5, 17, 0, 0, 470, 471, 5, 26, 0, 0, 471, 473, 3, 250, 125, 0, 472, 469, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 3, 196, 98, 0, 475, 13, 1, 0, 0, 0, 476, 478, 5, 37, 0, 0, 477, 479, 5, 19, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 5, 188, 0, 0, 481, 483, 3, 172, 86, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 502, 3, 174, 87, 0, 485, 486, 5, 265, 0, 0, 486, 491, 3, 216, 108, 0, 487, 488, 5, 263, 0, 0, 488, 490, 3, 216, 108, 0, 489, 487, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 498, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 495, 5, 263, 0, 0, 495, 496, 5, 150, 0, 0, 496, 497, 5, 110, 0, 0, 497, 499, 3, 292, 146, 0, 498, 494, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 5, 266, 0, 0, 501, 503, 1, 0, 0, 0, 502, 485, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 509, 1, 0, 0, 0, 504, 505, 5, 150, 0, 0, 505, 507, 5, 110, 0, 0, 506, 508, 3, 292, 146, 0, 507, 506, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 1, 0, 0, 0, 509, 504, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 514, 1, 0, 0, 0, 511, 512, 5, 145, 0, 0, 512, 513, 5, 26, 0, 0, 513, 515, 3, 232, 116, 0, 514, 511, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 518, 1, 0, 0, 0, 516, 517, 5, 34, 0, 0, 517, 519, 3, 314, 157, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521, 5, 23, 0, 0, 521, 522, 5, 9, 0, 0, 522, 525, 5, 111, 0, 0, 523, 524, 5, 25, 0, 0, 524, 526, 3, 248, 124, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 529, 1, 0, 0, 0, 527, 528, 5, 9, 0, 0, 528, 530, 3, 204, 102, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 15, 1, 0, 0, 0, 531, 532, 5, 37, 0, 0, 532, 534, 5, 212, 0, 0, 533, 535, 3, 172, 86, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 3, 178, 89, 0, 537, 539, 3, 202, 101, 0, 538, 537, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 541, 5, 34, 0, 0, 541, 543, 3, 314, 157, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 545, 5, 25, 0, 0, 545, 547, 3, 248, 124, 0, 546, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 5, 9, 0, 0, 549, 550, 3, 204, 102, 0, 550, 17, 1, 0, 0, 0, 551, 552, 5, 37, 0, 0, 552, 554, 7, 0, 0, 0, 553, 555, 3, 172, 86, 0, 554, 553, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 559, 3, 176, 88, 0, 557, 558, 5, 34, 0, 0, 558, 560, 3, 314, 157, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 562, 5, 24, 0, 0, 562, 564, 3, 314, 157, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 19, 1, 0, 0, 0, 565, 566, 5, 37, 0, 0, 566, 567, 5, 166, 0, 0, 567, 568, 3, 358, 179, 0, 568, 21, 1, 0, 0, 0, 569, 571, 5, 37, 0, 0, 570, 572, 5, 12, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 5, 84, 0, 0, 574, 576, 3, 172, 86, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 590, 3, 180, 90, 0, 578, 587, 5, 265, 0, 0, 579, 584, 3, 328, 164, 0, 580, 581, 5, 263, 0, 0, 581, 583, 3, 328, 164, 0, 582, 580, 1, 0, 0, 0, 583, 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 587, 579, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 5, 266, 0, 0, 590, 578, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 5, 160, 0, 0, 593, 596, 3, 328, 164, 0, 594, 595, 5, 102, 0, 0, 595, 597, 3, 328, 164, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 5, 24, 0, 0, 599, 603, 5, 274, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 249, 0, 0, 602, 604, 5, 274, 0, 0, 603, 600, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 5, 206, 0, 0, 606, 607, 5, 249, 0, 0, 607, 608, 5, 274, 0, 0, 608, 609, 5, 126, 0, 0, 609, 610, 5, 249, 0, 0, 610, 614, 5, 274, 0, 0, 611, 612, 5, 18, 0, 0, 612, 613, 5, 249, 0, 0, 613, 615, 5, 274, 0, 0, 614, 611, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 619, 1, 0, 0, 0, 616, 617, 5, 20, 0, 0, 617, 618, 5, 249, 0, 0, 618, 620, 5, 274, 0, 0, 619, 616, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 624, 1, 0, 0, 0, 621, 622, 5, 187, 0, 0, 622, 623, 5, 249, 0, 0, 623, 625, 5, 274, 0, 0, 624, 621, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 629, 1, 0, 0, 0, 626, 627, 5, 76, 0, 0, 627, 628, 5, 249, 0, 0, 628, 630, 5, 274, 0, 0, 629, 626, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 23, 1, 0, 0, 0, 631, 632, 5, 37, 0, 0, 632, 634, 5, 84, 0, 0, 633, 635, 3, 172, 86, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 649, 3, 180, 90, 0, 637, 646, 5, 265, 0, 0, 638, 643, 3, 328, 164, 0, 639, 640, 5, 263, 0, 0, 640, 642, 3, 328, 164, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 638, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 5, 266, 0, 0, 649, 637, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 652, 5, 160, 0, 0, 652, 654, 3, 328, 164, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 5, 24, 0, 0, 656, 657, 5, 274, 0, 0, 657, 658, 5, 186, 0, 0, 658, 659, 5, 249, 0, 0, 659, 660, 3, 314, 157, 0, 660, 25, 1, 0, 0, 0, 661, 680, 3, 28, 14, 0, 662, 680, 3, 62, 31, 0, 663, 680, 3, 60, 30, 0, 664, 680, 3, 58, 29, 0, 665, 680, 3, 54, 27, 0, 666, 680, 3, 56, 28, 0, 667, 680, 3, 52, 26, 0, 668, 680, 3, 48, 24, 0, 669, 680, 3, 50, 25, 0, 670, 680, 3, 46, 23, 0, 671, 680, 3, 44, 22, 0, 672, 680, 3, 42, 21, 0, 673, 680, 3, 40, 20, 0, 674, 680, 3, 34, 17, 0, 675, 680, 3, 30, 15, 0, 676, 680, 3, 32, 16, 0, 677, 680, 3, 36, 18, 0, 678, 680, 3, 38, 19, 0, 679, 661, 1, 0, 0, 0, 679, 662, 1, 0, 0, 0, 679, 663, 1, 0, 0, 0, 679, 664, 1, 0, 0, 0, 679, 665, 1, 0, 0, 0, 679, 666, 1, 0, 0, 0, 679, 667, 1, 0, 0, 0, 679, 668, 1, 0, 0, 0, 679, 669, 1, 0, 0, 0, 679, 670, 1, 0, 0, 0, 679, 671, 1, 0, 0, 0, 679, 672, 1, 0, 0, 0, 679, 673, 1, 0, 0, 0, 679, 674, 1, 0, 0, 0, 679, 675, 1, 0, 0, 0, 679, 676, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 678, 1, 0, 0, 0, 680, 27, 1, 0, 0, 0, 681, 682, 5, 4, 0, 0, 682, 683, 5, 46, 0, 0, 683, 684, 3, 184, 92, 0, 684, 685, 5, 176, 0, 0, 685, 686, 5, 142, 0, 0, 686, 687, 7, 1, 0, 0, 687, 688, 3, 358, 179, 0, 688, 29, 1, 0, 0, 0, 689, 690, 5, 4, 0, 0, 690, 691, 5, 188, 0, 0, 691, 692, 3, 186, 93, 0, 692, 693, 5, 176, 0, 0, 693, 694, 5, 32, 0, 0, 694, 695, 5, 182, 0, 0, 695, 696, 3, 192, 96, 0, 696, 697, 5, 265, 0, 0, 697, 698, 3, 228, 114, 0, 698, 699, 5, 249, 0, 0, 699, 705, 3, 314, 157, 0, 700, 701, 5, 263, 0, 0, 701, 702, 3, 228, 114, 0, 702, 703, 5, 249, 0, 0, 703, 704, 3, 314, 157, 0, 704, 706, 1, 0, 0, 0, 705, 700, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 5, 266, 0, 0, 708, 31, 1, 0, 0, 0, 709, 710, 5, 4, 0, 0, 710, 711, 5, 188, 0, 0, 711, 714, 3, 186, 93, 0, 712, 713, 5, 145, 0, 0, 713, 715, 3, 304, 152, 0, 714, 712, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 727, 5, 176, 0, 0, 717, 718, 5, 30, 0, 0, 718, 719, 5, 94, 0, 0, 719, 724, 3, 314, 157, 0, 720, 721, 5, 216, 0, 0, 721, 722, 5, 151, 0, 0, 722, 723, 5, 249, 0, 0, 723, 725, 3, 360, 180, 0, 724, 720, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 728, 1, 0, 0, 0, 726, 728, 5, 197, 0, 0, 727, 717, 1, 0, 0, 0, 727, 726, 1, 0, 0, 0, 728, 33, 1, 0, 0, 0, 729, 730, 5, 4, 0, 0, 730, 731, 5, 188, 0, 0, 731, 732, 3, 186, 93, 0, 732, 733, 5, 31, 0, 0, 733, 734, 3, 192, 96, 0, 734, 735, 3, 220, 110, 0, 735, 35, 1, 0, 0, 0, 736, 737, 5, 4, 0, 0, 737, 738, 5, 188, 0, 0, 738, 739, 3, 186, 93, 0, 739, 741, 5, 58, 0, 0, 740, 742, 5, 32, 0, 0, 741, 740, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 3, 192, 96, 0, 744, 37, 1, 0, 0, 0, 745, 746, 5, 4, 0, 0, 746, 747, 5, 188, 0, 0, 747, 748, 3, 186, 93, 0, 748, 749, 5, 176, 0, 0, 749, 750, 5, 142, 0, 0, 750, 751, 7, 1, 0, 0, 751, 752, 3, 358, 179, 0, 752, 39, 1, 0, 0, 0, 753, 754, 5, 4, 0, 0, 754, 755, 5, 188, 0, 0, 755, 761, 3, 186, 93, 0, 756, 762, 5, 158, 0, 0, 757, 759, 5, 1, 0, 0, 758, 760, 3, 172, 86, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 756, 1, 0, 0, 0, 761, 757, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 5, 33, 0, 0, 764, 765, 5, 265, 0, 0, 765, 770, 3, 220, 110, 0, 766, 767, 5, 263, 0, 0, 767, 769, 3, 220, 110, 0, 768, 766, 1, 0, 0, 0, 769, 772, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 773, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 773, 774, 5, 266, 0, 0, 774, 41, 1, 0, 0, 0, 775, 776, 5, 4, 0, 0, 776, 777, 5, 188, 0, 0, 777, 778, 3, 186, 93, 0, 778, 779, 5, 1, 0, 0, 779, 781, 5, 32, 0, 0, 780, 782, 3, 172, 86, 0, 781, 780, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 3, 222, 111, 0, 784, 43, 1, 0, 0, 0, 785, 786, 5, 4, 0, 0, 786, 787, 5, 188, 0, 0, 787, 788, 3, 186, 93, 0, 788, 790, 5, 4, 0, 0, 789, 791, 5, 32, 0, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 801, 3, 192, 96, 0, 793, 797, 5, 176, 0, 0, 794, 798, 3, 226, 113, 0, 795, 796, 5, 34, 0, 0, 796, 798, 3, 314, 157, 0, 797, 794, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 800, 5, 58, 0, 0, 800, 802, 5, 51, 0, 0, 801, 793, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 45, 1, 0, 0, 0, 803, 804, 5, 4, 0, 0, 804, 805, 5, 188, 0, 0, 805, 806, 3, 186, 93, 0, 806, 808, 5, 1, 0, 0, 807, 809, 3, 172, 86, 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 822, 1, 0, 0, 0, 810, 811, 5, 145, 0, 0, 811, 814, 3, 304, 152, 0, 812, 813, 5, 24, 0, 0, 813, 815, 3, 314, 157, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 818, 3, 240, 120, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 823, 1, 0, 0, 0, 819, 820, 5, 154, 0, 0, 820, 821, 5, 145, 0, 0, 821, 823, 3, 238, 119, 0, 822, 810, 1, 0, 0, 0, 822, 819, 1, 0, 0, 0, 823, 47, 1, 0, 0, 0, 824, 825, 5, 4, 0, 0, 825, 826, 5, 188, 0, 0, 826, 829, 3, 186, 93, 0, 827, 828, 5, 145, 0, 0, 828, 830, 3, 304, 152, 0, 829, 827, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 843, 5, 176, 0, 0, 832, 833, 5, 72, 0, 0, 833, 844, 3, 230, 115, 0, 834, 835, 5, 168, 0, 0, 835, 836, 5, 79, 0, 0, 836, 844, 3, 254, 127, 0, 837, 838, 5, 24, 0, 0, 838, 844, 3, 314, 157, 0, 839, 840, 5, 25, 0, 0, 840, 844, 3, 248, 124, 0, 841, 842, 5, 175, 0, 0, 842, 844, 3, 248, 124, 0, 843, 832, 1, 0, 0, 0, 843, 834, 1, 0, 0, 0, 843, 837, 1, 0, 0, 0, 843, 839, 1, 0, 0, 0, 843, 841, 1, 0, 0, 0, 844, 49, 1, 0, 0, 0, 845, 846, 5, 4, 0, 0, 846, 847, 5, 188, 0, 0, 847, 848, 3, 186, 93, 0, 848, 849, 5, 155, 0, 0, 849, 850, 5, 146, 0, 0, 850, 51, 1, 0, 0, 0, 851, 852, 5, 4, 0, 0, 852, 853, 5, 188, 0, 0, 853, 854, 3, 186, 93, 0, 854, 856, 5, 58, 0, 0, 855, 857, 3, 170, 85, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 866, 1, 0, 0, 0, 858, 859, 5, 145, 0, 0, 859, 861, 3, 304, 152, 0, 860, 862, 5, 22, 0, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 867, 1, 0, 0, 0, 863, 864, 5, 154, 0, 0, 864, 865, 5, 145, 0, 0, 865, 867, 3, 238, 119, 0, 866, 858, 1, 0, 0, 0, 866, 863, 1, 0, 0, 0, 867, 53, 1, 0, 0, 0, 868, 869, 5, 4, 0, 0, 869, 870, 5, 212, 0, 0, 870, 872, 3, 188, 94, 0, 871, 873, 3, 202, 101, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 9, 0, 0, 875, 876, 3, 204, 102, 0, 876, 55, 1, 0, 0, 0, 877, 878, 5, 4, 0, 0, 878, 879, 5, 212, 0, 0, 879, 880, 3, 188, 94, 0, 880, 881, 5, 156, 0, 0, 881, 882, 5, 193, 0, 0, 882, 883, 3, 188, 94, 0, 883, 57, 1, 0, 0, 0, 884, 885, 5, 4, 0, 0, 885, 886, 5, 212, 0, 0, 886, 887, 3, 188, 94, 0, 887, 888, 5, 176, 0, 0, 888, 889, 5, 142, 0, 0, 889, 890, 7, 1, 0, 0, 890, 891, 3, 354, 177, 0, 891, 59, 1, 0, 0, 0, 892, 893, 5, 4, 0, 0, 893, 894, 5, 188, 0, 0, 894, 895, 3, 186, 93, 0, 895, 896, 5, 156, 0, 0, 896, 897, 5, 193, 0, 0, 897, 898, 3, 186, 93, 0, 898, 61, 1, 0, 0, 0, 899, 900, 5, 4, 0, 0, 900, 901, 5, 212, 0, 0, 901, 902, 3, 188, 94, 0, 902, 903, 7, 2, 0, 0, 903, 904, 5, 25, 0, 0, 904, 905, 3, 248, 124, 0, 905, 63, 1, 0, 0, 0, 906, 908, 5, 196, 0, 0, 907, 909, 5, 188, 0, 0, 908, 907, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 1, 0, 0, 0, 910, 912, 3, 170, 85, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 3, 186, 93, 0, 914, 65, 1, 0, 0, 0, 915, 917, 5, 56, 0, 0, 916, 918, 5, 46, 0, 0, 917, 916, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 920, 1, 0, 0, 0, 919, 921, 7, 3, 0, 0, 920, 919, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 3, 354, 177, 0, 923, 67, 1, 0, 0, 0, 924, 927, 3, 70, 35, 0, 925, 927, 3, 72, 36, 0, 926, 924, 1, 0, 0, 0, 926, 925, 1, 0, 0, 0, 927, 69, 1, 0, 0, 0, 928, 929, 5, 36, 0, 0, 929, 930, 5, 182, 0, 0, 930, 932, 3, 186, 93, 0, 931, 933, 3, 292, 146, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 946, 1, 0, 0, 0, 934, 935, 5, 190, 0, 0, 935, 936, 5, 185, 0, 0, 936, 937, 5, 265, 0, 0, 937, 938, 3, 360, 180, 0, 938, 944, 5, 266, 0, 0, 939, 940, 5, 157, 0, 0, 940, 941, 5, 265, 0, 0, 941, 942, 3, 360, 180, 0, 942, 943, 5, 266, 0, 0, 943, 945, 1, 0, 0, 0, 944, 939, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 947, 1, 0, 0, 0, 946, 934, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 71, 1, 0, 0, 0, 948, 949, 5, 36, 0, 0, 949, 950, 5, 96, 0, 0, 950, 951, 5, 182, 0, 0, 951, 957, 3, 186, 93, 0, 952, 953, 5, 145, 0, 0, 953, 954, 5, 265, 0, 0, 954, 955, 3, 304, 152, 0, 955, 956, 5, 266, 0, 0, 956, 958, 1, 0, 0, 0, 957, 952, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 73, 1, 0, 0, 0, 959, 966, 3, 86, 43, 0, 960, 966, 3, 84, 42, 0, 961, 966, 3, 82, 41, 0, 962, 966, 3, 78, 39, 0, 963, 966, 3, 80, 40, 0, 964, 966, 3, 76, 38, 0, 965, 959, 1, 0, 0, 0, 965, 960, 1, 0, 0, 0, 965, 961, 1, 0, 0, 0, 965, 962, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 965, 964, 1, 0, 0, 0, 966, 75, 1, 0, 0, 0, 967, 968, 5, 58, 0, 0, 968, 970, 7, 0, 0, 0, 969, 971, 3, 170, 85, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 3, 184, 92, 0, 973, 975, 7, 4, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 77, 1, 0, 0, 0, 976, 977, 5, 58, 0, 0, 977, 979, 5, 212, 0, 0, 978, 980, 3, 170, 85, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 3, 188, 94, 0, 982, 79, 1, 0, 0, 0, 983, 984, 5, 58, 0, 0, 984, 986, 5, 188, 0, 0, 985, 987, 3, 170, 85, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 3, 186, 93, 0, 989, 991, 5, 22, 0, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 81, 1, 0, 0, 0, 992, 994, 5, 58, 0, 0, 993, 995, 5, 96, 0, 0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 5, 182, 0, 0, 997, 1000, 3, 186, 93, 0, 998, 999, 5, 145, 0, 0, 999, 1001, 3, 304, 152, 0, 1000, 998, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 83, 1, 0, 0, 0, 1002, 1004, 5, 58, 0, 0, 1003, 1005, 5, 12, 0, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1008, 5, 84, 0, 0, 1007, 1009, 3, 170, 85, 0, 1008, 1007, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 1023, 3, 190, 95, 0, 1011, 1020, 5, 265, 0, 0, 1012, 1017, 3, 328, 164, 0, 1013, 1014, 5, 263, 0, 0, 1014, 1016, 3, 328, 164, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1021, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1012, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1024, 5, 266, 0, 0, 1023, 1011, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 85, 1, 0, 0, 0, 1025, 1026, 5, 58, 0, 0, 1026, 1027, 5, 166, 0, 0, 1027, 1028, 3, 358, 179, 0, 1028, 87, 1, 0, 0, 0, 1029, 1032, 3, 90, 45, 0, 1030, 1032, 3, 92, 46, 0, 1031, 1029, 1, 0, 0, 0, 1031, 1030, 1, 0, 0, 0, 1032, 89, 1, 0, 0, 0, 1033, 1034, 5, 86, 0, 0, 1034, 1035, 5, 166, 0, 0, 1035, 1036, 3, 358, 179, 0, 1036, 1037, 5, 193, 0, 0, 1037, 1038, 5, 87, 0, 0, 1038, 1039, 3, 358, 179, 0, 1039, 91, 1, 0, 0, 0, 1040, 1041, 5, 86, 0, 0, 1041, 1042, 3, 350, 175, 0, 1042, 1043, 5, 136, 0, 0, 1043, 1045, 3, 352, 176, 0, 1044, 1046, 3, 354, 177, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 5, 193, 0, 0, 1048, 1049, 3, 356, 178, 0, 1049, 93, 1, 0, 0, 0, 1050, 1053, 3, 96, 48, 0, 1051, 1053, 3, 98, 49, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1051, 1, 0, 0, 0, 1053, 95, 1, 0, 0, 0, 1054, 1055, 5, 161, 0, 0, 1055, 1056, 5, 166, 0, 0, 1056, 1057, 3, 358, 179, 0, 1057, 1058, 5, 82, 0, 0, 1058, 1059, 5, 87, 0, 0, 1059, 1060, 3, 358, 179, 0, 1060, 97, 1, 0, 0, 0, 1061, 1065, 5, 161, 0, 0, 1062, 1063, 5, 86, 0, 0, 1063, 1064, 5, 137, 0, 0, 1064, 1066, 5, 78, 0, 0, 1065, 1062, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 3, 350, 175, 0, 1068, 1069, 5, 136, 0, 0, 1069, 1071, 3, 352, 176, 0, 1070, 1072, 3, 354, 177, 0, 1071, 1070, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1079, 5, 82, 0, 0, 1074, 1080, 3, 356, 178, 0, 1075, 1077, 5, 166, 0, 0, 1076, 1075, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1080, 3, 358, 179, 0, 1079, 1074, 1, 0, 0, 0, 1079, 1076, 1, 0, 0, 0, 1080, 99, 1, 0, 0, 0, 1081, 1083, 3, 206, 103, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 5, 99, 0, 0, 1085, 1087, 7, 5, 0, 0, 1086, 1088, 5, 188, 0, 0, 1087, 1086, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1091, 3, 186, 93, 0, 1090, 1092, 3, 292, 146, 0, 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1105, 1, 0, 0, 0, 1093, 1094, 5, 145, 0, 0, 1094, 1095, 5, 265, 0, 0, 1095, 1100, 3, 304, 152, 0, 1096, 1097, 5, 263, 0, 0, 1097, 1099, 3, 304, 152, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1102, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1100, 1101, 1, 0, 0, 0, 1101, 1103, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1103, 1104, 5, 266, 0, 0, 1104, 1106, 1, 0, 0, 0, 1105, 1093, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 3, 204, 102, 0, 1108, 101, 1, 0, 0, 0, 1109, 1112, 3, 104, 52, 0, 1110, 1112, 3, 106, 53, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 103, 1, 0, 0, 0, 1113, 1115, 5, 50, 0, 0, 1114, 1116, 5, 82, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1120, 3, 186, 93, 0, 1118, 1119, 5, 215, 0, 0, 1119, 1121, 3, 306, 153, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 105, 1, 0, 0, 0, 1122, 1123, 5, 50, 0, 0, 1123, 1128, 3, 186, 93, 0, 1124, 1126, 5, 9, 0, 0, 1125, 1124, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1129, 3, 358, 179, 0, 1128, 1125, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1139, 5, 82, 0, 0, 1131, 1136, 3, 280, 140, 0, 1132, 1133, 5, 263, 0, 0, 1133, 1135, 3, 280, 140, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1138, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1143, 1, 0, 0, 0, 1141, 1142, 5, 215, 0, 0, 1142, 1144, 3, 306, 153, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 107, 1, 0, 0, 0, 1145, 1146, 5, 54, 0, 0, 1146, 1147, 3, 186, 93, 0, 1147, 1148, 5, 176, 0, 0, 1148, 1158, 3, 198, 99, 0, 1149, 1150, 5, 82, 0, 0, 1150, 1155, 3, 280, 140, 0, 1151, 1152, 5, 263, 0, 0, 1152, 1154, 3, 280, 140, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1149, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1161, 5, 215, 0, 0, 1161, 1163, 3, 306, 153, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 109, 1, 0, 0, 0, 1164, 1165, 5, 207, 0, 0, 1165, 1167, 5, 103, 0, 0, 1166, 1168, 5, 188, 0, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1171, 3, 186, 93, 0, 1170, 1172, 3, 292, 146, 0, 1171, 1170, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 3, 204, 102, 0, 1174, 111, 1, 0, 0, 0, 1175, 1188, 3, 132, 66, 0, 1176, 1188, 3, 134, 67, 0, 1177, 1188, 3, 136, 68, 0, 1178, 1188, 3, 130, 65, 0, 1179, 1188, 3, 128, 64, 0, 1180, 1188, 3, 126, 63, 0, 1181, 1188, 3, 124, 62, 0, 1182, 1188, 3, 122, 61, 0, 1183, 1188, 3, 120, 60, 0, 1184, 1188, 3, 118, 59, 0, 1185, 1188, 3, 116, 58, 0, 1186, 1188, 3, 114, 57, 0, 1187, 1175, 1, 0, 0, 0, 1187, 1176, 1, 0, 0, 0, 1187, 1177, 1, 0, 0, 0, 1187, 1178, 1, 0, 0, 0, 1187, 1179, 1, 0, 0, 0, 1187, 1180, 1, 0, 0, 0, 1187, 1181, 1, 0, 0, 0, 1187, 1182, 1, 0, 0, 0, 1187, 1183, 1, 0, 0, 0, 1187, 1184, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1186, 1, 0, 0, 0, 1188, 113, 1, 0, 0, 0, 1189, 1190, 5, 179, 0, 0, 1190, 1202, 7, 6, 0, 0, 1191, 1193, 5, 115, 0, 0, 1192, 1191, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1199, 3, 314, 157, 0, 1195, 1196, 5, 271, 0, 0, 1196, 1198, 3, 314, 157, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 115, 1, 0, 0, 0, 1204, 1205, 5, 179, 0, 0, 1205, 1208, 5, 189, 0, 0, 1206, 1207, 5, 94, 0, 0, 1207, 1209, 3, 186, 93, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1221, 1, 0, 0, 0, 1210, 1212, 5, 115, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1218, 3, 314, 157, 0, 1214, 1215, 5, 271, 0, 0, 1215, 1217, 3, 314, 157, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1220, 1, 0, 0, 0, 1218, 1216, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1221, 1211, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 117, 1, 0, 0, 0, 1223, 1225, 5, 179, 0, 0, 1224, 1226, 7, 7, 0, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1230, 5, 85, 0, 0, 1228, 1229, 5, 94, 0, 0, 1229, 1231, 3, 184, 92, 0, 1230, 1228, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1243, 1, 0, 0, 0, 1232, 1234, 5, 115, 0, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1240, 3, 314, 157, 0, 1236, 1237, 5, 271, 0, 0, 1237, 1239, 3, 314, 157, 0, 1238, 1236, 1, 0, 0, 0, 1239, 1242, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1244, 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1233, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 119, 1, 0, 0, 0, 1245, 1246, 5, 179, 0, 0, 1246, 1247, 5, 37, 0, 0, 1247, 1248, 5, 188, 0, 0, 1248, 1249, 3, 186, 93, 0, 1249, 121, 1, 0, 0, 0, 1250, 1251, 5, 179, 0, 0, 1251, 1252, 5, 37, 0, 0, 1252, 1253, 5, 212, 0, 0, 1253, 1254, 3, 188, 94, 0, 1254, 123, 1, 0, 0, 0, 1255, 1256, 5, 179, 0, 0, 1256, 1257, 5, 188, 0, 0, 1257, 1258, 5, 182, 0, 0, 1258, 1259, 3, 186, 93, 0, 1259, 125, 1, 0, 0, 0, 1260, 1261, 5, 179, 0, 0, 1261, 1262, 5, 32, 0, 0, 1262, 1263, 5, 182, 0, 0, 1263, 1264, 3, 186, 93, 0, 1264, 127, 1, 0, 0, 0, 1265, 1267, 5, 179, 0, 0, 1266, 1268, 5, 154, 0, 0, 1267, 1266, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 5, 146, 0, 0, 1270, 1271, 3, 186, 93, 0, 1271, 129, 1, 0, 0, 0, 1272, 1273, 5, 179, 0, 0, 1273, 1274, 5, 73, 0, 0, 1274, 1275, 5, 94, 0, 0, 1275, 1285, 3, 186, 93, 0, 1276, 1277, 5, 145, 0, 0, 1277, 1278, 5, 265, 0, 0, 1278, 1281, 3, 304, 152, 0, 1279, 1280, 5, 263, 0, 0, 1280, 1282, 3, 304, 152, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 5, 266, 0, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1276, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 131, 1, 0, 0, 0, 1287, 1289, 5, 179, 0, 0, 1288, 1290, 5, 39, 0, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 5, 167, 0, 0, 1292, 133, 1, 0, 0, 0, 1293, 1294, 5, 179, 0, 0, 1294, 1295, 5, 166, 0, 0, 1295, 1296, 5, 86, 0, 0, 1296, 1297, 5, 87, 0, 0, 1297, 1298, 3, 358, 179, 0, 1298, 135, 1, 0, 0, 0, 1299, 1314, 3, 138, 69, 0, 1300, 1314, 3, 140, 70, 0, 1301, 1314, 3, 142, 71, 0, 1302, 1303, 5, 179, 0, 0, 1303, 1304, 5, 86, 0, 0, 1304, 1305, 7, 8, 0, 0, 1305, 1311, 3, 358, 179, 0, 1306, 1307, 5, 136, 0, 0, 1307, 1309, 7, 9, 0, 0, 1308, 1310, 3, 354, 177, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1306, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1299, 1, 0, 0, 0, 1313, 1300, 1, 0, 0, 0, 1313, 1301, 1, 0, 0, 0, 1313, 1302, 1, 0, 0, 0, 1314, 137, 1, 0, 0, 0, 1315, 1316, 5, 179, 0, 0, 1316, 1317, 5, 86, 0, 0, 1317, 1318, 7, 8, 0, 0, 1318, 1324, 3, 358, 179, 0, 1319, 1320, 5, 136, 0, 0, 1320, 1322, 5, 46, 0, 0, 1321, 1323, 3, 184, 92, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1319, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 139, 1, 0, 0, 0, 1326, 1327, 5, 179, 0, 0, 1327, 1328, 5, 86, 0, 0, 1328, 1329, 7, 8, 0, 0, 1329, 1335, 3, 358, 179, 0, 1330, 1331, 5, 136, 0, 0, 1331, 1333, 5, 188, 0, 0, 1332, 1334, 3, 186, 93, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 1, 0, 0, 0, 1335, 1330, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 141, 1, 0, 0, 0, 1337, 1338, 5, 179, 0, 0, 1338, 1339, 5, 86, 0, 0, 1339, 1340, 7, 8, 0, 0, 1340, 1346, 3, 358, 179, 0, 1341, 1342, 5, 136, 0, 0, 1342, 1344, 5, 32, 0, 0, 1343, 1345, 3, 192, 96, 0, 1344, 1343, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1341, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 143, 1, 0, 0, 0, 1348, 1352, 3, 146, 73, 0, 1349, 1352, 3, 148, 74, 0, 1350, 1352, 3, 150, 75, 0, 1351, 1348, 1, 0, 0, 0, 1351, 1349, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 145, 1, 0, 0, 0, 1353, 1354, 5, 34, 0, 0, 1354, 1355, 5, 136, 0, 0, 1355, 1356, 5, 46, 0, 0, 1356, 1357, 3, 184, 92, 0, 1357, 1360, 5, 108, 0, 0, 1358, 1361, 3, 314, 157, 0, 1359, 1361, 5, 133, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 147, 1, 0, 0, 0, 1362, 1363, 5, 34, 0, 0, 1363, 1364, 5, 136, 0, 0, 1364, 1365, 5, 188, 0, 0, 1365, 1366, 3, 186, 93, 0, 1366, 1369, 5, 108, 0, 0, 1367, 1370, 3, 314, 157, 0, 1368, 1370, 5, 133, 0, 0, 1369, 1367, 1, 0, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 149, 1, 0, 0, 0, 1371, 1372, 5, 34, 0, 0, 1372, 1373, 5, 136, 0, 0, 1373, 1374, 5, 32, 0, 0, 1374, 1375, 3, 192, 96, 0, 1375, 1378, 5, 108, 0, 0, 1376, 1379, 3, 314, 157, 0, 1377, 1379, 5, 133, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 151, 1, 0, 0, 0, 1380, 1381, 5, 67, 0, 0, 1381, 1382, 3, 4, 2, 0, 1382, 153, 1, 0, 0, 0, 1383, 1389, 5, 176, 0, 0, 1384, 1390, 5, 2, 0, 0, 1385, 1386, 3, 358, 179, 0, 1386, 1387, 5, 249, 0, 0, 1387, 1388, 3, 304, 152, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1384, 1, 0, 0, 0, 1389, 1385, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 155, 1, 0, 0, 0, 1391, 1392, 5, 264, 0, 0, 1392, 1393, 5, 180, 0, 0, 1393, 1403, 5, 265, 0, 0, 1394, 1396, 3, 314, 157, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1404, 1, 0, 0, 0, 1397, 1400, 3, 314, 157, 0, 1398, 1399, 5, 263, 0, 0, 1399, 1401, 3, 304, 152, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1404, 3, 304, 152, 0, 1403, 1395, 1, 0, 0, 0, 1403, 1397, 1, 0, 0, 0, 1403, 1402, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 266, 0, 0, 1406, 157, 1, 0, 0, 0, 1407, 1408, 5, 107, 0, 0, 1408, 1409, 5, 121, 0, 0, 1409, 1410, 3, 186, 93, 0, 1410, 159, 1, 0, 0, 0, 1411, 1412, 5, 118, 0, 0, 1412, 1413, 5, 45, 0, 0, 1413, 1414, 5, 98, 0, 0, 1414, 1416, 5, 274, 0, 0, 1415, 1417, 5, 144, 0, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1419, 5, 103, 0, 0, 1419, 1420, 5, 188, 0, 0, 1420, 1430, 3, 186, 93, 0, 1421, 1422, 5, 145, 0, 0, 1422, 1423, 5, 265, 0, 0, 1423, 1426, 3, 304, 152, 0, 1424, 1425, 5, 263, 0, 0, 1425, 1427, 3, 304, 152, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 5, 266, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1421, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 161, 1, 0, 0, 0, 1432, 1436, 3, 164, 82, 0, 1433, 1436, 3, 166, 83, 0, 1434, 1436, 3, 168, 84, 0, 1435, 1432, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1435, 1434, 1, 0, 0, 0, 1436, 163, 1, 0, 0, 0, 1437, 1438, 5, 162, 0, 0, 1438, 1451, 3, 186, 93, 0, 1439, 1440, 5, 145, 0, 0, 1440, 1441, 5, 265, 0, 0, 1441, 1446, 3, 304, 152, 0, 1442, 1443, 5, 263, 0, 0, 1443, 1445, 3, 304, 152, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1448, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1447, 1449, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1449, 1450, 5, 266, 0, 0, 1450, 1452, 1, 0, 0, 0, 1451, 1439, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 165, 1, 0, 0, 0, 1453, 1454, 5, 162, 0, 0, 1454, 1455, 5, 13, 0, 0, 1455, 167, 1, 0, 0, 0, 1456, 1457, 5, 162, 0, 0, 1457, 1458, 5, 85, 0, 0, 1458, 1459, 3, 190, 95, 0, 1459, 169, 1, 0, 0, 0, 1460, 1461, 5, 93, 0, 0, 1461, 1462, 5, 66, 0, 0, 1462, 171, 1, 0, 0, 0, 1463, 1464, 5, 93, 0, 0, 1464, 1465, 5, 132, 0, 0, 1465, 1466, 5, 66, 0, 0, 1466, 173, 1, 0, 0, 0, 1467, 1468, 3, 354, 177, 0, 1468, 175, 1, 0, 0, 0, 1469, 1470, 3, 354, 177, 0, 1470, 177, 1, 0, 0, 0, 1471, 1472, 3, 354, 177, 0, 1472, 179, 1, 0, 0, 0, 1473, 1474, 3, 354, 177, 0, 1474, 181, 1, 0, 0, 0, 1475, 1476, 3, 354, 177, 0, 1476, 183, 1, 0, 0, 0, 1477, 1478, 3, 354, 177, 0, 1478, 185, 1, 0, 0, 0, 1479, 1484, 3, 358, 179, 0, 1480, 1481, 5, 261, 0, 0, 1481, 1483, 3, 358, 179, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 187, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1492, 3, 358, 179, 0, 1488, 1489, 5, 261, 0, 0, 1489, 1491, 3, 358, 179, 0, 1490, 1488, 1, 0, 0, 0, 1491, 1494, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 189, 1, 0, 0, 0, 1494, 1492, 1, 0, 0, 0, 1495, 1498, 3, 362, 181, 0, 1496, 1498, 3, 354, 177, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1496, 1, 0, 0, 0, 1498, 191, 1, 0, 0, 0, 1499, 1502, 3, 354, 177, 0, 1500, 1502, 4, 96, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1500, 1, 0, 0, 0, 1502, 193, 1, 0, 0, 0, 1503, 1506, 3, 186, 93, 0, 1504, 1506, 3, 188, 94, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1504, 1, 0, 0, 0, 1506, 195, 1, 0, 0, 0, 1507, 1508, 5, 21, 0, 0, 1508, 1509, 5, 26, 0, 0, 1509, 1511, 3, 292, 146, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1514, 1, 0, 0, 0, 1512, 1513, 5, 34, 0, 0, 1513, 1515, 3, 314, 157, 0, 1514, 1512, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1519, 1, 0, 0, 0, 1516, 1517, 5, 168, 0, 0, 1517, 1518, 5, 79, 0, 0, 1518, 1520, 3, 254, 127, 0, 1519, 1516, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1524, 1, 0, 0, 0, 1521, 1522, 5, 216, 0, 0, 1522, 1523, 5, 175, 0, 0, 1523, 1525, 3, 248, 124, 0, 1524, 1521, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1529, 1, 0, 0, 0, 1526, 1527, 5, 23, 0, 0, 1527, 1528, 5, 9, 0, 0, 1528, 1530, 3, 230, 115, 0, 1529, 1526, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1532, 5, 24, 0, 0, 1532, 1534, 3, 314, 157, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1545, 1, 0, 0, 0, 1535, 1536, 5, 30, 0, 0, 1536, 1537, 5, 94, 0, 0, 1537, 1542, 3, 354, 177, 0, 1538, 1539, 5, 216, 0, 0, 1539, 1540, 5, 151, 0, 0, 1540, 1541, 5, 249, 0, 0, 1541, 1543, 5, 277, 0, 0, 1542, 1538, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1546, 1, 0, 0, 0, 1544, 1546, 5, 197, 0, 0, 1545, 1535, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1548, 5, 25, 0, 0, 1548, 1550, 3, 248, 124, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 197, 1, 0, 0, 0, 1551, 1556, 3, 200, 100, 0, 1552, 1553, 5, 263, 0, 0, 1553, 1555, 3, 200, 100, 0, 1554, 1552, 1, 0, 0, 0, 1555, 1558, 1, 0, 0, 0, 1556, 1554, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 199, 1, 0, 0, 0, 1558, 1556, 1, 0, 0, 0, 1559, 1560, 3, 354, 177, 0, 1560, 1561, 5, 249, 0, 0, 1561, 1562, 3, 304, 152, 0, 1562, 201, 1, 0, 0, 0, 1563, 1564, 5, 265, 0, 0, 1564, 1567, 3, 182, 91, 0, 1565, 1566, 5, 34, 0, 0, 1566, 1568, 3, 314, 157, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1577, 1, 0, 0, 0, 1569, 1570, 5, 263, 0, 0, 1570, 1573, 3, 182, 91, 0, 1571, 1572, 5, 34, 0, 0, 1572, 1574, 3, 314, 157, 0, 1573, 1571, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1569, 1, 0, 0, 0, 1576, 1579, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1580, 1, 0, 0, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1581, 5, 266, 0, 0, 1581, 203, 1, 0, 0, 0, 1582, 1584, 3, 206, 103, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1586, 3, 258, 129, 0, 1586, 205, 1, 0, 0, 0, 1587, 1588, 5, 216, 0, 0, 1588, 1593, 3, 274, 137, 0, 1589, 1590, 5, 263, 0, 0, 1590, 1592, 3, 274, 137, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 207, 1, 0, 0, 0, 1595, 1593, 1, 0, 0, 0, 1596, 1597, 5, 150, 0, 0, 1597, 1598, 5, 110, 0, 0, 1598, 1600, 3, 292, 146, 0, 1599, 1601, 5, 53, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1605, 1, 0, 0, 0, 1602, 1606, 5, 225, 0, 0, 1603, 1604, 5, 263, 0, 0, 1604, 1606, 5, 225, 0, 0, 1605, 1602, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1610, 1, 0, 0, 0, 1607, 1611, 5, 226, 0, 0, 1608, 1609, 5, 263, 0, 0, 1609, 1611, 5, 226, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1624, 1, 0, 0, 0, 1612, 1613, 5, 263, 0, 0, 1613, 1616, 3, 210, 105, 0, 1614, 1616, 3, 210, 105, 0, 1615, 1612, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0, 1616, 1621, 1, 0, 0, 0, 1617, 1618, 5, 263, 0, 0, 1618, 1620, 3, 210, 105, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1625, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1615, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 209, 1, 0, 0, 0, 1626, 1627, 5, 81, 0, 0, 1627, 1628, 5, 110, 0, 0, 1628, 1629, 3, 292, 146, 0, 1629, 1630, 5, 224, 0, 0, 1630, 1631, 3, 186, 93, 0, 1631, 1633, 3, 292, 146, 0, 1632, 1634, 5, 53, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1637, 5, 225, 0, 0, 1636, 1635, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1640, 5, 226, 0, 0, 1639, 1638, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 211, 1, 0, 0, 0, 1641, 1642, 3, 192, 96, 0, 1642, 1645, 3, 328, 164, 0, 1643, 1644, 5, 34, 0, 0, 1644, 1646, 3, 314, 157, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 213, 1, 0, 0, 0, 1647, 1648, 3, 182, 91, 0, 1648, 1651, 3, 328, 164, 0, 1649, 1650, 5, 34, 0, 0, 1650, 1652, 3, 314, 157, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 215, 1, 0, 0, 0, 1653, 1654, 3, 218, 109, 0, 1654, 217, 1, 0, 0, 0, 1655, 1656, 3, 182, 91, 0, 1656, 1664, 3, 328, 164, 0, 1657, 1661, 3, 224, 112, 0, 1658, 1660, 3, 224, 112, 0, 1659, 1658, 1, 0, 0, 0, 1660, 1663, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1661, 1659, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1664, 1657, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1668, 1, 0, 0, 0, 1666, 1667, 5, 34, 0, 0, 1667, 1669, 3, 314, 157, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1672, 1, 0, 0, 0, 1670, 1671, 5, 150, 0, 0, 1671, 1673, 5, 110, 0, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 219, 1, 0, 0, 0, 1674, 1682, 3, 212, 106, 0, 1675, 1679, 3, 224, 112, 0, 1676, 1678, 3, 224, 112, 0, 1677, 1676, 1, 0, 0, 0, 1678, 1681, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1679, 1677, 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1675, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 221, 1, 0, 0, 0, 1684, 1685, 3, 182, 91, 0, 1685, 1688, 3, 328, 164, 0, 1686, 1687, 5, 34, 0, 0, 1687, 1689, 3, 314, 157, 0, 1688, 1686, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1697, 1, 0, 0, 0, 1690, 1694, 3, 224, 112, 0, 1691, 1693, 3, 224, 112, 0, 1692, 1691, 1, 0, 0, 0, 1693, 1696, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1695, 1698, 1, 0, 0, 0, 1696, 1694, 1, 0, 0, 0, 1697, 1690, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 223, 1, 0, 0, 0, 1699, 1701, 5, 132, 0, 0, 1700, 1699, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1705, 5, 133, 0, 0, 1703, 1705, 3, 226, 113, 0, 1704, 1700, 1, 0, 0, 0, 1704, 1703, 1, 0, 0, 0, 1705, 225, 1, 0, 0, 0, 1706, 1707, 5, 60, 0, 0, 1707, 1715, 3, 304, 152, 0, 1708, 1709, 5, 35, 0, 0, 1709, 1715, 3, 304, 152, 0, 1710, 1711, 5, 51, 0, 0, 1711, 1715, 3, 304, 152, 0, 1712, 1713, 5, 16, 0, 0, 1713, 1715, 3, 360, 180, 0, 1714, 1706, 1, 0, 0, 0, 1714, 1708, 1, 0, 0, 0, 1714, 1710, 1, 0, 0, 0, 1714, 1712, 1, 0, 0, 0, 1715, 227, 1, 0, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 229, 1, 0, 0, 0, 1718, 1719, 7, 11, 0, 0, 1719, 231, 1, 0, 0, 0, 1720, 1725, 3, 234, 117, 0, 1721, 1722, 5, 263, 0, 0, 1722, 1724, 3, 234, 117, 0, 1723, 1721, 1, 0, 0, 0, 1724, 1727, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1725, 1723, 1, 0, 0, 0, 1726, 1730, 1, 0, 0, 0, 1727, 1725, 1, 0, 0, 0, 1728, 1729, 5, 263, 0, 0, 1729, 1731, 3, 236, 118, 0, 1730, 1728, 1, 0, 0, 0, 1730, 1731, 1, 0, 0, 0, 1731, 1734, 1, 0, 0, 0, 1732, 1734, 3, 236, 118, 0, 1733, 1720, 1, 0, 0, 0, 1733, 1732, 1, 0, 0, 0, 1734, 233, 1, 0, 0, 0, 1735, 1737, 5, 89, 0, 0, 1736, 1738, 3, 292, 146, 0, 1737, 1736, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1740, 5, 146, 0, 0, 1740, 1741, 3, 360, 180, 0, 1741, 235, 1, 0, 0, 0, 1742, 1744, 5, 154, 0, 0, 1743, 1745, 3, 292, 146, 0, 1744, 1743, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 5, 265, 0, 0, 1747, 1748, 5, 145, 0, 0, 1748, 1754, 3, 238, 119, 0, 1749, 1750, 5, 263, 0, 0, 1750, 1751, 5, 145, 0, 0, 1751, 1753, 3, 238, 119, 0, 1752, 1749, 1, 0, 0, 0, 1753, 1756, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1757, 1758, 5, 266, 0, 0, 1758, 237, 1, 0, 0, 0, 1759, 1760, 5, 210, 0, 0, 1760, 1761, 3, 244, 122, 0, 1761, 1762, 3, 304, 152, 0, 1762, 1775, 1, 0, 0, 0, 1763, 1764, 3, 304, 152, 0, 1764, 1765, 3, 242, 121, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1763, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1772, 5, 211, 0, 0, 1769, 1770, 3, 242, 121, 0, 1770, 1771, 3, 304, 152, 0, 1771, 1773, 1, 0, 0, 0, 1772, 1769, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1775, 1, 0, 0, 0, 1774, 1759, 1, 0, 0, 0, 1774, 1766, 1, 0, 0, 0, 1775, 239, 1, 0, 0, 0, 1776, 1777, 5, 30, 0, 0, 1777, 1778, 5, 94, 0, 0, 1778, 1783, 3, 358, 179, 0, 1779, 1780, 5, 216, 0, 0, 1780, 1781, 5, 151, 0, 0, 1781, 1782, 5, 249, 0, 0, 1782, 1784, 3, 360, 180, 0, 1783, 1779, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1787, 1, 0, 0, 0, 1785, 1787, 5, 197, 0, 0, 1786, 1776, 1, 0, 0, 0, 1786, 1785, 1, 0, 0, 0, 1787, 241, 1, 0, 0, 0, 1788, 1794, 1, 0, 0, 0, 1789, 1794, 5, 251, 0, 0, 1790, 1794, 5, 252, 0, 0, 1791, 1794, 5, 253, 0, 0, 1792, 1794, 5, 254, 0, 0, 1793, 1788, 1, 0, 0, 0, 1793, 1789, 1, 0, 0, 0, 1793, 1790, 1, 0, 0, 0, 1793, 1791, 1, 0, 0, 0, 1793, 1792, 1, 0, 0, 0, 1794, 243, 1, 0, 0, 0, 1795, 1804, 5, 249, 0, 0, 1796, 1804, 5, 250, 0, 0, 1797, 1804, 5, 115, 0, 0, 1798, 1804, 5, 164, 0, 0, 1799, 1804, 5, 163, 0, 0, 1800, 1804, 5, 15, 0, 0, 1801, 1804, 5, 94, 0, 0, 1802, 1804, 3, 242, 121, 0, 1803, 1795, 1, 0, 0, 0, 1803, 1796, 1, 0, 0, 0, 1803, 1797, 1, 0, 0, 0, 1803, 1798, 1, 0, 0, 0, 1803, 1799, 1, 0, 0, 0, 1803, 1800, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1802, 1, 0, 0, 0, 1804, 245, 1, 0, 0, 0, 1805, 1806, 5, 115, 0, 0, 1806, 1809, 3, 354, 177, 0, 1807, 1808, 7, 12, 0, 0, 1808, 1810, 5, 153, 0, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 247, 1, 0, 0, 0, 1811, 1812, 5, 265, 0, 0, 1812, 1817, 3, 256, 128, 0, 1813, 1814, 5, 263, 0, 0, 1814, 1816, 3, 256, 128, 0, 1815, 1813, 1, 0, 0, 0, 1816, 1819, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819, 1817, 1, 0, 0, 0, 1820, 1821, 5, 266, 0, 0, 1821, 249, 1, 0, 0, 0, 1822, 1823, 5, 265, 0, 0, 1823, 1828, 3, 212, 106, 0, 1824, 1825, 5, 263, 0, 0, 1825, 1827, 3, 212, 106, 0, 1826, 1824, 1, 0, 0, 0, 1827, 1830, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1828, 1826, 1, 0, 0, 0, 1829, 1831, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1831, 1832, 5, 266, 0, 0, 1832, 251, 1, 0, 0, 0, 1833, 1838, 3, 304, 152, 0, 1834, 1835, 5, 263, 0, 0, 1835, 1837, 3, 304, 152, 0, 1836, 1834, 1, 0, 0, 0, 1837, 1840, 1, 0, 0, 0, 1838, 1836, 1, 0, 0, 0, 1838, 1839, 1, 0, 0, 0, 1839, 253, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1841, 1851, 5, 52, 0, 0, 1842, 1843, 5, 71, 0, 0, 1843, 1844, 5, 191, 0, 0, 1844, 1845, 5, 26, 0, 0, 1845, 1849, 3, 314, 157, 0, 1846, 1847, 5, 63, 0, 0, 1847, 1848, 5, 26, 0, 0, 1848, 1850, 3, 314, 157, 0, 1849, 1846, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1852, 1, 0, 0, 0, 1851, 1842, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1857, 1, 0, 0, 0, 1853, 1854, 5, 117, 0, 0, 1854, 1855, 5, 191, 0, 0, 1855, 1856, 5, 26, 0, 0, 1856, 1858, 3, 314, 157, 0, 1857, 1853, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 255, 1, 0, 0, 0, 1859, 1862, 3, 358, 179, 0, 1860, 1861, 5, 249, 0, 0, 1861, 1863, 3, 304, 152, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 257, 1, 0, 0, 0, 1864, 1875, 3, 260, 130, 0, 1865, 1866, 5, 139, 0, 0, 1866, 1867, 5, 26, 0, 0, 1867, 1872, 3, 264, 132, 0, 1868, 1869, 5, 263, 0, 0, 1869, 1871, 3, 264, 132, 0, 1870, 1868, 1, 0, 0, 0, 1871, 1874, 1, 0, 0, 0, 1872, 1870, 1, 0, 0, 0, 1872, 1873, 1, 0, 0, 0, 1873, 1876, 1, 0, 0, 0, 1874, 1872, 1, 0, 0, 0, 1875, 1865, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1883, 1, 0, 0, 0, 1877, 1878, 5, 116, 0, 0, 1878, 1881, 3, 304, 152, 0, 1879, 1880, 5, 135, 0, 0, 1880, 1882, 5, 277, 0, 0, 1881, 1879, 1, 0, 0, 0, 1881, 1882, 1, 0, 0, 0, 1882, 1884, 1, 0, 0, 0, 1883, 1877, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 259, 1, 0, 0, 0, 1885, 1886, 6, 130, -1, 0, 1886, 1887, 3, 262, 131, 0, 1887, 1902, 1, 0, 0, 0, 1888, 1889, 10, 2, 0, 0, 1889, 1891, 5, 100, 0, 0, 1890, 1892, 3, 276, 138, 0, 1891, 1890, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1901, 3, 260, 130, 3, 1894, 1895, 10, 1, 0, 0, 1895, 1897, 7, 13, 0, 0, 1896, 1898, 3, 276, 138, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1901, 3, 260, 130, 2, 1900, 1888, 1, 0, 0, 0, 1900, 1894, 1, 0, 0, 0, 1901, 1904, 1, 0, 0, 0, 1902, 1900, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 261, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1905, 1922, 3, 266, 133, 0, 1906, 1907, 5, 188, 0, 0, 1907, 1922, 3, 186, 93, 0, 1908, 1909, 5, 211, 0, 0, 1909, 1914, 3, 304, 152, 0, 1910, 1911, 5, 263, 0, 0, 1911, 1913, 3, 304, 152, 0, 1912, 1910, 1, 0, 0, 0, 1913, 1916, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1922, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1917, 1918, 5, 265, 0, 0, 1918, 1919, 3, 258, 129, 0, 1919, 1920, 5, 266, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1905, 1, 0, 0, 0, 1921, 1906, 1, 0, 0, 0, 1921, 1908, 1, 0, 0, 0, 1921, 1917, 1, 0, 0, 0, 1922, 263, 1, 0, 0, 0, 1923, 1925, 3, 302, 151, 0, 1924, 1926, 7, 14, 0, 0, 1925, 1924, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1929, 1, 0, 0, 0, 1927, 1928, 5, 134, 0, 0, 1928, 1930, 7, 15, 0, 0, 1929, 1927, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 265, 1, 0, 0, 0, 1931, 1933, 5, 174, 0, 0, 1932, 1934, 3, 276, 138, 0, 1933, 1932, 1, 0, 0, 0, 1933, 1934, 1, 0, 0, 0, 1934, 1936, 1, 0, 0, 0, 1935, 1937, 5, 183, 0, 0, 1936, 1935, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 1938, 1, 0, 0, 0, 1938, 1943, 3, 278, 139, 0, 1939, 1940, 5, 263, 0, 0, 1940, 1942, 3, 278, 139, 0, 1941, 1939, 1, 0, 0, 0, 1942, 1945, 1, 0, 0, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1955, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1946, 1947, 5, 82, 0, 0, 1947, 1952, 3, 280, 140, 0, 1948, 1949, 5, 263, 0, 0, 1949, 1951, 3, 280, 140, 0, 1950, 1948, 1, 0, 0, 0, 1951, 1954, 1, 0, 0, 0, 1952, 1950, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1956, 1, 0, 0, 0, 1954, 1952, 1, 0, 0, 0, 1955, 1946, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1959, 1, 0, 0, 0, 1957, 1958, 5, 215, 0, 0, 1958, 1960, 3, 306, 153, 0, 1959, 1957, 1, 0, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1964, 1, 0, 0, 0, 1961, 1962, 5, 87, 0, 0, 1962, 1963, 5, 26, 0, 0, 1963, 1965, 3, 268, 134, 0, 1964, 1961, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1968, 1, 0, 0, 0, 1966, 1967, 5, 90, 0, 0, 1967, 1969, 3, 306, 153, 0, 1968, 1966, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 267, 1, 0, 0, 0, 1970, 1972, 3, 276, 138, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1978, 3, 270, 135, 0, 1974, 1975, 5, 263, 0, 0, 1975, 1977, 3, 270, 135, 0, 1976, 1974, 1, 0, 0, 0, 1977, 1980, 1, 0, 0, 0, 1978, 1976, 1, 0, 0, 0, 1978, 1979, 1, 0, 0, 0, 1979, 269, 1, 0, 0, 0, 1980, 1978, 1, 0, 0, 0, 1981, 1982, 3, 272, 136, 0, 1982, 271, 1, 0, 0, 0, 1983, 1992, 5, 265, 0, 0, 1984, 1989, 3, 302, 151, 0, 1985, 1986, 5, 263, 0, 0, 1986, 1988, 3, 302, 151, 0, 1987, 1985, 1, 0, 0, 0, 1988, 1991, 1, 0, 0, 0, 1989, 1987, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1993, 1, 0, 0, 0, 1991, 1989, 1, 0, 0, 0, 1992, 1984, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1997, 5, 266, 0, 0, 1995, 1997, 3, 302, 151, 0, 1996, 1983, 1, 0, 0, 0, 1996, 1995, 1, 0, 0, 0, 1997, 273, 1, 0, 0, 0, 1998, 2000, 3, 358, 179, 0, 1999, 2001, 3, 292, 146, 0, 2000, 1999, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 5, 9, 0, 0, 2003, 2004, 3, 296, 148, 0, 2004, 275, 1, 0, 0, 0, 2005, 2006, 7, 16, 0, 0, 2006, 277, 1, 0, 0, 0, 2007, 2012, 3, 302, 151, 0, 2008, 2010, 5, 9, 0, 0, 2009, 2008, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2013, 3, 358, 179, 0, 2012, 2009, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2020, 1, 0, 0, 0, 2014, 2015, 3, 354, 177, 0, 2015, 2016, 5, 261, 0, 0, 2016, 2017, 5, 257, 0, 0, 2017, 2020, 1, 0, 0, 0, 2018, 2020, 5, 257, 0, 0, 2019, 2007, 1, 0, 0, 0, 2019, 2014, 1, 0, 0, 0, 2019, 2018, 1, 0, 0, 0, 2020, 279, 1, 0, 0, 0, 2021, 2022, 6, 140, -1, 0, 2022, 2023, 3, 286, 143, 0, 2023, 2037, 1, 0, 0, 0, 2024, 2033, 10, 2, 0, 0, 2025, 2026, 5, 38, 0, 0, 2026, 2027, 5, 109, 0, 0, 2027, 2034, 3, 286, 143, 0, 2028, 2029, 3, 282, 141, 0, 2029, 2030, 5, 109, 0, 0, 2030, 2031, 3, 280, 140, 0, 2031, 2032, 3, 284, 142, 0, 2032, 2034, 1, 0, 0, 0, 2033, 2025, 1, 0, 0, 0, 2033, 2028, 1, 0, 0, 0, 2034, 2036, 1, 0, 0, 0, 2035, 2024, 1, 0, 0, 0, 2036, 2039, 1, 0, 0, 0, 2037, 2035, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 281, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2042, 5, 97, 0, 0, 2041, 2040, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2072, 1, 0, 0, 0, 2043, 2045, 5, 114, 0, 0, 2044, 2046, 5, 97, 0, 0, 2045, 2044, 1, 0, 0, 0, 2045, 2046, 1, 0, 0, 0, 2046, 2072, 1, 0, 0, 0, 2047, 2049, 5, 165, 0, 0, 2048, 2050, 5, 97, 0, 0, 2049, 2048, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2072, 1, 0, 0, 0, 2051, 2053, 5, 114, 0, 0, 2052, 2054, 5, 141, 0, 0, 2053, 2052, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2072, 1, 0, 0, 0, 2055, 2057, 5, 165, 0, 0, 2056, 2058, 5, 141, 0, 0, 2057, 2056, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2072, 1, 0, 0, 0, 2059, 2061, 5, 83, 0, 0, 2060, 2062, 5, 141, 0, 0, 2061, 2060, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2072, 1, 0, 0, 0, 2063, 2064, 5, 114, 0, 0, 2064, 2072, 5, 177, 0, 0, 2065, 2066, 5, 165, 0, 0, 2066, 2072, 5, 177, 0, 0, 2067, 2068, 5, 114, 0, 0, 2068, 2072, 5, 7, 0, 0, 2069, 2070, 5, 165, 0, 0, 2070, 2072, 5, 7, 0, 0, 2071, 2041, 1, 0, 0, 0, 2071, 2043, 1, 0, 0, 0, 2071, 2047, 1, 0, 0, 0, 2071, 2051, 1, 0, 0, 0, 2071, 2055, 1, 0, 0, 0, 2071, 2059, 1, 0, 0, 0, 2071, 2063, 1, 0, 0, 0, 2071, 2065, 1, 0, 0, 0, 2071, 2067, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2072, 283, 1, 0, 0, 0, 2073, 2074, 5, 136, 0, 0, 2074, 2088, 3, 306, 153, 0, 2075, 2076, 5, 205, 0, 0, 2076, 2077, 5, 265, 0, 0, 2077, 2082, 3, 358, 179, 0, 2078, 2079, 5, 263, 0, 0, 2079, 2081, 3, 358, 179, 0, 2080, 2078, 1, 0, 0, 0, 2081, 2084, 1, 0, 0, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2085, 1, 0, 0, 0, 2084, 2082, 1, 0, 0, 0, 2085, 2086, 5, 266, 0, 0, 2086, 2088, 1, 0, 0, 0, 2087, 2073, 1, 0, 0, 0, 2087, 2075, 1, 0, 0, 0, 2088, 285, 1, 0, 0, 0, 2089, 2102, 3, 290, 145, 0, 2090, 2091, 5, 190, 0, 0, 2091, 2092, 3, 288, 144, 0, 2092, 2093, 5, 265, 0, 0, 2093, 2094, 3, 304, 152, 0, 2094, 2100, 5, 266, 0, 0, 2095, 2096, 5, 157, 0, 0, 2096, 2097, 5, 265, 0, 0, 2097, 2098, 3, 304, 152, 0, 2098, 2099, 5, 266, 0, 0, 2099, 2101, 1, 0, 0, 0, 2100, 2095, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2103, 1, 0, 0, 0, 2102, 2090, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 287, 1, 0, 0, 0, 2104, 2105, 7, 17, 0, 0, 2105, 289, 1, 0, 0, 0, 2106, 2114, 3, 294, 147, 0, 2107, 2109, 5, 9, 0, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 3, 358, 179, 0, 2111, 2113, 3, 292, 146, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2115, 1, 0, 0, 0, 2114, 2108, 1, 0, 0, 0, 2114, 2115, 1, 0, 0, 0, 2115, 291, 1, 0, 0, 0, 2116, 2117, 5, 265, 0, 0, 2117, 2122, 3, 192, 96, 0, 2118, 2119, 5, 263, 0, 0, 2119, 2121, 3, 192, 96, 0, 2120, 2118, 1, 0, 0, 0, 2121, 2124, 1, 0, 0, 0, 2122, 2120, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2125, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2125, 2126, 5, 266, 0, 0, 2126, 293, 1, 0, 0, 0, 2127, 2135, 3, 194, 97, 0, 2128, 2130, 5, 113, 0, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2135, 3, 296, 148, 0, 2132, 2135, 3, 298, 149, 0, 2133, 2135, 3, 300, 150, 0, 2134, 2127, 1, 0, 0, 0, 2134, 2129, 1, 0, 0, 0, 2134, 2132, 1, 0, 0, 0, 2134, 2133, 1, 0, 0, 0, 2135, 295, 1, 0, 0, 0, 2136, 2137, 5, 265, 0, 0, 2137, 2138, 3, 204, 102, 0, 2138, 2139, 5, 266, 0, 0, 2139, 297, 1, 0, 0, 0, 2140, 2141, 5, 201, 0, 0, 2141, 2142, 5, 265, 0, 0, 2142, 2147, 3, 304, 152, 0, 2143, 2144, 5, 263, 0, 0, 2144, 2146, 3, 304, 152, 0, 2145, 2143, 1, 0, 0, 0, 2146, 2149, 1, 0, 0, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2150, 2153, 5, 266, 0, 0, 2151, 2152, 5, 216, 0, 0, 2152, 2154, 5, 140, 0, 0, 2153, 2151, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 299, 1, 0, 0, 0, 2155, 2156, 5, 265, 0, 0, 2156, 2157, 3, 280, 140, 0, 2157, 2158, 5, 266, 0, 0, 2158, 301, 1, 0, 0, 0, 2159, 2162, 3, 192, 96, 0, 2160, 2162, 3, 304, 152, 0, 2161, 2159, 1, 0, 0, 0, 2161, 2160, 1, 0, 0, 0, 2162, 303, 1, 0, 0, 0, 2163, 2164, 3, 306, 153, 0, 2164, 305, 1, 0, 0, 0, 2165, 2166, 6, 153, -1, 0, 2166, 2168, 3, 310, 155, 0, 2167, 2169, 3, 308, 154, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2173, 1, 0, 0, 0, 2170, 2171, 5, 132, 0, 0, 2171, 2173, 3, 306, 153, 3, 2172, 2165, 1, 0, 0, 0, 2172, 2170, 1, 0, 0, 0, 2173, 2182, 1, 0, 0, 0, 2174, 2175, 10, 2, 0, 0, 2175, 2176, 5, 5, 0, 0, 2176, 2181, 3, 306, 153, 3, 2177, 2178, 10, 1, 0, 0, 2178, 2179, 5, 138, 0, 0, 2179, 2181, 3, 306, 153, 2, 2180, 2174, 1, 0, 0, 0, 2180, 2177, 1, 0, 0, 0, 2181, 2184, 1, 0, 0, 0, 2182, 2180, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 307, 1, 0, 0, 0, 2184, 2182, 1, 0, 0, 0, 2185, 2186, 3, 316, 158, 0, 2186, 2187, 3, 310, 155, 0, 2187, 2244, 1, 0, 0, 0, 2188, 2189, 3, 316, 158, 0, 2189, 2190, 3, 318, 159, 0, 2190, 2191, 3, 296, 148, 0, 2191, 2244, 1, 0, 0, 0, 2192, 2194, 5, 132, 0, 0, 2193, 2192, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196, 5, 15, 0, 0, 2196, 2197, 3, 310, 155, 0, 2197, 2198, 5, 5, 0, 0, 2198, 2199, 3, 310, 155, 0, 2199, 2244, 1, 0, 0, 0, 2200, 2202, 5, 132, 0, 0, 2201, 2200, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2204, 5, 94, 0, 0, 2204, 2205, 5, 265, 0, 0, 2205, 2210, 3, 304, 152, 0, 2206, 2207, 5, 263, 0, 0, 2207, 2209, 3, 304, 152, 0, 2208, 2206, 1, 0, 0, 0, 2209, 2212, 1, 0, 0, 0, 2210, 2208, 1, 0, 0, 0, 2210, 2211, 1, 0, 0, 0, 2211, 2213, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2213, 2214, 5, 266, 0, 0, 2214, 2244, 1, 0, 0, 0, 2215, 2217, 5, 132, 0, 0, 2216, 2215, 1, 0, 0, 0, 2216, 2217, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2219, 5, 94, 0, 0, 2219, 2244, 3, 296, 148, 0, 2220, 2222, 5, 132, 0, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2224, 7, 18, 0, 0, 2224, 2227, 3, 310, 155, 0, 2225, 2226, 5, 62, 0, 0, 2226, 2228, 3, 310, 155, 0, 2227, 2225, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2244, 1, 0, 0, 0, 2229, 2230, 7, 19, 0, 0, 2230, 2244, 3, 310, 155, 0, 2231, 2233, 5, 108, 0, 0, 2232, 2234, 5, 132, 0, 0, 2233, 2232, 1, 0, 0, 0, 2233, 2234, 1, 0, 0, 0, 2234, 2235, 1, 0, 0, 0, 2235, 2244, 7, 20, 0, 0, 2236, 2238, 5, 108, 0, 0, 2237, 2239, 5, 132, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 5, 57, 0, 0, 2241, 2242, 5, 82, 0, 0, 2242, 2244, 3, 310, 155, 0, 2243, 2185, 1, 0, 0, 0, 2243, 2188, 1, 0, 0, 0, 2243, 2193, 1, 0, 0, 0, 2243, 2201, 1, 0, 0, 0, 2243, 2216, 1, 0, 0, 0, 2243, 2221, 1, 0, 0, 0, 2243, 2229, 1, 0, 0, 0, 2243, 2231, 1, 0, 0, 0, 2243, 2236, 1, 0, 0, 0, 2244, 309, 1, 0, 0, 0, 2245, 2246, 6, 155, -1, 0, 2246, 2250, 3, 312, 156, 0, 2247, 2248, 7, 21, 0, 0, 2248, 2250, 3, 310, 155, 4, 2249, 2245, 1, 0, 0, 0, 2249, 2247, 1, 0, 0, 0, 2250, 2262, 1, 0, 0, 0, 2251, 2252, 10, 3, 0, 0, 2252, 2253, 7, 22, 0, 0, 2253, 2261, 3, 310, 155, 4, 2254, 2255, 10, 2, 0, 0, 2255, 2256, 7, 21, 0, 0, 2256, 2261, 3, 310, 155, 3, 2257, 2258, 10, 1, 0, 0, 2258, 2259, 5, 260, 0, 0, 2259, 2261, 3, 310, 155, 2, 2260, 2251, 1, 0, 0, 0, 2260, 2254, 1, 0, 0, 0, 2260, 2257, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 311, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 6, 156, -1, 0, 2266, 2512, 5, 133, 0, 0, 2267, 2512, 3, 322, 161, 0, 2268, 2269, 3, 358, 179, 0, 2269, 2270, 3, 314, 157, 0, 2270, 2512, 1, 0, 0, 0, 2271, 2272, 5, 286, 0, 0, 2272, 2512, 3, 314, 157, 0, 2273, 2512, 3, 360, 180, 0, 2274, 2512, 3, 320, 160, 0, 2275, 2512, 3, 314, 157, 0, 2276, 2512, 5, 276, 0, 0, 2277, 2512, 5, 272, 0, 0, 2278, 2279, 5, 148, 0, 0, 2279, 2280, 5, 265, 0, 0, 2280, 2281, 3, 310, 155, 0, 2281, 2282, 5, 94, 0, 0, 2282, 2283, 3, 310, 155, 0, 2283, 2284, 5, 266, 0, 0, 2284, 2512, 1, 0, 0, 0, 2285, 2286, 5, 265, 0, 0, 2286, 2289, 3, 304, 152, 0, 2287, 2288, 5, 9, 0, 0, 2288, 2290, 3, 328, 164, 0, 2289, 2287, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2299, 1, 0, 0, 0, 2291, 2292, 5, 263, 0, 0, 2292, 2295, 3, 304, 152, 0, 2293, 2294, 5, 9, 0, 0, 2294, 2296, 3, 328, 164, 0, 2295, 2293, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2298, 1, 0, 0, 0, 2297, 2291, 1, 0, 0, 0, 2298, 2301, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2299, 2297, 1, 0, 0, 0, 2300, 2302, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2302, 2303, 5, 266, 0, 0, 2303, 2512, 1, 0, 0, 0, 2304, 2305, 5, 168, 0, 0, 2305, 2306, 5, 265, 0, 0, 2306, 2311, 3, 304, 152, 0, 2307, 2308, 5, 263, 0, 0, 2308, 2310, 3, 304, 152, 0, 2309, 2307, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2314, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2315, 5, 266, 0, 0, 2315, 2512, 1, 0, 0, 0, 2316, 2317, 3, 190, 95, 0, 2317, 2318, 5, 265, 0, 0, 2318, 2319, 5, 257, 0, 0, 2319, 2321, 5, 266, 0, 0, 2320, 2322, 3, 338, 169, 0, 2321, 2320, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2324, 1, 0, 0, 0, 2323, 2325, 3, 340, 170, 0, 2324, 2323, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2512, 1, 0, 0, 0, 2326, 2327, 3, 190, 95, 0, 2327, 2339, 5, 265, 0, 0, 2328, 2330, 3, 276, 138, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2336, 3, 304, 152, 0, 2332, 2333, 5, 263, 0, 0, 2333, 2335, 3, 304, 152, 0, 2334, 2332, 1, 0, 0, 0, 2335, 2338, 1, 0, 0, 0, 2336, 2334, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2340, 1, 0, 0, 0, 2338, 2336, 1, 0, 0, 0, 2339, 2329, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2351, 1, 0, 0, 0, 2341, 2342, 5, 139, 0, 0, 2342, 2343, 5, 26, 0, 0, 2343, 2348, 3, 264, 132, 0, 2344, 2345, 5, 263, 0, 0, 2345, 2347, 3, 264, 132, 0, 2346, 2344, 1, 0, 0, 0, 2347, 2350, 1, 0, 0, 0, 2348, 2346, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2352, 1, 0, 0, 0, 2350, 2348, 1, 0, 0, 0, 2351, 2341, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2353, 1, 0, 0, 0, 2353, 2355, 5, 266, 0, 0, 2354, 2356, 3, 338, 169, 0, 2355, 2354, 1, 0, 0, 0, 2355, 2356, 1, 0, 0, 0, 2356, 2358, 1, 0, 0, 0, 2357, 2359, 3, 340, 170, 0, 2358, 2357, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2512, 1, 0, 0, 0, 2360, 2361, 3, 358, 179, 0, 2361, 2362, 5, 273, 0, 0, 2362, 2363, 3, 304, 152, 0, 2363, 2512, 1, 0, 0, 0, 2364, 2373, 5, 265, 0, 0, 2365, 2370, 3, 358, 179, 0, 2366, 2367, 5, 263, 0, 0, 2367, 2369, 3, 358, 179, 0, 2368, 2366, 1, 0, 0, 0, 2369, 2372, 1, 0, 0, 0, 2370, 2368, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2374, 1, 0, 0, 0, 2372, 2370, 1, 0, 0, 0, 2373, 2365, 1, 0, 0, 0, 2373, 2374, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 5, 266, 0, 0, 2376, 2377, 5, 273, 0, 0, 2377, 2512, 3, 304, 152, 0, 2378, 2379, 5, 265, 0, 0, 2379, 2380, 3, 204, 102, 0, 2380, 2381, 5, 266, 0, 0, 2381, 2512, 1, 0, 0, 0, 2382, 2383, 5, 66, 0, 0, 2383, 2384, 5, 265, 0, 0, 2384, 2385, 3, 204, 102, 0, 2385, 2386, 5, 266, 0, 0, 2386, 2512, 1, 0, 0, 0, 2387, 2388, 5, 28, 0, 0, 2388, 2390, 3, 310, 155, 0, 2389, 2391, 3, 336, 168, 0, 2390, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2390, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2396, 1, 0, 0, 0, 2394, 2395, 5, 59, 0, 0, 2395, 2397, 3, 304, 152, 0, 2396, 2394, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2399, 5, 61, 0, 0, 2399, 2512, 1, 0, 0, 0, 2400, 2402, 5, 28, 0, 0, 2401, 2403, 3, 336, 168, 0, 2402, 2401, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2402, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2407, 5, 59, 0, 0, 2407, 2409, 3, 304, 152, 0, 2408, 2406, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2411, 5, 61, 0, 0, 2411, 2512, 1, 0, 0, 0, 2412, 2413, 5, 29, 0, 0, 2413, 2414, 5, 265, 0, 0, 2414, 2415, 3, 304, 152, 0, 2415, 2416, 5, 9, 0, 0, 2416, 2417, 3, 328, 164, 0, 2417, 2418, 5, 266, 0, 0, 2418, 2512, 1, 0, 0, 0, 2419, 2420, 5, 195, 0, 0, 2420, 2421, 5, 265, 0, 0, 2421, 2422, 3, 304, 152, 0, 2422, 2423, 5, 9, 0, 0, 2423, 2424, 3, 328, 164, 0, 2424, 2425, 5, 266, 0, 0, 2425, 2512, 1, 0, 0, 0, 2426, 2427, 5, 8, 0, 0, 2427, 2436, 5, 267, 0, 0, 2428, 2433, 3, 304, 152, 0, 2429, 2430, 5, 263, 0, 0, 2430, 2432, 3, 304, 152, 0, 2431, 2429, 1, 0, 0, 0, 2432, 2435, 1, 0, 0, 0, 2433, 2431, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2437, 1, 0, 0, 0, 2435, 2433, 1, 0, 0, 0, 2436, 2428, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2512, 5, 268, 0, 0, 2439, 2512, 3, 358, 179, 0, 2440, 2512, 5, 40, 0, 0, 2441, 2445, 5, 42, 0, 0, 2442, 2443, 5, 265, 0, 0, 2443, 2444, 5, 277, 0, 0, 2444, 2446, 5, 266, 0, 0, 2445, 2442, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2512, 1, 0, 0, 0, 2447, 2451, 5, 43, 0, 0, 2448, 2449, 5, 265, 0, 0, 2449, 2450, 5, 277, 0, 0, 2450, 2452, 5, 266, 0, 0, 2451, 2448, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2512, 1, 0, 0, 0, 2453, 2457, 5, 119, 0, 0, 2454, 2455, 5, 265, 0, 0, 2455, 2456, 5, 277, 0, 0, 2456, 2458, 5, 266, 0, 0, 2457, 2454, 1, 0, 0, 0, 2457, 2458, 1, 0, 0, 0, 2458, 2512, 1, 0, 0, 0, 2459, 2463, 5, 120, 0, 0, 2460, 2461, 5, 265, 0, 0, 2461, 2462, 5, 277, 0, 0, 2462, 2464, 5, 266, 0, 0, 2463, 2460, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2512, 1, 0, 0, 0, 2465, 2512, 5, 44, 0, 0, 2466, 2512, 5, 41, 0, 0, 2467, 2468, 5, 184, 0, 0, 2468, 2469, 5, 265, 0, 0, 2469, 2470, 3, 310, 155, 0, 2470, 2471, 5, 82, 0, 0, 2471, 2474, 3, 310, 155, 0, 2472, 2473, 5, 78, 0, 0, 2473, 2475, 3, 310, 155, 0, 2474, 2472, 1, 0, 0, 0, 2474, 2475, 1, 0, 0, 0, 2475, 2476, 1, 0, 0, 0, 2476, 2477, 5, 266, 0, 0, 2477, 2512, 1, 0, 0, 0, 2478, 2479, 5, 131, 0, 0, 2479, 2480, 5, 265, 0, 0, 2480, 2483, 3, 310, 155, 0, 2481, 2482, 5, 263, 0, 0, 2482, 2484, 3, 326, 163, 0, 2483, 2481, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2486, 5, 266, 0, 0, 2486, 2512, 1, 0, 0, 0, 2487, 2488, 5, 68, 0, 0, 2488, 2489, 5, 265, 0, 0, 2489, 2490, 3, 358, 179, 0, 2490, 2491, 5, 82, 0, 0, 2491, 2492, 3, 310, 155, 0, 2492, 2493, 5, 266, 0, 0, 2493, 2512, 1, 0, 0, 0, 2494, 2495, 5, 265, 0, 0, 2495, 2496, 3, 304, 152, 0, 2496, 2497, 5, 266, 0, 0, 2497, 2512, 1, 0, 0, 0, 2498, 2499, 5, 88, 0, 0, 2499, 2508, 5, 265, 0, 0, 2500, 2505, 3, 354, 177, 0, 2501, 2502, 5, 263, 0, 0, 2502, 2504, 3, 354, 177, 0, 2503, 2501, 1, 0, 0, 0, 2504, 2507, 1, 0, 0, 0, 2505, 2503, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2509, 1, 0, 0, 0, 2507, 2505, 1, 0, 0, 0, 2508, 2500, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2512, 5, 266, 0, 0, 2511, 2265, 1, 0, 0, 0, 2511, 2267, 1, 0, 0, 0, 2511, 2268, 1, 0, 0, 0, 2511, 2271, 1, 0, 0, 0, 2511, 2273, 1, 0, 0, 0, 2511, 2274, 1, 0, 0, 0, 2511, 2275, 1, 0, 0, 0, 2511, 2276, 1, 0, 0, 0, 2511, 2277, 1, 0, 0, 0, 2511, 2278, 1, 0, 0, 0, 2511, 2285, 1, 0, 0, 0, 2511, 2304, 1, 0, 0, 0, 2511, 2316, 1, 0, 0, 0, 2511, 2326, 1, 0, 0, 0, 2511, 2360, 1, 0, 0, 0, 2511, 2364, 1, 0, 0, 0, 2511, 2378, 1, 0, 0, 0, 2511, 2382, 1, 0, 0, 0, 2511, 2387, 1, 0, 0, 0, 2511, 2400, 1, 0, 0, 0, 2511, 2412, 1, 0, 0, 0, 2511, 2419, 1, 0, 0, 0, 2511, 2426, 1, 0, 0, 0, 2511, 2439, 1, 0, 0, 0, 2511, 2440, 1, 0, 0, 0, 2511, 2441, 1, 0, 0, 0, 2511, 2447, 1, 0, 0, 0, 2511, 2453, 1, 0, 0, 0, 2511, 2459, 1, 0, 0, 0, 2511, 2465, 1, 0, 0, 0, 2511, 2466, 1, 0, 0, 0, 2511, 2467, 1, 0, 0, 0, 2511, 2478, 1, 0, 0, 0, 2511, 2487, 1, 0, 0, 0, 2511, 2494, 1, 0, 0, 0, 2511, 2498, 1, 0, 0, 0, 2512, 2523, 1, 0, 0, 0, 2513, 2514, 10, 15, 0, 0, 2514, 2515, 5, 267, 0, 0, 2515, 2516, 3, 310, 155, 0, 2516, 2517, 5, 268, 0, 0, 2517, 2522, 1, 0, 0, 0, 2518, 2519, 10, 13, 0, 0, 2519, 2520, 5, 261, 0, 0, 2520, 2522, 3, 358, 179, 0, 2521, 2513, 1, 0, 0, 0, 2521, 2518, 1, 0, 0, 0, 2522, 2525, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 313, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2526, 2533, 5, 274, 0, 0, 2527, 2530, 5, 275, 0, 0, 2528, 2529, 5, 198, 0, 0, 2529, 2531, 5, 274, 0, 0, 2530, 2528, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2533, 1, 0, 0, 0, 2532, 2526, 1, 0, 0, 0, 2532, 2527, 1, 0, 0, 0, 2533, 315, 1, 0, 0, 0, 2534, 2535, 7, 23, 0, 0, 2535, 317, 1, 0, 0, 0, 2536, 2537, 7, 24, 0, 0, 2537, 319, 1, 0, 0, 0, 2538, 2539, 7, 25, 0, 0, 2539, 321, 1, 0, 0, 0, 2540, 2541, 5, 277, 0, 0, 2541, 2555, 3, 324, 162, 0, 2542, 2543, 5, 265, 0, 0, 2543, 2544, 5, 277, 0, 0, 2544, 2545, 5, 266, 0, 0, 2545, 2555, 3, 324, 162, 0, 2546, 2547, 5, 101, 0, 0, 2547, 2548, 5, 277, 0, 0, 2548, 2555, 3, 324, 162, 0, 2549, 2550, 5, 101, 0, 0, 2550, 2551, 5, 265, 0, 0, 2551, 2552, 5, 277, 0, 0, 2552, 2553, 5, 266, 0, 0, 2553, 2555, 3, 324, 162, 0, 2554, 2540, 1, 0, 0, 0, 2554, 2542, 1, 0, 0, 0, 2554, 2546, 1, 0, 0, 0, 2554, 2549, 1, 0, 0, 0, 2555, 323, 1, 0, 0, 0, 2556, 2557, 7, 26, 0, 0, 2557, 325, 1, 0, 0, 0, 2558, 2559, 7, 27, 0, 0, 2559, 327, 1, 0, 0, 0, 2560, 2561, 6, 164, -1, 0, 2561, 2562, 5, 8, 0, 0, 2562, 2563, 5, 251, 0, 0, 2563, 2564, 3, 328, 164, 0, 2564, 2565, 5, 253, 0, 0, 2565, 2606, 1, 0, 0, 0, 2566, 2567, 5, 235, 0, 0, 2567, 2568, 5, 251, 0, 0, 2568, 2569, 3, 328, 164, 0, 2569, 2570, 5, 263, 0, 0, 2570, 2571, 3, 328, 164, 0, 2571, 2572, 5, 253, 0, 0, 2572, 2606, 1, 0, 0, 0, 2573, 2574, 5, 240, 0, 0, 2574, 2575, 5, 251, 0, 0, 2575, 2576, 3, 358, 179, 0, 2576, 2583, 3, 328, 164, 0, 2577, 2578, 5, 263, 0, 0, 2578, 2579, 3, 358, 179, 0, 2579, 2580, 3, 328, 164, 0, 2580, 2582, 1, 0, 0, 0, 2581, 2577, 1, 0, 0, 0, 2582, 2585, 1, 0, 0, 0, 2583, 2581, 1, 0, 0, 0, 2583, 2584, 1, 0, 0, 0, 2584, 2586, 1, 0, 0, 0, 2585, 2583, 1, 0, 0, 0, 2586, 2587, 5, 253, 0, 0, 2587, 2606, 1, 0, 0, 0, 2588, 2591, 3, 334, 167, 0, 2589, 2591, 3, 330, 165, 0, 2590, 2588, 1, 0, 0, 0, 2590, 2589, 1, 0, 0, 0, 2591, 2603, 1, 0, 0, 0, 2592, 2593, 5, 265, 0, 0, 2593, 2598, 3, 332, 166, 0, 2594, 2595, 5, 263, 0, 0, 2595, 2597, 3, 332, 166, 0, 2596, 2594, 1, 0, 0, 0, 2597, 2600, 1, 0, 0, 0, 2598, 2596, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2601, 1, 0, 0, 0, 2600, 2598, 1, 0, 0, 0, 2601, 2602, 5, 266, 0, 0, 2602, 2604, 1, 0, 0, 0, 2603, 2592, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 1, 0, 0, 0, 2605, 2560, 1, 0, 0, 0, 2605, 2566, 1, 0, 0, 0, 2605, 2573, 1, 0, 0, 0, 2605, 2590, 1, 0, 0, 0, 2606, 2611, 1, 0, 0, 0, 2607, 2608, 10, 5, 0, 0, 2608, 2610, 5, 8, 0, 0, 2609, 2607, 1, 0, 0, 0, 2610, 2613, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 329, 1, 0, 0, 0, 2613, 2611, 1, 0, 0, 0, 2614, 2615, 7, 28, 0, 0, 2615, 331, 1, 0, 0, 0, 2616, 2619, 5, 277, 0, 0, 2617, 2619, 3, 328, 164, 0, 2618, 2616, 1, 0, 0, 0, 2618, 2617, 1, 0, 0, 0, 2619, 333, 1, 0, 0, 0, 2620, 2625, 5, 284, 0, 0, 2621, 2625, 5, 285, 0, 0, 2622, 2625, 5, 286, 0, 0, 2623, 2625, 3, 358, 179, 0, 2624, 2620, 1, 0, 0, 0, 2624, 2621, 1, 0, 0, 0, 2624, 2622, 1, 0, 0, 0, 2624, 2623, 1, 0, 0, 0, 2625, 335, 1, 0, 0, 0, 2626, 2627, 5, 214, 0, 0, 2627, 2628, 3, 304, 152, 0, 2628, 2629, 5, 192, 0, 0, 2629, 2630, 3, 304, 152, 0, 2630, 337, 1, 0, 0, 0, 2631, 2632, 5, 74, 0, 0, 2632, 2633, 5, 265, 0, 0, 2633, 2634, 5, 215, 0, 0, 2634, 2635, 3, 306, 153, 0, 2635, 2636, 5, 266, 0, 0, 2636, 339, 1, 0, 0, 0, 2637, 2638, 5, 143, 0, 0, 2638, 2649, 5, 265, 0, 0, 2639, 2640, 5, 145, 0, 0, 2640, 2641, 5, 26, 0, 0, 2641, 2646, 3, 304, 152, 0, 2642, 2643, 5, 263, 0, 0, 2643, 2645, 3, 304, 152, 0, 2644, 2642, 1, 0, 0, 0, 2645, 2648, 1, 0, 0, 0, 2646, 2644, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2649, 2639, 1, 0, 0, 0, 2649, 2650, 1, 0, 0, 0, 2650, 2661, 1, 0, 0, 0, 2651, 2652, 5, 139, 0, 0, 2652, 2653, 5, 26, 0, 0, 2653, 2658, 3, 264, 132, 0, 2654, 2655, 5, 263, 0, 0, 2655, 2657, 3, 264, 132, 0, 2656, 2654, 1, 0, 0, 0, 2657, 2660, 1, 0, 0, 0, 2658, 2656, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 2662, 1, 0, 0, 0, 2660, 2658, 1, 0, 0, 0, 2661, 2651, 1, 0, 0, 0, 2661, 2662, 1, 0, 0, 0, 2662, 2664, 1, 0, 0, 0, 2663, 2665, 3, 342, 171, 0, 2664, 2663, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2667, 5, 266, 0, 0, 2667, 341, 1, 0, 0, 0, 2668, 2669, 5, 154, 0, 0, 2669, 2685, 3, 344, 172, 0, 2670, 2671, 5, 169, 0, 0, 2671, 2685, 3, 344, 172, 0, 2672, 2673, 5, 154, 0, 0, 2673, 2674, 5, 15, 0, 0, 2674, 2675, 3, 344, 172, 0, 2675, 2676, 5, 5, 0, 0, 2676, 2677, 3, 344, 172, 0, 2677, 2685, 1, 0, 0, 0, 2678, 2679, 5, 169, 0, 0, 2679, 2680, 5, 15, 0, 0, 2680, 2681, 3, 344, 172, 0, 2681, 2682, 5, 5, 0, 0, 2682, 2683, 3, 344, 172, 0, 2683, 2685, 1, 0, 0, 0, 2684, 2668, 1, 0, 0, 0, 2684, 2670, 1, 0, 0, 0, 2684, 2672, 1, 0, 0, 0, 2684, 2678, 1, 0, 0, 0, 2685, 343, 1, 0, 0, 0, 2686, 2687, 5, 199, 0, 0, 2687, 2696, 5, 149, 0, 0, 2688, 2689, 5, 199, 0, 0, 2689, 2696, 5, 77, 0, 0, 2690, 2691, 5, 39, 0, 0, 2691, 2696, 5, 168, 0, 0, 2692, 2693, 3, 304, 152, 0, 2693, 2694, 7, 29, 0, 0, 2694, 2696, 1, 0, 0, 0, 2695, 2686, 1, 0, 0, 0, 2695, 2688, 1, 0, 0, 0, 2695, 2690, 1, 0, 0, 0, 2695, 2692, 1, 0, 0, 0, 2696, 345, 1, 0, 0, 0, 2697, 2698, 3, 358, 179, 0, 2698, 2699, 5, 261, 0, 0, 2699, 2700, 3, 358, 179, 0, 2700, 2703, 1, 0, 0, 0, 2701, 2703, 3, 358, 179, 0, 2702, 2697, 1, 0, 0, 0, 2702, 2701, 1, 0, 0, 0, 2703, 347, 1, 0, 0, 0, 2704, 2709, 3, 346, 173, 0, 2705, 2706, 5, 263, 0, 0, 2706, 2708, 3, 346, 173, 0, 2707, 2705, 1, 0, 0, 0, 2708, 2711, 1, 0, 0, 0, 2709, 2707, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 349, 1, 0, 0, 0, 2711, 2709, 1, 0, 0, 0, 2712, 2726, 5, 2, 0, 0, 2713, 2726, 5, 4, 0, 0, 2714, 2726, 5, 58, 0, 0, 2715, 2726, 5, 37, 0, 0, 2716, 2726, 5, 99, 0, 0, 2717, 2726, 5, 162, 0, 0, 2718, 2723, 5, 174, 0, 0, 2719, 2720, 5, 265, 0, 0, 2720, 2721, 3, 358, 179, 0, 2721, 2722, 5, 266, 0, 0, 2722, 2724, 1, 0, 0, 0, 2723, 2719, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2712, 1, 0, 0, 0, 2725, 2713, 1, 0, 0, 0, 2725, 2714, 1, 0, 0, 0, 2725, 2715, 1, 0, 0, 0, 2725, 2716, 1, 0, 0, 0, 2725, 2717, 1, 0, 0, 0, 2725, 2718, 1, 0, 0, 0, 2726, 351, 1, 0, 0, 0, 2727, 2728, 7, 30, 0, 0, 2728, 353, 1, 0, 0, 0, 2729, 2734, 3, 358, 179, 0, 2730, 2731, 5, 261, 0, 0, 2731, 2733, 3, 358, 179, 0, 2732, 2730, 1, 0, 0, 0, 2733, 2736, 1, 0, 0, 0, 2734, 2732, 1, 0, 0, 0, 2734, 2735, 1, 0, 0, 0, 2735, 355, 1, 0, 0, 0, 2736, 2734, 1, 0, 0, 0, 2737, 2738, 5, 166, 0, 0, 2738, 2744, 3, 358, 179, 0, 2739, 2740, 5, 204, 0, 0, 2740, 2744, 3, 358, 179, 0, 2741, 2742, 5, 87, 0, 0, 2742, 2744, 3, 358, 179, 0, 2743, 2737, 1, 0, 0, 0, 2743, 2739, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2744, 357, 1, 0, 0, 0, 2745, 2751, 5, 280, 0, 0, 2746, 2751, 5, 274, 0, 0, 2747, 2751, 3, 364, 182, 0, 2748, 2751, 5, 283, 0, 0, 2749, 2751, 5, 281, 0, 0, 2750, 2745, 1, 0, 0, 0, 2750, 2746, 1, 0, 0, 0, 2750, 2747, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2749, 1, 0, 0, 0, 2751, 359, 1, 0, 0, 0, 2752, 2754, 5, 256, 0, 0, 2753, 2752, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2765, 5, 278, 0, 0, 2756, 2758, 5, 256, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2765, 5, 279, 0, 0, 2760, 2762, 5, 256, 0, 0, 2761, 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2765, 5, 277, 0, 0, 2764, 2753, 1, 0, 0, 0, 2764, 2757, 1, 0, 0, 0, 2764, 2761, 1, 0, 0, 0, 2765, 361, 1, 0, 0, 0, 2766, 2767, 7, 31, 0, 0, 2767, 363, 1, 0, 0, 0, 2768, 2769, 7, 32, 0, 0, 2769, 365, 1, 0, 0, 0, 352, 369, 376, 400, 413, 417, 421, 430, 435, 439, 445, 447, 452, 456, 460, 467, 472, 478, 482, 491, 498, 502, 507, 509, 514, 518, 525, 529, 534, 538, 542, 546, 554, 559, 563, 571, 575, 584, 587, 590, 596, 603, 614, 619, 624, 629, 634, 643, 646, 649, 653, 679, 705, 714, 724, 727, 741, 759, 761, 770, 781, 790, 797, 801, 808, 814, 817, 822, 829, 843, 856, 861, 866, 872, 908, 911, 917, 920, 926, 932, 944, 946, 957, 965, 970, 974, 979, 986, 990, 994, 1000, 1004, 1008, 1017, 1020, 1023, 1031, 1045, 1052, 1065, 1071, 1076, 1079, 1082, 1087, 1091, 1100, 1105, 1111, 1115, 1120, 1125, 1128, 1136, 1139, 1143, 1155, 1158, 1162, 1167, 1171, 1187, 1192, 1199, 1202, 1208, 1211, 1218, 1221, 1225, 1230, 1233, 1240, 1243, 1267, 1281, 1285, 1289, 1309, 1311, 1313, 1322, 1324, 1333, 1335, 1344, 1346, 1351, 1360, 1369, 1378, 1389, 1395, 1400, 1403, 1416, 1426, 1430, 1435, 1446, 1451, 1484, 1492, 1497, 1501, 1505, 1510, 1514, 1519, 1524, 1529, 1533, 1542, 1545, 1549, 1556, 1567, 1573, 1577, 1583, 1593, 1600, 1605, 1610, 1615, 1621, 1624, 1633, 1636, 1639, 1645, 1651, 1661, 1664, 1668, 1672, 1679, 1682, 1688, 1694, 1697, 1700, 1704, 1714, 1725, 1730, 1733, 1737, 1744, 1754, 1766, 1772, 1774, 1783, 1786, 1793, 1803, 1809, 1817, 1828, 1838, 1849, 1851, 1857, 1862, 1872, 1875, 1881, 1883, 1891, 1897, 1900, 1902, 1914, 1921, 1925, 1929, 1933, 1936, 1943, 1952, 1955, 1959, 1964, 1968, 1971, 1978, 1989, 1992, 1996, 2000, 2009, 2012, 2019, 2033, 2037, 2041, 2045, 2049, 2053, 2057, 2061, 2071, 2082, 2087, 2100, 2102, 2108, 2112, 2114, 2122, 2129, 2134, 2147, 2153, 2161, 2168, 2172, 2180, 2182, 2193, 2201, 2210, 2216, 2221, 2227, 2233, 2238, 2243, 2249, 2260, 2262, 2289, 2295, 2299, 2311, 2321, 2324, 2329, 2336, 2339, 2348, 2351, 2355, 2358, 2370, 2373, 2392, 2396, 2404, 2408, 2433, 2436, 2445, 2451, 2457, 2463, 2474, 2483, 2505, 2508, 2511, 2521, 2523, 2530, 2532, 2554, 2583, 2590, 2598, 2603, 2605, 2611, 2618, 2624, 2646, 2649, 2658, 2661, 2664, 2684, 2695, 2702, 2709, 2723, 2725, 2734, 2743, 2750, 2753, 2757, 2761, 2764] \ No newline at end of file diff --git a/src/lib/impala/ImpalaSqlParser.ts b/src/lib/impala/ImpalaSqlParser.ts index 76ae3471..b9a88388 100644 --- a/src/lib/impala/ImpalaSqlParser.ts +++ b/src/lib/impala/ImpalaSqlParser.ts @@ -2269,7 +2269,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.state = 732; this.match(ImpalaSqlParser.KW_CHANGE); this.state = 733; - this.match(ImpalaSqlParser.KW_COLUMN); + this.columnNamePath(); this.state = 734; this.columnSpecWithKudu(); } @@ -7132,38 +7132,30 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1675; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 195, this.context) ) { - case 1: - { - this.state = 1674; - this.columnSpec(); - } - break; - } - this.state = 1684; + this.state = 1674; + this.columnSpec(); + this.state = 1682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 16 || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 33619969) !== 0) || _la === 132 || _la === 133) { { - this.state = 1677; + this.state = 1675; this.kuduAttributes(); - this.state = 1681; + this.state = 1679; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 196, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 195, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1678; + this.state = 1676; this.kuduAttributes(); } } } - this.state = 1683; + this.state = 1681; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 196, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 195, this.context); } } } @@ -7192,44 +7184,44 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1686; + this.state = 1684; this.columnNamePathCreate(); - this.state = 1687; + this.state = 1685; this.type_(0); - this.state = 1690; + this.state = 1688; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 198, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 1688; + this.state = 1686; this.match(ImpalaSqlParser.KW_COMMENT); - this.state = 1689; + this.state = 1687; this.stringLiteral(); } break; } - this.state = 1699; + this.state = 1697; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 16 || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 33619969) !== 0) || _la === 132 || _la === 133) { { - this.state = 1692; + this.state = 1690; this.kuduAttributes(); - this.state = 1696; + this.state = 1694; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 199, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 198, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1693; + this.state = 1691; this.kuduAttributes(); } } } - this.state = 1698; + this.state = 1696; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 199, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 198, this.context); } } } @@ -7257,23 +7249,23 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1706; + this.state = 1704; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_NOT: case ImpalaSqlParser.KW_NULL: { - this.state = 1702; + this.state = 1700; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 1701; + this.state = 1699; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 1704; + this.state = 1702; this.match(ImpalaSqlParser.KW_NULL); } break; @@ -7282,7 +7274,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_DEFAULT: case ImpalaSqlParser.KW_ENCODING: { - this.state = 1705; + this.state = 1703; this.kuduStorageAttr(); } break; @@ -7309,42 +7301,42 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new KuduStorageAttrContext(this.context, this.state); this.enterRule(localContext, 226, ImpalaSqlParser.RULE_kuduStorageAttr); try { - this.state = 1716; + this.state = 1714; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ENCODING: this.enterOuterAlt(localContext, 1); { - this.state = 1708; + this.state = 1706; this.match(ImpalaSqlParser.KW_ENCODING); - this.state = 1709; + this.state = 1707; this.expression(); } break; case ImpalaSqlParser.KW_COMPRESSION: this.enterOuterAlt(localContext, 2); { - this.state = 1710; + this.state = 1708; this.match(ImpalaSqlParser.KW_COMPRESSION); - this.state = 1711; + this.state = 1709; this.expression(); } break; case ImpalaSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 3); { - this.state = 1712; + this.state = 1710; this.match(ImpalaSqlParser.KW_DEFAULT); - this.state = 1713; + this.state = 1711; this.expression(); } break; case ImpalaSqlParser.KW_BLOCK_SIZE: this.enterOuterAlt(localContext, 4); { - this.state = 1714; + this.state = 1712; this.match(ImpalaSqlParser.KW_BLOCK_SIZE); - this.state = 1715; + this.state = 1713; this.number_(); } break; @@ -7373,7 +7365,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1718; + this.state = 1716; _la = this.tokenStream.LA(1); if(!(((((_la - 245)) & ~0x1F) === 0 && ((1 << (_la - 245)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -7405,7 +7397,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1720; + this.state = 1718; _la = this.tokenStream.LA(1); if(!(_la === 147 || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 31) !== 0))) { this.errorHandler.recoverInline(this); @@ -7436,41 +7428,41 @@ export class ImpalaSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 1735; + this.state = 1733; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_HASH: this.enterOuterAlt(localContext, 1); { { - this.state = 1722; + this.state = 1720; this.hashClause(); - this.state = 1727; + this.state = 1725; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 204, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 203, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1723; + this.state = 1721; this.match(ImpalaSqlParser.COMMA); - this.state = 1724; + this.state = 1722; this.hashClause(); } } } - this.state = 1729; + this.state = 1727; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 204, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 203, this.context); } - this.state = 1732; + this.state = 1730; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 263) { { - this.state = 1730; + this.state = 1728; this.match(ImpalaSqlParser.COMMA); - this.state = 1731; + this.state = 1729; this.rangeClause(); } } @@ -7481,7 +7473,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_RANGE: this.enterOuterAlt(localContext, 2); { - this.state = 1734; + this.state = 1732; this.rangeClause(); } break; @@ -7510,21 +7502,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1737; + this.state = 1735; this.match(ImpalaSqlParser.KW_HASH); - this.state = 1739; + this.state = 1737; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 265) { { - this.state = 1738; + this.state = 1736; this.columnAliases(); } } - this.state = 1741; + this.state = 1739; this.match(ImpalaSqlParser.KW_PARTITIONS); - this.state = 1742; + this.state = 1740; this.number_(); } } @@ -7549,47 +7541,47 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1744; + this.state = 1742; this.match(ImpalaSqlParser.KW_RANGE); - this.state = 1746; + this.state = 1744; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 207, this.context) ) { case 1: { - this.state = 1745; + this.state = 1743; this.columnAliases(); } break; } - this.state = 1748; + this.state = 1746; this.match(ImpalaSqlParser.LPAREN); { - this.state = 1749; + this.state = 1747; this.match(ImpalaSqlParser.KW_PARTITION); - this.state = 1750; + this.state = 1748; this.kuduPartitionSpec(); - this.state = 1756; + this.state = 1754; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 208, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1751; + this.state = 1749; this.match(ImpalaSqlParser.COMMA); - this.state = 1752; + this.state = 1750; this.match(ImpalaSqlParser.KW_PARTITION); - this.state = 1753; + this.state = 1751; this.kuduPartitionSpec(); } } } - this.state = 1758; + this.state = 1756; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 208, this.context); } } - this.state = 1759; + this.state = 1757; this.match(ImpalaSqlParser.RPAREN); } } @@ -7612,17 +7604,17 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 238, ImpalaSqlParser.RULE_kuduPartitionSpec); let _la: number; try { - this.state = 1776; + this.state = 1774; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 1761; + this.state = 1759; this.match(ImpalaSqlParser.KW_VALUE); - this.state = 1762; + this.state = 1760; this.partitionCol(); - this.state = 1763; + this.state = 1761; this.expression(); } break; @@ -7698,28 +7690,28 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 2); { - this.state = 1768; + this.state = 1766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805323008) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 1442841375) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 2218795145) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 269631421) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 271654979) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 537926659) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 16393) !== 0) || ((((_la - 255)) & ~0x1F) === 0 && ((1 << (_la - 255)) & 2549744643) !== 0)) { { - this.state = 1765; + this.state = 1763; this.expression(); - this.state = 1766; + this.state = 1764; this.rangeOperator(); } } - this.state = 1770; + this.state = 1768; this.match(ImpalaSqlParser.KW_VALUES); - this.state = 1774; + this.state = 1772; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { case 1: { - this.state = 1771; + this.state = 1769; this.rangeOperator(); - this.state = 1772; + this.state = 1770; this.expression(); } break; @@ -7748,30 +7740,30 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new CacheSpecContext(this.context, this.state); this.enterRule(localContext, 240, ImpalaSqlParser.RULE_cacheSpec); try { - this.state = 1788; + this.state = 1786; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_CACHED: this.enterOuterAlt(localContext, 1); { - this.state = 1778; + this.state = 1776; this.match(ImpalaSqlParser.KW_CACHED); - this.state = 1779; + this.state = 1777; this.match(ImpalaSqlParser.KW_IN); - this.state = 1780; + this.state = 1778; this.identifier(); - this.state = 1785; + this.state = 1783; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 212, this.context) ) { case 1: { - this.state = 1781; + this.state = 1779; this.match(ImpalaSqlParser.KW_WITH); - this.state = 1782; + this.state = 1780; this.match(ImpalaSqlParser.KW_REPLICATION); - this.state = 1783; + this.state = 1781; this.match(ImpalaSqlParser.EQ); - this.state = 1784; + this.state = 1782; this.number_(); } break; @@ -7781,7 +7773,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_UNCACHED: this.enterOuterAlt(localContext, 2); { - this.state = 1787; + this.state = 1785; this.match(ImpalaSqlParser.KW_UNCACHED); } break; @@ -7807,7 +7799,7 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new RangeOperatorContext(this.context, this.state); this.enterRule(localContext, 242, ImpalaSqlParser.RULE_rangeOperator); try { - this.state = 1795; + this.state = 1793; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ARRAY: @@ -7888,28 +7880,28 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.LT: this.enterOuterAlt(localContext, 2); { - this.state = 1791; + this.state = 1789; this.match(ImpalaSqlParser.LT); } break; case ImpalaSqlParser.LTE: this.enterOuterAlt(localContext, 3); { - this.state = 1792; + this.state = 1790; this.match(ImpalaSqlParser.LTE); } break; case ImpalaSqlParser.GT: this.enterOuterAlt(localContext, 4); { - this.state = 1793; + this.state = 1791; this.match(ImpalaSqlParser.GT); } break; case ImpalaSqlParser.GTE: this.enterOuterAlt(localContext, 5); { - this.state = 1794; + this.state = 1792; this.match(ImpalaSqlParser.GTE); } break; @@ -7935,55 +7927,55 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new PartitionColContext(this.context, this.state); this.enterRule(localContext, 244, ImpalaSqlParser.RULE_partitionCol); try { - this.state = 1805; + this.state = 1803; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.EQ: this.enterOuterAlt(localContext, 1); { - this.state = 1797; + this.state = 1795; this.match(ImpalaSqlParser.EQ); } break; case ImpalaSqlParser.NEQ: this.enterOuterAlt(localContext, 2); { - this.state = 1798; + this.state = 1796; this.match(ImpalaSqlParser.NEQ); } break; case ImpalaSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 3); { - this.state = 1799; + this.state = 1797; this.match(ImpalaSqlParser.KW_LIKE); } break; case ImpalaSqlParser.KW_RLIKE: this.enterOuterAlt(localContext, 4); { - this.state = 1800; + this.state = 1798; this.match(ImpalaSqlParser.KW_RLIKE); } break; case ImpalaSqlParser.KW_REGEXP: this.enterOuterAlt(localContext, 5); { - this.state = 1801; + this.state = 1799; this.match(ImpalaSqlParser.KW_REGEXP); } break; case ImpalaSqlParser.KW_BETWEEN: this.enterOuterAlt(localContext, 6); { - this.state = 1802; + this.state = 1800; this.match(ImpalaSqlParser.KW_BETWEEN); } break; case ImpalaSqlParser.KW_IN: this.enterOuterAlt(localContext, 7); { - this.state = 1803; + this.state = 1801; this.match(ImpalaSqlParser.KW_IN); } break; @@ -8062,7 +8054,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 8); { - this.state = 1804; + this.state = 1802; this.rangeOperator(); } break; @@ -8091,16 +8083,16 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1807; + this.state = 1805; this.match(ImpalaSqlParser.KW_LIKE); - this.state = 1808; + this.state = 1806; this.qualifiedName(); - this.state = 1811; + this.state = 1809; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65 || _la === 95) { { - this.state = 1809; + this.state = 1807; localContext._optionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 65 || _la === 95)) { @@ -8110,7 +8102,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1810; + this.state = 1808; this.match(ImpalaSqlParser.KW_PROPERTIES); } } @@ -8138,27 +8130,27 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1813; + this.state = 1811; this.match(ImpalaSqlParser.LPAREN); - this.state = 1814; + this.state = 1812; this.property(); - this.state = 1819; + this.state = 1817; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1815; + this.state = 1813; this.match(ImpalaSqlParser.COMMA); - this.state = 1816; + this.state = 1814; this.property(); } } - this.state = 1821; + this.state = 1819; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1822; + this.state = 1820; this.match(ImpalaSqlParser.RPAREN); } } @@ -8183,29 +8175,29 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1824; + this.state = 1822; this.match(ImpalaSqlParser.LPAREN); - this.state = 1825; + this.state = 1823; this.columnSpec(); - this.state = 1830; + this.state = 1828; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 219, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 218, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1826; + this.state = 1824; this.match(ImpalaSqlParser.COMMA); - this.state = 1827; + this.state = 1825; this.columnSpec(); } } } - this.state = 1832; + this.state = 1830; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 219, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 218, this.context); } - this.state = 1833; + this.state = 1831; this.match(ImpalaSqlParser.RPAREN); } } @@ -8230,21 +8222,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1835; + this.state = 1833; this.expression(); - this.state = 1840; + this.state = 1838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1836; + this.state = 1834; this.match(ImpalaSqlParser.COMMA); - this.state = 1837; + this.state = 1835; this.expression(); } } - this.state = 1842; + this.state = 1840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8271,31 +8263,31 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1843; + this.state = 1841; this.match(ImpalaSqlParser.KW_DELIMITED); - this.state = 1853; + this.state = 1851; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 1844; + this.state = 1842; this.match(ImpalaSqlParser.KW_FIELDS); - this.state = 1845; + this.state = 1843; this.match(ImpalaSqlParser.KW_TERMINATED); - this.state = 1846; + this.state = 1844; this.match(ImpalaSqlParser.KW_BY); - this.state = 1847; + this.state = 1845; this.stringLiteral(); - this.state = 1851; + this.state = 1849; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 1848; + this.state = 1846; this.match(ImpalaSqlParser.KW_ESCAPED); - this.state = 1849; + this.state = 1847; this.match(ImpalaSqlParser.KW_BY); - this.state = 1850; + this.state = 1848; this.stringLiteral(); } } @@ -8303,18 +8295,18 @@ export class ImpalaSqlParser extends SQLParserBase { } } - this.state = 1859; + this.state = 1857; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 117) { { - this.state = 1855; + this.state = 1853; this.match(ImpalaSqlParser.KW_LINES); - this.state = 1856; + this.state = 1854; this.match(ImpalaSqlParser.KW_TERMINATED); - this.state = 1857; + this.state = 1855; this.match(ImpalaSqlParser.KW_BY); - this.state = 1858; + this.state = 1856; this.stringLiteral(); } } @@ -8342,16 +8334,16 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1861; + this.state = 1859; this.identifier(); - this.state = 1864; + this.state = 1862; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 249) { { - this.state = 1862; + this.state = 1860; this.match(ImpalaSqlParser.EQ); - this.state = 1863; + this.state = 1861; this.expression(); } } @@ -8379,55 +8371,55 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1866; + this.state = 1864; this.queryTerm(0); - this.state = 1877; + this.state = 1875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139) { { - this.state = 1867; + this.state = 1865; this.match(ImpalaSqlParser.KW_ORDER); - this.state = 1868; + this.state = 1866; this.match(ImpalaSqlParser.KW_BY); - this.state = 1869; + this.state = 1867; this.sortItem(); - this.state = 1874; + this.state = 1872; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1870; + this.state = 1868; this.match(ImpalaSqlParser.COMMA); - this.state = 1871; + this.state = 1869; this.sortItem(); } } - this.state = 1876; + this.state = 1874; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1885; + this.state = 1883; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 116) { { - this.state = 1879; + this.state = 1877; this.match(ImpalaSqlParser.KW_LIMIT); - this.state = 1880; + this.state = 1878; localContext._rows = this.expression(); - this.state = 1883; + this.state = 1881; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 135) { { - this.state = 1881; + this.state = 1879; this.match(ImpalaSqlParser.KW_OFFSET); - this.state = 1882; + this.state = 1880; localContext._offset = this.match(ImpalaSqlParser.INTEGER_VALUE); } } @@ -8475,13 +8467,13 @@ export class ImpalaSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 1888; + this.state = 1886; this.queryPrimary(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1904; + this.state = 1902; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 231, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -8489,31 +8481,31 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 1902; + this.state = 1900; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_queryTerm); - this.state = 1890; + this.state = 1888; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1891; + this.state = 1889; (localContext as SetOperationContext)._operator = this.match(ImpalaSqlParser.KW_INTERSECT); - this.state = 1893; + this.state = 1891; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || _la === 57) { { - this.state = 1892; + this.state = 1890; this.setQuantifier(); } } - this.state = 1895; + this.state = 1893; (localContext as SetOperationContext)._right = this.queryTerm(3); } break; @@ -8522,11 +8514,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_queryTerm); - this.state = 1896; + this.state = 1894; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 1897; + this.state = 1895; (localContext as SetOperationContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 200)) { @@ -8536,26 +8528,26 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1899; + this.state = 1897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || _la === 57) { { - this.state = 1898; + this.state = 1896; this.setQuantifier(); } } - this.state = 1901; + this.state = 1899; (localContext as SetOperationContext)._right = this.queryTerm(2); } break; } } } - this.state = 1906; + this.state = 1904; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 231, this.context); } } } @@ -8578,14 +8570,14 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 262, ImpalaSqlParser.RULE_queryPrimary); try { let alternative: number; - this.state = 1923; + this.state = 1921; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_SELECT: localContext = new QueryPrimaryDefaultContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1907; + this.state = 1905; this.querySpecification(); } break; @@ -8593,9 +8585,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new TableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1908; + this.state = 1906; this.match(ImpalaSqlParser.KW_TABLE); - this.state = 1909; + this.state = 1907; this.tableNamePath(); } break; @@ -8603,27 +8595,27 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new InlineTableContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1910; + this.state = 1908; this.match(ImpalaSqlParser.KW_VALUES); - this.state = 1911; + this.state = 1909; this.expression(); - this.state = 1916; + this.state = 1914; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1912; + this.state = 1910; this.match(ImpalaSqlParser.COMMA); - this.state = 1913; + this.state = 1911; this.expression(); } } } - this.state = 1918; + this.state = 1916; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); } } break; @@ -8631,11 +8623,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SubqueryContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1919; + this.state = 1917; this.match(ImpalaSqlParser.LPAREN); - this.state = 1920; + this.state = 1918; this.queryNoWith(); - this.state = 1921; + this.state = 1919; this.match(ImpalaSqlParser.RPAREN); } break; @@ -8664,14 +8656,14 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1925; + this.state = 1923; this.columnItem(); - this.state = 1927; + this.state = 1925; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 55) { { - this.state = 1926; + this.state = 1924; localContext._ordering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 55)) { @@ -8684,14 +8676,14 @@ export class ImpalaSqlParser extends SQLParserBase { } } - this.state = 1931; + this.state = 1929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134) { { - this.state = 1929; + this.state = 1927; this.match(ImpalaSqlParser.KW_NULLS); - this.state = 1930; + this.state = 1928; localContext._nullOrdering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 75 || _la === 112)) { @@ -8727,112 +8719,112 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1933; + this.state = 1931; this.match(ImpalaSqlParser.KW_SELECT); - this.state = 1935; + this.state = 1933; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 236, this.context) ) { case 1: { - this.state = 1934; + this.state = 1932; this.setQuantifier(); } break; } - this.state = 1938; + this.state = 1936; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { case 1: { - this.state = 1937; + this.state = 1935; this.match(ImpalaSqlParser.KW_STRAIGHT_JOIN); } break; } - this.state = 1940; + this.state = 1938; this.selectItem(); - this.state = 1945; + this.state = 1943; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 238, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1941; + this.state = 1939; this.match(ImpalaSqlParser.COMMA); - this.state = 1942; + this.state = 1940; this.selectItem(); } } } - this.state = 1947; + this.state = 1945; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 238, this.context); } - this.state = 1957; + this.state = 1955; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 240, this.context) ) { case 1: { - this.state = 1948; + this.state = 1946; this.match(ImpalaSqlParser.KW_FROM); - this.state = 1949; + this.state = 1947; this.relation(0); - this.state = 1954; + this.state = 1952; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 240, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1950; + this.state = 1948; this.match(ImpalaSqlParser.COMMA); - this.state = 1951; + this.state = 1949; this.relation(0); } } } - this.state = 1956; + this.state = 1954; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 240, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); } } break; } - this.state = 1961; + this.state = 1959; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { case 1: { - this.state = 1959; + this.state = 1957; this.match(ImpalaSqlParser.KW_WHERE); - this.state = 1960; + this.state = 1958; localContext._where = this.booleanExpression(0); } break; } - this.state = 1966; + this.state = 1964; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 243, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { case 1: { - this.state = 1963; + this.state = 1961; this.match(ImpalaSqlParser.KW_GROUP); - this.state = 1964; + this.state = 1962; this.match(ImpalaSqlParser.KW_BY); - this.state = 1965; + this.state = 1963; this.groupBy(); } break; } - this.state = 1970; + this.state = 1968; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 243, this.context) ) { case 1: { - this.state = 1968; + this.state = 1966; this.match(ImpalaSqlParser.KW_HAVING); - this.state = 1969; + this.state = 1967; localContext._having = this.booleanExpression(0); } break; @@ -8860,35 +8852,35 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1973; + this.state = 1971; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { case 1: { - this.state = 1972; + this.state = 1970; this.setQuantifier(); } break; } - this.state = 1975; + this.state = 1973; this.groupingElement(); - this.state = 1980; + this.state = 1978; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 246, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 245, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1976; + this.state = 1974; this.match(ImpalaSqlParser.COMMA); - this.state = 1977; + this.state = 1975; this.groupingElement(); } } } - this.state = 1982; + this.state = 1980; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 246, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 245, this.context); } } } @@ -8913,7 +8905,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SingleGroupingSetContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1983; + this.state = 1981; this.groupingSet(); } } @@ -8936,48 +8928,48 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 272, ImpalaSqlParser.RULE_groupingSet); let _la: number; try { - this.state = 1998; + this.state = 1996; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1985; + this.state = 1983; this.match(ImpalaSqlParser.LPAREN); - this.state = 1994; + this.state = 1992; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: { - this.state = 1986; + this.state = 1984; this.columnItem(); - this.state = 1991; + this.state = 1989; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1987; + this.state = 1985; this.match(ImpalaSqlParser.COMMA); - this.state = 1988; + this.state = 1986; this.columnItem(); } } - this.state = 1993; + this.state = 1991; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1996; + this.state = 1994; this.match(ImpalaSqlParser.RPAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1997; + this.state = 1995; this.columnItem(); } break; @@ -9004,21 +8996,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2000; + this.state = 1998; localContext._name = this.identifier(); - this.state = 2002; + this.state = 2000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 265) { { - this.state = 2001; + this.state = 1999; this.columnAliases(); } } - this.state = 2004; + this.state = 2002; this.match(ImpalaSqlParser.KW_AS); - this.state = 2005; + this.state = 2003; this.subQueryRelation(); } } @@ -9043,7 +9035,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2007; + this.state = 2005; _la = this.tokenStream.LA(1); if(!(_la === 2 || _la === 57)) { this.errorHandler.recoverInline(this); @@ -9073,31 +9065,31 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 278, ImpalaSqlParser.RULE_selectItem); let _la: number; try { - this.state = 2021; + this.state = 2019; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) { case 1: localContext = new SelectSingleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2009; + this.state = 2007; this.columnItem(); - this.state = 2014; + this.state = 2012; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 251, this.context) ) { case 1: { - this.state = 2011; + this.state = 2009; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2010; + this.state = 2008; this.match(ImpalaSqlParser.KW_AS); } } - this.state = 2013; + this.state = 2011; this.identifier(); } break; @@ -9108,11 +9100,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2016; + this.state = 2014; this.qualifiedName(); - this.state = 2017; + this.state = 2015; this.match(ImpalaSqlParser.DOT); - this.state = 2018; + this.state = 2016; this.match(ImpalaSqlParser.ASTERISK); } break; @@ -9120,7 +9112,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2020; + this.state = 2018; this.match(ImpalaSqlParser.ASTERISK); } break; @@ -9163,13 +9155,13 @@ export class ImpalaSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 2024; + this.state = 2022; this.sampledRelation(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2039; + this.state = 2037; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 255, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 254, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -9181,20 +9173,20 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new JoinRelationContext(new RelationContext(parentContext, parentState)); (localContext as JoinRelationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_relation); - this.state = 2026; + this.state = 2024; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2035; + this.state = 2033; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_CROSS: { - this.state = 2027; + this.state = 2025; this.match(ImpalaSqlParser.KW_CROSS); - this.state = 2028; + this.state = 2026; this.match(ImpalaSqlParser.KW_JOIN); - this.state = 2029; + this.state = 2027; (localContext as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -9204,13 +9196,13 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_LEFT: case ImpalaSqlParser.KW_RIGHT: { - this.state = 2030; + this.state = 2028; this.joinType(); - this.state = 2031; + this.state = 2029; this.match(ImpalaSqlParser.KW_JOIN); - this.state = 2032; + this.state = 2030; (localContext as JoinRelationContext)._rightRelation = this.relation(0); - this.state = 2033; + this.state = 2031; this.joinCriteria(); } break; @@ -9220,9 +9212,9 @@ export class ImpalaSqlParser extends SQLParserBase { } } } - this.state = 2041; + this.state = 2039; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 255, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 254, this.context); } } } @@ -9245,18 +9237,18 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 282, ImpalaSqlParser.RULE_joinType); let _la: number; try { - this.state = 2073; + this.state = 2071; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 262, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 261, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2043; + this.state = 2041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2042; + this.state = 2040; this.match(ImpalaSqlParser.KW_INNER); } } @@ -9266,14 +9258,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2045; + this.state = 2043; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2047; + this.state = 2045; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2046; + this.state = 2044; this.match(ImpalaSqlParser.KW_INNER); } } @@ -9283,14 +9275,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2049; + this.state = 2047; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2051; + this.state = 2049; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2050; + this.state = 2048; this.match(ImpalaSqlParser.KW_INNER); } } @@ -9300,14 +9292,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2053; + this.state = 2051; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2055; + this.state = 2053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 141) { { - this.state = 2054; + this.state = 2052; this.match(ImpalaSqlParser.KW_OUTER); } } @@ -9317,14 +9309,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2057; + this.state = 2055; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2059; + this.state = 2057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 141) { { - this.state = 2058; + this.state = 2056; this.match(ImpalaSqlParser.KW_OUTER); } } @@ -9334,14 +9326,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2061; + this.state = 2059; this.match(ImpalaSqlParser.KW_FULL); - this.state = 2063; + this.state = 2061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 141) { { - this.state = 2062; + this.state = 2060; this.match(ImpalaSqlParser.KW_OUTER); } } @@ -9351,36 +9343,36 @@ export class ImpalaSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2065; + this.state = 2063; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2066; + this.state = 2064; this.match(ImpalaSqlParser.KW_SEMI); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2067; + this.state = 2065; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2068; + this.state = 2066; this.match(ImpalaSqlParser.KW_SEMI); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2069; + this.state = 2067; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2070; + this.state = 2068; this.match(ImpalaSqlParser.KW_ANTI); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 2071; + this.state = 2069; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2072; + this.state = 2070; this.match(ImpalaSqlParser.KW_ANTI); } break; @@ -9405,44 +9397,44 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 284, ImpalaSqlParser.RULE_joinCriteria); let _la: number; try { - this.state = 2089; + this.state = 2087; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { - this.state = 2075; + this.state = 2073; this.match(ImpalaSqlParser.KW_ON); - this.state = 2076; + this.state = 2074; this.booleanExpression(0); } break; case ImpalaSqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 2077; + this.state = 2075; this.match(ImpalaSqlParser.KW_USING); - this.state = 2078; + this.state = 2076; this.match(ImpalaSqlParser.LPAREN); - this.state = 2079; + this.state = 2077; this.identifier(); - this.state = 2084; + this.state = 2082; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2080; + this.state = 2078; this.match(ImpalaSqlParser.COMMA); - this.state = 2081; + this.state = 2079; this.identifier(); } } - this.state = 2086; + this.state = 2084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2087; + this.state = 2085; this.match(ImpalaSqlParser.RPAREN); } break; @@ -9470,35 +9462,35 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2091; + this.state = 2089; this.aliasedRelation(); - this.state = 2104; + this.state = 2102; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 266, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { case 1: { - this.state = 2092; + this.state = 2090; this.match(ImpalaSqlParser.KW_TABLESAMPLE); - this.state = 2093; + this.state = 2091; this.sampleType(); - this.state = 2094; + this.state = 2092; this.match(ImpalaSqlParser.LPAREN); - this.state = 2095; + this.state = 2093; localContext._percentage = this.expression(); - this.state = 2096; + this.state = 2094; this.match(ImpalaSqlParser.RPAREN); - this.state = 2102; + this.state = 2100; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 264, this.context) ) { case 1: { - this.state = 2097; + this.state = 2095; this.match(ImpalaSqlParser.KW_REPEATABLE); - this.state = 2098; + this.state = 2096; this.match(ImpalaSqlParser.LPAREN); - this.state = 2099; + this.state = 2097; localContext._seed = this.expression(); - this.state = 2100; + this.state = 2098; this.match(ImpalaSqlParser.RPAREN); } break; @@ -9529,7 +9521,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2106; + this.state = 2104; _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 185)) { this.errorHandler.recoverInline(this); @@ -9561,31 +9553,31 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2108; + this.state = 2106; this.relationPrimary(); - this.state = 2116; + this.state = 2114; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 269, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 268, this.context) ) { case 1: { - this.state = 2110; + this.state = 2108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2109; + this.state = 2107; this.match(ImpalaSqlParser.KW_AS); } } - this.state = 2112; + this.state = 2110; this.identifier(); - this.state = 2114; + this.state = 2112; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 268, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { case 1: { - this.state = 2113; + this.state = 2111; this.columnAliases(); } break; @@ -9616,27 +9608,27 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2118; + this.state = 2116; this.match(ImpalaSqlParser.LPAREN); - this.state = 2119; + this.state = 2117; this.columnNamePath(); - this.state = 2124; + this.state = 2122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2120; + this.state = 2118; this.match(ImpalaSqlParser.COMMA); - this.state = 2121; + this.state = 2119; this.columnNamePath(); } } - this.state = 2126; + this.state = 2124; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2127; + this.state = 2125; this.match(ImpalaSqlParser.RPAREN); } } @@ -9659,44 +9651,44 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 294, ImpalaSqlParser.RULE_relationPrimary); let _la: number; try { - this.state = 2136; + this.state = 2134; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 272, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2129; + this.state = 2127; this.tableOrViewPath(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2131; + this.state = 2129; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 113) { { - this.state = 2130; + this.state = 2128; this.match(ImpalaSqlParser.KW_LATERAL); } } - this.state = 2133; + this.state = 2131; this.subQueryRelation(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2134; + this.state = 2132; this.unnest(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2135; + this.state = 2133; this.parenthesizedRelation(); } break; @@ -9722,11 +9714,11 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2138; + this.state = 2136; this.match(ImpalaSqlParser.LPAREN); - this.state = 2139; + this.state = 2137; this.queryStatement(); - this.state = 2140; + this.state = 2138; this.match(ImpalaSqlParser.RPAREN); } } @@ -9751,38 +9743,38 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2142; + this.state = 2140; this.match(ImpalaSqlParser.KW_UNNEST); - this.state = 2143; + this.state = 2141; this.match(ImpalaSqlParser.LPAREN); - this.state = 2144; + this.state = 2142; this.expression(); - this.state = 2149; + this.state = 2147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2145; + this.state = 2143; this.match(ImpalaSqlParser.COMMA); - this.state = 2146; + this.state = 2144; this.expression(); } } - this.state = 2151; + this.state = 2149; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2152; + this.state = 2150; this.match(ImpalaSqlParser.RPAREN); - this.state = 2155; + this.state = 2153; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { case 1: { - this.state = 2153; + this.state = 2151; this.match(ImpalaSqlParser.KW_WITH); - this.state = 2154; + this.state = 2152; this.match(ImpalaSqlParser.KW_ORDINALITY); } break; @@ -9809,11 +9801,11 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2157; + this.state = 2155; this.match(ImpalaSqlParser.LPAREN); - this.state = 2158; + this.state = 2156; this.relation(0); - this.state = 2159; + this.state = 2157; this.match(ImpalaSqlParser.RPAREN); } } @@ -9835,20 +9827,20 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new ColumnItemContext(this.context, this.state); this.enterRule(localContext, 302, ImpalaSqlParser.RULE_columnItem); try { - this.state = 2163; + this.state = 2161; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2161; + this.state = 2159; this.columnNamePath(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2162; + this.state = 2160; this.expression(); } break; @@ -9874,7 +9866,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2165; + this.state = 2163; this.booleanExpression(0); } } @@ -9910,7 +9902,7 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2174; + this.state = 2172; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ARRAY: @@ -9986,14 +9978,14 @@ export class ImpalaSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 2168; + this.state = 2166; (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 2170; + this.state = 2168; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 276, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { case 1: { - this.state = 2169; + this.state = 2167; this.predicate((localContext as PredicatedContext)._valueExpression); } break; @@ -10005,9 +9997,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2172; + this.state = 2170; this.match(ImpalaSqlParser.KW_NOT); - this.state = 2173; + this.state = 2171; this.booleanExpression(3); } break; @@ -10015,9 +10007,9 @@ export class ImpalaSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2184; + this.state = 2182; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 279, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -10025,21 +10017,21 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2182; + this.state = 2180; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 278, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_booleanExpression); - this.state = 2176; + this.state = 2174; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2177; + this.state = 2175; (localContext as LogicalBinaryContext)._operator = this.match(ImpalaSqlParser.KW_AND); - this.state = 2178; + this.state = 2176; (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -10048,22 +10040,22 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_booleanExpression); - this.state = 2179; + this.state = 2177; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 2180; + this.state = 2178; (localContext as LogicalBinaryContext)._operator = this.match(ImpalaSqlParser.KW_OR); - this.state = 2181; + this.state = 2179; (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); } break; } } } - this.state = 2186; + this.state = 2184; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 279, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); } } } @@ -10086,16 +10078,16 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 308, ImpalaSqlParser.RULE_predicate); let _la: number; try { - this.state = 2245; + this.state = 2243; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 288, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 287, this.context) ) { case 1: localContext = new ComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2187; + this.state = 2185; this.comparisonOperator(); - this.state = 2188; + this.state = 2186; (localContext as ComparisonContext)._right = this.valueExpression(0); } break; @@ -10103,11 +10095,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new QuantifiedComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2190; + this.state = 2188; this.comparisonOperator(); - this.state = 2191; + this.state = 2189; this.comparisonQuantifier(); - this.state = 2192; + this.state = 2190; this.subQueryRelation(); } break; @@ -10115,23 +10107,23 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BetweenContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2195; + this.state = 2193; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2194; + this.state = 2192; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2197; + this.state = 2195; this.match(ImpalaSqlParser.KW_BETWEEN); - this.state = 2198; + this.state = 2196; (localContext as BetweenContext)._lower = this.valueExpression(0); - this.state = 2199; + this.state = 2197; this.match(ImpalaSqlParser.KW_AND); - this.state = 2200; + this.state = 2198; (localContext as BetweenContext)._upper = this.valueExpression(0); } break; @@ -10139,39 +10131,39 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new InListContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2203; + this.state = 2201; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2202; + this.state = 2200; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2205; + this.state = 2203; this.match(ImpalaSqlParser.KW_IN); - this.state = 2206; + this.state = 2204; this.match(ImpalaSqlParser.LPAREN); - this.state = 2207; + this.state = 2205; this.expression(); - this.state = 2212; + this.state = 2210; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2208; + this.state = 2206; this.match(ImpalaSqlParser.COMMA); - this.state = 2209; + this.state = 2207; this.expression(); } } - this.state = 2214; + this.state = 2212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2215; + this.state = 2213; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10179,19 +10171,19 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new InSubqueryContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2218; + this.state = 2216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2217; + this.state = 2215; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2220; + this.state = 2218; this.match(ImpalaSqlParser.KW_IN); - this.state = 2221; + this.state = 2219; this.subQueryRelation(); } break; @@ -10199,17 +10191,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LikeContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2223; + this.state = 2221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2222; + this.state = 2220; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2225; + this.state = 2223; _la = this.tokenStream.LA(1); if(!(_la === 106 || _la === 115 || _la === 164)) { this.errorHandler.recoverInline(this); @@ -10218,16 +10210,16 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2226; + this.state = 2224; (localContext as LikeContext)._pattern = this.valueExpression(0); - this.state = 2229; + this.state = 2227; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 285, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 284, this.context) ) { case 1: { - this.state = 2227; + this.state = 2225; this.match(ImpalaSqlParser.KW_ESCAPE); - this.state = 2228; + this.state = 2226; (localContext as LikeContext)._escape = this.valueExpression(0); } break; @@ -10238,7 +10230,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new REGEXPContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2231; + this.state = 2229; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 163)) { this.errorHandler.recoverInline(this); @@ -10247,7 +10239,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2232; + this.state = 2230; (localContext as REGEXPContext)._pattern = this.valueExpression(0); } break; @@ -10255,19 +10247,19 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new NullOrUnKnownOrBooleanPredicateContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2233; + this.state = 2231; this.match(ImpalaSqlParser.KW_IS); - this.state = 2235; + this.state = 2233; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2234; + this.state = 2232; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2237; + this.state = 2235; _la = this.tokenStream.LA(1); if(!(_la === 70 || _la === 133 || _la === 194 || _la === 208)) { this.errorHandler.recoverInline(this); @@ -10282,23 +10274,23 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DistinctFromContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 2238; + this.state = 2236; this.match(ImpalaSqlParser.KW_IS); - this.state = 2240; + this.state = 2238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2239; + this.state = 2237; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2242; + this.state = 2240; this.match(ImpalaSqlParser.KW_DISTINCT); - this.state = 2243; + this.state = 2241; this.match(ImpalaSqlParser.KW_FROM); - this.state = 2244; + this.state = 2242; (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; @@ -10337,16 +10329,16 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2251; + this.state = 2249; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 288, this.context) ) { case 1: { localContext = new ValueExpressionDefaultContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2248; + this.state = 2246; this.primaryExpression(0); } break; @@ -10355,7 +10347,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ArithmeticUnaryContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2249; + this.state = 2247; (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 255 || _la === 256)) { @@ -10365,15 +10357,15 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2250; + this.state = 2248; this.valueExpression(4); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2264; + this.state = 2262; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 291, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 290, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -10381,19 +10373,19 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2262; + this.state = 2260; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { case 1: { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_valueExpression); - this.state = 2253; + this.state = 2251; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 2254; + this.state = 2252; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 7) !== 0))) { @@ -10403,7 +10395,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2255; + this.state = 2253; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -10412,11 +10404,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_valueExpression); - this.state = 2256; + this.state = 2254; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2257; + this.state = 2255; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 255 || _la === 256)) { @@ -10426,7 +10418,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2258; + this.state = 2256; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -10435,22 +10427,22 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ConcatenationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_valueExpression); - this.state = 2259; + this.state = 2257; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 2260; + this.state = 2258; this.match(ImpalaSqlParser.CONCAT); - this.state = 2261; + this.state = 2259; (localContext as ConcatenationContext)._right = this.valueExpression(2); } break; } } } - this.state = 2266; + this.state = 2264; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 291, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 290, this.context); } } } @@ -10487,16 +10479,16 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2513; + this.state = 2511; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 321, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 320, this.context) ) { case 1: { localContext = new NullLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2268; + this.state = 2266; this.match(ImpalaSqlParser.KW_NULL); } break; @@ -10505,7 +10497,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new IntervalLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2269; + this.state = 2267; this.interval(); } break; @@ -10514,9 +10506,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new TypeConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2270; + this.state = 2268; this.identifier(); - this.state = 2271; + this.state = 2269; this.stringLiteral(); } break; @@ -10525,9 +10517,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new TypeConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2273; + this.state = 2271; this.match(ImpalaSqlParser.DOUBLE_PRECISION); - this.state = 2274; + this.state = 2272; this.stringLiteral(); } break; @@ -10536,7 +10528,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new NumericLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2275; + this.state = 2273; this.number_(); } break; @@ -10545,7 +10537,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BooleanLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2276; + this.state = 2274; this.booleanValue(); } break; @@ -10554,7 +10546,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new StringLiteralValuesContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2277; + this.state = 2275; this.stringLiteral(); } break; @@ -10563,7 +10555,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BinaryLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2278; + this.state = 2276; this.match(ImpalaSqlParser.BINARY_LITERAL); } break; @@ -10572,7 +10564,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ParameterContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2279; + this.state = 2277; this.match(ImpalaSqlParser.QUESTION); } break; @@ -10581,17 +10573,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new PositionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2280; + this.state = 2278; this.match(ImpalaSqlParser.KW_POSITION); - this.state = 2281; + this.state = 2279; this.match(ImpalaSqlParser.LPAREN); - this.state = 2282; + this.state = 2280; this.valueExpression(0); - this.state = 2283; + this.state = 2281; this.match(ImpalaSqlParser.KW_IN); - this.state = 2284; + this.state = 2282; this.valueExpression(0); - this.state = 2285; + this.state = 2283; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10600,41 +10592,41 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new RowConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2287; + this.state = 2285; this.match(ImpalaSqlParser.LPAREN); - this.state = 2288; + this.state = 2286; this.expression(); - this.state = 2291; + this.state = 2289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2289; + this.state = 2287; this.match(ImpalaSqlParser.KW_AS); - this.state = 2290; + this.state = 2288; this.type_(0); } } - this.state = 2301; + this.state = 2299; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 294, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 2293; + this.state = 2291; this.match(ImpalaSqlParser.COMMA); - this.state = 2294; + this.state = 2292; this.expression(); - this.state = 2297; + this.state = 2295; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2295; + this.state = 2293; this.match(ImpalaSqlParser.KW_AS); - this.state = 2296; + this.state = 2294; this.type_(0); } } @@ -10642,11 +10634,11 @@ export class ImpalaSqlParser extends SQLParserBase { } } } - this.state = 2303; + this.state = 2301; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 294, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); } - this.state = 2304; + this.state = 2302; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10655,29 +10647,29 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new RowConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2306; + this.state = 2304; this.match(ImpalaSqlParser.KW_ROW); - this.state = 2307; + this.state = 2305; this.match(ImpalaSqlParser.LPAREN); - this.state = 2308; + this.state = 2306; this.expression(); - this.state = 2313; + this.state = 2311; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2309; + this.state = 2307; this.match(ImpalaSqlParser.COMMA); - this.state = 2310; + this.state = 2308; this.expression(); } } - this.state = 2315; + this.state = 2313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2316; + this.state = 2314; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10686,30 +10678,30 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2318; + this.state = 2316; this.functionNamePath(); - this.state = 2319; + this.state = 2317; this.match(ImpalaSqlParser.LPAREN); - this.state = 2320; + this.state = 2318; this.match(ImpalaSqlParser.ASTERISK); - this.state = 2321; + this.state = 2319; this.match(ImpalaSqlParser.RPAREN); - this.state = 2323; + this.state = 2321; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 295, this.context) ) { case 1: { - this.state = 2322; + this.state = 2320; this.filter(); } break; } - this.state = 2326; + this.state = 2324; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 297, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { case 1: { - this.state = 2325; + this.state = 2323; this.over(); } break; @@ -10721,94 +10713,94 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2328; + this.state = 2326; this.functionNamePath(); - this.state = 2329; + this.state = 2327; this.match(ImpalaSqlParser.LPAREN); - this.state = 2341; + this.state = 2339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805323012) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 1442972447) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 2218795145) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 269631421) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 271654979) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 537926659) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 16393) !== 0) || ((((_la - 255)) & ~0x1F) === 0 && ((1 << (_la - 255)) & 2549744643) !== 0)) { { - this.state = 2331; + this.state = 2329; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || _la === 57) { { - this.state = 2330; + this.state = 2328; this.setQuantifier(); } } - this.state = 2333; + this.state = 2331; this.expression(); - this.state = 2338; + this.state = 2336; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2334; + this.state = 2332; this.match(ImpalaSqlParser.COMMA); - this.state = 2335; + this.state = 2333; this.expression(); } } - this.state = 2340; + this.state = 2338; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2353; + this.state = 2351; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139) { { - this.state = 2343; + this.state = 2341; this.match(ImpalaSqlParser.KW_ORDER); - this.state = 2344; + this.state = 2342; this.match(ImpalaSqlParser.KW_BY); - this.state = 2345; + this.state = 2343; this.sortItem(); - this.state = 2350; + this.state = 2348; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2346; + this.state = 2344; this.match(ImpalaSqlParser.COMMA); - this.state = 2347; + this.state = 2345; this.sortItem(); } } - this.state = 2352; + this.state = 2350; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2355; + this.state = 2353; this.match(ImpalaSqlParser.RPAREN); - this.state = 2357; + this.state = 2355; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2356; + this.state = 2354; this.filter(); } break; } - this.state = 2360; + this.state = 2358; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { case 1: { - this.state = 2359; + this.state = 2357; this.over(); } break; @@ -10820,11 +10812,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2362; + this.state = 2360; this.identifier(); - this.state = 2363; + this.state = 2361; this.match(ImpalaSqlParser.RIGHT_ARROW); - this.state = 2364; + this.state = 2362; this.expression(); } break; @@ -10833,39 +10825,39 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2366; + this.state = 2364; this.match(ImpalaSqlParser.LPAREN); - this.state = 2375; + this.state = 2373; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 14 || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 37748835) !== 0) || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2416443409) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1610760439) !== 0) || ((((_la - 172)) & ~0x1F) === 0 && ((1 << (_la - 172)) & 8401155) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 134291969) !== 0) || ((((_la - 274)) & ~0x1F) === 0 && ((1 << (_la - 274)) & 705) !== 0)) { { - this.state = 2367; + this.state = 2365; this.identifier(); - this.state = 2372; + this.state = 2370; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2368; + this.state = 2366; this.match(ImpalaSqlParser.COMMA); - this.state = 2369; + this.state = 2367; this.identifier(); } } - this.state = 2374; + this.state = 2372; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2377; + this.state = 2375; this.match(ImpalaSqlParser.RPAREN); - this.state = 2378; + this.state = 2376; this.match(ImpalaSqlParser.RIGHT_ARROW); - this.state = 2379; + this.state = 2377; this.expression(); } break; @@ -10874,11 +10866,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SubqueryExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2380; + this.state = 2378; this.match(ImpalaSqlParser.LPAREN); - this.state = 2381; + this.state = 2379; this.queryStatement(); - this.state = 2382; + this.state = 2380; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10887,13 +10879,13 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ExistsContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2384; + this.state = 2382; this.match(ImpalaSqlParser.KW_EXISTS); - this.state = 2385; + this.state = 2383; this.match(ImpalaSqlParser.LPAREN); - this.state = 2386; + this.state = 2384; this.queryStatement(); - this.state = 2387; + this.state = 2385; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10902,37 +10894,37 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SimpleCaseContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2389; + this.state = 2387; this.match(ImpalaSqlParser.KW_CASE); - this.state = 2390; + this.state = 2388; this.valueExpression(0); - this.state = 2392; + this.state = 2390; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2391; + this.state = 2389; this.whenClause(); } } - this.state = 2394; + this.state = 2392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 214); - this.state = 2398; + this.state = 2396; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 2396; + this.state = 2394; this.match(ImpalaSqlParser.KW_ELSE); - this.state = 2397; + this.state = 2395; (localContext as SimpleCaseContext)._elseExpression = this.expression(); } } - this.state = 2400; + this.state = 2398; this.match(ImpalaSqlParser.KW_END); } break; @@ -10941,35 +10933,35 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SearchedCaseContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2402; + this.state = 2400; this.match(ImpalaSqlParser.KW_CASE); - this.state = 2404; + this.state = 2402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2403; + this.state = 2401; this.whenClause(); } } - this.state = 2406; + this.state = 2404; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 214); - this.state = 2410; + this.state = 2408; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 2408; + this.state = 2406; this.match(ImpalaSqlParser.KW_ELSE); - this.state = 2409; + this.state = 2407; (localContext as SearchedCaseContext)._elseExpression = this.expression(); } } - this.state = 2412; + this.state = 2410; this.match(ImpalaSqlParser.KW_END); } break; @@ -10978,17 +10970,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CastContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2414; + this.state = 2412; this.match(ImpalaSqlParser.KW_CAST); - this.state = 2415; + this.state = 2413; this.match(ImpalaSqlParser.LPAREN); - this.state = 2416; + this.state = 2414; this.expression(); - this.state = 2417; + this.state = 2415; this.match(ImpalaSqlParser.KW_AS); - this.state = 2418; + this.state = 2416; this.type_(0); - this.state = 2419; + this.state = 2417; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10997,17 +10989,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CastContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2421; + this.state = 2419; this.match(ImpalaSqlParser.KW_TRY_CAST); - this.state = 2422; + this.state = 2420; this.match(ImpalaSqlParser.LPAREN); - this.state = 2423; + this.state = 2421; this.expression(); - this.state = 2424; + this.state = 2422; this.match(ImpalaSqlParser.KW_AS); - this.state = 2425; + this.state = 2423; this.type_(0); - this.state = 2426; + this.state = 2424; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11016,37 +11008,37 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ArrayConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2428; + this.state = 2426; this.match(ImpalaSqlParser.KW_ARRAY); - this.state = 2429; + this.state = 2427; this.match(ImpalaSqlParser.LSQUARE); - this.state = 2438; + this.state = 2436; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805323008) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 1442841375) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 2218795145) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 269631421) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 271654979) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 537926659) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 16393) !== 0) || ((((_la - 255)) & ~0x1F) === 0 && ((1 << (_la - 255)) & 2549744643) !== 0)) { { - this.state = 2430; + this.state = 2428; this.expression(); - this.state = 2435; + this.state = 2433; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2431; + this.state = 2429; this.match(ImpalaSqlParser.COMMA); - this.state = 2432; + this.state = 2430; this.expression(); } } - this.state = 2437; + this.state = 2435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2440; + this.state = 2438; this.match(ImpalaSqlParser.RSQUARE); } break; @@ -11055,7 +11047,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ColumnReferenceContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2441; + this.state = 2439; this.identifier(); } break; @@ -11064,7 +11056,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2442; + this.state = 2440; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_DATE); } break; @@ -11073,18 +11065,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2443; + this.state = 2441; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_TIME); - this.state = 2447; + this.state = 2445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { case 1: { - this.state = 2444; + this.state = 2442; this.match(ImpalaSqlParser.LPAREN); - this.state = 2445; + this.state = 2443; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2446; + this.state = 2444; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11096,18 +11088,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2449; + this.state = 2447; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_TIMESTAMP); - this.state = 2453; + this.state = 2451; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { case 1: { - this.state = 2450; + this.state = 2448; this.match(ImpalaSqlParser.LPAREN); - this.state = 2451; + this.state = 2449; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2452; + this.state = 2450; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11119,18 +11111,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2455; + this.state = 2453; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_LOCALTIME); - this.state = 2459; + this.state = 2457; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { case 1: { - this.state = 2456; + this.state = 2454; this.match(ImpalaSqlParser.LPAREN); - this.state = 2457; + this.state = 2455; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2458; + this.state = 2456; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11142,18 +11134,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2461; + this.state = 2459; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_LOCALTIMESTAMP); - this.state = 2465; + this.state = 2463; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 316, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { case 1: { - this.state = 2462; + this.state = 2460; this.match(ImpalaSqlParser.LPAREN); - this.state = 2463; + this.state = 2461; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2464; + this.state = 2462; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11165,7 +11157,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CurrentUserContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2467; + this.state = 2465; (localContext as CurrentUserContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_USER); } break; @@ -11174,7 +11166,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CurrentPathContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2468; + this.state = 2466; (localContext as CurrentPathContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_PATH); } break; @@ -11183,29 +11175,29 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SubstringContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2469; + this.state = 2467; this.match(ImpalaSqlParser.KW_SUBSTRING); - this.state = 2470; + this.state = 2468; this.match(ImpalaSqlParser.LPAREN); - this.state = 2471; + this.state = 2469; this.valueExpression(0); - this.state = 2472; + this.state = 2470; this.match(ImpalaSqlParser.KW_FROM); - this.state = 2473; + this.state = 2471; this.valueExpression(0); - this.state = 2476; + this.state = 2474; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 2474; + this.state = 2472; this.match(ImpalaSqlParser.KW_FOR); - this.state = 2475; + this.state = 2473; this.valueExpression(0); } } - this.state = 2478; + this.state = 2476; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11214,25 +11206,25 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new NormalizeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2480; + this.state = 2478; this.match(ImpalaSqlParser.KW_NORMALIZE); - this.state = 2481; + this.state = 2479; this.match(ImpalaSqlParser.LPAREN); - this.state = 2482; + this.state = 2480; this.valueExpression(0); - this.state = 2485; + this.state = 2483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 263) { { - this.state = 2483; + this.state = 2481; this.match(ImpalaSqlParser.COMMA); - this.state = 2484; + this.state = 2482; this.normalForm(); } } - this.state = 2487; + this.state = 2485; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11241,17 +11233,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ExtractContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2489; + this.state = 2487; this.match(ImpalaSqlParser.KW_EXTRACT); - this.state = 2490; + this.state = 2488; this.match(ImpalaSqlParser.LPAREN); - this.state = 2491; + this.state = 2489; this.identifier(); - this.state = 2492; + this.state = 2490; this.match(ImpalaSqlParser.KW_FROM); - this.state = 2493; + this.state = 2491; this.valueExpression(0); - this.state = 2494; + this.state = 2492; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11260,11 +11252,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ParenthesizedExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2496; + this.state = 2494; this.match(ImpalaSqlParser.LPAREN); - this.state = 2497; + this.state = 2495; this.expression(); - this.state = 2498; + this.state = 2496; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11273,45 +11265,45 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new GroupingOperationContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2500; + this.state = 2498; this.match(ImpalaSqlParser.KW_GROUPING); - this.state = 2501; + this.state = 2499; this.match(ImpalaSqlParser.LPAREN); - this.state = 2510; + this.state = 2508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 14 || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 37748835) !== 0) || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2416443409) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1610760439) !== 0) || ((((_la - 172)) & ~0x1F) === 0 && ((1 << (_la - 172)) & 8401155) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 134291969) !== 0) || ((((_la - 274)) & ~0x1F) === 0 && ((1 << (_la - 274)) & 705) !== 0)) { { - this.state = 2502; + this.state = 2500; this.qualifiedName(); - this.state = 2507; + this.state = 2505; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2503; + this.state = 2501; this.match(ImpalaSqlParser.COMMA); - this.state = 2504; + this.state = 2502; this.qualifiedName(); } } - this.state = 2509; + this.state = 2507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2512; + this.state = 2510; this.match(ImpalaSqlParser.RPAREN); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2525; + this.state = 2523; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 322, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -11319,23 +11311,23 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2523; + this.state = 2521; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 321, this.context) ) { case 1: { localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as SubscriptContext)._value = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_primaryExpression); - this.state = 2515; + this.state = 2513; if (!(this.precpred(this.context, 15))) { throw this.createFailedPredicateException("this.precpred(this.context, 15)"); } - this.state = 2516; + this.state = 2514; this.match(ImpalaSqlParser.LSQUARE); - this.state = 2517; + this.state = 2515; (localContext as SubscriptContext)._index = this.valueExpression(0); - this.state = 2518; + this.state = 2516; this.match(ImpalaSqlParser.RSQUARE); } break; @@ -11344,22 +11336,22 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as DereferenceContext)._base = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_primaryExpression); - this.state = 2520; + this.state = 2518; if (!(this.precpred(this.context, 13))) { throw this.createFailedPredicateException("this.precpred(this.context, 13)"); } - this.state = 2521; + this.state = 2519; this.match(ImpalaSqlParser.DOT); - this.state = 2522; + this.state = 2520; (localContext as DereferenceContext)._fieldName = this.identifier(); } break; } } } - this.state = 2527; + this.state = 2525; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 322, this.context); } } } @@ -11381,14 +11373,14 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new StringLiteralContext(this.context, this.state); this.enterRule(localContext, 314, ImpalaSqlParser.RULE_stringLiteral); try { - this.state = 2534; + this.state = 2532; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.STRING: localContext = new BasicStringLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2528; + this.state = 2526; this.match(ImpalaSqlParser.STRING); } break; @@ -11396,16 +11388,16 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnicodeStringLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2529; + this.state = 2527; this.match(ImpalaSqlParser.UNICODE_STRING); - this.state = 2532; + this.state = 2530; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 324, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { case 1: { - this.state = 2530; + this.state = 2528; this.match(ImpalaSqlParser.KW_UESCAPE); - this.state = 2531; + this.state = 2529; this.match(ImpalaSqlParser.STRING); } break; @@ -11437,7 +11429,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2536; + this.state = 2534; _la = this.tokenStream.LA(1); if(!(((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 63) !== 0))) { this.errorHandler.recoverInline(this); @@ -11469,7 +11461,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2538; + this.state = 2536; _la = this.tokenStream.LA(1); if(!(_la === 2 || _la === 6 || _la === 181)) { this.errorHandler.recoverInline(this); @@ -11501,7 +11493,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2540; + this.state = 2538; _la = this.tokenStream.LA(1); if(!(_la === 70 || _la === 194)) { this.errorHandler.recoverInline(this); @@ -11530,54 +11522,54 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new IntervalContext(this.context, this.state); this.enterRule(localContext, 322, ImpalaSqlParser.RULE_interval); try { - this.state = 2556; + this.state = 2554; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2542; + this.state = 2540; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2543; + this.state = 2541; this.intervalField(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2544; + this.state = 2542; this.match(ImpalaSqlParser.LPAREN); - this.state = 2545; + this.state = 2543; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2546; + this.state = 2544; this.match(ImpalaSqlParser.RPAREN); - this.state = 2547; + this.state = 2545; this.intervalField(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2548; + this.state = 2546; this.match(ImpalaSqlParser.KW_INTERVAL); - this.state = 2549; + this.state = 2547; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2550; + this.state = 2548; this.intervalField(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2551; + this.state = 2549; this.match(ImpalaSqlParser.KW_INTERVAL); - this.state = 2552; + this.state = 2550; this.match(ImpalaSqlParser.LPAREN); - this.state = 2553; + this.state = 2551; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2554; + this.state = 2552; this.match(ImpalaSqlParser.RPAREN); - this.state = 2555; + this.state = 2553; this.intervalField(); } break; @@ -11604,7 +11596,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2558; + this.state = 2556; _la = this.tokenStream.LA(1); if(!(_la === 48 || _la === 49 || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2147483651) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 7) !== 0) || _la === 172 || _la === 173 || _la === 217 || _la === 218)) { this.errorHandler.recoverInline(this); @@ -11636,7 +11628,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2560; + this.state = 2558; _la = this.tokenStream.LA(1); if(!(((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -11680,113 +11672,113 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2607; + this.state = 2605; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 331, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { case 1: { - this.state = 2563; + this.state = 2561; this.match(ImpalaSqlParser.KW_ARRAY); - this.state = 2564; + this.state = 2562; this.match(ImpalaSqlParser.LT); - this.state = 2565; + this.state = 2563; this.type_(0); - this.state = 2566; + this.state = 2564; this.match(ImpalaSqlParser.GT); } break; case 2: { - this.state = 2568; + this.state = 2566; this.match(ImpalaSqlParser.KW_MAP); - this.state = 2569; + this.state = 2567; this.match(ImpalaSqlParser.LT); - this.state = 2570; + this.state = 2568; this.type_(0); - this.state = 2571; + this.state = 2569; this.match(ImpalaSqlParser.COMMA); - this.state = 2572; + this.state = 2570; this.type_(0); - this.state = 2573; + this.state = 2571; this.match(ImpalaSqlParser.GT); } break; case 3: { - this.state = 2575; + this.state = 2573; this.match(ImpalaSqlParser.KW_STRUCT); - this.state = 2576; + this.state = 2574; this.match(ImpalaSqlParser.LT); - this.state = 2577; + this.state = 2575; this.identifier(); - this.state = 2578; + this.state = 2576; this.type_(0); - this.state = 2585; + this.state = 2583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2579; + this.state = 2577; this.match(ImpalaSqlParser.COMMA); - this.state = 2580; + this.state = 2578; this.identifier(); - this.state = 2581; + this.state = 2579; this.type_(0); } } - this.state = 2587; + this.state = 2585; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2588; + this.state = 2586; this.match(ImpalaSqlParser.GT); } break; case 4: { - this.state = 2592; + this.state = 2590; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { case 1: { - this.state = 2590; + this.state = 2588; this.baseType(); } break; case 2: { - this.state = 2591; + this.state = 2589; this.dataType(); } break; } - this.state = 2605; + this.state = 2603; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { case 1: { - this.state = 2594; + this.state = 2592; this.match(ImpalaSqlParser.LPAREN); - this.state = 2595; + this.state = 2593; this.typeParameter(); - this.state = 2600; + this.state = 2598; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2596; + this.state = 2594; this.match(ImpalaSqlParser.COMMA); - this.state = 2597; + this.state = 2595; this.typeParameter(); } } - this.state = 2602; + this.state = 2600; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2603; + this.state = 2601; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11795,9 +11787,9 @@ export class ImpalaSqlParser extends SQLParserBase { break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2613; + this.state = 2611; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 332, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -11808,18 +11800,18 @@ export class ImpalaSqlParser extends SQLParserBase { { localContext = new TypeContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_type); - this.state = 2609; + this.state = 2607; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 2610; + this.state = 2608; this.match(ImpalaSqlParser.KW_ARRAY); } } } - this.state = 2615; + this.state = 2613; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 332, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); } } } @@ -11844,7 +11836,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2616; + this.state = 2614; _la = this.tokenStream.LA(1); if(!(_la === 8 || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 262143) !== 0))) { this.errorHandler.recoverInline(this); @@ -11873,13 +11865,13 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new TypeParameterContext(this.context, this.state); this.enterRule(localContext, 332, ImpalaSqlParser.RULE_typeParameter); try { - this.state = 2620; + this.state = 2618; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 2618; + this.state = 2616; this.match(ImpalaSqlParser.INTEGER_VALUE); } break; @@ -11944,7 +11936,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 2); { - this.state = 2619; + this.state = 2617; this.type_(0); } break; @@ -11970,27 +11962,27 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new BaseTypeContext(this.context, this.state); this.enterRule(localContext, 334, ImpalaSqlParser.RULE_baseType); try { - this.state = 2626; + this.state = 2624; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.TIME_WITH_TIME_ZONE: this.enterOuterAlt(localContext, 1); { - this.state = 2622; + this.state = 2620; this.match(ImpalaSqlParser.TIME_WITH_TIME_ZONE); } break; case ImpalaSqlParser.TIMESTAMP_WITH_TIME_ZONE: this.enterOuterAlt(localContext, 2); { - this.state = 2623; + this.state = 2621; this.match(ImpalaSqlParser.TIMESTAMP_WITH_TIME_ZONE); } break; case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 3); { - this.state = 2624; + this.state = 2622; this.match(ImpalaSqlParser.DOUBLE_PRECISION); } break; @@ -12034,7 +12026,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(localContext, 4); { - this.state = 2625; + this.state = 2623; this.identifier(); } break; @@ -12062,13 +12054,13 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2628; + this.state = 2626; this.match(ImpalaSqlParser.KW_WHEN); - this.state = 2629; + this.state = 2627; localContext._condition = this.expression(); - this.state = 2630; + this.state = 2628; this.match(ImpalaSqlParser.KW_THEN); - this.state = 2631; + this.state = 2629; localContext._result = this.expression(); } } @@ -12092,15 +12084,15 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2633; + this.state = 2631; this.match(ImpalaSqlParser.KW_FILTER); - this.state = 2634; + this.state = 2632; this.match(ImpalaSqlParser.LPAREN); - this.state = 2635; + this.state = 2633; this.match(ImpalaSqlParser.KW_WHERE); - this.state = 2636; + this.state = 2634; this.booleanExpression(0); - this.state = 2637; + this.state = 2635; this.match(ImpalaSqlParser.RPAREN); } } @@ -12125,83 +12117,83 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2639; + this.state = 2637; this.match(ImpalaSqlParser.KW_OVER); - this.state = 2640; + this.state = 2638; this.match(ImpalaSqlParser.LPAREN); - this.state = 2651; + this.state = 2649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 145) { { - this.state = 2641; + this.state = 2639; this.match(ImpalaSqlParser.KW_PARTITION); - this.state = 2642; + this.state = 2640; this.match(ImpalaSqlParser.KW_BY); - this.state = 2643; + this.state = 2641; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); - this.state = 2648; + this.state = 2646; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2644; + this.state = 2642; this.match(ImpalaSqlParser.COMMA); - this.state = 2645; + this.state = 2643; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); } } - this.state = 2650; + this.state = 2648; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2663; + this.state = 2661; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139) { { - this.state = 2653; + this.state = 2651; this.match(ImpalaSqlParser.KW_ORDER); - this.state = 2654; + this.state = 2652; this.match(ImpalaSqlParser.KW_BY); - this.state = 2655; + this.state = 2653; this.sortItem(); - this.state = 2660; + this.state = 2658; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2656; + this.state = 2654; this.match(ImpalaSqlParser.COMMA); - this.state = 2657; + this.state = 2655; this.sortItem(); } } - this.state = 2662; + this.state = 2660; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2666; + this.state = 2664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 154 || _la === 169) { { - this.state = 2665; + this.state = 2663; this.windowFrame(); } } - this.state = 2668; + this.state = 2666; this.match(ImpalaSqlParser.RPAREN); } } @@ -12223,54 +12215,54 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new WindowFrameContext(this.context, this.state); this.enterRule(localContext, 342, ImpalaSqlParser.RULE_windowFrame); try { - this.state = 2686; + this.state = 2684; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2670; + this.state = 2668; localContext._frameType = this.match(ImpalaSqlParser.KW_RANGE); - this.state = 2671; + this.state = 2669; localContext._start_ = this.frameBound(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2672; + this.state = 2670; localContext._frameType = this.match(ImpalaSqlParser.KW_ROWS); - this.state = 2673; + this.state = 2671; localContext._start_ = this.frameBound(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2674; + this.state = 2672; localContext._frameType = this.match(ImpalaSqlParser.KW_RANGE); - this.state = 2675; + this.state = 2673; this.match(ImpalaSqlParser.KW_BETWEEN); - this.state = 2676; + this.state = 2674; localContext._start_ = this.frameBound(); - this.state = 2677; + this.state = 2675; this.match(ImpalaSqlParser.KW_AND); - this.state = 2678; + this.state = 2676; localContext._end = this.frameBound(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2680; + this.state = 2678; localContext._frameType = this.match(ImpalaSqlParser.KW_ROWS); - this.state = 2681; + this.state = 2679; this.match(ImpalaSqlParser.KW_BETWEEN); - this.state = 2682; + this.state = 2680; localContext._start_ = this.frameBound(); - this.state = 2683; + this.state = 2681; this.match(ImpalaSqlParser.KW_AND); - this.state = 2684; + this.state = 2682; localContext._end = this.frameBound(); } break; @@ -12295,16 +12287,16 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 344, ImpalaSqlParser.RULE_frameBound); let _la: number; try { - this.state = 2697; + this.state = 2695; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 341, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { case 1: localContext = new UnboundedFrameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2688; + this.state = 2686; this.match(ImpalaSqlParser.KW_UNBOUNDED); - this.state = 2689; + this.state = 2687; (localContext as UnboundedFrameContext)._boundType = this.match(ImpalaSqlParser.KW_PRECEDING); } break; @@ -12312,9 +12304,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnboundedFrameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2690; + this.state = 2688; this.match(ImpalaSqlParser.KW_UNBOUNDED); - this.state = 2691; + this.state = 2689; (localContext as UnboundedFrameContext)._boundType = this.match(ImpalaSqlParser.KW_FOLLOWING); } break; @@ -12322,9 +12314,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CurrentRowBoundContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2692; + this.state = 2690; this.match(ImpalaSqlParser.KW_CURRENT); - this.state = 2693; + this.state = 2691; this.match(ImpalaSqlParser.KW_ROW); } break; @@ -12332,9 +12324,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BoundedFrameContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2694; + this.state = 2692; this.expression(); - this.state = 2695; + this.state = 2693; (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 77 || _la === 149)) { @@ -12366,18 +12358,18 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new PathElementContext(this.context, this.state); this.enterRule(localContext, 346, ImpalaSqlParser.RULE_pathElement); try { - this.state = 2704; + this.state = 2702; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 342, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 341, this.context) ) { case 1: localContext = new QualifiedArgumentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2699; + this.state = 2697; this.identifier(); - this.state = 2700; + this.state = 2698; this.match(ImpalaSqlParser.DOT); - this.state = 2701; + this.state = 2699; this.identifier(); } break; @@ -12385,7 +12377,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnqualifiedArgumentContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2703; + this.state = 2701; this.identifier(); } break; @@ -12412,21 +12404,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2706; + this.state = 2704; this.pathElement(); - this.state = 2711; + this.state = 2709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2707; + this.state = 2705; this.match(ImpalaSqlParser.COMMA); - this.state = 2708; + this.state = 2706; this.pathElement(); } } - this.state = 2713; + this.state = 2711; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12451,66 +12443,66 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 350, ImpalaSqlParser.RULE_privilege); let _la: number; try { - this.state = 2727; + this.state = 2725; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 2714; + this.state = 2712; this.match(ImpalaSqlParser.KW_ALL); } break; case ImpalaSqlParser.KW_ALTER: this.enterOuterAlt(localContext, 2); { - this.state = 2715; + this.state = 2713; this.match(ImpalaSqlParser.KW_ALTER); } break; case ImpalaSqlParser.KW_DROP: this.enterOuterAlt(localContext, 3); { - this.state = 2716; + this.state = 2714; this.match(ImpalaSqlParser.KW_DROP); } break; case ImpalaSqlParser.KW_CREATE: this.enterOuterAlt(localContext, 4); { - this.state = 2717; + this.state = 2715; this.match(ImpalaSqlParser.KW_CREATE); } break; case ImpalaSqlParser.KW_INSERT: this.enterOuterAlt(localContext, 5); { - this.state = 2718; + this.state = 2716; this.match(ImpalaSqlParser.KW_INSERT); } break; case ImpalaSqlParser.KW_REFRESH: this.enterOuterAlt(localContext, 6); { - this.state = 2719; + this.state = 2717; this.match(ImpalaSqlParser.KW_REFRESH); } break; case ImpalaSqlParser.KW_SELECT: this.enterOuterAlt(localContext, 7); { - this.state = 2720; + this.state = 2718; this.match(ImpalaSqlParser.KW_SELECT); - this.state = 2725; + this.state = 2723; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 265) { { - this.state = 2721; + this.state = 2719; this.match(ImpalaSqlParser.LPAREN); - this.state = 2722; + this.state = 2720; localContext._columnName = this.identifier(); - this.state = 2723; + this.state = 2721; this.match(ImpalaSqlParser.RPAREN); } } @@ -12542,7 +12534,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2729; + this.state = 2727; _la = this.tokenStream.LA(1); if(!(_la === 46 || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 2147484673) !== 0))) { this.errorHandler.recoverInline(this); @@ -12574,25 +12566,25 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2731; + this.state = 2729; this.identifier(); - this.state = 2736; + this.state = 2734; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 346, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 345, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2732; + this.state = 2730; this.match(ImpalaSqlParser.DOT); - this.state = 2733; + this.state = 2731; this.identifier(); } } } - this.state = 2738; + this.state = 2736; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 346, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 345, this.context); } } } @@ -12614,16 +12606,16 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new PrincipalContext(this.context, this.state); this.enterRule(localContext, 356, ImpalaSqlParser.RULE_principal); try { - this.state = 2745; + this.state = 2743; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ROLE: localContext = new RolePrincipalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2739; + this.state = 2737; this.match(ImpalaSqlParser.KW_ROLE); - this.state = 2740; + this.state = 2738; this.identifier(); } break; @@ -12631,9 +12623,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UserPrincipalContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2741; + this.state = 2739; this.match(ImpalaSqlParser.KW_USER); - this.state = 2742; + this.state = 2740; this.identifier(); } break; @@ -12641,9 +12633,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new GroupPrincipalContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2743; + this.state = 2741; this.match(ImpalaSqlParser.KW_GROUP); - this.state = 2744; + this.state = 2742; this.identifier(); } break; @@ -12669,14 +12661,14 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new IdentifierContext(this.context, this.state); this.enterRule(localContext, 358, ImpalaSqlParser.RULE_identifier); try { - this.state = 2752; + this.state = 2750; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.IDENTIFIER: localContext = new UnquotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2747; + this.state = 2745; this.match(ImpalaSqlParser.IDENTIFIER); } break; @@ -12684,7 +12676,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new QuotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2748; + this.state = 2746; this.match(ImpalaSqlParser.STRING); } break; @@ -12725,7 +12717,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnquotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2749; + this.state = 2747; this.nonReserved(); } break; @@ -12733,7 +12725,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BackQuotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2750; + this.state = 2748; this.match(ImpalaSqlParser.BACKQUOTED_IDENTIFIER); } break; @@ -12741,7 +12733,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DigitIdentifierContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2751; + this.state = 2749; this.match(ImpalaSqlParser.DIGIT_IDENTIFIER); } break; @@ -12768,24 +12760,24 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 360, ImpalaSqlParser.RULE_number); let _la: number; try { - this.state = 2766; + this.state = 2764; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 352, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { case 1: localContext = new DecimalLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2755; + this.state = 2753; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2754; + this.state = 2752; this.match(ImpalaSqlParser.MINUS); } } - this.state = 2757; + this.state = 2755; this.match(ImpalaSqlParser.DECIMAL_VALUE); } break; @@ -12793,17 +12785,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DoubleLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2759; + this.state = 2757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2758; + this.state = 2756; this.match(ImpalaSqlParser.MINUS); } } - this.state = 2761; + this.state = 2759; this.match(ImpalaSqlParser.DOUBLE_VALUE); } break; @@ -12811,17 +12803,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new IntegerLiteralContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2763; + this.state = 2761; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2762; + this.state = 2760; this.match(ImpalaSqlParser.MINUS); } } - this.state = 2765; + this.state = 2763; this.match(ImpalaSqlParser.INTEGER_VALUE); } break; @@ -12848,7 +12840,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2768; + this.state = 2766; _la = this.tokenStream.LA(1); if(!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 1085443) !== 0) || _la === 68 || _la === 91 || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 1281) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 67125377) !== 0) || ((((_la - 196)) & ~0x1F) === 0 && ((1 << (_la - 196)) & 2097409) !== 0))) { this.errorHandler.recoverInline(this); @@ -12880,7 +12872,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2770; + this.state = 2768; _la = this.tokenStream.LA(1); if(!(_la === 14 || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 37748835) !== 0) || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2416443409) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1610760439) !== 0) || ((((_la - 172)) & ~0x1F) === 0 && ((1 << (_la - 172)) & 8401155) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 134291969) !== 0))) { this.errorHandler.recoverInline(this); @@ -12986,7 +12978,7 @@ export class ImpalaSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,289,2773,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,289,2771,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -13131,1023 +13123,1022 @@ export class ImpalaSqlParser extends SQLParserBase { 106,1,106,1,106,3,106,1646,8,106,1,107,1,107,1,107,1,107,3,107,1652, 8,107,1,108,1,108,1,109,1,109,1,109,1,109,5,109,1660,8,109,10,109, 12,109,1663,9,109,3,109,1665,8,109,1,109,1,109,3,109,1669,8,109, - 1,109,1,109,3,109,1673,8,109,1,110,3,110,1676,8,110,1,110,1,110, - 5,110,1680,8,110,10,110,12,110,1683,9,110,3,110,1685,8,110,1,111, - 1,111,1,111,1,111,3,111,1691,8,111,1,111,1,111,5,111,1695,8,111, - 10,111,12,111,1698,9,111,3,111,1700,8,111,1,112,3,112,1703,8,112, - 1,112,1,112,3,112,1707,8,112,1,113,1,113,1,113,1,113,1,113,1,113, - 1,113,1,113,3,113,1717,8,113,1,114,1,114,1,115,1,115,1,116,1,116, - 1,116,5,116,1726,8,116,10,116,12,116,1729,9,116,1,116,1,116,3,116, - 1733,8,116,1,116,3,116,1736,8,116,1,117,1,117,3,117,1740,8,117,1, - 117,1,117,1,117,1,118,1,118,3,118,1747,8,118,1,118,1,118,1,118,1, - 118,1,118,1,118,5,118,1755,8,118,10,118,12,118,1758,9,118,1,118, - 1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119,1769,8,119, - 1,119,1,119,1,119,1,119,3,119,1775,8,119,3,119,1777,8,119,1,120, - 1,120,1,120,1,120,1,120,1,120,1,120,3,120,1786,8,120,1,120,3,120, - 1789,8,120,1,121,1,121,1,121,1,121,1,121,3,121,1796,8,121,1,122, - 1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,1806,8,122,1,123, - 1,123,1,123,1,123,3,123,1812,8,123,1,124,1,124,1,124,1,124,5,124, - 1818,8,124,10,124,12,124,1821,9,124,1,124,1,124,1,125,1,125,1,125, - 1,125,5,125,1829,8,125,10,125,12,125,1832,9,125,1,125,1,125,1,126, - 1,126,1,126,5,126,1839,8,126,10,126,12,126,1842,9,126,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,127,3,127,1852,8,127,3,127,1854, - 8,127,1,127,1,127,1,127,1,127,3,127,1860,8,127,1,128,1,128,1,128, - 3,128,1865,8,128,1,129,1,129,1,129,1,129,1,129,1,129,5,129,1873, - 8,129,10,129,12,129,1876,9,129,3,129,1878,8,129,1,129,1,129,1,129, - 1,129,3,129,1884,8,129,3,129,1886,8,129,1,130,1,130,1,130,1,130, - 1,130,1,130,3,130,1894,8,130,1,130,1,130,1,130,1,130,3,130,1900, - 8,130,1,130,5,130,1903,8,130,10,130,12,130,1906,9,130,1,131,1,131, - 1,131,1,131,1,131,1,131,1,131,5,131,1915,8,131,10,131,12,131,1918, - 9,131,1,131,1,131,1,131,1,131,3,131,1924,8,131,1,132,1,132,3,132, - 1928,8,132,1,132,1,132,3,132,1932,8,132,1,133,1,133,3,133,1936,8, - 133,1,133,3,133,1939,8,133,1,133,1,133,1,133,5,133,1944,8,133,10, - 133,12,133,1947,9,133,1,133,1,133,1,133,1,133,5,133,1953,8,133,10, - 133,12,133,1956,9,133,3,133,1958,8,133,1,133,1,133,3,133,1962,8, - 133,1,133,1,133,1,133,3,133,1967,8,133,1,133,1,133,3,133,1971,8, - 133,1,134,3,134,1974,8,134,1,134,1,134,1,134,5,134,1979,8,134,10, - 134,12,134,1982,9,134,1,135,1,135,1,136,1,136,1,136,1,136,5,136, - 1990,8,136,10,136,12,136,1993,9,136,3,136,1995,8,136,1,136,1,136, - 3,136,1999,8,136,1,137,1,137,3,137,2003,8,137,1,137,1,137,1,137, - 1,138,1,138,1,139,1,139,3,139,2012,8,139,1,139,3,139,2015,8,139, - 1,139,1,139,1,139,1,139,1,139,3,139,2022,8,139,1,140,1,140,1,140, - 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,3,140,2036, - 8,140,5,140,2038,8,140,10,140,12,140,2041,9,140,1,141,3,141,2044, - 8,141,1,141,1,141,3,141,2048,8,141,1,141,1,141,3,141,2052,8,141, - 1,141,1,141,3,141,2056,8,141,1,141,1,141,3,141,2060,8,141,1,141, - 1,141,3,141,2064,8,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141, - 1,141,3,141,2074,8,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142, - 5,142,2083,8,142,10,142,12,142,2086,9,142,1,142,1,142,3,142,2090, - 8,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143, - 1,143,3,143,2103,8,143,3,143,2105,8,143,1,144,1,144,1,145,1,145, - 3,145,2111,8,145,1,145,1,145,3,145,2115,8,145,3,145,2117,8,145,1, - 146,1,146,1,146,1,146,5,146,2123,8,146,10,146,12,146,2126,9,146, - 1,146,1,146,1,147,1,147,3,147,2132,8,147,1,147,1,147,1,147,3,147, - 2137,8,147,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149, - 5,149,2148,8,149,10,149,12,149,2151,9,149,1,149,1,149,1,149,3,149, - 2156,8,149,1,150,1,150,1,150,1,150,1,151,1,151,3,151,2164,8,151, - 1,152,1,152,1,153,1,153,1,153,3,153,2171,8,153,1,153,1,153,3,153, - 2175,8,153,1,153,1,153,1,153,1,153,1,153,1,153,5,153,2183,8,153, - 10,153,12,153,2186,9,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154, - 1,154,3,154,2196,8,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154, - 2204,8,154,1,154,1,154,1,154,1,154,1,154,5,154,2211,8,154,10,154, - 12,154,2214,9,154,1,154,1,154,1,154,3,154,2219,8,154,1,154,1,154, - 1,154,3,154,2224,8,154,1,154,1,154,1,154,1,154,3,154,2230,8,154, - 1,154,1,154,1,154,1,154,3,154,2236,8,154,1,154,1,154,1,154,3,154, - 2241,8,154,1,154,1,154,1,154,3,154,2246,8,154,1,155,1,155,1,155, - 1,155,3,155,2252,8,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, - 1,155,1,155,5,155,2263,8,155,10,155,12,155,2266,9,155,1,156,1,156, + 1,109,1,109,3,109,1673,8,109,1,110,1,110,1,110,5,110,1678,8,110, + 10,110,12,110,1681,9,110,3,110,1683,8,110,1,111,1,111,1,111,1,111, + 3,111,1689,8,111,1,111,1,111,5,111,1693,8,111,10,111,12,111,1696, + 9,111,3,111,1698,8,111,1,112,3,112,1701,8,112,1,112,1,112,3,112, + 1705,8,112,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,3,113, + 1715,8,113,1,114,1,114,1,115,1,115,1,116,1,116,1,116,5,116,1724, + 8,116,10,116,12,116,1727,9,116,1,116,1,116,3,116,1731,8,116,1,116, + 3,116,1734,8,116,1,117,1,117,3,117,1738,8,117,1,117,1,117,1,117, + 1,118,1,118,3,118,1745,8,118,1,118,1,118,1,118,1,118,1,118,1,118, + 5,118,1753,8,118,10,118,12,118,1756,9,118,1,118,1,118,1,119,1,119, + 1,119,1,119,1,119,1,119,1,119,3,119,1767,8,119,1,119,1,119,1,119, + 1,119,3,119,1773,8,119,3,119,1775,8,119,1,120,1,120,1,120,1,120, + 1,120,1,120,1,120,3,120,1784,8,120,1,120,3,120,1787,8,120,1,121, + 1,121,1,121,1,121,1,121,3,121,1794,8,121,1,122,1,122,1,122,1,122, + 1,122,1,122,1,122,1,122,3,122,1804,8,122,1,123,1,123,1,123,1,123, + 3,123,1810,8,123,1,124,1,124,1,124,1,124,5,124,1816,8,124,10,124, + 12,124,1819,9,124,1,124,1,124,1,125,1,125,1,125,1,125,5,125,1827, + 8,125,10,125,12,125,1830,9,125,1,125,1,125,1,126,1,126,1,126,5,126, + 1837,8,126,10,126,12,126,1840,9,126,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,3,127,1850,8,127,3,127,1852,8,127,1,127,1,127, + 1,127,1,127,3,127,1858,8,127,1,128,1,128,1,128,3,128,1863,8,128, + 1,129,1,129,1,129,1,129,1,129,1,129,5,129,1871,8,129,10,129,12,129, + 1874,9,129,3,129,1876,8,129,1,129,1,129,1,129,1,129,3,129,1882,8, + 129,3,129,1884,8,129,1,130,1,130,1,130,1,130,1,130,1,130,3,130,1892, + 8,130,1,130,1,130,1,130,1,130,3,130,1898,8,130,1,130,5,130,1901, + 8,130,10,130,12,130,1904,9,130,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,5,131,1913,8,131,10,131,12,131,1916,9,131,1,131,1,131,1,131, + 1,131,3,131,1922,8,131,1,132,1,132,3,132,1926,8,132,1,132,1,132, + 3,132,1930,8,132,1,133,1,133,3,133,1934,8,133,1,133,3,133,1937,8, + 133,1,133,1,133,1,133,5,133,1942,8,133,10,133,12,133,1945,9,133, + 1,133,1,133,1,133,1,133,5,133,1951,8,133,10,133,12,133,1954,9,133, + 3,133,1956,8,133,1,133,1,133,3,133,1960,8,133,1,133,1,133,1,133, + 3,133,1965,8,133,1,133,1,133,3,133,1969,8,133,1,134,3,134,1972,8, + 134,1,134,1,134,1,134,5,134,1977,8,134,10,134,12,134,1980,9,134, + 1,135,1,135,1,136,1,136,1,136,1,136,5,136,1988,8,136,10,136,12,136, + 1991,9,136,3,136,1993,8,136,1,136,1,136,3,136,1997,8,136,1,137,1, + 137,3,137,2001,8,137,1,137,1,137,1,137,1,138,1,138,1,139,1,139,3, + 139,2010,8,139,1,139,3,139,2013,8,139,1,139,1,139,1,139,1,139,1, + 139,3,139,2020,8,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,3,140,2034,8,140,5,140,2036,8,140,10, + 140,12,140,2039,9,140,1,141,3,141,2042,8,141,1,141,1,141,3,141,2046, + 8,141,1,141,1,141,3,141,2050,8,141,1,141,1,141,3,141,2054,8,141, + 1,141,1,141,3,141,2058,8,141,1,141,1,141,3,141,2062,8,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,2072,8,141,1,142, + 1,142,1,142,1,142,1,142,1,142,1,142,5,142,2081,8,142,10,142,12,142, + 2084,9,142,1,142,1,142,3,142,2088,8,142,1,143,1,143,1,143,1,143, + 1,143,1,143,1,143,1,143,1,143,1,143,1,143,3,143,2101,8,143,3,143, + 2103,8,143,1,144,1,144,1,145,1,145,3,145,2109,8,145,1,145,1,145, + 3,145,2113,8,145,3,145,2115,8,145,1,146,1,146,1,146,1,146,5,146, + 2121,8,146,10,146,12,146,2124,9,146,1,146,1,146,1,147,1,147,3,147, + 2130,8,147,1,147,1,147,1,147,3,147,2135,8,147,1,148,1,148,1,148, + 1,148,1,149,1,149,1,149,1,149,1,149,5,149,2146,8,149,10,149,12,149, + 2149,9,149,1,149,1,149,1,149,3,149,2154,8,149,1,150,1,150,1,150, + 1,150,1,151,1,151,3,151,2162,8,151,1,152,1,152,1,153,1,153,1,153, + 3,153,2169,8,153,1,153,1,153,3,153,2173,8,153,1,153,1,153,1,153, + 1,153,1,153,1,153,5,153,2181,8,153,10,153,12,153,2184,9,153,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154,2194,8,154,1,154, + 1,154,1,154,1,154,1,154,1,154,3,154,2202,8,154,1,154,1,154,1,154, + 1,154,1,154,5,154,2209,8,154,10,154,12,154,2212,9,154,1,154,1,154, + 1,154,3,154,2217,8,154,1,154,1,154,1,154,3,154,2222,8,154,1,154, + 1,154,1,154,1,154,3,154,2228,8,154,1,154,1,154,1,154,1,154,3,154, + 2234,8,154,1,154,1,154,1,154,3,154,2239,8,154,1,154,1,154,1,154, + 3,154,2244,8,154,1,155,1,155,1,155,1,155,3,155,2250,8,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,5,155,2261,8,155, + 10,155,12,155,2264,9,155,1,156,1,156,1,156,1,156,1,156,1,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,3,156,2290,8,156,1,156,1,156, + 1,156,1,156,3,156,2296,8,156,5,156,2298,8,156,10,156,12,156,2301, + 9,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2310,8,156, + 10,156,12,156,2313,9,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 3,156,2322,8,156,1,156,3,156,2325,8,156,1,156,1,156,1,156,3,156, + 2330,8,156,1,156,1,156,1,156,5,156,2335,8,156,10,156,12,156,2338, + 9,156,3,156,2340,8,156,1,156,1,156,1,156,1,156,1,156,5,156,2347, + 8,156,10,156,12,156,2350,9,156,3,156,2352,8,156,1,156,1,156,3,156, + 2356,8,156,1,156,3,156,2359,8,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,5,156,2369,8,156,10,156,12,156,2372,9,156,3,156, + 2374,8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,4,156,2391,8,156,11,156,12,156, + 2392,1,156,1,156,3,156,2397,8,156,1,156,1,156,1,156,1,156,4,156, + 2403,8,156,11,156,12,156,2404,1,156,1,156,3,156,2409,8,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 3,156,2292,8,156,1,156,1,156,1,156,1,156,3,156,2298,8,156,5,156, - 2300,8,156,10,156,12,156,2303,9,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,5,156,2312,8,156,10,156,12,156,2315,9,156,1,156,1,156, - 1,156,1,156,1,156,1,156,1,156,3,156,2324,8,156,1,156,3,156,2327, - 8,156,1,156,1,156,1,156,3,156,2332,8,156,1,156,1,156,1,156,5,156, - 2337,8,156,10,156,12,156,2340,9,156,3,156,2342,8,156,1,156,1,156, - 1,156,1,156,1,156,5,156,2349,8,156,10,156,12,156,2352,9,156,3,156, - 2354,8,156,1,156,1,156,3,156,2358,8,156,1,156,3,156,2361,8,156,1, - 156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2371,8,156,10, - 156,12,156,2374,9,156,3,156,2376,8,156,1,156,1,156,1,156,1,156,1, - 156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 4,156,2393,8,156,11,156,12,156,2394,1,156,1,156,3,156,2399,8,156, - 1,156,1,156,1,156,1,156,4,156,2405,8,156,11,156,12,156,2406,1,156, - 1,156,3,156,2411,8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2432, + 8,156,10,156,12,156,2435,9,156,3,156,2437,8,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,3,156,2446,8,156,1,156,1,156,1,156,1,156, + 3,156,2452,8,156,1,156,1,156,1,156,1,156,3,156,2458,8,156,1,156, + 1,156,1,156,1,156,3,156,2464,8,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,3,156,2475,8,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,3,156,2484,8,156,1,156,1,156,1,156,1,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,1,156,5,156,2434,8,156,10,156,12,156,2437,9,156,3,156, - 2439,8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2448, - 8,156,1,156,1,156,1,156,1,156,3,156,2454,8,156,1,156,1,156,1,156, - 1,156,3,156,2460,8,156,1,156,1,156,1,156,1,156,3,156,2466,8,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2477, - 8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2486,8,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2506,8,156,10,156, - 12,156,2509,9,156,3,156,2511,8,156,1,156,3,156,2514,8,156,1,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2524,8,156,10,156, - 12,156,2527,9,156,1,157,1,157,1,157,1,157,3,157,2533,8,157,3,157, - 2535,8,157,1,158,1,158,1,159,1,159,1,160,1,160,1,161,1,161,1,161, - 1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161, - 3,161,2557,8,161,1,162,1,162,1,163,1,163,1,164,1,164,1,164,1,164, + 1,156,1,156,5,156,2504,8,156,10,156,12,156,2507,9,156,3,156,2509, + 8,156,1,156,3,156,2512,8,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,5,156,2522,8,156,10,156,12,156,2525,9,156,1,157,1,157, + 1,157,1,157,3,157,2531,8,157,3,157,2533,8,157,1,158,1,158,1,159, + 1,159,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161, + 1,161,1,161,1,161,1,161,1,161,1,161,3,161,2555,8,161,1,162,1,162, + 1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,5,164,2584,8,164,10,164,12,164, - 2587,9,164,1,164,1,164,1,164,1,164,3,164,2593,8,164,1,164,1,164, - 1,164,1,164,5,164,2599,8,164,10,164,12,164,2602,9,164,1,164,1,164, - 3,164,2606,8,164,3,164,2608,8,164,1,164,1,164,5,164,2612,8,164,10, - 164,12,164,2615,9,164,1,165,1,165,1,166,1,166,3,166,2621,8,166,1, - 167,1,167,1,167,1,167,3,167,2627,8,167,1,168,1,168,1,168,1,168,1, - 168,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170, - 1,170,1,170,1,170,5,170,2647,8,170,10,170,12,170,2650,9,170,3,170, - 2652,8,170,1,170,1,170,1,170,1,170,1,170,5,170,2659,8,170,10,170, - 12,170,2662,9,170,3,170,2664,8,170,1,170,3,170,2667,8,170,1,170, - 1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, - 1,171,1,171,1,171,1,171,1,171,1,171,3,171,2687,8,171,1,172,1,172, - 1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172,2698,8,172,1,173, - 1,173,1,173,1,173,1,173,3,173,2705,8,173,1,174,1,174,1,174,5,174, - 2710,8,174,10,174,12,174,2713,9,174,1,175,1,175,1,175,1,175,1,175, - 1,175,1,175,1,175,1,175,1,175,1,175,3,175,2726,8,175,3,175,2728, - 8,175,1,176,1,176,1,177,1,177,1,177,5,177,2735,8,177,10,177,12,177, - 2738,9,177,1,178,1,178,1,178,1,178,1,178,1,178,3,178,2746,8,178, - 1,179,1,179,1,179,1,179,1,179,3,179,2753,8,179,1,180,3,180,2756, - 8,180,1,180,1,180,3,180,2760,8,180,1,180,1,180,3,180,2764,8,180, - 1,180,3,180,2767,8,180,1,181,1,181,1,182,1,182,1,182,10,770,1446, - 1621,1661,1681,1696,1727,1756,1830,2301,6,260,280,306,310,312,328, - 183,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, - 44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86, - 88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122, - 124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154, - 156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186, - 188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218, - 220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250, - 252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282, - 284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314, - 316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346, - 348,350,352,354,356,358,360,362,364,0,33,2,0,46,46,170,170,2,0,166, - 166,204,204,2,0,176,176,202,202,2,0,69,69,80,80,2,0,27,27,159,159, - 2,0,103,103,144,144,2,0,47,47,171,171,2,0,3,3,12,12,3,0,87,87,166, - 166,204,204,2,0,178,178,209,209,1,0,245,248,2,0,147,147,219,223, - 2,0,65,65,95,95,2,0,64,64,200,200,2,0,10,10,55,55,2,0,75,75,112, - 112,2,0,2,2,57,57,2,0,14,14,185,185,3,0,106,106,115,115,164,164, - 2,0,105,105,163,163,4,0,70,70,133,133,194,194,208,208,1,0,255,256, - 1,0,257,259,1,0,249,254,3,0,2,2,6,6,181,181,2,0,70,70,194,194,5, - 0,48,49,91,92,122,125,172,173,217,218,1,0,127,130,2,0,8,8,227,244, - 2,0,77,77,149,149,4,0,46,46,178,178,188,188,209,209,16,0,28,29,40, - 40,43,43,48,48,68,68,91,91,114,114,122,122,124,124,158,158,165,165, - 172,172,184,184,196,196,204,204,217,217,23,0,14,14,43,44,48,49,65, - 65,68,68,91,91,95,95,110,110,119,119,122,125,127,130,137,137,140, - 140,152,153,172,173,180,180,184,185,195,195,204,204,213,213,217, - 217,220,220,231,231,3096,0,369,1,0,0,0,2,374,1,0,0,0,4,400,1,0,0, - 0,6,402,1,0,0,0,8,413,1,0,0,0,10,415,1,0,0,0,12,454,1,0,0,0,14,476, - 1,0,0,0,16,531,1,0,0,0,18,551,1,0,0,0,20,565,1,0,0,0,22,569,1,0, - 0,0,24,631,1,0,0,0,26,679,1,0,0,0,28,681,1,0,0,0,30,689,1,0,0,0, - 32,709,1,0,0,0,34,729,1,0,0,0,36,736,1,0,0,0,38,745,1,0,0,0,40,753, - 1,0,0,0,42,775,1,0,0,0,44,785,1,0,0,0,46,803,1,0,0,0,48,824,1,0, - 0,0,50,845,1,0,0,0,52,851,1,0,0,0,54,868,1,0,0,0,56,877,1,0,0,0, - 58,884,1,0,0,0,60,892,1,0,0,0,62,899,1,0,0,0,64,906,1,0,0,0,66,915, - 1,0,0,0,68,926,1,0,0,0,70,928,1,0,0,0,72,948,1,0,0,0,74,965,1,0, - 0,0,76,967,1,0,0,0,78,976,1,0,0,0,80,983,1,0,0,0,82,992,1,0,0,0, - 84,1002,1,0,0,0,86,1025,1,0,0,0,88,1031,1,0,0,0,90,1033,1,0,0,0, - 92,1040,1,0,0,0,94,1052,1,0,0,0,96,1054,1,0,0,0,98,1061,1,0,0,0, - 100,1082,1,0,0,0,102,1111,1,0,0,0,104,1113,1,0,0,0,106,1122,1,0, - 0,0,108,1145,1,0,0,0,110,1164,1,0,0,0,112,1187,1,0,0,0,114,1189, - 1,0,0,0,116,1204,1,0,0,0,118,1223,1,0,0,0,120,1245,1,0,0,0,122,1250, - 1,0,0,0,124,1255,1,0,0,0,126,1260,1,0,0,0,128,1265,1,0,0,0,130,1272, - 1,0,0,0,132,1287,1,0,0,0,134,1293,1,0,0,0,136,1313,1,0,0,0,138,1315, - 1,0,0,0,140,1326,1,0,0,0,142,1337,1,0,0,0,144,1351,1,0,0,0,146,1353, - 1,0,0,0,148,1362,1,0,0,0,150,1371,1,0,0,0,152,1380,1,0,0,0,154,1383, - 1,0,0,0,156,1391,1,0,0,0,158,1407,1,0,0,0,160,1411,1,0,0,0,162,1435, - 1,0,0,0,164,1437,1,0,0,0,166,1453,1,0,0,0,168,1456,1,0,0,0,170,1460, - 1,0,0,0,172,1463,1,0,0,0,174,1467,1,0,0,0,176,1469,1,0,0,0,178,1471, - 1,0,0,0,180,1473,1,0,0,0,182,1475,1,0,0,0,184,1477,1,0,0,0,186,1479, - 1,0,0,0,188,1487,1,0,0,0,190,1497,1,0,0,0,192,1501,1,0,0,0,194,1505, - 1,0,0,0,196,1510,1,0,0,0,198,1551,1,0,0,0,200,1559,1,0,0,0,202,1563, - 1,0,0,0,204,1583,1,0,0,0,206,1587,1,0,0,0,208,1596,1,0,0,0,210,1626, - 1,0,0,0,212,1641,1,0,0,0,214,1647,1,0,0,0,216,1653,1,0,0,0,218,1655, - 1,0,0,0,220,1675,1,0,0,0,222,1686,1,0,0,0,224,1706,1,0,0,0,226,1716, - 1,0,0,0,228,1718,1,0,0,0,230,1720,1,0,0,0,232,1735,1,0,0,0,234,1737, - 1,0,0,0,236,1744,1,0,0,0,238,1776,1,0,0,0,240,1788,1,0,0,0,242,1795, - 1,0,0,0,244,1805,1,0,0,0,246,1807,1,0,0,0,248,1813,1,0,0,0,250,1824, - 1,0,0,0,252,1835,1,0,0,0,254,1843,1,0,0,0,256,1861,1,0,0,0,258,1866, - 1,0,0,0,260,1887,1,0,0,0,262,1923,1,0,0,0,264,1925,1,0,0,0,266,1933, - 1,0,0,0,268,1973,1,0,0,0,270,1983,1,0,0,0,272,1998,1,0,0,0,274,2000, - 1,0,0,0,276,2007,1,0,0,0,278,2021,1,0,0,0,280,2023,1,0,0,0,282,2073, - 1,0,0,0,284,2089,1,0,0,0,286,2091,1,0,0,0,288,2106,1,0,0,0,290,2108, - 1,0,0,0,292,2118,1,0,0,0,294,2136,1,0,0,0,296,2138,1,0,0,0,298,2142, - 1,0,0,0,300,2157,1,0,0,0,302,2163,1,0,0,0,304,2165,1,0,0,0,306,2174, - 1,0,0,0,308,2245,1,0,0,0,310,2251,1,0,0,0,312,2513,1,0,0,0,314,2534, - 1,0,0,0,316,2536,1,0,0,0,318,2538,1,0,0,0,320,2540,1,0,0,0,322,2556, - 1,0,0,0,324,2558,1,0,0,0,326,2560,1,0,0,0,328,2607,1,0,0,0,330,2616, - 1,0,0,0,332,2620,1,0,0,0,334,2626,1,0,0,0,336,2628,1,0,0,0,338,2633, - 1,0,0,0,340,2639,1,0,0,0,342,2686,1,0,0,0,344,2697,1,0,0,0,346,2704, - 1,0,0,0,348,2706,1,0,0,0,350,2727,1,0,0,0,352,2729,1,0,0,0,354,2731, - 1,0,0,0,356,2745,1,0,0,0,358,2752,1,0,0,0,360,2766,1,0,0,0,362,2768, - 1,0,0,0,364,2770,1,0,0,0,366,368,3,2,1,0,367,366,1,0,0,0,368,371, - 1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,372,1,0,0,0,371,369, - 1,0,0,0,372,373,5,0,0,1,373,1,1,0,0,0,374,376,3,4,2,0,375,377,5, - 262,0,0,376,375,1,0,0,0,376,377,1,0,0,0,377,3,1,0,0,0,378,401,3, - 204,102,0,379,401,3,6,3,0,380,401,3,8,4,0,381,401,3,26,13,0,382, - 401,3,64,32,0,383,401,3,66,33,0,384,401,3,68,34,0,385,401,3,74,37, - 0,386,401,3,88,44,0,387,401,3,94,47,0,388,401,3,100,50,0,389,401, - 3,102,51,0,390,401,3,108,54,0,391,401,3,110,55,0,392,401,3,112,56, - 0,393,401,3,144,72,0,394,401,3,152,76,0,395,401,3,154,77,0,396,401, - 3,156,78,0,397,401,3,158,79,0,398,401,3,160,80,0,399,401,3,162,81, - 0,400,378,1,0,0,0,400,379,1,0,0,0,400,380,1,0,0,0,400,381,1,0,0, - 0,400,382,1,0,0,0,400,383,1,0,0,0,400,384,1,0,0,0,400,385,1,0,0, - 0,400,386,1,0,0,0,400,387,1,0,0,0,400,388,1,0,0,0,400,389,1,0,0, - 0,400,390,1,0,0,0,400,391,1,0,0,0,400,392,1,0,0,0,400,393,1,0,0, - 0,400,394,1,0,0,0,400,395,1,0,0,0,400,396,1,0,0,0,400,397,1,0,0, - 0,400,398,1,0,0,0,400,399,1,0,0,0,401,5,1,0,0,0,402,403,5,203,0, - 0,403,404,3,184,92,0,404,7,1,0,0,0,405,414,3,18,9,0,406,414,3,20, - 10,0,407,414,3,22,11,0,408,414,3,24,12,0,409,414,3,16,8,0,410,414, - 3,14,7,0,411,414,3,12,6,0,412,414,3,10,5,0,413,405,1,0,0,0,413,406, - 1,0,0,0,413,407,1,0,0,0,413,408,1,0,0,0,413,409,1,0,0,0,413,410, - 1,0,0,0,413,411,1,0,0,0,413,412,1,0,0,0,414,9,1,0,0,0,415,417,5, - 37,0,0,416,418,5,19,0,0,417,416,1,0,0,0,417,418,1,0,0,0,418,419, - 1,0,0,0,419,421,5,188,0,0,420,422,3,172,86,0,421,420,1,0,0,0,421, - 422,1,0,0,0,422,423,1,0,0,0,423,439,3,174,87,0,424,425,5,265,0,0, - 425,430,3,214,107,0,426,427,5,263,0,0,427,429,3,214,107,0,428,426, - 1,0,0,0,429,432,1,0,0,0,430,428,1,0,0,0,430,431,1,0,0,0,431,435, - 1,0,0,0,432,430,1,0,0,0,433,434,5,263,0,0,434,436,3,208,104,0,435, - 433,1,0,0,0,435,436,1,0,0,0,436,437,1,0,0,0,437,438,5,266,0,0,438, - 440,1,0,0,0,439,424,1,0,0,0,439,440,1,0,0,0,440,447,1,0,0,0,441, - 442,5,17,0,0,442,445,5,26,0,0,443,446,3,292,146,0,444,446,3,250, - 125,0,445,443,1,0,0,0,445,444,1,0,0,0,446,448,1,0,0,0,447,441,1, - 0,0,0,447,448,1,0,0,0,448,449,1,0,0,0,449,452,3,196,98,0,450,451, - 5,9,0,0,451,453,3,204,102,0,452,450,1,0,0,0,452,453,1,0,0,0,453, - 11,1,0,0,0,454,456,5,37,0,0,455,457,5,19,0,0,456,455,1,0,0,0,456, - 457,1,0,0,0,457,458,1,0,0,0,458,460,5,188,0,0,459,461,3,172,86,0, - 460,459,1,0,0,0,460,461,1,0,0,0,461,462,1,0,0,0,462,463,3,174,87, - 0,463,467,5,115,0,0,464,468,3,186,93,0,465,466,5,147,0,0,466,468, - 3,314,157,0,467,464,1,0,0,0,467,465,1,0,0,0,468,472,1,0,0,0,469, - 470,5,17,0,0,470,471,5,26,0,0,471,473,3,250,125,0,472,469,1,0,0, - 0,472,473,1,0,0,0,473,474,1,0,0,0,474,475,3,196,98,0,475,13,1,0, - 0,0,476,478,5,37,0,0,477,479,5,19,0,0,478,477,1,0,0,0,478,479,1, - 0,0,0,479,480,1,0,0,0,480,482,5,188,0,0,481,483,3,172,86,0,482,481, - 1,0,0,0,482,483,1,0,0,0,483,484,1,0,0,0,484,502,3,174,87,0,485,486, - 5,265,0,0,486,491,3,216,108,0,487,488,5,263,0,0,488,490,3,216,108, - 0,489,487,1,0,0,0,490,493,1,0,0,0,491,489,1,0,0,0,491,492,1,0,0, - 0,492,498,1,0,0,0,493,491,1,0,0,0,494,495,5,263,0,0,495,496,5,150, - 0,0,496,497,5,110,0,0,497,499,3,292,146,0,498,494,1,0,0,0,498,499, - 1,0,0,0,499,500,1,0,0,0,500,501,5,266,0,0,501,503,1,0,0,0,502,485, - 1,0,0,0,502,503,1,0,0,0,503,509,1,0,0,0,504,505,5,150,0,0,505,507, - 5,110,0,0,506,508,3,292,146,0,507,506,1,0,0,0,507,508,1,0,0,0,508, - 510,1,0,0,0,509,504,1,0,0,0,509,510,1,0,0,0,510,514,1,0,0,0,511, - 512,5,145,0,0,512,513,5,26,0,0,513,515,3,232,116,0,514,511,1,0,0, - 0,514,515,1,0,0,0,515,518,1,0,0,0,516,517,5,34,0,0,517,519,3,314, - 157,0,518,516,1,0,0,0,518,519,1,0,0,0,519,520,1,0,0,0,520,521,5, - 23,0,0,521,522,5,9,0,0,522,525,5,111,0,0,523,524,5,25,0,0,524,526, - 3,248,124,0,525,523,1,0,0,0,525,526,1,0,0,0,526,529,1,0,0,0,527, - 528,5,9,0,0,528,530,3,204,102,0,529,527,1,0,0,0,529,530,1,0,0,0, - 530,15,1,0,0,0,531,532,5,37,0,0,532,534,5,212,0,0,533,535,3,172, - 86,0,534,533,1,0,0,0,534,535,1,0,0,0,535,536,1,0,0,0,536,538,3,178, - 89,0,537,539,3,202,101,0,538,537,1,0,0,0,538,539,1,0,0,0,539,542, - 1,0,0,0,540,541,5,34,0,0,541,543,3,314,157,0,542,540,1,0,0,0,542, - 543,1,0,0,0,543,546,1,0,0,0,544,545,5,25,0,0,545,547,3,248,124,0, - 546,544,1,0,0,0,546,547,1,0,0,0,547,548,1,0,0,0,548,549,5,9,0,0, - 549,550,3,204,102,0,550,17,1,0,0,0,551,552,5,37,0,0,552,554,7,0, - 0,0,553,555,3,172,86,0,554,553,1,0,0,0,554,555,1,0,0,0,555,556,1, - 0,0,0,556,559,3,176,88,0,557,558,5,34,0,0,558,560,3,314,157,0,559, - 557,1,0,0,0,559,560,1,0,0,0,560,563,1,0,0,0,561,562,5,24,0,0,562, - 564,3,314,157,0,563,561,1,0,0,0,563,564,1,0,0,0,564,19,1,0,0,0,565, - 566,5,37,0,0,566,567,5,166,0,0,567,568,3,358,179,0,568,21,1,0,0, - 0,569,571,5,37,0,0,570,572,5,12,0,0,571,570,1,0,0,0,571,572,1,0, - 0,0,572,573,1,0,0,0,573,575,5,84,0,0,574,576,3,172,86,0,575,574, - 1,0,0,0,575,576,1,0,0,0,576,577,1,0,0,0,577,590,3,180,90,0,578,587, - 5,265,0,0,579,584,3,328,164,0,580,581,5,263,0,0,581,583,3,328,164, - 0,582,580,1,0,0,0,583,586,1,0,0,0,584,582,1,0,0,0,584,585,1,0,0, - 0,585,588,1,0,0,0,586,584,1,0,0,0,587,579,1,0,0,0,587,588,1,0,0, - 0,588,589,1,0,0,0,589,591,5,266,0,0,590,578,1,0,0,0,590,591,1,0, - 0,0,591,592,1,0,0,0,592,593,5,160,0,0,593,596,3,328,164,0,594,595, - 5,102,0,0,595,597,3,328,164,0,596,594,1,0,0,0,596,597,1,0,0,0,597, - 598,1,0,0,0,598,599,5,24,0,0,599,603,5,274,0,0,600,601,5,104,0,0, - 601,602,5,249,0,0,602,604,5,274,0,0,603,600,1,0,0,0,603,604,1,0, - 0,0,604,605,1,0,0,0,605,606,5,206,0,0,606,607,5,249,0,0,607,608, - 5,274,0,0,608,609,5,126,0,0,609,610,5,249,0,0,610,614,5,274,0,0, - 611,612,5,18,0,0,612,613,5,249,0,0,613,615,5,274,0,0,614,611,1,0, - 0,0,614,615,1,0,0,0,615,619,1,0,0,0,616,617,5,20,0,0,617,618,5,249, - 0,0,618,620,5,274,0,0,619,616,1,0,0,0,619,620,1,0,0,0,620,624,1, - 0,0,0,621,622,5,187,0,0,622,623,5,249,0,0,623,625,5,274,0,0,624, - 621,1,0,0,0,624,625,1,0,0,0,625,629,1,0,0,0,626,627,5,76,0,0,627, - 628,5,249,0,0,628,630,5,274,0,0,629,626,1,0,0,0,629,630,1,0,0,0, - 630,23,1,0,0,0,631,632,5,37,0,0,632,634,5,84,0,0,633,635,3,172,86, - 0,634,633,1,0,0,0,634,635,1,0,0,0,635,636,1,0,0,0,636,649,3,180, - 90,0,637,646,5,265,0,0,638,643,3,328,164,0,639,640,5,263,0,0,640, - 642,3,328,164,0,641,639,1,0,0,0,642,645,1,0,0,0,643,641,1,0,0,0, - 643,644,1,0,0,0,644,647,1,0,0,0,645,643,1,0,0,0,646,638,1,0,0,0, - 646,647,1,0,0,0,647,648,1,0,0,0,648,650,5,266,0,0,649,637,1,0,0, - 0,649,650,1,0,0,0,650,653,1,0,0,0,651,652,5,160,0,0,652,654,3,328, - 164,0,653,651,1,0,0,0,653,654,1,0,0,0,654,655,1,0,0,0,655,656,5, - 24,0,0,656,657,5,274,0,0,657,658,5,186,0,0,658,659,5,249,0,0,659, - 660,3,314,157,0,660,25,1,0,0,0,661,680,3,28,14,0,662,680,3,62,31, - 0,663,680,3,60,30,0,664,680,3,58,29,0,665,680,3,54,27,0,666,680, - 3,56,28,0,667,680,3,52,26,0,668,680,3,48,24,0,669,680,3,50,25,0, - 670,680,3,46,23,0,671,680,3,44,22,0,672,680,3,42,21,0,673,680,3, - 40,20,0,674,680,3,34,17,0,675,680,3,30,15,0,676,680,3,32,16,0,677, - 680,3,36,18,0,678,680,3,38,19,0,679,661,1,0,0,0,679,662,1,0,0,0, - 679,663,1,0,0,0,679,664,1,0,0,0,679,665,1,0,0,0,679,666,1,0,0,0, - 679,667,1,0,0,0,679,668,1,0,0,0,679,669,1,0,0,0,679,670,1,0,0,0, - 679,671,1,0,0,0,679,672,1,0,0,0,679,673,1,0,0,0,679,674,1,0,0,0, - 679,675,1,0,0,0,679,676,1,0,0,0,679,677,1,0,0,0,679,678,1,0,0,0, - 680,27,1,0,0,0,681,682,5,4,0,0,682,683,5,46,0,0,683,684,3,184,92, - 0,684,685,5,176,0,0,685,686,5,142,0,0,686,687,7,1,0,0,687,688,3, - 358,179,0,688,29,1,0,0,0,689,690,5,4,0,0,690,691,5,188,0,0,691,692, - 3,186,93,0,692,693,5,176,0,0,693,694,5,32,0,0,694,695,5,182,0,0, - 695,696,3,192,96,0,696,697,5,265,0,0,697,698,3,228,114,0,698,699, - 5,249,0,0,699,705,3,314,157,0,700,701,5,263,0,0,701,702,3,228,114, - 0,702,703,5,249,0,0,703,704,3,314,157,0,704,706,1,0,0,0,705,700, - 1,0,0,0,705,706,1,0,0,0,706,707,1,0,0,0,707,708,5,266,0,0,708,31, - 1,0,0,0,709,710,5,4,0,0,710,711,5,188,0,0,711,714,3,186,93,0,712, - 713,5,145,0,0,713,715,3,304,152,0,714,712,1,0,0,0,714,715,1,0,0, - 0,715,716,1,0,0,0,716,727,5,176,0,0,717,718,5,30,0,0,718,719,5,94, - 0,0,719,724,3,314,157,0,720,721,5,216,0,0,721,722,5,151,0,0,722, - 723,5,249,0,0,723,725,3,360,180,0,724,720,1,0,0,0,724,725,1,0,0, - 0,725,728,1,0,0,0,726,728,5,197,0,0,727,717,1,0,0,0,727,726,1,0, - 0,0,728,33,1,0,0,0,729,730,5,4,0,0,730,731,5,188,0,0,731,732,3,186, - 93,0,732,733,5,31,0,0,733,734,5,32,0,0,734,735,3,220,110,0,735,35, - 1,0,0,0,736,737,5,4,0,0,737,738,5,188,0,0,738,739,3,186,93,0,739, - 741,5,58,0,0,740,742,5,32,0,0,741,740,1,0,0,0,741,742,1,0,0,0,742, - 743,1,0,0,0,743,744,3,192,96,0,744,37,1,0,0,0,745,746,5,4,0,0,746, - 747,5,188,0,0,747,748,3,186,93,0,748,749,5,176,0,0,749,750,5,142, - 0,0,750,751,7,1,0,0,751,752,3,358,179,0,752,39,1,0,0,0,753,754,5, - 4,0,0,754,755,5,188,0,0,755,761,3,186,93,0,756,762,5,158,0,0,757, - 759,5,1,0,0,758,760,3,172,86,0,759,758,1,0,0,0,759,760,1,0,0,0,760, - 762,1,0,0,0,761,756,1,0,0,0,761,757,1,0,0,0,762,763,1,0,0,0,763, - 764,5,33,0,0,764,765,5,265,0,0,765,770,3,220,110,0,766,767,5,263, - 0,0,767,769,3,220,110,0,768,766,1,0,0,0,769,772,1,0,0,0,770,771, - 1,0,0,0,770,768,1,0,0,0,771,773,1,0,0,0,772,770,1,0,0,0,773,774, - 5,266,0,0,774,41,1,0,0,0,775,776,5,4,0,0,776,777,5,188,0,0,777,778, - 3,186,93,0,778,779,5,1,0,0,779,781,5,32,0,0,780,782,3,172,86,0,781, - 780,1,0,0,0,781,782,1,0,0,0,782,783,1,0,0,0,783,784,3,222,111,0, - 784,43,1,0,0,0,785,786,5,4,0,0,786,787,5,188,0,0,787,788,3,186,93, - 0,788,790,5,4,0,0,789,791,5,32,0,0,790,789,1,0,0,0,790,791,1,0,0, - 0,791,792,1,0,0,0,792,801,3,192,96,0,793,797,5,176,0,0,794,798,3, - 226,113,0,795,796,5,34,0,0,796,798,3,314,157,0,797,794,1,0,0,0,797, - 795,1,0,0,0,798,802,1,0,0,0,799,800,5,58,0,0,800,802,5,51,0,0,801, - 793,1,0,0,0,801,799,1,0,0,0,802,45,1,0,0,0,803,804,5,4,0,0,804,805, - 5,188,0,0,805,806,3,186,93,0,806,808,5,1,0,0,807,809,3,172,86,0, - 808,807,1,0,0,0,808,809,1,0,0,0,809,822,1,0,0,0,810,811,5,145,0, - 0,811,814,3,304,152,0,812,813,5,24,0,0,813,815,3,314,157,0,814,812, - 1,0,0,0,814,815,1,0,0,0,815,817,1,0,0,0,816,818,3,240,120,0,817, - 816,1,0,0,0,817,818,1,0,0,0,818,823,1,0,0,0,819,820,5,154,0,0,820, - 821,5,145,0,0,821,823,3,238,119,0,822,810,1,0,0,0,822,819,1,0,0, - 0,823,47,1,0,0,0,824,825,5,4,0,0,825,826,5,188,0,0,826,829,3,186, - 93,0,827,828,5,145,0,0,828,830,3,304,152,0,829,827,1,0,0,0,829,830, - 1,0,0,0,830,831,1,0,0,0,831,843,5,176,0,0,832,833,5,72,0,0,833,844, - 3,230,115,0,834,835,5,168,0,0,835,836,5,79,0,0,836,844,3,254,127, - 0,837,838,5,24,0,0,838,844,3,314,157,0,839,840,5,25,0,0,840,844, - 3,248,124,0,841,842,5,175,0,0,842,844,3,248,124,0,843,832,1,0,0, - 0,843,834,1,0,0,0,843,837,1,0,0,0,843,839,1,0,0,0,843,841,1,0,0, - 0,844,49,1,0,0,0,845,846,5,4,0,0,846,847,5,188,0,0,847,848,3,186, - 93,0,848,849,5,155,0,0,849,850,5,146,0,0,850,51,1,0,0,0,851,852, - 5,4,0,0,852,853,5,188,0,0,853,854,3,186,93,0,854,856,5,58,0,0,855, - 857,3,170,85,0,856,855,1,0,0,0,856,857,1,0,0,0,857,866,1,0,0,0,858, - 859,5,145,0,0,859,861,3,304,152,0,860,862,5,22,0,0,861,860,1,0,0, - 0,861,862,1,0,0,0,862,867,1,0,0,0,863,864,5,154,0,0,864,865,5,145, - 0,0,865,867,3,238,119,0,866,858,1,0,0,0,866,863,1,0,0,0,867,53,1, - 0,0,0,868,869,5,4,0,0,869,870,5,212,0,0,870,872,3,188,94,0,871,873, - 3,202,101,0,872,871,1,0,0,0,872,873,1,0,0,0,873,874,1,0,0,0,874, - 875,5,9,0,0,875,876,3,204,102,0,876,55,1,0,0,0,877,878,5,4,0,0,878, - 879,5,212,0,0,879,880,3,188,94,0,880,881,5,156,0,0,881,882,5,193, - 0,0,882,883,3,188,94,0,883,57,1,0,0,0,884,885,5,4,0,0,885,886,5, - 212,0,0,886,887,3,188,94,0,887,888,5,176,0,0,888,889,5,142,0,0,889, - 890,7,1,0,0,890,891,3,354,177,0,891,59,1,0,0,0,892,893,5,4,0,0,893, - 894,5,188,0,0,894,895,3,186,93,0,895,896,5,156,0,0,896,897,5,193, - 0,0,897,898,3,186,93,0,898,61,1,0,0,0,899,900,5,4,0,0,900,901,5, - 212,0,0,901,902,3,188,94,0,902,903,7,2,0,0,903,904,5,25,0,0,904, - 905,3,248,124,0,905,63,1,0,0,0,906,908,5,196,0,0,907,909,5,188,0, - 0,908,907,1,0,0,0,908,909,1,0,0,0,909,911,1,0,0,0,910,912,3,170, - 85,0,911,910,1,0,0,0,911,912,1,0,0,0,912,913,1,0,0,0,913,914,3,186, - 93,0,914,65,1,0,0,0,915,917,5,56,0,0,916,918,5,46,0,0,917,916,1, - 0,0,0,917,918,1,0,0,0,918,920,1,0,0,0,919,921,7,3,0,0,920,919,1, - 0,0,0,920,921,1,0,0,0,921,922,1,0,0,0,922,923,3,354,177,0,923,67, - 1,0,0,0,924,927,3,70,35,0,925,927,3,72,36,0,926,924,1,0,0,0,926, - 925,1,0,0,0,927,69,1,0,0,0,928,929,5,36,0,0,929,930,5,182,0,0,930, - 932,3,186,93,0,931,933,3,292,146,0,932,931,1,0,0,0,932,933,1,0,0, - 0,933,946,1,0,0,0,934,935,5,190,0,0,935,936,5,185,0,0,936,937,5, - 265,0,0,937,938,3,360,180,0,938,944,5,266,0,0,939,940,5,157,0,0, - 940,941,5,265,0,0,941,942,3,360,180,0,942,943,5,266,0,0,943,945, - 1,0,0,0,944,939,1,0,0,0,944,945,1,0,0,0,945,947,1,0,0,0,946,934, - 1,0,0,0,946,947,1,0,0,0,947,71,1,0,0,0,948,949,5,36,0,0,949,950, - 5,96,0,0,950,951,5,182,0,0,951,957,3,186,93,0,952,953,5,145,0,0, - 953,954,5,265,0,0,954,955,3,304,152,0,955,956,5,266,0,0,956,958, - 1,0,0,0,957,952,1,0,0,0,957,958,1,0,0,0,958,73,1,0,0,0,959,966,3, - 86,43,0,960,966,3,84,42,0,961,966,3,82,41,0,962,966,3,78,39,0,963, - 966,3,80,40,0,964,966,3,76,38,0,965,959,1,0,0,0,965,960,1,0,0,0, - 965,961,1,0,0,0,965,962,1,0,0,0,965,963,1,0,0,0,965,964,1,0,0,0, - 966,75,1,0,0,0,967,968,5,58,0,0,968,970,7,0,0,0,969,971,3,170,85, - 0,970,969,1,0,0,0,970,971,1,0,0,0,971,972,1,0,0,0,972,974,3,184, - 92,0,973,975,7,4,0,0,974,973,1,0,0,0,974,975,1,0,0,0,975,77,1,0, - 0,0,976,977,5,58,0,0,977,979,5,212,0,0,978,980,3,170,85,0,979,978, - 1,0,0,0,979,980,1,0,0,0,980,981,1,0,0,0,981,982,3,188,94,0,982,79, - 1,0,0,0,983,984,5,58,0,0,984,986,5,188,0,0,985,987,3,170,85,0,986, - 985,1,0,0,0,986,987,1,0,0,0,987,988,1,0,0,0,988,990,3,186,93,0,989, - 991,5,22,0,0,990,989,1,0,0,0,990,991,1,0,0,0,991,81,1,0,0,0,992, - 994,5,58,0,0,993,995,5,96,0,0,994,993,1,0,0,0,994,995,1,0,0,0,995, - 996,1,0,0,0,996,997,5,182,0,0,997,1000,3,186,93,0,998,999,5,145, - 0,0,999,1001,3,304,152,0,1000,998,1,0,0,0,1000,1001,1,0,0,0,1001, - 83,1,0,0,0,1002,1004,5,58,0,0,1003,1005,5,12,0,0,1004,1003,1,0,0, - 0,1004,1005,1,0,0,0,1005,1006,1,0,0,0,1006,1008,5,84,0,0,1007,1009, - 3,170,85,0,1008,1007,1,0,0,0,1008,1009,1,0,0,0,1009,1010,1,0,0,0, - 1010,1023,3,190,95,0,1011,1020,5,265,0,0,1012,1017,3,328,164,0,1013, - 1014,5,263,0,0,1014,1016,3,328,164,0,1015,1013,1,0,0,0,1016,1019, - 1,0,0,0,1017,1015,1,0,0,0,1017,1018,1,0,0,0,1018,1021,1,0,0,0,1019, - 1017,1,0,0,0,1020,1012,1,0,0,0,1020,1021,1,0,0,0,1021,1022,1,0,0, - 0,1022,1024,5,266,0,0,1023,1011,1,0,0,0,1023,1024,1,0,0,0,1024,85, - 1,0,0,0,1025,1026,5,58,0,0,1026,1027,5,166,0,0,1027,1028,3,358,179, - 0,1028,87,1,0,0,0,1029,1032,3,90,45,0,1030,1032,3,92,46,0,1031,1029, - 1,0,0,0,1031,1030,1,0,0,0,1032,89,1,0,0,0,1033,1034,5,86,0,0,1034, - 1035,5,166,0,0,1035,1036,3,358,179,0,1036,1037,5,193,0,0,1037,1038, - 5,87,0,0,1038,1039,3,358,179,0,1039,91,1,0,0,0,1040,1041,5,86,0, - 0,1041,1042,3,350,175,0,1042,1043,5,136,0,0,1043,1045,3,352,176, - 0,1044,1046,3,354,177,0,1045,1044,1,0,0,0,1045,1046,1,0,0,0,1046, - 1047,1,0,0,0,1047,1048,5,193,0,0,1048,1049,3,356,178,0,1049,93,1, - 0,0,0,1050,1053,3,96,48,0,1051,1053,3,98,49,0,1052,1050,1,0,0,0, - 1052,1051,1,0,0,0,1053,95,1,0,0,0,1054,1055,5,161,0,0,1055,1056, - 5,166,0,0,1056,1057,3,358,179,0,1057,1058,5,82,0,0,1058,1059,5,87, - 0,0,1059,1060,3,358,179,0,1060,97,1,0,0,0,1061,1065,5,161,0,0,1062, - 1063,5,86,0,0,1063,1064,5,137,0,0,1064,1066,5,78,0,0,1065,1062,1, - 0,0,0,1065,1066,1,0,0,0,1066,1067,1,0,0,0,1067,1068,3,350,175,0, - 1068,1069,5,136,0,0,1069,1071,3,352,176,0,1070,1072,3,354,177,0, - 1071,1070,1,0,0,0,1071,1072,1,0,0,0,1072,1073,1,0,0,0,1073,1079, - 5,82,0,0,1074,1080,3,356,178,0,1075,1077,5,166,0,0,1076,1075,1,0, - 0,0,1076,1077,1,0,0,0,1077,1078,1,0,0,0,1078,1080,3,358,179,0,1079, - 1074,1,0,0,0,1079,1076,1,0,0,0,1080,99,1,0,0,0,1081,1083,3,206,103, - 0,1082,1081,1,0,0,0,1082,1083,1,0,0,0,1083,1084,1,0,0,0,1084,1085, - 5,99,0,0,1085,1087,7,5,0,0,1086,1088,5,188,0,0,1087,1086,1,0,0,0, - 1087,1088,1,0,0,0,1088,1089,1,0,0,0,1089,1091,3,186,93,0,1090,1092, - 3,292,146,0,1091,1090,1,0,0,0,1091,1092,1,0,0,0,1092,1105,1,0,0, - 0,1093,1094,5,145,0,0,1094,1095,5,265,0,0,1095,1100,3,304,152,0, - 1096,1097,5,263,0,0,1097,1099,3,304,152,0,1098,1096,1,0,0,0,1099, - 1102,1,0,0,0,1100,1098,1,0,0,0,1100,1101,1,0,0,0,1101,1103,1,0,0, - 0,1102,1100,1,0,0,0,1103,1104,5,266,0,0,1104,1106,1,0,0,0,1105,1093, - 1,0,0,0,1105,1106,1,0,0,0,1106,1107,1,0,0,0,1107,1108,3,204,102, - 0,1108,101,1,0,0,0,1109,1112,3,104,52,0,1110,1112,3,106,53,0,1111, - 1109,1,0,0,0,1111,1110,1,0,0,0,1112,103,1,0,0,0,1113,1115,5,50,0, - 0,1114,1116,5,82,0,0,1115,1114,1,0,0,0,1115,1116,1,0,0,0,1116,1117, - 1,0,0,0,1117,1120,3,186,93,0,1118,1119,5,215,0,0,1119,1121,3,306, - 153,0,1120,1118,1,0,0,0,1120,1121,1,0,0,0,1121,105,1,0,0,0,1122, - 1123,5,50,0,0,1123,1128,3,186,93,0,1124,1126,5,9,0,0,1125,1124,1, - 0,0,0,1125,1126,1,0,0,0,1126,1127,1,0,0,0,1127,1129,3,358,179,0, - 1128,1125,1,0,0,0,1128,1129,1,0,0,0,1129,1130,1,0,0,0,1130,1139, - 5,82,0,0,1131,1136,3,280,140,0,1132,1133,5,263,0,0,1133,1135,3,280, - 140,0,1134,1132,1,0,0,0,1135,1138,1,0,0,0,1136,1134,1,0,0,0,1136, - 1137,1,0,0,0,1137,1140,1,0,0,0,1138,1136,1,0,0,0,1139,1131,1,0,0, - 0,1139,1140,1,0,0,0,1140,1143,1,0,0,0,1141,1142,5,215,0,0,1142,1144, - 3,306,153,0,1143,1141,1,0,0,0,1143,1144,1,0,0,0,1144,107,1,0,0,0, - 1145,1146,5,54,0,0,1146,1147,3,186,93,0,1147,1148,5,176,0,0,1148, - 1158,3,198,99,0,1149,1150,5,82,0,0,1150,1155,3,280,140,0,1151,1152, - 5,263,0,0,1152,1154,3,280,140,0,1153,1151,1,0,0,0,1154,1157,1,0, - 0,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156,1159,1,0,0,0,1157,1155, - 1,0,0,0,1158,1149,1,0,0,0,1158,1159,1,0,0,0,1159,1162,1,0,0,0,1160, - 1161,5,215,0,0,1161,1163,3,306,153,0,1162,1160,1,0,0,0,1162,1163, - 1,0,0,0,1163,109,1,0,0,0,1164,1165,5,207,0,0,1165,1167,5,103,0,0, - 1166,1168,5,188,0,0,1167,1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169, - 1,0,0,0,1169,1171,3,186,93,0,1170,1172,3,292,146,0,1171,1170,1,0, - 0,0,1171,1172,1,0,0,0,1172,1173,1,0,0,0,1173,1174,3,204,102,0,1174, - 111,1,0,0,0,1175,1188,3,132,66,0,1176,1188,3,134,67,0,1177,1188, - 3,136,68,0,1178,1188,3,130,65,0,1179,1188,3,128,64,0,1180,1188,3, - 126,63,0,1181,1188,3,124,62,0,1182,1188,3,122,61,0,1183,1188,3,120, - 60,0,1184,1188,3,118,59,0,1185,1188,3,116,58,0,1186,1188,3,114,57, - 0,1187,1175,1,0,0,0,1187,1176,1,0,0,0,1187,1177,1,0,0,0,1187,1178, - 1,0,0,0,1187,1179,1,0,0,0,1187,1180,1,0,0,0,1187,1181,1,0,0,0,1187, - 1182,1,0,0,0,1187,1183,1,0,0,0,1187,1184,1,0,0,0,1187,1185,1,0,0, - 0,1187,1186,1,0,0,0,1188,113,1,0,0,0,1189,1190,5,179,0,0,1190,1202, - 7,6,0,0,1191,1193,5,115,0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0, - 1193,1194,1,0,0,0,1194,1199,3,314,157,0,1195,1196,5,271,0,0,1196, - 1198,3,314,157,0,1197,1195,1,0,0,0,1198,1201,1,0,0,0,1199,1197,1, - 0,0,0,1199,1200,1,0,0,0,1200,1203,1,0,0,0,1201,1199,1,0,0,0,1202, - 1192,1,0,0,0,1202,1203,1,0,0,0,1203,115,1,0,0,0,1204,1205,5,179, - 0,0,1205,1208,5,189,0,0,1206,1207,5,94,0,0,1207,1209,3,186,93,0, - 1208,1206,1,0,0,0,1208,1209,1,0,0,0,1209,1221,1,0,0,0,1210,1212, - 5,115,0,0,1211,1210,1,0,0,0,1211,1212,1,0,0,0,1212,1213,1,0,0,0, - 1213,1218,3,314,157,0,1214,1215,5,271,0,0,1215,1217,3,314,157,0, - 1216,1214,1,0,0,0,1217,1220,1,0,0,0,1218,1216,1,0,0,0,1218,1219, - 1,0,0,0,1219,1222,1,0,0,0,1220,1218,1,0,0,0,1221,1211,1,0,0,0,1221, - 1222,1,0,0,0,1222,117,1,0,0,0,1223,1225,5,179,0,0,1224,1226,7,7, - 0,0,1225,1224,1,0,0,0,1225,1226,1,0,0,0,1226,1227,1,0,0,0,1227,1230, - 5,85,0,0,1228,1229,5,94,0,0,1229,1231,3,184,92,0,1230,1228,1,0,0, - 0,1230,1231,1,0,0,0,1231,1243,1,0,0,0,1232,1234,5,115,0,0,1233,1232, - 1,0,0,0,1233,1234,1,0,0,0,1234,1235,1,0,0,0,1235,1240,3,314,157, - 0,1236,1237,5,271,0,0,1237,1239,3,314,157,0,1238,1236,1,0,0,0,1239, - 1242,1,0,0,0,1240,1238,1,0,0,0,1240,1241,1,0,0,0,1241,1244,1,0,0, - 0,1242,1240,1,0,0,0,1243,1233,1,0,0,0,1243,1244,1,0,0,0,1244,119, - 1,0,0,0,1245,1246,5,179,0,0,1246,1247,5,37,0,0,1247,1248,5,188,0, - 0,1248,1249,3,186,93,0,1249,121,1,0,0,0,1250,1251,5,179,0,0,1251, - 1252,5,37,0,0,1252,1253,5,212,0,0,1253,1254,3,188,94,0,1254,123, - 1,0,0,0,1255,1256,5,179,0,0,1256,1257,5,188,0,0,1257,1258,5,182, - 0,0,1258,1259,3,186,93,0,1259,125,1,0,0,0,1260,1261,5,179,0,0,1261, - 1262,5,32,0,0,1262,1263,5,182,0,0,1263,1264,3,186,93,0,1264,127, - 1,0,0,0,1265,1267,5,179,0,0,1266,1268,5,154,0,0,1267,1266,1,0,0, - 0,1267,1268,1,0,0,0,1268,1269,1,0,0,0,1269,1270,5,146,0,0,1270,1271, - 3,186,93,0,1271,129,1,0,0,0,1272,1273,5,179,0,0,1273,1274,5,73,0, - 0,1274,1275,5,94,0,0,1275,1285,3,186,93,0,1276,1277,5,145,0,0,1277, - 1278,5,265,0,0,1278,1281,3,304,152,0,1279,1280,5,263,0,0,1280,1282, - 3,304,152,0,1281,1279,1,0,0,0,1281,1282,1,0,0,0,1282,1283,1,0,0, - 0,1283,1284,5,266,0,0,1284,1286,1,0,0,0,1285,1276,1,0,0,0,1285,1286, - 1,0,0,0,1286,131,1,0,0,0,1287,1289,5,179,0,0,1288,1290,5,39,0,0, - 1289,1288,1,0,0,0,1289,1290,1,0,0,0,1290,1291,1,0,0,0,1291,1292, - 5,167,0,0,1292,133,1,0,0,0,1293,1294,5,179,0,0,1294,1295,5,166,0, - 0,1295,1296,5,86,0,0,1296,1297,5,87,0,0,1297,1298,3,358,179,0,1298, - 135,1,0,0,0,1299,1314,3,138,69,0,1300,1314,3,140,70,0,1301,1314, - 3,142,71,0,1302,1303,5,179,0,0,1303,1304,5,86,0,0,1304,1305,7,8, - 0,0,1305,1311,3,358,179,0,1306,1307,5,136,0,0,1307,1309,7,9,0,0, - 1308,1310,3,354,177,0,1309,1308,1,0,0,0,1309,1310,1,0,0,0,1310,1312, - 1,0,0,0,1311,1306,1,0,0,0,1311,1312,1,0,0,0,1312,1314,1,0,0,0,1313, - 1299,1,0,0,0,1313,1300,1,0,0,0,1313,1301,1,0,0,0,1313,1302,1,0,0, - 0,1314,137,1,0,0,0,1315,1316,5,179,0,0,1316,1317,5,86,0,0,1317,1318, - 7,8,0,0,1318,1324,3,358,179,0,1319,1320,5,136,0,0,1320,1322,5,46, - 0,0,1321,1323,3,184,92,0,1322,1321,1,0,0,0,1322,1323,1,0,0,0,1323, - 1325,1,0,0,0,1324,1319,1,0,0,0,1324,1325,1,0,0,0,1325,139,1,0,0, - 0,1326,1327,5,179,0,0,1327,1328,5,86,0,0,1328,1329,7,8,0,0,1329, - 1335,3,358,179,0,1330,1331,5,136,0,0,1331,1333,5,188,0,0,1332,1334, - 3,186,93,0,1333,1332,1,0,0,0,1333,1334,1,0,0,0,1334,1336,1,0,0,0, - 1335,1330,1,0,0,0,1335,1336,1,0,0,0,1336,141,1,0,0,0,1337,1338,5, - 179,0,0,1338,1339,5,86,0,0,1339,1340,7,8,0,0,1340,1346,3,358,179, - 0,1341,1342,5,136,0,0,1342,1344,5,32,0,0,1343,1345,3,192,96,0,1344, - 1343,1,0,0,0,1344,1345,1,0,0,0,1345,1347,1,0,0,0,1346,1341,1,0,0, - 0,1346,1347,1,0,0,0,1347,143,1,0,0,0,1348,1352,3,146,73,0,1349,1352, - 3,148,74,0,1350,1352,3,150,75,0,1351,1348,1,0,0,0,1351,1349,1,0, - 0,0,1351,1350,1,0,0,0,1352,145,1,0,0,0,1353,1354,5,34,0,0,1354,1355, - 5,136,0,0,1355,1356,5,46,0,0,1356,1357,3,184,92,0,1357,1360,5,108, - 0,0,1358,1361,3,314,157,0,1359,1361,5,133,0,0,1360,1358,1,0,0,0, - 1360,1359,1,0,0,0,1361,147,1,0,0,0,1362,1363,5,34,0,0,1363,1364, - 5,136,0,0,1364,1365,5,188,0,0,1365,1366,3,186,93,0,1366,1369,5,108, - 0,0,1367,1370,3,314,157,0,1368,1370,5,133,0,0,1369,1367,1,0,0,0, - 1369,1368,1,0,0,0,1370,149,1,0,0,0,1371,1372,5,34,0,0,1372,1373, - 5,136,0,0,1373,1374,5,32,0,0,1374,1375,3,192,96,0,1375,1378,5,108, - 0,0,1376,1379,3,314,157,0,1377,1379,5,133,0,0,1378,1376,1,0,0,0, - 1378,1377,1,0,0,0,1379,151,1,0,0,0,1380,1381,5,67,0,0,1381,1382, - 3,4,2,0,1382,153,1,0,0,0,1383,1389,5,176,0,0,1384,1390,5,2,0,0,1385, - 1386,3,358,179,0,1386,1387,5,249,0,0,1387,1388,3,304,152,0,1388, - 1390,1,0,0,0,1389,1384,1,0,0,0,1389,1385,1,0,0,0,1389,1390,1,0,0, - 0,1390,155,1,0,0,0,1391,1392,5,264,0,0,1392,1393,5,180,0,0,1393, - 1403,5,265,0,0,1394,1396,3,314,157,0,1395,1394,1,0,0,0,1395,1396, - 1,0,0,0,1396,1404,1,0,0,0,1397,1400,3,314,157,0,1398,1399,5,263, - 0,0,1399,1401,3,304,152,0,1400,1398,1,0,0,0,1400,1401,1,0,0,0,1401, - 1404,1,0,0,0,1402,1404,3,304,152,0,1403,1395,1,0,0,0,1403,1397,1, - 0,0,0,1403,1402,1,0,0,0,1404,1405,1,0,0,0,1405,1406,5,266,0,0,1406, - 157,1,0,0,0,1407,1408,5,107,0,0,1408,1409,5,121,0,0,1409,1410,3, - 186,93,0,1410,159,1,0,0,0,1411,1412,5,118,0,0,1412,1413,5,45,0,0, - 1413,1414,5,98,0,0,1414,1416,5,274,0,0,1415,1417,5,144,0,0,1416, - 1415,1,0,0,0,1416,1417,1,0,0,0,1417,1418,1,0,0,0,1418,1419,5,103, - 0,0,1419,1420,5,188,0,0,1420,1430,3,186,93,0,1421,1422,5,145,0,0, - 1422,1423,5,265,0,0,1423,1426,3,304,152,0,1424,1425,5,263,0,0,1425, - 1427,3,304,152,0,1426,1424,1,0,0,0,1426,1427,1,0,0,0,1427,1428,1, - 0,0,0,1428,1429,5,266,0,0,1429,1431,1,0,0,0,1430,1421,1,0,0,0,1430, - 1431,1,0,0,0,1431,161,1,0,0,0,1432,1436,3,164,82,0,1433,1436,3,166, - 83,0,1434,1436,3,168,84,0,1435,1432,1,0,0,0,1435,1433,1,0,0,0,1435, - 1434,1,0,0,0,1436,163,1,0,0,0,1437,1438,5,162,0,0,1438,1451,3,186, - 93,0,1439,1440,5,145,0,0,1440,1441,5,265,0,0,1441,1446,3,304,152, - 0,1442,1443,5,263,0,0,1443,1445,3,304,152,0,1444,1442,1,0,0,0,1445, - 1448,1,0,0,0,1446,1447,1,0,0,0,1446,1444,1,0,0,0,1447,1449,1,0,0, - 0,1448,1446,1,0,0,0,1449,1450,5,266,0,0,1450,1452,1,0,0,0,1451,1439, - 1,0,0,0,1451,1452,1,0,0,0,1452,165,1,0,0,0,1453,1454,5,162,0,0,1454, - 1455,5,13,0,0,1455,167,1,0,0,0,1456,1457,5,162,0,0,1457,1458,5,85, - 0,0,1458,1459,3,190,95,0,1459,169,1,0,0,0,1460,1461,5,93,0,0,1461, - 1462,5,66,0,0,1462,171,1,0,0,0,1463,1464,5,93,0,0,1464,1465,5,132, - 0,0,1465,1466,5,66,0,0,1466,173,1,0,0,0,1467,1468,3,354,177,0,1468, - 175,1,0,0,0,1469,1470,3,354,177,0,1470,177,1,0,0,0,1471,1472,3,354, - 177,0,1472,179,1,0,0,0,1473,1474,3,354,177,0,1474,181,1,0,0,0,1475, - 1476,3,354,177,0,1476,183,1,0,0,0,1477,1478,3,354,177,0,1478,185, - 1,0,0,0,1479,1484,3,358,179,0,1480,1481,5,261,0,0,1481,1483,3,358, - 179,0,1482,1480,1,0,0,0,1483,1486,1,0,0,0,1484,1482,1,0,0,0,1484, - 1485,1,0,0,0,1485,187,1,0,0,0,1486,1484,1,0,0,0,1487,1492,3,358, - 179,0,1488,1489,5,261,0,0,1489,1491,3,358,179,0,1490,1488,1,0,0, - 0,1491,1494,1,0,0,0,1492,1490,1,0,0,0,1492,1493,1,0,0,0,1493,189, - 1,0,0,0,1494,1492,1,0,0,0,1495,1498,3,362,181,0,1496,1498,3,354, - 177,0,1497,1495,1,0,0,0,1497,1496,1,0,0,0,1498,191,1,0,0,0,1499, - 1502,3,354,177,0,1500,1502,4,96,0,0,1501,1499,1,0,0,0,1501,1500, - 1,0,0,0,1502,193,1,0,0,0,1503,1506,3,186,93,0,1504,1506,3,188,94, - 0,1505,1503,1,0,0,0,1505,1504,1,0,0,0,1506,195,1,0,0,0,1507,1508, - 5,21,0,0,1508,1509,5,26,0,0,1509,1511,3,292,146,0,1510,1507,1,0, - 0,0,1510,1511,1,0,0,0,1511,1514,1,0,0,0,1512,1513,5,34,0,0,1513, - 1515,3,314,157,0,1514,1512,1,0,0,0,1514,1515,1,0,0,0,1515,1519,1, - 0,0,0,1516,1517,5,168,0,0,1517,1518,5,79,0,0,1518,1520,3,254,127, - 0,1519,1516,1,0,0,0,1519,1520,1,0,0,0,1520,1524,1,0,0,0,1521,1522, - 5,216,0,0,1522,1523,5,175,0,0,1523,1525,3,248,124,0,1524,1521,1, - 0,0,0,1524,1525,1,0,0,0,1525,1529,1,0,0,0,1526,1527,5,23,0,0,1527, - 1528,5,9,0,0,1528,1530,3,230,115,0,1529,1526,1,0,0,0,1529,1530,1, - 0,0,0,1530,1533,1,0,0,0,1531,1532,5,24,0,0,1532,1534,3,314,157,0, - 1533,1531,1,0,0,0,1533,1534,1,0,0,0,1534,1545,1,0,0,0,1535,1536, - 5,30,0,0,1536,1537,5,94,0,0,1537,1542,3,354,177,0,1538,1539,5,216, - 0,0,1539,1540,5,151,0,0,1540,1541,5,249,0,0,1541,1543,5,277,0,0, - 1542,1538,1,0,0,0,1542,1543,1,0,0,0,1543,1546,1,0,0,0,1544,1546, - 5,197,0,0,1545,1535,1,0,0,0,1545,1544,1,0,0,0,1545,1546,1,0,0,0, - 1546,1549,1,0,0,0,1547,1548,5,25,0,0,1548,1550,3,248,124,0,1549, - 1547,1,0,0,0,1549,1550,1,0,0,0,1550,197,1,0,0,0,1551,1556,3,200, - 100,0,1552,1553,5,263,0,0,1553,1555,3,200,100,0,1554,1552,1,0,0, - 0,1555,1558,1,0,0,0,1556,1554,1,0,0,0,1556,1557,1,0,0,0,1557,199, - 1,0,0,0,1558,1556,1,0,0,0,1559,1560,3,354,177,0,1560,1561,5,249, - 0,0,1561,1562,3,304,152,0,1562,201,1,0,0,0,1563,1564,5,265,0,0,1564, - 1567,3,182,91,0,1565,1566,5,34,0,0,1566,1568,3,314,157,0,1567,1565, - 1,0,0,0,1567,1568,1,0,0,0,1568,1577,1,0,0,0,1569,1570,5,263,0,0, - 1570,1573,3,182,91,0,1571,1572,5,34,0,0,1572,1574,3,314,157,0,1573, - 1571,1,0,0,0,1573,1574,1,0,0,0,1574,1576,1,0,0,0,1575,1569,1,0,0, - 0,1576,1579,1,0,0,0,1577,1575,1,0,0,0,1577,1578,1,0,0,0,1578,1580, - 1,0,0,0,1579,1577,1,0,0,0,1580,1581,5,266,0,0,1581,203,1,0,0,0,1582, - 1584,3,206,103,0,1583,1582,1,0,0,0,1583,1584,1,0,0,0,1584,1585,1, - 0,0,0,1585,1586,3,258,129,0,1586,205,1,0,0,0,1587,1588,5,216,0,0, - 1588,1593,3,274,137,0,1589,1590,5,263,0,0,1590,1592,3,274,137,0, - 1591,1589,1,0,0,0,1592,1595,1,0,0,0,1593,1591,1,0,0,0,1593,1594, - 1,0,0,0,1594,207,1,0,0,0,1595,1593,1,0,0,0,1596,1597,5,150,0,0,1597, - 1598,5,110,0,0,1598,1600,3,292,146,0,1599,1601,5,53,0,0,1600,1599, - 1,0,0,0,1600,1601,1,0,0,0,1601,1605,1,0,0,0,1602,1606,5,225,0,0, - 1603,1604,5,263,0,0,1604,1606,5,225,0,0,1605,1602,1,0,0,0,1605,1603, - 1,0,0,0,1605,1606,1,0,0,0,1606,1610,1,0,0,0,1607,1611,5,226,0,0, - 1608,1609,5,263,0,0,1609,1611,5,226,0,0,1610,1607,1,0,0,0,1610,1608, - 1,0,0,0,1610,1611,1,0,0,0,1611,1624,1,0,0,0,1612,1613,5,263,0,0, - 1613,1616,3,210,105,0,1614,1616,3,210,105,0,1615,1612,1,0,0,0,1615, - 1614,1,0,0,0,1616,1621,1,0,0,0,1617,1618,5,263,0,0,1618,1620,3,210, - 105,0,1619,1617,1,0,0,0,1620,1623,1,0,0,0,1621,1622,1,0,0,0,1621, - 1619,1,0,0,0,1622,1625,1,0,0,0,1623,1621,1,0,0,0,1624,1615,1,0,0, - 0,1624,1625,1,0,0,0,1625,209,1,0,0,0,1626,1627,5,81,0,0,1627,1628, - 5,110,0,0,1628,1629,3,292,146,0,1629,1630,5,224,0,0,1630,1631,3, - 186,93,0,1631,1633,3,292,146,0,1632,1634,5,53,0,0,1633,1632,1,0, - 0,0,1633,1634,1,0,0,0,1634,1636,1,0,0,0,1635,1637,5,225,0,0,1636, - 1635,1,0,0,0,1636,1637,1,0,0,0,1637,1639,1,0,0,0,1638,1640,5,226, - 0,0,1639,1638,1,0,0,0,1639,1640,1,0,0,0,1640,211,1,0,0,0,1641,1642, - 3,192,96,0,1642,1645,3,328,164,0,1643,1644,5,34,0,0,1644,1646,3, - 314,157,0,1645,1643,1,0,0,0,1645,1646,1,0,0,0,1646,213,1,0,0,0,1647, - 1648,3,182,91,0,1648,1651,3,328,164,0,1649,1650,5,34,0,0,1650,1652, - 3,314,157,0,1651,1649,1,0,0,0,1651,1652,1,0,0,0,1652,215,1,0,0,0, - 1653,1654,3,218,109,0,1654,217,1,0,0,0,1655,1656,3,182,91,0,1656, - 1664,3,328,164,0,1657,1661,3,224,112,0,1658,1660,3,224,112,0,1659, - 1658,1,0,0,0,1660,1663,1,0,0,0,1661,1662,1,0,0,0,1661,1659,1,0,0, - 0,1662,1665,1,0,0,0,1663,1661,1,0,0,0,1664,1657,1,0,0,0,1664,1665, - 1,0,0,0,1665,1668,1,0,0,0,1666,1667,5,34,0,0,1667,1669,3,314,157, - 0,1668,1666,1,0,0,0,1668,1669,1,0,0,0,1669,1672,1,0,0,0,1670,1671, - 5,150,0,0,1671,1673,5,110,0,0,1672,1670,1,0,0,0,1672,1673,1,0,0, - 0,1673,219,1,0,0,0,1674,1676,3,212,106,0,1675,1674,1,0,0,0,1675, - 1676,1,0,0,0,1676,1684,1,0,0,0,1677,1681,3,224,112,0,1678,1680,3, - 224,112,0,1679,1678,1,0,0,0,1680,1683,1,0,0,0,1681,1682,1,0,0,0, - 1681,1679,1,0,0,0,1682,1685,1,0,0,0,1683,1681,1,0,0,0,1684,1677, - 1,0,0,0,1684,1685,1,0,0,0,1685,221,1,0,0,0,1686,1687,3,182,91,0, - 1687,1690,3,328,164,0,1688,1689,5,34,0,0,1689,1691,3,314,157,0,1690, - 1688,1,0,0,0,1690,1691,1,0,0,0,1691,1699,1,0,0,0,1692,1696,3,224, - 112,0,1693,1695,3,224,112,0,1694,1693,1,0,0,0,1695,1698,1,0,0,0, - 1696,1697,1,0,0,0,1696,1694,1,0,0,0,1697,1700,1,0,0,0,1698,1696, - 1,0,0,0,1699,1692,1,0,0,0,1699,1700,1,0,0,0,1700,223,1,0,0,0,1701, - 1703,5,132,0,0,1702,1701,1,0,0,0,1702,1703,1,0,0,0,1703,1704,1,0, - 0,0,1704,1707,5,133,0,0,1705,1707,3,226,113,0,1706,1702,1,0,0,0, - 1706,1705,1,0,0,0,1707,225,1,0,0,0,1708,1709,5,60,0,0,1709,1717, - 3,304,152,0,1710,1711,5,35,0,0,1711,1717,3,304,152,0,1712,1713,5, - 51,0,0,1713,1717,3,304,152,0,1714,1715,5,16,0,0,1715,1717,3,360, - 180,0,1716,1708,1,0,0,0,1716,1710,1,0,0,0,1716,1712,1,0,0,0,1716, - 1714,1,0,0,0,1717,227,1,0,0,0,1718,1719,7,10,0,0,1719,229,1,0,0, - 0,1720,1721,7,11,0,0,1721,231,1,0,0,0,1722,1727,3,234,117,0,1723, - 1724,5,263,0,0,1724,1726,3,234,117,0,1725,1723,1,0,0,0,1726,1729, - 1,0,0,0,1727,1728,1,0,0,0,1727,1725,1,0,0,0,1728,1732,1,0,0,0,1729, - 1727,1,0,0,0,1730,1731,5,263,0,0,1731,1733,3,236,118,0,1732,1730, - 1,0,0,0,1732,1733,1,0,0,0,1733,1736,1,0,0,0,1734,1736,3,236,118, - 0,1735,1722,1,0,0,0,1735,1734,1,0,0,0,1736,233,1,0,0,0,1737,1739, - 5,89,0,0,1738,1740,3,292,146,0,1739,1738,1,0,0,0,1739,1740,1,0,0, - 0,1740,1741,1,0,0,0,1741,1742,5,146,0,0,1742,1743,3,360,180,0,1743, - 235,1,0,0,0,1744,1746,5,154,0,0,1745,1747,3,292,146,0,1746,1745, - 1,0,0,0,1746,1747,1,0,0,0,1747,1748,1,0,0,0,1748,1749,5,265,0,0, - 1749,1750,5,145,0,0,1750,1756,3,238,119,0,1751,1752,5,263,0,0,1752, - 1753,5,145,0,0,1753,1755,3,238,119,0,1754,1751,1,0,0,0,1755,1758, - 1,0,0,0,1756,1757,1,0,0,0,1756,1754,1,0,0,0,1757,1759,1,0,0,0,1758, - 1756,1,0,0,0,1759,1760,5,266,0,0,1760,237,1,0,0,0,1761,1762,5,210, - 0,0,1762,1763,3,244,122,0,1763,1764,3,304,152,0,1764,1777,1,0,0, - 0,1765,1766,3,304,152,0,1766,1767,3,242,121,0,1767,1769,1,0,0,0, - 1768,1765,1,0,0,0,1768,1769,1,0,0,0,1769,1770,1,0,0,0,1770,1774, - 5,211,0,0,1771,1772,3,242,121,0,1772,1773,3,304,152,0,1773,1775, - 1,0,0,0,1774,1771,1,0,0,0,1774,1775,1,0,0,0,1775,1777,1,0,0,0,1776, - 1761,1,0,0,0,1776,1768,1,0,0,0,1777,239,1,0,0,0,1778,1779,5,30,0, - 0,1779,1780,5,94,0,0,1780,1785,3,358,179,0,1781,1782,5,216,0,0,1782, - 1783,5,151,0,0,1783,1784,5,249,0,0,1784,1786,3,360,180,0,1785,1781, - 1,0,0,0,1785,1786,1,0,0,0,1786,1789,1,0,0,0,1787,1789,5,197,0,0, - 1788,1778,1,0,0,0,1788,1787,1,0,0,0,1789,241,1,0,0,0,1790,1796,1, - 0,0,0,1791,1796,5,251,0,0,1792,1796,5,252,0,0,1793,1796,5,253,0, - 0,1794,1796,5,254,0,0,1795,1790,1,0,0,0,1795,1791,1,0,0,0,1795,1792, - 1,0,0,0,1795,1793,1,0,0,0,1795,1794,1,0,0,0,1796,243,1,0,0,0,1797, - 1806,5,249,0,0,1798,1806,5,250,0,0,1799,1806,5,115,0,0,1800,1806, - 5,164,0,0,1801,1806,5,163,0,0,1802,1806,5,15,0,0,1803,1806,5,94, - 0,0,1804,1806,3,242,121,0,1805,1797,1,0,0,0,1805,1798,1,0,0,0,1805, - 1799,1,0,0,0,1805,1800,1,0,0,0,1805,1801,1,0,0,0,1805,1802,1,0,0, - 0,1805,1803,1,0,0,0,1805,1804,1,0,0,0,1806,245,1,0,0,0,1807,1808, - 5,115,0,0,1808,1811,3,354,177,0,1809,1810,7,12,0,0,1810,1812,5,153, - 0,0,1811,1809,1,0,0,0,1811,1812,1,0,0,0,1812,247,1,0,0,0,1813,1814, - 5,265,0,0,1814,1819,3,256,128,0,1815,1816,5,263,0,0,1816,1818,3, - 256,128,0,1817,1815,1,0,0,0,1818,1821,1,0,0,0,1819,1817,1,0,0,0, - 1819,1820,1,0,0,0,1820,1822,1,0,0,0,1821,1819,1,0,0,0,1822,1823, - 5,266,0,0,1823,249,1,0,0,0,1824,1825,5,265,0,0,1825,1830,3,212,106, - 0,1826,1827,5,263,0,0,1827,1829,3,212,106,0,1828,1826,1,0,0,0,1829, - 1832,1,0,0,0,1830,1831,1,0,0,0,1830,1828,1,0,0,0,1831,1833,1,0,0, - 0,1832,1830,1,0,0,0,1833,1834,5,266,0,0,1834,251,1,0,0,0,1835,1840, - 3,304,152,0,1836,1837,5,263,0,0,1837,1839,3,304,152,0,1838,1836, - 1,0,0,0,1839,1842,1,0,0,0,1840,1838,1,0,0,0,1840,1841,1,0,0,0,1841, - 253,1,0,0,0,1842,1840,1,0,0,0,1843,1853,5,52,0,0,1844,1845,5,71, - 0,0,1845,1846,5,191,0,0,1846,1847,5,26,0,0,1847,1851,3,314,157,0, - 1848,1849,5,63,0,0,1849,1850,5,26,0,0,1850,1852,3,314,157,0,1851, - 1848,1,0,0,0,1851,1852,1,0,0,0,1852,1854,1,0,0,0,1853,1844,1,0,0, - 0,1853,1854,1,0,0,0,1854,1859,1,0,0,0,1855,1856,5,117,0,0,1856,1857, - 5,191,0,0,1857,1858,5,26,0,0,1858,1860,3,314,157,0,1859,1855,1,0, - 0,0,1859,1860,1,0,0,0,1860,255,1,0,0,0,1861,1864,3,358,179,0,1862, - 1863,5,249,0,0,1863,1865,3,304,152,0,1864,1862,1,0,0,0,1864,1865, - 1,0,0,0,1865,257,1,0,0,0,1866,1877,3,260,130,0,1867,1868,5,139,0, - 0,1868,1869,5,26,0,0,1869,1874,3,264,132,0,1870,1871,5,263,0,0,1871, - 1873,3,264,132,0,1872,1870,1,0,0,0,1873,1876,1,0,0,0,1874,1872,1, - 0,0,0,1874,1875,1,0,0,0,1875,1878,1,0,0,0,1876,1874,1,0,0,0,1877, - 1867,1,0,0,0,1877,1878,1,0,0,0,1878,1885,1,0,0,0,1879,1880,5,116, - 0,0,1880,1883,3,304,152,0,1881,1882,5,135,0,0,1882,1884,5,277,0, - 0,1883,1881,1,0,0,0,1883,1884,1,0,0,0,1884,1886,1,0,0,0,1885,1879, - 1,0,0,0,1885,1886,1,0,0,0,1886,259,1,0,0,0,1887,1888,6,130,-1,0, - 1888,1889,3,262,131,0,1889,1904,1,0,0,0,1890,1891,10,2,0,0,1891, - 1893,5,100,0,0,1892,1894,3,276,138,0,1893,1892,1,0,0,0,1893,1894, - 1,0,0,0,1894,1895,1,0,0,0,1895,1903,3,260,130,3,1896,1897,10,1,0, - 0,1897,1899,7,13,0,0,1898,1900,3,276,138,0,1899,1898,1,0,0,0,1899, - 1900,1,0,0,0,1900,1901,1,0,0,0,1901,1903,3,260,130,2,1902,1890,1, - 0,0,0,1902,1896,1,0,0,0,1903,1906,1,0,0,0,1904,1902,1,0,0,0,1904, - 1905,1,0,0,0,1905,261,1,0,0,0,1906,1904,1,0,0,0,1907,1924,3,266, - 133,0,1908,1909,5,188,0,0,1909,1924,3,186,93,0,1910,1911,5,211,0, - 0,1911,1916,3,304,152,0,1912,1913,5,263,0,0,1913,1915,3,304,152, - 0,1914,1912,1,0,0,0,1915,1918,1,0,0,0,1916,1914,1,0,0,0,1916,1917, - 1,0,0,0,1917,1924,1,0,0,0,1918,1916,1,0,0,0,1919,1920,5,265,0,0, - 1920,1921,3,258,129,0,1921,1922,5,266,0,0,1922,1924,1,0,0,0,1923, - 1907,1,0,0,0,1923,1908,1,0,0,0,1923,1910,1,0,0,0,1923,1919,1,0,0, - 0,1924,263,1,0,0,0,1925,1927,3,302,151,0,1926,1928,7,14,0,0,1927, - 1926,1,0,0,0,1927,1928,1,0,0,0,1928,1931,1,0,0,0,1929,1930,5,134, - 0,0,1930,1932,7,15,0,0,1931,1929,1,0,0,0,1931,1932,1,0,0,0,1932, - 265,1,0,0,0,1933,1935,5,174,0,0,1934,1936,3,276,138,0,1935,1934, - 1,0,0,0,1935,1936,1,0,0,0,1936,1938,1,0,0,0,1937,1939,5,183,0,0, - 1938,1937,1,0,0,0,1938,1939,1,0,0,0,1939,1940,1,0,0,0,1940,1945, - 3,278,139,0,1941,1942,5,263,0,0,1942,1944,3,278,139,0,1943,1941, - 1,0,0,0,1944,1947,1,0,0,0,1945,1943,1,0,0,0,1945,1946,1,0,0,0,1946, - 1957,1,0,0,0,1947,1945,1,0,0,0,1948,1949,5,82,0,0,1949,1954,3,280, - 140,0,1950,1951,5,263,0,0,1951,1953,3,280,140,0,1952,1950,1,0,0, - 0,1953,1956,1,0,0,0,1954,1952,1,0,0,0,1954,1955,1,0,0,0,1955,1958, - 1,0,0,0,1956,1954,1,0,0,0,1957,1948,1,0,0,0,1957,1958,1,0,0,0,1958, - 1961,1,0,0,0,1959,1960,5,215,0,0,1960,1962,3,306,153,0,1961,1959, - 1,0,0,0,1961,1962,1,0,0,0,1962,1966,1,0,0,0,1963,1964,5,87,0,0,1964, - 1965,5,26,0,0,1965,1967,3,268,134,0,1966,1963,1,0,0,0,1966,1967, - 1,0,0,0,1967,1970,1,0,0,0,1968,1969,5,90,0,0,1969,1971,3,306,153, - 0,1970,1968,1,0,0,0,1970,1971,1,0,0,0,1971,267,1,0,0,0,1972,1974, - 3,276,138,0,1973,1972,1,0,0,0,1973,1974,1,0,0,0,1974,1975,1,0,0, - 0,1975,1980,3,270,135,0,1976,1977,5,263,0,0,1977,1979,3,270,135, - 0,1978,1976,1,0,0,0,1979,1982,1,0,0,0,1980,1978,1,0,0,0,1980,1981, - 1,0,0,0,1981,269,1,0,0,0,1982,1980,1,0,0,0,1983,1984,3,272,136,0, - 1984,271,1,0,0,0,1985,1994,5,265,0,0,1986,1991,3,302,151,0,1987, - 1988,5,263,0,0,1988,1990,3,302,151,0,1989,1987,1,0,0,0,1990,1993, - 1,0,0,0,1991,1989,1,0,0,0,1991,1992,1,0,0,0,1992,1995,1,0,0,0,1993, - 1991,1,0,0,0,1994,1986,1,0,0,0,1994,1995,1,0,0,0,1995,1996,1,0,0, - 0,1996,1999,5,266,0,0,1997,1999,3,302,151,0,1998,1985,1,0,0,0,1998, - 1997,1,0,0,0,1999,273,1,0,0,0,2000,2002,3,358,179,0,2001,2003,3, - 292,146,0,2002,2001,1,0,0,0,2002,2003,1,0,0,0,2003,2004,1,0,0,0, - 2004,2005,5,9,0,0,2005,2006,3,296,148,0,2006,275,1,0,0,0,2007,2008, - 7,16,0,0,2008,277,1,0,0,0,2009,2014,3,302,151,0,2010,2012,5,9,0, - 0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012,2013,1,0,0,0,2013,2015, - 3,358,179,0,2014,2011,1,0,0,0,2014,2015,1,0,0,0,2015,2022,1,0,0, - 0,2016,2017,3,354,177,0,2017,2018,5,261,0,0,2018,2019,5,257,0,0, - 2019,2022,1,0,0,0,2020,2022,5,257,0,0,2021,2009,1,0,0,0,2021,2016, - 1,0,0,0,2021,2020,1,0,0,0,2022,279,1,0,0,0,2023,2024,6,140,-1,0, - 2024,2025,3,286,143,0,2025,2039,1,0,0,0,2026,2035,10,2,0,0,2027, - 2028,5,38,0,0,2028,2029,5,109,0,0,2029,2036,3,286,143,0,2030,2031, - 3,282,141,0,2031,2032,5,109,0,0,2032,2033,3,280,140,0,2033,2034, - 3,284,142,0,2034,2036,1,0,0,0,2035,2027,1,0,0,0,2035,2030,1,0,0, - 0,2036,2038,1,0,0,0,2037,2026,1,0,0,0,2038,2041,1,0,0,0,2039,2037, - 1,0,0,0,2039,2040,1,0,0,0,2040,281,1,0,0,0,2041,2039,1,0,0,0,2042, - 2044,5,97,0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2074,1,0, - 0,0,2045,2047,5,114,0,0,2046,2048,5,97,0,0,2047,2046,1,0,0,0,2047, - 2048,1,0,0,0,2048,2074,1,0,0,0,2049,2051,5,165,0,0,2050,2052,5,97, - 0,0,2051,2050,1,0,0,0,2051,2052,1,0,0,0,2052,2074,1,0,0,0,2053,2055, - 5,114,0,0,2054,2056,5,141,0,0,2055,2054,1,0,0,0,2055,2056,1,0,0, - 0,2056,2074,1,0,0,0,2057,2059,5,165,0,0,2058,2060,5,141,0,0,2059, - 2058,1,0,0,0,2059,2060,1,0,0,0,2060,2074,1,0,0,0,2061,2063,5,83, - 0,0,2062,2064,5,141,0,0,2063,2062,1,0,0,0,2063,2064,1,0,0,0,2064, - 2074,1,0,0,0,2065,2066,5,114,0,0,2066,2074,5,177,0,0,2067,2068,5, - 165,0,0,2068,2074,5,177,0,0,2069,2070,5,114,0,0,2070,2074,5,7,0, - 0,2071,2072,5,165,0,0,2072,2074,5,7,0,0,2073,2043,1,0,0,0,2073,2045, - 1,0,0,0,2073,2049,1,0,0,0,2073,2053,1,0,0,0,2073,2057,1,0,0,0,2073, - 2061,1,0,0,0,2073,2065,1,0,0,0,2073,2067,1,0,0,0,2073,2069,1,0,0, - 0,2073,2071,1,0,0,0,2074,283,1,0,0,0,2075,2076,5,136,0,0,2076,2090, - 3,306,153,0,2077,2078,5,205,0,0,2078,2079,5,265,0,0,2079,2084,3, - 358,179,0,2080,2081,5,263,0,0,2081,2083,3,358,179,0,2082,2080,1, - 0,0,0,2083,2086,1,0,0,0,2084,2082,1,0,0,0,2084,2085,1,0,0,0,2085, - 2087,1,0,0,0,2086,2084,1,0,0,0,2087,2088,5,266,0,0,2088,2090,1,0, - 0,0,2089,2075,1,0,0,0,2089,2077,1,0,0,0,2090,285,1,0,0,0,2091,2104, - 3,290,145,0,2092,2093,5,190,0,0,2093,2094,3,288,144,0,2094,2095, - 5,265,0,0,2095,2096,3,304,152,0,2096,2102,5,266,0,0,2097,2098,5, - 157,0,0,2098,2099,5,265,0,0,2099,2100,3,304,152,0,2100,2101,5,266, - 0,0,2101,2103,1,0,0,0,2102,2097,1,0,0,0,2102,2103,1,0,0,0,2103,2105, - 1,0,0,0,2104,2092,1,0,0,0,2104,2105,1,0,0,0,2105,287,1,0,0,0,2106, - 2107,7,17,0,0,2107,289,1,0,0,0,2108,2116,3,294,147,0,2109,2111,5, - 9,0,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2112,1,0,0,0,2112, - 2114,3,358,179,0,2113,2115,3,292,146,0,2114,2113,1,0,0,0,2114,2115, - 1,0,0,0,2115,2117,1,0,0,0,2116,2110,1,0,0,0,2116,2117,1,0,0,0,2117, - 291,1,0,0,0,2118,2119,5,265,0,0,2119,2124,3,192,96,0,2120,2121,5, - 263,0,0,2121,2123,3,192,96,0,2122,2120,1,0,0,0,2123,2126,1,0,0,0, - 2124,2122,1,0,0,0,2124,2125,1,0,0,0,2125,2127,1,0,0,0,2126,2124, - 1,0,0,0,2127,2128,5,266,0,0,2128,293,1,0,0,0,2129,2137,3,194,97, - 0,2130,2132,5,113,0,0,2131,2130,1,0,0,0,2131,2132,1,0,0,0,2132,2133, - 1,0,0,0,2133,2137,3,296,148,0,2134,2137,3,298,149,0,2135,2137,3, - 300,150,0,2136,2129,1,0,0,0,2136,2131,1,0,0,0,2136,2134,1,0,0,0, - 2136,2135,1,0,0,0,2137,295,1,0,0,0,2138,2139,5,265,0,0,2139,2140, - 3,204,102,0,2140,2141,5,266,0,0,2141,297,1,0,0,0,2142,2143,5,201, - 0,0,2143,2144,5,265,0,0,2144,2149,3,304,152,0,2145,2146,5,263,0, - 0,2146,2148,3,304,152,0,2147,2145,1,0,0,0,2148,2151,1,0,0,0,2149, - 2147,1,0,0,0,2149,2150,1,0,0,0,2150,2152,1,0,0,0,2151,2149,1,0,0, - 0,2152,2155,5,266,0,0,2153,2154,5,216,0,0,2154,2156,5,140,0,0,2155, - 2153,1,0,0,0,2155,2156,1,0,0,0,2156,299,1,0,0,0,2157,2158,5,265, - 0,0,2158,2159,3,280,140,0,2159,2160,5,266,0,0,2160,301,1,0,0,0,2161, - 2164,3,192,96,0,2162,2164,3,304,152,0,2163,2161,1,0,0,0,2163,2162, - 1,0,0,0,2164,303,1,0,0,0,2165,2166,3,306,153,0,2166,305,1,0,0,0, - 2167,2168,6,153,-1,0,2168,2170,3,310,155,0,2169,2171,3,308,154,0, - 2170,2169,1,0,0,0,2170,2171,1,0,0,0,2171,2175,1,0,0,0,2172,2173, - 5,132,0,0,2173,2175,3,306,153,3,2174,2167,1,0,0,0,2174,2172,1,0, - 0,0,2175,2184,1,0,0,0,2176,2177,10,2,0,0,2177,2178,5,5,0,0,2178, - 2183,3,306,153,3,2179,2180,10,1,0,0,2180,2181,5,138,0,0,2181,2183, - 3,306,153,2,2182,2176,1,0,0,0,2182,2179,1,0,0,0,2183,2186,1,0,0, - 0,2184,2182,1,0,0,0,2184,2185,1,0,0,0,2185,307,1,0,0,0,2186,2184, - 1,0,0,0,2187,2188,3,316,158,0,2188,2189,3,310,155,0,2189,2246,1, - 0,0,0,2190,2191,3,316,158,0,2191,2192,3,318,159,0,2192,2193,3,296, - 148,0,2193,2246,1,0,0,0,2194,2196,5,132,0,0,2195,2194,1,0,0,0,2195, - 2196,1,0,0,0,2196,2197,1,0,0,0,2197,2198,5,15,0,0,2198,2199,3,310, - 155,0,2199,2200,5,5,0,0,2200,2201,3,310,155,0,2201,2246,1,0,0,0, - 2202,2204,5,132,0,0,2203,2202,1,0,0,0,2203,2204,1,0,0,0,2204,2205, - 1,0,0,0,2205,2206,5,94,0,0,2206,2207,5,265,0,0,2207,2212,3,304,152, - 0,2208,2209,5,263,0,0,2209,2211,3,304,152,0,2210,2208,1,0,0,0,2211, - 2214,1,0,0,0,2212,2210,1,0,0,0,2212,2213,1,0,0,0,2213,2215,1,0,0, - 0,2214,2212,1,0,0,0,2215,2216,5,266,0,0,2216,2246,1,0,0,0,2217,2219, - 5,132,0,0,2218,2217,1,0,0,0,2218,2219,1,0,0,0,2219,2220,1,0,0,0, - 2220,2221,5,94,0,0,2221,2246,3,296,148,0,2222,2224,5,132,0,0,2223, - 2222,1,0,0,0,2223,2224,1,0,0,0,2224,2225,1,0,0,0,2225,2226,7,18, - 0,0,2226,2229,3,310,155,0,2227,2228,5,62,0,0,2228,2230,3,310,155, - 0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,2246,1,0,0,0,2231,2232, - 7,19,0,0,2232,2246,3,310,155,0,2233,2235,5,108,0,0,2234,2236,5,132, - 0,0,2235,2234,1,0,0,0,2235,2236,1,0,0,0,2236,2237,1,0,0,0,2237,2246, - 7,20,0,0,2238,2240,5,108,0,0,2239,2241,5,132,0,0,2240,2239,1,0,0, - 0,2240,2241,1,0,0,0,2241,2242,1,0,0,0,2242,2243,5,57,0,0,2243,2244, - 5,82,0,0,2244,2246,3,310,155,0,2245,2187,1,0,0,0,2245,2190,1,0,0, - 0,2245,2195,1,0,0,0,2245,2203,1,0,0,0,2245,2218,1,0,0,0,2245,2223, - 1,0,0,0,2245,2231,1,0,0,0,2245,2233,1,0,0,0,2245,2238,1,0,0,0,2246, - 309,1,0,0,0,2247,2248,6,155,-1,0,2248,2252,3,312,156,0,2249,2250, - 7,21,0,0,2250,2252,3,310,155,4,2251,2247,1,0,0,0,2251,2249,1,0,0, - 0,2252,2264,1,0,0,0,2253,2254,10,3,0,0,2254,2255,7,22,0,0,2255,2263, - 3,310,155,4,2256,2257,10,2,0,0,2257,2258,7,21,0,0,2258,2263,3,310, - 155,3,2259,2260,10,1,0,0,2260,2261,5,260,0,0,2261,2263,3,310,155, - 2,2262,2253,1,0,0,0,2262,2256,1,0,0,0,2262,2259,1,0,0,0,2263,2266, - 1,0,0,0,2264,2262,1,0,0,0,2264,2265,1,0,0,0,2265,311,1,0,0,0,2266, - 2264,1,0,0,0,2267,2268,6,156,-1,0,2268,2514,5,133,0,0,2269,2514, - 3,322,161,0,2270,2271,3,358,179,0,2271,2272,3,314,157,0,2272,2514, - 1,0,0,0,2273,2274,5,286,0,0,2274,2514,3,314,157,0,2275,2514,3,360, - 180,0,2276,2514,3,320,160,0,2277,2514,3,314,157,0,2278,2514,5,276, - 0,0,2279,2514,5,272,0,0,2280,2281,5,148,0,0,2281,2282,5,265,0,0, - 2282,2283,3,310,155,0,2283,2284,5,94,0,0,2284,2285,3,310,155,0,2285, - 2286,5,266,0,0,2286,2514,1,0,0,0,2287,2288,5,265,0,0,2288,2291,3, - 304,152,0,2289,2290,5,9,0,0,2290,2292,3,328,164,0,2291,2289,1,0, - 0,0,2291,2292,1,0,0,0,2292,2301,1,0,0,0,2293,2294,5,263,0,0,2294, - 2297,3,304,152,0,2295,2296,5,9,0,0,2296,2298,3,328,164,0,2297,2295, - 1,0,0,0,2297,2298,1,0,0,0,2298,2300,1,0,0,0,2299,2293,1,0,0,0,2300, - 2303,1,0,0,0,2301,2302,1,0,0,0,2301,2299,1,0,0,0,2302,2304,1,0,0, - 0,2303,2301,1,0,0,0,2304,2305,5,266,0,0,2305,2514,1,0,0,0,2306,2307, - 5,168,0,0,2307,2308,5,265,0,0,2308,2313,3,304,152,0,2309,2310,5, - 263,0,0,2310,2312,3,304,152,0,2311,2309,1,0,0,0,2312,2315,1,0,0, - 0,2313,2311,1,0,0,0,2313,2314,1,0,0,0,2314,2316,1,0,0,0,2315,2313, - 1,0,0,0,2316,2317,5,266,0,0,2317,2514,1,0,0,0,2318,2319,3,190,95, - 0,2319,2320,5,265,0,0,2320,2321,5,257,0,0,2321,2323,5,266,0,0,2322, - 2324,3,338,169,0,2323,2322,1,0,0,0,2323,2324,1,0,0,0,2324,2326,1, - 0,0,0,2325,2327,3,340,170,0,2326,2325,1,0,0,0,2326,2327,1,0,0,0, - 2327,2514,1,0,0,0,2328,2329,3,190,95,0,2329,2341,5,265,0,0,2330, - 2332,3,276,138,0,2331,2330,1,0,0,0,2331,2332,1,0,0,0,2332,2333,1, - 0,0,0,2333,2338,3,304,152,0,2334,2335,5,263,0,0,2335,2337,3,304, - 152,0,2336,2334,1,0,0,0,2337,2340,1,0,0,0,2338,2336,1,0,0,0,2338, - 2339,1,0,0,0,2339,2342,1,0,0,0,2340,2338,1,0,0,0,2341,2331,1,0,0, - 0,2341,2342,1,0,0,0,2342,2353,1,0,0,0,2343,2344,5,139,0,0,2344,2345, - 5,26,0,0,2345,2350,3,264,132,0,2346,2347,5,263,0,0,2347,2349,3,264, - 132,0,2348,2346,1,0,0,0,2349,2352,1,0,0,0,2350,2348,1,0,0,0,2350, - 2351,1,0,0,0,2351,2354,1,0,0,0,2352,2350,1,0,0,0,2353,2343,1,0,0, - 0,2353,2354,1,0,0,0,2354,2355,1,0,0,0,2355,2357,5,266,0,0,2356,2358, - 3,338,169,0,2357,2356,1,0,0,0,2357,2358,1,0,0,0,2358,2360,1,0,0, - 0,2359,2361,3,340,170,0,2360,2359,1,0,0,0,2360,2361,1,0,0,0,2361, - 2514,1,0,0,0,2362,2363,3,358,179,0,2363,2364,5,273,0,0,2364,2365, - 3,304,152,0,2365,2514,1,0,0,0,2366,2375,5,265,0,0,2367,2372,3,358, - 179,0,2368,2369,5,263,0,0,2369,2371,3,358,179,0,2370,2368,1,0,0, - 0,2371,2374,1,0,0,0,2372,2370,1,0,0,0,2372,2373,1,0,0,0,2373,2376, - 1,0,0,0,2374,2372,1,0,0,0,2375,2367,1,0,0,0,2375,2376,1,0,0,0,2376, - 2377,1,0,0,0,2377,2378,5,266,0,0,2378,2379,5,273,0,0,2379,2514,3, - 304,152,0,2380,2381,5,265,0,0,2381,2382,3,204,102,0,2382,2383,5, - 266,0,0,2383,2514,1,0,0,0,2384,2385,5,66,0,0,2385,2386,5,265,0,0, - 2386,2387,3,204,102,0,2387,2388,5,266,0,0,2388,2514,1,0,0,0,2389, - 2390,5,28,0,0,2390,2392,3,310,155,0,2391,2393,3,336,168,0,2392,2391, - 1,0,0,0,2393,2394,1,0,0,0,2394,2392,1,0,0,0,2394,2395,1,0,0,0,2395, - 2398,1,0,0,0,2396,2397,5,59,0,0,2397,2399,3,304,152,0,2398,2396, - 1,0,0,0,2398,2399,1,0,0,0,2399,2400,1,0,0,0,2400,2401,5,61,0,0,2401, - 2514,1,0,0,0,2402,2404,5,28,0,0,2403,2405,3,336,168,0,2404,2403, - 1,0,0,0,2405,2406,1,0,0,0,2406,2404,1,0,0,0,2406,2407,1,0,0,0,2407, - 2410,1,0,0,0,2408,2409,5,59,0,0,2409,2411,3,304,152,0,2410,2408, - 1,0,0,0,2410,2411,1,0,0,0,2411,2412,1,0,0,0,2412,2413,5,61,0,0,2413, - 2514,1,0,0,0,2414,2415,5,29,0,0,2415,2416,5,265,0,0,2416,2417,3, - 304,152,0,2417,2418,5,9,0,0,2418,2419,3,328,164,0,2419,2420,5,266, - 0,0,2420,2514,1,0,0,0,2421,2422,5,195,0,0,2422,2423,5,265,0,0,2423, - 2424,3,304,152,0,2424,2425,5,9,0,0,2425,2426,3,328,164,0,2426,2427, - 5,266,0,0,2427,2514,1,0,0,0,2428,2429,5,8,0,0,2429,2438,5,267,0, - 0,2430,2435,3,304,152,0,2431,2432,5,263,0,0,2432,2434,3,304,152, - 0,2433,2431,1,0,0,0,2434,2437,1,0,0,0,2435,2433,1,0,0,0,2435,2436, - 1,0,0,0,2436,2439,1,0,0,0,2437,2435,1,0,0,0,2438,2430,1,0,0,0,2438, - 2439,1,0,0,0,2439,2440,1,0,0,0,2440,2514,5,268,0,0,2441,2514,3,358, - 179,0,2442,2514,5,40,0,0,2443,2447,5,42,0,0,2444,2445,5,265,0,0, - 2445,2446,5,277,0,0,2446,2448,5,266,0,0,2447,2444,1,0,0,0,2447,2448, - 1,0,0,0,2448,2514,1,0,0,0,2449,2453,5,43,0,0,2450,2451,5,265,0,0, - 2451,2452,5,277,0,0,2452,2454,5,266,0,0,2453,2450,1,0,0,0,2453,2454, - 1,0,0,0,2454,2514,1,0,0,0,2455,2459,5,119,0,0,2456,2457,5,265,0, - 0,2457,2458,5,277,0,0,2458,2460,5,266,0,0,2459,2456,1,0,0,0,2459, - 2460,1,0,0,0,2460,2514,1,0,0,0,2461,2465,5,120,0,0,2462,2463,5,265, - 0,0,2463,2464,5,277,0,0,2464,2466,5,266,0,0,2465,2462,1,0,0,0,2465, - 2466,1,0,0,0,2466,2514,1,0,0,0,2467,2514,5,44,0,0,2468,2514,5,41, - 0,0,2469,2470,5,184,0,0,2470,2471,5,265,0,0,2471,2472,3,310,155, - 0,2472,2473,5,82,0,0,2473,2476,3,310,155,0,2474,2475,5,78,0,0,2475, - 2477,3,310,155,0,2476,2474,1,0,0,0,2476,2477,1,0,0,0,2477,2478,1, - 0,0,0,2478,2479,5,266,0,0,2479,2514,1,0,0,0,2480,2481,5,131,0,0, - 2481,2482,5,265,0,0,2482,2485,3,310,155,0,2483,2484,5,263,0,0,2484, - 2486,3,326,163,0,2485,2483,1,0,0,0,2485,2486,1,0,0,0,2486,2487,1, - 0,0,0,2487,2488,5,266,0,0,2488,2514,1,0,0,0,2489,2490,5,68,0,0,2490, - 2491,5,265,0,0,2491,2492,3,358,179,0,2492,2493,5,82,0,0,2493,2494, - 3,310,155,0,2494,2495,5,266,0,0,2495,2514,1,0,0,0,2496,2497,5,265, - 0,0,2497,2498,3,304,152,0,2498,2499,5,266,0,0,2499,2514,1,0,0,0, - 2500,2501,5,88,0,0,2501,2510,5,265,0,0,2502,2507,3,354,177,0,2503, - 2504,5,263,0,0,2504,2506,3,354,177,0,2505,2503,1,0,0,0,2506,2509, - 1,0,0,0,2507,2505,1,0,0,0,2507,2508,1,0,0,0,2508,2511,1,0,0,0,2509, - 2507,1,0,0,0,2510,2502,1,0,0,0,2510,2511,1,0,0,0,2511,2512,1,0,0, - 0,2512,2514,5,266,0,0,2513,2267,1,0,0,0,2513,2269,1,0,0,0,2513,2270, - 1,0,0,0,2513,2273,1,0,0,0,2513,2275,1,0,0,0,2513,2276,1,0,0,0,2513, - 2277,1,0,0,0,2513,2278,1,0,0,0,2513,2279,1,0,0,0,2513,2280,1,0,0, - 0,2513,2287,1,0,0,0,2513,2306,1,0,0,0,2513,2318,1,0,0,0,2513,2328, - 1,0,0,0,2513,2362,1,0,0,0,2513,2366,1,0,0,0,2513,2380,1,0,0,0,2513, - 2384,1,0,0,0,2513,2389,1,0,0,0,2513,2402,1,0,0,0,2513,2414,1,0,0, - 0,2513,2421,1,0,0,0,2513,2428,1,0,0,0,2513,2441,1,0,0,0,2513,2442, - 1,0,0,0,2513,2443,1,0,0,0,2513,2449,1,0,0,0,2513,2455,1,0,0,0,2513, - 2461,1,0,0,0,2513,2467,1,0,0,0,2513,2468,1,0,0,0,2513,2469,1,0,0, - 0,2513,2480,1,0,0,0,2513,2489,1,0,0,0,2513,2496,1,0,0,0,2513,2500, - 1,0,0,0,2514,2525,1,0,0,0,2515,2516,10,15,0,0,2516,2517,5,267,0, - 0,2517,2518,3,310,155,0,2518,2519,5,268,0,0,2519,2524,1,0,0,0,2520, - 2521,10,13,0,0,2521,2522,5,261,0,0,2522,2524,3,358,179,0,2523,2515, - 1,0,0,0,2523,2520,1,0,0,0,2524,2527,1,0,0,0,2525,2523,1,0,0,0,2525, - 2526,1,0,0,0,2526,313,1,0,0,0,2527,2525,1,0,0,0,2528,2535,5,274, - 0,0,2529,2532,5,275,0,0,2530,2531,5,198,0,0,2531,2533,5,274,0,0, - 2532,2530,1,0,0,0,2532,2533,1,0,0,0,2533,2535,1,0,0,0,2534,2528, - 1,0,0,0,2534,2529,1,0,0,0,2535,315,1,0,0,0,2536,2537,7,23,0,0,2537, - 317,1,0,0,0,2538,2539,7,24,0,0,2539,319,1,0,0,0,2540,2541,7,25,0, - 0,2541,321,1,0,0,0,2542,2543,5,277,0,0,2543,2557,3,324,162,0,2544, - 2545,5,265,0,0,2545,2546,5,277,0,0,2546,2547,5,266,0,0,2547,2557, - 3,324,162,0,2548,2549,5,101,0,0,2549,2550,5,277,0,0,2550,2557,3, - 324,162,0,2551,2552,5,101,0,0,2552,2553,5,265,0,0,2553,2554,5,277, - 0,0,2554,2555,5,266,0,0,2555,2557,3,324,162,0,2556,2542,1,0,0,0, - 2556,2544,1,0,0,0,2556,2548,1,0,0,0,2556,2551,1,0,0,0,2557,323,1, - 0,0,0,2558,2559,7,26,0,0,2559,325,1,0,0,0,2560,2561,7,27,0,0,2561, - 327,1,0,0,0,2562,2563,6,164,-1,0,2563,2564,5,8,0,0,2564,2565,5,251, - 0,0,2565,2566,3,328,164,0,2566,2567,5,253,0,0,2567,2608,1,0,0,0, - 2568,2569,5,235,0,0,2569,2570,5,251,0,0,2570,2571,3,328,164,0,2571, - 2572,5,263,0,0,2572,2573,3,328,164,0,2573,2574,5,253,0,0,2574,2608, - 1,0,0,0,2575,2576,5,240,0,0,2576,2577,5,251,0,0,2577,2578,3,358, - 179,0,2578,2585,3,328,164,0,2579,2580,5,263,0,0,2580,2581,3,358, - 179,0,2581,2582,3,328,164,0,2582,2584,1,0,0,0,2583,2579,1,0,0,0, - 2584,2587,1,0,0,0,2585,2583,1,0,0,0,2585,2586,1,0,0,0,2586,2588, - 1,0,0,0,2587,2585,1,0,0,0,2588,2589,5,253,0,0,2589,2608,1,0,0,0, - 2590,2593,3,334,167,0,2591,2593,3,330,165,0,2592,2590,1,0,0,0,2592, - 2591,1,0,0,0,2593,2605,1,0,0,0,2594,2595,5,265,0,0,2595,2600,3,332, - 166,0,2596,2597,5,263,0,0,2597,2599,3,332,166,0,2598,2596,1,0,0, - 0,2599,2602,1,0,0,0,2600,2598,1,0,0,0,2600,2601,1,0,0,0,2601,2603, - 1,0,0,0,2602,2600,1,0,0,0,2603,2604,5,266,0,0,2604,2606,1,0,0,0, - 2605,2594,1,0,0,0,2605,2606,1,0,0,0,2606,2608,1,0,0,0,2607,2562, - 1,0,0,0,2607,2568,1,0,0,0,2607,2575,1,0,0,0,2607,2592,1,0,0,0,2608, - 2613,1,0,0,0,2609,2610,10,5,0,0,2610,2612,5,8,0,0,2611,2609,1,0, - 0,0,2612,2615,1,0,0,0,2613,2611,1,0,0,0,2613,2614,1,0,0,0,2614,329, - 1,0,0,0,2615,2613,1,0,0,0,2616,2617,7,28,0,0,2617,331,1,0,0,0,2618, - 2621,5,277,0,0,2619,2621,3,328,164,0,2620,2618,1,0,0,0,2620,2619, - 1,0,0,0,2621,333,1,0,0,0,2622,2627,5,284,0,0,2623,2627,5,285,0,0, - 2624,2627,5,286,0,0,2625,2627,3,358,179,0,2626,2622,1,0,0,0,2626, - 2623,1,0,0,0,2626,2624,1,0,0,0,2626,2625,1,0,0,0,2627,335,1,0,0, - 0,2628,2629,5,214,0,0,2629,2630,3,304,152,0,2630,2631,5,192,0,0, - 2631,2632,3,304,152,0,2632,337,1,0,0,0,2633,2634,5,74,0,0,2634,2635, - 5,265,0,0,2635,2636,5,215,0,0,2636,2637,3,306,153,0,2637,2638,5, - 266,0,0,2638,339,1,0,0,0,2639,2640,5,143,0,0,2640,2651,5,265,0,0, - 2641,2642,5,145,0,0,2642,2643,5,26,0,0,2643,2648,3,304,152,0,2644, - 2645,5,263,0,0,2645,2647,3,304,152,0,2646,2644,1,0,0,0,2647,2650, - 1,0,0,0,2648,2646,1,0,0,0,2648,2649,1,0,0,0,2649,2652,1,0,0,0,2650, - 2648,1,0,0,0,2651,2641,1,0,0,0,2651,2652,1,0,0,0,2652,2663,1,0,0, - 0,2653,2654,5,139,0,0,2654,2655,5,26,0,0,2655,2660,3,264,132,0,2656, - 2657,5,263,0,0,2657,2659,3,264,132,0,2658,2656,1,0,0,0,2659,2662, - 1,0,0,0,2660,2658,1,0,0,0,2660,2661,1,0,0,0,2661,2664,1,0,0,0,2662, - 2660,1,0,0,0,2663,2653,1,0,0,0,2663,2664,1,0,0,0,2664,2666,1,0,0, - 0,2665,2667,3,342,171,0,2666,2665,1,0,0,0,2666,2667,1,0,0,0,2667, - 2668,1,0,0,0,2668,2669,5,266,0,0,2669,341,1,0,0,0,2670,2671,5,154, - 0,0,2671,2687,3,344,172,0,2672,2673,5,169,0,0,2673,2687,3,344,172, - 0,2674,2675,5,154,0,0,2675,2676,5,15,0,0,2676,2677,3,344,172,0,2677, - 2678,5,5,0,0,2678,2679,3,344,172,0,2679,2687,1,0,0,0,2680,2681,5, - 169,0,0,2681,2682,5,15,0,0,2682,2683,3,344,172,0,2683,2684,5,5,0, - 0,2684,2685,3,344,172,0,2685,2687,1,0,0,0,2686,2670,1,0,0,0,2686, - 2672,1,0,0,0,2686,2674,1,0,0,0,2686,2680,1,0,0,0,2687,343,1,0,0, - 0,2688,2689,5,199,0,0,2689,2698,5,149,0,0,2690,2691,5,199,0,0,2691, - 2698,5,77,0,0,2692,2693,5,39,0,0,2693,2698,5,168,0,0,2694,2695,3, - 304,152,0,2695,2696,7,29,0,0,2696,2698,1,0,0,0,2697,2688,1,0,0,0, - 2697,2690,1,0,0,0,2697,2692,1,0,0,0,2697,2694,1,0,0,0,2698,345,1, - 0,0,0,2699,2700,3,358,179,0,2700,2701,5,261,0,0,2701,2702,3,358, - 179,0,2702,2705,1,0,0,0,2703,2705,3,358,179,0,2704,2699,1,0,0,0, - 2704,2703,1,0,0,0,2705,347,1,0,0,0,2706,2711,3,346,173,0,2707,2708, - 5,263,0,0,2708,2710,3,346,173,0,2709,2707,1,0,0,0,2710,2713,1,0, - 0,0,2711,2709,1,0,0,0,2711,2712,1,0,0,0,2712,349,1,0,0,0,2713,2711, - 1,0,0,0,2714,2728,5,2,0,0,2715,2728,5,4,0,0,2716,2728,5,58,0,0,2717, - 2728,5,37,0,0,2718,2728,5,99,0,0,2719,2728,5,162,0,0,2720,2725,5, - 174,0,0,2721,2722,5,265,0,0,2722,2723,3,358,179,0,2723,2724,5,266, - 0,0,2724,2726,1,0,0,0,2725,2721,1,0,0,0,2725,2726,1,0,0,0,2726,2728, - 1,0,0,0,2727,2714,1,0,0,0,2727,2715,1,0,0,0,2727,2716,1,0,0,0,2727, - 2717,1,0,0,0,2727,2718,1,0,0,0,2727,2719,1,0,0,0,2727,2720,1,0,0, - 0,2728,351,1,0,0,0,2729,2730,7,30,0,0,2730,353,1,0,0,0,2731,2736, - 3,358,179,0,2732,2733,5,261,0,0,2733,2735,3,358,179,0,2734,2732, - 1,0,0,0,2735,2738,1,0,0,0,2736,2734,1,0,0,0,2736,2737,1,0,0,0,2737, - 355,1,0,0,0,2738,2736,1,0,0,0,2739,2740,5,166,0,0,2740,2746,3,358, - 179,0,2741,2742,5,204,0,0,2742,2746,3,358,179,0,2743,2744,5,87,0, - 0,2744,2746,3,358,179,0,2745,2739,1,0,0,0,2745,2741,1,0,0,0,2745, - 2743,1,0,0,0,2746,357,1,0,0,0,2747,2753,5,280,0,0,2748,2753,5,274, - 0,0,2749,2753,3,364,182,0,2750,2753,5,283,0,0,2751,2753,5,281,0, - 0,2752,2747,1,0,0,0,2752,2748,1,0,0,0,2752,2749,1,0,0,0,2752,2750, - 1,0,0,0,2752,2751,1,0,0,0,2753,359,1,0,0,0,2754,2756,5,256,0,0,2755, - 2754,1,0,0,0,2755,2756,1,0,0,0,2756,2757,1,0,0,0,2757,2767,5,278, - 0,0,2758,2760,5,256,0,0,2759,2758,1,0,0,0,2759,2760,1,0,0,0,2760, - 2761,1,0,0,0,2761,2767,5,279,0,0,2762,2764,5,256,0,0,2763,2762,1, - 0,0,0,2763,2764,1,0,0,0,2764,2765,1,0,0,0,2765,2767,5,277,0,0,2766, - 2755,1,0,0,0,2766,2759,1,0,0,0,2766,2763,1,0,0,0,2767,361,1,0,0, - 0,2768,2769,7,31,0,0,2769,363,1,0,0,0,2770,2771,7,32,0,0,2771,365, - 1,0,0,0,353,369,376,400,413,417,421,430,435,439,445,447,452,456, + 1,164,5,164,2582,8,164,10,164,12,164,2585,9,164,1,164,1,164,1,164, + 1,164,3,164,2591,8,164,1,164,1,164,1,164,1,164,5,164,2597,8,164, + 10,164,12,164,2600,9,164,1,164,1,164,3,164,2604,8,164,3,164,2606, + 8,164,1,164,1,164,5,164,2610,8,164,10,164,12,164,2613,9,164,1,165, + 1,165,1,166,1,166,3,166,2619,8,166,1,167,1,167,1,167,1,167,3,167, + 2625,8,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169, + 1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,5,170,2645, + 8,170,10,170,12,170,2648,9,170,3,170,2650,8,170,1,170,1,170,1,170, + 1,170,1,170,5,170,2657,8,170,10,170,12,170,2660,9,170,3,170,2662, + 8,170,1,170,3,170,2665,8,170,1,170,1,170,1,171,1,171,1,171,1,171, + 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,171,3,171,2685,8,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,3,172,2696,8,172,1,173,1,173,1,173,1,173,1,173,3,173, + 2703,8,173,1,174,1,174,1,174,5,174,2708,8,174,10,174,12,174,2711, + 9,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175, + 1,175,3,175,2724,8,175,3,175,2726,8,175,1,176,1,176,1,177,1,177, + 1,177,5,177,2733,8,177,10,177,12,177,2736,9,177,1,178,1,178,1,178, + 1,178,1,178,1,178,3,178,2744,8,178,1,179,1,179,1,179,1,179,1,179, + 3,179,2751,8,179,1,180,3,180,2754,8,180,1,180,1,180,3,180,2758,8, + 180,1,180,1,180,3,180,2762,8,180,1,180,3,180,2765,8,180,1,181,1, + 181,1,182,1,182,1,182,10,770,1446,1621,1661,1679,1694,1725,1754, + 1828,2299,6,260,280,306,310,312,328,183,0,2,4,6,8,10,12,14,16,18, + 20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62, + 64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104, + 106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136, + 138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168, + 170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200, + 202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232, + 234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264, + 266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296, + 298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328, + 330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360, + 362,364,0,33,2,0,46,46,170,170,2,0,166,166,204,204,2,0,176,176,202, + 202,2,0,69,69,80,80,2,0,27,27,159,159,2,0,103,103,144,144,2,0,47, + 47,171,171,2,0,3,3,12,12,3,0,87,87,166,166,204,204,2,0,178,178,209, + 209,1,0,245,248,2,0,147,147,219,223,2,0,65,65,95,95,2,0,64,64,200, + 200,2,0,10,10,55,55,2,0,75,75,112,112,2,0,2,2,57,57,2,0,14,14,185, + 185,3,0,106,106,115,115,164,164,2,0,105,105,163,163,4,0,70,70,133, + 133,194,194,208,208,1,0,255,256,1,0,257,259,1,0,249,254,3,0,2,2, + 6,6,181,181,2,0,70,70,194,194,5,0,48,49,91,92,122,125,172,173,217, + 218,1,0,127,130,2,0,8,8,227,244,2,0,77,77,149,149,4,0,46,46,178, + 178,188,188,209,209,16,0,28,29,40,40,43,43,48,48,68,68,91,91,114, + 114,122,122,124,124,158,158,165,165,172,172,184,184,196,196,204, + 204,217,217,23,0,14,14,43,44,48,49,65,65,68,68,91,91,95,95,110,110, + 119,119,122,125,127,130,137,137,140,140,152,153,172,173,180,180, + 184,185,195,195,204,204,213,213,217,217,220,220,231,231,3093,0,369, + 1,0,0,0,2,374,1,0,0,0,4,400,1,0,0,0,6,402,1,0,0,0,8,413,1,0,0,0, + 10,415,1,0,0,0,12,454,1,0,0,0,14,476,1,0,0,0,16,531,1,0,0,0,18,551, + 1,0,0,0,20,565,1,0,0,0,22,569,1,0,0,0,24,631,1,0,0,0,26,679,1,0, + 0,0,28,681,1,0,0,0,30,689,1,0,0,0,32,709,1,0,0,0,34,729,1,0,0,0, + 36,736,1,0,0,0,38,745,1,0,0,0,40,753,1,0,0,0,42,775,1,0,0,0,44,785, + 1,0,0,0,46,803,1,0,0,0,48,824,1,0,0,0,50,845,1,0,0,0,52,851,1,0, + 0,0,54,868,1,0,0,0,56,877,1,0,0,0,58,884,1,0,0,0,60,892,1,0,0,0, + 62,899,1,0,0,0,64,906,1,0,0,0,66,915,1,0,0,0,68,926,1,0,0,0,70,928, + 1,0,0,0,72,948,1,0,0,0,74,965,1,0,0,0,76,967,1,0,0,0,78,976,1,0, + 0,0,80,983,1,0,0,0,82,992,1,0,0,0,84,1002,1,0,0,0,86,1025,1,0,0, + 0,88,1031,1,0,0,0,90,1033,1,0,0,0,92,1040,1,0,0,0,94,1052,1,0,0, + 0,96,1054,1,0,0,0,98,1061,1,0,0,0,100,1082,1,0,0,0,102,1111,1,0, + 0,0,104,1113,1,0,0,0,106,1122,1,0,0,0,108,1145,1,0,0,0,110,1164, + 1,0,0,0,112,1187,1,0,0,0,114,1189,1,0,0,0,116,1204,1,0,0,0,118,1223, + 1,0,0,0,120,1245,1,0,0,0,122,1250,1,0,0,0,124,1255,1,0,0,0,126,1260, + 1,0,0,0,128,1265,1,0,0,0,130,1272,1,0,0,0,132,1287,1,0,0,0,134,1293, + 1,0,0,0,136,1313,1,0,0,0,138,1315,1,0,0,0,140,1326,1,0,0,0,142,1337, + 1,0,0,0,144,1351,1,0,0,0,146,1353,1,0,0,0,148,1362,1,0,0,0,150,1371, + 1,0,0,0,152,1380,1,0,0,0,154,1383,1,0,0,0,156,1391,1,0,0,0,158,1407, + 1,0,0,0,160,1411,1,0,0,0,162,1435,1,0,0,0,164,1437,1,0,0,0,166,1453, + 1,0,0,0,168,1456,1,0,0,0,170,1460,1,0,0,0,172,1463,1,0,0,0,174,1467, + 1,0,0,0,176,1469,1,0,0,0,178,1471,1,0,0,0,180,1473,1,0,0,0,182,1475, + 1,0,0,0,184,1477,1,0,0,0,186,1479,1,0,0,0,188,1487,1,0,0,0,190,1497, + 1,0,0,0,192,1501,1,0,0,0,194,1505,1,0,0,0,196,1510,1,0,0,0,198,1551, + 1,0,0,0,200,1559,1,0,0,0,202,1563,1,0,0,0,204,1583,1,0,0,0,206,1587, + 1,0,0,0,208,1596,1,0,0,0,210,1626,1,0,0,0,212,1641,1,0,0,0,214,1647, + 1,0,0,0,216,1653,1,0,0,0,218,1655,1,0,0,0,220,1674,1,0,0,0,222,1684, + 1,0,0,0,224,1704,1,0,0,0,226,1714,1,0,0,0,228,1716,1,0,0,0,230,1718, + 1,0,0,0,232,1733,1,0,0,0,234,1735,1,0,0,0,236,1742,1,0,0,0,238,1774, + 1,0,0,0,240,1786,1,0,0,0,242,1793,1,0,0,0,244,1803,1,0,0,0,246,1805, + 1,0,0,0,248,1811,1,0,0,0,250,1822,1,0,0,0,252,1833,1,0,0,0,254,1841, + 1,0,0,0,256,1859,1,0,0,0,258,1864,1,0,0,0,260,1885,1,0,0,0,262,1921, + 1,0,0,0,264,1923,1,0,0,0,266,1931,1,0,0,0,268,1971,1,0,0,0,270,1981, + 1,0,0,0,272,1996,1,0,0,0,274,1998,1,0,0,0,276,2005,1,0,0,0,278,2019, + 1,0,0,0,280,2021,1,0,0,0,282,2071,1,0,0,0,284,2087,1,0,0,0,286,2089, + 1,0,0,0,288,2104,1,0,0,0,290,2106,1,0,0,0,292,2116,1,0,0,0,294,2134, + 1,0,0,0,296,2136,1,0,0,0,298,2140,1,0,0,0,300,2155,1,0,0,0,302,2161, + 1,0,0,0,304,2163,1,0,0,0,306,2172,1,0,0,0,308,2243,1,0,0,0,310,2249, + 1,0,0,0,312,2511,1,0,0,0,314,2532,1,0,0,0,316,2534,1,0,0,0,318,2536, + 1,0,0,0,320,2538,1,0,0,0,322,2554,1,0,0,0,324,2556,1,0,0,0,326,2558, + 1,0,0,0,328,2605,1,0,0,0,330,2614,1,0,0,0,332,2618,1,0,0,0,334,2624, + 1,0,0,0,336,2626,1,0,0,0,338,2631,1,0,0,0,340,2637,1,0,0,0,342,2684, + 1,0,0,0,344,2695,1,0,0,0,346,2702,1,0,0,0,348,2704,1,0,0,0,350,2725, + 1,0,0,0,352,2727,1,0,0,0,354,2729,1,0,0,0,356,2743,1,0,0,0,358,2750, + 1,0,0,0,360,2764,1,0,0,0,362,2766,1,0,0,0,364,2768,1,0,0,0,366,368, + 3,2,1,0,367,366,1,0,0,0,368,371,1,0,0,0,369,367,1,0,0,0,369,370, + 1,0,0,0,370,372,1,0,0,0,371,369,1,0,0,0,372,373,5,0,0,1,373,1,1, + 0,0,0,374,376,3,4,2,0,375,377,5,262,0,0,376,375,1,0,0,0,376,377, + 1,0,0,0,377,3,1,0,0,0,378,401,3,204,102,0,379,401,3,6,3,0,380,401, + 3,8,4,0,381,401,3,26,13,0,382,401,3,64,32,0,383,401,3,66,33,0,384, + 401,3,68,34,0,385,401,3,74,37,0,386,401,3,88,44,0,387,401,3,94,47, + 0,388,401,3,100,50,0,389,401,3,102,51,0,390,401,3,108,54,0,391,401, + 3,110,55,0,392,401,3,112,56,0,393,401,3,144,72,0,394,401,3,152,76, + 0,395,401,3,154,77,0,396,401,3,156,78,0,397,401,3,158,79,0,398,401, + 3,160,80,0,399,401,3,162,81,0,400,378,1,0,0,0,400,379,1,0,0,0,400, + 380,1,0,0,0,400,381,1,0,0,0,400,382,1,0,0,0,400,383,1,0,0,0,400, + 384,1,0,0,0,400,385,1,0,0,0,400,386,1,0,0,0,400,387,1,0,0,0,400, + 388,1,0,0,0,400,389,1,0,0,0,400,390,1,0,0,0,400,391,1,0,0,0,400, + 392,1,0,0,0,400,393,1,0,0,0,400,394,1,0,0,0,400,395,1,0,0,0,400, + 396,1,0,0,0,400,397,1,0,0,0,400,398,1,0,0,0,400,399,1,0,0,0,401, + 5,1,0,0,0,402,403,5,203,0,0,403,404,3,184,92,0,404,7,1,0,0,0,405, + 414,3,18,9,0,406,414,3,20,10,0,407,414,3,22,11,0,408,414,3,24,12, + 0,409,414,3,16,8,0,410,414,3,14,7,0,411,414,3,12,6,0,412,414,3,10, + 5,0,413,405,1,0,0,0,413,406,1,0,0,0,413,407,1,0,0,0,413,408,1,0, + 0,0,413,409,1,0,0,0,413,410,1,0,0,0,413,411,1,0,0,0,413,412,1,0, + 0,0,414,9,1,0,0,0,415,417,5,37,0,0,416,418,5,19,0,0,417,416,1,0, + 0,0,417,418,1,0,0,0,418,419,1,0,0,0,419,421,5,188,0,0,420,422,3, + 172,86,0,421,420,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0,423,439, + 3,174,87,0,424,425,5,265,0,0,425,430,3,214,107,0,426,427,5,263,0, + 0,427,429,3,214,107,0,428,426,1,0,0,0,429,432,1,0,0,0,430,428,1, + 0,0,0,430,431,1,0,0,0,431,435,1,0,0,0,432,430,1,0,0,0,433,434,5, + 263,0,0,434,436,3,208,104,0,435,433,1,0,0,0,435,436,1,0,0,0,436, + 437,1,0,0,0,437,438,5,266,0,0,438,440,1,0,0,0,439,424,1,0,0,0,439, + 440,1,0,0,0,440,447,1,0,0,0,441,442,5,17,0,0,442,445,5,26,0,0,443, + 446,3,292,146,0,444,446,3,250,125,0,445,443,1,0,0,0,445,444,1,0, + 0,0,446,448,1,0,0,0,447,441,1,0,0,0,447,448,1,0,0,0,448,449,1,0, + 0,0,449,452,3,196,98,0,450,451,5,9,0,0,451,453,3,204,102,0,452,450, + 1,0,0,0,452,453,1,0,0,0,453,11,1,0,0,0,454,456,5,37,0,0,455,457, + 5,19,0,0,456,455,1,0,0,0,456,457,1,0,0,0,457,458,1,0,0,0,458,460, + 5,188,0,0,459,461,3,172,86,0,460,459,1,0,0,0,460,461,1,0,0,0,461, + 462,1,0,0,0,462,463,3,174,87,0,463,467,5,115,0,0,464,468,3,186,93, + 0,465,466,5,147,0,0,466,468,3,314,157,0,467,464,1,0,0,0,467,465, + 1,0,0,0,468,472,1,0,0,0,469,470,5,17,0,0,470,471,5,26,0,0,471,473, + 3,250,125,0,472,469,1,0,0,0,472,473,1,0,0,0,473,474,1,0,0,0,474, + 475,3,196,98,0,475,13,1,0,0,0,476,478,5,37,0,0,477,479,5,19,0,0, + 478,477,1,0,0,0,478,479,1,0,0,0,479,480,1,0,0,0,480,482,5,188,0, + 0,481,483,3,172,86,0,482,481,1,0,0,0,482,483,1,0,0,0,483,484,1,0, + 0,0,484,502,3,174,87,0,485,486,5,265,0,0,486,491,3,216,108,0,487, + 488,5,263,0,0,488,490,3,216,108,0,489,487,1,0,0,0,490,493,1,0,0, + 0,491,489,1,0,0,0,491,492,1,0,0,0,492,498,1,0,0,0,493,491,1,0,0, + 0,494,495,5,263,0,0,495,496,5,150,0,0,496,497,5,110,0,0,497,499, + 3,292,146,0,498,494,1,0,0,0,498,499,1,0,0,0,499,500,1,0,0,0,500, + 501,5,266,0,0,501,503,1,0,0,0,502,485,1,0,0,0,502,503,1,0,0,0,503, + 509,1,0,0,0,504,505,5,150,0,0,505,507,5,110,0,0,506,508,3,292,146, + 0,507,506,1,0,0,0,507,508,1,0,0,0,508,510,1,0,0,0,509,504,1,0,0, + 0,509,510,1,0,0,0,510,514,1,0,0,0,511,512,5,145,0,0,512,513,5,26, + 0,0,513,515,3,232,116,0,514,511,1,0,0,0,514,515,1,0,0,0,515,518, + 1,0,0,0,516,517,5,34,0,0,517,519,3,314,157,0,518,516,1,0,0,0,518, + 519,1,0,0,0,519,520,1,0,0,0,520,521,5,23,0,0,521,522,5,9,0,0,522, + 525,5,111,0,0,523,524,5,25,0,0,524,526,3,248,124,0,525,523,1,0,0, + 0,525,526,1,0,0,0,526,529,1,0,0,0,527,528,5,9,0,0,528,530,3,204, + 102,0,529,527,1,0,0,0,529,530,1,0,0,0,530,15,1,0,0,0,531,532,5,37, + 0,0,532,534,5,212,0,0,533,535,3,172,86,0,534,533,1,0,0,0,534,535, + 1,0,0,0,535,536,1,0,0,0,536,538,3,178,89,0,537,539,3,202,101,0,538, + 537,1,0,0,0,538,539,1,0,0,0,539,542,1,0,0,0,540,541,5,34,0,0,541, + 543,3,314,157,0,542,540,1,0,0,0,542,543,1,0,0,0,543,546,1,0,0,0, + 544,545,5,25,0,0,545,547,3,248,124,0,546,544,1,0,0,0,546,547,1,0, + 0,0,547,548,1,0,0,0,548,549,5,9,0,0,549,550,3,204,102,0,550,17,1, + 0,0,0,551,552,5,37,0,0,552,554,7,0,0,0,553,555,3,172,86,0,554,553, + 1,0,0,0,554,555,1,0,0,0,555,556,1,0,0,0,556,559,3,176,88,0,557,558, + 5,34,0,0,558,560,3,314,157,0,559,557,1,0,0,0,559,560,1,0,0,0,560, + 563,1,0,0,0,561,562,5,24,0,0,562,564,3,314,157,0,563,561,1,0,0,0, + 563,564,1,0,0,0,564,19,1,0,0,0,565,566,5,37,0,0,566,567,5,166,0, + 0,567,568,3,358,179,0,568,21,1,0,0,0,569,571,5,37,0,0,570,572,5, + 12,0,0,571,570,1,0,0,0,571,572,1,0,0,0,572,573,1,0,0,0,573,575,5, + 84,0,0,574,576,3,172,86,0,575,574,1,0,0,0,575,576,1,0,0,0,576,577, + 1,0,0,0,577,590,3,180,90,0,578,587,5,265,0,0,579,584,3,328,164,0, + 580,581,5,263,0,0,581,583,3,328,164,0,582,580,1,0,0,0,583,586,1, + 0,0,0,584,582,1,0,0,0,584,585,1,0,0,0,585,588,1,0,0,0,586,584,1, + 0,0,0,587,579,1,0,0,0,587,588,1,0,0,0,588,589,1,0,0,0,589,591,5, + 266,0,0,590,578,1,0,0,0,590,591,1,0,0,0,591,592,1,0,0,0,592,593, + 5,160,0,0,593,596,3,328,164,0,594,595,5,102,0,0,595,597,3,328,164, + 0,596,594,1,0,0,0,596,597,1,0,0,0,597,598,1,0,0,0,598,599,5,24,0, + 0,599,603,5,274,0,0,600,601,5,104,0,0,601,602,5,249,0,0,602,604, + 5,274,0,0,603,600,1,0,0,0,603,604,1,0,0,0,604,605,1,0,0,0,605,606, + 5,206,0,0,606,607,5,249,0,0,607,608,5,274,0,0,608,609,5,126,0,0, + 609,610,5,249,0,0,610,614,5,274,0,0,611,612,5,18,0,0,612,613,5,249, + 0,0,613,615,5,274,0,0,614,611,1,0,0,0,614,615,1,0,0,0,615,619,1, + 0,0,0,616,617,5,20,0,0,617,618,5,249,0,0,618,620,5,274,0,0,619,616, + 1,0,0,0,619,620,1,0,0,0,620,624,1,0,0,0,621,622,5,187,0,0,622,623, + 5,249,0,0,623,625,5,274,0,0,624,621,1,0,0,0,624,625,1,0,0,0,625, + 629,1,0,0,0,626,627,5,76,0,0,627,628,5,249,0,0,628,630,5,274,0,0, + 629,626,1,0,0,0,629,630,1,0,0,0,630,23,1,0,0,0,631,632,5,37,0,0, + 632,634,5,84,0,0,633,635,3,172,86,0,634,633,1,0,0,0,634,635,1,0, + 0,0,635,636,1,0,0,0,636,649,3,180,90,0,637,646,5,265,0,0,638,643, + 3,328,164,0,639,640,5,263,0,0,640,642,3,328,164,0,641,639,1,0,0, + 0,642,645,1,0,0,0,643,641,1,0,0,0,643,644,1,0,0,0,644,647,1,0,0, + 0,645,643,1,0,0,0,646,638,1,0,0,0,646,647,1,0,0,0,647,648,1,0,0, + 0,648,650,5,266,0,0,649,637,1,0,0,0,649,650,1,0,0,0,650,653,1,0, + 0,0,651,652,5,160,0,0,652,654,3,328,164,0,653,651,1,0,0,0,653,654, + 1,0,0,0,654,655,1,0,0,0,655,656,5,24,0,0,656,657,5,274,0,0,657,658, + 5,186,0,0,658,659,5,249,0,0,659,660,3,314,157,0,660,25,1,0,0,0,661, + 680,3,28,14,0,662,680,3,62,31,0,663,680,3,60,30,0,664,680,3,58,29, + 0,665,680,3,54,27,0,666,680,3,56,28,0,667,680,3,52,26,0,668,680, + 3,48,24,0,669,680,3,50,25,0,670,680,3,46,23,0,671,680,3,44,22,0, + 672,680,3,42,21,0,673,680,3,40,20,0,674,680,3,34,17,0,675,680,3, + 30,15,0,676,680,3,32,16,0,677,680,3,36,18,0,678,680,3,38,19,0,679, + 661,1,0,0,0,679,662,1,0,0,0,679,663,1,0,0,0,679,664,1,0,0,0,679, + 665,1,0,0,0,679,666,1,0,0,0,679,667,1,0,0,0,679,668,1,0,0,0,679, + 669,1,0,0,0,679,670,1,0,0,0,679,671,1,0,0,0,679,672,1,0,0,0,679, + 673,1,0,0,0,679,674,1,0,0,0,679,675,1,0,0,0,679,676,1,0,0,0,679, + 677,1,0,0,0,679,678,1,0,0,0,680,27,1,0,0,0,681,682,5,4,0,0,682,683, + 5,46,0,0,683,684,3,184,92,0,684,685,5,176,0,0,685,686,5,142,0,0, + 686,687,7,1,0,0,687,688,3,358,179,0,688,29,1,0,0,0,689,690,5,4,0, + 0,690,691,5,188,0,0,691,692,3,186,93,0,692,693,5,176,0,0,693,694, + 5,32,0,0,694,695,5,182,0,0,695,696,3,192,96,0,696,697,5,265,0,0, + 697,698,3,228,114,0,698,699,5,249,0,0,699,705,3,314,157,0,700,701, + 5,263,0,0,701,702,3,228,114,0,702,703,5,249,0,0,703,704,3,314,157, + 0,704,706,1,0,0,0,705,700,1,0,0,0,705,706,1,0,0,0,706,707,1,0,0, + 0,707,708,5,266,0,0,708,31,1,0,0,0,709,710,5,4,0,0,710,711,5,188, + 0,0,711,714,3,186,93,0,712,713,5,145,0,0,713,715,3,304,152,0,714, + 712,1,0,0,0,714,715,1,0,0,0,715,716,1,0,0,0,716,727,5,176,0,0,717, + 718,5,30,0,0,718,719,5,94,0,0,719,724,3,314,157,0,720,721,5,216, + 0,0,721,722,5,151,0,0,722,723,5,249,0,0,723,725,3,360,180,0,724, + 720,1,0,0,0,724,725,1,0,0,0,725,728,1,0,0,0,726,728,5,197,0,0,727, + 717,1,0,0,0,727,726,1,0,0,0,728,33,1,0,0,0,729,730,5,4,0,0,730,731, + 5,188,0,0,731,732,3,186,93,0,732,733,5,31,0,0,733,734,3,192,96,0, + 734,735,3,220,110,0,735,35,1,0,0,0,736,737,5,4,0,0,737,738,5,188, + 0,0,738,739,3,186,93,0,739,741,5,58,0,0,740,742,5,32,0,0,741,740, + 1,0,0,0,741,742,1,0,0,0,742,743,1,0,0,0,743,744,3,192,96,0,744,37, + 1,0,0,0,745,746,5,4,0,0,746,747,5,188,0,0,747,748,3,186,93,0,748, + 749,5,176,0,0,749,750,5,142,0,0,750,751,7,1,0,0,751,752,3,358,179, + 0,752,39,1,0,0,0,753,754,5,4,0,0,754,755,5,188,0,0,755,761,3,186, + 93,0,756,762,5,158,0,0,757,759,5,1,0,0,758,760,3,172,86,0,759,758, + 1,0,0,0,759,760,1,0,0,0,760,762,1,0,0,0,761,756,1,0,0,0,761,757, + 1,0,0,0,762,763,1,0,0,0,763,764,5,33,0,0,764,765,5,265,0,0,765,770, + 3,220,110,0,766,767,5,263,0,0,767,769,3,220,110,0,768,766,1,0,0, + 0,769,772,1,0,0,0,770,771,1,0,0,0,770,768,1,0,0,0,771,773,1,0,0, + 0,772,770,1,0,0,0,773,774,5,266,0,0,774,41,1,0,0,0,775,776,5,4,0, + 0,776,777,5,188,0,0,777,778,3,186,93,0,778,779,5,1,0,0,779,781,5, + 32,0,0,780,782,3,172,86,0,781,780,1,0,0,0,781,782,1,0,0,0,782,783, + 1,0,0,0,783,784,3,222,111,0,784,43,1,0,0,0,785,786,5,4,0,0,786,787, + 5,188,0,0,787,788,3,186,93,0,788,790,5,4,0,0,789,791,5,32,0,0,790, + 789,1,0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,801,3,192,96,0,793, + 797,5,176,0,0,794,798,3,226,113,0,795,796,5,34,0,0,796,798,3,314, + 157,0,797,794,1,0,0,0,797,795,1,0,0,0,798,802,1,0,0,0,799,800,5, + 58,0,0,800,802,5,51,0,0,801,793,1,0,0,0,801,799,1,0,0,0,802,45,1, + 0,0,0,803,804,5,4,0,0,804,805,5,188,0,0,805,806,3,186,93,0,806,808, + 5,1,0,0,807,809,3,172,86,0,808,807,1,0,0,0,808,809,1,0,0,0,809,822, + 1,0,0,0,810,811,5,145,0,0,811,814,3,304,152,0,812,813,5,24,0,0,813, + 815,3,314,157,0,814,812,1,0,0,0,814,815,1,0,0,0,815,817,1,0,0,0, + 816,818,3,240,120,0,817,816,1,0,0,0,817,818,1,0,0,0,818,823,1,0, + 0,0,819,820,5,154,0,0,820,821,5,145,0,0,821,823,3,238,119,0,822, + 810,1,0,0,0,822,819,1,0,0,0,823,47,1,0,0,0,824,825,5,4,0,0,825,826, + 5,188,0,0,826,829,3,186,93,0,827,828,5,145,0,0,828,830,3,304,152, + 0,829,827,1,0,0,0,829,830,1,0,0,0,830,831,1,0,0,0,831,843,5,176, + 0,0,832,833,5,72,0,0,833,844,3,230,115,0,834,835,5,168,0,0,835,836, + 5,79,0,0,836,844,3,254,127,0,837,838,5,24,0,0,838,844,3,314,157, + 0,839,840,5,25,0,0,840,844,3,248,124,0,841,842,5,175,0,0,842,844, + 3,248,124,0,843,832,1,0,0,0,843,834,1,0,0,0,843,837,1,0,0,0,843, + 839,1,0,0,0,843,841,1,0,0,0,844,49,1,0,0,0,845,846,5,4,0,0,846,847, + 5,188,0,0,847,848,3,186,93,0,848,849,5,155,0,0,849,850,5,146,0,0, + 850,51,1,0,0,0,851,852,5,4,0,0,852,853,5,188,0,0,853,854,3,186,93, + 0,854,856,5,58,0,0,855,857,3,170,85,0,856,855,1,0,0,0,856,857,1, + 0,0,0,857,866,1,0,0,0,858,859,5,145,0,0,859,861,3,304,152,0,860, + 862,5,22,0,0,861,860,1,0,0,0,861,862,1,0,0,0,862,867,1,0,0,0,863, + 864,5,154,0,0,864,865,5,145,0,0,865,867,3,238,119,0,866,858,1,0, + 0,0,866,863,1,0,0,0,867,53,1,0,0,0,868,869,5,4,0,0,869,870,5,212, + 0,0,870,872,3,188,94,0,871,873,3,202,101,0,872,871,1,0,0,0,872,873, + 1,0,0,0,873,874,1,0,0,0,874,875,5,9,0,0,875,876,3,204,102,0,876, + 55,1,0,0,0,877,878,5,4,0,0,878,879,5,212,0,0,879,880,3,188,94,0, + 880,881,5,156,0,0,881,882,5,193,0,0,882,883,3,188,94,0,883,57,1, + 0,0,0,884,885,5,4,0,0,885,886,5,212,0,0,886,887,3,188,94,0,887,888, + 5,176,0,0,888,889,5,142,0,0,889,890,7,1,0,0,890,891,3,354,177,0, + 891,59,1,0,0,0,892,893,5,4,0,0,893,894,5,188,0,0,894,895,3,186,93, + 0,895,896,5,156,0,0,896,897,5,193,0,0,897,898,3,186,93,0,898,61, + 1,0,0,0,899,900,5,4,0,0,900,901,5,212,0,0,901,902,3,188,94,0,902, + 903,7,2,0,0,903,904,5,25,0,0,904,905,3,248,124,0,905,63,1,0,0,0, + 906,908,5,196,0,0,907,909,5,188,0,0,908,907,1,0,0,0,908,909,1,0, + 0,0,909,911,1,0,0,0,910,912,3,170,85,0,911,910,1,0,0,0,911,912,1, + 0,0,0,912,913,1,0,0,0,913,914,3,186,93,0,914,65,1,0,0,0,915,917, + 5,56,0,0,916,918,5,46,0,0,917,916,1,0,0,0,917,918,1,0,0,0,918,920, + 1,0,0,0,919,921,7,3,0,0,920,919,1,0,0,0,920,921,1,0,0,0,921,922, + 1,0,0,0,922,923,3,354,177,0,923,67,1,0,0,0,924,927,3,70,35,0,925, + 927,3,72,36,0,926,924,1,0,0,0,926,925,1,0,0,0,927,69,1,0,0,0,928, + 929,5,36,0,0,929,930,5,182,0,0,930,932,3,186,93,0,931,933,3,292, + 146,0,932,931,1,0,0,0,932,933,1,0,0,0,933,946,1,0,0,0,934,935,5, + 190,0,0,935,936,5,185,0,0,936,937,5,265,0,0,937,938,3,360,180,0, + 938,944,5,266,0,0,939,940,5,157,0,0,940,941,5,265,0,0,941,942,3, + 360,180,0,942,943,5,266,0,0,943,945,1,0,0,0,944,939,1,0,0,0,944, + 945,1,0,0,0,945,947,1,0,0,0,946,934,1,0,0,0,946,947,1,0,0,0,947, + 71,1,0,0,0,948,949,5,36,0,0,949,950,5,96,0,0,950,951,5,182,0,0,951, + 957,3,186,93,0,952,953,5,145,0,0,953,954,5,265,0,0,954,955,3,304, + 152,0,955,956,5,266,0,0,956,958,1,0,0,0,957,952,1,0,0,0,957,958, + 1,0,0,0,958,73,1,0,0,0,959,966,3,86,43,0,960,966,3,84,42,0,961,966, + 3,82,41,0,962,966,3,78,39,0,963,966,3,80,40,0,964,966,3,76,38,0, + 965,959,1,0,0,0,965,960,1,0,0,0,965,961,1,0,0,0,965,962,1,0,0,0, + 965,963,1,0,0,0,965,964,1,0,0,0,966,75,1,0,0,0,967,968,5,58,0,0, + 968,970,7,0,0,0,969,971,3,170,85,0,970,969,1,0,0,0,970,971,1,0,0, + 0,971,972,1,0,0,0,972,974,3,184,92,0,973,975,7,4,0,0,974,973,1,0, + 0,0,974,975,1,0,0,0,975,77,1,0,0,0,976,977,5,58,0,0,977,979,5,212, + 0,0,978,980,3,170,85,0,979,978,1,0,0,0,979,980,1,0,0,0,980,981,1, + 0,0,0,981,982,3,188,94,0,982,79,1,0,0,0,983,984,5,58,0,0,984,986, + 5,188,0,0,985,987,3,170,85,0,986,985,1,0,0,0,986,987,1,0,0,0,987, + 988,1,0,0,0,988,990,3,186,93,0,989,991,5,22,0,0,990,989,1,0,0,0, + 990,991,1,0,0,0,991,81,1,0,0,0,992,994,5,58,0,0,993,995,5,96,0,0, + 994,993,1,0,0,0,994,995,1,0,0,0,995,996,1,0,0,0,996,997,5,182,0, + 0,997,1000,3,186,93,0,998,999,5,145,0,0,999,1001,3,304,152,0,1000, + 998,1,0,0,0,1000,1001,1,0,0,0,1001,83,1,0,0,0,1002,1004,5,58,0,0, + 1003,1005,5,12,0,0,1004,1003,1,0,0,0,1004,1005,1,0,0,0,1005,1006, + 1,0,0,0,1006,1008,5,84,0,0,1007,1009,3,170,85,0,1008,1007,1,0,0, + 0,1008,1009,1,0,0,0,1009,1010,1,0,0,0,1010,1023,3,190,95,0,1011, + 1020,5,265,0,0,1012,1017,3,328,164,0,1013,1014,5,263,0,0,1014,1016, + 3,328,164,0,1015,1013,1,0,0,0,1016,1019,1,0,0,0,1017,1015,1,0,0, + 0,1017,1018,1,0,0,0,1018,1021,1,0,0,0,1019,1017,1,0,0,0,1020,1012, + 1,0,0,0,1020,1021,1,0,0,0,1021,1022,1,0,0,0,1022,1024,5,266,0,0, + 1023,1011,1,0,0,0,1023,1024,1,0,0,0,1024,85,1,0,0,0,1025,1026,5, + 58,0,0,1026,1027,5,166,0,0,1027,1028,3,358,179,0,1028,87,1,0,0,0, + 1029,1032,3,90,45,0,1030,1032,3,92,46,0,1031,1029,1,0,0,0,1031,1030, + 1,0,0,0,1032,89,1,0,0,0,1033,1034,5,86,0,0,1034,1035,5,166,0,0,1035, + 1036,3,358,179,0,1036,1037,5,193,0,0,1037,1038,5,87,0,0,1038,1039, + 3,358,179,0,1039,91,1,0,0,0,1040,1041,5,86,0,0,1041,1042,3,350,175, + 0,1042,1043,5,136,0,0,1043,1045,3,352,176,0,1044,1046,3,354,177, + 0,1045,1044,1,0,0,0,1045,1046,1,0,0,0,1046,1047,1,0,0,0,1047,1048, + 5,193,0,0,1048,1049,3,356,178,0,1049,93,1,0,0,0,1050,1053,3,96,48, + 0,1051,1053,3,98,49,0,1052,1050,1,0,0,0,1052,1051,1,0,0,0,1053,95, + 1,0,0,0,1054,1055,5,161,0,0,1055,1056,5,166,0,0,1056,1057,3,358, + 179,0,1057,1058,5,82,0,0,1058,1059,5,87,0,0,1059,1060,3,358,179, + 0,1060,97,1,0,0,0,1061,1065,5,161,0,0,1062,1063,5,86,0,0,1063,1064, + 5,137,0,0,1064,1066,5,78,0,0,1065,1062,1,0,0,0,1065,1066,1,0,0,0, + 1066,1067,1,0,0,0,1067,1068,3,350,175,0,1068,1069,5,136,0,0,1069, + 1071,3,352,176,0,1070,1072,3,354,177,0,1071,1070,1,0,0,0,1071,1072, + 1,0,0,0,1072,1073,1,0,0,0,1073,1079,5,82,0,0,1074,1080,3,356,178, + 0,1075,1077,5,166,0,0,1076,1075,1,0,0,0,1076,1077,1,0,0,0,1077,1078, + 1,0,0,0,1078,1080,3,358,179,0,1079,1074,1,0,0,0,1079,1076,1,0,0, + 0,1080,99,1,0,0,0,1081,1083,3,206,103,0,1082,1081,1,0,0,0,1082,1083, + 1,0,0,0,1083,1084,1,0,0,0,1084,1085,5,99,0,0,1085,1087,7,5,0,0,1086, + 1088,5,188,0,0,1087,1086,1,0,0,0,1087,1088,1,0,0,0,1088,1089,1,0, + 0,0,1089,1091,3,186,93,0,1090,1092,3,292,146,0,1091,1090,1,0,0,0, + 1091,1092,1,0,0,0,1092,1105,1,0,0,0,1093,1094,5,145,0,0,1094,1095, + 5,265,0,0,1095,1100,3,304,152,0,1096,1097,5,263,0,0,1097,1099,3, + 304,152,0,1098,1096,1,0,0,0,1099,1102,1,0,0,0,1100,1098,1,0,0,0, + 1100,1101,1,0,0,0,1101,1103,1,0,0,0,1102,1100,1,0,0,0,1103,1104, + 5,266,0,0,1104,1106,1,0,0,0,1105,1093,1,0,0,0,1105,1106,1,0,0,0, + 1106,1107,1,0,0,0,1107,1108,3,204,102,0,1108,101,1,0,0,0,1109,1112, + 3,104,52,0,1110,1112,3,106,53,0,1111,1109,1,0,0,0,1111,1110,1,0, + 0,0,1112,103,1,0,0,0,1113,1115,5,50,0,0,1114,1116,5,82,0,0,1115, + 1114,1,0,0,0,1115,1116,1,0,0,0,1116,1117,1,0,0,0,1117,1120,3,186, + 93,0,1118,1119,5,215,0,0,1119,1121,3,306,153,0,1120,1118,1,0,0,0, + 1120,1121,1,0,0,0,1121,105,1,0,0,0,1122,1123,5,50,0,0,1123,1128, + 3,186,93,0,1124,1126,5,9,0,0,1125,1124,1,0,0,0,1125,1126,1,0,0,0, + 1126,1127,1,0,0,0,1127,1129,3,358,179,0,1128,1125,1,0,0,0,1128,1129, + 1,0,0,0,1129,1130,1,0,0,0,1130,1139,5,82,0,0,1131,1136,3,280,140, + 0,1132,1133,5,263,0,0,1133,1135,3,280,140,0,1134,1132,1,0,0,0,1135, + 1138,1,0,0,0,1136,1134,1,0,0,0,1136,1137,1,0,0,0,1137,1140,1,0,0, + 0,1138,1136,1,0,0,0,1139,1131,1,0,0,0,1139,1140,1,0,0,0,1140,1143, + 1,0,0,0,1141,1142,5,215,0,0,1142,1144,3,306,153,0,1143,1141,1,0, + 0,0,1143,1144,1,0,0,0,1144,107,1,0,0,0,1145,1146,5,54,0,0,1146,1147, + 3,186,93,0,1147,1148,5,176,0,0,1148,1158,3,198,99,0,1149,1150,5, + 82,0,0,1150,1155,3,280,140,0,1151,1152,5,263,0,0,1152,1154,3,280, + 140,0,1153,1151,1,0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155, + 1156,1,0,0,0,1156,1159,1,0,0,0,1157,1155,1,0,0,0,1158,1149,1,0,0, + 0,1158,1159,1,0,0,0,1159,1162,1,0,0,0,1160,1161,5,215,0,0,1161,1163, + 3,306,153,0,1162,1160,1,0,0,0,1162,1163,1,0,0,0,1163,109,1,0,0,0, + 1164,1165,5,207,0,0,1165,1167,5,103,0,0,1166,1168,5,188,0,0,1167, + 1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169,1,0,0,0,1169,1171,3,186, + 93,0,1170,1172,3,292,146,0,1171,1170,1,0,0,0,1171,1172,1,0,0,0,1172, + 1173,1,0,0,0,1173,1174,3,204,102,0,1174,111,1,0,0,0,1175,1188,3, + 132,66,0,1176,1188,3,134,67,0,1177,1188,3,136,68,0,1178,1188,3,130, + 65,0,1179,1188,3,128,64,0,1180,1188,3,126,63,0,1181,1188,3,124,62, + 0,1182,1188,3,122,61,0,1183,1188,3,120,60,0,1184,1188,3,118,59,0, + 1185,1188,3,116,58,0,1186,1188,3,114,57,0,1187,1175,1,0,0,0,1187, + 1176,1,0,0,0,1187,1177,1,0,0,0,1187,1178,1,0,0,0,1187,1179,1,0,0, + 0,1187,1180,1,0,0,0,1187,1181,1,0,0,0,1187,1182,1,0,0,0,1187,1183, + 1,0,0,0,1187,1184,1,0,0,0,1187,1185,1,0,0,0,1187,1186,1,0,0,0,1188, + 113,1,0,0,0,1189,1190,5,179,0,0,1190,1202,7,6,0,0,1191,1193,5,115, + 0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0,1193,1194,1,0,0,0,1194,1199, + 3,314,157,0,1195,1196,5,271,0,0,1196,1198,3,314,157,0,1197,1195, + 1,0,0,0,1198,1201,1,0,0,0,1199,1197,1,0,0,0,1199,1200,1,0,0,0,1200, + 1203,1,0,0,0,1201,1199,1,0,0,0,1202,1192,1,0,0,0,1202,1203,1,0,0, + 0,1203,115,1,0,0,0,1204,1205,5,179,0,0,1205,1208,5,189,0,0,1206, + 1207,5,94,0,0,1207,1209,3,186,93,0,1208,1206,1,0,0,0,1208,1209,1, + 0,0,0,1209,1221,1,0,0,0,1210,1212,5,115,0,0,1211,1210,1,0,0,0,1211, + 1212,1,0,0,0,1212,1213,1,0,0,0,1213,1218,3,314,157,0,1214,1215,5, + 271,0,0,1215,1217,3,314,157,0,1216,1214,1,0,0,0,1217,1220,1,0,0, + 0,1218,1216,1,0,0,0,1218,1219,1,0,0,0,1219,1222,1,0,0,0,1220,1218, + 1,0,0,0,1221,1211,1,0,0,0,1221,1222,1,0,0,0,1222,117,1,0,0,0,1223, + 1225,5,179,0,0,1224,1226,7,7,0,0,1225,1224,1,0,0,0,1225,1226,1,0, + 0,0,1226,1227,1,0,0,0,1227,1230,5,85,0,0,1228,1229,5,94,0,0,1229, + 1231,3,184,92,0,1230,1228,1,0,0,0,1230,1231,1,0,0,0,1231,1243,1, + 0,0,0,1232,1234,5,115,0,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234, + 1235,1,0,0,0,1235,1240,3,314,157,0,1236,1237,5,271,0,0,1237,1239, + 3,314,157,0,1238,1236,1,0,0,0,1239,1242,1,0,0,0,1240,1238,1,0,0, + 0,1240,1241,1,0,0,0,1241,1244,1,0,0,0,1242,1240,1,0,0,0,1243,1233, + 1,0,0,0,1243,1244,1,0,0,0,1244,119,1,0,0,0,1245,1246,5,179,0,0,1246, + 1247,5,37,0,0,1247,1248,5,188,0,0,1248,1249,3,186,93,0,1249,121, + 1,0,0,0,1250,1251,5,179,0,0,1251,1252,5,37,0,0,1252,1253,5,212,0, + 0,1253,1254,3,188,94,0,1254,123,1,0,0,0,1255,1256,5,179,0,0,1256, + 1257,5,188,0,0,1257,1258,5,182,0,0,1258,1259,3,186,93,0,1259,125, + 1,0,0,0,1260,1261,5,179,0,0,1261,1262,5,32,0,0,1262,1263,5,182,0, + 0,1263,1264,3,186,93,0,1264,127,1,0,0,0,1265,1267,5,179,0,0,1266, + 1268,5,154,0,0,1267,1266,1,0,0,0,1267,1268,1,0,0,0,1268,1269,1,0, + 0,0,1269,1270,5,146,0,0,1270,1271,3,186,93,0,1271,129,1,0,0,0,1272, + 1273,5,179,0,0,1273,1274,5,73,0,0,1274,1275,5,94,0,0,1275,1285,3, + 186,93,0,1276,1277,5,145,0,0,1277,1278,5,265,0,0,1278,1281,3,304, + 152,0,1279,1280,5,263,0,0,1280,1282,3,304,152,0,1281,1279,1,0,0, + 0,1281,1282,1,0,0,0,1282,1283,1,0,0,0,1283,1284,5,266,0,0,1284,1286, + 1,0,0,0,1285,1276,1,0,0,0,1285,1286,1,0,0,0,1286,131,1,0,0,0,1287, + 1289,5,179,0,0,1288,1290,5,39,0,0,1289,1288,1,0,0,0,1289,1290,1, + 0,0,0,1290,1291,1,0,0,0,1291,1292,5,167,0,0,1292,133,1,0,0,0,1293, + 1294,5,179,0,0,1294,1295,5,166,0,0,1295,1296,5,86,0,0,1296,1297, + 5,87,0,0,1297,1298,3,358,179,0,1298,135,1,0,0,0,1299,1314,3,138, + 69,0,1300,1314,3,140,70,0,1301,1314,3,142,71,0,1302,1303,5,179,0, + 0,1303,1304,5,86,0,0,1304,1305,7,8,0,0,1305,1311,3,358,179,0,1306, + 1307,5,136,0,0,1307,1309,7,9,0,0,1308,1310,3,354,177,0,1309,1308, + 1,0,0,0,1309,1310,1,0,0,0,1310,1312,1,0,0,0,1311,1306,1,0,0,0,1311, + 1312,1,0,0,0,1312,1314,1,0,0,0,1313,1299,1,0,0,0,1313,1300,1,0,0, + 0,1313,1301,1,0,0,0,1313,1302,1,0,0,0,1314,137,1,0,0,0,1315,1316, + 5,179,0,0,1316,1317,5,86,0,0,1317,1318,7,8,0,0,1318,1324,3,358,179, + 0,1319,1320,5,136,0,0,1320,1322,5,46,0,0,1321,1323,3,184,92,0,1322, + 1321,1,0,0,0,1322,1323,1,0,0,0,1323,1325,1,0,0,0,1324,1319,1,0,0, + 0,1324,1325,1,0,0,0,1325,139,1,0,0,0,1326,1327,5,179,0,0,1327,1328, + 5,86,0,0,1328,1329,7,8,0,0,1329,1335,3,358,179,0,1330,1331,5,136, + 0,0,1331,1333,5,188,0,0,1332,1334,3,186,93,0,1333,1332,1,0,0,0,1333, + 1334,1,0,0,0,1334,1336,1,0,0,0,1335,1330,1,0,0,0,1335,1336,1,0,0, + 0,1336,141,1,0,0,0,1337,1338,5,179,0,0,1338,1339,5,86,0,0,1339,1340, + 7,8,0,0,1340,1346,3,358,179,0,1341,1342,5,136,0,0,1342,1344,5,32, + 0,0,1343,1345,3,192,96,0,1344,1343,1,0,0,0,1344,1345,1,0,0,0,1345, + 1347,1,0,0,0,1346,1341,1,0,0,0,1346,1347,1,0,0,0,1347,143,1,0,0, + 0,1348,1352,3,146,73,0,1349,1352,3,148,74,0,1350,1352,3,150,75,0, + 1351,1348,1,0,0,0,1351,1349,1,0,0,0,1351,1350,1,0,0,0,1352,145,1, + 0,0,0,1353,1354,5,34,0,0,1354,1355,5,136,0,0,1355,1356,5,46,0,0, + 1356,1357,3,184,92,0,1357,1360,5,108,0,0,1358,1361,3,314,157,0,1359, + 1361,5,133,0,0,1360,1358,1,0,0,0,1360,1359,1,0,0,0,1361,147,1,0, + 0,0,1362,1363,5,34,0,0,1363,1364,5,136,0,0,1364,1365,5,188,0,0,1365, + 1366,3,186,93,0,1366,1369,5,108,0,0,1367,1370,3,314,157,0,1368,1370, + 5,133,0,0,1369,1367,1,0,0,0,1369,1368,1,0,0,0,1370,149,1,0,0,0,1371, + 1372,5,34,0,0,1372,1373,5,136,0,0,1373,1374,5,32,0,0,1374,1375,3, + 192,96,0,1375,1378,5,108,0,0,1376,1379,3,314,157,0,1377,1379,5,133, + 0,0,1378,1376,1,0,0,0,1378,1377,1,0,0,0,1379,151,1,0,0,0,1380,1381, + 5,67,0,0,1381,1382,3,4,2,0,1382,153,1,0,0,0,1383,1389,5,176,0,0, + 1384,1390,5,2,0,0,1385,1386,3,358,179,0,1386,1387,5,249,0,0,1387, + 1388,3,304,152,0,1388,1390,1,0,0,0,1389,1384,1,0,0,0,1389,1385,1, + 0,0,0,1389,1390,1,0,0,0,1390,155,1,0,0,0,1391,1392,5,264,0,0,1392, + 1393,5,180,0,0,1393,1403,5,265,0,0,1394,1396,3,314,157,0,1395,1394, + 1,0,0,0,1395,1396,1,0,0,0,1396,1404,1,0,0,0,1397,1400,3,314,157, + 0,1398,1399,5,263,0,0,1399,1401,3,304,152,0,1400,1398,1,0,0,0,1400, + 1401,1,0,0,0,1401,1404,1,0,0,0,1402,1404,3,304,152,0,1403,1395,1, + 0,0,0,1403,1397,1,0,0,0,1403,1402,1,0,0,0,1404,1405,1,0,0,0,1405, + 1406,5,266,0,0,1406,157,1,0,0,0,1407,1408,5,107,0,0,1408,1409,5, + 121,0,0,1409,1410,3,186,93,0,1410,159,1,0,0,0,1411,1412,5,118,0, + 0,1412,1413,5,45,0,0,1413,1414,5,98,0,0,1414,1416,5,274,0,0,1415, + 1417,5,144,0,0,1416,1415,1,0,0,0,1416,1417,1,0,0,0,1417,1418,1,0, + 0,0,1418,1419,5,103,0,0,1419,1420,5,188,0,0,1420,1430,3,186,93,0, + 1421,1422,5,145,0,0,1422,1423,5,265,0,0,1423,1426,3,304,152,0,1424, + 1425,5,263,0,0,1425,1427,3,304,152,0,1426,1424,1,0,0,0,1426,1427, + 1,0,0,0,1427,1428,1,0,0,0,1428,1429,5,266,0,0,1429,1431,1,0,0,0, + 1430,1421,1,0,0,0,1430,1431,1,0,0,0,1431,161,1,0,0,0,1432,1436,3, + 164,82,0,1433,1436,3,166,83,0,1434,1436,3,168,84,0,1435,1432,1,0, + 0,0,1435,1433,1,0,0,0,1435,1434,1,0,0,0,1436,163,1,0,0,0,1437,1438, + 5,162,0,0,1438,1451,3,186,93,0,1439,1440,5,145,0,0,1440,1441,5,265, + 0,0,1441,1446,3,304,152,0,1442,1443,5,263,0,0,1443,1445,3,304,152, + 0,1444,1442,1,0,0,0,1445,1448,1,0,0,0,1446,1447,1,0,0,0,1446,1444, + 1,0,0,0,1447,1449,1,0,0,0,1448,1446,1,0,0,0,1449,1450,5,266,0,0, + 1450,1452,1,0,0,0,1451,1439,1,0,0,0,1451,1452,1,0,0,0,1452,165,1, + 0,0,0,1453,1454,5,162,0,0,1454,1455,5,13,0,0,1455,167,1,0,0,0,1456, + 1457,5,162,0,0,1457,1458,5,85,0,0,1458,1459,3,190,95,0,1459,169, + 1,0,0,0,1460,1461,5,93,0,0,1461,1462,5,66,0,0,1462,171,1,0,0,0,1463, + 1464,5,93,0,0,1464,1465,5,132,0,0,1465,1466,5,66,0,0,1466,173,1, + 0,0,0,1467,1468,3,354,177,0,1468,175,1,0,0,0,1469,1470,3,354,177, + 0,1470,177,1,0,0,0,1471,1472,3,354,177,0,1472,179,1,0,0,0,1473,1474, + 3,354,177,0,1474,181,1,0,0,0,1475,1476,3,354,177,0,1476,183,1,0, + 0,0,1477,1478,3,354,177,0,1478,185,1,0,0,0,1479,1484,3,358,179,0, + 1480,1481,5,261,0,0,1481,1483,3,358,179,0,1482,1480,1,0,0,0,1483, + 1486,1,0,0,0,1484,1482,1,0,0,0,1484,1485,1,0,0,0,1485,187,1,0,0, + 0,1486,1484,1,0,0,0,1487,1492,3,358,179,0,1488,1489,5,261,0,0,1489, + 1491,3,358,179,0,1490,1488,1,0,0,0,1491,1494,1,0,0,0,1492,1490,1, + 0,0,0,1492,1493,1,0,0,0,1493,189,1,0,0,0,1494,1492,1,0,0,0,1495, + 1498,3,362,181,0,1496,1498,3,354,177,0,1497,1495,1,0,0,0,1497,1496, + 1,0,0,0,1498,191,1,0,0,0,1499,1502,3,354,177,0,1500,1502,4,96,0, + 0,1501,1499,1,0,0,0,1501,1500,1,0,0,0,1502,193,1,0,0,0,1503,1506, + 3,186,93,0,1504,1506,3,188,94,0,1505,1503,1,0,0,0,1505,1504,1,0, + 0,0,1506,195,1,0,0,0,1507,1508,5,21,0,0,1508,1509,5,26,0,0,1509, + 1511,3,292,146,0,1510,1507,1,0,0,0,1510,1511,1,0,0,0,1511,1514,1, + 0,0,0,1512,1513,5,34,0,0,1513,1515,3,314,157,0,1514,1512,1,0,0,0, + 1514,1515,1,0,0,0,1515,1519,1,0,0,0,1516,1517,5,168,0,0,1517,1518, + 5,79,0,0,1518,1520,3,254,127,0,1519,1516,1,0,0,0,1519,1520,1,0,0, + 0,1520,1524,1,0,0,0,1521,1522,5,216,0,0,1522,1523,5,175,0,0,1523, + 1525,3,248,124,0,1524,1521,1,0,0,0,1524,1525,1,0,0,0,1525,1529,1, + 0,0,0,1526,1527,5,23,0,0,1527,1528,5,9,0,0,1528,1530,3,230,115,0, + 1529,1526,1,0,0,0,1529,1530,1,0,0,0,1530,1533,1,0,0,0,1531,1532, + 5,24,0,0,1532,1534,3,314,157,0,1533,1531,1,0,0,0,1533,1534,1,0,0, + 0,1534,1545,1,0,0,0,1535,1536,5,30,0,0,1536,1537,5,94,0,0,1537,1542, + 3,354,177,0,1538,1539,5,216,0,0,1539,1540,5,151,0,0,1540,1541,5, + 249,0,0,1541,1543,5,277,0,0,1542,1538,1,0,0,0,1542,1543,1,0,0,0, + 1543,1546,1,0,0,0,1544,1546,5,197,0,0,1545,1535,1,0,0,0,1545,1544, + 1,0,0,0,1545,1546,1,0,0,0,1546,1549,1,0,0,0,1547,1548,5,25,0,0,1548, + 1550,3,248,124,0,1549,1547,1,0,0,0,1549,1550,1,0,0,0,1550,197,1, + 0,0,0,1551,1556,3,200,100,0,1552,1553,5,263,0,0,1553,1555,3,200, + 100,0,1554,1552,1,0,0,0,1555,1558,1,0,0,0,1556,1554,1,0,0,0,1556, + 1557,1,0,0,0,1557,199,1,0,0,0,1558,1556,1,0,0,0,1559,1560,3,354, + 177,0,1560,1561,5,249,0,0,1561,1562,3,304,152,0,1562,201,1,0,0,0, + 1563,1564,5,265,0,0,1564,1567,3,182,91,0,1565,1566,5,34,0,0,1566, + 1568,3,314,157,0,1567,1565,1,0,0,0,1567,1568,1,0,0,0,1568,1577,1, + 0,0,0,1569,1570,5,263,0,0,1570,1573,3,182,91,0,1571,1572,5,34,0, + 0,1572,1574,3,314,157,0,1573,1571,1,0,0,0,1573,1574,1,0,0,0,1574, + 1576,1,0,0,0,1575,1569,1,0,0,0,1576,1579,1,0,0,0,1577,1575,1,0,0, + 0,1577,1578,1,0,0,0,1578,1580,1,0,0,0,1579,1577,1,0,0,0,1580,1581, + 5,266,0,0,1581,203,1,0,0,0,1582,1584,3,206,103,0,1583,1582,1,0,0, + 0,1583,1584,1,0,0,0,1584,1585,1,0,0,0,1585,1586,3,258,129,0,1586, + 205,1,0,0,0,1587,1588,5,216,0,0,1588,1593,3,274,137,0,1589,1590, + 5,263,0,0,1590,1592,3,274,137,0,1591,1589,1,0,0,0,1592,1595,1,0, + 0,0,1593,1591,1,0,0,0,1593,1594,1,0,0,0,1594,207,1,0,0,0,1595,1593, + 1,0,0,0,1596,1597,5,150,0,0,1597,1598,5,110,0,0,1598,1600,3,292, + 146,0,1599,1601,5,53,0,0,1600,1599,1,0,0,0,1600,1601,1,0,0,0,1601, + 1605,1,0,0,0,1602,1606,5,225,0,0,1603,1604,5,263,0,0,1604,1606,5, + 225,0,0,1605,1602,1,0,0,0,1605,1603,1,0,0,0,1605,1606,1,0,0,0,1606, + 1610,1,0,0,0,1607,1611,5,226,0,0,1608,1609,5,263,0,0,1609,1611,5, + 226,0,0,1610,1607,1,0,0,0,1610,1608,1,0,0,0,1610,1611,1,0,0,0,1611, + 1624,1,0,0,0,1612,1613,5,263,0,0,1613,1616,3,210,105,0,1614,1616, + 3,210,105,0,1615,1612,1,0,0,0,1615,1614,1,0,0,0,1616,1621,1,0,0, + 0,1617,1618,5,263,0,0,1618,1620,3,210,105,0,1619,1617,1,0,0,0,1620, + 1623,1,0,0,0,1621,1622,1,0,0,0,1621,1619,1,0,0,0,1622,1625,1,0,0, + 0,1623,1621,1,0,0,0,1624,1615,1,0,0,0,1624,1625,1,0,0,0,1625,209, + 1,0,0,0,1626,1627,5,81,0,0,1627,1628,5,110,0,0,1628,1629,3,292,146, + 0,1629,1630,5,224,0,0,1630,1631,3,186,93,0,1631,1633,3,292,146,0, + 1632,1634,5,53,0,0,1633,1632,1,0,0,0,1633,1634,1,0,0,0,1634,1636, + 1,0,0,0,1635,1637,5,225,0,0,1636,1635,1,0,0,0,1636,1637,1,0,0,0, + 1637,1639,1,0,0,0,1638,1640,5,226,0,0,1639,1638,1,0,0,0,1639,1640, + 1,0,0,0,1640,211,1,0,0,0,1641,1642,3,192,96,0,1642,1645,3,328,164, + 0,1643,1644,5,34,0,0,1644,1646,3,314,157,0,1645,1643,1,0,0,0,1645, + 1646,1,0,0,0,1646,213,1,0,0,0,1647,1648,3,182,91,0,1648,1651,3,328, + 164,0,1649,1650,5,34,0,0,1650,1652,3,314,157,0,1651,1649,1,0,0,0, + 1651,1652,1,0,0,0,1652,215,1,0,0,0,1653,1654,3,218,109,0,1654,217, + 1,0,0,0,1655,1656,3,182,91,0,1656,1664,3,328,164,0,1657,1661,3,224, + 112,0,1658,1660,3,224,112,0,1659,1658,1,0,0,0,1660,1663,1,0,0,0, + 1661,1662,1,0,0,0,1661,1659,1,0,0,0,1662,1665,1,0,0,0,1663,1661, + 1,0,0,0,1664,1657,1,0,0,0,1664,1665,1,0,0,0,1665,1668,1,0,0,0,1666, + 1667,5,34,0,0,1667,1669,3,314,157,0,1668,1666,1,0,0,0,1668,1669, + 1,0,0,0,1669,1672,1,0,0,0,1670,1671,5,150,0,0,1671,1673,5,110,0, + 0,1672,1670,1,0,0,0,1672,1673,1,0,0,0,1673,219,1,0,0,0,1674,1682, + 3,212,106,0,1675,1679,3,224,112,0,1676,1678,3,224,112,0,1677,1676, + 1,0,0,0,1678,1681,1,0,0,0,1679,1680,1,0,0,0,1679,1677,1,0,0,0,1680, + 1683,1,0,0,0,1681,1679,1,0,0,0,1682,1675,1,0,0,0,1682,1683,1,0,0, + 0,1683,221,1,0,0,0,1684,1685,3,182,91,0,1685,1688,3,328,164,0,1686, + 1687,5,34,0,0,1687,1689,3,314,157,0,1688,1686,1,0,0,0,1688,1689, + 1,0,0,0,1689,1697,1,0,0,0,1690,1694,3,224,112,0,1691,1693,3,224, + 112,0,1692,1691,1,0,0,0,1693,1696,1,0,0,0,1694,1695,1,0,0,0,1694, + 1692,1,0,0,0,1695,1698,1,0,0,0,1696,1694,1,0,0,0,1697,1690,1,0,0, + 0,1697,1698,1,0,0,0,1698,223,1,0,0,0,1699,1701,5,132,0,0,1700,1699, + 1,0,0,0,1700,1701,1,0,0,0,1701,1702,1,0,0,0,1702,1705,5,133,0,0, + 1703,1705,3,226,113,0,1704,1700,1,0,0,0,1704,1703,1,0,0,0,1705,225, + 1,0,0,0,1706,1707,5,60,0,0,1707,1715,3,304,152,0,1708,1709,5,35, + 0,0,1709,1715,3,304,152,0,1710,1711,5,51,0,0,1711,1715,3,304,152, + 0,1712,1713,5,16,0,0,1713,1715,3,360,180,0,1714,1706,1,0,0,0,1714, + 1708,1,0,0,0,1714,1710,1,0,0,0,1714,1712,1,0,0,0,1715,227,1,0,0, + 0,1716,1717,7,10,0,0,1717,229,1,0,0,0,1718,1719,7,11,0,0,1719,231, + 1,0,0,0,1720,1725,3,234,117,0,1721,1722,5,263,0,0,1722,1724,3,234, + 117,0,1723,1721,1,0,0,0,1724,1727,1,0,0,0,1725,1726,1,0,0,0,1725, + 1723,1,0,0,0,1726,1730,1,0,0,0,1727,1725,1,0,0,0,1728,1729,5,263, + 0,0,1729,1731,3,236,118,0,1730,1728,1,0,0,0,1730,1731,1,0,0,0,1731, + 1734,1,0,0,0,1732,1734,3,236,118,0,1733,1720,1,0,0,0,1733,1732,1, + 0,0,0,1734,233,1,0,0,0,1735,1737,5,89,0,0,1736,1738,3,292,146,0, + 1737,1736,1,0,0,0,1737,1738,1,0,0,0,1738,1739,1,0,0,0,1739,1740, + 5,146,0,0,1740,1741,3,360,180,0,1741,235,1,0,0,0,1742,1744,5,154, + 0,0,1743,1745,3,292,146,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745, + 1746,1,0,0,0,1746,1747,5,265,0,0,1747,1748,5,145,0,0,1748,1754,3, + 238,119,0,1749,1750,5,263,0,0,1750,1751,5,145,0,0,1751,1753,3,238, + 119,0,1752,1749,1,0,0,0,1753,1756,1,0,0,0,1754,1755,1,0,0,0,1754, + 1752,1,0,0,0,1755,1757,1,0,0,0,1756,1754,1,0,0,0,1757,1758,5,266, + 0,0,1758,237,1,0,0,0,1759,1760,5,210,0,0,1760,1761,3,244,122,0,1761, + 1762,3,304,152,0,1762,1775,1,0,0,0,1763,1764,3,304,152,0,1764,1765, + 3,242,121,0,1765,1767,1,0,0,0,1766,1763,1,0,0,0,1766,1767,1,0,0, + 0,1767,1768,1,0,0,0,1768,1772,5,211,0,0,1769,1770,3,242,121,0,1770, + 1771,3,304,152,0,1771,1773,1,0,0,0,1772,1769,1,0,0,0,1772,1773,1, + 0,0,0,1773,1775,1,0,0,0,1774,1759,1,0,0,0,1774,1766,1,0,0,0,1775, + 239,1,0,0,0,1776,1777,5,30,0,0,1777,1778,5,94,0,0,1778,1783,3,358, + 179,0,1779,1780,5,216,0,0,1780,1781,5,151,0,0,1781,1782,5,249,0, + 0,1782,1784,3,360,180,0,1783,1779,1,0,0,0,1783,1784,1,0,0,0,1784, + 1787,1,0,0,0,1785,1787,5,197,0,0,1786,1776,1,0,0,0,1786,1785,1,0, + 0,0,1787,241,1,0,0,0,1788,1794,1,0,0,0,1789,1794,5,251,0,0,1790, + 1794,5,252,0,0,1791,1794,5,253,0,0,1792,1794,5,254,0,0,1793,1788, + 1,0,0,0,1793,1789,1,0,0,0,1793,1790,1,0,0,0,1793,1791,1,0,0,0,1793, + 1792,1,0,0,0,1794,243,1,0,0,0,1795,1804,5,249,0,0,1796,1804,5,250, + 0,0,1797,1804,5,115,0,0,1798,1804,5,164,0,0,1799,1804,5,163,0,0, + 1800,1804,5,15,0,0,1801,1804,5,94,0,0,1802,1804,3,242,121,0,1803, + 1795,1,0,0,0,1803,1796,1,0,0,0,1803,1797,1,0,0,0,1803,1798,1,0,0, + 0,1803,1799,1,0,0,0,1803,1800,1,0,0,0,1803,1801,1,0,0,0,1803,1802, + 1,0,0,0,1804,245,1,0,0,0,1805,1806,5,115,0,0,1806,1809,3,354,177, + 0,1807,1808,7,12,0,0,1808,1810,5,153,0,0,1809,1807,1,0,0,0,1809, + 1810,1,0,0,0,1810,247,1,0,0,0,1811,1812,5,265,0,0,1812,1817,3,256, + 128,0,1813,1814,5,263,0,0,1814,1816,3,256,128,0,1815,1813,1,0,0, + 0,1816,1819,1,0,0,0,1817,1815,1,0,0,0,1817,1818,1,0,0,0,1818,1820, + 1,0,0,0,1819,1817,1,0,0,0,1820,1821,5,266,0,0,1821,249,1,0,0,0,1822, + 1823,5,265,0,0,1823,1828,3,212,106,0,1824,1825,5,263,0,0,1825,1827, + 3,212,106,0,1826,1824,1,0,0,0,1827,1830,1,0,0,0,1828,1829,1,0,0, + 0,1828,1826,1,0,0,0,1829,1831,1,0,0,0,1830,1828,1,0,0,0,1831,1832, + 5,266,0,0,1832,251,1,0,0,0,1833,1838,3,304,152,0,1834,1835,5,263, + 0,0,1835,1837,3,304,152,0,1836,1834,1,0,0,0,1837,1840,1,0,0,0,1838, + 1836,1,0,0,0,1838,1839,1,0,0,0,1839,253,1,0,0,0,1840,1838,1,0,0, + 0,1841,1851,5,52,0,0,1842,1843,5,71,0,0,1843,1844,5,191,0,0,1844, + 1845,5,26,0,0,1845,1849,3,314,157,0,1846,1847,5,63,0,0,1847,1848, + 5,26,0,0,1848,1850,3,314,157,0,1849,1846,1,0,0,0,1849,1850,1,0,0, + 0,1850,1852,1,0,0,0,1851,1842,1,0,0,0,1851,1852,1,0,0,0,1852,1857, + 1,0,0,0,1853,1854,5,117,0,0,1854,1855,5,191,0,0,1855,1856,5,26,0, + 0,1856,1858,3,314,157,0,1857,1853,1,0,0,0,1857,1858,1,0,0,0,1858, + 255,1,0,0,0,1859,1862,3,358,179,0,1860,1861,5,249,0,0,1861,1863, + 3,304,152,0,1862,1860,1,0,0,0,1862,1863,1,0,0,0,1863,257,1,0,0,0, + 1864,1875,3,260,130,0,1865,1866,5,139,0,0,1866,1867,5,26,0,0,1867, + 1872,3,264,132,0,1868,1869,5,263,0,0,1869,1871,3,264,132,0,1870, + 1868,1,0,0,0,1871,1874,1,0,0,0,1872,1870,1,0,0,0,1872,1873,1,0,0, + 0,1873,1876,1,0,0,0,1874,1872,1,0,0,0,1875,1865,1,0,0,0,1875,1876, + 1,0,0,0,1876,1883,1,0,0,0,1877,1878,5,116,0,0,1878,1881,3,304,152, + 0,1879,1880,5,135,0,0,1880,1882,5,277,0,0,1881,1879,1,0,0,0,1881, + 1882,1,0,0,0,1882,1884,1,0,0,0,1883,1877,1,0,0,0,1883,1884,1,0,0, + 0,1884,259,1,0,0,0,1885,1886,6,130,-1,0,1886,1887,3,262,131,0,1887, + 1902,1,0,0,0,1888,1889,10,2,0,0,1889,1891,5,100,0,0,1890,1892,3, + 276,138,0,1891,1890,1,0,0,0,1891,1892,1,0,0,0,1892,1893,1,0,0,0, + 1893,1901,3,260,130,3,1894,1895,10,1,0,0,1895,1897,7,13,0,0,1896, + 1898,3,276,138,0,1897,1896,1,0,0,0,1897,1898,1,0,0,0,1898,1899,1, + 0,0,0,1899,1901,3,260,130,2,1900,1888,1,0,0,0,1900,1894,1,0,0,0, + 1901,1904,1,0,0,0,1902,1900,1,0,0,0,1902,1903,1,0,0,0,1903,261,1, + 0,0,0,1904,1902,1,0,0,0,1905,1922,3,266,133,0,1906,1907,5,188,0, + 0,1907,1922,3,186,93,0,1908,1909,5,211,0,0,1909,1914,3,304,152,0, + 1910,1911,5,263,0,0,1911,1913,3,304,152,0,1912,1910,1,0,0,0,1913, + 1916,1,0,0,0,1914,1912,1,0,0,0,1914,1915,1,0,0,0,1915,1922,1,0,0, + 0,1916,1914,1,0,0,0,1917,1918,5,265,0,0,1918,1919,3,258,129,0,1919, + 1920,5,266,0,0,1920,1922,1,0,0,0,1921,1905,1,0,0,0,1921,1906,1,0, + 0,0,1921,1908,1,0,0,0,1921,1917,1,0,0,0,1922,263,1,0,0,0,1923,1925, + 3,302,151,0,1924,1926,7,14,0,0,1925,1924,1,0,0,0,1925,1926,1,0,0, + 0,1926,1929,1,0,0,0,1927,1928,5,134,0,0,1928,1930,7,15,0,0,1929, + 1927,1,0,0,0,1929,1930,1,0,0,0,1930,265,1,0,0,0,1931,1933,5,174, + 0,0,1932,1934,3,276,138,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934, + 1936,1,0,0,0,1935,1937,5,183,0,0,1936,1935,1,0,0,0,1936,1937,1,0, + 0,0,1937,1938,1,0,0,0,1938,1943,3,278,139,0,1939,1940,5,263,0,0, + 1940,1942,3,278,139,0,1941,1939,1,0,0,0,1942,1945,1,0,0,0,1943,1941, + 1,0,0,0,1943,1944,1,0,0,0,1944,1955,1,0,0,0,1945,1943,1,0,0,0,1946, + 1947,5,82,0,0,1947,1952,3,280,140,0,1948,1949,5,263,0,0,1949,1951, + 3,280,140,0,1950,1948,1,0,0,0,1951,1954,1,0,0,0,1952,1950,1,0,0, + 0,1952,1953,1,0,0,0,1953,1956,1,0,0,0,1954,1952,1,0,0,0,1955,1946, + 1,0,0,0,1955,1956,1,0,0,0,1956,1959,1,0,0,0,1957,1958,5,215,0,0, + 1958,1960,3,306,153,0,1959,1957,1,0,0,0,1959,1960,1,0,0,0,1960,1964, + 1,0,0,0,1961,1962,5,87,0,0,1962,1963,5,26,0,0,1963,1965,3,268,134, + 0,1964,1961,1,0,0,0,1964,1965,1,0,0,0,1965,1968,1,0,0,0,1966,1967, + 5,90,0,0,1967,1969,3,306,153,0,1968,1966,1,0,0,0,1968,1969,1,0,0, + 0,1969,267,1,0,0,0,1970,1972,3,276,138,0,1971,1970,1,0,0,0,1971, + 1972,1,0,0,0,1972,1973,1,0,0,0,1973,1978,3,270,135,0,1974,1975,5, + 263,0,0,1975,1977,3,270,135,0,1976,1974,1,0,0,0,1977,1980,1,0,0, + 0,1978,1976,1,0,0,0,1978,1979,1,0,0,0,1979,269,1,0,0,0,1980,1978, + 1,0,0,0,1981,1982,3,272,136,0,1982,271,1,0,0,0,1983,1992,5,265,0, + 0,1984,1989,3,302,151,0,1985,1986,5,263,0,0,1986,1988,3,302,151, + 0,1987,1985,1,0,0,0,1988,1991,1,0,0,0,1989,1987,1,0,0,0,1989,1990, + 1,0,0,0,1990,1993,1,0,0,0,1991,1989,1,0,0,0,1992,1984,1,0,0,0,1992, + 1993,1,0,0,0,1993,1994,1,0,0,0,1994,1997,5,266,0,0,1995,1997,3,302, + 151,0,1996,1983,1,0,0,0,1996,1995,1,0,0,0,1997,273,1,0,0,0,1998, + 2000,3,358,179,0,1999,2001,3,292,146,0,2000,1999,1,0,0,0,2000,2001, + 1,0,0,0,2001,2002,1,0,0,0,2002,2003,5,9,0,0,2003,2004,3,296,148, + 0,2004,275,1,0,0,0,2005,2006,7,16,0,0,2006,277,1,0,0,0,2007,2012, + 3,302,151,0,2008,2010,5,9,0,0,2009,2008,1,0,0,0,2009,2010,1,0,0, + 0,2010,2011,1,0,0,0,2011,2013,3,358,179,0,2012,2009,1,0,0,0,2012, + 2013,1,0,0,0,2013,2020,1,0,0,0,2014,2015,3,354,177,0,2015,2016,5, + 261,0,0,2016,2017,5,257,0,0,2017,2020,1,0,0,0,2018,2020,5,257,0, + 0,2019,2007,1,0,0,0,2019,2014,1,0,0,0,2019,2018,1,0,0,0,2020,279, + 1,0,0,0,2021,2022,6,140,-1,0,2022,2023,3,286,143,0,2023,2037,1,0, + 0,0,2024,2033,10,2,0,0,2025,2026,5,38,0,0,2026,2027,5,109,0,0,2027, + 2034,3,286,143,0,2028,2029,3,282,141,0,2029,2030,5,109,0,0,2030, + 2031,3,280,140,0,2031,2032,3,284,142,0,2032,2034,1,0,0,0,2033,2025, + 1,0,0,0,2033,2028,1,0,0,0,2034,2036,1,0,0,0,2035,2024,1,0,0,0,2036, + 2039,1,0,0,0,2037,2035,1,0,0,0,2037,2038,1,0,0,0,2038,281,1,0,0, + 0,2039,2037,1,0,0,0,2040,2042,5,97,0,0,2041,2040,1,0,0,0,2041,2042, + 1,0,0,0,2042,2072,1,0,0,0,2043,2045,5,114,0,0,2044,2046,5,97,0,0, + 2045,2044,1,0,0,0,2045,2046,1,0,0,0,2046,2072,1,0,0,0,2047,2049, + 5,165,0,0,2048,2050,5,97,0,0,2049,2048,1,0,0,0,2049,2050,1,0,0,0, + 2050,2072,1,0,0,0,2051,2053,5,114,0,0,2052,2054,5,141,0,0,2053,2052, + 1,0,0,0,2053,2054,1,0,0,0,2054,2072,1,0,0,0,2055,2057,5,165,0,0, + 2056,2058,5,141,0,0,2057,2056,1,0,0,0,2057,2058,1,0,0,0,2058,2072, + 1,0,0,0,2059,2061,5,83,0,0,2060,2062,5,141,0,0,2061,2060,1,0,0,0, + 2061,2062,1,0,0,0,2062,2072,1,0,0,0,2063,2064,5,114,0,0,2064,2072, + 5,177,0,0,2065,2066,5,165,0,0,2066,2072,5,177,0,0,2067,2068,5,114, + 0,0,2068,2072,5,7,0,0,2069,2070,5,165,0,0,2070,2072,5,7,0,0,2071, + 2041,1,0,0,0,2071,2043,1,0,0,0,2071,2047,1,0,0,0,2071,2051,1,0,0, + 0,2071,2055,1,0,0,0,2071,2059,1,0,0,0,2071,2063,1,0,0,0,2071,2065, + 1,0,0,0,2071,2067,1,0,0,0,2071,2069,1,0,0,0,2072,283,1,0,0,0,2073, + 2074,5,136,0,0,2074,2088,3,306,153,0,2075,2076,5,205,0,0,2076,2077, + 5,265,0,0,2077,2082,3,358,179,0,2078,2079,5,263,0,0,2079,2081,3, + 358,179,0,2080,2078,1,0,0,0,2081,2084,1,0,0,0,2082,2080,1,0,0,0, + 2082,2083,1,0,0,0,2083,2085,1,0,0,0,2084,2082,1,0,0,0,2085,2086, + 5,266,0,0,2086,2088,1,0,0,0,2087,2073,1,0,0,0,2087,2075,1,0,0,0, + 2088,285,1,0,0,0,2089,2102,3,290,145,0,2090,2091,5,190,0,0,2091, + 2092,3,288,144,0,2092,2093,5,265,0,0,2093,2094,3,304,152,0,2094, + 2100,5,266,0,0,2095,2096,5,157,0,0,2096,2097,5,265,0,0,2097,2098, + 3,304,152,0,2098,2099,5,266,0,0,2099,2101,1,0,0,0,2100,2095,1,0, + 0,0,2100,2101,1,0,0,0,2101,2103,1,0,0,0,2102,2090,1,0,0,0,2102,2103, + 1,0,0,0,2103,287,1,0,0,0,2104,2105,7,17,0,0,2105,289,1,0,0,0,2106, + 2114,3,294,147,0,2107,2109,5,9,0,0,2108,2107,1,0,0,0,2108,2109,1, + 0,0,0,2109,2110,1,0,0,0,2110,2112,3,358,179,0,2111,2113,3,292,146, + 0,2112,2111,1,0,0,0,2112,2113,1,0,0,0,2113,2115,1,0,0,0,2114,2108, + 1,0,0,0,2114,2115,1,0,0,0,2115,291,1,0,0,0,2116,2117,5,265,0,0,2117, + 2122,3,192,96,0,2118,2119,5,263,0,0,2119,2121,3,192,96,0,2120,2118, + 1,0,0,0,2121,2124,1,0,0,0,2122,2120,1,0,0,0,2122,2123,1,0,0,0,2123, + 2125,1,0,0,0,2124,2122,1,0,0,0,2125,2126,5,266,0,0,2126,293,1,0, + 0,0,2127,2135,3,194,97,0,2128,2130,5,113,0,0,2129,2128,1,0,0,0,2129, + 2130,1,0,0,0,2130,2131,1,0,0,0,2131,2135,3,296,148,0,2132,2135,3, + 298,149,0,2133,2135,3,300,150,0,2134,2127,1,0,0,0,2134,2129,1,0, + 0,0,2134,2132,1,0,0,0,2134,2133,1,0,0,0,2135,295,1,0,0,0,2136,2137, + 5,265,0,0,2137,2138,3,204,102,0,2138,2139,5,266,0,0,2139,297,1,0, + 0,0,2140,2141,5,201,0,0,2141,2142,5,265,0,0,2142,2147,3,304,152, + 0,2143,2144,5,263,0,0,2144,2146,3,304,152,0,2145,2143,1,0,0,0,2146, + 2149,1,0,0,0,2147,2145,1,0,0,0,2147,2148,1,0,0,0,2148,2150,1,0,0, + 0,2149,2147,1,0,0,0,2150,2153,5,266,0,0,2151,2152,5,216,0,0,2152, + 2154,5,140,0,0,2153,2151,1,0,0,0,2153,2154,1,0,0,0,2154,299,1,0, + 0,0,2155,2156,5,265,0,0,2156,2157,3,280,140,0,2157,2158,5,266,0, + 0,2158,301,1,0,0,0,2159,2162,3,192,96,0,2160,2162,3,304,152,0,2161, + 2159,1,0,0,0,2161,2160,1,0,0,0,2162,303,1,0,0,0,2163,2164,3,306, + 153,0,2164,305,1,0,0,0,2165,2166,6,153,-1,0,2166,2168,3,310,155, + 0,2167,2169,3,308,154,0,2168,2167,1,0,0,0,2168,2169,1,0,0,0,2169, + 2173,1,0,0,0,2170,2171,5,132,0,0,2171,2173,3,306,153,3,2172,2165, + 1,0,0,0,2172,2170,1,0,0,0,2173,2182,1,0,0,0,2174,2175,10,2,0,0,2175, + 2176,5,5,0,0,2176,2181,3,306,153,3,2177,2178,10,1,0,0,2178,2179, + 5,138,0,0,2179,2181,3,306,153,2,2180,2174,1,0,0,0,2180,2177,1,0, + 0,0,2181,2184,1,0,0,0,2182,2180,1,0,0,0,2182,2183,1,0,0,0,2183,307, + 1,0,0,0,2184,2182,1,0,0,0,2185,2186,3,316,158,0,2186,2187,3,310, + 155,0,2187,2244,1,0,0,0,2188,2189,3,316,158,0,2189,2190,3,318,159, + 0,2190,2191,3,296,148,0,2191,2244,1,0,0,0,2192,2194,5,132,0,0,2193, + 2192,1,0,0,0,2193,2194,1,0,0,0,2194,2195,1,0,0,0,2195,2196,5,15, + 0,0,2196,2197,3,310,155,0,2197,2198,5,5,0,0,2198,2199,3,310,155, + 0,2199,2244,1,0,0,0,2200,2202,5,132,0,0,2201,2200,1,0,0,0,2201,2202, + 1,0,0,0,2202,2203,1,0,0,0,2203,2204,5,94,0,0,2204,2205,5,265,0,0, + 2205,2210,3,304,152,0,2206,2207,5,263,0,0,2207,2209,3,304,152,0, + 2208,2206,1,0,0,0,2209,2212,1,0,0,0,2210,2208,1,0,0,0,2210,2211, + 1,0,0,0,2211,2213,1,0,0,0,2212,2210,1,0,0,0,2213,2214,5,266,0,0, + 2214,2244,1,0,0,0,2215,2217,5,132,0,0,2216,2215,1,0,0,0,2216,2217, + 1,0,0,0,2217,2218,1,0,0,0,2218,2219,5,94,0,0,2219,2244,3,296,148, + 0,2220,2222,5,132,0,0,2221,2220,1,0,0,0,2221,2222,1,0,0,0,2222,2223, + 1,0,0,0,2223,2224,7,18,0,0,2224,2227,3,310,155,0,2225,2226,5,62, + 0,0,2226,2228,3,310,155,0,2227,2225,1,0,0,0,2227,2228,1,0,0,0,2228, + 2244,1,0,0,0,2229,2230,7,19,0,0,2230,2244,3,310,155,0,2231,2233, + 5,108,0,0,2232,2234,5,132,0,0,2233,2232,1,0,0,0,2233,2234,1,0,0, + 0,2234,2235,1,0,0,0,2235,2244,7,20,0,0,2236,2238,5,108,0,0,2237, + 2239,5,132,0,0,2238,2237,1,0,0,0,2238,2239,1,0,0,0,2239,2240,1,0, + 0,0,2240,2241,5,57,0,0,2241,2242,5,82,0,0,2242,2244,3,310,155,0, + 2243,2185,1,0,0,0,2243,2188,1,0,0,0,2243,2193,1,0,0,0,2243,2201, + 1,0,0,0,2243,2216,1,0,0,0,2243,2221,1,0,0,0,2243,2229,1,0,0,0,2243, + 2231,1,0,0,0,2243,2236,1,0,0,0,2244,309,1,0,0,0,2245,2246,6,155, + -1,0,2246,2250,3,312,156,0,2247,2248,7,21,0,0,2248,2250,3,310,155, + 4,2249,2245,1,0,0,0,2249,2247,1,0,0,0,2250,2262,1,0,0,0,2251,2252, + 10,3,0,0,2252,2253,7,22,0,0,2253,2261,3,310,155,4,2254,2255,10,2, + 0,0,2255,2256,7,21,0,0,2256,2261,3,310,155,3,2257,2258,10,1,0,0, + 2258,2259,5,260,0,0,2259,2261,3,310,155,2,2260,2251,1,0,0,0,2260, + 2254,1,0,0,0,2260,2257,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0, + 0,2262,2263,1,0,0,0,2263,311,1,0,0,0,2264,2262,1,0,0,0,2265,2266, + 6,156,-1,0,2266,2512,5,133,0,0,2267,2512,3,322,161,0,2268,2269,3, + 358,179,0,2269,2270,3,314,157,0,2270,2512,1,0,0,0,2271,2272,5,286, + 0,0,2272,2512,3,314,157,0,2273,2512,3,360,180,0,2274,2512,3,320, + 160,0,2275,2512,3,314,157,0,2276,2512,5,276,0,0,2277,2512,5,272, + 0,0,2278,2279,5,148,0,0,2279,2280,5,265,0,0,2280,2281,3,310,155, + 0,2281,2282,5,94,0,0,2282,2283,3,310,155,0,2283,2284,5,266,0,0,2284, + 2512,1,0,0,0,2285,2286,5,265,0,0,2286,2289,3,304,152,0,2287,2288, + 5,9,0,0,2288,2290,3,328,164,0,2289,2287,1,0,0,0,2289,2290,1,0,0, + 0,2290,2299,1,0,0,0,2291,2292,5,263,0,0,2292,2295,3,304,152,0,2293, + 2294,5,9,0,0,2294,2296,3,328,164,0,2295,2293,1,0,0,0,2295,2296,1, + 0,0,0,2296,2298,1,0,0,0,2297,2291,1,0,0,0,2298,2301,1,0,0,0,2299, + 2300,1,0,0,0,2299,2297,1,0,0,0,2300,2302,1,0,0,0,2301,2299,1,0,0, + 0,2302,2303,5,266,0,0,2303,2512,1,0,0,0,2304,2305,5,168,0,0,2305, + 2306,5,265,0,0,2306,2311,3,304,152,0,2307,2308,5,263,0,0,2308,2310, + 3,304,152,0,2309,2307,1,0,0,0,2310,2313,1,0,0,0,2311,2309,1,0,0, + 0,2311,2312,1,0,0,0,2312,2314,1,0,0,0,2313,2311,1,0,0,0,2314,2315, + 5,266,0,0,2315,2512,1,0,0,0,2316,2317,3,190,95,0,2317,2318,5,265, + 0,0,2318,2319,5,257,0,0,2319,2321,5,266,0,0,2320,2322,3,338,169, + 0,2321,2320,1,0,0,0,2321,2322,1,0,0,0,2322,2324,1,0,0,0,2323,2325, + 3,340,170,0,2324,2323,1,0,0,0,2324,2325,1,0,0,0,2325,2512,1,0,0, + 0,2326,2327,3,190,95,0,2327,2339,5,265,0,0,2328,2330,3,276,138,0, + 2329,2328,1,0,0,0,2329,2330,1,0,0,0,2330,2331,1,0,0,0,2331,2336, + 3,304,152,0,2332,2333,5,263,0,0,2333,2335,3,304,152,0,2334,2332, + 1,0,0,0,2335,2338,1,0,0,0,2336,2334,1,0,0,0,2336,2337,1,0,0,0,2337, + 2340,1,0,0,0,2338,2336,1,0,0,0,2339,2329,1,0,0,0,2339,2340,1,0,0, + 0,2340,2351,1,0,0,0,2341,2342,5,139,0,0,2342,2343,5,26,0,0,2343, + 2348,3,264,132,0,2344,2345,5,263,0,0,2345,2347,3,264,132,0,2346, + 2344,1,0,0,0,2347,2350,1,0,0,0,2348,2346,1,0,0,0,2348,2349,1,0,0, + 0,2349,2352,1,0,0,0,2350,2348,1,0,0,0,2351,2341,1,0,0,0,2351,2352, + 1,0,0,0,2352,2353,1,0,0,0,2353,2355,5,266,0,0,2354,2356,3,338,169, + 0,2355,2354,1,0,0,0,2355,2356,1,0,0,0,2356,2358,1,0,0,0,2357,2359, + 3,340,170,0,2358,2357,1,0,0,0,2358,2359,1,0,0,0,2359,2512,1,0,0, + 0,2360,2361,3,358,179,0,2361,2362,5,273,0,0,2362,2363,3,304,152, + 0,2363,2512,1,0,0,0,2364,2373,5,265,0,0,2365,2370,3,358,179,0,2366, + 2367,5,263,0,0,2367,2369,3,358,179,0,2368,2366,1,0,0,0,2369,2372, + 1,0,0,0,2370,2368,1,0,0,0,2370,2371,1,0,0,0,2371,2374,1,0,0,0,2372, + 2370,1,0,0,0,2373,2365,1,0,0,0,2373,2374,1,0,0,0,2374,2375,1,0,0, + 0,2375,2376,5,266,0,0,2376,2377,5,273,0,0,2377,2512,3,304,152,0, + 2378,2379,5,265,0,0,2379,2380,3,204,102,0,2380,2381,5,266,0,0,2381, + 2512,1,0,0,0,2382,2383,5,66,0,0,2383,2384,5,265,0,0,2384,2385,3, + 204,102,0,2385,2386,5,266,0,0,2386,2512,1,0,0,0,2387,2388,5,28,0, + 0,2388,2390,3,310,155,0,2389,2391,3,336,168,0,2390,2389,1,0,0,0, + 2391,2392,1,0,0,0,2392,2390,1,0,0,0,2392,2393,1,0,0,0,2393,2396, + 1,0,0,0,2394,2395,5,59,0,0,2395,2397,3,304,152,0,2396,2394,1,0,0, + 0,2396,2397,1,0,0,0,2397,2398,1,0,0,0,2398,2399,5,61,0,0,2399,2512, + 1,0,0,0,2400,2402,5,28,0,0,2401,2403,3,336,168,0,2402,2401,1,0,0, + 0,2403,2404,1,0,0,0,2404,2402,1,0,0,0,2404,2405,1,0,0,0,2405,2408, + 1,0,0,0,2406,2407,5,59,0,0,2407,2409,3,304,152,0,2408,2406,1,0,0, + 0,2408,2409,1,0,0,0,2409,2410,1,0,0,0,2410,2411,5,61,0,0,2411,2512, + 1,0,0,0,2412,2413,5,29,0,0,2413,2414,5,265,0,0,2414,2415,3,304,152, + 0,2415,2416,5,9,0,0,2416,2417,3,328,164,0,2417,2418,5,266,0,0,2418, + 2512,1,0,0,0,2419,2420,5,195,0,0,2420,2421,5,265,0,0,2421,2422,3, + 304,152,0,2422,2423,5,9,0,0,2423,2424,3,328,164,0,2424,2425,5,266, + 0,0,2425,2512,1,0,0,0,2426,2427,5,8,0,0,2427,2436,5,267,0,0,2428, + 2433,3,304,152,0,2429,2430,5,263,0,0,2430,2432,3,304,152,0,2431, + 2429,1,0,0,0,2432,2435,1,0,0,0,2433,2431,1,0,0,0,2433,2434,1,0,0, + 0,2434,2437,1,0,0,0,2435,2433,1,0,0,0,2436,2428,1,0,0,0,2436,2437, + 1,0,0,0,2437,2438,1,0,0,0,2438,2512,5,268,0,0,2439,2512,3,358,179, + 0,2440,2512,5,40,0,0,2441,2445,5,42,0,0,2442,2443,5,265,0,0,2443, + 2444,5,277,0,0,2444,2446,5,266,0,0,2445,2442,1,0,0,0,2445,2446,1, + 0,0,0,2446,2512,1,0,0,0,2447,2451,5,43,0,0,2448,2449,5,265,0,0,2449, + 2450,5,277,0,0,2450,2452,5,266,0,0,2451,2448,1,0,0,0,2451,2452,1, + 0,0,0,2452,2512,1,0,0,0,2453,2457,5,119,0,0,2454,2455,5,265,0,0, + 2455,2456,5,277,0,0,2456,2458,5,266,0,0,2457,2454,1,0,0,0,2457,2458, + 1,0,0,0,2458,2512,1,0,0,0,2459,2463,5,120,0,0,2460,2461,5,265,0, + 0,2461,2462,5,277,0,0,2462,2464,5,266,0,0,2463,2460,1,0,0,0,2463, + 2464,1,0,0,0,2464,2512,1,0,0,0,2465,2512,5,44,0,0,2466,2512,5,41, + 0,0,2467,2468,5,184,0,0,2468,2469,5,265,0,0,2469,2470,3,310,155, + 0,2470,2471,5,82,0,0,2471,2474,3,310,155,0,2472,2473,5,78,0,0,2473, + 2475,3,310,155,0,2474,2472,1,0,0,0,2474,2475,1,0,0,0,2475,2476,1, + 0,0,0,2476,2477,5,266,0,0,2477,2512,1,0,0,0,2478,2479,5,131,0,0, + 2479,2480,5,265,0,0,2480,2483,3,310,155,0,2481,2482,5,263,0,0,2482, + 2484,3,326,163,0,2483,2481,1,0,0,0,2483,2484,1,0,0,0,2484,2485,1, + 0,0,0,2485,2486,5,266,0,0,2486,2512,1,0,0,0,2487,2488,5,68,0,0,2488, + 2489,5,265,0,0,2489,2490,3,358,179,0,2490,2491,5,82,0,0,2491,2492, + 3,310,155,0,2492,2493,5,266,0,0,2493,2512,1,0,0,0,2494,2495,5,265, + 0,0,2495,2496,3,304,152,0,2496,2497,5,266,0,0,2497,2512,1,0,0,0, + 2498,2499,5,88,0,0,2499,2508,5,265,0,0,2500,2505,3,354,177,0,2501, + 2502,5,263,0,0,2502,2504,3,354,177,0,2503,2501,1,0,0,0,2504,2507, + 1,0,0,0,2505,2503,1,0,0,0,2505,2506,1,0,0,0,2506,2509,1,0,0,0,2507, + 2505,1,0,0,0,2508,2500,1,0,0,0,2508,2509,1,0,0,0,2509,2510,1,0,0, + 0,2510,2512,5,266,0,0,2511,2265,1,0,0,0,2511,2267,1,0,0,0,2511,2268, + 1,0,0,0,2511,2271,1,0,0,0,2511,2273,1,0,0,0,2511,2274,1,0,0,0,2511, + 2275,1,0,0,0,2511,2276,1,0,0,0,2511,2277,1,0,0,0,2511,2278,1,0,0, + 0,2511,2285,1,0,0,0,2511,2304,1,0,0,0,2511,2316,1,0,0,0,2511,2326, + 1,0,0,0,2511,2360,1,0,0,0,2511,2364,1,0,0,0,2511,2378,1,0,0,0,2511, + 2382,1,0,0,0,2511,2387,1,0,0,0,2511,2400,1,0,0,0,2511,2412,1,0,0, + 0,2511,2419,1,0,0,0,2511,2426,1,0,0,0,2511,2439,1,0,0,0,2511,2440, + 1,0,0,0,2511,2441,1,0,0,0,2511,2447,1,0,0,0,2511,2453,1,0,0,0,2511, + 2459,1,0,0,0,2511,2465,1,0,0,0,2511,2466,1,0,0,0,2511,2467,1,0,0, + 0,2511,2478,1,0,0,0,2511,2487,1,0,0,0,2511,2494,1,0,0,0,2511,2498, + 1,0,0,0,2512,2523,1,0,0,0,2513,2514,10,15,0,0,2514,2515,5,267,0, + 0,2515,2516,3,310,155,0,2516,2517,5,268,0,0,2517,2522,1,0,0,0,2518, + 2519,10,13,0,0,2519,2520,5,261,0,0,2520,2522,3,358,179,0,2521,2513, + 1,0,0,0,2521,2518,1,0,0,0,2522,2525,1,0,0,0,2523,2521,1,0,0,0,2523, + 2524,1,0,0,0,2524,313,1,0,0,0,2525,2523,1,0,0,0,2526,2533,5,274, + 0,0,2527,2530,5,275,0,0,2528,2529,5,198,0,0,2529,2531,5,274,0,0, + 2530,2528,1,0,0,0,2530,2531,1,0,0,0,2531,2533,1,0,0,0,2532,2526, + 1,0,0,0,2532,2527,1,0,0,0,2533,315,1,0,0,0,2534,2535,7,23,0,0,2535, + 317,1,0,0,0,2536,2537,7,24,0,0,2537,319,1,0,0,0,2538,2539,7,25,0, + 0,2539,321,1,0,0,0,2540,2541,5,277,0,0,2541,2555,3,324,162,0,2542, + 2543,5,265,0,0,2543,2544,5,277,0,0,2544,2545,5,266,0,0,2545,2555, + 3,324,162,0,2546,2547,5,101,0,0,2547,2548,5,277,0,0,2548,2555,3, + 324,162,0,2549,2550,5,101,0,0,2550,2551,5,265,0,0,2551,2552,5,277, + 0,0,2552,2553,5,266,0,0,2553,2555,3,324,162,0,2554,2540,1,0,0,0, + 2554,2542,1,0,0,0,2554,2546,1,0,0,0,2554,2549,1,0,0,0,2555,323,1, + 0,0,0,2556,2557,7,26,0,0,2557,325,1,0,0,0,2558,2559,7,27,0,0,2559, + 327,1,0,0,0,2560,2561,6,164,-1,0,2561,2562,5,8,0,0,2562,2563,5,251, + 0,0,2563,2564,3,328,164,0,2564,2565,5,253,0,0,2565,2606,1,0,0,0, + 2566,2567,5,235,0,0,2567,2568,5,251,0,0,2568,2569,3,328,164,0,2569, + 2570,5,263,0,0,2570,2571,3,328,164,0,2571,2572,5,253,0,0,2572,2606, + 1,0,0,0,2573,2574,5,240,0,0,2574,2575,5,251,0,0,2575,2576,3,358, + 179,0,2576,2583,3,328,164,0,2577,2578,5,263,0,0,2578,2579,3,358, + 179,0,2579,2580,3,328,164,0,2580,2582,1,0,0,0,2581,2577,1,0,0,0, + 2582,2585,1,0,0,0,2583,2581,1,0,0,0,2583,2584,1,0,0,0,2584,2586, + 1,0,0,0,2585,2583,1,0,0,0,2586,2587,5,253,0,0,2587,2606,1,0,0,0, + 2588,2591,3,334,167,0,2589,2591,3,330,165,0,2590,2588,1,0,0,0,2590, + 2589,1,0,0,0,2591,2603,1,0,0,0,2592,2593,5,265,0,0,2593,2598,3,332, + 166,0,2594,2595,5,263,0,0,2595,2597,3,332,166,0,2596,2594,1,0,0, + 0,2597,2600,1,0,0,0,2598,2596,1,0,0,0,2598,2599,1,0,0,0,2599,2601, + 1,0,0,0,2600,2598,1,0,0,0,2601,2602,5,266,0,0,2602,2604,1,0,0,0, + 2603,2592,1,0,0,0,2603,2604,1,0,0,0,2604,2606,1,0,0,0,2605,2560, + 1,0,0,0,2605,2566,1,0,0,0,2605,2573,1,0,0,0,2605,2590,1,0,0,0,2606, + 2611,1,0,0,0,2607,2608,10,5,0,0,2608,2610,5,8,0,0,2609,2607,1,0, + 0,0,2610,2613,1,0,0,0,2611,2609,1,0,0,0,2611,2612,1,0,0,0,2612,329, + 1,0,0,0,2613,2611,1,0,0,0,2614,2615,7,28,0,0,2615,331,1,0,0,0,2616, + 2619,5,277,0,0,2617,2619,3,328,164,0,2618,2616,1,0,0,0,2618,2617, + 1,0,0,0,2619,333,1,0,0,0,2620,2625,5,284,0,0,2621,2625,5,285,0,0, + 2622,2625,5,286,0,0,2623,2625,3,358,179,0,2624,2620,1,0,0,0,2624, + 2621,1,0,0,0,2624,2622,1,0,0,0,2624,2623,1,0,0,0,2625,335,1,0,0, + 0,2626,2627,5,214,0,0,2627,2628,3,304,152,0,2628,2629,5,192,0,0, + 2629,2630,3,304,152,0,2630,337,1,0,0,0,2631,2632,5,74,0,0,2632,2633, + 5,265,0,0,2633,2634,5,215,0,0,2634,2635,3,306,153,0,2635,2636,5, + 266,0,0,2636,339,1,0,0,0,2637,2638,5,143,0,0,2638,2649,5,265,0,0, + 2639,2640,5,145,0,0,2640,2641,5,26,0,0,2641,2646,3,304,152,0,2642, + 2643,5,263,0,0,2643,2645,3,304,152,0,2644,2642,1,0,0,0,2645,2648, + 1,0,0,0,2646,2644,1,0,0,0,2646,2647,1,0,0,0,2647,2650,1,0,0,0,2648, + 2646,1,0,0,0,2649,2639,1,0,0,0,2649,2650,1,0,0,0,2650,2661,1,0,0, + 0,2651,2652,5,139,0,0,2652,2653,5,26,0,0,2653,2658,3,264,132,0,2654, + 2655,5,263,0,0,2655,2657,3,264,132,0,2656,2654,1,0,0,0,2657,2660, + 1,0,0,0,2658,2656,1,0,0,0,2658,2659,1,0,0,0,2659,2662,1,0,0,0,2660, + 2658,1,0,0,0,2661,2651,1,0,0,0,2661,2662,1,0,0,0,2662,2664,1,0,0, + 0,2663,2665,3,342,171,0,2664,2663,1,0,0,0,2664,2665,1,0,0,0,2665, + 2666,1,0,0,0,2666,2667,5,266,0,0,2667,341,1,0,0,0,2668,2669,5,154, + 0,0,2669,2685,3,344,172,0,2670,2671,5,169,0,0,2671,2685,3,344,172, + 0,2672,2673,5,154,0,0,2673,2674,5,15,0,0,2674,2675,3,344,172,0,2675, + 2676,5,5,0,0,2676,2677,3,344,172,0,2677,2685,1,0,0,0,2678,2679,5, + 169,0,0,2679,2680,5,15,0,0,2680,2681,3,344,172,0,2681,2682,5,5,0, + 0,2682,2683,3,344,172,0,2683,2685,1,0,0,0,2684,2668,1,0,0,0,2684, + 2670,1,0,0,0,2684,2672,1,0,0,0,2684,2678,1,0,0,0,2685,343,1,0,0, + 0,2686,2687,5,199,0,0,2687,2696,5,149,0,0,2688,2689,5,199,0,0,2689, + 2696,5,77,0,0,2690,2691,5,39,0,0,2691,2696,5,168,0,0,2692,2693,3, + 304,152,0,2693,2694,7,29,0,0,2694,2696,1,0,0,0,2695,2686,1,0,0,0, + 2695,2688,1,0,0,0,2695,2690,1,0,0,0,2695,2692,1,0,0,0,2696,345,1, + 0,0,0,2697,2698,3,358,179,0,2698,2699,5,261,0,0,2699,2700,3,358, + 179,0,2700,2703,1,0,0,0,2701,2703,3,358,179,0,2702,2697,1,0,0,0, + 2702,2701,1,0,0,0,2703,347,1,0,0,0,2704,2709,3,346,173,0,2705,2706, + 5,263,0,0,2706,2708,3,346,173,0,2707,2705,1,0,0,0,2708,2711,1,0, + 0,0,2709,2707,1,0,0,0,2709,2710,1,0,0,0,2710,349,1,0,0,0,2711,2709, + 1,0,0,0,2712,2726,5,2,0,0,2713,2726,5,4,0,0,2714,2726,5,58,0,0,2715, + 2726,5,37,0,0,2716,2726,5,99,0,0,2717,2726,5,162,0,0,2718,2723,5, + 174,0,0,2719,2720,5,265,0,0,2720,2721,3,358,179,0,2721,2722,5,266, + 0,0,2722,2724,1,0,0,0,2723,2719,1,0,0,0,2723,2724,1,0,0,0,2724,2726, + 1,0,0,0,2725,2712,1,0,0,0,2725,2713,1,0,0,0,2725,2714,1,0,0,0,2725, + 2715,1,0,0,0,2725,2716,1,0,0,0,2725,2717,1,0,0,0,2725,2718,1,0,0, + 0,2726,351,1,0,0,0,2727,2728,7,30,0,0,2728,353,1,0,0,0,2729,2734, + 3,358,179,0,2730,2731,5,261,0,0,2731,2733,3,358,179,0,2732,2730, + 1,0,0,0,2733,2736,1,0,0,0,2734,2732,1,0,0,0,2734,2735,1,0,0,0,2735, + 355,1,0,0,0,2736,2734,1,0,0,0,2737,2738,5,166,0,0,2738,2744,3,358, + 179,0,2739,2740,5,204,0,0,2740,2744,3,358,179,0,2741,2742,5,87,0, + 0,2742,2744,3,358,179,0,2743,2737,1,0,0,0,2743,2739,1,0,0,0,2743, + 2741,1,0,0,0,2744,357,1,0,0,0,2745,2751,5,280,0,0,2746,2751,5,274, + 0,0,2747,2751,3,364,182,0,2748,2751,5,283,0,0,2749,2751,5,281,0, + 0,2750,2745,1,0,0,0,2750,2746,1,0,0,0,2750,2747,1,0,0,0,2750,2748, + 1,0,0,0,2750,2749,1,0,0,0,2751,359,1,0,0,0,2752,2754,5,256,0,0,2753, + 2752,1,0,0,0,2753,2754,1,0,0,0,2754,2755,1,0,0,0,2755,2765,5,278, + 0,0,2756,2758,5,256,0,0,2757,2756,1,0,0,0,2757,2758,1,0,0,0,2758, + 2759,1,0,0,0,2759,2765,5,279,0,0,2760,2762,5,256,0,0,2761,2760,1, + 0,0,0,2761,2762,1,0,0,0,2762,2763,1,0,0,0,2763,2765,5,277,0,0,2764, + 2753,1,0,0,0,2764,2757,1,0,0,0,2764,2761,1,0,0,0,2765,361,1,0,0, + 0,2766,2767,7,31,0,0,2767,363,1,0,0,0,2768,2769,7,32,0,0,2769,365, + 1,0,0,0,352,369,376,400,413,417,421,430,435,439,445,447,452,456, 460,467,472,478,482,491,498,502,507,509,514,518,525,529,534,538, 542,546,554,559,563,571,575,584,587,590,596,603,614,619,624,629, 634,643,646,649,653,679,705,714,724,727,741,759,761,770,781,790, @@ -14160,19 +14151,19 @@ export class ImpalaSqlParser extends SQLParserBase { 1346,1351,1360,1369,1378,1389,1395,1400,1403,1416,1426,1430,1435, 1446,1451,1484,1492,1497,1501,1505,1510,1514,1519,1524,1529,1533, 1542,1545,1549,1556,1567,1573,1577,1583,1593,1600,1605,1610,1615, - 1621,1624,1633,1636,1639,1645,1651,1661,1664,1668,1672,1675,1681, - 1684,1690,1696,1699,1702,1706,1716,1727,1732,1735,1739,1746,1756, - 1768,1774,1776,1785,1788,1795,1805,1811,1819,1830,1840,1851,1853, - 1859,1864,1874,1877,1883,1885,1893,1899,1902,1904,1916,1923,1927, - 1931,1935,1938,1945,1954,1957,1961,1966,1970,1973,1980,1991,1994, - 1998,2002,2011,2014,2021,2035,2039,2043,2047,2051,2055,2059,2063, - 2073,2084,2089,2102,2104,2110,2114,2116,2124,2131,2136,2149,2155, - 2163,2170,2174,2182,2184,2195,2203,2212,2218,2223,2229,2235,2240, - 2245,2251,2262,2264,2291,2297,2301,2313,2323,2326,2331,2338,2341, - 2350,2353,2357,2360,2372,2375,2394,2398,2406,2410,2435,2438,2447, - 2453,2459,2465,2476,2485,2507,2510,2513,2523,2525,2532,2534,2556, - 2585,2592,2600,2605,2607,2613,2620,2626,2648,2651,2660,2663,2666, - 2686,2697,2704,2711,2725,2727,2736,2745,2752,2755,2759,2763,2766 + 1621,1624,1633,1636,1639,1645,1651,1661,1664,1668,1672,1679,1682, + 1688,1694,1697,1700,1704,1714,1725,1730,1733,1737,1744,1754,1766, + 1772,1774,1783,1786,1793,1803,1809,1817,1828,1838,1849,1851,1857, + 1862,1872,1875,1881,1883,1891,1897,1900,1902,1914,1921,1925,1929, + 1933,1936,1943,1952,1955,1959,1964,1968,1971,1978,1989,1992,1996, + 2000,2009,2012,2019,2033,2037,2041,2045,2049,2053,2057,2061,2071, + 2082,2087,2100,2102,2108,2112,2114,2122,2129,2134,2147,2153,2161, + 2168,2172,2180,2182,2193,2201,2210,2216,2221,2227,2233,2238,2243, + 2249,2260,2262,2289,2295,2299,2311,2321,2324,2329,2336,2339,2348, + 2351,2355,2358,2370,2373,2392,2396,2404,2408,2433,2436,2445,2451, + 2457,2463,2474,2483,2505,2508,2511,2521,2523,2530,2532,2554,2583, + 2590,2598,2603,2605,2611,2618,2624,2646,2649,2658,2661,2664,2684, + 2695,2702,2709,2723,2725,2734,2743,2750,2753,2757,2761,2764 ]; private static __ATN: antlr.ATN; @@ -15387,8 +15378,8 @@ export class ChangeColumnDefineContext extends antlr.ParserRuleContext { public KW_CHANGE(): antlr.TerminalNode { return this.getToken(ImpalaSqlParser.KW_CHANGE, 0)!; } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(ImpalaSqlParser.KW_COLUMN, 0)!; + public columnNamePath(): ColumnNamePathContext { + return this.getRuleContext(0, ColumnNamePathContext)!; } public columnSpecWithKudu(): ColumnSpecWithKuduContext { return this.getRuleContext(0, ColumnSpecWithKuduContext)!; @@ -19801,8 +19792,8 @@ export class ColumnSpecWithKuduContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnSpec(): ColumnSpecContext | null { - return this.getRuleContext(0, ColumnSpecContext); + public columnSpec(): ColumnSpecContext { + return this.getRuleContext(0, ColumnSpecContext)!; } public kuduAttributes(): KuduAttributesContext[]; public kuduAttributes(i: number): KuduAttributesContext | null; diff --git a/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql b/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql index 84567517..b92003be 100644 --- a/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql +++ b/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql @@ -4,7 +4,7 @@ SELECT name, calculate_age(birthdate) AS age FROM students; ALTER DATABASE cat; -ALTER TABLE my_table CHANGE COLUMN age; +ALTER TABLE my_table CHANGE age age int; ALTER VIEW my_view; diff --git a/test/parser/impala/suggestion/syntaxSuggestion.test.ts b/test/parser/impala/suggestion/syntaxSuggestion.test.ts index fbf88133..08629187 100644 --- a/test/parser/impala/suggestion/syntaxSuggestion.test.ts +++ b/test/parser/impala/suggestion/syntaxSuggestion.test.ts @@ -83,7 +83,7 @@ describe('Impala SQL Syntax Suggestion', () => { test('Alter table column', () => { const pos: CaretPosition = { lineNumber: 7, - column: 39, + column: 32, }; const syntaxes = impala.getSuggestionAtCaretPosition( commentOtherLine(syntaxSql, pos.lineNumber), diff --git a/test/parser/impala/syntax/fixtures/alter_table.sql b/test/parser/impala/syntax/fixtures/alter_table.sql index 0ce5c170..d64382e6 100644 --- a/test/parser/impala/syntax/fixtures/alter_table.sql +++ b/test/parser/impala/syntax/fixtures/alter_table.sql @@ -22,7 +22,8 @@ ALTER TABLE my_table DROP COLUMN column_name; ALTER TABLE my_table DROP column_name; -- ALTER TABLE name CHANGE column_name col_spec -ALTER TABLE my_table CHANGE COLUMN age INT COMMENT 'Updated Age'; +ALTER TABLE my_table CHANGE age age INT COMMENT 'Updated Age'; +ALTER TABLE impala_test CHANGE outberth outberth string COMMENT '列注释'; -- ALTER TABLE name SET OWNER USER user_name ALTER TABLE my_table SET OWNER USER user_name; From 76d090040e7af26227727673a82f77cda08b3f9e Mon Sep 17 00:00:00 2001 From: JackWang032 <64318393+JackWang032@users.noreply.github.com> Date: Tue, 23 Jul 2024 17:40:40 +0800 Subject: [PATCH 07/16] feat: use common sql to run benchmark (#326) * feat: use common sql to run benchmark * feat: update benchmark sql * fix: fix benchmark memory leak --------- Co-authored-by: jialan --- benchmark/benchmark.config.ts | 87 ++ benchmark/data/create.sql | 1002 ++++++++++++++++++++ benchmark/data/create_flink.sql | 1004 ++++++++++++++++++++ benchmark/data/flink/create.sql | 113 --- benchmark/data/flink/select.sql | 122 --- benchmark/data/hive/create.sql | 100 -- benchmark/data/hive/params.json | 12 - benchmark/data/hive/select.sql | 102 --- benchmark/data/impala/create.sql | 105 --- benchmark/data/impala/select.sql | 99 -- benchmark/data/insert.sql | 1001 ++++++++++++++++++++ benchmark/data/mysql/create.sql | 97 -- benchmark/data/mysql/select.sql | 36 - benchmark/data/params.json | 10 + benchmark/data/pgsql/create.sql | 97 -- benchmark/data/pgsql/select.sql | 99 -- benchmark/data/select.sql | 1014 ++++++++++++++++++++ benchmark/data/spark/create.sql | 120 --- benchmark/data/spark/select.sql | 162 ---- benchmark/data/split.sql | 1001 ++++++++++++++++++++ benchmark/data/split_flink.sql | 999 ++++++++++++++++++++ benchmark/data/suggestion.sql | 1066 ++++++++++++++++++++++ benchmark/data/suggestion_flink.sql | 1056 +++++++++++++++++++++ benchmark/data/trino/create.sql | 95 -- benchmark/data/trino/select.sql | 117 --- benchmark/data/update.sql | 1010 ++++++++++++++++++++ benchmark/run.ts | 64 +- benchmark/sqlBenchmark.ts | 56 +- package.json | 1 + pnpm-lock.yaml | 18 +- scripts/benchmark.js | 24 + test/helper.ts | 39 - test/parser/flink/benchmark/benchmark.md | 12 - 33 files changed, 9335 insertions(+), 1605 deletions(-) create mode 100644 benchmark/benchmark.config.ts create mode 100644 benchmark/data/create.sql create mode 100644 benchmark/data/create_flink.sql delete mode 100644 benchmark/data/flink/create.sql delete mode 100644 benchmark/data/flink/select.sql delete mode 100644 benchmark/data/hive/create.sql delete mode 100644 benchmark/data/hive/params.json delete mode 100644 benchmark/data/hive/select.sql delete mode 100644 benchmark/data/impala/create.sql delete mode 100644 benchmark/data/impala/select.sql create mode 100644 benchmark/data/insert.sql delete mode 100644 benchmark/data/mysql/create.sql delete mode 100644 benchmark/data/mysql/select.sql create mode 100644 benchmark/data/params.json delete mode 100644 benchmark/data/pgsql/create.sql delete mode 100644 benchmark/data/pgsql/select.sql create mode 100644 benchmark/data/select.sql delete mode 100644 benchmark/data/spark/create.sql delete mode 100644 benchmark/data/spark/select.sql create mode 100644 benchmark/data/split.sql create mode 100644 benchmark/data/split_flink.sql create mode 100644 benchmark/data/suggestion.sql create mode 100644 benchmark/data/suggestion_flink.sql delete mode 100644 benchmark/data/trino/create.sql delete mode 100644 benchmark/data/trino/select.sql create mode 100644 benchmark/data/update.sql delete mode 100644 test/parser/flink/benchmark/benchmark.md diff --git a/benchmark/benchmark.config.ts b/benchmark/benchmark.config.ts new file mode 100644 index 00000000..f77731eb --- /dev/null +++ b/benchmark/benchmark.config.ts @@ -0,0 +1,87 @@ +import { Language } from './sqlBenchmark'; + +type TestFile = { + /** Benchmark Name */ + name: string; + /** Test sql name */ + sqlFileName: string; + /** Test run times */ + loopTimes?: number; + /** Test method name of parser */ + testTypes: string[]; + /** Exclude languages */ + excludes?: Language[]; + /** Include languages */ + includes?: Language[]; +}; + +const testFiles: TestFile[] = [ + { + name: 'Query Collection', + sqlFileName: 'select.sql', + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Update Table', + sqlFileName: 'update.sql', + excludes: ['flink'], + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Insert Columns', + sqlFileName: 'insert.sql', + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Create Table', + sqlFileName: 'create.sql', + excludes: ['flink'], + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Create Table', + sqlFileName: 'create_flink.sql', + includes: ['flink'], + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Split SQL', + sqlFileName: 'split.sql', + excludes: ['flink'], + testTypes: ['splitSQLByStatement'], + }, + { + name: 'Split SQL', + sqlFileName: 'split_flink.sql', + includes: ['flink'], + testTypes: ['splitSQLByStatement'], + }, + { + name: 'Collect Entities', + sqlFileName: 'suggestion.sql', + excludes: ['flink'], + testTypes: ['getAllEntities'], + }, + { + name: 'Collect Entities', + sqlFileName: 'suggestion_flink.sql', + includes: ['flink'], + testTypes: ['getAllEntities'], + }, + { + name: 'Suggestion', + sqlFileName: 'suggestion.sql', + excludes: ['flink'], + testTypes: ['getSuggestionAtCaretPosition'], + }, + { + name: 'Suggestion', + sqlFileName: 'suggestion_flink.sql', + includes: ['flink'], + testTypes: ['getSuggestionAtCaretPosition'], + }, +]; + +export default { + testFiles, +}; diff --git a/benchmark/data/create.sql b/benchmark/data/create.sql new file mode 100644 index 00000000..ab4aa8fa --- /dev/null +++ b/benchmark/data/create.sql @@ -0,0 +1,1002 @@ +CREATE TABLE my_table ( +column1 VARCHAR(255), +column2 VARCHAR(255), +column3 VARCHAR(255), +column4 VARCHAR(255), +column5 VARCHAR(255), +column6 VARCHAR(255), +column7 VARCHAR(255), +column8 VARCHAR(255), +column9 VARCHAR(255), +column10 VARCHAR(255), +column11 VARCHAR(255), +column12 VARCHAR(255), +column13 VARCHAR(255), +column14 VARCHAR(255), +column15 VARCHAR(255), +column16 VARCHAR(255), +column17 VARCHAR(255), +column18 VARCHAR(255), +column19 VARCHAR(255), +column20 VARCHAR(255), +column21 VARCHAR(255), +column22 VARCHAR(255), +column23 VARCHAR(255), +column24 VARCHAR(255), +column25 VARCHAR(255), +column26 VARCHAR(255), +column27 VARCHAR(255), +column28 VARCHAR(255), +column29 VARCHAR(255), +column30 VARCHAR(255), +column31 VARCHAR(255), +column32 VARCHAR(255), +column33 VARCHAR(255), +column34 VARCHAR(255), +column35 VARCHAR(255), +column36 VARCHAR(255), +column37 VARCHAR(255), +column38 VARCHAR(255), +column39 VARCHAR(255), +column40 VARCHAR(255), +column41 VARCHAR(255), +column42 VARCHAR(255), +column43 VARCHAR(255), +column44 VARCHAR(255), +column45 VARCHAR(255), +column46 VARCHAR(255), +column47 VARCHAR(255), +column48 VARCHAR(255), +column49 VARCHAR(255), +column50 VARCHAR(255), +column51 VARCHAR(255), +column52 VARCHAR(255), +column53 VARCHAR(255), +column54 VARCHAR(255), +column55 VARCHAR(255), +column56 VARCHAR(255), +column57 VARCHAR(255), +column58 VARCHAR(255), +column59 VARCHAR(255), +column60 VARCHAR(255), +column61 VARCHAR(255), +column62 VARCHAR(255), +column63 VARCHAR(255), +column64 VARCHAR(255), +column65 VARCHAR(255), +column66 VARCHAR(255), +column67 VARCHAR(255), +column68 VARCHAR(255), +column69 VARCHAR(255), +column70 VARCHAR(255), +column71 VARCHAR(255), +column72 VARCHAR(255), +column73 VARCHAR(255), +column74 VARCHAR(255), +column75 VARCHAR(255), +column76 VARCHAR(255), +column77 VARCHAR(255), +column78 VARCHAR(255), +column79 VARCHAR(255), +column80 VARCHAR(255), +column81 VARCHAR(255), +column82 VARCHAR(255), +column83 VARCHAR(255), +column84 VARCHAR(255), +column85 VARCHAR(255), +column86 VARCHAR(255), +column87 VARCHAR(255), +column88 VARCHAR(255), +column89 VARCHAR(255), +column90 VARCHAR(255), +column91 VARCHAR(255), +column92 VARCHAR(255), +column93 VARCHAR(255), +column94 VARCHAR(255), +column95 VARCHAR(255), +column96 VARCHAR(255), +column97 VARCHAR(255), +column98 VARCHAR(255), +column99 VARCHAR(255), +column100 VARCHAR(255), +column101 VARCHAR(255), +column102 VARCHAR(255), +column103 VARCHAR(255), +column104 VARCHAR(255), +column105 VARCHAR(255), +column106 VARCHAR(255), +column107 VARCHAR(255), +column108 VARCHAR(255), +column109 VARCHAR(255), +column110 VARCHAR(255), +column111 VARCHAR(255), +column112 VARCHAR(255), +column113 VARCHAR(255), +column114 VARCHAR(255), +column115 VARCHAR(255), +column116 VARCHAR(255), +column117 VARCHAR(255), +column118 VARCHAR(255), +column119 VARCHAR(255), +column120 VARCHAR(255), +column121 VARCHAR(255), +column122 VARCHAR(255), +column123 VARCHAR(255), +column124 VARCHAR(255), +column125 VARCHAR(255), +column126 VARCHAR(255), +column127 VARCHAR(255), +column128 VARCHAR(255), +column129 VARCHAR(255), +column130 VARCHAR(255), +column131 VARCHAR(255), +column132 VARCHAR(255), +column133 VARCHAR(255), +column134 VARCHAR(255), +column135 VARCHAR(255), +column136 VARCHAR(255), +column137 VARCHAR(255), +column138 VARCHAR(255), +column139 VARCHAR(255), +column140 VARCHAR(255), +column141 VARCHAR(255), +column142 VARCHAR(255), +column143 VARCHAR(255), +column144 VARCHAR(255), +column145 VARCHAR(255), +column146 VARCHAR(255), +column147 VARCHAR(255), +column148 VARCHAR(255), +column149 VARCHAR(255), +column150 VARCHAR(255), +column151 VARCHAR(255), +column152 VARCHAR(255), +column153 VARCHAR(255), +column154 VARCHAR(255), +column155 VARCHAR(255), +column156 VARCHAR(255), +column157 VARCHAR(255), +column158 VARCHAR(255), +column159 VARCHAR(255), +column160 VARCHAR(255), +column161 VARCHAR(255), +column162 VARCHAR(255), +column163 VARCHAR(255), +column164 VARCHAR(255), +column165 VARCHAR(255), +column166 VARCHAR(255), +column167 VARCHAR(255), +column168 VARCHAR(255), +column169 VARCHAR(255), +column170 VARCHAR(255), +column171 VARCHAR(255), +column172 VARCHAR(255), +column173 VARCHAR(255), +column174 VARCHAR(255), +column175 VARCHAR(255), +column176 VARCHAR(255), +column177 VARCHAR(255), +column178 VARCHAR(255), +column179 VARCHAR(255), +column180 VARCHAR(255), +column181 VARCHAR(255), +column182 VARCHAR(255), +column183 VARCHAR(255), +column184 VARCHAR(255), +column185 VARCHAR(255), +column186 VARCHAR(255), +column187 VARCHAR(255), +column188 VARCHAR(255), +column189 VARCHAR(255), +column190 VARCHAR(255), +column191 VARCHAR(255), +column192 VARCHAR(255), +column193 VARCHAR(255), +column194 VARCHAR(255), +column195 VARCHAR(255), +column196 VARCHAR(255), +column197 VARCHAR(255), +column198 VARCHAR(255), +column199 VARCHAR(255), +column200 VARCHAR(255), +column201 VARCHAR(255), +column202 VARCHAR(255), +column203 VARCHAR(255), +column204 VARCHAR(255), +column205 VARCHAR(255), +column206 VARCHAR(255), +column207 VARCHAR(255), +column208 VARCHAR(255), +column209 VARCHAR(255), +column210 VARCHAR(255), +column211 VARCHAR(255), +column212 VARCHAR(255), +column213 VARCHAR(255), +column214 VARCHAR(255), +column215 VARCHAR(255), +column216 VARCHAR(255), +column217 VARCHAR(255), +column218 VARCHAR(255), +column219 VARCHAR(255), +column220 VARCHAR(255), +column221 VARCHAR(255), +column222 VARCHAR(255), +column223 VARCHAR(255), +column224 VARCHAR(255), +column225 VARCHAR(255), +column226 VARCHAR(255), +column227 VARCHAR(255), +column228 VARCHAR(255), +column229 VARCHAR(255), +column230 VARCHAR(255), +column231 VARCHAR(255), +column232 VARCHAR(255), +column233 VARCHAR(255), +column234 VARCHAR(255), +column235 VARCHAR(255), +column236 VARCHAR(255), +column237 VARCHAR(255), +column238 VARCHAR(255), +column239 VARCHAR(255), +column240 VARCHAR(255), +column241 VARCHAR(255), +column242 VARCHAR(255), +column243 VARCHAR(255), +column244 VARCHAR(255), +column245 VARCHAR(255), +column246 VARCHAR(255), +column247 VARCHAR(255), +column248 VARCHAR(255), +column249 VARCHAR(255), +column250 VARCHAR(255), +column251 VARCHAR(255), +column252 VARCHAR(255), +column253 VARCHAR(255), +column254 VARCHAR(255), +column255 VARCHAR(255), +column256 VARCHAR(255), +column257 VARCHAR(255), +column258 VARCHAR(255), +column259 VARCHAR(255), +column260 VARCHAR(255), +column261 VARCHAR(255), +column262 VARCHAR(255), +column263 VARCHAR(255), +column264 VARCHAR(255), +column265 VARCHAR(255), +column266 VARCHAR(255), +column267 VARCHAR(255), +column268 VARCHAR(255), +column269 VARCHAR(255), +column270 VARCHAR(255), +column271 VARCHAR(255), +column272 VARCHAR(255), +column273 VARCHAR(255), +column274 VARCHAR(255), +column275 VARCHAR(255), +column276 VARCHAR(255), +column277 VARCHAR(255), +column278 VARCHAR(255), +column279 VARCHAR(255), +column280 VARCHAR(255), +column281 VARCHAR(255), +column282 VARCHAR(255), +column283 VARCHAR(255), +column284 VARCHAR(255), +column285 VARCHAR(255), +column286 VARCHAR(255), +column287 VARCHAR(255), +column288 VARCHAR(255), +column289 VARCHAR(255), +column290 VARCHAR(255), +column291 VARCHAR(255), +column292 VARCHAR(255), +column293 VARCHAR(255), +column294 VARCHAR(255), +column295 VARCHAR(255), +column296 VARCHAR(255), +column297 VARCHAR(255), +column298 VARCHAR(255), +column299 VARCHAR(255), +column300 VARCHAR(255), +column301 VARCHAR(255), +column302 VARCHAR(255), +column303 VARCHAR(255), +column304 VARCHAR(255), +column305 VARCHAR(255), +column306 VARCHAR(255), +column307 VARCHAR(255), +column308 VARCHAR(255), +column309 VARCHAR(255), +column310 VARCHAR(255), +column311 VARCHAR(255), +column312 VARCHAR(255), +column313 VARCHAR(255), +column314 VARCHAR(255), +column315 VARCHAR(255), +column316 VARCHAR(255), +column317 VARCHAR(255), +column318 VARCHAR(255), +column319 VARCHAR(255), +column320 VARCHAR(255), +column321 VARCHAR(255), +column322 VARCHAR(255), +column323 VARCHAR(255), +column324 VARCHAR(255), +column325 VARCHAR(255), +column326 VARCHAR(255), +column327 VARCHAR(255), +column328 VARCHAR(255), +column329 VARCHAR(255), +column330 VARCHAR(255), +column331 VARCHAR(255), +column332 VARCHAR(255), +column333 VARCHAR(255), +column334 VARCHAR(255), +column335 VARCHAR(255), +column336 VARCHAR(255), +column337 VARCHAR(255), +column338 VARCHAR(255), +column339 VARCHAR(255), +column340 VARCHAR(255), +column341 VARCHAR(255), +column342 VARCHAR(255), +column343 VARCHAR(255), +column344 VARCHAR(255), +column345 VARCHAR(255), +column346 VARCHAR(255), +column347 VARCHAR(255), +column348 VARCHAR(255), +column349 VARCHAR(255), +column350 VARCHAR(255), +column351 VARCHAR(255), +column352 VARCHAR(255), +column353 VARCHAR(255), +column354 VARCHAR(255), +column355 VARCHAR(255), +column356 VARCHAR(255), +column357 VARCHAR(255), +column358 VARCHAR(255), +column359 VARCHAR(255), +column360 VARCHAR(255), +column361 VARCHAR(255), +column362 VARCHAR(255), +column363 VARCHAR(255), +column364 VARCHAR(255), +column365 VARCHAR(255), +column366 VARCHAR(255), +column367 VARCHAR(255), +column368 VARCHAR(255), +column369 VARCHAR(255), +column370 VARCHAR(255), +column371 VARCHAR(255), +column372 VARCHAR(255), +column373 VARCHAR(255), +column374 VARCHAR(255), +column375 VARCHAR(255), +column376 VARCHAR(255), +column377 VARCHAR(255), +column378 VARCHAR(255), +column379 VARCHAR(255), +column380 VARCHAR(255), +column381 VARCHAR(255), +column382 VARCHAR(255), +column383 VARCHAR(255), +column384 VARCHAR(255), +column385 VARCHAR(255), +column386 VARCHAR(255), +column387 VARCHAR(255), +column388 VARCHAR(255), +column389 VARCHAR(255), +column390 VARCHAR(255), +column391 VARCHAR(255), +column392 VARCHAR(255), +column393 VARCHAR(255), +column394 VARCHAR(255), +column395 VARCHAR(255), +column396 VARCHAR(255), +column397 VARCHAR(255), +column398 VARCHAR(255), +column399 VARCHAR(255), +column400 VARCHAR(255), +column401 VARCHAR(255), +column402 VARCHAR(255), +column403 VARCHAR(255), +column404 VARCHAR(255), +column405 VARCHAR(255), +column406 VARCHAR(255), +column407 VARCHAR(255), +column408 VARCHAR(255), +column409 VARCHAR(255), +column410 VARCHAR(255), +column411 VARCHAR(255), +column412 VARCHAR(255), +column413 VARCHAR(255), +column414 VARCHAR(255), +column415 VARCHAR(255), +column416 VARCHAR(255), +column417 VARCHAR(255), +column418 VARCHAR(255), +column419 VARCHAR(255), +column420 VARCHAR(255), +column421 VARCHAR(255), +column422 VARCHAR(255), +column423 VARCHAR(255), +column424 VARCHAR(255), +column425 VARCHAR(255), +column426 VARCHAR(255), +column427 VARCHAR(255), +column428 VARCHAR(255), +column429 VARCHAR(255), +column430 VARCHAR(255), +column431 VARCHAR(255), +column432 VARCHAR(255), +column433 VARCHAR(255), +column434 VARCHAR(255), +column435 VARCHAR(255), +column436 VARCHAR(255), +column437 VARCHAR(255), +column438 VARCHAR(255), +column439 VARCHAR(255), +column440 VARCHAR(255), +column441 VARCHAR(255), +column442 VARCHAR(255), +column443 VARCHAR(255), +column444 VARCHAR(255), +column445 VARCHAR(255), +column446 VARCHAR(255), +column447 VARCHAR(255), +column448 VARCHAR(255), +column449 VARCHAR(255), +column450 VARCHAR(255), +column451 VARCHAR(255), +column452 VARCHAR(255), +column453 VARCHAR(255), +column454 VARCHAR(255), +column455 VARCHAR(255), +column456 VARCHAR(255), +column457 VARCHAR(255), +column458 VARCHAR(255), +column459 VARCHAR(255), +column460 VARCHAR(255), +column461 VARCHAR(255), +column462 VARCHAR(255), +column463 VARCHAR(255), +column464 VARCHAR(255), +column465 VARCHAR(255), +column466 VARCHAR(255), +column467 VARCHAR(255), +column468 VARCHAR(255), +column469 VARCHAR(255), +column470 VARCHAR(255), +column471 VARCHAR(255), +column472 VARCHAR(255), +column473 VARCHAR(255), +column474 VARCHAR(255), +column475 VARCHAR(255), +column476 VARCHAR(255), +column477 VARCHAR(255), +column478 VARCHAR(255), +column479 VARCHAR(255), +column480 VARCHAR(255), +column481 VARCHAR(255), +column482 VARCHAR(255), +column483 VARCHAR(255), +column484 VARCHAR(255), +column485 VARCHAR(255), +column486 VARCHAR(255), +column487 VARCHAR(255), +column488 VARCHAR(255), +column489 VARCHAR(255), +column490 VARCHAR(255), +column491 VARCHAR(255), +column492 VARCHAR(255), +column493 VARCHAR(255), +column494 VARCHAR(255), +column495 VARCHAR(255), +column496 VARCHAR(255), +column497 VARCHAR(255), +column498 VARCHAR(255), +column499 VARCHAR(255), +column500 VARCHAR(255), +column501 VARCHAR(255), +column502 VARCHAR(255), +column503 VARCHAR(255), +column504 VARCHAR(255), +column505 VARCHAR(255), +column506 VARCHAR(255), +column507 VARCHAR(255), +column508 VARCHAR(255), +column509 VARCHAR(255), +column510 VARCHAR(255), +column511 VARCHAR(255), +column512 VARCHAR(255), +column513 VARCHAR(255), +column514 VARCHAR(255), +column515 VARCHAR(255), +column516 VARCHAR(255), +column517 VARCHAR(255), +column518 VARCHAR(255), +column519 VARCHAR(255), +column520 VARCHAR(255), +column521 VARCHAR(255), +column522 VARCHAR(255), +column523 VARCHAR(255), +column524 VARCHAR(255), +column525 VARCHAR(255), +column526 VARCHAR(255), +column527 VARCHAR(255), +column528 VARCHAR(255), +column529 VARCHAR(255), +column530 VARCHAR(255), +column531 VARCHAR(255), +column532 VARCHAR(255), +column533 VARCHAR(255), +column534 VARCHAR(255), +column535 VARCHAR(255), +column536 VARCHAR(255), +column537 VARCHAR(255), +column538 VARCHAR(255), +column539 VARCHAR(255), +column540 VARCHAR(255), +column541 VARCHAR(255), +column542 VARCHAR(255), +column543 VARCHAR(255), +column544 VARCHAR(255), +column545 VARCHAR(255), +column546 VARCHAR(255), +column547 VARCHAR(255), +column548 VARCHAR(255), +column549 VARCHAR(255), +column550 VARCHAR(255), +column551 VARCHAR(255), +column552 VARCHAR(255), +column553 VARCHAR(255), +column554 VARCHAR(255), +column555 VARCHAR(255), +column556 VARCHAR(255), +column557 VARCHAR(255), +column558 VARCHAR(255), +column559 VARCHAR(255), +column560 VARCHAR(255), +column561 VARCHAR(255), +column562 VARCHAR(255), +column563 VARCHAR(255), +column564 VARCHAR(255), +column565 VARCHAR(255), +column566 VARCHAR(255), +column567 VARCHAR(255), +column568 VARCHAR(255), +column569 VARCHAR(255), +column570 VARCHAR(255), +column571 VARCHAR(255), +column572 VARCHAR(255), +column573 VARCHAR(255), +column574 VARCHAR(255), +column575 VARCHAR(255), +column576 VARCHAR(255), +column577 VARCHAR(255), +column578 VARCHAR(255), +column579 VARCHAR(255), +column580 VARCHAR(255), +column581 VARCHAR(255), +column582 VARCHAR(255), +column583 VARCHAR(255), +column584 VARCHAR(255), +column585 VARCHAR(255), +column586 VARCHAR(255), +column587 VARCHAR(255), +column588 VARCHAR(255), +column589 VARCHAR(255), +column590 VARCHAR(255), +column591 VARCHAR(255), +column592 VARCHAR(255), +column593 VARCHAR(255), +column594 VARCHAR(255), +column595 VARCHAR(255), +column596 VARCHAR(255), +column597 VARCHAR(255), +column598 VARCHAR(255), +column599 VARCHAR(255), +column600 VARCHAR(255), +column601 VARCHAR(255), +column602 VARCHAR(255), +column603 VARCHAR(255), +column604 VARCHAR(255), +column605 VARCHAR(255), +column606 VARCHAR(255), +column607 VARCHAR(255), +column608 VARCHAR(255), +column609 VARCHAR(255), +column610 VARCHAR(255), +column611 VARCHAR(255), +column612 VARCHAR(255), +column613 VARCHAR(255), +column614 VARCHAR(255), +column615 VARCHAR(255), +column616 VARCHAR(255), +column617 VARCHAR(255), +column618 VARCHAR(255), +column619 VARCHAR(255), +column620 VARCHAR(255), +column621 VARCHAR(255), +column622 VARCHAR(255), +column623 VARCHAR(255), +column624 VARCHAR(255), +column625 VARCHAR(255), +column626 VARCHAR(255), +column627 VARCHAR(255), +column628 VARCHAR(255), +column629 VARCHAR(255), +column630 VARCHAR(255), +column631 VARCHAR(255), +column632 VARCHAR(255), +column633 VARCHAR(255), +column634 VARCHAR(255), +column635 VARCHAR(255), +column636 VARCHAR(255), +column637 VARCHAR(255), +column638 VARCHAR(255), +column639 VARCHAR(255), +column640 VARCHAR(255), +column641 VARCHAR(255), +column642 VARCHAR(255), +column643 VARCHAR(255), +column644 VARCHAR(255), +column645 VARCHAR(255), +column646 VARCHAR(255), +column647 VARCHAR(255), +column648 VARCHAR(255), +column649 VARCHAR(255), +column650 VARCHAR(255), +column651 VARCHAR(255), +column652 VARCHAR(255), +column653 VARCHAR(255), +column654 VARCHAR(255), +column655 VARCHAR(255), +column656 VARCHAR(255), +column657 VARCHAR(255), +column658 VARCHAR(255), +column659 VARCHAR(255), +column660 VARCHAR(255), +column661 VARCHAR(255), +column662 VARCHAR(255), +column663 VARCHAR(255), +column664 VARCHAR(255), +column665 VARCHAR(255), +column666 VARCHAR(255), +column667 VARCHAR(255), +column668 VARCHAR(255), +column669 VARCHAR(255), +column670 VARCHAR(255), +column671 VARCHAR(255), +column672 VARCHAR(255), +column673 VARCHAR(255), +column674 VARCHAR(255), +column675 VARCHAR(255), +column676 VARCHAR(255), +column677 VARCHAR(255), +column678 VARCHAR(255), +column679 VARCHAR(255), +column680 VARCHAR(255), +column681 VARCHAR(255), +column682 VARCHAR(255), +column683 VARCHAR(255), +column684 VARCHAR(255), +column685 VARCHAR(255), +column686 VARCHAR(255), +column687 VARCHAR(255), +column688 VARCHAR(255), +column689 VARCHAR(255), +column690 VARCHAR(255), +column691 VARCHAR(255), +column692 VARCHAR(255), +column693 VARCHAR(255), +column694 VARCHAR(255), +column695 VARCHAR(255), +column696 VARCHAR(255), +column697 VARCHAR(255), +column698 VARCHAR(255), +column699 VARCHAR(255), +column700 VARCHAR(255), +column701 VARCHAR(255), +column702 VARCHAR(255), +column703 VARCHAR(255), +column704 VARCHAR(255), +column705 VARCHAR(255), +column706 VARCHAR(255), +column707 VARCHAR(255), +column708 VARCHAR(255), +column709 VARCHAR(255), +column710 VARCHAR(255), +column711 VARCHAR(255), +column712 VARCHAR(255), +column713 VARCHAR(255), +column714 VARCHAR(255), +column715 VARCHAR(255), +column716 VARCHAR(255), +column717 VARCHAR(255), +column718 VARCHAR(255), +column719 VARCHAR(255), +column720 VARCHAR(255), +column721 VARCHAR(255), +column722 VARCHAR(255), +column723 VARCHAR(255), +column724 VARCHAR(255), +column725 VARCHAR(255), +column726 VARCHAR(255), +column727 VARCHAR(255), +column728 VARCHAR(255), +column729 VARCHAR(255), +column730 VARCHAR(255), +column731 VARCHAR(255), +column732 VARCHAR(255), +column733 VARCHAR(255), +column734 VARCHAR(255), +column735 VARCHAR(255), +column736 VARCHAR(255), +column737 VARCHAR(255), +column738 VARCHAR(255), +column739 VARCHAR(255), +column740 VARCHAR(255), +column741 VARCHAR(255), +column742 VARCHAR(255), +column743 VARCHAR(255), +column744 VARCHAR(255), +column745 VARCHAR(255), +column746 VARCHAR(255), +column747 VARCHAR(255), +column748 VARCHAR(255), +column749 VARCHAR(255), +column750 VARCHAR(255), +column751 VARCHAR(255), +column752 VARCHAR(255), +column753 VARCHAR(255), +column754 VARCHAR(255), +column755 VARCHAR(255), +column756 VARCHAR(255), +column757 VARCHAR(255), +column758 VARCHAR(255), +column759 VARCHAR(255), +column760 VARCHAR(255), +column761 VARCHAR(255), +column762 VARCHAR(255), +column763 VARCHAR(255), +column764 VARCHAR(255), +column765 VARCHAR(255), +column766 VARCHAR(255), +column767 VARCHAR(255), +column768 VARCHAR(255), +column769 VARCHAR(255), +column770 VARCHAR(255), +column771 VARCHAR(255), +column772 VARCHAR(255), +column773 VARCHAR(255), +column774 VARCHAR(255), +column775 VARCHAR(255), +column776 VARCHAR(255), +column777 VARCHAR(255), +column778 VARCHAR(255), +column779 VARCHAR(255), +column780 VARCHAR(255), +column781 VARCHAR(255), +column782 VARCHAR(255), +column783 VARCHAR(255), +column784 VARCHAR(255), +column785 VARCHAR(255), +column786 VARCHAR(255), +column787 VARCHAR(255), +column788 VARCHAR(255), +column789 VARCHAR(255), +column790 VARCHAR(255), +column791 VARCHAR(255), +column792 VARCHAR(255), +column793 VARCHAR(255), +column794 VARCHAR(255), +column795 VARCHAR(255), +column796 VARCHAR(255), +column797 VARCHAR(255), +column798 VARCHAR(255), +column799 VARCHAR(255), +column800 VARCHAR(255), +column801 VARCHAR(255), +column802 VARCHAR(255), +column803 VARCHAR(255), +column804 VARCHAR(255), +column805 VARCHAR(255), +column806 VARCHAR(255), +column807 VARCHAR(255), +column808 VARCHAR(255), +column809 VARCHAR(255), +column810 VARCHAR(255), +column811 VARCHAR(255), +column812 VARCHAR(255), +column813 VARCHAR(255), +column814 VARCHAR(255), +column815 VARCHAR(255), +column816 VARCHAR(255), +column817 VARCHAR(255), +column818 VARCHAR(255), +column819 VARCHAR(255), +column820 VARCHAR(255), +column821 VARCHAR(255), +column822 VARCHAR(255), +column823 VARCHAR(255), +column824 VARCHAR(255), +column825 VARCHAR(255), +column826 VARCHAR(255), +column827 VARCHAR(255), +column828 VARCHAR(255), +column829 VARCHAR(255), +column830 VARCHAR(255), +column831 VARCHAR(255), +column832 VARCHAR(255), +column833 VARCHAR(255), +column834 VARCHAR(255), +column835 VARCHAR(255), +column836 VARCHAR(255), +column837 VARCHAR(255), +column838 VARCHAR(255), +column839 VARCHAR(255), +column840 VARCHAR(255), +column841 VARCHAR(255), +column842 VARCHAR(255), +column843 VARCHAR(255), +column844 VARCHAR(255), +column845 VARCHAR(255), +column846 VARCHAR(255), +column847 VARCHAR(255), +column848 VARCHAR(255), +column849 VARCHAR(255), +column850 VARCHAR(255), +column851 VARCHAR(255), +column852 VARCHAR(255), +column853 VARCHAR(255), +column854 VARCHAR(255), +column855 VARCHAR(255), +column856 VARCHAR(255), +column857 VARCHAR(255), +column858 VARCHAR(255), +column859 VARCHAR(255), +column860 VARCHAR(255), +column861 VARCHAR(255), +column862 VARCHAR(255), +column863 VARCHAR(255), +column864 VARCHAR(255), +column865 VARCHAR(255), +column866 VARCHAR(255), +column867 VARCHAR(255), +column868 VARCHAR(255), +column869 VARCHAR(255), +column870 VARCHAR(255), +column871 VARCHAR(255), +column872 VARCHAR(255), +column873 VARCHAR(255), +column874 VARCHAR(255), +column875 VARCHAR(255), +column876 VARCHAR(255), +column877 VARCHAR(255), +column878 VARCHAR(255), +column879 VARCHAR(255), +column880 VARCHAR(255), +column881 VARCHAR(255), +column882 VARCHAR(255), +column883 VARCHAR(255), +column884 VARCHAR(255), +column885 VARCHAR(255), +column886 VARCHAR(255), +column887 VARCHAR(255), +column888 VARCHAR(255), +column889 VARCHAR(255), +column890 VARCHAR(255), +column891 VARCHAR(255), +column892 VARCHAR(255), +column893 VARCHAR(255), +column894 VARCHAR(255), +column895 VARCHAR(255), +column896 VARCHAR(255), +column897 VARCHAR(255), +column898 VARCHAR(255), +column899 VARCHAR(255), +column900 VARCHAR(255), +column901 VARCHAR(255), +column902 VARCHAR(255), +column903 VARCHAR(255), +column904 VARCHAR(255), +column905 VARCHAR(255), +column906 VARCHAR(255), +column907 VARCHAR(255), +column908 VARCHAR(255), +column909 VARCHAR(255), +column910 VARCHAR(255), +column911 VARCHAR(255), +column912 VARCHAR(255), +column913 VARCHAR(255), +column914 VARCHAR(255), +column915 VARCHAR(255), +column916 VARCHAR(255), +column917 VARCHAR(255), +column918 VARCHAR(255), +column919 VARCHAR(255), +column920 VARCHAR(255), +column921 VARCHAR(255), +column922 VARCHAR(255), +column923 VARCHAR(255), +column924 VARCHAR(255), +column925 VARCHAR(255), +column926 VARCHAR(255), +column927 VARCHAR(255), +column928 VARCHAR(255), +column929 VARCHAR(255), +column930 VARCHAR(255), +column931 VARCHAR(255), +column932 VARCHAR(255), +column933 VARCHAR(255), +column934 VARCHAR(255), +column935 VARCHAR(255), +column936 VARCHAR(255), +column937 VARCHAR(255), +column938 VARCHAR(255), +column939 VARCHAR(255), +column940 VARCHAR(255), +column941 VARCHAR(255), +column942 VARCHAR(255), +column943 VARCHAR(255), +column944 VARCHAR(255), +column945 VARCHAR(255), +column946 VARCHAR(255), +column947 VARCHAR(255), +column948 VARCHAR(255), +column949 VARCHAR(255), +column950 VARCHAR(255), +column951 VARCHAR(255), +column952 VARCHAR(255), +column953 VARCHAR(255), +column954 VARCHAR(255), +column955 VARCHAR(255), +column956 VARCHAR(255), +column957 VARCHAR(255), +column958 VARCHAR(255), +column959 VARCHAR(255), +column960 VARCHAR(255), +column961 VARCHAR(255), +column962 VARCHAR(255), +column963 VARCHAR(255), +column964 VARCHAR(255), +column965 VARCHAR(255), +column966 VARCHAR(255), +column967 VARCHAR(255), +column968 VARCHAR(255), +column969 VARCHAR(255), +column970 VARCHAR(255), +column971 VARCHAR(255), +column972 VARCHAR(255), +column973 VARCHAR(255), +column974 VARCHAR(255), +column975 VARCHAR(255), +column976 VARCHAR(255), +column977 VARCHAR(255), +column978 VARCHAR(255), +column979 VARCHAR(255), +column980 VARCHAR(255), +column981 VARCHAR(255), +column982 VARCHAR(255), +column983 VARCHAR(255), +column984 VARCHAR(255), +column985 VARCHAR(255), +column986 VARCHAR(255), +column987 VARCHAR(255), +column988 VARCHAR(255), +column989 VARCHAR(255), +column990 VARCHAR(255), +column991 VARCHAR(255), +column992 VARCHAR(255), +column993 VARCHAR(255), +column994 VARCHAR(255), +column995 VARCHAR(255), +column996 VARCHAR(255), +column997 VARCHAR(255), +column998 VARCHAR(255), +column999 VARCHAR(255), +column1000 VARCHAR(255) +); \ No newline at end of file diff --git a/benchmark/data/create_flink.sql b/benchmark/data/create_flink.sql new file mode 100644 index 00000000..4e542df1 --- /dev/null +++ b/benchmark/data/create_flink.sql @@ -0,0 +1,1004 @@ +CREATE TABLE my_table ( +column1 VARCHAR(255), +column2 VARCHAR(255), +column3 VARCHAR(255), +column4 VARCHAR(255), +column5 VARCHAR(255), +column6 VARCHAR(255), +column7 VARCHAR(255), +column8 VARCHAR(255), +column9 VARCHAR(255), +column10 VARCHAR(255), +column11 VARCHAR(255), +column12 VARCHAR(255), +column13 VARCHAR(255), +column14 VARCHAR(255), +column15 VARCHAR(255), +column16 VARCHAR(255), +column17 VARCHAR(255), +column18 VARCHAR(255), +column19 VARCHAR(255), +column20 VARCHAR(255), +column21 VARCHAR(255), +column22 VARCHAR(255), +column23 VARCHAR(255), +column24 VARCHAR(255), +column25 VARCHAR(255), +column26 VARCHAR(255), +column27 VARCHAR(255), +column28 VARCHAR(255), +column29 VARCHAR(255), +column30 VARCHAR(255), +column31 VARCHAR(255), +column32 VARCHAR(255), +column33 VARCHAR(255), +column34 VARCHAR(255), +column35 VARCHAR(255), +column36 VARCHAR(255), +column37 VARCHAR(255), +column38 VARCHAR(255), +column39 VARCHAR(255), +column40 VARCHAR(255), +column41 VARCHAR(255), +column42 VARCHAR(255), +column43 VARCHAR(255), +column44 VARCHAR(255), +column45 VARCHAR(255), +column46 VARCHAR(255), +column47 VARCHAR(255), +column48 VARCHAR(255), +column49 VARCHAR(255), +column50 VARCHAR(255), +column51 VARCHAR(255), +column52 VARCHAR(255), +column53 VARCHAR(255), +column54 VARCHAR(255), +column55 VARCHAR(255), +column56 VARCHAR(255), +column57 VARCHAR(255), +column58 VARCHAR(255), +column59 VARCHAR(255), +column60 VARCHAR(255), +column61 VARCHAR(255), +column62 VARCHAR(255), +column63 VARCHAR(255), +column64 VARCHAR(255), +column65 VARCHAR(255), +column66 VARCHAR(255), +column67 VARCHAR(255), +column68 VARCHAR(255), +column69 VARCHAR(255), +column70 VARCHAR(255), +column71 VARCHAR(255), +column72 VARCHAR(255), +column73 VARCHAR(255), +column74 VARCHAR(255), +column75 VARCHAR(255), +column76 VARCHAR(255), +column77 VARCHAR(255), +column78 VARCHAR(255), +column79 VARCHAR(255), +column80 VARCHAR(255), +column81 VARCHAR(255), +column82 VARCHAR(255), +column83 VARCHAR(255), +column84 VARCHAR(255), +column85 VARCHAR(255), +column86 VARCHAR(255), +column87 VARCHAR(255), +column88 VARCHAR(255), +column89 VARCHAR(255), +column90 VARCHAR(255), +column91 VARCHAR(255), +column92 VARCHAR(255), +column93 VARCHAR(255), +column94 VARCHAR(255), +column95 VARCHAR(255), +column96 VARCHAR(255), +column97 VARCHAR(255), +column98 VARCHAR(255), +column99 VARCHAR(255), +column100 VARCHAR(255), +column101 VARCHAR(255), +column102 VARCHAR(255), +column103 VARCHAR(255), +column104 VARCHAR(255), +column105 VARCHAR(255), +column106 VARCHAR(255), +column107 VARCHAR(255), +column108 VARCHAR(255), +column109 VARCHAR(255), +column110 VARCHAR(255), +column111 VARCHAR(255), +column112 VARCHAR(255), +column113 VARCHAR(255), +column114 VARCHAR(255), +column115 VARCHAR(255), +column116 VARCHAR(255), +column117 VARCHAR(255), +column118 VARCHAR(255), +column119 VARCHAR(255), +column120 VARCHAR(255), +column121 VARCHAR(255), +column122 VARCHAR(255), +column123 VARCHAR(255), +column124 VARCHAR(255), +column125 VARCHAR(255), +column126 VARCHAR(255), +column127 VARCHAR(255), +column128 VARCHAR(255), +column129 VARCHAR(255), +column130 VARCHAR(255), +column131 VARCHAR(255), +column132 VARCHAR(255), +column133 VARCHAR(255), +column134 VARCHAR(255), +column135 VARCHAR(255), +column136 VARCHAR(255), +column137 VARCHAR(255), +column138 VARCHAR(255), +column139 VARCHAR(255), +column140 VARCHAR(255), +column141 VARCHAR(255), +column142 VARCHAR(255), +column143 VARCHAR(255), +column144 VARCHAR(255), +column145 VARCHAR(255), +column146 VARCHAR(255), +column147 VARCHAR(255), +column148 VARCHAR(255), +column149 VARCHAR(255), +column150 VARCHAR(255), +column151 VARCHAR(255), +column152 VARCHAR(255), +column153 VARCHAR(255), +column154 VARCHAR(255), +column155 VARCHAR(255), +column156 VARCHAR(255), +column157 VARCHAR(255), +column158 VARCHAR(255), +column159 VARCHAR(255), +column160 VARCHAR(255), +column161 VARCHAR(255), +column162 VARCHAR(255), +column163 VARCHAR(255), +column164 VARCHAR(255), +column165 VARCHAR(255), +column166 VARCHAR(255), +column167 VARCHAR(255), +column168 VARCHAR(255), +column169 VARCHAR(255), +column170 VARCHAR(255), +column171 VARCHAR(255), +column172 VARCHAR(255), +column173 VARCHAR(255), +column174 VARCHAR(255), +column175 VARCHAR(255), +column176 VARCHAR(255), +column177 VARCHAR(255), +column178 VARCHAR(255), +column179 VARCHAR(255), +column180 VARCHAR(255), +column181 VARCHAR(255), +column182 VARCHAR(255), +column183 VARCHAR(255), +column184 VARCHAR(255), +column185 VARCHAR(255), +column186 VARCHAR(255), +column187 VARCHAR(255), +column188 VARCHAR(255), +column189 VARCHAR(255), +column190 VARCHAR(255), +column191 VARCHAR(255), +column192 VARCHAR(255), +column193 VARCHAR(255), +column194 VARCHAR(255), +column195 VARCHAR(255), +column196 VARCHAR(255), +column197 VARCHAR(255), +column198 VARCHAR(255), +column199 VARCHAR(255), +column200 VARCHAR(255), +column201 VARCHAR(255), +column202 VARCHAR(255), +column203 VARCHAR(255), +column204 VARCHAR(255), +column205 VARCHAR(255), +column206 VARCHAR(255), +column207 VARCHAR(255), +column208 VARCHAR(255), +column209 VARCHAR(255), +column210 VARCHAR(255), +column211 VARCHAR(255), +column212 VARCHAR(255), +column213 VARCHAR(255), +column214 VARCHAR(255), +column215 VARCHAR(255), +column216 VARCHAR(255), +column217 VARCHAR(255), +column218 VARCHAR(255), +column219 VARCHAR(255), +column220 VARCHAR(255), +column221 VARCHAR(255), +column222 VARCHAR(255), +column223 VARCHAR(255), +column224 VARCHAR(255), +column225 VARCHAR(255), +column226 VARCHAR(255), +column227 VARCHAR(255), +column228 VARCHAR(255), +column229 VARCHAR(255), +column230 VARCHAR(255), +column231 VARCHAR(255), +column232 VARCHAR(255), +column233 VARCHAR(255), +column234 VARCHAR(255), +column235 VARCHAR(255), +column236 VARCHAR(255), +column237 VARCHAR(255), +column238 VARCHAR(255), +column239 VARCHAR(255), +column240 VARCHAR(255), +column241 VARCHAR(255), +column242 VARCHAR(255), +column243 VARCHAR(255), +column244 VARCHAR(255), +column245 VARCHAR(255), +column246 VARCHAR(255), +column247 VARCHAR(255), +column248 VARCHAR(255), +column249 VARCHAR(255), +column250 VARCHAR(255), +column251 VARCHAR(255), +column252 VARCHAR(255), +column253 VARCHAR(255), +column254 VARCHAR(255), +column255 VARCHAR(255), +column256 VARCHAR(255), +column257 VARCHAR(255), +column258 VARCHAR(255), +column259 VARCHAR(255), +column260 VARCHAR(255), +column261 VARCHAR(255), +column262 VARCHAR(255), +column263 VARCHAR(255), +column264 VARCHAR(255), +column265 VARCHAR(255), +column266 VARCHAR(255), +column267 VARCHAR(255), +column268 VARCHAR(255), +column269 VARCHAR(255), +column270 VARCHAR(255), +column271 VARCHAR(255), +column272 VARCHAR(255), +column273 VARCHAR(255), +column274 VARCHAR(255), +column275 VARCHAR(255), +column276 VARCHAR(255), +column277 VARCHAR(255), +column278 VARCHAR(255), +column279 VARCHAR(255), +column280 VARCHAR(255), +column281 VARCHAR(255), +column282 VARCHAR(255), +column283 VARCHAR(255), +column284 VARCHAR(255), +column285 VARCHAR(255), +column286 VARCHAR(255), +column287 VARCHAR(255), +column288 VARCHAR(255), +column289 VARCHAR(255), +column290 VARCHAR(255), +column291 VARCHAR(255), +column292 VARCHAR(255), +column293 VARCHAR(255), +column294 VARCHAR(255), +column295 VARCHAR(255), +column296 VARCHAR(255), +column297 VARCHAR(255), +column298 VARCHAR(255), +column299 VARCHAR(255), +column300 VARCHAR(255), +column301 VARCHAR(255), +column302 VARCHAR(255), +column303 VARCHAR(255), +column304 VARCHAR(255), +column305 VARCHAR(255), +column306 VARCHAR(255), +column307 VARCHAR(255), +column308 VARCHAR(255), +column309 VARCHAR(255), +column310 VARCHAR(255), +column311 VARCHAR(255), +column312 VARCHAR(255), +column313 VARCHAR(255), +column314 VARCHAR(255), +column315 VARCHAR(255), +column316 VARCHAR(255), +column317 VARCHAR(255), +column318 VARCHAR(255), +column319 VARCHAR(255), +column320 VARCHAR(255), +column321 VARCHAR(255), +column322 VARCHAR(255), +column323 VARCHAR(255), +column324 VARCHAR(255), +column325 VARCHAR(255), +column326 VARCHAR(255), +column327 VARCHAR(255), +column328 VARCHAR(255), +column329 VARCHAR(255), +column330 VARCHAR(255), +column331 VARCHAR(255), +column332 VARCHAR(255), +column333 VARCHAR(255), +column334 VARCHAR(255), +column335 VARCHAR(255), +column336 VARCHAR(255), +column337 VARCHAR(255), +column338 VARCHAR(255), +column339 VARCHAR(255), +column340 VARCHAR(255), +column341 VARCHAR(255), +column342 VARCHAR(255), +column343 VARCHAR(255), +column344 VARCHAR(255), +column345 VARCHAR(255), +column346 VARCHAR(255), +column347 VARCHAR(255), +column348 VARCHAR(255), +column349 VARCHAR(255), +column350 VARCHAR(255), +column351 VARCHAR(255), +column352 VARCHAR(255), +column353 VARCHAR(255), +column354 VARCHAR(255), +column355 VARCHAR(255), +column356 VARCHAR(255), +column357 VARCHAR(255), +column358 VARCHAR(255), +column359 VARCHAR(255), +column360 VARCHAR(255), +column361 VARCHAR(255), +column362 VARCHAR(255), +column363 VARCHAR(255), +column364 VARCHAR(255), +column365 VARCHAR(255), +column366 VARCHAR(255), +column367 VARCHAR(255), +column368 VARCHAR(255), +column369 VARCHAR(255), +column370 VARCHAR(255), +column371 VARCHAR(255), +column372 VARCHAR(255), +column373 VARCHAR(255), +column374 VARCHAR(255), +column375 VARCHAR(255), +column376 VARCHAR(255), +column377 VARCHAR(255), +column378 VARCHAR(255), +column379 VARCHAR(255), +column380 VARCHAR(255), +column381 VARCHAR(255), +column382 VARCHAR(255), +column383 VARCHAR(255), +column384 VARCHAR(255), +column385 VARCHAR(255), +column386 VARCHAR(255), +column387 VARCHAR(255), +column388 VARCHAR(255), +column389 VARCHAR(255), +column390 VARCHAR(255), +column391 VARCHAR(255), +column392 VARCHAR(255), +column393 VARCHAR(255), +column394 VARCHAR(255), +column395 VARCHAR(255), +column396 VARCHAR(255), +column397 VARCHAR(255), +column398 VARCHAR(255), +column399 VARCHAR(255), +column400 VARCHAR(255), +column401 VARCHAR(255), +column402 VARCHAR(255), +column403 VARCHAR(255), +column404 VARCHAR(255), +column405 VARCHAR(255), +column406 VARCHAR(255), +column407 VARCHAR(255), +column408 VARCHAR(255), +column409 VARCHAR(255), +column410 VARCHAR(255), +column411 VARCHAR(255), +column412 VARCHAR(255), +column413 VARCHAR(255), +column414 VARCHAR(255), +column415 VARCHAR(255), +column416 VARCHAR(255), +column417 VARCHAR(255), +column418 VARCHAR(255), +column419 VARCHAR(255), +column420 VARCHAR(255), +column421 VARCHAR(255), +column422 VARCHAR(255), +column423 VARCHAR(255), +column424 VARCHAR(255), +column425 VARCHAR(255), +column426 VARCHAR(255), +column427 VARCHAR(255), +column428 VARCHAR(255), +column429 VARCHAR(255), +column430 VARCHAR(255), +column431 VARCHAR(255), +column432 VARCHAR(255), +column433 VARCHAR(255), +column434 VARCHAR(255), +column435 VARCHAR(255), +column436 VARCHAR(255), +column437 VARCHAR(255), +column438 VARCHAR(255), +column439 VARCHAR(255), +column440 VARCHAR(255), +column441 VARCHAR(255), +column442 VARCHAR(255), +column443 VARCHAR(255), +column444 VARCHAR(255), +column445 VARCHAR(255), +column446 VARCHAR(255), +column447 VARCHAR(255), +column448 VARCHAR(255), +column449 VARCHAR(255), +column450 VARCHAR(255), +column451 VARCHAR(255), +column452 VARCHAR(255), +column453 VARCHAR(255), +column454 VARCHAR(255), +column455 VARCHAR(255), +column456 VARCHAR(255), +column457 VARCHAR(255), +column458 VARCHAR(255), +column459 VARCHAR(255), +column460 VARCHAR(255), +column461 VARCHAR(255), +column462 VARCHAR(255), +column463 VARCHAR(255), +column464 VARCHAR(255), +column465 VARCHAR(255), +column466 VARCHAR(255), +column467 VARCHAR(255), +column468 VARCHAR(255), +column469 VARCHAR(255), +column470 VARCHAR(255), +column471 VARCHAR(255), +column472 VARCHAR(255), +column473 VARCHAR(255), +column474 VARCHAR(255), +column475 VARCHAR(255), +column476 VARCHAR(255), +column477 VARCHAR(255), +column478 VARCHAR(255), +column479 VARCHAR(255), +column480 VARCHAR(255), +column481 VARCHAR(255), +column482 VARCHAR(255), +column483 VARCHAR(255), +column484 VARCHAR(255), +column485 VARCHAR(255), +column486 VARCHAR(255), +column487 VARCHAR(255), +column488 VARCHAR(255), +column489 VARCHAR(255), +column490 VARCHAR(255), +column491 VARCHAR(255), +column492 VARCHAR(255), +column493 VARCHAR(255), +column494 VARCHAR(255), +column495 VARCHAR(255), +column496 VARCHAR(255), +column497 VARCHAR(255), +column498 VARCHAR(255), +column499 VARCHAR(255), +column500 VARCHAR(255), +column501 VARCHAR(255), +column502 VARCHAR(255), +column503 VARCHAR(255), +column504 VARCHAR(255), +column505 VARCHAR(255), +column506 VARCHAR(255), +column507 VARCHAR(255), +column508 VARCHAR(255), +column509 VARCHAR(255), +column510 VARCHAR(255), +column511 VARCHAR(255), +column512 VARCHAR(255), +column513 VARCHAR(255), +column514 VARCHAR(255), +column515 VARCHAR(255), +column516 VARCHAR(255), +column517 VARCHAR(255), +column518 VARCHAR(255), +column519 VARCHAR(255), +column520 VARCHAR(255), +column521 VARCHAR(255), +column522 VARCHAR(255), +column523 VARCHAR(255), +column524 VARCHAR(255), +column525 VARCHAR(255), +column526 VARCHAR(255), +column527 VARCHAR(255), +column528 VARCHAR(255), +column529 VARCHAR(255), +column530 VARCHAR(255), +column531 VARCHAR(255), +column532 VARCHAR(255), +column533 VARCHAR(255), +column534 VARCHAR(255), +column535 VARCHAR(255), +column536 VARCHAR(255), +column537 VARCHAR(255), +column538 VARCHAR(255), +column539 VARCHAR(255), +column540 VARCHAR(255), +column541 VARCHAR(255), +column542 VARCHAR(255), +column543 VARCHAR(255), +column544 VARCHAR(255), +column545 VARCHAR(255), +column546 VARCHAR(255), +column547 VARCHAR(255), +column548 VARCHAR(255), +column549 VARCHAR(255), +column550 VARCHAR(255), +column551 VARCHAR(255), +column552 VARCHAR(255), +column553 VARCHAR(255), +column554 VARCHAR(255), +column555 VARCHAR(255), +column556 VARCHAR(255), +column557 VARCHAR(255), +column558 VARCHAR(255), +column559 VARCHAR(255), +column560 VARCHAR(255), +column561 VARCHAR(255), +column562 VARCHAR(255), +column563 VARCHAR(255), +column564 VARCHAR(255), +column565 VARCHAR(255), +column566 VARCHAR(255), +column567 VARCHAR(255), +column568 VARCHAR(255), +column569 VARCHAR(255), +column570 VARCHAR(255), +column571 VARCHAR(255), +column572 VARCHAR(255), +column573 VARCHAR(255), +column574 VARCHAR(255), +column575 VARCHAR(255), +column576 VARCHAR(255), +column577 VARCHAR(255), +column578 VARCHAR(255), +column579 VARCHAR(255), +column580 VARCHAR(255), +column581 VARCHAR(255), +column582 VARCHAR(255), +column583 VARCHAR(255), +column584 VARCHAR(255), +column585 VARCHAR(255), +column586 VARCHAR(255), +column587 VARCHAR(255), +column588 VARCHAR(255), +column589 VARCHAR(255), +column590 VARCHAR(255), +column591 VARCHAR(255), +column592 VARCHAR(255), +column593 VARCHAR(255), +column594 VARCHAR(255), +column595 VARCHAR(255), +column596 VARCHAR(255), +column597 VARCHAR(255), +column598 VARCHAR(255), +column599 VARCHAR(255), +column600 VARCHAR(255), +column601 VARCHAR(255), +column602 VARCHAR(255), +column603 VARCHAR(255), +column604 VARCHAR(255), +column605 VARCHAR(255), +column606 VARCHAR(255), +column607 VARCHAR(255), +column608 VARCHAR(255), +column609 VARCHAR(255), +column610 VARCHAR(255), +column611 VARCHAR(255), +column612 VARCHAR(255), +column613 VARCHAR(255), +column614 VARCHAR(255), +column615 VARCHAR(255), +column616 VARCHAR(255), +column617 VARCHAR(255), +column618 VARCHAR(255), +column619 VARCHAR(255), +column620 VARCHAR(255), +column621 VARCHAR(255), +column622 VARCHAR(255), +column623 VARCHAR(255), +column624 VARCHAR(255), +column625 VARCHAR(255), +column626 VARCHAR(255), +column627 VARCHAR(255), +column628 VARCHAR(255), +column629 VARCHAR(255), +column630 VARCHAR(255), +column631 VARCHAR(255), +column632 VARCHAR(255), +column633 VARCHAR(255), +column634 VARCHAR(255), +column635 VARCHAR(255), +column636 VARCHAR(255), +column637 VARCHAR(255), +column638 VARCHAR(255), +column639 VARCHAR(255), +column640 VARCHAR(255), +column641 VARCHAR(255), +column642 VARCHAR(255), +column643 VARCHAR(255), +column644 VARCHAR(255), +column645 VARCHAR(255), +column646 VARCHAR(255), +column647 VARCHAR(255), +column648 VARCHAR(255), +column649 VARCHAR(255), +column650 VARCHAR(255), +column651 VARCHAR(255), +column652 VARCHAR(255), +column653 VARCHAR(255), +column654 VARCHAR(255), +column655 VARCHAR(255), +column656 VARCHAR(255), +column657 VARCHAR(255), +column658 VARCHAR(255), +column659 VARCHAR(255), +column660 VARCHAR(255), +column661 VARCHAR(255), +column662 VARCHAR(255), +column663 VARCHAR(255), +column664 VARCHAR(255), +column665 VARCHAR(255), +column666 VARCHAR(255), +column667 VARCHAR(255), +column668 VARCHAR(255), +column669 VARCHAR(255), +column670 VARCHAR(255), +column671 VARCHAR(255), +column672 VARCHAR(255), +column673 VARCHAR(255), +column674 VARCHAR(255), +column675 VARCHAR(255), +column676 VARCHAR(255), +column677 VARCHAR(255), +column678 VARCHAR(255), +column679 VARCHAR(255), +column680 VARCHAR(255), +column681 VARCHAR(255), +column682 VARCHAR(255), +column683 VARCHAR(255), +column684 VARCHAR(255), +column685 VARCHAR(255), +column686 VARCHAR(255), +column687 VARCHAR(255), +column688 VARCHAR(255), +column689 VARCHAR(255), +column690 VARCHAR(255), +column691 VARCHAR(255), +column692 VARCHAR(255), +column693 VARCHAR(255), +column694 VARCHAR(255), +column695 VARCHAR(255), +column696 VARCHAR(255), +column697 VARCHAR(255), +column698 VARCHAR(255), +column699 VARCHAR(255), +column700 VARCHAR(255), +column701 VARCHAR(255), +column702 VARCHAR(255), +column703 VARCHAR(255), +column704 VARCHAR(255), +column705 VARCHAR(255), +column706 VARCHAR(255), +column707 VARCHAR(255), +column708 VARCHAR(255), +column709 VARCHAR(255), +column710 VARCHAR(255), +column711 VARCHAR(255), +column712 VARCHAR(255), +column713 VARCHAR(255), +column714 VARCHAR(255), +column715 VARCHAR(255), +column716 VARCHAR(255), +column717 VARCHAR(255), +column718 VARCHAR(255), +column719 VARCHAR(255), +column720 VARCHAR(255), +column721 VARCHAR(255), +column722 VARCHAR(255), +column723 VARCHAR(255), +column724 VARCHAR(255), +column725 VARCHAR(255), +column726 VARCHAR(255), +column727 VARCHAR(255), +column728 VARCHAR(255), +column729 VARCHAR(255), +column730 VARCHAR(255), +column731 VARCHAR(255), +column732 VARCHAR(255), +column733 VARCHAR(255), +column734 VARCHAR(255), +column735 VARCHAR(255), +column736 VARCHAR(255), +column737 VARCHAR(255), +column738 VARCHAR(255), +column739 VARCHAR(255), +column740 VARCHAR(255), +column741 VARCHAR(255), +column742 VARCHAR(255), +column743 VARCHAR(255), +column744 VARCHAR(255), +column745 VARCHAR(255), +column746 VARCHAR(255), +column747 VARCHAR(255), +column748 VARCHAR(255), +column749 VARCHAR(255), +column750 VARCHAR(255), +column751 VARCHAR(255), +column752 VARCHAR(255), +column753 VARCHAR(255), +column754 VARCHAR(255), +column755 VARCHAR(255), +column756 VARCHAR(255), +column757 VARCHAR(255), +column758 VARCHAR(255), +column759 VARCHAR(255), +column760 VARCHAR(255), +column761 VARCHAR(255), +column762 VARCHAR(255), +column763 VARCHAR(255), +column764 VARCHAR(255), +column765 VARCHAR(255), +column766 VARCHAR(255), +column767 VARCHAR(255), +column768 VARCHAR(255), +column769 VARCHAR(255), +column770 VARCHAR(255), +column771 VARCHAR(255), +column772 VARCHAR(255), +column773 VARCHAR(255), +column774 VARCHAR(255), +column775 VARCHAR(255), +column776 VARCHAR(255), +column777 VARCHAR(255), +column778 VARCHAR(255), +column779 VARCHAR(255), +column780 VARCHAR(255), +column781 VARCHAR(255), +column782 VARCHAR(255), +column783 VARCHAR(255), +column784 VARCHAR(255), +column785 VARCHAR(255), +column786 VARCHAR(255), +column787 VARCHAR(255), +column788 VARCHAR(255), +column789 VARCHAR(255), +column790 VARCHAR(255), +column791 VARCHAR(255), +column792 VARCHAR(255), +column793 VARCHAR(255), +column794 VARCHAR(255), +column795 VARCHAR(255), +column796 VARCHAR(255), +column797 VARCHAR(255), +column798 VARCHAR(255), +column799 VARCHAR(255), +column800 VARCHAR(255), +column801 VARCHAR(255), +column802 VARCHAR(255), +column803 VARCHAR(255), +column804 VARCHAR(255), +column805 VARCHAR(255), +column806 VARCHAR(255), +column807 VARCHAR(255), +column808 VARCHAR(255), +column809 VARCHAR(255), +column810 VARCHAR(255), +column811 VARCHAR(255), +column812 VARCHAR(255), +column813 VARCHAR(255), +column814 VARCHAR(255), +column815 VARCHAR(255), +column816 VARCHAR(255), +column817 VARCHAR(255), +column818 VARCHAR(255), +column819 VARCHAR(255), +column820 VARCHAR(255), +column821 VARCHAR(255), +column822 VARCHAR(255), +column823 VARCHAR(255), +column824 VARCHAR(255), +column825 VARCHAR(255), +column826 VARCHAR(255), +column827 VARCHAR(255), +column828 VARCHAR(255), +column829 VARCHAR(255), +column830 VARCHAR(255), +column831 VARCHAR(255), +column832 VARCHAR(255), +column833 VARCHAR(255), +column834 VARCHAR(255), +column835 VARCHAR(255), +column836 VARCHAR(255), +column837 VARCHAR(255), +column838 VARCHAR(255), +column839 VARCHAR(255), +column840 VARCHAR(255), +column841 VARCHAR(255), +column842 VARCHAR(255), +column843 VARCHAR(255), +column844 VARCHAR(255), +column845 VARCHAR(255), +column846 VARCHAR(255), +column847 VARCHAR(255), +column848 VARCHAR(255), +column849 VARCHAR(255), +column850 VARCHAR(255), +column851 VARCHAR(255), +column852 VARCHAR(255), +column853 VARCHAR(255), +column854 VARCHAR(255), +column855 VARCHAR(255), +column856 VARCHAR(255), +column857 VARCHAR(255), +column858 VARCHAR(255), +column859 VARCHAR(255), +column860 VARCHAR(255), +column861 VARCHAR(255), +column862 VARCHAR(255), +column863 VARCHAR(255), +column864 VARCHAR(255), +column865 VARCHAR(255), +column866 VARCHAR(255), +column867 VARCHAR(255), +column868 VARCHAR(255), +column869 VARCHAR(255), +column870 VARCHAR(255), +column871 VARCHAR(255), +column872 VARCHAR(255), +column873 VARCHAR(255), +column874 VARCHAR(255), +column875 VARCHAR(255), +column876 VARCHAR(255), +column877 VARCHAR(255), +column878 VARCHAR(255), +column879 VARCHAR(255), +column880 VARCHAR(255), +column881 VARCHAR(255), +column882 VARCHAR(255), +column883 VARCHAR(255), +column884 VARCHAR(255), +column885 VARCHAR(255), +column886 VARCHAR(255), +column887 VARCHAR(255), +column888 VARCHAR(255), +column889 VARCHAR(255), +column890 VARCHAR(255), +column891 VARCHAR(255), +column892 VARCHAR(255), +column893 VARCHAR(255), +column894 VARCHAR(255), +column895 VARCHAR(255), +column896 VARCHAR(255), +column897 VARCHAR(255), +column898 VARCHAR(255), +column899 VARCHAR(255), +column900 VARCHAR(255), +column901 VARCHAR(255), +column902 VARCHAR(255), +column903 VARCHAR(255), +column904 VARCHAR(255), +column905 VARCHAR(255), +column906 VARCHAR(255), +column907 VARCHAR(255), +column908 VARCHAR(255), +column909 VARCHAR(255), +column910 VARCHAR(255), +column911 VARCHAR(255), +column912 VARCHAR(255), +column913 VARCHAR(255), +column914 VARCHAR(255), +column915 VARCHAR(255), +column916 VARCHAR(255), +column917 VARCHAR(255), +column918 VARCHAR(255), +column919 VARCHAR(255), +column920 VARCHAR(255), +column921 VARCHAR(255), +column922 VARCHAR(255), +column923 VARCHAR(255), +column924 VARCHAR(255), +column925 VARCHAR(255), +column926 VARCHAR(255), +column927 VARCHAR(255), +column928 VARCHAR(255), +column929 VARCHAR(255), +column930 VARCHAR(255), +column931 VARCHAR(255), +column932 VARCHAR(255), +column933 VARCHAR(255), +column934 VARCHAR(255), +column935 VARCHAR(255), +column936 VARCHAR(255), +column937 VARCHAR(255), +column938 VARCHAR(255), +column939 VARCHAR(255), +column940 VARCHAR(255), +column941 VARCHAR(255), +column942 VARCHAR(255), +column943 VARCHAR(255), +column944 VARCHAR(255), +column945 VARCHAR(255), +column946 VARCHAR(255), +column947 VARCHAR(255), +column948 VARCHAR(255), +column949 VARCHAR(255), +column950 VARCHAR(255), +column951 VARCHAR(255), +column952 VARCHAR(255), +column953 VARCHAR(255), +column954 VARCHAR(255), +column955 VARCHAR(255), +column956 VARCHAR(255), +column957 VARCHAR(255), +column958 VARCHAR(255), +column959 VARCHAR(255), +column960 VARCHAR(255), +column961 VARCHAR(255), +column962 VARCHAR(255), +column963 VARCHAR(255), +column964 VARCHAR(255), +column965 VARCHAR(255), +column966 VARCHAR(255), +column967 VARCHAR(255), +column968 VARCHAR(255), +column969 VARCHAR(255), +column970 VARCHAR(255), +column971 VARCHAR(255), +column972 VARCHAR(255), +column973 VARCHAR(255), +column974 VARCHAR(255), +column975 VARCHAR(255), +column976 VARCHAR(255), +column977 VARCHAR(255), +column978 VARCHAR(255), +column979 VARCHAR(255), +column980 VARCHAR(255), +column981 VARCHAR(255), +column982 VARCHAR(255), +column983 VARCHAR(255), +column984 VARCHAR(255), +column985 VARCHAR(255), +column986 VARCHAR(255), +column987 VARCHAR(255), +column988 VARCHAR(255), +column989 VARCHAR(255), +column990 VARCHAR(255), +column991 VARCHAR(255), +column992 VARCHAR(255), +column993 VARCHAR(255), +column994 VARCHAR(255), +column995 VARCHAR(255), +column996 VARCHAR(255), +column997 VARCHAR(255), +column998 VARCHAR(255), +column999 VARCHAR(255), +column1000 VARCHAR(255) +) with ( + "a" = "1" +); \ No newline at end of file diff --git a/benchmark/data/flink/create.sql b/benchmark/data/flink/create.sql deleted file mode 100644 index 5e9a1e8f..00000000 --- a/benchmark/data/flink/create.sql +++ /dev/null @@ -1,113 +0,0 @@ -CREATE TABLE MyTable ('user_id' BIGINT, 'name' STRING) WITH ('connector' = 'oracle-x'); - -CREATE TABLE MyTable WITH ('connector' = 'oracle-x'); - -CREATE TEMPORARY TABLE client_errors ( - log_time TIMESTAMP(3), - request_line STRING, - status_code STRING, - size INT -) WITH ( - 'connector' = 'stream-x' -); - --- 尽管官方文档的 BNF 里没有支持创建临时表,但实际上是支持的 -CREATE TEMPORARY TABLE MyTable ('user_id' BIGINT, 'name' STRING) WITH ('connector' = 'oracle-x'); - -CREATE TABLE MyTable ( - 'user_id' BIGINT, - 'name' STRING, - 'timestamp' BIGINT METADATA, -- part of the query-to-sink schema - 'offset' BIGINT METADATA VIRTUAL, -- not part of the query-to-sink schema - 'record_time' TIMESTAMP(3) WITH LOCAL TIME ZONE METADATA FROM 'timestamp' -- reads and writes a Kafka record's timestamp -) WITH ('connector' = 'kafka'); - -CREATE TABLE MyTable ( - 'user_id' BIGINT, - 'price' DOUBLE, - 'quantity' DOUBLE, - 'cost' AS price * quanitity -- evaluate expression and supply the result to queries -) WITH ('connector' = 'kafka'); - -CREATE TABLE MyTable ( - 'user' BIGINT, - product STRING, - order_time TIMESTAMP(3), - WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND -) WITH ('connector' = 'kafka'); - -CREATE TABLE MyTable (id INT, PRIMARY KEY (id) NOT ENFORCED) WITH ('connector' = 'kafka'); - -CREATE TABLE tbl1 ( - a BIGINT, - h VARCHAR, - g AS 2 * (a + 1), - ts AS toTimestamp(b, 'yyyy-MM-dd HH:mm:ss'), - b VARCHAR, - proc AS PROCTIME(), - meta STRING METADATA, - my_meta STRING METADATA FROM 'meta', - my_meta STRING METADATA FROM 'meta' VIRTUAL, - meta STRING METADATA VIRTUAL, - PRIMARY KEY (a, b) NOT ENFORCED -) PARTITIONED BY (a, h) WITH ( - 'connector' = 'kafka', - 'kafka.topic' = 'log.test' -); - -CREATE TABLE Orders_in_file ( - 'user' BIGINT, - product STRING, - order_time_string STRING, - order_time AS to_timestamp(order_time) -) PARTITIONED BY ('user') WITH ( - 'connector' = 'filesystem', - 'path' = '...' -); - -CREATE TABLE Orders_with_watermark ( - id INT, - -- Add watermark definition - WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND -) WITH ( - -- Overwrite the startup-mode - 'scan.startup.mode' = 'latest-offset' -) LIKE Orders_in_file ( - -- Exclude everything besides the computed columns which we need to generate the watermark for. - -- We do not want to have the partitions or filesystem options as those do not apply to kafka. - EXCLUDING ALL - INCLUDING GENERATED -); - -CREATE TABLE my_ctas_table WITH ('connector' = 'kafka') -AS SELECT - id, - name, - age -FROM - source_table -WHERE - mod(id, 10) = 0; - -CREATE TABLE catalog1.db1.table1 (id INT) WITH ('connector' = 'kafka'); - -CREATE TABLE catalog1.db1.table1 ( - attr0 STRING, - attr1 BOOLEAN, - attr3 DECIMAL(38, 18), - attr4 TINYINT, - attr5 SMALLINT, - attr6 INT, - attr7 BIGINT, - attr8 FLOAT, - attr9 DOUBLE, - attr10 DATE, - attr11 TIME, - attr12 TIMESTAMP(3), - attr13 ARRAY, - attr14 ROW, - attr17 MAP, - name1 VARCHAR(64), - message ROW>, - `raw` RAW('class', 'snapshot') -) WITH ('connector' = 'kafka'); \ No newline at end of file diff --git a/benchmark/data/flink/select.sql b/benchmark/data/flink/select.sql deleted file mode 100644 index 9f2409e1..00000000 --- a/benchmark/data/flink/select.sql +++ /dev/null @@ -1,122 +0,0 @@ --- Window TVF Aggregation -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY window_start, window_end, GROUPING SETS ((supplier_id), ()); - -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY window_start, window_end, ROLLUP (supplier_id); - -SELECT - window_start, - window_end, - item, supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY window_start, window_end, CUBE (supplier_id, item); - --- GROUPING SETS -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY - window_start, - window_end, - GROUPING SETS ((supplier_id), ()); - -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY - window_start, - window_end, - ROLLUP (supplier_id); - -SELECT - window_start, - window_end, - item, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY - window_start, - window_end, - CUBE (supplier_id, item); - --- Group Window Aggregation -SELECT - `user`, - TUMBLE_START(order_time, INTERVAL '1' DAY) AS wStart, - SUM(amount) FROM Orders -GROUP BY - TUMBLE(order_time, INTERVAL '1' DAY), - `user`; - -SELECT - `user`, - TUMBLE_START(order_time, INTERVAL '1' DAY) AS wStart, - SUM(amount) FROM Orders -GROUP BY - HOP(order_time, INTERVAL '1' DAY), - `user`; - -SELECT - `user`, - TUMBLE_START(order_time, INTERVAL '1' DAY) AS wStart, - SUM(amount) FROM Orders -GROUP BY - SESSION(order_time, INTERVAL '1' DAY), - `user`; - --- Having -SELECT SUM(amount) -FROM Orders -GROUP BY `users` -HAVING SUM(amount) > 50; - --- Over Aggregation -SELECT order_id, order_time, amount, - SUM(amount) OVER ( - PARTITION BY product - ORDER BY order_time - RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND CURRENT ROW - ) AS one_hour_prod_amount_sum -FROM Orders; - -SELECT product, order_time, amount, - SUM(amount) OVER ( - PARTITION BY product - ORDER BY order_time - ROWS BETWEEN 5 PRECEDING AND CURRENT ROW - ) AS one_hour_prod_amount_sum -FROM source_table; - -SELECT order_id, order_time, amount, - SUM(amount) OVER w AS sum_amount, - AVG(amount) OVER w AS avg_amount -FROM Orders -WINDOW w AS ( - PARTITION BY product - ORDER BY order_time - RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND CURRENT ROW); \ No newline at end of file diff --git a/benchmark/data/hive/create.sql b/benchmark/data/hive/create.sql deleted file mode 100644 index fabdc8d7..00000000 --- a/benchmark/data/hive/create.sql +++ /dev/null @@ -1,100 +0,0 @@ -CREATE TEMPORARY TABLE list_bucket_multiple (col1 STRING, col2 INT, col3 STRING); - -CREATE TEMPORARY EXTERNAL TABLE list_bucket_multiple (col1 STRING, col2 INT, col3 STRING); - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING); - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment'; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment1' PARTITIONED BY (`date` STRING COMMENT 'column_comment'); - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment2' PARTITIONED BY (`date` STRING COMMENT 'column_comment') CLUSTERED BY (col1, col2) INTO 32 BUCKETS; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment3' PARTITIONED BY (`date` STRING COMMENT 'column_comment') CLUSTERED BY (col1, col2) SORTED BY (col1 ASC) INTO 22 BUCKETS; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment4' PARTITIONED BY (`date` STRING COMMENT 'column_comment') CLUSTERED BY (col1, col2) SORTED BY (col1 ASC) INTO 34 BUCKETS SKEWED BY (col1, col2) ON (('s1', 1), ('s3', 3), ('s13', 13), ('s78', 78)) STORED AS DIRECTORIES; - -CREATE TABLE page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS SEQUENCEFILE; - -CREATE TEMPORARY EXTERNAL TABLE page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS TEXTFILE; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS RCFILE; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS ORC LOCATION '/hsd_path'; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS PARQUET LOCATION '/hsd_path' AS -SELECT - (key % 1024) new_key, - concat(key, value) key_value_pair -FROM - key_value_store SORT BY new_key, - key_value_pair; - - -CREATE TABLE list_bucket_single (key STRING, value STRING) - SKEWED BY (key) ON (1,5,6) STORED AS AVRO; - -CREATE TRANSACTIONAL TABLE transactional_table_test(key STRING, value STRING) PARTITIONED BY(ds STRING) STORED AS INPUTFORMAT 'inputfilename' OUTPUTFORMAT 'outputfilename'; - -CREATE TABLE IF NOT EXISTS copy_table LIKE origin_table; - -CREATE TEMPORARY TABLE IF NOT EXISTS copy_table LIKE origin_table; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS copy_table LIKE origin_table; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS copy_table LIKE origin_table LOCATION '/hdfs_path'; - -CREATE TABLE IF NOT EXISTS derived_table AS -SELECT - * -FROM - origin_table; - -CREATE TABLE `mydb.t1`( - `id` INT, - `dept_no` INT, - `addr` STRING, - `tel` STRING, - `hobby` ARRAY < STRING >, - `add` MAP < STRING, - STRING > -) PARTITIONED BY(`date` STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-' MAP KEYS TERMINATED BY ':'; - -CREATE EXTERNAL TABLE mydb.ext_table( - id INT, - name STRING, - hobby ARRAY < STRING >, - add - MAP < STRING, - STRING > -) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-' MAP KEYS TERMINATED BY ':' LOCATION '/user/mydb/ext_table' TBLPROPERTIES('author' = 'hayden', 'desc' = '一个外部测试表'); diff --git a/benchmark/data/hive/params.json b/benchmark/data/hive/params.json deleted file mode 100644 index 02cadc98..00000000 --- a/benchmark/data/hive/params.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "create": { - "validate": ["$sql"], - "getAllTokens": ["$sql"], - "getAllEntities": ["$sql", { "lineNumber": 8, "column": 1 }] - }, - "select": { - "validate": ["$sql"], - "getAllTokens": ["$sql"], - "getAllEntities": ["$sql", { "lineNumber": 8, "column": 1 }] - } -} \ No newline at end of file diff --git a/benchmark/data/hive/select.sql b/benchmark/data/hive/select.sql deleted file mode 100644 index 1a3f4cda..00000000 --- a/benchmark/data/hive/select.sql +++ /dev/null @@ -1,102 +0,0 @@ --- Select Syntax -SELECT col1, col2 FROM table_name_1; - -SELECT ALL col3, col4 FROM table_name_2 WHERE amount > 10 AND region = "US" GROUP BY col5 ORDER BY col6 CLUSTER BY col7 LIMIT 2,5; - --- WHERE Clause -SELECT * FROM sales WHERE amount > 10 AND region = "US"; - --- ALL and DISTINCT Clauses -SELECT DISTINCT col1 FROM t1; - --- Partition Based Queries -SELECT page_views.* -FROM page_views -WHERE page_views.`date` >= '2018-03-01' AND page_views.`date` <= '2018-03-31'; - -SELECT page_views.* -FROM page_views JOIN dim_users - ON (page_views.user_id = dim_users.id AND page_views.adate >= '2008-03-01' AND page_views.adate <= '2008-03-31'); - --- HAVING Clause -SELECT col1 FROM t1 GROUP BY col1 HAVING SUM(col2) > 10; - -SELECT col1 FROM (SELECT col1, SUM(col2) AS col2sum FROM t1 GROUP BY col1) t2 WHERE t2.col2sum > 10; - --- LIMIT Clause -SELECT * FROM customers LIMIT 5; - -SELECT * FROM customers ORDER BY create_date LIMIT 5; - -SELECT * FROM customers ORDER BY create_date LIMIT 2,5; - --- REGEX Column Specification -SELECT `(ds|hr)?+.+` FROM sales; - --- Syntax of Sort By -SELECT key, value FROM src SORT BY key ASC, value DESC; - --- Distribute By -SELECT col1, col2 FROM t1 DISTRIBUTE BY col1 SORT BY col1 ASC, col2 DESC; - --- Join Syntax -SELECT a.* FROM a JOIN b ON (a.id = b.id AND a.department = b.department); - --- MapJoin Restrictions -SELECT /*+ MAPJOIN(b) */ a.key, a.value -FROM a JOIN b ON a.key = b.key; - --- Union Syntax --- UNION within a FROM Clause -SELECT u.id, actions.adate -FROM ( - SELECT av.uid AS uid - FROM action_video av - WHERE av.adate = '2008-06-03' - UNION ALL - SELECT ac.uid AS uid - FROM action_comment ac - WHERE ac.adate = '2008-06-03' - ) actions JOIN users u ON (u.id = actions.uid); - --- Unions in DDL and Insert Statements--Applying Subclauses -SELECT key FROM (SELECT key FROM src ORDER BY key LIMIT 10)subq1 -UNION -SELECT key FROM (SELECT key FROM src1 ORDER BY key LIMIT 10)subq2; - -SELECT key FROM src -UNION -SELECT key FROM src1 -ORDER BY key LIMIT 10; - --- Unions in DDL and Insert Statements--Column Aliases for Schema Matching -INSERT OVERWRITE TABLE target_table - SELECT name, id, category FROM source_table_1 - UNION ALL - SELECT name, id, "Category159" as category FROM source_table_2; - --- Unions in DDL and Insert Statements--Column Type Conversion -SELECT name, id, cast('2001-01-01' as date) d FROM source_table_1 -UNION ALL -SELECT name, id, hiredate as d FROM source_table_2; - --- Sampling Bucketized Table -SELECT * -FROM source TABLESAMPLE(BUCKET 3 OUT OF 32 ON rand()) s; - --- Block Sampling -SELECT * -FROM source TABLESAMPLE(0.1 PERCENT) s; - -SELECT * -FROM source TABLESAMPLE(100M) s; - --- Subqueries in the FROM Clause -SELECT t3.col -FROM ( - SELECT a+b AS col - FROM t1 - UNION ALL - SELECT c+d AS col - FROM t2 -) t3; diff --git a/benchmark/data/impala/create.sql b/benchmark/data/impala/create.sql deleted file mode 100644 index f5dafe2c..00000000 --- a/benchmark/data/impala/create.sql +++ /dev/null @@ -1,105 +0,0 @@ -CREATE EXTERNAL TABLE external_parquet (c1 INT, c2 STRING, c3 TIMESTAMP) - STORED AS PARQUET LOCATION '/user/etl/destination'; - -create table census (name string, census_year int) partitioned by (year int); - -CREATE TABLE census_data (last_name STRING, first_name STRING, state STRING, address STRING) - SORT BY (last_name, state) - STORED AS PARQUET - TBLPROPERTIES ('transactional'='true', 'transactional_properties'='insert_only'); - -CREATE TABLE sorted_census_data - SORT BY (last_name, state) - STORED AS PARQUET - AS SELECT last_name, first_name, state, address - FROM unsorted_census_data; - -CREATE TABLE yy2 (s STRING, year INT); - -CREATE TABLE kudu_no_partition_by_clause - ( - id bigint PRIMARY KEY, s STRING, b BOOLEAN - ) - STORED AS KUDU; - -CREATE TABLE kudu_t1 (id BIGINT PRIMARY key, s STRING, b BOOLEAN) - PARTITION BY HASH (id) PARTITIONS 20 STORED AS KUDU; - -CREATE TABLE kudu_t2 (id BIGINT, s STRING, b BOOLEAN, PRIMARY KEY (id,s)) - PARTITION BY HASH (s) PARTITIONS 30 STORED AS KUDU; - -CREATE TABLE kudu_t3 (id BIGINT, year INT, s STRING, - b BOOLEAN, PRIMARY KEY (id,year)) - PARTITION BY HASH (id) PARTITIONS 20, - RANGE (year) (PARTITION 1980 <= VALUES < 1990, - PARTITION 1990 <= VALUES < 2000, - PARTITION VALUE = 2001, - PARTITION 2001 < VALUES < 2003) - STORED AS KUDU; - -CREATE EXTERNAL TABLE external_t1 STORED AS KUDU - TBLPROPERTIES ('kudu.table_name'='kudu_tbl_created_via_api'); - -CREATE EXTERNAL TABLE myextkudutbl ( - id int PRIMARY KEY, - name string) - PARTITION BY HASH PARTITIONS 8 - STORED AS KUDU - TBLPROPERTIES ('external.table.purge'='true'); - -CREATE TABLE ctas_t1 - PRIMARY KEY (id) PARTITION BY HASH (id) PARTITIONS 10 - STORED AS KUDU - AS SELECT id, s FROM kudu_t1; - -CREATE TABLE pk_multiple_columns -( - col1 BIGINT, - col2 STRING, - col3 BOOLEAN, - PRIMARY KEY (col1, col2) -) PARTITION BY HASH(col2) PARTITIONS 2 STORED AS KUDU; - -CREATE TABLE user.inline_pk_rewritten ( - id BIGINT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, - s STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, - PRIMARY KEY (id) -) -PARTITION BY HASH (id) PARTITIONS 2 -STORED AS KUDU -TBLPROPERTIES ('kudu.master_addresses'='host.example.com'); - -CREATE TABLE default_vals -( - id BIGINT PRIMARY KEY, - name STRING NOT NULL DEFAULT 'unknown', - address STRING DEFAULT upper('no fixed address'), - age INT DEFAULT -1, - earthling BOOLEAN DEFAULT TRUE, - planet_of_origin STRING DEFAULT 'Earth', - optional_col STRING DEFAULT NULL -) PARTITION BY HASH(id) PARTITIONS 2 STORED AS KUDU; - -CREATE TABLE various_encodings -( - id BIGINT PRIMARY KEY, - c1 BIGINT ENCODING PLAIN_ENCODING, - c2 BIGINT ENCODING AUTO_ENCODING, - c3 TINYINT ENCODING BIT_SHUFFLE, - c4 DOUBLE ENCODING BIT_SHUFFLE, - c5 BOOLEAN ENCODING RLE, - c6 STRING ENCODING DICT_ENCODING, - c7 STRING ENCODING PREFIX_ENCODING -) PARTITION BY HASH(id) PARTITIONS 2 STORED AS KUDU; - - -CREATE TABLE blog_posts -( - user_id STRING ENCODING DICT_ENCODING, - post_id BIGINT ENCODING BIT_SHUFFLE, - subject STRING ENCODING PLAIN_ENCODING, - body STRING COMPRESSION LZ4, - spanish_translation STRING COMPRESSION SNAPPY, - esperanto_translation STRING COMPRESSION ZLIB, - PRIMARY KEY (user_id, post_id) -) PARTITION BY HASH(user_id, post_id) PARTITIONS 2 STORED AS KUDU; diff --git a/benchmark/data/impala/select.sql b/benchmark/data/impala/select.sql deleted file mode 100644 index 377b1943..00000000 --- a/benchmark/data/impala/select.sql +++ /dev/null @@ -1,99 +0,0 @@ -SELECT * from a; -SELECT t1.c1, t2.c2 FROM t1 JOIN t2 - ON t1.id = t2.id and t1.type_flag = t2.type_flag - WHERE t1.c1 > 100; - -SELECT t1.c1, t2.c2 FROM t1 JOIN t2 - USING (id, type_flag) - WHERE t1.c1 > 100; - -SELECT t1.c1, t2.c2 FROM t1, t2 - WHERE - t1.id = t2.id AND t1.type_flag = t2.type_flag - AND t1.c1 > 100; - -SELECT lhs.id, rhs.parent, lhs.c1, rhs.c2 FROM tree_data lhs, tree_data rhs WHERE lhs.id = rhs.parent; - -SELECT t1.id, c1, c2 FROM t1, t2 WHERE t1.id = t2.id; - -SELECT t1.id, c1, c2 FROM t1 JOIN t2 ON t1.id = t2.id; - -SELECT t1.id, c1, c2 FROM t1 INNER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 RIGHT OUTER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 CROSS JOIN t2 WHERE t1.total > t2.maximum_price; - -SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.int_col < t2.int_col; - -SELECT t1.c1, t1.c2, t1.c2 FROM t1 LEFT SEMI JOIN t2 ON t1.id = t2.id; - -select t1.c1 as first_id, t2.c2 as second_id from - t1 join t2 on first_id = second_id; - -select fact.custno, dimension.custno from - customer_data as fact join customer_address as dimension - using (custno); - --- ORDER BY -SELECT id FROM games ORDER BY score DESC; - -SELECT id, item FROM games, games.score - WHERE item > 1000000 -ORDER BY id, item desc; - -SELECT id, info.key1 AS k, info.value1 AS v from games3, games3.play AS plays, games3.item AS info - WHERE info.KEY1 = 'score' AND info.VALUE1 > 1000000 -ORDER BY id, info.value1 desc; - -SELECT user_id AS "Top 10 Visitors", SUM(page_views) FROM web_stats - GROUP BY page_views, user_id - ORDER BY SUM(page_views) DESC LIMIT 10; - -SELECT page_title AS "Page 3 of search results", page_url FROM search_content - WHERE LOWER(page_title) LIKE '%game%' - ORDER BY page_title LIMIT 10 OFFSET 20; - -select x from numbers order by x desc nulls last; - --- GROUP BY -select - ss_item_sk as Item, - count(ss_item_sk) as Times_Purchased, - sum(ss_quantity) as Total_Quantity_Purchased -from store_sales - group by ss_item_sk - order by sum(ss_quantity) desc - limit 5; - -select - ss_item_sk as Item, - count(ss_item_sk) as Times_Purchased, - sum(ss_quantity) as Total_Quantity_Purchased -from store_sales - group by ss_item_sk - having times_purchased >= 100 - order by sum(ss_quantity) - limit 5; - -select ss_wholesale_cost, avg(ss_quantity * ss_sales_price) as avg_revenue_per_sale - from sales - group by ss_wholesale_cost - order by avg_revenue_per_sale desc - limit 5; - -select x as "Top 3" from numbers order by x desc limit 3; - -SELECT X FROM T1 LIMIT LENGTH('HELLO WORLD'); -SELECT x FROM t1 LIMIT cast(truncate(9.9) AS INT); - --- UNION -select * from (select x from few_ints union all select x from few_ints) as t1 order by x; - --- Subqueries -SELECT employee_name, employee_id FROM employees one WHERE - salary > (SELECT avg(salary) FROM employees two WHERE one.dept_id = two.dept_id); diff --git a/benchmark/data/insert.sql b/benchmark/data/insert.sql new file mode 100644 index 00000000..62d30a4c --- /dev/null +++ b/benchmark/data/insert.sql @@ -0,0 +1,1001 @@ +INSERT INTO my_table VALUES +('id1', 'value1', 'name1', 'age1', 'bir1', 'a11', 'a21', 'a31', 'a41', 'a51', 'a61', 'a71', 'a81', 'a91', 'a101', 'a111'), +('id2', 'value2', 'name2', 'age2', 'bir2', 'a12', 'a22', 'a32', 'a42', 'a52', 'a62', 'a72', 'a82', 'a92', 'a102', 'a112'), +('id3', 'value3', 'name3', 'age3', 'bir3', 'a13', 'a23', 'a33', 'a43', 'a53', 'a63', 'a73', 'a83', 'a93', 'a103', 'a113'), +('id4', 'value4', 'name4', 'age4', 'bir4', 'a14', 'a24', 'a34', 'a44', 'a54', 'a64', 'a74', 'a84', 'a94', 'a104', 'a114'), +('id5', 'value5', 'name5', 'age5', 'bir5', 'a15', 'a25', 'a35', 'a45', 'a55', 'a65', 'a75', 'a85', 'a95', 'a105', 'a115'), +('id6', 'value6', 'name6', 'age6', 'bir6', 'a16', 'a26', 'a36', 'a46', 'a56', 'a66', 'a76', 'a86', 'a96', 'a106', 'a116'), +('id7', 'value7', 'name7', 'age7', 'bir7', 'a17', 'a27', 'a37', 'a47', 'a57', 'a67', 'a77', 'a87', 'a97', 'a107', 'a117'), +('id8', 'value8', 'name8', 'age8', 'bir8', 'a18', 'a28', 'a38', 'a48', 'a58', 'a68', 'a78', 'a88', 'a98', 'a108', 'a118'), +('id9', 'value9', 'name9', 'age9', 'bir9', 'a19', 'a29', 'a39', 'a49', 'a59', 'a69', 'a79', 'a89', 'a99', 'a109', 'a119'), +('id10', 'value10', 'name10', 'age10', 'bir10', 'a110', 'a210', 'a310', 'a410', 'a510', 'a610', 'a710', 'a810', 'a910', 'a1010', 'a1110'), +('id11', 'value11', 'name11', 'age11', 'bir11', 'a111', 'a211', 'a311', 'a411', 'a511', 'a611', 'a711', 'a811', 'a911', 'a1011', 'a1111'), +('id12', 'value12', 'name12', 'age12', 'bir12', 'a112', 'a212', 'a312', 'a412', 'a512', 'a612', 'a712', 'a812', 'a912', 'a1012', 'a1112'), +('id13', 'value13', 'name13', 'age13', 'bir13', 'a113', 'a213', 'a313', 'a413', 'a513', 'a613', 'a713', 'a813', 'a913', 'a1013', 'a1113'), +('id14', 'value14', 'name14', 'age14', 'bir14', 'a114', 'a214', 'a314', 'a414', 'a514', 'a614', 'a714', 'a814', 'a914', 'a1014', 'a1114'), +('id15', 'value15', 'name15', 'age15', 'bir15', 'a115', 'a215', 'a315', 'a415', 'a515', 'a615', 'a715', 'a815', 'a915', 'a1015', 'a1115'), +('id16', 'value16', 'name16', 'age16', 'bir16', 'a116', 'a216', 'a316', 'a416', 'a516', 'a616', 'a716', 'a816', 'a916', 'a1016', 'a1116'), +('id17', 'value17', 'name17', 'age17', 'bir17', 'a117', 'a217', 'a317', 'a417', 'a517', 'a617', 'a717', 'a817', 'a917', 'a1017', 'a1117'), +('id18', 'value18', 'name18', 'age18', 'bir18', 'a118', 'a218', 'a318', 'a418', 'a518', 'a618', 'a718', 'a818', 'a918', 'a1018', 'a1118'), +('id19', 'value19', 'name19', 'age19', 'bir19', 'a119', 'a219', 'a319', 'a419', 'a519', 'a619', 'a719', 'a819', 'a919', 'a1019', 'a1119'), +('id20', 'value20', 'name20', 'age20', 'bir20', 'a120', 'a220', 'a320', 'a420', 'a520', 'a620', 'a720', 'a820', 'a920', 'a1020', 'a1120'), +('id21', 'value21', 'name21', 'age21', 'bir21', 'a121', 'a221', 'a321', 'a421', 'a521', 'a621', 'a721', 'a821', 'a921', 'a1021', 'a1121'), +('id22', 'value22', 'name22', 'age22', 'bir22', 'a122', 'a222', 'a322', 'a422', 'a522', 'a622', 'a722', 'a822', 'a922', 'a1022', 'a1122'), +('id23', 'value23', 'name23', 'age23', 'bir23', 'a123', 'a223', 'a323', 'a423', 'a523', 'a623', 'a723', 'a823', 'a923', 'a1023', 'a1123'), +('id24', 'value24', 'name24', 'age24', 'bir24', 'a124', 'a224', 'a324', 'a424', 'a524', 'a624', 'a724', 'a824', 'a924', 'a1024', 'a1124'), +('id25', 'value25', 'name25', 'age25', 'bir25', 'a125', 'a225', 'a325', 'a425', 'a525', 'a625', 'a725', 'a825', 'a925', 'a1025', 'a1125'), +('id26', 'value26', 'name26', 'age26', 'bir26', 'a126', 'a226', 'a326', 'a426', 'a526', 'a626', 'a726', 'a826', 'a926', 'a1026', 'a1126'), +('id27', 'value27', 'name27', 'age27', 'bir27', 'a127', 'a227', 'a327', 'a427', 'a527', 'a627', 'a727', 'a827', 'a927', 'a1027', 'a1127'), +('id28', 'value28', 'name28', 'age28', 'bir28', 'a128', 'a228', 'a328', 'a428', 'a528', 'a628', 'a728', 'a828', 'a928', 'a1028', 'a1128'), +('id29', 'value29', 'name29', 'age29', 'bir29', 'a129', 'a229', 'a329', 'a429', 'a529', 'a629', 'a729', 'a829', 'a929', 'a1029', 'a1129'), +('id30', 'value30', 'name30', 'age30', 'bir30', 'a130', 'a230', 'a330', 'a430', 'a530', 'a630', 'a730', 'a830', 'a930', 'a1030', 'a1130'), +('id31', 'value31', 'name31', 'age31', 'bir31', 'a131', 'a231', 'a331', 'a431', 'a531', 'a631', 'a731', 'a831', 'a931', 'a1031', 'a1131'), +('id32', 'value32', 'name32', 'age32', 'bir32', 'a132', 'a232', 'a332', 'a432', 'a532', 'a632', 'a732', 'a832', 'a932', 'a1032', 'a1132'), +('id33', 'value33', 'name33', 'age33', 'bir33', 'a133', 'a233', 'a333', 'a433', 'a533', 'a633', 'a733', 'a833', 'a933', 'a1033', 'a1133'), +('id34', 'value34', 'name34', 'age34', 'bir34', 'a134', 'a234', 'a334', 'a434', 'a534', 'a634', 'a734', 'a834', 'a934', 'a1034', 'a1134'), +('id35', 'value35', 'name35', 'age35', 'bir35', 'a135', 'a235', 'a335', 'a435', 'a535', 'a635', 'a735', 'a835', 'a935', 'a1035', 'a1135'), +('id36', 'value36', 'name36', 'age36', 'bir36', 'a136', 'a236', 'a336', 'a436', 'a536', 'a636', 'a736', 'a836', 'a936', 'a1036', 'a1136'), +('id37', 'value37', 'name37', 'age37', 'bir37', 'a137', 'a237', 'a337', 'a437', 'a537', 'a637', 'a737', 'a837', 'a937', 'a1037', 'a1137'), +('id38', 'value38', 'name38', 'age38', 'bir38', 'a138', 'a238', 'a338', 'a438', 'a538', 'a638', 'a738', 'a838', 'a938', 'a1038', 'a1138'), +('id39', 'value39', 'name39', 'age39', 'bir39', 'a139', 'a239', 'a339', 'a439', 'a539', 'a639', 'a739', 'a839', 'a939', 'a1039', 'a1139'), +('id40', 'value40', 'name40', 'age40', 'bir40', 'a140', 'a240', 'a340', 'a440', 'a540', 'a640', 'a740', 'a840', 'a940', 'a1040', 'a1140'), +('id41', 'value41', 'name41', 'age41', 'bir41', 'a141', 'a241', 'a341', 'a441', 'a541', 'a641', 'a741', 'a841', 'a941', 'a1041', 'a1141'), +('id42', 'value42', 'name42', 'age42', 'bir42', 'a142', 'a242', 'a342', 'a442', 'a542', 'a642', 'a742', 'a842', 'a942', 'a1042', 'a1142'), +('id43', 'value43', 'name43', 'age43', 'bir43', 'a143', 'a243', 'a343', 'a443', 'a543', 'a643', 'a743', 'a843', 'a943', 'a1043', 'a1143'), +('id44', 'value44', 'name44', 'age44', 'bir44', 'a144', 'a244', 'a344', 'a444', 'a544', 'a644', 'a744', 'a844', 'a944', 'a1044', 'a1144'), +('id45', 'value45', 'name45', 'age45', 'bir45', 'a145', 'a245', 'a345', 'a445', 'a545', 'a645', 'a745', 'a845', 'a945', 'a1045', 'a1145'), +('id46', 'value46', 'name46', 'age46', 'bir46', 'a146', 'a246', 'a346', 'a446', 'a546', 'a646', 'a746', 'a846', 'a946', 'a1046', 'a1146'), +('id47', 'value47', 'name47', 'age47', 'bir47', 'a147', 'a247', 'a347', 'a447', 'a547', 'a647', 'a747', 'a847', 'a947', 'a1047', 'a1147'), +('id48', 'value48', 'name48', 'age48', 'bir48', 'a148', 'a248', 'a348', 'a448', 'a548', 'a648', 'a748', 'a848', 'a948', 'a1048', 'a1148'), +('id49', 'value49', 'name49', 'age49', 'bir49', 'a149', 'a249', 'a349', 'a449', 'a549', 'a649', 'a749', 'a849', 'a949', 'a1049', 'a1149'), +('id50', 'value50', 'name50', 'age50', 'bir50', 'a150', 'a250', 'a350', 'a450', 'a550', 'a650', 'a750', 'a850', 'a950', 'a1050', 'a1150'), +('id51', 'value51', 'name51', 'age51', 'bir51', 'a151', 'a251', 'a351', 'a451', 'a551', 'a651', 'a751', 'a851', 'a951', 'a1051', 'a1151'), +('id52', 'value52', 'name52', 'age52', 'bir52', 'a152', 'a252', 'a352', 'a452', 'a552', 'a652', 'a752', 'a852', 'a952', 'a1052', 'a1152'), +('id53', 'value53', 'name53', 'age53', 'bir53', 'a153', 'a253', 'a353', 'a453', 'a553', 'a653', 'a753', 'a853', 'a953', 'a1053', 'a1153'), +('id54', 'value54', 'name54', 'age54', 'bir54', 'a154', 'a254', 'a354', 'a454', 'a554', 'a654', 'a754', 'a854', 'a954', 'a1054', 'a1154'), +('id55', 'value55', 'name55', 'age55', 'bir55', 'a155', 'a255', 'a355', 'a455', 'a555', 'a655', 'a755', 'a855', 'a955', 'a1055', 'a1155'), +('id56', 'value56', 'name56', 'age56', 'bir56', 'a156', 'a256', 'a356', 'a456', 'a556', 'a656', 'a756', 'a856', 'a956', 'a1056', 'a1156'), +('id57', 'value57', 'name57', 'age57', 'bir57', 'a157', 'a257', 'a357', 'a457', 'a557', 'a657', 'a757', 'a857', 'a957', 'a1057', 'a1157'), +('id58', 'value58', 'name58', 'age58', 'bir58', 'a158', 'a258', 'a358', 'a458', 'a558', 'a658', 'a758', 'a858', 'a958', 'a1058', 'a1158'), +('id59', 'value59', 'name59', 'age59', 'bir59', 'a159', 'a259', 'a359', 'a459', 'a559', 'a659', 'a759', 'a859', 'a959', 'a1059', 'a1159'), +('id60', 'value60', 'name60', 'age60', 'bir60', 'a160', 'a260', 'a360', 'a460', 'a560', 'a660', 'a760', 'a860', 'a960', 'a1060', 'a1160'), +('id61', 'value61', 'name61', 'age61', 'bir61', 'a161', 'a261', 'a361', 'a461', 'a561', 'a661', 'a761', 'a861', 'a961', 'a1061', 'a1161'), +('id62', 'value62', 'name62', 'age62', 'bir62', 'a162', 'a262', 'a362', 'a462', 'a562', 'a662', 'a762', 'a862', 'a962', 'a1062', 'a1162'), +('id63', 'value63', 'name63', 'age63', 'bir63', 'a163', 'a263', 'a363', 'a463', 'a563', 'a663', 'a763', 'a863', 'a963', 'a1063', 'a1163'), +('id64', 'value64', 'name64', 'age64', 'bir64', 'a164', 'a264', 'a364', 'a464', 'a564', 'a664', 'a764', 'a864', 'a964', 'a1064', 'a1164'), +('id65', 'value65', 'name65', 'age65', 'bir65', 'a165', 'a265', 'a365', 'a465', 'a565', 'a665', 'a765', 'a865', 'a965', 'a1065', 'a1165'), +('id66', 'value66', 'name66', 'age66', 'bir66', 'a166', 'a266', 'a366', 'a466', 'a566', 'a666', 'a766', 'a866', 'a966', 'a1066', 'a1166'), +('id67', 'value67', 'name67', 'age67', 'bir67', 'a167', 'a267', 'a367', 'a467', 'a567', 'a667', 'a767', 'a867', 'a967', 'a1067', 'a1167'), +('id68', 'value68', 'name68', 'age68', 'bir68', 'a168', 'a268', 'a368', 'a468', 'a568', 'a668', 'a768', 'a868', 'a968', 'a1068', 'a1168'), +('id69', 'value69', 'name69', 'age69', 'bir69', 'a169', 'a269', 'a369', 'a469', 'a569', 'a669', 'a769', 'a869', 'a969', 'a1069', 'a1169'), +('id70', 'value70', 'name70', 'age70', 'bir70', 'a170', 'a270', 'a370', 'a470', 'a570', 'a670', 'a770', 'a870', 'a970', 'a1070', 'a1170'), +('id71', 'value71', 'name71', 'age71', 'bir71', 'a171', 'a271', 'a371', 'a471', 'a571', 'a671', 'a771', 'a871', 'a971', 'a1071', 'a1171'), +('id72', 'value72', 'name72', 'age72', 'bir72', 'a172', 'a272', 'a372', 'a472', 'a572', 'a672', 'a772', 'a872', 'a972', 'a1072', 'a1172'), +('id73', 'value73', 'name73', 'age73', 'bir73', 'a173', 'a273', 'a373', 'a473', 'a573', 'a673', 'a773', 'a873', 'a973', 'a1073', 'a1173'), +('id74', 'value74', 'name74', 'age74', 'bir74', 'a174', 'a274', 'a374', 'a474', 'a574', 'a674', 'a774', 'a874', 'a974', 'a1074', 'a1174'), +('id75', 'value75', 'name75', 'age75', 'bir75', 'a175', 'a275', 'a375', 'a475', 'a575', 'a675', 'a775', 'a875', 'a975', 'a1075', 'a1175'), +('id76', 'value76', 'name76', 'age76', 'bir76', 'a176', 'a276', 'a376', 'a476', 'a576', 'a676', 'a776', 'a876', 'a976', 'a1076', 'a1176'), +('id77', 'value77', 'name77', 'age77', 'bir77', 'a177', 'a277', 'a377', 'a477', 'a577', 'a677', 'a777', 'a877', 'a977', 'a1077', 'a1177'), +('id78', 'value78', 'name78', 'age78', 'bir78', 'a178', 'a278', 'a378', 'a478', 'a578', 'a678', 'a778', 'a878', 'a978', 'a1078', 'a1178'), +('id79', 'value79', 'name79', 'age79', 'bir79', 'a179', 'a279', 'a379', 'a479', 'a579', 'a679', 'a779', 'a879', 'a979', 'a1079', 'a1179'), +('id80', 'value80', 'name80', 'age80', 'bir80', 'a180', 'a280', 'a380', 'a480', 'a580', 'a680', 'a780', 'a880', 'a980', 'a1080', 'a1180'), +('id81', 'value81', 'name81', 'age81', 'bir81', 'a181', 'a281', 'a381', 'a481', 'a581', 'a681', 'a781', 'a881', 'a981', 'a1081', 'a1181'), +('id82', 'value82', 'name82', 'age82', 'bir82', 'a182', 'a282', 'a382', 'a482', 'a582', 'a682', 'a782', 'a882', 'a982', 'a1082', 'a1182'), +('id83', 'value83', 'name83', 'age83', 'bir83', 'a183', 'a283', 'a383', 'a483', 'a583', 'a683', 'a783', 'a883', 'a983', 'a1083', 'a1183'), +('id84', 'value84', 'name84', 'age84', 'bir84', 'a184', 'a284', 'a384', 'a484', 'a584', 'a684', 'a784', 'a884', 'a984', 'a1084', 'a1184'), +('id85', 'value85', 'name85', 'age85', 'bir85', 'a185', 'a285', 'a385', 'a485', 'a585', 'a685', 'a785', 'a885', 'a985', 'a1085', 'a1185'), +('id86', 'value86', 'name86', 'age86', 'bir86', 'a186', 'a286', 'a386', 'a486', 'a586', 'a686', 'a786', 'a886', 'a986', 'a1086', 'a1186'), +('id87', 'value87', 'name87', 'age87', 'bir87', 'a187', 'a287', 'a387', 'a487', 'a587', 'a687', 'a787', 'a887', 'a987', 'a1087', 'a1187'), +('id88', 'value88', 'name88', 'age88', 'bir88', 'a188', 'a288', 'a388', 'a488', 'a588', 'a688', 'a788', 'a888', 'a988', 'a1088', 'a1188'), +('id89', 'value89', 'name89', 'age89', 'bir89', 'a189', 'a289', 'a389', 'a489', 'a589', 'a689', 'a789', 'a889', 'a989', 'a1089', 'a1189'), +('id90', 'value90', 'name90', 'age90', 'bir90', 'a190', 'a290', 'a390', 'a490', 'a590', 'a690', 'a790', 'a890', 'a990', 'a1090', 'a1190'), +('id91', 'value91', 'name91', 'age91', 'bir91', 'a191', 'a291', 'a391', 'a491', 'a591', 'a691', 'a791', 'a891', 'a991', 'a1091', 'a1191'), +('id92', 'value92', 'name92', 'age92', 'bir92', 'a192', 'a292', 'a392', 'a492', 'a592', 'a692', 'a792', 'a892', 'a992', 'a1092', 'a1192'), +('id93', 'value93', 'name93', 'age93', 'bir93', 'a193', 'a293', 'a393', 'a493', 'a593', 'a693', 'a793', 'a893', 'a993', 'a1093', 'a1193'), +('id94', 'value94', 'name94', 'age94', 'bir94', 'a194', 'a294', 'a394', 'a494', 'a594', 'a694', 'a794', 'a894', 'a994', 'a1094', 'a1194'), +('id95', 'value95', 'name95', 'age95', 'bir95', 'a195', 'a295', 'a395', 'a495', 'a595', 'a695', 'a795', 'a895', 'a995', 'a1095', 'a1195'), +('id96', 'value96', 'name96', 'age96', 'bir96', 'a196', 'a296', 'a396', 'a496', 'a596', 'a696', 'a796', 'a896', 'a996', 'a1096', 'a1196'), +('id97', 'value97', 'name97', 'age97', 'bir97', 'a197', 'a297', 'a397', 'a497', 'a597', 'a697', 'a797', 'a897', 'a997', 'a1097', 'a1197'), +('id98', 'value98', 'name98', 'age98', 'bir98', 'a198', 'a298', 'a398', 'a498', 'a598', 'a698', 'a798', 'a898', 'a998', 'a1098', 'a1198'), +('id99', 'value99', 'name99', 'age99', 'bir99', 'a199', 'a299', 'a399', 'a499', 'a599', 'a699', 'a799', 'a899', 'a999', 'a1099', 'a1199'), +('id100', 'value100', 'name100', 'age100', 'bir100', 'a1100', 'a2100', 'a3100', 'a4100', 'a5100', 'a6100', 'a7100', 'a8100', 'a9100', 'a10100', 'a11100'), +('id101', 'value101', 'name101', 'age101', 'bir101', 'a1101', 'a2101', 'a3101', 'a4101', 'a5101', 'a6101', 'a7101', 'a8101', 'a9101', 'a10101', 'a11101'), +('id102', 'value102', 'name102', 'age102', 'bir102', 'a1102', 'a2102', 'a3102', 'a4102', 'a5102', 'a6102', 'a7102', 'a8102', 'a9102', 'a10102', 'a11102'), +('id103', 'value103', 'name103', 'age103', 'bir103', 'a1103', 'a2103', 'a3103', 'a4103', 'a5103', 'a6103', 'a7103', 'a8103', 'a9103', 'a10103', 'a11103'), +('id104', 'value104', 'name104', 'age104', 'bir104', 'a1104', 'a2104', 'a3104', 'a4104', 'a5104', 'a6104', 'a7104', 'a8104', 'a9104', 'a10104', 'a11104'), +('id105', 'value105', 'name105', 'age105', 'bir105', 'a1105', 'a2105', 'a3105', 'a4105', 'a5105', 'a6105', 'a7105', 'a8105', 'a9105', 'a10105', 'a11105'), +('id106', 'value106', 'name106', 'age106', 'bir106', 'a1106', 'a2106', 'a3106', 'a4106', 'a5106', 'a6106', 'a7106', 'a8106', 'a9106', 'a10106', 'a11106'), +('id107', 'value107', 'name107', 'age107', 'bir107', 'a1107', 'a2107', 'a3107', 'a4107', 'a5107', 'a6107', 'a7107', 'a8107', 'a9107', 'a10107', 'a11107'), +('id108', 'value108', 'name108', 'age108', 'bir108', 'a1108', 'a2108', 'a3108', 'a4108', 'a5108', 'a6108', 'a7108', 'a8108', 'a9108', 'a10108', 'a11108'), +('id109', 'value109', 'name109', 'age109', 'bir109', 'a1109', 'a2109', 'a3109', 'a4109', 'a5109', 'a6109', 'a7109', 'a8109', 'a9109', 'a10109', 'a11109'), +('id110', 'value110', 'name110', 'age110', 'bir110', 'a1110', 'a2110', 'a3110', 'a4110', 'a5110', 'a6110', 'a7110', 'a8110', 'a9110', 'a10110', 'a11110'), +('id111', 'value111', 'name111', 'age111', 'bir111', 'a1111', 'a2111', 'a3111', 'a4111', 'a5111', 'a6111', 'a7111', 'a8111', 'a9111', 'a10111', 'a11111'), +('id112', 'value112', 'name112', 'age112', 'bir112', 'a1112', 'a2112', 'a3112', 'a4112', 'a5112', 'a6112', 'a7112', 'a8112', 'a9112', 'a10112', 'a11112'), +('id113', 'value113', 'name113', 'age113', 'bir113', 'a1113', 'a2113', 'a3113', 'a4113', 'a5113', 'a6113', 'a7113', 'a8113', 'a9113', 'a10113', 'a11113'), +('id114', 'value114', 'name114', 'age114', 'bir114', 'a1114', 'a2114', 'a3114', 'a4114', 'a5114', 'a6114', 'a7114', 'a8114', 'a9114', 'a10114', 'a11114'), +('id115', 'value115', 'name115', 'age115', 'bir115', 'a1115', 'a2115', 'a3115', 'a4115', 'a5115', 'a6115', 'a7115', 'a8115', 'a9115', 'a10115', 'a11115'), +('id116', 'value116', 'name116', 'age116', 'bir116', 'a1116', 'a2116', 'a3116', 'a4116', 'a5116', 'a6116', 'a7116', 'a8116', 'a9116', 'a10116', 'a11116'), +('id117', 'value117', 'name117', 'age117', 'bir117', 'a1117', 'a2117', 'a3117', 'a4117', 'a5117', 'a6117', 'a7117', 'a8117', 'a9117', 'a10117', 'a11117'), +('id118', 'value118', 'name118', 'age118', 'bir118', 'a1118', 'a2118', 'a3118', 'a4118', 'a5118', 'a6118', 'a7118', 'a8118', 'a9118', 'a10118', 'a11118'), +('id119', 'value119', 'name119', 'age119', 'bir119', 'a1119', 'a2119', 'a3119', 'a4119', 'a5119', 'a6119', 'a7119', 'a8119', 'a9119', 'a10119', 'a11119'), +('id120', 'value120', 'name120', 'age120', 'bir120', 'a1120', 'a2120', 'a3120', 'a4120', 'a5120', 'a6120', 'a7120', 'a8120', 'a9120', 'a10120', 'a11120'), +('id121', 'value121', 'name121', 'age121', 'bir121', 'a1121', 'a2121', 'a3121', 'a4121', 'a5121', 'a6121', 'a7121', 'a8121', 'a9121', 'a10121', 'a11121'), +('id122', 'value122', 'name122', 'age122', 'bir122', 'a1122', 'a2122', 'a3122', 'a4122', 'a5122', 'a6122', 'a7122', 'a8122', 'a9122', 'a10122', 'a11122'), +('id123', 'value123', 'name123', 'age123', 'bir123', 'a1123', 'a2123', 'a3123', 'a4123', 'a5123', 'a6123', 'a7123', 'a8123', 'a9123', 'a10123', 'a11123'), +('id124', 'value124', 'name124', 'age124', 'bir124', 'a1124', 'a2124', 'a3124', 'a4124', 'a5124', 'a6124', 'a7124', 'a8124', 'a9124', 'a10124', 'a11124'), +('id125', 'value125', 'name125', 'age125', 'bir125', 'a1125', 'a2125', 'a3125', 'a4125', 'a5125', 'a6125', 'a7125', 'a8125', 'a9125', 'a10125', 'a11125'), +('id126', 'value126', 'name126', 'age126', 'bir126', 'a1126', 'a2126', 'a3126', 'a4126', 'a5126', 'a6126', 'a7126', 'a8126', 'a9126', 'a10126', 'a11126'), +('id127', 'value127', 'name127', 'age127', 'bir127', 'a1127', 'a2127', 'a3127', 'a4127', 'a5127', 'a6127', 'a7127', 'a8127', 'a9127', 'a10127', 'a11127'), +('id128', 'value128', 'name128', 'age128', 'bir128', 'a1128', 'a2128', 'a3128', 'a4128', 'a5128', 'a6128', 'a7128', 'a8128', 'a9128', 'a10128', 'a11128'), +('id129', 'value129', 'name129', 'age129', 'bir129', 'a1129', 'a2129', 'a3129', 'a4129', 'a5129', 'a6129', 'a7129', 'a8129', 'a9129', 'a10129', 'a11129'), +('id130', 'value130', 'name130', 'age130', 'bir130', 'a1130', 'a2130', 'a3130', 'a4130', 'a5130', 'a6130', 'a7130', 'a8130', 'a9130', 'a10130', 'a11130'), +('id131', 'value131', 'name131', 'age131', 'bir131', 'a1131', 'a2131', 'a3131', 'a4131', 'a5131', 'a6131', 'a7131', 'a8131', 'a9131', 'a10131', 'a11131'), +('id132', 'value132', 'name132', 'age132', 'bir132', 'a1132', 'a2132', 'a3132', 'a4132', 'a5132', 'a6132', 'a7132', 'a8132', 'a9132', 'a10132', 'a11132'), +('id133', 'value133', 'name133', 'age133', 'bir133', 'a1133', 'a2133', 'a3133', 'a4133', 'a5133', 'a6133', 'a7133', 'a8133', 'a9133', 'a10133', 'a11133'), +('id134', 'value134', 'name134', 'age134', 'bir134', 'a1134', 'a2134', 'a3134', 'a4134', 'a5134', 'a6134', 'a7134', 'a8134', 'a9134', 'a10134', 'a11134'), +('id135', 'value135', 'name135', 'age135', 'bir135', 'a1135', 'a2135', 'a3135', 'a4135', 'a5135', 'a6135', 'a7135', 'a8135', 'a9135', 'a10135', 'a11135'), +('id136', 'value136', 'name136', 'age136', 'bir136', 'a1136', 'a2136', 'a3136', 'a4136', 'a5136', 'a6136', 'a7136', 'a8136', 'a9136', 'a10136', 'a11136'), +('id137', 'value137', 'name137', 'age137', 'bir137', 'a1137', 'a2137', 'a3137', 'a4137', 'a5137', 'a6137', 'a7137', 'a8137', 'a9137', 'a10137', 'a11137'), +('id138', 'value138', 'name138', 'age138', 'bir138', 'a1138', 'a2138', 'a3138', 'a4138', 'a5138', 'a6138', 'a7138', 'a8138', 'a9138', 'a10138', 'a11138'), +('id139', 'value139', 'name139', 'age139', 'bir139', 'a1139', 'a2139', 'a3139', 'a4139', 'a5139', 'a6139', 'a7139', 'a8139', 'a9139', 'a10139', 'a11139'), +('id140', 'value140', 'name140', 'age140', 'bir140', 'a1140', 'a2140', 'a3140', 'a4140', 'a5140', 'a6140', 'a7140', 'a8140', 'a9140', 'a10140', 'a11140'), +('id141', 'value141', 'name141', 'age141', 'bir141', 'a1141', 'a2141', 'a3141', 'a4141', 'a5141', 'a6141', 'a7141', 'a8141', 'a9141', 'a10141', 'a11141'), +('id142', 'value142', 'name142', 'age142', 'bir142', 'a1142', 'a2142', 'a3142', 'a4142', 'a5142', 'a6142', 'a7142', 'a8142', 'a9142', 'a10142', 'a11142'), +('id143', 'value143', 'name143', 'age143', 'bir143', 'a1143', 'a2143', 'a3143', 'a4143', 'a5143', 'a6143', 'a7143', 'a8143', 'a9143', 'a10143', 'a11143'), +('id144', 'value144', 'name144', 'age144', 'bir144', 'a1144', 'a2144', 'a3144', 'a4144', 'a5144', 'a6144', 'a7144', 'a8144', 'a9144', 'a10144', 'a11144'), +('id145', 'value145', 'name145', 'age145', 'bir145', 'a1145', 'a2145', 'a3145', 'a4145', 'a5145', 'a6145', 'a7145', 'a8145', 'a9145', 'a10145', 'a11145'), +('id146', 'value146', 'name146', 'age146', 'bir146', 'a1146', 'a2146', 'a3146', 'a4146', 'a5146', 'a6146', 'a7146', 'a8146', 'a9146', 'a10146', 'a11146'), +('id147', 'value147', 'name147', 'age147', 'bir147', 'a1147', 'a2147', 'a3147', 'a4147', 'a5147', 'a6147', 'a7147', 'a8147', 'a9147', 'a10147', 'a11147'), +('id148', 'value148', 'name148', 'age148', 'bir148', 'a1148', 'a2148', 'a3148', 'a4148', 'a5148', 'a6148', 'a7148', 'a8148', 'a9148', 'a10148', 'a11148'), +('id149', 'value149', 'name149', 'age149', 'bir149', 'a1149', 'a2149', 'a3149', 'a4149', 'a5149', 'a6149', 'a7149', 'a8149', 'a9149', 'a10149', 'a11149'), +('id150', 'value150', 'name150', 'age150', 'bir150', 'a1150', 'a2150', 'a3150', 'a4150', 'a5150', 'a6150', 'a7150', 'a8150', 'a9150', 'a10150', 'a11150'), +('id151', 'value151', 'name151', 'age151', 'bir151', 'a1151', 'a2151', 'a3151', 'a4151', 'a5151', 'a6151', 'a7151', 'a8151', 'a9151', 'a10151', 'a11151'), +('id152', 'value152', 'name152', 'age152', 'bir152', 'a1152', 'a2152', 'a3152', 'a4152', 'a5152', 'a6152', 'a7152', 'a8152', 'a9152', 'a10152', 'a11152'), +('id153', 'value153', 'name153', 'age153', 'bir153', 'a1153', 'a2153', 'a3153', 'a4153', 'a5153', 'a6153', 'a7153', 'a8153', 'a9153', 'a10153', 'a11153'), +('id154', 'value154', 'name154', 'age154', 'bir154', 'a1154', 'a2154', 'a3154', 'a4154', 'a5154', 'a6154', 'a7154', 'a8154', 'a9154', 'a10154', 'a11154'), +('id155', 'value155', 'name155', 'age155', 'bir155', 'a1155', 'a2155', 'a3155', 'a4155', 'a5155', 'a6155', 'a7155', 'a8155', 'a9155', 'a10155', 'a11155'), +('id156', 'value156', 'name156', 'age156', 'bir156', 'a1156', 'a2156', 'a3156', 'a4156', 'a5156', 'a6156', 'a7156', 'a8156', 'a9156', 'a10156', 'a11156'), +('id157', 'value157', 'name157', 'age157', 'bir157', 'a1157', 'a2157', 'a3157', 'a4157', 'a5157', 'a6157', 'a7157', 'a8157', 'a9157', 'a10157', 'a11157'), +('id158', 'value158', 'name158', 'age158', 'bir158', 'a1158', 'a2158', 'a3158', 'a4158', 'a5158', 'a6158', 'a7158', 'a8158', 'a9158', 'a10158', 'a11158'), +('id159', 'value159', 'name159', 'age159', 'bir159', 'a1159', 'a2159', 'a3159', 'a4159', 'a5159', 'a6159', 'a7159', 'a8159', 'a9159', 'a10159', 'a11159'), +('id160', 'value160', 'name160', 'age160', 'bir160', 'a1160', 'a2160', 'a3160', 'a4160', 'a5160', 'a6160', 'a7160', 'a8160', 'a9160', 'a10160', 'a11160'), +('id161', 'value161', 'name161', 'age161', 'bir161', 'a1161', 'a2161', 'a3161', 'a4161', 'a5161', 'a6161', 'a7161', 'a8161', 'a9161', 'a10161', 'a11161'), +('id162', 'value162', 'name162', 'age162', 'bir162', 'a1162', 'a2162', 'a3162', 'a4162', 'a5162', 'a6162', 'a7162', 'a8162', 'a9162', 'a10162', 'a11162'), +('id163', 'value163', 'name163', 'age163', 'bir163', 'a1163', 'a2163', 'a3163', 'a4163', 'a5163', 'a6163', 'a7163', 'a8163', 'a9163', 'a10163', 'a11163'), +('id164', 'value164', 'name164', 'age164', 'bir164', 'a1164', 'a2164', 'a3164', 'a4164', 'a5164', 'a6164', 'a7164', 'a8164', 'a9164', 'a10164', 'a11164'), +('id165', 'value165', 'name165', 'age165', 'bir165', 'a1165', 'a2165', 'a3165', 'a4165', 'a5165', 'a6165', 'a7165', 'a8165', 'a9165', 'a10165', 'a11165'), +('id166', 'value166', 'name166', 'age166', 'bir166', 'a1166', 'a2166', 'a3166', 'a4166', 'a5166', 'a6166', 'a7166', 'a8166', 'a9166', 'a10166', 'a11166'), +('id167', 'value167', 'name167', 'age167', 'bir167', 'a1167', 'a2167', 'a3167', 'a4167', 'a5167', 'a6167', 'a7167', 'a8167', 'a9167', 'a10167', 'a11167'), +('id168', 'value168', 'name168', 'age168', 'bir168', 'a1168', 'a2168', 'a3168', 'a4168', 'a5168', 'a6168', 'a7168', 'a8168', 'a9168', 'a10168', 'a11168'), +('id169', 'value169', 'name169', 'age169', 'bir169', 'a1169', 'a2169', 'a3169', 'a4169', 'a5169', 'a6169', 'a7169', 'a8169', 'a9169', 'a10169', 'a11169'), +('id170', 'value170', 'name170', 'age170', 'bir170', 'a1170', 'a2170', 'a3170', 'a4170', 'a5170', 'a6170', 'a7170', 'a8170', 'a9170', 'a10170', 'a11170'), +('id171', 'value171', 'name171', 'age171', 'bir171', 'a1171', 'a2171', 'a3171', 'a4171', 'a5171', 'a6171', 'a7171', 'a8171', 'a9171', 'a10171', 'a11171'), +('id172', 'value172', 'name172', 'age172', 'bir172', 'a1172', 'a2172', 'a3172', 'a4172', 'a5172', 'a6172', 'a7172', 'a8172', 'a9172', 'a10172', 'a11172'), +('id173', 'value173', 'name173', 'age173', 'bir173', 'a1173', 'a2173', 'a3173', 'a4173', 'a5173', 'a6173', 'a7173', 'a8173', 'a9173', 'a10173', 'a11173'), +('id174', 'value174', 'name174', 'age174', 'bir174', 'a1174', 'a2174', 'a3174', 'a4174', 'a5174', 'a6174', 'a7174', 'a8174', 'a9174', 'a10174', 'a11174'), +('id175', 'value175', 'name175', 'age175', 'bir175', 'a1175', 'a2175', 'a3175', 'a4175', 'a5175', 'a6175', 'a7175', 'a8175', 'a9175', 'a10175', 'a11175'), +('id176', 'value176', 'name176', 'age176', 'bir176', 'a1176', 'a2176', 'a3176', 'a4176', 'a5176', 'a6176', 'a7176', 'a8176', 'a9176', 'a10176', 'a11176'), +('id177', 'value177', 'name177', 'age177', 'bir177', 'a1177', 'a2177', 'a3177', 'a4177', 'a5177', 'a6177', 'a7177', 'a8177', 'a9177', 'a10177', 'a11177'), +('id178', 'value178', 'name178', 'age178', 'bir178', 'a1178', 'a2178', 'a3178', 'a4178', 'a5178', 'a6178', 'a7178', 'a8178', 'a9178', 'a10178', 'a11178'), +('id179', 'value179', 'name179', 'age179', 'bir179', 'a1179', 'a2179', 'a3179', 'a4179', 'a5179', 'a6179', 'a7179', 'a8179', 'a9179', 'a10179', 'a11179'), +('id180', 'value180', 'name180', 'age180', 'bir180', 'a1180', 'a2180', 'a3180', 'a4180', 'a5180', 'a6180', 'a7180', 'a8180', 'a9180', 'a10180', 'a11180'), +('id181', 'value181', 'name181', 'age181', 'bir181', 'a1181', 'a2181', 'a3181', 'a4181', 'a5181', 'a6181', 'a7181', 'a8181', 'a9181', 'a10181', 'a11181'), +('id182', 'value182', 'name182', 'age182', 'bir182', 'a1182', 'a2182', 'a3182', 'a4182', 'a5182', 'a6182', 'a7182', 'a8182', 'a9182', 'a10182', 'a11182'), +('id183', 'value183', 'name183', 'age183', 'bir183', 'a1183', 'a2183', 'a3183', 'a4183', 'a5183', 'a6183', 'a7183', 'a8183', 'a9183', 'a10183', 'a11183'), +('id184', 'value184', 'name184', 'age184', 'bir184', 'a1184', 'a2184', 'a3184', 'a4184', 'a5184', 'a6184', 'a7184', 'a8184', 'a9184', 'a10184', 'a11184'), +('id185', 'value185', 'name185', 'age185', 'bir185', 'a1185', 'a2185', 'a3185', 'a4185', 'a5185', 'a6185', 'a7185', 'a8185', 'a9185', 'a10185', 'a11185'), +('id186', 'value186', 'name186', 'age186', 'bir186', 'a1186', 'a2186', 'a3186', 'a4186', 'a5186', 'a6186', 'a7186', 'a8186', 'a9186', 'a10186', 'a11186'), +('id187', 'value187', 'name187', 'age187', 'bir187', 'a1187', 'a2187', 'a3187', 'a4187', 'a5187', 'a6187', 'a7187', 'a8187', 'a9187', 'a10187', 'a11187'), +('id188', 'value188', 'name188', 'age188', 'bir188', 'a1188', 'a2188', 'a3188', 'a4188', 'a5188', 'a6188', 'a7188', 'a8188', 'a9188', 'a10188', 'a11188'), +('id189', 'value189', 'name189', 'age189', 'bir189', 'a1189', 'a2189', 'a3189', 'a4189', 'a5189', 'a6189', 'a7189', 'a8189', 'a9189', 'a10189', 'a11189'), +('id190', 'value190', 'name190', 'age190', 'bir190', 'a1190', 'a2190', 'a3190', 'a4190', 'a5190', 'a6190', 'a7190', 'a8190', 'a9190', 'a10190', 'a11190'), +('id191', 'value191', 'name191', 'age191', 'bir191', 'a1191', 'a2191', 'a3191', 'a4191', 'a5191', 'a6191', 'a7191', 'a8191', 'a9191', 'a10191', 'a11191'), +('id192', 'value192', 'name192', 'age192', 'bir192', 'a1192', 'a2192', 'a3192', 'a4192', 'a5192', 'a6192', 'a7192', 'a8192', 'a9192', 'a10192', 'a11192'), +('id193', 'value193', 'name193', 'age193', 'bir193', 'a1193', 'a2193', 'a3193', 'a4193', 'a5193', 'a6193', 'a7193', 'a8193', 'a9193', 'a10193', 'a11193'), +('id194', 'value194', 'name194', 'age194', 'bir194', 'a1194', 'a2194', 'a3194', 'a4194', 'a5194', 'a6194', 'a7194', 'a8194', 'a9194', 'a10194', 'a11194'), +('id195', 'value195', 'name195', 'age195', 'bir195', 'a1195', 'a2195', 'a3195', 'a4195', 'a5195', 'a6195', 'a7195', 'a8195', 'a9195', 'a10195', 'a11195'), +('id196', 'value196', 'name196', 'age196', 'bir196', 'a1196', 'a2196', 'a3196', 'a4196', 'a5196', 'a6196', 'a7196', 'a8196', 'a9196', 'a10196', 'a11196'), +('id197', 'value197', 'name197', 'age197', 'bir197', 'a1197', 'a2197', 'a3197', 'a4197', 'a5197', 'a6197', 'a7197', 'a8197', 'a9197', 'a10197', 'a11197'), +('id198', 'value198', 'name198', 'age198', 'bir198', 'a1198', 'a2198', 'a3198', 'a4198', 'a5198', 'a6198', 'a7198', 'a8198', 'a9198', 'a10198', 'a11198'), +('id199', 'value199', 'name199', 'age199', 'bir199', 'a1199', 'a2199', 'a3199', 'a4199', 'a5199', 'a6199', 'a7199', 'a8199', 'a9199', 'a10199', 'a11199'), +('id200', 'value200', 'name200', 'age200', 'bir200', 'a1200', 'a2200', 'a3200', 'a4200', 'a5200', 'a6200', 'a7200', 'a8200', 'a9200', 'a10200', 'a11200'), +('id201', 'value201', 'name201', 'age201', 'bir201', 'a1201', 'a2201', 'a3201', 'a4201', 'a5201', 'a6201', 'a7201', 'a8201', 'a9201', 'a10201', 'a11201'), +('id202', 'value202', 'name202', 'age202', 'bir202', 'a1202', 'a2202', 'a3202', 'a4202', 'a5202', 'a6202', 'a7202', 'a8202', 'a9202', 'a10202', 'a11202'), +('id203', 'value203', 'name203', 'age203', 'bir203', 'a1203', 'a2203', 'a3203', 'a4203', 'a5203', 'a6203', 'a7203', 'a8203', 'a9203', 'a10203', 'a11203'), +('id204', 'value204', 'name204', 'age204', 'bir204', 'a1204', 'a2204', 'a3204', 'a4204', 'a5204', 'a6204', 'a7204', 'a8204', 'a9204', 'a10204', 'a11204'), +('id205', 'value205', 'name205', 'age205', 'bir205', 'a1205', 'a2205', 'a3205', 'a4205', 'a5205', 'a6205', 'a7205', 'a8205', 'a9205', 'a10205', 'a11205'), +('id206', 'value206', 'name206', 'age206', 'bir206', 'a1206', 'a2206', 'a3206', 'a4206', 'a5206', 'a6206', 'a7206', 'a8206', 'a9206', 'a10206', 'a11206'), +('id207', 'value207', 'name207', 'age207', 'bir207', 'a1207', 'a2207', 'a3207', 'a4207', 'a5207', 'a6207', 'a7207', 'a8207', 'a9207', 'a10207', 'a11207'), +('id208', 'value208', 'name208', 'age208', 'bir208', 'a1208', 'a2208', 'a3208', 'a4208', 'a5208', 'a6208', 'a7208', 'a8208', 'a9208', 'a10208', 'a11208'), +('id209', 'value209', 'name209', 'age209', 'bir209', 'a1209', 'a2209', 'a3209', 'a4209', 'a5209', 'a6209', 'a7209', 'a8209', 'a9209', 'a10209', 'a11209'), +('id210', 'value210', 'name210', 'age210', 'bir210', 'a1210', 'a2210', 'a3210', 'a4210', 'a5210', 'a6210', 'a7210', 'a8210', 'a9210', 'a10210', 'a11210'), +('id211', 'value211', 'name211', 'age211', 'bir211', 'a1211', 'a2211', 'a3211', 'a4211', 'a5211', 'a6211', 'a7211', 'a8211', 'a9211', 'a10211', 'a11211'), +('id212', 'value212', 'name212', 'age212', 'bir212', 'a1212', 'a2212', 'a3212', 'a4212', 'a5212', 'a6212', 'a7212', 'a8212', 'a9212', 'a10212', 'a11212'), +('id213', 'value213', 'name213', 'age213', 'bir213', 'a1213', 'a2213', 'a3213', 'a4213', 'a5213', 'a6213', 'a7213', 'a8213', 'a9213', 'a10213', 'a11213'), +('id214', 'value214', 'name214', 'age214', 'bir214', 'a1214', 'a2214', 'a3214', 'a4214', 'a5214', 'a6214', 'a7214', 'a8214', 'a9214', 'a10214', 'a11214'), +('id215', 'value215', 'name215', 'age215', 'bir215', 'a1215', 'a2215', 'a3215', 'a4215', 'a5215', 'a6215', 'a7215', 'a8215', 'a9215', 'a10215', 'a11215'), +('id216', 'value216', 'name216', 'age216', 'bir216', 'a1216', 'a2216', 'a3216', 'a4216', 'a5216', 'a6216', 'a7216', 'a8216', 'a9216', 'a10216', 'a11216'), +('id217', 'value217', 'name217', 'age217', 'bir217', 'a1217', 'a2217', 'a3217', 'a4217', 'a5217', 'a6217', 'a7217', 'a8217', 'a9217', 'a10217', 'a11217'), +('id218', 'value218', 'name218', 'age218', 'bir218', 'a1218', 'a2218', 'a3218', 'a4218', 'a5218', 'a6218', 'a7218', 'a8218', 'a9218', 'a10218', 'a11218'), +('id219', 'value219', 'name219', 'age219', 'bir219', 'a1219', 'a2219', 'a3219', 'a4219', 'a5219', 'a6219', 'a7219', 'a8219', 'a9219', 'a10219', 'a11219'), +('id220', 'value220', 'name220', 'age220', 'bir220', 'a1220', 'a2220', 'a3220', 'a4220', 'a5220', 'a6220', 'a7220', 'a8220', 'a9220', 'a10220', 'a11220'), +('id221', 'value221', 'name221', 'age221', 'bir221', 'a1221', 'a2221', 'a3221', 'a4221', 'a5221', 'a6221', 'a7221', 'a8221', 'a9221', 'a10221', 'a11221'), +('id222', 'value222', 'name222', 'age222', 'bir222', 'a1222', 'a2222', 'a3222', 'a4222', 'a5222', 'a6222', 'a7222', 'a8222', 'a9222', 'a10222', 'a11222'), +('id223', 'value223', 'name223', 'age223', 'bir223', 'a1223', 'a2223', 'a3223', 'a4223', 'a5223', 'a6223', 'a7223', 'a8223', 'a9223', 'a10223', 'a11223'), +('id224', 'value224', 'name224', 'age224', 'bir224', 'a1224', 'a2224', 'a3224', 'a4224', 'a5224', 'a6224', 'a7224', 'a8224', 'a9224', 'a10224', 'a11224'), +('id225', 'value225', 'name225', 'age225', 'bir225', 'a1225', 'a2225', 'a3225', 'a4225', 'a5225', 'a6225', 'a7225', 'a8225', 'a9225', 'a10225', 'a11225'), +('id226', 'value226', 'name226', 'age226', 'bir226', 'a1226', 'a2226', 'a3226', 'a4226', 'a5226', 'a6226', 'a7226', 'a8226', 'a9226', 'a10226', 'a11226'), +('id227', 'value227', 'name227', 'age227', 'bir227', 'a1227', 'a2227', 'a3227', 'a4227', 'a5227', 'a6227', 'a7227', 'a8227', 'a9227', 'a10227', 'a11227'), +('id228', 'value228', 'name228', 'age228', 'bir228', 'a1228', 'a2228', 'a3228', 'a4228', 'a5228', 'a6228', 'a7228', 'a8228', 'a9228', 'a10228', 'a11228'), +('id229', 'value229', 'name229', 'age229', 'bir229', 'a1229', 'a2229', 'a3229', 'a4229', 'a5229', 'a6229', 'a7229', 'a8229', 'a9229', 'a10229', 'a11229'), +('id230', 'value230', 'name230', 'age230', 'bir230', 'a1230', 'a2230', 'a3230', 'a4230', 'a5230', 'a6230', 'a7230', 'a8230', 'a9230', 'a10230', 'a11230'), +('id231', 'value231', 'name231', 'age231', 'bir231', 'a1231', 'a2231', 'a3231', 'a4231', 'a5231', 'a6231', 'a7231', 'a8231', 'a9231', 'a10231', 'a11231'), +('id232', 'value232', 'name232', 'age232', 'bir232', 'a1232', 'a2232', 'a3232', 'a4232', 'a5232', 'a6232', 'a7232', 'a8232', 'a9232', 'a10232', 'a11232'), +('id233', 'value233', 'name233', 'age233', 'bir233', 'a1233', 'a2233', 'a3233', 'a4233', 'a5233', 'a6233', 'a7233', 'a8233', 'a9233', 'a10233', 'a11233'), +('id234', 'value234', 'name234', 'age234', 'bir234', 'a1234', 'a2234', 'a3234', 'a4234', 'a5234', 'a6234', 'a7234', 'a8234', 'a9234', 'a10234', 'a11234'), +('id235', 'value235', 'name235', 'age235', 'bir235', 'a1235', 'a2235', 'a3235', 'a4235', 'a5235', 'a6235', 'a7235', 'a8235', 'a9235', 'a10235', 'a11235'), +('id236', 'value236', 'name236', 'age236', 'bir236', 'a1236', 'a2236', 'a3236', 'a4236', 'a5236', 'a6236', 'a7236', 'a8236', 'a9236', 'a10236', 'a11236'), +('id237', 'value237', 'name237', 'age237', 'bir237', 'a1237', 'a2237', 'a3237', 'a4237', 'a5237', 'a6237', 'a7237', 'a8237', 'a9237', 'a10237', 'a11237'), +('id238', 'value238', 'name238', 'age238', 'bir238', 'a1238', 'a2238', 'a3238', 'a4238', 'a5238', 'a6238', 'a7238', 'a8238', 'a9238', 'a10238', 'a11238'), +('id239', 'value239', 'name239', 'age239', 'bir239', 'a1239', 'a2239', 'a3239', 'a4239', 'a5239', 'a6239', 'a7239', 'a8239', 'a9239', 'a10239', 'a11239'), +('id240', 'value240', 'name240', 'age240', 'bir240', 'a1240', 'a2240', 'a3240', 'a4240', 'a5240', 'a6240', 'a7240', 'a8240', 'a9240', 'a10240', 'a11240'), +('id241', 'value241', 'name241', 'age241', 'bir241', 'a1241', 'a2241', 'a3241', 'a4241', 'a5241', 'a6241', 'a7241', 'a8241', 'a9241', 'a10241', 'a11241'), +('id242', 'value242', 'name242', 'age242', 'bir242', 'a1242', 'a2242', 'a3242', 'a4242', 'a5242', 'a6242', 'a7242', 'a8242', 'a9242', 'a10242', 'a11242'), +('id243', 'value243', 'name243', 'age243', 'bir243', 'a1243', 'a2243', 'a3243', 'a4243', 'a5243', 'a6243', 'a7243', 'a8243', 'a9243', 'a10243', 'a11243'), +('id244', 'value244', 'name244', 'age244', 'bir244', 'a1244', 'a2244', 'a3244', 'a4244', 'a5244', 'a6244', 'a7244', 'a8244', 'a9244', 'a10244', 'a11244'), +('id245', 'value245', 'name245', 'age245', 'bir245', 'a1245', 'a2245', 'a3245', 'a4245', 'a5245', 'a6245', 'a7245', 'a8245', 'a9245', 'a10245', 'a11245'), +('id246', 'value246', 'name246', 'age246', 'bir246', 'a1246', 'a2246', 'a3246', 'a4246', 'a5246', 'a6246', 'a7246', 'a8246', 'a9246', 'a10246', 'a11246'), +('id247', 'value247', 'name247', 'age247', 'bir247', 'a1247', 'a2247', 'a3247', 'a4247', 'a5247', 'a6247', 'a7247', 'a8247', 'a9247', 'a10247', 'a11247'), +('id248', 'value248', 'name248', 'age248', 'bir248', 'a1248', 'a2248', 'a3248', 'a4248', 'a5248', 'a6248', 'a7248', 'a8248', 'a9248', 'a10248', 'a11248'), +('id249', 'value249', 'name249', 'age249', 'bir249', 'a1249', 'a2249', 'a3249', 'a4249', 'a5249', 'a6249', 'a7249', 'a8249', 'a9249', 'a10249', 'a11249'), +('id250', 'value250', 'name250', 'age250', 'bir250', 'a1250', 'a2250', 'a3250', 'a4250', 'a5250', 'a6250', 'a7250', 'a8250', 'a9250', 'a10250', 'a11250'), +('id251', 'value251', 'name251', 'age251', 'bir251', 'a1251', 'a2251', 'a3251', 'a4251', 'a5251', 'a6251', 'a7251', 'a8251', 'a9251', 'a10251', 'a11251'), +('id252', 'value252', 'name252', 'age252', 'bir252', 'a1252', 'a2252', 'a3252', 'a4252', 'a5252', 'a6252', 'a7252', 'a8252', 'a9252', 'a10252', 'a11252'), +('id253', 'value253', 'name253', 'age253', 'bir253', 'a1253', 'a2253', 'a3253', 'a4253', 'a5253', 'a6253', 'a7253', 'a8253', 'a9253', 'a10253', 'a11253'), +('id254', 'value254', 'name254', 'age254', 'bir254', 'a1254', 'a2254', 'a3254', 'a4254', 'a5254', 'a6254', 'a7254', 'a8254', 'a9254', 'a10254', 'a11254'), +('id255', 'value255', 'name255', 'age255', 'bir255', 'a1255', 'a2255', 'a3255', 'a4255', 'a5255', 'a6255', 'a7255', 'a8255', 'a9255', 'a10255', 'a11255'), +('id256', 'value256', 'name256', 'age256', 'bir256', 'a1256', 'a2256', 'a3256', 'a4256', 'a5256', 'a6256', 'a7256', 'a8256', 'a9256', 'a10256', 'a11256'), +('id257', 'value257', 'name257', 'age257', 'bir257', 'a1257', 'a2257', 'a3257', 'a4257', 'a5257', 'a6257', 'a7257', 'a8257', 'a9257', 'a10257', 'a11257'), +('id258', 'value258', 'name258', 'age258', 'bir258', 'a1258', 'a2258', 'a3258', 'a4258', 'a5258', 'a6258', 'a7258', 'a8258', 'a9258', 'a10258', 'a11258'), +('id259', 'value259', 'name259', 'age259', 'bir259', 'a1259', 'a2259', 'a3259', 'a4259', 'a5259', 'a6259', 'a7259', 'a8259', 'a9259', 'a10259', 'a11259'), +('id260', 'value260', 'name260', 'age260', 'bir260', 'a1260', 'a2260', 'a3260', 'a4260', 'a5260', 'a6260', 'a7260', 'a8260', 'a9260', 'a10260', 'a11260'), +('id261', 'value261', 'name261', 'age261', 'bir261', 'a1261', 'a2261', 'a3261', 'a4261', 'a5261', 'a6261', 'a7261', 'a8261', 'a9261', 'a10261', 'a11261'), +('id262', 'value262', 'name262', 'age262', 'bir262', 'a1262', 'a2262', 'a3262', 'a4262', 'a5262', 'a6262', 'a7262', 'a8262', 'a9262', 'a10262', 'a11262'), +('id263', 'value263', 'name263', 'age263', 'bir263', 'a1263', 'a2263', 'a3263', 'a4263', 'a5263', 'a6263', 'a7263', 'a8263', 'a9263', 'a10263', 'a11263'), +('id264', 'value264', 'name264', 'age264', 'bir264', 'a1264', 'a2264', 'a3264', 'a4264', 'a5264', 'a6264', 'a7264', 'a8264', 'a9264', 'a10264', 'a11264'), +('id265', 'value265', 'name265', 'age265', 'bir265', 'a1265', 'a2265', 'a3265', 'a4265', 'a5265', 'a6265', 'a7265', 'a8265', 'a9265', 'a10265', 'a11265'), +('id266', 'value266', 'name266', 'age266', 'bir266', 'a1266', 'a2266', 'a3266', 'a4266', 'a5266', 'a6266', 'a7266', 'a8266', 'a9266', 'a10266', 'a11266'), +('id267', 'value267', 'name267', 'age267', 'bir267', 'a1267', 'a2267', 'a3267', 'a4267', 'a5267', 'a6267', 'a7267', 'a8267', 'a9267', 'a10267', 'a11267'), +('id268', 'value268', 'name268', 'age268', 'bir268', 'a1268', 'a2268', 'a3268', 'a4268', 'a5268', 'a6268', 'a7268', 'a8268', 'a9268', 'a10268', 'a11268'), +('id269', 'value269', 'name269', 'age269', 'bir269', 'a1269', 'a2269', 'a3269', 'a4269', 'a5269', 'a6269', 'a7269', 'a8269', 'a9269', 'a10269', 'a11269'), +('id270', 'value270', 'name270', 'age270', 'bir270', 'a1270', 'a2270', 'a3270', 'a4270', 'a5270', 'a6270', 'a7270', 'a8270', 'a9270', 'a10270', 'a11270'), +('id271', 'value271', 'name271', 'age271', 'bir271', 'a1271', 'a2271', 'a3271', 'a4271', 'a5271', 'a6271', 'a7271', 'a8271', 'a9271', 'a10271', 'a11271'), +('id272', 'value272', 'name272', 'age272', 'bir272', 'a1272', 'a2272', 'a3272', 'a4272', 'a5272', 'a6272', 'a7272', 'a8272', 'a9272', 'a10272', 'a11272'), +('id273', 'value273', 'name273', 'age273', 'bir273', 'a1273', 'a2273', 'a3273', 'a4273', 'a5273', 'a6273', 'a7273', 'a8273', 'a9273', 'a10273', 'a11273'), +('id274', 'value274', 'name274', 'age274', 'bir274', 'a1274', 'a2274', 'a3274', 'a4274', 'a5274', 'a6274', 'a7274', 'a8274', 'a9274', 'a10274', 'a11274'), +('id275', 'value275', 'name275', 'age275', 'bir275', 'a1275', 'a2275', 'a3275', 'a4275', 'a5275', 'a6275', 'a7275', 'a8275', 'a9275', 'a10275', 'a11275'), +('id276', 'value276', 'name276', 'age276', 'bir276', 'a1276', 'a2276', 'a3276', 'a4276', 'a5276', 'a6276', 'a7276', 'a8276', 'a9276', 'a10276', 'a11276'), +('id277', 'value277', 'name277', 'age277', 'bir277', 'a1277', 'a2277', 'a3277', 'a4277', 'a5277', 'a6277', 'a7277', 'a8277', 'a9277', 'a10277', 'a11277'), +('id278', 'value278', 'name278', 'age278', 'bir278', 'a1278', 'a2278', 'a3278', 'a4278', 'a5278', 'a6278', 'a7278', 'a8278', 'a9278', 'a10278', 'a11278'), +('id279', 'value279', 'name279', 'age279', 'bir279', 'a1279', 'a2279', 'a3279', 'a4279', 'a5279', 'a6279', 'a7279', 'a8279', 'a9279', 'a10279', 'a11279'), +('id280', 'value280', 'name280', 'age280', 'bir280', 'a1280', 'a2280', 'a3280', 'a4280', 'a5280', 'a6280', 'a7280', 'a8280', 'a9280', 'a10280', 'a11280'), +('id281', 'value281', 'name281', 'age281', 'bir281', 'a1281', 'a2281', 'a3281', 'a4281', 'a5281', 'a6281', 'a7281', 'a8281', 'a9281', 'a10281', 'a11281'), +('id282', 'value282', 'name282', 'age282', 'bir282', 'a1282', 'a2282', 'a3282', 'a4282', 'a5282', 'a6282', 'a7282', 'a8282', 'a9282', 'a10282', 'a11282'), +('id283', 'value283', 'name283', 'age283', 'bir283', 'a1283', 'a2283', 'a3283', 'a4283', 'a5283', 'a6283', 'a7283', 'a8283', 'a9283', 'a10283', 'a11283'), +('id284', 'value284', 'name284', 'age284', 'bir284', 'a1284', 'a2284', 'a3284', 'a4284', 'a5284', 'a6284', 'a7284', 'a8284', 'a9284', 'a10284', 'a11284'), +('id285', 'value285', 'name285', 'age285', 'bir285', 'a1285', 'a2285', 'a3285', 'a4285', 'a5285', 'a6285', 'a7285', 'a8285', 'a9285', 'a10285', 'a11285'), +('id286', 'value286', 'name286', 'age286', 'bir286', 'a1286', 'a2286', 'a3286', 'a4286', 'a5286', 'a6286', 'a7286', 'a8286', 'a9286', 'a10286', 'a11286'), +('id287', 'value287', 'name287', 'age287', 'bir287', 'a1287', 'a2287', 'a3287', 'a4287', 'a5287', 'a6287', 'a7287', 'a8287', 'a9287', 'a10287', 'a11287'), +('id288', 'value288', 'name288', 'age288', 'bir288', 'a1288', 'a2288', 'a3288', 'a4288', 'a5288', 'a6288', 'a7288', 'a8288', 'a9288', 'a10288', 'a11288'), +('id289', 'value289', 'name289', 'age289', 'bir289', 'a1289', 'a2289', 'a3289', 'a4289', 'a5289', 'a6289', 'a7289', 'a8289', 'a9289', 'a10289', 'a11289'), +('id290', 'value290', 'name290', 'age290', 'bir290', 'a1290', 'a2290', 'a3290', 'a4290', 'a5290', 'a6290', 'a7290', 'a8290', 'a9290', 'a10290', 'a11290'), +('id291', 'value291', 'name291', 'age291', 'bir291', 'a1291', 'a2291', 'a3291', 'a4291', 'a5291', 'a6291', 'a7291', 'a8291', 'a9291', 'a10291', 'a11291'), +('id292', 'value292', 'name292', 'age292', 'bir292', 'a1292', 'a2292', 'a3292', 'a4292', 'a5292', 'a6292', 'a7292', 'a8292', 'a9292', 'a10292', 'a11292'), +('id293', 'value293', 'name293', 'age293', 'bir293', 'a1293', 'a2293', 'a3293', 'a4293', 'a5293', 'a6293', 'a7293', 'a8293', 'a9293', 'a10293', 'a11293'), +('id294', 'value294', 'name294', 'age294', 'bir294', 'a1294', 'a2294', 'a3294', 'a4294', 'a5294', 'a6294', 'a7294', 'a8294', 'a9294', 'a10294', 'a11294'), +('id295', 'value295', 'name295', 'age295', 'bir295', 'a1295', 'a2295', 'a3295', 'a4295', 'a5295', 'a6295', 'a7295', 'a8295', 'a9295', 'a10295', 'a11295'), +('id296', 'value296', 'name296', 'age296', 'bir296', 'a1296', 'a2296', 'a3296', 'a4296', 'a5296', 'a6296', 'a7296', 'a8296', 'a9296', 'a10296', 'a11296'), +('id297', 'value297', 'name297', 'age297', 'bir297', 'a1297', 'a2297', 'a3297', 'a4297', 'a5297', 'a6297', 'a7297', 'a8297', 'a9297', 'a10297', 'a11297'), +('id298', 'value298', 'name298', 'age298', 'bir298', 'a1298', 'a2298', 'a3298', 'a4298', 'a5298', 'a6298', 'a7298', 'a8298', 'a9298', 'a10298', 'a11298'), +('id299', 'value299', 'name299', 'age299', 'bir299', 'a1299', 'a2299', 'a3299', 'a4299', 'a5299', 'a6299', 'a7299', 'a8299', 'a9299', 'a10299', 'a11299'), +('id300', 'value300', 'name300', 'age300', 'bir300', 'a1300', 'a2300', 'a3300', 'a4300', 'a5300', 'a6300', 'a7300', 'a8300', 'a9300', 'a10300', 'a11300'), +('id301', 'value301', 'name301', 'age301', 'bir301', 'a1301', 'a2301', 'a3301', 'a4301', 'a5301', 'a6301', 'a7301', 'a8301', 'a9301', 'a10301', 'a11301'), +('id302', 'value302', 'name302', 'age302', 'bir302', 'a1302', 'a2302', 'a3302', 'a4302', 'a5302', 'a6302', 'a7302', 'a8302', 'a9302', 'a10302', 'a11302'), +('id303', 'value303', 'name303', 'age303', 'bir303', 'a1303', 'a2303', 'a3303', 'a4303', 'a5303', 'a6303', 'a7303', 'a8303', 'a9303', 'a10303', 'a11303'), +('id304', 'value304', 'name304', 'age304', 'bir304', 'a1304', 'a2304', 'a3304', 'a4304', 'a5304', 'a6304', 'a7304', 'a8304', 'a9304', 'a10304', 'a11304'), +('id305', 'value305', 'name305', 'age305', 'bir305', 'a1305', 'a2305', 'a3305', 'a4305', 'a5305', 'a6305', 'a7305', 'a8305', 'a9305', 'a10305', 'a11305'), +('id306', 'value306', 'name306', 'age306', 'bir306', 'a1306', 'a2306', 'a3306', 'a4306', 'a5306', 'a6306', 'a7306', 'a8306', 'a9306', 'a10306', 'a11306'), +('id307', 'value307', 'name307', 'age307', 'bir307', 'a1307', 'a2307', 'a3307', 'a4307', 'a5307', 'a6307', 'a7307', 'a8307', 'a9307', 'a10307', 'a11307'), +('id308', 'value308', 'name308', 'age308', 'bir308', 'a1308', 'a2308', 'a3308', 'a4308', 'a5308', 'a6308', 'a7308', 'a8308', 'a9308', 'a10308', 'a11308'), +('id309', 'value309', 'name309', 'age309', 'bir309', 'a1309', 'a2309', 'a3309', 'a4309', 'a5309', 'a6309', 'a7309', 'a8309', 'a9309', 'a10309', 'a11309'), +('id310', 'value310', 'name310', 'age310', 'bir310', 'a1310', 'a2310', 'a3310', 'a4310', 'a5310', 'a6310', 'a7310', 'a8310', 'a9310', 'a10310', 'a11310'), +('id311', 'value311', 'name311', 'age311', 'bir311', 'a1311', 'a2311', 'a3311', 'a4311', 'a5311', 'a6311', 'a7311', 'a8311', 'a9311', 'a10311', 'a11311'), +('id312', 'value312', 'name312', 'age312', 'bir312', 'a1312', 'a2312', 'a3312', 'a4312', 'a5312', 'a6312', 'a7312', 'a8312', 'a9312', 'a10312', 'a11312'), +('id313', 'value313', 'name313', 'age313', 'bir313', 'a1313', 'a2313', 'a3313', 'a4313', 'a5313', 'a6313', 'a7313', 'a8313', 'a9313', 'a10313', 'a11313'), +('id314', 'value314', 'name314', 'age314', 'bir314', 'a1314', 'a2314', 'a3314', 'a4314', 'a5314', 'a6314', 'a7314', 'a8314', 'a9314', 'a10314', 'a11314'), +('id315', 'value315', 'name315', 'age315', 'bir315', 'a1315', 'a2315', 'a3315', 'a4315', 'a5315', 'a6315', 'a7315', 'a8315', 'a9315', 'a10315', 'a11315'), +('id316', 'value316', 'name316', 'age316', 'bir316', 'a1316', 'a2316', 'a3316', 'a4316', 'a5316', 'a6316', 'a7316', 'a8316', 'a9316', 'a10316', 'a11316'), +('id317', 'value317', 'name317', 'age317', 'bir317', 'a1317', 'a2317', 'a3317', 'a4317', 'a5317', 'a6317', 'a7317', 'a8317', 'a9317', 'a10317', 'a11317'), +('id318', 'value318', 'name318', 'age318', 'bir318', 'a1318', 'a2318', 'a3318', 'a4318', 'a5318', 'a6318', 'a7318', 'a8318', 'a9318', 'a10318', 'a11318'), +('id319', 'value319', 'name319', 'age319', 'bir319', 'a1319', 'a2319', 'a3319', 'a4319', 'a5319', 'a6319', 'a7319', 'a8319', 'a9319', 'a10319', 'a11319'), +('id320', 'value320', 'name320', 'age320', 'bir320', 'a1320', 'a2320', 'a3320', 'a4320', 'a5320', 'a6320', 'a7320', 'a8320', 'a9320', 'a10320', 'a11320'), +('id321', 'value321', 'name321', 'age321', 'bir321', 'a1321', 'a2321', 'a3321', 'a4321', 'a5321', 'a6321', 'a7321', 'a8321', 'a9321', 'a10321', 'a11321'), +('id322', 'value322', 'name322', 'age322', 'bir322', 'a1322', 'a2322', 'a3322', 'a4322', 'a5322', 'a6322', 'a7322', 'a8322', 'a9322', 'a10322', 'a11322'), +('id323', 'value323', 'name323', 'age323', 'bir323', 'a1323', 'a2323', 'a3323', 'a4323', 'a5323', 'a6323', 'a7323', 'a8323', 'a9323', 'a10323', 'a11323'), +('id324', 'value324', 'name324', 'age324', 'bir324', 'a1324', 'a2324', 'a3324', 'a4324', 'a5324', 'a6324', 'a7324', 'a8324', 'a9324', 'a10324', 'a11324'), +('id325', 'value325', 'name325', 'age325', 'bir325', 'a1325', 'a2325', 'a3325', 'a4325', 'a5325', 'a6325', 'a7325', 'a8325', 'a9325', 'a10325', 'a11325'), +('id326', 'value326', 'name326', 'age326', 'bir326', 'a1326', 'a2326', 'a3326', 'a4326', 'a5326', 'a6326', 'a7326', 'a8326', 'a9326', 'a10326', 'a11326'), +('id327', 'value327', 'name327', 'age327', 'bir327', 'a1327', 'a2327', 'a3327', 'a4327', 'a5327', 'a6327', 'a7327', 'a8327', 'a9327', 'a10327', 'a11327'), +('id328', 'value328', 'name328', 'age328', 'bir328', 'a1328', 'a2328', 'a3328', 'a4328', 'a5328', 'a6328', 'a7328', 'a8328', 'a9328', 'a10328', 'a11328'), +('id329', 'value329', 'name329', 'age329', 'bir329', 'a1329', 'a2329', 'a3329', 'a4329', 'a5329', 'a6329', 'a7329', 'a8329', 'a9329', 'a10329', 'a11329'), +('id330', 'value330', 'name330', 'age330', 'bir330', 'a1330', 'a2330', 'a3330', 'a4330', 'a5330', 'a6330', 'a7330', 'a8330', 'a9330', 'a10330', 'a11330'), +('id331', 'value331', 'name331', 'age331', 'bir331', 'a1331', 'a2331', 'a3331', 'a4331', 'a5331', 'a6331', 'a7331', 'a8331', 'a9331', 'a10331', 'a11331'), +('id332', 'value332', 'name332', 'age332', 'bir332', 'a1332', 'a2332', 'a3332', 'a4332', 'a5332', 'a6332', 'a7332', 'a8332', 'a9332', 'a10332', 'a11332'), +('id333', 'value333', 'name333', 'age333', 'bir333', 'a1333', 'a2333', 'a3333', 'a4333', 'a5333', 'a6333', 'a7333', 'a8333', 'a9333', 'a10333', 'a11333'), +('id334', 'value334', 'name334', 'age334', 'bir334', 'a1334', 'a2334', 'a3334', 'a4334', 'a5334', 'a6334', 'a7334', 'a8334', 'a9334', 'a10334', 'a11334'), +('id335', 'value335', 'name335', 'age335', 'bir335', 'a1335', 'a2335', 'a3335', 'a4335', 'a5335', 'a6335', 'a7335', 'a8335', 'a9335', 'a10335', 'a11335'), +('id336', 'value336', 'name336', 'age336', 'bir336', 'a1336', 'a2336', 'a3336', 'a4336', 'a5336', 'a6336', 'a7336', 'a8336', 'a9336', 'a10336', 'a11336'), +('id337', 'value337', 'name337', 'age337', 'bir337', 'a1337', 'a2337', 'a3337', 'a4337', 'a5337', 'a6337', 'a7337', 'a8337', 'a9337', 'a10337', 'a11337'), +('id338', 'value338', 'name338', 'age338', 'bir338', 'a1338', 'a2338', 'a3338', 'a4338', 'a5338', 'a6338', 'a7338', 'a8338', 'a9338', 'a10338', 'a11338'), +('id339', 'value339', 'name339', 'age339', 'bir339', 'a1339', 'a2339', 'a3339', 'a4339', 'a5339', 'a6339', 'a7339', 'a8339', 'a9339', 'a10339', 'a11339'), +('id340', 'value340', 'name340', 'age340', 'bir340', 'a1340', 'a2340', 'a3340', 'a4340', 'a5340', 'a6340', 'a7340', 'a8340', 'a9340', 'a10340', 'a11340'), +('id341', 'value341', 'name341', 'age341', 'bir341', 'a1341', 'a2341', 'a3341', 'a4341', 'a5341', 'a6341', 'a7341', 'a8341', 'a9341', 'a10341', 'a11341'), +('id342', 'value342', 'name342', 'age342', 'bir342', 'a1342', 'a2342', 'a3342', 'a4342', 'a5342', 'a6342', 'a7342', 'a8342', 'a9342', 'a10342', 'a11342'), +('id343', 'value343', 'name343', 'age343', 'bir343', 'a1343', 'a2343', 'a3343', 'a4343', 'a5343', 'a6343', 'a7343', 'a8343', 'a9343', 'a10343', 'a11343'), +('id344', 'value344', 'name344', 'age344', 'bir344', 'a1344', 'a2344', 'a3344', 'a4344', 'a5344', 'a6344', 'a7344', 'a8344', 'a9344', 'a10344', 'a11344'), +('id345', 'value345', 'name345', 'age345', 'bir345', 'a1345', 'a2345', 'a3345', 'a4345', 'a5345', 'a6345', 'a7345', 'a8345', 'a9345', 'a10345', 'a11345'), +('id346', 'value346', 'name346', 'age346', 'bir346', 'a1346', 'a2346', 'a3346', 'a4346', 'a5346', 'a6346', 'a7346', 'a8346', 'a9346', 'a10346', 'a11346'), +('id347', 'value347', 'name347', 'age347', 'bir347', 'a1347', 'a2347', 'a3347', 'a4347', 'a5347', 'a6347', 'a7347', 'a8347', 'a9347', 'a10347', 'a11347'), +('id348', 'value348', 'name348', 'age348', 'bir348', 'a1348', 'a2348', 'a3348', 'a4348', 'a5348', 'a6348', 'a7348', 'a8348', 'a9348', 'a10348', 'a11348'), +('id349', 'value349', 'name349', 'age349', 'bir349', 'a1349', 'a2349', 'a3349', 'a4349', 'a5349', 'a6349', 'a7349', 'a8349', 'a9349', 'a10349', 'a11349'), +('id350', 'value350', 'name350', 'age350', 'bir350', 'a1350', 'a2350', 'a3350', 'a4350', 'a5350', 'a6350', 'a7350', 'a8350', 'a9350', 'a10350', 'a11350'), +('id351', 'value351', 'name351', 'age351', 'bir351', 'a1351', 'a2351', 'a3351', 'a4351', 'a5351', 'a6351', 'a7351', 'a8351', 'a9351', 'a10351', 'a11351'), +('id352', 'value352', 'name352', 'age352', 'bir352', 'a1352', 'a2352', 'a3352', 'a4352', 'a5352', 'a6352', 'a7352', 'a8352', 'a9352', 'a10352', 'a11352'), +('id353', 'value353', 'name353', 'age353', 'bir353', 'a1353', 'a2353', 'a3353', 'a4353', 'a5353', 'a6353', 'a7353', 'a8353', 'a9353', 'a10353', 'a11353'), +('id354', 'value354', 'name354', 'age354', 'bir354', 'a1354', 'a2354', 'a3354', 'a4354', 'a5354', 'a6354', 'a7354', 'a8354', 'a9354', 'a10354', 'a11354'), +('id355', 'value355', 'name355', 'age355', 'bir355', 'a1355', 'a2355', 'a3355', 'a4355', 'a5355', 'a6355', 'a7355', 'a8355', 'a9355', 'a10355', 'a11355'), +('id356', 'value356', 'name356', 'age356', 'bir356', 'a1356', 'a2356', 'a3356', 'a4356', 'a5356', 'a6356', 'a7356', 'a8356', 'a9356', 'a10356', 'a11356'), +('id357', 'value357', 'name357', 'age357', 'bir357', 'a1357', 'a2357', 'a3357', 'a4357', 'a5357', 'a6357', 'a7357', 'a8357', 'a9357', 'a10357', 'a11357'), +('id358', 'value358', 'name358', 'age358', 'bir358', 'a1358', 'a2358', 'a3358', 'a4358', 'a5358', 'a6358', 'a7358', 'a8358', 'a9358', 'a10358', 'a11358'), +('id359', 'value359', 'name359', 'age359', 'bir359', 'a1359', 'a2359', 'a3359', 'a4359', 'a5359', 'a6359', 'a7359', 'a8359', 'a9359', 'a10359', 'a11359'), +('id360', 'value360', 'name360', 'age360', 'bir360', 'a1360', 'a2360', 'a3360', 'a4360', 'a5360', 'a6360', 'a7360', 'a8360', 'a9360', 'a10360', 'a11360'), +('id361', 'value361', 'name361', 'age361', 'bir361', 'a1361', 'a2361', 'a3361', 'a4361', 'a5361', 'a6361', 'a7361', 'a8361', 'a9361', 'a10361', 'a11361'), +('id362', 'value362', 'name362', 'age362', 'bir362', 'a1362', 'a2362', 'a3362', 'a4362', 'a5362', 'a6362', 'a7362', 'a8362', 'a9362', 'a10362', 'a11362'), +('id363', 'value363', 'name363', 'age363', 'bir363', 'a1363', 'a2363', 'a3363', 'a4363', 'a5363', 'a6363', 'a7363', 'a8363', 'a9363', 'a10363', 'a11363'), +('id364', 'value364', 'name364', 'age364', 'bir364', 'a1364', 'a2364', 'a3364', 'a4364', 'a5364', 'a6364', 'a7364', 'a8364', 'a9364', 'a10364', 'a11364'), +('id365', 'value365', 'name365', 'age365', 'bir365', 'a1365', 'a2365', 'a3365', 'a4365', 'a5365', 'a6365', 'a7365', 'a8365', 'a9365', 'a10365', 'a11365'), +('id366', 'value366', 'name366', 'age366', 'bir366', 'a1366', 'a2366', 'a3366', 'a4366', 'a5366', 'a6366', 'a7366', 'a8366', 'a9366', 'a10366', 'a11366'), +('id367', 'value367', 'name367', 'age367', 'bir367', 'a1367', 'a2367', 'a3367', 'a4367', 'a5367', 'a6367', 'a7367', 'a8367', 'a9367', 'a10367', 'a11367'), +('id368', 'value368', 'name368', 'age368', 'bir368', 'a1368', 'a2368', 'a3368', 'a4368', 'a5368', 'a6368', 'a7368', 'a8368', 'a9368', 'a10368', 'a11368'), +('id369', 'value369', 'name369', 'age369', 'bir369', 'a1369', 'a2369', 'a3369', 'a4369', 'a5369', 'a6369', 'a7369', 'a8369', 'a9369', 'a10369', 'a11369'), +('id370', 'value370', 'name370', 'age370', 'bir370', 'a1370', 'a2370', 'a3370', 'a4370', 'a5370', 'a6370', 'a7370', 'a8370', 'a9370', 'a10370', 'a11370'), +('id371', 'value371', 'name371', 'age371', 'bir371', 'a1371', 'a2371', 'a3371', 'a4371', 'a5371', 'a6371', 'a7371', 'a8371', 'a9371', 'a10371', 'a11371'), +('id372', 'value372', 'name372', 'age372', 'bir372', 'a1372', 'a2372', 'a3372', 'a4372', 'a5372', 'a6372', 'a7372', 'a8372', 'a9372', 'a10372', 'a11372'), +('id373', 'value373', 'name373', 'age373', 'bir373', 'a1373', 'a2373', 'a3373', 'a4373', 'a5373', 'a6373', 'a7373', 'a8373', 'a9373', 'a10373', 'a11373'), +('id374', 'value374', 'name374', 'age374', 'bir374', 'a1374', 'a2374', 'a3374', 'a4374', 'a5374', 'a6374', 'a7374', 'a8374', 'a9374', 'a10374', 'a11374'), +('id375', 'value375', 'name375', 'age375', 'bir375', 'a1375', 'a2375', 'a3375', 'a4375', 'a5375', 'a6375', 'a7375', 'a8375', 'a9375', 'a10375', 'a11375'), +('id376', 'value376', 'name376', 'age376', 'bir376', 'a1376', 'a2376', 'a3376', 'a4376', 'a5376', 'a6376', 'a7376', 'a8376', 'a9376', 'a10376', 'a11376'), +('id377', 'value377', 'name377', 'age377', 'bir377', 'a1377', 'a2377', 'a3377', 'a4377', 'a5377', 'a6377', 'a7377', 'a8377', 'a9377', 'a10377', 'a11377'), +('id378', 'value378', 'name378', 'age378', 'bir378', 'a1378', 'a2378', 'a3378', 'a4378', 'a5378', 'a6378', 'a7378', 'a8378', 'a9378', 'a10378', 'a11378'), +('id379', 'value379', 'name379', 'age379', 'bir379', 'a1379', 'a2379', 'a3379', 'a4379', 'a5379', 'a6379', 'a7379', 'a8379', 'a9379', 'a10379', 'a11379'), +('id380', 'value380', 'name380', 'age380', 'bir380', 'a1380', 'a2380', 'a3380', 'a4380', 'a5380', 'a6380', 'a7380', 'a8380', 'a9380', 'a10380', 'a11380'), +('id381', 'value381', 'name381', 'age381', 'bir381', 'a1381', 'a2381', 'a3381', 'a4381', 'a5381', 'a6381', 'a7381', 'a8381', 'a9381', 'a10381', 'a11381'), +('id382', 'value382', 'name382', 'age382', 'bir382', 'a1382', 'a2382', 'a3382', 'a4382', 'a5382', 'a6382', 'a7382', 'a8382', 'a9382', 'a10382', 'a11382'), +('id383', 'value383', 'name383', 'age383', 'bir383', 'a1383', 'a2383', 'a3383', 'a4383', 'a5383', 'a6383', 'a7383', 'a8383', 'a9383', 'a10383', 'a11383'), +('id384', 'value384', 'name384', 'age384', 'bir384', 'a1384', 'a2384', 'a3384', 'a4384', 'a5384', 'a6384', 'a7384', 'a8384', 'a9384', 'a10384', 'a11384'), +('id385', 'value385', 'name385', 'age385', 'bir385', 'a1385', 'a2385', 'a3385', 'a4385', 'a5385', 'a6385', 'a7385', 'a8385', 'a9385', 'a10385', 'a11385'), +('id386', 'value386', 'name386', 'age386', 'bir386', 'a1386', 'a2386', 'a3386', 'a4386', 'a5386', 'a6386', 'a7386', 'a8386', 'a9386', 'a10386', 'a11386'), +('id387', 'value387', 'name387', 'age387', 'bir387', 'a1387', 'a2387', 'a3387', 'a4387', 'a5387', 'a6387', 'a7387', 'a8387', 'a9387', 'a10387', 'a11387'), +('id388', 'value388', 'name388', 'age388', 'bir388', 'a1388', 'a2388', 'a3388', 'a4388', 'a5388', 'a6388', 'a7388', 'a8388', 'a9388', 'a10388', 'a11388'), +('id389', 'value389', 'name389', 'age389', 'bir389', 'a1389', 'a2389', 'a3389', 'a4389', 'a5389', 'a6389', 'a7389', 'a8389', 'a9389', 'a10389', 'a11389'), +('id390', 'value390', 'name390', 'age390', 'bir390', 'a1390', 'a2390', 'a3390', 'a4390', 'a5390', 'a6390', 'a7390', 'a8390', 'a9390', 'a10390', 'a11390'), +('id391', 'value391', 'name391', 'age391', 'bir391', 'a1391', 'a2391', 'a3391', 'a4391', 'a5391', 'a6391', 'a7391', 'a8391', 'a9391', 'a10391', 'a11391'), +('id392', 'value392', 'name392', 'age392', 'bir392', 'a1392', 'a2392', 'a3392', 'a4392', 'a5392', 'a6392', 'a7392', 'a8392', 'a9392', 'a10392', 'a11392'), +('id393', 'value393', 'name393', 'age393', 'bir393', 'a1393', 'a2393', 'a3393', 'a4393', 'a5393', 'a6393', 'a7393', 'a8393', 'a9393', 'a10393', 'a11393'), +('id394', 'value394', 'name394', 'age394', 'bir394', 'a1394', 'a2394', 'a3394', 'a4394', 'a5394', 'a6394', 'a7394', 'a8394', 'a9394', 'a10394', 'a11394'), +('id395', 'value395', 'name395', 'age395', 'bir395', 'a1395', 'a2395', 'a3395', 'a4395', 'a5395', 'a6395', 'a7395', 'a8395', 'a9395', 'a10395', 'a11395'), +('id396', 'value396', 'name396', 'age396', 'bir396', 'a1396', 'a2396', 'a3396', 'a4396', 'a5396', 'a6396', 'a7396', 'a8396', 'a9396', 'a10396', 'a11396'), +('id397', 'value397', 'name397', 'age397', 'bir397', 'a1397', 'a2397', 'a3397', 'a4397', 'a5397', 'a6397', 'a7397', 'a8397', 'a9397', 'a10397', 'a11397'), +('id398', 'value398', 'name398', 'age398', 'bir398', 'a1398', 'a2398', 'a3398', 'a4398', 'a5398', 'a6398', 'a7398', 'a8398', 'a9398', 'a10398', 'a11398'), +('id399', 'value399', 'name399', 'age399', 'bir399', 'a1399', 'a2399', 'a3399', 'a4399', 'a5399', 'a6399', 'a7399', 'a8399', 'a9399', 'a10399', 'a11399'), +('id400', 'value400', 'name400', 'age400', 'bir400', 'a1400', 'a2400', 'a3400', 'a4400', 'a5400', 'a6400', 'a7400', 'a8400', 'a9400', 'a10400', 'a11400'), +('id401', 'value401', 'name401', 'age401', 'bir401', 'a1401', 'a2401', 'a3401', 'a4401', 'a5401', 'a6401', 'a7401', 'a8401', 'a9401', 'a10401', 'a11401'), +('id402', 'value402', 'name402', 'age402', 'bir402', 'a1402', 'a2402', 'a3402', 'a4402', 'a5402', 'a6402', 'a7402', 'a8402', 'a9402', 'a10402', 'a11402'), +('id403', 'value403', 'name403', 'age403', 'bir403', 'a1403', 'a2403', 'a3403', 'a4403', 'a5403', 'a6403', 'a7403', 'a8403', 'a9403', 'a10403', 'a11403'), +('id404', 'value404', 'name404', 'age404', 'bir404', 'a1404', 'a2404', 'a3404', 'a4404', 'a5404', 'a6404', 'a7404', 'a8404', 'a9404', 'a10404', 'a11404'), +('id405', 'value405', 'name405', 'age405', 'bir405', 'a1405', 'a2405', 'a3405', 'a4405', 'a5405', 'a6405', 'a7405', 'a8405', 'a9405', 'a10405', 'a11405'), +('id406', 'value406', 'name406', 'age406', 'bir406', 'a1406', 'a2406', 'a3406', 'a4406', 'a5406', 'a6406', 'a7406', 'a8406', 'a9406', 'a10406', 'a11406'), +('id407', 'value407', 'name407', 'age407', 'bir407', 'a1407', 'a2407', 'a3407', 'a4407', 'a5407', 'a6407', 'a7407', 'a8407', 'a9407', 'a10407', 'a11407'), +('id408', 'value408', 'name408', 'age408', 'bir408', 'a1408', 'a2408', 'a3408', 'a4408', 'a5408', 'a6408', 'a7408', 'a8408', 'a9408', 'a10408', 'a11408'), +('id409', 'value409', 'name409', 'age409', 'bir409', 'a1409', 'a2409', 'a3409', 'a4409', 'a5409', 'a6409', 'a7409', 'a8409', 'a9409', 'a10409', 'a11409'), +('id410', 'value410', 'name410', 'age410', 'bir410', 'a1410', 'a2410', 'a3410', 'a4410', 'a5410', 'a6410', 'a7410', 'a8410', 'a9410', 'a10410', 'a11410'), +('id411', 'value411', 'name411', 'age411', 'bir411', 'a1411', 'a2411', 'a3411', 'a4411', 'a5411', 'a6411', 'a7411', 'a8411', 'a9411', 'a10411', 'a11411'), +('id412', 'value412', 'name412', 'age412', 'bir412', 'a1412', 'a2412', 'a3412', 'a4412', 'a5412', 'a6412', 'a7412', 'a8412', 'a9412', 'a10412', 'a11412'), +('id413', 'value413', 'name413', 'age413', 'bir413', 'a1413', 'a2413', 'a3413', 'a4413', 'a5413', 'a6413', 'a7413', 'a8413', 'a9413', 'a10413', 'a11413'), +('id414', 'value414', 'name414', 'age414', 'bir414', 'a1414', 'a2414', 'a3414', 'a4414', 'a5414', 'a6414', 'a7414', 'a8414', 'a9414', 'a10414', 'a11414'), +('id415', 'value415', 'name415', 'age415', 'bir415', 'a1415', 'a2415', 'a3415', 'a4415', 'a5415', 'a6415', 'a7415', 'a8415', 'a9415', 'a10415', 'a11415'), +('id416', 'value416', 'name416', 'age416', 'bir416', 'a1416', 'a2416', 'a3416', 'a4416', 'a5416', 'a6416', 'a7416', 'a8416', 'a9416', 'a10416', 'a11416'), +('id417', 'value417', 'name417', 'age417', 'bir417', 'a1417', 'a2417', 'a3417', 'a4417', 'a5417', 'a6417', 'a7417', 'a8417', 'a9417', 'a10417', 'a11417'), +('id418', 'value418', 'name418', 'age418', 'bir418', 'a1418', 'a2418', 'a3418', 'a4418', 'a5418', 'a6418', 'a7418', 'a8418', 'a9418', 'a10418', 'a11418'), +('id419', 'value419', 'name419', 'age419', 'bir419', 'a1419', 'a2419', 'a3419', 'a4419', 'a5419', 'a6419', 'a7419', 'a8419', 'a9419', 'a10419', 'a11419'), +('id420', 'value420', 'name420', 'age420', 'bir420', 'a1420', 'a2420', 'a3420', 'a4420', 'a5420', 'a6420', 'a7420', 'a8420', 'a9420', 'a10420', 'a11420'), +('id421', 'value421', 'name421', 'age421', 'bir421', 'a1421', 'a2421', 'a3421', 'a4421', 'a5421', 'a6421', 'a7421', 'a8421', 'a9421', 'a10421', 'a11421'), +('id422', 'value422', 'name422', 'age422', 'bir422', 'a1422', 'a2422', 'a3422', 'a4422', 'a5422', 'a6422', 'a7422', 'a8422', 'a9422', 'a10422', 'a11422'), +('id423', 'value423', 'name423', 'age423', 'bir423', 'a1423', 'a2423', 'a3423', 'a4423', 'a5423', 'a6423', 'a7423', 'a8423', 'a9423', 'a10423', 'a11423'), +('id424', 'value424', 'name424', 'age424', 'bir424', 'a1424', 'a2424', 'a3424', 'a4424', 'a5424', 'a6424', 'a7424', 'a8424', 'a9424', 'a10424', 'a11424'), +('id425', 'value425', 'name425', 'age425', 'bir425', 'a1425', 'a2425', 'a3425', 'a4425', 'a5425', 'a6425', 'a7425', 'a8425', 'a9425', 'a10425', 'a11425'), +('id426', 'value426', 'name426', 'age426', 'bir426', 'a1426', 'a2426', 'a3426', 'a4426', 'a5426', 'a6426', 'a7426', 'a8426', 'a9426', 'a10426', 'a11426'), +('id427', 'value427', 'name427', 'age427', 'bir427', 'a1427', 'a2427', 'a3427', 'a4427', 'a5427', 'a6427', 'a7427', 'a8427', 'a9427', 'a10427', 'a11427'), +('id428', 'value428', 'name428', 'age428', 'bir428', 'a1428', 'a2428', 'a3428', 'a4428', 'a5428', 'a6428', 'a7428', 'a8428', 'a9428', 'a10428', 'a11428'), +('id429', 'value429', 'name429', 'age429', 'bir429', 'a1429', 'a2429', 'a3429', 'a4429', 'a5429', 'a6429', 'a7429', 'a8429', 'a9429', 'a10429', 'a11429'), +('id430', 'value430', 'name430', 'age430', 'bir430', 'a1430', 'a2430', 'a3430', 'a4430', 'a5430', 'a6430', 'a7430', 'a8430', 'a9430', 'a10430', 'a11430'), +('id431', 'value431', 'name431', 'age431', 'bir431', 'a1431', 'a2431', 'a3431', 'a4431', 'a5431', 'a6431', 'a7431', 'a8431', 'a9431', 'a10431', 'a11431'), +('id432', 'value432', 'name432', 'age432', 'bir432', 'a1432', 'a2432', 'a3432', 'a4432', 'a5432', 'a6432', 'a7432', 'a8432', 'a9432', 'a10432', 'a11432'), +('id433', 'value433', 'name433', 'age433', 'bir433', 'a1433', 'a2433', 'a3433', 'a4433', 'a5433', 'a6433', 'a7433', 'a8433', 'a9433', 'a10433', 'a11433'), +('id434', 'value434', 'name434', 'age434', 'bir434', 'a1434', 'a2434', 'a3434', 'a4434', 'a5434', 'a6434', 'a7434', 'a8434', 'a9434', 'a10434', 'a11434'), +('id435', 'value435', 'name435', 'age435', 'bir435', 'a1435', 'a2435', 'a3435', 'a4435', 'a5435', 'a6435', 'a7435', 'a8435', 'a9435', 'a10435', 'a11435'), +('id436', 'value436', 'name436', 'age436', 'bir436', 'a1436', 'a2436', 'a3436', 'a4436', 'a5436', 'a6436', 'a7436', 'a8436', 'a9436', 'a10436', 'a11436'), +('id437', 'value437', 'name437', 'age437', 'bir437', 'a1437', 'a2437', 'a3437', 'a4437', 'a5437', 'a6437', 'a7437', 'a8437', 'a9437', 'a10437', 'a11437'), +('id438', 'value438', 'name438', 'age438', 'bir438', 'a1438', 'a2438', 'a3438', 'a4438', 'a5438', 'a6438', 'a7438', 'a8438', 'a9438', 'a10438', 'a11438'), +('id439', 'value439', 'name439', 'age439', 'bir439', 'a1439', 'a2439', 'a3439', 'a4439', 'a5439', 'a6439', 'a7439', 'a8439', 'a9439', 'a10439', 'a11439'), +('id440', 'value440', 'name440', 'age440', 'bir440', 'a1440', 'a2440', 'a3440', 'a4440', 'a5440', 'a6440', 'a7440', 'a8440', 'a9440', 'a10440', 'a11440'), +('id441', 'value441', 'name441', 'age441', 'bir441', 'a1441', 'a2441', 'a3441', 'a4441', 'a5441', 'a6441', 'a7441', 'a8441', 'a9441', 'a10441', 'a11441'), +('id442', 'value442', 'name442', 'age442', 'bir442', 'a1442', 'a2442', 'a3442', 'a4442', 'a5442', 'a6442', 'a7442', 'a8442', 'a9442', 'a10442', 'a11442'), +('id443', 'value443', 'name443', 'age443', 'bir443', 'a1443', 'a2443', 'a3443', 'a4443', 'a5443', 'a6443', 'a7443', 'a8443', 'a9443', 'a10443', 'a11443'), +('id444', 'value444', 'name444', 'age444', 'bir444', 'a1444', 'a2444', 'a3444', 'a4444', 'a5444', 'a6444', 'a7444', 'a8444', 'a9444', 'a10444', 'a11444'), +('id445', 'value445', 'name445', 'age445', 'bir445', 'a1445', 'a2445', 'a3445', 'a4445', 'a5445', 'a6445', 'a7445', 'a8445', 'a9445', 'a10445', 'a11445'), +('id446', 'value446', 'name446', 'age446', 'bir446', 'a1446', 'a2446', 'a3446', 'a4446', 'a5446', 'a6446', 'a7446', 'a8446', 'a9446', 'a10446', 'a11446'), +('id447', 'value447', 'name447', 'age447', 'bir447', 'a1447', 'a2447', 'a3447', 'a4447', 'a5447', 'a6447', 'a7447', 'a8447', 'a9447', 'a10447', 'a11447'), +('id448', 'value448', 'name448', 'age448', 'bir448', 'a1448', 'a2448', 'a3448', 'a4448', 'a5448', 'a6448', 'a7448', 'a8448', 'a9448', 'a10448', 'a11448'), +('id449', 'value449', 'name449', 'age449', 'bir449', 'a1449', 'a2449', 'a3449', 'a4449', 'a5449', 'a6449', 'a7449', 'a8449', 'a9449', 'a10449', 'a11449'), +('id450', 'value450', 'name450', 'age450', 'bir450', 'a1450', 'a2450', 'a3450', 'a4450', 'a5450', 'a6450', 'a7450', 'a8450', 'a9450', 'a10450', 'a11450'), +('id451', 'value451', 'name451', 'age451', 'bir451', 'a1451', 'a2451', 'a3451', 'a4451', 'a5451', 'a6451', 'a7451', 'a8451', 'a9451', 'a10451', 'a11451'), +('id452', 'value452', 'name452', 'age452', 'bir452', 'a1452', 'a2452', 'a3452', 'a4452', 'a5452', 'a6452', 'a7452', 'a8452', 'a9452', 'a10452', 'a11452'), +('id453', 'value453', 'name453', 'age453', 'bir453', 'a1453', 'a2453', 'a3453', 'a4453', 'a5453', 'a6453', 'a7453', 'a8453', 'a9453', 'a10453', 'a11453'), +('id454', 'value454', 'name454', 'age454', 'bir454', 'a1454', 'a2454', 'a3454', 'a4454', 'a5454', 'a6454', 'a7454', 'a8454', 'a9454', 'a10454', 'a11454'), +('id455', 'value455', 'name455', 'age455', 'bir455', 'a1455', 'a2455', 'a3455', 'a4455', 'a5455', 'a6455', 'a7455', 'a8455', 'a9455', 'a10455', 'a11455'), +('id456', 'value456', 'name456', 'age456', 'bir456', 'a1456', 'a2456', 'a3456', 'a4456', 'a5456', 'a6456', 'a7456', 'a8456', 'a9456', 'a10456', 'a11456'), +('id457', 'value457', 'name457', 'age457', 'bir457', 'a1457', 'a2457', 'a3457', 'a4457', 'a5457', 'a6457', 'a7457', 'a8457', 'a9457', 'a10457', 'a11457'), +('id458', 'value458', 'name458', 'age458', 'bir458', 'a1458', 'a2458', 'a3458', 'a4458', 'a5458', 'a6458', 'a7458', 'a8458', 'a9458', 'a10458', 'a11458'), +('id459', 'value459', 'name459', 'age459', 'bir459', 'a1459', 'a2459', 'a3459', 'a4459', 'a5459', 'a6459', 'a7459', 'a8459', 'a9459', 'a10459', 'a11459'), +('id460', 'value460', 'name460', 'age460', 'bir460', 'a1460', 'a2460', 'a3460', 'a4460', 'a5460', 'a6460', 'a7460', 'a8460', 'a9460', 'a10460', 'a11460'), +('id461', 'value461', 'name461', 'age461', 'bir461', 'a1461', 'a2461', 'a3461', 'a4461', 'a5461', 'a6461', 'a7461', 'a8461', 'a9461', 'a10461', 'a11461'), +('id462', 'value462', 'name462', 'age462', 'bir462', 'a1462', 'a2462', 'a3462', 'a4462', 'a5462', 'a6462', 'a7462', 'a8462', 'a9462', 'a10462', 'a11462'), +('id463', 'value463', 'name463', 'age463', 'bir463', 'a1463', 'a2463', 'a3463', 'a4463', 'a5463', 'a6463', 'a7463', 'a8463', 'a9463', 'a10463', 'a11463'), +('id464', 'value464', 'name464', 'age464', 'bir464', 'a1464', 'a2464', 'a3464', 'a4464', 'a5464', 'a6464', 'a7464', 'a8464', 'a9464', 'a10464', 'a11464'), +('id465', 'value465', 'name465', 'age465', 'bir465', 'a1465', 'a2465', 'a3465', 'a4465', 'a5465', 'a6465', 'a7465', 'a8465', 'a9465', 'a10465', 'a11465'), +('id466', 'value466', 'name466', 'age466', 'bir466', 'a1466', 'a2466', 'a3466', 'a4466', 'a5466', 'a6466', 'a7466', 'a8466', 'a9466', 'a10466', 'a11466'), +('id467', 'value467', 'name467', 'age467', 'bir467', 'a1467', 'a2467', 'a3467', 'a4467', 'a5467', 'a6467', 'a7467', 'a8467', 'a9467', 'a10467', 'a11467'), +('id468', 'value468', 'name468', 'age468', 'bir468', 'a1468', 'a2468', 'a3468', 'a4468', 'a5468', 'a6468', 'a7468', 'a8468', 'a9468', 'a10468', 'a11468'), +('id469', 'value469', 'name469', 'age469', 'bir469', 'a1469', 'a2469', 'a3469', 'a4469', 'a5469', 'a6469', 'a7469', 'a8469', 'a9469', 'a10469', 'a11469'), +('id470', 'value470', 'name470', 'age470', 'bir470', 'a1470', 'a2470', 'a3470', 'a4470', 'a5470', 'a6470', 'a7470', 'a8470', 'a9470', 'a10470', 'a11470'), +('id471', 'value471', 'name471', 'age471', 'bir471', 'a1471', 'a2471', 'a3471', 'a4471', 'a5471', 'a6471', 'a7471', 'a8471', 'a9471', 'a10471', 'a11471'), +('id472', 'value472', 'name472', 'age472', 'bir472', 'a1472', 'a2472', 'a3472', 'a4472', 'a5472', 'a6472', 'a7472', 'a8472', 'a9472', 'a10472', 'a11472'), +('id473', 'value473', 'name473', 'age473', 'bir473', 'a1473', 'a2473', 'a3473', 'a4473', 'a5473', 'a6473', 'a7473', 'a8473', 'a9473', 'a10473', 'a11473'), +('id474', 'value474', 'name474', 'age474', 'bir474', 'a1474', 'a2474', 'a3474', 'a4474', 'a5474', 'a6474', 'a7474', 'a8474', 'a9474', 'a10474', 'a11474'), +('id475', 'value475', 'name475', 'age475', 'bir475', 'a1475', 'a2475', 'a3475', 'a4475', 'a5475', 'a6475', 'a7475', 'a8475', 'a9475', 'a10475', 'a11475'), +('id476', 'value476', 'name476', 'age476', 'bir476', 'a1476', 'a2476', 'a3476', 'a4476', 'a5476', 'a6476', 'a7476', 'a8476', 'a9476', 'a10476', 'a11476'), +('id477', 'value477', 'name477', 'age477', 'bir477', 'a1477', 'a2477', 'a3477', 'a4477', 'a5477', 'a6477', 'a7477', 'a8477', 'a9477', 'a10477', 'a11477'), +('id478', 'value478', 'name478', 'age478', 'bir478', 'a1478', 'a2478', 'a3478', 'a4478', 'a5478', 'a6478', 'a7478', 'a8478', 'a9478', 'a10478', 'a11478'), +('id479', 'value479', 'name479', 'age479', 'bir479', 'a1479', 'a2479', 'a3479', 'a4479', 'a5479', 'a6479', 'a7479', 'a8479', 'a9479', 'a10479', 'a11479'), +('id480', 'value480', 'name480', 'age480', 'bir480', 'a1480', 'a2480', 'a3480', 'a4480', 'a5480', 'a6480', 'a7480', 'a8480', 'a9480', 'a10480', 'a11480'), +('id481', 'value481', 'name481', 'age481', 'bir481', 'a1481', 'a2481', 'a3481', 'a4481', 'a5481', 'a6481', 'a7481', 'a8481', 'a9481', 'a10481', 'a11481'), +('id482', 'value482', 'name482', 'age482', 'bir482', 'a1482', 'a2482', 'a3482', 'a4482', 'a5482', 'a6482', 'a7482', 'a8482', 'a9482', 'a10482', 'a11482'), +('id483', 'value483', 'name483', 'age483', 'bir483', 'a1483', 'a2483', 'a3483', 'a4483', 'a5483', 'a6483', 'a7483', 'a8483', 'a9483', 'a10483', 'a11483'), +('id484', 'value484', 'name484', 'age484', 'bir484', 'a1484', 'a2484', 'a3484', 'a4484', 'a5484', 'a6484', 'a7484', 'a8484', 'a9484', 'a10484', 'a11484'), +('id485', 'value485', 'name485', 'age485', 'bir485', 'a1485', 'a2485', 'a3485', 'a4485', 'a5485', 'a6485', 'a7485', 'a8485', 'a9485', 'a10485', 'a11485'), +('id486', 'value486', 'name486', 'age486', 'bir486', 'a1486', 'a2486', 'a3486', 'a4486', 'a5486', 'a6486', 'a7486', 'a8486', 'a9486', 'a10486', 'a11486'), +('id487', 'value487', 'name487', 'age487', 'bir487', 'a1487', 'a2487', 'a3487', 'a4487', 'a5487', 'a6487', 'a7487', 'a8487', 'a9487', 'a10487', 'a11487'), +('id488', 'value488', 'name488', 'age488', 'bir488', 'a1488', 'a2488', 'a3488', 'a4488', 'a5488', 'a6488', 'a7488', 'a8488', 'a9488', 'a10488', 'a11488'), +('id489', 'value489', 'name489', 'age489', 'bir489', 'a1489', 'a2489', 'a3489', 'a4489', 'a5489', 'a6489', 'a7489', 'a8489', 'a9489', 'a10489', 'a11489'), +('id490', 'value490', 'name490', 'age490', 'bir490', 'a1490', 'a2490', 'a3490', 'a4490', 'a5490', 'a6490', 'a7490', 'a8490', 'a9490', 'a10490', 'a11490'), +('id491', 'value491', 'name491', 'age491', 'bir491', 'a1491', 'a2491', 'a3491', 'a4491', 'a5491', 'a6491', 'a7491', 'a8491', 'a9491', 'a10491', 'a11491'), +('id492', 'value492', 'name492', 'age492', 'bir492', 'a1492', 'a2492', 'a3492', 'a4492', 'a5492', 'a6492', 'a7492', 'a8492', 'a9492', 'a10492', 'a11492'), +('id493', 'value493', 'name493', 'age493', 'bir493', 'a1493', 'a2493', 'a3493', 'a4493', 'a5493', 'a6493', 'a7493', 'a8493', 'a9493', 'a10493', 'a11493'), +('id494', 'value494', 'name494', 'age494', 'bir494', 'a1494', 'a2494', 'a3494', 'a4494', 'a5494', 'a6494', 'a7494', 'a8494', 'a9494', 'a10494', 'a11494'), +('id495', 'value495', 'name495', 'age495', 'bir495', 'a1495', 'a2495', 'a3495', 'a4495', 'a5495', 'a6495', 'a7495', 'a8495', 'a9495', 'a10495', 'a11495'), +('id496', 'value496', 'name496', 'age496', 'bir496', 'a1496', 'a2496', 'a3496', 'a4496', 'a5496', 'a6496', 'a7496', 'a8496', 'a9496', 'a10496', 'a11496'), +('id497', 'value497', 'name497', 'age497', 'bir497', 'a1497', 'a2497', 'a3497', 'a4497', 'a5497', 'a6497', 'a7497', 'a8497', 'a9497', 'a10497', 'a11497'), +('id498', 'value498', 'name498', 'age498', 'bir498', 'a1498', 'a2498', 'a3498', 'a4498', 'a5498', 'a6498', 'a7498', 'a8498', 'a9498', 'a10498', 'a11498'), +('id499', 'value499', 'name499', 'age499', 'bir499', 'a1499', 'a2499', 'a3499', 'a4499', 'a5499', 'a6499', 'a7499', 'a8499', 'a9499', 'a10499', 'a11499'), +('id500', 'value500', 'name500', 'age500', 'bir500', 'a1500', 'a2500', 'a3500', 'a4500', 'a5500', 'a6500', 'a7500', 'a8500', 'a9500', 'a10500', 'a11500'), +('id501', 'value501', 'name501', 'age501', 'bir501', 'a1501', 'a2501', 'a3501', 'a4501', 'a5501', 'a6501', 'a7501', 'a8501', 'a9501', 'a10501', 'a11501'), +('id502', 'value502', 'name502', 'age502', 'bir502', 'a1502', 'a2502', 'a3502', 'a4502', 'a5502', 'a6502', 'a7502', 'a8502', 'a9502', 'a10502', 'a11502'), +('id503', 'value503', 'name503', 'age503', 'bir503', 'a1503', 'a2503', 'a3503', 'a4503', 'a5503', 'a6503', 'a7503', 'a8503', 'a9503', 'a10503', 'a11503'), +('id504', 'value504', 'name504', 'age504', 'bir504', 'a1504', 'a2504', 'a3504', 'a4504', 'a5504', 'a6504', 'a7504', 'a8504', 'a9504', 'a10504', 'a11504'), +('id505', 'value505', 'name505', 'age505', 'bir505', 'a1505', 'a2505', 'a3505', 'a4505', 'a5505', 'a6505', 'a7505', 'a8505', 'a9505', 'a10505', 'a11505'), +('id506', 'value506', 'name506', 'age506', 'bir506', 'a1506', 'a2506', 'a3506', 'a4506', 'a5506', 'a6506', 'a7506', 'a8506', 'a9506', 'a10506', 'a11506'), +('id507', 'value507', 'name507', 'age507', 'bir507', 'a1507', 'a2507', 'a3507', 'a4507', 'a5507', 'a6507', 'a7507', 'a8507', 'a9507', 'a10507', 'a11507'), +('id508', 'value508', 'name508', 'age508', 'bir508', 'a1508', 'a2508', 'a3508', 'a4508', 'a5508', 'a6508', 'a7508', 'a8508', 'a9508', 'a10508', 'a11508'), +('id509', 'value509', 'name509', 'age509', 'bir509', 'a1509', 'a2509', 'a3509', 'a4509', 'a5509', 'a6509', 'a7509', 'a8509', 'a9509', 'a10509', 'a11509'), +('id510', 'value510', 'name510', 'age510', 'bir510', 'a1510', 'a2510', 'a3510', 'a4510', 'a5510', 'a6510', 'a7510', 'a8510', 'a9510', 'a10510', 'a11510'), +('id511', 'value511', 'name511', 'age511', 'bir511', 'a1511', 'a2511', 'a3511', 'a4511', 'a5511', 'a6511', 'a7511', 'a8511', 'a9511', 'a10511', 'a11511'), +('id512', 'value512', 'name512', 'age512', 'bir512', 'a1512', 'a2512', 'a3512', 'a4512', 'a5512', 'a6512', 'a7512', 'a8512', 'a9512', 'a10512', 'a11512'), +('id513', 'value513', 'name513', 'age513', 'bir513', 'a1513', 'a2513', 'a3513', 'a4513', 'a5513', 'a6513', 'a7513', 'a8513', 'a9513', 'a10513', 'a11513'), +('id514', 'value514', 'name514', 'age514', 'bir514', 'a1514', 'a2514', 'a3514', 'a4514', 'a5514', 'a6514', 'a7514', 'a8514', 'a9514', 'a10514', 'a11514'), +('id515', 'value515', 'name515', 'age515', 'bir515', 'a1515', 'a2515', 'a3515', 'a4515', 'a5515', 'a6515', 'a7515', 'a8515', 'a9515', 'a10515', 'a11515'), +('id516', 'value516', 'name516', 'age516', 'bir516', 'a1516', 'a2516', 'a3516', 'a4516', 'a5516', 'a6516', 'a7516', 'a8516', 'a9516', 'a10516', 'a11516'), +('id517', 'value517', 'name517', 'age517', 'bir517', 'a1517', 'a2517', 'a3517', 'a4517', 'a5517', 'a6517', 'a7517', 'a8517', 'a9517', 'a10517', 'a11517'), +('id518', 'value518', 'name518', 'age518', 'bir518', 'a1518', 'a2518', 'a3518', 'a4518', 'a5518', 'a6518', 'a7518', 'a8518', 'a9518', 'a10518', 'a11518'), +('id519', 'value519', 'name519', 'age519', 'bir519', 'a1519', 'a2519', 'a3519', 'a4519', 'a5519', 'a6519', 'a7519', 'a8519', 'a9519', 'a10519', 'a11519'), +('id520', 'value520', 'name520', 'age520', 'bir520', 'a1520', 'a2520', 'a3520', 'a4520', 'a5520', 'a6520', 'a7520', 'a8520', 'a9520', 'a10520', 'a11520'), +('id521', 'value521', 'name521', 'age521', 'bir521', 'a1521', 'a2521', 'a3521', 'a4521', 'a5521', 'a6521', 'a7521', 'a8521', 'a9521', 'a10521', 'a11521'), +('id522', 'value522', 'name522', 'age522', 'bir522', 'a1522', 'a2522', 'a3522', 'a4522', 'a5522', 'a6522', 'a7522', 'a8522', 'a9522', 'a10522', 'a11522'), +('id523', 'value523', 'name523', 'age523', 'bir523', 'a1523', 'a2523', 'a3523', 'a4523', 'a5523', 'a6523', 'a7523', 'a8523', 'a9523', 'a10523', 'a11523'), +('id524', 'value524', 'name524', 'age524', 'bir524', 'a1524', 'a2524', 'a3524', 'a4524', 'a5524', 'a6524', 'a7524', 'a8524', 'a9524', 'a10524', 'a11524'), +('id525', 'value525', 'name525', 'age525', 'bir525', 'a1525', 'a2525', 'a3525', 'a4525', 'a5525', 'a6525', 'a7525', 'a8525', 'a9525', 'a10525', 'a11525'), +('id526', 'value526', 'name526', 'age526', 'bir526', 'a1526', 'a2526', 'a3526', 'a4526', 'a5526', 'a6526', 'a7526', 'a8526', 'a9526', 'a10526', 'a11526'), +('id527', 'value527', 'name527', 'age527', 'bir527', 'a1527', 'a2527', 'a3527', 'a4527', 'a5527', 'a6527', 'a7527', 'a8527', 'a9527', 'a10527', 'a11527'), +('id528', 'value528', 'name528', 'age528', 'bir528', 'a1528', 'a2528', 'a3528', 'a4528', 'a5528', 'a6528', 'a7528', 'a8528', 'a9528', 'a10528', 'a11528'), +('id529', 'value529', 'name529', 'age529', 'bir529', 'a1529', 'a2529', 'a3529', 'a4529', 'a5529', 'a6529', 'a7529', 'a8529', 'a9529', 'a10529', 'a11529'), +('id530', 'value530', 'name530', 'age530', 'bir530', 'a1530', 'a2530', 'a3530', 'a4530', 'a5530', 'a6530', 'a7530', 'a8530', 'a9530', 'a10530', 'a11530'), +('id531', 'value531', 'name531', 'age531', 'bir531', 'a1531', 'a2531', 'a3531', 'a4531', 'a5531', 'a6531', 'a7531', 'a8531', 'a9531', 'a10531', 'a11531'), +('id532', 'value532', 'name532', 'age532', 'bir532', 'a1532', 'a2532', 'a3532', 'a4532', 'a5532', 'a6532', 'a7532', 'a8532', 'a9532', 'a10532', 'a11532'), +('id533', 'value533', 'name533', 'age533', 'bir533', 'a1533', 'a2533', 'a3533', 'a4533', 'a5533', 'a6533', 'a7533', 'a8533', 'a9533', 'a10533', 'a11533'), +('id534', 'value534', 'name534', 'age534', 'bir534', 'a1534', 'a2534', 'a3534', 'a4534', 'a5534', 'a6534', 'a7534', 'a8534', 'a9534', 'a10534', 'a11534'), +('id535', 'value535', 'name535', 'age535', 'bir535', 'a1535', 'a2535', 'a3535', 'a4535', 'a5535', 'a6535', 'a7535', 'a8535', 'a9535', 'a10535', 'a11535'), +('id536', 'value536', 'name536', 'age536', 'bir536', 'a1536', 'a2536', 'a3536', 'a4536', 'a5536', 'a6536', 'a7536', 'a8536', 'a9536', 'a10536', 'a11536'), +('id537', 'value537', 'name537', 'age537', 'bir537', 'a1537', 'a2537', 'a3537', 'a4537', 'a5537', 'a6537', 'a7537', 'a8537', 'a9537', 'a10537', 'a11537'), +('id538', 'value538', 'name538', 'age538', 'bir538', 'a1538', 'a2538', 'a3538', 'a4538', 'a5538', 'a6538', 'a7538', 'a8538', 'a9538', 'a10538', 'a11538'), +('id539', 'value539', 'name539', 'age539', 'bir539', 'a1539', 'a2539', 'a3539', 'a4539', 'a5539', 'a6539', 'a7539', 'a8539', 'a9539', 'a10539', 'a11539'), +('id540', 'value540', 'name540', 'age540', 'bir540', 'a1540', 'a2540', 'a3540', 'a4540', 'a5540', 'a6540', 'a7540', 'a8540', 'a9540', 'a10540', 'a11540'), +('id541', 'value541', 'name541', 'age541', 'bir541', 'a1541', 'a2541', 'a3541', 'a4541', 'a5541', 'a6541', 'a7541', 'a8541', 'a9541', 'a10541', 'a11541'), +('id542', 'value542', 'name542', 'age542', 'bir542', 'a1542', 'a2542', 'a3542', 'a4542', 'a5542', 'a6542', 'a7542', 'a8542', 'a9542', 'a10542', 'a11542'), +('id543', 'value543', 'name543', 'age543', 'bir543', 'a1543', 'a2543', 'a3543', 'a4543', 'a5543', 'a6543', 'a7543', 'a8543', 'a9543', 'a10543', 'a11543'), +('id544', 'value544', 'name544', 'age544', 'bir544', 'a1544', 'a2544', 'a3544', 'a4544', 'a5544', 'a6544', 'a7544', 'a8544', 'a9544', 'a10544', 'a11544'), +('id545', 'value545', 'name545', 'age545', 'bir545', 'a1545', 'a2545', 'a3545', 'a4545', 'a5545', 'a6545', 'a7545', 'a8545', 'a9545', 'a10545', 'a11545'), +('id546', 'value546', 'name546', 'age546', 'bir546', 'a1546', 'a2546', 'a3546', 'a4546', 'a5546', 'a6546', 'a7546', 'a8546', 'a9546', 'a10546', 'a11546'), +('id547', 'value547', 'name547', 'age547', 'bir547', 'a1547', 'a2547', 'a3547', 'a4547', 'a5547', 'a6547', 'a7547', 'a8547', 'a9547', 'a10547', 'a11547'), +('id548', 'value548', 'name548', 'age548', 'bir548', 'a1548', 'a2548', 'a3548', 'a4548', 'a5548', 'a6548', 'a7548', 'a8548', 'a9548', 'a10548', 'a11548'), +('id549', 'value549', 'name549', 'age549', 'bir549', 'a1549', 'a2549', 'a3549', 'a4549', 'a5549', 'a6549', 'a7549', 'a8549', 'a9549', 'a10549', 'a11549'), +('id550', 'value550', 'name550', 'age550', 'bir550', 'a1550', 'a2550', 'a3550', 'a4550', 'a5550', 'a6550', 'a7550', 'a8550', 'a9550', 'a10550', 'a11550'), +('id551', 'value551', 'name551', 'age551', 'bir551', 'a1551', 'a2551', 'a3551', 'a4551', 'a5551', 'a6551', 'a7551', 'a8551', 'a9551', 'a10551', 'a11551'), +('id552', 'value552', 'name552', 'age552', 'bir552', 'a1552', 'a2552', 'a3552', 'a4552', 'a5552', 'a6552', 'a7552', 'a8552', 'a9552', 'a10552', 'a11552'), +('id553', 'value553', 'name553', 'age553', 'bir553', 'a1553', 'a2553', 'a3553', 'a4553', 'a5553', 'a6553', 'a7553', 'a8553', 'a9553', 'a10553', 'a11553'), +('id554', 'value554', 'name554', 'age554', 'bir554', 'a1554', 'a2554', 'a3554', 'a4554', 'a5554', 'a6554', 'a7554', 'a8554', 'a9554', 'a10554', 'a11554'), +('id555', 'value555', 'name555', 'age555', 'bir555', 'a1555', 'a2555', 'a3555', 'a4555', 'a5555', 'a6555', 'a7555', 'a8555', 'a9555', 'a10555', 'a11555'), +('id556', 'value556', 'name556', 'age556', 'bir556', 'a1556', 'a2556', 'a3556', 'a4556', 'a5556', 'a6556', 'a7556', 'a8556', 'a9556', 'a10556', 'a11556'), +('id557', 'value557', 'name557', 'age557', 'bir557', 'a1557', 'a2557', 'a3557', 'a4557', 'a5557', 'a6557', 'a7557', 'a8557', 'a9557', 'a10557', 'a11557'), +('id558', 'value558', 'name558', 'age558', 'bir558', 'a1558', 'a2558', 'a3558', 'a4558', 'a5558', 'a6558', 'a7558', 'a8558', 'a9558', 'a10558', 'a11558'), +('id559', 'value559', 'name559', 'age559', 'bir559', 'a1559', 'a2559', 'a3559', 'a4559', 'a5559', 'a6559', 'a7559', 'a8559', 'a9559', 'a10559', 'a11559'), +('id560', 'value560', 'name560', 'age560', 'bir560', 'a1560', 'a2560', 'a3560', 'a4560', 'a5560', 'a6560', 'a7560', 'a8560', 'a9560', 'a10560', 'a11560'), +('id561', 'value561', 'name561', 'age561', 'bir561', 'a1561', 'a2561', 'a3561', 'a4561', 'a5561', 'a6561', 'a7561', 'a8561', 'a9561', 'a10561', 'a11561'), +('id562', 'value562', 'name562', 'age562', 'bir562', 'a1562', 'a2562', 'a3562', 'a4562', 'a5562', 'a6562', 'a7562', 'a8562', 'a9562', 'a10562', 'a11562'), +('id563', 'value563', 'name563', 'age563', 'bir563', 'a1563', 'a2563', 'a3563', 'a4563', 'a5563', 'a6563', 'a7563', 'a8563', 'a9563', 'a10563', 'a11563'), +('id564', 'value564', 'name564', 'age564', 'bir564', 'a1564', 'a2564', 'a3564', 'a4564', 'a5564', 'a6564', 'a7564', 'a8564', 'a9564', 'a10564', 'a11564'), +('id565', 'value565', 'name565', 'age565', 'bir565', 'a1565', 'a2565', 'a3565', 'a4565', 'a5565', 'a6565', 'a7565', 'a8565', 'a9565', 'a10565', 'a11565'), +('id566', 'value566', 'name566', 'age566', 'bir566', 'a1566', 'a2566', 'a3566', 'a4566', 'a5566', 'a6566', 'a7566', 'a8566', 'a9566', 'a10566', 'a11566'), +('id567', 'value567', 'name567', 'age567', 'bir567', 'a1567', 'a2567', 'a3567', 'a4567', 'a5567', 'a6567', 'a7567', 'a8567', 'a9567', 'a10567', 'a11567'), +('id568', 'value568', 'name568', 'age568', 'bir568', 'a1568', 'a2568', 'a3568', 'a4568', 'a5568', 'a6568', 'a7568', 'a8568', 'a9568', 'a10568', 'a11568'), +('id569', 'value569', 'name569', 'age569', 'bir569', 'a1569', 'a2569', 'a3569', 'a4569', 'a5569', 'a6569', 'a7569', 'a8569', 'a9569', 'a10569', 'a11569'), +('id570', 'value570', 'name570', 'age570', 'bir570', 'a1570', 'a2570', 'a3570', 'a4570', 'a5570', 'a6570', 'a7570', 'a8570', 'a9570', 'a10570', 'a11570'), +('id571', 'value571', 'name571', 'age571', 'bir571', 'a1571', 'a2571', 'a3571', 'a4571', 'a5571', 'a6571', 'a7571', 'a8571', 'a9571', 'a10571', 'a11571'), +('id572', 'value572', 'name572', 'age572', 'bir572', 'a1572', 'a2572', 'a3572', 'a4572', 'a5572', 'a6572', 'a7572', 'a8572', 'a9572', 'a10572', 'a11572'), +('id573', 'value573', 'name573', 'age573', 'bir573', 'a1573', 'a2573', 'a3573', 'a4573', 'a5573', 'a6573', 'a7573', 'a8573', 'a9573', 'a10573', 'a11573'), +('id574', 'value574', 'name574', 'age574', 'bir574', 'a1574', 'a2574', 'a3574', 'a4574', 'a5574', 'a6574', 'a7574', 'a8574', 'a9574', 'a10574', 'a11574'), +('id575', 'value575', 'name575', 'age575', 'bir575', 'a1575', 'a2575', 'a3575', 'a4575', 'a5575', 'a6575', 'a7575', 'a8575', 'a9575', 'a10575', 'a11575'), +('id576', 'value576', 'name576', 'age576', 'bir576', 'a1576', 'a2576', 'a3576', 'a4576', 'a5576', 'a6576', 'a7576', 'a8576', 'a9576', 'a10576', 'a11576'), +('id577', 'value577', 'name577', 'age577', 'bir577', 'a1577', 'a2577', 'a3577', 'a4577', 'a5577', 'a6577', 'a7577', 'a8577', 'a9577', 'a10577', 'a11577'), +('id578', 'value578', 'name578', 'age578', 'bir578', 'a1578', 'a2578', 'a3578', 'a4578', 'a5578', 'a6578', 'a7578', 'a8578', 'a9578', 'a10578', 'a11578'), +('id579', 'value579', 'name579', 'age579', 'bir579', 'a1579', 'a2579', 'a3579', 'a4579', 'a5579', 'a6579', 'a7579', 'a8579', 'a9579', 'a10579', 'a11579'), +('id580', 'value580', 'name580', 'age580', 'bir580', 'a1580', 'a2580', 'a3580', 'a4580', 'a5580', 'a6580', 'a7580', 'a8580', 'a9580', 'a10580', 'a11580'), +('id581', 'value581', 'name581', 'age581', 'bir581', 'a1581', 'a2581', 'a3581', 'a4581', 'a5581', 'a6581', 'a7581', 'a8581', 'a9581', 'a10581', 'a11581'), +('id582', 'value582', 'name582', 'age582', 'bir582', 'a1582', 'a2582', 'a3582', 'a4582', 'a5582', 'a6582', 'a7582', 'a8582', 'a9582', 'a10582', 'a11582'), +('id583', 'value583', 'name583', 'age583', 'bir583', 'a1583', 'a2583', 'a3583', 'a4583', 'a5583', 'a6583', 'a7583', 'a8583', 'a9583', 'a10583', 'a11583'), +('id584', 'value584', 'name584', 'age584', 'bir584', 'a1584', 'a2584', 'a3584', 'a4584', 'a5584', 'a6584', 'a7584', 'a8584', 'a9584', 'a10584', 'a11584'), +('id585', 'value585', 'name585', 'age585', 'bir585', 'a1585', 'a2585', 'a3585', 'a4585', 'a5585', 'a6585', 'a7585', 'a8585', 'a9585', 'a10585', 'a11585'), +('id586', 'value586', 'name586', 'age586', 'bir586', 'a1586', 'a2586', 'a3586', 'a4586', 'a5586', 'a6586', 'a7586', 'a8586', 'a9586', 'a10586', 'a11586'), +('id587', 'value587', 'name587', 'age587', 'bir587', 'a1587', 'a2587', 'a3587', 'a4587', 'a5587', 'a6587', 'a7587', 'a8587', 'a9587', 'a10587', 'a11587'), +('id588', 'value588', 'name588', 'age588', 'bir588', 'a1588', 'a2588', 'a3588', 'a4588', 'a5588', 'a6588', 'a7588', 'a8588', 'a9588', 'a10588', 'a11588'), +('id589', 'value589', 'name589', 'age589', 'bir589', 'a1589', 'a2589', 'a3589', 'a4589', 'a5589', 'a6589', 'a7589', 'a8589', 'a9589', 'a10589', 'a11589'), +('id590', 'value590', 'name590', 'age590', 'bir590', 'a1590', 'a2590', 'a3590', 'a4590', 'a5590', 'a6590', 'a7590', 'a8590', 'a9590', 'a10590', 'a11590'), +('id591', 'value591', 'name591', 'age591', 'bir591', 'a1591', 'a2591', 'a3591', 'a4591', 'a5591', 'a6591', 'a7591', 'a8591', 'a9591', 'a10591', 'a11591'), +('id592', 'value592', 'name592', 'age592', 'bir592', 'a1592', 'a2592', 'a3592', 'a4592', 'a5592', 'a6592', 'a7592', 'a8592', 'a9592', 'a10592', 'a11592'), +('id593', 'value593', 'name593', 'age593', 'bir593', 'a1593', 'a2593', 'a3593', 'a4593', 'a5593', 'a6593', 'a7593', 'a8593', 'a9593', 'a10593', 'a11593'), +('id594', 'value594', 'name594', 'age594', 'bir594', 'a1594', 'a2594', 'a3594', 'a4594', 'a5594', 'a6594', 'a7594', 'a8594', 'a9594', 'a10594', 'a11594'), +('id595', 'value595', 'name595', 'age595', 'bir595', 'a1595', 'a2595', 'a3595', 'a4595', 'a5595', 'a6595', 'a7595', 'a8595', 'a9595', 'a10595', 'a11595'), +('id596', 'value596', 'name596', 'age596', 'bir596', 'a1596', 'a2596', 'a3596', 'a4596', 'a5596', 'a6596', 'a7596', 'a8596', 'a9596', 'a10596', 'a11596'), +('id597', 'value597', 'name597', 'age597', 'bir597', 'a1597', 'a2597', 'a3597', 'a4597', 'a5597', 'a6597', 'a7597', 'a8597', 'a9597', 'a10597', 'a11597'), +('id598', 'value598', 'name598', 'age598', 'bir598', 'a1598', 'a2598', 'a3598', 'a4598', 'a5598', 'a6598', 'a7598', 'a8598', 'a9598', 'a10598', 'a11598'), +('id599', 'value599', 'name599', 'age599', 'bir599', 'a1599', 'a2599', 'a3599', 'a4599', 'a5599', 'a6599', 'a7599', 'a8599', 'a9599', 'a10599', 'a11599'), +('id600', 'value600', 'name600', 'age600', 'bir600', 'a1600', 'a2600', 'a3600', 'a4600', 'a5600', 'a6600', 'a7600', 'a8600', 'a9600', 'a10600', 'a11600'), +('id601', 'value601', 'name601', 'age601', 'bir601', 'a1601', 'a2601', 'a3601', 'a4601', 'a5601', 'a6601', 'a7601', 'a8601', 'a9601', 'a10601', 'a11601'), +('id602', 'value602', 'name602', 'age602', 'bir602', 'a1602', 'a2602', 'a3602', 'a4602', 'a5602', 'a6602', 'a7602', 'a8602', 'a9602', 'a10602', 'a11602'), +('id603', 'value603', 'name603', 'age603', 'bir603', 'a1603', 'a2603', 'a3603', 'a4603', 'a5603', 'a6603', 'a7603', 'a8603', 'a9603', 'a10603', 'a11603'), +('id604', 'value604', 'name604', 'age604', 'bir604', 'a1604', 'a2604', 'a3604', 'a4604', 'a5604', 'a6604', 'a7604', 'a8604', 'a9604', 'a10604', 'a11604'), +('id605', 'value605', 'name605', 'age605', 'bir605', 'a1605', 'a2605', 'a3605', 'a4605', 'a5605', 'a6605', 'a7605', 'a8605', 'a9605', 'a10605', 'a11605'), +('id606', 'value606', 'name606', 'age606', 'bir606', 'a1606', 'a2606', 'a3606', 'a4606', 'a5606', 'a6606', 'a7606', 'a8606', 'a9606', 'a10606', 'a11606'), +('id607', 'value607', 'name607', 'age607', 'bir607', 'a1607', 'a2607', 'a3607', 'a4607', 'a5607', 'a6607', 'a7607', 'a8607', 'a9607', 'a10607', 'a11607'), +('id608', 'value608', 'name608', 'age608', 'bir608', 'a1608', 'a2608', 'a3608', 'a4608', 'a5608', 'a6608', 'a7608', 'a8608', 'a9608', 'a10608', 'a11608'), +('id609', 'value609', 'name609', 'age609', 'bir609', 'a1609', 'a2609', 'a3609', 'a4609', 'a5609', 'a6609', 'a7609', 'a8609', 'a9609', 'a10609', 'a11609'), +('id610', 'value610', 'name610', 'age610', 'bir610', 'a1610', 'a2610', 'a3610', 'a4610', 'a5610', 'a6610', 'a7610', 'a8610', 'a9610', 'a10610', 'a11610'), +('id611', 'value611', 'name611', 'age611', 'bir611', 'a1611', 'a2611', 'a3611', 'a4611', 'a5611', 'a6611', 'a7611', 'a8611', 'a9611', 'a10611', 'a11611'), +('id612', 'value612', 'name612', 'age612', 'bir612', 'a1612', 'a2612', 'a3612', 'a4612', 'a5612', 'a6612', 'a7612', 'a8612', 'a9612', 'a10612', 'a11612'), +('id613', 'value613', 'name613', 'age613', 'bir613', 'a1613', 'a2613', 'a3613', 'a4613', 'a5613', 'a6613', 'a7613', 'a8613', 'a9613', 'a10613', 'a11613'), +('id614', 'value614', 'name614', 'age614', 'bir614', 'a1614', 'a2614', 'a3614', 'a4614', 'a5614', 'a6614', 'a7614', 'a8614', 'a9614', 'a10614', 'a11614'), +('id615', 'value615', 'name615', 'age615', 'bir615', 'a1615', 'a2615', 'a3615', 'a4615', 'a5615', 'a6615', 'a7615', 'a8615', 'a9615', 'a10615', 'a11615'), +('id616', 'value616', 'name616', 'age616', 'bir616', 'a1616', 'a2616', 'a3616', 'a4616', 'a5616', 'a6616', 'a7616', 'a8616', 'a9616', 'a10616', 'a11616'), +('id617', 'value617', 'name617', 'age617', 'bir617', 'a1617', 'a2617', 'a3617', 'a4617', 'a5617', 'a6617', 'a7617', 'a8617', 'a9617', 'a10617', 'a11617'), +('id618', 'value618', 'name618', 'age618', 'bir618', 'a1618', 'a2618', 'a3618', 'a4618', 'a5618', 'a6618', 'a7618', 'a8618', 'a9618', 'a10618', 'a11618'), +('id619', 'value619', 'name619', 'age619', 'bir619', 'a1619', 'a2619', 'a3619', 'a4619', 'a5619', 'a6619', 'a7619', 'a8619', 'a9619', 'a10619', 'a11619'), +('id620', 'value620', 'name620', 'age620', 'bir620', 'a1620', 'a2620', 'a3620', 'a4620', 'a5620', 'a6620', 'a7620', 'a8620', 'a9620', 'a10620', 'a11620'), +('id621', 'value621', 'name621', 'age621', 'bir621', 'a1621', 'a2621', 'a3621', 'a4621', 'a5621', 'a6621', 'a7621', 'a8621', 'a9621', 'a10621', 'a11621'), +('id622', 'value622', 'name622', 'age622', 'bir622', 'a1622', 'a2622', 'a3622', 'a4622', 'a5622', 'a6622', 'a7622', 'a8622', 'a9622', 'a10622', 'a11622'), +('id623', 'value623', 'name623', 'age623', 'bir623', 'a1623', 'a2623', 'a3623', 'a4623', 'a5623', 'a6623', 'a7623', 'a8623', 'a9623', 'a10623', 'a11623'), +('id624', 'value624', 'name624', 'age624', 'bir624', 'a1624', 'a2624', 'a3624', 'a4624', 'a5624', 'a6624', 'a7624', 'a8624', 'a9624', 'a10624', 'a11624'), +('id625', 'value625', 'name625', 'age625', 'bir625', 'a1625', 'a2625', 'a3625', 'a4625', 'a5625', 'a6625', 'a7625', 'a8625', 'a9625', 'a10625', 'a11625'), +('id626', 'value626', 'name626', 'age626', 'bir626', 'a1626', 'a2626', 'a3626', 'a4626', 'a5626', 'a6626', 'a7626', 'a8626', 'a9626', 'a10626', 'a11626'), +('id627', 'value627', 'name627', 'age627', 'bir627', 'a1627', 'a2627', 'a3627', 'a4627', 'a5627', 'a6627', 'a7627', 'a8627', 'a9627', 'a10627', 'a11627'), +('id628', 'value628', 'name628', 'age628', 'bir628', 'a1628', 'a2628', 'a3628', 'a4628', 'a5628', 'a6628', 'a7628', 'a8628', 'a9628', 'a10628', 'a11628'), +('id629', 'value629', 'name629', 'age629', 'bir629', 'a1629', 'a2629', 'a3629', 'a4629', 'a5629', 'a6629', 'a7629', 'a8629', 'a9629', 'a10629', 'a11629'), +('id630', 'value630', 'name630', 'age630', 'bir630', 'a1630', 'a2630', 'a3630', 'a4630', 'a5630', 'a6630', 'a7630', 'a8630', 'a9630', 'a10630', 'a11630'), +('id631', 'value631', 'name631', 'age631', 'bir631', 'a1631', 'a2631', 'a3631', 'a4631', 'a5631', 'a6631', 'a7631', 'a8631', 'a9631', 'a10631', 'a11631'), +('id632', 'value632', 'name632', 'age632', 'bir632', 'a1632', 'a2632', 'a3632', 'a4632', 'a5632', 'a6632', 'a7632', 'a8632', 'a9632', 'a10632', 'a11632'), +('id633', 'value633', 'name633', 'age633', 'bir633', 'a1633', 'a2633', 'a3633', 'a4633', 'a5633', 'a6633', 'a7633', 'a8633', 'a9633', 'a10633', 'a11633'), +('id634', 'value634', 'name634', 'age634', 'bir634', 'a1634', 'a2634', 'a3634', 'a4634', 'a5634', 'a6634', 'a7634', 'a8634', 'a9634', 'a10634', 'a11634'), +('id635', 'value635', 'name635', 'age635', 'bir635', 'a1635', 'a2635', 'a3635', 'a4635', 'a5635', 'a6635', 'a7635', 'a8635', 'a9635', 'a10635', 'a11635'), +('id636', 'value636', 'name636', 'age636', 'bir636', 'a1636', 'a2636', 'a3636', 'a4636', 'a5636', 'a6636', 'a7636', 'a8636', 'a9636', 'a10636', 'a11636'), +('id637', 'value637', 'name637', 'age637', 'bir637', 'a1637', 'a2637', 'a3637', 'a4637', 'a5637', 'a6637', 'a7637', 'a8637', 'a9637', 'a10637', 'a11637'), +('id638', 'value638', 'name638', 'age638', 'bir638', 'a1638', 'a2638', 'a3638', 'a4638', 'a5638', 'a6638', 'a7638', 'a8638', 'a9638', 'a10638', 'a11638'), +('id639', 'value639', 'name639', 'age639', 'bir639', 'a1639', 'a2639', 'a3639', 'a4639', 'a5639', 'a6639', 'a7639', 'a8639', 'a9639', 'a10639', 'a11639'), +('id640', 'value640', 'name640', 'age640', 'bir640', 'a1640', 'a2640', 'a3640', 'a4640', 'a5640', 'a6640', 'a7640', 'a8640', 'a9640', 'a10640', 'a11640'), +('id641', 'value641', 'name641', 'age641', 'bir641', 'a1641', 'a2641', 'a3641', 'a4641', 'a5641', 'a6641', 'a7641', 'a8641', 'a9641', 'a10641', 'a11641'), +('id642', 'value642', 'name642', 'age642', 'bir642', 'a1642', 'a2642', 'a3642', 'a4642', 'a5642', 'a6642', 'a7642', 'a8642', 'a9642', 'a10642', 'a11642'), +('id643', 'value643', 'name643', 'age643', 'bir643', 'a1643', 'a2643', 'a3643', 'a4643', 'a5643', 'a6643', 'a7643', 'a8643', 'a9643', 'a10643', 'a11643'), +('id644', 'value644', 'name644', 'age644', 'bir644', 'a1644', 'a2644', 'a3644', 'a4644', 'a5644', 'a6644', 'a7644', 'a8644', 'a9644', 'a10644', 'a11644'), +('id645', 'value645', 'name645', 'age645', 'bir645', 'a1645', 'a2645', 'a3645', 'a4645', 'a5645', 'a6645', 'a7645', 'a8645', 'a9645', 'a10645', 'a11645'), +('id646', 'value646', 'name646', 'age646', 'bir646', 'a1646', 'a2646', 'a3646', 'a4646', 'a5646', 'a6646', 'a7646', 'a8646', 'a9646', 'a10646', 'a11646'), +('id647', 'value647', 'name647', 'age647', 'bir647', 'a1647', 'a2647', 'a3647', 'a4647', 'a5647', 'a6647', 'a7647', 'a8647', 'a9647', 'a10647', 'a11647'), +('id648', 'value648', 'name648', 'age648', 'bir648', 'a1648', 'a2648', 'a3648', 'a4648', 'a5648', 'a6648', 'a7648', 'a8648', 'a9648', 'a10648', 'a11648'), +('id649', 'value649', 'name649', 'age649', 'bir649', 'a1649', 'a2649', 'a3649', 'a4649', 'a5649', 'a6649', 'a7649', 'a8649', 'a9649', 'a10649', 'a11649'), +('id650', 'value650', 'name650', 'age650', 'bir650', 'a1650', 'a2650', 'a3650', 'a4650', 'a5650', 'a6650', 'a7650', 'a8650', 'a9650', 'a10650', 'a11650'), +('id651', 'value651', 'name651', 'age651', 'bir651', 'a1651', 'a2651', 'a3651', 'a4651', 'a5651', 'a6651', 'a7651', 'a8651', 'a9651', 'a10651', 'a11651'), +('id652', 'value652', 'name652', 'age652', 'bir652', 'a1652', 'a2652', 'a3652', 'a4652', 'a5652', 'a6652', 'a7652', 'a8652', 'a9652', 'a10652', 'a11652'), +('id653', 'value653', 'name653', 'age653', 'bir653', 'a1653', 'a2653', 'a3653', 'a4653', 'a5653', 'a6653', 'a7653', 'a8653', 'a9653', 'a10653', 'a11653'), +('id654', 'value654', 'name654', 'age654', 'bir654', 'a1654', 'a2654', 'a3654', 'a4654', 'a5654', 'a6654', 'a7654', 'a8654', 'a9654', 'a10654', 'a11654'), +('id655', 'value655', 'name655', 'age655', 'bir655', 'a1655', 'a2655', 'a3655', 'a4655', 'a5655', 'a6655', 'a7655', 'a8655', 'a9655', 'a10655', 'a11655'), +('id656', 'value656', 'name656', 'age656', 'bir656', 'a1656', 'a2656', 'a3656', 'a4656', 'a5656', 'a6656', 'a7656', 'a8656', 'a9656', 'a10656', 'a11656'), +('id657', 'value657', 'name657', 'age657', 'bir657', 'a1657', 'a2657', 'a3657', 'a4657', 'a5657', 'a6657', 'a7657', 'a8657', 'a9657', 'a10657', 'a11657'), +('id658', 'value658', 'name658', 'age658', 'bir658', 'a1658', 'a2658', 'a3658', 'a4658', 'a5658', 'a6658', 'a7658', 'a8658', 'a9658', 'a10658', 'a11658'), +('id659', 'value659', 'name659', 'age659', 'bir659', 'a1659', 'a2659', 'a3659', 'a4659', 'a5659', 'a6659', 'a7659', 'a8659', 'a9659', 'a10659', 'a11659'), +('id660', 'value660', 'name660', 'age660', 'bir660', 'a1660', 'a2660', 'a3660', 'a4660', 'a5660', 'a6660', 'a7660', 'a8660', 'a9660', 'a10660', 'a11660'), +('id661', 'value661', 'name661', 'age661', 'bir661', 'a1661', 'a2661', 'a3661', 'a4661', 'a5661', 'a6661', 'a7661', 'a8661', 'a9661', 'a10661', 'a11661'), +('id662', 'value662', 'name662', 'age662', 'bir662', 'a1662', 'a2662', 'a3662', 'a4662', 'a5662', 'a6662', 'a7662', 'a8662', 'a9662', 'a10662', 'a11662'), +('id663', 'value663', 'name663', 'age663', 'bir663', 'a1663', 'a2663', 'a3663', 'a4663', 'a5663', 'a6663', 'a7663', 'a8663', 'a9663', 'a10663', 'a11663'), +('id664', 'value664', 'name664', 'age664', 'bir664', 'a1664', 'a2664', 'a3664', 'a4664', 'a5664', 'a6664', 'a7664', 'a8664', 'a9664', 'a10664', 'a11664'), +('id665', 'value665', 'name665', 'age665', 'bir665', 'a1665', 'a2665', 'a3665', 'a4665', 'a5665', 'a6665', 'a7665', 'a8665', 'a9665', 'a10665', 'a11665'), +('id666', 'value666', 'name666', 'age666', 'bir666', 'a1666', 'a2666', 'a3666', 'a4666', 'a5666', 'a6666', 'a7666', 'a8666', 'a9666', 'a10666', 'a11666'), +('id667', 'value667', 'name667', 'age667', 'bir667', 'a1667', 'a2667', 'a3667', 'a4667', 'a5667', 'a6667', 'a7667', 'a8667', 'a9667', 'a10667', 'a11667'), +('id668', 'value668', 'name668', 'age668', 'bir668', 'a1668', 'a2668', 'a3668', 'a4668', 'a5668', 'a6668', 'a7668', 'a8668', 'a9668', 'a10668', 'a11668'), +('id669', 'value669', 'name669', 'age669', 'bir669', 'a1669', 'a2669', 'a3669', 'a4669', 'a5669', 'a6669', 'a7669', 'a8669', 'a9669', 'a10669', 'a11669'), +('id670', 'value670', 'name670', 'age670', 'bir670', 'a1670', 'a2670', 'a3670', 'a4670', 'a5670', 'a6670', 'a7670', 'a8670', 'a9670', 'a10670', 'a11670'), +('id671', 'value671', 'name671', 'age671', 'bir671', 'a1671', 'a2671', 'a3671', 'a4671', 'a5671', 'a6671', 'a7671', 'a8671', 'a9671', 'a10671', 'a11671'), +('id672', 'value672', 'name672', 'age672', 'bir672', 'a1672', 'a2672', 'a3672', 'a4672', 'a5672', 'a6672', 'a7672', 'a8672', 'a9672', 'a10672', 'a11672'), +('id673', 'value673', 'name673', 'age673', 'bir673', 'a1673', 'a2673', 'a3673', 'a4673', 'a5673', 'a6673', 'a7673', 'a8673', 'a9673', 'a10673', 'a11673'), +('id674', 'value674', 'name674', 'age674', 'bir674', 'a1674', 'a2674', 'a3674', 'a4674', 'a5674', 'a6674', 'a7674', 'a8674', 'a9674', 'a10674', 'a11674'), +('id675', 'value675', 'name675', 'age675', 'bir675', 'a1675', 'a2675', 'a3675', 'a4675', 'a5675', 'a6675', 'a7675', 'a8675', 'a9675', 'a10675', 'a11675'), +('id676', 'value676', 'name676', 'age676', 'bir676', 'a1676', 'a2676', 'a3676', 'a4676', 'a5676', 'a6676', 'a7676', 'a8676', 'a9676', 'a10676', 'a11676'), +('id677', 'value677', 'name677', 'age677', 'bir677', 'a1677', 'a2677', 'a3677', 'a4677', 'a5677', 'a6677', 'a7677', 'a8677', 'a9677', 'a10677', 'a11677'), +('id678', 'value678', 'name678', 'age678', 'bir678', 'a1678', 'a2678', 'a3678', 'a4678', 'a5678', 'a6678', 'a7678', 'a8678', 'a9678', 'a10678', 'a11678'), +('id679', 'value679', 'name679', 'age679', 'bir679', 'a1679', 'a2679', 'a3679', 'a4679', 'a5679', 'a6679', 'a7679', 'a8679', 'a9679', 'a10679', 'a11679'), +('id680', 'value680', 'name680', 'age680', 'bir680', 'a1680', 'a2680', 'a3680', 'a4680', 'a5680', 'a6680', 'a7680', 'a8680', 'a9680', 'a10680', 'a11680'), +('id681', 'value681', 'name681', 'age681', 'bir681', 'a1681', 'a2681', 'a3681', 'a4681', 'a5681', 'a6681', 'a7681', 'a8681', 'a9681', 'a10681', 'a11681'), +('id682', 'value682', 'name682', 'age682', 'bir682', 'a1682', 'a2682', 'a3682', 'a4682', 'a5682', 'a6682', 'a7682', 'a8682', 'a9682', 'a10682', 'a11682'), +('id683', 'value683', 'name683', 'age683', 'bir683', 'a1683', 'a2683', 'a3683', 'a4683', 'a5683', 'a6683', 'a7683', 'a8683', 'a9683', 'a10683', 'a11683'), +('id684', 'value684', 'name684', 'age684', 'bir684', 'a1684', 'a2684', 'a3684', 'a4684', 'a5684', 'a6684', 'a7684', 'a8684', 'a9684', 'a10684', 'a11684'), +('id685', 'value685', 'name685', 'age685', 'bir685', 'a1685', 'a2685', 'a3685', 'a4685', 'a5685', 'a6685', 'a7685', 'a8685', 'a9685', 'a10685', 'a11685'), +('id686', 'value686', 'name686', 'age686', 'bir686', 'a1686', 'a2686', 'a3686', 'a4686', 'a5686', 'a6686', 'a7686', 'a8686', 'a9686', 'a10686', 'a11686'), +('id687', 'value687', 'name687', 'age687', 'bir687', 'a1687', 'a2687', 'a3687', 'a4687', 'a5687', 'a6687', 'a7687', 'a8687', 'a9687', 'a10687', 'a11687'), +('id688', 'value688', 'name688', 'age688', 'bir688', 'a1688', 'a2688', 'a3688', 'a4688', 'a5688', 'a6688', 'a7688', 'a8688', 'a9688', 'a10688', 'a11688'), +('id689', 'value689', 'name689', 'age689', 'bir689', 'a1689', 'a2689', 'a3689', 'a4689', 'a5689', 'a6689', 'a7689', 'a8689', 'a9689', 'a10689', 'a11689'), +('id690', 'value690', 'name690', 'age690', 'bir690', 'a1690', 'a2690', 'a3690', 'a4690', 'a5690', 'a6690', 'a7690', 'a8690', 'a9690', 'a10690', 'a11690'), +('id691', 'value691', 'name691', 'age691', 'bir691', 'a1691', 'a2691', 'a3691', 'a4691', 'a5691', 'a6691', 'a7691', 'a8691', 'a9691', 'a10691', 'a11691'), +('id692', 'value692', 'name692', 'age692', 'bir692', 'a1692', 'a2692', 'a3692', 'a4692', 'a5692', 'a6692', 'a7692', 'a8692', 'a9692', 'a10692', 'a11692'), +('id693', 'value693', 'name693', 'age693', 'bir693', 'a1693', 'a2693', 'a3693', 'a4693', 'a5693', 'a6693', 'a7693', 'a8693', 'a9693', 'a10693', 'a11693'), +('id694', 'value694', 'name694', 'age694', 'bir694', 'a1694', 'a2694', 'a3694', 'a4694', 'a5694', 'a6694', 'a7694', 'a8694', 'a9694', 'a10694', 'a11694'), +('id695', 'value695', 'name695', 'age695', 'bir695', 'a1695', 'a2695', 'a3695', 'a4695', 'a5695', 'a6695', 'a7695', 'a8695', 'a9695', 'a10695', 'a11695'), +('id696', 'value696', 'name696', 'age696', 'bir696', 'a1696', 'a2696', 'a3696', 'a4696', 'a5696', 'a6696', 'a7696', 'a8696', 'a9696', 'a10696', 'a11696'), +('id697', 'value697', 'name697', 'age697', 'bir697', 'a1697', 'a2697', 'a3697', 'a4697', 'a5697', 'a6697', 'a7697', 'a8697', 'a9697', 'a10697', 'a11697'), +('id698', 'value698', 'name698', 'age698', 'bir698', 'a1698', 'a2698', 'a3698', 'a4698', 'a5698', 'a6698', 'a7698', 'a8698', 'a9698', 'a10698', 'a11698'), +('id699', 'value699', 'name699', 'age699', 'bir699', 'a1699', 'a2699', 'a3699', 'a4699', 'a5699', 'a6699', 'a7699', 'a8699', 'a9699', 'a10699', 'a11699'), +('id700', 'value700', 'name700', 'age700', 'bir700', 'a1700', 'a2700', 'a3700', 'a4700', 'a5700', 'a6700', 'a7700', 'a8700', 'a9700', 'a10700', 'a11700'), +('id701', 'value701', 'name701', 'age701', 'bir701', 'a1701', 'a2701', 'a3701', 'a4701', 'a5701', 'a6701', 'a7701', 'a8701', 'a9701', 'a10701', 'a11701'), +('id702', 'value702', 'name702', 'age702', 'bir702', 'a1702', 'a2702', 'a3702', 'a4702', 'a5702', 'a6702', 'a7702', 'a8702', 'a9702', 'a10702', 'a11702'), +('id703', 'value703', 'name703', 'age703', 'bir703', 'a1703', 'a2703', 'a3703', 'a4703', 'a5703', 'a6703', 'a7703', 'a8703', 'a9703', 'a10703', 'a11703'), +('id704', 'value704', 'name704', 'age704', 'bir704', 'a1704', 'a2704', 'a3704', 'a4704', 'a5704', 'a6704', 'a7704', 'a8704', 'a9704', 'a10704', 'a11704'), +('id705', 'value705', 'name705', 'age705', 'bir705', 'a1705', 'a2705', 'a3705', 'a4705', 'a5705', 'a6705', 'a7705', 'a8705', 'a9705', 'a10705', 'a11705'), +('id706', 'value706', 'name706', 'age706', 'bir706', 'a1706', 'a2706', 'a3706', 'a4706', 'a5706', 'a6706', 'a7706', 'a8706', 'a9706', 'a10706', 'a11706'), +('id707', 'value707', 'name707', 'age707', 'bir707', 'a1707', 'a2707', 'a3707', 'a4707', 'a5707', 'a6707', 'a7707', 'a8707', 'a9707', 'a10707', 'a11707'), +('id708', 'value708', 'name708', 'age708', 'bir708', 'a1708', 'a2708', 'a3708', 'a4708', 'a5708', 'a6708', 'a7708', 'a8708', 'a9708', 'a10708', 'a11708'), +('id709', 'value709', 'name709', 'age709', 'bir709', 'a1709', 'a2709', 'a3709', 'a4709', 'a5709', 'a6709', 'a7709', 'a8709', 'a9709', 'a10709', 'a11709'), +('id710', 'value710', 'name710', 'age710', 'bir710', 'a1710', 'a2710', 'a3710', 'a4710', 'a5710', 'a6710', 'a7710', 'a8710', 'a9710', 'a10710', 'a11710'), +('id711', 'value711', 'name711', 'age711', 'bir711', 'a1711', 'a2711', 'a3711', 'a4711', 'a5711', 'a6711', 'a7711', 'a8711', 'a9711', 'a10711', 'a11711'), +('id712', 'value712', 'name712', 'age712', 'bir712', 'a1712', 'a2712', 'a3712', 'a4712', 'a5712', 'a6712', 'a7712', 'a8712', 'a9712', 'a10712', 'a11712'), +('id713', 'value713', 'name713', 'age713', 'bir713', 'a1713', 'a2713', 'a3713', 'a4713', 'a5713', 'a6713', 'a7713', 'a8713', 'a9713', 'a10713', 'a11713'), +('id714', 'value714', 'name714', 'age714', 'bir714', 'a1714', 'a2714', 'a3714', 'a4714', 'a5714', 'a6714', 'a7714', 'a8714', 'a9714', 'a10714', 'a11714'), +('id715', 'value715', 'name715', 'age715', 'bir715', 'a1715', 'a2715', 'a3715', 'a4715', 'a5715', 'a6715', 'a7715', 'a8715', 'a9715', 'a10715', 'a11715'), +('id716', 'value716', 'name716', 'age716', 'bir716', 'a1716', 'a2716', 'a3716', 'a4716', 'a5716', 'a6716', 'a7716', 'a8716', 'a9716', 'a10716', 'a11716'), +('id717', 'value717', 'name717', 'age717', 'bir717', 'a1717', 'a2717', 'a3717', 'a4717', 'a5717', 'a6717', 'a7717', 'a8717', 'a9717', 'a10717', 'a11717'), +('id718', 'value718', 'name718', 'age718', 'bir718', 'a1718', 'a2718', 'a3718', 'a4718', 'a5718', 'a6718', 'a7718', 'a8718', 'a9718', 'a10718', 'a11718'), +('id719', 'value719', 'name719', 'age719', 'bir719', 'a1719', 'a2719', 'a3719', 'a4719', 'a5719', 'a6719', 'a7719', 'a8719', 'a9719', 'a10719', 'a11719'), +('id720', 'value720', 'name720', 'age720', 'bir720', 'a1720', 'a2720', 'a3720', 'a4720', 'a5720', 'a6720', 'a7720', 'a8720', 'a9720', 'a10720', 'a11720'), +('id721', 'value721', 'name721', 'age721', 'bir721', 'a1721', 'a2721', 'a3721', 'a4721', 'a5721', 'a6721', 'a7721', 'a8721', 'a9721', 'a10721', 'a11721'), +('id722', 'value722', 'name722', 'age722', 'bir722', 'a1722', 'a2722', 'a3722', 'a4722', 'a5722', 'a6722', 'a7722', 'a8722', 'a9722', 'a10722', 'a11722'), +('id723', 'value723', 'name723', 'age723', 'bir723', 'a1723', 'a2723', 'a3723', 'a4723', 'a5723', 'a6723', 'a7723', 'a8723', 'a9723', 'a10723', 'a11723'), +('id724', 'value724', 'name724', 'age724', 'bir724', 'a1724', 'a2724', 'a3724', 'a4724', 'a5724', 'a6724', 'a7724', 'a8724', 'a9724', 'a10724', 'a11724'), +('id725', 'value725', 'name725', 'age725', 'bir725', 'a1725', 'a2725', 'a3725', 'a4725', 'a5725', 'a6725', 'a7725', 'a8725', 'a9725', 'a10725', 'a11725'), +('id726', 'value726', 'name726', 'age726', 'bir726', 'a1726', 'a2726', 'a3726', 'a4726', 'a5726', 'a6726', 'a7726', 'a8726', 'a9726', 'a10726', 'a11726'), +('id727', 'value727', 'name727', 'age727', 'bir727', 'a1727', 'a2727', 'a3727', 'a4727', 'a5727', 'a6727', 'a7727', 'a8727', 'a9727', 'a10727', 'a11727'), +('id728', 'value728', 'name728', 'age728', 'bir728', 'a1728', 'a2728', 'a3728', 'a4728', 'a5728', 'a6728', 'a7728', 'a8728', 'a9728', 'a10728', 'a11728'), +('id729', 'value729', 'name729', 'age729', 'bir729', 'a1729', 'a2729', 'a3729', 'a4729', 'a5729', 'a6729', 'a7729', 'a8729', 'a9729', 'a10729', 'a11729'), +('id730', 'value730', 'name730', 'age730', 'bir730', 'a1730', 'a2730', 'a3730', 'a4730', 'a5730', 'a6730', 'a7730', 'a8730', 'a9730', 'a10730', 'a11730'), +('id731', 'value731', 'name731', 'age731', 'bir731', 'a1731', 'a2731', 'a3731', 'a4731', 'a5731', 'a6731', 'a7731', 'a8731', 'a9731', 'a10731', 'a11731'), +('id732', 'value732', 'name732', 'age732', 'bir732', 'a1732', 'a2732', 'a3732', 'a4732', 'a5732', 'a6732', 'a7732', 'a8732', 'a9732', 'a10732', 'a11732'), +('id733', 'value733', 'name733', 'age733', 'bir733', 'a1733', 'a2733', 'a3733', 'a4733', 'a5733', 'a6733', 'a7733', 'a8733', 'a9733', 'a10733', 'a11733'), +('id734', 'value734', 'name734', 'age734', 'bir734', 'a1734', 'a2734', 'a3734', 'a4734', 'a5734', 'a6734', 'a7734', 'a8734', 'a9734', 'a10734', 'a11734'), +('id735', 'value735', 'name735', 'age735', 'bir735', 'a1735', 'a2735', 'a3735', 'a4735', 'a5735', 'a6735', 'a7735', 'a8735', 'a9735', 'a10735', 'a11735'), +('id736', 'value736', 'name736', 'age736', 'bir736', 'a1736', 'a2736', 'a3736', 'a4736', 'a5736', 'a6736', 'a7736', 'a8736', 'a9736', 'a10736', 'a11736'), +('id737', 'value737', 'name737', 'age737', 'bir737', 'a1737', 'a2737', 'a3737', 'a4737', 'a5737', 'a6737', 'a7737', 'a8737', 'a9737', 'a10737', 'a11737'), +('id738', 'value738', 'name738', 'age738', 'bir738', 'a1738', 'a2738', 'a3738', 'a4738', 'a5738', 'a6738', 'a7738', 'a8738', 'a9738', 'a10738', 'a11738'), +('id739', 'value739', 'name739', 'age739', 'bir739', 'a1739', 'a2739', 'a3739', 'a4739', 'a5739', 'a6739', 'a7739', 'a8739', 'a9739', 'a10739', 'a11739'), +('id740', 'value740', 'name740', 'age740', 'bir740', 'a1740', 'a2740', 'a3740', 'a4740', 'a5740', 'a6740', 'a7740', 'a8740', 'a9740', 'a10740', 'a11740'), +('id741', 'value741', 'name741', 'age741', 'bir741', 'a1741', 'a2741', 'a3741', 'a4741', 'a5741', 'a6741', 'a7741', 'a8741', 'a9741', 'a10741', 'a11741'), +('id742', 'value742', 'name742', 'age742', 'bir742', 'a1742', 'a2742', 'a3742', 'a4742', 'a5742', 'a6742', 'a7742', 'a8742', 'a9742', 'a10742', 'a11742'), +('id743', 'value743', 'name743', 'age743', 'bir743', 'a1743', 'a2743', 'a3743', 'a4743', 'a5743', 'a6743', 'a7743', 'a8743', 'a9743', 'a10743', 'a11743'), +('id744', 'value744', 'name744', 'age744', 'bir744', 'a1744', 'a2744', 'a3744', 'a4744', 'a5744', 'a6744', 'a7744', 'a8744', 'a9744', 'a10744', 'a11744'), +('id745', 'value745', 'name745', 'age745', 'bir745', 'a1745', 'a2745', 'a3745', 'a4745', 'a5745', 'a6745', 'a7745', 'a8745', 'a9745', 'a10745', 'a11745'), +('id746', 'value746', 'name746', 'age746', 'bir746', 'a1746', 'a2746', 'a3746', 'a4746', 'a5746', 'a6746', 'a7746', 'a8746', 'a9746', 'a10746', 'a11746'), +('id747', 'value747', 'name747', 'age747', 'bir747', 'a1747', 'a2747', 'a3747', 'a4747', 'a5747', 'a6747', 'a7747', 'a8747', 'a9747', 'a10747', 'a11747'), +('id748', 'value748', 'name748', 'age748', 'bir748', 'a1748', 'a2748', 'a3748', 'a4748', 'a5748', 'a6748', 'a7748', 'a8748', 'a9748', 'a10748', 'a11748'), +('id749', 'value749', 'name749', 'age749', 'bir749', 'a1749', 'a2749', 'a3749', 'a4749', 'a5749', 'a6749', 'a7749', 'a8749', 'a9749', 'a10749', 'a11749'), +('id750', 'value750', 'name750', 'age750', 'bir750', 'a1750', 'a2750', 'a3750', 'a4750', 'a5750', 'a6750', 'a7750', 'a8750', 'a9750', 'a10750', 'a11750'), +('id751', 'value751', 'name751', 'age751', 'bir751', 'a1751', 'a2751', 'a3751', 'a4751', 'a5751', 'a6751', 'a7751', 'a8751', 'a9751', 'a10751', 'a11751'), +('id752', 'value752', 'name752', 'age752', 'bir752', 'a1752', 'a2752', 'a3752', 'a4752', 'a5752', 'a6752', 'a7752', 'a8752', 'a9752', 'a10752', 'a11752'), +('id753', 'value753', 'name753', 'age753', 'bir753', 'a1753', 'a2753', 'a3753', 'a4753', 'a5753', 'a6753', 'a7753', 'a8753', 'a9753', 'a10753', 'a11753'), +('id754', 'value754', 'name754', 'age754', 'bir754', 'a1754', 'a2754', 'a3754', 'a4754', 'a5754', 'a6754', 'a7754', 'a8754', 'a9754', 'a10754', 'a11754'), +('id755', 'value755', 'name755', 'age755', 'bir755', 'a1755', 'a2755', 'a3755', 'a4755', 'a5755', 'a6755', 'a7755', 'a8755', 'a9755', 'a10755', 'a11755'), +('id756', 'value756', 'name756', 'age756', 'bir756', 'a1756', 'a2756', 'a3756', 'a4756', 'a5756', 'a6756', 'a7756', 'a8756', 'a9756', 'a10756', 'a11756'), +('id757', 'value757', 'name757', 'age757', 'bir757', 'a1757', 'a2757', 'a3757', 'a4757', 'a5757', 'a6757', 'a7757', 'a8757', 'a9757', 'a10757', 'a11757'), +('id758', 'value758', 'name758', 'age758', 'bir758', 'a1758', 'a2758', 'a3758', 'a4758', 'a5758', 'a6758', 'a7758', 'a8758', 'a9758', 'a10758', 'a11758'), +('id759', 'value759', 'name759', 'age759', 'bir759', 'a1759', 'a2759', 'a3759', 'a4759', 'a5759', 'a6759', 'a7759', 'a8759', 'a9759', 'a10759', 'a11759'), +('id760', 'value760', 'name760', 'age760', 'bir760', 'a1760', 'a2760', 'a3760', 'a4760', 'a5760', 'a6760', 'a7760', 'a8760', 'a9760', 'a10760', 'a11760'), +('id761', 'value761', 'name761', 'age761', 'bir761', 'a1761', 'a2761', 'a3761', 'a4761', 'a5761', 'a6761', 'a7761', 'a8761', 'a9761', 'a10761', 'a11761'), +('id762', 'value762', 'name762', 'age762', 'bir762', 'a1762', 'a2762', 'a3762', 'a4762', 'a5762', 'a6762', 'a7762', 'a8762', 'a9762', 'a10762', 'a11762'), +('id763', 'value763', 'name763', 'age763', 'bir763', 'a1763', 'a2763', 'a3763', 'a4763', 'a5763', 'a6763', 'a7763', 'a8763', 'a9763', 'a10763', 'a11763'), +('id764', 'value764', 'name764', 'age764', 'bir764', 'a1764', 'a2764', 'a3764', 'a4764', 'a5764', 'a6764', 'a7764', 'a8764', 'a9764', 'a10764', 'a11764'), +('id765', 'value765', 'name765', 'age765', 'bir765', 'a1765', 'a2765', 'a3765', 'a4765', 'a5765', 'a6765', 'a7765', 'a8765', 'a9765', 'a10765', 'a11765'), +('id766', 'value766', 'name766', 'age766', 'bir766', 'a1766', 'a2766', 'a3766', 'a4766', 'a5766', 'a6766', 'a7766', 'a8766', 'a9766', 'a10766', 'a11766'), +('id767', 'value767', 'name767', 'age767', 'bir767', 'a1767', 'a2767', 'a3767', 'a4767', 'a5767', 'a6767', 'a7767', 'a8767', 'a9767', 'a10767', 'a11767'), +('id768', 'value768', 'name768', 'age768', 'bir768', 'a1768', 'a2768', 'a3768', 'a4768', 'a5768', 'a6768', 'a7768', 'a8768', 'a9768', 'a10768', 'a11768'), +('id769', 'value769', 'name769', 'age769', 'bir769', 'a1769', 'a2769', 'a3769', 'a4769', 'a5769', 'a6769', 'a7769', 'a8769', 'a9769', 'a10769', 'a11769'), +('id770', 'value770', 'name770', 'age770', 'bir770', 'a1770', 'a2770', 'a3770', 'a4770', 'a5770', 'a6770', 'a7770', 'a8770', 'a9770', 'a10770', 'a11770'), +('id771', 'value771', 'name771', 'age771', 'bir771', 'a1771', 'a2771', 'a3771', 'a4771', 'a5771', 'a6771', 'a7771', 'a8771', 'a9771', 'a10771', 'a11771'), +('id772', 'value772', 'name772', 'age772', 'bir772', 'a1772', 'a2772', 'a3772', 'a4772', 'a5772', 'a6772', 'a7772', 'a8772', 'a9772', 'a10772', 'a11772'), +('id773', 'value773', 'name773', 'age773', 'bir773', 'a1773', 'a2773', 'a3773', 'a4773', 'a5773', 'a6773', 'a7773', 'a8773', 'a9773', 'a10773', 'a11773'), +('id774', 'value774', 'name774', 'age774', 'bir774', 'a1774', 'a2774', 'a3774', 'a4774', 'a5774', 'a6774', 'a7774', 'a8774', 'a9774', 'a10774', 'a11774'), +('id775', 'value775', 'name775', 'age775', 'bir775', 'a1775', 'a2775', 'a3775', 'a4775', 'a5775', 'a6775', 'a7775', 'a8775', 'a9775', 'a10775', 'a11775'), +('id776', 'value776', 'name776', 'age776', 'bir776', 'a1776', 'a2776', 'a3776', 'a4776', 'a5776', 'a6776', 'a7776', 'a8776', 'a9776', 'a10776', 'a11776'), +('id777', 'value777', 'name777', 'age777', 'bir777', 'a1777', 'a2777', 'a3777', 'a4777', 'a5777', 'a6777', 'a7777', 'a8777', 'a9777', 'a10777', 'a11777'), +('id778', 'value778', 'name778', 'age778', 'bir778', 'a1778', 'a2778', 'a3778', 'a4778', 'a5778', 'a6778', 'a7778', 'a8778', 'a9778', 'a10778', 'a11778'), +('id779', 'value779', 'name779', 'age779', 'bir779', 'a1779', 'a2779', 'a3779', 'a4779', 'a5779', 'a6779', 'a7779', 'a8779', 'a9779', 'a10779', 'a11779'), +('id780', 'value780', 'name780', 'age780', 'bir780', 'a1780', 'a2780', 'a3780', 'a4780', 'a5780', 'a6780', 'a7780', 'a8780', 'a9780', 'a10780', 'a11780'), +('id781', 'value781', 'name781', 'age781', 'bir781', 'a1781', 'a2781', 'a3781', 'a4781', 'a5781', 'a6781', 'a7781', 'a8781', 'a9781', 'a10781', 'a11781'), +('id782', 'value782', 'name782', 'age782', 'bir782', 'a1782', 'a2782', 'a3782', 'a4782', 'a5782', 'a6782', 'a7782', 'a8782', 'a9782', 'a10782', 'a11782'), +('id783', 'value783', 'name783', 'age783', 'bir783', 'a1783', 'a2783', 'a3783', 'a4783', 'a5783', 'a6783', 'a7783', 'a8783', 'a9783', 'a10783', 'a11783'), +('id784', 'value784', 'name784', 'age784', 'bir784', 'a1784', 'a2784', 'a3784', 'a4784', 'a5784', 'a6784', 'a7784', 'a8784', 'a9784', 'a10784', 'a11784'), +('id785', 'value785', 'name785', 'age785', 'bir785', 'a1785', 'a2785', 'a3785', 'a4785', 'a5785', 'a6785', 'a7785', 'a8785', 'a9785', 'a10785', 'a11785'), +('id786', 'value786', 'name786', 'age786', 'bir786', 'a1786', 'a2786', 'a3786', 'a4786', 'a5786', 'a6786', 'a7786', 'a8786', 'a9786', 'a10786', 'a11786'), +('id787', 'value787', 'name787', 'age787', 'bir787', 'a1787', 'a2787', 'a3787', 'a4787', 'a5787', 'a6787', 'a7787', 'a8787', 'a9787', 'a10787', 'a11787'), +('id788', 'value788', 'name788', 'age788', 'bir788', 'a1788', 'a2788', 'a3788', 'a4788', 'a5788', 'a6788', 'a7788', 'a8788', 'a9788', 'a10788', 'a11788'), +('id789', 'value789', 'name789', 'age789', 'bir789', 'a1789', 'a2789', 'a3789', 'a4789', 'a5789', 'a6789', 'a7789', 'a8789', 'a9789', 'a10789', 'a11789'), +('id790', 'value790', 'name790', 'age790', 'bir790', 'a1790', 'a2790', 'a3790', 'a4790', 'a5790', 'a6790', 'a7790', 'a8790', 'a9790', 'a10790', 'a11790'), +('id791', 'value791', 'name791', 'age791', 'bir791', 'a1791', 'a2791', 'a3791', 'a4791', 'a5791', 'a6791', 'a7791', 'a8791', 'a9791', 'a10791', 'a11791'), +('id792', 'value792', 'name792', 'age792', 'bir792', 'a1792', 'a2792', 'a3792', 'a4792', 'a5792', 'a6792', 'a7792', 'a8792', 'a9792', 'a10792', 'a11792'), +('id793', 'value793', 'name793', 'age793', 'bir793', 'a1793', 'a2793', 'a3793', 'a4793', 'a5793', 'a6793', 'a7793', 'a8793', 'a9793', 'a10793', 'a11793'), +('id794', 'value794', 'name794', 'age794', 'bir794', 'a1794', 'a2794', 'a3794', 'a4794', 'a5794', 'a6794', 'a7794', 'a8794', 'a9794', 'a10794', 'a11794'), +('id795', 'value795', 'name795', 'age795', 'bir795', 'a1795', 'a2795', 'a3795', 'a4795', 'a5795', 'a6795', 'a7795', 'a8795', 'a9795', 'a10795', 'a11795'), +('id796', 'value796', 'name796', 'age796', 'bir796', 'a1796', 'a2796', 'a3796', 'a4796', 'a5796', 'a6796', 'a7796', 'a8796', 'a9796', 'a10796', 'a11796'), +('id797', 'value797', 'name797', 'age797', 'bir797', 'a1797', 'a2797', 'a3797', 'a4797', 'a5797', 'a6797', 'a7797', 'a8797', 'a9797', 'a10797', 'a11797'), +('id798', 'value798', 'name798', 'age798', 'bir798', 'a1798', 'a2798', 'a3798', 'a4798', 'a5798', 'a6798', 'a7798', 'a8798', 'a9798', 'a10798', 'a11798'), +('id799', 'value799', 'name799', 'age799', 'bir799', 'a1799', 'a2799', 'a3799', 'a4799', 'a5799', 'a6799', 'a7799', 'a8799', 'a9799', 'a10799', 'a11799'), +('id800', 'value800', 'name800', 'age800', 'bir800', 'a1800', 'a2800', 'a3800', 'a4800', 'a5800', 'a6800', 'a7800', 'a8800', 'a9800', 'a10800', 'a11800'), +('id801', 'value801', 'name801', 'age801', 'bir801', 'a1801', 'a2801', 'a3801', 'a4801', 'a5801', 'a6801', 'a7801', 'a8801', 'a9801', 'a10801', 'a11801'), +('id802', 'value802', 'name802', 'age802', 'bir802', 'a1802', 'a2802', 'a3802', 'a4802', 'a5802', 'a6802', 'a7802', 'a8802', 'a9802', 'a10802', 'a11802'), +('id803', 'value803', 'name803', 'age803', 'bir803', 'a1803', 'a2803', 'a3803', 'a4803', 'a5803', 'a6803', 'a7803', 'a8803', 'a9803', 'a10803', 'a11803'), +('id804', 'value804', 'name804', 'age804', 'bir804', 'a1804', 'a2804', 'a3804', 'a4804', 'a5804', 'a6804', 'a7804', 'a8804', 'a9804', 'a10804', 'a11804'), +('id805', 'value805', 'name805', 'age805', 'bir805', 'a1805', 'a2805', 'a3805', 'a4805', 'a5805', 'a6805', 'a7805', 'a8805', 'a9805', 'a10805', 'a11805'), +('id806', 'value806', 'name806', 'age806', 'bir806', 'a1806', 'a2806', 'a3806', 'a4806', 'a5806', 'a6806', 'a7806', 'a8806', 'a9806', 'a10806', 'a11806'), +('id807', 'value807', 'name807', 'age807', 'bir807', 'a1807', 'a2807', 'a3807', 'a4807', 'a5807', 'a6807', 'a7807', 'a8807', 'a9807', 'a10807', 'a11807'), +('id808', 'value808', 'name808', 'age808', 'bir808', 'a1808', 'a2808', 'a3808', 'a4808', 'a5808', 'a6808', 'a7808', 'a8808', 'a9808', 'a10808', 'a11808'), +('id809', 'value809', 'name809', 'age809', 'bir809', 'a1809', 'a2809', 'a3809', 'a4809', 'a5809', 'a6809', 'a7809', 'a8809', 'a9809', 'a10809', 'a11809'), +('id810', 'value810', 'name810', 'age810', 'bir810', 'a1810', 'a2810', 'a3810', 'a4810', 'a5810', 'a6810', 'a7810', 'a8810', 'a9810', 'a10810', 'a11810'), +('id811', 'value811', 'name811', 'age811', 'bir811', 'a1811', 'a2811', 'a3811', 'a4811', 'a5811', 'a6811', 'a7811', 'a8811', 'a9811', 'a10811', 'a11811'), +('id812', 'value812', 'name812', 'age812', 'bir812', 'a1812', 'a2812', 'a3812', 'a4812', 'a5812', 'a6812', 'a7812', 'a8812', 'a9812', 'a10812', 'a11812'), +('id813', 'value813', 'name813', 'age813', 'bir813', 'a1813', 'a2813', 'a3813', 'a4813', 'a5813', 'a6813', 'a7813', 'a8813', 'a9813', 'a10813', 'a11813'), +('id814', 'value814', 'name814', 'age814', 'bir814', 'a1814', 'a2814', 'a3814', 'a4814', 'a5814', 'a6814', 'a7814', 'a8814', 'a9814', 'a10814', 'a11814'), +('id815', 'value815', 'name815', 'age815', 'bir815', 'a1815', 'a2815', 'a3815', 'a4815', 'a5815', 'a6815', 'a7815', 'a8815', 'a9815', 'a10815', 'a11815'), +('id816', 'value816', 'name816', 'age816', 'bir816', 'a1816', 'a2816', 'a3816', 'a4816', 'a5816', 'a6816', 'a7816', 'a8816', 'a9816', 'a10816', 'a11816'), +('id817', 'value817', 'name817', 'age817', 'bir817', 'a1817', 'a2817', 'a3817', 'a4817', 'a5817', 'a6817', 'a7817', 'a8817', 'a9817', 'a10817', 'a11817'), +('id818', 'value818', 'name818', 'age818', 'bir818', 'a1818', 'a2818', 'a3818', 'a4818', 'a5818', 'a6818', 'a7818', 'a8818', 'a9818', 'a10818', 'a11818'), +('id819', 'value819', 'name819', 'age819', 'bir819', 'a1819', 'a2819', 'a3819', 'a4819', 'a5819', 'a6819', 'a7819', 'a8819', 'a9819', 'a10819', 'a11819'), +('id820', 'value820', 'name820', 'age820', 'bir820', 'a1820', 'a2820', 'a3820', 'a4820', 'a5820', 'a6820', 'a7820', 'a8820', 'a9820', 'a10820', 'a11820'), +('id821', 'value821', 'name821', 'age821', 'bir821', 'a1821', 'a2821', 'a3821', 'a4821', 'a5821', 'a6821', 'a7821', 'a8821', 'a9821', 'a10821', 'a11821'), +('id822', 'value822', 'name822', 'age822', 'bir822', 'a1822', 'a2822', 'a3822', 'a4822', 'a5822', 'a6822', 'a7822', 'a8822', 'a9822', 'a10822', 'a11822'), +('id823', 'value823', 'name823', 'age823', 'bir823', 'a1823', 'a2823', 'a3823', 'a4823', 'a5823', 'a6823', 'a7823', 'a8823', 'a9823', 'a10823', 'a11823'), +('id824', 'value824', 'name824', 'age824', 'bir824', 'a1824', 'a2824', 'a3824', 'a4824', 'a5824', 'a6824', 'a7824', 'a8824', 'a9824', 'a10824', 'a11824'), +('id825', 'value825', 'name825', 'age825', 'bir825', 'a1825', 'a2825', 'a3825', 'a4825', 'a5825', 'a6825', 'a7825', 'a8825', 'a9825', 'a10825', 'a11825'), +('id826', 'value826', 'name826', 'age826', 'bir826', 'a1826', 'a2826', 'a3826', 'a4826', 'a5826', 'a6826', 'a7826', 'a8826', 'a9826', 'a10826', 'a11826'), +('id827', 'value827', 'name827', 'age827', 'bir827', 'a1827', 'a2827', 'a3827', 'a4827', 'a5827', 'a6827', 'a7827', 'a8827', 'a9827', 'a10827', 'a11827'), +('id828', 'value828', 'name828', 'age828', 'bir828', 'a1828', 'a2828', 'a3828', 'a4828', 'a5828', 'a6828', 'a7828', 'a8828', 'a9828', 'a10828', 'a11828'), +('id829', 'value829', 'name829', 'age829', 'bir829', 'a1829', 'a2829', 'a3829', 'a4829', 'a5829', 'a6829', 'a7829', 'a8829', 'a9829', 'a10829', 'a11829'), +('id830', 'value830', 'name830', 'age830', 'bir830', 'a1830', 'a2830', 'a3830', 'a4830', 'a5830', 'a6830', 'a7830', 'a8830', 'a9830', 'a10830', 'a11830'), +('id831', 'value831', 'name831', 'age831', 'bir831', 'a1831', 'a2831', 'a3831', 'a4831', 'a5831', 'a6831', 'a7831', 'a8831', 'a9831', 'a10831', 'a11831'), +('id832', 'value832', 'name832', 'age832', 'bir832', 'a1832', 'a2832', 'a3832', 'a4832', 'a5832', 'a6832', 'a7832', 'a8832', 'a9832', 'a10832', 'a11832'), +('id833', 'value833', 'name833', 'age833', 'bir833', 'a1833', 'a2833', 'a3833', 'a4833', 'a5833', 'a6833', 'a7833', 'a8833', 'a9833', 'a10833', 'a11833'), +('id834', 'value834', 'name834', 'age834', 'bir834', 'a1834', 'a2834', 'a3834', 'a4834', 'a5834', 'a6834', 'a7834', 'a8834', 'a9834', 'a10834', 'a11834'), +('id835', 'value835', 'name835', 'age835', 'bir835', 'a1835', 'a2835', 'a3835', 'a4835', 'a5835', 'a6835', 'a7835', 'a8835', 'a9835', 'a10835', 'a11835'), +('id836', 'value836', 'name836', 'age836', 'bir836', 'a1836', 'a2836', 'a3836', 'a4836', 'a5836', 'a6836', 'a7836', 'a8836', 'a9836', 'a10836', 'a11836'), +('id837', 'value837', 'name837', 'age837', 'bir837', 'a1837', 'a2837', 'a3837', 'a4837', 'a5837', 'a6837', 'a7837', 'a8837', 'a9837', 'a10837', 'a11837'), +('id838', 'value838', 'name838', 'age838', 'bir838', 'a1838', 'a2838', 'a3838', 'a4838', 'a5838', 'a6838', 'a7838', 'a8838', 'a9838', 'a10838', 'a11838'), +('id839', 'value839', 'name839', 'age839', 'bir839', 'a1839', 'a2839', 'a3839', 'a4839', 'a5839', 'a6839', 'a7839', 'a8839', 'a9839', 'a10839', 'a11839'), +('id840', 'value840', 'name840', 'age840', 'bir840', 'a1840', 'a2840', 'a3840', 'a4840', 'a5840', 'a6840', 'a7840', 'a8840', 'a9840', 'a10840', 'a11840'), +('id841', 'value841', 'name841', 'age841', 'bir841', 'a1841', 'a2841', 'a3841', 'a4841', 'a5841', 'a6841', 'a7841', 'a8841', 'a9841', 'a10841', 'a11841'), +('id842', 'value842', 'name842', 'age842', 'bir842', 'a1842', 'a2842', 'a3842', 'a4842', 'a5842', 'a6842', 'a7842', 'a8842', 'a9842', 'a10842', 'a11842'), +('id843', 'value843', 'name843', 'age843', 'bir843', 'a1843', 'a2843', 'a3843', 'a4843', 'a5843', 'a6843', 'a7843', 'a8843', 'a9843', 'a10843', 'a11843'), +('id844', 'value844', 'name844', 'age844', 'bir844', 'a1844', 'a2844', 'a3844', 'a4844', 'a5844', 'a6844', 'a7844', 'a8844', 'a9844', 'a10844', 'a11844'), +('id845', 'value845', 'name845', 'age845', 'bir845', 'a1845', 'a2845', 'a3845', 'a4845', 'a5845', 'a6845', 'a7845', 'a8845', 'a9845', 'a10845', 'a11845'), +('id846', 'value846', 'name846', 'age846', 'bir846', 'a1846', 'a2846', 'a3846', 'a4846', 'a5846', 'a6846', 'a7846', 'a8846', 'a9846', 'a10846', 'a11846'), +('id847', 'value847', 'name847', 'age847', 'bir847', 'a1847', 'a2847', 'a3847', 'a4847', 'a5847', 'a6847', 'a7847', 'a8847', 'a9847', 'a10847', 'a11847'), +('id848', 'value848', 'name848', 'age848', 'bir848', 'a1848', 'a2848', 'a3848', 'a4848', 'a5848', 'a6848', 'a7848', 'a8848', 'a9848', 'a10848', 'a11848'), +('id849', 'value849', 'name849', 'age849', 'bir849', 'a1849', 'a2849', 'a3849', 'a4849', 'a5849', 'a6849', 'a7849', 'a8849', 'a9849', 'a10849', 'a11849'), +('id850', 'value850', 'name850', 'age850', 'bir850', 'a1850', 'a2850', 'a3850', 'a4850', 'a5850', 'a6850', 'a7850', 'a8850', 'a9850', 'a10850', 'a11850'), +('id851', 'value851', 'name851', 'age851', 'bir851', 'a1851', 'a2851', 'a3851', 'a4851', 'a5851', 'a6851', 'a7851', 'a8851', 'a9851', 'a10851', 'a11851'), +('id852', 'value852', 'name852', 'age852', 'bir852', 'a1852', 'a2852', 'a3852', 'a4852', 'a5852', 'a6852', 'a7852', 'a8852', 'a9852', 'a10852', 'a11852'), +('id853', 'value853', 'name853', 'age853', 'bir853', 'a1853', 'a2853', 'a3853', 'a4853', 'a5853', 'a6853', 'a7853', 'a8853', 'a9853', 'a10853', 'a11853'), +('id854', 'value854', 'name854', 'age854', 'bir854', 'a1854', 'a2854', 'a3854', 'a4854', 'a5854', 'a6854', 'a7854', 'a8854', 'a9854', 'a10854', 'a11854'), +('id855', 'value855', 'name855', 'age855', 'bir855', 'a1855', 'a2855', 'a3855', 'a4855', 'a5855', 'a6855', 'a7855', 'a8855', 'a9855', 'a10855', 'a11855'), +('id856', 'value856', 'name856', 'age856', 'bir856', 'a1856', 'a2856', 'a3856', 'a4856', 'a5856', 'a6856', 'a7856', 'a8856', 'a9856', 'a10856', 'a11856'), +('id857', 'value857', 'name857', 'age857', 'bir857', 'a1857', 'a2857', 'a3857', 'a4857', 'a5857', 'a6857', 'a7857', 'a8857', 'a9857', 'a10857', 'a11857'), +('id858', 'value858', 'name858', 'age858', 'bir858', 'a1858', 'a2858', 'a3858', 'a4858', 'a5858', 'a6858', 'a7858', 'a8858', 'a9858', 'a10858', 'a11858'), +('id859', 'value859', 'name859', 'age859', 'bir859', 'a1859', 'a2859', 'a3859', 'a4859', 'a5859', 'a6859', 'a7859', 'a8859', 'a9859', 'a10859', 'a11859'), +('id860', 'value860', 'name860', 'age860', 'bir860', 'a1860', 'a2860', 'a3860', 'a4860', 'a5860', 'a6860', 'a7860', 'a8860', 'a9860', 'a10860', 'a11860'), +('id861', 'value861', 'name861', 'age861', 'bir861', 'a1861', 'a2861', 'a3861', 'a4861', 'a5861', 'a6861', 'a7861', 'a8861', 'a9861', 'a10861', 'a11861'), +('id862', 'value862', 'name862', 'age862', 'bir862', 'a1862', 'a2862', 'a3862', 'a4862', 'a5862', 'a6862', 'a7862', 'a8862', 'a9862', 'a10862', 'a11862'), +('id863', 'value863', 'name863', 'age863', 'bir863', 'a1863', 'a2863', 'a3863', 'a4863', 'a5863', 'a6863', 'a7863', 'a8863', 'a9863', 'a10863', 'a11863'), +('id864', 'value864', 'name864', 'age864', 'bir864', 'a1864', 'a2864', 'a3864', 'a4864', 'a5864', 'a6864', 'a7864', 'a8864', 'a9864', 'a10864', 'a11864'), +('id865', 'value865', 'name865', 'age865', 'bir865', 'a1865', 'a2865', 'a3865', 'a4865', 'a5865', 'a6865', 'a7865', 'a8865', 'a9865', 'a10865', 'a11865'), +('id866', 'value866', 'name866', 'age866', 'bir866', 'a1866', 'a2866', 'a3866', 'a4866', 'a5866', 'a6866', 'a7866', 'a8866', 'a9866', 'a10866', 'a11866'), +('id867', 'value867', 'name867', 'age867', 'bir867', 'a1867', 'a2867', 'a3867', 'a4867', 'a5867', 'a6867', 'a7867', 'a8867', 'a9867', 'a10867', 'a11867'), +('id868', 'value868', 'name868', 'age868', 'bir868', 'a1868', 'a2868', 'a3868', 'a4868', 'a5868', 'a6868', 'a7868', 'a8868', 'a9868', 'a10868', 'a11868'), +('id869', 'value869', 'name869', 'age869', 'bir869', 'a1869', 'a2869', 'a3869', 'a4869', 'a5869', 'a6869', 'a7869', 'a8869', 'a9869', 'a10869', 'a11869'), +('id870', 'value870', 'name870', 'age870', 'bir870', 'a1870', 'a2870', 'a3870', 'a4870', 'a5870', 'a6870', 'a7870', 'a8870', 'a9870', 'a10870', 'a11870'), +('id871', 'value871', 'name871', 'age871', 'bir871', 'a1871', 'a2871', 'a3871', 'a4871', 'a5871', 'a6871', 'a7871', 'a8871', 'a9871', 'a10871', 'a11871'), +('id872', 'value872', 'name872', 'age872', 'bir872', 'a1872', 'a2872', 'a3872', 'a4872', 'a5872', 'a6872', 'a7872', 'a8872', 'a9872', 'a10872', 'a11872'), +('id873', 'value873', 'name873', 'age873', 'bir873', 'a1873', 'a2873', 'a3873', 'a4873', 'a5873', 'a6873', 'a7873', 'a8873', 'a9873', 'a10873', 'a11873'), +('id874', 'value874', 'name874', 'age874', 'bir874', 'a1874', 'a2874', 'a3874', 'a4874', 'a5874', 'a6874', 'a7874', 'a8874', 'a9874', 'a10874', 'a11874'), +('id875', 'value875', 'name875', 'age875', 'bir875', 'a1875', 'a2875', 'a3875', 'a4875', 'a5875', 'a6875', 'a7875', 'a8875', 'a9875', 'a10875', 'a11875'), +('id876', 'value876', 'name876', 'age876', 'bir876', 'a1876', 'a2876', 'a3876', 'a4876', 'a5876', 'a6876', 'a7876', 'a8876', 'a9876', 'a10876', 'a11876'), +('id877', 'value877', 'name877', 'age877', 'bir877', 'a1877', 'a2877', 'a3877', 'a4877', 'a5877', 'a6877', 'a7877', 'a8877', 'a9877', 'a10877', 'a11877'), +('id878', 'value878', 'name878', 'age878', 'bir878', 'a1878', 'a2878', 'a3878', 'a4878', 'a5878', 'a6878', 'a7878', 'a8878', 'a9878', 'a10878', 'a11878'), +('id879', 'value879', 'name879', 'age879', 'bir879', 'a1879', 'a2879', 'a3879', 'a4879', 'a5879', 'a6879', 'a7879', 'a8879', 'a9879', 'a10879', 'a11879'), +('id880', 'value880', 'name880', 'age880', 'bir880', 'a1880', 'a2880', 'a3880', 'a4880', 'a5880', 'a6880', 'a7880', 'a8880', 'a9880', 'a10880', 'a11880'), +('id881', 'value881', 'name881', 'age881', 'bir881', 'a1881', 'a2881', 'a3881', 'a4881', 'a5881', 'a6881', 'a7881', 'a8881', 'a9881', 'a10881', 'a11881'), +('id882', 'value882', 'name882', 'age882', 'bir882', 'a1882', 'a2882', 'a3882', 'a4882', 'a5882', 'a6882', 'a7882', 'a8882', 'a9882', 'a10882', 'a11882'), +('id883', 'value883', 'name883', 'age883', 'bir883', 'a1883', 'a2883', 'a3883', 'a4883', 'a5883', 'a6883', 'a7883', 'a8883', 'a9883', 'a10883', 'a11883'), +('id884', 'value884', 'name884', 'age884', 'bir884', 'a1884', 'a2884', 'a3884', 'a4884', 'a5884', 'a6884', 'a7884', 'a8884', 'a9884', 'a10884', 'a11884'), +('id885', 'value885', 'name885', 'age885', 'bir885', 'a1885', 'a2885', 'a3885', 'a4885', 'a5885', 'a6885', 'a7885', 'a8885', 'a9885', 'a10885', 'a11885'), +('id886', 'value886', 'name886', 'age886', 'bir886', 'a1886', 'a2886', 'a3886', 'a4886', 'a5886', 'a6886', 'a7886', 'a8886', 'a9886', 'a10886', 'a11886'), +('id887', 'value887', 'name887', 'age887', 'bir887', 'a1887', 'a2887', 'a3887', 'a4887', 'a5887', 'a6887', 'a7887', 'a8887', 'a9887', 'a10887', 'a11887'), +('id888', 'value888', 'name888', 'age888', 'bir888', 'a1888', 'a2888', 'a3888', 'a4888', 'a5888', 'a6888', 'a7888', 'a8888', 'a9888', 'a10888', 'a11888'), +('id889', 'value889', 'name889', 'age889', 'bir889', 'a1889', 'a2889', 'a3889', 'a4889', 'a5889', 'a6889', 'a7889', 'a8889', 'a9889', 'a10889', 'a11889'), +('id890', 'value890', 'name890', 'age890', 'bir890', 'a1890', 'a2890', 'a3890', 'a4890', 'a5890', 'a6890', 'a7890', 'a8890', 'a9890', 'a10890', 'a11890'), +('id891', 'value891', 'name891', 'age891', 'bir891', 'a1891', 'a2891', 'a3891', 'a4891', 'a5891', 'a6891', 'a7891', 'a8891', 'a9891', 'a10891', 'a11891'), +('id892', 'value892', 'name892', 'age892', 'bir892', 'a1892', 'a2892', 'a3892', 'a4892', 'a5892', 'a6892', 'a7892', 'a8892', 'a9892', 'a10892', 'a11892'), +('id893', 'value893', 'name893', 'age893', 'bir893', 'a1893', 'a2893', 'a3893', 'a4893', 'a5893', 'a6893', 'a7893', 'a8893', 'a9893', 'a10893', 'a11893'), +('id894', 'value894', 'name894', 'age894', 'bir894', 'a1894', 'a2894', 'a3894', 'a4894', 'a5894', 'a6894', 'a7894', 'a8894', 'a9894', 'a10894', 'a11894'), +('id895', 'value895', 'name895', 'age895', 'bir895', 'a1895', 'a2895', 'a3895', 'a4895', 'a5895', 'a6895', 'a7895', 'a8895', 'a9895', 'a10895', 'a11895'), +('id896', 'value896', 'name896', 'age896', 'bir896', 'a1896', 'a2896', 'a3896', 'a4896', 'a5896', 'a6896', 'a7896', 'a8896', 'a9896', 'a10896', 'a11896'), +('id897', 'value897', 'name897', 'age897', 'bir897', 'a1897', 'a2897', 'a3897', 'a4897', 'a5897', 'a6897', 'a7897', 'a8897', 'a9897', 'a10897', 'a11897'), +('id898', 'value898', 'name898', 'age898', 'bir898', 'a1898', 'a2898', 'a3898', 'a4898', 'a5898', 'a6898', 'a7898', 'a8898', 'a9898', 'a10898', 'a11898'), +('id899', 'value899', 'name899', 'age899', 'bir899', 'a1899', 'a2899', 'a3899', 'a4899', 'a5899', 'a6899', 'a7899', 'a8899', 'a9899', 'a10899', 'a11899'), +('id900', 'value900', 'name900', 'age900', 'bir900', 'a1900', 'a2900', 'a3900', 'a4900', 'a5900', 'a6900', 'a7900', 'a8900', 'a9900', 'a10900', 'a11900'), +('id901', 'value901', 'name901', 'age901', 'bir901', 'a1901', 'a2901', 'a3901', 'a4901', 'a5901', 'a6901', 'a7901', 'a8901', 'a9901', 'a10901', 'a11901'), +('id902', 'value902', 'name902', 'age902', 'bir902', 'a1902', 'a2902', 'a3902', 'a4902', 'a5902', 'a6902', 'a7902', 'a8902', 'a9902', 'a10902', 'a11902'), +('id903', 'value903', 'name903', 'age903', 'bir903', 'a1903', 'a2903', 'a3903', 'a4903', 'a5903', 'a6903', 'a7903', 'a8903', 'a9903', 'a10903', 'a11903'), +('id904', 'value904', 'name904', 'age904', 'bir904', 'a1904', 'a2904', 'a3904', 'a4904', 'a5904', 'a6904', 'a7904', 'a8904', 'a9904', 'a10904', 'a11904'), +('id905', 'value905', 'name905', 'age905', 'bir905', 'a1905', 'a2905', 'a3905', 'a4905', 'a5905', 'a6905', 'a7905', 'a8905', 'a9905', 'a10905', 'a11905'), +('id906', 'value906', 'name906', 'age906', 'bir906', 'a1906', 'a2906', 'a3906', 'a4906', 'a5906', 'a6906', 'a7906', 'a8906', 'a9906', 'a10906', 'a11906'), +('id907', 'value907', 'name907', 'age907', 'bir907', 'a1907', 'a2907', 'a3907', 'a4907', 'a5907', 'a6907', 'a7907', 'a8907', 'a9907', 'a10907', 'a11907'), +('id908', 'value908', 'name908', 'age908', 'bir908', 'a1908', 'a2908', 'a3908', 'a4908', 'a5908', 'a6908', 'a7908', 'a8908', 'a9908', 'a10908', 'a11908'), +('id909', 'value909', 'name909', 'age909', 'bir909', 'a1909', 'a2909', 'a3909', 'a4909', 'a5909', 'a6909', 'a7909', 'a8909', 'a9909', 'a10909', 'a11909'), +('id910', 'value910', 'name910', 'age910', 'bir910', 'a1910', 'a2910', 'a3910', 'a4910', 'a5910', 'a6910', 'a7910', 'a8910', 'a9910', 'a10910', 'a11910'), +('id911', 'value911', 'name911', 'age911', 'bir911', 'a1911', 'a2911', 'a3911', 'a4911', 'a5911', 'a6911', 'a7911', 'a8911', 'a9911', 'a10911', 'a11911'), +('id912', 'value912', 'name912', 'age912', 'bir912', 'a1912', 'a2912', 'a3912', 'a4912', 'a5912', 'a6912', 'a7912', 'a8912', 'a9912', 'a10912', 'a11912'), +('id913', 'value913', 'name913', 'age913', 'bir913', 'a1913', 'a2913', 'a3913', 'a4913', 'a5913', 'a6913', 'a7913', 'a8913', 'a9913', 'a10913', 'a11913'), +('id914', 'value914', 'name914', 'age914', 'bir914', 'a1914', 'a2914', 'a3914', 'a4914', 'a5914', 'a6914', 'a7914', 'a8914', 'a9914', 'a10914', 'a11914'), +('id915', 'value915', 'name915', 'age915', 'bir915', 'a1915', 'a2915', 'a3915', 'a4915', 'a5915', 'a6915', 'a7915', 'a8915', 'a9915', 'a10915', 'a11915'), +('id916', 'value916', 'name916', 'age916', 'bir916', 'a1916', 'a2916', 'a3916', 'a4916', 'a5916', 'a6916', 'a7916', 'a8916', 'a9916', 'a10916', 'a11916'), +('id917', 'value917', 'name917', 'age917', 'bir917', 'a1917', 'a2917', 'a3917', 'a4917', 'a5917', 'a6917', 'a7917', 'a8917', 'a9917', 'a10917', 'a11917'), +('id918', 'value918', 'name918', 'age918', 'bir918', 'a1918', 'a2918', 'a3918', 'a4918', 'a5918', 'a6918', 'a7918', 'a8918', 'a9918', 'a10918', 'a11918'), +('id919', 'value919', 'name919', 'age919', 'bir919', 'a1919', 'a2919', 'a3919', 'a4919', 'a5919', 'a6919', 'a7919', 'a8919', 'a9919', 'a10919', 'a11919'), +('id920', 'value920', 'name920', 'age920', 'bir920', 'a1920', 'a2920', 'a3920', 'a4920', 'a5920', 'a6920', 'a7920', 'a8920', 'a9920', 'a10920', 'a11920'), +('id921', 'value921', 'name921', 'age921', 'bir921', 'a1921', 'a2921', 'a3921', 'a4921', 'a5921', 'a6921', 'a7921', 'a8921', 'a9921', 'a10921', 'a11921'), +('id922', 'value922', 'name922', 'age922', 'bir922', 'a1922', 'a2922', 'a3922', 'a4922', 'a5922', 'a6922', 'a7922', 'a8922', 'a9922', 'a10922', 'a11922'), +('id923', 'value923', 'name923', 'age923', 'bir923', 'a1923', 'a2923', 'a3923', 'a4923', 'a5923', 'a6923', 'a7923', 'a8923', 'a9923', 'a10923', 'a11923'), +('id924', 'value924', 'name924', 'age924', 'bir924', 'a1924', 'a2924', 'a3924', 'a4924', 'a5924', 'a6924', 'a7924', 'a8924', 'a9924', 'a10924', 'a11924'), +('id925', 'value925', 'name925', 'age925', 'bir925', 'a1925', 'a2925', 'a3925', 'a4925', 'a5925', 'a6925', 'a7925', 'a8925', 'a9925', 'a10925', 'a11925'), +('id926', 'value926', 'name926', 'age926', 'bir926', 'a1926', 'a2926', 'a3926', 'a4926', 'a5926', 'a6926', 'a7926', 'a8926', 'a9926', 'a10926', 'a11926'), +('id927', 'value927', 'name927', 'age927', 'bir927', 'a1927', 'a2927', 'a3927', 'a4927', 'a5927', 'a6927', 'a7927', 'a8927', 'a9927', 'a10927', 'a11927'), +('id928', 'value928', 'name928', 'age928', 'bir928', 'a1928', 'a2928', 'a3928', 'a4928', 'a5928', 'a6928', 'a7928', 'a8928', 'a9928', 'a10928', 'a11928'), +('id929', 'value929', 'name929', 'age929', 'bir929', 'a1929', 'a2929', 'a3929', 'a4929', 'a5929', 'a6929', 'a7929', 'a8929', 'a9929', 'a10929', 'a11929'), +('id930', 'value930', 'name930', 'age930', 'bir930', 'a1930', 'a2930', 'a3930', 'a4930', 'a5930', 'a6930', 'a7930', 'a8930', 'a9930', 'a10930', 'a11930'), +('id931', 'value931', 'name931', 'age931', 'bir931', 'a1931', 'a2931', 'a3931', 'a4931', 'a5931', 'a6931', 'a7931', 'a8931', 'a9931', 'a10931', 'a11931'), +('id932', 'value932', 'name932', 'age932', 'bir932', 'a1932', 'a2932', 'a3932', 'a4932', 'a5932', 'a6932', 'a7932', 'a8932', 'a9932', 'a10932', 'a11932'), +('id933', 'value933', 'name933', 'age933', 'bir933', 'a1933', 'a2933', 'a3933', 'a4933', 'a5933', 'a6933', 'a7933', 'a8933', 'a9933', 'a10933', 'a11933'), +('id934', 'value934', 'name934', 'age934', 'bir934', 'a1934', 'a2934', 'a3934', 'a4934', 'a5934', 'a6934', 'a7934', 'a8934', 'a9934', 'a10934', 'a11934'), +('id935', 'value935', 'name935', 'age935', 'bir935', 'a1935', 'a2935', 'a3935', 'a4935', 'a5935', 'a6935', 'a7935', 'a8935', 'a9935', 'a10935', 'a11935'), +('id936', 'value936', 'name936', 'age936', 'bir936', 'a1936', 'a2936', 'a3936', 'a4936', 'a5936', 'a6936', 'a7936', 'a8936', 'a9936', 'a10936', 'a11936'), +('id937', 'value937', 'name937', 'age937', 'bir937', 'a1937', 'a2937', 'a3937', 'a4937', 'a5937', 'a6937', 'a7937', 'a8937', 'a9937', 'a10937', 'a11937'), +('id938', 'value938', 'name938', 'age938', 'bir938', 'a1938', 'a2938', 'a3938', 'a4938', 'a5938', 'a6938', 'a7938', 'a8938', 'a9938', 'a10938', 'a11938'), +('id939', 'value939', 'name939', 'age939', 'bir939', 'a1939', 'a2939', 'a3939', 'a4939', 'a5939', 'a6939', 'a7939', 'a8939', 'a9939', 'a10939', 'a11939'), +('id940', 'value940', 'name940', 'age940', 'bir940', 'a1940', 'a2940', 'a3940', 'a4940', 'a5940', 'a6940', 'a7940', 'a8940', 'a9940', 'a10940', 'a11940'), +('id941', 'value941', 'name941', 'age941', 'bir941', 'a1941', 'a2941', 'a3941', 'a4941', 'a5941', 'a6941', 'a7941', 'a8941', 'a9941', 'a10941', 'a11941'), +('id942', 'value942', 'name942', 'age942', 'bir942', 'a1942', 'a2942', 'a3942', 'a4942', 'a5942', 'a6942', 'a7942', 'a8942', 'a9942', 'a10942', 'a11942'), +('id943', 'value943', 'name943', 'age943', 'bir943', 'a1943', 'a2943', 'a3943', 'a4943', 'a5943', 'a6943', 'a7943', 'a8943', 'a9943', 'a10943', 'a11943'), +('id944', 'value944', 'name944', 'age944', 'bir944', 'a1944', 'a2944', 'a3944', 'a4944', 'a5944', 'a6944', 'a7944', 'a8944', 'a9944', 'a10944', 'a11944'), +('id945', 'value945', 'name945', 'age945', 'bir945', 'a1945', 'a2945', 'a3945', 'a4945', 'a5945', 'a6945', 'a7945', 'a8945', 'a9945', 'a10945', 'a11945'), +('id946', 'value946', 'name946', 'age946', 'bir946', 'a1946', 'a2946', 'a3946', 'a4946', 'a5946', 'a6946', 'a7946', 'a8946', 'a9946', 'a10946', 'a11946'), +('id947', 'value947', 'name947', 'age947', 'bir947', 'a1947', 'a2947', 'a3947', 'a4947', 'a5947', 'a6947', 'a7947', 'a8947', 'a9947', 'a10947', 'a11947'), +('id948', 'value948', 'name948', 'age948', 'bir948', 'a1948', 'a2948', 'a3948', 'a4948', 'a5948', 'a6948', 'a7948', 'a8948', 'a9948', 'a10948', 'a11948'), +('id949', 'value949', 'name949', 'age949', 'bir949', 'a1949', 'a2949', 'a3949', 'a4949', 'a5949', 'a6949', 'a7949', 'a8949', 'a9949', 'a10949', 'a11949'), +('id950', 'value950', 'name950', 'age950', 'bir950', 'a1950', 'a2950', 'a3950', 'a4950', 'a5950', 'a6950', 'a7950', 'a8950', 'a9950', 'a10950', 'a11950'), +('id951', 'value951', 'name951', 'age951', 'bir951', 'a1951', 'a2951', 'a3951', 'a4951', 'a5951', 'a6951', 'a7951', 'a8951', 'a9951', 'a10951', 'a11951'), +('id952', 'value952', 'name952', 'age952', 'bir952', 'a1952', 'a2952', 'a3952', 'a4952', 'a5952', 'a6952', 'a7952', 'a8952', 'a9952', 'a10952', 'a11952'), +('id953', 'value953', 'name953', 'age953', 'bir953', 'a1953', 'a2953', 'a3953', 'a4953', 'a5953', 'a6953', 'a7953', 'a8953', 'a9953', 'a10953', 'a11953'), +('id954', 'value954', 'name954', 'age954', 'bir954', 'a1954', 'a2954', 'a3954', 'a4954', 'a5954', 'a6954', 'a7954', 'a8954', 'a9954', 'a10954', 'a11954'), +('id955', 'value955', 'name955', 'age955', 'bir955', 'a1955', 'a2955', 'a3955', 'a4955', 'a5955', 'a6955', 'a7955', 'a8955', 'a9955', 'a10955', 'a11955'), +('id956', 'value956', 'name956', 'age956', 'bir956', 'a1956', 'a2956', 'a3956', 'a4956', 'a5956', 'a6956', 'a7956', 'a8956', 'a9956', 'a10956', 'a11956'), +('id957', 'value957', 'name957', 'age957', 'bir957', 'a1957', 'a2957', 'a3957', 'a4957', 'a5957', 'a6957', 'a7957', 'a8957', 'a9957', 'a10957', 'a11957'), +('id958', 'value958', 'name958', 'age958', 'bir958', 'a1958', 'a2958', 'a3958', 'a4958', 'a5958', 'a6958', 'a7958', 'a8958', 'a9958', 'a10958', 'a11958'), +('id959', 'value959', 'name959', 'age959', 'bir959', 'a1959', 'a2959', 'a3959', 'a4959', 'a5959', 'a6959', 'a7959', 'a8959', 'a9959', 'a10959', 'a11959'), +('id960', 'value960', 'name960', 'age960', 'bir960', 'a1960', 'a2960', 'a3960', 'a4960', 'a5960', 'a6960', 'a7960', 'a8960', 'a9960', 'a10960', 'a11960'), +('id961', 'value961', 'name961', 'age961', 'bir961', 'a1961', 'a2961', 'a3961', 'a4961', 'a5961', 'a6961', 'a7961', 'a8961', 'a9961', 'a10961', 'a11961'), +('id962', 'value962', 'name962', 'age962', 'bir962', 'a1962', 'a2962', 'a3962', 'a4962', 'a5962', 'a6962', 'a7962', 'a8962', 'a9962', 'a10962', 'a11962'), +('id963', 'value963', 'name963', 'age963', 'bir963', 'a1963', 'a2963', 'a3963', 'a4963', 'a5963', 'a6963', 'a7963', 'a8963', 'a9963', 'a10963', 'a11963'), +('id964', 'value964', 'name964', 'age964', 'bir964', 'a1964', 'a2964', 'a3964', 'a4964', 'a5964', 'a6964', 'a7964', 'a8964', 'a9964', 'a10964', 'a11964'), +('id965', 'value965', 'name965', 'age965', 'bir965', 'a1965', 'a2965', 'a3965', 'a4965', 'a5965', 'a6965', 'a7965', 'a8965', 'a9965', 'a10965', 'a11965'), +('id966', 'value966', 'name966', 'age966', 'bir966', 'a1966', 'a2966', 'a3966', 'a4966', 'a5966', 'a6966', 'a7966', 'a8966', 'a9966', 'a10966', 'a11966'), +('id967', 'value967', 'name967', 'age967', 'bir967', 'a1967', 'a2967', 'a3967', 'a4967', 'a5967', 'a6967', 'a7967', 'a8967', 'a9967', 'a10967', 'a11967'), +('id968', 'value968', 'name968', 'age968', 'bir968', 'a1968', 'a2968', 'a3968', 'a4968', 'a5968', 'a6968', 'a7968', 'a8968', 'a9968', 'a10968', 'a11968'), +('id969', 'value969', 'name969', 'age969', 'bir969', 'a1969', 'a2969', 'a3969', 'a4969', 'a5969', 'a6969', 'a7969', 'a8969', 'a9969', 'a10969', 'a11969'), +('id970', 'value970', 'name970', 'age970', 'bir970', 'a1970', 'a2970', 'a3970', 'a4970', 'a5970', 'a6970', 'a7970', 'a8970', 'a9970', 'a10970', 'a11970'), +('id971', 'value971', 'name971', 'age971', 'bir971', 'a1971', 'a2971', 'a3971', 'a4971', 'a5971', 'a6971', 'a7971', 'a8971', 'a9971', 'a10971', 'a11971'), +('id972', 'value972', 'name972', 'age972', 'bir972', 'a1972', 'a2972', 'a3972', 'a4972', 'a5972', 'a6972', 'a7972', 'a8972', 'a9972', 'a10972', 'a11972'), +('id973', 'value973', 'name973', 'age973', 'bir973', 'a1973', 'a2973', 'a3973', 'a4973', 'a5973', 'a6973', 'a7973', 'a8973', 'a9973', 'a10973', 'a11973'), +('id974', 'value974', 'name974', 'age974', 'bir974', 'a1974', 'a2974', 'a3974', 'a4974', 'a5974', 'a6974', 'a7974', 'a8974', 'a9974', 'a10974', 'a11974'), +('id975', 'value975', 'name975', 'age975', 'bir975', 'a1975', 'a2975', 'a3975', 'a4975', 'a5975', 'a6975', 'a7975', 'a8975', 'a9975', 'a10975', 'a11975'), +('id976', 'value976', 'name976', 'age976', 'bir976', 'a1976', 'a2976', 'a3976', 'a4976', 'a5976', 'a6976', 'a7976', 'a8976', 'a9976', 'a10976', 'a11976'), +('id977', 'value977', 'name977', 'age977', 'bir977', 'a1977', 'a2977', 'a3977', 'a4977', 'a5977', 'a6977', 'a7977', 'a8977', 'a9977', 'a10977', 'a11977'), +('id978', 'value978', 'name978', 'age978', 'bir978', 'a1978', 'a2978', 'a3978', 'a4978', 'a5978', 'a6978', 'a7978', 'a8978', 'a9978', 'a10978', 'a11978'), +('id979', 'value979', 'name979', 'age979', 'bir979', 'a1979', 'a2979', 'a3979', 'a4979', 'a5979', 'a6979', 'a7979', 'a8979', 'a9979', 'a10979', 'a11979'), +('id980', 'value980', 'name980', 'age980', 'bir980', 'a1980', 'a2980', 'a3980', 'a4980', 'a5980', 'a6980', 'a7980', 'a8980', 'a9980', 'a10980', 'a11980'), +('id981', 'value981', 'name981', 'age981', 'bir981', 'a1981', 'a2981', 'a3981', 'a4981', 'a5981', 'a6981', 'a7981', 'a8981', 'a9981', 'a10981', 'a11981'), +('id982', 'value982', 'name982', 'age982', 'bir982', 'a1982', 'a2982', 'a3982', 'a4982', 'a5982', 'a6982', 'a7982', 'a8982', 'a9982', 'a10982', 'a11982'), +('id983', 'value983', 'name983', 'age983', 'bir983', 'a1983', 'a2983', 'a3983', 'a4983', 'a5983', 'a6983', 'a7983', 'a8983', 'a9983', 'a10983', 'a11983'), +('id984', 'value984', 'name984', 'age984', 'bir984', 'a1984', 'a2984', 'a3984', 'a4984', 'a5984', 'a6984', 'a7984', 'a8984', 'a9984', 'a10984', 'a11984'), +('id985', 'value985', 'name985', 'age985', 'bir985', 'a1985', 'a2985', 'a3985', 'a4985', 'a5985', 'a6985', 'a7985', 'a8985', 'a9985', 'a10985', 'a11985'), +('id986', 'value986', 'name986', 'age986', 'bir986', 'a1986', 'a2986', 'a3986', 'a4986', 'a5986', 'a6986', 'a7986', 'a8986', 'a9986', 'a10986', 'a11986'), +('id987', 'value987', 'name987', 'age987', 'bir987', 'a1987', 'a2987', 'a3987', 'a4987', 'a5987', 'a6987', 'a7987', 'a8987', 'a9987', 'a10987', 'a11987'), +('id988', 'value988', 'name988', 'age988', 'bir988', 'a1988', 'a2988', 'a3988', 'a4988', 'a5988', 'a6988', 'a7988', 'a8988', 'a9988', 'a10988', 'a11988'), +('id989', 'value989', 'name989', 'age989', 'bir989', 'a1989', 'a2989', 'a3989', 'a4989', 'a5989', 'a6989', 'a7989', 'a8989', 'a9989', 'a10989', 'a11989'), +('id990', 'value990', 'name990', 'age990', 'bir990', 'a1990', 'a2990', 'a3990', 'a4990', 'a5990', 'a6990', 'a7990', 'a8990', 'a9990', 'a10990', 'a11990'), +('id991', 'value991', 'name991', 'age991', 'bir991', 'a1991', 'a2991', 'a3991', 'a4991', 'a5991', 'a6991', 'a7991', 'a8991', 'a9991', 'a10991', 'a11991'), +('id992', 'value992', 'name992', 'age992', 'bir992', 'a1992', 'a2992', 'a3992', 'a4992', 'a5992', 'a6992', 'a7992', 'a8992', 'a9992', 'a10992', 'a11992'), +('id993', 'value993', 'name993', 'age993', 'bir993', 'a1993', 'a2993', 'a3993', 'a4993', 'a5993', 'a6993', 'a7993', 'a8993', 'a9993', 'a10993', 'a11993'), +('id994', 'value994', 'name994', 'age994', 'bir994', 'a1994', 'a2994', 'a3994', 'a4994', 'a5994', 'a6994', 'a7994', 'a8994', 'a9994', 'a10994', 'a11994'), +('id995', 'value995', 'name995', 'age995', 'bir995', 'a1995', 'a2995', 'a3995', 'a4995', 'a5995', 'a6995', 'a7995', 'a8995', 'a9995', 'a10995', 'a11995'), +('id996', 'value996', 'name996', 'age996', 'bir996', 'a1996', 'a2996', 'a3996', 'a4996', 'a5996', 'a6996', 'a7996', 'a8996', 'a9996', 'a10996', 'a11996'), +('id997', 'value997', 'name997', 'age997', 'bir997', 'a1997', 'a2997', 'a3997', 'a4997', 'a5997', 'a6997', 'a7997', 'a8997', 'a9997', 'a10997', 'a11997'), +('id998', 'value998', 'name998', 'age998', 'bir998', 'a1998', 'a2998', 'a3998', 'a4998', 'a5998', 'a6998', 'a7998', 'a8998', 'a9998', 'a10998', 'a11998'), +('id999', 'value999', 'name999', 'age999', 'bir999', 'a1999', 'a2999', 'a3999', 'a4999', 'a5999', 'a6999', 'a7999', 'a8999', 'a9999', 'a10999', 'a11999'), +('id1000', 'value1000', 'name1000', 'age1000', 'bir1000', 'a11000', 'a21000', 'a31000', 'a41000', 'a51000', 'a61000', 'a71000', 'a81000', 'a91000', 'a101000', 'a111000'); \ No newline at end of file diff --git a/benchmark/data/mysql/create.sql b/benchmark/data/mysql/create.sql deleted file mode 100644 index fe059083..00000000 --- a/benchmark/data/mysql/create.sql +++ /dev/null @@ -1,97 +0,0 @@ -CREATE TEMPORARY TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0; - -CREATE TABLE new_tbl LIKE orig_tbl; -CREATE TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0; -CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl; - -CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (a), KEY(b)) ENGINE=InnoDB SELECT b,c FROM test2; - -CREATE TABLE bar (m INT) SELECT n FROM foo; - -CREATE TABLE artists_and_works SELECT artist.name, COUNT(work.artist_id) AS number_of_works FROM artist LEFT JOIN work ON artist.id = work.artist_id GROUP BY artist.id; - -CREATE TABLE new_tbl AS SELECT * FROM orig_tbl; -CREATE TABLE t (c CHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin); -CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10))); -CREATE TABLE t1 (c1 INT) ENGINE_ATTRIBUTE='{"key":"value"}'; -CREATE TABLE my_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; -CREATE TABLE t1 (c1 INT STORAGE DISK, c2 INT STORAGE MEMORY) TABLESPACE ts_1 ENGINE NDB; -CREATE TABLE t1 (c1 INT STORAGE MEMORY, c2 INT STORAGE MEMORY) TABLESPACE ts_1 ENGINE NDB; - -CREATE TABLE lookup (id INT, INDEX USING BTREE (id)) ENGINE = MEMORY; -CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 VARCHAR(100), c3 VARCHAR(100)) ENGINE=NDB COMMENT="NDB_TABLE=READ_BACKUP=0,PARTITION_BALANCE=FOR_RP_BY_NODE"; - -CREATE TABLE t1 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1); -CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3)); - -CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3) PARTITIONS 4; -CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY(col3) PARTITIONS 5; -CREATE TABLE t1 (year_col INT, some_data INT) PARTITION BY RANGE (year_col) ( - PARTITION p0 VALUES LESS THAN (1991), - PARTITION p1 VALUES LESS THAN (1995), - PARTITION p2 VALUES LESS THAN (1999), - PARTITION p3 VALUES LESS THAN (2002), - PARTITION p4 VALUES LESS THAN (2006), - PARTITION p5 VALUES LESS THAN MAXVALUE -); -CREATE TABLE rc (a INT NOT NULL, b INT NOT NULL) PARTITION BY RANGE COLUMNS(a,b) ( - PARTITION p0 VALUES LESS THAN (10,5), - PARTITION p1 VALUES LESS THAN (20,10), - PARTITION p2 VALUES LESS THAN (50,MAXVALUE), - PARTITION p3 VALUES LESS THAN (65,MAXVALUE), - PARTITION p4 VALUES LESS THAN (MAXVALUE,MAXVALUE) -); -CREATE TABLE client_firms (id INT, name VARCHAR(35)) PARTITION BY LIST (id) ( - PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), - PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), - PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), - PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) -); -CREATE TABLE lc (a INT NULL, b INT NULL) PARTITION BY LIST COLUMNS(a,b) ( - PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), - PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), - PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), - PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) -); -CREATE TABLE th (id INT, name VARCHAR(30), adate DATE) PARTITION BY LIST(YEAR(adate)) ( - PARTITION p1999 VALUES IN (1995, 1999, 2003) - DATA DIRECTORY = '/var/appdata/95/data' - INDEX DIRECTORY = '/var/appdata/95/idx', - PARTITION p2000 VALUES IN (1996, 2000, 2004) - DATA DIRECTORY = '/var/appdata/96/data' - INDEX DIRECTORY = '/var/appdata/96/idx', - PARTITION p2001 VALUES IN (1997, 2001, 2005) - DATA DIRECTORY = '/var/appdata/97/data' - INDEX DIRECTORY = '/var/appdata/97/idx', - PARTITION p2002 VALUES IN (1998, 2002, 2006) - DATA DIRECTORY = '/var/appdata/98/data' - INDEX DIRECTORY = '/var/appdata/98/idx' -); -CREATE TABLE t1 (s1 INT, s2 INT AS (EXP(s1)) STORED) PARTITION BY LIST (s2) (PARTITION p1 VALUES IN (1)); - -CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar; - -CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; -CREATE TABLE child (id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE) ENGINE=INNODB; - -CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB; -CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; -CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), INDEX (customer_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, FOREIGN KEY (customer_id) REFERENCES customer(id)) ENGINE=INNODB; - -CREATE TABLE t1 (CHECK (c1 <> c2), c1 INT CHECK (c1 > 10), c2 INT CONSTRAINT c2_positive CHECK (c2 > 0), c3 INT CHECK (c3 < 100), CONSTRAINT c1_nonzero CHECK (c1 <> 0), CHECK (c1 > c3)); -CREATE TABLE t2 (c1 VARCHAR(10) CHARACTER SET binary, c2 TEXT CHARACTER SET binary, c3 ENUM('a','b','c') CHARACTER SET binary); -CREATE TABLE t3 (c1 VARBINARY(10), c2 BLOB, c3 ENUM('a','b','c') CHARACTER SET binary); - -CREATE TABLE triangle (sidea DOUBLE, sideb DOUBLE, sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))); -CREATE VIEW v1 AS SELECT *, CONCAT(first_name,' ',last_name) AS full_name FROM t1; -CREATE TABLE t1 (first_name VARCHAR(10), last_name VARCHAR(10), full_name VARCHAR(255) AS (CONCAT(first_name,' ',last_name))); - -CREATE TABLE t1 (c JSON, g INT GENERATED ALWAYS AS (c->"$.id"), INDEX i (g)); -CREATE TABLE t2 (a BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, c JSON DEFAULT NULL, g INT GENERATED ALWAYS AS (c->"$.id") STORED, INDEX i (g)) ENGINE=NDB; - -CREATE TABLE t1 (i INT, j DATE INVISIBLE) ENGINE = InnoDB; -CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE); -CREATE TABLE t2 AS SELECT col1, col2 FROM t1; -CREATE TABLE t2 (col2 INT INVISIBLE) AS SELECT col1, col2 FROM t1; - -CREATE TABLE auto_0 (c1 VARCHAR(50), c2 INT); \ No newline at end of file diff --git a/benchmark/data/mysql/select.sql b/benchmark/data/mysql/select.sql deleted file mode 100644 index eae12733..00000000 --- a/benchmark/data/mysql/select.sql +++ /dev/null @@ -1,36 +0,0 @@ -SELECT 1 + 1 FROM DUAL; -SELECT AVG(score), t1.* FROM t1; -SELECT CONCAT(last_name,', ',first_name) AS full_name FROM my_table ORDER BY full_name; -SELECT CONCAT(last_name,', ',first_name) full_name FROM my_table ORDER BY full_name; -SELECT column1 column2 FROM my_table; -SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name; -SELECT t1.name, t2.salary FROM employee t1, info t2 WHERE t1.name = t2.name; -SELECT college, region, seed FROM tournament ORDER BY region, seed; -SELECT college, region AS r, seed AS s FROM tournament ORDER BY r, s; -SELECT college, region, seed FROM tournament ORDER BY 2, 3; -SELECT a, b, COUNT(c) AS t FROM test_table GROUP BY a,b ORDER BY a,t DESC; -SELECT COUNT(col1) AS col2 FROM t GROUP BY col2 HAVING col2 = 2; -SELECT col_name FROM tbl_name HAVING col_name > 0; -SELECT col_name FROM tbl_name WHERE col_name > 0; -SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary) > 10; -SELECT 12 AS a, a FROM t GROUP BY a; -SELECT * FROM tbl LIMIT 5,10; -SELECT * FROM tbl LIMIT 95,18446744073709551615; -SELECT * FROM tbl LIMIT 5; -SELECT * FROM tbl WINDOW window_name AS (window_spec) LIMIT 5; - -SELECT * FROM t1, t2 FOR SHARE OF t1; -SELECT * FROM t1, t2 INTO OUTFILE '/path/to/file_name'; -SELECT ALL HIGH_PRIORITY STRAIGHT_JOIN SQL_SMALL_RESULT SQL_CACHE * FROM tbl PARTITION (partition_name, partition_name1) LOCK IN SHARE MODE; -SELECT DISTINCTROW HIGH_PRIORITY STRAIGHT_JOIN SQL_BIG_RESULT SQL_NO_CACHE * FROM tbl PARTITION (partition_name, partition_name1) FOR UPDATE OF tbl_name SKIP LOCKED; -SELECT DISTINCT HIGH_PRIORITY STRAIGHT_JOIN SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS * FROM tbl PARTITION (partition_name, partition_name1) FOR UPDATE OF tbl_name SKIP LOCKED; - -SELECT * INTO @my_var FROM t1; -SELECT * FROM t1 INTO @my_var FOR UPDATE; -SELECT 1 FOR UPDATE INTO @my_var; -SELECT * FROM t1 FOR UPDATE INTO @my_var; -SELECT id, data INTO @x, @y FROM test.t1 LIMIT 1; - -SELECT * FROM t1 AS t INTO @x,@y,@z; -SELECT * FROM t1 AS t INTO OUTFILE '/tmp/select-values.txt'; -SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; diff --git a/benchmark/data/params.json b/benchmark/data/params.json new file mode 100644 index 00000000..e9bf1ef7 --- /dev/null +++ b/benchmark/data/params.json @@ -0,0 +1,10 @@ +{ + "suggestion": { + "getAllEntities": ["$sql", { "lineNumber": 974, "column": 37 }], + "getSuggestionAtCaretPosition": ["$sql", { "lineNumber": 974, "column": 37 }] + }, + "suggestion_flink": { + "getAllEntities": ["$sql", { "lineNumber": 1020, "column": 38 }], + "getSuggestionAtCaretPosition": ["$sql", { "lineNumber": 1020, "column": 38 }] + } +} \ No newline at end of file diff --git a/benchmark/data/pgsql/create.sql b/benchmark/data/pgsql/create.sql deleted file mode 100644 index c8fceb79..00000000 --- a/benchmark/data/pgsql/create.sql +++ /dev/null @@ -1,97 +0,0 @@ -CREATE GLOBAL TEMPORARY TABLE IF NOT EXISTS table1 (col1 int COLLATE collation1 CONSTRAINT constraint_name NOT NULL DEFERRABLE) INHERITS (table_parent) WITH (storage_parameter = 1) ON COMMIT PRESERVE ROWS TABLESPACE tablespace_name; - -CREATE LOCAL TEMP TABLE table1 (col1 int CONSTRAINT constraint_name NULL NOT DEFERRABLE, col2 text CHECK (age > 5) NOT DEFERRABLE INITIALLY DEFERRED, LIKE source_table INCLUDING DEFAULTS) INHERITS (table_parent) WITH OIDS TABLESPACE tablespace_name; - -CREATE LOCAL TEMP TABLE table1 (col1 int) INHERITS (table_parent) WITH OIDS ON COMMIT DELETE ROWS; - -CREATE UNLOGGED TABLE table1 (col1 int) INHERITS (table_parent) WITHOUT OIDS ON COMMIT DROP; - -CREATE TABLE table_name1 OF type_name (col1 WITH OPTIONS CONSTRAINT constraint_name NOT NULL, col2 WITH OPTIONS CONSTRAINT constraint_name CHECK (age > 5) NOT DEFERRABLE INITIALLY DEFERRED); - -CREATE TABLE table_name1 OF type_name (col1 WITH OPTIONS CONSTRAINT constraint_name NOT NULL, EXCLUDE USING hash (c WITH &&+) WITH (storage_parameter=3) USING INDEX TABLESPACE tablespace_name WHERE (predicate1=123) NOT DEFERRABLE INITIALLY DEFERRED); - - -CREATE TABLE weather ( - city varchar(80), - temp_lo int, - -- low temperature - temp_hi int, - -- high temperature - prcp real, - -- precipitation - date date -); - -CREATE TABLE cities ( - name varchar(80), - location point -); - --- remove it -DROP TABLE weather; - --- operate view -CREATE VIEW myview AS -SELECT - city, - temp_lo, - temp_hi, - prcp, - date, - location -FROM - weather, - cities -WHERE - city = name; - --- Foreign Keys -CREATE TABLE cities ( - city varchar(80) primary key, - location point -); - -CREATE TABLE weather ( - city varchar(80) references cities(city), - temp_lo int, - temp_hi int, - prcp real, - date date -); - --- Schemas - --- Creating a Schema -CREATE SCHEMA myschema; - -CREATE SCHEMA database1.schema1.table1; - -CREATE SCHEMA schemaname AUTHORIZATION username; - --- The Public Schema -CREATE TABLE public7.products(col1 int); - --- Inheritance -CREATE TABLE capitals ( - state char(2) -) INHERITS (cities); - --- Partitioning Implementing Partitioning -CREATE TABLE measurement_y2006m02 ( - CHECK ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' ) -) INHERITS (measurement); - -CREATE TRIGGER insert_measurement_trigger - BEFORE INSERT ON measurement - FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger(); - -CREATE TABLE measurement ( - city_id int not null, - logdate date not null, - peaktemp int, - unitsales int -); - -CREATE VIEW measurement AS - SELECT * FROM measurement_y2006m02 -UNION ALL SELECT * FROM measurement_y2006m03; diff --git a/benchmark/data/pgsql/select.sql b/benchmark/data/pgsql/select.sql deleted file mode 100644 index 9b5896ef..00000000 --- a/benchmark/data/pgsql/select.sql +++ /dev/null @@ -1,99 +0,0 @@ -WITH RECURSIVE query_name (id) AS (SELECT id FROM table_expression) -SELECT DISTINCT ON (col1,col2) random() AS name1 FROM table_expression -WHERE name1=name1 -GROUP BY DISTINCT id -HAVING sum(len) < interval '5 hours' -WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) - UNION ALL (SELECT * FROM others) - ORDER BY salary DESC - FETCH NEXT ROWS ONLY - OFFSET start ROWS - FOR UPDATE OF table_name, table_name2 NOWAIT; -SELECT; - -SELECT * FROM db.tbs GROUP BY (col1 > 3, col2 < 8) ORDER BY col3 > 9; - -WITH query_name (id) AS (SELECT id FROM table_expression) SELECT DISTINCT random() AS name1 FROM table_expression WHERE name1=name1 GROUP BY id HAVING sum(len) < interval '5 hours' WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) INTERSECT DISTINCT (SELECT * FROM others) ORDER BY salary ASC OFFSET start FETCH NEXT ROW ONLY FOR NO KEY UPDATE; - -WITH query_name (id) AS (SELECT id FROM table_expression) SELECT DISTINCT ON (col1) random() AS name1 FROM table_expression WHERE name1=name1 GROUP BY id HAVING sum(len) < interval '5 hours' WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) EXCEPT (SELECT * FROM others) ORDER BY salary USING > NULLS FIRST OFFSET start FETCH NEXT ROW ONLY FOR SHARE; - -WITH query_name (id) AS (SELECT id FROM table_expression) SELECT DISTINCT ON (col1) random() AS name1 FROM table_expression WHERE name1=name1 GROUP BY id HAVING sum(len) < interval '5 hours' WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) EXCEPT (SELECT * FROM others) ORDER BY salary USING > NULLS FIRST OFFSET start FETCH NEXT ROW ONLY FOR KEY SHARE OF table_name NOWAIT; - --- SELECT INTO -WITH RECURSIVE query_name (id) AS (SELECT id FROM table_expression) -SELECT DISTINCT ON (col2, col3) -INTO TEMPORARY TABLE new_table - FROM from_item - WHERE name2=name1 - GROUP BY name - HAVING s > 8 - WINDOW window_name AS ( RANGE UNBOUNDED PRECEDING ) - INTERSECT DISTINCT (SELECT * FROM tb) - ORDER BY expression_1 USING > NULLS FIRST - LIMIT ALL - OFFSET start ROW - FOR UPDATE OF table_name NOWAIT; -SELECT INTO new_table; - --- The Most Easy -SELECT * ; - --- Querying a Table - -SELECT city, temp_lo, temp_hi, prcp, date FROM weather; - -SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather; - -SELECT * FROM weather - WHERE city = 'San Francisco' AND prcp > 0.0; - -SELECT * FROM weather - ORDER BY city; - -SELECT * FROM weather - ORDER BY city, temp_lo; - -SELECT DISTINCT city - FROM weather; - -SELECT DISTINCT city - FROM weather - ORDER BY city; - --- Joins Between Tables -SELECT weather.city, weather.temp_lo, weather.temp_hi, - weather.prcp, weather.date, cities.location - FROM weather NATURAL LEFT OUTER JOIN cities - WHERE cities.name = weather.city; - -SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high, - W2.city, W2.temp_lo AS low, W2.temp_hi AS high - FROM weather W1 NATURAL RIGHT OUTER JOIN weather W2 - WHERE W1.temp_lo < W2.temp_lo - AND W1.temp_hi > W2.temp_hi; - -SELECT * - FROM weather w NATURAL FULL OUTER JOIN cities c - WHERE w.city = c.name; - -SELECT * - FROM weather w CROSS JOIN cities c - WHERE w.city = c.name; - --- Aggregate Functions - -SELECT city, max(temp_lo) - FROM weather - WHERE city LIKE 'S%' - GROUP BY city - HAVING max(temp_lo) < 40; - --- Window Functions - -SELECT depname, empno, salary, enroll_date -FROM - (SELECT depname, empno, salary, enroll_date, - rank() OVER (PARTITION BY depname ORDER BY salary DESC, empno) AS pos - FROM empsalary - ) AS ss -WHERE pos < 3; \ No newline at end of file diff --git a/benchmark/data/select.sql b/benchmark/data/select.sql new file mode 100644 index 00000000..92fc3fe8 --- /dev/null +++ b/benchmark/data/select.sql @@ -0,0 +1,1014 @@ +SELECT + main_query.* +FROM ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS main_query +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query1 on main_query.product_id = sub_query1.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query2 on main_query.product_id = sub_query2.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query3 on main_query.product_id = sub_query3.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query4 on main_query.product_id = sub_query4.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query5 on main_query.product_id = sub_query5.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query6 on main_query.product_id = sub_query6.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query7 on main_query.product_id = sub_query7.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query8 on main_query.product_id = sub_query8.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query9 on main_query.product_id = sub_query9.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query10 on main_query.product_id = sub_query10.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query11 on main_query.product_id = sub_query11.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query12 on main_query.product_id = sub_query12.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query13 on main_query.product_id = sub_query13.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query14 on main_query.product_id = sub_query14.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query15 on main_query.product_id = sub_query15.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query16 on main_query.product_id = sub_query16.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query17 on main_query.product_id = sub_query17.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query18 on main_query.product_id = sub_query18.product_id + +WHERE + main_query.total_sales_amount > 1000 +ORDER BY + main_query.region_name, + main_query.category_name, + main_query.total_sales_amount DESC; diff --git a/benchmark/data/spark/create.sql b/benchmark/data/spark/create.sql deleted file mode 100644 index 341fdedf..00000000 --- a/benchmark/data/spark/create.sql +++ /dev/null @@ -1,120 +0,0 @@ --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); diff --git a/benchmark/data/spark/select.sql b/benchmark/data/spark/select.sql deleted file mode 100644 index 60f772fb..00000000 --- a/benchmark/data/spark/select.sql +++ /dev/null @@ -1,162 +0,0 @@ --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; - - --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; - - --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; - - --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; diff --git a/benchmark/data/split.sql b/benchmark/data/split.sql new file mode 100644 index 00000000..e729aa8c --- /dev/null +++ b/benchmark/data/split.sql @@ -0,0 +1,1001 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_0 AS +SELECT + * +FROM + origin_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_1 AS +SELECT + * +FROM + origin_table_1; + +SELECT col1, col2 FROM table_name_1; + +SELECT col3, col4 FROM table_name_1 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_1 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_1 AS +SELECT + * +FROM + origin_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_2 AS +SELECT + * +FROM + origin_table_2; + +SELECT col1, col2 FROM table_name_2; + +SELECT col3, col4 FROM table_name_2 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_2 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_2 AS +SELECT + * +FROM + origin_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_3 AS +SELECT + * +FROM + origin_table_3; + +SELECT col1, col2 FROM table_name_3; + +SELECT col3, col4 FROM table_name_3 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_3 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_3 AS +SELECT + * +FROM + origin_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_4 AS +SELECT + * +FROM + origin_table_4; + +SELECT col1, col2 FROM table_name_4; + +SELECT col3, col4 FROM table_name_4 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_4 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_4 AS +SELECT + * +FROM + origin_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_5 AS +SELECT + * +FROM + origin_table_5; + +SELECT col1, col2 FROM table_name_5; + +SELECT col3, col4 FROM table_name_5 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_5 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_5 AS +SELECT + * +FROM + origin_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_6 AS +SELECT + * +FROM + origin_table_6; + +SELECT col1, col2 FROM table_name_6; + +SELECT col3, col4 FROM table_name_6 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_6 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_6 AS +SELECT + * +FROM + origin_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_7 AS +SELECT + * +FROM + origin_table_7; + +SELECT col1, col2 FROM table_name_7; + +SELECT col3, col4 FROM table_name_7 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_7 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_7 AS +SELECT + * +FROM + origin_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_8 AS +SELECT + * +FROM + origin_table_8; + +SELECT col1, col2 FROM table_name_8; + +SELECT col3, col4 FROM table_name_8 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_8 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_8 AS +SELECT + * +FROM + origin_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_9 AS +SELECT + * +FROM + origin_table_9; + +SELECT col1, col2 FROM table_name_9; + +SELECT col3, col4 FROM table_name_9 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_9 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_9 AS +SELECT + * +FROM + origin_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_10 AS +SELECT + * +FROM + origin_table_10; + +SELECT col1, col2 FROM table_name_10; + +SELECT col3, col4 FROM table_name_10 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_10 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_10 AS +SELECT + * +FROM + origin_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_11 AS +SELECT + * +FROM + origin_table_11; + +SELECT col1, col2 FROM table_name_11; + +SELECT col3, col4 FROM table_name_11 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_11 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_11 AS +SELECT + * +FROM + origin_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_12 AS +SELECT + * +FROM + origin_table_12; + +SELECT col1, col2 FROM table_name_12; + +SELECT col3, col4 FROM table_name_12 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_12 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_12 AS +SELECT + * +FROM + origin_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_13 AS +SELECT + * +FROM + origin_table_13; + +SELECT col1, col2 FROM table_name_13; + +SELECT col3, col4 FROM table_name_13 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_13 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_13 AS +SELECT + * +FROM + origin_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_14 AS +SELECT + * +FROM + origin_table_14; + +SELECT col1, col2 FROM table_name_14; + +SELECT col3, col4 FROM table_name_14 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_14 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_14 AS +SELECT + * +FROM + origin_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_15 AS +SELECT + * +FROM + origin_table_15; + +SELECT col1, col2 FROM table_name_15; + +SELECT col3, col4 FROM table_name_15 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_15 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_15 AS +SELECT + * +FROM + origin_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_16 AS +SELECT + * +FROM + origin_table_16; + +SELECT col1, col2 FROM table_name_16; + +SELECT col3, col4 FROM table_name_16 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_16 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_16 AS +SELECT + * +FROM + origin_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_17 AS +SELECT + * +FROM + origin_table_17; + +SELECT col1, col2 FROM table_name_17; + +SELECT col3, col4 FROM table_name_17 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_17 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_17 AS +SELECT + * +FROM + origin_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_18 AS +SELECT + * +FROM + origin_table_18; + +SELECT col1, col2 FROM table_name_18; + +SELECT col3, col4 FROM table_name_18 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_18 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_18 AS +SELECT + * +FROM + origin_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_19 AS +SELECT + * +FROM + origin_table_19; + +SELECT col1, col2 FROM table_name_19; + +SELECT col3, col4 FROM table_name_19 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_19 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_19 AS +SELECT + * +FROM + origin_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_20 AS +SELECT + * +FROM + origin_table_20; + +SELECT col1, col2 FROM table_name_20; + +SELECT col3, col4 FROM table_name_20 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_20 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_20 AS +SELECT + * +FROM + origin_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_21 AS +SELECT + * +FROM + origin_table_21; + +SELECT col1, col2 FROM table_name_21; + +SELECT col3, col4 FROM table_name_21 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_21 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_21 AS +SELECT + * +FROM + origin_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_22 AS +SELECT + * +FROM + origin_table_22; + +SELECT col1, col2 FROM table_name_22; + +SELECT col3, col4 FROM table_name_22 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_22 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_22 AS +SELECT + * +FROM + origin_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_23 AS +SELECT + * +FROM + origin_table_23; + +SELECT col1, col2 FROM table_name_23; + +SELECT col3, col4 FROM table_name_23 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_23 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_23 AS +SELECT + * +FROM + origin_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_24 AS +SELECT + * +FROM + origin_table_24; + +SELECT col1, col2 FROM table_name_24; + +SELECT col3, col4 FROM table_name_24 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_24 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_24 AS +SELECT + * +FROM + origin_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_25 AS +SELECT + * +FROM + origin_table_25; + +SELECT col1, col2 FROM table_name_25; + +SELECT col3, col4 FROM table_name_25 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_25 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_25 AS +SELECT + * +FROM + origin_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_26 AS +SELECT + * +FROM + origin_table_26; + +SELECT col1, col2 FROM table_name_26; + +SELECT col3, col4 FROM table_name_26 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_26 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_26 AS +SELECT + * +FROM + origin_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_27 AS +SELECT + * +FROM + origin_table_27; + +SELECT col1, col2 FROM table_name_27; + +SELECT col3, col4 FROM table_name_27 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_27 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_27 AS +SELECT + * +FROM + origin_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_28 AS +SELECT + * +FROM + origin_table_28; + +SELECT col1, col2 FROM table_name_28; + +SELECT col3, col4 FROM table_name_28 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_28 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_28 AS +SELECT + * +FROM + origin_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_29 AS +SELECT + * +FROM + origin_table_29; + +SELECT col1, col2 FROM table_name_29; + +SELECT col3, col4 FROM table_name_29 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_29 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_29 AS +SELECT + * +FROM + origin_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_30 AS +SELECT + * +FROM + origin_table_30; + +SELECT col1, col2 FROM table_name_30; + +SELECT col3, col4 FROM table_name_30 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_30 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_30 AS +SELECT + * +FROM + origin_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_31 AS +SELECT + * +FROM + origin_table_31; + +SELECT col1, col2 FROM table_name_31; + +SELECT col3, col4 FROM table_name_31 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_31 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_31 AS +SELECT + * +FROM + origin_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_32 AS +SELECT + * +FROM + origin_table_32; + +SELECT col1, col2 FROM table_name_32; + +SELECT col3, col4 FROM table_name_32 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_32 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_32 AS +SELECT + * +FROM + origin_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_33 AS +SELECT + * +FROM + origin_table_33; + +SELECT col1, col2 FROM table_name_33; + +SELECT col3, col4 FROM table_name_33 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_33 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_33 AS +SELECT + * +FROM + origin_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_34 AS +SELECT + * +FROM + origin_table_34; + +SELECT col1, col2 FROM table_name_34; + +SELECT col3, col4 FROM table_name_34 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_34 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_34 AS +SELECT + * +FROM + origin_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_35 AS +SELECT + * +FROM + origin_table_35; + +SELECT col1, col2 FROM table_name_35; + +SELECT col3, col4 FROM table_name_35 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_35 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_35 AS +SELECT + * +FROM + origin_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_36 AS +SELECT + * +FROM + origin_table_36; + +SELECT col1, col2 FROM table_name_36; + +SELECT col3, col4 FROM table_name_36 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_36 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_36 AS +SELECT + * +FROM + origin_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_37 AS +SELECT + * +FROM + origin_table_37; + +SELECT col1, col2 FROM table_name_37; + +SELECT col3, col4 FROM table_name_37 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_37 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_37 AS +SELECT + * +FROM + origin_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_38 AS +SELECT + * +FROM + origin_table_38; + +SELECT col1, col2 FROM table_name_38; + +SELECT col3, col4 FROM table_name_38 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_38 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_39 AS +SELECT + * +FROM + origin_table_39; \ No newline at end of file diff --git a/benchmark/data/split_flink.sql b/benchmark/data/split_flink.sql new file mode 100644 index 00000000..0091adec --- /dev/null +++ b/benchmark/data/split_flink.sql @@ -0,0 +1,999 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_0 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_1 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_2 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_3 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_4 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_5 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_6 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_7 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_8 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_9 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_10 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_11 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_12 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_13 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_14 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_15 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_16 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_17 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_18 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_19 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_20 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_21 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_22 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_23 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_24 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_25 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_26 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_27 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_28 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_29 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_30 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_31 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_32 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_33 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_34 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_35 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_36 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_37 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_38 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_38; + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_39 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_39; + +CREATE TABLE table_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_40 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_40; + +CREATE TABLE table_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_41 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_41; + +CREATE TABLE table_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_42 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_42; + +CREATE TABLE table_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_43 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_43; + +CREATE TABLE table_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_44 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_44; + +CREATE TABLE table_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_45 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_45; + +CREATE TABLE table_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_46 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_46; + +CREATE TABLE table_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_47 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_47; + +CREATE TABLE table_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_48 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_48; + +CREATE TABLE table_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_49 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_49; + +CREATE TABLE table_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_50 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_50; + +CREATE TABLE table_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_51 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_51; + +CREATE TABLE table_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_52 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_52; + +CREATE TABLE table_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_53 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_53; + +CREATE TABLE table_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_54 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_54; + +CREATE TABLE table_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_55 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_55; + +CREATE TABLE table_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_56 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_56; + +CREATE TABLE table_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_57 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_57; + +CREATE TABLE table_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_58 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_58; + +CREATE TABLE table_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_59 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_59; + +CREATE TABLE table_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_60 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_60; + +CREATE TABLE table_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_61 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_61; + +CREATE TABLE table_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_62 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_62; + +CREATE TABLE table_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_63 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_63; + +CREATE TABLE table_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_64 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_64; + +CREATE TABLE table_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_65 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_65; + +CREATE TABLE table_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_66 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_66; + +CREATE TABLE table_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_67 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_67; + +CREATE TABLE table_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_68 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_68; + +CREATE TABLE table_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_69 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_69; + +CREATE TABLE table_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_70 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_70; + +CREATE TABLE table_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_71 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_71; + +CREATE TABLE table_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_72 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_72; + +CREATE TABLE table_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_73 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_73; + +CREATE TABLE table_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_74 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_74; + +CREATE TABLE table_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_75 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_75; + +CREATE TABLE table_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_76 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_76; + +CREATE TABLE table_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_77 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_77; + +CREATE TABLE table_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_78 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_78; + +CREATE TABLE table_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_79 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_79; + +CREATE TABLE table_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_80 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_80; + +CREATE TABLE table_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_81 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_81; + +CREATE TABLE table_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_82 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_82; + +CREATE TABLE table_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_83 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_83; + +CREATE TABLE table_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_84 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_84; + +CREATE TABLE table_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_85 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_85; + +CREATE TABLE table_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_86 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_86; + +CREATE TABLE table_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_87 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_87; + +CREATE TABLE table_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_88 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_88; + +CREATE TABLE table_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_89 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_89; + +CREATE TABLE table_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_90 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_90; + +CREATE TABLE table_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_91 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_91; + +CREATE TABLE table_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_92 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_92; + +CREATE TABLE table_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_93 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_93; + +CREATE TABLE table_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_94 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_94; + +CREATE TABLE table_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_95 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_95; + +CREATE TABLE table_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_96 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_96; + +CREATE TABLE table_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_97 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_97; + +CREATE TABLE table_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_98 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_98; + +CREATE TABLE table_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_99 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_99; \ No newline at end of file diff --git a/benchmark/data/suggestion.sql b/benchmark/data/suggestion.sql new file mode 100644 index 00000000..0f1a176b --- /dev/null +++ b/benchmark/data/suggestion.sql @@ -0,0 +1,1066 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_0 AS +SELECT + * +FROM + origin_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_1 AS +SELECT + * +FROM + origin_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_2 AS +SELECT + * +FROM + origin_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_3 AS +SELECT + * +FROM + origin_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_4 AS +SELECT + * +FROM + origin_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_5 AS +SELECT + * +FROM + origin_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_6 AS +SELECT + * +FROM + origin_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_7 AS +SELECT + * +FROM + origin_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_8 AS +SELECT + * +FROM + origin_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_9 AS +SELECT + * +FROM + origin_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_10 AS +SELECT + * +FROM + origin_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_11 AS +SELECT + * +FROM + origin_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_12 AS +SELECT + * +FROM + origin_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_13 AS +SELECT + * +FROM + origin_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_14 AS +SELECT + * +FROM + origin_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_15 AS +SELECT + * +FROM + origin_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_16 AS +SELECT + * +FROM + origin_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_17 AS +SELECT + * +FROM + origin_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_18 AS +SELECT + * +FROM + origin_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_19 AS +SELECT + * +FROM + origin_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_20 AS +SELECT + * +FROM + origin_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_21 AS +SELECT + * +FROM + origin_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_22 AS +SELECT + * +FROM + origin_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_23 AS +SELECT + * +FROM + origin_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_24 AS +SELECT + * +FROM + origin_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_25 AS +SELECT + * +FROM + origin_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_26 AS +SELECT + * +FROM + origin_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_27 AS +SELECT + * +FROM + origin_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_28 AS +SELECT + * +FROM + origin_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_29 AS +SELECT + * +FROM + origin_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_30 AS +SELECT + * +FROM + origin_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_31 AS +SELECT + * +FROM + origin_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_32 AS +SELECT + * +FROM + origin_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_33 AS +SELECT + * +FROM + origin_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_34 AS +SELECT + * +FROM + origin_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_35 AS +SELECT + * +FROM + origin_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_36 AS +SELECT + * +FROM + origin_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_37 AS +SELECT + * +FROM + origin_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_38 AS +SELECT + * +FROM + origin_table_38; + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_39 AS +SELECT + * +FROM + origin_table_39; + +CREATE TABLE table_40 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_40 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_40 AS +SELECT + * +FROM + origin_table_40; + +CREATE TABLE table_41 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_41 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_41 AS +SELECT + * +FROM + origin_table_41; + +CREATE TABLE table_42 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_42 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_42 AS +SELECT + * +FROM + origin_table_42; + +CREATE TABLE table_43 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_43 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_43 AS +SELECT + * +FROM + origin_table_43; + +CREATE TABLE table_44 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_44 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_44 AS +SELECT + * +FROM + origin_table_44; + +CREATE TABLE table_45 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_45 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_45 AS +SELECT + * +FROM + origin_table_45; + +CREATE TABLE table_46 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_46 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_46 AS +SELECT + * +FROM + origin_table_46; + +CREATE TABLE table_47 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_47 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_47 AS +SELECT + * +FROM + origin_table_47; + +CREATE TABLE table_48 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_48 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_48 AS +SELECT + * +FROM + origin_table_48; + +CREATE TABLE table_49 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_49 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_49 AS +SELECT + * +FROM + origin_table_49; + +CREATE TABLE table_50 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_50 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_50 AS +SELECT + * +FROM + origin_table_50; + +CREATE TABLE table_51 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_51 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_51 AS +SELECT + * +FROM + origin_table_51; + +CREATE TABLE table_52 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_52 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_52 AS +SELECT + * +FROM + origin_table_52; + +CREATE TABLE table_53 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_53 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_53 AS +SELECT + * +FROM + origin_table_53; + +CREATE TABLE table_54 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_54 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_54 AS +SELECT + * +FROM + origin_table_54; + +CREATE TABLE table_55 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_55 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_55 AS +SELECT + * +FROM + origin_table_55; + +CREATE TABLE table_56 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_56 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_56 AS +SELECT + * +FROM + origin_table_56; + +CREATE TABLE table_57 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_57 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_57 AS +SELECT + * +FROM + origin_table_57; + +CREATE TABLE table_58 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_58 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_58 AS +SELECT + * +FROM + origin_table_58; + +CREATE TABLE table_59 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_59 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_59 AS +SELECT + * +FROM + origin_table_59; + +CREATE TABLE table_60 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_60 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_60 AS +SELECT + * +FROM + origin_table_60; + +CREATE TABLE table_61 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_61 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_61 AS +SELECT + * +FROM + origin_table_61; + +CREATE TABLE table_62 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_62 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_62 AS +SELECT + * +FROM + origin_table_62; + +CREATE TABLE table_63 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_63 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_63 AS +SELECT + * +FROM + origin_table_63; + +CREATE TABLE table_64 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_64 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_64 AS +SELECT + * +FROM + origin_table_64; + +CREATE TABLE table_65 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_65 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_65 AS +SELECT + * +FROM + origin_table_65; + +CREATE TABLE table_66 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_66 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_66 AS +SELECT + * +FROM + origin_table_66; + +CREATE TABLE table_67 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_67 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_67 AS +SELECT + * +FROM + origin_table_67; + +CREATE TABLE table_68 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_68 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_68 AS +SELECT + * +FROM + origin_table_68; + +CREATE TABLE table_69 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_69 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_69 AS +SELECT + * +FROM + origin_table_69; + +CREATE TABLE table_70 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_70 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_70 AS +SELECT + * +FROM + origin_table_70; + +CREATE TABLE table_71 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_71 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_71 AS +SELECT + * +FROM + origin_table_71; + +CREATE TABLE table_72 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_72 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_72 AS +SELECT + * +FROM + origin_table_72; + +CREATE TABLE table_73 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_73 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_73 AS +SELECT + * +FROM + origin_table_73; + +CREATE TABLE table_74 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_74 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_74 AS +SELECT + * +FROM + origin_table_74; + +CREATE TABLE table_75 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_75 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_75 AS +SELECT + * +FROM + origin_table_75; + +CREATE TABLE table_76 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_76 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_76 AS +SELECT + * +FROM + origin_table_76; + +CREATE TABLE table_77 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_77 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_77 AS +SELECT + * +FROM + origin_table_77; + +CREATE TABLE table_78 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_78 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_78 AS +SELECT + * +FROM + origin_table_78; + +CREATE TABLE table_79 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_79 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_79 AS +SELECT + * +FROM + origin_table_79; + +CREATE TABLE table_80 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_80 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_80 AS +SELECT + * +FROM + origin_table_80; + +CREATE TABLE table_81 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_81 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_81 AS +SELECT + * +FROM + origin_table_81; + +CREATE TABLE table_82 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_82 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_82 AS +SELECT + * +FROM + origin_table_82; + +CREATE TABLE table_83 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_83 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_83 AS +SELECT + * +FROM + origin_table_83; + +CREATE TABLE table_84 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_84 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_84 AS +SELECT + * +FROM + origin_table_84; + +CREATE TABLE table_85 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_85 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_85 AS +SELECT + * +FROM + origin_table_85; + +CREATE TABLE table_86 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_86 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_86 AS +SELECT + * +FROM + origin_table_86; + +CREATE TABLE table_87 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_87 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_87 AS +SELECT + * +FROM + origin_table_87; + +CREATE TABLE table_88 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_88 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_88 AS +SELECT + * +FROM + origin_table_88; + +CREATE TABLE table_89 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_89 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_89 AS +SELECT + * +FROM + origin_table_89; + +CREATE TABLE table_90 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_90 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_90 AS +SELECT + * +FROM + origin_table_90; + +CREATE TABLE table_91 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_91 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_91 AS +SELECT + * +FROM + origin_table_91; + +CREATE TABLE table_92 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_92 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_92 AS +SELECT + * +FROM + origin_table_92; + +CREATE TABLE table_93 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_93 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_93 AS +SELECT + * +FROM + origin_table_93; + +CREATE TABLE table_94 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_94 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_94 AS +SELECT + * +FROM + origin_table_94; + +CREATE TABLE table_95 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_95 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_95 AS +SELECT + * +FROM + origin_table_95; + +CREATE TABLE table_96 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_96 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_96 AS +SELECT + * +FROM + origin_table_96; + +CREATE TABLE table_97 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_97 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_97 AS +SELECT + * +FROM + origin_table_97; + +CREATE TABLE table_98 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_98 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_98 AS +SELECT + * +FROM + origin_table_98; + +CREATE TABLE table_99 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_99 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_99 AS +SELECT + * +FROM + origin_table_99; + +CREATE TABLE table_100 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_100 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_100 AS +SELECT + * +FROM + origin_table_100; + +SELECT + A.user_id, + A.user_name, + B.total_order_amount, + C.average_product_price, + D.max_order_date, + E.min_quantity, + F.product_category_count +FROM + (SELECT user_id, user_name FROM ) A +JOIN + (SELECT user_id, SUM(order_total) AS total_order_amount + FROM orders + GROUP BY user_id) B ON A.user_id = B.user_id +JOIN + (SELECT O.user_id, AVG(P.price) AS average_product_price + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + JOIN products P ON OI.product_id = P.product_id + GROUP BY O.user_id) C ON A.user_id = C.user_id +JOIN + (SELECT user_id, MAX(order_date) AS max_order_date + FROM orders + GROUP BY user_id) D ON A.user_id = D.user_id +JOIN + (SELECT O.user_id, MIN(OI.quantity) AS min_quantity + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) E ON A.user_id = E.user_id +JOIN + (SELECT P.category_id, COUNT(DISTINCT P.product_id) AS product_category_count + FROM products P + JOIN categories C ON P.category_id = C.category_id + GROUP BY P.category_id) F ON C.user_id = F.category_id +JOIN + (SELECT O.user_id, COUNT(OI.product_id) AS product_count + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) G ON A.user_id = G.user_id +JOIN + (SELECT P.product_id, MAX(O.order_total) AS max_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) H ON G.product_count = H.product_id +JOIN + (SELECT P.product_id, MIN(O.order_total) AS min_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) I ON H.product_id = I.product_id +JOIN + (SELECT P.product_id, AVG(OI.quantity) AS avg_quantity_per_product + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + GROUP BY P.product_id) J ON I.product_id = J.product_id; \ No newline at end of file diff --git a/benchmark/data/suggestion_flink.sql b/benchmark/data/suggestion_flink.sql new file mode 100644 index 00000000..18897f26 --- /dev/null +++ b/benchmark/data/suggestion_flink.sql @@ -0,0 +1,1056 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_0 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_1 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_2 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_3 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_4 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_5 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_6 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_7 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_8 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_9 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_10 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_11 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_12 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_13 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_14 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_15 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_16 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_17 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_18 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_19 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_20 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_21 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_22 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_23 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_24 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_25 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_26 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_27 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_28 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_29 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_30 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_31 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_32 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_33 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_34 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_35 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_36 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_37 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_38 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_38; + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_39 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_39; + +CREATE TABLE table_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_40 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_40; + +CREATE TABLE table_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_41 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_41; + +CREATE TABLE table_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_42 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_42; + +CREATE TABLE table_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_43 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_43; + +CREATE TABLE table_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_44 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_44; + +CREATE TABLE table_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_45 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_45; + +CREATE TABLE table_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_46 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_46; + +CREATE TABLE table_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_47 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_47; + +CREATE TABLE table_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_48 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_48; + +CREATE TABLE table_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_49 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_49; + +CREATE TABLE table_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_50 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_50; + +CREATE TABLE table_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_51 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_51; + +CREATE TABLE table_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_52 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_52; + +CREATE TABLE table_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_53 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_53; + +CREATE TABLE table_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_54 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_54; + +CREATE TABLE table_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_55 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_55; + +CREATE TABLE table_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_56 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_56; + +CREATE TABLE table_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_57 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_57; + +CREATE TABLE table_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_58 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_58; + +CREATE TABLE table_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_59 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_59; + +CREATE TABLE table_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_60 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_60; + +CREATE TABLE table_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_61 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_61; + +CREATE TABLE table_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_62 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_62; + +CREATE TABLE table_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_63 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_63; + +CREATE TABLE table_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_64 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_64; + +CREATE TABLE table_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_65 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_65; + +CREATE TABLE table_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_66 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_66; + +CREATE TABLE table_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_67 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_67; + +CREATE TABLE table_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_68 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_68; + +CREATE TABLE table_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_69 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_69; + +CREATE TABLE table_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_70 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_70; + +CREATE TABLE table_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_71 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_71; + +CREATE TABLE table_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_72 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_72; + +CREATE TABLE table_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_73 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_73; + +CREATE TABLE table_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_74 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_74; + +CREATE TABLE table_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_75 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_75; + +CREATE TABLE table_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_76 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_76; + +CREATE TABLE table_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_77 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_77; + +CREATE TABLE table_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_78 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_78; + +CREATE TABLE table_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_79 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_79; + +CREATE TABLE table_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_80 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_80; + +CREATE TABLE table_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_81 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_81; + +CREATE TABLE table_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_82 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_82; + +CREATE TABLE table_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_83 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_83; + +CREATE TABLE table_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_84 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_84; + +CREATE TABLE table_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_85 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_85; + +CREATE TABLE table_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_86 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_86; + +CREATE TABLE table_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_87 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_87; + +CREATE TABLE table_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_88 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_88; + +CREATE TABLE table_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_89 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_89; + +CREATE TABLE table_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_90 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_90; + +CREATE TABLE table_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_91 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_91; + +CREATE TABLE table_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_92 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_92; + +CREATE TABLE table_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_93 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_93; + +CREATE TABLE table_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_94 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_94; + +CREATE TABLE table_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_95 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_95; + +CREATE TABLE table_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_96 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_96; + +CREATE TABLE table_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_97 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_97; + +CREATE TABLE table_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_98 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_98; + +CREATE TABLE table_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_99 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_99; + +SELECT + A.user_id, + A.user_name, + B.total_order_amount, + C.average_product_price, + D.max_order_date, + E.min_quantity, + F.product_category_count +FROM + (SELECT user_id, user_name FROM ) A +JOIN + (SELECT user_id, SUM(order_total) AS total_order_amount + FROM orders + GROUP BY user_id) B ON A.user_id = B.user_id +JOIN + (SELECT O.user_id, AVG(P.price) AS average_product_price + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + JOIN products P ON OI.product_id = P.product_id + GROUP BY O.user_id) C ON A.user_id = C.user_id +JOIN + (SELECT user_id, MAX(order_date) AS max_order_date + FROM orders + GROUP BY user_id) D ON A.user_id = D.user_id +JOIN + (SELECT O.user_id, MIN(OI.quantity) AS min_quantity + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) E ON A.user_id = E.user_id +JOIN + (SELECT P.category_id, COUNT(DISTINCT P.product_id) AS product_category_count + FROM products P + JOIN categories C ON P.category_id = C.category_id + GROUP BY P.category_id) F ON C.user_id = F.category_id +JOIN + (SELECT O.user_id, COUNT(OI.product_id) AS product_count + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) G ON A.user_id = G.user_id +JOIN + (SELECT P.product_id, MAX(O.order_total) AS max_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) H ON G.product_count = H.product_id +JOIN + (SELECT P.product_id, MIN(O.order_total) AS min_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) I ON H.product_id = I.product_id +JOIN + (SELECT P.product_id, AVG(OI.quantity) AS avg_quantity_per_product + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + GROUP BY P.product_id) J ON I.product_id = J.product_id; \ No newline at end of file diff --git a/benchmark/data/trino/create.sql b/benchmark/data/trino/create.sql deleted file mode 100644 index eb2b026e..00000000 --- a/benchmark/data/trino/create.sql +++ /dev/null @@ -1,95 +0,0 @@ -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; diff --git a/benchmark/data/trino/select.sql b/benchmark/data/trino/select.sql deleted file mode 100644 index 471b91de..00000000 --- a/benchmark/data/trino/select.sql +++ /dev/null @@ -1,117 +0,0 @@ --- DOUBLE IN Query -SELECT 123.456E7 FROM DUAL; --- GROUP BY -SELECT * FROM table1 GROUP BY a; -SELECT * FROM table1 GROUP BY a, b; -SELECT * FROM table1 GROUP BY (); --- GROUP BY GROUPING SETS -SELECT * FROM table1 GROUP BY GROUPING SETS (a); -SELECT a, b, GROUPING(a, b) FROM table1 GROUP BY GROUPING SETS ((a), (b)); --- GROUP BY ROLLUP -SELECT * FROM table1 GROUP BY ALL GROUPING SETS ((a, b), (a), ()), CUBE (c), ROLLUP (d); -SELECT * FROM table1 GROUP BY DISTINCT GROUPING SETS ((a, b), (a), ()), CUBE (c), ROLLUP (d); --- GROUP BY CUBE -SELECT origin_state, destination_state, sum(package_weight) -FROM shipping -GROUP BY CUBE (origin_state, destination_state); --- GROUP BY Combining multiple grouping expressions -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY - GROUPING SETS ((origin_state, destination_state)), - ROLLUP (origin_zip); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state, destination_state, origin_zip), - (origin_state, destination_state) -); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY - GROUPING SETS ((origin_state, destination_state)), - GROUPING SETS ((origin_zip), ()); --- GROUP BY ALL and DISTINCT quantifiers -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY ALL - CUBE (origin_state, destination_state), - ROLLUP (origin_state, origin_zip); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state, destination_state, origin_zip), - (origin_state, origin_zip), - (origin_state, destination_state, origin_zip), - (origin_state, origin_zip), - (origin_state, destination_state), - (origin_state), - (origin_state, destination_state), - (origin_state), - (origin_state, destination_state), - (origin_state), - (destination_state), - () -); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY DISTINCT - CUBE (origin_state, destination_state), - ROLLUP (origin_state, origin_zip); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state, destination_state, origin_zip), - (origin_state, origin_zip), - (origin_state, destination_state), - (origin_state), - (destination_state), - () -); - --- GROUP BY GROUPING operation -SELECT origin_state, origin_zip, destination_state, sum(package_weight), - grouping(origin_state, origin_zip, destination_state) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state), - (origin_state, origin_zip), - (destination_state) -); - --- ORDER BY -SELECT * FROM table1 ORDER BY a; --- Select expressions -SELECT (CAST(ROW(1, true) AS ROW(field1 bigint, field2 boolean))).* AS (alias1, alias2); -SELECT (CAST(ROW(1, true) AS ROW(field1 bigint, field2 boolean))).*; -SELECT (ROW(1, true)).*; --- LIMIT -SELECT * FROM table1 LIMIT 2; -SELECT * FROM table1 LIMIT ALL; -SELECT * FROM (VALUES (1, '1'), (2, '2')) LIMIT ALL; --- HAVING -SELECT count(*), mktsegment, nationkey, - CAST(sum(acctbal) AS bigint) AS totalbal -FROM customer -GROUP BY mktsegment, nationkey -HAVING sum(acctbal) > 5700000 -ORDER BY totalbal DESC; --- WINDOW -SELECT orderkey, clerk, totalprice, - rank() OVER w AS rnk -FROM orders -WINDOW w AS (PARTITION BY clerk ORDER BY totalprice DESC) -ORDER BY count() OVER w, clerk, rnk --- AGGREGATION FILTER/ ORDER BY -SELECT SUM(x) FILTER (WHERE x > 4); -SELECT array_agg(x ORDER BY t.y) FROM t; --- INTERSECT -SELECT 123 INTERSECT DISTINCT SELECT 123 INTERSECT ALL SELECT 123; --- substring_built_in_function -SELECT substring('string' FROM 2); -SELECT substring('string' FROM 2 FOR 3); diff --git a/benchmark/data/update.sql b/benchmark/data/update.sql new file mode 100644 index 00000000..5b130786 --- /dev/null +++ b/benchmark/data/update.sql @@ -0,0 +1,1010 @@ +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); diff --git a/benchmark/run.ts b/benchmark/run.ts index 6992c34d..0f97b5e6 100644 --- a/benchmark/run.ts +++ b/benchmark/run.ts @@ -5,66 +5,36 @@ import SqlBenchmark, { languageNameMap, languages } from './sqlBenchmark'; import type { Language } from './sqlBenchmark'; import inquirer from 'inquirer'; import chalk from 'chalk'; +import config from './benchmark.config'; import { Table } from 'console-table-printer'; const argv = argsParser(process.argv.slice(2)); const isChooseAll = argv.lang === 'all'; - -type TestFile = { - /** Benchmark Name */ - name: string; - /** Test sql name */ - sqlFileName: string; - /** Test run times */ - loopTimes?: number; - /** Test method name of parser */ - testTypes: string[]; - /** Exclude languages */ - excludes?: Language[]; - /** Include languages */ - includes?: Language[]; -}; - -const testFiles: TestFile[] = [ - { - name: 'Query Collection (100 Rows)', - sqlFileName: 'select.sql', - loopTimes: 3, - testTypes: ['validate', 'getAllTokens'], - }, - { - name: 'Select All Entities', - sqlFileName: 'select.sql', - loopTimes: 1, - testTypes: ['getAllEntities'], - includes: ['hive'], - }, - { - name: 'Create Table (100 Rows)', - sqlFileName: 'create.sql', - loopTimes: 3, - testTypes: ['validate', 'getAllTokens'], - }, -]; +const testFiles = config.testFiles; let benchmarkResults: SqlBenchmark[] = []; -const readSql = (fileName: string, lang: string) => { - const sqlPath = path.join(__dirname, `./data/${lang}/${fileName}`); +const readSql = (fileName: string) => { + const sqlPath = path.join(__dirname, `./data/${fileName}`); if (!fs.existsSync(sqlPath)) return ''; return fs.readFileSync(sqlPath, 'utf-8'); }; -const readParams = (lang: string) => { - const paramsPath = path.join(__dirname, `./data/${lang}/params.json`); +const readParams = () => { + const paramsPath = path.join(__dirname, `./data/params.json`); if (!fs.existsSync(paramsPath)) return null; return fs.readFileSync(paramsPath, 'utf-8'); }; const getParams = (originalParams: any, sqlFileName: string, methodType: string): any[] => { if (!originalParams) return ['$sql']; - const fileName = sqlFileName.substring(0, sqlFileName.lastIndexOf('.sql') + 1); - return originalParams[fileName]?.[methodType] || ['$sql']; + try { + const params = JSON.parse(originalParams); + const fileName = sqlFileName.substring(0, sqlFileName.lastIndexOf('.sql')); + return params[fileName]?.[methodType] || ['$sql']; + } catch (error) { + return ['$sql']; + } }; const askForSaveResult = () => { @@ -122,8 +92,10 @@ const printSummaryReport = () => { langsCostTime[lang] = costTime ?? '-'; }); + if (rows.some((row) => row.name === name && row.testType === testType)) return; + rows.push({ - name: name, + name, testType, ...langsCostTime, }); @@ -144,12 +116,12 @@ const printSummaryReport = () => { const benchmark = (lang: Language) => { const sqlBenchmark = new SqlBenchmark(lang); - const originalParams = readParams(lang); + const originalParams = readParams(); testFiles.forEach((testInfo) => { const { name, sqlFileName, testTypes, loopTimes, excludes, includes } = testInfo; if (excludes?.includes(lang) || (includes?.length && !includes.includes(lang))) return; - const sql = readSql(sqlFileName, lang); + const sql = readSql(sqlFileName); const sqlRows = sql.split('\n').length; testTypes.forEach((type) => { const params = getParams(originalParams, sqlFileName, type); diff --git a/benchmark/sqlBenchmark.ts b/benchmark/sqlBenchmark.ts index f31eff64..a4de6704 100644 --- a/benchmark/sqlBenchmark.ts +++ b/benchmark/sqlBenchmark.ts @@ -15,11 +15,26 @@ export type BenchmarkResult = { lastCostTime?: number; }; +// 过滤掉异常数据,m为判断为异常值的标准差倍数 +const removeOutliers = (data, m = 2) => { + if (data.length <= 2) return data; + const mean = data.reduce((a, b) => a + b, 0) / data.length; + const standardDeviation = Math.sqrt( + data.map((x) => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / data.length + ); + + return data.filter((x) => Math.abs(x - mean) < m * standardDeviation); +}; + const tableColumns = [ { name: 'name', title: 'Benchmark Name', }, + { + name: 'type', + title: 'Method Name', + }, { name: 'rows', title: 'SQL Rows', @@ -40,10 +55,6 @@ const tableColumns = [ name: 'loopTimes', title: 'Loops', }, - { - name: 'type', - title: 'Type', - }, ]; /** @@ -52,7 +63,6 @@ const tableColumns = [ export const languageNameMap = { hive: 'HiveSQL', mysql: 'MySQL', - plsql: 'PLSQL', flink: 'FlinkSQL', spark: 'SparkSQL', postgresql: 'PostgreSQL', @@ -74,12 +84,12 @@ class SqlBenchmark { public readonly language: string; - private _DEFAULT_LOOP_TIMES = 3; + private _DEFAULT_LOOP_TIMES = 5; /** * If current average time difference from last time grater than DIFF_RATIO, we will highlight that record. */ - private _HIGHLIGHT_DIFF_RATIO = 0.1; + private _HIGHLIGHT_DIFF_RATIO = 0.15; private _lastResultsCache: BenchmarkResult[] | null = null; @@ -90,18 +100,15 @@ class SqlBenchmark { */ getSqlParser(): BasicSQL { const caches = Object.keys(require.cache); - const cacheModules = [ - path.join(__dirname, `../src/parser/common/`), - path.join(__dirname, `../src/parser/${this.language}/`), - path.join(__dirname, `../src/lib/${this.language}/`), - path.normalize(require.resolve('antlr4ng')), - ]; - caches - .filter((moduleName) => - cacheModules.some((cacheModuleName) => moduleName.includes(cacheModuleName)) - ) - .forEach((moduleName) => delete require.cache[moduleName]); - const Parser = require(path.join(__dirname, `../src/parser/${this.language}/index.ts`))[ + caches.forEach((moduleName) => { + const module = require.cache[moduleName]!; + // Fix Memory Leak + if (module.parent) { + module.parent.children = []; + } + delete require.cache[moduleName]; + }); + const Parser = require(path.resolve(`src/parser/${this.language}/index.ts`))[ languageNameMap[this.language] ]; return new Parser(); @@ -111,8 +118,8 @@ class SqlBenchmark { * @param type Which parser method you want to run * @param name Benchmark name * @param params Parser method parameters - * @param params Rows count of sql - * @param loopTimes Loop times, default run 3 times + * @param sqlRows Rows count of sql + * @param loopTimes Loop times, default run 5 times */ run( type: string, @@ -127,14 +134,17 @@ class SqlBenchmark { for (let i = 0; i < loopTimes; i++) { const parser = this.getSqlParser(); if (!parser[type] || typeof parser[type] !== 'function') return; + const startTime = performance.now(); parser[type](...params); const costTime = performance.now() - startTime; costTimes.push(Math.round(costTime)); } - - const avgTime = Math.round(costTimes.reduce((prev, curr) => prev + curr, 0) / loopTimes); + const filteredData = removeOutliers(costTimes); + const avgTime = Math.round( + filteredData.reduce((prev, curr) => prev + curr, 0) / filteredData.length + ); const result = { name, avgTime, diff --git a/package.json b/package.json index 5bcbe1c6..dcc92a5d 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "jest": "^29.5.0", "lint-staged": "12.5.0", "prettier": "^3.0.3", + "semver": "^7.6.2", "standard-version": "^9.5.0", "tsx": "^4.7.1", "typescript": "^5.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 796803ea..0640a74d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,7 @@ specifiers: jest: ^29.5.0 lint-staged: 12.5.0 prettier: ^3.0.3 + semver: ^7.6.2 standard-version: ^9.5.0 tsx: ^4.7.1 typescript: ^5.0.4 @@ -51,6 +52,7 @@ devDependencies: jest: 29.5.0_@types+node@18.16.16 lint-staged: 12.5.0 prettier: 3.0.3 + semver: 7.6.2 standard-version: 9.5.0 tsx: 4.7.1 typescript: 5.0.4 @@ -3342,7 +3344,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.5.4 + semver: 7.6.2 transitivePeerDependencies: - supports-color dev: true @@ -3847,7 +3849,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.1 - semver: 7.5.4 + semver: 7.6.2 validate-npm-package-license: 3.0.4 dev: true @@ -4306,20 +4308,18 @@ packages: hasBin: true dev: true - /semver/7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + /semver/7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true - /semver/7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver/7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 dev: true /shebang-command/2.0.0: @@ -4455,7 +4455,7 @@ packages: figures: 3.2.0 find-up: 5.0.0 git-semver-tags: 4.1.1 - semver: 7.5.1 + semver: 7.6.2 stringify-package: 1.0.1 yargs: 16.2.0 dev: true diff --git a/scripts/benchmark.js b/scripts/benchmark.js index 84754bc4..5c05dcdd 100644 --- a/scripts/benchmark.js +++ b/scripts/benchmark.js @@ -4,6 +4,7 @@ const fs = require('fs'); const argv = require('yargs-parser')(process.argv.slice(2)); const inquirer = require('inquirer'); const chalk = require('chalk'); +const semver = require('semver'); const outputPath = path.resolve(__dirname, '../src/lib'); const languages = fs.readdirSync(outputPath).filter((item) => { @@ -22,6 +23,28 @@ function runBenchmark(language) { console.info(chalk.green('Executing:'), chalk.gray(tsx.spawnargs.join(' '))); } +function checkVersion() { + const currentVersion = process.versions.node; + const minVersion = '16.14.0'; + const recommendedVersion = '21.6.1'; + if (semver.lt(currentVersion, minVersion)) { + console.error( + chalk.bold.red( + `Current Node.js version (v${currentVersion}) is lower than required version (v${minVersion})` + ) + ); + return false; + } else { + if (semver.lt(currentVersion, recommendedVersion)) + console.warn( + chalk.bold.bgCyan( + `Node.js version v${recommendedVersion} is recommended, otherwise there may be a memory leak!` + ) + ); + return true; + } +} + function prompt() { inquirer .prompt([ @@ -39,6 +62,7 @@ function prompt() { } function main() { + if (!checkVersion()) return; if (argv.lang) { const supportedLanguage = languages.some((language) => language === argv.lang); if (supportedLanguage || argv.lang === 'All Languages') { diff --git a/test/helper.ts b/test/helper.ts index debfb24f..146bdc36 100644 --- a/test/helper.ts +++ b/test/helper.ts @@ -32,45 +32,6 @@ export const readSQL = (dirname: string, fileName: string) => { return result; }; -/** - * Benchmark for a function. - * @param name - * @param fn - * @param times , default 1 - * @returns [ totalTime, averageTime, msg ] - */ -export function benchmark(name: string, fn: Function, times: number = 1): [number, number, string] { - const start = performance.now(); - - for (let i = 0; i < times; i++) { - fn(); - } - const end = performance.now(); - const totalTime = end - start; - const averageTime = totalTime / times; - - const msg = `Benchmark: ${name} executed ${times} times. Total time: ${totalTime.toFixed( - 2 - )}ms. Average time: ${averageTime.toFixed(2)}ms`; - console.info(msg); - - return [totalTime, averageTime, msg]; -} - -export function getReportTableRow(name, rows, times, totalTime, averageTime) { - return `| ${name} | ${rows} | ${times} | ${totalTime.toFixed(2)} | ${averageTime.toFixed(2)} |`; -} - -export function getReportTableHeader(title: string) { - return `# ${title} -| Name | Rows | Times | Total Time(ms) | Average Time(ms) | -| ---- | ---- | ---- | ---- | ---- |\n`; -} - -export function exportReportTable(markdown: string, output: string) { - fs.writeFileSync(path.join(output, 'benchmark.md'), markdown); -} - export function commentOtherLine(sqlContent: string, line: number) { const slices = sqlContent.split('\n').map((item, index) => { if (index !== line - 1) { diff --git a/test/parser/flink/benchmark/benchmark.md b/test/parser/flink/benchmark/benchmark.md deleted file mode 100644 index 8b368c81..00000000 --- a/test/parser/flink/benchmark/benchmark.md +++ /dev/null @@ -1,12 +0,0 @@ -# FlinkSQL Benchmark -| Name | Rows | Times | Total Time(ms) | Average Time(ms) | -| ---- | ---- | ---- | ---- | ---- | -| CreateTable | 100 | 1 | 150.34 | 150.34 | -| CreateTable | 1000 | 1 | 53.04 | 53.04 | -| CreateTable | 5000 | 1 | 179.04 | 179.04 | -| SelectTable | 100 | 1 | 460.25 | 460.25 | -| SelectTable | 1000 | 1 | 46.24 | 46.24 | -| SelectTable | 5000 | 1 | 505.28 | 505.28 | -| InsertTable | 100 | 1 | 13.58 | 13.58 | -| InsertTable | 1000 | 1 | 33.07 | 33.07 | -| InsertTable | 5000 | 1 | 242.58 | 242.58 | \ No newline at end of file From 24b392df5257cd0055c2580f809874c614b28251 Mon Sep 17 00:00:00 2001 From: Hayden Date: Thu, 25 Jul 2024 09:47:53 +0800 Subject: [PATCH 08/16] docs: Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9336e113..0fef6e76 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,8 @@ Additionally, it provides advanced features such as **SQL Validation**, **Code C - Trino - Impala ->Tips: This project is the default for Typescript target, also you can try to compile it to other languages if you need. +>[!TIP] +>This project is the default for Typescript target, also you can try to compile it to other languages if you need.
From 95a108744bb40e418056faaf86bd97b85dd191f8 Mon Sep 17 00:00:00 2001 From: liuyi Date: Wed, 31 Jul 2024 15:27:35 +0800 Subject: [PATCH 09/16] feat: sync some useful syntax from antlr/grammars-v4 --- src/grammar/mysql/MySqlParser.g4 | 17 +++-------------- .../mysql/suggestion/tokenSuggestion.test.ts | 1 + .../parser/mysql/syntax/fixtures/alterTable.sql | 3 +++ .../mysql/syntax/fixtures/createTrigger.sql | 2 ++ test/parser/mysql/syntax/fixtures/select.sql | 8 ++++++++ 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/grammar/mysql/MySqlParser.g4 b/src/grammar/mysql/MySqlParser.g4 index 8cb1e3eb..dd4cf206 100644 --- a/src/grammar/mysql/MySqlParser.g4 +++ b/src/grammar/mysql/MySqlParser.g4 @@ -310,7 +310,7 @@ createTablespaceNdb ; createTrigger - : KW_CREATE ownerStatement? KW_TRIGGER ifNotExists? trigger_name=fullId triggerTime=( + : KW_CREATE ownerStatement? ifNotExists? KW_TRIGGER ifNotExists? trigger_name=fullId triggerTime=( KW_BEFORE | KW_AFTER ) triggerEvent=(KW_INSERT | KW_UPDATE | KW_DELETE) KW_ON tableName KW_FOR KW_EACH KW_ROW ( @@ -907,19 +907,6 @@ replaceStatement )? (('(' columnNames ')')? replaceStatementValuesOrSelectOrTable | setAssignmentList) ; -// selectStatement -// : querySpecification lockClause? # simpleSelect -// | querySpecificationNointo lockClause? intoClause? # simpleSelect -// | queryExpression lockClause? # parenthesisSelect -// | querySpecificationNointo unionStatement+ ( -// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression) -// )? orderByClause? limitClause? lockClause? # unionSelect -// | queryExpressionNointo unionParenthesis+ ( -// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpression -// )? orderByClause? limitClause? lockClause? # unionParenthesisSelect -// | querySpecificationNointo (',' lateralStatement)+ # withLateralStatement -// ; - // TODO: Simplify the rules to fit SLL(*) Mode selectStatement : querySpecification unionStatement* ( @@ -1127,6 +1114,7 @@ queryExpression */ querySpecification : KW_SELECT selectSpec* selectElements intoClause? fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? intoClause? + unionStatement? ; unionStatement @@ -3421,6 +3409,7 @@ keywordsCanBeId | KW_RESOURCE_GROUP_USER | KW_RESUME | KW_RETURNED_SQLSTATE + | KW_RETURNING | KW_RETURNS | KW_REUSE | KW_ROLE diff --git a/test/parser/mysql/suggestion/tokenSuggestion.test.ts b/test/parser/mysql/suggestion/tokenSuggestion.test.ts index c31aa6b2..38ca340b 100644 --- a/test/parser/mysql/suggestion/tokenSuggestion.test.ts +++ b/test/parser/mysql/suggestion/tokenSuggestion.test.ts @@ -60,6 +60,7 @@ describe('MySQL Token Suggestion', () => { 'ALGORITHM', 'OR', 'TRIGGER', + 'IF', 'TABLESPACE', 'UNDO', 'TABLE', diff --git a/test/parser/mysql/syntax/fixtures/alterTable.sql b/test/parser/mysql/syntax/fixtures/alterTable.sql index cec0aa8a..041a8f8c 100644 --- a/test/parser/mysql/syntax/fixtures/alterTable.sql +++ b/test/parser/mysql/syntax/fixtures/alterTable.sql @@ -102,3 +102,6 @@ ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REBUILD PARTITION p0 REBUILD PARTITION ALL; ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REPAIR PARTITION p0 REPAIR PARTITION ALL; ALTER TABLE t1 ALTER COLUMN c1 SET VISIBLE, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REMOVE PARTITIONING UPGRADE PARTITIONING; + + +ALTER TABLE `order` ADD cancelled TINYINT(1) DEFAULT 0 NOT NULL, ADD delivered TINYINT(1) DEFAULT 0 NOT NULL, ADD returning TINYINT(1) DEFAULT 0 NOT NULL; diff --git a/test/parser/mysql/syntax/fixtures/createTrigger.sql b/test/parser/mysql/syntax/fixtures/createTrigger.sql index 139745cd..b662ff37 100644 --- a/test/parser/mysql/syntax/fixtures/createTrigger.sql +++ b/test/parser/mysql/syntax/fixtures/createTrigger.sql @@ -20,3 +20,5 @@ CREATE TRIGGER my_trigger AFTER DELETE ON your_table FOR EACH ROW SET NEW.column CREATE TRIGGER my_trigger AFTER INSERT ON your_table FOR EACH ROW FOLLOWS other_trigger_name SET NEW.column_name = some_value; CREATE TRIGGER my_trigger AFTER INSERT ON your_table FOR EACH ROW PRECEDES other_trigger_name SET NEW.column_name = some_value; + +CREATE TRIGGER IF NOT EXISTS my_trigger AFTER INSERT ON your_table FOR EACH ROW PRECEDES other_trigger_name SET NEW.column_name = some_value; diff --git a/test/parser/mysql/syntax/fixtures/select.sql b/test/parser/mysql/syntax/fixtures/select.sql index 3e00b777..4342b709 100644 --- a/test/parser/mysql/syntax/fixtures/select.sql +++ b/test/parser/mysql/syntax/fixtures/select.sql @@ -70,3 +70,11 @@ SELECT id, data INTO @x, @y FROM test.t1 LIMIT 1; SELECT * FROM t1 AS t INTO @x,@y,@z; SELECT * FROM t1 AS t INTO OUTFILE '/tmp/select-values.txt'; SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; + +SELECT ID ,SUM(COL_1) AS SUM_COL_1 FROM ( + (SELECT ID ,COL_1 FROM TEST_AUTO_INC + UNION ALL + SELECT ID ,COL_1 FROM TEST_AUTO_INC TAI) + UNION ALL + (SELECT ID ,COL_1 FROM TEST_AUTO_INC TAI) +)SS GROUP BY 1 ORDER BY 1; From e83449a0cc0a50be510c7b4a3337597b1890fc92 Mon Sep 17 00:00:00 2001 From: liuyi Date: Wed, 31 Jul 2024 15:33:14 +0800 Subject: [PATCH 10/16] fix: createFunction and createFunctionLoadable --- src/grammar/mysql/MySqlParser.g4 | 30 +++++++---- src/parser/mysql/mysqlEntityCollector.ts | 9 ++++ .../contextCollect/entityCollector.test.ts | 54 ++++++++++++++++--- .../mysql/contextCollect/fixtures/common.sql | 2 + .../mysql/syntax/fixtures/createFunction.sql | 17 ++++++ 5 files changed, 95 insertions(+), 17 deletions(-) diff --git a/src/grammar/mysql/MySqlParser.g4 b/src/grammar/mysql/MySqlParser.g4 index dd4cf206..328a5589 100644 --- a/src/grammar/mysql/MySqlParser.g4 +++ b/src/grammar/mysql/MySqlParser.g4 @@ -75,6 +75,7 @@ ddlStatement | createLogfileGroup | createProcedure | createFunction + | createFunctionLoadable | createServer | createTable | createTablespaceInnodb @@ -266,6 +267,22 @@ createProcedure )* ')' routineOption* routineBody ; +createFunction + : KW_CREATE ownerStatement? KW_AGGREGATE? KW_FUNCTION ifNotExists? functionNameCreate '(' functionParameter? ( + ',' functionParameter + )* ')' KW_RETURNS dataType routineOption* (routineBody | returnStatement) + ; + +// https://dev.mysql.com/doc/refman/8.0/en/create-function-loadable.html +createFunctionLoadable + : KW_CREATE KW_AGGREGATE? KW_FUNCTION ifNotExists? functionNameCreate KW_RETURNS returnType=( + KW_STRING + | KW_INTEGER + | KW_REAL + | KW_DECIMAL + ) KW_SONAME STRING_LITERAL + ; + createRole : KW_CREATE KW_ROLE ifNotExists? userOrRoleNames ; @@ -420,6 +437,10 @@ procedureParameter : direction=(KW_IN | KW_OUT | KW_INOUT)? paramName=uid dataType ; +functionParameter + : paramName=uid dataType + ; + routineOption : KW_COMMENT STRING_LITERAL # routineComment | KW_LANGUAGE KW_SQL # routineLanguage @@ -1984,15 +2005,6 @@ checkTableOption | KW_CHANGED ; -createFunction - : KW_CREATE KW_AGGREGATE? KW_FUNCTION ifNotExists? functionNameCreate KW_RETURNS returnType=( - KW_STRING - | KW_INTEGER - | KW_REAL - | KW_DECIMAL - ) KW_SONAME STRING_LITERAL - ; - installComponent : KW_INSTALL KW_COMPONENT component_name=uid (',' component_name=uid)* ( KW_SET variableExpr (',' variableExpr)* diff --git a/src/parser/mysql/mysqlEntityCollector.ts b/src/parser/mysql/mysqlEntityCollector.ts index 617719c2..36ffc9bb 100644 --- a/src/parser/mysql/mysqlEntityCollector.ts +++ b/src/parser/mysql/mysqlEntityCollector.ts @@ -4,6 +4,7 @@ import type { CopyCreateTableContext, CreateDatabaseContext, CreateFunctionContext, + CreateFunctionLoadableContext, CreateViewContext, DatabaseNameContext, DatabaseNameCreateContext, @@ -143,4 +144,12 @@ export class MySqlEntityCollector extends EntityCollector implements MySqlParser exitCreateFunction(ctx: CreateFunctionContext) { this.popStmt(); } + + enterCreateFunctionLoadable(ctx: CreateFunctionLoadableContext) { + this.pushStmt(ctx, StmtContextType.CREATE_FUNCTION_STMT); + } + + exitCreateFunctionLoadable(ctx: CreateFunctionLoadableContext) { + this.popStmt(); + } } diff --git a/test/parser/mysql/contextCollect/entityCollector.test.ts b/test/parser/mysql/contextCollect/entityCollector.test.ts index f037149f..78e00046 100644 --- a/test/parser/mysql/contextCollect/entityCollector.test.ts +++ b/test/parser/mysql/contextCollect/entityCollector.test.ts @@ -20,7 +20,7 @@ describe('MySQL entity collector tests', () => { }); test('split results', () => { - expect(splitListener.statementsContext.length).toBe(15); + expect(splitListener.statementsContext.length).toBe(16); }); test('create table by columns', () => { @@ -468,21 +468,21 @@ describe('MySQL entity collector tests', () => { const functionEntity = allEntities[0]; expect(functionEntity.entityContextType).toBe(EntityContextType.FUNCTION_CREATE); - expect(functionEntity.text).toBe('my_concat_ws'); + expect(functionEntity.text).toBe('hello'); expect(functionEntity.position).toEqual({ - endColumn: 43, - endIndex: 982, + endColumn: 39, + endIndex: 978, line: 39, - startColumn: 31, - startIndex: 971, + startColumn: 34, + startIndex: 974, }); expect(functionEntity.belongStmt.stmtContextType).toBe( StmtContextType.CREATE_FUNCTION_STMT ); expect(functionEntity.belongStmt.position).toEqual({ - endColumn: 87, - endIndex: 1026, + endColumn: 114, + endIndex: 1053, endLine: 39, startColumn: 1, startIndex: 941, @@ -492,4 +492,42 @@ describe('MySQL entity collector tests', () => { expect(functionEntity.columns).toBeNull(); expect(functionEntity.relatedEntities).toBeNull(); }); + + test('create function loadable', () => { + const functionCreateContext = splitListener.statementsContext[15]; + + const collectListener = new MySqlEntityCollector(commonSql); + mysql.listen(collectListener as ParseTreeListener, functionCreateContext); + + const allEntities = collectListener.getEntities(); + + expect(allEntities.length).toBe(1); + + const functionEntity = allEntities[0]; + + expect(functionEntity.entityContextType).toBe(EntityContextType.FUNCTION_CREATE); + expect(functionEntity.text).toBe('my_concat_ws'); + expect(functionEntity.position).toEqual({ + endColumn: 43, + endIndex: 1098, + line: 41, + startColumn: 31, + startIndex: 1087, + }); + + expect(functionEntity.belongStmt.stmtContextType).toBe( + StmtContextType.CREATE_FUNCTION_STMT + ); + expect(functionEntity.belongStmt.position).toEqual({ + endColumn: 87, + endIndex: 1142, + endLine: 41, + startColumn: 1, + startIndex: 1057, + startLine: 41, + }); + + expect(functionEntity.columns).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + }); }); diff --git a/test/parser/mysql/contextCollect/fixtures/common.sql b/test/parser/mysql/contextCollect/fixtures/common.sql index 7709bcc2..b54b1bfd 100644 --- a/test/parser/mysql/contextCollect/fixtures/common.sql +++ b/test/parser/mysql/contextCollect/fixtures/common.sql @@ -36,4 +36,6 @@ SHOW CREATE SCHEMA IF NOT EXISTS db_name; DROP SCHEMA IF EXISTS db_name; +CREATE DEFINER = 'user' FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); + CREATE FUNCTION IF NOT EXISTS my_concat_ws RETURNS STRING SONAME 'udf_my_concat_ws.so'; diff --git a/test/parser/mysql/syntax/fixtures/createFunction.sql b/test/parser/mysql/syntax/fixtures/createFunction.sql index a3fdd925..b0013e77 100644 --- a/test/parser/mysql/syntax/fixtures/createFunction.sql +++ b/test/parser/mysql/syntax/fixtures/createFunction.sql @@ -11,3 +11,20 @@ CREATE FUNCTION my_concat_ws RETURNS INTEGER SONAME 'udf_my_concat_ws.so'; CREATE FUNCTION my_concat_ws RETURNS REAL SONAME 'udf_my_concat_ws.so'; CREATE FUNCTION my_concat_ws RETURNS DECIMAL SONAME 'udf_my_concat_ws.so'; CREATE FUNCTION IF NOT EXISTS my_concat_ws RETURNS DECIMAL SONAME 'udf_my_concat_ws.so'; + + + +-- https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html + +CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); +CREATE DEFINER = 'user' FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); +CREATE FUNCTION `uuidToBinary`(_uuid BINARY(36)) RETURNS binary(16) DETERMINISTIC SQL SECURITY INVOKER RETURN UNHEX( + CONCAT( + SUBSTR(_uuid, 15, 4), + SUBSTR(_uuid, 10, 4), + SUBSTR(_uuid, 1, 8), + SUBSTR(_uuid, 20, 4), + SUBSTR(_uuid, 25) + ) +); +CREATE FUNCTION AddNumbers(num1 INT, num2 INT) RETURNS INT RETURN num1 + num2; From 5d6ff4662a11acf9f16b1f18c41c204922890df9 Mon Sep 17 00:00:00 2001 From: liuyi Date: Wed, 31 Jul 2024 18:04:19 +0800 Subject: [PATCH 11/16] fix: build mysql --- .gitignore | 3 +- src/lib/mysql/MySqlParser.interp | 6 +- src/lib/mysql/MySqlParser.ts | 21948 +++++++++++++------------ src/lib/mysql/MySqlParserListener.ts | 44 +- src/lib/mysql/MySqlParserVisitor.ts | 28 +- 5 files changed, 11513 insertions(+), 10516 deletions(-) diff --git a/.gitignore b/.gitignore index 9baad8bb..acb23344 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ coverage .idea gen/ src/**/*.iml -benchmark/reports/* \ No newline at end of file +benchmark/reports/* +*.tgz diff --git a/src/lib/mysql/MySqlParser.interp b/src/lib/mysql/MySqlParser.interp index 3ca33e28..3c8fce42 100644 --- a/src/lib/mysql/MySqlParser.interp +++ b/src/lib/mysql/MySqlParser.interp @@ -1812,6 +1812,8 @@ createEvent createIndex createLogfileGroup createProcedure +createFunction +createFunctionLoadable createRole createServer createTable @@ -1833,6 +1835,7 @@ enableType indexType indexOption procedureParameter +functionParameter routineOption serverOption createDefinitions @@ -2063,7 +2066,6 @@ optimizeTable repairTable tableActionOption checkTableOption -createFunction installComponent variableExpr uninstallComponent @@ -2215,4 +2217,4 @@ functionNameBase atn: -[4, 1, 895, 8022, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 1, 0, 5, 0, 836, 8, 0, 10, 0, 12, 0, 839, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 845, 8, 1, 1, 1, 3, 1, 848, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 857, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 900, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 919, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 930, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 946, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 951, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 963, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 998, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1008, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 1013, 8, 12, 1, 12, 1, 12, 5, 12, 1017, 8, 12, 10, 12, 12, 12, 1020, 9, 12, 1, 13, 1, 13, 3, 13, 1024, 8, 13, 1, 13, 1, 13, 3, 13, 1028, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1037, 8, 13, 1, 13, 3, 13, 1040, 8, 13, 1, 13, 3, 13, 1043, 8, 13, 1, 13, 1, 13, 3, 13, 1047, 8, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 1054, 8, 14, 1, 14, 3, 14, 1057, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1062, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 1068, 8, 14, 10, 14, 12, 14, 1071, 9, 14, 1, 14, 1, 14, 3, 14, 1075, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1080, 8, 14, 1, 14, 5, 14, 1083, 8, 14, 10, 14, 12, 14, 1086, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1097, 8, 15, 1, 15, 3, 15, 1100, 8, 15, 1, 15, 1, 15, 3, 15, 1104, 8, 15, 1, 15, 3, 15, 1107, 8, 15, 1, 15, 1, 15, 3, 15, 1111, 8, 15, 1, 15, 3, 15, 1114, 8, 15, 1, 15, 1, 15, 3, 15, 1118, 8, 15, 1, 15, 3, 15, 1121, 8, 15, 1, 15, 3, 15, 1124, 8, 15, 1, 15, 1, 15, 3, 15, 1128, 8, 15, 1, 15, 3, 15, 1131, 8, 15, 1, 15, 1, 15, 3, 15, 1135, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 1141, 8, 16, 1, 16, 1, 16, 3, 16, 1145, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1150, 8, 16, 1, 16, 1, 16, 5, 16, 1154, 8, 16, 10, 16, 12, 16, 1157, 9, 16, 1, 16, 1, 16, 5, 16, 1161, 8, 16, 10, 16, 12, 16, 1164, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 1171, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1187, 8, 18, 10, 18, 12, 18, 1190, 9, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 1196, 8, 19, 1, 19, 1, 19, 3, 19, 1200, 8, 19, 1, 19, 1, 19, 3, 19, 1204, 8, 19, 1, 19, 1, 19, 3, 19, 1208, 8, 19, 1, 19, 5, 19, 1211, 8, 19, 10, 19, 12, 19, 1214, 9, 19, 3, 19, 1216, 8, 19, 1, 19, 3, 19, 1219, 8, 19, 1, 19, 3, 19, 1222, 8, 19, 1, 19, 3, 19, 1225, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1231, 8, 19, 1, 19, 1, 19, 3, 19, 1235, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1245, 8, 19, 1, 19, 1, 19, 3, 19, 1249, 8, 19, 1, 19, 1, 19, 3, 19, 1253, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1259, 8, 19, 1, 19, 5, 19, 1262, 8, 19, 10, 19, 12, 19, 1265, 9, 19, 3, 19, 1267, 8, 19, 1, 19, 3, 19, 1270, 8, 19, 3, 19, 1272, 8, 19, 1, 20, 1, 20, 3, 20, 1276, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1283, 8, 20, 1, 20, 1, 20, 3, 20, 1287, 8, 20, 1, 20, 3, 20, 1290, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1295, 8, 20, 1, 20, 1, 20, 3, 20, 1299, 8, 20, 1, 20, 3, 20, 1302, 8, 20, 1, 20, 1, 20, 3, 20, 1306, 8, 20, 1, 20, 3, 20, 1309, 8, 20, 1, 21, 1, 21, 3, 21, 1313, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1326, 8, 21, 1, 21, 3, 21, 1329, 8, 21, 1, 21, 1, 21, 3, 21, 1333, 8, 21, 1, 21, 3, 21, 1336, 8, 21, 1, 21, 1, 21, 3, 21, 1340, 8, 21, 1, 21, 3, 21, 1343, 8, 21, 1, 21, 1, 21, 3, 21, 1347, 8, 21, 1, 21, 3, 21, 1350, 8, 21, 1, 21, 1, 21, 3, 21, 1354, 8, 21, 1, 21, 3, 21, 1357, 8, 21, 1, 21, 3, 21, 1360, 8, 21, 1, 21, 1, 21, 3, 21, 1364, 8, 21, 1, 21, 3, 21, 1367, 8, 21, 1, 21, 1, 21, 3, 21, 1371, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 1377, 8, 22, 1, 22, 1, 22, 3, 22, 1381, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1393, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 1399, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1408, 8, 24, 10, 24, 12, 24, 1411, 9, 24, 1, 24, 1, 24, 3, 24, 1415, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1423, 8, 24, 1, 25, 1, 25, 3, 25, 1427, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1432, 8, 25, 1, 25, 3, 25, 1435, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1440, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 1448, 8, 25, 10, 25, 12, 25, 1451, 9, 25, 1, 25, 1, 25, 3, 25, 1455, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1460, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1466, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1471, 8, 25, 1, 25, 1, 25, 3, 25, 1475, 8, 25, 3, 25, 1477, 8, 25, 1, 26, 3, 26, 1480, 8, 26, 1, 26, 1, 26, 3, 26, 1484, 8, 26, 1, 26, 1, 26, 3, 26, 1488, 8, 26, 1, 26, 3, 26, 1491, 8, 26, 1, 26, 1, 26, 3, 26, 1495, 8, 26, 1, 26, 1, 26, 3, 26, 1499, 8, 26, 1, 26, 1, 26, 3, 26, 1503, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1509, 8, 26, 1, 26, 3, 26, 1512, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1519, 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 1524, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 1530, 8, 29, 1, 30, 1, 30, 1, 30, 5, 30, 1535, 8, 30, 10, 30, 12, 30, 1538, 9, 30, 1, 30, 1, 30, 1, 30, 3, 30, 1543, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1549, 8, 30, 10, 30, 12, 30, 1552, 9, 30, 3, 30, 1554, 8, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1559, 8, 30, 10, 30, 12, 30, 1562, 9, 30, 3, 30, 1564, 8, 30, 3, 30, 1566, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1572, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1578, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1595, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1602, 8, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 1609, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1621, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1626, 8, 36, 1, 36, 3, 36, 1629, 8, 36, 1, 37, 3, 37, 1632, 8, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1642, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1655, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1660, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1676, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 1682, 8, 40, 10, 40, 12, 40, 1685, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1694, 8, 41, 1, 41, 3, 41, 1697, 8, 41, 1, 41, 1, 41, 5, 41, 1701, 8, 41, 10, 41, 12, 41, 1704, 9, 41, 1, 41, 1, 41, 3, 41, 1708, 8, 41, 1, 41, 3, 41, 1711, 8, 41, 1, 41, 1, 41, 5, 41, 1715, 8, 41, 10, 41, 12, 41, 1718, 9, 41, 1, 41, 3, 41, 1721, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1726, 8, 41, 1, 41, 1, 41, 5, 41, 1730, 8, 41, 10, 41, 12, 41, 1733, 9, 41, 1, 41, 3, 41, 1736, 8, 41, 1, 41, 1, 41, 3, 41, 1740, 8, 41, 1, 41, 3, 41, 1743, 8, 41, 1, 41, 3, 41, 1746, 8, 41, 1, 41, 1, 41, 5, 41, 1750, 8, 41, 10, 41, 12, 41, 1753, 9, 41, 1, 41, 3, 41, 1756, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1761, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1772, 8, 41, 1, 42, 3, 42, 1775, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1782, 8, 42, 1, 42, 3, 42, 1785, 8, 42, 1, 43, 1, 43, 3, 43, 1789, 8, 43, 1, 44, 1, 44, 5, 44, 1793, 8, 44, 10, 44, 12, 44, 1796, 9, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1807, 8, 45, 1, 45, 3, 45, 1810, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1815, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1828, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1835, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1841, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1846, 8, 46, 1, 46, 1, 46, 3, 46, 1850, 8, 46, 1, 46, 3, 46, 1853, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1861, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1869, 8, 47, 3, 47, 1871, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1881, 8, 48, 1, 49, 1, 49, 3, 49, 1885, 8, 49, 1, 49, 3, 49, 1888, 8, 49, 1, 49, 1, 49, 3, 49, 1892, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1897, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1902, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1907, 8, 49, 1, 49, 1, 49, 3, 49, 1911, 8, 49, 1, 49, 1, 49, 3, 49, 1915, 8, 49, 1, 49, 1, 49, 3, 49, 1919, 8, 49, 1, 49, 1, 49, 3, 49, 1923, 8, 49, 1, 49, 1, 49, 3, 49, 1927, 8, 49, 1, 49, 1, 49, 3, 49, 1931, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1936, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1941, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1946, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1952, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1957, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1962, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1967, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1972, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1977, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1983, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1988, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1993, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1998, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2003, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2008, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2013, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2018, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2025, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2030, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2035, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2040, 8, 49, 1, 49, 1, 49, 3, 49, 2044, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2049, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2057, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2062, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2068, 8, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2080, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2087, 8, 52, 3, 52, 2089, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 2095, 8, 52, 10, 52, 12, 52, 2098, 9, 52, 1, 52, 1, 52, 3, 52, 2102, 8, 52, 1, 53, 3, 53, 2105, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2113, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2119, 8, 53, 1, 53, 1, 53, 3, 53, 2123, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2136, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2148, 8, 53, 3, 53, 2150, 8, 53, 1, 54, 3, 54, 2153, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2161, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2167, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2173, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2184, 8, 55, 10, 55, 12, 55, 2187, 9, 55, 1, 55, 1, 55, 5, 55, 2191, 8, 55, 10, 55, 12, 55, 2194, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2200, 8, 55, 10, 55, 12, 55, 2203, 9, 55, 1, 55, 1, 55, 3, 55, 2207, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2216, 8, 55, 10, 55, 12, 55, 2219, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2225, 8, 55, 10, 55, 12, 55, 2228, 9, 55, 1, 55, 1, 55, 3, 55, 2232, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2242, 8, 55, 10, 55, 12, 55, 2245, 9, 55, 1, 55, 1, 55, 5, 55, 2249, 8, 55, 10, 55, 12, 55, 2252, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2258, 8, 55, 10, 55, 12, 55, 2261, 9, 55, 1, 55, 1, 55, 3, 55, 2265, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2275, 8, 55, 10, 55, 12, 55, 2278, 9, 55, 1, 55, 1, 55, 5, 55, 2282, 8, 55, 10, 55, 12, 55, 2285, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2291, 8, 55, 10, 55, 12, 55, 2294, 9, 55, 1, 55, 1, 55, 3, 55, 2298, 8, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2303, 8, 55, 10, 55, 12, 55, 2306, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2312, 8, 55, 10, 55, 12, 55, 2315, 9, 55, 1, 55, 1, 55, 3, 55, 2319, 8, 55, 3, 55, 2321, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 2326, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 4, 57, 2332, 8, 57, 11, 57, 12, 57, 2333, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 2341, 8, 58, 10, 58, 12, 58, 2344, 9, 58, 1, 59, 3, 59, 2347, 8, 59, 1, 59, 3, 59, 2350, 8, 59, 1, 59, 1, 59, 3, 59, 2354, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2359, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2365, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2371, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2376, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2381, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2386, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2391, 8, 59, 1, 59, 3, 59, 2394, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 2399, 8, 60, 1, 60, 4, 60, 2402, 8, 60, 11, 60, 12, 60, 2403, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2414, 8, 60, 1, 61, 1, 61, 3, 61, 2418, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2425, 8, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2430, 8, 61, 1, 61, 3, 61, 2433, 8, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2438, 8, 61, 1, 61, 3, 61, 2441, 8, 61, 1, 61, 1, 61, 3, 61, 2445, 8, 61, 1, 61, 1, 61, 3, 61, 2449, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2455, 8, 62, 10, 62, 12, 62, 2458, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2476, 8, 64, 1, 64, 3, 64, 2479, 8, 64, 1, 64, 3, 64, 2482, 8, 64, 1, 64, 1, 64, 3, 64, 2486, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 2494, 8, 65, 10, 65, 12, 65, 2497, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2507, 8, 66, 10, 66, 12, 66, 2510, 9, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 2520, 8, 67, 10, 67, 12, 67, 2523, 9, 67, 3, 67, 2525, 8, 67, 1, 67, 1, 67, 5, 67, 2529, 8, 67, 10, 67, 12, 67, 2532, 9, 67, 3, 67, 2534, 8, 67, 1, 68, 1, 68, 3, 68, 2538, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2547, 8, 68, 1, 68, 3, 68, 2550, 8, 68, 1, 68, 3, 68, 2553, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2558, 8, 68, 1, 68, 1, 68, 3, 68, 2562, 8, 68, 1, 68, 3, 68, 2565, 8, 68, 1, 68, 1, 68, 3, 68, 2569, 8, 68, 1, 68, 1, 68, 3, 68, 2573, 8, 68, 1, 68, 3, 68, 2576, 8, 68, 1, 68, 1, 68, 3, 68, 2580, 8, 68, 1, 68, 3, 68, 2583, 8, 68, 1, 68, 1, 68, 3, 68, 2587, 8, 68, 1, 68, 3, 68, 2590, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2596, 8, 69, 1, 69, 3, 69, 2599, 8, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2604, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2612, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2618, 8, 69, 1, 69, 1, 69, 3, 69, 2622, 8, 69, 1, 70, 1, 70, 3, 70, 2626, 8, 70, 1, 70, 5, 70, 2629, 8, 70, 10, 70, 12, 70, 2632, 9, 70, 1, 70, 1, 70, 3, 70, 2636, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2643, 8, 70, 1, 70, 1, 70, 3, 70, 2647, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2656, 8, 70, 10, 70, 12, 70, 2659, 9, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2666, 8, 70, 1, 70, 3, 70, 2669, 8, 70, 1, 70, 1, 70, 5, 70, 2673, 8, 70, 10, 70, 12, 70, 2676, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2681, 8, 70, 1, 70, 3, 70, 2684, 8, 70, 1, 70, 1, 70, 5, 70, 2688, 8, 70, 10, 70, 12, 70, 2691, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2696, 8, 70, 3, 70, 2698, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2703, 8, 70, 1, 70, 1, 70, 5, 70, 2707, 8, 70, 10, 70, 12, 70, 2710, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2715, 8, 70, 3, 70, 2717, 8, 70, 1, 70, 1, 70, 3, 70, 2721, 8, 70, 1, 70, 3, 70, 2724, 8, 70, 1, 70, 3, 70, 2727, 8, 70, 1, 70, 1, 70, 5, 70, 2731, 8, 70, 10, 70, 12, 70, 2734, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2739, 8, 70, 3, 70, 2741, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2746, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2753, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2762, 8, 70, 1, 70, 3, 70, 2765, 8, 70, 1, 70, 1, 70, 3, 70, 2769, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2774, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2784, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2793, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2801, 8, 70, 1, 70, 3, 70, 2804, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2812, 8, 70, 1, 70, 3, 70, 2815, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2822, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2827, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2835, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2851, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2856, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2863, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2882, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2888, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2896, 8, 71, 10, 71, 12, 71, 2899, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2910, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2917, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2924, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2937, 8, 71, 10, 71, 12, 71, 2940, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2952, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2958, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2964, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2970, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2976, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2982, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2988, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 2993, 8, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 3, 73, 3000, 8, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 3007, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3014, 8, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3019, 8, 74, 1, 74, 5, 74, 3022, 8, 74, 10, 74, 12, 74, 3025, 9, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 3033, 8, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 3, 76, 3040, 8, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 3047, 8, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 3, 78, 3054, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 3063, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 3069, 8, 80, 1, 80, 1, 80, 3, 80, 3073, 8, 80, 1, 80, 1, 80, 3, 80, 3077, 8, 80, 1, 81, 1, 81, 3, 81, 3081, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 3087, 8, 81, 1, 81, 3, 81, 3090, 8, 81, 1, 82, 1, 82, 1, 82, 3, 82, 3095, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 3102, 8, 83, 1, 83, 1, 83, 1, 83, 5, 83, 3107, 8, 83, 10, 83, 12, 83, 3110, 9, 83, 1, 83, 3, 83, 3113, 8, 83, 1, 84, 1, 84, 1, 84, 3, 84, 3118, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 3128, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 5, 85, 3134, 8, 85, 10, 85, 12, 85, 3137, 9, 85, 1, 85, 1, 85, 1, 85, 3, 85, 3142, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 5, 86, 3149, 8, 86, 10, 86, 12, 86, 3152, 9, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 3, 88, 3160, 8, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 3169, 8, 89, 1, 89, 3, 89, 3172, 8, 89, 1, 90, 1, 90, 3, 90, 3176, 8, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 3185, 8, 92, 1, 93, 1, 93, 3, 93, 3189, 8, 93, 1, 93, 3, 93, 3192, 8, 93, 1, 93, 3, 93, 3195, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 3201, 8, 93, 1, 93, 3, 93, 3204, 8, 93, 1, 93, 3, 93, 3207, 8, 93, 1, 93, 1, 93, 3, 93, 3211, 8, 93, 1, 93, 3, 93, 3214, 8, 93, 1, 93, 3, 93, 3217, 8, 93, 1, 93, 3, 93, 3220, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 5, 93, 3229, 8, 93, 10, 93, 12, 93, 3232, 9, 93, 3, 93, 3234, 8, 93, 1, 94, 1, 94, 1, 94, 3, 94, 3239, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 3245, 8, 95, 1, 96, 1, 96, 1, 96, 3, 96, 3250, 8, 96, 1, 96, 4, 96, 3253, 8, 96, 11, 96, 12, 96, 3254, 1, 97, 3, 97, 3258, 8, 97, 1, 97, 1, 97, 3, 97, 3262, 8, 97, 1, 98, 1, 98, 1, 98, 3, 98, 3267, 8, 98, 1, 98, 3, 98, 3270, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3275, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3285, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3290, 8, 98, 1, 98, 1, 98, 4, 98, 3294, 8, 98, 11, 98, 12, 98, 3295, 3, 98, 3298, 8, 98, 1, 98, 1, 98, 4, 98, 3302, 8, 98, 11, 98, 12, 98, 3303, 3, 98, 3306, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3312, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 3318, 8, 98, 10, 98, 12, 98, 3321, 9, 98, 1, 98, 1, 98, 3, 98, 3325, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 3331, 8, 98, 10, 98, 12, 98, 3334, 9, 98, 3, 98, 3336, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 3341, 8, 99, 1, 99, 3, 99, 3344, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3349, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3357, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3363, 8, 99, 1, 99, 1, 99, 3, 99, 3367, 8, 99, 3, 99, 3369, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3375, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3381, 8, 99, 10, 99, 12, 99, 3384, 9, 99, 1, 99, 1, 99, 3, 99, 3388, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3394, 8, 99, 10, 99, 12, 99, 3397, 9, 99, 3, 99, 3399, 8, 99, 1, 100, 1, 100, 1, 100, 3, 100, 3404, 8, 100, 1, 100, 3, 100, 3407, 8, 100, 1, 100, 1, 100, 3, 100, 3411, 8, 100, 1, 100, 3, 100, 3414, 8, 100, 1, 100, 3, 100, 3417, 8, 100, 1, 101, 1, 101, 3, 101, 3421, 8, 101, 1, 101, 3, 101, 3424, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3432, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3438, 8, 101, 1, 101, 1, 101, 3, 101, 3442, 8, 101, 1, 102, 1, 102, 5, 102, 3446, 8, 102, 10, 102, 12, 102, 3449, 9, 102, 1, 102, 1, 102, 3, 102, 3453, 8, 102, 1, 102, 1, 102, 3, 102, 3457, 8, 102, 3, 102, 3459, 8, 102, 1, 102, 1, 102, 5, 102, 3463, 8, 102, 10, 102, 12, 102, 3466, 9, 102, 1, 102, 3, 102, 3469, 8, 102, 1, 102, 3, 102, 3472, 8, 102, 1, 102, 3, 102, 3475, 8, 102, 1, 102, 3, 102, 3478, 8, 102, 1, 102, 1, 102, 5, 102, 3482, 8, 102, 10, 102, 12, 102, 3485, 9, 102, 1, 102, 1, 102, 3, 102, 3489, 8, 102, 1, 102, 3, 102, 3492, 8, 102, 1, 102, 3, 102, 3495, 8, 102, 1, 102, 3, 102, 3498, 8, 102, 1, 102, 3, 102, 3501, 8, 102, 3, 102, 3503, 8, 102, 1, 103, 3, 103, 3506, 8, 103, 1, 103, 1, 103, 3, 103, 3510, 8, 103, 1, 103, 3, 103, 3513, 8, 103, 1, 103, 3, 103, 3516, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3524, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3530, 8, 104, 1, 104, 5, 104, 3533, 8, 104, 10, 104, 12, 104, 3536, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 3544, 8, 105, 1, 105, 5, 105, 3547, 8, 105, 10, 105, 12, 105, 3550, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 3556, 8, 106, 1, 106, 3, 106, 3559, 8, 106, 1, 106, 3, 106, 3562, 8, 106, 1, 106, 1, 106, 3, 106, 3566, 8, 106, 1, 107, 1, 107, 3, 107, 3570, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 3576, 8, 108, 1, 108, 1, 108, 3, 108, 3580, 8, 108, 1, 109, 1, 109, 1, 109, 5, 109, 3585, 8, 109, 10, 109, 12, 109, 3588, 9, 109, 1, 109, 3, 109, 3591, 8, 109, 1, 109, 3, 109, 3594, 8, 109, 1, 109, 3, 109, 3597, 8, 109, 1, 110, 1, 110, 1, 110, 3, 110, 3602, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 3609, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 5, 112, 3617, 8, 112, 10, 112, 12, 112, 3620, 9, 112, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 3626, 8, 113, 10, 113, 12, 113, 3629, 9, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 3, 115, 3637, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 3645, 8, 116, 10, 116, 12, 116, 3648, 9, 116, 3, 116, 3650, 8, 116, 1, 116, 1, 116, 3, 116, 3654, 8, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 3660, 8, 116, 1, 117, 1, 117, 3, 117, 3664, 8, 117, 1, 117, 3, 117, 3667, 8, 117, 1, 117, 3, 117, 3670, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3675, 8, 117, 1, 117, 3, 117, 3678, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3685, 8, 117, 1, 117, 1, 117, 3, 117, 3689, 8, 117, 1, 117, 3, 117, 3692, 8, 117, 1, 117, 1, 117, 3, 117, 3696, 8, 117, 1, 118, 1, 118, 3, 118, 3700, 8, 118, 1, 118, 3, 118, 3703, 8, 118, 1, 118, 3, 118, 3706, 8, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3711, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3717, 8, 118, 5, 118, 3719, 8, 118, 10, 118, 12, 118, 3722, 9, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3731, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3737, 8, 118, 5, 118, 3739, 8, 118, 10, 118, 12, 118, 3742, 9, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3747, 8, 118, 1, 118, 1, 118, 3, 118, 3751, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3757, 8, 119, 1, 119, 3, 119, 3760, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3772, 8, 120, 1, 120, 1, 120, 3, 120, 3776, 8, 120, 1, 120, 1, 120, 3, 120, 3780, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3788, 8, 121, 1, 121, 1, 121, 3, 121, 3792, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 3804, 8, 123, 10, 123, 12, 123, 3807, 9, 123, 1, 124, 1, 124, 3, 124, 3811, 8, 124, 1, 124, 3, 124, 3814, 8, 124, 1, 124, 1, 124, 3, 124, 3818, 8, 124, 1, 124, 3, 124, 3821, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 3827, 8, 124, 10, 124, 12, 124, 3830, 9, 124, 1, 124, 1, 124, 3, 124, 3834, 8, 124, 1, 124, 3, 124, 3837, 8, 124, 1, 124, 3, 124, 3840, 8, 124, 1, 125, 1, 125, 3, 125, 3844, 8, 125, 1, 125, 3, 125, 3847, 8, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 3854, 8, 125, 10, 125, 12, 125, 3857, 9, 125, 1, 125, 1, 125, 3, 125, 3861, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 3868, 8, 126, 10, 126, 12, 126, 3871, 9, 126, 1, 127, 1, 127, 3, 127, 3875, 8, 127, 1, 128, 1, 128, 1, 128, 5, 128, 3880, 8, 128, 10, 128, 12, 128, 3883, 9, 128, 1, 129, 1, 129, 5, 129, 3887, 8, 129, 10, 129, 12, 129, 3890, 9, 129, 1, 129, 1, 129, 1, 129, 5, 129, 3895, 8, 129, 10, 129, 12, 129, 3898, 9, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3903, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3911, 8, 130, 1, 130, 3, 130, 3914, 8, 130, 1, 130, 3, 130, 3917, 8, 130, 1, 130, 1, 130, 1, 130, 5, 130, 3922, 8, 130, 10, 130, 12, 130, 3925, 9, 130, 3, 130, 3927, 8, 130, 1, 130, 3, 130, 3930, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3937, 8, 130, 1, 130, 3, 130, 3940, 8, 130, 1, 130, 1, 130, 3, 130, 3944, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3950, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3960, 8, 132, 1, 132, 1, 132, 3, 132, 3964, 8, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3973, 8, 133, 1, 134, 3, 134, 3976, 8, 134, 1, 134, 1, 134, 3, 134, 3980, 8, 134, 1, 134, 1, 134, 5, 134, 3984, 8, 134, 10, 134, 12, 134, 3987, 9, 134, 1, 134, 1, 134, 1, 134, 5, 134, 3992, 8, 134, 10, 134, 12, 134, 3995, 9, 134, 1, 134, 1, 134, 3, 134, 3999, 8, 134, 1, 134, 1, 134, 3, 134, 4003, 8, 134, 1, 134, 1, 134, 5, 134, 4007, 8, 134, 10, 134, 12, 134, 4010, 9, 134, 1, 134, 1, 134, 1, 134, 3, 134, 4015, 8, 134, 1, 134, 3, 134, 4018, 8, 134, 3, 134, 4020, 8, 134, 1, 134, 1, 134, 3, 134, 4024, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 4033, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 4043, 8, 136, 1, 137, 1, 137, 5, 137, 4047, 8, 137, 10, 137, 12, 137, 4050, 9, 137, 1, 137, 1, 137, 3, 137, 4054, 8, 137, 1, 137, 1, 137, 3, 137, 4058, 8, 137, 1, 137, 3, 137, 4061, 8, 137, 1, 137, 3, 137, 4064, 8, 137, 1, 137, 3, 137, 4067, 8, 137, 1, 137, 3, 137, 4070, 8, 137, 1, 137, 3, 137, 4073, 8, 137, 1, 138, 1, 138, 3, 138, 4077, 8, 138, 1, 138, 1, 138, 3, 138, 4081, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 4089, 8, 139, 1, 139, 1, 139, 3, 139, 4093, 8, 139, 1, 139, 3, 139, 4096, 8, 139, 3, 139, 4098, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 4111, 8, 140, 1, 140, 3, 140, 4114, 8, 140, 1, 141, 1, 141, 1, 141, 5, 141, 4119, 8, 141, 10, 141, 12, 141, 4122, 9, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4131, 8, 142, 1, 142, 3, 142, 4134, 8, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4139, 8, 142, 3, 142, 4141, 8, 142, 1, 142, 1, 142, 3, 142, 4145, 8, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4153, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 4159, 8, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 4168, 8, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4181, 8, 145, 1, 146, 1, 146, 3, 146, 4185, 8, 146, 1, 146, 1, 146, 5, 146, 4189, 8, 146, 10, 146, 12, 146, 4192, 9, 146, 1, 147, 1, 147, 3, 147, 4196, 8, 147, 1, 147, 1, 147, 3, 147, 4200, 8, 147, 1, 147, 3, 147, 4203, 8, 147, 1, 147, 1, 147, 3, 147, 4207, 8, 147, 1, 147, 3, 147, 4210, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 4218, 8, 147, 1, 147, 3, 147, 4221, 8, 147, 3, 147, 4223, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 4229, 8, 148, 10, 148, 12, 148, 4232, 9, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 4243, 8, 148, 1, 148, 1, 148, 4, 148, 4247, 8, 148, 11, 148, 12, 148, 4248, 3, 148, 4251, 8, 148, 1, 148, 1, 148, 4, 148, 4255, 8, 148, 11, 148, 12, 148, 4256, 3, 148, 4259, 8, 148, 3, 148, 4261, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 4267, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 4275, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 4283, 8, 150, 1, 151, 1, 151, 3, 151, 4287, 8, 151, 1, 151, 1, 151, 3, 151, 4291, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 4298, 8, 152, 10, 152, 12, 152, 4301, 9, 152, 1, 152, 1, 152, 3, 152, 4305, 8, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 4323, 8, 154, 10, 154, 12, 154, 4326, 9, 154, 1, 155, 1, 155, 3, 155, 4330, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 4336, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 4343, 8, 156, 1, 157, 1, 157, 1, 157, 3, 157, 4348, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 4355, 8, 158, 10, 158, 12, 158, 4358, 9, 158, 3, 158, 4360, 8, 158, 1, 159, 1, 159, 3, 159, 4364, 8, 159, 1, 160, 1, 160, 3, 160, 4368, 8, 160, 1, 160, 1, 160, 3, 160, 4372, 8, 160, 1, 160, 3, 160, 4375, 8, 160, 1, 160, 3, 160, 4378, 8, 160, 1, 160, 3, 160, 4381, 8, 160, 1, 161, 1, 161, 3, 161, 4385, 8, 161, 1, 161, 1, 161, 3, 161, 4389, 8, 161, 1, 161, 3, 161, 4392, 8, 161, 1, 161, 3, 161, 4395, 8, 161, 1, 161, 3, 161, 4398, 8, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 3, 163, 4405, 8, 163, 1, 163, 1, 163, 3, 163, 4409, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 5, 165, 4422, 8, 165, 10, 165, 12, 165, 4425, 9, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, 4437, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 4443, 8, 168, 10, 168, 12, 168, 4446, 9, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 4455, 8, 169, 1, 170, 1, 170, 3, 170, 4459, 8, 170, 1, 170, 3, 170, 4462, 8, 170, 1, 170, 1, 170, 1, 171, 1, 171, 3, 171, 4468, 8, 171, 1, 171, 3, 171, 4471, 8, 171, 1, 171, 3, 171, 4474, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4483, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4492, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4500, 8, 174, 10, 174, 12, 174, 4503, 9, 174, 1, 174, 3, 174, 4506, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4514, 8, 175, 10, 175, 12, 175, 4517, 9, 175, 1, 175, 3, 175, 4520, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4529, 8, 176, 10, 176, 12, 176, 4532, 9, 176, 1, 176, 3, 176, 4535, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4544, 8, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 5, 178, 4551, 8, 178, 10, 178, 12, 178, 4554, 9, 178, 3, 178, 4556, 8, 178, 1, 178, 1, 178, 3, 178, 4560, 8, 178, 1, 178, 5, 178, 4563, 8, 178, 10, 178, 12, 178, 4566, 9, 178, 1, 178, 3, 178, 4569, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 4576, 8, 179, 10, 179, 12, 179, 4579, 9, 179, 3, 179, 4581, 8, 179, 1, 179, 3, 179, 4584, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4591, 8, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4597, 8, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4603, 8, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4627, 8, 182, 10, 182, 12, 182, 4630, 9, 182, 3, 182, 4632, 8, 182, 1, 182, 3, 182, 4635, 8, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 4654, 8, 186, 3, 186, 4656, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 5, 187, 4677, 8, 187, 10, 187, 12, 187, 4680, 9, 187, 3, 187, 4682, 8, 187, 1, 187, 3, 187, 4685, 8, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4704, 8, 191, 3, 191, 4706, 8, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 4718, 8, 193, 10, 193, 12, 193, 4721, 9, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 4731, 8, 193, 10, 193, 12, 193, 4734, 9, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 4768, 8, 193, 10, 193, 12, 193, 4771, 9, 193, 1, 193, 1, 193, 3, 193, 4775, 8, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4810, 8, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4824, 8, 197, 1, 198, 1, 198, 1, 198, 5, 198, 4829, 8, 198, 10, 198, 12, 198, 4832, 9, 198, 1, 198, 3, 198, 4835, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4841, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 4849, 8, 200, 3, 200, 4851, 8, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4862, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 4872, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 4879, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4885, 8, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 3, 208, 4893, 8, 208, 1, 209, 1, 209, 1, 209, 3, 209, 4898, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4904, 8, 209, 10, 209, 12, 209, 4907, 9, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4912, 8, 209, 10, 209, 12, 209, 4915, 9, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4920, 8, 209, 10, 209, 12, 209, 4923, 9, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4928, 8, 209, 10, 209, 12, 209, 4931, 9, 209, 1, 209, 5, 209, 4934, 8, 209, 10, 209, 12, 209, 4937, 9, 209, 1, 209, 1, 209, 3, 209, 4941, 8, 209, 1, 210, 1, 210, 1, 210, 3, 210, 4946, 8, 210, 1, 210, 4, 210, 4949, 8, 210, 11, 210, 12, 210, 4950, 1, 210, 1, 210, 4, 210, 4955, 8, 210, 11, 210, 12, 210, 4956, 3, 210, 4959, 8, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 4, 211, 4968, 8, 211, 11, 211, 12, 211, 4969, 1, 211, 5, 211, 4973, 8, 211, 10, 211, 12, 211, 4976, 9, 211, 1, 211, 1, 211, 4, 211, 4980, 8, 211, 11, 211, 12, 211, 4981, 3, 211, 4984, 8, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 3, 214, 4998, 8, 214, 1, 214, 1, 214, 4, 214, 5002, 8, 214, 11, 214, 12, 214, 5003, 1, 214, 1, 214, 1, 214, 3, 214, 5009, 8, 214, 1, 215, 1, 215, 1, 215, 3, 215, 5014, 8, 215, 1, 215, 1, 215, 4, 215, 5018, 8, 215, 11, 215, 12, 215, 5019, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 5027, 8, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 3, 217, 5035, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 4, 217, 5041, 8, 217, 11, 217, 12, 217, 5042, 1, 217, 1, 217, 1, 217, 3, 217, 5048, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5054, 8, 218, 1, 218, 3, 218, 5057, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5065, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 5072, 8, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 5081, 8, 220, 1, 220, 3, 220, 5084, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 5099, 8, 222, 10, 222, 12, 222, 5102, 9, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 3, 223, 5109, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5117, 8, 223, 1, 224, 1, 224, 3, 224, 5121, 8, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 3, 225, 5128, 8, 225, 1, 225, 1, 225, 4, 225, 5132, 8, 225, 11, 225, 12, 225, 5133, 1, 226, 1, 226, 1, 226, 1, 226, 4, 226, 5140, 8, 226, 11, 226, 12, 226, 5141, 1, 227, 1, 227, 1, 227, 3, 227, 5147, 8, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5152, 8, 227, 10, 227, 12, 227, 5155, 9, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5160, 8, 227, 10, 227, 12, 227, 5163, 9, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5169, 8, 227, 1, 227, 5, 227, 5172, 8, 227, 10, 227, 12, 227, 5175, 9, 227, 3, 227, 5177, 8, 227, 3, 227, 5179, 8, 227, 1, 227, 1, 227, 4, 227, 5183, 8, 227, 11, 227, 12, 227, 5184, 3, 227, 5187, 8, 227, 1, 227, 1, 227, 5, 227, 5191, 8, 227, 10, 227, 12, 227, 5194, 9, 227, 1, 227, 1, 227, 3, 227, 5198, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5205, 8, 227, 1, 228, 1, 228, 1, 228, 3, 228, 5210, 8, 228, 1, 228, 1, 228, 3, 228, 5214, 8, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5219, 8, 228, 5, 228, 5221, 8, 228, 10, 228, 12, 228, 5224, 9, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5229, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5235, 8, 228, 1, 228, 5, 228, 5238, 8, 228, 10, 228, 12, 228, 5241, 9, 228, 3, 228, 5243, 8, 228, 3, 228, 5245, 8, 228, 1, 228, 1, 228, 4, 228, 5249, 8, 228, 11, 228, 12, 228, 5250, 3, 228, 5253, 8, 228, 1, 228, 1, 228, 5, 228, 5257, 8, 228, 10, 228, 12, 228, 5260, 9, 228, 1, 228, 1, 228, 3, 228, 5264, 8, 228, 1, 229, 1, 229, 1, 229, 3, 229, 5269, 8, 229, 1, 229, 1, 229, 1, 229, 5, 229, 5274, 8, 229, 10, 229, 12, 229, 5277, 9, 229, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5283, 8, 230, 10, 230, 12, 230, 5286, 9, 230, 1, 230, 1, 230, 3, 230, 5290, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5297, 8, 230, 10, 230, 12, 230, 5300, 9, 230, 1, 230, 3, 230, 5303, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5309, 8, 230, 1, 230, 5, 230, 5312, 8, 230, 10, 230, 12, 230, 5315, 9, 230, 3, 230, 5317, 8, 230, 3, 230, 5319, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5325, 8, 230, 10, 230, 12, 230, 5328, 9, 230, 3, 230, 5330, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5337, 8, 230, 3, 230, 5339, 8, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5344, 8, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5349, 8, 230, 10, 230, 12, 230, 5352, 9, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5358, 8, 230, 10, 230, 12, 230, 5361, 9, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5366, 8, 230, 3, 230, 5368, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5375, 8, 231, 1, 231, 3, 231, 5378, 8, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 5, 232, 5388, 8, 232, 10, 232, 12, 232, 5391, 9, 232, 1, 232, 1, 232, 1, 232, 3, 232, 5396, 8, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5404, 8, 233, 1, 233, 3, 233, 5407, 8, 233, 1, 233, 1, 233, 3, 233, 5411, 8, 233, 1, 233, 3, 233, 5414, 8, 233, 1, 233, 1, 233, 3, 233, 5418, 8, 233, 3, 233, 5420, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5431, 8, 234, 1, 234, 3, 234, 5434, 8, 234, 1, 234, 1, 234, 3, 234, 5438, 8, 234, 1, 234, 3, 234, 5441, 8, 234, 1, 234, 3, 234, 5444, 8, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 3, 235, 5451, 8, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 5461, 8, 236, 10, 236, 12, 236, 5464, 9, 236, 3, 236, 5466, 8, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 5473, 8, 237, 1, 237, 1, 237, 5, 237, 5477, 8, 237, 10, 237, 12, 237, 5480, 9, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 5, 238, 5487, 8, 238, 10, 238, 12, 238, 5490, 9, 238, 1, 239, 1, 239, 3, 239, 5494, 8, 239, 1, 239, 1, 239, 1, 239, 5, 239, 5499, 8, 239, 10, 239, 12, 239, 5502, 9, 239, 1, 239, 1, 239, 3, 239, 5506, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 5512, 8, 239, 1, 239, 1, 239, 3, 239, 5516, 8, 239, 1, 239, 1, 239, 3, 239, 5520, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 5528, 8, 239, 1, 239, 1, 239, 3, 239, 5532, 8, 239, 1, 239, 1, 239, 3, 239, 5536, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 5542, 8, 239, 3, 239, 5544, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5556, 8, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5561, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5567, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5573, 8, 242, 1, 242, 1, 242, 3, 242, 5577, 8, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5582, 8, 242, 3, 242, 5584, 8, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 3, 244, 5608, 8, 244, 4, 244, 5610, 8, 244, 11, 244, 12, 244, 5611, 1, 244, 3, 244, 5615, 8, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5624, 8, 245, 1, 245, 1, 245, 3, 245, 5628, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5637, 8, 245, 1, 245, 1, 245, 3, 245, 5641, 8, 245, 1, 245, 1, 245, 3, 245, 5645, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5651, 8, 245, 3, 245, 5653, 8, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5662, 8, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5672, 8, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5699, 8, 247, 1, 248, 1, 248, 3, 248, 5703, 8, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5708, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5715, 8, 249, 1, 249, 3, 249, 5718, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5724, 8, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 3, 250, 5734, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5744, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5754, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5760, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5769, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5775, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5782, 8, 252, 3, 252, 5784, 8, 252, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 3, 254, 5792, 8, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254, 5798, 8, 254, 1, 254, 1, 254, 3, 254, 5802, 8, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5819, 8, 255, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 5829, 8, 257, 1, 258, 1, 258, 3, 258, 5833, 8, 258, 1, 258, 1, 258, 3, 258, 5837, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5847, 8, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5852, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5924, 8, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 5942, 8, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 3, 261, 5950, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5956, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5968, 8, 261, 1, 261, 1, 261, 3, 261, 5972, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5983, 8, 261, 1, 261, 1, 261, 3, 261, 5987, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5996, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 6002, 8, 262, 10, 262, 12, 262, 6005, 9, 262, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 6011, 8, 263, 1, 264, 1, 264, 3, 264, 6015, 8, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 3, 265, 6022, 8, 265, 1, 265, 1, 265, 1, 265, 3, 265, 6027, 8, 265, 1, 265, 3, 265, 6030, 8, 265, 1, 265, 3, 265, 6033, 8, 265, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 6044, 8, 267, 1, 268, 1, 268, 3, 268, 6048, 8, 268, 1, 268, 1, 268, 3, 268, 6052, 8, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 5, 269, 6065, 8, 269, 10, 269, 12, 269, 6068, 9, 269, 1, 269, 1, 269, 1, 269, 1, 269, 5, 269, 6074, 8, 269, 10, 269, 12, 269, 6077, 9, 269, 3, 269, 6079, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 6091, 8, 271, 10, 271, 12, 271, 6094, 9, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 6111, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 6124, 8, 274, 1, 274, 3, 274, 6127, 8, 274, 1, 274, 1, 274, 3, 274, 6131, 8, 274, 1, 274, 3, 274, 6134, 8, 274, 3, 274, 6136, 8, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6143, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6150, 8, 275, 5, 275, 6152, 8, 275, 10, 275, 12, 275, 6155, 9, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6161, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6168, 8, 275, 1, 275, 3, 275, 6171, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 5, 275, 6185, 8, 275, 10, 275, 12, 275, 6188, 9, 275, 3, 275, 6190, 8, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6200, 8, 276, 1, 276, 1, 276, 3, 276, 6204, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6210, 8, 276, 1, 276, 3, 276, 6213, 8, 276, 1, 276, 3, 276, 6216, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6221, 8, 276, 1, 276, 1, 276, 3, 276, 6225, 8, 276, 1, 276, 3, 276, 6228, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6235, 8, 276, 1, 276, 3, 276, 6238, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6244, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6280, 8, 276, 1, 276, 3, 276, 6283, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6295, 8, 276, 1, 276, 3, 276, 6298, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6314, 8, 276, 3, 276, 6316, 8, 276, 1, 276, 1, 276, 3, 276, 6320, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6327, 8, 276, 1, 276, 1, 276, 3, 276, 6331, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6338, 8, 276, 1, 276, 3, 276, 6341, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 6348, 8, 276, 10, 276, 12, 276, 6351, 9, 276, 3, 276, 6353, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6358, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6364, 8, 276, 3, 276, 6366, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6372, 8, 276, 1, 276, 1, 276, 3, 276, 6376, 8, 276, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6382, 8, 277, 1, 277, 3, 277, 6385, 8, 277, 1, 277, 3, 277, 6388, 8, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6401, 8, 278, 1, 278, 3, 278, 6404, 8, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6410, 8, 279, 1, 280, 3, 280, 6413, 8, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 6421, 8, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 6429, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 6435, 8, 281, 1, 281, 3, 281, 6438, 8, 281, 1, 281, 1, 281, 3, 281, 6442, 8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 6456, 8, 282, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 5, 284, 6466, 8, 284, 10, 284, 12, 284, 6469, 9, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6476, 8, 284, 1, 284, 1, 284, 3, 284, 6480, 8, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 3, 285, 6487, 8, 285, 1, 285, 1, 285, 1, 285, 5, 285, 6492, 8, 285, 10, 285, 12, 285, 6495, 9, 285, 1, 286, 1, 286, 3, 286, 6499, 8, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 5, 287, 6510, 8, 287, 10, 287, 12, 287, 6513, 9, 287, 1, 288, 1, 288, 1, 288, 1, 288, 5, 288, 6519, 8, 288, 10, 288, 12, 288, 6522, 9, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6529, 8, 289, 1, 290, 1, 290, 1, 290, 3, 290, 6534, 8, 290, 1, 290, 3, 290, 6537, 8, 290, 1, 291, 1, 291, 1, 291, 3, 291, 6542, 8, 291, 1, 291, 3, 291, 6545, 8, 291, 1, 292, 1, 292, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6557, 8, 294, 1, 295, 1, 295, 1, 295, 3, 295, 6562, 8, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 3, 295, 6575, 8, 295, 3, 295, 6577, 8, 295, 1, 295, 1, 295, 1, 295, 3, 295, 6582, 8, 295, 1, 295, 1, 295, 3, 295, 6586, 8, 295, 1, 295, 3, 295, 6589, 8, 295, 3, 295, 6591, 8, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 3, 296, 6598, 8, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6605, 8, 297, 1, 297, 3, 297, 6608, 8, 297, 1, 297, 3, 297, 6611, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6617, 8, 297, 1, 297, 1, 297, 3, 297, 6621, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6627, 8, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 6635, 8, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 6644, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6657, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6662, 8, 303, 1, 303, 1, 303, 1, 303, 1, 303, 5, 303, 6668, 8, 303, 10, 303, 12, 303, 6671, 9, 303, 3, 303, 6673, 8, 303, 1, 304, 1, 304, 1, 304, 3, 304, 6678, 8, 304, 1, 304, 1, 304, 1, 304, 3, 304, 6683, 8, 304, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6689, 8, 304, 10, 304, 12, 304, 6692, 9, 304, 3, 304, 6694, 8, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305, 6702, 8, 305, 1, 306, 1, 306, 3, 306, 6706, 8, 306, 1, 306, 1, 306, 1, 306, 5, 306, 6711, 8, 306, 10, 306, 12, 306, 6714, 9, 306, 1, 307, 1, 307, 1, 307, 3, 307, 6719, 8, 307, 1, 307, 3, 307, 6722, 8, 307, 1, 308, 1, 308, 3, 308, 6726, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 5, 308, 6737, 8, 308, 10, 308, 12, 308, 6740, 9, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6745, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 5, 308, 6755, 8, 308, 10, 308, 12, 308, 6758, 9, 308, 3, 308, 6760, 8, 308, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 3, 310, 6769, 8, 310, 1, 310, 1, 310, 1, 310, 3, 310, 6774, 8, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 5, 318, 6793, 8, 318, 10, 318, 12, 318, 6796, 9, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 5, 323, 6809, 8, 323, 10, 323, 12, 323, 6812, 9, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 5, 325, 6819, 8, 325, 10, 325, 12, 325, 6822, 9, 325, 1, 326, 1, 326, 3, 326, 6826, 8, 326, 1, 327, 1, 327, 1, 327, 3, 327, 6831, 8, 327, 3, 327, 6833, 8, 327, 1, 327, 3, 327, 6836, 8, 327, 1, 327, 1, 327, 3, 327, 6840, 8, 327, 3, 327, 6842, 8, 327, 1, 328, 1, 328, 1, 328, 5, 328, 6847, 8, 328, 10, 328, 12, 328, 6850, 9, 328, 1, 329, 1, 329, 1, 329, 3, 329, 6855, 8, 329, 3, 329, 6857, 8, 329, 1, 329, 3, 329, 6860, 8, 329, 1, 329, 1, 329, 3, 329, 6864, 8, 329, 1, 329, 3, 329, 6867, 8, 329, 1, 330, 1, 330, 1, 331, 1, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 5, 333, 6878, 8, 333, 10, 333, 12, 333, 6881, 9, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 3, 335, 6890, 8, 335, 1, 335, 3, 335, 6893, 8, 335, 1, 335, 3, 335, 6896, 8, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 6909, 8, 338, 1, 339, 1, 339, 1, 340, 1, 340, 3, 340, 6915, 8, 340, 1, 340, 3, 340, 6918, 8, 340, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 6926, 8, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 3, 344, 6933, 8, 344, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 4, 346, 6951, 8, 346, 11, 346, 12, 346, 6952, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 3, 347, 6960, 8, 347, 3, 347, 6962, 8, 347, 1, 348, 1, 348, 1, 348, 4, 348, 6967, 8, 348, 11, 348, 12, 348, 6968, 3, 348, 6971, 8, 348, 1, 349, 1, 349, 3, 349, 6975, 8, 349, 1, 350, 1, 350, 1, 350, 5, 350, 6980, 8, 350, 10, 350, 12, 350, 6983, 9, 350, 1, 351, 1, 351, 1, 351, 3, 351, 6988, 8, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 3, 352, 6999, 8, 352, 1, 353, 1, 353, 1, 353, 1, 353, 3, 353, 7005, 8, 353, 1, 354, 1, 354, 1, 355, 1, 355, 3, 355, 7011, 8, 355, 1, 356, 3, 356, 7014, 8, 356, 1, 356, 1, 356, 3, 356, 7018, 8, 356, 1, 356, 4, 356, 7021, 8, 356, 11, 356, 12, 356, 7022, 1, 356, 3, 356, 7026, 8, 356, 1, 356, 1, 356, 3, 356, 7030, 8, 356, 1, 356, 1, 356, 3, 356, 7034, 8, 356, 3, 356, 7036, 8, 356, 1, 357, 1, 357, 1, 358, 3, 358, 7041, 8, 358, 1, 358, 1, 358, 1, 359, 3, 359, 7046, 8, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 7059, 8, 360, 1, 360, 3, 360, 7062, 8, 360, 1, 361, 1, 361, 3, 361, 7066, 8, 361, 1, 361, 3, 361, 7069, 8, 361, 1, 361, 3, 361, 7072, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7077, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7082, 8, 361, 1, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7088, 8, 361, 1, 361, 3, 361, 7091, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7096, 8, 361, 1, 361, 3, 361, 7099, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7104, 8, 361, 1, 361, 3, 361, 7107, 8, 361, 1, 361, 1, 361, 3, 361, 7111, 8, 361, 1, 361, 5, 361, 7114, 8, 361, 10, 361, 12, 361, 7117, 9, 361, 1, 361, 1, 361, 3, 361, 7121, 8, 361, 1, 361, 5, 361, 7124, 8, 361, 10, 361, 12, 361, 7127, 9, 361, 1, 361, 1, 361, 3, 361, 7131, 8, 361, 1, 361, 3, 361, 7134, 8, 361, 1, 361, 5, 361, 7137, 8, 361, 10, 361, 12, 361, 7140, 9, 361, 1, 361, 1, 361, 3, 361, 7144, 8, 361, 1, 361, 5, 361, 7147, 8, 361, 10, 361, 12, 361, 7150, 9, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7155, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7160, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7165, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7170, 8, 361, 1, 361, 1, 361, 3, 361, 7174, 8, 361, 1, 361, 3, 361, 7177, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7182, 8, 361, 1, 361, 1, 361, 3, 361, 7186, 8, 361, 1, 361, 1, 361, 3, 361, 7190, 8, 361, 1, 362, 1, 362, 1, 362, 1, 362, 5, 362, 7196, 8, 362, 10, 362, 12, 362, 7199, 9, 362, 1, 362, 1, 362, 1, 363, 1, 363, 3, 363, 7205, 8, 363, 1, 363, 1, 363, 3, 363, 7209, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7214, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7219, 8, 363, 1, 363, 1, 363, 3, 363, 7223, 8, 363, 3, 363, 7225, 8, 363, 1, 363, 3, 363, 7228, 8, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7244, 8, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 5, 367, 7252, 8, 367, 10, 367, 12, 367, 7255, 9, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7262, 8, 368, 10, 368, 12, 368, 7265, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 5, 369, 7271, 8, 369, 10, 369, 12, 369, 7274, 9, 369, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7280, 8, 370, 10, 370, 12, 370, 7283, 9, 370, 1, 370, 1, 370, 1, 371, 1, 371, 3, 371, 7289, 8, 371, 1, 372, 1, 372, 1, 372, 5, 372, 7294, 8, 372, 10, 372, 12, 372, 7297, 9, 372, 1, 373, 1, 373, 1, 373, 5, 373, 7302, 8, 373, 10, 373, 12, 373, 7305, 9, 373, 1, 374, 1, 374, 1, 374, 5, 374, 7310, 8, 374, 10, 374, 12, 374, 7313, 9, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7324, 8, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7331, 8, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7341, 8, 375, 1, 376, 1, 376, 1, 376, 3, 376, 7346, 8, 376, 1, 376, 3, 376, 7349, 8, 376, 1, 376, 1, 376, 1, 376, 3, 376, 7354, 8, 376, 1, 376, 3, 376, 7357, 8, 376, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 3, 380, 7379, 8, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 3, 380, 7388, 8, 380, 1, 380, 3, 380, 7391, 8, 380, 1, 381, 1, 381, 1, 381, 3, 381, 7396, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 4, 381, 7427, 8, 381, 11, 381, 12, 381, 7428, 1, 381, 1, 381, 3, 381, 7433, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 4, 381, 7440, 8, 381, 11, 381, 12, 381, 7441, 1, 381, 1, 381, 3, 381, 7446, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7455, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7463, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7468, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7476, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7481, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7486, 8, 381, 3, 381, 7488, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7497, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7502, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7510, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7515, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7523, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7531, 8, 381, 1, 381, 3, 381, 7534, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7544, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7562, 8, 381, 1, 381, 3, 381, 7565, 8, 381, 1, 381, 3, 381, 7568, 8, 381, 1, 381, 1, 381, 3, 381, 7572, 8, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 5, 383, 7583, 8, 383, 10, 383, 12, 383, 7586, 9, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7593, 8, 383, 1, 384, 1, 384, 3, 384, 7597, 8, 384, 1, 385, 1, 385, 1, 385, 3, 385, 7602, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7607, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7613, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7618, 8, 385, 1, 385, 1, 385, 3, 385, 7622, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7627, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7632, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7637, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 5, 385, 7645, 8, 385, 10, 385, 12, 385, 7648, 9, 385, 3, 385, 7650, 8, 385, 1, 385, 1, 385, 3, 385, 7654, 8, 385, 1, 385, 1, 385, 3, 385, 7658, 8, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 3, 386, 7665, 8, 386, 1, 386, 1, 386, 3, 386, 7669, 8, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 3, 386, 7698, 8, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7706, 8, 387, 1, 388, 3, 388, 7709, 8, 388, 1, 388, 3, 388, 7712, 8, 388, 1, 388, 3, 388, 7715, 8, 388, 1, 388, 3, 388, 7718, 8, 388, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 392, 1, 392, 3, 392, 7729, 8, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 3, 394, 7743, 8, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 5, 395, 7750, 8, 395, 10, 395, 12, 395, 7753, 9, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 3, 396, 7779, 8, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 5, 398, 7789, 8, 398, 10, 398, 12, 398, 7792, 9, 398, 1, 399, 1, 399, 1, 399, 3, 399, 7797, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7805, 8, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7810, 8, 400, 1, 400, 1, 400, 1, 400, 1, 400, 5, 400, 7816, 8, 400, 10, 400, 12, 400, 7819, 9, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7826, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7839, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7845, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7851, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7866, 8, 401, 1, 401, 1, 401, 3, 401, 7870, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7876, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 5, 401, 7885, 8, 401, 10, 401, 12, 401, 7888, 9, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 5, 402, 7906, 8, 402, 10, 402, 12, 402, 7909, 9, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 4, 402, 7918, 8, 402, 11, 402, 12, 402, 7919, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7938, 8, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 5, 402, 7955, 8, 402, 10, 402, 12, 402, 7958, 9, 402, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 3, 404, 7970, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 3, 405, 7979, 8, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 3, 406, 7988, 8, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7997, 8, 407, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 8006, 8, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 0, 5, 208, 210, 800, 802, 804, 417, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 0, 160, 2, 0, 39, 39, 152, 152, 2, 0, 508, 508, 514, 514, 3, 0, 69, 69, 161, 161, 182, 182, 3, 0, 42, 42, 357, 357, 430, 430, 4, 0, 42, 42, 389, 389, 505, 505, 595, 595, 2, 0, 494, 494, 882, 882, 2, 0, 79, 79, 143, 143, 2, 0, 16, 16, 306, 306, 3, 0, 44, 44, 86, 86, 185, 185, 2, 0, 406, 406, 538, 538, 3, 0, 486, 486, 661, 661, 670, 670, 2, 0, 364, 364, 436, 436, 2, 0, 325, 325, 450, 450, 2, 0, 42, 42, 871, 872, 2, 0, 37, 37, 678, 678, 2, 0, 323, 323, 418, 418, 2, 0, 435, 435, 686, 686, 3, 0, 80, 80, 85, 85, 126, 126, 2, 0, 82, 82, 92, 92, 2, 0, 69, 69, 161, 161, 3, 0, 42, 42, 374, 374, 403, 403, 3, 0, 42, 42, 370, 370, 802, 802, 2, 0, 648, 648, 685, 685, 3, 0, 408, 408, 526, 526, 597, 597, 2, 0, 329, 329, 522, 522, 1, 0, 871, 872, 2, 0, 882, 882, 889, 889, 2, 0, 82, 82, 360, 360, 2, 0, 523, 523, 882, 882, 2, 0, 524, 524, 882, 882, 3, 0, 402, 402, 445, 445, 502, 502, 7, 0, 42, 42, 342, 342, 345, 345, 374, 374, 403, 403, 554, 554, 889, 889, 2, 0, 494, 494, 506, 506, 1, 0, 872, 873, 2, 0, 6, 6, 51, 51, 2, 0, 5, 5, 81, 81, 2, 0, 27, 27, 31, 31, 4, 0, 42, 42, 357, 357, 430, 430, 434, 434, 2, 0, 368, 368, 375, 375, 2, 0, 369, 369, 425, 425, 2, 0, 13, 13, 176, 176, 2, 0, 194, 194, 690, 690, 2, 0, 22, 22, 146, 146, 3, 0, 43, 43, 76, 76, 107, 107, 2, 0, 7, 7, 49, 49, 2, 0, 107, 107, 347, 347, 2, 0, 337, 337, 398, 398, 2, 0, 102, 102, 587, 587, 2, 0, 43, 43, 107, 107, 3, 0, 59, 59, 181, 181, 828, 828, 2, 0, 185, 185, 594, 594, 2, 0, 159, 159, 503, 503, 4, 0, 402, 402, 445, 445, 501, 501, 542, 542, 2, 0, 402, 402, 501, 501, 2, 0, 14, 14, 45, 45, 3, 0, 66, 66, 79, 79, 187, 187, 2, 0, 35, 35, 84, 84, 2, 0, 98, 98, 150, 150, 2, 0, 7, 7, 49, 50, 1, 0, 637, 638, 2, 0, 173, 173, 752, 752, 2, 0, 413, 413, 593, 593, 2, 0, 228, 228, 453, 453, 2, 0, 563, 563, 598, 598, 8, 0, 108, 108, 455, 455, 459, 460, 462, 462, 464, 464, 467, 476, 499, 499, 557, 557, 6, 0, 456, 458, 461, 461, 463, 463, 465, 465, 477, 477, 558, 558, 7, 0, 109, 109, 411, 411, 416, 416, 454, 454, 466, 466, 573, 573, 617, 617, 2, 0, 116, 116, 882, 882, 2, 0, 118, 119, 507, 507, 7, 0, 499, 499, 557, 557, 606, 609, 611, 611, 619, 619, 622, 628, 630, 632, 6, 0, 558, 558, 610, 610, 612, 612, 614, 616, 618, 618, 620, 620, 7, 0, 412, 412, 416, 416, 573, 573, 613, 613, 617, 617, 621, 621, 629, 629, 3, 0, 70, 70, 118, 119, 507, 507, 2, 0, 438, 438, 639, 639, 2, 0, 633, 633, 635, 635, 2, 0, 317, 317, 640, 640, 2, 0, 91, 91, 577, 577, 2, 0, 51, 51, 362, 362, 3, 0, 32, 32, 61, 61, 180, 180, 2, 0, 15, 15, 340, 340, 2, 0, 678, 678, 835, 835, 3, 0, 132, 132, 173, 173, 409, 409, 3, 0, 6, 6, 51, 51, 492, 492, 3, 0, 13, 13, 20, 20, 188, 188, 2, 0, 42, 42, 122, 122, 2, 0, 104, 104, 183, 183, 1, 0, 873, 874, 2, 0, 333, 333, 598, 598, 2, 0, 40, 40, 684, 684, 2, 0, 392, 392, 549, 549, 2, 0, 115, 115, 450, 450, 4, 0, 208, 208, 210, 210, 216, 216, 649, 649, 3, 0, 413, 413, 531, 531, 893, 894, 2, 0, 841, 841, 857, 857, 2, 0, 318, 318, 559, 559, 2, 0, 68, 68, 80, 80, 3, 0, 132, 132, 178, 178, 385, 385, 2, 0, 493, 493, 645, 645, 2, 0, 383, 383, 688, 688, 3, 0, 82, 82, 93, 93, 426, 426, 4, 0, 413, 413, 450, 450, 531, 532, 593, 593, 2, 0, 645, 645, 683, 683, 2, 0, 349, 349, 548, 548, 6, 0, 228, 228, 380, 380, 382, 382, 410, 410, 556, 556, 599, 599, 2, 0, 45, 46, 62, 62, 3, 0, 442, 442, 663, 663, 666, 666, 10, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 36, 36, 170, 170, 2, 0, 117, 117, 831, 831, 11, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 578, 578, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 870, 870, 891, 892, 1, 0, 892, 893, 2, 0, 348, 348, 797, 808, 3, 0, 871, 874, 883, 883, 885, 885, 2, 0, 63, 63, 179, 179, 2, 0, 116, 116, 886, 886, 5, 0, 26, 26, 224, 226, 233, 233, 235, 238, 498, 498, 2, 0, 26, 26, 224, 224, 2, 0, 26, 26, 224, 225, 1, 0, 198, 209, 3, 0, 184, 184, 197, 197, 596, 596, 2, 0, 213, 218, 403, 403, 6, 0, 219, 219, 230, 230, 232, 232, 234, 234, 241, 241, 321, 322, 4, 0, 220, 223, 228, 229, 231, 231, 319, 319, 2, 0, 155, 155, 239, 239, 2, 0, 442, 442, 813, 821, 2, 0, 228, 228, 498, 498, 5, 0, 202, 202, 208, 208, 219, 220, 222, 222, 442, 442, 1, 0, 216, 217, 2, 0, 184, 184, 596, 596, 2, 0, 202, 202, 208, 208, 2, 0, 189, 189, 682, 682, 2, 0, 287, 288, 294, 294, 3, 0, 152, 152, 285, 288, 303, 303, 1, 0, 297, 298, 3, 0, 18, 18, 96, 96, 177, 177, 2, 0, 224, 224, 228, 228, 2, 0, 219, 220, 222, 222, 3, 0, 14, 14, 45, 45, 830, 830, 3, 0, 258, 258, 270, 271, 281, 281, 3, 0, 259, 261, 277, 280, 282, 284, 2, 0, 267, 267, 269, 269, 2, 0, 265, 265, 268, 268, 2, 0, 263, 264, 274, 276, 2, 0, 134, 134, 587, 587, 2, 0, 405, 405, 539, 539, 2, 0, 512, 512, 529, 529, 2, 0, 114, 114, 860, 860, 3, 0, 63, 63, 179, 179, 674, 674, 2, 0, 139, 139, 151, 151, 3, 0, 7, 7, 309, 309, 602, 602, 3, 0, 114, 114, 853, 854, 860, 861, 1, 0, 850, 856, 2, 0, 228, 228, 756, 796, 1, 0, 809, 812, 5, 0, 717, 718, 734, 736, 743, 743, 749, 750, 752, 752, 1, 0, 696, 703, 3, 0, 219, 223, 236, 236, 239, 239, 76, 0, 12, 12, 15, 15, 19, 19, 30, 30, 36, 37, 42, 42, 48, 48, 55, 55, 57, 57, 59, 59, 74, 74, 95, 95, 117, 117, 122, 122, 125, 125, 131, 131, 160, 160, 170, 170, 241, 241, 255, 262, 266, 266, 270, 271, 277, 284, 304, 309, 311, 329, 331, 343, 345, 376, 378, 393, 395, 400, 402, 404, 406, 410, 413, 415, 417, 426, 428, 428, 430, 434, 436, 454, 456, 463, 465, 473, 475, 476, 478, 498, 500, 506, 508, 510, 512, 522, 525, 530, 533, 538, 540, 542, 544, 554, 556, 562, 565, 572, 575, 575, 577, 578, 580, 605, 633, 647, 649, 665, 667, 674, 676, 685, 687, 688, 690, 695, 704, 704, 706, 707, 709, 712, 714, 716, 719, 721, 726, 727, 729, 733, 737, 738, 740, 742, 744, 744, 746, 748, 751, 751, 753, 755, 802, 802, 822, 822, 825, 825, 832, 833, 838, 838, 24, 0, 39, 39, 98, 98, 150, 150, 152, 152, 219, 221, 223, 223, 253, 254, 262, 265, 267, 269, 272, 276, 296, 296, 435, 435, 686, 686, 696, 703, 746, 746, 813, 813, 816, 821, 823, 824, 826, 827, 829, 831, 834, 834, 836, 836, 840, 840, 856, 856, 9382, 0, 837, 1, 0, 0, 0, 2, 847, 1, 0, 0, 0, 4, 856, 1, 0, 0, 0, 6, 858, 1, 0, 0, 0, 8, 899, 1, 0, 0, 0, 10, 918, 1, 0, 0, 0, 12, 929, 1, 0, 0, 0, 14, 945, 1, 0, 0, 0, 16, 950, 1, 0, 0, 0, 18, 962, 1, 0, 0, 0, 20, 997, 1, 0, 0, 0, 22, 1007, 1, 0, 0, 0, 24, 1009, 1, 0, 0, 0, 26, 1021, 1, 0, 0, 0, 28, 1051, 1, 0, 0, 0, 30, 1087, 1, 0, 0, 0, 32, 1138, 1, 0, 0, 0, 34, 1167, 1, 0, 0, 0, 36, 1174, 1, 0, 0, 0, 38, 1271, 1, 0, 0, 0, 40, 1273, 1, 0, 0, 0, 42, 1310, 1, 0, 0, 0, 44, 1374, 1, 0, 0, 0, 46, 1396, 1, 0, 0, 0, 48, 1402, 1, 0, 0, 0, 50, 1424, 1, 0, 0, 0, 52, 1511, 1, 0, 0, 0, 54, 1518, 1, 0, 0, 0, 56, 1520, 1, 0, 0, 0, 58, 1525, 1, 0, 0, 0, 60, 1565, 1, 0, 0, 0, 62, 1571, 1, 0, 0, 0, 64, 1573, 1, 0, 0, 0, 66, 1594, 1, 0, 0, 0, 68, 1601, 1, 0, 0, 0, 70, 1603, 1, 0, 0, 0, 72, 1628, 1, 0, 0, 0, 74, 1631, 1, 0, 0, 0, 76, 1659, 1, 0, 0, 0, 78, 1675, 1, 0, 0, 0, 80, 1677, 1, 0, 0, 0, 82, 1771, 1, 0, 0, 0, 84, 1774, 1, 0, 0, 0, 86, 1786, 1, 0, 0, 0, 88, 1790, 1, 0, 0, 0, 90, 1840, 1, 0, 0, 0, 92, 1842, 1, 0, 0, 0, 94, 1870, 1, 0, 0, 0, 96, 1880, 1, 0, 0, 0, 98, 2067, 1, 0, 0, 0, 100, 2069, 1, 0, 0, 0, 102, 2071, 1, 0, 0, 0, 104, 2074, 1, 0, 0, 0, 106, 2149, 1, 0, 0, 0, 108, 2172, 1, 0, 0, 0, 110, 2320, 1, 0, 0, 0, 112, 2325, 1, 0, 0, 0, 114, 2327, 1, 0, 0, 0, 116, 2337, 1, 0, 0, 0, 118, 2393, 1, 0, 0, 0, 120, 2413, 1, 0, 0, 0, 122, 2415, 1, 0, 0, 0, 124, 2450, 1, 0, 0, 0, 126, 2459, 1, 0, 0, 0, 128, 2466, 1, 0, 0, 0, 130, 2489, 1, 0, 0, 0, 132, 2498, 1, 0, 0, 0, 134, 2513, 1, 0, 0, 0, 136, 2535, 1, 0, 0, 0, 138, 2591, 1, 0, 0, 0, 140, 2887, 1, 0, 0, 0, 142, 2987, 1, 0, 0, 0, 144, 2989, 1, 0, 0, 0, 146, 2996, 1, 0, 0, 0, 148, 3003, 1, 0, 0, 0, 150, 3026, 1, 0, 0, 0, 152, 3036, 1, 0, 0, 0, 154, 3043, 1, 0, 0, 0, 156, 3050, 1, 0, 0, 0, 158, 3057, 1, 0, 0, 0, 160, 3066, 1, 0, 0, 0, 162, 3078, 1, 0, 0, 0, 164, 3091, 1, 0, 0, 0, 166, 3098, 1, 0, 0, 0, 168, 3114, 1, 0, 0, 0, 170, 3141, 1, 0, 0, 0, 172, 3143, 1, 0, 0, 0, 174, 3153, 1, 0, 0, 0, 176, 3157, 1, 0, 0, 0, 178, 3163, 1, 0, 0, 0, 180, 3175, 1, 0, 0, 0, 182, 3177, 1, 0, 0, 0, 184, 3184, 1, 0, 0, 0, 186, 3186, 1, 0, 0, 0, 188, 3235, 1, 0, 0, 0, 190, 3244, 1, 0, 0, 0, 192, 3246, 1, 0, 0, 0, 194, 3257, 1, 0, 0, 0, 196, 3263, 1, 0, 0, 0, 198, 3337, 1, 0, 0, 0, 200, 3400, 1, 0, 0, 0, 202, 3418, 1, 0, 0, 0, 204, 3502, 1, 0, 0, 0, 206, 3505, 1, 0, 0, 0, 208, 3517, 1, 0, 0, 0, 210, 3537, 1, 0, 0, 0, 212, 3565, 1, 0, 0, 0, 214, 3569, 1, 0, 0, 0, 216, 3571, 1, 0, 0, 0, 218, 3581, 1, 0, 0, 0, 220, 3601, 1, 0, 0, 0, 222, 3608, 1, 0, 0, 0, 224, 3610, 1, 0, 0, 0, 226, 3621, 1, 0, 0, 0, 228, 3630, 1, 0, 0, 0, 230, 3636, 1, 0, 0, 0, 232, 3659, 1, 0, 0, 0, 234, 3661, 1, 0, 0, 0, 236, 3697, 1, 0, 0, 0, 238, 3752, 1, 0, 0, 0, 240, 3761, 1, 0, 0, 0, 242, 3781, 1, 0, 0, 0, 244, 3793, 1, 0, 0, 0, 246, 3797, 1, 0, 0, 0, 248, 3808, 1, 0, 0, 0, 250, 3841, 1, 0, 0, 0, 252, 3862, 1, 0, 0, 0, 254, 3872, 1, 0, 0, 0, 256, 3876, 1, 0, 0, 0, 258, 3902, 1, 0, 0, 0, 260, 3949, 1, 0, 0, 0, 262, 3951, 1, 0, 0, 0, 264, 3955, 1, 0, 0, 0, 266, 3972, 1, 0, 0, 0, 268, 4023, 1, 0, 0, 0, 270, 4032, 1, 0, 0, 0, 272, 4042, 1, 0, 0, 0, 274, 4044, 1, 0, 0, 0, 276, 4074, 1, 0, 0, 0, 278, 4082, 1, 0, 0, 0, 280, 4099, 1, 0, 0, 0, 282, 4115, 1, 0, 0, 0, 284, 4152, 1, 0, 0, 0, 286, 4158, 1, 0, 0, 0, 288, 4167, 1, 0, 0, 0, 290, 4180, 1, 0, 0, 0, 292, 4184, 1, 0, 0, 0, 294, 4222, 1, 0, 0, 0, 296, 4260, 1, 0, 0, 0, 298, 4274, 1, 0, 0, 0, 300, 4282, 1, 0, 0, 0, 302, 4286, 1, 0, 0, 0, 304, 4292, 1, 0, 0, 0, 306, 4306, 1, 0, 0, 0, 308, 4309, 1, 0, 0, 0, 310, 4327, 1, 0, 0, 0, 312, 4331, 1, 0, 0, 0, 314, 4347, 1, 0, 0, 0, 316, 4349, 1, 0, 0, 0, 318, 4361, 1, 0, 0, 0, 320, 4365, 1, 0, 0, 0, 322, 4382, 1, 0, 0, 0, 324, 4399, 1, 0, 0, 0, 326, 4402, 1, 0, 0, 0, 328, 4412, 1, 0, 0, 0, 330, 4416, 1, 0, 0, 0, 332, 4426, 1, 0, 0, 0, 334, 4429, 1, 0, 0, 0, 336, 4434, 1, 0, 0, 0, 338, 4454, 1, 0, 0, 0, 340, 4456, 1, 0, 0, 0, 342, 4473, 1, 0, 0, 0, 344, 4482, 1, 0, 0, 0, 346, 4491, 1, 0, 0, 0, 348, 4493, 1, 0, 0, 0, 350, 4507, 1, 0, 0, 0, 352, 4521, 1, 0, 0, 0, 354, 4536, 1, 0, 0, 0, 356, 4545, 1, 0, 0, 0, 358, 4570, 1, 0, 0, 0, 360, 4585, 1, 0, 0, 0, 362, 4604, 1, 0, 0, 0, 364, 4634, 1, 0, 0, 0, 366, 4636, 1, 0, 0, 0, 368, 4638, 1, 0, 0, 0, 370, 4640, 1, 0, 0, 0, 372, 4655, 1, 0, 0, 0, 374, 4684, 1, 0, 0, 0, 376, 4686, 1, 0, 0, 0, 378, 4688, 1, 0, 0, 0, 380, 4690, 1, 0, 0, 0, 382, 4705, 1, 0, 0, 0, 384, 4707, 1, 0, 0, 0, 386, 4774, 1, 0, 0, 0, 388, 4776, 1, 0, 0, 0, 390, 4782, 1, 0, 0, 0, 392, 4809, 1, 0, 0, 0, 394, 4823, 1, 0, 0, 0, 396, 4834, 1, 0, 0, 0, 398, 4836, 1, 0, 0, 0, 400, 4842, 1, 0, 0, 0, 402, 4852, 1, 0, 0, 0, 404, 4856, 1, 0, 0, 0, 406, 4863, 1, 0, 0, 0, 408, 4867, 1, 0, 0, 0, 410, 4873, 1, 0, 0, 0, 412, 4880, 1, 0, 0, 0, 414, 4886, 1, 0, 0, 0, 416, 4892, 1, 0, 0, 0, 418, 4897, 1, 0, 0, 0, 420, 4942, 1, 0, 0, 0, 422, 4963, 1, 0, 0, 0, 424, 4988, 1, 0, 0, 0, 426, 4991, 1, 0, 0, 0, 428, 4997, 1, 0, 0, 0, 430, 5013, 1, 0, 0, 0, 432, 5028, 1, 0, 0, 0, 434, 5034, 1, 0, 0, 0, 436, 5064, 1, 0, 0, 0, 438, 5066, 1, 0, 0, 0, 440, 5073, 1, 0, 0, 0, 442, 5085, 1, 0, 0, 0, 444, 5091, 1, 0, 0, 0, 446, 5116, 1, 0, 0, 0, 448, 5120, 1, 0, 0, 0, 450, 5124, 1, 0, 0, 0, 452, 5135, 1, 0, 0, 0, 454, 5143, 1, 0, 0, 0, 456, 5206, 1, 0, 0, 0, 458, 5265, 1, 0, 0, 0, 460, 5367, 1, 0, 0, 0, 462, 5377, 1, 0, 0, 0, 464, 5379, 1, 0, 0, 0, 466, 5397, 1, 0, 0, 0, 468, 5421, 1, 0, 0, 0, 470, 5445, 1, 0, 0, 0, 472, 5452, 1, 0, 0, 0, 474, 5472, 1, 0, 0, 0, 476, 5481, 1, 0, 0, 0, 478, 5543, 1, 0, 0, 0, 480, 5545, 1, 0, 0, 0, 482, 5549, 1, 0, 0, 0, 484, 5583, 1, 0, 0, 0, 486, 5585, 1, 0, 0, 0, 488, 5588, 1, 0, 0, 0, 490, 5652, 1, 0, 0, 0, 492, 5671, 1, 0, 0, 0, 494, 5698, 1, 0, 0, 0, 496, 5702, 1, 0, 0, 0, 498, 5723, 1, 0, 0, 0, 500, 5733, 1, 0, 0, 0, 502, 5743, 1, 0, 0, 0, 504, 5783, 1, 0, 0, 0, 506, 5785, 1, 0, 0, 0, 508, 5788, 1, 0, 0, 0, 510, 5818, 1, 0, 0, 0, 512, 5820, 1, 0, 0, 0, 514, 5823, 1, 0, 0, 0, 516, 5923, 1, 0, 0, 0, 518, 5941, 1, 0, 0, 0, 520, 5943, 1, 0, 0, 0, 522, 5995, 1, 0, 0, 0, 524, 5997, 1, 0, 0, 0, 526, 6006, 1, 0, 0, 0, 528, 6012, 1, 0, 0, 0, 530, 6019, 1, 0, 0, 0, 532, 6034, 1, 0, 0, 0, 534, 6043, 1, 0, 0, 0, 536, 6045, 1, 0, 0, 0, 538, 6059, 1, 0, 0, 0, 540, 6080, 1, 0, 0, 0, 542, 6085, 1, 0, 0, 0, 544, 6095, 1, 0, 0, 0, 546, 6101, 1, 0, 0, 0, 548, 6135, 1, 0, 0, 0, 550, 6189, 1, 0, 0, 0, 552, 6375, 1, 0, 0, 0, 554, 6387, 1, 0, 0, 0, 556, 6403, 1, 0, 0, 0, 558, 6409, 1, 0, 0, 0, 560, 6428, 1, 0, 0, 0, 562, 6441, 1, 0, 0, 0, 564, 6455, 1, 0, 0, 0, 566, 6457, 1, 0, 0, 0, 568, 6460, 1, 0, 0, 0, 570, 6484, 1, 0, 0, 0, 572, 6496, 1, 0, 0, 0, 574, 6502, 1, 0, 0, 0, 576, 6514, 1, 0, 0, 0, 578, 6528, 1, 0, 0, 0, 580, 6530, 1, 0, 0, 0, 582, 6538, 1, 0, 0, 0, 584, 6546, 1, 0, 0, 0, 586, 6548, 1, 0, 0, 0, 588, 6550, 1, 0, 0, 0, 590, 6590, 1, 0, 0, 0, 592, 6597, 1, 0, 0, 0, 594, 6599, 1, 0, 0, 0, 596, 6622, 1, 0, 0, 0, 598, 6628, 1, 0, 0, 0, 600, 6638, 1, 0, 0, 0, 602, 6647, 1, 0, 0, 0, 604, 6650, 1, 0, 0, 0, 606, 6653, 1, 0, 0, 0, 608, 6674, 1, 0, 0, 0, 610, 6695, 1, 0, 0, 0, 612, 6703, 1, 0, 0, 0, 614, 6715, 1, 0, 0, 0, 616, 6723, 1, 0, 0, 0, 618, 6761, 1, 0, 0, 0, 620, 6773, 1, 0, 0, 0, 622, 6775, 1, 0, 0, 0, 624, 6777, 1, 0, 0, 0, 626, 6779, 1, 0, 0, 0, 628, 6781, 1, 0, 0, 0, 630, 6783, 1, 0, 0, 0, 632, 6785, 1, 0, 0, 0, 634, 6787, 1, 0, 0, 0, 636, 6789, 1, 0, 0, 0, 638, 6797, 1, 0, 0, 0, 640, 6799, 1, 0, 0, 0, 642, 6801, 1, 0, 0, 0, 644, 6803, 1, 0, 0, 0, 646, 6805, 1, 0, 0, 0, 648, 6813, 1, 0, 0, 0, 650, 6815, 1, 0, 0, 0, 652, 6825, 1, 0, 0, 0, 654, 6841, 1, 0, 0, 0, 656, 6843, 1, 0, 0, 0, 658, 6866, 1, 0, 0, 0, 660, 6868, 1, 0, 0, 0, 662, 6870, 1, 0, 0, 0, 664, 6872, 1, 0, 0, 0, 666, 6874, 1, 0, 0, 0, 668, 6882, 1, 0, 0, 0, 670, 6892, 1, 0, 0, 0, 672, 6897, 1, 0, 0, 0, 674, 6901, 1, 0, 0, 0, 676, 6908, 1, 0, 0, 0, 678, 6910, 1, 0, 0, 0, 680, 6917, 1, 0, 0, 0, 682, 6919, 1, 0, 0, 0, 684, 6925, 1, 0, 0, 0, 686, 6927, 1, 0, 0, 0, 688, 6932, 1, 0, 0, 0, 690, 6934, 1, 0, 0, 0, 692, 6936, 1, 0, 0, 0, 694, 6954, 1, 0, 0, 0, 696, 6970, 1, 0, 0, 0, 698, 6972, 1, 0, 0, 0, 700, 6976, 1, 0, 0, 0, 702, 6987, 1, 0, 0, 0, 704, 6998, 1, 0, 0, 0, 706, 7004, 1, 0, 0, 0, 708, 7006, 1, 0, 0, 0, 710, 7010, 1, 0, 0, 0, 712, 7035, 1, 0, 0, 0, 714, 7037, 1, 0, 0, 0, 716, 7040, 1, 0, 0, 0, 718, 7045, 1, 0, 0, 0, 720, 7061, 1, 0, 0, 0, 722, 7189, 1, 0, 0, 0, 724, 7191, 1, 0, 0, 0, 726, 7224, 1, 0, 0, 0, 728, 7229, 1, 0, 0, 0, 730, 7233, 1, 0, 0, 0, 732, 7239, 1, 0, 0, 0, 734, 7247, 1, 0, 0, 0, 736, 7258, 1, 0, 0, 0, 738, 7266, 1, 0, 0, 0, 740, 7275, 1, 0, 0, 0, 742, 7288, 1, 0, 0, 0, 744, 7290, 1, 0, 0, 0, 746, 7298, 1, 0, 0, 0, 748, 7306, 1, 0, 0, 0, 750, 7340, 1, 0, 0, 0, 752, 7356, 1, 0, 0, 0, 754, 7358, 1, 0, 0, 0, 756, 7361, 1, 0, 0, 0, 758, 7365, 1, 0, 0, 0, 760, 7390, 1, 0, 0, 0, 762, 7571, 1, 0, 0, 0, 764, 7573, 1, 0, 0, 0, 766, 7592, 1, 0, 0, 0, 768, 7594, 1, 0, 0, 0, 770, 7657, 1, 0, 0, 0, 772, 7697, 1, 0, 0, 0, 774, 7699, 1, 0, 0, 0, 776, 7708, 1, 0, 0, 0, 778, 7719, 1, 0, 0, 0, 780, 7721, 1, 0, 0, 0, 782, 7724, 1, 0, 0, 0, 784, 7728, 1, 0, 0, 0, 786, 7730, 1, 0, 0, 0, 788, 7742, 1, 0, 0, 0, 790, 7744, 1, 0, 0, 0, 792, 7778, 1, 0, 0, 0, 794, 7780, 1, 0, 0, 0, 796, 7785, 1, 0, 0, 0, 798, 7796, 1, 0, 0, 0, 800, 7809, 1, 0, 0, 0, 802, 7820, 1, 0, 0, 0, 804, 7937, 1, 0, 0, 0, 806, 7959, 1, 0, 0, 0, 808, 7969, 1, 0, 0, 0, 810, 7978, 1, 0, 0, 0, 812, 7987, 1, 0, 0, 0, 814, 7996, 1, 0, 0, 0, 816, 7998, 1, 0, 0, 0, 818, 8005, 1, 0, 0, 0, 820, 8007, 1, 0, 0, 0, 822, 8009, 1, 0, 0, 0, 824, 8011, 1, 0, 0, 0, 826, 8013, 1, 0, 0, 0, 828, 8015, 1, 0, 0, 0, 830, 8017, 1, 0, 0, 0, 832, 8019, 1, 0, 0, 0, 834, 836, 3, 2, 1, 0, 835, 834, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 840, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 0, 0, 1, 841, 1, 1, 0, 0, 0, 842, 844, 3, 4, 2, 0, 843, 845, 5, 869, 0, 0, 844, 843, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 848, 3, 6, 3, 0, 847, 842, 1, 0, 0, 0, 847, 846, 1, 0, 0, 0, 848, 3, 1, 0, 0, 0, 849, 857, 3, 8, 4, 0, 850, 857, 3, 10, 5, 0, 851, 857, 3, 12, 6, 0, 852, 857, 3, 14, 7, 0, 853, 857, 3, 16, 8, 0, 854, 857, 3, 20, 10, 0, 855, 857, 3, 22, 11, 0, 856, 849, 1, 0, 0, 0, 856, 850, 1, 0, 0, 0, 856, 851, 1, 0, 0, 0, 856, 852, 1, 0, 0, 0, 856, 853, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 5, 1, 0, 0, 0, 858, 859, 5, 869, 0, 0, 859, 7, 1, 0, 0, 0, 860, 900, 3, 24, 12, 0, 861, 900, 3, 26, 13, 0, 862, 900, 3, 28, 14, 0, 863, 900, 3, 30, 15, 0, 864, 900, 3, 32, 16, 0, 865, 900, 3, 536, 268, 0, 866, 900, 3, 36, 18, 0, 867, 900, 3, 38, 19, 0, 868, 900, 3, 40, 20, 0, 869, 900, 3, 42, 21, 0, 870, 900, 3, 44, 22, 0, 871, 900, 3, 50, 25, 0, 872, 900, 3, 34, 17, 0, 873, 900, 3, 120, 60, 0, 874, 900, 3, 122, 61, 0, 875, 900, 3, 124, 62, 0, 876, 900, 3, 126, 63, 0, 877, 900, 3, 128, 64, 0, 878, 900, 3, 130, 65, 0, 879, 900, 3, 132, 66, 0, 880, 900, 3, 134, 67, 0, 881, 900, 3, 136, 68, 0, 882, 900, 3, 138, 69, 0, 883, 900, 3, 144, 72, 0, 884, 900, 3, 146, 73, 0, 885, 900, 3, 148, 74, 0, 886, 900, 3, 150, 75, 0, 887, 900, 3, 152, 76, 0, 888, 900, 3, 154, 77, 0, 889, 900, 3, 156, 78, 0, 890, 900, 3, 158, 79, 0, 891, 900, 3, 160, 80, 0, 892, 900, 3, 162, 81, 0, 893, 900, 3, 164, 82, 0, 894, 900, 3, 166, 83, 0, 895, 900, 3, 168, 84, 0, 896, 900, 3, 170, 85, 0, 897, 900, 3, 172, 86, 0, 898, 900, 3, 176, 88, 0, 899, 860, 1, 0, 0, 0, 899, 861, 1, 0, 0, 0, 899, 862, 1, 0, 0, 0, 899, 863, 1, 0, 0, 0, 899, 864, 1, 0, 0, 0, 899, 865, 1, 0, 0, 0, 899, 866, 1, 0, 0, 0, 899, 867, 1, 0, 0, 0, 899, 868, 1, 0, 0, 0, 899, 869, 1, 0, 0, 0, 899, 870, 1, 0, 0, 0, 899, 871, 1, 0, 0, 0, 899, 872, 1, 0, 0, 0, 899, 873, 1, 0, 0, 0, 899, 874, 1, 0, 0, 0, 899, 875, 1, 0, 0, 0, 899, 876, 1, 0, 0, 0, 899, 877, 1, 0, 0, 0, 899, 878, 1, 0, 0, 0, 899, 879, 1, 0, 0, 0, 899, 880, 1, 0, 0, 0, 899, 881, 1, 0, 0, 0, 899, 882, 1, 0, 0, 0, 899, 883, 1, 0, 0, 0, 899, 884, 1, 0, 0, 0, 899, 885, 1, 0, 0, 0, 899, 886, 1, 0, 0, 0, 899, 887, 1, 0, 0, 0, 899, 888, 1, 0, 0, 0, 899, 889, 1, 0, 0, 0, 899, 890, 1, 0, 0, 0, 899, 891, 1, 0, 0, 0, 899, 892, 1, 0, 0, 0, 899, 893, 1, 0, 0, 0, 899, 894, 1, 0, 0, 0, 899, 895, 1, 0, 0, 0, 899, 896, 1, 0, 0, 0, 899, 897, 1, 0, 0, 0, 899, 898, 1, 0, 0, 0, 900, 9, 1, 0, 0, 0, 901, 919, 3, 204, 102, 0, 902, 919, 3, 206, 103, 0, 903, 919, 3, 186, 93, 0, 904, 919, 3, 214, 107, 0, 905, 919, 3, 180, 90, 0, 906, 919, 3, 202, 101, 0, 907, 919, 3, 178, 89, 0, 908, 919, 3, 192, 96, 0, 909, 919, 3, 196, 98, 0, 910, 919, 3, 198, 99, 0, 911, 919, 3, 200, 100, 0, 912, 919, 3, 182, 91, 0, 913, 919, 3, 184, 92, 0, 914, 919, 3, 246, 123, 0, 915, 919, 3, 216, 108, 0, 916, 919, 3, 612, 306, 0, 917, 919, 3, 614, 307, 0, 918, 901, 1, 0, 0, 0, 918, 902, 1, 0, 0, 0, 918, 903, 1, 0, 0, 0, 918, 904, 1, 0, 0, 0, 918, 905, 1, 0, 0, 0, 918, 906, 1, 0, 0, 0, 918, 907, 1, 0, 0, 0, 918, 908, 1, 0, 0, 0, 918, 909, 1, 0, 0, 0, 918, 910, 1, 0, 0, 0, 918, 911, 1, 0, 0, 0, 918, 912, 1, 0, 0, 0, 918, 913, 1, 0, 0, 0, 918, 914, 1, 0, 0, 0, 918, 915, 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 11, 1, 0, 0, 0, 920, 930, 3, 316, 158, 0, 921, 930, 3, 318, 159, 0, 922, 930, 3, 320, 160, 0, 923, 930, 3, 322, 161, 0, 924, 930, 3, 324, 162, 0, 925, 930, 3, 326, 163, 0, 926, 930, 3, 328, 164, 0, 927, 930, 3, 330, 165, 0, 928, 930, 3, 332, 166, 0, 929, 920, 1, 0, 0, 0, 929, 921, 1, 0, 0, 0, 929, 922, 1, 0, 0, 0, 929, 923, 1, 0, 0, 0, 929, 924, 1, 0, 0, 0, 929, 925, 1, 0, 0, 0, 929, 926, 1, 0, 0, 0, 929, 927, 1, 0, 0, 0, 929, 928, 1, 0, 0, 0, 930, 13, 1, 0, 0, 0, 931, 946, 3, 348, 174, 0, 932, 946, 3, 350, 175, 0, 933, 946, 3, 352, 176, 0, 934, 946, 3, 354, 177, 0, 935, 946, 3, 356, 178, 0, 936, 946, 3, 358, 179, 0, 937, 946, 3, 360, 180, 0, 938, 946, 3, 362, 181, 0, 939, 946, 3, 398, 199, 0, 940, 946, 3, 400, 200, 0, 941, 946, 3, 402, 201, 0, 942, 946, 3, 404, 202, 0, 943, 946, 3, 406, 203, 0, 944, 946, 3, 408, 204, 0, 945, 931, 1, 0, 0, 0, 945, 932, 1, 0, 0, 0, 945, 933, 1, 0, 0, 0, 945, 934, 1, 0, 0, 0, 945, 935, 1, 0, 0, 0, 945, 936, 1, 0, 0, 0, 945, 937, 1, 0, 0, 0, 945, 938, 1, 0, 0, 0, 945, 939, 1, 0, 0, 0, 945, 940, 1, 0, 0, 0, 945, 941, 1, 0, 0, 0, 945, 942, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 15, 1, 0, 0, 0, 947, 951, 3, 410, 205, 0, 948, 951, 3, 412, 206, 0, 949, 951, 3, 414, 207, 0, 950, 947, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 949, 1, 0, 0, 0, 951, 17, 1, 0, 0, 0, 952, 963, 3, 418, 209, 0, 953, 963, 3, 420, 210, 0, 954, 963, 3, 422, 211, 0, 955, 963, 3, 426, 213, 0, 956, 963, 3, 428, 214, 0, 957, 963, 3, 430, 215, 0, 958, 963, 3, 434, 217, 0, 959, 963, 3, 424, 212, 0, 960, 963, 3, 432, 216, 0, 961, 963, 3, 436, 218, 0, 962, 952, 1, 0, 0, 0, 962, 953, 1, 0, 0, 0, 962, 954, 1, 0, 0, 0, 962, 955, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, 957, 1, 0, 0, 0, 962, 958, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 962, 961, 1, 0, 0, 0, 963, 19, 1, 0, 0, 0, 964, 998, 3, 454, 227, 0, 965, 998, 3, 456, 228, 0, 966, 998, 3, 458, 229, 0, 967, 998, 3, 460, 230, 0, 968, 998, 3, 464, 232, 0, 969, 998, 3, 476, 238, 0, 970, 998, 3, 478, 239, 0, 971, 998, 3, 466, 233, 0, 972, 998, 3, 468, 234, 0, 973, 998, 3, 470, 235, 0, 974, 998, 3, 472, 236, 0, 975, 998, 3, 522, 261, 0, 976, 998, 3, 524, 262, 0, 977, 998, 3, 526, 263, 0, 978, 998, 3, 528, 264, 0, 979, 998, 3, 530, 265, 0, 980, 998, 3, 538, 269, 0, 981, 998, 3, 542, 271, 0, 982, 998, 3, 544, 272, 0, 983, 998, 3, 546, 273, 0, 984, 998, 3, 548, 274, 0, 985, 998, 3, 550, 275, 0, 986, 998, 3, 552, 276, 0, 987, 998, 3, 566, 283, 0, 988, 998, 3, 568, 284, 0, 989, 998, 3, 570, 285, 0, 990, 998, 3, 572, 286, 0, 991, 998, 3, 574, 287, 0, 992, 998, 3, 576, 288, 0, 993, 998, 3, 580, 290, 0, 994, 998, 3, 582, 291, 0, 995, 998, 3, 584, 292, 0, 996, 998, 3, 586, 293, 0, 997, 964, 1, 0, 0, 0, 997, 965, 1, 0, 0, 0, 997, 966, 1, 0, 0, 0, 997, 967, 1, 0, 0, 0, 997, 968, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 997, 970, 1, 0, 0, 0, 997, 971, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 973, 1, 0, 0, 0, 997, 974, 1, 0, 0, 0, 997, 975, 1, 0, 0, 0, 997, 976, 1, 0, 0, 0, 997, 977, 1, 0, 0, 0, 997, 978, 1, 0, 0, 0, 997, 979, 1, 0, 0, 0, 997, 980, 1, 0, 0, 0, 997, 981, 1, 0, 0, 0, 997, 982, 1, 0, 0, 0, 997, 983, 1, 0, 0, 0, 997, 984, 1, 0, 0, 0, 997, 985, 1, 0, 0, 0, 997, 986, 1, 0, 0, 0, 997, 987, 1, 0, 0, 0, 997, 988, 1, 0, 0, 0, 997, 989, 1, 0, 0, 0, 997, 990, 1, 0, 0, 0, 997, 991, 1, 0, 0, 0, 997, 992, 1, 0, 0, 0, 997, 993, 1, 0, 0, 0, 997, 994, 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 997, 996, 1, 0, 0, 0, 998, 21, 1, 0, 0, 0, 999, 1008, 3, 598, 299, 0, 1000, 1008, 3, 596, 298, 0, 1001, 1008, 3, 600, 300, 0, 1002, 1008, 3, 602, 301, 0, 1003, 1008, 3, 604, 302, 0, 1004, 1008, 3, 606, 303, 0, 1005, 1008, 3, 608, 304, 0, 1006, 1008, 3, 616, 308, 0, 1007, 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0, 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, 1, 0, 0, 0, 1008, 23, 1, 0, 0, 0, 1009, 1010, 5, 34, 0, 0, 1010, 1012, 7, 0, 0, 0, 1011, 1013, 3, 756, 378, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1018, 3, 622, 311, 0, 1015, 1017, 3, 52, 26, 0, 1016, 1015, 1, 0, 0, 0, 1017, 1020, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 25, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1021, 1023, 5, 34, 0, 0, 1022, 1024, 3, 58, 29, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1027, 5, 385, 0, 0, 1026, 1028, 3, 756, 378, 0, 1027, 1026, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 3, 698, 349, 0, 1030, 1031, 5, 119, 0, 0, 1031, 1032, 5, 590, 0, 0, 1032, 1039, 3, 60, 30, 0, 1033, 1034, 5, 119, 0, 0, 1034, 1036, 5, 343, 0, 0, 1035, 1037, 5, 114, 0, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1040, 5, 541, 0, 0, 1039, 1033, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1043, 3, 68, 34, 0, 1042, 1041, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1046, 1, 0, 0, 0, 1044, 1045, 5, 340, 0, 0, 1045, 1047, 5, 882, 0, 0, 1046, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1049, 5, 371, 0, 0, 1049, 1050, 3, 416, 208, 0, 1050, 27, 1, 0, 0, 0, 1051, 1053, 5, 34, 0, 0, 1052, 1054, 7, 1, 0, 0, 1053, 1052, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1057, 7, 2, 0, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 5, 82, 0, 0, 1059, 1061, 3, 634, 317, 0, 1060, 1062, 3, 70, 35, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 5, 119, 0, 0, 1064, 1065, 3, 648, 324, 0, 1065, 1069, 3, 734, 367, 0, 1066, 1068, 3, 72, 36, 0, 1067, 1066, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1084, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 1074, 5, 308, 0, 0, 1073, 1075, 5, 857, 0, 0, 1074, 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1083, 7, 3, 0, 0, 1077, 1079, 5, 104, 0, 0, 1078, 1080, 5, 857, 0, 0, 1079, 1078, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1083, 7, 4, 0, 0, 1082, 1072, 1, 0, 0, 0, 1082, 1077, 1, 0, 0, 0, 1083, 1086, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 29, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1088, 5, 34, 0, 0, 1088, 1089, 5, 451, 0, 0, 1089, 1090, 5, 74, 0, 0, 1090, 1091, 3, 702, 351, 0, 1091, 1092, 5, 6, 0, 0, 1092, 1093, 5, 671, 0, 0, 1093, 1099, 5, 882, 0, 0, 1094, 1096, 5, 428, 0, 0, 1095, 1097, 5, 857, 0, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1100, 3, 710, 355, 0, 1099, 1094, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1106, 1, 0, 0, 0, 1101, 1103, 5, 672, 0, 0, 1102, 1104, 5, 857, 0, 0, 1103, 1102, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1107, 3, 710, 355, 0, 1106, 1101, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1113, 1, 0, 0, 0, 1108, 1110, 5, 553, 0, 0, 1109, 1111, 5, 857, 0, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1114, 3, 710, 355, 0, 1113, 1108, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1120, 1, 0, 0, 0, 1115, 1117, 5, 504, 0, 0, 1116, 1118, 5, 857, 0, 0, 1117, 1116, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1121, 3, 702, 351, 0, 1120, 1115, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1123, 1, 0, 0, 0, 1122, 1124, 5, 687, 0, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1130, 1, 0, 0, 0, 1125, 1127, 5, 340, 0, 0, 1126, 1128, 5, 857, 0, 0, 1127, 1126, 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1131, 5, 882, 0, 0, 1130, 1125, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1134, 5, 380, 0, 0, 1133, 1135, 5, 857, 0, 0, 1134, 1133, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 3, 688, 344, 0, 1137, 31, 1, 0, 0, 0, 1138, 1140, 5, 34, 0, 0, 1139, 1141, 3, 58, 29, 0, 1140, 1139, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1144, 5, 132, 0, 0, 1143, 1145, 3, 756, 378, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 3, 698, 349, 0, 1147, 1149, 5, 866, 0, 0, 1148, 1150, 3, 74, 37, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1155, 1, 0, 0, 0, 1151, 1152, 5, 868, 0, 0, 1152, 1154, 3, 74, 37, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1162, 5, 867, 0, 0, 1159, 1161, 3, 76, 38, 0, 1160, 1159, 1, 0, 0, 0, 1161, 1164, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1165, 1, 0, 0, 0, 1164, 1162, 1, 0, 0, 0, 1165, 1166, 3, 416, 208, 0, 1166, 33, 1, 0, 0, 0, 1167, 1168, 5, 34, 0, 0, 1168, 1170, 5, 582, 0, 0, 1169, 1171, 3, 756, 378, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 3, 650, 325, 0, 1173, 35, 1, 0, 0, 0, 1174, 1175, 5, 34, 0, 0, 1175, 1176, 5, 592, 0, 0, 1176, 1177, 3, 702, 351, 0, 1177, 1178, 5, 67, 0, 0, 1178, 1179, 5, 360, 0, 0, 1179, 1180, 5, 692, 0, 0, 1180, 1181, 7, 5, 0, 0, 1181, 1182, 5, 518, 0, 0, 1182, 1183, 5, 866, 0, 0, 1183, 1188, 3, 78, 39, 0, 1184, 1185, 5, 868, 0, 0, 1185, 1187, 3, 78, 39, 0, 1186, 1184, 1, 0, 0, 0, 1187, 1190, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 1191, 1, 0, 0, 0, 1190, 1188, 1, 0, 0, 0, 1191, 1192, 5, 867, 0, 0, 1192, 37, 1, 0, 0, 0, 1193, 1195, 5, 34, 0, 0, 1194, 1196, 5, 660, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1199, 5, 173, 0, 0, 1198, 1200, 3, 756, 378, 0, 1199, 1198, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1203, 3, 644, 322, 0, 1202, 1204, 3, 80, 40, 0, 1203, 1202, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1215, 1, 0, 0, 0, 1205, 1212, 3, 98, 49, 0, 1206, 1208, 5, 868, 0, 0, 1207, 1206, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1211, 3, 98, 49, 0, 1210, 1207, 1, 0, 0, 0, 1211, 1214, 1, 0, 0, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1216, 1, 0, 0, 0, 1214, 1212, 1, 0, 0, 0, 1215, 1205, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 1, 0, 0, 0, 1217, 1219, 3, 104, 52, 0, 1218, 1217, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1221, 1, 0, 0, 0, 1220, 1222, 7, 6, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1224, 1, 0, 0, 0, 1223, 1225, 5, 13, 0, 0, 1224, 1223, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 3, 204, 102, 0, 1227, 1272, 1, 0, 0, 0, 1228, 1230, 5, 34, 0, 0, 1229, 1231, 5, 660, 0, 0, 1230, 1229, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1234, 5, 173, 0, 0, 1233, 1235, 3, 756, 378, 0, 1234, 1233, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1244, 3, 644, 322, 0, 1237, 1238, 5, 99, 0, 0, 1238, 1245, 3, 648, 324, 0, 1239, 1240, 5, 866, 0, 0, 1240, 1241, 5, 99, 0, 0, 1241, 1242, 3, 648, 324, 0, 1242, 1243, 5, 867, 0, 0, 1243, 1245, 1, 0, 0, 0, 1244, 1237, 1, 0, 0, 0, 1244, 1239, 1, 0, 0, 0, 1245, 1272, 1, 0, 0, 0, 1246, 1248, 5, 34, 0, 0, 1247, 1249, 5, 660, 0, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1252, 5, 173, 0, 0, 1251, 1253, 3, 756, 378, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 3, 644, 322, 0, 1255, 1266, 3, 80, 40, 0, 1256, 1263, 3, 98, 49, 0, 1257, 1259, 5, 868, 0, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1262, 3, 98, 49, 0, 1261, 1258, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1267, 1, 0, 0, 0, 1265, 1263, 1, 0, 0, 0, 1266, 1256, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1269, 1, 0, 0, 0, 1268, 1270, 3, 104, 52, 0, 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1193, 1, 0, 0, 0, 1271, 1228, 1, 0, 0, 0, 1271, 1246, 1, 0, 0, 0, 1272, 39, 1, 0, 0, 0, 1273, 1275, 5, 34, 0, 0, 1274, 1276, 5, 180, 0, 0, 1275, 1274, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 5, 658, 0, 0, 1278, 1282, 3, 660, 330, 0, 1279, 1280, 5, 6, 0, 0, 1280, 1281, 5, 361, 0, 0, 1281, 1283, 5, 882, 0, 0, 1282, 1279, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1289, 1, 0, 0, 0, 1284, 1286, 5, 314, 0, 0, 1285, 1287, 5, 857, 0, 0, 1286, 1285, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1290, 3, 710, 355, 0, 1289, 1284, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1294, 1, 0, 0, 0, 1291, 1292, 5, 399, 0, 0, 1292, 1293, 5, 857, 0, 0, 1293, 1295, 3, 710, 355, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1301, 1, 0, 0, 0, 1296, 1298, 5, 380, 0, 0, 1297, 1299, 5, 857, 0, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1302, 3, 688, 344, 0, 1301, 1296, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1308, 1, 0, 0, 0, 1303, 1305, 5, 825, 0, 0, 1304, 1306, 5, 857, 0, 0, 1305, 1304, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1309, 5, 882, 0, 0, 1308, 1303, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 41, 1, 0, 0, 0, 1310, 1312, 5, 34, 0, 0, 1311, 1313, 5, 180, 0, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 5, 658, 0, 0, 1315, 1316, 3, 660, 330, 0, 1316, 1317, 5, 6, 0, 0, 1317, 1318, 5, 361, 0, 0, 1318, 1319, 5, 882, 0, 0, 1319, 1320, 5, 187, 0, 0, 1320, 1321, 5, 451, 0, 0, 1321, 1322, 5, 74, 0, 0, 1322, 1328, 3, 702, 351, 0, 1323, 1325, 5, 393, 0, 0, 1324, 1326, 5, 857, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 3, 710, 355, 0, 1328, 1323, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1335, 1, 0, 0, 0, 1330, 1332, 5, 428, 0, 0, 1331, 1333, 5, 857, 0, 0, 1332, 1331, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 3, 710, 355, 0, 1335, 1330, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1342, 1, 0, 0, 0, 1337, 1339, 5, 314, 0, 0, 1338, 1340, 5, 857, 0, 0, 1339, 1338, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1343, 3, 710, 355, 0, 1342, 1337, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1349, 1, 0, 0, 0, 1344, 1346, 5, 481, 0, 0, 1345, 1347, 5, 857, 0, 0, 1346, 1345, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1350, 3, 710, 355, 0, 1349, 1344, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1356, 1, 0, 0, 0, 1351, 1353, 5, 504, 0, 0, 1352, 1354, 5, 857, 0, 0, 1353, 1352, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1357, 3, 702, 351, 0, 1356, 1351, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1360, 5, 687, 0, 0, 1359, 1358, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1366, 1, 0, 0, 0, 1361, 1363, 5, 340, 0, 0, 1362, 1364, 5, 857, 0, 0, 1363, 1362, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1367, 5, 882, 0, 0, 1366, 1361, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 5, 380, 0, 0, 1369, 1371, 5, 857, 0, 0, 1370, 1369, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 3, 688, 344, 0, 1373, 43, 1, 0, 0, 0, 1374, 1376, 5, 34, 0, 0, 1375, 1377, 3, 58, 29, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 5, 178, 0, 0, 1379, 1381, 3, 756, 378, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1383, 3, 698, 349, 0, 1383, 1384, 7, 7, 0, 0, 1384, 1385, 7, 8, 0, 0, 1385, 1386, 5, 119, 0, 0, 1386, 1387, 3, 648, 324, 0, 1387, 1388, 5, 65, 0, 0, 1388, 1389, 5, 52, 0, 0, 1389, 1392, 5, 586, 0, 0, 1390, 1391, 7, 9, 0, 0, 1391, 1393, 3, 698, 349, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, 3, 416, 208, 0, 1395, 45, 1, 0, 0, 0, 1396, 1398, 5, 194, 0, 0, 1397, 1399, 5, 552, 0, 0, 1398, 1397, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 3, 48, 24, 0, 1401, 47, 1, 0, 0, 0, 1402, 1414, 3, 702, 351, 0, 1403, 1404, 5, 866, 0, 0, 1404, 1409, 3, 702, 351, 0, 1405, 1406, 5, 868, 0, 0, 1406, 1408, 3, 702, 351, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1413, 5, 867, 0, 0, 1413, 1415, 1, 0, 0, 0, 1414, 1403, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 1417, 5, 13, 0, 0, 1417, 1418, 5, 866, 0, 0, 1418, 1419, 3, 10, 5, 0, 1419, 1422, 5, 867, 0, 0, 1420, 1421, 5, 868, 0, 0, 1421, 1423, 3, 48, 24, 0, 1422, 1420, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 49, 1, 0, 0, 0, 1424, 1426, 5, 34, 0, 0, 1425, 1427, 3, 758, 379, 0, 1426, 1425, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1431, 1, 0, 0, 0, 1428, 1429, 5, 308, 0, 0, 1429, 1430, 5, 857, 0, 0, 1430, 1432, 7, 10, 0, 0, 1431, 1428, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1434, 1, 0, 0, 0, 1433, 1435, 3, 58, 29, 0, 1434, 1433, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1439, 1, 0, 0, 0, 1436, 1437, 5, 162, 0, 0, 1437, 1438, 5, 591, 0, 0, 1438, 1440, 7, 11, 0, 0, 1439, 1436, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 5, 684, 0, 0, 1442, 1454, 3, 630, 315, 0, 1443, 1444, 5, 866, 0, 0, 1444, 1449, 3, 654, 327, 0, 1445, 1446, 5, 868, 0, 0, 1446, 1448, 3, 654, 327, 0, 1447, 1445, 1, 0, 0, 0, 1448, 1451, 1, 0, 0, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1452, 1, 0, 0, 0, 1451, 1449, 1, 0, 0, 0, 1452, 1453, 5, 867, 0, 0, 1453, 1455, 1, 0, 0, 0, 1454, 1443, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1476, 5, 13, 0, 0, 1457, 1459, 5, 866, 0, 0, 1458, 1460, 3, 46, 23, 0, 1459, 1458, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1462, 3, 204, 102, 0, 1462, 1463, 5, 867, 0, 0, 1463, 1477, 1, 0, 0, 0, 1464, 1466, 3, 46, 23, 0, 1465, 1464, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1474, 3, 204, 102, 0, 1468, 1470, 5, 194, 0, 0, 1469, 1471, 7, 12, 0, 0, 1470, 1469, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1473, 5, 27, 0, 0, 1473, 1475, 5, 121, 0, 0, 1474, 1468, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1477, 1, 0, 0, 0, 1476, 1457, 1, 0, 0, 0, 1476, 1465, 1, 0, 0, 0, 1477, 51, 1, 0, 0, 0, 1478, 1480, 5, 42, 0, 0, 1479, 1478, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1483, 3, 54, 27, 0, 1482, 1484, 5, 857, 0, 0, 1483, 1482, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1487, 1, 0, 0, 0, 1485, 1488, 3, 684, 342, 0, 1486, 1488, 5, 42, 0, 0, 1487, 1485, 1, 0, 0, 0, 1487, 1486, 1, 0, 0, 0, 1488, 1512, 1, 0, 0, 0, 1489, 1491, 5, 42, 0, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1494, 5, 28, 0, 0, 1493, 1495, 5, 857, 0, 0, 1494, 1493, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1512, 3, 686, 343, 0, 1497, 1499, 5, 42, 0, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 5, 376, 0, 0, 1501, 1503, 5, 857, 0, 0, 1502, 1501, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1512, 5, 882, 0, 0, 1505, 1506, 5, 135, 0, 0, 1506, 1508, 5, 515, 0, 0, 1507, 1509, 5, 857, 0, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1512, 7, 13, 0, 0, 1511, 1479, 1, 0, 0, 0, 1511, 1490, 1, 0, 0, 0, 1511, 1498, 1, 0, 0, 0, 1511, 1505, 1, 0, 0, 0, 1512, 53, 1, 0, 0, 0, 1513, 1514, 5, 26, 0, 0, 1514, 1519, 5, 155, 0, 0, 1515, 1519, 5, 823, 0, 0, 1516, 1517, 5, 224, 0, 0, 1517, 1519, 5, 155, 0, 0, 1518, 1513, 1, 0, 0, 0, 1518, 1515, 1, 0, 0, 0, 1518, 1516, 1, 0, 0, 0, 1519, 55, 1, 0, 0, 0, 1520, 1523, 7, 14, 0, 0, 1521, 1522, 5, 866, 0, 0, 1522, 1524, 5, 867, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 57, 1, 0, 0, 0, 1525, 1526, 5, 364, 0, 0, 1526, 1529, 5, 857, 0, 0, 1527, 1530, 3, 680, 340, 0, 1528, 1530, 3, 56, 28, 0, 1529, 1527, 1, 0, 0, 0, 1529, 1528, 1, 0, 0, 0, 1530, 59, 1, 0, 0, 0, 1531, 1532, 5, 311, 0, 0, 1532, 1536, 3, 62, 31, 0, 1533, 1535, 3, 64, 32, 0, 1534, 1533, 1, 0, 0, 0, 1535, 1538, 1, 0, 0, 0, 1536, 1534, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, 1566, 1, 0, 0, 0, 1538, 1536, 1, 0, 0, 0, 1539, 1542, 5, 387, 0, 0, 1540, 1543, 3, 708, 354, 0, 1541, 1543, 3, 800, 400, 0, 1542, 1540, 1, 0, 0, 0, 1542, 1541, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1553, 3, 66, 33, 0, 1545, 1546, 5, 641, 0, 0, 1546, 1550, 3, 62, 31, 0, 1547, 1549, 3, 64, 32, 0, 1548, 1547, 1, 0, 0, 0, 1549, 1552, 1, 0, 0, 0, 1550, 1548, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1554, 1, 0, 0, 0, 1552, 1550, 1, 0, 0, 0, 1553, 1545, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1563, 1, 0, 0, 0, 1555, 1556, 5, 379, 0, 0, 1556, 1560, 3, 62, 31, 0, 1557, 1559, 3, 64, 32, 0, 1558, 1557, 1, 0, 0, 0, 1559, 1562, 1, 0, 0, 0, 1560, 1558, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1564, 1, 0, 0, 0, 1562, 1560, 1, 0, 0, 0, 1563, 1555, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1566, 1, 0, 0, 0, 1565, 1531, 1, 0, 0, 0, 1565, 1539, 1, 0, 0, 0, 1566, 61, 1, 0, 0, 0, 1567, 1572, 5, 287, 0, 0, 1568, 1572, 3, 712, 356, 0, 1569, 1572, 3, 708, 354, 0, 1570, 1572, 3, 800, 400, 0, 1571, 1567, 1, 0, 0, 0, 1571, 1568, 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1571, 1570, 1, 0, 0, 0, 1572, 63, 1, 0, 0, 0, 1573, 1574, 5, 853, 0, 0, 1574, 1577, 5, 87, 0, 0, 1575, 1578, 3, 708, 354, 0, 1576, 1578, 3, 800, 400, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1576, 1, 0, 0, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 3, 66, 33, 0, 1580, 65, 1, 0, 0, 0, 1581, 1595, 3, 826, 413, 0, 1582, 1595, 5, 223, 0, 0, 1583, 1595, 5, 242, 0, 0, 1584, 1595, 5, 243, 0, 0, 1585, 1595, 5, 244, 0, 0, 1586, 1595, 5, 245, 0, 0, 1587, 1595, 5, 246, 0, 0, 1588, 1595, 5, 247, 0, 0, 1589, 1595, 5, 248, 0, 0, 1590, 1595, 5, 249, 0, 0, 1591, 1595, 5, 250, 0, 0, 1592, 1595, 5, 251, 0, 0, 1593, 1595, 5, 252, 0, 0, 1594, 1581, 1, 0, 0, 0, 1594, 1582, 1, 0, 0, 0, 1594, 1583, 1, 0, 0, 0, 1594, 1584, 1, 0, 0, 0, 1594, 1585, 1, 0, 0, 0, 1594, 1586, 1, 0, 0, 0, 1594, 1587, 1, 0, 0, 0, 1594, 1588, 1, 0, 0, 0, 1594, 1589, 1, 0, 0, 0, 1594, 1590, 1, 0, 0, 0, 1594, 1591, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 67, 1, 0, 0, 0, 1596, 1602, 5, 375, 0, 0, 1597, 1602, 5, 368, 0, 0, 1598, 1599, 5, 368, 0, 0, 1599, 1600, 5, 119, 0, 0, 1600, 1602, 5, 598, 0, 0, 1601, 1596, 1, 0, 0, 0, 1601, 1597, 1, 0, 0, 0, 1601, 1598, 1, 0, 0, 0, 1602, 69, 1, 0, 0, 0, 1603, 1604, 5, 188, 0, 0, 1604, 1605, 7, 15, 0, 0, 1605, 71, 1, 0, 0, 0, 1606, 1608, 5, 443, 0, 0, 1607, 1609, 5, 857, 0, 0, 1608, 1607, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1629, 3, 710, 355, 0, 1611, 1629, 3, 70, 35, 0, 1612, 1613, 5, 194, 0, 0, 1613, 1614, 5, 525, 0, 0, 1614, 1629, 3, 702, 351, 0, 1615, 1616, 5, 340, 0, 0, 1616, 1629, 5, 882, 0, 0, 1617, 1629, 7, 16, 0, 0, 1618, 1620, 5, 825, 0, 0, 1619, 1621, 5, 857, 0, 0, 1620, 1619, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1629, 5, 882, 0, 0, 1623, 1625, 5, 833, 0, 0, 1624, 1626, 5, 857, 0, 0, 1625, 1624, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1629, 5, 882, 0, 0, 1628, 1606, 1, 0, 0, 0, 1628, 1611, 1, 0, 0, 0, 1628, 1612, 1, 0, 0, 0, 1628, 1615, 1, 0, 0, 0, 1628, 1617, 1, 0, 0, 0, 1628, 1618, 1, 0, 0, 0, 1628, 1623, 1, 0, 0, 0, 1629, 73, 1, 0, 0, 0, 1630, 1632, 7, 17, 0, 0, 1631, 1630, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1634, 3, 702, 351, 0, 1634, 1635, 3, 722, 361, 0, 1635, 75, 1, 0, 0, 0, 1636, 1637, 5, 340, 0, 0, 1637, 1660, 5, 882, 0, 0, 1638, 1639, 5, 444, 0, 0, 1639, 1660, 5, 162, 0, 0, 1640, 1642, 5, 114, 0, 0, 1641, 1640, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1660, 5, 47, 0, 0, 1644, 1645, 5, 354, 0, 0, 1645, 1655, 5, 162, 0, 0, 1646, 1647, 5, 502, 0, 0, 1647, 1655, 5, 162, 0, 0, 1648, 1649, 5, 136, 0, 0, 1649, 1650, 5, 162, 0, 0, 1650, 1655, 5, 360, 0, 0, 1651, 1652, 5, 112, 0, 0, 1652, 1653, 5, 162, 0, 0, 1653, 1655, 5, 360, 0, 0, 1654, 1644, 1, 0, 0, 0, 1654, 1646, 1, 0, 0, 0, 1654, 1648, 1, 0, 0, 0, 1654, 1651, 1, 0, 0, 0, 1655, 1660, 1, 0, 0, 0, 1656, 1657, 5, 162, 0, 0, 1657, 1658, 5, 591, 0, 0, 1658, 1660, 7, 11, 0, 0, 1659, 1636, 1, 0, 0, 0, 1659, 1638, 1, 0, 0, 0, 1659, 1641, 1, 0, 0, 0, 1659, 1654, 1, 0, 0, 0, 1659, 1656, 1, 0, 0, 0, 1660, 77, 1, 0, 0, 0, 1661, 1662, 5, 421, 0, 0, 1662, 1676, 5, 882, 0, 0, 1663, 1664, 5, 39, 0, 0, 1664, 1676, 5, 882, 0, 0, 1665, 1666, 5, 678, 0, 0, 1666, 1676, 5, 882, 0, 0, 1667, 1668, 5, 529, 0, 0, 1668, 1676, 5, 882, 0, 0, 1669, 1670, 5, 601, 0, 0, 1670, 1676, 5, 882, 0, 0, 1671, 1672, 5, 519, 0, 0, 1672, 1676, 5, 882, 0, 0, 1673, 1674, 5, 537, 0, 0, 1674, 1676, 3, 708, 354, 0, 1675, 1661, 1, 0, 0, 0, 1675, 1663, 1, 0, 0, 0, 1675, 1665, 1, 0, 0, 0, 1675, 1667, 1, 0, 0, 0, 1675, 1669, 1, 0, 0, 0, 1675, 1671, 1, 0, 0, 0, 1675, 1673, 1, 0, 0, 0, 1676, 79, 1, 0, 0, 0, 1677, 1678, 5, 866, 0, 0, 1678, 1683, 3, 82, 41, 0, 1679, 1680, 5, 868, 0, 0, 1680, 1682, 3, 82, 41, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1686, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1686, 1687, 5, 867, 0, 0, 1687, 81, 1, 0, 0, 0, 1688, 1689, 3, 654, 327, 0, 1689, 1690, 3, 88, 44, 0, 1690, 1772, 1, 0, 0, 0, 1691, 1693, 7, 18, 0, 0, 1692, 1694, 3, 638, 319, 0, 1693, 1692, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1697, 3, 70, 35, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1702, 3, 734, 367, 0, 1699, 1701, 3, 72, 36, 0, 1700, 1699, 1, 0, 0, 0, 1701, 1704, 1, 0, 0, 0, 1702, 1700, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1772, 1, 0, 0, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1707, 7, 19, 0, 0, 1706, 1708, 7, 18, 0, 0, 1707, 1706, 1, 0, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1710, 1, 0, 0, 0, 1709, 1711, 3, 638, 319, 0, 1710, 1709, 1, 0, 0, 0, 1710, 1711, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1716, 3, 734, 367, 0, 1713, 1715, 3, 72, 36, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1718, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 1772, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1719, 1721, 3, 86, 43, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 5, 131, 0, 0, 1723, 1725, 5, 92, 0, 0, 1724, 1726, 3, 70, 35, 0, 1725, 1724, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1731, 3, 734, 367, 0, 1728, 1730, 3, 72, 36, 0, 1729, 1728, 1, 0, 0, 0, 1730, 1733, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1772, 1, 0, 0, 0, 1733, 1731, 1, 0, 0, 0, 1734, 1736, 3, 86, 43, 0, 1735, 1734, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1739, 5, 182, 0, 0, 1738, 1740, 7, 18, 0, 0, 1739, 1738, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1743, 3, 638, 319, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1746, 3, 70, 35, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1751, 3, 734, 367, 0, 1748, 1750, 3, 72, 36, 0, 1749, 1748, 1, 0, 0, 0, 1750, 1753, 1, 0, 0, 0, 1751, 1749, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1772, 1, 0, 0, 0, 1753, 1751, 1, 0, 0, 0, 1754, 1756, 3, 86, 43, 0, 1755, 1754, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 5, 67, 0, 0, 1758, 1760, 5, 92, 0, 0, 1759, 1761, 3, 638, 319, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 3, 734, 367, 0, 1763, 1764, 3, 92, 46, 0, 1764, 1772, 1, 0, 0, 0, 1765, 1766, 5, 27, 0, 0, 1766, 1767, 5, 866, 0, 0, 1767, 1768, 3, 800, 400, 0, 1768, 1769, 5, 867, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1772, 3, 84, 42, 0, 1771, 1688, 1, 0, 0, 0, 1771, 1691, 1, 0, 0, 0, 1771, 1705, 1, 0, 0, 0, 1771, 1720, 1, 0, 0, 0, 1771, 1735, 1, 0, 0, 0, 1771, 1755, 1, 0, 0, 0, 1771, 1765, 1, 0, 0, 0, 1771, 1770, 1, 0, 0, 0, 1772, 83, 1, 0, 0, 0, 1773, 1775, 3, 86, 43, 0, 1774, 1773, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1777, 5, 27, 0, 0, 1777, 1778, 5, 866, 0, 0, 1778, 1779, 3, 800, 400, 0, 1779, 1784, 5, 867, 0, 0, 1780, 1782, 5, 114, 0, 0, 1781, 1780, 1, 0, 0, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1785, 5, 57, 0, 0, 1784, 1781, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 85, 1, 0, 0, 0, 1786, 1788, 5, 31, 0, 0, 1787, 1789, 3, 702, 351, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 87, 1, 0, 0, 0, 1790, 1794, 3, 722, 361, 0, 1791, 1793, 3, 90, 45, 0, 1792, 1791, 1, 0, 0, 0, 1793, 1796, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 89, 1, 0, 0, 0, 1796, 1794, 1, 0, 0, 0, 1797, 1841, 3, 718, 359, 0, 1798, 1799, 5, 42, 0, 0, 1799, 1841, 3, 750, 375, 0, 1800, 1841, 5, 686, 0, 0, 1801, 1841, 5, 435, 0, 0, 1802, 1807, 5, 315, 0, 0, 1803, 1804, 5, 119, 0, 0, 1804, 1805, 5, 185, 0, 0, 1805, 1807, 3, 752, 376, 0, 1806, 1802, 1, 0, 0, 0, 1806, 1803, 1, 0, 0, 0, 1807, 1841, 1, 0, 0, 0, 1808, 1810, 5, 131, 0, 0, 1809, 1808, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811, 1841, 5, 92, 0, 0, 1812, 1814, 5, 182, 0, 0, 1813, 1815, 5, 92, 0, 0, 1814, 1813, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1841, 1, 0, 0, 0, 1816, 1817, 5, 340, 0, 0, 1817, 1841, 5, 882, 0, 0, 1818, 1819, 5, 338, 0, 0, 1819, 1841, 7, 20, 0, 0, 1820, 1821, 5, 647, 0, 0, 1821, 1841, 7, 21, 0, 0, 1822, 1841, 3, 92, 46, 0, 1823, 1824, 5, 28, 0, 0, 1824, 1841, 3, 686, 343, 0, 1825, 1826, 5, 71, 0, 0, 1826, 1828, 5, 9, 0, 0, 1827, 1825, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1830, 5, 13, 0, 0, 1830, 1831, 5, 866, 0, 0, 1831, 1832, 3, 800, 400, 0, 1832, 1834, 5, 867, 0, 0, 1833, 1835, 7, 22, 0, 0, 1834, 1833, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 1841, 1, 0, 0, 0, 1836, 1837, 5, 241, 0, 0, 1837, 1838, 5, 42, 0, 0, 1838, 1841, 5, 682, 0, 0, 1839, 1841, 3, 84, 42, 0, 1840, 1797, 1, 0, 0, 0, 1840, 1798, 1, 0, 0, 0, 1840, 1800, 1, 0, 0, 0, 1840, 1801, 1, 0, 0, 0, 1840, 1806, 1, 0, 0, 0, 1840, 1809, 1, 0, 0, 0, 1840, 1812, 1, 0, 0, 0, 1840, 1816, 1, 0, 0, 0, 1840, 1818, 1, 0, 0, 0, 1840, 1820, 1, 0, 0, 0, 1840, 1822, 1, 0, 0, 0, 1840, 1823, 1, 0, 0, 0, 1840, 1827, 1, 0, 0, 0, 1840, 1836, 1, 0, 0, 0, 1840, 1839, 1, 0, 0, 0, 1841, 91, 1, 0, 0, 0, 1842, 1843, 5, 138, 0, 0, 1843, 1845, 3, 648, 324, 0, 1844, 1846, 3, 734, 367, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1849, 1, 0, 0, 0, 1847, 1848, 5, 110, 0, 0, 1848, 1850, 7, 23, 0, 0, 1849, 1847, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1852, 1, 0, 0, 0, 1851, 1853, 3, 94, 47, 0, 1852, 1851, 1, 0, 0, 0, 1852, 1853, 1, 0, 0, 0, 1853, 93, 1, 0, 0, 0, 1854, 1855, 5, 119, 0, 0, 1855, 1856, 5, 44, 0, 0, 1856, 1860, 3, 96, 48, 0, 1857, 1858, 5, 119, 0, 0, 1858, 1859, 5, 185, 0, 0, 1859, 1861, 3, 96, 48, 0, 1860, 1857, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1871, 1, 0, 0, 0, 1862, 1863, 5, 119, 0, 0, 1863, 1864, 5, 185, 0, 0, 1864, 1868, 3, 96, 48, 0, 1865, 1866, 5, 119, 0, 0, 1866, 1867, 5, 44, 0, 0, 1867, 1869, 3, 96, 48, 0, 1868, 1865, 1, 0, 0, 0, 1868, 1869, 1, 0, 0, 0, 1869, 1871, 1, 0, 0, 0, 1870, 1854, 1, 0, 0, 0, 1870, 1862, 1, 0, 0, 0, 1871, 95, 1, 0, 0, 0, 1872, 1881, 5, 146, 0, 0, 1873, 1881, 5, 22, 0, 0, 1874, 1875, 5, 155, 0, 0, 1875, 1881, 5, 116, 0, 0, 1876, 1877, 5, 502, 0, 0, 1877, 1881, 5, 305, 0, 0, 1878, 1879, 5, 155, 0, 0, 1879, 1881, 5, 42, 0, 0, 1880, 1872, 1, 0, 0, 0, 1880, 1873, 1, 0, 0, 0, 1880, 1874, 1, 0, 0, 0, 1880, 1876, 1, 0, 0, 0, 1880, 1878, 1, 0, 0, 0, 1881, 97, 1, 0, 0, 0, 1882, 1884, 5, 380, 0, 0, 1883, 1885, 5, 857, 0, 0, 1884, 1883, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1887, 1, 0, 0, 0, 1886, 1888, 3, 688, 344, 0, 1887, 1886, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 2068, 1, 0, 0, 0, 1889, 1891, 5, 825, 0, 0, 1890, 1892, 5, 857, 0, 0, 1891, 1890, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 2068, 5, 882, 0, 0, 1894, 1896, 5, 314, 0, 0, 1895, 1897, 5, 857, 0, 0, 1896, 1895, 1, 0, 0, 0, 1896, 1897, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 2068, 3, 708, 354, 0, 1899, 1901, 5, 315, 0, 0, 1900, 1902, 5, 857, 0, 0, 1901, 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 2068, 3, 708, 354, 0, 1904, 1906, 5, 316, 0, 0, 1905, 1907, 5, 857, 0, 0, 1906, 1905, 1, 0, 0, 0, 1906, 1907, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 2068, 3, 708, 354, 0, 1909, 1911, 5, 42, 0, 0, 1910, 1909, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 3, 54, 27, 0, 1913, 1915, 5, 857, 0, 0, 1914, 1913, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1918, 1, 0, 0, 0, 1916, 1919, 3, 684, 342, 0, 1917, 1919, 5, 42, 0, 0, 1918, 1916, 1, 0, 0, 0, 1918, 1917, 1, 0, 0, 0, 1919, 2068, 1, 0, 0, 0, 1920, 1922, 7, 24, 0, 0, 1921, 1923, 5, 857, 0, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, 1924, 1, 0, 0, 0, 1924, 2068, 7, 25, 0, 0, 1925, 1927, 5, 42, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1930, 5, 28, 0, 0, 1929, 1931, 5, 857, 0, 0, 1930, 1929, 1, 0, 0, 0, 1930, 1931, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 2068, 3, 686, 343, 0, 1933, 1935, 5, 340, 0, 0, 1934, 1936, 5, 857, 0, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 2068, 5, 882, 0, 0, 1938, 1940, 5, 346, 0, 0, 1939, 1941, 5, 857, 0, 0, 1940, 1939, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1942, 1, 0, 0, 0, 1942, 2068, 7, 26, 0, 0, 1943, 1945, 5, 349, 0, 0, 1944, 1946, 5, 857, 0, 0, 1945, 1944, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 2068, 5, 882, 0, 0, 1948, 1949, 7, 27, 0, 0, 1949, 1951, 5, 367, 0, 0, 1950, 1952, 5, 857, 0, 0, 1951, 1950, 1, 0, 0, 0, 1951, 1952, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 2068, 5, 882, 0, 0, 1954, 1956, 5, 365, 0, 0, 1955, 1957, 5, 857, 0, 0, 1956, 1955, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 2068, 7, 25, 0, 0, 1959, 1961, 5, 376, 0, 0, 1960, 1962, 5, 857, 0, 0, 1961, 1960, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 2068, 5, 882, 0, 0, 1964, 1966, 7, 28, 0, 0, 1965, 1967, 5, 857, 0, 0, 1966, 1965, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 2068, 7, 25, 0, 0, 1969, 1971, 7, 29, 0, 0, 1970, 1972, 5, 857, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 2068, 3, 708, 354, 0, 1974, 1976, 5, 377, 0, 0, 1975, 1977, 5, 857, 0, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 2068, 3, 708, 354, 0, 1979, 1980, 5, 82, 0, 0, 1980, 1982, 5, 367, 0, 0, 1981, 1983, 5, 857, 0, 0, 1982, 1981, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 2068, 5, 882, 0, 0, 1985, 1987, 5, 431, 0, 0, 1986, 1988, 5, 857, 0, 0, 1987, 1986, 1, 0, 0, 0, 1987, 1988, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 2068, 7, 30, 0, 0, 1990, 1992, 5, 443, 0, 0, 1991, 1993, 5, 857, 0, 0, 1992, 1991, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 2068, 3, 710, 355, 0, 1995, 1997, 5, 480, 0, 0, 1996, 1998, 5, 857, 0, 0, 1997, 1996, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2068, 3, 708, 354, 0, 2000, 2002, 5, 490, 0, 0, 2001, 2003, 5, 857, 0, 0, 2002, 2001, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2068, 3, 708, 354, 0, 2005, 2007, 5, 520, 0, 0, 2006, 2008, 5, 857, 0, 0, 2007, 2006, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2068, 7, 13, 0, 0, 2010, 2012, 5, 529, 0, 0, 2011, 2013, 5, 857, 0, 0, 2012, 2011, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2068, 5, 882, 0, 0, 2015, 2017, 5, 588, 0, 0, 2016, 2018, 5, 857, 0, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2068, 7, 31, 0, 0, 2020, 2021, 5, 640, 0, 0, 2021, 2068, 5, 664, 0, 0, 2022, 2024, 5, 833, 0, 0, 2023, 2025, 5, 857, 0, 0, 2024, 2023, 1, 0, 0, 0, 2024, 2025, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2068, 5, 882, 0, 0, 2027, 2029, 5, 642, 0, 0, 2028, 2030, 5, 857, 0, 0, 2029, 2028, 1, 0, 0, 0, 2029, 2030, 1, 0, 0, 0, 2030, 2031, 1, 0, 0, 0, 2031, 2068, 7, 13, 0, 0, 2032, 2034, 5, 643, 0, 0, 2033, 2035, 5, 857, 0, 0, 2034, 2033, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2068, 7, 13, 0, 0, 2037, 2039, 5, 644, 0, 0, 2038, 2040, 5, 857, 0, 0, 2039, 2038, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2043, 1, 0, 0, 0, 2041, 2044, 5, 42, 0, 0, 2042, 2044, 3, 708, 354, 0, 2043, 2041, 1, 0, 0, 0, 2043, 2042, 1, 0, 0, 0, 2044, 2068, 1, 0, 0, 0, 2045, 2046, 5, 658, 0, 0, 2046, 2048, 3, 662, 331, 0, 2047, 2049, 3, 102, 51, 0, 2048, 2047, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2068, 1, 0, 0, 0, 2050, 2051, 5, 659, 0, 0, 2051, 2052, 5, 857, 0, 0, 2052, 2068, 3, 100, 50, 0, 2053, 2068, 3, 102, 51, 0, 2054, 2056, 5, 665, 0, 0, 2055, 2057, 5, 857, 0, 0, 2056, 2055, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2068, 7, 25, 0, 0, 2059, 2061, 5, 181, 0, 0, 2060, 2062, 5, 857, 0, 0, 2061, 2060, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2064, 5, 866, 0, 0, 2064, 2065, 3, 646, 323, 0, 2065, 2066, 5, 867, 0, 0, 2066, 2068, 1, 0, 0, 0, 2067, 1882, 1, 0, 0, 0, 2067, 1889, 1, 0, 0, 0, 2067, 1894, 1, 0, 0, 0, 2067, 1899, 1, 0, 0, 0, 2067, 1904, 1, 0, 0, 0, 2067, 1910, 1, 0, 0, 0, 2067, 1920, 1, 0, 0, 0, 2067, 1926, 1, 0, 0, 0, 2067, 1933, 1, 0, 0, 0, 2067, 1938, 1, 0, 0, 0, 2067, 1943, 1, 0, 0, 0, 2067, 1948, 1, 0, 0, 0, 2067, 1954, 1, 0, 0, 0, 2067, 1959, 1, 0, 0, 0, 2067, 1964, 1, 0, 0, 0, 2067, 1969, 1, 0, 0, 0, 2067, 1974, 1, 0, 0, 0, 2067, 1979, 1, 0, 0, 0, 2067, 1985, 1, 0, 0, 0, 2067, 1990, 1, 0, 0, 0, 2067, 1995, 1, 0, 0, 0, 2067, 2000, 1, 0, 0, 0, 2067, 2005, 1, 0, 0, 0, 2067, 2010, 1, 0, 0, 0, 2067, 2015, 1, 0, 0, 0, 2067, 2020, 1, 0, 0, 0, 2067, 2022, 1, 0, 0, 0, 2067, 2027, 1, 0, 0, 0, 2067, 2032, 1, 0, 0, 0, 2067, 2037, 1, 0, 0, 0, 2067, 2045, 1, 0, 0, 0, 2067, 2050, 1, 0, 0, 0, 2067, 2053, 1, 0, 0, 0, 2067, 2054, 1, 0, 0, 0, 2067, 2059, 1, 0, 0, 0, 2068, 99, 1, 0, 0, 0, 2069, 2070, 7, 32, 0, 0, 2070, 101, 1, 0, 0, 0, 2071, 2072, 5, 647, 0, 0, 2072, 2073, 7, 21, 0, 0, 2073, 103, 1, 0, 0, 0, 2074, 2075, 5, 130, 0, 0, 2075, 2076, 5, 20, 0, 0, 2076, 2079, 3, 106, 53, 0, 2077, 2078, 5, 528, 0, 0, 2078, 2080, 3, 708, 354, 0, 2079, 2077, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2088, 1, 0, 0, 0, 2081, 2082, 5, 652, 0, 0, 2082, 2083, 5, 20, 0, 0, 2083, 2086, 3, 108, 54, 0, 2084, 2085, 5, 653, 0, 0, 2085, 2087, 3, 708, 354, 0, 2086, 2084, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2089, 1, 0, 0, 0, 2088, 2081, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2101, 1, 0, 0, 0, 2090, 2091, 5, 866, 0, 0, 2091, 2096, 3, 110, 55, 0, 2092, 2093, 5, 868, 0, 0, 2093, 2095, 3, 110, 55, 0, 2094, 2092, 1, 0, 0, 0, 2095, 2098, 1, 0, 0, 0, 2096, 2094, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2099, 1, 0, 0, 0, 2098, 2096, 1, 0, 0, 0, 2099, 2100, 5, 867, 0, 0, 2100, 2102, 1, 0, 0, 0, 2101, 2090, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 105, 1, 0, 0, 0, 2103, 2105, 5, 101, 0, 0, 2104, 2103, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2107, 5, 418, 0, 0, 2107, 2108, 5, 866, 0, 0, 2108, 2109, 3, 800, 400, 0, 2109, 2110, 5, 867, 0, 0, 2110, 2150, 1, 0, 0, 0, 2111, 2113, 5, 101, 0, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2118, 5, 92, 0, 0, 2115, 2116, 5, 308, 0, 0, 2116, 2117, 5, 857, 0, 0, 2117, 2119, 7, 33, 0, 0, 2118, 2115, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2120, 1, 0, 0, 0, 2120, 2122, 5, 866, 0, 0, 2121, 2123, 3, 656, 328, 0, 2122, 2121, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2150, 5, 867, 0, 0, 2125, 2135, 5, 134, 0, 0, 2126, 2127, 5, 866, 0, 0, 2127, 2128, 3, 800, 400, 0, 2128, 2129, 5, 867, 0, 0, 2129, 2136, 1, 0, 0, 0, 2130, 2131, 5, 337, 0, 0, 2131, 2132, 5, 866, 0, 0, 2132, 2133, 3, 656, 328, 0, 2133, 2134, 5, 867, 0, 0, 2134, 2136, 1, 0, 0, 0, 2135, 2126, 1, 0, 0, 0, 2135, 2130, 1, 0, 0, 0, 2136, 2150, 1, 0, 0, 0, 2137, 2147, 5, 449, 0, 0, 2138, 2139, 5, 866, 0, 0, 2139, 2140, 3, 800, 400, 0, 2140, 2141, 5, 867, 0, 0, 2141, 2148, 1, 0, 0, 0, 2142, 2143, 5, 337, 0, 0, 2143, 2144, 5, 866, 0, 0, 2144, 2145, 3, 656, 328, 0, 2145, 2146, 5, 867, 0, 0, 2146, 2148, 1, 0, 0, 0, 2147, 2138, 1, 0, 0, 0, 2147, 2142, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2104, 1, 0, 0, 0, 2149, 2112, 1, 0, 0, 0, 2149, 2125, 1, 0, 0, 0, 2149, 2137, 1, 0, 0, 0, 2150, 107, 1, 0, 0, 0, 2151, 2153, 5, 101, 0, 0, 2152, 2151, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 5, 418, 0, 0, 2155, 2156, 5, 866, 0, 0, 2156, 2157, 3, 800, 400, 0, 2157, 2158, 5, 867, 0, 0, 2158, 2173, 1, 0, 0, 0, 2159, 2161, 5, 101, 0, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2166, 5, 92, 0, 0, 2163, 2164, 5, 308, 0, 0, 2164, 2165, 5, 857, 0, 0, 2165, 2167, 7, 33, 0, 0, 2166, 2163, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2169, 5, 866, 0, 0, 2169, 2170, 3, 656, 328, 0, 2170, 2171, 5, 867, 0, 0, 2171, 2173, 1, 0, 0, 0, 2172, 2152, 1, 0, 0, 0, 2172, 2160, 1, 0, 0, 0, 2173, 109, 1, 0, 0, 0, 2174, 2175, 5, 130, 0, 0, 2175, 2176, 3, 668, 334, 0, 2176, 2177, 5, 189, 0, 0, 2177, 2178, 5, 447, 0, 0, 2178, 2179, 5, 662, 0, 0, 2179, 2180, 5, 866, 0, 0, 2180, 2185, 3, 112, 56, 0, 2181, 2182, 5, 868, 0, 0, 2182, 2184, 3, 112, 56, 0, 2183, 2181, 1, 0, 0, 0, 2184, 2187, 1, 0, 0, 0, 2185, 2183, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 2188, 1, 0, 0, 0, 2187, 2185, 1, 0, 0, 0, 2188, 2192, 5, 867, 0, 0, 2189, 2191, 3, 118, 59, 0, 2190, 2189, 1, 0, 0, 0, 2191, 2194, 1, 0, 0, 0, 2192, 2190, 1, 0, 0, 0, 2192, 2193, 1, 0, 0, 0, 2193, 2206, 1, 0, 0, 0, 2194, 2192, 1, 0, 0, 0, 2195, 2196, 5, 866, 0, 0, 2196, 2201, 3, 116, 58, 0, 2197, 2198, 5, 868, 0, 0, 2198, 2200, 3, 116, 58, 0, 2199, 2197, 1, 0, 0, 0, 2200, 2203, 1, 0, 0, 0, 2201, 2199, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2204, 1, 0, 0, 0, 2203, 2201, 1, 0, 0, 0, 2204, 2205, 5, 867, 0, 0, 2205, 2207, 1, 0, 0, 0, 2206, 2195, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2321, 1, 0, 0, 0, 2208, 2209, 5, 130, 0, 0, 2209, 2210, 3, 668, 334, 0, 2210, 2211, 5, 189, 0, 0, 2211, 2212, 5, 447, 0, 0, 2212, 2213, 5, 662, 0, 0, 2213, 2217, 3, 112, 56, 0, 2214, 2216, 3, 118, 59, 0, 2215, 2214, 1, 0, 0, 0, 2216, 2219, 1, 0, 0, 0, 2217, 2215, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2231, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2220, 2221, 5, 866, 0, 0, 2221, 2226, 3, 116, 58, 0, 2222, 2223, 5, 868, 0, 0, 2223, 2225, 3, 116, 58, 0, 2224, 2222, 1, 0, 0, 0, 2225, 2228, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2229, 1, 0, 0, 0, 2228, 2226, 1, 0, 0, 0, 2229, 2230, 5, 867, 0, 0, 2230, 2232, 1, 0, 0, 0, 2231, 2220, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2321, 1, 0, 0, 0, 2233, 2234, 5, 130, 0, 0, 2234, 2235, 3, 668, 334, 0, 2235, 2236, 5, 189, 0, 0, 2236, 2237, 5, 80, 0, 0, 2237, 2238, 5, 866, 0, 0, 2238, 2243, 3, 112, 56, 0, 2239, 2240, 5, 868, 0, 0, 2240, 2242, 3, 112, 56, 0, 2241, 2239, 1, 0, 0, 0, 2242, 2245, 1, 0, 0, 0, 2243, 2241, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2246, 1, 0, 0, 0, 2245, 2243, 1, 0, 0, 0, 2246, 2250, 5, 867, 0, 0, 2247, 2249, 3, 118, 59, 0, 2248, 2247, 1, 0, 0, 0, 2249, 2252, 1, 0, 0, 0, 2250, 2248, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2264, 1, 0, 0, 0, 2252, 2250, 1, 0, 0, 0, 2253, 2254, 5, 866, 0, 0, 2254, 2259, 3, 116, 58, 0, 2255, 2256, 5, 868, 0, 0, 2256, 2258, 3, 116, 58, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2261, 1, 0, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2262, 1, 0, 0, 0, 2261, 2259, 1, 0, 0, 0, 2262, 2263, 5, 867, 0, 0, 2263, 2265, 1, 0, 0, 0, 2264, 2253, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2321, 1, 0, 0, 0, 2266, 2267, 5, 130, 0, 0, 2267, 2268, 3, 668, 334, 0, 2268, 2269, 5, 189, 0, 0, 2269, 2270, 5, 80, 0, 0, 2270, 2271, 5, 866, 0, 0, 2271, 2276, 3, 114, 57, 0, 2272, 2273, 5, 868, 0, 0, 2273, 2275, 3, 114, 57, 0, 2274, 2272, 1, 0, 0, 0, 2275, 2278, 1, 0, 0, 0, 2276, 2274, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2279, 1, 0, 0, 0, 2278, 2276, 1, 0, 0, 0, 2279, 2283, 5, 867, 0, 0, 2280, 2282, 3, 118, 59, 0, 2281, 2280, 1, 0, 0, 0, 2282, 2285, 1, 0, 0, 0, 2283, 2281, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2297, 1, 0, 0, 0, 2285, 2283, 1, 0, 0, 0, 2286, 2287, 5, 866, 0, 0, 2287, 2292, 3, 116, 58, 0, 2288, 2289, 5, 868, 0, 0, 2289, 2291, 3, 116, 58, 0, 2290, 2288, 1, 0, 0, 0, 2291, 2294, 1, 0, 0, 0, 2292, 2290, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2295, 1, 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2295, 2296, 5, 867, 0, 0, 2296, 2298, 1, 0, 0, 0, 2297, 2286, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2321, 1, 0, 0, 0, 2299, 2300, 5, 130, 0, 0, 2300, 2304, 3, 668, 334, 0, 2301, 2303, 3, 118, 59, 0, 2302, 2301, 1, 0, 0, 0, 2303, 2306, 1, 0, 0, 0, 2304, 2302, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2318, 1, 0, 0, 0, 2306, 2304, 1, 0, 0, 0, 2307, 2308, 5, 866, 0, 0, 2308, 2313, 3, 116, 58, 0, 2309, 2310, 5, 868, 0, 0, 2310, 2312, 3, 116, 58, 0, 2311, 2309, 1, 0, 0, 0, 2312, 2315, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2316, 1, 0, 0, 0, 2315, 2313, 1, 0, 0, 0, 2316, 2317, 5, 867, 0, 0, 2317, 2319, 1, 0, 0, 0, 2318, 2307, 1, 0, 0, 0, 2318, 2319, 1, 0, 0, 0, 2319, 2321, 1, 0, 0, 0, 2320, 2174, 1, 0, 0, 0, 2320, 2208, 1, 0, 0, 0, 2320, 2233, 1, 0, 0, 0, 2320, 2266, 1, 0, 0, 0, 2320, 2299, 1, 0, 0, 0, 2321, 111, 1, 0, 0, 0, 2322, 2326, 3, 720, 360, 0, 2323, 2326, 3, 800, 400, 0, 2324, 2326, 5, 111, 0, 0, 2325, 2322, 1, 0, 0, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2324, 1, 0, 0, 0, 2326, 113, 1, 0, 0, 0, 2327, 2328, 5, 866, 0, 0, 2328, 2331, 3, 112, 56, 0, 2329, 2330, 5, 868, 0, 0, 2330, 2332, 3, 112, 56, 0, 2331, 2329, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2336, 5, 867, 0, 0, 2336, 115, 1, 0, 0, 0, 2337, 2338, 5, 652, 0, 0, 2338, 2342, 3, 702, 351, 0, 2339, 2341, 3, 118, 59, 0, 2340, 2339, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0, 2342, 2340, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 117, 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2345, 2347, 5, 42, 0, 0, 2346, 2345, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2350, 5, 647, 0, 0, 2349, 2348, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2351, 1, 0, 0, 0, 2351, 2353, 5, 380, 0, 0, 2352, 2354, 5, 857, 0, 0, 2353, 2352, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2394, 3, 688, 344, 0, 2356, 2358, 5, 340, 0, 0, 2357, 2359, 5, 857, 0, 0, 2358, 2357, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2394, 5, 882, 0, 0, 2361, 2362, 5, 360, 0, 0, 2362, 2364, 5, 367, 0, 0, 2363, 2365, 5, 857, 0, 0, 2364, 2363, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2394, 5, 882, 0, 0, 2367, 2368, 5, 82, 0, 0, 2368, 2370, 5, 367, 0, 0, 2369, 2371, 5, 857, 0, 0, 2370, 2369, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2394, 5, 882, 0, 0, 2373, 2375, 5, 480, 0, 0, 2374, 2376, 5, 857, 0, 0, 2375, 2374, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2394, 3, 708, 354, 0, 2378, 2380, 5, 490, 0, 0, 2379, 2381, 5, 857, 0, 0, 2380, 2379, 1, 0, 0, 0, 2380, 2381, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2394, 3, 708, 354, 0, 2383, 2385, 5, 658, 0, 0, 2384, 2386, 5, 857, 0, 0, 2385, 2384, 1, 0, 0, 0, 2385, 2386, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2394, 3, 662, 331, 0, 2388, 2390, 5, 504, 0, 0, 2389, 2391, 5, 857, 0, 0, 2390, 2389, 1, 0, 0, 0, 2390, 2391, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 3, 702, 351, 0, 2393, 2346, 1, 0, 0, 0, 2393, 2356, 1, 0, 0, 0, 2393, 2361, 1, 0, 0, 0, 2393, 2367, 1, 0, 0, 0, 2393, 2373, 1, 0, 0, 0, 2393, 2378, 1, 0, 0, 0, 2393, 2383, 1, 0, 0, 0, 2393, 2388, 1, 0, 0, 0, 2394, 119, 1, 0, 0, 0, 2395, 2396, 5, 8, 0, 0, 2396, 2398, 7, 0, 0, 0, 2397, 2399, 3, 624, 312, 0, 2398, 2397, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2401, 1, 0, 0, 0, 2400, 2402, 3, 52, 26, 0, 2401, 2400, 1, 0, 0, 0, 2402, 2403, 1, 0, 0, 0, 2403, 2401, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2414, 1, 0, 0, 0, 2405, 2406, 5, 8, 0, 0, 2406, 2407, 7, 0, 0, 0, 2407, 2408, 3, 624, 312, 0, 2408, 2409, 5, 677, 0, 0, 2409, 2410, 5, 360, 0, 0, 2410, 2411, 5, 367, 0, 0, 2411, 2412, 5, 496, 0, 0, 2412, 2414, 1, 0, 0, 0, 2413, 2395, 1, 0, 0, 0, 2413, 2405, 1, 0, 0, 0, 2414, 121, 1, 0, 0, 0, 2415, 2417, 5, 8, 0, 0, 2416, 2418, 3, 58, 29, 0, 2417, 2416, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2420, 5, 385, 0, 0, 2420, 2424, 3, 698, 349, 0, 2421, 2422, 5, 119, 0, 0, 2422, 2423, 5, 590, 0, 0, 2423, 2425, 3, 60, 30, 0, 2424, 2421, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2432, 1, 0, 0, 0, 2426, 2427, 5, 119, 0, 0, 2427, 2429, 5, 343, 0, 0, 2428, 2430, 5, 114, 0, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2433, 5, 541, 0, 0, 2432, 2426, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2437, 1, 0, 0, 0, 2434, 2435, 5, 141, 0, 0, 2435, 2436, 5, 176, 0, 0, 2436, 2438, 3, 698, 349, 0, 2437, 2434, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2441, 3, 68, 34, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2444, 1, 0, 0, 0, 2442, 2443, 5, 340, 0, 0, 2443, 2445, 5, 882, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2448, 1, 0, 0, 0, 2446, 2447, 5, 371, 0, 0, 2447, 2449, 3, 416, 208, 0, 2448, 2446, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 123, 1, 0, 0, 0, 2450, 2451, 5, 8, 0, 0, 2451, 2452, 5, 409, 0, 0, 2452, 2456, 3, 628, 314, 0, 2453, 2455, 3, 76, 38, 0, 2454, 2453, 1, 0, 0, 0, 2455, 2458, 1, 0, 0, 0, 2456, 2454, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 125, 1, 0, 0, 0, 2458, 2456, 1, 0, 0, 0, 2459, 2460, 5, 8, 0, 0, 2460, 2461, 5, 433, 0, 0, 2461, 2462, 5, 585, 0, 0, 2462, 2463, 5, 801, 0, 0, 2463, 2464, 5, 453, 0, 0, 2464, 2465, 5, 92, 0, 0, 2465, 127, 1, 0, 0, 0, 2466, 2467, 5, 8, 0, 0, 2467, 2468, 5, 451, 0, 0, 2468, 2469, 5, 74, 0, 0, 2469, 2470, 3, 702, 351, 0, 2470, 2471, 5, 6, 0, 0, 2471, 2472, 5, 671, 0, 0, 2472, 2478, 5, 882, 0, 0, 2473, 2475, 5, 428, 0, 0, 2474, 2476, 5, 857, 0, 0, 2475, 2474, 1, 0, 0, 0, 2475, 2476, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2479, 3, 710, 355, 0, 2478, 2473, 1, 0, 0, 0, 2478, 2479, 1, 0, 0, 0, 2479, 2481, 1, 0, 0, 0, 2480, 2482, 5, 687, 0, 0, 2481, 2480, 1, 0, 0, 0, 2481, 2482, 1, 0, 0, 0, 2482, 2483, 1, 0, 0, 0, 2483, 2485, 5, 380, 0, 0, 2484, 2486, 5, 857, 0, 0, 2485, 2484, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2488, 3, 688, 344, 0, 2488, 129, 1, 0, 0, 0, 2489, 2490, 5, 8, 0, 0, 2490, 2491, 5, 132, 0, 0, 2491, 2495, 3, 698, 349, 0, 2492, 2494, 3, 76, 38, 0, 2493, 2492, 1, 0, 0, 0, 2494, 2497, 1, 0, 0, 0, 2495, 2493, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 131, 1, 0, 0, 0, 2497, 2495, 1, 0, 0, 0, 2498, 2499, 5, 8, 0, 0, 2499, 2500, 5, 592, 0, 0, 2500, 2501, 3, 702, 351, 0, 2501, 2502, 5, 518, 0, 0, 2502, 2503, 5, 866, 0, 0, 2503, 2508, 3, 78, 39, 0, 2504, 2505, 5, 868, 0, 0, 2505, 2507, 3, 78, 39, 0, 2506, 2504, 1, 0, 0, 0, 2507, 2510, 1, 0, 0, 0, 2508, 2506, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2511, 1, 0, 0, 0, 2510, 2508, 1, 0, 0, 0, 2511, 2512, 5, 867, 0, 0, 2512, 133, 1, 0, 0, 0, 2513, 2514, 5, 8, 0, 0, 2514, 2515, 5, 173, 0, 0, 2515, 2524, 3, 648, 324, 0, 2516, 2521, 3, 140, 70, 0, 2517, 2518, 5, 868, 0, 0, 2518, 2520, 3, 140, 70, 0, 2519, 2517, 1, 0, 0, 0, 2520, 2523, 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 2525, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2516, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2533, 1, 0, 0, 0, 2526, 2530, 3, 142, 71, 0, 2527, 2529, 3, 142, 71, 0, 2528, 2527, 1, 0, 0, 0, 2529, 2532, 1, 0, 0, 0, 2530, 2528, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2534, 1, 0, 0, 0, 2532, 2530, 1, 0, 0, 0, 2533, 2526, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 135, 1, 0, 0, 0, 2535, 2537, 5, 8, 0, 0, 2536, 2538, 5, 180, 0, 0, 2537, 2536, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2540, 5, 658, 0, 0, 2540, 2541, 3, 662, 331, 0, 2541, 2542, 7, 34, 0, 0, 2542, 2543, 5, 361, 0, 0, 2543, 2549, 5, 882, 0, 0, 2544, 2546, 5, 428, 0, 0, 2545, 2547, 5, 857, 0, 0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2550, 3, 710, 355, 0, 2549, 2544, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2552, 1, 0, 0, 0, 2551, 2553, 5, 687, 0, 0, 2552, 2551, 1, 0, 0, 0, 2552, 2553, 1, 0, 0, 0, 2553, 2557, 1, 0, 0, 0, 2554, 2555, 5, 141, 0, 0, 2555, 2556, 5, 176, 0, 0, 2556, 2558, 3, 660, 330, 0, 2557, 2554, 1, 0, 0, 0, 2557, 2558, 1, 0, 0, 0, 2558, 2564, 1, 0, 0, 0, 2559, 2561, 5, 314, 0, 0, 2560, 2562, 5, 857, 0, 0, 2561, 2560, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2563, 1, 0, 0, 0, 2563, 2565, 3, 710, 355, 0, 2564, 2559, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2568, 1, 0, 0, 0, 2566, 2567, 5, 155, 0, 0, 2567, 2569, 7, 35, 0, 0, 2568, 2566, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2575, 1, 0, 0, 0, 2570, 2572, 5, 376, 0, 0, 2571, 2573, 5, 857, 0, 0, 2572, 2571, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2574, 1, 0, 0, 0, 2574, 2576, 5, 882, 0, 0, 2575, 2570, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2582, 1, 0, 0, 0, 2577, 2579, 5, 380, 0, 0, 2578, 2580, 5, 857, 0, 0, 2579, 2578, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 2583, 3, 688, 344, 0, 2582, 2577, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2589, 1, 0, 0, 0, 2584, 2586, 5, 825, 0, 0, 2585, 2587, 5, 857, 0, 0, 2586, 2585, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, 0, 2588, 2590, 5, 882, 0, 0, 2589, 2584, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 137, 1, 0, 0, 0, 2591, 2595, 5, 8, 0, 0, 2592, 2593, 5, 308, 0, 0, 2593, 2594, 5, 857, 0, 0, 2594, 2596, 7, 10, 0, 0, 2595, 2592, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2598, 1, 0, 0, 0, 2597, 2599, 3, 58, 29, 0, 2598, 2597, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2603, 1, 0, 0, 0, 2600, 2601, 5, 162, 0, 0, 2601, 2602, 5, 591, 0, 0, 2602, 2604, 7, 11, 0, 0, 2603, 2600, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2605, 1, 0, 0, 0, 2605, 2606, 5, 684, 0, 0, 2606, 2611, 3, 632, 316, 0, 2607, 2608, 5, 866, 0, 0, 2608, 2609, 3, 656, 328, 0, 2609, 2610, 5, 867, 0, 0, 2610, 2612, 1, 0, 0, 0, 2611, 2607, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 2613, 1, 0, 0, 0, 2613, 2614, 5, 13, 0, 0, 2614, 2621, 3, 204, 102, 0, 2615, 2617, 5, 194, 0, 0, 2616, 2618, 7, 12, 0, 0, 2617, 2616, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2620, 5, 27, 0, 0, 2620, 2622, 5, 121, 0, 0, 2621, 2615, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 139, 1, 0, 0, 0, 2623, 2630, 3, 98, 49, 0, 2624, 2626, 5, 868, 0, 0, 2625, 2624, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2629, 3, 98, 49, 0, 2628, 2625, 1, 0, 0, 0, 2629, 2632, 1, 0, 0, 0, 2630, 2628, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2888, 1, 0, 0, 0, 2632, 2630, 1, 0, 0, 0, 2633, 2635, 5, 6, 0, 0, 2634, 2636, 5, 29, 0, 0, 2635, 2634, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2638, 3, 658, 329, 0, 2638, 2642, 3, 88, 44, 0, 2639, 2643, 5, 402, 0, 0, 2640, 2641, 5, 306, 0, 0, 2641, 2643, 3, 658, 329, 0, 2642, 2639, 1, 0, 0, 0, 2642, 2640, 1, 0, 0, 0, 2642, 2643, 1, 0, 0, 0, 2643, 2888, 1, 0, 0, 0, 2644, 2646, 5, 6, 0, 0, 2645, 2647, 5, 29, 0, 0, 2646, 2645, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 2649, 5, 866, 0, 0, 2649, 2650, 3, 658, 329, 0, 2650, 2657, 3, 88, 44, 0, 2651, 2652, 5, 868, 0, 0, 2652, 2653, 3, 658, 329, 0, 2653, 2654, 3, 88, 44, 0, 2654, 2656, 1, 0, 0, 0, 2655, 2651, 1, 0, 0, 0, 2656, 2659, 1, 0, 0, 0, 2657, 2655, 1, 0, 0, 0, 2657, 2658, 1, 0, 0, 0, 2658, 2660, 1, 0, 0, 0, 2659, 2657, 1, 0, 0, 0, 2660, 2661, 5, 867, 0, 0, 2661, 2888, 1, 0, 0, 0, 2662, 2663, 5, 6, 0, 0, 2663, 2665, 7, 18, 0, 0, 2664, 2666, 3, 638, 319, 0, 2665, 2664, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2668, 1, 0, 0, 0, 2667, 2669, 3, 70, 35, 0, 2668, 2667, 1, 0, 0, 0, 2668, 2669, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2674, 3, 734, 367, 0, 2671, 2673, 3, 72, 36, 0, 2672, 2671, 1, 0, 0, 0, 2673, 2676, 1, 0, 0, 0, 2674, 2672, 1, 0, 0, 0, 2674, 2675, 1, 0, 0, 0, 2675, 2888, 1, 0, 0, 0, 2676, 2674, 1, 0, 0, 0, 2677, 2678, 5, 6, 0, 0, 2678, 2680, 7, 19, 0, 0, 2679, 2681, 7, 18, 0, 0, 2680, 2679, 1, 0, 0, 0, 2680, 2681, 1, 0, 0, 0, 2681, 2683, 1, 0, 0, 0, 2682, 2684, 3, 638, 319, 0, 2683, 2682, 1, 0, 0, 0, 2683, 2684, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2689, 3, 734, 367, 0, 2686, 2688, 3, 72, 36, 0, 2687, 2686, 1, 0, 0, 0, 2688, 2691, 1, 0, 0, 0, 2689, 2687, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 2888, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2692, 2697, 5, 6, 0, 0, 2693, 2695, 5, 31, 0, 0, 2694, 2696, 3, 702, 351, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2698, 1, 0, 0, 0, 2697, 2693, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2700, 5, 131, 0, 0, 2700, 2702, 5, 92, 0, 0, 2701, 2703, 3, 70, 35, 0, 2702, 2701, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2708, 3, 734, 367, 0, 2705, 2707, 3, 72, 36, 0, 2706, 2705, 1, 0, 0, 0, 2707, 2710, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2888, 1, 0, 0, 0, 2710, 2708, 1, 0, 0, 0, 2711, 2716, 5, 6, 0, 0, 2712, 2714, 5, 31, 0, 0, 2713, 2715, 3, 702, 351, 0, 2714, 2713, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 2717, 1, 0, 0, 0, 2716, 2712, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2720, 5, 182, 0, 0, 2719, 2721, 7, 18, 0, 0, 2720, 2719, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 2723, 1, 0, 0, 0, 2722, 2724, 3, 638, 319, 0, 2723, 2722, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2727, 3, 70, 35, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2732, 3, 734, 367, 0, 2729, 2731, 3, 72, 36, 0, 2730, 2729, 1, 0, 0, 0, 2731, 2734, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 2888, 1, 0, 0, 0, 2734, 2732, 1, 0, 0, 0, 2735, 2740, 5, 6, 0, 0, 2736, 2738, 5, 31, 0, 0, 2737, 2739, 3, 702, 351, 0, 2738, 2737, 1, 0, 0, 0, 2738, 2739, 1, 0, 0, 0, 2739, 2741, 1, 0, 0, 0, 2740, 2736, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742, 2743, 5, 67, 0, 0, 2743, 2745, 5, 92, 0, 0, 2744, 2746, 3, 638, 319, 0, 2745, 2744, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2747, 1, 0, 0, 0, 2747, 2748, 3, 734, 367, 0, 2748, 2749, 3, 92, 46, 0, 2749, 2888, 1, 0, 0, 0, 2750, 2752, 5, 6, 0, 0, 2751, 2753, 3, 84, 42, 0, 2752, 2751, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2888, 1, 0, 0, 0, 2754, 2755, 5, 51, 0, 0, 2755, 2756, 7, 36, 0, 0, 2756, 2888, 3, 702, 351, 0, 2757, 2758, 5, 8, 0, 0, 2758, 2759, 7, 36, 0, 0, 2759, 2761, 3, 702, 351, 0, 2760, 2762, 5, 114, 0, 0, 2761, 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2764, 1, 0, 0, 0, 2763, 2765, 5, 57, 0, 0, 2764, 2763, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2888, 1, 0, 0, 0, 2766, 2768, 5, 308, 0, 0, 2767, 2769, 5, 857, 0, 0, 2768, 2767, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2888, 7, 37, 0, 0, 2771, 2773, 5, 8, 0, 0, 2772, 2774, 5, 29, 0, 0, 2773, 2772, 1, 0, 0, 0, 2773, 2774, 1, 0, 0, 0, 2774, 2775, 1, 0, 0, 0, 2775, 2783, 3, 658, 329, 0, 2776, 2777, 5, 155, 0, 0, 2777, 2778, 5, 42, 0, 0, 2778, 2784, 3, 750, 375, 0, 2779, 2780, 5, 155, 0, 0, 2780, 2784, 7, 16, 0, 0, 2781, 2782, 5, 51, 0, 0, 2782, 2784, 5, 42, 0, 0, 2783, 2776, 1, 0, 0, 0, 2783, 2779, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2784, 2888, 1, 0, 0, 0, 2785, 2786, 5, 8, 0, 0, 2786, 2787, 5, 82, 0, 0, 2787, 2788, 3, 638, 319, 0, 2788, 2789, 7, 16, 0, 0, 2789, 2888, 1, 0, 0, 0, 2790, 2792, 5, 25, 0, 0, 2791, 2793, 5, 29, 0, 0, 2792, 2791, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2794, 1, 0, 0, 0, 2794, 2795, 3, 658, 329, 0, 2795, 2796, 3, 654, 327, 0, 2796, 2800, 3, 88, 44, 0, 2797, 2801, 5, 402, 0, 0, 2798, 2799, 5, 306, 0, 0, 2799, 2801, 3, 658, 329, 0, 2800, 2797, 1, 0, 0, 0, 2800, 2798, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 2888, 1, 0, 0, 0, 2802, 2804, 5, 42, 0, 0, 2803, 2802, 1, 0, 0, 0, 2803, 2804, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2806, 5, 26, 0, 0, 2806, 2807, 5, 155, 0, 0, 2807, 2808, 5, 857, 0, 0, 2808, 2814, 3, 684, 342, 0, 2809, 2811, 5, 28, 0, 0, 2810, 2812, 5, 857, 0, 0, 2811, 2810, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 2813, 1, 0, 0, 0, 2813, 2815, 3, 686, 343, 0, 2814, 2809, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2888, 1, 0, 0, 0, 2816, 2817, 5, 33, 0, 0, 2817, 2821, 5, 176, 0, 0, 2818, 2822, 5, 823, 0, 0, 2819, 2820, 5, 26, 0, 0, 2820, 2822, 5, 155, 0, 0, 2821, 2818, 1, 0, 0, 0, 2821, 2819, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2826, 3, 684, 342, 0, 2824, 2825, 5, 28, 0, 0, 2825, 2827, 3, 686, 343, 0, 2826, 2824, 1, 0, 0, 0, 2826, 2827, 1, 0, 0, 0, 2827, 2888, 1, 0, 0, 0, 2828, 2829, 7, 38, 0, 0, 2829, 2888, 5, 93, 0, 0, 2830, 2831, 7, 39, 0, 0, 2831, 2888, 5, 658, 0, 0, 2832, 2834, 5, 51, 0, 0, 2833, 2835, 5, 29, 0, 0, 2834, 2833, 1, 0, 0, 0, 2834, 2835, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2888, 3, 658, 329, 0, 2837, 2838, 5, 51, 0, 0, 2838, 2839, 7, 18, 0, 0, 2839, 2888, 3, 638, 319, 0, 2840, 2841, 5, 51, 0, 0, 2841, 2842, 5, 131, 0, 0, 2842, 2888, 5, 92, 0, 0, 2843, 2844, 5, 51, 0, 0, 2844, 2845, 5, 67, 0, 0, 2845, 2846, 5, 92, 0, 0, 2846, 2888, 3, 702, 351, 0, 2847, 2888, 5, 66, 0, 0, 2848, 2850, 5, 104, 0, 0, 2849, 2851, 5, 857, 0, 0, 2850, 2849, 1, 0, 0, 0, 2850, 2851, 1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2888, 7, 4, 0, 0, 2853, 2855, 5, 492, 0, 0, 2854, 2856, 5, 29, 0, 0, 2855, 2854, 1, 0, 0, 0, 2855, 2856, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2858, 3, 658, 329, 0, 2858, 2862, 3, 88, 44, 0, 2859, 2863, 5, 402, 0, 0, 2860, 2861, 5, 306, 0, 0, 2861, 2863, 3, 658, 329, 0, 2862, 2859, 1, 0, 0, 0, 2862, 2860, 1, 0, 0, 0, 2862, 2863, 1, 0, 0, 0, 2863, 2888, 1, 0, 0, 0, 2864, 2865, 5, 125, 0, 0, 2865, 2866, 5, 20, 0, 0, 2866, 2888, 3, 656, 328, 0, 2867, 2868, 5, 141, 0, 0, 2868, 2869, 5, 29, 0, 0, 2869, 2870, 3, 658, 329, 0, 2870, 2871, 5, 176, 0, 0, 2871, 2872, 3, 654, 327, 0, 2872, 2888, 1, 0, 0, 0, 2873, 2874, 5, 141, 0, 0, 2874, 2875, 7, 18, 0, 0, 2875, 2876, 3, 638, 319, 0, 2876, 2877, 5, 176, 0, 0, 2877, 2878, 3, 634, 317, 0, 2878, 2888, 1, 0, 0, 0, 2879, 2881, 5, 141, 0, 0, 2880, 2882, 7, 40, 0, 0, 2881, 2880, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2883, 1, 0, 0, 0, 2883, 2888, 3, 644, 322, 0, 2884, 2885, 7, 41, 0, 0, 2885, 2888, 5, 681, 0, 0, 2886, 2888, 3, 142, 71, 0, 2887, 2623, 1, 0, 0, 0, 2887, 2633, 1, 0, 0, 0, 2887, 2644, 1, 0, 0, 0, 2887, 2662, 1, 0, 0, 0, 2887, 2677, 1, 0, 0, 0, 2887, 2692, 1, 0, 0, 0, 2887, 2711, 1, 0, 0, 0, 2887, 2735, 1, 0, 0, 0, 2887, 2750, 1, 0, 0, 0, 2887, 2754, 1, 0, 0, 0, 2887, 2757, 1, 0, 0, 0, 2887, 2766, 1, 0, 0, 0, 2887, 2771, 1, 0, 0, 0, 2887, 2785, 1, 0, 0, 0, 2887, 2790, 1, 0, 0, 0, 2887, 2803, 1, 0, 0, 0, 2887, 2816, 1, 0, 0, 0, 2887, 2828, 1, 0, 0, 0, 2887, 2830, 1, 0, 0, 0, 2887, 2832, 1, 0, 0, 0, 2887, 2837, 1, 0, 0, 0, 2887, 2840, 1, 0, 0, 0, 2887, 2843, 1, 0, 0, 0, 2887, 2847, 1, 0, 0, 0, 2887, 2848, 1, 0, 0, 0, 2887, 2853, 1, 0, 0, 0, 2887, 2864, 1, 0, 0, 0, 2887, 2867, 1, 0, 0, 0, 2887, 2873, 1, 0, 0, 0, 2887, 2879, 1, 0, 0, 0, 2887, 2884, 1, 0, 0, 0, 2887, 2886, 1, 0, 0, 0, 2888, 141, 1, 0, 0, 0, 2889, 2890, 5, 6, 0, 0, 2890, 2891, 5, 130, 0, 0, 2891, 2892, 5, 866, 0, 0, 2892, 2897, 3, 110, 55, 0, 2893, 2894, 5, 868, 0, 0, 2894, 2896, 3, 110, 55, 0, 2895, 2893, 1, 0, 0, 0, 2896, 2899, 1, 0, 0, 0, 2897, 2895, 1, 0, 0, 0, 2897, 2898, 1, 0, 0, 0, 2898, 2900, 1, 0, 0, 0, 2899, 2897, 1, 0, 0, 0, 2900, 2901, 5, 867, 0, 0, 2901, 2988, 1, 0, 0, 0, 2902, 2903, 5, 51, 0, 0, 2903, 2904, 5, 130, 0, 0, 2904, 2988, 3, 666, 333, 0, 2905, 2906, 5, 369, 0, 0, 2906, 2909, 5, 130, 0, 0, 2907, 2910, 3, 666, 333, 0, 2908, 2910, 5, 7, 0, 0, 2909, 2907, 1, 0, 0, 0, 2909, 2908, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2988, 5, 658, 0, 0, 2912, 2913, 5, 425, 0, 0, 2913, 2916, 5, 130, 0, 0, 2914, 2917, 3, 666, 333, 0, 2915, 2917, 5, 7, 0, 0, 2916, 2914, 1, 0, 0, 0, 2916, 2915, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2988, 5, 658, 0, 0, 2919, 2920, 5, 668, 0, 0, 2920, 2923, 5, 130, 0, 0, 2921, 2924, 3, 666, 333, 0, 2922, 2924, 5, 7, 0, 0, 2923, 2921, 1, 0, 0, 0, 2923, 2922, 1, 0, 0, 0, 2924, 2988, 1, 0, 0, 0, 2925, 2926, 5, 335, 0, 0, 2926, 2927, 5, 130, 0, 0, 2927, 2988, 3, 708, 354, 0, 2928, 2929, 5, 561, 0, 0, 2929, 2930, 5, 130, 0, 0, 2930, 2931, 3, 666, 333, 0, 2931, 2932, 5, 88, 0, 0, 2932, 2933, 5, 866, 0, 0, 2933, 2938, 3, 110, 55, 0, 2934, 2935, 5, 868, 0, 0, 2935, 2937, 3, 110, 55, 0, 2936, 2934, 1, 0, 0, 0, 2937, 2940, 1, 0, 0, 0, 2938, 2936, 1, 0, 0, 0, 2938, 2939, 1, 0, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2938, 1, 0, 0, 0, 2941, 2942, 5, 867, 0, 0, 2942, 2988, 1, 0, 0, 0, 2943, 2944, 5, 388, 0, 0, 2944, 2945, 5, 130, 0, 0, 2945, 2946, 3, 668, 334, 0, 2946, 2947, 5, 194, 0, 0, 2947, 2948, 5, 173, 0, 0, 2948, 2951, 3, 648, 324, 0, 2949, 2950, 7, 41, 0, 0, 2950, 2952, 5, 681, 0, 0, 2951, 2949, 1, 0, 0, 0, 2951, 2952, 1, 0, 0, 0, 2952, 2988, 1, 0, 0, 0, 2953, 2954, 5, 10, 0, 0, 2954, 2957, 5, 130, 0, 0, 2955, 2958, 3, 666, 333, 0, 2956, 2958, 5, 7, 0, 0, 2957, 2955, 1, 0, 0, 0, 2957, 2956, 1, 0, 0, 0, 2958, 2988, 1, 0, 0, 0, 2959, 2960, 5, 27, 0, 0, 2960, 2963, 5, 130, 0, 0, 2961, 2964, 3, 666, 333, 0, 2962, 2964, 5, 7, 0, 0, 2963, 2961, 1, 0, 0, 0, 2963, 2962, 1, 0, 0, 0, 2964, 2988, 1, 0, 0, 0, 2965, 2966, 5, 120, 0, 0, 2966, 2969, 5, 130, 0, 0, 2967, 2970, 3, 666, 333, 0, 2968, 2970, 5, 7, 0, 0, 2969, 2967, 1, 0, 0, 0, 2969, 2968, 1, 0, 0, 0, 2970, 2988, 1, 0, 0, 0, 2971, 2972, 5, 550, 0, 0, 2972, 2975, 5, 130, 0, 0, 2973, 2976, 3, 666, 333, 0, 2974, 2976, 5, 7, 0, 0, 2975, 2973, 1, 0, 0, 0, 2975, 2974, 1, 0, 0, 0, 2976, 2988, 1, 0, 0, 0, 2977, 2978, 5, 562, 0, 0, 2978, 2981, 5, 130, 0, 0, 2979, 2982, 3, 666, 333, 0, 2980, 2982, 5, 7, 0, 0, 2981, 2979, 1, 0, 0, 0, 2981, 2980, 1, 0, 0, 0, 2982, 2988, 1, 0, 0, 0, 2983, 2984, 5, 560, 0, 0, 2984, 2988, 5, 527, 0, 0, 2985, 2986, 5, 677, 0, 0, 2986, 2988, 5, 527, 0, 0, 2987, 2889, 1, 0, 0, 0, 2987, 2902, 1, 0, 0, 0, 2987, 2905, 1, 0, 0, 0, 2987, 2912, 1, 0, 0, 0, 2987, 2919, 1, 0, 0, 0, 2987, 2925, 1, 0, 0, 0, 2987, 2928, 1, 0, 0, 0, 2987, 2943, 1, 0, 0, 0, 2987, 2953, 1, 0, 0, 0, 2987, 2959, 1, 0, 0, 0, 2987, 2965, 1, 0, 0, 0, 2987, 2971, 1, 0, 0, 0, 2987, 2977, 1, 0, 0, 0, 2987, 2983, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 143, 1, 0, 0, 0, 2989, 2990, 5, 51, 0, 0, 2990, 2992, 7, 0, 0, 0, 2991, 2993, 3, 754, 377, 0, 2992, 2991, 1, 0, 0, 0, 2992, 2993, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2995, 3, 624, 312, 0, 2995, 145, 1, 0, 0, 0, 2996, 2997, 5, 51, 0, 0, 2997, 2999, 5, 385, 0, 0, 2998, 3000, 3, 754, 377, 0, 2999, 2998, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 3, 698, 349, 0, 3002, 147, 1, 0, 0, 0, 3003, 3004, 5, 51, 0, 0, 3004, 3006, 5, 82, 0, 0, 3005, 3007, 7, 1, 0, 0, 3006, 3005, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 0, 3008, 3009, 3, 638, 319, 0, 3009, 3010, 5, 119, 0, 0, 3010, 3023, 3, 648, 324, 0, 3011, 3013, 5, 308, 0, 0, 3012, 3014, 5, 857, 0, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3015, 1, 0, 0, 0, 3015, 3022, 7, 3, 0, 0, 3016, 3018, 5, 104, 0, 0, 3017, 3019, 5, 857, 0, 0, 3018, 3017, 1, 0, 0, 0, 3018, 3019, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3022, 7, 4, 0, 0, 3021, 3011, 1, 0, 0, 0, 3021, 3016, 1, 0, 0, 0, 3022, 3025, 1, 0, 0, 0, 3023, 3021, 1, 0, 0, 0, 3023, 3024, 1, 0, 0, 0, 3024, 149, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3026, 3027, 5, 51, 0, 0, 3027, 3028, 5, 451, 0, 0, 3028, 3029, 5, 74, 0, 0, 3029, 3030, 3, 702, 351, 0, 3030, 3032, 5, 380, 0, 0, 3031, 3033, 5, 857, 0, 0, 3032, 3031, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3034, 1, 0, 0, 0, 3034, 3035, 3, 688, 344, 0, 3035, 151, 1, 0, 0, 0, 3036, 3037, 5, 51, 0, 0, 3037, 3039, 5, 132, 0, 0, 3038, 3040, 3, 754, 377, 0, 3039, 3038, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 3042, 3, 698, 349, 0, 3042, 153, 1, 0, 0, 0, 3043, 3044, 5, 51, 0, 0, 3044, 3046, 5, 409, 0, 0, 3045, 3047, 3, 754, 377, 0, 3046, 3045, 1, 0, 0, 0, 3046, 3047, 1, 0, 0, 0, 3047, 3048, 1, 0, 0, 0, 3048, 3049, 3, 628, 314, 0, 3049, 155, 1, 0, 0, 0, 3050, 3051, 5, 51, 0, 0, 3051, 3053, 5, 592, 0, 0, 3052, 3054, 3, 754, 377, 0, 3053, 3052, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055, 3056, 3, 702, 351, 0, 3056, 157, 1, 0, 0, 0, 3057, 3058, 5, 51, 0, 0, 3058, 3059, 5, 161, 0, 0, 3059, 3060, 5, 137, 0, 0, 3060, 3062, 5, 835, 0, 0, 3061, 3063, 3, 754, 377, 0, 3062, 3061, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3065, 5, 883, 0, 0, 3065, 159, 1, 0, 0, 0, 3066, 3068, 5, 51, 0, 0, 3067, 3069, 5, 660, 0, 0, 3068, 3067, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 1, 0, 0, 0, 3070, 3072, 5, 173, 0, 0, 3071, 3073, 3, 754, 377, 0, 3072, 3071, 1, 0, 0, 0, 3072, 3073, 1, 0, 0, 0, 3073, 3074, 1, 0, 0, 0, 3074, 3076, 3, 646, 323, 0, 3075, 3077, 7, 42, 0, 0, 3076, 3075, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 161, 1, 0, 0, 0, 3078, 3080, 5, 51, 0, 0, 3079, 3081, 5, 180, 0, 0, 3080, 3079, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 3082, 1, 0, 0, 0, 3082, 3083, 5, 658, 0, 0, 3083, 3089, 3, 662, 331, 0, 3084, 3086, 5, 380, 0, 0, 3085, 3087, 5, 857, 0, 0, 3086, 3085, 1, 0, 0, 0, 3086, 3087, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3090, 3, 688, 344, 0, 3089, 3084, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 163, 1, 0, 0, 0, 3091, 3092, 5, 51, 0, 0, 3092, 3094, 5, 178, 0, 0, 3093, 3095, 3, 754, 377, 0, 3094, 3093, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3096, 1, 0, 0, 0, 3096, 3097, 3, 698, 349, 0, 3097, 165, 1, 0, 0, 0, 3098, 3099, 5, 51, 0, 0, 3099, 3101, 5, 684, 0, 0, 3100, 3102, 3, 754, 377, 0, 3101, 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 1, 0, 0, 0, 3103, 3108, 3, 632, 316, 0, 3104, 3105, 5, 868, 0, 0, 3105, 3107, 3, 632, 316, 0, 3106, 3104, 1, 0, 0, 0, 3107, 3110, 1, 0, 0, 0, 3108, 3106, 1, 0, 0, 0, 3108, 3109, 1, 0, 0, 0, 3109, 3112, 1, 0, 0, 0, 3110, 3108, 1, 0, 0, 0, 3111, 3113, 7, 42, 0, 0, 3112, 3111, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 167, 1, 0, 0, 0, 3114, 3115, 5, 51, 0, 0, 3115, 3117, 5, 582, 0, 0, 3116, 3118, 3, 754, 377, 0, 3117, 3116, 1, 0, 0, 0, 3117, 3118, 1, 0, 0, 0, 3118, 3119, 1, 0, 0, 0, 3119, 3120, 3, 650, 325, 0, 3120, 169, 1, 0, 0, 0, 3121, 3122, 5, 155, 0, 0, 3122, 3123, 5, 42, 0, 0, 3123, 3127, 5, 582, 0, 0, 3124, 3128, 5, 505, 0, 0, 3125, 3128, 5, 7, 0, 0, 3126, 3128, 3, 650, 325, 0, 3127, 3124, 1, 0, 0, 0, 3127, 3125, 1, 0, 0, 0, 3127, 3126, 1, 0, 0, 0, 3128, 3129, 1, 0, 0, 0, 3129, 3130, 5, 176, 0, 0, 3130, 3135, 3, 652, 326, 0, 3131, 3132, 5, 868, 0, 0, 3132, 3134, 3, 652, 326, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3142, 1, 0, 0, 0, 3137, 3135, 1, 0, 0, 0, 3138, 3139, 5, 155, 0, 0, 3139, 3140, 5, 582, 0, 0, 3140, 3142, 3, 462, 231, 0, 3141, 3121, 1, 0, 0, 0, 3141, 3138, 1, 0, 0, 0, 3142, 171, 1, 0, 0, 0, 3143, 3144, 5, 141, 0, 0, 3144, 3145, 5, 173, 0, 0, 3145, 3150, 3, 174, 87, 0, 3146, 3147, 5, 868, 0, 0, 3147, 3149, 3, 174, 87, 0, 3148, 3146, 1, 0, 0, 0, 3149, 3152, 1, 0, 0, 0, 3150, 3148, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 173, 1, 0, 0, 0, 3152, 3150, 1, 0, 0, 0, 3153, 3154, 3, 648, 324, 0, 3154, 3155, 5, 176, 0, 0, 3155, 3156, 3, 644, 322, 0, 3156, 175, 1, 0, 0, 0, 3157, 3159, 5, 668, 0, 0, 3158, 3160, 5, 173, 0, 0, 3159, 3158, 1, 0, 0, 0, 3159, 3160, 1, 0, 0, 0, 3160, 3161, 1, 0, 0, 0, 3161, 3162, 3, 648, 324, 0, 3162, 177, 1, 0, 0, 0, 3163, 3164, 5, 21, 0, 0, 3164, 3171, 3, 698, 349, 0, 3165, 3168, 5, 866, 0, 0, 3166, 3169, 3, 744, 372, 0, 3167, 3169, 3, 736, 368, 0, 3168, 3166, 1, 0, 0, 0, 3168, 3167, 1, 0, 0, 0, 3168, 3169, 1, 0, 0, 0, 3169, 3170, 1, 0, 0, 0, 3170, 3172, 5, 867, 0, 0, 3171, 3165, 1, 0, 0, 0, 3171, 3172, 1, 0, 0, 0, 3172, 179, 1, 0, 0, 0, 3173, 3176, 3, 234, 117, 0, 3174, 3176, 3, 236, 118, 0, 3175, 3173, 1, 0, 0, 0, 3175, 3174, 1, 0, 0, 0, 3176, 181, 1, 0, 0, 0, 3177, 3178, 5, 371, 0, 0, 3178, 3179, 3, 736, 368, 0, 3179, 183, 1, 0, 0, 0, 3180, 3185, 3, 238, 119, 0, 3181, 3185, 3, 240, 120, 0, 3182, 3185, 3, 242, 121, 0, 3183, 3185, 3, 244, 122, 0, 3184, 3180, 1, 0, 0, 0, 3184, 3181, 1, 0, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3183, 1, 0, 0, 0, 3185, 185, 1, 0, 0, 0, 3186, 3188, 5, 86, 0, 0, 3187, 3189, 7, 43, 0, 0, 3188, 3187, 1, 0, 0, 0, 3188, 3189, 1, 0, 0, 0, 3189, 3191, 1, 0, 0, 0, 3190, 3192, 5, 79, 0, 0, 3191, 3190, 1, 0, 0, 0, 3191, 3192, 1, 0, 0, 0, 3192, 3194, 1, 0, 0, 0, 3193, 3195, 5, 88, 0, 0, 3194, 3193, 1, 0, 0, 0, 3194, 3195, 1, 0, 0, 0, 3195, 3196, 1, 0, 0, 0, 3196, 3203, 3, 648, 324, 0, 3197, 3198, 5, 130, 0, 0, 3198, 3200, 5, 866, 0, 0, 3199, 3201, 3, 666, 333, 0, 3200, 3199, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3202, 1, 0, 0, 0, 3202, 3204, 5, 867, 0, 0, 3203, 3197, 1, 0, 0, 0, 3203, 3204, 1, 0, 0, 0, 3204, 3216, 1, 0, 0, 0, 3205, 3207, 3, 262, 131, 0, 3206, 3205, 1, 0, 0, 0, 3206, 3207, 1, 0, 0, 0, 3207, 3210, 1, 0, 0, 0, 3208, 3211, 3, 738, 369, 0, 3209, 3211, 3, 190, 95, 0, 3210, 3208, 1, 0, 0, 0, 3210, 3209, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3213, 1, 0, 0, 0, 3212, 3214, 3, 188, 94, 0, 3213, 3212, 1, 0, 0, 0, 3213, 3214, 1, 0, 0, 0, 3214, 3217, 1, 0, 0, 0, 3215, 3217, 3, 226, 113, 0, 3216, 3206, 1, 0, 0, 0, 3216, 3215, 1, 0, 0, 0, 3217, 3219, 1, 0, 0, 0, 3218, 3220, 3, 188, 94, 0, 3219, 3218, 1, 0, 0, 0, 3219, 3220, 1, 0, 0, 0, 3220, 3233, 1, 0, 0, 0, 3221, 3222, 5, 119, 0, 0, 3222, 3223, 5, 373, 0, 0, 3223, 3224, 5, 92, 0, 0, 3224, 3225, 5, 185, 0, 0, 3225, 3230, 3, 228, 114, 0, 3226, 3227, 5, 868, 0, 0, 3227, 3229, 3, 228, 114, 0, 3228, 3226, 1, 0, 0, 0, 3229, 3232, 1, 0, 0, 0, 3230, 3228, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0, 3231, 3234, 1, 0, 0, 0, 3232, 3230, 1, 0, 0, 0, 3233, 3221, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 187, 1, 0, 0, 0, 3235, 3236, 5, 13, 0, 0, 3236, 3238, 3, 702, 351, 0, 3237, 3239, 3, 262, 131, 0, 3238, 3237, 1, 0, 0, 0, 3238, 3239, 1, 0, 0, 0, 3239, 189, 1, 0, 0, 0, 3240, 3245, 3, 204, 102, 0, 3241, 3242, 5, 173, 0, 0, 3242, 3245, 3, 648, 324, 0, 3243, 3245, 3, 224, 112, 0, 3244, 3240, 1, 0, 0, 0, 3244, 3241, 1, 0, 0, 0, 3244, 3243, 1, 0, 0, 0, 3245, 191, 1, 0, 0, 0, 3246, 3252, 3, 194, 97, 0, 3247, 3249, 5, 828, 0, 0, 3248, 3250, 7, 44, 0, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3251, 1, 0, 0, 0, 3251, 3253, 3, 194, 97, 0, 3252, 3247, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3252, 1, 0, 0, 0, 3254, 3255, 1, 0, 0, 0, 3255, 193, 1, 0, 0, 0, 3256, 3258, 5, 866, 0, 0, 3257, 3256, 1, 0, 0, 0, 3257, 3258, 1, 0, 0, 0, 3258, 3259, 1, 0, 0, 0, 3259, 3261, 3, 274, 137, 0, 3260, 3262, 5, 867, 0, 0, 3261, 3260, 1, 0, 0, 0, 3261, 3262, 1, 0, 0, 0, 3262, 195, 1, 0, 0, 0, 3263, 3264, 5, 103, 0, 0, 3264, 3266, 5, 360, 0, 0, 3265, 3267, 7, 45, 0, 0, 3266, 3265, 1, 0, 0, 0, 3266, 3267, 1, 0, 0, 0, 3267, 3269, 1, 0, 0, 0, 3268, 3270, 5, 450, 0, 0, 3269, 3268, 1, 0, 0, 0, 3269, 3270, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3272, 5, 83, 0, 0, 3272, 3274, 5, 882, 0, 0, 3273, 3275, 7, 6, 0, 0, 3274, 3273, 1, 0, 0, 0, 3274, 3275, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3277, 5, 88, 0, 0, 3277, 3278, 5, 173, 0, 0, 3278, 3284, 3, 648, 324, 0, 3279, 3280, 5, 130, 0, 0, 3280, 3281, 5, 866, 0, 0, 3281, 3282, 3, 666, 333, 0, 3282, 3283, 5, 867, 0, 0, 3283, 3285, 1, 0, 0, 0, 3284, 3279, 1, 0, 0, 0, 3284, 3285, 1, 0, 0, 0, 3285, 3289, 1, 0, 0, 0, 3286, 3287, 5, 26, 0, 0, 3287, 3288, 5, 155, 0, 0, 3288, 3290, 3, 684, 342, 0, 3289, 3286, 1, 0, 0, 0, 3289, 3290, 1, 0, 0, 0, 3290, 3297, 1, 0, 0, 0, 3291, 3293, 7, 46, 0, 0, 3292, 3294, 3, 298, 149, 0, 3293, 3292, 1, 0, 0, 0, 3294, 3295, 1, 0, 0, 0, 3295, 3293, 1, 0, 0, 0, 3295, 3296, 1, 0, 0, 0, 3296, 3298, 1, 0, 0, 0, 3297, 3291, 1, 0, 0, 0, 3297, 3298, 1, 0, 0, 0, 3298, 3305, 1, 0, 0, 0, 3299, 3301, 5, 102, 0, 0, 3300, 3302, 3, 300, 150, 0, 3301, 3300, 1, 0, 0, 0, 3302, 3303, 1, 0, 0, 0, 3303, 3301, 1, 0, 0, 0, 3303, 3304, 1, 0, 0, 0, 3304, 3306, 1, 0, 0, 0, 3305, 3299, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3311, 1, 0, 0, 0, 3307, 3308, 5, 79, 0, 0, 3308, 3309, 3, 708, 354, 0, 3309, 3310, 7, 47, 0, 0, 3310, 3312, 1, 0, 0, 0, 3311, 3307, 1, 0, 0, 0, 3311, 3312, 1, 0, 0, 0, 3312, 3324, 1, 0, 0, 0, 3313, 3314, 5, 866, 0, 0, 3314, 3319, 3, 230, 115, 0, 3315, 3316, 5, 868, 0, 0, 3316, 3318, 3, 230, 115, 0, 3317, 3315, 1, 0, 0, 0, 3318, 3321, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3319, 3320, 1, 0, 0, 0, 3320, 3322, 1, 0, 0, 0, 3321, 3319, 1, 0, 0, 0, 3322, 3323, 5, 867, 0, 0, 3323, 3325, 1, 0, 0, 0, 3324, 3313, 1, 0, 0, 0, 3324, 3325, 1, 0, 0, 0, 3325, 3335, 1, 0, 0, 0, 3326, 3327, 5, 155, 0, 0, 3327, 3332, 3, 228, 114, 0, 3328, 3329, 5, 868, 0, 0, 3329, 3331, 3, 228, 114, 0, 3330, 3328, 1, 0, 0, 0, 3331, 3334, 1, 0, 0, 0, 3332, 3330, 1, 0, 0, 0, 3332, 3333, 1, 0, 0, 0, 3333, 3336, 1, 0, 0, 0, 3334, 3332, 1, 0, 0, 0, 3335, 3326, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 197, 1, 0, 0, 0, 3337, 3338, 5, 103, 0, 0, 3338, 3340, 5, 695, 0, 0, 3339, 3341, 7, 45, 0, 0, 3340, 3339, 1, 0, 0, 0, 3340, 3341, 1, 0, 0, 0, 3341, 3343, 1, 0, 0, 0, 3342, 3344, 5, 450, 0, 0, 3343, 3342, 1, 0, 0, 0, 3343, 3344, 1, 0, 0, 0, 3344, 3345, 1, 0, 0, 0, 3345, 3346, 5, 83, 0, 0, 3346, 3348, 5, 882, 0, 0, 3347, 3349, 7, 6, 0, 0, 3348, 3347, 1, 0, 0, 0, 3348, 3349, 1, 0, 0, 0, 3349, 3350, 1, 0, 0, 0, 3350, 3351, 5, 88, 0, 0, 3351, 3352, 5, 173, 0, 0, 3352, 3356, 3, 648, 324, 0, 3353, 3354, 5, 26, 0, 0, 3354, 3355, 5, 155, 0, 0, 3355, 3357, 3, 684, 342, 0, 3356, 3353, 1, 0, 0, 0, 3356, 3357, 1, 0, 0, 0, 3357, 3368, 1, 0, 0, 0, 3358, 3359, 5, 587, 0, 0, 3359, 3360, 5, 423, 0, 0, 3360, 3362, 5, 20, 0, 0, 3361, 3363, 5, 859, 0, 0, 3362, 3361, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3366, 5, 882, 0, 0, 3365, 3367, 5, 858, 0, 0, 3366, 3365, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3369, 1, 0, 0, 0, 3368, 3358, 1, 0, 0, 0, 3368, 3369, 1, 0, 0, 0, 3369, 3374, 1, 0, 0, 0, 3370, 3371, 5, 79, 0, 0, 3371, 3372, 3, 708, 354, 0, 3372, 3373, 7, 47, 0, 0, 3373, 3375, 1, 0, 0, 0, 3374, 3370, 1, 0, 0, 0, 3374, 3375, 1, 0, 0, 0, 3375, 3387, 1, 0, 0, 0, 3376, 3377, 5, 866, 0, 0, 3377, 3382, 3, 230, 115, 0, 3378, 3379, 5, 868, 0, 0, 3379, 3381, 3, 230, 115, 0, 3380, 3378, 1, 0, 0, 0, 3381, 3384, 1, 0, 0, 0, 3382, 3380, 1, 0, 0, 0, 3382, 3383, 1, 0, 0, 0, 3383, 3385, 1, 0, 0, 0, 3384, 3382, 1, 0, 0, 0, 3385, 3386, 5, 867, 0, 0, 3386, 3388, 1, 0, 0, 0, 3387, 3376, 1, 0, 0, 0, 3387, 3388, 1, 0, 0, 0, 3388, 3398, 1, 0, 0, 0, 3389, 3390, 5, 155, 0, 0, 3390, 3395, 3, 228, 114, 0, 3391, 3392, 5, 868, 0, 0, 3392, 3394, 3, 228, 114, 0, 3393, 3391, 1, 0, 0, 0, 3394, 3397, 1, 0, 0, 0, 3395, 3393, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3399, 1, 0, 0, 0, 3397, 3395, 1, 0, 0, 0, 3398, 3389, 1, 0, 0, 0, 3398, 3399, 1, 0, 0, 0, 3399, 199, 1, 0, 0, 0, 3400, 3401, 5, 866, 0, 0, 3401, 3403, 3, 218, 109, 0, 3402, 3404, 3, 252, 126, 0, 3403, 3402, 1, 0, 0, 0, 3403, 3404, 1, 0, 0, 0, 3404, 3406, 1, 0, 0, 0, 3405, 3407, 3, 312, 156, 0, 3406, 3405, 1, 0, 0, 0, 3406, 3407, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 3410, 5, 867, 0, 0, 3409, 3411, 3, 252, 126, 0, 3410, 3409, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3413, 1, 0, 0, 0, 3412, 3414, 3, 312, 156, 0, 3413, 3412, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3416, 1, 0, 0, 0, 3415, 3417, 3, 296, 148, 0, 3416, 3415, 1, 0, 0, 0, 3416, 3417, 1, 0, 0, 0, 3417, 201, 1, 0, 0, 0, 3418, 3420, 5, 143, 0, 0, 3419, 3421, 7, 48, 0, 0, 3420, 3419, 1, 0, 0, 0, 3420, 3421, 1, 0, 0, 0, 3421, 3423, 1, 0, 0, 0, 3422, 3424, 5, 88, 0, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3431, 3, 648, 324, 0, 3426, 3427, 5, 130, 0, 0, 3427, 3428, 5, 866, 0, 0, 3428, 3429, 3, 666, 333, 0, 3429, 3430, 5, 867, 0, 0, 3430, 3432, 1, 0, 0, 0, 3431, 3426, 1, 0, 0, 0, 3431, 3432, 1, 0, 0, 0, 3432, 3441, 1, 0, 0, 0, 3433, 3434, 5, 866, 0, 0, 3434, 3435, 3, 656, 328, 0, 3435, 3436, 5, 867, 0, 0, 3436, 3438, 1, 0, 0, 0, 3437, 3433, 1, 0, 0, 0, 3437, 3438, 1, 0, 0, 0, 3438, 3439, 1, 0, 0, 0, 3439, 3442, 3, 222, 111, 0, 3440, 3442, 3, 226, 113, 0, 3441, 3437, 1, 0, 0, 0, 3441, 3440, 1, 0, 0, 0, 3442, 203, 1, 0, 0, 0, 3443, 3447, 3, 274, 137, 0, 3444, 3446, 3, 276, 138, 0, 3445, 3444, 1, 0, 0, 0, 3446, 3449, 1, 0, 0, 0, 3447, 3445, 1, 0, 0, 0, 3447, 3448, 1, 0, 0, 0, 3448, 3458, 1, 0, 0, 0, 3449, 3447, 1, 0, 0, 0, 3450, 3452, 5, 181, 0, 0, 3451, 3453, 7, 44, 0, 0, 3452, 3451, 1, 0, 0, 0, 3452, 3453, 1, 0, 0, 0, 3453, 3456, 1, 0, 0, 0, 3454, 3457, 3, 274, 137, 0, 3455, 3457, 3, 272, 136, 0, 3456, 3454, 1, 0, 0, 0, 3456, 3455, 1, 0, 0, 0, 3457, 3459, 1, 0, 0, 0, 3458, 3450, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3464, 1, 0, 0, 0, 3460, 3461, 5, 868, 0, 0, 3461, 3463, 3, 278, 139, 0, 3462, 3460, 1, 0, 0, 0, 3463, 3466, 1, 0, 0, 0, 3464, 3462, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3468, 1, 0, 0, 0, 3466, 3464, 1, 0, 0, 0, 3467, 3469, 3, 252, 126, 0, 3468, 3467, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3471, 1, 0, 0, 0, 3470, 3472, 3, 312, 156, 0, 3471, 3470, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3474, 1, 0, 0, 0, 3473, 3475, 3, 232, 116, 0, 3474, 3473, 1, 0, 0, 0, 3474, 3475, 1, 0, 0, 0, 3475, 3477, 1, 0, 0, 0, 3476, 3478, 3, 296, 148, 0, 3477, 3476, 1, 0, 0, 0, 3477, 3478, 1, 0, 0, 0, 3478, 3503, 1, 0, 0, 0, 3479, 3483, 3, 272, 136, 0, 3480, 3482, 3, 276, 138, 0, 3481, 3480, 1, 0, 0, 0, 3482, 3485, 1, 0, 0, 0, 3483, 3481, 1, 0, 0, 0, 3483, 3484, 1, 0, 0, 0, 3484, 3491, 1, 0, 0, 0, 3485, 3483, 1, 0, 0, 0, 3486, 3488, 5, 181, 0, 0, 3487, 3489, 7, 44, 0, 0, 3488, 3487, 1, 0, 0, 0, 3488, 3489, 1, 0, 0, 0, 3489, 3490, 1, 0, 0, 0, 3490, 3492, 3, 272, 136, 0, 3491, 3486, 1, 0, 0, 0, 3491, 3492, 1, 0, 0, 0, 3492, 3494, 1, 0, 0, 0, 3493, 3495, 3, 252, 126, 0, 3494, 3493, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3497, 1, 0, 0, 0, 3496, 3498, 3, 312, 156, 0, 3497, 3496, 1, 0, 0, 0, 3497, 3498, 1, 0, 0, 0, 3498, 3500, 1, 0, 0, 0, 3499, 3501, 3, 232, 116, 0, 3500, 3499, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 3503, 1, 0, 0, 0, 3502, 3443, 1, 0, 0, 0, 3502, 3479, 1, 0, 0, 0, 3503, 205, 1, 0, 0, 0, 3504, 3506, 3, 46, 23, 0, 3505, 3504, 1, 0, 0, 0, 3505, 3506, 1, 0, 0, 0, 3506, 3507, 1, 0, 0, 0, 3507, 3509, 3, 208, 104, 0, 3508, 3510, 3, 252, 126, 0, 3509, 3508, 1, 0, 0, 0, 3509, 3510, 1, 0, 0, 0, 3510, 3512, 1, 0, 0, 0, 3511, 3513, 3, 312, 156, 0, 3512, 3511, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3515, 1, 0, 0, 0, 3514, 3516, 3, 296, 148, 0, 3515, 3514, 1, 0, 0, 0, 3515, 3516, 1, 0, 0, 0, 3516, 207, 1, 0, 0, 0, 3517, 3518, 6, 104, -1, 0, 3518, 3519, 3, 210, 105, 0, 3519, 3534, 1, 0, 0, 0, 3520, 3521, 10, 2, 0, 0, 3521, 3523, 5, 181, 0, 0, 3522, 3524, 7, 44, 0, 0, 3523, 3522, 1, 0, 0, 0, 3523, 3524, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 3533, 3, 210, 105, 0, 3526, 3527, 10, 1, 0, 0, 3527, 3529, 5, 59, 0, 0, 3528, 3530, 7, 44, 0, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3531, 1, 0, 0, 0, 3531, 3533, 3, 210, 105, 0, 3532, 3520, 1, 0, 0, 0, 3532, 3526, 1, 0, 0, 0, 3533, 3536, 1, 0, 0, 0, 3534, 3532, 1, 0, 0, 0, 3534, 3535, 1, 0, 0, 0, 3535, 209, 1, 0, 0, 0, 3536, 3534, 1, 0, 0, 0, 3537, 3538, 6, 105, -1, 0, 3538, 3539, 3, 212, 106, 0, 3539, 3548, 1, 0, 0, 0, 3540, 3541, 10, 1, 0, 0, 3541, 3543, 5, 828, 0, 0, 3542, 3544, 7, 44, 0, 0, 3543, 3542, 1, 0, 0, 0, 3543, 3544, 1, 0, 0, 0, 3544, 3545, 1, 0, 0, 0, 3545, 3547, 3, 212, 106, 0, 3546, 3540, 1, 0, 0, 0, 3547, 3550, 1, 0, 0, 0, 3548, 3546, 1, 0, 0, 0, 3548, 3549, 1, 0, 0, 0, 3549, 211, 1, 0, 0, 0, 3550, 3548, 1, 0, 0, 0, 3551, 3566, 3, 220, 110, 0, 3552, 3553, 5, 866, 0, 0, 3553, 3555, 3, 208, 104, 0, 3554, 3556, 3, 252, 126, 0, 3555, 3554, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3558, 1, 0, 0, 0, 3557, 3559, 3, 312, 156, 0, 3558, 3557, 1, 0, 0, 0, 3558, 3559, 1, 0, 0, 0, 3559, 3561, 1, 0, 0, 0, 3560, 3562, 3, 296, 148, 0, 3561, 3560, 1, 0, 0, 0, 3561, 3562, 1, 0, 0, 0, 3562, 3563, 1, 0, 0, 0, 3563, 3564, 5, 867, 0, 0, 3564, 3566, 1, 0, 0, 0, 3565, 3551, 1, 0, 0, 0, 3565, 3552, 1, 0, 0, 0, 3566, 213, 1, 0, 0, 0, 3567, 3570, 3, 248, 124, 0, 3568, 3570, 3, 250, 125, 0, 3569, 3567, 1, 0, 0, 0, 3569, 3568, 1, 0, 0, 0, 3570, 215, 1, 0, 0, 0, 3571, 3575, 3, 224, 112, 0, 3572, 3573, 5, 125, 0, 0, 3573, 3574, 5, 20, 0, 0, 3574, 3576, 3, 670, 335, 0, 3575, 3572, 1, 0, 0, 0, 3575, 3576, 1, 0, 0, 0, 3576, 3579, 1, 0, 0, 0, 3577, 3578, 5, 100, 0, 0, 3578, 3580, 3, 314, 157, 0, 3579, 3577, 1, 0, 0, 0, 3579, 3580, 1, 0, 0, 0, 3580, 217, 1, 0, 0, 0, 3581, 3586, 3, 220, 110, 0, 3582, 3583, 7, 49, 0, 0, 3583, 3585, 3, 220, 110, 0, 3584, 3582, 1, 0, 0, 0, 3585, 3588, 1, 0, 0, 0, 3586, 3584, 1, 0, 0, 0, 3586, 3587, 1, 0, 0, 0, 3587, 3590, 1, 0, 0, 0, 3588, 3586, 1, 0, 0, 0, 3589, 3591, 3, 252, 126, 0, 3590, 3589, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3593, 1, 0, 0, 0, 3592, 3594, 3, 312, 156, 0, 3593, 3592, 1, 0, 0, 0, 3593, 3594, 1, 0, 0, 0, 3594, 3596, 1, 0, 0, 0, 3595, 3597, 3, 296, 148, 0, 3596, 3595, 1, 0, 0, 0, 3596, 3597, 1, 0, 0, 0, 3597, 219, 1, 0, 0, 0, 3598, 3602, 3, 204, 102, 0, 3599, 3602, 3, 614, 307, 0, 3600, 3602, 3, 216, 108, 0, 3601, 3598, 1, 0, 0, 0, 3601, 3599, 1, 0, 0, 0, 3601, 3600, 1, 0, 0, 0, 3602, 221, 1, 0, 0, 0, 3603, 3609, 3, 204, 102, 0, 3604, 3605, 5, 173, 0, 0, 3605, 3609, 3, 648, 324, 0, 3606, 3609, 3, 738, 369, 0, 3607, 3609, 3, 224, 112, 0, 3608, 3603, 1, 0, 0, 0, 3608, 3604, 1, 0, 0, 0, 3608, 3606, 1, 0, 0, 0, 3608, 3607, 1, 0, 0, 0, 3609, 223, 1, 0, 0, 0, 3610, 3611, 5, 189, 0, 0, 3611, 3612, 5, 586, 0, 0, 3612, 3618, 3, 740, 370, 0, 3613, 3614, 5, 868, 0, 0, 3614, 3615, 5, 586, 0, 0, 3615, 3617, 3, 740, 370, 0, 3616, 3613, 1, 0, 0, 0, 3617, 3620, 1, 0, 0, 0, 3618, 3616, 1, 0, 0, 0, 3618, 3619, 1, 0, 0, 0, 3619, 225, 1, 0, 0, 0, 3620, 3618, 1, 0, 0, 0, 3621, 3622, 5, 155, 0, 0, 3622, 3627, 3, 228, 114, 0, 3623, 3624, 5, 868, 0, 0, 3624, 3626, 3, 228, 114, 0, 3625, 3623, 1, 0, 0, 0, 3626, 3629, 1, 0, 0, 0, 3627, 3625, 1, 0, 0, 0, 3627, 3628, 1, 0, 0, 0, 3628, 227, 1, 0, 0, 0, 3629, 3627, 1, 0, 0, 0, 3630, 3631, 3, 658, 329, 0, 3631, 3632, 5, 857, 0, 0, 3632, 3633, 3, 742, 371, 0, 3633, 229, 1, 0, 0, 0, 3634, 3637, 3, 702, 351, 0, 3635, 3637, 5, 892, 0, 0, 3636, 3634, 1, 0, 0, 0, 3636, 3635, 1, 0, 0, 0, 3637, 231, 1, 0, 0, 0, 3638, 3639, 5, 65, 0, 0, 3639, 3649, 7, 50, 0, 0, 3640, 3641, 5, 510, 0, 0, 3641, 3646, 3, 648, 324, 0, 3642, 3643, 5, 868, 0, 0, 3643, 3645, 3, 648, 324, 0, 3644, 3642, 1, 0, 0, 0, 3645, 3648, 1, 0, 0, 0, 3646, 3644, 1, 0, 0, 0, 3646, 3647, 1, 0, 0, 0, 3647, 3650, 1, 0, 0, 0, 3648, 3646, 1, 0, 0, 0, 3649, 3640, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3653, 1, 0, 0, 0, 3651, 3652, 7, 51, 0, 0, 3652, 3654, 5, 105, 0, 0, 3653, 3651, 1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3660, 1, 0, 0, 0, 3655, 3656, 5, 104, 0, 0, 3656, 3657, 5, 80, 0, 0, 3657, 3658, 5, 594, 0, 0, 3658, 3660, 5, 491, 0, 0, 3659, 3638, 1, 0, 0, 0, 3659, 3655, 1, 0, 0, 0, 3660, 233, 1, 0, 0, 0, 3661, 3663, 5, 44, 0, 0, 3662, 3664, 5, 107, 0, 0, 3663, 3662, 1, 0, 0, 0, 3663, 3664, 1, 0, 0, 0, 3664, 3666, 1, 0, 0, 0, 3665, 3667, 5, 549, 0, 0, 3666, 3665, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3669, 1, 0, 0, 0, 3668, 3670, 5, 79, 0, 0, 3669, 3668, 1, 0, 0, 0, 3669, 3670, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3672, 5, 68, 0, 0, 3672, 3677, 3, 648, 324, 0, 3673, 3675, 5, 13, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3678, 3, 702, 351, 0, 3677, 3674, 1, 0, 0, 0, 3677, 3678, 1, 0, 0, 0, 3678, 3684, 1, 0, 0, 0, 3679, 3680, 5, 130, 0, 0, 3680, 3681, 5, 866, 0, 0, 3681, 3682, 3, 666, 333, 0, 3682, 3683, 5, 867, 0, 0, 3683, 3685, 1, 0, 0, 0, 3684, 3679, 1, 0, 0, 0, 3684, 3685, 1, 0, 0, 0, 3685, 3688, 1, 0, 0, 0, 3686, 3687, 5, 192, 0, 0, 3687, 3689, 3, 800, 400, 0, 3688, 3686, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 3691, 1, 0, 0, 0, 3690, 3692, 3, 252, 126, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3695, 1, 0, 0, 0, 3693, 3694, 5, 100, 0, 0, 3694, 3696, 3, 314, 157, 0, 3695, 3693, 1, 0, 0, 0, 3695, 3696, 1, 0, 0, 0, 3696, 235, 1, 0, 0, 0, 3697, 3699, 5, 44, 0, 0, 3698, 3700, 5, 107, 0, 0, 3699, 3698, 1, 0, 0, 0, 3699, 3700, 1, 0, 0, 0, 3700, 3702, 1, 0, 0, 0, 3701, 3703, 5, 549, 0, 0, 3702, 3701, 1, 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3705, 1, 0, 0, 0, 3704, 3706, 5, 79, 0, 0, 3705, 3704, 1, 0, 0, 0, 3705, 3706, 1, 0, 0, 0, 3706, 3746, 1, 0, 0, 0, 3707, 3710, 3, 648, 324, 0, 3708, 3709, 5, 865, 0, 0, 3709, 3711, 5, 850, 0, 0, 3710, 3708, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3720, 1, 0, 0, 0, 3712, 3713, 5, 868, 0, 0, 3713, 3716, 3, 648, 324, 0, 3714, 3715, 5, 865, 0, 0, 3715, 3717, 5, 850, 0, 0, 3716, 3714, 1, 0, 0, 0, 3716, 3717, 1, 0, 0, 0, 3717, 3719, 1, 0, 0, 0, 3718, 3712, 1, 0, 0, 0, 3719, 3722, 1, 0, 0, 0, 3720, 3718, 1, 0, 0, 0, 3720, 3721, 1, 0, 0, 0, 3721, 3723, 1, 0, 0, 0, 3722, 3720, 1, 0, 0, 0, 3723, 3724, 5, 68, 0, 0, 3724, 3725, 3, 256, 128, 0, 3725, 3747, 1, 0, 0, 0, 3726, 3727, 5, 68, 0, 0, 3727, 3730, 3, 648, 324, 0, 3728, 3729, 5, 865, 0, 0, 3729, 3731, 5, 850, 0, 0, 3730, 3728, 1, 0, 0, 0, 3730, 3731, 1, 0, 0, 0, 3731, 3740, 1, 0, 0, 0, 3732, 3733, 5, 868, 0, 0, 3733, 3736, 3, 648, 324, 0, 3734, 3735, 5, 865, 0, 0, 3735, 3737, 5, 850, 0, 0, 3736, 3734, 1, 0, 0, 0, 3736, 3737, 1, 0, 0, 0, 3737, 3739, 1, 0, 0, 0, 3738, 3732, 1, 0, 0, 0, 3739, 3742, 1, 0, 0, 0, 3740, 3738, 1, 0, 0, 0, 3740, 3741, 1, 0, 0, 0, 3741, 3743, 1, 0, 0, 0, 3742, 3740, 1, 0, 0, 0, 3743, 3744, 5, 188, 0, 0, 3744, 3745, 3, 256, 128, 0, 3745, 3747, 1, 0, 0, 0, 3746, 3707, 1, 0, 0, 0, 3746, 3726, 1, 0, 0, 0, 3747, 3750, 1, 0, 0, 0, 3748, 3749, 5, 192, 0, 0, 3749, 3751, 3, 800, 400, 0, 3750, 3748, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 237, 1, 0, 0, 0, 3752, 3753, 5, 417, 0, 0, 3753, 3754, 3, 648, 324, 0, 3754, 3759, 5, 516, 0, 0, 3755, 3757, 5, 13, 0, 0, 3756, 3755, 1, 0, 0, 0, 3756, 3757, 1, 0, 0, 0, 3757, 3758, 1, 0, 0, 0, 3758, 3760, 3, 702, 351, 0, 3759, 3756, 1, 0, 0, 0, 3759, 3760, 1, 0, 0, 0, 3760, 239, 1, 0, 0, 0, 3761, 3762, 5, 417, 0, 0, 3762, 3763, 3, 648, 324, 0, 3763, 3764, 5, 135, 0, 0, 3764, 3771, 3, 638, 319, 0, 3765, 3766, 3, 810, 405, 0, 3766, 3767, 5, 866, 0, 0, 3767, 3768, 3, 744, 372, 0, 3768, 3769, 5, 867, 0, 0, 3769, 3772, 1, 0, 0, 0, 3770, 3772, 7, 52, 0, 0, 3771, 3765, 1, 0, 0, 0, 3771, 3770, 1, 0, 0, 0, 3772, 3775, 1, 0, 0, 0, 3773, 3774, 5, 192, 0, 0, 3774, 3776, 3, 800, 400, 0, 3775, 3773, 1, 0, 0, 0, 3775, 3776, 1, 0, 0, 0, 3776, 3779, 1, 0, 0, 0, 3777, 3778, 5, 100, 0, 0, 3778, 3780, 3, 314, 157, 0, 3779, 3777, 1, 0, 0, 0, 3779, 3780, 1, 0, 0, 0, 3780, 241, 1, 0, 0, 0, 3781, 3782, 5, 417, 0, 0, 3782, 3783, 3, 648, 324, 0, 3783, 3784, 5, 135, 0, 0, 3784, 3787, 7, 53, 0, 0, 3785, 3786, 5, 192, 0, 0, 3786, 3788, 3, 800, 400, 0, 3787, 3785, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3791, 1, 0, 0, 0, 3789, 3790, 5, 100, 0, 0, 3790, 3792, 3, 314, 157, 0, 3791, 3789, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 243, 1, 0, 0, 0, 3793, 3794, 5, 417, 0, 0, 3794, 3795, 3, 648, 324, 0, 3795, 3796, 5, 334, 0, 0, 3796, 245, 1, 0, 0, 0, 3797, 3798, 5, 425, 0, 0, 3798, 3799, 5, 173, 0, 0, 3799, 3800, 5, 68, 0, 0, 3800, 3805, 3, 712, 356, 0, 3801, 3802, 5, 868, 0, 0, 3802, 3804, 3, 712, 356, 0, 3803, 3801, 1, 0, 0, 0, 3804, 3807, 1, 0, 0, 0, 3805, 3803, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 247, 1, 0, 0, 0, 3807, 3805, 1, 0, 0, 0, 3808, 3810, 5, 185, 0, 0, 3809, 3811, 5, 107, 0, 0, 3810, 3809, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3813, 1, 0, 0, 0, 3812, 3814, 5, 79, 0, 0, 3813, 3812, 1, 0, 0, 0, 3813, 3814, 1, 0, 0, 0, 3814, 3815, 1, 0, 0, 0, 3815, 3820, 3, 648, 324, 0, 3816, 3818, 5, 13, 0, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3821, 3, 702, 351, 0, 3820, 3817, 1, 0, 0, 0, 3820, 3821, 1, 0, 0, 0, 3821, 3822, 1, 0, 0, 0, 3822, 3823, 5, 155, 0, 0, 3823, 3828, 3, 228, 114, 0, 3824, 3825, 5, 868, 0, 0, 3825, 3827, 3, 228, 114, 0, 3826, 3824, 1, 0, 0, 0, 3827, 3830, 1, 0, 0, 0, 3828, 3826, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3833, 1, 0, 0, 0, 3830, 3828, 1, 0, 0, 0, 3831, 3832, 5, 192, 0, 0, 3832, 3834, 3, 800, 400, 0, 3833, 3831, 1, 0, 0, 0, 3833, 3834, 1, 0, 0, 0, 3834, 3836, 1, 0, 0, 0, 3835, 3837, 3, 252, 126, 0, 3836, 3835, 1, 0, 0, 0, 3836, 3837, 1, 0, 0, 0, 3837, 3839, 1, 0, 0, 0, 3838, 3840, 3, 312, 156, 0, 3839, 3838, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 249, 1, 0, 0, 0, 3841, 3843, 5, 185, 0, 0, 3842, 3844, 5, 107, 0, 0, 3843, 3842, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3846, 1, 0, 0, 0, 3845, 3847, 5, 79, 0, 0, 3846, 3845, 1, 0, 0, 0, 3846, 3847, 1, 0, 0, 0, 3847, 3848, 1, 0, 0, 0, 3848, 3849, 3, 256, 128, 0, 3849, 3850, 5, 155, 0, 0, 3850, 3855, 3, 228, 114, 0, 3851, 3852, 5, 868, 0, 0, 3852, 3854, 3, 228, 114, 0, 3853, 3851, 1, 0, 0, 0, 3854, 3857, 1, 0, 0, 0, 3855, 3853, 1, 0, 0, 0, 3855, 3856, 1, 0, 0, 0, 3856, 3860, 1, 0, 0, 0, 3857, 3855, 1, 0, 0, 0, 3858, 3859, 5, 192, 0, 0, 3859, 3861, 3, 800, 400, 0, 3860, 3858, 1, 0, 0, 0, 3860, 3861, 1, 0, 0, 0, 3861, 251, 1, 0, 0, 0, 3862, 3863, 5, 125, 0, 0, 3863, 3864, 5, 20, 0, 0, 3864, 3869, 3, 254, 127, 0, 3865, 3866, 5, 868, 0, 0, 3866, 3868, 3, 254, 127, 0, 3867, 3865, 1, 0, 0, 0, 3868, 3871, 1, 0, 0, 0, 3869, 3867, 1, 0, 0, 0, 3869, 3870, 1, 0, 0, 0, 3870, 253, 1, 0, 0, 0, 3871, 3869, 1, 0, 0, 0, 3872, 3874, 3, 800, 400, 0, 3873, 3875, 7, 54, 0, 0, 3874, 3873, 1, 0, 0, 0, 3874, 3875, 1, 0, 0, 0, 3875, 255, 1, 0, 0, 0, 3876, 3881, 3, 258, 129, 0, 3877, 3878, 5, 868, 0, 0, 3878, 3880, 3, 258, 129, 0, 3879, 3877, 1, 0, 0, 0, 3880, 3883, 1, 0, 0, 0, 3881, 3879, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 257, 1, 0, 0, 0, 3883, 3881, 1, 0, 0, 0, 3884, 3888, 3, 260, 130, 0, 3885, 3887, 3, 268, 134, 0, 3886, 3885, 1, 0, 0, 0, 3887, 3890, 1, 0, 0, 0, 3888, 3886, 1, 0, 0, 0, 3888, 3889, 1, 0, 0, 0, 3889, 3903, 1, 0, 0, 0, 3890, 3888, 1, 0, 0, 0, 3891, 3892, 5, 866, 0, 0, 3892, 3896, 3, 260, 130, 0, 3893, 3895, 3, 268, 134, 0, 3894, 3893, 1, 0, 0, 0, 3895, 3898, 1, 0, 0, 0, 3896, 3894, 1, 0, 0, 0, 3896, 3897, 1, 0, 0, 0, 3897, 3899, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3899, 3900, 5, 867, 0, 0, 3900, 3903, 1, 0, 0, 0, 3901, 3903, 3, 280, 140, 0, 3902, 3884, 1, 0, 0, 0, 3902, 3891, 1, 0, 0, 0, 3902, 3901, 1, 0, 0, 0, 3903, 259, 1, 0, 0, 0, 3904, 3910, 3, 648, 324, 0, 3905, 3906, 5, 130, 0, 0, 3906, 3907, 5, 866, 0, 0, 3907, 3908, 3, 666, 333, 0, 3908, 3909, 5, 867, 0, 0, 3909, 3911, 1, 0, 0, 0, 3910, 3905, 1, 0, 0, 0, 3910, 3911, 1, 0, 0, 0, 3911, 3916, 1, 0, 0, 0, 3912, 3914, 5, 13, 0, 0, 3913, 3912, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3915, 1, 0, 0, 0, 3915, 3917, 3, 702, 351, 0, 3916, 3913, 1, 0, 0, 0, 3916, 3917, 1, 0, 0, 0, 3917, 3926, 1, 0, 0, 0, 3918, 3923, 3, 264, 132, 0, 3919, 3920, 5, 868, 0, 0, 3920, 3922, 3, 264, 132, 0, 3921, 3919, 1, 0, 0, 0, 3922, 3925, 1, 0, 0, 0, 3923, 3921, 1, 0, 0, 0, 3923, 3924, 1, 0, 0, 0, 3924, 3927, 1, 0, 0, 0, 3925, 3923, 1, 0, 0, 0, 3926, 3918, 1, 0, 0, 0, 3926, 3927, 1, 0, 0, 0, 3927, 3950, 1, 0, 0, 0, 3928, 3930, 5, 95, 0, 0, 3929, 3928, 1, 0, 0, 0, 3929, 3930, 1, 0, 0, 0, 3930, 3936, 1, 0, 0, 0, 3931, 3937, 3, 204, 102, 0, 3932, 3933, 5, 866, 0, 0, 3933, 3934, 3, 204, 102, 0, 3934, 3935, 5, 867, 0, 0, 3935, 3937, 1, 0, 0, 0, 3936, 3931, 1, 0, 0, 0, 3936, 3932, 1, 0, 0, 0, 3937, 3939, 1, 0, 0, 0, 3938, 3940, 5, 13, 0, 0, 3939, 3938, 1, 0, 0, 0, 3939, 3940, 1, 0, 0, 0, 3940, 3941, 1, 0, 0, 0, 3941, 3943, 3, 702, 351, 0, 3942, 3944, 3, 262, 131, 0, 3943, 3942, 1, 0, 0, 0, 3943, 3944, 1, 0, 0, 0, 3944, 3950, 1, 0, 0, 0, 3945, 3946, 5, 866, 0, 0, 3946, 3947, 3, 256, 128, 0, 3947, 3948, 5, 867, 0, 0, 3948, 3950, 1, 0, 0, 0, 3949, 3904, 1, 0, 0, 0, 3949, 3929, 1, 0, 0, 0, 3949, 3945, 1, 0, 0, 0, 3950, 261, 1, 0, 0, 0, 3951, 3952, 5, 866, 0, 0, 3952, 3953, 3, 656, 328, 0, 3953, 3954, 5, 867, 0, 0, 3954, 263, 1, 0, 0, 0, 3955, 3956, 7, 55, 0, 0, 3956, 3959, 7, 18, 0, 0, 3957, 3958, 5, 65, 0, 0, 3958, 3960, 3, 266, 133, 0, 3959, 3957, 1, 0, 0, 0, 3959, 3960, 1, 0, 0, 0, 3960, 3961, 1, 0, 0, 0, 3961, 3963, 5, 866, 0, 0, 3962, 3964, 3, 636, 318, 0, 3963, 3962, 1, 0, 0, 0, 3963, 3964, 1, 0, 0, 0, 3964, 3965, 1, 0, 0, 0, 3965, 3966, 5, 867, 0, 0, 3966, 265, 1, 0, 0, 0, 3967, 3973, 5, 91, 0, 0, 3968, 3969, 5, 125, 0, 0, 3969, 3973, 5, 20, 0, 0, 3970, 3971, 5, 74, 0, 0, 3971, 3973, 5, 20, 0, 0, 3972, 3967, 1, 0, 0, 0, 3972, 3968, 1, 0, 0, 0, 3972, 3970, 1, 0, 0, 0, 3973, 267, 1, 0, 0, 0, 3974, 3976, 7, 56, 0, 0, 3975, 3974, 1, 0, 0, 0, 3975, 3976, 1, 0, 0, 0, 3976, 3977, 1, 0, 0, 0, 3977, 3979, 5, 91, 0, 0, 3978, 3980, 5, 95, 0, 0, 3979, 3978, 1, 0, 0, 0, 3979, 3980, 1, 0, 0, 0, 3980, 3981, 1, 0, 0, 0, 3981, 3985, 3, 260, 130, 0, 3982, 3984, 3, 270, 135, 0, 3983, 3982, 1, 0, 0, 0, 3984, 3987, 1, 0, 0, 0, 3985, 3983, 1, 0, 0, 0, 3985, 3986, 1, 0, 0, 0, 3986, 4024, 1, 0, 0, 0, 3987, 3985, 1, 0, 0, 0, 3988, 3989, 5, 172, 0, 0, 3989, 3993, 3, 260, 130, 0, 3990, 3992, 3, 270, 135, 0, 3991, 3990, 1, 0, 0, 0, 3992, 3995, 1, 0, 0, 0, 3993, 3991, 1, 0, 0, 0, 3993, 3994, 1, 0, 0, 0, 3994, 4024, 1, 0, 0, 0, 3995, 3993, 1, 0, 0, 0, 3996, 3998, 7, 57, 0, 0, 3997, 3999, 5, 127, 0, 0, 3998, 3997, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4000, 1, 0, 0, 0, 4000, 4002, 5, 91, 0, 0, 4001, 4003, 5, 95, 0, 0, 4002, 4001, 1, 0, 0, 0, 4002, 4003, 1, 0, 0, 0, 4003, 4004, 1, 0, 0, 0, 4004, 4008, 3, 260, 130, 0, 4005, 4007, 3, 270, 135, 0, 4006, 4005, 1, 0, 0, 0, 4007, 4010, 1, 0, 0, 0, 4008, 4006, 1, 0, 0, 0, 4008, 4009, 1, 0, 0, 0, 4009, 4024, 1, 0, 0, 0, 4010, 4008, 1, 0, 0, 0, 4011, 4019, 5, 113, 0, 0, 4012, 4015, 5, 84, 0, 0, 4013, 4015, 7, 57, 0, 0, 4014, 4012, 1, 0, 0, 0, 4014, 4013, 1, 0, 0, 0, 4015, 4017, 1, 0, 0, 0, 4016, 4018, 5, 127, 0, 0, 4017, 4016, 1, 0, 0, 0, 4017, 4018, 1, 0, 0, 0, 4018, 4020, 1, 0, 0, 0, 4019, 4014, 1, 0, 0, 0, 4019, 4020, 1, 0, 0, 0, 4020, 4021, 1, 0, 0, 0, 4021, 4022, 5, 91, 0, 0, 4022, 4024, 3, 260, 130, 0, 4023, 3975, 1, 0, 0, 0, 4023, 3988, 1, 0, 0, 0, 4023, 3996, 1, 0, 0, 0, 4023, 4011, 1, 0, 0, 0, 4024, 269, 1, 0, 0, 0, 4025, 4026, 5, 119, 0, 0, 4026, 4033, 3, 800, 400, 0, 4027, 4028, 5, 188, 0, 0, 4028, 4029, 5, 866, 0, 0, 4029, 4030, 3, 656, 328, 0, 4030, 4031, 5, 867, 0, 0, 4031, 4033, 1, 0, 0, 0, 4032, 4025, 1, 0, 0, 0, 4032, 4027, 1, 0, 0, 0, 4033, 271, 1, 0, 0, 0, 4034, 4035, 5, 866, 0, 0, 4035, 4036, 3, 274, 137, 0, 4036, 4037, 5, 867, 0, 0, 4037, 4043, 1, 0, 0, 0, 4038, 4039, 5, 866, 0, 0, 4039, 4040, 3, 272, 136, 0, 4040, 4041, 5, 867, 0, 0, 4041, 4043, 1, 0, 0, 0, 4042, 4034, 1, 0, 0, 0, 4042, 4038, 1, 0, 0, 0, 4043, 273, 1, 0, 0, 0, 4044, 4048, 5, 154, 0, 0, 4045, 4047, 3, 290, 145, 0, 4046, 4045, 1, 0, 0, 0, 4047, 4050, 1, 0, 0, 0, 4048, 4046, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4051, 1, 0, 0, 0, 4050, 4048, 1, 0, 0, 0, 4051, 4053, 3, 292, 146, 0, 4052, 4054, 3, 296, 148, 0, 4053, 4052, 1, 0, 0, 0, 4053, 4054, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4057, 3, 302, 151, 0, 4056, 4058, 3, 304, 152, 0, 4057, 4056, 1, 0, 0, 0, 4057, 4058, 1, 0, 0, 0, 4058, 4060, 1, 0, 0, 0, 4059, 4061, 3, 306, 153, 0, 4060, 4059, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4063, 1, 0, 0, 0, 4062, 4064, 3, 308, 154, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4066, 1, 0, 0, 0, 4065, 4067, 3, 252, 126, 0, 4066, 4065, 1, 0, 0, 0, 4066, 4067, 1, 0, 0, 0, 4067, 4069, 1, 0, 0, 0, 4068, 4070, 3, 312, 156, 0, 4069, 4068, 1, 0, 0, 0, 4069, 4070, 1, 0, 0, 0, 4070, 4072, 1, 0, 0, 0, 4071, 4073, 3, 296, 148, 0, 4072, 4071, 1, 0, 0, 0, 4072, 4073, 1, 0, 0, 0, 4073, 275, 1, 0, 0, 0, 4074, 4076, 5, 181, 0, 0, 4075, 4077, 7, 44, 0, 0, 4076, 4075, 1, 0, 0, 0, 4076, 4077, 1, 0, 0, 0, 4077, 4080, 1, 0, 0, 0, 4078, 4081, 3, 274, 137, 0, 4079, 4081, 3, 272, 136, 0, 4080, 4078, 1, 0, 0, 0, 4080, 4079, 1, 0, 0, 0, 4081, 277, 1, 0, 0, 0, 4082, 4097, 5, 95, 0, 0, 4083, 4098, 3, 274, 137, 0, 4084, 4098, 3, 272, 136, 0, 4085, 4088, 5, 866, 0, 0, 4086, 4089, 3, 274, 137, 0, 4087, 4089, 3, 272, 136, 0, 4088, 4086, 1, 0, 0, 0, 4088, 4087, 1, 0, 0, 0, 4089, 4090, 1, 0, 0, 0, 4090, 4095, 5, 867, 0, 0, 4091, 4093, 5, 13, 0, 0, 4092, 4091, 1, 0, 0, 0, 4092, 4093, 1, 0, 0, 0, 4093, 4094, 1, 0, 0, 0, 4094, 4096, 3, 702, 351, 0, 4095, 4092, 1, 0, 0, 0, 4095, 4096, 1, 0, 0, 0, 4096, 4098, 1, 0, 0, 0, 4097, 4083, 1, 0, 0, 0, 4097, 4084, 1, 0, 0, 0, 4097, 4085, 1, 0, 0, 0, 4098, 279, 1, 0, 0, 0, 4099, 4100, 5, 253, 0, 0, 4100, 4101, 5, 866, 0, 0, 4101, 4102, 5, 882, 0, 0, 4102, 4103, 5, 868, 0, 0, 4103, 4104, 5, 882, 0, 0, 4104, 4105, 5, 337, 0, 0, 4105, 4106, 5, 866, 0, 0, 4106, 4107, 3, 282, 141, 0, 4107, 4108, 5, 867, 0, 0, 4108, 4113, 5, 867, 0, 0, 4109, 4111, 5, 13, 0, 0, 4110, 4109, 1, 0, 0, 0, 4110, 4111, 1, 0, 0, 0, 4111, 4112, 1, 0, 0, 0, 4112, 4114, 3, 702, 351, 0, 4113, 4110, 1, 0, 0, 0, 4113, 4114, 1, 0, 0, 0, 4114, 281, 1, 0, 0, 0, 4115, 4120, 3, 284, 142, 0, 4116, 4117, 5, 868, 0, 0, 4117, 4119, 3, 284, 142, 0, 4118, 4116, 1, 0, 0, 0, 4119, 4122, 1, 0, 0, 0, 4120, 4118, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 283, 1, 0, 0, 0, 4122, 4120, 1, 0, 0, 0, 4123, 4140, 3, 658, 329, 0, 4124, 4125, 5, 65, 0, 0, 4125, 4141, 5, 256, 0, 0, 4126, 4138, 3, 722, 361, 0, 4127, 4128, 5, 257, 0, 0, 4128, 4130, 5, 882, 0, 0, 4129, 4131, 3, 286, 143, 0, 4130, 4129, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4133, 1, 0, 0, 0, 4132, 4134, 3, 288, 144, 0, 4133, 4132, 1, 0, 0, 0, 4133, 4134, 1, 0, 0, 0, 4134, 4139, 1, 0, 0, 0, 4135, 4136, 5, 60, 0, 0, 4136, 4137, 5, 257, 0, 0, 4137, 4139, 5, 882, 0, 0, 4138, 4127, 1, 0, 0, 0, 4138, 4135, 1, 0, 0, 0, 4139, 4141, 1, 0, 0, 0, 4140, 4124, 1, 0, 0, 0, 4140, 4126, 1, 0, 0, 0, 4141, 4153, 1, 0, 0, 0, 4142, 4144, 5, 255, 0, 0, 4143, 4145, 5, 257, 0, 0, 4144, 4143, 1, 0, 0, 0, 4144, 4145, 1, 0, 0, 0, 4145, 4146, 1, 0, 0, 0, 4146, 4147, 5, 882, 0, 0, 4147, 4148, 5, 337, 0, 0, 4148, 4149, 5, 866, 0, 0, 4149, 4150, 3, 282, 141, 0, 4150, 4151, 5, 867, 0, 0, 4151, 4153, 1, 0, 0, 0, 4152, 4123, 1, 0, 0, 0, 4152, 4142, 1, 0, 0, 0, 4153, 285, 1, 0, 0, 0, 4154, 4159, 5, 116, 0, 0, 4155, 4159, 5, 382, 0, 0, 4156, 4157, 5, 42, 0, 0, 4157, 4159, 3, 750, 375, 0, 4158, 4154, 1, 0, 0, 0, 4158, 4155, 1, 0, 0, 0, 4158, 4156, 1, 0, 0, 0, 4159, 4160, 1, 0, 0, 0, 4160, 4161, 5, 119, 0, 0, 4161, 4162, 5, 55, 0, 0, 4162, 287, 1, 0, 0, 0, 4163, 4168, 5, 116, 0, 0, 4164, 4168, 5, 382, 0, 0, 4165, 4166, 5, 42, 0, 0, 4166, 4168, 3, 750, 375, 0, 4167, 4163, 1, 0, 0, 0, 4167, 4164, 1, 0, 0, 0, 4167, 4165, 1, 0, 0, 0, 4168, 4169, 1, 0, 0, 0, 4169, 4170, 5, 119, 0, 0, 4170, 4171, 5, 382, 0, 0, 4171, 289, 1, 0, 0, 0, 4172, 4181, 7, 58, 0, 0, 4173, 4181, 5, 76, 0, 0, 4174, 4181, 5, 172, 0, 0, 4175, 4181, 5, 168, 0, 0, 4176, 4181, 5, 166, 0, 0, 4177, 4181, 5, 636, 0, 0, 4178, 4181, 7, 59, 0, 0, 4179, 4181, 5, 167, 0, 0, 4180, 4172, 1, 0, 0, 0, 4180, 4173, 1, 0, 0, 0, 4180, 4174, 1, 0, 0, 0, 4180, 4175, 1, 0, 0, 0, 4180, 4176, 1, 0, 0, 0, 4180, 4177, 1, 0, 0, 0, 4180, 4178, 1, 0, 0, 0, 4180, 4179, 1, 0, 0, 0, 4181, 291, 1, 0, 0, 0, 4182, 4185, 5, 850, 0, 0, 4183, 4185, 3, 294, 147, 0, 4184, 4182, 1, 0, 0, 0, 4184, 4183, 1, 0, 0, 0, 4185, 4190, 1, 0, 0, 0, 4186, 4187, 5, 868, 0, 0, 4187, 4189, 3, 294, 147, 0, 4188, 4186, 1, 0, 0, 0, 4189, 4192, 1, 0, 0, 0, 4190, 4188, 1, 0, 0, 0, 4190, 4191, 1, 0, 0, 0, 4191, 293, 1, 0, 0, 0, 4192, 4190, 1, 0, 0, 0, 4193, 4194, 5, 892, 0, 0, 4194, 4196, 5, 841, 0, 0, 4195, 4193, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4197, 1, 0, 0, 0, 4197, 4202, 3, 800, 400, 0, 4198, 4200, 5, 13, 0, 0, 4199, 4198, 1, 0, 0, 0, 4199, 4200, 1, 0, 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4203, 3, 702, 351, 0, 4202, 4199, 1, 0, 0, 0, 4202, 4203, 1, 0, 0, 0, 4203, 4223, 1, 0, 0, 0, 4204, 4209, 3, 760, 380, 0, 4205, 4207, 5, 13, 0, 0, 4206, 4205, 1, 0, 0, 0, 4206, 4207, 1, 0, 0, 0, 4207, 4208, 1, 0, 0, 0, 4208, 4210, 3, 702, 351, 0, 4209, 4206, 1, 0, 0, 0, 4209, 4210, 1, 0, 0, 0, 4210, 4223, 1, 0, 0, 0, 4211, 4212, 3, 698, 349, 0, 4212, 4213, 5, 865, 0, 0, 4213, 4214, 5, 850, 0, 0, 4214, 4223, 1, 0, 0, 0, 4215, 4220, 3, 658, 329, 0, 4216, 4218, 5, 13, 0, 0, 4217, 4216, 1, 0, 0, 0, 4217, 4218, 1, 0, 0, 0, 4218, 4219, 1, 0, 0, 0, 4219, 4221, 3, 702, 351, 0, 4220, 4217, 1, 0, 0, 0, 4220, 4221, 1, 0, 0, 0, 4221, 4223, 1, 0, 0, 0, 4222, 4195, 1, 0, 0, 0, 4222, 4204, 1, 0, 0, 0, 4222, 4211, 1, 0, 0, 0, 4222, 4215, 1, 0, 0, 0, 4223, 295, 1, 0, 0, 0, 4224, 4225, 5, 88, 0, 0, 4225, 4230, 3, 230, 115, 0, 4226, 4227, 5, 868, 0, 0, 4227, 4229, 3, 230, 115, 0, 4228, 4226, 1, 0, 0, 0, 4229, 4232, 1, 0, 0, 0, 4230, 4228, 1, 0, 0, 0, 4230, 4231, 1, 0, 0, 0, 4231, 4261, 1, 0, 0, 0, 4232, 4230, 1, 0, 0, 0, 4233, 4234, 5, 88, 0, 0, 4234, 4235, 5, 372, 0, 0, 4235, 4261, 5, 882, 0, 0, 4236, 4237, 5, 88, 0, 0, 4237, 4238, 5, 128, 0, 0, 4238, 4242, 5, 882, 0, 0, 4239, 4240, 5, 26, 0, 0, 4240, 4241, 5, 155, 0, 0, 4241, 4243, 3, 684, 342, 0, 4242, 4239, 1, 0, 0, 0, 4242, 4243, 1, 0, 0, 0, 4243, 4250, 1, 0, 0, 0, 4244, 4246, 7, 46, 0, 0, 4245, 4247, 3, 298, 149, 0, 4246, 4245, 1, 0, 0, 0, 4247, 4248, 1, 0, 0, 0, 4248, 4246, 1, 0, 0, 0, 4248, 4249, 1, 0, 0, 0, 4249, 4251, 1, 0, 0, 0, 4250, 4244, 1, 0, 0, 0, 4250, 4251, 1, 0, 0, 0, 4251, 4258, 1, 0, 0, 0, 4252, 4254, 5, 102, 0, 0, 4253, 4255, 3, 300, 150, 0, 4254, 4253, 1, 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4254, 1, 0, 0, 0, 4256, 4257, 1, 0, 0, 0, 4257, 4259, 1, 0, 0, 0, 4258, 4252, 1, 0, 0, 0, 4258, 4259, 1, 0, 0, 0, 4259, 4261, 1, 0, 0, 0, 4260, 4224, 1, 0, 0, 0, 4260, 4233, 1, 0, 0, 0, 4260, 4236, 1, 0, 0, 0, 4261, 297, 1, 0, 0, 0, 4262, 4263, 5, 174, 0, 0, 4263, 4264, 5, 20, 0, 0, 4264, 4275, 5, 882, 0, 0, 4265, 4267, 5, 123, 0, 0, 4266, 4265, 1, 0, 0, 0, 4266, 4267, 1, 0, 0, 0, 4267, 4268, 1, 0, 0, 0, 4268, 4269, 5, 56, 0, 0, 4269, 4270, 5, 20, 0, 0, 4270, 4275, 5, 882, 0, 0, 4271, 4272, 5, 58, 0, 0, 4272, 4273, 5, 20, 0, 0, 4273, 4275, 5, 882, 0, 0, 4274, 4262, 1, 0, 0, 0, 4274, 4266, 1, 0, 0, 0, 4274, 4271, 1, 0, 0, 0, 4275, 299, 1, 0, 0, 0, 4276, 4277, 5, 171, 0, 0, 4277, 4278, 5, 20, 0, 0, 4278, 4283, 5, 882, 0, 0, 4279, 4280, 5, 174, 0, 0, 4280, 4281, 5, 20, 0, 0, 4281, 4283, 5, 882, 0, 0, 4282, 4276, 1, 0, 0, 0, 4282, 4279, 1, 0, 0, 0, 4283, 301, 1, 0, 0, 0, 4284, 4285, 5, 68, 0, 0, 4285, 4287, 3, 256, 128, 0, 4286, 4284, 1, 0, 0, 0, 4286, 4287, 1, 0, 0, 0, 4287, 4290, 1, 0, 0, 0, 4288, 4289, 5, 192, 0, 0, 4289, 4291, 3, 800, 400, 0, 4290, 4288, 1, 0, 0, 0, 4290, 4291, 1, 0, 0, 0, 4291, 303, 1, 0, 0, 0, 4292, 4293, 5, 74, 0, 0, 4293, 4294, 5, 20, 0, 0, 4294, 4299, 3, 310, 155, 0, 4295, 4296, 5, 868, 0, 0, 4296, 4298, 3, 310, 155, 0, 4297, 4295, 1, 0, 0, 0, 4298, 4301, 1, 0, 0, 0, 4299, 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4304, 1, 0, 0, 0, 4301, 4299, 1, 0, 0, 0, 4302, 4303, 5, 194, 0, 0, 4303, 4305, 5, 584, 0, 0, 4304, 4302, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 305, 1, 0, 0, 0, 4306, 4307, 5, 75, 0, 0, 4307, 4308, 3, 800, 400, 0, 4308, 307, 1, 0, 0, 0, 4309, 4310, 5, 689, 0, 0, 4310, 4311, 3, 778, 389, 0, 4311, 4312, 5, 13, 0, 0, 4312, 4313, 5, 866, 0, 0, 4313, 4314, 3, 776, 388, 0, 4314, 4324, 5, 867, 0, 0, 4315, 4316, 5, 868, 0, 0, 4316, 4317, 3, 778, 389, 0, 4317, 4318, 5, 13, 0, 0, 4318, 4319, 5, 866, 0, 0, 4319, 4320, 3, 776, 388, 0, 4320, 4321, 5, 867, 0, 0, 4321, 4323, 1, 0, 0, 0, 4322, 4315, 1, 0, 0, 0, 4323, 4326, 1, 0, 0, 0, 4324, 4322, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 309, 1, 0, 0, 0, 4326, 4324, 1, 0, 0, 0, 4327, 4329, 3, 800, 400, 0, 4328, 4330, 7, 54, 0, 0, 4329, 4328, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, 311, 1, 0, 0, 0, 4331, 4342, 5, 100, 0, 0, 4332, 4333, 3, 314, 157, 0, 4333, 4334, 5, 868, 0, 0, 4334, 4336, 1, 0, 0, 0, 4335, 4332, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4337, 1, 0, 0, 0, 4337, 4343, 3, 314, 157, 0, 4338, 4339, 3, 314, 157, 0, 4339, 4340, 5, 509, 0, 0, 4340, 4341, 3, 314, 157, 0, 4341, 4343, 1, 0, 0, 0, 4342, 4335, 1, 0, 0, 0, 4342, 4338, 1, 0, 0, 0, 4343, 313, 1, 0, 0, 0, 4344, 4348, 3, 708, 354, 0, 4345, 4348, 3, 682, 341, 0, 4346, 4348, 3, 704, 352, 0, 4347, 4344, 1, 0, 0, 0, 4347, 4345, 1, 0, 0, 0, 4347, 4346, 1, 0, 0, 0, 4348, 315, 1, 0, 0, 0, 4349, 4350, 5, 640, 0, 0, 4350, 4359, 5, 664, 0, 0, 4351, 4356, 3, 338, 169, 0, 4352, 4353, 5, 868, 0, 0, 4353, 4355, 3, 338, 169, 0, 4354, 4352, 1, 0, 0, 0, 4355, 4358, 1, 0, 0, 0, 4356, 4354, 1, 0, 0, 0, 4356, 4357, 1, 0, 0, 0, 4357, 4360, 1, 0, 0, 0, 4358, 4356, 1, 0, 0, 0, 4359, 4351, 1, 0, 0, 0, 4359, 4360, 1, 0, 0, 0, 4360, 317, 1, 0, 0, 0, 4361, 4363, 5, 317, 0, 0, 4362, 4364, 5, 691, 0, 0, 4363, 4362, 1, 0, 0, 0, 4363, 4364, 1, 0, 0, 0, 4364, 319, 1, 0, 0, 0, 4365, 4367, 5, 341, 0, 0, 4366, 4368, 5, 691, 0, 0, 4367, 4366, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4374, 1, 0, 0, 0, 4369, 4371, 5, 11, 0, 0, 4370, 4372, 5, 502, 0, 0, 4371, 4370, 1, 0, 0, 0, 4371, 4372, 1, 0, 0, 0, 4372, 4373, 1, 0, 0, 0, 4373, 4375, 5, 326, 0, 0, 4374, 4369, 1, 0, 0, 0, 4374, 4375, 1, 0, 0, 0, 4375, 4380, 1, 0, 0, 0, 4376, 4378, 5, 502, 0, 0, 4377, 4376, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4379, 1, 0, 0, 0, 4379, 4381, 5, 140, 0, 0, 4380, 4377, 1, 0, 0, 0, 4380, 4381, 1, 0, 0, 0, 4381, 321, 1, 0, 0, 0, 4382, 4384, 5, 583, 0, 0, 4383, 4385, 5, 691, 0, 0, 4384, 4383, 1, 0, 0, 0, 4384, 4385, 1, 0, 0, 0, 4385, 4391, 1, 0, 0, 0, 4386, 4388, 5, 11, 0, 0, 4387, 4389, 5, 502, 0, 0, 4388, 4387, 1, 0, 0, 0, 4388, 4389, 1, 0, 0, 0, 4389, 4390, 1, 0, 0, 0, 4390, 4392, 5, 326, 0, 0, 4391, 4386, 1, 0, 0, 0, 4391, 4392, 1, 0, 0, 0, 4392, 4397, 1, 0, 0, 0, 4393, 4395, 5, 502, 0, 0, 4394, 4393, 1, 0, 0, 0, 4394, 4395, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4398, 5, 140, 0, 0, 4397, 4394, 1, 0, 0, 0, 4397, 4398, 1, 0, 0, 0, 4398, 323, 1, 0, 0, 0, 4399, 4400, 5, 589, 0, 0, 4400, 4401, 3, 702, 351, 0, 4401, 325, 1, 0, 0, 0, 4402, 4404, 5, 583, 0, 0, 4403, 4405, 5, 691, 0, 0, 4404, 4403, 1, 0, 0, 0, 4404, 4405, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, 4408, 5, 176, 0, 0, 4407, 4409, 5, 589, 0, 0, 4408, 4407, 1, 0, 0, 0, 4408, 4409, 1, 0, 0, 0, 4409, 4410, 1, 0, 0, 0, 4410, 4411, 3, 702, 351, 0, 4411, 327, 1, 0, 0, 0, 4412, 4413, 5, 140, 0, 0, 4413, 4414, 5, 589, 0, 0, 4414, 4415, 3, 702, 351, 0, 4415, 329, 1, 0, 0, 0, 4416, 4417, 5, 104, 0, 0, 4417, 4418, 7, 60, 0, 0, 4418, 4423, 3, 340, 170, 0, 4419, 4420, 5, 868, 0, 0, 4420, 4422, 3, 340, 170, 0, 4421, 4419, 1, 0, 0, 0, 4422, 4425, 1, 0, 0, 0, 4423, 4421, 1, 0, 0, 0, 4423, 4424, 1, 0, 0, 0, 4424, 331, 1, 0, 0, 0, 4425, 4423, 1, 0, 0, 0, 4426, 4427, 5, 183, 0, 0, 4427, 4428, 5, 752, 0, 0, 4428, 333, 1, 0, 0, 0, 4429, 4430, 5, 155, 0, 0, 4430, 4431, 5, 313, 0, 0, 4431, 4432, 5, 857, 0, 0, 4432, 4433, 7, 25, 0, 0, 4433, 335, 1, 0, 0, 0, 4434, 4436, 5, 155, 0, 0, 4435, 4437, 7, 61, 0, 0, 4436, 4435, 1, 0, 0, 0, 4436, 4437, 1, 0, 0, 0, 4437, 4438, 1, 0, 0, 0, 4438, 4439, 5, 664, 0, 0, 4439, 4444, 3, 344, 172, 0, 4440, 4441, 5, 868, 0, 0, 4441, 4443, 3, 344, 172, 0, 4442, 4440, 1, 0, 0, 0, 4443, 4446, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 337, 1, 0, 0, 0, 4446, 4444, 1, 0, 0, 0, 4447, 4448, 5, 194, 0, 0, 4448, 4449, 5, 350, 0, 0, 4449, 4455, 5, 600, 0, 0, 4450, 4451, 5, 135, 0, 0, 4451, 4455, 5, 195, 0, 0, 4452, 4453, 5, 135, 0, 0, 4453, 4455, 5, 515, 0, 0, 4454, 4447, 1, 0, 0, 0, 4454, 4450, 1, 0, 0, 0, 4454, 4452, 1, 0, 0, 0, 4455, 339, 1, 0, 0, 0, 4456, 4461, 3, 648, 324, 0, 4457, 4459, 5, 13, 0, 0, 4458, 4457, 1, 0, 0, 0, 4458, 4459, 1, 0, 0, 0, 4459, 4460, 1, 0, 0, 0, 4460, 4462, 3, 702, 351, 0, 4461, 4458, 1, 0, 0, 0, 4461, 4462, 1, 0, 0, 0, 4462, 4463, 1, 0, 0, 0, 4463, 4464, 3, 342, 171, 0, 4464, 341, 1, 0, 0, 0, 4465, 4467, 5, 135, 0, 0, 4466, 4468, 5, 450, 0, 0, 4467, 4466, 1, 0, 0, 0, 4467, 4468, 1, 0, 0, 0, 4468, 4474, 1, 0, 0, 0, 4469, 4471, 5, 107, 0, 0, 4470, 4469, 1, 0, 0, 0, 4470, 4471, 1, 0, 0, 0, 4471, 4472, 1, 0, 0, 0, 4472, 4474, 5, 195, 0, 0, 4473, 4465, 1, 0, 0, 0, 4473, 4470, 1, 0, 0, 0, 4474, 343, 1, 0, 0, 0, 4475, 4476, 5, 440, 0, 0, 4476, 4477, 5, 448, 0, 0, 4477, 4483, 3, 346, 173, 0, 4478, 4479, 5, 135, 0, 0, 4479, 4483, 5, 195, 0, 0, 4480, 4481, 5, 135, 0, 0, 4481, 4483, 5, 515, 0, 0, 4482, 4475, 1, 0, 0, 0, 4482, 4478, 1, 0, 0, 0, 4482, 4480, 1, 0, 0, 0, 4483, 345, 1, 0, 0, 0, 4484, 4485, 5, 809, 0, 0, 4485, 4492, 5, 135, 0, 0, 4486, 4487, 5, 135, 0, 0, 4487, 4492, 5, 810, 0, 0, 4488, 4489, 5, 135, 0, 0, 4489, 4492, 5, 811, 0, 0, 4490, 4492, 5, 812, 0, 0, 4491, 4484, 1, 0, 0, 0, 4491, 4486, 1, 0, 0, 0, 4491, 4488, 1, 0, 0, 0, 4491, 4490, 1, 0, 0, 0, 4492, 347, 1, 0, 0, 0, 4493, 4494, 5, 25, 0, 0, 4494, 4495, 5, 453, 0, 0, 4495, 4496, 5, 176, 0, 0, 4496, 4501, 3, 364, 182, 0, 4497, 4498, 5, 868, 0, 0, 4498, 4500, 3, 364, 182, 0, 4499, 4497, 1, 0, 0, 0, 4500, 4503, 1, 0, 0, 0, 4501, 4499, 1, 0, 0, 0, 4501, 4502, 1, 0, 0, 0, 4502, 4505, 1, 0, 0, 0, 4503, 4501, 1, 0, 0, 0, 4504, 4506, 3, 384, 192, 0, 4505, 4504, 1, 0, 0, 0, 4505, 4506, 1, 0, 0, 0, 4506, 349, 1, 0, 0, 0, 4507, 4508, 5, 25, 0, 0, 4508, 4509, 5, 572, 0, 0, 4509, 4510, 5, 400, 0, 0, 4510, 4515, 3, 386, 193, 0, 4511, 4512, 5, 868, 0, 0, 4512, 4514, 3, 386, 193, 0, 4513, 4511, 1, 0, 0, 0, 4514, 4517, 1, 0, 0, 0, 4515, 4513, 1, 0, 0, 0, 4515, 4516, 1, 0, 0, 0, 4516, 4519, 1, 0, 0, 0, 4517, 4515, 1, 0, 0, 0, 4518, 4520, 3, 384, 192, 0, 4519, 4518, 1, 0, 0, 0, 4519, 4520, 1, 0, 0, 0, 4520, 351, 1, 0, 0, 0, 4521, 4522, 5, 25, 0, 0, 4522, 4523, 5, 572, 0, 0, 4523, 4524, 5, 605, 0, 0, 4524, 4525, 5, 176, 0, 0, 4525, 4530, 3, 374, 187, 0, 4526, 4527, 5, 868, 0, 0, 4527, 4529, 3, 374, 187, 0, 4528, 4526, 1, 0, 0, 0, 4529, 4532, 1, 0, 0, 0, 4530, 4528, 1, 0, 0, 0, 4530, 4531, 1, 0, 0, 0, 4531, 4534, 1, 0, 0, 0, 4532, 4530, 1, 0, 0, 0, 4533, 4535, 3, 384, 192, 0, 4534, 4533, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 353, 1, 0, 0, 0, 4536, 4537, 5, 133, 0, 0, 4537, 4538, 7, 62, 0, 0, 4538, 4543, 5, 452, 0, 0, 4539, 4540, 5, 176, 0, 0, 4540, 4544, 5, 882, 0, 0, 4541, 4542, 5, 16, 0, 0, 4542, 4544, 5, 882, 0, 0, 4543, 4539, 1, 0, 0, 0, 4543, 4541, 1, 0, 0, 0, 4544, 355, 1, 0, 0, 0, 4545, 4546, 5, 640, 0, 0, 4546, 4555, 7, 63, 0, 0, 4547, 4552, 3, 390, 195, 0, 4548, 4549, 5, 868, 0, 0, 4549, 4551, 3, 390, 195, 0, 4550, 4548, 1, 0, 0, 0, 4551, 4554, 1, 0, 0, 0, 4552, 4550, 1, 0, 0, 0, 4552, 4553, 1, 0, 0, 0, 4553, 4556, 1, 0, 0, 0, 4554, 4552, 1, 0, 0, 0, 4555, 4547, 1, 0, 0, 0, 4555, 4556, 1, 0, 0, 0, 4556, 4559, 1, 0, 0, 0, 4557, 4558, 5, 676, 0, 0, 4558, 4560, 3, 392, 196, 0, 4559, 4557, 1, 0, 0, 0, 4559, 4560, 1, 0, 0, 0, 4560, 4564, 1, 0, 0, 0, 4561, 4563, 3, 394, 197, 0, 4562, 4561, 1, 0, 0, 0, 4563, 4566, 1, 0, 0, 0, 4564, 4562, 1, 0, 0, 0, 4564, 4565, 1, 0, 0, 0, 4565, 4568, 1, 0, 0, 0, 4566, 4564, 1, 0, 0, 0, 4567, 4569, 3, 384, 192, 0, 4568, 4567, 1, 0, 0, 0, 4568, 4569, 1, 0, 0, 0, 4569, 357, 1, 0, 0, 0, 4570, 4571, 5, 646, 0, 0, 4571, 4580, 7, 63, 0, 0, 4572, 4577, 3, 390, 195, 0, 4573, 4574, 5, 868, 0, 0, 4574, 4576, 3, 390, 195, 0, 4575, 4573, 1, 0, 0, 0, 4576, 4579, 1, 0, 0, 0, 4577, 4575, 1, 0, 0, 0, 4577, 4578, 1, 0, 0, 0, 4578, 4581, 1, 0, 0, 0, 4579, 4577, 1, 0, 0, 0, 4580, 4572, 1, 0, 0, 0, 4580, 4581, 1, 0, 0, 0, 4581, 4583, 1, 0, 0, 0, 4582, 4584, 3, 384, 192, 0, 4583, 4582, 1, 0, 0, 0, 4583, 4584, 1, 0, 0, 0, 4584, 359, 1, 0, 0, 0, 4585, 4586, 5, 640, 0, 0, 4586, 4590, 5, 415, 0, 0, 4587, 4588, 5, 678, 0, 0, 4588, 4589, 5, 857, 0, 0, 4589, 4591, 5, 882, 0, 0, 4590, 4587, 1, 0, 0, 0, 4590, 4591, 1, 0, 0, 0, 4591, 4596, 1, 0, 0, 0, 4592, 4593, 5, 868, 0, 0, 4593, 4594, 5, 529, 0, 0, 4594, 4595, 5, 857, 0, 0, 4595, 4597, 5, 882, 0, 0, 4596, 4592, 1, 0, 0, 0, 4596, 4597, 1, 0, 0, 0, 4597, 4602, 1, 0, 0, 0, 4598, 4599, 5, 868, 0, 0, 4599, 4600, 5, 363, 0, 0, 4600, 4601, 5, 857, 0, 0, 4601, 4603, 5, 882, 0, 0, 4602, 4598, 1, 0, 0, 0, 4602, 4603, 1, 0, 0, 0, 4603, 361, 1, 0, 0, 0, 4604, 4605, 5, 646, 0, 0, 4605, 4606, 5, 415, 0, 0, 4606, 363, 1, 0, 0, 0, 4607, 4608, 3, 366, 183, 0, 4608, 4609, 5, 857, 0, 0, 4609, 4610, 5, 882, 0, 0, 4610, 4635, 1, 0, 0, 0, 4611, 4612, 3, 368, 184, 0, 4612, 4613, 5, 857, 0, 0, 4613, 4614, 3, 708, 354, 0, 4614, 4635, 1, 0, 0, 0, 4615, 4616, 3, 370, 185, 0, 4616, 4617, 5, 857, 0, 0, 4617, 4618, 7, 25, 0, 0, 4618, 4635, 1, 0, 0, 0, 4619, 4635, 3, 372, 186, 0, 4620, 4621, 5, 424, 0, 0, 4621, 4622, 5, 857, 0, 0, 4622, 4631, 5, 866, 0, 0, 4623, 4628, 3, 702, 351, 0, 4624, 4625, 5, 868, 0, 0, 4625, 4627, 3, 702, 351, 0, 4626, 4624, 1, 0, 0, 0, 4627, 4630, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4628, 4629, 1, 0, 0, 0, 4629, 4632, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4631, 4623, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, 4632, 4633, 1, 0, 0, 0, 4633, 4635, 5, 867, 0, 0, 4634, 4607, 1, 0, 0, 0, 4634, 4611, 1, 0, 0, 0, 4634, 4615, 1, 0, 0, 0, 4634, 4619, 1, 0, 0, 0, 4634, 4620, 1, 0, 0, 0, 4635, 365, 1, 0, 0, 0, 4636, 4637, 7, 64, 0, 0, 4637, 367, 1, 0, 0, 0, 4638, 4639, 7, 65, 0, 0, 4639, 369, 1, 0, 0, 0, 4640, 4641, 7, 66, 0, 0, 4641, 371, 1, 0, 0, 0, 4642, 4643, 5, 543, 0, 0, 4643, 4644, 5, 857, 0, 0, 4644, 4656, 7, 67, 0, 0, 4645, 4646, 5, 574, 0, 0, 4646, 4647, 5, 857, 0, 0, 4647, 4656, 7, 68, 0, 0, 4648, 4649, 5, 310, 0, 0, 4649, 4653, 5, 857, 0, 0, 4650, 4654, 5, 507, 0, 0, 4651, 4654, 5, 450, 0, 0, 4652, 4654, 3, 396, 198, 0, 4653, 4650, 1, 0, 0, 0, 4653, 4651, 1, 0, 0, 0, 4653, 4652, 1, 0, 0, 0, 4654, 4656, 1, 0, 0, 0, 4655, 4642, 1, 0, 0, 0, 4655, 4645, 1, 0, 0, 0, 4655, 4648, 1, 0, 0, 0, 4656, 373, 1, 0, 0, 0, 4657, 4658, 3, 376, 188, 0, 4658, 4659, 5, 857, 0, 0, 4659, 4660, 5, 882, 0, 0, 4660, 4685, 1, 0, 0, 0, 4661, 4662, 3, 378, 189, 0, 4662, 4663, 5, 857, 0, 0, 4663, 4664, 3, 708, 354, 0, 4664, 4685, 1, 0, 0, 0, 4665, 4666, 3, 380, 190, 0, 4666, 4667, 5, 857, 0, 0, 4667, 4668, 7, 25, 0, 0, 4668, 4685, 1, 0, 0, 0, 4669, 4685, 3, 382, 191, 0, 4670, 4671, 5, 424, 0, 0, 4671, 4672, 5, 857, 0, 0, 4672, 4681, 5, 866, 0, 0, 4673, 4678, 3, 702, 351, 0, 4674, 4675, 5, 868, 0, 0, 4675, 4677, 3, 702, 351, 0, 4676, 4674, 1, 0, 0, 0, 4677, 4680, 1, 0, 0, 0, 4678, 4676, 1, 0, 0, 0, 4678, 4679, 1, 0, 0, 0, 4679, 4682, 1, 0, 0, 0, 4680, 4678, 1, 0, 0, 0, 4681, 4673, 1, 0, 0, 0, 4681, 4682, 1, 0, 0, 0, 4682, 4683, 1, 0, 0, 0, 4683, 4685, 5, 867, 0, 0, 4684, 4657, 1, 0, 0, 0, 4684, 4661, 1, 0, 0, 0, 4684, 4665, 1, 0, 0, 0, 4684, 4669, 1, 0, 0, 0, 4684, 4670, 1, 0, 0, 0, 4685, 375, 1, 0, 0, 0, 4686, 4687, 7, 69, 0, 0, 4687, 377, 1, 0, 0, 0, 4688, 4689, 7, 70, 0, 0, 4689, 379, 1, 0, 0, 0, 4690, 4691, 7, 71, 0, 0, 4691, 381, 1, 0, 0, 0, 4692, 4693, 5, 543, 0, 0, 4693, 4694, 5, 857, 0, 0, 4694, 4706, 7, 67, 0, 0, 4695, 4696, 5, 574, 0, 0, 4696, 4697, 5, 857, 0, 0, 4697, 4706, 7, 72, 0, 0, 4698, 4699, 5, 310, 0, 0, 4699, 4703, 5, 857, 0, 0, 4700, 4704, 5, 507, 0, 0, 4701, 4704, 5, 450, 0, 0, 4702, 4704, 3, 396, 198, 0, 4703, 4700, 1, 0, 0, 0, 4703, 4701, 1, 0, 0, 0, 4703, 4702, 1, 0, 0, 0, 4704, 4706, 1, 0, 0, 0, 4705, 4692, 1, 0, 0, 0, 4705, 4695, 1, 0, 0, 0, 4705, 4698, 1, 0, 0, 0, 4706, 383, 1, 0, 0, 0, 4707, 4708, 5, 65, 0, 0, 4708, 4709, 5, 328, 0, 0, 4709, 4710, 5, 882, 0, 0, 4710, 385, 1, 0, 0, 0, 4711, 4712, 5, 565, 0, 0, 4712, 4713, 5, 857, 0, 0, 4713, 4714, 5, 866, 0, 0, 4714, 4719, 3, 624, 312, 0, 4715, 4716, 5, 868, 0, 0, 4716, 4718, 3, 624, 312, 0, 4717, 4715, 1, 0, 0, 0, 4718, 4721, 1, 0, 0, 0, 4719, 4717, 1, 0, 0, 0, 4719, 4720, 1, 0, 0, 0, 4720, 4722, 1, 0, 0, 0, 4721, 4719, 1, 0, 0, 0, 4722, 4723, 5, 867, 0, 0, 4723, 4775, 1, 0, 0, 0, 4724, 4725, 5, 567, 0, 0, 4725, 4726, 5, 857, 0, 0, 4726, 4727, 5, 866, 0, 0, 4727, 4732, 3, 624, 312, 0, 4728, 4729, 5, 868, 0, 0, 4729, 4731, 3, 624, 312, 0, 4730, 4728, 1, 0, 0, 0, 4731, 4734, 1, 0, 0, 0, 4732, 4730, 1, 0, 0, 0, 4732, 4733, 1, 0, 0, 0, 4733, 4735, 1, 0, 0, 0, 4734, 4732, 1, 0, 0, 0, 4735, 4736, 5, 867, 0, 0, 4736, 4775, 1, 0, 0, 0, 4737, 4738, 5, 566, 0, 0, 4738, 4739, 5, 857, 0, 0, 4739, 4740, 5, 866, 0, 0, 4740, 4741, 3, 646, 323, 0, 4741, 4742, 5, 867, 0, 0, 4742, 4775, 1, 0, 0, 0, 4743, 4744, 5, 568, 0, 0, 4744, 4745, 5, 857, 0, 0, 4745, 4746, 5, 866, 0, 0, 4746, 4747, 3, 646, 323, 0, 4747, 4748, 5, 867, 0, 0, 4748, 4775, 1, 0, 0, 0, 4749, 4750, 5, 570, 0, 0, 4750, 4751, 5, 857, 0, 0, 4751, 4752, 5, 866, 0, 0, 4752, 4753, 3, 746, 373, 0, 4753, 4754, 5, 867, 0, 0, 4754, 4775, 1, 0, 0, 0, 4755, 4756, 5, 571, 0, 0, 4756, 4757, 5, 857, 0, 0, 4757, 4758, 5, 866, 0, 0, 4758, 4759, 3, 746, 373, 0, 4759, 4760, 5, 867, 0, 0, 4760, 4775, 1, 0, 0, 0, 4761, 4762, 5, 569, 0, 0, 4762, 4763, 5, 857, 0, 0, 4763, 4764, 5, 866, 0, 0, 4764, 4769, 3, 388, 194, 0, 4765, 4766, 5, 868, 0, 0, 4766, 4768, 3, 388, 194, 0, 4767, 4765, 1, 0, 0, 0, 4768, 4771, 1, 0, 0, 0, 4769, 4767, 1, 0, 0, 0, 4769, 4770, 1, 0, 0, 0, 4770, 4772, 1, 0, 0, 0, 4771, 4769, 1, 0, 0, 0, 4772, 4773, 5, 867, 0, 0, 4773, 4775, 1, 0, 0, 0, 4774, 4711, 1, 0, 0, 0, 4774, 4724, 1, 0, 0, 0, 4774, 4737, 1, 0, 0, 0, 4774, 4743, 1, 0, 0, 0, 4774, 4749, 1, 0, 0, 0, 4774, 4755, 1, 0, 0, 0, 4774, 4761, 1, 0, 0, 0, 4775, 387, 1, 0, 0, 0, 4776, 4777, 5, 866, 0, 0, 4777, 4778, 3, 648, 324, 0, 4778, 4779, 5, 868, 0, 0, 4779, 4780, 3, 648, 324, 0, 4780, 4781, 5, 867, 0, 0, 4781, 389, 1, 0, 0, 0, 4782, 4783, 7, 73, 0, 0, 4783, 391, 1, 0, 0, 0, 4784, 4785, 7, 74, 0, 0, 4785, 4786, 5, 857, 0, 0, 4786, 4810, 3, 396, 198, 0, 4787, 4788, 5, 460, 0, 0, 4788, 4789, 5, 857, 0, 0, 4789, 4790, 5, 882, 0, 0, 4790, 4791, 5, 868, 0, 0, 4791, 4792, 5, 461, 0, 0, 4792, 4793, 5, 857, 0, 0, 4793, 4810, 3, 708, 354, 0, 4794, 4795, 5, 611, 0, 0, 4795, 4796, 5, 857, 0, 0, 4796, 4797, 5, 882, 0, 0, 4797, 4798, 5, 868, 0, 0, 4798, 4799, 5, 612, 0, 0, 4799, 4800, 5, 857, 0, 0, 4800, 4810, 3, 708, 354, 0, 4801, 4802, 5, 557, 0, 0, 4802, 4803, 5, 857, 0, 0, 4803, 4804, 5, 882, 0, 0, 4804, 4805, 5, 868, 0, 0, 4805, 4806, 5, 558, 0, 0, 4806, 4807, 5, 857, 0, 0, 4807, 4810, 3, 708, 354, 0, 4808, 4810, 5, 634, 0, 0, 4809, 4784, 1, 0, 0, 0, 4809, 4787, 1, 0, 0, 0, 4809, 4794, 1, 0, 0, 0, 4809, 4801, 1, 0, 0, 0, 4809, 4808, 1, 0, 0, 0, 4810, 393, 1, 0, 0, 0, 4811, 4812, 5, 678, 0, 0, 4812, 4813, 5, 857, 0, 0, 4813, 4824, 5, 882, 0, 0, 4814, 4815, 5, 529, 0, 0, 4815, 4816, 5, 857, 0, 0, 4816, 4824, 5, 882, 0, 0, 4817, 4818, 5, 363, 0, 0, 4818, 4819, 5, 857, 0, 0, 4819, 4824, 5, 882, 0, 0, 4820, 4821, 5, 535, 0, 0, 4821, 4822, 5, 857, 0, 0, 4822, 4824, 5, 882, 0, 0, 4823, 4811, 1, 0, 0, 0, 4823, 4814, 1, 0, 0, 0, 4823, 4817, 1, 0, 0, 0, 4823, 4820, 1, 0, 0, 0, 4824, 395, 1, 0, 0, 0, 4825, 4830, 3, 692, 346, 0, 4826, 4827, 5, 868, 0, 0, 4827, 4829, 3, 692, 346, 0, 4828, 4826, 1, 0, 0, 0, 4829, 4832, 1, 0, 0, 0, 4830, 4828, 1, 0, 0, 0, 4830, 4831, 1, 0, 0, 0, 4831, 4835, 1, 0, 0, 0, 4832, 4830, 1, 0, 0, 0, 4833, 4835, 5, 882, 0, 0, 4834, 4825, 1, 0, 0, 0, 4834, 4833, 1, 0, 0, 0, 4835, 397, 1, 0, 0, 0, 4836, 4837, 5, 694, 0, 0, 4837, 4838, 7, 75, 0, 0, 4838, 4840, 3, 694, 347, 0, 4839, 4841, 7, 76, 0, 0, 4840, 4839, 1, 0, 0, 0, 4840, 4841, 1, 0, 0, 0, 4841, 399, 1, 0, 0, 0, 4842, 4843, 5, 694, 0, 0, 4843, 4844, 5, 378, 0, 0, 4844, 4850, 3, 694, 347, 0, 4845, 4848, 5, 654, 0, 0, 4846, 4847, 5, 65, 0, 0, 4847, 4849, 5, 489, 0, 0, 4848, 4846, 1, 0, 0, 0, 4848, 4849, 1, 0, 0, 0, 4849, 4851, 1, 0, 0, 0, 4850, 4845, 1, 0, 0, 0, 4850, 4851, 1, 0, 0, 0, 4851, 401, 1, 0, 0, 0, 4852, 4853, 5, 694, 0, 0, 4853, 4854, 5, 540, 0, 0, 4854, 4855, 3, 694, 347, 0, 4855, 403, 1, 0, 0, 0, 4856, 4857, 5, 694, 0, 0, 4857, 4858, 5, 341, 0, 0, 4858, 4861, 3, 694, 347, 0, 4859, 4860, 5, 513, 0, 0, 4860, 4862, 5, 533, 0, 0, 4861, 4859, 1, 0, 0, 0, 4861, 4862, 1, 0, 0, 0, 4862, 405, 1, 0, 0, 0, 4863, 4864, 5, 694, 0, 0, 4864, 4865, 5, 583, 0, 0, 4865, 4866, 3, 694, 347, 0, 4866, 407, 1, 0, 0, 0, 4867, 4868, 5, 694, 0, 0, 4868, 4871, 5, 551, 0, 0, 4869, 4870, 5, 33, 0, 0, 4870, 4872, 3, 694, 347, 0, 4871, 4869, 1, 0, 0, 0, 4871, 4872, 1, 0, 0, 0, 4872, 409, 1, 0, 0, 0, 4873, 4874, 5, 540, 0, 0, 4874, 4875, 3, 702, 351, 0, 4875, 4878, 5, 68, 0, 0, 4876, 4879, 5, 882, 0, 0, 4877, 4879, 5, 892, 0, 0, 4878, 4876, 1, 0, 0, 0, 4878, 4877, 1, 0, 0, 0, 4879, 411, 1, 0, 0, 0, 4880, 4881, 5, 717, 0, 0, 4881, 4884, 3, 702, 351, 0, 4882, 4883, 5, 188, 0, 0, 4883, 4885, 3, 748, 374, 0, 4884, 4882, 1, 0, 0, 0, 4884, 4885, 1, 0, 0, 0, 4885, 413, 1, 0, 0, 0, 4886, 4887, 7, 77, 0, 0, 4887, 4888, 5, 540, 0, 0, 4888, 4889, 3, 702, 351, 0, 4889, 415, 1, 0, 0, 0, 4890, 4893, 3, 418, 209, 0, 4891, 4893, 3, 4, 2, 0, 4892, 4890, 1, 0, 0, 0, 4892, 4891, 1, 0, 0, 0, 4893, 417, 1, 0, 0, 0, 4894, 4895, 3, 702, 351, 0, 4895, 4896, 5, 878, 0, 0, 4896, 4898, 1, 0, 0, 0, 4897, 4894, 1, 0, 0, 0, 4897, 4898, 1, 0, 0, 0, 4898, 4899, 1, 0, 0, 0, 4899, 4905, 5, 317, 0, 0, 4900, 4901, 3, 438, 219, 0, 4901, 4902, 5, 869, 0, 0, 4902, 4904, 1, 0, 0, 0, 4903, 4900, 1, 0, 0, 0, 4904, 4907, 1, 0, 0, 0, 4905, 4903, 1, 0, 0, 0, 4905, 4906, 1, 0, 0, 0, 4906, 4913, 1, 0, 0, 0, 4907, 4905, 1, 0, 0, 0, 4908, 4909, 3, 440, 220, 0, 4909, 4910, 5, 869, 0, 0, 4910, 4912, 1, 0, 0, 0, 4911, 4908, 1, 0, 0, 0, 4912, 4915, 1, 0, 0, 0, 4913, 4911, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 4921, 1, 0, 0, 0, 4915, 4913, 1, 0, 0, 0, 4916, 4917, 3, 442, 221, 0, 4917, 4918, 5, 869, 0, 0, 4918, 4920, 1, 0, 0, 0, 4919, 4916, 1, 0, 0, 0, 4920, 4923, 1, 0, 0, 0, 4921, 4919, 1, 0, 0, 0, 4921, 4922, 1, 0, 0, 0, 4922, 4929, 1, 0, 0, 0, 4923, 4921, 1, 0, 0, 0, 4924, 4925, 3, 444, 222, 0, 4925, 4926, 5, 869, 0, 0, 4926, 4928, 1, 0, 0, 0, 4927, 4924, 1, 0, 0, 0, 4928, 4931, 1, 0, 0, 0, 4929, 4927, 1, 0, 0, 0, 4929, 4930, 1, 0, 0, 0, 4930, 4935, 1, 0, 0, 0, 4931, 4929, 1, 0, 0, 0, 4932, 4934, 3, 448, 224, 0, 4933, 4932, 1, 0, 0, 0, 4934, 4937, 1, 0, 0, 0, 4935, 4933, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 4938, 1, 0, 0, 0, 4937, 4935, 1, 0, 0, 0, 4938, 4940, 5, 378, 0, 0, 4939, 4941, 3, 702, 351, 0, 4940, 4939, 1, 0, 0, 0, 4940, 4941, 1, 0, 0, 0, 4941, 419, 1, 0, 0, 0, 4942, 4945, 5, 23, 0, 0, 4943, 4946, 3, 702, 351, 0, 4944, 4946, 3, 800, 400, 0, 4945, 4943, 1, 0, 0, 0, 4945, 4944, 1, 0, 0, 0, 4945, 4946, 1, 0, 0, 0, 4946, 4948, 1, 0, 0, 0, 4947, 4949, 3, 450, 225, 0, 4948, 4947, 1, 0, 0, 0, 4949, 4950, 1, 0, 0, 0, 4950, 4948, 1, 0, 0, 0, 4950, 4951, 1, 0, 0, 0, 4951, 4958, 1, 0, 0, 0, 4952, 4954, 5, 53, 0, 0, 4953, 4955, 3, 448, 224, 0, 4954, 4953, 1, 0, 0, 0, 4955, 4956, 1, 0, 0, 0, 4956, 4954, 1, 0, 0, 0, 4956, 4957, 1, 0, 0, 0, 4957, 4959, 1, 0, 0, 0, 4958, 4952, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 4960, 1, 0, 0, 0, 4960, 4961, 5, 378, 0, 0, 4961, 4962, 5, 23, 0, 0, 4962, 421, 1, 0, 0, 0, 4963, 4964, 5, 78, 0, 0, 4964, 4965, 3, 800, 400, 0, 4965, 4967, 5, 175, 0, 0, 4966, 4968, 3, 448, 224, 0, 4967, 4966, 1, 0, 0, 0, 4968, 4969, 1, 0, 0, 0, 4969, 4967, 1, 0, 0, 0, 4969, 4970, 1, 0, 0, 0, 4970, 4974, 1, 0, 0, 0, 4971, 4973, 3, 452, 226, 0, 4972, 4971, 1, 0, 0, 0, 4973, 4976, 1, 0, 0, 0, 4974, 4972, 1, 0, 0, 0, 4974, 4975, 1, 0, 0, 0, 4975, 4983, 1, 0, 0, 0, 4976, 4974, 1, 0, 0, 0, 4977, 4979, 5, 53, 0, 0, 4978, 4980, 3, 448, 224, 0, 4979, 4978, 1, 0, 0, 0, 4980, 4981, 1, 0, 0, 0, 4981, 4979, 1, 0, 0, 0, 4981, 4982, 1, 0, 0, 0, 4982, 4984, 1, 0, 0, 0, 4983, 4977, 1, 0, 0, 0, 4983, 4984, 1, 0, 0, 0, 4984, 4985, 1, 0, 0, 0, 4985, 4986, 5, 378, 0, 0, 4986, 4987, 5, 78, 0, 0, 4987, 423, 1, 0, 0, 0, 4988, 4989, 5, 90, 0, 0, 4989, 4990, 3, 702, 351, 0, 4990, 425, 1, 0, 0, 0, 4991, 4992, 5, 97, 0, 0, 4992, 4993, 3, 702, 351, 0, 4993, 427, 1, 0, 0, 0, 4994, 4995, 3, 702, 351, 0, 4995, 4996, 5, 878, 0, 0, 4996, 4998, 1, 0, 0, 0, 4997, 4994, 1, 0, 0, 0, 4997, 4998, 1, 0, 0, 0, 4998, 4999, 1, 0, 0, 0, 4999, 5001, 5, 106, 0, 0, 5000, 5002, 3, 448, 224, 0, 5001, 5000, 1, 0, 0, 0, 5002, 5003, 1, 0, 0, 0, 5003, 5001, 1, 0, 0, 0, 5003, 5004, 1, 0, 0, 0, 5004, 5005, 1, 0, 0, 0, 5005, 5006, 5, 378, 0, 0, 5006, 5008, 5, 106, 0, 0, 5007, 5009, 3, 702, 351, 0, 5008, 5007, 1, 0, 0, 0, 5008, 5009, 1, 0, 0, 0, 5009, 429, 1, 0, 0, 0, 5010, 5011, 3, 702, 351, 0, 5011, 5012, 5, 878, 0, 0, 5012, 5014, 1, 0, 0, 0, 5013, 5010, 1, 0, 0, 0, 5013, 5014, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5017, 5, 142, 0, 0, 5016, 5018, 3, 448, 224, 0, 5017, 5016, 1, 0, 0, 0, 5018, 5019, 1, 0, 0, 0, 5019, 5017, 1, 0, 0, 0, 5019, 5020, 1, 0, 0, 0, 5020, 5021, 1, 0, 0, 0, 5021, 5022, 5, 676, 0, 0, 5022, 5023, 3, 800, 400, 0, 5023, 5024, 5, 378, 0, 0, 5024, 5026, 5, 142, 0, 0, 5025, 5027, 3, 702, 351, 0, 5026, 5025, 1, 0, 0, 0, 5026, 5027, 1, 0, 0, 0, 5027, 431, 1, 0, 0, 0, 5028, 5029, 5, 148, 0, 0, 5029, 5030, 3, 800, 400, 0, 5030, 433, 1, 0, 0, 0, 5031, 5032, 3, 702, 351, 0, 5032, 5033, 5, 878, 0, 0, 5033, 5035, 1, 0, 0, 0, 5034, 5031, 1, 0, 0, 0, 5034, 5035, 1, 0, 0, 0, 5035, 5036, 1, 0, 0, 0, 5036, 5037, 5, 193, 0, 0, 5037, 5038, 3, 800, 400, 0, 5038, 5040, 5, 371, 0, 0, 5039, 5041, 3, 448, 224, 0, 5040, 5039, 1, 0, 0, 0, 5041, 5042, 1, 0, 0, 0, 5042, 5040, 1, 0, 0, 0, 5042, 5043, 1, 0, 0, 0, 5043, 5044, 1, 0, 0, 0, 5044, 5045, 5, 378, 0, 0, 5045, 5047, 5, 193, 0, 0, 5046, 5048, 3, 702, 351, 0, 5047, 5046, 1, 0, 0, 0, 5047, 5048, 1, 0, 0, 0, 5048, 435, 1, 0, 0, 0, 5049, 5050, 5, 334, 0, 0, 5050, 5065, 3, 702, 351, 0, 5051, 5056, 5, 64, 0, 0, 5052, 5054, 5, 501, 0, 0, 5053, 5052, 1, 0, 0, 0, 5053, 5054, 1, 0, 0, 0, 5054, 5055, 1, 0, 0, 0, 5055, 5057, 5, 68, 0, 0, 5056, 5053, 1, 0, 0, 0, 5056, 5057, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, 5059, 3, 702, 351, 0, 5059, 5060, 5, 88, 0, 0, 5060, 5061, 3, 700, 350, 0, 5061, 5065, 1, 0, 0, 0, 5062, 5063, 5, 516, 0, 0, 5063, 5065, 3, 702, 351, 0, 5064, 5049, 1, 0, 0, 0, 5064, 5051, 1, 0, 0, 0, 5064, 5062, 1, 0, 0, 0, 5065, 437, 1, 0, 0, 0, 5066, 5067, 5, 41, 0, 0, 5067, 5068, 3, 700, 350, 0, 5068, 5071, 3, 722, 361, 0, 5069, 5070, 5, 42, 0, 0, 5070, 5072, 3, 800, 400, 0, 5071, 5069, 1, 0, 0, 0, 5071, 5072, 1, 0, 0, 0, 5072, 439, 1, 0, 0, 0, 5073, 5074, 5, 41, 0, 0, 5074, 5075, 3, 702, 351, 0, 5075, 5076, 5, 30, 0, 0, 5076, 5083, 5, 65, 0, 0, 5077, 5084, 3, 708, 354, 0, 5078, 5080, 5, 164, 0, 0, 5079, 5081, 5, 682, 0, 0, 5080, 5079, 1, 0, 0, 0, 5080, 5081, 1, 0, 0, 0, 5081, 5082, 1, 0, 0, 0, 5082, 5084, 5, 882, 0, 0, 5083, 5077, 1, 0, 0, 0, 5083, 5078, 1, 0, 0, 0, 5084, 441, 1, 0, 0, 0, 5085, 5086, 5, 41, 0, 0, 5086, 5087, 3, 702, 351, 0, 5087, 5088, 5, 38, 0, 0, 5088, 5089, 5, 65, 0, 0, 5089, 5090, 3, 204, 102, 0, 5090, 443, 1, 0, 0, 0, 5091, 5092, 5, 41, 0, 0, 5092, 5093, 7, 78, 0, 0, 5093, 5094, 5, 417, 0, 0, 5094, 5095, 5, 65, 0, 0, 5095, 5100, 3, 446, 223, 0, 5096, 5097, 5, 868, 0, 0, 5097, 5099, 3, 446, 223, 0, 5098, 5096, 1, 0, 0, 0, 5099, 5102, 1, 0, 0, 0, 5100, 5098, 1, 0, 0, 0, 5100, 5101, 1, 0, 0, 0, 5101, 5103, 1, 0, 0, 0, 5102, 5100, 1, 0, 0, 0, 5103, 5104, 3, 416, 208, 0, 5104, 445, 1, 0, 0, 0, 5105, 5117, 3, 708, 354, 0, 5106, 5108, 5, 164, 0, 0, 5107, 5109, 5, 682, 0, 0, 5108, 5107, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5110, 1, 0, 0, 0, 5110, 5117, 5, 882, 0, 0, 5111, 5117, 3, 702, 351, 0, 5112, 5117, 5, 165, 0, 0, 5113, 5114, 5, 114, 0, 0, 5114, 5117, 5, 407, 0, 0, 5115, 5117, 5, 163, 0, 0, 5116, 5105, 1, 0, 0, 0, 5116, 5106, 1, 0, 0, 0, 5116, 5111, 1, 0, 0, 0, 5116, 5112, 1, 0, 0, 0, 5116, 5113, 1, 0, 0, 0, 5116, 5115, 1, 0, 0, 0, 5117, 447, 1, 0, 0, 0, 5118, 5121, 3, 18, 9, 0, 5119, 5121, 3, 4, 2, 0, 5120, 5118, 1, 0, 0, 0, 5120, 5119, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 5, 869, 0, 0, 5123, 449, 1, 0, 0, 0, 5124, 5127, 5, 191, 0, 0, 5125, 5128, 3, 720, 360, 0, 5126, 5128, 3, 800, 400, 0, 5127, 5125, 1, 0, 0, 0, 5127, 5126, 1, 0, 0, 0, 5128, 5129, 1, 0, 0, 0, 5129, 5131, 5, 175, 0, 0, 5130, 5132, 3, 448, 224, 0, 5131, 5130, 1, 0, 0, 0, 5132, 5133, 1, 0, 0, 0, 5133, 5131, 1, 0, 0, 0, 5133, 5134, 1, 0, 0, 0, 5134, 451, 1, 0, 0, 0, 5135, 5136, 5, 54, 0, 0, 5136, 5137, 3, 800, 400, 0, 5137, 5139, 5, 175, 0, 0, 5138, 5140, 3, 448, 224, 0, 5139, 5138, 1, 0, 0, 0, 5140, 5141, 1, 0, 0, 0, 5141, 5139, 1, 0, 0, 0, 5141, 5142, 1, 0, 0, 0, 5142, 453, 1, 0, 0, 0, 5143, 5144, 5, 8, 0, 0, 5144, 5146, 5, 678, 0, 0, 5145, 5147, 3, 754, 377, 0, 5146, 5145, 1, 0, 0, 0, 5146, 5147, 1, 0, 0, 0, 5147, 5204, 1, 0, 0, 0, 5148, 5153, 3, 486, 243, 0, 5149, 5150, 5, 868, 0, 0, 5150, 5152, 3, 486, 243, 0, 5151, 5149, 1, 0, 0, 0, 5152, 5155, 1, 0, 0, 0, 5153, 5151, 1, 0, 0, 0, 5153, 5154, 1, 0, 0, 0, 5154, 5205, 1, 0, 0, 0, 5155, 5153, 1, 0, 0, 0, 5156, 5161, 3, 488, 244, 0, 5157, 5158, 5, 868, 0, 0, 5158, 5160, 3, 488, 244, 0, 5159, 5157, 1, 0, 0, 0, 5160, 5163, 1, 0, 0, 0, 5161, 5159, 1, 0, 0, 0, 5161, 5162, 1, 0, 0, 0, 5162, 5178, 1, 0, 0, 0, 5163, 5161, 1, 0, 0, 0, 5164, 5176, 5, 144, 0, 0, 5165, 5177, 5, 505, 0, 0, 5166, 5173, 3, 500, 250, 0, 5167, 5169, 5, 11, 0, 0, 5168, 5167, 1, 0, 0, 0, 5168, 5169, 1, 0, 0, 0, 5169, 5170, 1, 0, 0, 0, 5170, 5172, 3, 500, 250, 0, 5171, 5168, 1, 0, 0, 0, 5172, 5175, 1, 0, 0, 0, 5173, 5171, 1, 0, 0, 0, 5173, 5174, 1, 0, 0, 0, 5174, 5177, 1, 0, 0, 0, 5175, 5173, 1, 0, 0, 0, 5176, 5165, 1, 0, 0, 0, 5176, 5166, 1, 0, 0, 0, 5177, 5179, 1, 0, 0, 0, 5178, 5164, 1, 0, 0, 0, 5178, 5179, 1, 0, 0, 0, 5179, 5186, 1, 0, 0, 0, 5180, 5182, 5, 194, 0, 0, 5181, 5183, 3, 502, 251, 0, 5182, 5181, 1, 0, 0, 0, 5183, 5184, 1, 0, 0, 0, 5184, 5182, 1, 0, 0, 0, 5184, 5185, 1, 0, 0, 0, 5185, 5187, 1, 0, 0, 0, 5186, 5180, 1, 0, 0, 0, 5186, 5187, 1, 0, 0, 0, 5187, 5192, 1, 0, 0, 0, 5188, 5191, 3, 504, 252, 0, 5189, 5191, 3, 506, 253, 0, 5190, 5188, 1, 0, 0, 0, 5190, 5189, 1, 0, 0, 0, 5191, 5194, 1, 0, 0, 0, 5192, 5190, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5197, 1, 0, 0, 0, 5194, 5192, 1, 0, 0, 0, 5195, 5196, 7, 79, 0, 0, 5196, 5198, 5, 882, 0, 0, 5197, 5195, 1, 0, 0, 0, 5197, 5198, 1, 0, 0, 0, 5198, 5205, 1, 0, 0, 0, 5199, 5200, 3, 652, 326, 0, 5200, 5201, 5, 42, 0, 0, 5201, 5202, 5, 582, 0, 0, 5202, 5203, 3, 462, 231, 0, 5203, 5205, 1, 0, 0, 0, 5204, 5148, 1, 0, 0, 0, 5204, 5156, 1, 0, 0, 0, 5204, 5199, 1, 0, 0, 0, 5205, 455, 1, 0, 0, 0, 5206, 5207, 5, 34, 0, 0, 5207, 5209, 5, 678, 0, 0, 5208, 5210, 3, 756, 378, 0, 5209, 5208, 1, 0, 0, 0, 5209, 5210, 1, 0, 0, 0, 5210, 5211, 1, 0, 0, 0, 5211, 5213, 3, 680, 340, 0, 5212, 5214, 3, 490, 245, 0, 5213, 5212, 1, 0, 0, 0, 5213, 5214, 1, 0, 0, 0, 5214, 5222, 1, 0, 0, 0, 5215, 5216, 5, 868, 0, 0, 5216, 5218, 3, 680, 340, 0, 5217, 5219, 3, 490, 245, 0, 5218, 5217, 1, 0, 0, 0, 5218, 5219, 1, 0, 0, 0, 5219, 5221, 1, 0, 0, 0, 5220, 5215, 1, 0, 0, 0, 5221, 5224, 1, 0, 0, 0, 5222, 5220, 1, 0, 0, 0, 5222, 5223, 1, 0, 0, 0, 5223, 5228, 1, 0, 0, 0, 5224, 5222, 1, 0, 0, 0, 5225, 5226, 5, 42, 0, 0, 5226, 5227, 5, 582, 0, 0, 5227, 5229, 3, 462, 231, 0, 5228, 5225, 1, 0, 0, 0, 5228, 5229, 1, 0, 0, 0, 5229, 5244, 1, 0, 0, 0, 5230, 5242, 5, 144, 0, 0, 5231, 5243, 5, 505, 0, 0, 5232, 5239, 3, 500, 250, 0, 5233, 5235, 5, 11, 0, 0, 5234, 5233, 1, 0, 0, 0, 5234, 5235, 1, 0, 0, 0, 5235, 5236, 1, 0, 0, 0, 5236, 5238, 3, 500, 250, 0, 5237, 5234, 1, 0, 0, 0, 5238, 5241, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5239, 5240, 1, 0, 0, 0, 5240, 5243, 1, 0, 0, 0, 5241, 5239, 1, 0, 0, 0, 5242, 5231, 1, 0, 0, 0, 5242, 5232, 1, 0, 0, 0, 5243, 5245, 1, 0, 0, 0, 5244, 5230, 1, 0, 0, 0, 5244, 5245, 1, 0, 0, 0, 5245, 5252, 1, 0, 0, 0, 5246, 5248, 5, 194, 0, 0, 5247, 5249, 3, 502, 251, 0, 5248, 5247, 1, 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5248, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5253, 1, 0, 0, 0, 5252, 5246, 1, 0, 0, 0, 5252, 5253, 1, 0, 0, 0, 5253, 5258, 1, 0, 0, 0, 5254, 5257, 3, 504, 252, 0, 5255, 5257, 3, 506, 253, 0, 5256, 5254, 1, 0, 0, 0, 5256, 5255, 1, 0, 0, 0, 5257, 5260, 1, 0, 0, 0, 5258, 5256, 1, 0, 0, 0, 5258, 5259, 1, 0, 0, 0, 5259, 5263, 1, 0, 0, 0, 5260, 5258, 1, 0, 0, 0, 5261, 5262, 7, 79, 0, 0, 5262, 5264, 5, 882, 0, 0, 5263, 5261, 1, 0, 0, 0, 5263, 5264, 1, 0, 0, 0, 5264, 457, 1, 0, 0, 0, 5265, 5266, 5, 51, 0, 0, 5266, 5268, 5, 678, 0, 0, 5267, 5269, 3, 754, 377, 0, 5268, 5267, 1, 0, 0, 0, 5268, 5269, 1, 0, 0, 0, 5269, 5270, 1, 0, 0, 0, 5270, 5275, 3, 680, 340, 0, 5271, 5272, 5, 868, 0, 0, 5272, 5274, 3, 680, 340, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5277, 1, 0, 0, 0, 5275, 5273, 1, 0, 0, 0, 5275, 5276, 1, 0, 0, 0, 5276, 459, 1, 0, 0, 0, 5277, 5275, 1, 0, 0, 0, 5278, 5279, 5, 73, 0, 0, 5279, 5284, 3, 514, 257, 0, 5280, 5281, 5, 868, 0, 0, 5281, 5283, 3, 514, 257, 0, 5282, 5280, 1, 0, 0, 0, 5283, 5286, 1, 0, 0, 0, 5284, 5282, 1, 0, 0, 0, 5284, 5285, 1, 0, 0, 0, 5285, 5287, 1, 0, 0, 0, 5286, 5284, 1, 0, 0, 0, 5287, 5289, 5, 119, 0, 0, 5288, 5290, 3, 482, 241, 0, 5289, 5288, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 5291, 1, 0, 0, 0, 5291, 5292, 3, 518, 259, 0, 5292, 5302, 5, 176, 0, 0, 5293, 5298, 3, 494, 247, 0, 5294, 5295, 5, 868, 0, 0, 5295, 5297, 3, 494, 247, 0, 5296, 5294, 1, 0, 0, 0, 5297, 5300, 1, 0, 0, 0, 5298, 5296, 1, 0, 0, 0, 5298, 5299, 1, 0, 0, 0, 5299, 5303, 1, 0, 0, 0, 5300, 5298, 1, 0, 0, 0, 5301, 5303, 3, 650, 325, 0, 5302, 5293, 1, 0, 0, 0, 5302, 5301, 1, 0, 0, 0, 5303, 5318, 1, 0, 0, 0, 5304, 5316, 5, 144, 0, 0, 5305, 5317, 5, 505, 0, 0, 5306, 5313, 3, 500, 250, 0, 5307, 5309, 5, 11, 0, 0, 5308, 5307, 1, 0, 0, 0, 5308, 5309, 1, 0, 0, 0, 5309, 5310, 1, 0, 0, 0, 5310, 5312, 3, 500, 250, 0, 5311, 5308, 1, 0, 0, 0, 5312, 5315, 1, 0, 0, 0, 5313, 5311, 1, 0, 0, 0, 5313, 5314, 1, 0, 0, 0, 5314, 5317, 1, 0, 0, 0, 5315, 5313, 1, 0, 0, 0, 5316, 5305, 1, 0, 0, 0, 5316, 5306, 1, 0, 0, 0, 5317, 5319, 1, 0, 0, 0, 5318, 5304, 1, 0, 0, 0, 5318, 5319, 1, 0, 0, 0, 5319, 5329, 1, 0, 0, 0, 5320, 5326, 5, 194, 0, 0, 5321, 5322, 5, 73, 0, 0, 5322, 5325, 5, 121, 0, 0, 5323, 5325, 3, 502, 251, 0, 5324, 5321, 1, 0, 0, 0, 5324, 5323, 1, 0, 0, 0, 5325, 5328, 1, 0, 0, 0, 5326, 5324, 1, 0, 0, 0, 5326, 5327, 1, 0, 0, 0, 5327, 5330, 1, 0, 0, 0, 5328, 5326, 1, 0, 0, 0, 5329, 5320, 1, 0, 0, 0, 5329, 5330, 1, 0, 0, 0, 5330, 5338, 1, 0, 0, 0, 5331, 5332, 5, 13, 0, 0, 5332, 5336, 3, 680, 340, 0, 5333, 5334, 5, 194, 0, 0, 5334, 5335, 5, 582, 0, 0, 5335, 5337, 3, 462, 231, 0, 5336, 5333, 1, 0, 0, 0, 5336, 5337, 1, 0, 0, 0, 5337, 5339, 1, 0, 0, 0, 5338, 5331, 1, 0, 0, 0, 5338, 5339, 1, 0, 0, 0, 5339, 5368, 1, 0, 0, 0, 5340, 5343, 5, 73, 0, 0, 5341, 5342, 5, 547, 0, 0, 5342, 5344, 5, 119, 0, 0, 5343, 5341, 1, 0, 0, 0, 5343, 5344, 1, 0, 0, 0, 5344, 5345, 1, 0, 0, 0, 5345, 5350, 3, 652, 326, 0, 5346, 5347, 5, 868, 0, 0, 5347, 5349, 3, 652, 326, 0, 5348, 5346, 1, 0, 0, 0, 5349, 5352, 1, 0, 0, 0, 5350, 5348, 1, 0, 0, 0, 5350, 5351, 1, 0, 0, 0, 5351, 5353, 1, 0, 0, 0, 5352, 5350, 1, 0, 0, 0, 5353, 5354, 5, 176, 0, 0, 5354, 5359, 3, 652, 326, 0, 5355, 5356, 5, 868, 0, 0, 5356, 5358, 3, 652, 326, 0, 5357, 5355, 1, 0, 0, 0, 5358, 5361, 1, 0, 0, 0, 5359, 5357, 1, 0, 0, 0, 5359, 5360, 1, 0, 0, 0, 5360, 5365, 1, 0, 0, 0, 5361, 5359, 1, 0, 0, 0, 5362, 5363, 5, 194, 0, 0, 5363, 5364, 5, 704, 0, 0, 5364, 5366, 5, 121, 0, 0, 5365, 5362, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5368, 1, 0, 0, 0, 5367, 5278, 1, 0, 0, 0, 5367, 5340, 1, 0, 0, 0, 5368, 461, 1, 0, 0, 0, 5369, 5378, 5, 42, 0, 0, 5370, 5378, 5, 505, 0, 0, 5371, 5374, 5, 7, 0, 0, 5372, 5373, 5, 59, 0, 0, 5373, 5375, 3, 650, 325, 0, 5374, 5372, 1, 0, 0, 0, 5374, 5375, 1, 0, 0, 0, 5375, 5378, 1, 0, 0, 0, 5376, 5378, 3, 650, 325, 0, 5377, 5369, 1, 0, 0, 0, 5377, 5370, 1, 0, 0, 0, 5377, 5371, 1, 0, 0, 0, 5377, 5376, 1, 0, 0, 0, 5378, 463, 1, 0, 0, 0, 5379, 5380, 5, 73, 0, 0, 5380, 5381, 5, 547, 0, 0, 5381, 5382, 5, 119, 0, 0, 5382, 5383, 3, 680, 340, 0, 5383, 5384, 5, 176, 0, 0, 5384, 5389, 3, 680, 340, 0, 5385, 5386, 5, 868, 0, 0, 5386, 5388, 3, 680, 340, 0, 5387, 5385, 1, 0, 0, 0, 5388, 5391, 1, 0, 0, 0, 5389, 5387, 1, 0, 0, 0, 5389, 5390, 1, 0, 0, 0, 5390, 5395, 1, 0, 0, 0, 5391, 5389, 1, 0, 0, 0, 5392, 5393, 5, 194, 0, 0, 5393, 5394, 5, 73, 0, 0, 5394, 5396, 5, 121, 0, 0, 5395, 5392, 1, 0, 0, 0, 5395, 5396, 1, 0, 0, 0, 5396, 465, 1, 0, 0, 0, 5397, 5398, 5, 8, 0, 0, 5398, 5399, 5, 739, 0, 0, 5399, 5400, 5, 74, 0, 0, 5400, 5406, 3, 642, 321, 0, 5401, 5403, 5, 190, 0, 0, 5402, 5404, 5, 857, 0, 0, 5403, 5402, 1, 0, 0, 0, 5403, 5404, 1, 0, 0, 0, 5404, 5405, 1, 0, 0, 0, 5405, 5407, 3, 474, 237, 0, 5406, 5401, 1, 0, 0, 0, 5406, 5407, 1, 0, 0, 0, 5407, 5413, 1, 0, 0, 0, 5408, 5410, 5, 837, 0, 0, 5409, 5411, 5, 857, 0, 0, 5410, 5409, 1, 0, 0, 0, 5410, 5411, 1, 0, 0, 0, 5411, 5412, 1, 0, 0, 0, 5412, 5414, 3, 708, 354, 0, 5413, 5408, 1, 0, 0, 0, 5413, 5414, 1, 0, 0, 0, 5414, 5419, 1, 0, 0, 0, 5415, 5417, 7, 38, 0, 0, 5416, 5418, 5, 66, 0, 0, 5417, 5416, 1, 0, 0, 0, 5417, 5418, 1, 0, 0, 0, 5418, 5420, 1, 0, 0, 0, 5419, 5415, 1, 0, 0, 0, 5419, 5420, 1, 0, 0, 0, 5420, 467, 1, 0, 0, 0, 5421, 5422, 5, 34, 0, 0, 5422, 5423, 5, 739, 0, 0, 5423, 5424, 5, 74, 0, 0, 5424, 5425, 3, 640, 320, 0, 5425, 5426, 5, 839, 0, 0, 5426, 5427, 5, 857, 0, 0, 5427, 5433, 7, 80, 0, 0, 5428, 5430, 5, 190, 0, 0, 5429, 5431, 5, 857, 0, 0, 5430, 5429, 1, 0, 0, 0, 5430, 5431, 1, 0, 0, 0, 5431, 5432, 1, 0, 0, 0, 5432, 5434, 3, 474, 237, 0, 5433, 5428, 1, 0, 0, 0, 5433, 5434, 1, 0, 0, 0, 5434, 5440, 1, 0, 0, 0, 5435, 5437, 5, 837, 0, 0, 5436, 5438, 5, 857, 0, 0, 5437, 5436, 1, 0, 0, 0, 5437, 5438, 1, 0, 0, 0, 5438, 5439, 1, 0, 0, 0, 5439, 5441, 3, 708, 354, 0, 5440, 5435, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5443, 1, 0, 0, 0, 5442, 5444, 7, 38, 0, 0, 5443, 5442, 1, 0, 0, 0, 5443, 5444, 1, 0, 0, 0, 5444, 469, 1, 0, 0, 0, 5445, 5446, 5, 51, 0, 0, 5446, 5447, 5, 739, 0, 0, 5447, 5448, 5, 74, 0, 0, 5448, 5450, 3, 642, 321, 0, 5449, 5451, 5, 66, 0, 0, 5450, 5449, 1, 0, 0, 0, 5450, 5451, 1, 0, 0, 0, 5451, 471, 1, 0, 0, 0, 5452, 5453, 5, 155, 0, 0, 5453, 5454, 5, 739, 0, 0, 5454, 5455, 5, 74, 0, 0, 5455, 5465, 3, 642, 321, 0, 5456, 5457, 5, 65, 0, 0, 5457, 5462, 3, 708, 354, 0, 5458, 5459, 5, 868, 0, 0, 5459, 5461, 3, 708, 354, 0, 5460, 5458, 1, 0, 0, 0, 5461, 5464, 1, 0, 0, 0, 5462, 5460, 1, 0, 0, 0, 5462, 5463, 1, 0, 0, 0, 5463, 5466, 1, 0, 0, 0, 5464, 5462, 1, 0, 0, 0, 5465, 5456, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 473, 1, 0, 0, 0, 5467, 5473, 3, 708, 354, 0, 5468, 5469, 3, 708, 354, 0, 5469, 5470, 5, 854, 0, 0, 5470, 5471, 3, 708, 354, 0, 5471, 5473, 1, 0, 0, 0, 5472, 5467, 1, 0, 0, 0, 5472, 5468, 1, 0, 0, 0, 5473, 5478, 1, 0, 0, 0, 5474, 5475, 5, 868, 0, 0, 5475, 5477, 3, 474, 237, 0, 5476, 5474, 1, 0, 0, 0, 5477, 5480, 1, 0, 0, 0, 5478, 5476, 1, 0, 0, 0, 5478, 5479, 1, 0, 0, 0, 5479, 475, 1, 0, 0, 0, 5480, 5478, 1, 0, 0, 0, 5481, 5482, 5, 141, 0, 0, 5482, 5483, 5, 678, 0, 0, 5483, 5488, 3, 520, 260, 0, 5484, 5485, 5, 868, 0, 0, 5485, 5487, 3, 520, 260, 0, 5486, 5484, 1, 0, 0, 0, 5487, 5490, 1, 0, 0, 0, 5488, 5486, 1, 0, 0, 0, 5488, 5489, 1, 0, 0, 0, 5489, 477, 1, 0, 0, 0, 5490, 5488, 1, 0, 0, 0, 5491, 5493, 5, 149, 0, 0, 5492, 5494, 3, 754, 377, 0, 5493, 5492, 1, 0, 0, 0, 5493, 5494, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5500, 3, 514, 257, 0, 5496, 5497, 5, 868, 0, 0, 5497, 5499, 3, 514, 257, 0, 5498, 5496, 1, 0, 0, 0, 5499, 5502, 1, 0, 0, 0, 5500, 5498, 1, 0, 0, 0, 5500, 5501, 1, 0, 0, 0, 5501, 5503, 1, 0, 0, 0, 5502, 5500, 1, 0, 0, 0, 5503, 5505, 5, 119, 0, 0, 5504, 5506, 3, 482, 241, 0, 5505, 5504, 1, 0, 0, 0, 5505, 5506, 1, 0, 0, 0, 5506, 5507, 1, 0, 0, 0, 5507, 5508, 3, 518, 259, 0, 5508, 5509, 5, 68, 0, 0, 5509, 5511, 3, 650, 325, 0, 5510, 5512, 3, 480, 240, 0, 5511, 5510, 1, 0, 0, 0, 5511, 5512, 1, 0, 0, 0, 5512, 5544, 1, 0, 0, 0, 5513, 5515, 5, 149, 0, 0, 5514, 5516, 3, 754, 377, 0, 5515, 5514, 1, 0, 0, 0, 5515, 5516, 1, 0, 0, 0, 5516, 5517, 1, 0, 0, 0, 5517, 5519, 5, 7, 0, 0, 5518, 5520, 5, 734, 0, 0, 5519, 5518, 1, 0, 0, 0, 5519, 5520, 1, 0, 0, 0, 5520, 5521, 1, 0, 0, 0, 5521, 5522, 5, 868, 0, 0, 5522, 5523, 5, 73, 0, 0, 5523, 5524, 5, 121, 0, 0, 5524, 5525, 5, 68, 0, 0, 5525, 5527, 3, 650, 325, 0, 5526, 5528, 3, 480, 240, 0, 5527, 5526, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5544, 1, 0, 0, 0, 5529, 5531, 5, 149, 0, 0, 5530, 5532, 3, 754, 377, 0, 5531, 5530, 1, 0, 0, 0, 5531, 5532, 1, 0, 0, 0, 5532, 5535, 1, 0, 0, 0, 5533, 5534, 5, 547, 0, 0, 5534, 5536, 5, 119, 0, 0, 5535, 5533, 1, 0, 0, 0, 5535, 5536, 1, 0, 0, 0, 5536, 5537, 1, 0, 0, 0, 5537, 5538, 3, 650, 325, 0, 5538, 5539, 5, 68, 0, 0, 5539, 5541, 3, 650, 325, 0, 5540, 5542, 3, 480, 240, 0, 5541, 5540, 1, 0, 0, 0, 5541, 5542, 1, 0, 0, 0, 5542, 5544, 1, 0, 0, 0, 5543, 5491, 1, 0, 0, 0, 5543, 5513, 1, 0, 0, 0, 5543, 5529, 1, 0, 0, 0, 5544, 479, 1, 0, 0, 0, 5545, 5546, 5, 79, 0, 0, 5546, 5547, 5, 674, 0, 0, 5547, 5548, 5, 678, 0, 0, 5548, 481, 1, 0, 0, 0, 5549, 5550, 7, 81, 0, 0, 5550, 483, 1, 0, 0, 0, 5551, 5552, 5, 155, 0, 0, 5552, 5555, 5, 529, 0, 0, 5553, 5554, 5, 65, 0, 0, 5554, 5556, 3, 680, 340, 0, 5555, 5553, 1, 0, 0, 0, 5555, 5556, 1, 0, 0, 0, 5556, 5557, 1, 0, 0, 0, 5557, 5560, 5, 857, 0, 0, 5558, 5561, 3, 794, 397, 0, 5559, 5561, 5, 882, 0, 0, 5560, 5558, 1, 0, 0, 0, 5560, 5559, 1, 0, 0, 0, 5561, 5584, 1, 0, 0, 0, 5562, 5563, 5, 155, 0, 0, 5563, 5566, 5, 529, 0, 0, 5564, 5565, 5, 65, 0, 0, 5565, 5567, 3, 680, 340, 0, 5566, 5564, 1, 0, 0, 0, 5566, 5567, 1, 0, 0, 0, 5567, 5572, 1, 0, 0, 0, 5568, 5569, 5, 176, 0, 0, 5569, 5573, 5, 829, 0, 0, 5570, 5571, 5, 857, 0, 0, 5571, 5573, 5, 882, 0, 0, 5572, 5568, 1, 0, 0, 0, 5572, 5570, 1, 0, 0, 0, 5573, 5576, 1, 0, 0, 0, 5574, 5575, 5, 143, 0, 0, 5575, 5577, 5, 882, 0, 0, 5576, 5574, 1, 0, 0, 0, 5576, 5577, 1, 0, 0, 0, 5577, 5581, 1, 0, 0, 0, 5578, 5579, 5, 147, 0, 0, 5579, 5580, 5, 36, 0, 0, 5580, 5582, 5, 529, 0, 0, 5581, 5578, 1, 0, 0, 0, 5581, 5582, 1, 0, 0, 0, 5582, 5584, 1, 0, 0, 0, 5583, 5551, 1, 0, 0, 0, 5583, 5562, 1, 0, 0, 0, 5584, 485, 1, 0, 0, 0, 5585, 5586, 3, 680, 340, 0, 5586, 5587, 3, 504, 252, 0, 5587, 487, 1, 0, 0, 0, 5588, 5614, 3, 680, 340, 0, 5589, 5590, 5, 423, 0, 0, 5590, 5591, 5, 20, 0, 0, 5591, 5592, 5, 882, 0, 0, 5592, 5615, 3, 496, 248, 0, 5593, 5594, 5, 423, 0, 0, 5594, 5595, 5, 20, 0, 0, 5595, 5596, 5, 829, 0, 0, 5596, 5597, 5, 529, 0, 0, 5597, 5615, 3, 496, 248, 0, 5598, 5599, 5, 423, 0, 0, 5599, 5600, 5, 194, 0, 0, 5600, 5615, 3, 498, 249, 0, 5601, 5602, 5, 369, 0, 0, 5602, 5603, 5, 511, 0, 0, 5603, 5615, 5, 529, 0, 0, 5604, 5605, 7, 82, 0, 0, 5605, 5607, 3, 512, 256, 0, 5606, 5608, 3, 508, 254, 0, 5607, 5606, 1, 0, 0, 0, 5607, 5608, 1, 0, 0, 0, 5608, 5610, 1, 0, 0, 0, 5609, 5604, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, 5611, 5609, 1, 0, 0, 0, 5611, 5612, 1, 0, 0, 0, 5612, 5615, 1, 0, 0, 0, 5613, 5615, 3, 510, 255, 0, 5614, 5589, 1, 0, 0, 0, 5614, 5593, 1, 0, 0, 0, 5614, 5598, 1, 0, 0, 0, 5614, 5601, 1, 0, 0, 0, 5614, 5609, 1, 0, 0, 0, 5614, 5613, 1, 0, 0, 0, 5614, 5615, 1, 0, 0, 0, 5615, 489, 1, 0, 0, 0, 5616, 5617, 5, 423, 0, 0, 5617, 5623, 5, 20, 0, 0, 5618, 5624, 5, 882, 0, 0, 5619, 5620, 5, 829, 0, 0, 5620, 5624, 5, 529, 0, 0, 5621, 5622, 5, 529, 0, 0, 5622, 5624, 5, 882, 0, 0, 5623, 5618, 1, 0, 0, 0, 5623, 5619, 1, 0, 0, 0, 5623, 5621, 1, 0, 0, 0, 5624, 5627, 1, 0, 0, 0, 5625, 5626, 5, 11, 0, 0, 5626, 5628, 3, 490, 245, 0, 5627, 5625, 1, 0, 0, 0, 5627, 5628, 1, 0, 0, 0, 5628, 5653, 1, 0, 0, 0, 5629, 5630, 5, 423, 0, 0, 5630, 5631, 5, 194, 0, 0, 5631, 5640, 3, 702, 351, 0, 5632, 5636, 5, 20, 0, 0, 5633, 5637, 5, 882, 0, 0, 5634, 5635, 5, 829, 0, 0, 5635, 5637, 5, 529, 0, 0, 5636, 5633, 1, 0, 0, 0, 5636, 5634, 1, 0, 0, 0, 5637, 5641, 1, 0, 0, 0, 5638, 5639, 5, 13, 0, 0, 5639, 5641, 5, 882, 0, 0, 5640, 5632, 1, 0, 0, 0, 5640, 5638, 1, 0, 0, 0, 5640, 5641, 1, 0, 0, 0, 5641, 5644, 1, 0, 0, 0, 5642, 5643, 5, 11, 0, 0, 5643, 5645, 3, 490, 245, 0, 5644, 5642, 1, 0, 0, 0, 5644, 5645, 1, 0, 0, 0, 5645, 5653, 1, 0, 0, 0, 5646, 5647, 5, 423, 0, 0, 5647, 5648, 5, 194, 0, 0, 5648, 5650, 3, 702, 351, 0, 5649, 5651, 3, 492, 246, 0, 5650, 5649, 1, 0, 0, 0, 5650, 5651, 1, 0, 0, 0, 5651, 5653, 1, 0, 0, 0, 5652, 5616, 1, 0, 0, 0, 5652, 5629, 1, 0, 0, 0, 5652, 5646, 1, 0, 0, 0, 5653, 491, 1, 0, 0, 0, 5654, 5655, 5, 427, 0, 0, 5655, 5656, 5, 708, 0, 0, 5656, 5657, 5, 423, 0, 0, 5657, 5661, 5, 20, 0, 0, 5658, 5659, 5, 829, 0, 0, 5659, 5662, 5, 529, 0, 0, 5660, 5662, 5, 882, 0, 0, 5661, 5658, 1, 0, 0, 0, 5661, 5660, 1, 0, 0, 0, 5662, 5672, 1, 0, 0, 0, 5663, 5664, 5, 427, 0, 0, 5664, 5665, 5, 708, 0, 0, 5665, 5666, 5, 423, 0, 0, 5666, 5667, 5, 194, 0, 0, 5667, 5668, 3, 702, 351, 0, 5668, 5669, 5, 13, 0, 0, 5669, 5670, 5, 882, 0, 0, 5670, 5672, 1, 0, 0, 0, 5671, 5654, 1, 0, 0, 0, 5671, 5663, 1, 0, 0, 0, 5672, 493, 1, 0, 0, 0, 5673, 5674, 3, 680, 340, 0, 5674, 5675, 5, 423, 0, 0, 5675, 5676, 5, 20, 0, 0, 5676, 5677, 5, 529, 0, 0, 5677, 5678, 5, 882, 0, 0, 5678, 5699, 1, 0, 0, 0, 5679, 5680, 3, 680, 340, 0, 5680, 5681, 5, 423, 0, 0, 5681, 5682, 5, 20, 0, 0, 5682, 5683, 5, 829, 0, 0, 5683, 5684, 5, 529, 0, 0, 5684, 5685, 3, 496, 248, 0, 5685, 5699, 1, 0, 0, 0, 5686, 5687, 3, 680, 340, 0, 5687, 5688, 5, 423, 0, 0, 5688, 5689, 5, 20, 0, 0, 5689, 5690, 5, 882, 0, 0, 5690, 5691, 3, 496, 248, 0, 5691, 5699, 1, 0, 0, 0, 5692, 5693, 3, 680, 340, 0, 5693, 5694, 5, 423, 0, 0, 5694, 5695, 5, 194, 0, 0, 5695, 5696, 3, 498, 249, 0, 5696, 5699, 1, 0, 0, 0, 5697, 5699, 3, 680, 340, 0, 5698, 5673, 1, 0, 0, 0, 5698, 5679, 1, 0, 0, 0, 5698, 5686, 1, 0, 0, 0, 5698, 5692, 1, 0, 0, 0, 5698, 5697, 1, 0, 0, 0, 5699, 495, 1, 0, 0, 0, 5700, 5701, 5, 143, 0, 0, 5701, 5703, 5, 882, 0, 0, 5702, 5700, 1, 0, 0, 0, 5702, 5703, 1, 0, 0, 0, 5703, 5707, 1, 0, 0, 0, 5704, 5705, 5, 147, 0, 0, 5705, 5706, 5, 36, 0, 0, 5706, 5708, 5, 529, 0, 0, 5707, 5704, 1, 0, 0, 0, 5707, 5708, 1, 0, 0, 0, 5708, 497, 1, 0, 0, 0, 5709, 5717, 3, 702, 351, 0, 5710, 5714, 7, 83, 0, 0, 5711, 5715, 5, 882, 0, 0, 5712, 5713, 5, 829, 0, 0, 5713, 5715, 5, 529, 0, 0, 5714, 5711, 1, 0, 0, 0, 5714, 5712, 1, 0, 0, 0, 5715, 5716, 1, 0, 0, 0, 5716, 5718, 3, 496, 248, 0, 5717, 5710, 1, 0, 0, 0, 5717, 5718, 1, 0, 0, 0, 5718, 5724, 1, 0, 0, 0, 5719, 5720, 3, 702, 351, 0, 5720, 5721, 5, 188, 0, 0, 5721, 5722, 3, 794, 397, 0, 5722, 5724, 1, 0, 0, 0, 5723, 5709, 1, 0, 0, 0, 5723, 5719, 1, 0, 0, 0, 5724, 499, 1, 0, 0, 0, 5725, 5734, 5, 169, 0, 0, 5726, 5734, 5, 693, 0, 0, 5727, 5728, 5, 331, 0, 0, 5728, 5734, 5, 882, 0, 0, 5729, 5730, 5, 441, 0, 0, 5730, 5734, 5, 882, 0, 0, 5731, 5732, 5, 651, 0, 0, 5732, 5734, 5, 882, 0, 0, 5733, 5725, 1, 0, 0, 0, 5733, 5726, 1, 0, 0, 0, 5733, 5727, 1, 0, 0, 0, 5733, 5729, 1, 0, 0, 0, 5733, 5731, 1, 0, 0, 0, 5734, 501, 1, 0, 0, 0, 5735, 5736, 5, 479, 0, 0, 5736, 5744, 3, 708, 354, 0, 5737, 5738, 5, 482, 0, 0, 5738, 5744, 3, 708, 354, 0, 5739, 5740, 5, 478, 0, 0, 5740, 5744, 3, 708, 354, 0, 5741, 5742, 5, 483, 0, 0, 5742, 5744, 3, 708, 354, 0, 5743, 5735, 1, 0, 0, 0, 5743, 5737, 1, 0, 0, 0, 5743, 5739, 1, 0, 0, 0, 5743, 5741, 1, 0, 0, 0, 5744, 503, 1, 0, 0, 0, 5745, 5746, 5, 529, 0, 0, 5746, 5753, 5, 390, 0, 0, 5747, 5754, 5, 42, 0, 0, 5748, 5754, 5, 500, 0, 0, 5749, 5750, 5, 87, 0, 0, 5750, 5751, 3, 708, 354, 0, 5751, 5752, 5, 698, 0, 0, 5752, 5754, 1, 0, 0, 0, 5753, 5747, 1, 0, 0, 0, 5753, 5748, 1, 0, 0, 0, 5753, 5749, 1, 0, 0, 0, 5753, 5754, 1, 0, 0, 0, 5754, 5784, 1, 0, 0, 0, 5755, 5756, 5, 529, 0, 0, 5756, 5759, 5, 420, 0, 0, 5757, 5760, 5, 42, 0, 0, 5758, 5760, 3, 708, 354, 0, 5759, 5757, 1, 0, 0, 0, 5759, 5758, 1, 0, 0, 0, 5760, 5784, 1, 0, 0, 0, 5761, 5762, 5, 529, 0, 0, 5762, 5763, 5, 581, 0, 0, 5763, 5768, 5, 87, 0, 0, 5764, 5769, 5, 42, 0, 0, 5765, 5766, 3, 708, 354, 0, 5766, 5767, 5, 698, 0, 0, 5767, 5769, 1, 0, 0, 0, 5768, 5764, 1, 0, 0, 0, 5768, 5765, 1, 0, 0, 0, 5769, 5784, 1, 0, 0, 0, 5770, 5771, 5, 529, 0, 0, 5771, 5772, 5, 144, 0, 0, 5772, 5774, 5, 36, 0, 0, 5773, 5775, 7, 84, 0, 0, 5774, 5773, 1, 0, 0, 0, 5774, 5775, 1, 0, 0, 0, 5775, 5784, 1, 0, 0, 0, 5776, 5777, 5, 395, 0, 0, 5777, 5784, 3, 708, 354, 0, 5778, 5781, 5, 530, 0, 0, 5779, 5782, 3, 708, 354, 0, 5780, 5782, 5, 669, 0, 0, 5781, 5779, 1, 0, 0, 0, 5781, 5780, 1, 0, 0, 0, 5782, 5784, 1, 0, 0, 0, 5783, 5745, 1, 0, 0, 0, 5783, 5755, 1, 0, 0, 0, 5783, 5761, 1, 0, 0, 0, 5783, 5770, 1, 0, 0, 0, 5783, 5776, 1, 0, 0, 0, 5783, 5778, 1, 0, 0, 0, 5784, 505, 1, 0, 0, 0, 5785, 5786, 5, 304, 0, 0, 5786, 5787, 7, 85, 0, 0, 5787, 507, 1, 0, 0, 0, 5788, 5791, 5, 423, 0, 0, 5789, 5790, 5, 194, 0, 0, 5790, 5792, 3, 702, 351, 0, 5791, 5789, 1, 0, 0, 0, 5791, 5792, 1, 0, 0, 0, 5792, 5801, 1, 0, 0, 0, 5793, 5797, 5, 20, 0, 0, 5794, 5798, 5, 882, 0, 0, 5795, 5796, 5, 829, 0, 0, 5796, 5798, 5, 529, 0, 0, 5797, 5794, 1, 0, 0, 0, 5797, 5795, 1, 0, 0, 0, 5798, 5802, 1, 0, 0, 0, 5799, 5800, 5, 13, 0, 0, 5800, 5802, 5, 882, 0, 0, 5801, 5793, 1, 0, 0, 0, 5801, 5799, 1, 0, 0, 0, 5802, 509, 1, 0, 0, 0, 5803, 5804, 3, 512, 256, 0, 5804, 5805, 5, 429, 0, 0, 5805, 5806, 5, 555, 0, 0, 5806, 5819, 1, 0, 0, 0, 5807, 5808, 3, 512, 256, 0, 5808, 5809, 5, 401, 0, 0, 5809, 5810, 5, 555, 0, 0, 5810, 5811, 5, 155, 0, 0, 5811, 5812, 5, 330, 0, 0, 5812, 5813, 5, 13, 0, 0, 5813, 5814, 5, 882, 0, 0, 5814, 5819, 1, 0, 0, 0, 5815, 5816, 3, 512, 256, 0, 5816, 5817, 5, 675, 0, 0, 5817, 5819, 1, 0, 0, 0, 5818, 5803, 1, 0, 0, 0, 5818, 5807, 1, 0, 0, 0, 5818, 5815, 1, 0, 0, 0, 5819, 511, 1, 0, 0, 0, 5820, 5821, 7, 86, 0, 0, 5821, 5822, 5, 394, 0, 0, 5822, 513, 1, 0, 0, 0, 5823, 5828, 3, 516, 258, 0, 5824, 5825, 5, 866, 0, 0, 5825, 5826, 3, 656, 328, 0, 5826, 5827, 5, 867, 0, 0, 5827, 5829, 1, 0, 0, 0, 5828, 5824, 1, 0, 0, 0, 5828, 5829, 1, 0, 0, 0, 5829, 515, 1, 0, 0, 0, 5830, 5832, 5, 7, 0, 0, 5831, 5833, 5, 734, 0, 0, 5832, 5831, 1, 0, 0, 0, 5832, 5833, 1, 0, 0, 0, 5833, 5924, 1, 0, 0, 0, 5834, 5836, 5, 8, 0, 0, 5835, 5837, 5, 743, 0, 0, 5836, 5835, 1, 0, 0, 0, 5836, 5837, 1, 0, 0, 0, 5837, 5924, 1, 0, 0, 0, 5838, 5846, 5, 34, 0, 0, 5839, 5840, 5, 660, 0, 0, 5840, 5847, 5, 752, 0, 0, 5841, 5847, 5, 743, 0, 0, 5842, 5847, 5, 684, 0, 0, 5843, 5847, 5, 678, 0, 0, 5844, 5847, 5, 658, 0, 0, 5845, 5847, 5, 582, 0, 0, 5846, 5839, 1, 0, 0, 0, 5846, 5841, 1, 0, 0, 0, 5846, 5842, 1, 0, 0, 0, 5846, 5843, 1, 0, 0, 0, 5846, 5844, 1, 0, 0, 0, 5846, 5845, 1, 0, 0, 0, 5846, 5847, 1, 0, 0, 0, 5847, 5924, 1, 0, 0, 0, 5848, 5924, 5, 44, 0, 0, 5849, 5851, 5, 51, 0, 0, 5850, 5852, 5, 582, 0, 0, 5851, 5850, 1, 0, 0, 0, 5851, 5852, 1, 0, 0, 0, 5852, 5924, 1, 0, 0, 0, 5853, 5924, 5, 385, 0, 0, 5854, 5924, 5, 717, 0, 0, 5855, 5924, 5, 718, 0, 0, 5856, 5857, 5, 73, 0, 0, 5857, 5924, 5, 121, 0, 0, 5858, 5924, 5, 82, 0, 0, 5859, 5924, 5, 86, 0, 0, 5860, 5861, 5, 104, 0, 0, 5861, 5924, 5, 752, 0, 0, 5862, 5924, 5, 735, 0, 0, 5863, 5924, 5, 547, 0, 0, 5864, 5924, 5, 138, 0, 0, 5865, 5924, 5, 736, 0, 0, 5866, 5867, 5, 572, 0, 0, 5867, 5924, 7, 87, 0, 0, 5868, 5924, 5, 154, 0, 0, 5869, 5870, 5, 157, 0, 0, 5870, 5924, 7, 88, 0, 0, 5871, 5924, 5, 749, 0, 0, 5872, 5924, 5, 750, 0, 0, 5873, 5924, 5, 178, 0, 0, 5874, 5924, 5, 185, 0, 0, 5875, 5924, 5, 186, 0, 0, 5876, 5924, 5, 705, 0, 0, 5877, 5924, 5, 706, 0, 0, 5878, 5924, 5, 707, 0, 0, 5879, 5924, 5, 709, 0, 0, 5880, 5924, 5, 710, 0, 0, 5881, 5924, 5, 711, 0, 0, 5882, 5924, 5, 712, 0, 0, 5883, 5924, 5, 714, 0, 0, 5884, 5924, 5, 715, 0, 0, 5885, 5924, 5, 716, 0, 0, 5886, 5924, 5, 719, 0, 0, 5887, 5924, 5, 720, 0, 0, 5888, 5924, 5, 721, 0, 0, 5889, 5924, 5, 722, 0, 0, 5890, 5924, 5, 723, 0, 0, 5891, 5924, 5, 724, 0, 0, 5892, 5924, 5, 725, 0, 0, 5893, 5924, 5, 726, 0, 0, 5894, 5924, 5, 727, 0, 0, 5895, 5924, 5, 728, 0, 0, 5896, 5924, 5, 731, 0, 0, 5897, 5924, 5, 732, 0, 0, 5898, 5924, 5, 733, 0, 0, 5899, 5924, 5, 737, 0, 0, 5900, 5924, 5, 738, 0, 0, 5901, 5924, 5, 740, 0, 0, 5902, 5924, 5, 741, 0, 0, 5903, 5924, 5, 742, 0, 0, 5904, 5924, 5, 745, 0, 0, 5905, 5924, 5, 746, 0, 0, 5906, 5924, 5, 747, 0, 0, 5907, 5924, 5, 160, 0, 0, 5908, 5924, 5, 748, 0, 0, 5909, 5924, 5, 836, 0, 0, 5910, 5924, 5, 751, 0, 0, 5911, 5924, 5, 753, 0, 0, 5912, 5924, 5, 838, 0, 0, 5913, 5924, 5, 754, 0, 0, 5914, 5924, 5, 755, 0, 0, 5915, 5916, 5, 103, 0, 0, 5916, 5917, 5, 68, 0, 0, 5917, 5924, 5, 744, 0, 0, 5918, 5919, 5, 154, 0, 0, 5919, 5920, 5, 88, 0, 0, 5920, 5924, 5, 744, 0, 0, 5921, 5922, 5, 729, 0, 0, 5922, 5924, 5, 730, 0, 0, 5923, 5830, 1, 0, 0, 0, 5923, 5834, 1, 0, 0, 0, 5923, 5838, 1, 0, 0, 0, 5923, 5848, 1, 0, 0, 0, 5923, 5849, 1, 0, 0, 0, 5923, 5853, 1, 0, 0, 0, 5923, 5854, 1, 0, 0, 0, 5923, 5855, 1, 0, 0, 0, 5923, 5856, 1, 0, 0, 0, 5923, 5858, 1, 0, 0, 0, 5923, 5859, 1, 0, 0, 0, 5923, 5860, 1, 0, 0, 0, 5923, 5862, 1, 0, 0, 0, 5923, 5863, 1, 0, 0, 0, 5923, 5864, 1, 0, 0, 0, 5923, 5865, 1, 0, 0, 0, 5923, 5866, 1, 0, 0, 0, 5923, 5868, 1, 0, 0, 0, 5923, 5869, 1, 0, 0, 0, 5923, 5871, 1, 0, 0, 0, 5923, 5872, 1, 0, 0, 0, 5923, 5873, 1, 0, 0, 0, 5923, 5874, 1, 0, 0, 0, 5923, 5875, 1, 0, 0, 0, 5923, 5876, 1, 0, 0, 0, 5923, 5877, 1, 0, 0, 0, 5923, 5878, 1, 0, 0, 0, 5923, 5879, 1, 0, 0, 0, 5923, 5880, 1, 0, 0, 0, 5923, 5881, 1, 0, 0, 0, 5923, 5882, 1, 0, 0, 0, 5923, 5883, 1, 0, 0, 0, 5923, 5884, 1, 0, 0, 0, 5923, 5885, 1, 0, 0, 0, 5923, 5886, 1, 0, 0, 0, 5923, 5887, 1, 0, 0, 0, 5923, 5888, 1, 0, 0, 0, 5923, 5889, 1, 0, 0, 0, 5923, 5890, 1, 0, 0, 0, 5923, 5891, 1, 0, 0, 0, 5923, 5892, 1, 0, 0, 0, 5923, 5893, 1, 0, 0, 0, 5923, 5894, 1, 0, 0, 0, 5923, 5895, 1, 0, 0, 0, 5923, 5896, 1, 0, 0, 0, 5923, 5897, 1, 0, 0, 0, 5923, 5898, 1, 0, 0, 0, 5923, 5899, 1, 0, 0, 0, 5923, 5900, 1, 0, 0, 0, 5923, 5901, 1, 0, 0, 0, 5923, 5902, 1, 0, 0, 0, 5923, 5903, 1, 0, 0, 0, 5923, 5904, 1, 0, 0, 0, 5923, 5905, 1, 0, 0, 0, 5923, 5906, 1, 0, 0, 0, 5923, 5907, 1, 0, 0, 0, 5923, 5908, 1, 0, 0, 0, 5923, 5909, 1, 0, 0, 0, 5923, 5910, 1, 0, 0, 0, 5923, 5911, 1, 0, 0, 0, 5923, 5912, 1, 0, 0, 0, 5923, 5913, 1, 0, 0, 0, 5923, 5914, 1, 0, 0, 0, 5923, 5915, 1, 0, 0, 0, 5923, 5918, 1, 0, 0, 0, 5923, 5921, 1, 0, 0, 0, 5924, 517, 1, 0, 0, 0, 5925, 5942, 5, 850, 0, 0, 5926, 5927, 5, 850, 0, 0, 5927, 5928, 5, 865, 0, 0, 5928, 5942, 5, 850, 0, 0, 5929, 5930, 3, 702, 351, 0, 5930, 5931, 5, 865, 0, 0, 5931, 5932, 5, 850, 0, 0, 5932, 5942, 1, 0, 0, 0, 5933, 5934, 3, 702, 351, 0, 5934, 5935, 5, 865, 0, 0, 5935, 5936, 3, 702, 351, 0, 5936, 5942, 1, 0, 0, 0, 5937, 5938, 3, 702, 351, 0, 5938, 5939, 3, 706, 353, 0, 5939, 5942, 1, 0, 0, 0, 5940, 5942, 3, 702, 351, 0, 5941, 5925, 1, 0, 0, 0, 5941, 5926, 1, 0, 0, 0, 5941, 5929, 1, 0, 0, 0, 5941, 5933, 1, 0, 0, 0, 5941, 5937, 1, 0, 0, 0, 5941, 5940, 1, 0, 0, 0, 5942, 519, 1, 0, 0, 0, 5943, 5944, 3, 680, 340, 0, 5944, 5945, 5, 176, 0, 0, 5945, 5946, 3, 680, 340, 0, 5946, 521, 1, 0, 0, 0, 5947, 5949, 5, 10, 0, 0, 5948, 5950, 3, 532, 266, 0, 5949, 5948, 1, 0, 0, 0, 5949, 5950, 1, 0, 0, 0, 5950, 5951, 1, 0, 0, 0, 5951, 5952, 5, 173, 0, 0, 5952, 5996, 3, 646, 323, 0, 5953, 5955, 5, 10, 0, 0, 5954, 5956, 3, 532, 266, 0, 5955, 5954, 1, 0, 0, 0, 5955, 5956, 1, 0, 0, 0, 5956, 5957, 1, 0, 0, 0, 5957, 5958, 5, 173, 0, 0, 5958, 5959, 3, 648, 324, 0, 5959, 5960, 5, 185, 0, 0, 5960, 5961, 5, 77, 0, 0, 5961, 5962, 5, 119, 0, 0, 5962, 5967, 3, 656, 328, 0, 5963, 5964, 5, 194, 0, 0, 5964, 5965, 3, 708, 354, 0, 5965, 5966, 5, 19, 0, 0, 5966, 5968, 1, 0, 0, 0, 5967, 5963, 1, 0, 0, 0, 5967, 5968, 1, 0, 0, 0, 5968, 5996, 1, 0, 0, 0, 5969, 5971, 5, 10, 0, 0, 5970, 5972, 3, 532, 266, 0, 5971, 5970, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 5973, 1, 0, 0, 0, 5973, 5974, 5, 173, 0, 0, 5974, 5975, 3, 648, 324, 0, 5975, 5976, 5, 185, 0, 0, 5976, 5977, 5, 77, 0, 0, 5977, 5978, 5, 119, 0, 0, 5978, 5982, 3, 658, 329, 0, 5979, 5980, 5, 188, 0, 0, 5980, 5981, 5, 360, 0, 0, 5981, 5983, 5, 882, 0, 0, 5982, 5979, 1, 0, 0, 0, 5982, 5983, 1, 0, 0, 0, 5983, 5996, 1, 0, 0, 0, 5984, 5986, 5, 10, 0, 0, 5985, 5987, 3, 532, 266, 0, 5986, 5985, 1, 0, 0, 0, 5986, 5987, 1, 0, 0, 0, 5987, 5988, 1, 0, 0, 0, 5988, 5989, 5, 173, 0, 0, 5989, 5990, 3, 648, 324, 0, 5990, 5991, 5, 51, 0, 0, 5991, 5992, 5, 77, 0, 0, 5992, 5993, 5, 119, 0, 0, 5993, 5994, 3, 656, 328, 0, 5994, 5996, 1, 0, 0, 0, 5995, 5947, 1, 0, 0, 0, 5995, 5953, 1, 0, 0, 0, 5995, 5969, 1, 0, 0, 0, 5995, 5984, 1, 0, 0, 0, 5996, 523, 1, 0, 0, 0, 5997, 5998, 5, 27, 0, 0, 5998, 5999, 5, 173, 0, 0, 5999, 6003, 3, 646, 323, 0, 6000, 6002, 3, 534, 267, 0, 6001, 6000, 1, 0, 0, 0, 6002, 6005, 1, 0, 0, 0, 6003, 6001, 1, 0, 0, 0, 6003, 6004, 1, 0, 0, 0, 6004, 525, 1, 0, 0, 0, 6005, 6003, 1, 0, 0, 0, 6006, 6007, 5, 329, 0, 0, 6007, 6008, 5, 173, 0, 0, 6008, 6010, 3, 646, 323, 0, 6009, 6011, 7, 89, 0, 0, 6010, 6009, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 527, 1, 0, 0, 0, 6012, 6014, 5, 120, 0, 0, 6013, 6015, 3, 532, 266, 0, 6014, 6013, 1, 0, 0, 0, 6014, 6015, 1, 0, 0, 0, 6015, 6016, 1, 0, 0, 0, 6016, 6017, 7, 60, 0, 0, 6017, 6018, 3, 646, 323, 0, 6018, 529, 1, 0, 0, 0, 6019, 6021, 5, 562, 0, 0, 6020, 6022, 3, 532, 266, 0, 6021, 6020, 1, 0, 0, 0, 6021, 6022, 1, 0, 0, 0, 6022, 6023, 1, 0, 0, 0, 6023, 6024, 5, 173, 0, 0, 6024, 6026, 3, 646, 323, 0, 6025, 6027, 5, 549, 0, 0, 6026, 6025, 1, 0, 0, 0, 6026, 6027, 1, 0, 0, 0, 6027, 6029, 1, 0, 0, 0, 6028, 6030, 5, 392, 0, 0, 6029, 6028, 1, 0, 0, 0, 6029, 6030, 1, 0, 0, 0, 6030, 6032, 1, 0, 0, 0, 6031, 6033, 5, 679, 0, 0, 6032, 6031, 1, 0, 0, 0, 6032, 6033, 1, 0, 0, 0, 6033, 531, 1, 0, 0, 0, 6034, 6035, 7, 90, 0, 0, 6035, 533, 1, 0, 0, 0, 6036, 6037, 5, 65, 0, 0, 6037, 6044, 5, 677, 0, 0, 6038, 6044, 5, 549, 0, 0, 6039, 6044, 5, 396, 0, 0, 6040, 6044, 5, 484, 0, 0, 6041, 6044, 5, 392, 0, 0, 6042, 6044, 5, 327, 0, 0, 6043, 6036, 1, 0, 0, 0, 6043, 6038, 1, 0, 0, 0, 6043, 6039, 1, 0, 0, 0, 6043, 6040, 1, 0, 0, 0, 6043, 6041, 1, 0, 0, 0, 6043, 6042, 1, 0, 0, 0, 6044, 535, 1, 0, 0, 0, 6045, 6047, 5, 34, 0, 0, 6046, 6048, 5, 307, 0, 0, 6047, 6046, 1, 0, 0, 0, 6047, 6048, 1, 0, 0, 0, 6048, 6049, 1, 0, 0, 0, 6049, 6051, 5, 409, 0, 0, 6050, 6052, 3, 756, 378, 0, 6051, 6050, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6053, 1, 0, 0, 0, 6053, 6054, 3, 626, 313, 0, 6054, 6055, 5, 580, 0, 0, 6055, 6056, 7, 91, 0, 0, 6056, 6057, 5, 603, 0, 0, 6057, 6058, 5, 882, 0, 0, 6058, 537, 1, 0, 0, 0, 6059, 6060, 5, 432, 0, 0, 6060, 6061, 5, 344, 0, 0, 6061, 6066, 3, 702, 351, 0, 6062, 6063, 5, 868, 0, 0, 6063, 6065, 3, 702, 351, 0, 6064, 6062, 1, 0, 0, 0, 6065, 6068, 1, 0, 0, 0, 6066, 6064, 1, 0, 0, 0, 6066, 6067, 1, 0, 0, 0, 6067, 6078, 1, 0, 0, 0, 6068, 6066, 1, 0, 0, 0, 6069, 6070, 5, 155, 0, 0, 6070, 6075, 3, 540, 270, 0, 6071, 6072, 5, 868, 0, 0, 6072, 6074, 3, 540, 270, 0, 6073, 6071, 1, 0, 0, 0, 6074, 6077, 1, 0, 0, 0, 6075, 6073, 1, 0, 0, 0, 6075, 6076, 1, 0, 0, 0, 6076, 6079, 1, 0, 0, 0, 6077, 6075, 1, 0, 0, 0, 6078, 6069, 1, 0, 0, 0, 6078, 6079, 1, 0, 0, 0, 6079, 539, 1, 0, 0, 0, 6080, 6081, 7, 92, 0, 0, 6081, 6082, 3, 698, 349, 0, 6082, 6083, 5, 857, 0, 0, 6083, 6084, 3, 800, 400, 0, 6084, 541, 1, 0, 0, 0, 6085, 6086, 5, 673, 0, 0, 6086, 6087, 5, 344, 0, 0, 6087, 6092, 3, 702, 351, 0, 6088, 6089, 5, 868, 0, 0, 6089, 6091, 3, 702, 351, 0, 6090, 6088, 1, 0, 0, 0, 6091, 6094, 1, 0, 0, 0, 6092, 6090, 1, 0, 0, 0, 6092, 6093, 1, 0, 0, 0, 6093, 543, 1, 0, 0, 0, 6094, 6092, 1, 0, 0, 0, 6095, 6096, 5, 432, 0, 0, 6096, 6097, 5, 534, 0, 0, 6097, 6098, 3, 702, 351, 0, 6098, 6099, 5, 603, 0, 0, 6099, 6100, 5, 882, 0, 0, 6100, 545, 1, 0, 0, 0, 6101, 6102, 5, 673, 0, 0, 6102, 6103, 5, 534, 0, 0, 6103, 6104, 3, 702, 351, 0, 6104, 547, 1, 0, 0, 0, 6105, 6106, 5, 713, 0, 0, 6106, 6107, 5, 450, 0, 0, 6107, 6108, 5, 360, 0, 0, 6108, 6110, 5, 367, 0, 0, 6109, 6111, 5, 857, 0, 0, 6110, 6109, 1, 0, 0, 0, 6110, 6111, 1, 0, 0, 0, 6111, 6112, 1, 0, 0, 0, 6112, 6136, 5, 882, 0, 0, 6113, 6114, 5, 713, 0, 0, 6114, 6115, 5, 433, 0, 0, 6115, 6116, 5, 68, 0, 0, 6116, 6117, 3, 672, 336, 0, 6117, 6118, 5, 423, 0, 0, 6118, 6119, 5, 20, 0, 0, 6119, 6126, 5, 882, 0, 0, 6120, 6121, 5, 360, 0, 0, 6121, 6123, 5, 367, 0, 0, 6122, 6124, 5, 857, 0, 0, 6123, 6122, 1, 0, 0, 0, 6123, 6124, 1, 0, 0, 0, 6124, 6125, 1, 0, 0, 0, 6125, 6127, 5, 882, 0, 0, 6126, 6120, 1, 0, 0, 0, 6126, 6127, 1, 0, 0, 0, 6127, 6133, 1, 0, 0, 0, 6128, 6130, 5, 144, 0, 0, 6129, 6131, 5, 502, 0, 0, 6130, 6129, 1, 0, 0, 0, 6130, 6131, 1, 0, 0, 0, 6131, 6132, 1, 0, 0, 0, 6132, 6134, 5, 169, 0, 0, 6133, 6128, 1, 0, 0, 0, 6133, 6134, 1, 0, 0, 0, 6134, 6136, 1, 0, 0, 0, 6135, 6105, 1, 0, 0, 0, 6135, 6113, 1, 0, 0, 0, 6136, 549, 1, 0, 0, 0, 6137, 6138, 5, 155, 0, 0, 6138, 6139, 3, 554, 277, 0, 6139, 6142, 7, 93, 0, 0, 6140, 6143, 3, 800, 400, 0, 6141, 6143, 5, 119, 0, 0, 6142, 6140, 1, 0, 0, 0, 6142, 6141, 1, 0, 0, 0, 6143, 6153, 1, 0, 0, 0, 6144, 6145, 5, 868, 0, 0, 6145, 6146, 3, 554, 277, 0, 6146, 6149, 7, 93, 0, 0, 6147, 6150, 3, 800, 400, 0, 6148, 6150, 5, 119, 0, 0, 6149, 6147, 1, 0, 0, 0, 6149, 6148, 1, 0, 0, 0, 6150, 6152, 1, 0, 0, 0, 6151, 6144, 1, 0, 0, 0, 6152, 6155, 1, 0, 0, 0, 6153, 6151, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6190, 1, 0, 0, 0, 6155, 6153, 1, 0, 0, 0, 6156, 6157, 5, 155, 0, 0, 6157, 6160, 3, 54, 27, 0, 6158, 6161, 3, 684, 342, 0, 6159, 6161, 5, 42, 0, 0, 6160, 6158, 1, 0, 0, 0, 6160, 6159, 1, 0, 0, 0, 6161, 6190, 1, 0, 0, 0, 6162, 6163, 5, 155, 0, 0, 6163, 6170, 5, 497, 0, 0, 6164, 6167, 3, 684, 342, 0, 6165, 6166, 5, 28, 0, 0, 6166, 6168, 3, 686, 343, 0, 6167, 6165, 1, 0, 0, 0, 6167, 6168, 1, 0, 0, 0, 6168, 6171, 1, 0, 0, 0, 6169, 6171, 5, 42, 0, 0, 6170, 6164, 1, 0, 0, 0, 6170, 6169, 1, 0, 0, 0, 6171, 6190, 1, 0, 0, 0, 6172, 6190, 3, 484, 242, 0, 6173, 6190, 3, 336, 168, 0, 6174, 6190, 3, 334, 167, 0, 6175, 6176, 5, 155, 0, 0, 6176, 6177, 3, 698, 349, 0, 6177, 6178, 7, 93, 0, 0, 6178, 6186, 3, 800, 400, 0, 6179, 6180, 5, 868, 0, 0, 6180, 6181, 3, 698, 349, 0, 6181, 6182, 7, 93, 0, 0, 6182, 6183, 3, 800, 400, 0, 6183, 6185, 1, 0, 0, 0, 6184, 6179, 1, 0, 0, 0, 6185, 6188, 1, 0, 0, 0, 6186, 6184, 1, 0, 0, 0, 6186, 6187, 1, 0, 0, 0, 6187, 6190, 1, 0, 0, 0, 6188, 6186, 1, 0, 0, 0, 6189, 6137, 1, 0, 0, 0, 6189, 6156, 1, 0, 0, 0, 6189, 6162, 1, 0, 0, 0, 6189, 6172, 1, 0, 0, 0, 6189, 6173, 1, 0, 0, 0, 6189, 6174, 1, 0, 0, 0, 6189, 6175, 1, 0, 0, 0, 6190, 551, 1, 0, 0, 0, 6191, 6192, 5, 157, 0, 0, 6192, 6193, 7, 62, 0, 0, 6193, 6376, 5, 452, 0, 0, 6194, 6195, 5, 157, 0, 0, 6195, 6196, 7, 94, 0, 0, 6196, 6199, 5, 386, 0, 0, 6197, 6198, 5, 80, 0, 0, 6198, 6200, 5, 882, 0, 0, 6199, 6197, 1, 0, 0, 0, 6199, 6200, 1, 0, 0, 0, 6200, 6203, 1, 0, 0, 0, 6201, 6202, 5, 68, 0, 0, 6202, 6204, 3, 708, 354, 0, 6203, 6201, 1, 0, 0, 0, 6203, 6204, 1, 0, 0, 0, 6204, 6212, 1, 0, 0, 0, 6205, 6209, 5, 100, 0, 0, 6206, 6207, 3, 708, 354, 0, 6207, 6208, 5, 868, 0, 0, 6208, 6210, 1, 0, 0, 0, 6209, 6206, 1, 0, 0, 0, 6209, 6210, 1, 0, 0, 0, 6210, 6211, 1, 0, 0, 0, 6211, 6213, 3, 708, 354, 0, 6212, 6205, 1, 0, 0, 0, 6212, 6213, 1, 0, 0, 0, 6213, 6215, 1, 0, 0, 0, 6214, 6216, 3, 384, 192, 0, 6215, 6214, 1, 0, 0, 0, 6215, 6216, 1, 0, 0, 0, 6216, 6376, 1, 0, 0, 0, 6217, 6218, 5, 157, 0, 0, 6218, 6220, 3, 556, 278, 0, 6219, 6221, 3, 558, 279, 0, 6220, 6219, 1, 0, 0, 0, 6220, 6221, 1, 0, 0, 0, 6221, 6376, 1, 0, 0, 0, 6222, 6224, 5, 157, 0, 0, 6223, 6225, 5, 392, 0, 0, 6224, 6223, 1, 0, 0, 0, 6224, 6225, 1, 0, 0, 0, 6225, 6227, 1, 0, 0, 0, 6226, 6228, 5, 408, 0, 0, 6227, 6226, 1, 0, 0, 0, 6227, 6228, 1, 0, 0, 0, 6228, 6229, 1, 0, 0, 0, 6229, 6230, 7, 46, 0, 0, 6230, 6231, 7, 95, 0, 0, 6231, 6234, 3, 648, 324, 0, 6232, 6233, 7, 95, 0, 0, 6233, 6235, 3, 624, 312, 0, 6234, 6232, 1, 0, 0, 0, 6234, 6235, 1, 0, 0, 0, 6235, 6237, 1, 0, 0, 0, 6236, 6238, 3, 558, 279, 0, 6237, 6236, 1, 0, 0, 0, 6237, 6238, 1, 0, 0, 0, 6238, 6376, 1, 0, 0, 0, 6239, 6240, 5, 157, 0, 0, 6240, 6241, 5, 34, 0, 0, 6241, 6243, 7, 0, 0, 0, 6242, 6244, 3, 756, 378, 0, 6243, 6242, 1, 0, 0, 0, 6243, 6244, 1, 0, 0, 0, 6244, 6245, 1, 0, 0, 0, 6245, 6376, 3, 624, 312, 0, 6246, 6247, 5, 157, 0, 0, 6247, 6248, 5, 34, 0, 0, 6248, 6249, 7, 96, 0, 0, 6249, 6376, 3, 698, 349, 0, 6250, 6251, 5, 157, 0, 0, 6251, 6252, 5, 34, 0, 0, 6252, 6253, 5, 409, 0, 0, 6253, 6376, 3, 628, 314, 0, 6254, 6255, 5, 157, 0, 0, 6255, 6256, 5, 34, 0, 0, 6256, 6257, 5, 684, 0, 0, 6257, 6376, 3, 632, 316, 0, 6258, 6259, 5, 157, 0, 0, 6259, 6260, 5, 34, 0, 0, 6260, 6261, 5, 173, 0, 0, 6261, 6376, 3, 648, 324, 0, 6262, 6263, 5, 157, 0, 0, 6263, 6264, 5, 34, 0, 0, 6264, 6265, 5, 678, 0, 0, 6265, 6376, 3, 680, 340, 0, 6266, 6267, 5, 157, 0, 0, 6267, 6268, 5, 380, 0, 0, 6268, 6269, 3, 688, 344, 0, 6269, 6270, 7, 97, 0, 0, 6270, 6376, 1, 0, 0, 0, 6271, 6272, 5, 157, 0, 0, 6272, 6376, 3, 560, 280, 0, 6273, 6274, 5, 157, 0, 0, 6274, 6282, 7, 98, 0, 0, 6275, 6279, 5, 100, 0, 0, 6276, 6277, 3, 708, 354, 0, 6277, 6278, 5, 868, 0, 0, 6278, 6280, 1, 0, 0, 0, 6279, 6276, 1, 0, 0, 0, 6279, 6280, 1, 0, 0, 0, 6280, 6281, 1, 0, 0, 0, 6281, 6283, 3, 708, 354, 0, 6282, 6275, 1, 0, 0, 0, 6282, 6283, 1, 0, 0, 0, 6283, 6376, 1, 0, 0, 0, 6284, 6285, 5, 157, 0, 0, 6285, 6286, 5, 262, 0, 0, 6286, 6287, 5, 866, 0, 0, 6287, 6288, 5, 850, 0, 0, 6288, 6289, 5, 867, 0, 0, 6289, 6376, 7, 98, 0, 0, 6290, 6291, 5, 157, 0, 0, 6291, 6294, 3, 562, 281, 0, 6292, 6293, 7, 95, 0, 0, 6293, 6295, 3, 624, 312, 0, 6294, 6292, 1, 0, 0, 0, 6294, 6295, 1, 0, 0, 0, 6295, 6297, 1, 0, 0, 0, 6296, 6298, 3, 558, 279, 0, 6297, 6296, 1, 0, 0, 0, 6297, 6298, 1, 0, 0, 0, 6298, 6376, 1, 0, 0, 0, 6299, 6300, 5, 157, 0, 0, 6300, 6301, 5, 132, 0, 0, 6301, 6302, 5, 336, 0, 0, 6302, 6376, 3, 698, 349, 0, 6303, 6304, 5, 157, 0, 0, 6304, 6305, 5, 409, 0, 0, 6305, 6306, 5, 336, 0, 0, 6306, 6376, 3, 628, 314, 0, 6307, 6308, 5, 157, 0, 0, 6308, 6315, 5, 414, 0, 0, 6309, 6310, 5, 65, 0, 0, 6310, 6313, 3, 652, 326, 0, 6311, 6312, 5, 188, 0, 0, 6312, 6314, 3, 650, 325, 0, 6313, 6311, 1, 0, 0, 0, 6313, 6314, 1, 0, 0, 0, 6314, 6316, 1, 0, 0, 0, 6315, 6309, 1, 0, 0, 0, 6315, 6316, 1, 0, 0, 0, 6316, 6376, 1, 0, 0, 0, 6317, 6319, 5, 157, 0, 0, 6318, 6320, 5, 392, 0, 0, 6319, 6318, 1, 0, 0, 0, 6319, 6320, 1, 0, 0, 0, 6320, 6321, 1, 0, 0, 0, 6321, 6322, 7, 99, 0, 0, 6322, 6323, 7, 95, 0, 0, 6323, 6326, 3, 648, 324, 0, 6324, 6325, 7, 95, 0, 0, 6325, 6327, 3, 624, 312, 0, 6326, 6324, 1, 0, 0, 0, 6326, 6327, 1, 0, 0, 0, 6327, 6330, 1, 0, 0, 0, 6328, 6329, 5, 192, 0, 0, 6329, 6331, 3, 800, 400, 0, 6330, 6328, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6376, 1, 0, 0, 0, 6332, 6333, 5, 157, 0, 0, 6333, 6334, 5, 516, 0, 0, 6334, 6337, 5, 752, 0, 0, 6335, 6336, 7, 95, 0, 0, 6336, 6338, 3, 624, 312, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6338, 1, 0, 0, 0, 6338, 6340, 1, 0, 0, 0, 6339, 6341, 3, 558, 279, 0, 6340, 6339, 1, 0, 0, 0, 6340, 6341, 1, 0, 0, 0, 6341, 6376, 1, 0, 0, 0, 6342, 6343, 5, 157, 0, 0, 6343, 6352, 5, 545, 0, 0, 6344, 6349, 3, 564, 282, 0, 6345, 6346, 5, 868, 0, 0, 6346, 6348, 3, 564, 282, 0, 6347, 6345, 1, 0, 0, 0, 6348, 6351, 1, 0, 0, 0, 6349, 6347, 1, 0, 0, 0, 6349, 6350, 1, 0, 0, 0, 6350, 6353, 1, 0, 0, 0, 6351, 6349, 1, 0, 0, 0, 6352, 6344, 1, 0, 0, 0, 6352, 6353, 1, 0, 0, 0, 6353, 6357, 1, 0, 0, 0, 6354, 6355, 5, 65, 0, 0, 6355, 6356, 5, 548, 0, 0, 6356, 6358, 3, 708, 354, 0, 6357, 6354, 1, 0, 0, 0, 6357, 6358, 1, 0, 0, 0, 6358, 6365, 1, 0, 0, 0, 6359, 6360, 5, 100, 0, 0, 6360, 6363, 3, 708, 354, 0, 6361, 6362, 5, 509, 0, 0, 6362, 6364, 3, 708, 354, 0, 6363, 6361, 1, 0, 0, 0, 6363, 6364, 1, 0, 0, 0, 6364, 6366, 1, 0, 0, 0, 6365, 6359, 1, 0, 0, 0, 6365, 6366, 1, 0, 0, 0, 6366, 6376, 1, 0, 0, 0, 6367, 6368, 5, 157, 0, 0, 6368, 6369, 7, 63, 0, 0, 6369, 6371, 5, 645, 0, 0, 6370, 6372, 3, 384, 192, 0, 6371, 6370, 1, 0, 0, 0, 6371, 6372, 1, 0, 0, 0, 6372, 6376, 1, 0, 0, 0, 6373, 6374, 5, 157, 0, 0, 6374, 6376, 5, 564, 0, 0, 6375, 6191, 1, 0, 0, 0, 6375, 6194, 1, 0, 0, 0, 6375, 6217, 1, 0, 0, 0, 6375, 6222, 1, 0, 0, 0, 6375, 6239, 1, 0, 0, 0, 6375, 6246, 1, 0, 0, 0, 6375, 6250, 1, 0, 0, 0, 6375, 6254, 1, 0, 0, 0, 6375, 6258, 1, 0, 0, 0, 6375, 6262, 1, 0, 0, 0, 6375, 6266, 1, 0, 0, 0, 6375, 6271, 1, 0, 0, 0, 6375, 6273, 1, 0, 0, 0, 6375, 6284, 1, 0, 0, 0, 6375, 6290, 1, 0, 0, 0, 6375, 6299, 1, 0, 0, 0, 6375, 6303, 1, 0, 0, 0, 6375, 6307, 1, 0, 0, 0, 6375, 6317, 1, 0, 0, 0, 6375, 6332, 1, 0, 0, 0, 6375, 6342, 1, 0, 0, 0, 6375, 6367, 1, 0, 0, 0, 6375, 6373, 1, 0, 0, 0, 6376, 553, 1, 0, 0, 0, 6377, 6388, 5, 892, 0, 0, 6378, 6388, 5, 893, 0, 0, 6379, 6380, 5, 870, 0, 0, 6380, 6382, 5, 870, 0, 0, 6381, 6379, 1, 0, 0, 0, 6381, 6382, 1, 0, 0, 0, 6382, 6383, 1, 0, 0, 0, 6383, 6385, 7, 100, 0, 0, 6384, 6381, 1, 0, 0, 0, 6384, 6385, 1, 0, 0, 0, 6385, 6386, 1, 0, 0, 0, 6386, 6388, 3, 702, 351, 0, 6387, 6377, 1, 0, 0, 0, 6387, 6378, 1, 0, 0, 0, 6387, 6384, 1, 0, 0, 0, 6388, 555, 1, 0, 0, 0, 6389, 6390, 5, 26, 0, 0, 6390, 6404, 5, 155, 0, 0, 6391, 6404, 5, 823, 0, 0, 6392, 6404, 5, 824, 0, 0, 6393, 6404, 5, 40, 0, 0, 6394, 6404, 5, 153, 0, 0, 6395, 6396, 5, 409, 0, 0, 6396, 6404, 5, 645, 0, 0, 6397, 6398, 5, 132, 0, 0, 6398, 6404, 5, 645, 0, 0, 6399, 6401, 7, 61, 0, 0, 6400, 6399, 1, 0, 0, 0, 6400, 6401, 1, 0, 0, 0, 6401, 6402, 1, 0, 0, 0, 6402, 6404, 7, 101, 0, 0, 6403, 6389, 1, 0, 0, 0, 6403, 6391, 1, 0, 0, 0, 6403, 6392, 1, 0, 0, 0, 6403, 6393, 1, 0, 0, 0, 6403, 6394, 1, 0, 0, 0, 6403, 6395, 1, 0, 0, 0, 6403, 6397, 1, 0, 0, 0, 6403, 6400, 1, 0, 0, 0, 6404, 557, 1, 0, 0, 0, 6405, 6406, 5, 99, 0, 0, 6406, 6410, 5, 882, 0, 0, 6407, 6408, 5, 192, 0, 0, 6408, 6410, 3, 800, 400, 0, 6409, 6405, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6410, 559, 1, 0, 0, 0, 6411, 6413, 5, 647, 0, 0, 6412, 6411, 1, 0, 0, 0, 6412, 6413, 1, 0, 0, 0, 6413, 6414, 1, 0, 0, 0, 6414, 6429, 5, 381, 0, 0, 6415, 6416, 5, 453, 0, 0, 6416, 6429, 5, 645, 0, 0, 6417, 6429, 5, 536, 0, 0, 6418, 6429, 5, 734, 0, 0, 6419, 6421, 5, 408, 0, 0, 6420, 6419, 1, 0, 0, 0, 6420, 6421, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 6429, 5, 544, 0, 0, 6423, 6429, 5, 546, 0, 0, 6424, 6425, 5, 598, 0, 0, 6425, 6429, 5, 422, 0, 0, 6426, 6429, 5, 312, 0, 0, 6427, 6429, 5, 356, 0, 0, 6428, 6412, 1, 0, 0, 0, 6428, 6415, 1, 0, 0, 0, 6428, 6417, 1, 0, 0, 0, 6428, 6418, 1, 0, 0, 0, 6428, 6420, 1, 0, 0, 0, 6428, 6423, 1, 0, 0, 0, 6428, 6424, 1, 0, 0, 0, 6428, 6426, 1, 0, 0, 0, 6428, 6427, 1, 0, 0, 0, 6429, 561, 1, 0, 0, 0, 6430, 6442, 5, 386, 0, 0, 6431, 6432, 5, 173, 0, 0, 6432, 6442, 5, 645, 0, 0, 6433, 6435, 5, 392, 0, 0, 6434, 6433, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6437, 1, 0, 0, 0, 6436, 6438, 5, 408, 0, 0, 6437, 6436, 1, 0, 0, 0, 6437, 6438, 1, 0, 0, 0, 6438, 6439, 1, 0, 0, 0, 6439, 6442, 5, 752, 0, 0, 6440, 6442, 5, 667, 0, 0, 6441, 6430, 1, 0, 0, 0, 6441, 6431, 1, 0, 0, 0, 6441, 6434, 1, 0, 0, 0, 6441, 6440, 1, 0, 0, 0, 6442, 563, 1, 0, 0, 0, 6443, 6456, 5, 7, 0, 0, 6444, 6445, 5, 320, 0, 0, 6445, 6456, 5, 437, 0, 0, 6446, 6447, 5, 355, 0, 0, 6447, 6456, 5, 656, 0, 0, 6448, 6456, 5, 358, 0, 0, 6449, 6456, 5, 439, 0, 0, 6450, 6456, 5, 802, 0, 0, 6451, 6452, 5, 521, 0, 0, 6452, 6456, 5, 397, 0, 0, 6453, 6456, 5, 605, 0, 0, 6454, 6456, 5, 655, 0, 0, 6455, 6443, 1, 0, 0, 0, 6455, 6444, 1, 0, 0, 0, 6455, 6446, 1, 0, 0, 0, 6455, 6448, 1, 0, 0, 0, 6455, 6449, 1, 0, 0, 0, 6455, 6450, 1, 0, 0, 0, 6455, 6451, 1, 0, 0, 0, 6455, 6453, 1, 0, 0, 0, 6455, 6454, 1, 0, 0, 0, 6456, 565, 1, 0, 0, 0, 6457, 6458, 5, 318, 0, 0, 6458, 6459, 5, 882, 0, 0, 6459, 567, 1, 0, 0, 0, 6460, 6461, 5, 324, 0, 0, 6461, 6479, 5, 82, 0, 0, 6462, 6467, 3, 588, 294, 0, 6463, 6464, 5, 868, 0, 0, 6464, 6466, 3, 588, 294, 0, 6465, 6463, 1, 0, 0, 0, 6466, 6469, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 6480, 1, 0, 0, 0, 6469, 6467, 1, 0, 0, 0, 6470, 6471, 3, 648, 324, 0, 6471, 6472, 5, 130, 0, 0, 6472, 6475, 5, 866, 0, 0, 6473, 6476, 3, 666, 333, 0, 6474, 6476, 5, 7, 0, 0, 6475, 6473, 1, 0, 0, 0, 6475, 6474, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6478, 5, 867, 0, 0, 6478, 6480, 1, 0, 0, 0, 6479, 6462, 1, 0, 0, 0, 6479, 6470, 1, 0, 0, 0, 6480, 6481, 1, 0, 0, 0, 6481, 6482, 5, 80, 0, 0, 6482, 6483, 3, 624, 312, 0, 6483, 569, 1, 0, 0, 0, 6484, 6486, 5, 404, 0, 0, 6485, 6487, 3, 532, 266, 0, 6486, 6485, 1, 0, 0, 0, 6486, 6487, 1, 0, 0, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6493, 3, 590, 295, 0, 6489, 6490, 5, 868, 0, 0, 6490, 6492, 3, 590, 295, 0, 6491, 6489, 1, 0, 0, 0, 6492, 6495, 1, 0, 0, 0, 6493, 6491, 1, 0, 0, 0, 6493, 6494, 1, 0, 0, 0, 6494, 571, 1, 0, 0, 0, 6495, 6493, 1, 0, 0, 0, 6496, 6498, 5, 94, 0, 0, 6497, 6499, 7, 102, 0, 0, 6498, 6497, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 6501, 3, 800, 400, 0, 6501, 573, 1, 0, 0, 0, 6502, 6503, 5, 103, 0, 0, 6503, 6504, 5, 82, 0, 0, 6504, 6505, 5, 88, 0, 0, 6505, 6506, 5, 324, 0, 0, 6506, 6511, 3, 594, 297, 0, 6507, 6508, 5, 868, 0, 0, 6508, 6510, 3, 594, 297, 0, 6509, 6507, 1, 0, 0, 0, 6510, 6513, 1, 0, 0, 0, 6511, 6509, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 575, 1, 0, 0, 0, 6513, 6511, 1, 0, 0, 0, 6514, 6515, 5, 575, 0, 0, 6515, 6520, 3, 578, 289, 0, 6516, 6517, 5, 868, 0, 0, 6517, 6519, 3, 578, 289, 0, 6518, 6516, 1, 0, 0, 0, 6519, 6522, 1, 0, 0, 0, 6520, 6518, 1, 0, 0, 0, 6520, 6521, 1, 0, 0, 0, 6521, 577, 1, 0, 0, 0, 6522, 6520, 1, 0, 0, 0, 6523, 6529, 5, 453, 0, 0, 6524, 6529, 5, 563, 0, 0, 6525, 6526, 5, 548, 0, 0, 6526, 6529, 5, 324, 0, 0, 6527, 6529, 5, 598, 0, 0, 6528, 6523, 1, 0, 0, 0, 6528, 6524, 1, 0, 0, 0, 6528, 6525, 1, 0, 0, 0, 6528, 6527, 1, 0, 0, 0, 6529, 579, 1, 0, 0, 0, 6530, 6531, 5, 575, 0, 0, 6531, 6536, 5, 531, 0, 0, 6532, 6534, 3, 754, 377, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 6537, 3, 702, 351, 0, 6536, 6533, 1, 0, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 581, 1, 0, 0, 0, 6538, 6539, 5, 575, 0, 0, 6539, 6541, 7, 63, 0, 0, 6540, 6542, 5, 7, 0, 0, 6541, 6540, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 6544, 1, 0, 0, 0, 6543, 6545, 3, 384, 192, 0, 6544, 6543, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 583, 1, 0, 0, 0, 6546, 6547, 5, 576, 0, 0, 6547, 585, 1, 0, 0, 0, 6548, 6549, 5, 749, 0, 0, 6549, 587, 1, 0, 0, 0, 6550, 6556, 3, 648, 324, 0, 6551, 6552, 7, 18, 0, 0, 6552, 6553, 5, 866, 0, 0, 6553, 6554, 3, 636, 318, 0, 6554, 6555, 5, 867, 0, 0, 6555, 6557, 1, 0, 0, 0, 6556, 6551, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 589, 1, 0, 0, 0, 6558, 6577, 5, 366, 0, 0, 6559, 6577, 5, 422, 0, 0, 6560, 6562, 7, 103, 0, 0, 6561, 6560, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6577, 5, 452, 0, 0, 6564, 6577, 5, 517, 0, 0, 6565, 6577, 5, 734, 0, 0, 6566, 6567, 5, 548, 0, 0, 6567, 6577, 5, 324, 0, 0, 6568, 6577, 5, 645, 0, 0, 6569, 6577, 5, 680, 0, 0, 6570, 6574, 5, 752, 0, 0, 6571, 6572, 5, 194, 0, 0, 6572, 6573, 5, 135, 0, 0, 6573, 6575, 5, 104, 0, 0, 6574, 6571, 1, 0, 0, 0, 6574, 6575, 1, 0, 0, 0, 6575, 6577, 1, 0, 0, 0, 6576, 6558, 1, 0, 0, 0, 6576, 6559, 1, 0, 0, 0, 6576, 6561, 1, 0, 0, 0, 6576, 6564, 1, 0, 0, 0, 6576, 6565, 1, 0, 0, 0, 6576, 6566, 1, 0, 0, 0, 6576, 6568, 1, 0, 0, 0, 6576, 6569, 1, 0, 0, 0, 6576, 6570, 1, 0, 0, 0, 6577, 6591, 1, 0, 0, 0, 6578, 6579, 5, 556, 0, 0, 6579, 6581, 5, 452, 0, 0, 6580, 6582, 3, 384, 192, 0, 6581, 6580, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6591, 1, 0, 0, 0, 6583, 6585, 7, 60, 0, 0, 6584, 6586, 3, 646, 323, 0, 6585, 6584, 1, 0, 0, 0, 6585, 6586, 1, 0, 0, 0, 6586, 6588, 1, 0, 0, 0, 6587, 6589, 3, 592, 296, 0, 6588, 6587, 1, 0, 0, 0, 6588, 6589, 1, 0, 0, 0, 6589, 6591, 1, 0, 0, 0, 6590, 6576, 1, 0, 0, 0, 6590, 6578, 1, 0, 0, 0, 6590, 6583, 1, 0, 0, 0, 6591, 591, 1, 0, 0, 0, 6592, 6593, 5, 194, 0, 0, 6593, 6594, 5, 135, 0, 0, 6594, 6598, 5, 104, 0, 0, 6595, 6596, 5, 65, 0, 0, 6596, 6598, 5, 391, 0, 0, 6597, 6592, 1, 0, 0, 0, 6597, 6595, 1, 0, 0, 0, 6598, 593, 1, 0, 0, 0, 6599, 6607, 3, 648, 324, 0, 6600, 6601, 5, 130, 0, 0, 6601, 6604, 5, 866, 0, 0, 6602, 6605, 3, 666, 333, 0, 6603, 6605, 5, 7, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6603, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6608, 5, 867, 0, 0, 6607, 6600, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6616, 1, 0, 0, 0, 6609, 6611, 7, 18, 0, 0, 6610, 6609, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6613, 5, 866, 0, 0, 6613, 6614, 3, 636, 318, 0, 6614, 6615, 5, 867, 0, 0, 6615, 6617, 1, 0, 0, 0, 6616, 6610, 1, 0, 0, 0, 6616, 6617, 1, 0, 0, 0, 6617, 6620, 1, 0, 0, 0, 6618, 6619, 5, 79, 0, 0, 6619, 6621, 5, 446, 0, 0, 6620, 6618, 1, 0, 0, 0, 6620, 6621, 1, 0, 0, 0, 6621, 595, 1, 0, 0, 0, 6622, 6623, 7, 104, 0, 0, 6623, 6626, 3, 648, 324, 0, 6624, 6627, 3, 658, 329, 0, 6625, 6627, 5, 882, 0, 0, 6626, 6624, 1, 0, 0, 0, 6626, 6625, 1, 0, 0, 0, 6626, 6627, 1, 0, 0, 0, 6627, 597, 1, 0, 0, 0, 6628, 6634, 7, 104, 0, 0, 6629, 6635, 5, 392, 0, 0, 6630, 6635, 5, 528, 0, 0, 6631, 6632, 5, 826, 0, 0, 6632, 6633, 5, 857, 0, 0, 6633, 6635, 7, 105, 0, 0, 6634, 6629, 1, 0, 0, 0, 6634, 6630, 1, 0, 0, 0, 6634, 6631, 1, 0, 0, 0, 6634, 6635, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6637, 3, 620, 310, 0, 6637, 599, 1, 0, 0, 0, 6638, 6639, 7, 104, 0, 0, 6639, 6643, 5, 10, 0, 0, 6640, 6641, 5, 826, 0, 0, 6641, 6642, 5, 857, 0, 0, 6642, 6644, 5, 666, 0, 0, 6643, 6640, 1, 0, 0, 0, 6643, 6644, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6646, 3, 204, 102, 0, 6646, 601, 1, 0, 0, 0, 6647, 6648, 5, 419, 0, 0, 6648, 6649, 5, 882, 0, 0, 6649, 603, 1, 0, 0, 0, 6650, 6651, 5, 187, 0, 0, 6651, 6652, 3, 624, 312, 0, 6652, 605, 1, 0, 0, 0, 6653, 6661, 5, 158, 0, 0, 6654, 6656, 5, 164, 0, 0, 6655, 6657, 5, 682, 0, 0, 6656, 6655, 1, 0, 0, 0, 6656, 6657, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6662, 3, 712, 356, 0, 6659, 6662, 5, 889, 0, 0, 6660, 6662, 5, 890, 0, 0, 6661, 6654, 1, 0, 0, 0, 6661, 6659, 1, 0, 0, 0, 6661, 6660, 1, 0, 0, 0, 6662, 6672, 1, 0, 0, 0, 6663, 6664, 5, 155, 0, 0, 6664, 6669, 3, 610, 305, 0, 6665, 6666, 5, 868, 0, 0, 6666, 6668, 3, 610, 305, 0, 6667, 6665, 1, 0, 0, 0, 6668, 6671, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6669, 6670, 1, 0, 0, 0, 6670, 6673, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6672, 6663, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 607, 1, 0, 0, 0, 6674, 6682, 5, 145, 0, 0, 6675, 6677, 5, 164, 0, 0, 6676, 6678, 5, 682, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6683, 3, 712, 356, 0, 6680, 6683, 5, 889, 0, 0, 6681, 6683, 5, 890, 0, 0, 6682, 6675, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6681, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6693, 1, 0, 0, 0, 6684, 6685, 5, 155, 0, 0, 6685, 6690, 3, 610, 305, 0, 6686, 6687, 5, 868, 0, 0, 6687, 6689, 3, 610, 305, 0, 6688, 6686, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6694, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6684, 1, 0, 0, 0, 6693, 6694, 1, 0, 0, 0, 6694, 609, 1, 0, 0, 0, 6695, 6696, 7, 106, 0, 0, 6696, 6701, 5, 857, 0, 0, 6697, 6702, 3, 712, 356, 0, 6698, 6702, 5, 883, 0, 0, 6699, 6702, 3, 682, 341, 0, 6700, 6702, 3, 704, 352, 0, 6701, 6697, 1, 0, 0, 0, 6701, 6698, 1, 0, 0, 0, 6701, 6699, 1, 0, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 611, 1, 0, 0, 0, 6703, 6705, 5, 194, 0, 0, 6704, 6706, 5, 552, 0, 0, 6705, 6704, 1, 0, 0, 0, 6705, 6706, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 6712, 3, 48, 24, 0, 6708, 6709, 5, 868, 0, 0, 6709, 6711, 3, 48, 24, 0, 6710, 6708, 1, 0, 0, 0, 6711, 6714, 1, 0, 0, 0, 6712, 6710, 1, 0, 0, 0, 6712, 6713, 1, 0, 0, 0, 6713, 613, 1, 0, 0, 0, 6714, 6712, 1, 0, 0, 0, 6715, 6716, 5, 173, 0, 0, 6716, 6718, 3, 648, 324, 0, 6717, 6719, 3, 252, 126, 0, 6718, 6717, 1, 0, 0, 0, 6718, 6719, 1, 0, 0, 0, 6719, 6721, 1, 0, 0, 0, 6720, 6722, 3, 312, 156, 0, 6721, 6720, 1, 0, 0, 0, 6721, 6722, 1, 0, 0, 0, 6722, 615, 1, 0, 0, 0, 6723, 6725, 5, 72, 0, 0, 6724, 6726, 7, 107, 0, 0, 6725, 6724, 1, 0, 0, 0, 6725, 6726, 1, 0, 0, 0, 6726, 6727, 1, 0, 0, 0, 6727, 6759, 5, 48, 0, 0, 6728, 6729, 3, 554, 277, 0, 6729, 6730, 5, 857, 0, 0, 6730, 6738, 7, 108, 0, 0, 6731, 6732, 5, 868, 0, 0, 6732, 6733, 3, 554, 277, 0, 6733, 6734, 5, 857, 0, 0, 6734, 6735, 7, 108, 0, 0, 6735, 6737, 1, 0, 0, 0, 6736, 6731, 1, 0, 0, 0, 6737, 6740, 1, 0, 0, 0, 6738, 6736, 1, 0, 0, 0, 6738, 6739, 1, 0, 0, 0, 6739, 6760, 1, 0, 0, 0, 6740, 6738, 1, 0, 0, 0, 6741, 6744, 5, 30, 0, 0, 6742, 6745, 3, 708, 354, 0, 6743, 6745, 3, 554, 277, 0, 6744, 6742, 1, 0, 0, 0, 6744, 6743, 1, 0, 0, 0, 6745, 6746, 1, 0, 0, 0, 6746, 6747, 3, 554, 277, 0, 6747, 6748, 5, 857, 0, 0, 6748, 6756, 3, 618, 309, 0, 6749, 6750, 5, 868, 0, 0, 6750, 6751, 3, 554, 277, 0, 6751, 6752, 5, 857, 0, 0, 6752, 6753, 3, 618, 309, 0, 6753, 6755, 1, 0, 0, 0, 6754, 6749, 1, 0, 0, 0, 6755, 6758, 1, 0, 0, 0, 6756, 6754, 1, 0, 0, 0, 6756, 6757, 1, 0, 0, 0, 6757, 6760, 1, 0, 0, 0, 6758, 6756, 1, 0, 0, 0, 6759, 6728, 1, 0, 0, 0, 6759, 6741, 1, 0, 0, 0, 6760, 617, 1, 0, 0, 0, 6761, 6762, 7, 109, 0, 0, 6762, 619, 1, 0, 0, 0, 6763, 6769, 3, 204, 102, 0, 6764, 6769, 3, 180, 90, 0, 6765, 6769, 3, 186, 93, 0, 6766, 6769, 3, 202, 101, 0, 6767, 6769, 3, 214, 107, 0, 6768, 6763, 1, 0, 0, 0, 6768, 6764, 1, 0, 0, 0, 6768, 6765, 1, 0, 0, 0, 6768, 6766, 1, 0, 0, 0, 6768, 6767, 1, 0, 0, 0, 6769, 6774, 1, 0, 0, 0, 6770, 6771, 5, 65, 0, 0, 6771, 6772, 5, 349, 0, 0, 6772, 6774, 3, 702, 351, 0, 6773, 6768, 1, 0, 0, 0, 6773, 6770, 1, 0, 0, 0, 6774, 621, 1, 0, 0, 0, 6775, 6776, 3, 698, 349, 0, 6776, 623, 1, 0, 0, 0, 6777, 6778, 3, 698, 349, 0, 6778, 625, 1, 0, 0, 0, 6779, 6780, 3, 698, 349, 0, 6780, 627, 1, 0, 0, 0, 6781, 6782, 3, 698, 349, 0, 6782, 629, 1, 0, 0, 0, 6783, 6784, 3, 698, 349, 0, 6784, 631, 1, 0, 0, 0, 6785, 6786, 3, 698, 349, 0, 6786, 633, 1, 0, 0, 0, 6787, 6788, 3, 702, 351, 0, 6788, 635, 1, 0, 0, 0, 6789, 6794, 3, 638, 319, 0, 6790, 6791, 5, 868, 0, 0, 6791, 6793, 3, 638, 319, 0, 6792, 6790, 1, 0, 0, 0, 6793, 6796, 1, 0, 0, 0, 6794, 6792, 1, 0, 0, 0, 6794, 6795, 1, 0, 0, 0, 6795, 637, 1, 0, 0, 0, 6796, 6794, 1, 0, 0, 0, 6797, 6798, 3, 702, 351, 0, 6798, 639, 1, 0, 0, 0, 6799, 6800, 3, 702, 351, 0, 6800, 641, 1, 0, 0, 0, 6801, 6802, 3, 702, 351, 0, 6802, 643, 1, 0, 0, 0, 6803, 6804, 3, 698, 349, 0, 6804, 645, 1, 0, 0, 0, 6805, 6810, 3, 648, 324, 0, 6806, 6807, 5, 868, 0, 0, 6807, 6809, 3, 648, 324, 0, 6808, 6806, 1, 0, 0, 0, 6809, 6812, 1, 0, 0, 0, 6810, 6808, 1, 0, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 647, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6813, 6814, 3, 698, 349, 0, 6814, 649, 1, 0, 0, 0, 6815, 6820, 3, 652, 326, 0, 6816, 6817, 5, 868, 0, 0, 6817, 6819, 3, 652, 326, 0, 6818, 6816, 1, 0, 0, 0, 6819, 6822, 1, 0, 0, 0, 6820, 6818, 1, 0, 0, 0, 6820, 6821, 1, 0, 0, 0, 6821, 651, 1, 0, 0, 0, 6822, 6820, 1, 0, 0, 0, 6823, 6826, 3, 680, 340, 0, 6824, 6826, 3, 702, 351, 0, 6825, 6823, 1, 0, 0, 0, 6825, 6824, 1, 0, 0, 0, 6826, 653, 1, 0, 0, 0, 6827, 6832, 3, 702, 351, 0, 6828, 6830, 3, 706, 353, 0, 6829, 6831, 3, 706, 353, 0, 6830, 6829, 1, 0, 0, 0, 6830, 6831, 1, 0, 0, 0, 6831, 6833, 1, 0, 0, 0, 6832, 6828, 1, 0, 0, 0, 6832, 6833, 1, 0, 0, 0, 6833, 6842, 1, 0, 0, 0, 6834, 6836, 9, 0, 0, 0, 6835, 6834, 1, 0, 0, 0, 6835, 6836, 1, 0, 0, 0, 6836, 6837, 1, 0, 0, 0, 6837, 6839, 3, 706, 353, 0, 6838, 6840, 3, 706, 353, 0, 6839, 6838, 1, 0, 0, 0, 6839, 6840, 1, 0, 0, 0, 6840, 6842, 1, 0, 0, 0, 6841, 6827, 1, 0, 0, 0, 6841, 6835, 1, 0, 0, 0, 6842, 655, 1, 0, 0, 0, 6843, 6848, 3, 658, 329, 0, 6844, 6845, 5, 868, 0, 0, 6845, 6847, 3, 658, 329, 0, 6846, 6844, 1, 0, 0, 0, 6847, 6850, 1, 0, 0, 0, 6848, 6846, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 657, 1, 0, 0, 0, 6850, 6848, 1, 0, 0, 0, 6851, 6856, 3, 702, 351, 0, 6852, 6854, 3, 706, 353, 0, 6853, 6855, 3, 706, 353, 0, 6854, 6853, 1, 0, 0, 0, 6854, 6855, 1, 0, 0, 0, 6855, 6857, 1, 0, 0, 0, 6856, 6852, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6867, 1, 0, 0, 0, 6858, 6860, 9, 0, 0, 0, 6859, 6858, 1, 0, 0, 0, 6859, 6860, 1, 0, 0, 0, 6860, 6861, 1, 0, 0, 0, 6861, 6863, 3, 706, 353, 0, 6862, 6864, 3, 706, 353, 0, 6863, 6862, 1, 0, 0, 0, 6863, 6864, 1, 0, 0, 0, 6864, 6867, 1, 0, 0, 0, 6865, 6867, 4, 329, 3, 0, 6866, 6851, 1, 0, 0, 0, 6866, 6859, 1, 0, 0, 0, 6866, 6865, 1, 0, 0, 0, 6867, 659, 1, 0, 0, 0, 6868, 6869, 3, 702, 351, 0, 6869, 661, 1, 0, 0, 0, 6870, 6871, 3, 702, 351, 0, 6871, 663, 1, 0, 0, 0, 6872, 6873, 3, 702, 351, 0, 6873, 665, 1, 0, 0, 0, 6874, 6879, 3, 668, 334, 0, 6875, 6876, 5, 868, 0, 0, 6876, 6878, 3, 668, 334, 0, 6877, 6875, 1, 0, 0, 0, 6878, 6881, 1, 0, 0, 0, 6879, 6877, 1, 0, 0, 0, 6879, 6880, 1, 0, 0, 0, 6880, 667, 1, 0, 0, 0, 6881, 6879, 1, 0, 0, 0, 6882, 6883, 3, 702, 351, 0, 6883, 669, 1, 0, 0, 0, 6884, 6889, 3, 702, 351, 0, 6885, 6886, 5, 866, 0, 0, 6886, 6887, 3, 708, 354, 0, 6887, 6888, 5, 867, 0, 0, 6888, 6890, 1, 0, 0, 0, 6889, 6885, 1, 0, 0, 0, 6889, 6890, 1, 0, 0, 0, 6890, 6893, 1, 0, 0, 0, 6891, 6893, 3, 800, 400, 0, 6892, 6884, 1, 0, 0, 0, 6892, 6891, 1, 0, 0, 0, 6893, 6895, 1, 0, 0, 0, 6894, 6896, 7, 54, 0, 0, 6895, 6894, 1, 0, 0, 0, 6895, 6896, 1, 0, 0, 0, 6896, 671, 1, 0, 0, 0, 6897, 6898, 3, 674, 337, 0, 6898, 6899, 5, 878, 0, 0, 6899, 6900, 3, 708, 354, 0, 6900, 673, 1, 0, 0, 0, 6901, 6902, 3, 676, 338, 0, 6902, 6903, 5, 891, 0, 0, 6903, 675, 1, 0, 0, 0, 6904, 6909, 5, 882, 0, 0, 6905, 6909, 5, 889, 0, 0, 6906, 6909, 5, 704, 0, 0, 6907, 6909, 3, 830, 415, 0, 6908, 6904, 1, 0, 0, 0, 6908, 6905, 1, 0, 0, 0, 6908, 6906, 1, 0, 0, 0, 6908, 6907, 1, 0, 0, 0, 6909, 677, 1, 0, 0, 0, 6910, 6911, 7, 110, 0, 0, 6911, 679, 1, 0, 0, 0, 6912, 6914, 3, 676, 338, 0, 6913, 6915, 3, 678, 339, 0, 6914, 6913, 1, 0, 0, 0, 6914, 6915, 1, 0, 0, 0, 6915, 6918, 1, 0, 0, 0, 6916, 6918, 3, 56, 28, 0, 6917, 6912, 1, 0, 0, 0, 6917, 6916, 1, 0, 0, 0, 6918, 681, 1, 0, 0, 0, 6919, 6920, 7, 111, 0, 0, 6920, 683, 1, 0, 0, 0, 6921, 6926, 5, 228, 0, 0, 6922, 6926, 3, 820, 410, 0, 6923, 6926, 5, 882, 0, 0, 6924, 6926, 5, 879, 0, 0, 6925, 6921, 1, 0, 0, 0, 6925, 6922, 1, 0, 0, 0, 6925, 6923, 1, 0, 0, 0, 6925, 6924, 1, 0, 0, 0, 6926, 685, 1, 0, 0, 0, 6927, 6928, 3, 702, 351, 0, 6928, 687, 1, 0, 0, 0, 6929, 6933, 3, 690, 345, 0, 6930, 6933, 5, 889, 0, 0, 6931, 6933, 5, 882, 0, 0, 6932, 6929, 1, 0, 0, 0, 6932, 6930, 1, 0, 0, 0, 6932, 6931, 1, 0, 0, 0, 6933, 689, 1, 0, 0, 0, 6934, 6935, 7, 112, 0, 0, 6935, 691, 1, 0, 0, 0, 6936, 6937, 3, 708, 354, 0, 6937, 6938, 5, 854, 0, 0, 6938, 6939, 3, 708, 354, 0, 6939, 6940, 5, 854, 0, 0, 6940, 6941, 3, 708, 354, 0, 6941, 6942, 5, 854, 0, 0, 6942, 6943, 3, 708, 354, 0, 6943, 6944, 5, 854, 0, 0, 6944, 6950, 3, 708, 354, 0, 6945, 6946, 5, 878, 0, 0, 6946, 6947, 3, 708, 354, 0, 6947, 6948, 5, 854, 0, 0, 6948, 6949, 3, 708, 354, 0, 6949, 6951, 1, 0, 0, 0, 6950, 6945, 1, 0, 0, 0, 6951, 6952, 1, 0, 0, 0, 6952, 6950, 1, 0, 0, 0, 6952, 6953, 1, 0, 0, 0, 6953, 693, 1, 0, 0, 0, 6954, 6961, 3, 696, 348, 0, 6955, 6956, 5, 868, 0, 0, 6956, 6959, 3, 696, 348, 0, 6957, 6958, 5, 868, 0, 0, 6958, 6960, 3, 708, 354, 0, 6959, 6957, 1, 0, 0, 0, 6959, 6960, 1, 0, 0, 0, 6960, 6962, 1, 0, 0, 0, 6961, 6955, 1, 0, 0, 0, 6961, 6962, 1, 0, 0, 0, 6962, 695, 1, 0, 0, 0, 6963, 6971, 5, 882, 0, 0, 6964, 6971, 5, 887, 0, 0, 6965, 6967, 5, 884, 0, 0, 6966, 6965, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 6966, 1, 0, 0, 0, 6968, 6969, 1, 0, 0, 0, 6969, 6971, 1, 0, 0, 0, 6970, 6963, 1, 0, 0, 0, 6970, 6964, 1, 0, 0, 0, 6970, 6966, 1, 0, 0, 0, 6971, 697, 1, 0, 0, 0, 6972, 6974, 3, 702, 351, 0, 6973, 6975, 3, 706, 353, 0, 6974, 6973, 1, 0, 0, 0, 6974, 6975, 1, 0, 0, 0, 6975, 699, 1, 0, 0, 0, 6976, 6981, 3, 702, 351, 0, 6977, 6978, 5, 868, 0, 0, 6978, 6980, 3, 702, 351, 0, 6979, 6977, 1, 0, 0, 0, 6980, 6983, 1, 0, 0, 0, 6981, 6979, 1, 0, 0, 0, 6981, 6982, 1, 0, 0, 0, 6982, 701, 1, 0, 0, 0, 6983, 6981, 1, 0, 0, 0, 6984, 6988, 3, 704, 352, 0, 6985, 6988, 5, 879, 0, 0, 6986, 6988, 5, 882, 0, 0, 6987, 6984, 1, 0, 0, 0, 6987, 6985, 1, 0, 0, 0, 6987, 6986, 1, 0, 0, 0, 6988, 703, 1, 0, 0, 0, 6989, 6999, 5, 889, 0, 0, 6990, 6999, 3, 820, 410, 0, 6991, 6999, 3, 822, 411, 0, 6992, 6999, 3, 690, 345, 0, 6993, 6999, 3, 824, 412, 0, 6994, 6999, 3, 826, 413, 0, 6995, 6999, 3, 828, 414, 0, 6996, 6999, 3, 830, 415, 0, 6997, 6999, 3, 792, 396, 0, 6998, 6989, 1, 0, 0, 0, 6998, 6990, 1, 0, 0, 0, 6998, 6991, 1, 0, 0, 0, 6998, 6992, 1, 0, 0, 0, 6998, 6993, 1, 0, 0, 0, 6998, 6994, 1, 0, 0, 0, 6998, 6995, 1, 0, 0, 0, 6998, 6996, 1, 0, 0, 0, 6998, 6997, 1, 0, 0, 0, 6999, 705, 1, 0, 0, 0, 7000, 7001, 5, 865, 0, 0, 7001, 7005, 5, 889, 0, 0, 7002, 7003, 5, 865, 0, 0, 7003, 7005, 3, 702, 351, 0, 7004, 7000, 1, 0, 0, 0, 7004, 7002, 1, 0, 0, 0, 7005, 707, 1, 0, 0, 0, 7006, 7007, 7, 113, 0, 0, 7007, 709, 1, 0, 0, 0, 7008, 7011, 5, 880, 0, 0, 7009, 7011, 3, 708, 354, 0, 7010, 7008, 1, 0, 0, 0, 7010, 7009, 1, 0, 0, 0, 7011, 711, 1, 0, 0, 0, 7012, 7014, 5, 888, 0, 0, 7013, 7012, 1, 0, 0, 0, 7013, 7014, 1, 0, 0, 0, 7014, 7015, 1, 0, 0, 0, 7015, 7018, 5, 882, 0, 0, 7016, 7018, 5, 881, 0, 0, 7017, 7013, 1, 0, 0, 0, 7017, 7016, 1, 0, 0, 0, 7018, 7020, 1, 0, 0, 0, 7019, 7021, 5, 882, 0, 0, 7020, 7019, 1, 0, 0, 0, 7021, 7022, 1, 0, 0, 0, 7022, 7020, 1, 0, 0, 0, 7022, 7023, 1, 0, 0, 0, 7023, 7036, 1, 0, 0, 0, 7024, 7026, 5, 888, 0, 0, 7025, 7024, 1, 0, 0, 0, 7025, 7026, 1, 0, 0, 0, 7026, 7027, 1, 0, 0, 0, 7027, 7030, 5, 882, 0, 0, 7028, 7030, 5, 881, 0, 0, 7029, 7025, 1, 0, 0, 0, 7029, 7028, 1, 0, 0, 0, 7030, 7033, 1, 0, 0, 0, 7031, 7032, 5, 28, 0, 0, 7032, 7034, 3, 686, 343, 0, 7033, 7031, 1, 0, 0, 0, 7033, 7034, 1, 0, 0, 0, 7034, 7036, 1, 0, 0, 0, 7035, 7017, 1, 0, 0, 0, 7035, 7029, 1, 0, 0, 0, 7036, 713, 1, 0, 0, 0, 7037, 7038, 7, 114, 0, 0, 7038, 715, 1, 0, 0, 0, 7039, 7041, 5, 888, 0, 0, 7040, 7039, 1, 0, 0, 0, 7040, 7041, 1, 0, 0, 0, 7041, 7042, 1, 0, 0, 0, 7042, 7043, 5, 884, 0, 0, 7043, 717, 1, 0, 0, 0, 7044, 7046, 5, 114, 0, 0, 7045, 7044, 1, 0, 0, 0, 7045, 7046, 1, 0, 0, 0, 7046, 7047, 1, 0, 0, 0, 7047, 7048, 7, 115, 0, 0, 7048, 719, 1, 0, 0, 0, 7049, 7062, 3, 712, 356, 0, 7050, 7062, 3, 708, 354, 0, 7051, 7052, 5, 854, 0, 0, 7052, 7062, 3, 708, 354, 0, 7053, 7062, 3, 716, 358, 0, 7054, 7062, 3, 714, 357, 0, 7055, 7062, 5, 885, 0, 0, 7056, 7062, 5, 887, 0, 0, 7057, 7059, 5, 114, 0, 0, 7058, 7057, 1, 0, 0, 0, 7058, 7059, 1, 0, 0, 0, 7059, 7060, 1, 0, 0, 0, 7060, 7062, 7, 115, 0, 0, 7061, 7049, 1, 0, 0, 0, 7061, 7050, 1, 0, 0, 0, 7061, 7051, 1, 0, 0, 0, 7061, 7053, 1, 0, 0, 0, 7061, 7054, 1, 0, 0, 0, 7061, 7055, 1, 0, 0, 0, 7061, 7056, 1, 0, 0, 0, 7061, 7058, 1, 0, 0, 0, 7062, 721, 1, 0, 0, 0, 7063, 7065, 7, 116, 0, 0, 7064, 7066, 5, 240, 0, 0, 7065, 7064, 1, 0, 0, 0, 7065, 7066, 1, 0, 0, 0, 7066, 7068, 1, 0, 0, 0, 7067, 7069, 3, 728, 364, 0, 7068, 7067, 1, 0, 0, 0, 7068, 7069, 1, 0, 0, 0, 7069, 7071, 1, 0, 0, 0, 7070, 7072, 5, 228, 0, 0, 7071, 7070, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7076, 1, 0, 0, 0, 7073, 7074, 3, 54, 27, 0, 7074, 7075, 3, 684, 342, 0, 7075, 7077, 1, 0, 0, 0, 7076, 7073, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7081, 1, 0, 0, 0, 7078, 7079, 5, 28, 0, 0, 7079, 7082, 3, 686, 343, 0, 7080, 7082, 5, 228, 0, 0, 7081, 7078, 1, 0, 0, 0, 7081, 7080, 1, 0, 0, 0, 7081, 7082, 1, 0, 0, 0, 7082, 7190, 1, 0, 0, 0, 7083, 7084, 5, 227, 0, 0, 7084, 7085, 7, 117, 0, 0, 7085, 7087, 5, 240, 0, 0, 7086, 7088, 3, 728, 364, 0, 7087, 7086, 1, 0, 0, 0, 7087, 7088, 1, 0, 0, 0, 7088, 7090, 1, 0, 0, 0, 7089, 7091, 5, 228, 0, 0, 7090, 7089, 1, 0, 0, 0, 7090, 7091, 1, 0, 0, 0, 7091, 7190, 1, 0, 0, 0, 7092, 7093, 5, 227, 0, 0, 7093, 7095, 7, 118, 0, 0, 7094, 7096, 3, 728, 364, 0, 7095, 7094, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7098, 1, 0, 0, 0, 7097, 7099, 5, 228, 0, 0, 7098, 7097, 1, 0, 0, 0, 7098, 7099, 1, 0, 0, 0, 7099, 7190, 1, 0, 0, 0, 7100, 7101, 5, 498, 0, 0, 7101, 7103, 5, 225, 0, 0, 7102, 7104, 3, 728, 364, 0, 7103, 7102, 1, 0, 0, 0, 7103, 7104, 1, 0, 0, 0, 7104, 7106, 1, 0, 0, 0, 7105, 7107, 5, 228, 0, 0, 7106, 7105, 1, 0, 0, 0, 7106, 7107, 1, 0, 0, 0, 7107, 7190, 1, 0, 0, 0, 7108, 7110, 7, 119, 0, 0, 7109, 7111, 3, 728, 364, 0, 7110, 7109, 1, 0, 0, 0, 7110, 7111, 1, 0, 0, 0, 7111, 7115, 1, 0, 0, 0, 7112, 7114, 7, 120, 0, 0, 7113, 7112, 1, 0, 0, 0, 7114, 7117, 1, 0, 0, 0, 7115, 7113, 1, 0, 0, 0, 7115, 7116, 1, 0, 0, 0, 7116, 7190, 1, 0, 0, 0, 7117, 7115, 1, 0, 0, 0, 7118, 7120, 5, 210, 0, 0, 7119, 7121, 3, 730, 365, 0, 7120, 7119, 1, 0, 0, 0, 7120, 7121, 1, 0, 0, 0, 7121, 7125, 1, 0, 0, 0, 7122, 7124, 7, 120, 0, 0, 7123, 7122, 1, 0, 0, 0, 7124, 7127, 1, 0, 0, 0, 7125, 7123, 1, 0, 0, 0, 7125, 7126, 1, 0, 0, 0, 7126, 7190, 1, 0, 0, 0, 7127, 7125, 1, 0, 0, 0, 7128, 7130, 5, 211, 0, 0, 7129, 7131, 5, 212, 0, 0, 7130, 7129, 1, 0, 0, 0, 7130, 7131, 1, 0, 0, 0, 7131, 7133, 1, 0, 0, 0, 7132, 7134, 3, 730, 365, 0, 7133, 7132, 1, 0, 0, 0, 7133, 7134, 1, 0, 0, 0, 7134, 7138, 1, 0, 0, 0, 7135, 7137, 7, 120, 0, 0, 7136, 7135, 1, 0, 0, 0, 7137, 7140, 1, 0, 0, 0, 7138, 7136, 1, 0, 0, 0, 7138, 7139, 1, 0, 0, 0, 7139, 7190, 1, 0, 0, 0, 7140, 7138, 1, 0, 0, 0, 7141, 7143, 7, 121, 0, 0, 7142, 7144, 3, 732, 366, 0, 7143, 7142, 1, 0, 0, 0, 7143, 7144, 1, 0, 0, 0, 7144, 7148, 1, 0, 0, 0, 7145, 7147, 7, 120, 0, 0, 7146, 7145, 1, 0, 0, 0, 7147, 7150, 1, 0, 0, 0, 7148, 7146, 1, 0, 0, 0, 7148, 7149, 1, 0, 0, 0, 7149, 7190, 1, 0, 0, 0, 7150, 7148, 1, 0, 0, 0, 7151, 7190, 7, 122, 0, 0, 7152, 7154, 7, 123, 0, 0, 7153, 7155, 3, 728, 364, 0, 7154, 7153, 1, 0, 0, 0, 7154, 7155, 1, 0, 0, 0, 7155, 7190, 1, 0, 0, 0, 7156, 7157, 7, 124, 0, 0, 7157, 7159, 3, 724, 362, 0, 7158, 7160, 5, 228, 0, 0, 7159, 7158, 1, 0, 0, 0, 7159, 7160, 1, 0, 0, 0, 7160, 7164, 1, 0, 0, 0, 7161, 7162, 3, 54, 27, 0, 7162, 7163, 3, 684, 342, 0, 7163, 7165, 1, 0, 0, 0, 7164, 7161, 1, 0, 0, 0, 7164, 7165, 1, 0, 0, 0, 7165, 7190, 1, 0, 0, 0, 7166, 7169, 7, 125, 0, 0, 7167, 7168, 5, 834, 0, 0, 7168, 7170, 3, 708, 354, 0, 7169, 7167, 1, 0, 0, 0, 7169, 7170, 1, 0, 0, 0, 7170, 7190, 1, 0, 0, 0, 7171, 7173, 5, 233, 0, 0, 7172, 7174, 5, 225, 0, 0, 7173, 7172, 1, 0, 0, 0, 7173, 7174, 1, 0, 0, 0, 7174, 7176, 1, 0, 0, 0, 7175, 7177, 5, 228, 0, 0, 7176, 7175, 1, 0, 0, 0, 7176, 7177, 1, 0, 0, 0, 7177, 7181, 1, 0, 0, 0, 7178, 7179, 3, 54, 27, 0, 7179, 7180, 3, 684, 342, 0, 7180, 7182, 1, 0, 0, 0, 7181, 7178, 1, 0, 0, 0, 7181, 7182, 1, 0, 0, 0, 7182, 7185, 1, 0, 0, 0, 7183, 7184, 5, 28, 0, 0, 7184, 7186, 3, 686, 343, 0, 7185, 7183, 1, 0, 0, 0, 7185, 7186, 1, 0, 0, 0, 7186, 7190, 1, 0, 0, 0, 7187, 7188, 5, 233, 0, 0, 7188, 7190, 5, 229, 0, 0, 7189, 7063, 1, 0, 0, 0, 7189, 7083, 1, 0, 0, 0, 7189, 7092, 1, 0, 0, 0, 7189, 7100, 1, 0, 0, 0, 7189, 7108, 1, 0, 0, 0, 7189, 7118, 1, 0, 0, 0, 7189, 7128, 1, 0, 0, 0, 7189, 7141, 1, 0, 0, 0, 7189, 7151, 1, 0, 0, 0, 7189, 7152, 1, 0, 0, 0, 7189, 7156, 1, 0, 0, 0, 7189, 7166, 1, 0, 0, 0, 7189, 7171, 1, 0, 0, 0, 7189, 7187, 1, 0, 0, 0, 7190, 723, 1, 0, 0, 0, 7191, 7192, 5, 866, 0, 0, 7192, 7197, 5, 882, 0, 0, 7193, 7194, 5, 868, 0, 0, 7194, 7196, 5, 882, 0, 0, 7195, 7193, 1, 0, 0, 0, 7196, 7199, 1, 0, 0, 0, 7197, 7195, 1, 0, 0, 0, 7197, 7198, 1, 0, 0, 0, 7198, 7200, 1, 0, 0, 0, 7199, 7197, 1, 0, 0, 0, 7200, 7201, 5, 867, 0, 0, 7201, 725, 1, 0, 0, 0, 7202, 7204, 7, 126, 0, 0, 7203, 7205, 3, 728, 364, 0, 7204, 7203, 1, 0, 0, 0, 7204, 7205, 1, 0, 0, 0, 7205, 7225, 1, 0, 0, 0, 7206, 7208, 5, 224, 0, 0, 7207, 7209, 3, 728, 364, 0, 7208, 7207, 1, 0, 0, 0, 7208, 7209, 1, 0, 0, 0, 7209, 7213, 1, 0, 0, 0, 7210, 7211, 3, 54, 27, 0, 7211, 7212, 3, 684, 342, 0, 7212, 7214, 1, 0, 0, 0, 7213, 7210, 1, 0, 0, 0, 7213, 7214, 1, 0, 0, 0, 7214, 7225, 1, 0, 0, 0, 7215, 7225, 7, 127, 0, 0, 7216, 7218, 7, 128, 0, 0, 7217, 7219, 3, 732, 366, 0, 7218, 7217, 1, 0, 0, 0, 7218, 7219, 1, 0, 0, 0, 7219, 7225, 1, 0, 0, 0, 7220, 7222, 7, 129, 0, 0, 7221, 7223, 7, 130, 0, 0, 7222, 7221, 1, 0, 0, 0, 7222, 7223, 1, 0, 0, 0, 7223, 7225, 1, 0, 0, 0, 7224, 7202, 1, 0, 0, 0, 7224, 7206, 1, 0, 0, 0, 7224, 7215, 1, 0, 0, 0, 7224, 7216, 1, 0, 0, 0, 7224, 7220, 1, 0, 0, 0, 7225, 7227, 1, 0, 0, 0, 7226, 7228, 5, 12, 0, 0, 7227, 7226, 1, 0, 0, 0, 7227, 7228, 1, 0, 0, 0, 7228, 727, 1, 0, 0, 0, 7229, 7230, 5, 866, 0, 0, 7230, 7231, 3, 708, 354, 0, 7231, 7232, 5, 867, 0, 0, 7232, 729, 1, 0, 0, 0, 7233, 7234, 5, 866, 0, 0, 7234, 7235, 3, 708, 354, 0, 7235, 7236, 5, 868, 0, 0, 7236, 7237, 3, 708, 354, 0, 7237, 7238, 5, 867, 0, 0, 7238, 731, 1, 0, 0, 0, 7239, 7240, 5, 866, 0, 0, 7240, 7243, 3, 708, 354, 0, 7241, 7242, 5, 868, 0, 0, 7242, 7244, 3, 708, 354, 0, 7243, 7241, 1, 0, 0, 0, 7243, 7244, 1, 0, 0, 0, 7244, 7245, 1, 0, 0, 0, 7245, 7246, 5, 867, 0, 0, 7246, 733, 1, 0, 0, 0, 7247, 7248, 5, 866, 0, 0, 7248, 7253, 3, 670, 335, 0, 7249, 7250, 5, 868, 0, 0, 7250, 7252, 3, 670, 335, 0, 7251, 7249, 1, 0, 0, 0, 7252, 7255, 1, 0, 0, 0, 7253, 7251, 1, 0, 0, 0, 7253, 7254, 1, 0, 0, 0, 7254, 7256, 1, 0, 0, 0, 7255, 7253, 1, 0, 0, 0, 7256, 7257, 5, 867, 0, 0, 7257, 735, 1, 0, 0, 0, 7258, 7263, 3, 800, 400, 0, 7259, 7260, 5, 868, 0, 0, 7260, 7262, 3, 800, 400, 0, 7261, 7259, 1, 0, 0, 0, 7262, 7265, 1, 0, 0, 0, 7263, 7261, 1, 0, 0, 0, 7263, 7264, 1, 0, 0, 0, 7264, 737, 1, 0, 0, 0, 7265, 7263, 1, 0, 0, 0, 7266, 7267, 7, 131, 0, 0, 7267, 7272, 3, 740, 370, 0, 7268, 7269, 5, 868, 0, 0, 7269, 7271, 3, 740, 370, 0, 7270, 7268, 1, 0, 0, 0, 7271, 7274, 1, 0, 0, 0, 7272, 7270, 1, 0, 0, 0, 7272, 7273, 1, 0, 0, 0, 7273, 739, 1, 0, 0, 0, 7274, 7272, 1, 0, 0, 0, 7275, 7276, 5, 866, 0, 0, 7276, 7281, 3, 742, 371, 0, 7277, 7278, 5, 868, 0, 0, 7278, 7280, 3, 742, 371, 0, 7279, 7277, 1, 0, 0, 0, 7280, 7283, 1, 0, 0, 0, 7281, 7279, 1, 0, 0, 0, 7281, 7282, 1, 0, 0, 0, 7282, 7284, 1, 0, 0, 0, 7283, 7281, 1, 0, 0, 0, 7284, 7285, 5, 867, 0, 0, 7285, 741, 1, 0, 0, 0, 7286, 7289, 3, 800, 400, 0, 7287, 7289, 5, 42, 0, 0, 7288, 7286, 1, 0, 0, 0, 7288, 7287, 1, 0, 0, 0, 7289, 743, 1, 0, 0, 0, 7290, 7295, 3, 720, 360, 0, 7291, 7292, 5, 868, 0, 0, 7292, 7294, 3, 720, 360, 0, 7293, 7291, 1, 0, 0, 0, 7294, 7297, 1, 0, 0, 0, 7295, 7293, 1, 0, 0, 0, 7295, 7296, 1, 0, 0, 0, 7296, 745, 1, 0, 0, 0, 7297, 7295, 1, 0, 0, 0, 7298, 7303, 5, 882, 0, 0, 7299, 7300, 5, 868, 0, 0, 7300, 7302, 5, 882, 0, 0, 7301, 7299, 1, 0, 0, 0, 7302, 7305, 1, 0, 0, 0, 7303, 7301, 1, 0, 0, 0, 7303, 7304, 1, 0, 0, 0, 7304, 747, 1, 0, 0, 0, 7305, 7303, 1, 0, 0, 0, 7306, 7311, 5, 892, 0, 0, 7307, 7308, 5, 868, 0, 0, 7308, 7310, 5, 892, 0, 0, 7309, 7307, 1, 0, 0, 0, 7310, 7313, 1, 0, 0, 0, 7311, 7309, 1, 0, 0, 0, 7311, 7312, 1, 0, 0, 0, 7312, 749, 1, 0, 0, 0, 7313, 7311, 1, 0, 0, 0, 7314, 7341, 5, 116, 0, 0, 7315, 7316, 5, 24, 0, 0, 7316, 7317, 5, 866, 0, 0, 7317, 7318, 3, 800, 400, 0, 7318, 7319, 5, 13, 0, 0, 7319, 7320, 3, 726, 363, 0, 7320, 7321, 5, 867, 0, 0, 7321, 7341, 1, 0, 0, 0, 7322, 7324, 3, 806, 403, 0, 7323, 7322, 1, 0, 0, 0, 7323, 7324, 1, 0, 0, 0, 7324, 7325, 1, 0, 0, 0, 7325, 7341, 3, 720, 360, 0, 7326, 7330, 3, 752, 376, 0, 7327, 7328, 5, 119, 0, 0, 7328, 7329, 5, 185, 0, 0, 7329, 7331, 3, 752, 376, 0, 7330, 7327, 1, 0, 0, 0, 7330, 7331, 1, 0, 0, 0, 7331, 7341, 1, 0, 0, 0, 7332, 7333, 5, 866, 0, 0, 7333, 7334, 3, 800, 400, 0, 7334, 7335, 5, 867, 0, 0, 7335, 7341, 1, 0, 0, 0, 7336, 7337, 5, 866, 0, 0, 7337, 7338, 3, 698, 349, 0, 7338, 7339, 5, 867, 0, 0, 7339, 7341, 1, 0, 0, 0, 7340, 7314, 1, 0, 0, 0, 7340, 7315, 1, 0, 0, 0, 7340, 7323, 1, 0, 0, 0, 7340, 7326, 1, 0, 0, 0, 7340, 7332, 1, 0, 0, 0, 7340, 7336, 1, 0, 0, 0, 7341, 751, 1, 0, 0, 0, 7342, 7348, 7, 132, 0, 0, 7343, 7345, 5, 866, 0, 0, 7344, 7346, 3, 708, 354, 0, 7345, 7344, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 7347, 1, 0, 0, 0, 7347, 7349, 5, 867, 0, 0, 7348, 7343, 1, 0, 0, 0, 7348, 7349, 1, 0, 0, 0, 7349, 7357, 1, 0, 0, 0, 7350, 7351, 5, 295, 0, 0, 7351, 7353, 5, 866, 0, 0, 7352, 7354, 3, 708, 354, 0, 7353, 7352, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 7355, 1, 0, 0, 0, 7355, 7357, 5, 867, 0, 0, 7356, 7342, 1, 0, 0, 0, 7356, 7350, 1, 0, 0, 0, 7357, 753, 1, 0, 0, 0, 7358, 7359, 5, 78, 0, 0, 7359, 7360, 5, 60, 0, 0, 7360, 755, 1, 0, 0, 0, 7361, 7362, 5, 78, 0, 0, 7362, 7363, 5, 114, 0, 0, 7363, 7364, 5, 60, 0, 0, 7364, 757, 1, 0, 0, 0, 7365, 7366, 5, 124, 0, 0, 7366, 7367, 5, 143, 0, 0, 7367, 759, 1, 0, 0, 0, 7368, 7391, 3, 762, 381, 0, 7369, 7391, 3, 770, 385, 0, 7370, 7391, 3, 772, 386, 0, 7371, 7378, 3, 792, 396, 0, 7372, 7373, 5, 866, 0, 0, 7373, 7379, 5, 867, 0, 0, 7374, 7375, 5, 866, 0, 0, 7375, 7376, 3, 796, 398, 0, 7376, 7377, 5, 867, 0, 0, 7377, 7379, 1, 0, 0, 0, 7378, 7372, 1, 0, 0, 0, 7378, 7374, 1, 0, 0, 0, 7379, 7391, 1, 0, 0, 0, 7380, 7387, 3, 628, 314, 0, 7381, 7382, 5, 866, 0, 0, 7382, 7388, 5, 867, 0, 0, 7383, 7384, 5, 866, 0, 0, 7384, 7385, 3, 796, 398, 0, 7385, 7386, 5, 867, 0, 0, 7386, 7388, 1, 0, 0, 0, 7387, 7381, 1, 0, 0, 0, 7387, 7383, 1, 0, 0, 0, 7388, 7391, 1, 0, 0, 0, 7389, 7391, 3, 794, 397, 0, 7390, 7368, 1, 0, 0, 0, 7390, 7369, 1, 0, 0, 0, 7390, 7370, 1, 0, 0, 0, 7390, 7371, 1, 0, 0, 0, 7390, 7380, 1, 0, 0, 0, 7390, 7389, 1, 0, 0, 0, 7391, 761, 1, 0, 0, 0, 7392, 7395, 7, 133, 0, 0, 7393, 7394, 5, 866, 0, 0, 7394, 7396, 5, 867, 0, 0, 7395, 7393, 1, 0, 0, 0, 7395, 7396, 1, 0, 0, 0, 7396, 7572, 1, 0, 0, 0, 7397, 7572, 3, 56, 28, 0, 7398, 7399, 5, 33, 0, 0, 7399, 7400, 5, 866, 0, 0, 7400, 7401, 3, 800, 400, 0, 7401, 7402, 5, 868, 0, 0, 7402, 7403, 3, 726, 363, 0, 7403, 7404, 5, 867, 0, 0, 7404, 7572, 1, 0, 0, 0, 7405, 7406, 5, 33, 0, 0, 7406, 7407, 5, 866, 0, 0, 7407, 7408, 3, 800, 400, 0, 7408, 7409, 5, 188, 0, 0, 7409, 7410, 3, 684, 342, 0, 7410, 7411, 5, 867, 0, 0, 7411, 7572, 1, 0, 0, 0, 7412, 7413, 5, 24, 0, 0, 7413, 7414, 5, 866, 0, 0, 7414, 7415, 3, 800, 400, 0, 7415, 7416, 5, 13, 0, 0, 7416, 7417, 3, 726, 363, 0, 7417, 7418, 5, 867, 0, 0, 7418, 7572, 1, 0, 0, 0, 7419, 7420, 5, 189, 0, 0, 7420, 7421, 5, 866, 0, 0, 7421, 7422, 3, 658, 329, 0, 7422, 7423, 5, 867, 0, 0, 7423, 7572, 1, 0, 0, 0, 7424, 7426, 5, 23, 0, 0, 7425, 7427, 3, 764, 382, 0, 7426, 7425, 1, 0, 0, 0, 7427, 7428, 1, 0, 0, 0, 7428, 7426, 1, 0, 0, 0, 7428, 7429, 1, 0, 0, 0, 7429, 7432, 1, 0, 0, 0, 7430, 7431, 5, 53, 0, 0, 7431, 7433, 3, 798, 399, 0, 7432, 7430, 1, 0, 0, 0, 7432, 7433, 1, 0, 0, 0, 7433, 7434, 1, 0, 0, 0, 7434, 7435, 5, 378, 0, 0, 7435, 7572, 1, 0, 0, 0, 7436, 7437, 5, 23, 0, 0, 7437, 7439, 3, 800, 400, 0, 7438, 7440, 3, 764, 382, 0, 7439, 7438, 1, 0, 0, 0, 7440, 7441, 1, 0, 0, 0, 7441, 7439, 1, 0, 0, 0, 7441, 7442, 1, 0, 0, 0, 7442, 7445, 1, 0, 0, 0, 7443, 7444, 5, 53, 0, 0, 7444, 7446, 3, 798, 399, 0, 7445, 7443, 1, 0, 0, 0, 7445, 7446, 1, 0, 0, 0, 7446, 7447, 1, 0, 0, 0, 7447, 7448, 5, 378, 0, 0, 7448, 7572, 1, 0, 0, 0, 7449, 7450, 5, 224, 0, 0, 7450, 7451, 5, 866, 0, 0, 7451, 7454, 3, 796, 398, 0, 7452, 7453, 5, 188, 0, 0, 7453, 7455, 3, 684, 342, 0, 7454, 7452, 1, 0, 0, 0, 7454, 7455, 1, 0, 0, 0, 7455, 7456, 1, 0, 0, 0, 7456, 7457, 5, 867, 0, 0, 7457, 7572, 1, 0, 0, 0, 7458, 7459, 5, 296, 0, 0, 7459, 7462, 5, 866, 0, 0, 7460, 7463, 3, 712, 356, 0, 7461, 7463, 3, 800, 400, 0, 7462, 7460, 1, 0, 0, 0, 7462, 7461, 1, 0, 0, 0, 7463, 7464, 1, 0, 0, 0, 7464, 7467, 5, 80, 0, 0, 7465, 7468, 3, 712, 356, 0, 7466, 7468, 3, 800, 400, 0, 7467, 7465, 1, 0, 0, 0, 7467, 7466, 1, 0, 0, 0, 7468, 7469, 1, 0, 0, 0, 7469, 7470, 5, 867, 0, 0, 7470, 7572, 1, 0, 0, 0, 7471, 7472, 7, 134, 0, 0, 7472, 7475, 5, 866, 0, 0, 7473, 7476, 3, 712, 356, 0, 7474, 7476, 3, 800, 400, 0, 7475, 7473, 1, 0, 0, 0, 7475, 7474, 1, 0, 0, 0, 7476, 7477, 1, 0, 0, 0, 7477, 7480, 5, 68, 0, 0, 7478, 7481, 3, 708, 354, 0, 7479, 7481, 3, 800, 400, 0, 7480, 7478, 1, 0, 0, 0, 7480, 7479, 1, 0, 0, 0, 7481, 7487, 1, 0, 0, 0, 7482, 7485, 5, 65, 0, 0, 7483, 7486, 3, 708, 354, 0, 7484, 7486, 3, 800, 400, 0, 7485, 7483, 1, 0, 0, 0, 7485, 7484, 1, 0, 0, 0, 7486, 7488, 1, 0, 0, 0, 7487, 7482, 1, 0, 0, 0, 7487, 7488, 1, 0, 0, 0, 7488, 7489, 1, 0, 0, 0, 7489, 7490, 5, 867, 0, 0, 7490, 7572, 1, 0, 0, 0, 7491, 7492, 5, 300, 0, 0, 7492, 7493, 5, 866, 0, 0, 7493, 7496, 7, 135, 0, 0, 7494, 7497, 3, 712, 356, 0, 7495, 7497, 3, 800, 400, 0, 7496, 7494, 1, 0, 0, 0, 7496, 7495, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7498, 1, 0, 0, 0, 7498, 7501, 5, 68, 0, 0, 7499, 7502, 3, 712, 356, 0, 7500, 7502, 3, 800, 400, 0, 7501, 7499, 1, 0, 0, 0, 7501, 7500, 1, 0, 0, 0, 7502, 7503, 1, 0, 0, 0, 7503, 7504, 5, 867, 0, 0, 7504, 7572, 1, 0, 0, 0, 7505, 7506, 5, 300, 0, 0, 7506, 7509, 5, 866, 0, 0, 7507, 7510, 3, 712, 356, 0, 7508, 7510, 3, 800, 400, 0, 7509, 7507, 1, 0, 0, 0, 7509, 7508, 1, 0, 0, 0, 7510, 7511, 1, 0, 0, 0, 7511, 7514, 5, 68, 0, 0, 7512, 7515, 3, 712, 356, 0, 7513, 7515, 3, 800, 400, 0, 7514, 7512, 1, 0, 0, 0, 7514, 7513, 1, 0, 0, 0, 7515, 7516, 1, 0, 0, 0, 7516, 7517, 5, 867, 0, 0, 7517, 7572, 1, 0, 0, 0, 7518, 7519, 5, 840, 0, 0, 7519, 7522, 5, 866, 0, 0, 7520, 7523, 3, 712, 356, 0, 7521, 7523, 3, 800, 400, 0, 7522, 7520, 1, 0, 0, 0, 7522, 7521, 1, 0, 0, 0, 7523, 7530, 1, 0, 0, 0, 7524, 7525, 5, 13, 0, 0, 7525, 7526, 7, 136, 0, 0, 7526, 7527, 5, 866, 0, 0, 7527, 7528, 3, 708, 354, 0, 7528, 7529, 5, 867, 0, 0, 7529, 7531, 1, 0, 0, 0, 7530, 7524, 1, 0, 0, 0, 7530, 7531, 1, 0, 0, 0, 7531, 7533, 1, 0, 0, 0, 7532, 7534, 3, 766, 383, 0, 7533, 7532, 1, 0, 0, 0, 7533, 7534, 1, 0, 0, 0, 7534, 7535, 1, 0, 0, 0, 7535, 7536, 5, 867, 0, 0, 7536, 7572, 1, 0, 0, 0, 7537, 7538, 5, 293, 0, 0, 7538, 7539, 5, 866, 0, 0, 7539, 7540, 3, 66, 33, 0, 7540, 7543, 5, 68, 0, 0, 7541, 7544, 3, 712, 356, 0, 7542, 7544, 3, 800, 400, 0, 7543, 7541, 1, 0, 0, 0, 7543, 7542, 1, 0, 0, 0, 7544, 7545, 1, 0, 0, 0, 7545, 7546, 5, 867, 0, 0, 7546, 7572, 1, 0, 0, 0, 7547, 7548, 5, 827, 0, 0, 7548, 7549, 5, 866, 0, 0, 7549, 7550, 7, 137, 0, 0, 7550, 7551, 5, 868, 0, 0, 7551, 7552, 3, 712, 356, 0, 7552, 7553, 5, 867, 0, 0, 7553, 7572, 1, 0, 0, 0, 7554, 7555, 5, 254, 0, 0, 7555, 7556, 5, 866, 0, 0, 7556, 7557, 3, 800, 400, 0, 7557, 7558, 5, 868, 0, 0, 7558, 7561, 3, 800, 400, 0, 7559, 7560, 5, 579, 0, 0, 7560, 7562, 3, 726, 363, 0, 7561, 7559, 1, 0, 0, 0, 7561, 7562, 1, 0, 0, 0, 7562, 7564, 1, 0, 0, 0, 7563, 7565, 3, 286, 143, 0, 7564, 7563, 1, 0, 0, 0, 7564, 7565, 1, 0, 0, 0, 7565, 7567, 1, 0, 0, 0, 7566, 7568, 3, 288, 144, 0, 7567, 7566, 1, 0, 0, 0, 7567, 7568, 1, 0, 0, 0, 7568, 7569, 1, 0, 0, 0, 7569, 7570, 5, 867, 0, 0, 7570, 7572, 1, 0, 0, 0, 7571, 7392, 1, 0, 0, 0, 7571, 7397, 1, 0, 0, 0, 7571, 7398, 1, 0, 0, 0, 7571, 7405, 1, 0, 0, 0, 7571, 7412, 1, 0, 0, 0, 7571, 7419, 1, 0, 0, 0, 7571, 7424, 1, 0, 0, 0, 7571, 7436, 1, 0, 0, 0, 7571, 7449, 1, 0, 0, 0, 7571, 7458, 1, 0, 0, 0, 7571, 7471, 1, 0, 0, 0, 7571, 7491, 1, 0, 0, 0, 7571, 7505, 1, 0, 0, 0, 7571, 7518, 1, 0, 0, 0, 7571, 7537, 1, 0, 0, 0, 7571, 7547, 1, 0, 0, 0, 7571, 7554, 1, 0, 0, 0, 7572, 763, 1, 0, 0, 0, 7573, 7574, 5, 191, 0, 0, 7574, 7575, 3, 798, 399, 0, 7575, 7576, 5, 175, 0, 0, 7576, 7577, 3, 798, 399, 0, 7577, 765, 1, 0, 0, 0, 7578, 7579, 5, 448, 0, 0, 7579, 7584, 3, 768, 384, 0, 7580, 7581, 5, 868, 0, 0, 7581, 7583, 3, 768, 384, 0, 7582, 7580, 1, 0, 0, 0, 7583, 7586, 1, 0, 0, 0, 7584, 7582, 1, 0, 0, 0, 7584, 7585, 1, 0, 0, 0, 7585, 7593, 1, 0, 0, 0, 7586, 7584, 1, 0, 0, 0, 7587, 7588, 5, 448, 0, 0, 7588, 7589, 3, 708, 354, 0, 7589, 7590, 5, 854, 0, 0, 7590, 7591, 3, 708, 354, 0, 7591, 7593, 1, 0, 0, 0, 7592, 7578, 1, 0, 0, 0, 7592, 7587, 1, 0, 0, 0, 7593, 767, 1, 0, 0, 0, 7594, 7596, 3, 708, 354, 0, 7595, 7597, 7, 138, 0, 0, 7596, 7595, 1, 0, 0, 0, 7596, 7597, 1, 0, 0, 0, 7597, 769, 1, 0, 0, 0, 7598, 7599, 7, 139, 0, 0, 7599, 7601, 5, 866, 0, 0, 7600, 7602, 7, 44, 0, 0, 7601, 7600, 1, 0, 0, 0, 7601, 7602, 1, 0, 0, 0, 7602, 7603, 1, 0, 0, 0, 7603, 7604, 3, 798, 399, 0, 7604, 7606, 5, 867, 0, 0, 7605, 7607, 3, 774, 387, 0, 7606, 7605, 1, 0, 0, 0, 7606, 7607, 1, 0, 0, 0, 7607, 7658, 1, 0, 0, 0, 7608, 7609, 5, 262, 0, 0, 7609, 7617, 5, 866, 0, 0, 7610, 7618, 5, 850, 0, 0, 7611, 7613, 5, 7, 0, 0, 7612, 7611, 1, 0, 0, 0, 7612, 7613, 1, 0, 0, 0, 7613, 7614, 1, 0, 0, 0, 7614, 7618, 3, 798, 399, 0, 7615, 7616, 5, 49, 0, 0, 7616, 7618, 3, 796, 398, 0, 7617, 7610, 1, 0, 0, 0, 7617, 7612, 1, 0, 0, 0, 7617, 7615, 1, 0, 0, 0, 7618, 7619, 1, 0, 0, 0, 7619, 7621, 5, 867, 0, 0, 7620, 7622, 3, 774, 387, 0, 7621, 7620, 1, 0, 0, 0, 7621, 7622, 1, 0, 0, 0, 7622, 7658, 1, 0, 0, 0, 7623, 7624, 7, 140, 0, 0, 7624, 7626, 5, 866, 0, 0, 7625, 7627, 5, 7, 0, 0, 7626, 7625, 1, 0, 0, 0, 7626, 7627, 1, 0, 0, 0, 7627, 7628, 1, 0, 0, 0, 7628, 7629, 3, 798, 399, 0, 7629, 7631, 5, 867, 0, 0, 7630, 7632, 3, 774, 387, 0, 7631, 7630, 1, 0, 0, 0, 7631, 7632, 1, 0, 0, 0, 7632, 7658, 1, 0, 0, 0, 7633, 7634, 5, 266, 0, 0, 7634, 7636, 5, 866, 0, 0, 7635, 7637, 5, 49, 0, 0, 7636, 7635, 1, 0, 0, 0, 7636, 7637, 1, 0, 0, 0, 7637, 7638, 1, 0, 0, 0, 7638, 7649, 3, 796, 398, 0, 7639, 7640, 5, 125, 0, 0, 7640, 7641, 5, 20, 0, 0, 7641, 7646, 3, 254, 127, 0, 7642, 7643, 5, 868, 0, 0, 7643, 7645, 3, 254, 127, 0, 7644, 7642, 1, 0, 0, 0, 7645, 7648, 1, 0, 0, 0, 7646, 7644, 1, 0, 0, 0, 7646, 7647, 1, 0, 0, 0, 7647, 7650, 1, 0, 0, 0, 7648, 7646, 1, 0, 0, 0, 7649, 7639, 1, 0, 0, 0, 7649, 7650, 1, 0, 0, 0, 7650, 7653, 1, 0, 0, 0, 7651, 7652, 5, 156, 0, 0, 7652, 7654, 5, 882, 0, 0, 7653, 7651, 1, 0, 0, 0, 7653, 7654, 1, 0, 0, 0, 7654, 7655, 1, 0, 0, 0, 7655, 7656, 5, 867, 0, 0, 7656, 7658, 1, 0, 0, 0, 7657, 7598, 1, 0, 0, 0, 7657, 7608, 1, 0, 0, 0, 7657, 7623, 1, 0, 0, 0, 7657, 7633, 1, 0, 0, 0, 7658, 771, 1, 0, 0, 0, 7659, 7660, 7, 141, 0, 0, 7660, 7661, 5, 866, 0, 0, 7661, 7664, 3, 800, 400, 0, 7662, 7663, 5, 868, 0, 0, 7663, 7665, 3, 708, 354, 0, 7664, 7662, 1, 0, 0, 0, 7664, 7665, 1, 0, 0, 0, 7665, 7668, 1, 0, 0, 0, 7666, 7667, 5, 868, 0, 0, 7667, 7669, 3, 708, 354, 0, 7668, 7666, 1, 0, 0, 0, 7668, 7669, 1, 0, 0, 0, 7669, 7670, 1, 0, 0, 0, 7670, 7671, 5, 867, 0, 0, 7671, 7672, 3, 774, 387, 0, 7672, 7698, 1, 0, 0, 0, 7673, 7674, 7, 142, 0, 0, 7674, 7675, 5, 866, 0, 0, 7675, 7676, 3, 800, 400, 0, 7676, 7677, 5, 867, 0, 0, 7677, 7678, 3, 774, 387, 0, 7678, 7698, 1, 0, 0, 0, 7679, 7680, 7, 143, 0, 0, 7680, 7681, 5, 866, 0, 0, 7681, 7682, 5, 867, 0, 0, 7682, 7698, 3, 774, 387, 0, 7683, 7684, 5, 273, 0, 0, 7684, 7685, 5, 866, 0, 0, 7685, 7686, 3, 800, 400, 0, 7686, 7687, 5, 868, 0, 0, 7687, 7688, 3, 708, 354, 0, 7688, 7689, 5, 867, 0, 0, 7689, 7690, 3, 774, 387, 0, 7690, 7698, 1, 0, 0, 0, 7691, 7692, 5, 272, 0, 0, 7692, 7693, 5, 866, 0, 0, 7693, 7694, 3, 708, 354, 0, 7694, 7695, 5, 867, 0, 0, 7695, 7696, 3, 774, 387, 0, 7696, 7698, 1, 0, 0, 0, 7697, 7659, 1, 0, 0, 0, 7697, 7673, 1, 0, 0, 0, 7697, 7679, 1, 0, 0, 0, 7697, 7683, 1, 0, 0, 0, 7697, 7691, 1, 0, 0, 0, 7698, 773, 1, 0, 0, 0, 7699, 7705, 5, 129, 0, 0, 7700, 7701, 5, 866, 0, 0, 7701, 7702, 3, 776, 388, 0, 7702, 7703, 5, 867, 0, 0, 7703, 7706, 1, 0, 0, 0, 7704, 7706, 3, 778, 389, 0, 7705, 7700, 1, 0, 0, 0, 7705, 7704, 1, 0, 0, 0, 7706, 775, 1, 0, 0, 0, 7707, 7709, 3, 778, 389, 0, 7708, 7707, 1, 0, 0, 0, 7708, 7709, 1, 0, 0, 0, 7709, 7711, 1, 0, 0, 0, 7710, 7712, 3, 790, 395, 0, 7711, 7710, 1, 0, 0, 0, 7711, 7712, 1, 0, 0, 0, 7712, 7714, 1, 0, 0, 0, 7713, 7715, 3, 252, 126, 0, 7714, 7713, 1, 0, 0, 0, 7714, 7715, 1, 0, 0, 0, 7715, 7717, 1, 0, 0, 0, 7716, 7718, 3, 780, 390, 0, 7717, 7716, 1, 0, 0, 0, 7717, 7718, 1, 0, 0, 0, 7718, 777, 1, 0, 0, 0, 7719, 7720, 3, 702, 351, 0, 7720, 779, 1, 0, 0, 0, 7721, 7722, 3, 782, 391, 0, 7722, 7723, 3, 784, 392, 0, 7723, 781, 1, 0, 0, 0, 7724, 7725, 7, 144, 0, 0, 7725, 783, 1, 0, 0, 0, 7726, 7729, 3, 788, 394, 0, 7727, 7729, 3, 786, 393, 0, 7728, 7726, 1, 0, 0, 0, 7728, 7727, 1, 0, 0, 0, 7729, 785, 1, 0, 0, 0, 7730, 7731, 5, 17, 0, 0, 7731, 7732, 3, 788, 394, 0, 7732, 7733, 5, 11, 0, 0, 7733, 7734, 3, 788, 394, 0, 7734, 787, 1, 0, 0, 0, 7735, 7736, 5, 36, 0, 0, 7736, 7743, 5, 586, 0, 0, 7737, 7738, 5, 669, 0, 0, 7738, 7743, 7, 145, 0, 0, 7739, 7740, 3, 800, 400, 0, 7740, 7741, 7, 145, 0, 0, 7741, 7743, 1, 0, 0, 0, 7742, 7735, 1, 0, 0, 0, 7742, 7737, 1, 0, 0, 0, 7742, 7739, 1, 0, 0, 0, 7743, 789, 1, 0, 0, 0, 7744, 7745, 5, 130, 0, 0, 7745, 7746, 5, 20, 0, 0, 7746, 7751, 3, 800, 400, 0, 7747, 7748, 5, 868, 0, 0, 7748, 7750, 3, 800, 400, 0, 7749, 7747, 1, 0, 0, 0, 7750, 7753, 1, 0, 0, 0, 7751, 7749, 1, 0, 0, 0, 7751, 7752, 1, 0, 0, 0, 7752, 791, 1, 0, 0, 0, 7753, 7751, 1, 0, 0, 0, 7754, 7779, 3, 832, 416, 0, 7755, 7779, 5, 757, 0, 0, 7756, 7779, 5, 289, 0, 0, 7757, 7779, 5, 285, 0, 0, 7758, 7779, 5, 286, 0, 0, 7759, 7779, 5, 287, 0, 0, 7760, 7779, 5, 290, 0, 0, 7761, 7779, 5, 291, 0, 0, 7762, 7779, 5, 292, 0, 0, 7763, 7779, 5, 78, 0, 0, 7764, 7779, 5, 86, 0, 0, 7765, 7779, 5, 288, 0, 0, 7766, 7779, 5, 294, 0, 0, 7767, 7779, 5, 488, 0, 0, 7768, 7779, 5, 295, 0, 0, 7769, 7779, 5, 142, 0, 0, 7770, 7779, 5, 143, 0, 0, 7771, 7779, 5, 297, 0, 0, 7772, 7779, 5, 298, 0, 0, 7773, 7779, 5, 299, 0, 0, 7774, 7779, 5, 300, 0, 0, 7775, 7779, 5, 301, 0, 0, 7776, 7779, 5, 302, 0, 0, 7777, 7779, 5, 303, 0, 0, 7778, 7754, 1, 0, 0, 0, 7778, 7755, 1, 0, 0, 0, 7778, 7756, 1, 0, 0, 0, 7778, 7757, 1, 0, 0, 0, 7778, 7758, 1, 0, 0, 0, 7778, 7759, 1, 0, 0, 0, 7778, 7760, 1, 0, 0, 0, 7778, 7761, 1, 0, 0, 0, 7778, 7762, 1, 0, 0, 0, 7778, 7763, 1, 0, 0, 0, 7778, 7764, 1, 0, 0, 0, 7778, 7765, 1, 0, 0, 0, 7778, 7766, 1, 0, 0, 0, 7778, 7767, 1, 0, 0, 0, 7778, 7768, 1, 0, 0, 0, 7778, 7769, 1, 0, 0, 0, 7778, 7770, 1, 0, 0, 0, 7778, 7771, 1, 0, 0, 0, 7778, 7772, 1, 0, 0, 0, 7778, 7773, 1, 0, 0, 0, 7778, 7774, 1, 0, 0, 0, 7778, 7775, 1, 0, 0, 0, 7778, 7776, 1, 0, 0, 0, 7778, 7777, 1, 0, 0, 0, 7779, 793, 1, 0, 0, 0, 7780, 7781, 7, 146, 0, 0, 7781, 7782, 5, 866, 0, 0, 7782, 7783, 3, 798, 399, 0, 7783, 7784, 5, 867, 0, 0, 7784, 795, 1, 0, 0, 0, 7785, 7790, 3, 798, 399, 0, 7786, 7787, 5, 868, 0, 0, 7787, 7789, 3, 798, 399, 0, 7788, 7786, 1, 0, 0, 0, 7789, 7792, 1, 0, 0, 0, 7790, 7788, 1, 0, 0, 0, 7790, 7791, 1, 0, 0, 0, 7791, 797, 1, 0, 0, 0, 7792, 7790, 1, 0, 0, 0, 7793, 7797, 3, 720, 360, 0, 7794, 7797, 3, 760, 380, 0, 7795, 7797, 3, 800, 400, 0, 7796, 7793, 1, 0, 0, 0, 7796, 7794, 1, 0, 0, 0, 7796, 7795, 1, 0, 0, 0, 7797, 799, 1, 0, 0, 0, 7798, 7799, 6, 400, -1, 0, 7799, 7800, 7, 147, 0, 0, 7800, 7810, 3, 800, 400, 4, 7801, 7802, 3, 802, 401, 0, 7802, 7804, 5, 89, 0, 0, 7803, 7805, 5, 114, 0, 0, 7804, 7803, 1, 0, 0, 0, 7804, 7805, 1, 0, 0, 0, 7805, 7806, 1, 0, 0, 0, 7806, 7807, 7, 148, 0, 0, 7807, 7810, 1, 0, 0, 0, 7808, 7810, 3, 802, 401, 0, 7809, 7798, 1, 0, 0, 0, 7809, 7801, 1, 0, 0, 0, 7809, 7808, 1, 0, 0, 0, 7810, 7817, 1, 0, 0, 0, 7811, 7812, 10, 3, 0, 0, 7812, 7813, 3, 812, 406, 0, 7813, 7814, 3, 800, 400, 4, 7814, 7816, 1, 0, 0, 0, 7815, 7811, 1, 0, 0, 0, 7816, 7819, 1, 0, 0, 0, 7817, 7815, 1, 0, 0, 0, 7817, 7818, 1, 0, 0, 0, 7818, 801, 1, 0, 0, 0, 7819, 7817, 1, 0, 0, 0, 7820, 7821, 6, 401, -1, 0, 7821, 7822, 3, 804, 402, 0, 7822, 7886, 1, 0, 0, 0, 7823, 7825, 10, 6, 0, 0, 7824, 7826, 5, 114, 0, 0, 7825, 7824, 1, 0, 0, 0, 7825, 7826, 1, 0, 0, 0, 7826, 7827, 1, 0, 0, 0, 7827, 7828, 5, 17, 0, 0, 7828, 7829, 3, 802, 401, 0, 7829, 7830, 5, 11, 0, 0, 7830, 7831, 3, 802, 401, 7, 7831, 7885, 1, 0, 0, 0, 7832, 7833, 10, 5, 0, 0, 7833, 7834, 5, 604, 0, 0, 7834, 7835, 5, 99, 0, 0, 7835, 7885, 3, 802, 401, 6, 7836, 7838, 10, 3, 0, 0, 7837, 7839, 5, 114, 0, 0, 7838, 7837, 1, 0, 0, 0, 7838, 7839, 1, 0, 0, 0, 7839, 7840, 1, 0, 0, 0, 7840, 7841, 7, 149, 0, 0, 7841, 7885, 3, 802, 401, 4, 7842, 7844, 10, 9, 0, 0, 7843, 7845, 5, 114, 0, 0, 7844, 7843, 1, 0, 0, 0, 7844, 7845, 1, 0, 0, 0, 7845, 7846, 1, 0, 0, 0, 7846, 7847, 5, 80, 0, 0, 7847, 7850, 5, 866, 0, 0, 7848, 7851, 3, 204, 102, 0, 7849, 7851, 3, 736, 368, 0, 7850, 7848, 1, 0, 0, 0, 7850, 7849, 1, 0, 0, 0, 7851, 7852, 1, 0, 0, 0, 7852, 7853, 5, 867, 0, 0, 7853, 7885, 1, 0, 0, 0, 7854, 7855, 10, 8, 0, 0, 7855, 7856, 5, 89, 0, 0, 7856, 7885, 3, 718, 359, 0, 7857, 7858, 10, 7, 0, 0, 7858, 7865, 3, 808, 404, 0, 7859, 7860, 7, 150, 0, 0, 7860, 7861, 5, 866, 0, 0, 7861, 7862, 3, 204, 102, 0, 7862, 7863, 5, 867, 0, 0, 7863, 7866, 1, 0, 0, 0, 7864, 7866, 3, 802, 401, 0, 7865, 7859, 1, 0, 0, 0, 7865, 7864, 1, 0, 0, 0, 7866, 7885, 1, 0, 0, 0, 7867, 7869, 10, 4, 0, 0, 7868, 7870, 5, 114, 0, 0, 7869, 7868, 1, 0, 0, 0, 7869, 7870, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7872, 5, 99, 0, 0, 7872, 7875, 3, 802, 401, 0, 7873, 7874, 5, 384, 0, 0, 7874, 7876, 5, 882, 0, 0, 7875, 7873, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7885, 1, 0, 0, 0, 7877, 7878, 10, 2, 0, 0, 7878, 7879, 5, 485, 0, 0, 7879, 7880, 5, 510, 0, 0, 7880, 7881, 5, 866, 0, 0, 7881, 7882, 3, 802, 401, 0, 7882, 7883, 5, 867, 0, 0, 7883, 7885, 1, 0, 0, 0, 7884, 7823, 1, 0, 0, 0, 7884, 7832, 1, 0, 0, 0, 7884, 7836, 1, 0, 0, 0, 7884, 7842, 1, 0, 0, 0, 7884, 7854, 1, 0, 0, 0, 7884, 7857, 1, 0, 0, 0, 7884, 7867, 1, 0, 0, 0, 7884, 7877, 1, 0, 0, 0, 7885, 7888, 1, 0, 0, 0, 7886, 7884, 1, 0, 0, 0, 7886, 7887, 1, 0, 0, 0, 7887, 803, 1, 0, 0, 0, 7888, 7886, 1, 0, 0, 0, 7889, 7890, 6, 402, -1, 0, 7890, 7938, 3, 720, 360, 0, 7891, 7938, 3, 760, 380, 0, 7892, 7938, 3, 682, 341, 0, 7893, 7894, 3, 806, 403, 0, 7894, 7895, 3, 804, 402, 12, 7895, 7938, 1, 0, 0, 0, 7896, 7897, 5, 228, 0, 0, 7897, 7938, 3, 804, 402, 11, 7898, 7899, 5, 892, 0, 0, 7899, 7900, 5, 841, 0, 0, 7900, 7938, 3, 804, 402, 10, 7901, 7902, 5, 866, 0, 0, 7902, 7907, 3, 800, 400, 0, 7903, 7904, 5, 868, 0, 0, 7904, 7906, 3, 800, 400, 0, 7905, 7903, 1, 0, 0, 0, 7906, 7909, 1, 0, 0, 0, 7907, 7905, 1, 0, 0, 0, 7907, 7908, 1, 0, 0, 0, 7908, 7910, 1, 0, 0, 0, 7909, 7907, 1, 0, 0, 0, 7910, 7911, 5, 867, 0, 0, 7911, 7938, 1, 0, 0, 0, 7912, 7913, 5, 586, 0, 0, 7913, 7914, 5, 866, 0, 0, 7914, 7917, 3, 800, 400, 0, 7915, 7916, 5, 868, 0, 0, 7916, 7918, 3, 800, 400, 0, 7917, 7915, 1, 0, 0, 0, 7918, 7919, 1, 0, 0, 0, 7919, 7917, 1, 0, 0, 0, 7919, 7920, 1, 0, 0, 0, 7920, 7921, 1, 0, 0, 0, 7921, 7922, 5, 867, 0, 0, 7922, 7938, 1, 0, 0, 0, 7923, 7924, 5, 60, 0, 0, 7924, 7925, 5, 866, 0, 0, 7925, 7926, 3, 204, 102, 0, 7926, 7927, 5, 867, 0, 0, 7927, 7938, 1, 0, 0, 0, 7928, 7929, 5, 866, 0, 0, 7929, 7930, 3, 204, 102, 0, 7930, 7931, 5, 867, 0, 0, 7931, 7938, 1, 0, 0, 0, 7932, 7933, 5, 87, 0, 0, 7933, 7934, 3, 800, 400, 0, 7934, 7935, 3, 66, 33, 0, 7935, 7938, 1, 0, 0, 0, 7936, 7938, 3, 658, 329, 0, 7937, 7889, 1, 0, 0, 0, 7937, 7891, 1, 0, 0, 0, 7937, 7892, 1, 0, 0, 0, 7937, 7893, 1, 0, 0, 0, 7937, 7896, 1, 0, 0, 0, 7937, 7898, 1, 0, 0, 0, 7937, 7901, 1, 0, 0, 0, 7937, 7912, 1, 0, 0, 0, 7937, 7923, 1, 0, 0, 0, 7937, 7928, 1, 0, 0, 0, 7937, 7932, 1, 0, 0, 0, 7937, 7936, 1, 0, 0, 0, 7938, 7956, 1, 0, 0, 0, 7939, 7940, 10, 4, 0, 0, 7940, 7941, 3, 818, 409, 0, 7941, 7942, 3, 804, 402, 5, 7942, 7955, 1, 0, 0, 0, 7943, 7944, 10, 3, 0, 0, 7944, 7945, 3, 814, 407, 0, 7945, 7946, 3, 804, 402, 4, 7946, 7955, 1, 0, 0, 0, 7947, 7948, 10, 2, 0, 0, 7948, 7949, 3, 816, 408, 0, 7949, 7950, 3, 804, 402, 3, 7950, 7955, 1, 0, 0, 0, 7951, 7952, 10, 14, 0, 0, 7952, 7953, 5, 28, 0, 0, 7953, 7955, 3, 686, 343, 0, 7954, 7939, 1, 0, 0, 0, 7954, 7943, 1, 0, 0, 0, 7954, 7947, 1, 0, 0, 0, 7954, 7951, 1, 0, 0, 0, 7955, 7958, 1, 0, 0, 0, 7956, 7954, 1, 0, 0, 0, 7956, 7957, 1, 0, 0, 0, 7957, 805, 1, 0, 0, 0, 7958, 7956, 1, 0, 0, 0, 7959, 7960, 7, 151, 0, 0, 7960, 807, 1, 0, 0, 0, 7961, 7962, 5, 859, 0, 0, 7962, 7970, 5, 858, 0, 0, 7963, 7964, 5, 860, 0, 0, 7964, 7970, 5, 857, 0, 0, 7965, 7966, 5, 859, 0, 0, 7966, 7967, 5, 857, 0, 0, 7967, 7970, 5, 858, 0, 0, 7968, 7970, 3, 810, 405, 0, 7969, 7961, 1, 0, 0, 0, 7969, 7963, 1, 0, 0, 0, 7969, 7965, 1, 0, 0, 0, 7969, 7968, 1, 0, 0, 0, 7970, 809, 1, 0, 0, 0, 7971, 7972, 5, 859, 0, 0, 7972, 7979, 5, 857, 0, 0, 7973, 7974, 5, 858, 0, 0, 7974, 7979, 5, 857, 0, 0, 7975, 7979, 5, 857, 0, 0, 7976, 7979, 5, 858, 0, 0, 7977, 7979, 5, 859, 0, 0, 7978, 7971, 1, 0, 0, 0, 7978, 7973, 1, 0, 0, 0, 7978, 7975, 1, 0, 0, 0, 7978, 7976, 1, 0, 0, 0, 7978, 7977, 1, 0, 0, 0, 7979, 811, 1, 0, 0, 0, 7980, 7988, 5, 11, 0, 0, 7981, 7982, 5, 863, 0, 0, 7982, 7988, 5, 863, 0, 0, 7983, 7988, 5, 196, 0, 0, 7984, 7988, 5, 124, 0, 0, 7985, 7986, 5, 862, 0, 0, 7986, 7988, 5, 862, 0, 0, 7987, 7980, 1, 0, 0, 0, 7987, 7981, 1, 0, 0, 0, 7987, 7983, 1, 0, 0, 0, 7987, 7984, 1, 0, 0, 0, 7987, 7985, 1, 0, 0, 0, 7988, 813, 1, 0, 0, 0, 7989, 7990, 5, 859, 0, 0, 7990, 7997, 5, 859, 0, 0, 7991, 7992, 5, 858, 0, 0, 7992, 7997, 5, 858, 0, 0, 7993, 7997, 5, 863, 0, 0, 7994, 7997, 5, 864, 0, 0, 7995, 7997, 5, 862, 0, 0, 7996, 7989, 1, 0, 0, 0, 7996, 7991, 1, 0, 0, 0, 7996, 7993, 1, 0, 0, 0, 7996, 7994, 1, 0, 0, 0, 7996, 7995, 1, 0, 0, 0, 7997, 815, 1, 0, 0, 0, 7998, 7999, 7, 152, 0, 0, 7999, 817, 1, 0, 0, 0, 8000, 8001, 5, 854, 0, 0, 8001, 8006, 5, 858, 0, 0, 8002, 8003, 5, 854, 0, 0, 8003, 8004, 5, 858, 0, 0, 8004, 8006, 5, 858, 0, 0, 8005, 8000, 1, 0, 0, 0, 8005, 8002, 1, 0, 0, 0, 8006, 819, 1, 0, 0, 0, 8007, 8008, 7, 153, 0, 0, 8008, 821, 1, 0, 0, 0, 8009, 8010, 7, 154, 0, 0, 8010, 823, 1, 0, 0, 0, 8011, 8012, 7, 155, 0, 0, 8012, 825, 1, 0, 0, 0, 8013, 8014, 7, 156, 0, 0, 8014, 827, 1, 0, 0, 0, 8015, 8016, 7, 157, 0, 0, 8016, 829, 1, 0, 0, 0, 8017, 8018, 7, 158, 0, 0, 8018, 831, 1, 0, 0, 0, 8019, 8020, 7, 159, 0, 0, 8020, 833, 1, 0, 0, 0, 1154, 837, 844, 847, 856, 899, 918, 929, 945, 950, 962, 997, 1007, 1012, 1018, 1023, 1027, 1036, 1039, 1042, 1046, 1053, 1056, 1061, 1069, 1074, 1079, 1082, 1084, 1096, 1099, 1103, 1106, 1110, 1113, 1117, 1120, 1123, 1127, 1130, 1134, 1140, 1144, 1149, 1155, 1162, 1170, 1188, 1195, 1199, 1203, 1207, 1212, 1215, 1218, 1221, 1224, 1230, 1234, 1244, 1248, 1252, 1258, 1263, 1266, 1269, 1271, 1275, 1282, 1286, 1289, 1294, 1298, 1301, 1305, 1308, 1312, 1325, 1328, 1332, 1335, 1339, 1342, 1346, 1349, 1353, 1356, 1359, 1363, 1366, 1370, 1376, 1380, 1392, 1398, 1409, 1414, 1422, 1426, 1431, 1434, 1439, 1449, 1454, 1459, 1465, 1470, 1474, 1476, 1479, 1483, 1487, 1490, 1494, 1498, 1502, 1508, 1511, 1518, 1523, 1529, 1536, 1542, 1550, 1553, 1560, 1563, 1565, 1571, 1577, 1594, 1601, 1608, 1620, 1625, 1628, 1631, 1641, 1654, 1659, 1675, 1683, 1693, 1696, 1702, 1707, 1710, 1716, 1720, 1725, 1731, 1735, 1739, 1742, 1745, 1751, 1755, 1760, 1771, 1774, 1781, 1784, 1788, 1794, 1806, 1809, 1814, 1827, 1834, 1840, 1845, 1849, 1852, 1860, 1868, 1870, 1880, 1884, 1887, 1891, 1896, 1901, 1906, 1910, 1914, 1918, 1922, 1926, 1930, 1935, 1940, 1945, 1951, 1956, 1961, 1966, 1971, 1976, 1982, 1987, 1992, 1997, 2002, 2007, 2012, 2017, 2024, 2029, 2034, 2039, 2043, 2048, 2056, 2061, 2067, 2079, 2086, 2088, 2096, 2101, 2104, 2112, 2118, 2122, 2135, 2147, 2149, 2152, 2160, 2166, 2172, 2185, 2192, 2201, 2206, 2217, 2226, 2231, 2243, 2250, 2259, 2264, 2276, 2283, 2292, 2297, 2304, 2313, 2318, 2320, 2325, 2333, 2342, 2346, 2349, 2353, 2358, 2364, 2370, 2375, 2380, 2385, 2390, 2393, 2398, 2403, 2413, 2417, 2424, 2429, 2432, 2437, 2440, 2444, 2448, 2456, 2475, 2478, 2481, 2485, 2495, 2508, 2521, 2524, 2530, 2533, 2537, 2546, 2549, 2552, 2557, 2561, 2564, 2568, 2572, 2575, 2579, 2582, 2586, 2589, 2595, 2598, 2603, 2611, 2617, 2621, 2625, 2630, 2635, 2642, 2646, 2657, 2665, 2668, 2674, 2680, 2683, 2689, 2695, 2697, 2702, 2708, 2714, 2716, 2720, 2723, 2726, 2732, 2738, 2740, 2745, 2752, 2761, 2764, 2768, 2773, 2783, 2792, 2800, 2803, 2811, 2814, 2821, 2826, 2834, 2850, 2855, 2862, 2881, 2887, 2897, 2909, 2916, 2923, 2938, 2951, 2957, 2963, 2969, 2975, 2981, 2987, 2992, 2999, 3006, 3013, 3018, 3021, 3023, 3032, 3039, 3046, 3053, 3062, 3068, 3072, 3076, 3080, 3086, 3089, 3094, 3101, 3108, 3112, 3117, 3127, 3135, 3141, 3150, 3159, 3168, 3171, 3175, 3184, 3188, 3191, 3194, 3200, 3203, 3206, 3210, 3213, 3216, 3219, 3230, 3233, 3238, 3244, 3249, 3254, 3257, 3261, 3266, 3269, 3274, 3284, 3289, 3295, 3297, 3303, 3305, 3311, 3319, 3324, 3332, 3335, 3340, 3343, 3348, 3356, 3362, 3366, 3368, 3374, 3382, 3387, 3395, 3398, 3403, 3406, 3410, 3413, 3416, 3420, 3423, 3431, 3437, 3441, 3447, 3452, 3456, 3458, 3464, 3468, 3471, 3474, 3477, 3483, 3488, 3491, 3494, 3497, 3500, 3502, 3505, 3509, 3512, 3515, 3523, 3529, 3532, 3534, 3543, 3548, 3555, 3558, 3561, 3565, 3569, 3575, 3579, 3586, 3590, 3593, 3596, 3601, 3608, 3618, 3627, 3636, 3646, 3649, 3653, 3659, 3663, 3666, 3669, 3674, 3677, 3684, 3688, 3691, 3695, 3699, 3702, 3705, 3710, 3716, 3720, 3730, 3736, 3740, 3746, 3750, 3756, 3759, 3771, 3775, 3779, 3787, 3791, 3805, 3810, 3813, 3817, 3820, 3828, 3833, 3836, 3839, 3843, 3846, 3855, 3860, 3869, 3874, 3881, 3888, 3896, 3902, 3910, 3913, 3916, 3923, 3926, 3929, 3936, 3939, 3943, 3949, 3959, 3963, 3972, 3975, 3979, 3985, 3993, 3998, 4002, 4008, 4014, 4017, 4019, 4023, 4032, 4042, 4048, 4053, 4057, 4060, 4063, 4066, 4069, 4072, 4076, 4080, 4088, 4092, 4095, 4097, 4110, 4113, 4120, 4130, 4133, 4138, 4140, 4144, 4152, 4158, 4167, 4180, 4184, 4190, 4195, 4199, 4202, 4206, 4209, 4217, 4220, 4222, 4230, 4242, 4248, 4250, 4256, 4258, 4260, 4266, 4274, 4282, 4286, 4290, 4299, 4304, 4324, 4329, 4335, 4342, 4347, 4356, 4359, 4363, 4367, 4371, 4374, 4377, 4380, 4384, 4388, 4391, 4394, 4397, 4404, 4408, 4423, 4436, 4444, 4454, 4458, 4461, 4467, 4470, 4473, 4482, 4491, 4501, 4505, 4515, 4519, 4530, 4534, 4543, 4552, 4555, 4559, 4564, 4568, 4577, 4580, 4583, 4590, 4596, 4602, 4628, 4631, 4634, 4653, 4655, 4678, 4681, 4684, 4703, 4705, 4719, 4732, 4769, 4774, 4809, 4823, 4830, 4834, 4840, 4848, 4850, 4861, 4871, 4878, 4884, 4892, 4897, 4905, 4913, 4921, 4929, 4935, 4940, 4945, 4950, 4956, 4958, 4969, 4974, 4981, 4983, 4997, 5003, 5008, 5013, 5019, 5026, 5034, 5042, 5047, 5053, 5056, 5064, 5071, 5080, 5083, 5100, 5108, 5116, 5120, 5127, 5133, 5141, 5146, 5153, 5161, 5168, 5173, 5176, 5178, 5184, 5186, 5190, 5192, 5197, 5204, 5209, 5213, 5218, 5222, 5228, 5234, 5239, 5242, 5244, 5250, 5252, 5256, 5258, 5263, 5268, 5275, 5284, 5289, 5298, 5302, 5308, 5313, 5316, 5318, 5324, 5326, 5329, 5336, 5338, 5343, 5350, 5359, 5365, 5367, 5374, 5377, 5389, 5395, 5403, 5406, 5410, 5413, 5417, 5419, 5430, 5433, 5437, 5440, 5443, 5450, 5462, 5465, 5472, 5478, 5488, 5493, 5500, 5505, 5511, 5515, 5519, 5527, 5531, 5535, 5541, 5543, 5555, 5560, 5566, 5572, 5576, 5581, 5583, 5607, 5611, 5614, 5623, 5627, 5636, 5640, 5644, 5650, 5652, 5661, 5671, 5698, 5702, 5707, 5714, 5717, 5723, 5733, 5743, 5753, 5759, 5768, 5774, 5781, 5783, 5791, 5797, 5801, 5818, 5828, 5832, 5836, 5846, 5851, 5923, 5941, 5949, 5955, 5967, 5971, 5982, 5986, 5995, 6003, 6010, 6014, 6021, 6026, 6029, 6032, 6043, 6047, 6051, 6066, 6075, 6078, 6092, 6110, 6123, 6126, 6130, 6133, 6135, 6142, 6149, 6153, 6160, 6167, 6170, 6186, 6189, 6199, 6203, 6209, 6212, 6215, 6220, 6224, 6227, 6234, 6237, 6243, 6279, 6282, 6294, 6297, 6313, 6315, 6319, 6326, 6330, 6337, 6340, 6349, 6352, 6357, 6363, 6365, 6371, 6375, 6381, 6384, 6387, 6400, 6403, 6409, 6412, 6420, 6428, 6434, 6437, 6441, 6455, 6467, 6475, 6479, 6486, 6493, 6498, 6511, 6520, 6528, 6533, 6536, 6541, 6544, 6556, 6561, 6574, 6576, 6581, 6585, 6588, 6590, 6597, 6604, 6607, 6610, 6616, 6620, 6626, 6634, 6643, 6656, 6661, 6669, 6672, 6677, 6682, 6690, 6693, 6701, 6705, 6712, 6718, 6721, 6725, 6738, 6744, 6756, 6759, 6768, 6773, 6794, 6810, 6820, 6825, 6830, 6832, 6835, 6839, 6841, 6848, 6854, 6856, 6859, 6863, 6866, 6879, 6889, 6892, 6895, 6908, 6914, 6917, 6925, 6932, 6952, 6959, 6961, 6968, 6970, 6974, 6981, 6987, 6998, 7004, 7010, 7013, 7017, 7022, 7025, 7029, 7033, 7035, 7040, 7045, 7058, 7061, 7065, 7068, 7071, 7076, 7081, 7087, 7090, 7095, 7098, 7103, 7106, 7110, 7115, 7120, 7125, 7130, 7133, 7138, 7143, 7148, 7154, 7159, 7164, 7169, 7173, 7176, 7181, 7185, 7189, 7197, 7204, 7208, 7213, 7218, 7222, 7224, 7227, 7243, 7253, 7263, 7272, 7281, 7288, 7295, 7303, 7311, 7323, 7330, 7340, 7345, 7348, 7353, 7356, 7378, 7387, 7390, 7395, 7428, 7432, 7441, 7445, 7454, 7462, 7467, 7475, 7480, 7485, 7487, 7496, 7501, 7509, 7514, 7522, 7530, 7533, 7543, 7561, 7564, 7567, 7571, 7584, 7592, 7596, 7601, 7606, 7612, 7617, 7621, 7626, 7631, 7636, 7646, 7649, 7653, 7657, 7664, 7668, 7697, 7705, 7708, 7711, 7714, 7717, 7728, 7742, 7751, 7778, 7790, 7796, 7804, 7809, 7817, 7825, 7838, 7844, 7850, 7865, 7869, 7875, 7884, 7886, 7907, 7919, 7937, 7954, 7956, 7969, 7978, 7987, 7996, 8005] \ No newline at end of file +[4, 1, 895, 8072, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 1, 0, 5, 0, 840, 8, 0, 10, 0, 12, 0, 843, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 849, 8, 1, 1, 1, 3, 1, 852, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 861, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 905, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 924, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 935, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 951, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 956, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 968, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1003, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1013, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 1018, 8, 12, 1, 12, 1, 12, 5, 12, 1022, 8, 12, 10, 12, 12, 12, 1025, 9, 12, 1, 13, 1, 13, 3, 13, 1029, 8, 13, 1, 13, 1, 13, 3, 13, 1033, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1042, 8, 13, 1, 13, 3, 13, 1045, 8, 13, 1, 13, 3, 13, 1048, 8, 13, 1, 13, 1, 13, 3, 13, 1052, 8, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 1059, 8, 14, 1, 14, 3, 14, 1062, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1067, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 1073, 8, 14, 10, 14, 12, 14, 1076, 9, 14, 1, 14, 1, 14, 3, 14, 1080, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1085, 8, 14, 1, 14, 5, 14, 1088, 8, 14, 10, 14, 12, 14, 1091, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1102, 8, 15, 1, 15, 3, 15, 1105, 8, 15, 1, 15, 1, 15, 3, 15, 1109, 8, 15, 1, 15, 3, 15, 1112, 8, 15, 1, 15, 1, 15, 3, 15, 1116, 8, 15, 1, 15, 3, 15, 1119, 8, 15, 1, 15, 1, 15, 3, 15, 1123, 8, 15, 1, 15, 3, 15, 1126, 8, 15, 1, 15, 3, 15, 1129, 8, 15, 1, 15, 1, 15, 3, 15, 1133, 8, 15, 1, 15, 3, 15, 1136, 8, 15, 1, 15, 1, 15, 3, 15, 1140, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 1146, 8, 16, 1, 16, 1, 16, 3, 16, 1150, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1155, 8, 16, 1, 16, 1, 16, 5, 16, 1159, 8, 16, 10, 16, 12, 16, 1162, 9, 16, 1, 16, 1, 16, 5, 16, 1166, 8, 16, 10, 16, 12, 16, 1169, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 1175, 8, 17, 1, 17, 3, 17, 1178, 8, 17, 1, 17, 1, 17, 3, 17, 1182, 8, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1187, 8, 17, 1, 17, 1, 17, 5, 17, 1191, 8, 17, 10, 17, 12, 17, 1194, 9, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 1200, 8, 17, 10, 17, 12, 17, 1203, 9, 17, 1, 17, 1, 17, 3, 17, 1207, 8, 17, 1, 18, 1, 18, 3, 18, 1211, 8, 18, 1, 18, 1, 18, 3, 18, 1215, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 1226, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 1242, 8, 20, 10, 20, 12, 20, 1245, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 1251, 8, 21, 1, 21, 1, 21, 3, 21, 1255, 8, 21, 1, 21, 1, 21, 3, 21, 1259, 8, 21, 1, 21, 1, 21, 3, 21, 1263, 8, 21, 1, 21, 5, 21, 1266, 8, 21, 10, 21, 12, 21, 1269, 9, 21, 3, 21, 1271, 8, 21, 1, 21, 3, 21, 1274, 8, 21, 1, 21, 3, 21, 1277, 8, 21, 1, 21, 3, 21, 1280, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1286, 8, 21, 1, 21, 1, 21, 3, 21, 1290, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1300, 8, 21, 1, 21, 1, 21, 3, 21, 1304, 8, 21, 1, 21, 1, 21, 3, 21, 1308, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1314, 8, 21, 1, 21, 5, 21, 1317, 8, 21, 10, 21, 12, 21, 1320, 9, 21, 3, 21, 1322, 8, 21, 1, 21, 3, 21, 1325, 8, 21, 3, 21, 1327, 8, 21, 1, 22, 1, 22, 3, 22, 1331, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1338, 8, 22, 1, 22, 1, 22, 3, 22, 1342, 8, 22, 1, 22, 3, 22, 1345, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1350, 8, 22, 1, 22, 1, 22, 3, 22, 1354, 8, 22, 1, 22, 3, 22, 1357, 8, 22, 1, 22, 1, 22, 3, 22, 1361, 8, 22, 1, 22, 3, 22, 1364, 8, 22, 1, 23, 1, 23, 3, 23, 1368, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1381, 8, 23, 1, 23, 3, 23, 1384, 8, 23, 1, 23, 1, 23, 3, 23, 1388, 8, 23, 1, 23, 3, 23, 1391, 8, 23, 1, 23, 1, 23, 3, 23, 1395, 8, 23, 1, 23, 3, 23, 1398, 8, 23, 1, 23, 1, 23, 3, 23, 1402, 8, 23, 1, 23, 3, 23, 1405, 8, 23, 1, 23, 1, 23, 3, 23, 1409, 8, 23, 1, 23, 3, 23, 1412, 8, 23, 1, 23, 3, 23, 1415, 8, 23, 1, 23, 1, 23, 3, 23, 1419, 8, 23, 1, 23, 3, 23, 1422, 8, 23, 1, 23, 1, 23, 3, 23, 1426, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 1432, 8, 24, 1, 24, 3, 24, 1435, 8, 24, 1, 24, 1, 24, 3, 24, 1439, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1451, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 3, 25, 1457, 8, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1466, 8, 26, 10, 26, 12, 26, 1469, 9, 26, 1, 26, 1, 26, 3, 26, 1473, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1481, 8, 26, 1, 27, 1, 27, 3, 27, 1485, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1490, 8, 27, 1, 27, 3, 27, 1493, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1498, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1506, 8, 27, 10, 27, 12, 27, 1509, 9, 27, 1, 27, 1, 27, 3, 27, 1513, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1518, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1524, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1529, 8, 27, 1, 27, 1, 27, 3, 27, 1533, 8, 27, 3, 27, 1535, 8, 27, 1, 28, 3, 28, 1538, 8, 28, 1, 28, 1, 28, 3, 28, 1542, 8, 28, 1, 28, 1, 28, 3, 28, 1546, 8, 28, 1, 28, 3, 28, 1549, 8, 28, 1, 28, 1, 28, 3, 28, 1553, 8, 28, 1, 28, 1, 28, 3, 28, 1557, 8, 28, 1, 28, 1, 28, 3, 28, 1561, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1567, 8, 28, 1, 28, 3, 28, 1570, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 1577, 8, 29, 1, 30, 1, 30, 1, 30, 3, 30, 1582, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1588, 8, 31, 1, 32, 1, 32, 1, 32, 5, 32, 1593, 8, 32, 10, 32, 12, 32, 1596, 9, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1601, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1607, 8, 32, 10, 32, 12, 32, 1610, 9, 32, 3, 32, 1612, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1617, 8, 32, 10, 32, 12, 32, 1620, 9, 32, 3, 32, 1622, 8, 32, 3, 32, 1624, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1630, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1636, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1653, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1660, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 1667, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1679, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1684, 8, 38, 1, 38, 3, 38, 1687, 8, 38, 1, 39, 3, 39, 1690, 8, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1703, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1716, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1721, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1737, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 1743, 8, 43, 10, 43, 12, 43, 1746, 9, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1755, 8, 44, 1, 44, 3, 44, 1758, 8, 44, 1, 44, 1, 44, 5, 44, 1762, 8, 44, 10, 44, 12, 44, 1765, 9, 44, 1, 44, 1, 44, 3, 44, 1769, 8, 44, 1, 44, 3, 44, 1772, 8, 44, 1, 44, 1, 44, 5, 44, 1776, 8, 44, 10, 44, 12, 44, 1779, 9, 44, 1, 44, 3, 44, 1782, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1787, 8, 44, 1, 44, 1, 44, 5, 44, 1791, 8, 44, 10, 44, 12, 44, 1794, 9, 44, 1, 44, 3, 44, 1797, 8, 44, 1, 44, 1, 44, 3, 44, 1801, 8, 44, 1, 44, 3, 44, 1804, 8, 44, 1, 44, 3, 44, 1807, 8, 44, 1, 44, 1, 44, 5, 44, 1811, 8, 44, 10, 44, 12, 44, 1814, 9, 44, 1, 44, 3, 44, 1817, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1822, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1833, 8, 44, 1, 45, 3, 45, 1836, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1843, 8, 45, 1, 45, 3, 45, 1846, 8, 45, 1, 46, 1, 46, 3, 46, 1850, 8, 46, 1, 47, 1, 47, 5, 47, 1854, 8, 47, 10, 47, 12, 47, 1857, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1868, 8, 48, 1, 48, 3, 48, 1871, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1876, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1889, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1896, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1902, 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 1907, 8, 49, 1, 49, 1, 49, 3, 49, 1911, 8, 49, 1, 49, 3, 49, 1914, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1922, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1930, 8, 50, 3, 50, 1932, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1942, 8, 51, 1, 52, 1, 52, 3, 52, 1946, 8, 52, 1, 52, 3, 52, 1949, 8, 52, 1, 52, 1, 52, 3, 52, 1953, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1958, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1963, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1968, 8, 52, 1, 52, 1, 52, 3, 52, 1972, 8, 52, 1, 52, 1, 52, 3, 52, 1976, 8, 52, 1, 52, 1, 52, 3, 52, 1980, 8, 52, 1, 52, 1, 52, 3, 52, 1984, 8, 52, 1, 52, 1, 52, 3, 52, 1988, 8, 52, 1, 52, 1, 52, 3, 52, 1992, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1997, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2002, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2007, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2013, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2018, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2023, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2028, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2033, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2038, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2044, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2049, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2054, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2059, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2064, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2069, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2074, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2079, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2086, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2091, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2096, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2101, 8, 52, 1, 52, 1, 52, 3, 52, 2105, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2110, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2118, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2123, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2129, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 2141, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 2148, 8, 55, 3, 55, 2150, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2156, 8, 55, 10, 55, 12, 55, 2159, 9, 55, 1, 55, 1, 55, 3, 55, 2163, 8, 55, 1, 56, 3, 56, 2166, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2174, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2180, 8, 56, 1, 56, 1, 56, 3, 56, 2184, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2197, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2209, 8, 56, 3, 56, 2211, 8, 56, 1, 57, 3, 57, 2214, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2222, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2228, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2234, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2245, 8, 58, 10, 58, 12, 58, 2248, 9, 58, 1, 58, 1, 58, 5, 58, 2252, 8, 58, 10, 58, 12, 58, 2255, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2261, 8, 58, 10, 58, 12, 58, 2264, 9, 58, 1, 58, 1, 58, 3, 58, 2268, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2277, 8, 58, 10, 58, 12, 58, 2280, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2286, 8, 58, 10, 58, 12, 58, 2289, 9, 58, 1, 58, 1, 58, 3, 58, 2293, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2303, 8, 58, 10, 58, 12, 58, 2306, 9, 58, 1, 58, 1, 58, 5, 58, 2310, 8, 58, 10, 58, 12, 58, 2313, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2319, 8, 58, 10, 58, 12, 58, 2322, 9, 58, 1, 58, 1, 58, 3, 58, 2326, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2336, 8, 58, 10, 58, 12, 58, 2339, 9, 58, 1, 58, 1, 58, 5, 58, 2343, 8, 58, 10, 58, 12, 58, 2346, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2352, 8, 58, 10, 58, 12, 58, 2355, 9, 58, 1, 58, 1, 58, 3, 58, 2359, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2364, 8, 58, 10, 58, 12, 58, 2367, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2373, 8, 58, 10, 58, 12, 58, 2376, 9, 58, 1, 58, 1, 58, 3, 58, 2380, 8, 58, 3, 58, 2382, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 2387, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 4, 60, 2393, 8, 60, 11, 60, 12, 60, 2394, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 5, 61, 2402, 8, 61, 10, 61, 12, 61, 2405, 9, 61, 1, 62, 3, 62, 2408, 8, 62, 1, 62, 3, 62, 2411, 8, 62, 1, 62, 1, 62, 3, 62, 2415, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2420, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2426, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2432, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2437, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2442, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2447, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2452, 8, 62, 1, 62, 3, 62, 2455, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 2460, 8, 63, 1, 63, 4, 63, 2463, 8, 63, 11, 63, 12, 63, 2464, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2475, 8, 63, 1, 64, 1, 64, 3, 64, 2479, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2486, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2491, 8, 64, 1, 64, 3, 64, 2494, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2499, 8, 64, 1, 64, 3, 64, 2502, 8, 64, 1, 64, 1, 64, 3, 64, 2506, 8, 64, 1, 64, 1, 64, 3, 64, 2510, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 2516, 8, 65, 10, 65, 12, 65, 2519, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2537, 8, 67, 1, 67, 3, 67, 2540, 8, 67, 1, 67, 3, 67, 2543, 8, 67, 1, 67, 1, 67, 3, 67, 2547, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 2555, 8, 68, 10, 68, 12, 68, 2558, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 2568, 8, 69, 10, 69, 12, 69, 2571, 9, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2581, 8, 70, 10, 70, 12, 70, 2584, 9, 70, 3, 70, 2586, 8, 70, 1, 70, 1, 70, 5, 70, 2590, 8, 70, 10, 70, 12, 70, 2593, 9, 70, 3, 70, 2595, 8, 70, 1, 71, 1, 71, 3, 71, 2599, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2608, 8, 71, 1, 71, 3, 71, 2611, 8, 71, 1, 71, 3, 71, 2614, 8, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2619, 8, 71, 1, 71, 1, 71, 3, 71, 2623, 8, 71, 1, 71, 3, 71, 2626, 8, 71, 1, 71, 1, 71, 3, 71, 2630, 8, 71, 1, 71, 1, 71, 3, 71, 2634, 8, 71, 1, 71, 3, 71, 2637, 8, 71, 1, 71, 1, 71, 3, 71, 2641, 8, 71, 1, 71, 3, 71, 2644, 8, 71, 1, 71, 1, 71, 3, 71, 2648, 8, 71, 1, 71, 3, 71, 2651, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2657, 8, 72, 1, 72, 3, 72, 2660, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2665, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2673, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2679, 8, 72, 1, 72, 1, 72, 3, 72, 2683, 8, 72, 1, 73, 1, 73, 3, 73, 2687, 8, 73, 1, 73, 5, 73, 2690, 8, 73, 10, 73, 12, 73, 2693, 9, 73, 1, 73, 1, 73, 3, 73, 2697, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2704, 8, 73, 1, 73, 1, 73, 3, 73, 2708, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2717, 8, 73, 10, 73, 12, 73, 2720, 9, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2727, 8, 73, 1, 73, 3, 73, 2730, 8, 73, 1, 73, 1, 73, 5, 73, 2734, 8, 73, 10, 73, 12, 73, 2737, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2742, 8, 73, 1, 73, 3, 73, 2745, 8, 73, 1, 73, 1, 73, 5, 73, 2749, 8, 73, 10, 73, 12, 73, 2752, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2757, 8, 73, 3, 73, 2759, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2764, 8, 73, 1, 73, 1, 73, 5, 73, 2768, 8, 73, 10, 73, 12, 73, 2771, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2776, 8, 73, 3, 73, 2778, 8, 73, 1, 73, 1, 73, 3, 73, 2782, 8, 73, 1, 73, 3, 73, 2785, 8, 73, 1, 73, 3, 73, 2788, 8, 73, 1, 73, 1, 73, 5, 73, 2792, 8, 73, 10, 73, 12, 73, 2795, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2800, 8, 73, 3, 73, 2802, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2807, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2814, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2823, 8, 73, 1, 73, 3, 73, 2826, 8, 73, 1, 73, 1, 73, 3, 73, 2830, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2835, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2845, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2854, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2862, 8, 73, 1, 73, 3, 73, 2865, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2873, 8, 73, 1, 73, 3, 73, 2876, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2883, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2888, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2896, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2912, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2917, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2924, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2943, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2949, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 2957, 8, 74, 10, 74, 12, 74, 2960, 9, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2971, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2978, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2985, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 2998, 8, 74, 10, 74, 12, 74, 3001, 9, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3013, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3019, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3025, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3031, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3037, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3043, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3049, 8, 74, 1, 75, 1, 75, 1, 75, 3, 75, 3054, 8, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 3, 76, 3061, 8, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 3068, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 3075, 8, 77, 1, 77, 1, 77, 1, 77, 3, 77, 3080, 8, 77, 1, 77, 5, 77, 3083, 8, 77, 10, 77, 12, 77, 3086, 9, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 3094, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 3, 79, 3101, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 3, 80, 3108, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 3, 81, 3115, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 3124, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 3130, 8, 83, 1, 83, 1, 83, 3, 83, 3134, 8, 83, 1, 83, 1, 83, 3, 83, 3138, 8, 83, 1, 84, 1, 84, 3, 84, 3142, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 3148, 8, 84, 1, 84, 3, 84, 3151, 8, 84, 1, 85, 1, 85, 1, 85, 3, 85, 3156, 8, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 3, 86, 3163, 8, 86, 1, 86, 1, 86, 1, 86, 5, 86, 3168, 8, 86, 10, 86, 12, 86, 3171, 9, 86, 1, 86, 3, 86, 3174, 8, 86, 1, 87, 1, 87, 1, 87, 3, 87, 3179, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 3189, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 5, 88, 3195, 8, 88, 10, 88, 12, 88, 3198, 9, 88, 1, 88, 1, 88, 1, 88, 3, 88, 3203, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 5, 89, 3210, 8, 89, 10, 89, 12, 89, 3213, 9, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 3221, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 3230, 8, 92, 1, 92, 3, 92, 3233, 8, 92, 1, 93, 1, 93, 3, 93, 3237, 8, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 3246, 8, 95, 1, 96, 1, 96, 3, 96, 3250, 8, 96, 1, 96, 3, 96, 3253, 8, 96, 1, 96, 3, 96, 3256, 8, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 3262, 8, 96, 1, 96, 3, 96, 3265, 8, 96, 1, 96, 3, 96, 3268, 8, 96, 1, 96, 1, 96, 3, 96, 3272, 8, 96, 1, 96, 3, 96, 3275, 8, 96, 1, 96, 3, 96, 3278, 8, 96, 1, 96, 3, 96, 3281, 8, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 5, 96, 3290, 8, 96, 10, 96, 12, 96, 3293, 9, 96, 3, 96, 3295, 8, 96, 1, 97, 1, 97, 1, 97, 3, 97, 3300, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3306, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 3311, 8, 99, 1, 99, 4, 99, 3314, 8, 99, 11, 99, 12, 99, 3315, 1, 100, 3, 100, 3319, 8, 100, 1, 100, 1, 100, 3, 100, 3323, 8, 100, 1, 101, 1, 101, 1, 101, 3, 101, 3328, 8, 101, 1, 101, 3, 101, 3331, 8, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3336, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3346, 8, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3351, 8, 101, 1, 101, 1, 101, 4, 101, 3355, 8, 101, 11, 101, 12, 101, 3356, 3, 101, 3359, 8, 101, 1, 101, 1, 101, 4, 101, 3363, 8, 101, 11, 101, 12, 101, 3364, 3, 101, 3367, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3373, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 3379, 8, 101, 10, 101, 12, 101, 3382, 9, 101, 1, 101, 1, 101, 3, 101, 3386, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 3392, 8, 101, 10, 101, 12, 101, 3395, 9, 101, 3, 101, 3397, 8, 101, 1, 102, 1, 102, 1, 102, 3, 102, 3402, 8, 102, 1, 102, 3, 102, 3405, 8, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3410, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3418, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3424, 8, 102, 1, 102, 1, 102, 3, 102, 3428, 8, 102, 3, 102, 3430, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3436, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3442, 8, 102, 10, 102, 12, 102, 3445, 9, 102, 1, 102, 1, 102, 3, 102, 3449, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3455, 8, 102, 10, 102, 12, 102, 3458, 9, 102, 3, 102, 3460, 8, 102, 1, 103, 1, 103, 1, 103, 3, 103, 3465, 8, 103, 1, 103, 3, 103, 3468, 8, 103, 1, 103, 1, 103, 3, 103, 3472, 8, 103, 1, 103, 3, 103, 3475, 8, 103, 1, 103, 3, 103, 3478, 8, 103, 1, 104, 1, 104, 3, 104, 3482, 8, 104, 1, 104, 3, 104, 3485, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3493, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3499, 8, 104, 1, 104, 1, 104, 3, 104, 3503, 8, 104, 1, 105, 1, 105, 5, 105, 3507, 8, 105, 10, 105, 12, 105, 3510, 9, 105, 1, 105, 1, 105, 3, 105, 3514, 8, 105, 1, 105, 1, 105, 3, 105, 3518, 8, 105, 3, 105, 3520, 8, 105, 1, 105, 1, 105, 5, 105, 3524, 8, 105, 10, 105, 12, 105, 3527, 9, 105, 1, 105, 3, 105, 3530, 8, 105, 1, 105, 3, 105, 3533, 8, 105, 1, 105, 3, 105, 3536, 8, 105, 1, 105, 3, 105, 3539, 8, 105, 1, 105, 1, 105, 5, 105, 3543, 8, 105, 10, 105, 12, 105, 3546, 9, 105, 1, 105, 1, 105, 3, 105, 3550, 8, 105, 1, 105, 3, 105, 3553, 8, 105, 1, 105, 3, 105, 3556, 8, 105, 1, 105, 3, 105, 3559, 8, 105, 1, 105, 3, 105, 3562, 8, 105, 3, 105, 3564, 8, 105, 1, 106, 3, 106, 3567, 8, 106, 1, 106, 1, 106, 3, 106, 3571, 8, 106, 1, 106, 3, 106, 3574, 8, 106, 1, 106, 3, 106, 3577, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3585, 8, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3591, 8, 107, 1, 107, 5, 107, 3594, 8, 107, 10, 107, 12, 107, 3597, 9, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 3605, 8, 108, 1, 108, 5, 108, 3608, 8, 108, 10, 108, 12, 108, 3611, 9, 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3617, 8, 109, 1, 109, 3, 109, 3620, 8, 109, 1, 109, 3, 109, 3623, 8, 109, 1, 109, 1, 109, 3, 109, 3627, 8, 109, 1, 110, 1, 110, 3, 110, 3631, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 3637, 8, 111, 1, 111, 1, 111, 3, 111, 3641, 8, 111, 1, 112, 1, 112, 1, 112, 5, 112, 3646, 8, 112, 10, 112, 12, 112, 3649, 9, 112, 1, 112, 3, 112, 3652, 8, 112, 1, 112, 3, 112, 3655, 8, 112, 1, 112, 3, 112, 3658, 8, 112, 1, 113, 1, 113, 1, 113, 3, 113, 3663, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 3670, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 3678, 8, 115, 10, 115, 12, 115, 3681, 9, 115, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 3687, 8, 116, 10, 116, 12, 116, 3690, 9, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 3, 118, 3698, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 3706, 8, 119, 10, 119, 12, 119, 3709, 9, 119, 3, 119, 3711, 8, 119, 1, 119, 1, 119, 3, 119, 3715, 8, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3721, 8, 119, 1, 120, 1, 120, 3, 120, 3725, 8, 120, 1, 120, 3, 120, 3728, 8, 120, 1, 120, 3, 120, 3731, 8, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3736, 8, 120, 1, 120, 3, 120, 3739, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3746, 8, 120, 1, 120, 1, 120, 3, 120, 3750, 8, 120, 1, 120, 3, 120, 3753, 8, 120, 1, 120, 1, 120, 3, 120, 3757, 8, 120, 1, 121, 1, 121, 3, 121, 3761, 8, 121, 1, 121, 3, 121, 3764, 8, 121, 1, 121, 3, 121, 3767, 8, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3772, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3778, 8, 121, 5, 121, 3780, 8, 121, 10, 121, 12, 121, 3783, 9, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3792, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3798, 8, 121, 5, 121, 3800, 8, 121, 10, 121, 12, 121, 3803, 9, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3808, 8, 121, 1, 121, 1, 121, 3, 121, 3812, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3818, 8, 122, 1, 122, 3, 122, 3821, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3833, 8, 123, 1, 123, 1, 123, 3, 123, 3837, 8, 123, 1, 123, 1, 123, 3, 123, 3841, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3849, 8, 124, 1, 124, 1, 124, 3, 124, 3853, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 3865, 8, 126, 10, 126, 12, 126, 3868, 9, 126, 1, 127, 1, 127, 3, 127, 3872, 8, 127, 1, 127, 3, 127, 3875, 8, 127, 1, 127, 1, 127, 3, 127, 3879, 8, 127, 1, 127, 3, 127, 3882, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 5, 127, 3888, 8, 127, 10, 127, 12, 127, 3891, 9, 127, 1, 127, 1, 127, 3, 127, 3895, 8, 127, 1, 127, 3, 127, 3898, 8, 127, 1, 127, 3, 127, 3901, 8, 127, 1, 128, 1, 128, 3, 128, 3905, 8, 128, 1, 128, 3, 128, 3908, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 5, 128, 3915, 8, 128, 10, 128, 12, 128, 3918, 9, 128, 1, 128, 1, 128, 3, 128, 3922, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 5, 129, 3929, 8, 129, 10, 129, 12, 129, 3932, 9, 129, 1, 130, 1, 130, 3, 130, 3936, 8, 130, 1, 131, 1, 131, 1, 131, 5, 131, 3941, 8, 131, 10, 131, 12, 131, 3944, 9, 131, 1, 132, 1, 132, 5, 132, 3948, 8, 132, 10, 132, 12, 132, 3951, 9, 132, 1, 132, 1, 132, 1, 132, 5, 132, 3956, 8, 132, 10, 132, 12, 132, 3959, 9, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3964, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3972, 8, 133, 1, 133, 3, 133, 3975, 8, 133, 1, 133, 3, 133, 3978, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 3983, 8, 133, 10, 133, 12, 133, 3986, 9, 133, 3, 133, 3988, 8, 133, 1, 133, 3, 133, 3991, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3998, 8, 133, 1, 133, 3, 133, 4001, 8, 133, 1, 133, 1, 133, 3, 133, 4005, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 4011, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 4021, 8, 135, 1, 135, 1, 135, 3, 135, 4025, 8, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 4034, 8, 136, 1, 137, 3, 137, 4037, 8, 137, 1, 137, 1, 137, 3, 137, 4041, 8, 137, 1, 137, 1, 137, 5, 137, 4045, 8, 137, 10, 137, 12, 137, 4048, 9, 137, 1, 137, 1, 137, 1, 137, 5, 137, 4053, 8, 137, 10, 137, 12, 137, 4056, 9, 137, 1, 137, 1, 137, 3, 137, 4060, 8, 137, 1, 137, 1, 137, 3, 137, 4064, 8, 137, 1, 137, 1, 137, 5, 137, 4068, 8, 137, 10, 137, 12, 137, 4071, 9, 137, 1, 137, 1, 137, 1, 137, 3, 137, 4076, 8, 137, 1, 137, 3, 137, 4079, 8, 137, 3, 137, 4081, 8, 137, 1, 137, 1, 137, 3, 137, 4085, 8, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 4094, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 4104, 8, 139, 1, 140, 1, 140, 5, 140, 4108, 8, 140, 10, 140, 12, 140, 4111, 9, 140, 1, 140, 1, 140, 3, 140, 4115, 8, 140, 1, 140, 1, 140, 3, 140, 4119, 8, 140, 1, 140, 3, 140, 4122, 8, 140, 1, 140, 3, 140, 4125, 8, 140, 1, 140, 3, 140, 4128, 8, 140, 1, 140, 3, 140, 4131, 8, 140, 1, 140, 3, 140, 4134, 8, 140, 1, 140, 3, 140, 4137, 8, 140, 1, 141, 1, 141, 3, 141, 4141, 8, 141, 1, 141, 1, 141, 3, 141, 4145, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4153, 8, 142, 1, 142, 1, 142, 3, 142, 4157, 8, 142, 1, 142, 3, 142, 4160, 8, 142, 3, 142, 4162, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 4175, 8, 143, 1, 143, 3, 143, 4178, 8, 143, 1, 144, 1, 144, 1, 144, 5, 144, 4183, 8, 144, 10, 144, 12, 144, 4186, 9, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4195, 8, 145, 1, 145, 3, 145, 4198, 8, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4203, 8, 145, 3, 145, 4205, 8, 145, 1, 145, 1, 145, 3, 145, 4209, 8, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4217, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 4223, 8, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 4232, 8, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 4245, 8, 148, 1, 149, 1, 149, 3, 149, 4249, 8, 149, 1, 149, 1, 149, 5, 149, 4253, 8, 149, 10, 149, 12, 149, 4256, 9, 149, 1, 150, 1, 150, 3, 150, 4260, 8, 150, 1, 150, 1, 150, 3, 150, 4264, 8, 150, 1, 150, 3, 150, 4267, 8, 150, 1, 150, 1, 150, 3, 150, 4271, 8, 150, 1, 150, 3, 150, 4274, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 4282, 8, 150, 1, 150, 3, 150, 4285, 8, 150, 3, 150, 4287, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 4293, 8, 151, 10, 151, 12, 151, 4296, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 4307, 8, 151, 1, 151, 1, 151, 4, 151, 4311, 8, 151, 11, 151, 12, 151, 4312, 3, 151, 4315, 8, 151, 1, 151, 1, 151, 4, 151, 4319, 8, 151, 11, 151, 12, 151, 4320, 3, 151, 4323, 8, 151, 3, 151, 4325, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 4331, 8, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 4339, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 4347, 8, 153, 1, 154, 1, 154, 3, 154, 4351, 8, 154, 1, 154, 1, 154, 3, 154, 4355, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 4362, 8, 155, 10, 155, 12, 155, 4365, 9, 155, 1, 155, 1, 155, 3, 155, 4369, 8, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 4387, 8, 157, 10, 157, 12, 157, 4390, 9, 157, 1, 158, 1, 158, 3, 158, 4394, 8, 158, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 4400, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 4407, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 4412, 8, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 4419, 8, 161, 10, 161, 12, 161, 4422, 9, 161, 3, 161, 4424, 8, 161, 1, 162, 1, 162, 3, 162, 4428, 8, 162, 1, 163, 1, 163, 3, 163, 4432, 8, 163, 1, 163, 1, 163, 3, 163, 4436, 8, 163, 1, 163, 3, 163, 4439, 8, 163, 1, 163, 3, 163, 4442, 8, 163, 1, 163, 3, 163, 4445, 8, 163, 1, 164, 1, 164, 3, 164, 4449, 8, 164, 1, 164, 1, 164, 3, 164, 4453, 8, 164, 1, 164, 3, 164, 4456, 8, 164, 1, 164, 3, 164, 4459, 8, 164, 1, 164, 3, 164, 4462, 8, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 4469, 8, 166, 1, 166, 1, 166, 3, 166, 4473, 8, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 4486, 8, 168, 10, 168, 12, 168, 4489, 9, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 3, 171, 4501, 8, 171, 1, 171, 1, 171, 1, 171, 1, 171, 5, 171, 4507, 8, 171, 10, 171, 12, 171, 4510, 9, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4519, 8, 172, 1, 173, 1, 173, 3, 173, 4523, 8, 173, 1, 173, 3, 173, 4526, 8, 173, 1, 173, 1, 173, 1, 174, 1, 174, 3, 174, 4532, 8, 174, 1, 174, 3, 174, 4535, 8, 174, 1, 174, 3, 174, 4538, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4547, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 4556, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 5, 177, 4564, 8, 177, 10, 177, 12, 177, 4567, 9, 177, 1, 177, 3, 177, 4570, 8, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 5, 178, 4578, 8, 178, 10, 178, 12, 178, 4581, 9, 178, 1, 178, 3, 178, 4584, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 4593, 8, 179, 10, 179, 12, 179, 4596, 9, 179, 1, 179, 3, 179, 4599, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4608, 8, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 4615, 8, 181, 10, 181, 12, 181, 4618, 9, 181, 3, 181, 4620, 8, 181, 1, 181, 1, 181, 3, 181, 4624, 8, 181, 1, 181, 5, 181, 4627, 8, 181, 10, 181, 12, 181, 4630, 9, 181, 1, 181, 3, 181, 4633, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4640, 8, 182, 10, 182, 12, 182, 4643, 9, 182, 3, 182, 4645, 8, 182, 1, 182, 3, 182, 4648, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 4655, 8, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 4661, 8, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 4667, 8, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 4691, 8, 185, 10, 185, 12, 185, 4694, 9, 185, 3, 185, 4696, 8, 185, 1, 185, 3, 185, 4699, 8, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4718, 8, 189, 3, 189, 4720, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 4741, 8, 190, 10, 190, 12, 190, 4744, 9, 190, 3, 190, 4746, 8, 190, 1, 190, 3, 190, 4749, 8, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4768, 8, 194, 3, 194, 4770, 8, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 4782, 8, 196, 10, 196, 12, 196, 4785, 9, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 4795, 8, 196, 10, 196, 12, 196, 4798, 9, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 4832, 8, 196, 10, 196, 12, 196, 4835, 9, 196, 1, 196, 1, 196, 3, 196, 4839, 8, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4874, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 4888, 8, 200, 1, 201, 1, 201, 1, 201, 5, 201, 4893, 8, 201, 10, 201, 12, 201, 4896, 9, 201, 1, 201, 3, 201, 4899, 8, 201, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4905, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4913, 8, 203, 3, 203, 4915, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 4926, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 4936, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 4943, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 4949, 8, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 3, 211, 4957, 8, 211, 1, 212, 1, 212, 1, 212, 3, 212, 4962, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4968, 8, 212, 10, 212, 12, 212, 4971, 9, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4976, 8, 212, 10, 212, 12, 212, 4979, 9, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4984, 8, 212, 10, 212, 12, 212, 4987, 9, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4992, 8, 212, 10, 212, 12, 212, 4995, 9, 212, 1, 212, 5, 212, 4998, 8, 212, 10, 212, 12, 212, 5001, 9, 212, 1, 212, 1, 212, 3, 212, 5005, 8, 212, 1, 213, 1, 213, 1, 213, 3, 213, 5010, 8, 213, 1, 213, 4, 213, 5013, 8, 213, 11, 213, 12, 213, 5014, 1, 213, 1, 213, 4, 213, 5019, 8, 213, 11, 213, 12, 213, 5020, 3, 213, 5023, 8, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 4, 214, 5032, 8, 214, 11, 214, 12, 214, 5033, 1, 214, 5, 214, 5037, 8, 214, 10, 214, 12, 214, 5040, 9, 214, 1, 214, 1, 214, 4, 214, 5044, 8, 214, 11, 214, 12, 214, 5045, 3, 214, 5048, 8, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 3, 217, 5062, 8, 217, 1, 217, 1, 217, 4, 217, 5066, 8, 217, 11, 217, 12, 217, 5067, 1, 217, 1, 217, 1, 217, 3, 217, 5073, 8, 217, 1, 218, 1, 218, 1, 218, 3, 218, 5078, 8, 218, 1, 218, 1, 218, 4, 218, 5082, 8, 218, 11, 218, 12, 218, 5083, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5091, 8, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 3, 220, 5099, 8, 220, 1, 220, 1, 220, 1, 220, 1, 220, 4, 220, 5105, 8, 220, 11, 220, 12, 220, 5106, 1, 220, 1, 220, 1, 220, 3, 220, 5112, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5118, 8, 221, 1, 221, 3, 221, 5121, 8, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5129, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 5136, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5145, 8, 223, 1, 223, 3, 223, 5148, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5163, 8, 225, 10, 225, 12, 225, 5166, 9, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 3, 226, 5173, 8, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 3, 226, 5181, 8, 226, 1, 227, 1, 227, 3, 227, 5185, 8, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 3, 228, 5192, 8, 228, 1, 228, 1, 228, 4, 228, 5196, 8, 228, 11, 228, 12, 228, 5197, 1, 229, 1, 229, 1, 229, 1, 229, 4, 229, 5204, 8, 229, 11, 229, 12, 229, 5205, 1, 230, 1, 230, 1, 230, 3, 230, 5211, 8, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5216, 8, 230, 10, 230, 12, 230, 5219, 9, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5224, 8, 230, 10, 230, 12, 230, 5227, 9, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5233, 8, 230, 1, 230, 5, 230, 5236, 8, 230, 10, 230, 12, 230, 5239, 9, 230, 3, 230, 5241, 8, 230, 3, 230, 5243, 8, 230, 1, 230, 1, 230, 4, 230, 5247, 8, 230, 11, 230, 12, 230, 5248, 3, 230, 5251, 8, 230, 1, 230, 1, 230, 5, 230, 5255, 8, 230, 10, 230, 12, 230, 5258, 9, 230, 1, 230, 1, 230, 3, 230, 5262, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5269, 8, 230, 1, 231, 1, 231, 1, 231, 3, 231, 5274, 8, 231, 1, 231, 1, 231, 3, 231, 5278, 8, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5283, 8, 231, 5, 231, 5285, 8, 231, 10, 231, 12, 231, 5288, 9, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5293, 8, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5299, 8, 231, 1, 231, 5, 231, 5302, 8, 231, 10, 231, 12, 231, 5305, 9, 231, 3, 231, 5307, 8, 231, 3, 231, 5309, 8, 231, 1, 231, 1, 231, 4, 231, 5313, 8, 231, 11, 231, 12, 231, 5314, 3, 231, 5317, 8, 231, 1, 231, 1, 231, 5, 231, 5321, 8, 231, 10, 231, 12, 231, 5324, 9, 231, 1, 231, 1, 231, 3, 231, 5328, 8, 231, 1, 232, 1, 232, 1, 232, 3, 232, 5333, 8, 232, 1, 232, 1, 232, 1, 232, 5, 232, 5338, 8, 232, 10, 232, 12, 232, 5341, 9, 232, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5347, 8, 233, 10, 233, 12, 233, 5350, 9, 233, 1, 233, 1, 233, 3, 233, 5354, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5361, 8, 233, 10, 233, 12, 233, 5364, 9, 233, 1, 233, 3, 233, 5367, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5373, 8, 233, 1, 233, 5, 233, 5376, 8, 233, 10, 233, 12, 233, 5379, 9, 233, 3, 233, 5381, 8, 233, 3, 233, 5383, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5389, 8, 233, 10, 233, 12, 233, 5392, 9, 233, 3, 233, 5394, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5401, 8, 233, 3, 233, 5403, 8, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5408, 8, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5413, 8, 233, 10, 233, 12, 233, 5416, 9, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5422, 8, 233, 10, 233, 12, 233, 5425, 9, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5430, 8, 233, 3, 233, 5432, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5439, 8, 234, 1, 234, 3, 234, 5442, 8, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 5452, 8, 235, 10, 235, 12, 235, 5455, 9, 235, 1, 235, 1, 235, 1, 235, 3, 235, 5460, 8, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5468, 8, 236, 1, 236, 3, 236, 5471, 8, 236, 1, 236, 1, 236, 3, 236, 5475, 8, 236, 1, 236, 3, 236, 5478, 8, 236, 1, 236, 1, 236, 3, 236, 5482, 8, 236, 3, 236, 5484, 8, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 5495, 8, 237, 1, 237, 3, 237, 5498, 8, 237, 1, 237, 1, 237, 3, 237, 5502, 8, 237, 1, 237, 3, 237, 5505, 8, 237, 1, 237, 3, 237, 5508, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5515, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 5, 239, 5525, 8, 239, 10, 239, 12, 239, 5528, 9, 239, 3, 239, 5530, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5537, 8, 240, 1, 240, 1, 240, 5, 240, 5541, 8, 240, 10, 240, 12, 240, 5544, 9, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 5, 241, 5551, 8, 241, 10, 241, 12, 241, 5554, 9, 241, 1, 242, 1, 242, 3, 242, 5558, 8, 242, 1, 242, 1, 242, 1, 242, 5, 242, 5563, 8, 242, 10, 242, 12, 242, 5566, 9, 242, 1, 242, 1, 242, 3, 242, 5570, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5576, 8, 242, 1, 242, 1, 242, 3, 242, 5580, 8, 242, 1, 242, 1, 242, 3, 242, 5584, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5592, 8, 242, 1, 242, 1, 242, 3, 242, 5596, 8, 242, 1, 242, 1, 242, 3, 242, 5600, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5606, 8, 242, 3, 242, 5608, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5620, 8, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5625, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5631, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5637, 8, 245, 1, 245, 1, 245, 3, 245, 5641, 8, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5646, 8, 245, 3, 245, 5648, 8, 245, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5672, 8, 247, 4, 247, 5674, 8, 247, 11, 247, 12, 247, 5675, 1, 247, 3, 247, 5679, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5688, 8, 248, 1, 248, 1, 248, 3, 248, 5692, 8, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5701, 8, 248, 1, 248, 1, 248, 3, 248, 5705, 8, 248, 1, 248, 1, 248, 3, 248, 5709, 8, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5715, 8, 248, 3, 248, 5717, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5726, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5736, 8, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 3, 250, 5763, 8, 250, 1, 251, 1, 251, 3, 251, 5767, 8, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5772, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5779, 8, 252, 1, 252, 3, 252, 5782, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5788, 8, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 3, 253, 5798, 8, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254, 5808, 8, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5818, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5824, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5833, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5839, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5846, 8, 255, 3, 255, 5848, 8, 255, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 3, 257, 5856, 8, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 5862, 8, 257, 1, 257, 1, 257, 3, 257, 5866, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5883, 8, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 3, 260, 5893, 8, 260, 1, 261, 1, 261, 3, 261, 5897, 8, 261, 1, 261, 1, 261, 3, 261, 5901, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5911, 8, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5916, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5988, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 6006, 8, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 3, 264, 6014, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6020, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6032, 8, 264, 1, 264, 1, 264, 3, 264, 6036, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6047, 8, 264, 1, 264, 1, 264, 3, 264, 6051, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6060, 8, 264, 1, 265, 1, 265, 1, 265, 1, 265, 5, 265, 6066, 8, 265, 10, 265, 12, 265, 6069, 9, 265, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 6075, 8, 266, 1, 267, 1, 267, 3, 267, 6079, 8, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 6086, 8, 268, 1, 268, 1, 268, 1, 268, 3, 268, 6091, 8, 268, 1, 268, 3, 268, 6094, 8, 268, 1, 268, 3, 268, 6097, 8, 268, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 6108, 8, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 6115, 8, 271, 10, 271, 12, 271, 6118, 9, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 6124, 8, 271, 10, 271, 12, 271, 6127, 9, 271, 3, 271, 6129, 8, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 5, 273, 6141, 8, 273, 10, 273, 12, 273, 6144, 9, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6161, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6174, 8, 276, 1, 276, 3, 276, 6177, 8, 276, 1, 276, 1, 276, 3, 276, 6181, 8, 276, 1, 276, 3, 276, 6184, 8, 276, 3, 276, 6186, 8, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6193, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6200, 8, 277, 5, 277, 6202, 8, 277, 10, 277, 12, 277, 6205, 9, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6211, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6218, 8, 277, 1, 277, 3, 277, 6221, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 5, 277, 6235, 8, 277, 10, 277, 12, 277, 6238, 9, 277, 3, 277, 6240, 8, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6250, 8, 278, 1, 278, 1, 278, 3, 278, 6254, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6260, 8, 278, 1, 278, 3, 278, 6263, 8, 278, 1, 278, 3, 278, 6266, 8, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6271, 8, 278, 1, 278, 1, 278, 3, 278, 6275, 8, 278, 1, 278, 3, 278, 6278, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6285, 8, 278, 1, 278, 3, 278, 6288, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6294, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6330, 8, 278, 1, 278, 3, 278, 6333, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6345, 8, 278, 1, 278, 3, 278, 6348, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6364, 8, 278, 3, 278, 6366, 8, 278, 1, 278, 1, 278, 3, 278, 6370, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6377, 8, 278, 1, 278, 1, 278, 3, 278, 6381, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6388, 8, 278, 1, 278, 3, 278, 6391, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 5, 278, 6398, 8, 278, 10, 278, 12, 278, 6401, 9, 278, 3, 278, 6403, 8, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6408, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6414, 8, 278, 3, 278, 6416, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6422, 8, 278, 1, 278, 1, 278, 3, 278, 6426, 8, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6432, 8, 279, 1, 279, 3, 279, 6435, 8, 279, 1, 279, 3, 279, 6438, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 6451, 8, 280, 1, 280, 3, 280, 6454, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 6460, 8, 281, 1, 282, 3, 282, 6463, 8, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 6471, 8, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 6479, 8, 282, 1, 283, 1, 283, 1, 283, 1, 283, 3, 283, 6485, 8, 283, 1, 283, 3, 283, 6488, 8, 283, 1, 283, 1, 283, 3, 283, 6492, 8, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6506, 8, 284, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6516, 8, 286, 10, 286, 12, 286, 6519, 9, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 6526, 8, 286, 1, 286, 1, 286, 3, 286, 6530, 8, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 3, 287, 6537, 8, 287, 1, 287, 1, 287, 1, 287, 5, 287, 6542, 8, 287, 10, 287, 12, 287, 6545, 9, 287, 1, 288, 1, 288, 3, 288, 6549, 8, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 5, 289, 6560, 8, 289, 10, 289, 12, 289, 6563, 9, 289, 1, 290, 1, 290, 1, 290, 1, 290, 5, 290, 6569, 8, 290, 10, 290, 12, 290, 6572, 9, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 3, 291, 6579, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6584, 8, 292, 1, 292, 3, 292, 6587, 8, 292, 1, 293, 1, 293, 1, 293, 3, 293, 6592, 8, 293, 1, 293, 3, 293, 6595, 8, 293, 1, 294, 1, 294, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 3, 296, 6607, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6612, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6625, 8, 297, 3, 297, 6627, 8, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6632, 8, 297, 1, 297, 1, 297, 3, 297, 6636, 8, 297, 1, 297, 3, 297, 6639, 8, 297, 3, 297, 6641, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6648, 8, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 6655, 8, 299, 1, 299, 3, 299, 6658, 8, 299, 1, 299, 3, 299, 6661, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 6667, 8, 299, 1, 299, 1, 299, 3, 299, 6671, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 6677, 8, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 3, 301, 6685, 8, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6694, 8, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 3, 305, 6707, 8, 305, 1, 305, 1, 305, 1, 305, 3, 305, 6712, 8, 305, 1, 305, 1, 305, 1, 305, 1, 305, 5, 305, 6718, 8, 305, 10, 305, 12, 305, 6721, 9, 305, 3, 305, 6723, 8, 305, 1, 306, 1, 306, 1, 306, 3, 306, 6728, 8, 306, 1, 306, 1, 306, 1, 306, 3, 306, 6733, 8, 306, 1, 306, 1, 306, 1, 306, 1, 306, 5, 306, 6739, 8, 306, 10, 306, 12, 306, 6742, 9, 306, 3, 306, 6744, 8, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6752, 8, 307, 1, 308, 1, 308, 3, 308, 6756, 8, 308, 1, 308, 1, 308, 1, 308, 5, 308, 6761, 8, 308, 10, 308, 12, 308, 6764, 9, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6769, 8, 309, 1, 309, 3, 309, 6772, 8, 309, 1, 310, 1, 310, 3, 310, 6776, 8, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 5, 310, 6787, 8, 310, 10, 310, 12, 310, 6790, 9, 310, 1, 310, 1, 310, 1, 310, 3, 310, 6795, 8, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 5, 310, 6805, 8, 310, 10, 310, 12, 310, 6808, 9, 310, 3, 310, 6810, 8, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6819, 8, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6824, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 5, 320, 6843, 8, 320, 10, 320, 12, 320, 6846, 9, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 5, 325, 6859, 8, 325, 10, 325, 12, 325, 6862, 9, 325, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 5, 327, 6869, 8, 327, 10, 327, 12, 327, 6872, 9, 327, 1, 328, 1, 328, 3, 328, 6876, 8, 328, 1, 329, 1, 329, 1, 329, 3, 329, 6881, 8, 329, 3, 329, 6883, 8, 329, 1, 329, 3, 329, 6886, 8, 329, 1, 329, 1, 329, 3, 329, 6890, 8, 329, 3, 329, 6892, 8, 329, 1, 330, 1, 330, 1, 330, 5, 330, 6897, 8, 330, 10, 330, 12, 330, 6900, 9, 330, 1, 331, 1, 331, 1, 331, 3, 331, 6905, 8, 331, 3, 331, 6907, 8, 331, 1, 331, 3, 331, 6910, 8, 331, 1, 331, 1, 331, 3, 331, 6914, 8, 331, 1, 331, 3, 331, 6917, 8, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 5, 335, 6928, 8, 335, 10, 335, 12, 335, 6931, 9, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 6940, 8, 337, 1, 337, 3, 337, 6943, 8, 337, 1, 337, 3, 337, 6946, 8, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6959, 8, 340, 1, 341, 1, 341, 1, 342, 1, 342, 3, 342, 6965, 8, 342, 1, 342, 3, 342, 6968, 8, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 3, 344, 6976, 8, 344, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 3, 346, 6983, 8, 346, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 4, 348, 7001, 8, 348, 11, 348, 12, 348, 7002, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 3, 349, 7010, 8, 349, 3, 349, 7012, 8, 349, 1, 350, 1, 350, 1, 350, 4, 350, 7017, 8, 350, 11, 350, 12, 350, 7018, 3, 350, 7021, 8, 350, 1, 351, 1, 351, 3, 351, 7025, 8, 351, 1, 352, 1, 352, 1, 352, 5, 352, 7030, 8, 352, 10, 352, 12, 352, 7033, 9, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7038, 8, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7049, 8, 354, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7055, 8, 355, 1, 356, 1, 356, 1, 357, 1, 357, 3, 357, 7061, 8, 357, 1, 358, 3, 358, 7064, 8, 358, 1, 358, 1, 358, 3, 358, 7068, 8, 358, 1, 358, 4, 358, 7071, 8, 358, 11, 358, 12, 358, 7072, 1, 358, 3, 358, 7076, 8, 358, 1, 358, 1, 358, 3, 358, 7080, 8, 358, 1, 358, 1, 358, 3, 358, 7084, 8, 358, 3, 358, 7086, 8, 358, 1, 359, 1, 359, 1, 360, 3, 360, 7091, 8, 360, 1, 360, 1, 360, 1, 361, 3, 361, 7096, 8, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7109, 8, 362, 1, 362, 3, 362, 7112, 8, 362, 1, 363, 1, 363, 3, 363, 7116, 8, 363, 1, 363, 3, 363, 7119, 8, 363, 1, 363, 3, 363, 7122, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7127, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7132, 8, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7138, 8, 363, 1, 363, 3, 363, 7141, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7146, 8, 363, 1, 363, 3, 363, 7149, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7154, 8, 363, 1, 363, 3, 363, 7157, 8, 363, 1, 363, 1, 363, 3, 363, 7161, 8, 363, 1, 363, 5, 363, 7164, 8, 363, 10, 363, 12, 363, 7167, 9, 363, 1, 363, 1, 363, 3, 363, 7171, 8, 363, 1, 363, 5, 363, 7174, 8, 363, 10, 363, 12, 363, 7177, 9, 363, 1, 363, 1, 363, 3, 363, 7181, 8, 363, 1, 363, 3, 363, 7184, 8, 363, 1, 363, 5, 363, 7187, 8, 363, 10, 363, 12, 363, 7190, 9, 363, 1, 363, 1, 363, 3, 363, 7194, 8, 363, 1, 363, 5, 363, 7197, 8, 363, 10, 363, 12, 363, 7200, 9, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7205, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7210, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7215, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7220, 8, 363, 1, 363, 1, 363, 3, 363, 7224, 8, 363, 1, 363, 3, 363, 7227, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7232, 8, 363, 1, 363, 1, 363, 3, 363, 7236, 8, 363, 1, 363, 1, 363, 3, 363, 7240, 8, 363, 1, 364, 1, 364, 1, 364, 1, 364, 5, 364, 7246, 8, 364, 10, 364, 12, 364, 7249, 9, 364, 1, 364, 1, 364, 1, 365, 1, 365, 3, 365, 7255, 8, 365, 1, 365, 1, 365, 3, 365, 7259, 8, 365, 1, 365, 1, 365, 1, 365, 3, 365, 7264, 8, 365, 1, 365, 1, 365, 1, 365, 3, 365, 7269, 8, 365, 1, 365, 1, 365, 3, 365, 7273, 8, 365, 3, 365, 7275, 8, 365, 1, 365, 3, 365, 7278, 8, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 3, 368, 7294, 8, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 5, 369, 7302, 8, 369, 10, 369, 12, 369, 7305, 9, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 5, 370, 7312, 8, 370, 10, 370, 12, 370, 7315, 9, 370, 1, 371, 1, 371, 1, 371, 1, 371, 5, 371, 7321, 8, 371, 10, 371, 12, 371, 7324, 9, 371, 1, 372, 1, 372, 1, 372, 1, 372, 5, 372, 7330, 8, 372, 10, 372, 12, 372, 7333, 9, 372, 1, 372, 1, 372, 1, 373, 1, 373, 3, 373, 7339, 8, 373, 1, 374, 1, 374, 1, 374, 5, 374, 7344, 8, 374, 10, 374, 12, 374, 7347, 9, 374, 1, 375, 1, 375, 1, 375, 5, 375, 7352, 8, 375, 10, 375, 12, 375, 7355, 9, 375, 1, 376, 1, 376, 1, 376, 5, 376, 7360, 8, 376, 10, 376, 12, 376, 7363, 9, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 7374, 8, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 7381, 8, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 7391, 8, 377, 1, 378, 1, 378, 1, 378, 3, 378, 7396, 8, 378, 1, 378, 3, 378, 7399, 8, 378, 1, 378, 1, 378, 1, 378, 3, 378, 7404, 8, 378, 1, 378, 3, 378, 7407, 8, 378, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 3, 382, 7429, 8, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 3, 382, 7438, 8, 382, 1, 382, 3, 382, 7441, 8, 382, 1, 383, 1, 383, 1, 383, 3, 383, 7446, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 4, 383, 7477, 8, 383, 11, 383, 12, 383, 7478, 1, 383, 1, 383, 3, 383, 7483, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 4, 383, 7490, 8, 383, 11, 383, 12, 383, 7491, 1, 383, 1, 383, 3, 383, 7496, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7505, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7513, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7518, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7526, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7531, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7536, 8, 383, 3, 383, 7538, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7547, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7552, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7560, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7565, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7573, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7581, 8, 383, 1, 383, 3, 383, 7584, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7594, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7612, 8, 383, 1, 383, 3, 383, 7615, 8, 383, 1, 383, 3, 383, 7618, 8, 383, 1, 383, 1, 383, 3, 383, 7622, 8, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 5, 385, 7633, 8, 385, 10, 385, 12, 385, 7636, 9, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7643, 8, 385, 1, 386, 1, 386, 3, 386, 7647, 8, 386, 1, 387, 1, 387, 1, 387, 3, 387, 7652, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7657, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7663, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7668, 8, 387, 1, 387, 1, 387, 3, 387, 7672, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7677, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7682, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7687, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 5, 387, 7695, 8, 387, 10, 387, 12, 387, 7698, 9, 387, 3, 387, 7700, 8, 387, 1, 387, 1, 387, 3, 387, 7704, 8, 387, 1, 387, 1, 387, 3, 387, 7708, 8, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 7715, 8, 388, 1, 388, 1, 388, 3, 388, 7719, 8, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 7748, 8, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 3, 389, 7756, 8, 389, 1, 390, 3, 390, 7759, 8, 390, 1, 390, 3, 390, 7762, 8, 390, 1, 390, 3, 390, 7765, 8, 390, 1, 390, 3, 390, 7768, 8, 390, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 394, 1, 394, 3, 394, 7779, 8, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 3, 396, 7793, 8, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 5, 397, 7800, 8, 397, 10, 397, 12, 397, 7803, 9, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7829, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 5, 400, 7839, 8, 400, 10, 400, 12, 400, 7842, 9, 400, 1, 401, 1, 401, 1, 401, 3, 401, 7847, 8, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7855, 8, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7860, 8, 402, 1, 402, 1, 402, 1, 402, 1, 402, 5, 402, 7866, 8, 402, 10, 402, 12, 402, 7869, 9, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7876, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7889, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7895, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7901, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7916, 8, 403, 1, 403, 1, 403, 3, 403, 7920, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7926, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 5, 403, 7935, 8, 403, 10, 403, 12, 403, 7938, 9, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 5, 404, 7956, 8, 404, 10, 404, 12, 404, 7959, 9, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 4, 404, 7968, 8, 404, 11, 404, 12, 404, 7969, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 3, 404, 7988, 8, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 5, 404, 8005, 8, 404, 10, 404, 12, 404, 8008, 9, 404, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 3, 406, 8020, 8, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 8029, 8, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 3, 408, 8038, 8, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 8047, 8, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 3, 411, 8056, 8, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 0, 5, 214, 216, 804, 806, 808, 419, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 0, 160, 2, 0, 39, 39, 152, 152, 2, 0, 508, 508, 514, 514, 3, 0, 69, 69, 161, 161, 182, 182, 3, 0, 42, 42, 357, 357, 430, 430, 4, 0, 42, 42, 389, 389, 505, 505, 595, 595, 4, 0, 208, 208, 210, 210, 216, 216, 649, 649, 2, 0, 494, 494, 882, 882, 2, 0, 79, 79, 143, 143, 2, 0, 16, 16, 306, 306, 3, 0, 44, 44, 86, 86, 185, 185, 2, 0, 406, 406, 538, 538, 3, 0, 486, 486, 661, 661, 670, 670, 2, 0, 364, 364, 436, 436, 2, 0, 325, 325, 450, 450, 2, 0, 42, 42, 871, 872, 2, 0, 37, 37, 678, 678, 2, 0, 323, 323, 418, 418, 2, 0, 435, 435, 686, 686, 3, 0, 80, 80, 85, 85, 126, 126, 2, 0, 82, 82, 92, 92, 2, 0, 69, 69, 161, 161, 3, 0, 42, 42, 374, 374, 403, 403, 3, 0, 42, 42, 370, 370, 802, 802, 2, 0, 648, 648, 685, 685, 3, 0, 408, 408, 526, 526, 597, 597, 2, 0, 329, 329, 522, 522, 1, 0, 871, 872, 2, 0, 882, 882, 889, 889, 2, 0, 82, 82, 360, 360, 2, 0, 523, 523, 882, 882, 2, 0, 524, 524, 882, 882, 3, 0, 402, 402, 445, 445, 502, 502, 7, 0, 42, 42, 342, 342, 345, 345, 374, 374, 403, 403, 554, 554, 889, 889, 2, 0, 494, 494, 506, 506, 1, 0, 872, 873, 2, 0, 6, 6, 51, 51, 2, 0, 5, 5, 81, 81, 2, 0, 27, 27, 31, 31, 4, 0, 42, 42, 357, 357, 430, 430, 434, 434, 2, 0, 368, 368, 375, 375, 2, 0, 369, 369, 425, 425, 2, 0, 13, 13, 176, 176, 2, 0, 194, 194, 690, 690, 2, 0, 22, 22, 146, 146, 3, 0, 43, 43, 76, 76, 107, 107, 2, 0, 7, 7, 49, 49, 2, 0, 107, 107, 347, 347, 2, 0, 337, 337, 398, 398, 2, 0, 102, 102, 587, 587, 2, 0, 43, 43, 107, 107, 3, 0, 59, 59, 181, 181, 828, 828, 2, 0, 185, 185, 594, 594, 2, 0, 159, 159, 503, 503, 4, 0, 402, 402, 445, 445, 501, 501, 542, 542, 2, 0, 402, 402, 501, 501, 2, 0, 14, 14, 45, 45, 3, 0, 66, 66, 79, 79, 187, 187, 2, 0, 35, 35, 84, 84, 2, 0, 98, 98, 150, 150, 2, 0, 7, 7, 49, 50, 1, 0, 637, 638, 2, 0, 173, 173, 752, 752, 2, 0, 413, 413, 593, 593, 2, 0, 228, 228, 453, 453, 2, 0, 563, 563, 598, 598, 8, 0, 108, 108, 455, 455, 459, 460, 462, 462, 464, 464, 467, 476, 499, 499, 557, 557, 6, 0, 456, 458, 461, 461, 463, 463, 465, 465, 477, 477, 558, 558, 7, 0, 109, 109, 411, 411, 416, 416, 454, 454, 466, 466, 573, 573, 617, 617, 2, 0, 116, 116, 882, 882, 2, 0, 118, 119, 507, 507, 7, 0, 499, 499, 557, 557, 606, 609, 611, 611, 619, 619, 622, 628, 630, 632, 6, 0, 558, 558, 610, 610, 612, 612, 614, 616, 618, 618, 620, 620, 7, 0, 412, 412, 416, 416, 573, 573, 613, 613, 617, 617, 621, 621, 629, 629, 3, 0, 70, 70, 118, 119, 507, 507, 2, 0, 438, 438, 639, 639, 2, 0, 633, 633, 635, 635, 2, 0, 317, 317, 640, 640, 2, 0, 91, 91, 577, 577, 2, 0, 51, 51, 362, 362, 3, 0, 32, 32, 61, 61, 180, 180, 2, 0, 15, 15, 340, 340, 2, 0, 678, 678, 835, 835, 3, 0, 132, 132, 173, 173, 409, 409, 3, 0, 6, 6, 51, 51, 492, 492, 3, 0, 13, 13, 20, 20, 188, 188, 2, 0, 42, 42, 122, 122, 2, 0, 104, 104, 183, 183, 1, 0, 873, 874, 2, 0, 333, 333, 598, 598, 2, 0, 40, 40, 684, 684, 2, 0, 392, 392, 549, 549, 2, 0, 115, 115, 450, 450, 3, 0, 413, 413, 531, 531, 893, 894, 2, 0, 841, 841, 857, 857, 2, 0, 318, 318, 559, 559, 2, 0, 68, 68, 80, 80, 3, 0, 132, 132, 178, 178, 385, 385, 2, 0, 493, 493, 645, 645, 2, 0, 383, 383, 688, 688, 3, 0, 82, 82, 93, 93, 426, 426, 4, 0, 413, 413, 450, 450, 531, 532, 593, 593, 2, 0, 645, 645, 683, 683, 2, 0, 349, 349, 548, 548, 6, 0, 228, 228, 380, 380, 382, 382, 410, 410, 556, 556, 599, 599, 2, 0, 45, 46, 62, 62, 3, 0, 442, 442, 663, 663, 666, 666, 10, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 36, 36, 170, 170, 2, 0, 117, 117, 831, 831, 11, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 578, 578, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 870, 870, 891, 892, 1, 0, 892, 893, 2, 0, 348, 348, 797, 808, 3, 0, 871, 874, 883, 883, 885, 885, 2, 0, 63, 63, 179, 179, 2, 0, 116, 116, 886, 886, 5, 0, 26, 26, 224, 226, 233, 233, 235, 238, 498, 498, 2, 0, 26, 26, 224, 224, 2, 0, 26, 26, 224, 225, 1, 0, 198, 209, 3, 0, 184, 184, 197, 197, 596, 596, 2, 0, 213, 218, 403, 403, 6, 0, 219, 219, 230, 230, 232, 232, 234, 234, 241, 241, 321, 322, 4, 0, 220, 223, 228, 229, 231, 231, 319, 319, 2, 0, 155, 155, 239, 239, 2, 0, 442, 442, 813, 821, 2, 0, 228, 228, 498, 498, 5, 0, 202, 202, 208, 208, 219, 220, 222, 222, 442, 442, 1, 0, 216, 217, 2, 0, 184, 184, 596, 596, 2, 0, 202, 202, 208, 208, 2, 0, 189, 189, 682, 682, 2, 0, 287, 288, 294, 294, 3, 0, 152, 152, 285, 288, 303, 303, 1, 0, 297, 298, 3, 0, 18, 18, 96, 96, 177, 177, 2, 0, 224, 224, 228, 228, 2, 0, 219, 220, 222, 222, 3, 0, 14, 14, 45, 45, 830, 830, 3, 0, 258, 258, 270, 271, 281, 281, 3, 0, 259, 261, 277, 280, 282, 284, 2, 0, 267, 267, 269, 269, 2, 0, 265, 265, 268, 268, 2, 0, 263, 264, 274, 276, 2, 0, 134, 134, 587, 587, 2, 0, 405, 405, 539, 539, 2, 0, 512, 512, 529, 529, 2, 0, 114, 114, 860, 860, 3, 0, 63, 63, 179, 179, 674, 674, 2, 0, 139, 139, 151, 151, 3, 0, 7, 7, 309, 309, 602, 602, 3, 0, 114, 114, 853, 854, 860, 861, 1, 0, 850, 856, 2, 0, 228, 228, 756, 796, 1, 0, 809, 812, 5, 0, 717, 718, 734, 736, 743, 743, 749, 750, 752, 752, 1, 0, 696, 703, 3, 0, 219, 223, 236, 236, 239, 239, 75, 0, 12, 12, 15, 15, 19, 19, 30, 30, 36, 37, 42, 42, 48, 48, 55, 55, 57, 57, 59, 59, 74, 74, 95, 95, 117, 117, 122, 122, 125, 125, 131, 131, 160, 160, 170, 170, 241, 241, 255, 262, 266, 266, 270, 271, 277, 284, 304, 309, 311, 329, 331, 343, 345, 376, 378, 393, 395, 400, 402, 404, 406, 410, 413, 415, 417, 426, 428, 428, 430, 434, 436, 454, 456, 463, 465, 473, 475, 476, 478, 498, 500, 506, 508, 510, 512, 522, 525, 530, 533, 538, 540, 542, 544, 554, 556, 562, 565, 572, 575, 575, 577, 605, 633, 647, 649, 665, 667, 674, 676, 685, 687, 688, 690, 695, 704, 704, 706, 707, 709, 712, 714, 716, 719, 721, 726, 727, 729, 733, 737, 738, 740, 742, 744, 744, 746, 748, 751, 751, 753, 755, 802, 802, 822, 822, 825, 825, 832, 833, 838, 838, 24, 0, 39, 39, 98, 98, 150, 150, 152, 152, 219, 221, 223, 223, 253, 254, 262, 265, 267, 269, 272, 276, 296, 296, 435, 435, 686, 686, 696, 703, 746, 746, 813, 813, 816, 821, 823, 824, 826, 827, 829, 831, 834, 834, 836, 836, 840, 840, 856, 856, 9440, 0, 841, 1, 0, 0, 0, 2, 851, 1, 0, 0, 0, 4, 860, 1, 0, 0, 0, 6, 862, 1, 0, 0, 0, 8, 904, 1, 0, 0, 0, 10, 923, 1, 0, 0, 0, 12, 934, 1, 0, 0, 0, 14, 950, 1, 0, 0, 0, 16, 955, 1, 0, 0, 0, 18, 967, 1, 0, 0, 0, 20, 1002, 1, 0, 0, 0, 22, 1012, 1, 0, 0, 0, 24, 1014, 1, 0, 0, 0, 26, 1026, 1, 0, 0, 0, 28, 1056, 1, 0, 0, 0, 30, 1092, 1, 0, 0, 0, 32, 1143, 1, 0, 0, 0, 34, 1172, 1, 0, 0, 0, 36, 1208, 1, 0, 0, 0, 38, 1222, 1, 0, 0, 0, 40, 1229, 1, 0, 0, 0, 42, 1326, 1, 0, 0, 0, 44, 1328, 1, 0, 0, 0, 46, 1365, 1, 0, 0, 0, 48, 1429, 1, 0, 0, 0, 50, 1454, 1, 0, 0, 0, 52, 1460, 1, 0, 0, 0, 54, 1482, 1, 0, 0, 0, 56, 1569, 1, 0, 0, 0, 58, 1576, 1, 0, 0, 0, 60, 1578, 1, 0, 0, 0, 62, 1583, 1, 0, 0, 0, 64, 1623, 1, 0, 0, 0, 66, 1629, 1, 0, 0, 0, 68, 1631, 1, 0, 0, 0, 70, 1652, 1, 0, 0, 0, 72, 1659, 1, 0, 0, 0, 74, 1661, 1, 0, 0, 0, 76, 1686, 1, 0, 0, 0, 78, 1689, 1, 0, 0, 0, 80, 1694, 1, 0, 0, 0, 82, 1720, 1, 0, 0, 0, 84, 1736, 1, 0, 0, 0, 86, 1738, 1, 0, 0, 0, 88, 1832, 1, 0, 0, 0, 90, 1835, 1, 0, 0, 0, 92, 1847, 1, 0, 0, 0, 94, 1851, 1, 0, 0, 0, 96, 1901, 1, 0, 0, 0, 98, 1903, 1, 0, 0, 0, 100, 1931, 1, 0, 0, 0, 102, 1941, 1, 0, 0, 0, 104, 2128, 1, 0, 0, 0, 106, 2130, 1, 0, 0, 0, 108, 2132, 1, 0, 0, 0, 110, 2135, 1, 0, 0, 0, 112, 2210, 1, 0, 0, 0, 114, 2233, 1, 0, 0, 0, 116, 2381, 1, 0, 0, 0, 118, 2386, 1, 0, 0, 0, 120, 2388, 1, 0, 0, 0, 122, 2398, 1, 0, 0, 0, 124, 2454, 1, 0, 0, 0, 126, 2474, 1, 0, 0, 0, 128, 2476, 1, 0, 0, 0, 130, 2511, 1, 0, 0, 0, 132, 2520, 1, 0, 0, 0, 134, 2527, 1, 0, 0, 0, 136, 2550, 1, 0, 0, 0, 138, 2559, 1, 0, 0, 0, 140, 2574, 1, 0, 0, 0, 142, 2596, 1, 0, 0, 0, 144, 2652, 1, 0, 0, 0, 146, 2948, 1, 0, 0, 0, 148, 3048, 1, 0, 0, 0, 150, 3050, 1, 0, 0, 0, 152, 3057, 1, 0, 0, 0, 154, 3064, 1, 0, 0, 0, 156, 3087, 1, 0, 0, 0, 158, 3097, 1, 0, 0, 0, 160, 3104, 1, 0, 0, 0, 162, 3111, 1, 0, 0, 0, 164, 3118, 1, 0, 0, 0, 166, 3127, 1, 0, 0, 0, 168, 3139, 1, 0, 0, 0, 170, 3152, 1, 0, 0, 0, 172, 3159, 1, 0, 0, 0, 174, 3175, 1, 0, 0, 0, 176, 3202, 1, 0, 0, 0, 178, 3204, 1, 0, 0, 0, 180, 3214, 1, 0, 0, 0, 182, 3218, 1, 0, 0, 0, 184, 3224, 1, 0, 0, 0, 186, 3236, 1, 0, 0, 0, 188, 3238, 1, 0, 0, 0, 190, 3245, 1, 0, 0, 0, 192, 3247, 1, 0, 0, 0, 194, 3296, 1, 0, 0, 0, 196, 3305, 1, 0, 0, 0, 198, 3307, 1, 0, 0, 0, 200, 3318, 1, 0, 0, 0, 202, 3324, 1, 0, 0, 0, 204, 3398, 1, 0, 0, 0, 206, 3461, 1, 0, 0, 0, 208, 3479, 1, 0, 0, 0, 210, 3563, 1, 0, 0, 0, 212, 3566, 1, 0, 0, 0, 214, 3578, 1, 0, 0, 0, 216, 3598, 1, 0, 0, 0, 218, 3626, 1, 0, 0, 0, 220, 3630, 1, 0, 0, 0, 222, 3632, 1, 0, 0, 0, 224, 3642, 1, 0, 0, 0, 226, 3662, 1, 0, 0, 0, 228, 3669, 1, 0, 0, 0, 230, 3671, 1, 0, 0, 0, 232, 3682, 1, 0, 0, 0, 234, 3691, 1, 0, 0, 0, 236, 3697, 1, 0, 0, 0, 238, 3720, 1, 0, 0, 0, 240, 3722, 1, 0, 0, 0, 242, 3758, 1, 0, 0, 0, 244, 3813, 1, 0, 0, 0, 246, 3822, 1, 0, 0, 0, 248, 3842, 1, 0, 0, 0, 250, 3854, 1, 0, 0, 0, 252, 3858, 1, 0, 0, 0, 254, 3869, 1, 0, 0, 0, 256, 3902, 1, 0, 0, 0, 258, 3923, 1, 0, 0, 0, 260, 3933, 1, 0, 0, 0, 262, 3937, 1, 0, 0, 0, 264, 3963, 1, 0, 0, 0, 266, 4010, 1, 0, 0, 0, 268, 4012, 1, 0, 0, 0, 270, 4016, 1, 0, 0, 0, 272, 4033, 1, 0, 0, 0, 274, 4084, 1, 0, 0, 0, 276, 4093, 1, 0, 0, 0, 278, 4103, 1, 0, 0, 0, 280, 4105, 1, 0, 0, 0, 282, 4138, 1, 0, 0, 0, 284, 4146, 1, 0, 0, 0, 286, 4163, 1, 0, 0, 0, 288, 4179, 1, 0, 0, 0, 290, 4216, 1, 0, 0, 0, 292, 4222, 1, 0, 0, 0, 294, 4231, 1, 0, 0, 0, 296, 4244, 1, 0, 0, 0, 298, 4248, 1, 0, 0, 0, 300, 4286, 1, 0, 0, 0, 302, 4324, 1, 0, 0, 0, 304, 4338, 1, 0, 0, 0, 306, 4346, 1, 0, 0, 0, 308, 4350, 1, 0, 0, 0, 310, 4356, 1, 0, 0, 0, 312, 4370, 1, 0, 0, 0, 314, 4373, 1, 0, 0, 0, 316, 4391, 1, 0, 0, 0, 318, 4395, 1, 0, 0, 0, 320, 4411, 1, 0, 0, 0, 322, 4413, 1, 0, 0, 0, 324, 4425, 1, 0, 0, 0, 326, 4429, 1, 0, 0, 0, 328, 4446, 1, 0, 0, 0, 330, 4463, 1, 0, 0, 0, 332, 4466, 1, 0, 0, 0, 334, 4476, 1, 0, 0, 0, 336, 4480, 1, 0, 0, 0, 338, 4490, 1, 0, 0, 0, 340, 4493, 1, 0, 0, 0, 342, 4498, 1, 0, 0, 0, 344, 4518, 1, 0, 0, 0, 346, 4520, 1, 0, 0, 0, 348, 4537, 1, 0, 0, 0, 350, 4546, 1, 0, 0, 0, 352, 4555, 1, 0, 0, 0, 354, 4557, 1, 0, 0, 0, 356, 4571, 1, 0, 0, 0, 358, 4585, 1, 0, 0, 0, 360, 4600, 1, 0, 0, 0, 362, 4609, 1, 0, 0, 0, 364, 4634, 1, 0, 0, 0, 366, 4649, 1, 0, 0, 0, 368, 4668, 1, 0, 0, 0, 370, 4698, 1, 0, 0, 0, 372, 4700, 1, 0, 0, 0, 374, 4702, 1, 0, 0, 0, 376, 4704, 1, 0, 0, 0, 378, 4719, 1, 0, 0, 0, 380, 4748, 1, 0, 0, 0, 382, 4750, 1, 0, 0, 0, 384, 4752, 1, 0, 0, 0, 386, 4754, 1, 0, 0, 0, 388, 4769, 1, 0, 0, 0, 390, 4771, 1, 0, 0, 0, 392, 4838, 1, 0, 0, 0, 394, 4840, 1, 0, 0, 0, 396, 4846, 1, 0, 0, 0, 398, 4873, 1, 0, 0, 0, 400, 4887, 1, 0, 0, 0, 402, 4898, 1, 0, 0, 0, 404, 4900, 1, 0, 0, 0, 406, 4906, 1, 0, 0, 0, 408, 4916, 1, 0, 0, 0, 410, 4920, 1, 0, 0, 0, 412, 4927, 1, 0, 0, 0, 414, 4931, 1, 0, 0, 0, 416, 4937, 1, 0, 0, 0, 418, 4944, 1, 0, 0, 0, 420, 4950, 1, 0, 0, 0, 422, 4956, 1, 0, 0, 0, 424, 4961, 1, 0, 0, 0, 426, 5006, 1, 0, 0, 0, 428, 5027, 1, 0, 0, 0, 430, 5052, 1, 0, 0, 0, 432, 5055, 1, 0, 0, 0, 434, 5061, 1, 0, 0, 0, 436, 5077, 1, 0, 0, 0, 438, 5092, 1, 0, 0, 0, 440, 5098, 1, 0, 0, 0, 442, 5128, 1, 0, 0, 0, 444, 5130, 1, 0, 0, 0, 446, 5137, 1, 0, 0, 0, 448, 5149, 1, 0, 0, 0, 450, 5155, 1, 0, 0, 0, 452, 5180, 1, 0, 0, 0, 454, 5184, 1, 0, 0, 0, 456, 5188, 1, 0, 0, 0, 458, 5199, 1, 0, 0, 0, 460, 5207, 1, 0, 0, 0, 462, 5270, 1, 0, 0, 0, 464, 5329, 1, 0, 0, 0, 466, 5431, 1, 0, 0, 0, 468, 5441, 1, 0, 0, 0, 470, 5443, 1, 0, 0, 0, 472, 5461, 1, 0, 0, 0, 474, 5485, 1, 0, 0, 0, 476, 5509, 1, 0, 0, 0, 478, 5516, 1, 0, 0, 0, 480, 5536, 1, 0, 0, 0, 482, 5545, 1, 0, 0, 0, 484, 5607, 1, 0, 0, 0, 486, 5609, 1, 0, 0, 0, 488, 5613, 1, 0, 0, 0, 490, 5647, 1, 0, 0, 0, 492, 5649, 1, 0, 0, 0, 494, 5652, 1, 0, 0, 0, 496, 5716, 1, 0, 0, 0, 498, 5735, 1, 0, 0, 0, 500, 5762, 1, 0, 0, 0, 502, 5766, 1, 0, 0, 0, 504, 5787, 1, 0, 0, 0, 506, 5797, 1, 0, 0, 0, 508, 5807, 1, 0, 0, 0, 510, 5847, 1, 0, 0, 0, 512, 5849, 1, 0, 0, 0, 514, 5852, 1, 0, 0, 0, 516, 5882, 1, 0, 0, 0, 518, 5884, 1, 0, 0, 0, 520, 5887, 1, 0, 0, 0, 522, 5987, 1, 0, 0, 0, 524, 6005, 1, 0, 0, 0, 526, 6007, 1, 0, 0, 0, 528, 6059, 1, 0, 0, 0, 530, 6061, 1, 0, 0, 0, 532, 6070, 1, 0, 0, 0, 534, 6076, 1, 0, 0, 0, 536, 6083, 1, 0, 0, 0, 538, 6098, 1, 0, 0, 0, 540, 6107, 1, 0, 0, 0, 542, 6109, 1, 0, 0, 0, 544, 6130, 1, 0, 0, 0, 546, 6135, 1, 0, 0, 0, 548, 6145, 1, 0, 0, 0, 550, 6151, 1, 0, 0, 0, 552, 6185, 1, 0, 0, 0, 554, 6239, 1, 0, 0, 0, 556, 6425, 1, 0, 0, 0, 558, 6437, 1, 0, 0, 0, 560, 6453, 1, 0, 0, 0, 562, 6459, 1, 0, 0, 0, 564, 6478, 1, 0, 0, 0, 566, 6491, 1, 0, 0, 0, 568, 6505, 1, 0, 0, 0, 570, 6507, 1, 0, 0, 0, 572, 6510, 1, 0, 0, 0, 574, 6534, 1, 0, 0, 0, 576, 6546, 1, 0, 0, 0, 578, 6552, 1, 0, 0, 0, 580, 6564, 1, 0, 0, 0, 582, 6578, 1, 0, 0, 0, 584, 6580, 1, 0, 0, 0, 586, 6588, 1, 0, 0, 0, 588, 6596, 1, 0, 0, 0, 590, 6598, 1, 0, 0, 0, 592, 6600, 1, 0, 0, 0, 594, 6640, 1, 0, 0, 0, 596, 6647, 1, 0, 0, 0, 598, 6649, 1, 0, 0, 0, 600, 6672, 1, 0, 0, 0, 602, 6678, 1, 0, 0, 0, 604, 6688, 1, 0, 0, 0, 606, 6697, 1, 0, 0, 0, 608, 6700, 1, 0, 0, 0, 610, 6703, 1, 0, 0, 0, 612, 6724, 1, 0, 0, 0, 614, 6745, 1, 0, 0, 0, 616, 6753, 1, 0, 0, 0, 618, 6765, 1, 0, 0, 0, 620, 6773, 1, 0, 0, 0, 622, 6811, 1, 0, 0, 0, 624, 6823, 1, 0, 0, 0, 626, 6825, 1, 0, 0, 0, 628, 6827, 1, 0, 0, 0, 630, 6829, 1, 0, 0, 0, 632, 6831, 1, 0, 0, 0, 634, 6833, 1, 0, 0, 0, 636, 6835, 1, 0, 0, 0, 638, 6837, 1, 0, 0, 0, 640, 6839, 1, 0, 0, 0, 642, 6847, 1, 0, 0, 0, 644, 6849, 1, 0, 0, 0, 646, 6851, 1, 0, 0, 0, 648, 6853, 1, 0, 0, 0, 650, 6855, 1, 0, 0, 0, 652, 6863, 1, 0, 0, 0, 654, 6865, 1, 0, 0, 0, 656, 6875, 1, 0, 0, 0, 658, 6891, 1, 0, 0, 0, 660, 6893, 1, 0, 0, 0, 662, 6916, 1, 0, 0, 0, 664, 6918, 1, 0, 0, 0, 666, 6920, 1, 0, 0, 0, 668, 6922, 1, 0, 0, 0, 670, 6924, 1, 0, 0, 0, 672, 6932, 1, 0, 0, 0, 674, 6942, 1, 0, 0, 0, 676, 6947, 1, 0, 0, 0, 678, 6951, 1, 0, 0, 0, 680, 6958, 1, 0, 0, 0, 682, 6960, 1, 0, 0, 0, 684, 6967, 1, 0, 0, 0, 686, 6969, 1, 0, 0, 0, 688, 6975, 1, 0, 0, 0, 690, 6977, 1, 0, 0, 0, 692, 6982, 1, 0, 0, 0, 694, 6984, 1, 0, 0, 0, 696, 6986, 1, 0, 0, 0, 698, 7004, 1, 0, 0, 0, 700, 7020, 1, 0, 0, 0, 702, 7022, 1, 0, 0, 0, 704, 7026, 1, 0, 0, 0, 706, 7037, 1, 0, 0, 0, 708, 7048, 1, 0, 0, 0, 710, 7054, 1, 0, 0, 0, 712, 7056, 1, 0, 0, 0, 714, 7060, 1, 0, 0, 0, 716, 7085, 1, 0, 0, 0, 718, 7087, 1, 0, 0, 0, 720, 7090, 1, 0, 0, 0, 722, 7095, 1, 0, 0, 0, 724, 7111, 1, 0, 0, 0, 726, 7239, 1, 0, 0, 0, 728, 7241, 1, 0, 0, 0, 730, 7274, 1, 0, 0, 0, 732, 7279, 1, 0, 0, 0, 734, 7283, 1, 0, 0, 0, 736, 7289, 1, 0, 0, 0, 738, 7297, 1, 0, 0, 0, 740, 7308, 1, 0, 0, 0, 742, 7316, 1, 0, 0, 0, 744, 7325, 1, 0, 0, 0, 746, 7338, 1, 0, 0, 0, 748, 7340, 1, 0, 0, 0, 750, 7348, 1, 0, 0, 0, 752, 7356, 1, 0, 0, 0, 754, 7390, 1, 0, 0, 0, 756, 7406, 1, 0, 0, 0, 758, 7408, 1, 0, 0, 0, 760, 7411, 1, 0, 0, 0, 762, 7415, 1, 0, 0, 0, 764, 7440, 1, 0, 0, 0, 766, 7621, 1, 0, 0, 0, 768, 7623, 1, 0, 0, 0, 770, 7642, 1, 0, 0, 0, 772, 7644, 1, 0, 0, 0, 774, 7707, 1, 0, 0, 0, 776, 7747, 1, 0, 0, 0, 778, 7749, 1, 0, 0, 0, 780, 7758, 1, 0, 0, 0, 782, 7769, 1, 0, 0, 0, 784, 7771, 1, 0, 0, 0, 786, 7774, 1, 0, 0, 0, 788, 7778, 1, 0, 0, 0, 790, 7780, 1, 0, 0, 0, 792, 7792, 1, 0, 0, 0, 794, 7794, 1, 0, 0, 0, 796, 7828, 1, 0, 0, 0, 798, 7830, 1, 0, 0, 0, 800, 7835, 1, 0, 0, 0, 802, 7846, 1, 0, 0, 0, 804, 7859, 1, 0, 0, 0, 806, 7870, 1, 0, 0, 0, 808, 7987, 1, 0, 0, 0, 810, 8009, 1, 0, 0, 0, 812, 8019, 1, 0, 0, 0, 814, 8028, 1, 0, 0, 0, 816, 8037, 1, 0, 0, 0, 818, 8046, 1, 0, 0, 0, 820, 8048, 1, 0, 0, 0, 822, 8055, 1, 0, 0, 0, 824, 8057, 1, 0, 0, 0, 826, 8059, 1, 0, 0, 0, 828, 8061, 1, 0, 0, 0, 830, 8063, 1, 0, 0, 0, 832, 8065, 1, 0, 0, 0, 834, 8067, 1, 0, 0, 0, 836, 8069, 1, 0, 0, 0, 838, 840, 3, 2, 1, 0, 839, 838, 1, 0, 0, 0, 840, 843, 1, 0, 0, 0, 841, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 844, 1, 0, 0, 0, 843, 841, 1, 0, 0, 0, 844, 845, 5, 0, 0, 1, 845, 1, 1, 0, 0, 0, 846, 848, 3, 4, 2, 0, 847, 849, 5, 869, 0, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 852, 3, 6, 3, 0, 851, 846, 1, 0, 0, 0, 851, 850, 1, 0, 0, 0, 852, 3, 1, 0, 0, 0, 853, 861, 3, 8, 4, 0, 854, 861, 3, 10, 5, 0, 855, 861, 3, 12, 6, 0, 856, 861, 3, 14, 7, 0, 857, 861, 3, 16, 8, 0, 858, 861, 3, 20, 10, 0, 859, 861, 3, 22, 11, 0, 860, 853, 1, 0, 0, 0, 860, 854, 1, 0, 0, 0, 860, 855, 1, 0, 0, 0, 860, 856, 1, 0, 0, 0, 860, 857, 1, 0, 0, 0, 860, 858, 1, 0, 0, 0, 860, 859, 1, 0, 0, 0, 861, 5, 1, 0, 0, 0, 862, 863, 5, 869, 0, 0, 863, 7, 1, 0, 0, 0, 864, 905, 3, 24, 12, 0, 865, 905, 3, 26, 13, 0, 866, 905, 3, 28, 14, 0, 867, 905, 3, 30, 15, 0, 868, 905, 3, 32, 16, 0, 869, 905, 3, 34, 17, 0, 870, 905, 3, 36, 18, 0, 871, 905, 3, 40, 20, 0, 872, 905, 3, 42, 21, 0, 873, 905, 3, 44, 22, 0, 874, 905, 3, 46, 23, 0, 875, 905, 3, 48, 24, 0, 876, 905, 3, 54, 27, 0, 877, 905, 3, 38, 19, 0, 878, 905, 3, 126, 63, 0, 879, 905, 3, 128, 64, 0, 880, 905, 3, 130, 65, 0, 881, 905, 3, 132, 66, 0, 882, 905, 3, 134, 67, 0, 883, 905, 3, 136, 68, 0, 884, 905, 3, 138, 69, 0, 885, 905, 3, 140, 70, 0, 886, 905, 3, 142, 71, 0, 887, 905, 3, 144, 72, 0, 888, 905, 3, 150, 75, 0, 889, 905, 3, 152, 76, 0, 890, 905, 3, 154, 77, 0, 891, 905, 3, 156, 78, 0, 892, 905, 3, 158, 79, 0, 893, 905, 3, 160, 80, 0, 894, 905, 3, 162, 81, 0, 895, 905, 3, 164, 82, 0, 896, 905, 3, 166, 83, 0, 897, 905, 3, 168, 84, 0, 898, 905, 3, 170, 85, 0, 899, 905, 3, 172, 86, 0, 900, 905, 3, 174, 87, 0, 901, 905, 3, 176, 88, 0, 902, 905, 3, 178, 89, 0, 903, 905, 3, 182, 91, 0, 904, 864, 1, 0, 0, 0, 904, 865, 1, 0, 0, 0, 904, 866, 1, 0, 0, 0, 904, 867, 1, 0, 0, 0, 904, 868, 1, 0, 0, 0, 904, 869, 1, 0, 0, 0, 904, 870, 1, 0, 0, 0, 904, 871, 1, 0, 0, 0, 904, 872, 1, 0, 0, 0, 904, 873, 1, 0, 0, 0, 904, 874, 1, 0, 0, 0, 904, 875, 1, 0, 0, 0, 904, 876, 1, 0, 0, 0, 904, 877, 1, 0, 0, 0, 904, 878, 1, 0, 0, 0, 904, 879, 1, 0, 0, 0, 904, 880, 1, 0, 0, 0, 904, 881, 1, 0, 0, 0, 904, 882, 1, 0, 0, 0, 904, 883, 1, 0, 0, 0, 904, 884, 1, 0, 0, 0, 904, 885, 1, 0, 0, 0, 904, 886, 1, 0, 0, 0, 904, 887, 1, 0, 0, 0, 904, 888, 1, 0, 0, 0, 904, 889, 1, 0, 0, 0, 904, 890, 1, 0, 0, 0, 904, 891, 1, 0, 0, 0, 904, 892, 1, 0, 0, 0, 904, 893, 1, 0, 0, 0, 904, 894, 1, 0, 0, 0, 904, 895, 1, 0, 0, 0, 904, 896, 1, 0, 0, 0, 904, 897, 1, 0, 0, 0, 904, 898, 1, 0, 0, 0, 904, 899, 1, 0, 0, 0, 904, 900, 1, 0, 0, 0, 904, 901, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 903, 1, 0, 0, 0, 905, 9, 1, 0, 0, 0, 906, 924, 3, 210, 105, 0, 907, 924, 3, 212, 106, 0, 908, 924, 3, 192, 96, 0, 909, 924, 3, 220, 110, 0, 910, 924, 3, 186, 93, 0, 911, 924, 3, 208, 104, 0, 912, 924, 3, 184, 92, 0, 913, 924, 3, 198, 99, 0, 914, 924, 3, 202, 101, 0, 915, 924, 3, 204, 102, 0, 916, 924, 3, 206, 103, 0, 917, 924, 3, 188, 94, 0, 918, 924, 3, 190, 95, 0, 919, 924, 3, 252, 126, 0, 920, 924, 3, 222, 111, 0, 921, 924, 3, 616, 308, 0, 922, 924, 3, 618, 309, 0, 923, 906, 1, 0, 0, 0, 923, 907, 1, 0, 0, 0, 923, 908, 1, 0, 0, 0, 923, 909, 1, 0, 0, 0, 923, 910, 1, 0, 0, 0, 923, 911, 1, 0, 0, 0, 923, 912, 1, 0, 0, 0, 923, 913, 1, 0, 0, 0, 923, 914, 1, 0, 0, 0, 923, 915, 1, 0, 0, 0, 923, 916, 1, 0, 0, 0, 923, 917, 1, 0, 0, 0, 923, 918, 1, 0, 0, 0, 923, 919, 1, 0, 0, 0, 923, 920, 1, 0, 0, 0, 923, 921, 1, 0, 0, 0, 923, 922, 1, 0, 0, 0, 924, 11, 1, 0, 0, 0, 925, 935, 3, 322, 161, 0, 926, 935, 3, 324, 162, 0, 927, 935, 3, 326, 163, 0, 928, 935, 3, 328, 164, 0, 929, 935, 3, 330, 165, 0, 930, 935, 3, 332, 166, 0, 931, 935, 3, 334, 167, 0, 932, 935, 3, 336, 168, 0, 933, 935, 3, 338, 169, 0, 934, 925, 1, 0, 0, 0, 934, 926, 1, 0, 0, 0, 934, 927, 1, 0, 0, 0, 934, 928, 1, 0, 0, 0, 934, 929, 1, 0, 0, 0, 934, 930, 1, 0, 0, 0, 934, 931, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 934, 933, 1, 0, 0, 0, 935, 13, 1, 0, 0, 0, 936, 951, 3, 354, 177, 0, 937, 951, 3, 356, 178, 0, 938, 951, 3, 358, 179, 0, 939, 951, 3, 360, 180, 0, 940, 951, 3, 362, 181, 0, 941, 951, 3, 364, 182, 0, 942, 951, 3, 366, 183, 0, 943, 951, 3, 368, 184, 0, 944, 951, 3, 404, 202, 0, 945, 951, 3, 406, 203, 0, 946, 951, 3, 408, 204, 0, 947, 951, 3, 410, 205, 0, 948, 951, 3, 412, 206, 0, 949, 951, 3, 414, 207, 0, 950, 936, 1, 0, 0, 0, 950, 937, 1, 0, 0, 0, 950, 938, 1, 0, 0, 0, 950, 939, 1, 0, 0, 0, 950, 940, 1, 0, 0, 0, 950, 941, 1, 0, 0, 0, 950, 942, 1, 0, 0, 0, 950, 943, 1, 0, 0, 0, 950, 944, 1, 0, 0, 0, 950, 945, 1, 0, 0, 0, 950, 946, 1, 0, 0, 0, 950, 947, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 949, 1, 0, 0, 0, 951, 15, 1, 0, 0, 0, 952, 956, 3, 416, 208, 0, 953, 956, 3, 418, 209, 0, 954, 956, 3, 420, 210, 0, 955, 952, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 954, 1, 0, 0, 0, 956, 17, 1, 0, 0, 0, 957, 968, 3, 424, 212, 0, 958, 968, 3, 426, 213, 0, 959, 968, 3, 428, 214, 0, 960, 968, 3, 432, 216, 0, 961, 968, 3, 434, 217, 0, 962, 968, 3, 436, 218, 0, 963, 968, 3, 440, 220, 0, 964, 968, 3, 430, 215, 0, 965, 968, 3, 438, 219, 0, 966, 968, 3, 442, 221, 0, 967, 957, 1, 0, 0, 0, 967, 958, 1, 0, 0, 0, 967, 959, 1, 0, 0, 0, 967, 960, 1, 0, 0, 0, 967, 961, 1, 0, 0, 0, 967, 962, 1, 0, 0, 0, 967, 963, 1, 0, 0, 0, 967, 964, 1, 0, 0, 0, 967, 965, 1, 0, 0, 0, 967, 966, 1, 0, 0, 0, 968, 19, 1, 0, 0, 0, 969, 1003, 3, 460, 230, 0, 970, 1003, 3, 462, 231, 0, 971, 1003, 3, 464, 232, 0, 972, 1003, 3, 466, 233, 0, 973, 1003, 3, 470, 235, 0, 974, 1003, 3, 482, 241, 0, 975, 1003, 3, 484, 242, 0, 976, 1003, 3, 472, 236, 0, 977, 1003, 3, 474, 237, 0, 978, 1003, 3, 476, 238, 0, 979, 1003, 3, 478, 239, 0, 980, 1003, 3, 528, 264, 0, 981, 1003, 3, 530, 265, 0, 982, 1003, 3, 532, 266, 0, 983, 1003, 3, 534, 267, 0, 984, 1003, 3, 536, 268, 0, 985, 1003, 3, 542, 271, 0, 986, 1003, 3, 546, 273, 0, 987, 1003, 3, 548, 274, 0, 988, 1003, 3, 550, 275, 0, 989, 1003, 3, 552, 276, 0, 990, 1003, 3, 554, 277, 0, 991, 1003, 3, 556, 278, 0, 992, 1003, 3, 570, 285, 0, 993, 1003, 3, 572, 286, 0, 994, 1003, 3, 574, 287, 0, 995, 1003, 3, 576, 288, 0, 996, 1003, 3, 578, 289, 0, 997, 1003, 3, 580, 290, 0, 998, 1003, 3, 584, 292, 0, 999, 1003, 3, 586, 293, 0, 1000, 1003, 3, 588, 294, 0, 1001, 1003, 3, 590, 295, 0, 1002, 969, 1, 0, 0, 0, 1002, 970, 1, 0, 0, 0, 1002, 971, 1, 0, 0, 0, 1002, 972, 1, 0, 0, 0, 1002, 973, 1, 0, 0, 0, 1002, 974, 1, 0, 0, 0, 1002, 975, 1, 0, 0, 0, 1002, 976, 1, 0, 0, 0, 1002, 977, 1, 0, 0, 0, 1002, 978, 1, 0, 0, 0, 1002, 979, 1, 0, 0, 0, 1002, 980, 1, 0, 0, 0, 1002, 981, 1, 0, 0, 0, 1002, 982, 1, 0, 0, 0, 1002, 983, 1, 0, 0, 0, 1002, 984, 1, 0, 0, 0, 1002, 985, 1, 0, 0, 0, 1002, 986, 1, 0, 0, 0, 1002, 987, 1, 0, 0, 0, 1002, 988, 1, 0, 0, 0, 1002, 989, 1, 0, 0, 0, 1002, 990, 1, 0, 0, 0, 1002, 991, 1, 0, 0, 0, 1002, 992, 1, 0, 0, 0, 1002, 993, 1, 0, 0, 0, 1002, 994, 1, 0, 0, 0, 1002, 995, 1, 0, 0, 0, 1002, 996, 1, 0, 0, 0, 1002, 997, 1, 0, 0, 0, 1002, 998, 1, 0, 0, 0, 1002, 999, 1, 0, 0, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1001, 1, 0, 0, 0, 1003, 21, 1, 0, 0, 0, 1004, 1013, 3, 602, 301, 0, 1005, 1013, 3, 600, 300, 0, 1006, 1013, 3, 604, 302, 0, 1007, 1013, 3, 606, 303, 0, 1008, 1013, 3, 608, 304, 0, 1009, 1013, 3, 610, 305, 0, 1010, 1013, 3, 612, 306, 0, 1011, 1013, 3, 620, 310, 0, 1012, 1004, 1, 0, 0, 0, 1012, 1005, 1, 0, 0, 0, 1012, 1006, 1, 0, 0, 0, 1012, 1007, 1, 0, 0, 0, 1012, 1008, 1, 0, 0, 0, 1012, 1009, 1, 0, 0, 0, 1012, 1010, 1, 0, 0, 0, 1012, 1011, 1, 0, 0, 0, 1013, 23, 1, 0, 0, 0, 1014, 1015, 5, 34, 0, 0, 1015, 1017, 7, 0, 0, 0, 1016, 1018, 3, 760, 380, 0, 1017, 1016, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1023, 3, 626, 313, 0, 1020, 1022, 3, 56, 28, 0, 1021, 1020, 1, 0, 0, 0, 1022, 1025, 1, 0, 0, 0, 1023, 1021, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 25, 1, 0, 0, 0, 1025, 1023, 1, 0, 0, 0, 1026, 1028, 5, 34, 0, 0, 1027, 1029, 3, 62, 31, 0, 1028, 1027, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1032, 5, 385, 0, 0, 1031, 1033, 3, 760, 380, 0, 1032, 1031, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1035, 3, 702, 351, 0, 1035, 1036, 5, 119, 0, 0, 1036, 1037, 5, 590, 0, 0, 1037, 1044, 3, 64, 32, 0, 1038, 1039, 5, 119, 0, 0, 1039, 1041, 5, 343, 0, 0, 1040, 1042, 5, 114, 0, 0, 1041, 1040, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1045, 5, 541, 0, 0, 1044, 1038, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1047, 1, 0, 0, 0, 1046, 1048, 3, 72, 36, 0, 1047, 1046, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1051, 1, 0, 0, 0, 1049, 1050, 5, 340, 0, 0, 1050, 1052, 5, 882, 0, 0, 1051, 1049, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1054, 5, 371, 0, 0, 1054, 1055, 3, 422, 211, 0, 1055, 27, 1, 0, 0, 0, 1056, 1058, 5, 34, 0, 0, 1057, 1059, 7, 1, 0, 0, 1058, 1057, 1, 0, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1062, 7, 2, 0, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 5, 82, 0, 0, 1064, 1066, 3, 638, 319, 0, 1065, 1067, 3, 74, 37, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 5, 119, 0, 0, 1069, 1070, 3, 652, 326, 0, 1070, 1074, 3, 738, 369, 0, 1071, 1073, 3, 76, 38, 0, 1072, 1071, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1089, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077, 1079, 5, 308, 0, 0, 1078, 1080, 5, 857, 0, 0, 1079, 1078, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1088, 7, 3, 0, 0, 1082, 1084, 5, 104, 0, 0, 1083, 1085, 5, 857, 0, 0, 1084, 1083, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 7, 4, 0, 0, 1087, 1077, 1, 0, 0, 0, 1087, 1082, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 29, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 5, 34, 0, 0, 1093, 1094, 5, 451, 0, 0, 1094, 1095, 5, 74, 0, 0, 1095, 1096, 3, 706, 353, 0, 1096, 1097, 5, 6, 0, 0, 1097, 1098, 5, 671, 0, 0, 1098, 1104, 5, 882, 0, 0, 1099, 1101, 5, 428, 0, 0, 1100, 1102, 5, 857, 0, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1105, 3, 714, 357, 0, 1104, 1099, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1111, 1, 0, 0, 0, 1106, 1108, 5, 672, 0, 0, 1107, 1109, 5, 857, 0, 0, 1108, 1107, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 3, 714, 357, 0, 1111, 1106, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1118, 1, 0, 0, 0, 1113, 1115, 5, 553, 0, 0, 1114, 1116, 5, 857, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1119, 3, 714, 357, 0, 1118, 1113, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1125, 1, 0, 0, 0, 1120, 1122, 5, 504, 0, 0, 1121, 1123, 5, 857, 0, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1126, 3, 706, 353, 0, 1125, 1120, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1128, 1, 0, 0, 0, 1127, 1129, 5, 687, 0, 0, 1128, 1127, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1135, 1, 0, 0, 0, 1130, 1132, 5, 340, 0, 0, 1131, 1133, 5, 857, 0, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 5, 882, 0, 0, 1135, 1130, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1139, 5, 380, 0, 0, 1138, 1140, 5, 857, 0, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 3, 692, 346, 0, 1142, 31, 1, 0, 0, 0, 1143, 1145, 5, 34, 0, 0, 1144, 1146, 3, 62, 31, 0, 1145, 1144, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1149, 5, 132, 0, 0, 1148, 1150, 3, 760, 380, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 3, 702, 351, 0, 1152, 1154, 5, 866, 0, 0, 1153, 1155, 3, 78, 39, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1160, 1, 0, 0, 0, 1156, 1157, 5, 868, 0, 0, 1157, 1159, 3, 78, 39, 0, 1158, 1156, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1158, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1163, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1163, 1167, 5, 867, 0, 0, 1164, 1166, 3, 82, 41, 0, 1165, 1164, 1, 0, 0, 0, 1166, 1169, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1170, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1170, 1171, 3, 422, 211, 0, 1171, 33, 1, 0, 0, 0, 1172, 1174, 5, 34, 0, 0, 1173, 1175, 3, 62, 31, 0, 1174, 1173, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1178, 5, 307, 0, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1181, 5, 409, 0, 0, 1180, 1182, 3, 760, 380, 0, 1181, 1180, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1184, 3, 630, 315, 0, 1184, 1186, 5, 866, 0, 0, 1185, 1187, 3, 80, 40, 0, 1186, 1185, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1192, 1, 0, 0, 0, 1188, 1189, 5, 868, 0, 0, 1189, 1191, 3, 80, 40, 0, 1190, 1188, 1, 0, 0, 0, 1191, 1194, 1, 0, 0, 0, 1192, 1190, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1195, 1, 0, 0, 0, 1194, 1192, 1, 0, 0, 0, 1195, 1196, 5, 867, 0, 0, 1196, 1197, 5, 580, 0, 0, 1197, 1201, 3, 726, 363, 0, 1198, 1200, 3, 82, 41, 0, 1199, 1198, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1206, 1, 0, 0, 0, 1203, 1201, 1, 0, 0, 0, 1204, 1207, 3, 422, 211, 0, 1205, 1207, 3, 438, 219, 0, 1206, 1204, 1, 0, 0, 0, 1206, 1205, 1, 0, 0, 0, 1207, 35, 1, 0, 0, 0, 1208, 1210, 5, 34, 0, 0, 1209, 1211, 5, 307, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1214, 5, 409, 0, 0, 1213, 1215, 3, 760, 380, 0, 1214, 1213, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 3, 630, 315, 0, 1217, 1218, 5, 580, 0, 0, 1218, 1219, 7, 5, 0, 0, 1219, 1220, 5, 603, 0, 0, 1220, 1221, 5, 882, 0, 0, 1221, 37, 1, 0, 0, 0, 1222, 1223, 5, 34, 0, 0, 1223, 1225, 5, 582, 0, 0, 1224, 1226, 3, 760, 380, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 3, 654, 327, 0, 1228, 39, 1, 0, 0, 0, 1229, 1230, 5, 34, 0, 0, 1230, 1231, 5, 592, 0, 0, 1231, 1232, 3, 706, 353, 0, 1232, 1233, 5, 67, 0, 0, 1233, 1234, 5, 360, 0, 0, 1234, 1235, 5, 692, 0, 0, 1235, 1236, 7, 6, 0, 0, 1236, 1237, 5, 518, 0, 0, 1237, 1238, 5, 866, 0, 0, 1238, 1243, 3, 84, 42, 0, 1239, 1240, 5, 868, 0, 0, 1240, 1242, 3, 84, 42, 0, 1241, 1239, 1, 0, 0, 0, 1242, 1245, 1, 0, 0, 0, 1243, 1241, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1246, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1246, 1247, 5, 867, 0, 0, 1247, 41, 1, 0, 0, 0, 1248, 1250, 5, 34, 0, 0, 1249, 1251, 5, 660, 0, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1254, 5, 173, 0, 0, 1253, 1255, 3, 760, 380, 0, 1254, 1253, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 3, 648, 324, 0, 1257, 1259, 3, 86, 43, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1270, 1, 0, 0, 0, 1260, 1267, 3, 104, 52, 0, 1261, 1263, 5, 868, 0, 0, 1262, 1261, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1266, 3, 104, 52, 0, 1265, 1262, 1, 0, 0, 0, 1266, 1269, 1, 0, 0, 0, 1267, 1265, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1271, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1270, 1260, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 1, 0, 0, 0, 1272, 1274, 3, 110, 55, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1277, 7, 7, 0, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1, 0, 0, 0, 1278, 1280, 5, 13, 0, 0, 1279, 1278, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1282, 3, 210, 105, 0, 1282, 1327, 1, 0, 0, 0, 1283, 1285, 5, 34, 0, 0, 1284, 1286, 5, 660, 0, 0, 1285, 1284, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1289, 5, 173, 0, 0, 1288, 1290, 3, 760, 380, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1299, 3, 648, 324, 0, 1292, 1293, 5, 99, 0, 0, 1293, 1300, 3, 652, 326, 0, 1294, 1295, 5, 866, 0, 0, 1295, 1296, 5, 99, 0, 0, 1296, 1297, 3, 652, 326, 0, 1297, 1298, 5, 867, 0, 0, 1298, 1300, 1, 0, 0, 0, 1299, 1292, 1, 0, 0, 0, 1299, 1294, 1, 0, 0, 0, 1300, 1327, 1, 0, 0, 0, 1301, 1303, 5, 34, 0, 0, 1302, 1304, 5, 660, 0, 0, 1303, 1302, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1307, 5, 173, 0, 0, 1306, 1308, 3, 760, 380, 0, 1307, 1306, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 3, 648, 324, 0, 1310, 1321, 3, 86, 43, 0, 1311, 1318, 3, 104, 52, 0, 1312, 1314, 5, 868, 0, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 3, 104, 52, 0, 1316, 1313, 1, 0, 0, 0, 1317, 1320, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1322, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, 0, 1321, 1311, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1324, 1, 0, 0, 0, 1323, 1325, 3, 110, 55, 0, 1324, 1323, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1327, 1, 0, 0, 0, 1326, 1248, 1, 0, 0, 0, 1326, 1283, 1, 0, 0, 0, 1326, 1301, 1, 0, 0, 0, 1327, 43, 1, 0, 0, 0, 1328, 1330, 5, 34, 0, 0, 1329, 1331, 5, 180, 0, 0, 1330, 1329, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 5, 658, 0, 0, 1333, 1337, 3, 664, 332, 0, 1334, 1335, 5, 6, 0, 0, 1335, 1336, 5, 361, 0, 0, 1336, 1338, 5, 882, 0, 0, 1337, 1334, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1344, 1, 0, 0, 0, 1339, 1341, 5, 314, 0, 0, 1340, 1342, 5, 857, 0, 0, 1341, 1340, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1345, 3, 714, 357, 0, 1344, 1339, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1349, 1, 0, 0, 0, 1346, 1347, 5, 399, 0, 0, 1347, 1348, 5, 857, 0, 0, 1348, 1350, 3, 714, 357, 0, 1349, 1346, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1356, 1, 0, 0, 0, 1351, 1353, 5, 380, 0, 0, 1352, 1354, 5, 857, 0, 0, 1353, 1352, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1357, 3, 692, 346, 0, 1356, 1351, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1363, 1, 0, 0, 0, 1358, 1360, 5, 825, 0, 0, 1359, 1361, 5, 857, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1364, 5, 882, 0, 0, 1363, 1358, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 45, 1, 0, 0, 0, 1365, 1367, 5, 34, 0, 0, 1366, 1368, 5, 180, 0, 0, 1367, 1366, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 5, 658, 0, 0, 1370, 1371, 3, 664, 332, 0, 1371, 1372, 5, 6, 0, 0, 1372, 1373, 5, 361, 0, 0, 1373, 1374, 5, 882, 0, 0, 1374, 1375, 5, 187, 0, 0, 1375, 1376, 5, 451, 0, 0, 1376, 1377, 5, 74, 0, 0, 1377, 1383, 3, 706, 353, 0, 1378, 1380, 5, 393, 0, 0, 1379, 1381, 5, 857, 0, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 3, 714, 357, 0, 1383, 1378, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1390, 1, 0, 0, 0, 1385, 1387, 5, 428, 0, 0, 1386, 1388, 5, 857, 0, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 3, 714, 357, 0, 1390, 1385, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1397, 1, 0, 0, 0, 1392, 1394, 5, 314, 0, 0, 1393, 1395, 5, 857, 0, 0, 1394, 1393, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1398, 3, 714, 357, 0, 1397, 1392, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1404, 1, 0, 0, 0, 1399, 1401, 5, 481, 0, 0, 1400, 1402, 5, 857, 0, 0, 1401, 1400, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 3, 714, 357, 0, 1404, 1399, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1411, 1, 0, 0, 0, 1406, 1408, 5, 504, 0, 0, 1407, 1409, 5, 857, 0, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 3, 706, 353, 0, 1411, 1406, 1, 0, 0, 0, 1411, 1412, 1, 0, 0, 0, 1412, 1414, 1, 0, 0, 0, 1413, 1415, 5, 687, 0, 0, 1414, 1413, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1421, 1, 0, 0, 0, 1416, 1418, 5, 340, 0, 0, 1417, 1419, 5, 857, 0, 0, 1418, 1417, 1, 0, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1422, 5, 882, 0, 0, 1421, 1416, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1425, 5, 380, 0, 0, 1424, 1426, 5, 857, 0, 0, 1425, 1424, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 3, 692, 346, 0, 1428, 47, 1, 0, 0, 0, 1429, 1431, 5, 34, 0, 0, 1430, 1432, 3, 62, 31, 0, 1431, 1430, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1434, 1, 0, 0, 0, 1433, 1435, 3, 760, 380, 0, 1434, 1433, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1438, 5, 178, 0, 0, 1437, 1439, 3, 760, 380, 0, 1438, 1437, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 3, 702, 351, 0, 1441, 1442, 7, 8, 0, 0, 1442, 1443, 7, 9, 0, 0, 1443, 1444, 5, 119, 0, 0, 1444, 1445, 3, 652, 326, 0, 1445, 1446, 5, 65, 0, 0, 1446, 1447, 5, 52, 0, 0, 1447, 1450, 5, 586, 0, 0, 1448, 1449, 7, 10, 0, 0, 1449, 1451, 3, 702, 351, 0, 1450, 1448, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1453, 3, 422, 211, 0, 1453, 49, 1, 0, 0, 0, 1454, 1456, 5, 194, 0, 0, 1455, 1457, 5, 552, 0, 0, 1456, 1455, 1, 0, 0, 0, 1456, 1457, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 3, 52, 26, 0, 1459, 51, 1, 0, 0, 0, 1460, 1472, 3, 706, 353, 0, 1461, 1462, 5, 866, 0, 0, 1462, 1467, 3, 706, 353, 0, 1463, 1464, 5, 868, 0, 0, 1464, 1466, 3, 706, 353, 0, 1465, 1463, 1, 0, 0, 0, 1466, 1469, 1, 0, 0, 0, 1467, 1465, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1470, 1, 0, 0, 0, 1469, 1467, 1, 0, 0, 0, 1470, 1471, 5, 867, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1461, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1475, 5, 13, 0, 0, 1475, 1476, 5, 866, 0, 0, 1476, 1477, 3, 10, 5, 0, 1477, 1480, 5, 867, 0, 0, 1478, 1479, 5, 868, 0, 0, 1479, 1481, 3, 52, 26, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 53, 1, 0, 0, 0, 1482, 1484, 5, 34, 0, 0, 1483, 1485, 3, 762, 381, 0, 1484, 1483, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1489, 1, 0, 0, 0, 1486, 1487, 5, 308, 0, 0, 1487, 1488, 5, 857, 0, 0, 1488, 1490, 7, 11, 0, 0, 1489, 1486, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1492, 1, 0, 0, 0, 1491, 1493, 3, 62, 31, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1497, 1, 0, 0, 0, 1494, 1495, 5, 162, 0, 0, 1495, 1496, 5, 591, 0, 0, 1496, 1498, 7, 12, 0, 0, 1497, 1494, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 5, 684, 0, 0, 1500, 1512, 3, 634, 317, 0, 1501, 1502, 5, 866, 0, 0, 1502, 1507, 3, 658, 329, 0, 1503, 1504, 5, 868, 0, 0, 1504, 1506, 3, 658, 329, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1509, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1510, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1511, 5, 867, 0, 0, 1511, 1513, 1, 0, 0, 0, 1512, 1501, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1534, 5, 13, 0, 0, 1515, 1517, 5, 866, 0, 0, 1516, 1518, 3, 50, 25, 0, 1517, 1516, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 3, 210, 105, 0, 1520, 1521, 5, 867, 0, 0, 1521, 1535, 1, 0, 0, 0, 1522, 1524, 3, 50, 25, 0, 1523, 1522, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1532, 3, 210, 105, 0, 1526, 1528, 5, 194, 0, 0, 1527, 1529, 7, 13, 0, 0, 1528, 1527, 1, 0, 0, 0, 1528, 1529, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 5, 27, 0, 0, 1531, 1533, 5, 121, 0, 0, 1532, 1526, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1535, 1, 0, 0, 0, 1534, 1515, 1, 0, 0, 0, 1534, 1523, 1, 0, 0, 0, 1535, 55, 1, 0, 0, 0, 1536, 1538, 5, 42, 0, 0, 1537, 1536, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1541, 3, 58, 29, 0, 1540, 1542, 5, 857, 0, 0, 1541, 1540, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1545, 1, 0, 0, 0, 1543, 1546, 3, 688, 344, 0, 1544, 1546, 5, 42, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1546, 1570, 1, 0, 0, 0, 1547, 1549, 5, 42, 0, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 5, 28, 0, 0, 1551, 1553, 5, 857, 0, 0, 1552, 1551, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1570, 3, 690, 345, 0, 1555, 1557, 5, 42, 0, 0, 1556, 1555, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1560, 5, 376, 0, 0, 1559, 1561, 5, 857, 0, 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1570, 5, 882, 0, 0, 1563, 1564, 5, 135, 0, 0, 1564, 1566, 5, 515, 0, 0, 1565, 1567, 5, 857, 0, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1570, 7, 14, 0, 0, 1569, 1537, 1, 0, 0, 0, 1569, 1548, 1, 0, 0, 0, 1569, 1556, 1, 0, 0, 0, 1569, 1563, 1, 0, 0, 0, 1570, 57, 1, 0, 0, 0, 1571, 1572, 5, 26, 0, 0, 1572, 1577, 5, 155, 0, 0, 1573, 1577, 5, 823, 0, 0, 1574, 1575, 5, 224, 0, 0, 1575, 1577, 5, 155, 0, 0, 1576, 1571, 1, 0, 0, 0, 1576, 1573, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1577, 59, 1, 0, 0, 0, 1578, 1581, 7, 15, 0, 0, 1579, 1580, 5, 866, 0, 0, 1580, 1582, 5, 867, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 61, 1, 0, 0, 0, 1583, 1584, 5, 364, 0, 0, 1584, 1587, 5, 857, 0, 0, 1585, 1588, 3, 684, 342, 0, 1586, 1588, 3, 60, 30, 0, 1587, 1585, 1, 0, 0, 0, 1587, 1586, 1, 0, 0, 0, 1588, 63, 1, 0, 0, 0, 1589, 1590, 5, 311, 0, 0, 1590, 1594, 3, 66, 33, 0, 1591, 1593, 3, 68, 34, 0, 1592, 1591, 1, 0, 0, 0, 1593, 1596, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1624, 1, 0, 0, 0, 1596, 1594, 1, 0, 0, 0, 1597, 1600, 5, 387, 0, 0, 1598, 1601, 3, 712, 356, 0, 1599, 1601, 3, 804, 402, 0, 1600, 1598, 1, 0, 0, 0, 1600, 1599, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1611, 3, 70, 35, 0, 1603, 1604, 5, 641, 0, 0, 1604, 1608, 3, 66, 33, 0, 1605, 1607, 3, 68, 34, 0, 1606, 1605, 1, 0, 0, 0, 1607, 1610, 1, 0, 0, 0, 1608, 1606, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1612, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1611, 1603, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1621, 1, 0, 0, 0, 1613, 1614, 5, 379, 0, 0, 1614, 1618, 3, 66, 33, 0, 1615, 1617, 3, 68, 34, 0, 1616, 1615, 1, 0, 0, 0, 1617, 1620, 1, 0, 0, 0, 1618, 1616, 1, 0, 0, 0, 1618, 1619, 1, 0, 0, 0, 1619, 1622, 1, 0, 0, 0, 1620, 1618, 1, 0, 0, 0, 1621, 1613, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1624, 1, 0, 0, 0, 1623, 1589, 1, 0, 0, 0, 1623, 1597, 1, 0, 0, 0, 1624, 65, 1, 0, 0, 0, 1625, 1630, 5, 287, 0, 0, 1626, 1630, 3, 716, 358, 0, 1627, 1630, 3, 712, 356, 0, 1628, 1630, 3, 804, 402, 0, 1629, 1625, 1, 0, 0, 0, 1629, 1626, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1628, 1, 0, 0, 0, 1630, 67, 1, 0, 0, 0, 1631, 1632, 5, 853, 0, 0, 1632, 1635, 5, 87, 0, 0, 1633, 1636, 3, 712, 356, 0, 1634, 1636, 3, 804, 402, 0, 1635, 1633, 1, 0, 0, 0, 1635, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1638, 3, 70, 35, 0, 1638, 69, 1, 0, 0, 0, 1639, 1653, 3, 830, 415, 0, 1640, 1653, 5, 223, 0, 0, 1641, 1653, 5, 242, 0, 0, 1642, 1653, 5, 243, 0, 0, 1643, 1653, 5, 244, 0, 0, 1644, 1653, 5, 245, 0, 0, 1645, 1653, 5, 246, 0, 0, 1646, 1653, 5, 247, 0, 0, 1647, 1653, 5, 248, 0, 0, 1648, 1653, 5, 249, 0, 0, 1649, 1653, 5, 250, 0, 0, 1650, 1653, 5, 251, 0, 0, 1651, 1653, 5, 252, 0, 0, 1652, 1639, 1, 0, 0, 0, 1652, 1640, 1, 0, 0, 0, 1652, 1641, 1, 0, 0, 0, 1652, 1642, 1, 0, 0, 0, 1652, 1643, 1, 0, 0, 0, 1652, 1644, 1, 0, 0, 0, 1652, 1645, 1, 0, 0, 0, 1652, 1646, 1, 0, 0, 0, 1652, 1647, 1, 0, 0, 0, 1652, 1648, 1, 0, 0, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1650, 1, 0, 0, 0, 1652, 1651, 1, 0, 0, 0, 1653, 71, 1, 0, 0, 0, 1654, 1660, 5, 375, 0, 0, 1655, 1660, 5, 368, 0, 0, 1656, 1657, 5, 368, 0, 0, 1657, 1658, 5, 119, 0, 0, 1658, 1660, 5, 598, 0, 0, 1659, 1654, 1, 0, 0, 0, 1659, 1655, 1, 0, 0, 0, 1659, 1656, 1, 0, 0, 0, 1660, 73, 1, 0, 0, 0, 1661, 1662, 5, 188, 0, 0, 1662, 1663, 7, 16, 0, 0, 1663, 75, 1, 0, 0, 0, 1664, 1666, 5, 443, 0, 0, 1665, 1667, 5, 857, 0, 0, 1666, 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1687, 3, 714, 357, 0, 1669, 1687, 3, 74, 37, 0, 1670, 1671, 5, 194, 0, 0, 1671, 1672, 5, 525, 0, 0, 1672, 1687, 3, 706, 353, 0, 1673, 1674, 5, 340, 0, 0, 1674, 1687, 5, 882, 0, 0, 1675, 1687, 7, 17, 0, 0, 1676, 1678, 5, 825, 0, 0, 1677, 1679, 5, 857, 0, 0, 1678, 1677, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1687, 5, 882, 0, 0, 1681, 1683, 5, 833, 0, 0, 1682, 1684, 5, 857, 0, 0, 1683, 1682, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 5, 882, 0, 0, 1686, 1664, 1, 0, 0, 0, 1686, 1669, 1, 0, 0, 0, 1686, 1670, 1, 0, 0, 0, 1686, 1673, 1, 0, 0, 0, 1686, 1675, 1, 0, 0, 0, 1686, 1676, 1, 0, 0, 0, 1686, 1681, 1, 0, 0, 0, 1687, 77, 1, 0, 0, 0, 1688, 1690, 7, 18, 0, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1692, 3, 706, 353, 0, 1692, 1693, 3, 726, 363, 0, 1693, 79, 1, 0, 0, 0, 1694, 1695, 3, 706, 353, 0, 1695, 1696, 3, 726, 363, 0, 1696, 81, 1, 0, 0, 0, 1697, 1698, 5, 340, 0, 0, 1698, 1721, 5, 882, 0, 0, 1699, 1700, 5, 444, 0, 0, 1700, 1721, 5, 162, 0, 0, 1701, 1703, 5, 114, 0, 0, 1702, 1701, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1721, 5, 47, 0, 0, 1705, 1706, 5, 354, 0, 0, 1706, 1716, 5, 162, 0, 0, 1707, 1708, 5, 502, 0, 0, 1708, 1716, 5, 162, 0, 0, 1709, 1710, 5, 136, 0, 0, 1710, 1711, 5, 162, 0, 0, 1711, 1716, 5, 360, 0, 0, 1712, 1713, 5, 112, 0, 0, 1713, 1714, 5, 162, 0, 0, 1714, 1716, 5, 360, 0, 0, 1715, 1705, 1, 0, 0, 0, 1715, 1707, 1, 0, 0, 0, 1715, 1709, 1, 0, 0, 0, 1715, 1712, 1, 0, 0, 0, 1716, 1721, 1, 0, 0, 0, 1717, 1718, 5, 162, 0, 0, 1718, 1719, 5, 591, 0, 0, 1719, 1721, 7, 12, 0, 0, 1720, 1697, 1, 0, 0, 0, 1720, 1699, 1, 0, 0, 0, 1720, 1702, 1, 0, 0, 0, 1720, 1715, 1, 0, 0, 0, 1720, 1717, 1, 0, 0, 0, 1721, 83, 1, 0, 0, 0, 1722, 1723, 5, 421, 0, 0, 1723, 1737, 5, 882, 0, 0, 1724, 1725, 5, 39, 0, 0, 1725, 1737, 5, 882, 0, 0, 1726, 1727, 5, 678, 0, 0, 1727, 1737, 5, 882, 0, 0, 1728, 1729, 5, 529, 0, 0, 1729, 1737, 5, 882, 0, 0, 1730, 1731, 5, 601, 0, 0, 1731, 1737, 5, 882, 0, 0, 1732, 1733, 5, 519, 0, 0, 1733, 1737, 5, 882, 0, 0, 1734, 1735, 5, 537, 0, 0, 1735, 1737, 3, 712, 356, 0, 1736, 1722, 1, 0, 0, 0, 1736, 1724, 1, 0, 0, 0, 1736, 1726, 1, 0, 0, 0, 1736, 1728, 1, 0, 0, 0, 1736, 1730, 1, 0, 0, 0, 1736, 1732, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1737, 85, 1, 0, 0, 0, 1738, 1739, 5, 866, 0, 0, 1739, 1744, 3, 88, 44, 0, 1740, 1741, 5, 868, 0, 0, 1741, 1743, 3, 88, 44, 0, 1742, 1740, 1, 0, 0, 0, 1743, 1746, 1, 0, 0, 0, 1744, 1742, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1747, 1, 0, 0, 0, 1746, 1744, 1, 0, 0, 0, 1747, 1748, 5, 867, 0, 0, 1748, 87, 1, 0, 0, 0, 1749, 1750, 3, 658, 329, 0, 1750, 1751, 3, 94, 47, 0, 1751, 1833, 1, 0, 0, 0, 1752, 1754, 7, 19, 0, 0, 1753, 1755, 3, 642, 321, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1758, 3, 74, 37, 0, 1757, 1756, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1759, 1, 0, 0, 0, 1759, 1763, 3, 738, 369, 0, 1760, 1762, 3, 76, 38, 0, 1761, 1760, 1, 0, 0, 0, 1762, 1765, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1833, 1, 0, 0, 0, 1765, 1763, 1, 0, 0, 0, 1766, 1768, 7, 20, 0, 0, 1767, 1769, 7, 19, 0, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1771, 1, 0, 0, 0, 1770, 1772, 3, 642, 321, 0, 1771, 1770, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1777, 3, 738, 369, 0, 1774, 1776, 3, 76, 38, 0, 1775, 1774, 1, 0, 0, 0, 1776, 1779, 1, 0, 0, 0, 1777, 1775, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1833, 1, 0, 0, 0, 1779, 1777, 1, 0, 0, 0, 1780, 1782, 3, 92, 46, 0, 1781, 1780, 1, 0, 0, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1784, 5, 131, 0, 0, 1784, 1786, 5, 92, 0, 0, 1785, 1787, 3, 74, 37, 0, 1786, 1785, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1792, 3, 738, 369, 0, 1789, 1791, 3, 76, 38, 0, 1790, 1789, 1, 0, 0, 0, 1791, 1794, 1, 0, 0, 0, 1792, 1790, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 1833, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1795, 1797, 3, 92, 46, 0, 1796, 1795, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1800, 5, 182, 0, 0, 1799, 1801, 7, 19, 0, 0, 1800, 1799, 1, 0, 0, 0, 1800, 1801, 1, 0, 0, 0, 1801, 1803, 1, 0, 0, 0, 1802, 1804, 3, 642, 321, 0, 1803, 1802, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1806, 1, 0, 0, 0, 1805, 1807, 3, 74, 37, 0, 1806, 1805, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1812, 3, 738, 369, 0, 1809, 1811, 3, 76, 38, 0, 1810, 1809, 1, 0, 0, 0, 1811, 1814, 1, 0, 0, 0, 1812, 1810, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1833, 1, 0, 0, 0, 1814, 1812, 1, 0, 0, 0, 1815, 1817, 3, 92, 46, 0, 1816, 1815, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 5, 67, 0, 0, 1819, 1821, 5, 92, 0, 0, 1820, 1822, 3, 642, 321, 0, 1821, 1820, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823, 1824, 3, 738, 369, 0, 1824, 1825, 3, 98, 49, 0, 1825, 1833, 1, 0, 0, 0, 1826, 1827, 5, 27, 0, 0, 1827, 1828, 5, 866, 0, 0, 1828, 1829, 3, 804, 402, 0, 1829, 1830, 5, 867, 0, 0, 1830, 1833, 1, 0, 0, 0, 1831, 1833, 3, 90, 45, 0, 1832, 1749, 1, 0, 0, 0, 1832, 1752, 1, 0, 0, 0, 1832, 1766, 1, 0, 0, 0, 1832, 1781, 1, 0, 0, 0, 1832, 1796, 1, 0, 0, 0, 1832, 1816, 1, 0, 0, 0, 1832, 1826, 1, 0, 0, 0, 1832, 1831, 1, 0, 0, 0, 1833, 89, 1, 0, 0, 0, 1834, 1836, 3, 92, 46, 0, 1835, 1834, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 1837, 1, 0, 0, 0, 1837, 1838, 5, 27, 0, 0, 1838, 1839, 5, 866, 0, 0, 1839, 1840, 3, 804, 402, 0, 1840, 1845, 5, 867, 0, 0, 1841, 1843, 5, 114, 0, 0, 1842, 1841, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1846, 5, 57, 0, 0, 1845, 1842, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 91, 1, 0, 0, 0, 1847, 1849, 5, 31, 0, 0, 1848, 1850, 3, 706, 353, 0, 1849, 1848, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 93, 1, 0, 0, 0, 1851, 1855, 3, 726, 363, 0, 1852, 1854, 3, 96, 48, 0, 1853, 1852, 1, 0, 0, 0, 1854, 1857, 1, 0, 0, 0, 1855, 1853, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 95, 1, 0, 0, 0, 1857, 1855, 1, 0, 0, 0, 1858, 1902, 3, 722, 361, 0, 1859, 1860, 5, 42, 0, 0, 1860, 1902, 3, 754, 377, 0, 1861, 1902, 5, 686, 0, 0, 1862, 1902, 5, 435, 0, 0, 1863, 1868, 5, 315, 0, 0, 1864, 1865, 5, 119, 0, 0, 1865, 1866, 5, 185, 0, 0, 1866, 1868, 3, 756, 378, 0, 1867, 1863, 1, 0, 0, 0, 1867, 1864, 1, 0, 0, 0, 1868, 1902, 1, 0, 0, 0, 1869, 1871, 5, 131, 0, 0, 1870, 1869, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1902, 5, 92, 0, 0, 1873, 1875, 5, 182, 0, 0, 1874, 1876, 5, 92, 0, 0, 1875, 1874, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1902, 1, 0, 0, 0, 1877, 1878, 5, 340, 0, 0, 1878, 1902, 5, 882, 0, 0, 1879, 1880, 5, 338, 0, 0, 1880, 1902, 7, 21, 0, 0, 1881, 1882, 5, 647, 0, 0, 1882, 1902, 7, 22, 0, 0, 1883, 1902, 3, 98, 49, 0, 1884, 1885, 5, 28, 0, 0, 1885, 1902, 3, 690, 345, 0, 1886, 1887, 5, 71, 0, 0, 1887, 1889, 5, 9, 0, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 1891, 5, 13, 0, 0, 1891, 1892, 5, 866, 0, 0, 1892, 1893, 3, 804, 402, 0, 1893, 1895, 5, 867, 0, 0, 1894, 1896, 7, 23, 0, 0, 1895, 1894, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1902, 1, 0, 0, 0, 1897, 1898, 5, 241, 0, 0, 1898, 1899, 5, 42, 0, 0, 1899, 1902, 5, 682, 0, 0, 1900, 1902, 3, 90, 45, 0, 1901, 1858, 1, 0, 0, 0, 1901, 1859, 1, 0, 0, 0, 1901, 1861, 1, 0, 0, 0, 1901, 1862, 1, 0, 0, 0, 1901, 1867, 1, 0, 0, 0, 1901, 1870, 1, 0, 0, 0, 1901, 1873, 1, 0, 0, 0, 1901, 1877, 1, 0, 0, 0, 1901, 1879, 1, 0, 0, 0, 1901, 1881, 1, 0, 0, 0, 1901, 1883, 1, 0, 0, 0, 1901, 1884, 1, 0, 0, 0, 1901, 1888, 1, 0, 0, 0, 1901, 1897, 1, 0, 0, 0, 1901, 1900, 1, 0, 0, 0, 1902, 97, 1, 0, 0, 0, 1903, 1904, 5, 138, 0, 0, 1904, 1906, 3, 652, 326, 0, 1905, 1907, 3, 738, 369, 0, 1906, 1905, 1, 0, 0, 0, 1906, 1907, 1, 0, 0, 0, 1907, 1910, 1, 0, 0, 0, 1908, 1909, 5, 110, 0, 0, 1909, 1911, 7, 24, 0, 0, 1910, 1908, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 1, 0, 0, 0, 1912, 1914, 3, 100, 50, 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 99, 1, 0, 0, 0, 1915, 1916, 5, 119, 0, 0, 1916, 1917, 5, 44, 0, 0, 1917, 1921, 3, 102, 51, 0, 1918, 1919, 5, 119, 0, 0, 1919, 1920, 5, 185, 0, 0, 1920, 1922, 3, 102, 51, 0, 1921, 1918, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1932, 1, 0, 0, 0, 1923, 1924, 5, 119, 0, 0, 1924, 1925, 5, 185, 0, 0, 1925, 1929, 3, 102, 51, 0, 1926, 1927, 5, 119, 0, 0, 1927, 1928, 5, 44, 0, 0, 1928, 1930, 3, 102, 51, 0, 1929, 1926, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 1932, 1, 0, 0, 0, 1931, 1915, 1, 0, 0, 0, 1931, 1923, 1, 0, 0, 0, 1932, 101, 1, 0, 0, 0, 1933, 1942, 5, 146, 0, 0, 1934, 1942, 5, 22, 0, 0, 1935, 1936, 5, 155, 0, 0, 1936, 1942, 5, 116, 0, 0, 1937, 1938, 5, 502, 0, 0, 1938, 1942, 5, 305, 0, 0, 1939, 1940, 5, 155, 0, 0, 1940, 1942, 5, 42, 0, 0, 1941, 1933, 1, 0, 0, 0, 1941, 1934, 1, 0, 0, 0, 1941, 1935, 1, 0, 0, 0, 1941, 1937, 1, 0, 0, 0, 1941, 1939, 1, 0, 0, 0, 1942, 103, 1, 0, 0, 0, 1943, 1945, 5, 380, 0, 0, 1944, 1946, 5, 857, 0, 0, 1945, 1944, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1948, 1, 0, 0, 0, 1947, 1949, 3, 692, 346, 0, 1948, 1947, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 2129, 1, 0, 0, 0, 1950, 1952, 5, 825, 0, 0, 1951, 1953, 5, 857, 0, 0, 1952, 1951, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 2129, 5, 882, 0, 0, 1955, 1957, 5, 314, 0, 0, 1956, 1958, 5, 857, 0, 0, 1957, 1956, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 2129, 3, 712, 356, 0, 1960, 1962, 5, 315, 0, 0, 1961, 1963, 5, 857, 0, 0, 1962, 1961, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 2129, 3, 712, 356, 0, 1965, 1967, 5, 316, 0, 0, 1966, 1968, 5, 857, 0, 0, 1967, 1966, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 2129, 3, 712, 356, 0, 1970, 1972, 5, 42, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1975, 3, 58, 29, 0, 1974, 1976, 5, 857, 0, 0, 1975, 1974, 1, 0, 0, 0, 1975, 1976, 1, 0, 0, 0, 1976, 1979, 1, 0, 0, 0, 1977, 1980, 3, 688, 344, 0, 1978, 1980, 5, 42, 0, 0, 1979, 1977, 1, 0, 0, 0, 1979, 1978, 1, 0, 0, 0, 1980, 2129, 1, 0, 0, 0, 1981, 1983, 7, 25, 0, 0, 1982, 1984, 5, 857, 0, 0, 1983, 1982, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 1985, 1, 0, 0, 0, 1985, 2129, 7, 26, 0, 0, 1986, 1988, 5, 42, 0, 0, 1987, 1986, 1, 0, 0, 0, 1987, 1988, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1991, 5, 28, 0, 0, 1990, 1992, 5, 857, 0, 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 2129, 3, 690, 345, 0, 1994, 1996, 5, 340, 0, 0, 1995, 1997, 5, 857, 0, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 2129, 5, 882, 0, 0, 1999, 2001, 5, 346, 0, 0, 2000, 2002, 5, 857, 0, 0, 2001, 2000, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2129, 7, 27, 0, 0, 2004, 2006, 5, 349, 0, 0, 2005, 2007, 5, 857, 0, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2129, 5, 882, 0, 0, 2009, 2010, 7, 28, 0, 0, 2010, 2012, 5, 367, 0, 0, 2011, 2013, 5, 857, 0, 0, 2012, 2011, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2129, 5, 882, 0, 0, 2015, 2017, 5, 365, 0, 0, 2016, 2018, 5, 857, 0, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2129, 7, 26, 0, 0, 2020, 2022, 5, 376, 0, 0, 2021, 2023, 5, 857, 0, 0, 2022, 2021, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2129, 5, 882, 0, 0, 2025, 2027, 7, 29, 0, 0, 2026, 2028, 5, 857, 0, 0, 2027, 2026, 1, 0, 0, 0, 2027, 2028, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2129, 7, 26, 0, 0, 2030, 2032, 7, 30, 0, 0, 2031, 2033, 5, 857, 0, 0, 2032, 2031, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2129, 3, 712, 356, 0, 2035, 2037, 5, 377, 0, 0, 2036, 2038, 5, 857, 0, 0, 2037, 2036, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2129, 3, 712, 356, 0, 2040, 2041, 5, 82, 0, 0, 2041, 2043, 5, 367, 0, 0, 2042, 2044, 5, 857, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2129, 5, 882, 0, 0, 2046, 2048, 5, 431, 0, 0, 2047, 2049, 5, 857, 0, 0, 2048, 2047, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2129, 7, 31, 0, 0, 2051, 2053, 5, 443, 0, 0, 2052, 2054, 5, 857, 0, 0, 2053, 2052, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2129, 3, 714, 357, 0, 2056, 2058, 5, 480, 0, 0, 2057, 2059, 5, 857, 0, 0, 2058, 2057, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 2129, 3, 712, 356, 0, 2061, 2063, 5, 490, 0, 0, 2062, 2064, 5, 857, 0, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2129, 3, 712, 356, 0, 2066, 2068, 5, 520, 0, 0, 2067, 2069, 5, 857, 0, 0, 2068, 2067, 1, 0, 0, 0, 2068, 2069, 1, 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2129, 7, 14, 0, 0, 2071, 2073, 5, 529, 0, 0, 2072, 2074, 5, 857, 0, 0, 2073, 2072, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2129, 5, 882, 0, 0, 2076, 2078, 5, 588, 0, 0, 2077, 2079, 5, 857, 0, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2129, 7, 32, 0, 0, 2081, 2082, 5, 640, 0, 0, 2082, 2129, 5, 664, 0, 0, 2083, 2085, 5, 833, 0, 0, 2084, 2086, 5, 857, 0, 0, 2085, 2084, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2129, 5, 882, 0, 0, 2088, 2090, 5, 642, 0, 0, 2089, 2091, 5, 857, 0, 0, 2090, 2089, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 2092, 1, 0, 0, 0, 2092, 2129, 7, 14, 0, 0, 2093, 2095, 5, 643, 0, 0, 2094, 2096, 5, 857, 0, 0, 2095, 2094, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2129, 7, 14, 0, 0, 2098, 2100, 5, 644, 0, 0, 2099, 2101, 5, 857, 0, 0, 2100, 2099, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2104, 1, 0, 0, 0, 2102, 2105, 5, 42, 0, 0, 2103, 2105, 3, 712, 356, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2103, 1, 0, 0, 0, 2105, 2129, 1, 0, 0, 0, 2106, 2107, 5, 658, 0, 0, 2107, 2109, 3, 666, 333, 0, 2108, 2110, 3, 108, 54, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2129, 1, 0, 0, 0, 2111, 2112, 5, 659, 0, 0, 2112, 2113, 5, 857, 0, 0, 2113, 2129, 3, 106, 53, 0, 2114, 2129, 3, 108, 54, 0, 2115, 2117, 5, 665, 0, 0, 2116, 2118, 5, 857, 0, 0, 2117, 2116, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2129, 7, 26, 0, 0, 2120, 2122, 5, 181, 0, 0, 2121, 2123, 5, 857, 0, 0, 2122, 2121, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2125, 5, 866, 0, 0, 2125, 2126, 3, 650, 325, 0, 2126, 2127, 5, 867, 0, 0, 2127, 2129, 1, 0, 0, 0, 2128, 1943, 1, 0, 0, 0, 2128, 1950, 1, 0, 0, 0, 2128, 1955, 1, 0, 0, 0, 2128, 1960, 1, 0, 0, 0, 2128, 1965, 1, 0, 0, 0, 2128, 1971, 1, 0, 0, 0, 2128, 1981, 1, 0, 0, 0, 2128, 1987, 1, 0, 0, 0, 2128, 1994, 1, 0, 0, 0, 2128, 1999, 1, 0, 0, 0, 2128, 2004, 1, 0, 0, 0, 2128, 2009, 1, 0, 0, 0, 2128, 2015, 1, 0, 0, 0, 2128, 2020, 1, 0, 0, 0, 2128, 2025, 1, 0, 0, 0, 2128, 2030, 1, 0, 0, 0, 2128, 2035, 1, 0, 0, 0, 2128, 2040, 1, 0, 0, 0, 2128, 2046, 1, 0, 0, 0, 2128, 2051, 1, 0, 0, 0, 2128, 2056, 1, 0, 0, 0, 2128, 2061, 1, 0, 0, 0, 2128, 2066, 1, 0, 0, 0, 2128, 2071, 1, 0, 0, 0, 2128, 2076, 1, 0, 0, 0, 2128, 2081, 1, 0, 0, 0, 2128, 2083, 1, 0, 0, 0, 2128, 2088, 1, 0, 0, 0, 2128, 2093, 1, 0, 0, 0, 2128, 2098, 1, 0, 0, 0, 2128, 2106, 1, 0, 0, 0, 2128, 2111, 1, 0, 0, 0, 2128, 2114, 1, 0, 0, 0, 2128, 2115, 1, 0, 0, 0, 2128, 2120, 1, 0, 0, 0, 2129, 105, 1, 0, 0, 0, 2130, 2131, 7, 33, 0, 0, 2131, 107, 1, 0, 0, 0, 2132, 2133, 5, 647, 0, 0, 2133, 2134, 7, 22, 0, 0, 2134, 109, 1, 0, 0, 0, 2135, 2136, 5, 130, 0, 0, 2136, 2137, 5, 20, 0, 0, 2137, 2140, 3, 112, 56, 0, 2138, 2139, 5, 528, 0, 0, 2139, 2141, 3, 712, 356, 0, 2140, 2138, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2149, 1, 0, 0, 0, 2142, 2143, 5, 652, 0, 0, 2143, 2144, 5, 20, 0, 0, 2144, 2147, 3, 114, 57, 0, 2145, 2146, 5, 653, 0, 0, 2146, 2148, 3, 712, 356, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2142, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2162, 1, 0, 0, 0, 2151, 2152, 5, 866, 0, 0, 2152, 2157, 3, 116, 58, 0, 2153, 2154, 5, 868, 0, 0, 2154, 2156, 3, 116, 58, 0, 2155, 2153, 1, 0, 0, 0, 2156, 2159, 1, 0, 0, 0, 2157, 2155, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 1, 0, 0, 0, 2159, 2157, 1, 0, 0, 0, 2160, 2161, 5, 867, 0, 0, 2161, 2163, 1, 0, 0, 0, 2162, 2151, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 111, 1, 0, 0, 0, 2164, 2166, 5, 101, 0, 0, 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 5, 418, 0, 0, 2168, 2169, 5, 866, 0, 0, 2169, 2170, 3, 804, 402, 0, 2170, 2171, 5, 867, 0, 0, 2171, 2211, 1, 0, 0, 0, 2172, 2174, 5, 101, 0, 0, 2173, 2172, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2179, 5, 92, 0, 0, 2176, 2177, 5, 308, 0, 0, 2177, 2178, 5, 857, 0, 0, 2178, 2180, 7, 34, 0, 0, 2179, 2176, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2183, 5, 866, 0, 0, 2182, 2184, 3, 660, 330, 0, 2183, 2182, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2211, 5, 867, 0, 0, 2186, 2196, 5, 134, 0, 0, 2187, 2188, 5, 866, 0, 0, 2188, 2189, 3, 804, 402, 0, 2189, 2190, 5, 867, 0, 0, 2190, 2197, 1, 0, 0, 0, 2191, 2192, 5, 337, 0, 0, 2192, 2193, 5, 866, 0, 0, 2193, 2194, 3, 660, 330, 0, 2194, 2195, 5, 867, 0, 0, 2195, 2197, 1, 0, 0, 0, 2196, 2187, 1, 0, 0, 0, 2196, 2191, 1, 0, 0, 0, 2197, 2211, 1, 0, 0, 0, 2198, 2208, 5, 449, 0, 0, 2199, 2200, 5, 866, 0, 0, 2200, 2201, 3, 804, 402, 0, 2201, 2202, 5, 867, 0, 0, 2202, 2209, 1, 0, 0, 0, 2203, 2204, 5, 337, 0, 0, 2204, 2205, 5, 866, 0, 0, 2205, 2206, 3, 660, 330, 0, 2206, 2207, 5, 867, 0, 0, 2207, 2209, 1, 0, 0, 0, 2208, 2199, 1, 0, 0, 0, 2208, 2203, 1, 0, 0, 0, 2209, 2211, 1, 0, 0, 0, 2210, 2165, 1, 0, 0, 0, 2210, 2173, 1, 0, 0, 0, 2210, 2186, 1, 0, 0, 0, 2210, 2198, 1, 0, 0, 0, 2211, 113, 1, 0, 0, 0, 2212, 2214, 5, 101, 0, 0, 2213, 2212, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2215, 1, 0, 0, 0, 2215, 2216, 5, 418, 0, 0, 2216, 2217, 5, 866, 0, 0, 2217, 2218, 3, 804, 402, 0, 2218, 2219, 5, 867, 0, 0, 2219, 2234, 1, 0, 0, 0, 2220, 2222, 5, 101, 0, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2227, 5, 92, 0, 0, 2224, 2225, 5, 308, 0, 0, 2225, 2226, 5, 857, 0, 0, 2226, 2228, 7, 34, 0, 0, 2227, 2224, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2230, 5, 866, 0, 0, 2230, 2231, 3, 660, 330, 0, 2231, 2232, 5, 867, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2213, 1, 0, 0, 0, 2233, 2221, 1, 0, 0, 0, 2234, 115, 1, 0, 0, 0, 2235, 2236, 5, 130, 0, 0, 2236, 2237, 3, 672, 336, 0, 2237, 2238, 5, 189, 0, 0, 2238, 2239, 5, 447, 0, 0, 2239, 2240, 5, 662, 0, 0, 2240, 2241, 5, 866, 0, 0, 2241, 2246, 3, 118, 59, 0, 2242, 2243, 5, 868, 0, 0, 2243, 2245, 3, 118, 59, 0, 2244, 2242, 1, 0, 0, 0, 2245, 2248, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2246, 1, 0, 0, 0, 2249, 2253, 5, 867, 0, 0, 2250, 2252, 3, 124, 62, 0, 2251, 2250, 1, 0, 0, 0, 2252, 2255, 1, 0, 0, 0, 2253, 2251, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2267, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2256, 2257, 5, 866, 0, 0, 2257, 2262, 3, 122, 61, 0, 2258, 2259, 5, 868, 0, 0, 2259, 2261, 3, 122, 61, 0, 2260, 2258, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 2265, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 5, 867, 0, 0, 2266, 2268, 1, 0, 0, 0, 2267, 2256, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2382, 1, 0, 0, 0, 2269, 2270, 5, 130, 0, 0, 2270, 2271, 3, 672, 336, 0, 2271, 2272, 5, 189, 0, 0, 2272, 2273, 5, 447, 0, 0, 2273, 2274, 5, 662, 0, 0, 2274, 2278, 3, 118, 59, 0, 2275, 2277, 3, 124, 62, 0, 2276, 2275, 1, 0, 0, 0, 2277, 2280, 1, 0, 0, 0, 2278, 2276, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 2292, 1, 0, 0, 0, 2280, 2278, 1, 0, 0, 0, 2281, 2282, 5, 866, 0, 0, 2282, 2287, 3, 122, 61, 0, 2283, 2284, 5, 868, 0, 0, 2284, 2286, 3, 122, 61, 0, 2285, 2283, 1, 0, 0, 0, 2286, 2289, 1, 0, 0, 0, 2287, 2285, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 2290, 1, 0, 0, 0, 2289, 2287, 1, 0, 0, 0, 2290, 2291, 5, 867, 0, 0, 2291, 2293, 1, 0, 0, 0, 2292, 2281, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2382, 1, 0, 0, 0, 2294, 2295, 5, 130, 0, 0, 2295, 2296, 3, 672, 336, 0, 2296, 2297, 5, 189, 0, 0, 2297, 2298, 5, 80, 0, 0, 2298, 2299, 5, 866, 0, 0, 2299, 2304, 3, 118, 59, 0, 2300, 2301, 5, 868, 0, 0, 2301, 2303, 3, 118, 59, 0, 2302, 2300, 1, 0, 0, 0, 2303, 2306, 1, 0, 0, 0, 2304, 2302, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, 1, 0, 0, 0, 2306, 2304, 1, 0, 0, 0, 2307, 2311, 5, 867, 0, 0, 2308, 2310, 3, 124, 62, 0, 2309, 2308, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2325, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2315, 5, 866, 0, 0, 2315, 2320, 3, 122, 61, 0, 2316, 2317, 5, 868, 0, 0, 2317, 2319, 3, 122, 61, 0, 2318, 2316, 1, 0, 0, 0, 2319, 2322, 1, 0, 0, 0, 2320, 2318, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2323, 1, 0, 0, 0, 2322, 2320, 1, 0, 0, 0, 2323, 2324, 5, 867, 0, 0, 2324, 2326, 1, 0, 0, 0, 2325, 2314, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2382, 1, 0, 0, 0, 2327, 2328, 5, 130, 0, 0, 2328, 2329, 3, 672, 336, 0, 2329, 2330, 5, 189, 0, 0, 2330, 2331, 5, 80, 0, 0, 2331, 2332, 5, 866, 0, 0, 2332, 2337, 3, 120, 60, 0, 2333, 2334, 5, 868, 0, 0, 2334, 2336, 3, 120, 60, 0, 2335, 2333, 1, 0, 0, 0, 2336, 2339, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2340, 1, 0, 0, 0, 2339, 2337, 1, 0, 0, 0, 2340, 2344, 5, 867, 0, 0, 2341, 2343, 3, 124, 62, 0, 2342, 2341, 1, 0, 0, 0, 2343, 2346, 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2358, 1, 0, 0, 0, 2346, 2344, 1, 0, 0, 0, 2347, 2348, 5, 866, 0, 0, 2348, 2353, 3, 122, 61, 0, 2349, 2350, 5, 868, 0, 0, 2350, 2352, 3, 122, 61, 0, 2351, 2349, 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2357, 5, 867, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2347, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2382, 1, 0, 0, 0, 2360, 2361, 5, 130, 0, 0, 2361, 2365, 3, 672, 336, 0, 2362, 2364, 3, 124, 62, 0, 2363, 2362, 1, 0, 0, 0, 2364, 2367, 1, 0, 0, 0, 2365, 2363, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2379, 1, 0, 0, 0, 2367, 2365, 1, 0, 0, 0, 2368, 2369, 5, 866, 0, 0, 2369, 2374, 3, 122, 61, 0, 2370, 2371, 5, 868, 0, 0, 2371, 2373, 3, 122, 61, 0, 2372, 2370, 1, 0, 0, 0, 2373, 2376, 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2377, 1, 0, 0, 0, 2376, 2374, 1, 0, 0, 0, 2377, 2378, 5, 867, 0, 0, 2378, 2380, 1, 0, 0, 0, 2379, 2368, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2382, 1, 0, 0, 0, 2381, 2235, 1, 0, 0, 0, 2381, 2269, 1, 0, 0, 0, 2381, 2294, 1, 0, 0, 0, 2381, 2327, 1, 0, 0, 0, 2381, 2360, 1, 0, 0, 0, 2382, 117, 1, 0, 0, 0, 2383, 2387, 3, 724, 362, 0, 2384, 2387, 3, 804, 402, 0, 2385, 2387, 5, 111, 0, 0, 2386, 2383, 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2386, 2385, 1, 0, 0, 0, 2387, 119, 1, 0, 0, 0, 2388, 2389, 5, 866, 0, 0, 2389, 2392, 3, 118, 59, 0, 2390, 2391, 5, 868, 0, 0, 2391, 2393, 3, 118, 59, 0, 2392, 2390, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2397, 5, 867, 0, 0, 2397, 121, 1, 0, 0, 0, 2398, 2399, 5, 652, 0, 0, 2399, 2403, 3, 706, 353, 0, 2400, 2402, 3, 124, 62, 0, 2401, 2400, 1, 0, 0, 0, 2402, 2405, 1, 0, 0, 0, 2403, 2401, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 123, 1, 0, 0, 0, 2405, 2403, 1, 0, 0, 0, 2406, 2408, 5, 42, 0, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 1, 0, 0, 0, 2409, 2411, 5, 647, 0, 0, 2410, 2409, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2414, 5, 380, 0, 0, 2413, 2415, 5, 857, 0, 0, 2414, 2413, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2455, 3, 692, 346, 0, 2417, 2419, 5, 340, 0, 0, 2418, 2420, 5, 857, 0, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2455, 5, 882, 0, 0, 2422, 2423, 5, 360, 0, 0, 2423, 2425, 5, 367, 0, 0, 2424, 2426, 5, 857, 0, 0, 2425, 2424, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2455, 5, 882, 0, 0, 2428, 2429, 5, 82, 0, 0, 2429, 2431, 5, 367, 0, 0, 2430, 2432, 5, 857, 0, 0, 2431, 2430, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2455, 5, 882, 0, 0, 2434, 2436, 5, 480, 0, 0, 2435, 2437, 5, 857, 0, 0, 2436, 2435, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2455, 3, 712, 356, 0, 2439, 2441, 5, 490, 0, 0, 2440, 2442, 5, 857, 0, 0, 2441, 2440, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2455, 3, 712, 356, 0, 2444, 2446, 5, 658, 0, 0, 2445, 2447, 5, 857, 0, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2455, 3, 666, 333, 0, 2449, 2451, 5, 504, 0, 0, 2450, 2452, 5, 857, 0, 0, 2451, 2450, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2453, 1, 0, 0, 0, 2453, 2455, 3, 706, 353, 0, 2454, 2407, 1, 0, 0, 0, 2454, 2417, 1, 0, 0, 0, 2454, 2422, 1, 0, 0, 0, 2454, 2428, 1, 0, 0, 0, 2454, 2434, 1, 0, 0, 0, 2454, 2439, 1, 0, 0, 0, 2454, 2444, 1, 0, 0, 0, 2454, 2449, 1, 0, 0, 0, 2455, 125, 1, 0, 0, 0, 2456, 2457, 5, 8, 0, 0, 2457, 2459, 7, 0, 0, 0, 2458, 2460, 3, 628, 314, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2462, 1, 0, 0, 0, 2461, 2463, 3, 56, 28, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2475, 1, 0, 0, 0, 2466, 2467, 5, 8, 0, 0, 2467, 2468, 7, 0, 0, 0, 2468, 2469, 3, 628, 314, 0, 2469, 2470, 5, 677, 0, 0, 2470, 2471, 5, 360, 0, 0, 2471, 2472, 5, 367, 0, 0, 2472, 2473, 5, 496, 0, 0, 2473, 2475, 1, 0, 0, 0, 2474, 2456, 1, 0, 0, 0, 2474, 2466, 1, 0, 0, 0, 2475, 127, 1, 0, 0, 0, 2476, 2478, 5, 8, 0, 0, 2477, 2479, 3, 62, 31, 0, 2478, 2477, 1, 0, 0, 0, 2478, 2479, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2481, 5, 385, 0, 0, 2481, 2485, 3, 702, 351, 0, 2482, 2483, 5, 119, 0, 0, 2483, 2484, 5, 590, 0, 0, 2484, 2486, 3, 64, 32, 0, 2485, 2482, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2493, 1, 0, 0, 0, 2487, 2488, 5, 119, 0, 0, 2488, 2490, 5, 343, 0, 0, 2489, 2491, 5, 114, 0, 0, 2490, 2489, 1, 0, 0, 0, 2490, 2491, 1, 0, 0, 0, 2491, 2492, 1, 0, 0, 0, 2492, 2494, 5, 541, 0, 0, 2493, 2487, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2498, 1, 0, 0, 0, 2495, 2496, 5, 141, 0, 0, 2496, 2497, 5, 176, 0, 0, 2497, 2499, 3, 702, 351, 0, 2498, 2495, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2501, 1, 0, 0, 0, 2500, 2502, 3, 72, 36, 0, 2501, 2500, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2505, 1, 0, 0, 0, 2503, 2504, 5, 340, 0, 0, 2504, 2506, 5, 882, 0, 0, 2505, 2503, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2509, 1, 0, 0, 0, 2507, 2508, 5, 371, 0, 0, 2508, 2510, 3, 422, 211, 0, 2509, 2507, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 129, 1, 0, 0, 0, 2511, 2512, 5, 8, 0, 0, 2512, 2513, 5, 409, 0, 0, 2513, 2517, 3, 632, 316, 0, 2514, 2516, 3, 82, 41, 0, 2515, 2514, 1, 0, 0, 0, 2516, 2519, 1, 0, 0, 0, 2517, 2515, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 131, 1, 0, 0, 0, 2519, 2517, 1, 0, 0, 0, 2520, 2521, 5, 8, 0, 0, 2521, 2522, 5, 433, 0, 0, 2522, 2523, 5, 585, 0, 0, 2523, 2524, 5, 801, 0, 0, 2524, 2525, 5, 453, 0, 0, 2525, 2526, 5, 92, 0, 0, 2526, 133, 1, 0, 0, 0, 2527, 2528, 5, 8, 0, 0, 2528, 2529, 5, 451, 0, 0, 2529, 2530, 5, 74, 0, 0, 2530, 2531, 3, 706, 353, 0, 2531, 2532, 5, 6, 0, 0, 2532, 2533, 5, 671, 0, 0, 2533, 2539, 5, 882, 0, 0, 2534, 2536, 5, 428, 0, 0, 2535, 2537, 5, 857, 0, 0, 2536, 2535, 1, 0, 0, 0, 2536, 2537, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2540, 3, 714, 357, 0, 2539, 2534, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2542, 1, 0, 0, 0, 2541, 2543, 5, 687, 0, 0, 2542, 2541, 1, 0, 0, 0, 2542, 2543, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2546, 5, 380, 0, 0, 2545, 2547, 5, 857, 0, 0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2549, 3, 692, 346, 0, 2549, 135, 1, 0, 0, 0, 2550, 2551, 5, 8, 0, 0, 2551, 2552, 5, 132, 0, 0, 2552, 2556, 3, 702, 351, 0, 2553, 2555, 3, 82, 41, 0, 2554, 2553, 1, 0, 0, 0, 2555, 2558, 1, 0, 0, 0, 2556, 2554, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 137, 1, 0, 0, 0, 2558, 2556, 1, 0, 0, 0, 2559, 2560, 5, 8, 0, 0, 2560, 2561, 5, 592, 0, 0, 2561, 2562, 3, 706, 353, 0, 2562, 2563, 5, 518, 0, 0, 2563, 2564, 5, 866, 0, 0, 2564, 2569, 3, 84, 42, 0, 2565, 2566, 5, 868, 0, 0, 2566, 2568, 3, 84, 42, 0, 2567, 2565, 1, 0, 0, 0, 2568, 2571, 1, 0, 0, 0, 2569, 2567, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 2572, 1, 0, 0, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2573, 5, 867, 0, 0, 2573, 139, 1, 0, 0, 0, 2574, 2575, 5, 8, 0, 0, 2575, 2576, 5, 173, 0, 0, 2576, 2585, 3, 652, 326, 0, 2577, 2582, 3, 146, 73, 0, 2578, 2579, 5, 868, 0, 0, 2579, 2581, 3, 146, 73, 0, 2580, 2578, 1, 0, 0, 0, 2581, 2584, 1, 0, 0, 0, 2582, 2580, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2586, 1, 0, 0, 0, 2584, 2582, 1, 0, 0, 0, 2585, 2577, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2594, 1, 0, 0, 0, 2587, 2591, 3, 148, 74, 0, 2588, 2590, 3, 148, 74, 0, 2589, 2588, 1, 0, 0, 0, 2590, 2593, 1, 0, 0, 0, 2591, 2589, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2595, 1, 0, 0, 0, 2593, 2591, 1, 0, 0, 0, 2594, 2587, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 141, 1, 0, 0, 0, 2596, 2598, 5, 8, 0, 0, 2597, 2599, 5, 180, 0, 0, 2598, 2597, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 5, 658, 0, 0, 2601, 2602, 3, 666, 333, 0, 2602, 2603, 7, 35, 0, 0, 2603, 2604, 5, 361, 0, 0, 2604, 2610, 5, 882, 0, 0, 2605, 2607, 5, 428, 0, 0, 2606, 2608, 5, 857, 0, 0, 2607, 2606, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2611, 3, 714, 357, 0, 2610, 2605, 1, 0, 0, 0, 2610, 2611, 1, 0, 0, 0, 2611, 2613, 1, 0, 0, 0, 2612, 2614, 5, 687, 0, 0, 2613, 2612, 1, 0, 0, 0, 2613, 2614, 1, 0, 0, 0, 2614, 2618, 1, 0, 0, 0, 2615, 2616, 5, 141, 0, 0, 2616, 2617, 5, 176, 0, 0, 2617, 2619, 3, 664, 332, 0, 2618, 2615, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2625, 1, 0, 0, 0, 2620, 2622, 5, 314, 0, 0, 2621, 2623, 5, 857, 0, 0, 2622, 2621, 1, 0, 0, 0, 2622, 2623, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 2626, 3, 714, 357, 0, 2625, 2620, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2629, 1, 0, 0, 0, 2627, 2628, 5, 155, 0, 0, 2628, 2630, 7, 36, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2636, 1, 0, 0, 0, 2631, 2633, 5, 376, 0, 0, 2632, 2634, 5, 857, 0, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2637, 5, 882, 0, 0, 2636, 2631, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2643, 1, 0, 0, 0, 2638, 2640, 5, 380, 0, 0, 2639, 2641, 5, 857, 0, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2644, 3, 692, 346, 0, 2643, 2638, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2650, 1, 0, 0, 0, 2645, 2647, 5, 825, 0, 0, 2646, 2648, 5, 857, 0, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2651, 5, 882, 0, 0, 2650, 2645, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 143, 1, 0, 0, 0, 2652, 2656, 5, 8, 0, 0, 2653, 2654, 5, 308, 0, 0, 2654, 2655, 5, 857, 0, 0, 2655, 2657, 7, 11, 0, 0, 2656, 2653, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2660, 3, 62, 31, 0, 2659, 2658, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2664, 1, 0, 0, 0, 2661, 2662, 5, 162, 0, 0, 2662, 2663, 5, 591, 0, 0, 2663, 2665, 7, 12, 0, 0, 2664, 2661, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2667, 5, 684, 0, 0, 2667, 2672, 3, 636, 318, 0, 2668, 2669, 5, 866, 0, 0, 2669, 2670, 3, 660, 330, 0, 2670, 2671, 5, 867, 0, 0, 2671, 2673, 1, 0, 0, 0, 2672, 2668, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2675, 5, 13, 0, 0, 2675, 2682, 3, 210, 105, 0, 2676, 2678, 5, 194, 0, 0, 2677, 2679, 7, 13, 0, 0, 2678, 2677, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2681, 5, 27, 0, 0, 2681, 2683, 5, 121, 0, 0, 2682, 2676, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 145, 1, 0, 0, 0, 2684, 2691, 3, 104, 52, 0, 2685, 2687, 5, 868, 0, 0, 2686, 2685, 1, 0, 0, 0, 2686, 2687, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2690, 3, 104, 52, 0, 2689, 2686, 1, 0, 0, 0, 2690, 2693, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2949, 1, 0, 0, 0, 2693, 2691, 1, 0, 0, 0, 2694, 2696, 5, 6, 0, 0, 2695, 2697, 5, 29, 0, 0, 2696, 2695, 1, 0, 0, 0, 2696, 2697, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 3, 662, 331, 0, 2699, 2703, 3, 94, 47, 0, 2700, 2704, 5, 402, 0, 0, 2701, 2702, 5, 306, 0, 0, 2702, 2704, 3, 662, 331, 0, 2703, 2700, 1, 0, 0, 0, 2703, 2701, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2949, 1, 0, 0, 0, 2705, 2707, 5, 6, 0, 0, 2706, 2708, 5, 29, 0, 0, 2707, 2706, 1, 0, 0, 0, 2707, 2708, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2710, 5, 866, 0, 0, 2710, 2711, 3, 662, 331, 0, 2711, 2718, 3, 94, 47, 0, 2712, 2713, 5, 868, 0, 0, 2713, 2714, 3, 662, 331, 0, 2714, 2715, 3, 94, 47, 0, 2715, 2717, 1, 0, 0, 0, 2716, 2712, 1, 0, 0, 0, 2717, 2720, 1, 0, 0, 0, 2718, 2716, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2721, 1, 0, 0, 0, 2720, 2718, 1, 0, 0, 0, 2721, 2722, 5, 867, 0, 0, 2722, 2949, 1, 0, 0, 0, 2723, 2724, 5, 6, 0, 0, 2724, 2726, 7, 19, 0, 0, 2725, 2727, 3, 642, 321, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2729, 1, 0, 0, 0, 2728, 2730, 3, 74, 37, 0, 2729, 2728, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2731, 1, 0, 0, 0, 2731, 2735, 3, 738, 369, 0, 2732, 2734, 3, 76, 38, 0, 2733, 2732, 1, 0, 0, 0, 2734, 2737, 1, 0, 0, 0, 2735, 2733, 1, 0, 0, 0, 2735, 2736, 1, 0, 0, 0, 2736, 2949, 1, 0, 0, 0, 2737, 2735, 1, 0, 0, 0, 2738, 2739, 5, 6, 0, 0, 2739, 2741, 7, 20, 0, 0, 2740, 2742, 7, 19, 0, 0, 2741, 2740, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742, 2744, 1, 0, 0, 0, 2743, 2745, 3, 642, 321, 0, 2744, 2743, 1, 0, 0, 0, 2744, 2745, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2750, 3, 738, 369, 0, 2747, 2749, 3, 76, 38, 0, 2748, 2747, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 2949, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2753, 2758, 5, 6, 0, 0, 2754, 2756, 5, 31, 0, 0, 2755, 2757, 3, 706, 353, 0, 2756, 2755, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2759, 1, 0, 0, 0, 2758, 2754, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, 0, 2760, 2761, 5, 131, 0, 0, 2761, 2763, 5, 92, 0, 0, 2762, 2764, 3, 74, 37, 0, 2763, 2762, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2769, 3, 738, 369, 0, 2766, 2768, 3, 76, 38, 0, 2767, 2766, 1, 0, 0, 0, 2768, 2771, 1, 0, 0, 0, 2769, 2767, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2949, 1, 0, 0, 0, 2771, 2769, 1, 0, 0, 0, 2772, 2777, 5, 6, 0, 0, 2773, 2775, 5, 31, 0, 0, 2774, 2776, 3, 706, 353, 0, 2775, 2774, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, 0, 2776, 2778, 1, 0, 0, 0, 2777, 2773, 1, 0, 0, 0, 2777, 2778, 1, 0, 0, 0, 2778, 2779, 1, 0, 0, 0, 2779, 2781, 5, 182, 0, 0, 2780, 2782, 7, 19, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2785, 3, 642, 321, 0, 2784, 2783, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2787, 1, 0, 0, 0, 2786, 2788, 3, 74, 37, 0, 2787, 2786, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, 2788, 2789, 1, 0, 0, 0, 2789, 2793, 3, 738, 369, 0, 2790, 2792, 3, 76, 38, 0, 2791, 2790, 1, 0, 0, 0, 2792, 2795, 1, 0, 0, 0, 2793, 2791, 1, 0, 0, 0, 2793, 2794, 1, 0, 0, 0, 2794, 2949, 1, 0, 0, 0, 2795, 2793, 1, 0, 0, 0, 2796, 2801, 5, 6, 0, 0, 2797, 2799, 5, 31, 0, 0, 2798, 2800, 3, 706, 353, 0, 2799, 2798, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2802, 1, 0, 0, 0, 2801, 2797, 1, 0, 0, 0, 2801, 2802, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 2804, 5, 67, 0, 0, 2804, 2806, 5, 92, 0, 0, 2805, 2807, 3, 642, 321, 0, 2806, 2805, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 3, 738, 369, 0, 2809, 2810, 3, 98, 49, 0, 2810, 2949, 1, 0, 0, 0, 2811, 2813, 5, 6, 0, 0, 2812, 2814, 3, 90, 45, 0, 2813, 2812, 1, 0, 0, 0, 2813, 2814, 1, 0, 0, 0, 2814, 2949, 1, 0, 0, 0, 2815, 2816, 5, 51, 0, 0, 2816, 2817, 7, 37, 0, 0, 2817, 2949, 3, 706, 353, 0, 2818, 2819, 5, 8, 0, 0, 2819, 2820, 7, 37, 0, 0, 2820, 2822, 3, 706, 353, 0, 2821, 2823, 5, 114, 0, 0, 2822, 2821, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2825, 1, 0, 0, 0, 2824, 2826, 5, 57, 0, 0, 2825, 2824, 1, 0, 0, 0, 2825, 2826, 1, 0, 0, 0, 2826, 2949, 1, 0, 0, 0, 2827, 2829, 5, 308, 0, 0, 2828, 2830, 5, 857, 0, 0, 2829, 2828, 1, 0, 0, 0, 2829, 2830, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2949, 7, 38, 0, 0, 2832, 2834, 5, 8, 0, 0, 2833, 2835, 5, 29, 0, 0, 2834, 2833, 1, 0, 0, 0, 2834, 2835, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2844, 3, 662, 331, 0, 2837, 2838, 5, 155, 0, 0, 2838, 2839, 5, 42, 0, 0, 2839, 2845, 3, 754, 377, 0, 2840, 2841, 5, 155, 0, 0, 2841, 2845, 7, 17, 0, 0, 2842, 2843, 5, 51, 0, 0, 2843, 2845, 5, 42, 0, 0, 2844, 2837, 1, 0, 0, 0, 2844, 2840, 1, 0, 0, 0, 2844, 2842, 1, 0, 0, 0, 2845, 2949, 1, 0, 0, 0, 2846, 2847, 5, 8, 0, 0, 2847, 2848, 5, 82, 0, 0, 2848, 2849, 3, 642, 321, 0, 2849, 2850, 7, 17, 0, 0, 2850, 2949, 1, 0, 0, 0, 2851, 2853, 5, 25, 0, 0, 2852, 2854, 5, 29, 0, 0, 2853, 2852, 1, 0, 0, 0, 2853, 2854, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 2856, 3, 662, 331, 0, 2856, 2857, 3, 658, 329, 0, 2857, 2861, 3, 94, 47, 0, 2858, 2862, 5, 402, 0, 0, 2859, 2860, 5, 306, 0, 0, 2860, 2862, 3, 662, 331, 0, 2861, 2858, 1, 0, 0, 0, 2861, 2859, 1, 0, 0, 0, 2861, 2862, 1, 0, 0, 0, 2862, 2949, 1, 0, 0, 0, 2863, 2865, 5, 42, 0, 0, 2864, 2863, 1, 0, 0, 0, 2864, 2865, 1, 0, 0, 0, 2865, 2866, 1, 0, 0, 0, 2866, 2867, 5, 26, 0, 0, 2867, 2868, 5, 155, 0, 0, 2868, 2869, 5, 857, 0, 0, 2869, 2875, 3, 688, 344, 0, 2870, 2872, 5, 28, 0, 0, 2871, 2873, 5, 857, 0, 0, 2872, 2871, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2874, 1, 0, 0, 0, 2874, 2876, 3, 690, 345, 0, 2875, 2870, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2949, 1, 0, 0, 0, 2877, 2878, 5, 33, 0, 0, 2878, 2882, 5, 176, 0, 0, 2879, 2883, 5, 823, 0, 0, 2880, 2881, 5, 26, 0, 0, 2881, 2883, 5, 155, 0, 0, 2882, 2879, 1, 0, 0, 0, 2882, 2880, 1, 0, 0, 0, 2883, 2884, 1, 0, 0, 0, 2884, 2887, 3, 688, 344, 0, 2885, 2886, 5, 28, 0, 0, 2886, 2888, 3, 690, 345, 0, 2887, 2885, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2949, 1, 0, 0, 0, 2889, 2890, 7, 39, 0, 0, 2890, 2949, 5, 93, 0, 0, 2891, 2892, 7, 40, 0, 0, 2892, 2949, 5, 658, 0, 0, 2893, 2895, 5, 51, 0, 0, 2894, 2896, 5, 29, 0, 0, 2895, 2894, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 1, 0, 0, 0, 2897, 2949, 3, 662, 331, 0, 2898, 2899, 5, 51, 0, 0, 2899, 2900, 7, 19, 0, 0, 2900, 2949, 3, 642, 321, 0, 2901, 2902, 5, 51, 0, 0, 2902, 2903, 5, 131, 0, 0, 2903, 2949, 5, 92, 0, 0, 2904, 2905, 5, 51, 0, 0, 2905, 2906, 5, 67, 0, 0, 2906, 2907, 5, 92, 0, 0, 2907, 2949, 3, 706, 353, 0, 2908, 2949, 5, 66, 0, 0, 2909, 2911, 5, 104, 0, 0, 2910, 2912, 5, 857, 0, 0, 2911, 2910, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2949, 7, 4, 0, 0, 2914, 2916, 5, 492, 0, 0, 2915, 2917, 5, 29, 0, 0, 2916, 2915, 1, 0, 0, 0, 2916, 2917, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2919, 3, 662, 331, 0, 2919, 2923, 3, 94, 47, 0, 2920, 2924, 5, 402, 0, 0, 2921, 2922, 5, 306, 0, 0, 2922, 2924, 3, 662, 331, 0, 2923, 2920, 1, 0, 0, 0, 2923, 2921, 1, 0, 0, 0, 2923, 2924, 1, 0, 0, 0, 2924, 2949, 1, 0, 0, 0, 2925, 2926, 5, 125, 0, 0, 2926, 2927, 5, 20, 0, 0, 2927, 2949, 3, 660, 330, 0, 2928, 2929, 5, 141, 0, 0, 2929, 2930, 5, 29, 0, 0, 2930, 2931, 3, 662, 331, 0, 2931, 2932, 5, 176, 0, 0, 2932, 2933, 3, 658, 329, 0, 2933, 2949, 1, 0, 0, 0, 2934, 2935, 5, 141, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 3, 642, 321, 0, 2937, 2938, 5, 176, 0, 0, 2938, 2939, 3, 638, 319, 0, 2939, 2949, 1, 0, 0, 0, 2940, 2942, 5, 141, 0, 0, 2941, 2943, 7, 41, 0, 0, 2942, 2941, 1, 0, 0, 0, 2942, 2943, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2949, 3, 648, 324, 0, 2945, 2946, 7, 42, 0, 0, 2946, 2949, 5, 681, 0, 0, 2947, 2949, 3, 148, 74, 0, 2948, 2684, 1, 0, 0, 0, 2948, 2694, 1, 0, 0, 0, 2948, 2705, 1, 0, 0, 0, 2948, 2723, 1, 0, 0, 0, 2948, 2738, 1, 0, 0, 0, 2948, 2753, 1, 0, 0, 0, 2948, 2772, 1, 0, 0, 0, 2948, 2796, 1, 0, 0, 0, 2948, 2811, 1, 0, 0, 0, 2948, 2815, 1, 0, 0, 0, 2948, 2818, 1, 0, 0, 0, 2948, 2827, 1, 0, 0, 0, 2948, 2832, 1, 0, 0, 0, 2948, 2846, 1, 0, 0, 0, 2948, 2851, 1, 0, 0, 0, 2948, 2864, 1, 0, 0, 0, 2948, 2877, 1, 0, 0, 0, 2948, 2889, 1, 0, 0, 0, 2948, 2891, 1, 0, 0, 0, 2948, 2893, 1, 0, 0, 0, 2948, 2898, 1, 0, 0, 0, 2948, 2901, 1, 0, 0, 0, 2948, 2904, 1, 0, 0, 0, 2948, 2908, 1, 0, 0, 0, 2948, 2909, 1, 0, 0, 0, 2948, 2914, 1, 0, 0, 0, 2948, 2925, 1, 0, 0, 0, 2948, 2928, 1, 0, 0, 0, 2948, 2934, 1, 0, 0, 0, 2948, 2940, 1, 0, 0, 0, 2948, 2945, 1, 0, 0, 0, 2948, 2947, 1, 0, 0, 0, 2949, 147, 1, 0, 0, 0, 2950, 2951, 5, 6, 0, 0, 2951, 2952, 5, 130, 0, 0, 2952, 2953, 5, 866, 0, 0, 2953, 2958, 3, 116, 58, 0, 2954, 2955, 5, 868, 0, 0, 2955, 2957, 3, 116, 58, 0, 2956, 2954, 1, 0, 0, 0, 2957, 2960, 1, 0, 0, 0, 2958, 2956, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2961, 1, 0, 0, 0, 2960, 2958, 1, 0, 0, 0, 2961, 2962, 5, 867, 0, 0, 2962, 3049, 1, 0, 0, 0, 2963, 2964, 5, 51, 0, 0, 2964, 2965, 5, 130, 0, 0, 2965, 3049, 3, 670, 335, 0, 2966, 2967, 5, 369, 0, 0, 2967, 2970, 5, 130, 0, 0, 2968, 2971, 3, 670, 335, 0, 2969, 2971, 5, 7, 0, 0, 2970, 2968, 1, 0, 0, 0, 2970, 2969, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 3049, 5, 658, 0, 0, 2973, 2974, 5, 425, 0, 0, 2974, 2977, 5, 130, 0, 0, 2975, 2978, 3, 670, 335, 0, 2976, 2978, 5, 7, 0, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 3049, 5, 658, 0, 0, 2980, 2981, 5, 668, 0, 0, 2981, 2984, 5, 130, 0, 0, 2982, 2985, 3, 670, 335, 0, 2983, 2985, 5, 7, 0, 0, 2984, 2982, 1, 0, 0, 0, 2984, 2983, 1, 0, 0, 0, 2985, 3049, 1, 0, 0, 0, 2986, 2987, 5, 335, 0, 0, 2987, 2988, 5, 130, 0, 0, 2988, 3049, 3, 712, 356, 0, 2989, 2990, 5, 561, 0, 0, 2990, 2991, 5, 130, 0, 0, 2991, 2992, 3, 670, 335, 0, 2992, 2993, 5, 88, 0, 0, 2993, 2994, 5, 866, 0, 0, 2994, 2999, 3, 116, 58, 0, 2995, 2996, 5, 868, 0, 0, 2996, 2998, 3, 116, 58, 0, 2997, 2995, 1, 0, 0, 0, 2998, 3001, 1, 0, 0, 0, 2999, 2997, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3002, 1, 0, 0, 0, 3001, 2999, 1, 0, 0, 0, 3002, 3003, 5, 867, 0, 0, 3003, 3049, 1, 0, 0, 0, 3004, 3005, 5, 388, 0, 0, 3005, 3006, 5, 130, 0, 0, 3006, 3007, 3, 672, 336, 0, 3007, 3008, 5, 194, 0, 0, 3008, 3009, 5, 173, 0, 0, 3009, 3012, 3, 652, 326, 0, 3010, 3011, 7, 42, 0, 0, 3011, 3013, 5, 681, 0, 0, 3012, 3010, 1, 0, 0, 0, 3012, 3013, 1, 0, 0, 0, 3013, 3049, 1, 0, 0, 0, 3014, 3015, 5, 10, 0, 0, 3015, 3018, 5, 130, 0, 0, 3016, 3019, 3, 670, 335, 0, 3017, 3019, 5, 7, 0, 0, 3018, 3016, 1, 0, 0, 0, 3018, 3017, 1, 0, 0, 0, 3019, 3049, 1, 0, 0, 0, 3020, 3021, 5, 27, 0, 0, 3021, 3024, 5, 130, 0, 0, 3022, 3025, 3, 670, 335, 0, 3023, 3025, 5, 7, 0, 0, 3024, 3022, 1, 0, 0, 0, 3024, 3023, 1, 0, 0, 0, 3025, 3049, 1, 0, 0, 0, 3026, 3027, 5, 120, 0, 0, 3027, 3030, 5, 130, 0, 0, 3028, 3031, 3, 670, 335, 0, 3029, 3031, 5, 7, 0, 0, 3030, 3028, 1, 0, 0, 0, 3030, 3029, 1, 0, 0, 0, 3031, 3049, 1, 0, 0, 0, 3032, 3033, 5, 550, 0, 0, 3033, 3036, 5, 130, 0, 0, 3034, 3037, 3, 670, 335, 0, 3035, 3037, 5, 7, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3035, 1, 0, 0, 0, 3037, 3049, 1, 0, 0, 0, 3038, 3039, 5, 562, 0, 0, 3039, 3042, 5, 130, 0, 0, 3040, 3043, 3, 670, 335, 0, 3041, 3043, 5, 7, 0, 0, 3042, 3040, 1, 0, 0, 0, 3042, 3041, 1, 0, 0, 0, 3043, 3049, 1, 0, 0, 0, 3044, 3045, 5, 560, 0, 0, 3045, 3049, 5, 527, 0, 0, 3046, 3047, 5, 677, 0, 0, 3047, 3049, 5, 527, 0, 0, 3048, 2950, 1, 0, 0, 0, 3048, 2963, 1, 0, 0, 0, 3048, 2966, 1, 0, 0, 0, 3048, 2973, 1, 0, 0, 0, 3048, 2980, 1, 0, 0, 0, 3048, 2986, 1, 0, 0, 0, 3048, 2989, 1, 0, 0, 0, 3048, 3004, 1, 0, 0, 0, 3048, 3014, 1, 0, 0, 0, 3048, 3020, 1, 0, 0, 0, 3048, 3026, 1, 0, 0, 0, 3048, 3032, 1, 0, 0, 0, 3048, 3038, 1, 0, 0, 0, 3048, 3044, 1, 0, 0, 0, 3048, 3046, 1, 0, 0, 0, 3049, 149, 1, 0, 0, 0, 3050, 3051, 5, 51, 0, 0, 3051, 3053, 7, 0, 0, 0, 3052, 3054, 3, 758, 379, 0, 3053, 3052, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055, 3056, 3, 628, 314, 0, 3056, 151, 1, 0, 0, 0, 3057, 3058, 5, 51, 0, 0, 3058, 3060, 5, 385, 0, 0, 3059, 3061, 3, 758, 379, 0, 3060, 3059, 1, 0, 0, 0, 3060, 3061, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3063, 3, 702, 351, 0, 3063, 153, 1, 0, 0, 0, 3064, 3065, 5, 51, 0, 0, 3065, 3067, 5, 82, 0, 0, 3066, 3068, 7, 1, 0, 0, 3067, 3066, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 3, 642, 321, 0, 3070, 3071, 5, 119, 0, 0, 3071, 3084, 3, 652, 326, 0, 3072, 3074, 5, 308, 0, 0, 3073, 3075, 5, 857, 0, 0, 3074, 3073, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 3076, 1, 0, 0, 0, 3076, 3083, 7, 3, 0, 0, 3077, 3079, 5, 104, 0, 0, 3078, 3080, 5, 857, 0, 0, 3079, 3078, 1, 0, 0, 0, 3079, 3080, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 3083, 7, 4, 0, 0, 3082, 3072, 1, 0, 0, 0, 3082, 3077, 1, 0, 0, 0, 3083, 3086, 1, 0, 0, 0, 3084, 3082, 1, 0, 0, 0, 3084, 3085, 1, 0, 0, 0, 3085, 155, 1, 0, 0, 0, 3086, 3084, 1, 0, 0, 0, 3087, 3088, 5, 51, 0, 0, 3088, 3089, 5, 451, 0, 0, 3089, 3090, 5, 74, 0, 0, 3090, 3091, 3, 706, 353, 0, 3091, 3093, 5, 380, 0, 0, 3092, 3094, 5, 857, 0, 0, 3093, 3092, 1, 0, 0, 0, 3093, 3094, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3096, 3, 692, 346, 0, 3096, 157, 1, 0, 0, 0, 3097, 3098, 5, 51, 0, 0, 3098, 3100, 5, 132, 0, 0, 3099, 3101, 3, 758, 379, 0, 3100, 3099, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 3, 702, 351, 0, 3103, 159, 1, 0, 0, 0, 3104, 3105, 5, 51, 0, 0, 3105, 3107, 5, 409, 0, 0, 3106, 3108, 3, 758, 379, 0, 3107, 3106, 1, 0, 0, 0, 3107, 3108, 1, 0, 0, 0, 3108, 3109, 1, 0, 0, 0, 3109, 3110, 3, 632, 316, 0, 3110, 161, 1, 0, 0, 0, 3111, 3112, 5, 51, 0, 0, 3112, 3114, 5, 592, 0, 0, 3113, 3115, 3, 758, 379, 0, 3114, 3113, 1, 0, 0, 0, 3114, 3115, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3117, 3, 706, 353, 0, 3117, 163, 1, 0, 0, 0, 3118, 3119, 5, 51, 0, 0, 3119, 3120, 5, 161, 0, 0, 3120, 3121, 5, 137, 0, 0, 3121, 3123, 5, 835, 0, 0, 3122, 3124, 3, 758, 379, 0, 3123, 3122, 1, 0, 0, 0, 3123, 3124, 1, 0, 0, 0, 3124, 3125, 1, 0, 0, 0, 3125, 3126, 5, 883, 0, 0, 3126, 165, 1, 0, 0, 0, 3127, 3129, 5, 51, 0, 0, 3128, 3130, 5, 660, 0, 0, 3129, 3128, 1, 0, 0, 0, 3129, 3130, 1, 0, 0, 0, 3130, 3131, 1, 0, 0, 0, 3131, 3133, 5, 173, 0, 0, 3132, 3134, 3, 758, 379, 0, 3133, 3132, 1, 0, 0, 0, 3133, 3134, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 3137, 3, 650, 325, 0, 3136, 3138, 7, 43, 0, 0, 3137, 3136, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 167, 1, 0, 0, 0, 3139, 3141, 5, 51, 0, 0, 3140, 3142, 5, 180, 0, 0, 3141, 3140, 1, 0, 0, 0, 3141, 3142, 1, 0, 0, 0, 3142, 3143, 1, 0, 0, 0, 3143, 3144, 5, 658, 0, 0, 3144, 3150, 3, 666, 333, 0, 3145, 3147, 5, 380, 0, 0, 3146, 3148, 5, 857, 0, 0, 3147, 3146, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3151, 3, 692, 346, 0, 3150, 3145, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 169, 1, 0, 0, 0, 3152, 3153, 5, 51, 0, 0, 3153, 3155, 5, 178, 0, 0, 3154, 3156, 3, 758, 379, 0, 3155, 3154, 1, 0, 0, 0, 3155, 3156, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3158, 3, 702, 351, 0, 3158, 171, 1, 0, 0, 0, 3159, 3160, 5, 51, 0, 0, 3160, 3162, 5, 684, 0, 0, 3161, 3163, 3, 758, 379, 0, 3162, 3161, 1, 0, 0, 0, 3162, 3163, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3169, 3, 636, 318, 0, 3165, 3166, 5, 868, 0, 0, 3166, 3168, 3, 636, 318, 0, 3167, 3165, 1, 0, 0, 0, 3168, 3171, 1, 0, 0, 0, 3169, 3167, 1, 0, 0, 0, 3169, 3170, 1, 0, 0, 0, 3170, 3173, 1, 0, 0, 0, 3171, 3169, 1, 0, 0, 0, 3172, 3174, 7, 43, 0, 0, 3173, 3172, 1, 0, 0, 0, 3173, 3174, 1, 0, 0, 0, 3174, 173, 1, 0, 0, 0, 3175, 3176, 5, 51, 0, 0, 3176, 3178, 5, 582, 0, 0, 3177, 3179, 3, 758, 379, 0, 3178, 3177, 1, 0, 0, 0, 3178, 3179, 1, 0, 0, 0, 3179, 3180, 1, 0, 0, 0, 3180, 3181, 3, 654, 327, 0, 3181, 175, 1, 0, 0, 0, 3182, 3183, 5, 155, 0, 0, 3183, 3184, 5, 42, 0, 0, 3184, 3188, 5, 582, 0, 0, 3185, 3189, 5, 505, 0, 0, 3186, 3189, 5, 7, 0, 0, 3187, 3189, 3, 654, 327, 0, 3188, 3185, 1, 0, 0, 0, 3188, 3186, 1, 0, 0, 0, 3188, 3187, 1, 0, 0, 0, 3189, 3190, 1, 0, 0, 0, 3190, 3191, 5, 176, 0, 0, 3191, 3196, 3, 656, 328, 0, 3192, 3193, 5, 868, 0, 0, 3193, 3195, 3, 656, 328, 0, 3194, 3192, 1, 0, 0, 0, 3195, 3198, 1, 0, 0, 0, 3196, 3194, 1, 0, 0, 0, 3196, 3197, 1, 0, 0, 0, 3197, 3203, 1, 0, 0, 0, 3198, 3196, 1, 0, 0, 0, 3199, 3200, 5, 155, 0, 0, 3200, 3201, 5, 582, 0, 0, 3201, 3203, 3, 468, 234, 0, 3202, 3182, 1, 0, 0, 0, 3202, 3199, 1, 0, 0, 0, 3203, 177, 1, 0, 0, 0, 3204, 3205, 5, 141, 0, 0, 3205, 3206, 5, 173, 0, 0, 3206, 3211, 3, 180, 90, 0, 3207, 3208, 5, 868, 0, 0, 3208, 3210, 3, 180, 90, 0, 3209, 3207, 1, 0, 0, 0, 3210, 3213, 1, 0, 0, 0, 3211, 3209, 1, 0, 0, 0, 3211, 3212, 1, 0, 0, 0, 3212, 179, 1, 0, 0, 0, 3213, 3211, 1, 0, 0, 0, 3214, 3215, 3, 652, 326, 0, 3215, 3216, 5, 176, 0, 0, 3216, 3217, 3, 648, 324, 0, 3217, 181, 1, 0, 0, 0, 3218, 3220, 5, 668, 0, 0, 3219, 3221, 5, 173, 0, 0, 3220, 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3223, 3, 652, 326, 0, 3223, 183, 1, 0, 0, 0, 3224, 3225, 5, 21, 0, 0, 3225, 3232, 3, 702, 351, 0, 3226, 3229, 5, 866, 0, 0, 3227, 3230, 3, 748, 374, 0, 3228, 3230, 3, 740, 370, 0, 3229, 3227, 1, 0, 0, 0, 3229, 3228, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0, 3231, 3233, 5, 867, 0, 0, 3232, 3226, 1, 0, 0, 0, 3232, 3233, 1, 0, 0, 0, 3233, 185, 1, 0, 0, 0, 3234, 3237, 3, 240, 120, 0, 3235, 3237, 3, 242, 121, 0, 3236, 3234, 1, 0, 0, 0, 3236, 3235, 1, 0, 0, 0, 3237, 187, 1, 0, 0, 0, 3238, 3239, 5, 371, 0, 0, 3239, 3240, 3, 740, 370, 0, 3240, 189, 1, 0, 0, 0, 3241, 3246, 3, 244, 122, 0, 3242, 3246, 3, 246, 123, 0, 3243, 3246, 3, 248, 124, 0, 3244, 3246, 3, 250, 125, 0, 3245, 3241, 1, 0, 0, 0, 3245, 3242, 1, 0, 0, 0, 3245, 3243, 1, 0, 0, 0, 3245, 3244, 1, 0, 0, 0, 3246, 191, 1, 0, 0, 0, 3247, 3249, 5, 86, 0, 0, 3248, 3250, 7, 44, 0, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3252, 1, 0, 0, 0, 3251, 3253, 5, 79, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3255, 1, 0, 0, 0, 3254, 3256, 5, 88, 0, 0, 3255, 3254, 1, 0, 0, 0, 3255, 3256, 1, 0, 0, 0, 3256, 3257, 1, 0, 0, 0, 3257, 3264, 3, 652, 326, 0, 3258, 3259, 5, 130, 0, 0, 3259, 3261, 5, 866, 0, 0, 3260, 3262, 3, 670, 335, 0, 3261, 3260, 1, 0, 0, 0, 3261, 3262, 1, 0, 0, 0, 3262, 3263, 1, 0, 0, 0, 3263, 3265, 5, 867, 0, 0, 3264, 3258, 1, 0, 0, 0, 3264, 3265, 1, 0, 0, 0, 3265, 3277, 1, 0, 0, 0, 3266, 3268, 3, 268, 134, 0, 3267, 3266, 1, 0, 0, 0, 3267, 3268, 1, 0, 0, 0, 3268, 3271, 1, 0, 0, 0, 3269, 3272, 3, 742, 371, 0, 3270, 3272, 3, 196, 98, 0, 3271, 3269, 1, 0, 0, 0, 3271, 3270, 1, 0, 0, 0, 3271, 3272, 1, 0, 0, 0, 3272, 3274, 1, 0, 0, 0, 3273, 3275, 3, 194, 97, 0, 3274, 3273, 1, 0, 0, 0, 3274, 3275, 1, 0, 0, 0, 3275, 3278, 1, 0, 0, 0, 3276, 3278, 3, 232, 116, 0, 3277, 3267, 1, 0, 0, 0, 3277, 3276, 1, 0, 0, 0, 3278, 3280, 1, 0, 0, 0, 3279, 3281, 3, 194, 97, 0, 3280, 3279, 1, 0, 0, 0, 3280, 3281, 1, 0, 0, 0, 3281, 3294, 1, 0, 0, 0, 3282, 3283, 5, 119, 0, 0, 3283, 3284, 5, 373, 0, 0, 3284, 3285, 5, 92, 0, 0, 3285, 3286, 5, 185, 0, 0, 3286, 3291, 3, 234, 117, 0, 3287, 3288, 5, 868, 0, 0, 3288, 3290, 3, 234, 117, 0, 3289, 3287, 1, 0, 0, 0, 3290, 3293, 1, 0, 0, 0, 3291, 3289, 1, 0, 0, 0, 3291, 3292, 1, 0, 0, 0, 3292, 3295, 1, 0, 0, 0, 3293, 3291, 1, 0, 0, 0, 3294, 3282, 1, 0, 0, 0, 3294, 3295, 1, 0, 0, 0, 3295, 193, 1, 0, 0, 0, 3296, 3297, 5, 13, 0, 0, 3297, 3299, 3, 706, 353, 0, 3298, 3300, 3, 268, 134, 0, 3299, 3298, 1, 0, 0, 0, 3299, 3300, 1, 0, 0, 0, 3300, 195, 1, 0, 0, 0, 3301, 3306, 3, 210, 105, 0, 3302, 3303, 5, 173, 0, 0, 3303, 3306, 3, 652, 326, 0, 3304, 3306, 3, 230, 115, 0, 3305, 3301, 1, 0, 0, 0, 3305, 3302, 1, 0, 0, 0, 3305, 3304, 1, 0, 0, 0, 3306, 197, 1, 0, 0, 0, 3307, 3313, 3, 200, 100, 0, 3308, 3310, 5, 828, 0, 0, 3309, 3311, 7, 45, 0, 0, 3310, 3309, 1, 0, 0, 0, 3310, 3311, 1, 0, 0, 0, 3311, 3312, 1, 0, 0, 0, 3312, 3314, 3, 200, 100, 0, 3313, 3308, 1, 0, 0, 0, 3314, 3315, 1, 0, 0, 0, 3315, 3313, 1, 0, 0, 0, 3315, 3316, 1, 0, 0, 0, 3316, 199, 1, 0, 0, 0, 3317, 3319, 5, 866, 0, 0, 3318, 3317, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3320, 1, 0, 0, 0, 3320, 3322, 3, 280, 140, 0, 3321, 3323, 5, 867, 0, 0, 3322, 3321, 1, 0, 0, 0, 3322, 3323, 1, 0, 0, 0, 3323, 201, 1, 0, 0, 0, 3324, 3325, 5, 103, 0, 0, 3325, 3327, 5, 360, 0, 0, 3326, 3328, 7, 46, 0, 0, 3327, 3326, 1, 0, 0, 0, 3327, 3328, 1, 0, 0, 0, 3328, 3330, 1, 0, 0, 0, 3329, 3331, 5, 450, 0, 0, 3330, 3329, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 3333, 5, 83, 0, 0, 3333, 3335, 5, 882, 0, 0, 3334, 3336, 7, 7, 0, 0, 3335, 3334, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 3337, 1, 0, 0, 0, 3337, 3338, 5, 88, 0, 0, 3338, 3339, 5, 173, 0, 0, 3339, 3345, 3, 652, 326, 0, 3340, 3341, 5, 130, 0, 0, 3341, 3342, 5, 866, 0, 0, 3342, 3343, 3, 670, 335, 0, 3343, 3344, 5, 867, 0, 0, 3344, 3346, 1, 0, 0, 0, 3345, 3340, 1, 0, 0, 0, 3345, 3346, 1, 0, 0, 0, 3346, 3350, 1, 0, 0, 0, 3347, 3348, 5, 26, 0, 0, 3348, 3349, 5, 155, 0, 0, 3349, 3351, 3, 688, 344, 0, 3350, 3347, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 3358, 1, 0, 0, 0, 3352, 3354, 7, 47, 0, 0, 3353, 3355, 3, 304, 152, 0, 3354, 3353, 1, 0, 0, 0, 3355, 3356, 1, 0, 0, 0, 3356, 3354, 1, 0, 0, 0, 3356, 3357, 1, 0, 0, 0, 3357, 3359, 1, 0, 0, 0, 3358, 3352, 1, 0, 0, 0, 3358, 3359, 1, 0, 0, 0, 3359, 3366, 1, 0, 0, 0, 3360, 3362, 5, 102, 0, 0, 3361, 3363, 3, 306, 153, 0, 3362, 3361, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3364, 3365, 1, 0, 0, 0, 3365, 3367, 1, 0, 0, 0, 3366, 3360, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3372, 1, 0, 0, 0, 3368, 3369, 5, 79, 0, 0, 3369, 3370, 3, 712, 356, 0, 3370, 3371, 7, 48, 0, 0, 3371, 3373, 1, 0, 0, 0, 3372, 3368, 1, 0, 0, 0, 3372, 3373, 1, 0, 0, 0, 3373, 3385, 1, 0, 0, 0, 3374, 3375, 5, 866, 0, 0, 3375, 3380, 3, 236, 118, 0, 3376, 3377, 5, 868, 0, 0, 3377, 3379, 3, 236, 118, 0, 3378, 3376, 1, 0, 0, 0, 3379, 3382, 1, 0, 0, 0, 3380, 3378, 1, 0, 0, 0, 3380, 3381, 1, 0, 0, 0, 3381, 3383, 1, 0, 0, 0, 3382, 3380, 1, 0, 0, 0, 3383, 3384, 5, 867, 0, 0, 3384, 3386, 1, 0, 0, 0, 3385, 3374, 1, 0, 0, 0, 3385, 3386, 1, 0, 0, 0, 3386, 3396, 1, 0, 0, 0, 3387, 3388, 5, 155, 0, 0, 3388, 3393, 3, 234, 117, 0, 3389, 3390, 5, 868, 0, 0, 3390, 3392, 3, 234, 117, 0, 3391, 3389, 1, 0, 0, 0, 3392, 3395, 1, 0, 0, 0, 3393, 3391, 1, 0, 0, 0, 3393, 3394, 1, 0, 0, 0, 3394, 3397, 1, 0, 0, 0, 3395, 3393, 1, 0, 0, 0, 3396, 3387, 1, 0, 0, 0, 3396, 3397, 1, 0, 0, 0, 3397, 203, 1, 0, 0, 0, 3398, 3399, 5, 103, 0, 0, 3399, 3401, 5, 695, 0, 0, 3400, 3402, 7, 46, 0, 0, 3401, 3400, 1, 0, 0, 0, 3401, 3402, 1, 0, 0, 0, 3402, 3404, 1, 0, 0, 0, 3403, 3405, 5, 450, 0, 0, 3404, 3403, 1, 0, 0, 0, 3404, 3405, 1, 0, 0, 0, 3405, 3406, 1, 0, 0, 0, 3406, 3407, 5, 83, 0, 0, 3407, 3409, 5, 882, 0, 0, 3408, 3410, 7, 7, 0, 0, 3409, 3408, 1, 0, 0, 0, 3409, 3410, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3412, 5, 88, 0, 0, 3412, 3413, 5, 173, 0, 0, 3413, 3417, 3, 652, 326, 0, 3414, 3415, 5, 26, 0, 0, 3415, 3416, 5, 155, 0, 0, 3416, 3418, 3, 688, 344, 0, 3417, 3414, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3429, 1, 0, 0, 0, 3419, 3420, 5, 587, 0, 0, 3420, 3421, 5, 423, 0, 0, 3421, 3423, 5, 20, 0, 0, 3422, 3424, 5, 859, 0, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3427, 5, 882, 0, 0, 3426, 3428, 5, 858, 0, 0, 3427, 3426, 1, 0, 0, 0, 3427, 3428, 1, 0, 0, 0, 3428, 3430, 1, 0, 0, 0, 3429, 3419, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 3435, 1, 0, 0, 0, 3431, 3432, 5, 79, 0, 0, 3432, 3433, 3, 712, 356, 0, 3433, 3434, 7, 48, 0, 0, 3434, 3436, 1, 0, 0, 0, 3435, 3431, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3448, 1, 0, 0, 0, 3437, 3438, 5, 866, 0, 0, 3438, 3443, 3, 236, 118, 0, 3439, 3440, 5, 868, 0, 0, 3440, 3442, 3, 236, 118, 0, 3441, 3439, 1, 0, 0, 0, 3442, 3445, 1, 0, 0, 0, 3443, 3441, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3446, 1, 0, 0, 0, 3445, 3443, 1, 0, 0, 0, 3446, 3447, 5, 867, 0, 0, 3447, 3449, 1, 0, 0, 0, 3448, 3437, 1, 0, 0, 0, 3448, 3449, 1, 0, 0, 0, 3449, 3459, 1, 0, 0, 0, 3450, 3451, 5, 155, 0, 0, 3451, 3456, 3, 234, 117, 0, 3452, 3453, 5, 868, 0, 0, 3453, 3455, 3, 234, 117, 0, 3454, 3452, 1, 0, 0, 0, 3455, 3458, 1, 0, 0, 0, 3456, 3454, 1, 0, 0, 0, 3456, 3457, 1, 0, 0, 0, 3457, 3460, 1, 0, 0, 0, 3458, 3456, 1, 0, 0, 0, 3459, 3450, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 205, 1, 0, 0, 0, 3461, 3462, 5, 866, 0, 0, 3462, 3464, 3, 224, 112, 0, 3463, 3465, 3, 258, 129, 0, 3464, 3463, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3467, 1, 0, 0, 0, 3466, 3468, 3, 318, 159, 0, 3467, 3466, 1, 0, 0, 0, 3467, 3468, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3471, 5, 867, 0, 0, 3470, 3472, 3, 258, 129, 0, 3471, 3470, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3474, 1, 0, 0, 0, 3473, 3475, 3, 318, 159, 0, 3474, 3473, 1, 0, 0, 0, 3474, 3475, 1, 0, 0, 0, 3475, 3477, 1, 0, 0, 0, 3476, 3478, 3, 302, 151, 0, 3477, 3476, 1, 0, 0, 0, 3477, 3478, 1, 0, 0, 0, 3478, 207, 1, 0, 0, 0, 3479, 3481, 5, 143, 0, 0, 3480, 3482, 7, 49, 0, 0, 3481, 3480, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3484, 1, 0, 0, 0, 3483, 3485, 5, 88, 0, 0, 3484, 3483, 1, 0, 0, 0, 3484, 3485, 1, 0, 0, 0, 3485, 3486, 1, 0, 0, 0, 3486, 3492, 3, 652, 326, 0, 3487, 3488, 5, 130, 0, 0, 3488, 3489, 5, 866, 0, 0, 3489, 3490, 3, 670, 335, 0, 3490, 3491, 5, 867, 0, 0, 3491, 3493, 1, 0, 0, 0, 3492, 3487, 1, 0, 0, 0, 3492, 3493, 1, 0, 0, 0, 3493, 3502, 1, 0, 0, 0, 3494, 3495, 5, 866, 0, 0, 3495, 3496, 3, 660, 330, 0, 3496, 3497, 5, 867, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3494, 1, 0, 0, 0, 3498, 3499, 1, 0, 0, 0, 3499, 3500, 1, 0, 0, 0, 3500, 3503, 3, 228, 114, 0, 3501, 3503, 3, 232, 116, 0, 3502, 3498, 1, 0, 0, 0, 3502, 3501, 1, 0, 0, 0, 3503, 209, 1, 0, 0, 0, 3504, 3508, 3, 280, 140, 0, 3505, 3507, 3, 282, 141, 0, 3506, 3505, 1, 0, 0, 0, 3507, 3510, 1, 0, 0, 0, 3508, 3506, 1, 0, 0, 0, 3508, 3509, 1, 0, 0, 0, 3509, 3519, 1, 0, 0, 0, 3510, 3508, 1, 0, 0, 0, 3511, 3513, 5, 181, 0, 0, 3512, 3514, 7, 45, 0, 0, 3513, 3512, 1, 0, 0, 0, 3513, 3514, 1, 0, 0, 0, 3514, 3517, 1, 0, 0, 0, 3515, 3518, 3, 280, 140, 0, 3516, 3518, 3, 278, 139, 0, 3517, 3515, 1, 0, 0, 0, 3517, 3516, 1, 0, 0, 0, 3518, 3520, 1, 0, 0, 0, 3519, 3511, 1, 0, 0, 0, 3519, 3520, 1, 0, 0, 0, 3520, 3525, 1, 0, 0, 0, 3521, 3522, 5, 868, 0, 0, 3522, 3524, 3, 284, 142, 0, 3523, 3521, 1, 0, 0, 0, 3524, 3527, 1, 0, 0, 0, 3525, 3523, 1, 0, 0, 0, 3525, 3526, 1, 0, 0, 0, 3526, 3529, 1, 0, 0, 0, 3527, 3525, 1, 0, 0, 0, 3528, 3530, 3, 258, 129, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3532, 1, 0, 0, 0, 3531, 3533, 3, 318, 159, 0, 3532, 3531, 1, 0, 0, 0, 3532, 3533, 1, 0, 0, 0, 3533, 3535, 1, 0, 0, 0, 3534, 3536, 3, 238, 119, 0, 3535, 3534, 1, 0, 0, 0, 3535, 3536, 1, 0, 0, 0, 3536, 3538, 1, 0, 0, 0, 3537, 3539, 3, 302, 151, 0, 3538, 3537, 1, 0, 0, 0, 3538, 3539, 1, 0, 0, 0, 3539, 3564, 1, 0, 0, 0, 3540, 3544, 3, 278, 139, 0, 3541, 3543, 3, 282, 141, 0, 3542, 3541, 1, 0, 0, 0, 3543, 3546, 1, 0, 0, 0, 3544, 3542, 1, 0, 0, 0, 3544, 3545, 1, 0, 0, 0, 3545, 3552, 1, 0, 0, 0, 3546, 3544, 1, 0, 0, 0, 3547, 3549, 5, 181, 0, 0, 3548, 3550, 7, 45, 0, 0, 3549, 3548, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 3551, 1, 0, 0, 0, 3551, 3553, 3, 278, 139, 0, 3552, 3547, 1, 0, 0, 0, 3552, 3553, 1, 0, 0, 0, 3553, 3555, 1, 0, 0, 0, 3554, 3556, 3, 258, 129, 0, 3555, 3554, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3558, 1, 0, 0, 0, 3557, 3559, 3, 318, 159, 0, 3558, 3557, 1, 0, 0, 0, 3558, 3559, 1, 0, 0, 0, 3559, 3561, 1, 0, 0, 0, 3560, 3562, 3, 238, 119, 0, 3561, 3560, 1, 0, 0, 0, 3561, 3562, 1, 0, 0, 0, 3562, 3564, 1, 0, 0, 0, 3563, 3504, 1, 0, 0, 0, 3563, 3540, 1, 0, 0, 0, 3564, 211, 1, 0, 0, 0, 3565, 3567, 3, 50, 25, 0, 3566, 3565, 1, 0, 0, 0, 3566, 3567, 1, 0, 0, 0, 3567, 3568, 1, 0, 0, 0, 3568, 3570, 3, 214, 107, 0, 3569, 3571, 3, 258, 129, 0, 3570, 3569, 1, 0, 0, 0, 3570, 3571, 1, 0, 0, 0, 3571, 3573, 1, 0, 0, 0, 3572, 3574, 3, 318, 159, 0, 3573, 3572, 1, 0, 0, 0, 3573, 3574, 1, 0, 0, 0, 3574, 3576, 1, 0, 0, 0, 3575, 3577, 3, 302, 151, 0, 3576, 3575, 1, 0, 0, 0, 3576, 3577, 1, 0, 0, 0, 3577, 213, 1, 0, 0, 0, 3578, 3579, 6, 107, -1, 0, 3579, 3580, 3, 216, 108, 0, 3580, 3595, 1, 0, 0, 0, 3581, 3582, 10, 2, 0, 0, 3582, 3584, 5, 181, 0, 0, 3583, 3585, 7, 45, 0, 0, 3584, 3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3586, 1, 0, 0, 0, 3586, 3594, 3, 216, 108, 0, 3587, 3588, 10, 1, 0, 0, 3588, 3590, 5, 59, 0, 0, 3589, 3591, 7, 45, 0, 0, 3590, 3589, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3592, 1, 0, 0, 0, 3592, 3594, 3, 216, 108, 0, 3593, 3581, 1, 0, 0, 0, 3593, 3587, 1, 0, 0, 0, 3594, 3597, 1, 0, 0, 0, 3595, 3593, 1, 0, 0, 0, 3595, 3596, 1, 0, 0, 0, 3596, 215, 1, 0, 0, 0, 3597, 3595, 1, 0, 0, 0, 3598, 3599, 6, 108, -1, 0, 3599, 3600, 3, 218, 109, 0, 3600, 3609, 1, 0, 0, 0, 3601, 3602, 10, 1, 0, 0, 3602, 3604, 5, 828, 0, 0, 3603, 3605, 7, 45, 0, 0, 3604, 3603, 1, 0, 0, 0, 3604, 3605, 1, 0, 0, 0, 3605, 3606, 1, 0, 0, 0, 3606, 3608, 3, 218, 109, 0, 3607, 3601, 1, 0, 0, 0, 3608, 3611, 1, 0, 0, 0, 3609, 3607, 1, 0, 0, 0, 3609, 3610, 1, 0, 0, 0, 3610, 217, 1, 0, 0, 0, 3611, 3609, 1, 0, 0, 0, 3612, 3627, 3, 226, 113, 0, 3613, 3614, 5, 866, 0, 0, 3614, 3616, 3, 214, 107, 0, 3615, 3617, 3, 258, 129, 0, 3616, 3615, 1, 0, 0, 0, 3616, 3617, 1, 0, 0, 0, 3617, 3619, 1, 0, 0, 0, 3618, 3620, 3, 318, 159, 0, 3619, 3618, 1, 0, 0, 0, 3619, 3620, 1, 0, 0, 0, 3620, 3622, 1, 0, 0, 0, 3621, 3623, 3, 302, 151, 0, 3622, 3621, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3624, 1, 0, 0, 0, 3624, 3625, 5, 867, 0, 0, 3625, 3627, 1, 0, 0, 0, 3626, 3612, 1, 0, 0, 0, 3626, 3613, 1, 0, 0, 0, 3627, 219, 1, 0, 0, 0, 3628, 3631, 3, 254, 127, 0, 3629, 3631, 3, 256, 128, 0, 3630, 3628, 1, 0, 0, 0, 3630, 3629, 1, 0, 0, 0, 3631, 221, 1, 0, 0, 0, 3632, 3636, 3, 230, 115, 0, 3633, 3634, 5, 125, 0, 0, 3634, 3635, 5, 20, 0, 0, 3635, 3637, 3, 674, 337, 0, 3636, 3633, 1, 0, 0, 0, 3636, 3637, 1, 0, 0, 0, 3637, 3640, 1, 0, 0, 0, 3638, 3639, 5, 100, 0, 0, 3639, 3641, 3, 320, 160, 0, 3640, 3638, 1, 0, 0, 0, 3640, 3641, 1, 0, 0, 0, 3641, 223, 1, 0, 0, 0, 3642, 3647, 3, 226, 113, 0, 3643, 3644, 7, 50, 0, 0, 3644, 3646, 3, 226, 113, 0, 3645, 3643, 1, 0, 0, 0, 3646, 3649, 1, 0, 0, 0, 3647, 3645, 1, 0, 0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3651, 1, 0, 0, 0, 3649, 3647, 1, 0, 0, 0, 3650, 3652, 3, 258, 129, 0, 3651, 3650, 1, 0, 0, 0, 3651, 3652, 1, 0, 0, 0, 3652, 3654, 1, 0, 0, 0, 3653, 3655, 3, 318, 159, 0, 3654, 3653, 1, 0, 0, 0, 3654, 3655, 1, 0, 0, 0, 3655, 3657, 1, 0, 0, 0, 3656, 3658, 3, 302, 151, 0, 3657, 3656, 1, 0, 0, 0, 3657, 3658, 1, 0, 0, 0, 3658, 225, 1, 0, 0, 0, 3659, 3663, 3, 210, 105, 0, 3660, 3663, 3, 618, 309, 0, 3661, 3663, 3, 222, 111, 0, 3662, 3659, 1, 0, 0, 0, 3662, 3660, 1, 0, 0, 0, 3662, 3661, 1, 0, 0, 0, 3663, 227, 1, 0, 0, 0, 3664, 3670, 3, 210, 105, 0, 3665, 3666, 5, 173, 0, 0, 3666, 3670, 3, 652, 326, 0, 3667, 3670, 3, 742, 371, 0, 3668, 3670, 3, 230, 115, 0, 3669, 3664, 1, 0, 0, 0, 3669, 3665, 1, 0, 0, 0, 3669, 3667, 1, 0, 0, 0, 3669, 3668, 1, 0, 0, 0, 3670, 229, 1, 0, 0, 0, 3671, 3672, 5, 189, 0, 0, 3672, 3673, 5, 586, 0, 0, 3673, 3679, 3, 744, 372, 0, 3674, 3675, 5, 868, 0, 0, 3675, 3676, 5, 586, 0, 0, 3676, 3678, 3, 744, 372, 0, 3677, 3674, 1, 0, 0, 0, 3678, 3681, 1, 0, 0, 0, 3679, 3677, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 231, 1, 0, 0, 0, 3681, 3679, 1, 0, 0, 0, 3682, 3683, 5, 155, 0, 0, 3683, 3688, 3, 234, 117, 0, 3684, 3685, 5, 868, 0, 0, 3685, 3687, 3, 234, 117, 0, 3686, 3684, 1, 0, 0, 0, 3687, 3690, 1, 0, 0, 0, 3688, 3686, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 233, 1, 0, 0, 0, 3690, 3688, 1, 0, 0, 0, 3691, 3692, 3, 662, 331, 0, 3692, 3693, 5, 857, 0, 0, 3693, 3694, 3, 746, 373, 0, 3694, 235, 1, 0, 0, 0, 3695, 3698, 3, 706, 353, 0, 3696, 3698, 5, 892, 0, 0, 3697, 3695, 1, 0, 0, 0, 3697, 3696, 1, 0, 0, 0, 3698, 237, 1, 0, 0, 0, 3699, 3700, 5, 65, 0, 0, 3700, 3710, 7, 51, 0, 0, 3701, 3702, 5, 510, 0, 0, 3702, 3707, 3, 652, 326, 0, 3703, 3704, 5, 868, 0, 0, 3704, 3706, 3, 652, 326, 0, 3705, 3703, 1, 0, 0, 0, 3706, 3709, 1, 0, 0, 0, 3707, 3705, 1, 0, 0, 0, 3707, 3708, 1, 0, 0, 0, 3708, 3711, 1, 0, 0, 0, 3709, 3707, 1, 0, 0, 0, 3710, 3701, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3714, 1, 0, 0, 0, 3712, 3713, 7, 52, 0, 0, 3713, 3715, 5, 105, 0, 0, 3714, 3712, 1, 0, 0, 0, 3714, 3715, 1, 0, 0, 0, 3715, 3721, 1, 0, 0, 0, 3716, 3717, 5, 104, 0, 0, 3717, 3718, 5, 80, 0, 0, 3718, 3719, 5, 594, 0, 0, 3719, 3721, 5, 491, 0, 0, 3720, 3699, 1, 0, 0, 0, 3720, 3716, 1, 0, 0, 0, 3721, 239, 1, 0, 0, 0, 3722, 3724, 5, 44, 0, 0, 3723, 3725, 5, 107, 0, 0, 3724, 3723, 1, 0, 0, 0, 3724, 3725, 1, 0, 0, 0, 3725, 3727, 1, 0, 0, 0, 3726, 3728, 5, 549, 0, 0, 3727, 3726, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3730, 1, 0, 0, 0, 3729, 3731, 5, 79, 0, 0, 3730, 3729, 1, 0, 0, 0, 3730, 3731, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3733, 5, 68, 0, 0, 3733, 3738, 3, 652, 326, 0, 3734, 3736, 5, 13, 0, 0, 3735, 3734, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3737, 1, 0, 0, 0, 3737, 3739, 3, 706, 353, 0, 3738, 3735, 1, 0, 0, 0, 3738, 3739, 1, 0, 0, 0, 3739, 3745, 1, 0, 0, 0, 3740, 3741, 5, 130, 0, 0, 3741, 3742, 5, 866, 0, 0, 3742, 3743, 3, 670, 335, 0, 3743, 3744, 5, 867, 0, 0, 3744, 3746, 1, 0, 0, 0, 3745, 3740, 1, 0, 0, 0, 3745, 3746, 1, 0, 0, 0, 3746, 3749, 1, 0, 0, 0, 3747, 3748, 5, 192, 0, 0, 3748, 3750, 3, 804, 402, 0, 3749, 3747, 1, 0, 0, 0, 3749, 3750, 1, 0, 0, 0, 3750, 3752, 1, 0, 0, 0, 3751, 3753, 3, 258, 129, 0, 3752, 3751, 1, 0, 0, 0, 3752, 3753, 1, 0, 0, 0, 3753, 3756, 1, 0, 0, 0, 3754, 3755, 5, 100, 0, 0, 3755, 3757, 3, 320, 160, 0, 3756, 3754, 1, 0, 0, 0, 3756, 3757, 1, 0, 0, 0, 3757, 241, 1, 0, 0, 0, 3758, 3760, 5, 44, 0, 0, 3759, 3761, 5, 107, 0, 0, 3760, 3759, 1, 0, 0, 0, 3760, 3761, 1, 0, 0, 0, 3761, 3763, 1, 0, 0, 0, 3762, 3764, 5, 549, 0, 0, 3763, 3762, 1, 0, 0, 0, 3763, 3764, 1, 0, 0, 0, 3764, 3766, 1, 0, 0, 0, 3765, 3767, 5, 79, 0, 0, 3766, 3765, 1, 0, 0, 0, 3766, 3767, 1, 0, 0, 0, 3767, 3807, 1, 0, 0, 0, 3768, 3771, 3, 652, 326, 0, 3769, 3770, 5, 865, 0, 0, 3770, 3772, 5, 850, 0, 0, 3771, 3769, 1, 0, 0, 0, 3771, 3772, 1, 0, 0, 0, 3772, 3781, 1, 0, 0, 0, 3773, 3774, 5, 868, 0, 0, 3774, 3777, 3, 652, 326, 0, 3775, 3776, 5, 865, 0, 0, 3776, 3778, 5, 850, 0, 0, 3777, 3775, 1, 0, 0, 0, 3777, 3778, 1, 0, 0, 0, 3778, 3780, 1, 0, 0, 0, 3779, 3773, 1, 0, 0, 0, 3780, 3783, 1, 0, 0, 0, 3781, 3779, 1, 0, 0, 0, 3781, 3782, 1, 0, 0, 0, 3782, 3784, 1, 0, 0, 0, 3783, 3781, 1, 0, 0, 0, 3784, 3785, 5, 68, 0, 0, 3785, 3786, 3, 262, 131, 0, 3786, 3808, 1, 0, 0, 0, 3787, 3788, 5, 68, 0, 0, 3788, 3791, 3, 652, 326, 0, 3789, 3790, 5, 865, 0, 0, 3790, 3792, 5, 850, 0, 0, 3791, 3789, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3801, 1, 0, 0, 0, 3793, 3794, 5, 868, 0, 0, 3794, 3797, 3, 652, 326, 0, 3795, 3796, 5, 865, 0, 0, 3796, 3798, 5, 850, 0, 0, 3797, 3795, 1, 0, 0, 0, 3797, 3798, 1, 0, 0, 0, 3798, 3800, 1, 0, 0, 0, 3799, 3793, 1, 0, 0, 0, 3800, 3803, 1, 0, 0, 0, 3801, 3799, 1, 0, 0, 0, 3801, 3802, 1, 0, 0, 0, 3802, 3804, 1, 0, 0, 0, 3803, 3801, 1, 0, 0, 0, 3804, 3805, 5, 188, 0, 0, 3805, 3806, 3, 262, 131, 0, 3806, 3808, 1, 0, 0, 0, 3807, 3768, 1, 0, 0, 0, 3807, 3787, 1, 0, 0, 0, 3808, 3811, 1, 0, 0, 0, 3809, 3810, 5, 192, 0, 0, 3810, 3812, 3, 804, 402, 0, 3811, 3809, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 243, 1, 0, 0, 0, 3813, 3814, 5, 417, 0, 0, 3814, 3815, 3, 652, 326, 0, 3815, 3820, 5, 516, 0, 0, 3816, 3818, 5, 13, 0, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3821, 3, 706, 353, 0, 3820, 3817, 1, 0, 0, 0, 3820, 3821, 1, 0, 0, 0, 3821, 245, 1, 0, 0, 0, 3822, 3823, 5, 417, 0, 0, 3823, 3824, 3, 652, 326, 0, 3824, 3825, 5, 135, 0, 0, 3825, 3832, 3, 642, 321, 0, 3826, 3827, 3, 814, 407, 0, 3827, 3828, 5, 866, 0, 0, 3828, 3829, 3, 748, 374, 0, 3829, 3830, 5, 867, 0, 0, 3830, 3833, 1, 0, 0, 0, 3831, 3833, 7, 53, 0, 0, 3832, 3826, 1, 0, 0, 0, 3832, 3831, 1, 0, 0, 0, 3833, 3836, 1, 0, 0, 0, 3834, 3835, 5, 192, 0, 0, 3835, 3837, 3, 804, 402, 0, 3836, 3834, 1, 0, 0, 0, 3836, 3837, 1, 0, 0, 0, 3837, 3840, 1, 0, 0, 0, 3838, 3839, 5, 100, 0, 0, 3839, 3841, 3, 320, 160, 0, 3840, 3838, 1, 0, 0, 0, 3840, 3841, 1, 0, 0, 0, 3841, 247, 1, 0, 0, 0, 3842, 3843, 5, 417, 0, 0, 3843, 3844, 3, 652, 326, 0, 3844, 3845, 5, 135, 0, 0, 3845, 3848, 7, 54, 0, 0, 3846, 3847, 5, 192, 0, 0, 3847, 3849, 3, 804, 402, 0, 3848, 3846, 1, 0, 0, 0, 3848, 3849, 1, 0, 0, 0, 3849, 3852, 1, 0, 0, 0, 3850, 3851, 5, 100, 0, 0, 3851, 3853, 3, 320, 160, 0, 3852, 3850, 1, 0, 0, 0, 3852, 3853, 1, 0, 0, 0, 3853, 249, 1, 0, 0, 0, 3854, 3855, 5, 417, 0, 0, 3855, 3856, 3, 652, 326, 0, 3856, 3857, 5, 334, 0, 0, 3857, 251, 1, 0, 0, 0, 3858, 3859, 5, 425, 0, 0, 3859, 3860, 5, 173, 0, 0, 3860, 3861, 5, 68, 0, 0, 3861, 3866, 3, 716, 358, 0, 3862, 3863, 5, 868, 0, 0, 3863, 3865, 3, 716, 358, 0, 3864, 3862, 1, 0, 0, 0, 3865, 3868, 1, 0, 0, 0, 3866, 3864, 1, 0, 0, 0, 3866, 3867, 1, 0, 0, 0, 3867, 253, 1, 0, 0, 0, 3868, 3866, 1, 0, 0, 0, 3869, 3871, 5, 185, 0, 0, 3870, 3872, 5, 107, 0, 0, 3871, 3870, 1, 0, 0, 0, 3871, 3872, 1, 0, 0, 0, 3872, 3874, 1, 0, 0, 0, 3873, 3875, 5, 79, 0, 0, 3874, 3873, 1, 0, 0, 0, 3874, 3875, 1, 0, 0, 0, 3875, 3876, 1, 0, 0, 0, 3876, 3881, 3, 652, 326, 0, 3877, 3879, 5, 13, 0, 0, 3878, 3877, 1, 0, 0, 0, 3878, 3879, 1, 0, 0, 0, 3879, 3880, 1, 0, 0, 0, 3880, 3882, 3, 706, 353, 0, 3881, 3878, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 3883, 1, 0, 0, 0, 3883, 3884, 5, 155, 0, 0, 3884, 3889, 3, 234, 117, 0, 3885, 3886, 5, 868, 0, 0, 3886, 3888, 3, 234, 117, 0, 3887, 3885, 1, 0, 0, 0, 3888, 3891, 1, 0, 0, 0, 3889, 3887, 1, 0, 0, 0, 3889, 3890, 1, 0, 0, 0, 3890, 3894, 1, 0, 0, 0, 3891, 3889, 1, 0, 0, 0, 3892, 3893, 5, 192, 0, 0, 3893, 3895, 3, 804, 402, 0, 3894, 3892, 1, 0, 0, 0, 3894, 3895, 1, 0, 0, 0, 3895, 3897, 1, 0, 0, 0, 3896, 3898, 3, 258, 129, 0, 3897, 3896, 1, 0, 0, 0, 3897, 3898, 1, 0, 0, 0, 3898, 3900, 1, 0, 0, 0, 3899, 3901, 3, 318, 159, 0, 3900, 3899, 1, 0, 0, 0, 3900, 3901, 1, 0, 0, 0, 3901, 255, 1, 0, 0, 0, 3902, 3904, 5, 185, 0, 0, 3903, 3905, 5, 107, 0, 0, 3904, 3903, 1, 0, 0, 0, 3904, 3905, 1, 0, 0, 0, 3905, 3907, 1, 0, 0, 0, 3906, 3908, 5, 79, 0, 0, 3907, 3906, 1, 0, 0, 0, 3907, 3908, 1, 0, 0, 0, 3908, 3909, 1, 0, 0, 0, 3909, 3910, 3, 262, 131, 0, 3910, 3911, 5, 155, 0, 0, 3911, 3916, 3, 234, 117, 0, 3912, 3913, 5, 868, 0, 0, 3913, 3915, 3, 234, 117, 0, 3914, 3912, 1, 0, 0, 0, 3915, 3918, 1, 0, 0, 0, 3916, 3914, 1, 0, 0, 0, 3916, 3917, 1, 0, 0, 0, 3917, 3921, 1, 0, 0, 0, 3918, 3916, 1, 0, 0, 0, 3919, 3920, 5, 192, 0, 0, 3920, 3922, 3, 804, 402, 0, 3921, 3919, 1, 0, 0, 0, 3921, 3922, 1, 0, 0, 0, 3922, 257, 1, 0, 0, 0, 3923, 3924, 5, 125, 0, 0, 3924, 3925, 5, 20, 0, 0, 3925, 3930, 3, 260, 130, 0, 3926, 3927, 5, 868, 0, 0, 3927, 3929, 3, 260, 130, 0, 3928, 3926, 1, 0, 0, 0, 3929, 3932, 1, 0, 0, 0, 3930, 3928, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 259, 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3933, 3935, 3, 804, 402, 0, 3934, 3936, 7, 55, 0, 0, 3935, 3934, 1, 0, 0, 0, 3935, 3936, 1, 0, 0, 0, 3936, 261, 1, 0, 0, 0, 3937, 3942, 3, 264, 132, 0, 3938, 3939, 5, 868, 0, 0, 3939, 3941, 3, 264, 132, 0, 3940, 3938, 1, 0, 0, 0, 3941, 3944, 1, 0, 0, 0, 3942, 3940, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 263, 1, 0, 0, 0, 3944, 3942, 1, 0, 0, 0, 3945, 3949, 3, 266, 133, 0, 3946, 3948, 3, 274, 137, 0, 3947, 3946, 1, 0, 0, 0, 3948, 3951, 1, 0, 0, 0, 3949, 3947, 1, 0, 0, 0, 3949, 3950, 1, 0, 0, 0, 3950, 3964, 1, 0, 0, 0, 3951, 3949, 1, 0, 0, 0, 3952, 3953, 5, 866, 0, 0, 3953, 3957, 3, 266, 133, 0, 3954, 3956, 3, 274, 137, 0, 3955, 3954, 1, 0, 0, 0, 3956, 3959, 1, 0, 0, 0, 3957, 3955, 1, 0, 0, 0, 3957, 3958, 1, 0, 0, 0, 3958, 3960, 1, 0, 0, 0, 3959, 3957, 1, 0, 0, 0, 3960, 3961, 5, 867, 0, 0, 3961, 3964, 1, 0, 0, 0, 3962, 3964, 3, 286, 143, 0, 3963, 3945, 1, 0, 0, 0, 3963, 3952, 1, 0, 0, 0, 3963, 3962, 1, 0, 0, 0, 3964, 265, 1, 0, 0, 0, 3965, 3971, 3, 652, 326, 0, 3966, 3967, 5, 130, 0, 0, 3967, 3968, 5, 866, 0, 0, 3968, 3969, 3, 670, 335, 0, 3969, 3970, 5, 867, 0, 0, 3970, 3972, 1, 0, 0, 0, 3971, 3966, 1, 0, 0, 0, 3971, 3972, 1, 0, 0, 0, 3972, 3977, 1, 0, 0, 0, 3973, 3975, 5, 13, 0, 0, 3974, 3973, 1, 0, 0, 0, 3974, 3975, 1, 0, 0, 0, 3975, 3976, 1, 0, 0, 0, 3976, 3978, 3, 706, 353, 0, 3977, 3974, 1, 0, 0, 0, 3977, 3978, 1, 0, 0, 0, 3978, 3987, 1, 0, 0, 0, 3979, 3984, 3, 270, 135, 0, 3980, 3981, 5, 868, 0, 0, 3981, 3983, 3, 270, 135, 0, 3982, 3980, 1, 0, 0, 0, 3983, 3986, 1, 0, 0, 0, 3984, 3982, 1, 0, 0, 0, 3984, 3985, 1, 0, 0, 0, 3985, 3988, 1, 0, 0, 0, 3986, 3984, 1, 0, 0, 0, 3987, 3979, 1, 0, 0, 0, 3987, 3988, 1, 0, 0, 0, 3988, 4011, 1, 0, 0, 0, 3989, 3991, 5, 95, 0, 0, 3990, 3989, 1, 0, 0, 0, 3990, 3991, 1, 0, 0, 0, 3991, 3997, 1, 0, 0, 0, 3992, 3998, 3, 210, 105, 0, 3993, 3994, 5, 866, 0, 0, 3994, 3995, 3, 210, 105, 0, 3995, 3996, 5, 867, 0, 0, 3996, 3998, 1, 0, 0, 0, 3997, 3992, 1, 0, 0, 0, 3997, 3993, 1, 0, 0, 0, 3998, 4000, 1, 0, 0, 0, 3999, 4001, 5, 13, 0, 0, 4000, 3999, 1, 0, 0, 0, 4000, 4001, 1, 0, 0, 0, 4001, 4002, 1, 0, 0, 0, 4002, 4004, 3, 706, 353, 0, 4003, 4005, 3, 268, 134, 0, 4004, 4003, 1, 0, 0, 0, 4004, 4005, 1, 0, 0, 0, 4005, 4011, 1, 0, 0, 0, 4006, 4007, 5, 866, 0, 0, 4007, 4008, 3, 262, 131, 0, 4008, 4009, 5, 867, 0, 0, 4009, 4011, 1, 0, 0, 0, 4010, 3965, 1, 0, 0, 0, 4010, 3990, 1, 0, 0, 0, 4010, 4006, 1, 0, 0, 0, 4011, 267, 1, 0, 0, 0, 4012, 4013, 5, 866, 0, 0, 4013, 4014, 3, 660, 330, 0, 4014, 4015, 5, 867, 0, 0, 4015, 269, 1, 0, 0, 0, 4016, 4017, 7, 56, 0, 0, 4017, 4020, 7, 19, 0, 0, 4018, 4019, 5, 65, 0, 0, 4019, 4021, 3, 272, 136, 0, 4020, 4018, 1, 0, 0, 0, 4020, 4021, 1, 0, 0, 0, 4021, 4022, 1, 0, 0, 0, 4022, 4024, 5, 866, 0, 0, 4023, 4025, 3, 640, 320, 0, 4024, 4023, 1, 0, 0, 0, 4024, 4025, 1, 0, 0, 0, 4025, 4026, 1, 0, 0, 0, 4026, 4027, 5, 867, 0, 0, 4027, 271, 1, 0, 0, 0, 4028, 4034, 5, 91, 0, 0, 4029, 4030, 5, 125, 0, 0, 4030, 4034, 5, 20, 0, 0, 4031, 4032, 5, 74, 0, 0, 4032, 4034, 5, 20, 0, 0, 4033, 4028, 1, 0, 0, 0, 4033, 4029, 1, 0, 0, 0, 4033, 4031, 1, 0, 0, 0, 4034, 273, 1, 0, 0, 0, 4035, 4037, 7, 57, 0, 0, 4036, 4035, 1, 0, 0, 0, 4036, 4037, 1, 0, 0, 0, 4037, 4038, 1, 0, 0, 0, 4038, 4040, 5, 91, 0, 0, 4039, 4041, 5, 95, 0, 0, 4040, 4039, 1, 0, 0, 0, 4040, 4041, 1, 0, 0, 0, 4041, 4042, 1, 0, 0, 0, 4042, 4046, 3, 266, 133, 0, 4043, 4045, 3, 276, 138, 0, 4044, 4043, 1, 0, 0, 0, 4045, 4048, 1, 0, 0, 0, 4046, 4044, 1, 0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4085, 1, 0, 0, 0, 4048, 4046, 1, 0, 0, 0, 4049, 4050, 5, 172, 0, 0, 4050, 4054, 3, 266, 133, 0, 4051, 4053, 3, 276, 138, 0, 4052, 4051, 1, 0, 0, 0, 4053, 4056, 1, 0, 0, 0, 4054, 4052, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4085, 1, 0, 0, 0, 4056, 4054, 1, 0, 0, 0, 4057, 4059, 7, 58, 0, 0, 4058, 4060, 5, 127, 0, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4063, 5, 91, 0, 0, 4062, 4064, 5, 95, 0, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4065, 1, 0, 0, 0, 4065, 4069, 3, 266, 133, 0, 4066, 4068, 3, 276, 138, 0, 4067, 4066, 1, 0, 0, 0, 4068, 4071, 1, 0, 0, 0, 4069, 4067, 1, 0, 0, 0, 4069, 4070, 1, 0, 0, 0, 4070, 4085, 1, 0, 0, 0, 4071, 4069, 1, 0, 0, 0, 4072, 4080, 5, 113, 0, 0, 4073, 4076, 5, 84, 0, 0, 4074, 4076, 7, 58, 0, 0, 4075, 4073, 1, 0, 0, 0, 4075, 4074, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4079, 5, 127, 0, 0, 4078, 4077, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4081, 1, 0, 0, 0, 4080, 4075, 1, 0, 0, 0, 4080, 4081, 1, 0, 0, 0, 4081, 4082, 1, 0, 0, 0, 4082, 4083, 5, 91, 0, 0, 4083, 4085, 3, 266, 133, 0, 4084, 4036, 1, 0, 0, 0, 4084, 4049, 1, 0, 0, 0, 4084, 4057, 1, 0, 0, 0, 4084, 4072, 1, 0, 0, 0, 4085, 275, 1, 0, 0, 0, 4086, 4087, 5, 119, 0, 0, 4087, 4094, 3, 804, 402, 0, 4088, 4089, 5, 188, 0, 0, 4089, 4090, 5, 866, 0, 0, 4090, 4091, 3, 660, 330, 0, 4091, 4092, 5, 867, 0, 0, 4092, 4094, 1, 0, 0, 0, 4093, 4086, 1, 0, 0, 0, 4093, 4088, 1, 0, 0, 0, 4094, 277, 1, 0, 0, 0, 4095, 4096, 5, 866, 0, 0, 4096, 4097, 3, 280, 140, 0, 4097, 4098, 5, 867, 0, 0, 4098, 4104, 1, 0, 0, 0, 4099, 4100, 5, 866, 0, 0, 4100, 4101, 3, 278, 139, 0, 4101, 4102, 5, 867, 0, 0, 4102, 4104, 1, 0, 0, 0, 4103, 4095, 1, 0, 0, 0, 4103, 4099, 1, 0, 0, 0, 4104, 279, 1, 0, 0, 0, 4105, 4109, 5, 154, 0, 0, 4106, 4108, 3, 296, 148, 0, 4107, 4106, 1, 0, 0, 0, 4108, 4111, 1, 0, 0, 0, 4109, 4107, 1, 0, 0, 0, 4109, 4110, 1, 0, 0, 0, 4110, 4112, 1, 0, 0, 0, 4111, 4109, 1, 0, 0, 0, 4112, 4114, 3, 298, 149, 0, 4113, 4115, 3, 302, 151, 0, 4114, 4113, 1, 0, 0, 0, 4114, 4115, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4118, 3, 308, 154, 0, 4117, 4119, 3, 310, 155, 0, 4118, 4117, 1, 0, 0, 0, 4118, 4119, 1, 0, 0, 0, 4119, 4121, 1, 0, 0, 0, 4120, 4122, 3, 312, 156, 0, 4121, 4120, 1, 0, 0, 0, 4121, 4122, 1, 0, 0, 0, 4122, 4124, 1, 0, 0, 0, 4123, 4125, 3, 314, 157, 0, 4124, 4123, 1, 0, 0, 0, 4124, 4125, 1, 0, 0, 0, 4125, 4127, 1, 0, 0, 0, 4126, 4128, 3, 258, 129, 0, 4127, 4126, 1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, 4128, 4130, 1, 0, 0, 0, 4129, 4131, 3, 318, 159, 0, 4130, 4129, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4133, 1, 0, 0, 0, 4132, 4134, 3, 302, 151, 0, 4133, 4132, 1, 0, 0, 0, 4133, 4134, 1, 0, 0, 0, 4134, 4136, 1, 0, 0, 0, 4135, 4137, 3, 282, 141, 0, 4136, 4135, 1, 0, 0, 0, 4136, 4137, 1, 0, 0, 0, 4137, 281, 1, 0, 0, 0, 4138, 4140, 5, 181, 0, 0, 4139, 4141, 7, 45, 0, 0, 4140, 4139, 1, 0, 0, 0, 4140, 4141, 1, 0, 0, 0, 4141, 4144, 1, 0, 0, 0, 4142, 4145, 3, 280, 140, 0, 4143, 4145, 3, 278, 139, 0, 4144, 4142, 1, 0, 0, 0, 4144, 4143, 1, 0, 0, 0, 4145, 283, 1, 0, 0, 0, 4146, 4161, 5, 95, 0, 0, 4147, 4162, 3, 280, 140, 0, 4148, 4162, 3, 278, 139, 0, 4149, 4152, 5, 866, 0, 0, 4150, 4153, 3, 280, 140, 0, 4151, 4153, 3, 278, 139, 0, 4152, 4150, 1, 0, 0, 0, 4152, 4151, 1, 0, 0, 0, 4153, 4154, 1, 0, 0, 0, 4154, 4159, 5, 867, 0, 0, 4155, 4157, 5, 13, 0, 0, 4156, 4155, 1, 0, 0, 0, 4156, 4157, 1, 0, 0, 0, 4157, 4158, 1, 0, 0, 0, 4158, 4160, 3, 706, 353, 0, 4159, 4156, 1, 0, 0, 0, 4159, 4160, 1, 0, 0, 0, 4160, 4162, 1, 0, 0, 0, 4161, 4147, 1, 0, 0, 0, 4161, 4148, 1, 0, 0, 0, 4161, 4149, 1, 0, 0, 0, 4162, 285, 1, 0, 0, 0, 4163, 4164, 5, 253, 0, 0, 4164, 4165, 5, 866, 0, 0, 4165, 4166, 5, 882, 0, 0, 4166, 4167, 5, 868, 0, 0, 4167, 4168, 5, 882, 0, 0, 4168, 4169, 5, 337, 0, 0, 4169, 4170, 5, 866, 0, 0, 4170, 4171, 3, 288, 144, 0, 4171, 4172, 5, 867, 0, 0, 4172, 4177, 5, 867, 0, 0, 4173, 4175, 5, 13, 0, 0, 4174, 4173, 1, 0, 0, 0, 4174, 4175, 1, 0, 0, 0, 4175, 4176, 1, 0, 0, 0, 4176, 4178, 3, 706, 353, 0, 4177, 4174, 1, 0, 0, 0, 4177, 4178, 1, 0, 0, 0, 4178, 287, 1, 0, 0, 0, 4179, 4184, 3, 290, 145, 0, 4180, 4181, 5, 868, 0, 0, 4181, 4183, 3, 290, 145, 0, 4182, 4180, 1, 0, 0, 0, 4183, 4186, 1, 0, 0, 0, 4184, 4182, 1, 0, 0, 0, 4184, 4185, 1, 0, 0, 0, 4185, 289, 1, 0, 0, 0, 4186, 4184, 1, 0, 0, 0, 4187, 4204, 3, 662, 331, 0, 4188, 4189, 5, 65, 0, 0, 4189, 4205, 5, 256, 0, 0, 4190, 4202, 3, 726, 363, 0, 4191, 4192, 5, 257, 0, 0, 4192, 4194, 5, 882, 0, 0, 4193, 4195, 3, 292, 146, 0, 4194, 4193, 1, 0, 0, 0, 4194, 4195, 1, 0, 0, 0, 4195, 4197, 1, 0, 0, 0, 4196, 4198, 3, 294, 147, 0, 4197, 4196, 1, 0, 0, 0, 4197, 4198, 1, 0, 0, 0, 4198, 4203, 1, 0, 0, 0, 4199, 4200, 5, 60, 0, 0, 4200, 4201, 5, 257, 0, 0, 4201, 4203, 5, 882, 0, 0, 4202, 4191, 1, 0, 0, 0, 4202, 4199, 1, 0, 0, 0, 4203, 4205, 1, 0, 0, 0, 4204, 4188, 1, 0, 0, 0, 4204, 4190, 1, 0, 0, 0, 4205, 4217, 1, 0, 0, 0, 4206, 4208, 5, 255, 0, 0, 4207, 4209, 5, 257, 0, 0, 4208, 4207, 1, 0, 0, 0, 4208, 4209, 1, 0, 0, 0, 4209, 4210, 1, 0, 0, 0, 4210, 4211, 5, 882, 0, 0, 4211, 4212, 5, 337, 0, 0, 4212, 4213, 5, 866, 0, 0, 4213, 4214, 3, 288, 144, 0, 4214, 4215, 5, 867, 0, 0, 4215, 4217, 1, 0, 0, 0, 4216, 4187, 1, 0, 0, 0, 4216, 4206, 1, 0, 0, 0, 4217, 291, 1, 0, 0, 0, 4218, 4223, 5, 116, 0, 0, 4219, 4223, 5, 382, 0, 0, 4220, 4221, 5, 42, 0, 0, 4221, 4223, 3, 754, 377, 0, 4222, 4218, 1, 0, 0, 0, 4222, 4219, 1, 0, 0, 0, 4222, 4220, 1, 0, 0, 0, 4223, 4224, 1, 0, 0, 0, 4224, 4225, 5, 119, 0, 0, 4225, 4226, 5, 55, 0, 0, 4226, 293, 1, 0, 0, 0, 4227, 4232, 5, 116, 0, 0, 4228, 4232, 5, 382, 0, 0, 4229, 4230, 5, 42, 0, 0, 4230, 4232, 3, 754, 377, 0, 4231, 4227, 1, 0, 0, 0, 4231, 4228, 1, 0, 0, 0, 4231, 4229, 1, 0, 0, 0, 4232, 4233, 1, 0, 0, 0, 4233, 4234, 5, 119, 0, 0, 4234, 4235, 5, 382, 0, 0, 4235, 295, 1, 0, 0, 0, 4236, 4245, 7, 59, 0, 0, 4237, 4245, 5, 76, 0, 0, 4238, 4245, 5, 172, 0, 0, 4239, 4245, 5, 168, 0, 0, 4240, 4245, 5, 166, 0, 0, 4241, 4245, 5, 636, 0, 0, 4242, 4245, 7, 60, 0, 0, 4243, 4245, 5, 167, 0, 0, 4244, 4236, 1, 0, 0, 0, 4244, 4237, 1, 0, 0, 0, 4244, 4238, 1, 0, 0, 0, 4244, 4239, 1, 0, 0, 0, 4244, 4240, 1, 0, 0, 0, 4244, 4241, 1, 0, 0, 0, 4244, 4242, 1, 0, 0, 0, 4244, 4243, 1, 0, 0, 0, 4245, 297, 1, 0, 0, 0, 4246, 4249, 5, 850, 0, 0, 4247, 4249, 3, 300, 150, 0, 4248, 4246, 1, 0, 0, 0, 4248, 4247, 1, 0, 0, 0, 4249, 4254, 1, 0, 0, 0, 4250, 4251, 5, 868, 0, 0, 4251, 4253, 3, 300, 150, 0, 4252, 4250, 1, 0, 0, 0, 4253, 4256, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4254, 4255, 1, 0, 0, 0, 4255, 299, 1, 0, 0, 0, 4256, 4254, 1, 0, 0, 0, 4257, 4258, 5, 892, 0, 0, 4258, 4260, 5, 841, 0, 0, 4259, 4257, 1, 0, 0, 0, 4259, 4260, 1, 0, 0, 0, 4260, 4261, 1, 0, 0, 0, 4261, 4266, 3, 804, 402, 0, 4262, 4264, 5, 13, 0, 0, 4263, 4262, 1, 0, 0, 0, 4263, 4264, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, 0, 4265, 4267, 3, 706, 353, 0, 4266, 4263, 1, 0, 0, 0, 4266, 4267, 1, 0, 0, 0, 4267, 4287, 1, 0, 0, 0, 4268, 4273, 3, 764, 382, 0, 4269, 4271, 5, 13, 0, 0, 4270, 4269, 1, 0, 0, 0, 4270, 4271, 1, 0, 0, 0, 4271, 4272, 1, 0, 0, 0, 4272, 4274, 3, 706, 353, 0, 4273, 4270, 1, 0, 0, 0, 4273, 4274, 1, 0, 0, 0, 4274, 4287, 1, 0, 0, 0, 4275, 4276, 3, 702, 351, 0, 4276, 4277, 5, 865, 0, 0, 4277, 4278, 5, 850, 0, 0, 4278, 4287, 1, 0, 0, 0, 4279, 4284, 3, 662, 331, 0, 4280, 4282, 5, 13, 0, 0, 4281, 4280, 1, 0, 0, 0, 4281, 4282, 1, 0, 0, 0, 4282, 4283, 1, 0, 0, 0, 4283, 4285, 3, 706, 353, 0, 4284, 4281, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4287, 1, 0, 0, 0, 4286, 4259, 1, 0, 0, 0, 4286, 4268, 1, 0, 0, 0, 4286, 4275, 1, 0, 0, 0, 4286, 4279, 1, 0, 0, 0, 4287, 301, 1, 0, 0, 0, 4288, 4289, 5, 88, 0, 0, 4289, 4294, 3, 236, 118, 0, 4290, 4291, 5, 868, 0, 0, 4291, 4293, 3, 236, 118, 0, 4292, 4290, 1, 0, 0, 0, 4293, 4296, 1, 0, 0, 0, 4294, 4292, 1, 0, 0, 0, 4294, 4295, 1, 0, 0, 0, 4295, 4325, 1, 0, 0, 0, 4296, 4294, 1, 0, 0, 0, 4297, 4298, 5, 88, 0, 0, 4298, 4299, 5, 372, 0, 0, 4299, 4325, 5, 882, 0, 0, 4300, 4301, 5, 88, 0, 0, 4301, 4302, 5, 128, 0, 0, 4302, 4306, 5, 882, 0, 0, 4303, 4304, 5, 26, 0, 0, 4304, 4305, 5, 155, 0, 0, 4305, 4307, 3, 688, 344, 0, 4306, 4303, 1, 0, 0, 0, 4306, 4307, 1, 0, 0, 0, 4307, 4314, 1, 0, 0, 0, 4308, 4310, 7, 47, 0, 0, 4309, 4311, 3, 304, 152, 0, 4310, 4309, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4310, 1, 0, 0, 0, 4312, 4313, 1, 0, 0, 0, 4313, 4315, 1, 0, 0, 0, 4314, 4308, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 4322, 1, 0, 0, 0, 4316, 4318, 5, 102, 0, 0, 4317, 4319, 3, 306, 153, 0, 4318, 4317, 1, 0, 0, 0, 4319, 4320, 1, 0, 0, 0, 4320, 4318, 1, 0, 0, 0, 4320, 4321, 1, 0, 0, 0, 4321, 4323, 1, 0, 0, 0, 4322, 4316, 1, 0, 0, 0, 4322, 4323, 1, 0, 0, 0, 4323, 4325, 1, 0, 0, 0, 4324, 4288, 1, 0, 0, 0, 4324, 4297, 1, 0, 0, 0, 4324, 4300, 1, 0, 0, 0, 4325, 303, 1, 0, 0, 0, 4326, 4327, 5, 174, 0, 0, 4327, 4328, 5, 20, 0, 0, 4328, 4339, 5, 882, 0, 0, 4329, 4331, 5, 123, 0, 0, 4330, 4329, 1, 0, 0, 0, 4330, 4331, 1, 0, 0, 0, 4331, 4332, 1, 0, 0, 0, 4332, 4333, 5, 56, 0, 0, 4333, 4334, 5, 20, 0, 0, 4334, 4339, 5, 882, 0, 0, 4335, 4336, 5, 58, 0, 0, 4336, 4337, 5, 20, 0, 0, 4337, 4339, 5, 882, 0, 0, 4338, 4326, 1, 0, 0, 0, 4338, 4330, 1, 0, 0, 0, 4338, 4335, 1, 0, 0, 0, 4339, 305, 1, 0, 0, 0, 4340, 4341, 5, 171, 0, 0, 4341, 4342, 5, 20, 0, 0, 4342, 4347, 5, 882, 0, 0, 4343, 4344, 5, 174, 0, 0, 4344, 4345, 5, 20, 0, 0, 4345, 4347, 5, 882, 0, 0, 4346, 4340, 1, 0, 0, 0, 4346, 4343, 1, 0, 0, 0, 4347, 307, 1, 0, 0, 0, 4348, 4349, 5, 68, 0, 0, 4349, 4351, 3, 262, 131, 0, 4350, 4348, 1, 0, 0, 0, 4350, 4351, 1, 0, 0, 0, 4351, 4354, 1, 0, 0, 0, 4352, 4353, 5, 192, 0, 0, 4353, 4355, 3, 804, 402, 0, 4354, 4352, 1, 0, 0, 0, 4354, 4355, 1, 0, 0, 0, 4355, 309, 1, 0, 0, 0, 4356, 4357, 5, 74, 0, 0, 4357, 4358, 5, 20, 0, 0, 4358, 4363, 3, 316, 158, 0, 4359, 4360, 5, 868, 0, 0, 4360, 4362, 3, 316, 158, 0, 4361, 4359, 1, 0, 0, 0, 4362, 4365, 1, 0, 0, 0, 4363, 4361, 1, 0, 0, 0, 4363, 4364, 1, 0, 0, 0, 4364, 4368, 1, 0, 0, 0, 4365, 4363, 1, 0, 0, 0, 4366, 4367, 5, 194, 0, 0, 4367, 4369, 5, 584, 0, 0, 4368, 4366, 1, 0, 0, 0, 4368, 4369, 1, 0, 0, 0, 4369, 311, 1, 0, 0, 0, 4370, 4371, 5, 75, 0, 0, 4371, 4372, 3, 804, 402, 0, 4372, 313, 1, 0, 0, 0, 4373, 4374, 5, 689, 0, 0, 4374, 4375, 3, 782, 391, 0, 4375, 4376, 5, 13, 0, 0, 4376, 4377, 5, 866, 0, 0, 4377, 4378, 3, 780, 390, 0, 4378, 4388, 5, 867, 0, 0, 4379, 4380, 5, 868, 0, 0, 4380, 4381, 3, 782, 391, 0, 4381, 4382, 5, 13, 0, 0, 4382, 4383, 5, 866, 0, 0, 4383, 4384, 3, 780, 390, 0, 4384, 4385, 5, 867, 0, 0, 4385, 4387, 1, 0, 0, 0, 4386, 4379, 1, 0, 0, 0, 4387, 4390, 1, 0, 0, 0, 4388, 4386, 1, 0, 0, 0, 4388, 4389, 1, 0, 0, 0, 4389, 315, 1, 0, 0, 0, 4390, 4388, 1, 0, 0, 0, 4391, 4393, 3, 804, 402, 0, 4392, 4394, 7, 55, 0, 0, 4393, 4392, 1, 0, 0, 0, 4393, 4394, 1, 0, 0, 0, 4394, 317, 1, 0, 0, 0, 4395, 4406, 5, 100, 0, 0, 4396, 4397, 3, 320, 160, 0, 4397, 4398, 5, 868, 0, 0, 4398, 4400, 1, 0, 0, 0, 4399, 4396, 1, 0, 0, 0, 4399, 4400, 1, 0, 0, 0, 4400, 4401, 1, 0, 0, 0, 4401, 4407, 3, 320, 160, 0, 4402, 4403, 3, 320, 160, 0, 4403, 4404, 5, 509, 0, 0, 4404, 4405, 3, 320, 160, 0, 4405, 4407, 1, 0, 0, 0, 4406, 4399, 1, 0, 0, 0, 4406, 4402, 1, 0, 0, 0, 4407, 319, 1, 0, 0, 0, 4408, 4412, 3, 712, 356, 0, 4409, 4412, 3, 686, 343, 0, 4410, 4412, 3, 708, 354, 0, 4411, 4408, 1, 0, 0, 0, 4411, 4409, 1, 0, 0, 0, 4411, 4410, 1, 0, 0, 0, 4412, 321, 1, 0, 0, 0, 4413, 4414, 5, 640, 0, 0, 4414, 4423, 5, 664, 0, 0, 4415, 4420, 3, 344, 172, 0, 4416, 4417, 5, 868, 0, 0, 4417, 4419, 3, 344, 172, 0, 4418, 4416, 1, 0, 0, 0, 4419, 4422, 1, 0, 0, 0, 4420, 4418, 1, 0, 0, 0, 4420, 4421, 1, 0, 0, 0, 4421, 4424, 1, 0, 0, 0, 4422, 4420, 1, 0, 0, 0, 4423, 4415, 1, 0, 0, 0, 4423, 4424, 1, 0, 0, 0, 4424, 323, 1, 0, 0, 0, 4425, 4427, 5, 317, 0, 0, 4426, 4428, 5, 691, 0, 0, 4427, 4426, 1, 0, 0, 0, 4427, 4428, 1, 0, 0, 0, 4428, 325, 1, 0, 0, 0, 4429, 4431, 5, 341, 0, 0, 4430, 4432, 5, 691, 0, 0, 4431, 4430, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432, 4438, 1, 0, 0, 0, 4433, 4435, 5, 11, 0, 0, 4434, 4436, 5, 502, 0, 0, 4435, 4434, 1, 0, 0, 0, 4435, 4436, 1, 0, 0, 0, 4436, 4437, 1, 0, 0, 0, 4437, 4439, 5, 326, 0, 0, 4438, 4433, 1, 0, 0, 0, 4438, 4439, 1, 0, 0, 0, 4439, 4444, 1, 0, 0, 0, 4440, 4442, 5, 502, 0, 0, 4441, 4440, 1, 0, 0, 0, 4441, 4442, 1, 0, 0, 0, 4442, 4443, 1, 0, 0, 0, 4443, 4445, 5, 140, 0, 0, 4444, 4441, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 327, 1, 0, 0, 0, 4446, 4448, 5, 583, 0, 0, 4447, 4449, 5, 691, 0, 0, 4448, 4447, 1, 0, 0, 0, 4448, 4449, 1, 0, 0, 0, 4449, 4455, 1, 0, 0, 0, 4450, 4452, 5, 11, 0, 0, 4451, 4453, 5, 502, 0, 0, 4452, 4451, 1, 0, 0, 0, 4452, 4453, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4456, 5, 326, 0, 0, 4455, 4450, 1, 0, 0, 0, 4455, 4456, 1, 0, 0, 0, 4456, 4461, 1, 0, 0, 0, 4457, 4459, 5, 502, 0, 0, 4458, 4457, 1, 0, 0, 0, 4458, 4459, 1, 0, 0, 0, 4459, 4460, 1, 0, 0, 0, 4460, 4462, 5, 140, 0, 0, 4461, 4458, 1, 0, 0, 0, 4461, 4462, 1, 0, 0, 0, 4462, 329, 1, 0, 0, 0, 4463, 4464, 5, 589, 0, 0, 4464, 4465, 3, 706, 353, 0, 4465, 331, 1, 0, 0, 0, 4466, 4468, 5, 583, 0, 0, 4467, 4469, 5, 691, 0, 0, 4468, 4467, 1, 0, 0, 0, 4468, 4469, 1, 0, 0, 0, 4469, 4470, 1, 0, 0, 0, 4470, 4472, 5, 176, 0, 0, 4471, 4473, 5, 589, 0, 0, 4472, 4471, 1, 0, 0, 0, 4472, 4473, 1, 0, 0, 0, 4473, 4474, 1, 0, 0, 0, 4474, 4475, 3, 706, 353, 0, 4475, 333, 1, 0, 0, 0, 4476, 4477, 5, 140, 0, 0, 4477, 4478, 5, 589, 0, 0, 4478, 4479, 3, 706, 353, 0, 4479, 335, 1, 0, 0, 0, 4480, 4481, 5, 104, 0, 0, 4481, 4482, 7, 61, 0, 0, 4482, 4487, 3, 346, 173, 0, 4483, 4484, 5, 868, 0, 0, 4484, 4486, 3, 346, 173, 0, 4485, 4483, 1, 0, 0, 0, 4486, 4489, 1, 0, 0, 0, 4487, 4485, 1, 0, 0, 0, 4487, 4488, 1, 0, 0, 0, 4488, 337, 1, 0, 0, 0, 4489, 4487, 1, 0, 0, 0, 4490, 4491, 5, 183, 0, 0, 4491, 4492, 5, 752, 0, 0, 4492, 339, 1, 0, 0, 0, 4493, 4494, 5, 155, 0, 0, 4494, 4495, 5, 313, 0, 0, 4495, 4496, 5, 857, 0, 0, 4496, 4497, 7, 26, 0, 0, 4497, 341, 1, 0, 0, 0, 4498, 4500, 5, 155, 0, 0, 4499, 4501, 7, 62, 0, 0, 4500, 4499, 1, 0, 0, 0, 4500, 4501, 1, 0, 0, 0, 4501, 4502, 1, 0, 0, 0, 4502, 4503, 5, 664, 0, 0, 4503, 4508, 3, 350, 175, 0, 4504, 4505, 5, 868, 0, 0, 4505, 4507, 3, 350, 175, 0, 4506, 4504, 1, 0, 0, 0, 4507, 4510, 1, 0, 0, 0, 4508, 4506, 1, 0, 0, 0, 4508, 4509, 1, 0, 0, 0, 4509, 343, 1, 0, 0, 0, 4510, 4508, 1, 0, 0, 0, 4511, 4512, 5, 194, 0, 0, 4512, 4513, 5, 350, 0, 0, 4513, 4519, 5, 600, 0, 0, 4514, 4515, 5, 135, 0, 0, 4515, 4519, 5, 195, 0, 0, 4516, 4517, 5, 135, 0, 0, 4517, 4519, 5, 515, 0, 0, 4518, 4511, 1, 0, 0, 0, 4518, 4514, 1, 0, 0, 0, 4518, 4516, 1, 0, 0, 0, 4519, 345, 1, 0, 0, 0, 4520, 4525, 3, 652, 326, 0, 4521, 4523, 5, 13, 0, 0, 4522, 4521, 1, 0, 0, 0, 4522, 4523, 1, 0, 0, 0, 4523, 4524, 1, 0, 0, 0, 4524, 4526, 3, 706, 353, 0, 4525, 4522, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 4527, 1, 0, 0, 0, 4527, 4528, 3, 348, 174, 0, 4528, 347, 1, 0, 0, 0, 4529, 4531, 5, 135, 0, 0, 4530, 4532, 5, 450, 0, 0, 4531, 4530, 1, 0, 0, 0, 4531, 4532, 1, 0, 0, 0, 4532, 4538, 1, 0, 0, 0, 4533, 4535, 5, 107, 0, 0, 4534, 4533, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 4536, 1, 0, 0, 0, 4536, 4538, 5, 195, 0, 0, 4537, 4529, 1, 0, 0, 0, 4537, 4534, 1, 0, 0, 0, 4538, 349, 1, 0, 0, 0, 4539, 4540, 5, 440, 0, 0, 4540, 4541, 5, 448, 0, 0, 4541, 4547, 3, 352, 176, 0, 4542, 4543, 5, 135, 0, 0, 4543, 4547, 5, 195, 0, 0, 4544, 4545, 5, 135, 0, 0, 4545, 4547, 5, 515, 0, 0, 4546, 4539, 1, 0, 0, 0, 4546, 4542, 1, 0, 0, 0, 4546, 4544, 1, 0, 0, 0, 4547, 351, 1, 0, 0, 0, 4548, 4549, 5, 809, 0, 0, 4549, 4556, 5, 135, 0, 0, 4550, 4551, 5, 135, 0, 0, 4551, 4556, 5, 810, 0, 0, 4552, 4553, 5, 135, 0, 0, 4553, 4556, 5, 811, 0, 0, 4554, 4556, 5, 812, 0, 0, 4555, 4548, 1, 0, 0, 0, 4555, 4550, 1, 0, 0, 0, 4555, 4552, 1, 0, 0, 0, 4555, 4554, 1, 0, 0, 0, 4556, 353, 1, 0, 0, 0, 4557, 4558, 5, 25, 0, 0, 4558, 4559, 5, 453, 0, 0, 4559, 4560, 5, 176, 0, 0, 4560, 4565, 3, 370, 185, 0, 4561, 4562, 5, 868, 0, 0, 4562, 4564, 3, 370, 185, 0, 4563, 4561, 1, 0, 0, 0, 4564, 4567, 1, 0, 0, 0, 4565, 4563, 1, 0, 0, 0, 4565, 4566, 1, 0, 0, 0, 4566, 4569, 1, 0, 0, 0, 4567, 4565, 1, 0, 0, 0, 4568, 4570, 3, 390, 195, 0, 4569, 4568, 1, 0, 0, 0, 4569, 4570, 1, 0, 0, 0, 4570, 355, 1, 0, 0, 0, 4571, 4572, 5, 25, 0, 0, 4572, 4573, 5, 572, 0, 0, 4573, 4574, 5, 400, 0, 0, 4574, 4579, 3, 392, 196, 0, 4575, 4576, 5, 868, 0, 0, 4576, 4578, 3, 392, 196, 0, 4577, 4575, 1, 0, 0, 0, 4578, 4581, 1, 0, 0, 0, 4579, 4577, 1, 0, 0, 0, 4579, 4580, 1, 0, 0, 0, 4580, 4583, 1, 0, 0, 0, 4581, 4579, 1, 0, 0, 0, 4582, 4584, 3, 390, 195, 0, 4583, 4582, 1, 0, 0, 0, 4583, 4584, 1, 0, 0, 0, 4584, 357, 1, 0, 0, 0, 4585, 4586, 5, 25, 0, 0, 4586, 4587, 5, 572, 0, 0, 4587, 4588, 5, 605, 0, 0, 4588, 4589, 5, 176, 0, 0, 4589, 4594, 3, 380, 190, 0, 4590, 4591, 5, 868, 0, 0, 4591, 4593, 3, 380, 190, 0, 4592, 4590, 1, 0, 0, 0, 4593, 4596, 1, 0, 0, 0, 4594, 4592, 1, 0, 0, 0, 4594, 4595, 1, 0, 0, 0, 4595, 4598, 1, 0, 0, 0, 4596, 4594, 1, 0, 0, 0, 4597, 4599, 3, 390, 195, 0, 4598, 4597, 1, 0, 0, 0, 4598, 4599, 1, 0, 0, 0, 4599, 359, 1, 0, 0, 0, 4600, 4601, 5, 133, 0, 0, 4601, 4602, 7, 63, 0, 0, 4602, 4607, 5, 452, 0, 0, 4603, 4604, 5, 176, 0, 0, 4604, 4608, 5, 882, 0, 0, 4605, 4606, 5, 16, 0, 0, 4606, 4608, 5, 882, 0, 0, 4607, 4603, 1, 0, 0, 0, 4607, 4605, 1, 0, 0, 0, 4608, 361, 1, 0, 0, 0, 4609, 4610, 5, 640, 0, 0, 4610, 4619, 7, 64, 0, 0, 4611, 4616, 3, 396, 198, 0, 4612, 4613, 5, 868, 0, 0, 4613, 4615, 3, 396, 198, 0, 4614, 4612, 1, 0, 0, 0, 4615, 4618, 1, 0, 0, 0, 4616, 4614, 1, 0, 0, 0, 4616, 4617, 1, 0, 0, 0, 4617, 4620, 1, 0, 0, 0, 4618, 4616, 1, 0, 0, 0, 4619, 4611, 1, 0, 0, 0, 4619, 4620, 1, 0, 0, 0, 4620, 4623, 1, 0, 0, 0, 4621, 4622, 5, 676, 0, 0, 4622, 4624, 3, 398, 199, 0, 4623, 4621, 1, 0, 0, 0, 4623, 4624, 1, 0, 0, 0, 4624, 4628, 1, 0, 0, 0, 4625, 4627, 3, 400, 200, 0, 4626, 4625, 1, 0, 0, 0, 4627, 4630, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4628, 4629, 1, 0, 0, 0, 4629, 4632, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4631, 4633, 3, 390, 195, 0, 4632, 4631, 1, 0, 0, 0, 4632, 4633, 1, 0, 0, 0, 4633, 363, 1, 0, 0, 0, 4634, 4635, 5, 646, 0, 0, 4635, 4644, 7, 64, 0, 0, 4636, 4641, 3, 396, 198, 0, 4637, 4638, 5, 868, 0, 0, 4638, 4640, 3, 396, 198, 0, 4639, 4637, 1, 0, 0, 0, 4640, 4643, 1, 0, 0, 0, 4641, 4639, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4645, 1, 0, 0, 0, 4643, 4641, 1, 0, 0, 0, 4644, 4636, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4647, 1, 0, 0, 0, 4646, 4648, 3, 390, 195, 0, 4647, 4646, 1, 0, 0, 0, 4647, 4648, 1, 0, 0, 0, 4648, 365, 1, 0, 0, 0, 4649, 4650, 5, 640, 0, 0, 4650, 4654, 5, 415, 0, 0, 4651, 4652, 5, 678, 0, 0, 4652, 4653, 5, 857, 0, 0, 4653, 4655, 5, 882, 0, 0, 4654, 4651, 1, 0, 0, 0, 4654, 4655, 1, 0, 0, 0, 4655, 4660, 1, 0, 0, 0, 4656, 4657, 5, 868, 0, 0, 4657, 4658, 5, 529, 0, 0, 4658, 4659, 5, 857, 0, 0, 4659, 4661, 5, 882, 0, 0, 4660, 4656, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 4666, 1, 0, 0, 0, 4662, 4663, 5, 868, 0, 0, 4663, 4664, 5, 363, 0, 0, 4664, 4665, 5, 857, 0, 0, 4665, 4667, 5, 882, 0, 0, 4666, 4662, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 367, 1, 0, 0, 0, 4668, 4669, 5, 646, 0, 0, 4669, 4670, 5, 415, 0, 0, 4670, 369, 1, 0, 0, 0, 4671, 4672, 3, 372, 186, 0, 4672, 4673, 5, 857, 0, 0, 4673, 4674, 5, 882, 0, 0, 4674, 4699, 1, 0, 0, 0, 4675, 4676, 3, 374, 187, 0, 4676, 4677, 5, 857, 0, 0, 4677, 4678, 3, 712, 356, 0, 4678, 4699, 1, 0, 0, 0, 4679, 4680, 3, 376, 188, 0, 4680, 4681, 5, 857, 0, 0, 4681, 4682, 7, 26, 0, 0, 4682, 4699, 1, 0, 0, 0, 4683, 4699, 3, 378, 189, 0, 4684, 4685, 5, 424, 0, 0, 4685, 4686, 5, 857, 0, 0, 4686, 4695, 5, 866, 0, 0, 4687, 4692, 3, 706, 353, 0, 4688, 4689, 5, 868, 0, 0, 4689, 4691, 3, 706, 353, 0, 4690, 4688, 1, 0, 0, 0, 4691, 4694, 1, 0, 0, 0, 4692, 4690, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4696, 1, 0, 0, 0, 4694, 4692, 1, 0, 0, 0, 4695, 4687, 1, 0, 0, 0, 4695, 4696, 1, 0, 0, 0, 4696, 4697, 1, 0, 0, 0, 4697, 4699, 5, 867, 0, 0, 4698, 4671, 1, 0, 0, 0, 4698, 4675, 1, 0, 0, 0, 4698, 4679, 1, 0, 0, 0, 4698, 4683, 1, 0, 0, 0, 4698, 4684, 1, 0, 0, 0, 4699, 371, 1, 0, 0, 0, 4700, 4701, 7, 65, 0, 0, 4701, 373, 1, 0, 0, 0, 4702, 4703, 7, 66, 0, 0, 4703, 375, 1, 0, 0, 0, 4704, 4705, 7, 67, 0, 0, 4705, 377, 1, 0, 0, 0, 4706, 4707, 5, 543, 0, 0, 4707, 4708, 5, 857, 0, 0, 4708, 4720, 7, 68, 0, 0, 4709, 4710, 5, 574, 0, 0, 4710, 4711, 5, 857, 0, 0, 4711, 4720, 7, 69, 0, 0, 4712, 4713, 5, 310, 0, 0, 4713, 4717, 5, 857, 0, 0, 4714, 4718, 5, 507, 0, 0, 4715, 4718, 5, 450, 0, 0, 4716, 4718, 3, 402, 201, 0, 4717, 4714, 1, 0, 0, 0, 4717, 4715, 1, 0, 0, 0, 4717, 4716, 1, 0, 0, 0, 4718, 4720, 1, 0, 0, 0, 4719, 4706, 1, 0, 0, 0, 4719, 4709, 1, 0, 0, 0, 4719, 4712, 1, 0, 0, 0, 4720, 379, 1, 0, 0, 0, 4721, 4722, 3, 382, 191, 0, 4722, 4723, 5, 857, 0, 0, 4723, 4724, 5, 882, 0, 0, 4724, 4749, 1, 0, 0, 0, 4725, 4726, 3, 384, 192, 0, 4726, 4727, 5, 857, 0, 0, 4727, 4728, 3, 712, 356, 0, 4728, 4749, 1, 0, 0, 0, 4729, 4730, 3, 386, 193, 0, 4730, 4731, 5, 857, 0, 0, 4731, 4732, 7, 26, 0, 0, 4732, 4749, 1, 0, 0, 0, 4733, 4749, 3, 388, 194, 0, 4734, 4735, 5, 424, 0, 0, 4735, 4736, 5, 857, 0, 0, 4736, 4745, 5, 866, 0, 0, 4737, 4742, 3, 706, 353, 0, 4738, 4739, 5, 868, 0, 0, 4739, 4741, 3, 706, 353, 0, 4740, 4738, 1, 0, 0, 0, 4741, 4744, 1, 0, 0, 0, 4742, 4740, 1, 0, 0, 0, 4742, 4743, 1, 0, 0, 0, 4743, 4746, 1, 0, 0, 0, 4744, 4742, 1, 0, 0, 0, 4745, 4737, 1, 0, 0, 0, 4745, 4746, 1, 0, 0, 0, 4746, 4747, 1, 0, 0, 0, 4747, 4749, 5, 867, 0, 0, 4748, 4721, 1, 0, 0, 0, 4748, 4725, 1, 0, 0, 0, 4748, 4729, 1, 0, 0, 0, 4748, 4733, 1, 0, 0, 0, 4748, 4734, 1, 0, 0, 0, 4749, 381, 1, 0, 0, 0, 4750, 4751, 7, 70, 0, 0, 4751, 383, 1, 0, 0, 0, 4752, 4753, 7, 71, 0, 0, 4753, 385, 1, 0, 0, 0, 4754, 4755, 7, 72, 0, 0, 4755, 387, 1, 0, 0, 0, 4756, 4757, 5, 543, 0, 0, 4757, 4758, 5, 857, 0, 0, 4758, 4770, 7, 68, 0, 0, 4759, 4760, 5, 574, 0, 0, 4760, 4761, 5, 857, 0, 0, 4761, 4770, 7, 73, 0, 0, 4762, 4763, 5, 310, 0, 0, 4763, 4767, 5, 857, 0, 0, 4764, 4768, 5, 507, 0, 0, 4765, 4768, 5, 450, 0, 0, 4766, 4768, 3, 402, 201, 0, 4767, 4764, 1, 0, 0, 0, 4767, 4765, 1, 0, 0, 0, 4767, 4766, 1, 0, 0, 0, 4768, 4770, 1, 0, 0, 0, 4769, 4756, 1, 0, 0, 0, 4769, 4759, 1, 0, 0, 0, 4769, 4762, 1, 0, 0, 0, 4770, 389, 1, 0, 0, 0, 4771, 4772, 5, 65, 0, 0, 4772, 4773, 5, 328, 0, 0, 4773, 4774, 5, 882, 0, 0, 4774, 391, 1, 0, 0, 0, 4775, 4776, 5, 565, 0, 0, 4776, 4777, 5, 857, 0, 0, 4777, 4778, 5, 866, 0, 0, 4778, 4783, 3, 628, 314, 0, 4779, 4780, 5, 868, 0, 0, 4780, 4782, 3, 628, 314, 0, 4781, 4779, 1, 0, 0, 0, 4782, 4785, 1, 0, 0, 0, 4783, 4781, 1, 0, 0, 0, 4783, 4784, 1, 0, 0, 0, 4784, 4786, 1, 0, 0, 0, 4785, 4783, 1, 0, 0, 0, 4786, 4787, 5, 867, 0, 0, 4787, 4839, 1, 0, 0, 0, 4788, 4789, 5, 567, 0, 0, 4789, 4790, 5, 857, 0, 0, 4790, 4791, 5, 866, 0, 0, 4791, 4796, 3, 628, 314, 0, 4792, 4793, 5, 868, 0, 0, 4793, 4795, 3, 628, 314, 0, 4794, 4792, 1, 0, 0, 0, 4795, 4798, 1, 0, 0, 0, 4796, 4794, 1, 0, 0, 0, 4796, 4797, 1, 0, 0, 0, 4797, 4799, 1, 0, 0, 0, 4798, 4796, 1, 0, 0, 0, 4799, 4800, 5, 867, 0, 0, 4800, 4839, 1, 0, 0, 0, 4801, 4802, 5, 566, 0, 0, 4802, 4803, 5, 857, 0, 0, 4803, 4804, 5, 866, 0, 0, 4804, 4805, 3, 650, 325, 0, 4805, 4806, 5, 867, 0, 0, 4806, 4839, 1, 0, 0, 0, 4807, 4808, 5, 568, 0, 0, 4808, 4809, 5, 857, 0, 0, 4809, 4810, 5, 866, 0, 0, 4810, 4811, 3, 650, 325, 0, 4811, 4812, 5, 867, 0, 0, 4812, 4839, 1, 0, 0, 0, 4813, 4814, 5, 570, 0, 0, 4814, 4815, 5, 857, 0, 0, 4815, 4816, 5, 866, 0, 0, 4816, 4817, 3, 750, 375, 0, 4817, 4818, 5, 867, 0, 0, 4818, 4839, 1, 0, 0, 0, 4819, 4820, 5, 571, 0, 0, 4820, 4821, 5, 857, 0, 0, 4821, 4822, 5, 866, 0, 0, 4822, 4823, 3, 750, 375, 0, 4823, 4824, 5, 867, 0, 0, 4824, 4839, 1, 0, 0, 0, 4825, 4826, 5, 569, 0, 0, 4826, 4827, 5, 857, 0, 0, 4827, 4828, 5, 866, 0, 0, 4828, 4833, 3, 394, 197, 0, 4829, 4830, 5, 868, 0, 0, 4830, 4832, 3, 394, 197, 0, 4831, 4829, 1, 0, 0, 0, 4832, 4835, 1, 0, 0, 0, 4833, 4831, 1, 0, 0, 0, 4833, 4834, 1, 0, 0, 0, 4834, 4836, 1, 0, 0, 0, 4835, 4833, 1, 0, 0, 0, 4836, 4837, 5, 867, 0, 0, 4837, 4839, 1, 0, 0, 0, 4838, 4775, 1, 0, 0, 0, 4838, 4788, 1, 0, 0, 0, 4838, 4801, 1, 0, 0, 0, 4838, 4807, 1, 0, 0, 0, 4838, 4813, 1, 0, 0, 0, 4838, 4819, 1, 0, 0, 0, 4838, 4825, 1, 0, 0, 0, 4839, 393, 1, 0, 0, 0, 4840, 4841, 5, 866, 0, 0, 4841, 4842, 3, 652, 326, 0, 4842, 4843, 5, 868, 0, 0, 4843, 4844, 3, 652, 326, 0, 4844, 4845, 5, 867, 0, 0, 4845, 395, 1, 0, 0, 0, 4846, 4847, 7, 74, 0, 0, 4847, 397, 1, 0, 0, 0, 4848, 4849, 7, 75, 0, 0, 4849, 4850, 5, 857, 0, 0, 4850, 4874, 3, 402, 201, 0, 4851, 4852, 5, 460, 0, 0, 4852, 4853, 5, 857, 0, 0, 4853, 4854, 5, 882, 0, 0, 4854, 4855, 5, 868, 0, 0, 4855, 4856, 5, 461, 0, 0, 4856, 4857, 5, 857, 0, 0, 4857, 4874, 3, 712, 356, 0, 4858, 4859, 5, 611, 0, 0, 4859, 4860, 5, 857, 0, 0, 4860, 4861, 5, 882, 0, 0, 4861, 4862, 5, 868, 0, 0, 4862, 4863, 5, 612, 0, 0, 4863, 4864, 5, 857, 0, 0, 4864, 4874, 3, 712, 356, 0, 4865, 4866, 5, 557, 0, 0, 4866, 4867, 5, 857, 0, 0, 4867, 4868, 5, 882, 0, 0, 4868, 4869, 5, 868, 0, 0, 4869, 4870, 5, 558, 0, 0, 4870, 4871, 5, 857, 0, 0, 4871, 4874, 3, 712, 356, 0, 4872, 4874, 5, 634, 0, 0, 4873, 4848, 1, 0, 0, 0, 4873, 4851, 1, 0, 0, 0, 4873, 4858, 1, 0, 0, 0, 4873, 4865, 1, 0, 0, 0, 4873, 4872, 1, 0, 0, 0, 4874, 399, 1, 0, 0, 0, 4875, 4876, 5, 678, 0, 0, 4876, 4877, 5, 857, 0, 0, 4877, 4888, 5, 882, 0, 0, 4878, 4879, 5, 529, 0, 0, 4879, 4880, 5, 857, 0, 0, 4880, 4888, 5, 882, 0, 0, 4881, 4882, 5, 363, 0, 0, 4882, 4883, 5, 857, 0, 0, 4883, 4888, 5, 882, 0, 0, 4884, 4885, 5, 535, 0, 0, 4885, 4886, 5, 857, 0, 0, 4886, 4888, 5, 882, 0, 0, 4887, 4875, 1, 0, 0, 0, 4887, 4878, 1, 0, 0, 0, 4887, 4881, 1, 0, 0, 0, 4887, 4884, 1, 0, 0, 0, 4888, 401, 1, 0, 0, 0, 4889, 4894, 3, 696, 348, 0, 4890, 4891, 5, 868, 0, 0, 4891, 4893, 3, 696, 348, 0, 4892, 4890, 1, 0, 0, 0, 4893, 4896, 1, 0, 0, 0, 4894, 4892, 1, 0, 0, 0, 4894, 4895, 1, 0, 0, 0, 4895, 4899, 1, 0, 0, 0, 4896, 4894, 1, 0, 0, 0, 4897, 4899, 5, 882, 0, 0, 4898, 4889, 1, 0, 0, 0, 4898, 4897, 1, 0, 0, 0, 4899, 403, 1, 0, 0, 0, 4900, 4901, 5, 694, 0, 0, 4901, 4902, 7, 76, 0, 0, 4902, 4904, 3, 698, 349, 0, 4903, 4905, 7, 77, 0, 0, 4904, 4903, 1, 0, 0, 0, 4904, 4905, 1, 0, 0, 0, 4905, 405, 1, 0, 0, 0, 4906, 4907, 5, 694, 0, 0, 4907, 4908, 5, 378, 0, 0, 4908, 4914, 3, 698, 349, 0, 4909, 4912, 5, 654, 0, 0, 4910, 4911, 5, 65, 0, 0, 4911, 4913, 5, 489, 0, 0, 4912, 4910, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 4915, 1, 0, 0, 0, 4914, 4909, 1, 0, 0, 0, 4914, 4915, 1, 0, 0, 0, 4915, 407, 1, 0, 0, 0, 4916, 4917, 5, 694, 0, 0, 4917, 4918, 5, 540, 0, 0, 4918, 4919, 3, 698, 349, 0, 4919, 409, 1, 0, 0, 0, 4920, 4921, 5, 694, 0, 0, 4921, 4922, 5, 341, 0, 0, 4922, 4925, 3, 698, 349, 0, 4923, 4924, 5, 513, 0, 0, 4924, 4926, 5, 533, 0, 0, 4925, 4923, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, 411, 1, 0, 0, 0, 4927, 4928, 5, 694, 0, 0, 4928, 4929, 5, 583, 0, 0, 4929, 4930, 3, 698, 349, 0, 4930, 413, 1, 0, 0, 0, 4931, 4932, 5, 694, 0, 0, 4932, 4935, 5, 551, 0, 0, 4933, 4934, 5, 33, 0, 0, 4934, 4936, 3, 698, 349, 0, 4935, 4933, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 415, 1, 0, 0, 0, 4937, 4938, 5, 540, 0, 0, 4938, 4939, 3, 706, 353, 0, 4939, 4942, 5, 68, 0, 0, 4940, 4943, 5, 882, 0, 0, 4941, 4943, 5, 892, 0, 0, 4942, 4940, 1, 0, 0, 0, 4942, 4941, 1, 0, 0, 0, 4943, 417, 1, 0, 0, 0, 4944, 4945, 5, 717, 0, 0, 4945, 4948, 3, 706, 353, 0, 4946, 4947, 5, 188, 0, 0, 4947, 4949, 3, 752, 376, 0, 4948, 4946, 1, 0, 0, 0, 4948, 4949, 1, 0, 0, 0, 4949, 419, 1, 0, 0, 0, 4950, 4951, 7, 78, 0, 0, 4951, 4952, 5, 540, 0, 0, 4952, 4953, 3, 706, 353, 0, 4953, 421, 1, 0, 0, 0, 4954, 4957, 3, 424, 212, 0, 4955, 4957, 3, 4, 2, 0, 4956, 4954, 1, 0, 0, 0, 4956, 4955, 1, 0, 0, 0, 4957, 423, 1, 0, 0, 0, 4958, 4959, 3, 706, 353, 0, 4959, 4960, 5, 878, 0, 0, 4960, 4962, 1, 0, 0, 0, 4961, 4958, 1, 0, 0, 0, 4961, 4962, 1, 0, 0, 0, 4962, 4963, 1, 0, 0, 0, 4963, 4969, 5, 317, 0, 0, 4964, 4965, 3, 444, 222, 0, 4965, 4966, 5, 869, 0, 0, 4966, 4968, 1, 0, 0, 0, 4967, 4964, 1, 0, 0, 0, 4968, 4971, 1, 0, 0, 0, 4969, 4967, 1, 0, 0, 0, 4969, 4970, 1, 0, 0, 0, 4970, 4977, 1, 0, 0, 0, 4971, 4969, 1, 0, 0, 0, 4972, 4973, 3, 446, 223, 0, 4973, 4974, 5, 869, 0, 0, 4974, 4976, 1, 0, 0, 0, 4975, 4972, 1, 0, 0, 0, 4976, 4979, 1, 0, 0, 0, 4977, 4975, 1, 0, 0, 0, 4977, 4978, 1, 0, 0, 0, 4978, 4985, 1, 0, 0, 0, 4979, 4977, 1, 0, 0, 0, 4980, 4981, 3, 448, 224, 0, 4981, 4982, 5, 869, 0, 0, 4982, 4984, 1, 0, 0, 0, 4983, 4980, 1, 0, 0, 0, 4984, 4987, 1, 0, 0, 0, 4985, 4983, 1, 0, 0, 0, 4985, 4986, 1, 0, 0, 0, 4986, 4993, 1, 0, 0, 0, 4987, 4985, 1, 0, 0, 0, 4988, 4989, 3, 450, 225, 0, 4989, 4990, 5, 869, 0, 0, 4990, 4992, 1, 0, 0, 0, 4991, 4988, 1, 0, 0, 0, 4992, 4995, 1, 0, 0, 0, 4993, 4991, 1, 0, 0, 0, 4993, 4994, 1, 0, 0, 0, 4994, 4999, 1, 0, 0, 0, 4995, 4993, 1, 0, 0, 0, 4996, 4998, 3, 454, 227, 0, 4997, 4996, 1, 0, 0, 0, 4998, 5001, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 4999, 5000, 1, 0, 0, 0, 5000, 5002, 1, 0, 0, 0, 5001, 4999, 1, 0, 0, 0, 5002, 5004, 5, 378, 0, 0, 5003, 5005, 3, 706, 353, 0, 5004, 5003, 1, 0, 0, 0, 5004, 5005, 1, 0, 0, 0, 5005, 425, 1, 0, 0, 0, 5006, 5009, 5, 23, 0, 0, 5007, 5010, 3, 706, 353, 0, 5008, 5010, 3, 804, 402, 0, 5009, 5007, 1, 0, 0, 0, 5009, 5008, 1, 0, 0, 0, 5009, 5010, 1, 0, 0, 0, 5010, 5012, 1, 0, 0, 0, 5011, 5013, 3, 456, 228, 0, 5012, 5011, 1, 0, 0, 0, 5013, 5014, 1, 0, 0, 0, 5014, 5012, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5022, 1, 0, 0, 0, 5016, 5018, 5, 53, 0, 0, 5017, 5019, 3, 454, 227, 0, 5018, 5017, 1, 0, 0, 0, 5019, 5020, 1, 0, 0, 0, 5020, 5018, 1, 0, 0, 0, 5020, 5021, 1, 0, 0, 0, 5021, 5023, 1, 0, 0, 0, 5022, 5016, 1, 0, 0, 0, 5022, 5023, 1, 0, 0, 0, 5023, 5024, 1, 0, 0, 0, 5024, 5025, 5, 378, 0, 0, 5025, 5026, 5, 23, 0, 0, 5026, 427, 1, 0, 0, 0, 5027, 5028, 5, 78, 0, 0, 5028, 5029, 3, 804, 402, 0, 5029, 5031, 5, 175, 0, 0, 5030, 5032, 3, 454, 227, 0, 5031, 5030, 1, 0, 0, 0, 5032, 5033, 1, 0, 0, 0, 5033, 5031, 1, 0, 0, 0, 5033, 5034, 1, 0, 0, 0, 5034, 5038, 1, 0, 0, 0, 5035, 5037, 3, 458, 229, 0, 5036, 5035, 1, 0, 0, 0, 5037, 5040, 1, 0, 0, 0, 5038, 5036, 1, 0, 0, 0, 5038, 5039, 1, 0, 0, 0, 5039, 5047, 1, 0, 0, 0, 5040, 5038, 1, 0, 0, 0, 5041, 5043, 5, 53, 0, 0, 5042, 5044, 3, 454, 227, 0, 5043, 5042, 1, 0, 0, 0, 5044, 5045, 1, 0, 0, 0, 5045, 5043, 1, 0, 0, 0, 5045, 5046, 1, 0, 0, 0, 5046, 5048, 1, 0, 0, 0, 5047, 5041, 1, 0, 0, 0, 5047, 5048, 1, 0, 0, 0, 5048, 5049, 1, 0, 0, 0, 5049, 5050, 5, 378, 0, 0, 5050, 5051, 5, 78, 0, 0, 5051, 429, 1, 0, 0, 0, 5052, 5053, 5, 90, 0, 0, 5053, 5054, 3, 706, 353, 0, 5054, 431, 1, 0, 0, 0, 5055, 5056, 5, 97, 0, 0, 5056, 5057, 3, 706, 353, 0, 5057, 433, 1, 0, 0, 0, 5058, 5059, 3, 706, 353, 0, 5059, 5060, 5, 878, 0, 0, 5060, 5062, 1, 0, 0, 0, 5061, 5058, 1, 0, 0, 0, 5061, 5062, 1, 0, 0, 0, 5062, 5063, 1, 0, 0, 0, 5063, 5065, 5, 106, 0, 0, 5064, 5066, 3, 454, 227, 0, 5065, 5064, 1, 0, 0, 0, 5066, 5067, 1, 0, 0, 0, 5067, 5065, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5069, 1, 0, 0, 0, 5069, 5070, 5, 378, 0, 0, 5070, 5072, 5, 106, 0, 0, 5071, 5073, 3, 706, 353, 0, 5072, 5071, 1, 0, 0, 0, 5072, 5073, 1, 0, 0, 0, 5073, 435, 1, 0, 0, 0, 5074, 5075, 3, 706, 353, 0, 5075, 5076, 5, 878, 0, 0, 5076, 5078, 1, 0, 0, 0, 5077, 5074, 1, 0, 0, 0, 5077, 5078, 1, 0, 0, 0, 5078, 5079, 1, 0, 0, 0, 5079, 5081, 5, 142, 0, 0, 5080, 5082, 3, 454, 227, 0, 5081, 5080, 1, 0, 0, 0, 5082, 5083, 1, 0, 0, 0, 5083, 5081, 1, 0, 0, 0, 5083, 5084, 1, 0, 0, 0, 5084, 5085, 1, 0, 0, 0, 5085, 5086, 5, 676, 0, 0, 5086, 5087, 3, 804, 402, 0, 5087, 5088, 5, 378, 0, 0, 5088, 5090, 5, 142, 0, 0, 5089, 5091, 3, 706, 353, 0, 5090, 5089, 1, 0, 0, 0, 5090, 5091, 1, 0, 0, 0, 5091, 437, 1, 0, 0, 0, 5092, 5093, 5, 148, 0, 0, 5093, 5094, 3, 804, 402, 0, 5094, 439, 1, 0, 0, 0, 5095, 5096, 3, 706, 353, 0, 5096, 5097, 5, 878, 0, 0, 5097, 5099, 1, 0, 0, 0, 5098, 5095, 1, 0, 0, 0, 5098, 5099, 1, 0, 0, 0, 5099, 5100, 1, 0, 0, 0, 5100, 5101, 5, 193, 0, 0, 5101, 5102, 3, 804, 402, 0, 5102, 5104, 5, 371, 0, 0, 5103, 5105, 3, 454, 227, 0, 5104, 5103, 1, 0, 0, 0, 5105, 5106, 1, 0, 0, 0, 5106, 5104, 1, 0, 0, 0, 5106, 5107, 1, 0, 0, 0, 5107, 5108, 1, 0, 0, 0, 5108, 5109, 5, 378, 0, 0, 5109, 5111, 5, 193, 0, 0, 5110, 5112, 3, 706, 353, 0, 5111, 5110, 1, 0, 0, 0, 5111, 5112, 1, 0, 0, 0, 5112, 441, 1, 0, 0, 0, 5113, 5114, 5, 334, 0, 0, 5114, 5129, 3, 706, 353, 0, 5115, 5120, 5, 64, 0, 0, 5116, 5118, 5, 501, 0, 0, 5117, 5116, 1, 0, 0, 0, 5117, 5118, 1, 0, 0, 0, 5118, 5119, 1, 0, 0, 0, 5119, 5121, 5, 68, 0, 0, 5120, 5117, 1, 0, 0, 0, 5120, 5121, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 3, 706, 353, 0, 5123, 5124, 5, 88, 0, 0, 5124, 5125, 3, 704, 352, 0, 5125, 5129, 1, 0, 0, 0, 5126, 5127, 5, 516, 0, 0, 5127, 5129, 3, 706, 353, 0, 5128, 5113, 1, 0, 0, 0, 5128, 5115, 1, 0, 0, 0, 5128, 5126, 1, 0, 0, 0, 5129, 443, 1, 0, 0, 0, 5130, 5131, 5, 41, 0, 0, 5131, 5132, 3, 704, 352, 0, 5132, 5135, 3, 726, 363, 0, 5133, 5134, 5, 42, 0, 0, 5134, 5136, 3, 804, 402, 0, 5135, 5133, 1, 0, 0, 0, 5135, 5136, 1, 0, 0, 0, 5136, 445, 1, 0, 0, 0, 5137, 5138, 5, 41, 0, 0, 5138, 5139, 3, 706, 353, 0, 5139, 5140, 5, 30, 0, 0, 5140, 5147, 5, 65, 0, 0, 5141, 5148, 3, 712, 356, 0, 5142, 5144, 5, 164, 0, 0, 5143, 5145, 5, 682, 0, 0, 5144, 5143, 1, 0, 0, 0, 5144, 5145, 1, 0, 0, 0, 5145, 5146, 1, 0, 0, 0, 5146, 5148, 5, 882, 0, 0, 5147, 5141, 1, 0, 0, 0, 5147, 5142, 1, 0, 0, 0, 5148, 447, 1, 0, 0, 0, 5149, 5150, 5, 41, 0, 0, 5150, 5151, 3, 706, 353, 0, 5151, 5152, 5, 38, 0, 0, 5152, 5153, 5, 65, 0, 0, 5153, 5154, 3, 210, 105, 0, 5154, 449, 1, 0, 0, 0, 5155, 5156, 5, 41, 0, 0, 5156, 5157, 7, 79, 0, 0, 5157, 5158, 5, 417, 0, 0, 5158, 5159, 5, 65, 0, 0, 5159, 5164, 3, 452, 226, 0, 5160, 5161, 5, 868, 0, 0, 5161, 5163, 3, 452, 226, 0, 5162, 5160, 1, 0, 0, 0, 5163, 5166, 1, 0, 0, 0, 5164, 5162, 1, 0, 0, 0, 5164, 5165, 1, 0, 0, 0, 5165, 5167, 1, 0, 0, 0, 5166, 5164, 1, 0, 0, 0, 5167, 5168, 3, 422, 211, 0, 5168, 451, 1, 0, 0, 0, 5169, 5181, 3, 712, 356, 0, 5170, 5172, 5, 164, 0, 0, 5171, 5173, 5, 682, 0, 0, 5172, 5171, 1, 0, 0, 0, 5172, 5173, 1, 0, 0, 0, 5173, 5174, 1, 0, 0, 0, 5174, 5181, 5, 882, 0, 0, 5175, 5181, 3, 706, 353, 0, 5176, 5181, 5, 165, 0, 0, 5177, 5178, 5, 114, 0, 0, 5178, 5181, 5, 407, 0, 0, 5179, 5181, 5, 163, 0, 0, 5180, 5169, 1, 0, 0, 0, 5180, 5170, 1, 0, 0, 0, 5180, 5175, 1, 0, 0, 0, 5180, 5176, 1, 0, 0, 0, 5180, 5177, 1, 0, 0, 0, 5180, 5179, 1, 0, 0, 0, 5181, 453, 1, 0, 0, 0, 5182, 5185, 3, 18, 9, 0, 5183, 5185, 3, 4, 2, 0, 5184, 5182, 1, 0, 0, 0, 5184, 5183, 1, 0, 0, 0, 5185, 5186, 1, 0, 0, 0, 5186, 5187, 5, 869, 0, 0, 5187, 455, 1, 0, 0, 0, 5188, 5191, 5, 191, 0, 0, 5189, 5192, 3, 724, 362, 0, 5190, 5192, 3, 804, 402, 0, 5191, 5189, 1, 0, 0, 0, 5191, 5190, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5195, 5, 175, 0, 0, 5194, 5196, 3, 454, 227, 0, 5195, 5194, 1, 0, 0, 0, 5196, 5197, 1, 0, 0, 0, 5197, 5195, 1, 0, 0, 0, 5197, 5198, 1, 0, 0, 0, 5198, 457, 1, 0, 0, 0, 5199, 5200, 5, 54, 0, 0, 5200, 5201, 3, 804, 402, 0, 5201, 5203, 5, 175, 0, 0, 5202, 5204, 3, 454, 227, 0, 5203, 5202, 1, 0, 0, 0, 5204, 5205, 1, 0, 0, 0, 5205, 5203, 1, 0, 0, 0, 5205, 5206, 1, 0, 0, 0, 5206, 459, 1, 0, 0, 0, 5207, 5208, 5, 8, 0, 0, 5208, 5210, 5, 678, 0, 0, 5209, 5211, 3, 758, 379, 0, 5210, 5209, 1, 0, 0, 0, 5210, 5211, 1, 0, 0, 0, 5211, 5268, 1, 0, 0, 0, 5212, 5217, 3, 492, 246, 0, 5213, 5214, 5, 868, 0, 0, 5214, 5216, 3, 492, 246, 0, 5215, 5213, 1, 0, 0, 0, 5216, 5219, 1, 0, 0, 0, 5217, 5215, 1, 0, 0, 0, 5217, 5218, 1, 0, 0, 0, 5218, 5269, 1, 0, 0, 0, 5219, 5217, 1, 0, 0, 0, 5220, 5225, 3, 494, 247, 0, 5221, 5222, 5, 868, 0, 0, 5222, 5224, 3, 494, 247, 0, 5223, 5221, 1, 0, 0, 0, 5224, 5227, 1, 0, 0, 0, 5225, 5223, 1, 0, 0, 0, 5225, 5226, 1, 0, 0, 0, 5226, 5242, 1, 0, 0, 0, 5227, 5225, 1, 0, 0, 0, 5228, 5240, 5, 144, 0, 0, 5229, 5241, 5, 505, 0, 0, 5230, 5237, 3, 506, 253, 0, 5231, 5233, 5, 11, 0, 0, 5232, 5231, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5234, 1, 0, 0, 0, 5234, 5236, 3, 506, 253, 0, 5235, 5232, 1, 0, 0, 0, 5236, 5239, 1, 0, 0, 0, 5237, 5235, 1, 0, 0, 0, 5237, 5238, 1, 0, 0, 0, 5238, 5241, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5240, 5229, 1, 0, 0, 0, 5240, 5230, 1, 0, 0, 0, 5241, 5243, 1, 0, 0, 0, 5242, 5228, 1, 0, 0, 0, 5242, 5243, 1, 0, 0, 0, 5243, 5250, 1, 0, 0, 0, 5244, 5246, 5, 194, 0, 0, 5245, 5247, 3, 508, 254, 0, 5246, 5245, 1, 0, 0, 0, 5247, 5248, 1, 0, 0, 0, 5248, 5246, 1, 0, 0, 0, 5248, 5249, 1, 0, 0, 0, 5249, 5251, 1, 0, 0, 0, 5250, 5244, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5256, 1, 0, 0, 0, 5252, 5255, 3, 510, 255, 0, 5253, 5255, 3, 512, 256, 0, 5254, 5252, 1, 0, 0, 0, 5254, 5253, 1, 0, 0, 0, 5255, 5258, 1, 0, 0, 0, 5256, 5254, 1, 0, 0, 0, 5256, 5257, 1, 0, 0, 0, 5257, 5261, 1, 0, 0, 0, 5258, 5256, 1, 0, 0, 0, 5259, 5260, 7, 80, 0, 0, 5260, 5262, 5, 882, 0, 0, 5261, 5259, 1, 0, 0, 0, 5261, 5262, 1, 0, 0, 0, 5262, 5269, 1, 0, 0, 0, 5263, 5264, 3, 656, 328, 0, 5264, 5265, 5, 42, 0, 0, 5265, 5266, 5, 582, 0, 0, 5266, 5267, 3, 468, 234, 0, 5267, 5269, 1, 0, 0, 0, 5268, 5212, 1, 0, 0, 0, 5268, 5220, 1, 0, 0, 0, 5268, 5263, 1, 0, 0, 0, 5269, 461, 1, 0, 0, 0, 5270, 5271, 5, 34, 0, 0, 5271, 5273, 5, 678, 0, 0, 5272, 5274, 3, 760, 380, 0, 5273, 5272, 1, 0, 0, 0, 5273, 5274, 1, 0, 0, 0, 5274, 5275, 1, 0, 0, 0, 5275, 5277, 3, 684, 342, 0, 5276, 5278, 3, 496, 248, 0, 5277, 5276, 1, 0, 0, 0, 5277, 5278, 1, 0, 0, 0, 5278, 5286, 1, 0, 0, 0, 5279, 5280, 5, 868, 0, 0, 5280, 5282, 3, 684, 342, 0, 5281, 5283, 3, 496, 248, 0, 5282, 5281, 1, 0, 0, 0, 5282, 5283, 1, 0, 0, 0, 5283, 5285, 1, 0, 0, 0, 5284, 5279, 1, 0, 0, 0, 5285, 5288, 1, 0, 0, 0, 5286, 5284, 1, 0, 0, 0, 5286, 5287, 1, 0, 0, 0, 5287, 5292, 1, 0, 0, 0, 5288, 5286, 1, 0, 0, 0, 5289, 5290, 5, 42, 0, 0, 5290, 5291, 5, 582, 0, 0, 5291, 5293, 3, 468, 234, 0, 5292, 5289, 1, 0, 0, 0, 5292, 5293, 1, 0, 0, 0, 5293, 5308, 1, 0, 0, 0, 5294, 5306, 5, 144, 0, 0, 5295, 5307, 5, 505, 0, 0, 5296, 5303, 3, 506, 253, 0, 5297, 5299, 5, 11, 0, 0, 5298, 5297, 1, 0, 0, 0, 5298, 5299, 1, 0, 0, 0, 5299, 5300, 1, 0, 0, 0, 5300, 5302, 3, 506, 253, 0, 5301, 5298, 1, 0, 0, 0, 5302, 5305, 1, 0, 0, 0, 5303, 5301, 1, 0, 0, 0, 5303, 5304, 1, 0, 0, 0, 5304, 5307, 1, 0, 0, 0, 5305, 5303, 1, 0, 0, 0, 5306, 5295, 1, 0, 0, 0, 5306, 5296, 1, 0, 0, 0, 5307, 5309, 1, 0, 0, 0, 5308, 5294, 1, 0, 0, 0, 5308, 5309, 1, 0, 0, 0, 5309, 5316, 1, 0, 0, 0, 5310, 5312, 5, 194, 0, 0, 5311, 5313, 3, 508, 254, 0, 5312, 5311, 1, 0, 0, 0, 5313, 5314, 1, 0, 0, 0, 5314, 5312, 1, 0, 0, 0, 5314, 5315, 1, 0, 0, 0, 5315, 5317, 1, 0, 0, 0, 5316, 5310, 1, 0, 0, 0, 5316, 5317, 1, 0, 0, 0, 5317, 5322, 1, 0, 0, 0, 5318, 5321, 3, 510, 255, 0, 5319, 5321, 3, 512, 256, 0, 5320, 5318, 1, 0, 0, 0, 5320, 5319, 1, 0, 0, 0, 5321, 5324, 1, 0, 0, 0, 5322, 5320, 1, 0, 0, 0, 5322, 5323, 1, 0, 0, 0, 5323, 5327, 1, 0, 0, 0, 5324, 5322, 1, 0, 0, 0, 5325, 5326, 7, 80, 0, 0, 5326, 5328, 5, 882, 0, 0, 5327, 5325, 1, 0, 0, 0, 5327, 5328, 1, 0, 0, 0, 5328, 463, 1, 0, 0, 0, 5329, 5330, 5, 51, 0, 0, 5330, 5332, 5, 678, 0, 0, 5331, 5333, 3, 758, 379, 0, 5332, 5331, 1, 0, 0, 0, 5332, 5333, 1, 0, 0, 0, 5333, 5334, 1, 0, 0, 0, 5334, 5339, 3, 684, 342, 0, 5335, 5336, 5, 868, 0, 0, 5336, 5338, 3, 684, 342, 0, 5337, 5335, 1, 0, 0, 0, 5338, 5341, 1, 0, 0, 0, 5339, 5337, 1, 0, 0, 0, 5339, 5340, 1, 0, 0, 0, 5340, 465, 1, 0, 0, 0, 5341, 5339, 1, 0, 0, 0, 5342, 5343, 5, 73, 0, 0, 5343, 5348, 3, 520, 260, 0, 5344, 5345, 5, 868, 0, 0, 5345, 5347, 3, 520, 260, 0, 5346, 5344, 1, 0, 0, 0, 5347, 5350, 1, 0, 0, 0, 5348, 5346, 1, 0, 0, 0, 5348, 5349, 1, 0, 0, 0, 5349, 5351, 1, 0, 0, 0, 5350, 5348, 1, 0, 0, 0, 5351, 5353, 5, 119, 0, 0, 5352, 5354, 3, 488, 244, 0, 5353, 5352, 1, 0, 0, 0, 5353, 5354, 1, 0, 0, 0, 5354, 5355, 1, 0, 0, 0, 5355, 5356, 3, 524, 262, 0, 5356, 5366, 5, 176, 0, 0, 5357, 5362, 3, 500, 250, 0, 5358, 5359, 5, 868, 0, 0, 5359, 5361, 3, 500, 250, 0, 5360, 5358, 1, 0, 0, 0, 5361, 5364, 1, 0, 0, 0, 5362, 5360, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 5367, 1, 0, 0, 0, 5364, 5362, 1, 0, 0, 0, 5365, 5367, 3, 654, 327, 0, 5366, 5357, 1, 0, 0, 0, 5366, 5365, 1, 0, 0, 0, 5367, 5382, 1, 0, 0, 0, 5368, 5380, 5, 144, 0, 0, 5369, 5381, 5, 505, 0, 0, 5370, 5377, 3, 506, 253, 0, 5371, 5373, 5, 11, 0, 0, 5372, 5371, 1, 0, 0, 0, 5372, 5373, 1, 0, 0, 0, 5373, 5374, 1, 0, 0, 0, 5374, 5376, 3, 506, 253, 0, 5375, 5372, 1, 0, 0, 0, 5376, 5379, 1, 0, 0, 0, 5377, 5375, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5381, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5380, 5369, 1, 0, 0, 0, 5380, 5370, 1, 0, 0, 0, 5381, 5383, 1, 0, 0, 0, 5382, 5368, 1, 0, 0, 0, 5382, 5383, 1, 0, 0, 0, 5383, 5393, 1, 0, 0, 0, 5384, 5390, 5, 194, 0, 0, 5385, 5386, 5, 73, 0, 0, 5386, 5389, 5, 121, 0, 0, 5387, 5389, 3, 508, 254, 0, 5388, 5385, 1, 0, 0, 0, 5388, 5387, 1, 0, 0, 0, 5389, 5392, 1, 0, 0, 0, 5390, 5388, 1, 0, 0, 0, 5390, 5391, 1, 0, 0, 0, 5391, 5394, 1, 0, 0, 0, 5392, 5390, 1, 0, 0, 0, 5393, 5384, 1, 0, 0, 0, 5393, 5394, 1, 0, 0, 0, 5394, 5402, 1, 0, 0, 0, 5395, 5396, 5, 13, 0, 0, 5396, 5400, 3, 684, 342, 0, 5397, 5398, 5, 194, 0, 0, 5398, 5399, 5, 582, 0, 0, 5399, 5401, 3, 468, 234, 0, 5400, 5397, 1, 0, 0, 0, 5400, 5401, 1, 0, 0, 0, 5401, 5403, 1, 0, 0, 0, 5402, 5395, 1, 0, 0, 0, 5402, 5403, 1, 0, 0, 0, 5403, 5432, 1, 0, 0, 0, 5404, 5407, 5, 73, 0, 0, 5405, 5406, 5, 547, 0, 0, 5406, 5408, 5, 119, 0, 0, 5407, 5405, 1, 0, 0, 0, 5407, 5408, 1, 0, 0, 0, 5408, 5409, 1, 0, 0, 0, 5409, 5414, 3, 656, 328, 0, 5410, 5411, 5, 868, 0, 0, 5411, 5413, 3, 656, 328, 0, 5412, 5410, 1, 0, 0, 0, 5413, 5416, 1, 0, 0, 0, 5414, 5412, 1, 0, 0, 0, 5414, 5415, 1, 0, 0, 0, 5415, 5417, 1, 0, 0, 0, 5416, 5414, 1, 0, 0, 0, 5417, 5418, 5, 176, 0, 0, 5418, 5423, 3, 656, 328, 0, 5419, 5420, 5, 868, 0, 0, 5420, 5422, 3, 656, 328, 0, 5421, 5419, 1, 0, 0, 0, 5422, 5425, 1, 0, 0, 0, 5423, 5421, 1, 0, 0, 0, 5423, 5424, 1, 0, 0, 0, 5424, 5429, 1, 0, 0, 0, 5425, 5423, 1, 0, 0, 0, 5426, 5427, 5, 194, 0, 0, 5427, 5428, 5, 704, 0, 0, 5428, 5430, 5, 121, 0, 0, 5429, 5426, 1, 0, 0, 0, 5429, 5430, 1, 0, 0, 0, 5430, 5432, 1, 0, 0, 0, 5431, 5342, 1, 0, 0, 0, 5431, 5404, 1, 0, 0, 0, 5432, 467, 1, 0, 0, 0, 5433, 5442, 5, 42, 0, 0, 5434, 5442, 5, 505, 0, 0, 5435, 5438, 5, 7, 0, 0, 5436, 5437, 5, 59, 0, 0, 5437, 5439, 3, 654, 327, 0, 5438, 5436, 1, 0, 0, 0, 5438, 5439, 1, 0, 0, 0, 5439, 5442, 1, 0, 0, 0, 5440, 5442, 3, 654, 327, 0, 5441, 5433, 1, 0, 0, 0, 5441, 5434, 1, 0, 0, 0, 5441, 5435, 1, 0, 0, 0, 5441, 5440, 1, 0, 0, 0, 5442, 469, 1, 0, 0, 0, 5443, 5444, 5, 73, 0, 0, 5444, 5445, 5, 547, 0, 0, 5445, 5446, 5, 119, 0, 0, 5446, 5447, 3, 684, 342, 0, 5447, 5448, 5, 176, 0, 0, 5448, 5453, 3, 684, 342, 0, 5449, 5450, 5, 868, 0, 0, 5450, 5452, 3, 684, 342, 0, 5451, 5449, 1, 0, 0, 0, 5452, 5455, 1, 0, 0, 0, 5453, 5451, 1, 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 5459, 1, 0, 0, 0, 5455, 5453, 1, 0, 0, 0, 5456, 5457, 5, 194, 0, 0, 5457, 5458, 5, 73, 0, 0, 5458, 5460, 5, 121, 0, 0, 5459, 5456, 1, 0, 0, 0, 5459, 5460, 1, 0, 0, 0, 5460, 471, 1, 0, 0, 0, 5461, 5462, 5, 8, 0, 0, 5462, 5463, 5, 739, 0, 0, 5463, 5464, 5, 74, 0, 0, 5464, 5470, 3, 646, 323, 0, 5465, 5467, 5, 190, 0, 0, 5466, 5468, 5, 857, 0, 0, 5467, 5466, 1, 0, 0, 0, 5467, 5468, 1, 0, 0, 0, 5468, 5469, 1, 0, 0, 0, 5469, 5471, 3, 480, 240, 0, 5470, 5465, 1, 0, 0, 0, 5470, 5471, 1, 0, 0, 0, 5471, 5477, 1, 0, 0, 0, 5472, 5474, 5, 837, 0, 0, 5473, 5475, 5, 857, 0, 0, 5474, 5473, 1, 0, 0, 0, 5474, 5475, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 5478, 3, 712, 356, 0, 5477, 5472, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 5483, 1, 0, 0, 0, 5479, 5481, 7, 39, 0, 0, 5480, 5482, 5, 66, 0, 0, 5481, 5480, 1, 0, 0, 0, 5481, 5482, 1, 0, 0, 0, 5482, 5484, 1, 0, 0, 0, 5483, 5479, 1, 0, 0, 0, 5483, 5484, 1, 0, 0, 0, 5484, 473, 1, 0, 0, 0, 5485, 5486, 5, 34, 0, 0, 5486, 5487, 5, 739, 0, 0, 5487, 5488, 5, 74, 0, 0, 5488, 5489, 3, 644, 322, 0, 5489, 5490, 5, 839, 0, 0, 5490, 5491, 5, 857, 0, 0, 5491, 5497, 7, 81, 0, 0, 5492, 5494, 5, 190, 0, 0, 5493, 5495, 5, 857, 0, 0, 5494, 5493, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5496, 1, 0, 0, 0, 5496, 5498, 3, 480, 240, 0, 5497, 5492, 1, 0, 0, 0, 5497, 5498, 1, 0, 0, 0, 5498, 5504, 1, 0, 0, 0, 5499, 5501, 5, 837, 0, 0, 5500, 5502, 5, 857, 0, 0, 5501, 5500, 1, 0, 0, 0, 5501, 5502, 1, 0, 0, 0, 5502, 5503, 1, 0, 0, 0, 5503, 5505, 3, 712, 356, 0, 5504, 5499, 1, 0, 0, 0, 5504, 5505, 1, 0, 0, 0, 5505, 5507, 1, 0, 0, 0, 5506, 5508, 7, 39, 0, 0, 5507, 5506, 1, 0, 0, 0, 5507, 5508, 1, 0, 0, 0, 5508, 475, 1, 0, 0, 0, 5509, 5510, 5, 51, 0, 0, 5510, 5511, 5, 739, 0, 0, 5511, 5512, 5, 74, 0, 0, 5512, 5514, 3, 646, 323, 0, 5513, 5515, 5, 66, 0, 0, 5514, 5513, 1, 0, 0, 0, 5514, 5515, 1, 0, 0, 0, 5515, 477, 1, 0, 0, 0, 5516, 5517, 5, 155, 0, 0, 5517, 5518, 5, 739, 0, 0, 5518, 5519, 5, 74, 0, 0, 5519, 5529, 3, 646, 323, 0, 5520, 5521, 5, 65, 0, 0, 5521, 5526, 3, 712, 356, 0, 5522, 5523, 5, 868, 0, 0, 5523, 5525, 3, 712, 356, 0, 5524, 5522, 1, 0, 0, 0, 5525, 5528, 1, 0, 0, 0, 5526, 5524, 1, 0, 0, 0, 5526, 5527, 1, 0, 0, 0, 5527, 5530, 1, 0, 0, 0, 5528, 5526, 1, 0, 0, 0, 5529, 5520, 1, 0, 0, 0, 5529, 5530, 1, 0, 0, 0, 5530, 479, 1, 0, 0, 0, 5531, 5537, 3, 712, 356, 0, 5532, 5533, 3, 712, 356, 0, 5533, 5534, 5, 854, 0, 0, 5534, 5535, 3, 712, 356, 0, 5535, 5537, 1, 0, 0, 0, 5536, 5531, 1, 0, 0, 0, 5536, 5532, 1, 0, 0, 0, 5537, 5542, 1, 0, 0, 0, 5538, 5539, 5, 868, 0, 0, 5539, 5541, 3, 480, 240, 0, 5540, 5538, 1, 0, 0, 0, 5541, 5544, 1, 0, 0, 0, 5542, 5540, 1, 0, 0, 0, 5542, 5543, 1, 0, 0, 0, 5543, 481, 1, 0, 0, 0, 5544, 5542, 1, 0, 0, 0, 5545, 5546, 5, 141, 0, 0, 5546, 5547, 5, 678, 0, 0, 5547, 5552, 3, 526, 263, 0, 5548, 5549, 5, 868, 0, 0, 5549, 5551, 3, 526, 263, 0, 5550, 5548, 1, 0, 0, 0, 5551, 5554, 1, 0, 0, 0, 5552, 5550, 1, 0, 0, 0, 5552, 5553, 1, 0, 0, 0, 5553, 483, 1, 0, 0, 0, 5554, 5552, 1, 0, 0, 0, 5555, 5557, 5, 149, 0, 0, 5556, 5558, 3, 758, 379, 0, 5557, 5556, 1, 0, 0, 0, 5557, 5558, 1, 0, 0, 0, 5558, 5559, 1, 0, 0, 0, 5559, 5564, 3, 520, 260, 0, 5560, 5561, 5, 868, 0, 0, 5561, 5563, 3, 520, 260, 0, 5562, 5560, 1, 0, 0, 0, 5563, 5566, 1, 0, 0, 0, 5564, 5562, 1, 0, 0, 0, 5564, 5565, 1, 0, 0, 0, 5565, 5567, 1, 0, 0, 0, 5566, 5564, 1, 0, 0, 0, 5567, 5569, 5, 119, 0, 0, 5568, 5570, 3, 488, 244, 0, 5569, 5568, 1, 0, 0, 0, 5569, 5570, 1, 0, 0, 0, 5570, 5571, 1, 0, 0, 0, 5571, 5572, 3, 524, 262, 0, 5572, 5573, 5, 68, 0, 0, 5573, 5575, 3, 654, 327, 0, 5574, 5576, 3, 486, 243, 0, 5575, 5574, 1, 0, 0, 0, 5575, 5576, 1, 0, 0, 0, 5576, 5608, 1, 0, 0, 0, 5577, 5579, 5, 149, 0, 0, 5578, 5580, 3, 758, 379, 0, 5579, 5578, 1, 0, 0, 0, 5579, 5580, 1, 0, 0, 0, 5580, 5581, 1, 0, 0, 0, 5581, 5583, 5, 7, 0, 0, 5582, 5584, 5, 734, 0, 0, 5583, 5582, 1, 0, 0, 0, 5583, 5584, 1, 0, 0, 0, 5584, 5585, 1, 0, 0, 0, 5585, 5586, 5, 868, 0, 0, 5586, 5587, 5, 73, 0, 0, 5587, 5588, 5, 121, 0, 0, 5588, 5589, 5, 68, 0, 0, 5589, 5591, 3, 654, 327, 0, 5590, 5592, 3, 486, 243, 0, 5591, 5590, 1, 0, 0, 0, 5591, 5592, 1, 0, 0, 0, 5592, 5608, 1, 0, 0, 0, 5593, 5595, 5, 149, 0, 0, 5594, 5596, 3, 758, 379, 0, 5595, 5594, 1, 0, 0, 0, 5595, 5596, 1, 0, 0, 0, 5596, 5599, 1, 0, 0, 0, 5597, 5598, 5, 547, 0, 0, 5598, 5600, 5, 119, 0, 0, 5599, 5597, 1, 0, 0, 0, 5599, 5600, 1, 0, 0, 0, 5600, 5601, 1, 0, 0, 0, 5601, 5602, 3, 654, 327, 0, 5602, 5603, 5, 68, 0, 0, 5603, 5605, 3, 654, 327, 0, 5604, 5606, 3, 486, 243, 0, 5605, 5604, 1, 0, 0, 0, 5605, 5606, 1, 0, 0, 0, 5606, 5608, 1, 0, 0, 0, 5607, 5555, 1, 0, 0, 0, 5607, 5577, 1, 0, 0, 0, 5607, 5593, 1, 0, 0, 0, 5608, 485, 1, 0, 0, 0, 5609, 5610, 5, 79, 0, 0, 5610, 5611, 5, 674, 0, 0, 5611, 5612, 5, 678, 0, 0, 5612, 487, 1, 0, 0, 0, 5613, 5614, 7, 82, 0, 0, 5614, 489, 1, 0, 0, 0, 5615, 5616, 5, 155, 0, 0, 5616, 5619, 5, 529, 0, 0, 5617, 5618, 5, 65, 0, 0, 5618, 5620, 3, 684, 342, 0, 5619, 5617, 1, 0, 0, 0, 5619, 5620, 1, 0, 0, 0, 5620, 5621, 1, 0, 0, 0, 5621, 5624, 5, 857, 0, 0, 5622, 5625, 3, 798, 399, 0, 5623, 5625, 5, 882, 0, 0, 5624, 5622, 1, 0, 0, 0, 5624, 5623, 1, 0, 0, 0, 5625, 5648, 1, 0, 0, 0, 5626, 5627, 5, 155, 0, 0, 5627, 5630, 5, 529, 0, 0, 5628, 5629, 5, 65, 0, 0, 5629, 5631, 3, 684, 342, 0, 5630, 5628, 1, 0, 0, 0, 5630, 5631, 1, 0, 0, 0, 5631, 5636, 1, 0, 0, 0, 5632, 5633, 5, 176, 0, 0, 5633, 5637, 5, 829, 0, 0, 5634, 5635, 5, 857, 0, 0, 5635, 5637, 5, 882, 0, 0, 5636, 5632, 1, 0, 0, 0, 5636, 5634, 1, 0, 0, 0, 5637, 5640, 1, 0, 0, 0, 5638, 5639, 5, 143, 0, 0, 5639, 5641, 5, 882, 0, 0, 5640, 5638, 1, 0, 0, 0, 5640, 5641, 1, 0, 0, 0, 5641, 5645, 1, 0, 0, 0, 5642, 5643, 5, 147, 0, 0, 5643, 5644, 5, 36, 0, 0, 5644, 5646, 5, 529, 0, 0, 5645, 5642, 1, 0, 0, 0, 5645, 5646, 1, 0, 0, 0, 5646, 5648, 1, 0, 0, 0, 5647, 5615, 1, 0, 0, 0, 5647, 5626, 1, 0, 0, 0, 5648, 491, 1, 0, 0, 0, 5649, 5650, 3, 684, 342, 0, 5650, 5651, 3, 510, 255, 0, 5651, 493, 1, 0, 0, 0, 5652, 5678, 3, 684, 342, 0, 5653, 5654, 5, 423, 0, 0, 5654, 5655, 5, 20, 0, 0, 5655, 5656, 5, 882, 0, 0, 5656, 5679, 3, 502, 251, 0, 5657, 5658, 5, 423, 0, 0, 5658, 5659, 5, 20, 0, 0, 5659, 5660, 5, 829, 0, 0, 5660, 5661, 5, 529, 0, 0, 5661, 5679, 3, 502, 251, 0, 5662, 5663, 5, 423, 0, 0, 5663, 5664, 5, 194, 0, 0, 5664, 5679, 3, 504, 252, 0, 5665, 5666, 5, 369, 0, 0, 5666, 5667, 5, 511, 0, 0, 5667, 5679, 5, 529, 0, 0, 5668, 5669, 7, 83, 0, 0, 5669, 5671, 3, 518, 259, 0, 5670, 5672, 3, 514, 257, 0, 5671, 5670, 1, 0, 0, 0, 5671, 5672, 1, 0, 0, 0, 5672, 5674, 1, 0, 0, 0, 5673, 5668, 1, 0, 0, 0, 5674, 5675, 1, 0, 0, 0, 5675, 5673, 1, 0, 0, 0, 5675, 5676, 1, 0, 0, 0, 5676, 5679, 1, 0, 0, 0, 5677, 5679, 3, 516, 258, 0, 5678, 5653, 1, 0, 0, 0, 5678, 5657, 1, 0, 0, 0, 5678, 5662, 1, 0, 0, 0, 5678, 5665, 1, 0, 0, 0, 5678, 5673, 1, 0, 0, 0, 5678, 5677, 1, 0, 0, 0, 5678, 5679, 1, 0, 0, 0, 5679, 495, 1, 0, 0, 0, 5680, 5681, 5, 423, 0, 0, 5681, 5687, 5, 20, 0, 0, 5682, 5688, 5, 882, 0, 0, 5683, 5684, 5, 829, 0, 0, 5684, 5688, 5, 529, 0, 0, 5685, 5686, 5, 529, 0, 0, 5686, 5688, 5, 882, 0, 0, 5687, 5682, 1, 0, 0, 0, 5687, 5683, 1, 0, 0, 0, 5687, 5685, 1, 0, 0, 0, 5688, 5691, 1, 0, 0, 0, 5689, 5690, 5, 11, 0, 0, 5690, 5692, 3, 496, 248, 0, 5691, 5689, 1, 0, 0, 0, 5691, 5692, 1, 0, 0, 0, 5692, 5717, 1, 0, 0, 0, 5693, 5694, 5, 423, 0, 0, 5694, 5695, 5, 194, 0, 0, 5695, 5704, 3, 706, 353, 0, 5696, 5700, 5, 20, 0, 0, 5697, 5701, 5, 882, 0, 0, 5698, 5699, 5, 829, 0, 0, 5699, 5701, 5, 529, 0, 0, 5700, 5697, 1, 0, 0, 0, 5700, 5698, 1, 0, 0, 0, 5701, 5705, 1, 0, 0, 0, 5702, 5703, 5, 13, 0, 0, 5703, 5705, 5, 882, 0, 0, 5704, 5696, 1, 0, 0, 0, 5704, 5702, 1, 0, 0, 0, 5704, 5705, 1, 0, 0, 0, 5705, 5708, 1, 0, 0, 0, 5706, 5707, 5, 11, 0, 0, 5707, 5709, 3, 496, 248, 0, 5708, 5706, 1, 0, 0, 0, 5708, 5709, 1, 0, 0, 0, 5709, 5717, 1, 0, 0, 0, 5710, 5711, 5, 423, 0, 0, 5711, 5712, 5, 194, 0, 0, 5712, 5714, 3, 706, 353, 0, 5713, 5715, 3, 498, 249, 0, 5714, 5713, 1, 0, 0, 0, 5714, 5715, 1, 0, 0, 0, 5715, 5717, 1, 0, 0, 0, 5716, 5680, 1, 0, 0, 0, 5716, 5693, 1, 0, 0, 0, 5716, 5710, 1, 0, 0, 0, 5717, 497, 1, 0, 0, 0, 5718, 5719, 5, 427, 0, 0, 5719, 5720, 5, 708, 0, 0, 5720, 5721, 5, 423, 0, 0, 5721, 5725, 5, 20, 0, 0, 5722, 5723, 5, 829, 0, 0, 5723, 5726, 5, 529, 0, 0, 5724, 5726, 5, 882, 0, 0, 5725, 5722, 1, 0, 0, 0, 5725, 5724, 1, 0, 0, 0, 5726, 5736, 1, 0, 0, 0, 5727, 5728, 5, 427, 0, 0, 5728, 5729, 5, 708, 0, 0, 5729, 5730, 5, 423, 0, 0, 5730, 5731, 5, 194, 0, 0, 5731, 5732, 3, 706, 353, 0, 5732, 5733, 5, 13, 0, 0, 5733, 5734, 5, 882, 0, 0, 5734, 5736, 1, 0, 0, 0, 5735, 5718, 1, 0, 0, 0, 5735, 5727, 1, 0, 0, 0, 5736, 499, 1, 0, 0, 0, 5737, 5738, 3, 684, 342, 0, 5738, 5739, 5, 423, 0, 0, 5739, 5740, 5, 20, 0, 0, 5740, 5741, 5, 529, 0, 0, 5741, 5742, 5, 882, 0, 0, 5742, 5763, 1, 0, 0, 0, 5743, 5744, 3, 684, 342, 0, 5744, 5745, 5, 423, 0, 0, 5745, 5746, 5, 20, 0, 0, 5746, 5747, 5, 829, 0, 0, 5747, 5748, 5, 529, 0, 0, 5748, 5749, 3, 502, 251, 0, 5749, 5763, 1, 0, 0, 0, 5750, 5751, 3, 684, 342, 0, 5751, 5752, 5, 423, 0, 0, 5752, 5753, 5, 20, 0, 0, 5753, 5754, 5, 882, 0, 0, 5754, 5755, 3, 502, 251, 0, 5755, 5763, 1, 0, 0, 0, 5756, 5757, 3, 684, 342, 0, 5757, 5758, 5, 423, 0, 0, 5758, 5759, 5, 194, 0, 0, 5759, 5760, 3, 504, 252, 0, 5760, 5763, 1, 0, 0, 0, 5761, 5763, 3, 684, 342, 0, 5762, 5737, 1, 0, 0, 0, 5762, 5743, 1, 0, 0, 0, 5762, 5750, 1, 0, 0, 0, 5762, 5756, 1, 0, 0, 0, 5762, 5761, 1, 0, 0, 0, 5763, 501, 1, 0, 0, 0, 5764, 5765, 5, 143, 0, 0, 5765, 5767, 5, 882, 0, 0, 5766, 5764, 1, 0, 0, 0, 5766, 5767, 1, 0, 0, 0, 5767, 5771, 1, 0, 0, 0, 5768, 5769, 5, 147, 0, 0, 5769, 5770, 5, 36, 0, 0, 5770, 5772, 5, 529, 0, 0, 5771, 5768, 1, 0, 0, 0, 5771, 5772, 1, 0, 0, 0, 5772, 503, 1, 0, 0, 0, 5773, 5781, 3, 706, 353, 0, 5774, 5778, 7, 84, 0, 0, 5775, 5779, 5, 882, 0, 0, 5776, 5777, 5, 829, 0, 0, 5777, 5779, 5, 529, 0, 0, 5778, 5775, 1, 0, 0, 0, 5778, 5776, 1, 0, 0, 0, 5779, 5780, 1, 0, 0, 0, 5780, 5782, 3, 502, 251, 0, 5781, 5774, 1, 0, 0, 0, 5781, 5782, 1, 0, 0, 0, 5782, 5788, 1, 0, 0, 0, 5783, 5784, 3, 706, 353, 0, 5784, 5785, 5, 188, 0, 0, 5785, 5786, 3, 798, 399, 0, 5786, 5788, 1, 0, 0, 0, 5787, 5773, 1, 0, 0, 0, 5787, 5783, 1, 0, 0, 0, 5788, 505, 1, 0, 0, 0, 5789, 5798, 5, 169, 0, 0, 5790, 5798, 5, 693, 0, 0, 5791, 5792, 5, 331, 0, 0, 5792, 5798, 5, 882, 0, 0, 5793, 5794, 5, 441, 0, 0, 5794, 5798, 5, 882, 0, 0, 5795, 5796, 5, 651, 0, 0, 5796, 5798, 5, 882, 0, 0, 5797, 5789, 1, 0, 0, 0, 5797, 5790, 1, 0, 0, 0, 5797, 5791, 1, 0, 0, 0, 5797, 5793, 1, 0, 0, 0, 5797, 5795, 1, 0, 0, 0, 5798, 507, 1, 0, 0, 0, 5799, 5800, 5, 479, 0, 0, 5800, 5808, 3, 712, 356, 0, 5801, 5802, 5, 482, 0, 0, 5802, 5808, 3, 712, 356, 0, 5803, 5804, 5, 478, 0, 0, 5804, 5808, 3, 712, 356, 0, 5805, 5806, 5, 483, 0, 0, 5806, 5808, 3, 712, 356, 0, 5807, 5799, 1, 0, 0, 0, 5807, 5801, 1, 0, 0, 0, 5807, 5803, 1, 0, 0, 0, 5807, 5805, 1, 0, 0, 0, 5808, 509, 1, 0, 0, 0, 5809, 5810, 5, 529, 0, 0, 5810, 5817, 5, 390, 0, 0, 5811, 5818, 5, 42, 0, 0, 5812, 5818, 5, 500, 0, 0, 5813, 5814, 5, 87, 0, 0, 5814, 5815, 3, 712, 356, 0, 5815, 5816, 5, 698, 0, 0, 5816, 5818, 1, 0, 0, 0, 5817, 5811, 1, 0, 0, 0, 5817, 5812, 1, 0, 0, 0, 5817, 5813, 1, 0, 0, 0, 5817, 5818, 1, 0, 0, 0, 5818, 5848, 1, 0, 0, 0, 5819, 5820, 5, 529, 0, 0, 5820, 5823, 5, 420, 0, 0, 5821, 5824, 5, 42, 0, 0, 5822, 5824, 3, 712, 356, 0, 5823, 5821, 1, 0, 0, 0, 5823, 5822, 1, 0, 0, 0, 5824, 5848, 1, 0, 0, 0, 5825, 5826, 5, 529, 0, 0, 5826, 5827, 5, 581, 0, 0, 5827, 5832, 5, 87, 0, 0, 5828, 5833, 5, 42, 0, 0, 5829, 5830, 3, 712, 356, 0, 5830, 5831, 5, 698, 0, 0, 5831, 5833, 1, 0, 0, 0, 5832, 5828, 1, 0, 0, 0, 5832, 5829, 1, 0, 0, 0, 5833, 5848, 1, 0, 0, 0, 5834, 5835, 5, 529, 0, 0, 5835, 5836, 5, 144, 0, 0, 5836, 5838, 5, 36, 0, 0, 5837, 5839, 7, 85, 0, 0, 5838, 5837, 1, 0, 0, 0, 5838, 5839, 1, 0, 0, 0, 5839, 5848, 1, 0, 0, 0, 5840, 5841, 5, 395, 0, 0, 5841, 5848, 3, 712, 356, 0, 5842, 5845, 5, 530, 0, 0, 5843, 5846, 3, 712, 356, 0, 5844, 5846, 5, 669, 0, 0, 5845, 5843, 1, 0, 0, 0, 5845, 5844, 1, 0, 0, 0, 5846, 5848, 1, 0, 0, 0, 5847, 5809, 1, 0, 0, 0, 5847, 5819, 1, 0, 0, 0, 5847, 5825, 1, 0, 0, 0, 5847, 5834, 1, 0, 0, 0, 5847, 5840, 1, 0, 0, 0, 5847, 5842, 1, 0, 0, 0, 5848, 511, 1, 0, 0, 0, 5849, 5850, 5, 304, 0, 0, 5850, 5851, 7, 86, 0, 0, 5851, 513, 1, 0, 0, 0, 5852, 5855, 5, 423, 0, 0, 5853, 5854, 5, 194, 0, 0, 5854, 5856, 3, 706, 353, 0, 5855, 5853, 1, 0, 0, 0, 5855, 5856, 1, 0, 0, 0, 5856, 5865, 1, 0, 0, 0, 5857, 5861, 5, 20, 0, 0, 5858, 5862, 5, 882, 0, 0, 5859, 5860, 5, 829, 0, 0, 5860, 5862, 5, 529, 0, 0, 5861, 5858, 1, 0, 0, 0, 5861, 5859, 1, 0, 0, 0, 5862, 5866, 1, 0, 0, 0, 5863, 5864, 5, 13, 0, 0, 5864, 5866, 5, 882, 0, 0, 5865, 5857, 1, 0, 0, 0, 5865, 5863, 1, 0, 0, 0, 5866, 515, 1, 0, 0, 0, 5867, 5868, 3, 518, 259, 0, 5868, 5869, 5, 429, 0, 0, 5869, 5870, 5, 555, 0, 0, 5870, 5883, 1, 0, 0, 0, 5871, 5872, 3, 518, 259, 0, 5872, 5873, 5, 401, 0, 0, 5873, 5874, 5, 555, 0, 0, 5874, 5875, 5, 155, 0, 0, 5875, 5876, 5, 330, 0, 0, 5876, 5877, 5, 13, 0, 0, 5877, 5878, 5, 882, 0, 0, 5878, 5883, 1, 0, 0, 0, 5879, 5880, 3, 518, 259, 0, 5880, 5881, 5, 675, 0, 0, 5881, 5883, 1, 0, 0, 0, 5882, 5867, 1, 0, 0, 0, 5882, 5871, 1, 0, 0, 0, 5882, 5879, 1, 0, 0, 0, 5883, 517, 1, 0, 0, 0, 5884, 5885, 7, 87, 0, 0, 5885, 5886, 5, 394, 0, 0, 5886, 519, 1, 0, 0, 0, 5887, 5892, 3, 522, 261, 0, 5888, 5889, 5, 866, 0, 0, 5889, 5890, 3, 660, 330, 0, 5890, 5891, 5, 867, 0, 0, 5891, 5893, 1, 0, 0, 0, 5892, 5888, 1, 0, 0, 0, 5892, 5893, 1, 0, 0, 0, 5893, 521, 1, 0, 0, 0, 5894, 5896, 5, 7, 0, 0, 5895, 5897, 5, 734, 0, 0, 5896, 5895, 1, 0, 0, 0, 5896, 5897, 1, 0, 0, 0, 5897, 5988, 1, 0, 0, 0, 5898, 5900, 5, 8, 0, 0, 5899, 5901, 5, 743, 0, 0, 5900, 5899, 1, 0, 0, 0, 5900, 5901, 1, 0, 0, 0, 5901, 5988, 1, 0, 0, 0, 5902, 5910, 5, 34, 0, 0, 5903, 5904, 5, 660, 0, 0, 5904, 5911, 5, 752, 0, 0, 5905, 5911, 5, 743, 0, 0, 5906, 5911, 5, 684, 0, 0, 5907, 5911, 5, 678, 0, 0, 5908, 5911, 5, 658, 0, 0, 5909, 5911, 5, 582, 0, 0, 5910, 5903, 1, 0, 0, 0, 5910, 5905, 1, 0, 0, 0, 5910, 5906, 1, 0, 0, 0, 5910, 5907, 1, 0, 0, 0, 5910, 5908, 1, 0, 0, 0, 5910, 5909, 1, 0, 0, 0, 5910, 5911, 1, 0, 0, 0, 5911, 5988, 1, 0, 0, 0, 5912, 5988, 5, 44, 0, 0, 5913, 5915, 5, 51, 0, 0, 5914, 5916, 5, 582, 0, 0, 5915, 5914, 1, 0, 0, 0, 5915, 5916, 1, 0, 0, 0, 5916, 5988, 1, 0, 0, 0, 5917, 5988, 5, 385, 0, 0, 5918, 5988, 5, 717, 0, 0, 5919, 5988, 5, 718, 0, 0, 5920, 5921, 5, 73, 0, 0, 5921, 5988, 5, 121, 0, 0, 5922, 5988, 5, 82, 0, 0, 5923, 5988, 5, 86, 0, 0, 5924, 5925, 5, 104, 0, 0, 5925, 5988, 5, 752, 0, 0, 5926, 5988, 5, 735, 0, 0, 5927, 5988, 5, 547, 0, 0, 5928, 5988, 5, 138, 0, 0, 5929, 5988, 5, 736, 0, 0, 5930, 5931, 5, 572, 0, 0, 5931, 5988, 7, 88, 0, 0, 5932, 5988, 5, 154, 0, 0, 5933, 5934, 5, 157, 0, 0, 5934, 5988, 7, 89, 0, 0, 5935, 5988, 5, 749, 0, 0, 5936, 5988, 5, 750, 0, 0, 5937, 5988, 5, 178, 0, 0, 5938, 5988, 5, 185, 0, 0, 5939, 5988, 5, 186, 0, 0, 5940, 5988, 5, 705, 0, 0, 5941, 5988, 5, 706, 0, 0, 5942, 5988, 5, 707, 0, 0, 5943, 5988, 5, 709, 0, 0, 5944, 5988, 5, 710, 0, 0, 5945, 5988, 5, 711, 0, 0, 5946, 5988, 5, 712, 0, 0, 5947, 5988, 5, 714, 0, 0, 5948, 5988, 5, 715, 0, 0, 5949, 5988, 5, 716, 0, 0, 5950, 5988, 5, 719, 0, 0, 5951, 5988, 5, 720, 0, 0, 5952, 5988, 5, 721, 0, 0, 5953, 5988, 5, 722, 0, 0, 5954, 5988, 5, 723, 0, 0, 5955, 5988, 5, 724, 0, 0, 5956, 5988, 5, 725, 0, 0, 5957, 5988, 5, 726, 0, 0, 5958, 5988, 5, 727, 0, 0, 5959, 5988, 5, 728, 0, 0, 5960, 5988, 5, 731, 0, 0, 5961, 5988, 5, 732, 0, 0, 5962, 5988, 5, 733, 0, 0, 5963, 5988, 5, 737, 0, 0, 5964, 5988, 5, 738, 0, 0, 5965, 5988, 5, 740, 0, 0, 5966, 5988, 5, 741, 0, 0, 5967, 5988, 5, 742, 0, 0, 5968, 5988, 5, 745, 0, 0, 5969, 5988, 5, 746, 0, 0, 5970, 5988, 5, 747, 0, 0, 5971, 5988, 5, 160, 0, 0, 5972, 5988, 5, 748, 0, 0, 5973, 5988, 5, 836, 0, 0, 5974, 5988, 5, 751, 0, 0, 5975, 5988, 5, 753, 0, 0, 5976, 5988, 5, 838, 0, 0, 5977, 5988, 5, 754, 0, 0, 5978, 5988, 5, 755, 0, 0, 5979, 5980, 5, 103, 0, 0, 5980, 5981, 5, 68, 0, 0, 5981, 5988, 5, 744, 0, 0, 5982, 5983, 5, 154, 0, 0, 5983, 5984, 5, 88, 0, 0, 5984, 5988, 5, 744, 0, 0, 5985, 5986, 5, 729, 0, 0, 5986, 5988, 5, 730, 0, 0, 5987, 5894, 1, 0, 0, 0, 5987, 5898, 1, 0, 0, 0, 5987, 5902, 1, 0, 0, 0, 5987, 5912, 1, 0, 0, 0, 5987, 5913, 1, 0, 0, 0, 5987, 5917, 1, 0, 0, 0, 5987, 5918, 1, 0, 0, 0, 5987, 5919, 1, 0, 0, 0, 5987, 5920, 1, 0, 0, 0, 5987, 5922, 1, 0, 0, 0, 5987, 5923, 1, 0, 0, 0, 5987, 5924, 1, 0, 0, 0, 5987, 5926, 1, 0, 0, 0, 5987, 5927, 1, 0, 0, 0, 5987, 5928, 1, 0, 0, 0, 5987, 5929, 1, 0, 0, 0, 5987, 5930, 1, 0, 0, 0, 5987, 5932, 1, 0, 0, 0, 5987, 5933, 1, 0, 0, 0, 5987, 5935, 1, 0, 0, 0, 5987, 5936, 1, 0, 0, 0, 5987, 5937, 1, 0, 0, 0, 5987, 5938, 1, 0, 0, 0, 5987, 5939, 1, 0, 0, 0, 5987, 5940, 1, 0, 0, 0, 5987, 5941, 1, 0, 0, 0, 5987, 5942, 1, 0, 0, 0, 5987, 5943, 1, 0, 0, 0, 5987, 5944, 1, 0, 0, 0, 5987, 5945, 1, 0, 0, 0, 5987, 5946, 1, 0, 0, 0, 5987, 5947, 1, 0, 0, 0, 5987, 5948, 1, 0, 0, 0, 5987, 5949, 1, 0, 0, 0, 5987, 5950, 1, 0, 0, 0, 5987, 5951, 1, 0, 0, 0, 5987, 5952, 1, 0, 0, 0, 5987, 5953, 1, 0, 0, 0, 5987, 5954, 1, 0, 0, 0, 5987, 5955, 1, 0, 0, 0, 5987, 5956, 1, 0, 0, 0, 5987, 5957, 1, 0, 0, 0, 5987, 5958, 1, 0, 0, 0, 5987, 5959, 1, 0, 0, 0, 5987, 5960, 1, 0, 0, 0, 5987, 5961, 1, 0, 0, 0, 5987, 5962, 1, 0, 0, 0, 5987, 5963, 1, 0, 0, 0, 5987, 5964, 1, 0, 0, 0, 5987, 5965, 1, 0, 0, 0, 5987, 5966, 1, 0, 0, 0, 5987, 5967, 1, 0, 0, 0, 5987, 5968, 1, 0, 0, 0, 5987, 5969, 1, 0, 0, 0, 5987, 5970, 1, 0, 0, 0, 5987, 5971, 1, 0, 0, 0, 5987, 5972, 1, 0, 0, 0, 5987, 5973, 1, 0, 0, 0, 5987, 5974, 1, 0, 0, 0, 5987, 5975, 1, 0, 0, 0, 5987, 5976, 1, 0, 0, 0, 5987, 5977, 1, 0, 0, 0, 5987, 5978, 1, 0, 0, 0, 5987, 5979, 1, 0, 0, 0, 5987, 5982, 1, 0, 0, 0, 5987, 5985, 1, 0, 0, 0, 5988, 523, 1, 0, 0, 0, 5989, 6006, 5, 850, 0, 0, 5990, 5991, 5, 850, 0, 0, 5991, 5992, 5, 865, 0, 0, 5992, 6006, 5, 850, 0, 0, 5993, 5994, 3, 706, 353, 0, 5994, 5995, 5, 865, 0, 0, 5995, 5996, 5, 850, 0, 0, 5996, 6006, 1, 0, 0, 0, 5997, 5998, 3, 706, 353, 0, 5998, 5999, 5, 865, 0, 0, 5999, 6000, 3, 706, 353, 0, 6000, 6006, 1, 0, 0, 0, 6001, 6002, 3, 706, 353, 0, 6002, 6003, 3, 710, 355, 0, 6003, 6006, 1, 0, 0, 0, 6004, 6006, 3, 706, 353, 0, 6005, 5989, 1, 0, 0, 0, 6005, 5990, 1, 0, 0, 0, 6005, 5993, 1, 0, 0, 0, 6005, 5997, 1, 0, 0, 0, 6005, 6001, 1, 0, 0, 0, 6005, 6004, 1, 0, 0, 0, 6006, 525, 1, 0, 0, 0, 6007, 6008, 3, 684, 342, 0, 6008, 6009, 5, 176, 0, 0, 6009, 6010, 3, 684, 342, 0, 6010, 527, 1, 0, 0, 0, 6011, 6013, 5, 10, 0, 0, 6012, 6014, 3, 538, 269, 0, 6013, 6012, 1, 0, 0, 0, 6013, 6014, 1, 0, 0, 0, 6014, 6015, 1, 0, 0, 0, 6015, 6016, 5, 173, 0, 0, 6016, 6060, 3, 650, 325, 0, 6017, 6019, 5, 10, 0, 0, 6018, 6020, 3, 538, 269, 0, 6019, 6018, 1, 0, 0, 0, 6019, 6020, 1, 0, 0, 0, 6020, 6021, 1, 0, 0, 0, 6021, 6022, 5, 173, 0, 0, 6022, 6023, 3, 652, 326, 0, 6023, 6024, 5, 185, 0, 0, 6024, 6025, 5, 77, 0, 0, 6025, 6026, 5, 119, 0, 0, 6026, 6031, 3, 660, 330, 0, 6027, 6028, 5, 194, 0, 0, 6028, 6029, 3, 712, 356, 0, 6029, 6030, 5, 19, 0, 0, 6030, 6032, 1, 0, 0, 0, 6031, 6027, 1, 0, 0, 0, 6031, 6032, 1, 0, 0, 0, 6032, 6060, 1, 0, 0, 0, 6033, 6035, 5, 10, 0, 0, 6034, 6036, 3, 538, 269, 0, 6035, 6034, 1, 0, 0, 0, 6035, 6036, 1, 0, 0, 0, 6036, 6037, 1, 0, 0, 0, 6037, 6038, 5, 173, 0, 0, 6038, 6039, 3, 652, 326, 0, 6039, 6040, 5, 185, 0, 0, 6040, 6041, 5, 77, 0, 0, 6041, 6042, 5, 119, 0, 0, 6042, 6046, 3, 662, 331, 0, 6043, 6044, 5, 188, 0, 0, 6044, 6045, 5, 360, 0, 0, 6045, 6047, 5, 882, 0, 0, 6046, 6043, 1, 0, 0, 0, 6046, 6047, 1, 0, 0, 0, 6047, 6060, 1, 0, 0, 0, 6048, 6050, 5, 10, 0, 0, 6049, 6051, 3, 538, 269, 0, 6050, 6049, 1, 0, 0, 0, 6050, 6051, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6053, 5, 173, 0, 0, 6053, 6054, 3, 652, 326, 0, 6054, 6055, 5, 51, 0, 0, 6055, 6056, 5, 77, 0, 0, 6056, 6057, 5, 119, 0, 0, 6057, 6058, 3, 660, 330, 0, 6058, 6060, 1, 0, 0, 0, 6059, 6011, 1, 0, 0, 0, 6059, 6017, 1, 0, 0, 0, 6059, 6033, 1, 0, 0, 0, 6059, 6048, 1, 0, 0, 0, 6060, 529, 1, 0, 0, 0, 6061, 6062, 5, 27, 0, 0, 6062, 6063, 5, 173, 0, 0, 6063, 6067, 3, 650, 325, 0, 6064, 6066, 3, 540, 270, 0, 6065, 6064, 1, 0, 0, 0, 6066, 6069, 1, 0, 0, 0, 6067, 6065, 1, 0, 0, 0, 6067, 6068, 1, 0, 0, 0, 6068, 531, 1, 0, 0, 0, 6069, 6067, 1, 0, 0, 0, 6070, 6071, 5, 329, 0, 0, 6071, 6072, 5, 173, 0, 0, 6072, 6074, 3, 650, 325, 0, 6073, 6075, 7, 90, 0, 0, 6074, 6073, 1, 0, 0, 0, 6074, 6075, 1, 0, 0, 0, 6075, 533, 1, 0, 0, 0, 6076, 6078, 5, 120, 0, 0, 6077, 6079, 3, 538, 269, 0, 6078, 6077, 1, 0, 0, 0, 6078, 6079, 1, 0, 0, 0, 6079, 6080, 1, 0, 0, 0, 6080, 6081, 7, 61, 0, 0, 6081, 6082, 3, 650, 325, 0, 6082, 535, 1, 0, 0, 0, 6083, 6085, 5, 562, 0, 0, 6084, 6086, 3, 538, 269, 0, 6085, 6084, 1, 0, 0, 0, 6085, 6086, 1, 0, 0, 0, 6086, 6087, 1, 0, 0, 0, 6087, 6088, 5, 173, 0, 0, 6088, 6090, 3, 650, 325, 0, 6089, 6091, 5, 549, 0, 0, 6090, 6089, 1, 0, 0, 0, 6090, 6091, 1, 0, 0, 0, 6091, 6093, 1, 0, 0, 0, 6092, 6094, 5, 392, 0, 0, 6093, 6092, 1, 0, 0, 0, 6093, 6094, 1, 0, 0, 0, 6094, 6096, 1, 0, 0, 0, 6095, 6097, 5, 679, 0, 0, 6096, 6095, 1, 0, 0, 0, 6096, 6097, 1, 0, 0, 0, 6097, 537, 1, 0, 0, 0, 6098, 6099, 7, 91, 0, 0, 6099, 539, 1, 0, 0, 0, 6100, 6101, 5, 65, 0, 0, 6101, 6108, 5, 677, 0, 0, 6102, 6108, 5, 549, 0, 0, 6103, 6108, 5, 396, 0, 0, 6104, 6108, 5, 484, 0, 0, 6105, 6108, 5, 392, 0, 0, 6106, 6108, 5, 327, 0, 0, 6107, 6100, 1, 0, 0, 0, 6107, 6102, 1, 0, 0, 0, 6107, 6103, 1, 0, 0, 0, 6107, 6104, 1, 0, 0, 0, 6107, 6105, 1, 0, 0, 0, 6107, 6106, 1, 0, 0, 0, 6108, 541, 1, 0, 0, 0, 6109, 6110, 5, 432, 0, 0, 6110, 6111, 5, 344, 0, 0, 6111, 6116, 3, 706, 353, 0, 6112, 6113, 5, 868, 0, 0, 6113, 6115, 3, 706, 353, 0, 6114, 6112, 1, 0, 0, 0, 6115, 6118, 1, 0, 0, 0, 6116, 6114, 1, 0, 0, 0, 6116, 6117, 1, 0, 0, 0, 6117, 6128, 1, 0, 0, 0, 6118, 6116, 1, 0, 0, 0, 6119, 6120, 5, 155, 0, 0, 6120, 6125, 3, 544, 272, 0, 6121, 6122, 5, 868, 0, 0, 6122, 6124, 3, 544, 272, 0, 6123, 6121, 1, 0, 0, 0, 6124, 6127, 1, 0, 0, 0, 6125, 6123, 1, 0, 0, 0, 6125, 6126, 1, 0, 0, 0, 6126, 6129, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6128, 6119, 1, 0, 0, 0, 6128, 6129, 1, 0, 0, 0, 6129, 543, 1, 0, 0, 0, 6130, 6131, 7, 92, 0, 0, 6131, 6132, 3, 702, 351, 0, 6132, 6133, 5, 857, 0, 0, 6133, 6134, 3, 804, 402, 0, 6134, 545, 1, 0, 0, 0, 6135, 6136, 5, 673, 0, 0, 6136, 6137, 5, 344, 0, 0, 6137, 6142, 3, 706, 353, 0, 6138, 6139, 5, 868, 0, 0, 6139, 6141, 3, 706, 353, 0, 6140, 6138, 1, 0, 0, 0, 6141, 6144, 1, 0, 0, 0, 6142, 6140, 1, 0, 0, 0, 6142, 6143, 1, 0, 0, 0, 6143, 547, 1, 0, 0, 0, 6144, 6142, 1, 0, 0, 0, 6145, 6146, 5, 432, 0, 0, 6146, 6147, 5, 534, 0, 0, 6147, 6148, 3, 706, 353, 0, 6148, 6149, 5, 603, 0, 0, 6149, 6150, 5, 882, 0, 0, 6150, 549, 1, 0, 0, 0, 6151, 6152, 5, 673, 0, 0, 6152, 6153, 5, 534, 0, 0, 6153, 6154, 3, 706, 353, 0, 6154, 551, 1, 0, 0, 0, 6155, 6156, 5, 713, 0, 0, 6156, 6157, 5, 450, 0, 0, 6157, 6158, 5, 360, 0, 0, 6158, 6160, 5, 367, 0, 0, 6159, 6161, 5, 857, 0, 0, 6160, 6159, 1, 0, 0, 0, 6160, 6161, 1, 0, 0, 0, 6161, 6162, 1, 0, 0, 0, 6162, 6186, 5, 882, 0, 0, 6163, 6164, 5, 713, 0, 0, 6164, 6165, 5, 433, 0, 0, 6165, 6166, 5, 68, 0, 0, 6166, 6167, 3, 676, 338, 0, 6167, 6168, 5, 423, 0, 0, 6168, 6169, 5, 20, 0, 0, 6169, 6176, 5, 882, 0, 0, 6170, 6171, 5, 360, 0, 0, 6171, 6173, 5, 367, 0, 0, 6172, 6174, 5, 857, 0, 0, 6173, 6172, 1, 0, 0, 0, 6173, 6174, 1, 0, 0, 0, 6174, 6175, 1, 0, 0, 0, 6175, 6177, 5, 882, 0, 0, 6176, 6170, 1, 0, 0, 0, 6176, 6177, 1, 0, 0, 0, 6177, 6183, 1, 0, 0, 0, 6178, 6180, 5, 144, 0, 0, 6179, 6181, 5, 502, 0, 0, 6180, 6179, 1, 0, 0, 0, 6180, 6181, 1, 0, 0, 0, 6181, 6182, 1, 0, 0, 0, 6182, 6184, 5, 169, 0, 0, 6183, 6178, 1, 0, 0, 0, 6183, 6184, 1, 0, 0, 0, 6184, 6186, 1, 0, 0, 0, 6185, 6155, 1, 0, 0, 0, 6185, 6163, 1, 0, 0, 0, 6186, 553, 1, 0, 0, 0, 6187, 6188, 5, 155, 0, 0, 6188, 6189, 3, 558, 279, 0, 6189, 6192, 7, 93, 0, 0, 6190, 6193, 3, 804, 402, 0, 6191, 6193, 5, 119, 0, 0, 6192, 6190, 1, 0, 0, 0, 6192, 6191, 1, 0, 0, 0, 6193, 6203, 1, 0, 0, 0, 6194, 6195, 5, 868, 0, 0, 6195, 6196, 3, 558, 279, 0, 6196, 6199, 7, 93, 0, 0, 6197, 6200, 3, 804, 402, 0, 6198, 6200, 5, 119, 0, 0, 6199, 6197, 1, 0, 0, 0, 6199, 6198, 1, 0, 0, 0, 6200, 6202, 1, 0, 0, 0, 6201, 6194, 1, 0, 0, 0, 6202, 6205, 1, 0, 0, 0, 6203, 6201, 1, 0, 0, 0, 6203, 6204, 1, 0, 0, 0, 6204, 6240, 1, 0, 0, 0, 6205, 6203, 1, 0, 0, 0, 6206, 6207, 5, 155, 0, 0, 6207, 6210, 3, 58, 29, 0, 6208, 6211, 3, 688, 344, 0, 6209, 6211, 5, 42, 0, 0, 6210, 6208, 1, 0, 0, 0, 6210, 6209, 1, 0, 0, 0, 6211, 6240, 1, 0, 0, 0, 6212, 6213, 5, 155, 0, 0, 6213, 6220, 5, 497, 0, 0, 6214, 6217, 3, 688, 344, 0, 6215, 6216, 5, 28, 0, 0, 6216, 6218, 3, 690, 345, 0, 6217, 6215, 1, 0, 0, 0, 6217, 6218, 1, 0, 0, 0, 6218, 6221, 1, 0, 0, 0, 6219, 6221, 5, 42, 0, 0, 6220, 6214, 1, 0, 0, 0, 6220, 6219, 1, 0, 0, 0, 6221, 6240, 1, 0, 0, 0, 6222, 6240, 3, 490, 245, 0, 6223, 6240, 3, 342, 171, 0, 6224, 6240, 3, 340, 170, 0, 6225, 6226, 5, 155, 0, 0, 6226, 6227, 3, 702, 351, 0, 6227, 6228, 7, 93, 0, 0, 6228, 6236, 3, 804, 402, 0, 6229, 6230, 5, 868, 0, 0, 6230, 6231, 3, 702, 351, 0, 6231, 6232, 7, 93, 0, 0, 6232, 6233, 3, 804, 402, 0, 6233, 6235, 1, 0, 0, 0, 6234, 6229, 1, 0, 0, 0, 6235, 6238, 1, 0, 0, 0, 6236, 6234, 1, 0, 0, 0, 6236, 6237, 1, 0, 0, 0, 6237, 6240, 1, 0, 0, 0, 6238, 6236, 1, 0, 0, 0, 6239, 6187, 1, 0, 0, 0, 6239, 6206, 1, 0, 0, 0, 6239, 6212, 1, 0, 0, 0, 6239, 6222, 1, 0, 0, 0, 6239, 6223, 1, 0, 0, 0, 6239, 6224, 1, 0, 0, 0, 6239, 6225, 1, 0, 0, 0, 6240, 555, 1, 0, 0, 0, 6241, 6242, 5, 157, 0, 0, 6242, 6243, 7, 63, 0, 0, 6243, 6426, 5, 452, 0, 0, 6244, 6245, 5, 157, 0, 0, 6245, 6246, 7, 94, 0, 0, 6246, 6249, 5, 386, 0, 0, 6247, 6248, 5, 80, 0, 0, 6248, 6250, 5, 882, 0, 0, 6249, 6247, 1, 0, 0, 0, 6249, 6250, 1, 0, 0, 0, 6250, 6253, 1, 0, 0, 0, 6251, 6252, 5, 68, 0, 0, 6252, 6254, 3, 712, 356, 0, 6253, 6251, 1, 0, 0, 0, 6253, 6254, 1, 0, 0, 0, 6254, 6262, 1, 0, 0, 0, 6255, 6259, 5, 100, 0, 0, 6256, 6257, 3, 712, 356, 0, 6257, 6258, 5, 868, 0, 0, 6258, 6260, 1, 0, 0, 0, 6259, 6256, 1, 0, 0, 0, 6259, 6260, 1, 0, 0, 0, 6260, 6261, 1, 0, 0, 0, 6261, 6263, 3, 712, 356, 0, 6262, 6255, 1, 0, 0, 0, 6262, 6263, 1, 0, 0, 0, 6263, 6265, 1, 0, 0, 0, 6264, 6266, 3, 390, 195, 0, 6265, 6264, 1, 0, 0, 0, 6265, 6266, 1, 0, 0, 0, 6266, 6426, 1, 0, 0, 0, 6267, 6268, 5, 157, 0, 0, 6268, 6270, 3, 560, 280, 0, 6269, 6271, 3, 562, 281, 0, 6270, 6269, 1, 0, 0, 0, 6270, 6271, 1, 0, 0, 0, 6271, 6426, 1, 0, 0, 0, 6272, 6274, 5, 157, 0, 0, 6273, 6275, 5, 392, 0, 0, 6274, 6273, 1, 0, 0, 0, 6274, 6275, 1, 0, 0, 0, 6275, 6277, 1, 0, 0, 0, 6276, 6278, 5, 408, 0, 0, 6277, 6276, 1, 0, 0, 0, 6277, 6278, 1, 0, 0, 0, 6278, 6279, 1, 0, 0, 0, 6279, 6280, 7, 47, 0, 0, 6280, 6281, 7, 95, 0, 0, 6281, 6284, 3, 652, 326, 0, 6282, 6283, 7, 95, 0, 0, 6283, 6285, 3, 628, 314, 0, 6284, 6282, 1, 0, 0, 0, 6284, 6285, 1, 0, 0, 0, 6285, 6287, 1, 0, 0, 0, 6286, 6288, 3, 562, 281, 0, 6287, 6286, 1, 0, 0, 0, 6287, 6288, 1, 0, 0, 0, 6288, 6426, 1, 0, 0, 0, 6289, 6290, 5, 157, 0, 0, 6290, 6291, 5, 34, 0, 0, 6291, 6293, 7, 0, 0, 0, 6292, 6294, 3, 760, 380, 0, 6293, 6292, 1, 0, 0, 0, 6293, 6294, 1, 0, 0, 0, 6294, 6295, 1, 0, 0, 0, 6295, 6426, 3, 628, 314, 0, 6296, 6297, 5, 157, 0, 0, 6297, 6298, 5, 34, 0, 0, 6298, 6299, 7, 96, 0, 0, 6299, 6426, 3, 702, 351, 0, 6300, 6301, 5, 157, 0, 0, 6301, 6302, 5, 34, 0, 0, 6302, 6303, 5, 409, 0, 0, 6303, 6426, 3, 632, 316, 0, 6304, 6305, 5, 157, 0, 0, 6305, 6306, 5, 34, 0, 0, 6306, 6307, 5, 684, 0, 0, 6307, 6426, 3, 636, 318, 0, 6308, 6309, 5, 157, 0, 0, 6309, 6310, 5, 34, 0, 0, 6310, 6311, 5, 173, 0, 0, 6311, 6426, 3, 652, 326, 0, 6312, 6313, 5, 157, 0, 0, 6313, 6314, 5, 34, 0, 0, 6314, 6315, 5, 678, 0, 0, 6315, 6426, 3, 684, 342, 0, 6316, 6317, 5, 157, 0, 0, 6317, 6318, 5, 380, 0, 0, 6318, 6319, 3, 692, 346, 0, 6319, 6320, 7, 97, 0, 0, 6320, 6426, 1, 0, 0, 0, 6321, 6322, 5, 157, 0, 0, 6322, 6426, 3, 564, 282, 0, 6323, 6324, 5, 157, 0, 0, 6324, 6332, 7, 98, 0, 0, 6325, 6329, 5, 100, 0, 0, 6326, 6327, 3, 712, 356, 0, 6327, 6328, 5, 868, 0, 0, 6328, 6330, 1, 0, 0, 0, 6329, 6326, 1, 0, 0, 0, 6329, 6330, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6333, 3, 712, 356, 0, 6332, 6325, 1, 0, 0, 0, 6332, 6333, 1, 0, 0, 0, 6333, 6426, 1, 0, 0, 0, 6334, 6335, 5, 157, 0, 0, 6335, 6336, 5, 262, 0, 0, 6336, 6337, 5, 866, 0, 0, 6337, 6338, 5, 850, 0, 0, 6338, 6339, 5, 867, 0, 0, 6339, 6426, 7, 98, 0, 0, 6340, 6341, 5, 157, 0, 0, 6341, 6344, 3, 566, 283, 0, 6342, 6343, 7, 95, 0, 0, 6343, 6345, 3, 628, 314, 0, 6344, 6342, 1, 0, 0, 0, 6344, 6345, 1, 0, 0, 0, 6345, 6347, 1, 0, 0, 0, 6346, 6348, 3, 562, 281, 0, 6347, 6346, 1, 0, 0, 0, 6347, 6348, 1, 0, 0, 0, 6348, 6426, 1, 0, 0, 0, 6349, 6350, 5, 157, 0, 0, 6350, 6351, 5, 132, 0, 0, 6351, 6352, 5, 336, 0, 0, 6352, 6426, 3, 702, 351, 0, 6353, 6354, 5, 157, 0, 0, 6354, 6355, 5, 409, 0, 0, 6355, 6356, 5, 336, 0, 0, 6356, 6426, 3, 632, 316, 0, 6357, 6358, 5, 157, 0, 0, 6358, 6365, 5, 414, 0, 0, 6359, 6360, 5, 65, 0, 0, 6360, 6363, 3, 656, 328, 0, 6361, 6362, 5, 188, 0, 0, 6362, 6364, 3, 654, 327, 0, 6363, 6361, 1, 0, 0, 0, 6363, 6364, 1, 0, 0, 0, 6364, 6366, 1, 0, 0, 0, 6365, 6359, 1, 0, 0, 0, 6365, 6366, 1, 0, 0, 0, 6366, 6426, 1, 0, 0, 0, 6367, 6369, 5, 157, 0, 0, 6368, 6370, 5, 392, 0, 0, 6369, 6368, 1, 0, 0, 0, 6369, 6370, 1, 0, 0, 0, 6370, 6371, 1, 0, 0, 0, 6371, 6372, 7, 99, 0, 0, 6372, 6373, 7, 95, 0, 0, 6373, 6376, 3, 652, 326, 0, 6374, 6375, 7, 95, 0, 0, 6375, 6377, 3, 628, 314, 0, 6376, 6374, 1, 0, 0, 0, 6376, 6377, 1, 0, 0, 0, 6377, 6380, 1, 0, 0, 0, 6378, 6379, 5, 192, 0, 0, 6379, 6381, 3, 804, 402, 0, 6380, 6378, 1, 0, 0, 0, 6380, 6381, 1, 0, 0, 0, 6381, 6426, 1, 0, 0, 0, 6382, 6383, 5, 157, 0, 0, 6383, 6384, 5, 516, 0, 0, 6384, 6387, 5, 752, 0, 0, 6385, 6386, 7, 95, 0, 0, 6386, 6388, 3, 628, 314, 0, 6387, 6385, 1, 0, 0, 0, 6387, 6388, 1, 0, 0, 0, 6388, 6390, 1, 0, 0, 0, 6389, 6391, 3, 562, 281, 0, 6390, 6389, 1, 0, 0, 0, 6390, 6391, 1, 0, 0, 0, 6391, 6426, 1, 0, 0, 0, 6392, 6393, 5, 157, 0, 0, 6393, 6402, 5, 545, 0, 0, 6394, 6399, 3, 568, 284, 0, 6395, 6396, 5, 868, 0, 0, 6396, 6398, 3, 568, 284, 0, 6397, 6395, 1, 0, 0, 0, 6398, 6401, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6399, 6400, 1, 0, 0, 0, 6400, 6403, 1, 0, 0, 0, 6401, 6399, 1, 0, 0, 0, 6402, 6394, 1, 0, 0, 0, 6402, 6403, 1, 0, 0, 0, 6403, 6407, 1, 0, 0, 0, 6404, 6405, 5, 65, 0, 0, 6405, 6406, 5, 548, 0, 0, 6406, 6408, 3, 712, 356, 0, 6407, 6404, 1, 0, 0, 0, 6407, 6408, 1, 0, 0, 0, 6408, 6415, 1, 0, 0, 0, 6409, 6410, 5, 100, 0, 0, 6410, 6413, 3, 712, 356, 0, 6411, 6412, 5, 509, 0, 0, 6412, 6414, 3, 712, 356, 0, 6413, 6411, 1, 0, 0, 0, 6413, 6414, 1, 0, 0, 0, 6414, 6416, 1, 0, 0, 0, 6415, 6409, 1, 0, 0, 0, 6415, 6416, 1, 0, 0, 0, 6416, 6426, 1, 0, 0, 0, 6417, 6418, 5, 157, 0, 0, 6418, 6419, 7, 64, 0, 0, 6419, 6421, 5, 645, 0, 0, 6420, 6422, 3, 390, 195, 0, 6421, 6420, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 6426, 1, 0, 0, 0, 6423, 6424, 5, 157, 0, 0, 6424, 6426, 5, 564, 0, 0, 6425, 6241, 1, 0, 0, 0, 6425, 6244, 1, 0, 0, 0, 6425, 6267, 1, 0, 0, 0, 6425, 6272, 1, 0, 0, 0, 6425, 6289, 1, 0, 0, 0, 6425, 6296, 1, 0, 0, 0, 6425, 6300, 1, 0, 0, 0, 6425, 6304, 1, 0, 0, 0, 6425, 6308, 1, 0, 0, 0, 6425, 6312, 1, 0, 0, 0, 6425, 6316, 1, 0, 0, 0, 6425, 6321, 1, 0, 0, 0, 6425, 6323, 1, 0, 0, 0, 6425, 6334, 1, 0, 0, 0, 6425, 6340, 1, 0, 0, 0, 6425, 6349, 1, 0, 0, 0, 6425, 6353, 1, 0, 0, 0, 6425, 6357, 1, 0, 0, 0, 6425, 6367, 1, 0, 0, 0, 6425, 6382, 1, 0, 0, 0, 6425, 6392, 1, 0, 0, 0, 6425, 6417, 1, 0, 0, 0, 6425, 6423, 1, 0, 0, 0, 6426, 557, 1, 0, 0, 0, 6427, 6438, 5, 892, 0, 0, 6428, 6438, 5, 893, 0, 0, 6429, 6430, 5, 870, 0, 0, 6430, 6432, 5, 870, 0, 0, 6431, 6429, 1, 0, 0, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6435, 7, 100, 0, 0, 6434, 6431, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 6438, 3, 706, 353, 0, 6437, 6427, 1, 0, 0, 0, 6437, 6428, 1, 0, 0, 0, 6437, 6434, 1, 0, 0, 0, 6438, 559, 1, 0, 0, 0, 6439, 6440, 5, 26, 0, 0, 6440, 6454, 5, 155, 0, 0, 6441, 6454, 5, 823, 0, 0, 6442, 6454, 5, 824, 0, 0, 6443, 6454, 5, 40, 0, 0, 6444, 6454, 5, 153, 0, 0, 6445, 6446, 5, 409, 0, 0, 6446, 6454, 5, 645, 0, 0, 6447, 6448, 5, 132, 0, 0, 6448, 6454, 5, 645, 0, 0, 6449, 6451, 7, 62, 0, 0, 6450, 6449, 1, 0, 0, 0, 6450, 6451, 1, 0, 0, 0, 6451, 6452, 1, 0, 0, 0, 6452, 6454, 7, 101, 0, 0, 6453, 6439, 1, 0, 0, 0, 6453, 6441, 1, 0, 0, 0, 6453, 6442, 1, 0, 0, 0, 6453, 6443, 1, 0, 0, 0, 6453, 6444, 1, 0, 0, 0, 6453, 6445, 1, 0, 0, 0, 6453, 6447, 1, 0, 0, 0, 6453, 6450, 1, 0, 0, 0, 6454, 561, 1, 0, 0, 0, 6455, 6456, 5, 99, 0, 0, 6456, 6460, 5, 882, 0, 0, 6457, 6458, 5, 192, 0, 0, 6458, 6460, 3, 804, 402, 0, 6459, 6455, 1, 0, 0, 0, 6459, 6457, 1, 0, 0, 0, 6460, 563, 1, 0, 0, 0, 6461, 6463, 5, 647, 0, 0, 6462, 6461, 1, 0, 0, 0, 6462, 6463, 1, 0, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6479, 5, 381, 0, 0, 6465, 6466, 5, 453, 0, 0, 6466, 6479, 5, 645, 0, 0, 6467, 6479, 5, 536, 0, 0, 6468, 6479, 5, 734, 0, 0, 6469, 6471, 5, 408, 0, 0, 6470, 6469, 1, 0, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6472, 1, 0, 0, 0, 6472, 6479, 5, 544, 0, 0, 6473, 6479, 5, 546, 0, 0, 6474, 6475, 5, 598, 0, 0, 6475, 6479, 5, 422, 0, 0, 6476, 6479, 5, 312, 0, 0, 6477, 6479, 5, 356, 0, 0, 6478, 6462, 1, 0, 0, 0, 6478, 6465, 1, 0, 0, 0, 6478, 6467, 1, 0, 0, 0, 6478, 6468, 1, 0, 0, 0, 6478, 6470, 1, 0, 0, 0, 6478, 6473, 1, 0, 0, 0, 6478, 6474, 1, 0, 0, 0, 6478, 6476, 1, 0, 0, 0, 6478, 6477, 1, 0, 0, 0, 6479, 565, 1, 0, 0, 0, 6480, 6492, 5, 386, 0, 0, 6481, 6482, 5, 173, 0, 0, 6482, 6492, 5, 645, 0, 0, 6483, 6485, 5, 392, 0, 0, 6484, 6483, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6487, 1, 0, 0, 0, 6486, 6488, 5, 408, 0, 0, 6487, 6486, 1, 0, 0, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6489, 1, 0, 0, 0, 6489, 6492, 5, 752, 0, 0, 6490, 6492, 5, 667, 0, 0, 6491, 6480, 1, 0, 0, 0, 6491, 6481, 1, 0, 0, 0, 6491, 6484, 1, 0, 0, 0, 6491, 6490, 1, 0, 0, 0, 6492, 567, 1, 0, 0, 0, 6493, 6506, 5, 7, 0, 0, 6494, 6495, 5, 320, 0, 0, 6495, 6506, 5, 437, 0, 0, 6496, 6497, 5, 355, 0, 0, 6497, 6506, 5, 656, 0, 0, 6498, 6506, 5, 358, 0, 0, 6499, 6506, 5, 439, 0, 0, 6500, 6506, 5, 802, 0, 0, 6501, 6502, 5, 521, 0, 0, 6502, 6506, 5, 397, 0, 0, 6503, 6506, 5, 605, 0, 0, 6504, 6506, 5, 655, 0, 0, 6505, 6493, 1, 0, 0, 0, 6505, 6494, 1, 0, 0, 0, 6505, 6496, 1, 0, 0, 0, 6505, 6498, 1, 0, 0, 0, 6505, 6499, 1, 0, 0, 0, 6505, 6500, 1, 0, 0, 0, 6505, 6501, 1, 0, 0, 0, 6505, 6503, 1, 0, 0, 0, 6505, 6504, 1, 0, 0, 0, 6506, 569, 1, 0, 0, 0, 6507, 6508, 5, 318, 0, 0, 6508, 6509, 5, 882, 0, 0, 6509, 571, 1, 0, 0, 0, 6510, 6511, 5, 324, 0, 0, 6511, 6529, 5, 82, 0, 0, 6512, 6517, 3, 592, 296, 0, 6513, 6514, 5, 868, 0, 0, 6514, 6516, 3, 592, 296, 0, 6515, 6513, 1, 0, 0, 0, 6516, 6519, 1, 0, 0, 0, 6517, 6515, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6530, 1, 0, 0, 0, 6519, 6517, 1, 0, 0, 0, 6520, 6521, 3, 652, 326, 0, 6521, 6522, 5, 130, 0, 0, 6522, 6525, 5, 866, 0, 0, 6523, 6526, 3, 670, 335, 0, 6524, 6526, 5, 7, 0, 0, 6525, 6523, 1, 0, 0, 0, 6525, 6524, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6528, 5, 867, 0, 0, 6528, 6530, 1, 0, 0, 0, 6529, 6512, 1, 0, 0, 0, 6529, 6520, 1, 0, 0, 0, 6530, 6531, 1, 0, 0, 0, 6531, 6532, 5, 80, 0, 0, 6532, 6533, 3, 628, 314, 0, 6533, 573, 1, 0, 0, 0, 6534, 6536, 5, 404, 0, 0, 6535, 6537, 3, 538, 269, 0, 6536, 6535, 1, 0, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6538, 1, 0, 0, 0, 6538, 6543, 3, 594, 297, 0, 6539, 6540, 5, 868, 0, 0, 6540, 6542, 3, 594, 297, 0, 6541, 6539, 1, 0, 0, 0, 6542, 6545, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6543, 6544, 1, 0, 0, 0, 6544, 575, 1, 0, 0, 0, 6545, 6543, 1, 0, 0, 0, 6546, 6548, 5, 94, 0, 0, 6547, 6549, 7, 102, 0, 0, 6548, 6547, 1, 0, 0, 0, 6548, 6549, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 6551, 3, 804, 402, 0, 6551, 577, 1, 0, 0, 0, 6552, 6553, 5, 103, 0, 0, 6553, 6554, 5, 82, 0, 0, 6554, 6555, 5, 88, 0, 0, 6555, 6556, 5, 324, 0, 0, 6556, 6561, 3, 598, 299, 0, 6557, 6558, 5, 868, 0, 0, 6558, 6560, 3, 598, 299, 0, 6559, 6557, 1, 0, 0, 0, 6560, 6563, 1, 0, 0, 0, 6561, 6559, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 579, 1, 0, 0, 0, 6563, 6561, 1, 0, 0, 0, 6564, 6565, 5, 575, 0, 0, 6565, 6570, 3, 582, 291, 0, 6566, 6567, 5, 868, 0, 0, 6567, 6569, 3, 582, 291, 0, 6568, 6566, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 581, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6573, 6579, 5, 453, 0, 0, 6574, 6579, 5, 563, 0, 0, 6575, 6576, 5, 548, 0, 0, 6576, 6579, 5, 324, 0, 0, 6577, 6579, 5, 598, 0, 0, 6578, 6573, 1, 0, 0, 0, 6578, 6574, 1, 0, 0, 0, 6578, 6575, 1, 0, 0, 0, 6578, 6577, 1, 0, 0, 0, 6579, 583, 1, 0, 0, 0, 6580, 6581, 5, 575, 0, 0, 6581, 6586, 5, 531, 0, 0, 6582, 6584, 3, 758, 379, 0, 6583, 6582, 1, 0, 0, 0, 6583, 6584, 1, 0, 0, 0, 6584, 6585, 1, 0, 0, 0, 6585, 6587, 3, 706, 353, 0, 6586, 6583, 1, 0, 0, 0, 6586, 6587, 1, 0, 0, 0, 6587, 585, 1, 0, 0, 0, 6588, 6589, 5, 575, 0, 0, 6589, 6591, 7, 64, 0, 0, 6590, 6592, 5, 7, 0, 0, 6591, 6590, 1, 0, 0, 0, 6591, 6592, 1, 0, 0, 0, 6592, 6594, 1, 0, 0, 0, 6593, 6595, 3, 390, 195, 0, 6594, 6593, 1, 0, 0, 0, 6594, 6595, 1, 0, 0, 0, 6595, 587, 1, 0, 0, 0, 6596, 6597, 5, 576, 0, 0, 6597, 589, 1, 0, 0, 0, 6598, 6599, 5, 749, 0, 0, 6599, 591, 1, 0, 0, 0, 6600, 6606, 3, 652, 326, 0, 6601, 6602, 7, 19, 0, 0, 6602, 6603, 5, 866, 0, 0, 6603, 6604, 3, 640, 320, 0, 6604, 6605, 5, 867, 0, 0, 6605, 6607, 1, 0, 0, 0, 6606, 6601, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 593, 1, 0, 0, 0, 6608, 6627, 5, 366, 0, 0, 6609, 6627, 5, 422, 0, 0, 6610, 6612, 7, 103, 0, 0, 6611, 6610, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6613, 1, 0, 0, 0, 6613, 6627, 5, 452, 0, 0, 6614, 6627, 5, 517, 0, 0, 6615, 6627, 5, 734, 0, 0, 6616, 6617, 5, 548, 0, 0, 6617, 6627, 5, 324, 0, 0, 6618, 6627, 5, 645, 0, 0, 6619, 6627, 5, 680, 0, 0, 6620, 6624, 5, 752, 0, 0, 6621, 6622, 5, 194, 0, 0, 6622, 6623, 5, 135, 0, 0, 6623, 6625, 5, 104, 0, 0, 6624, 6621, 1, 0, 0, 0, 6624, 6625, 1, 0, 0, 0, 6625, 6627, 1, 0, 0, 0, 6626, 6608, 1, 0, 0, 0, 6626, 6609, 1, 0, 0, 0, 6626, 6611, 1, 0, 0, 0, 6626, 6614, 1, 0, 0, 0, 6626, 6615, 1, 0, 0, 0, 6626, 6616, 1, 0, 0, 0, 6626, 6618, 1, 0, 0, 0, 6626, 6619, 1, 0, 0, 0, 6626, 6620, 1, 0, 0, 0, 6627, 6641, 1, 0, 0, 0, 6628, 6629, 5, 556, 0, 0, 6629, 6631, 5, 452, 0, 0, 6630, 6632, 3, 390, 195, 0, 6631, 6630, 1, 0, 0, 0, 6631, 6632, 1, 0, 0, 0, 6632, 6641, 1, 0, 0, 0, 6633, 6635, 7, 61, 0, 0, 6634, 6636, 3, 650, 325, 0, 6635, 6634, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6638, 1, 0, 0, 0, 6637, 6639, 3, 596, 298, 0, 6638, 6637, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6641, 1, 0, 0, 0, 6640, 6626, 1, 0, 0, 0, 6640, 6628, 1, 0, 0, 0, 6640, 6633, 1, 0, 0, 0, 6641, 595, 1, 0, 0, 0, 6642, 6643, 5, 194, 0, 0, 6643, 6644, 5, 135, 0, 0, 6644, 6648, 5, 104, 0, 0, 6645, 6646, 5, 65, 0, 0, 6646, 6648, 5, 391, 0, 0, 6647, 6642, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6648, 597, 1, 0, 0, 0, 6649, 6657, 3, 652, 326, 0, 6650, 6651, 5, 130, 0, 0, 6651, 6654, 5, 866, 0, 0, 6652, 6655, 3, 670, 335, 0, 6653, 6655, 5, 7, 0, 0, 6654, 6652, 1, 0, 0, 0, 6654, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 5, 867, 0, 0, 6657, 6650, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6666, 1, 0, 0, 0, 6659, 6661, 7, 19, 0, 0, 6660, 6659, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6662, 1, 0, 0, 0, 6662, 6663, 5, 866, 0, 0, 6663, 6664, 3, 640, 320, 0, 6664, 6665, 5, 867, 0, 0, 6665, 6667, 1, 0, 0, 0, 6666, 6660, 1, 0, 0, 0, 6666, 6667, 1, 0, 0, 0, 6667, 6670, 1, 0, 0, 0, 6668, 6669, 5, 79, 0, 0, 6669, 6671, 5, 446, 0, 0, 6670, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 599, 1, 0, 0, 0, 6672, 6673, 7, 104, 0, 0, 6673, 6676, 3, 652, 326, 0, 6674, 6677, 3, 662, 331, 0, 6675, 6677, 5, 882, 0, 0, 6676, 6674, 1, 0, 0, 0, 6676, 6675, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 601, 1, 0, 0, 0, 6678, 6684, 7, 104, 0, 0, 6679, 6685, 5, 392, 0, 0, 6680, 6685, 5, 528, 0, 0, 6681, 6682, 5, 826, 0, 0, 6682, 6683, 5, 857, 0, 0, 6683, 6685, 7, 105, 0, 0, 6684, 6679, 1, 0, 0, 0, 6684, 6680, 1, 0, 0, 0, 6684, 6681, 1, 0, 0, 0, 6684, 6685, 1, 0, 0, 0, 6685, 6686, 1, 0, 0, 0, 6686, 6687, 3, 624, 312, 0, 6687, 603, 1, 0, 0, 0, 6688, 6689, 7, 104, 0, 0, 6689, 6693, 5, 10, 0, 0, 6690, 6691, 5, 826, 0, 0, 6691, 6692, 5, 857, 0, 0, 6692, 6694, 5, 666, 0, 0, 6693, 6690, 1, 0, 0, 0, 6693, 6694, 1, 0, 0, 0, 6694, 6695, 1, 0, 0, 0, 6695, 6696, 3, 210, 105, 0, 6696, 605, 1, 0, 0, 0, 6697, 6698, 5, 419, 0, 0, 6698, 6699, 5, 882, 0, 0, 6699, 607, 1, 0, 0, 0, 6700, 6701, 5, 187, 0, 0, 6701, 6702, 3, 628, 314, 0, 6702, 609, 1, 0, 0, 0, 6703, 6711, 5, 158, 0, 0, 6704, 6706, 5, 164, 0, 0, 6705, 6707, 5, 682, 0, 0, 6706, 6705, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6712, 3, 716, 358, 0, 6709, 6712, 5, 889, 0, 0, 6710, 6712, 5, 890, 0, 0, 6711, 6704, 1, 0, 0, 0, 6711, 6709, 1, 0, 0, 0, 6711, 6710, 1, 0, 0, 0, 6712, 6722, 1, 0, 0, 0, 6713, 6714, 5, 155, 0, 0, 6714, 6719, 3, 614, 307, 0, 6715, 6716, 5, 868, 0, 0, 6716, 6718, 3, 614, 307, 0, 6717, 6715, 1, 0, 0, 0, 6718, 6721, 1, 0, 0, 0, 6719, 6717, 1, 0, 0, 0, 6719, 6720, 1, 0, 0, 0, 6720, 6723, 1, 0, 0, 0, 6721, 6719, 1, 0, 0, 0, 6722, 6713, 1, 0, 0, 0, 6722, 6723, 1, 0, 0, 0, 6723, 611, 1, 0, 0, 0, 6724, 6732, 5, 145, 0, 0, 6725, 6727, 5, 164, 0, 0, 6726, 6728, 5, 682, 0, 0, 6727, 6726, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 6729, 1, 0, 0, 0, 6729, 6733, 3, 716, 358, 0, 6730, 6733, 5, 889, 0, 0, 6731, 6733, 5, 890, 0, 0, 6732, 6725, 1, 0, 0, 0, 6732, 6730, 1, 0, 0, 0, 6732, 6731, 1, 0, 0, 0, 6732, 6733, 1, 0, 0, 0, 6733, 6743, 1, 0, 0, 0, 6734, 6735, 5, 155, 0, 0, 6735, 6740, 3, 614, 307, 0, 6736, 6737, 5, 868, 0, 0, 6737, 6739, 3, 614, 307, 0, 6738, 6736, 1, 0, 0, 0, 6739, 6742, 1, 0, 0, 0, 6740, 6738, 1, 0, 0, 0, 6740, 6741, 1, 0, 0, 0, 6741, 6744, 1, 0, 0, 0, 6742, 6740, 1, 0, 0, 0, 6743, 6734, 1, 0, 0, 0, 6743, 6744, 1, 0, 0, 0, 6744, 613, 1, 0, 0, 0, 6745, 6746, 7, 106, 0, 0, 6746, 6751, 5, 857, 0, 0, 6747, 6752, 3, 716, 358, 0, 6748, 6752, 5, 883, 0, 0, 6749, 6752, 3, 686, 343, 0, 6750, 6752, 3, 708, 354, 0, 6751, 6747, 1, 0, 0, 0, 6751, 6748, 1, 0, 0, 0, 6751, 6749, 1, 0, 0, 0, 6751, 6750, 1, 0, 0, 0, 6752, 615, 1, 0, 0, 0, 6753, 6755, 5, 194, 0, 0, 6754, 6756, 5, 552, 0, 0, 6755, 6754, 1, 0, 0, 0, 6755, 6756, 1, 0, 0, 0, 6756, 6757, 1, 0, 0, 0, 6757, 6762, 3, 52, 26, 0, 6758, 6759, 5, 868, 0, 0, 6759, 6761, 3, 52, 26, 0, 6760, 6758, 1, 0, 0, 0, 6761, 6764, 1, 0, 0, 0, 6762, 6760, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 617, 1, 0, 0, 0, 6764, 6762, 1, 0, 0, 0, 6765, 6766, 5, 173, 0, 0, 6766, 6768, 3, 652, 326, 0, 6767, 6769, 3, 258, 129, 0, 6768, 6767, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6771, 1, 0, 0, 0, 6770, 6772, 3, 318, 159, 0, 6771, 6770, 1, 0, 0, 0, 6771, 6772, 1, 0, 0, 0, 6772, 619, 1, 0, 0, 0, 6773, 6775, 5, 72, 0, 0, 6774, 6776, 7, 107, 0, 0, 6775, 6774, 1, 0, 0, 0, 6775, 6776, 1, 0, 0, 0, 6776, 6777, 1, 0, 0, 0, 6777, 6809, 5, 48, 0, 0, 6778, 6779, 3, 558, 279, 0, 6779, 6780, 5, 857, 0, 0, 6780, 6788, 7, 108, 0, 0, 6781, 6782, 5, 868, 0, 0, 6782, 6783, 3, 558, 279, 0, 6783, 6784, 5, 857, 0, 0, 6784, 6785, 7, 108, 0, 0, 6785, 6787, 1, 0, 0, 0, 6786, 6781, 1, 0, 0, 0, 6787, 6790, 1, 0, 0, 0, 6788, 6786, 1, 0, 0, 0, 6788, 6789, 1, 0, 0, 0, 6789, 6810, 1, 0, 0, 0, 6790, 6788, 1, 0, 0, 0, 6791, 6794, 5, 30, 0, 0, 6792, 6795, 3, 712, 356, 0, 6793, 6795, 3, 558, 279, 0, 6794, 6792, 1, 0, 0, 0, 6794, 6793, 1, 0, 0, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6797, 3, 558, 279, 0, 6797, 6798, 5, 857, 0, 0, 6798, 6806, 3, 622, 311, 0, 6799, 6800, 5, 868, 0, 0, 6800, 6801, 3, 558, 279, 0, 6801, 6802, 5, 857, 0, 0, 6802, 6803, 3, 622, 311, 0, 6803, 6805, 1, 0, 0, 0, 6804, 6799, 1, 0, 0, 0, 6805, 6808, 1, 0, 0, 0, 6806, 6804, 1, 0, 0, 0, 6806, 6807, 1, 0, 0, 0, 6807, 6810, 1, 0, 0, 0, 6808, 6806, 1, 0, 0, 0, 6809, 6778, 1, 0, 0, 0, 6809, 6791, 1, 0, 0, 0, 6810, 621, 1, 0, 0, 0, 6811, 6812, 7, 109, 0, 0, 6812, 623, 1, 0, 0, 0, 6813, 6819, 3, 210, 105, 0, 6814, 6819, 3, 186, 93, 0, 6815, 6819, 3, 192, 96, 0, 6816, 6819, 3, 208, 104, 0, 6817, 6819, 3, 220, 110, 0, 6818, 6813, 1, 0, 0, 0, 6818, 6814, 1, 0, 0, 0, 6818, 6815, 1, 0, 0, 0, 6818, 6816, 1, 0, 0, 0, 6818, 6817, 1, 0, 0, 0, 6819, 6824, 1, 0, 0, 0, 6820, 6821, 5, 65, 0, 0, 6821, 6822, 5, 349, 0, 0, 6822, 6824, 3, 706, 353, 0, 6823, 6818, 1, 0, 0, 0, 6823, 6820, 1, 0, 0, 0, 6824, 625, 1, 0, 0, 0, 6825, 6826, 3, 702, 351, 0, 6826, 627, 1, 0, 0, 0, 6827, 6828, 3, 702, 351, 0, 6828, 629, 1, 0, 0, 0, 6829, 6830, 3, 702, 351, 0, 6830, 631, 1, 0, 0, 0, 6831, 6832, 3, 702, 351, 0, 6832, 633, 1, 0, 0, 0, 6833, 6834, 3, 702, 351, 0, 6834, 635, 1, 0, 0, 0, 6835, 6836, 3, 702, 351, 0, 6836, 637, 1, 0, 0, 0, 6837, 6838, 3, 706, 353, 0, 6838, 639, 1, 0, 0, 0, 6839, 6844, 3, 642, 321, 0, 6840, 6841, 5, 868, 0, 0, 6841, 6843, 3, 642, 321, 0, 6842, 6840, 1, 0, 0, 0, 6843, 6846, 1, 0, 0, 0, 6844, 6842, 1, 0, 0, 0, 6844, 6845, 1, 0, 0, 0, 6845, 641, 1, 0, 0, 0, 6846, 6844, 1, 0, 0, 0, 6847, 6848, 3, 706, 353, 0, 6848, 643, 1, 0, 0, 0, 6849, 6850, 3, 706, 353, 0, 6850, 645, 1, 0, 0, 0, 6851, 6852, 3, 706, 353, 0, 6852, 647, 1, 0, 0, 0, 6853, 6854, 3, 702, 351, 0, 6854, 649, 1, 0, 0, 0, 6855, 6860, 3, 652, 326, 0, 6856, 6857, 5, 868, 0, 0, 6857, 6859, 3, 652, 326, 0, 6858, 6856, 1, 0, 0, 0, 6859, 6862, 1, 0, 0, 0, 6860, 6858, 1, 0, 0, 0, 6860, 6861, 1, 0, 0, 0, 6861, 651, 1, 0, 0, 0, 6862, 6860, 1, 0, 0, 0, 6863, 6864, 3, 702, 351, 0, 6864, 653, 1, 0, 0, 0, 6865, 6870, 3, 656, 328, 0, 6866, 6867, 5, 868, 0, 0, 6867, 6869, 3, 656, 328, 0, 6868, 6866, 1, 0, 0, 0, 6869, 6872, 1, 0, 0, 0, 6870, 6868, 1, 0, 0, 0, 6870, 6871, 1, 0, 0, 0, 6871, 655, 1, 0, 0, 0, 6872, 6870, 1, 0, 0, 0, 6873, 6876, 3, 684, 342, 0, 6874, 6876, 3, 706, 353, 0, 6875, 6873, 1, 0, 0, 0, 6875, 6874, 1, 0, 0, 0, 6876, 657, 1, 0, 0, 0, 6877, 6882, 3, 706, 353, 0, 6878, 6880, 3, 710, 355, 0, 6879, 6881, 3, 710, 355, 0, 6880, 6879, 1, 0, 0, 0, 6880, 6881, 1, 0, 0, 0, 6881, 6883, 1, 0, 0, 0, 6882, 6878, 1, 0, 0, 0, 6882, 6883, 1, 0, 0, 0, 6883, 6892, 1, 0, 0, 0, 6884, 6886, 9, 0, 0, 0, 6885, 6884, 1, 0, 0, 0, 6885, 6886, 1, 0, 0, 0, 6886, 6887, 1, 0, 0, 0, 6887, 6889, 3, 710, 355, 0, 6888, 6890, 3, 710, 355, 0, 6889, 6888, 1, 0, 0, 0, 6889, 6890, 1, 0, 0, 0, 6890, 6892, 1, 0, 0, 0, 6891, 6877, 1, 0, 0, 0, 6891, 6885, 1, 0, 0, 0, 6892, 659, 1, 0, 0, 0, 6893, 6898, 3, 662, 331, 0, 6894, 6895, 5, 868, 0, 0, 6895, 6897, 3, 662, 331, 0, 6896, 6894, 1, 0, 0, 0, 6897, 6900, 1, 0, 0, 0, 6898, 6896, 1, 0, 0, 0, 6898, 6899, 1, 0, 0, 0, 6899, 661, 1, 0, 0, 0, 6900, 6898, 1, 0, 0, 0, 6901, 6906, 3, 706, 353, 0, 6902, 6904, 3, 710, 355, 0, 6903, 6905, 3, 710, 355, 0, 6904, 6903, 1, 0, 0, 0, 6904, 6905, 1, 0, 0, 0, 6905, 6907, 1, 0, 0, 0, 6906, 6902, 1, 0, 0, 0, 6906, 6907, 1, 0, 0, 0, 6907, 6917, 1, 0, 0, 0, 6908, 6910, 9, 0, 0, 0, 6909, 6908, 1, 0, 0, 0, 6909, 6910, 1, 0, 0, 0, 6910, 6911, 1, 0, 0, 0, 6911, 6913, 3, 710, 355, 0, 6912, 6914, 3, 710, 355, 0, 6913, 6912, 1, 0, 0, 0, 6913, 6914, 1, 0, 0, 0, 6914, 6917, 1, 0, 0, 0, 6915, 6917, 4, 331, 3, 0, 6916, 6901, 1, 0, 0, 0, 6916, 6909, 1, 0, 0, 0, 6916, 6915, 1, 0, 0, 0, 6917, 663, 1, 0, 0, 0, 6918, 6919, 3, 706, 353, 0, 6919, 665, 1, 0, 0, 0, 6920, 6921, 3, 706, 353, 0, 6921, 667, 1, 0, 0, 0, 6922, 6923, 3, 706, 353, 0, 6923, 669, 1, 0, 0, 0, 6924, 6929, 3, 672, 336, 0, 6925, 6926, 5, 868, 0, 0, 6926, 6928, 3, 672, 336, 0, 6927, 6925, 1, 0, 0, 0, 6928, 6931, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6929, 6930, 1, 0, 0, 0, 6930, 671, 1, 0, 0, 0, 6931, 6929, 1, 0, 0, 0, 6932, 6933, 3, 706, 353, 0, 6933, 673, 1, 0, 0, 0, 6934, 6939, 3, 706, 353, 0, 6935, 6936, 5, 866, 0, 0, 6936, 6937, 3, 712, 356, 0, 6937, 6938, 5, 867, 0, 0, 6938, 6940, 1, 0, 0, 0, 6939, 6935, 1, 0, 0, 0, 6939, 6940, 1, 0, 0, 0, 6940, 6943, 1, 0, 0, 0, 6941, 6943, 3, 804, 402, 0, 6942, 6934, 1, 0, 0, 0, 6942, 6941, 1, 0, 0, 0, 6943, 6945, 1, 0, 0, 0, 6944, 6946, 7, 55, 0, 0, 6945, 6944, 1, 0, 0, 0, 6945, 6946, 1, 0, 0, 0, 6946, 675, 1, 0, 0, 0, 6947, 6948, 3, 678, 339, 0, 6948, 6949, 5, 878, 0, 0, 6949, 6950, 3, 712, 356, 0, 6950, 677, 1, 0, 0, 0, 6951, 6952, 3, 680, 340, 0, 6952, 6953, 5, 891, 0, 0, 6953, 679, 1, 0, 0, 0, 6954, 6959, 5, 882, 0, 0, 6955, 6959, 5, 889, 0, 0, 6956, 6959, 5, 704, 0, 0, 6957, 6959, 3, 834, 417, 0, 6958, 6954, 1, 0, 0, 0, 6958, 6955, 1, 0, 0, 0, 6958, 6956, 1, 0, 0, 0, 6958, 6957, 1, 0, 0, 0, 6959, 681, 1, 0, 0, 0, 6960, 6961, 7, 110, 0, 0, 6961, 683, 1, 0, 0, 0, 6962, 6964, 3, 680, 340, 0, 6963, 6965, 3, 682, 341, 0, 6964, 6963, 1, 0, 0, 0, 6964, 6965, 1, 0, 0, 0, 6965, 6968, 1, 0, 0, 0, 6966, 6968, 3, 60, 30, 0, 6967, 6962, 1, 0, 0, 0, 6967, 6966, 1, 0, 0, 0, 6968, 685, 1, 0, 0, 0, 6969, 6970, 7, 111, 0, 0, 6970, 687, 1, 0, 0, 0, 6971, 6976, 5, 228, 0, 0, 6972, 6976, 3, 824, 412, 0, 6973, 6976, 5, 882, 0, 0, 6974, 6976, 5, 879, 0, 0, 6975, 6971, 1, 0, 0, 0, 6975, 6972, 1, 0, 0, 0, 6975, 6973, 1, 0, 0, 0, 6975, 6974, 1, 0, 0, 0, 6976, 689, 1, 0, 0, 0, 6977, 6978, 3, 706, 353, 0, 6978, 691, 1, 0, 0, 0, 6979, 6983, 3, 694, 347, 0, 6980, 6983, 5, 889, 0, 0, 6981, 6983, 5, 882, 0, 0, 6982, 6979, 1, 0, 0, 0, 6982, 6980, 1, 0, 0, 0, 6982, 6981, 1, 0, 0, 0, 6983, 693, 1, 0, 0, 0, 6984, 6985, 7, 112, 0, 0, 6985, 695, 1, 0, 0, 0, 6986, 6987, 3, 712, 356, 0, 6987, 6988, 5, 854, 0, 0, 6988, 6989, 3, 712, 356, 0, 6989, 6990, 5, 854, 0, 0, 6990, 6991, 3, 712, 356, 0, 6991, 6992, 5, 854, 0, 0, 6992, 6993, 3, 712, 356, 0, 6993, 6994, 5, 854, 0, 0, 6994, 7000, 3, 712, 356, 0, 6995, 6996, 5, 878, 0, 0, 6996, 6997, 3, 712, 356, 0, 6997, 6998, 5, 854, 0, 0, 6998, 6999, 3, 712, 356, 0, 6999, 7001, 1, 0, 0, 0, 7000, 6995, 1, 0, 0, 0, 7001, 7002, 1, 0, 0, 0, 7002, 7000, 1, 0, 0, 0, 7002, 7003, 1, 0, 0, 0, 7003, 697, 1, 0, 0, 0, 7004, 7011, 3, 700, 350, 0, 7005, 7006, 5, 868, 0, 0, 7006, 7009, 3, 700, 350, 0, 7007, 7008, 5, 868, 0, 0, 7008, 7010, 3, 712, 356, 0, 7009, 7007, 1, 0, 0, 0, 7009, 7010, 1, 0, 0, 0, 7010, 7012, 1, 0, 0, 0, 7011, 7005, 1, 0, 0, 0, 7011, 7012, 1, 0, 0, 0, 7012, 699, 1, 0, 0, 0, 7013, 7021, 5, 882, 0, 0, 7014, 7021, 5, 887, 0, 0, 7015, 7017, 5, 884, 0, 0, 7016, 7015, 1, 0, 0, 0, 7017, 7018, 1, 0, 0, 0, 7018, 7016, 1, 0, 0, 0, 7018, 7019, 1, 0, 0, 0, 7019, 7021, 1, 0, 0, 0, 7020, 7013, 1, 0, 0, 0, 7020, 7014, 1, 0, 0, 0, 7020, 7016, 1, 0, 0, 0, 7021, 701, 1, 0, 0, 0, 7022, 7024, 3, 706, 353, 0, 7023, 7025, 3, 710, 355, 0, 7024, 7023, 1, 0, 0, 0, 7024, 7025, 1, 0, 0, 0, 7025, 703, 1, 0, 0, 0, 7026, 7031, 3, 706, 353, 0, 7027, 7028, 5, 868, 0, 0, 7028, 7030, 3, 706, 353, 0, 7029, 7027, 1, 0, 0, 0, 7030, 7033, 1, 0, 0, 0, 7031, 7029, 1, 0, 0, 0, 7031, 7032, 1, 0, 0, 0, 7032, 705, 1, 0, 0, 0, 7033, 7031, 1, 0, 0, 0, 7034, 7038, 3, 708, 354, 0, 7035, 7038, 5, 879, 0, 0, 7036, 7038, 5, 882, 0, 0, 7037, 7034, 1, 0, 0, 0, 7037, 7035, 1, 0, 0, 0, 7037, 7036, 1, 0, 0, 0, 7038, 707, 1, 0, 0, 0, 7039, 7049, 5, 889, 0, 0, 7040, 7049, 3, 824, 412, 0, 7041, 7049, 3, 826, 413, 0, 7042, 7049, 3, 694, 347, 0, 7043, 7049, 3, 828, 414, 0, 7044, 7049, 3, 830, 415, 0, 7045, 7049, 3, 832, 416, 0, 7046, 7049, 3, 834, 417, 0, 7047, 7049, 3, 796, 398, 0, 7048, 7039, 1, 0, 0, 0, 7048, 7040, 1, 0, 0, 0, 7048, 7041, 1, 0, 0, 0, 7048, 7042, 1, 0, 0, 0, 7048, 7043, 1, 0, 0, 0, 7048, 7044, 1, 0, 0, 0, 7048, 7045, 1, 0, 0, 0, 7048, 7046, 1, 0, 0, 0, 7048, 7047, 1, 0, 0, 0, 7049, 709, 1, 0, 0, 0, 7050, 7051, 5, 865, 0, 0, 7051, 7055, 5, 889, 0, 0, 7052, 7053, 5, 865, 0, 0, 7053, 7055, 3, 706, 353, 0, 7054, 7050, 1, 0, 0, 0, 7054, 7052, 1, 0, 0, 0, 7055, 711, 1, 0, 0, 0, 7056, 7057, 7, 113, 0, 0, 7057, 713, 1, 0, 0, 0, 7058, 7061, 5, 880, 0, 0, 7059, 7061, 3, 712, 356, 0, 7060, 7058, 1, 0, 0, 0, 7060, 7059, 1, 0, 0, 0, 7061, 715, 1, 0, 0, 0, 7062, 7064, 5, 888, 0, 0, 7063, 7062, 1, 0, 0, 0, 7063, 7064, 1, 0, 0, 0, 7064, 7065, 1, 0, 0, 0, 7065, 7068, 5, 882, 0, 0, 7066, 7068, 5, 881, 0, 0, 7067, 7063, 1, 0, 0, 0, 7067, 7066, 1, 0, 0, 0, 7068, 7070, 1, 0, 0, 0, 7069, 7071, 5, 882, 0, 0, 7070, 7069, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7070, 1, 0, 0, 0, 7072, 7073, 1, 0, 0, 0, 7073, 7086, 1, 0, 0, 0, 7074, 7076, 5, 888, 0, 0, 7075, 7074, 1, 0, 0, 0, 7075, 7076, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7080, 5, 882, 0, 0, 7078, 7080, 5, 881, 0, 0, 7079, 7075, 1, 0, 0, 0, 7079, 7078, 1, 0, 0, 0, 7080, 7083, 1, 0, 0, 0, 7081, 7082, 5, 28, 0, 0, 7082, 7084, 3, 690, 345, 0, 7083, 7081, 1, 0, 0, 0, 7083, 7084, 1, 0, 0, 0, 7084, 7086, 1, 0, 0, 0, 7085, 7067, 1, 0, 0, 0, 7085, 7079, 1, 0, 0, 0, 7086, 717, 1, 0, 0, 0, 7087, 7088, 7, 114, 0, 0, 7088, 719, 1, 0, 0, 0, 7089, 7091, 5, 888, 0, 0, 7090, 7089, 1, 0, 0, 0, 7090, 7091, 1, 0, 0, 0, 7091, 7092, 1, 0, 0, 0, 7092, 7093, 5, 884, 0, 0, 7093, 721, 1, 0, 0, 0, 7094, 7096, 5, 114, 0, 0, 7095, 7094, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7097, 1, 0, 0, 0, 7097, 7098, 7, 115, 0, 0, 7098, 723, 1, 0, 0, 0, 7099, 7112, 3, 716, 358, 0, 7100, 7112, 3, 712, 356, 0, 7101, 7102, 5, 854, 0, 0, 7102, 7112, 3, 712, 356, 0, 7103, 7112, 3, 720, 360, 0, 7104, 7112, 3, 718, 359, 0, 7105, 7112, 5, 885, 0, 0, 7106, 7112, 5, 887, 0, 0, 7107, 7109, 5, 114, 0, 0, 7108, 7107, 1, 0, 0, 0, 7108, 7109, 1, 0, 0, 0, 7109, 7110, 1, 0, 0, 0, 7110, 7112, 7, 115, 0, 0, 7111, 7099, 1, 0, 0, 0, 7111, 7100, 1, 0, 0, 0, 7111, 7101, 1, 0, 0, 0, 7111, 7103, 1, 0, 0, 0, 7111, 7104, 1, 0, 0, 0, 7111, 7105, 1, 0, 0, 0, 7111, 7106, 1, 0, 0, 0, 7111, 7108, 1, 0, 0, 0, 7112, 725, 1, 0, 0, 0, 7113, 7115, 7, 116, 0, 0, 7114, 7116, 5, 240, 0, 0, 7115, 7114, 1, 0, 0, 0, 7115, 7116, 1, 0, 0, 0, 7116, 7118, 1, 0, 0, 0, 7117, 7119, 3, 732, 366, 0, 7118, 7117, 1, 0, 0, 0, 7118, 7119, 1, 0, 0, 0, 7119, 7121, 1, 0, 0, 0, 7120, 7122, 5, 228, 0, 0, 7121, 7120, 1, 0, 0, 0, 7121, 7122, 1, 0, 0, 0, 7122, 7126, 1, 0, 0, 0, 7123, 7124, 3, 58, 29, 0, 7124, 7125, 3, 688, 344, 0, 7125, 7127, 1, 0, 0, 0, 7126, 7123, 1, 0, 0, 0, 7126, 7127, 1, 0, 0, 0, 7127, 7131, 1, 0, 0, 0, 7128, 7129, 5, 28, 0, 0, 7129, 7132, 3, 690, 345, 0, 7130, 7132, 5, 228, 0, 0, 7131, 7128, 1, 0, 0, 0, 7131, 7130, 1, 0, 0, 0, 7131, 7132, 1, 0, 0, 0, 7132, 7240, 1, 0, 0, 0, 7133, 7134, 5, 227, 0, 0, 7134, 7135, 7, 117, 0, 0, 7135, 7137, 5, 240, 0, 0, 7136, 7138, 3, 732, 366, 0, 7137, 7136, 1, 0, 0, 0, 7137, 7138, 1, 0, 0, 0, 7138, 7140, 1, 0, 0, 0, 7139, 7141, 5, 228, 0, 0, 7140, 7139, 1, 0, 0, 0, 7140, 7141, 1, 0, 0, 0, 7141, 7240, 1, 0, 0, 0, 7142, 7143, 5, 227, 0, 0, 7143, 7145, 7, 118, 0, 0, 7144, 7146, 3, 732, 366, 0, 7145, 7144, 1, 0, 0, 0, 7145, 7146, 1, 0, 0, 0, 7146, 7148, 1, 0, 0, 0, 7147, 7149, 5, 228, 0, 0, 7148, 7147, 1, 0, 0, 0, 7148, 7149, 1, 0, 0, 0, 7149, 7240, 1, 0, 0, 0, 7150, 7151, 5, 498, 0, 0, 7151, 7153, 5, 225, 0, 0, 7152, 7154, 3, 732, 366, 0, 7153, 7152, 1, 0, 0, 0, 7153, 7154, 1, 0, 0, 0, 7154, 7156, 1, 0, 0, 0, 7155, 7157, 5, 228, 0, 0, 7156, 7155, 1, 0, 0, 0, 7156, 7157, 1, 0, 0, 0, 7157, 7240, 1, 0, 0, 0, 7158, 7160, 7, 119, 0, 0, 7159, 7161, 3, 732, 366, 0, 7160, 7159, 1, 0, 0, 0, 7160, 7161, 1, 0, 0, 0, 7161, 7165, 1, 0, 0, 0, 7162, 7164, 7, 120, 0, 0, 7163, 7162, 1, 0, 0, 0, 7164, 7167, 1, 0, 0, 0, 7165, 7163, 1, 0, 0, 0, 7165, 7166, 1, 0, 0, 0, 7166, 7240, 1, 0, 0, 0, 7167, 7165, 1, 0, 0, 0, 7168, 7170, 5, 210, 0, 0, 7169, 7171, 3, 734, 367, 0, 7170, 7169, 1, 0, 0, 0, 7170, 7171, 1, 0, 0, 0, 7171, 7175, 1, 0, 0, 0, 7172, 7174, 7, 120, 0, 0, 7173, 7172, 1, 0, 0, 0, 7174, 7177, 1, 0, 0, 0, 7175, 7173, 1, 0, 0, 0, 7175, 7176, 1, 0, 0, 0, 7176, 7240, 1, 0, 0, 0, 7177, 7175, 1, 0, 0, 0, 7178, 7180, 5, 211, 0, 0, 7179, 7181, 5, 212, 0, 0, 7180, 7179, 1, 0, 0, 0, 7180, 7181, 1, 0, 0, 0, 7181, 7183, 1, 0, 0, 0, 7182, 7184, 3, 734, 367, 0, 7183, 7182, 1, 0, 0, 0, 7183, 7184, 1, 0, 0, 0, 7184, 7188, 1, 0, 0, 0, 7185, 7187, 7, 120, 0, 0, 7186, 7185, 1, 0, 0, 0, 7187, 7190, 1, 0, 0, 0, 7188, 7186, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7240, 1, 0, 0, 0, 7190, 7188, 1, 0, 0, 0, 7191, 7193, 7, 121, 0, 0, 7192, 7194, 3, 736, 368, 0, 7193, 7192, 1, 0, 0, 0, 7193, 7194, 1, 0, 0, 0, 7194, 7198, 1, 0, 0, 0, 7195, 7197, 7, 120, 0, 0, 7196, 7195, 1, 0, 0, 0, 7197, 7200, 1, 0, 0, 0, 7198, 7196, 1, 0, 0, 0, 7198, 7199, 1, 0, 0, 0, 7199, 7240, 1, 0, 0, 0, 7200, 7198, 1, 0, 0, 0, 7201, 7240, 7, 122, 0, 0, 7202, 7204, 7, 123, 0, 0, 7203, 7205, 3, 732, 366, 0, 7204, 7203, 1, 0, 0, 0, 7204, 7205, 1, 0, 0, 0, 7205, 7240, 1, 0, 0, 0, 7206, 7207, 7, 124, 0, 0, 7207, 7209, 3, 728, 364, 0, 7208, 7210, 5, 228, 0, 0, 7209, 7208, 1, 0, 0, 0, 7209, 7210, 1, 0, 0, 0, 7210, 7214, 1, 0, 0, 0, 7211, 7212, 3, 58, 29, 0, 7212, 7213, 3, 688, 344, 0, 7213, 7215, 1, 0, 0, 0, 7214, 7211, 1, 0, 0, 0, 7214, 7215, 1, 0, 0, 0, 7215, 7240, 1, 0, 0, 0, 7216, 7219, 7, 125, 0, 0, 7217, 7218, 5, 834, 0, 0, 7218, 7220, 3, 712, 356, 0, 7219, 7217, 1, 0, 0, 0, 7219, 7220, 1, 0, 0, 0, 7220, 7240, 1, 0, 0, 0, 7221, 7223, 5, 233, 0, 0, 7222, 7224, 5, 225, 0, 0, 7223, 7222, 1, 0, 0, 0, 7223, 7224, 1, 0, 0, 0, 7224, 7226, 1, 0, 0, 0, 7225, 7227, 5, 228, 0, 0, 7226, 7225, 1, 0, 0, 0, 7226, 7227, 1, 0, 0, 0, 7227, 7231, 1, 0, 0, 0, 7228, 7229, 3, 58, 29, 0, 7229, 7230, 3, 688, 344, 0, 7230, 7232, 1, 0, 0, 0, 7231, 7228, 1, 0, 0, 0, 7231, 7232, 1, 0, 0, 0, 7232, 7235, 1, 0, 0, 0, 7233, 7234, 5, 28, 0, 0, 7234, 7236, 3, 690, 345, 0, 7235, 7233, 1, 0, 0, 0, 7235, 7236, 1, 0, 0, 0, 7236, 7240, 1, 0, 0, 0, 7237, 7238, 5, 233, 0, 0, 7238, 7240, 5, 229, 0, 0, 7239, 7113, 1, 0, 0, 0, 7239, 7133, 1, 0, 0, 0, 7239, 7142, 1, 0, 0, 0, 7239, 7150, 1, 0, 0, 0, 7239, 7158, 1, 0, 0, 0, 7239, 7168, 1, 0, 0, 0, 7239, 7178, 1, 0, 0, 0, 7239, 7191, 1, 0, 0, 0, 7239, 7201, 1, 0, 0, 0, 7239, 7202, 1, 0, 0, 0, 7239, 7206, 1, 0, 0, 0, 7239, 7216, 1, 0, 0, 0, 7239, 7221, 1, 0, 0, 0, 7239, 7237, 1, 0, 0, 0, 7240, 727, 1, 0, 0, 0, 7241, 7242, 5, 866, 0, 0, 7242, 7247, 5, 882, 0, 0, 7243, 7244, 5, 868, 0, 0, 7244, 7246, 5, 882, 0, 0, 7245, 7243, 1, 0, 0, 0, 7246, 7249, 1, 0, 0, 0, 7247, 7245, 1, 0, 0, 0, 7247, 7248, 1, 0, 0, 0, 7248, 7250, 1, 0, 0, 0, 7249, 7247, 1, 0, 0, 0, 7250, 7251, 5, 867, 0, 0, 7251, 729, 1, 0, 0, 0, 7252, 7254, 7, 126, 0, 0, 7253, 7255, 3, 732, 366, 0, 7254, 7253, 1, 0, 0, 0, 7254, 7255, 1, 0, 0, 0, 7255, 7275, 1, 0, 0, 0, 7256, 7258, 5, 224, 0, 0, 7257, 7259, 3, 732, 366, 0, 7258, 7257, 1, 0, 0, 0, 7258, 7259, 1, 0, 0, 0, 7259, 7263, 1, 0, 0, 0, 7260, 7261, 3, 58, 29, 0, 7261, 7262, 3, 688, 344, 0, 7262, 7264, 1, 0, 0, 0, 7263, 7260, 1, 0, 0, 0, 7263, 7264, 1, 0, 0, 0, 7264, 7275, 1, 0, 0, 0, 7265, 7275, 7, 127, 0, 0, 7266, 7268, 7, 128, 0, 0, 7267, 7269, 3, 736, 368, 0, 7268, 7267, 1, 0, 0, 0, 7268, 7269, 1, 0, 0, 0, 7269, 7275, 1, 0, 0, 0, 7270, 7272, 7, 129, 0, 0, 7271, 7273, 7, 130, 0, 0, 7272, 7271, 1, 0, 0, 0, 7272, 7273, 1, 0, 0, 0, 7273, 7275, 1, 0, 0, 0, 7274, 7252, 1, 0, 0, 0, 7274, 7256, 1, 0, 0, 0, 7274, 7265, 1, 0, 0, 0, 7274, 7266, 1, 0, 0, 0, 7274, 7270, 1, 0, 0, 0, 7275, 7277, 1, 0, 0, 0, 7276, 7278, 5, 12, 0, 0, 7277, 7276, 1, 0, 0, 0, 7277, 7278, 1, 0, 0, 0, 7278, 731, 1, 0, 0, 0, 7279, 7280, 5, 866, 0, 0, 7280, 7281, 3, 712, 356, 0, 7281, 7282, 5, 867, 0, 0, 7282, 733, 1, 0, 0, 0, 7283, 7284, 5, 866, 0, 0, 7284, 7285, 3, 712, 356, 0, 7285, 7286, 5, 868, 0, 0, 7286, 7287, 3, 712, 356, 0, 7287, 7288, 5, 867, 0, 0, 7288, 735, 1, 0, 0, 0, 7289, 7290, 5, 866, 0, 0, 7290, 7293, 3, 712, 356, 0, 7291, 7292, 5, 868, 0, 0, 7292, 7294, 3, 712, 356, 0, 7293, 7291, 1, 0, 0, 0, 7293, 7294, 1, 0, 0, 0, 7294, 7295, 1, 0, 0, 0, 7295, 7296, 5, 867, 0, 0, 7296, 737, 1, 0, 0, 0, 7297, 7298, 5, 866, 0, 0, 7298, 7303, 3, 674, 337, 0, 7299, 7300, 5, 868, 0, 0, 7300, 7302, 3, 674, 337, 0, 7301, 7299, 1, 0, 0, 0, 7302, 7305, 1, 0, 0, 0, 7303, 7301, 1, 0, 0, 0, 7303, 7304, 1, 0, 0, 0, 7304, 7306, 1, 0, 0, 0, 7305, 7303, 1, 0, 0, 0, 7306, 7307, 5, 867, 0, 0, 7307, 739, 1, 0, 0, 0, 7308, 7313, 3, 804, 402, 0, 7309, 7310, 5, 868, 0, 0, 7310, 7312, 3, 804, 402, 0, 7311, 7309, 1, 0, 0, 0, 7312, 7315, 1, 0, 0, 0, 7313, 7311, 1, 0, 0, 0, 7313, 7314, 1, 0, 0, 0, 7314, 741, 1, 0, 0, 0, 7315, 7313, 1, 0, 0, 0, 7316, 7317, 7, 131, 0, 0, 7317, 7322, 3, 744, 372, 0, 7318, 7319, 5, 868, 0, 0, 7319, 7321, 3, 744, 372, 0, 7320, 7318, 1, 0, 0, 0, 7321, 7324, 1, 0, 0, 0, 7322, 7320, 1, 0, 0, 0, 7322, 7323, 1, 0, 0, 0, 7323, 743, 1, 0, 0, 0, 7324, 7322, 1, 0, 0, 0, 7325, 7326, 5, 866, 0, 0, 7326, 7331, 3, 746, 373, 0, 7327, 7328, 5, 868, 0, 0, 7328, 7330, 3, 746, 373, 0, 7329, 7327, 1, 0, 0, 0, 7330, 7333, 1, 0, 0, 0, 7331, 7329, 1, 0, 0, 0, 7331, 7332, 1, 0, 0, 0, 7332, 7334, 1, 0, 0, 0, 7333, 7331, 1, 0, 0, 0, 7334, 7335, 5, 867, 0, 0, 7335, 745, 1, 0, 0, 0, 7336, 7339, 3, 804, 402, 0, 7337, 7339, 5, 42, 0, 0, 7338, 7336, 1, 0, 0, 0, 7338, 7337, 1, 0, 0, 0, 7339, 747, 1, 0, 0, 0, 7340, 7345, 3, 724, 362, 0, 7341, 7342, 5, 868, 0, 0, 7342, 7344, 3, 724, 362, 0, 7343, 7341, 1, 0, 0, 0, 7344, 7347, 1, 0, 0, 0, 7345, 7343, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 749, 1, 0, 0, 0, 7347, 7345, 1, 0, 0, 0, 7348, 7353, 5, 882, 0, 0, 7349, 7350, 5, 868, 0, 0, 7350, 7352, 5, 882, 0, 0, 7351, 7349, 1, 0, 0, 0, 7352, 7355, 1, 0, 0, 0, 7353, 7351, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 751, 1, 0, 0, 0, 7355, 7353, 1, 0, 0, 0, 7356, 7361, 5, 892, 0, 0, 7357, 7358, 5, 868, 0, 0, 7358, 7360, 5, 892, 0, 0, 7359, 7357, 1, 0, 0, 0, 7360, 7363, 1, 0, 0, 0, 7361, 7359, 1, 0, 0, 0, 7361, 7362, 1, 0, 0, 0, 7362, 753, 1, 0, 0, 0, 7363, 7361, 1, 0, 0, 0, 7364, 7391, 5, 116, 0, 0, 7365, 7366, 5, 24, 0, 0, 7366, 7367, 5, 866, 0, 0, 7367, 7368, 3, 804, 402, 0, 7368, 7369, 5, 13, 0, 0, 7369, 7370, 3, 730, 365, 0, 7370, 7371, 5, 867, 0, 0, 7371, 7391, 1, 0, 0, 0, 7372, 7374, 3, 810, 405, 0, 7373, 7372, 1, 0, 0, 0, 7373, 7374, 1, 0, 0, 0, 7374, 7375, 1, 0, 0, 0, 7375, 7391, 3, 724, 362, 0, 7376, 7380, 3, 756, 378, 0, 7377, 7378, 5, 119, 0, 0, 7378, 7379, 5, 185, 0, 0, 7379, 7381, 3, 756, 378, 0, 7380, 7377, 1, 0, 0, 0, 7380, 7381, 1, 0, 0, 0, 7381, 7391, 1, 0, 0, 0, 7382, 7383, 5, 866, 0, 0, 7383, 7384, 3, 804, 402, 0, 7384, 7385, 5, 867, 0, 0, 7385, 7391, 1, 0, 0, 0, 7386, 7387, 5, 866, 0, 0, 7387, 7388, 3, 702, 351, 0, 7388, 7389, 5, 867, 0, 0, 7389, 7391, 1, 0, 0, 0, 7390, 7364, 1, 0, 0, 0, 7390, 7365, 1, 0, 0, 0, 7390, 7373, 1, 0, 0, 0, 7390, 7376, 1, 0, 0, 0, 7390, 7382, 1, 0, 0, 0, 7390, 7386, 1, 0, 0, 0, 7391, 755, 1, 0, 0, 0, 7392, 7398, 7, 132, 0, 0, 7393, 7395, 5, 866, 0, 0, 7394, 7396, 3, 712, 356, 0, 7395, 7394, 1, 0, 0, 0, 7395, 7396, 1, 0, 0, 0, 7396, 7397, 1, 0, 0, 0, 7397, 7399, 5, 867, 0, 0, 7398, 7393, 1, 0, 0, 0, 7398, 7399, 1, 0, 0, 0, 7399, 7407, 1, 0, 0, 0, 7400, 7401, 5, 295, 0, 0, 7401, 7403, 5, 866, 0, 0, 7402, 7404, 3, 712, 356, 0, 7403, 7402, 1, 0, 0, 0, 7403, 7404, 1, 0, 0, 0, 7404, 7405, 1, 0, 0, 0, 7405, 7407, 5, 867, 0, 0, 7406, 7392, 1, 0, 0, 0, 7406, 7400, 1, 0, 0, 0, 7407, 757, 1, 0, 0, 0, 7408, 7409, 5, 78, 0, 0, 7409, 7410, 5, 60, 0, 0, 7410, 759, 1, 0, 0, 0, 7411, 7412, 5, 78, 0, 0, 7412, 7413, 5, 114, 0, 0, 7413, 7414, 5, 60, 0, 0, 7414, 761, 1, 0, 0, 0, 7415, 7416, 5, 124, 0, 0, 7416, 7417, 5, 143, 0, 0, 7417, 763, 1, 0, 0, 0, 7418, 7441, 3, 766, 383, 0, 7419, 7441, 3, 774, 387, 0, 7420, 7441, 3, 776, 388, 0, 7421, 7428, 3, 796, 398, 0, 7422, 7423, 5, 866, 0, 0, 7423, 7429, 5, 867, 0, 0, 7424, 7425, 5, 866, 0, 0, 7425, 7426, 3, 800, 400, 0, 7426, 7427, 5, 867, 0, 0, 7427, 7429, 1, 0, 0, 0, 7428, 7422, 1, 0, 0, 0, 7428, 7424, 1, 0, 0, 0, 7429, 7441, 1, 0, 0, 0, 7430, 7437, 3, 632, 316, 0, 7431, 7432, 5, 866, 0, 0, 7432, 7438, 5, 867, 0, 0, 7433, 7434, 5, 866, 0, 0, 7434, 7435, 3, 800, 400, 0, 7435, 7436, 5, 867, 0, 0, 7436, 7438, 1, 0, 0, 0, 7437, 7431, 1, 0, 0, 0, 7437, 7433, 1, 0, 0, 0, 7438, 7441, 1, 0, 0, 0, 7439, 7441, 3, 798, 399, 0, 7440, 7418, 1, 0, 0, 0, 7440, 7419, 1, 0, 0, 0, 7440, 7420, 1, 0, 0, 0, 7440, 7421, 1, 0, 0, 0, 7440, 7430, 1, 0, 0, 0, 7440, 7439, 1, 0, 0, 0, 7441, 765, 1, 0, 0, 0, 7442, 7445, 7, 133, 0, 0, 7443, 7444, 5, 866, 0, 0, 7444, 7446, 5, 867, 0, 0, 7445, 7443, 1, 0, 0, 0, 7445, 7446, 1, 0, 0, 0, 7446, 7622, 1, 0, 0, 0, 7447, 7622, 3, 60, 30, 0, 7448, 7449, 5, 33, 0, 0, 7449, 7450, 5, 866, 0, 0, 7450, 7451, 3, 804, 402, 0, 7451, 7452, 5, 868, 0, 0, 7452, 7453, 3, 730, 365, 0, 7453, 7454, 5, 867, 0, 0, 7454, 7622, 1, 0, 0, 0, 7455, 7456, 5, 33, 0, 0, 7456, 7457, 5, 866, 0, 0, 7457, 7458, 3, 804, 402, 0, 7458, 7459, 5, 188, 0, 0, 7459, 7460, 3, 688, 344, 0, 7460, 7461, 5, 867, 0, 0, 7461, 7622, 1, 0, 0, 0, 7462, 7463, 5, 24, 0, 0, 7463, 7464, 5, 866, 0, 0, 7464, 7465, 3, 804, 402, 0, 7465, 7466, 5, 13, 0, 0, 7466, 7467, 3, 730, 365, 0, 7467, 7468, 5, 867, 0, 0, 7468, 7622, 1, 0, 0, 0, 7469, 7470, 5, 189, 0, 0, 7470, 7471, 5, 866, 0, 0, 7471, 7472, 3, 662, 331, 0, 7472, 7473, 5, 867, 0, 0, 7473, 7622, 1, 0, 0, 0, 7474, 7476, 5, 23, 0, 0, 7475, 7477, 3, 768, 384, 0, 7476, 7475, 1, 0, 0, 0, 7477, 7478, 1, 0, 0, 0, 7478, 7476, 1, 0, 0, 0, 7478, 7479, 1, 0, 0, 0, 7479, 7482, 1, 0, 0, 0, 7480, 7481, 5, 53, 0, 0, 7481, 7483, 3, 802, 401, 0, 7482, 7480, 1, 0, 0, 0, 7482, 7483, 1, 0, 0, 0, 7483, 7484, 1, 0, 0, 0, 7484, 7485, 5, 378, 0, 0, 7485, 7622, 1, 0, 0, 0, 7486, 7487, 5, 23, 0, 0, 7487, 7489, 3, 804, 402, 0, 7488, 7490, 3, 768, 384, 0, 7489, 7488, 1, 0, 0, 0, 7490, 7491, 1, 0, 0, 0, 7491, 7489, 1, 0, 0, 0, 7491, 7492, 1, 0, 0, 0, 7492, 7495, 1, 0, 0, 0, 7493, 7494, 5, 53, 0, 0, 7494, 7496, 3, 802, 401, 0, 7495, 7493, 1, 0, 0, 0, 7495, 7496, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7498, 5, 378, 0, 0, 7498, 7622, 1, 0, 0, 0, 7499, 7500, 5, 224, 0, 0, 7500, 7501, 5, 866, 0, 0, 7501, 7504, 3, 800, 400, 0, 7502, 7503, 5, 188, 0, 0, 7503, 7505, 3, 688, 344, 0, 7504, 7502, 1, 0, 0, 0, 7504, 7505, 1, 0, 0, 0, 7505, 7506, 1, 0, 0, 0, 7506, 7507, 5, 867, 0, 0, 7507, 7622, 1, 0, 0, 0, 7508, 7509, 5, 296, 0, 0, 7509, 7512, 5, 866, 0, 0, 7510, 7513, 3, 716, 358, 0, 7511, 7513, 3, 804, 402, 0, 7512, 7510, 1, 0, 0, 0, 7512, 7511, 1, 0, 0, 0, 7513, 7514, 1, 0, 0, 0, 7514, 7517, 5, 80, 0, 0, 7515, 7518, 3, 716, 358, 0, 7516, 7518, 3, 804, 402, 0, 7517, 7515, 1, 0, 0, 0, 7517, 7516, 1, 0, 0, 0, 7518, 7519, 1, 0, 0, 0, 7519, 7520, 5, 867, 0, 0, 7520, 7622, 1, 0, 0, 0, 7521, 7522, 7, 134, 0, 0, 7522, 7525, 5, 866, 0, 0, 7523, 7526, 3, 716, 358, 0, 7524, 7526, 3, 804, 402, 0, 7525, 7523, 1, 0, 0, 0, 7525, 7524, 1, 0, 0, 0, 7526, 7527, 1, 0, 0, 0, 7527, 7530, 5, 68, 0, 0, 7528, 7531, 3, 712, 356, 0, 7529, 7531, 3, 804, 402, 0, 7530, 7528, 1, 0, 0, 0, 7530, 7529, 1, 0, 0, 0, 7531, 7537, 1, 0, 0, 0, 7532, 7535, 5, 65, 0, 0, 7533, 7536, 3, 712, 356, 0, 7534, 7536, 3, 804, 402, 0, 7535, 7533, 1, 0, 0, 0, 7535, 7534, 1, 0, 0, 0, 7536, 7538, 1, 0, 0, 0, 7537, 7532, 1, 0, 0, 0, 7537, 7538, 1, 0, 0, 0, 7538, 7539, 1, 0, 0, 0, 7539, 7540, 5, 867, 0, 0, 7540, 7622, 1, 0, 0, 0, 7541, 7542, 5, 300, 0, 0, 7542, 7543, 5, 866, 0, 0, 7543, 7546, 7, 135, 0, 0, 7544, 7547, 3, 716, 358, 0, 7545, 7547, 3, 804, 402, 0, 7546, 7544, 1, 0, 0, 0, 7546, 7545, 1, 0, 0, 0, 7546, 7547, 1, 0, 0, 0, 7547, 7548, 1, 0, 0, 0, 7548, 7551, 5, 68, 0, 0, 7549, 7552, 3, 716, 358, 0, 7550, 7552, 3, 804, 402, 0, 7551, 7549, 1, 0, 0, 0, 7551, 7550, 1, 0, 0, 0, 7552, 7553, 1, 0, 0, 0, 7553, 7554, 5, 867, 0, 0, 7554, 7622, 1, 0, 0, 0, 7555, 7556, 5, 300, 0, 0, 7556, 7559, 5, 866, 0, 0, 7557, 7560, 3, 716, 358, 0, 7558, 7560, 3, 804, 402, 0, 7559, 7557, 1, 0, 0, 0, 7559, 7558, 1, 0, 0, 0, 7560, 7561, 1, 0, 0, 0, 7561, 7564, 5, 68, 0, 0, 7562, 7565, 3, 716, 358, 0, 7563, 7565, 3, 804, 402, 0, 7564, 7562, 1, 0, 0, 0, 7564, 7563, 1, 0, 0, 0, 7565, 7566, 1, 0, 0, 0, 7566, 7567, 5, 867, 0, 0, 7567, 7622, 1, 0, 0, 0, 7568, 7569, 5, 840, 0, 0, 7569, 7572, 5, 866, 0, 0, 7570, 7573, 3, 716, 358, 0, 7571, 7573, 3, 804, 402, 0, 7572, 7570, 1, 0, 0, 0, 7572, 7571, 1, 0, 0, 0, 7573, 7580, 1, 0, 0, 0, 7574, 7575, 5, 13, 0, 0, 7575, 7576, 7, 136, 0, 0, 7576, 7577, 5, 866, 0, 0, 7577, 7578, 3, 712, 356, 0, 7578, 7579, 5, 867, 0, 0, 7579, 7581, 1, 0, 0, 0, 7580, 7574, 1, 0, 0, 0, 7580, 7581, 1, 0, 0, 0, 7581, 7583, 1, 0, 0, 0, 7582, 7584, 3, 770, 385, 0, 7583, 7582, 1, 0, 0, 0, 7583, 7584, 1, 0, 0, 0, 7584, 7585, 1, 0, 0, 0, 7585, 7586, 5, 867, 0, 0, 7586, 7622, 1, 0, 0, 0, 7587, 7588, 5, 293, 0, 0, 7588, 7589, 5, 866, 0, 0, 7589, 7590, 3, 70, 35, 0, 7590, 7593, 5, 68, 0, 0, 7591, 7594, 3, 716, 358, 0, 7592, 7594, 3, 804, 402, 0, 7593, 7591, 1, 0, 0, 0, 7593, 7592, 1, 0, 0, 0, 7594, 7595, 1, 0, 0, 0, 7595, 7596, 5, 867, 0, 0, 7596, 7622, 1, 0, 0, 0, 7597, 7598, 5, 827, 0, 0, 7598, 7599, 5, 866, 0, 0, 7599, 7600, 7, 137, 0, 0, 7600, 7601, 5, 868, 0, 0, 7601, 7602, 3, 716, 358, 0, 7602, 7603, 5, 867, 0, 0, 7603, 7622, 1, 0, 0, 0, 7604, 7605, 5, 254, 0, 0, 7605, 7606, 5, 866, 0, 0, 7606, 7607, 3, 804, 402, 0, 7607, 7608, 5, 868, 0, 0, 7608, 7611, 3, 804, 402, 0, 7609, 7610, 5, 579, 0, 0, 7610, 7612, 3, 730, 365, 0, 7611, 7609, 1, 0, 0, 0, 7611, 7612, 1, 0, 0, 0, 7612, 7614, 1, 0, 0, 0, 7613, 7615, 3, 292, 146, 0, 7614, 7613, 1, 0, 0, 0, 7614, 7615, 1, 0, 0, 0, 7615, 7617, 1, 0, 0, 0, 7616, 7618, 3, 294, 147, 0, 7617, 7616, 1, 0, 0, 0, 7617, 7618, 1, 0, 0, 0, 7618, 7619, 1, 0, 0, 0, 7619, 7620, 5, 867, 0, 0, 7620, 7622, 1, 0, 0, 0, 7621, 7442, 1, 0, 0, 0, 7621, 7447, 1, 0, 0, 0, 7621, 7448, 1, 0, 0, 0, 7621, 7455, 1, 0, 0, 0, 7621, 7462, 1, 0, 0, 0, 7621, 7469, 1, 0, 0, 0, 7621, 7474, 1, 0, 0, 0, 7621, 7486, 1, 0, 0, 0, 7621, 7499, 1, 0, 0, 0, 7621, 7508, 1, 0, 0, 0, 7621, 7521, 1, 0, 0, 0, 7621, 7541, 1, 0, 0, 0, 7621, 7555, 1, 0, 0, 0, 7621, 7568, 1, 0, 0, 0, 7621, 7587, 1, 0, 0, 0, 7621, 7597, 1, 0, 0, 0, 7621, 7604, 1, 0, 0, 0, 7622, 767, 1, 0, 0, 0, 7623, 7624, 5, 191, 0, 0, 7624, 7625, 3, 802, 401, 0, 7625, 7626, 5, 175, 0, 0, 7626, 7627, 3, 802, 401, 0, 7627, 769, 1, 0, 0, 0, 7628, 7629, 5, 448, 0, 0, 7629, 7634, 3, 772, 386, 0, 7630, 7631, 5, 868, 0, 0, 7631, 7633, 3, 772, 386, 0, 7632, 7630, 1, 0, 0, 0, 7633, 7636, 1, 0, 0, 0, 7634, 7632, 1, 0, 0, 0, 7634, 7635, 1, 0, 0, 0, 7635, 7643, 1, 0, 0, 0, 7636, 7634, 1, 0, 0, 0, 7637, 7638, 5, 448, 0, 0, 7638, 7639, 3, 712, 356, 0, 7639, 7640, 5, 854, 0, 0, 7640, 7641, 3, 712, 356, 0, 7641, 7643, 1, 0, 0, 0, 7642, 7628, 1, 0, 0, 0, 7642, 7637, 1, 0, 0, 0, 7643, 771, 1, 0, 0, 0, 7644, 7646, 3, 712, 356, 0, 7645, 7647, 7, 138, 0, 0, 7646, 7645, 1, 0, 0, 0, 7646, 7647, 1, 0, 0, 0, 7647, 773, 1, 0, 0, 0, 7648, 7649, 7, 139, 0, 0, 7649, 7651, 5, 866, 0, 0, 7650, 7652, 7, 45, 0, 0, 7651, 7650, 1, 0, 0, 0, 7651, 7652, 1, 0, 0, 0, 7652, 7653, 1, 0, 0, 0, 7653, 7654, 3, 802, 401, 0, 7654, 7656, 5, 867, 0, 0, 7655, 7657, 3, 778, 389, 0, 7656, 7655, 1, 0, 0, 0, 7656, 7657, 1, 0, 0, 0, 7657, 7708, 1, 0, 0, 0, 7658, 7659, 5, 262, 0, 0, 7659, 7667, 5, 866, 0, 0, 7660, 7668, 5, 850, 0, 0, 7661, 7663, 5, 7, 0, 0, 7662, 7661, 1, 0, 0, 0, 7662, 7663, 1, 0, 0, 0, 7663, 7664, 1, 0, 0, 0, 7664, 7668, 3, 802, 401, 0, 7665, 7666, 5, 49, 0, 0, 7666, 7668, 3, 800, 400, 0, 7667, 7660, 1, 0, 0, 0, 7667, 7662, 1, 0, 0, 0, 7667, 7665, 1, 0, 0, 0, 7668, 7669, 1, 0, 0, 0, 7669, 7671, 5, 867, 0, 0, 7670, 7672, 3, 778, 389, 0, 7671, 7670, 1, 0, 0, 0, 7671, 7672, 1, 0, 0, 0, 7672, 7708, 1, 0, 0, 0, 7673, 7674, 7, 140, 0, 0, 7674, 7676, 5, 866, 0, 0, 7675, 7677, 5, 7, 0, 0, 7676, 7675, 1, 0, 0, 0, 7676, 7677, 1, 0, 0, 0, 7677, 7678, 1, 0, 0, 0, 7678, 7679, 3, 802, 401, 0, 7679, 7681, 5, 867, 0, 0, 7680, 7682, 3, 778, 389, 0, 7681, 7680, 1, 0, 0, 0, 7681, 7682, 1, 0, 0, 0, 7682, 7708, 1, 0, 0, 0, 7683, 7684, 5, 266, 0, 0, 7684, 7686, 5, 866, 0, 0, 7685, 7687, 5, 49, 0, 0, 7686, 7685, 1, 0, 0, 0, 7686, 7687, 1, 0, 0, 0, 7687, 7688, 1, 0, 0, 0, 7688, 7699, 3, 800, 400, 0, 7689, 7690, 5, 125, 0, 0, 7690, 7691, 5, 20, 0, 0, 7691, 7696, 3, 260, 130, 0, 7692, 7693, 5, 868, 0, 0, 7693, 7695, 3, 260, 130, 0, 7694, 7692, 1, 0, 0, 0, 7695, 7698, 1, 0, 0, 0, 7696, 7694, 1, 0, 0, 0, 7696, 7697, 1, 0, 0, 0, 7697, 7700, 1, 0, 0, 0, 7698, 7696, 1, 0, 0, 0, 7699, 7689, 1, 0, 0, 0, 7699, 7700, 1, 0, 0, 0, 7700, 7703, 1, 0, 0, 0, 7701, 7702, 5, 156, 0, 0, 7702, 7704, 5, 882, 0, 0, 7703, 7701, 1, 0, 0, 0, 7703, 7704, 1, 0, 0, 0, 7704, 7705, 1, 0, 0, 0, 7705, 7706, 5, 867, 0, 0, 7706, 7708, 1, 0, 0, 0, 7707, 7648, 1, 0, 0, 0, 7707, 7658, 1, 0, 0, 0, 7707, 7673, 1, 0, 0, 0, 7707, 7683, 1, 0, 0, 0, 7708, 775, 1, 0, 0, 0, 7709, 7710, 7, 141, 0, 0, 7710, 7711, 5, 866, 0, 0, 7711, 7714, 3, 804, 402, 0, 7712, 7713, 5, 868, 0, 0, 7713, 7715, 3, 712, 356, 0, 7714, 7712, 1, 0, 0, 0, 7714, 7715, 1, 0, 0, 0, 7715, 7718, 1, 0, 0, 0, 7716, 7717, 5, 868, 0, 0, 7717, 7719, 3, 712, 356, 0, 7718, 7716, 1, 0, 0, 0, 7718, 7719, 1, 0, 0, 0, 7719, 7720, 1, 0, 0, 0, 7720, 7721, 5, 867, 0, 0, 7721, 7722, 3, 778, 389, 0, 7722, 7748, 1, 0, 0, 0, 7723, 7724, 7, 142, 0, 0, 7724, 7725, 5, 866, 0, 0, 7725, 7726, 3, 804, 402, 0, 7726, 7727, 5, 867, 0, 0, 7727, 7728, 3, 778, 389, 0, 7728, 7748, 1, 0, 0, 0, 7729, 7730, 7, 143, 0, 0, 7730, 7731, 5, 866, 0, 0, 7731, 7732, 5, 867, 0, 0, 7732, 7748, 3, 778, 389, 0, 7733, 7734, 5, 273, 0, 0, 7734, 7735, 5, 866, 0, 0, 7735, 7736, 3, 804, 402, 0, 7736, 7737, 5, 868, 0, 0, 7737, 7738, 3, 712, 356, 0, 7738, 7739, 5, 867, 0, 0, 7739, 7740, 3, 778, 389, 0, 7740, 7748, 1, 0, 0, 0, 7741, 7742, 5, 272, 0, 0, 7742, 7743, 5, 866, 0, 0, 7743, 7744, 3, 712, 356, 0, 7744, 7745, 5, 867, 0, 0, 7745, 7746, 3, 778, 389, 0, 7746, 7748, 1, 0, 0, 0, 7747, 7709, 1, 0, 0, 0, 7747, 7723, 1, 0, 0, 0, 7747, 7729, 1, 0, 0, 0, 7747, 7733, 1, 0, 0, 0, 7747, 7741, 1, 0, 0, 0, 7748, 777, 1, 0, 0, 0, 7749, 7755, 5, 129, 0, 0, 7750, 7751, 5, 866, 0, 0, 7751, 7752, 3, 780, 390, 0, 7752, 7753, 5, 867, 0, 0, 7753, 7756, 1, 0, 0, 0, 7754, 7756, 3, 782, 391, 0, 7755, 7750, 1, 0, 0, 0, 7755, 7754, 1, 0, 0, 0, 7756, 779, 1, 0, 0, 0, 7757, 7759, 3, 782, 391, 0, 7758, 7757, 1, 0, 0, 0, 7758, 7759, 1, 0, 0, 0, 7759, 7761, 1, 0, 0, 0, 7760, 7762, 3, 794, 397, 0, 7761, 7760, 1, 0, 0, 0, 7761, 7762, 1, 0, 0, 0, 7762, 7764, 1, 0, 0, 0, 7763, 7765, 3, 258, 129, 0, 7764, 7763, 1, 0, 0, 0, 7764, 7765, 1, 0, 0, 0, 7765, 7767, 1, 0, 0, 0, 7766, 7768, 3, 784, 392, 0, 7767, 7766, 1, 0, 0, 0, 7767, 7768, 1, 0, 0, 0, 7768, 781, 1, 0, 0, 0, 7769, 7770, 3, 706, 353, 0, 7770, 783, 1, 0, 0, 0, 7771, 7772, 3, 786, 393, 0, 7772, 7773, 3, 788, 394, 0, 7773, 785, 1, 0, 0, 0, 7774, 7775, 7, 144, 0, 0, 7775, 787, 1, 0, 0, 0, 7776, 7779, 3, 792, 396, 0, 7777, 7779, 3, 790, 395, 0, 7778, 7776, 1, 0, 0, 0, 7778, 7777, 1, 0, 0, 0, 7779, 789, 1, 0, 0, 0, 7780, 7781, 5, 17, 0, 0, 7781, 7782, 3, 792, 396, 0, 7782, 7783, 5, 11, 0, 0, 7783, 7784, 3, 792, 396, 0, 7784, 791, 1, 0, 0, 0, 7785, 7786, 5, 36, 0, 0, 7786, 7793, 5, 586, 0, 0, 7787, 7788, 5, 669, 0, 0, 7788, 7793, 7, 145, 0, 0, 7789, 7790, 3, 804, 402, 0, 7790, 7791, 7, 145, 0, 0, 7791, 7793, 1, 0, 0, 0, 7792, 7785, 1, 0, 0, 0, 7792, 7787, 1, 0, 0, 0, 7792, 7789, 1, 0, 0, 0, 7793, 793, 1, 0, 0, 0, 7794, 7795, 5, 130, 0, 0, 7795, 7796, 5, 20, 0, 0, 7796, 7801, 3, 804, 402, 0, 7797, 7798, 5, 868, 0, 0, 7798, 7800, 3, 804, 402, 0, 7799, 7797, 1, 0, 0, 0, 7800, 7803, 1, 0, 0, 0, 7801, 7799, 1, 0, 0, 0, 7801, 7802, 1, 0, 0, 0, 7802, 795, 1, 0, 0, 0, 7803, 7801, 1, 0, 0, 0, 7804, 7829, 3, 836, 418, 0, 7805, 7829, 5, 757, 0, 0, 7806, 7829, 5, 289, 0, 0, 7807, 7829, 5, 285, 0, 0, 7808, 7829, 5, 286, 0, 0, 7809, 7829, 5, 287, 0, 0, 7810, 7829, 5, 290, 0, 0, 7811, 7829, 5, 291, 0, 0, 7812, 7829, 5, 292, 0, 0, 7813, 7829, 5, 78, 0, 0, 7814, 7829, 5, 86, 0, 0, 7815, 7829, 5, 288, 0, 0, 7816, 7829, 5, 294, 0, 0, 7817, 7829, 5, 488, 0, 0, 7818, 7829, 5, 295, 0, 0, 7819, 7829, 5, 142, 0, 0, 7820, 7829, 5, 143, 0, 0, 7821, 7829, 5, 297, 0, 0, 7822, 7829, 5, 298, 0, 0, 7823, 7829, 5, 299, 0, 0, 7824, 7829, 5, 300, 0, 0, 7825, 7829, 5, 301, 0, 0, 7826, 7829, 5, 302, 0, 0, 7827, 7829, 5, 303, 0, 0, 7828, 7804, 1, 0, 0, 0, 7828, 7805, 1, 0, 0, 0, 7828, 7806, 1, 0, 0, 0, 7828, 7807, 1, 0, 0, 0, 7828, 7808, 1, 0, 0, 0, 7828, 7809, 1, 0, 0, 0, 7828, 7810, 1, 0, 0, 0, 7828, 7811, 1, 0, 0, 0, 7828, 7812, 1, 0, 0, 0, 7828, 7813, 1, 0, 0, 0, 7828, 7814, 1, 0, 0, 0, 7828, 7815, 1, 0, 0, 0, 7828, 7816, 1, 0, 0, 0, 7828, 7817, 1, 0, 0, 0, 7828, 7818, 1, 0, 0, 0, 7828, 7819, 1, 0, 0, 0, 7828, 7820, 1, 0, 0, 0, 7828, 7821, 1, 0, 0, 0, 7828, 7822, 1, 0, 0, 0, 7828, 7823, 1, 0, 0, 0, 7828, 7824, 1, 0, 0, 0, 7828, 7825, 1, 0, 0, 0, 7828, 7826, 1, 0, 0, 0, 7828, 7827, 1, 0, 0, 0, 7829, 797, 1, 0, 0, 0, 7830, 7831, 7, 146, 0, 0, 7831, 7832, 5, 866, 0, 0, 7832, 7833, 3, 802, 401, 0, 7833, 7834, 5, 867, 0, 0, 7834, 799, 1, 0, 0, 0, 7835, 7840, 3, 802, 401, 0, 7836, 7837, 5, 868, 0, 0, 7837, 7839, 3, 802, 401, 0, 7838, 7836, 1, 0, 0, 0, 7839, 7842, 1, 0, 0, 0, 7840, 7838, 1, 0, 0, 0, 7840, 7841, 1, 0, 0, 0, 7841, 801, 1, 0, 0, 0, 7842, 7840, 1, 0, 0, 0, 7843, 7847, 3, 724, 362, 0, 7844, 7847, 3, 764, 382, 0, 7845, 7847, 3, 804, 402, 0, 7846, 7843, 1, 0, 0, 0, 7846, 7844, 1, 0, 0, 0, 7846, 7845, 1, 0, 0, 0, 7847, 803, 1, 0, 0, 0, 7848, 7849, 6, 402, -1, 0, 7849, 7850, 7, 147, 0, 0, 7850, 7860, 3, 804, 402, 4, 7851, 7852, 3, 806, 403, 0, 7852, 7854, 5, 89, 0, 0, 7853, 7855, 5, 114, 0, 0, 7854, 7853, 1, 0, 0, 0, 7854, 7855, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7857, 7, 148, 0, 0, 7857, 7860, 1, 0, 0, 0, 7858, 7860, 3, 806, 403, 0, 7859, 7848, 1, 0, 0, 0, 7859, 7851, 1, 0, 0, 0, 7859, 7858, 1, 0, 0, 0, 7860, 7867, 1, 0, 0, 0, 7861, 7862, 10, 3, 0, 0, 7862, 7863, 3, 816, 408, 0, 7863, 7864, 3, 804, 402, 4, 7864, 7866, 1, 0, 0, 0, 7865, 7861, 1, 0, 0, 0, 7866, 7869, 1, 0, 0, 0, 7867, 7865, 1, 0, 0, 0, 7867, 7868, 1, 0, 0, 0, 7868, 805, 1, 0, 0, 0, 7869, 7867, 1, 0, 0, 0, 7870, 7871, 6, 403, -1, 0, 7871, 7872, 3, 808, 404, 0, 7872, 7936, 1, 0, 0, 0, 7873, 7875, 10, 6, 0, 0, 7874, 7876, 5, 114, 0, 0, 7875, 7874, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7877, 1, 0, 0, 0, 7877, 7878, 5, 17, 0, 0, 7878, 7879, 3, 806, 403, 0, 7879, 7880, 5, 11, 0, 0, 7880, 7881, 3, 806, 403, 7, 7881, 7935, 1, 0, 0, 0, 7882, 7883, 10, 5, 0, 0, 7883, 7884, 5, 604, 0, 0, 7884, 7885, 5, 99, 0, 0, 7885, 7935, 3, 806, 403, 6, 7886, 7888, 10, 3, 0, 0, 7887, 7889, 5, 114, 0, 0, 7888, 7887, 1, 0, 0, 0, 7888, 7889, 1, 0, 0, 0, 7889, 7890, 1, 0, 0, 0, 7890, 7891, 7, 149, 0, 0, 7891, 7935, 3, 806, 403, 4, 7892, 7894, 10, 9, 0, 0, 7893, 7895, 5, 114, 0, 0, 7894, 7893, 1, 0, 0, 0, 7894, 7895, 1, 0, 0, 0, 7895, 7896, 1, 0, 0, 0, 7896, 7897, 5, 80, 0, 0, 7897, 7900, 5, 866, 0, 0, 7898, 7901, 3, 210, 105, 0, 7899, 7901, 3, 740, 370, 0, 7900, 7898, 1, 0, 0, 0, 7900, 7899, 1, 0, 0, 0, 7901, 7902, 1, 0, 0, 0, 7902, 7903, 5, 867, 0, 0, 7903, 7935, 1, 0, 0, 0, 7904, 7905, 10, 8, 0, 0, 7905, 7906, 5, 89, 0, 0, 7906, 7935, 3, 722, 361, 0, 7907, 7908, 10, 7, 0, 0, 7908, 7915, 3, 812, 406, 0, 7909, 7910, 7, 150, 0, 0, 7910, 7911, 5, 866, 0, 0, 7911, 7912, 3, 210, 105, 0, 7912, 7913, 5, 867, 0, 0, 7913, 7916, 1, 0, 0, 0, 7914, 7916, 3, 806, 403, 0, 7915, 7909, 1, 0, 0, 0, 7915, 7914, 1, 0, 0, 0, 7916, 7935, 1, 0, 0, 0, 7917, 7919, 10, 4, 0, 0, 7918, 7920, 5, 114, 0, 0, 7919, 7918, 1, 0, 0, 0, 7919, 7920, 1, 0, 0, 0, 7920, 7921, 1, 0, 0, 0, 7921, 7922, 5, 99, 0, 0, 7922, 7925, 3, 806, 403, 0, 7923, 7924, 5, 384, 0, 0, 7924, 7926, 5, 882, 0, 0, 7925, 7923, 1, 0, 0, 0, 7925, 7926, 1, 0, 0, 0, 7926, 7935, 1, 0, 0, 0, 7927, 7928, 10, 2, 0, 0, 7928, 7929, 5, 485, 0, 0, 7929, 7930, 5, 510, 0, 0, 7930, 7931, 5, 866, 0, 0, 7931, 7932, 3, 806, 403, 0, 7932, 7933, 5, 867, 0, 0, 7933, 7935, 1, 0, 0, 0, 7934, 7873, 1, 0, 0, 0, 7934, 7882, 1, 0, 0, 0, 7934, 7886, 1, 0, 0, 0, 7934, 7892, 1, 0, 0, 0, 7934, 7904, 1, 0, 0, 0, 7934, 7907, 1, 0, 0, 0, 7934, 7917, 1, 0, 0, 0, 7934, 7927, 1, 0, 0, 0, 7935, 7938, 1, 0, 0, 0, 7936, 7934, 1, 0, 0, 0, 7936, 7937, 1, 0, 0, 0, 7937, 807, 1, 0, 0, 0, 7938, 7936, 1, 0, 0, 0, 7939, 7940, 6, 404, -1, 0, 7940, 7988, 3, 724, 362, 0, 7941, 7988, 3, 764, 382, 0, 7942, 7988, 3, 686, 343, 0, 7943, 7944, 3, 810, 405, 0, 7944, 7945, 3, 808, 404, 12, 7945, 7988, 1, 0, 0, 0, 7946, 7947, 5, 228, 0, 0, 7947, 7988, 3, 808, 404, 11, 7948, 7949, 5, 892, 0, 0, 7949, 7950, 5, 841, 0, 0, 7950, 7988, 3, 808, 404, 10, 7951, 7952, 5, 866, 0, 0, 7952, 7957, 3, 804, 402, 0, 7953, 7954, 5, 868, 0, 0, 7954, 7956, 3, 804, 402, 0, 7955, 7953, 1, 0, 0, 0, 7956, 7959, 1, 0, 0, 0, 7957, 7955, 1, 0, 0, 0, 7957, 7958, 1, 0, 0, 0, 7958, 7960, 1, 0, 0, 0, 7959, 7957, 1, 0, 0, 0, 7960, 7961, 5, 867, 0, 0, 7961, 7988, 1, 0, 0, 0, 7962, 7963, 5, 586, 0, 0, 7963, 7964, 5, 866, 0, 0, 7964, 7967, 3, 804, 402, 0, 7965, 7966, 5, 868, 0, 0, 7966, 7968, 3, 804, 402, 0, 7967, 7965, 1, 0, 0, 0, 7968, 7969, 1, 0, 0, 0, 7969, 7967, 1, 0, 0, 0, 7969, 7970, 1, 0, 0, 0, 7970, 7971, 1, 0, 0, 0, 7971, 7972, 5, 867, 0, 0, 7972, 7988, 1, 0, 0, 0, 7973, 7974, 5, 60, 0, 0, 7974, 7975, 5, 866, 0, 0, 7975, 7976, 3, 210, 105, 0, 7976, 7977, 5, 867, 0, 0, 7977, 7988, 1, 0, 0, 0, 7978, 7979, 5, 866, 0, 0, 7979, 7980, 3, 210, 105, 0, 7980, 7981, 5, 867, 0, 0, 7981, 7988, 1, 0, 0, 0, 7982, 7983, 5, 87, 0, 0, 7983, 7984, 3, 804, 402, 0, 7984, 7985, 3, 70, 35, 0, 7985, 7988, 1, 0, 0, 0, 7986, 7988, 3, 662, 331, 0, 7987, 7939, 1, 0, 0, 0, 7987, 7941, 1, 0, 0, 0, 7987, 7942, 1, 0, 0, 0, 7987, 7943, 1, 0, 0, 0, 7987, 7946, 1, 0, 0, 0, 7987, 7948, 1, 0, 0, 0, 7987, 7951, 1, 0, 0, 0, 7987, 7962, 1, 0, 0, 0, 7987, 7973, 1, 0, 0, 0, 7987, 7978, 1, 0, 0, 0, 7987, 7982, 1, 0, 0, 0, 7987, 7986, 1, 0, 0, 0, 7988, 8006, 1, 0, 0, 0, 7989, 7990, 10, 4, 0, 0, 7990, 7991, 3, 822, 411, 0, 7991, 7992, 3, 808, 404, 5, 7992, 8005, 1, 0, 0, 0, 7993, 7994, 10, 3, 0, 0, 7994, 7995, 3, 818, 409, 0, 7995, 7996, 3, 808, 404, 4, 7996, 8005, 1, 0, 0, 0, 7997, 7998, 10, 2, 0, 0, 7998, 7999, 3, 820, 410, 0, 7999, 8000, 3, 808, 404, 3, 8000, 8005, 1, 0, 0, 0, 8001, 8002, 10, 14, 0, 0, 8002, 8003, 5, 28, 0, 0, 8003, 8005, 3, 690, 345, 0, 8004, 7989, 1, 0, 0, 0, 8004, 7993, 1, 0, 0, 0, 8004, 7997, 1, 0, 0, 0, 8004, 8001, 1, 0, 0, 0, 8005, 8008, 1, 0, 0, 0, 8006, 8004, 1, 0, 0, 0, 8006, 8007, 1, 0, 0, 0, 8007, 809, 1, 0, 0, 0, 8008, 8006, 1, 0, 0, 0, 8009, 8010, 7, 151, 0, 0, 8010, 811, 1, 0, 0, 0, 8011, 8012, 5, 859, 0, 0, 8012, 8020, 5, 858, 0, 0, 8013, 8014, 5, 860, 0, 0, 8014, 8020, 5, 857, 0, 0, 8015, 8016, 5, 859, 0, 0, 8016, 8017, 5, 857, 0, 0, 8017, 8020, 5, 858, 0, 0, 8018, 8020, 3, 814, 407, 0, 8019, 8011, 1, 0, 0, 0, 8019, 8013, 1, 0, 0, 0, 8019, 8015, 1, 0, 0, 0, 8019, 8018, 1, 0, 0, 0, 8020, 813, 1, 0, 0, 0, 8021, 8022, 5, 859, 0, 0, 8022, 8029, 5, 857, 0, 0, 8023, 8024, 5, 858, 0, 0, 8024, 8029, 5, 857, 0, 0, 8025, 8029, 5, 857, 0, 0, 8026, 8029, 5, 858, 0, 0, 8027, 8029, 5, 859, 0, 0, 8028, 8021, 1, 0, 0, 0, 8028, 8023, 1, 0, 0, 0, 8028, 8025, 1, 0, 0, 0, 8028, 8026, 1, 0, 0, 0, 8028, 8027, 1, 0, 0, 0, 8029, 815, 1, 0, 0, 0, 8030, 8038, 5, 11, 0, 0, 8031, 8032, 5, 863, 0, 0, 8032, 8038, 5, 863, 0, 0, 8033, 8038, 5, 196, 0, 0, 8034, 8038, 5, 124, 0, 0, 8035, 8036, 5, 862, 0, 0, 8036, 8038, 5, 862, 0, 0, 8037, 8030, 1, 0, 0, 0, 8037, 8031, 1, 0, 0, 0, 8037, 8033, 1, 0, 0, 0, 8037, 8034, 1, 0, 0, 0, 8037, 8035, 1, 0, 0, 0, 8038, 817, 1, 0, 0, 0, 8039, 8040, 5, 859, 0, 0, 8040, 8047, 5, 859, 0, 0, 8041, 8042, 5, 858, 0, 0, 8042, 8047, 5, 858, 0, 0, 8043, 8047, 5, 863, 0, 0, 8044, 8047, 5, 864, 0, 0, 8045, 8047, 5, 862, 0, 0, 8046, 8039, 1, 0, 0, 0, 8046, 8041, 1, 0, 0, 0, 8046, 8043, 1, 0, 0, 0, 8046, 8044, 1, 0, 0, 0, 8046, 8045, 1, 0, 0, 0, 8047, 819, 1, 0, 0, 0, 8048, 8049, 7, 152, 0, 0, 8049, 821, 1, 0, 0, 0, 8050, 8051, 5, 854, 0, 0, 8051, 8056, 5, 858, 0, 0, 8052, 8053, 5, 854, 0, 0, 8053, 8054, 5, 858, 0, 0, 8054, 8056, 5, 858, 0, 0, 8055, 8050, 1, 0, 0, 0, 8055, 8052, 1, 0, 0, 0, 8056, 823, 1, 0, 0, 0, 8057, 8058, 7, 153, 0, 0, 8058, 825, 1, 0, 0, 0, 8059, 8060, 7, 154, 0, 0, 8060, 827, 1, 0, 0, 0, 8061, 8062, 7, 155, 0, 0, 8062, 829, 1, 0, 0, 0, 8063, 8064, 7, 156, 0, 0, 8064, 831, 1, 0, 0, 0, 8065, 8066, 7, 157, 0, 0, 8066, 833, 1, 0, 0, 0, 8067, 8068, 7, 158, 0, 0, 8068, 835, 1, 0, 0, 0, 8069, 8070, 7, 159, 0, 0, 8070, 837, 1, 0, 0, 0, 1163, 841, 848, 851, 860, 904, 923, 934, 950, 955, 967, 1002, 1012, 1017, 1023, 1028, 1032, 1041, 1044, 1047, 1051, 1058, 1061, 1066, 1074, 1079, 1084, 1087, 1089, 1101, 1104, 1108, 1111, 1115, 1118, 1122, 1125, 1128, 1132, 1135, 1139, 1145, 1149, 1154, 1160, 1167, 1174, 1177, 1181, 1186, 1192, 1201, 1206, 1210, 1214, 1225, 1243, 1250, 1254, 1258, 1262, 1267, 1270, 1273, 1276, 1279, 1285, 1289, 1299, 1303, 1307, 1313, 1318, 1321, 1324, 1326, 1330, 1337, 1341, 1344, 1349, 1353, 1356, 1360, 1363, 1367, 1380, 1383, 1387, 1390, 1394, 1397, 1401, 1404, 1408, 1411, 1414, 1418, 1421, 1425, 1431, 1434, 1438, 1450, 1456, 1467, 1472, 1480, 1484, 1489, 1492, 1497, 1507, 1512, 1517, 1523, 1528, 1532, 1534, 1537, 1541, 1545, 1548, 1552, 1556, 1560, 1566, 1569, 1576, 1581, 1587, 1594, 1600, 1608, 1611, 1618, 1621, 1623, 1629, 1635, 1652, 1659, 1666, 1678, 1683, 1686, 1689, 1702, 1715, 1720, 1736, 1744, 1754, 1757, 1763, 1768, 1771, 1777, 1781, 1786, 1792, 1796, 1800, 1803, 1806, 1812, 1816, 1821, 1832, 1835, 1842, 1845, 1849, 1855, 1867, 1870, 1875, 1888, 1895, 1901, 1906, 1910, 1913, 1921, 1929, 1931, 1941, 1945, 1948, 1952, 1957, 1962, 1967, 1971, 1975, 1979, 1983, 1987, 1991, 1996, 2001, 2006, 2012, 2017, 2022, 2027, 2032, 2037, 2043, 2048, 2053, 2058, 2063, 2068, 2073, 2078, 2085, 2090, 2095, 2100, 2104, 2109, 2117, 2122, 2128, 2140, 2147, 2149, 2157, 2162, 2165, 2173, 2179, 2183, 2196, 2208, 2210, 2213, 2221, 2227, 2233, 2246, 2253, 2262, 2267, 2278, 2287, 2292, 2304, 2311, 2320, 2325, 2337, 2344, 2353, 2358, 2365, 2374, 2379, 2381, 2386, 2394, 2403, 2407, 2410, 2414, 2419, 2425, 2431, 2436, 2441, 2446, 2451, 2454, 2459, 2464, 2474, 2478, 2485, 2490, 2493, 2498, 2501, 2505, 2509, 2517, 2536, 2539, 2542, 2546, 2556, 2569, 2582, 2585, 2591, 2594, 2598, 2607, 2610, 2613, 2618, 2622, 2625, 2629, 2633, 2636, 2640, 2643, 2647, 2650, 2656, 2659, 2664, 2672, 2678, 2682, 2686, 2691, 2696, 2703, 2707, 2718, 2726, 2729, 2735, 2741, 2744, 2750, 2756, 2758, 2763, 2769, 2775, 2777, 2781, 2784, 2787, 2793, 2799, 2801, 2806, 2813, 2822, 2825, 2829, 2834, 2844, 2853, 2861, 2864, 2872, 2875, 2882, 2887, 2895, 2911, 2916, 2923, 2942, 2948, 2958, 2970, 2977, 2984, 2999, 3012, 3018, 3024, 3030, 3036, 3042, 3048, 3053, 3060, 3067, 3074, 3079, 3082, 3084, 3093, 3100, 3107, 3114, 3123, 3129, 3133, 3137, 3141, 3147, 3150, 3155, 3162, 3169, 3173, 3178, 3188, 3196, 3202, 3211, 3220, 3229, 3232, 3236, 3245, 3249, 3252, 3255, 3261, 3264, 3267, 3271, 3274, 3277, 3280, 3291, 3294, 3299, 3305, 3310, 3315, 3318, 3322, 3327, 3330, 3335, 3345, 3350, 3356, 3358, 3364, 3366, 3372, 3380, 3385, 3393, 3396, 3401, 3404, 3409, 3417, 3423, 3427, 3429, 3435, 3443, 3448, 3456, 3459, 3464, 3467, 3471, 3474, 3477, 3481, 3484, 3492, 3498, 3502, 3508, 3513, 3517, 3519, 3525, 3529, 3532, 3535, 3538, 3544, 3549, 3552, 3555, 3558, 3561, 3563, 3566, 3570, 3573, 3576, 3584, 3590, 3593, 3595, 3604, 3609, 3616, 3619, 3622, 3626, 3630, 3636, 3640, 3647, 3651, 3654, 3657, 3662, 3669, 3679, 3688, 3697, 3707, 3710, 3714, 3720, 3724, 3727, 3730, 3735, 3738, 3745, 3749, 3752, 3756, 3760, 3763, 3766, 3771, 3777, 3781, 3791, 3797, 3801, 3807, 3811, 3817, 3820, 3832, 3836, 3840, 3848, 3852, 3866, 3871, 3874, 3878, 3881, 3889, 3894, 3897, 3900, 3904, 3907, 3916, 3921, 3930, 3935, 3942, 3949, 3957, 3963, 3971, 3974, 3977, 3984, 3987, 3990, 3997, 4000, 4004, 4010, 4020, 4024, 4033, 4036, 4040, 4046, 4054, 4059, 4063, 4069, 4075, 4078, 4080, 4084, 4093, 4103, 4109, 4114, 4118, 4121, 4124, 4127, 4130, 4133, 4136, 4140, 4144, 4152, 4156, 4159, 4161, 4174, 4177, 4184, 4194, 4197, 4202, 4204, 4208, 4216, 4222, 4231, 4244, 4248, 4254, 4259, 4263, 4266, 4270, 4273, 4281, 4284, 4286, 4294, 4306, 4312, 4314, 4320, 4322, 4324, 4330, 4338, 4346, 4350, 4354, 4363, 4368, 4388, 4393, 4399, 4406, 4411, 4420, 4423, 4427, 4431, 4435, 4438, 4441, 4444, 4448, 4452, 4455, 4458, 4461, 4468, 4472, 4487, 4500, 4508, 4518, 4522, 4525, 4531, 4534, 4537, 4546, 4555, 4565, 4569, 4579, 4583, 4594, 4598, 4607, 4616, 4619, 4623, 4628, 4632, 4641, 4644, 4647, 4654, 4660, 4666, 4692, 4695, 4698, 4717, 4719, 4742, 4745, 4748, 4767, 4769, 4783, 4796, 4833, 4838, 4873, 4887, 4894, 4898, 4904, 4912, 4914, 4925, 4935, 4942, 4948, 4956, 4961, 4969, 4977, 4985, 4993, 4999, 5004, 5009, 5014, 5020, 5022, 5033, 5038, 5045, 5047, 5061, 5067, 5072, 5077, 5083, 5090, 5098, 5106, 5111, 5117, 5120, 5128, 5135, 5144, 5147, 5164, 5172, 5180, 5184, 5191, 5197, 5205, 5210, 5217, 5225, 5232, 5237, 5240, 5242, 5248, 5250, 5254, 5256, 5261, 5268, 5273, 5277, 5282, 5286, 5292, 5298, 5303, 5306, 5308, 5314, 5316, 5320, 5322, 5327, 5332, 5339, 5348, 5353, 5362, 5366, 5372, 5377, 5380, 5382, 5388, 5390, 5393, 5400, 5402, 5407, 5414, 5423, 5429, 5431, 5438, 5441, 5453, 5459, 5467, 5470, 5474, 5477, 5481, 5483, 5494, 5497, 5501, 5504, 5507, 5514, 5526, 5529, 5536, 5542, 5552, 5557, 5564, 5569, 5575, 5579, 5583, 5591, 5595, 5599, 5605, 5607, 5619, 5624, 5630, 5636, 5640, 5645, 5647, 5671, 5675, 5678, 5687, 5691, 5700, 5704, 5708, 5714, 5716, 5725, 5735, 5762, 5766, 5771, 5778, 5781, 5787, 5797, 5807, 5817, 5823, 5832, 5838, 5845, 5847, 5855, 5861, 5865, 5882, 5892, 5896, 5900, 5910, 5915, 5987, 6005, 6013, 6019, 6031, 6035, 6046, 6050, 6059, 6067, 6074, 6078, 6085, 6090, 6093, 6096, 6107, 6116, 6125, 6128, 6142, 6160, 6173, 6176, 6180, 6183, 6185, 6192, 6199, 6203, 6210, 6217, 6220, 6236, 6239, 6249, 6253, 6259, 6262, 6265, 6270, 6274, 6277, 6284, 6287, 6293, 6329, 6332, 6344, 6347, 6363, 6365, 6369, 6376, 6380, 6387, 6390, 6399, 6402, 6407, 6413, 6415, 6421, 6425, 6431, 6434, 6437, 6450, 6453, 6459, 6462, 6470, 6478, 6484, 6487, 6491, 6505, 6517, 6525, 6529, 6536, 6543, 6548, 6561, 6570, 6578, 6583, 6586, 6591, 6594, 6606, 6611, 6624, 6626, 6631, 6635, 6638, 6640, 6647, 6654, 6657, 6660, 6666, 6670, 6676, 6684, 6693, 6706, 6711, 6719, 6722, 6727, 6732, 6740, 6743, 6751, 6755, 6762, 6768, 6771, 6775, 6788, 6794, 6806, 6809, 6818, 6823, 6844, 6860, 6870, 6875, 6880, 6882, 6885, 6889, 6891, 6898, 6904, 6906, 6909, 6913, 6916, 6929, 6939, 6942, 6945, 6958, 6964, 6967, 6975, 6982, 7002, 7009, 7011, 7018, 7020, 7024, 7031, 7037, 7048, 7054, 7060, 7063, 7067, 7072, 7075, 7079, 7083, 7085, 7090, 7095, 7108, 7111, 7115, 7118, 7121, 7126, 7131, 7137, 7140, 7145, 7148, 7153, 7156, 7160, 7165, 7170, 7175, 7180, 7183, 7188, 7193, 7198, 7204, 7209, 7214, 7219, 7223, 7226, 7231, 7235, 7239, 7247, 7254, 7258, 7263, 7268, 7272, 7274, 7277, 7293, 7303, 7313, 7322, 7331, 7338, 7345, 7353, 7361, 7373, 7380, 7390, 7395, 7398, 7403, 7406, 7428, 7437, 7440, 7445, 7478, 7482, 7491, 7495, 7504, 7512, 7517, 7525, 7530, 7535, 7537, 7546, 7551, 7559, 7564, 7572, 7580, 7583, 7593, 7611, 7614, 7617, 7621, 7634, 7642, 7646, 7651, 7656, 7662, 7667, 7671, 7676, 7681, 7686, 7696, 7699, 7703, 7707, 7714, 7718, 7747, 7755, 7758, 7761, 7764, 7767, 7778, 7792, 7801, 7828, 7840, 7846, 7854, 7859, 7867, 7875, 7888, 7894, 7900, 7915, 7919, 7925, 7934, 7936, 7957, 7969, 7987, 8004, 8006, 8019, 8028, 8037, 8046, 8055] \ No newline at end of file diff --git a/src/lib/mysql/MySqlParser.ts b/src/lib/mysql/MySqlParser.ts index f9517e89..91a3913e 100644 --- a/src/lib/mysql/MySqlParser.ts +++ b/src/lib/mysql/MySqlParser.ts @@ -929,406 +929,408 @@ export class MySqlParser extends SQLParserBase { public static readonly RULE_createIndex = 14; public static readonly RULE_createLogfileGroup = 15; public static readonly RULE_createProcedure = 16; - public static readonly RULE_createRole = 17; - public static readonly RULE_createServer = 18; - public static readonly RULE_createTable = 19; - public static readonly RULE_createTablespaceInnodb = 20; - public static readonly RULE_createTablespaceNdb = 21; - public static readonly RULE_createTrigger = 22; - public static readonly RULE_withClause = 23; - public static readonly RULE_commonTableExpressions = 24; - public static readonly RULE_createView = 25; - public static readonly RULE_createDatabaseOption = 26; - public static readonly RULE_charSet = 27; - public static readonly RULE_currentUserExpression = 28; - public static readonly RULE_ownerStatement = 29; - public static readonly RULE_scheduleExpression = 30; - public static readonly RULE_timestampValue = 31; - public static readonly RULE_intervalExpr = 32; - public static readonly RULE_intervalType = 33; - public static readonly RULE_enableType = 34; - public static readonly RULE_indexType = 35; - public static readonly RULE_indexOption = 36; - public static readonly RULE_procedureParameter = 37; - public static readonly RULE_routineOption = 38; - public static readonly RULE_serverOption = 39; - public static readonly RULE_createDefinitions = 40; - public static readonly RULE_createDefinition = 41; - public static readonly RULE_checkConstraintDefinition = 42; - public static readonly RULE_constraintSymbol = 43; - public static readonly RULE_columnDefinition = 44; - public static readonly RULE_columnConstraint = 45; - public static readonly RULE_referenceDefinition = 46; - public static readonly RULE_referenceAction = 47; - public static readonly RULE_referenceControlType = 48; - public static readonly RULE_tableOption = 49; - public static readonly RULE_tableType = 50; - public static readonly RULE_tablespaceStorage = 51; - public static readonly RULE_partitionDefinitions = 52; - public static readonly RULE_partitionFunctionDefinition = 53; - public static readonly RULE_subpartitionFunctionDefinition = 54; - public static readonly RULE_partitionDefinition = 55; - public static readonly RULE_partitionDefinerAtom = 56; - public static readonly RULE_partitionDefinerVector = 57; - public static readonly RULE_subpartitionDefinition = 58; - public static readonly RULE_partitionOption = 59; - public static readonly RULE_alterDatabase = 60; - public static readonly RULE_alterEvent = 61; - public static readonly RULE_alterFunction = 62; - public static readonly RULE_alterInstance = 63; - public static readonly RULE_alterLogfileGroup = 64; - public static readonly RULE_alterProcedure = 65; - public static readonly RULE_alterServer = 66; - public static readonly RULE_alterTable = 67; - public static readonly RULE_alterTablespace = 68; - public static readonly RULE_alterView = 69; - public static readonly RULE_alterOption = 70; - public static readonly RULE_alterPartitionSpecification = 71; - public static readonly RULE_dropDatabase = 72; - public static readonly RULE_dropEvent = 73; - public static readonly RULE_dropIndex = 74; - public static readonly RULE_dropLogfileGroup = 75; - public static readonly RULE_dropProcedure = 76; - public static readonly RULE_dropFunction = 77; - public static readonly RULE_dropServer = 78; - public static readonly RULE_dropSpatial = 79; - public static readonly RULE_dropTable = 80; - public static readonly RULE_dropTablespace = 81; - public static readonly RULE_dropTrigger = 82; - public static readonly RULE_dropView = 83; - public static readonly RULE_dropRole = 84; - public static readonly RULE_setRole = 85; - public static readonly RULE_renameTable = 86; - public static readonly RULE_renameTableClause = 87; - public static readonly RULE_truncateTable = 88; - public static readonly RULE_callStatement = 89; - public static readonly RULE_deleteStatement = 90; - public static readonly RULE_doStatement = 91; - public static readonly RULE_handlerStatement = 92; - public static readonly RULE_insertStatement = 93; - public static readonly RULE_asRowAlias = 94; - public static readonly RULE_selectOrTableOrValues = 95; - public static readonly RULE_interSectStatement = 96; - public static readonly RULE_interSectQuery = 97; - public static readonly RULE_loadDataStatement = 98; - public static readonly RULE_loadXmlStatement = 99; - public static readonly RULE_parenthesizedQuery = 100; - public static readonly RULE_replaceStatement = 101; - public static readonly RULE_selectStatement = 102; - public static readonly RULE_setOperations = 103; - public static readonly RULE_queryExpressionBody = 104; - public static readonly RULE_queryItem = 105; - public static readonly RULE_queryPrimary = 106; - public static readonly RULE_updateStatement = 107; - public static readonly RULE_valuesStatement = 108; - public static readonly RULE_parenthesizedQueryExpression = 109; - public static readonly RULE_queryBlock = 110; - public static readonly RULE_replaceStatementValuesOrSelectOrTable = 111; - public static readonly RULE_rowValuesList = 112; - public static readonly RULE_setAssignmentList = 113; - public static readonly RULE_updatedElement = 114; - public static readonly RULE_assignmentField = 115; - public static readonly RULE_lockClause = 116; - public static readonly RULE_singleDeleteStatement = 117; - public static readonly RULE_multipleDeleteStatement = 118; - public static readonly RULE_handlerOpenStatement = 119; - public static readonly RULE_handlerReadIndexStatement = 120; - public static readonly RULE_handlerReadStatement = 121; - public static readonly RULE_handlerCloseStatement = 122; - public static readonly RULE_importTableStatement = 123; - public static readonly RULE_singleUpdateStatement = 124; - public static readonly RULE_multipleUpdateStatement = 125; - public static readonly RULE_orderByClause = 126; - public static readonly RULE_orderByExpression = 127; - public static readonly RULE_tableSources = 128; - public static readonly RULE_tableSource = 129; - public static readonly RULE_tableSourceItem = 130; - public static readonly RULE_fullColumnNames = 131; - public static readonly RULE_indexHint = 132; - public static readonly RULE_indexHintType = 133; - public static readonly RULE_joinPart = 134; - public static readonly RULE_joinSpec = 135; - public static readonly RULE_queryExpression = 136; - public static readonly RULE_querySpecification = 137; - public static readonly RULE_unionStatement = 138; - public static readonly RULE_lateralStatement = 139; - public static readonly RULE_jsonTable = 140; - public static readonly RULE_jsonColumnList = 141; - public static readonly RULE_jsonColumn = 142; - public static readonly RULE_jsonOnEmpty = 143; - public static readonly RULE_jsonOnError = 144; - public static readonly RULE_selectSpec = 145; - public static readonly RULE_selectElements = 146; - public static readonly RULE_selectElement = 147; - public static readonly RULE_intoClause = 148; - public static readonly RULE_selectFieldsInto = 149; - public static readonly RULE_selectLinesInto = 150; - public static readonly RULE_fromClause = 151; - public static readonly RULE_groupByClause = 152; - public static readonly RULE_havingClause = 153; - public static readonly RULE_windowClause = 154; - public static readonly RULE_groupByItem = 155; - public static readonly RULE_limitClause = 156; - public static readonly RULE_limitClauseAtom = 157; - public static readonly RULE_startTransaction = 158; - public static readonly RULE_beginWork = 159; - public static readonly RULE_commitWork = 160; - public static readonly RULE_rollbackWork = 161; - public static readonly RULE_savepointStatement = 162; - public static readonly RULE_rollbackStatement = 163; - public static readonly RULE_releaseStatement = 164; - public static readonly RULE_lockTables = 165; - public static readonly RULE_unlockTables = 166; - public static readonly RULE_setAutocommitStatement = 167; - public static readonly RULE_setTransactionStatement = 168; - public static readonly RULE_transactionMode = 169; - public static readonly RULE_lockTableElement = 170; - public static readonly RULE_lockAction = 171; - public static readonly RULE_transactionOption = 172; - public static readonly RULE_transactionLevel = 173; - public static readonly RULE_changeMaster = 174; - public static readonly RULE_changeReplicationFilter = 175; - public static readonly RULE_changeReplicationSource = 176; - public static readonly RULE_purgeBinaryLogs = 177; - public static readonly RULE_startSlaveOrReplica = 178; - public static readonly RULE_stopSlaveOrReplica = 179; - public static readonly RULE_startGroupReplication = 180; - public static readonly RULE_stopGroupReplication = 181; - public static readonly RULE_masterOption = 182; - public static readonly RULE_stringMasterOption = 183; - public static readonly RULE_decimalMasterOption = 184; - public static readonly RULE_boolMasterOption = 185; - public static readonly RULE_v8NewMasterOption = 186; - public static readonly RULE_replicationSourceOption = 187; - public static readonly RULE_stringSourceOption = 188; - public static readonly RULE_decimalSourceOption = 189; - public static readonly RULE_boolSourceOption = 190; - public static readonly RULE_otherSourceOption = 191; - public static readonly RULE_channelOption = 192; - public static readonly RULE_replicationFilter = 193; - public static readonly RULE_tablePair = 194; - public static readonly RULE_threadType = 195; - public static readonly RULE_untilOption = 196; - public static readonly RULE_connectionOptions = 197; - public static readonly RULE_gtuidSet = 198; - public static readonly RULE_xaStartTransaction = 199; - public static readonly RULE_xaEndTransaction = 200; - public static readonly RULE_xaPrepareStatement = 201; - public static readonly RULE_xaCommitWork = 202; - public static readonly RULE_xaRollbackWork = 203; - public static readonly RULE_xaRecoverWork = 204; - public static readonly RULE_prepareStatement = 205; - public static readonly RULE_executeStatement = 206; - public static readonly RULE_deallocatePrepare = 207; - public static readonly RULE_routineBody = 208; - public static readonly RULE_blockStatement = 209; - public static readonly RULE_caseStatement = 210; - public static readonly RULE_ifStatement = 211; - public static readonly RULE_iterateStatement = 212; - public static readonly RULE_leaveStatement = 213; - public static readonly RULE_loopStatement = 214; - public static readonly RULE_repeatStatement = 215; - public static readonly RULE_returnStatement = 216; - public static readonly RULE_whileStatement = 217; - public static readonly RULE_cursorStatement = 218; - public static readonly RULE_declareVariable = 219; - public static readonly RULE_declareCondition = 220; - public static readonly RULE_declareCursor = 221; - public static readonly RULE_declareHandler = 222; - public static readonly RULE_handlerConditionValue = 223; - public static readonly RULE_procedureSqlStatement = 224; - public static readonly RULE_caseAlternative = 225; - public static readonly RULE_elifAlternative = 226; - public static readonly RULE_alterUser = 227; - public static readonly RULE_createUser = 228; - public static readonly RULE_dropUser = 229; - public static readonly RULE_grantStatement = 230; - public static readonly RULE_roleOption = 231; - public static readonly RULE_grantProxy = 232; - public static readonly RULE_alterResourceGroup = 233; - public static readonly RULE_createResourceGroup = 234; - public static readonly RULE_dropResourceGroup = 235; - public static readonly RULE_setResourceGroup = 236; - public static readonly RULE_resourceGroupVcpuSpec = 237; - public static readonly RULE_renameUser = 238; - public static readonly RULE_revokeStatement = 239; - public static readonly RULE_ignoreUnknownUser = 240; - public static readonly RULE_privilegeObjectType = 241; - public static readonly RULE_setPasswordStatement = 242; - public static readonly RULE_userSpecification = 243; - public static readonly RULE_alterUserAuthOption = 244; - public static readonly RULE_createUserAuthOption = 245; - public static readonly RULE_createUserInitialAuthOption = 246; - public static readonly RULE_userAuthOption = 247; - public static readonly RULE_authOptionClause = 248; - public static readonly RULE_authenticationRule = 249; - public static readonly RULE_tlsOption = 250; - public static readonly RULE_userResourceOption = 251; - public static readonly RULE_userPasswordOption = 252; - public static readonly RULE_userLockOption = 253; - public static readonly RULE_factorAuthOption = 254; - public static readonly RULE_registrationOption = 255; - public static readonly RULE_factor = 256; - public static readonly RULE_privelegeClause = 257; - public static readonly RULE_privilege = 258; - public static readonly RULE_privilegeLevel = 259; - public static readonly RULE_renameUserClause = 260; - public static readonly RULE_analyzeTable = 261; - public static readonly RULE_checkTable = 262; - public static readonly RULE_checksumTable = 263; - public static readonly RULE_optimizeTable = 264; - public static readonly RULE_repairTable = 265; - public static readonly RULE_tableActionOption = 266; - public static readonly RULE_checkTableOption = 267; - public static readonly RULE_createFunction = 268; - public static readonly RULE_installComponent = 269; - public static readonly RULE_variableExpr = 270; - public static readonly RULE_uninstallComponent = 271; - public static readonly RULE_installPlugin = 272; - public static readonly RULE_uninstallPlugin = 273; - public static readonly RULE_cloneStatement = 274; - public static readonly RULE_setStatement = 275; - public static readonly RULE_showStatement = 276; - public static readonly RULE_variableClause = 277; - public static readonly RULE_showCommonEntity = 278; - public static readonly RULE_showFilter = 279; - public static readonly RULE_showGlobalInfoClause = 280; - public static readonly RULE_showSchemaEntity = 281; - public static readonly RULE_showProfileType = 282; - public static readonly RULE_binlogStatement = 283; - public static readonly RULE_cacheIndexStatement = 284; - public static readonly RULE_flushStatement = 285; - public static readonly RULE_killStatement = 286; - public static readonly RULE_loadIndexIntoCache = 287; - public static readonly RULE_resetStatement = 288; - public static readonly RULE_resetOption = 289; - public static readonly RULE_resetPersist = 290; - public static readonly RULE_resetAllChannel = 291; - public static readonly RULE_reStartStatement = 292; - public static readonly RULE_shutdownStatement = 293; - public static readonly RULE_tableIndex = 294; - public static readonly RULE_flushOption = 295; - public static readonly RULE_flushTableOption = 296; - public static readonly RULE_loadedTableIndexes = 297; - public static readonly RULE_simpleDescribeStatement = 298; - public static readonly RULE_fullDescribeStatement = 299; - public static readonly RULE_analyzeDescribeStatement = 300; - public static readonly RULE_helpStatement = 301; - public static readonly RULE_useStatement = 302; - public static readonly RULE_signalStatement = 303; - public static readonly RULE_resignalStatement = 304; - public static readonly RULE_signalConditionInformation = 305; - public static readonly RULE_withStatement = 306; - public static readonly RULE_tableStatement = 307; - public static readonly RULE_diagnosticsStatement = 308; - public static readonly RULE_diagnosticsConditionInformationName = 309; - public static readonly RULE_describeObjectClause = 310; - public static readonly RULE_databaseNameCreate = 311; - public static readonly RULE_databaseName = 312; - public static readonly RULE_functionNameCreate = 313; - public static readonly RULE_functionName = 314; - public static readonly RULE_viewNameCreate = 315; - public static readonly RULE_viewName = 316; - public static readonly RULE_indexNameCreate = 317; - public static readonly RULE_indexNames = 318; - public static readonly RULE_indexName = 319; - public static readonly RULE_groupNameCreate = 320; - public static readonly RULE_groupName = 321; - public static readonly RULE_tableNameCreate = 322; - public static readonly RULE_tableNames = 323; - public static readonly RULE_tableName = 324; - public static readonly RULE_userOrRoleNames = 325; - public static readonly RULE_userOrRoleName = 326; - public static readonly RULE_columnNameCreate = 327; - public static readonly RULE_columnNames = 328; - public static readonly RULE_columnName = 329; - public static readonly RULE_tablespaceNameCreate = 330; - public static readonly RULE_tablespaceName = 331; - public static readonly RULE_partitionNameCreate = 332; - public static readonly RULE_partitionNames = 333; - public static readonly RULE_partitionName = 334; - public static readonly RULE_indexColumnName = 335; - public static readonly RULE_userHostPort = 336; - public static readonly RULE_userAtHost = 337; - public static readonly RULE_simpleUserName = 338; - public static readonly RULE_hostName = 339; - public static readonly RULE_userName = 340; - public static readonly RULE_mysqlVariable = 341; - public static readonly RULE_charsetName = 342; - public static readonly RULE_collationName = 343; - public static readonly RULE_engineName = 344; - public static readonly RULE_engineNameBase = 345; - public static readonly RULE_uuidSet = 346; - public static readonly RULE_xid = 347; - public static readonly RULE_xuidStringId = 348; - public static readonly RULE_fullId = 349; - public static readonly RULE_uidList = 350; - public static readonly RULE_uid = 351; - public static readonly RULE_simpleId = 352; - public static readonly RULE_dottedId = 353; - public static readonly RULE_decimalLiteral = 354; - public static readonly RULE_fileSizeLiteral = 355; - public static readonly RULE_stringLiteral = 356; - public static readonly RULE_booleanLiteral = 357; - public static readonly RULE_hexadecimalLiteral = 358; - public static readonly RULE_nullNotnull = 359; - public static readonly RULE_constant = 360; - public static readonly RULE_dataType = 361; - public static readonly RULE_collectionOptions = 362; - public static readonly RULE_convertedDataType = 363; - public static readonly RULE_lengthOneDimension = 364; - public static readonly RULE_lengthTwoDimension = 365; - public static readonly RULE_lengthTwoOptionalDimension = 366; - public static readonly RULE_indexColumnNames = 367; - public static readonly RULE_expressions = 368; - public static readonly RULE_valuesOrValueList = 369; - public static readonly RULE_expressionsWithDefaults = 370; - public static readonly RULE_expressionOrDefault = 371; - public static readonly RULE_constants = 372; - public static readonly RULE_simpleStrings = 373; - public static readonly RULE_userVariables = 374; - public static readonly RULE_defaultValue = 375; - public static readonly RULE_currentTimestamp = 376; - public static readonly RULE_ifExists = 377; - public static readonly RULE_ifNotExists = 378; - public static readonly RULE_orReplace = 379; - public static readonly RULE_functionCall = 380; - public static readonly RULE_specificFunction = 381; - public static readonly RULE_caseFuncAlternative = 382; - public static readonly RULE_levelsInWeightString = 383; - public static readonly RULE_levelInWeightListElement = 384; - public static readonly RULE_aggregateWindowedFunction = 385; - public static readonly RULE_nonAggregateWindowedFunction = 386; - public static readonly RULE_overClause = 387; - public static readonly RULE_windowSpec = 388; - public static readonly RULE_windowName = 389; - public static readonly RULE_frameClause = 390; - public static readonly RULE_frameUnits = 391; - public static readonly RULE_frameExtent = 392; - public static readonly RULE_frameBetween = 393; - public static readonly RULE_frameRange = 394; - public static readonly RULE_partitionClause = 395; - public static readonly RULE_scalarFunctionName = 396; - public static readonly RULE_passwordFunctionClause = 397; - public static readonly RULE_functionArgs = 398; - public static readonly RULE_functionArg = 399; - public static readonly RULE_expression = 400; - public static readonly RULE_predicate = 401; - public static readonly RULE_expressionAtom = 402; - public static readonly RULE_unaryOperator = 403; - public static readonly RULE_comparisonOperator = 404; - public static readonly RULE_comparisonBase = 405; - public static readonly RULE_logicalOperator = 406; - public static readonly RULE_bitOperator = 407; - public static readonly RULE_mathOperator = 408; - public static readonly RULE_jsonOperator = 409; - public static readonly RULE_charsetNameBase = 410; - public static readonly RULE_transactionLevelBase = 411; - public static readonly RULE_privilegesBase = 412; - public static readonly RULE_intervalTypeBase = 413; - public static readonly RULE_dataTypeBase = 414; - public static readonly RULE_keywordsCanBeId = 415; - public static readonly RULE_functionNameBase = 416; + public static readonly RULE_createFunction = 17; + public static readonly RULE_createFunctionLoadable = 18; + public static readonly RULE_createRole = 19; + public static readonly RULE_createServer = 20; + public static readonly RULE_createTable = 21; + public static readonly RULE_createTablespaceInnodb = 22; + public static readonly RULE_createTablespaceNdb = 23; + public static readonly RULE_createTrigger = 24; + public static readonly RULE_withClause = 25; + public static readonly RULE_commonTableExpressions = 26; + public static readonly RULE_createView = 27; + public static readonly RULE_createDatabaseOption = 28; + public static readonly RULE_charSet = 29; + public static readonly RULE_currentUserExpression = 30; + public static readonly RULE_ownerStatement = 31; + public static readonly RULE_scheduleExpression = 32; + public static readonly RULE_timestampValue = 33; + public static readonly RULE_intervalExpr = 34; + public static readonly RULE_intervalType = 35; + public static readonly RULE_enableType = 36; + public static readonly RULE_indexType = 37; + public static readonly RULE_indexOption = 38; + public static readonly RULE_procedureParameter = 39; + public static readonly RULE_functionParameter = 40; + public static readonly RULE_routineOption = 41; + public static readonly RULE_serverOption = 42; + public static readonly RULE_createDefinitions = 43; + public static readonly RULE_createDefinition = 44; + public static readonly RULE_checkConstraintDefinition = 45; + public static readonly RULE_constraintSymbol = 46; + public static readonly RULE_columnDefinition = 47; + public static readonly RULE_columnConstraint = 48; + public static readonly RULE_referenceDefinition = 49; + public static readonly RULE_referenceAction = 50; + public static readonly RULE_referenceControlType = 51; + public static readonly RULE_tableOption = 52; + public static readonly RULE_tableType = 53; + public static readonly RULE_tablespaceStorage = 54; + public static readonly RULE_partitionDefinitions = 55; + public static readonly RULE_partitionFunctionDefinition = 56; + public static readonly RULE_subpartitionFunctionDefinition = 57; + public static readonly RULE_partitionDefinition = 58; + public static readonly RULE_partitionDefinerAtom = 59; + public static readonly RULE_partitionDefinerVector = 60; + public static readonly RULE_subpartitionDefinition = 61; + public static readonly RULE_partitionOption = 62; + public static readonly RULE_alterDatabase = 63; + public static readonly RULE_alterEvent = 64; + public static readonly RULE_alterFunction = 65; + public static readonly RULE_alterInstance = 66; + public static readonly RULE_alterLogfileGroup = 67; + public static readonly RULE_alterProcedure = 68; + public static readonly RULE_alterServer = 69; + public static readonly RULE_alterTable = 70; + public static readonly RULE_alterTablespace = 71; + public static readonly RULE_alterView = 72; + public static readonly RULE_alterOption = 73; + public static readonly RULE_alterPartitionSpecification = 74; + public static readonly RULE_dropDatabase = 75; + public static readonly RULE_dropEvent = 76; + public static readonly RULE_dropIndex = 77; + public static readonly RULE_dropLogfileGroup = 78; + public static readonly RULE_dropProcedure = 79; + public static readonly RULE_dropFunction = 80; + public static readonly RULE_dropServer = 81; + public static readonly RULE_dropSpatial = 82; + public static readonly RULE_dropTable = 83; + public static readonly RULE_dropTablespace = 84; + public static readonly RULE_dropTrigger = 85; + public static readonly RULE_dropView = 86; + public static readonly RULE_dropRole = 87; + public static readonly RULE_setRole = 88; + public static readonly RULE_renameTable = 89; + public static readonly RULE_renameTableClause = 90; + public static readonly RULE_truncateTable = 91; + public static readonly RULE_callStatement = 92; + public static readonly RULE_deleteStatement = 93; + public static readonly RULE_doStatement = 94; + public static readonly RULE_handlerStatement = 95; + public static readonly RULE_insertStatement = 96; + public static readonly RULE_asRowAlias = 97; + public static readonly RULE_selectOrTableOrValues = 98; + public static readonly RULE_interSectStatement = 99; + public static readonly RULE_interSectQuery = 100; + public static readonly RULE_loadDataStatement = 101; + public static readonly RULE_loadXmlStatement = 102; + public static readonly RULE_parenthesizedQuery = 103; + public static readonly RULE_replaceStatement = 104; + public static readonly RULE_selectStatement = 105; + public static readonly RULE_setOperations = 106; + public static readonly RULE_queryExpressionBody = 107; + public static readonly RULE_queryItem = 108; + public static readonly RULE_queryPrimary = 109; + public static readonly RULE_updateStatement = 110; + public static readonly RULE_valuesStatement = 111; + public static readonly RULE_parenthesizedQueryExpression = 112; + public static readonly RULE_queryBlock = 113; + public static readonly RULE_replaceStatementValuesOrSelectOrTable = 114; + public static readonly RULE_rowValuesList = 115; + public static readonly RULE_setAssignmentList = 116; + public static readonly RULE_updatedElement = 117; + public static readonly RULE_assignmentField = 118; + public static readonly RULE_lockClause = 119; + public static readonly RULE_singleDeleteStatement = 120; + public static readonly RULE_multipleDeleteStatement = 121; + public static readonly RULE_handlerOpenStatement = 122; + public static readonly RULE_handlerReadIndexStatement = 123; + public static readonly RULE_handlerReadStatement = 124; + public static readonly RULE_handlerCloseStatement = 125; + public static readonly RULE_importTableStatement = 126; + public static readonly RULE_singleUpdateStatement = 127; + public static readonly RULE_multipleUpdateStatement = 128; + public static readonly RULE_orderByClause = 129; + public static readonly RULE_orderByExpression = 130; + public static readonly RULE_tableSources = 131; + public static readonly RULE_tableSource = 132; + public static readonly RULE_tableSourceItem = 133; + public static readonly RULE_fullColumnNames = 134; + public static readonly RULE_indexHint = 135; + public static readonly RULE_indexHintType = 136; + public static readonly RULE_joinPart = 137; + public static readonly RULE_joinSpec = 138; + public static readonly RULE_queryExpression = 139; + public static readonly RULE_querySpecification = 140; + public static readonly RULE_unionStatement = 141; + public static readonly RULE_lateralStatement = 142; + public static readonly RULE_jsonTable = 143; + public static readonly RULE_jsonColumnList = 144; + public static readonly RULE_jsonColumn = 145; + public static readonly RULE_jsonOnEmpty = 146; + public static readonly RULE_jsonOnError = 147; + public static readonly RULE_selectSpec = 148; + public static readonly RULE_selectElements = 149; + public static readonly RULE_selectElement = 150; + public static readonly RULE_intoClause = 151; + public static readonly RULE_selectFieldsInto = 152; + public static readonly RULE_selectLinesInto = 153; + public static readonly RULE_fromClause = 154; + public static readonly RULE_groupByClause = 155; + public static readonly RULE_havingClause = 156; + public static readonly RULE_windowClause = 157; + public static readonly RULE_groupByItem = 158; + public static readonly RULE_limitClause = 159; + public static readonly RULE_limitClauseAtom = 160; + public static readonly RULE_startTransaction = 161; + public static readonly RULE_beginWork = 162; + public static readonly RULE_commitWork = 163; + public static readonly RULE_rollbackWork = 164; + public static readonly RULE_savepointStatement = 165; + public static readonly RULE_rollbackStatement = 166; + public static readonly RULE_releaseStatement = 167; + public static readonly RULE_lockTables = 168; + public static readonly RULE_unlockTables = 169; + public static readonly RULE_setAutocommitStatement = 170; + public static readonly RULE_setTransactionStatement = 171; + public static readonly RULE_transactionMode = 172; + public static readonly RULE_lockTableElement = 173; + public static readonly RULE_lockAction = 174; + public static readonly RULE_transactionOption = 175; + public static readonly RULE_transactionLevel = 176; + public static readonly RULE_changeMaster = 177; + public static readonly RULE_changeReplicationFilter = 178; + public static readonly RULE_changeReplicationSource = 179; + public static readonly RULE_purgeBinaryLogs = 180; + public static readonly RULE_startSlaveOrReplica = 181; + public static readonly RULE_stopSlaveOrReplica = 182; + public static readonly RULE_startGroupReplication = 183; + public static readonly RULE_stopGroupReplication = 184; + public static readonly RULE_masterOption = 185; + public static readonly RULE_stringMasterOption = 186; + public static readonly RULE_decimalMasterOption = 187; + public static readonly RULE_boolMasterOption = 188; + public static readonly RULE_v8NewMasterOption = 189; + public static readonly RULE_replicationSourceOption = 190; + public static readonly RULE_stringSourceOption = 191; + public static readonly RULE_decimalSourceOption = 192; + public static readonly RULE_boolSourceOption = 193; + public static readonly RULE_otherSourceOption = 194; + public static readonly RULE_channelOption = 195; + public static readonly RULE_replicationFilter = 196; + public static readonly RULE_tablePair = 197; + public static readonly RULE_threadType = 198; + public static readonly RULE_untilOption = 199; + public static readonly RULE_connectionOptions = 200; + public static readonly RULE_gtuidSet = 201; + public static readonly RULE_xaStartTransaction = 202; + public static readonly RULE_xaEndTransaction = 203; + public static readonly RULE_xaPrepareStatement = 204; + public static readonly RULE_xaCommitWork = 205; + public static readonly RULE_xaRollbackWork = 206; + public static readonly RULE_xaRecoverWork = 207; + public static readonly RULE_prepareStatement = 208; + public static readonly RULE_executeStatement = 209; + public static readonly RULE_deallocatePrepare = 210; + public static readonly RULE_routineBody = 211; + public static readonly RULE_blockStatement = 212; + public static readonly RULE_caseStatement = 213; + public static readonly RULE_ifStatement = 214; + public static readonly RULE_iterateStatement = 215; + public static readonly RULE_leaveStatement = 216; + public static readonly RULE_loopStatement = 217; + public static readonly RULE_repeatStatement = 218; + public static readonly RULE_returnStatement = 219; + public static readonly RULE_whileStatement = 220; + public static readonly RULE_cursorStatement = 221; + public static readonly RULE_declareVariable = 222; + public static readonly RULE_declareCondition = 223; + public static readonly RULE_declareCursor = 224; + public static readonly RULE_declareHandler = 225; + public static readonly RULE_handlerConditionValue = 226; + public static readonly RULE_procedureSqlStatement = 227; + public static readonly RULE_caseAlternative = 228; + public static readonly RULE_elifAlternative = 229; + public static readonly RULE_alterUser = 230; + public static readonly RULE_createUser = 231; + public static readonly RULE_dropUser = 232; + public static readonly RULE_grantStatement = 233; + public static readonly RULE_roleOption = 234; + public static readonly RULE_grantProxy = 235; + public static readonly RULE_alterResourceGroup = 236; + public static readonly RULE_createResourceGroup = 237; + public static readonly RULE_dropResourceGroup = 238; + public static readonly RULE_setResourceGroup = 239; + public static readonly RULE_resourceGroupVcpuSpec = 240; + public static readonly RULE_renameUser = 241; + public static readonly RULE_revokeStatement = 242; + public static readonly RULE_ignoreUnknownUser = 243; + public static readonly RULE_privilegeObjectType = 244; + public static readonly RULE_setPasswordStatement = 245; + public static readonly RULE_userSpecification = 246; + public static readonly RULE_alterUserAuthOption = 247; + public static readonly RULE_createUserAuthOption = 248; + public static readonly RULE_createUserInitialAuthOption = 249; + public static readonly RULE_userAuthOption = 250; + public static readonly RULE_authOptionClause = 251; + public static readonly RULE_authenticationRule = 252; + public static readonly RULE_tlsOption = 253; + public static readonly RULE_userResourceOption = 254; + public static readonly RULE_userPasswordOption = 255; + public static readonly RULE_userLockOption = 256; + public static readonly RULE_factorAuthOption = 257; + public static readonly RULE_registrationOption = 258; + public static readonly RULE_factor = 259; + public static readonly RULE_privelegeClause = 260; + public static readonly RULE_privilege = 261; + public static readonly RULE_privilegeLevel = 262; + public static readonly RULE_renameUserClause = 263; + public static readonly RULE_analyzeTable = 264; + public static readonly RULE_checkTable = 265; + public static readonly RULE_checksumTable = 266; + public static readonly RULE_optimizeTable = 267; + public static readonly RULE_repairTable = 268; + public static readonly RULE_tableActionOption = 269; + public static readonly RULE_checkTableOption = 270; + public static readonly RULE_installComponent = 271; + public static readonly RULE_variableExpr = 272; + public static readonly RULE_uninstallComponent = 273; + public static readonly RULE_installPlugin = 274; + public static readonly RULE_uninstallPlugin = 275; + public static readonly RULE_cloneStatement = 276; + public static readonly RULE_setStatement = 277; + public static readonly RULE_showStatement = 278; + public static readonly RULE_variableClause = 279; + public static readonly RULE_showCommonEntity = 280; + public static readonly RULE_showFilter = 281; + public static readonly RULE_showGlobalInfoClause = 282; + public static readonly RULE_showSchemaEntity = 283; + public static readonly RULE_showProfileType = 284; + public static readonly RULE_binlogStatement = 285; + public static readonly RULE_cacheIndexStatement = 286; + public static readonly RULE_flushStatement = 287; + public static readonly RULE_killStatement = 288; + public static readonly RULE_loadIndexIntoCache = 289; + public static readonly RULE_resetStatement = 290; + public static readonly RULE_resetOption = 291; + public static readonly RULE_resetPersist = 292; + public static readonly RULE_resetAllChannel = 293; + public static readonly RULE_reStartStatement = 294; + public static readonly RULE_shutdownStatement = 295; + public static readonly RULE_tableIndex = 296; + public static readonly RULE_flushOption = 297; + public static readonly RULE_flushTableOption = 298; + public static readonly RULE_loadedTableIndexes = 299; + public static readonly RULE_simpleDescribeStatement = 300; + public static readonly RULE_fullDescribeStatement = 301; + public static readonly RULE_analyzeDescribeStatement = 302; + public static readonly RULE_helpStatement = 303; + public static readonly RULE_useStatement = 304; + public static readonly RULE_signalStatement = 305; + public static readonly RULE_resignalStatement = 306; + public static readonly RULE_signalConditionInformation = 307; + public static readonly RULE_withStatement = 308; + public static readonly RULE_tableStatement = 309; + public static readonly RULE_diagnosticsStatement = 310; + public static readonly RULE_diagnosticsConditionInformationName = 311; + public static readonly RULE_describeObjectClause = 312; + public static readonly RULE_databaseNameCreate = 313; + public static readonly RULE_databaseName = 314; + public static readonly RULE_functionNameCreate = 315; + public static readonly RULE_functionName = 316; + public static readonly RULE_viewNameCreate = 317; + public static readonly RULE_viewName = 318; + public static readonly RULE_indexNameCreate = 319; + public static readonly RULE_indexNames = 320; + public static readonly RULE_indexName = 321; + public static readonly RULE_groupNameCreate = 322; + public static readonly RULE_groupName = 323; + public static readonly RULE_tableNameCreate = 324; + public static readonly RULE_tableNames = 325; + public static readonly RULE_tableName = 326; + public static readonly RULE_userOrRoleNames = 327; + public static readonly RULE_userOrRoleName = 328; + public static readonly RULE_columnNameCreate = 329; + public static readonly RULE_columnNames = 330; + public static readonly RULE_columnName = 331; + public static readonly RULE_tablespaceNameCreate = 332; + public static readonly RULE_tablespaceName = 333; + public static readonly RULE_partitionNameCreate = 334; + public static readonly RULE_partitionNames = 335; + public static readonly RULE_partitionName = 336; + public static readonly RULE_indexColumnName = 337; + public static readonly RULE_userHostPort = 338; + public static readonly RULE_userAtHost = 339; + public static readonly RULE_simpleUserName = 340; + public static readonly RULE_hostName = 341; + public static readonly RULE_userName = 342; + public static readonly RULE_mysqlVariable = 343; + public static readonly RULE_charsetName = 344; + public static readonly RULE_collationName = 345; + public static readonly RULE_engineName = 346; + public static readonly RULE_engineNameBase = 347; + public static readonly RULE_uuidSet = 348; + public static readonly RULE_xid = 349; + public static readonly RULE_xuidStringId = 350; + public static readonly RULE_fullId = 351; + public static readonly RULE_uidList = 352; + public static readonly RULE_uid = 353; + public static readonly RULE_simpleId = 354; + public static readonly RULE_dottedId = 355; + public static readonly RULE_decimalLiteral = 356; + public static readonly RULE_fileSizeLiteral = 357; + public static readonly RULE_stringLiteral = 358; + public static readonly RULE_booleanLiteral = 359; + public static readonly RULE_hexadecimalLiteral = 360; + public static readonly RULE_nullNotnull = 361; + public static readonly RULE_constant = 362; + public static readonly RULE_dataType = 363; + public static readonly RULE_collectionOptions = 364; + public static readonly RULE_convertedDataType = 365; + public static readonly RULE_lengthOneDimension = 366; + public static readonly RULE_lengthTwoDimension = 367; + public static readonly RULE_lengthTwoOptionalDimension = 368; + public static readonly RULE_indexColumnNames = 369; + public static readonly RULE_expressions = 370; + public static readonly RULE_valuesOrValueList = 371; + public static readonly RULE_expressionsWithDefaults = 372; + public static readonly RULE_expressionOrDefault = 373; + public static readonly RULE_constants = 374; + public static readonly RULE_simpleStrings = 375; + public static readonly RULE_userVariables = 376; + public static readonly RULE_defaultValue = 377; + public static readonly RULE_currentTimestamp = 378; + public static readonly RULE_ifExists = 379; + public static readonly RULE_ifNotExists = 380; + public static readonly RULE_orReplace = 381; + public static readonly RULE_functionCall = 382; + public static readonly RULE_specificFunction = 383; + public static readonly RULE_caseFuncAlternative = 384; + public static readonly RULE_levelsInWeightString = 385; + public static readonly RULE_levelInWeightListElement = 386; + public static readonly RULE_aggregateWindowedFunction = 387; + public static readonly RULE_nonAggregateWindowedFunction = 388; + public static readonly RULE_overClause = 389; + public static readonly RULE_windowSpec = 390; + public static readonly RULE_windowName = 391; + public static readonly RULE_frameClause = 392; + public static readonly RULE_frameUnits = 393; + public static readonly RULE_frameExtent = 394; + public static readonly RULE_frameBetween = 395; + public static readonly RULE_frameRange = 396; + public static readonly RULE_partitionClause = 397; + public static readonly RULE_scalarFunctionName = 398; + public static readonly RULE_passwordFunctionClause = 399; + public static readonly RULE_functionArgs = 400; + public static readonly RULE_functionArg = 401; + public static readonly RULE_expression = 402; + public static readonly RULE_predicate = 403; + public static readonly RULE_expressionAtom = 404; + public static readonly RULE_unaryOperator = 405; + public static readonly RULE_comparisonOperator = 406; + public static readonly RULE_comparisonBase = 407; + public static readonly RULE_logicalOperator = 408; + public static readonly RULE_bitOperator = 409; + public static readonly RULE_mathOperator = 410; + public static readonly RULE_jsonOperator = 411; + public static readonly RULE_charsetNameBase = 412; + public static readonly RULE_transactionLevelBase = 413; + public static readonly RULE_privilegesBase = 414; + public static readonly RULE_intervalTypeBase = 415; + public static readonly RULE_dataTypeBase = 416; + public static readonly RULE_keywordsCanBeId = 417; + public static readonly RULE_functionNameBase = 418; public static readonly literalNames = [ null, null, null, null, null, "'ACTIVE'", "'ADD'", "'ALL'", "'ALTER'", @@ -1713,17 +1715,17 @@ export class MySqlParser extends SQLParserBase { "ddlStatement", "dmlStatement", "transactionStatement", "replicationStatement", "preparedStatement", "compoundStatement", "administrationStatement", "utilityStatement", "createDatabase", "createEvent", "createIndex", - "createLogfileGroup", "createProcedure", "createRole", "createServer", - "createTable", "createTablespaceInnodb", "createTablespaceNdb", - "createTrigger", "withClause", "commonTableExpressions", "createView", - "createDatabaseOption", "charSet", "currentUserExpression", "ownerStatement", - "scheduleExpression", "timestampValue", "intervalExpr", "intervalType", - "enableType", "indexType", "indexOption", "procedureParameter", - "routineOption", "serverOption", "createDefinitions", "createDefinition", - "checkConstraintDefinition", "constraintSymbol", "columnDefinition", - "columnConstraint", "referenceDefinition", "referenceAction", "referenceControlType", - "tableOption", "tableType", "tablespaceStorage", "partitionDefinitions", - "partitionFunctionDefinition", "subpartitionFunctionDefinition", + "createLogfileGroup", "createProcedure", "createFunction", "createFunctionLoadable", + "createRole", "createServer", "createTable", "createTablespaceInnodb", + "createTablespaceNdb", "createTrigger", "withClause", "commonTableExpressions", + "createView", "createDatabaseOption", "charSet", "currentUserExpression", + "ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", + "intervalType", "enableType", "indexType", "indexOption", "procedureParameter", + "functionParameter", "routineOption", "serverOption", "createDefinitions", + "createDefinition", "checkConstraintDefinition", "constraintSymbol", + "columnDefinition", "columnConstraint", "referenceDefinition", "referenceAction", + "referenceControlType", "tableOption", "tableType", "tablespaceStorage", + "partitionDefinitions", "partitionFunctionDefinition", "subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", "partitionDefinerVector", "subpartitionDefinition", "partitionOption", "alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", "alterProcedure", @@ -1779,44 +1781,43 @@ export class MySqlParser extends SQLParserBase { "userLockOption", "factorAuthOption", "registrationOption", "factor", "privelegeClause", "privilege", "privilegeLevel", "renameUserClause", "analyzeTable", "checkTable", "checksumTable", "optimizeTable", - "repairTable", "tableActionOption", "checkTableOption", "createFunction", - "installComponent", "variableExpr", "uninstallComponent", "installPlugin", - "uninstallPlugin", "cloneStatement", "setStatement", "showStatement", - "variableClause", "showCommonEntity", "showFilter", "showGlobalInfoClause", - "showSchemaEntity", "showProfileType", "binlogStatement", "cacheIndexStatement", - "flushStatement", "killStatement", "loadIndexIntoCache", "resetStatement", - "resetOption", "resetPersist", "resetAllChannel", "reStartStatement", - "shutdownStatement", "tableIndex", "flushOption", "flushTableOption", - "loadedTableIndexes", "simpleDescribeStatement", "fullDescribeStatement", - "analyzeDescribeStatement", "helpStatement", "useStatement", "signalStatement", - "resignalStatement", "signalConditionInformation", "withStatement", - "tableStatement", "diagnosticsStatement", "diagnosticsConditionInformationName", - "describeObjectClause", "databaseNameCreate", "databaseName", "functionNameCreate", - "functionName", "viewNameCreate", "viewName", "indexNameCreate", - "indexNames", "indexName", "groupNameCreate", "groupName", "tableNameCreate", - "tableNames", "tableName", "userOrRoleNames", "userOrRoleName", - "columnNameCreate", "columnNames", "columnName", "tablespaceNameCreate", - "tablespaceName", "partitionNameCreate", "partitionNames", "partitionName", - "indexColumnName", "userHostPort", "userAtHost", "simpleUserName", - "hostName", "userName", "mysqlVariable", "charsetName", "collationName", - "engineName", "engineNameBase", "uuidSet", "xid", "xuidStringId", - "fullId", "uidList", "uid", "simpleId", "dottedId", "decimalLiteral", - "fileSizeLiteral", "stringLiteral", "booleanLiteral", "hexadecimalLiteral", - "nullNotnull", "constant", "dataType", "collectionOptions", "convertedDataType", - "lengthOneDimension", "lengthTwoDimension", "lengthTwoOptionalDimension", - "indexColumnNames", "expressions", "valuesOrValueList", "expressionsWithDefaults", - "expressionOrDefault", "constants", "simpleStrings", "userVariables", - "defaultValue", "currentTimestamp", "ifExists", "ifNotExists", "orReplace", - "functionCall", "specificFunction", "caseFuncAlternative", "levelsInWeightString", - "levelInWeightListElement", "aggregateWindowedFunction", "nonAggregateWindowedFunction", - "overClause", "windowSpec", "windowName", "frameClause", "frameUnits", - "frameExtent", "frameBetween", "frameRange", "partitionClause", - "scalarFunctionName", "passwordFunctionClause", "functionArgs", - "functionArg", "expression", "predicate", "expressionAtom", "unaryOperator", - "comparisonOperator", "comparisonBase", "logicalOperator", "bitOperator", - "mathOperator", "jsonOperator", "charsetNameBase", "transactionLevelBase", - "privilegesBase", "intervalTypeBase", "dataTypeBase", "keywordsCanBeId", - "functionNameBase", + "repairTable", "tableActionOption", "checkTableOption", "installComponent", + "variableExpr", "uninstallComponent", "installPlugin", "uninstallPlugin", + "cloneStatement", "setStatement", "showStatement", "variableClause", + "showCommonEntity", "showFilter", "showGlobalInfoClause", "showSchemaEntity", + "showProfileType", "binlogStatement", "cacheIndexStatement", "flushStatement", + "killStatement", "loadIndexIntoCache", "resetStatement", "resetOption", + "resetPersist", "resetAllChannel", "reStartStatement", "shutdownStatement", + "tableIndex", "flushOption", "flushTableOption", "loadedTableIndexes", + "simpleDescribeStatement", "fullDescribeStatement", "analyzeDescribeStatement", + "helpStatement", "useStatement", "signalStatement", "resignalStatement", + "signalConditionInformation", "withStatement", "tableStatement", + "diagnosticsStatement", "diagnosticsConditionInformationName", "describeObjectClause", + "databaseNameCreate", "databaseName", "functionNameCreate", "functionName", + "viewNameCreate", "viewName", "indexNameCreate", "indexNames", "indexName", + "groupNameCreate", "groupName", "tableNameCreate", "tableNames", + "tableName", "userOrRoleNames", "userOrRoleName", "columnNameCreate", + "columnNames", "columnName", "tablespaceNameCreate", "tablespaceName", + "partitionNameCreate", "partitionNames", "partitionName", "indexColumnName", + "userHostPort", "userAtHost", "simpleUserName", "hostName", "userName", + "mysqlVariable", "charsetName", "collationName", "engineName", "engineNameBase", + "uuidSet", "xid", "xuidStringId", "fullId", "uidList", "uid", "simpleId", + "dottedId", "decimalLiteral", "fileSizeLiteral", "stringLiteral", + "booleanLiteral", "hexadecimalLiteral", "nullNotnull", "constant", + "dataType", "collectionOptions", "convertedDataType", "lengthOneDimension", + "lengthTwoDimension", "lengthTwoOptionalDimension", "indexColumnNames", + "expressions", "valuesOrValueList", "expressionsWithDefaults", "expressionOrDefault", + "constants", "simpleStrings", "userVariables", "defaultValue", "currentTimestamp", + "ifExists", "ifNotExists", "orReplace", "functionCall", "specificFunction", + "caseFuncAlternative", "levelsInWeightString", "levelInWeightListElement", + "aggregateWindowedFunction", "nonAggregateWindowedFunction", "overClause", + "windowSpec", "windowName", "frameClause", "frameUnits", "frameExtent", + "frameBetween", "frameRange", "partitionClause", "scalarFunctionName", + "passwordFunctionClause", "functionArgs", "functionArg", "expression", + "predicate", "expressionAtom", "unaryOperator", "comparisonOperator", + "comparisonBase", "logicalOperator", "bitOperator", "mathOperator", + "jsonOperator", "charsetNameBase", "transactionLevelBase", "privilegesBase", + "intervalTypeBase", "dataTypeBase", "keywordsCanBeId", "functionNameBase", ]; public get grammarFileName(): string { return "MySqlParser.g4"; } @@ -1840,21 +1841,21 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 837; + this.state = 841; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 169870592) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 268573697) !== 0) || ((((_la - 72)) & ~0x1F) === 0 && ((1 << (_la - 72)) & 2151694339) !== 0) || ((((_la - 104)) & ~0x1F) === 0 && ((1 << (_la - 104)) & 536936449) !== 0) || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 442923) !== 0) || ((((_la - 173)) & ~0x1F) === 0 && ((1 << (_la - 173)) & 2184193) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 16781443) !== 0) || _la === 362 || _la === 371 || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 270573569) !== 0) || _la === 540 || _la === 562 || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 16643) !== 0) || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & 268435521) !== 0) || _la === 673 || _la === 694 || _la === 713 || _la === 717 || _la === 749 || _la === 866 || _la === 869) { { { - this.state = 834; + this.state = 838; this.singleStatement(); } } - this.state = 839; + this.state = 843; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 840; + this.state = 844; this.match(MySqlParser.EOF); } } @@ -1876,7 +1877,7 @@ export class MySqlParser extends SQLParserBase { let localContext = new SingleStatementContext(this.context, this.state); this.enterRule(localContext, 2, MySqlParser.RULE_singleStatement); try { - this.state = 847; + this.state = 851; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALTER: @@ -1942,14 +1943,14 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 842; + this.state = 846; this.sqlStatement(); - this.state = 844; + this.state = 848; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1, this.context) ) { case 1: { - this.state = 843; + this.state = 847; this.match(MySqlParser.SEMI); } break; @@ -1959,7 +1960,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.SEMI: this.enterOuterAlt(localContext, 2); { - this.state = 846; + this.state = 850; this.emptyStatement_(); } break; @@ -1985,55 +1986,55 @@ export class MySqlParser extends SQLParserBase { let localContext = new SqlStatementContext(this.context, this.state); this.enterRule(localContext, 4, MySqlParser.RULE_sqlStatement); try { - this.state = 856; + this.state = 860; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 3, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 849; + this.state = 853; this.ddlStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 850; + this.state = 854; this.dmlStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 851; + this.state = 855; this.transactionStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 852; + this.state = 856; this.replicationStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 853; + this.state = 857; this.preparedStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 854; + this.state = 858; this.administrationStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 855; + this.state = 859; this.utilityStatement(); } break; @@ -2059,7 +2060,7 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 858; + this.state = 862; this.match(MySqlParser.SEMI); } } @@ -2081,279 +2082,286 @@ export class MySqlParser extends SQLParserBase { let localContext = new DdlStatementContext(this.context, this.state); this.enterRule(localContext, 8, MySqlParser.RULE_ddlStatement); try { - this.state = 899; + this.state = 904; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 860; + this.state = 864; this.createDatabase(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 861; + this.state = 865; this.createEvent(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 862; + this.state = 866; this.createIndex(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 863; + this.state = 867; this.createLogfileGroup(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 864; + this.state = 868; this.createProcedure(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 865; + this.state = 869; this.createFunction(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 866; - this.createServer(); + this.state = 870; + this.createFunctionLoadable(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 867; - this.createTable(); + this.state = 871; + this.createServer(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 868; - this.createTablespaceInnodb(); + this.state = 872; + this.createTable(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 869; - this.createTablespaceNdb(); + this.state = 873; + this.createTablespaceInnodb(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 870; - this.createTrigger(); + this.state = 874; + this.createTablespaceNdb(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 871; - this.createView(); + this.state = 875; + this.createTrigger(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 872; - this.createRole(); + this.state = 876; + this.createView(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 873; - this.alterDatabase(); + this.state = 877; + this.createRole(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 874; - this.alterEvent(); + this.state = 878; + this.alterDatabase(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 875; - this.alterFunction(); + this.state = 879; + this.alterEvent(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 876; - this.alterInstance(); + this.state = 880; + this.alterFunction(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 877; - this.alterLogfileGroup(); + this.state = 881; + this.alterInstance(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 878; - this.alterProcedure(); + this.state = 882; + this.alterLogfileGroup(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 879; - this.alterServer(); + this.state = 883; + this.alterProcedure(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 880; - this.alterTable(); + this.state = 884; + this.alterServer(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 881; - this.alterTablespace(); + this.state = 885; + this.alterTable(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 882; - this.alterView(); + this.state = 886; + this.alterTablespace(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 883; - this.dropDatabase(); + this.state = 887; + this.alterView(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 884; - this.dropEvent(); + this.state = 888; + this.dropDatabase(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 885; - this.dropIndex(); + this.state = 889; + this.dropEvent(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 886; - this.dropLogfileGroup(); + this.state = 890; + this.dropIndex(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 887; - this.dropProcedure(); + this.state = 891; + this.dropLogfileGroup(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 888; - this.dropFunction(); + this.state = 892; + this.dropProcedure(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 889; - this.dropServer(); + this.state = 893; + this.dropFunction(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 890; - this.dropSpatial(); + this.state = 894; + this.dropServer(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 891; - this.dropTable(); + this.state = 895; + this.dropSpatial(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 892; - this.dropTablespace(); + this.state = 896; + this.dropTable(); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 893; - this.dropTrigger(); + this.state = 897; + this.dropTablespace(); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 894; - this.dropView(); + this.state = 898; + this.dropTrigger(); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 895; - this.dropRole(); + this.state = 899; + this.dropView(); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 896; - this.setRole(); + this.state = 900; + this.dropRole(); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 897; - this.renameTable(); + this.state = 901; + this.setRole(); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 898; + this.state = 902; + this.renameTable(); + } + break; + case 40: + this.enterOuterAlt(localContext, 40); + { + this.state = 903; this.truncateTable(); } break; @@ -2377,125 +2385,125 @@ export class MySqlParser extends SQLParserBase { let localContext = new DmlStatementContext(this.context, this.state); this.enterRule(localContext, 10, MySqlParser.RULE_dmlStatement); try { - this.state = 918; + this.state = 923; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 5, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 901; + this.state = 906; this.selectStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 902; + this.state = 907; this.setOperations(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 903; + this.state = 908; this.insertStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 904; + this.state = 909; this.updateStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 905; + this.state = 910; this.deleteStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 906; + this.state = 911; this.replaceStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 907; + this.state = 912; this.callStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 908; + this.state = 913; this.interSectStatement(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 909; + this.state = 914; this.loadDataStatement(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 910; + this.state = 915; this.loadXmlStatement(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 911; + this.state = 916; this.parenthesizedQuery(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 912; + this.state = 917; this.doStatement(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 913; + this.state = 918; this.handlerStatement(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 914; + this.state = 919; this.importTableStatement(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 915; + this.state = 920; this.valuesStatement(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 916; + this.state = 921; this.withStatement(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 917; + this.state = 922; this.tableStatement(); } break; @@ -2519,69 +2527,69 @@ export class MySqlParser extends SQLParserBase { let localContext = new TransactionStatementContext(this.context, this.state); this.enterRule(localContext, 12, MySqlParser.RULE_transactionStatement); try { - this.state = 929; + this.state = 934; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 920; + this.state = 925; this.startTransaction(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 921; + this.state = 926; this.beginWork(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 922; + this.state = 927; this.commitWork(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 923; + this.state = 928; this.rollbackWork(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 924; + this.state = 929; this.savepointStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 925; + this.state = 930; this.rollbackStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 926; + this.state = 931; this.releaseStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 927; + this.state = 932; this.lockTables(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 928; + this.state = 933; this.unlockTables(); } break; @@ -2605,104 +2613,104 @@ export class MySqlParser extends SQLParserBase { let localContext = new ReplicationStatementContext(this.context, this.state); this.enterRule(localContext, 14, MySqlParser.RULE_replicationStatement); try { - this.state = 945; + this.state = 950; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 931; + this.state = 936; this.changeMaster(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 932; + this.state = 937; this.changeReplicationFilter(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 933; + this.state = 938; this.changeReplicationSource(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 934; + this.state = 939; this.purgeBinaryLogs(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 935; + this.state = 940; this.startSlaveOrReplica(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 936; + this.state = 941; this.stopSlaveOrReplica(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 937; + this.state = 942; this.startGroupReplication(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 938; + this.state = 943; this.stopGroupReplication(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 939; + this.state = 944; this.xaStartTransaction(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 940; + this.state = 945; this.xaEndTransaction(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 941; + this.state = 946; this.xaPrepareStatement(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 942; + this.state = 947; this.xaCommitWork(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 943; + this.state = 948; this.xaRollbackWork(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 944; + this.state = 949; this.xaRecoverWork(); } break; @@ -2726,20 +2734,20 @@ export class MySqlParser extends SQLParserBase { let localContext = new PreparedStatementContext(this.context, this.state); this.enterRule(localContext, 16, MySqlParser.RULE_preparedStatement); try { - this.state = 950; + this.state = 955; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PREPARE: this.enterOuterAlt(localContext, 1); { - this.state = 947; + this.state = 952; this.prepareStatement(); } break; case MySqlParser.KW_EXECUTE: this.enterOuterAlt(localContext, 2); { - this.state = 948; + this.state = 953; this.executeStatement(); } break; @@ -2747,7 +2755,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DEALLOCATE: this.enterOuterAlt(localContext, 3); { - this.state = 949; + this.state = 954; this.deallocatePrepare(); } break; @@ -2773,76 +2781,76 @@ export class MySqlParser extends SQLParserBase { let localContext = new CompoundStatementContext(this.context, this.state); this.enterRule(localContext, 18, MySqlParser.RULE_compoundStatement); try { - this.state = 962; + this.state = 967; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 952; + this.state = 957; this.blockStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 953; + this.state = 958; this.caseStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 954; + this.state = 959; this.ifStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 955; + this.state = 960; this.leaveStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 956; + this.state = 961; this.loopStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 957; + this.state = 962; this.repeatStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 958; + this.state = 963; this.whileStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 959; + this.state = 964; this.iterateStatement(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 960; + this.state = 965; this.returnStatement(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 961; + this.state = 966; this.cursorStatement(); } break; @@ -2866,237 +2874,237 @@ export class MySqlParser extends SQLParserBase { let localContext = new AdministrationStatementContext(this.context, this.state); this.enterRule(localContext, 20, MySqlParser.RULE_administrationStatement); try { - this.state = 997; + this.state = 1002; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 10, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 964; + this.state = 969; this.alterUser(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 965; + this.state = 970; this.createUser(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 966; + this.state = 971; this.dropUser(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 967; + this.state = 972; this.grantStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 968; + this.state = 973; this.grantProxy(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 969; + this.state = 974; this.renameUser(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 970; + this.state = 975; this.revokeStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 971; + this.state = 976; this.alterResourceGroup(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 972; + this.state = 977; this.createResourceGroup(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 973; + this.state = 978; this.dropResourceGroup(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 974; + this.state = 979; this.setResourceGroup(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 975; + this.state = 980; this.analyzeTable(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 976; + this.state = 981; this.checkTable(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 977; + this.state = 982; this.checksumTable(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 978; + this.state = 983; this.optimizeTable(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 979; + this.state = 984; this.repairTable(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 980; + this.state = 985; this.installComponent(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 981; + this.state = 986; this.uninstallComponent(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 982; + this.state = 987; this.installPlugin(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 983; + this.state = 988; this.uninstallPlugin(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 984; + this.state = 989; this.cloneStatement(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 985; + this.state = 990; this.setStatement(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 986; + this.state = 991; this.showStatement(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 987; + this.state = 992; this.binlogStatement(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 988; + this.state = 993; this.cacheIndexStatement(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 989; + this.state = 994; this.flushStatement(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 990; + this.state = 995; this.killStatement(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 991; + this.state = 996; this.loadIndexIntoCache(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 992; + this.state = 997; this.resetStatement(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 993; + this.state = 998; this.resetPersist(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 994; + this.state = 999; this.resetAllChannel(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 995; + this.state = 1000; this.reStartStatement(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 996; + this.state = 1001; this.shutdownStatement(); } break; @@ -3120,62 +3128,62 @@ export class MySqlParser extends SQLParserBase { let localContext = new UtilityStatementContext(this.context, this.state); this.enterRule(localContext, 22, MySqlParser.RULE_utilityStatement); try { - this.state = 1007; + this.state = 1012; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 11, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 999; + this.state = 1004; this.fullDescribeStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1000; + this.state = 1005; this.simpleDescribeStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1001; + this.state = 1006; this.analyzeDescribeStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1002; + this.state = 1007; this.helpStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1003; + this.state = 1008; this.useStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1004; + this.state = 1009; this.signalStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1005; + this.state = 1010; this.resignalStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1006; + this.state = 1011; this.diagnosticsStatement(); } break; @@ -3202,9 +3210,9 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1009; + this.state = 1014; this.match(MySqlParser.KW_CREATE); - this.state = 1010; + this.state = 1015; localContext._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -3214,29 +3222,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1012; + this.state = 1017; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { case 1: { - this.state = 1011; + this.state = 1016; this.ifNotExists(); } break; } - this.state = 1014; + this.state = 1019; this.databaseNameCreate(); - this.state = 1018; + this.state = 1023; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 135 || _la === 224 || _la === 376 || _la === 823) { { { - this.state = 1015; + this.state = 1020; this.createDatabaseOption(); } } - this.state = 1020; + this.state = 1025; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3263,87 +3271,87 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1021; + this.state = 1026; this.match(MySqlParser.KW_CREATE); - this.state = 1023; + this.state = 1028; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1022; + this.state = 1027; this.ownerStatement(); } } - this.state = 1025; + this.state = 1030; this.match(MySqlParser.KW_EVENT); - this.state = 1027; + this.state = 1032; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 15, this.context) ) { case 1: { - this.state = 1026; + this.state = 1031; this.ifNotExists(); } break; } - this.state = 1029; + this.state = 1034; localContext._event_name = this.fullId(); - this.state = 1030; + this.state = 1035; this.match(MySqlParser.KW_ON); - this.state = 1031; + this.state = 1036; this.match(MySqlParser.KW_SCHEDULE); - this.state = 1032; + this.state = 1037; this.scheduleExpression(); - this.state = 1039; + this.state = 1044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 119) { { - this.state = 1033; + this.state = 1038; this.match(MySqlParser.KW_ON); - this.state = 1034; + this.state = 1039; this.match(MySqlParser.KW_COMPLETION); - this.state = 1036; + this.state = 1041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 1035; + this.state = 1040; this.match(MySqlParser.KW_NOT); } } - this.state = 1038; + this.state = 1043; this.match(MySqlParser.KW_PRESERVE); } } - this.state = 1042; + this.state = 1047; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 1041; + this.state = 1046; this.enableType(); } } - this.state = 1046; + this.state = 1051; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 1044; + this.state = 1049; this.match(MySqlParser.KW_COMMENT); - this.state = 1045; + this.state = 1050; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1048; + this.state = 1053; this.match(MySqlParser.KW_DO); - this.state = 1049; + this.state = 1054; this.routineBody(); } } @@ -3369,14 +3377,14 @@ export class MySqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1051; + this.state = 1056; this.match(MySqlParser.KW_CREATE); - this.state = 1053; + this.state = 1058; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 508 || _la === 514) { { - this.state = 1052; + this.state = 1057; localContext._intimeAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 508 || _la === 514)) { @@ -3389,12 +3397,12 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1056; + this.state = 1061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 69 || _la === 161 || _la === 182) { { - this.state = 1055; + this.state = 1060; localContext._indexCategory = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 69 || _la === 161 || _la === 182)) { @@ -3407,66 +3415,66 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1058; + this.state = 1063; this.match(MySqlParser.KW_INDEX); - this.state = 1059; + this.state = 1064; this.indexNameCreate(); - this.state = 1061; + this.state = 1066; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1060; + this.state = 1065; this.indexType(); } } - this.state = 1063; + this.state = 1068; this.match(MySqlParser.KW_ON); - this.state = 1064; + this.state = 1069; this.tableName(); - this.state = 1065; + this.state = 1070; this.indexColumnNames(); - this.state = 1069; + this.state = 1074; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 23, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1066; + this.state = 1071; this.indexOption(); } } } - this.state = 1071; + this.state = 1076; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 23, this.context); } - this.state = 1084; + this.state = 1089; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 1082; + this.state = 1087; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALGORITHM: { - this.state = 1072; + this.state = 1077; this.match(MySqlParser.KW_ALGORITHM); - this.state = 1074; + this.state = 1079; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1073; + this.state = 1078; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1076; + this.state = 1081; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 357 || _la === 430)) { @@ -3480,19 +3488,19 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_LOCK: { - this.state = 1077; + this.state = 1082; this.match(MySqlParser.KW_LOCK); - this.state = 1079; + this.state = 1084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1078; + this.state = 1083; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1081; + this.state = 1086; localContext._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 389 || _la === 505 || _la === 595)) { @@ -3509,7 +3517,7 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 1086; + this.state = 1091; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); } @@ -3536,153 +3544,153 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1087; + this.state = 1092; this.match(MySqlParser.KW_CREATE); - this.state = 1088; + this.state = 1093; this.match(MySqlParser.KW_LOGFILE); - this.state = 1089; + this.state = 1094; this.match(MySqlParser.KW_GROUP); - this.state = 1090; + this.state = 1095; localContext._logfileGroupName = this.uid(); - this.state = 1091; + this.state = 1096; this.match(MySqlParser.KW_ADD); - this.state = 1092; + this.state = 1097; this.match(MySqlParser.KW_UNDOFILE); - this.state = 1093; + this.state = 1098; localContext._undoFile = this.match(MySqlParser.STRING_LITERAL); - this.state = 1099; + this.state = 1104; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 1094; + this.state = 1099; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 1096; + this.state = 1101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1095; + this.state = 1100; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1098; + this.state = 1103; localContext._initSize = this.fileSizeLiteral(); } } - this.state = 1106; + this.state = 1111; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 672) { { - this.state = 1101; + this.state = 1106; this.match(MySqlParser.KW_UNDO_BUFFER_SIZE); - this.state = 1103; + this.state = 1108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1102; + this.state = 1107; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1105; + this.state = 1110; localContext._undoSize = this.fileSizeLiteral(); } } - this.state = 1113; + this.state = 1118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 553) { { - this.state = 1108; + this.state = 1113; this.match(MySqlParser.KW_REDO_BUFFER_SIZE); - this.state = 1110; + this.state = 1115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1109; + this.state = 1114; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1112; + this.state = 1117; localContext._redoSize = this.fileSizeLiteral(); } } - this.state = 1120; + this.state = 1125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 504) { { - this.state = 1115; + this.state = 1120; this.match(MySqlParser.KW_NODEGROUP); - this.state = 1117; + this.state = 1122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1116; + this.state = 1121; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1119; + this.state = 1124; localContext._nodegroup = this.uid(); } } - this.state = 1123; + this.state = 1128; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 1122; + this.state = 1127; this.match(MySqlParser.KW_WAIT); } } - this.state = 1130; + this.state = 1135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 1125; + this.state = 1130; this.match(MySqlParser.KW_COMMENT); - this.state = 1127; + this.state = 1132; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1126; + this.state = 1131; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1129; + this.state = 1134; localContext._comment = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1132; + this.state = 1137; this.match(MySqlParser.KW_ENGINE); - this.state = 1134; + this.state = 1139; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1133; + this.state = 1138; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1136; + this.state = 1141; this.engineName(); } } @@ -3708,79 +3716,79 @@ export class MySqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1138; + this.state = 1143; this.match(MySqlParser.KW_CREATE); - this.state = 1140; + this.state = 1145; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1139; + this.state = 1144; this.ownerStatement(); } } - this.state = 1142; + this.state = 1147; this.match(MySqlParser.KW_PROCEDURE); - this.state = 1144; + this.state = 1149; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context) ) { case 1: { - this.state = 1143; + this.state = 1148; this.ifNotExists(); } break; } - this.state = 1146; + this.state = 1151; localContext._sp_name = this.fullId(); - this.state = 1147; + this.state = 1152; this.match(MySqlParser.LR_BRACKET); - this.state = 1149; + this.state = 1154; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18880593) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100680481) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18880593) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100680481) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1148; + this.state = 1153; this.procedureParameter(); } } - this.state = 1155; + this.state = 1160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1151; + this.state = 1156; this.match(MySqlParser.COMMA); - this.state = 1152; + this.state = 1157; this.procedureParameter(); } } - this.state = 1157; + this.state = 1162; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1158; + this.state = 1163; this.match(MySqlParser.RR_BRACKET); - this.state = 1162; + this.state = 1167; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 44, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1159; + this.state = 1164; this.routineOption(); } } } - this.state = 1164; + this.state = 1169; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 44, this.context); } - this.state = 1165; + this.state = 1170; this.routineBody(); } } @@ -3798,27 +3806,803 @@ export class MySqlParser extends SQLParserBase { } return localContext; } + public createFunction(): CreateFunctionContext { + let localContext = new CreateFunctionContext(this.context, this.state); + this.enterRule(localContext, 34, MySqlParser.RULE_createFunction); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 1172; + this.match(MySqlParser.KW_CREATE); + this.state = 1174; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 364) { + { + this.state = 1173; + this.ownerStatement(); + } + } + + this.state = 1177; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 307) { + { + this.state = 1176; + this.match(MySqlParser.KW_AGGREGATE); + } + } + + this.state = 1179; + this.match(MySqlParser.KW_FUNCTION); + this.state = 1181; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { + case 1: + { + this.state = 1180; + this.ifNotExists(); + } + break; + } + this.state = 1183; + this.functionNameCreate(); + this.state = 1184; + this.match(MySqlParser.LR_BRACKET); + this.state = 1186; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + { + this.state = 1185; + this.functionParameter(); + } + } + + this.state = 1192; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 868) { + { + { + this.state = 1188; + this.match(MySqlParser.COMMA); + this.state = 1189; + this.functionParameter(); + } + } + this.state = 1194; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 1195; + this.match(MySqlParser.RR_BRACKET); + this.state = 1196; + this.match(MySqlParser.KW_RETURNS); + this.state = 1197; + this.dataType(); + this.state = 1201; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 50, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1198; + this.routineOption(); + } + } + } + this.state = 1203; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 50, this.context); + } + this.state = 1206; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case MySqlParser.KW_ALTER: + case MySqlParser.KW_ANALYZE: + case MySqlParser.KW_ARRAY: + case MySqlParser.KW_ATTRIBUTE: + case MySqlParser.KW_BUCKETS: + case MySqlParser.KW_CALL: + case MySqlParser.KW_CHANGE: + case MySqlParser.KW_CHECK: + case MySqlParser.KW_CONDITION: + case MySqlParser.KW_CREATE: + case MySqlParser.KW_CURRENT: + case MySqlParser.KW_CURRENT_USER: + case MySqlParser.KW_DATABASE: + case MySqlParser.KW_DEFAULT: + case MySqlParser.KW_DELETE: + case MySqlParser.KW_DESC: + case MySqlParser.KW_DESCRIBE: + case MySqlParser.KW_DIAGNOSTICS: + case MySqlParser.KW_DROP: + case MySqlParser.KW_EMPTY: + case MySqlParser.KW_ENFORCED: + case MySqlParser.KW_EXCEPT: + case MySqlParser.KW_EXPLAIN: + case MySqlParser.KW_GET: + case MySqlParser.KW_GRANT: + case MySqlParser.KW_GROUP: + case MySqlParser.KW_IF: + case MySqlParser.KW_INSERT: + case MySqlParser.KW_KILL: + case MySqlParser.KW_LATERAL: + case MySqlParser.KW_LEFT: + case MySqlParser.KW_LOAD: + case MySqlParser.KW_LOCK: + case MySqlParser.KW_NUMBER: + case MySqlParser.KW_OPTIMIZE: + case MySqlParser.KW_OPTIONAL: + case MySqlParser.KW_ORDER: + case MySqlParser.KW_PRIMARY: + case MySqlParser.KW_PURGE: + case MySqlParser.KW_RELEASE: + case MySqlParser.KW_RENAME: + case MySqlParser.KW_REPEAT: + case MySqlParser.KW_REPLACE: + case MySqlParser.KW_RESIGNAL: + case MySqlParser.KW_REVOKE: + case MySqlParser.KW_RIGHT: + case MySqlParser.KW_SCHEMA: + case MySqlParser.KW_SELECT: + case MySqlParser.KW_SET: + case MySqlParser.KW_SHOW: + case MySqlParser.KW_SIGNAL: + case MySqlParser.KW_SKIP_QUERY_REWRITE: + case MySqlParser.KW_STACKED: + case MySqlParser.KW_TABLE: + case MySqlParser.KW_UNLOCK: + case MySqlParser.KW_UPDATE: + case MySqlParser.KW_USE: + case MySqlParser.KW_VALUES: + case MySqlParser.KW_WITH: + case MySqlParser.KW_DATE: + case MySqlParser.KW_TIME: + case MySqlParser.KW_TIMESTAMP: + case MySqlParser.KW_DATETIME: + case MySqlParser.KW_YEAR: + case MySqlParser.KW_BINARY: + case MySqlParser.KW_TEXT: + case MySqlParser.KW_ENUM: + case MySqlParser.KW_SERIAL: + case MySqlParser.KW_JSON_TABLE: + case MySqlParser.KW_JSON_VALUE: + case MySqlParser.KW_NESTED: + case MySqlParser.KW_ORDINALITY: + case MySqlParser.KW_PATH: + case MySqlParser.KW_AVG: + case MySqlParser.KW_BIT_AND: + case MySqlParser.KW_BIT_OR: + case MySqlParser.KW_BIT_XOR: + case MySqlParser.KW_COUNT: + case MySqlParser.KW_CUME_DIST: + case MySqlParser.KW_DENSE_RANK: + case MySqlParser.KW_FIRST_VALUE: + case MySqlParser.KW_GROUP_CONCAT: + case MySqlParser.KW_LAG: + case MySqlParser.KW_LAST_VALUE: + case MySqlParser.KW_LEAD: + case MySqlParser.KW_MAX: + case MySqlParser.KW_MIN: + case MySqlParser.KW_NTILE: + case MySqlParser.KW_NTH_VALUE: + case MySqlParser.KW_PERCENT_RANK: + case MySqlParser.KW_RANK: + case MySqlParser.KW_ROW_NUMBER: + case MySqlParser.KW_STD: + case MySqlParser.KW_STDDEV: + case MySqlParser.KW_STDDEV_POP: + case MySqlParser.KW_STDDEV_SAMP: + case MySqlParser.KW_SUM: + case MySqlParser.KW_VAR_POP: + case MySqlParser.KW_VAR_SAMP: + case MySqlParser.KW_VARIANCE: + case MySqlParser.KW_CURRENT_DATE: + case MySqlParser.KW_CURRENT_TIME: + case MySqlParser.KW_CURRENT_TIMESTAMP: + case MySqlParser.KW_LOCALTIME: + case MySqlParser.KW_CURDATE: + case MySqlParser.KW_CURTIME: + case MySqlParser.KW_DATE_ADD: + case MySqlParser.KW_DATE_SUB: + case MySqlParser.KW_LOCALTIMESTAMP: + case MySqlParser.KW_NOW: + case MySqlParser.KW_POSITION: + case MySqlParser.KW_SUBSTR: + case MySqlParser.KW_SUBSTRING: + case MySqlParser.KW_SYSDATE: + case MySqlParser.KW_TRIM: + case MySqlParser.KW_UTC_DATE: + case MySqlParser.KW_UTC_TIME: + case MySqlParser.KW_UTC_TIMESTAMP: + case MySqlParser.KW_ACCOUNT: + case MySqlParser.KW_ACTION: + case MySqlParser.KW_AFTER: + case MySqlParser.KW_AGGREGATE: + case MySqlParser.KW_ALGORITHM: + case MySqlParser.KW_ANY: + case MySqlParser.KW_AT: + case MySqlParser.KW_AUTHORS: + case MySqlParser.KW_AUTOCOMMIT: + case MySqlParser.KW_AUTOEXTEND_SIZE: + case MySqlParser.KW_AUTO_INCREMENT: + case MySqlParser.KW_AVG_ROW_LENGTH: + case MySqlParser.KW_BEGIN: + case MySqlParser.KW_BINLOG: + case MySqlParser.KW_BIT: + case MySqlParser.KW_BLOCK: + case MySqlParser.KW_BOOL: + case MySqlParser.KW_BOOLEAN: + case MySqlParser.KW_BTREE: + case MySqlParser.KW_CACHE: + case MySqlParser.KW_CASCADED: + case MySqlParser.KW_CHAIN: + case MySqlParser.KW_CHANGED: + case MySqlParser.KW_CHANNEL: + case MySqlParser.KW_CHECKSUM: + case MySqlParser.KW_CIPHER: + case MySqlParser.KW_CLASS_ORIGIN: + case MySqlParser.KW_CLIENT: + case MySqlParser.KW_CLOSE: + case MySqlParser.KW_COALESCE: + case MySqlParser.KW_CODE: + case MySqlParser.KW_COLUMNS: + case MySqlParser.KW_COLUMN_FORMAT: + case MySqlParser.KW_COLUMN_NAME: + case MySqlParser.KW_COMMENT: + case MySqlParser.KW_COMMIT: + case MySqlParser.KW_COMPACT: + case MySqlParser.KW_COMPLETION: + case MySqlParser.KW_COMPRESSED: + case MySqlParser.KW_COMPRESSION: + case MySqlParser.KW_CONCURRENT: + case MySqlParser.KW_CONNECT: + case MySqlParser.KW_CONNECTION: + case MySqlParser.KW_CONSISTENT: + case MySqlParser.KW_CONSTRAINT_CATALOG: + case MySqlParser.KW_CONSTRAINT_SCHEMA: + case MySqlParser.KW_CONSTRAINT_NAME: + case MySqlParser.KW_CONTAINS: + case MySqlParser.KW_CONTEXT: + case MySqlParser.KW_CONTRIBUTORS: + case MySqlParser.KW_COPY: + case MySqlParser.KW_CPU: + case MySqlParser.KW_CURSOR_NAME: + case MySqlParser.KW_DATA: + case MySqlParser.KW_DATAFILE: + case MySqlParser.KW_DEALLOCATE: + case MySqlParser.KW_DEFAULT_AUTH: + case MySqlParser.KW_DEFINER: + case MySqlParser.KW_DELAY_KEY_WRITE: + case MySqlParser.KW_DES_KEY_FILE: + case MySqlParser.KW_DIRECTORY: + case MySqlParser.KW_DISABLE: + case MySqlParser.KW_DISCARD: + case MySqlParser.KW_DISK: + case MySqlParser.KW_DO: + case MySqlParser.KW_DUMPFILE: + case MySqlParser.KW_DUPLICATE: + case MySqlParser.KW_DYNAMIC: + case MySqlParser.KW_ENABLE: + case MySqlParser.KW_ENCRYPTION: + case MySqlParser.KW_END: + case MySqlParser.KW_ENDS: + case MySqlParser.KW_ENGINE: + case MySqlParser.KW_ENGINES: + case MySqlParser.KW_ERROR: + case MySqlParser.KW_ERRORS: + case MySqlParser.KW_ESCAPE: + case MySqlParser.KW_EVENT: + case MySqlParser.KW_EVENTS: + case MySqlParser.KW_EVERY: + case MySqlParser.KW_EXCHANGE: + case MySqlParser.KW_EXCLUSIVE: + case MySqlParser.KW_EXPIRE: + case MySqlParser.KW_EXPORT: + case MySqlParser.KW_EXTENDED: + case MySqlParser.KW_EXTENT_SIZE: + case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS: + case MySqlParser.KW_FAST: + case MySqlParser.KW_FAULTS: + case MySqlParser.KW_FIELDS: + case MySqlParser.KW_FILE_BLOCK_SIZE: + case MySqlParser.KW_FILTER: + case MySqlParser.KW_FIRST: + case MySqlParser.KW_FIXED: + case MySqlParser.KW_FLUSH: + case MySqlParser.KW_FOLLOWS: + case MySqlParser.KW_FOUND: + case MySqlParser.KW_FULL: + case MySqlParser.KW_FUNCTION: + case MySqlParser.KW_GENERAL: + case MySqlParser.KW_GLOBAL: + case MySqlParser.KW_GRANTS: + case MySqlParser.KW_GROUP_REPLICATION: + case MySqlParser.KW_HANDLER: + case MySqlParser.KW_HASH: + case MySqlParser.KW_HELP: + case MySqlParser.KW_HISTORY: + case MySqlParser.KW_HOST: + case MySqlParser.KW_HOSTS: + case MySqlParser.KW_IDENTIFIED: + case MySqlParser.KW_IGNORE_SERVER_IDS: + case MySqlParser.KW_IMPORT: + case MySqlParser.KW_INDEXES: + case MySqlParser.KW_INITIAL_SIZE: + case MySqlParser.KW_INPLACE: + case MySqlParser.KW_INSERT_METHOD: + case MySqlParser.KW_INSTALL: + case MySqlParser.KW_INSTANCE: + case MySqlParser.KW_INSTANT: + case MySqlParser.KW_INVISIBLE: + case MySqlParser.KW_INVOKER: + case MySqlParser.KW_IO: + case MySqlParser.KW_IO_THREAD: + case MySqlParser.KW_IPC: + case MySqlParser.KW_ISOLATION: + case MySqlParser.KW_ISSUER: + case MySqlParser.KW_JSON: + case MySqlParser.KW_KEY_BLOCK_SIZE: + case MySqlParser.KW_LANGUAGE: + case MySqlParser.KW_LAST: + case MySqlParser.KW_LEAVES: + case MySqlParser.KW_LESS: + case MySqlParser.KW_LEVEL: + case MySqlParser.KW_LIST: + case MySqlParser.KW_LOCAL: + case MySqlParser.KW_LOGFILE: + case MySqlParser.KW_LOGS: + case MySqlParser.KW_MASTER: + case MySqlParser.KW_MASTER_AUTO_POSITION: + case MySqlParser.KW_MASTER_CONNECT_RETRY: + case MySqlParser.KW_MASTER_DELAY: + case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD: + case MySqlParser.KW_MASTER_HOST: + case MySqlParser.KW_MASTER_LOG_FILE: + case MySqlParser.KW_MASTER_LOG_POS: + case MySqlParser.KW_MASTER_PASSWORD: + case MySqlParser.KW_MASTER_PORT: + case MySqlParser.KW_MASTER_RETRY_COUNT: + case MySqlParser.KW_MASTER_SSL: + case MySqlParser.KW_MASTER_SSL_CA: + case MySqlParser.KW_MASTER_SSL_CAPATH: + case MySqlParser.KW_MASTER_SSL_CERT: + case MySqlParser.KW_MASTER_SSL_CIPHER: + case MySqlParser.KW_MASTER_SSL_CRL: + case MySqlParser.KW_MASTER_SSL_CRLPATH: + case MySqlParser.KW_MASTER_SSL_KEY: + case MySqlParser.KW_MASTER_TLS_VERSION: + case MySqlParser.KW_MASTER_USER: + case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR: + case MySqlParser.KW_MAX_QUERIES_PER_HOUR: + case MySqlParser.KW_MAX_ROWS: + case MySqlParser.KW_MAX_SIZE: + case MySqlParser.KW_MAX_UPDATES_PER_HOUR: + case MySqlParser.KW_MAX_USER_CONNECTIONS: + case MySqlParser.KW_MEDIUM: + case MySqlParser.KW_MEMBER: + case MySqlParser.KW_MERGE: + case MySqlParser.KW_MESSAGE_TEXT: + case MySqlParser.KW_MID: + case MySqlParser.KW_MIGRATE: + case MySqlParser.KW_MIN_ROWS: + case MySqlParser.KW_MODE: + case MySqlParser.KW_MODIFY: + case MySqlParser.KW_MUTEX: + case MySqlParser.KW_MYSQL: + case MySqlParser.KW_MYSQL_ERRNO: + case MySqlParser.KW_NAME: + case MySqlParser.KW_NAMES: + case MySqlParser.KW_NCHAR: + case MySqlParser.KW_NEVER: + case MySqlParser.KW_NEXT: + case MySqlParser.KW_NO: + case MySqlParser.KW_NOWAIT: + case MySqlParser.KW_NODEGROUP: + case MySqlParser.KW_NONE: + case MySqlParser.KW_ODBC: + case MySqlParser.KW_OFFLINE: + case MySqlParser.KW_OFFSET: + case MySqlParser.KW_OF: + case MySqlParser.KW_OLD_PASSWORD: + case MySqlParser.KW_ONE: + case MySqlParser.KW_ONLINE: + case MySqlParser.KW_ONLY: + case MySqlParser.KW_OPEN: + case MySqlParser.KW_OPTIMIZER_COSTS: + case MySqlParser.KW_OPTIONS: + case MySqlParser.KW_OWNER: + case MySqlParser.KW_PACK_KEYS: + case MySqlParser.KW_PAGE: + case MySqlParser.KW_PAGE_CHECKSUM: + case MySqlParser.KW_PARSER: + case MySqlParser.KW_PARTIAL: + case MySqlParser.KW_PARTITIONING: + case MySqlParser.KW_PARTITIONS: + case MySqlParser.KW_PASSWORD: + case MySqlParser.KW_PASSWORD_LOCK_TIME: + case MySqlParser.KW_PHASE: + case MySqlParser.KW_PLUGIN: + case MySqlParser.KW_PLUGIN_DIR: + case MySqlParser.KW_PLUGINS: + case MySqlParser.KW_PORT: + case MySqlParser.KW_PRECEDES: + case MySqlParser.KW_PREPARE: + case MySqlParser.KW_PRESERVE: + case MySqlParser.KW_PREV: + case MySqlParser.KW_PROCESSLIST: + case MySqlParser.KW_PROFILE: + case MySqlParser.KW_PROFILES: + case MySqlParser.KW_PROXY: + case MySqlParser.KW_QUERY: + case MySqlParser.KW_QUICK: + case MySqlParser.KW_REBUILD: + case MySqlParser.KW_RECOVER: + case MySqlParser.KW_RECURSIVE: + case MySqlParser.KW_REDO_BUFFER_SIZE: + case MySqlParser.KW_REDUNDANT: + case MySqlParser.KW_RELAY: + case MySqlParser.KW_RELAY_LOG_FILE: + case MySqlParser.KW_RELAY_LOG_POS: + case MySqlParser.KW_RELAYLOG: + case MySqlParser.KW_REMOVE: + case MySqlParser.KW_REORGANIZE: + case MySqlParser.KW_REPAIR: + case MySqlParser.KW_REPLICATE_DO_DB: + case MySqlParser.KW_REPLICATE_DO_TABLE: + case MySqlParser.KW_REPLICATE_IGNORE_DB: + case MySqlParser.KW_REPLICATE_IGNORE_TABLE: + case MySqlParser.KW_REPLICATE_REWRITE_DB: + case MySqlParser.KW_REPLICATE_WILD_DO_TABLE: + case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE: + case MySqlParser.KW_REPLICATION: + case MySqlParser.KW_RESET: + case MySqlParser.KW_RESTART: + case MySqlParser.KW_RESUME: + case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: + case MySqlParser.KW_RETURNS: + case MySqlParser.KW_REUSE: + case MySqlParser.KW_ROLE: + case MySqlParser.KW_ROLLBACK: + case MySqlParser.KW_ROLLUP: + case MySqlParser.KW_ROTATE: + case MySqlParser.KW_ROW: + case MySqlParser.KW_ROWS: + case MySqlParser.KW_ROW_FORMAT: + case MySqlParser.KW_SAVEPOINT: + case MySqlParser.KW_SCHEDULE: + case MySqlParser.KW_SECURITY: + case MySqlParser.KW_SERVER: + case MySqlParser.KW_SESSION: + case MySqlParser.KW_SHARE: + case MySqlParser.KW_SHARED: + case MySqlParser.KW_SIGNED: + case MySqlParser.KW_SIMPLE: + case MySqlParser.KW_SLAVE: + case MySqlParser.KW_SLOW: + case MySqlParser.KW_SNAPSHOT: + case MySqlParser.KW_SOCKET: + case MySqlParser.KW_SOME: + case MySqlParser.KW_SONAME: + case MySqlParser.KW_SOUNDS: + case MySqlParser.KW_SOURCE: + case MySqlParser.KW_SQL_AFTER_GTIDS: + case MySqlParser.KW_SQL_AFTER_MTS_GAPS: + case MySqlParser.KW_SQL_BEFORE_GTIDS: + case MySqlParser.KW_SQL_BUFFER_RESULT: + case MySqlParser.KW_SQL_CACHE: + case MySqlParser.KW_SQL_NO_CACHE: + case MySqlParser.KW_SQL_THREAD: + case MySqlParser.KW_START: + case MySqlParser.KW_STARTS: + case MySqlParser.KW_STATS_AUTO_RECALC: + case MySqlParser.KW_STATS_PERSISTENT: + case MySqlParser.KW_STATS_SAMPLE_PAGES: + case MySqlParser.KW_STATUS: + case MySqlParser.KW_STOP: + case MySqlParser.KW_STORAGE: + case MySqlParser.KW_STRING: + case MySqlParser.KW_SUBCLASS_ORIGIN: + case MySqlParser.KW_SUBJECT: + case MySqlParser.KW_SUBPARTITION: + case MySqlParser.KW_SUBPARTITIONS: + case MySqlParser.KW_SUSPEND: + case MySqlParser.KW_SWAPS: + case MySqlParser.KW_SWITCHES: + case MySqlParser.KW_TABLE_NAME: + case MySqlParser.KW_TABLESPACE: + case MySqlParser.KW_TABLE_TYPE: + case MySqlParser.KW_TEMPORARY: + case MySqlParser.KW_TEMPTABLE: + case MySqlParser.KW_THAN: + case MySqlParser.KW_TRADITIONAL: + case MySqlParser.KW_TRANSACTION: + case MySqlParser.KW_TRANSACTIONAL: + case MySqlParser.KW_TRIGGERS: + case MySqlParser.KW_TRUNCATE: + case MySqlParser.KW_UNBOUNDED: + case MySqlParser.KW_UNDEFINED: + case MySqlParser.KW_UNDOFILE: + case MySqlParser.KW_UNDO_BUFFER_SIZE: + case MySqlParser.KW_UNINSTALL: + case MySqlParser.KW_UNKNOWN: + case MySqlParser.KW_UNTIL: + case MySqlParser.KW_UPGRADE: + case MySqlParser.KW_USER: + case MySqlParser.KW_USE_FRM: + case MySqlParser.KW_USER_RESOURCES: + case MySqlParser.KW_VALIDATION: + case MySqlParser.KW_VALUE: + case MySqlParser.KW_VARIABLES: + case MySqlParser.KW_VIEW: + case MySqlParser.KW_VIRTUAL: + case MySqlParser.KW_VISIBLE: + case MySqlParser.KW_WAIT: + case MySqlParser.KW_WARNINGS: + case MySqlParser.KW_WITHOUT: + case MySqlParser.KW_WORK: + case MySqlParser.KW_WRAPPER: + case MySqlParser.KW_X509: + case MySqlParser.KW_XA: + case MySqlParser.KW_XML: + case MySqlParser.KW_QUARTER: + case MySqlParser.KW_MONTH: + case MySqlParser.KW_DAY: + case MySqlParser.KW_HOUR: + case MySqlParser.KW_MINUTE: + case MySqlParser.KW_WEEK: + case MySqlParser.KW_SECOND: + case MySqlParser.KW_MICROSECOND: + case MySqlParser.KW_ADMIN: + case MySqlParser.KW_AUDIT_ABORT_EXEMPT: + case MySqlParser.KW_AUDIT_ADMIN: + case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN: + case MySqlParser.KW_BACKUP_ADMIN: + case MySqlParser.KW_BINLOG_ADMIN: + case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN: + case MySqlParser.KW_CLONE: + case MySqlParser.KW_CLONE_ADMIN: + case MySqlParser.KW_CONNECTION_ADMIN: + case MySqlParser.KW_ENCRYPTION_KEY_ADMIN: + case MySqlParser.KW_EXECUTE: + case MySqlParser.KW_FILE: + case MySqlParser.KW_FIREWALL_ADMIN: + case MySqlParser.KW_FIREWALL_EXEMPT: + case MySqlParser.KW_FIREWALL_USER: + case MySqlParser.KW_GROUP_REPLICATION_ADMIN: + case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE: + case MySqlParser.KW_INVOKE: + case MySqlParser.KW_LAMBDA: + case MySqlParser.KW_NDB_STORED_USER: + case MySqlParser.KW_PASSWORDLESS_USER_ADMIN: + case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN: + case MySqlParser.KW_PRIVILEGES: + case MySqlParser.KW_PROCESS: + case MySqlParser.KW_RELOAD: + case MySqlParser.KW_REPLICATION_APPLIER: + case MySqlParser.KW_REPLICATION_SLAVE_ADMIN: + case MySqlParser.KW_RESOURCE_GROUP_ADMIN: + case MySqlParser.KW_RESOURCE_GROUP_USER: + case MySqlParser.KW_ROLE_ADMIN: + case MySqlParser.KW_ROUTINE: + case MySqlParser.KW_S3: + case MySqlParser.KW_SESSION_VARIABLES_ADMIN: + case MySqlParser.KW_SET_USER_ID: + case MySqlParser.KW_SHOW_ROUTINE: + case MySqlParser.KW_SHUTDOWN: + case MySqlParser.KW_SUPER: + case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN: + case MySqlParser.KW_TABLES: + case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN: + case MySqlParser.KW_VERSION_TOKEN_ADMIN: + case MySqlParser.KW_XA_RECOVER_ADMIN: + case MySqlParser.KW_ARMSCII8: + case MySqlParser.KW_ASCII: + case MySqlParser.KW_BIG5: + case MySqlParser.KW_CP1250: + case MySqlParser.KW_CP1251: + case MySqlParser.KW_CP1256: + case MySqlParser.KW_CP1257: + case MySqlParser.KW_CP850: + case MySqlParser.KW_CP852: + case MySqlParser.KW_CP866: + case MySqlParser.KW_CP932: + case MySqlParser.KW_DEC8: + case MySqlParser.KW_EUCJPMS: + case MySqlParser.KW_EUCKR: + case MySqlParser.KW_GB18030: + case MySqlParser.KW_GB2312: + case MySqlParser.KW_GBK: + case MySqlParser.KW_GEOSTD8: + case MySqlParser.KW_GREEK: + case MySqlParser.KW_HEBREW: + case MySqlParser.KW_HP8: + case MySqlParser.KW_KEYBCS2: + case MySqlParser.KW_KOI8R: + case MySqlParser.KW_KOI8U: + case MySqlParser.KW_LATIN1: + case MySqlParser.KW_LATIN2: + case MySqlParser.KW_LATIN5: + case MySqlParser.KW_LATIN7: + case MySqlParser.KW_MACCE: + case MySqlParser.KW_MACROMAN: + case MySqlParser.KW_SJIS: + case MySqlParser.KW_SWE7: + case MySqlParser.KW_TIS620: + case MySqlParser.KW_UCS2: + case MySqlParser.KW_UJIS: + case MySqlParser.KW_UTF16: + case MySqlParser.KW_UTF16LE: + case MySqlParser.KW_UTF32: + case MySqlParser.KW_UTF8: + case MySqlParser.KW_UTF8MB3: + case MySqlParser.KW_UTF8MB4: + case MySqlParser.KW_ARCHIVE: + case MySqlParser.KW_BLACKHOLE: + case MySqlParser.KW_CSV: + case MySqlParser.KW_FEDERATED: + case MySqlParser.KW_INNODB: + case MySqlParser.KW_MEMORY: + case MySqlParser.KW_MRG_MYISAM: + case MySqlParser.KW_MYISAM: + case MySqlParser.KW_NDB: + case MySqlParser.KW_NDBCLUSTER: + case MySqlParser.KW_PERFORMANCE_SCHEMA: + case MySqlParser.KW_TOKUDB: + case MySqlParser.KW_REPEATABLE: + case MySqlParser.KW_COMMITTED: + case MySqlParser.KW_UNCOMMITTED: + case MySqlParser.KW_SERIALIZABLE: + case MySqlParser.KW_GEOMETRYCOLLECTION: + case MySqlParser.KW_LINESTRING: + case MySqlParser.KW_MULTILINESTRING: + case MySqlParser.KW_MULTIPOINT: + case MySqlParser.KW_MULTIPOLYGON: + case MySqlParser.KW_POINT: + case MySqlParser.KW_POLYGON: + case MySqlParser.KW_CATALOG_NAME: + case MySqlParser.KW_CHARSET: + case MySqlParser.KW_COLLATION: + case MySqlParser.KW_ENGINE_ATTRIBUTE: + case MySqlParser.KW_FORMAT: + case MySqlParser.KW_GET_FORMAT: + case MySqlParser.KW_RANDOM: + case MySqlParser.KW_REVERSE: + case MySqlParser.KW_ROW_COUNT: + case MySqlParser.KW_SCHEMA_NAME: + case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE: + case MySqlParser.KW_SRID: + case MySqlParser.KW_SYSTEM_USER: + case MySqlParser.KW_TP_CONNECTION_ADMIN: + case MySqlParser.KW_WEIGHT_STRING: + case MySqlParser.MOD: + case MySqlParser.LR_BRACKET: + case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: + case MySqlParser.STRING_LITERAL: + case MySqlParser.ID: + { + this.state = 1204; + this.routineBody(); + } + break; + case MySqlParser.KW_RETURN: + { + this.state = 1205; + this.returnStatement(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createFunctionLoadable(): CreateFunctionLoadableContext { + let localContext = new CreateFunctionLoadableContext(this.context, this.state); + this.enterRule(localContext, 36, MySqlParser.RULE_createFunctionLoadable); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1208; + this.match(MySqlParser.KW_CREATE); + this.state = 1210; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 307) { + { + this.state = 1209; + this.match(MySqlParser.KW_AGGREGATE); + } + } + + this.state = 1212; + this.match(MySqlParser.KW_FUNCTION); + this.state = 1214; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context) ) { + case 1: + { + this.state = 1213; + this.ifNotExists(); + } + break; + } + this.state = 1216; + this.functionNameCreate(); + this.state = 1217; + this.match(MySqlParser.KW_RETURNS); + this.state = 1218; + localContext._returnType = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 261) !== 0) || _la === 649)) { + localContext._returnType = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1219; + this.match(MySqlParser.KW_SONAME); + this.state = 1220; + this.match(MySqlParser.STRING_LITERAL); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public createRole(): CreateRoleContext { let localContext = new CreateRoleContext(this.context, this.state); - this.enterRule(localContext, 34, MySqlParser.RULE_createRole); + this.enterRule(localContext, 38, MySqlParser.RULE_createRole); try { this.enterOuterAlt(localContext, 1); { - this.state = 1167; + this.state = 1222; this.match(MySqlParser.KW_CREATE); - this.state = 1168; + this.state = 1223; this.match(MySqlParser.KW_ROLE); - this.state = 1170; + this.state = 1225; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { case 1: { - this.state = 1169; + this.state = 1224; this.ifNotExists(); } break; } - this.state = 1172; + this.state = 1227; this.userOrRoleNames(); } } @@ -3838,24 +4622,24 @@ export class MySqlParser extends SQLParserBase { } public createServer(): CreateServerContext { let localContext = new CreateServerContext(this.context, this.state); - this.enterRule(localContext, 36, MySqlParser.RULE_createServer); + this.enterRule(localContext, 40, MySqlParser.RULE_createServer); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1174; + this.state = 1229; this.match(MySqlParser.KW_CREATE); - this.state = 1175; + this.state = 1230; this.match(MySqlParser.KW_SERVER); - this.state = 1176; + this.state = 1231; localContext._servername = this.uid(); - this.state = 1177; + this.state = 1232; this.match(MySqlParser.KW_FOREIGN); - this.state = 1178; + this.state = 1233; this.match(MySqlParser.KW_DATA); - this.state = 1179; + this.state = 1234; this.match(MySqlParser.KW_WRAPPER); - this.state = 1180; + this.state = 1235; localContext._wrapperName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 494 || _la === 882)) { @@ -3865,29 +4649,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1181; + this.state = 1236; this.match(MySqlParser.KW_OPTIONS); - this.state = 1182; + this.state = 1237; this.match(MySqlParser.LR_BRACKET); - this.state = 1183; + this.state = 1238; this.serverOption(); - this.state = 1188; + this.state = 1243; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1184; + this.state = 1239; this.match(MySqlParser.COMMA); - this.state = 1185; + this.state = 1240; this.serverOption(); } } - this.state = 1190; + this.state = 1245; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1191; + this.state = 1246; this.match(MySqlParser.RR_BRACKET); } } @@ -3907,103 +4691,103 @@ export class MySqlParser extends SQLParserBase { } public createTable(): CreateTableContext { let localContext = new CreateTableContext(this.context, this.state); - this.enterRule(localContext, 38, MySqlParser.RULE_createTable); + this.enterRule(localContext, 42, MySqlParser.RULE_createTable); let _la: number; try { let alternative: number; - this.state = 1271; + this.state = 1326; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context) ) { case 1: localContext = new QueryCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1193; + this.state = 1248; this.match(MySqlParser.KW_CREATE); - this.state = 1195; + this.state = 1250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 1194; + this.state = 1249; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 1197; + this.state = 1252; this.match(MySqlParser.KW_TABLE); - this.state = 1199; + this.state = 1254; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { case 1: { - this.state = 1198; + this.state = 1253; this.ifNotExists(); } break; } - this.state = 1201; + this.state = 1256; (localContext as QueryCreateTableContext)._tb = this.tableNameCreate(); - this.state = 1203; + this.state = 1258; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { case 1: { - this.state = 1202; + this.state = 1257; (localContext as QueryCreateTableContext)._col = this.createDefinitions(); } break; } - this.state = 1215; + this.state = 1270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 82 || _la === 181 || _la === 224 || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67141639) !== 0) || ((((_la - 346)) & ~0x1F) === 0 && ((1 << (_la - 346)) & 3221766153) !== 0) || _la === 380 || _la === 431 || _la === 443 || _la === 480 || _la === 490 || ((((_la - 520)) & ~0x1F) === 0 && ((1 << (_la - 520)) & 541) !== 0) || _la === 588 || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & 34341021) !== 0) || ((((_la - 823)) & ~0x1F) === 0 && ((1 << (_la - 823)) & 1029) !== 0) || _la === 882) { { - this.state = 1205; + this.state = 1260; this.tableOption(); - this.state = 1212; + this.state = 1267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 82 || _la === 181 || _la === 224 || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67141639) !== 0) || ((((_la - 346)) & ~0x1F) === 0 && ((1 << (_la - 346)) & 3221766153) !== 0) || _la === 380 || _la === 431 || _la === 443 || _la === 480 || _la === 490 || ((((_la - 520)) & ~0x1F) === 0 && ((1 << (_la - 520)) & 541) !== 0) || _la === 588 || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & 34341021) !== 0) || ((((_la - 823)) & ~0x1F) === 0 && ((1 << (_la - 823)) & 1029) !== 0) || _la === 868 || _la === 882) { { { - this.state = 1207; + this.state = 1262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 1206; + this.state = 1261; this.match(MySqlParser.COMMA); } } - this.state = 1209; + this.state = 1264; this.tableOption(); } } - this.state = 1214; + this.state = 1269; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1218; + this.state = 1273; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 1217; + this.state = 1272; this.partitionDefinitions(); } } - this.state = 1221; + this.state = 1276; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79 || _la === 143) { { - this.state = 1220; + this.state = 1275; _la = this.tokenStream.LA(1); if(!(_la === 79 || _la === 143)) { this.errorHandler.recoverInline(this); @@ -4015,17 +4799,17 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1224; + this.state = 1279; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 1223; + this.state = 1278; this.match(MySqlParser.KW_AS); } } - this.state = 1226; + this.state = 1281; this.selectStatement(); } break; @@ -4033,52 +4817,52 @@ export class MySqlParser extends SQLParserBase { localContext = new CopyCreateTableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1228; + this.state = 1283; this.match(MySqlParser.KW_CREATE); - this.state = 1230; + this.state = 1285; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 1229; + this.state = 1284; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 1232; + this.state = 1287; this.match(MySqlParser.KW_TABLE); - this.state = 1234; + this.state = 1289; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { case 1: { - this.state = 1233; + this.state = 1288; this.ifNotExists(); } break; } - this.state = 1236; + this.state = 1291; this.tableNameCreate(); - this.state = 1244; + this.state = 1299; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_LIKE: { - this.state = 1237; + this.state = 1292; this.match(MySqlParser.KW_LIKE); - this.state = 1238; + this.state = 1293; this.tableName(); } break; case MySqlParser.LR_BRACKET: { - this.state = 1239; + this.state = 1294; this.match(MySqlParser.LR_BRACKET); - this.state = 1240; + this.state = 1295; this.match(MySqlParser.KW_LIKE); - this.state = 1241; + this.state = 1296; this.tableName(); - this.state = 1242; + this.state = 1297; this.match(MySqlParser.RR_BRACKET); } break; @@ -4091,76 +4875,76 @@ export class MySqlParser extends SQLParserBase { localContext = new ColumnCreateTableContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1246; + this.state = 1301; this.match(MySqlParser.KW_CREATE); - this.state = 1248; + this.state = 1303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 1247; + this.state = 1302; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 1250; + this.state = 1305; this.match(MySqlParser.KW_TABLE); - this.state = 1252; + this.state = 1307; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context) ) { case 1: { - this.state = 1251; + this.state = 1306; this.ifNotExists(); } break; } - this.state = 1254; + this.state = 1309; this.tableNameCreate(); - this.state = 1255; + this.state = 1310; this.createDefinitions(); - this.state = 1266; + this.state = 1321; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: { - this.state = 1256; + this.state = 1311; this.tableOption(); - this.state = 1263; + this.state = 1318; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 62, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1258; + this.state = 1313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 1257; + this.state = 1312; this.match(MySqlParser.COMMA); } } - this.state = 1260; + this.state = 1315; this.tableOption(); } } } - this.state = 1265; + this.state = 1320; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 62, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context); } } break; } - this.state = 1269; + this.state = 1324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 1268; + this.state = 1323; this.partitionDefinitions(); } } @@ -4185,117 +4969,117 @@ export class MySqlParser extends SQLParserBase { } public createTablespaceInnodb(): CreateTablespaceInnodbContext { let localContext = new CreateTablespaceInnodbContext(this.context, this.state); - this.enterRule(localContext, 40, MySqlParser.RULE_createTablespaceInnodb); + this.enterRule(localContext, 44, MySqlParser.RULE_createTablespaceInnodb); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1273; + this.state = 1328; this.match(MySqlParser.KW_CREATE); - this.state = 1275; + this.state = 1330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 1274; + this.state = 1329; this.match(MySqlParser.KW_UNDO); } } - this.state = 1277; + this.state = 1332; this.match(MySqlParser.KW_TABLESPACE); - this.state = 1278; + this.state = 1333; this.tablespaceNameCreate(); - this.state = 1282; + this.state = 1337; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 1279; + this.state = 1334; this.match(MySqlParser.KW_ADD); - this.state = 1280; + this.state = 1335; this.match(MySqlParser.KW_DATAFILE); - this.state = 1281; + this.state = 1336; localContext._datafile = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1289; + this.state = 1344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 1284; + this.state = 1339; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 1286; + this.state = 1341; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1285; + this.state = 1340; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1288; + this.state = 1343; localContext._autoextendSize = this.fileSizeLiteral(); } } - this.state = 1294; + this.state = 1349; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 1291; + this.state = 1346; this.match(MySqlParser.KW_FILE_BLOCK_SIZE); - this.state = 1292; + this.state = 1347; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 1293; + this.state = 1348; localContext._fileBlockSize = this.fileSizeLiteral(); } } - this.state = 1301; + this.state = 1356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 380) { { - this.state = 1296; + this.state = 1351; this.match(MySqlParser.KW_ENGINE); - this.state = 1298; + this.state = 1353; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1297; + this.state = 1352; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1300; + this.state = 1355; this.engineName(); } } - this.state = 1308; + this.state = 1363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 825) { { - this.state = 1303; + this.state = 1358; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 1305; + this.state = 1360; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1304; + this.state = 1359; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1307; + this.state = 1362; this.match(MySqlParser.STRING_LITERAL); } } @@ -4318,196 +5102,196 @@ export class MySqlParser extends SQLParserBase { } public createTablespaceNdb(): CreateTablespaceNdbContext { let localContext = new CreateTablespaceNdbContext(this.context, this.state); - this.enterRule(localContext, 42, MySqlParser.RULE_createTablespaceNdb); + this.enterRule(localContext, 46, MySqlParser.RULE_createTablespaceNdb); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1310; + this.state = 1365; this.match(MySqlParser.KW_CREATE); - this.state = 1312; + this.state = 1367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 1311; + this.state = 1366; this.match(MySqlParser.KW_UNDO); } } - this.state = 1314; + this.state = 1369; this.match(MySqlParser.KW_TABLESPACE); - this.state = 1315; + this.state = 1370; this.tablespaceNameCreate(); - this.state = 1316; + this.state = 1371; this.match(MySqlParser.KW_ADD); - this.state = 1317; + this.state = 1372; this.match(MySqlParser.KW_DATAFILE); - this.state = 1318; + this.state = 1373; localContext._datafile = this.match(MySqlParser.STRING_LITERAL); - this.state = 1319; + this.state = 1374; this.match(MySqlParser.KW_USE); - this.state = 1320; + this.state = 1375; this.match(MySqlParser.KW_LOGFILE); - this.state = 1321; + this.state = 1376; this.match(MySqlParser.KW_GROUP); - this.state = 1322; + this.state = 1377; localContext._logfileGroupName = this.uid(); - this.state = 1328; + this.state = 1383; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 393) { { - this.state = 1323; + this.state = 1378; this.match(MySqlParser.KW_EXTENT_SIZE); - this.state = 1325; + this.state = 1380; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1324; + this.state = 1379; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1327; + this.state = 1382; localContext._extentSize = this.fileSizeLiteral(); } } - this.state = 1335; + this.state = 1390; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 1330; + this.state = 1385; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 1332; + this.state = 1387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1331; + this.state = 1386; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1334; + this.state = 1389; localContext._initialSize = this.fileSizeLiteral(); } } - this.state = 1342; + this.state = 1397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 1337; + this.state = 1392; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 1339; + this.state = 1394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1338; + this.state = 1393; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1341; + this.state = 1396; localContext._autoextendSize = this.fileSizeLiteral(); } } - this.state = 1349; + this.state = 1404; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 481) { { - this.state = 1344; + this.state = 1399; this.match(MySqlParser.KW_MAX_SIZE); - this.state = 1346; + this.state = 1401; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1345; + this.state = 1400; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1348; + this.state = 1403; localContext._maxSize = this.fileSizeLiteral(); } } - this.state = 1356; + this.state = 1411; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 504) { { - this.state = 1351; + this.state = 1406; this.match(MySqlParser.KW_NODEGROUP); - this.state = 1353; + this.state = 1408; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1352; + this.state = 1407; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1355; + this.state = 1410; localContext._nodegroup = this.uid(); } } - this.state = 1359; + this.state = 1414; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 1358; + this.state = 1413; this.match(MySqlParser.KW_WAIT); } } - this.state = 1366; + this.state = 1421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 1361; + this.state = 1416; this.match(MySqlParser.KW_COMMENT); - this.state = 1363; + this.state = 1418; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1362; + this.state = 1417; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1365; + this.state = 1420; localContext._comment = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1368; + this.state = 1423; this.match(MySqlParser.KW_ENGINE); - this.state = 1370; + this.state = 1425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1369; + this.state = 1424; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1372; + this.state = 1427; this.engineName(); } } @@ -4527,38 +5311,48 @@ export class MySqlParser extends SQLParserBase { } public createTrigger(): CreateTriggerContext { let localContext = new CreateTriggerContext(this.context, this.state); - this.enterRule(localContext, 44, MySqlParser.RULE_createTrigger); + this.enterRule(localContext, 48, MySqlParser.RULE_createTrigger); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1374; + this.state = 1429; this.match(MySqlParser.KW_CREATE); - this.state = 1376; + this.state = 1431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1375; + this.state = 1430; this.ownerStatement(); } } - this.state = 1378; + this.state = 1434; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 78) { + { + this.state = 1433; + this.ifNotExists(); + } + } + + this.state = 1436; this.match(MySqlParser.KW_TRIGGER); - this.state = 1380; + this.state = 1438; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 101, this.context) ) { case 1: { - this.state = 1379; + this.state = 1437; this.ifNotExists(); } break; } - this.state = 1382; + this.state = 1440; localContext._trigger_name = this.fullId(); - this.state = 1383; + this.state = 1441; localContext._triggerTime = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 16 || _la === 306)) { @@ -4568,7 +5362,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1384; + this.state = 1442; localContext._triggerEvent = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 44 || _la === 86 || _la === 185)) { @@ -4578,22 +5372,22 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1385; + this.state = 1443; this.match(MySqlParser.KW_ON); - this.state = 1386; + this.state = 1444; this.tableName(); - this.state = 1387; + this.state = 1445; this.match(MySqlParser.KW_FOR); - this.state = 1388; + this.state = 1446; this.match(MySqlParser.KW_EACH); - this.state = 1389; + this.state = 1447; this.match(MySqlParser.KW_ROW); - this.state = 1392; + this.state = 1450; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { case 1: { - this.state = 1390; + this.state = 1448; localContext._triggerPlace = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 406 || _la === 538)) { @@ -4603,12 +5397,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1391; + this.state = 1449; localContext._other_trigger_name = this.fullId(); } break; } - this.state = 1394; + this.state = 1452; this.routineBody(); } } @@ -4628,23 +5422,23 @@ export class MySqlParser extends SQLParserBase { } public withClause(): WithClauseContext { let localContext = new WithClauseContext(this.context, this.state); - this.enterRule(localContext, 46, MySqlParser.RULE_withClause); + this.enterRule(localContext, 50, MySqlParser.RULE_withClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1396; + this.state = 1454; this.match(MySqlParser.KW_WITH); - this.state = 1398; + this.state = 1456; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 103, this.context) ) { case 1: { - this.state = 1397; + this.state = 1455; this.match(MySqlParser.KW_RECURSIVE); } break; } - this.state = 1400; + this.state = 1458; this.commonTableExpressions(); } } @@ -4664,59 +5458,59 @@ export class MySqlParser extends SQLParserBase { } public commonTableExpressions(): CommonTableExpressionsContext { let localContext = new CommonTableExpressionsContext(this.context, this.state); - this.enterRule(localContext, 48, MySqlParser.RULE_commonTableExpressions); + this.enterRule(localContext, 52, MySqlParser.RULE_commonTableExpressions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1402; + this.state = 1460; localContext._cteName = this.uid(); - this.state = 1414; + this.state = 1472; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 1403; + this.state = 1461; this.match(MySqlParser.LR_BRACKET); - this.state = 1404; + this.state = 1462; localContext._cteColumnName = this.uid(); - this.state = 1409; + this.state = 1467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1405; + this.state = 1463; this.match(MySqlParser.COMMA); - this.state = 1406; + this.state = 1464; localContext._cteColumnName = this.uid(); } } - this.state = 1411; + this.state = 1469; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1412; + this.state = 1470; this.match(MySqlParser.RR_BRACKET); } } - this.state = 1416; + this.state = 1474; this.match(MySqlParser.KW_AS); - this.state = 1417; + this.state = 1475; this.match(MySqlParser.LR_BRACKET); - this.state = 1418; + this.state = 1476; this.dmlStatement(); - this.state = 1419; + this.state = 1477; this.match(MySqlParser.RR_BRACKET); - this.state = 1422; + this.state = 1480; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 106, this.context) ) { case 1: { - this.state = 1420; + this.state = 1478; this.match(MySqlParser.COMMA); - this.state = 1421; + this.state = 1479; this.commonTableExpressions(); } break; @@ -4739,33 +5533,33 @@ export class MySqlParser extends SQLParserBase { } public createView(): CreateViewContext { let localContext = new CreateViewContext(this.context, this.state); - this.enterRule(localContext, 50, MySqlParser.RULE_createView); + this.enterRule(localContext, 54, MySqlParser.RULE_createView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1424; + this.state = 1482; this.match(MySqlParser.KW_CREATE); - this.state = 1426; + this.state = 1484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 124) { { - this.state = 1425; + this.state = 1483; this.orReplace(); } } - this.state = 1431; + this.state = 1489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 1428; + this.state = 1486; this.match(MySqlParser.KW_ALGORITHM); - this.state = 1429; + this.state = 1487; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 1430; + this.state = 1488; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 486 || _la === 661 || _la === 670)) { @@ -4778,26 +5572,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1434; + this.state = 1492; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1433; + this.state = 1491; this.ownerStatement(); } } - this.state = 1439; + this.state = 1497; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 162) { { - this.state = 1436; + this.state = 1494; this.match(MySqlParser.KW_SQL); - this.state = 1437; + this.state = 1495; this.match(MySqlParser.KW_SECURITY); - this.state = 1438; + this.state = 1496; localContext._secContext = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 364 || _la === 436)) { @@ -4810,92 +5604,92 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1441; + this.state = 1499; this.match(MySqlParser.KW_VIEW); - this.state = 1442; + this.state = 1500; this.viewNameCreate(); - this.state = 1454; + this.state = 1512; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 1443; + this.state = 1501; this.match(MySqlParser.LR_BRACKET); - this.state = 1444; + this.state = 1502; this.columnNameCreate(); - this.state = 1449; + this.state = 1507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1445; + this.state = 1503; this.match(MySqlParser.COMMA); - this.state = 1446; + this.state = 1504; this.columnNameCreate(); } } - this.state = 1451; + this.state = 1509; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1452; + this.state = 1510; this.match(MySqlParser.RR_BRACKET); } } - this.state = 1456; + this.state = 1514; this.match(MySqlParser.KW_AS); - this.state = 1476; + this.state = 1534; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 107, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { case 1: { - this.state = 1457; + this.state = 1515; this.match(MySqlParser.LR_BRACKET); - this.state = 1459; + this.state = 1517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 1458; + this.state = 1516; this.withClause(); } } - this.state = 1461; + this.state = 1519; this.selectStatement(); - this.state = 1462; + this.state = 1520; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 1465; + this.state = 1523; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 1464; + this.state = 1522; this.withClause(); } } - this.state = 1467; + this.state = 1525; this.selectStatement(); - this.state = 1474; + this.state = 1532; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 106, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 116, this.context) ) { case 1: { - this.state = 1468; + this.state = 1526; this.match(MySqlParser.KW_WITH); - this.state = 1470; + this.state = 1528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 325 || _la === 450) { { - this.state = 1469; + this.state = 1527; localContext._checkOption = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 325 || _la === 450)) { @@ -4908,9 +5702,9 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1472; + this.state = 1530; this.match(MySqlParser.KW_CHECK); - this.state = 1473; + this.state = 1531; this.match(MySqlParser.KW_OPTION); } break; @@ -4936,38 +5730,38 @@ export class MySqlParser extends SQLParserBase { } public createDatabaseOption(): CreateDatabaseOptionContext { let localContext = new CreateDatabaseOptionContext(this.context, this.state); - this.enterRule(localContext, 52, MySqlParser.RULE_createDatabaseOption); + this.enterRule(localContext, 56, MySqlParser.RULE_createDatabaseOption); let _la: number; try { - this.state = 1511; + this.state = 1569; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 116, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1479; + this.state = 1537; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1478; + this.state = 1536; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1481; + this.state = 1539; this.charSet(); - this.state = 1483; + this.state = 1541; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1482; + this.state = 1540; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1487; + this.state = 1545; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -5015,13 +5809,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 1485; + this.state = 1543; this.charsetName(); } break; case MySqlParser.KW_DEFAULT: { - this.state = 1486; + this.state = 1544; this.match(MySqlParser.KW_DEFAULT); } break; @@ -5033,79 +5827,79 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1490; + this.state = 1548; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1489; + this.state = 1547; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1492; + this.state = 1550; this.match(MySqlParser.KW_COLLATE); - this.state = 1494; + this.state = 1552; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1493; + this.state = 1551; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1496; + this.state = 1554; this.collationName(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1498; + this.state = 1556; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1497; + this.state = 1555; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1500; + this.state = 1558; this.match(MySqlParser.KW_ENCRYPTION); - this.state = 1502; + this.state = 1560; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1501; + this.state = 1559; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1504; + this.state = 1562; this.match(MySqlParser.STRING_LITERAL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1505; + this.state = 1563; this.match(MySqlParser.KW_READ); - this.state = 1506; + this.state = 1564; this.match(MySqlParser.KW_ONLY); - this.state = 1508; + this.state = 1566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1507; + this.state = 1565; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1510; + this.state = 1568; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { this.errorHandler.recoverInline(this); @@ -5134,33 +5928,33 @@ export class MySqlParser extends SQLParserBase { } public charSet(): CharSetContext { let localContext = new CharSetContext(this.context, this.state); - this.enterRule(localContext, 54, MySqlParser.RULE_charSet); + this.enterRule(localContext, 58, MySqlParser.RULE_charSet); try { - this.state = 1518; + this.state = 1576; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CHARACTER: this.enterOuterAlt(localContext, 1); { - this.state = 1513; + this.state = 1571; this.match(MySqlParser.KW_CHARACTER); - this.state = 1514; + this.state = 1572; this.match(MySqlParser.KW_SET); } break; case MySqlParser.KW_CHARSET: this.enterOuterAlt(localContext, 2); { - this.state = 1515; + this.state = 1573; this.match(MySqlParser.KW_CHARSET); } break; case MySqlParser.KW_CHAR: this.enterOuterAlt(localContext, 3); { - this.state = 1516; + this.state = 1574; this.match(MySqlParser.KW_CHAR); - this.state = 1517; + this.state = 1575; this.match(MySqlParser.KW_SET); } break; @@ -5184,12 +5978,12 @@ export class MySqlParser extends SQLParserBase { } public currentUserExpression(): CurrentUserExpressionContext { let localContext = new CurrentUserExpressionContext(this.context, this.state); - this.enterRule(localContext, 56, MySqlParser.RULE_currentUserExpression); + this.enterRule(localContext, 60, MySqlParser.RULE_currentUserExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1520; + this.state = 1578; _la = this.tokenStream.LA(1); if(!(_la === 37 || _la === 678)) { this.errorHandler.recoverInline(this); @@ -5198,14 +5992,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1523; + this.state = 1581; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 118, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { case 1: { - this.state = 1521; + this.state = 1579; this.match(MySqlParser.LR_BRACKET); - this.state = 1522; + this.state = 1580; this.match(MySqlParser.RR_BRACKET); } break; @@ -5228,26 +6022,26 @@ export class MySqlParser extends SQLParserBase { } public ownerStatement(): OwnerStatementContext { let localContext = new OwnerStatementContext(this.context, this.state); - this.enterRule(localContext, 58, MySqlParser.RULE_ownerStatement); + this.enterRule(localContext, 62, MySqlParser.RULE_ownerStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1525; + this.state = 1583; this.match(MySqlParser.KW_DEFINER); - this.state = 1526; + this.state = 1584; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 1529; + this.state = 1587; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 119, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) { case 1: { - this.state = 1527; + this.state = 1585; this.userName(); } break; case 2: { - this.state = 1528; + this.state = 1586; this.currentUserExpression(); } break; @@ -5270,31 +6064,31 @@ export class MySqlParser extends SQLParserBase { } public scheduleExpression(): ScheduleExpressionContext { let localContext = new ScheduleExpressionContext(this.context, this.state); - this.enterRule(localContext, 60, MySqlParser.RULE_scheduleExpression); + this.enterRule(localContext, 64, MySqlParser.RULE_scheduleExpression); let _la: number; try { - this.state = 1565; + this.state = 1623; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AT: localContext = new PreciseScheduleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1531; + this.state = 1589; this.match(MySqlParser.KW_AT); - this.state = 1532; + this.state = 1590; this.timestampValue(); - this.state = 1536; + this.state = 1594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 853) { { { - this.state = 1533; + this.state = 1591; this.intervalExpr(); } } - this.state = 1538; + this.state = 1596; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5304,74 +6098,74 @@ export class MySqlParser extends SQLParserBase { localContext = new IntervalScheduleContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1539; + this.state = 1597; this.match(MySqlParser.KW_EVERY); - this.state = 1542; + this.state = 1600; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 121, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 131, this.context) ) { case 1: { - this.state = 1540; + this.state = 1598; this.decimalLiteral(); } break; case 2: { - this.state = 1541; + this.state = 1599; this.expression(0); } break; } - this.state = 1544; + this.state = 1602; this.intervalType(); - this.state = 1553; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 641) { { - this.state = 1545; + this.state = 1603; this.match(MySqlParser.KW_STARTS); - this.state = 1546; + this.state = 1604; (localContext as IntervalScheduleContext)._startTimestamp = this.timestampValue(); - this.state = 1550; + this.state = 1608; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 853) { { { - this.state = 1547; + this.state = 1605; (localContext as IntervalScheduleContext)._intervalExpr = this.intervalExpr(); (localContext as IntervalScheduleContext)._startIntervals.push((localContext as IntervalScheduleContext)._intervalExpr); } } - this.state = 1552; + this.state = 1610; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1563; + this.state = 1621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 379) { { - this.state = 1555; + this.state = 1613; this.match(MySqlParser.KW_ENDS); - this.state = 1556; + this.state = 1614; (localContext as IntervalScheduleContext)._endTimestamp = this.timestampValue(); - this.state = 1560; + this.state = 1618; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 853) { { { - this.state = 1557; + this.state = 1615; (localContext as IntervalScheduleContext)._intervalExpr = this.intervalExpr(); (localContext as IntervalScheduleContext)._endIntervals.push((localContext as IntervalScheduleContext)._intervalExpr); } } - this.state = 1562; + this.state = 1620; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5400,36 +6194,36 @@ export class MySqlParser extends SQLParserBase { } public timestampValue(): TimestampValueContext { let localContext = new TimestampValueContext(this.context, this.state); - this.enterRule(localContext, 62, MySqlParser.RULE_timestampValue); + this.enterRule(localContext, 66, MySqlParser.RULE_timestampValue); try { - this.state = 1571; + this.state = 1629; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1567; + this.state = 1625; this.match(MySqlParser.KW_CURRENT_TIMESTAMP); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1568; + this.state = 1626; this.stringLiteral(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1569; + this.state = 1627; this.decimalLiteral(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1570; + this.state = 1628; this.expression(0); } break; @@ -5451,31 +6245,31 @@ export class MySqlParser extends SQLParserBase { } public intervalExpr(): IntervalExprContext { let localContext = new IntervalExprContext(this.context, this.state); - this.enterRule(localContext, 64, MySqlParser.RULE_intervalExpr); + this.enterRule(localContext, 68, MySqlParser.RULE_intervalExpr); try { this.enterOuterAlt(localContext, 1); { - this.state = 1573; + this.state = 1631; this.match(MySqlParser.PLUS); - this.state = 1574; + this.state = 1632; this.match(MySqlParser.KW_INTERVAL); - this.state = 1577; + this.state = 1635; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { case 1: { - this.state = 1575; + this.state = 1633; this.decimalLiteral(); } break; case 2: { - this.state = 1576; + this.state = 1634; this.expression(0); } break; } - this.state = 1579; + this.state = 1637; this.intervalType(); } } @@ -5495,9 +6289,9 @@ export class MySqlParser extends SQLParserBase { } public intervalType(): IntervalTypeContext { let localContext = new IntervalTypeContext(this.context, this.state); - this.enterRule(localContext, 66, MySqlParser.RULE_intervalType); + this.enterRule(localContext, 70, MySqlParser.RULE_intervalType); try { - this.state = 1594; + this.state = 1652; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_QUARTER: @@ -5510,91 +6304,91 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_MICROSECOND: this.enterOuterAlt(localContext, 1); { - this.state = 1581; + this.state = 1639; this.intervalTypeBase(); } break; case MySqlParser.KW_YEAR: this.enterOuterAlt(localContext, 2); { - this.state = 1582; + this.state = 1640; this.match(MySqlParser.KW_YEAR); } break; case MySqlParser.KW_YEAR_MONTH: this.enterOuterAlt(localContext, 3); { - this.state = 1583; + this.state = 1641; this.match(MySqlParser.KW_YEAR_MONTH); } break; case MySqlParser.KW_DAY_HOUR: this.enterOuterAlt(localContext, 4); { - this.state = 1584; + this.state = 1642; this.match(MySqlParser.KW_DAY_HOUR); } break; case MySqlParser.KW_DAY_MINUTE: this.enterOuterAlt(localContext, 5); { - this.state = 1585; + this.state = 1643; this.match(MySqlParser.KW_DAY_MINUTE); } break; case MySqlParser.KW_DAY_SECOND: this.enterOuterAlt(localContext, 6); { - this.state = 1586; + this.state = 1644; this.match(MySqlParser.KW_DAY_SECOND); } break; case MySqlParser.KW_HOUR_MINUTE: this.enterOuterAlt(localContext, 7); { - this.state = 1587; + this.state = 1645; this.match(MySqlParser.KW_HOUR_MINUTE); } break; case MySqlParser.KW_HOUR_SECOND: this.enterOuterAlt(localContext, 8); { - this.state = 1588; + this.state = 1646; this.match(MySqlParser.KW_HOUR_SECOND); } break; case MySqlParser.KW_MINUTE_SECOND: this.enterOuterAlt(localContext, 9); { - this.state = 1589; + this.state = 1647; this.match(MySqlParser.KW_MINUTE_SECOND); } break; case MySqlParser.KW_SECOND_MICROSECOND: this.enterOuterAlt(localContext, 10); { - this.state = 1590; + this.state = 1648; this.match(MySqlParser.KW_SECOND_MICROSECOND); } break; case MySqlParser.KW_MINUTE_MICROSECOND: this.enterOuterAlt(localContext, 11); { - this.state = 1591; + this.state = 1649; this.match(MySqlParser.KW_MINUTE_MICROSECOND); } break; case MySqlParser.KW_HOUR_MICROSECOND: this.enterOuterAlt(localContext, 12); { - this.state = 1592; + this.state = 1650; this.match(MySqlParser.KW_HOUR_MICROSECOND); } break; case MySqlParser.KW_DAY_MICROSECOND: this.enterOuterAlt(localContext, 13); { - this.state = 1593; + this.state = 1651; this.match(MySqlParser.KW_DAY_MICROSECOND); } break; @@ -5618,33 +6412,33 @@ export class MySqlParser extends SQLParserBase { } public enableType(): EnableTypeContext { let localContext = new EnableTypeContext(this.context, this.state); - this.enterRule(localContext, 68, MySqlParser.RULE_enableType); + this.enterRule(localContext, 72, MySqlParser.RULE_enableType); try { - this.state = 1601; + this.state = 1659; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 130, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 140, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1596; + this.state = 1654; this.match(MySqlParser.KW_ENABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1597; + this.state = 1655; this.match(MySqlParser.KW_DISABLE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1598; + this.state = 1656; this.match(MySqlParser.KW_DISABLE); - this.state = 1599; + this.state = 1657; this.match(MySqlParser.KW_ON); - this.state = 1600; + this.state = 1658; this.match(MySqlParser.KW_SLAVE); } break; @@ -5666,14 +6460,14 @@ export class MySqlParser extends SQLParserBase { } public indexType(): IndexTypeContext { let localContext = new IndexTypeContext(this.context, this.state); - this.enterRule(localContext, 70, MySqlParser.RULE_indexType); + this.enterRule(localContext, 74, MySqlParser.RULE_indexType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1603; + this.state = 1661; this.match(MySqlParser.KW_USING); - this.state = 1604; + this.state = 1662; _la = this.tokenStream.LA(1); if(!(_la === 323 || _la === 418)) { this.errorHandler.recoverInline(this); @@ -5700,55 +6494,55 @@ export class MySqlParser extends SQLParserBase { } public indexOption(): IndexOptionContext { let localContext = new IndexOptionContext(this.context, this.state); - this.enterRule(localContext, 72, MySqlParser.RULE_indexOption); + this.enterRule(localContext, 76, MySqlParser.RULE_indexOption); let _la: number; try { - this.state = 1628; + this.state = 1686; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_KEY_BLOCK_SIZE: this.enterOuterAlt(localContext, 1); { - this.state = 1606; + this.state = 1664; this.match(MySqlParser.KW_KEY_BLOCK_SIZE); - this.state = 1608; + this.state = 1666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1607; + this.state = 1665; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1610; + this.state = 1668; this.fileSizeLiteral(); } break; case MySqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 1611; + this.state = 1669; this.indexType(); } break; case MySqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 1612; + this.state = 1670; this.match(MySqlParser.KW_WITH); - this.state = 1613; + this.state = 1671; this.match(MySqlParser.KW_PARSER); - this.state = 1614; + this.state = 1672; localContext._parserName = this.uid(); } break; case MySqlParser.KW_COMMENT: this.enterOuterAlt(localContext, 4); { - this.state = 1615; + this.state = 1673; this.match(MySqlParser.KW_COMMENT); - this.state = 1616; + this.state = 1674; this.match(MySqlParser.STRING_LITERAL); } break; @@ -5756,7 +6550,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VISIBLE: this.enterOuterAlt(localContext, 5); { - this.state = 1617; + this.state = 1675; _la = this.tokenStream.LA(1); if(!(_la === 435 || _la === 686)) { this.errorHandler.recoverInline(this); @@ -5770,38 +6564,38 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ENGINE_ATTRIBUTE: this.enterOuterAlt(localContext, 6); { - this.state = 1618; + this.state = 1676; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 1620; + this.state = 1678; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1619; + this.state = 1677; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1622; + this.state = 1680; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE: this.enterOuterAlt(localContext, 7); { - this.state = 1623; + this.state = 1681; this.match(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE); - this.state = 1625; + this.state = 1683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1624; + this.state = 1682; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1627; + this.state = 1685; this.match(MySqlParser.STRING_LITERAL); } break; @@ -5825,17 +6619,17 @@ export class MySqlParser extends SQLParserBase { } public procedureParameter(): ProcedureParameterContext { let localContext = new ProcedureParameterContext(this.context, this.state); - this.enterRule(localContext, 74, MySqlParser.RULE_procedureParameter); + this.enterRule(localContext, 78, MySqlParser.RULE_procedureParameter); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1631; + this.state = 1689; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80 || _la === 85 || _la === 126) { { - this.state = 1630; + this.state = 1688; localContext._direction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 80 || _la === 85 || _la === 126)) { @@ -5848,9 +6642,35 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1633; + this.state = 1691; localContext._paramName = this.uid(); - this.state = 1634; + this.state = 1692; + this.dataType(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionParameter(): FunctionParameterContext { + let localContext = new FunctionParameterContext(this.context, this.state); + this.enterRule(localContext, 80, MySqlParser.RULE_functionParameter); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1694; + localContext._paramName = this.uid(); + this.state = 1695; this.dataType(); } } @@ -5870,19 +6690,19 @@ export class MySqlParser extends SQLParserBase { } public routineOption(): RoutineOptionContext { let localContext = new RoutineOptionContext(this.context, this.state); - this.enterRule(localContext, 76, MySqlParser.RULE_routineOption); + this.enterRule(localContext, 82, MySqlParser.RULE_routineOption); let _la: number; try { - this.state = 1659; + this.state = 1720; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_COMMENT: localContext = new RoutineCommentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1636; + this.state = 1697; this.match(MySqlParser.KW_COMMENT); - this.state = 1637; + this.state = 1698; this.match(MySqlParser.STRING_LITERAL); } break; @@ -5890,9 +6710,9 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineLanguageContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1638; + this.state = 1699; this.match(MySqlParser.KW_LANGUAGE); - this.state = 1639; + this.state = 1700; this.match(MySqlParser.KW_SQL); } break; @@ -5901,17 +6721,17 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineBehaviorContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1641; + this.state = 1702; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 1640; + this.state = 1701; this.match(MySqlParser.KW_NOT); } } - this.state = 1643; + this.state = 1704; this.match(MySqlParser.KW_DETERMINISTIC); } break; @@ -5922,42 +6742,42 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineDataContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1654; + this.state = 1715; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CONTAINS: { - this.state = 1644; + this.state = 1705; this.match(MySqlParser.KW_CONTAINS); - this.state = 1645; + this.state = 1706; this.match(MySqlParser.KW_SQL); } break; case MySqlParser.KW_NO: { - this.state = 1646; + this.state = 1707; this.match(MySqlParser.KW_NO); - this.state = 1647; + this.state = 1708; this.match(MySqlParser.KW_SQL); } break; case MySqlParser.KW_READS: { - this.state = 1648; + this.state = 1709; this.match(MySqlParser.KW_READS); - this.state = 1649; + this.state = 1710; this.match(MySqlParser.KW_SQL); - this.state = 1650; + this.state = 1711; this.match(MySqlParser.KW_DATA); } break; case MySqlParser.KW_MODIFIES: { - this.state = 1651; + this.state = 1712; this.match(MySqlParser.KW_MODIFIES); - this.state = 1652; + this.state = 1713; this.match(MySqlParser.KW_SQL); - this.state = 1653; + this.state = 1714; this.match(MySqlParser.KW_DATA); } break; @@ -5970,11 +6790,11 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineSecurityContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1656; + this.state = 1717; this.match(MySqlParser.KW_SQL); - this.state = 1657; + this.state = 1718; this.match(MySqlParser.KW_SECURITY); - this.state = 1658; + this.state = 1719; (localContext as RoutineSecurityContext)._context = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 364 || _la === 436)) { @@ -6006,71 +6826,71 @@ export class MySqlParser extends SQLParserBase { } public serverOption(): ServerOptionContext { let localContext = new ServerOptionContext(this.context, this.state); - this.enterRule(localContext, 78, MySqlParser.RULE_serverOption); + this.enterRule(localContext, 84, MySqlParser.RULE_serverOption); try { - this.state = 1675; + this.state = 1736; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_HOST: this.enterOuterAlt(localContext, 1); { - this.state = 1661; + this.state = 1722; this.match(MySqlParser.KW_HOST); - this.state = 1662; + this.state = 1723; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_DATABASE: this.enterOuterAlt(localContext, 2); { - this.state = 1663; + this.state = 1724; this.match(MySqlParser.KW_DATABASE); - this.state = 1664; + this.state = 1725; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_USER: this.enterOuterAlt(localContext, 3); { - this.state = 1665; + this.state = 1726; this.match(MySqlParser.KW_USER); - this.state = 1666; + this.state = 1727; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_PASSWORD: this.enterOuterAlt(localContext, 4); { - this.state = 1667; + this.state = 1728; this.match(MySqlParser.KW_PASSWORD); - this.state = 1668; + this.state = 1729; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_SOCKET: this.enterOuterAlt(localContext, 5); { - this.state = 1669; + this.state = 1730; this.match(MySqlParser.KW_SOCKET); - this.state = 1670; + this.state = 1731; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_OWNER: this.enterOuterAlt(localContext, 6); { - this.state = 1671; + this.state = 1732; this.match(MySqlParser.KW_OWNER); - this.state = 1672; + this.state = 1733; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_PORT: this.enterOuterAlt(localContext, 7); { - this.state = 1673; + this.state = 1734; this.match(MySqlParser.KW_PORT); - this.state = 1674; + this.state = 1735; this.decimalLiteral(); } break; @@ -6094,32 +6914,32 @@ export class MySqlParser extends SQLParserBase { } public createDefinitions(): CreateDefinitionsContext { let localContext = new CreateDefinitionsContext(this.context, this.state); - this.enterRule(localContext, 80, MySqlParser.RULE_createDefinitions); + this.enterRule(localContext, 86, MySqlParser.RULE_createDefinitions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1677; + this.state = 1738; this.match(MySqlParser.LR_BRACKET); - this.state = 1678; + this.state = 1739; this.createDefinition(); - this.state = 1683; + this.state = 1744; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1679; + this.state = 1740; this.match(MySqlParser.COMMA); - this.state = 1680; + this.state = 1741; this.createDefinition(); } } - this.state = 1685; + this.state = 1746; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1686; + this.state = 1747; this.match(MySqlParser.RR_BRACKET); } } @@ -6139,25 +6959,25 @@ export class MySqlParser extends SQLParserBase { } public createDefinition(): CreateDefinitionContext { let localContext = new CreateDefinitionContext(this.context, this.state); - this.enterRule(localContext, 82, MySqlParser.RULE_createDefinition); + this.enterRule(localContext, 88, MySqlParser.RULE_createDefinition); let _la: number; try { - this.state = 1771; + this.state = 1832; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1688; + this.state = 1749; this.columnNameCreate(); - this.state = 1689; + this.state = 1750; this.columnDefinition(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1691; + this.state = 1752; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -6166,39 +6986,39 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1693; + this.state = 1754; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1692; + this.state = 1753; this.indexName(); } } - this.state = 1696; + this.state = 1757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1695; + this.state = 1756; this.indexType(); } } - this.state = 1698; + this.state = 1759; this.indexColumnNames(); - this.state = 1702; + this.state = 1763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1699; + this.state = 1760; this.indexOption(); } } - this.state = 1704; + this.state = 1765; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6207,7 +7027,7 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1705; + this.state = 1766; _la = this.tokenStream.LA(1); if(!(_la === 69 || _la === 161)) { this.errorHandler.recoverInline(this); @@ -6216,12 +7036,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1707; + this.state = 1768; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 1706; + this.state = 1767; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -6233,29 +7053,29 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1710; + this.state = 1771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1709; + this.state = 1770; this.indexName(); } } - this.state = 1712; + this.state = 1773; this.indexColumnNames(); - this.state = 1716; + this.state = 1777; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1713; + this.state = 1774; this.indexOption(); } } - this.state = 1718; + this.state = 1779; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6264,43 +7084,43 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1720; + this.state = 1781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1719; + this.state = 1780; this.constraintSymbol(); } } - this.state = 1722; + this.state = 1783; this.match(MySqlParser.KW_PRIMARY); - this.state = 1723; + this.state = 1784; this.match(MySqlParser.KW_KEY); - this.state = 1725; + this.state = 1786; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1724; + this.state = 1785; this.indexType(); } } - this.state = 1727; + this.state = 1788; this.indexColumnNames(); - this.state = 1731; + this.state = 1792; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1728; + this.state = 1789; this.indexOption(); } } - this.state = 1733; + this.state = 1794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6309,24 +7129,24 @@ export class MySqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1735; + this.state = 1796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1734; + this.state = 1795; this.constraintSymbol(); } } - this.state = 1737; + this.state = 1798; this.match(MySqlParser.KW_UNIQUE); - this.state = 1739; + this.state = 1800; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 1738; + this.state = 1799; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -6338,39 +7158,39 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1742; + this.state = 1803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1741; + this.state = 1802; this.indexName(); } } - this.state = 1745; + this.state = 1806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1744; + this.state = 1805; this.indexType(); } } - this.state = 1747; + this.state = 1808; this.indexColumnNames(); - this.state = 1751; + this.state = 1812; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1748; + this.state = 1809; this.indexOption(); } } - this.state = 1753; + this.state = 1814; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6379,53 +7199,53 @@ export class MySqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1755; + this.state = 1816; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1754; + this.state = 1815; this.constraintSymbol(); } } - this.state = 1757; + this.state = 1818; this.match(MySqlParser.KW_FOREIGN); - this.state = 1758; + this.state = 1819; this.match(MySqlParser.KW_KEY); - this.state = 1760; + this.state = 1821; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1759; + this.state = 1820; this.indexName(); } } - this.state = 1762; + this.state = 1823; this.indexColumnNames(); - this.state = 1763; + this.state = 1824; this.referenceDefinition(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1765; + this.state = 1826; this.match(MySqlParser.KW_CHECK); - this.state = 1766; + this.state = 1827; this.match(MySqlParser.LR_BRACKET); - this.state = 1767; + this.state = 1828; this.expression(0); - this.state = 1768; + this.state = 1829; this.match(MySqlParser.RR_BRACKET); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1770; + this.state = 1831; this.checkConstraintDefinition(); } break; @@ -6447,45 +7267,45 @@ export class MySqlParser extends SQLParserBase { } public checkConstraintDefinition(): CheckConstraintDefinitionContext { let localContext = new CheckConstraintDefinitionContext(this.context, this.state); - this.enterRule(localContext, 84, MySqlParser.RULE_checkConstraintDefinition); + this.enterRule(localContext, 90, MySqlParser.RULE_checkConstraintDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1774; + this.state = 1835; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1773; + this.state = 1834; this.constraintSymbol(); } } - this.state = 1776; + this.state = 1837; this.match(MySqlParser.KW_CHECK); - this.state = 1777; + this.state = 1838; this.match(MySqlParser.LR_BRACKET); - this.state = 1778; + this.state = 1839; this.expression(0); - this.state = 1779; + this.state = 1840; this.match(MySqlParser.RR_BRACKET); - this.state = 1784; + this.state = 1845; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 160, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 170, this.context) ) { case 1: { - this.state = 1781; + this.state = 1842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 1780; + this.state = 1841; this.match(MySqlParser.KW_NOT); } } - this.state = 1783; + this.state = 1844; this.match(MySqlParser.KW_ENFORCED); } break; @@ -6508,18 +7328,18 @@ export class MySqlParser extends SQLParserBase { } public constraintSymbol(): ConstraintSymbolContext { let localContext = new ConstraintSymbolContext(this.context, this.state); - this.enterRule(localContext, 86, MySqlParser.RULE_constraintSymbol); + this.enterRule(localContext, 92, MySqlParser.RULE_constraintSymbol); try { this.enterOuterAlt(localContext, 1); { - this.state = 1786; + this.state = 1847; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 1788; + this.state = 1849; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: { - this.state = 1787; + this.state = 1848; localContext._symbol_ = this.uid(); } break; @@ -6542,28 +7362,28 @@ export class MySqlParser extends SQLParserBase { } public columnDefinition(): ColumnDefinitionContext { let localContext = new ColumnDefinitionContext(this.context, this.state); - this.enterRule(localContext, 88, MySqlParser.RULE_columnDefinition); + this.enterRule(localContext, 94, MySqlParser.RULE_columnDefinition); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1790; + this.state = 1851; this.dataType(); - this.state = 1794; + this.state = 1855; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 172, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1791; + this.state = 1852; this.columnConstraint(); } } } - this.state = 1796; + this.state = 1857; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 172, this.context); } } } @@ -6583,10 +7403,10 @@ export class MySqlParser extends SQLParserBase { } public columnConstraint(): ColumnConstraintContext { let localContext = new ColumnConstraintContext(this.context, this.state); - this.enterRule(localContext, 90, MySqlParser.RULE_columnConstraint); + this.enterRule(localContext, 96, MySqlParser.RULE_columnConstraint); let _la: number; try { - this.state = 1840; + this.state = 1901; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NOT: @@ -6595,7 +7415,7 @@ export class MySqlParser extends SQLParserBase { localContext = new NullColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1797; + this.state = 1858; this.nullNotnull(); } break; @@ -6603,9 +7423,9 @@ export class MySqlParser extends SQLParserBase { localContext = new DefaultColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1798; + this.state = 1859; this.match(MySqlParser.KW_DEFAULT); - this.state = 1799; + this.state = 1860; this.defaultValue(); } break; @@ -6613,7 +7433,7 @@ export class MySqlParser extends SQLParserBase { localContext = new VisibilityColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1800; + this.state = 1861; this.match(MySqlParser.KW_VISIBLE); } break; @@ -6621,7 +7441,7 @@ export class MySqlParser extends SQLParserBase { localContext = new InvisibilityColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1801; + this.state = 1862; this.match(MySqlParser.KW_INVISIBLE); } break; @@ -6630,22 +7450,22 @@ export class MySqlParser extends SQLParserBase { localContext = new AutoIncrementColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1806; + this.state = 1867; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AUTO_INCREMENT: { - this.state = 1802; + this.state = 1863; this.match(MySqlParser.KW_AUTO_INCREMENT); } break; case MySqlParser.KW_ON: { - this.state = 1803; + this.state = 1864; this.match(MySqlParser.KW_ON); - this.state = 1804; + this.state = 1865; this.match(MySqlParser.KW_UPDATE); - this.state = 1805; + this.state = 1866; this.currentTimestamp(); } break; @@ -6659,17 +7479,17 @@ export class MySqlParser extends SQLParserBase { localContext = new PrimaryKeyColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 1809; + this.state = 1870; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 131) { { - this.state = 1808; + this.state = 1869; this.match(MySqlParser.KW_PRIMARY); } } - this.state = 1811; + this.state = 1872; this.match(MySqlParser.KW_KEY); } break; @@ -6677,14 +7497,14 @@ export class MySqlParser extends SQLParserBase { localContext = new UniqueKeyColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 1812; + this.state = 1873; this.match(MySqlParser.KW_UNIQUE); - this.state = 1814; + this.state = 1875; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { case 1: { - this.state = 1813; + this.state = 1874; this.match(MySqlParser.KW_KEY); } break; @@ -6695,9 +7515,9 @@ export class MySqlParser extends SQLParserBase { localContext = new CommentColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 1816; + this.state = 1877; this.match(MySqlParser.KW_COMMENT); - this.state = 1817; + this.state = 1878; this.match(MySqlParser.STRING_LITERAL); } break; @@ -6705,9 +7525,9 @@ export class MySqlParser extends SQLParserBase { localContext = new FormatColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 1818; + this.state = 1879; this.match(MySqlParser.KW_COLUMN_FORMAT); - this.state = 1819; + this.state = 1880; (localContext as FormatColumnConstraintContext)._colformat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 374 || _la === 403)) { @@ -6723,9 +7543,9 @@ export class MySqlParser extends SQLParserBase { localContext = new StorageColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 1820; + this.state = 1881; this.match(MySqlParser.KW_STORAGE); - this.state = 1821; + this.state = 1882; (localContext as StorageColumnConstraintContext)._storageval = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 370 || _la === 802)) { @@ -6741,7 +7561,7 @@ export class MySqlParser extends SQLParserBase { localContext = new ReferenceColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 1822; + this.state = 1883; this.referenceDefinition(); } break; @@ -6749,9 +7569,9 @@ export class MySqlParser extends SQLParserBase { localContext = new CollateColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 1823; + this.state = 1884; this.match(MySqlParser.KW_COLLATE); - this.state = 1824; + this.state = 1885; this.collationName(); } break; @@ -6760,32 +7580,32 @@ export class MySqlParser extends SQLParserBase { localContext = new GeneratedColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 1827; + this.state = 1888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 1825; + this.state = 1886; this.match(MySqlParser.KW_GENERATED); - this.state = 1826; + this.state = 1887; this.match(MySqlParser.KW_ALWAYS); } } - this.state = 1829; + this.state = 1890; this.match(MySqlParser.KW_AS); - this.state = 1830; + this.state = 1891; this.match(MySqlParser.LR_BRACKET); - this.state = 1831; + this.state = 1892; this.expression(0); - this.state = 1832; + this.state = 1893; this.match(MySqlParser.RR_BRACKET); - this.state = 1834; + this.state = 1895; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 648 || _la === 685) { { - this.state = 1833; + this.state = 1894; _la = this.tokenStream.LA(1); if(!(_la === 648 || _la === 685)) { this.errorHandler.recoverInline(this); @@ -6803,11 +7623,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SerialDefaultColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 1836; + this.state = 1897; this.match(MySqlParser.KW_SERIAL); - this.state = 1837; + this.state = 1898; this.match(MySqlParser.KW_DEFAULT); - this.state = 1838; + this.state = 1899; this.match(MySqlParser.KW_VALUE); } break; @@ -6816,7 +7636,7 @@ export class MySqlParser extends SQLParserBase { localContext = new CheckExprContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 1839; + this.state = 1900; this.checkConstraintDefinition(); } break; @@ -6840,33 +7660,33 @@ export class MySqlParser extends SQLParserBase { } public referenceDefinition(): ReferenceDefinitionContext { let localContext = new ReferenceDefinitionContext(this.context, this.state); - this.enterRule(localContext, 92, MySqlParser.RULE_referenceDefinition); + this.enterRule(localContext, 98, MySqlParser.RULE_referenceDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1842; + this.state = 1903; this.match(MySqlParser.KW_REFERENCES); - this.state = 1843; + this.state = 1904; this.tableName(); - this.state = 1845; + this.state = 1906; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 179, this.context) ) { case 1: { - this.state = 1844; + this.state = 1905; this.indexColumnNames(); } break; } - this.state = 1849; + this.state = 1910; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 110) { { - this.state = 1847; + this.state = 1908; this.match(MySqlParser.KW_MATCH); - this.state = 1848; + this.state = 1909; localContext._matchType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 408 || _la === 526 || _la === 597)) { @@ -6879,12 +7699,12 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1852; + this.state = 1913; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 181, this.context) ) { case 1: { - this.state = 1851; + this.state = 1912; this.referenceAction(); } break; @@ -6907,30 +7727,30 @@ export class MySqlParser extends SQLParserBase { } public referenceAction(): ReferenceActionContext { let localContext = new ReferenceActionContext(this.context, this.state); - this.enterRule(localContext, 94, MySqlParser.RULE_referenceAction); + this.enterRule(localContext, 100, MySqlParser.RULE_referenceAction); try { - this.state = 1870; + this.state = 1931; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 174, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1854; + this.state = 1915; this.match(MySqlParser.KW_ON); - this.state = 1855; + this.state = 1916; this.match(MySqlParser.KW_DELETE); - this.state = 1856; + this.state = 1917; localContext._onDelete = this.referenceControlType(); - this.state = 1860; + this.state = 1921; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 172, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 182, this.context) ) { case 1: { - this.state = 1857; + this.state = 1918; this.match(MySqlParser.KW_ON); - this.state = 1858; + this.state = 1919; this.match(MySqlParser.KW_UPDATE); - this.state = 1859; + this.state = 1920; localContext._onUpdate = this.referenceControlType(); } break; @@ -6940,22 +7760,22 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1862; + this.state = 1923; this.match(MySqlParser.KW_ON); - this.state = 1863; + this.state = 1924; this.match(MySqlParser.KW_UPDATE); - this.state = 1864; + this.state = 1925; localContext._onUpdate = this.referenceControlType(); - this.state = 1868; + this.state = 1929; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context) ) { case 1: { - this.state = 1865; + this.state = 1926; this.match(MySqlParser.KW_ON); - this.state = 1866; + this.state = 1927; this.match(MySqlParser.KW_DELETE); - this.state = 1867; + this.state = 1928; localContext._onDelete = this.referenceControlType(); } break; @@ -6980,49 +7800,49 @@ export class MySqlParser extends SQLParserBase { } public referenceControlType(): ReferenceControlTypeContext { let localContext = new ReferenceControlTypeContext(this.context, this.state); - this.enterRule(localContext, 96, MySqlParser.RULE_referenceControlType); + this.enterRule(localContext, 102, MySqlParser.RULE_referenceControlType); try { - this.state = 1880; + this.state = 1941; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1872; + this.state = 1933; this.match(MySqlParser.KW_RESTRICT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1873; + this.state = 1934; this.match(MySqlParser.KW_CASCADE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1874; + this.state = 1935; this.match(MySqlParser.KW_SET); - this.state = 1875; + this.state = 1936; this.match(MySqlParser.KW_NULL_LITERAL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1876; + this.state = 1937; this.match(MySqlParser.KW_NO); - this.state = 1877; + this.state = 1938; this.match(MySqlParser.KW_ACTION); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1878; + this.state = 1939; this.match(MySqlParser.KW_SET); - this.state = 1879; + this.state = 1940; this.match(MySqlParser.KW_DEFAULT); } break; @@ -7044,34 +7864,34 @@ export class MySqlParser extends SQLParserBase { } public tableOption(): TableOptionContext { let localContext = new TableOptionContext(this.context, this.state); - this.enterRule(localContext, 98, MySqlParser.RULE_tableOption); + this.enterRule(localContext, 104, MySqlParser.RULE_tableOption); let _la: number; try { - this.state = 2067; + this.state = 2128; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 223, this.context) ) { case 1: localContext = new TableOptionEngineContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1882; + this.state = 1943; this.match(MySqlParser.KW_ENGINE); - this.state = 1884; + this.state = 1945; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1883; + this.state = 1944; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1887; + this.state = 1948; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 177, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: { - this.state = 1886; + this.state = 1947; this.engineName(); } break; @@ -7082,19 +7902,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionEngineAttributeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1889; + this.state = 1950; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 1891; + this.state = 1952; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1890; + this.state = 1951; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1893; + this.state = 1954; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7102,19 +7922,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionAutoextendSizeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1894; + this.state = 1955; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 1896; + this.state = 1957; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1895; + this.state = 1956; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1898; + this.state = 1959; this.decimalLiteral(); } break; @@ -7122,19 +7942,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionAutoIncrementContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1899; + this.state = 1960; this.match(MySqlParser.KW_AUTO_INCREMENT); - this.state = 1901; + this.state = 1962; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1900; + this.state = 1961; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1903; + this.state = 1964; this.decimalLiteral(); } break; @@ -7142,19 +7962,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionAverageContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1904; + this.state = 1965; this.match(MySqlParser.KW_AVG_ROW_LENGTH); - this.state = 1906; + this.state = 1967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1905; + this.state = 1966; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1908; + this.state = 1969; this.decimalLiteral(); } break; @@ -7162,29 +7982,29 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCharsetContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 1910; + this.state = 1971; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1909; + this.state = 1970; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1912; + this.state = 1973; this.charSet(); - this.state = 1914; + this.state = 1975; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1913; + this.state = 1974; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1918; + this.state = 1979; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -7232,13 +8052,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 1916; + this.state = 1977; this.charsetName(); } break; case MySqlParser.KW_DEFAULT: { - this.state = 1917; + this.state = 1978; this.match(MySqlParser.KW_DEFAULT); } break; @@ -7251,7 +8071,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionChecksumContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 1920; + this.state = 1981; _la = this.tokenStream.LA(1); if(!(_la === 329 || _la === 522)) { this.errorHandler.recoverInline(this); @@ -7260,17 +8080,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1922; + this.state = 1983; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1921; + this.state = 1982; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1924; + this.state = 1985; (localContext as TableOptionChecksumContext)._boolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -7286,29 +8106,29 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCollateContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 1926; + this.state = 1987; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1925; + this.state = 1986; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1928; + this.state = 1989; this.match(MySqlParser.KW_COLLATE); - this.state = 1930; + this.state = 1991; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1929; + this.state = 1990; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1932; + this.state = 1993; this.collationName(); } break; @@ -7316,19 +8136,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCommentContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 1933; + this.state = 1994; this.match(MySqlParser.KW_COMMENT); - this.state = 1935; + this.state = 1996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1934; + this.state = 1995; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1937; + this.state = 1998; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7336,19 +8156,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCompressionContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 1938; + this.state = 1999; this.match(MySqlParser.KW_COMPRESSION); - this.state = 1940; + this.state = 2001; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1939; + this.state = 2000; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1942; + this.state = 2003; _la = this.tokenStream.LA(1); if(!(_la === 882 || _la === 889)) { this.errorHandler.recoverInline(this); @@ -7363,19 +8183,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionConnectionContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 1943; + this.state = 2004; this.match(MySqlParser.KW_CONNECTION); - this.state = 1945; + this.state = 2006; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1944; + this.state = 2005; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1947; + this.state = 2008; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7383,7 +8203,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionDataDirectoryContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 1948; + this.state = 2009; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -7392,19 +8212,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1949; + this.state = 2010; this.match(MySqlParser.KW_DIRECTORY); - this.state = 1951; + this.state = 2012; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1950; + this.state = 2011; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1953; + this.state = 2014; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7412,19 +8232,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionDelayContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 1954; + this.state = 2015; this.match(MySqlParser.KW_DELAY_KEY_WRITE); - this.state = 1956; + this.state = 2017; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1955; + this.state = 2016; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1958; + this.state = 2019; (localContext as TableOptionDelayContext)._boolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -7440,19 +8260,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionEncryptionContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 1959; + this.state = 2020; this.match(MySqlParser.KW_ENCRYPTION); - this.state = 1961; + this.state = 2022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1960; + this.state = 2021; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1963; + this.state = 2024; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7460,7 +8280,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPageCompressedContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 1964; + this.state = 2025; _la = this.tokenStream.LA(1); if(!(_la === 523 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -7469,17 +8289,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1966; + this.state = 2027; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1965; + this.state = 2026; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1968; + this.state = 2029; _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { this.errorHandler.recoverInline(this); @@ -7494,7 +8314,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPageCompressionLevelContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 1969; + this.state = 2030; _la = this.tokenStream.LA(1); if(!(_la === 524 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -7503,17 +8323,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1971; + this.state = 2032; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1970; + this.state = 2031; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1973; + this.state = 2034; this.decimalLiteral(); } break; @@ -7521,19 +8341,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionEncryptionKeyIdContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 1974; + this.state = 2035; this.match(MySqlParser.KW_ENCRYPTION_KEY_ID); - this.state = 1976; + this.state = 2037; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1975; + this.state = 2036; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1978; + this.state = 2039; this.decimalLiteral(); } break; @@ -7541,21 +8361,21 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionIndexDirectoryContext(localContext); this.enterOuterAlt(localContext, 18); { - this.state = 1979; + this.state = 2040; this.match(MySqlParser.KW_INDEX); - this.state = 1980; + this.state = 2041; this.match(MySqlParser.KW_DIRECTORY); - this.state = 1982; + this.state = 2043; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1981; + this.state = 2042; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1984; + this.state = 2045; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7563,19 +8383,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionInsertMethodContext(localContext); this.enterOuterAlt(localContext, 19); { - this.state = 1985; + this.state = 2046; this.match(MySqlParser.KW_INSERT_METHOD); - this.state = 1987; + this.state = 2048; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1986; + this.state = 2047; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1989; + this.state = 2050; (localContext as TableOptionInsertMethodContext)._insertMethod = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 402 || _la === 445 || _la === 502)) { @@ -7591,19 +8411,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionKeyBlockSizeContext(localContext); this.enterOuterAlt(localContext, 20); { - this.state = 1990; + this.state = 2051; this.match(MySqlParser.KW_KEY_BLOCK_SIZE); - this.state = 1992; + this.state = 2053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1991; + this.state = 2052; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1994; + this.state = 2055; this.fileSizeLiteral(); } break; @@ -7611,19 +8431,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionMaxRowsContext(localContext); this.enterOuterAlt(localContext, 21); { - this.state = 1995; + this.state = 2056; this.match(MySqlParser.KW_MAX_ROWS); - this.state = 1997; + this.state = 2058; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1996; + this.state = 2057; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1999; + this.state = 2060; this.decimalLiteral(); } break; @@ -7631,19 +8451,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionMinRowsContext(localContext); this.enterOuterAlt(localContext, 22); { - this.state = 2000; + this.state = 2061; this.match(MySqlParser.KW_MIN_ROWS); - this.state = 2002; + this.state = 2063; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2001; + this.state = 2062; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2004; + this.state = 2065; this.decimalLiteral(); } break; @@ -7651,19 +8471,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPackKeysContext(localContext); this.enterOuterAlt(localContext, 23); { - this.state = 2005; + this.state = 2066; this.match(MySqlParser.KW_PACK_KEYS); - this.state = 2007; + this.state = 2068; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2006; + this.state = 2067; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2009; + this.state = 2070; (localContext as TableOptionPackKeysContext)._extBoolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { @@ -7679,19 +8499,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPasswordContext(localContext); this.enterOuterAlt(localContext, 24); { - this.state = 2010; + this.state = 2071; this.match(MySqlParser.KW_PASSWORD); - this.state = 2012; + this.state = 2073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2011; + this.state = 2072; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2014; + this.state = 2075; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7699,19 +8519,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionRowFormatContext(localContext); this.enterOuterAlt(localContext, 25); { - this.state = 2015; + this.state = 2076; this.match(MySqlParser.KW_ROW_FORMAT); - this.state = 2017; + this.state = 2078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2016; + this.state = 2077; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2019; + this.state = 2080; (localContext as TableOptionRowFormatContext)._rowFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 342 || _la === 345 || _la === 374 || _la === 403 || _la === 554 || _la === 889)) { @@ -7727,9 +8547,9 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionStartTransactionContext(localContext); this.enterOuterAlt(localContext, 26); { - this.state = 2020; + this.state = 2081; this.match(MySqlParser.KW_START); - this.state = 2021; + this.state = 2082; this.match(MySqlParser.KW_TRANSACTION); } break; @@ -7737,19 +8557,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionSecondaryEngineAttributeContext(localContext); this.enterOuterAlt(localContext, 27); { - this.state = 2022; + this.state = 2083; this.match(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE); - this.state = 2024; + this.state = 2085; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2023; + this.state = 2084; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2026; + this.state = 2087; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7757,19 +8577,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionRecalculationContext(localContext); this.enterOuterAlt(localContext, 28); { - this.state = 2027; + this.state = 2088; this.match(MySqlParser.KW_STATS_AUTO_RECALC); - this.state = 2029; + this.state = 2090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2028; + this.state = 2089; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2031; + this.state = 2092; (localContext as TableOptionRecalculationContext)._extBoolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { @@ -7785,19 +8605,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPersistentContext(localContext); this.enterOuterAlt(localContext, 29); { - this.state = 2032; + this.state = 2093; this.match(MySqlParser.KW_STATS_PERSISTENT); - this.state = 2034; + this.state = 2095; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2033; + this.state = 2094; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2036; + this.state = 2097; (localContext as TableOptionPersistentContext)._extBoolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { @@ -7813,24 +8633,24 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionSamplePageContext(localContext); this.enterOuterAlt(localContext, 30); { - this.state = 2037; + this.state = 2098; this.match(MySqlParser.KW_STATS_SAMPLE_PAGES); - this.state = 2039; + this.state = 2100; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2038; + this.state = 2099; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2043; + this.state = 2104; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 2041; + this.state = 2102; this.match(MySqlParser.KW_DEFAULT); } break; @@ -7841,7 +8661,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 2042; + this.state = 2103; this.decimalLiteral(); } break; @@ -7854,16 +8674,16 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTablespaceContext(localContext); this.enterOuterAlt(localContext, 31); { - this.state = 2045; + this.state = 2106; this.match(MySqlParser.KW_TABLESPACE); - this.state = 2046; + this.state = 2107; this.tablespaceName(); - this.state = 2048; + this.state = 2109; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { case 1: { - this.state = 2047; + this.state = 2108; this.tablespaceStorage(); } break; @@ -7874,11 +8694,11 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTableTypeContext(localContext); this.enterOuterAlt(localContext, 32); { - this.state = 2050; + this.state = 2111; this.match(MySqlParser.KW_TABLE_TYPE); - this.state = 2051; + this.state = 2112; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2052; + this.state = 2113; this.tableType(); } break; @@ -7886,7 +8706,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTablespaceContext(localContext); this.enterOuterAlt(localContext, 33); { - this.state = 2053; + this.state = 2114; this.tablespaceStorage(); } break; @@ -7894,19 +8714,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTransactionalContext(localContext); this.enterOuterAlt(localContext, 34); { - this.state = 2054; + this.state = 2115; this.match(MySqlParser.KW_TRANSACTIONAL); - this.state = 2056; + this.state = 2117; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2055; + this.state = 2116; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2058; + this.state = 2119; _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { this.errorHandler.recoverInline(this); @@ -7921,23 +8741,23 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionUnionContext(localContext); this.enterOuterAlt(localContext, 35); { - this.state = 2059; + this.state = 2120; this.match(MySqlParser.KW_UNION); - this.state = 2061; + this.state = 2122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2060; + this.state = 2121; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2063; + this.state = 2124; this.match(MySqlParser.LR_BRACKET); - this.state = 2064; + this.state = 2125; this.tableNames(); - this.state = 2065; + this.state = 2126; this.match(MySqlParser.RR_BRACKET); } break; @@ -7959,12 +8779,12 @@ export class MySqlParser extends SQLParserBase { } public tableType(): TableTypeContext { let localContext = new TableTypeContext(this.context, this.state); - this.enterRule(localContext, 100, MySqlParser.RULE_tableType); + this.enterRule(localContext, 106, MySqlParser.RULE_tableType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2069; + this.state = 2130; _la = this.tokenStream.LA(1); if(!(_la === 494 || _la === 506)) { this.errorHandler.recoverInline(this); @@ -7991,14 +8811,14 @@ export class MySqlParser extends SQLParserBase { } public tablespaceStorage(): TablespaceStorageContext { let localContext = new TablespaceStorageContext(this.context, this.state); - this.enterRule(localContext, 102, MySqlParser.RULE_tablespaceStorage); + this.enterRule(localContext, 108, MySqlParser.RULE_tablespaceStorage); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2071; + this.state = 2132; this.match(MySqlParser.KW_STORAGE); - this.state = 2072; + this.state = 2133; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 370 || _la === 802)) { this.errorHandler.recoverInline(this); @@ -8025,48 +8845,48 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinitions(): PartitionDefinitionsContext { let localContext = new PartitionDefinitionsContext(this.context, this.state); - this.enterRule(localContext, 104, MySqlParser.RULE_partitionDefinitions); + this.enterRule(localContext, 110, MySqlParser.RULE_partitionDefinitions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2074; + this.state = 2135; this.match(MySqlParser.KW_PARTITION); - this.state = 2075; + this.state = 2136; this.match(MySqlParser.KW_BY); - this.state = 2076; + this.state = 2137; this.partitionFunctionDefinition(); - this.state = 2079; + this.state = 2140; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 528) { { - this.state = 2077; + this.state = 2138; this.match(MySqlParser.KW_PARTITIONS); - this.state = 2078; + this.state = 2139; localContext._count = this.decimalLiteral(); } } - this.state = 2088; + this.state = 2149; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 652) { { - this.state = 2081; + this.state = 2142; this.match(MySqlParser.KW_SUBPARTITION); - this.state = 2082; + this.state = 2143; this.match(MySqlParser.KW_BY); - this.state = 2083; + this.state = 2144; this.subpartitionFunctionDefinition(); - this.state = 2086; + this.state = 2147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 653) { { - this.state = 2084; + this.state = 2145; this.match(MySqlParser.KW_SUBPARTITIONS); - this.state = 2085; + this.state = 2146; localContext._subCount = this.decimalLiteral(); } } @@ -8074,32 +8894,32 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2101; + this.state = 2162; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 228, this.context) ) { case 1: { - this.state = 2090; + this.state = 2151; this.match(MySqlParser.LR_BRACKET); - this.state = 2091; + this.state = 2152; this.partitionDefinition(); - this.state = 2096; + this.state = 2157; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2092; + this.state = 2153; this.match(MySqlParser.COMMA); - this.state = 2093; + this.state = 2154; this.partitionDefinition(); } } - this.state = 2098; + this.state = 2159; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2099; + this.state = 2160; this.match(MySqlParser.RR_BRACKET); } break; @@ -8122,33 +8942,33 @@ export class MySqlParser extends SQLParserBase { } public partitionFunctionDefinition(): PartitionFunctionDefinitionContext { let localContext = new PartitionFunctionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 106, MySqlParser.RULE_partitionFunctionDefinition); + this.enterRule(localContext, 112, MySqlParser.RULE_partitionFunctionDefinition); let _la: number; try { - this.state = 2149; + this.state = 2210; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 225, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context) ) { case 1: localContext = new PartitionFunctionHashContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2104; + this.state = 2165; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2103; + this.state = 2164; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2106; + this.state = 2167; this.match(MySqlParser.KW_HASH); - this.state = 2107; + this.state = 2168; this.match(MySqlParser.LR_BRACKET); - this.state = 2108; + this.state = 2169; this.expression(0); - this.state = 2109; + this.state = 2170; this.match(MySqlParser.RR_BRACKET); } break; @@ -8156,28 +8976,28 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionFunctionKeyContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2112; + this.state = 2173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2111; + this.state = 2172; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2114; + this.state = 2175; this.match(MySqlParser.KW_KEY); - this.state = 2118; + this.state = 2179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 2115; + this.state = 2176; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2116; + this.state = 2177; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2117; + this.state = 2178; (localContext as PartitionFunctionKeyContext)._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 872 || _la === 873)) { @@ -8190,19 +9010,19 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2120; + this.state = 2181; this.match(MySqlParser.LR_BRACKET); - this.state = 2122; + this.state = 2183; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 222, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { case 1: { - this.state = 2121; + this.state = 2182; this.columnNames(); } break; } - this.state = 2124; + this.state = 2185; this.match(MySqlParser.RR_BRACKET); } break; @@ -8210,30 +9030,30 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionFunctionRangeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2125; + this.state = 2186; this.match(MySqlParser.KW_RANGE); - this.state = 2135; + this.state = 2196; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LR_BRACKET: { - this.state = 2126; + this.state = 2187; this.match(MySqlParser.LR_BRACKET); - this.state = 2127; + this.state = 2188; this.expression(0); - this.state = 2128; + this.state = 2189; this.match(MySqlParser.RR_BRACKET); } break; case MySqlParser.KW_COLUMNS: { - this.state = 2130; + this.state = 2191; this.match(MySqlParser.KW_COLUMNS); - this.state = 2131; + this.state = 2192; this.match(MySqlParser.LR_BRACKET); - this.state = 2132; + this.state = 2193; this.columnNames(); - this.state = 2133; + this.state = 2194; this.match(MySqlParser.RR_BRACKET); } break; @@ -8246,30 +9066,30 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionFunctionListContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2137; + this.state = 2198; this.match(MySqlParser.KW_LIST); - this.state = 2147; + this.state = 2208; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LR_BRACKET: { - this.state = 2138; + this.state = 2199; this.match(MySqlParser.LR_BRACKET); - this.state = 2139; + this.state = 2200; this.expression(0); - this.state = 2140; + this.state = 2201; this.match(MySqlParser.RR_BRACKET); } break; case MySqlParser.KW_COLUMNS: { - this.state = 2142; + this.state = 2203; this.match(MySqlParser.KW_COLUMNS); - this.state = 2143; + this.state = 2204; this.match(MySqlParser.LR_BRACKET); - this.state = 2144; + this.state = 2205; this.columnNames(); - this.state = 2145; + this.state = 2206; this.match(MySqlParser.RR_BRACKET); } break; @@ -8296,33 +9116,33 @@ export class MySqlParser extends SQLParserBase { } public subpartitionFunctionDefinition(): SubpartitionFunctionDefinitionContext { let localContext = new SubpartitionFunctionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 108, MySqlParser.RULE_subpartitionFunctionDefinition); + this.enterRule(localContext, 114, MySqlParser.RULE_subpartitionFunctionDefinition); let _la: number; try { - this.state = 2172; + this.state = 2233; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 229, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 239, this.context) ) { case 1: localContext = new SubPartitionFunctionHashContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2152; + this.state = 2213; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2151; + this.state = 2212; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2154; + this.state = 2215; this.match(MySqlParser.KW_HASH); - this.state = 2155; + this.state = 2216; this.match(MySqlParser.LR_BRACKET); - this.state = 2156; + this.state = 2217; this.expression(0); - this.state = 2157; + this.state = 2218; this.match(MySqlParser.RR_BRACKET); } break; @@ -8330,28 +9150,28 @@ export class MySqlParser extends SQLParserBase { localContext = new SubPartitionFunctionKeyContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2160; + this.state = 2221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2159; + this.state = 2220; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2162; + this.state = 2223; this.match(MySqlParser.KW_KEY); - this.state = 2166; + this.state = 2227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 2163; + this.state = 2224; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2164; + this.state = 2225; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2165; + this.state = 2226; (localContext as SubPartitionFunctionKeyContext)._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 872 || _la === 873)) { @@ -8364,11 +9184,11 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2168; + this.state = 2229; this.match(MySqlParser.LR_BRACKET); - this.state = 2169; + this.state = 2230; this.columnNames(); - this.state = 2170; + this.state = 2231; this.match(MySqlParser.RR_BRACKET); } break; @@ -8390,88 +9210,88 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinition(): PartitionDefinitionContext { let localContext = new PartitionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 110, MySqlParser.RULE_partitionDefinition); + this.enterRule(localContext, 116, MySqlParser.RULE_partitionDefinition); let _la: number; try { - this.state = 2320; + this.state = 2381; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context) ) { case 1: localContext = new PartitionComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2174; + this.state = 2235; this.match(MySqlParser.KW_PARTITION); - this.state = 2175; + this.state = 2236; this.partitionName(); - this.state = 2176; + this.state = 2237; this.match(MySqlParser.KW_VALUES); - this.state = 2177; + this.state = 2238; this.match(MySqlParser.KW_LESS); - this.state = 2178; + this.state = 2239; this.match(MySqlParser.KW_THAN); - this.state = 2179; + this.state = 2240; this.match(MySqlParser.LR_BRACKET); - this.state = 2180; + this.state = 2241; this.partitionDefinerAtom(); - this.state = 2185; + this.state = 2246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2181; + this.state = 2242; this.match(MySqlParser.COMMA); - this.state = 2182; + this.state = 2243; this.partitionDefinerAtom(); } } - this.state = 2187; + this.state = 2248; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2188; + this.state = 2249; this.match(MySqlParser.RR_BRACKET); - this.state = 2192; + this.state = 2253; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2189; + this.state = 2250; this.partitionOption(); } } - this.state = 2194; + this.state = 2255; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2206; + this.state = 2267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2195; + this.state = 2256; this.match(MySqlParser.LR_BRACKET); - this.state = 2196; + this.state = 2257; this.subpartitionDefinition(); - this.state = 2201; + this.state = 2262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2197; + this.state = 2258; this.match(MySqlParser.COMMA); - this.state = 2198; + this.state = 2259; this.subpartitionDefinition(); } } - this.state = 2203; + this.state = 2264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2204; + this.state = 2265; this.match(MySqlParser.RR_BRACKET); } } @@ -8482,58 +9302,58 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2208; + this.state = 2269; this.match(MySqlParser.KW_PARTITION); - this.state = 2209; + this.state = 2270; this.partitionName(); - this.state = 2210; + this.state = 2271; this.match(MySqlParser.KW_VALUES); - this.state = 2211; + this.state = 2272; this.match(MySqlParser.KW_LESS); - this.state = 2212; + this.state = 2273; this.match(MySqlParser.KW_THAN); - this.state = 2213; + this.state = 2274; this.partitionDefinerAtom(); - this.state = 2217; + this.state = 2278; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2214; + this.state = 2275; this.partitionOption(); } } - this.state = 2219; + this.state = 2280; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2231; + this.state = 2292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2220; + this.state = 2281; this.match(MySqlParser.LR_BRACKET); - this.state = 2221; + this.state = 2282; this.subpartitionDefinition(); - this.state = 2226; + this.state = 2287; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2222; + this.state = 2283; this.match(MySqlParser.COMMA); - this.state = 2223; + this.state = 2284; this.subpartitionDefinition(); } } - this.state = 2228; + this.state = 2289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2229; + this.state = 2290; this.match(MySqlParser.RR_BRACKET); } } @@ -8544,76 +9364,76 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionListAtomContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2233; + this.state = 2294; this.match(MySqlParser.KW_PARTITION); - this.state = 2234; + this.state = 2295; this.partitionName(); - this.state = 2235; + this.state = 2296; this.match(MySqlParser.KW_VALUES); - this.state = 2236; + this.state = 2297; this.match(MySqlParser.KW_IN); - this.state = 2237; + this.state = 2298; this.match(MySqlParser.LR_BRACKET); - this.state = 2238; + this.state = 2299; this.partitionDefinerAtom(); - this.state = 2243; + this.state = 2304; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2239; + this.state = 2300; this.match(MySqlParser.COMMA); - this.state = 2240; + this.state = 2301; this.partitionDefinerAtom(); } } - this.state = 2245; + this.state = 2306; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2246; + this.state = 2307; this.match(MySqlParser.RR_BRACKET); - this.state = 2250; + this.state = 2311; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2247; + this.state = 2308; this.partitionOption(); } } - this.state = 2252; + this.state = 2313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2264; + this.state = 2325; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2253; + this.state = 2314; this.match(MySqlParser.LR_BRACKET); - this.state = 2254; + this.state = 2315; this.subpartitionDefinition(); - this.state = 2259; + this.state = 2320; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2255; + this.state = 2316; this.match(MySqlParser.COMMA); - this.state = 2256; + this.state = 2317; this.subpartitionDefinition(); } } - this.state = 2261; + this.state = 2322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2262; + this.state = 2323; this.match(MySqlParser.RR_BRACKET); } } @@ -8624,76 +9444,76 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionListVectorContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2266; + this.state = 2327; this.match(MySqlParser.KW_PARTITION); - this.state = 2267; + this.state = 2328; this.partitionName(); - this.state = 2268; + this.state = 2329; this.match(MySqlParser.KW_VALUES); - this.state = 2269; + this.state = 2330; this.match(MySqlParser.KW_IN); - this.state = 2270; + this.state = 2331; this.match(MySqlParser.LR_BRACKET); - this.state = 2271; + this.state = 2332; this.partitionDefinerVector(); - this.state = 2276; + this.state = 2337; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2272; + this.state = 2333; this.match(MySqlParser.COMMA); - this.state = 2273; + this.state = 2334; this.partitionDefinerVector(); } } - this.state = 2278; + this.state = 2339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2279; + this.state = 2340; this.match(MySqlParser.RR_BRACKET); - this.state = 2283; + this.state = 2344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2280; + this.state = 2341; this.partitionOption(); } } - this.state = 2285; + this.state = 2346; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2297; + this.state = 2358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2286; + this.state = 2347; this.match(MySqlParser.LR_BRACKET); - this.state = 2287; + this.state = 2348; this.subpartitionDefinition(); - this.state = 2292; + this.state = 2353; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2288; + this.state = 2349; this.match(MySqlParser.COMMA); - this.state = 2289; + this.state = 2350; this.subpartitionDefinition(); } } - this.state = 2294; + this.state = 2355; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2295; + this.state = 2356; this.match(MySqlParser.RR_BRACKET); } } @@ -8704,50 +9524,50 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionSimpleContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2299; + this.state = 2360; this.match(MySqlParser.KW_PARTITION); - this.state = 2300; + this.state = 2361; this.partitionName(); - this.state = 2304; + this.state = 2365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2301; + this.state = 2362; this.partitionOption(); } } - this.state = 2306; + this.state = 2367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2318; + this.state = 2379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2307; + this.state = 2368; this.match(MySqlParser.LR_BRACKET); - this.state = 2308; + this.state = 2369; this.subpartitionDefinition(); - this.state = 2313; + this.state = 2374; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2309; + this.state = 2370; this.match(MySqlParser.COMMA); - this.state = 2310; + this.state = 2371; this.subpartitionDefinition(); } } - this.state = 2315; + this.state = 2376; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2316; + this.state = 2377; this.match(MySqlParser.RR_BRACKET); } } @@ -8772,29 +9592,29 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinerAtom(): PartitionDefinerAtomContext { let localContext = new PartitionDefinerAtomContext(this.context, this.state); - this.enterRule(localContext, 112, MySqlParser.RULE_partitionDefinerAtom); + this.enterRule(localContext, 118, MySqlParser.RULE_partitionDefinerAtom); try { - this.state = 2325; + this.state = 2386; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 259, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2322; + this.state = 2383; this.constant(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2323; + this.state = 2384; this.expression(0); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2324; + this.state = 2385; this.match(MySqlParser.KW_MAXVALUE); } break; @@ -8816,32 +9636,32 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinerVector(): PartitionDefinerVectorContext { let localContext = new PartitionDefinerVectorContext(this.context, this.state); - this.enterRule(localContext, 114, MySqlParser.RULE_partitionDefinerVector); + this.enterRule(localContext, 120, MySqlParser.RULE_partitionDefinerVector); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2327; + this.state = 2388; this.match(MySqlParser.LR_BRACKET); - this.state = 2328; + this.state = 2389; this.partitionDefinerAtom(); - this.state = 2331; + this.state = 2392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2329; + this.state = 2390; this.match(MySqlParser.COMMA); - this.state = 2330; + this.state = 2391; this.partitionDefinerAtom(); } } - this.state = 2333; + this.state = 2394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 868); - this.state = 2335; + this.state = 2396; this.match(MySqlParser.RR_BRACKET); } } @@ -8861,26 +9681,26 @@ export class MySqlParser extends SQLParserBase { } public subpartitionDefinition(): SubpartitionDefinitionContext { let localContext = new SubpartitionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 116, MySqlParser.RULE_subpartitionDefinition); + this.enterRule(localContext, 122, MySqlParser.RULE_subpartitionDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2337; + this.state = 2398; this.match(MySqlParser.KW_SUBPARTITION); - this.state = 2338; + this.state = 2399; localContext._logicalName = this.uid(); - this.state = 2342; + this.state = 2403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2339; + this.state = 2400; this.partitionOption(); } } - this.state = 2344; + this.state = 2405; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8902,10 +9722,10 @@ export class MySqlParser extends SQLParserBase { } public partitionOption(): PartitionOptionContext { let localContext = new PartitionOptionContext(this.context, this.state); - this.enterRule(localContext, 118, MySqlParser.RULE_partitionOption); + this.enterRule(localContext, 124, MySqlParser.RULE_partitionOption); let _la: number; try { - this.state = 2393; + this.state = 2454; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: @@ -8914,39 +9734,39 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionEngineContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2346; + this.state = 2407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 2345; + this.state = 2406; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 2349; + this.state = 2410; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 647) { { - this.state = 2348; + this.state = 2409; this.match(MySqlParser.KW_STORAGE); } } - this.state = 2351; + this.state = 2412; this.match(MySqlParser.KW_ENGINE); - this.state = 2353; + this.state = 2414; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2352; + this.state = 2413; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2355; + this.state = 2416; this.engineName(); } break; @@ -8954,19 +9774,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionCommentContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2356; + this.state = 2417; this.match(MySqlParser.KW_COMMENT); - this.state = 2358; + this.state = 2419; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2357; + this.state = 2418; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2360; + this.state = 2421; (localContext as PartitionOptionCommentContext)._comment = this.match(MySqlParser.STRING_LITERAL); } break; @@ -8974,21 +9794,21 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionDataDirectoryContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2361; + this.state = 2422; this.match(MySqlParser.KW_DATA); - this.state = 2362; + this.state = 2423; this.match(MySqlParser.KW_DIRECTORY); - this.state = 2364; + this.state = 2425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2363; + this.state = 2424; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2366; + this.state = 2427; (localContext as PartitionOptionDataDirectoryContext)._dataDirectory = this.match(MySqlParser.STRING_LITERAL); } break; @@ -8996,21 +9816,21 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionIndexDirectoryContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2367; + this.state = 2428; this.match(MySqlParser.KW_INDEX); - this.state = 2368; + this.state = 2429; this.match(MySqlParser.KW_DIRECTORY); - this.state = 2370; + this.state = 2431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2369; + this.state = 2430; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2372; + this.state = 2433; (localContext as PartitionOptionIndexDirectoryContext)._indexDirectory = this.match(MySqlParser.STRING_LITERAL); } break; @@ -9018,19 +9838,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionMaxRowsContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2373; + this.state = 2434; this.match(MySqlParser.KW_MAX_ROWS); - this.state = 2375; + this.state = 2436; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2374; + this.state = 2435; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2377; + this.state = 2438; (localContext as PartitionOptionMaxRowsContext)._maxRows = this.decimalLiteral(); } break; @@ -9038,19 +9858,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionMinRowsContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2378; + this.state = 2439; this.match(MySqlParser.KW_MIN_ROWS); - this.state = 2380; + this.state = 2441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2379; + this.state = 2440; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2382; + this.state = 2443; (localContext as PartitionOptionMinRowsContext)._minRows = this.decimalLiteral(); } break; @@ -9058,19 +9878,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionTablespaceContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2383; + this.state = 2444; this.match(MySqlParser.KW_TABLESPACE); - this.state = 2385; + this.state = 2446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2384; + this.state = 2445; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2387; + this.state = 2448; this.tablespaceName(); } break; @@ -9078,19 +9898,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionNodeGroupContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2388; + this.state = 2449; this.match(MySqlParser.KW_NODEGROUP); - this.state = 2390; + this.state = 2451; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2389; + this.state = 2450; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2392; + this.state = 2453; (localContext as PartitionOptionNodeGroupContext)._nodegroup = this.uid(); } break; @@ -9114,19 +9934,19 @@ export class MySqlParser extends SQLParserBase { } public alterDatabase(): AlterDatabaseContext { let localContext = new AlterDatabaseContext(this.context, this.state); - this.enterRule(localContext, 120, MySqlParser.RULE_alterDatabase); + this.enterRule(localContext, 126, MySqlParser.RULE_alterDatabase); let _la: number; try { - this.state = 2413; + this.state = 2474; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { case 1: localContext = new AlterSimpleDatabaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2395; + this.state = 2456; this.match(MySqlParser.KW_ALTER); - this.state = 2396; + this.state = 2457; (localContext as AlterSimpleDatabaseContext)._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -9136,27 +9956,27 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2398; + this.state = 2459; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { case 1: { - this.state = 2397; + this.state = 2458; this.databaseName(); } break; } - this.state = 2401; + this.state = 2462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2400; + this.state = 2461; this.createDatabaseOption(); } } - this.state = 2403; + this.state = 2464; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 135 || _la === 224 || _la === 376 || _la === 823); @@ -9166,9 +9986,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterUpgradeNameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2405; + this.state = 2466; this.match(MySqlParser.KW_ALTER); - this.state = 2406; + this.state = 2467; (localContext as AlterUpgradeNameContext)._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -9178,15 +9998,15 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2407; + this.state = 2468; this.databaseName(); - this.state = 2408; + this.state = 2469; this.match(MySqlParser.KW_UPGRADE); - this.state = 2409; + this.state = 2470; this.match(MySqlParser.KW_DATA); - this.state = 2410; + this.state = 2471; this.match(MySqlParser.KW_DIRECTORY); - this.state = 2411; + this.state = 2472; this.match(MySqlParser.KW_NAME); } break; @@ -9208,109 +10028,109 @@ export class MySqlParser extends SQLParserBase { } public alterEvent(): AlterEventContext { let localContext = new AlterEventContext(this.context, this.state); - this.enterRule(localContext, 122, MySqlParser.RULE_alterEvent); + this.enterRule(localContext, 128, MySqlParser.RULE_alterEvent); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2415; + this.state = 2476; this.match(MySqlParser.KW_ALTER); - this.state = 2417; + this.state = 2478; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 2416; + this.state = 2477; this.ownerStatement(); } } - this.state = 2419; + this.state = 2480; this.match(MySqlParser.KW_EVENT); - this.state = 2420; + this.state = 2481; localContext._event_name = this.fullId(); - this.state = 2424; + this.state = 2485; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { - this.state = 2421; + this.state = 2482; this.match(MySqlParser.KW_ON); - this.state = 2422; + this.state = 2483; this.match(MySqlParser.KW_SCHEDULE); - this.state = 2423; + this.state = 2484; this.scheduleExpression(); } break; } - this.state = 2432; + this.state = 2493; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 119) { { - this.state = 2426; + this.state = 2487; this.match(MySqlParser.KW_ON); - this.state = 2427; + this.state = 2488; this.match(MySqlParser.KW_COMPLETION); - this.state = 2429; + this.state = 2490; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 2428; + this.state = 2489; this.match(MySqlParser.KW_NOT); } } - this.state = 2431; + this.state = 2492; this.match(MySqlParser.KW_PRESERVE); } } - this.state = 2437; + this.state = 2498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 270, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 280, this.context) ) { case 1: { - this.state = 2434; + this.state = 2495; this.match(MySqlParser.KW_RENAME); - this.state = 2435; + this.state = 2496; this.match(MySqlParser.KW_TO); - this.state = 2436; + this.state = 2497; localContext._new_event_name = this.fullId(); } break; } - this.state = 2440; + this.state = 2501; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 2439; + this.state = 2500; this.enableType(); } } - this.state = 2444; + this.state = 2505; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 2442; + this.state = 2503; this.match(MySqlParser.KW_COMMENT); - this.state = 2443; + this.state = 2504; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 2448; + this.state = 2509; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 283, this.context) ) { case 1: { - this.state = 2446; + this.state = 2507; this.match(MySqlParser.KW_DO); - this.state = 2447; + this.state = 2508; this.routineBody(); } break; @@ -9333,28 +10153,28 @@ export class MySqlParser extends SQLParserBase { } public alterFunction(): AlterFunctionContext { let localContext = new AlterFunctionContext(this.context, this.state); - this.enterRule(localContext, 124, MySqlParser.RULE_alterFunction); + this.enterRule(localContext, 130, MySqlParser.RULE_alterFunction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2450; + this.state = 2511; this.match(MySqlParser.KW_ALTER); - this.state = 2451; + this.state = 2512; this.match(MySqlParser.KW_FUNCTION); - this.state = 2452; + this.state = 2513; this.functionName(); - this.state = 2456; + this.state = 2517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 47 || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 16777221) !== 0) || _la === 162 || _la === 340 || _la === 354 || _la === 444 || _la === 502) { { { - this.state = 2453; + this.state = 2514; this.routineOption(); } } - this.state = 2458; + this.state = 2519; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9376,21 +10196,21 @@ export class MySqlParser extends SQLParserBase { } public alterInstance(): AlterInstanceContext { let localContext = new AlterInstanceContext(this.context, this.state); - this.enterRule(localContext, 126, MySqlParser.RULE_alterInstance); + this.enterRule(localContext, 132, MySqlParser.RULE_alterInstance); try { this.enterOuterAlt(localContext, 1); { - this.state = 2459; + this.state = 2520; this.match(MySqlParser.KW_ALTER); - this.state = 2460; + this.state = 2521; this.match(MySqlParser.KW_INSTANCE); - this.state = 2461; + this.state = 2522; this.match(MySqlParser.KW_ROTATE); - this.state = 2462; + this.state = 2523; this.match(MySqlParser.KW_INNODB); - this.state = 2463; + this.state = 2524; this.match(MySqlParser.KW_MASTER); - this.state = 2464; + this.state = 2525; this.match(MySqlParser.KW_KEY); } } @@ -9410,70 +10230,70 @@ export class MySqlParser extends SQLParserBase { } public alterLogfileGroup(): AlterLogfileGroupContext { let localContext = new AlterLogfileGroupContext(this.context, this.state); - this.enterRule(localContext, 128, MySqlParser.RULE_alterLogfileGroup); + this.enterRule(localContext, 134, MySqlParser.RULE_alterLogfileGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2466; + this.state = 2527; this.match(MySqlParser.KW_ALTER); - this.state = 2467; + this.state = 2528; this.match(MySqlParser.KW_LOGFILE); - this.state = 2468; + this.state = 2529; this.match(MySqlParser.KW_GROUP); - this.state = 2469; + this.state = 2530; localContext._logfileGroupName = this.uid(); - this.state = 2470; + this.state = 2531; this.match(MySqlParser.KW_ADD); - this.state = 2471; + this.state = 2532; this.match(MySqlParser.KW_UNDOFILE); - this.state = 2472; + this.state = 2533; this.match(MySqlParser.STRING_LITERAL); - this.state = 2478; + this.state = 2539; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 2473; + this.state = 2534; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 2475; + this.state = 2536; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2474; + this.state = 2535; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2477; + this.state = 2538; this.fileSizeLiteral(); } } - this.state = 2481; + this.state = 2542; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 2480; + this.state = 2541; this.match(MySqlParser.KW_WAIT); } } - this.state = 2483; + this.state = 2544; this.match(MySqlParser.KW_ENGINE); - this.state = 2485; + this.state = 2546; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2484; + this.state = 2545; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2487; + this.state = 2548; this.engineName(); } } @@ -9493,28 +10313,28 @@ export class MySqlParser extends SQLParserBase { } public alterProcedure(): AlterProcedureContext { let localContext = new AlterProcedureContext(this.context, this.state); - this.enterRule(localContext, 130, MySqlParser.RULE_alterProcedure); + this.enterRule(localContext, 136, MySqlParser.RULE_alterProcedure); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2489; + this.state = 2550; this.match(MySqlParser.KW_ALTER); - this.state = 2490; + this.state = 2551; this.match(MySqlParser.KW_PROCEDURE); - this.state = 2491; + this.state = 2552; localContext._proc_name = this.fullId(); - this.state = 2495; + this.state = 2556; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 47 || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 16777221) !== 0) || _la === 162 || _la === 340 || _la === 354 || _la === 444 || _la === 502) { { { - this.state = 2492; + this.state = 2553; this.routineOption(); } } - this.state = 2497; + this.state = 2558; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9536,40 +10356,40 @@ export class MySqlParser extends SQLParserBase { } public alterServer(): AlterServerContext { let localContext = new AlterServerContext(this.context, this.state); - this.enterRule(localContext, 132, MySqlParser.RULE_alterServer); + this.enterRule(localContext, 138, MySqlParser.RULE_alterServer); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2498; + this.state = 2559; this.match(MySqlParser.KW_ALTER); - this.state = 2499; + this.state = 2560; this.match(MySqlParser.KW_SERVER); - this.state = 2500; + this.state = 2561; localContext._serverName = this.uid(); - this.state = 2501; + this.state = 2562; this.match(MySqlParser.KW_OPTIONS); - this.state = 2502; + this.state = 2563; this.match(MySqlParser.LR_BRACKET); - this.state = 2503; + this.state = 2564; this.serverOption(); - this.state = 2508; + this.state = 2569; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2504; + this.state = 2565; this.match(MySqlParser.COMMA); - this.state = 2505; + this.state = 2566; this.serverOption(); } } - this.state = 2510; + this.state = 2571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2511; + this.state = 2572; this.match(MySqlParser.RR_BRACKET); } } @@ -9589,66 +10409,66 @@ export class MySqlParser extends SQLParserBase { } public alterTable(): AlterTableContext { let localContext = new AlterTableContext(this.context, this.state); - this.enterRule(localContext, 134, MySqlParser.RULE_alterTable); + this.enterRule(localContext, 140, MySqlParser.RULE_alterTable); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2513; + this.state = 2574; this.match(MySqlParser.KW_ALTER); - this.state = 2514; + this.state = 2575; this.match(MySqlParser.KW_TABLE); - this.state = 2515; + this.state = 2576; this.tableName(); - this.state = 2524; + this.state = 2585; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { case 1: { - this.state = 2516; + this.state = 2577; this.alterOption(); - this.state = 2521; + this.state = 2582; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2517; + this.state = 2578; this.match(MySqlParser.COMMA); - this.state = 2518; + this.state = 2579; this.alterOption(); } } - this.state = 2523; + this.state = 2584; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 2533; + this.state = 2594; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 284, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { case 1: { - this.state = 2526; + this.state = 2587; this.alterPartitionSpecification(); - this.state = 2530; + this.state = 2591; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2527; + this.state = 2588; this.alterPartitionSpecification(); } } } - this.state = 2532; + this.state = 2593; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); } } break; @@ -9671,28 +10491,28 @@ export class MySqlParser extends SQLParserBase { } public alterTablespace(): AlterTablespaceContext { let localContext = new AlterTablespaceContext(this.context, this.state); - this.enterRule(localContext, 136, MySqlParser.RULE_alterTablespace); + this.enterRule(localContext, 142, MySqlParser.RULE_alterTablespace); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2535; + this.state = 2596; this.match(MySqlParser.KW_ALTER); - this.state = 2537; + this.state = 2598; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 2536; + this.state = 2597; this.match(MySqlParser.KW_UNDO); } } - this.state = 2539; + this.state = 2600; this.match(MySqlParser.KW_TABLESPACE); - this.state = 2540; + this.state = 2601; this.tablespaceName(); - this.state = 2541; + this.state = 2602; _la = this.tokenStream.LA(1); if(!(_la === 6 || _la === 51)) { this.errorHandler.recoverInline(this); @@ -9701,86 +10521,86 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2542; + this.state = 2603; this.match(MySqlParser.KW_DATAFILE); - this.state = 2543; + this.state = 2604; this.match(MySqlParser.STRING_LITERAL); - this.state = 2549; + this.state = 2610; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 2544; + this.state = 2605; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 2546; + this.state = 2607; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2545; + this.state = 2606; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2548; + this.state = 2609; this.fileSizeLiteral(); } } - this.state = 2552; + this.state = 2613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 2551; + this.state = 2612; this.match(MySqlParser.KW_WAIT); } } - this.state = 2557; + this.state = 2618; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 299, this.context) ) { case 1: { - this.state = 2554; + this.state = 2615; this.match(MySqlParser.KW_RENAME); - this.state = 2555; + this.state = 2616; this.match(MySqlParser.KW_TO); - this.state = 2556; + this.state = 2617; this.tablespaceNameCreate(); } break; } - this.state = 2564; + this.state = 2625; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 2559; + this.state = 2620; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 2561; + this.state = 2622; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2560; + this.state = 2621; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2563; + this.state = 2624; this.fileSizeLiteral(); } } - this.state = 2568; + this.state = 2629; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2566; + this.state = 2627; this.match(MySqlParser.KW_SET); - this.state = 2567; + this.state = 2628; _la = this.tokenStream.LA(1); if(!(_la === 5 || _la === 81)) { this.errorHandler.recoverInline(this); @@ -9792,68 +10612,68 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 2575; + this.state = 2636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 376) { { - this.state = 2570; + this.state = 2631; this.match(MySqlParser.KW_ENCRYPTION); - this.state = 2572; + this.state = 2633; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2571; + this.state = 2632; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2574; + this.state = 2635; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 2582; + this.state = 2643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 380) { { - this.state = 2577; + this.state = 2638; this.match(MySqlParser.KW_ENGINE); - this.state = 2579; + this.state = 2640; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2578; + this.state = 2639; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2581; + this.state = 2642; this.engineName(); } } - this.state = 2589; + this.state = 2650; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 825) { { - this.state = 2584; + this.state = 2645; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 2586; + this.state = 2647; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2585; + this.state = 2646; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2588; + this.state = 2649; this.match(MySqlParser.STRING_LITERAL); } } @@ -9876,23 +10696,23 @@ export class MySqlParser extends SQLParserBase { } public alterView(): AlterViewContext { let localContext = new AlterViewContext(this.context, this.state); - this.enterRule(localContext, 138, MySqlParser.RULE_alterView); + this.enterRule(localContext, 144, MySqlParser.RULE_alterView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2591; + this.state = 2652; this.match(MySqlParser.KW_ALTER); - this.state = 2595; + this.state = 2656; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 2592; + this.state = 2653; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2593; + this.state = 2654; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2594; + this.state = 2655; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 486 || _la === 661 || _la === 670)) { @@ -9905,26 +10725,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2598; + this.state = 2659; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 2597; + this.state = 2658; this.ownerStatement(); } } - this.state = 2603; + this.state = 2664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 162) { { - this.state = 2600; + this.state = 2661; this.match(MySqlParser.KW_SQL); - this.state = 2601; + this.state = 2662; this.match(MySqlParser.KW_SECURITY); - this.state = 2602; + this.state = 2663; localContext._secContext = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 364 || _la === 436)) { @@ -9937,41 +10757,41 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2605; + this.state = 2666; this.match(MySqlParser.KW_VIEW); - this.state = 2606; + this.state = 2667; this.viewName(); - this.state = 2611; + this.state = 2672; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2607; + this.state = 2668; this.match(MySqlParser.LR_BRACKET); - this.state = 2608; + this.state = 2669; this.columnNames(); - this.state = 2609; + this.state = 2670; this.match(MySqlParser.RR_BRACKET); } } - this.state = 2613; + this.state = 2674; this.match(MySqlParser.KW_AS); - this.state = 2614; + this.state = 2675; this.selectStatement(); - this.state = 2621; + this.state = 2682; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { case 1: { - this.state = 2615; + this.state = 2676; this.match(MySqlParser.KW_WITH); - this.state = 2617; + this.state = 2678; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 325 || _la === 450) { { - this.state = 2616; + this.state = 2677; localContext._checkOpt = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 325 || _la === 450)) { @@ -9984,9 +10804,9 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2619; + this.state = 2680; this.match(MySqlParser.KW_CHECK); - this.state = 2620; + this.state = 2681; this.match(MySqlParser.KW_OPTION); } break; @@ -10009,44 +10829,44 @@ export class MySqlParser extends SQLParserBase { } public alterOption(): AlterOptionContext { let localContext = new AlterOptionContext(this.context, this.state); - this.enterRule(localContext, 140, MySqlParser.RULE_alterOption); + this.enterRule(localContext, 146, MySqlParser.RULE_alterOption); let _la: number; try { let alternative: number; - this.state = 2887; + this.state = 2948; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 348, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 358, this.context) ) { case 1: localContext = new AlterByTableOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2623; + this.state = 2684; this.tableOption(); - this.state = 2630; + this.state = 2691; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 306, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2625; + this.state = 2686; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 2624; + this.state = 2685; this.match(MySqlParser.COMMA); } } - this.state = 2627; + this.state = 2688; this.tableOption(); } } } - this.state = 2632; + this.state = 2693; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 306, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); } } break; @@ -10054,36 +10874,36 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddColumnContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2633; + this.state = 2694; this.match(MySqlParser.KW_ADD); - this.state = 2635; + this.state = 2696; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { case 1: { - this.state = 2634; + this.state = 2695; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2637; + this.state = 2698; this.columnName(); - this.state = 2638; + this.state = 2699; this.columnDefinition(); - this.state = 2642; + this.state = 2703; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FIRST: { - this.state = 2639; + this.state = 2700; this.match(MySqlParser.KW_FIRST); } break; case MySqlParser.KW_AFTER: { - this.state = 2640; + this.state = 2701; this.match(MySqlParser.KW_AFTER); - this.state = 2641; + this.state = 2702; this.columnName(); } break; @@ -10169,43 +10989,43 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddColumnsContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2644; + this.state = 2705; this.match(MySqlParser.KW_ADD); - this.state = 2646; + this.state = 2707; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 29) { { - this.state = 2645; + this.state = 2706; this.match(MySqlParser.KW_COLUMN); } } - this.state = 2648; + this.state = 2709; this.match(MySqlParser.LR_BRACKET); - this.state = 2649; + this.state = 2710; this.columnName(); - this.state = 2650; + this.state = 2711; this.columnDefinition(); - this.state = 2657; + this.state = 2718; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2651; + this.state = 2712; this.match(MySqlParser.COMMA); - this.state = 2652; + this.state = 2713; this.columnName(); - this.state = 2653; + this.state = 2714; this.columnDefinition(); } } - this.state = 2659; + this.state = 2720; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2660; + this.state = 2721; this.match(MySqlParser.RR_BRACKET); } break; @@ -10213,9 +11033,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddIndexContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2662; + this.state = 2723; this.match(MySqlParser.KW_ADD); - this.state = 2663; + this.state = 2724; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10224,43 +11044,43 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2665; + this.state = 2726; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2664; + this.state = 2725; this.indexName(); } } - this.state = 2668; + this.state = 2729; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 2667; + this.state = 2728; this.indexType(); } } - this.state = 2670; + this.state = 2731; this.indexColumnNames(); - this.state = 2674; + this.state = 2735; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 313, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2671; + this.state = 2732; this.indexOption(); } } } - this.state = 2676; + this.state = 2737; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 313, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); } } break; @@ -10268,9 +11088,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddSpecialIndexContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2677; + this.state = 2738; this.match(MySqlParser.KW_ADD); - this.state = 2678; + this.state = 2739; _la = this.tokenStream.LA(1); if(!(_la === 69 || _la === 161)) { this.errorHandler.recoverInline(this); @@ -10279,12 +11099,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2680; + this.state = 2741; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 2679; + this.state = 2740; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10296,33 +11116,33 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2683; + this.state = 2744; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2682; + this.state = 2743; this.indexName(); } } - this.state = 2685; + this.state = 2746; this.indexColumnNames(); - this.state = 2689; + this.state = 2750; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2686; + this.state = 2747; this.indexOption(); } } } - this.state = 2691; + this.state = 2752; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); } } break; @@ -10330,21 +11150,21 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddPrimaryKeyContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2692; + this.state = 2753; this.match(MySqlParser.KW_ADD); - this.state = 2697; + this.state = 2758; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 2693; + this.state = 2754; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 2695; + this.state = 2756; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { case 1: { - this.state = 2694; + this.state = 2755; (localContext as AlterByAddPrimaryKeyContext)._symbol_ = this.uid(); } break; @@ -10352,37 +11172,37 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2699; + this.state = 2760; this.match(MySqlParser.KW_PRIMARY); - this.state = 2700; + this.state = 2761; this.match(MySqlParser.KW_KEY); - this.state = 2702; + this.state = 2763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 2701; + this.state = 2762; this.indexType(); } } - this.state = 2704; + this.state = 2765; this.indexColumnNames(); - this.state = 2708; + this.state = 2769; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 320, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 330, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2705; + this.state = 2766; this.indexOption(); } } } - this.state = 2710; + this.state = 2771; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 320, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 330, this.context); } } break; @@ -10390,21 +11210,21 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddUniqueKeyContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2711; + this.state = 2772; this.match(MySqlParser.KW_ADD); - this.state = 2716; + this.state = 2777; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 2712; + this.state = 2773; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 2714; + this.state = 2775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2713; + this.state = 2774; (localContext as AlterByAddUniqueKeyContext)._symbol_ = this.uid(); } } @@ -10412,14 +11232,14 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2718; + this.state = 2779; this.match(MySqlParser.KW_UNIQUE); - this.state = 2720; + this.state = 2781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 2719; + this.state = 2780; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10431,43 +11251,43 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2723; + this.state = 2784; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2722; + this.state = 2783; this.indexName(); } } - this.state = 2726; + this.state = 2787; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 2725; + this.state = 2786; this.indexType(); } } - this.state = 2728; + this.state = 2789; this.indexColumnNames(); - this.state = 2732; + this.state = 2793; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 336, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2729; + this.state = 2790; this.indexOption(); } } } - this.state = 2734; + this.state = 2795; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 336, this.context); } } break; @@ -10475,21 +11295,21 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddForeignKeyContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2735; + this.state = 2796; this.match(MySqlParser.KW_ADD); - this.state = 2740; + this.state = 2801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 2736; + this.state = 2797; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 2738; + this.state = 2799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2737; + this.state = 2798; (localContext as AlterByAddForeignKeyContext)._symbol_ = this.uid(); } } @@ -10497,23 +11317,23 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2742; + this.state = 2803; this.match(MySqlParser.KW_FOREIGN); - this.state = 2743; + this.state = 2804; this.match(MySqlParser.KW_KEY); - this.state = 2745; + this.state = 2806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2744; + this.state = 2805; this.indexName(); } } - this.state = 2747; + this.state = 2808; this.indexColumnNames(); - this.state = 2748; + this.state = 2809; this.referenceDefinition(); } break; @@ -10521,14 +11341,14 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddCheckTableConstraintContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 2750; + this.state = 2811; this.match(MySqlParser.KW_ADD); - this.state = 2752; + this.state = 2813; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { case 1: { - this.state = 2751; + this.state = 2812; this.checkConstraintDefinition(); } break; @@ -10539,9 +11359,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropConstraintCheckContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 2754; + this.state = 2815; this.match(MySqlParser.KW_DROP); - this.state = 2755; + this.state = 2816; _la = this.tokenStream.LA(1); if(!(_la === 27 || _la === 31)) { this.errorHandler.recoverInline(this); @@ -10550,7 +11370,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2756; + this.state = 2817; (localContext as AlterByDropConstraintCheckContext)._symbol_ = this.uid(); } break; @@ -10558,9 +11378,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAlterCheckTableConstraintContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 2757; + this.state = 2818; this.match(MySqlParser.KW_ALTER); - this.state = 2758; + this.state = 2819; _la = this.tokenStream.LA(1); if(!(_la === 27 || _la === 31)) { this.errorHandler.recoverInline(this); @@ -10569,24 +11389,24 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2759; + this.state = 2820; (localContext as AlterByAlterCheckTableConstraintContext)._symbol_ = this.uid(); - this.state = 2761; + this.state = 2822; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 2760; + this.state = 2821; this.match(MySqlParser.KW_NOT); } } - this.state = 2764; + this.state = 2825; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 57) { { - this.state = 2763; + this.state = 2824; this.match(MySqlParser.KW_ENFORCED); } } @@ -10597,19 +11417,19 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterBySetAlgorithmContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 2766; + this.state = 2827; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2768; + this.state = 2829; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2767; + this.state = 2828; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2770; + this.state = 2831; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 357 || _la === 430 || _la === 434)) { this.errorHandler.recoverInline(this); @@ -10624,38 +11444,38 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAlterColumnDefaultContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 2771; + this.state = 2832; this.match(MySqlParser.KW_ALTER); - this.state = 2773; + this.state = 2834; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 334, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { case 1: { - this.state = 2772; + this.state = 2833; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2775; + this.state = 2836; this.columnName(); - this.state = 2783; + this.state = 2844; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { case 1: { - this.state = 2776; + this.state = 2837; this.match(MySqlParser.KW_SET); - this.state = 2777; + this.state = 2838; this.match(MySqlParser.KW_DEFAULT); - this.state = 2778; + this.state = 2839; this.defaultValue(); } break; case 2: { - this.state = 2779; + this.state = 2840; this.match(MySqlParser.KW_SET); - this.state = 2780; + this.state = 2841; _la = this.tokenStream.LA(1); if(!(_la === 435 || _la === 686)) { this.errorHandler.recoverInline(this); @@ -10668,9 +11488,9 @@ export class MySqlParser extends SQLParserBase { break; case 3: { - this.state = 2781; + this.state = 2842; this.match(MySqlParser.KW_DROP); - this.state = 2782; + this.state = 2843; this.match(MySqlParser.KW_DEFAULT); } break; @@ -10681,13 +11501,13 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAlterIndexVisibilityContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 2785; + this.state = 2846; this.match(MySqlParser.KW_ALTER); - this.state = 2786; + this.state = 2847; this.match(MySqlParser.KW_INDEX); - this.state = 2787; + this.state = 2848; this.indexName(); - this.state = 2788; + this.state = 2849; _la = this.tokenStream.LA(1); if(!(_la === 435 || _la === 686)) { this.errorHandler.recoverInline(this); @@ -10702,38 +11522,38 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByChangeColumnContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 2790; + this.state = 2851; this.match(MySqlParser.KW_CHANGE); - this.state = 2792; + this.state = 2853; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 336, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 346, this.context) ) { case 1: { - this.state = 2791; + this.state = 2852; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2794; + this.state = 2855; (localContext as AlterByChangeColumnContext)._oldColumn = this.columnName(); - this.state = 2795; + this.state = 2856; (localContext as AlterByChangeColumnContext)._newColumn = this.columnNameCreate(); - this.state = 2796; + this.state = 2857; this.columnDefinition(); - this.state = 2800; + this.state = 2861; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FIRST: { - this.state = 2797; + this.state = 2858; this.match(MySqlParser.KW_FIRST); } break; case MySqlParser.KW_AFTER: { - this.state = 2798; + this.state = 2859; this.match(MySqlParser.KW_AFTER); - this.state = 2799; + this.state = 2860; this.columnName(); } break; @@ -10819,42 +11639,42 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDefaultCharsetContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 2803; + this.state = 2864; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 2802; + this.state = 2863; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 2805; + this.state = 2866; this.match(MySqlParser.KW_CHARACTER); - this.state = 2806; + this.state = 2867; this.match(MySqlParser.KW_SET); - this.state = 2807; + this.state = 2868; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2808; + this.state = 2869; this.charsetName(); - this.state = 2814; + this.state = 2875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 2809; + this.state = 2870; this.match(MySqlParser.KW_COLLATE); - this.state = 2811; + this.state = 2872; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2810; + this.state = 2871; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2813; + this.state = 2874; this.collationName(); } } @@ -10865,40 +11685,40 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByConvertCharsetContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 2816; + this.state = 2877; this.match(MySqlParser.KW_CONVERT); - this.state = 2817; + this.state = 2878; this.match(MySqlParser.KW_TO); - this.state = 2821; + this.state = 2882; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CHARSET: { - this.state = 2818; + this.state = 2879; this.match(MySqlParser.KW_CHARSET); } break; case MySqlParser.KW_CHARACTER: { - this.state = 2819; + this.state = 2880; this.match(MySqlParser.KW_CHARACTER); - this.state = 2820; + this.state = 2881; this.match(MySqlParser.KW_SET); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2823; + this.state = 2884; this.charsetName(); - this.state = 2826; + this.state = 2887; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 2824; + this.state = 2885; this.match(MySqlParser.KW_COLLATE); - this.state = 2825; + this.state = 2886; this.collationName(); } } @@ -10909,7 +11729,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterKeysContext(localContext); this.enterOuterAlt(localContext, 18); { - this.state = 2828; + this.state = 2889; _la = this.tokenStream.LA(1); if(!(_la === 368 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -10918,7 +11738,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2829; + this.state = 2890; this.match(MySqlParser.KW_KEYS); } break; @@ -10926,7 +11746,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterTablespaceOptionContext(localContext); this.enterOuterAlt(localContext, 19); { - this.state = 2830; + this.state = 2891; _la = this.tokenStream.LA(1); if(!(_la === 369 || _la === 425)) { this.errorHandler.recoverInline(this); @@ -10935,7 +11755,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2831; + this.state = 2892; this.match(MySqlParser.KW_TABLESPACE); } break; @@ -10943,19 +11763,19 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropColumnContext(localContext); this.enterOuterAlt(localContext, 20); { - this.state = 2832; + this.state = 2893; this.match(MySqlParser.KW_DROP); - this.state = 2834; + this.state = 2895; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 353, this.context) ) { case 1: { - this.state = 2833; + this.state = 2894; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2836; + this.state = 2897; this.columnName(); } break; @@ -10963,9 +11783,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropIndexContext(localContext); this.enterOuterAlt(localContext, 21); { - this.state = 2837; + this.state = 2898; this.match(MySqlParser.KW_DROP); - this.state = 2838; + this.state = 2899; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10974,7 +11794,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2839; + this.state = 2900; this.indexName(); } break; @@ -10982,11 +11802,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropPrimaryKeyContext(localContext); this.enterOuterAlt(localContext, 22); { - this.state = 2840; + this.state = 2901; this.match(MySqlParser.KW_DROP); - this.state = 2841; + this.state = 2902; this.match(MySqlParser.KW_PRIMARY); - this.state = 2842; + this.state = 2903; this.match(MySqlParser.KW_KEY); } break; @@ -10994,13 +11814,13 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropForeignKeyContext(localContext); this.enterOuterAlt(localContext, 23); { - this.state = 2843; + this.state = 2904; this.match(MySqlParser.KW_DROP); - this.state = 2844; + this.state = 2905; this.match(MySqlParser.KW_FOREIGN); - this.state = 2845; + this.state = 2906; this.match(MySqlParser.KW_KEY); - this.state = 2846; + this.state = 2907; (localContext as AlterByDropForeignKeyContext)._fk_symbol = this.uid(); } break; @@ -11008,7 +11828,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByForceContext(localContext); this.enterOuterAlt(localContext, 24); { - this.state = 2847; + this.state = 2908; this.match(MySqlParser.KW_FORCE); } break; @@ -11016,19 +11836,19 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByLockContext(localContext); this.enterOuterAlt(localContext, 25); { - this.state = 2848; + this.state = 2909; this.match(MySqlParser.KW_LOCK); - this.state = 2850; + this.state = 2911; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2849; + this.state = 2910; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2852; + this.state = 2913; (localContext as AlterByLockContext)._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 389 || _la === 505 || _la === 595)) { @@ -11044,36 +11864,36 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByModifyColumnContext(localContext); this.enterOuterAlt(localContext, 26); { - this.state = 2853; + this.state = 2914; this.match(MySqlParser.KW_MODIFY); - this.state = 2855; + this.state = 2916; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 355, this.context) ) { case 1: { - this.state = 2854; + this.state = 2915; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2857; + this.state = 2918; this.columnName(); - this.state = 2858; + this.state = 2919; this.columnDefinition(); - this.state = 2862; + this.state = 2923; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FIRST: { - this.state = 2859; + this.state = 2920; this.match(MySqlParser.KW_FIRST); } break; case MySqlParser.KW_AFTER: { - this.state = 2860; + this.state = 2921; this.match(MySqlParser.KW_AFTER); - this.state = 2861; + this.state = 2922; this.columnName(); } break; @@ -11159,11 +11979,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByOrderContext(localContext); this.enterOuterAlt(localContext, 27); { - this.state = 2864; + this.state = 2925; this.match(MySqlParser.KW_ORDER); - this.state = 2865; + this.state = 2926; this.match(MySqlParser.KW_BY); - this.state = 2866; + this.state = 2927; this.columnNames(); } break; @@ -11171,15 +11991,15 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRenameColumnContext(localContext); this.enterOuterAlt(localContext, 28); { - this.state = 2867; + this.state = 2928; this.match(MySqlParser.KW_RENAME); - this.state = 2868; + this.state = 2929; this.match(MySqlParser.KW_COLUMN); - this.state = 2869; + this.state = 2930; (localContext as AlterByRenameColumnContext)._olcdColumn = this.columnName(); - this.state = 2870; + this.state = 2931; this.match(MySqlParser.KW_TO); - this.state = 2871; + this.state = 2932; (localContext as AlterByRenameColumnContext)._newColumn = this.columnNameCreate(); } break; @@ -11187,9 +12007,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRenameIndexContext(localContext); this.enterOuterAlt(localContext, 29); { - this.state = 2873; + this.state = 2934; this.match(MySqlParser.KW_RENAME); - this.state = 2874; + this.state = 2935; (localContext as AlterByRenameIndexContext)._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -11199,11 +12019,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2875; + this.state = 2936; this.indexName(); - this.state = 2876; + this.state = 2937; this.match(MySqlParser.KW_TO); - this.state = 2877; + this.state = 2938; this.indexNameCreate(); } break; @@ -11211,14 +12031,14 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRenameContext(localContext); this.enterOuterAlt(localContext, 30); { - this.state = 2879; + this.state = 2940; this.match(MySqlParser.KW_RENAME); - this.state = 2881; + this.state = 2942; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13 || _la === 176) { { - this.state = 2880; + this.state = 2941; (localContext as AlterByRenameContext)._renameFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 13 || _la === 176)) { @@ -11231,7 +12051,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2883; + this.state = 2944; this.tableNameCreate(); } break; @@ -11239,7 +12059,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByValidateContext(localContext); this.enterOuterAlt(localContext, 31); { - this.state = 2884; + this.state = 2945; _la = this.tokenStream.LA(1); if(!(_la === 194 || _la === 690)) { this.errorHandler.recoverInline(this); @@ -11248,7 +12068,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2885; + this.state = 2946; this.match(MySqlParser.KW_VALIDATION); } break; @@ -11256,7 +12076,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterPartitionContext(localContext); this.enterOuterAlt(localContext, 32); { - this.state = 2886; + this.state = 2947; this.alterPartitionSpecification(); } break; @@ -11278,41 +12098,41 @@ export class MySqlParser extends SQLParserBase { } public alterPartitionSpecification(): AlterPartitionSpecificationContext { let localContext = new AlterPartitionSpecificationContext(this.context, this.state); - this.enterRule(localContext, 142, MySqlParser.RULE_alterPartitionSpecification); + this.enterRule(localContext, 148, MySqlParser.RULE_alterPartitionSpecification); let _la: number; try { - this.state = 2987; + this.state = 3048; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ADD: localContext = new AlterByAddPartitionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2889; + this.state = 2950; this.match(MySqlParser.KW_ADD); - this.state = 2890; + this.state = 2951; this.match(MySqlParser.KW_PARTITION); - this.state = 2891; + this.state = 2952; this.match(MySqlParser.LR_BRACKET); - this.state = 2892; + this.state = 2953; this.partitionDefinition(); - this.state = 2897; + this.state = 2958; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2893; + this.state = 2954; this.match(MySqlParser.COMMA); - this.state = 2894; + this.state = 2955; this.partitionDefinition(); } } - this.state = 2899; + this.state = 2960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2900; + this.state = 2961; this.match(MySqlParser.RR_BRACKET); } break; @@ -11320,11 +12140,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropPartitionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2902; + this.state = 2963; this.match(MySqlParser.KW_DROP); - this.state = 2903; + this.state = 2964; this.match(MySqlParser.KW_PARTITION); - this.state = 2904; + this.state = 2965; this.partitionNames(); } break; @@ -11332,11 +12152,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDiscardPartitionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2905; + this.state = 2966; this.match(MySqlParser.KW_DISCARD); - this.state = 2906; + this.state = 2967; this.match(MySqlParser.KW_PARTITION); - this.state = 2909; + this.state = 2970; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -11669,6 +12489,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -11888,20 +12709,20 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2907; + this.state = 2968; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2908; + this.state = 2969; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2911; + this.state = 2972; this.match(MySqlParser.KW_TABLESPACE); } break; @@ -11909,11 +12730,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByImportPartitionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2912; + this.state = 2973; this.match(MySqlParser.KW_IMPORT); - this.state = 2913; + this.state = 2974; this.match(MySqlParser.KW_PARTITION); - this.state = 2916; + this.state = 2977; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -12246,6 +13067,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -12465,20 +13287,20 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2914; + this.state = 2975; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2915; + this.state = 2976; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2918; + this.state = 2979; this.match(MySqlParser.KW_TABLESPACE); } break; @@ -12486,11 +13308,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByTruncatePartitionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2919; + this.state = 2980; this.match(MySqlParser.KW_TRUNCATE); - this.state = 2920; + this.state = 2981; this.match(MySqlParser.KW_PARTITION); - this.state = 2923; + this.state = 2984; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -12823,6 +13645,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -13042,13 +13865,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2921; + this.state = 2982; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2922; + this.state = 2983; this.match(MySqlParser.KW_ALL); } break; @@ -13061,11 +13884,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByCoalescePartitionContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2925; + this.state = 2986; this.match(MySqlParser.KW_COALESCE); - this.state = 2926; + this.state = 2987; this.match(MySqlParser.KW_PARTITION); - this.state = 2927; + this.state = 2988; this.decimalLiteral(); } break; @@ -13073,35 +13896,35 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByReorganizePartitionContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2928; + this.state = 2989; this.match(MySqlParser.KW_REORGANIZE); - this.state = 2929; + this.state = 2990; this.match(MySqlParser.KW_PARTITION); - this.state = 2930; + this.state = 2991; this.partitionNames(); - this.state = 2931; + this.state = 2992; this.match(MySqlParser.KW_INTO); - this.state = 2932; + this.state = 2993; this.match(MySqlParser.LR_BRACKET); - this.state = 2933; + this.state = 2994; this.partitionDefinition(); - this.state = 2938; + this.state = 2999; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2934; + this.state = 2995; this.match(MySqlParser.COMMA); - this.state = 2935; + this.state = 2996; this.partitionDefinition(); } } - this.state = 2940; + this.state = 3001; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2941; + this.state = 3002; this.match(MySqlParser.RR_BRACKET); } break; @@ -13109,24 +13932,24 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByExchangePartitionContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2943; + this.state = 3004; this.match(MySqlParser.KW_EXCHANGE); - this.state = 2944; + this.state = 3005; this.match(MySqlParser.KW_PARTITION); - this.state = 2945; + this.state = 3006; this.partitionName(); - this.state = 2946; + this.state = 3007; this.match(MySqlParser.KW_WITH); - this.state = 2947; + this.state = 3008; this.match(MySqlParser.KW_TABLE); - this.state = 2948; + this.state = 3009; this.tableName(); - this.state = 2951; + this.state = 3012; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 364, this.context) ) { case 1: { - this.state = 2949; + this.state = 3010; (localContext as AlterByExchangePartitionContext)._validationFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 194 || _la === 690)) { @@ -13136,7 +13959,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2950; + this.state = 3011; this.match(MySqlParser.KW_VALIDATION); } break; @@ -13147,11 +13970,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAnalyzePartitionContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 2953; + this.state = 3014; this.match(MySqlParser.KW_ANALYZE); - this.state = 2954; + this.state = 3015; this.match(MySqlParser.KW_PARTITION); - this.state = 2957; + this.state = 3018; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -13484,6 +14307,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -13703,13 +14527,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2955; + this.state = 3016; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2956; + this.state = 3017; this.match(MySqlParser.KW_ALL); } break; @@ -13722,11 +14546,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByCheckPartitionContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 2959; + this.state = 3020; this.match(MySqlParser.KW_CHECK); - this.state = 2960; + this.state = 3021; this.match(MySqlParser.KW_PARTITION); - this.state = 2963; + this.state = 3024; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -14059,6 +14883,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -14278,13 +15103,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2961; + this.state = 3022; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2962; + this.state = 3023; this.match(MySqlParser.KW_ALL); } break; @@ -14297,11 +15122,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByOptimizePartitionContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 2965; + this.state = 3026; this.match(MySqlParser.KW_OPTIMIZE); - this.state = 2966; + this.state = 3027; this.match(MySqlParser.KW_PARTITION); - this.state = 2969; + this.state = 3030; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -14634,6 +15459,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -14853,13 +15679,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2967; + this.state = 3028; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2968; + this.state = 3029; this.match(MySqlParser.KW_ALL); } break; @@ -14872,11 +15698,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRebuildPartitionContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 2971; + this.state = 3032; this.match(MySqlParser.KW_REBUILD); - this.state = 2972; + this.state = 3033; this.match(MySqlParser.KW_PARTITION); - this.state = 2975; + this.state = 3036; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -15209,6 +16035,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -15428,13 +16255,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2973; + this.state = 3034; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2974; + this.state = 3035; this.match(MySqlParser.KW_ALL); } break; @@ -15447,11 +16274,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRepairPartitionContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 2977; + this.state = 3038; this.match(MySqlParser.KW_REPAIR); - this.state = 2978; + this.state = 3039; this.match(MySqlParser.KW_PARTITION); - this.state = 2981; + this.state = 3042; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -15784,6 +16611,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -16003,13 +16831,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2979; + this.state = 3040; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2980; + this.state = 3041; this.match(MySqlParser.KW_ALL); } break; @@ -16022,9 +16850,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRemovePartitioningContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 2983; + this.state = 3044; this.match(MySqlParser.KW_REMOVE); - this.state = 2984; + this.state = 3045; this.match(MySqlParser.KW_PARTITIONING); } break; @@ -16032,9 +16860,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByUpgradePartitioningContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 2985; + this.state = 3046; this.match(MySqlParser.KW_UPGRADE); - this.state = 2986; + this.state = 3047; this.match(MySqlParser.KW_PARTITIONING); } break; @@ -16058,14 +16886,14 @@ export class MySqlParser extends SQLParserBase { } public dropDatabase(): DropDatabaseContext { let localContext = new DropDatabaseContext(this.context, this.state); - this.enterRule(localContext, 144, MySqlParser.RULE_dropDatabase); + this.enterRule(localContext, 150, MySqlParser.RULE_dropDatabase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2989; + this.state = 3050; this.match(MySqlParser.KW_DROP); - this.state = 2990; + this.state = 3051; localContext._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -16075,17 +16903,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2992; + this.state = 3053; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 361, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { case 1: { - this.state = 2991; + this.state = 3052; this.ifExists(); } break; } - this.state = 2994; + this.state = 3055; this.databaseName(); } } @@ -16105,25 +16933,25 @@ export class MySqlParser extends SQLParserBase { } public dropEvent(): DropEventContext { let localContext = new DropEventContext(this.context, this.state); - this.enterRule(localContext, 146, MySqlParser.RULE_dropEvent); + this.enterRule(localContext, 152, MySqlParser.RULE_dropEvent); try { this.enterOuterAlt(localContext, 1); { - this.state = 2996; + this.state = 3057; this.match(MySqlParser.KW_DROP); - this.state = 2997; + this.state = 3058; this.match(MySqlParser.KW_EVENT); - this.state = 2999; + this.state = 3060; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 362, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 372, this.context) ) { case 1: { - this.state = 2998; + this.state = 3059; this.ifExists(); } break; } - this.state = 3001; + this.state = 3062; localContext._event_name = this.fullId(); } } @@ -16143,22 +16971,22 @@ export class MySqlParser extends SQLParserBase { } public dropIndex(): DropIndexContext { let localContext = new DropIndexContext(this.context, this.state); - this.enterRule(localContext, 148, MySqlParser.RULE_dropIndex); + this.enterRule(localContext, 154, MySqlParser.RULE_dropIndex); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3003; + this.state = 3064; this.match(MySqlParser.KW_DROP); - this.state = 3004; + this.state = 3065; this.match(MySqlParser.KW_INDEX); - this.state = 3006; + this.state = 3067; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 363, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 373, this.context) ) { case 1: { - this.state = 3005; + this.state = 3066; localContext._intimeAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 508 || _la === 514)) { @@ -16171,36 +16999,36 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 3008; + this.state = 3069; this.indexName(); - this.state = 3009; + this.state = 3070; this.match(MySqlParser.KW_ON); - this.state = 3010; + this.state = 3071; this.tableName(); - this.state = 3023; + this.state = 3084; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 367, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 377, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 3021; + this.state = 3082; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALGORITHM: { - this.state = 3011; + this.state = 3072; this.match(MySqlParser.KW_ALGORITHM); - this.state = 3013; + this.state = 3074; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3012; + this.state = 3073; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3015; + this.state = 3076; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 357 || _la === 430)) { @@ -16214,19 +17042,19 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_LOCK: { - this.state = 3016; + this.state = 3077; this.match(MySqlParser.KW_LOCK); - this.state = 3018; + this.state = 3079; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3017; + this.state = 3078; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3020; + this.state = 3081; localContext._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 389 || _la === 505 || _la === 595)) { @@ -16243,9 +17071,9 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 3025; + this.state = 3086; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 367, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 377, this.context); } } } @@ -16265,32 +17093,32 @@ export class MySqlParser extends SQLParserBase { } public dropLogfileGroup(): DropLogfileGroupContext { let localContext = new DropLogfileGroupContext(this.context, this.state); - this.enterRule(localContext, 150, MySqlParser.RULE_dropLogfileGroup); + this.enterRule(localContext, 156, MySqlParser.RULE_dropLogfileGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3026; + this.state = 3087; this.match(MySqlParser.KW_DROP); - this.state = 3027; + this.state = 3088; this.match(MySqlParser.KW_LOGFILE); - this.state = 3028; + this.state = 3089; this.match(MySqlParser.KW_GROUP); - this.state = 3029; + this.state = 3090; localContext._logfileGroupName = this.uid(); - this.state = 3030; + this.state = 3091; this.match(MySqlParser.KW_ENGINE); - this.state = 3032; + this.state = 3093; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3031; + this.state = 3092; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3034; + this.state = 3095; this.engineName(); } } @@ -16310,25 +17138,25 @@ export class MySqlParser extends SQLParserBase { } public dropProcedure(): DropProcedureContext { let localContext = new DropProcedureContext(this.context, this.state); - this.enterRule(localContext, 152, MySqlParser.RULE_dropProcedure); + this.enterRule(localContext, 158, MySqlParser.RULE_dropProcedure); try { this.enterOuterAlt(localContext, 1); { - this.state = 3036; + this.state = 3097; this.match(MySqlParser.KW_DROP); - this.state = 3037; + this.state = 3098; this.match(MySqlParser.KW_PROCEDURE); - this.state = 3039; + this.state = 3100; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 369, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 379, this.context) ) { case 1: { - this.state = 3038; + this.state = 3099; this.ifExists(); } break; } - this.state = 3041; + this.state = 3102; localContext._sp_name = this.fullId(); } } @@ -16348,25 +17176,25 @@ export class MySqlParser extends SQLParserBase { } public dropFunction(): DropFunctionContext { let localContext = new DropFunctionContext(this.context, this.state); - this.enterRule(localContext, 154, MySqlParser.RULE_dropFunction); + this.enterRule(localContext, 160, MySqlParser.RULE_dropFunction); try { this.enterOuterAlt(localContext, 1); { - this.state = 3043; + this.state = 3104; this.match(MySqlParser.KW_DROP); - this.state = 3044; + this.state = 3105; this.match(MySqlParser.KW_FUNCTION); - this.state = 3046; + this.state = 3107; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 370, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { case 1: { - this.state = 3045; + this.state = 3106; this.ifExists(); } break; } - this.state = 3048; + this.state = 3109; this.functionName(); } } @@ -16386,25 +17214,25 @@ export class MySqlParser extends SQLParserBase { } public dropServer(): DropServerContext { let localContext = new DropServerContext(this.context, this.state); - this.enterRule(localContext, 156, MySqlParser.RULE_dropServer); + this.enterRule(localContext, 162, MySqlParser.RULE_dropServer); try { this.enterOuterAlt(localContext, 1); { - this.state = 3050; + this.state = 3111; this.match(MySqlParser.KW_DROP); - this.state = 3051; + this.state = 3112; this.match(MySqlParser.KW_SERVER); - this.state = 3053; + this.state = 3114; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context) ) { case 1: { - this.state = 3052; + this.state = 3113; this.ifExists(); } break; } - this.state = 3055; + this.state = 3116; localContext._serverName = this.uid(); } } @@ -16424,30 +17252,30 @@ export class MySqlParser extends SQLParserBase { } public dropSpatial(): DropSpatialContext { let localContext = new DropSpatialContext(this.context, this.state); - this.enterRule(localContext, 158, MySqlParser.RULE_dropSpatial); + this.enterRule(localContext, 164, MySqlParser.RULE_dropSpatial); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3057; + this.state = 3118; this.match(MySqlParser.KW_DROP); - this.state = 3058; + this.state = 3119; this.match(MySqlParser.KW_SPATIAL); - this.state = 3059; + this.state = 3120; this.match(MySqlParser.KW_REFERENCE); - this.state = 3060; + this.state = 3121; this.match(MySqlParser.KW_SYSTEM); - this.state = 3062; + this.state = 3123; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 3061; + this.state = 3122; this.ifExists(); } } - this.state = 3064; + this.state = 3125; this.match(MySqlParser.DECIMAL_LITERAL); } } @@ -16467,43 +17295,43 @@ export class MySqlParser extends SQLParserBase { } public dropTable(): DropTableContext { let localContext = new DropTableContext(this.context, this.state); - this.enterRule(localContext, 160, MySqlParser.RULE_dropTable); + this.enterRule(localContext, 166, MySqlParser.RULE_dropTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3066; + this.state = 3127; this.match(MySqlParser.KW_DROP); - this.state = 3068; + this.state = 3129; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 3067; + this.state = 3128; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 3070; + this.state = 3131; this.match(MySqlParser.KW_TABLE); - this.state = 3072; + this.state = 3133; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 374, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { case 1: { - this.state = 3071; + this.state = 3132; this.ifExists(); } break; } - this.state = 3074; + this.state = 3135; this.tableNames(); - this.state = 3076; + this.state = 3137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 22 || _la === 146) { { - this.state = 3075; + this.state = 3136; localContext._dropType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 22 || _la === 146)) { @@ -16534,45 +17362,45 @@ export class MySqlParser extends SQLParserBase { } public dropTablespace(): DropTablespaceContext { let localContext = new DropTablespaceContext(this.context, this.state); - this.enterRule(localContext, 162, MySqlParser.RULE_dropTablespace); + this.enterRule(localContext, 168, MySqlParser.RULE_dropTablespace); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3078; + this.state = 3139; this.match(MySqlParser.KW_DROP); - this.state = 3080; + this.state = 3141; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 3079; + this.state = 3140; this.match(MySqlParser.KW_UNDO); } } - this.state = 3082; + this.state = 3143; this.match(MySqlParser.KW_TABLESPACE); - this.state = 3083; + this.state = 3144; this.tablespaceName(); - this.state = 3089; + this.state = 3150; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 380) { { - this.state = 3084; + this.state = 3145; this.match(MySqlParser.KW_ENGINE); - this.state = 3086; + this.state = 3147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3085; + this.state = 3146; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3088; + this.state = 3149; this.engineName(); } } @@ -16595,25 +17423,25 @@ export class MySqlParser extends SQLParserBase { } public dropTrigger(): DropTriggerContext { let localContext = new DropTriggerContext(this.context, this.state); - this.enterRule(localContext, 164, MySqlParser.RULE_dropTrigger); + this.enterRule(localContext, 170, MySqlParser.RULE_dropTrigger); try { this.enterOuterAlt(localContext, 1); { - this.state = 3091; + this.state = 3152; this.match(MySqlParser.KW_DROP); - this.state = 3092; + this.state = 3153; this.match(MySqlParser.KW_TRIGGER); - this.state = 3094; + this.state = 3155; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 379, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 389, this.context) ) { case 1: { - this.state = 3093; + this.state = 3154; this.ifExists(); } break; } - this.state = 3096; + this.state = 3157; localContext._trigger_name = this.fullId(); } } @@ -16633,49 +17461,49 @@ export class MySqlParser extends SQLParserBase { } public dropView(): DropViewContext { let localContext = new DropViewContext(this.context, this.state); - this.enterRule(localContext, 166, MySqlParser.RULE_dropView); + this.enterRule(localContext, 172, MySqlParser.RULE_dropView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3098; + this.state = 3159; this.match(MySqlParser.KW_DROP); - this.state = 3099; + this.state = 3160; this.match(MySqlParser.KW_VIEW); - this.state = 3101; + this.state = 3162; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { case 1: { - this.state = 3100; + this.state = 3161; this.ifExists(); } break; } - this.state = 3103; + this.state = 3164; this.viewName(); - this.state = 3108; + this.state = 3169; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3104; + this.state = 3165; this.match(MySqlParser.COMMA); - this.state = 3105; + this.state = 3166; this.viewName(); } } - this.state = 3110; + this.state = 3171; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3112; + this.state = 3173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 22 || _la === 146) { { - this.state = 3111; + this.state = 3172; localContext._dropType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 22 || _la === 146)) { @@ -16706,25 +17534,25 @@ export class MySqlParser extends SQLParserBase { } public dropRole(): DropRoleContext { let localContext = new DropRoleContext(this.context, this.state); - this.enterRule(localContext, 168, MySqlParser.RULE_dropRole); + this.enterRule(localContext, 174, MySqlParser.RULE_dropRole); try { this.enterOuterAlt(localContext, 1); { - this.state = 3114; + this.state = 3175; this.match(MySqlParser.KW_DROP); - this.state = 3115; + this.state = 3176; this.match(MySqlParser.KW_ROLE); - this.state = 3117; + this.state = 3178; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 383, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 393, this.context) ) { case 1: { - this.state = 3116; + this.state = 3177; this.ifExists(); } break; } - this.state = 3119; + this.state = 3180; this.userOrRoleNames(); } } @@ -16744,64 +17572,64 @@ export class MySqlParser extends SQLParserBase { } public setRole(): SetRoleContext { let localContext = new SetRoleContext(this.context, this.state); - this.enterRule(localContext, 170, MySqlParser.RULE_setRole); + this.enterRule(localContext, 176, MySqlParser.RULE_setRole); let _la: number; try { - this.state = 3141; + this.state = 3202; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3121; + this.state = 3182; this.match(MySqlParser.KW_SET); - this.state = 3122; + this.state = 3183; this.match(MySqlParser.KW_DEFAULT); - this.state = 3123; + this.state = 3184; this.match(MySqlParser.KW_ROLE); - this.state = 3127; + this.state = 3188; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { case 1: { - this.state = 3124; + this.state = 3185; this.match(MySqlParser.KW_NONE); } break; case 2: { - this.state = 3125; + this.state = 3186; this.match(MySqlParser.KW_ALL); } break; case 3: { - this.state = 3126; + this.state = 3187; this.userOrRoleNames(); } break; } - this.state = 3129; + this.state = 3190; this.match(MySqlParser.KW_TO); { - this.state = 3130; + this.state = 3191; this.userOrRoleName(); } - this.state = 3135; + this.state = 3196; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3131; + this.state = 3192; this.match(MySqlParser.COMMA); { - this.state = 3132; + this.state = 3193; this.userOrRoleName(); } } } - this.state = 3137; + this.state = 3198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -16810,11 +17638,11 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3138; + this.state = 3199; this.match(MySqlParser.KW_SET); - this.state = 3139; + this.state = 3200; this.match(MySqlParser.KW_ROLE); - this.state = 3140; + this.state = 3201; this.roleOption(); } break; @@ -16836,30 +17664,30 @@ export class MySqlParser extends SQLParserBase { } public renameTable(): RenameTableContext { let localContext = new RenameTableContext(this.context, this.state); - this.enterRule(localContext, 172, MySqlParser.RULE_renameTable); + this.enterRule(localContext, 178, MySqlParser.RULE_renameTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3143; + this.state = 3204; this.match(MySqlParser.KW_RENAME); - this.state = 3144; + this.state = 3205; this.match(MySqlParser.KW_TABLE); - this.state = 3145; + this.state = 3206; this.renameTableClause(); - this.state = 3150; + this.state = 3211; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3146; + this.state = 3207; this.match(MySqlParser.COMMA); - this.state = 3147; + this.state = 3208; this.renameTableClause(); } } - this.state = 3152; + this.state = 3213; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -16881,15 +17709,15 @@ export class MySqlParser extends SQLParserBase { } public renameTableClause(): RenameTableClauseContext { let localContext = new RenameTableClauseContext(this.context, this.state); - this.enterRule(localContext, 174, MySqlParser.RULE_renameTableClause); + this.enterRule(localContext, 180, MySqlParser.RULE_renameTableClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3153; + this.state = 3214; this.tableName(); - this.state = 3154; + this.state = 3215; this.match(MySqlParser.KW_TO); - this.state = 3155; + this.state = 3216; this.tableNameCreate(); } } @@ -16909,24 +17737,24 @@ export class MySqlParser extends SQLParserBase { } public truncateTable(): TruncateTableContext { let localContext = new TruncateTableContext(this.context, this.state); - this.enterRule(localContext, 176, MySqlParser.RULE_truncateTable); + this.enterRule(localContext, 182, MySqlParser.RULE_truncateTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3157; + this.state = 3218; this.match(MySqlParser.KW_TRUNCATE); - this.state = 3159; + this.state = 3220; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 173) { { - this.state = 3158; + this.state = 3219; this.match(MySqlParser.KW_TABLE); } } - this.state = 3161; + this.state = 3222; this.tableName(); } } @@ -16946,38 +17774,38 @@ export class MySqlParser extends SQLParserBase { } public callStatement(): CallStatementContext { let localContext = new CallStatementContext(this.context, this.state); - this.enterRule(localContext, 178, MySqlParser.RULE_callStatement); + this.enterRule(localContext, 184, MySqlParser.RULE_callStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3163; + this.state = 3224; this.match(MySqlParser.KW_CALL); - this.state = 3164; + this.state = 3225; localContext._sp_name = this.fullId(); - this.state = 3171; + this.state = 3232; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 400, this.context) ) { case 1: { - this.state = 3165; + this.state = 3226; this.match(MySqlParser.LR_BRACKET); - this.state = 3168; + this.state = 3229; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 389, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { case 1: { - this.state = 3166; + this.state = 3227; this.constants(); } break; case 2: { - this.state = 3167; + this.state = 3228; this.expressions(); } break; } - this.state = 3170; + this.state = 3231; this.match(MySqlParser.RR_BRACKET); } break; @@ -17000,22 +17828,22 @@ export class MySqlParser extends SQLParserBase { } public deleteStatement(): DeleteStatementContext { let localContext = new DeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 180, MySqlParser.RULE_deleteStatement); + this.enterRule(localContext, 186, MySqlParser.RULE_deleteStatement); try { - this.state = 3175; + this.state = 3236; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 391, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3173; + this.state = 3234; this.singleDeleteStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3174; + this.state = 3235; this.multipleDeleteStatement(); } break; @@ -17037,13 +17865,13 @@ export class MySqlParser extends SQLParserBase { } public doStatement(): DoStatementContext { let localContext = new DoStatementContext(this.context, this.state); - this.enterRule(localContext, 182, MySqlParser.RULE_doStatement); + this.enterRule(localContext, 188, MySqlParser.RULE_doStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3177; + this.state = 3238; this.match(MySqlParser.KW_DO); - this.state = 3178; + this.state = 3239; this.expressions(); } } @@ -17063,36 +17891,36 @@ export class MySqlParser extends SQLParserBase { } public handlerStatement(): HandlerStatementContext { let localContext = new HandlerStatementContext(this.context, this.state); - this.enterRule(localContext, 184, MySqlParser.RULE_handlerStatement); + this.enterRule(localContext, 190, MySqlParser.RULE_handlerStatement); try { - this.state = 3184; + this.state = 3245; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 402, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3180; + this.state = 3241; this.handlerOpenStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3181; + this.state = 3242; this.handlerReadIndexStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3182; + this.state = 3243; this.handlerReadStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3183; + this.state = 3244; this.handlerCloseStatement(); } break; @@ -17114,19 +17942,19 @@ export class MySqlParser extends SQLParserBase { } public insertStatement(): InsertStatementContext { let localContext = new InsertStatementContext(this.context, this.state); - this.enterRule(localContext, 186, MySqlParser.RULE_insertStatement); + this.enterRule(localContext, 192, MySqlParser.RULE_insertStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3186; + this.state = 3247; this.match(MySqlParser.KW_INSERT); - this.state = 3188; + this.state = 3249; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 43 || _la === 76 || _la === 107) { { - this.state = 3187; + this.state = 3248; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 43 || _la === 76 || _la === 107)) { @@ -17139,89 +17967,89 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3191; + this.state = 3252; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3190; + this.state = 3251; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3194; + this.state = 3255; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3193; + this.state = 3254; this.match(MySqlParser.KW_INTO); } } - this.state = 3196; + this.state = 3257; this.tableName(); - this.state = 3203; + this.state = 3264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3197; + this.state = 3258; this.match(MySqlParser.KW_PARTITION); - this.state = 3198; + this.state = 3259; this.match(MySqlParser.LR_BRACKET); - this.state = 3200; + this.state = 3261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 3199; + this.state = 3260; this.partitionNames(); } } - this.state = 3202; + this.state = 3263; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3216; + this.state = 3277; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 411, this.context) ) { case 1: { - this.state = 3206; + this.state = 3267; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 398, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 408, this.context) ) { case 1: { - this.state = 3205; + this.state = 3266; this.fullColumnNames(); } break; } - this.state = 3210; + this.state = 3271; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { case 1: { - this.state = 3208; + this.state = 3269; this.valuesOrValueList(); } break; case 2: { - this.state = 3209; + this.state = 3270; this.selectOrTableOrValues(); } break; } - this.state = 3213; + this.state = 3274; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 400, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { case 1: { - this.state = 3212; + this.state = 3273; this.asRowAlias(); } break; @@ -17230,50 +18058,50 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 3215; + this.state = 3276; this.setAssignmentList(); } break; } - this.state = 3219; + this.state = 3280; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3218; + this.state = 3279; this.asRowAlias(); } } - this.state = 3233; + this.state = 3294; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 119) { { - this.state = 3221; + this.state = 3282; this.match(MySqlParser.KW_ON); - this.state = 3222; + this.state = 3283; this.match(MySqlParser.KW_DUPLICATE); - this.state = 3223; + this.state = 3284; this.match(MySqlParser.KW_KEY); - this.state = 3224; + this.state = 3285; this.match(MySqlParser.KW_UPDATE); - this.state = 3225; + this.state = 3286; localContext._duplicatedFirst = this.updatedElement(); - this.state = 3230; + this.state = 3291; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3226; + this.state = 3287; this.match(MySqlParser.COMMA); - this.state = 3227; + this.state = 3288; localContext._updatedElement = this.updatedElement(); localContext._duplicatedElements.push(localContext._updatedElement); } } - this.state = 3232; + this.state = 3293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17298,20 +18126,20 @@ export class MySqlParser extends SQLParserBase { } public asRowAlias(): AsRowAliasContext { let localContext = new AsRowAliasContext(this.context, this.state); - this.enterRule(localContext, 188, MySqlParser.RULE_asRowAlias); + this.enterRule(localContext, 194, MySqlParser.RULE_asRowAlias); try { this.enterOuterAlt(localContext, 1); { - this.state = 3235; + this.state = 3296; this.match(MySqlParser.KW_AS); - this.state = 3236; + this.state = 3297; localContext._rowAlias = this.uid(); - this.state = 3238; + this.state = 3299; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 405, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 415, this.context) ) { case 1: { - this.state = 3237; + this.state = 3298; this.fullColumnNames(); } break; @@ -17334,32 +18162,32 @@ export class MySqlParser extends SQLParserBase { } public selectOrTableOrValues(): SelectOrTableOrValuesContext { let localContext = new SelectOrTableOrValuesContext(this.context, this.state); - this.enterRule(localContext, 190, MySqlParser.RULE_selectOrTableOrValues); + this.enterRule(localContext, 196, MySqlParser.RULE_selectOrTableOrValues); try { - this.state = 3244; + this.state = 3305; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: case MySqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 3240; + this.state = 3301; this.selectStatement(); } break; case MySqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 3241; + this.state = 3302; this.match(MySqlParser.KW_TABLE); - this.state = 3242; + this.state = 3303; this.tableName(); } break; case MySqlParser.KW_VALUES: this.enterOuterAlt(localContext, 3); { - this.state = 3243; + this.state = 3304; this.rowValuesList(); } break; @@ -17383,27 +18211,27 @@ export class MySqlParser extends SQLParserBase { } public interSectStatement(): InterSectStatementContext { let localContext = new InterSectStatementContext(this.context, this.state); - this.enterRule(localContext, 192, MySqlParser.RULE_interSectStatement); + this.enterRule(localContext, 198, MySqlParser.RULE_interSectStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3246; + this.state = 3307; this.interSectQuery(); - this.state = 3252; + this.state = 3313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3247; + this.state = 3308; this.match(MySqlParser.KW_INTERSECT); - this.state = 3249; + this.state = 3310; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3248; + this.state = 3309; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -17415,11 +18243,11 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3251; + this.state = 3312; this.interSectQuery(); } } - this.state = 3254; + this.state = 3315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 828); @@ -17441,29 +18269,29 @@ export class MySqlParser extends SQLParserBase { } public interSectQuery(): InterSectQueryContext { let localContext = new InterSectQueryContext(this.context, this.state); - this.enterRule(localContext, 194, MySqlParser.RULE_interSectQuery); + this.enterRule(localContext, 200, MySqlParser.RULE_interSectQuery); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3257; + this.state = 3318; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 3256; + this.state = 3317; this.match(MySqlParser.LR_BRACKET); } } - this.state = 3259; + this.state = 3320; this.querySpecification(); - this.state = 3261; + this.state = 3322; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { case 1: { - this.state = 3260; + this.state = 3321; this.match(MySqlParser.RR_BRACKET); } break; @@ -17486,21 +18314,21 @@ export class MySqlParser extends SQLParserBase { } public loadDataStatement(): LoadDataStatementContext { let localContext = new LoadDataStatementContext(this.context, this.state); - this.enterRule(localContext, 196, MySqlParser.RULE_loadDataStatement); + this.enterRule(localContext, 202, MySqlParser.RULE_loadDataStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3263; + this.state = 3324; this.match(MySqlParser.KW_LOAD); - this.state = 3264; + this.state = 3325; this.match(MySqlParser.KW_DATA); - this.state = 3266; + this.state = 3327; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107 || _la === 347) { { - this.state = 3265; + this.state = 3326; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 107 || _la === 347)) { @@ -17513,26 +18341,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3269; + this.state = 3330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 450) { { - this.state = 3268; + this.state = 3329; this.match(MySqlParser.KW_LOCAL); } } - this.state = 3271; + this.state = 3332; this.match(MySqlParser.KW_INFILE); - this.state = 3272; + this.state = 3333; localContext._filename = this.match(MySqlParser.STRING_LITERAL); - this.state = 3274; + this.state = 3335; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79 || _la === 143) { { - this.state = 3273; + this.state = 3334; localContext._violation = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 79 || _la === 143)) { @@ -17545,48 +18373,48 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3276; + this.state = 3337; this.match(MySqlParser.KW_INTO); - this.state = 3277; + this.state = 3338; this.match(MySqlParser.KW_TABLE); - this.state = 3278; + this.state = 3339; this.tableName(); - this.state = 3284; + this.state = 3345; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3279; + this.state = 3340; this.match(MySqlParser.KW_PARTITION); - this.state = 3280; + this.state = 3341; this.match(MySqlParser.LR_BRACKET); - this.state = 3281; + this.state = 3342; this.partitionNames(); - this.state = 3282; + this.state = 3343; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3289; + this.state = 3350; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 26) { { - this.state = 3286; + this.state = 3347; this.match(MySqlParser.KW_CHARACTER); - this.state = 3287; + this.state = 3348; this.match(MySqlParser.KW_SET); - this.state = 3288; + this.state = 3349; localContext._charset = this.charsetName(); } } - this.state = 3297; + this.state = 3358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 337 || _la === 398) { { - this.state = 3291; + this.state = 3352; localContext._fieldsFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 337 || _la === 398)) { @@ -17596,57 +18424,57 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3293; + this.state = 3354; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3292; + this.state = 3353; this.selectFieldsInto(); } } - this.state = 3295; + this.state = 3356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 56 || _la === 58 || _la === 123 || _la === 174); } } - this.state = 3305; + this.state = 3366; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3299; + this.state = 3360; this.match(MySqlParser.KW_LINES); - this.state = 3301; + this.state = 3362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3300; + this.state = 3361; this.selectLinesInto(); } } - this.state = 3303; + this.state = 3364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 171 || _la === 174); } } - this.state = 3311; + this.state = 3372; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3307; + this.state = 3368; this.match(MySqlParser.KW_IGNORE); - this.state = 3308; + this.state = 3369; this.decimalLiteral(); - this.state = 3309; + this.state = 3370; localContext._linesFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 102 || _la === 587)) { @@ -17659,58 +18487,58 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3324; + this.state = 3385; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { case 1: { - this.state = 3313; + this.state = 3374; this.match(MySqlParser.LR_BRACKET); - this.state = 3314; + this.state = 3375; this.assignmentField(); - this.state = 3319; + this.state = 3380; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3315; + this.state = 3376; this.match(MySqlParser.COMMA); - this.state = 3316; + this.state = 3377; this.assignmentField(); } } - this.state = 3321; + this.state = 3382; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3322; + this.state = 3383; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3335; + this.state = 3396; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { case 1: { - this.state = 3326; + this.state = 3387; this.match(MySqlParser.KW_SET); - this.state = 3327; + this.state = 3388; this.updatedElement(); - this.state = 3332; + this.state = 3393; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3328; + this.state = 3389; this.match(MySqlParser.COMMA); - this.state = 3329; + this.state = 3390; this.updatedElement(); } } - this.state = 3334; + this.state = 3395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17735,21 +18563,21 @@ export class MySqlParser extends SQLParserBase { } public loadXmlStatement(): LoadXmlStatementContext { let localContext = new LoadXmlStatementContext(this.context, this.state); - this.enterRule(localContext, 198, MySqlParser.RULE_loadXmlStatement); + this.enterRule(localContext, 204, MySqlParser.RULE_loadXmlStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3337; + this.state = 3398; this.match(MySqlParser.KW_LOAD); - this.state = 3338; + this.state = 3399; this.match(MySqlParser.KW_XML); - this.state = 3340; + this.state = 3401; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107 || _la === 347) { { - this.state = 3339; + this.state = 3400; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 107 || _la === 347)) { @@ -17762,26 +18590,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3343; + this.state = 3404; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 450) { { - this.state = 3342; + this.state = 3403; this.match(MySqlParser.KW_LOCAL); } } - this.state = 3345; + this.state = 3406; this.match(MySqlParser.KW_INFILE); - this.state = 3346; + this.state = 3407; localContext._filename = this.match(MySqlParser.STRING_LITERAL); - this.state = 3348; + this.state = 3409; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79 || _la === 143) { { - this.state = 3347; + this.state = 3408; localContext._violation = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 79 || _la === 143)) { @@ -17794,55 +18622,55 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3350; + this.state = 3411; this.match(MySqlParser.KW_INTO); - this.state = 3351; + this.state = 3412; this.match(MySqlParser.KW_TABLE); - this.state = 3352; + this.state = 3413; this.tableName(); - this.state = 3356; + this.state = 3417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 26) { { - this.state = 3353; + this.state = 3414; this.match(MySqlParser.KW_CHARACTER); - this.state = 3354; + this.state = 3415; this.match(MySqlParser.KW_SET); - this.state = 3355; + this.state = 3416; localContext._charset = this.charsetName(); } } - this.state = 3368; + this.state = 3429; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 587) { { - this.state = 3358; + this.state = 3419; this.match(MySqlParser.KW_ROWS); - this.state = 3359; + this.state = 3420; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 3360; + this.state = 3421; this.match(MySqlParser.KW_BY); - this.state = 3362; + this.state = 3423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 859) { { - this.state = 3361; + this.state = 3422; this.match(MySqlParser.LESS_SYMBOL); } } - this.state = 3364; + this.state = 3425; localContext._tag = this.match(MySqlParser.STRING_LITERAL); - this.state = 3366; + this.state = 3427; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 858) { { - this.state = 3365; + this.state = 3426; this.match(MySqlParser.GREATER_SYMBOL); } } @@ -17850,16 +18678,16 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3374; + this.state = 3435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3370; + this.state = 3431; this.match(MySqlParser.KW_IGNORE); - this.state = 3371; + this.state = 3432; this.decimalLiteral(); - this.state = 3372; + this.state = 3433; localContext._linesFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 102 || _la === 587)) { @@ -17872,58 +18700,58 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3387; + this.state = 3448; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { case 1: { - this.state = 3376; + this.state = 3437; this.match(MySqlParser.LR_BRACKET); - this.state = 3377; + this.state = 3438; this.assignmentField(); - this.state = 3382; + this.state = 3443; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3378; + this.state = 3439; this.match(MySqlParser.COMMA); - this.state = 3379; + this.state = 3440; this.assignmentField(); } } - this.state = 3384; + this.state = 3445; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3385; + this.state = 3446; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3398; + this.state = 3459; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 436, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 446, this.context) ) { case 1: { - this.state = 3389; + this.state = 3450; this.match(MySqlParser.KW_SET); - this.state = 3390; + this.state = 3451; this.updatedElement(); - this.state = 3395; + this.state = 3456; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3391; + this.state = 3452; this.match(MySqlParser.COMMA); - this.state = 3392; + this.state = 3453; this.updatedElement(); } } - this.state = 3397; + this.state = 3458; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17948,63 +18776,63 @@ export class MySqlParser extends SQLParserBase { } public parenthesizedQuery(): ParenthesizedQueryContext { let localContext = new ParenthesizedQueryContext(this.context, this.state); - this.enterRule(localContext, 200, MySqlParser.RULE_parenthesizedQuery); + this.enterRule(localContext, 206, MySqlParser.RULE_parenthesizedQuery); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3400; + this.state = 3461; this.match(MySqlParser.LR_BRACKET); - this.state = 3401; + this.state = 3462; this.parenthesizedQueryExpression(); - this.state = 3403; + this.state = 3464; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3402; + this.state = 3463; this.orderByClause(); } } - this.state = 3406; + this.state = 3467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3405; + this.state = 3466; this.limitClause(); } } - this.state = 3408; + this.state = 3469; this.match(MySqlParser.RR_BRACKET); - this.state = 3410; + this.state = 3471; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3409; + this.state = 3470; this.orderByClause(); } } - this.state = 3413; + this.state = 3474; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3412; + this.state = 3473; this.limitClause(); } } - this.state = 3416; + this.state = 3477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3415; + this.state = 3476; this.intoClause(); } } @@ -18027,19 +18855,19 @@ export class MySqlParser extends SQLParserBase { } public replaceStatement(): ReplaceStatementContext { let localContext = new ReplaceStatementContext(this.context, this.state); - this.enterRule(localContext, 202, MySqlParser.RULE_replaceStatement); + this.enterRule(localContext, 208, MySqlParser.RULE_replaceStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3418; + this.state = 3479; this.match(MySqlParser.KW_REPLACE); - this.state = 3420; + this.state = 3481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 43 || _la === 107) { { - this.state = 3419; + this.state = 3480; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 43 || _la === 107)) { @@ -18052,35 +18880,35 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3423; + this.state = 3484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3422; + this.state = 3483; this.match(MySqlParser.KW_INTO); } } - this.state = 3425; + this.state = 3486; this.tableName(); - this.state = 3431; + this.state = 3492; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3426; + this.state = 3487; this.match(MySqlParser.KW_PARTITION); - this.state = 3427; + this.state = 3488; this.match(MySqlParser.LR_BRACKET); - this.state = 3428; + this.state = 3489; this.partitionNames(); - this.state = 3429; + this.state = 3490; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3441; + this.state = 3502; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: @@ -18089,27 +18917,27 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VALUE: case MySqlParser.LR_BRACKET: { - this.state = 3437; + this.state = 3498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 445, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { case 1: { - this.state = 3433; + this.state = 3494; this.match(MySqlParser.LR_BRACKET); - this.state = 3434; + this.state = 3495; this.columnNames(); - this.state = 3435; + this.state = 3496; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3439; + this.state = 3500; this.replaceStatementValuesOrSelectOrTable(); } break; case MySqlParser.KW_SET: { - this.state = 3440; + this.state = 3501; this.setAssignmentList(); } break; @@ -18134,48 +18962,48 @@ export class MySqlParser extends SQLParserBase { } public selectStatement(): SelectStatementContext { let localContext = new SelectStatementContext(this.context, this.state); - this.enterRule(localContext, 204, MySqlParser.RULE_selectStatement); + this.enterRule(localContext, 210, MySqlParser.RULE_selectStatement); let _la: number; try { let alternative: number; - this.state = 3502; + this.state = 3563; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: localContext = new UnionAndLateralSelectContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3443; + this.state = 3504; this.querySpecification(); - this.state = 3447; + this.state = 3508; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 447, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 457, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3444; + this.state = 3505; this.unionStatement(); } } } - this.state = 3449; + this.state = 3510; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 447, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 457, this.context); } - this.state = 3458; + this.state = 3519; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 450, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { case 1: { - this.state = 3450; + this.state = 3511; this.match(MySqlParser.KW_UNION); - this.state = 3452; + this.state = 3513; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3451; + this.state = 3512; (localContext as UnionAndLateralSelectContext)._unionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -18188,18 +19016,18 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3456; + this.state = 3517; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: { - this.state = 3454; + this.state = 3515; this.querySpecification(); } break; case MySqlParser.LR_BRACKET: { - this.state = 3455; + this.state = 3516; this.queryExpression(); } break; @@ -18209,60 +19037,60 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 3464; + this.state = 3525; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3460; + this.state = 3521; this.match(MySqlParser.COMMA); - this.state = 3461; + this.state = 3522; this.lateralStatement(); } } } - this.state = 3466; + this.state = 3527; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); } - this.state = 3468; + this.state = 3529; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { case 1: { - this.state = 3467; + this.state = 3528; this.orderByClause(); } break; } - this.state = 3471; + this.state = 3532; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 453, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { case 1: { - this.state = 3470; + this.state = 3531; this.limitClause(); } break; } - this.state = 3474; + this.state = 3535; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 454, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: { - this.state = 3473; + this.state = 3534; this.lockClause(); } break; } - this.state = 3477; + this.state = 3538; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: { - this.state = 3476; + this.state = 3537; this.intoClause(); } break; @@ -18273,37 +19101,37 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectExpressionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3479; + this.state = 3540; this.queryExpression(); - this.state = 3483; + this.state = 3544; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 456, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 466, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3480; + this.state = 3541; this.unionStatement(); } } } - this.state = 3485; + this.state = 3546; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 456, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 466, this.context); } - this.state = 3491; + this.state = 3552; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { case 1: { - this.state = 3486; + this.state = 3547; this.match(MySqlParser.KW_UNION); - this.state = 3488; + this.state = 3549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3487; + this.state = 3548; (localContext as SelectExpressionContext)._unionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -18316,37 +19144,37 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3490; + this.state = 3551; this.queryExpression(); } break; } - this.state = 3494; + this.state = 3555; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { case 1: { - this.state = 3493; + this.state = 3554; this.orderByClause(); } break; } - this.state = 3497; + this.state = 3558; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { case 1: { - this.state = 3496; + this.state = 3557; this.limitClause(); } break; } - this.state = 3500; + this.state = 3561; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { case 1: { - this.state = 3499; + this.state = 3560; this.lockClause(); } break; @@ -18373,49 +19201,49 @@ export class MySqlParser extends SQLParserBase { } public setOperations(): SetOperationsContext { let localContext = new SetOperationsContext(this.context, this.state); - this.enterRule(localContext, 206, MySqlParser.RULE_setOperations); + this.enterRule(localContext, 212, MySqlParser.RULE_setOperations); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3505; + this.state = 3566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 3504; + this.state = 3565; this.withClause(); } } - this.state = 3507; + this.state = 3568; this.queryExpressionBody(0); - this.state = 3509; + this.state = 3570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3508; + this.state = 3569; this.orderByClause(); } } - this.state = 3512; + this.state = 3573; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3511; + this.state = 3572; this.limitClause(); } } - this.state = 3515; + this.state = 3576; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3514; + this.state = 3575; this.intoClause(); } } @@ -18448,21 +19276,21 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryExpressionBodyContext(this.context, parentState); let previousContext = localContext; - let _startState = 208; - this.enterRecursionRule(localContext, 208, MySqlParser.RULE_queryExpressionBody, _p); + let _startState = 214; + this.enterRecursionRule(localContext, 214, MySqlParser.RULE_queryExpressionBody, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { { - this.state = 3518; + this.state = 3579; this.queryItem(0); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 3534; + this.state = 3595; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 470, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 480, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -18470,25 +19298,25 @@ export class MySqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 3532; + this.state = 3593; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 479, this.context) ) { case 1: { localContext = new QueryExpressionBodyContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_queryExpressionBody); - this.state = 3520; + this.state = 3581; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 3521; + this.state = 3582; this.match(MySqlParser.KW_UNION); - this.state = 3523; + this.state = 3584; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3522; + this.state = 3583; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -18500,7 +19328,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3525; + this.state = 3586; this.queryItem(0); } break; @@ -18508,18 +19336,18 @@ export class MySqlParser extends SQLParserBase { { localContext = new QueryExpressionBodyContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_queryExpressionBody); - this.state = 3526; + this.state = 3587; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 3527; + this.state = 3588; this.match(MySqlParser.KW_EXCEPT); - this.state = 3529; + this.state = 3590; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3528; + this.state = 3589; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -18531,16 +19359,16 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3531; + this.state = 3592; this.queryItem(0); } break; } } } - this.state = 3536; + this.state = 3597; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 470, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 480, this.context); } } } @@ -18570,21 +19398,21 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryItemContext(this.context, parentState); let previousContext = localContext; - let _startState = 210; - this.enterRecursionRule(localContext, 210, MySqlParser.RULE_queryItem, _p); + let _startState = 216; + this.enterRecursionRule(localContext, 216, MySqlParser.RULE_queryItem, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { { - this.state = 3538; + this.state = 3599; this.queryPrimary(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 3548; + this.state = 3609; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 472, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 482, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -18595,18 +19423,18 @@ export class MySqlParser extends SQLParserBase { { localContext = new QueryItemContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_queryItem); - this.state = 3540; + this.state = 3601; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 3541; + this.state = 3602; this.match(MySqlParser.KW_INTERSECT); - this.state = 3543; + this.state = 3604; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3542; + this.state = 3603; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -18618,14 +19446,14 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3545; + this.state = 3606; this.queryPrimary(); } } } - this.state = 3550; + this.state = 3611; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 472, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 482, this.context); } } } @@ -18645,57 +19473,57 @@ export class MySqlParser extends SQLParserBase { } public queryPrimary(): QueryPrimaryContext { let localContext = new QueryPrimaryContext(this.context, this.state); - this.enterRule(localContext, 212, MySqlParser.RULE_queryPrimary); + this.enterRule(localContext, 218, MySqlParser.RULE_queryPrimary); let _la: number; try { - this.state = 3565; + this.state = 3626; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 486, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3551; + this.state = 3612; this.queryBlock(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3552; + this.state = 3613; this.match(MySqlParser.LR_BRACKET); - this.state = 3553; + this.state = 3614; this.queryExpressionBody(0); - this.state = 3555; + this.state = 3616; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3554; + this.state = 3615; this.orderByClause(); } } - this.state = 3558; + this.state = 3619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3557; + this.state = 3618; this.limitClause(); } } - this.state = 3561; + this.state = 3622; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3560; + this.state = 3621; this.intoClause(); } } - this.state = 3563; + this.state = 3624; this.match(MySqlParser.RR_BRACKET); } break; @@ -18717,22 +19545,22 @@ export class MySqlParser extends SQLParserBase { } public updateStatement(): UpdateStatementContext { let localContext = new UpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 214, MySqlParser.RULE_updateStatement); + this.enterRule(localContext, 220, MySqlParser.RULE_updateStatement); try { - this.state = 3569; + this.state = 3630; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 477, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 487, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3567; + this.state = 3628; this.singleUpdateStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3568; + this.state = 3629; this.multipleUpdateStatement(); } break; @@ -18754,34 +19582,34 @@ export class MySqlParser extends SQLParserBase { } public valuesStatement(): ValuesStatementContext { let localContext = new ValuesStatementContext(this.context, this.state); - this.enterRule(localContext, 216, MySqlParser.RULE_valuesStatement); + this.enterRule(localContext, 222, MySqlParser.RULE_valuesStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3571; + this.state = 3632; this.rowValuesList(); - this.state = 3575; + this.state = 3636; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 478, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) { case 1: { - this.state = 3572; + this.state = 3633; this.match(MySqlParser.KW_ORDER); - this.state = 3573; + this.state = 3634; this.match(MySqlParser.KW_BY); - this.state = 3574; + this.state = 3635; this.indexColumnName(); } break; } - this.state = 3579; + this.state = 3640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 479, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 489, this.context) ) { case 1: { - this.state = 3577; + this.state = 3638; this.match(MySqlParser.KW_LIMIT); - this.state = 3578; + this.state = 3639; this.limitClauseAtom(); } break; @@ -18804,20 +19632,20 @@ export class MySqlParser extends SQLParserBase { } public parenthesizedQueryExpression(): ParenthesizedQueryExpressionContext { let localContext = new ParenthesizedQueryExpressionContext(this.context, this.state); - this.enterRule(localContext, 218, MySqlParser.RULE_parenthesizedQueryExpression); + this.enterRule(localContext, 224, MySqlParser.RULE_parenthesizedQueryExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3581; + this.state = 3642; this.queryBlock(); - this.state = 3586; + this.state = 3647; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 59 || _la === 181 || _la === 828) { { { - this.state = 3582; + this.state = 3643; _la = this.tokenStream.LA(1); if(!(_la === 59 || _la === 181 || _la === 828)) { this.errorHandler.recoverInline(this); @@ -18826,40 +19654,40 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3583; + this.state = 3644; this.queryBlock(); } } - this.state = 3588; + this.state = 3649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3590; + this.state = 3651; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 481, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 491, this.context) ) { case 1: { - this.state = 3589; + this.state = 3650; this.orderByClause(); } break; } - this.state = 3593; + this.state = 3654; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 482, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 492, this.context) ) { case 1: { - this.state = 3592; + this.state = 3653; this.limitClause(); } break; } - this.state = 3596; + this.state = 3657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3595; + this.state = 3656; this.intoClause(); } } @@ -18882,30 +19710,30 @@ export class MySqlParser extends SQLParserBase { } public queryBlock(): QueryBlockContext { let localContext = new QueryBlockContext(this.context, this.state); - this.enterRule(localContext, 220, MySqlParser.RULE_queryBlock); + this.enterRule(localContext, 226, MySqlParser.RULE_queryBlock); try { - this.state = 3601; + this.state = 3662; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: case MySqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 3598; + this.state = 3659; this.selectStatement(); } break; case MySqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 3599; + this.state = 3660; this.tableStatement(); } break; case MySqlParser.KW_VALUES: this.enterOuterAlt(localContext, 3); { - this.state = 3600; + this.state = 3661; this.valuesStatement(); } break; @@ -18929,38 +19757,38 @@ export class MySqlParser extends SQLParserBase { } public replaceStatementValuesOrSelectOrTable(): ReplaceStatementValuesOrSelectOrTableContext { let localContext = new ReplaceStatementValuesOrSelectOrTableContext(this.context, this.state); - this.enterRule(localContext, 222, MySqlParser.RULE_replaceStatementValuesOrSelectOrTable); + this.enterRule(localContext, 228, MySqlParser.RULE_replaceStatementValuesOrSelectOrTable); try { - this.state = 3608; + this.state = 3669; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 485, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 495, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3603; + this.state = 3664; this.selectStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3604; + this.state = 3665; this.match(MySqlParser.KW_TABLE); - this.state = 3605; + this.state = 3666; this.tableName(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3606; + this.state = 3667; this.valuesOrValueList(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3607; + this.state = 3668; this.rowValuesList(); } break; @@ -18982,36 +19810,36 @@ export class MySqlParser extends SQLParserBase { } public rowValuesList(): RowValuesListContext { let localContext = new RowValuesListContext(this.context, this.state); - this.enterRule(localContext, 224, MySqlParser.RULE_rowValuesList); + this.enterRule(localContext, 230, MySqlParser.RULE_rowValuesList); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3610; + this.state = 3671; this.match(MySqlParser.KW_VALUES); - this.state = 3611; + this.state = 3672; this.match(MySqlParser.KW_ROW); - this.state = 3612; + this.state = 3673; this.expressionsWithDefaults(); - this.state = 3618; + this.state = 3679; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 486, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 496, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3613; + this.state = 3674; this.match(MySqlParser.COMMA); - this.state = 3614; + this.state = 3675; this.match(MySqlParser.KW_ROW); - this.state = 3615; + this.state = 3676; this.expressionsWithDefaults(); } } } - this.state = 3620; + this.state = 3681; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 486, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 496, this.context); } } } @@ -19031,29 +19859,29 @@ export class MySqlParser extends SQLParserBase { } public setAssignmentList(): SetAssignmentListContext { let localContext = new SetAssignmentListContext(this.context, this.state); - this.enterRule(localContext, 226, MySqlParser.RULE_setAssignmentList); + this.enterRule(localContext, 232, MySqlParser.RULE_setAssignmentList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3621; + this.state = 3682; this.match(MySqlParser.KW_SET); - this.state = 3622; + this.state = 3683; localContext._setFirst = this.updatedElement(); - this.state = 3627; + this.state = 3688; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3623; + this.state = 3684; this.match(MySqlParser.COMMA); - this.state = 3624; + this.state = 3685; localContext._updatedElement = this.updatedElement(); localContext._setElements.push(localContext._updatedElement); } } - this.state = 3629; + this.state = 3690; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19075,15 +19903,15 @@ export class MySqlParser extends SQLParserBase { } public updatedElement(): UpdatedElementContext { let localContext = new UpdatedElementContext(this.context, this.state); - this.enterRule(localContext, 228, MySqlParser.RULE_updatedElement); + this.enterRule(localContext, 234, MySqlParser.RULE_updatedElement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3630; + this.state = 3691; this.columnName(); - this.state = 3631; + this.state = 3692; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 3632; + this.state = 3693; this.expressionOrDefault(); } } @@ -19103,9 +19931,9 @@ export class MySqlParser extends SQLParserBase { } public assignmentField(): AssignmentFieldContext { let localContext = new AssignmentFieldContext(this.context, this.state); - this.enterRule(localContext, 230, MySqlParser.RULE_assignmentField); + this.enterRule(localContext, 236, MySqlParser.RULE_assignmentField); try { - this.state = 3636; + this.state = 3697; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -19438,6 +20266,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -19658,14 +20487,14 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 1); { - this.state = 3634; + this.state = 3695; localContext._var_name = this.uid(); } break; case MySqlParser.LOCAL_ID: this.enterOuterAlt(localContext, 2); { - this.state = 3635; + this.state = 3696; this.match(MySqlParser.LOCAL_ID); } break; @@ -19689,19 +20518,19 @@ export class MySqlParser extends SQLParserBase { } public lockClause(): LockClauseContext { let localContext = new LockClauseContext(this.context, this.state); - this.enterRule(localContext, 232, MySqlParser.RULE_lockClause); + this.enterRule(localContext, 238, MySqlParser.RULE_lockClause); let _la: number; try { let alternative: number; - this.state = 3659; + this.state = 3720; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FOR: this.enterOuterAlt(localContext, 1); { - this.state = 3638; + this.state = 3699; this.match(MySqlParser.KW_FOR); - this.state = 3639; + this.state = 3700; _la = this.tokenStream.LA(1); if(!(_la === 185 || _la === 594)) { this.errorHandler.recoverInline(this); @@ -19710,42 +20539,42 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3649; + this.state = 3710; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 500, this.context) ) { case 1: { - this.state = 3640; + this.state = 3701; this.match(MySqlParser.KW_OF); - this.state = 3641; + this.state = 3702; this.tableName(); - this.state = 3646; + this.state = 3707; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 489, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 499, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3642; + this.state = 3703; this.match(MySqlParser.COMMA); - this.state = 3643; + this.state = 3704; this.tableName(); } } } - this.state = 3648; + this.state = 3709; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 489, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 499, this.context); } } break; } - this.state = 3653; + this.state = 3714; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 491, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 501, this.context) ) { case 1: { - this.state = 3651; + this.state = 3712; _la = this.tokenStream.LA(1); if(!(_la === 159 || _la === 503)) { this.errorHandler.recoverInline(this); @@ -19754,7 +20583,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3652; + this.state = 3713; this.match(MySqlParser.KW_LOCKED); } break; @@ -19764,13 +20593,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_LOCK: this.enterOuterAlt(localContext, 2); { - this.state = 3655; + this.state = 3716; this.match(MySqlParser.KW_LOCK); - this.state = 3656; + this.state = 3717; this.match(MySqlParser.KW_IN); - this.state = 3657; + this.state = 3718; this.match(MySqlParser.KW_SHARE); - this.state = 3658; + this.state = 3719; this.match(MySqlParser.KW_MODE); } break; @@ -19794,113 +20623,113 @@ export class MySqlParser extends SQLParserBase { } public singleDeleteStatement(): SingleDeleteStatementContext { let localContext = new SingleDeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 234, MySqlParser.RULE_singleDeleteStatement); + this.enterRule(localContext, 240, MySqlParser.RULE_singleDeleteStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3661; + this.state = 3722; this.match(MySqlParser.KW_DELETE); - this.state = 3663; + this.state = 3724; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3662; + this.state = 3723; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3666; + this.state = 3727; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 549) { { - this.state = 3665; + this.state = 3726; this.match(MySqlParser.KW_QUICK); } } - this.state = 3669; + this.state = 3730; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3668; + this.state = 3729; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3671; + this.state = 3732; this.match(MySqlParser.KW_FROM); - this.state = 3672; + this.state = 3733; this.tableName(); - this.state = 3677; + this.state = 3738; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 497, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { case 1: { - this.state = 3674; + this.state = 3735; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3673; + this.state = 3734; this.match(MySqlParser.KW_AS); } } - this.state = 3676; + this.state = 3737; localContext._table_alias = this.uid(); } break; } - this.state = 3684; + this.state = 3745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3679; + this.state = 3740; this.match(MySqlParser.KW_PARTITION); - this.state = 3680; + this.state = 3741; this.match(MySqlParser.LR_BRACKET); - this.state = 3681; + this.state = 3742; this.partitionNames(); - this.state = 3682; + this.state = 3743; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3688; + this.state = 3749; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3686; + this.state = 3747; this.match(MySqlParser.KW_WHERE); - this.state = 3687; + this.state = 3748; this.expression(0); } } - this.state = 3691; + this.state = 3752; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3690; + this.state = 3751; this.orderByClause(); } } - this.state = 3695; + this.state = 3756; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3693; + this.state = 3754; this.match(MySqlParser.KW_LIMIT); - this.state = 3694; + this.state = 3755; this.limitClauseAtom(); } } @@ -19923,44 +20752,44 @@ export class MySqlParser extends SQLParserBase { } public multipleDeleteStatement(): MultipleDeleteStatementContext { let localContext = new MultipleDeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 236, MySqlParser.RULE_multipleDeleteStatement); + this.enterRule(localContext, 242, MySqlParser.RULE_multipleDeleteStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3697; + this.state = 3758; this.match(MySqlParser.KW_DELETE); - this.state = 3699; + this.state = 3760; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3698; + this.state = 3759; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3702; + this.state = 3763; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 503, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 513, this.context) ) { case 1: { - this.state = 3701; + this.state = 3762; this.match(MySqlParser.KW_QUICK); } break; } - this.state = 3705; + this.state = 3766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3704; + this.state = 3765; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3746; + this.state = 3807; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -20293,6 +21122,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -20512,117 +21342,117 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 3707; + this.state = 3768; this.tableName(); - this.state = 3710; + this.state = 3771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3708; + this.state = 3769; this.match(MySqlParser.DOT); - this.state = 3709; + this.state = 3770; this.match(MySqlParser.STAR); } } - this.state = 3720; + this.state = 3781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3712; + this.state = 3773; this.match(MySqlParser.COMMA); - this.state = 3713; + this.state = 3774; this.tableName(); - this.state = 3716; + this.state = 3777; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3714; + this.state = 3775; this.match(MySqlParser.DOT); - this.state = 3715; + this.state = 3776; this.match(MySqlParser.STAR); } } } } - this.state = 3722; + this.state = 3783; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3723; + this.state = 3784; this.match(MySqlParser.KW_FROM); - this.state = 3724; + this.state = 3785; this.tableSources(); } break; case MySqlParser.KW_FROM: { - this.state = 3726; + this.state = 3787; this.match(MySqlParser.KW_FROM); - this.state = 3727; + this.state = 3788; this.tableName(); - this.state = 3730; + this.state = 3791; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3728; + this.state = 3789; this.match(MySqlParser.DOT); - this.state = 3729; + this.state = 3790; this.match(MySqlParser.STAR); } } - this.state = 3740; + this.state = 3801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3732; + this.state = 3793; this.match(MySqlParser.COMMA); - this.state = 3733; + this.state = 3794; this.tableName(); - this.state = 3736; + this.state = 3797; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3734; + this.state = 3795; this.match(MySqlParser.DOT); - this.state = 3735; + this.state = 3796; this.match(MySqlParser.STAR); } } } } - this.state = 3742; + this.state = 3803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3743; + this.state = 3804; this.match(MySqlParser.KW_USING); - this.state = 3744; + this.state = 3805; this.tableSources(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3750; + this.state = 3811; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3748; + this.state = 3809; this.match(MySqlParser.KW_WHERE); - this.state = 3749; + this.state = 3810; this.expression(0); } } @@ -20645,33 +21475,33 @@ export class MySqlParser extends SQLParserBase { } public handlerOpenStatement(): HandlerOpenStatementContext { let localContext = new HandlerOpenStatementContext(this.context, this.state); - this.enterRule(localContext, 238, MySqlParser.RULE_handlerOpenStatement); + this.enterRule(localContext, 244, MySqlParser.RULE_handlerOpenStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3752; + this.state = 3813; this.match(MySqlParser.KW_HANDLER); - this.state = 3753; + this.state = 3814; this.tableName(); - this.state = 3754; + this.state = 3815; this.match(MySqlParser.KW_OPEN); - this.state = 3759; + this.state = 3820; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 514, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { case 1: { - this.state = 3756; + this.state = 3817; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3755; + this.state = 3816; this.match(MySqlParser.KW_AS); } } - this.state = 3758; + this.state = 3819; localContext._table_alias = this.uid(); } break; @@ -20694,33 +21524,33 @@ export class MySqlParser extends SQLParserBase { } public handlerReadIndexStatement(): HandlerReadIndexStatementContext { let localContext = new HandlerReadIndexStatementContext(this.context, this.state); - this.enterRule(localContext, 240, MySqlParser.RULE_handlerReadIndexStatement); + this.enterRule(localContext, 246, MySqlParser.RULE_handlerReadIndexStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3761; + this.state = 3822; this.match(MySqlParser.KW_HANDLER); - this.state = 3762; + this.state = 3823; this.tableName(); - this.state = 3763; + this.state = 3824; this.match(MySqlParser.KW_READ); - this.state = 3764; + this.state = 3825; this.indexName(); - this.state = 3771; + this.state = 3832; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.EQUAL_SYMBOL: case MySqlParser.GREATER_SYMBOL: case MySqlParser.LESS_SYMBOL: { - this.state = 3765; + this.state = 3826; this.comparisonBase(); - this.state = 3766; + this.state = 3827; this.match(MySqlParser.LR_BRACKET); - this.state = 3767; + this.state = 3828; this.constants(); - this.state = 3768; + this.state = 3829; this.match(MySqlParser.RR_BRACKET); } break; @@ -20729,7 +21559,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_NEXT: case MySqlParser.KW_PREV: { - this.state = 3770; + this.state = 3831; localContext._moveOrder = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 402 || _la === 445 || _la === 501 || _la === 542)) { @@ -20744,26 +21574,26 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3775; + this.state = 3836; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3773; + this.state = 3834; this.match(MySqlParser.KW_WHERE); - this.state = 3774; + this.state = 3835; this.expression(0); } } - this.state = 3779; + this.state = 3840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3777; + this.state = 3838; this.match(MySqlParser.KW_LIMIT); - this.state = 3778; + this.state = 3839; this.limitClauseAtom(); } } @@ -20786,18 +21616,18 @@ export class MySqlParser extends SQLParserBase { } public handlerReadStatement(): HandlerReadStatementContext { let localContext = new HandlerReadStatementContext(this.context, this.state); - this.enterRule(localContext, 242, MySqlParser.RULE_handlerReadStatement); + this.enterRule(localContext, 248, MySqlParser.RULE_handlerReadStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3781; + this.state = 3842; this.match(MySqlParser.KW_HANDLER); - this.state = 3782; + this.state = 3843; this.tableName(); - this.state = 3783; + this.state = 3844; this.match(MySqlParser.KW_READ); - this.state = 3784; + this.state = 3845; localContext._moveOrder = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 402 || _la === 501)) { @@ -20807,26 +21637,26 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3787; + this.state = 3848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3785; + this.state = 3846; this.match(MySqlParser.KW_WHERE); - this.state = 3786; + this.state = 3847; this.expression(0); } } - this.state = 3791; + this.state = 3852; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3789; + this.state = 3850; this.match(MySqlParser.KW_LIMIT); - this.state = 3790; + this.state = 3851; this.limitClauseAtom(); } } @@ -20849,15 +21679,15 @@ export class MySqlParser extends SQLParserBase { } public handlerCloseStatement(): HandlerCloseStatementContext { let localContext = new HandlerCloseStatementContext(this.context, this.state); - this.enterRule(localContext, 244, MySqlParser.RULE_handlerCloseStatement); + this.enterRule(localContext, 250, MySqlParser.RULE_handlerCloseStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3793; + this.state = 3854; this.match(MySqlParser.KW_HANDLER); - this.state = 3794; + this.state = 3855; this.tableName(); - this.state = 3795; + this.state = 3856; this.match(MySqlParser.KW_CLOSE); } } @@ -20877,32 +21707,32 @@ export class MySqlParser extends SQLParserBase { } public importTableStatement(): ImportTableStatementContext { let localContext = new ImportTableStatementContext(this.context, this.state); - this.enterRule(localContext, 246, MySqlParser.RULE_importTableStatement); + this.enterRule(localContext, 252, MySqlParser.RULE_importTableStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3797; + this.state = 3858; this.match(MySqlParser.KW_IMPORT); - this.state = 3798; + this.state = 3859; this.match(MySqlParser.KW_TABLE); - this.state = 3799; + this.state = 3860; this.match(MySqlParser.KW_FROM); - this.state = 3800; + this.state = 3861; this.stringLiteral(); - this.state = 3805; + this.state = 3866; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3801; + this.state = 3862; this.match(MySqlParser.COMMA); - this.state = 3802; + this.state = 3863; this.stringLiteral(); } } - this.state = 3807; + this.state = 3868; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -20924,103 +21754,103 @@ export class MySqlParser extends SQLParserBase { } public singleUpdateStatement(): SingleUpdateStatementContext { let localContext = new SingleUpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 248, MySqlParser.RULE_singleUpdateStatement); + this.enterRule(localContext, 254, MySqlParser.RULE_singleUpdateStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3808; + this.state = 3869; this.match(MySqlParser.KW_UPDATE); - this.state = 3810; + this.state = 3871; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3809; + this.state = 3870; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3813; + this.state = 3874; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3812; + this.state = 3873; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3815; + this.state = 3876; this.tableName(); - this.state = 3820; + this.state = 3881; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 3817; + this.state = 3878; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3816; + this.state = 3877; this.match(MySqlParser.KW_AS); } } - this.state = 3819; + this.state = 3880; localContext._table_alias = this.uid(); } } - this.state = 3822; + this.state = 3883; this.match(MySqlParser.KW_SET); - this.state = 3823; + this.state = 3884; this.updatedElement(); - this.state = 3828; + this.state = 3889; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3824; + this.state = 3885; this.match(MySqlParser.COMMA); - this.state = 3825; + this.state = 3886; this.updatedElement(); } } - this.state = 3830; + this.state = 3891; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3833; + this.state = 3894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3831; + this.state = 3892; this.match(MySqlParser.KW_WHERE); - this.state = 3832; + this.state = 3893; this.expression(0); } } - this.state = 3836; + this.state = 3897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3835; + this.state = 3896; this.orderByClause(); } } - this.state = 3839; + this.state = 3900; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3838; + this.state = 3899; this.limitClause(); } } @@ -21043,63 +21873,63 @@ export class MySqlParser extends SQLParserBase { } public multipleUpdateStatement(): MultipleUpdateStatementContext { let localContext = new MultipleUpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 250, MySqlParser.RULE_multipleUpdateStatement); + this.enterRule(localContext, 256, MySqlParser.RULE_multipleUpdateStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3841; + this.state = 3902; this.match(MySqlParser.KW_UPDATE); - this.state = 3843; + this.state = 3904; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3842; + this.state = 3903; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3846; + this.state = 3907; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3845; + this.state = 3906; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3848; + this.state = 3909; this.tableSources(); - this.state = 3849; + this.state = 3910; this.match(MySqlParser.KW_SET); - this.state = 3850; + this.state = 3911; this.updatedElement(); - this.state = 3855; + this.state = 3916; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3851; + this.state = 3912; this.match(MySqlParser.COMMA); - this.state = 3852; + this.state = 3913; this.updatedElement(); } } - this.state = 3857; + this.state = 3918; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3860; + this.state = 3921; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3858; + this.state = 3919; this.match(MySqlParser.KW_WHERE); - this.state = 3859; + this.state = 3920; this.expression(0); } } @@ -21122,34 +21952,34 @@ export class MySqlParser extends SQLParserBase { } public orderByClause(): OrderByClauseContext { let localContext = new OrderByClauseContext(this.context, this.state); - this.enterRule(localContext, 252, MySqlParser.RULE_orderByClause); + this.enterRule(localContext, 258, MySqlParser.RULE_orderByClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3862; + this.state = 3923; this.match(MySqlParser.KW_ORDER); - this.state = 3863; + this.state = 3924; this.match(MySqlParser.KW_BY); - this.state = 3864; + this.state = 3925; this.orderByExpression(); - this.state = 3869; + this.state = 3930; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 533, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 543, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3865; + this.state = 3926; this.match(MySqlParser.COMMA); - this.state = 3866; + this.state = 3927; this.orderByExpression(); } } } - this.state = 3871; + this.state = 3932; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 533, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 543, this.context); } } } @@ -21169,19 +21999,19 @@ export class MySqlParser extends SQLParserBase { } public orderByExpression(): OrderByExpressionContext { let localContext = new OrderByExpressionContext(this.context, this.state); - this.enterRule(localContext, 254, MySqlParser.RULE_orderByExpression); + this.enterRule(localContext, 260, MySqlParser.RULE_orderByExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3872; + this.state = 3933; this.expression(0); - this.state = 3874; + this.state = 3935; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 544, this.context) ) { case 1: { - this.state = 3873; + this.state = 3934; localContext._order = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45)) { @@ -21212,30 +22042,30 @@ export class MySqlParser extends SQLParserBase { } public tableSources(): TableSourcesContext { let localContext = new TableSourcesContext(this.context, this.state); - this.enterRule(localContext, 256, MySqlParser.RULE_tableSources); + this.enterRule(localContext, 262, MySqlParser.RULE_tableSources); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3876; + this.state = 3937; this.tableSource(); - this.state = 3881; + this.state = 3942; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 535, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 545, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3877; + this.state = 3938; this.match(MySqlParser.COMMA); - this.state = 3878; + this.state = 3939; this.tableSource(); } } } - this.state = 3883; + this.state = 3944; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 535, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 545, this.context); } } } @@ -21255,34 +22085,34 @@ export class MySqlParser extends SQLParserBase { } public tableSource(): TableSourceContext { let localContext = new TableSourceContext(this.context, this.state); - this.enterRule(localContext, 258, MySqlParser.RULE_tableSource); + this.enterRule(localContext, 264, MySqlParser.RULE_tableSource); let _la: number; try { let alternative: number; - this.state = 3902; + this.state = 3963; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 538, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context) ) { case 1: localContext = new TableSourceBaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3884; + this.state = 3945; this.tableSourceItem(); - this.state = 3888; + this.state = 3949; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 536, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 546, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3885; + this.state = 3946; this.joinPart(); } } } - this.state = 3890; + this.state = 3951; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 536, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 546, this.context); } } break; @@ -21290,25 +22120,25 @@ export class MySqlParser extends SQLParserBase { localContext = new TableSourceNestedContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3891; + this.state = 3952; this.match(MySqlParser.LR_BRACKET); - this.state = 3892; + this.state = 3953; this.tableSourceItem(); - this.state = 3896; + this.state = 3957; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 35 || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 536887425) !== 0) || _la === 150 || _la === 172) { { { - this.state = 3893; + this.state = 3954; this.joinPart(); } } - this.state = 3898; + this.state = 3959; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3899; + this.state = 3960; this.match(MySqlParser.RR_BRACKET); } break; @@ -21316,7 +22146,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableJsonContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3901; + this.state = 3962; this.jsonTable(); } break; @@ -21338,79 +22168,79 @@ export class MySqlParser extends SQLParserBase { } public tableSourceItem(): TableSourceItemContext { let localContext = new TableSourceItemContext(this.context, this.state); - this.enterRule(localContext, 260, MySqlParser.RULE_tableSourceItem); + this.enterRule(localContext, 266, MySqlParser.RULE_tableSourceItem); let _la: number; try { let alternative: number; - this.state = 3949; + this.state = 4010; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 558, this.context) ) { case 1: localContext = new AtomTableItemContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3904; + this.state = 3965; this.tableName(); - this.state = 3910; + this.state = 3971; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 539, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { case 1: { - this.state = 3905; + this.state = 3966; this.match(MySqlParser.KW_PARTITION); - this.state = 3906; + this.state = 3967; this.match(MySqlParser.LR_BRACKET); - this.state = 3907; + this.state = 3968; this.partitionNames(); - this.state = 3908; + this.state = 3969; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3916; + this.state = 3977; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 541, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { case 1: { - this.state = 3913; + this.state = 3974; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3912; + this.state = 3973; this.match(MySqlParser.KW_AS); } } - this.state = 3915; + this.state = 3976; (localContext as AtomTableItemContext)._alias = this.uid(); } break; } - this.state = 3926; + this.state = 3987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 543, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { case 1: { - this.state = 3918; + this.state = 3979; this.indexHint(); - this.state = 3923; + this.state = 3984; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 542, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 552, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3919; + this.state = 3980; this.match(MySqlParser.COMMA); - this.state = 3920; + this.state = 3981; this.indexHint(); } } } - this.state = 3925; + this.state = 3986; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 542, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 552, this.context); } } break; @@ -21421,54 +22251,54 @@ export class MySqlParser extends SQLParserBase { localContext = new SubqueryTableItemContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3929; + this.state = 3990; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 95) { { - this.state = 3928; + this.state = 3989; this.match(MySqlParser.KW_LATERAL); } } - this.state = 3936; + this.state = 3997; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { case 1: { - this.state = 3931; + this.state = 3992; this.selectStatement(); } break; case 2: { - this.state = 3932; + this.state = 3993; this.match(MySqlParser.LR_BRACKET); - this.state = 3933; + this.state = 3994; (localContext as SubqueryTableItemContext)._parenthesisSubquery = this.selectStatement(); - this.state = 3934; + this.state = 3995; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3939; + this.state = 4000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3938; + this.state = 3999; this.match(MySqlParser.KW_AS); } } - this.state = 3941; + this.state = 4002; (localContext as SubqueryTableItemContext)._alias = this.uid(); - this.state = 3943; + this.state = 4004; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 547, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { case 1: { - this.state = 3942; + this.state = 4003; this.fullColumnNames(); } break; @@ -21479,11 +22309,11 @@ export class MySqlParser extends SQLParserBase { localContext = new TableSourcesItemContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3945; + this.state = 4006; this.match(MySqlParser.LR_BRACKET); - this.state = 3946; + this.state = 4007; this.tableSources(); - this.state = 3947; + this.state = 4008; this.match(MySqlParser.RR_BRACKET); } break; @@ -21505,15 +22335,15 @@ export class MySqlParser extends SQLParserBase { } public fullColumnNames(): FullColumnNamesContext { let localContext = new FullColumnNamesContext(this.context, this.state); - this.enterRule(localContext, 262, MySqlParser.RULE_fullColumnNames); + this.enterRule(localContext, 268, MySqlParser.RULE_fullColumnNames); try { this.enterOuterAlt(localContext, 1); { - this.state = 3951; + this.state = 4012; this.match(MySqlParser.LR_BRACKET); - this.state = 3952; + this.state = 4013; this.columnNames(); - this.state = 3953; + this.state = 4014; this.match(MySqlParser.RR_BRACKET); } } @@ -21533,12 +22363,12 @@ export class MySqlParser extends SQLParserBase { } public indexHint(): IndexHintContext { let localContext = new IndexHintContext(this.context, this.state); - this.enterRule(localContext, 264, MySqlParser.RULE_indexHint); + this.enterRule(localContext, 270, MySqlParser.RULE_indexHint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3955; + this.state = 4016; localContext._indexHintAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 79 || _la === 187)) { @@ -21548,7 +22378,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3956; + this.state = 4017; localContext._keyFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -21558,31 +22388,31 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3959; + this.state = 4020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 3957; + this.state = 4018; this.match(MySqlParser.KW_FOR); - this.state = 3958; + this.state = 4019; this.indexHintType(); } } - this.state = 3961; + this.state = 4022; this.match(MySqlParser.LR_BRACKET); - this.state = 3963; + this.state = 4024; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 3962; + this.state = 4023; this.indexNames(); } } - this.state = 3965; + this.state = 4026; this.match(MySqlParser.RR_BRACKET); } } @@ -21602,33 +22432,33 @@ export class MySqlParser extends SQLParserBase { } public indexHintType(): IndexHintTypeContext { let localContext = new IndexHintTypeContext(this.context, this.state); - this.enterRule(localContext, 266, MySqlParser.RULE_indexHintType); + this.enterRule(localContext, 272, MySqlParser.RULE_indexHintType); try { - this.state = 3972; + this.state = 4033; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_JOIN: this.enterOuterAlt(localContext, 1); { - this.state = 3967; + this.state = 4028; this.match(MySqlParser.KW_JOIN); } break; case MySqlParser.KW_ORDER: this.enterOuterAlt(localContext, 2); { - this.state = 3968; + this.state = 4029; this.match(MySqlParser.KW_ORDER); - this.state = 3969; + this.state = 4030; this.match(MySqlParser.KW_BY); } break; case MySqlParser.KW_GROUP: this.enterOuterAlt(localContext, 3); { - this.state = 3970; + this.state = 4031; this.match(MySqlParser.KW_GROUP); - this.state = 3971; + this.state = 4032; this.match(MySqlParser.KW_BY); } break; @@ -21652,11 +22482,11 @@ export class MySqlParser extends SQLParserBase { } public joinPart(): JoinPartContext { let localContext = new JoinPartContext(this.context, this.state); - this.enterRule(localContext, 268, MySqlParser.RULE_joinPart); + this.enterRule(localContext, 274, MySqlParser.RULE_joinPart); let _la: number; try { let alternative: number; - this.state = 4023; + this.state = 4084; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CROSS: @@ -21665,12 +22495,12 @@ export class MySqlParser extends SQLParserBase { localContext = new InnerJoinContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3975; + this.state = 4036; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 35 || _la === 84) { { - this.state = 3974; + this.state = 4035; _la = this.tokenStream.LA(1); if(!(_la === 35 || _la === 84)) { this.errorHandler.recoverInline(this); @@ -21682,35 +22512,35 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3977; + this.state = 4038; this.match(MySqlParser.KW_JOIN); - this.state = 3979; + this.state = 4040; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 563, this.context) ) { case 1: { - this.state = 3978; + this.state = 4039; this.match(MySqlParser.KW_LATERAL); } break; } - this.state = 3981; + this.state = 4042; this.tableSourceItem(); - this.state = 3985; + this.state = 4046; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 554, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 564, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3982; + this.state = 4043; this.joinSpec(); } } } - this.state = 3987; + this.state = 4048; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 554, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 564, this.context); } } break; @@ -21718,25 +22548,25 @@ export class MySqlParser extends SQLParserBase { localContext = new StraightJoinContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3988; + this.state = 4049; this.match(MySqlParser.KW_STRAIGHT_JOIN); - this.state = 3989; + this.state = 4050; this.tableSourceItem(); - this.state = 3993; + this.state = 4054; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 555, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3990; + this.state = 4051; this.joinSpec(); } } } - this.state = 3995; + this.state = 4056; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 555, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); } } break; @@ -21745,7 +22575,7 @@ export class MySqlParser extends SQLParserBase { localContext = new OuterJoinContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3996; + this.state = 4057; _la = this.tokenStream.LA(1); if(!(_la === 98 || _la === 150)) { this.errorHandler.recoverInline(this); @@ -21754,45 +22584,45 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3998; + this.state = 4059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 127) { { - this.state = 3997; + this.state = 4058; this.match(MySqlParser.KW_OUTER); } } - this.state = 4000; + this.state = 4061; this.match(MySqlParser.KW_JOIN); - this.state = 4002; + this.state = 4063; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 567, this.context) ) { case 1: { - this.state = 4001; + this.state = 4062; this.match(MySqlParser.KW_LATERAL); } break; } - this.state = 4004; + this.state = 4065; this.tableSourceItem(); - this.state = 4008; + this.state = 4069; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 558, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 568, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4005; + this.state = 4066; this.joinSpec(); } } } - this.state = 4010; + this.state = 4071; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 558, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 568, this.context); } } break; @@ -21800,26 +22630,26 @@ export class MySqlParser extends SQLParserBase { localContext = new NaturalJoinContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4011; + this.state = 4072; this.match(MySqlParser.KW_NATURAL); - this.state = 4019; + this.state = 4080; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 84 || _la === 98 || _la === 150) { { - this.state = 4014; + this.state = 4075; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_INNER: { - this.state = 4012; + this.state = 4073; this.match(MySqlParser.KW_INNER); } break; case MySqlParser.KW_LEFT: case MySqlParser.KW_RIGHT: { - this.state = 4013; + this.state = 4074; _la = this.tokenStream.LA(1); if(!(_la === 98 || _la === 150)) { this.errorHandler.recoverInline(this); @@ -21833,12 +22663,12 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4017; + this.state = 4078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 127) { { - this.state = 4016; + this.state = 4077; this.match(MySqlParser.KW_OUTER); } } @@ -21846,9 +22676,9 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 4021; + this.state = 4082; this.match(MySqlParser.KW_JOIN); - this.state = 4022; + this.state = 4083; this.tableSourceItem(); } break; @@ -21872,18 +22702,18 @@ export class MySqlParser extends SQLParserBase { } public joinSpec(): JoinSpecContext { let localContext = new JoinSpecContext(this.context, this.state); - this.enterRule(localContext, 270, MySqlParser.RULE_joinSpec); + this.enterRule(localContext, 276, MySqlParser.RULE_joinSpec); try { - this.state = 4032; + this.state = 4093; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { { - this.state = 4025; + this.state = 4086; this.match(MySqlParser.KW_ON); - this.state = 4026; + this.state = 4087; this.expression(0); } } @@ -21891,13 +22721,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 4027; + this.state = 4088; this.match(MySqlParser.KW_USING); - this.state = 4028; + this.state = 4089; this.match(MySqlParser.LR_BRACKET); - this.state = 4029; + this.state = 4090; this.columnNames(); - this.state = 4030; + this.state = 4091; this.match(MySqlParser.RR_BRACKET); } break; @@ -21921,30 +22751,30 @@ export class MySqlParser extends SQLParserBase { } public queryExpression(): QueryExpressionContext { let localContext = new QueryExpressionContext(this.context, this.state); - this.enterRule(localContext, 272, MySqlParser.RULE_queryExpression); + this.enterRule(localContext, 278, MySqlParser.RULE_queryExpression); try { - this.state = 4042; + this.state = 4103; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 564, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 574, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4034; + this.state = 4095; this.match(MySqlParser.LR_BRACKET); - this.state = 4035; + this.state = 4096; this.querySpecification(); - this.state = 4036; + this.state = 4097; this.match(MySqlParser.RR_BRACKET); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4038; + this.state = 4099; this.match(MySqlParser.LR_BRACKET); - this.state = 4039; + this.state = 4100; this.queryExpression(); - this.state = 4040; + this.state = 4101; this.match(MySqlParser.RR_BRACKET); } break; @@ -21966,103 +22796,113 @@ export class MySqlParser extends SQLParserBase { } public querySpecification(): QuerySpecificationContext { let localContext = new QuerySpecificationContext(this.context, this.state); - this.enterRule(localContext, 274, MySqlParser.RULE_querySpecification); + this.enterRule(localContext, 280, MySqlParser.RULE_querySpecification); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4044; + this.state = 4105; this.match(MySqlParser.KW_SELECT); - this.state = 4048; + this.state = 4109; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 575, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4045; + this.state = 4106; this.selectSpec(); } } } - this.state = 4050; + this.state = 4111; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 575, this.context); } - this.state = 4051; + this.state = 4112; this.selectElements(); - this.state = 4053; + this.state = 4114; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 566, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 576, this.context) ) { case 1: { - this.state = 4052; + this.state = 4113; this.intoClause(); } break; } - this.state = 4055; + this.state = 4116; this.fromClause(); - this.state = 4057; + this.state = 4118; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 567, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 577, this.context) ) { case 1: { - this.state = 4056; + this.state = 4117; this.groupByClause(); } break; } - this.state = 4060; + this.state = 4121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 568, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { case 1: { - this.state = 4059; + this.state = 4120; this.havingClause(); } break; } - this.state = 4063; + this.state = 4124; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 569, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { case 1: { - this.state = 4062; + this.state = 4123; this.windowClause(); } break; } - this.state = 4066; + this.state = 4127; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 570, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 580, this.context) ) { case 1: { - this.state = 4065; + this.state = 4126; this.orderByClause(); } break; } - this.state = 4069; + this.state = 4130; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 571, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) { case 1: { - this.state = 4068; + this.state = 4129; this.limitClause(); } break; } - this.state = 4072; + this.state = 4133; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 572, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { case 1: { - this.state = 4071; + this.state = 4132; this.intoClause(); } break; } + this.state = 4136; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 583, this.context) ) { + case 1: + { + this.state = 4135; + this.unionStatement(); + } + break; + } } } catch (re) { @@ -22081,19 +22921,19 @@ export class MySqlParser extends SQLParserBase { } public unionStatement(): UnionStatementContext { let localContext = new UnionStatementContext(this.context, this.state); - this.enterRule(localContext, 276, MySqlParser.RULE_unionStatement); + this.enterRule(localContext, 282, MySqlParser.RULE_unionStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4074; + this.state = 4138; this.match(MySqlParser.KW_UNION); - this.state = 4076; + this.state = 4140; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 4075; + this.state = 4139; localContext._unionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -22106,18 +22946,18 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 4080; + this.state = 4144; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: { - this.state = 4078; + this.state = 4142; this.querySpecification(); } break; case MySqlParser.LR_BRACKET: { - this.state = 4079; + this.state = 4143; this.queryExpression(); } break; @@ -22142,69 +22982,69 @@ export class MySqlParser extends SQLParserBase { } public lateralStatement(): LateralStatementContext { let localContext = new LateralStatementContext(this.context, this.state); - this.enterRule(localContext, 278, MySqlParser.RULE_lateralStatement); + this.enterRule(localContext, 284, MySqlParser.RULE_lateralStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4082; + this.state = 4146; this.match(MySqlParser.KW_LATERAL); - this.state = 4097; + this.state = 4161; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 589, this.context) ) { case 1: { - this.state = 4083; + this.state = 4147; this.querySpecification(); } break; case 2: { - this.state = 4084; + this.state = 4148; this.queryExpression(); } break; case 3: { { - this.state = 4085; + this.state = 4149; this.match(MySqlParser.LR_BRACKET); - this.state = 4088; + this.state = 4152; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: { - this.state = 4086; + this.state = 4150; this.querySpecification(); } break; case MySqlParser.LR_BRACKET: { - this.state = 4087; + this.state = 4151; this.queryExpression(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4090; + this.state = 4154; this.match(MySqlParser.RR_BRACKET); - this.state = 4095; + this.state = 4159; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 577, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 588, this.context) ) { case 1: { - this.state = 4092; + this.state = 4156; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4091; + this.state = 4155; this.match(MySqlParser.KW_AS); } } - this.state = 4094; + this.state = 4158; localContext._alias = this.uid(); } break; @@ -22231,47 +23071,47 @@ export class MySqlParser extends SQLParserBase { } public jsonTable(): JsonTableContext { let localContext = new JsonTableContext(this.context, this.state); - this.enterRule(localContext, 280, MySqlParser.RULE_jsonTable); + this.enterRule(localContext, 286, MySqlParser.RULE_jsonTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4099; + this.state = 4163; this.match(MySqlParser.KW_JSON_TABLE); - this.state = 4100; + this.state = 4164; this.match(MySqlParser.LR_BRACKET); - this.state = 4101; + this.state = 4165; this.match(MySqlParser.STRING_LITERAL); - this.state = 4102; + this.state = 4166; this.match(MySqlParser.COMMA); - this.state = 4103; + this.state = 4167; this.match(MySqlParser.STRING_LITERAL); - this.state = 4104; + this.state = 4168; this.match(MySqlParser.KW_COLUMNS); - this.state = 4105; + this.state = 4169; this.match(MySqlParser.LR_BRACKET); - this.state = 4106; + this.state = 4170; this.jsonColumnList(); - this.state = 4107; + this.state = 4171; this.match(MySqlParser.RR_BRACKET); - this.state = 4108; + this.state = 4172; this.match(MySqlParser.RR_BRACKET); - this.state = 4113; + this.state = 4177; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 580, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 591, this.context) ) { case 1: { - this.state = 4110; + this.state = 4174; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4109; + this.state = 4173; this.match(MySqlParser.KW_AS); } } - this.state = 4112; + this.state = 4176; localContext._alias = this.uid(); } break; @@ -22294,26 +23134,26 @@ export class MySqlParser extends SQLParserBase { } public jsonColumnList(): JsonColumnListContext { let localContext = new JsonColumnListContext(this.context, this.state); - this.enterRule(localContext, 282, MySqlParser.RULE_jsonColumnList); + this.enterRule(localContext, 288, MySqlParser.RULE_jsonColumnList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4115; + this.state = 4179; this.jsonColumn(); - this.state = 4120; + this.state = 4184; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4116; + this.state = 4180; this.match(MySqlParser.COMMA); - this.state = 4117; + this.state = 4181; this.jsonColumn(); } } - this.state = 4122; + this.state = 4186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22335,25 +23175,25 @@ export class MySqlParser extends SQLParserBase { } public jsonColumn(): JsonColumnContext { let localContext = new JsonColumnContext(this.context, this.state); - this.enterRule(localContext, 284, MySqlParser.RULE_jsonColumn); + this.enterRule(localContext, 290, MySqlParser.RULE_jsonColumn); let _la: number; try { - this.state = 4152; + this.state = 4216; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 587, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 598, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4123; + this.state = 4187; this.columnName(); - this.state = 4140; + this.state = 4204; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FOR: { - this.state = 4124; + this.state = 4188; this.match(MySqlParser.KW_FOR); - this.state = 4125; + this.state = 4189; this.match(MySqlParser.KW_ORDINALITY); } break; @@ -22417,33 +23257,33 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_POINT: case MySqlParser.KW_POLYGON: { - this.state = 4126; + this.state = 4190; this.dataType(); - this.state = 4138; + this.state = 4202; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PATH: { - this.state = 4127; + this.state = 4191; this.match(MySqlParser.KW_PATH); - this.state = 4128; + this.state = 4192; this.match(MySqlParser.STRING_LITERAL); - this.state = 4130; + this.state = 4194; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 593, this.context) ) { case 1: { - this.state = 4129; + this.state = 4193; this.jsonOnEmpty(); } break; } - this.state = 4133; + this.state = 4197; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 116 || _la === 382) { { - this.state = 4132; + this.state = 4196; this.jsonOnError(); } } @@ -22452,11 +23292,11 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_EXISTS: { - this.state = 4135; + this.state = 4199; this.match(MySqlParser.KW_EXISTS); - this.state = 4136; + this.state = 4200; this.match(MySqlParser.KW_PATH); - this.state = 4137; + this.state = 4201; this.match(MySqlParser.STRING_LITERAL); } break; @@ -22473,27 +23313,27 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4142; + this.state = 4206; this.match(MySqlParser.KW_NESTED); - this.state = 4144; + this.state = 4208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 257) { { - this.state = 4143; + this.state = 4207; this.match(MySqlParser.KW_PATH); } } - this.state = 4146; + this.state = 4210; this.match(MySqlParser.STRING_LITERAL); - this.state = 4147; + this.state = 4211; this.match(MySqlParser.KW_COLUMNS); - this.state = 4148; + this.state = 4212; this.match(MySqlParser.LR_BRACKET); - this.state = 4149; + this.state = 4213; this.jsonColumnList(); - this.state = 4150; + this.state = 4214; this.match(MySqlParser.RR_BRACKET); } break; @@ -22515,39 +23355,39 @@ export class MySqlParser extends SQLParserBase { } public jsonOnEmpty(): JsonOnEmptyContext { let localContext = new JsonOnEmptyContext(this.context, this.state); - this.enterRule(localContext, 286, MySqlParser.RULE_jsonOnEmpty); + this.enterRule(localContext, 292, MySqlParser.RULE_jsonOnEmpty); try { this.enterOuterAlt(localContext, 1); { - this.state = 4158; + this.state = 4222; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NULL_LITERAL: { - this.state = 4154; + this.state = 4218; this.match(MySqlParser.KW_NULL_LITERAL); } break; case MySqlParser.KW_ERROR: { - this.state = 4155; + this.state = 4219; this.match(MySqlParser.KW_ERROR); } break; case MySqlParser.KW_DEFAULT: { - this.state = 4156; + this.state = 4220; this.match(MySqlParser.KW_DEFAULT); - this.state = 4157; + this.state = 4221; this.defaultValue(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4160; + this.state = 4224; this.match(MySqlParser.KW_ON); - this.state = 4161; + this.state = 4225; this.match(MySqlParser.KW_EMPTY); } } @@ -22567,39 +23407,39 @@ export class MySqlParser extends SQLParserBase { } public jsonOnError(): JsonOnErrorContext { let localContext = new JsonOnErrorContext(this.context, this.state); - this.enterRule(localContext, 288, MySqlParser.RULE_jsonOnError); + this.enterRule(localContext, 294, MySqlParser.RULE_jsonOnError); try { this.enterOuterAlt(localContext, 1); { - this.state = 4167; + this.state = 4231; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NULL_LITERAL: { - this.state = 4163; + this.state = 4227; this.match(MySqlParser.KW_NULL_LITERAL); } break; case MySqlParser.KW_ERROR: { - this.state = 4164; + this.state = 4228; this.match(MySqlParser.KW_ERROR); } break; case MySqlParser.KW_DEFAULT: { - this.state = 4165; + this.state = 4229; this.match(MySqlParser.KW_DEFAULT); - this.state = 4166; + this.state = 4230; this.defaultValue(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4169; + this.state = 4233; this.match(MySqlParser.KW_ON); - this.state = 4170; + this.state = 4234; this.match(MySqlParser.KW_ERROR); } } @@ -22619,10 +23459,10 @@ export class MySqlParser extends SQLParserBase { } public selectSpec(): SelectSpecContext { let localContext = new SelectSpecContext(this.context, this.state); - this.enterRule(localContext, 290, MySqlParser.RULE_selectSpec); + this.enterRule(localContext, 296, MySqlParser.RULE_selectSpec); let _la: number; try { - this.state = 4180; + this.state = 4244; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALL: @@ -22630,7 +23470,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DISTINCTROW: this.enterOuterAlt(localContext, 1); { - this.state = 4172; + this.state = 4236; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49 || _la === 50)) { this.errorHandler.recoverInline(this); @@ -22644,35 +23484,35 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_HIGH_PRIORITY: this.enterOuterAlt(localContext, 2); { - this.state = 4173; + this.state = 4237; this.match(MySqlParser.KW_HIGH_PRIORITY); } break; case MySqlParser.KW_STRAIGHT_JOIN: this.enterOuterAlt(localContext, 3); { - this.state = 4174; + this.state = 4238; this.match(MySqlParser.KW_STRAIGHT_JOIN); } break; case MySqlParser.KW_SQL_SMALL_RESULT: this.enterOuterAlt(localContext, 4); { - this.state = 4175; + this.state = 4239; this.match(MySqlParser.KW_SQL_SMALL_RESULT); } break; case MySqlParser.KW_SQL_BIG_RESULT: this.enterOuterAlt(localContext, 5); { - this.state = 4176; + this.state = 4240; this.match(MySqlParser.KW_SQL_BIG_RESULT); } break; case MySqlParser.KW_SQL_BUFFER_RESULT: this.enterOuterAlt(localContext, 6); { - this.state = 4177; + this.state = 4241; this.match(MySqlParser.KW_SQL_BUFFER_RESULT); } break; @@ -22680,7 +23520,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SQL_NO_CACHE: this.enterOuterAlt(localContext, 7); { - this.state = 4178; + this.state = 4242; _la = this.tokenStream.LA(1); if(!(_la === 637 || _la === 638)) { this.errorHandler.recoverInline(this); @@ -22694,7 +23534,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SQL_CALC_FOUND_ROWS: this.enterOuterAlt(localContext, 8); { - this.state = 4179; + this.state = 4243; this.match(MySqlParser.KW_SQL_CALC_FOUND_ROWS); } break; @@ -22718,44 +23558,44 @@ export class MySqlParser extends SQLParserBase { } public selectElements(): SelectElementsContext { let localContext = new SelectElementsContext(this.context, this.state); - this.enterRule(localContext, 292, MySqlParser.RULE_selectElements); + this.enterRule(localContext, 298, MySqlParser.RULE_selectElements); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4184; + this.state = 4248; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 591, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 602, this.context) ) { case 1: { - this.state = 4182; + this.state = 4246; localContext._star = this.match(MySqlParser.STAR); } break; case 2: { - this.state = 4183; + this.state = 4247; this.selectElement(); } break; } - this.state = 4190; + this.state = 4254; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 592, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 603, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4186; + this.state = 4250; this.match(MySqlParser.COMMA); - this.state = 4187; + this.state = 4251; this.selectElement(); } } } - this.state = 4192; + this.state = 4256; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 592, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 603, this.context); } } } @@ -22775,46 +23615,46 @@ export class MySqlParser extends SQLParserBase { } public selectElement(): SelectElementContext { let localContext = new SelectElementContext(this.context, this.state); - this.enterRule(localContext, 294, MySqlParser.RULE_selectElement); + this.enterRule(localContext, 300, MySqlParser.RULE_selectElement); let _la: number; try { - this.state = 4222; + this.state = 4286; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 600, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { case 1: localContext = new SelectExpressionElementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4195; + this.state = 4259; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 593, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 604, this.context) ) { case 1: { - this.state = 4193; + this.state = 4257; this.match(MySqlParser.LOCAL_ID); - this.state = 4194; + this.state = 4258; this.match(MySqlParser.VAR_ASSIGN); } break; } - this.state = 4197; + this.state = 4261; this.expression(0); - this.state = 4202; + this.state = 4266; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 595, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 606, this.context) ) { case 1: { - this.state = 4199; + this.state = 4263; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4198; + this.state = 4262; this.match(MySqlParser.KW_AS); } } - this.state = 4201; + this.state = 4265; (localContext as SelectExpressionElementContext)._alias = this.uid(); } break; @@ -22825,24 +23665,24 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectFunctionElementContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4204; + this.state = 4268; this.functionCall(); - this.state = 4209; + this.state = 4273; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 597, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 608, this.context) ) { case 1: { - this.state = 4206; + this.state = 4270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4205; + this.state = 4269; this.match(MySqlParser.KW_AS); } } - this.state = 4208; + this.state = 4272; (localContext as SelectFunctionElementContext)._alias = this.uid(); } break; @@ -22853,11 +23693,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectStarElementContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4211; + this.state = 4275; (localContext as SelectStarElementContext)._select_element = this.fullId(); - this.state = 4212; + this.state = 4276; this.match(MySqlParser.DOT); - this.state = 4213; + this.state = 4277; this.match(MySqlParser.STAR); } break; @@ -22865,24 +23705,24 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectColumnElementContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4215; + this.state = 4279; this.columnName(); - this.state = 4220; + this.state = 4284; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 599, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 610, this.context) ) { case 1: { - this.state = 4217; + this.state = 4281; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4216; + this.state = 4280; this.match(MySqlParser.KW_AS); } } - this.state = 4219; + this.state = 4283; (localContext as SelectColumnElementContext)._alias = this.uid(); } break; @@ -22907,38 +23747,38 @@ export class MySqlParser extends SQLParserBase { } public intoClause(): IntoClauseContext { let localContext = new IntoClauseContext(this.context, this.state); - this.enterRule(localContext, 296, MySqlParser.RULE_intoClause); + this.enterRule(localContext, 302, MySqlParser.RULE_intoClause); let _la: number; try { let alternative: number; - this.state = 4260; + this.state = 4324; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 607, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 618, this.context) ) { case 1: localContext = new SelectIntoVariablesContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4224; + this.state = 4288; this.match(MySqlParser.KW_INTO); - this.state = 4225; + this.state = 4289; this.assignmentField(); - this.state = 4230; + this.state = 4294; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 601, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 612, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4226; + this.state = 4290; this.match(MySqlParser.COMMA); - this.state = 4227; + this.state = 4291; this.assignmentField(); } } } - this.state = 4232; + this.state = 4296; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 601, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 612, this.context); } } break; @@ -22946,11 +23786,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectIntoDumpFileContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4233; + this.state = 4297; this.match(MySqlParser.KW_INTO); - this.state = 4234; + this.state = 4298; this.match(MySqlParser.KW_DUMPFILE); - this.state = 4235; + this.state = 4299; this.match(MySqlParser.STRING_LITERAL); } break; @@ -22959,32 +23799,32 @@ export class MySqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 3); { { - this.state = 4236; + this.state = 4300; this.match(MySqlParser.KW_INTO); - this.state = 4237; + this.state = 4301; this.match(MySqlParser.KW_OUTFILE); - this.state = 4238; + this.state = 4302; (localContext as SelectIntoTextFileContext)._filename = this.match(MySqlParser.STRING_LITERAL); - this.state = 4242; + this.state = 4306; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 602, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 613, this.context) ) { case 1: { - this.state = 4239; + this.state = 4303; this.match(MySqlParser.KW_CHARACTER); - this.state = 4240; + this.state = 4304; this.match(MySqlParser.KW_SET); - this.state = 4241; + this.state = 4305; (localContext as SelectIntoTextFileContext)._charset = this.charsetName(); } break; } - this.state = 4250; + this.state = 4314; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 604, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 615, this.context) ) { case 1: { - this.state = 4244; + this.state = 4308; (localContext as SelectIntoTextFileContext)._fieldsFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 337 || _la === 398)) { @@ -22994,7 +23834,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4246; + this.state = 4310; this.errorHandler.sync(this); alternative = 1; do { @@ -23002,7 +23842,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4245; + this.state = 4309; this.selectFieldsInto(); } } @@ -23010,21 +23850,21 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4248; + this.state = 4312; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 603, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 614, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; } - this.state = 4258; + this.state = 4322; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 606, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { case 1: { - this.state = 4252; + this.state = 4316; this.match(MySqlParser.KW_LINES); - this.state = 4254; + this.state = 4318; this.errorHandler.sync(this); alternative = 1; do { @@ -23032,7 +23872,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4253; + this.state = 4317; this.selectLinesInto(); } } @@ -23040,9 +23880,9 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4256; + this.state = 4320; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 605, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 616, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; @@ -23068,20 +23908,20 @@ export class MySqlParser extends SQLParserBase { } public selectFieldsInto(): SelectFieldsIntoContext { let localContext = new SelectFieldsIntoContext(this.context, this.state); - this.enterRule(localContext, 298, MySqlParser.RULE_selectFieldsInto); + this.enterRule(localContext, 304, MySqlParser.RULE_selectFieldsInto); let _la: number; try { - this.state = 4274; + this.state = 4338; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TERMINATED: this.enterOuterAlt(localContext, 1); { - this.state = 4262; + this.state = 4326; this.match(MySqlParser.KW_TERMINATED); - this.state = 4263; + this.state = 4327; this.match(MySqlParser.KW_BY); - this.state = 4264; + this.state = 4328; localContext._terminationField = this.match(MySqlParser.STRING_LITERAL); } break; @@ -23089,32 +23929,32 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_OPTIONALLY: this.enterOuterAlt(localContext, 2); { - this.state = 4266; + this.state = 4330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123) { { - this.state = 4265; + this.state = 4329; this.match(MySqlParser.KW_OPTIONALLY); } } - this.state = 4268; + this.state = 4332; this.match(MySqlParser.KW_ENCLOSED); - this.state = 4269; + this.state = 4333; this.match(MySqlParser.KW_BY); - this.state = 4270; + this.state = 4334; localContext._enclosion = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_ESCAPED: this.enterOuterAlt(localContext, 3); { - this.state = 4271; + this.state = 4335; this.match(MySqlParser.KW_ESCAPED); - this.state = 4272; + this.state = 4336; this.match(MySqlParser.KW_BY); - this.state = 4273; + this.state = 4337; localContext._escaping = this.match(MySqlParser.STRING_LITERAL); } break; @@ -23138,30 +23978,30 @@ export class MySqlParser extends SQLParserBase { } public selectLinesInto(): SelectLinesIntoContext { let localContext = new SelectLinesIntoContext(this.context, this.state); - this.enterRule(localContext, 300, MySqlParser.RULE_selectLinesInto); + this.enterRule(localContext, 306, MySqlParser.RULE_selectLinesInto); try { - this.state = 4282; + this.state = 4346; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_STARTING: this.enterOuterAlt(localContext, 1); { - this.state = 4276; + this.state = 4340; this.match(MySqlParser.KW_STARTING); - this.state = 4277; + this.state = 4341; this.match(MySqlParser.KW_BY); - this.state = 4278; + this.state = 4342; localContext._starting = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_TERMINATED: this.enterOuterAlt(localContext, 2); { - this.state = 4279; + this.state = 4343; this.match(MySqlParser.KW_TERMINATED); - this.state = 4280; + this.state = 4344; this.match(MySqlParser.KW_BY); - this.state = 4281; + this.state = 4345; localContext._terminationLine = this.match(MySqlParser.STRING_LITERAL); } break; @@ -23185,30 +24025,30 @@ export class MySqlParser extends SQLParserBase { } public fromClause(): FromClauseContext { let localContext = new FromClauseContext(this.context, this.state); - this.enterRule(localContext, 302, MySqlParser.RULE_fromClause); + this.enterRule(localContext, 308, MySqlParser.RULE_fromClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4286; + this.state = 4350; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 622, this.context) ) { case 1: { - this.state = 4284; + this.state = 4348; this.match(MySqlParser.KW_FROM); - this.state = 4285; + this.state = 4349; this.tableSources(); } break; } - this.state = 4290; + this.state = 4354; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 612, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 623, this.context) ) { case 1: { - this.state = 4288; + this.state = 4352; this.match(MySqlParser.KW_WHERE); - this.state = 4289; + this.state = 4353; localContext._whereExpr = this.expression(0); } break; @@ -23231,43 +24071,43 @@ export class MySqlParser extends SQLParserBase { } public groupByClause(): GroupByClauseContext { let localContext = new GroupByClauseContext(this.context, this.state); - this.enterRule(localContext, 304, MySqlParser.RULE_groupByClause); + this.enterRule(localContext, 310, MySqlParser.RULE_groupByClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4292; + this.state = 4356; this.match(MySqlParser.KW_GROUP); - this.state = 4293; + this.state = 4357; this.match(MySqlParser.KW_BY); - this.state = 4294; + this.state = 4358; this.groupByItem(); - this.state = 4299; + this.state = 4363; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 613, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 624, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4295; + this.state = 4359; this.match(MySqlParser.COMMA); - this.state = 4296; + this.state = 4360; this.groupByItem(); } } } - this.state = 4301; + this.state = 4365; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 613, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 624, this.context); } - this.state = 4304; + this.state = 4368; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 614, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 625, this.context) ) { case 1: { - this.state = 4302; + this.state = 4366; this.match(MySqlParser.KW_WITH); - this.state = 4303; + this.state = 4367; this.match(MySqlParser.KW_ROLLUP); } break; @@ -23290,13 +24130,13 @@ export class MySqlParser extends SQLParserBase { } public havingClause(): HavingClauseContext { let localContext = new HavingClauseContext(this.context, this.state); - this.enterRule(localContext, 306, MySqlParser.RULE_havingClause); + this.enterRule(localContext, 312, MySqlParser.RULE_havingClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4306; + this.state = 4370; this.match(MySqlParser.KW_HAVING); - this.state = 4307; + this.state = 4371; localContext._havingExpr = this.expression(0); } } @@ -23316,48 +24156,48 @@ export class MySqlParser extends SQLParserBase { } public windowClause(): WindowClauseContext { let localContext = new WindowClauseContext(this.context, this.state); - this.enterRule(localContext, 308, MySqlParser.RULE_windowClause); + this.enterRule(localContext, 314, MySqlParser.RULE_windowClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4309; + this.state = 4373; this.match(MySqlParser.KW_WINDOW); - this.state = 4310; + this.state = 4374; this.windowName(); - this.state = 4311; + this.state = 4375; this.match(MySqlParser.KW_AS); - this.state = 4312; + this.state = 4376; this.match(MySqlParser.LR_BRACKET); - this.state = 4313; + this.state = 4377; this.windowSpec(); - this.state = 4314; + this.state = 4378; this.match(MySqlParser.RR_BRACKET); - this.state = 4324; + this.state = 4388; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 615, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 626, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4315; + this.state = 4379; this.match(MySqlParser.COMMA); - this.state = 4316; + this.state = 4380; this.windowName(); - this.state = 4317; + this.state = 4381; this.match(MySqlParser.KW_AS); - this.state = 4318; + this.state = 4382; this.match(MySqlParser.LR_BRACKET); - this.state = 4319; + this.state = 4383; this.windowSpec(); - this.state = 4320; + this.state = 4384; this.match(MySqlParser.RR_BRACKET); } } } - this.state = 4326; + this.state = 4390; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 615, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 626, this.context); } } } @@ -23377,19 +24217,19 @@ export class MySqlParser extends SQLParserBase { } public groupByItem(): GroupByItemContext { let localContext = new GroupByItemContext(this.context, this.state); - this.enterRule(localContext, 310, MySqlParser.RULE_groupByItem); + this.enterRule(localContext, 316, MySqlParser.RULE_groupByItem); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4327; + this.state = 4391; this.expression(0); - this.state = 4329; + this.state = 4393; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 627, this.context) ) { case 1: { - this.state = 4328; + this.state = 4392; localContext._order = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45)) { @@ -23420,40 +24260,40 @@ export class MySqlParser extends SQLParserBase { } public limitClause(): LimitClauseContext { let localContext = new LimitClauseContext(this.context, this.state); - this.enterRule(localContext, 312, MySqlParser.RULE_limitClause); + this.enterRule(localContext, 318, MySqlParser.RULE_limitClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4331; + this.state = 4395; this.match(MySqlParser.KW_LIMIT); - this.state = 4342; + this.state = 4406; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 618, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 629, this.context) ) { case 1: { - this.state = 4335; + this.state = 4399; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 628, this.context) ) { case 1: { - this.state = 4332; + this.state = 4396; localContext._offset = this.limitClauseAtom(); - this.state = 4333; + this.state = 4397; this.match(MySqlParser.COMMA); } break; } - this.state = 4337; + this.state = 4401; localContext._limit = this.limitClauseAtom(); } break; case 2: { - this.state = 4338; + this.state = 4402; localContext._limit = this.limitClauseAtom(); - this.state = 4339; + this.state = 4403; this.match(MySqlParser.KW_OFFSET); - this.state = 4340; + this.state = 4404; localContext._offset = this.limitClauseAtom(); } break; @@ -23476,9 +24316,9 @@ export class MySqlParser extends SQLParserBase { } public limitClauseAtom(): LimitClauseAtomContext { let localContext = new LimitClauseAtomContext(this.context, this.state); - this.enterRule(localContext, 314, MySqlParser.RULE_limitClauseAtom); + this.enterRule(localContext, 320, MySqlParser.RULE_limitClauseAtom); try { - this.state = 4347; + this.state = 4411; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -23489,7 +24329,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 4344; + this.state = 4408; this.decimalLiteral(); } break; @@ -23497,7 +24337,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.GLOBAL_ID: this.enterOuterAlt(localContext, 2); { - this.state = 4345; + this.state = 4409; this.mysqlVariable(); } break; @@ -23831,6 +24671,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -24049,7 +24890,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 3); { - this.state = 4346; + this.state = 4410; this.simpleId(); } break; @@ -24073,35 +24914,35 @@ export class MySqlParser extends SQLParserBase { } public startTransaction(): StartTransactionContext { let localContext = new StartTransactionContext(this.context, this.state); - this.enterRule(localContext, 316, MySqlParser.RULE_startTransaction); + this.enterRule(localContext, 322, MySqlParser.RULE_startTransaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4349; + this.state = 4413; this.match(MySqlParser.KW_START); - this.state = 4350; + this.state = 4414; this.match(MySqlParser.KW_TRANSACTION); - this.state = 4359; + this.state = 4423; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 621, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) { case 1: { - this.state = 4351; + this.state = 4415; this.transactionMode(); - this.state = 4356; + this.state = 4420; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4352; + this.state = 4416; this.match(MySqlParser.COMMA); - this.state = 4353; + this.state = 4417; this.transactionMode(); } } - this.state = 4358; + this.state = 4422; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24126,19 +24967,19 @@ export class MySqlParser extends SQLParserBase { } public beginWork(): BeginWorkContext { let localContext = new BeginWorkContext(this.context, this.state); - this.enterRule(localContext, 318, MySqlParser.RULE_beginWork); + this.enterRule(localContext, 324, MySqlParser.RULE_beginWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4361; + this.state = 4425; this.match(MySqlParser.KW_BEGIN); - this.state = 4363; + this.state = 4427; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4362; + this.state = 4426; this.match(MySqlParser.KW_WORK); } } @@ -24161,61 +25002,61 @@ export class MySqlParser extends SQLParserBase { } public commitWork(): CommitWorkContext { let localContext = new CommitWorkContext(this.context, this.state); - this.enterRule(localContext, 320, MySqlParser.RULE_commitWork); + this.enterRule(localContext, 326, MySqlParser.RULE_commitWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4365; + this.state = 4429; this.match(MySqlParser.KW_COMMIT); - this.state = 4367; + this.state = 4431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4366; + this.state = 4430; this.match(MySqlParser.KW_WORK); } } - this.state = 4374; + this.state = 4438; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 4369; + this.state = 4433; this.match(MySqlParser.KW_AND); - this.state = 4371; + this.state = 4435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4370; + this.state = 4434; localContext._nochain = this.match(MySqlParser.KW_NO); } } - this.state = 4373; + this.state = 4437; this.match(MySqlParser.KW_CHAIN); } } - this.state = 4380; + this.state = 4444; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 627, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { case 1: { - this.state = 4377; + this.state = 4441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4376; + this.state = 4440; localContext._norelease = this.match(MySqlParser.KW_NO); } } - this.state = 4379; + this.state = 4443; this.match(MySqlParser.KW_RELEASE); } break; @@ -24238,61 +25079,61 @@ export class MySqlParser extends SQLParserBase { } public rollbackWork(): RollbackWorkContext { let localContext = new RollbackWorkContext(this.context, this.state); - this.enterRule(localContext, 322, MySqlParser.RULE_rollbackWork); + this.enterRule(localContext, 328, MySqlParser.RULE_rollbackWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4382; + this.state = 4446; this.match(MySqlParser.KW_ROLLBACK); - this.state = 4384; + this.state = 4448; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4383; + this.state = 4447; this.match(MySqlParser.KW_WORK); } } - this.state = 4391; + this.state = 4455; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 4386; + this.state = 4450; this.match(MySqlParser.KW_AND); - this.state = 4388; + this.state = 4452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4387; + this.state = 4451; localContext._nochain = this.match(MySqlParser.KW_NO); } } - this.state = 4390; + this.state = 4454; this.match(MySqlParser.KW_CHAIN); } } - this.state = 4397; + this.state = 4461; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 643, this.context) ) { case 1: { - this.state = 4394; + this.state = 4458; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4393; + this.state = 4457; localContext._norelease = this.match(MySqlParser.KW_NO); } } - this.state = 4396; + this.state = 4460; this.match(MySqlParser.KW_RELEASE); } break; @@ -24315,13 +25156,13 @@ export class MySqlParser extends SQLParserBase { } public savepointStatement(): SavepointStatementContext { let localContext = new SavepointStatementContext(this.context, this.state); - this.enterRule(localContext, 324, MySqlParser.RULE_savepointStatement); + this.enterRule(localContext, 330, MySqlParser.RULE_savepointStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4399; + this.state = 4463; this.match(MySqlParser.KW_SAVEPOINT); - this.state = 4400; + this.state = 4464; localContext._identifier = this.uid(); } } @@ -24341,36 +25182,36 @@ export class MySqlParser extends SQLParserBase { } public rollbackStatement(): RollbackStatementContext { let localContext = new RollbackStatementContext(this.context, this.state); - this.enterRule(localContext, 326, MySqlParser.RULE_rollbackStatement); + this.enterRule(localContext, 332, MySqlParser.RULE_rollbackStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4402; + this.state = 4466; this.match(MySqlParser.KW_ROLLBACK); - this.state = 4404; + this.state = 4468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4403; + this.state = 4467; this.match(MySqlParser.KW_WORK); } } - this.state = 4406; + this.state = 4470; this.match(MySqlParser.KW_TO); - this.state = 4408; + this.state = 4472; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 634, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { case 1: { - this.state = 4407; + this.state = 4471; this.match(MySqlParser.KW_SAVEPOINT); } break; } - this.state = 4410; + this.state = 4474; localContext._identifier = this.uid(); } } @@ -24390,15 +25231,15 @@ export class MySqlParser extends SQLParserBase { } public releaseStatement(): ReleaseStatementContext { let localContext = new ReleaseStatementContext(this.context, this.state); - this.enterRule(localContext, 328, MySqlParser.RULE_releaseStatement); + this.enterRule(localContext, 334, MySqlParser.RULE_releaseStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4412; + this.state = 4476; this.match(MySqlParser.KW_RELEASE); - this.state = 4413; + this.state = 4477; this.match(MySqlParser.KW_SAVEPOINT); - this.state = 4414; + this.state = 4478; localContext._identifier = this.uid(); } } @@ -24418,14 +25259,14 @@ export class MySqlParser extends SQLParserBase { } public lockTables(): LockTablesContext { let localContext = new LockTablesContext(this.context, this.state); - this.enterRule(localContext, 330, MySqlParser.RULE_lockTables); + this.enterRule(localContext, 336, MySqlParser.RULE_lockTables); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4416; + this.state = 4480; this.match(MySqlParser.KW_LOCK); - this.state = 4417; + this.state = 4481; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 752)) { this.errorHandler.recoverInline(this); @@ -24434,21 +25275,21 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4418; + this.state = 4482; this.lockTableElement(); - this.state = 4423; + this.state = 4487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4419; + this.state = 4483; this.match(MySqlParser.COMMA); - this.state = 4420; + this.state = 4484; this.lockTableElement(); } } - this.state = 4425; + this.state = 4489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24470,13 +25311,13 @@ export class MySqlParser extends SQLParserBase { } public unlockTables(): UnlockTablesContext { let localContext = new UnlockTablesContext(this.context, this.state); - this.enterRule(localContext, 332, MySqlParser.RULE_unlockTables); + this.enterRule(localContext, 338, MySqlParser.RULE_unlockTables); try { this.enterOuterAlt(localContext, 1); { - this.state = 4426; + this.state = 4490; this.match(MySqlParser.KW_UNLOCK); - this.state = 4427; + this.state = 4491; this.match(MySqlParser.KW_TABLES); } } @@ -24496,18 +25337,18 @@ export class MySqlParser extends SQLParserBase { } public setAutocommitStatement(): SetAutocommitStatementContext { let localContext = new SetAutocommitStatementContext(this.context, this.state); - this.enterRule(localContext, 334, MySqlParser.RULE_setAutocommitStatement); + this.enterRule(localContext, 340, MySqlParser.RULE_setAutocommitStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4429; + this.state = 4493; this.match(MySqlParser.KW_SET); - this.state = 4430; + this.state = 4494; this.match(MySqlParser.KW_AUTOCOMMIT); - this.state = 4431; + this.state = 4495; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4432; + this.state = 4496; localContext._autocommitValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -24535,19 +25376,19 @@ export class MySqlParser extends SQLParserBase { } public setTransactionStatement(): SetTransactionStatementContext { let localContext = new SetTransactionStatementContext(this.context, this.state); - this.enterRule(localContext, 336, MySqlParser.RULE_setTransactionStatement); + this.enterRule(localContext, 342, MySqlParser.RULE_setTransactionStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4434; + this.state = 4498; this.match(MySqlParser.KW_SET); - this.state = 4436; + this.state = 4500; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 413 || _la === 593) { { - this.state = 4435; + this.state = 4499; localContext._transactionContext = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 593)) { @@ -24560,23 +25401,23 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 4438; + this.state = 4502; this.match(MySqlParser.KW_TRANSACTION); - this.state = 4439; + this.state = 4503; this.transactionOption(); - this.state = 4444; + this.state = 4508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4440; + this.state = 4504; this.match(MySqlParser.COMMA); - this.state = 4441; + this.state = 4505; this.transactionOption(); } } - this.state = 4446; + this.state = 4510; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24598,37 +25439,37 @@ export class MySqlParser extends SQLParserBase { } public transactionMode(): TransactionModeContext { let localContext = new TransactionModeContext(this.context, this.state); - this.enterRule(localContext, 338, MySqlParser.RULE_transactionMode); + this.enterRule(localContext, 344, MySqlParser.RULE_transactionMode); try { - this.state = 4454; + this.state = 4518; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 649, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4447; + this.state = 4511; this.match(MySqlParser.KW_WITH); - this.state = 4448; + this.state = 4512; this.match(MySqlParser.KW_CONSISTENT); - this.state = 4449; + this.state = 4513; this.match(MySqlParser.KW_SNAPSHOT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4450; + this.state = 4514; this.match(MySqlParser.KW_READ); - this.state = 4451; + this.state = 4515; this.match(MySqlParser.KW_WRITE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4452; + this.state = 4516; this.match(MySqlParser.KW_READ); - this.state = 4453; + this.state = 4517; this.match(MySqlParser.KW_ONLY); } break; @@ -24650,34 +25491,34 @@ export class MySqlParser extends SQLParserBase { } public lockTableElement(): LockTableElementContext { let localContext = new LockTableElementContext(this.context, this.state); - this.enterRule(localContext, 340, MySqlParser.RULE_lockTableElement); + this.enterRule(localContext, 346, MySqlParser.RULE_lockTableElement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4456; + this.state = 4520; this.tableName(); - this.state = 4461; + this.state = 4525; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4458; + this.state = 4522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4457; + this.state = 4521; this.match(MySqlParser.KW_AS); } } - this.state = 4460; + this.state = 4524; localContext._alias = this.uid(); } } - this.state = 4463; + this.state = 4527; this.lockAction(); } } @@ -24697,23 +25538,23 @@ export class MySqlParser extends SQLParserBase { } public lockAction(): LockActionContext { let localContext = new LockActionContext(this.context, this.state); - this.enterRule(localContext, 342, MySqlParser.RULE_lockAction); + this.enterRule(localContext, 348, MySqlParser.RULE_lockAction); let _la: number; try { - this.state = 4473; + this.state = 4537; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_READ: this.enterOuterAlt(localContext, 1); { - this.state = 4465; + this.state = 4529; this.match(MySqlParser.KW_READ); - this.state = 4467; + this.state = 4531; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 450) { { - this.state = 4466; + this.state = 4530; this.match(MySqlParser.KW_LOCAL); } } @@ -24724,17 +25565,17 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_WRITE: this.enterOuterAlt(localContext, 2); { - this.state = 4470; + this.state = 4534; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 4469; + this.state = 4533; this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 4472; + this.state = 4536; this.match(MySqlParser.KW_WRITE); } break; @@ -24758,37 +25599,37 @@ export class MySqlParser extends SQLParserBase { } public transactionOption(): TransactionOptionContext { let localContext = new TransactionOptionContext(this.context, this.state); - this.enterRule(localContext, 344, MySqlParser.RULE_transactionOption); + this.enterRule(localContext, 350, MySqlParser.RULE_transactionOption); try { - this.state = 4482; + this.state = 4546; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 644, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 655, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4475; + this.state = 4539; this.match(MySqlParser.KW_ISOLATION); - this.state = 4476; + this.state = 4540; this.match(MySqlParser.KW_LEVEL); - this.state = 4477; + this.state = 4541; this.transactionLevel(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4478; + this.state = 4542; this.match(MySqlParser.KW_READ); - this.state = 4479; + this.state = 4543; this.match(MySqlParser.KW_WRITE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4480; + this.state = 4544; this.match(MySqlParser.KW_READ); - this.state = 4481; + this.state = 4545; this.match(MySqlParser.KW_ONLY); } break; @@ -24810,42 +25651,42 @@ export class MySqlParser extends SQLParserBase { } public transactionLevel(): TransactionLevelContext { let localContext = new TransactionLevelContext(this.context, this.state); - this.enterRule(localContext, 346, MySqlParser.RULE_transactionLevel); + this.enterRule(localContext, 352, MySqlParser.RULE_transactionLevel); try { - this.state = 4491; + this.state = 4555; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 656, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4484; + this.state = 4548; this.match(MySqlParser.KW_REPEATABLE); - this.state = 4485; + this.state = 4549; this.match(MySqlParser.KW_READ); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4486; + this.state = 4550; this.match(MySqlParser.KW_READ); - this.state = 4487; + this.state = 4551; this.match(MySqlParser.KW_COMMITTED); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4488; + this.state = 4552; this.match(MySqlParser.KW_READ); - this.state = 4489; + this.state = 4553; this.match(MySqlParser.KW_UNCOMMITTED); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4490; + this.state = 4554; this.match(MySqlParser.KW_SERIALIZABLE); } break; @@ -24867,41 +25708,41 @@ export class MySqlParser extends SQLParserBase { } public changeMaster(): ChangeMasterContext { let localContext = new ChangeMasterContext(this.context, this.state); - this.enterRule(localContext, 348, MySqlParser.RULE_changeMaster); + this.enterRule(localContext, 354, MySqlParser.RULE_changeMaster); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4493; + this.state = 4557; this.match(MySqlParser.KW_CHANGE); - this.state = 4494; + this.state = 4558; this.match(MySqlParser.KW_MASTER); - this.state = 4495; + this.state = 4559; this.match(MySqlParser.KW_TO); - this.state = 4496; + this.state = 4560; this.masterOption(); - this.state = 4501; + this.state = 4565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4497; + this.state = 4561; this.match(MySqlParser.COMMA); - this.state = 4498; + this.state = 4562; this.masterOption(); } } - this.state = 4503; + this.state = 4567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4505; + this.state = 4569; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4504; + this.state = 4568; this.channelOption(); } } @@ -24924,41 +25765,41 @@ export class MySqlParser extends SQLParserBase { } public changeReplicationFilter(): ChangeReplicationFilterContext { let localContext = new ChangeReplicationFilterContext(this.context, this.state); - this.enterRule(localContext, 350, MySqlParser.RULE_changeReplicationFilter); + this.enterRule(localContext, 356, MySqlParser.RULE_changeReplicationFilter); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4507; + this.state = 4571; this.match(MySqlParser.KW_CHANGE); - this.state = 4508; + this.state = 4572; this.match(MySqlParser.KW_REPLICATION); - this.state = 4509; + this.state = 4573; this.match(MySqlParser.KW_FILTER); - this.state = 4510; + this.state = 4574; this.replicationFilter(); - this.state = 4515; + this.state = 4579; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4511; + this.state = 4575; this.match(MySqlParser.COMMA); - this.state = 4512; + this.state = 4576; this.replicationFilter(); } } - this.state = 4517; + this.state = 4581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4519; + this.state = 4583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4518; + this.state = 4582; this.channelOption(); } } @@ -24981,43 +25822,43 @@ export class MySqlParser extends SQLParserBase { } public changeReplicationSource(): ChangeReplicationSourceContext { let localContext = new ChangeReplicationSourceContext(this.context, this.state); - this.enterRule(localContext, 352, MySqlParser.RULE_changeReplicationSource); + this.enterRule(localContext, 358, MySqlParser.RULE_changeReplicationSource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4521; + this.state = 4585; this.match(MySqlParser.KW_CHANGE); - this.state = 4522; + this.state = 4586; this.match(MySqlParser.KW_REPLICATION); - this.state = 4523; + this.state = 4587; this.match(MySqlParser.KW_SOURCE); - this.state = 4524; + this.state = 4588; this.match(MySqlParser.KW_TO); - this.state = 4525; + this.state = 4589; this.replicationSourceOption(); - this.state = 4530; + this.state = 4594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4526; + this.state = 4590; this.match(MySqlParser.COMMA); - this.state = 4527; + this.state = 4591; this.replicationSourceOption(); } } - this.state = 4532; + this.state = 4596; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4534; + this.state = 4598; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4533; + this.state = 4597; this.channelOption(); } } @@ -25040,14 +25881,14 @@ export class MySqlParser extends SQLParserBase { } public purgeBinaryLogs(): PurgeBinaryLogsContext { let localContext = new PurgeBinaryLogsContext(this.context, this.state); - this.enterRule(localContext, 354, MySqlParser.RULE_purgeBinaryLogs); + this.enterRule(localContext, 360, MySqlParser.RULE_purgeBinaryLogs); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4536; + this.state = 4600; this.match(MySqlParser.KW_PURGE); - this.state = 4537; + this.state = 4601; localContext._purgeFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 228 || _la === 453)) { @@ -25057,24 +25898,24 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4538; + this.state = 4602; this.match(MySqlParser.KW_LOGS); - this.state = 4543; + this.state = 4607; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TO: { - this.state = 4539; + this.state = 4603; this.match(MySqlParser.KW_TO); - this.state = 4540; + this.state = 4604; localContext._fileName = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_BEFORE: { - this.state = 4541; + this.state = 4605; this.match(MySqlParser.KW_BEFORE); - this.state = 4542; + this.state = 4606; localContext._timeValue = this.match(MySqlParser.STRING_LITERAL); } break; @@ -25099,14 +25940,14 @@ export class MySqlParser extends SQLParserBase { } public startSlaveOrReplica(): StartSlaveOrReplicaContext { let localContext = new StartSlaveOrReplicaContext(this.context, this.state); - this.enterRule(localContext, 356, MySqlParser.RULE_startSlaveOrReplica); + this.enterRule(localContext, 362, MySqlParser.RULE_startSlaveOrReplica); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4545; + this.state = 4609; this.match(MySqlParser.KW_START); - this.state = 4546; + this.state = 4610; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -25115,64 +25956,64 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4555; + this.state = 4619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 438 || _la === 639) { { - this.state = 4547; + this.state = 4611; this.threadType(); - this.state = 4552; + this.state = 4616; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4548; + this.state = 4612; this.match(MySqlParser.COMMA); - this.state = 4549; + this.state = 4613; this.threadType(); } } - this.state = 4554; + this.state = 4618; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4559; + this.state = 4623; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 676) { { - this.state = 4557; + this.state = 4621; this.match(MySqlParser.KW_UNTIL); - this.state = 4558; + this.state = 4622; this.untilOption(); } } - this.state = 4564; + this.state = 4628; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 363 || _la === 529 || _la === 535 || _la === 678) { { { - this.state = 4561; + this.state = 4625; this.connectionOptions(); } } - this.state = 4566; + this.state = 4630; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4568; + this.state = 4632; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4567; + this.state = 4631; this.channelOption(); } } @@ -25195,14 +26036,14 @@ export class MySqlParser extends SQLParserBase { } public stopSlaveOrReplica(): StopSlaveOrReplicaContext { let localContext = new StopSlaveOrReplicaContext(this.context, this.state); - this.enterRule(localContext, 358, MySqlParser.RULE_stopSlaveOrReplica); + this.enterRule(localContext, 364, MySqlParser.RULE_stopSlaveOrReplica); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4570; + this.state = 4634; this.match(MySqlParser.KW_STOP); - this.state = 4571; + this.state = 4635; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -25211,38 +26052,38 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4580; + this.state = 4644; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 438 || _la === 639) { { - this.state = 4572; + this.state = 4636; this.threadType(); - this.state = 4577; + this.state = 4641; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4573; + this.state = 4637; this.match(MySqlParser.COMMA); - this.state = 4574; + this.state = 4638; this.threadType(); } } - this.state = 4579; + this.state = 4643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4583; + this.state = 4647; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4582; + this.state = 4646; this.channelOption(); } } @@ -25265,57 +26106,57 @@ export class MySqlParser extends SQLParserBase { } public startGroupReplication(): StartGroupReplicationContext { let localContext = new StartGroupReplicationContext(this.context, this.state); - this.enterRule(localContext, 360, MySqlParser.RULE_startGroupReplication); + this.enterRule(localContext, 366, MySqlParser.RULE_startGroupReplication); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4585; + this.state = 4649; this.match(MySqlParser.KW_START); - this.state = 4586; + this.state = 4650; this.match(MySqlParser.KW_GROUP_REPLICATION); - this.state = 4590; + this.state = 4654; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 678) { { - this.state = 4587; + this.state = 4651; this.match(MySqlParser.KW_USER); - this.state = 4588; + this.state = 4652; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4589; + this.state = 4653; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 4596; + this.state = 4660; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 662, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 673, this.context) ) { case 1: { - this.state = 4592; + this.state = 4656; this.match(MySqlParser.COMMA); - this.state = 4593; + this.state = 4657; this.match(MySqlParser.KW_PASSWORD); - this.state = 4594; + this.state = 4658; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4595; + this.state = 4659; this.match(MySqlParser.STRING_LITERAL); } break; } - this.state = 4602; + this.state = 4666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 4598; + this.state = 4662; this.match(MySqlParser.COMMA); - this.state = 4599; + this.state = 4663; this.match(MySqlParser.KW_DEFAULT_AUTH); - this.state = 4600; + this.state = 4664; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4601; + this.state = 4665; this.match(MySqlParser.STRING_LITERAL); } } @@ -25338,13 +26179,13 @@ export class MySqlParser extends SQLParserBase { } public stopGroupReplication(): StopGroupReplicationContext { let localContext = new StopGroupReplicationContext(this.context, this.state); - this.enterRule(localContext, 362, MySqlParser.RULE_stopGroupReplication); + this.enterRule(localContext, 368, MySqlParser.RULE_stopGroupReplication); try { this.enterOuterAlt(localContext, 1); { - this.state = 4604; + this.state = 4668; this.match(MySqlParser.KW_STOP); - this.state = 4605; + this.state = 4669; this.match(MySqlParser.KW_GROUP_REPLICATION); } } @@ -25364,10 +26205,10 @@ export class MySqlParser extends SQLParserBase { } public masterOption(): MasterOptionContext { let localContext = new MasterOptionContext(this.context, this.state); - this.enterRule(localContext, 364, MySqlParser.RULE_masterOption); + this.enterRule(localContext, 370, MySqlParser.RULE_masterOption); let _la: number; try { - this.state = 4634; + this.state = 4698; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_MASTER_BIND: @@ -25391,11 +26232,11 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterStringOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4607; + this.state = 4671; this.stringMasterOption(); - this.state = 4608; + this.state = 4672; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4609; + this.state = 4673; this.match(MySqlParser.STRING_LITERAL); } break; @@ -25410,11 +26251,11 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterDecimalOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4611; + this.state = 4675; this.decimalMasterOption(); - this.state = 4612; + this.state = 4676; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4613; + this.state = 4677; this.decimalLiteral(); } break; @@ -25428,11 +26269,11 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterBoolOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4615; + this.state = 4679; this.boolMasterOption(); - this.state = 4616; + this.state = 4680; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4617; + this.state = 4681; (localContext as MasterBoolOptionContext)._boolVal = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -25450,7 +26291,7 @@ export class MySqlParser extends SQLParserBase { localContext = new V8AddMasterOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4619; + this.state = 4683; this.v8NewMasterOption(); } break; @@ -25458,39 +26299,39 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterUidListOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4620; + this.state = 4684; this.match(MySqlParser.KW_IGNORE_SERVER_IDS); - this.state = 4621; + this.state = 4685; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4622; + this.state = 4686; this.match(MySqlParser.LR_BRACKET); - this.state = 4631; + this.state = 4695; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4623; + this.state = 4687; (localContext as MasterUidListOptionContext)._server_id = this.uid(); - this.state = 4628; + this.state = 4692; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4624; + this.state = 4688; this.match(MySqlParser.COMMA); - this.state = 4625; + this.state = 4689; (localContext as MasterUidListOptionContext)._server_id = this.uid(); } } - this.state = 4630; + this.state = 4694; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4633; + this.state = 4697; this.match(MySqlParser.RR_BRACKET); } break; @@ -25514,12 +26355,12 @@ export class MySqlParser extends SQLParserBase { } public stringMasterOption(): StringMasterOptionContext { let localContext = new StringMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 366, MySqlParser.RULE_stringMasterOption); + this.enterRule(localContext, 372, MySqlParser.RULE_stringMasterOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4636; + this.state = 4700; _la = this.tokenStream.LA(1); if(!(_la === 108 || ((((_la - 455)) & ~0x1F) === 0 && ((1 << (_la - 455)) & 4190897) !== 0) || _la === 499 || _la === 557)) { this.errorHandler.recoverInline(this); @@ -25546,12 +26387,12 @@ export class MySqlParser extends SQLParserBase { } public decimalMasterOption(): DecimalMasterOptionContext { let localContext = new DecimalMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 368, MySqlParser.RULE_decimalMasterOption); + this.enterRule(localContext, 374, MySqlParser.RULE_decimalMasterOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4638; + this.state = 4702; _la = this.tokenStream.LA(1); if(!(((((_la - 456)) & ~0x1F) === 0 && ((1 << (_la - 456)) & 2097831) !== 0) || _la === 558)) { this.errorHandler.recoverInline(this); @@ -25578,12 +26419,12 @@ export class MySqlParser extends SQLParserBase { } public boolMasterOption(): BoolMasterOptionContext { let localContext = new BoolMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 370, MySqlParser.RULE_boolMasterOption); + this.enterRule(localContext, 376, MySqlParser.RULE_boolMasterOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4640; + this.state = 4704; _la = this.tokenStream.LA(1); if(!(_la === 109 || _la === 411 || _la === 416 || _la === 454 || _la === 466 || _la === 573 || _la === 617)) { this.errorHandler.recoverInline(this); @@ -25610,20 +26451,20 @@ export class MySqlParser extends SQLParserBase { } public v8NewMasterOption(): V8NewMasterOptionContext { let localContext = new V8NewMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 372, MySqlParser.RULE_v8NewMasterOption); + this.enterRule(localContext, 378, MySqlParser.RULE_v8NewMasterOption); let _la: number; try { - this.state = 4655; + this.state = 4719; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PRIVILEGE_CHECKS_USER: this.enterOuterAlt(localContext, 1); { - this.state = 4642; + this.state = 4706; this.match(MySqlParser.KW_PRIVILEGE_CHECKS_USER); - this.state = 4643; + this.state = 4707; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4644; + this.state = 4708; _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -25637,11 +26478,11 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK: this.enterOuterAlt(localContext, 2); { - this.state = 4645; + this.state = 4709; this.match(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK); - this.state = 4646; + this.state = 4710; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4647; + this.state = 4711; _la = this.tokenStream.LA(1); if(!(_la === 118 || _la === 119 || _la === 507)) { this.errorHandler.recoverInline(this); @@ -25655,22 +26496,22 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS: this.enterOuterAlt(localContext, 3); { - this.state = 4648; + this.state = 4712; this.match(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS); - this.state = 4649; + this.state = 4713; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4653; + this.state = 4717; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_OFF: { - this.state = 4650; + this.state = 4714; this.match(MySqlParser.KW_OFF); } break; case MySqlParser.KW_LOCAL: { - this.state = 4651; + this.state = 4715; this.match(MySqlParser.KW_LOCAL); } break; @@ -25682,7 +26523,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 4652; + this.state = 4716; this.gtuidSet(); } break; @@ -25711,10 +26552,10 @@ export class MySqlParser extends SQLParserBase { } public replicationSourceOption(): ReplicationSourceOptionContext { let localContext = new ReplicationSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 374, MySqlParser.RULE_replicationSourceOption); + this.enterRule(localContext, 380, MySqlParser.RULE_replicationSourceOption); let _la: number; try { - this.state = 4684; + this.state = 4748; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NETWORK_NAMESPACE: @@ -25738,11 +26579,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceStringOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4657; + this.state = 4721; this.stringSourceOption(); - this.state = 4658; + this.state = 4722; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4659; + this.state = 4723; this.match(MySqlParser.STRING_LITERAL); } break; @@ -25757,11 +26598,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceDecimalOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4661; + this.state = 4725; this.decimalSourceOption(); - this.state = 4662; + this.state = 4726; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4663; + this.state = 4727; this.decimalLiteral(); } break; @@ -25775,11 +26616,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceBoolOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4665; + this.state = 4729; this.boolSourceOption(); - this.state = 4666; + this.state = 4730; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4667; + this.state = 4731; (localContext as SourceBoolOptionContext)._boolVal = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -25797,7 +26638,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceOtherOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4669; + this.state = 4733; this.otherSourceOption(); } break; @@ -25805,39 +26646,39 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceUidListOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4670; + this.state = 4734; this.match(MySqlParser.KW_IGNORE_SERVER_IDS); - this.state = 4671; + this.state = 4735; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4672; + this.state = 4736; this.match(MySqlParser.LR_BRACKET); - this.state = 4681; + this.state = 4745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4673; + this.state = 4737; (localContext as SourceUidListOptionContext)._server_id = this.uid(); - this.state = 4678; + this.state = 4742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4674; + this.state = 4738; this.match(MySqlParser.COMMA); - this.state = 4675; + this.state = 4739; (localContext as SourceUidListOptionContext)._server_id = this.uid(); } } - this.state = 4680; + this.state = 4744; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4683; + this.state = 4747; this.match(MySqlParser.RR_BRACKET); } break; @@ -25861,12 +26702,12 @@ export class MySqlParser extends SQLParserBase { } public stringSourceOption(): StringSourceOptionContext { let localContext = new StringSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 376, MySqlParser.RULE_stringSourceOption); + this.enterRule(localContext, 382, MySqlParser.RULE_stringSourceOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4686; + this.state = 4750; _la = this.tokenStream.LA(1); if(!(_la === 499 || _la === 557 || ((((_la - 606)) & ~0x1F) === 0 && ((1 << (_la - 606)) & 125771823) !== 0))) { this.errorHandler.recoverInline(this); @@ -25893,12 +26734,12 @@ export class MySqlParser extends SQLParserBase { } public decimalSourceOption(): DecimalSourceOptionContext { let localContext = new DecimalSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 378, MySqlParser.RULE_decimalSourceOption); + this.enterRule(localContext, 384, MySqlParser.RULE_decimalSourceOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4688; + this.state = 4752; _la = this.tokenStream.LA(1); if(!(_la === 558 || ((((_la - 610)) & ~0x1F) === 0 && ((1 << (_la - 610)) & 1397) !== 0))) { this.errorHandler.recoverInline(this); @@ -25925,12 +26766,12 @@ export class MySqlParser extends SQLParserBase { } public boolSourceOption(): BoolSourceOptionContext { let localContext = new BoolSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 380, MySqlParser.RULE_boolSourceOption); + this.enterRule(localContext, 386, MySqlParser.RULE_boolSourceOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4690; + this.state = 4754; _la = this.tokenStream.LA(1); if(!(_la === 412 || _la === 416 || _la === 573 || ((((_la - 613)) & ~0x1F) === 0 && ((1 << (_la - 613)) & 65809) !== 0))) { this.errorHandler.recoverInline(this); @@ -25957,20 +26798,20 @@ export class MySqlParser extends SQLParserBase { } public otherSourceOption(): OtherSourceOptionContext { let localContext = new OtherSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 382, MySqlParser.RULE_otherSourceOption); + this.enterRule(localContext, 388, MySqlParser.RULE_otherSourceOption); let _la: number; try { - this.state = 4705; + this.state = 4769; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PRIVILEGE_CHECKS_USER: this.enterOuterAlt(localContext, 1); { - this.state = 4692; + this.state = 4756; this.match(MySqlParser.KW_PRIVILEGE_CHECKS_USER); - this.state = 4693; + this.state = 4757; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4694; + this.state = 4758; _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -25984,11 +26825,11 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK: this.enterOuterAlt(localContext, 2); { - this.state = 4695; + this.state = 4759; this.match(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK); - this.state = 4696; + this.state = 4760; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4697; + this.state = 4761; _la = this.tokenStream.LA(1); if(!(_la === 70 || _la === 118 || _la === 119 || _la === 507)) { this.errorHandler.recoverInline(this); @@ -26002,22 +26843,22 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS: this.enterOuterAlt(localContext, 3); { - this.state = 4698; + this.state = 4762; this.match(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS); - this.state = 4699; + this.state = 4763; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4703; + this.state = 4767; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_OFF: { - this.state = 4700; + this.state = 4764; this.match(MySqlParser.KW_OFF); } break; case MySqlParser.KW_LOCAL: { - this.state = 4701; + this.state = 4765; this.match(MySqlParser.KW_LOCAL); } break; @@ -26029,7 +26870,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 4702; + this.state = 4766; this.gtuidSet(); } break; @@ -26058,15 +26899,15 @@ export class MySqlParser extends SQLParserBase { } public channelOption(): ChannelOptionContext { let localContext = new ChannelOptionContext(this.context, this.state); - this.enterRule(localContext, 384, MySqlParser.RULE_channelOption); + this.enterRule(localContext, 390, MySqlParser.RULE_channelOption); try { this.enterOuterAlt(localContext, 1); { - this.state = 4707; + this.state = 4771; this.match(MySqlParser.KW_FOR); - this.state = 4708; + this.state = 4772; this.match(MySqlParser.KW_CHANNEL); - this.state = 4709; + this.state = 4773; this.match(MySqlParser.STRING_LITERAL); } } @@ -26086,41 +26927,41 @@ export class MySqlParser extends SQLParserBase { } public replicationFilter(): ReplicationFilterContext { let localContext = new ReplicationFilterContext(this.context, this.state); - this.enterRule(localContext, 386, MySqlParser.RULE_replicationFilter); + this.enterRule(localContext, 392, MySqlParser.RULE_replicationFilter); let _la: number; try { - this.state = 4774; + this.state = 4838; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_REPLICATE_DO_DB: localContext = new DoDbReplicationContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4711; + this.state = 4775; this.match(MySqlParser.KW_REPLICATE_DO_DB); - this.state = 4712; + this.state = 4776; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4713; + this.state = 4777; this.match(MySqlParser.LR_BRACKET); - this.state = 4714; + this.state = 4778; this.databaseName(); - this.state = 4719; + this.state = 4783; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4715; + this.state = 4779; this.match(MySqlParser.COMMA); - this.state = 4716; + this.state = 4780; this.databaseName(); } } - this.state = 4721; + this.state = 4785; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4722; + this.state = 4786; this.match(MySqlParser.RR_BRACKET); } break; @@ -26128,31 +26969,31 @@ export class MySqlParser extends SQLParserBase { localContext = new IgnoreDbReplicationContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4724; + this.state = 4788; this.match(MySqlParser.KW_REPLICATE_IGNORE_DB); - this.state = 4725; + this.state = 4789; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4726; + this.state = 4790; this.match(MySqlParser.LR_BRACKET); - this.state = 4727; + this.state = 4791; this.databaseName(); - this.state = 4732; + this.state = 4796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4728; + this.state = 4792; this.match(MySqlParser.COMMA); - this.state = 4729; + this.state = 4793; this.databaseName(); } } - this.state = 4734; + this.state = 4798; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4735; + this.state = 4799; this.match(MySqlParser.RR_BRACKET); } break; @@ -26160,15 +27001,15 @@ export class MySqlParser extends SQLParserBase { localContext = new DoTableReplicationContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4737; + this.state = 4801; this.match(MySqlParser.KW_REPLICATE_DO_TABLE); - this.state = 4738; + this.state = 4802; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4739; + this.state = 4803; this.match(MySqlParser.LR_BRACKET); - this.state = 4740; + this.state = 4804; this.tableNames(); - this.state = 4741; + this.state = 4805; this.match(MySqlParser.RR_BRACKET); } break; @@ -26176,15 +27017,15 @@ export class MySqlParser extends SQLParserBase { localContext = new IgnoreTableReplicationContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4743; + this.state = 4807; this.match(MySqlParser.KW_REPLICATE_IGNORE_TABLE); - this.state = 4744; + this.state = 4808; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4745; + this.state = 4809; this.match(MySqlParser.LR_BRACKET); - this.state = 4746; + this.state = 4810; this.tableNames(); - this.state = 4747; + this.state = 4811; this.match(MySqlParser.RR_BRACKET); } break; @@ -26192,15 +27033,15 @@ export class MySqlParser extends SQLParserBase { localContext = new WildDoTableReplicationContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4749; + this.state = 4813; this.match(MySqlParser.KW_REPLICATE_WILD_DO_TABLE); - this.state = 4750; + this.state = 4814; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4751; + this.state = 4815; this.match(MySqlParser.LR_BRACKET); - this.state = 4752; + this.state = 4816; this.simpleStrings(); - this.state = 4753; + this.state = 4817; this.match(MySqlParser.RR_BRACKET); } break; @@ -26208,15 +27049,15 @@ export class MySqlParser extends SQLParserBase { localContext = new WildIgnoreTableReplicationContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 4755; + this.state = 4819; this.match(MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE); - this.state = 4756; + this.state = 4820; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4757; + this.state = 4821; this.match(MySqlParser.LR_BRACKET); - this.state = 4758; + this.state = 4822; this.simpleStrings(); - this.state = 4759; + this.state = 4823; this.match(MySqlParser.RR_BRACKET); } break; @@ -26224,31 +27065,31 @@ export class MySqlParser extends SQLParserBase { localContext = new RewriteDbReplicationContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 4761; + this.state = 4825; this.match(MySqlParser.KW_REPLICATE_REWRITE_DB); - this.state = 4762; + this.state = 4826; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4763; + this.state = 4827; this.match(MySqlParser.LR_BRACKET); - this.state = 4764; + this.state = 4828; this.tablePair(); - this.state = 4769; + this.state = 4833; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4765; + this.state = 4829; this.match(MySqlParser.COMMA); - this.state = 4766; + this.state = 4830; this.tablePair(); } } - this.state = 4771; + this.state = 4835; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4772; + this.state = 4836; this.match(MySqlParser.RR_BRACKET); } break; @@ -26272,19 +27113,19 @@ export class MySqlParser extends SQLParserBase { } public tablePair(): TablePairContext { let localContext = new TablePairContext(this.context, this.state); - this.enterRule(localContext, 388, MySqlParser.RULE_tablePair); + this.enterRule(localContext, 394, MySqlParser.RULE_tablePair); try { this.enterOuterAlt(localContext, 1); { - this.state = 4776; + this.state = 4840; this.match(MySqlParser.LR_BRACKET); - this.state = 4777; + this.state = 4841; localContext._firstTable = this.tableName(); - this.state = 4778; + this.state = 4842; this.match(MySqlParser.COMMA); - this.state = 4779; + this.state = 4843; localContext._secondTable = this.tableName(); - this.state = 4780; + this.state = 4844; this.match(MySqlParser.RR_BRACKET); } } @@ -26304,12 +27145,12 @@ export class MySqlParser extends SQLParserBase { } public threadType(): ThreadTypeContext { let localContext = new ThreadTypeContext(this.context, this.state); - this.enterRule(localContext, 390, MySqlParser.RULE_threadType); + this.enterRule(localContext, 396, MySqlParser.RULE_threadType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4782; + this.state = 4846; _la = this.tokenStream.LA(1); if(!(_la === 438 || _la === 639)) { this.errorHandler.recoverInline(this); @@ -26336,10 +27177,10 @@ export class MySqlParser extends SQLParserBase { } public untilOption(): UntilOptionContext { let localContext = new UntilOptionContext(this.context, this.state); - this.enterRule(localContext, 392, MySqlParser.RULE_untilOption); + this.enterRule(localContext, 398, MySqlParser.RULE_untilOption); let _la: number; try { - this.state = 4809; + this.state = 4873; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SQL_AFTER_GTIDS: @@ -26347,7 +27188,7 @@ export class MySqlParser extends SQLParserBase { localContext = new GtidsUntilOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4784; + this.state = 4848; (localContext as GtidsUntilOptionContext)._gtids = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 633 || _la === 635)) { @@ -26357,9 +27198,9 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4785; + this.state = 4849; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4786; + this.state = 4850; this.gtuidSet(); } break; @@ -26367,19 +27208,19 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterLogUntilOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4787; + this.state = 4851; this.match(MySqlParser.KW_MASTER_LOG_FILE); - this.state = 4788; + this.state = 4852; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4789; + this.state = 4853; this.match(MySqlParser.STRING_LITERAL); - this.state = 4790; + this.state = 4854; this.match(MySqlParser.COMMA); - this.state = 4791; + this.state = 4855; this.match(MySqlParser.KW_MASTER_LOG_POS); - this.state = 4792; + this.state = 4856; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4793; + this.state = 4857; this.decimalLiteral(); } break; @@ -26387,19 +27228,19 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceLogUntilOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4794; + this.state = 4858; this.match(MySqlParser.KW_SOURCE_LOG_FILE); - this.state = 4795; + this.state = 4859; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4796; + this.state = 4860; this.match(MySqlParser.STRING_LITERAL); - this.state = 4797; + this.state = 4861; this.match(MySqlParser.COMMA); - this.state = 4798; + this.state = 4862; this.match(MySqlParser.KW_SOURCE_LOG_POS); - this.state = 4799; + this.state = 4863; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4800; + this.state = 4864; this.decimalLiteral(); } break; @@ -26407,19 +27248,19 @@ export class MySqlParser extends SQLParserBase { localContext = new RelayLogUntilOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4801; + this.state = 4865; this.match(MySqlParser.KW_RELAY_LOG_FILE); - this.state = 4802; + this.state = 4866; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4803; + this.state = 4867; this.match(MySqlParser.STRING_LITERAL); - this.state = 4804; + this.state = 4868; this.match(MySqlParser.COMMA); - this.state = 4805; + this.state = 4869; this.match(MySqlParser.KW_RELAY_LOG_POS); - this.state = 4806; + this.state = 4870; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4807; + this.state = 4871; this.decimalLiteral(); } break; @@ -26427,7 +27268,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SqlGapsUntilOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4808; + this.state = 4872; this.match(MySqlParser.KW_SQL_AFTER_MTS_GAPS); } break; @@ -26451,20 +27292,20 @@ export class MySqlParser extends SQLParserBase { } public connectionOptions(): ConnectionOptionsContext { let localContext = new ConnectionOptionsContext(this.context, this.state); - this.enterRule(localContext, 394, MySqlParser.RULE_connectionOptions); + this.enterRule(localContext, 400, MySqlParser.RULE_connectionOptions); try { - this.state = 4823; + this.state = 4887; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_USER: localContext = new UserConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4811; + this.state = 4875; this.match(MySqlParser.KW_USER); - this.state = 4812; + this.state = 4876; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4813; + this.state = 4877; (localContext as UserConnectionOptionContext)._conOptUser = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26472,11 +27313,11 @@ export class MySqlParser extends SQLParserBase { localContext = new PasswordConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4814; + this.state = 4878; this.match(MySqlParser.KW_PASSWORD); - this.state = 4815; + this.state = 4879; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4816; + this.state = 4880; (localContext as PasswordConnectionOptionContext)._conOptPassword = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26484,11 +27325,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DefaultAuthConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4817; + this.state = 4881; this.match(MySqlParser.KW_DEFAULT_AUTH); - this.state = 4818; + this.state = 4882; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4819; + this.state = 4883; (localContext as DefaultAuthConnectionOptionContext)._conOptDefAuth = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26496,11 +27337,11 @@ export class MySqlParser extends SQLParserBase { localContext = new PluginDirConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4820; + this.state = 4884; this.match(MySqlParser.KW_PLUGIN_DIR); - this.state = 4821; + this.state = 4885; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4822; + this.state = 4886; (localContext as PluginDirConnectionOptionContext)._conOptPluginDir = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26524,10 +27365,10 @@ export class MySqlParser extends SQLParserBase { } public gtuidSet(): GtuidSetContext { let localContext = new GtuidSetContext(this.context, this.state); - this.enterRule(localContext, 396, MySqlParser.RULE_gtuidSet); + this.enterRule(localContext, 402, MySqlParser.RULE_gtuidSet); try { let alternative: number; - this.state = 4834; + this.state = 4898; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -26538,32 +27379,32 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 4825; + this.state = 4889; this.uuidSet(); - this.state = 4830; + this.state = 4894; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 680, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4826; + this.state = 4890; this.match(MySqlParser.COMMA); - this.state = 4827; + this.state = 4891; this.uuidSet(); } } } - this.state = 4832; + this.state = 4896; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 680, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); } } break; case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 2); { - this.state = 4833; + this.state = 4897; this.match(MySqlParser.STRING_LITERAL); } break; @@ -26587,14 +27428,14 @@ export class MySqlParser extends SQLParserBase { } public xaStartTransaction(): XaStartTransactionContext { let localContext = new XaStartTransactionContext(this.context, this.state); - this.enterRule(localContext, 398, MySqlParser.RULE_xaStartTransaction); + this.enterRule(localContext, 404, MySqlParser.RULE_xaStartTransaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4836; + this.state = 4900; this.match(MySqlParser.KW_XA); - this.state = 4837; + this.state = 4901; localContext._xaStart = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 317 || _la === 640)) { @@ -26604,14 +27445,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4838; + this.state = 4902; this.xid(); - this.state = 4840; + this.state = 4904; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 91 || _la === 577) { { - this.state = 4839; + this.state = 4903; localContext._xaAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 91 || _la === 577)) { @@ -26642,32 +27483,32 @@ export class MySqlParser extends SQLParserBase { } public xaEndTransaction(): XaEndTransactionContext { let localContext = new XaEndTransactionContext(this.context, this.state); - this.enterRule(localContext, 400, MySqlParser.RULE_xaEndTransaction); + this.enterRule(localContext, 406, MySqlParser.RULE_xaEndTransaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4842; + this.state = 4906; this.match(MySqlParser.KW_XA); - this.state = 4843; + this.state = 4907; this.match(MySqlParser.KW_END); - this.state = 4844; + this.state = 4908; this.xid(); - this.state = 4850; + this.state = 4914; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 654) { { - this.state = 4845; + this.state = 4909; this.match(MySqlParser.KW_SUSPEND); - this.state = 4848; + this.state = 4912; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4846; + this.state = 4910; this.match(MySqlParser.KW_FOR); - this.state = 4847; + this.state = 4911; this.match(MySqlParser.KW_MIGRATE); } } @@ -26693,15 +27534,15 @@ export class MySqlParser extends SQLParserBase { } public xaPrepareStatement(): XaPrepareStatementContext { let localContext = new XaPrepareStatementContext(this.context, this.state); - this.enterRule(localContext, 402, MySqlParser.RULE_xaPrepareStatement); + this.enterRule(localContext, 408, MySqlParser.RULE_xaPrepareStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4852; + this.state = 4916; this.match(MySqlParser.KW_XA); - this.state = 4853; + this.state = 4917; this.match(MySqlParser.KW_PREPARE); - this.state = 4854; + this.state = 4918; this.xid(); } } @@ -26721,25 +27562,25 @@ export class MySqlParser extends SQLParserBase { } public xaCommitWork(): XaCommitWorkContext { let localContext = new XaCommitWorkContext(this.context, this.state); - this.enterRule(localContext, 404, MySqlParser.RULE_xaCommitWork); + this.enterRule(localContext, 410, MySqlParser.RULE_xaCommitWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4856; + this.state = 4920; this.match(MySqlParser.KW_XA); - this.state = 4857; + this.state = 4921; this.match(MySqlParser.KW_COMMIT); - this.state = 4858; + this.state = 4922; this.xid(); - this.state = 4861; + this.state = 4925; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 4859; + this.state = 4923; this.match(MySqlParser.KW_ONE); - this.state = 4860; + this.state = 4924; this.match(MySqlParser.KW_PHASE); } } @@ -26762,15 +27603,15 @@ export class MySqlParser extends SQLParserBase { } public xaRollbackWork(): XaRollbackWorkContext { let localContext = new XaRollbackWorkContext(this.context, this.state); - this.enterRule(localContext, 406, MySqlParser.RULE_xaRollbackWork); + this.enterRule(localContext, 412, MySqlParser.RULE_xaRollbackWork); try { this.enterOuterAlt(localContext, 1); { - this.state = 4863; + this.state = 4927; this.match(MySqlParser.KW_XA); - this.state = 4864; + this.state = 4928; this.match(MySqlParser.KW_ROLLBACK); - this.state = 4865; + this.state = 4929; this.xid(); } } @@ -26790,23 +27631,23 @@ export class MySqlParser extends SQLParserBase { } public xaRecoverWork(): XaRecoverWorkContext { let localContext = new XaRecoverWorkContext(this.context, this.state); - this.enterRule(localContext, 408, MySqlParser.RULE_xaRecoverWork); + this.enterRule(localContext, 414, MySqlParser.RULE_xaRecoverWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4867; + this.state = 4931; this.match(MySqlParser.KW_XA); - this.state = 4868; + this.state = 4932; this.match(MySqlParser.KW_RECOVER); - this.state = 4871; + this.state = 4935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 4869; + this.state = 4933; this.match(MySqlParser.KW_CONVERT); - this.state = 4870; + this.state = 4934; this.xid(); } } @@ -26829,28 +27670,28 @@ export class MySqlParser extends SQLParserBase { } public prepareStatement(): PrepareStatementContext { let localContext = new PrepareStatementContext(this.context, this.state); - this.enterRule(localContext, 410, MySqlParser.RULE_prepareStatement); + this.enterRule(localContext, 416, MySqlParser.RULE_prepareStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4873; + this.state = 4937; this.match(MySqlParser.KW_PREPARE); - this.state = 4874; + this.state = 4938; localContext._stmt_name = this.uid(); - this.state = 4875; + this.state = 4939; this.match(MySqlParser.KW_FROM); - this.state = 4878; + this.state = 4942; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 4876; + this.state = 4940; localContext._query = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.LOCAL_ID: { - this.state = 4877; + this.state = 4941; localContext._variable = this.match(MySqlParser.LOCAL_ID); } break; @@ -26875,23 +27716,23 @@ export class MySqlParser extends SQLParserBase { } public executeStatement(): ExecuteStatementContext { let localContext = new ExecuteStatementContext(this.context, this.state); - this.enterRule(localContext, 412, MySqlParser.RULE_executeStatement); + this.enterRule(localContext, 418, MySqlParser.RULE_executeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4880; + this.state = 4944; this.match(MySqlParser.KW_EXECUTE); - this.state = 4881; + this.state = 4945; localContext._stmt_name = this.uid(); - this.state = 4884; + this.state = 4948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 4882; + this.state = 4946; this.match(MySqlParser.KW_USING); - this.state = 4883; + this.state = 4947; this.userVariables(); } } @@ -26914,12 +27755,12 @@ export class MySqlParser extends SQLParserBase { } public deallocatePrepare(): DeallocatePrepareContext { let localContext = new DeallocatePrepareContext(this.context, this.state); - this.enterRule(localContext, 414, MySqlParser.RULE_deallocatePrepare); + this.enterRule(localContext, 420, MySqlParser.RULE_deallocatePrepare); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4886; + this.state = 4950; localContext._dropFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 51 || _la === 362)) { @@ -26929,9 +27770,9 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4887; + this.state = 4951; this.match(MySqlParser.KW_PREPARE); - this.state = 4888; + this.state = 4952; localContext._stmt_name = this.uid(); } } @@ -26951,22 +27792,22 @@ export class MySqlParser extends SQLParserBase { } public routineBody(): RoutineBodyContext { let localContext = new RoutineBodyContext(this.context, this.state); - this.enterRule(localContext, 416, MySqlParser.RULE_routineBody); + this.enterRule(localContext, 422, MySqlParser.RULE_routineBody); try { - this.state = 4892; + this.state = 4956; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 689, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 700, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4890; + this.state = 4954; this.blockStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4891; + this.state = 4955; this.sqlStatement(); } break; @@ -26988,120 +27829,120 @@ export class MySqlParser extends SQLParserBase { } public blockStatement(): BlockStatementContext { let localContext = new BlockStatementContext(this.context, this.state); - this.enterRule(localContext, 418, MySqlParser.RULE_blockStatement); + this.enterRule(localContext, 424, MySqlParser.RULE_blockStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4897; + this.state = 4961; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 690, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 701, this.context) ) { case 1: { - this.state = 4894; + this.state = 4958; localContext._begin = this.uid(); - this.state = 4895; + this.state = 4959; this.match(MySqlParser.COLON_SYMB); } break; } - this.state = 4899; + this.state = 4963; this.match(MySqlParser.KW_BEGIN); - this.state = 4905; + this.state = 4969; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 702, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4900; + this.state = 4964; this.declareVariable(); - this.state = 4901; + this.state = 4965; this.match(MySqlParser.SEMI); } } } - this.state = 4907; + this.state = 4971; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 702, this.context); } - this.state = 4913; + this.state = 4977; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 692, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 703, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4908; + this.state = 4972; this.declareCondition(); - this.state = 4909; + this.state = 4973; this.match(MySqlParser.SEMI); } } } - this.state = 4915; + this.state = 4979; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 692, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 703, this.context); } - this.state = 4921; + this.state = 4985; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 693, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 704, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4916; + this.state = 4980; this.declareCursor(); - this.state = 4917; + this.state = 4981; this.match(MySqlParser.SEMI); } } } - this.state = 4923; + this.state = 4987; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 693, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 704, this.context); } - this.state = 4929; + this.state = 4993; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 41) { { { - this.state = 4924; + this.state = 4988; this.declareHandler(); - this.state = 4925; + this.state = 4989; this.match(MySqlParser.SEMI); } } - this.state = 4931; + this.state = 4995; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4935; + this.state = 4999; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 695, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 706, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4932; + this.state = 4996; this.procedureSqlStatement(); } } } - this.state = 4937; + this.state = 5001; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 695, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 706, this.context); } - this.state = 4938; + this.state = 5002; this.match(MySqlParser.KW_END); - this.state = 4940; + this.state = 5004; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 696, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 707, this.context) ) { case 1: { - this.state = 4939; + this.state = 5003; localContext._end = this.uid(); } break; @@ -27124,52 +27965,52 @@ export class MySqlParser extends SQLParserBase { } public caseStatement(): CaseStatementContext { let localContext = new CaseStatementContext(this.context, this.state); - this.enterRule(localContext, 420, MySqlParser.RULE_caseStatement); + this.enterRule(localContext, 426, MySqlParser.RULE_caseStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4942; + this.state = 5006; this.match(MySqlParser.KW_CASE); - this.state = 4945; + this.state = 5009; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 697, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 708, this.context) ) { case 1: { - this.state = 4943; + this.state = 5007; localContext._case_value = this.uid(); } break; case 2: { - this.state = 4944; + this.state = 5008; this.expression(0); } break; } - this.state = 4948; + this.state = 5012; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 4947; + this.state = 5011; this.caseAlternative(); } } - this.state = 4950; + this.state = 5014; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 191); - this.state = 4958; + this.state = 5022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 4952; + this.state = 5016; this.match(MySqlParser.KW_ELSE); - this.state = 4954; + this.state = 5018; this.errorHandler.sync(this); alternative = 1; do { @@ -27177,7 +28018,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4953; + this.state = 5017; this.procedureSqlStatement(); } } @@ -27185,16 +28026,16 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4956; + this.state = 5020; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 710, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } - this.state = 4960; + this.state = 5024; this.match(MySqlParser.KW_END); - this.state = 4961; + this.state = 5025; this.match(MySqlParser.KW_CASE); } } @@ -27214,19 +28055,19 @@ export class MySqlParser extends SQLParserBase { } public ifStatement(): IfStatementContext { let localContext = new IfStatementContext(this.context, this.state); - this.enterRule(localContext, 422, MySqlParser.RULE_ifStatement); + this.enterRule(localContext, 428, MySqlParser.RULE_ifStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4963; + this.state = 5027; this.match(MySqlParser.KW_IF); - this.state = 4964; + this.state = 5028; this.expression(0); - this.state = 4965; + this.state = 5029; this.match(MySqlParser.KW_THEN); - this.state = 4967; + this.state = 5031; this.errorHandler.sync(this); alternative = 1; do { @@ -27234,7 +28075,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4966; + this.state = 5030; localContext._procedureSqlStatement = this.procedureSqlStatement(); localContext._thenStatements.push(localContext._procedureSqlStatement); } @@ -27243,32 +28084,32 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4969; + this.state = 5033; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 701, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 712, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 4974; + this.state = 5038; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 54) { { { - this.state = 4971; + this.state = 5035; this.elifAlternative(); } } - this.state = 4976; + this.state = 5040; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4983; + this.state = 5047; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 4977; + this.state = 5041; this.match(MySqlParser.KW_ELSE); - this.state = 4979; + this.state = 5043; this.errorHandler.sync(this); alternative = 1; do { @@ -27276,7 +28117,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4978; + this.state = 5042; localContext._procedureSqlStatement = this.procedureSqlStatement(); localContext._elseStatements.push(localContext._procedureSqlStatement); } @@ -27285,16 +28126,16 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4981; + this.state = 5045; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 703, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 714, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } - this.state = 4985; + this.state = 5049; this.match(MySqlParser.KW_END); - this.state = 4986; + this.state = 5050; this.match(MySqlParser.KW_IF); } } @@ -27314,13 +28155,13 @@ export class MySqlParser extends SQLParserBase { } public iterateStatement(): IterateStatementContext { let localContext = new IterateStatementContext(this.context, this.state); - this.enterRule(localContext, 424, MySqlParser.RULE_iterateStatement); + this.enterRule(localContext, 430, MySqlParser.RULE_iterateStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4988; + this.state = 5052; this.match(MySqlParser.KW_ITERATE); - this.state = 4989; + this.state = 5053; localContext._label = this.uid(); } } @@ -27340,13 +28181,13 @@ export class MySqlParser extends SQLParserBase { } public leaveStatement(): LeaveStatementContext { let localContext = new LeaveStatementContext(this.context, this.state); - this.enterRule(localContext, 426, MySqlParser.RULE_leaveStatement); + this.enterRule(localContext, 432, MySqlParser.RULE_leaveStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4991; + this.state = 5055; this.match(MySqlParser.KW_LEAVE); - this.state = 4992; + this.state = 5056; localContext._label = this.uid(); } } @@ -27366,27 +28207,27 @@ export class MySqlParser extends SQLParserBase { } public loopStatement(): LoopStatementContext { let localContext = new LoopStatementContext(this.context, this.state); - this.enterRule(localContext, 428, MySqlParser.RULE_loopStatement); + this.enterRule(localContext, 434, MySqlParser.RULE_loopStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4997; + this.state = 5061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4994; + this.state = 5058; localContext._begin_label = this.uid(); - this.state = 4995; + this.state = 5059; this.match(MySqlParser.COLON_SYMB); } } - this.state = 4999; + this.state = 5063; this.match(MySqlParser.KW_LOOP); - this.state = 5001; + this.state = 5065; this.errorHandler.sync(this); alternative = 1; do { @@ -27394,7 +28235,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5000; + this.state = 5064; this.procedureSqlStatement(); } } @@ -27402,20 +28243,20 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5003; + this.state = 5067; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 706, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 717, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 5005; + this.state = 5069; this.match(MySqlParser.KW_END); - this.state = 5006; + this.state = 5070; this.match(MySqlParser.KW_LOOP); - this.state = 5008; + this.state = 5072; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5007; + this.state = 5071; localContext._end_label = this.uid(); } } @@ -27438,27 +28279,27 @@ export class MySqlParser extends SQLParserBase { } public repeatStatement(): RepeatStatementContext { let localContext = new RepeatStatementContext(this.context, this.state); - this.enterRule(localContext, 430, MySqlParser.RULE_repeatStatement); + this.enterRule(localContext, 436, MySqlParser.RULE_repeatStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5013; + this.state = 5077; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 708, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 719, this.context) ) { case 1: { - this.state = 5010; + this.state = 5074; localContext._begin_label = this.uid(); - this.state = 5011; + this.state = 5075; this.match(MySqlParser.COLON_SYMB); } break; } - this.state = 5015; + this.state = 5079; this.match(MySqlParser.KW_REPEAT); - this.state = 5017; + this.state = 5081; this.errorHandler.sync(this); alternative = 1; do { @@ -27466,7 +28307,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5016; + this.state = 5080; this.procedureSqlStatement(); } } @@ -27474,24 +28315,24 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5019; + this.state = 5083; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 709, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 720, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 5021; + this.state = 5085; this.match(MySqlParser.KW_UNTIL); - this.state = 5022; + this.state = 5086; this.expression(0); - this.state = 5023; + this.state = 5087; this.match(MySqlParser.KW_END); - this.state = 5024; + this.state = 5088; this.match(MySqlParser.KW_REPEAT); - this.state = 5026; + this.state = 5090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5025; + this.state = 5089; localContext._end_label = this.uid(); } } @@ -27514,13 +28355,13 @@ export class MySqlParser extends SQLParserBase { } public returnStatement(): ReturnStatementContext { let localContext = new ReturnStatementContext(this.context, this.state); - this.enterRule(localContext, 432, MySqlParser.RULE_returnStatement); + this.enterRule(localContext, 438, MySqlParser.RULE_returnStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 5028; + this.state = 5092; this.match(MySqlParser.KW_RETURN); - this.state = 5029; + this.state = 5093; this.expression(0); } } @@ -27540,31 +28381,31 @@ export class MySqlParser extends SQLParserBase { } public whileStatement(): WhileStatementContext { let localContext = new WhileStatementContext(this.context, this.state); - this.enterRule(localContext, 434, MySqlParser.RULE_whileStatement); + this.enterRule(localContext, 440, MySqlParser.RULE_whileStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5034; + this.state = 5098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5031; + this.state = 5095; localContext._begin_label = this.uid(); - this.state = 5032; + this.state = 5096; this.match(MySqlParser.COLON_SYMB); } } - this.state = 5036; + this.state = 5100; this.match(MySqlParser.KW_WHILE); - this.state = 5037; + this.state = 5101; this.expression(0); - this.state = 5038; + this.state = 5102; this.match(MySqlParser.KW_DO); - this.state = 5040; + this.state = 5104; this.errorHandler.sync(this); alternative = 1; do { @@ -27572,7 +28413,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5039; + this.state = 5103; this.procedureSqlStatement(); } } @@ -27580,20 +28421,20 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5042; + this.state = 5106; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 712, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 723, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 5044; + this.state = 5108; this.match(MySqlParser.KW_END); - this.state = 5045; + this.state = 5109; this.match(MySqlParser.KW_WHILE); - this.state = 5047; + this.state = 5111; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5046; + this.state = 5110; localContext._end_label = this.uid(); } } @@ -27616,19 +28457,19 @@ export class MySqlParser extends SQLParserBase { } public cursorStatement(): CursorStatementContext { let localContext = new CursorStatementContext(this.context, this.state); - this.enterRule(localContext, 436, MySqlParser.RULE_cursorStatement); + this.enterRule(localContext, 442, MySqlParser.RULE_cursorStatement); let _la: number; try { - this.state = 5064; + this.state = 5128; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CLOSE: localContext = new CloseCursorContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5049; + this.state = 5113; this.match(MySqlParser.KW_CLOSE); - this.state = 5050; + this.state = 5114; (localContext as CloseCursorContext)._cursor_name = this.uid(); } break; @@ -27636,33 +28477,33 @@ export class MySqlParser extends SQLParserBase { localContext = new FetchCursorContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5051; + this.state = 5115; this.match(MySqlParser.KW_FETCH); - this.state = 5056; + this.state = 5120; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 715, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 726, this.context) ) { case 1: { - this.state = 5053; + this.state = 5117; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 501) { { - this.state = 5052; + this.state = 5116; this.match(MySqlParser.KW_NEXT); } } - this.state = 5055; + this.state = 5119; this.match(MySqlParser.KW_FROM); } break; } - this.state = 5058; + this.state = 5122; (localContext as FetchCursorContext)._cursor_name = this.uid(); - this.state = 5059; + this.state = 5123; this.match(MySqlParser.KW_INTO); - this.state = 5060; + this.state = 5124; (localContext as FetchCursorContext)._var_names = this.uidList(); } break; @@ -27670,9 +28511,9 @@ export class MySqlParser extends SQLParserBase { localContext = new OpenCursorContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5062; + this.state = 5126; this.match(MySqlParser.KW_OPEN); - this.state = 5063; + this.state = 5127; (localContext as OpenCursorContext)._cursor_name = this.uid(); } break; @@ -27696,25 +28537,25 @@ export class MySqlParser extends SQLParserBase { } public declareVariable(): DeclareVariableContext { let localContext = new DeclareVariableContext(this.context, this.state); - this.enterRule(localContext, 438, MySqlParser.RULE_declareVariable); + this.enterRule(localContext, 444, MySqlParser.RULE_declareVariable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5066; + this.state = 5130; this.match(MySqlParser.KW_DECLARE); - this.state = 5067; + this.state = 5131; localContext._var_names = this.uidList(); - this.state = 5068; + this.state = 5132; this.dataType(); - this.state = 5071; + this.state = 5135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 5069; + this.state = 5133; this.match(MySqlParser.KW_DEFAULT); - this.state = 5070; + this.state = 5134; this.expression(0); } } @@ -27737,20 +28578,20 @@ export class MySqlParser extends SQLParserBase { } public declareCondition(): DeclareConditionContext { let localContext = new DeclareConditionContext(this.context, this.state); - this.enterRule(localContext, 440, MySqlParser.RULE_declareCondition); + this.enterRule(localContext, 446, MySqlParser.RULE_declareCondition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5073; + this.state = 5137; this.match(MySqlParser.KW_DECLARE); - this.state = 5074; + this.state = 5138; localContext._condition_name = this.uid(); - this.state = 5075; + this.state = 5139; this.match(MySqlParser.KW_CONDITION); - this.state = 5076; + this.state = 5140; this.match(MySqlParser.KW_FOR); - this.state = 5083; + this.state = 5147; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -27760,25 +28601,25 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5077; + this.state = 5141; this.decimalLiteral(); } break; case MySqlParser.KW_SQLSTATE: { - this.state = 5078; + this.state = 5142; this.match(MySqlParser.KW_SQLSTATE); - this.state = 5080; + this.state = 5144; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 5079; + this.state = 5143; this.match(MySqlParser.KW_VALUE); } } - this.state = 5082; + this.state = 5146; this.match(MySqlParser.STRING_LITERAL); } break; @@ -27803,19 +28644,19 @@ export class MySqlParser extends SQLParserBase { } public declareCursor(): DeclareCursorContext { let localContext = new DeclareCursorContext(this.context, this.state); - this.enterRule(localContext, 442, MySqlParser.RULE_declareCursor); + this.enterRule(localContext, 448, MySqlParser.RULE_declareCursor); try { this.enterOuterAlt(localContext, 1); { - this.state = 5085; + this.state = 5149; this.match(MySqlParser.KW_DECLARE); - this.state = 5086; + this.state = 5150; localContext._condition_name = this.uid(); - this.state = 5087; + this.state = 5151; this.match(MySqlParser.KW_CURSOR); - this.state = 5088; + this.state = 5152; this.match(MySqlParser.KW_FOR); - this.state = 5089; + this.state = 5153; this.selectStatement(); } } @@ -27835,14 +28676,14 @@ export class MySqlParser extends SQLParserBase { } public declareHandler(): DeclareHandlerContext { let localContext = new DeclareHandlerContext(this.context, this.state); - this.enterRule(localContext, 444, MySqlParser.RULE_declareHandler); + this.enterRule(localContext, 450, MySqlParser.RULE_declareHandler); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5091; + this.state = 5155; this.match(MySqlParser.KW_DECLARE); - this.state = 5092; + this.state = 5156; localContext._handlerAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 32 || _la === 61 || _la === 180)) { @@ -27852,29 +28693,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5093; + this.state = 5157; this.match(MySqlParser.KW_HANDLER); - this.state = 5094; + this.state = 5158; this.match(MySqlParser.KW_FOR); - this.state = 5095; + this.state = 5159; this.handlerConditionValue(); - this.state = 5100; + this.state = 5164; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5096; + this.state = 5160; this.match(MySqlParser.COMMA); - this.state = 5097; + this.state = 5161; this.handlerConditionValue(); } } - this.state = 5102; + this.state = 5166; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5103; + this.state = 5167; this.routineBody(); } } @@ -27894,10 +28735,10 @@ export class MySqlParser extends SQLParserBase { } public handlerConditionValue(): HandlerConditionValueContext { let localContext = new HandlerConditionValueContext(this.context, this.state); - this.enterRule(localContext, 446, MySqlParser.RULE_handlerConditionValue); + this.enterRule(localContext, 452, MySqlParser.RULE_handlerConditionValue); let _la: number; try { - this.state = 5116; + this.state = 5180; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -27909,7 +28750,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionCodeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5105; + this.state = 5169; this.decimalLiteral(); } break; @@ -27917,19 +28758,19 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionStateContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5106; + this.state = 5170; this.match(MySqlParser.KW_SQLSTATE); - this.state = 5108; + this.state = 5172; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 5107; + this.state = 5171; this.match(MySqlParser.KW_VALUE); } } - this.state = 5110; + this.state = 5174; this.match(MySqlParser.STRING_LITERAL); } break; @@ -28263,6 +29104,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -28484,7 +29326,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionNameContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5111; + this.state = 5175; (localContext as HandlerConditionNameContext)._condition_name = this.uid(); } break; @@ -28492,7 +29334,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionWarningContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 5112; + this.state = 5176; this.match(MySqlParser.KW_SQLWARNING); } break; @@ -28500,9 +29342,9 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionNotfoundContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 5113; + this.state = 5177; this.match(MySqlParser.KW_NOT); - this.state = 5114; + this.state = 5178; this.match(MySqlParser.KW_FOUND); } break; @@ -28510,7 +29352,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionExceptionContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 5115; + this.state = 5179; this.match(MySqlParser.KW_SQLEXCEPTION); } break; @@ -28534,27 +29376,27 @@ export class MySqlParser extends SQLParserBase { } public procedureSqlStatement(): ProcedureSqlStatementContext { let localContext = new ProcedureSqlStatementContext(this.context, this.state); - this.enterRule(localContext, 448, MySqlParser.RULE_procedureSqlStatement); + this.enterRule(localContext, 454, MySqlParser.RULE_procedureSqlStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 5120; + this.state = 5184; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 723, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 734, this.context) ) { case 1: { - this.state = 5118; + this.state = 5182; this.compoundStatement(); } break; case 2: { - this.state = 5119; + this.state = 5183; this.sqlStatement(); } break; } - this.state = 5122; + this.state = 5186; this.match(MySqlParser.SEMI); } } @@ -28574,32 +29416,32 @@ export class MySqlParser extends SQLParserBase { } public caseAlternative(): CaseAlternativeContext { let localContext = new CaseAlternativeContext(this.context, this.state); - this.enterRule(localContext, 450, MySqlParser.RULE_caseAlternative); + this.enterRule(localContext, 456, MySqlParser.RULE_caseAlternative); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5124; + this.state = 5188; this.match(MySqlParser.KW_WHEN); - this.state = 5127; + this.state = 5191; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 724, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 735, this.context) ) { case 1: { - this.state = 5125; + this.state = 5189; this.constant(); } break; case 2: { - this.state = 5126; + this.state = 5190; this.expression(0); } break; } - this.state = 5129; + this.state = 5193; this.match(MySqlParser.KW_THEN); - this.state = 5131; + this.state = 5195; this.errorHandler.sync(this); alternative = 1; do { @@ -28607,7 +29449,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5130; + this.state = 5194; this.procedureSqlStatement(); } } @@ -28615,9 +29457,9 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5133; + this.state = 5197; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 725, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 736, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -28637,18 +29479,18 @@ export class MySqlParser extends SQLParserBase { } public elifAlternative(): ElifAlternativeContext { let localContext = new ElifAlternativeContext(this.context, this.state); - this.enterRule(localContext, 452, MySqlParser.RULE_elifAlternative); + this.enterRule(localContext, 458, MySqlParser.RULE_elifAlternative); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5135; + this.state = 5199; this.match(MySqlParser.KW_ELSEIF); - this.state = 5136; + this.state = 5200; this.expression(0); - this.state = 5137; + this.state = 5201; this.match(MySqlParser.KW_THEN); - this.state = 5139; + this.state = 5203; this.errorHandler.sync(this); alternative = 1; do { @@ -28656,7 +29498,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5138; + this.state = 5202; this.procedureSqlStatement(); } } @@ -28664,9 +29506,9 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5141; + this.state = 5205; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 726, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 737, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -28686,46 +29528,46 @@ export class MySqlParser extends SQLParserBase { } public alterUser(): AlterUserContext { let localContext = new AlterUserContext(this.context, this.state); - this.enterRule(localContext, 454, MySqlParser.RULE_alterUser); + this.enterRule(localContext, 460, MySqlParser.RULE_alterUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5143; + this.state = 5207; this.match(MySqlParser.KW_ALTER); - this.state = 5144; + this.state = 5208; this.match(MySqlParser.KW_USER); - this.state = 5146; + this.state = 5210; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 727, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 738, this.context) ) { case 1: { - this.state = 5145; + this.state = 5209; this.ifExists(); } break; } - this.state = 5204; + this.state = 5268; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 739, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 750, this.context) ) { case 1: { { - this.state = 5148; + this.state = 5212; this.userSpecification(); - this.state = 5153; + this.state = 5217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5149; + this.state = 5213; this.match(MySqlParser.COMMA); - this.state = 5150; + this.state = 5214; this.userSpecification(); } } - this.state = 5155; + this.state = 5219; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -28735,37 +29577,37 @@ export class MySqlParser extends SQLParserBase { case 2: { { - this.state = 5156; + this.state = 5220; this.alterUserAuthOption(); - this.state = 5161; + this.state = 5225; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5157; + this.state = 5221; this.match(MySqlParser.COMMA); - this.state = 5158; + this.state = 5222; this.alterUserAuthOption(); } } - this.state = 5163; + this.state = 5227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5178; + this.state = 5242; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 5164; + this.state = 5228; this.match(MySqlParser.KW_REQUIRE); - this.state = 5176; + this.state = 5240; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NONE: { - this.state = 5165; + this.state = 5229; this.match(MySqlParser.KW_NONE); } break; @@ -28775,29 +29617,29 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUBJECT: case MySqlParser.KW_X509: { - this.state = 5166; + this.state = 5230; this.tlsOption(); - this.state = 5173; + this.state = 5237; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11 || _la === 169 || _la === 331 || _la === 441 || _la === 651 || _la === 693) { { { - this.state = 5168; + this.state = 5232; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5167; + this.state = 5231; this.match(MySqlParser.KW_AND); } } - this.state = 5170; + this.state = 5234; this.tlsOption(); } } - this.state = 5175; + this.state = 5239; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -28809,49 +29651,49 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 5186; + this.state = 5250; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 735, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 746, this.context) ) { case 1: { - this.state = 5180; + this.state = 5244; this.match(MySqlParser.KW_WITH); - this.state = 5182; + this.state = 5246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 5181; + this.state = 5245; this.userResourceOption(); } } - this.state = 5184; + this.state = 5248; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 51) !== 0)); } break; } - this.state = 5192; + this.state = 5256; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 304 || _la === 395 || _la === 529 || _la === 530) { { - this.state = 5190; + this.state = 5254; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS: case MySqlParser.KW_PASSWORD: case MySqlParser.KW_PASSWORD_LOCK_TIME: { - this.state = 5188; + this.state = 5252; this.userPasswordOption(); } break; case MySqlParser.KW_ACCOUNT: { - this.state = 5189; + this.state = 5253; this.userLockOption(); } break; @@ -28859,16 +29701,16 @@ export class MySqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 5194; + this.state = 5258; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5197; + this.state = 5261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 15 || _la === 340) { { - this.state = 5195; + this.state = 5259; _la = this.tokenStream.LA(1); if(!(_la === 15 || _la === 340)) { this.errorHandler.recoverInline(this); @@ -28877,7 +29719,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5196; + this.state = 5260; this.match(MySqlParser.STRING_LITERAL); } } @@ -28889,14 +29731,14 @@ export class MySqlParser extends SQLParserBase { { { { - this.state = 5199; + this.state = 5263; this.userOrRoleName(); } - this.state = 5200; + this.state = 5264; this.match(MySqlParser.KW_DEFAULT); - this.state = 5201; + this.state = 5265; this.match(MySqlParser.KW_ROLE); - this.state = 5202; + this.state = 5266; this.roleOption(); } } @@ -28920,90 +29762,90 @@ export class MySqlParser extends SQLParserBase { } public createUser(): CreateUserContext { let localContext = new CreateUserContext(this.context, this.state); - this.enterRule(localContext, 456, MySqlParser.RULE_createUser); + this.enterRule(localContext, 462, MySqlParser.RULE_createUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5206; + this.state = 5270; this.match(MySqlParser.KW_CREATE); - this.state = 5207; + this.state = 5271; this.match(MySqlParser.KW_USER); - this.state = 5209; + this.state = 5273; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5208; + this.state = 5272; this.ifNotExists(); } } - this.state = 5211; + this.state = 5275; this.userName(); - this.state = 5213; + this.state = 5277; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 5212; + this.state = 5276; this.createUserAuthOption(); } } - this.state = 5222; + this.state = 5286; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5215; + this.state = 5279; this.match(MySqlParser.COMMA); - this.state = 5216; + this.state = 5280; this.userName(); - this.state = 5218; + this.state = 5282; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 5217; + this.state = 5281; this.createUserAuthOption(); } } } } - this.state = 5224; + this.state = 5288; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5228; + this.state = 5292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 5225; + this.state = 5289; this.match(MySqlParser.KW_DEFAULT); - this.state = 5226; + this.state = 5290; this.match(MySqlParser.KW_ROLE); - this.state = 5227; + this.state = 5291; this.roleOption(); } } - this.state = 5244; + this.state = 5308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 5230; + this.state = 5294; this.match(MySqlParser.KW_REQUIRE); - this.state = 5242; + this.state = 5306; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NONE: { - this.state = 5231; + this.state = 5295; this.match(MySqlParser.KW_NONE); } break; @@ -29013,29 +29855,29 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUBJECT: case MySqlParser.KW_X509: { - this.state = 5232; + this.state = 5296; this.tlsOption(); - this.state = 5239; + this.state = 5303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11 || _la === 169 || _la === 331 || _la === 441 || _la === 651 || _la === 693) { { { - this.state = 5234; + this.state = 5298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5233; + this.state = 5297; this.match(MySqlParser.KW_AND); } } - this.state = 5236; + this.state = 5300; this.tlsOption(); } } - this.state = 5241; + this.state = 5305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29047,49 +29889,49 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 5252; + this.state = 5316; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 750, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 761, this.context) ) { case 1: { - this.state = 5246; + this.state = 5310; this.match(MySqlParser.KW_WITH); - this.state = 5248; + this.state = 5312; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 5247; + this.state = 5311; this.userResourceOption(); } } - this.state = 5250; + this.state = 5314; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 51) !== 0)); } break; } - this.state = 5258; + this.state = 5322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 304 || _la === 395 || _la === 529 || _la === 530) { { - this.state = 5256; + this.state = 5320; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS: case MySqlParser.KW_PASSWORD: case MySqlParser.KW_PASSWORD_LOCK_TIME: { - this.state = 5254; + this.state = 5318; this.userPasswordOption(); } break; case MySqlParser.KW_ACCOUNT: { - this.state = 5255; + this.state = 5319; this.userLockOption(); } break; @@ -29097,16 +29939,16 @@ export class MySqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 5260; + this.state = 5324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5263; + this.state = 5327; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 15 || _la === 340) { { - this.state = 5261; + this.state = 5325; _la = this.tokenStream.LA(1); if(!(_la === 15 || _la === 340)) { this.errorHandler.recoverInline(this); @@ -29115,7 +29957,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5262; + this.state = 5326; this.match(MySqlParser.STRING_LITERAL); } } @@ -29138,40 +29980,40 @@ export class MySqlParser extends SQLParserBase { } public dropUser(): DropUserContext { let localContext = new DropUserContext(this.context, this.state); - this.enterRule(localContext, 458, MySqlParser.RULE_dropUser); + this.enterRule(localContext, 464, MySqlParser.RULE_dropUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5265; + this.state = 5329; this.match(MySqlParser.KW_DROP); - this.state = 5266; + this.state = 5330; this.match(MySqlParser.KW_USER); - this.state = 5268; + this.state = 5332; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5267; + this.state = 5331; this.ifExists(); } } - this.state = 5270; + this.state = 5334; this.userName(); - this.state = 5275; + this.state = 5339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5271; + this.state = 5335; this.match(MySqlParser.COMMA); - this.state = 5272; + this.state = 5336; this.userName(); } } - this.state = 5277; + this.state = 5341; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29193,73 +30035,73 @@ export class MySqlParser extends SQLParserBase { } public grantStatement(): GrantStatementContext { let localContext = new GrantStatementContext(this.context, this.state); - this.enterRule(localContext, 460, MySqlParser.RULE_grantStatement); + this.enterRule(localContext, 466, MySqlParser.RULE_grantStatement); let _la: number; try { let alternative: number; - this.state = 5367; + this.state = 5431; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 773, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 784, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5278; + this.state = 5342; this.match(MySqlParser.KW_GRANT); - this.state = 5279; + this.state = 5343; this.privelegeClause(); - this.state = 5284; + this.state = 5348; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5280; + this.state = 5344; this.match(MySqlParser.COMMA); - this.state = 5281; + this.state = 5345; this.privelegeClause(); } } - this.state = 5286; + this.state = 5350; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5287; + this.state = 5351; this.match(MySqlParser.KW_ON); - this.state = 5289; + this.state = 5353; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 757, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 768, this.context) ) { case 1: { - this.state = 5288; + this.state = 5352; this.privilegeObjectType(); } break; } - this.state = 5291; + this.state = 5355; this.privilegeLevel(); - this.state = 5292; + this.state = 5356; this.match(MySqlParser.KW_TO); - this.state = 5302; + this.state = 5366; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 759, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 770, this.context) ) { case 1: { { - this.state = 5293; + this.state = 5357; this.userAuthOption(); - this.state = 5298; + this.state = 5362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5294; + this.state = 5358; this.match(MySqlParser.COMMA); - this.state = 5295; + this.state = 5359; this.userAuthOption(); } } - this.state = 5300; + this.state = 5364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29268,24 +30110,24 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 5301; + this.state = 5365; this.userOrRoleNames(); } break; } - this.state = 5318; + this.state = 5382; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 5304; + this.state = 5368; this.match(MySqlParser.KW_REQUIRE); - this.state = 5316; + this.state = 5380; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NONE: { - this.state = 5305; + this.state = 5369; localContext._tlsNone = this.match(MySqlParser.KW_NONE); } break; @@ -29295,29 +30137,29 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUBJECT: case MySqlParser.KW_X509: { - this.state = 5306; + this.state = 5370; this.tlsOption(); - this.state = 5313; + this.state = 5377; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11 || _la === 169 || _la === 331 || _la === 441 || _la === 651 || _la === 693) { { { - this.state = 5308; + this.state = 5372; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5307; + this.state = 5371; this.match(MySqlParser.KW_AND); } } - this.state = 5310; + this.state = 5374; this.tlsOption(); } } - this.state = 5315; + this.state = 5379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29329,27 +30171,27 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 5329; + this.state = 5393; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 766, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { case 1: { - this.state = 5320; + this.state = 5384; this.match(MySqlParser.KW_WITH); - this.state = 5326; + this.state = 5390; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 765, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 776, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 5324; + this.state = 5388; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_GRANT: { - this.state = 5321; + this.state = 5385; this.match(MySqlParser.KW_GRANT); - this.state = 5322; + this.state = 5386; this.match(MySqlParser.KW_OPTION); } break; @@ -29358,7 +30200,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_MAX_UPDATES_PER_HOUR: case MySqlParser.KW_MAX_USER_CONNECTIONS: { - this.state = 5323; + this.state = 5387; this.userResourceOption(); } break; @@ -29367,32 +30209,32 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 5328; + this.state = 5392; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 765, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 776, this.context); } } break; } - this.state = 5338; + this.state = 5402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 5331; + this.state = 5395; this.match(MySqlParser.KW_AS); - this.state = 5332; + this.state = 5396; this.userName(); - this.state = 5336; + this.state = 5400; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 767, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 778, this.context) ) { case 1: { - this.state = 5333; + this.state = 5397; this.match(MySqlParser.KW_WITH); - this.state = 5334; + this.state = 5398; this.match(MySqlParser.KW_ROLE); - this.state = 5335; + this.state = 5399; this.roleOption(); } break; @@ -29405,76 +30247,76 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5340; + this.state = 5404; this.match(MySqlParser.KW_GRANT); - this.state = 5343; + this.state = 5407; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 769, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 780, this.context) ) { case 1: { - this.state = 5341; + this.state = 5405; this.match(MySqlParser.KW_PROXY); - this.state = 5342; + this.state = 5406; this.match(MySqlParser.KW_ON); } break; } { - this.state = 5345; + this.state = 5409; this.userOrRoleName(); } - this.state = 5350; + this.state = 5414; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5346; + this.state = 5410; this.match(MySqlParser.COMMA); { - this.state = 5347; + this.state = 5411; this.userOrRoleName(); } } } - this.state = 5352; + this.state = 5416; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5353; + this.state = 5417; this.match(MySqlParser.KW_TO); { - this.state = 5354; + this.state = 5418; this.userOrRoleName(); } - this.state = 5359; + this.state = 5423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5355; + this.state = 5419; this.match(MySqlParser.COMMA); { - this.state = 5356; + this.state = 5420; this.userOrRoleName(); } } } - this.state = 5361; + this.state = 5425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5365; + this.state = 5429; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 772, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 783, this.context) ) { case 1: { - this.state = 5362; + this.state = 5426; this.match(MySqlParser.KW_WITH); - this.state = 5363; + this.state = 5427; this.match(MySqlParser.KW_ADMIN); - this.state = 5364; + this.state = 5428; this.match(MySqlParser.KW_OPTION); } break; @@ -29499,39 +30341,39 @@ export class MySqlParser extends SQLParserBase { } public roleOption(): RoleOptionContext { let localContext = new RoleOptionContext(this.context, this.state); - this.enterRule(localContext, 462, MySqlParser.RULE_roleOption); + this.enterRule(localContext, 468, MySqlParser.RULE_roleOption); let _la: number; try { - this.state = 5377; + this.state = 5441; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 775, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 786, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5369; + this.state = 5433; this.match(MySqlParser.KW_DEFAULT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5370; + this.state = 5434; this.match(MySqlParser.KW_NONE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5371; + this.state = 5435; this.match(MySqlParser.KW_ALL); - this.state = 5374; + this.state = 5438; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 5372; + this.state = 5436; this.match(MySqlParser.KW_EXCEPT); - this.state = 5373; + this.state = 5437; this.userOrRoleNames(); } } @@ -29541,7 +30383,7 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5376; + this.state = 5440; this.userOrRoleNames(); } break; @@ -29563,50 +30405,50 @@ export class MySqlParser extends SQLParserBase { } public grantProxy(): GrantProxyContext { let localContext = new GrantProxyContext(this.context, this.state); - this.enterRule(localContext, 464, MySqlParser.RULE_grantProxy); + this.enterRule(localContext, 470, MySqlParser.RULE_grantProxy); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5379; + this.state = 5443; this.match(MySqlParser.KW_GRANT); - this.state = 5380; + this.state = 5444; this.match(MySqlParser.KW_PROXY); - this.state = 5381; + this.state = 5445; this.match(MySqlParser.KW_ON); - this.state = 5382; + this.state = 5446; localContext._fromFirst = this.userName(); - this.state = 5383; + this.state = 5447; this.match(MySqlParser.KW_TO); - this.state = 5384; + this.state = 5448; localContext._toFirst = this.userName(); - this.state = 5389; + this.state = 5453; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5385; + this.state = 5449; this.match(MySqlParser.COMMA); - this.state = 5386; + this.state = 5450; localContext._userName = this.userName(); localContext._toOther.push(localContext._userName); } } - this.state = 5391; + this.state = 5455; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5395; + this.state = 5459; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 788, this.context) ) { case 1: { - this.state = 5392; + this.state = 5456; this.match(MySqlParser.KW_WITH); - this.state = 5393; + this.state = 5457; this.match(MySqlParser.KW_GRANT); - this.state = 5394; + this.state = 5458; this.match(MySqlParser.KW_OPTION); } break; @@ -29629,69 +30471,69 @@ export class MySqlParser extends SQLParserBase { } public alterResourceGroup(): AlterResourceGroupContext { let localContext = new AlterResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 466, MySqlParser.RULE_alterResourceGroup); + this.enterRule(localContext, 472, MySqlParser.RULE_alterResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5397; + this.state = 5461; this.match(MySqlParser.KW_ALTER); - this.state = 5398; + this.state = 5462; this.match(MySqlParser.KW_RESOURCE); - this.state = 5399; + this.state = 5463; this.match(MySqlParser.KW_GROUP); - this.state = 5400; + this.state = 5464; this.groupName(); - this.state = 5406; + this.state = 5470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 190) { { - this.state = 5401; + this.state = 5465; this.match(MySqlParser.KW_VCPU); - this.state = 5403; + this.state = 5467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5402; + this.state = 5466; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5405; + this.state = 5469; this.resourceGroupVcpuSpec(); } } - this.state = 5413; + this.state = 5477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 837) { { - this.state = 5408; + this.state = 5472; this.match(MySqlParser.KW_THREAD_PRIORITY); - this.state = 5410; + this.state = 5474; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5409; + this.state = 5473; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5412; + this.state = 5476; this.decimalLiteral(); } } - this.state = 5419; + this.state = 5483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 5415; + this.state = 5479; _la = this.tokenStream.LA(1); if(!(_la === 368 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -29700,12 +30542,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5417; + this.state = 5481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 5416; + this.state = 5480; this.match(MySqlParser.KW_FORCE); } } @@ -29731,24 +30573,24 @@ export class MySqlParser extends SQLParserBase { } public createResourceGroup(): CreateResourceGroupContext { let localContext = new CreateResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 468, MySqlParser.RULE_createResourceGroup); + this.enterRule(localContext, 474, MySqlParser.RULE_createResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5421; + this.state = 5485; this.match(MySqlParser.KW_CREATE); - this.state = 5422; + this.state = 5486; this.match(MySqlParser.KW_RESOURCE); - this.state = 5423; + this.state = 5487; this.match(MySqlParser.KW_GROUP); - this.state = 5424; + this.state = 5488; this.groupNameCreate(); - this.state = 5425; + this.state = 5489; this.match(MySqlParser.KW_TYPE); - this.state = 5426; + this.state = 5490; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 5427; + this.state = 5491; _la = this.tokenStream.LA(1); if(!(_la === 678 || _la === 835)) { this.errorHandler.recoverInline(this); @@ -29757,56 +30599,56 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5433; + this.state = 5497; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 190) { { - this.state = 5428; + this.state = 5492; this.match(MySqlParser.KW_VCPU); - this.state = 5430; + this.state = 5494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5429; + this.state = 5493; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5432; + this.state = 5496; this.resourceGroupVcpuSpec(); } } - this.state = 5440; + this.state = 5504; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 837) { { - this.state = 5435; + this.state = 5499; this.match(MySqlParser.KW_THREAD_PRIORITY); - this.state = 5437; + this.state = 5501; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5436; + this.state = 5500; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5439; + this.state = 5503; this.decimalLiteral(); } } - this.state = 5443; + this.state = 5507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 5442; + this.state = 5506; _la = this.tokenStream.LA(1); if(!(_la === 368 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -29836,25 +30678,25 @@ export class MySqlParser extends SQLParserBase { } public dropResourceGroup(): DropResourceGroupContext { let localContext = new DropResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 470, MySqlParser.RULE_dropResourceGroup); + this.enterRule(localContext, 476, MySqlParser.RULE_dropResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5445; + this.state = 5509; this.match(MySqlParser.KW_DROP); - this.state = 5446; + this.state = 5510; this.match(MySqlParser.KW_RESOURCE); - this.state = 5447; + this.state = 5511; this.match(MySqlParser.KW_GROUP); - this.state = 5448; + this.state = 5512; this.groupName(); - this.state = 5450; + this.state = 5514; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 5449; + this.state = 5513; this.match(MySqlParser.KW_FORCE); } } @@ -29877,41 +30719,41 @@ export class MySqlParser extends SQLParserBase { } public setResourceGroup(): SetResourceGroupContext { let localContext = new SetResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 472, MySqlParser.RULE_setResourceGroup); + this.enterRule(localContext, 478, MySqlParser.RULE_setResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5452; + this.state = 5516; this.match(MySqlParser.KW_SET); - this.state = 5453; + this.state = 5517; this.match(MySqlParser.KW_RESOURCE); - this.state = 5454; + this.state = 5518; this.match(MySqlParser.KW_GROUP); - this.state = 5455; + this.state = 5519; this.groupName(); - this.state = 5465; + this.state = 5529; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 5456; + this.state = 5520; this.match(MySqlParser.KW_FOR); - this.state = 5457; + this.state = 5521; this.decimalLiteral(); - this.state = 5462; + this.state = 5526; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5458; + this.state = 5522; this.match(MySqlParser.COMMA); - this.state = 5459; + this.state = 5523; this.decimalLiteral(); } } - this.state = 5464; + this.state = 5528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29936,48 +30778,48 @@ export class MySqlParser extends SQLParserBase { } public resourceGroupVcpuSpec(): ResourceGroupVcpuSpecContext { let localContext = new ResourceGroupVcpuSpecContext(this.context, this.state); - this.enterRule(localContext, 474, MySqlParser.RULE_resourceGroupVcpuSpec); + this.enterRule(localContext, 480, MySqlParser.RULE_resourceGroupVcpuSpec); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5472; + this.state = 5536; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 792, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 803, this.context) ) { case 1: { - this.state = 5467; + this.state = 5531; this.decimalLiteral(); } break; case 2: { - this.state = 5468; + this.state = 5532; this.decimalLiteral(); - this.state = 5469; + this.state = 5533; this.match(MySqlParser.MINUS); - this.state = 5470; + this.state = 5534; this.decimalLiteral(); } break; } - this.state = 5478; + this.state = 5542; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 793, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 804, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 5474; + this.state = 5538; this.match(MySqlParser.COMMA); - this.state = 5475; + this.state = 5539; this.resourceGroupVcpuSpec(); } } } - this.state = 5480; + this.state = 5544; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 793, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 804, this.context); } } } @@ -29997,30 +30839,30 @@ export class MySqlParser extends SQLParserBase { } public renameUser(): RenameUserContext { let localContext = new RenameUserContext(this.context, this.state); - this.enterRule(localContext, 476, MySqlParser.RULE_renameUser); + this.enterRule(localContext, 482, MySqlParser.RULE_renameUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5481; + this.state = 5545; this.match(MySqlParser.KW_RENAME); - this.state = 5482; + this.state = 5546; this.match(MySqlParser.KW_USER); - this.state = 5483; + this.state = 5547; this.renameUserClause(); - this.state = 5488; + this.state = 5552; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5484; + this.state = 5548; this.match(MySqlParser.COMMA); - this.state = 5485; + this.state = 5549; this.renameUserClause(); } } - this.state = 5490; + this.state = 5554; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -30042,70 +30884,70 @@ export class MySqlParser extends SQLParserBase { } public revokeStatement(): RevokeStatementContext { let localContext = new RevokeStatementContext(this.context, this.state); - this.enterRule(localContext, 478, MySqlParser.RULE_revokeStatement); + this.enterRule(localContext, 484, MySqlParser.RULE_revokeStatement); let _la: number; try { - this.state = 5543; + this.state = 5607; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 805, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 816, this.context) ) { case 1: localContext = new DetailRevokeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5491; + this.state = 5555; this.match(MySqlParser.KW_REVOKE); - this.state = 5493; + this.state = 5557; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5492; + this.state = 5556; this.ifExists(); } } - this.state = 5495; + this.state = 5559; this.privelegeClause(); - this.state = 5500; + this.state = 5564; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5496; + this.state = 5560; this.match(MySqlParser.COMMA); - this.state = 5497; + this.state = 5561; this.privelegeClause(); } } - this.state = 5502; + this.state = 5566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5503; + this.state = 5567; this.match(MySqlParser.KW_ON); - this.state = 5505; + this.state = 5569; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 797, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 808, this.context) ) { case 1: { - this.state = 5504; + this.state = 5568; this.privilegeObjectType(); } break; } - this.state = 5507; + this.state = 5571; this.privilegeLevel(); - this.state = 5508; + this.state = 5572; this.match(MySqlParser.KW_FROM); - this.state = 5509; + this.state = 5573; this.userOrRoleNames(); - this.state = 5511; + this.state = 5575; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 5510; + this.state = 5574; this.ignoreUnknownUser(); } } @@ -30116,46 +30958,46 @@ export class MySqlParser extends SQLParserBase { localContext = new ShortRevokeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5513; + this.state = 5577; this.match(MySqlParser.KW_REVOKE); - this.state = 5515; + this.state = 5579; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5514; + this.state = 5578; this.ifExists(); } } - this.state = 5517; + this.state = 5581; this.match(MySqlParser.KW_ALL); - this.state = 5519; + this.state = 5583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 734) { { - this.state = 5518; + this.state = 5582; this.match(MySqlParser.KW_PRIVILEGES); } } - this.state = 5521; + this.state = 5585; this.match(MySqlParser.COMMA); - this.state = 5522; + this.state = 5586; this.match(MySqlParser.KW_GRANT); - this.state = 5523; + this.state = 5587; this.match(MySqlParser.KW_OPTION); - this.state = 5524; + this.state = 5588; this.match(MySqlParser.KW_FROM); - this.state = 5525; + this.state = 5589; this.userOrRoleNames(); - this.state = 5527; + this.state = 5591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 5526; + this.state = 5590; this.ignoreUnknownUser(); } } @@ -30166,42 +31008,42 @@ export class MySqlParser extends SQLParserBase { localContext = new ProxyAndRoleRevokeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5529; + this.state = 5593; this.match(MySqlParser.KW_REVOKE); - this.state = 5531; + this.state = 5595; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 802, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 813, this.context) ) { case 1: { - this.state = 5530; + this.state = 5594; this.ifExists(); } break; } - this.state = 5535; + this.state = 5599; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 803, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 814, this.context) ) { case 1: { - this.state = 5533; + this.state = 5597; this.match(MySqlParser.KW_PROXY); - this.state = 5534; + this.state = 5598; this.match(MySqlParser.KW_ON); } break; } - this.state = 5537; + this.state = 5601; this.userOrRoleNames(); - this.state = 5538; + this.state = 5602; this.match(MySqlParser.KW_FROM); - this.state = 5539; + this.state = 5603; this.userOrRoleNames(); - this.state = 5541; + this.state = 5605; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 5540; + this.state = 5604; this.ignoreUnknownUser(); } } @@ -30226,15 +31068,15 @@ export class MySqlParser extends SQLParserBase { } public ignoreUnknownUser(): IgnoreUnknownUserContext { let localContext = new IgnoreUnknownUserContext(this.context, this.state); - this.enterRule(localContext, 480, MySqlParser.RULE_ignoreUnknownUser); + this.enterRule(localContext, 486, MySqlParser.RULE_ignoreUnknownUser); try { this.enterOuterAlt(localContext, 1); { - this.state = 5545; + this.state = 5609; this.match(MySqlParser.KW_IGNORE); - this.state = 5546; + this.state = 5610; this.match(MySqlParser.KW_UNKNOWN); - this.state = 5547; + this.state = 5611; this.match(MySqlParser.KW_USER); } } @@ -30254,12 +31096,12 @@ export class MySqlParser extends SQLParserBase { } public privilegeObjectType(): PrivilegeObjectTypeContext { let localContext = new PrivilegeObjectTypeContext(this.context, this.state); - this.enterRule(localContext, 482, MySqlParser.RULE_privilegeObjectType); + this.enterRule(localContext, 488, MySqlParser.RULE_privilegeObjectType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5549; + this.state = 5613; _la = this.tokenStream.LA(1); if(!(_la === 132 || _la === 173 || _la === 409)) { this.errorHandler.recoverInline(this); @@ -30286,47 +31128,47 @@ export class MySqlParser extends SQLParserBase { } public setPasswordStatement(): SetPasswordStatementContext { let localContext = new SetPasswordStatementContext(this.context, this.state); - this.enterRule(localContext, 484, MySqlParser.RULE_setPasswordStatement); + this.enterRule(localContext, 490, MySqlParser.RULE_setPasswordStatement); let _la: number; try { - this.state = 5583; + this.state = 5647; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 812, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 823, this.context) ) { case 1: localContext = new V57Context(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5551; + this.state = 5615; this.match(MySqlParser.KW_SET); - this.state = 5552; + this.state = 5616; this.match(MySqlParser.KW_PASSWORD); - this.state = 5555; + this.state = 5619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 5553; + this.state = 5617; this.match(MySqlParser.KW_FOR); - this.state = 5554; + this.state = 5618; this.userName(); } } - this.state = 5557; + this.state = 5621; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 5560; + this.state = 5624; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_OLD_PASSWORD: case MySqlParser.KW_PASSWORD: { - this.state = 5558; + this.state = 5622; this.passwordFunctionClause(); } break; case MySqlParser.STRING_LITERAL: { - this.state = 5559; + this.state = 5623; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30339,66 +31181,66 @@ export class MySqlParser extends SQLParserBase { localContext = new V80Context(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5562; + this.state = 5626; this.match(MySqlParser.KW_SET); - this.state = 5563; + this.state = 5627; this.match(MySqlParser.KW_PASSWORD); - this.state = 5566; + this.state = 5630; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 5564; + this.state = 5628; this.match(MySqlParser.KW_FOR); - this.state = 5565; + this.state = 5629; this.userName(); } } - this.state = 5572; + this.state = 5636; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TO: { - this.state = 5568; + this.state = 5632; this.match(MySqlParser.KW_TO); - this.state = 5569; + this.state = 5633; this.match(MySqlParser.KW_RANDOM); } break; case MySqlParser.EQUAL_SYMBOL: { - this.state = 5570; + this.state = 5634; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 5571; + this.state = 5635; this.match(MySqlParser.STRING_LITERAL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5576; + this.state = 5640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 810, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 821, this.context) ) { case 1: { - this.state = 5574; + this.state = 5638; this.match(MySqlParser.KW_REPLACE); - this.state = 5575; + this.state = 5639; this.match(MySqlParser.STRING_LITERAL); } break; } - this.state = 5581; + this.state = 5645; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 5578; + this.state = 5642; this.match(MySqlParser.KW_RETAIN); - this.state = 5579; + this.state = 5643; this.match(MySqlParser.KW_CURRENT); - this.state = 5580; + this.state = 5644; this.match(MySqlParser.KW_PASSWORD); } } @@ -30423,13 +31265,13 @@ export class MySqlParser extends SQLParserBase { } public userSpecification(): UserSpecificationContext { let localContext = new UserSpecificationContext(this.context, this.state); - this.enterRule(localContext, 486, MySqlParser.RULE_userSpecification); + this.enterRule(localContext, 492, MySqlParser.RULE_userSpecification); try { this.enterOuterAlt(localContext, 1); { - this.state = 5585; + this.state = 5649; this.userName(); - this.state = 5586; + this.state = 5650; this.userPasswordOption(); } } @@ -30449,66 +31291,66 @@ export class MySqlParser extends SQLParserBase { } public alterUserAuthOption(): AlterUserAuthOptionContext { let localContext = new AlterUserAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 488, MySqlParser.RULE_alterUserAuthOption); + this.enterRule(localContext, 494, MySqlParser.RULE_alterUserAuthOption); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5588; + this.state = 5652; this.userName(); - this.state = 5614; + this.state = 5678; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 815, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 826, this.context) ) { case 1: { - this.state = 5589; + this.state = 5653; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5590; + this.state = 5654; this.match(MySqlParser.KW_BY); - this.state = 5591; + this.state = 5655; this.match(MySqlParser.STRING_LITERAL); - this.state = 5592; + this.state = 5656; this.authOptionClause(); } break; case 2: { - this.state = 5593; + this.state = 5657; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5594; + this.state = 5658; this.match(MySqlParser.KW_BY); - this.state = 5595; + this.state = 5659; this.match(MySqlParser.KW_RANDOM); - this.state = 5596; + this.state = 5660; this.match(MySqlParser.KW_PASSWORD); - this.state = 5597; + this.state = 5661; this.authOptionClause(); } break; case 3: { - this.state = 5598; + this.state = 5662; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5599; + this.state = 5663; this.match(MySqlParser.KW_WITH); - this.state = 5600; + this.state = 5664; this.authenticationRule(); } break; case 4: { - this.state = 5601; + this.state = 5665; this.match(MySqlParser.KW_DISCARD); - this.state = 5602; + this.state = 5666; this.match(MySqlParser.KW_OLD); - this.state = 5603; + this.state = 5667; this.match(MySqlParser.KW_PASSWORD); } break; case 5: { - this.state = 5609; + this.state = 5673; this.errorHandler.sync(this); alternative = 1; do { @@ -30516,7 +31358,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5604; + this.state = 5668; _la = this.tokenStream.LA(1); if(!(_la === 6 || _la === 51 || _la === 492)) { this.errorHandler.recoverInline(this); @@ -30525,14 +31367,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5605; + this.state = 5669; this.factor(); - this.state = 5607; + this.state = 5671; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 5606; + this.state = 5670; this.factorAuthOption(); } } @@ -30543,15 +31385,15 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5611; + this.state = 5675; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 814, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 825, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; case 6: { - this.state = 5613; + this.state = 5677; this.registrationOption(); } break; @@ -30574,34 +31416,34 @@ export class MySqlParser extends SQLParserBase { } public createUserAuthOption(): CreateUserAuthOptionContext { let localContext = new CreateUserAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 490, MySqlParser.RULE_createUserAuthOption); + this.enterRule(localContext, 496, MySqlParser.RULE_createUserAuthOption); let _la: number; try { - this.state = 5652; + this.state = 5716; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 822, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 833, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5616; + this.state = 5680; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5617; + this.state = 5681; this.match(MySqlParser.KW_BY); - this.state = 5623; + this.state = 5687; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5618; + this.state = 5682; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { { - this.state = 5619; + this.state = 5683; this.match(MySqlParser.KW_RANDOM); - this.state = 5620; + this.state = 5684; this.match(MySqlParser.KW_PASSWORD); } } @@ -30609,9 +31451,9 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_PASSWORD: { { - this.state = 5621; + this.state = 5685; this.match(MySqlParser.KW_PASSWORD); - this.state = 5622; + this.state = 5686; this.match(MySqlParser.STRING_LITERAL); } } @@ -30619,14 +31461,14 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5627; + this.state = 5691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5625; + this.state = 5689; this.match(MySqlParser.KW_AND); - this.state = 5626; + this.state = 5690; this.createUserAuthOption(); } } @@ -30636,35 +31478,35 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5629; + this.state = 5693; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5630; + this.state = 5694; this.match(MySqlParser.KW_WITH); - this.state = 5631; + this.state = 5695; localContext._authPlugin = this.uid(); - this.state = 5640; + this.state = 5704; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BY: { { - this.state = 5632; + this.state = 5696; this.match(MySqlParser.KW_BY); - this.state = 5636; + this.state = 5700; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5633; + this.state = 5697; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { { - this.state = 5634; + this.state = 5698; this.match(MySqlParser.KW_RANDOM); - this.state = 5635; + this.state = 5699; this.match(MySqlParser.KW_PASSWORD); } } @@ -30677,9 +31519,9 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_AS: { - this.state = 5638; + this.state = 5702; this.match(MySqlParser.KW_AS); - this.state = 5639; + this.state = 5703; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30760,14 +31602,14 @@ export class MySqlParser extends SQLParserBase { default: break; } - this.state = 5644; + this.state = 5708; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5642; + this.state = 5706; this.match(MySqlParser.KW_AND); - this.state = 5643; + this.state = 5707; this.createUserAuthOption(); } } @@ -30777,18 +31619,18 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5646; + this.state = 5710; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5647; + this.state = 5711; this.match(MySqlParser.KW_WITH); - this.state = 5648; + this.state = 5712; localContext._authPlugin = this.uid(); - this.state = 5650; + this.state = 5714; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 427) { { - this.state = 5649; + this.state = 5713; this.createUserInitialAuthOption(); } } @@ -30813,38 +31655,38 @@ export class MySqlParser extends SQLParserBase { } public createUserInitialAuthOption(): CreateUserInitialAuthOptionContext { let localContext = new CreateUserInitialAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 492, MySqlParser.RULE_createUserInitialAuthOption); + this.enterRule(localContext, 498, MySqlParser.RULE_createUserInitialAuthOption); try { - this.state = 5671; + this.state = 5735; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 824, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 835, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5654; + this.state = 5718; this.match(MySqlParser.KW_INITIAL); - this.state = 5655; + this.state = 5719; this.match(MySqlParser.KW_AUTHENTICATION); - this.state = 5656; + this.state = 5720; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5657; + this.state = 5721; this.match(MySqlParser.KW_BY); - this.state = 5661; + this.state = 5725; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_RANDOM: { { - this.state = 5658; + this.state = 5722; this.match(MySqlParser.KW_RANDOM); - this.state = 5659; + this.state = 5723; this.match(MySqlParser.KW_PASSWORD); } } break; case MySqlParser.STRING_LITERAL: { - this.state = 5660; + this.state = 5724; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30856,19 +31698,19 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5663; + this.state = 5727; this.match(MySqlParser.KW_INITIAL); - this.state = 5664; + this.state = 5728; this.match(MySqlParser.KW_AUTHENTICATION); - this.state = 5665; + this.state = 5729; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5666; + this.state = 5730; this.match(MySqlParser.KW_WITH); - this.state = 5667; + this.state = 5731; localContext._authPlugin = this.uid(); - this.state = 5668; + this.state = 5732; this.match(MySqlParser.KW_AS); - this.state = 5669; + this.state = 5733; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30890,24 +31732,24 @@ export class MySqlParser extends SQLParserBase { } public userAuthOption(): UserAuthOptionContext { let localContext = new UserAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 494, MySqlParser.RULE_userAuthOption); + this.enterRule(localContext, 500, MySqlParser.RULE_userAuthOption); try { - this.state = 5698; + this.state = 5762; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 825, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 836, this.context) ) { case 1: localContext = new HashAuthOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5673; + this.state = 5737; this.userName(); - this.state = 5674; + this.state = 5738; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5675; + this.state = 5739; this.match(MySqlParser.KW_BY); - this.state = 5676; + this.state = 5740; this.match(MySqlParser.KW_PASSWORD); - this.state = 5677; + this.state = 5741; (localContext as HashAuthOptionContext)._hashed = this.match(MySqlParser.STRING_LITERAL); } break; @@ -30915,17 +31757,17 @@ export class MySqlParser extends SQLParserBase { localContext = new RandomAuthOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5679; + this.state = 5743; this.userName(); - this.state = 5680; + this.state = 5744; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5681; + this.state = 5745; this.match(MySqlParser.KW_BY); - this.state = 5682; + this.state = 5746; this.match(MySqlParser.KW_RANDOM); - this.state = 5683; + this.state = 5747; this.match(MySqlParser.KW_PASSWORD); - this.state = 5684; + this.state = 5748; this.authOptionClause(); } break; @@ -30933,15 +31775,15 @@ export class MySqlParser extends SQLParserBase { localContext = new StringAuthOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5686; + this.state = 5750; this.userName(); - this.state = 5687; + this.state = 5751; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5688; + this.state = 5752; this.match(MySqlParser.KW_BY); - this.state = 5689; + this.state = 5753; this.match(MySqlParser.STRING_LITERAL); - this.state = 5690; + this.state = 5754; this.authOptionClause(); } break; @@ -30949,13 +31791,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ModuleAuthOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 5692; + this.state = 5756; this.userName(); - this.state = 5693; + this.state = 5757; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5694; + this.state = 5758; this.match(MySqlParser.KW_WITH); - this.state = 5695; + this.state = 5759; this.authenticationRule(); } break; @@ -30963,7 +31805,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SimpleAuthOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 5697; + this.state = 5761; this.userName(); } break; @@ -30985,33 +31827,33 @@ export class MySqlParser extends SQLParserBase { } public authOptionClause(): AuthOptionClauseContext { let localContext = new AuthOptionClauseContext(this.context, this.state); - this.enterRule(localContext, 496, MySqlParser.RULE_authOptionClause); + this.enterRule(localContext, 502, MySqlParser.RULE_authOptionClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5702; + this.state = 5766; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 826, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 837, this.context) ) { case 1: { - this.state = 5700; + this.state = 5764; this.match(MySqlParser.KW_REPLACE); - this.state = 5701; + this.state = 5765; this.match(MySqlParser.STRING_LITERAL); } break; } - this.state = 5707; + this.state = 5771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 5704; + this.state = 5768; this.match(MySqlParser.KW_RETAIN); - this.state = 5705; + this.state = 5769; this.match(MySqlParser.KW_CURRENT); - this.state = 5706; + this.state = 5770; this.match(MySqlParser.KW_PASSWORD); } } @@ -31034,24 +31876,24 @@ export class MySqlParser extends SQLParserBase { } public authenticationRule(): AuthenticationRuleContext { let localContext = new AuthenticationRuleContext(this.context, this.state); - this.enterRule(localContext, 498, MySqlParser.RULE_authenticationRule); + this.enterRule(localContext, 504, MySqlParser.RULE_authenticationRule); let _la: number; try { - this.state = 5723; + this.state = 5787; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 830, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 841, this.context) ) { case 1: localContext = new ModuleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5709; + this.state = 5773; (localContext as ModuleContext)._authPlugin = this.uid(); - this.state = 5717; + this.state = 5781; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 829, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 840, this.context) ) { case 1: { - this.state = 5710; + this.state = 5774; _la = this.tokenStream.LA(1); if(!(_la === 13 || _la === 20 || _la === 188)) { this.errorHandler.recoverInline(this); @@ -31060,27 +31902,27 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5714; + this.state = 5778; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5711; + this.state = 5775; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { - this.state = 5712; + this.state = 5776; this.match(MySqlParser.KW_RANDOM); - this.state = 5713; + this.state = 5777; this.match(MySqlParser.KW_PASSWORD); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5716; + this.state = 5780; this.authOptionClause(); } break; @@ -31091,11 +31933,11 @@ export class MySqlParser extends SQLParserBase { localContext = new PasswordModuleOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5719; + this.state = 5783; (localContext as PasswordModuleOptionContext)._authPlugin = this.uid(); - this.state = 5720; + this.state = 5784; this.match(MySqlParser.KW_USING); - this.state = 5721; + this.state = 5785; this.passwordFunctionClause(); } break; @@ -31117,49 +31959,49 @@ export class MySqlParser extends SQLParserBase { } public tlsOption(): TlsOptionContext { let localContext = new TlsOptionContext(this.context, this.state); - this.enterRule(localContext, 500, MySqlParser.RULE_tlsOption); + this.enterRule(localContext, 506, MySqlParser.RULE_tlsOption); try { - this.state = 5733; + this.state = 5797; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SSL: this.enterOuterAlt(localContext, 1); { - this.state = 5725; + this.state = 5789; this.match(MySqlParser.KW_SSL); } break; case MySqlParser.KW_X509: this.enterOuterAlt(localContext, 2); { - this.state = 5726; + this.state = 5790; this.match(MySqlParser.KW_X509); } break; case MySqlParser.KW_CIPHER: this.enterOuterAlt(localContext, 3); { - this.state = 5727; + this.state = 5791; this.match(MySqlParser.KW_CIPHER); - this.state = 5728; + this.state = 5792; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_ISSUER: this.enterOuterAlt(localContext, 4); { - this.state = 5729; + this.state = 5793; this.match(MySqlParser.KW_ISSUER); - this.state = 5730; + this.state = 5794; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_SUBJECT: this.enterOuterAlt(localContext, 5); { - this.state = 5731; + this.state = 5795; this.match(MySqlParser.KW_SUBJECT); - this.state = 5732; + this.state = 5796; this.match(MySqlParser.STRING_LITERAL); } break; @@ -31183,44 +32025,44 @@ export class MySqlParser extends SQLParserBase { } public userResourceOption(): UserResourceOptionContext { let localContext = new UserResourceOptionContext(this.context, this.state); - this.enterRule(localContext, 502, MySqlParser.RULE_userResourceOption); + this.enterRule(localContext, 508, MySqlParser.RULE_userResourceOption); try { - this.state = 5743; + this.state = 5807; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_MAX_QUERIES_PER_HOUR: this.enterOuterAlt(localContext, 1); { - this.state = 5735; + this.state = 5799; this.match(MySqlParser.KW_MAX_QUERIES_PER_HOUR); - this.state = 5736; + this.state = 5800; this.decimalLiteral(); } break; case MySqlParser.KW_MAX_UPDATES_PER_HOUR: this.enterOuterAlt(localContext, 2); { - this.state = 5737; + this.state = 5801; this.match(MySqlParser.KW_MAX_UPDATES_PER_HOUR); - this.state = 5738; + this.state = 5802; this.decimalLiteral(); } break; case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR: this.enterOuterAlt(localContext, 3); { - this.state = 5739; + this.state = 5803; this.match(MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR); - this.state = 5740; + this.state = 5804; this.decimalLiteral(); } break; case MySqlParser.KW_MAX_USER_CONNECTIONS: this.enterOuterAlt(localContext, 4); { - this.state = 5741; + this.state = 5805; this.match(MySqlParser.KW_MAX_USER_CONNECTIONS); - this.state = 5742; + this.state = 5806; this.decimalLiteral(); } break; @@ -31244,41 +32086,41 @@ export class MySqlParser extends SQLParserBase { } public userPasswordOption(): UserPasswordOptionContext { let localContext = new UserPasswordOptionContext(this.context, this.state); - this.enterRule(localContext, 504, MySqlParser.RULE_userPasswordOption); + this.enterRule(localContext, 510, MySqlParser.RULE_userPasswordOption); let _la: number; try { - this.state = 5783; + this.state = 5847; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 838, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 849, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5745; + this.state = 5809; this.match(MySqlParser.KW_PASSWORD); - this.state = 5746; + this.state = 5810; this.match(MySqlParser.KW_EXPIRE); - this.state = 5753; + this.state = 5817; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 5747; + this.state = 5811; localContext._expireType = this.match(MySqlParser.KW_DEFAULT); } break; case MySqlParser.KW_NEVER: { - this.state = 5748; + this.state = 5812; localContext._expireType = this.match(MySqlParser.KW_NEVER); } break; case MySqlParser.KW_INTERVAL: { - this.state = 5749; + this.state = 5813; localContext._expireType = this.match(MySqlParser.KW_INTERVAL); - this.state = 5750; + this.state = 5814; this.decimalLiteral(); - this.state = 5751; + this.state = 5815; this.match(MySqlParser.KW_DAY); } break; @@ -31361,16 +32203,16 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5755; + this.state = 5819; this.match(MySqlParser.KW_PASSWORD); - this.state = 5756; + this.state = 5820; this.match(MySqlParser.KW_HISTORY); - this.state = 5759; + this.state = 5823; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 5757; + this.state = 5821; this.match(MySqlParser.KW_DEFAULT); } break; @@ -31381,7 +32223,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5758; + this.state = 5822; this.decimalLiteral(); } break; @@ -31393,18 +32235,18 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5761; + this.state = 5825; this.match(MySqlParser.KW_PASSWORD); - this.state = 5762; + this.state = 5826; this.match(MySqlParser.KW_REUSE); - this.state = 5763; + this.state = 5827; this.match(MySqlParser.KW_INTERVAL); - this.state = 5768; + this.state = 5832; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 5764; + this.state = 5828; this.match(MySqlParser.KW_DEFAULT); } break; @@ -31415,9 +32257,9 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5765; + this.state = 5829; this.decimalLiteral(); - this.state = 5766; + this.state = 5830; this.match(MySqlParser.KW_DAY); } break; @@ -31429,18 +32271,18 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5770; + this.state = 5834; this.match(MySqlParser.KW_PASSWORD); - this.state = 5771; + this.state = 5835; this.match(MySqlParser.KW_REQUIRE); - this.state = 5772; + this.state = 5836; this.match(MySqlParser.KW_CURRENT); - this.state = 5774; + this.state = 5838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 122) { { - this.state = 5773; + this.state = 5837; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 122)) { this.errorHandler.recoverInline(this); @@ -31457,18 +32299,18 @@ export class MySqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5776; + this.state = 5840; this.match(MySqlParser.KW_FAILED_LOGIN_ATTEMPTS); - this.state = 5777; + this.state = 5841; this.decimalLiteral(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5778; + this.state = 5842; this.match(MySqlParser.KW_PASSWORD_LOCK_TIME); - this.state = 5781; + this.state = 5845; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -31478,13 +32320,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5779; + this.state = 5843; this.decimalLiteral(); } break; case MySqlParser.KW_UNBOUNDED: { - this.state = 5780; + this.state = 5844; this.match(MySqlParser.KW_UNBOUNDED); } break; @@ -31511,14 +32353,14 @@ export class MySqlParser extends SQLParserBase { } public userLockOption(): UserLockOptionContext { let localContext = new UserLockOptionContext(this.context, this.state); - this.enterRule(localContext, 506, MySqlParser.RULE_userLockOption); + this.enterRule(localContext, 512, MySqlParser.RULE_userLockOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5785; + this.state = 5849; this.match(MySqlParser.KW_ACCOUNT); - this.state = 5786; + this.state = 5850; localContext._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 104 || _la === 183)) { @@ -31546,48 +32388,48 @@ export class MySqlParser extends SQLParserBase { } public factorAuthOption(): FactorAuthOptionContext { let localContext = new FactorAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 508, MySqlParser.RULE_factorAuthOption); + this.enterRule(localContext, 514, MySqlParser.RULE_factorAuthOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5788; + this.state = 5852; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5791; + this.state = 5855; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 5789; + this.state = 5853; this.match(MySqlParser.KW_WITH); - this.state = 5790; + this.state = 5854; localContext._authPlugin = this.uid(); } } - this.state = 5801; + this.state = 5865; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BY: { { - this.state = 5793; + this.state = 5857; this.match(MySqlParser.KW_BY); - this.state = 5797; + this.state = 5861; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5794; + this.state = 5858; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { { - this.state = 5795; + this.state = 5859; this.match(MySqlParser.KW_RANDOM); - this.state = 5796; + this.state = 5860; this.match(MySqlParser.KW_PASSWORD); } } @@ -31600,9 +32442,9 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_AS: { - this.state = 5799; + this.state = 5863; this.match(MySqlParser.KW_AS); - this.state = 5800; + this.state = 5864; this.match(MySqlParser.STRING_LITERAL); } break; @@ -31627,47 +32469,47 @@ export class MySqlParser extends SQLParserBase { } public registrationOption(): RegistrationOptionContext { let localContext = new RegistrationOptionContext(this.context, this.state); - this.enterRule(localContext, 510, MySqlParser.RULE_registrationOption); + this.enterRule(localContext, 516, MySqlParser.RULE_registrationOption); try { - this.state = 5818; + this.state = 5882; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 842, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 853, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5803; + this.state = 5867; this.factor(); - this.state = 5804; + this.state = 5868; this.match(MySqlParser.KW_INITIATE); - this.state = 5805; + this.state = 5869; this.match(MySqlParser.KW_REGISTRATION); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5807; + this.state = 5871; this.factor(); - this.state = 5808; + this.state = 5872; this.match(MySqlParser.KW_FINISH); - this.state = 5809; + this.state = 5873; this.match(MySqlParser.KW_REGISTRATION); - this.state = 5810; + this.state = 5874; this.match(MySqlParser.KW_SET); - this.state = 5811; + this.state = 5875; this.match(MySqlParser.KW_CHALLENGE_RESPONSE); - this.state = 5812; + this.state = 5876; this.match(MySqlParser.KW_AS); - this.state = 5813; + this.state = 5877; this.match(MySqlParser.STRING_LITERAL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5815; + this.state = 5879; this.factor(); - this.state = 5816; + this.state = 5880; this.match(MySqlParser.KW_UNREGISTER); } break; @@ -31689,12 +32531,12 @@ export class MySqlParser extends SQLParserBase { } public factor(): FactorContext { let localContext = new FactorContext(this.context, this.state); - this.enterRule(localContext, 512, MySqlParser.RULE_factor); + this.enterRule(localContext, 518, MySqlParser.RULE_factor); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5820; + this.state = 5884; _la = this.tokenStream.LA(1); if(!(_la === 873 || _la === 874)) { this.errorHandler.recoverInline(this); @@ -31703,7 +32545,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5821; + this.state = 5885; this.match(MySqlParser.KW_FACTOR); } } @@ -31723,23 +32565,23 @@ export class MySqlParser extends SQLParserBase { } public privelegeClause(): PrivelegeClauseContext { let localContext = new PrivelegeClauseContext(this.context, this.state); - this.enterRule(localContext, 514, MySqlParser.RULE_privelegeClause); + this.enterRule(localContext, 520, MySqlParser.RULE_privelegeClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5823; + this.state = 5887; this.privilege(); - this.state = 5828; + this.state = 5892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 5824; + this.state = 5888; this.match(MySqlParser.LR_BRACKET); - this.state = 5825; + this.state = 5889; this.columnNames(); - this.state = 5826; + this.state = 5890; this.match(MySqlParser.RR_BRACKET); } } @@ -31762,23 +32604,23 @@ export class MySqlParser extends SQLParserBase { } public privilege(): PrivilegeContext { let localContext = new PrivilegeContext(this.context, this.state); - this.enterRule(localContext, 516, MySqlParser.RULE_privilege); + this.enterRule(localContext, 522, MySqlParser.RULE_privilege); let _la: number; try { - this.state = 5923; + this.state = 5987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 848, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 859, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5830; + this.state = 5894; this.match(MySqlParser.KW_ALL); - this.state = 5832; + this.state = 5896; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 734) { { - this.state = 5831; + this.state = 5895; this.match(MySqlParser.KW_PRIVILEGES); } } @@ -31788,14 +32630,14 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5834; + this.state = 5898; this.match(MySqlParser.KW_ALTER); - this.state = 5836; + this.state = 5900; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 743) { { - this.state = 5835; + this.state = 5899; this.match(MySqlParser.KW_ROUTINE); } } @@ -31805,46 +32647,46 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5838; + this.state = 5902; this.match(MySqlParser.KW_CREATE); - this.state = 5846; + this.state = 5910; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TEMPORARY: { - this.state = 5839; + this.state = 5903; this.match(MySqlParser.KW_TEMPORARY); - this.state = 5840; + this.state = 5904; this.match(MySqlParser.KW_TABLES); } break; case MySqlParser.KW_ROUTINE: { - this.state = 5841; + this.state = 5905; this.match(MySqlParser.KW_ROUTINE); } break; case MySqlParser.KW_VIEW: { - this.state = 5842; + this.state = 5906; this.match(MySqlParser.KW_VIEW); } break; case MySqlParser.KW_USER: { - this.state = 5843; + this.state = 5907; this.match(MySqlParser.KW_USER); } break; case MySqlParser.KW_TABLESPACE: { - this.state = 5844; + this.state = 5908; this.match(MySqlParser.KW_TABLESPACE); } break; case MySqlParser.KW_ROLE: { - this.state = 5845; + this.state = 5909; this.match(MySqlParser.KW_ROLE); } break; @@ -31860,21 +32702,21 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5848; + this.state = 5912; this.match(MySqlParser.KW_DELETE); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5849; + this.state = 5913; this.match(MySqlParser.KW_DROP); - this.state = 5851; + this.state = 5915; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 582) { { - this.state = 5850; + this.state = 5914; this.match(MySqlParser.KW_ROLE); } } @@ -31884,90 +32726,90 @@ export class MySqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5853; + this.state = 5917; this.match(MySqlParser.KW_EVENT); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5854; + this.state = 5918; this.match(MySqlParser.KW_EXECUTE); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5855; + this.state = 5919; this.match(MySqlParser.KW_FILE); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 5856; + this.state = 5920; this.match(MySqlParser.KW_GRANT); - this.state = 5857; + this.state = 5921; this.match(MySqlParser.KW_OPTION); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 5858; + this.state = 5922; this.match(MySqlParser.KW_INDEX); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 5859; + this.state = 5923; this.match(MySqlParser.KW_INSERT); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 5860; + this.state = 5924; this.match(MySqlParser.KW_LOCK); - this.state = 5861; + this.state = 5925; this.match(MySqlParser.KW_TABLES); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 5862; + this.state = 5926; this.match(MySqlParser.KW_PROCESS); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 5863; + this.state = 5927; this.match(MySqlParser.KW_PROXY); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 5864; + this.state = 5928; this.match(MySqlParser.KW_REFERENCES); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 5865; + this.state = 5929; this.match(MySqlParser.KW_RELOAD); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 5866; + this.state = 5930; this.match(MySqlParser.KW_REPLICATION); - this.state = 5867; + this.state = 5931; _la = this.tokenStream.LA(1); if(!(_la === 333 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -31981,16 +32823,16 @@ export class MySqlParser extends SQLParserBase { case 18: this.enterOuterAlt(localContext, 18); { - this.state = 5868; + this.state = 5932; this.match(MySqlParser.KW_SELECT); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 5869; + this.state = 5933; this.match(MySqlParser.KW_SHOW); - this.state = 5870; + this.state = 5934; _la = this.tokenStream.LA(1); if(!(_la === 40 || _la === 684)) { this.errorHandler.recoverInline(this); @@ -32004,339 +32846,339 @@ export class MySqlParser extends SQLParserBase { case 20: this.enterOuterAlt(localContext, 20); { - this.state = 5871; + this.state = 5935; this.match(MySqlParser.KW_SHUTDOWN); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 5872; + this.state = 5936; this.match(MySqlParser.KW_SUPER); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 5873; + this.state = 5937; this.match(MySqlParser.KW_TRIGGER); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 5874; + this.state = 5938; this.match(MySqlParser.KW_UPDATE); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 5875; + this.state = 5939; this.match(MySqlParser.KW_USAGE); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 5876; + this.state = 5940; this.match(MySqlParser.KW_APPLICATION_PASSWORD_ADMIN); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 5877; + this.state = 5941; this.match(MySqlParser.KW_AUDIT_ABORT_EXEMPT); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 5878; + this.state = 5942; this.match(MySqlParser.KW_AUDIT_ADMIN); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 5879; + this.state = 5943; this.match(MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 5880; + this.state = 5944; this.match(MySqlParser.KW_BACKUP_ADMIN); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 5881; + this.state = 5945; this.match(MySqlParser.KW_BINLOG_ADMIN); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 5882; + this.state = 5946; this.match(MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 5883; + this.state = 5947; this.match(MySqlParser.KW_CLONE_ADMIN); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 5884; + this.state = 5948; this.match(MySqlParser.KW_CONNECTION_ADMIN); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 5885; + this.state = 5949; this.match(MySqlParser.KW_ENCRYPTION_KEY_ADMIN); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 5886; + this.state = 5950; this.match(MySqlParser.KW_FIREWALL_ADMIN); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 5887; + this.state = 5951; this.match(MySqlParser.KW_FIREWALL_EXEMPT); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 5888; + this.state = 5952; this.match(MySqlParser.KW_FIREWALL_USER); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 5889; + this.state = 5953; this.match(MySqlParser.KW_FLUSH_OPTIMIZER_COSTS); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 5890; + this.state = 5954; this.match(MySqlParser.KW_FLUSH_STATUS); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 5891; + this.state = 5955; this.match(MySqlParser.KW_FLUSH_TABLES); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 5892; + this.state = 5956; this.match(MySqlParser.KW_FLUSH_USER_RESOURCES); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 5893; + this.state = 5957; this.match(MySqlParser.KW_GROUP_REPLICATION_ADMIN); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 5894; + this.state = 5958; this.match(MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 5895; + this.state = 5959; this.match(MySqlParser.KW_INNODB_REDO_LOG_ENABLE); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 5896; + this.state = 5960; this.match(MySqlParser.KW_NDB_STORED_USER); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 5897; + this.state = 5961; this.match(MySqlParser.KW_PASSWORDLESS_USER_ADMIN); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 5898; + this.state = 5962; this.match(MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 5899; + this.state = 5963; this.match(MySqlParser.KW_REPLICATION_APPLIER); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 5900; + this.state = 5964; this.match(MySqlParser.KW_REPLICATION_SLAVE_ADMIN); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 5901; + this.state = 5965; this.match(MySqlParser.KW_RESOURCE_GROUP_ADMIN); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 5902; + this.state = 5966; this.match(MySqlParser.KW_RESOURCE_GROUP_USER); } break; case 52: this.enterOuterAlt(localContext, 52); { - this.state = 5903; + this.state = 5967; this.match(MySqlParser.KW_ROLE_ADMIN); } break; case 53: this.enterOuterAlt(localContext, 53); { - this.state = 5904; + this.state = 5968; this.match(MySqlParser.KW_SERVICE_CONNECTION_ADMIN); } break; case 54: this.enterOuterAlt(localContext, 54); { - this.state = 5905; + this.state = 5969; this.match(MySqlParser.KW_SESSION_VARIABLES_ADMIN); } break; case 55: this.enterOuterAlt(localContext, 55); { - this.state = 5906; + this.state = 5970; this.match(MySqlParser.KW_SET_USER_ID); } break; case 56: this.enterOuterAlt(localContext, 56); { - this.state = 5907; + this.state = 5971; this.match(MySqlParser.KW_SKIP_QUERY_REWRITE); } break; case 57: this.enterOuterAlt(localContext, 57); { - this.state = 5908; + this.state = 5972; this.match(MySqlParser.KW_SHOW_ROUTINE); } break; case 58: this.enterOuterAlt(localContext, 58); { - this.state = 5909; + this.state = 5973; this.match(MySqlParser.KW_SYSTEM_USER); } break; case 59: this.enterOuterAlt(localContext, 59); { - this.state = 5910; + this.state = 5974; this.match(MySqlParser.KW_SYSTEM_VARIABLES_ADMIN); } break; case 60: this.enterOuterAlt(localContext, 60); { - this.state = 5911; + this.state = 5975; this.match(MySqlParser.KW_TABLE_ENCRYPTION_ADMIN); } break; case 61: this.enterOuterAlt(localContext, 61); { - this.state = 5912; + this.state = 5976; this.match(MySqlParser.KW_TP_CONNECTION_ADMIN); } break; case 62: this.enterOuterAlt(localContext, 62); { - this.state = 5913; + this.state = 5977; this.match(MySqlParser.KW_VERSION_TOKEN_ADMIN); } break; case 63: this.enterOuterAlt(localContext, 63); { - this.state = 5914; + this.state = 5978; this.match(MySqlParser.KW_XA_RECOVER_ADMIN); } break; case 64: this.enterOuterAlt(localContext, 64); { - this.state = 5915; + this.state = 5979; this.match(MySqlParser.KW_LOAD); - this.state = 5916; + this.state = 5980; this.match(MySqlParser.KW_FROM); - this.state = 5917; + this.state = 5981; this.match(MySqlParser.KW_S3); } break; case 65: this.enterOuterAlt(localContext, 65); { - this.state = 5918; + this.state = 5982; this.match(MySqlParser.KW_SELECT); - this.state = 5919; + this.state = 5983; this.match(MySqlParser.KW_INTO); - this.state = 5920; + this.state = 5984; this.match(MySqlParser.KW_S3); } break; case 66: this.enterOuterAlt(localContext, 66); { - this.state = 5921; + this.state = 5985; this.match(MySqlParser.KW_INVOKE); - this.state = 5922; + this.state = 5986; this.match(MySqlParser.KW_LAMBDA); } break; @@ -32358,16 +33200,16 @@ export class MySqlParser extends SQLParserBase { } public privilegeLevel(): PrivilegeLevelContext { let localContext = new PrivilegeLevelContext(this.context, this.state); - this.enterRule(localContext, 518, MySqlParser.RULE_privilegeLevel); + this.enterRule(localContext, 524, MySqlParser.RULE_privilegeLevel); try { - this.state = 5941; + this.state = 6005; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 849, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 860, this.context) ) { case 1: localContext = new CurrentSchemaPriviLevelContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5925; + this.state = 5989; this.match(MySqlParser.STAR); } break; @@ -32375,11 +33217,11 @@ export class MySqlParser extends SQLParserBase { localContext = new GlobalPrivLevelContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5926; + this.state = 5990; this.match(MySqlParser.STAR); - this.state = 5927; + this.state = 5991; this.match(MySqlParser.DOT); - this.state = 5928; + this.state = 5992; this.match(MySqlParser.STAR); } break; @@ -32387,11 +33229,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteSchemaPrivLevelContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5929; + this.state = 5993; this.uid(); - this.state = 5930; + this.state = 5994; this.match(MySqlParser.DOT); - this.state = 5931; + this.state = 5995; this.match(MySqlParser.STAR); } break; @@ -32399,11 +33241,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteFullTablePrivLevelContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 5933; + this.state = 5997; this.uid(); - this.state = 5934; + this.state = 5998; this.match(MySqlParser.DOT); - this.state = 5935; + this.state = 5999; this.uid(); } break; @@ -32411,9 +33253,9 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteFullTablePrivLevel2Context(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 5937; + this.state = 6001; this.uid(); - this.state = 5938; + this.state = 6002; this.dottedId(); } break; @@ -32421,7 +33263,7 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteTablePrivLevelContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 5940; + this.state = 6004; this.uid(); } break; @@ -32443,15 +33285,15 @@ export class MySqlParser extends SQLParserBase { } public renameUserClause(): RenameUserClauseContext { let localContext = new RenameUserClauseContext(this.context, this.state); - this.enterRule(localContext, 520, MySqlParser.RULE_renameUserClause); + this.enterRule(localContext, 526, MySqlParser.RULE_renameUserClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 5943; + this.state = 6007; localContext._fromFirst = this.userName(); - this.state = 5944; + this.state = 6008; this.match(MySqlParser.KW_TO); - this.state = 5945; + this.state = 6009; localContext._toFirst = this.userName(); } } @@ -32471,70 +33313,70 @@ export class MySqlParser extends SQLParserBase { } public analyzeTable(): AnalyzeTableContext { let localContext = new AnalyzeTableContext(this.context, this.state); - this.enterRule(localContext, 522, MySqlParser.RULE_analyzeTable); + this.enterRule(localContext, 528, MySqlParser.RULE_analyzeTable); let _la: number; try { - this.state = 5995; + this.state = 6059; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 856, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 867, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5947; + this.state = 6011; this.match(MySqlParser.KW_ANALYZE); - this.state = 5949; + this.state = 6013; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5948; + this.state = 6012; this.tableActionOption(); } } - this.state = 5951; + this.state = 6015; this.match(MySqlParser.KW_TABLE); - this.state = 5952; + this.state = 6016; this.tableNames(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5953; + this.state = 6017; this.match(MySqlParser.KW_ANALYZE); - this.state = 5955; + this.state = 6019; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5954; + this.state = 6018; this.tableActionOption(); } } - this.state = 5957; + this.state = 6021; this.match(MySqlParser.KW_TABLE); - this.state = 5958; + this.state = 6022; this.tableName(); - this.state = 5959; + this.state = 6023; this.match(MySqlParser.KW_UPDATE); - this.state = 5960; + this.state = 6024; this.match(MySqlParser.KW_HISTOGRAM); - this.state = 5961; + this.state = 6025; this.match(MySqlParser.KW_ON); - this.state = 5962; + this.state = 6026; this.columnNames(); - this.state = 5967; + this.state = 6031; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 852, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 863, this.context) ) { case 1: { - this.state = 5963; + this.state = 6027; this.match(MySqlParser.KW_WITH); - this.state = 5964; + this.state = 6028; this.decimalLiteral(); - this.state = 5965; + this.state = 6029; this.match(MySqlParser.KW_BUCKETS); } break; @@ -32544,40 +33386,40 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5969; + this.state = 6033; this.match(MySqlParser.KW_ANALYZE); - this.state = 5971; + this.state = 6035; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5970; + this.state = 6034; this.tableActionOption(); } } - this.state = 5973; + this.state = 6037; this.match(MySqlParser.KW_TABLE); - this.state = 5974; + this.state = 6038; this.tableName(); - this.state = 5975; + this.state = 6039; this.match(MySqlParser.KW_UPDATE); - this.state = 5976; + this.state = 6040; this.match(MySqlParser.KW_HISTOGRAM); - this.state = 5977; + this.state = 6041; this.match(MySqlParser.KW_ON); - this.state = 5978; + this.state = 6042; this.columnName(); - this.state = 5982; + this.state = 6046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 5979; + this.state = 6043; this.match(MySqlParser.KW_USING); - this.state = 5980; + this.state = 6044; this.match(MySqlParser.KW_DATA); - this.state = 5981; + this.state = 6045; this.match(MySqlParser.STRING_LITERAL); } } @@ -32587,29 +33429,29 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5984; + this.state = 6048; this.match(MySqlParser.KW_ANALYZE); - this.state = 5986; + this.state = 6050; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5985; + this.state = 6049; this.tableActionOption(); } } - this.state = 5988; + this.state = 6052; this.match(MySqlParser.KW_TABLE); - this.state = 5989; + this.state = 6053; this.tableName(); - this.state = 5990; + this.state = 6054; this.match(MySqlParser.KW_DROP); - this.state = 5991; + this.state = 6055; this.match(MySqlParser.KW_HISTOGRAM); - this.state = 5992; + this.state = 6056; this.match(MySqlParser.KW_ON); - this.state = 5993; + this.state = 6057; this.columnNames(); } break; @@ -32631,28 +33473,28 @@ export class MySqlParser extends SQLParserBase { } public checkTable(): CheckTableContext { let localContext = new CheckTableContext(this.context, this.state); - this.enterRule(localContext, 524, MySqlParser.RULE_checkTable); + this.enterRule(localContext, 530, MySqlParser.RULE_checkTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5997; + this.state = 6061; this.match(MySqlParser.KW_CHECK); - this.state = 5998; + this.state = 6062; this.match(MySqlParser.KW_TABLE); - this.state = 5999; + this.state = 6063; this.tableNames(); - this.state = 6003; + this.state = 6067; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 65 || _la === 327 || _la === 392 || _la === 396 || _la === 484 || _la === 549) { { { - this.state = 6000; + this.state = 6064; this.checkTableOption(); } } - this.state = 6005; + this.state = 6069; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -32674,23 +33516,23 @@ export class MySqlParser extends SQLParserBase { } public checksumTable(): ChecksumTableContext { let localContext = new ChecksumTableContext(this.context, this.state); - this.enterRule(localContext, 526, MySqlParser.RULE_checksumTable); + this.enterRule(localContext, 532, MySqlParser.RULE_checksumTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6006; + this.state = 6070; this.match(MySqlParser.KW_CHECKSUM); - this.state = 6007; + this.state = 6071; this.match(MySqlParser.KW_TABLE); - this.state = 6008; + this.state = 6072; this.tableNames(); - this.state = 6010; + this.state = 6074; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392 || _la === 549) { { - this.state = 6009; + this.state = 6073; localContext._actionOption = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 392 || _la === 549)) { @@ -32721,24 +33563,24 @@ export class MySqlParser extends SQLParserBase { } public optimizeTable(): OptimizeTableContext { let localContext = new OptimizeTableContext(this.context, this.state); - this.enterRule(localContext, 528, MySqlParser.RULE_optimizeTable); + this.enterRule(localContext, 534, MySqlParser.RULE_optimizeTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6012; + this.state = 6076; this.match(MySqlParser.KW_OPTIMIZE); - this.state = 6014; + this.state = 6078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 6013; + this.state = 6077; this.tableActionOption(); } } - this.state = 6016; + this.state = 6080; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 752)) { this.errorHandler.recoverInline(this); @@ -32747,7 +33589,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6017; + this.state = 6081; this.tableNames(); } } @@ -32767,53 +33609,53 @@ export class MySqlParser extends SQLParserBase { } public repairTable(): RepairTableContext { let localContext = new RepairTableContext(this.context, this.state); - this.enterRule(localContext, 530, MySqlParser.RULE_repairTable); + this.enterRule(localContext, 536, MySqlParser.RULE_repairTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6019; + this.state = 6083; this.match(MySqlParser.KW_REPAIR); - this.state = 6021; + this.state = 6085; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 6020; + this.state = 6084; this.tableActionOption(); } } - this.state = 6023; + this.state = 6087; this.match(MySqlParser.KW_TABLE); - this.state = 6024; + this.state = 6088; this.tableNames(); - this.state = 6026; + this.state = 6090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 549) { { - this.state = 6025; + this.state = 6089; this.match(MySqlParser.KW_QUICK); } } - this.state = 6029; + this.state = 6093; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6028; + this.state = 6092; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6032; + this.state = 6096; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 679) { { - this.state = 6031; + this.state = 6095; this.match(MySqlParser.KW_USE_FRM); } } @@ -32836,12 +33678,12 @@ export class MySqlParser extends SQLParserBase { } public tableActionOption(): TableActionOptionContext { let localContext = new TableActionOptionContext(this.context, this.state); - this.enterRule(localContext, 532, MySqlParser.RULE_tableActionOption); + this.enterRule(localContext, 538, MySqlParser.RULE_tableActionOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6034; + this.state = 6098; _la = this.tokenStream.LA(1); if(!(_la === 115 || _la === 450)) { this.errorHandler.recoverInline(this); @@ -32868,52 +33710,52 @@ export class MySqlParser extends SQLParserBase { } public checkTableOption(): CheckTableOptionContext { let localContext = new CheckTableOptionContext(this.context, this.state); - this.enterRule(localContext, 534, MySqlParser.RULE_checkTableOption); + this.enterRule(localContext, 540, MySqlParser.RULE_checkTableOption); try { - this.state = 6043; + this.state = 6107; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FOR: this.enterOuterAlt(localContext, 1); { - this.state = 6036; + this.state = 6100; this.match(MySqlParser.KW_FOR); - this.state = 6037; + this.state = 6101; this.match(MySqlParser.KW_UPGRADE); } break; case MySqlParser.KW_QUICK: this.enterOuterAlt(localContext, 2); { - this.state = 6038; + this.state = 6102; this.match(MySqlParser.KW_QUICK); } break; case MySqlParser.KW_FAST: this.enterOuterAlt(localContext, 3); { - this.state = 6039; + this.state = 6103; this.match(MySqlParser.KW_FAST); } break; case MySqlParser.KW_MEDIUM: this.enterOuterAlt(localContext, 4); { - this.state = 6040; + this.state = 6104; this.match(MySqlParser.KW_MEDIUM); } break; case MySqlParser.KW_EXTENDED: this.enterOuterAlt(localContext, 5); { - this.state = 6041; + this.state = 6105; this.match(MySqlParser.KW_EXTENDED); } break; case MySqlParser.KW_CHANGED: this.enterOuterAlt(localContext, 6); { - this.state = 6042; + this.state = 6106; this.match(MySqlParser.KW_CHANGED); } break; @@ -32935,122 +33777,57 @@ export class MySqlParser extends SQLParserBase { } return localContext; } - public createFunction(): CreateFunctionContext { - let localContext = new CreateFunctionContext(this.context, this.state); - this.enterRule(localContext, 536, MySqlParser.RULE_createFunction); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6045; - this.match(MySqlParser.KW_CREATE); - this.state = 6047; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 307) { - { - this.state = 6046; - this.match(MySqlParser.KW_AGGREGATE); - } - } - - this.state = 6049; - this.match(MySqlParser.KW_FUNCTION); - this.state = 6051; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 866, this.context) ) { - case 1: - { - this.state = 6050; - this.ifNotExists(); - } - break; - } - this.state = 6053; - this.functionNameCreate(); - this.state = 6054; - this.match(MySqlParser.KW_RETURNS); - this.state = 6055; - localContext._returnType = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 261) !== 0) || _la === 649)) { - localContext._returnType = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 6056; - this.match(MySqlParser.KW_SONAME); - this.state = 6057; - this.match(MySqlParser.STRING_LITERAL); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public installComponent(): InstallComponentContext { let localContext = new InstallComponentContext(this.context, this.state); - this.enterRule(localContext, 538, MySqlParser.RULE_installComponent); + this.enterRule(localContext, 542, MySqlParser.RULE_installComponent); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6059; + this.state = 6109; this.match(MySqlParser.KW_INSTALL); - this.state = 6060; + this.state = 6110; this.match(MySqlParser.KW_COMPONENT); - this.state = 6061; + this.state = 6111; localContext._component_name = this.uid(); - this.state = 6066; + this.state = 6116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6062; + this.state = 6112; this.match(MySqlParser.COMMA); - this.state = 6063; + this.state = 6113; localContext._component_name = this.uid(); } } - this.state = 6068; + this.state = 6118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6078; + this.state = 6128; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 869, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { case 1: { - this.state = 6069; + this.state = 6119; this.match(MySqlParser.KW_SET); - this.state = 6070; + this.state = 6120; this.variableExpr(); - this.state = 6075; + this.state = 6125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6071; + this.state = 6121; this.match(MySqlParser.COMMA); - this.state = 6072; + this.state = 6122; this.variableExpr(); } } - this.state = 6077; + this.state = 6127; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33075,12 +33852,12 @@ export class MySqlParser extends SQLParserBase { } public variableExpr(): VariableExprContext { let localContext = new VariableExprContext(this.context, this.state); - this.enterRule(localContext, 540, MySqlParser.RULE_variableExpr); + this.enterRule(localContext, 544, MySqlParser.RULE_variableExpr); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6080; + this.state = 6130; _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 531 || _la === 893 || _la === 894)) { this.errorHandler.recoverInline(this); @@ -33089,11 +33866,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6081; + this.state = 6131; localContext._system_var_name = this.fullId(); - this.state = 6082; + this.state = 6132; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6083; + this.state = 6133; this.expression(0); } } @@ -33113,30 +33890,30 @@ export class MySqlParser extends SQLParserBase { } public uninstallComponent(): UninstallComponentContext { let localContext = new UninstallComponentContext(this.context, this.state); - this.enterRule(localContext, 542, MySqlParser.RULE_uninstallComponent); + this.enterRule(localContext, 546, MySqlParser.RULE_uninstallComponent); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6085; + this.state = 6135; this.match(MySqlParser.KW_UNINSTALL); - this.state = 6086; + this.state = 6136; this.match(MySqlParser.KW_COMPONENT); - this.state = 6087; + this.state = 6137; localContext._component_name = this.uid(); - this.state = 6092; + this.state = 6142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6088; + this.state = 6138; this.match(MySqlParser.COMMA); - this.state = 6089; + this.state = 6139; localContext._component_name = this.uid(); } } - this.state = 6094; + this.state = 6144; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33158,19 +33935,19 @@ export class MySqlParser extends SQLParserBase { } public installPlugin(): InstallPluginContext { let localContext = new InstallPluginContext(this.context, this.state); - this.enterRule(localContext, 544, MySqlParser.RULE_installPlugin); + this.enterRule(localContext, 548, MySqlParser.RULE_installPlugin); try { this.enterOuterAlt(localContext, 1); { - this.state = 6095; + this.state = 6145; this.match(MySqlParser.KW_INSTALL); - this.state = 6096; + this.state = 6146; this.match(MySqlParser.KW_PLUGIN); - this.state = 6097; + this.state = 6147; localContext._pluginName = this.uid(); - this.state = 6098; + this.state = 6148; this.match(MySqlParser.KW_SONAME); - this.state = 6099; + this.state = 6149; this.match(MySqlParser.STRING_LITERAL); } } @@ -33190,15 +33967,15 @@ export class MySqlParser extends SQLParserBase { } public uninstallPlugin(): UninstallPluginContext { let localContext = new UninstallPluginContext(this.context, this.state); - this.enterRule(localContext, 546, MySqlParser.RULE_uninstallPlugin); + this.enterRule(localContext, 550, MySqlParser.RULE_uninstallPlugin); try { this.enterOuterAlt(localContext, 1); { - this.state = 6101; + this.state = 6151; this.match(MySqlParser.KW_UNINSTALL); - this.state = 6102; + this.state = 6152; this.match(MySqlParser.KW_PLUGIN); - this.state = 6103; + this.state = 6153; localContext._pluginName = this.uid(); } } @@ -33218,96 +33995,96 @@ export class MySqlParser extends SQLParserBase { } public cloneStatement(): CloneStatementContext { let localContext = new CloneStatementContext(this.context, this.state); - this.enterRule(localContext, 548, MySqlParser.RULE_cloneStatement); + this.enterRule(localContext, 552, MySqlParser.RULE_cloneStatement); let _la: number; try { - this.state = 6135; + this.state = 6185; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 876, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 885, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6105; + this.state = 6155; this.match(MySqlParser.KW_CLONE); - this.state = 6106; + this.state = 6156; this.match(MySqlParser.KW_LOCAL); - this.state = 6107; + this.state = 6157; this.match(MySqlParser.KW_DATA); - this.state = 6108; + this.state = 6158; this.match(MySqlParser.KW_DIRECTORY); - this.state = 6110; + this.state = 6160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 6109; + this.state = 6159; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 6112; + this.state = 6162; this.match(MySqlParser.STRING_LITERAL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6113; + this.state = 6163; this.match(MySqlParser.KW_CLONE); - this.state = 6114; + this.state = 6164; this.match(MySqlParser.KW_INSTANCE); - this.state = 6115; + this.state = 6165; this.match(MySqlParser.KW_FROM); - this.state = 6116; + this.state = 6166; this.userHostPort(); - this.state = 6117; + this.state = 6167; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 6118; + this.state = 6168; this.match(MySqlParser.KW_BY); - this.state = 6119; + this.state = 6169; this.match(MySqlParser.STRING_LITERAL); - this.state = 6126; + this.state = 6176; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 360) { { - this.state = 6120; + this.state = 6170; this.match(MySqlParser.KW_DATA); - this.state = 6121; + this.state = 6171; this.match(MySqlParser.KW_DIRECTORY); - this.state = 6123; + this.state = 6173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 6122; + this.state = 6172; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 6125; + this.state = 6175; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 6133; + this.state = 6183; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 6128; + this.state = 6178; this.match(MySqlParser.KW_REQUIRE); - this.state = 6130; + this.state = 6180; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 6129; + this.state = 6179; this.match(MySqlParser.KW_NO); } } - this.state = 6132; + this.state = 6182; this.match(MySqlParser.KW_SSL); } } @@ -33332,21 +34109,21 @@ export class MySqlParser extends SQLParserBase { } public setStatement(): SetStatementContext { let localContext = new SetStatementContext(this.context, this.state); - this.enterRule(localContext, 550, MySqlParser.RULE_setStatement); + this.enterRule(localContext, 554, MySqlParser.RULE_setStatement); let _la: number; try { - this.state = 6189; + this.state = 6239; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 884, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 893, this.context) ) { case 1: localContext = new SetVariableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6137; + this.state = 6187; this.match(MySqlParser.KW_SET); - this.state = 6138; + this.state = 6188; this.variableClause(); - this.state = 6139; + this.state = 6189; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33355,33 +34132,33 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6142; + this.state = 6192; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 877, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 886, this.context) ) { case 1: { - this.state = 6140; + this.state = 6190; this.expression(0); } break; case 2: { - this.state = 6141; + this.state = 6191; this.match(MySqlParser.KW_ON); } break; } - this.state = 6153; + this.state = 6203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6144; + this.state = 6194; this.match(MySqlParser.COMMA); - this.state = 6145; + this.state = 6195; this.variableClause(); - this.state = 6146; + this.state = 6196; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33390,25 +34167,25 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6149; + this.state = 6199; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { case 1: { - this.state = 6147; + this.state = 6197; this.expression(0); } break; case 2: { - this.state = 6148; + this.state = 6198; this.match(MySqlParser.KW_ON); } break; } } } - this.state = 6155; + this.state = 6205; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33418,11 +34195,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SetCharsetContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6156; + this.state = 6206; this.match(MySqlParser.KW_SET); - this.state = 6157; + this.state = 6207; this.charSet(); - this.state = 6160; + this.state = 6210; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -33470,13 +34247,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 6158; + this.state = 6208; this.charsetName(); } break; case MySqlParser.KW_DEFAULT: { - this.state = 6159; + this.state = 6209; this.match(MySqlParser.KW_DEFAULT); } break; @@ -33489,11 +34266,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SetNamesContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6162; + this.state = 6212; this.match(MySqlParser.KW_SET); - this.state = 6163; + this.state = 6213; this.match(MySqlParser.KW_NAMES); - this.state = 6170; + this.state = 6220; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -33541,16 +34318,16 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 6164; + this.state = 6214; this.charsetName(); - this.state = 6167; + this.state = 6217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 6165; + this.state = 6215; this.match(MySqlParser.KW_COLLATE); - this.state = 6166; + this.state = 6216; this.collationName(); } } @@ -33559,7 +34336,7 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_DEFAULT: { - this.state = 6169; + this.state = 6219; this.match(MySqlParser.KW_DEFAULT); } break; @@ -33572,7 +34349,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SetPasswordContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 6172; + this.state = 6222; this.setPasswordStatement(); } break; @@ -33580,7 +34357,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SetTransactionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 6173; + this.state = 6223; this.setTransactionStatement(); } break; @@ -33588,7 +34365,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SetAutocommitContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 6174; + this.state = 6224; this.setAutocommitStatement(); } break; @@ -33596,11 +34373,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SetNewValueInsideTriggerContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 6175; + this.state = 6225; this.match(MySqlParser.KW_SET); - this.state = 6176; + this.state = 6226; (localContext as SetNewValueInsideTriggerContext)._system_var_name = this.fullId(); - this.state = 6177; + this.state = 6227; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33609,19 +34386,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6178; + this.state = 6228; this.expression(0); - this.state = 6186; + this.state = 6236; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6179; + this.state = 6229; this.match(MySqlParser.COMMA); - this.state = 6180; + this.state = 6230; (localContext as SetNewValueInsideTriggerContext)._system_var_name = this.fullId(); - this.state = 6181; + this.state = 6231; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33630,11 +34407,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6182; + this.state = 6232; this.expression(0); } } - this.state = 6188; + this.state = 6238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33658,19 +34435,19 @@ export class MySqlParser extends SQLParserBase { } public showStatement(): ShowStatementContext { let localContext = new ShowStatementContext(this.context, this.state); - this.enterRule(localContext, 552, MySqlParser.RULE_showStatement); + this.enterRule(localContext, 556, MySqlParser.RULE_showStatement); let _la: number; try { - this.state = 6375; + this.state = 6425; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 913, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 922, this.context) ) { case 1: localContext = new ShowMasterLogsContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6191; + this.state = 6241; this.match(MySqlParser.KW_SHOW); - this.state = 6192; + this.state = 6242; (localContext as ShowMasterLogsContext)._logFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 228 || _la === 453)) { @@ -33680,7 +34457,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6193; + this.state = 6243; this.match(MySqlParser.KW_LOGS); } break; @@ -33688,9 +34465,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowLogEventsContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6194; + this.state = 6244; this.match(MySqlParser.KW_SHOW); - this.state = 6195; + this.state = 6245; (localContext as ShowLogEventsContext)._logFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 318 || _la === 559)) { @@ -33700,62 +34477,62 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6196; + this.state = 6246; this.match(MySqlParser.KW_EVENTS); - this.state = 6199; + this.state = 6249; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 6197; + this.state = 6247; this.match(MySqlParser.KW_IN); - this.state = 6198; + this.state = 6248; (localContext as ShowLogEventsContext)._filename = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 6203; + this.state = 6253; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68) { { - this.state = 6201; + this.state = 6251; this.match(MySqlParser.KW_FROM); - this.state = 6202; + this.state = 6252; (localContext as ShowLogEventsContext)._fromPosition = this.decimalLiteral(); } } - this.state = 6212; + this.state = 6262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6205; + this.state = 6255; this.match(MySqlParser.KW_LIMIT); - this.state = 6209; + this.state = 6259; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 896, this.context) ) { case 1: { - this.state = 6206; + this.state = 6256; (localContext as ShowLogEventsContext)._offset = this.decimalLiteral(); - this.state = 6207; + this.state = 6257; this.match(MySqlParser.COMMA); } break; } - this.state = 6211; + this.state = 6261; (localContext as ShowLogEventsContext)._rowCount = this.decimalLiteral(); } } - this.state = 6215; + this.state = 6265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6214; + this.state = 6264; this.channelOption(); } } @@ -33766,16 +34543,16 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowObjectFilterContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6217; + this.state = 6267; this.match(MySqlParser.KW_SHOW); - this.state = 6218; + this.state = 6268; this.showCommonEntity(); - this.state = 6220; + this.state = 6270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6219; + this.state = 6269; this.showFilter(); } } @@ -33786,29 +34563,29 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowColumnsContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 6222; + this.state = 6272; this.match(MySqlParser.KW_SHOW); - this.state = 6224; + this.state = 6274; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6223; + this.state = 6273; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6227; + this.state = 6277; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 408) { { - this.state = 6226; + this.state = 6276; this.match(MySqlParser.KW_FULL); } } - this.state = 6229; + this.state = 6279; (localContext as ShowColumnsContext)._columnsFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 337 || _la === 398)) { @@ -33818,7 +34595,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6230; + this.state = 6280; (localContext as ShowColumnsContext)._tableFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -33828,14 +34605,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6231; + this.state = 6281; this.tableName(); - this.state = 6234; + this.state = 6284; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6232; + this.state = 6282; (localContext as ShowColumnsContext)._schemaFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -33845,17 +34622,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6233; + this.state = 6283; this.databaseName(); } } - this.state = 6237; + this.state = 6287; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6236; + this.state = 6286; this.showFilter(); } } @@ -33866,11 +34643,11 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateDbContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 6239; + this.state = 6289; this.match(MySqlParser.KW_SHOW); - this.state = 6240; + this.state = 6290; this.match(MySqlParser.KW_CREATE); - this.state = 6241; + this.state = 6291; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { this.errorHandler.recoverInline(this); @@ -33879,17 +34656,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6243; + this.state = 6293; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 895, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 904, this.context) ) { case 1: { - this.state = 6242; + this.state = 6292; this.ifNotExists(); } break; } - this.state = 6245; + this.state = 6295; this.databaseName(); } break; @@ -33897,11 +34674,11 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateFullIdObjectContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 6246; + this.state = 6296; this.match(MySqlParser.KW_SHOW); - this.state = 6247; + this.state = 6297; this.match(MySqlParser.KW_CREATE); - this.state = 6248; + this.state = 6298; _la = this.tokenStream.LA(1); if(!(_la === 132 || _la === 178 || _la === 385)) { this.errorHandler.recoverInline(this); @@ -33910,7 +34687,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6249; + this.state = 6299; this.fullId(); } break; @@ -33918,13 +34695,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateFunctionContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 6250; + this.state = 6300; this.match(MySqlParser.KW_SHOW); - this.state = 6251; + this.state = 6301; this.match(MySqlParser.KW_CREATE); - this.state = 6252; + this.state = 6302; this.match(MySqlParser.KW_FUNCTION); - this.state = 6253; + this.state = 6303; this.functionName(); } break; @@ -33932,13 +34709,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateViewContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 6254; + this.state = 6304; this.match(MySqlParser.KW_SHOW); - this.state = 6255; + this.state = 6305; this.match(MySqlParser.KW_CREATE); - this.state = 6256; + this.state = 6306; this.match(MySqlParser.KW_VIEW); - this.state = 6257; + this.state = 6307; this.viewName(); } break; @@ -33946,13 +34723,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateTableContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 6258; + this.state = 6308; this.match(MySqlParser.KW_SHOW); - this.state = 6259; + this.state = 6309; this.match(MySqlParser.KW_CREATE); - this.state = 6260; + this.state = 6310; this.match(MySqlParser.KW_TABLE); - this.state = 6261; + this.state = 6311; this.tableName(); } break; @@ -33960,13 +34737,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateUserContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 6262; + this.state = 6312; this.match(MySqlParser.KW_SHOW); - this.state = 6263; + this.state = 6313; this.match(MySqlParser.KW_CREATE); - this.state = 6264; + this.state = 6314; this.match(MySqlParser.KW_USER); - this.state = 6265; + this.state = 6315; this.userName(); } break; @@ -33974,13 +34751,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowEngineContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 6266; + this.state = 6316; this.match(MySqlParser.KW_SHOW); - this.state = 6267; + this.state = 6317; this.match(MySqlParser.KW_ENGINE); - this.state = 6268; + this.state = 6318; this.engineName(); - this.state = 6269; + this.state = 6319; (localContext as ShowEngineContext)._engineOption = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 493 || _la === 645)) { @@ -33996,9 +34773,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowGlobalInfoContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 6271; + this.state = 6321; this.match(MySqlParser.KW_SHOW); - this.state = 6272; + this.state = 6322; this.showGlobalInfoClause(); } break; @@ -34006,9 +34783,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowErrorsContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 6273; + this.state = 6323; this.match(MySqlParser.KW_SHOW); - this.state = 6274; + this.state = 6324; (localContext as ShowErrorsContext)._errorFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 383 || _la === 688)) { @@ -34018,26 +34795,26 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6282; + this.state = 6332; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6275; + this.state = 6325; this.match(MySqlParser.KW_LIMIT); - this.state = 6279; + this.state = 6329; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 896, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 905, this.context) ) { case 1: { - this.state = 6276; + this.state = 6326; (localContext as ShowErrorsContext)._offset = this.decimalLiteral(); - this.state = 6277; + this.state = 6327; this.match(MySqlParser.COMMA); } break; } - this.state = 6281; + this.state = 6331; (localContext as ShowErrorsContext)._rowCount = this.decimalLiteral(); } } @@ -34048,17 +34825,17 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCountErrorsContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 6284; + this.state = 6334; this.match(MySqlParser.KW_SHOW); - this.state = 6285; + this.state = 6335; this.match(MySqlParser.KW_COUNT); - this.state = 6286; + this.state = 6336; this.match(MySqlParser.LR_BRACKET); - this.state = 6287; + this.state = 6337; this.match(MySqlParser.STAR); - this.state = 6288; + this.state = 6338; this.match(MySqlParser.RR_BRACKET); - this.state = 6289; + this.state = 6339; (localContext as ShowCountErrorsContext)._errorFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 383 || _la === 688)) { @@ -34074,16 +34851,16 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowSchemaFilterContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 6290; + this.state = 6340; this.match(MySqlParser.KW_SHOW); - this.state = 6291; + this.state = 6341; this.showSchemaEntity(); - this.state = 6294; + this.state = 6344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6292; + this.state = 6342; (localContext as ShowSchemaFilterContext)._schemaFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -34093,17 +34870,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6293; + this.state = 6343; this.databaseName(); } } - this.state = 6297; + this.state = 6347; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6296; + this.state = 6346; this.showFilter(); } } @@ -34114,13 +34891,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowPercedureCodeContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 6299; + this.state = 6349; this.match(MySqlParser.KW_SHOW); - this.state = 6300; + this.state = 6350; this.match(MySqlParser.KW_PROCEDURE); - this.state = 6301; + this.state = 6351; this.match(MySqlParser.KW_CODE); - this.state = 6302; + this.state = 6352; (localContext as ShowPercedureCodeContext)._proc_name = this.fullId(); } break; @@ -34128,13 +34905,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowFunctionCodeContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 6303; + this.state = 6353; this.match(MySqlParser.KW_SHOW); - this.state = 6304; + this.state = 6354; this.match(MySqlParser.KW_FUNCTION); - this.state = 6305; + this.state = 6355; this.match(MySqlParser.KW_CODE); - this.state = 6306; + this.state = 6356; this.functionName(); } break; @@ -34142,27 +34919,27 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowGrantsContext(localContext); this.enterOuterAlt(localContext, 18); { - this.state = 6307; + this.state = 6357; this.match(MySqlParser.KW_SHOW); - this.state = 6308; + this.state = 6358; this.match(MySqlParser.KW_GRANTS); - this.state = 6315; + this.state = 6365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6309; + this.state = 6359; this.match(MySqlParser.KW_FOR); - this.state = 6310; + this.state = 6360; this.userOrRoleName(); - this.state = 6313; + this.state = 6363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 6311; + this.state = 6361; this.match(MySqlParser.KW_USING); - this.state = 6312; + this.state = 6362; this.userOrRoleNames(); } } @@ -34176,19 +34953,19 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowIndexesContext(localContext); this.enterOuterAlt(localContext, 19); { - this.state = 6317; + this.state = 6367; this.match(MySqlParser.KW_SHOW); - this.state = 6319; + this.state = 6369; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6318; + this.state = 6368; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6321; + this.state = 6371; (localContext as ShowIndexesContext)._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 93 || _la === 426)) { @@ -34198,7 +34975,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6322; + this.state = 6372; (localContext as ShowIndexesContext)._tableFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -34208,14 +34985,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6323; + this.state = 6373; this.tableName(); - this.state = 6326; + this.state = 6376; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6324; + this.state = 6374; (localContext as ShowIndexesContext)._schemaFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -34225,19 +35002,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6325; + this.state = 6375; this.databaseName(); } } - this.state = 6330; + this.state = 6380; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 6328; + this.state = 6378; this.match(MySqlParser.KW_WHERE); - this.state = 6329; + this.state = 6379; this.expression(0); } } @@ -34248,18 +35025,18 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowOpenTablesContext(localContext); this.enterOuterAlt(localContext, 20); { - this.state = 6332; + this.state = 6382; this.match(MySqlParser.KW_SHOW); - this.state = 6333; + this.state = 6383; this.match(MySqlParser.KW_OPEN); - this.state = 6334; + this.state = 6384; this.match(MySqlParser.KW_TABLES); - this.state = 6337; + this.state = 6387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6335; + this.state = 6385; _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { this.errorHandler.recoverInline(this); @@ -34268,17 +35045,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6336; + this.state = 6386; this.databaseName(); } } - this.state = 6340; + this.state = 6390; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6339; + this.state = 6389; this.showFilter(); } } @@ -34289,67 +35066,67 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowProfileContext(localContext); this.enterOuterAlt(localContext, 21); { - this.state = 6342; + this.state = 6392; this.match(MySqlParser.KW_SHOW); - this.state = 6343; + this.state = 6393; this.match(MySqlParser.KW_PROFILE); - this.state = 6352; + this.state = 6402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 320 || _la === 355 || _la === 358 || _la === 439 || _la === 521 || _la === 605 || _la === 655 || _la === 802) { { - this.state = 6344; + this.state = 6394; this.showProfileType(); - this.state = 6349; + this.state = 6399; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6345; + this.state = 6395; this.match(MySqlParser.COMMA); - this.state = 6346; + this.state = 6396; this.showProfileType(); } } - this.state = 6351; + this.state = 6401; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 6357; + this.state = 6407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6354; + this.state = 6404; this.match(MySqlParser.KW_FOR); - this.state = 6355; + this.state = 6405; this.match(MySqlParser.KW_QUERY); - this.state = 6356; + this.state = 6406; (localContext as ShowProfileContext)._queryCount = this.decimalLiteral(); } } - this.state = 6365; + this.state = 6415; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6359; + this.state = 6409; this.match(MySqlParser.KW_LIMIT); - this.state = 6360; + this.state = 6410; (localContext as ShowProfileContext)._rowCount = this.decimalLiteral(); - this.state = 6363; + this.state = 6413; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 509) { { - this.state = 6361; + this.state = 6411; this.match(MySqlParser.KW_OFFSET); - this.state = 6362; + this.state = 6412; (localContext as ShowProfileContext)._offset = this.decimalLiteral(); } } @@ -34363,9 +35140,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowSlaveStatusContext(localContext); this.enterOuterAlt(localContext, 22); { - this.state = 6367; + this.state = 6417; this.match(MySqlParser.KW_SHOW); - this.state = 6368; + this.state = 6418; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -34374,14 +35151,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6369; + this.state = 6419; this.match(MySqlParser.KW_STATUS); - this.state = 6371; + this.state = 6421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6370; + this.state = 6420; this.channelOption(); } } @@ -34392,9 +35169,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowReplicasContext(localContext); this.enterOuterAlt(localContext, 23); { - this.state = 6373; + this.state = 6423; this.match(MySqlParser.KW_SHOW); - this.state = 6374; + this.state = 6424; this.match(MySqlParser.KW_REPLICAS); } break; @@ -34416,23 +35193,23 @@ export class MySqlParser extends SQLParserBase { } public variableClause(): VariableClauseContext { let localContext = new VariableClauseContext(this.context, this.state); - this.enterRule(localContext, 554, MySqlParser.RULE_variableClause); + this.enterRule(localContext, 558, MySqlParser.RULE_variableClause); let _la: number; try { - this.state = 6387; + this.state = 6437; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LOCAL_ID: this.enterOuterAlt(localContext, 1); { - this.state = 6377; + this.state = 6427; this.match(MySqlParser.LOCAL_ID); } break; case MySqlParser.GLOBAL_ID: this.enterOuterAlt(localContext, 2); { - this.state = 6378; + this.state = 6428; this.match(MySqlParser.GLOBAL_ID); } break; @@ -34768,6 +35545,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -34989,24 +35767,24 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 3); { - this.state = 6384; + this.state = 6434; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 915, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 924, this.context) ) { case 1: { - this.state = 6381; + this.state = 6431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 870) { { - this.state = 6379; + this.state = 6429; this.match(MySqlParser.AT_SIGN); - this.state = 6380; + this.state = 6430; this.match(MySqlParser.AT_SIGN); } } - this.state = 6383; + this.state = 6433; _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 450 || _la === 531 || _la === 532 || _la === 593)) { this.errorHandler.recoverInline(this); @@ -35018,7 +35796,7 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 6386; + this.state = 6436; localContext._target = this.uid(); } break; @@ -35042,64 +35820,64 @@ export class MySqlParser extends SQLParserBase { } public showCommonEntity(): ShowCommonEntityContext { let localContext = new ShowCommonEntityContext(this.context, this.state); - this.enterRule(localContext, 556, MySqlParser.RULE_showCommonEntity); + this.enterRule(localContext, 560, MySqlParser.RULE_showCommonEntity); let _la: number; try { - this.state = 6403; + this.state = 6453; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CHARACTER: this.enterOuterAlt(localContext, 1); { - this.state = 6389; + this.state = 6439; this.match(MySqlParser.KW_CHARACTER); - this.state = 6390; + this.state = 6440; this.match(MySqlParser.KW_SET); } break; case MySqlParser.KW_CHARSET: this.enterOuterAlt(localContext, 2); { - this.state = 6391; + this.state = 6441; this.match(MySqlParser.KW_CHARSET); } break; case MySqlParser.KW_COLLATION: this.enterOuterAlt(localContext, 3); { - this.state = 6392; + this.state = 6442; this.match(MySqlParser.KW_COLLATION); } break; case MySqlParser.KW_DATABASES: this.enterOuterAlt(localContext, 4); { - this.state = 6393; + this.state = 6443; this.match(MySqlParser.KW_DATABASES); } break; case MySqlParser.KW_SCHEMAS: this.enterOuterAlt(localContext, 5); { - this.state = 6394; + this.state = 6444; this.match(MySqlParser.KW_SCHEMAS); } break; case MySqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 6); { - this.state = 6395; + this.state = 6445; this.match(MySqlParser.KW_FUNCTION); - this.state = 6396; + this.state = 6446; this.match(MySqlParser.KW_STATUS); } break; case MySqlParser.KW_PROCEDURE: this.enterOuterAlt(localContext, 7); { - this.state = 6397; + this.state = 6447; this.match(MySqlParser.KW_PROCEDURE); - this.state = 6398; + this.state = 6448; this.match(MySqlParser.KW_STATUS); } break; @@ -35109,12 +35887,12 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VARIABLES: this.enterOuterAlt(localContext, 8); { - this.state = 6400; + this.state = 6450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 413 || _la === 593) { { - this.state = 6399; + this.state = 6449; _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 593)) { this.errorHandler.recoverInline(this); @@ -35126,7 +35904,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6402; + this.state = 6452; _la = this.tokenStream.LA(1); if(!(_la === 645 || _la === 683)) { this.errorHandler.recoverInline(this); @@ -35157,26 +35935,26 @@ export class MySqlParser extends SQLParserBase { } public showFilter(): ShowFilterContext { let localContext = new ShowFilterContext(this.context, this.state); - this.enterRule(localContext, 558, MySqlParser.RULE_showFilter); + this.enterRule(localContext, 562, MySqlParser.RULE_showFilter); try { - this.state = 6409; + this.state = 6459; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_LIKE: this.enterOuterAlt(localContext, 1); { - this.state = 6405; + this.state = 6455; this.match(MySqlParser.KW_LIKE); - this.state = 6406; + this.state = 6456; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_WHERE: this.enterOuterAlt(localContext, 2); { - this.state = 6407; + this.state = 6457; this.match(MySqlParser.KW_WHERE); - this.state = 6408; + this.state = 6458; this.expression(0); } break; @@ -35200,50 +35978,50 @@ export class MySqlParser extends SQLParserBase { } public showGlobalInfoClause(): ShowGlobalInfoClauseContext { let localContext = new ShowGlobalInfoClauseContext(this.context, this.state); - this.enterRule(localContext, 560, MySqlParser.RULE_showGlobalInfoClause); + this.enterRule(localContext, 564, MySqlParser.RULE_showGlobalInfoClause); let _la: number; try { - this.state = 6428; + this.state = 6478; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ENGINES: case MySqlParser.KW_STORAGE: this.enterOuterAlt(localContext, 1); { - this.state = 6412; + this.state = 6462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 647) { { - this.state = 6411; + this.state = 6461; this.match(MySqlParser.KW_STORAGE); } } - this.state = 6414; + this.state = 6464; this.match(MySqlParser.KW_ENGINES); } break; case MySqlParser.KW_MASTER: this.enterOuterAlt(localContext, 2); { - this.state = 6415; + this.state = 6465; this.match(MySqlParser.KW_MASTER); - this.state = 6416; + this.state = 6466; this.match(MySqlParser.KW_STATUS); } break; case MySqlParser.KW_PLUGINS: this.enterOuterAlt(localContext, 3); { - this.state = 6417; + this.state = 6467; this.match(MySqlParser.KW_PLUGINS); } break; case MySqlParser.KW_PRIVILEGES: this.enterOuterAlt(localContext, 4); { - this.state = 6418; + this.state = 6468; this.match(MySqlParser.KW_PRIVILEGES); } break; @@ -35251,47 +36029,47 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_PROCESSLIST: this.enterOuterAlt(localContext, 5); { - this.state = 6420; + this.state = 6470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 408) { { - this.state = 6419; + this.state = 6469; this.match(MySqlParser.KW_FULL); } } - this.state = 6422; + this.state = 6472; this.match(MySqlParser.KW_PROCESSLIST); } break; case MySqlParser.KW_PROFILES: this.enterOuterAlt(localContext, 6); { - this.state = 6423; + this.state = 6473; this.match(MySqlParser.KW_PROFILES); } break; case MySqlParser.KW_SLAVE: this.enterOuterAlt(localContext, 7); { - this.state = 6424; + this.state = 6474; this.match(MySqlParser.KW_SLAVE); - this.state = 6425; + this.state = 6475; this.match(MySqlParser.KW_HOSTS); } break; case MySqlParser.KW_AUTHORS: this.enterOuterAlt(localContext, 8); { - this.state = 6426; + this.state = 6476; this.match(MySqlParser.KW_AUTHORS); } break; case MySqlParser.KW_CONTRIBUTORS: this.enterOuterAlt(localContext, 9); { - this.state = 6427; + this.state = 6477; this.match(MySqlParser.KW_CONTRIBUTORS); } break; @@ -35315,25 +36093,25 @@ export class MySqlParser extends SQLParserBase { } public showSchemaEntity(): ShowSchemaEntityContext { let localContext = new ShowSchemaEntityContext(this.context, this.state); - this.enterRule(localContext, 562, MySqlParser.RULE_showSchemaEntity); + this.enterRule(localContext, 566, MySqlParser.RULE_showSchemaEntity); let _la: number; try { - this.state = 6441; + this.state = 6491; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_EVENTS: this.enterOuterAlt(localContext, 1); { - this.state = 6430; + this.state = 6480; this.match(MySqlParser.KW_EVENTS); } break; case MySqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 6431; + this.state = 6481; this.match(MySqlParser.KW_TABLE); - this.state = 6432; + this.state = 6482; this.match(MySqlParser.KW_STATUS); } break; @@ -35342,34 +36120,34 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_TABLES: this.enterOuterAlt(localContext, 3); { - this.state = 6434; + this.state = 6484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6433; + this.state = 6483; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6437; + this.state = 6487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 408) { { - this.state = 6436; + this.state = 6486; this.match(MySqlParser.KW_FULL); } } - this.state = 6439; + this.state = 6489; this.match(MySqlParser.KW_TABLES); } break; case MySqlParser.KW_TRIGGERS: this.enterOuterAlt(localContext, 4); { - this.state = 6440; + this.state = 6490; this.match(MySqlParser.KW_TRIGGERS); } break; @@ -35393,77 +36171,77 @@ export class MySqlParser extends SQLParserBase { } public showProfileType(): ShowProfileTypeContext { let localContext = new ShowProfileTypeContext(this.context, this.state); - this.enterRule(localContext, 564, MySqlParser.RULE_showProfileType); + this.enterRule(localContext, 568, MySqlParser.RULE_showProfileType); try { - this.state = 6455; + this.state = 6505; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 6443; + this.state = 6493; this.match(MySqlParser.KW_ALL); } break; case MySqlParser.KW_BLOCK: this.enterOuterAlt(localContext, 2); { - this.state = 6444; + this.state = 6494; this.match(MySqlParser.KW_BLOCK); - this.state = 6445; + this.state = 6495; this.match(MySqlParser.KW_IO); } break; case MySqlParser.KW_CONTEXT: this.enterOuterAlt(localContext, 3); { - this.state = 6446; + this.state = 6496; this.match(MySqlParser.KW_CONTEXT); - this.state = 6447; + this.state = 6497; this.match(MySqlParser.KW_SWITCHES); } break; case MySqlParser.KW_CPU: this.enterOuterAlt(localContext, 4); { - this.state = 6448; + this.state = 6498; this.match(MySqlParser.KW_CPU); } break; case MySqlParser.KW_IPC: this.enterOuterAlt(localContext, 5); { - this.state = 6449; + this.state = 6499; this.match(MySqlParser.KW_IPC); } break; case MySqlParser.KW_MEMORY: this.enterOuterAlt(localContext, 6); { - this.state = 6450; + this.state = 6500; this.match(MySqlParser.KW_MEMORY); } break; case MySqlParser.KW_PAGE: this.enterOuterAlt(localContext, 7); { - this.state = 6451; + this.state = 6501; this.match(MySqlParser.KW_PAGE); - this.state = 6452; + this.state = 6502; this.match(MySqlParser.KW_FAULTS); } break; case MySqlParser.KW_SOURCE: this.enterOuterAlt(localContext, 8); { - this.state = 6453; + this.state = 6503; this.match(MySqlParser.KW_SOURCE); } break; case MySqlParser.KW_SWAPS: this.enterOuterAlt(localContext, 9); { - this.state = 6454; + this.state = 6504; this.match(MySqlParser.KW_SWAPS); } break; @@ -35487,13 +36265,13 @@ export class MySqlParser extends SQLParserBase { } public binlogStatement(): BinlogStatementContext { let localContext = new BinlogStatementContext(this.context, this.state); - this.enterRule(localContext, 566, MySqlParser.RULE_binlogStatement); + this.enterRule(localContext, 570, MySqlParser.RULE_binlogStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6457; + this.state = 6507; this.match(MySqlParser.KW_BINLOG); - this.state = 6458; + this.state = 6508; this.match(MySqlParser.STRING_LITERAL); } } @@ -35513,35 +36291,35 @@ export class MySqlParser extends SQLParserBase { } public cacheIndexStatement(): CacheIndexStatementContext { let localContext = new CacheIndexStatementContext(this.context, this.state); - this.enterRule(localContext, 568, MySqlParser.RULE_cacheIndexStatement); + this.enterRule(localContext, 572, MySqlParser.RULE_cacheIndexStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6460; + this.state = 6510; this.match(MySqlParser.KW_CACHE); - this.state = 6461; + this.state = 6511; this.match(MySqlParser.KW_INDEX); - this.state = 6479; + this.state = 6529; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 929, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 938, this.context) ) { case 1: { - this.state = 6462; + this.state = 6512; this.tableIndex(); - this.state = 6467; + this.state = 6517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6463; + this.state = 6513; this.match(MySqlParser.COMMA); - this.state = 6464; + this.state = 6514; this.tableIndex(); } } - this.state = 6469; + this.state = 6519; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -35549,13 +36327,13 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 6470; + this.state = 6520; this.tableName(); - this.state = 6471; + this.state = 6521; this.match(MySqlParser.KW_PARTITION); - this.state = 6472; + this.state = 6522; this.match(MySqlParser.LR_BRACKET); - this.state = 6475; + this.state = 6525; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -35888,6 +36666,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -36107,27 +36886,27 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 6473; + this.state = 6523; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 6474; + this.state = 6524; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6477; + this.state = 6527; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 6481; + this.state = 6531; this.match(MySqlParser.KW_IN); - this.state = 6482; + this.state = 6532; this.databaseName(); } } @@ -36147,38 +36926,38 @@ export class MySqlParser extends SQLParserBase { } public flushStatement(): FlushStatementContext { let localContext = new FlushStatementContext(this.context, this.state); - this.enterRule(localContext, 570, MySqlParser.RULE_flushStatement); + this.enterRule(localContext, 574, MySqlParser.RULE_flushStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6484; + this.state = 6534; this.match(MySqlParser.KW_FLUSH); - this.state = 6486; + this.state = 6536; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 6485; + this.state = 6535; this.tableActionOption(); } } - this.state = 6488; + this.state = 6538; this.flushOption(); - this.state = 6493; + this.state = 6543; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6489; + this.state = 6539; this.match(MySqlParser.COMMA); - this.state = 6490; + this.state = 6540; this.flushOption(); } } - this.state = 6495; + this.state = 6545; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36200,19 +36979,19 @@ export class MySqlParser extends SQLParserBase { } public killStatement(): KillStatementContext { let localContext = new KillStatementContext(this.context, this.state); - this.enterRule(localContext, 572, MySqlParser.RULE_killStatement); + this.enterRule(localContext, 576, MySqlParser.RULE_killStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6496; + this.state = 6546; this.match(MySqlParser.KW_KILL); - this.state = 6498; + this.state = 6548; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 932, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 941, this.context) ) { case 1: { - this.state = 6497; + this.state = 6547; localContext._connectionFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 349 || _la === 548)) { @@ -36225,7 +37004,7 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 6500; + this.state = 6550; this.expression(0); } } @@ -36245,34 +37024,34 @@ export class MySqlParser extends SQLParserBase { } public loadIndexIntoCache(): LoadIndexIntoCacheContext { let localContext = new LoadIndexIntoCacheContext(this.context, this.state); - this.enterRule(localContext, 574, MySqlParser.RULE_loadIndexIntoCache); + this.enterRule(localContext, 578, MySqlParser.RULE_loadIndexIntoCache); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6502; + this.state = 6552; this.match(MySqlParser.KW_LOAD); - this.state = 6503; + this.state = 6553; this.match(MySqlParser.KW_INDEX); - this.state = 6504; + this.state = 6554; this.match(MySqlParser.KW_INTO); - this.state = 6505; + this.state = 6555; this.match(MySqlParser.KW_CACHE); - this.state = 6506; + this.state = 6556; this.loadedTableIndexes(); - this.state = 6511; + this.state = 6561; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6507; + this.state = 6557; this.match(MySqlParser.COMMA); - this.state = 6508; + this.state = 6558; this.loadedTableIndexes(); } } - this.state = 6513; + this.state = 6563; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36294,28 +37073,28 @@ export class MySqlParser extends SQLParserBase { } public resetStatement(): ResetStatementContext { let localContext = new ResetStatementContext(this.context, this.state); - this.enterRule(localContext, 576, MySqlParser.RULE_resetStatement); + this.enterRule(localContext, 580, MySqlParser.RULE_resetStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6514; + this.state = 6564; this.match(MySqlParser.KW_RESET); - this.state = 6515; + this.state = 6565; this.resetOption(); - this.state = 6520; + this.state = 6570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6516; + this.state = 6566; this.match(MySqlParser.COMMA); - this.state = 6517; + this.state = 6567; this.resetOption(); } } - this.state = 6522; + this.state = 6572; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36337,38 +37116,38 @@ export class MySqlParser extends SQLParserBase { } public resetOption(): ResetOptionContext { let localContext = new ResetOptionContext(this.context, this.state); - this.enterRule(localContext, 578, MySqlParser.RULE_resetOption); + this.enterRule(localContext, 582, MySqlParser.RULE_resetOption); try { - this.state = 6528; + this.state = 6578; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_MASTER: this.enterOuterAlt(localContext, 1); { - this.state = 6523; + this.state = 6573; this.match(MySqlParser.KW_MASTER); } break; case MySqlParser.KW_REPLICA: this.enterOuterAlt(localContext, 2); { - this.state = 6524; + this.state = 6574; this.match(MySqlParser.KW_REPLICA); } break; case MySqlParser.KW_QUERY: this.enterOuterAlt(localContext, 3); { - this.state = 6525; + this.state = 6575; this.match(MySqlParser.KW_QUERY); - this.state = 6526; + this.state = 6576; this.match(MySqlParser.KW_CACHE); } break; case MySqlParser.KW_SLAVE: this.enterOuterAlt(localContext, 4); { - this.state = 6527; + this.state = 6577; this.match(MySqlParser.KW_SLAVE); } break; @@ -36392,30 +37171,30 @@ export class MySqlParser extends SQLParserBase { } public resetPersist(): ResetPersistContext { let localContext = new ResetPersistContext(this.context, this.state); - this.enterRule(localContext, 580, MySqlParser.RULE_resetPersist); + this.enterRule(localContext, 584, MySqlParser.RULE_resetPersist); try { this.enterOuterAlt(localContext, 1); { - this.state = 6530; + this.state = 6580; this.match(MySqlParser.KW_RESET); - this.state = 6531; + this.state = 6581; this.match(MySqlParser.KW_PERSIST); - this.state = 6536; + this.state = 6586; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 937, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { case 1: { - this.state = 6533; + this.state = 6583; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 936, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 945, this.context) ) { case 1: { - this.state = 6532; + this.state = 6582; this.ifExists(); } break; } - this.state = 6535; + this.state = 6585; localContext._system_var_name = this.uid(); } break; @@ -36438,14 +37217,14 @@ export class MySqlParser extends SQLParserBase { } public resetAllChannel(): ResetAllChannelContext { let localContext = new ResetAllChannelContext(this.context, this.state); - this.enterRule(localContext, 582, MySqlParser.RULE_resetAllChannel); + this.enterRule(localContext, 586, MySqlParser.RULE_resetAllChannel); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6538; + this.state = 6588; this.match(MySqlParser.KW_RESET); - this.state = 6539; + this.state = 6589; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -36454,22 +37233,22 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6541; + this.state = 6591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7) { { - this.state = 6540; + this.state = 6590; this.match(MySqlParser.KW_ALL); } } - this.state = 6544; + this.state = 6594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6543; + this.state = 6593; this.channelOption(); } } @@ -36492,11 +37271,11 @@ export class MySqlParser extends SQLParserBase { } public reStartStatement(): ReStartStatementContext { let localContext = new ReStartStatementContext(this.context, this.state); - this.enterRule(localContext, 584, MySqlParser.RULE_reStartStatement); + this.enterRule(localContext, 588, MySqlParser.RULE_reStartStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6546; + this.state = 6596; this.match(MySqlParser.KW_RESTART); } } @@ -36516,11 +37295,11 @@ export class MySqlParser extends SQLParserBase { } public shutdownStatement(): ShutdownStatementContext { let localContext = new ShutdownStatementContext(this.context, this.state); - this.enterRule(localContext, 586, MySqlParser.RULE_shutdownStatement); + this.enterRule(localContext, 590, MySqlParser.RULE_shutdownStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6548; + this.state = 6598; this.match(MySqlParser.KW_SHUTDOWN); } } @@ -36540,19 +37319,19 @@ export class MySqlParser extends SQLParserBase { } public tableIndex(): TableIndexContext { let localContext = new TableIndexContext(this.context, this.state); - this.enterRule(localContext, 588, MySqlParser.RULE_tableIndex); + this.enterRule(localContext, 592, MySqlParser.RULE_tableIndex); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6550; + this.state = 6600; this.tableName(); - this.state = 6556; + this.state = 6606; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 6551; + this.state = 6601; localContext._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -36562,11 +37341,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6552; + this.state = 6602; this.match(MySqlParser.LR_BRACKET); - this.state = 6553; + this.state = 6603; this.indexNames(); - this.state = 6554; + this.state = 6604; this.match(MySqlParser.RR_BRACKET); } } @@ -36589,28 +37368,28 @@ export class MySqlParser extends SQLParserBase { } public flushOption(): FlushOptionContext { let localContext = new FlushOptionContext(this.context, this.state); - this.enterRule(localContext, 590, MySqlParser.RULE_flushOption); + this.enterRule(localContext, 594, MySqlParser.RULE_flushOption); let _la: number; try { - this.state = 6590; + this.state = 6640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 947, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 956, this.context) ) { case 1: localContext = new SimpleFlushOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6576; + this.state = 6626; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DES_KEY_FILE: { - this.state = 6558; + this.state = 6608; this.match(MySqlParser.KW_DES_KEY_FILE); } break; case MySqlParser.KW_HOSTS: { - this.state = 6559; + this.state = 6609; this.match(MySqlParser.KW_HOSTS); } break; @@ -36622,12 +37401,12 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RELAY: case MySqlParser.KW_SLOW: { - this.state = 6561; + this.state = 6611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 228 || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 1073741829) !== 0) || _la === 556 || _la === 599) { { - this.state = 6560; + this.state = 6610; _la = this.tokenStream.LA(1); if(!(_la === 228 || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 1073741829) !== 0) || _la === 556 || _la === 599)) { this.errorHandler.recoverInline(this); @@ -36639,56 +37418,56 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6563; + this.state = 6613; this.match(MySqlParser.KW_LOGS); } break; case MySqlParser.KW_OPTIMIZER_COSTS: { - this.state = 6564; + this.state = 6614; this.match(MySqlParser.KW_OPTIMIZER_COSTS); } break; case MySqlParser.KW_PRIVILEGES: { - this.state = 6565; + this.state = 6615; this.match(MySqlParser.KW_PRIVILEGES); } break; case MySqlParser.KW_QUERY: { - this.state = 6566; + this.state = 6616; this.match(MySqlParser.KW_QUERY); - this.state = 6567; + this.state = 6617; this.match(MySqlParser.KW_CACHE); } break; case MySqlParser.KW_STATUS: { - this.state = 6568; + this.state = 6618; this.match(MySqlParser.KW_STATUS); } break; case MySqlParser.KW_USER_RESOURCES: { - this.state = 6569; + this.state = 6619; this.match(MySqlParser.KW_USER_RESOURCES); } break; case MySqlParser.KW_TABLES: { - this.state = 6570; + this.state = 6620; this.match(MySqlParser.KW_TABLES); - this.state = 6574; + this.state = 6624; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 942, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 951, this.context) ) { case 1: { - this.state = 6571; + this.state = 6621; this.match(MySqlParser.KW_WITH); - this.state = 6572; + this.state = 6622; this.match(MySqlParser.KW_READ); - this.state = 6573; + this.state = 6623; this.match(MySqlParser.KW_LOCK); } break; @@ -36704,16 +37483,16 @@ export class MySqlParser extends SQLParserBase { localContext = new ChannelFlushOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6578; + this.state = 6628; this.match(MySqlParser.KW_RELAY); - this.state = 6579; + this.state = 6629; this.match(MySqlParser.KW_LOGS); - this.state = 6581; + this.state = 6631; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6580; + this.state = 6630; this.channelOption(); } } @@ -36724,7 +37503,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableFlushOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6583; + this.state = 6633; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 752)) { this.errorHandler.recoverInline(this); @@ -36733,22 +37512,22 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6585; + this.state = 6635; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 945, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { case 1: { - this.state = 6584; + this.state = 6634; this.tableNames(); } break; } - this.state = 6588; + this.state = 6638; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 955, this.context) ) { case 1: { - this.state = 6587; + this.state = 6637; this.flushTableOption(); } break; @@ -36773,28 +37552,28 @@ export class MySqlParser extends SQLParserBase { } public flushTableOption(): FlushTableOptionContext { let localContext = new FlushTableOptionContext(this.context, this.state); - this.enterRule(localContext, 592, MySqlParser.RULE_flushTableOption); + this.enterRule(localContext, 596, MySqlParser.RULE_flushTableOption); try { - this.state = 6597; + this.state = 6647; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_WITH: this.enterOuterAlt(localContext, 1); { - this.state = 6592; + this.state = 6642; this.match(MySqlParser.KW_WITH); - this.state = 6593; + this.state = 6643; this.match(MySqlParser.KW_READ); - this.state = 6594; + this.state = 6644; this.match(MySqlParser.KW_LOCK); } break; case MySqlParser.KW_FOR: this.enterOuterAlt(localContext, 2); { - this.state = 6595; + this.state = 6645; this.match(MySqlParser.KW_FOR); - this.state = 6596; + this.state = 6646; this.match(MySqlParser.KW_EXPORT); } break; @@ -36818,23 +37597,23 @@ export class MySqlParser extends SQLParserBase { } public loadedTableIndexes(): LoadedTableIndexesContext { let localContext = new LoadedTableIndexesContext(this.context, this.state); - this.enterRule(localContext, 594, MySqlParser.RULE_loadedTableIndexes); + this.enterRule(localContext, 598, MySqlParser.RULE_loadedTableIndexes); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6599; + this.state = 6649; this.tableName(); - this.state = 6607; + this.state = 6657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 6600; + this.state = 6650; this.match(MySqlParser.KW_PARTITION); - this.state = 6601; + this.state = 6651; this.match(MySqlParser.LR_BRACKET); - this.state = 6604; + this.state = 6654; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -37167,6 +37946,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -37386,35 +38166,35 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 6602; + this.state = 6652; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 6603; + this.state = 6653; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6606; + this.state = 6656; this.match(MySqlParser.RR_BRACKET); } } - this.state = 6616; + this.state = 6666; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 952, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 961, this.context) ) { case 1: { - this.state = 6610; + this.state = 6660; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 6609; + this.state = 6659; localContext._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -37427,23 +38207,23 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6612; + this.state = 6662; this.match(MySqlParser.LR_BRACKET); - this.state = 6613; + this.state = 6663; this.indexNames(); - this.state = 6614; + this.state = 6664; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 6620; + this.state = 6670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 6618; + this.state = 6668; this.match(MySqlParser.KW_IGNORE); - this.state = 6619; + this.state = 6669; this.match(MySqlParser.KW_LEAVES); } } @@ -37466,12 +38246,12 @@ export class MySqlParser extends SQLParserBase { } public simpleDescribeStatement(): SimpleDescribeStatementContext { let localContext = new SimpleDescribeStatementContext(this.context, this.state); - this.enterRule(localContext, 596, MySqlParser.RULE_simpleDescribeStatement); + this.enterRule(localContext, 600, MySqlParser.RULE_simpleDescribeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6622; + this.state = 6672; localContext._command = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 131075) !== 0))) { @@ -37481,20 +38261,20 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6623; + this.state = 6673; this.tableName(); - this.state = 6626; + this.state = 6676; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 963, this.context) ) { case 1: { - this.state = 6624; + this.state = 6674; localContext._column = this.columnName(); } break; case 2: { - this.state = 6625; + this.state = 6675; localContext._pattern = this.match(MySqlParser.STRING_LITERAL); } break; @@ -37517,12 +38297,12 @@ export class MySqlParser extends SQLParserBase { } public fullDescribeStatement(): FullDescribeStatementContext { let localContext = new FullDescribeStatementContext(this.context, this.state); - this.enterRule(localContext, 598, MySqlParser.RULE_fullDescribeStatement); + this.enterRule(localContext, 602, MySqlParser.RULE_fullDescribeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6628; + this.state = 6678; localContext._command = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 131075) !== 0))) { @@ -37532,28 +38312,28 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6634; + this.state = 6684; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_EXTENDED: { - this.state = 6629; + this.state = 6679; this.match(MySqlParser.KW_EXTENDED); } break; case MySqlParser.KW_PARTITIONS: { - this.state = 6630; + this.state = 6680; this.match(MySqlParser.KW_PARTITIONS); } break; case MySqlParser.KW_FORMAT: { - this.state = 6631; + this.state = 6681; this.match(MySqlParser.KW_FORMAT); - this.state = 6632; + this.state = 6682; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6633; + this.state = 6683; _la = this.tokenStream.LA(1); if(!(_la === 442 || _la === 663 || _la === 666)) { this.errorHandler.recoverInline(this); @@ -37575,7 +38355,7 @@ export class MySqlParser extends SQLParserBase { default: break; } - this.state = 6636; + this.state = 6686; this.describeObjectClause(); } } @@ -37595,12 +38375,12 @@ export class MySqlParser extends SQLParserBase { } public analyzeDescribeStatement(): AnalyzeDescribeStatementContext { let localContext = new AnalyzeDescribeStatementContext(this.context, this.state); - this.enterRule(localContext, 600, MySqlParser.RULE_analyzeDescribeStatement); + this.enterRule(localContext, 604, MySqlParser.RULE_analyzeDescribeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6638; + this.state = 6688; localContext._command = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 131075) !== 0))) { @@ -37610,23 +38390,23 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6639; + this.state = 6689; this.match(MySqlParser.KW_ANALYZE); - this.state = 6643; + this.state = 6693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 826) { { - this.state = 6640; + this.state = 6690; this.match(MySqlParser.KW_FORMAT); - this.state = 6641; + this.state = 6691; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6642; + this.state = 6692; this.match(MySqlParser.KW_TREE); } } - this.state = 6645; + this.state = 6695; this.selectStatement(); } } @@ -37646,13 +38426,13 @@ export class MySqlParser extends SQLParserBase { } public helpStatement(): HelpStatementContext { let localContext = new HelpStatementContext(this.context, this.state); - this.enterRule(localContext, 602, MySqlParser.RULE_helpStatement); + this.enterRule(localContext, 606, MySqlParser.RULE_helpStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6647; + this.state = 6697; this.match(MySqlParser.KW_HELP); - this.state = 6648; + this.state = 6698; this.match(MySqlParser.STRING_LITERAL); } } @@ -37672,13 +38452,13 @@ export class MySqlParser extends SQLParserBase { } public useStatement(): UseStatementContext { let localContext = new UseStatementContext(this.context, this.state); - this.enterRule(localContext, 604, MySqlParser.RULE_useStatement); + this.enterRule(localContext, 608, MySqlParser.RULE_useStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6650; + this.state = 6700; this.match(MySqlParser.KW_USE); - this.state = 6651; + this.state = 6701; this.databaseName(); } } @@ -37698,73 +38478,73 @@ export class MySqlParser extends SQLParserBase { } public signalStatement(): SignalStatementContext { let localContext = new SignalStatementContext(this.context, this.state); - this.enterRule(localContext, 606, MySqlParser.RULE_signalStatement); + this.enterRule(localContext, 610, MySqlParser.RULE_signalStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6653; + this.state = 6703; this.match(MySqlParser.KW_SIGNAL); - this.state = 6661; + this.state = 6711; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SQLSTATE: { { - this.state = 6654; + this.state = 6704; this.match(MySqlParser.KW_SQLSTATE); - this.state = 6656; + this.state = 6706; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 6655; + this.state = 6705; this.match(MySqlParser.KW_VALUE); } } - this.state = 6658; + this.state = 6708; this.stringLiteral(); } } break; case MySqlParser.ID: { - this.state = 6659; + this.state = 6709; this.match(MySqlParser.ID); } break; case MySqlParser.REVERSE_QUOTE_ID: { - this.state = 6660; + this.state = 6710; this.match(MySqlParser.REVERSE_QUOTE_ID); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6672; + this.state = 6722; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 960, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 969, this.context) ) { case 1: { - this.state = 6663; + this.state = 6713; this.match(MySqlParser.KW_SET); - this.state = 6664; + this.state = 6714; this.signalConditionInformation(); - this.state = 6669; + this.state = 6719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6665; + this.state = 6715; this.match(MySqlParser.COMMA); - this.state = 6666; + this.state = 6716; this.signalConditionInformation(); } } - this.state = 6671; + this.state = 6721; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -37789,45 +38569,45 @@ export class MySqlParser extends SQLParserBase { } public resignalStatement(): ResignalStatementContext { let localContext = new ResignalStatementContext(this.context, this.state); - this.enterRule(localContext, 608, MySqlParser.RULE_resignalStatement); + this.enterRule(localContext, 612, MySqlParser.RULE_resignalStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6674; + this.state = 6724; this.match(MySqlParser.KW_RESIGNAL); - this.state = 6682; + this.state = 6732; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SQLSTATE: { { - this.state = 6675; + this.state = 6725; this.match(MySqlParser.KW_SQLSTATE); - this.state = 6677; + this.state = 6727; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 6676; + this.state = 6726; this.match(MySqlParser.KW_VALUE); } } - this.state = 6679; + this.state = 6729; this.stringLiteral(); } } break; case MySqlParser.ID: { - this.state = 6680; + this.state = 6730; this.match(MySqlParser.ID); } break; case MySqlParser.REVERSE_QUOTE_ID: { - this.state = 6681; + this.state = 6731; this.match(MySqlParser.REVERSE_QUOTE_ID); } break; @@ -37898,28 +38678,28 @@ export class MySqlParser extends SQLParserBase { default: break; } - this.state = 6693; + this.state = 6743; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 964, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 973, this.context) ) { case 1: { - this.state = 6684; + this.state = 6734; this.match(MySqlParser.KW_SET); - this.state = 6685; + this.state = 6735; this.signalConditionInformation(); - this.state = 6690; + this.state = 6740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6686; + this.state = 6736; this.match(MySqlParser.COMMA); - this.state = 6687; + this.state = 6737; this.signalConditionInformation(); } } - this.state = 6692; + this.state = 6742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -37944,12 +38724,12 @@ export class MySqlParser extends SQLParserBase { } public signalConditionInformation(): SignalConditionInformationContext { let localContext = new SignalConditionInformationContext(this.context, this.state); - this.enterRule(localContext, 610, MySqlParser.RULE_signalConditionInformation); + this.enterRule(localContext, 614, MySqlParser.RULE_signalConditionInformation); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6695; + this.state = 6745; _la = this.tokenStream.LA(1); if(!(((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 137887873) !== 0) || _la === 487 || _la === 495 || _la === 650 || _la === 657 || _la === 822 || _la === 832)) { this.errorHandler.recoverInline(this); @@ -37958,29 +38738,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6696; + this.state = 6746; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6701; + this.state = 6751; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.START_NATIONAL_STRING_LITERAL: case MySqlParser.STRING_LITERAL: case MySqlParser.STRING_CHARSET_NAME: { - this.state = 6697; + this.state = 6747; this.stringLiteral(); } break; case MySqlParser.DECIMAL_LITERAL: { - this.state = 6698; + this.state = 6748; this.match(MySqlParser.DECIMAL_LITERAL); } break; case MySqlParser.LOCAL_ID: case MySqlParser.GLOBAL_ID: { - this.state = 6699; + this.state = 6749; this.mysqlVariable(); } break; @@ -38314,6 +39094,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -38531,7 +39312,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.MOD: case MySqlParser.ID: { - this.state = 6700; + this.state = 6750; this.simpleId(); } break; @@ -38556,38 +39337,38 @@ export class MySqlParser extends SQLParserBase { } public withStatement(): WithStatementContext { let localContext = new WithStatementContext(this.context, this.state); - this.enterRule(localContext, 612, MySqlParser.RULE_withStatement); + this.enterRule(localContext, 616, MySqlParser.RULE_withStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6703; + this.state = 6753; this.match(MySqlParser.KW_WITH); - this.state = 6705; + this.state = 6755; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 966, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 975, this.context) ) { case 1: { - this.state = 6704; + this.state = 6754; this.match(MySqlParser.KW_RECURSIVE); } break; } - this.state = 6707; + this.state = 6757; this.commonTableExpressions(); - this.state = 6712; + this.state = 6762; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6708; + this.state = 6758; this.match(MySqlParser.COMMA); - this.state = 6709; + this.state = 6759; this.commonTableExpressions(); } } - this.state = 6714; + this.state = 6764; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -38609,30 +39390,30 @@ export class MySqlParser extends SQLParserBase { } public tableStatement(): TableStatementContext { let localContext = new TableStatementContext(this.context, this.state); - this.enterRule(localContext, 614, MySqlParser.RULE_tableStatement); + this.enterRule(localContext, 618, MySqlParser.RULE_tableStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6715; + this.state = 6765; this.match(MySqlParser.KW_TABLE); - this.state = 6716; + this.state = 6766; this.tableName(); - this.state = 6718; + this.state = 6768; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 968, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 977, this.context) ) { case 1: { - this.state = 6717; + this.state = 6767; this.orderByClause(); } break; } - this.state = 6721; + this.state = 6771; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 969, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 978, this.context) ) { case 1: { - this.state = 6720; + this.state = 6770; this.limitClause(); } break; @@ -38655,19 +39436,19 @@ export class MySqlParser extends SQLParserBase { } public diagnosticsStatement(): DiagnosticsStatementContext { let localContext = new DiagnosticsStatementContext(this.context, this.state); - this.enterRule(localContext, 616, MySqlParser.RULE_diagnosticsStatement); + this.enterRule(localContext, 620, MySqlParser.RULE_diagnosticsStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6723; + this.state = 6773; this.match(MySqlParser.KW_GET); - this.state = 6725; + this.state = 6775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36 || _la === 170) { { - this.state = 6724; + this.state = 6774; _la = this.tokenStream.LA(1); if(!(_la === 36 || _la === 170)) { this.errorHandler.recoverInline(this); @@ -38679,19 +39460,19 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6727; + this.state = 6777; this.match(MySqlParser.KW_DIAGNOSTICS); - this.state = 6759; + this.state = 6809; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 974, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 983, this.context) ) { case 1: { { - this.state = 6728; + this.state = 6778; this.variableClause(); - this.state = 6729; + this.state = 6779; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6730; + this.state = 6780; _la = this.tokenStream.LA(1); if(!(_la === 117 || _la === 831)) { this.errorHandler.recoverInline(this); @@ -38700,19 +39481,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6738; + this.state = 6788; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6731; + this.state = 6781; this.match(MySqlParser.COMMA); - this.state = 6732; + this.state = 6782; this.variableClause(); - this.state = 6733; + this.state = 6783; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6734; + this.state = 6784; _la = this.tokenStream.LA(1); if(!(_la === 117 || _la === 831)) { this.errorHandler.recoverInline(this); @@ -38723,7 +39504,7 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 6740; + this.state = 6790; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -38733,9 +39514,9 @@ export class MySqlParser extends SQLParserBase { case 2: { { - this.state = 6741; + this.state = 6791; this.match(MySqlParser.KW_CONDITION); - this.state = 6744; + this.state = 6794; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -38745,7 +39526,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 6742; + this.state = 6792; this.decimalLiteral(); } break; @@ -39081,6 +39862,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -39303,36 +40085,36 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.LOCAL_ID: case MySqlParser.GLOBAL_ID: { - this.state = 6743; + this.state = 6793; this.variableClause(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6746; + this.state = 6796; this.variableClause(); - this.state = 6747; + this.state = 6797; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6748; + this.state = 6798; this.diagnosticsConditionInformationName(); - this.state = 6756; + this.state = 6806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6749; + this.state = 6799; this.match(MySqlParser.COMMA); - this.state = 6750; + this.state = 6800; this.variableClause(); - this.state = 6751; + this.state = 6801; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6752; + this.state = 6802; this.diagnosticsConditionInformationName(); } } - this.state = 6758; + this.state = 6808; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39358,12 +40140,12 @@ export class MySqlParser extends SQLParserBase { } public diagnosticsConditionInformationName(): DiagnosticsConditionInformationNameContext { let localContext = new DiagnosticsConditionInformationNameContext(this.context, this.state); - this.enterRule(localContext, 618, MySqlParser.RULE_diagnosticsConditionInformationName); + this.enterRule(localContext, 622, MySqlParser.RULE_diagnosticsConditionInformationName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6761; + this.state = 6811; _la = this.tokenStream.LA(1); if(!(((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 137887873) !== 0) || _la === 487 || _la === 495 || _la === 578 || _la === 650 || _la === 657 || _la === 822 || _la === 832)) { this.errorHandler.recoverInline(this); @@ -39390,9 +40172,9 @@ export class MySqlParser extends SQLParserBase { } public describeObjectClause(): DescribeObjectClauseContext { let localContext = new DescribeObjectClauseContext(this.context, this.state); - this.enterRule(localContext, 620, MySqlParser.RULE_describeObjectClause); + this.enterRule(localContext, 624, MySqlParser.RULE_describeObjectClause); try { - this.state = 6773; + this.state = 6823; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DELETE: @@ -39404,37 +40186,37 @@ export class MySqlParser extends SQLParserBase { localContext = new DescribeStatementsContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6768; + this.state = 6818; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: case MySqlParser.LR_BRACKET: { - this.state = 6763; + this.state = 6813; this.selectStatement(); } break; case MySqlParser.KW_DELETE: { - this.state = 6764; + this.state = 6814; this.deleteStatement(); } break; case MySqlParser.KW_INSERT: { - this.state = 6765; + this.state = 6815; this.insertStatement(); } break; case MySqlParser.KW_REPLACE: { - this.state = 6766; + this.state = 6816; this.replaceStatement(); } break; case MySqlParser.KW_UPDATE: { - this.state = 6767; + this.state = 6817; this.updateStatement(); } break; @@ -39447,11 +40229,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DescribeConnectionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6770; + this.state = 6820; this.match(MySqlParser.KW_FOR); - this.state = 6771; + this.state = 6821; this.match(MySqlParser.KW_CONNECTION); - this.state = 6772; + this.state = 6822; (localContext as DescribeConnectionContext)._connection_id = this.uid(); } break; @@ -39475,11 +40257,11 @@ export class MySqlParser extends SQLParserBase { } public databaseNameCreate(): DatabaseNameCreateContext { let localContext = new DatabaseNameCreateContext(this.context, this.state); - this.enterRule(localContext, 622, MySqlParser.RULE_databaseNameCreate); + this.enterRule(localContext, 626, MySqlParser.RULE_databaseNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6775; + this.state = 6825; this.fullId(); } } @@ -39499,11 +40281,11 @@ export class MySqlParser extends SQLParserBase { } public databaseName(): DatabaseNameContext { let localContext = new DatabaseNameContext(this.context, this.state); - this.enterRule(localContext, 624, MySqlParser.RULE_databaseName); + this.enterRule(localContext, 628, MySqlParser.RULE_databaseName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6777; + this.state = 6827; this.fullId(); } } @@ -39523,11 +40305,11 @@ export class MySqlParser extends SQLParserBase { } public functionNameCreate(): FunctionNameCreateContext { let localContext = new FunctionNameCreateContext(this.context, this.state); - this.enterRule(localContext, 626, MySqlParser.RULE_functionNameCreate); + this.enterRule(localContext, 630, MySqlParser.RULE_functionNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6779; + this.state = 6829; this.fullId(); } } @@ -39547,11 +40329,11 @@ export class MySqlParser extends SQLParserBase { } public functionName(): FunctionNameContext { let localContext = new FunctionNameContext(this.context, this.state); - this.enterRule(localContext, 628, MySqlParser.RULE_functionName); + this.enterRule(localContext, 632, MySqlParser.RULE_functionName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6781; + this.state = 6831; this.fullId(); } } @@ -39571,11 +40353,11 @@ export class MySqlParser extends SQLParserBase { } public viewNameCreate(): ViewNameCreateContext { let localContext = new ViewNameCreateContext(this.context, this.state); - this.enterRule(localContext, 630, MySqlParser.RULE_viewNameCreate); + this.enterRule(localContext, 634, MySqlParser.RULE_viewNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6783; + this.state = 6833; this.fullId(); } } @@ -39595,11 +40377,11 @@ export class MySqlParser extends SQLParserBase { } public viewName(): ViewNameContext { let localContext = new ViewNameContext(this.context, this.state); - this.enterRule(localContext, 632, MySqlParser.RULE_viewName); + this.enterRule(localContext, 636, MySqlParser.RULE_viewName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6785; + this.state = 6835; this.fullId(); } } @@ -39619,11 +40401,11 @@ export class MySqlParser extends SQLParserBase { } public indexNameCreate(): IndexNameCreateContext { let localContext = new IndexNameCreateContext(this.context, this.state); - this.enterRule(localContext, 634, MySqlParser.RULE_indexNameCreate); + this.enterRule(localContext, 638, MySqlParser.RULE_indexNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6787; + this.state = 6837; this.uid(); } } @@ -39643,26 +40425,26 @@ export class MySqlParser extends SQLParserBase { } public indexNames(): IndexNamesContext { let localContext = new IndexNamesContext(this.context, this.state); - this.enterRule(localContext, 636, MySqlParser.RULE_indexNames); + this.enterRule(localContext, 640, MySqlParser.RULE_indexNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6789; + this.state = 6839; this.indexName(); - this.state = 6794; + this.state = 6844; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6790; + this.state = 6840; this.match(MySqlParser.COMMA); - this.state = 6791; + this.state = 6841; this.indexName(); } } - this.state = 6796; + this.state = 6846; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39684,11 +40466,11 @@ export class MySqlParser extends SQLParserBase { } public indexName(): IndexNameContext { let localContext = new IndexNameContext(this.context, this.state); - this.enterRule(localContext, 638, MySqlParser.RULE_indexName); + this.enterRule(localContext, 642, MySqlParser.RULE_indexName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6797; + this.state = 6847; this.uid(); } } @@ -39708,11 +40490,11 @@ export class MySqlParser extends SQLParserBase { } public groupNameCreate(): GroupNameCreateContext { let localContext = new GroupNameCreateContext(this.context, this.state); - this.enterRule(localContext, 640, MySqlParser.RULE_groupNameCreate); + this.enterRule(localContext, 644, MySqlParser.RULE_groupNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6799; + this.state = 6849; this.uid(); } } @@ -39732,11 +40514,11 @@ export class MySqlParser extends SQLParserBase { } public groupName(): GroupNameContext { let localContext = new GroupNameContext(this.context, this.state); - this.enterRule(localContext, 642, MySqlParser.RULE_groupName); + this.enterRule(localContext, 646, MySqlParser.RULE_groupName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6801; + this.state = 6851; this.uid(); } } @@ -39756,11 +40538,11 @@ export class MySqlParser extends SQLParserBase { } public tableNameCreate(): TableNameCreateContext { let localContext = new TableNameCreateContext(this.context, this.state); - this.enterRule(localContext, 644, MySqlParser.RULE_tableNameCreate); + this.enterRule(localContext, 648, MySqlParser.RULE_tableNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6803; + this.state = 6853; this.fullId(); } } @@ -39780,30 +40562,30 @@ export class MySqlParser extends SQLParserBase { } public tableNames(): TableNamesContext { let localContext = new TableNamesContext(this.context, this.state); - this.enterRule(localContext, 646, MySqlParser.RULE_tableNames); + this.enterRule(localContext, 650, MySqlParser.RULE_tableNames); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6805; + this.state = 6855; this.tableName(); - this.state = 6810; + this.state = 6860; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 978, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 987, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6806; + this.state = 6856; this.match(MySqlParser.COMMA); - this.state = 6807; + this.state = 6857; this.tableName(); } } } - this.state = 6812; + this.state = 6862; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 978, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 987, this.context); } } } @@ -39823,11 +40605,11 @@ export class MySqlParser extends SQLParserBase { } public tableName(): TableNameContext { let localContext = new TableNameContext(this.context, this.state); - this.enterRule(localContext, 648, MySqlParser.RULE_tableName); + this.enterRule(localContext, 652, MySqlParser.RULE_tableName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6813; + this.state = 6863; this.fullId(); } } @@ -39847,26 +40629,26 @@ export class MySqlParser extends SQLParserBase { } public userOrRoleNames(): UserOrRoleNamesContext { let localContext = new UserOrRoleNamesContext(this.context, this.state); - this.enterRule(localContext, 650, MySqlParser.RULE_userOrRoleNames); + this.enterRule(localContext, 654, MySqlParser.RULE_userOrRoleNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6815; + this.state = 6865; this.userOrRoleName(); - this.state = 6820; + this.state = 6870; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6816; + this.state = 6866; this.match(MySqlParser.COMMA); - this.state = 6817; + this.state = 6867; this.userOrRoleName(); } } - this.state = 6822; + this.state = 6872; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39888,22 +40670,22 @@ export class MySqlParser extends SQLParserBase { } public userOrRoleName(): UserOrRoleNameContext { let localContext = new UserOrRoleNameContext(this.context, this.state); - this.enterRule(localContext, 652, MySqlParser.RULE_userOrRoleName); + this.enterRule(localContext, 656, MySqlParser.RULE_userOrRoleName); try { - this.state = 6825; + this.state = 6875; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 980, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 989, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6823; + this.state = 6873; this.userName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6824; + this.state = 6874; this.uid(); } break; @@ -39925,30 +40707,30 @@ export class MySqlParser extends SQLParserBase { } public columnNameCreate(): ColumnNameCreateContext { let localContext = new ColumnNameCreateContext(this.context, this.state); - this.enterRule(localContext, 654, MySqlParser.RULE_columnNameCreate); + this.enterRule(localContext, 658, MySqlParser.RULE_columnNameCreate); let _la: number; try { - this.state = 6841; + this.state = 6891; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 985, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 994, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6827; + this.state = 6877; this.uid(); - this.state = 6832; + this.state = 6882; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 6828; + this.state = 6878; this.dottedId(); - this.state = 6830; + this.state = 6880; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 6829; + this.state = 6879; this.dottedId(); } } @@ -39961,24 +40743,24 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6835; + this.state = 6885; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 983, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 992, this.context) ) { case 1: { - this.state = 6834; + this.state = 6884; this.matchWildcard(); } break; } - this.state = 6837; + this.state = 6887; this.dottedId(); - this.state = 6839; + this.state = 6889; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 6838; + this.state = 6888; this.dottedId(); } } @@ -40003,30 +40785,30 @@ export class MySqlParser extends SQLParserBase { } public columnNames(): ColumnNamesContext { let localContext = new ColumnNamesContext(this.context, this.state); - this.enterRule(localContext, 656, MySqlParser.RULE_columnNames); + this.enterRule(localContext, 660, MySqlParser.RULE_columnNames); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6843; + this.state = 6893; this.columnName(); - this.state = 6848; + this.state = 6898; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 986, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 995, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6844; + this.state = 6894; this.match(MySqlParser.COMMA); - this.state = 6845; + this.state = 6895; this.columnName(); } } } - this.state = 6850; + this.state = 6900; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 986, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 995, this.context); } } } @@ -40046,29 +40828,29 @@ export class MySqlParser extends SQLParserBase { } public columnName(): ColumnNameContext { let localContext = new ColumnNameContext(this.context, this.state); - this.enterRule(localContext, 658, MySqlParser.RULE_columnName); + this.enterRule(localContext, 662, MySqlParser.RULE_columnName); try { - this.state = 6866; + this.state = 6916; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 991, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6851; + this.state = 6901; this.uid(); - this.state = 6856; + this.state = 6906; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 988, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 997, this.context) ) { case 1: { - this.state = 6852; + this.state = 6902; this.dottedId(); - this.state = 6854; + this.state = 6904; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 987, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 996, this.context) ) { case 1: { - this.state = 6853; + this.state = 6903; this.dottedId(); } break; @@ -40081,24 +40863,24 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6859; + this.state = 6909; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 989, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { case 1: { - this.state = 6858; + this.state = 6908; this.matchWildcard(); } break; } - this.state = 6861; + this.state = 6911; this.dottedId(); - this.state = 6863; + this.state = 6913; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 990, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 999, this.context) ) { case 1: { - this.state = 6862; + this.state = 6912; this.dottedId(); } break; @@ -40108,7 +40890,7 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6865; + this.state = 6915; if (!(this.shouldMatchEmpty())) { throw this.createFailedPredicateException("this.shouldMatchEmpty()"); } @@ -40132,11 +40914,11 @@ export class MySqlParser extends SQLParserBase { } public tablespaceNameCreate(): TablespaceNameCreateContext { let localContext = new TablespaceNameCreateContext(this.context, this.state); - this.enterRule(localContext, 660, MySqlParser.RULE_tablespaceNameCreate); + this.enterRule(localContext, 664, MySqlParser.RULE_tablespaceNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6868; + this.state = 6918; this.uid(); } } @@ -40156,11 +40938,11 @@ export class MySqlParser extends SQLParserBase { } public tablespaceName(): TablespaceNameContext { let localContext = new TablespaceNameContext(this.context, this.state); - this.enterRule(localContext, 662, MySqlParser.RULE_tablespaceName); + this.enterRule(localContext, 666, MySqlParser.RULE_tablespaceName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6870; + this.state = 6920; this.uid(); } } @@ -40180,11 +40962,11 @@ export class MySqlParser extends SQLParserBase { } public partitionNameCreate(): PartitionNameCreateContext { let localContext = new PartitionNameCreateContext(this.context, this.state); - this.enterRule(localContext, 664, MySqlParser.RULE_partitionNameCreate); + this.enterRule(localContext, 668, MySqlParser.RULE_partitionNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6872; + this.state = 6922; this.uid(); } } @@ -40204,30 +40986,30 @@ export class MySqlParser extends SQLParserBase { } public partitionNames(): PartitionNamesContext { let localContext = new PartitionNamesContext(this.context, this.state); - this.enterRule(localContext, 666, MySqlParser.RULE_partitionNames); + this.enterRule(localContext, 670, MySqlParser.RULE_partitionNames); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6874; + this.state = 6924; this.partitionName(); - this.state = 6879; + this.state = 6929; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 992, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1001, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6875; + this.state = 6925; this.match(MySqlParser.COMMA); - this.state = 6876; + this.state = 6926; this.partitionName(); } } } - this.state = 6881; + this.state = 6931; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 992, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1001, this.context); } } } @@ -40247,11 +41029,11 @@ export class MySqlParser extends SQLParserBase { } public partitionName(): PartitionNameContext { let localContext = new PartitionNameContext(this.context, this.state); - this.enterRule(localContext, 668, MySqlParser.RULE_partitionName); + this.enterRule(localContext, 672, MySqlParser.RULE_partitionName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6882; + this.state = 6932; this.uid(); } } @@ -40271,28 +41053,28 @@ export class MySqlParser extends SQLParserBase { } public indexColumnName(): IndexColumnNameContext { let localContext = new IndexColumnNameContext(this.context, this.state); - this.enterRule(localContext, 670, MySqlParser.RULE_indexColumnName); + this.enterRule(localContext, 674, MySqlParser.RULE_indexColumnName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6892; + this.state = 6942; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 994, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1003, this.context) ) { case 1: { - this.state = 6884; + this.state = 6934; this.uid(); - this.state = 6889; + this.state = 6939; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 993, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context) ) { case 1: { - this.state = 6885; + this.state = 6935; this.match(MySqlParser.LR_BRACKET); - this.state = 6886; + this.state = 6936; this.decimalLiteral(); - this.state = 6887; + this.state = 6937; this.match(MySqlParser.RR_BRACKET); } break; @@ -40301,17 +41083,17 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 6891; + this.state = 6941; this.expression(0); } break; } - this.state = 6895; + this.state = 6945; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 995, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1004, this.context) ) { case 1: { - this.state = 6894; + this.state = 6944; localContext._sortType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45)) { @@ -40342,15 +41124,15 @@ export class MySqlParser extends SQLParserBase { } public userHostPort(): UserHostPortContext { let localContext = new UserHostPortContext(this.context, this.state); - this.enterRule(localContext, 672, MySqlParser.RULE_userHostPort); + this.enterRule(localContext, 676, MySqlParser.RULE_userHostPort); try { this.enterOuterAlt(localContext, 1); { - this.state = 6897; + this.state = 6947; this.userAtHost(); - this.state = 6898; + this.state = 6948; this.match(MySqlParser.COLON_SYMB); - this.state = 6899; + this.state = 6949; this.decimalLiteral(); } } @@ -40370,13 +41152,13 @@ export class MySqlParser extends SQLParserBase { } public userAtHost(): UserAtHostContext { let localContext = new UserAtHostContext(this.context, this.state); - this.enterRule(localContext, 674, MySqlParser.RULE_userAtHost); + this.enterRule(localContext, 678, MySqlParser.RULE_userAtHost); try { this.enterOuterAlt(localContext, 1); { - this.state = 6901; + this.state = 6951; this.simpleUserName(); - this.state = 6902; + this.state = 6952; this.match(MySqlParser.HOST_IP_ADDRESS); } } @@ -40396,36 +41178,36 @@ export class MySqlParser extends SQLParserBase { } public simpleUserName(): SimpleUserNameContext { let localContext = new SimpleUserNameContext(this.context, this.state); - this.enterRule(localContext, 676, MySqlParser.RULE_simpleUserName); + this.enterRule(localContext, 680, MySqlParser.RULE_simpleUserName); try { - this.state = 6908; + this.state = 6958; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 996, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1005, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6904; + this.state = 6954; this.match(MySqlParser.STRING_LITERAL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6905; + this.state = 6955; this.match(MySqlParser.ID); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6906; + this.state = 6956; this.match(MySqlParser.KW_ADMIN); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6907; + this.state = 6957; this.keywordsCanBeId(); } break; @@ -40447,12 +41229,12 @@ export class MySqlParser extends SQLParserBase { } public hostName(): HostNameContext { let localContext = new HostNameContext(this.context, this.state); - this.enterRule(localContext, 678, MySqlParser.RULE_hostName); + this.enterRule(localContext, 682, MySqlParser.RULE_hostName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6910; + this.state = 6960; _la = this.tokenStream.LA(1); if(!(((((_la - 870)) & ~0x1F) === 0 && ((1 << (_la - 870)) & 6291457) !== 0))) { this.errorHandler.recoverInline(this); @@ -40479,23 +41261,23 @@ export class MySqlParser extends SQLParserBase { } public userName(): UserNameContext { let localContext = new UserNameContext(this.context, this.state); - this.enterRule(localContext, 680, MySqlParser.RULE_userName); + this.enterRule(localContext, 684, MySqlParser.RULE_userName); let _la: number; try { - this.state = 6917; + this.state = 6967; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1007, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6912; + this.state = 6962; this.simpleUserName(); - this.state = 6914; + this.state = 6964; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 870)) & ~0x1F) === 0 && ((1 << (_la - 870)) & 6291457) !== 0)) { { - this.state = 6913; + this.state = 6963; this.hostName(); } } @@ -40505,7 +41287,7 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6916; + this.state = 6966; this.currentUserExpression(); } break; @@ -40527,12 +41309,12 @@ export class MySqlParser extends SQLParserBase { } public mysqlVariable(): MysqlVariableContext { let localContext = new MysqlVariableContext(this.context, this.state); - this.enterRule(localContext, 682, MySqlParser.RULE_mysqlVariable); + this.enterRule(localContext, 686, MySqlParser.RULE_mysqlVariable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6919; + this.state = 6969; _la = this.tokenStream.LA(1); if(!(_la === 892 || _la === 893)) { this.errorHandler.recoverInline(this); @@ -40559,36 +41341,36 @@ export class MySqlParser extends SQLParserBase { } public charsetName(): CharsetNameContext { let localContext = new CharsetNameContext(this.context, this.state); - this.enterRule(localContext, 684, MySqlParser.RULE_charsetName); + this.enterRule(localContext, 688, MySqlParser.RULE_charsetName); try { - this.state = 6925; + this.state = 6975; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 999, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1008, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6921; + this.state = 6971; this.match(MySqlParser.KW_BINARY); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6922; + this.state = 6972; this.charsetNameBase(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6923; + this.state = 6973; this.match(MySqlParser.STRING_LITERAL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6924; + this.state = 6974; this.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING); } break; @@ -40610,11 +41392,11 @@ export class MySqlParser extends SQLParserBase { } public collationName(): CollationNameContext { let localContext = new CollationNameContext(this.context, this.state); - this.enterRule(localContext, 686, MySqlParser.RULE_collationName); + this.enterRule(localContext, 690, MySqlParser.RULE_collationName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6927; + this.state = 6977; this.uid(); } } @@ -40634,9 +41416,9 @@ export class MySqlParser extends SQLParserBase { } public engineName(): EngineNameContext { let localContext = new EngineNameContext(this.context, this.state); - this.enterRule(localContext, 688, MySqlParser.RULE_engineName); + this.enterRule(localContext, 692, MySqlParser.RULE_engineName); try { - this.state = 6932; + this.state = 6982; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CONNECT: @@ -40654,21 +41436,21 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_TOKUDB: this.enterOuterAlt(localContext, 1); { - this.state = 6929; + this.state = 6979; this.engineNameBase(); } break; case MySqlParser.ID: this.enterOuterAlt(localContext, 2); { - this.state = 6930; + this.state = 6980; this.match(MySqlParser.ID); } break; case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 6931; + this.state = 6981; this.match(MySqlParser.STRING_LITERAL); } break; @@ -40692,12 +41474,12 @@ export class MySqlParser extends SQLParserBase { } public engineNameBase(): EngineNameBaseContext { let localContext = new EngineNameBaseContext(this.context, this.state); - this.enterRule(localContext, 690, MySqlParser.RULE_engineNameBase); + this.enterRule(localContext, 694, MySqlParser.RULE_engineNameBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6934; + this.state = 6984; _la = this.tokenStream.LA(1); if(!(_la === 348 || ((((_la - 797)) & ~0x1F) === 0 && ((1 << (_la - 797)) & 4095) !== 0))) { this.errorHandler.recoverInline(this); @@ -40724,46 +41506,46 @@ export class MySqlParser extends SQLParserBase { } public uuidSet(): UuidSetContext { let localContext = new UuidSetContext(this.context, this.state); - this.enterRule(localContext, 692, MySqlParser.RULE_uuidSet); + this.enterRule(localContext, 696, MySqlParser.RULE_uuidSet); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6936; + this.state = 6986; this.decimalLiteral(); - this.state = 6937; + this.state = 6987; this.match(MySqlParser.MINUS); - this.state = 6938; + this.state = 6988; this.decimalLiteral(); - this.state = 6939; + this.state = 6989; this.match(MySqlParser.MINUS); - this.state = 6940; + this.state = 6990; this.decimalLiteral(); - this.state = 6941; + this.state = 6991; this.match(MySqlParser.MINUS); - this.state = 6942; + this.state = 6992; this.decimalLiteral(); - this.state = 6943; + this.state = 6993; this.match(MySqlParser.MINUS); - this.state = 6944; + this.state = 6994; this.decimalLiteral(); - this.state = 6950; + this.state = 7000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6945; + this.state = 6995; this.match(MySqlParser.COLON_SYMB); - this.state = 6946; + this.state = 6996; this.decimalLiteral(); - this.state = 6947; + this.state = 6997; this.match(MySqlParser.MINUS); - this.state = 6948; + this.state = 6998; this.decimalLiteral(); } } - this.state = 6952; + this.state = 7002; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 878); @@ -40785,30 +41567,30 @@ export class MySqlParser extends SQLParserBase { } public xid(): XidContext { let localContext = new XidContext(this.context, this.state); - this.enterRule(localContext, 694, MySqlParser.RULE_xid); + this.enterRule(localContext, 698, MySqlParser.RULE_xid); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6954; + this.state = 7004; localContext._globalTableUid = this.xuidStringId(); - this.state = 6961; + this.state = 7011; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 6955; + this.state = 7005; this.match(MySqlParser.COMMA); - this.state = 6956; + this.state = 7006; localContext._qualifier = this.xuidStringId(); - this.state = 6959; + this.state = 7009; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 6957; + this.state = 7007; this.match(MySqlParser.COMMA); - this.state = 6958; + this.state = 7008; localContext._idFormat = this.decimalLiteral(); } } @@ -40834,40 +41616,40 @@ export class MySqlParser extends SQLParserBase { } public xuidStringId(): XuidStringIdContext { let localContext = new XuidStringIdContext(this.context, this.state); - this.enterRule(localContext, 696, MySqlParser.RULE_xuidStringId); + this.enterRule(localContext, 700, MySqlParser.RULE_xuidStringId); let _la: number; try { - this.state = 6970; + this.state = 7020; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 6963; + this.state = 7013; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.BIT_STRING: this.enterOuterAlt(localContext, 2); { - this.state = 6964; + this.state = 7014; this.match(MySqlParser.BIT_STRING); } break; case MySqlParser.HEXADECIMAL_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 6966; + this.state = 7016; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6965; + this.state = 7015; this.match(MySqlParser.HEXADECIMAL_LITERAL); } } - this.state = 6968; + this.state = 7018; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 884); @@ -40893,18 +41675,18 @@ export class MySqlParser extends SQLParserBase { } public fullId(): FullIdContext { let localContext = new FullIdContext(this.context, this.state); - this.enterRule(localContext, 698, MySqlParser.RULE_fullId); + this.enterRule(localContext, 702, MySqlParser.RULE_fullId); try { this.enterOuterAlt(localContext, 1); { - this.state = 6972; + this.state = 7022; this.uid(); - this.state = 6974; + this.state = 7024; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1006, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1015, this.context) ) { case 1: { - this.state = 6973; + this.state = 7023; this.dottedId(); } break; @@ -40927,26 +41709,26 @@ export class MySqlParser extends SQLParserBase { } public uidList(): UidListContext { let localContext = new UidListContext(this.context, this.state); - this.enterRule(localContext, 700, MySqlParser.RULE_uidList); + this.enterRule(localContext, 704, MySqlParser.RULE_uidList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6976; + this.state = 7026; this.uid(); - this.state = 6981; + this.state = 7031; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6977; + this.state = 7027; this.match(MySqlParser.COMMA); - this.state = 6978; + this.state = 7028; this.uid(); } } - this.state = 6983; + this.state = 7033; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -40968,9 +41750,9 @@ export class MySqlParser extends SQLParserBase { } public uid(): UidContext { let localContext = new UidContext(this.context, this.state); - this.enterRule(localContext, 702, MySqlParser.RULE_uid); + this.enterRule(localContext, 706, MySqlParser.RULE_uid); try { - this.state = 6987; + this.state = 7037; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -41303,6 +42085,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -41521,21 +42304,21 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 1); { - this.state = 6984; + this.state = 7034; this.simpleId(); } break; case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: this.enterOuterAlt(localContext, 2); { - this.state = 6985; + this.state = 7035; this.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING); } break; case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 6986; + this.state = 7036; this.match(MySqlParser.STRING_LITERAL); } break; @@ -41559,71 +42342,71 @@ export class MySqlParser extends SQLParserBase { } public simpleId(): SimpleIdContext { let localContext = new SimpleIdContext(this.context, this.state); - this.enterRule(localContext, 704, MySqlParser.RULE_simpleId); + this.enterRule(localContext, 708, MySqlParser.RULE_simpleId); try { - this.state = 6998; + this.state = 7048; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1009, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6989; + this.state = 7039; this.match(MySqlParser.ID); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6990; + this.state = 7040; this.charsetNameBase(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6991; + this.state = 7041; this.transactionLevelBase(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6992; + this.state = 7042; this.engineNameBase(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 6993; + this.state = 7043; this.privilegesBase(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 6994; + this.state = 7044; this.intervalTypeBase(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 6995; + this.state = 7045; this.dataTypeBase(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 6996; + this.state = 7046; this.keywordsCanBeId(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 6997; + this.state = 7047; this.scalarFunctionName(); } break; @@ -41645,26 +42428,26 @@ export class MySqlParser extends SQLParserBase { } public dottedId(): DottedIdContext { let localContext = new DottedIdContext(this.context, this.state); - this.enterRule(localContext, 706, MySqlParser.RULE_dottedId); + this.enterRule(localContext, 710, MySqlParser.RULE_dottedId); try { - this.state = 7004; + this.state = 7054; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1010, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1019, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7000; + this.state = 7050; this.match(MySqlParser.DOT); - this.state = 7001; + this.state = 7051; this.match(MySqlParser.ID); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7002; + this.state = 7052; this.match(MySqlParser.DOT); - this.state = 7003; + this.state = 7053; this.uid(); } break; @@ -41686,12 +42469,12 @@ export class MySqlParser extends SQLParserBase { } public decimalLiteral(): DecimalLiteralContext { let localContext = new DecimalLiteralContext(this.context, this.state); - this.enterRule(localContext, 708, MySqlParser.RULE_decimalLiteral); + this.enterRule(localContext, 712, MySqlParser.RULE_decimalLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7006; + this.state = 7056; _la = this.tokenStream.LA(1); if(!(((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & 20495) !== 0))) { this.errorHandler.recoverInline(this); @@ -41718,15 +42501,15 @@ export class MySqlParser extends SQLParserBase { } public fileSizeLiteral(): FileSizeLiteralContext { let localContext = new FileSizeLiteralContext(this.context, this.state); - this.enterRule(localContext, 710, MySqlParser.RULE_fileSizeLiteral); + this.enterRule(localContext, 714, MySqlParser.RULE_fileSizeLiteral); try { - this.state = 7010; + this.state = 7060; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.FILESIZE_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 7008; + this.state = 7058; this.match(MySqlParser.FILESIZE_LITERAL); } break; @@ -41738,7 +42521,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 2); { - this.state = 7009; + this.state = 7059; this.decimalLiteral(); } break; @@ -41762,46 +42545,46 @@ export class MySqlParser extends SQLParserBase { } public stringLiteral(): StringLiteralContext { let localContext = new StringLiteralContext(this.context, this.state); - this.enterRule(localContext, 712, MySqlParser.RULE_stringLiteral); + this.enterRule(localContext, 716, MySqlParser.RULE_stringLiteral); let _la: number; try { let alternative: number; - this.state = 7035; + this.state = 7085; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1027, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7017; + this.state = 7067; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: case MySqlParser.STRING_CHARSET_NAME: { - this.state = 7013; + this.state = 7063; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 888) { { - this.state = 7012; + this.state = 7062; this.match(MySqlParser.STRING_CHARSET_NAME); } } - this.state = 7015; + this.state = 7065; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.START_NATIONAL_STRING_LITERAL: { - this.state = 7016; + this.state = 7066; this.match(MySqlParser.START_NATIONAL_STRING_LITERAL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7020; + this.state = 7070; this.errorHandler.sync(this); alternative = 1; do { @@ -41809,7 +42592,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 7019; + this.state = 7069; this.match(MySqlParser.STRING_LITERAL); } } @@ -41817,52 +42600,52 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7022; + this.state = 7072; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1014, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1023, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7029; + this.state = 7079; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: case MySqlParser.STRING_CHARSET_NAME: { - this.state = 7025; + this.state = 7075; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 888) { { - this.state = 7024; + this.state = 7074; this.match(MySqlParser.STRING_CHARSET_NAME); } } - this.state = 7027; + this.state = 7077; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.START_NATIONAL_STRING_LITERAL: { - this.state = 7028; + this.state = 7078; this.match(MySqlParser.START_NATIONAL_STRING_LITERAL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7033; + this.state = 7083; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1017, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1026, this.context) ) { case 1: { - this.state = 7031; + this.state = 7081; this.match(MySqlParser.KW_COLLATE); - this.state = 7032; + this.state = 7082; this.collationName(); } break; @@ -41887,12 +42670,12 @@ export class MySqlParser extends SQLParserBase { } public booleanLiteral(): BooleanLiteralContext { let localContext = new BooleanLiteralContext(this.context, this.state); - this.enterRule(localContext, 714, MySqlParser.RULE_booleanLiteral); + this.enterRule(localContext, 718, MySqlParser.RULE_booleanLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7037; + this.state = 7087; _la = this.tokenStream.LA(1); if(!(_la === 63 || _la === 179)) { this.errorHandler.recoverInline(this); @@ -41919,22 +42702,22 @@ export class MySqlParser extends SQLParserBase { } public hexadecimalLiteral(): HexadecimalLiteralContext { let localContext = new HexadecimalLiteralContext(this.context, this.state); - this.enterRule(localContext, 716, MySqlParser.RULE_hexadecimalLiteral); + this.enterRule(localContext, 720, MySqlParser.RULE_hexadecimalLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7040; + this.state = 7090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 888) { { - this.state = 7039; + this.state = 7089; this.match(MySqlParser.STRING_CHARSET_NAME); } } - this.state = 7042; + this.state = 7092; this.match(MySqlParser.HEXADECIMAL_LITERAL); } } @@ -41954,22 +42737,22 @@ export class MySqlParser extends SQLParserBase { } public nullNotnull(): NullNotnullContext { let localContext = new NullNotnullContext(this.context, this.state); - this.enterRule(localContext, 718, MySqlParser.RULE_nullNotnull); + this.enterRule(localContext, 722, MySqlParser.RULE_nullNotnull); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7045; + this.state = 7095; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7044; + this.state = 7094; this.match(MySqlParser.KW_NOT); } } - this.state = 7047; + this.state = 7097; _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 886)) { this.errorHandler.recoverInline(this); @@ -41996,77 +42779,77 @@ export class MySqlParser extends SQLParserBase { } public constant(): ConstantContext { let localContext = new ConstantContext(this.context, this.state); - this.enterRule(localContext, 720, MySqlParser.RULE_constant); + this.enterRule(localContext, 724, MySqlParser.RULE_constant); let _la: number; try { - this.state = 7061; + this.state = 7111; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1022, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1031, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7049; + this.state = 7099; this.stringLiteral(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7050; + this.state = 7100; this.decimalLiteral(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7051; + this.state = 7101; this.match(MySqlParser.MINUS); - this.state = 7052; + this.state = 7102; this.decimalLiteral(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7053; + this.state = 7103; this.hexadecimalLiteral(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7054; + this.state = 7104; this.booleanLiteral(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7055; + this.state = 7105; this.match(MySqlParser.REAL_LITERAL); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7056; + this.state = 7106; this.match(MySqlParser.BIT_STRING); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7058; + this.state = 7108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7057; + this.state = 7107; this.match(MySqlParser.KW_NOT); } } - this.state = 7060; + this.state = 7110; localContext._nullLiteral = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 886)) { @@ -42096,17 +42879,18 @@ export class MySqlParser extends SQLParserBase { } public dataType(): DataTypeContext { let localContext = new DataTypeContext(this.context, this.state); - this.enterRule(localContext, 722, MySqlParser.RULE_dataType); + this.enterRule(localContext, 726, MySqlParser.RULE_dataType); let _la: number; try { - this.state = 7189; + let alternative: number; + this.state = 7239; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1060, this.context) ) { case 1: localContext = new StringDataTypeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7063; + this.state = 7113; (localContext as StringDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 26 || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 31239) !== 0) || _la === 498)) { @@ -42116,62 +42900,62 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7065; + this.state = 7115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 240) { { - this.state = 7064; + this.state = 7114; this.match(MySqlParser.KW_VARYING); } } - this.state = 7068; + this.state = 7118; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1024, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1033, this.context) ) { case 1: { - this.state = 7067; + this.state = 7117; this.lengthOneDimension(); } break; } - this.state = 7071; + this.state = 7121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1025, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context) ) { case 1: { - this.state = 7070; + this.state = 7120; this.match(MySqlParser.KW_BINARY); } break; } - this.state = 7076; + this.state = 7126; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 26 || _la === 224 || _la === 823) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context) ) { + case 1: { - this.state = 7073; + this.state = 7123; this.charSet(); - this.state = 7074; + this.state = 7124; this.charsetName(); } + break; } - - this.state = 7081; + this.state = 7131; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1027, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context) ) { case 1: { - this.state = 7078; + this.state = 7128; this.match(MySqlParser.KW_COLLATE); - this.state = 7079; + this.state = 7129; this.collationName(); } break; case 2: { - this.state = 7080; + this.state = 7130; this.match(MySqlParser.KW_BINARY); } break; @@ -42182,9 +42966,9 @@ export class MySqlParser extends SQLParserBase { localContext = new NationalVaryingStringDataTypeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7083; + this.state = 7133; this.match(MySqlParser.KW_NATIONAL); - this.state = 7084; + this.state = 7134; (localContext as NationalVaryingStringDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 26 || _la === 224)) { @@ -42194,37 +42978,37 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7085; + this.state = 7135; this.match(MySqlParser.KW_VARYING); - this.state = 7087; + this.state = 7137; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1028, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1037, this.context) ) { case 1: { - this.state = 7086; + this.state = 7136; this.lengthOneDimension(); } break; } - this.state = 7090; + this.state = 7140; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1038, this.context) ) { + case 1: { - this.state = 7089; + this.state = 7139; this.match(MySqlParser.KW_BINARY); } + break; } - } break; case 3: localContext = new NationalStringDataTypeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 7092; + this.state = 7142; this.match(MySqlParser.KW_NATIONAL); - this.state = 7093; + this.state = 7143; (localContext as NationalStringDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 26 || _la === 224 || _la === 225)) { @@ -42234,63 +43018,63 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7095; + this.state = 7145; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1030, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1039, this.context) ) { case 1: { - this.state = 7094; + this.state = 7144; this.lengthOneDimension(); } break; } - this.state = 7098; + this.state = 7148; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1040, this.context) ) { + case 1: { - this.state = 7097; + this.state = 7147; this.match(MySqlParser.KW_BINARY); } + break; } - } break; case 4: localContext = new NationalStringDataTypeContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 7100; + this.state = 7150; this.match(MySqlParser.KW_NCHAR); - this.state = 7101; + this.state = 7151; (localContext as NationalStringDataTypeContext)._typeName = this.match(MySqlParser.KW_VARCHAR); - this.state = 7103; + this.state = 7153; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1032, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1041, this.context) ) { case 1: { - this.state = 7102; + this.state = 7152; this.lengthOneDimension(); } break; } - this.state = 7106; + this.state = 7156; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1042, this.context) ) { + case 1: { - this.state = 7105; + this.state = 7155; this.match(MySqlParser.KW_BINARY); } + break; } - } break; case 5: localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 7108; + this.state = 7158; (localContext as DimensionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 198)) & ~0x1F) === 0 && ((1 << (_la - 198)) & 4095) !== 0))) { @@ -42300,36 +43084,38 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7110; + this.state = 7160; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { case 1: { - this.state = 7109; + this.state = 7159; this.lengthOneDimension(); } break; } - this.state = 7115; + this.state = 7165; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7112; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1044, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7162; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7117; + this.state = 7167; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1044, this.context); } } break; @@ -42337,38 +43123,40 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 7118; + this.state = 7168; (localContext as DimensionDataTypeContext)._typeName = this.match(MySqlParser.KW_REAL); - this.state = 7120; + this.state = 7170; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1045, this.context) ) { case 1: { - this.state = 7119; + this.state = 7169; this.lengthTwoDimension(); } break; } - this.state = 7125; + this.state = 7175; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7122; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7172; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7127; + this.state = 7177; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context); } } break; @@ -42376,48 +43164,50 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 7128; + this.state = 7178; (localContext as DimensionDataTypeContext)._typeName = this.match(MySqlParser.KW_DOUBLE); - this.state = 7130; + this.state = 7180; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 212) { { - this.state = 7129; + this.state = 7179; this.match(MySqlParser.KW_PRECISION); } } - this.state = 7133; + this.state = 7183; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1039, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1048, this.context) ) { case 1: { - this.state = 7132; + this.state = 7182; this.lengthTwoDimension(); } break; } - this.state = 7138; + this.state = 7188; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7135; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7185; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7140; + this.state = 7190; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context); } } break; @@ -42425,7 +43215,7 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 7141; + this.state = 7191; (localContext as DimensionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 213)) & ~0x1F) === 0 && ((1 << (_la - 213)) & 63) !== 0) || _la === 403)) { @@ -42435,36 +43225,38 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7143; + this.state = 7193; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1041, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { case 1: { - this.state = 7142; + this.state = 7192; this.lengthTwoOptionalDimension(); } break; } - this.state = 7148; + this.state = 7198; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7145; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7195; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7150; + this.state = 7200; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context); } } break; @@ -42472,7 +43264,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SimpleDataTypeContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 7151; + this.state = 7201; (localContext as SimpleDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 4237313) !== 0) || _la === 321 || _la === 322)) { @@ -42488,7 +43280,7 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 7152; + this.state = 7202; (localContext as DimensionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 2831) !== 0) || _la === 319)) { @@ -42498,12 +43290,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7154; + this.state = 7204; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1052, this.context) ) { case 1: { - this.state = 7153; + this.state = 7203; this.lengthOneDimension(); } break; @@ -42514,7 +43306,7 @@ export class MySqlParser extends SQLParserBase { localContext = new CollectionDataTypeContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 7156; + this.state = 7206; (localContext as CollectionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 155 || _la === 239)) { @@ -42524,37 +43316,37 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7157; + this.state = 7207; this.collectionOptions(); - this.state = 7159; + this.state = 7209; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1053, this.context) ) { + case 1: { - this.state = 7158; + this.state = 7208; this.match(MySqlParser.KW_BINARY); } + break; } - - this.state = 7164; + this.state = 7214; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 26 || _la === 224 || _la === 823) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1054, this.context) ) { + case 1: { - this.state = 7161; + this.state = 7211; this.charSet(); - this.state = 7162; + this.state = 7212; this.charsetName(); } + break; } - } break; case 12: localContext = new SpatialDataTypeContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 7166; + this.state = 7216; (localContext as SpatialDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 442 || ((((_la - 813)) & ~0x1F) === 0 && ((1 << (_la - 813)) & 511) !== 0))) { @@ -42564,66 +43356,66 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7169; + this.state = 7219; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 834) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1055, this.context) ) { + case 1: { - this.state = 7167; + this.state = 7217; this.match(MySqlParser.KW_SRID); - this.state = 7168; + this.state = 7218; this.decimalLiteral(); } + break; } - } break; case 13: localContext = new LongVarcharDataTypeContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 7171; + this.state = 7221; (localContext as LongVarcharDataTypeContext)._typeName = this.match(MySqlParser.KW_LONG); - this.state = 7173; + this.state = 7223; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 225) { { - this.state = 7172; + this.state = 7222; this.match(MySqlParser.KW_VARCHAR); } } - this.state = 7176; + this.state = 7226; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1057, this.context) ) { + case 1: { - this.state = 7175; + this.state = 7225; this.match(MySqlParser.KW_BINARY); } + break; } - - this.state = 7181; + this.state = 7231; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 26 || _la === 224 || _la === 823) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1058, this.context) ) { + case 1: { - this.state = 7178; + this.state = 7228; this.charSet(); - this.state = 7179; + this.state = 7229; this.charsetName(); } + break; } - - this.state = 7185; + this.state = 7235; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1059, this.context) ) { case 1: { - this.state = 7183; + this.state = 7233; this.match(MySqlParser.KW_COLLATE); - this.state = 7184; + this.state = 7234; this.collationName(); } break; @@ -42634,9 +43426,9 @@ export class MySqlParser extends SQLParserBase { localContext = new LongVarbinaryDataTypeContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 7187; + this.state = 7237; this.match(MySqlParser.KW_LONG); - this.state = 7188; + this.state = 7238; this.match(MySqlParser.KW_VARBINARY); } break; @@ -42658,32 +43450,32 @@ export class MySqlParser extends SQLParserBase { } public collectionOptions(): CollectionOptionsContext { let localContext = new CollectionOptionsContext(this.context, this.state); - this.enterRule(localContext, 724, MySqlParser.RULE_collectionOptions); + this.enterRule(localContext, 728, MySqlParser.RULE_collectionOptions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7191; + this.state = 7241; this.match(MySqlParser.LR_BRACKET); - this.state = 7192; + this.state = 7242; this.match(MySqlParser.STRING_LITERAL); - this.state = 7197; + this.state = 7247; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7193; + this.state = 7243; this.match(MySqlParser.COMMA); - this.state = 7194; + this.state = 7244; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 7199; + this.state = 7249; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7200; + this.state = 7250; this.match(MySqlParser.RR_BRACKET); } } @@ -42703,18 +43495,18 @@ export class MySqlParser extends SQLParserBase { } public convertedDataType(): ConvertedDataTypeContext { let localContext = new ConvertedDataTypeContext(this.context, this.state); - this.enterRule(localContext, 726, MySqlParser.RULE_convertedDataType); + this.enterRule(localContext, 730, MySqlParser.RULE_convertedDataType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7224; + this.state = 7274; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: case MySqlParser.KW_NCHAR: { - this.state = 7202; + this.state = 7252; localContext._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 228 || _la === 498)) { @@ -42724,12 +43516,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7204; + this.state = 7254; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 7203; + this.state = 7253; this.lengthOneDimension(); } } @@ -42738,26 +43530,26 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_CHAR: { - this.state = 7206; + this.state = 7256; localContext._typeName = this.match(MySqlParser.KW_CHAR); - this.state = 7208; + this.state = 7258; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 7207; + this.state = 7257; this.lengthOneDimension(); } } - this.state = 7213; + this.state = 7263; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 26 || _la === 224 || _la === 823) { { - this.state = 7210; + this.state = 7260; this.charSet(); - this.state = 7211; + this.state = 7261; this.charsetName(); } } @@ -42771,7 +43563,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DATETIME: case MySqlParser.KW_JSON: { - this.state = 7215; + this.state = 7265; localContext._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 202)) & ~0x1F) === 0 && ((1 << (_la - 202)) & 1441857) !== 0) || _la === 442)) { @@ -42786,7 +43578,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DECIMAL: case MySqlParser.KW_DEC: { - this.state = 7216; + this.state = 7266; localContext._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 216 || _la === 217)) { @@ -42796,12 +43588,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7218; + this.state = 7268; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 7217; + this.state = 7267; this.lengthTwoOptionalDimension(); } } @@ -42811,7 +43603,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_UNSIGNED: case MySqlParser.KW_SIGNED: { - this.state = 7220; + this.state = 7270; _la = this.tokenStream.LA(1); if(!(_la === 184 || _la === 596)) { this.errorHandler.recoverInline(this); @@ -42820,12 +43612,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7222; + this.state = 7272; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 202 || _la === 208) { { - this.state = 7221; + this.state = 7271; _la = this.tokenStream.LA(1); if(!(_la === 202 || _la === 208)) { this.errorHandler.recoverInline(this); @@ -42842,12 +43634,12 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7227; + this.state = 7277; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12) { { - this.state = 7226; + this.state = 7276; this.match(MySqlParser.KW_ARRAY); } } @@ -42870,15 +43662,15 @@ export class MySqlParser extends SQLParserBase { } public lengthOneDimension(): LengthOneDimensionContext { let localContext = new LengthOneDimensionContext(this.context, this.state); - this.enterRule(localContext, 728, MySqlParser.RULE_lengthOneDimension); + this.enterRule(localContext, 732, MySqlParser.RULE_lengthOneDimension); try { this.enterOuterAlt(localContext, 1); { - this.state = 7229; + this.state = 7279; this.match(MySqlParser.LR_BRACKET); - this.state = 7230; + this.state = 7280; this.decimalLiteral(); - this.state = 7231; + this.state = 7281; this.match(MySqlParser.RR_BRACKET); } } @@ -42898,19 +43690,19 @@ export class MySqlParser extends SQLParserBase { } public lengthTwoDimension(): LengthTwoDimensionContext { let localContext = new LengthTwoDimensionContext(this.context, this.state); - this.enterRule(localContext, 730, MySqlParser.RULE_lengthTwoDimension); + this.enterRule(localContext, 734, MySqlParser.RULE_lengthTwoDimension); try { this.enterOuterAlt(localContext, 1); { - this.state = 7233; + this.state = 7283; this.match(MySqlParser.LR_BRACKET); - this.state = 7234; + this.state = 7284; this.decimalLiteral(); - this.state = 7235; + this.state = 7285; this.match(MySqlParser.COMMA); - this.state = 7236; + this.state = 7286; this.decimalLiteral(); - this.state = 7237; + this.state = 7287; this.match(MySqlParser.RR_BRACKET); } } @@ -42930,28 +43722,28 @@ export class MySqlParser extends SQLParserBase { } public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext { let localContext = new LengthTwoOptionalDimensionContext(this.context, this.state); - this.enterRule(localContext, 732, MySqlParser.RULE_lengthTwoOptionalDimension); + this.enterRule(localContext, 736, MySqlParser.RULE_lengthTwoOptionalDimension); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7239; + this.state = 7289; this.match(MySqlParser.LR_BRACKET); - this.state = 7240; + this.state = 7290; this.decimalLiteral(); - this.state = 7243; + this.state = 7293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 7241; + this.state = 7291; this.match(MySqlParser.COMMA); - this.state = 7242; + this.state = 7292; this.decimalLiteral(); } } - this.state = 7245; + this.state = 7295; this.match(MySqlParser.RR_BRACKET); } } @@ -42971,32 +43763,32 @@ export class MySqlParser extends SQLParserBase { } public indexColumnNames(): IndexColumnNamesContext { let localContext = new IndexColumnNamesContext(this.context, this.state); - this.enterRule(localContext, 734, MySqlParser.RULE_indexColumnNames); + this.enterRule(localContext, 738, MySqlParser.RULE_indexColumnNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7247; + this.state = 7297; this.match(MySqlParser.LR_BRACKET); - this.state = 7248; + this.state = 7298; this.indexColumnName(); - this.state = 7253; + this.state = 7303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7249; + this.state = 7299; this.match(MySqlParser.COMMA); - this.state = 7250; + this.state = 7300; this.indexColumnName(); } } - this.state = 7255; + this.state = 7305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7256; + this.state = 7306; this.match(MySqlParser.RR_BRACKET); } } @@ -43016,26 +43808,26 @@ export class MySqlParser extends SQLParserBase { } public expressions(): ExpressionsContext { let localContext = new ExpressionsContext(this.context, this.state); - this.enterRule(localContext, 736, MySqlParser.RULE_expressions); + this.enterRule(localContext, 740, MySqlParser.RULE_expressions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7258; + this.state = 7308; this.expression(0); - this.state = 7263; + this.state = 7313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7259; + this.state = 7309; this.match(MySqlParser.COMMA); - this.state = 7260; + this.state = 7310; this.expression(0); } } - this.state = 7265; + this.state = 7315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43057,12 +43849,12 @@ export class MySqlParser extends SQLParserBase { } public valuesOrValueList(): ValuesOrValueListContext { let localContext = new ValuesOrValueListContext(this.context, this.state); - this.enterRule(localContext, 738, MySqlParser.RULE_valuesOrValueList); + this.enterRule(localContext, 742, MySqlParser.RULE_valuesOrValueList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7266; + this.state = 7316; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 682)) { this.errorHandler.recoverInline(this); @@ -43071,21 +43863,21 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7267; + this.state = 7317; this.expressionsWithDefaults(); - this.state = 7272; + this.state = 7322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7268; + this.state = 7318; this.match(MySqlParser.COMMA); - this.state = 7269; + this.state = 7319; this.expressionsWithDefaults(); } } - this.state = 7274; + this.state = 7324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43107,32 +43899,32 @@ export class MySqlParser extends SQLParserBase { } public expressionsWithDefaults(): ExpressionsWithDefaultsContext { let localContext = new ExpressionsWithDefaultsContext(this.context, this.state); - this.enterRule(localContext, 740, MySqlParser.RULE_expressionsWithDefaults); + this.enterRule(localContext, 744, MySqlParser.RULE_expressionsWithDefaults); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7275; + this.state = 7325; this.match(MySqlParser.LR_BRACKET); - this.state = 7276; + this.state = 7326; this.expressionOrDefault(); - this.state = 7281; + this.state = 7331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7277; + this.state = 7327; this.match(MySqlParser.COMMA); - this.state = 7278; + this.state = 7328; this.expressionOrDefault(); } } - this.state = 7283; + this.state = 7333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7284; + this.state = 7334; this.match(MySqlParser.RR_BRACKET); } } @@ -43152,22 +43944,22 @@ export class MySqlParser extends SQLParserBase { } public expressionOrDefault(): ExpressionOrDefaultContext { let localContext = new ExpressionOrDefaultContext(this.context, this.state); - this.enterRule(localContext, 742, MySqlParser.RULE_expressionOrDefault); + this.enterRule(localContext, 746, MySqlParser.RULE_expressionOrDefault); try { - this.state = 7288; + this.state = 7338; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1065, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1074, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7286; + this.state = 7336; this.expression(0); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7287; + this.state = 7337; this.match(MySqlParser.KW_DEFAULT); } break; @@ -43189,26 +43981,26 @@ export class MySqlParser extends SQLParserBase { } public constants(): ConstantsContext { let localContext = new ConstantsContext(this.context, this.state); - this.enterRule(localContext, 744, MySqlParser.RULE_constants); + this.enterRule(localContext, 748, MySqlParser.RULE_constants); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7290; + this.state = 7340; this.constant(); - this.state = 7295; + this.state = 7345; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7291; + this.state = 7341; this.match(MySqlParser.COMMA); - this.state = 7292; + this.state = 7342; this.constant(); } } - this.state = 7297; + this.state = 7347; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43230,26 +44022,26 @@ export class MySqlParser extends SQLParserBase { } public simpleStrings(): SimpleStringsContext { let localContext = new SimpleStringsContext(this.context, this.state); - this.enterRule(localContext, 746, MySqlParser.RULE_simpleStrings); + this.enterRule(localContext, 750, MySqlParser.RULE_simpleStrings); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7298; + this.state = 7348; this.match(MySqlParser.STRING_LITERAL); - this.state = 7303; + this.state = 7353; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7299; + this.state = 7349; this.match(MySqlParser.COMMA); - this.state = 7300; + this.state = 7350; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 7305; + this.state = 7355; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43271,26 +44063,26 @@ export class MySqlParser extends SQLParserBase { } public userVariables(): UserVariablesContext { let localContext = new UserVariablesContext(this.context, this.state); - this.enterRule(localContext, 748, MySqlParser.RULE_userVariables); + this.enterRule(localContext, 752, MySqlParser.RULE_userVariables); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7306; + this.state = 7356; this.match(MySqlParser.LOCAL_ID); - this.state = 7311; + this.state = 7361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7307; + this.state = 7357; this.match(MySqlParser.COMMA); - this.state = 7308; + this.state = 7358; this.match(MySqlParser.LOCAL_ID); } } - this.state = 7313; + this.state = 7363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43312,67 +44104,67 @@ export class MySqlParser extends SQLParserBase { } public defaultValue(): DefaultValueContext { let localContext = new DefaultValueContext(this.context, this.state); - this.enterRule(localContext, 750, MySqlParser.RULE_defaultValue); + this.enterRule(localContext, 754, MySqlParser.RULE_defaultValue); try { - this.state = 7340; + this.state = 7390; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1071, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1080, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7314; + this.state = 7364; this.match(MySqlParser.KW_NULL_LITERAL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7315; + this.state = 7365; this.match(MySqlParser.KW_CAST); - this.state = 7316; + this.state = 7366; this.match(MySqlParser.LR_BRACKET); - this.state = 7317; + this.state = 7367; this.expression(0); - this.state = 7318; + this.state = 7368; this.match(MySqlParser.KW_AS); - this.state = 7319; + this.state = 7369; this.convertedDataType(); - this.state = 7320; + this.state = 7370; this.match(MySqlParser.RR_BRACKET); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7323; + this.state = 7373; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1078, this.context) ) { case 1: { - this.state = 7322; + this.state = 7372; this.unaryOperator(); } break; } - this.state = 7325; + this.state = 7375; this.constant(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7326; + this.state = 7376; this.currentTimestamp(); - this.state = 7330; + this.state = 7380; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1070, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1079, this.context) ) { case 1: { - this.state = 7327; + this.state = 7377; this.match(MySqlParser.KW_ON); - this.state = 7328; + this.state = 7378; this.match(MySqlParser.KW_UPDATE); - this.state = 7329; + this.state = 7379; this.currentTimestamp(); } break; @@ -43382,22 +44174,22 @@ export class MySqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7332; + this.state = 7382; this.match(MySqlParser.LR_BRACKET); - this.state = 7333; + this.state = 7383; this.expression(0); - this.state = 7334; + this.state = 7384; this.match(MySqlParser.RR_BRACKET); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7336; + this.state = 7386; this.match(MySqlParser.LR_BRACKET); - this.state = 7337; + this.state = 7387; this.fullId(); - this.state = 7338; + this.state = 7388; this.match(MySqlParser.RR_BRACKET); } break; @@ -43419,19 +44211,19 @@ export class MySqlParser extends SQLParserBase { } public currentTimestamp(): CurrentTimestampContext { let localContext = new CurrentTimestampContext(this.context, this.state); - this.enterRule(localContext, 752, MySqlParser.RULE_currentTimestamp); + this.enterRule(localContext, 756, MySqlParser.RULE_currentTimestamp); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7356; + this.state = 7406; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CURRENT_TIMESTAMP: case MySqlParser.KW_LOCALTIME: case MySqlParser.KW_LOCALTIMESTAMP: { - this.state = 7342; + this.state = 7392; _la = this.tokenStream.LA(1); if(!(((((_la - 287)) & ~0x1F) === 0 && ((1 << (_la - 287)) & 131) !== 0))) { this.errorHandler.recoverInline(this); @@ -43440,24 +44232,24 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7348; + this.state = 7398; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1073, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1082, this.context) ) { case 1: { - this.state = 7343; + this.state = 7393; this.match(MySqlParser.LR_BRACKET); - this.state = 7345; + this.state = 7395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & 20495) !== 0)) { { - this.state = 7344; + this.state = 7394; this.decimalLiteral(); } } - this.state = 7347; + this.state = 7397; this.match(MySqlParser.RR_BRACKET); } break; @@ -43466,21 +44258,21 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_NOW: { - this.state = 7350; + this.state = 7400; this.match(MySqlParser.KW_NOW); - this.state = 7351; + this.state = 7401; this.match(MySqlParser.LR_BRACKET); - this.state = 7353; + this.state = 7403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & 20495) !== 0)) { { - this.state = 7352; + this.state = 7402; this.decimalLiteral(); } } - this.state = 7355; + this.state = 7405; this.match(MySqlParser.RR_BRACKET); } break; @@ -43505,13 +44297,13 @@ export class MySqlParser extends SQLParserBase { } public ifExists(): IfExistsContext { let localContext = new IfExistsContext(this.context, this.state); - this.enterRule(localContext, 754, MySqlParser.RULE_ifExists); + this.enterRule(localContext, 758, MySqlParser.RULE_ifExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 7358; + this.state = 7408; this.match(MySqlParser.KW_IF); - this.state = 7359; + this.state = 7409; this.match(MySqlParser.KW_EXISTS); } } @@ -43531,15 +44323,15 @@ export class MySqlParser extends SQLParserBase { } public ifNotExists(): IfNotExistsContext { let localContext = new IfNotExistsContext(this.context, this.state); - this.enterRule(localContext, 756, MySqlParser.RULE_ifNotExists); + this.enterRule(localContext, 760, MySqlParser.RULE_ifNotExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 7361; + this.state = 7411; this.match(MySqlParser.KW_IF); - this.state = 7362; + this.state = 7412; this.match(MySqlParser.KW_NOT); - this.state = 7363; + this.state = 7413; this.match(MySqlParser.KW_EXISTS); } } @@ -43559,13 +44351,13 @@ export class MySqlParser extends SQLParserBase { } public orReplace(): OrReplaceContext { let localContext = new OrReplaceContext(this.context, this.state); - this.enterRule(localContext, 758, MySqlParser.RULE_orReplace); + this.enterRule(localContext, 762, MySqlParser.RULE_orReplace); try { this.enterOuterAlt(localContext, 1); { - this.state = 7365; + this.state = 7415; this.match(MySqlParser.KW_OR); - this.state = 7366; + this.state = 7416; this.match(MySqlParser.KW_REPLACE); } } @@ -43585,16 +44377,16 @@ export class MySqlParser extends SQLParserBase { } public functionCall(): FunctionCallContext { let localContext = new FunctionCallContext(this.context, this.state); - this.enterRule(localContext, 760, MySqlParser.RULE_functionCall); + this.enterRule(localContext, 764, MySqlParser.RULE_functionCall); try { - this.state = 7390; + this.state = 7440; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1078, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1087, this.context) ) { case 1: localContext = new SpecificFunctionCallContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7368; + this.state = 7418; this.specificFunction(); } break; @@ -43602,7 +44394,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AggregateFunctionCallContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7369; + this.state = 7419; this.aggregateWindowedFunction(); } break; @@ -43610,7 +44402,7 @@ export class MySqlParser extends SQLParserBase { localContext = new NonAggregateFunctionCallContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 7370; + this.state = 7420; this.nonAggregateWindowedFunction(); } break; @@ -43618,26 +44410,26 @@ export class MySqlParser extends SQLParserBase { localContext = new ScalarFunctionCallContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 7371; + this.state = 7421; this.scalarFunctionName(); - this.state = 7378; + this.state = 7428; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1076, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { case 1: { - this.state = 7372; + this.state = 7422; this.match(MySqlParser.LR_BRACKET); - this.state = 7373; + this.state = 7423; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 7374; + this.state = 7424; this.match(MySqlParser.LR_BRACKET); - this.state = 7375; + this.state = 7425; this.functionArgs(); - this.state = 7376; + this.state = 7426; this.match(MySqlParser.RR_BRACKET); } break; @@ -43648,26 +44440,26 @@ export class MySqlParser extends SQLParserBase { localContext = new UdfFunctionCallContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 7380; + this.state = 7430; this.functionName(); - this.state = 7387; + this.state = 7437; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1077, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1086, this.context) ) { case 1: { - this.state = 7381; + this.state = 7431; this.match(MySqlParser.LR_BRACKET); - this.state = 7382; + this.state = 7432; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 7383; + this.state = 7433; this.match(MySqlParser.LR_BRACKET); - this.state = 7384; + this.state = 7434; this.functionArgs(); - this.state = 7385; + this.state = 7435; this.match(MySqlParser.RR_BRACKET); } break; @@ -43678,7 +44470,7 @@ export class MySqlParser extends SQLParserBase { localContext = new PasswordFunctionCallContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 7389; + this.state = 7439; this.passwordFunctionClause(); } break; @@ -43700,17 +44492,17 @@ export class MySqlParser extends SQLParserBase { } public specificFunction(): SpecificFunctionContext { let localContext = new SpecificFunctionContext(this.context, this.state); - this.enterRule(localContext, 762, MySqlParser.RULE_specificFunction); + this.enterRule(localContext, 766, MySqlParser.RULE_specificFunction); let _la: number; try { - this.state = 7571; + this.state = 7621; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1102, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1111, this.context) ) { case 1: localContext = new SimpleFunctionCallContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7392; + this.state = 7442; _la = this.tokenStream.LA(1); if(!(_la === 152 || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 262159) !== 0))) { this.errorHandler.recoverInline(this); @@ -43719,14 +44511,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7395; + this.state = 7445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1079, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1088, this.context) ) { case 1: { - this.state = 7393; + this.state = 7443; this.match(MySqlParser.LR_BRACKET); - this.state = 7394; + this.state = 7444; this.match(MySqlParser.RR_BRACKET); } break; @@ -43737,7 +44529,7 @@ export class MySqlParser extends SQLParserBase { localContext = new CurrentUserContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7397; + this.state = 7447; this.currentUserExpression(); } break; @@ -43745,17 +44537,17 @@ export class MySqlParser extends SQLParserBase { localContext = new DataTypeFunctionCallContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 7398; + this.state = 7448; this.match(MySqlParser.KW_CONVERT); - this.state = 7399; + this.state = 7449; this.match(MySqlParser.LR_BRACKET); - this.state = 7400; + this.state = 7450; this.expression(0); - this.state = 7401; + this.state = 7451; (localContext as DataTypeFunctionCallContext)._separator = this.match(MySqlParser.COMMA); - this.state = 7402; + this.state = 7452; this.convertedDataType(); - this.state = 7403; + this.state = 7453; this.match(MySqlParser.RR_BRACKET); } break; @@ -43763,17 +44555,17 @@ export class MySqlParser extends SQLParserBase { localContext = new DataTypeFunctionCallContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 7405; + this.state = 7455; this.match(MySqlParser.KW_CONVERT); - this.state = 7406; + this.state = 7456; this.match(MySqlParser.LR_BRACKET); - this.state = 7407; + this.state = 7457; this.expression(0); - this.state = 7408; + this.state = 7458; this.match(MySqlParser.KW_USING); - this.state = 7409; + this.state = 7459; this.charsetName(); - this.state = 7410; + this.state = 7460; this.match(MySqlParser.RR_BRACKET); } break; @@ -43781,17 +44573,17 @@ export class MySqlParser extends SQLParserBase { localContext = new DataTypeFunctionCallContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 7412; + this.state = 7462; this.match(MySqlParser.KW_CAST); - this.state = 7413; + this.state = 7463; this.match(MySqlParser.LR_BRACKET); - this.state = 7414; + this.state = 7464; this.expression(0); - this.state = 7415; + this.state = 7465; this.match(MySqlParser.KW_AS); - this.state = 7416; + this.state = 7466; this.convertedDataType(); - this.state = 7417; + this.state = 7467; this.match(MySqlParser.RR_BRACKET); } break; @@ -43799,13 +44591,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ValuesFunctionCallContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 7419; + this.state = 7469; this.match(MySqlParser.KW_VALUES); - this.state = 7420; + this.state = 7470; this.match(MySqlParser.LR_BRACKET); - this.state = 7421; + this.state = 7471; this.columnName(); - this.state = 7422; + this.state = 7472; this.match(MySqlParser.RR_BRACKET); } break; @@ -43813,35 +44605,35 @@ export class MySqlParser extends SQLParserBase { localContext = new CaseFunctionCallContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 7424; + this.state = 7474; this.match(MySqlParser.KW_CASE); - this.state = 7426; + this.state = 7476; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 7425; + this.state = 7475; this.caseFuncAlternative(); } } - this.state = 7428; + this.state = 7478; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 191); - this.state = 7432; + this.state = 7482; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 7430; + this.state = 7480; this.match(MySqlParser.KW_ELSE); - this.state = 7431; + this.state = 7481; (localContext as CaseFunctionCallContext)._elseArg = this.functionArg(); } } - this.state = 7434; + this.state = 7484; this.match(MySqlParser.KW_END); } break; @@ -43849,37 +44641,37 @@ export class MySqlParser extends SQLParserBase { localContext = new CaseExpressionFunctionCallContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 7436; + this.state = 7486; this.match(MySqlParser.KW_CASE); - this.state = 7437; + this.state = 7487; this.expression(0); - this.state = 7439; + this.state = 7489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 7438; + this.state = 7488; this.caseFuncAlternative(); } } - this.state = 7441; + this.state = 7491; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 191); - this.state = 7445; + this.state = 7495; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 7443; + this.state = 7493; this.match(MySqlParser.KW_ELSE); - this.state = 7444; + this.state = 7494; (localContext as CaseExpressionFunctionCallContext)._elseArg = this.functionArg(); } } - this.state = 7447; + this.state = 7497; this.match(MySqlParser.KW_END); } break; @@ -43887,25 +44679,25 @@ export class MySqlParser extends SQLParserBase { localContext = new CharFunctionCallContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 7449; + this.state = 7499; this.match(MySqlParser.KW_CHAR); - this.state = 7450; + this.state = 7500; this.match(MySqlParser.LR_BRACKET); - this.state = 7451; + this.state = 7501; this.functionArgs(); - this.state = 7454; + this.state = 7504; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 7452; + this.state = 7502; this.match(MySqlParser.KW_USING); - this.state = 7453; + this.state = 7503; this.charsetName(); } } - this.state = 7456; + this.state = 7506; this.match(MySqlParser.RR_BRACKET); } break; @@ -43913,45 +44705,45 @@ export class MySqlParser extends SQLParserBase { localContext = new PositionFunctionCallContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 7458; + this.state = 7508; this.match(MySqlParser.KW_POSITION); - this.state = 7459; + this.state = 7509; this.match(MySqlParser.LR_BRACKET); - this.state = 7462; + this.state = 7512; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1094, this.context) ) { case 1: { - this.state = 7460; + this.state = 7510; (localContext as PositionFunctionCallContext)._positionString = this.stringLiteral(); } break; case 2: { - this.state = 7461; + this.state = 7511; (localContext as PositionFunctionCallContext)._positionExpression = this.expression(0); } break; } - this.state = 7464; + this.state = 7514; this.match(MySqlParser.KW_IN); - this.state = 7467; + this.state = 7517; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1086, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1095, this.context) ) { case 1: { - this.state = 7465; + this.state = 7515; (localContext as PositionFunctionCallContext)._inString = this.stringLiteral(); } break; case 2: { - this.state = 7466; + this.state = 7516; (localContext as PositionFunctionCallContext)._inExpression = this.expression(0); } break; } - this.state = 7469; + this.state = 7519; this.match(MySqlParser.RR_BRACKET); } break; @@ -43959,7 +44751,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SubstrFunctionCallContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 7471; + this.state = 7521; _la = this.tokenStream.LA(1); if(!(_la === 297 || _la === 298)) { this.errorHandler.recoverInline(this); @@ -43968,61 +44760,61 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7472; + this.state = 7522; this.match(MySqlParser.LR_BRACKET); - this.state = 7475; + this.state = 7525; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1087, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context) ) { case 1: { - this.state = 7473; + this.state = 7523; (localContext as SubstrFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7474; + this.state = 7524; (localContext as SubstrFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7477; + this.state = 7527; this.match(MySqlParser.KW_FROM); - this.state = 7480; + this.state = 7530; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1088, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1097, this.context) ) { case 1: { - this.state = 7478; + this.state = 7528; (localContext as SubstrFunctionCallContext)._fromDecimal = this.decimalLiteral(); } break; case 2: { - this.state = 7479; + this.state = 7529; (localContext as SubstrFunctionCallContext)._fromExpression = this.expression(0); } break; } - this.state = 7487; + this.state = 7537; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 7482; + this.state = 7532; this.match(MySqlParser.KW_FOR); - this.state = 7485; + this.state = 7535; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1089, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context) ) { case 1: { - this.state = 7483; + this.state = 7533; (localContext as SubstrFunctionCallContext)._forDecimal = this.decimalLiteral(); } break; case 2: { - this.state = 7484; + this.state = 7534; (localContext as SubstrFunctionCallContext)._forExpression = this.expression(0); } break; @@ -44030,7 +44822,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 7489; + this.state = 7539; this.match(MySqlParser.RR_BRACKET); } break; @@ -44038,11 +44830,11 @@ export class MySqlParser extends SQLParserBase { localContext = new TrimFunctionCallContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 7491; + this.state = 7541; this.match(MySqlParser.KW_TRIM); - this.state = 7492; + this.state = 7542; this.match(MySqlParser.LR_BRACKET); - this.state = 7493; + this.state = 7543; (localContext as TrimFunctionCallContext)._positioinForm = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 18 || _la === 96 || _la === 177)) { @@ -44052,41 +44844,41 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7496; + this.state = 7546; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1091, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1100, this.context) ) { case 1: { - this.state = 7494; + this.state = 7544; (localContext as TrimFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7495; + this.state = 7545; (localContext as TrimFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7498; + this.state = 7548; this.match(MySqlParser.KW_FROM); - this.state = 7501; + this.state = 7551; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1101, this.context) ) { case 1: { - this.state = 7499; + this.state = 7549; (localContext as TrimFunctionCallContext)._fromString = this.stringLiteral(); } break; case 2: { - this.state = 7500; + this.state = 7550; (localContext as TrimFunctionCallContext)._fromExpression = this.expression(0); } break; } - this.state = 7503; + this.state = 7553; this.match(MySqlParser.RR_BRACKET); } break; @@ -44094,45 +44886,45 @@ export class MySqlParser extends SQLParserBase { localContext = new TrimFunctionCallContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 7505; + this.state = 7555; this.match(MySqlParser.KW_TRIM); - this.state = 7506; + this.state = 7556; this.match(MySqlParser.LR_BRACKET); - this.state = 7509; + this.state = 7559; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1102, this.context) ) { case 1: { - this.state = 7507; + this.state = 7557; (localContext as TrimFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7508; + this.state = 7558; (localContext as TrimFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7511; + this.state = 7561; this.match(MySqlParser.KW_FROM); - this.state = 7514; + this.state = 7564; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1094, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1103, this.context) ) { case 1: { - this.state = 7512; + this.state = 7562; (localContext as TrimFunctionCallContext)._fromString = this.stringLiteral(); } break; case 2: { - this.state = 7513; + this.state = 7563; (localContext as TrimFunctionCallContext)._fromExpression = this.expression(0); } break; } - this.state = 7516; + this.state = 7566; this.match(MySqlParser.RR_BRACKET); } break; @@ -44140,34 +44932,34 @@ export class MySqlParser extends SQLParserBase { localContext = new WeightFunctionCallContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 7518; + this.state = 7568; this.match(MySqlParser.KW_WEIGHT_STRING); - this.state = 7519; + this.state = 7569; this.match(MySqlParser.LR_BRACKET); - this.state = 7522; + this.state = 7572; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1095, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1104, this.context) ) { case 1: { - this.state = 7520; + this.state = 7570; this.stringLiteral(); } break; case 2: { - this.state = 7521; + this.state = 7571; this.expression(0); } break; } - this.state = 7530; + this.state = 7580; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 7524; + this.state = 7574; this.match(MySqlParser.KW_AS); - this.state = 7525; + this.state = 7575; (localContext as WeightFunctionCallContext)._stringFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 224 || _la === 228)) { @@ -44177,26 +44969,26 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7526; + this.state = 7576; this.match(MySqlParser.LR_BRACKET); - this.state = 7527; + this.state = 7577; this.decimalLiteral(); - this.state = 7528; + this.state = 7578; this.match(MySqlParser.RR_BRACKET); } } - this.state = 7533; + this.state = 7583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 448) { { - this.state = 7532; + this.state = 7582; this.levelsInWeightString(); } } - this.state = 7535; + this.state = 7585; this.match(MySqlParser.RR_BRACKET); } break; @@ -44204,31 +44996,31 @@ export class MySqlParser extends SQLParserBase { localContext = new ExtractFunctionCallContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 7537; + this.state = 7587; this.match(MySqlParser.KW_EXTRACT); - this.state = 7538; + this.state = 7588; this.match(MySqlParser.LR_BRACKET); - this.state = 7539; + this.state = 7589; this.intervalType(); - this.state = 7540; + this.state = 7590; this.match(MySqlParser.KW_FROM); - this.state = 7543; + this.state = 7593; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { case 1: { - this.state = 7541; + this.state = 7591; (localContext as ExtractFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7542; + this.state = 7592; (localContext as ExtractFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7545; + this.state = 7595; this.match(MySqlParser.RR_BRACKET); } break; @@ -44236,11 +45028,11 @@ export class MySqlParser extends SQLParserBase { localContext = new GetFormatFunctionCallContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 7547; + this.state = 7597; this.match(MySqlParser.KW_GET_FORMAT); - this.state = 7548; + this.state = 7598; this.match(MySqlParser.LR_BRACKET); - this.state = 7549; + this.state = 7599; (localContext as GetFormatFunctionCallContext)._datetimeFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 11) !== 0))) { @@ -44250,11 +45042,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7550; + this.state = 7600; this.match(MySqlParser.COMMA); - this.state = 7551; + this.state = 7601; this.stringLiteral(); - this.state = 7552; + this.state = 7602; this.match(MySqlParser.RR_BRACKET); } break; @@ -44262,49 +45054,49 @@ export class MySqlParser extends SQLParserBase { localContext = new JsonValueFunctionCallContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 7554; + this.state = 7604; this.match(MySqlParser.KW_JSON_VALUE); - this.state = 7555; + this.state = 7605; this.match(MySqlParser.LR_BRACKET); - this.state = 7556; + this.state = 7606; this.expression(0); - this.state = 7557; + this.state = 7607; this.match(MySqlParser.COMMA); - this.state = 7558; + this.state = 7608; this.expression(0); - this.state = 7561; + this.state = 7611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 579) { { - this.state = 7559; + this.state = 7609; this.match(MySqlParser.KW_RETURNING); - this.state = 7560; + this.state = 7610; this.convertedDataType(); } } - this.state = 7564; + this.state = 7614; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1100, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1109, this.context) ) { case 1: { - this.state = 7563; + this.state = 7613; this.jsonOnEmpty(); } break; } - this.state = 7567; + this.state = 7617; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 116 || _la === 382) { { - this.state = 7566; + this.state = 7616; this.jsonOnError(); } } - this.state = 7569; + this.state = 7619; this.match(MySqlParser.RR_BRACKET); } break; @@ -44326,17 +45118,17 @@ export class MySqlParser extends SQLParserBase { } public caseFuncAlternative(): CaseFuncAlternativeContext { let localContext = new CaseFuncAlternativeContext(this.context, this.state); - this.enterRule(localContext, 764, MySqlParser.RULE_caseFuncAlternative); + this.enterRule(localContext, 768, MySqlParser.RULE_caseFuncAlternative); try { this.enterOuterAlt(localContext, 1); { - this.state = 7573; + this.state = 7623; this.match(MySqlParser.KW_WHEN); - this.state = 7574; + this.state = 7624; localContext._condition = this.functionArg(); - this.state = 7575; + this.state = 7625; this.match(MySqlParser.KW_THEN); - this.state = 7576; + this.state = 7626; localContext._consequent = this.functionArg(); } } @@ -44356,33 +45148,33 @@ export class MySqlParser extends SQLParserBase { } public levelsInWeightString(): LevelsInWeightStringContext { let localContext = new LevelsInWeightStringContext(this.context, this.state); - this.enterRule(localContext, 766, MySqlParser.RULE_levelsInWeightString); + this.enterRule(localContext, 770, MySqlParser.RULE_levelsInWeightString); let _la: number; try { - this.state = 7592; + this.state = 7642; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1104, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { case 1: localContext = new LevelWeightListContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7578; + this.state = 7628; this.match(MySqlParser.KW_LEVEL); - this.state = 7579; + this.state = 7629; this.levelInWeightListElement(); - this.state = 7584; + this.state = 7634; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7580; + this.state = 7630; this.match(MySqlParser.COMMA); - this.state = 7581; + this.state = 7631; this.levelInWeightListElement(); } } - this.state = 7586; + this.state = 7636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -44392,13 +45184,13 @@ export class MySqlParser extends SQLParserBase { localContext = new LevelWeightRangeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7587; + this.state = 7637; this.match(MySqlParser.KW_LEVEL); - this.state = 7588; + this.state = 7638; (localContext as LevelWeightRangeContext)._firstLevel = this.decimalLiteral(); - this.state = 7589; + this.state = 7639; this.match(MySqlParser.MINUS); - this.state = 7590; + this.state = 7640; (localContext as LevelWeightRangeContext)._lastLevel = this.decimalLiteral(); } break; @@ -44420,19 +45212,19 @@ export class MySqlParser extends SQLParserBase { } public levelInWeightListElement(): LevelInWeightListElementContext { let localContext = new LevelInWeightListElementContext(this.context, this.state); - this.enterRule(localContext, 768, MySqlParser.RULE_levelInWeightListElement); + this.enterRule(localContext, 772, MySqlParser.RULE_levelInWeightListElement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7594; + this.state = 7644; this.decimalLiteral(); - this.state = 7596; + this.state = 7646; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 14 || _la === 45 || _la === 830) { { - this.state = 7595; + this.state = 7645; localContext._orderType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45 || _la === 830)) { @@ -44463,10 +45255,10 @@ export class MySqlParser extends SQLParserBase { } public aggregateWindowedFunction(): AggregateWindowedFunctionContext { let localContext = new AggregateWindowedFunctionContext(this.context, this.state); - this.enterRule(localContext, 770, MySqlParser.RULE_aggregateWindowedFunction); + this.enterRule(localContext, 774, MySqlParser.RULE_aggregateWindowedFunction); let _la: number; try { - this.state = 7657; + this.state = 7707; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AVG: @@ -44475,7 +45267,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUM: this.enterOuterAlt(localContext, 1); { - this.state = 7598; + this.state = 7648; _la = this.tokenStream.LA(1); if(!(((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 8400897) !== 0))) { this.errorHandler.recoverInline(this); @@ -44484,14 +45276,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7599; + this.state = 7649; this.match(MySqlParser.LR_BRACKET); - this.state = 7601; + this.state = 7651; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1106, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1115, this.context) ) { case 1: { - this.state = 7600; + this.state = 7650; localContext._aggregator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -44504,16 +45296,16 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 7603; + this.state = 7653; this.functionArg(); - this.state = 7604; + this.state = 7654; this.match(MySqlParser.RR_BRACKET); - this.state = 7606; + this.state = 7656; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1116, this.context) ) { case 1: { - this.state = 7605; + this.state = 7655; this.overClause(); } break; @@ -44523,52 +45315,52 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_COUNT: this.enterOuterAlt(localContext, 2); { - this.state = 7608; + this.state = 7658; this.match(MySqlParser.KW_COUNT); - this.state = 7609; + this.state = 7659; this.match(MySqlParser.LR_BRACKET); - this.state = 7617; + this.state = 7667; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1109, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { case 1: { - this.state = 7610; + this.state = 7660; localContext._starArg = this.match(MySqlParser.STAR); } break; case 2: { - this.state = 7612; + this.state = 7662; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1108, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1117, this.context) ) { case 1: { - this.state = 7611; + this.state = 7661; localContext._aggregator = this.match(MySqlParser.KW_ALL); } break; } - this.state = 7614; + this.state = 7664; this.functionArg(); } break; case 3: { - this.state = 7615; + this.state = 7665; localContext._aggregator = this.match(MySqlParser.KW_DISTINCT); - this.state = 7616; + this.state = 7666; this.functionArgs(); } break; } - this.state = 7619; + this.state = 7669; this.match(MySqlParser.RR_BRACKET); - this.state = 7621; + this.state = 7671; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1110, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1119, this.context) ) { case 1: { - this.state = 7620; + this.state = 7670; this.overClause(); } break; @@ -44587,7 +45379,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VARIANCE: this.enterOuterAlt(localContext, 3); { - this.state = 7623; + this.state = 7673; _la = this.tokenStream.LA(1); if(!(((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 62652423) !== 0))) { this.errorHandler.recoverInline(this); @@ -44596,28 +45388,28 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7624; + this.state = 7674; this.match(MySqlParser.LR_BRACKET); - this.state = 7626; + this.state = 7676; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1111, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1120, this.context) ) { case 1: { - this.state = 7625; + this.state = 7675; localContext._aggregator = this.match(MySqlParser.KW_ALL); } break; } - this.state = 7628; + this.state = 7678; this.functionArg(); - this.state = 7629; + this.state = 7679; this.match(MySqlParser.RR_BRACKET); - this.state = 7631; + this.state = 7681; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1112, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1121, this.context) ) { case 1: { - this.state = 7630; + this.state = 7680; this.overClause(); } break; @@ -44627,65 +45419,65 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_GROUP_CONCAT: this.enterOuterAlt(localContext, 4); { - this.state = 7633; + this.state = 7683; this.match(MySqlParser.KW_GROUP_CONCAT); - this.state = 7634; + this.state = 7684; this.match(MySqlParser.LR_BRACKET); - this.state = 7636; + this.state = 7686; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1122, this.context) ) { case 1: { - this.state = 7635; + this.state = 7685; localContext._aggregator = this.match(MySqlParser.KW_DISTINCT); } break; } - this.state = 7638; + this.state = 7688; this.functionArgs(); - this.state = 7649; + this.state = 7699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 7639; + this.state = 7689; this.match(MySqlParser.KW_ORDER); - this.state = 7640; + this.state = 7690; this.match(MySqlParser.KW_BY); - this.state = 7641; + this.state = 7691; this.orderByExpression(); - this.state = 7646; + this.state = 7696; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7642; + this.state = 7692; this.match(MySqlParser.COMMA); - this.state = 7643; + this.state = 7693; this.orderByExpression(); } } - this.state = 7648; + this.state = 7698; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 7653; + this.state = 7703; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 156) { { - this.state = 7651; + this.state = 7701; this.match(MySqlParser.KW_SEPARATOR); - this.state = 7652; + this.state = 7702; localContext._separator = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 7655; + this.state = 7705; this.match(MySqlParser.RR_BRACKET); } break; @@ -44709,17 +45501,17 @@ export class MySqlParser extends SQLParserBase { } public nonAggregateWindowedFunction(): NonAggregateWindowedFunctionContext { let localContext = new NonAggregateWindowedFunctionContext(this.context, this.state); - this.enterRule(localContext, 772, MySqlParser.RULE_nonAggregateWindowedFunction); + this.enterRule(localContext, 776, MySqlParser.RULE_nonAggregateWindowedFunction); let _la: number; try { - this.state = 7697; + this.state = 7747; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_LAG: case MySqlParser.KW_LEAD: this.enterOuterAlt(localContext, 1); { - this.state = 7659; + this.state = 7709; _la = this.tokenStream.LA(1); if(!(_la === 267 || _la === 269)) { this.errorHandler.recoverInline(this); @@ -44728,37 +45520,37 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7660; + this.state = 7710; this.match(MySqlParser.LR_BRACKET); - this.state = 7661; + this.state = 7711; this.expression(0); - this.state = 7664; + this.state = 7714; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1127, this.context) ) { case 1: { - this.state = 7662; + this.state = 7712; this.match(MySqlParser.COMMA); - this.state = 7663; + this.state = 7713; this.decimalLiteral(); } break; } - this.state = 7668; + this.state = 7718; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 7666; + this.state = 7716; this.match(MySqlParser.COMMA); - this.state = 7667; + this.state = 7717; this.decimalLiteral(); } } - this.state = 7670; + this.state = 7720; this.match(MySqlParser.RR_BRACKET); - this.state = 7671; + this.state = 7721; this.overClause(); } break; @@ -44766,7 +45558,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_LAST_VALUE: this.enterOuterAlt(localContext, 2); { - this.state = 7673; + this.state = 7723; _la = this.tokenStream.LA(1); if(!(_la === 265 || _la === 268)) { this.errorHandler.recoverInline(this); @@ -44775,13 +45567,13 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7674; + this.state = 7724; this.match(MySqlParser.LR_BRACKET); - this.state = 7675; + this.state = 7725; this.expression(0); - this.state = 7676; + this.state = 7726; this.match(MySqlParser.RR_BRACKET); - this.state = 7677; + this.state = 7727; this.overClause(); } break; @@ -44792,7 +45584,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ROW_NUMBER: this.enterOuterAlt(localContext, 3); { - this.state = 7679; + this.state = 7729; _la = this.tokenStream.LA(1); if(!(((((_la - 263)) & ~0x1F) === 0 && ((1 << (_la - 263)) & 14339) !== 0))) { this.errorHandler.recoverInline(this); @@ -44801,45 +45593,45 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7680; + this.state = 7730; this.match(MySqlParser.LR_BRACKET); - this.state = 7681; + this.state = 7731; this.match(MySqlParser.RR_BRACKET); - this.state = 7682; + this.state = 7732; this.overClause(); } break; case MySqlParser.KW_NTH_VALUE: this.enterOuterAlt(localContext, 4); { - this.state = 7683; + this.state = 7733; this.match(MySqlParser.KW_NTH_VALUE); - this.state = 7684; + this.state = 7734; this.match(MySqlParser.LR_BRACKET); - this.state = 7685; + this.state = 7735; this.expression(0); - this.state = 7686; + this.state = 7736; this.match(MySqlParser.COMMA); - this.state = 7687; + this.state = 7737; this.decimalLiteral(); - this.state = 7688; + this.state = 7738; this.match(MySqlParser.RR_BRACKET); - this.state = 7689; + this.state = 7739; this.overClause(); } break; case MySqlParser.KW_NTILE: this.enterOuterAlt(localContext, 5); { - this.state = 7691; + this.state = 7741; this.match(MySqlParser.KW_NTILE); - this.state = 7692; + this.state = 7742; this.match(MySqlParser.LR_BRACKET); - this.state = 7693; + this.state = 7743; this.decimalLiteral(); - this.state = 7694; + this.state = 7744; this.match(MySqlParser.RR_BRACKET); - this.state = 7695; + this.state = 7745; this.overClause(); } break; @@ -44863,22 +45655,22 @@ export class MySqlParser extends SQLParserBase { } public overClause(): OverClauseContext { let localContext = new OverClauseContext(this.context, this.state); - this.enterRule(localContext, 774, MySqlParser.RULE_overClause); + this.enterRule(localContext, 778, MySqlParser.RULE_overClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 7699; + this.state = 7749; this.match(MySqlParser.KW_OVER); - this.state = 7705; + this.state = 7755; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LR_BRACKET: { - this.state = 7700; + this.state = 7750; this.match(MySqlParser.LR_BRACKET); - this.state = 7701; + this.state = 7751; this.windowSpec(); - this.state = 7702; + this.state = 7752; this.match(MySqlParser.RR_BRACKET); } break; @@ -45212,6 +46004,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -45431,7 +46224,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 7704; + this.state = 7754; this.windowName(); } break; @@ -45456,47 +46249,47 @@ export class MySqlParser extends SQLParserBase { } public windowSpec(): WindowSpecContext { let localContext = new WindowSpecContext(this.context, this.state); - this.enterRule(localContext, 776, MySqlParser.RULE_windowSpec); + this.enterRule(localContext, 780, MySqlParser.RULE_windowSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7708; + this.state = 7758; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1122, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { case 1: { - this.state = 7707; + this.state = 7757; this.windowName(); } break; } - this.state = 7711; + this.state = 7761; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 7710; + this.state = 7760; this.partitionClause(); } } - this.state = 7714; + this.state = 7764; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 7713; + this.state = 7763; this.orderByClause(); } } - this.state = 7717; + this.state = 7767; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134 || _la === 587) { { - this.state = 7716; + this.state = 7766; this.frameClause(); } } @@ -45519,11 +46312,11 @@ export class MySqlParser extends SQLParserBase { } public windowName(): WindowNameContext { let localContext = new WindowNameContext(this.context, this.state); - this.enterRule(localContext, 778, MySqlParser.RULE_windowName); + this.enterRule(localContext, 782, MySqlParser.RULE_windowName); try { this.enterOuterAlt(localContext, 1); { - this.state = 7719; + this.state = 7769; this.uid(); } } @@ -45543,13 +46336,13 @@ export class MySqlParser extends SQLParserBase { } public frameClause(): FrameClauseContext { let localContext = new FrameClauseContext(this.context, this.state); - this.enterRule(localContext, 780, MySqlParser.RULE_frameClause); + this.enterRule(localContext, 784, MySqlParser.RULE_frameClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 7721; + this.state = 7771; this.frameUnits(); - this.state = 7722; + this.state = 7772; this.frameExtent(); } } @@ -45569,12 +46362,12 @@ export class MySqlParser extends SQLParserBase { } public frameUnits(): FrameUnitsContext { let localContext = new FrameUnitsContext(this.context, this.state); - this.enterRule(localContext, 782, MySqlParser.RULE_frameUnits); + this.enterRule(localContext, 786, MySqlParser.RULE_frameUnits); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7724; + this.state = 7774; _la = this.tokenStream.LA(1); if(!(_la === 134 || _la === 587)) { this.errorHandler.recoverInline(this); @@ -45601,22 +46394,22 @@ export class MySqlParser extends SQLParserBase { } public frameExtent(): FrameExtentContext { let localContext = new FrameExtentContext(this.context, this.state); - this.enterRule(localContext, 784, MySqlParser.RULE_frameExtent); + this.enterRule(localContext, 788, MySqlParser.RULE_frameExtent); try { - this.state = 7728; + this.state = 7778; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1126, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1135, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7726; + this.state = 7776; this.frameRange(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7727; + this.state = 7777; this.frameBetween(); } break; @@ -45638,17 +46431,17 @@ export class MySqlParser extends SQLParserBase { } public frameBetween(): FrameBetweenContext { let localContext = new FrameBetweenContext(this.context, this.state); - this.enterRule(localContext, 786, MySqlParser.RULE_frameBetween); + this.enterRule(localContext, 790, MySqlParser.RULE_frameBetween); try { this.enterOuterAlt(localContext, 1); { - this.state = 7730; + this.state = 7780; this.match(MySqlParser.KW_BETWEEN); - this.state = 7731; + this.state = 7781; this.frameRange(); - this.state = 7732; + this.state = 7782; this.match(MySqlParser.KW_AND); - this.state = 7733; + this.state = 7783; this.frameRange(); } } @@ -45668,27 +46461,27 @@ export class MySqlParser extends SQLParserBase { } public frameRange(): FrameRangeContext { let localContext = new FrameRangeContext(this.context, this.state); - this.enterRule(localContext, 788, MySqlParser.RULE_frameRange); + this.enterRule(localContext, 792, MySqlParser.RULE_frameRange); let _la: number; try { - this.state = 7742; + this.state = 7792; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1136, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7735; + this.state = 7785; this.match(MySqlParser.KW_CURRENT); - this.state = 7736; + this.state = 7786; this.match(MySqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7737; + this.state = 7787; this.match(MySqlParser.KW_UNBOUNDED); - this.state = 7738; + this.state = 7788; _la = this.tokenStream.LA(1); if(!(_la === 405 || _la === 539)) { this.errorHandler.recoverInline(this); @@ -45702,9 +46495,9 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7739; + this.state = 7789; this.expression(0); - this.state = 7740; + this.state = 7790; _la = this.tokenStream.LA(1); if(!(_la === 405 || _la === 539)) { this.errorHandler.recoverInline(this); @@ -45733,30 +46526,30 @@ export class MySqlParser extends SQLParserBase { } public partitionClause(): PartitionClauseContext { let localContext = new PartitionClauseContext(this.context, this.state); - this.enterRule(localContext, 790, MySqlParser.RULE_partitionClause); + this.enterRule(localContext, 794, MySqlParser.RULE_partitionClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7744; + this.state = 7794; this.match(MySqlParser.KW_PARTITION); - this.state = 7745; + this.state = 7795; this.match(MySqlParser.KW_BY); - this.state = 7746; + this.state = 7796; this.expression(0); - this.state = 7751; + this.state = 7801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7747; + this.state = 7797; this.match(MySqlParser.COMMA); - this.state = 7748; + this.state = 7798; this.expression(0); } } - this.state = 7753; + this.state = 7803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -45778,9 +46571,9 @@ export class MySqlParser extends SQLParserBase { } public scalarFunctionName(): ScalarFunctionNameContext { let localContext = new ScalarFunctionNameContext(this.context, this.state); - this.enterRule(localContext, 792, MySqlParser.RULE_scalarFunctionName); + this.enterRule(localContext, 796, MySqlParser.RULE_scalarFunctionName); try { - this.state = 7778; + this.state = 7828; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DATABASE: @@ -45837,168 +46630,168 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.MOD: this.enterOuterAlt(localContext, 1); { - this.state = 7754; + this.state = 7804; this.functionNameBase(); } break; case MySqlParser.KW_ASCII: this.enterOuterAlt(localContext, 2); { - this.state = 7755; + this.state = 7805; this.match(MySqlParser.KW_ASCII); } break; case MySqlParser.KW_CURDATE: this.enterOuterAlt(localContext, 3); { - this.state = 7756; + this.state = 7806; this.match(MySqlParser.KW_CURDATE); } break; case MySqlParser.KW_CURRENT_DATE: this.enterOuterAlt(localContext, 4); { - this.state = 7757; + this.state = 7807; this.match(MySqlParser.KW_CURRENT_DATE); } break; case MySqlParser.KW_CURRENT_TIME: this.enterOuterAlt(localContext, 5); { - this.state = 7758; + this.state = 7808; this.match(MySqlParser.KW_CURRENT_TIME); } break; case MySqlParser.KW_CURRENT_TIMESTAMP: this.enterOuterAlt(localContext, 6); { - this.state = 7759; + this.state = 7809; this.match(MySqlParser.KW_CURRENT_TIMESTAMP); } break; case MySqlParser.KW_CURTIME: this.enterOuterAlt(localContext, 7); { - this.state = 7760; + this.state = 7810; this.match(MySqlParser.KW_CURTIME); } break; case MySqlParser.KW_DATE_ADD: this.enterOuterAlt(localContext, 8); { - this.state = 7761; + this.state = 7811; this.match(MySqlParser.KW_DATE_ADD); } break; case MySqlParser.KW_DATE_SUB: this.enterOuterAlt(localContext, 9); { - this.state = 7762; + this.state = 7812; this.match(MySqlParser.KW_DATE_SUB); } break; case MySqlParser.KW_IF: this.enterOuterAlt(localContext, 10); { - this.state = 7763; + this.state = 7813; this.match(MySqlParser.KW_IF); } break; case MySqlParser.KW_INSERT: this.enterOuterAlt(localContext, 11); { - this.state = 7764; + this.state = 7814; this.match(MySqlParser.KW_INSERT); } break; case MySqlParser.KW_LOCALTIME: this.enterOuterAlt(localContext, 12); { - this.state = 7765; + this.state = 7815; this.match(MySqlParser.KW_LOCALTIME); } break; case MySqlParser.KW_LOCALTIMESTAMP: this.enterOuterAlt(localContext, 13); { - this.state = 7766; + this.state = 7816; this.match(MySqlParser.KW_LOCALTIMESTAMP); } break; case MySqlParser.KW_MID: this.enterOuterAlt(localContext, 14); { - this.state = 7767; + this.state = 7817; this.match(MySqlParser.KW_MID); } break; case MySqlParser.KW_NOW: this.enterOuterAlt(localContext, 15); { - this.state = 7768; + this.state = 7818; this.match(MySqlParser.KW_NOW); } break; case MySqlParser.KW_REPEAT: this.enterOuterAlt(localContext, 16); { - this.state = 7769; + this.state = 7819; this.match(MySqlParser.KW_REPEAT); } break; case MySqlParser.KW_REPLACE: this.enterOuterAlt(localContext, 17); { - this.state = 7770; + this.state = 7820; this.match(MySqlParser.KW_REPLACE); } break; case MySqlParser.KW_SUBSTR: this.enterOuterAlt(localContext, 18); { - this.state = 7771; + this.state = 7821; this.match(MySqlParser.KW_SUBSTR); } break; case MySqlParser.KW_SUBSTRING: this.enterOuterAlt(localContext, 19); { - this.state = 7772; + this.state = 7822; this.match(MySqlParser.KW_SUBSTRING); } break; case MySqlParser.KW_SYSDATE: this.enterOuterAlt(localContext, 20); { - this.state = 7773; + this.state = 7823; this.match(MySqlParser.KW_SYSDATE); } break; case MySqlParser.KW_TRIM: this.enterOuterAlt(localContext, 21); { - this.state = 7774; + this.state = 7824; this.match(MySqlParser.KW_TRIM); } break; case MySqlParser.KW_UTC_DATE: this.enterOuterAlt(localContext, 22); { - this.state = 7775; + this.state = 7825; this.match(MySqlParser.KW_UTC_DATE); } break; case MySqlParser.KW_UTC_TIME: this.enterOuterAlt(localContext, 23); { - this.state = 7776; + this.state = 7826; this.match(MySqlParser.KW_UTC_TIME); } break; case MySqlParser.KW_UTC_TIMESTAMP: this.enterOuterAlt(localContext, 24); { - this.state = 7777; + this.state = 7827; this.match(MySqlParser.KW_UTC_TIMESTAMP); } break; @@ -46022,12 +46815,12 @@ export class MySqlParser extends SQLParserBase { } public passwordFunctionClause(): PasswordFunctionClauseContext { let localContext = new PasswordFunctionClauseContext(this.context, this.state); - this.enterRule(localContext, 794, MySqlParser.RULE_passwordFunctionClause); + this.enterRule(localContext, 798, MySqlParser.RULE_passwordFunctionClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7780; + this.state = 7830; _la = this.tokenStream.LA(1); if(!(_la === 512 || _la === 529)) { this.errorHandler.recoverInline(this); @@ -46036,11 +46829,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7781; + this.state = 7831; this.match(MySqlParser.LR_BRACKET); - this.state = 7782; + this.state = 7832; this.functionArg(); - this.state = 7783; + this.state = 7833; this.match(MySqlParser.RR_BRACKET); } } @@ -46060,26 +46853,26 @@ export class MySqlParser extends SQLParserBase { } public functionArgs(): FunctionArgsContext { let localContext = new FunctionArgsContext(this.context, this.state); - this.enterRule(localContext, 796, MySqlParser.RULE_functionArgs); + this.enterRule(localContext, 800, MySqlParser.RULE_functionArgs); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7785; + this.state = 7835; this.functionArg(); - this.state = 7790; + this.state = 7840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7786; + this.state = 7836; this.match(MySqlParser.COMMA); - this.state = 7787; + this.state = 7837; this.functionArg(); } } - this.state = 7792; + this.state = 7842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -46101,29 +46894,29 @@ export class MySqlParser extends SQLParserBase { } public functionArg(): FunctionArgContext { let localContext = new FunctionArgContext(this.context, this.state); - this.enterRule(localContext, 798, MySqlParser.RULE_functionArg); + this.enterRule(localContext, 802, MySqlParser.RULE_functionArg); try { - this.state = 7796; + this.state = 7846; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1140, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7793; + this.state = 7843; this.constant(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7794; + this.state = 7844; this.functionCall(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7795; + this.state = 7845; this.expression(0); } break; @@ -46155,23 +46948,23 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new ExpressionContext(this.context, parentState); let previousContext = localContext; - let _startState = 800; - this.enterRecursionRule(localContext, 800, MySqlParser.RULE_expression, _p); + let _startState = 804; + this.enterRecursionRule(localContext, 804, MySqlParser.RULE_expression, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7809; + this.state = 7859; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1133, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { case 1: { localContext = new NotExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7799; + this.state = 7849; (localContext as NotExpressionContext)._notOperator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 114 || _la === 860)) { @@ -46181,7 +46974,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7800; + this.state = 7850; this.expression(4); } break; @@ -46190,21 +46983,21 @@ export class MySqlParser extends SQLParserBase { localContext = new IsExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7801; + this.state = 7851; this.predicate(0); - this.state = 7802; + this.state = 7852; this.match(MySqlParser.KW_IS); - this.state = 7804; + this.state = 7854; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7803; + this.state = 7853; this.match(MySqlParser.KW_NOT); } } - this.state = 7806; + this.state = 7856; (localContext as IsExpressionContext)._testValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 63 || _la === 179 || _la === 674)) { @@ -46221,15 +47014,15 @@ export class MySqlParser extends SQLParserBase { localContext = new PredicateExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7808; + this.state = 7858; this.predicate(0); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7817; + this.state = 7867; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1134, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -46240,20 +47033,20 @@ export class MySqlParser extends SQLParserBase { { localContext = new LogicalExpressionContext(new ExpressionContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expression); - this.state = 7811; + this.state = 7861; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7812; + this.state = 7862; this.logicalOperator(); - this.state = 7813; + this.state = 7863; this.expression(4); } } } - this.state = 7819; + this.state = 7869; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1134, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); } } } @@ -46283,8 +47076,8 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new PredicateContext(this.context, parentState); let previousContext = localContext; - let _startState = 802; - this.enterRecursionRule(localContext, 802, MySqlParser.RULE_predicate, _p); + let _startState = 806; + this.enterRecursionRule(localContext, 806, MySqlParser.RULE_predicate, _p); let _la: number; try { let alternative: number; @@ -46295,13 +47088,13 @@ export class MySqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 7821; + this.state = 7871; this.expressionAtom(0); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7886; + this.state = 7936; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1152, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -46309,34 +47102,34 @@ export class MySqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 7884; + this.state = 7934; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1151, this.context) ) { case 1: { localContext = new BetweenPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7823; + this.state = 7873; if (!(this.precpred(this.context, 6))) { throw this.createFailedPredicateException("this.precpred(this.context, 6)"); } - this.state = 7825; + this.state = 7875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7824; + this.state = 7874; this.match(MySqlParser.KW_NOT); } } - this.state = 7827; + this.state = 7877; this.match(MySqlParser.KW_BETWEEN); - this.state = 7828; + this.state = 7878; this.predicate(0); - this.state = 7829; + this.state = 7879; this.match(MySqlParser.KW_AND); - this.state = 7830; + this.state = 7880; this.predicate(7); } break; @@ -46344,15 +47137,15 @@ export class MySqlParser extends SQLParserBase { { localContext = new SoundsLikePredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7832; + this.state = 7882; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 7833; + this.state = 7883; this.match(MySqlParser.KW_SOUNDS); - this.state = 7834; + this.state = 7884; this.match(MySqlParser.KW_LIKE); - this.state = 7835; + this.state = 7885; this.predicate(6); } break; @@ -46360,21 +47153,21 @@ export class MySqlParser extends SQLParserBase { { localContext = new RegexpPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7836; + this.state = 7886; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7838; + this.state = 7888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7837; + this.state = 7887; this.match(MySqlParser.KW_NOT); } } - this.state = 7840; + this.state = 7890; (localContext as RegexpPredicateContext)._regex = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 151)) { @@ -46384,7 +47177,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7841; + this.state = 7891; this.predicate(4); } break; @@ -46392,41 +47185,41 @@ export class MySqlParser extends SQLParserBase { { localContext = new InPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7842; + this.state = 7892; if (!(this.precpred(this.context, 9))) { throw this.createFailedPredicateException("this.precpred(this.context, 9)"); } - this.state = 7844; + this.state = 7894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7843; + this.state = 7893; this.match(MySqlParser.KW_NOT); } } - this.state = 7846; + this.state = 7896; this.match(MySqlParser.KW_IN); - this.state = 7847; + this.state = 7897; this.match(MySqlParser.LR_BRACKET); - this.state = 7850; + this.state = 7900; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1138, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1147, this.context) ) { case 1: { - this.state = 7848; + this.state = 7898; this.selectStatement(); } break; case 2: { - this.state = 7849; + this.state = 7899; this.expressions(); } break; } - this.state = 7852; + this.state = 7902; this.match(MySqlParser.RR_BRACKET); } break; @@ -46434,13 +47227,13 @@ export class MySqlParser extends SQLParserBase { { localContext = new IsNullPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7854; + this.state = 7904; if (!(this.precpred(this.context, 8))) { throw this.createFailedPredicateException("this.precpred(this.context, 8)"); } - this.state = 7855; + this.state = 7905; this.match(MySqlParser.KW_IS); - this.state = 7856; + this.state = 7906; this.nullNotnull(); } break; @@ -46448,18 +47241,18 @@ export class MySqlParser extends SQLParserBase { { localContext = new BinaryComparisonPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7857; + this.state = 7907; if (!(this.precpred(this.context, 7))) { throw this.createFailedPredicateException("this.precpred(this.context, 7)"); } - this.state = 7858; + this.state = 7908; this.comparisonOperator(); - this.state = 7865; + this.state = 7915; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1139, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1148, this.context) ) { case 1: { - this.state = 7859; + this.state = 7909; (localContext as BinaryComparisonPredicateContext)._quantifier = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 309 || _la === 602)) { @@ -46469,17 +47262,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7860; + this.state = 7910; this.match(MySqlParser.LR_BRACKET); - this.state = 7861; + this.state = 7911; (localContext as BinaryComparisonPredicateContext)._subQuery = this.selectStatement(); - this.state = 7862; + this.state = 7912; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 7864; + this.state = 7914; (localContext as BinaryComparisonPredicateContext)._right = this.predicate(0); } break; @@ -46490,32 +47283,32 @@ export class MySqlParser extends SQLParserBase { { localContext = new LikePredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7867; + this.state = 7917; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 7869; + this.state = 7919; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7868; + this.state = 7918; this.match(MySqlParser.KW_NOT); } } - this.state = 7871; + this.state = 7921; this.match(MySqlParser.KW_LIKE); - this.state = 7872; + this.state = 7922; this.predicate(0); - this.state = 7875; + this.state = 7925; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1141, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1150, this.context) ) { case 1: { - this.state = 7873; + this.state = 7923; this.match(MySqlParser.KW_ESCAPE); - this.state = 7874; + this.state = 7924; this.match(MySqlParser.STRING_LITERAL); } break; @@ -46526,28 +47319,28 @@ export class MySqlParser extends SQLParserBase { { localContext = new JsonMemberOfPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7877; + this.state = 7927; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 7878; + this.state = 7928; this.match(MySqlParser.KW_MEMBER); - this.state = 7879; + this.state = 7929; this.match(MySqlParser.KW_OF); - this.state = 7880; + this.state = 7930; this.match(MySqlParser.LR_BRACKET); - this.state = 7881; + this.state = 7931; this.predicate(0); - this.state = 7882; + this.state = 7932; this.match(MySqlParser.RR_BRACKET); } break; } } } - this.state = 7888; + this.state = 7938; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1152, this.context); } } } @@ -46577,23 +47370,23 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new ExpressionAtomContext(this.context, parentState); let previousContext = localContext; - let _startState = 804; - this.enterRecursionRule(localContext, 804, MySqlParser.RULE_expressionAtom, _p); + let _startState = 808; + this.enterRecursionRule(localContext, 808, MySqlParser.RULE_expressionAtom, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7937; + this.state = 7987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1146, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1155, this.context) ) { case 1: { localContext = new ConstantExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7890; + this.state = 7940; this.constant(); } break; @@ -46602,7 +47395,7 @@ export class MySqlParser extends SQLParserBase { localContext = new FunctionCallExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7891; + this.state = 7941; this.functionCall(); } break; @@ -46611,7 +47404,7 @@ export class MySqlParser extends SQLParserBase { localContext = new MysqlVariableExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7892; + this.state = 7942; this.mysqlVariable(); } break; @@ -46620,9 +47413,9 @@ export class MySqlParser extends SQLParserBase { localContext = new UnaryExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7893; + this.state = 7943; this.unaryOperator(); - this.state = 7894; + this.state = 7944; this.expressionAtom(12); } break; @@ -46631,9 +47424,9 @@ export class MySqlParser extends SQLParserBase { localContext = new BinaryExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7896; + this.state = 7946; this.match(MySqlParser.KW_BINARY); - this.state = 7897; + this.state = 7947; this.expressionAtom(11); } break; @@ -46642,11 +47435,11 @@ export class MySqlParser extends SQLParserBase { localContext = new VariableAssignExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7898; + this.state = 7948; this.match(MySqlParser.LOCAL_ID); - this.state = 7899; + this.state = 7949; this.match(MySqlParser.VAR_ASSIGN); - this.state = 7900; + this.state = 7950; this.expressionAtom(10); } break; @@ -46655,27 +47448,27 @@ export class MySqlParser extends SQLParserBase { localContext = new NestedExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7901; + this.state = 7951; this.match(MySqlParser.LR_BRACKET); - this.state = 7902; + this.state = 7952; this.expression(0); - this.state = 7907; + this.state = 7957; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7903; + this.state = 7953; this.match(MySqlParser.COMMA); - this.state = 7904; + this.state = 7954; this.expression(0); } } - this.state = 7909; + this.state = 7959; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7910; + this.state = 7960; this.match(MySqlParser.RR_BRACKET); } break; @@ -46684,29 +47477,29 @@ export class MySqlParser extends SQLParserBase { localContext = new NestedRowExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7912; + this.state = 7962; this.match(MySqlParser.KW_ROW); - this.state = 7913; + this.state = 7963; this.match(MySqlParser.LR_BRACKET); - this.state = 7914; + this.state = 7964; this.expression(0); - this.state = 7917; + this.state = 7967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 7915; + this.state = 7965; this.match(MySqlParser.COMMA); - this.state = 7916; + this.state = 7966; this.expression(0); } } - this.state = 7919; + this.state = 7969; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 868); - this.state = 7921; + this.state = 7971; this.match(MySqlParser.RR_BRACKET); } break; @@ -46715,13 +47508,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ExistsExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7923; + this.state = 7973; this.match(MySqlParser.KW_EXISTS); - this.state = 7924; + this.state = 7974; this.match(MySqlParser.LR_BRACKET); - this.state = 7925; + this.state = 7975; this.selectStatement(); - this.state = 7926; + this.state = 7976; this.match(MySqlParser.RR_BRACKET); } break; @@ -46730,11 +47523,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SubqueryExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7928; + this.state = 7978; this.match(MySqlParser.LR_BRACKET); - this.state = 7929; + this.state = 7979; this.selectStatement(); - this.state = 7930; + this.state = 7980; this.match(MySqlParser.RR_BRACKET); } break; @@ -46743,11 +47536,11 @@ export class MySqlParser extends SQLParserBase { localContext = new IntervalExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7932; + this.state = 7982; this.match(MySqlParser.KW_INTERVAL); - this.state = 7933; + this.state = 7983; this.expression(0); - this.state = 7934; + this.state = 7984; this.intervalType(); } break; @@ -46756,15 +47549,15 @@ export class MySqlParser extends SQLParserBase { localContext = new ColumnNameExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7936; + this.state = 7986; this.columnName(); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7956; + this.state = 8006; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1148, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1157, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -46772,21 +47565,21 @@ export class MySqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 7954; + this.state = 8004; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1147, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1156, this.context) ) { case 1: { localContext = new JsonExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); (localContext as JsonExpressionAtomContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7939; + this.state = 7989; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 7940; + this.state = 7990; this.jsonOperator(); - this.state = 7941; + this.state = 7991; (localContext as JsonExpressionAtomContext)._right = this.expressionAtom(5); } break; @@ -46795,13 +47588,13 @@ export class MySqlParser extends SQLParserBase { localContext = new BitExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); (localContext as BitExpressionAtomContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7943; + this.state = 7993; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7944; + this.state = 7994; this.bitOperator(); - this.state = 7945; + this.state = 7995; (localContext as BitExpressionAtomContext)._right = this.expressionAtom(4); } break; @@ -46810,13 +47603,13 @@ export class MySqlParser extends SQLParserBase { localContext = new MathExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); (localContext as MathExpressionAtomContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7947; + this.state = 7997; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 7948; + this.state = 7998; this.mathOperator(); - this.state = 7949; + this.state = 7999; (localContext as MathExpressionAtomContext)._right = this.expressionAtom(3); } break; @@ -46824,22 +47617,22 @@ export class MySqlParser extends SQLParserBase { { localContext = new CollateExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7951; + this.state = 8001; if (!(this.precpred(this.context, 14))) { throw this.createFailedPredicateException("this.precpred(this.context, 14)"); } - this.state = 7952; + this.state = 8002; this.match(MySqlParser.KW_COLLATE); - this.state = 7953; + this.state = 8003; this.collationName(); } break; } } } - this.state = 7958; + this.state = 8008; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1148, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1157, this.context); } } } @@ -46859,12 +47652,12 @@ export class MySqlParser extends SQLParserBase { } public unaryOperator(): UnaryOperatorContext { let localContext = new UnaryOperatorContext(this.context, this.state); - this.enterRule(localContext, 806, MySqlParser.RULE_unaryOperator); + this.enterRule(localContext, 810, MySqlParser.RULE_unaryOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7959; + this.state = 8009; _la = this.tokenStream.LA(1); if(!(_la === 114 || ((((_la - 853)) & ~0x1F) === 0 && ((1 << (_la - 853)) & 387) !== 0))) { this.errorHandler.recoverInline(this); @@ -46891,44 +47684,44 @@ export class MySqlParser extends SQLParserBase { } public comparisonOperator(): ComparisonOperatorContext { let localContext = new ComparisonOperatorContext(this.context, this.state); - this.enterRule(localContext, 808, MySqlParser.RULE_comparisonOperator); + this.enterRule(localContext, 812, MySqlParser.RULE_comparisonOperator); try { - this.state = 7969; + this.state = 8019; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1149, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1158, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7961; + this.state = 8011; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7962; + this.state = 8012; this.match(MySqlParser.GREATER_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7963; + this.state = 8013; this.match(MySqlParser.EXCLAMATION_SYMBOL); - this.state = 7964; + this.state = 8014; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7965; + this.state = 8015; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7966; + this.state = 8016; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 7967; + this.state = 8017; this.match(MySqlParser.GREATER_SYMBOL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7968; + this.state = 8018; this.comparisonBase(); } break; @@ -46950,47 +47743,47 @@ export class MySqlParser extends SQLParserBase { } public comparisonBase(): ComparisonBaseContext { let localContext = new ComparisonBaseContext(this.context, this.state); - this.enterRule(localContext, 810, MySqlParser.RULE_comparisonBase); + this.enterRule(localContext, 814, MySqlParser.RULE_comparisonBase); try { - this.state = 7978; + this.state = 8028; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1150, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1159, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7971; + this.state = 8021; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7972; + this.state = 8022; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7973; + this.state = 8023; this.match(MySqlParser.GREATER_SYMBOL); - this.state = 7974; + this.state = 8024; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7975; + this.state = 8025; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7976; + this.state = 8026; this.match(MySqlParser.GREATER_SYMBOL); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7977; + this.state = 8027; this.match(MySqlParser.LESS_SYMBOL); } break; @@ -47012,47 +47805,47 @@ export class MySqlParser extends SQLParserBase { } public logicalOperator(): LogicalOperatorContext { let localContext = new LogicalOperatorContext(this.context, this.state); - this.enterRule(localContext, 812, MySqlParser.RULE_logicalOperator); + this.enterRule(localContext, 816, MySqlParser.RULE_logicalOperator); try { - this.state = 7987; + this.state = 8037; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AND: this.enterOuterAlt(localContext, 1); { - this.state = 7980; + this.state = 8030; this.match(MySqlParser.KW_AND); } break; case MySqlParser.BIT_AND_OP: this.enterOuterAlt(localContext, 2); { - this.state = 7981; + this.state = 8031; this.match(MySqlParser.BIT_AND_OP); - this.state = 7982; + this.state = 8032; this.match(MySqlParser.BIT_AND_OP); } break; case MySqlParser.KW_XOR: this.enterOuterAlt(localContext, 3); { - this.state = 7983; + this.state = 8033; this.match(MySqlParser.KW_XOR); } break; case MySqlParser.KW_OR: this.enterOuterAlt(localContext, 4); { - this.state = 7984; + this.state = 8034; this.match(MySqlParser.KW_OR); } break; case MySqlParser.BIT_OR_OP: this.enterOuterAlt(localContext, 5); { - this.state = 7985; + this.state = 8035; this.match(MySqlParser.BIT_OR_OP); - this.state = 7986; + this.state = 8036; this.match(MySqlParser.BIT_OR_OP); } break; @@ -47076,47 +47869,47 @@ export class MySqlParser extends SQLParserBase { } public bitOperator(): BitOperatorContext { let localContext = new BitOperatorContext(this.context, this.state); - this.enterRule(localContext, 814, MySqlParser.RULE_bitOperator); + this.enterRule(localContext, 818, MySqlParser.RULE_bitOperator); try { - this.state = 7996; + this.state = 8046; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LESS_SYMBOL: this.enterOuterAlt(localContext, 1); { - this.state = 7989; + this.state = 8039; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7990; + this.state = 8040; this.match(MySqlParser.LESS_SYMBOL); } break; case MySqlParser.GREATER_SYMBOL: this.enterOuterAlt(localContext, 2); { - this.state = 7991; + this.state = 8041; this.match(MySqlParser.GREATER_SYMBOL); - this.state = 7992; + this.state = 8042; this.match(MySqlParser.GREATER_SYMBOL); } break; case MySqlParser.BIT_AND_OP: this.enterOuterAlt(localContext, 3); { - this.state = 7993; + this.state = 8043; this.match(MySqlParser.BIT_AND_OP); } break; case MySqlParser.BIT_XOR_OP: this.enterOuterAlt(localContext, 4); { - this.state = 7994; + this.state = 8044; this.match(MySqlParser.BIT_XOR_OP); } break; case MySqlParser.BIT_OR_OP: this.enterOuterAlt(localContext, 5); { - this.state = 7995; + this.state = 8045; this.match(MySqlParser.BIT_OR_OP); } break; @@ -47140,12 +47933,12 @@ export class MySqlParser extends SQLParserBase { } public mathOperator(): MathOperatorContext { let localContext = new MathOperatorContext(this.context, this.state); - this.enterRule(localContext, 816, MySqlParser.RULE_mathOperator); + this.enterRule(localContext, 820, MySqlParser.RULE_mathOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7998; + this.state = 8048; _la = this.tokenStream.LA(1); if(!(((((_la - 850)) & ~0x1F) === 0 && ((1 << (_la - 850)) & 127) !== 0))) { this.errorHandler.recoverInline(this); @@ -47172,28 +47965,28 @@ export class MySqlParser extends SQLParserBase { } public jsonOperator(): JsonOperatorContext { let localContext = new JsonOperatorContext(this.context, this.state); - this.enterRule(localContext, 818, MySqlParser.RULE_jsonOperator); + this.enterRule(localContext, 822, MySqlParser.RULE_jsonOperator); try { - this.state = 8005; + this.state = 8055; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1153, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1162, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8000; + this.state = 8050; this.match(MySqlParser.MINUS); - this.state = 8001; + this.state = 8051; this.match(MySqlParser.GREATER_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8002; + this.state = 8052; this.match(MySqlParser.MINUS); - this.state = 8003; + this.state = 8053; this.match(MySqlParser.GREATER_SYMBOL); - this.state = 8004; + this.state = 8054; this.match(MySqlParser.GREATER_SYMBOL); } break; @@ -47215,12 +48008,12 @@ export class MySqlParser extends SQLParserBase { } public charsetNameBase(): CharsetNameBaseContext { let localContext = new CharsetNameBaseContext(this.context, this.state); - this.enterRule(localContext, 820, MySqlParser.RULE_charsetNameBase); + this.enterRule(localContext, 824, MySqlParser.RULE_charsetNameBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8007; + this.state = 8057; _la = this.tokenStream.LA(1); if(!(_la === 228 || ((((_la - 756)) & ~0x1F) === 0 && ((1 << (_la - 756)) & 4294967295) !== 0) || ((((_la - 788)) & ~0x1F) === 0 && ((1 << (_la - 788)) & 511) !== 0))) { this.errorHandler.recoverInline(this); @@ -47247,12 +48040,12 @@ export class MySqlParser extends SQLParserBase { } public transactionLevelBase(): TransactionLevelBaseContext { let localContext = new TransactionLevelBaseContext(this.context, this.state); - this.enterRule(localContext, 822, MySqlParser.RULE_transactionLevelBase); + this.enterRule(localContext, 826, MySqlParser.RULE_transactionLevelBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8009; + this.state = 8059; _la = this.tokenStream.LA(1); if(!(((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -47279,12 +48072,12 @@ export class MySqlParser extends SQLParserBase { } public privilegesBase(): PrivilegesBaseContext { let localContext = new PrivilegesBaseContext(this.context, this.state); - this.enterRule(localContext, 824, MySqlParser.RULE_privilegesBase); + this.enterRule(localContext, 828, MySqlParser.RULE_privilegesBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8011; + this.state = 8061; _la = this.tokenStream.LA(1); if(!(((((_la - 717)) & ~0x1F) === 0 && ((1 << (_la - 717)) & 68026371) !== 0) || ((((_la - 749)) & ~0x1F) === 0 && ((1 << (_la - 749)) & 11) !== 0))) { this.errorHandler.recoverInline(this); @@ -47311,12 +48104,12 @@ export class MySqlParser extends SQLParserBase { } public intervalTypeBase(): IntervalTypeBaseContext { let localContext = new IntervalTypeBaseContext(this.context, this.state); - this.enterRule(localContext, 826, MySqlParser.RULE_intervalTypeBase); + this.enterRule(localContext, 830, MySqlParser.RULE_intervalTypeBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8013; + this.state = 8063; _la = this.tokenStream.LA(1); if(!(((((_la - 696)) & ~0x1F) === 0 && ((1 << (_la - 696)) & 255) !== 0))) { this.errorHandler.recoverInline(this); @@ -47343,12 +48136,12 @@ export class MySqlParser extends SQLParserBase { } public dataTypeBase(): DataTypeBaseContext { let localContext = new DataTypeBaseContext(this.context, this.state); - this.enterRule(localContext, 828, MySqlParser.RULE_dataTypeBase); + this.enterRule(localContext, 832, MySqlParser.RULE_dataTypeBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8015; + this.state = 8065; _la = this.tokenStream.LA(1); if(!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 1179679) !== 0))) { this.errorHandler.recoverInline(this); @@ -47375,14 +48168,14 @@ export class MySqlParser extends SQLParserBase { } public keywordsCanBeId(): KeywordsCanBeIdContext { let localContext = new KeywordsCanBeIdContext(this.context, this.state); - this.enterRule(localContext, 830, MySqlParser.RULE_keywordsCanBeId); + this.enterRule(localContext, 834, MySqlParser.RULE_keywordsCanBeId); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8017; + this.state = 8067; _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014211) !== 0) || _la === 74 || _la === 95 || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 16673) !== 0) || _la === 160 || _la === 170 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1648345089) !== 0) || ((((_la - 277)) & ~0x1F) === 0 && ((1 << (_la - 277)) & 4160749823) !== 0) || ((((_la - 309)) & ~0x1F) === 0 && ((1 << (_la - 309)) & 4292870141) !== 0) || ((((_la - 341)) & ~0x1F) === 0 && ((1 << (_la - 341)) & 4294967287) !== 0) || ((((_la - 373)) & ~0x1F) === 0 && ((1 << (_la - 373)) & 4024434671) !== 0) || ((((_la - 406)) & ~0x1F) === 0 && ((1 << (_la - 406)) & 3747609503) !== 0) || ((((_la - 438)) & ~0x1F) === 0 && ((1 << (_la - 438)) & 4227727359) !== 0) || ((((_la - 470)) & ~0x1F) === 0 && ((1 << (_la - 470)) & 3758096239) !== 0) || ((((_la - 502)) & ~0x1F) === 0 && ((1 << (_la - 502)) & 2678062559) !== 0) || ((((_la - 534)) & ~0x1F) === 0 && ((1 << (_la - 534)) & 2682256863) !== 0) || ((((_la - 566)) & ~0x1F) === 0 && ((1 << (_la - 566)) & 4294957695) !== 0) || ((((_la - 598)) & ~0x1F) === 0 && ((1 << (_la - 598)) & 255) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 2128608253) !== 0) || ((((_la - 704)) & ~0x1F) === 0 && ((1 << (_la - 704)) & 1053007341) !== 0) || ((((_la - 737)) & ~0x1F) === 0 && ((1 << (_la - 737)) & 478907) !== 0) || ((((_la - 802)) & ~0x1F) === 0 && ((1 << (_la - 802)) & 3230662657) !== 0) || _la === 838)) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014211) !== 0) || _la === 74 || _la === 95 || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 16673) !== 0) || _la === 160 || _la === 170 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1648345089) !== 0) || ((((_la - 277)) & ~0x1F) === 0 && ((1 << (_la - 277)) & 4160749823) !== 0) || ((((_la - 309)) & ~0x1F) === 0 && ((1 << (_la - 309)) & 4292870141) !== 0) || ((((_la - 341)) & ~0x1F) === 0 && ((1 << (_la - 341)) & 4294967287) !== 0) || ((((_la - 373)) & ~0x1F) === 0 && ((1 << (_la - 373)) & 4024434671) !== 0) || ((((_la - 406)) & ~0x1F) === 0 && ((1 << (_la - 406)) & 3747609503) !== 0) || ((((_la - 438)) & ~0x1F) === 0 && ((1 << (_la - 438)) & 4227727359) !== 0) || ((((_la - 470)) & ~0x1F) === 0 && ((1 << (_la - 470)) & 3758096239) !== 0) || ((((_la - 502)) & ~0x1F) === 0 && ((1 << (_la - 502)) & 2678062559) !== 0) || ((((_la - 534)) & ~0x1F) === 0 && ((1 << (_la - 534)) & 2682256863) !== 0) || ((((_la - 566)) & ~0x1F) === 0 && ((1 << (_la - 566)) & 4294965887) !== 0) || ((((_la - 598)) & ~0x1F) === 0 && ((1 << (_la - 598)) & 255) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 2128608253) !== 0) || ((((_la - 704)) & ~0x1F) === 0 && ((1 << (_la - 704)) & 1053007341) !== 0) || ((((_la - 737)) & ~0x1F) === 0 && ((1 << (_la - 737)) & 478907) !== 0) || ((((_la - 802)) & ~0x1F) === 0 && ((1 << (_la - 802)) & 3230662657) !== 0) || _la === 838)) { this.errorHandler.recoverInline(this); } else { @@ -47407,12 +48200,12 @@ export class MySqlParser extends SQLParserBase { } public functionNameBase(): FunctionNameBaseContext { let localContext = new FunctionNameBaseContext(this.context, this.state); - this.enterRule(localContext, 832, MySqlParser.RULE_functionNameBase); + this.enterRule(localContext, 836, MySqlParser.RULE_functionNameBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8019; + this.state = 8069; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 98 || _la === 150 || _la === 152 || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 23) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 16375299) !== 0) || _la === 296 || _la === 435 || ((((_la - 686)) & ~0x1F) === 0 && ((1 << (_la - 686)) & 261121) !== 0) || _la === 746 || ((((_la - 813)) & ~0x1F) === 0 && ((1 << (_la - 813)) & 145190393) !== 0) || _la === 856)) { this.errorHandler.recoverInline(this); @@ -47440,17 +48233,17 @@ export class MySqlParser extends SQLParserBase { public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 104: + case 107: return this.queryExpressionBody_sempred(localContext as QueryExpressionBodyContext, predIndex); - case 105: + case 108: return this.queryItem_sempred(localContext as QueryItemContext, predIndex); - case 329: + case 331: return this.columnName_sempred(localContext as ColumnNameContext, predIndex); - case 400: + case 402: return this.expression_sempred(localContext as ExpressionContext, predIndex); - case 401: + case 403: return this.predicate_sempred(localContext as PredicateContext, predIndex); - case 402: + case 404: return this.expressionAtom_sempred(localContext as ExpressionAtomContext, predIndex); } return true; @@ -47521,7 +48314,7 @@ export class MySqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,895,8022,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,895,8072,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -47593,738 +48386,745 @@ export class MySqlParser extends SQLParserBase { 7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400, 2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406, 7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411, - 2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,1,0, - 5,0,836,8,0,10,0,12,0,839,9,0,1,0,1,0,1,1,1,1,3,1,845,8,1,1,1,3, - 1,848,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,857,8,2,1,3,1,3,1,4,1, - 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1, - 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1, - 4,1,4,1,4,1,4,1,4,1,4,3,4,900,8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1, - 5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,919,8,5,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,3,6,930,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1, - 7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,946,8,7,1,8,1,8,1,8,3,8,951,8,8,1, - 9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,963,8,9,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,3,10,998,8,10,1,11,1,11,1,11,1,11,1,11,1,11, - 1,11,1,11,3,11,1008,8,11,1,12,1,12,1,12,3,12,1013,8,12,1,12,1,12, - 5,12,1017,8,12,10,12,12,12,1020,9,12,1,13,1,13,3,13,1024,8,13,1, - 13,1,13,3,13,1028,8,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,1037, - 8,13,1,13,3,13,1040,8,13,1,13,3,13,1043,8,13,1,13,1,13,3,13,1047, - 8,13,1,13,1,13,1,13,1,14,1,14,3,14,1054,8,14,1,14,3,14,1057,8,14, - 1,14,1,14,1,14,3,14,1062,8,14,1,14,1,14,1,14,1,14,5,14,1068,8,14, - 10,14,12,14,1071,9,14,1,14,1,14,3,14,1075,8,14,1,14,1,14,1,14,3, - 14,1080,8,14,1,14,5,14,1083,8,14,10,14,12,14,1086,9,14,1,15,1,15, - 1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,1097,8,15,1,15,3,15,1100, - 8,15,1,15,1,15,3,15,1104,8,15,1,15,3,15,1107,8,15,1,15,1,15,3,15, - 1111,8,15,1,15,3,15,1114,8,15,1,15,1,15,3,15,1118,8,15,1,15,3,15, - 1121,8,15,1,15,3,15,1124,8,15,1,15,1,15,3,15,1128,8,15,1,15,3,15, - 1131,8,15,1,15,1,15,3,15,1135,8,15,1,15,1,15,1,16,1,16,3,16,1141, - 8,16,1,16,1,16,3,16,1145,8,16,1,16,1,16,1,16,3,16,1150,8,16,1,16, - 1,16,5,16,1154,8,16,10,16,12,16,1157,9,16,1,16,1,16,5,16,1161,8, - 16,10,16,12,16,1164,9,16,1,16,1,16,1,17,1,17,1,17,3,17,1171,8,17, - 1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, - 1,18,5,18,1187,8,18,10,18,12,18,1190,9,18,1,18,1,18,1,19,1,19,3, - 19,1196,8,19,1,19,1,19,3,19,1200,8,19,1,19,1,19,3,19,1204,8,19,1, - 19,1,19,3,19,1208,8,19,1,19,5,19,1211,8,19,10,19,12,19,1214,9,19, - 3,19,1216,8,19,1,19,3,19,1219,8,19,1,19,3,19,1222,8,19,1,19,3,19, - 1225,8,19,1,19,1,19,1,19,1,19,3,19,1231,8,19,1,19,1,19,3,19,1235, - 8,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1245,8,19,1,19, - 1,19,3,19,1249,8,19,1,19,1,19,3,19,1253,8,19,1,19,1,19,1,19,1,19, - 3,19,1259,8,19,1,19,5,19,1262,8,19,10,19,12,19,1265,9,19,3,19,1267, - 8,19,1,19,3,19,1270,8,19,3,19,1272,8,19,1,20,1,20,3,20,1276,8,20, - 1,20,1,20,1,20,1,20,1,20,3,20,1283,8,20,1,20,1,20,3,20,1287,8,20, - 1,20,3,20,1290,8,20,1,20,1,20,1,20,3,20,1295,8,20,1,20,1,20,3,20, - 1299,8,20,1,20,3,20,1302,8,20,1,20,1,20,3,20,1306,8,20,1,20,3,20, - 1309,8,20,1,21,1,21,3,21,1313,8,21,1,21,1,21,1,21,1,21,1,21,1,21, - 1,21,1,21,1,21,1,21,1,21,3,21,1326,8,21,1,21,3,21,1329,8,21,1,21, - 1,21,3,21,1333,8,21,1,21,3,21,1336,8,21,1,21,1,21,3,21,1340,8,21, - 1,21,3,21,1343,8,21,1,21,1,21,3,21,1347,8,21,1,21,3,21,1350,8,21, - 1,21,1,21,3,21,1354,8,21,1,21,3,21,1357,8,21,1,21,3,21,1360,8,21, - 1,21,1,21,3,21,1364,8,21,1,21,3,21,1367,8,21,1,21,1,21,3,21,1371, - 8,21,1,21,1,21,1,22,1,22,3,22,1377,8,22,1,22,1,22,3,22,1381,8,22, - 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,1393,8,22, - 1,22,1,22,1,23,1,23,3,23,1399,8,23,1,23,1,23,1,24,1,24,1,24,1,24, - 1,24,5,24,1408,8,24,10,24,12,24,1411,9,24,1,24,1,24,3,24,1415,8, - 24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1423,8,24,1,25,1,25,3,25,1427, - 8,25,1,25,1,25,1,25,3,25,1432,8,25,1,25,3,25,1435,8,25,1,25,1,25, - 1,25,3,25,1440,8,25,1,25,1,25,1,25,1,25,1,25,1,25,5,25,1448,8,25, - 10,25,12,25,1451,9,25,1,25,1,25,3,25,1455,8,25,1,25,1,25,1,25,3, - 25,1460,8,25,1,25,1,25,1,25,1,25,3,25,1466,8,25,1,25,1,25,1,25,3, - 25,1471,8,25,1,25,1,25,3,25,1475,8,25,3,25,1477,8,25,1,26,3,26,1480, - 8,26,1,26,1,26,3,26,1484,8,26,1,26,1,26,3,26,1488,8,26,1,26,3,26, - 1491,8,26,1,26,1,26,3,26,1495,8,26,1,26,1,26,3,26,1499,8,26,1,26, - 1,26,3,26,1503,8,26,1,26,1,26,1,26,1,26,3,26,1509,8,26,1,26,3,26, - 1512,8,26,1,27,1,27,1,27,1,27,1,27,3,27,1519,8,27,1,28,1,28,1,28, - 3,28,1524,8,28,1,29,1,29,1,29,1,29,3,29,1530,8,29,1,30,1,30,1,30, - 5,30,1535,8,30,10,30,12,30,1538,9,30,1,30,1,30,1,30,3,30,1543,8, - 30,1,30,1,30,1,30,1,30,5,30,1549,8,30,10,30,12,30,1552,9,30,3,30, - 1554,8,30,1,30,1,30,1,30,5,30,1559,8,30,10,30,12,30,1562,9,30,3, - 30,1564,8,30,3,30,1566,8,30,1,31,1,31,1,31,1,31,3,31,1572,8,31,1, - 32,1,32,1,32,1,32,3,32,1578,8,32,1,32,1,32,1,33,1,33,1,33,1,33,1, - 33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,1595,8,33,1,34,1, - 34,1,34,1,34,1,34,3,34,1602,8,34,1,35,1,35,1,35,1,36,1,36,3,36,1609, - 8,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1621, - 8,36,1,36,1,36,1,36,3,36,1626,8,36,1,36,3,36,1629,8,36,1,37,3,37, - 1632,8,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,3,38,1642,8,38, - 1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1655, - 8,38,1,38,1,38,1,38,3,38,1660,8,38,1,39,1,39,1,39,1,39,1,39,1,39, - 1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,1676,8,39,1,40,1,40, - 1,40,1,40,5,40,1682,8,40,10,40,12,40,1685,9,40,1,40,1,40,1,41,1, - 41,1,41,1,41,1,41,3,41,1694,8,41,1,41,3,41,1697,8,41,1,41,1,41,5, - 41,1701,8,41,10,41,12,41,1704,9,41,1,41,1,41,3,41,1708,8,41,1,41, - 3,41,1711,8,41,1,41,1,41,5,41,1715,8,41,10,41,12,41,1718,9,41,1, - 41,3,41,1721,8,41,1,41,1,41,1,41,3,41,1726,8,41,1,41,1,41,5,41,1730, - 8,41,10,41,12,41,1733,9,41,1,41,3,41,1736,8,41,1,41,1,41,3,41,1740, - 8,41,1,41,3,41,1743,8,41,1,41,3,41,1746,8,41,1,41,1,41,5,41,1750, - 8,41,10,41,12,41,1753,9,41,1,41,3,41,1756,8,41,1,41,1,41,1,41,3, - 41,1761,8,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1772, - 8,41,1,42,3,42,1775,8,42,1,42,1,42,1,42,1,42,1,42,3,42,1782,8,42, - 1,42,3,42,1785,8,42,1,43,1,43,3,43,1789,8,43,1,44,1,44,5,44,1793, - 8,44,10,44,12,44,1796,9,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, - 45,1,45,3,45,1807,8,45,1,45,3,45,1810,8,45,1,45,1,45,1,45,3,45,1815, - 8,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,3,45, - 1828,8,45,1,45,1,45,1,45,1,45,1,45,3,45,1835,8,45,1,45,1,45,1,45, - 1,45,3,45,1841,8,45,1,46,1,46,1,46,3,46,1846,8,46,1,46,1,46,3,46, - 1850,8,46,1,46,3,46,1853,8,46,1,47,1,47,1,47,1,47,1,47,1,47,3,47, - 1861,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1869,8,47,3,47,1871, - 8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,1881,8,48,1,49, - 1,49,3,49,1885,8,49,1,49,3,49,1888,8,49,1,49,1,49,3,49,1892,8,49, - 1,49,1,49,1,49,3,49,1897,8,49,1,49,1,49,1,49,3,49,1902,8,49,1,49, - 1,49,1,49,3,49,1907,8,49,1,49,1,49,3,49,1911,8,49,1,49,1,49,3,49, - 1915,8,49,1,49,1,49,3,49,1919,8,49,1,49,1,49,3,49,1923,8,49,1,49, - 1,49,3,49,1927,8,49,1,49,1,49,3,49,1931,8,49,1,49,1,49,1,49,3,49, - 1936,8,49,1,49,1,49,1,49,3,49,1941,8,49,1,49,1,49,1,49,3,49,1946, - 8,49,1,49,1,49,1,49,1,49,3,49,1952,8,49,1,49,1,49,1,49,3,49,1957, - 8,49,1,49,1,49,1,49,3,49,1962,8,49,1,49,1,49,1,49,3,49,1967,8,49, - 1,49,1,49,1,49,3,49,1972,8,49,1,49,1,49,1,49,3,49,1977,8,49,1,49, - 1,49,1,49,1,49,3,49,1983,8,49,1,49,1,49,1,49,3,49,1988,8,49,1,49, - 1,49,1,49,3,49,1993,8,49,1,49,1,49,1,49,3,49,1998,8,49,1,49,1,49, - 1,49,3,49,2003,8,49,1,49,1,49,1,49,3,49,2008,8,49,1,49,1,49,1,49, - 3,49,2013,8,49,1,49,1,49,1,49,3,49,2018,8,49,1,49,1,49,1,49,1,49, - 1,49,3,49,2025,8,49,1,49,1,49,1,49,3,49,2030,8,49,1,49,1,49,1,49, - 3,49,2035,8,49,1,49,1,49,1,49,3,49,2040,8,49,1,49,1,49,3,49,2044, - 8,49,1,49,1,49,1,49,3,49,2049,8,49,1,49,1,49,1,49,1,49,1,49,1,49, - 3,49,2057,8,49,1,49,1,49,1,49,3,49,2062,8,49,1,49,1,49,1,49,1,49, - 3,49,2068,8,49,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52, - 3,52,2080,8,52,1,52,1,52,1,52,1,52,1,52,3,52,2087,8,52,3,52,2089, - 8,52,1,52,1,52,1,52,1,52,5,52,2095,8,52,10,52,12,52,2098,9,52,1, - 52,1,52,3,52,2102,8,52,1,53,3,53,2105,8,53,1,53,1,53,1,53,1,53,1, - 53,1,53,3,53,2113,8,53,1,53,1,53,1,53,1,53,3,53,2119,8,53,1,53,1, - 53,3,53,2123,8,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,3,53,2136,8,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,3,53,2148,8,53,3,53,2150,8,53,1,54,3,54,2153,8,54,1,54,1, - 54,1,54,1,54,1,54,1,54,3,54,2161,8,54,1,54,1,54,1,54,1,54,3,54,2167, - 8,54,1,54,1,54,1,54,1,54,3,54,2173,8,54,1,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,5,55,2184,8,55,10,55,12,55,2187,9,55,1,55,1, - 55,5,55,2191,8,55,10,55,12,55,2194,9,55,1,55,1,55,1,55,1,55,5,55, - 2200,8,55,10,55,12,55,2203,9,55,1,55,1,55,3,55,2207,8,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,5,55,2216,8,55,10,55,12,55,2219,9,55, - 1,55,1,55,1,55,1,55,5,55,2225,8,55,10,55,12,55,2228,9,55,1,55,1, - 55,3,55,2232,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,2242, - 8,55,10,55,12,55,2245,9,55,1,55,1,55,5,55,2249,8,55,10,55,12,55, - 2252,9,55,1,55,1,55,1,55,1,55,5,55,2258,8,55,10,55,12,55,2261,9, - 55,1,55,1,55,3,55,2265,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,5,55,2275,8,55,10,55,12,55,2278,9,55,1,55,1,55,5,55,2282,8,55, - 10,55,12,55,2285,9,55,1,55,1,55,1,55,1,55,5,55,2291,8,55,10,55,12, - 55,2294,9,55,1,55,1,55,3,55,2298,8,55,1,55,1,55,1,55,5,55,2303,8, - 55,10,55,12,55,2306,9,55,1,55,1,55,1,55,1,55,5,55,2312,8,55,10,55, - 12,55,2315,9,55,1,55,1,55,3,55,2319,8,55,3,55,2321,8,55,1,56,1,56, - 1,56,3,56,2326,8,56,1,57,1,57,1,57,1,57,4,57,2332,8,57,11,57,12, - 57,2333,1,57,1,57,1,58,1,58,1,58,5,58,2341,8,58,10,58,12,58,2344, - 9,58,1,59,3,59,2347,8,59,1,59,3,59,2350,8,59,1,59,1,59,3,59,2354, - 8,59,1,59,1,59,1,59,3,59,2359,8,59,1,59,1,59,1,59,1,59,3,59,2365, - 8,59,1,59,1,59,1,59,1,59,3,59,2371,8,59,1,59,1,59,1,59,3,59,2376, - 8,59,1,59,1,59,1,59,3,59,2381,8,59,1,59,1,59,1,59,3,59,2386,8,59, - 1,59,1,59,1,59,3,59,2391,8,59,1,59,3,59,2394,8,59,1,60,1,60,1,60, - 3,60,2399,8,60,1,60,4,60,2402,8,60,11,60,12,60,2403,1,60,1,60,1, - 60,1,60,1,60,1,60,1,60,1,60,3,60,2414,8,60,1,61,1,61,3,61,2418,8, - 61,1,61,1,61,1,61,1,61,1,61,3,61,2425,8,61,1,61,1,61,1,61,3,61,2430, - 8,61,1,61,3,61,2433,8,61,1,61,1,61,1,61,3,61,2438,8,61,1,61,3,61, - 2441,8,61,1,61,1,61,3,61,2445,8,61,1,61,1,61,3,61,2449,8,61,1,62, - 1,62,1,62,1,62,5,62,2455,8,62,10,62,12,62,2458,9,62,1,63,1,63,1, - 63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, - 64,3,64,2476,8,64,1,64,3,64,2479,8,64,1,64,3,64,2482,8,64,1,64,1, - 64,3,64,2486,8,64,1,64,1,64,1,65,1,65,1,65,1,65,5,65,2494,8,65,10, - 65,12,65,2497,9,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,5,66, - 2507,8,66,10,66,12,66,2510,9,66,1,66,1,66,1,67,1,67,1,67,1,67,1, - 67,1,67,5,67,2520,8,67,10,67,12,67,2523,9,67,3,67,2525,8,67,1,67, - 1,67,5,67,2529,8,67,10,67,12,67,2532,9,67,3,67,2534,8,67,1,68,1, - 68,3,68,2538,8,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2547,8, - 68,1,68,3,68,2550,8,68,1,68,3,68,2553,8,68,1,68,1,68,1,68,3,68,2558, - 8,68,1,68,1,68,3,68,2562,8,68,1,68,3,68,2565,8,68,1,68,1,68,3,68, - 2569,8,68,1,68,1,68,3,68,2573,8,68,1,68,3,68,2576,8,68,1,68,1,68, - 3,68,2580,8,68,1,68,3,68,2583,8,68,1,68,1,68,3,68,2587,8,68,1,68, - 3,68,2590,8,68,1,69,1,69,1,69,1,69,3,69,2596,8,69,1,69,3,69,2599, - 8,69,1,69,1,69,1,69,3,69,2604,8,69,1,69,1,69,1,69,1,69,1,69,1,69, - 3,69,2612,8,69,1,69,1,69,1,69,1,69,3,69,2618,8,69,1,69,1,69,3,69, - 2622,8,69,1,70,1,70,3,70,2626,8,70,1,70,5,70,2629,8,70,10,70,12, - 70,2632,9,70,1,70,1,70,3,70,2636,8,70,1,70,1,70,1,70,1,70,1,70,3, - 70,2643,8,70,1,70,1,70,3,70,2647,8,70,1,70,1,70,1,70,1,70,1,70,1, - 70,1,70,5,70,2656,8,70,10,70,12,70,2659,9,70,1,70,1,70,1,70,1,70, - 1,70,3,70,2666,8,70,1,70,3,70,2669,8,70,1,70,1,70,5,70,2673,8,70, - 10,70,12,70,2676,9,70,1,70,1,70,1,70,3,70,2681,8,70,1,70,3,70,2684, - 8,70,1,70,1,70,5,70,2688,8,70,10,70,12,70,2691,9,70,1,70,1,70,1, - 70,3,70,2696,8,70,3,70,2698,8,70,1,70,1,70,1,70,3,70,2703,8,70,1, - 70,1,70,5,70,2707,8,70,10,70,12,70,2710,9,70,1,70,1,70,1,70,3,70, - 2715,8,70,3,70,2717,8,70,1,70,1,70,3,70,2721,8,70,1,70,3,70,2724, - 8,70,1,70,3,70,2727,8,70,1,70,1,70,5,70,2731,8,70,10,70,12,70,2734, - 9,70,1,70,1,70,1,70,3,70,2739,8,70,3,70,2741,8,70,1,70,1,70,1,70, - 3,70,2746,8,70,1,70,1,70,1,70,1,70,1,70,3,70,2753,8,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,3,70,2762,8,70,1,70,3,70,2765,8,70,1,70, - 1,70,3,70,2769,8,70,1,70,1,70,1,70,3,70,2774,8,70,1,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,3,70,2784,8,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,3,70,2793,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,2801, - 8,70,1,70,3,70,2804,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,2812, - 8,70,1,70,3,70,2815,8,70,1,70,1,70,1,70,1,70,1,70,3,70,2822,8,70, - 1,70,1,70,1,70,3,70,2827,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70, - 2835,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,1,70,3,70,2851,8,70,1,70,1,70,1,70,3,70,2856,8,70,1,70, - 1,70,1,70,1,70,1,70,3,70,2863,8,70,1,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,2882, - 8,70,1,70,1,70,1,70,1,70,3,70,2888,8,70,1,71,1,71,1,71,1,71,1,71, - 1,71,5,71,2896,8,71,10,71,12,71,2899,9,71,1,71,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,3,71,2910,8,71,1,71,1,71,1,71,1,71,1,71,3, - 71,2917,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2924,8,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71,2937,8,71,10,71, - 12,71,2940,9,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71, - 3,71,2952,8,71,1,71,1,71,1,71,1,71,3,71,2958,8,71,1,71,1,71,1,71, - 1,71,3,71,2964,8,71,1,71,1,71,1,71,1,71,3,71,2970,8,71,1,71,1,71, - 1,71,1,71,3,71,2976,8,71,1,71,1,71,1,71,1,71,3,71,2982,8,71,1,71, - 1,71,1,71,1,71,3,71,2988,8,71,1,72,1,72,1,72,3,72,2993,8,72,1,72, - 1,72,1,73,1,73,1,73,3,73,3000,8,73,1,73,1,73,1,74,1,74,1,74,3,74, - 3007,8,74,1,74,1,74,1,74,1,74,1,74,3,74,3014,8,74,1,74,1,74,1,74, - 3,74,3019,8,74,1,74,5,74,3022,8,74,10,74,12,74,3025,9,74,1,75,1, - 75,1,75,1,75,1,75,1,75,3,75,3033,8,75,1,75,1,75,1,76,1,76,1,76,3, - 76,3040,8,76,1,76,1,76,1,77,1,77,1,77,3,77,3047,8,77,1,77,1,77,1, - 78,1,78,1,78,3,78,3054,8,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,3, - 79,3063,8,79,1,79,1,79,1,80,1,80,3,80,3069,8,80,1,80,1,80,3,80,3073, - 8,80,1,80,1,80,3,80,3077,8,80,1,81,1,81,3,81,3081,8,81,1,81,1,81, - 1,81,1,81,3,81,3087,8,81,1,81,3,81,3090,8,81,1,82,1,82,1,82,3,82, - 3095,8,82,1,82,1,82,1,83,1,83,1,83,3,83,3102,8,83,1,83,1,83,1,83, - 5,83,3107,8,83,10,83,12,83,3110,9,83,1,83,3,83,3113,8,83,1,84,1, - 84,1,84,3,84,3118,8,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,3, - 85,3128,8,85,1,85,1,85,1,85,1,85,5,85,3134,8,85,10,85,12,85,3137, - 9,85,1,85,1,85,1,85,3,85,3142,8,85,1,86,1,86,1,86,1,86,1,86,5,86, - 3149,8,86,10,86,12,86,3152,9,86,1,87,1,87,1,87,1,87,1,88,1,88,3, - 88,3160,8,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,3,89,3169,8,89,1, - 89,3,89,3172,8,89,1,90,1,90,3,90,3176,8,90,1,91,1,91,1,91,1,92,1, - 92,1,92,1,92,3,92,3185,8,92,1,93,1,93,3,93,3189,8,93,1,93,3,93,3192, - 8,93,1,93,3,93,3195,8,93,1,93,1,93,1,93,1,93,3,93,3201,8,93,1,93, - 3,93,3204,8,93,1,93,3,93,3207,8,93,1,93,1,93,3,93,3211,8,93,1,93, - 3,93,3214,8,93,1,93,3,93,3217,8,93,1,93,3,93,3220,8,93,1,93,1,93, - 1,93,1,93,1,93,1,93,1,93,5,93,3229,8,93,10,93,12,93,3232,9,93,3, - 93,3234,8,93,1,94,1,94,1,94,3,94,3239,8,94,1,95,1,95,1,95,1,95,3, - 95,3245,8,95,1,96,1,96,1,96,3,96,3250,8,96,1,96,4,96,3253,8,96,11, - 96,12,96,3254,1,97,3,97,3258,8,97,1,97,1,97,3,97,3262,8,97,1,98, - 1,98,1,98,3,98,3267,8,98,1,98,3,98,3270,8,98,1,98,1,98,1,98,3,98, - 3275,8,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,3285,8,98, - 1,98,1,98,1,98,3,98,3290,8,98,1,98,1,98,4,98,3294,8,98,11,98,12, - 98,3295,3,98,3298,8,98,1,98,1,98,4,98,3302,8,98,11,98,12,98,3303, - 3,98,3306,8,98,1,98,1,98,1,98,1,98,3,98,3312,8,98,1,98,1,98,1,98, - 1,98,5,98,3318,8,98,10,98,12,98,3321,9,98,1,98,1,98,3,98,3325,8, - 98,1,98,1,98,1,98,1,98,5,98,3331,8,98,10,98,12,98,3334,9,98,3,98, - 3336,8,98,1,99,1,99,1,99,3,99,3341,8,99,1,99,3,99,3344,8,99,1,99, - 1,99,1,99,3,99,3349,8,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,3357, - 8,99,1,99,1,99,1,99,1,99,3,99,3363,8,99,1,99,1,99,3,99,3367,8,99, - 3,99,3369,8,99,1,99,1,99,1,99,1,99,3,99,3375,8,99,1,99,1,99,1,99, - 1,99,5,99,3381,8,99,10,99,12,99,3384,9,99,1,99,1,99,3,99,3388,8, - 99,1,99,1,99,1,99,1,99,5,99,3394,8,99,10,99,12,99,3397,9,99,3,99, - 3399,8,99,1,100,1,100,1,100,3,100,3404,8,100,1,100,3,100,3407,8, - 100,1,100,1,100,3,100,3411,8,100,1,100,3,100,3414,8,100,1,100,3, - 100,3417,8,100,1,101,1,101,3,101,3421,8,101,1,101,3,101,3424,8,101, - 1,101,1,101,1,101,1,101,1,101,1,101,3,101,3432,8,101,1,101,1,101, - 1,101,1,101,3,101,3438,8,101,1,101,1,101,3,101,3442,8,101,1,102, - 1,102,5,102,3446,8,102,10,102,12,102,3449,9,102,1,102,1,102,3,102, - 3453,8,102,1,102,1,102,3,102,3457,8,102,3,102,3459,8,102,1,102,1, - 102,5,102,3463,8,102,10,102,12,102,3466,9,102,1,102,3,102,3469,8, - 102,1,102,3,102,3472,8,102,1,102,3,102,3475,8,102,1,102,3,102,3478, - 8,102,1,102,1,102,5,102,3482,8,102,10,102,12,102,3485,9,102,1,102, - 1,102,3,102,3489,8,102,1,102,3,102,3492,8,102,1,102,3,102,3495,8, - 102,1,102,3,102,3498,8,102,1,102,3,102,3501,8,102,3,102,3503,8,102, - 1,103,3,103,3506,8,103,1,103,1,103,3,103,3510,8,103,1,103,3,103, - 3513,8,103,1,103,3,103,3516,8,103,1,104,1,104,1,104,1,104,1,104, - 1,104,3,104,3524,8,104,1,104,1,104,1,104,1,104,3,104,3530,8,104, - 1,104,5,104,3533,8,104,10,104,12,104,3536,9,104,1,105,1,105,1,105, - 1,105,1,105,1,105,3,105,3544,8,105,1,105,5,105,3547,8,105,10,105, - 12,105,3550,9,105,1,106,1,106,1,106,1,106,3,106,3556,8,106,1,106, - 3,106,3559,8,106,1,106,3,106,3562,8,106,1,106,1,106,3,106,3566,8, - 106,1,107,1,107,3,107,3570,8,107,1,108,1,108,1,108,1,108,3,108,3576, - 8,108,1,108,1,108,3,108,3580,8,108,1,109,1,109,1,109,5,109,3585, - 8,109,10,109,12,109,3588,9,109,1,109,3,109,3591,8,109,1,109,3,109, - 3594,8,109,1,109,3,109,3597,8,109,1,110,1,110,1,110,3,110,3602,8, - 110,1,111,1,111,1,111,1,111,1,111,3,111,3609,8,111,1,112,1,112,1, - 112,1,112,1,112,1,112,5,112,3617,8,112,10,112,12,112,3620,9,112, - 1,113,1,113,1,113,1,113,5,113,3626,8,113,10,113,12,113,3629,9,113, - 1,114,1,114,1,114,1,114,1,115,1,115,3,115,3637,8,115,1,116,1,116, - 1,116,1,116,1,116,1,116,5,116,3645,8,116,10,116,12,116,3648,9,116, - 3,116,3650,8,116,1,116,1,116,3,116,3654,8,116,1,116,1,116,1,116, - 1,116,3,116,3660,8,116,1,117,1,117,3,117,3664,8,117,1,117,3,117, - 3667,8,117,1,117,3,117,3670,8,117,1,117,1,117,1,117,3,117,3675,8, - 117,1,117,3,117,3678,8,117,1,117,1,117,1,117,1,117,1,117,3,117,3685, - 8,117,1,117,1,117,3,117,3689,8,117,1,117,3,117,3692,8,117,1,117, - 1,117,3,117,3696,8,117,1,118,1,118,3,118,3700,8,118,1,118,3,118, - 3703,8,118,1,118,3,118,3706,8,118,1,118,1,118,1,118,3,118,3711,8, - 118,1,118,1,118,1,118,1,118,3,118,3717,8,118,5,118,3719,8,118,10, - 118,12,118,3722,9,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 3,118,3731,8,118,1,118,1,118,1,118,1,118,3,118,3737,8,118,5,118, - 3739,8,118,10,118,12,118,3742,9,118,1,118,1,118,1,118,3,118,3747, - 8,118,1,118,1,118,3,118,3751,8,118,1,119,1,119,1,119,1,119,3,119, - 3757,8,119,1,119,3,119,3760,8,119,1,120,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,120,1,120,3,120,3772,8,120,1,120,1,120,3,120, - 3776,8,120,1,120,1,120,3,120,3780,8,120,1,121,1,121,1,121,1,121, - 1,121,1,121,3,121,3788,8,121,1,121,1,121,3,121,3792,8,121,1,122, - 1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,5,123,3804, - 8,123,10,123,12,123,3807,9,123,1,124,1,124,3,124,3811,8,124,1,124, - 3,124,3814,8,124,1,124,1,124,3,124,3818,8,124,1,124,3,124,3821,8, - 124,1,124,1,124,1,124,1,124,5,124,3827,8,124,10,124,12,124,3830, - 9,124,1,124,1,124,3,124,3834,8,124,1,124,3,124,3837,8,124,1,124, - 3,124,3840,8,124,1,125,1,125,3,125,3844,8,125,1,125,3,125,3847,8, - 125,1,125,1,125,1,125,1,125,1,125,5,125,3854,8,125,10,125,12,125, - 3857,9,125,1,125,1,125,3,125,3861,8,125,1,126,1,126,1,126,1,126, - 1,126,5,126,3868,8,126,10,126,12,126,3871,9,126,1,127,1,127,3,127, - 3875,8,127,1,128,1,128,1,128,5,128,3880,8,128,10,128,12,128,3883, - 9,128,1,129,1,129,5,129,3887,8,129,10,129,12,129,3890,9,129,1,129, - 1,129,1,129,5,129,3895,8,129,10,129,12,129,3898,9,129,1,129,1,129, - 1,129,3,129,3903,8,129,1,130,1,130,1,130,1,130,1,130,1,130,3,130, - 3911,8,130,1,130,3,130,3914,8,130,1,130,3,130,3917,8,130,1,130,1, - 130,1,130,5,130,3922,8,130,10,130,12,130,3925,9,130,3,130,3927,8, - 130,1,130,3,130,3930,8,130,1,130,1,130,1,130,1,130,1,130,3,130,3937, - 8,130,1,130,3,130,3940,8,130,1,130,1,130,3,130,3944,8,130,1,130, - 1,130,1,130,1,130,3,130,3950,8,130,1,131,1,131,1,131,1,131,1,132, - 1,132,1,132,1,132,3,132,3960,8,132,1,132,1,132,3,132,3964,8,132, - 1,132,1,132,1,133,1,133,1,133,1,133,1,133,3,133,3973,8,133,1,134, - 3,134,3976,8,134,1,134,1,134,3,134,3980,8,134,1,134,1,134,5,134, - 3984,8,134,10,134,12,134,3987,9,134,1,134,1,134,1,134,5,134,3992, - 8,134,10,134,12,134,3995,9,134,1,134,1,134,3,134,3999,8,134,1,134, - 1,134,3,134,4003,8,134,1,134,1,134,5,134,4007,8,134,10,134,12,134, - 4010,9,134,1,134,1,134,1,134,3,134,4015,8,134,1,134,3,134,4018,8, - 134,3,134,4020,8,134,1,134,1,134,3,134,4024,8,134,1,135,1,135,1, - 135,1,135,1,135,1,135,1,135,3,135,4033,8,135,1,136,1,136,1,136,1, - 136,1,136,1,136,1,136,1,136,3,136,4043,8,136,1,137,1,137,5,137,4047, - 8,137,10,137,12,137,4050,9,137,1,137,1,137,3,137,4054,8,137,1,137, - 1,137,3,137,4058,8,137,1,137,3,137,4061,8,137,1,137,3,137,4064,8, - 137,1,137,3,137,4067,8,137,1,137,3,137,4070,8,137,1,137,3,137,4073, - 8,137,1,138,1,138,3,138,4077,8,138,1,138,1,138,3,138,4081,8,138, - 1,139,1,139,1,139,1,139,1,139,1,139,3,139,4089,8,139,1,139,1,139, - 3,139,4093,8,139,1,139,3,139,4096,8,139,3,139,4098,8,139,1,140,1, - 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,3,140, - 4111,8,140,1,140,3,140,4114,8,140,1,141,1,141,1,141,5,141,4119,8, - 141,10,141,12,141,4122,9,141,1,142,1,142,1,142,1,142,1,142,1,142, - 1,142,3,142,4131,8,142,1,142,3,142,4134,8,142,1,142,1,142,1,142, - 3,142,4139,8,142,3,142,4141,8,142,1,142,1,142,3,142,4145,8,142,1, - 142,1,142,1,142,1,142,1,142,1,142,3,142,4153,8,142,1,143,1,143,1, - 143,1,143,3,143,4159,8,143,1,143,1,143,1,143,1,144,1,144,1,144,1, - 144,3,144,4168,8,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1, - 145,1,145,1,145,1,145,3,145,4181,8,145,1,146,1,146,3,146,4185,8, - 146,1,146,1,146,5,146,4189,8,146,10,146,12,146,4192,9,146,1,147, - 1,147,3,147,4196,8,147,1,147,1,147,3,147,4200,8,147,1,147,3,147, - 4203,8,147,1,147,1,147,3,147,4207,8,147,1,147,3,147,4210,8,147,1, - 147,1,147,1,147,1,147,1,147,1,147,3,147,4218,8,147,1,147,3,147,4221, - 8,147,3,147,4223,8,147,1,148,1,148,1,148,1,148,5,148,4229,8,148, - 10,148,12,148,4232,9,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148, - 1,148,1,148,3,148,4243,8,148,1,148,1,148,4,148,4247,8,148,11,148, - 12,148,4248,3,148,4251,8,148,1,148,1,148,4,148,4255,8,148,11,148, - 12,148,4256,3,148,4259,8,148,3,148,4261,8,148,1,149,1,149,1,149, - 1,149,3,149,4267,8,149,1,149,1,149,1,149,1,149,1,149,1,149,3,149, - 4275,8,149,1,150,1,150,1,150,1,150,1,150,1,150,3,150,4283,8,150, - 1,151,1,151,3,151,4287,8,151,1,151,1,151,3,151,4291,8,151,1,152, - 1,152,1,152,1,152,1,152,5,152,4298,8,152,10,152,12,152,4301,9,152, - 1,152,1,152,3,152,4305,8,152,1,153,1,153,1,153,1,154,1,154,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,5,154, - 4323,8,154,10,154,12,154,4326,9,154,1,155,1,155,3,155,4330,8,155, - 1,156,1,156,1,156,1,156,3,156,4336,8,156,1,156,1,156,1,156,1,156, - 1,156,3,156,4343,8,156,1,157,1,157,1,157,3,157,4348,8,157,1,158, - 1,158,1,158,1,158,1,158,5,158,4355,8,158,10,158,12,158,4358,9,158, - 3,158,4360,8,158,1,159,1,159,3,159,4364,8,159,1,160,1,160,3,160, - 4368,8,160,1,160,1,160,3,160,4372,8,160,1,160,3,160,4375,8,160,1, - 160,3,160,4378,8,160,1,160,3,160,4381,8,160,1,161,1,161,3,161,4385, - 8,161,1,161,1,161,3,161,4389,8,161,1,161,3,161,4392,8,161,1,161, - 3,161,4395,8,161,1,161,3,161,4398,8,161,1,162,1,162,1,162,1,163, - 1,163,3,163,4405,8,163,1,163,1,163,3,163,4409,8,163,1,163,1,163, - 1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,5,165,4422, - 8,165,10,165,12,165,4425,9,165,1,166,1,166,1,166,1,167,1,167,1,167, - 1,167,1,167,1,168,1,168,3,168,4437,8,168,1,168,1,168,1,168,1,168, - 5,168,4443,8,168,10,168,12,168,4446,9,168,1,169,1,169,1,169,1,169, - 1,169,1,169,1,169,3,169,4455,8,169,1,170,1,170,3,170,4459,8,170, - 1,170,3,170,4462,8,170,1,170,1,170,1,171,1,171,3,171,4468,8,171, - 1,171,3,171,4471,8,171,1,171,3,171,4474,8,171,1,172,1,172,1,172, - 1,172,1,172,1,172,1,172,3,172,4483,8,172,1,173,1,173,1,173,1,173, - 1,173,1,173,1,173,3,173,4492,8,173,1,174,1,174,1,174,1,174,1,174, - 1,174,5,174,4500,8,174,10,174,12,174,4503,9,174,1,174,3,174,4506, - 8,174,1,175,1,175,1,175,1,175,1,175,1,175,5,175,4514,8,175,10,175, - 12,175,4517,9,175,1,175,3,175,4520,8,175,1,176,1,176,1,176,1,176, - 1,176,1,176,1,176,5,176,4529,8,176,10,176,12,176,4532,9,176,1,176, - 3,176,4535,8,176,1,177,1,177,1,177,1,177,1,177,1,177,1,177,3,177, - 4544,8,177,1,178,1,178,1,178,1,178,1,178,5,178,4551,8,178,10,178, - 12,178,4554,9,178,3,178,4556,8,178,1,178,1,178,3,178,4560,8,178, - 1,178,5,178,4563,8,178,10,178,12,178,4566,9,178,1,178,3,178,4569, - 8,178,1,179,1,179,1,179,1,179,1,179,5,179,4576,8,179,10,179,12,179, - 4579,9,179,3,179,4581,8,179,1,179,3,179,4584,8,179,1,180,1,180,1, - 180,1,180,1,180,3,180,4591,8,180,1,180,1,180,1,180,1,180,3,180,4597, - 8,180,1,180,1,180,1,180,1,180,3,180,4603,8,180,1,181,1,181,1,181, - 1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, - 1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,5,182,4627,8,182, - 10,182,12,182,4630,9,182,3,182,4632,8,182,1,182,3,182,4635,8,182, - 1,183,1,183,1,184,1,184,1,185,1,185,1,186,1,186,1,186,1,186,1,186, - 1,186,1,186,1,186,1,186,1,186,1,186,3,186,4654,8,186,3,186,4656, - 8,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187, - 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,5,187,4677, - 8,187,10,187,12,187,4680,9,187,3,187,4682,8,187,1,187,3,187,4685, - 8,187,1,188,1,188,1,189,1,189,1,190,1,190,1,191,1,191,1,191,1,191, - 1,191,1,191,1,191,1,191,1,191,1,191,1,191,3,191,4704,8,191,3,191, - 4706,8,191,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193, - 1,193,5,193,4718,8,193,10,193,12,193,4721,9,193,1,193,1,193,1,193, - 1,193,1,193,1,193,1,193,1,193,5,193,4731,8,193,10,193,12,193,4734, - 9,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 5,193,4768,8,193,10,193,12,193,4771,9,193,1,193,1,193,3,193,4775, - 8,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,196,1,196, + 2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417, + 7,417,2,418,7,418,1,0,5,0,840,8,0,10,0,12,0,843,9,0,1,0,1,0,1,1, + 1,1,3,1,849,8,1,1,1,3,1,852,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2, + 861,8,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,905,8,4,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 3,5,924,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,935,8,6,1,7, + 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,951,8,7, + 1,8,1,8,1,8,3,8,956,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 3,9,968,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,1003,8,10,1, + 11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,1013,8,11,1,12,1,12,1, + 12,3,12,1018,8,12,1,12,1,12,5,12,1022,8,12,10,12,12,12,1025,9,12, + 1,13,1,13,3,13,1029,8,13,1,13,1,13,3,13,1033,8,13,1,13,1,13,1,13, + 1,13,1,13,1,13,1,13,3,13,1042,8,13,1,13,3,13,1045,8,13,1,13,3,13, + 1048,8,13,1,13,1,13,3,13,1052,8,13,1,13,1,13,1,13,1,14,1,14,3,14, + 1059,8,14,1,14,3,14,1062,8,14,1,14,1,14,1,14,3,14,1067,8,14,1,14, + 1,14,1,14,1,14,5,14,1073,8,14,10,14,12,14,1076,9,14,1,14,1,14,3, + 14,1080,8,14,1,14,1,14,1,14,3,14,1085,8,14,1,14,5,14,1088,8,14,10, + 14,12,14,1091,9,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15, + 3,15,1102,8,15,1,15,3,15,1105,8,15,1,15,1,15,3,15,1109,8,15,1,15, + 3,15,1112,8,15,1,15,1,15,3,15,1116,8,15,1,15,3,15,1119,8,15,1,15, + 1,15,3,15,1123,8,15,1,15,3,15,1126,8,15,1,15,3,15,1129,8,15,1,15, + 1,15,3,15,1133,8,15,1,15,3,15,1136,8,15,1,15,1,15,3,15,1140,8,15, + 1,15,1,15,1,16,1,16,3,16,1146,8,16,1,16,1,16,3,16,1150,8,16,1,16, + 1,16,1,16,3,16,1155,8,16,1,16,1,16,5,16,1159,8,16,10,16,12,16,1162, + 9,16,1,16,1,16,5,16,1166,8,16,10,16,12,16,1169,9,16,1,16,1,16,1, + 17,1,17,3,17,1175,8,17,1,17,3,17,1178,8,17,1,17,1,17,3,17,1182,8, + 17,1,17,1,17,1,17,3,17,1187,8,17,1,17,1,17,5,17,1191,8,17,10,17, + 12,17,1194,9,17,1,17,1,17,1,17,1,17,5,17,1200,8,17,10,17,12,17,1203, + 9,17,1,17,1,17,3,17,1207,8,17,1,18,1,18,3,18,1211,8,18,1,18,1,18, + 3,18,1215,8,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,3,19, + 1226,8,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,20,5,20,1242,8,20,10,20,12,20,1245,9,20,1,20,1,20,1, + 21,1,21,3,21,1251,8,21,1,21,1,21,3,21,1255,8,21,1,21,1,21,3,21,1259, + 8,21,1,21,1,21,3,21,1263,8,21,1,21,5,21,1266,8,21,10,21,12,21,1269, + 9,21,3,21,1271,8,21,1,21,3,21,1274,8,21,1,21,3,21,1277,8,21,1,21, + 3,21,1280,8,21,1,21,1,21,1,21,1,21,3,21,1286,8,21,1,21,1,21,3,21, + 1290,8,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1300,8,21, + 1,21,1,21,3,21,1304,8,21,1,21,1,21,3,21,1308,8,21,1,21,1,21,1,21, + 1,21,3,21,1314,8,21,1,21,5,21,1317,8,21,10,21,12,21,1320,9,21,3, + 21,1322,8,21,1,21,3,21,1325,8,21,3,21,1327,8,21,1,22,1,22,3,22,1331, + 8,22,1,22,1,22,1,22,1,22,1,22,3,22,1338,8,22,1,22,1,22,3,22,1342, + 8,22,1,22,3,22,1345,8,22,1,22,1,22,1,22,3,22,1350,8,22,1,22,1,22, + 3,22,1354,8,22,1,22,3,22,1357,8,22,1,22,1,22,3,22,1361,8,22,1,22, + 3,22,1364,8,22,1,23,1,23,3,23,1368,8,23,1,23,1,23,1,23,1,23,1,23, + 1,23,1,23,1,23,1,23,1,23,1,23,3,23,1381,8,23,1,23,3,23,1384,8,23, + 1,23,1,23,3,23,1388,8,23,1,23,3,23,1391,8,23,1,23,1,23,3,23,1395, + 8,23,1,23,3,23,1398,8,23,1,23,1,23,3,23,1402,8,23,1,23,3,23,1405, + 8,23,1,23,1,23,3,23,1409,8,23,1,23,3,23,1412,8,23,1,23,3,23,1415, + 8,23,1,23,1,23,3,23,1419,8,23,1,23,3,23,1422,8,23,1,23,1,23,3,23, + 1426,8,23,1,23,1,23,1,24,1,24,3,24,1432,8,24,1,24,3,24,1435,8,24, + 1,24,1,24,3,24,1439,8,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24, + 1,24,1,24,3,24,1451,8,24,1,24,1,24,1,25,1,25,3,25,1457,8,25,1,25, + 1,25,1,26,1,26,1,26,1,26,1,26,5,26,1466,8,26,10,26,12,26,1469,9, + 26,1,26,1,26,3,26,1473,8,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,1481, + 8,26,1,27,1,27,3,27,1485,8,27,1,27,1,27,1,27,3,27,1490,8,27,1,27, + 3,27,1493,8,27,1,27,1,27,1,27,3,27,1498,8,27,1,27,1,27,1,27,1,27, + 1,27,1,27,5,27,1506,8,27,10,27,12,27,1509,9,27,1,27,1,27,3,27,1513, + 8,27,1,27,1,27,1,27,3,27,1518,8,27,1,27,1,27,1,27,1,27,3,27,1524, + 8,27,1,27,1,27,1,27,3,27,1529,8,27,1,27,1,27,3,27,1533,8,27,3,27, + 1535,8,27,1,28,3,28,1538,8,28,1,28,1,28,3,28,1542,8,28,1,28,1,28, + 3,28,1546,8,28,1,28,3,28,1549,8,28,1,28,1,28,3,28,1553,8,28,1,28, + 1,28,3,28,1557,8,28,1,28,1,28,3,28,1561,8,28,1,28,1,28,1,28,1,28, + 3,28,1567,8,28,1,28,3,28,1570,8,28,1,29,1,29,1,29,1,29,1,29,3,29, + 1577,8,29,1,30,1,30,1,30,3,30,1582,8,30,1,31,1,31,1,31,1,31,3,31, + 1588,8,31,1,32,1,32,1,32,5,32,1593,8,32,10,32,12,32,1596,9,32,1, + 32,1,32,1,32,3,32,1601,8,32,1,32,1,32,1,32,1,32,5,32,1607,8,32,10, + 32,12,32,1610,9,32,3,32,1612,8,32,1,32,1,32,1,32,5,32,1617,8,32, + 10,32,12,32,1620,9,32,3,32,1622,8,32,3,32,1624,8,32,1,33,1,33,1, + 33,1,33,3,33,1630,8,33,1,34,1,34,1,34,1,34,3,34,1636,8,34,1,34,1, + 34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1, + 35,3,35,1653,8,35,1,36,1,36,1,36,1,36,1,36,3,36,1660,8,36,1,37,1, + 37,1,37,1,38,1,38,3,38,1667,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1, + 38,1,38,1,38,1,38,3,38,1679,8,38,1,38,1,38,1,38,3,38,1684,8,38,1, + 38,3,38,1687,8,38,1,39,3,39,1690,8,39,1,39,1,39,1,39,1,40,1,40,1, + 40,1,41,1,41,1,41,1,41,1,41,3,41,1703,8,41,1,41,1,41,1,41,1,41,1, + 41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1716,8,41,1,41,1,41,1,41,3, + 41,1721,8,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,42,1,42,1,42,3,42,1737,8,42,1,43,1,43,1,43,1,43,5,43,1743,8, + 43,10,43,12,43,1746,9,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,3,44, + 1755,8,44,1,44,3,44,1758,8,44,1,44,1,44,5,44,1762,8,44,10,44,12, + 44,1765,9,44,1,44,1,44,3,44,1769,8,44,1,44,3,44,1772,8,44,1,44,1, + 44,5,44,1776,8,44,10,44,12,44,1779,9,44,1,44,3,44,1782,8,44,1,44, + 1,44,1,44,3,44,1787,8,44,1,44,1,44,5,44,1791,8,44,10,44,12,44,1794, + 9,44,1,44,3,44,1797,8,44,1,44,1,44,3,44,1801,8,44,1,44,3,44,1804, + 8,44,1,44,3,44,1807,8,44,1,44,1,44,5,44,1811,8,44,10,44,12,44,1814, + 9,44,1,44,3,44,1817,8,44,1,44,1,44,1,44,3,44,1822,8,44,1,44,1,44, + 1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1833,8,44,1,45,3,45,1836, + 8,45,1,45,1,45,1,45,1,45,1,45,3,45,1843,8,45,1,45,3,45,1846,8,45, + 1,46,1,46,3,46,1850,8,46,1,47,1,47,5,47,1854,8,47,10,47,12,47,1857, + 9,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,1868,8,48, + 1,48,3,48,1871,8,48,1,48,1,48,1,48,3,48,1876,8,48,1,48,1,48,1,48, + 1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,1889,8,48,1,48,1,48, + 1,48,1,48,1,48,3,48,1896,8,48,1,48,1,48,1,48,1,48,3,48,1902,8,48, + 1,49,1,49,1,49,3,49,1907,8,49,1,49,1,49,3,49,1911,8,49,1,49,3,49, + 1914,8,49,1,50,1,50,1,50,1,50,1,50,1,50,3,50,1922,8,50,1,50,1,50, + 1,50,1,50,1,50,1,50,3,50,1930,8,50,3,50,1932,8,50,1,51,1,51,1,51, + 1,51,1,51,1,51,1,51,1,51,3,51,1942,8,51,1,52,1,52,3,52,1946,8,52, + 1,52,3,52,1949,8,52,1,52,1,52,3,52,1953,8,52,1,52,1,52,1,52,3,52, + 1958,8,52,1,52,1,52,1,52,3,52,1963,8,52,1,52,1,52,1,52,3,52,1968, + 8,52,1,52,1,52,3,52,1972,8,52,1,52,1,52,3,52,1976,8,52,1,52,1,52, + 3,52,1980,8,52,1,52,1,52,3,52,1984,8,52,1,52,1,52,3,52,1988,8,52, + 1,52,1,52,3,52,1992,8,52,1,52,1,52,1,52,3,52,1997,8,52,1,52,1,52, + 1,52,3,52,2002,8,52,1,52,1,52,1,52,3,52,2007,8,52,1,52,1,52,1,52, + 1,52,3,52,2013,8,52,1,52,1,52,1,52,3,52,2018,8,52,1,52,1,52,1,52, + 3,52,2023,8,52,1,52,1,52,1,52,3,52,2028,8,52,1,52,1,52,1,52,3,52, + 2033,8,52,1,52,1,52,1,52,3,52,2038,8,52,1,52,1,52,1,52,1,52,3,52, + 2044,8,52,1,52,1,52,1,52,3,52,2049,8,52,1,52,1,52,1,52,3,52,2054, + 8,52,1,52,1,52,1,52,3,52,2059,8,52,1,52,1,52,1,52,3,52,2064,8,52, + 1,52,1,52,1,52,3,52,2069,8,52,1,52,1,52,1,52,3,52,2074,8,52,1,52, + 1,52,1,52,3,52,2079,8,52,1,52,1,52,1,52,1,52,1,52,3,52,2086,8,52, + 1,52,1,52,1,52,3,52,2091,8,52,1,52,1,52,1,52,3,52,2096,8,52,1,52, + 1,52,1,52,3,52,2101,8,52,1,52,1,52,3,52,2105,8,52,1,52,1,52,1,52, + 3,52,2110,8,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,2118,8,52,1,52, + 1,52,1,52,3,52,2123,8,52,1,52,1,52,1,52,1,52,3,52,2129,8,52,1,53, + 1,53,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,3,55,2141,8,55,1,55, + 1,55,1,55,1,55,1,55,3,55,2148,8,55,3,55,2150,8,55,1,55,1,55,1,55, + 1,55,5,55,2156,8,55,10,55,12,55,2159,9,55,1,55,1,55,3,55,2163,8, + 55,1,56,3,56,2166,8,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2174,8, + 56,1,56,1,56,1,56,1,56,3,56,2180,8,56,1,56,1,56,3,56,2184,8,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2197,8, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2209,8, + 56,3,56,2211,8,56,1,57,3,57,2214,8,57,1,57,1,57,1,57,1,57,1,57,1, + 57,3,57,2222,8,57,1,57,1,57,1,57,1,57,3,57,2228,8,57,1,57,1,57,1, + 57,1,57,3,57,2234,8,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,5,58,2245,8,58,10,58,12,58,2248,9,58,1,58,1,58,5,58,2252,8,58, + 10,58,12,58,2255,9,58,1,58,1,58,1,58,1,58,5,58,2261,8,58,10,58,12, + 58,2264,9,58,1,58,1,58,3,58,2268,8,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,5,58,2277,8,58,10,58,12,58,2280,9,58,1,58,1,58,1,58,1,58, + 5,58,2286,8,58,10,58,12,58,2289,9,58,1,58,1,58,3,58,2293,8,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2303,8,58,10,58,12,58, + 2306,9,58,1,58,1,58,5,58,2310,8,58,10,58,12,58,2313,9,58,1,58,1, + 58,1,58,1,58,5,58,2319,8,58,10,58,12,58,2322,9,58,1,58,1,58,3,58, + 2326,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2336,8,58, + 10,58,12,58,2339,9,58,1,58,1,58,5,58,2343,8,58,10,58,12,58,2346, + 9,58,1,58,1,58,1,58,1,58,5,58,2352,8,58,10,58,12,58,2355,9,58,1, + 58,1,58,3,58,2359,8,58,1,58,1,58,1,58,5,58,2364,8,58,10,58,12,58, + 2367,9,58,1,58,1,58,1,58,1,58,5,58,2373,8,58,10,58,12,58,2376,9, + 58,1,58,1,58,3,58,2380,8,58,3,58,2382,8,58,1,59,1,59,1,59,3,59,2387, + 8,59,1,60,1,60,1,60,1,60,4,60,2393,8,60,11,60,12,60,2394,1,60,1, + 60,1,61,1,61,1,61,5,61,2402,8,61,10,61,12,61,2405,9,61,1,62,3,62, + 2408,8,62,1,62,3,62,2411,8,62,1,62,1,62,3,62,2415,8,62,1,62,1,62, + 1,62,3,62,2420,8,62,1,62,1,62,1,62,1,62,3,62,2426,8,62,1,62,1,62, + 1,62,1,62,3,62,2432,8,62,1,62,1,62,1,62,3,62,2437,8,62,1,62,1,62, + 1,62,3,62,2442,8,62,1,62,1,62,1,62,3,62,2447,8,62,1,62,1,62,1,62, + 3,62,2452,8,62,1,62,3,62,2455,8,62,1,63,1,63,1,63,3,63,2460,8,63, + 1,63,4,63,2463,8,63,11,63,12,63,2464,1,63,1,63,1,63,1,63,1,63,1, + 63,1,63,1,63,3,63,2475,8,63,1,64,1,64,3,64,2479,8,64,1,64,1,64,1, + 64,1,64,1,64,3,64,2486,8,64,1,64,1,64,1,64,3,64,2491,8,64,1,64,3, + 64,2494,8,64,1,64,1,64,1,64,3,64,2499,8,64,1,64,3,64,2502,8,64,1, + 64,1,64,3,64,2506,8,64,1,64,1,64,3,64,2510,8,64,1,65,1,65,1,65,1, + 65,5,65,2516,8,65,10,65,12,65,2519,9,65,1,66,1,66,1,66,1,66,1,66, + 1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2537, + 8,67,1,67,3,67,2540,8,67,1,67,3,67,2543,8,67,1,67,1,67,3,67,2547, + 8,67,1,67,1,67,1,68,1,68,1,68,1,68,5,68,2555,8,68,10,68,12,68,2558, + 9,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,5,69,2568,8,69,10,69, + 12,69,2571,9,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,5,70,2581, + 8,70,10,70,12,70,2584,9,70,3,70,2586,8,70,1,70,1,70,5,70,2590,8, + 70,10,70,12,70,2593,9,70,3,70,2595,8,70,1,71,1,71,3,71,2599,8,71, + 1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,2608,8,71,1,71,3,71,2611, + 8,71,1,71,3,71,2614,8,71,1,71,1,71,1,71,3,71,2619,8,71,1,71,1,71, + 3,71,2623,8,71,1,71,3,71,2626,8,71,1,71,1,71,3,71,2630,8,71,1,71, + 1,71,3,71,2634,8,71,1,71,3,71,2637,8,71,1,71,1,71,3,71,2641,8,71, + 1,71,3,71,2644,8,71,1,71,1,71,3,71,2648,8,71,1,71,3,71,2651,8,71, + 1,72,1,72,1,72,1,72,3,72,2657,8,72,1,72,3,72,2660,8,72,1,72,1,72, + 1,72,3,72,2665,8,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2673,8,72, + 1,72,1,72,1,72,1,72,3,72,2679,8,72,1,72,1,72,3,72,2683,8,72,1,73, + 1,73,3,73,2687,8,73,1,73,5,73,2690,8,73,10,73,12,73,2693,9,73,1, + 73,1,73,3,73,2697,8,73,1,73,1,73,1,73,1,73,1,73,3,73,2704,8,73,1, + 73,1,73,3,73,2708,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,5,73,2717, + 8,73,10,73,12,73,2720,9,73,1,73,1,73,1,73,1,73,1,73,3,73,2727,8, + 73,1,73,3,73,2730,8,73,1,73,1,73,5,73,2734,8,73,10,73,12,73,2737, + 9,73,1,73,1,73,1,73,3,73,2742,8,73,1,73,3,73,2745,8,73,1,73,1,73, + 5,73,2749,8,73,10,73,12,73,2752,9,73,1,73,1,73,1,73,3,73,2757,8, + 73,3,73,2759,8,73,1,73,1,73,1,73,3,73,2764,8,73,1,73,1,73,5,73,2768, + 8,73,10,73,12,73,2771,9,73,1,73,1,73,1,73,3,73,2776,8,73,3,73,2778, + 8,73,1,73,1,73,3,73,2782,8,73,1,73,3,73,2785,8,73,1,73,3,73,2788, + 8,73,1,73,1,73,5,73,2792,8,73,10,73,12,73,2795,9,73,1,73,1,73,1, + 73,3,73,2800,8,73,3,73,2802,8,73,1,73,1,73,1,73,3,73,2807,8,73,1, + 73,1,73,1,73,1,73,1,73,3,73,2814,8,73,1,73,1,73,1,73,1,73,1,73,1, + 73,1,73,3,73,2823,8,73,1,73,3,73,2826,8,73,1,73,1,73,3,73,2830,8, + 73,1,73,1,73,1,73,3,73,2835,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1, + 73,1,73,3,73,2845,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2854, + 8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2862,8,73,1,73,3,73,2865, + 8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2873,8,73,1,73,3,73,2876, + 8,73,1,73,1,73,1,73,1,73,1,73,3,73,2883,8,73,1,73,1,73,1,73,3,73, + 2888,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2896,8,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73, + 2912,8,73,1,73,1,73,1,73,3,73,2917,8,73,1,73,1,73,1,73,1,73,1,73, + 3,73,2924,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2943,8,73,1,73,1,73,1,73, + 1,73,3,73,2949,8,73,1,74,1,74,1,74,1,74,1,74,1,74,5,74,2957,8,74, + 10,74,12,74,2960,9,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1, + 74,3,74,2971,8,74,1,74,1,74,1,74,1,74,1,74,3,74,2978,8,74,1,74,1, + 74,1,74,1,74,1,74,3,74,2985,8,74,1,74,1,74,1,74,1,74,1,74,1,74,1, + 74,1,74,1,74,1,74,1,74,5,74,2998,8,74,10,74,12,74,3001,9,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,3013,8,74,1,74, + 1,74,1,74,1,74,3,74,3019,8,74,1,74,1,74,1,74,1,74,3,74,3025,8,74, + 1,74,1,74,1,74,1,74,3,74,3031,8,74,1,74,1,74,1,74,1,74,3,74,3037, + 8,74,1,74,1,74,1,74,1,74,3,74,3043,8,74,1,74,1,74,1,74,1,74,3,74, + 3049,8,74,1,75,1,75,1,75,3,75,3054,8,75,1,75,1,75,1,76,1,76,1,76, + 3,76,3061,8,76,1,76,1,76,1,77,1,77,1,77,3,77,3068,8,77,1,77,1,77, + 1,77,1,77,1,77,3,77,3075,8,77,1,77,1,77,1,77,3,77,3080,8,77,1,77, + 5,77,3083,8,77,10,77,12,77,3086,9,77,1,78,1,78,1,78,1,78,1,78,1, + 78,3,78,3094,8,78,1,78,1,78,1,79,1,79,1,79,3,79,3101,8,79,1,79,1, + 79,1,80,1,80,1,80,3,80,3108,8,80,1,80,1,80,1,81,1,81,1,81,3,81,3115, + 8,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,3,82,3124,8,82,1,82,1,82, + 1,83,1,83,3,83,3130,8,83,1,83,1,83,3,83,3134,8,83,1,83,1,83,3,83, + 3138,8,83,1,84,1,84,3,84,3142,8,84,1,84,1,84,1,84,1,84,3,84,3148, + 8,84,1,84,3,84,3151,8,84,1,85,1,85,1,85,3,85,3156,8,85,1,85,1,85, + 1,86,1,86,1,86,3,86,3163,8,86,1,86,1,86,1,86,5,86,3168,8,86,10,86, + 12,86,3171,9,86,1,86,3,86,3174,8,86,1,87,1,87,1,87,3,87,3179,8,87, + 1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,3,88,3189,8,88,1,88,1,88, + 1,88,1,88,5,88,3195,8,88,10,88,12,88,3198,9,88,1,88,1,88,1,88,3, + 88,3203,8,88,1,89,1,89,1,89,1,89,1,89,5,89,3210,8,89,10,89,12,89, + 3213,9,89,1,90,1,90,1,90,1,90,1,91,1,91,3,91,3221,8,91,1,91,1,91, + 1,92,1,92,1,92,1,92,1,92,3,92,3230,8,92,1,92,3,92,3233,8,92,1,93, + 1,93,3,93,3237,8,93,1,94,1,94,1,94,1,95,1,95,1,95,1,95,3,95,3246, + 8,95,1,96,1,96,3,96,3250,8,96,1,96,3,96,3253,8,96,1,96,3,96,3256, + 8,96,1,96,1,96,1,96,1,96,3,96,3262,8,96,1,96,3,96,3265,8,96,1,96, + 3,96,3268,8,96,1,96,1,96,3,96,3272,8,96,1,96,3,96,3275,8,96,1,96, + 3,96,3278,8,96,1,96,3,96,3281,8,96,1,96,1,96,1,96,1,96,1,96,1,96, + 1,96,5,96,3290,8,96,10,96,12,96,3293,9,96,3,96,3295,8,96,1,97,1, + 97,1,97,3,97,3300,8,97,1,98,1,98,1,98,1,98,3,98,3306,8,98,1,99,1, + 99,1,99,3,99,3311,8,99,1,99,4,99,3314,8,99,11,99,12,99,3315,1,100, + 3,100,3319,8,100,1,100,1,100,3,100,3323,8,100,1,101,1,101,1,101, + 3,101,3328,8,101,1,101,3,101,3331,8,101,1,101,1,101,1,101,3,101, + 3336,8,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,3,101, + 3346,8,101,1,101,1,101,1,101,3,101,3351,8,101,1,101,1,101,4,101, + 3355,8,101,11,101,12,101,3356,3,101,3359,8,101,1,101,1,101,4,101, + 3363,8,101,11,101,12,101,3364,3,101,3367,8,101,1,101,1,101,1,101, + 1,101,3,101,3373,8,101,1,101,1,101,1,101,1,101,5,101,3379,8,101, + 10,101,12,101,3382,9,101,1,101,1,101,3,101,3386,8,101,1,101,1,101, + 1,101,1,101,5,101,3392,8,101,10,101,12,101,3395,9,101,3,101,3397, + 8,101,1,102,1,102,1,102,3,102,3402,8,102,1,102,3,102,3405,8,102, + 1,102,1,102,1,102,3,102,3410,8,102,1,102,1,102,1,102,1,102,1,102, + 1,102,3,102,3418,8,102,1,102,1,102,1,102,1,102,3,102,3424,8,102, + 1,102,1,102,3,102,3428,8,102,3,102,3430,8,102,1,102,1,102,1,102, + 1,102,3,102,3436,8,102,1,102,1,102,1,102,1,102,5,102,3442,8,102, + 10,102,12,102,3445,9,102,1,102,1,102,3,102,3449,8,102,1,102,1,102, + 1,102,1,102,5,102,3455,8,102,10,102,12,102,3458,9,102,3,102,3460, + 8,102,1,103,1,103,1,103,3,103,3465,8,103,1,103,3,103,3468,8,103, + 1,103,1,103,3,103,3472,8,103,1,103,3,103,3475,8,103,1,103,3,103, + 3478,8,103,1,104,1,104,3,104,3482,8,104,1,104,3,104,3485,8,104,1, + 104,1,104,1,104,1,104,1,104,1,104,3,104,3493,8,104,1,104,1,104,1, + 104,1,104,3,104,3499,8,104,1,104,1,104,3,104,3503,8,104,1,105,1, + 105,5,105,3507,8,105,10,105,12,105,3510,9,105,1,105,1,105,3,105, + 3514,8,105,1,105,1,105,3,105,3518,8,105,3,105,3520,8,105,1,105,1, + 105,5,105,3524,8,105,10,105,12,105,3527,9,105,1,105,3,105,3530,8, + 105,1,105,3,105,3533,8,105,1,105,3,105,3536,8,105,1,105,3,105,3539, + 8,105,1,105,1,105,5,105,3543,8,105,10,105,12,105,3546,9,105,1,105, + 1,105,3,105,3550,8,105,1,105,3,105,3553,8,105,1,105,3,105,3556,8, + 105,1,105,3,105,3559,8,105,1,105,3,105,3562,8,105,3,105,3564,8,105, + 1,106,3,106,3567,8,106,1,106,1,106,3,106,3571,8,106,1,106,3,106, + 3574,8,106,1,106,3,106,3577,8,106,1,107,1,107,1,107,1,107,1,107, + 1,107,3,107,3585,8,107,1,107,1,107,1,107,1,107,3,107,3591,8,107, + 1,107,5,107,3594,8,107,10,107,12,107,3597,9,107,1,108,1,108,1,108, + 1,108,1,108,1,108,3,108,3605,8,108,1,108,5,108,3608,8,108,10,108, + 12,108,3611,9,108,1,109,1,109,1,109,1,109,3,109,3617,8,109,1,109, + 3,109,3620,8,109,1,109,3,109,3623,8,109,1,109,1,109,3,109,3627,8, + 109,1,110,1,110,3,110,3631,8,110,1,111,1,111,1,111,1,111,3,111,3637, + 8,111,1,111,1,111,3,111,3641,8,111,1,112,1,112,1,112,5,112,3646, + 8,112,10,112,12,112,3649,9,112,1,112,3,112,3652,8,112,1,112,3,112, + 3655,8,112,1,112,3,112,3658,8,112,1,113,1,113,1,113,3,113,3663,8, + 113,1,114,1,114,1,114,1,114,1,114,3,114,3670,8,114,1,115,1,115,1, + 115,1,115,1,115,1,115,5,115,3678,8,115,10,115,12,115,3681,9,115, + 1,116,1,116,1,116,1,116,5,116,3687,8,116,10,116,12,116,3690,9,116, + 1,117,1,117,1,117,1,117,1,118,1,118,3,118,3698,8,118,1,119,1,119, + 1,119,1,119,1,119,1,119,5,119,3706,8,119,10,119,12,119,3709,9,119, + 3,119,3711,8,119,1,119,1,119,3,119,3715,8,119,1,119,1,119,1,119, + 1,119,3,119,3721,8,119,1,120,1,120,3,120,3725,8,120,1,120,3,120, + 3728,8,120,1,120,3,120,3731,8,120,1,120,1,120,1,120,3,120,3736,8, + 120,1,120,3,120,3739,8,120,1,120,1,120,1,120,1,120,1,120,3,120,3746, + 8,120,1,120,1,120,3,120,3750,8,120,1,120,3,120,3753,8,120,1,120, + 1,120,3,120,3757,8,120,1,121,1,121,3,121,3761,8,121,1,121,3,121, + 3764,8,121,1,121,3,121,3767,8,121,1,121,1,121,1,121,3,121,3772,8, + 121,1,121,1,121,1,121,1,121,3,121,3778,8,121,5,121,3780,8,121,10, + 121,12,121,3783,9,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 3,121,3792,8,121,1,121,1,121,1,121,1,121,3,121,3798,8,121,5,121, + 3800,8,121,10,121,12,121,3803,9,121,1,121,1,121,1,121,3,121,3808, + 8,121,1,121,1,121,3,121,3812,8,121,1,122,1,122,1,122,1,122,3,122, + 3818,8,122,1,122,3,122,3821,8,122,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,3,123,3833,8,123,1,123,1,123,3,123, + 3837,8,123,1,123,1,123,3,123,3841,8,123,1,124,1,124,1,124,1,124, + 1,124,1,124,3,124,3849,8,124,1,124,1,124,3,124,3853,8,124,1,125, + 1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,5,126,3865, + 8,126,10,126,12,126,3868,9,126,1,127,1,127,3,127,3872,8,127,1,127, + 3,127,3875,8,127,1,127,1,127,3,127,3879,8,127,1,127,3,127,3882,8, + 127,1,127,1,127,1,127,1,127,5,127,3888,8,127,10,127,12,127,3891, + 9,127,1,127,1,127,3,127,3895,8,127,1,127,3,127,3898,8,127,1,127, + 3,127,3901,8,127,1,128,1,128,3,128,3905,8,128,1,128,3,128,3908,8, + 128,1,128,1,128,1,128,1,128,1,128,5,128,3915,8,128,10,128,12,128, + 3918,9,128,1,128,1,128,3,128,3922,8,128,1,129,1,129,1,129,1,129, + 1,129,5,129,3929,8,129,10,129,12,129,3932,9,129,1,130,1,130,3,130, + 3936,8,130,1,131,1,131,1,131,5,131,3941,8,131,10,131,12,131,3944, + 9,131,1,132,1,132,5,132,3948,8,132,10,132,12,132,3951,9,132,1,132, + 1,132,1,132,5,132,3956,8,132,10,132,12,132,3959,9,132,1,132,1,132, + 1,132,3,132,3964,8,132,1,133,1,133,1,133,1,133,1,133,1,133,3,133, + 3972,8,133,1,133,3,133,3975,8,133,1,133,3,133,3978,8,133,1,133,1, + 133,1,133,5,133,3983,8,133,10,133,12,133,3986,9,133,3,133,3988,8, + 133,1,133,3,133,3991,8,133,1,133,1,133,1,133,1,133,1,133,3,133,3998, + 8,133,1,133,3,133,4001,8,133,1,133,1,133,3,133,4005,8,133,1,133, + 1,133,1,133,1,133,3,133,4011,8,133,1,134,1,134,1,134,1,134,1,135, + 1,135,1,135,1,135,3,135,4021,8,135,1,135,1,135,3,135,4025,8,135, + 1,135,1,135,1,136,1,136,1,136,1,136,1,136,3,136,4034,8,136,1,137, + 3,137,4037,8,137,1,137,1,137,3,137,4041,8,137,1,137,1,137,5,137, + 4045,8,137,10,137,12,137,4048,9,137,1,137,1,137,1,137,5,137,4053, + 8,137,10,137,12,137,4056,9,137,1,137,1,137,3,137,4060,8,137,1,137, + 1,137,3,137,4064,8,137,1,137,1,137,5,137,4068,8,137,10,137,12,137, + 4071,9,137,1,137,1,137,1,137,3,137,4076,8,137,1,137,3,137,4079,8, + 137,3,137,4081,8,137,1,137,1,137,3,137,4085,8,137,1,138,1,138,1, + 138,1,138,1,138,1,138,1,138,3,138,4094,8,138,1,139,1,139,1,139,1, + 139,1,139,1,139,1,139,1,139,3,139,4104,8,139,1,140,1,140,5,140,4108, + 8,140,10,140,12,140,4111,9,140,1,140,1,140,3,140,4115,8,140,1,140, + 1,140,3,140,4119,8,140,1,140,3,140,4122,8,140,1,140,3,140,4125,8, + 140,1,140,3,140,4128,8,140,1,140,3,140,4131,8,140,1,140,3,140,4134, + 8,140,1,140,3,140,4137,8,140,1,141,1,141,3,141,4141,8,141,1,141, + 1,141,3,141,4145,8,141,1,142,1,142,1,142,1,142,1,142,1,142,3,142, + 4153,8,142,1,142,1,142,3,142,4157,8,142,1,142,3,142,4160,8,142,3, + 142,4162,8,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1, + 143,1,143,1,143,3,143,4175,8,143,1,143,3,143,4178,8,143,1,144,1, + 144,1,144,5,144,4183,8,144,10,144,12,144,4186,9,144,1,145,1,145, + 1,145,1,145,1,145,1,145,1,145,3,145,4195,8,145,1,145,3,145,4198, + 8,145,1,145,1,145,1,145,3,145,4203,8,145,3,145,4205,8,145,1,145, + 1,145,3,145,4209,8,145,1,145,1,145,1,145,1,145,1,145,1,145,3,145, + 4217,8,145,1,146,1,146,1,146,1,146,3,146,4223,8,146,1,146,1,146, + 1,146,1,147,1,147,1,147,1,147,3,147,4232,8,147,1,147,1,147,1,147, + 1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,4245,8,148, + 1,149,1,149,3,149,4249,8,149,1,149,1,149,5,149,4253,8,149,10,149, + 12,149,4256,9,149,1,150,1,150,3,150,4260,8,150,1,150,1,150,3,150, + 4264,8,150,1,150,3,150,4267,8,150,1,150,1,150,3,150,4271,8,150,1, + 150,3,150,4274,8,150,1,150,1,150,1,150,1,150,1,150,1,150,3,150,4282, + 8,150,1,150,3,150,4285,8,150,3,150,4287,8,150,1,151,1,151,1,151, + 1,151,5,151,4293,8,151,10,151,12,151,4296,9,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,3,151,4307,8,151,1,151,1,151, + 4,151,4311,8,151,11,151,12,151,4312,3,151,4315,8,151,1,151,1,151, + 4,151,4319,8,151,11,151,12,151,4320,3,151,4323,8,151,3,151,4325, + 8,151,1,152,1,152,1,152,1,152,3,152,4331,8,152,1,152,1,152,1,152, + 1,152,1,152,1,152,3,152,4339,8,152,1,153,1,153,1,153,1,153,1,153, + 1,153,3,153,4347,8,153,1,154,1,154,3,154,4351,8,154,1,154,1,154, + 3,154,4355,8,154,1,155,1,155,1,155,1,155,1,155,5,155,4362,8,155, + 10,155,12,155,4365,9,155,1,155,1,155,3,155,4369,8,155,1,156,1,156, + 1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157, + 1,157,1,157,1,157,5,157,4387,8,157,10,157,12,157,4390,9,157,1,158, + 1,158,3,158,4394,8,158,1,159,1,159,1,159,1,159,3,159,4400,8,159, + 1,159,1,159,1,159,1,159,1,159,3,159,4407,8,159,1,160,1,160,1,160, + 3,160,4412,8,160,1,161,1,161,1,161,1,161,1,161,5,161,4419,8,161, + 10,161,12,161,4422,9,161,3,161,4424,8,161,1,162,1,162,3,162,4428, + 8,162,1,163,1,163,3,163,4432,8,163,1,163,1,163,3,163,4436,8,163, + 1,163,3,163,4439,8,163,1,163,3,163,4442,8,163,1,163,3,163,4445,8, + 163,1,164,1,164,3,164,4449,8,164,1,164,1,164,3,164,4453,8,164,1, + 164,3,164,4456,8,164,1,164,3,164,4459,8,164,1,164,3,164,4462,8,164, + 1,165,1,165,1,165,1,166,1,166,3,166,4469,8,166,1,166,1,166,3,166, + 4473,8,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168, + 1,168,1,168,5,168,4486,8,168,10,168,12,168,4489,9,168,1,169,1,169, + 1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,3,171,4501,8,171, + 1,171,1,171,1,171,1,171,5,171,4507,8,171,10,171,12,171,4510,9,171, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172,4519,8,172,1,173, + 1,173,3,173,4523,8,173,1,173,3,173,4526,8,173,1,173,1,173,1,174, + 1,174,3,174,4532,8,174,1,174,3,174,4535,8,174,1,174,3,174,4538,8, + 174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,3,175,4547,8,175,1, + 176,1,176,1,176,1,176,1,176,1,176,1,176,3,176,4556,8,176,1,177,1, + 177,1,177,1,177,1,177,1,177,5,177,4564,8,177,10,177,12,177,4567, + 9,177,1,177,3,177,4570,8,177,1,178,1,178,1,178,1,178,1,178,1,178, + 5,178,4578,8,178,10,178,12,178,4581,9,178,1,178,3,178,4584,8,178, + 1,179,1,179,1,179,1,179,1,179,1,179,1,179,5,179,4593,8,179,10,179, + 12,179,4596,9,179,1,179,3,179,4599,8,179,1,180,1,180,1,180,1,180, + 1,180,1,180,1,180,3,180,4608,8,180,1,181,1,181,1,181,1,181,1,181, + 5,181,4615,8,181,10,181,12,181,4618,9,181,3,181,4620,8,181,1,181, + 1,181,3,181,4624,8,181,1,181,5,181,4627,8,181,10,181,12,181,4630, + 9,181,1,181,3,181,4633,8,181,1,182,1,182,1,182,1,182,1,182,5,182, + 4640,8,182,10,182,12,182,4643,9,182,3,182,4645,8,182,1,182,3,182, + 4648,8,182,1,183,1,183,1,183,1,183,1,183,3,183,4655,8,183,1,183, + 1,183,1,183,1,183,3,183,4661,8,183,1,183,1,183,1,183,1,183,3,183, + 4667,8,183,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,185,5,185,4691,8,185,10,185,12,185,4694,9,185,3,185,4696, + 8,185,1,185,3,185,4699,8,185,1,186,1,186,1,187,1,187,1,188,1,188, + 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, + 3,189,4718,8,189,3,189,4720,8,189,1,190,1,190,1,190,1,190,1,190, + 1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190, + 1,190,1,190,1,190,5,190,4741,8,190,10,190,12,190,4744,9,190,3,190, + 4746,8,190,1,190,3,190,4749,8,190,1,191,1,191,1,192,1,192,1,193, + 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194, + 1,194,3,194,4768,8,194,3,194,4770,8,194,1,195,1,195,1,195,1,195, + 1,196,1,196,1,196,1,196,1,196,1,196,5,196,4782,8,196,10,196,12,196, + 4785,9,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,5,196, + 4795,8,196,10,196,12,196,4798,9,196,1,196,1,196,1,196,1,196,1,196, 1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196, 1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196, - 1,196,3,196,4810,8,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197, - 1,197,1,197,1,197,1,197,1,197,3,197,4824,8,197,1,198,1,198,1,198, - 5,198,4829,8,198,10,198,12,198,4832,9,198,1,198,3,198,4835,8,198, - 1,199,1,199,1,199,1,199,3,199,4841,8,199,1,200,1,200,1,200,1,200, - 1,200,1,200,3,200,4849,8,200,3,200,4851,8,200,1,201,1,201,1,201, - 1,201,1,202,1,202,1,202,1,202,1,202,3,202,4862,8,202,1,203,1,203, - 1,203,1,203,1,204,1,204,1,204,1,204,3,204,4872,8,204,1,205,1,205, - 1,205,1,205,1,205,3,205,4879,8,205,1,206,1,206,1,206,1,206,3,206, - 4885,8,206,1,207,1,207,1,207,1,207,1,208,1,208,3,208,4893,8,208, - 1,209,1,209,1,209,3,209,4898,8,209,1,209,1,209,1,209,1,209,5,209, - 4904,8,209,10,209,12,209,4907,9,209,1,209,1,209,1,209,5,209,4912, - 8,209,10,209,12,209,4915,9,209,1,209,1,209,1,209,5,209,4920,8,209, - 10,209,12,209,4923,9,209,1,209,1,209,1,209,5,209,4928,8,209,10,209, - 12,209,4931,9,209,1,209,5,209,4934,8,209,10,209,12,209,4937,9,209, - 1,209,1,209,3,209,4941,8,209,1,210,1,210,1,210,3,210,4946,8,210, - 1,210,4,210,4949,8,210,11,210,12,210,4950,1,210,1,210,4,210,4955, - 8,210,11,210,12,210,4956,3,210,4959,8,210,1,210,1,210,1,210,1,211, - 1,211,1,211,1,211,4,211,4968,8,211,11,211,12,211,4969,1,211,5,211, - 4973,8,211,10,211,12,211,4976,9,211,1,211,1,211,4,211,4980,8,211, - 11,211,12,211,4981,3,211,4984,8,211,1,211,1,211,1,211,1,212,1,212, - 1,212,1,213,1,213,1,213,1,214,1,214,1,214,3,214,4998,8,214,1,214, - 1,214,4,214,5002,8,214,11,214,12,214,5003,1,214,1,214,1,214,3,214, - 5009,8,214,1,215,1,215,1,215,3,215,5014,8,215,1,215,1,215,4,215, - 5018,8,215,11,215,12,215,5019,1,215,1,215,1,215,1,215,1,215,3,215, - 5027,8,215,1,216,1,216,1,216,1,217,1,217,1,217,3,217,5035,8,217, - 1,217,1,217,1,217,1,217,4,217,5041,8,217,11,217,12,217,5042,1,217, - 1,217,1,217,3,217,5048,8,217,1,218,1,218,1,218,1,218,3,218,5054, - 8,218,1,218,3,218,5057,8,218,1,218,1,218,1,218,1,218,1,218,1,218, - 3,218,5065,8,218,1,219,1,219,1,219,1,219,1,219,3,219,5072,8,219, - 1,220,1,220,1,220,1,220,1,220,1,220,1,220,3,220,5081,8,220,1,220, - 3,220,5084,8,220,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222, - 1,222,1,222,1,222,1,222,1,222,5,222,5099,8,222,10,222,12,222,5102, - 9,222,1,222,1,222,1,223,1,223,1,223,3,223,5109,8,223,1,223,1,223, - 1,223,1,223,1,223,1,223,3,223,5117,8,223,1,224,1,224,3,224,5121, - 8,224,1,224,1,224,1,225,1,225,1,225,3,225,5128,8,225,1,225,1,225, - 4,225,5132,8,225,11,225,12,225,5133,1,226,1,226,1,226,1,226,4,226, - 5140,8,226,11,226,12,226,5141,1,227,1,227,1,227,3,227,5147,8,227, - 1,227,1,227,1,227,5,227,5152,8,227,10,227,12,227,5155,9,227,1,227, - 1,227,1,227,5,227,5160,8,227,10,227,12,227,5163,9,227,1,227,1,227, - 1,227,1,227,3,227,5169,8,227,1,227,5,227,5172,8,227,10,227,12,227, - 5175,9,227,3,227,5177,8,227,3,227,5179,8,227,1,227,1,227,4,227,5183, - 8,227,11,227,12,227,5184,3,227,5187,8,227,1,227,1,227,5,227,5191, - 8,227,10,227,12,227,5194,9,227,1,227,1,227,3,227,5198,8,227,1,227, - 1,227,1,227,1,227,1,227,3,227,5205,8,227,1,228,1,228,1,228,3,228, - 5210,8,228,1,228,1,228,3,228,5214,8,228,1,228,1,228,1,228,3,228, - 5219,8,228,5,228,5221,8,228,10,228,12,228,5224,9,228,1,228,1,228, - 1,228,3,228,5229,8,228,1,228,1,228,1,228,1,228,3,228,5235,8,228, - 1,228,5,228,5238,8,228,10,228,12,228,5241,9,228,3,228,5243,8,228, - 3,228,5245,8,228,1,228,1,228,4,228,5249,8,228,11,228,12,228,5250, - 3,228,5253,8,228,1,228,1,228,5,228,5257,8,228,10,228,12,228,5260, - 9,228,1,228,1,228,3,228,5264,8,228,1,229,1,229,1,229,3,229,5269, - 8,229,1,229,1,229,1,229,5,229,5274,8,229,10,229,12,229,5277,9,229, - 1,230,1,230,1,230,1,230,5,230,5283,8,230,10,230,12,230,5286,9,230, - 1,230,1,230,3,230,5290,8,230,1,230,1,230,1,230,1,230,1,230,5,230, - 5297,8,230,10,230,12,230,5300,9,230,1,230,3,230,5303,8,230,1,230, - 1,230,1,230,1,230,3,230,5309,8,230,1,230,5,230,5312,8,230,10,230, - 12,230,5315,9,230,3,230,5317,8,230,3,230,5319,8,230,1,230,1,230, - 1,230,1,230,5,230,5325,8,230,10,230,12,230,5328,9,230,3,230,5330, - 8,230,1,230,1,230,1,230,1,230,1,230,3,230,5337,8,230,3,230,5339, - 8,230,1,230,1,230,1,230,3,230,5344,8,230,1,230,1,230,1,230,5,230, - 5349,8,230,10,230,12,230,5352,9,230,1,230,1,230,1,230,1,230,5,230, - 5358,8,230,10,230,12,230,5361,9,230,1,230,1,230,1,230,3,230,5366, - 8,230,3,230,5368,8,230,1,231,1,231,1,231,1,231,1,231,3,231,5375, - 8,231,1,231,3,231,5378,8,231,1,232,1,232,1,232,1,232,1,232,1,232, - 1,232,1,232,5,232,5388,8,232,10,232,12,232,5391,9,232,1,232,1,232, - 1,232,3,232,5396,8,232,1,233,1,233,1,233,1,233,1,233,1,233,3,233, - 5404,8,233,1,233,3,233,5407,8,233,1,233,1,233,3,233,5411,8,233,1, - 233,3,233,5414,8,233,1,233,1,233,3,233,5418,8,233,3,233,5420,8,233, - 1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234,5431, - 8,234,1,234,3,234,5434,8,234,1,234,1,234,3,234,5438,8,234,1,234, - 3,234,5441,8,234,1,234,3,234,5444,8,234,1,235,1,235,1,235,1,235, - 1,235,3,235,5451,8,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236, - 1,236,5,236,5461,8,236,10,236,12,236,5464,9,236,3,236,5466,8,236, - 1,237,1,237,1,237,1,237,1,237,3,237,5473,8,237,1,237,1,237,5,237, - 5477,8,237,10,237,12,237,5480,9,237,1,238,1,238,1,238,1,238,1,238, - 5,238,5487,8,238,10,238,12,238,5490,9,238,1,239,1,239,3,239,5494, - 8,239,1,239,1,239,1,239,5,239,5499,8,239,10,239,12,239,5502,9,239, - 1,239,1,239,3,239,5506,8,239,1,239,1,239,1,239,1,239,3,239,5512, - 8,239,1,239,1,239,3,239,5516,8,239,1,239,1,239,3,239,5520,8,239, - 1,239,1,239,1,239,1,239,1,239,1,239,3,239,5528,8,239,1,239,1,239, - 3,239,5532,8,239,1,239,1,239,3,239,5536,8,239,1,239,1,239,1,239, - 1,239,3,239,5542,8,239,3,239,5544,8,239,1,240,1,240,1,240,1,240, - 1,241,1,241,1,242,1,242,1,242,1,242,3,242,5556,8,242,1,242,1,242, - 1,242,3,242,5561,8,242,1,242,1,242,1,242,1,242,3,242,5567,8,242, - 1,242,1,242,1,242,1,242,3,242,5573,8,242,1,242,1,242,3,242,5577, - 8,242,1,242,1,242,1,242,3,242,5582,8,242,3,242,5584,8,242,1,243, - 1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244, - 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,3,244, - 5608,8,244,4,244,5610,8,244,11,244,12,244,5611,1,244,3,244,5615, - 8,244,1,245,1,245,1,245,1,245,1,245,1,245,1,245,3,245,5624,8,245, - 1,245,1,245,3,245,5628,8,245,1,245,1,245,1,245,1,245,1,245,1,245, - 1,245,3,245,5637,8,245,1,245,1,245,3,245,5641,8,245,1,245,1,245, - 3,245,5645,8,245,1,245,1,245,1,245,1,245,3,245,5651,8,245,3,245, - 5653,8,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5662, - 8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5672, - 8,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, + 1,196,1,196,1,196,1,196,1,196,5,196,4832,8,196,10,196,12,196,4835, + 9,196,1,196,1,196,3,196,4839,8,196,1,197,1,197,1,197,1,197,1,197, + 1,197,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,3,199,4874,8,199,1,200,1,200, + 1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,3,200, + 4888,8,200,1,201,1,201,1,201,5,201,4893,8,201,10,201,12,201,4896, + 9,201,1,201,3,201,4899,8,201,1,202,1,202,1,202,1,202,3,202,4905, + 8,202,1,203,1,203,1,203,1,203,1,203,1,203,3,203,4913,8,203,3,203, + 4915,8,203,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205, + 3,205,4926,8,205,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207, + 3,207,4936,8,207,1,208,1,208,1,208,1,208,1,208,3,208,4943,8,208, + 1,209,1,209,1,209,1,209,3,209,4949,8,209,1,210,1,210,1,210,1,210, + 1,211,1,211,3,211,4957,8,211,1,212,1,212,1,212,3,212,4962,8,212, + 1,212,1,212,1,212,1,212,5,212,4968,8,212,10,212,12,212,4971,9,212, + 1,212,1,212,1,212,5,212,4976,8,212,10,212,12,212,4979,9,212,1,212, + 1,212,1,212,5,212,4984,8,212,10,212,12,212,4987,9,212,1,212,1,212, + 1,212,5,212,4992,8,212,10,212,12,212,4995,9,212,1,212,5,212,4998, + 8,212,10,212,12,212,5001,9,212,1,212,1,212,3,212,5005,8,212,1,213, + 1,213,1,213,3,213,5010,8,213,1,213,4,213,5013,8,213,11,213,12,213, + 5014,1,213,1,213,4,213,5019,8,213,11,213,12,213,5020,3,213,5023, + 8,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,4,214,5032,8,214, + 11,214,12,214,5033,1,214,5,214,5037,8,214,10,214,12,214,5040,9,214, + 1,214,1,214,4,214,5044,8,214,11,214,12,214,5045,3,214,5048,8,214, + 1,214,1,214,1,214,1,215,1,215,1,215,1,216,1,216,1,216,1,217,1,217, + 1,217,3,217,5062,8,217,1,217,1,217,4,217,5066,8,217,11,217,12,217, + 5067,1,217,1,217,1,217,3,217,5073,8,217,1,218,1,218,1,218,3,218, + 5078,8,218,1,218,1,218,4,218,5082,8,218,11,218,12,218,5083,1,218, + 1,218,1,218,1,218,1,218,3,218,5091,8,218,1,219,1,219,1,219,1,220, + 1,220,1,220,3,220,5099,8,220,1,220,1,220,1,220,1,220,4,220,5105, + 8,220,11,220,12,220,5106,1,220,1,220,1,220,3,220,5112,8,220,1,221, + 1,221,1,221,1,221,3,221,5118,8,221,1,221,3,221,5121,8,221,1,221, + 1,221,1,221,1,221,1,221,1,221,3,221,5129,8,221,1,222,1,222,1,222, + 1,222,1,222,3,222,5136,8,222,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,3,223,5145,8,223,1,223,3,223,5148,8,223,1,224,1,224,1,224, + 1,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,5,225, + 5163,8,225,10,225,12,225,5166,9,225,1,225,1,225,1,226,1,226,1,226, + 3,226,5173,8,226,1,226,1,226,1,226,1,226,1,226,1,226,3,226,5181, + 8,226,1,227,1,227,3,227,5185,8,227,1,227,1,227,1,228,1,228,1,228, + 3,228,5192,8,228,1,228,1,228,4,228,5196,8,228,11,228,12,228,5197, + 1,229,1,229,1,229,1,229,4,229,5204,8,229,11,229,12,229,5205,1,230, + 1,230,1,230,3,230,5211,8,230,1,230,1,230,1,230,5,230,5216,8,230, + 10,230,12,230,5219,9,230,1,230,1,230,1,230,5,230,5224,8,230,10,230, + 12,230,5227,9,230,1,230,1,230,1,230,1,230,3,230,5233,8,230,1,230, + 5,230,5236,8,230,10,230,12,230,5239,9,230,3,230,5241,8,230,3,230, + 5243,8,230,1,230,1,230,4,230,5247,8,230,11,230,12,230,5248,3,230, + 5251,8,230,1,230,1,230,5,230,5255,8,230,10,230,12,230,5258,9,230, + 1,230,1,230,3,230,5262,8,230,1,230,1,230,1,230,1,230,1,230,3,230, + 5269,8,230,1,231,1,231,1,231,3,231,5274,8,231,1,231,1,231,3,231, + 5278,8,231,1,231,1,231,1,231,3,231,5283,8,231,5,231,5285,8,231,10, + 231,12,231,5288,9,231,1,231,1,231,1,231,3,231,5293,8,231,1,231,1, + 231,1,231,1,231,3,231,5299,8,231,1,231,5,231,5302,8,231,10,231,12, + 231,5305,9,231,3,231,5307,8,231,3,231,5309,8,231,1,231,1,231,4,231, + 5313,8,231,11,231,12,231,5314,3,231,5317,8,231,1,231,1,231,5,231, + 5321,8,231,10,231,12,231,5324,9,231,1,231,1,231,3,231,5328,8,231, + 1,232,1,232,1,232,3,232,5333,8,232,1,232,1,232,1,232,5,232,5338, + 8,232,10,232,12,232,5341,9,232,1,233,1,233,1,233,1,233,5,233,5347, + 8,233,10,233,12,233,5350,9,233,1,233,1,233,3,233,5354,8,233,1,233, + 1,233,1,233,1,233,1,233,5,233,5361,8,233,10,233,12,233,5364,9,233, + 1,233,3,233,5367,8,233,1,233,1,233,1,233,1,233,3,233,5373,8,233, + 1,233,5,233,5376,8,233,10,233,12,233,5379,9,233,3,233,5381,8,233, + 3,233,5383,8,233,1,233,1,233,1,233,1,233,5,233,5389,8,233,10,233, + 12,233,5392,9,233,3,233,5394,8,233,1,233,1,233,1,233,1,233,1,233, + 3,233,5401,8,233,3,233,5403,8,233,1,233,1,233,1,233,3,233,5408,8, + 233,1,233,1,233,1,233,5,233,5413,8,233,10,233,12,233,5416,9,233, + 1,233,1,233,1,233,1,233,5,233,5422,8,233,10,233,12,233,5425,9,233, + 1,233,1,233,1,233,3,233,5430,8,233,3,233,5432,8,233,1,234,1,234, + 1,234,1,234,1,234,3,234,5439,8,234,1,234,3,234,5442,8,234,1,235, + 1,235,1,235,1,235,1,235,1,235,1,235,1,235,5,235,5452,8,235,10,235, + 12,235,5455,9,235,1,235,1,235,1,235,3,235,5460,8,235,1,236,1,236, + 1,236,1,236,1,236,1,236,3,236,5468,8,236,1,236,3,236,5471,8,236, + 1,236,1,236,3,236,5475,8,236,1,236,3,236,5478,8,236,1,236,1,236, + 3,236,5482,8,236,3,236,5484,8,236,1,237,1,237,1,237,1,237,1,237, + 1,237,1,237,1,237,1,237,3,237,5495,8,237,1,237,3,237,5498,8,237, + 1,237,1,237,3,237,5502,8,237,1,237,3,237,5505,8,237,1,237,3,237, + 5508,8,237,1,238,1,238,1,238,1,238,1,238,3,238,5515,8,238,1,239, + 1,239,1,239,1,239,1,239,1,239,1,239,1,239,5,239,5525,8,239,10,239, + 12,239,5528,9,239,3,239,5530,8,239,1,240,1,240,1,240,1,240,1,240, + 3,240,5537,8,240,1,240,1,240,5,240,5541,8,240,10,240,12,240,5544, + 9,240,1,241,1,241,1,241,1,241,1,241,5,241,5551,8,241,10,241,12,241, + 5554,9,241,1,242,1,242,3,242,5558,8,242,1,242,1,242,1,242,5,242, + 5563,8,242,10,242,12,242,5566,9,242,1,242,1,242,3,242,5570,8,242, + 1,242,1,242,1,242,1,242,3,242,5576,8,242,1,242,1,242,3,242,5580, + 8,242,1,242,1,242,3,242,5584,8,242,1,242,1,242,1,242,1,242,1,242, + 1,242,3,242,5592,8,242,1,242,1,242,3,242,5596,8,242,1,242,1,242, + 3,242,5600,8,242,1,242,1,242,1,242,1,242,3,242,5606,8,242,3,242, + 5608,8,242,1,243,1,243,1,243,1,243,1,244,1,244,1,245,1,245,1,245, + 1,245,3,245,5620,8,245,1,245,1,245,1,245,3,245,5625,8,245,1,245, + 1,245,1,245,1,245,3,245,5631,8,245,1,245,1,245,1,245,1,245,3,245, + 5637,8,245,1,245,1,245,3,245,5641,8,245,1,245,1,245,1,245,3,245, + 5646,8,245,3,245,5648,8,245,1,246,1,246,1,246,1,247,1,247,1,247, 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,3,247,5699,8,247,1,248,1,248,3,248,5703, - 8,248,1,248,1,248,1,248,3,248,5708,8,248,1,249,1,249,1,249,1,249, - 1,249,3,249,5715,8,249,1,249,3,249,5718,8,249,1,249,1,249,1,249, - 1,249,3,249,5724,8,249,1,250,1,250,1,250,1,250,1,250,1,250,1,250, - 1,250,3,250,5734,8,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251, - 1,251,3,251,5744,8,251,1,252,1,252,1,252,1,252,1,252,1,252,1,252, - 1,252,3,252,5754,8,252,1,252,1,252,1,252,1,252,3,252,5760,8,252, - 1,252,1,252,1,252,1,252,1,252,1,252,1,252,3,252,5769,8,252,1,252, - 1,252,1,252,1,252,3,252,5775,8,252,1,252,1,252,1,252,1,252,1,252, - 3,252,5782,8,252,3,252,5784,8,252,1,253,1,253,1,253,1,254,1,254, - 1,254,3,254,5792,8,254,1,254,1,254,1,254,1,254,3,254,5798,8,254, - 1,254,1,254,3,254,5802,8,254,1,255,1,255,1,255,1,255,1,255,1,255, - 1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,5819, - 8,255,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,3,257,5829, - 8,257,1,258,1,258,3,258,5833,8,258,1,258,1,258,3,258,5837,8,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258,5847,8,258, - 1,258,1,258,1,258,3,258,5852,8,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, + 1,247,1,247,1,247,1,247,1,247,3,247,5672,8,247,4,247,5674,8,247, + 11,247,12,247,5675,1,247,3,247,5679,8,247,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,3,248,5688,8,248,1,248,1,248,3,248,5692,8,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,3,248,5701,8,248,1,248, + 1,248,3,248,5705,8,248,1,248,1,248,3,248,5709,8,248,1,248,1,248, + 1,248,1,248,3,248,5715,8,248,3,248,5717,8,248,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,3,249,5726,8,249,1,249,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,3,249,5736,8,249,1,250,1,250,1,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250, + 5763,8,250,1,251,1,251,3,251,5767,8,251,1,251,1,251,1,251,3,251, + 5772,8,251,1,252,1,252,1,252,1,252,1,252,3,252,5779,8,252,1,252, + 3,252,5782,8,252,1,252,1,252,1,252,1,252,3,252,5788,8,252,1,253, + 1,253,1,253,1,253,1,253,1,253,1,253,1,253,3,253,5798,8,253,1,254, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,3,254,5808,8,254,1,255, + 1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,5818,8,255,1,255, + 1,255,1,255,1,255,3,255,5824,8,255,1,255,1,255,1,255,1,255,1,255, + 1,255,1,255,3,255,5833,8,255,1,255,1,255,1,255,1,255,3,255,5839, + 8,255,1,255,1,255,1,255,1,255,1,255,3,255,5846,8,255,3,255,5848, + 8,255,1,256,1,256,1,256,1,257,1,257,1,257,3,257,5856,8,257,1,257, + 1,257,1,257,1,257,3,257,5862,8,257,1,257,1,257,3,257,5866,8,257, 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258, - 5924,8,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259, - 1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,5942,8,259,1,260, - 1,260,1,260,1,260,1,261,1,261,3,261,5950,8,261,1,261,1,261,1,261, - 1,261,3,261,5956,8,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, - 1,261,1,261,1,261,3,261,5968,8,261,1,261,1,261,3,261,5972,8,261, - 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,3,261,5983, - 8,261,1,261,1,261,3,261,5987,8,261,1,261,1,261,1,261,1,261,1,261, - 1,261,1,261,3,261,5996,8,261,1,262,1,262,1,262,1,262,5,262,6002, - 8,262,10,262,12,262,6005,9,262,1,263,1,263,1,263,1,263,3,263,6011, - 8,263,1,264,1,264,3,264,6015,8,264,1,264,1,264,1,264,1,265,1,265, - 3,265,6022,8,265,1,265,1,265,1,265,3,265,6027,8,265,1,265,3,265, - 6030,8,265,1,265,3,265,6033,8,265,1,266,1,266,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,3,267,6044,8,267,1,268,1,268,3,268,6048, - 8,268,1,268,1,268,3,268,6052,8,268,1,268,1,268,1,268,1,268,1,268, - 1,268,1,269,1,269,1,269,1,269,1,269,5,269,6065,8,269,10,269,12,269, - 6068,9,269,1,269,1,269,1,269,1,269,5,269,6074,8,269,10,269,12,269, - 6077,9,269,3,269,6079,8,269,1,270,1,270,1,270,1,270,1,270,1,271, - 1,271,1,271,1,271,1,271,5,271,6091,8,271,10,271,12,271,6094,9,271, - 1,272,1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,274, - 1,274,1,274,1,274,1,274,3,274,6111,8,274,1,274,1,274,1,274,1,274, - 1,274,1,274,1,274,1,274,1,274,1,274,1,274,3,274,6124,8,274,1,274, - 3,274,6127,8,274,1,274,1,274,3,274,6131,8,274,1,274,3,274,6134,8, - 274,3,274,6136,8,274,1,275,1,275,1,275,1,275,1,275,3,275,6143,8, - 275,1,275,1,275,1,275,1,275,1,275,3,275,6150,8,275,5,275,6152,8, - 275,10,275,12,275,6155,9,275,1,275,1,275,1,275,1,275,3,275,6161, - 8,275,1,275,1,275,1,275,1,275,1,275,3,275,6168,8,275,1,275,3,275, - 6171,8,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, - 1,275,1,275,1,275,5,275,6185,8,275,10,275,12,275,6188,9,275,3,275, - 6190,8,275,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276, - 6200,8,276,1,276,1,276,3,276,6204,8,276,1,276,1,276,1,276,1,276, - 3,276,6210,8,276,1,276,3,276,6213,8,276,1,276,3,276,6216,8,276,1, - 276,1,276,1,276,3,276,6221,8,276,1,276,1,276,3,276,6225,8,276,1, - 276,3,276,6228,8,276,1,276,1,276,1,276,1,276,1,276,3,276,6235,8, - 276,1,276,3,276,6238,8,276,1,276,1,276,1,276,1,276,3,276,6244,8, - 276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,3,276,6280,8,276,1,276,3,276,6283,8,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,6295,8,276, - 1,276,3,276,6298,8,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,6314,8,276,3,276, - 6316,8,276,1,276,1,276,3,276,6320,8,276,1,276,1,276,1,276,1,276, - 1,276,3,276,6327,8,276,1,276,1,276,3,276,6331,8,276,1,276,1,276, - 1,276,1,276,1,276,3,276,6338,8,276,1,276,3,276,6341,8,276,1,276, - 1,276,1,276,1,276,1,276,5,276,6348,8,276,10,276,12,276,6351,9,276, - 3,276,6353,8,276,1,276,1,276,1,276,3,276,6358,8,276,1,276,1,276, - 1,276,1,276,3,276,6364,8,276,3,276,6366,8,276,1,276,1,276,1,276, - 1,276,3,276,6372,8,276,1,276,1,276,3,276,6376,8,276,1,277,1,277, - 1,277,1,277,3,277,6382,8,277,1,277,3,277,6385,8,277,1,277,3,277, - 6388,8,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, - 1,278,1,278,3,278,6401,8,278,1,278,3,278,6404,8,278,1,279,1,279, - 1,279,1,279,3,279,6410,8,279,1,280,3,280,6413,8,280,1,280,1,280, - 1,280,1,280,1,280,1,280,3,280,6421,8,280,1,280,1,280,1,280,1,280, - 1,280,1,280,3,280,6429,8,280,1,281,1,281,1,281,1,281,3,281,6435, - 8,281,1,281,3,281,6438,8,281,1,281,1,281,3,281,6442,8,281,1,282, - 1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282, - 3,282,6456,8,282,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284, - 5,284,6466,8,284,10,284,12,284,6469,9,284,1,284,1,284,1,284,1,284, - 1,284,3,284,6476,8,284,1,284,1,284,3,284,6480,8,284,1,284,1,284, - 1,284,1,285,1,285,3,285,6487,8,285,1,285,1,285,1,285,5,285,6492, - 8,285,10,285,12,285,6495,9,285,1,286,1,286,3,286,6499,8,286,1,286, - 1,286,1,287,1,287,1,287,1,287,1,287,1,287,1,287,5,287,6510,8,287, - 10,287,12,287,6513,9,287,1,288,1,288,1,288,1,288,5,288,6519,8,288, - 10,288,12,288,6522,9,288,1,289,1,289,1,289,1,289,1,289,3,289,6529, - 8,289,1,290,1,290,1,290,3,290,6534,8,290,1,290,3,290,6537,8,290, - 1,291,1,291,1,291,3,291,6542,8,291,1,291,3,291,6545,8,291,1,292, - 1,292,1,293,1,293,1,294,1,294,1,294,1,294,1,294,1,294,3,294,6557, - 8,294,1,295,1,295,1,295,3,295,6562,8,295,1,295,1,295,1,295,1,295, - 1,295,1,295,1,295,1,295,1,295,1,295,1,295,3,295,6575,8,295,3,295, - 6577,8,295,1,295,1,295,1,295,3,295,6582,8,295,1,295,1,295,3,295, - 6586,8,295,1,295,3,295,6589,8,295,3,295,6591,8,295,1,296,1,296,1, - 296,1,296,1,296,3,296,6598,8,296,1,297,1,297,1,297,1,297,1,297,3, - 297,6605,8,297,1,297,3,297,6608,8,297,1,297,3,297,6611,8,297,1,297, - 1,297,1,297,1,297,3,297,6617,8,297,1,297,1,297,3,297,6621,8,297, - 1,298,1,298,1,298,1,298,3,298,6627,8,298,1,299,1,299,1,299,1,299, - 1,299,1,299,3,299,6635,8,299,1,299,1,299,1,300,1,300,1,300,1,300, - 1,300,3,300,6644,8,300,1,300,1,300,1,301,1,301,1,301,1,302,1,302, - 1,302,1,303,1,303,1,303,3,303,6657,8,303,1,303,1,303,1,303,3,303, - 6662,8,303,1,303,1,303,1,303,1,303,5,303,6668,8,303,10,303,12,303, - 6671,9,303,3,303,6673,8,303,1,304,1,304,1,304,3,304,6678,8,304,1, - 304,1,304,1,304,3,304,6683,8,304,1,304,1,304,1,304,1,304,5,304,6689, - 8,304,10,304,12,304,6692,9,304,3,304,6694,8,304,1,305,1,305,1,305, - 1,305,1,305,1,305,3,305,6702,8,305,1,306,1,306,3,306,6706,8,306, - 1,306,1,306,1,306,5,306,6711,8,306,10,306,12,306,6714,9,306,1,307, - 1,307,1,307,3,307,6719,8,307,1,307,3,307,6722,8,307,1,308,1,308, - 3,308,6726,8,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308, - 1,308,5,308,6737,8,308,10,308,12,308,6740,9,308,1,308,1,308,1,308, - 3,308,6745,8,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308, - 5,308,6755,8,308,10,308,12,308,6758,9,308,3,308,6760,8,308,1,309, - 1,309,1,310,1,310,1,310,1,310,1,310,3,310,6769,8,310,1,310,1,310, - 1,310,3,310,6774,8,310,1,311,1,311,1,312,1,312,1,313,1,313,1,314, - 1,314,1,315,1,315,1,316,1,316,1,317,1,317,1,318,1,318,1,318,5,318, - 6793,8,318,10,318,12,318,6796,9,318,1,319,1,319,1,320,1,320,1,321, - 1,321,1,322,1,322,1,323,1,323,1,323,5,323,6809,8,323,10,323,12,323, - 6812,9,323,1,324,1,324,1,325,1,325,1,325,5,325,6819,8,325,10,325, - 12,325,6822,9,325,1,326,1,326,3,326,6826,8,326,1,327,1,327,1,327, - 3,327,6831,8,327,3,327,6833,8,327,1,327,3,327,6836,8,327,1,327,1, - 327,3,327,6840,8,327,3,327,6842,8,327,1,328,1,328,1,328,5,328,6847, - 8,328,10,328,12,328,6850,9,328,1,329,1,329,1,329,3,329,6855,8,329, - 3,329,6857,8,329,1,329,3,329,6860,8,329,1,329,1,329,3,329,6864,8, - 329,1,329,3,329,6867,8,329,1,330,1,330,1,331,1,331,1,332,1,332,1, - 333,1,333,1,333,5,333,6878,8,333,10,333,12,333,6881,9,333,1,334, - 1,334,1,335,1,335,1,335,1,335,1,335,3,335,6890,8,335,1,335,3,335, - 6893,8,335,1,335,3,335,6896,8,335,1,336,1,336,1,336,1,336,1,337, - 1,337,1,337,1,338,1,338,1,338,1,338,3,338,6909,8,338,1,339,1,339, - 1,340,1,340,3,340,6915,8,340,1,340,3,340,6918,8,340,1,341,1,341, - 1,342,1,342,1,342,1,342,3,342,6926,8,342,1,343,1,343,1,344,1,344, - 1,344,3,344,6933,8,344,1,345,1,345,1,346,1,346,1,346,1,346,1,346, - 1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,4,346,6951, - 8,346,11,346,12,346,6952,1,347,1,347,1,347,1,347,1,347,3,347,6960, - 8,347,3,347,6962,8,347,1,348,1,348,1,348,4,348,6967,8,348,11,348, - 12,348,6968,3,348,6971,8,348,1,349,1,349,3,349,6975,8,349,1,350, - 1,350,1,350,5,350,6980,8,350,10,350,12,350,6983,9,350,1,351,1,351, - 1,351,3,351,6988,8,351,1,352,1,352,1,352,1,352,1,352,1,352,1,352, - 1,352,1,352,3,352,6999,8,352,1,353,1,353,1,353,1,353,3,353,7005, - 8,353,1,354,1,354,1,355,1,355,3,355,7011,8,355,1,356,3,356,7014, - 8,356,1,356,1,356,3,356,7018,8,356,1,356,4,356,7021,8,356,11,356, - 12,356,7022,1,356,3,356,7026,8,356,1,356,1,356,3,356,7030,8,356, - 1,356,1,356,3,356,7034,8,356,3,356,7036,8,356,1,357,1,357,1,358, - 3,358,7041,8,358,1,358,1,358,1,359,3,359,7046,8,359,1,359,1,359, - 1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,3,360,7059, - 8,360,1,360,3,360,7062,8,360,1,361,1,361,3,361,7066,8,361,1,361, - 3,361,7069,8,361,1,361,3,361,7072,8,361,1,361,1,361,1,361,3,361, - 7077,8,361,1,361,1,361,1,361,3,361,7082,8,361,1,361,1,361,1,361, - 1,361,3,361,7088,8,361,1,361,3,361,7091,8,361,1,361,1,361,1,361, - 3,361,7096,8,361,1,361,3,361,7099,8,361,1,361,1,361,1,361,3,361, - 7104,8,361,1,361,3,361,7107,8,361,1,361,1,361,3,361,7111,8,361,1, - 361,5,361,7114,8,361,10,361,12,361,7117,9,361,1,361,1,361,3,361, - 7121,8,361,1,361,5,361,7124,8,361,10,361,12,361,7127,9,361,1,361, - 1,361,3,361,7131,8,361,1,361,3,361,7134,8,361,1,361,5,361,7137,8, - 361,10,361,12,361,7140,9,361,1,361,1,361,3,361,7144,8,361,1,361, - 5,361,7147,8,361,10,361,12,361,7150,9,361,1,361,1,361,1,361,3,361, - 7155,8,361,1,361,1,361,1,361,3,361,7160,8,361,1,361,1,361,1,361, - 3,361,7165,8,361,1,361,1,361,1,361,3,361,7170,8,361,1,361,1,361, - 3,361,7174,8,361,1,361,3,361,7177,8,361,1,361,1,361,1,361,3,361, - 7182,8,361,1,361,1,361,3,361,7186,8,361,1,361,1,361,3,361,7190,8, - 361,1,362,1,362,1,362,1,362,5,362,7196,8,362,10,362,12,362,7199, - 9,362,1,362,1,362,1,363,1,363,3,363,7205,8,363,1,363,1,363,3,363, - 7209,8,363,1,363,1,363,1,363,3,363,7214,8,363,1,363,1,363,1,363, - 3,363,7219,8,363,1,363,1,363,3,363,7223,8,363,3,363,7225,8,363,1, - 363,3,363,7228,8,363,1,364,1,364,1,364,1,364,1,365,1,365,1,365,1, - 365,1,365,1,365,1,366,1,366,1,366,1,366,3,366,7244,8,366,1,366,1, - 366,1,367,1,367,1,367,1,367,5,367,7252,8,367,10,367,12,367,7255, - 9,367,1,367,1,367,1,368,1,368,1,368,5,368,7262,8,368,10,368,12,368, - 7265,9,368,1,369,1,369,1,369,1,369,5,369,7271,8,369,10,369,12,369, - 7274,9,369,1,370,1,370,1,370,1,370,5,370,7280,8,370,10,370,12,370, - 7283,9,370,1,370,1,370,1,371,1,371,3,371,7289,8,371,1,372,1,372, - 1,372,5,372,7294,8,372,10,372,12,372,7297,9,372,1,373,1,373,1,373, - 5,373,7302,8,373,10,373,12,373,7305,9,373,1,374,1,374,1,374,5,374, - 7310,8,374,10,374,12,374,7313,9,374,1,375,1,375,1,375,1,375,1,375, - 1,375,1,375,1,375,1,375,3,375,7324,8,375,1,375,1,375,1,375,1,375, - 1,375,3,375,7331,8,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375, - 1,375,3,375,7341,8,375,1,376,1,376,1,376,3,376,7346,8,376,1,376, - 3,376,7349,8,376,1,376,1,376,1,376,3,376,7354,8,376,1,376,3,376, - 7357,8,376,1,377,1,377,1,377,1,378,1,378,1,378,1,378,1,379,1,379, - 1,379,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380, - 3,380,7379,8,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,3,380, - 7388,8,380,1,380,3,380,7391,8,380,1,381,1,381,1,381,3,381,7396,8, - 381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,4,381,7427,8,381, - 11,381,12,381,7428,1,381,1,381,3,381,7433,8,381,1,381,1,381,1,381, - 1,381,1,381,4,381,7440,8,381,11,381,12,381,7441,1,381,1,381,3,381, - 7446,8,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7455, - 8,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7463,8,381,1,381, - 1,381,1,381,3,381,7468,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 3,381,7476,8,381,1,381,1,381,1,381,3,381,7481,8,381,1,381,1,381, - 1,381,3,381,7486,8,381,3,381,7488,8,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,3,381,7497,8,381,1,381,1,381,1,381,3,381,7502, - 8,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7510,8,381,1,381, - 1,381,1,381,3,381,7515,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 3,381,7523,8,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7531, - 8,381,1,381,3,381,7534,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,3,381,7544,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381, - 7562,8,381,1,381,3,381,7565,8,381,1,381,3,381,7568,8,381,1,381,1, - 381,3,381,7572,8,381,1,382,1,382,1,382,1,382,1,382,1,383,1,383,1, - 383,1,383,5,383,7583,8,383,10,383,12,383,7586,9,383,1,383,1,383, - 1,383,1,383,1,383,3,383,7593,8,383,1,384,1,384,3,384,7597,8,384, - 1,385,1,385,1,385,3,385,7602,8,385,1,385,1,385,1,385,3,385,7607, - 8,385,1,385,1,385,1,385,1,385,3,385,7613,8,385,1,385,1,385,1,385, - 3,385,7618,8,385,1,385,1,385,3,385,7622,8,385,1,385,1,385,1,385, - 3,385,7627,8,385,1,385,1,385,1,385,3,385,7632,8,385,1,385,1,385, - 1,385,3,385,7637,8,385,1,385,1,385,1,385,1,385,1,385,1,385,5,385, - 7645,8,385,10,385,12,385,7648,9,385,3,385,7650,8,385,1,385,1,385, - 3,385,7654,8,385,1,385,1,385,3,385,7658,8,385,1,386,1,386,1,386, - 1,386,1,386,3,386,7665,8,386,1,386,1,386,3,386,7669,8,386,1,386, - 1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386, - 1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386, - 1,386,1,386,1,386,1,386,3,386,7698,8,386,1,387,1,387,1,387,1,387, - 1,387,1,387,3,387,7706,8,387,1,388,3,388,7709,8,388,1,388,3,388, - 7712,8,388,1,388,3,388,7715,8,388,1,388,3,388,7718,8,388,1,389,1, - 389,1,390,1,390,1,390,1,391,1,391,1,392,1,392,3,392,7729,8,392,1, - 393,1,393,1,393,1,393,1,393,1,394,1,394,1,394,1,394,1,394,1,394, - 1,394,3,394,7743,8,394,1,395,1,395,1,395,1,395,1,395,5,395,7750, - 8,395,10,395,12,395,7753,9,395,1,396,1,396,1,396,1,396,1,396,1,396, - 1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396, - 1,396,1,396,1,396,1,396,1,396,1,396,1,396,3,396,7779,8,396,1,397, - 1,397,1,397,1,397,1,397,1,398,1,398,1,398,5,398,7789,8,398,10,398, - 12,398,7792,9,398,1,399,1,399,1,399,3,399,7797,8,399,1,400,1,400, - 1,400,1,400,1,400,1,400,3,400,7805,8,400,1,400,1,400,1,400,3,400, - 7810,8,400,1,400,1,400,1,400,1,400,5,400,7816,8,400,10,400,12,400, - 7819,9,400,1,401,1,401,1,401,1,401,1,401,3,401,7826,8,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401, - 7839,8,401,1,401,1,401,1,401,1,401,3,401,7845,8,401,1,401,1,401, - 1,401,1,401,3,401,7851,8,401,1,401,1,401,1,401,1,401,1,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401,7866,8,401,1,401, - 1,401,3,401,7870,8,401,1,401,1,401,1,401,1,401,3,401,7876,8,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,5,401,7885,8,401,10,401, - 12,401,7888,9,401,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,5,402,7906,8,402, - 10,402,12,402,7909,9,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 4,402,7918,8,402,11,402,12,402,7919,1,402,1,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 3,402,7938,8,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,5,402,7955,8,402,10,402, - 12,402,7958,9,402,1,403,1,403,1,404,1,404,1,404,1,404,1,404,1,404, - 1,404,1,404,3,404,7970,8,404,1,405,1,405,1,405,1,405,1,405,1,405, - 1,405,3,405,7979,8,405,1,406,1,406,1,406,1,406,1,406,1,406,1,406, - 3,406,7988,8,406,1,407,1,407,1,407,1,407,1,407,1,407,1,407,3,407, - 7997,8,407,1,408,1,408,1,409,1,409,1,409,1,409,1,409,3,409,8006, - 8,409,1,410,1,410,1,411,1,411,1,412,1,412,1,413,1,413,1,414,1,414, - 1,415,1,415,1,416,1,416,1,416,0,5,208,210,800,802,804,417,0,2,4, + 1,258,1,258,1,258,1,258,3,258,5883,8,258,1,259,1,259,1,259,1,260, + 1,260,1,260,1,260,1,260,3,260,5893,8,260,1,261,1,261,3,261,5897, + 8,261,1,261,1,261,3,261,5901,8,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,3,261,5911,8,261,1,261,1,261,1,261,3,261,5916, + 8,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,3,261,5988,8,261,1,262,1,262,1,262, + 1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262, + 1,262,1,262,3,262,6006,8,262,1,263,1,263,1,263,1,263,1,264,1,264, + 3,264,6014,8,264,1,264,1,264,1,264,1,264,3,264,6020,8,264,1,264, + 1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,3,264,6032, + 8,264,1,264,1,264,3,264,6036,8,264,1,264,1,264,1,264,1,264,1,264, + 1,264,1,264,1,264,1,264,3,264,6047,8,264,1,264,1,264,3,264,6051, + 8,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,3,264,6060,8,264, + 1,265,1,265,1,265,1,265,5,265,6066,8,265,10,265,12,265,6069,9,265, + 1,266,1,266,1,266,1,266,3,266,6075,8,266,1,267,1,267,3,267,6079, + 8,267,1,267,1,267,1,267,1,268,1,268,3,268,6086,8,268,1,268,1,268, + 1,268,3,268,6091,8,268,1,268,3,268,6094,8,268,1,268,3,268,6097,8, + 268,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,3,270, + 6108,8,270,1,271,1,271,1,271,1,271,1,271,5,271,6115,8,271,10,271, + 12,271,6118,9,271,1,271,1,271,1,271,1,271,5,271,6124,8,271,10,271, + 12,271,6127,9,271,3,271,6129,8,271,1,272,1,272,1,272,1,272,1,272, + 1,273,1,273,1,273,1,273,1,273,5,273,6141,8,273,10,273,12,273,6144, + 9,273,1,274,1,274,1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275, + 1,276,1,276,1,276,1,276,1,276,3,276,6161,8,276,1,276,1,276,1,276, + 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,6174,8,276, + 1,276,3,276,6177,8,276,1,276,1,276,3,276,6181,8,276,1,276,3,276, + 6184,8,276,3,276,6186,8,276,1,277,1,277,1,277,1,277,1,277,3,277, + 6193,8,277,1,277,1,277,1,277,1,277,1,277,3,277,6200,8,277,5,277, + 6202,8,277,10,277,12,277,6205,9,277,1,277,1,277,1,277,1,277,3,277, + 6211,8,277,1,277,1,277,1,277,1,277,1,277,3,277,6218,8,277,1,277, + 3,277,6221,8,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,5,277,6235,8,277,10,277,12,277,6238,9,277, + 3,277,6240,8,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 3,278,6250,8,278,1,278,1,278,3,278,6254,8,278,1,278,1,278,1,278, + 1,278,3,278,6260,8,278,1,278,3,278,6263,8,278,1,278,3,278,6266,8, + 278,1,278,1,278,1,278,3,278,6271,8,278,1,278,1,278,3,278,6275,8, + 278,1,278,3,278,6278,8,278,1,278,1,278,1,278,1,278,1,278,3,278,6285, + 8,278,1,278,3,278,6288,8,278,1,278,1,278,1,278,1,278,3,278,6294, + 8,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,3,278,6330,8,278,1,278,3,278,6333,8,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,3,278,6345,8,278, + 1,278,3,278,6348,8,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,3,278,6364,8,278,3,278, + 6366,8,278,1,278,1,278,3,278,6370,8,278,1,278,1,278,1,278,1,278, + 1,278,3,278,6377,8,278,1,278,1,278,3,278,6381,8,278,1,278,1,278, + 1,278,1,278,1,278,3,278,6388,8,278,1,278,3,278,6391,8,278,1,278, + 1,278,1,278,1,278,1,278,5,278,6398,8,278,10,278,12,278,6401,9,278, + 3,278,6403,8,278,1,278,1,278,1,278,3,278,6408,8,278,1,278,1,278, + 1,278,1,278,3,278,6414,8,278,3,278,6416,8,278,1,278,1,278,1,278, + 1,278,3,278,6422,8,278,1,278,1,278,3,278,6426,8,278,1,279,1,279, + 1,279,1,279,3,279,6432,8,279,1,279,3,279,6435,8,279,1,279,3,279, + 6438,8,279,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280, + 1,280,1,280,3,280,6451,8,280,1,280,3,280,6454,8,280,1,281,1,281, + 1,281,1,281,3,281,6460,8,281,1,282,3,282,6463,8,282,1,282,1,282, + 1,282,1,282,1,282,1,282,3,282,6471,8,282,1,282,1,282,1,282,1,282, + 1,282,1,282,3,282,6479,8,282,1,283,1,283,1,283,1,283,3,283,6485, + 8,283,1,283,3,283,6488,8,283,1,283,1,283,3,283,6492,8,283,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 3,284,6506,8,284,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286, + 5,286,6516,8,286,10,286,12,286,6519,9,286,1,286,1,286,1,286,1,286, + 1,286,3,286,6526,8,286,1,286,1,286,3,286,6530,8,286,1,286,1,286, + 1,286,1,287,1,287,3,287,6537,8,287,1,287,1,287,1,287,5,287,6542, + 8,287,10,287,12,287,6545,9,287,1,288,1,288,3,288,6549,8,288,1,288, + 1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,289,5,289,6560,8,289, + 10,289,12,289,6563,9,289,1,290,1,290,1,290,1,290,5,290,6569,8,290, + 10,290,12,290,6572,9,290,1,291,1,291,1,291,1,291,1,291,3,291,6579, + 8,291,1,292,1,292,1,292,3,292,6584,8,292,1,292,3,292,6587,8,292, + 1,293,1,293,1,293,3,293,6592,8,293,1,293,3,293,6595,8,293,1,294, + 1,294,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,296,3,296,6607, + 8,296,1,297,1,297,1,297,3,297,6612,8,297,1,297,1,297,1,297,1,297, + 1,297,1,297,1,297,1,297,1,297,1,297,1,297,3,297,6625,8,297,3,297, + 6627,8,297,1,297,1,297,1,297,3,297,6632,8,297,1,297,1,297,3,297, + 6636,8,297,1,297,3,297,6639,8,297,3,297,6641,8,297,1,298,1,298,1, + 298,1,298,1,298,3,298,6648,8,298,1,299,1,299,1,299,1,299,1,299,3, + 299,6655,8,299,1,299,3,299,6658,8,299,1,299,3,299,6661,8,299,1,299, + 1,299,1,299,1,299,3,299,6667,8,299,1,299,1,299,3,299,6671,8,299, + 1,300,1,300,1,300,1,300,3,300,6677,8,300,1,301,1,301,1,301,1,301, + 1,301,1,301,3,301,6685,8,301,1,301,1,301,1,302,1,302,1,302,1,302, + 1,302,3,302,6694,8,302,1,302,1,302,1,303,1,303,1,303,1,304,1,304, + 1,304,1,305,1,305,1,305,3,305,6707,8,305,1,305,1,305,1,305,3,305, + 6712,8,305,1,305,1,305,1,305,1,305,5,305,6718,8,305,10,305,12,305, + 6721,9,305,3,305,6723,8,305,1,306,1,306,1,306,3,306,6728,8,306,1, + 306,1,306,1,306,3,306,6733,8,306,1,306,1,306,1,306,1,306,5,306,6739, + 8,306,10,306,12,306,6742,9,306,3,306,6744,8,306,1,307,1,307,1,307, + 1,307,1,307,1,307,3,307,6752,8,307,1,308,1,308,3,308,6756,8,308, + 1,308,1,308,1,308,5,308,6761,8,308,10,308,12,308,6764,9,308,1,309, + 1,309,1,309,3,309,6769,8,309,1,309,3,309,6772,8,309,1,310,1,310, + 3,310,6776,8,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310, + 1,310,5,310,6787,8,310,10,310,12,310,6790,9,310,1,310,1,310,1,310, + 3,310,6795,8,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310, + 5,310,6805,8,310,10,310,12,310,6808,9,310,3,310,6810,8,310,1,311, + 1,311,1,312,1,312,1,312,1,312,1,312,3,312,6819,8,312,1,312,1,312, + 1,312,3,312,6824,8,312,1,313,1,313,1,314,1,314,1,315,1,315,1,316, + 1,316,1,317,1,317,1,318,1,318,1,319,1,319,1,320,1,320,1,320,5,320, + 6843,8,320,10,320,12,320,6846,9,320,1,321,1,321,1,322,1,322,1,323, + 1,323,1,324,1,324,1,325,1,325,1,325,5,325,6859,8,325,10,325,12,325, + 6862,9,325,1,326,1,326,1,327,1,327,1,327,5,327,6869,8,327,10,327, + 12,327,6872,9,327,1,328,1,328,3,328,6876,8,328,1,329,1,329,1,329, + 3,329,6881,8,329,3,329,6883,8,329,1,329,3,329,6886,8,329,1,329,1, + 329,3,329,6890,8,329,3,329,6892,8,329,1,330,1,330,1,330,5,330,6897, + 8,330,10,330,12,330,6900,9,330,1,331,1,331,1,331,3,331,6905,8,331, + 3,331,6907,8,331,1,331,3,331,6910,8,331,1,331,1,331,3,331,6914,8, + 331,1,331,3,331,6917,8,331,1,332,1,332,1,333,1,333,1,334,1,334,1, + 335,1,335,1,335,5,335,6928,8,335,10,335,12,335,6931,9,335,1,336, + 1,336,1,337,1,337,1,337,1,337,1,337,3,337,6940,8,337,1,337,3,337, + 6943,8,337,1,337,3,337,6946,8,337,1,338,1,338,1,338,1,338,1,339, + 1,339,1,339,1,340,1,340,1,340,1,340,3,340,6959,8,340,1,341,1,341, + 1,342,1,342,3,342,6965,8,342,1,342,3,342,6968,8,342,1,343,1,343, + 1,344,1,344,1,344,1,344,3,344,6976,8,344,1,345,1,345,1,346,1,346, + 1,346,3,346,6983,8,346,1,347,1,347,1,348,1,348,1,348,1,348,1,348, + 1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,4,348,7001, + 8,348,11,348,12,348,7002,1,349,1,349,1,349,1,349,1,349,3,349,7010, + 8,349,3,349,7012,8,349,1,350,1,350,1,350,4,350,7017,8,350,11,350, + 12,350,7018,3,350,7021,8,350,1,351,1,351,3,351,7025,8,351,1,352, + 1,352,1,352,5,352,7030,8,352,10,352,12,352,7033,9,352,1,353,1,353, + 1,353,3,353,7038,8,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354, + 1,354,1,354,3,354,7049,8,354,1,355,1,355,1,355,1,355,3,355,7055, + 8,355,1,356,1,356,1,357,1,357,3,357,7061,8,357,1,358,3,358,7064, + 8,358,1,358,1,358,3,358,7068,8,358,1,358,4,358,7071,8,358,11,358, + 12,358,7072,1,358,3,358,7076,8,358,1,358,1,358,3,358,7080,8,358, + 1,358,1,358,3,358,7084,8,358,3,358,7086,8,358,1,359,1,359,1,360, + 3,360,7091,8,360,1,360,1,360,1,361,3,361,7096,8,361,1,361,1,361, + 1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,3,362,7109, + 8,362,1,362,3,362,7112,8,362,1,363,1,363,3,363,7116,8,363,1,363, + 3,363,7119,8,363,1,363,3,363,7122,8,363,1,363,1,363,1,363,3,363, + 7127,8,363,1,363,1,363,1,363,3,363,7132,8,363,1,363,1,363,1,363, + 1,363,3,363,7138,8,363,1,363,3,363,7141,8,363,1,363,1,363,1,363, + 3,363,7146,8,363,1,363,3,363,7149,8,363,1,363,1,363,1,363,3,363, + 7154,8,363,1,363,3,363,7157,8,363,1,363,1,363,3,363,7161,8,363,1, + 363,5,363,7164,8,363,10,363,12,363,7167,9,363,1,363,1,363,3,363, + 7171,8,363,1,363,5,363,7174,8,363,10,363,12,363,7177,9,363,1,363, + 1,363,3,363,7181,8,363,1,363,3,363,7184,8,363,1,363,5,363,7187,8, + 363,10,363,12,363,7190,9,363,1,363,1,363,3,363,7194,8,363,1,363, + 5,363,7197,8,363,10,363,12,363,7200,9,363,1,363,1,363,1,363,3,363, + 7205,8,363,1,363,1,363,1,363,3,363,7210,8,363,1,363,1,363,1,363, + 3,363,7215,8,363,1,363,1,363,1,363,3,363,7220,8,363,1,363,1,363, + 3,363,7224,8,363,1,363,3,363,7227,8,363,1,363,1,363,1,363,3,363, + 7232,8,363,1,363,1,363,3,363,7236,8,363,1,363,1,363,3,363,7240,8, + 363,1,364,1,364,1,364,1,364,5,364,7246,8,364,10,364,12,364,7249, + 9,364,1,364,1,364,1,365,1,365,3,365,7255,8,365,1,365,1,365,3,365, + 7259,8,365,1,365,1,365,1,365,3,365,7264,8,365,1,365,1,365,1,365, + 3,365,7269,8,365,1,365,1,365,3,365,7273,8,365,3,365,7275,8,365,1, + 365,3,365,7278,8,365,1,366,1,366,1,366,1,366,1,367,1,367,1,367,1, + 367,1,367,1,367,1,368,1,368,1,368,1,368,3,368,7294,8,368,1,368,1, + 368,1,369,1,369,1,369,1,369,5,369,7302,8,369,10,369,12,369,7305, + 9,369,1,369,1,369,1,370,1,370,1,370,5,370,7312,8,370,10,370,12,370, + 7315,9,370,1,371,1,371,1,371,1,371,5,371,7321,8,371,10,371,12,371, + 7324,9,371,1,372,1,372,1,372,1,372,5,372,7330,8,372,10,372,12,372, + 7333,9,372,1,372,1,372,1,373,1,373,3,373,7339,8,373,1,374,1,374, + 1,374,5,374,7344,8,374,10,374,12,374,7347,9,374,1,375,1,375,1,375, + 5,375,7352,8,375,10,375,12,375,7355,9,375,1,376,1,376,1,376,5,376, + 7360,8,376,10,376,12,376,7363,9,376,1,377,1,377,1,377,1,377,1,377, + 1,377,1,377,1,377,1,377,3,377,7374,8,377,1,377,1,377,1,377,1,377, + 1,377,3,377,7381,8,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377, + 1,377,3,377,7391,8,377,1,378,1,378,1,378,3,378,7396,8,378,1,378, + 3,378,7399,8,378,1,378,1,378,1,378,3,378,7404,8,378,1,378,3,378, + 7407,8,378,1,379,1,379,1,379,1,380,1,380,1,380,1,380,1,381,1,381, + 1,381,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382, + 3,382,7429,8,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,3,382, + 7438,8,382,1,382,3,382,7441,8,382,1,383,1,383,1,383,3,383,7446,8, + 383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,4,383,7477,8,383, + 11,383,12,383,7478,1,383,1,383,3,383,7483,8,383,1,383,1,383,1,383, + 1,383,1,383,4,383,7490,8,383,11,383,12,383,7491,1,383,1,383,3,383, + 7496,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7505, + 8,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7513,8,383,1,383, + 1,383,1,383,3,383,7518,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 3,383,7526,8,383,1,383,1,383,1,383,3,383,7531,8,383,1,383,1,383, + 1,383,3,383,7536,8,383,3,383,7538,8,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,3,383,7547,8,383,1,383,1,383,1,383,3,383,7552, + 8,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7560,8,383,1,383, + 1,383,1,383,3,383,7565,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 3,383,7573,8,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7581, + 8,383,1,383,3,383,7584,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,3,383,7594,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383, + 7612,8,383,1,383,3,383,7615,8,383,1,383,3,383,7618,8,383,1,383,1, + 383,3,383,7622,8,383,1,384,1,384,1,384,1,384,1,384,1,385,1,385,1, + 385,1,385,5,385,7633,8,385,10,385,12,385,7636,9,385,1,385,1,385, + 1,385,1,385,1,385,3,385,7643,8,385,1,386,1,386,3,386,7647,8,386, + 1,387,1,387,1,387,3,387,7652,8,387,1,387,1,387,1,387,3,387,7657, + 8,387,1,387,1,387,1,387,1,387,3,387,7663,8,387,1,387,1,387,1,387, + 3,387,7668,8,387,1,387,1,387,3,387,7672,8,387,1,387,1,387,1,387, + 3,387,7677,8,387,1,387,1,387,1,387,3,387,7682,8,387,1,387,1,387, + 1,387,3,387,7687,8,387,1,387,1,387,1,387,1,387,1,387,1,387,5,387, + 7695,8,387,10,387,12,387,7698,9,387,3,387,7700,8,387,1,387,1,387, + 3,387,7704,8,387,1,387,1,387,3,387,7708,8,387,1,388,1,388,1,388, + 1,388,1,388,3,388,7715,8,388,1,388,1,388,3,388,7719,8,388,1,388, + 1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388, + 1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388, + 1,388,1,388,1,388,1,388,3,388,7748,8,388,1,389,1,389,1,389,1,389, + 1,389,1,389,3,389,7756,8,389,1,390,3,390,7759,8,390,1,390,3,390, + 7762,8,390,1,390,3,390,7765,8,390,1,390,3,390,7768,8,390,1,391,1, + 391,1,392,1,392,1,392,1,393,1,393,1,394,1,394,3,394,7779,8,394,1, + 395,1,395,1,395,1,395,1,395,1,396,1,396,1,396,1,396,1,396,1,396, + 1,396,3,396,7793,8,396,1,397,1,397,1,397,1,397,1,397,5,397,7800, + 8,397,10,397,12,397,7803,9,397,1,398,1,398,1,398,1,398,1,398,1,398, + 1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398, + 1,398,1,398,1,398,1,398,1,398,1,398,1,398,3,398,7829,8,398,1,399, + 1,399,1,399,1,399,1,399,1,400,1,400,1,400,5,400,7839,8,400,10,400, + 12,400,7842,9,400,1,401,1,401,1,401,3,401,7847,8,401,1,402,1,402, + 1,402,1,402,1,402,1,402,3,402,7855,8,402,1,402,1,402,1,402,3,402, + 7860,8,402,1,402,1,402,1,402,1,402,5,402,7866,8,402,10,402,12,402, + 7869,9,402,1,403,1,403,1,403,1,403,1,403,3,403,7876,8,403,1,403, + 1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,3,403, + 7889,8,403,1,403,1,403,1,403,1,403,3,403,7895,8,403,1,403,1,403, + 1,403,1,403,3,403,7901,8,403,1,403,1,403,1,403,1,403,1,403,1,403, + 1,403,1,403,1,403,1,403,1,403,1,403,1,403,3,403,7916,8,403,1,403, + 1,403,3,403,7920,8,403,1,403,1,403,1,403,1,403,3,403,7926,8,403, + 1,403,1,403,1,403,1,403,1,403,1,403,1,403,5,403,7935,8,403,10,403, + 12,403,7938,9,403,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,5,404,7956,8,404, + 10,404,12,404,7959,9,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 4,404,7968,8,404,11,404,12,404,7969,1,404,1,404,1,404,1,404,1,404, + 1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 3,404,7988,8,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 1,404,1,404,1,404,1,404,1,404,1,404,1,404,5,404,8005,8,404,10,404, + 12,404,8008,9,404,1,405,1,405,1,406,1,406,1,406,1,406,1,406,1,406, + 1,406,1,406,3,406,8020,8,406,1,407,1,407,1,407,1,407,1,407,1,407, + 1,407,3,407,8029,8,407,1,408,1,408,1,408,1,408,1,408,1,408,1,408, + 3,408,8038,8,408,1,409,1,409,1,409,1,409,1,409,1,409,1,409,3,409, + 8047,8,409,1,410,1,410,1,411,1,411,1,411,1,411,1,411,3,411,8056, + 8,411,1,412,1,412,1,413,1,413,1,414,1,414,1,415,1,415,1,416,1,416, + 1,417,1,417,1,418,1,418,1,418,0,5,214,216,804,806,808,419,0,2,4, 6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48, 50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92, 94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, @@ -48350,2874 +49150,2893 @@ export class MySqlParser extends SQLParserBase { 736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766, 768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798, 800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830, - 832,0,160,2,0,39,39,152,152,2,0,508,508,514,514,3,0,69,69,161,161, - 182,182,3,0,42,42,357,357,430,430,4,0,42,42,389,389,505,505,595, - 595,2,0,494,494,882,882,2,0,79,79,143,143,2,0,16,16,306,306,3,0, - 44,44,86,86,185,185,2,0,406,406,538,538,3,0,486,486,661,661,670, - 670,2,0,364,364,436,436,2,0,325,325,450,450,2,0,42,42,871,872,2, - 0,37,37,678,678,2,0,323,323,418,418,2,0,435,435,686,686,3,0,80,80, - 85,85,126,126,2,0,82,82,92,92,2,0,69,69,161,161,3,0,42,42,374,374, - 403,403,3,0,42,42,370,370,802,802,2,0,648,648,685,685,3,0,408,408, - 526,526,597,597,2,0,329,329,522,522,1,0,871,872,2,0,882,882,889, - 889,2,0,82,82,360,360,2,0,523,523,882,882,2,0,524,524,882,882,3, - 0,402,402,445,445,502,502,7,0,42,42,342,342,345,345,374,374,403, - 403,554,554,889,889,2,0,494,494,506,506,1,0,872,873,2,0,6,6,51,51, - 2,0,5,5,81,81,2,0,27,27,31,31,4,0,42,42,357,357,430,430,434,434, - 2,0,368,368,375,375,2,0,369,369,425,425,2,0,13,13,176,176,2,0,194, - 194,690,690,2,0,22,22,146,146,3,0,43,43,76,76,107,107,2,0,7,7,49, - 49,2,0,107,107,347,347,2,0,337,337,398,398,2,0,102,102,587,587,2, - 0,43,43,107,107,3,0,59,59,181,181,828,828,2,0,185,185,594,594,2, - 0,159,159,503,503,4,0,402,402,445,445,501,501,542,542,2,0,402,402, - 501,501,2,0,14,14,45,45,3,0,66,66,79,79,187,187,2,0,35,35,84,84, - 2,0,98,98,150,150,2,0,7,7,49,50,1,0,637,638,2,0,173,173,752,752, - 2,0,413,413,593,593,2,0,228,228,453,453,2,0,563,563,598,598,8,0, - 108,108,455,455,459,460,462,462,464,464,467,476,499,499,557,557, - 6,0,456,458,461,461,463,463,465,465,477,477,558,558,7,0,109,109, - 411,411,416,416,454,454,466,466,573,573,617,617,2,0,116,116,882, - 882,2,0,118,119,507,507,7,0,499,499,557,557,606,609,611,611,619, - 619,622,628,630,632,6,0,558,558,610,610,612,612,614,616,618,618, - 620,620,7,0,412,412,416,416,573,573,613,613,617,617,621,621,629, - 629,3,0,70,70,118,119,507,507,2,0,438,438,639,639,2,0,633,633,635, - 635,2,0,317,317,640,640,2,0,91,91,577,577,2,0,51,51,362,362,3,0, - 32,32,61,61,180,180,2,0,15,15,340,340,2,0,678,678,835,835,3,0,132, - 132,173,173,409,409,3,0,6,6,51,51,492,492,3,0,13,13,20,20,188,188, - 2,0,42,42,122,122,2,0,104,104,183,183,1,0,873,874,2,0,333,333,598, - 598,2,0,40,40,684,684,2,0,392,392,549,549,2,0,115,115,450,450,4, - 0,208,208,210,210,216,216,649,649,3,0,413,413,531,531,893,894,2, - 0,841,841,857,857,2,0,318,318,559,559,2,0,68,68,80,80,3,0,132,132, - 178,178,385,385,2,0,493,493,645,645,2,0,383,383,688,688,3,0,82,82, - 93,93,426,426,4,0,413,413,450,450,531,532,593,593,2,0,645,645,683, - 683,2,0,349,349,548,548,6,0,228,228,380,380,382,382,410,410,556, - 556,599,599,2,0,45,46,62,62,3,0,442,442,663,663,666,666,10,0,332, - 332,339,339,351,353,359,359,487,487,495,495,650,650,657,657,822, - 822,832,832,2,0,36,36,170,170,2,0,117,117,831,831,11,0,332,332,339, - 339,351,353,359,359,487,487,495,495,578,578,650,650,657,657,822, - 822,832,832,2,0,870,870,891,892,1,0,892,893,2,0,348,348,797,808, - 3,0,871,874,883,883,885,885,2,0,63,63,179,179,2,0,116,116,886,886, - 5,0,26,26,224,226,233,233,235,238,498,498,2,0,26,26,224,224,2,0, - 26,26,224,225,1,0,198,209,3,0,184,184,197,197,596,596,2,0,213,218, - 403,403,6,0,219,219,230,230,232,232,234,234,241,241,321,322,4,0, - 220,223,228,229,231,231,319,319,2,0,155,155,239,239,2,0,442,442, - 813,821,2,0,228,228,498,498,5,0,202,202,208,208,219,220,222,222, - 442,442,1,0,216,217,2,0,184,184,596,596,2,0,202,202,208,208,2,0, - 189,189,682,682,2,0,287,288,294,294,3,0,152,152,285,288,303,303, - 1,0,297,298,3,0,18,18,96,96,177,177,2,0,224,224,228,228,2,0,219, - 220,222,222,3,0,14,14,45,45,830,830,3,0,258,258,270,271,281,281, - 3,0,259,261,277,280,282,284,2,0,267,267,269,269,2,0,265,265,268, - 268,2,0,263,264,274,276,2,0,134,134,587,587,2,0,405,405,539,539, - 2,0,512,512,529,529,2,0,114,114,860,860,3,0,63,63,179,179,674,674, - 2,0,139,139,151,151,3,0,7,7,309,309,602,602,3,0,114,114,853,854, - 860,861,1,0,850,856,2,0,228,228,756,796,1,0,809,812,5,0,717,718, - 734,736,743,743,749,750,752,752,1,0,696,703,3,0,219,223,236,236, - 239,239,76,0,12,12,15,15,19,19,30,30,36,37,42,42,48,48,55,55,57, - 57,59,59,74,74,95,95,117,117,122,122,125,125,131,131,160,160,170, - 170,241,241,255,262,266,266,270,271,277,284,304,309,311,329,331, - 343,345,376,378,393,395,400,402,404,406,410,413,415,417,426,428, - 428,430,434,436,454,456,463,465,473,475,476,478,498,500,506,508, - 510,512,522,525,530,533,538,540,542,544,554,556,562,565,572,575, - 575,577,578,580,605,633,647,649,665,667,674,676,685,687,688,690, - 695,704,704,706,707,709,712,714,716,719,721,726,727,729,733,737, - 738,740,742,744,744,746,748,751,751,753,755,802,802,822,822,825, - 825,832,833,838,838,24,0,39,39,98,98,150,150,152,152,219,221,223, - 223,253,254,262,265,267,269,272,276,296,296,435,435,686,686,696, - 703,746,746,813,813,816,821,823,824,826,827,829,831,834,834,836, - 836,840,840,856,856,9382,0,837,1,0,0,0,2,847,1,0,0,0,4,856,1,0,0, - 0,6,858,1,0,0,0,8,899,1,0,0,0,10,918,1,0,0,0,12,929,1,0,0,0,14,945, - 1,0,0,0,16,950,1,0,0,0,18,962,1,0,0,0,20,997,1,0,0,0,22,1007,1,0, - 0,0,24,1009,1,0,0,0,26,1021,1,0,0,0,28,1051,1,0,0,0,30,1087,1,0, - 0,0,32,1138,1,0,0,0,34,1167,1,0,0,0,36,1174,1,0,0,0,38,1271,1,0, - 0,0,40,1273,1,0,0,0,42,1310,1,0,0,0,44,1374,1,0,0,0,46,1396,1,0, - 0,0,48,1402,1,0,0,0,50,1424,1,0,0,0,52,1511,1,0,0,0,54,1518,1,0, - 0,0,56,1520,1,0,0,0,58,1525,1,0,0,0,60,1565,1,0,0,0,62,1571,1,0, - 0,0,64,1573,1,0,0,0,66,1594,1,0,0,0,68,1601,1,0,0,0,70,1603,1,0, - 0,0,72,1628,1,0,0,0,74,1631,1,0,0,0,76,1659,1,0,0,0,78,1675,1,0, - 0,0,80,1677,1,0,0,0,82,1771,1,0,0,0,84,1774,1,0,0,0,86,1786,1,0, - 0,0,88,1790,1,0,0,0,90,1840,1,0,0,0,92,1842,1,0,0,0,94,1870,1,0, - 0,0,96,1880,1,0,0,0,98,2067,1,0,0,0,100,2069,1,0,0,0,102,2071,1, - 0,0,0,104,2074,1,0,0,0,106,2149,1,0,0,0,108,2172,1,0,0,0,110,2320, - 1,0,0,0,112,2325,1,0,0,0,114,2327,1,0,0,0,116,2337,1,0,0,0,118,2393, - 1,0,0,0,120,2413,1,0,0,0,122,2415,1,0,0,0,124,2450,1,0,0,0,126,2459, - 1,0,0,0,128,2466,1,0,0,0,130,2489,1,0,0,0,132,2498,1,0,0,0,134,2513, - 1,0,0,0,136,2535,1,0,0,0,138,2591,1,0,0,0,140,2887,1,0,0,0,142,2987, - 1,0,0,0,144,2989,1,0,0,0,146,2996,1,0,0,0,148,3003,1,0,0,0,150,3026, - 1,0,0,0,152,3036,1,0,0,0,154,3043,1,0,0,0,156,3050,1,0,0,0,158,3057, - 1,0,0,0,160,3066,1,0,0,0,162,3078,1,0,0,0,164,3091,1,0,0,0,166,3098, - 1,0,0,0,168,3114,1,0,0,0,170,3141,1,0,0,0,172,3143,1,0,0,0,174,3153, - 1,0,0,0,176,3157,1,0,0,0,178,3163,1,0,0,0,180,3175,1,0,0,0,182,3177, - 1,0,0,0,184,3184,1,0,0,0,186,3186,1,0,0,0,188,3235,1,0,0,0,190,3244, - 1,0,0,0,192,3246,1,0,0,0,194,3257,1,0,0,0,196,3263,1,0,0,0,198,3337, - 1,0,0,0,200,3400,1,0,0,0,202,3418,1,0,0,0,204,3502,1,0,0,0,206,3505, - 1,0,0,0,208,3517,1,0,0,0,210,3537,1,0,0,0,212,3565,1,0,0,0,214,3569, - 1,0,0,0,216,3571,1,0,0,0,218,3581,1,0,0,0,220,3601,1,0,0,0,222,3608, - 1,0,0,0,224,3610,1,0,0,0,226,3621,1,0,0,0,228,3630,1,0,0,0,230,3636, - 1,0,0,0,232,3659,1,0,0,0,234,3661,1,0,0,0,236,3697,1,0,0,0,238,3752, - 1,0,0,0,240,3761,1,0,0,0,242,3781,1,0,0,0,244,3793,1,0,0,0,246,3797, - 1,0,0,0,248,3808,1,0,0,0,250,3841,1,0,0,0,252,3862,1,0,0,0,254,3872, - 1,0,0,0,256,3876,1,0,0,0,258,3902,1,0,0,0,260,3949,1,0,0,0,262,3951, - 1,0,0,0,264,3955,1,0,0,0,266,3972,1,0,0,0,268,4023,1,0,0,0,270,4032, - 1,0,0,0,272,4042,1,0,0,0,274,4044,1,0,0,0,276,4074,1,0,0,0,278,4082, - 1,0,0,0,280,4099,1,0,0,0,282,4115,1,0,0,0,284,4152,1,0,0,0,286,4158, - 1,0,0,0,288,4167,1,0,0,0,290,4180,1,0,0,0,292,4184,1,0,0,0,294,4222, - 1,0,0,0,296,4260,1,0,0,0,298,4274,1,0,0,0,300,4282,1,0,0,0,302,4286, - 1,0,0,0,304,4292,1,0,0,0,306,4306,1,0,0,0,308,4309,1,0,0,0,310,4327, - 1,0,0,0,312,4331,1,0,0,0,314,4347,1,0,0,0,316,4349,1,0,0,0,318,4361, - 1,0,0,0,320,4365,1,0,0,0,322,4382,1,0,0,0,324,4399,1,0,0,0,326,4402, - 1,0,0,0,328,4412,1,0,0,0,330,4416,1,0,0,0,332,4426,1,0,0,0,334,4429, - 1,0,0,0,336,4434,1,0,0,0,338,4454,1,0,0,0,340,4456,1,0,0,0,342,4473, - 1,0,0,0,344,4482,1,0,0,0,346,4491,1,0,0,0,348,4493,1,0,0,0,350,4507, - 1,0,0,0,352,4521,1,0,0,0,354,4536,1,0,0,0,356,4545,1,0,0,0,358,4570, - 1,0,0,0,360,4585,1,0,0,0,362,4604,1,0,0,0,364,4634,1,0,0,0,366,4636, - 1,0,0,0,368,4638,1,0,0,0,370,4640,1,0,0,0,372,4655,1,0,0,0,374,4684, - 1,0,0,0,376,4686,1,0,0,0,378,4688,1,0,0,0,380,4690,1,0,0,0,382,4705, - 1,0,0,0,384,4707,1,0,0,0,386,4774,1,0,0,0,388,4776,1,0,0,0,390,4782, - 1,0,0,0,392,4809,1,0,0,0,394,4823,1,0,0,0,396,4834,1,0,0,0,398,4836, - 1,0,0,0,400,4842,1,0,0,0,402,4852,1,0,0,0,404,4856,1,0,0,0,406,4863, - 1,0,0,0,408,4867,1,0,0,0,410,4873,1,0,0,0,412,4880,1,0,0,0,414,4886, - 1,0,0,0,416,4892,1,0,0,0,418,4897,1,0,0,0,420,4942,1,0,0,0,422,4963, - 1,0,0,0,424,4988,1,0,0,0,426,4991,1,0,0,0,428,4997,1,0,0,0,430,5013, - 1,0,0,0,432,5028,1,0,0,0,434,5034,1,0,0,0,436,5064,1,0,0,0,438,5066, - 1,0,0,0,440,5073,1,0,0,0,442,5085,1,0,0,0,444,5091,1,0,0,0,446,5116, - 1,0,0,0,448,5120,1,0,0,0,450,5124,1,0,0,0,452,5135,1,0,0,0,454,5143, - 1,0,0,0,456,5206,1,0,0,0,458,5265,1,0,0,0,460,5367,1,0,0,0,462,5377, - 1,0,0,0,464,5379,1,0,0,0,466,5397,1,0,0,0,468,5421,1,0,0,0,470,5445, - 1,0,0,0,472,5452,1,0,0,0,474,5472,1,0,0,0,476,5481,1,0,0,0,478,5543, - 1,0,0,0,480,5545,1,0,0,0,482,5549,1,0,0,0,484,5583,1,0,0,0,486,5585, - 1,0,0,0,488,5588,1,0,0,0,490,5652,1,0,0,0,492,5671,1,0,0,0,494,5698, - 1,0,0,0,496,5702,1,0,0,0,498,5723,1,0,0,0,500,5733,1,0,0,0,502,5743, - 1,0,0,0,504,5783,1,0,0,0,506,5785,1,0,0,0,508,5788,1,0,0,0,510,5818, - 1,0,0,0,512,5820,1,0,0,0,514,5823,1,0,0,0,516,5923,1,0,0,0,518,5941, - 1,0,0,0,520,5943,1,0,0,0,522,5995,1,0,0,0,524,5997,1,0,0,0,526,6006, - 1,0,0,0,528,6012,1,0,0,0,530,6019,1,0,0,0,532,6034,1,0,0,0,534,6043, - 1,0,0,0,536,6045,1,0,0,0,538,6059,1,0,0,0,540,6080,1,0,0,0,542,6085, - 1,0,0,0,544,6095,1,0,0,0,546,6101,1,0,0,0,548,6135,1,0,0,0,550,6189, - 1,0,0,0,552,6375,1,0,0,0,554,6387,1,0,0,0,556,6403,1,0,0,0,558,6409, - 1,0,0,0,560,6428,1,0,0,0,562,6441,1,0,0,0,564,6455,1,0,0,0,566,6457, - 1,0,0,0,568,6460,1,0,0,0,570,6484,1,0,0,0,572,6496,1,0,0,0,574,6502, - 1,0,0,0,576,6514,1,0,0,0,578,6528,1,0,0,0,580,6530,1,0,0,0,582,6538, - 1,0,0,0,584,6546,1,0,0,0,586,6548,1,0,0,0,588,6550,1,0,0,0,590,6590, - 1,0,0,0,592,6597,1,0,0,0,594,6599,1,0,0,0,596,6622,1,0,0,0,598,6628, - 1,0,0,0,600,6638,1,0,0,0,602,6647,1,0,0,0,604,6650,1,0,0,0,606,6653, - 1,0,0,0,608,6674,1,0,0,0,610,6695,1,0,0,0,612,6703,1,0,0,0,614,6715, - 1,0,0,0,616,6723,1,0,0,0,618,6761,1,0,0,0,620,6773,1,0,0,0,622,6775, - 1,0,0,0,624,6777,1,0,0,0,626,6779,1,0,0,0,628,6781,1,0,0,0,630,6783, - 1,0,0,0,632,6785,1,0,0,0,634,6787,1,0,0,0,636,6789,1,0,0,0,638,6797, - 1,0,0,0,640,6799,1,0,0,0,642,6801,1,0,0,0,644,6803,1,0,0,0,646,6805, - 1,0,0,0,648,6813,1,0,0,0,650,6815,1,0,0,0,652,6825,1,0,0,0,654,6841, - 1,0,0,0,656,6843,1,0,0,0,658,6866,1,0,0,0,660,6868,1,0,0,0,662,6870, - 1,0,0,0,664,6872,1,0,0,0,666,6874,1,0,0,0,668,6882,1,0,0,0,670,6892, - 1,0,0,0,672,6897,1,0,0,0,674,6901,1,0,0,0,676,6908,1,0,0,0,678,6910, - 1,0,0,0,680,6917,1,0,0,0,682,6919,1,0,0,0,684,6925,1,0,0,0,686,6927, - 1,0,0,0,688,6932,1,0,0,0,690,6934,1,0,0,0,692,6936,1,0,0,0,694,6954, - 1,0,0,0,696,6970,1,0,0,0,698,6972,1,0,0,0,700,6976,1,0,0,0,702,6987, - 1,0,0,0,704,6998,1,0,0,0,706,7004,1,0,0,0,708,7006,1,0,0,0,710,7010, - 1,0,0,0,712,7035,1,0,0,0,714,7037,1,0,0,0,716,7040,1,0,0,0,718,7045, - 1,0,0,0,720,7061,1,0,0,0,722,7189,1,0,0,0,724,7191,1,0,0,0,726,7224, - 1,0,0,0,728,7229,1,0,0,0,730,7233,1,0,0,0,732,7239,1,0,0,0,734,7247, - 1,0,0,0,736,7258,1,0,0,0,738,7266,1,0,0,0,740,7275,1,0,0,0,742,7288, - 1,0,0,0,744,7290,1,0,0,0,746,7298,1,0,0,0,748,7306,1,0,0,0,750,7340, - 1,0,0,0,752,7356,1,0,0,0,754,7358,1,0,0,0,756,7361,1,0,0,0,758,7365, - 1,0,0,0,760,7390,1,0,0,0,762,7571,1,0,0,0,764,7573,1,0,0,0,766,7592, - 1,0,0,0,768,7594,1,0,0,0,770,7657,1,0,0,0,772,7697,1,0,0,0,774,7699, - 1,0,0,0,776,7708,1,0,0,0,778,7719,1,0,0,0,780,7721,1,0,0,0,782,7724, - 1,0,0,0,784,7728,1,0,0,0,786,7730,1,0,0,0,788,7742,1,0,0,0,790,7744, - 1,0,0,0,792,7778,1,0,0,0,794,7780,1,0,0,0,796,7785,1,0,0,0,798,7796, - 1,0,0,0,800,7809,1,0,0,0,802,7820,1,0,0,0,804,7937,1,0,0,0,806,7959, - 1,0,0,0,808,7969,1,0,0,0,810,7978,1,0,0,0,812,7987,1,0,0,0,814,7996, - 1,0,0,0,816,7998,1,0,0,0,818,8005,1,0,0,0,820,8007,1,0,0,0,822,8009, - 1,0,0,0,824,8011,1,0,0,0,826,8013,1,0,0,0,828,8015,1,0,0,0,830,8017, - 1,0,0,0,832,8019,1,0,0,0,834,836,3,2,1,0,835,834,1,0,0,0,836,839, - 1,0,0,0,837,835,1,0,0,0,837,838,1,0,0,0,838,840,1,0,0,0,839,837, - 1,0,0,0,840,841,5,0,0,1,841,1,1,0,0,0,842,844,3,4,2,0,843,845,5, - 869,0,0,844,843,1,0,0,0,844,845,1,0,0,0,845,848,1,0,0,0,846,848, - 3,6,3,0,847,842,1,0,0,0,847,846,1,0,0,0,848,3,1,0,0,0,849,857,3, - 8,4,0,850,857,3,10,5,0,851,857,3,12,6,0,852,857,3,14,7,0,853,857, - 3,16,8,0,854,857,3,20,10,0,855,857,3,22,11,0,856,849,1,0,0,0,856, - 850,1,0,0,0,856,851,1,0,0,0,856,852,1,0,0,0,856,853,1,0,0,0,856, - 854,1,0,0,0,856,855,1,0,0,0,857,5,1,0,0,0,858,859,5,869,0,0,859, - 7,1,0,0,0,860,900,3,24,12,0,861,900,3,26,13,0,862,900,3,28,14,0, - 863,900,3,30,15,0,864,900,3,32,16,0,865,900,3,536,268,0,866,900, - 3,36,18,0,867,900,3,38,19,0,868,900,3,40,20,0,869,900,3,42,21,0, - 870,900,3,44,22,0,871,900,3,50,25,0,872,900,3,34,17,0,873,900,3, - 120,60,0,874,900,3,122,61,0,875,900,3,124,62,0,876,900,3,126,63, - 0,877,900,3,128,64,0,878,900,3,130,65,0,879,900,3,132,66,0,880,900, - 3,134,67,0,881,900,3,136,68,0,882,900,3,138,69,0,883,900,3,144,72, - 0,884,900,3,146,73,0,885,900,3,148,74,0,886,900,3,150,75,0,887,900, - 3,152,76,0,888,900,3,154,77,0,889,900,3,156,78,0,890,900,3,158,79, - 0,891,900,3,160,80,0,892,900,3,162,81,0,893,900,3,164,82,0,894,900, - 3,166,83,0,895,900,3,168,84,0,896,900,3,170,85,0,897,900,3,172,86, - 0,898,900,3,176,88,0,899,860,1,0,0,0,899,861,1,0,0,0,899,862,1,0, - 0,0,899,863,1,0,0,0,899,864,1,0,0,0,899,865,1,0,0,0,899,866,1,0, - 0,0,899,867,1,0,0,0,899,868,1,0,0,0,899,869,1,0,0,0,899,870,1,0, - 0,0,899,871,1,0,0,0,899,872,1,0,0,0,899,873,1,0,0,0,899,874,1,0, - 0,0,899,875,1,0,0,0,899,876,1,0,0,0,899,877,1,0,0,0,899,878,1,0, - 0,0,899,879,1,0,0,0,899,880,1,0,0,0,899,881,1,0,0,0,899,882,1,0, - 0,0,899,883,1,0,0,0,899,884,1,0,0,0,899,885,1,0,0,0,899,886,1,0, - 0,0,899,887,1,0,0,0,899,888,1,0,0,0,899,889,1,0,0,0,899,890,1,0, - 0,0,899,891,1,0,0,0,899,892,1,0,0,0,899,893,1,0,0,0,899,894,1,0, - 0,0,899,895,1,0,0,0,899,896,1,0,0,0,899,897,1,0,0,0,899,898,1,0, - 0,0,900,9,1,0,0,0,901,919,3,204,102,0,902,919,3,206,103,0,903,919, - 3,186,93,0,904,919,3,214,107,0,905,919,3,180,90,0,906,919,3,202, - 101,0,907,919,3,178,89,0,908,919,3,192,96,0,909,919,3,196,98,0,910, - 919,3,198,99,0,911,919,3,200,100,0,912,919,3,182,91,0,913,919,3, - 184,92,0,914,919,3,246,123,0,915,919,3,216,108,0,916,919,3,612,306, - 0,917,919,3,614,307,0,918,901,1,0,0,0,918,902,1,0,0,0,918,903,1, - 0,0,0,918,904,1,0,0,0,918,905,1,0,0,0,918,906,1,0,0,0,918,907,1, - 0,0,0,918,908,1,0,0,0,918,909,1,0,0,0,918,910,1,0,0,0,918,911,1, - 0,0,0,918,912,1,0,0,0,918,913,1,0,0,0,918,914,1,0,0,0,918,915,1, - 0,0,0,918,916,1,0,0,0,918,917,1,0,0,0,919,11,1,0,0,0,920,930,3,316, - 158,0,921,930,3,318,159,0,922,930,3,320,160,0,923,930,3,322,161, - 0,924,930,3,324,162,0,925,930,3,326,163,0,926,930,3,328,164,0,927, - 930,3,330,165,0,928,930,3,332,166,0,929,920,1,0,0,0,929,921,1,0, - 0,0,929,922,1,0,0,0,929,923,1,0,0,0,929,924,1,0,0,0,929,925,1,0, - 0,0,929,926,1,0,0,0,929,927,1,0,0,0,929,928,1,0,0,0,930,13,1,0,0, - 0,931,946,3,348,174,0,932,946,3,350,175,0,933,946,3,352,176,0,934, - 946,3,354,177,0,935,946,3,356,178,0,936,946,3,358,179,0,937,946, - 3,360,180,0,938,946,3,362,181,0,939,946,3,398,199,0,940,946,3,400, - 200,0,941,946,3,402,201,0,942,946,3,404,202,0,943,946,3,406,203, - 0,944,946,3,408,204,0,945,931,1,0,0,0,945,932,1,0,0,0,945,933,1, - 0,0,0,945,934,1,0,0,0,945,935,1,0,0,0,945,936,1,0,0,0,945,937,1, - 0,0,0,945,938,1,0,0,0,945,939,1,0,0,0,945,940,1,0,0,0,945,941,1, - 0,0,0,945,942,1,0,0,0,945,943,1,0,0,0,945,944,1,0,0,0,946,15,1,0, - 0,0,947,951,3,410,205,0,948,951,3,412,206,0,949,951,3,414,207,0, - 950,947,1,0,0,0,950,948,1,0,0,0,950,949,1,0,0,0,951,17,1,0,0,0,952, - 963,3,418,209,0,953,963,3,420,210,0,954,963,3,422,211,0,955,963, - 3,426,213,0,956,963,3,428,214,0,957,963,3,430,215,0,958,963,3,434, - 217,0,959,963,3,424,212,0,960,963,3,432,216,0,961,963,3,436,218, - 0,962,952,1,0,0,0,962,953,1,0,0,0,962,954,1,0,0,0,962,955,1,0,0, - 0,962,956,1,0,0,0,962,957,1,0,0,0,962,958,1,0,0,0,962,959,1,0,0, - 0,962,960,1,0,0,0,962,961,1,0,0,0,963,19,1,0,0,0,964,998,3,454,227, - 0,965,998,3,456,228,0,966,998,3,458,229,0,967,998,3,460,230,0,968, - 998,3,464,232,0,969,998,3,476,238,0,970,998,3,478,239,0,971,998, - 3,466,233,0,972,998,3,468,234,0,973,998,3,470,235,0,974,998,3,472, - 236,0,975,998,3,522,261,0,976,998,3,524,262,0,977,998,3,526,263, - 0,978,998,3,528,264,0,979,998,3,530,265,0,980,998,3,538,269,0,981, - 998,3,542,271,0,982,998,3,544,272,0,983,998,3,546,273,0,984,998, - 3,548,274,0,985,998,3,550,275,0,986,998,3,552,276,0,987,998,3,566, - 283,0,988,998,3,568,284,0,989,998,3,570,285,0,990,998,3,572,286, - 0,991,998,3,574,287,0,992,998,3,576,288,0,993,998,3,580,290,0,994, - 998,3,582,291,0,995,998,3,584,292,0,996,998,3,586,293,0,997,964, - 1,0,0,0,997,965,1,0,0,0,997,966,1,0,0,0,997,967,1,0,0,0,997,968, - 1,0,0,0,997,969,1,0,0,0,997,970,1,0,0,0,997,971,1,0,0,0,997,972, - 1,0,0,0,997,973,1,0,0,0,997,974,1,0,0,0,997,975,1,0,0,0,997,976, - 1,0,0,0,997,977,1,0,0,0,997,978,1,0,0,0,997,979,1,0,0,0,997,980, - 1,0,0,0,997,981,1,0,0,0,997,982,1,0,0,0,997,983,1,0,0,0,997,984, - 1,0,0,0,997,985,1,0,0,0,997,986,1,0,0,0,997,987,1,0,0,0,997,988, - 1,0,0,0,997,989,1,0,0,0,997,990,1,0,0,0,997,991,1,0,0,0,997,992, - 1,0,0,0,997,993,1,0,0,0,997,994,1,0,0,0,997,995,1,0,0,0,997,996, - 1,0,0,0,998,21,1,0,0,0,999,1008,3,598,299,0,1000,1008,3,596,298, - 0,1001,1008,3,600,300,0,1002,1008,3,602,301,0,1003,1008,3,604,302, - 0,1004,1008,3,606,303,0,1005,1008,3,608,304,0,1006,1008,3,616,308, - 0,1007,999,1,0,0,0,1007,1000,1,0,0,0,1007,1001,1,0,0,0,1007,1002, - 1,0,0,0,1007,1003,1,0,0,0,1007,1004,1,0,0,0,1007,1005,1,0,0,0,1007, - 1006,1,0,0,0,1008,23,1,0,0,0,1009,1010,5,34,0,0,1010,1012,7,0,0, - 0,1011,1013,3,756,378,0,1012,1011,1,0,0,0,1012,1013,1,0,0,0,1013, - 1014,1,0,0,0,1014,1018,3,622,311,0,1015,1017,3,52,26,0,1016,1015, - 1,0,0,0,1017,1020,1,0,0,0,1018,1016,1,0,0,0,1018,1019,1,0,0,0,1019, - 25,1,0,0,0,1020,1018,1,0,0,0,1021,1023,5,34,0,0,1022,1024,3,58,29, - 0,1023,1022,1,0,0,0,1023,1024,1,0,0,0,1024,1025,1,0,0,0,1025,1027, - 5,385,0,0,1026,1028,3,756,378,0,1027,1026,1,0,0,0,1027,1028,1,0, - 0,0,1028,1029,1,0,0,0,1029,1030,3,698,349,0,1030,1031,5,119,0,0, - 1031,1032,5,590,0,0,1032,1039,3,60,30,0,1033,1034,5,119,0,0,1034, - 1036,5,343,0,0,1035,1037,5,114,0,0,1036,1035,1,0,0,0,1036,1037,1, - 0,0,0,1037,1038,1,0,0,0,1038,1040,5,541,0,0,1039,1033,1,0,0,0,1039, - 1040,1,0,0,0,1040,1042,1,0,0,0,1041,1043,3,68,34,0,1042,1041,1,0, - 0,0,1042,1043,1,0,0,0,1043,1046,1,0,0,0,1044,1045,5,340,0,0,1045, - 1047,5,882,0,0,1046,1044,1,0,0,0,1046,1047,1,0,0,0,1047,1048,1,0, - 0,0,1048,1049,5,371,0,0,1049,1050,3,416,208,0,1050,27,1,0,0,0,1051, - 1053,5,34,0,0,1052,1054,7,1,0,0,1053,1052,1,0,0,0,1053,1054,1,0, - 0,0,1054,1056,1,0,0,0,1055,1057,7,2,0,0,1056,1055,1,0,0,0,1056,1057, - 1,0,0,0,1057,1058,1,0,0,0,1058,1059,5,82,0,0,1059,1061,3,634,317, - 0,1060,1062,3,70,35,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063, - 1,0,0,0,1063,1064,5,119,0,0,1064,1065,3,648,324,0,1065,1069,3,734, - 367,0,1066,1068,3,72,36,0,1067,1066,1,0,0,0,1068,1071,1,0,0,0,1069, - 1067,1,0,0,0,1069,1070,1,0,0,0,1070,1084,1,0,0,0,1071,1069,1,0,0, - 0,1072,1074,5,308,0,0,1073,1075,5,857,0,0,1074,1073,1,0,0,0,1074, - 1075,1,0,0,0,1075,1076,1,0,0,0,1076,1083,7,3,0,0,1077,1079,5,104, - 0,0,1078,1080,5,857,0,0,1079,1078,1,0,0,0,1079,1080,1,0,0,0,1080, - 1081,1,0,0,0,1081,1083,7,4,0,0,1082,1072,1,0,0,0,1082,1077,1,0,0, - 0,1083,1086,1,0,0,0,1084,1082,1,0,0,0,1084,1085,1,0,0,0,1085,29, - 1,0,0,0,1086,1084,1,0,0,0,1087,1088,5,34,0,0,1088,1089,5,451,0,0, - 1089,1090,5,74,0,0,1090,1091,3,702,351,0,1091,1092,5,6,0,0,1092, - 1093,5,671,0,0,1093,1099,5,882,0,0,1094,1096,5,428,0,0,1095,1097, - 5,857,0,0,1096,1095,1,0,0,0,1096,1097,1,0,0,0,1097,1098,1,0,0,0, - 1098,1100,3,710,355,0,1099,1094,1,0,0,0,1099,1100,1,0,0,0,1100,1106, - 1,0,0,0,1101,1103,5,672,0,0,1102,1104,5,857,0,0,1103,1102,1,0,0, - 0,1103,1104,1,0,0,0,1104,1105,1,0,0,0,1105,1107,3,710,355,0,1106, - 1101,1,0,0,0,1106,1107,1,0,0,0,1107,1113,1,0,0,0,1108,1110,5,553, - 0,0,1109,1111,5,857,0,0,1110,1109,1,0,0,0,1110,1111,1,0,0,0,1111, - 1112,1,0,0,0,1112,1114,3,710,355,0,1113,1108,1,0,0,0,1113,1114,1, - 0,0,0,1114,1120,1,0,0,0,1115,1117,5,504,0,0,1116,1118,5,857,0,0, - 1117,1116,1,0,0,0,1117,1118,1,0,0,0,1118,1119,1,0,0,0,1119,1121, - 3,702,351,0,1120,1115,1,0,0,0,1120,1121,1,0,0,0,1121,1123,1,0,0, - 0,1122,1124,5,687,0,0,1123,1122,1,0,0,0,1123,1124,1,0,0,0,1124,1130, - 1,0,0,0,1125,1127,5,340,0,0,1126,1128,5,857,0,0,1127,1126,1,0,0, - 0,1127,1128,1,0,0,0,1128,1129,1,0,0,0,1129,1131,5,882,0,0,1130,1125, - 1,0,0,0,1130,1131,1,0,0,0,1131,1132,1,0,0,0,1132,1134,5,380,0,0, - 1133,1135,5,857,0,0,1134,1133,1,0,0,0,1134,1135,1,0,0,0,1135,1136, - 1,0,0,0,1136,1137,3,688,344,0,1137,31,1,0,0,0,1138,1140,5,34,0,0, - 1139,1141,3,58,29,0,1140,1139,1,0,0,0,1140,1141,1,0,0,0,1141,1142, - 1,0,0,0,1142,1144,5,132,0,0,1143,1145,3,756,378,0,1144,1143,1,0, - 0,0,1144,1145,1,0,0,0,1145,1146,1,0,0,0,1146,1147,3,698,349,0,1147, - 1149,5,866,0,0,1148,1150,3,74,37,0,1149,1148,1,0,0,0,1149,1150,1, - 0,0,0,1150,1155,1,0,0,0,1151,1152,5,868,0,0,1152,1154,3,74,37,0, - 1153,1151,1,0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155,1156, - 1,0,0,0,1156,1158,1,0,0,0,1157,1155,1,0,0,0,1158,1162,5,867,0,0, - 1159,1161,3,76,38,0,1160,1159,1,0,0,0,1161,1164,1,0,0,0,1162,1160, - 1,0,0,0,1162,1163,1,0,0,0,1163,1165,1,0,0,0,1164,1162,1,0,0,0,1165, - 1166,3,416,208,0,1166,33,1,0,0,0,1167,1168,5,34,0,0,1168,1170,5, - 582,0,0,1169,1171,3,756,378,0,1170,1169,1,0,0,0,1170,1171,1,0,0, - 0,1171,1172,1,0,0,0,1172,1173,3,650,325,0,1173,35,1,0,0,0,1174,1175, - 5,34,0,0,1175,1176,5,592,0,0,1176,1177,3,702,351,0,1177,1178,5,67, - 0,0,1178,1179,5,360,0,0,1179,1180,5,692,0,0,1180,1181,7,5,0,0,1181, - 1182,5,518,0,0,1182,1183,5,866,0,0,1183,1188,3,78,39,0,1184,1185, - 5,868,0,0,1185,1187,3,78,39,0,1186,1184,1,0,0,0,1187,1190,1,0,0, - 0,1188,1186,1,0,0,0,1188,1189,1,0,0,0,1189,1191,1,0,0,0,1190,1188, - 1,0,0,0,1191,1192,5,867,0,0,1192,37,1,0,0,0,1193,1195,5,34,0,0,1194, - 1196,5,660,0,0,1195,1194,1,0,0,0,1195,1196,1,0,0,0,1196,1197,1,0, - 0,0,1197,1199,5,173,0,0,1198,1200,3,756,378,0,1199,1198,1,0,0,0, - 1199,1200,1,0,0,0,1200,1201,1,0,0,0,1201,1203,3,644,322,0,1202,1204, - 3,80,40,0,1203,1202,1,0,0,0,1203,1204,1,0,0,0,1204,1215,1,0,0,0, - 1205,1212,3,98,49,0,1206,1208,5,868,0,0,1207,1206,1,0,0,0,1207,1208, - 1,0,0,0,1208,1209,1,0,0,0,1209,1211,3,98,49,0,1210,1207,1,0,0,0, - 1211,1214,1,0,0,0,1212,1210,1,0,0,0,1212,1213,1,0,0,0,1213,1216, - 1,0,0,0,1214,1212,1,0,0,0,1215,1205,1,0,0,0,1215,1216,1,0,0,0,1216, - 1218,1,0,0,0,1217,1219,3,104,52,0,1218,1217,1,0,0,0,1218,1219,1, - 0,0,0,1219,1221,1,0,0,0,1220,1222,7,6,0,0,1221,1220,1,0,0,0,1221, - 1222,1,0,0,0,1222,1224,1,0,0,0,1223,1225,5,13,0,0,1224,1223,1,0, - 0,0,1224,1225,1,0,0,0,1225,1226,1,0,0,0,1226,1227,3,204,102,0,1227, - 1272,1,0,0,0,1228,1230,5,34,0,0,1229,1231,5,660,0,0,1230,1229,1, - 0,0,0,1230,1231,1,0,0,0,1231,1232,1,0,0,0,1232,1234,5,173,0,0,1233, - 1235,3,756,378,0,1234,1233,1,0,0,0,1234,1235,1,0,0,0,1235,1236,1, - 0,0,0,1236,1244,3,644,322,0,1237,1238,5,99,0,0,1238,1245,3,648,324, - 0,1239,1240,5,866,0,0,1240,1241,5,99,0,0,1241,1242,3,648,324,0,1242, - 1243,5,867,0,0,1243,1245,1,0,0,0,1244,1237,1,0,0,0,1244,1239,1,0, - 0,0,1245,1272,1,0,0,0,1246,1248,5,34,0,0,1247,1249,5,660,0,0,1248, - 1247,1,0,0,0,1248,1249,1,0,0,0,1249,1250,1,0,0,0,1250,1252,5,173, - 0,0,1251,1253,3,756,378,0,1252,1251,1,0,0,0,1252,1253,1,0,0,0,1253, - 1254,1,0,0,0,1254,1255,3,644,322,0,1255,1266,3,80,40,0,1256,1263, - 3,98,49,0,1257,1259,5,868,0,0,1258,1257,1,0,0,0,1258,1259,1,0,0, - 0,1259,1260,1,0,0,0,1260,1262,3,98,49,0,1261,1258,1,0,0,0,1262,1265, - 1,0,0,0,1263,1261,1,0,0,0,1263,1264,1,0,0,0,1264,1267,1,0,0,0,1265, - 1263,1,0,0,0,1266,1256,1,0,0,0,1266,1267,1,0,0,0,1267,1269,1,0,0, - 0,1268,1270,3,104,52,0,1269,1268,1,0,0,0,1269,1270,1,0,0,0,1270, - 1272,1,0,0,0,1271,1193,1,0,0,0,1271,1228,1,0,0,0,1271,1246,1,0,0, - 0,1272,39,1,0,0,0,1273,1275,5,34,0,0,1274,1276,5,180,0,0,1275,1274, - 1,0,0,0,1275,1276,1,0,0,0,1276,1277,1,0,0,0,1277,1278,5,658,0,0, - 1278,1282,3,660,330,0,1279,1280,5,6,0,0,1280,1281,5,361,0,0,1281, - 1283,5,882,0,0,1282,1279,1,0,0,0,1282,1283,1,0,0,0,1283,1289,1,0, - 0,0,1284,1286,5,314,0,0,1285,1287,5,857,0,0,1286,1285,1,0,0,0,1286, - 1287,1,0,0,0,1287,1288,1,0,0,0,1288,1290,3,710,355,0,1289,1284,1, - 0,0,0,1289,1290,1,0,0,0,1290,1294,1,0,0,0,1291,1292,5,399,0,0,1292, - 1293,5,857,0,0,1293,1295,3,710,355,0,1294,1291,1,0,0,0,1294,1295, - 1,0,0,0,1295,1301,1,0,0,0,1296,1298,5,380,0,0,1297,1299,5,857,0, - 0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300,1302, - 3,688,344,0,1301,1296,1,0,0,0,1301,1302,1,0,0,0,1302,1308,1,0,0, - 0,1303,1305,5,825,0,0,1304,1306,5,857,0,0,1305,1304,1,0,0,0,1305, - 1306,1,0,0,0,1306,1307,1,0,0,0,1307,1309,5,882,0,0,1308,1303,1,0, - 0,0,1308,1309,1,0,0,0,1309,41,1,0,0,0,1310,1312,5,34,0,0,1311,1313, - 5,180,0,0,1312,1311,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0, - 1314,1315,5,658,0,0,1315,1316,3,660,330,0,1316,1317,5,6,0,0,1317, - 1318,5,361,0,0,1318,1319,5,882,0,0,1319,1320,5,187,0,0,1320,1321, - 5,451,0,0,1321,1322,5,74,0,0,1322,1328,3,702,351,0,1323,1325,5,393, - 0,0,1324,1326,5,857,0,0,1325,1324,1,0,0,0,1325,1326,1,0,0,0,1326, - 1327,1,0,0,0,1327,1329,3,710,355,0,1328,1323,1,0,0,0,1328,1329,1, - 0,0,0,1329,1335,1,0,0,0,1330,1332,5,428,0,0,1331,1333,5,857,0,0, - 1332,1331,1,0,0,0,1332,1333,1,0,0,0,1333,1334,1,0,0,0,1334,1336, - 3,710,355,0,1335,1330,1,0,0,0,1335,1336,1,0,0,0,1336,1342,1,0,0, - 0,1337,1339,5,314,0,0,1338,1340,5,857,0,0,1339,1338,1,0,0,0,1339, - 1340,1,0,0,0,1340,1341,1,0,0,0,1341,1343,3,710,355,0,1342,1337,1, - 0,0,0,1342,1343,1,0,0,0,1343,1349,1,0,0,0,1344,1346,5,481,0,0,1345, - 1347,5,857,0,0,1346,1345,1,0,0,0,1346,1347,1,0,0,0,1347,1348,1,0, - 0,0,1348,1350,3,710,355,0,1349,1344,1,0,0,0,1349,1350,1,0,0,0,1350, - 1356,1,0,0,0,1351,1353,5,504,0,0,1352,1354,5,857,0,0,1353,1352,1, - 0,0,0,1353,1354,1,0,0,0,1354,1355,1,0,0,0,1355,1357,3,702,351,0, - 1356,1351,1,0,0,0,1356,1357,1,0,0,0,1357,1359,1,0,0,0,1358,1360, - 5,687,0,0,1359,1358,1,0,0,0,1359,1360,1,0,0,0,1360,1366,1,0,0,0, - 1361,1363,5,340,0,0,1362,1364,5,857,0,0,1363,1362,1,0,0,0,1363,1364, - 1,0,0,0,1364,1365,1,0,0,0,1365,1367,5,882,0,0,1366,1361,1,0,0,0, - 1366,1367,1,0,0,0,1367,1368,1,0,0,0,1368,1370,5,380,0,0,1369,1371, - 5,857,0,0,1370,1369,1,0,0,0,1370,1371,1,0,0,0,1371,1372,1,0,0,0, - 1372,1373,3,688,344,0,1373,43,1,0,0,0,1374,1376,5,34,0,0,1375,1377, - 3,58,29,0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,1378,1,0,0,0, - 1378,1380,5,178,0,0,1379,1381,3,756,378,0,1380,1379,1,0,0,0,1380, - 1381,1,0,0,0,1381,1382,1,0,0,0,1382,1383,3,698,349,0,1383,1384,7, - 7,0,0,1384,1385,7,8,0,0,1385,1386,5,119,0,0,1386,1387,3,648,324, - 0,1387,1388,5,65,0,0,1388,1389,5,52,0,0,1389,1392,5,586,0,0,1390, - 1391,7,9,0,0,1391,1393,3,698,349,0,1392,1390,1,0,0,0,1392,1393,1, - 0,0,0,1393,1394,1,0,0,0,1394,1395,3,416,208,0,1395,45,1,0,0,0,1396, - 1398,5,194,0,0,1397,1399,5,552,0,0,1398,1397,1,0,0,0,1398,1399,1, - 0,0,0,1399,1400,1,0,0,0,1400,1401,3,48,24,0,1401,47,1,0,0,0,1402, - 1414,3,702,351,0,1403,1404,5,866,0,0,1404,1409,3,702,351,0,1405, - 1406,5,868,0,0,1406,1408,3,702,351,0,1407,1405,1,0,0,0,1408,1411, - 1,0,0,0,1409,1407,1,0,0,0,1409,1410,1,0,0,0,1410,1412,1,0,0,0,1411, - 1409,1,0,0,0,1412,1413,5,867,0,0,1413,1415,1,0,0,0,1414,1403,1,0, - 0,0,1414,1415,1,0,0,0,1415,1416,1,0,0,0,1416,1417,5,13,0,0,1417, - 1418,5,866,0,0,1418,1419,3,10,5,0,1419,1422,5,867,0,0,1420,1421, - 5,868,0,0,1421,1423,3,48,24,0,1422,1420,1,0,0,0,1422,1423,1,0,0, - 0,1423,49,1,0,0,0,1424,1426,5,34,0,0,1425,1427,3,758,379,0,1426, - 1425,1,0,0,0,1426,1427,1,0,0,0,1427,1431,1,0,0,0,1428,1429,5,308, - 0,0,1429,1430,5,857,0,0,1430,1432,7,10,0,0,1431,1428,1,0,0,0,1431, - 1432,1,0,0,0,1432,1434,1,0,0,0,1433,1435,3,58,29,0,1434,1433,1,0, - 0,0,1434,1435,1,0,0,0,1435,1439,1,0,0,0,1436,1437,5,162,0,0,1437, - 1438,5,591,0,0,1438,1440,7,11,0,0,1439,1436,1,0,0,0,1439,1440,1, - 0,0,0,1440,1441,1,0,0,0,1441,1442,5,684,0,0,1442,1454,3,630,315, - 0,1443,1444,5,866,0,0,1444,1449,3,654,327,0,1445,1446,5,868,0,0, - 1446,1448,3,654,327,0,1447,1445,1,0,0,0,1448,1451,1,0,0,0,1449,1447, - 1,0,0,0,1449,1450,1,0,0,0,1450,1452,1,0,0,0,1451,1449,1,0,0,0,1452, - 1453,5,867,0,0,1453,1455,1,0,0,0,1454,1443,1,0,0,0,1454,1455,1,0, - 0,0,1455,1456,1,0,0,0,1456,1476,5,13,0,0,1457,1459,5,866,0,0,1458, - 1460,3,46,23,0,1459,1458,1,0,0,0,1459,1460,1,0,0,0,1460,1461,1,0, - 0,0,1461,1462,3,204,102,0,1462,1463,5,867,0,0,1463,1477,1,0,0,0, - 1464,1466,3,46,23,0,1465,1464,1,0,0,0,1465,1466,1,0,0,0,1466,1467, - 1,0,0,0,1467,1474,3,204,102,0,1468,1470,5,194,0,0,1469,1471,7,12, - 0,0,1470,1469,1,0,0,0,1470,1471,1,0,0,0,1471,1472,1,0,0,0,1472,1473, - 5,27,0,0,1473,1475,5,121,0,0,1474,1468,1,0,0,0,1474,1475,1,0,0,0, - 1475,1477,1,0,0,0,1476,1457,1,0,0,0,1476,1465,1,0,0,0,1477,51,1, - 0,0,0,1478,1480,5,42,0,0,1479,1478,1,0,0,0,1479,1480,1,0,0,0,1480, - 1481,1,0,0,0,1481,1483,3,54,27,0,1482,1484,5,857,0,0,1483,1482,1, - 0,0,0,1483,1484,1,0,0,0,1484,1487,1,0,0,0,1485,1488,3,684,342,0, - 1486,1488,5,42,0,0,1487,1485,1,0,0,0,1487,1486,1,0,0,0,1488,1512, - 1,0,0,0,1489,1491,5,42,0,0,1490,1489,1,0,0,0,1490,1491,1,0,0,0,1491, - 1492,1,0,0,0,1492,1494,5,28,0,0,1493,1495,5,857,0,0,1494,1493,1, - 0,0,0,1494,1495,1,0,0,0,1495,1496,1,0,0,0,1496,1512,3,686,343,0, - 1497,1499,5,42,0,0,1498,1497,1,0,0,0,1498,1499,1,0,0,0,1499,1500, - 1,0,0,0,1500,1502,5,376,0,0,1501,1503,5,857,0,0,1502,1501,1,0,0, - 0,1502,1503,1,0,0,0,1503,1504,1,0,0,0,1504,1512,5,882,0,0,1505,1506, - 5,135,0,0,1506,1508,5,515,0,0,1507,1509,5,857,0,0,1508,1507,1,0, - 0,0,1508,1509,1,0,0,0,1509,1510,1,0,0,0,1510,1512,7,13,0,0,1511, - 1479,1,0,0,0,1511,1490,1,0,0,0,1511,1498,1,0,0,0,1511,1505,1,0,0, - 0,1512,53,1,0,0,0,1513,1514,5,26,0,0,1514,1519,5,155,0,0,1515,1519, - 5,823,0,0,1516,1517,5,224,0,0,1517,1519,5,155,0,0,1518,1513,1,0, - 0,0,1518,1515,1,0,0,0,1518,1516,1,0,0,0,1519,55,1,0,0,0,1520,1523, - 7,14,0,0,1521,1522,5,866,0,0,1522,1524,5,867,0,0,1523,1521,1,0,0, - 0,1523,1524,1,0,0,0,1524,57,1,0,0,0,1525,1526,5,364,0,0,1526,1529, - 5,857,0,0,1527,1530,3,680,340,0,1528,1530,3,56,28,0,1529,1527,1, - 0,0,0,1529,1528,1,0,0,0,1530,59,1,0,0,0,1531,1532,5,311,0,0,1532, - 1536,3,62,31,0,1533,1535,3,64,32,0,1534,1533,1,0,0,0,1535,1538,1, - 0,0,0,1536,1534,1,0,0,0,1536,1537,1,0,0,0,1537,1566,1,0,0,0,1538, - 1536,1,0,0,0,1539,1542,5,387,0,0,1540,1543,3,708,354,0,1541,1543, - 3,800,400,0,1542,1540,1,0,0,0,1542,1541,1,0,0,0,1543,1544,1,0,0, - 0,1544,1553,3,66,33,0,1545,1546,5,641,0,0,1546,1550,3,62,31,0,1547, - 1549,3,64,32,0,1548,1547,1,0,0,0,1549,1552,1,0,0,0,1550,1548,1,0, - 0,0,1550,1551,1,0,0,0,1551,1554,1,0,0,0,1552,1550,1,0,0,0,1553,1545, - 1,0,0,0,1553,1554,1,0,0,0,1554,1563,1,0,0,0,1555,1556,5,379,0,0, - 1556,1560,3,62,31,0,1557,1559,3,64,32,0,1558,1557,1,0,0,0,1559,1562, - 1,0,0,0,1560,1558,1,0,0,0,1560,1561,1,0,0,0,1561,1564,1,0,0,0,1562, - 1560,1,0,0,0,1563,1555,1,0,0,0,1563,1564,1,0,0,0,1564,1566,1,0,0, - 0,1565,1531,1,0,0,0,1565,1539,1,0,0,0,1566,61,1,0,0,0,1567,1572, - 5,287,0,0,1568,1572,3,712,356,0,1569,1572,3,708,354,0,1570,1572, - 3,800,400,0,1571,1567,1,0,0,0,1571,1568,1,0,0,0,1571,1569,1,0,0, - 0,1571,1570,1,0,0,0,1572,63,1,0,0,0,1573,1574,5,853,0,0,1574,1577, - 5,87,0,0,1575,1578,3,708,354,0,1576,1578,3,800,400,0,1577,1575,1, - 0,0,0,1577,1576,1,0,0,0,1578,1579,1,0,0,0,1579,1580,3,66,33,0,1580, - 65,1,0,0,0,1581,1595,3,826,413,0,1582,1595,5,223,0,0,1583,1595,5, - 242,0,0,1584,1595,5,243,0,0,1585,1595,5,244,0,0,1586,1595,5,245, - 0,0,1587,1595,5,246,0,0,1588,1595,5,247,0,0,1589,1595,5,248,0,0, - 1590,1595,5,249,0,0,1591,1595,5,250,0,0,1592,1595,5,251,0,0,1593, - 1595,5,252,0,0,1594,1581,1,0,0,0,1594,1582,1,0,0,0,1594,1583,1,0, - 0,0,1594,1584,1,0,0,0,1594,1585,1,0,0,0,1594,1586,1,0,0,0,1594,1587, - 1,0,0,0,1594,1588,1,0,0,0,1594,1589,1,0,0,0,1594,1590,1,0,0,0,1594, - 1591,1,0,0,0,1594,1592,1,0,0,0,1594,1593,1,0,0,0,1595,67,1,0,0,0, - 1596,1602,5,375,0,0,1597,1602,5,368,0,0,1598,1599,5,368,0,0,1599, - 1600,5,119,0,0,1600,1602,5,598,0,0,1601,1596,1,0,0,0,1601,1597,1, - 0,0,0,1601,1598,1,0,0,0,1602,69,1,0,0,0,1603,1604,5,188,0,0,1604, - 1605,7,15,0,0,1605,71,1,0,0,0,1606,1608,5,443,0,0,1607,1609,5,857, - 0,0,1608,1607,1,0,0,0,1608,1609,1,0,0,0,1609,1610,1,0,0,0,1610,1629, - 3,710,355,0,1611,1629,3,70,35,0,1612,1613,5,194,0,0,1613,1614,5, - 525,0,0,1614,1629,3,702,351,0,1615,1616,5,340,0,0,1616,1629,5,882, - 0,0,1617,1629,7,16,0,0,1618,1620,5,825,0,0,1619,1621,5,857,0,0,1620, - 1619,1,0,0,0,1620,1621,1,0,0,0,1621,1622,1,0,0,0,1622,1629,5,882, - 0,0,1623,1625,5,833,0,0,1624,1626,5,857,0,0,1625,1624,1,0,0,0,1625, - 1626,1,0,0,0,1626,1627,1,0,0,0,1627,1629,5,882,0,0,1628,1606,1,0, - 0,0,1628,1611,1,0,0,0,1628,1612,1,0,0,0,1628,1615,1,0,0,0,1628,1617, - 1,0,0,0,1628,1618,1,0,0,0,1628,1623,1,0,0,0,1629,73,1,0,0,0,1630, - 1632,7,17,0,0,1631,1630,1,0,0,0,1631,1632,1,0,0,0,1632,1633,1,0, - 0,0,1633,1634,3,702,351,0,1634,1635,3,722,361,0,1635,75,1,0,0,0, - 1636,1637,5,340,0,0,1637,1660,5,882,0,0,1638,1639,5,444,0,0,1639, - 1660,5,162,0,0,1640,1642,5,114,0,0,1641,1640,1,0,0,0,1641,1642,1, - 0,0,0,1642,1643,1,0,0,0,1643,1660,5,47,0,0,1644,1645,5,354,0,0,1645, - 1655,5,162,0,0,1646,1647,5,502,0,0,1647,1655,5,162,0,0,1648,1649, - 5,136,0,0,1649,1650,5,162,0,0,1650,1655,5,360,0,0,1651,1652,5,112, - 0,0,1652,1653,5,162,0,0,1653,1655,5,360,0,0,1654,1644,1,0,0,0,1654, - 1646,1,0,0,0,1654,1648,1,0,0,0,1654,1651,1,0,0,0,1655,1660,1,0,0, - 0,1656,1657,5,162,0,0,1657,1658,5,591,0,0,1658,1660,7,11,0,0,1659, - 1636,1,0,0,0,1659,1638,1,0,0,0,1659,1641,1,0,0,0,1659,1654,1,0,0, - 0,1659,1656,1,0,0,0,1660,77,1,0,0,0,1661,1662,5,421,0,0,1662,1676, - 5,882,0,0,1663,1664,5,39,0,0,1664,1676,5,882,0,0,1665,1666,5,678, - 0,0,1666,1676,5,882,0,0,1667,1668,5,529,0,0,1668,1676,5,882,0,0, - 1669,1670,5,601,0,0,1670,1676,5,882,0,0,1671,1672,5,519,0,0,1672, - 1676,5,882,0,0,1673,1674,5,537,0,0,1674,1676,3,708,354,0,1675,1661, - 1,0,0,0,1675,1663,1,0,0,0,1675,1665,1,0,0,0,1675,1667,1,0,0,0,1675, - 1669,1,0,0,0,1675,1671,1,0,0,0,1675,1673,1,0,0,0,1676,79,1,0,0,0, - 1677,1678,5,866,0,0,1678,1683,3,82,41,0,1679,1680,5,868,0,0,1680, - 1682,3,82,41,0,1681,1679,1,0,0,0,1682,1685,1,0,0,0,1683,1681,1,0, - 0,0,1683,1684,1,0,0,0,1684,1686,1,0,0,0,1685,1683,1,0,0,0,1686,1687, - 5,867,0,0,1687,81,1,0,0,0,1688,1689,3,654,327,0,1689,1690,3,88,44, - 0,1690,1772,1,0,0,0,1691,1693,7,18,0,0,1692,1694,3,638,319,0,1693, - 1692,1,0,0,0,1693,1694,1,0,0,0,1694,1696,1,0,0,0,1695,1697,3,70, - 35,0,1696,1695,1,0,0,0,1696,1697,1,0,0,0,1697,1698,1,0,0,0,1698, - 1702,3,734,367,0,1699,1701,3,72,36,0,1700,1699,1,0,0,0,1701,1704, - 1,0,0,0,1702,1700,1,0,0,0,1702,1703,1,0,0,0,1703,1772,1,0,0,0,1704, - 1702,1,0,0,0,1705,1707,7,19,0,0,1706,1708,7,18,0,0,1707,1706,1,0, - 0,0,1707,1708,1,0,0,0,1708,1710,1,0,0,0,1709,1711,3,638,319,0,1710, - 1709,1,0,0,0,1710,1711,1,0,0,0,1711,1712,1,0,0,0,1712,1716,3,734, - 367,0,1713,1715,3,72,36,0,1714,1713,1,0,0,0,1715,1718,1,0,0,0,1716, - 1714,1,0,0,0,1716,1717,1,0,0,0,1717,1772,1,0,0,0,1718,1716,1,0,0, - 0,1719,1721,3,86,43,0,1720,1719,1,0,0,0,1720,1721,1,0,0,0,1721,1722, - 1,0,0,0,1722,1723,5,131,0,0,1723,1725,5,92,0,0,1724,1726,3,70,35, - 0,1725,1724,1,0,0,0,1725,1726,1,0,0,0,1726,1727,1,0,0,0,1727,1731, - 3,734,367,0,1728,1730,3,72,36,0,1729,1728,1,0,0,0,1730,1733,1,0, - 0,0,1731,1729,1,0,0,0,1731,1732,1,0,0,0,1732,1772,1,0,0,0,1733,1731, - 1,0,0,0,1734,1736,3,86,43,0,1735,1734,1,0,0,0,1735,1736,1,0,0,0, - 1736,1737,1,0,0,0,1737,1739,5,182,0,0,1738,1740,7,18,0,0,1739,1738, - 1,0,0,0,1739,1740,1,0,0,0,1740,1742,1,0,0,0,1741,1743,3,638,319, - 0,1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1745,1,0,0,0,1744,1746, - 3,70,35,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0,0, - 1747,1751,3,734,367,0,1748,1750,3,72,36,0,1749,1748,1,0,0,0,1750, - 1753,1,0,0,0,1751,1749,1,0,0,0,1751,1752,1,0,0,0,1752,1772,1,0,0, - 0,1753,1751,1,0,0,0,1754,1756,3,86,43,0,1755,1754,1,0,0,0,1755,1756, - 1,0,0,0,1756,1757,1,0,0,0,1757,1758,5,67,0,0,1758,1760,5,92,0,0, - 1759,1761,3,638,319,0,1760,1759,1,0,0,0,1760,1761,1,0,0,0,1761,1762, - 1,0,0,0,1762,1763,3,734,367,0,1763,1764,3,92,46,0,1764,1772,1,0, - 0,0,1765,1766,5,27,0,0,1766,1767,5,866,0,0,1767,1768,3,800,400,0, - 1768,1769,5,867,0,0,1769,1772,1,0,0,0,1770,1772,3,84,42,0,1771,1688, - 1,0,0,0,1771,1691,1,0,0,0,1771,1705,1,0,0,0,1771,1720,1,0,0,0,1771, - 1735,1,0,0,0,1771,1755,1,0,0,0,1771,1765,1,0,0,0,1771,1770,1,0,0, - 0,1772,83,1,0,0,0,1773,1775,3,86,43,0,1774,1773,1,0,0,0,1774,1775, - 1,0,0,0,1775,1776,1,0,0,0,1776,1777,5,27,0,0,1777,1778,5,866,0,0, - 1778,1779,3,800,400,0,1779,1784,5,867,0,0,1780,1782,5,114,0,0,1781, - 1780,1,0,0,0,1781,1782,1,0,0,0,1782,1783,1,0,0,0,1783,1785,5,57, - 0,0,1784,1781,1,0,0,0,1784,1785,1,0,0,0,1785,85,1,0,0,0,1786,1788, - 5,31,0,0,1787,1789,3,702,351,0,1788,1787,1,0,0,0,1788,1789,1,0,0, - 0,1789,87,1,0,0,0,1790,1794,3,722,361,0,1791,1793,3,90,45,0,1792, - 1791,1,0,0,0,1793,1796,1,0,0,0,1794,1792,1,0,0,0,1794,1795,1,0,0, - 0,1795,89,1,0,0,0,1796,1794,1,0,0,0,1797,1841,3,718,359,0,1798,1799, - 5,42,0,0,1799,1841,3,750,375,0,1800,1841,5,686,0,0,1801,1841,5,435, - 0,0,1802,1807,5,315,0,0,1803,1804,5,119,0,0,1804,1805,5,185,0,0, - 1805,1807,3,752,376,0,1806,1802,1,0,0,0,1806,1803,1,0,0,0,1807,1841, - 1,0,0,0,1808,1810,5,131,0,0,1809,1808,1,0,0,0,1809,1810,1,0,0,0, - 1810,1811,1,0,0,0,1811,1841,5,92,0,0,1812,1814,5,182,0,0,1813,1815, - 5,92,0,0,1814,1813,1,0,0,0,1814,1815,1,0,0,0,1815,1841,1,0,0,0,1816, - 1817,5,340,0,0,1817,1841,5,882,0,0,1818,1819,5,338,0,0,1819,1841, - 7,20,0,0,1820,1821,5,647,0,0,1821,1841,7,21,0,0,1822,1841,3,92,46, - 0,1823,1824,5,28,0,0,1824,1841,3,686,343,0,1825,1826,5,71,0,0,1826, - 1828,5,9,0,0,1827,1825,1,0,0,0,1827,1828,1,0,0,0,1828,1829,1,0,0, - 0,1829,1830,5,13,0,0,1830,1831,5,866,0,0,1831,1832,3,800,400,0,1832, - 1834,5,867,0,0,1833,1835,7,22,0,0,1834,1833,1,0,0,0,1834,1835,1, - 0,0,0,1835,1841,1,0,0,0,1836,1837,5,241,0,0,1837,1838,5,42,0,0,1838, - 1841,5,682,0,0,1839,1841,3,84,42,0,1840,1797,1,0,0,0,1840,1798,1, - 0,0,0,1840,1800,1,0,0,0,1840,1801,1,0,0,0,1840,1806,1,0,0,0,1840, - 1809,1,0,0,0,1840,1812,1,0,0,0,1840,1816,1,0,0,0,1840,1818,1,0,0, - 0,1840,1820,1,0,0,0,1840,1822,1,0,0,0,1840,1823,1,0,0,0,1840,1827, - 1,0,0,0,1840,1836,1,0,0,0,1840,1839,1,0,0,0,1841,91,1,0,0,0,1842, - 1843,5,138,0,0,1843,1845,3,648,324,0,1844,1846,3,734,367,0,1845, - 1844,1,0,0,0,1845,1846,1,0,0,0,1846,1849,1,0,0,0,1847,1848,5,110, - 0,0,1848,1850,7,23,0,0,1849,1847,1,0,0,0,1849,1850,1,0,0,0,1850, - 1852,1,0,0,0,1851,1853,3,94,47,0,1852,1851,1,0,0,0,1852,1853,1,0, - 0,0,1853,93,1,0,0,0,1854,1855,5,119,0,0,1855,1856,5,44,0,0,1856, - 1860,3,96,48,0,1857,1858,5,119,0,0,1858,1859,5,185,0,0,1859,1861, - 3,96,48,0,1860,1857,1,0,0,0,1860,1861,1,0,0,0,1861,1871,1,0,0,0, - 1862,1863,5,119,0,0,1863,1864,5,185,0,0,1864,1868,3,96,48,0,1865, - 1866,5,119,0,0,1866,1867,5,44,0,0,1867,1869,3,96,48,0,1868,1865, - 1,0,0,0,1868,1869,1,0,0,0,1869,1871,1,0,0,0,1870,1854,1,0,0,0,1870, - 1862,1,0,0,0,1871,95,1,0,0,0,1872,1881,5,146,0,0,1873,1881,5,22, - 0,0,1874,1875,5,155,0,0,1875,1881,5,116,0,0,1876,1877,5,502,0,0, - 1877,1881,5,305,0,0,1878,1879,5,155,0,0,1879,1881,5,42,0,0,1880, - 1872,1,0,0,0,1880,1873,1,0,0,0,1880,1874,1,0,0,0,1880,1876,1,0,0, - 0,1880,1878,1,0,0,0,1881,97,1,0,0,0,1882,1884,5,380,0,0,1883,1885, - 5,857,0,0,1884,1883,1,0,0,0,1884,1885,1,0,0,0,1885,1887,1,0,0,0, - 1886,1888,3,688,344,0,1887,1886,1,0,0,0,1887,1888,1,0,0,0,1888,2068, - 1,0,0,0,1889,1891,5,825,0,0,1890,1892,5,857,0,0,1891,1890,1,0,0, - 0,1891,1892,1,0,0,0,1892,1893,1,0,0,0,1893,2068,5,882,0,0,1894,1896, - 5,314,0,0,1895,1897,5,857,0,0,1896,1895,1,0,0,0,1896,1897,1,0,0, - 0,1897,1898,1,0,0,0,1898,2068,3,708,354,0,1899,1901,5,315,0,0,1900, - 1902,5,857,0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0, - 0,0,1903,2068,3,708,354,0,1904,1906,5,316,0,0,1905,1907,5,857,0, - 0,1906,1905,1,0,0,0,1906,1907,1,0,0,0,1907,1908,1,0,0,0,1908,2068, - 3,708,354,0,1909,1911,5,42,0,0,1910,1909,1,0,0,0,1910,1911,1,0,0, - 0,1911,1912,1,0,0,0,1912,1914,3,54,27,0,1913,1915,5,857,0,0,1914, - 1913,1,0,0,0,1914,1915,1,0,0,0,1915,1918,1,0,0,0,1916,1919,3,684, - 342,0,1917,1919,5,42,0,0,1918,1916,1,0,0,0,1918,1917,1,0,0,0,1919, - 2068,1,0,0,0,1920,1922,7,24,0,0,1921,1923,5,857,0,0,1922,1921,1, - 0,0,0,1922,1923,1,0,0,0,1923,1924,1,0,0,0,1924,2068,7,25,0,0,1925, - 1927,5,42,0,0,1926,1925,1,0,0,0,1926,1927,1,0,0,0,1927,1928,1,0, - 0,0,1928,1930,5,28,0,0,1929,1931,5,857,0,0,1930,1929,1,0,0,0,1930, - 1931,1,0,0,0,1931,1932,1,0,0,0,1932,2068,3,686,343,0,1933,1935,5, - 340,0,0,1934,1936,5,857,0,0,1935,1934,1,0,0,0,1935,1936,1,0,0,0, - 1936,1937,1,0,0,0,1937,2068,5,882,0,0,1938,1940,5,346,0,0,1939,1941, - 5,857,0,0,1940,1939,1,0,0,0,1940,1941,1,0,0,0,1941,1942,1,0,0,0, - 1942,2068,7,26,0,0,1943,1945,5,349,0,0,1944,1946,5,857,0,0,1945, - 1944,1,0,0,0,1945,1946,1,0,0,0,1946,1947,1,0,0,0,1947,2068,5,882, - 0,0,1948,1949,7,27,0,0,1949,1951,5,367,0,0,1950,1952,5,857,0,0,1951, - 1950,1,0,0,0,1951,1952,1,0,0,0,1952,1953,1,0,0,0,1953,2068,5,882, - 0,0,1954,1956,5,365,0,0,1955,1957,5,857,0,0,1956,1955,1,0,0,0,1956, - 1957,1,0,0,0,1957,1958,1,0,0,0,1958,2068,7,25,0,0,1959,1961,5,376, - 0,0,1960,1962,5,857,0,0,1961,1960,1,0,0,0,1961,1962,1,0,0,0,1962, - 1963,1,0,0,0,1963,2068,5,882,0,0,1964,1966,7,28,0,0,1965,1967,5, - 857,0,0,1966,1965,1,0,0,0,1966,1967,1,0,0,0,1967,1968,1,0,0,0,1968, - 2068,7,25,0,0,1969,1971,7,29,0,0,1970,1972,5,857,0,0,1971,1970,1, - 0,0,0,1971,1972,1,0,0,0,1972,1973,1,0,0,0,1973,2068,3,708,354,0, - 1974,1976,5,377,0,0,1975,1977,5,857,0,0,1976,1975,1,0,0,0,1976,1977, - 1,0,0,0,1977,1978,1,0,0,0,1978,2068,3,708,354,0,1979,1980,5,82,0, - 0,1980,1982,5,367,0,0,1981,1983,5,857,0,0,1982,1981,1,0,0,0,1982, - 1983,1,0,0,0,1983,1984,1,0,0,0,1984,2068,5,882,0,0,1985,1987,5,431, - 0,0,1986,1988,5,857,0,0,1987,1986,1,0,0,0,1987,1988,1,0,0,0,1988, - 1989,1,0,0,0,1989,2068,7,30,0,0,1990,1992,5,443,0,0,1991,1993,5, - 857,0,0,1992,1991,1,0,0,0,1992,1993,1,0,0,0,1993,1994,1,0,0,0,1994, - 2068,3,710,355,0,1995,1997,5,480,0,0,1996,1998,5,857,0,0,1997,1996, - 1,0,0,0,1997,1998,1,0,0,0,1998,1999,1,0,0,0,1999,2068,3,708,354, - 0,2000,2002,5,490,0,0,2001,2003,5,857,0,0,2002,2001,1,0,0,0,2002, - 2003,1,0,0,0,2003,2004,1,0,0,0,2004,2068,3,708,354,0,2005,2007,5, - 520,0,0,2006,2008,5,857,0,0,2007,2006,1,0,0,0,2007,2008,1,0,0,0, - 2008,2009,1,0,0,0,2009,2068,7,13,0,0,2010,2012,5,529,0,0,2011,2013, - 5,857,0,0,2012,2011,1,0,0,0,2012,2013,1,0,0,0,2013,2014,1,0,0,0, - 2014,2068,5,882,0,0,2015,2017,5,588,0,0,2016,2018,5,857,0,0,2017, - 2016,1,0,0,0,2017,2018,1,0,0,0,2018,2019,1,0,0,0,2019,2068,7,31, - 0,0,2020,2021,5,640,0,0,2021,2068,5,664,0,0,2022,2024,5,833,0,0, - 2023,2025,5,857,0,0,2024,2023,1,0,0,0,2024,2025,1,0,0,0,2025,2026, - 1,0,0,0,2026,2068,5,882,0,0,2027,2029,5,642,0,0,2028,2030,5,857, - 0,0,2029,2028,1,0,0,0,2029,2030,1,0,0,0,2030,2031,1,0,0,0,2031,2068, - 7,13,0,0,2032,2034,5,643,0,0,2033,2035,5,857,0,0,2034,2033,1,0,0, - 0,2034,2035,1,0,0,0,2035,2036,1,0,0,0,2036,2068,7,13,0,0,2037,2039, - 5,644,0,0,2038,2040,5,857,0,0,2039,2038,1,0,0,0,2039,2040,1,0,0, - 0,2040,2043,1,0,0,0,2041,2044,5,42,0,0,2042,2044,3,708,354,0,2043, - 2041,1,0,0,0,2043,2042,1,0,0,0,2044,2068,1,0,0,0,2045,2046,5,658, - 0,0,2046,2048,3,662,331,0,2047,2049,3,102,51,0,2048,2047,1,0,0,0, - 2048,2049,1,0,0,0,2049,2068,1,0,0,0,2050,2051,5,659,0,0,2051,2052, - 5,857,0,0,2052,2068,3,100,50,0,2053,2068,3,102,51,0,2054,2056,5, - 665,0,0,2055,2057,5,857,0,0,2056,2055,1,0,0,0,2056,2057,1,0,0,0, - 2057,2058,1,0,0,0,2058,2068,7,25,0,0,2059,2061,5,181,0,0,2060,2062, - 5,857,0,0,2061,2060,1,0,0,0,2061,2062,1,0,0,0,2062,2063,1,0,0,0, - 2063,2064,5,866,0,0,2064,2065,3,646,323,0,2065,2066,5,867,0,0,2066, - 2068,1,0,0,0,2067,1882,1,0,0,0,2067,1889,1,0,0,0,2067,1894,1,0,0, - 0,2067,1899,1,0,0,0,2067,1904,1,0,0,0,2067,1910,1,0,0,0,2067,1920, - 1,0,0,0,2067,1926,1,0,0,0,2067,1933,1,0,0,0,2067,1938,1,0,0,0,2067, - 1943,1,0,0,0,2067,1948,1,0,0,0,2067,1954,1,0,0,0,2067,1959,1,0,0, - 0,2067,1964,1,0,0,0,2067,1969,1,0,0,0,2067,1974,1,0,0,0,2067,1979, - 1,0,0,0,2067,1985,1,0,0,0,2067,1990,1,0,0,0,2067,1995,1,0,0,0,2067, - 2000,1,0,0,0,2067,2005,1,0,0,0,2067,2010,1,0,0,0,2067,2015,1,0,0, - 0,2067,2020,1,0,0,0,2067,2022,1,0,0,0,2067,2027,1,0,0,0,2067,2032, - 1,0,0,0,2067,2037,1,0,0,0,2067,2045,1,0,0,0,2067,2050,1,0,0,0,2067, - 2053,1,0,0,0,2067,2054,1,0,0,0,2067,2059,1,0,0,0,2068,99,1,0,0,0, - 2069,2070,7,32,0,0,2070,101,1,0,0,0,2071,2072,5,647,0,0,2072,2073, - 7,21,0,0,2073,103,1,0,0,0,2074,2075,5,130,0,0,2075,2076,5,20,0,0, - 2076,2079,3,106,53,0,2077,2078,5,528,0,0,2078,2080,3,708,354,0,2079, - 2077,1,0,0,0,2079,2080,1,0,0,0,2080,2088,1,0,0,0,2081,2082,5,652, - 0,0,2082,2083,5,20,0,0,2083,2086,3,108,54,0,2084,2085,5,653,0,0, - 2085,2087,3,708,354,0,2086,2084,1,0,0,0,2086,2087,1,0,0,0,2087,2089, - 1,0,0,0,2088,2081,1,0,0,0,2088,2089,1,0,0,0,2089,2101,1,0,0,0,2090, - 2091,5,866,0,0,2091,2096,3,110,55,0,2092,2093,5,868,0,0,2093,2095, - 3,110,55,0,2094,2092,1,0,0,0,2095,2098,1,0,0,0,2096,2094,1,0,0,0, - 2096,2097,1,0,0,0,2097,2099,1,0,0,0,2098,2096,1,0,0,0,2099,2100, - 5,867,0,0,2100,2102,1,0,0,0,2101,2090,1,0,0,0,2101,2102,1,0,0,0, - 2102,105,1,0,0,0,2103,2105,5,101,0,0,2104,2103,1,0,0,0,2104,2105, - 1,0,0,0,2105,2106,1,0,0,0,2106,2107,5,418,0,0,2107,2108,5,866,0, - 0,2108,2109,3,800,400,0,2109,2110,5,867,0,0,2110,2150,1,0,0,0,2111, - 2113,5,101,0,0,2112,2111,1,0,0,0,2112,2113,1,0,0,0,2113,2114,1,0, - 0,0,2114,2118,5,92,0,0,2115,2116,5,308,0,0,2116,2117,5,857,0,0,2117, - 2119,7,33,0,0,2118,2115,1,0,0,0,2118,2119,1,0,0,0,2119,2120,1,0, - 0,0,2120,2122,5,866,0,0,2121,2123,3,656,328,0,2122,2121,1,0,0,0, - 2122,2123,1,0,0,0,2123,2124,1,0,0,0,2124,2150,5,867,0,0,2125,2135, - 5,134,0,0,2126,2127,5,866,0,0,2127,2128,3,800,400,0,2128,2129,5, - 867,0,0,2129,2136,1,0,0,0,2130,2131,5,337,0,0,2131,2132,5,866,0, - 0,2132,2133,3,656,328,0,2133,2134,5,867,0,0,2134,2136,1,0,0,0,2135, - 2126,1,0,0,0,2135,2130,1,0,0,0,2136,2150,1,0,0,0,2137,2147,5,449, - 0,0,2138,2139,5,866,0,0,2139,2140,3,800,400,0,2140,2141,5,867,0, - 0,2141,2148,1,0,0,0,2142,2143,5,337,0,0,2143,2144,5,866,0,0,2144, - 2145,3,656,328,0,2145,2146,5,867,0,0,2146,2148,1,0,0,0,2147,2138, - 1,0,0,0,2147,2142,1,0,0,0,2148,2150,1,0,0,0,2149,2104,1,0,0,0,2149, - 2112,1,0,0,0,2149,2125,1,0,0,0,2149,2137,1,0,0,0,2150,107,1,0,0, - 0,2151,2153,5,101,0,0,2152,2151,1,0,0,0,2152,2153,1,0,0,0,2153,2154, - 1,0,0,0,2154,2155,5,418,0,0,2155,2156,5,866,0,0,2156,2157,3,800, - 400,0,2157,2158,5,867,0,0,2158,2173,1,0,0,0,2159,2161,5,101,0,0, - 2160,2159,1,0,0,0,2160,2161,1,0,0,0,2161,2162,1,0,0,0,2162,2166, - 5,92,0,0,2163,2164,5,308,0,0,2164,2165,5,857,0,0,2165,2167,7,33, - 0,0,2166,2163,1,0,0,0,2166,2167,1,0,0,0,2167,2168,1,0,0,0,2168,2169, - 5,866,0,0,2169,2170,3,656,328,0,2170,2171,5,867,0,0,2171,2173,1, - 0,0,0,2172,2152,1,0,0,0,2172,2160,1,0,0,0,2173,109,1,0,0,0,2174, - 2175,5,130,0,0,2175,2176,3,668,334,0,2176,2177,5,189,0,0,2177,2178, - 5,447,0,0,2178,2179,5,662,0,0,2179,2180,5,866,0,0,2180,2185,3,112, - 56,0,2181,2182,5,868,0,0,2182,2184,3,112,56,0,2183,2181,1,0,0,0, - 2184,2187,1,0,0,0,2185,2183,1,0,0,0,2185,2186,1,0,0,0,2186,2188, - 1,0,0,0,2187,2185,1,0,0,0,2188,2192,5,867,0,0,2189,2191,3,118,59, - 0,2190,2189,1,0,0,0,2191,2194,1,0,0,0,2192,2190,1,0,0,0,2192,2193, - 1,0,0,0,2193,2206,1,0,0,0,2194,2192,1,0,0,0,2195,2196,5,866,0,0, - 2196,2201,3,116,58,0,2197,2198,5,868,0,0,2198,2200,3,116,58,0,2199, - 2197,1,0,0,0,2200,2203,1,0,0,0,2201,2199,1,0,0,0,2201,2202,1,0,0, - 0,2202,2204,1,0,0,0,2203,2201,1,0,0,0,2204,2205,5,867,0,0,2205,2207, - 1,0,0,0,2206,2195,1,0,0,0,2206,2207,1,0,0,0,2207,2321,1,0,0,0,2208, - 2209,5,130,0,0,2209,2210,3,668,334,0,2210,2211,5,189,0,0,2211,2212, - 5,447,0,0,2212,2213,5,662,0,0,2213,2217,3,112,56,0,2214,2216,3,118, - 59,0,2215,2214,1,0,0,0,2216,2219,1,0,0,0,2217,2215,1,0,0,0,2217, - 2218,1,0,0,0,2218,2231,1,0,0,0,2219,2217,1,0,0,0,2220,2221,5,866, - 0,0,2221,2226,3,116,58,0,2222,2223,5,868,0,0,2223,2225,3,116,58, - 0,2224,2222,1,0,0,0,2225,2228,1,0,0,0,2226,2224,1,0,0,0,2226,2227, - 1,0,0,0,2227,2229,1,0,0,0,2228,2226,1,0,0,0,2229,2230,5,867,0,0, - 2230,2232,1,0,0,0,2231,2220,1,0,0,0,2231,2232,1,0,0,0,2232,2321, - 1,0,0,0,2233,2234,5,130,0,0,2234,2235,3,668,334,0,2235,2236,5,189, - 0,0,2236,2237,5,80,0,0,2237,2238,5,866,0,0,2238,2243,3,112,56,0, - 2239,2240,5,868,0,0,2240,2242,3,112,56,0,2241,2239,1,0,0,0,2242, - 2245,1,0,0,0,2243,2241,1,0,0,0,2243,2244,1,0,0,0,2244,2246,1,0,0, - 0,2245,2243,1,0,0,0,2246,2250,5,867,0,0,2247,2249,3,118,59,0,2248, - 2247,1,0,0,0,2249,2252,1,0,0,0,2250,2248,1,0,0,0,2250,2251,1,0,0, - 0,2251,2264,1,0,0,0,2252,2250,1,0,0,0,2253,2254,5,866,0,0,2254,2259, - 3,116,58,0,2255,2256,5,868,0,0,2256,2258,3,116,58,0,2257,2255,1, - 0,0,0,2258,2261,1,0,0,0,2259,2257,1,0,0,0,2259,2260,1,0,0,0,2260, - 2262,1,0,0,0,2261,2259,1,0,0,0,2262,2263,5,867,0,0,2263,2265,1,0, - 0,0,2264,2253,1,0,0,0,2264,2265,1,0,0,0,2265,2321,1,0,0,0,2266,2267, - 5,130,0,0,2267,2268,3,668,334,0,2268,2269,5,189,0,0,2269,2270,5, - 80,0,0,2270,2271,5,866,0,0,2271,2276,3,114,57,0,2272,2273,5,868, - 0,0,2273,2275,3,114,57,0,2274,2272,1,0,0,0,2275,2278,1,0,0,0,2276, - 2274,1,0,0,0,2276,2277,1,0,0,0,2277,2279,1,0,0,0,2278,2276,1,0,0, - 0,2279,2283,5,867,0,0,2280,2282,3,118,59,0,2281,2280,1,0,0,0,2282, - 2285,1,0,0,0,2283,2281,1,0,0,0,2283,2284,1,0,0,0,2284,2297,1,0,0, - 0,2285,2283,1,0,0,0,2286,2287,5,866,0,0,2287,2292,3,116,58,0,2288, - 2289,5,868,0,0,2289,2291,3,116,58,0,2290,2288,1,0,0,0,2291,2294, - 1,0,0,0,2292,2290,1,0,0,0,2292,2293,1,0,0,0,2293,2295,1,0,0,0,2294, - 2292,1,0,0,0,2295,2296,5,867,0,0,2296,2298,1,0,0,0,2297,2286,1,0, - 0,0,2297,2298,1,0,0,0,2298,2321,1,0,0,0,2299,2300,5,130,0,0,2300, - 2304,3,668,334,0,2301,2303,3,118,59,0,2302,2301,1,0,0,0,2303,2306, - 1,0,0,0,2304,2302,1,0,0,0,2304,2305,1,0,0,0,2305,2318,1,0,0,0,2306, - 2304,1,0,0,0,2307,2308,5,866,0,0,2308,2313,3,116,58,0,2309,2310, - 5,868,0,0,2310,2312,3,116,58,0,2311,2309,1,0,0,0,2312,2315,1,0,0, - 0,2313,2311,1,0,0,0,2313,2314,1,0,0,0,2314,2316,1,0,0,0,2315,2313, - 1,0,0,0,2316,2317,5,867,0,0,2317,2319,1,0,0,0,2318,2307,1,0,0,0, - 2318,2319,1,0,0,0,2319,2321,1,0,0,0,2320,2174,1,0,0,0,2320,2208, - 1,0,0,0,2320,2233,1,0,0,0,2320,2266,1,0,0,0,2320,2299,1,0,0,0,2321, - 111,1,0,0,0,2322,2326,3,720,360,0,2323,2326,3,800,400,0,2324,2326, - 5,111,0,0,2325,2322,1,0,0,0,2325,2323,1,0,0,0,2325,2324,1,0,0,0, - 2326,113,1,0,0,0,2327,2328,5,866,0,0,2328,2331,3,112,56,0,2329,2330, - 5,868,0,0,2330,2332,3,112,56,0,2331,2329,1,0,0,0,2332,2333,1,0,0, - 0,2333,2331,1,0,0,0,2333,2334,1,0,0,0,2334,2335,1,0,0,0,2335,2336, - 5,867,0,0,2336,115,1,0,0,0,2337,2338,5,652,0,0,2338,2342,3,702,351, - 0,2339,2341,3,118,59,0,2340,2339,1,0,0,0,2341,2344,1,0,0,0,2342, - 2340,1,0,0,0,2342,2343,1,0,0,0,2343,117,1,0,0,0,2344,2342,1,0,0, - 0,2345,2347,5,42,0,0,2346,2345,1,0,0,0,2346,2347,1,0,0,0,2347,2349, - 1,0,0,0,2348,2350,5,647,0,0,2349,2348,1,0,0,0,2349,2350,1,0,0,0, - 2350,2351,1,0,0,0,2351,2353,5,380,0,0,2352,2354,5,857,0,0,2353,2352, - 1,0,0,0,2353,2354,1,0,0,0,2354,2355,1,0,0,0,2355,2394,3,688,344, - 0,2356,2358,5,340,0,0,2357,2359,5,857,0,0,2358,2357,1,0,0,0,2358, - 2359,1,0,0,0,2359,2360,1,0,0,0,2360,2394,5,882,0,0,2361,2362,5,360, - 0,0,2362,2364,5,367,0,0,2363,2365,5,857,0,0,2364,2363,1,0,0,0,2364, - 2365,1,0,0,0,2365,2366,1,0,0,0,2366,2394,5,882,0,0,2367,2368,5,82, - 0,0,2368,2370,5,367,0,0,2369,2371,5,857,0,0,2370,2369,1,0,0,0,2370, - 2371,1,0,0,0,2371,2372,1,0,0,0,2372,2394,5,882,0,0,2373,2375,5,480, - 0,0,2374,2376,5,857,0,0,2375,2374,1,0,0,0,2375,2376,1,0,0,0,2376, - 2377,1,0,0,0,2377,2394,3,708,354,0,2378,2380,5,490,0,0,2379,2381, - 5,857,0,0,2380,2379,1,0,0,0,2380,2381,1,0,0,0,2381,2382,1,0,0,0, - 2382,2394,3,708,354,0,2383,2385,5,658,0,0,2384,2386,5,857,0,0,2385, - 2384,1,0,0,0,2385,2386,1,0,0,0,2386,2387,1,0,0,0,2387,2394,3,662, - 331,0,2388,2390,5,504,0,0,2389,2391,5,857,0,0,2390,2389,1,0,0,0, - 2390,2391,1,0,0,0,2391,2392,1,0,0,0,2392,2394,3,702,351,0,2393,2346, - 1,0,0,0,2393,2356,1,0,0,0,2393,2361,1,0,0,0,2393,2367,1,0,0,0,2393, - 2373,1,0,0,0,2393,2378,1,0,0,0,2393,2383,1,0,0,0,2393,2388,1,0,0, - 0,2394,119,1,0,0,0,2395,2396,5,8,0,0,2396,2398,7,0,0,0,2397,2399, - 3,624,312,0,2398,2397,1,0,0,0,2398,2399,1,0,0,0,2399,2401,1,0,0, - 0,2400,2402,3,52,26,0,2401,2400,1,0,0,0,2402,2403,1,0,0,0,2403,2401, - 1,0,0,0,2403,2404,1,0,0,0,2404,2414,1,0,0,0,2405,2406,5,8,0,0,2406, - 2407,7,0,0,0,2407,2408,3,624,312,0,2408,2409,5,677,0,0,2409,2410, - 5,360,0,0,2410,2411,5,367,0,0,2411,2412,5,496,0,0,2412,2414,1,0, - 0,0,2413,2395,1,0,0,0,2413,2405,1,0,0,0,2414,121,1,0,0,0,2415,2417, - 5,8,0,0,2416,2418,3,58,29,0,2417,2416,1,0,0,0,2417,2418,1,0,0,0, - 2418,2419,1,0,0,0,2419,2420,5,385,0,0,2420,2424,3,698,349,0,2421, - 2422,5,119,0,0,2422,2423,5,590,0,0,2423,2425,3,60,30,0,2424,2421, - 1,0,0,0,2424,2425,1,0,0,0,2425,2432,1,0,0,0,2426,2427,5,119,0,0, - 2427,2429,5,343,0,0,2428,2430,5,114,0,0,2429,2428,1,0,0,0,2429,2430, - 1,0,0,0,2430,2431,1,0,0,0,2431,2433,5,541,0,0,2432,2426,1,0,0,0, - 2432,2433,1,0,0,0,2433,2437,1,0,0,0,2434,2435,5,141,0,0,2435,2436, - 5,176,0,0,2436,2438,3,698,349,0,2437,2434,1,0,0,0,2437,2438,1,0, - 0,0,2438,2440,1,0,0,0,2439,2441,3,68,34,0,2440,2439,1,0,0,0,2440, - 2441,1,0,0,0,2441,2444,1,0,0,0,2442,2443,5,340,0,0,2443,2445,5,882, - 0,0,2444,2442,1,0,0,0,2444,2445,1,0,0,0,2445,2448,1,0,0,0,2446,2447, - 5,371,0,0,2447,2449,3,416,208,0,2448,2446,1,0,0,0,2448,2449,1,0, - 0,0,2449,123,1,0,0,0,2450,2451,5,8,0,0,2451,2452,5,409,0,0,2452, - 2456,3,628,314,0,2453,2455,3,76,38,0,2454,2453,1,0,0,0,2455,2458, - 1,0,0,0,2456,2454,1,0,0,0,2456,2457,1,0,0,0,2457,125,1,0,0,0,2458, - 2456,1,0,0,0,2459,2460,5,8,0,0,2460,2461,5,433,0,0,2461,2462,5,585, - 0,0,2462,2463,5,801,0,0,2463,2464,5,453,0,0,2464,2465,5,92,0,0,2465, - 127,1,0,0,0,2466,2467,5,8,0,0,2467,2468,5,451,0,0,2468,2469,5,74, - 0,0,2469,2470,3,702,351,0,2470,2471,5,6,0,0,2471,2472,5,671,0,0, - 2472,2478,5,882,0,0,2473,2475,5,428,0,0,2474,2476,5,857,0,0,2475, - 2474,1,0,0,0,2475,2476,1,0,0,0,2476,2477,1,0,0,0,2477,2479,3,710, - 355,0,2478,2473,1,0,0,0,2478,2479,1,0,0,0,2479,2481,1,0,0,0,2480, - 2482,5,687,0,0,2481,2480,1,0,0,0,2481,2482,1,0,0,0,2482,2483,1,0, - 0,0,2483,2485,5,380,0,0,2484,2486,5,857,0,0,2485,2484,1,0,0,0,2485, - 2486,1,0,0,0,2486,2487,1,0,0,0,2487,2488,3,688,344,0,2488,129,1, - 0,0,0,2489,2490,5,8,0,0,2490,2491,5,132,0,0,2491,2495,3,698,349, - 0,2492,2494,3,76,38,0,2493,2492,1,0,0,0,2494,2497,1,0,0,0,2495,2493, - 1,0,0,0,2495,2496,1,0,0,0,2496,131,1,0,0,0,2497,2495,1,0,0,0,2498, - 2499,5,8,0,0,2499,2500,5,592,0,0,2500,2501,3,702,351,0,2501,2502, - 5,518,0,0,2502,2503,5,866,0,0,2503,2508,3,78,39,0,2504,2505,5,868, - 0,0,2505,2507,3,78,39,0,2506,2504,1,0,0,0,2507,2510,1,0,0,0,2508, - 2506,1,0,0,0,2508,2509,1,0,0,0,2509,2511,1,0,0,0,2510,2508,1,0,0, - 0,2511,2512,5,867,0,0,2512,133,1,0,0,0,2513,2514,5,8,0,0,2514,2515, - 5,173,0,0,2515,2524,3,648,324,0,2516,2521,3,140,70,0,2517,2518,5, - 868,0,0,2518,2520,3,140,70,0,2519,2517,1,0,0,0,2520,2523,1,0,0,0, - 2521,2519,1,0,0,0,2521,2522,1,0,0,0,2522,2525,1,0,0,0,2523,2521, - 1,0,0,0,2524,2516,1,0,0,0,2524,2525,1,0,0,0,2525,2533,1,0,0,0,2526, - 2530,3,142,71,0,2527,2529,3,142,71,0,2528,2527,1,0,0,0,2529,2532, - 1,0,0,0,2530,2528,1,0,0,0,2530,2531,1,0,0,0,2531,2534,1,0,0,0,2532, - 2530,1,0,0,0,2533,2526,1,0,0,0,2533,2534,1,0,0,0,2534,135,1,0,0, - 0,2535,2537,5,8,0,0,2536,2538,5,180,0,0,2537,2536,1,0,0,0,2537,2538, - 1,0,0,0,2538,2539,1,0,0,0,2539,2540,5,658,0,0,2540,2541,3,662,331, - 0,2541,2542,7,34,0,0,2542,2543,5,361,0,0,2543,2549,5,882,0,0,2544, - 2546,5,428,0,0,2545,2547,5,857,0,0,2546,2545,1,0,0,0,2546,2547,1, - 0,0,0,2547,2548,1,0,0,0,2548,2550,3,710,355,0,2549,2544,1,0,0,0, - 2549,2550,1,0,0,0,2550,2552,1,0,0,0,2551,2553,5,687,0,0,2552,2551, - 1,0,0,0,2552,2553,1,0,0,0,2553,2557,1,0,0,0,2554,2555,5,141,0,0, - 2555,2556,5,176,0,0,2556,2558,3,660,330,0,2557,2554,1,0,0,0,2557, - 2558,1,0,0,0,2558,2564,1,0,0,0,2559,2561,5,314,0,0,2560,2562,5,857, - 0,0,2561,2560,1,0,0,0,2561,2562,1,0,0,0,2562,2563,1,0,0,0,2563,2565, - 3,710,355,0,2564,2559,1,0,0,0,2564,2565,1,0,0,0,2565,2568,1,0,0, - 0,2566,2567,5,155,0,0,2567,2569,7,35,0,0,2568,2566,1,0,0,0,2568, - 2569,1,0,0,0,2569,2575,1,0,0,0,2570,2572,5,376,0,0,2571,2573,5,857, - 0,0,2572,2571,1,0,0,0,2572,2573,1,0,0,0,2573,2574,1,0,0,0,2574,2576, - 5,882,0,0,2575,2570,1,0,0,0,2575,2576,1,0,0,0,2576,2582,1,0,0,0, - 2577,2579,5,380,0,0,2578,2580,5,857,0,0,2579,2578,1,0,0,0,2579,2580, - 1,0,0,0,2580,2581,1,0,0,0,2581,2583,3,688,344,0,2582,2577,1,0,0, - 0,2582,2583,1,0,0,0,2583,2589,1,0,0,0,2584,2586,5,825,0,0,2585,2587, - 5,857,0,0,2586,2585,1,0,0,0,2586,2587,1,0,0,0,2587,2588,1,0,0,0, - 2588,2590,5,882,0,0,2589,2584,1,0,0,0,2589,2590,1,0,0,0,2590,137, - 1,0,0,0,2591,2595,5,8,0,0,2592,2593,5,308,0,0,2593,2594,5,857,0, - 0,2594,2596,7,10,0,0,2595,2592,1,0,0,0,2595,2596,1,0,0,0,2596,2598, - 1,0,0,0,2597,2599,3,58,29,0,2598,2597,1,0,0,0,2598,2599,1,0,0,0, - 2599,2603,1,0,0,0,2600,2601,5,162,0,0,2601,2602,5,591,0,0,2602,2604, - 7,11,0,0,2603,2600,1,0,0,0,2603,2604,1,0,0,0,2604,2605,1,0,0,0,2605, - 2606,5,684,0,0,2606,2611,3,632,316,0,2607,2608,5,866,0,0,2608,2609, - 3,656,328,0,2609,2610,5,867,0,0,2610,2612,1,0,0,0,2611,2607,1,0, - 0,0,2611,2612,1,0,0,0,2612,2613,1,0,0,0,2613,2614,5,13,0,0,2614, - 2621,3,204,102,0,2615,2617,5,194,0,0,2616,2618,7,12,0,0,2617,2616, - 1,0,0,0,2617,2618,1,0,0,0,2618,2619,1,0,0,0,2619,2620,5,27,0,0,2620, - 2622,5,121,0,0,2621,2615,1,0,0,0,2621,2622,1,0,0,0,2622,139,1,0, - 0,0,2623,2630,3,98,49,0,2624,2626,5,868,0,0,2625,2624,1,0,0,0,2625, - 2626,1,0,0,0,2626,2627,1,0,0,0,2627,2629,3,98,49,0,2628,2625,1,0, - 0,0,2629,2632,1,0,0,0,2630,2628,1,0,0,0,2630,2631,1,0,0,0,2631,2888, - 1,0,0,0,2632,2630,1,0,0,0,2633,2635,5,6,0,0,2634,2636,5,29,0,0,2635, - 2634,1,0,0,0,2635,2636,1,0,0,0,2636,2637,1,0,0,0,2637,2638,3,658, - 329,0,2638,2642,3,88,44,0,2639,2643,5,402,0,0,2640,2641,5,306,0, - 0,2641,2643,3,658,329,0,2642,2639,1,0,0,0,2642,2640,1,0,0,0,2642, - 2643,1,0,0,0,2643,2888,1,0,0,0,2644,2646,5,6,0,0,2645,2647,5,29, - 0,0,2646,2645,1,0,0,0,2646,2647,1,0,0,0,2647,2648,1,0,0,0,2648,2649, - 5,866,0,0,2649,2650,3,658,329,0,2650,2657,3,88,44,0,2651,2652,5, - 868,0,0,2652,2653,3,658,329,0,2653,2654,3,88,44,0,2654,2656,1,0, - 0,0,2655,2651,1,0,0,0,2656,2659,1,0,0,0,2657,2655,1,0,0,0,2657,2658, - 1,0,0,0,2658,2660,1,0,0,0,2659,2657,1,0,0,0,2660,2661,5,867,0,0, - 2661,2888,1,0,0,0,2662,2663,5,6,0,0,2663,2665,7,18,0,0,2664,2666, - 3,638,319,0,2665,2664,1,0,0,0,2665,2666,1,0,0,0,2666,2668,1,0,0, - 0,2667,2669,3,70,35,0,2668,2667,1,0,0,0,2668,2669,1,0,0,0,2669,2670, - 1,0,0,0,2670,2674,3,734,367,0,2671,2673,3,72,36,0,2672,2671,1,0, - 0,0,2673,2676,1,0,0,0,2674,2672,1,0,0,0,2674,2675,1,0,0,0,2675,2888, - 1,0,0,0,2676,2674,1,0,0,0,2677,2678,5,6,0,0,2678,2680,7,19,0,0,2679, - 2681,7,18,0,0,2680,2679,1,0,0,0,2680,2681,1,0,0,0,2681,2683,1,0, - 0,0,2682,2684,3,638,319,0,2683,2682,1,0,0,0,2683,2684,1,0,0,0,2684, - 2685,1,0,0,0,2685,2689,3,734,367,0,2686,2688,3,72,36,0,2687,2686, - 1,0,0,0,2688,2691,1,0,0,0,2689,2687,1,0,0,0,2689,2690,1,0,0,0,2690, - 2888,1,0,0,0,2691,2689,1,0,0,0,2692,2697,5,6,0,0,2693,2695,5,31, - 0,0,2694,2696,3,702,351,0,2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696, - 2698,1,0,0,0,2697,2693,1,0,0,0,2697,2698,1,0,0,0,2698,2699,1,0,0, - 0,2699,2700,5,131,0,0,2700,2702,5,92,0,0,2701,2703,3,70,35,0,2702, - 2701,1,0,0,0,2702,2703,1,0,0,0,2703,2704,1,0,0,0,2704,2708,3,734, - 367,0,2705,2707,3,72,36,0,2706,2705,1,0,0,0,2707,2710,1,0,0,0,2708, - 2706,1,0,0,0,2708,2709,1,0,0,0,2709,2888,1,0,0,0,2710,2708,1,0,0, - 0,2711,2716,5,6,0,0,2712,2714,5,31,0,0,2713,2715,3,702,351,0,2714, - 2713,1,0,0,0,2714,2715,1,0,0,0,2715,2717,1,0,0,0,2716,2712,1,0,0, - 0,2716,2717,1,0,0,0,2717,2718,1,0,0,0,2718,2720,5,182,0,0,2719,2721, - 7,18,0,0,2720,2719,1,0,0,0,2720,2721,1,0,0,0,2721,2723,1,0,0,0,2722, - 2724,3,638,319,0,2723,2722,1,0,0,0,2723,2724,1,0,0,0,2724,2726,1, - 0,0,0,2725,2727,3,70,35,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727, - 2728,1,0,0,0,2728,2732,3,734,367,0,2729,2731,3,72,36,0,2730,2729, - 1,0,0,0,2731,2734,1,0,0,0,2732,2730,1,0,0,0,2732,2733,1,0,0,0,2733, - 2888,1,0,0,0,2734,2732,1,0,0,0,2735,2740,5,6,0,0,2736,2738,5,31, - 0,0,2737,2739,3,702,351,0,2738,2737,1,0,0,0,2738,2739,1,0,0,0,2739, - 2741,1,0,0,0,2740,2736,1,0,0,0,2740,2741,1,0,0,0,2741,2742,1,0,0, - 0,2742,2743,5,67,0,0,2743,2745,5,92,0,0,2744,2746,3,638,319,0,2745, - 2744,1,0,0,0,2745,2746,1,0,0,0,2746,2747,1,0,0,0,2747,2748,3,734, - 367,0,2748,2749,3,92,46,0,2749,2888,1,0,0,0,2750,2752,5,6,0,0,2751, - 2753,3,84,42,0,2752,2751,1,0,0,0,2752,2753,1,0,0,0,2753,2888,1,0, - 0,0,2754,2755,5,51,0,0,2755,2756,7,36,0,0,2756,2888,3,702,351,0, - 2757,2758,5,8,0,0,2758,2759,7,36,0,0,2759,2761,3,702,351,0,2760, - 2762,5,114,0,0,2761,2760,1,0,0,0,2761,2762,1,0,0,0,2762,2764,1,0, - 0,0,2763,2765,5,57,0,0,2764,2763,1,0,0,0,2764,2765,1,0,0,0,2765, - 2888,1,0,0,0,2766,2768,5,308,0,0,2767,2769,5,857,0,0,2768,2767,1, - 0,0,0,2768,2769,1,0,0,0,2769,2770,1,0,0,0,2770,2888,7,37,0,0,2771, - 2773,5,8,0,0,2772,2774,5,29,0,0,2773,2772,1,0,0,0,2773,2774,1,0, - 0,0,2774,2775,1,0,0,0,2775,2783,3,658,329,0,2776,2777,5,155,0,0, - 2777,2778,5,42,0,0,2778,2784,3,750,375,0,2779,2780,5,155,0,0,2780, - 2784,7,16,0,0,2781,2782,5,51,0,0,2782,2784,5,42,0,0,2783,2776,1, - 0,0,0,2783,2779,1,0,0,0,2783,2781,1,0,0,0,2784,2888,1,0,0,0,2785, - 2786,5,8,0,0,2786,2787,5,82,0,0,2787,2788,3,638,319,0,2788,2789, - 7,16,0,0,2789,2888,1,0,0,0,2790,2792,5,25,0,0,2791,2793,5,29,0,0, - 2792,2791,1,0,0,0,2792,2793,1,0,0,0,2793,2794,1,0,0,0,2794,2795, - 3,658,329,0,2795,2796,3,654,327,0,2796,2800,3,88,44,0,2797,2801, - 5,402,0,0,2798,2799,5,306,0,0,2799,2801,3,658,329,0,2800,2797,1, - 0,0,0,2800,2798,1,0,0,0,2800,2801,1,0,0,0,2801,2888,1,0,0,0,2802, - 2804,5,42,0,0,2803,2802,1,0,0,0,2803,2804,1,0,0,0,2804,2805,1,0, - 0,0,2805,2806,5,26,0,0,2806,2807,5,155,0,0,2807,2808,5,857,0,0,2808, - 2814,3,684,342,0,2809,2811,5,28,0,0,2810,2812,5,857,0,0,2811,2810, - 1,0,0,0,2811,2812,1,0,0,0,2812,2813,1,0,0,0,2813,2815,3,686,343, - 0,2814,2809,1,0,0,0,2814,2815,1,0,0,0,2815,2888,1,0,0,0,2816,2817, - 5,33,0,0,2817,2821,5,176,0,0,2818,2822,5,823,0,0,2819,2820,5,26, - 0,0,2820,2822,5,155,0,0,2821,2818,1,0,0,0,2821,2819,1,0,0,0,2822, - 2823,1,0,0,0,2823,2826,3,684,342,0,2824,2825,5,28,0,0,2825,2827, - 3,686,343,0,2826,2824,1,0,0,0,2826,2827,1,0,0,0,2827,2888,1,0,0, - 0,2828,2829,7,38,0,0,2829,2888,5,93,0,0,2830,2831,7,39,0,0,2831, - 2888,5,658,0,0,2832,2834,5,51,0,0,2833,2835,5,29,0,0,2834,2833,1, - 0,0,0,2834,2835,1,0,0,0,2835,2836,1,0,0,0,2836,2888,3,658,329,0, - 2837,2838,5,51,0,0,2838,2839,7,18,0,0,2839,2888,3,638,319,0,2840, - 2841,5,51,0,0,2841,2842,5,131,0,0,2842,2888,5,92,0,0,2843,2844,5, - 51,0,0,2844,2845,5,67,0,0,2845,2846,5,92,0,0,2846,2888,3,702,351, - 0,2847,2888,5,66,0,0,2848,2850,5,104,0,0,2849,2851,5,857,0,0,2850, - 2849,1,0,0,0,2850,2851,1,0,0,0,2851,2852,1,0,0,0,2852,2888,7,4,0, - 0,2853,2855,5,492,0,0,2854,2856,5,29,0,0,2855,2854,1,0,0,0,2855, - 2856,1,0,0,0,2856,2857,1,0,0,0,2857,2858,3,658,329,0,2858,2862,3, - 88,44,0,2859,2863,5,402,0,0,2860,2861,5,306,0,0,2861,2863,3,658, - 329,0,2862,2859,1,0,0,0,2862,2860,1,0,0,0,2862,2863,1,0,0,0,2863, - 2888,1,0,0,0,2864,2865,5,125,0,0,2865,2866,5,20,0,0,2866,2888,3, - 656,328,0,2867,2868,5,141,0,0,2868,2869,5,29,0,0,2869,2870,3,658, - 329,0,2870,2871,5,176,0,0,2871,2872,3,654,327,0,2872,2888,1,0,0, - 0,2873,2874,5,141,0,0,2874,2875,7,18,0,0,2875,2876,3,638,319,0,2876, - 2877,5,176,0,0,2877,2878,3,634,317,0,2878,2888,1,0,0,0,2879,2881, - 5,141,0,0,2880,2882,7,40,0,0,2881,2880,1,0,0,0,2881,2882,1,0,0,0, - 2882,2883,1,0,0,0,2883,2888,3,644,322,0,2884,2885,7,41,0,0,2885, - 2888,5,681,0,0,2886,2888,3,142,71,0,2887,2623,1,0,0,0,2887,2633, - 1,0,0,0,2887,2644,1,0,0,0,2887,2662,1,0,0,0,2887,2677,1,0,0,0,2887, - 2692,1,0,0,0,2887,2711,1,0,0,0,2887,2735,1,0,0,0,2887,2750,1,0,0, - 0,2887,2754,1,0,0,0,2887,2757,1,0,0,0,2887,2766,1,0,0,0,2887,2771, - 1,0,0,0,2887,2785,1,0,0,0,2887,2790,1,0,0,0,2887,2803,1,0,0,0,2887, - 2816,1,0,0,0,2887,2828,1,0,0,0,2887,2830,1,0,0,0,2887,2832,1,0,0, - 0,2887,2837,1,0,0,0,2887,2840,1,0,0,0,2887,2843,1,0,0,0,2887,2847, - 1,0,0,0,2887,2848,1,0,0,0,2887,2853,1,0,0,0,2887,2864,1,0,0,0,2887, - 2867,1,0,0,0,2887,2873,1,0,0,0,2887,2879,1,0,0,0,2887,2884,1,0,0, - 0,2887,2886,1,0,0,0,2888,141,1,0,0,0,2889,2890,5,6,0,0,2890,2891, - 5,130,0,0,2891,2892,5,866,0,0,2892,2897,3,110,55,0,2893,2894,5,868, - 0,0,2894,2896,3,110,55,0,2895,2893,1,0,0,0,2896,2899,1,0,0,0,2897, - 2895,1,0,0,0,2897,2898,1,0,0,0,2898,2900,1,0,0,0,2899,2897,1,0,0, - 0,2900,2901,5,867,0,0,2901,2988,1,0,0,0,2902,2903,5,51,0,0,2903, - 2904,5,130,0,0,2904,2988,3,666,333,0,2905,2906,5,369,0,0,2906,2909, - 5,130,0,0,2907,2910,3,666,333,0,2908,2910,5,7,0,0,2909,2907,1,0, - 0,0,2909,2908,1,0,0,0,2910,2911,1,0,0,0,2911,2988,5,658,0,0,2912, - 2913,5,425,0,0,2913,2916,5,130,0,0,2914,2917,3,666,333,0,2915,2917, - 5,7,0,0,2916,2914,1,0,0,0,2916,2915,1,0,0,0,2917,2918,1,0,0,0,2918, - 2988,5,658,0,0,2919,2920,5,668,0,0,2920,2923,5,130,0,0,2921,2924, - 3,666,333,0,2922,2924,5,7,0,0,2923,2921,1,0,0,0,2923,2922,1,0,0, - 0,2924,2988,1,0,0,0,2925,2926,5,335,0,0,2926,2927,5,130,0,0,2927, - 2988,3,708,354,0,2928,2929,5,561,0,0,2929,2930,5,130,0,0,2930,2931, - 3,666,333,0,2931,2932,5,88,0,0,2932,2933,5,866,0,0,2933,2938,3,110, - 55,0,2934,2935,5,868,0,0,2935,2937,3,110,55,0,2936,2934,1,0,0,0, - 2937,2940,1,0,0,0,2938,2936,1,0,0,0,2938,2939,1,0,0,0,2939,2941, - 1,0,0,0,2940,2938,1,0,0,0,2941,2942,5,867,0,0,2942,2988,1,0,0,0, - 2943,2944,5,388,0,0,2944,2945,5,130,0,0,2945,2946,3,668,334,0,2946, - 2947,5,194,0,0,2947,2948,5,173,0,0,2948,2951,3,648,324,0,2949,2950, - 7,41,0,0,2950,2952,5,681,0,0,2951,2949,1,0,0,0,2951,2952,1,0,0,0, - 2952,2988,1,0,0,0,2953,2954,5,10,0,0,2954,2957,5,130,0,0,2955,2958, - 3,666,333,0,2956,2958,5,7,0,0,2957,2955,1,0,0,0,2957,2956,1,0,0, - 0,2958,2988,1,0,0,0,2959,2960,5,27,0,0,2960,2963,5,130,0,0,2961, - 2964,3,666,333,0,2962,2964,5,7,0,0,2963,2961,1,0,0,0,2963,2962,1, - 0,0,0,2964,2988,1,0,0,0,2965,2966,5,120,0,0,2966,2969,5,130,0,0, - 2967,2970,3,666,333,0,2968,2970,5,7,0,0,2969,2967,1,0,0,0,2969,2968, - 1,0,0,0,2970,2988,1,0,0,0,2971,2972,5,550,0,0,2972,2975,5,130,0, - 0,2973,2976,3,666,333,0,2974,2976,5,7,0,0,2975,2973,1,0,0,0,2975, - 2974,1,0,0,0,2976,2988,1,0,0,0,2977,2978,5,562,0,0,2978,2981,5,130, - 0,0,2979,2982,3,666,333,0,2980,2982,5,7,0,0,2981,2979,1,0,0,0,2981, - 2980,1,0,0,0,2982,2988,1,0,0,0,2983,2984,5,560,0,0,2984,2988,5,527, - 0,0,2985,2986,5,677,0,0,2986,2988,5,527,0,0,2987,2889,1,0,0,0,2987, - 2902,1,0,0,0,2987,2905,1,0,0,0,2987,2912,1,0,0,0,2987,2919,1,0,0, - 0,2987,2925,1,0,0,0,2987,2928,1,0,0,0,2987,2943,1,0,0,0,2987,2953, - 1,0,0,0,2987,2959,1,0,0,0,2987,2965,1,0,0,0,2987,2971,1,0,0,0,2987, - 2977,1,0,0,0,2987,2983,1,0,0,0,2987,2985,1,0,0,0,2988,143,1,0,0, - 0,2989,2990,5,51,0,0,2990,2992,7,0,0,0,2991,2993,3,754,377,0,2992, - 2991,1,0,0,0,2992,2993,1,0,0,0,2993,2994,1,0,0,0,2994,2995,3,624, - 312,0,2995,145,1,0,0,0,2996,2997,5,51,0,0,2997,2999,5,385,0,0,2998, - 3000,3,754,377,0,2999,2998,1,0,0,0,2999,3000,1,0,0,0,3000,3001,1, - 0,0,0,3001,3002,3,698,349,0,3002,147,1,0,0,0,3003,3004,5,51,0,0, - 3004,3006,5,82,0,0,3005,3007,7,1,0,0,3006,3005,1,0,0,0,3006,3007, - 1,0,0,0,3007,3008,1,0,0,0,3008,3009,3,638,319,0,3009,3010,5,119, - 0,0,3010,3023,3,648,324,0,3011,3013,5,308,0,0,3012,3014,5,857,0, - 0,3013,3012,1,0,0,0,3013,3014,1,0,0,0,3014,3015,1,0,0,0,3015,3022, - 7,3,0,0,3016,3018,5,104,0,0,3017,3019,5,857,0,0,3018,3017,1,0,0, - 0,3018,3019,1,0,0,0,3019,3020,1,0,0,0,3020,3022,7,4,0,0,3021,3011, - 1,0,0,0,3021,3016,1,0,0,0,3022,3025,1,0,0,0,3023,3021,1,0,0,0,3023, - 3024,1,0,0,0,3024,149,1,0,0,0,3025,3023,1,0,0,0,3026,3027,5,51,0, - 0,3027,3028,5,451,0,0,3028,3029,5,74,0,0,3029,3030,3,702,351,0,3030, - 3032,5,380,0,0,3031,3033,5,857,0,0,3032,3031,1,0,0,0,3032,3033,1, - 0,0,0,3033,3034,1,0,0,0,3034,3035,3,688,344,0,3035,151,1,0,0,0,3036, - 3037,5,51,0,0,3037,3039,5,132,0,0,3038,3040,3,754,377,0,3039,3038, - 1,0,0,0,3039,3040,1,0,0,0,3040,3041,1,0,0,0,3041,3042,3,698,349, - 0,3042,153,1,0,0,0,3043,3044,5,51,0,0,3044,3046,5,409,0,0,3045,3047, - 3,754,377,0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3048,1,0,0, - 0,3048,3049,3,628,314,0,3049,155,1,0,0,0,3050,3051,5,51,0,0,3051, - 3053,5,592,0,0,3052,3054,3,754,377,0,3053,3052,1,0,0,0,3053,3054, - 1,0,0,0,3054,3055,1,0,0,0,3055,3056,3,702,351,0,3056,157,1,0,0,0, - 3057,3058,5,51,0,0,3058,3059,5,161,0,0,3059,3060,5,137,0,0,3060, - 3062,5,835,0,0,3061,3063,3,754,377,0,3062,3061,1,0,0,0,3062,3063, - 1,0,0,0,3063,3064,1,0,0,0,3064,3065,5,883,0,0,3065,159,1,0,0,0,3066, - 3068,5,51,0,0,3067,3069,5,660,0,0,3068,3067,1,0,0,0,3068,3069,1, - 0,0,0,3069,3070,1,0,0,0,3070,3072,5,173,0,0,3071,3073,3,754,377, - 0,3072,3071,1,0,0,0,3072,3073,1,0,0,0,3073,3074,1,0,0,0,3074,3076, - 3,646,323,0,3075,3077,7,42,0,0,3076,3075,1,0,0,0,3076,3077,1,0,0, - 0,3077,161,1,0,0,0,3078,3080,5,51,0,0,3079,3081,5,180,0,0,3080,3079, - 1,0,0,0,3080,3081,1,0,0,0,3081,3082,1,0,0,0,3082,3083,5,658,0,0, - 3083,3089,3,662,331,0,3084,3086,5,380,0,0,3085,3087,5,857,0,0,3086, - 3085,1,0,0,0,3086,3087,1,0,0,0,3087,3088,1,0,0,0,3088,3090,3,688, - 344,0,3089,3084,1,0,0,0,3089,3090,1,0,0,0,3090,163,1,0,0,0,3091, - 3092,5,51,0,0,3092,3094,5,178,0,0,3093,3095,3,754,377,0,3094,3093, - 1,0,0,0,3094,3095,1,0,0,0,3095,3096,1,0,0,0,3096,3097,3,698,349, - 0,3097,165,1,0,0,0,3098,3099,5,51,0,0,3099,3101,5,684,0,0,3100,3102, - 3,754,377,0,3101,3100,1,0,0,0,3101,3102,1,0,0,0,3102,3103,1,0,0, - 0,3103,3108,3,632,316,0,3104,3105,5,868,0,0,3105,3107,3,632,316, - 0,3106,3104,1,0,0,0,3107,3110,1,0,0,0,3108,3106,1,0,0,0,3108,3109, - 1,0,0,0,3109,3112,1,0,0,0,3110,3108,1,0,0,0,3111,3113,7,42,0,0,3112, - 3111,1,0,0,0,3112,3113,1,0,0,0,3113,167,1,0,0,0,3114,3115,5,51,0, - 0,3115,3117,5,582,0,0,3116,3118,3,754,377,0,3117,3116,1,0,0,0,3117, - 3118,1,0,0,0,3118,3119,1,0,0,0,3119,3120,3,650,325,0,3120,169,1, - 0,0,0,3121,3122,5,155,0,0,3122,3123,5,42,0,0,3123,3127,5,582,0,0, - 3124,3128,5,505,0,0,3125,3128,5,7,0,0,3126,3128,3,650,325,0,3127, - 3124,1,0,0,0,3127,3125,1,0,0,0,3127,3126,1,0,0,0,3128,3129,1,0,0, - 0,3129,3130,5,176,0,0,3130,3135,3,652,326,0,3131,3132,5,868,0,0, - 3132,3134,3,652,326,0,3133,3131,1,0,0,0,3134,3137,1,0,0,0,3135,3133, - 1,0,0,0,3135,3136,1,0,0,0,3136,3142,1,0,0,0,3137,3135,1,0,0,0,3138, - 3139,5,155,0,0,3139,3140,5,582,0,0,3140,3142,3,462,231,0,3141,3121, - 1,0,0,0,3141,3138,1,0,0,0,3142,171,1,0,0,0,3143,3144,5,141,0,0,3144, - 3145,5,173,0,0,3145,3150,3,174,87,0,3146,3147,5,868,0,0,3147,3149, - 3,174,87,0,3148,3146,1,0,0,0,3149,3152,1,0,0,0,3150,3148,1,0,0,0, - 3150,3151,1,0,0,0,3151,173,1,0,0,0,3152,3150,1,0,0,0,3153,3154,3, - 648,324,0,3154,3155,5,176,0,0,3155,3156,3,644,322,0,3156,175,1,0, - 0,0,3157,3159,5,668,0,0,3158,3160,5,173,0,0,3159,3158,1,0,0,0,3159, - 3160,1,0,0,0,3160,3161,1,0,0,0,3161,3162,3,648,324,0,3162,177,1, - 0,0,0,3163,3164,5,21,0,0,3164,3171,3,698,349,0,3165,3168,5,866,0, - 0,3166,3169,3,744,372,0,3167,3169,3,736,368,0,3168,3166,1,0,0,0, - 3168,3167,1,0,0,0,3168,3169,1,0,0,0,3169,3170,1,0,0,0,3170,3172, - 5,867,0,0,3171,3165,1,0,0,0,3171,3172,1,0,0,0,3172,179,1,0,0,0,3173, - 3176,3,234,117,0,3174,3176,3,236,118,0,3175,3173,1,0,0,0,3175,3174, - 1,0,0,0,3176,181,1,0,0,0,3177,3178,5,371,0,0,3178,3179,3,736,368, - 0,3179,183,1,0,0,0,3180,3185,3,238,119,0,3181,3185,3,240,120,0,3182, - 3185,3,242,121,0,3183,3185,3,244,122,0,3184,3180,1,0,0,0,3184,3181, - 1,0,0,0,3184,3182,1,0,0,0,3184,3183,1,0,0,0,3185,185,1,0,0,0,3186, - 3188,5,86,0,0,3187,3189,7,43,0,0,3188,3187,1,0,0,0,3188,3189,1,0, - 0,0,3189,3191,1,0,0,0,3190,3192,5,79,0,0,3191,3190,1,0,0,0,3191, - 3192,1,0,0,0,3192,3194,1,0,0,0,3193,3195,5,88,0,0,3194,3193,1,0, - 0,0,3194,3195,1,0,0,0,3195,3196,1,0,0,0,3196,3203,3,648,324,0,3197, - 3198,5,130,0,0,3198,3200,5,866,0,0,3199,3201,3,666,333,0,3200,3199, - 1,0,0,0,3200,3201,1,0,0,0,3201,3202,1,0,0,0,3202,3204,5,867,0,0, - 3203,3197,1,0,0,0,3203,3204,1,0,0,0,3204,3216,1,0,0,0,3205,3207, - 3,262,131,0,3206,3205,1,0,0,0,3206,3207,1,0,0,0,3207,3210,1,0,0, - 0,3208,3211,3,738,369,0,3209,3211,3,190,95,0,3210,3208,1,0,0,0,3210, - 3209,1,0,0,0,3210,3211,1,0,0,0,3211,3213,1,0,0,0,3212,3214,3,188, - 94,0,3213,3212,1,0,0,0,3213,3214,1,0,0,0,3214,3217,1,0,0,0,3215, - 3217,3,226,113,0,3216,3206,1,0,0,0,3216,3215,1,0,0,0,3217,3219,1, - 0,0,0,3218,3220,3,188,94,0,3219,3218,1,0,0,0,3219,3220,1,0,0,0,3220, - 3233,1,0,0,0,3221,3222,5,119,0,0,3222,3223,5,373,0,0,3223,3224,5, - 92,0,0,3224,3225,5,185,0,0,3225,3230,3,228,114,0,3226,3227,5,868, - 0,0,3227,3229,3,228,114,0,3228,3226,1,0,0,0,3229,3232,1,0,0,0,3230, - 3228,1,0,0,0,3230,3231,1,0,0,0,3231,3234,1,0,0,0,3232,3230,1,0,0, - 0,3233,3221,1,0,0,0,3233,3234,1,0,0,0,3234,187,1,0,0,0,3235,3236, - 5,13,0,0,3236,3238,3,702,351,0,3237,3239,3,262,131,0,3238,3237,1, - 0,0,0,3238,3239,1,0,0,0,3239,189,1,0,0,0,3240,3245,3,204,102,0,3241, - 3242,5,173,0,0,3242,3245,3,648,324,0,3243,3245,3,224,112,0,3244, - 3240,1,0,0,0,3244,3241,1,0,0,0,3244,3243,1,0,0,0,3245,191,1,0,0, - 0,3246,3252,3,194,97,0,3247,3249,5,828,0,0,3248,3250,7,44,0,0,3249, - 3248,1,0,0,0,3249,3250,1,0,0,0,3250,3251,1,0,0,0,3251,3253,3,194, - 97,0,3252,3247,1,0,0,0,3253,3254,1,0,0,0,3254,3252,1,0,0,0,3254, - 3255,1,0,0,0,3255,193,1,0,0,0,3256,3258,5,866,0,0,3257,3256,1,0, - 0,0,3257,3258,1,0,0,0,3258,3259,1,0,0,0,3259,3261,3,274,137,0,3260, - 3262,5,867,0,0,3261,3260,1,0,0,0,3261,3262,1,0,0,0,3262,195,1,0, - 0,0,3263,3264,5,103,0,0,3264,3266,5,360,0,0,3265,3267,7,45,0,0,3266, - 3265,1,0,0,0,3266,3267,1,0,0,0,3267,3269,1,0,0,0,3268,3270,5,450, - 0,0,3269,3268,1,0,0,0,3269,3270,1,0,0,0,3270,3271,1,0,0,0,3271,3272, - 5,83,0,0,3272,3274,5,882,0,0,3273,3275,7,6,0,0,3274,3273,1,0,0,0, - 3274,3275,1,0,0,0,3275,3276,1,0,0,0,3276,3277,5,88,0,0,3277,3278, - 5,173,0,0,3278,3284,3,648,324,0,3279,3280,5,130,0,0,3280,3281,5, - 866,0,0,3281,3282,3,666,333,0,3282,3283,5,867,0,0,3283,3285,1,0, - 0,0,3284,3279,1,0,0,0,3284,3285,1,0,0,0,3285,3289,1,0,0,0,3286,3287, - 5,26,0,0,3287,3288,5,155,0,0,3288,3290,3,684,342,0,3289,3286,1,0, - 0,0,3289,3290,1,0,0,0,3290,3297,1,0,0,0,3291,3293,7,46,0,0,3292, - 3294,3,298,149,0,3293,3292,1,0,0,0,3294,3295,1,0,0,0,3295,3293,1, - 0,0,0,3295,3296,1,0,0,0,3296,3298,1,0,0,0,3297,3291,1,0,0,0,3297, - 3298,1,0,0,0,3298,3305,1,0,0,0,3299,3301,5,102,0,0,3300,3302,3,300, - 150,0,3301,3300,1,0,0,0,3302,3303,1,0,0,0,3303,3301,1,0,0,0,3303, - 3304,1,0,0,0,3304,3306,1,0,0,0,3305,3299,1,0,0,0,3305,3306,1,0,0, - 0,3306,3311,1,0,0,0,3307,3308,5,79,0,0,3308,3309,3,708,354,0,3309, - 3310,7,47,0,0,3310,3312,1,0,0,0,3311,3307,1,0,0,0,3311,3312,1,0, - 0,0,3312,3324,1,0,0,0,3313,3314,5,866,0,0,3314,3319,3,230,115,0, - 3315,3316,5,868,0,0,3316,3318,3,230,115,0,3317,3315,1,0,0,0,3318, - 3321,1,0,0,0,3319,3317,1,0,0,0,3319,3320,1,0,0,0,3320,3322,1,0,0, - 0,3321,3319,1,0,0,0,3322,3323,5,867,0,0,3323,3325,1,0,0,0,3324,3313, - 1,0,0,0,3324,3325,1,0,0,0,3325,3335,1,0,0,0,3326,3327,5,155,0,0, - 3327,3332,3,228,114,0,3328,3329,5,868,0,0,3329,3331,3,228,114,0, - 3330,3328,1,0,0,0,3331,3334,1,0,0,0,3332,3330,1,0,0,0,3332,3333, - 1,0,0,0,3333,3336,1,0,0,0,3334,3332,1,0,0,0,3335,3326,1,0,0,0,3335, - 3336,1,0,0,0,3336,197,1,0,0,0,3337,3338,5,103,0,0,3338,3340,5,695, - 0,0,3339,3341,7,45,0,0,3340,3339,1,0,0,0,3340,3341,1,0,0,0,3341, - 3343,1,0,0,0,3342,3344,5,450,0,0,3343,3342,1,0,0,0,3343,3344,1,0, - 0,0,3344,3345,1,0,0,0,3345,3346,5,83,0,0,3346,3348,5,882,0,0,3347, - 3349,7,6,0,0,3348,3347,1,0,0,0,3348,3349,1,0,0,0,3349,3350,1,0,0, - 0,3350,3351,5,88,0,0,3351,3352,5,173,0,0,3352,3356,3,648,324,0,3353, - 3354,5,26,0,0,3354,3355,5,155,0,0,3355,3357,3,684,342,0,3356,3353, - 1,0,0,0,3356,3357,1,0,0,0,3357,3368,1,0,0,0,3358,3359,5,587,0,0, - 3359,3360,5,423,0,0,3360,3362,5,20,0,0,3361,3363,5,859,0,0,3362, - 3361,1,0,0,0,3362,3363,1,0,0,0,3363,3364,1,0,0,0,3364,3366,5,882, - 0,0,3365,3367,5,858,0,0,3366,3365,1,0,0,0,3366,3367,1,0,0,0,3367, - 3369,1,0,0,0,3368,3358,1,0,0,0,3368,3369,1,0,0,0,3369,3374,1,0,0, - 0,3370,3371,5,79,0,0,3371,3372,3,708,354,0,3372,3373,7,47,0,0,3373, - 3375,1,0,0,0,3374,3370,1,0,0,0,3374,3375,1,0,0,0,3375,3387,1,0,0, - 0,3376,3377,5,866,0,0,3377,3382,3,230,115,0,3378,3379,5,868,0,0, - 3379,3381,3,230,115,0,3380,3378,1,0,0,0,3381,3384,1,0,0,0,3382,3380, - 1,0,0,0,3382,3383,1,0,0,0,3383,3385,1,0,0,0,3384,3382,1,0,0,0,3385, - 3386,5,867,0,0,3386,3388,1,0,0,0,3387,3376,1,0,0,0,3387,3388,1,0, - 0,0,3388,3398,1,0,0,0,3389,3390,5,155,0,0,3390,3395,3,228,114,0, - 3391,3392,5,868,0,0,3392,3394,3,228,114,0,3393,3391,1,0,0,0,3394, - 3397,1,0,0,0,3395,3393,1,0,0,0,3395,3396,1,0,0,0,3396,3399,1,0,0, - 0,3397,3395,1,0,0,0,3398,3389,1,0,0,0,3398,3399,1,0,0,0,3399,199, - 1,0,0,0,3400,3401,5,866,0,0,3401,3403,3,218,109,0,3402,3404,3,252, - 126,0,3403,3402,1,0,0,0,3403,3404,1,0,0,0,3404,3406,1,0,0,0,3405, - 3407,3,312,156,0,3406,3405,1,0,0,0,3406,3407,1,0,0,0,3407,3408,1, - 0,0,0,3408,3410,5,867,0,0,3409,3411,3,252,126,0,3410,3409,1,0,0, - 0,3410,3411,1,0,0,0,3411,3413,1,0,0,0,3412,3414,3,312,156,0,3413, - 3412,1,0,0,0,3413,3414,1,0,0,0,3414,3416,1,0,0,0,3415,3417,3,296, - 148,0,3416,3415,1,0,0,0,3416,3417,1,0,0,0,3417,201,1,0,0,0,3418, - 3420,5,143,0,0,3419,3421,7,48,0,0,3420,3419,1,0,0,0,3420,3421,1, - 0,0,0,3421,3423,1,0,0,0,3422,3424,5,88,0,0,3423,3422,1,0,0,0,3423, - 3424,1,0,0,0,3424,3425,1,0,0,0,3425,3431,3,648,324,0,3426,3427,5, - 130,0,0,3427,3428,5,866,0,0,3428,3429,3,666,333,0,3429,3430,5,867, - 0,0,3430,3432,1,0,0,0,3431,3426,1,0,0,0,3431,3432,1,0,0,0,3432,3441, - 1,0,0,0,3433,3434,5,866,0,0,3434,3435,3,656,328,0,3435,3436,5,867, - 0,0,3436,3438,1,0,0,0,3437,3433,1,0,0,0,3437,3438,1,0,0,0,3438,3439, - 1,0,0,0,3439,3442,3,222,111,0,3440,3442,3,226,113,0,3441,3437,1, - 0,0,0,3441,3440,1,0,0,0,3442,203,1,0,0,0,3443,3447,3,274,137,0,3444, - 3446,3,276,138,0,3445,3444,1,0,0,0,3446,3449,1,0,0,0,3447,3445,1, - 0,0,0,3447,3448,1,0,0,0,3448,3458,1,0,0,0,3449,3447,1,0,0,0,3450, - 3452,5,181,0,0,3451,3453,7,44,0,0,3452,3451,1,0,0,0,3452,3453,1, - 0,0,0,3453,3456,1,0,0,0,3454,3457,3,274,137,0,3455,3457,3,272,136, - 0,3456,3454,1,0,0,0,3456,3455,1,0,0,0,3457,3459,1,0,0,0,3458,3450, - 1,0,0,0,3458,3459,1,0,0,0,3459,3464,1,0,0,0,3460,3461,5,868,0,0, - 3461,3463,3,278,139,0,3462,3460,1,0,0,0,3463,3466,1,0,0,0,3464,3462, - 1,0,0,0,3464,3465,1,0,0,0,3465,3468,1,0,0,0,3466,3464,1,0,0,0,3467, - 3469,3,252,126,0,3468,3467,1,0,0,0,3468,3469,1,0,0,0,3469,3471,1, - 0,0,0,3470,3472,3,312,156,0,3471,3470,1,0,0,0,3471,3472,1,0,0,0, - 3472,3474,1,0,0,0,3473,3475,3,232,116,0,3474,3473,1,0,0,0,3474,3475, - 1,0,0,0,3475,3477,1,0,0,0,3476,3478,3,296,148,0,3477,3476,1,0,0, - 0,3477,3478,1,0,0,0,3478,3503,1,0,0,0,3479,3483,3,272,136,0,3480, - 3482,3,276,138,0,3481,3480,1,0,0,0,3482,3485,1,0,0,0,3483,3481,1, - 0,0,0,3483,3484,1,0,0,0,3484,3491,1,0,0,0,3485,3483,1,0,0,0,3486, - 3488,5,181,0,0,3487,3489,7,44,0,0,3488,3487,1,0,0,0,3488,3489,1, - 0,0,0,3489,3490,1,0,0,0,3490,3492,3,272,136,0,3491,3486,1,0,0,0, - 3491,3492,1,0,0,0,3492,3494,1,0,0,0,3493,3495,3,252,126,0,3494,3493, - 1,0,0,0,3494,3495,1,0,0,0,3495,3497,1,0,0,0,3496,3498,3,312,156, - 0,3497,3496,1,0,0,0,3497,3498,1,0,0,0,3498,3500,1,0,0,0,3499,3501, - 3,232,116,0,3500,3499,1,0,0,0,3500,3501,1,0,0,0,3501,3503,1,0,0, - 0,3502,3443,1,0,0,0,3502,3479,1,0,0,0,3503,205,1,0,0,0,3504,3506, - 3,46,23,0,3505,3504,1,0,0,0,3505,3506,1,0,0,0,3506,3507,1,0,0,0, - 3507,3509,3,208,104,0,3508,3510,3,252,126,0,3509,3508,1,0,0,0,3509, - 3510,1,0,0,0,3510,3512,1,0,0,0,3511,3513,3,312,156,0,3512,3511,1, - 0,0,0,3512,3513,1,0,0,0,3513,3515,1,0,0,0,3514,3516,3,296,148,0, - 3515,3514,1,0,0,0,3515,3516,1,0,0,0,3516,207,1,0,0,0,3517,3518,6, - 104,-1,0,3518,3519,3,210,105,0,3519,3534,1,0,0,0,3520,3521,10,2, - 0,0,3521,3523,5,181,0,0,3522,3524,7,44,0,0,3523,3522,1,0,0,0,3523, - 3524,1,0,0,0,3524,3525,1,0,0,0,3525,3533,3,210,105,0,3526,3527,10, - 1,0,0,3527,3529,5,59,0,0,3528,3530,7,44,0,0,3529,3528,1,0,0,0,3529, - 3530,1,0,0,0,3530,3531,1,0,0,0,3531,3533,3,210,105,0,3532,3520,1, - 0,0,0,3532,3526,1,0,0,0,3533,3536,1,0,0,0,3534,3532,1,0,0,0,3534, - 3535,1,0,0,0,3535,209,1,0,0,0,3536,3534,1,0,0,0,3537,3538,6,105, - -1,0,3538,3539,3,212,106,0,3539,3548,1,0,0,0,3540,3541,10,1,0,0, - 3541,3543,5,828,0,0,3542,3544,7,44,0,0,3543,3542,1,0,0,0,3543,3544, - 1,0,0,0,3544,3545,1,0,0,0,3545,3547,3,212,106,0,3546,3540,1,0,0, - 0,3547,3550,1,0,0,0,3548,3546,1,0,0,0,3548,3549,1,0,0,0,3549,211, - 1,0,0,0,3550,3548,1,0,0,0,3551,3566,3,220,110,0,3552,3553,5,866, - 0,0,3553,3555,3,208,104,0,3554,3556,3,252,126,0,3555,3554,1,0,0, - 0,3555,3556,1,0,0,0,3556,3558,1,0,0,0,3557,3559,3,312,156,0,3558, - 3557,1,0,0,0,3558,3559,1,0,0,0,3559,3561,1,0,0,0,3560,3562,3,296, - 148,0,3561,3560,1,0,0,0,3561,3562,1,0,0,0,3562,3563,1,0,0,0,3563, - 3564,5,867,0,0,3564,3566,1,0,0,0,3565,3551,1,0,0,0,3565,3552,1,0, - 0,0,3566,213,1,0,0,0,3567,3570,3,248,124,0,3568,3570,3,250,125,0, - 3569,3567,1,0,0,0,3569,3568,1,0,0,0,3570,215,1,0,0,0,3571,3575,3, - 224,112,0,3572,3573,5,125,0,0,3573,3574,5,20,0,0,3574,3576,3,670, - 335,0,3575,3572,1,0,0,0,3575,3576,1,0,0,0,3576,3579,1,0,0,0,3577, - 3578,5,100,0,0,3578,3580,3,314,157,0,3579,3577,1,0,0,0,3579,3580, - 1,0,0,0,3580,217,1,0,0,0,3581,3586,3,220,110,0,3582,3583,7,49,0, - 0,3583,3585,3,220,110,0,3584,3582,1,0,0,0,3585,3588,1,0,0,0,3586, - 3584,1,0,0,0,3586,3587,1,0,0,0,3587,3590,1,0,0,0,3588,3586,1,0,0, - 0,3589,3591,3,252,126,0,3590,3589,1,0,0,0,3590,3591,1,0,0,0,3591, - 3593,1,0,0,0,3592,3594,3,312,156,0,3593,3592,1,0,0,0,3593,3594,1, - 0,0,0,3594,3596,1,0,0,0,3595,3597,3,296,148,0,3596,3595,1,0,0,0, - 3596,3597,1,0,0,0,3597,219,1,0,0,0,3598,3602,3,204,102,0,3599,3602, - 3,614,307,0,3600,3602,3,216,108,0,3601,3598,1,0,0,0,3601,3599,1, - 0,0,0,3601,3600,1,0,0,0,3602,221,1,0,0,0,3603,3609,3,204,102,0,3604, - 3605,5,173,0,0,3605,3609,3,648,324,0,3606,3609,3,738,369,0,3607, - 3609,3,224,112,0,3608,3603,1,0,0,0,3608,3604,1,0,0,0,3608,3606,1, - 0,0,0,3608,3607,1,0,0,0,3609,223,1,0,0,0,3610,3611,5,189,0,0,3611, - 3612,5,586,0,0,3612,3618,3,740,370,0,3613,3614,5,868,0,0,3614,3615, - 5,586,0,0,3615,3617,3,740,370,0,3616,3613,1,0,0,0,3617,3620,1,0, - 0,0,3618,3616,1,0,0,0,3618,3619,1,0,0,0,3619,225,1,0,0,0,3620,3618, - 1,0,0,0,3621,3622,5,155,0,0,3622,3627,3,228,114,0,3623,3624,5,868, - 0,0,3624,3626,3,228,114,0,3625,3623,1,0,0,0,3626,3629,1,0,0,0,3627, - 3625,1,0,0,0,3627,3628,1,0,0,0,3628,227,1,0,0,0,3629,3627,1,0,0, - 0,3630,3631,3,658,329,0,3631,3632,5,857,0,0,3632,3633,3,742,371, - 0,3633,229,1,0,0,0,3634,3637,3,702,351,0,3635,3637,5,892,0,0,3636, - 3634,1,0,0,0,3636,3635,1,0,0,0,3637,231,1,0,0,0,3638,3639,5,65,0, - 0,3639,3649,7,50,0,0,3640,3641,5,510,0,0,3641,3646,3,648,324,0,3642, - 3643,5,868,0,0,3643,3645,3,648,324,0,3644,3642,1,0,0,0,3645,3648, - 1,0,0,0,3646,3644,1,0,0,0,3646,3647,1,0,0,0,3647,3650,1,0,0,0,3648, - 3646,1,0,0,0,3649,3640,1,0,0,0,3649,3650,1,0,0,0,3650,3653,1,0,0, - 0,3651,3652,7,51,0,0,3652,3654,5,105,0,0,3653,3651,1,0,0,0,3653, - 3654,1,0,0,0,3654,3660,1,0,0,0,3655,3656,5,104,0,0,3656,3657,5,80, - 0,0,3657,3658,5,594,0,0,3658,3660,5,491,0,0,3659,3638,1,0,0,0,3659, - 3655,1,0,0,0,3660,233,1,0,0,0,3661,3663,5,44,0,0,3662,3664,5,107, - 0,0,3663,3662,1,0,0,0,3663,3664,1,0,0,0,3664,3666,1,0,0,0,3665,3667, - 5,549,0,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0,3667,3669,1,0,0,0, - 3668,3670,5,79,0,0,3669,3668,1,0,0,0,3669,3670,1,0,0,0,3670,3671, - 1,0,0,0,3671,3672,5,68,0,0,3672,3677,3,648,324,0,3673,3675,5,13, - 0,0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3678, - 3,702,351,0,3677,3674,1,0,0,0,3677,3678,1,0,0,0,3678,3684,1,0,0, - 0,3679,3680,5,130,0,0,3680,3681,5,866,0,0,3681,3682,3,666,333,0, - 3682,3683,5,867,0,0,3683,3685,1,0,0,0,3684,3679,1,0,0,0,3684,3685, - 1,0,0,0,3685,3688,1,0,0,0,3686,3687,5,192,0,0,3687,3689,3,800,400, - 0,3688,3686,1,0,0,0,3688,3689,1,0,0,0,3689,3691,1,0,0,0,3690,3692, - 3,252,126,0,3691,3690,1,0,0,0,3691,3692,1,0,0,0,3692,3695,1,0,0, - 0,3693,3694,5,100,0,0,3694,3696,3,314,157,0,3695,3693,1,0,0,0,3695, - 3696,1,0,0,0,3696,235,1,0,0,0,3697,3699,5,44,0,0,3698,3700,5,107, - 0,0,3699,3698,1,0,0,0,3699,3700,1,0,0,0,3700,3702,1,0,0,0,3701,3703, - 5,549,0,0,3702,3701,1,0,0,0,3702,3703,1,0,0,0,3703,3705,1,0,0,0, - 3704,3706,5,79,0,0,3705,3704,1,0,0,0,3705,3706,1,0,0,0,3706,3746, - 1,0,0,0,3707,3710,3,648,324,0,3708,3709,5,865,0,0,3709,3711,5,850, - 0,0,3710,3708,1,0,0,0,3710,3711,1,0,0,0,3711,3720,1,0,0,0,3712,3713, - 5,868,0,0,3713,3716,3,648,324,0,3714,3715,5,865,0,0,3715,3717,5, - 850,0,0,3716,3714,1,0,0,0,3716,3717,1,0,0,0,3717,3719,1,0,0,0,3718, - 3712,1,0,0,0,3719,3722,1,0,0,0,3720,3718,1,0,0,0,3720,3721,1,0,0, - 0,3721,3723,1,0,0,0,3722,3720,1,0,0,0,3723,3724,5,68,0,0,3724,3725, - 3,256,128,0,3725,3747,1,0,0,0,3726,3727,5,68,0,0,3727,3730,3,648, - 324,0,3728,3729,5,865,0,0,3729,3731,5,850,0,0,3730,3728,1,0,0,0, - 3730,3731,1,0,0,0,3731,3740,1,0,0,0,3732,3733,5,868,0,0,3733,3736, - 3,648,324,0,3734,3735,5,865,0,0,3735,3737,5,850,0,0,3736,3734,1, - 0,0,0,3736,3737,1,0,0,0,3737,3739,1,0,0,0,3738,3732,1,0,0,0,3739, - 3742,1,0,0,0,3740,3738,1,0,0,0,3740,3741,1,0,0,0,3741,3743,1,0,0, - 0,3742,3740,1,0,0,0,3743,3744,5,188,0,0,3744,3745,3,256,128,0,3745, - 3747,1,0,0,0,3746,3707,1,0,0,0,3746,3726,1,0,0,0,3747,3750,1,0,0, - 0,3748,3749,5,192,0,0,3749,3751,3,800,400,0,3750,3748,1,0,0,0,3750, - 3751,1,0,0,0,3751,237,1,0,0,0,3752,3753,5,417,0,0,3753,3754,3,648, - 324,0,3754,3759,5,516,0,0,3755,3757,5,13,0,0,3756,3755,1,0,0,0,3756, - 3757,1,0,0,0,3757,3758,1,0,0,0,3758,3760,3,702,351,0,3759,3756,1, - 0,0,0,3759,3760,1,0,0,0,3760,239,1,0,0,0,3761,3762,5,417,0,0,3762, - 3763,3,648,324,0,3763,3764,5,135,0,0,3764,3771,3,638,319,0,3765, - 3766,3,810,405,0,3766,3767,5,866,0,0,3767,3768,3,744,372,0,3768, - 3769,5,867,0,0,3769,3772,1,0,0,0,3770,3772,7,52,0,0,3771,3765,1, - 0,0,0,3771,3770,1,0,0,0,3772,3775,1,0,0,0,3773,3774,5,192,0,0,3774, - 3776,3,800,400,0,3775,3773,1,0,0,0,3775,3776,1,0,0,0,3776,3779,1, - 0,0,0,3777,3778,5,100,0,0,3778,3780,3,314,157,0,3779,3777,1,0,0, - 0,3779,3780,1,0,0,0,3780,241,1,0,0,0,3781,3782,5,417,0,0,3782,3783, - 3,648,324,0,3783,3784,5,135,0,0,3784,3787,7,53,0,0,3785,3786,5,192, - 0,0,3786,3788,3,800,400,0,3787,3785,1,0,0,0,3787,3788,1,0,0,0,3788, - 3791,1,0,0,0,3789,3790,5,100,0,0,3790,3792,3,314,157,0,3791,3789, - 1,0,0,0,3791,3792,1,0,0,0,3792,243,1,0,0,0,3793,3794,5,417,0,0,3794, - 3795,3,648,324,0,3795,3796,5,334,0,0,3796,245,1,0,0,0,3797,3798, - 5,425,0,0,3798,3799,5,173,0,0,3799,3800,5,68,0,0,3800,3805,3,712, - 356,0,3801,3802,5,868,0,0,3802,3804,3,712,356,0,3803,3801,1,0,0, - 0,3804,3807,1,0,0,0,3805,3803,1,0,0,0,3805,3806,1,0,0,0,3806,247, - 1,0,0,0,3807,3805,1,0,0,0,3808,3810,5,185,0,0,3809,3811,5,107,0, - 0,3810,3809,1,0,0,0,3810,3811,1,0,0,0,3811,3813,1,0,0,0,3812,3814, - 5,79,0,0,3813,3812,1,0,0,0,3813,3814,1,0,0,0,3814,3815,1,0,0,0,3815, - 3820,3,648,324,0,3816,3818,5,13,0,0,3817,3816,1,0,0,0,3817,3818, - 1,0,0,0,3818,3819,1,0,0,0,3819,3821,3,702,351,0,3820,3817,1,0,0, - 0,3820,3821,1,0,0,0,3821,3822,1,0,0,0,3822,3823,5,155,0,0,3823,3828, - 3,228,114,0,3824,3825,5,868,0,0,3825,3827,3,228,114,0,3826,3824, - 1,0,0,0,3827,3830,1,0,0,0,3828,3826,1,0,0,0,3828,3829,1,0,0,0,3829, - 3833,1,0,0,0,3830,3828,1,0,0,0,3831,3832,5,192,0,0,3832,3834,3,800, - 400,0,3833,3831,1,0,0,0,3833,3834,1,0,0,0,3834,3836,1,0,0,0,3835, - 3837,3,252,126,0,3836,3835,1,0,0,0,3836,3837,1,0,0,0,3837,3839,1, - 0,0,0,3838,3840,3,312,156,0,3839,3838,1,0,0,0,3839,3840,1,0,0,0, - 3840,249,1,0,0,0,3841,3843,5,185,0,0,3842,3844,5,107,0,0,3843,3842, - 1,0,0,0,3843,3844,1,0,0,0,3844,3846,1,0,0,0,3845,3847,5,79,0,0,3846, - 3845,1,0,0,0,3846,3847,1,0,0,0,3847,3848,1,0,0,0,3848,3849,3,256, - 128,0,3849,3850,5,155,0,0,3850,3855,3,228,114,0,3851,3852,5,868, - 0,0,3852,3854,3,228,114,0,3853,3851,1,0,0,0,3854,3857,1,0,0,0,3855, - 3853,1,0,0,0,3855,3856,1,0,0,0,3856,3860,1,0,0,0,3857,3855,1,0,0, - 0,3858,3859,5,192,0,0,3859,3861,3,800,400,0,3860,3858,1,0,0,0,3860, - 3861,1,0,0,0,3861,251,1,0,0,0,3862,3863,5,125,0,0,3863,3864,5,20, - 0,0,3864,3869,3,254,127,0,3865,3866,5,868,0,0,3866,3868,3,254,127, - 0,3867,3865,1,0,0,0,3868,3871,1,0,0,0,3869,3867,1,0,0,0,3869,3870, - 1,0,0,0,3870,253,1,0,0,0,3871,3869,1,0,0,0,3872,3874,3,800,400,0, - 3873,3875,7,54,0,0,3874,3873,1,0,0,0,3874,3875,1,0,0,0,3875,255, - 1,0,0,0,3876,3881,3,258,129,0,3877,3878,5,868,0,0,3878,3880,3,258, - 129,0,3879,3877,1,0,0,0,3880,3883,1,0,0,0,3881,3879,1,0,0,0,3881, - 3882,1,0,0,0,3882,257,1,0,0,0,3883,3881,1,0,0,0,3884,3888,3,260, - 130,0,3885,3887,3,268,134,0,3886,3885,1,0,0,0,3887,3890,1,0,0,0, - 3888,3886,1,0,0,0,3888,3889,1,0,0,0,3889,3903,1,0,0,0,3890,3888, - 1,0,0,0,3891,3892,5,866,0,0,3892,3896,3,260,130,0,3893,3895,3,268, - 134,0,3894,3893,1,0,0,0,3895,3898,1,0,0,0,3896,3894,1,0,0,0,3896, - 3897,1,0,0,0,3897,3899,1,0,0,0,3898,3896,1,0,0,0,3899,3900,5,867, - 0,0,3900,3903,1,0,0,0,3901,3903,3,280,140,0,3902,3884,1,0,0,0,3902, - 3891,1,0,0,0,3902,3901,1,0,0,0,3903,259,1,0,0,0,3904,3910,3,648, - 324,0,3905,3906,5,130,0,0,3906,3907,5,866,0,0,3907,3908,3,666,333, - 0,3908,3909,5,867,0,0,3909,3911,1,0,0,0,3910,3905,1,0,0,0,3910,3911, - 1,0,0,0,3911,3916,1,0,0,0,3912,3914,5,13,0,0,3913,3912,1,0,0,0,3913, - 3914,1,0,0,0,3914,3915,1,0,0,0,3915,3917,3,702,351,0,3916,3913,1, - 0,0,0,3916,3917,1,0,0,0,3917,3926,1,0,0,0,3918,3923,3,264,132,0, - 3919,3920,5,868,0,0,3920,3922,3,264,132,0,3921,3919,1,0,0,0,3922, - 3925,1,0,0,0,3923,3921,1,0,0,0,3923,3924,1,0,0,0,3924,3927,1,0,0, - 0,3925,3923,1,0,0,0,3926,3918,1,0,0,0,3926,3927,1,0,0,0,3927,3950, - 1,0,0,0,3928,3930,5,95,0,0,3929,3928,1,0,0,0,3929,3930,1,0,0,0,3930, - 3936,1,0,0,0,3931,3937,3,204,102,0,3932,3933,5,866,0,0,3933,3934, - 3,204,102,0,3934,3935,5,867,0,0,3935,3937,1,0,0,0,3936,3931,1,0, - 0,0,3936,3932,1,0,0,0,3937,3939,1,0,0,0,3938,3940,5,13,0,0,3939, - 3938,1,0,0,0,3939,3940,1,0,0,0,3940,3941,1,0,0,0,3941,3943,3,702, - 351,0,3942,3944,3,262,131,0,3943,3942,1,0,0,0,3943,3944,1,0,0,0, - 3944,3950,1,0,0,0,3945,3946,5,866,0,0,3946,3947,3,256,128,0,3947, - 3948,5,867,0,0,3948,3950,1,0,0,0,3949,3904,1,0,0,0,3949,3929,1,0, - 0,0,3949,3945,1,0,0,0,3950,261,1,0,0,0,3951,3952,5,866,0,0,3952, - 3953,3,656,328,0,3953,3954,5,867,0,0,3954,263,1,0,0,0,3955,3956, - 7,55,0,0,3956,3959,7,18,0,0,3957,3958,5,65,0,0,3958,3960,3,266,133, - 0,3959,3957,1,0,0,0,3959,3960,1,0,0,0,3960,3961,1,0,0,0,3961,3963, - 5,866,0,0,3962,3964,3,636,318,0,3963,3962,1,0,0,0,3963,3964,1,0, - 0,0,3964,3965,1,0,0,0,3965,3966,5,867,0,0,3966,265,1,0,0,0,3967, - 3973,5,91,0,0,3968,3969,5,125,0,0,3969,3973,5,20,0,0,3970,3971,5, - 74,0,0,3971,3973,5,20,0,0,3972,3967,1,0,0,0,3972,3968,1,0,0,0,3972, - 3970,1,0,0,0,3973,267,1,0,0,0,3974,3976,7,56,0,0,3975,3974,1,0,0, - 0,3975,3976,1,0,0,0,3976,3977,1,0,0,0,3977,3979,5,91,0,0,3978,3980, - 5,95,0,0,3979,3978,1,0,0,0,3979,3980,1,0,0,0,3980,3981,1,0,0,0,3981, - 3985,3,260,130,0,3982,3984,3,270,135,0,3983,3982,1,0,0,0,3984,3987, - 1,0,0,0,3985,3983,1,0,0,0,3985,3986,1,0,0,0,3986,4024,1,0,0,0,3987, - 3985,1,0,0,0,3988,3989,5,172,0,0,3989,3993,3,260,130,0,3990,3992, - 3,270,135,0,3991,3990,1,0,0,0,3992,3995,1,0,0,0,3993,3991,1,0,0, - 0,3993,3994,1,0,0,0,3994,4024,1,0,0,0,3995,3993,1,0,0,0,3996,3998, - 7,57,0,0,3997,3999,5,127,0,0,3998,3997,1,0,0,0,3998,3999,1,0,0,0, - 3999,4000,1,0,0,0,4000,4002,5,91,0,0,4001,4003,5,95,0,0,4002,4001, - 1,0,0,0,4002,4003,1,0,0,0,4003,4004,1,0,0,0,4004,4008,3,260,130, - 0,4005,4007,3,270,135,0,4006,4005,1,0,0,0,4007,4010,1,0,0,0,4008, - 4006,1,0,0,0,4008,4009,1,0,0,0,4009,4024,1,0,0,0,4010,4008,1,0,0, - 0,4011,4019,5,113,0,0,4012,4015,5,84,0,0,4013,4015,7,57,0,0,4014, - 4012,1,0,0,0,4014,4013,1,0,0,0,4015,4017,1,0,0,0,4016,4018,5,127, - 0,0,4017,4016,1,0,0,0,4017,4018,1,0,0,0,4018,4020,1,0,0,0,4019,4014, - 1,0,0,0,4019,4020,1,0,0,0,4020,4021,1,0,0,0,4021,4022,5,91,0,0,4022, - 4024,3,260,130,0,4023,3975,1,0,0,0,4023,3988,1,0,0,0,4023,3996,1, - 0,0,0,4023,4011,1,0,0,0,4024,269,1,0,0,0,4025,4026,5,119,0,0,4026, - 4033,3,800,400,0,4027,4028,5,188,0,0,4028,4029,5,866,0,0,4029,4030, - 3,656,328,0,4030,4031,5,867,0,0,4031,4033,1,0,0,0,4032,4025,1,0, - 0,0,4032,4027,1,0,0,0,4033,271,1,0,0,0,4034,4035,5,866,0,0,4035, - 4036,3,274,137,0,4036,4037,5,867,0,0,4037,4043,1,0,0,0,4038,4039, - 5,866,0,0,4039,4040,3,272,136,0,4040,4041,5,867,0,0,4041,4043,1, - 0,0,0,4042,4034,1,0,0,0,4042,4038,1,0,0,0,4043,273,1,0,0,0,4044, - 4048,5,154,0,0,4045,4047,3,290,145,0,4046,4045,1,0,0,0,4047,4050, - 1,0,0,0,4048,4046,1,0,0,0,4048,4049,1,0,0,0,4049,4051,1,0,0,0,4050, - 4048,1,0,0,0,4051,4053,3,292,146,0,4052,4054,3,296,148,0,4053,4052, - 1,0,0,0,4053,4054,1,0,0,0,4054,4055,1,0,0,0,4055,4057,3,302,151, - 0,4056,4058,3,304,152,0,4057,4056,1,0,0,0,4057,4058,1,0,0,0,4058, - 4060,1,0,0,0,4059,4061,3,306,153,0,4060,4059,1,0,0,0,4060,4061,1, - 0,0,0,4061,4063,1,0,0,0,4062,4064,3,308,154,0,4063,4062,1,0,0,0, - 4063,4064,1,0,0,0,4064,4066,1,0,0,0,4065,4067,3,252,126,0,4066,4065, - 1,0,0,0,4066,4067,1,0,0,0,4067,4069,1,0,0,0,4068,4070,3,312,156, - 0,4069,4068,1,0,0,0,4069,4070,1,0,0,0,4070,4072,1,0,0,0,4071,4073, - 3,296,148,0,4072,4071,1,0,0,0,4072,4073,1,0,0,0,4073,275,1,0,0,0, - 4074,4076,5,181,0,0,4075,4077,7,44,0,0,4076,4075,1,0,0,0,4076,4077, - 1,0,0,0,4077,4080,1,0,0,0,4078,4081,3,274,137,0,4079,4081,3,272, - 136,0,4080,4078,1,0,0,0,4080,4079,1,0,0,0,4081,277,1,0,0,0,4082, - 4097,5,95,0,0,4083,4098,3,274,137,0,4084,4098,3,272,136,0,4085,4088, - 5,866,0,0,4086,4089,3,274,137,0,4087,4089,3,272,136,0,4088,4086, - 1,0,0,0,4088,4087,1,0,0,0,4089,4090,1,0,0,0,4090,4095,5,867,0,0, - 4091,4093,5,13,0,0,4092,4091,1,0,0,0,4092,4093,1,0,0,0,4093,4094, - 1,0,0,0,4094,4096,3,702,351,0,4095,4092,1,0,0,0,4095,4096,1,0,0, - 0,4096,4098,1,0,0,0,4097,4083,1,0,0,0,4097,4084,1,0,0,0,4097,4085, - 1,0,0,0,4098,279,1,0,0,0,4099,4100,5,253,0,0,4100,4101,5,866,0,0, - 4101,4102,5,882,0,0,4102,4103,5,868,0,0,4103,4104,5,882,0,0,4104, - 4105,5,337,0,0,4105,4106,5,866,0,0,4106,4107,3,282,141,0,4107,4108, - 5,867,0,0,4108,4113,5,867,0,0,4109,4111,5,13,0,0,4110,4109,1,0,0, - 0,4110,4111,1,0,0,0,4111,4112,1,0,0,0,4112,4114,3,702,351,0,4113, - 4110,1,0,0,0,4113,4114,1,0,0,0,4114,281,1,0,0,0,4115,4120,3,284, - 142,0,4116,4117,5,868,0,0,4117,4119,3,284,142,0,4118,4116,1,0,0, - 0,4119,4122,1,0,0,0,4120,4118,1,0,0,0,4120,4121,1,0,0,0,4121,283, - 1,0,0,0,4122,4120,1,0,0,0,4123,4140,3,658,329,0,4124,4125,5,65,0, - 0,4125,4141,5,256,0,0,4126,4138,3,722,361,0,4127,4128,5,257,0,0, - 4128,4130,5,882,0,0,4129,4131,3,286,143,0,4130,4129,1,0,0,0,4130, - 4131,1,0,0,0,4131,4133,1,0,0,0,4132,4134,3,288,144,0,4133,4132,1, - 0,0,0,4133,4134,1,0,0,0,4134,4139,1,0,0,0,4135,4136,5,60,0,0,4136, - 4137,5,257,0,0,4137,4139,5,882,0,0,4138,4127,1,0,0,0,4138,4135,1, - 0,0,0,4139,4141,1,0,0,0,4140,4124,1,0,0,0,4140,4126,1,0,0,0,4141, - 4153,1,0,0,0,4142,4144,5,255,0,0,4143,4145,5,257,0,0,4144,4143,1, - 0,0,0,4144,4145,1,0,0,0,4145,4146,1,0,0,0,4146,4147,5,882,0,0,4147, - 4148,5,337,0,0,4148,4149,5,866,0,0,4149,4150,3,282,141,0,4150,4151, - 5,867,0,0,4151,4153,1,0,0,0,4152,4123,1,0,0,0,4152,4142,1,0,0,0, - 4153,285,1,0,0,0,4154,4159,5,116,0,0,4155,4159,5,382,0,0,4156,4157, - 5,42,0,0,4157,4159,3,750,375,0,4158,4154,1,0,0,0,4158,4155,1,0,0, - 0,4158,4156,1,0,0,0,4159,4160,1,0,0,0,4160,4161,5,119,0,0,4161,4162, - 5,55,0,0,4162,287,1,0,0,0,4163,4168,5,116,0,0,4164,4168,5,382,0, - 0,4165,4166,5,42,0,0,4166,4168,3,750,375,0,4167,4163,1,0,0,0,4167, - 4164,1,0,0,0,4167,4165,1,0,0,0,4168,4169,1,0,0,0,4169,4170,5,119, - 0,0,4170,4171,5,382,0,0,4171,289,1,0,0,0,4172,4181,7,58,0,0,4173, - 4181,5,76,0,0,4174,4181,5,172,0,0,4175,4181,5,168,0,0,4176,4181, - 5,166,0,0,4177,4181,5,636,0,0,4178,4181,7,59,0,0,4179,4181,5,167, - 0,0,4180,4172,1,0,0,0,4180,4173,1,0,0,0,4180,4174,1,0,0,0,4180,4175, - 1,0,0,0,4180,4176,1,0,0,0,4180,4177,1,0,0,0,4180,4178,1,0,0,0,4180, - 4179,1,0,0,0,4181,291,1,0,0,0,4182,4185,5,850,0,0,4183,4185,3,294, - 147,0,4184,4182,1,0,0,0,4184,4183,1,0,0,0,4185,4190,1,0,0,0,4186, - 4187,5,868,0,0,4187,4189,3,294,147,0,4188,4186,1,0,0,0,4189,4192, - 1,0,0,0,4190,4188,1,0,0,0,4190,4191,1,0,0,0,4191,293,1,0,0,0,4192, - 4190,1,0,0,0,4193,4194,5,892,0,0,4194,4196,5,841,0,0,4195,4193,1, - 0,0,0,4195,4196,1,0,0,0,4196,4197,1,0,0,0,4197,4202,3,800,400,0, - 4198,4200,5,13,0,0,4199,4198,1,0,0,0,4199,4200,1,0,0,0,4200,4201, - 1,0,0,0,4201,4203,3,702,351,0,4202,4199,1,0,0,0,4202,4203,1,0,0, - 0,4203,4223,1,0,0,0,4204,4209,3,760,380,0,4205,4207,5,13,0,0,4206, - 4205,1,0,0,0,4206,4207,1,0,0,0,4207,4208,1,0,0,0,4208,4210,3,702, - 351,0,4209,4206,1,0,0,0,4209,4210,1,0,0,0,4210,4223,1,0,0,0,4211, - 4212,3,698,349,0,4212,4213,5,865,0,0,4213,4214,5,850,0,0,4214,4223, - 1,0,0,0,4215,4220,3,658,329,0,4216,4218,5,13,0,0,4217,4216,1,0,0, - 0,4217,4218,1,0,0,0,4218,4219,1,0,0,0,4219,4221,3,702,351,0,4220, - 4217,1,0,0,0,4220,4221,1,0,0,0,4221,4223,1,0,0,0,4222,4195,1,0,0, - 0,4222,4204,1,0,0,0,4222,4211,1,0,0,0,4222,4215,1,0,0,0,4223,295, - 1,0,0,0,4224,4225,5,88,0,0,4225,4230,3,230,115,0,4226,4227,5,868, - 0,0,4227,4229,3,230,115,0,4228,4226,1,0,0,0,4229,4232,1,0,0,0,4230, - 4228,1,0,0,0,4230,4231,1,0,0,0,4231,4261,1,0,0,0,4232,4230,1,0,0, - 0,4233,4234,5,88,0,0,4234,4235,5,372,0,0,4235,4261,5,882,0,0,4236, - 4237,5,88,0,0,4237,4238,5,128,0,0,4238,4242,5,882,0,0,4239,4240, - 5,26,0,0,4240,4241,5,155,0,0,4241,4243,3,684,342,0,4242,4239,1,0, - 0,0,4242,4243,1,0,0,0,4243,4250,1,0,0,0,4244,4246,7,46,0,0,4245, - 4247,3,298,149,0,4246,4245,1,0,0,0,4247,4248,1,0,0,0,4248,4246,1, - 0,0,0,4248,4249,1,0,0,0,4249,4251,1,0,0,0,4250,4244,1,0,0,0,4250, - 4251,1,0,0,0,4251,4258,1,0,0,0,4252,4254,5,102,0,0,4253,4255,3,300, - 150,0,4254,4253,1,0,0,0,4255,4256,1,0,0,0,4256,4254,1,0,0,0,4256, - 4257,1,0,0,0,4257,4259,1,0,0,0,4258,4252,1,0,0,0,4258,4259,1,0,0, - 0,4259,4261,1,0,0,0,4260,4224,1,0,0,0,4260,4233,1,0,0,0,4260,4236, - 1,0,0,0,4261,297,1,0,0,0,4262,4263,5,174,0,0,4263,4264,5,20,0,0, - 4264,4275,5,882,0,0,4265,4267,5,123,0,0,4266,4265,1,0,0,0,4266,4267, - 1,0,0,0,4267,4268,1,0,0,0,4268,4269,5,56,0,0,4269,4270,5,20,0,0, - 4270,4275,5,882,0,0,4271,4272,5,58,0,0,4272,4273,5,20,0,0,4273,4275, - 5,882,0,0,4274,4262,1,0,0,0,4274,4266,1,0,0,0,4274,4271,1,0,0,0, - 4275,299,1,0,0,0,4276,4277,5,171,0,0,4277,4278,5,20,0,0,4278,4283, - 5,882,0,0,4279,4280,5,174,0,0,4280,4281,5,20,0,0,4281,4283,5,882, - 0,0,4282,4276,1,0,0,0,4282,4279,1,0,0,0,4283,301,1,0,0,0,4284,4285, - 5,68,0,0,4285,4287,3,256,128,0,4286,4284,1,0,0,0,4286,4287,1,0,0, - 0,4287,4290,1,0,0,0,4288,4289,5,192,0,0,4289,4291,3,800,400,0,4290, - 4288,1,0,0,0,4290,4291,1,0,0,0,4291,303,1,0,0,0,4292,4293,5,74,0, - 0,4293,4294,5,20,0,0,4294,4299,3,310,155,0,4295,4296,5,868,0,0,4296, - 4298,3,310,155,0,4297,4295,1,0,0,0,4298,4301,1,0,0,0,4299,4297,1, - 0,0,0,4299,4300,1,0,0,0,4300,4304,1,0,0,0,4301,4299,1,0,0,0,4302, - 4303,5,194,0,0,4303,4305,5,584,0,0,4304,4302,1,0,0,0,4304,4305,1, - 0,0,0,4305,305,1,0,0,0,4306,4307,5,75,0,0,4307,4308,3,800,400,0, - 4308,307,1,0,0,0,4309,4310,5,689,0,0,4310,4311,3,778,389,0,4311, - 4312,5,13,0,0,4312,4313,5,866,0,0,4313,4314,3,776,388,0,4314,4324, - 5,867,0,0,4315,4316,5,868,0,0,4316,4317,3,778,389,0,4317,4318,5, - 13,0,0,4318,4319,5,866,0,0,4319,4320,3,776,388,0,4320,4321,5,867, - 0,0,4321,4323,1,0,0,0,4322,4315,1,0,0,0,4323,4326,1,0,0,0,4324,4322, - 1,0,0,0,4324,4325,1,0,0,0,4325,309,1,0,0,0,4326,4324,1,0,0,0,4327, - 4329,3,800,400,0,4328,4330,7,54,0,0,4329,4328,1,0,0,0,4329,4330, - 1,0,0,0,4330,311,1,0,0,0,4331,4342,5,100,0,0,4332,4333,3,314,157, - 0,4333,4334,5,868,0,0,4334,4336,1,0,0,0,4335,4332,1,0,0,0,4335,4336, - 1,0,0,0,4336,4337,1,0,0,0,4337,4343,3,314,157,0,4338,4339,3,314, - 157,0,4339,4340,5,509,0,0,4340,4341,3,314,157,0,4341,4343,1,0,0, - 0,4342,4335,1,0,0,0,4342,4338,1,0,0,0,4343,313,1,0,0,0,4344,4348, - 3,708,354,0,4345,4348,3,682,341,0,4346,4348,3,704,352,0,4347,4344, - 1,0,0,0,4347,4345,1,0,0,0,4347,4346,1,0,0,0,4348,315,1,0,0,0,4349, - 4350,5,640,0,0,4350,4359,5,664,0,0,4351,4356,3,338,169,0,4352,4353, - 5,868,0,0,4353,4355,3,338,169,0,4354,4352,1,0,0,0,4355,4358,1,0, - 0,0,4356,4354,1,0,0,0,4356,4357,1,0,0,0,4357,4360,1,0,0,0,4358,4356, - 1,0,0,0,4359,4351,1,0,0,0,4359,4360,1,0,0,0,4360,317,1,0,0,0,4361, - 4363,5,317,0,0,4362,4364,5,691,0,0,4363,4362,1,0,0,0,4363,4364,1, - 0,0,0,4364,319,1,0,0,0,4365,4367,5,341,0,0,4366,4368,5,691,0,0,4367, - 4366,1,0,0,0,4367,4368,1,0,0,0,4368,4374,1,0,0,0,4369,4371,5,11, - 0,0,4370,4372,5,502,0,0,4371,4370,1,0,0,0,4371,4372,1,0,0,0,4372, - 4373,1,0,0,0,4373,4375,5,326,0,0,4374,4369,1,0,0,0,4374,4375,1,0, - 0,0,4375,4380,1,0,0,0,4376,4378,5,502,0,0,4377,4376,1,0,0,0,4377, - 4378,1,0,0,0,4378,4379,1,0,0,0,4379,4381,5,140,0,0,4380,4377,1,0, - 0,0,4380,4381,1,0,0,0,4381,321,1,0,0,0,4382,4384,5,583,0,0,4383, - 4385,5,691,0,0,4384,4383,1,0,0,0,4384,4385,1,0,0,0,4385,4391,1,0, - 0,0,4386,4388,5,11,0,0,4387,4389,5,502,0,0,4388,4387,1,0,0,0,4388, - 4389,1,0,0,0,4389,4390,1,0,0,0,4390,4392,5,326,0,0,4391,4386,1,0, - 0,0,4391,4392,1,0,0,0,4392,4397,1,0,0,0,4393,4395,5,502,0,0,4394, - 4393,1,0,0,0,4394,4395,1,0,0,0,4395,4396,1,0,0,0,4396,4398,5,140, - 0,0,4397,4394,1,0,0,0,4397,4398,1,0,0,0,4398,323,1,0,0,0,4399,4400, - 5,589,0,0,4400,4401,3,702,351,0,4401,325,1,0,0,0,4402,4404,5,583, - 0,0,4403,4405,5,691,0,0,4404,4403,1,0,0,0,4404,4405,1,0,0,0,4405, - 4406,1,0,0,0,4406,4408,5,176,0,0,4407,4409,5,589,0,0,4408,4407,1, - 0,0,0,4408,4409,1,0,0,0,4409,4410,1,0,0,0,4410,4411,3,702,351,0, - 4411,327,1,0,0,0,4412,4413,5,140,0,0,4413,4414,5,589,0,0,4414,4415, - 3,702,351,0,4415,329,1,0,0,0,4416,4417,5,104,0,0,4417,4418,7,60, - 0,0,4418,4423,3,340,170,0,4419,4420,5,868,0,0,4420,4422,3,340,170, - 0,4421,4419,1,0,0,0,4422,4425,1,0,0,0,4423,4421,1,0,0,0,4423,4424, - 1,0,0,0,4424,331,1,0,0,0,4425,4423,1,0,0,0,4426,4427,5,183,0,0,4427, - 4428,5,752,0,0,4428,333,1,0,0,0,4429,4430,5,155,0,0,4430,4431,5, - 313,0,0,4431,4432,5,857,0,0,4432,4433,7,25,0,0,4433,335,1,0,0,0, - 4434,4436,5,155,0,0,4435,4437,7,61,0,0,4436,4435,1,0,0,0,4436,4437, - 1,0,0,0,4437,4438,1,0,0,0,4438,4439,5,664,0,0,4439,4444,3,344,172, - 0,4440,4441,5,868,0,0,4441,4443,3,344,172,0,4442,4440,1,0,0,0,4443, - 4446,1,0,0,0,4444,4442,1,0,0,0,4444,4445,1,0,0,0,4445,337,1,0,0, - 0,4446,4444,1,0,0,0,4447,4448,5,194,0,0,4448,4449,5,350,0,0,4449, - 4455,5,600,0,0,4450,4451,5,135,0,0,4451,4455,5,195,0,0,4452,4453, - 5,135,0,0,4453,4455,5,515,0,0,4454,4447,1,0,0,0,4454,4450,1,0,0, - 0,4454,4452,1,0,0,0,4455,339,1,0,0,0,4456,4461,3,648,324,0,4457, - 4459,5,13,0,0,4458,4457,1,0,0,0,4458,4459,1,0,0,0,4459,4460,1,0, - 0,0,4460,4462,3,702,351,0,4461,4458,1,0,0,0,4461,4462,1,0,0,0,4462, - 4463,1,0,0,0,4463,4464,3,342,171,0,4464,341,1,0,0,0,4465,4467,5, - 135,0,0,4466,4468,5,450,0,0,4467,4466,1,0,0,0,4467,4468,1,0,0,0, - 4468,4474,1,0,0,0,4469,4471,5,107,0,0,4470,4469,1,0,0,0,4470,4471, - 1,0,0,0,4471,4472,1,0,0,0,4472,4474,5,195,0,0,4473,4465,1,0,0,0, - 4473,4470,1,0,0,0,4474,343,1,0,0,0,4475,4476,5,440,0,0,4476,4477, - 5,448,0,0,4477,4483,3,346,173,0,4478,4479,5,135,0,0,4479,4483,5, - 195,0,0,4480,4481,5,135,0,0,4481,4483,5,515,0,0,4482,4475,1,0,0, - 0,4482,4478,1,0,0,0,4482,4480,1,0,0,0,4483,345,1,0,0,0,4484,4485, - 5,809,0,0,4485,4492,5,135,0,0,4486,4487,5,135,0,0,4487,4492,5,810, - 0,0,4488,4489,5,135,0,0,4489,4492,5,811,0,0,4490,4492,5,812,0,0, - 4491,4484,1,0,0,0,4491,4486,1,0,0,0,4491,4488,1,0,0,0,4491,4490, - 1,0,0,0,4492,347,1,0,0,0,4493,4494,5,25,0,0,4494,4495,5,453,0,0, - 4495,4496,5,176,0,0,4496,4501,3,364,182,0,4497,4498,5,868,0,0,4498, - 4500,3,364,182,0,4499,4497,1,0,0,0,4500,4503,1,0,0,0,4501,4499,1, - 0,0,0,4501,4502,1,0,0,0,4502,4505,1,0,0,0,4503,4501,1,0,0,0,4504, - 4506,3,384,192,0,4505,4504,1,0,0,0,4505,4506,1,0,0,0,4506,349,1, - 0,0,0,4507,4508,5,25,0,0,4508,4509,5,572,0,0,4509,4510,5,400,0,0, - 4510,4515,3,386,193,0,4511,4512,5,868,0,0,4512,4514,3,386,193,0, - 4513,4511,1,0,0,0,4514,4517,1,0,0,0,4515,4513,1,0,0,0,4515,4516, - 1,0,0,0,4516,4519,1,0,0,0,4517,4515,1,0,0,0,4518,4520,3,384,192, - 0,4519,4518,1,0,0,0,4519,4520,1,0,0,0,4520,351,1,0,0,0,4521,4522, - 5,25,0,0,4522,4523,5,572,0,0,4523,4524,5,605,0,0,4524,4525,5,176, - 0,0,4525,4530,3,374,187,0,4526,4527,5,868,0,0,4527,4529,3,374,187, - 0,4528,4526,1,0,0,0,4529,4532,1,0,0,0,4530,4528,1,0,0,0,4530,4531, - 1,0,0,0,4531,4534,1,0,0,0,4532,4530,1,0,0,0,4533,4535,3,384,192, - 0,4534,4533,1,0,0,0,4534,4535,1,0,0,0,4535,353,1,0,0,0,4536,4537, - 5,133,0,0,4537,4538,7,62,0,0,4538,4543,5,452,0,0,4539,4540,5,176, - 0,0,4540,4544,5,882,0,0,4541,4542,5,16,0,0,4542,4544,5,882,0,0,4543, - 4539,1,0,0,0,4543,4541,1,0,0,0,4544,355,1,0,0,0,4545,4546,5,640, - 0,0,4546,4555,7,63,0,0,4547,4552,3,390,195,0,4548,4549,5,868,0,0, - 4549,4551,3,390,195,0,4550,4548,1,0,0,0,4551,4554,1,0,0,0,4552,4550, - 1,0,0,0,4552,4553,1,0,0,0,4553,4556,1,0,0,0,4554,4552,1,0,0,0,4555, - 4547,1,0,0,0,4555,4556,1,0,0,0,4556,4559,1,0,0,0,4557,4558,5,676, - 0,0,4558,4560,3,392,196,0,4559,4557,1,0,0,0,4559,4560,1,0,0,0,4560, - 4564,1,0,0,0,4561,4563,3,394,197,0,4562,4561,1,0,0,0,4563,4566,1, - 0,0,0,4564,4562,1,0,0,0,4564,4565,1,0,0,0,4565,4568,1,0,0,0,4566, - 4564,1,0,0,0,4567,4569,3,384,192,0,4568,4567,1,0,0,0,4568,4569,1, - 0,0,0,4569,357,1,0,0,0,4570,4571,5,646,0,0,4571,4580,7,63,0,0,4572, - 4577,3,390,195,0,4573,4574,5,868,0,0,4574,4576,3,390,195,0,4575, - 4573,1,0,0,0,4576,4579,1,0,0,0,4577,4575,1,0,0,0,4577,4578,1,0,0, - 0,4578,4581,1,0,0,0,4579,4577,1,0,0,0,4580,4572,1,0,0,0,4580,4581, - 1,0,0,0,4581,4583,1,0,0,0,4582,4584,3,384,192,0,4583,4582,1,0,0, - 0,4583,4584,1,0,0,0,4584,359,1,0,0,0,4585,4586,5,640,0,0,4586,4590, - 5,415,0,0,4587,4588,5,678,0,0,4588,4589,5,857,0,0,4589,4591,5,882, - 0,0,4590,4587,1,0,0,0,4590,4591,1,0,0,0,4591,4596,1,0,0,0,4592,4593, - 5,868,0,0,4593,4594,5,529,0,0,4594,4595,5,857,0,0,4595,4597,5,882, - 0,0,4596,4592,1,0,0,0,4596,4597,1,0,0,0,4597,4602,1,0,0,0,4598,4599, - 5,868,0,0,4599,4600,5,363,0,0,4600,4601,5,857,0,0,4601,4603,5,882, - 0,0,4602,4598,1,0,0,0,4602,4603,1,0,0,0,4603,361,1,0,0,0,4604,4605, - 5,646,0,0,4605,4606,5,415,0,0,4606,363,1,0,0,0,4607,4608,3,366,183, - 0,4608,4609,5,857,0,0,4609,4610,5,882,0,0,4610,4635,1,0,0,0,4611, - 4612,3,368,184,0,4612,4613,5,857,0,0,4613,4614,3,708,354,0,4614, - 4635,1,0,0,0,4615,4616,3,370,185,0,4616,4617,5,857,0,0,4617,4618, - 7,25,0,0,4618,4635,1,0,0,0,4619,4635,3,372,186,0,4620,4621,5,424, - 0,0,4621,4622,5,857,0,0,4622,4631,5,866,0,0,4623,4628,3,702,351, - 0,4624,4625,5,868,0,0,4625,4627,3,702,351,0,4626,4624,1,0,0,0,4627, - 4630,1,0,0,0,4628,4626,1,0,0,0,4628,4629,1,0,0,0,4629,4632,1,0,0, - 0,4630,4628,1,0,0,0,4631,4623,1,0,0,0,4631,4632,1,0,0,0,4632,4633, - 1,0,0,0,4633,4635,5,867,0,0,4634,4607,1,0,0,0,4634,4611,1,0,0,0, - 4634,4615,1,0,0,0,4634,4619,1,0,0,0,4634,4620,1,0,0,0,4635,365,1, - 0,0,0,4636,4637,7,64,0,0,4637,367,1,0,0,0,4638,4639,7,65,0,0,4639, - 369,1,0,0,0,4640,4641,7,66,0,0,4641,371,1,0,0,0,4642,4643,5,543, - 0,0,4643,4644,5,857,0,0,4644,4656,7,67,0,0,4645,4646,5,574,0,0,4646, - 4647,5,857,0,0,4647,4656,7,68,0,0,4648,4649,5,310,0,0,4649,4653, - 5,857,0,0,4650,4654,5,507,0,0,4651,4654,5,450,0,0,4652,4654,3,396, - 198,0,4653,4650,1,0,0,0,4653,4651,1,0,0,0,4653,4652,1,0,0,0,4654, - 4656,1,0,0,0,4655,4642,1,0,0,0,4655,4645,1,0,0,0,4655,4648,1,0,0, - 0,4656,373,1,0,0,0,4657,4658,3,376,188,0,4658,4659,5,857,0,0,4659, - 4660,5,882,0,0,4660,4685,1,0,0,0,4661,4662,3,378,189,0,4662,4663, - 5,857,0,0,4663,4664,3,708,354,0,4664,4685,1,0,0,0,4665,4666,3,380, - 190,0,4666,4667,5,857,0,0,4667,4668,7,25,0,0,4668,4685,1,0,0,0,4669, - 4685,3,382,191,0,4670,4671,5,424,0,0,4671,4672,5,857,0,0,4672,4681, - 5,866,0,0,4673,4678,3,702,351,0,4674,4675,5,868,0,0,4675,4677,3, - 702,351,0,4676,4674,1,0,0,0,4677,4680,1,0,0,0,4678,4676,1,0,0,0, - 4678,4679,1,0,0,0,4679,4682,1,0,0,0,4680,4678,1,0,0,0,4681,4673, - 1,0,0,0,4681,4682,1,0,0,0,4682,4683,1,0,0,0,4683,4685,5,867,0,0, - 4684,4657,1,0,0,0,4684,4661,1,0,0,0,4684,4665,1,0,0,0,4684,4669, - 1,0,0,0,4684,4670,1,0,0,0,4685,375,1,0,0,0,4686,4687,7,69,0,0,4687, - 377,1,0,0,0,4688,4689,7,70,0,0,4689,379,1,0,0,0,4690,4691,7,71,0, - 0,4691,381,1,0,0,0,4692,4693,5,543,0,0,4693,4694,5,857,0,0,4694, - 4706,7,67,0,0,4695,4696,5,574,0,0,4696,4697,5,857,0,0,4697,4706, - 7,72,0,0,4698,4699,5,310,0,0,4699,4703,5,857,0,0,4700,4704,5,507, - 0,0,4701,4704,5,450,0,0,4702,4704,3,396,198,0,4703,4700,1,0,0,0, - 4703,4701,1,0,0,0,4703,4702,1,0,0,0,4704,4706,1,0,0,0,4705,4692, - 1,0,0,0,4705,4695,1,0,0,0,4705,4698,1,0,0,0,4706,383,1,0,0,0,4707, - 4708,5,65,0,0,4708,4709,5,328,0,0,4709,4710,5,882,0,0,4710,385,1, - 0,0,0,4711,4712,5,565,0,0,4712,4713,5,857,0,0,4713,4714,5,866,0, - 0,4714,4719,3,624,312,0,4715,4716,5,868,0,0,4716,4718,3,624,312, - 0,4717,4715,1,0,0,0,4718,4721,1,0,0,0,4719,4717,1,0,0,0,4719,4720, - 1,0,0,0,4720,4722,1,0,0,0,4721,4719,1,0,0,0,4722,4723,5,867,0,0, - 4723,4775,1,0,0,0,4724,4725,5,567,0,0,4725,4726,5,857,0,0,4726,4727, - 5,866,0,0,4727,4732,3,624,312,0,4728,4729,5,868,0,0,4729,4731,3, - 624,312,0,4730,4728,1,0,0,0,4731,4734,1,0,0,0,4732,4730,1,0,0,0, - 4732,4733,1,0,0,0,4733,4735,1,0,0,0,4734,4732,1,0,0,0,4735,4736, - 5,867,0,0,4736,4775,1,0,0,0,4737,4738,5,566,0,0,4738,4739,5,857, - 0,0,4739,4740,5,866,0,0,4740,4741,3,646,323,0,4741,4742,5,867,0, - 0,4742,4775,1,0,0,0,4743,4744,5,568,0,0,4744,4745,5,857,0,0,4745, - 4746,5,866,0,0,4746,4747,3,646,323,0,4747,4748,5,867,0,0,4748,4775, - 1,0,0,0,4749,4750,5,570,0,0,4750,4751,5,857,0,0,4751,4752,5,866, - 0,0,4752,4753,3,746,373,0,4753,4754,5,867,0,0,4754,4775,1,0,0,0, - 4755,4756,5,571,0,0,4756,4757,5,857,0,0,4757,4758,5,866,0,0,4758, - 4759,3,746,373,0,4759,4760,5,867,0,0,4760,4775,1,0,0,0,4761,4762, - 5,569,0,0,4762,4763,5,857,0,0,4763,4764,5,866,0,0,4764,4769,3,388, - 194,0,4765,4766,5,868,0,0,4766,4768,3,388,194,0,4767,4765,1,0,0, - 0,4768,4771,1,0,0,0,4769,4767,1,0,0,0,4769,4770,1,0,0,0,4770,4772, - 1,0,0,0,4771,4769,1,0,0,0,4772,4773,5,867,0,0,4773,4775,1,0,0,0, - 4774,4711,1,0,0,0,4774,4724,1,0,0,0,4774,4737,1,0,0,0,4774,4743, - 1,0,0,0,4774,4749,1,0,0,0,4774,4755,1,0,0,0,4774,4761,1,0,0,0,4775, - 387,1,0,0,0,4776,4777,5,866,0,0,4777,4778,3,648,324,0,4778,4779, - 5,868,0,0,4779,4780,3,648,324,0,4780,4781,5,867,0,0,4781,389,1,0, - 0,0,4782,4783,7,73,0,0,4783,391,1,0,0,0,4784,4785,7,74,0,0,4785, - 4786,5,857,0,0,4786,4810,3,396,198,0,4787,4788,5,460,0,0,4788,4789, - 5,857,0,0,4789,4790,5,882,0,0,4790,4791,5,868,0,0,4791,4792,5,461, - 0,0,4792,4793,5,857,0,0,4793,4810,3,708,354,0,4794,4795,5,611,0, - 0,4795,4796,5,857,0,0,4796,4797,5,882,0,0,4797,4798,5,868,0,0,4798, - 4799,5,612,0,0,4799,4800,5,857,0,0,4800,4810,3,708,354,0,4801,4802, - 5,557,0,0,4802,4803,5,857,0,0,4803,4804,5,882,0,0,4804,4805,5,868, - 0,0,4805,4806,5,558,0,0,4806,4807,5,857,0,0,4807,4810,3,708,354, - 0,4808,4810,5,634,0,0,4809,4784,1,0,0,0,4809,4787,1,0,0,0,4809,4794, - 1,0,0,0,4809,4801,1,0,0,0,4809,4808,1,0,0,0,4810,393,1,0,0,0,4811, - 4812,5,678,0,0,4812,4813,5,857,0,0,4813,4824,5,882,0,0,4814,4815, - 5,529,0,0,4815,4816,5,857,0,0,4816,4824,5,882,0,0,4817,4818,5,363, - 0,0,4818,4819,5,857,0,0,4819,4824,5,882,0,0,4820,4821,5,535,0,0, - 4821,4822,5,857,0,0,4822,4824,5,882,0,0,4823,4811,1,0,0,0,4823,4814, - 1,0,0,0,4823,4817,1,0,0,0,4823,4820,1,0,0,0,4824,395,1,0,0,0,4825, - 4830,3,692,346,0,4826,4827,5,868,0,0,4827,4829,3,692,346,0,4828, - 4826,1,0,0,0,4829,4832,1,0,0,0,4830,4828,1,0,0,0,4830,4831,1,0,0, - 0,4831,4835,1,0,0,0,4832,4830,1,0,0,0,4833,4835,5,882,0,0,4834,4825, - 1,0,0,0,4834,4833,1,0,0,0,4835,397,1,0,0,0,4836,4837,5,694,0,0,4837, - 4838,7,75,0,0,4838,4840,3,694,347,0,4839,4841,7,76,0,0,4840,4839, - 1,0,0,0,4840,4841,1,0,0,0,4841,399,1,0,0,0,4842,4843,5,694,0,0,4843, - 4844,5,378,0,0,4844,4850,3,694,347,0,4845,4848,5,654,0,0,4846,4847, - 5,65,0,0,4847,4849,5,489,0,0,4848,4846,1,0,0,0,4848,4849,1,0,0,0, - 4849,4851,1,0,0,0,4850,4845,1,0,0,0,4850,4851,1,0,0,0,4851,401,1, - 0,0,0,4852,4853,5,694,0,0,4853,4854,5,540,0,0,4854,4855,3,694,347, - 0,4855,403,1,0,0,0,4856,4857,5,694,0,0,4857,4858,5,341,0,0,4858, - 4861,3,694,347,0,4859,4860,5,513,0,0,4860,4862,5,533,0,0,4861,4859, - 1,0,0,0,4861,4862,1,0,0,0,4862,405,1,0,0,0,4863,4864,5,694,0,0,4864, - 4865,5,583,0,0,4865,4866,3,694,347,0,4866,407,1,0,0,0,4867,4868, - 5,694,0,0,4868,4871,5,551,0,0,4869,4870,5,33,0,0,4870,4872,3,694, - 347,0,4871,4869,1,0,0,0,4871,4872,1,0,0,0,4872,409,1,0,0,0,4873, - 4874,5,540,0,0,4874,4875,3,702,351,0,4875,4878,5,68,0,0,4876,4879, - 5,882,0,0,4877,4879,5,892,0,0,4878,4876,1,0,0,0,4878,4877,1,0,0, - 0,4879,411,1,0,0,0,4880,4881,5,717,0,0,4881,4884,3,702,351,0,4882, - 4883,5,188,0,0,4883,4885,3,748,374,0,4884,4882,1,0,0,0,4884,4885, - 1,0,0,0,4885,413,1,0,0,0,4886,4887,7,77,0,0,4887,4888,5,540,0,0, - 4888,4889,3,702,351,0,4889,415,1,0,0,0,4890,4893,3,418,209,0,4891, - 4893,3,4,2,0,4892,4890,1,0,0,0,4892,4891,1,0,0,0,4893,417,1,0,0, - 0,4894,4895,3,702,351,0,4895,4896,5,878,0,0,4896,4898,1,0,0,0,4897, - 4894,1,0,0,0,4897,4898,1,0,0,0,4898,4899,1,0,0,0,4899,4905,5,317, - 0,0,4900,4901,3,438,219,0,4901,4902,5,869,0,0,4902,4904,1,0,0,0, - 4903,4900,1,0,0,0,4904,4907,1,0,0,0,4905,4903,1,0,0,0,4905,4906, - 1,0,0,0,4906,4913,1,0,0,0,4907,4905,1,0,0,0,4908,4909,3,440,220, - 0,4909,4910,5,869,0,0,4910,4912,1,0,0,0,4911,4908,1,0,0,0,4912,4915, - 1,0,0,0,4913,4911,1,0,0,0,4913,4914,1,0,0,0,4914,4921,1,0,0,0,4915, - 4913,1,0,0,0,4916,4917,3,442,221,0,4917,4918,5,869,0,0,4918,4920, - 1,0,0,0,4919,4916,1,0,0,0,4920,4923,1,0,0,0,4921,4919,1,0,0,0,4921, - 4922,1,0,0,0,4922,4929,1,0,0,0,4923,4921,1,0,0,0,4924,4925,3,444, - 222,0,4925,4926,5,869,0,0,4926,4928,1,0,0,0,4927,4924,1,0,0,0,4928, - 4931,1,0,0,0,4929,4927,1,0,0,0,4929,4930,1,0,0,0,4930,4935,1,0,0, - 0,4931,4929,1,0,0,0,4932,4934,3,448,224,0,4933,4932,1,0,0,0,4934, - 4937,1,0,0,0,4935,4933,1,0,0,0,4935,4936,1,0,0,0,4936,4938,1,0,0, - 0,4937,4935,1,0,0,0,4938,4940,5,378,0,0,4939,4941,3,702,351,0,4940, - 4939,1,0,0,0,4940,4941,1,0,0,0,4941,419,1,0,0,0,4942,4945,5,23,0, - 0,4943,4946,3,702,351,0,4944,4946,3,800,400,0,4945,4943,1,0,0,0, - 4945,4944,1,0,0,0,4945,4946,1,0,0,0,4946,4948,1,0,0,0,4947,4949, - 3,450,225,0,4948,4947,1,0,0,0,4949,4950,1,0,0,0,4950,4948,1,0,0, - 0,4950,4951,1,0,0,0,4951,4958,1,0,0,0,4952,4954,5,53,0,0,4953,4955, - 3,448,224,0,4954,4953,1,0,0,0,4955,4956,1,0,0,0,4956,4954,1,0,0, - 0,4956,4957,1,0,0,0,4957,4959,1,0,0,0,4958,4952,1,0,0,0,4958,4959, - 1,0,0,0,4959,4960,1,0,0,0,4960,4961,5,378,0,0,4961,4962,5,23,0,0, - 4962,421,1,0,0,0,4963,4964,5,78,0,0,4964,4965,3,800,400,0,4965,4967, - 5,175,0,0,4966,4968,3,448,224,0,4967,4966,1,0,0,0,4968,4969,1,0, - 0,0,4969,4967,1,0,0,0,4969,4970,1,0,0,0,4970,4974,1,0,0,0,4971,4973, - 3,452,226,0,4972,4971,1,0,0,0,4973,4976,1,0,0,0,4974,4972,1,0,0, - 0,4974,4975,1,0,0,0,4975,4983,1,0,0,0,4976,4974,1,0,0,0,4977,4979, - 5,53,0,0,4978,4980,3,448,224,0,4979,4978,1,0,0,0,4980,4981,1,0,0, - 0,4981,4979,1,0,0,0,4981,4982,1,0,0,0,4982,4984,1,0,0,0,4983,4977, - 1,0,0,0,4983,4984,1,0,0,0,4984,4985,1,0,0,0,4985,4986,5,378,0,0, - 4986,4987,5,78,0,0,4987,423,1,0,0,0,4988,4989,5,90,0,0,4989,4990, - 3,702,351,0,4990,425,1,0,0,0,4991,4992,5,97,0,0,4992,4993,3,702, - 351,0,4993,427,1,0,0,0,4994,4995,3,702,351,0,4995,4996,5,878,0,0, - 4996,4998,1,0,0,0,4997,4994,1,0,0,0,4997,4998,1,0,0,0,4998,4999, - 1,0,0,0,4999,5001,5,106,0,0,5000,5002,3,448,224,0,5001,5000,1,0, - 0,0,5002,5003,1,0,0,0,5003,5001,1,0,0,0,5003,5004,1,0,0,0,5004,5005, - 1,0,0,0,5005,5006,5,378,0,0,5006,5008,5,106,0,0,5007,5009,3,702, - 351,0,5008,5007,1,0,0,0,5008,5009,1,0,0,0,5009,429,1,0,0,0,5010, - 5011,3,702,351,0,5011,5012,5,878,0,0,5012,5014,1,0,0,0,5013,5010, - 1,0,0,0,5013,5014,1,0,0,0,5014,5015,1,0,0,0,5015,5017,5,142,0,0, - 5016,5018,3,448,224,0,5017,5016,1,0,0,0,5018,5019,1,0,0,0,5019,5017, - 1,0,0,0,5019,5020,1,0,0,0,5020,5021,1,0,0,0,5021,5022,5,676,0,0, - 5022,5023,3,800,400,0,5023,5024,5,378,0,0,5024,5026,5,142,0,0,5025, - 5027,3,702,351,0,5026,5025,1,0,0,0,5026,5027,1,0,0,0,5027,431,1, - 0,0,0,5028,5029,5,148,0,0,5029,5030,3,800,400,0,5030,433,1,0,0,0, - 5031,5032,3,702,351,0,5032,5033,5,878,0,0,5033,5035,1,0,0,0,5034, - 5031,1,0,0,0,5034,5035,1,0,0,0,5035,5036,1,0,0,0,5036,5037,5,193, - 0,0,5037,5038,3,800,400,0,5038,5040,5,371,0,0,5039,5041,3,448,224, - 0,5040,5039,1,0,0,0,5041,5042,1,0,0,0,5042,5040,1,0,0,0,5042,5043, - 1,0,0,0,5043,5044,1,0,0,0,5044,5045,5,378,0,0,5045,5047,5,193,0, - 0,5046,5048,3,702,351,0,5047,5046,1,0,0,0,5047,5048,1,0,0,0,5048, - 435,1,0,0,0,5049,5050,5,334,0,0,5050,5065,3,702,351,0,5051,5056, - 5,64,0,0,5052,5054,5,501,0,0,5053,5052,1,0,0,0,5053,5054,1,0,0,0, - 5054,5055,1,0,0,0,5055,5057,5,68,0,0,5056,5053,1,0,0,0,5056,5057, - 1,0,0,0,5057,5058,1,0,0,0,5058,5059,3,702,351,0,5059,5060,5,88,0, - 0,5060,5061,3,700,350,0,5061,5065,1,0,0,0,5062,5063,5,516,0,0,5063, - 5065,3,702,351,0,5064,5049,1,0,0,0,5064,5051,1,0,0,0,5064,5062,1, - 0,0,0,5065,437,1,0,0,0,5066,5067,5,41,0,0,5067,5068,3,700,350,0, - 5068,5071,3,722,361,0,5069,5070,5,42,0,0,5070,5072,3,800,400,0,5071, - 5069,1,0,0,0,5071,5072,1,0,0,0,5072,439,1,0,0,0,5073,5074,5,41,0, - 0,5074,5075,3,702,351,0,5075,5076,5,30,0,0,5076,5083,5,65,0,0,5077, - 5084,3,708,354,0,5078,5080,5,164,0,0,5079,5081,5,682,0,0,5080,5079, - 1,0,0,0,5080,5081,1,0,0,0,5081,5082,1,0,0,0,5082,5084,5,882,0,0, - 5083,5077,1,0,0,0,5083,5078,1,0,0,0,5084,441,1,0,0,0,5085,5086,5, - 41,0,0,5086,5087,3,702,351,0,5087,5088,5,38,0,0,5088,5089,5,65,0, - 0,5089,5090,3,204,102,0,5090,443,1,0,0,0,5091,5092,5,41,0,0,5092, - 5093,7,78,0,0,5093,5094,5,417,0,0,5094,5095,5,65,0,0,5095,5100,3, - 446,223,0,5096,5097,5,868,0,0,5097,5099,3,446,223,0,5098,5096,1, - 0,0,0,5099,5102,1,0,0,0,5100,5098,1,0,0,0,5100,5101,1,0,0,0,5101, - 5103,1,0,0,0,5102,5100,1,0,0,0,5103,5104,3,416,208,0,5104,445,1, - 0,0,0,5105,5117,3,708,354,0,5106,5108,5,164,0,0,5107,5109,5,682, - 0,0,5108,5107,1,0,0,0,5108,5109,1,0,0,0,5109,5110,1,0,0,0,5110,5117, - 5,882,0,0,5111,5117,3,702,351,0,5112,5117,5,165,0,0,5113,5114,5, - 114,0,0,5114,5117,5,407,0,0,5115,5117,5,163,0,0,5116,5105,1,0,0, - 0,5116,5106,1,0,0,0,5116,5111,1,0,0,0,5116,5112,1,0,0,0,5116,5113, - 1,0,0,0,5116,5115,1,0,0,0,5117,447,1,0,0,0,5118,5121,3,18,9,0,5119, - 5121,3,4,2,0,5120,5118,1,0,0,0,5120,5119,1,0,0,0,5121,5122,1,0,0, - 0,5122,5123,5,869,0,0,5123,449,1,0,0,0,5124,5127,5,191,0,0,5125, - 5128,3,720,360,0,5126,5128,3,800,400,0,5127,5125,1,0,0,0,5127,5126, - 1,0,0,0,5128,5129,1,0,0,0,5129,5131,5,175,0,0,5130,5132,3,448,224, - 0,5131,5130,1,0,0,0,5132,5133,1,0,0,0,5133,5131,1,0,0,0,5133,5134, - 1,0,0,0,5134,451,1,0,0,0,5135,5136,5,54,0,0,5136,5137,3,800,400, - 0,5137,5139,5,175,0,0,5138,5140,3,448,224,0,5139,5138,1,0,0,0,5140, - 5141,1,0,0,0,5141,5139,1,0,0,0,5141,5142,1,0,0,0,5142,453,1,0,0, - 0,5143,5144,5,8,0,0,5144,5146,5,678,0,0,5145,5147,3,754,377,0,5146, - 5145,1,0,0,0,5146,5147,1,0,0,0,5147,5204,1,0,0,0,5148,5153,3,486, - 243,0,5149,5150,5,868,0,0,5150,5152,3,486,243,0,5151,5149,1,0,0, - 0,5152,5155,1,0,0,0,5153,5151,1,0,0,0,5153,5154,1,0,0,0,5154,5205, - 1,0,0,0,5155,5153,1,0,0,0,5156,5161,3,488,244,0,5157,5158,5,868, - 0,0,5158,5160,3,488,244,0,5159,5157,1,0,0,0,5160,5163,1,0,0,0,5161, - 5159,1,0,0,0,5161,5162,1,0,0,0,5162,5178,1,0,0,0,5163,5161,1,0,0, - 0,5164,5176,5,144,0,0,5165,5177,5,505,0,0,5166,5173,3,500,250,0, - 5167,5169,5,11,0,0,5168,5167,1,0,0,0,5168,5169,1,0,0,0,5169,5170, - 1,0,0,0,5170,5172,3,500,250,0,5171,5168,1,0,0,0,5172,5175,1,0,0, - 0,5173,5171,1,0,0,0,5173,5174,1,0,0,0,5174,5177,1,0,0,0,5175,5173, - 1,0,0,0,5176,5165,1,0,0,0,5176,5166,1,0,0,0,5177,5179,1,0,0,0,5178, - 5164,1,0,0,0,5178,5179,1,0,0,0,5179,5186,1,0,0,0,5180,5182,5,194, - 0,0,5181,5183,3,502,251,0,5182,5181,1,0,0,0,5183,5184,1,0,0,0,5184, - 5182,1,0,0,0,5184,5185,1,0,0,0,5185,5187,1,0,0,0,5186,5180,1,0,0, - 0,5186,5187,1,0,0,0,5187,5192,1,0,0,0,5188,5191,3,504,252,0,5189, - 5191,3,506,253,0,5190,5188,1,0,0,0,5190,5189,1,0,0,0,5191,5194,1, - 0,0,0,5192,5190,1,0,0,0,5192,5193,1,0,0,0,5193,5197,1,0,0,0,5194, - 5192,1,0,0,0,5195,5196,7,79,0,0,5196,5198,5,882,0,0,5197,5195,1, - 0,0,0,5197,5198,1,0,0,0,5198,5205,1,0,0,0,5199,5200,3,652,326,0, - 5200,5201,5,42,0,0,5201,5202,5,582,0,0,5202,5203,3,462,231,0,5203, - 5205,1,0,0,0,5204,5148,1,0,0,0,5204,5156,1,0,0,0,5204,5199,1,0,0, - 0,5205,455,1,0,0,0,5206,5207,5,34,0,0,5207,5209,5,678,0,0,5208,5210, - 3,756,378,0,5209,5208,1,0,0,0,5209,5210,1,0,0,0,5210,5211,1,0,0, - 0,5211,5213,3,680,340,0,5212,5214,3,490,245,0,5213,5212,1,0,0,0, - 5213,5214,1,0,0,0,5214,5222,1,0,0,0,5215,5216,5,868,0,0,5216,5218, - 3,680,340,0,5217,5219,3,490,245,0,5218,5217,1,0,0,0,5218,5219,1, - 0,0,0,5219,5221,1,0,0,0,5220,5215,1,0,0,0,5221,5224,1,0,0,0,5222, - 5220,1,0,0,0,5222,5223,1,0,0,0,5223,5228,1,0,0,0,5224,5222,1,0,0, - 0,5225,5226,5,42,0,0,5226,5227,5,582,0,0,5227,5229,3,462,231,0,5228, - 5225,1,0,0,0,5228,5229,1,0,0,0,5229,5244,1,0,0,0,5230,5242,5,144, - 0,0,5231,5243,5,505,0,0,5232,5239,3,500,250,0,5233,5235,5,11,0,0, - 5234,5233,1,0,0,0,5234,5235,1,0,0,0,5235,5236,1,0,0,0,5236,5238, - 3,500,250,0,5237,5234,1,0,0,0,5238,5241,1,0,0,0,5239,5237,1,0,0, - 0,5239,5240,1,0,0,0,5240,5243,1,0,0,0,5241,5239,1,0,0,0,5242,5231, - 1,0,0,0,5242,5232,1,0,0,0,5243,5245,1,0,0,0,5244,5230,1,0,0,0,5244, - 5245,1,0,0,0,5245,5252,1,0,0,0,5246,5248,5,194,0,0,5247,5249,3,502, - 251,0,5248,5247,1,0,0,0,5249,5250,1,0,0,0,5250,5248,1,0,0,0,5250, - 5251,1,0,0,0,5251,5253,1,0,0,0,5252,5246,1,0,0,0,5252,5253,1,0,0, - 0,5253,5258,1,0,0,0,5254,5257,3,504,252,0,5255,5257,3,506,253,0, - 5256,5254,1,0,0,0,5256,5255,1,0,0,0,5257,5260,1,0,0,0,5258,5256, - 1,0,0,0,5258,5259,1,0,0,0,5259,5263,1,0,0,0,5260,5258,1,0,0,0,5261, - 5262,7,79,0,0,5262,5264,5,882,0,0,5263,5261,1,0,0,0,5263,5264,1, - 0,0,0,5264,457,1,0,0,0,5265,5266,5,51,0,0,5266,5268,5,678,0,0,5267, - 5269,3,754,377,0,5268,5267,1,0,0,0,5268,5269,1,0,0,0,5269,5270,1, - 0,0,0,5270,5275,3,680,340,0,5271,5272,5,868,0,0,5272,5274,3,680, - 340,0,5273,5271,1,0,0,0,5274,5277,1,0,0,0,5275,5273,1,0,0,0,5275, - 5276,1,0,0,0,5276,459,1,0,0,0,5277,5275,1,0,0,0,5278,5279,5,73,0, - 0,5279,5284,3,514,257,0,5280,5281,5,868,0,0,5281,5283,3,514,257, - 0,5282,5280,1,0,0,0,5283,5286,1,0,0,0,5284,5282,1,0,0,0,5284,5285, - 1,0,0,0,5285,5287,1,0,0,0,5286,5284,1,0,0,0,5287,5289,5,119,0,0, - 5288,5290,3,482,241,0,5289,5288,1,0,0,0,5289,5290,1,0,0,0,5290,5291, - 1,0,0,0,5291,5292,3,518,259,0,5292,5302,5,176,0,0,5293,5298,3,494, - 247,0,5294,5295,5,868,0,0,5295,5297,3,494,247,0,5296,5294,1,0,0, - 0,5297,5300,1,0,0,0,5298,5296,1,0,0,0,5298,5299,1,0,0,0,5299,5303, - 1,0,0,0,5300,5298,1,0,0,0,5301,5303,3,650,325,0,5302,5293,1,0,0, - 0,5302,5301,1,0,0,0,5303,5318,1,0,0,0,5304,5316,5,144,0,0,5305,5317, - 5,505,0,0,5306,5313,3,500,250,0,5307,5309,5,11,0,0,5308,5307,1,0, - 0,0,5308,5309,1,0,0,0,5309,5310,1,0,0,0,5310,5312,3,500,250,0,5311, - 5308,1,0,0,0,5312,5315,1,0,0,0,5313,5311,1,0,0,0,5313,5314,1,0,0, - 0,5314,5317,1,0,0,0,5315,5313,1,0,0,0,5316,5305,1,0,0,0,5316,5306, - 1,0,0,0,5317,5319,1,0,0,0,5318,5304,1,0,0,0,5318,5319,1,0,0,0,5319, - 5329,1,0,0,0,5320,5326,5,194,0,0,5321,5322,5,73,0,0,5322,5325,5, - 121,0,0,5323,5325,3,502,251,0,5324,5321,1,0,0,0,5324,5323,1,0,0, - 0,5325,5328,1,0,0,0,5326,5324,1,0,0,0,5326,5327,1,0,0,0,5327,5330, - 1,0,0,0,5328,5326,1,0,0,0,5329,5320,1,0,0,0,5329,5330,1,0,0,0,5330, - 5338,1,0,0,0,5331,5332,5,13,0,0,5332,5336,3,680,340,0,5333,5334, - 5,194,0,0,5334,5335,5,582,0,0,5335,5337,3,462,231,0,5336,5333,1, - 0,0,0,5336,5337,1,0,0,0,5337,5339,1,0,0,0,5338,5331,1,0,0,0,5338, - 5339,1,0,0,0,5339,5368,1,0,0,0,5340,5343,5,73,0,0,5341,5342,5,547, - 0,0,5342,5344,5,119,0,0,5343,5341,1,0,0,0,5343,5344,1,0,0,0,5344, - 5345,1,0,0,0,5345,5350,3,652,326,0,5346,5347,5,868,0,0,5347,5349, - 3,652,326,0,5348,5346,1,0,0,0,5349,5352,1,0,0,0,5350,5348,1,0,0, - 0,5350,5351,1,0,0,0,5351,5353,1,0,0,0,5352,5350,1,0,0,0,5353,5354, - 5,176,0,0,5354,5359,3,652,326,0,5355,5356,5,868,0,0,5356,5358,3, - 652,326,0,5357,5355,1,0,0,0,5358,5361,1,0,0,0,5359,5357,1,0,0,0, - 5359,5360,1,0,0,0,5360,5365,1,0,0,0,5361,5359,1,0,0,0,5362,5363, - 5,194,0,0,5363,5364,5,704,0,0,5364,5366,5,121,0,0,5365,5362,1,0, - 0,0,5365,5366,1,0,0,0,5366,5368,1,0,0,0,5367,5278,1,0,0,0,5367,5340, - 1,0,0,0,5368,461,1,0,0,0,5369,5378,5,42,0,0,5370,5378,5,505,0,0, - 5371,5374,5,7,0,0,5372,5373,5,59,0,0,5373,5375,3,650,325,0,5374, - 5372,1,0,0,0,5374,5375,1,0,0,0,5375,5378,1,0,0,0,5376,5378,3,650, - 325,0,5377,5369,1,0,0,0,5377,5370,1,0,0,0,5377,5371,1,0,0,0,5377, - 5376,1,0,0,0,5378,463,1,0,0,0,5379,5380,5,73,0,0,5380,5381,5,547, - 0,0,5381,5382,5,119,0,0,5382,5383,3,680,340,0,5383,5384,5,176,0, - 0,5384,5389,3,680,340,0,5385,5386,5,868,0,0,5386,5388,3,680,340, - 0,5387,5385,1,0,0,0,5388,5391,1,0,0,0,5389,5387,1,0,0,0,5389,5390, - 1,0,0,0,5390,5395,1,0,0,0,5391,5389,1,0,0,0,5392,5393,5,194,0,0, - 5393,5394,5,73,0,0,5394,5396,5,121,0,0,5395,5392,1,0,0,0,5395,5396, - 1,0,0,0,5396,465,1,0,0,0,5397,5398,5,8,0,0,5398,5399,5,739,0,0,5399, - 5400,5,74,0,0,5400,5406,3,642,321,0,5401,5403,5,190,0,0,5402,5404, - 5,857,0,0,5403,5402,1,0,0,0,5403,5404,1,0,0,0,5404,5405,1,0,0,0, - 5405,5407,3,474,237,0,5406,5401,1,0,0,0,5406,5407,1,0,0,0,5407,5413, - 1,0,0,0,5408,5410,5,837,0,0,5409,5411,5,857,0,0,5410,5409,1,0,0, - 0,5410,5411,1,0,0,0,5411,5412,1,0,0,0,5412,5414,3,708,354,0,5413, - 5408,1,0,0,0,5413,5414,1,0,0,0,5414,5419,1,0,0,0,5415,5417,7,38, - 0,0,5416,5418,5,66,0,0,5417,5416,1,0,0,0,5417,5418,1,0,0,0,5418, - 5420,1,0,0,0,5419,5415,1,0,0,0,5419,5420,1,0,0,0,5420,467,1,0,0, - 0,5421,5422,5,34,0,0,5422,5423,5,739,0,0,5423,5424,5,74,0,0,5424, - 5425,3,640,320,0,5425,5426,5,839,0,0,5426,5427,5,857,0,0,5427,5433, - 7,80,0,0,5428,5430,5,190,0,0,5429,5431,5,857,0,0,5430,5429,1,0,0, - 0,5430,5431,1,0,0,0,5431,5432,1,0,0,0,5432,5434,3,474,237,0,5433, - 5428,1,0,0,0,5433,5434,1,0,0,0,5434,5440,1,0,0,0,5435,5437,5,837, - 0,0,5436,5438,5,857,0,0,5437,5436,1,0,0,0,5437,5438,1,0,0,0,5438, - 5439,1,0,0,0,5439,5441,3,708,354,0,5440,5435,1,0,0,0,5440,5441,1, - 0,0,0,5441,5443,1,0,0,0,5442,5444,7,38,0,0,5443,5442,1,0,0,0,5443, - 5444,1,0,0,0,5444,469,1,0,0,0,5445,5446,5,51,0,0,5446,5447,5,739, - 0,0,5447,5448,5,74,0,0,5448,5450,3,642,321,0,5449,5451,5,66,0,0, - 5450,5449,1,0,0,0,5450,5451,1,0,0,0,5451,471,1,0,0,0,5452,5453,5, - 155,0,0,5453,5454,5,739,0,0,5454,5455,5,74,0,0,5455,5465,3,642,321, - 0,5456,5457,5,65,0,0,5457,5462,3,708,354,0,5458,5459,5,868,0,0,5459, - 5461,3,708,354,0,5460,5458,1,0,0,0,5461,5464,1,0,0,0,5462,5460,1, - 0,0,0,5462,5463,1,0,0,0,5463,5466,1,0,0,0,5464,5462,1,0,0,0,5465, - 5456,1,0,0,0,5465,5466,1,0,0,0,5466,473,1,0,0,0,5467,5473,3,708, - 354,0,5468,5469,3,708,354,0,5469,5470,5,854,0,0,5470,5471,3,708, - 354,0,5471,5473,1,0,0,0,5472,5467,1,0,0,0,5472,5468,1,0,0,0,5473, - 5478,1,0,0,0,5474,5475,5,868,0,0,5475,5477,3,474,237,0,5476,5474, - 1,0,0,0,5477,5480,1,0,0,0,5478,5476,1,0,0,0,5478,5479,1,0,0,0,5479, - 475,1,0,0,0,5480,5478,1,0,0,0,5481,5482,5,141,0,0,5482,5483,5,678, - 0,0,5483,5488,3,520,260,0,5484,5485,5,868,0,0,5485,5487,3,520,260, - 0,5486,5484,1,0,0,0,5487,5490,1,0,0,0,5488,5486,1,0,0,0,5488,5489, - 1,0,0,0,5489,477,1,0,0,0,5490,5488,1,0,0,0,5491,5493,5,149,0,0,5492, - 5494,3,754,377,0,5493,5492,1,0,0,0,5493,5494,1,0,0,0,5494,5495,1, - 0,0,0,5495,5500,3,514,257,0,5496,5497,5,868,0,0,5497,5499,3,514, - 257,0,5498,5496,1,0,0,0,5499,5502,1,0,0,0,5500,5498,1,0,0,0,5500, - 5501,1,0,0,0,5501,5503,1,0,0,0,5502,5500,1,0,0,0,5503,5505,5,119, - 0,0,5504,5506,3,482,241,0,5505,5504,1,0,0,0,5505,5506,1,0,0,0,5506, - 5507,1,0,0,0,5507,5508,3,518,259,0,5508,5509,5,68,0,0,5509,5511, - 3,650,325,0,5510,5512,3,480,240,0,5511,5510,1,0,0,0,5511,5512,1, - 0,0,0,5512,5544,1,0,0,0,5513,5515,5,149,0,0,5514,5516,3,754,377, - 0,5515,5514,1,0,0,0,5515,5516,1,0,0,0,5516,5517,1,0,0,0,5517,5519, - 5,7,0,0,5518,5520,5,734,0,0,5519,5518,1,0,0,0,5519,5520,1,0,0,0, - 5520,5521,1,0,0,0,5521,5522,5,868,0,0,5522,5523,5,73,0,0,5523,5524, - 5,121,0,0,5524,5525,5,68,0,0,5525,5527,3,650,325,0,5526,5528,3,480, - 240,0,5527,5526,1,0,0,0,5527,5528,1,0,0,0,5528,5544,1,0,0,0,5529, - 5531,5,149,0,0,5530,5532,3,754,377,0,5531,5530,1,0,0,0,5531,5532, - 1,0,0,0,5532,5535,1,0,0,0,5533,5534,5,547,0,0,5534,5536,5,119,0, - 0,5535,5533,1,0,0,0,5535,5536,1,0,0,0,5536,5537,1,0,0,0,5537,5538, - 3,650,325,0,5538,5539,5,68,0,0,5539,5541,3,650,325,0,5540,5542,3, - 480,240,0,5541,5540,1,0,0,0,5541,5542,1,0,0,0,5542,5544,1,0,0,0, - 5543,5491,1,0,0,0,5543,5513,1,0,0,0,5543,5529,1,0,0,0,5544,479,1, - 0,0,0,5545,5546,5,79,0,0,5546,5547,5,674,0,0,5547,5548,5,678,0,0, - 5548,481,1,0,0,0,5549,5550,7,81,0,0,5550,483,1,0,0,0,5551,5552,5, - 155,0,0,5552,5555,5,529,0,0,5553,5554,5,65,0,0,5554,5556,3,680,340, - 0,5555,5553,1,0,0,0,5555,5556,1,0,0,0,5556,5557,1,0,0,0,5557,5560, - 5,857,0,0,5558,5561,3,794,397,0,5559,5561,5,882,0,0,5560,5558,1, - 0,0,0,5560,5559,1,0,0,0,5561,5584,1,0,0,0,5562,5563,5,155,0,0,5563, - 5566,5,529,0,0,5564,5565,5,65,0,0,5565,5567,3,680,340,0,5566,5564, - 1,0,0,0,5566,5567,1,0,0,0,5567,5572,1,0,0,0,5568,5569,5,176,0,0, - 5569,5573,5,829,0,0,5570,5571,5,857,0,0,5571,5573,5,882,0,0,5572, - 5568,1,0,0,0,5572,5570,1,0,0,0,5573,5576,1,0,0,0,5574,5575,5,143, - 0,0,5575,5577,5,882,0,0,5576,5574,1,0,0,0,5576,5577,1,0,0,0,5577, - 5581,1,0,0,0,5578,5579,5,147,0,0,5579,5580,5,36,0,0,5580,5582,5, - 529,0,0,5581,5578,1,0,0,0,5581,5582,1,0,0,0,5582,5584,1,0,0,0,5583, - 5551,1,0,0,0,5583,5562,1,0,0,0,5584,485,1,0,0,0,5585,5586,3,680, - 340,0,5586,5587,3,504,252,0,5587,487,1,0,0,0,5588,5614,3,680,340, - 0,5589,5590,5,423,0,0,5590,5591,5,20,0,0,5591,5592,5,882,0,0,5592, - 5615,3,496,248,0,5593,5594,5,423,0,0,5594,5595,5,20,0,0,5595,5596, - 5,829,0,0,5596,5597,5,529,0,0,5597,5615,3,496,248,0,5598,5599,5, - 423,0,0,5599,5600,5,194,0,0,5600,5615,3,498,249,0,5601,5602,5,369, - 0,0,5602,5603,5,511,0,0,5603,5615,5,529,0,0,5604,5605,7,82,0,0,5605, - 5607,3,512,256,0,5606,5608,3,508,254,0,5607,5606,1,0,0,0,5607,5608, - 1,0,0,0,5608,5610,1,0,0,0,5609,5604,1,0,0,0,5610,5611,1,0,0,0,5611, - 5609,1,0,0,0,5611,5612,1,0,0,0,5612,5615,1,0,0,0,5613,5615,3,510, - 255,0,5614,5589,1,0,0,0,5614,5593,1,0,0,0,5614,5598,1,0,0,0,5614, - 5601,1,0,0,0,5614,5609,1,0,0,0,5614,5613,1,0,0,0,5614,5615,1,0,0, - 0,5615,489,1,0,0,0,5616,5617,5,423,0,0,5617,5623,5,20,0,0,5618,5624, - 5,882,0,0,5619,5620,5,829,0,0,5620,5624,5,529,0,0,5621,5622,5,529, - 0,0,5622,5624,5,882,0,0,5623,5618,1,0,0,0,5623,5619,1,0,0,0,5623, - 5621,1,0,0,0,5624,5627,1,0,0,0,5625,5626,5,11,0,0,5626,5628,3,490, - 245,0,5627,5625,1,0,0,0,5627,5628,1,0,0,0,5628,5653,1,0,0,0,5629, - 5630,5,423,0,0,5630,5631,5,194,0,0,5631,5640,3,702,351,0,5632,5636, - 5,20,0,0,5633,5637,5,882,0,0,5634,5635,5,829,0,0,5635,5637,5,529, - 0,0,5636,5633,1,0,0,0,5636,5634,1,0,0,0,5637,5641,1,0,0,0,5638,5639, - 5,13,0,0,5639,5641,5,882,0,0,5640,5632,1,0,0,0,5640,5638,1,0,0,0, - 5640,5641,1,0,0,0,5641,5644,1,0,0,0,5642,5643,5,11,0,0,5643,5645, - 3,490,245,0,5644,5642,1,0,0,0,5644,5645,1,0,0,0,5645,5653,1,0,0, - 0,5646,5647,5,423,0,0,5647,5648,5,194,0,0,5648,5650,3,702,351,0, - 5649,5651,3,492,246,0,5650,5649,1,0,0,0,5650,5651,1,0,0,0,5651,5653, - 1,0,0,0,5652,5616,1,0,0,0,5652,5629,1,0,0,0,5652,5646,1,0,0,0,5653, - 491,1,0,0,0,5654,5655,5,427,0,0,5655,5656,5,708,0,0,5656,5657,5, - 423,0,0,5657,5661,5,20,0,0,5658,5659,5,829,0,0,5659,5662,5,529,0, - 0,5660,5662,5,882,0,0,5661,5658,1,0,0,0,5661,5660,1,0,0,0,5662,5672, - 1,0,0,0,5663,5664,5,427,0,0,5664,5665,5,708,0,0,5665,5666,5,423, - 0,0,5666,5667,5,194,0,0,5667,5668,3,702,351,0,5668,5669,5,13,0,0, - 5669,5670,5,882,0,0,5670,5672,1,0,0,0,5671,5654,1,0,0,0,5671,5663, - 1,0,0,0,5672,493,1,0,0,0,5673,5674,3,680,340,0,5674,5675,5,423,0, - 0,5675,5676,5,20,0,0,5676,5677,5,529,0,0,5677,5678,5,882,0,0,5678, - 5699,1,0,0,0,5679,5680,3,680,340,0,5680,5681,5,423,0,0,5681,5682, - 5,20,0,0,5682,5683,5,829,0,0,5683,5684,5,529,0,0,5684,5685,3,496, - 248,0,5685,5699,1,0,0,0,5686,5687,3,680,340,0,5687,5688,5,423,0, - 0,5688,5689,5,20,0,0,5689,5690,5,882,0,0,5690,5691,3,496,248,0,5691, - 5699,1,0,0,0,5692,5693,3,680,340,0,5693,5694,5,423,0,0,5694,5695, - 5,194,0,0,5695,5696,3,498,249,0,5696,5699,1,0,0,0,5697,5699,3,680, - 340,0,5698,5673,1,0,0,0,5698,5679,1,0,0,0,5698,5686,1,0,0,0,5698, - 5692,1,0,0,0,5698,5697,1,0,0,0,5699,495,1,0,0,0,5700,5701,5,143, - 0,0,5701,5703,5,882,0,0,5702,5700,1,0,0,0,5702,5703,1,0,0,0,5703, - 5707,1,0,0,0,5704,5705,5,147,0,0,5705,5706,5,36,0,0,5706,5708,5, - 529,0,0,5707,5704,1,0,0,0,5707,5708,1,0,0,0,5708,497,1,0,0,0,5709, - 5717,3,702,351,0,5710,5714,7,83,0,0,5711,5715,5,882,0,0,5712,5713, - 5,829,0,0,5713,5715,5,529,0,0,5714,5711,1,0,0,0,5714,5712,1,0,0, - 0,5715,5716,1,0,0,0,5716,5718,3,496,248,0,5717,5710,1,0,0,0,5717, - 5718,1,0,0,0,5718,5724,1,0,0,0,5719,5720,3,702,351,0,5720,5721,5, - 188,0,0,5721,5722,3,794,397,0,5722,5724,1,0,0,0,5723,5709,1,0,0, - 0,5723,5719,1,0,0,0,5724,499,1,0,0,0,5725,5734,5,169,0,0,5726,5734, - 5,693,0,0,5727,5728,5,331,0,0,5728,5734,5,882,0,0,5729,5730,5,441, - 0,0,5730,5734,5,882,0,0,5731,5732,5,651,0,0,5732,5734,5,882,0,0, - 5733,5725,1,0,0,0,5733,5726,1,0,0,0,5733,5727,1,0,0,0,5733,5729, - 1,0,0,0,5733,5731,1,0,0,0,5734,501,1,0,0,0,5735,5736,5,479,0,0,5736, - 5744,3,708,354,0,5737,5738,5,482,0,0,5738,5744,3,708,354,0,5739, - 5740,5,478,0,0,5740,5744,3,708,354,0,5741,5742,5,483,0,0,5742,5744, - 3,708,354,0,5743,5735,1,0,0,0,5743,5737,1,0,0,0,5743,5739,1,0,0, - 0,5743,5741,1,0,0,0,5744,503,1,0,0,0,5745,5746,5,529,0,0,5746,5753, - 5,390,0,0,5747,5754,5,42,0,0,5748,5754,5,500,0,0,5749,5750,5,87, - 0,0,5750,5751,3,708,354,0,5751,5752,5,698,0,0,5752,5754,1,0,0,0, - 5753,5747,1,0,0,0,5753,5748,1,0,0,0,5753,5749,1,0,0,0,5753,5754, - 1,0,0,0,5754,5784,1,0,0,0,5755,5756,5,529,0,0,5756,5759,5,420,0, - 0,5757,5760,5,42,0,0,5758,5760,3,708,354,0,5759,5757,1,0,0,0,5759, - 5758,1,0,0,0,5760,5784,1,0,0,0,5761,5762,5,529,0,0,5762,5763,5,581, - 0,0,5763,5768,5,87,0,0,5764,5769,5,42,0,0,5765,5766,3,708,354,0, - 5766,5767,5,698,0,0,5767,5769,1,0,0,0,5768,5764,1,0,0,0,5768,5765, - 1,0,0,0,5769,5784,1,0,0,0,5770,5771,5,529,0,0,5771,5772,5,144,0, - 0,5772,5774,5,36,0,0,5773,5775,7,84,0,0,5774,5773,1,0,0,0,5774,5775, - 1,0,0,0,5775,5784,1,0,0,0,5776,5777,5,395,0,0,5777,5784,3,708,354, - 0,5778,5781,5,530,0,0,5779,5782,3,708,354,0,5780,5782,5,669,0,0, - 5781,5779,1,0,0,0,5781,5780,1,0,0,0,5782,5784,1,0,0,0,5783,5745, - 1,0,0,0,5783,5755,1,0,0,0,5783,5761,1,0,0,0,5783,5770,1,0,0,0,5783, - 5776,1,0,0,0,5783,5778,1,0,0,0,5784,505,1,0,0,0,5785,5786,5,304, - 0,0,5786,5787,7,85,0,0,5787,507,1,0,0,0,5788,5791,5,423,0,0,5789, - 5790,5,194,0,0,5790,5792,3,702,351,0,5791,5789,1,0,0,0,5791,5792, - 1,0,0,0,5792,5801,1,0,0,0,5793,5797,5,20,0,0,5794,5798,5,882,0,0, - 5795,5796,5,829,0,0,5796,5798,5,529,0,0,5797,5794,1,0,0,0,5797,5795, - 1,0,0,0,5798,5802,1,0,0,0,5799,5800,5,13,0,0,5800,5802,5,882,0,0, - 5801,5793,1,0,0,0,5801,5799,1,0,0,0,5802,509,1,0,0,0,5803,5804,3, - 512,256,0,5804,5805,5,429,0,0,5805,5806,5,555,0,0,5806,5819,1,0, - 0,0,5807,5808,3,512,256,0,5808,5809,5,401,0,0,5809,5810,5,555,0, - 0,5810,5811,5,155,0,0,5811,5812,5,330,0,0,5812,5813,5,13,0,0,5813, - 5814,5,882,0,0,5814,5819,1,0,0,0,5815,5816,3,512,256,0,5816,5817, - 5,675,0,0,5817,5819,1,0,0,0,5818,5803,1,0,0,0,5818,5807,1,0,0,0, - 5818,5815,1,0,0,0,5819,511,1,0,0,0,5820,5821,7,86,0,0,5821,5822, - 5,394,0,0,5822,513,1,0,0,0,5823,5828,3,516,258,0,5824,5825,5,866, - 0,0,5825,5826,3,656,328,0,5826,5827,5,867,0,0,5827,5829,1,0,0,0, - 5828,5824,1,0,0,0,5828,5829,1,0,0,0,5829,515,1,0,0,0,5830,5832,5, - 7,0,0,5831,5833,5,734,0,0,5832,5831,1,0,0,0,5832,5833,1,0,0,0,5833, - 5924,1,0,0,0,5834,5836,5,8,0,0,5835,5837,5,743,0,0,5836,5835,1,0, - 0,0,5836,5837,1,0,0,0,5837,5924,1,0,0,0,5838,5846,5,34,0,0,5839, - 5840,5,660,0,0,5840,5847,5,752,0,0,5841,5847,5,743,0,0,5842,5847, - 5,684,0,0,5843,5847,5,678,0,0,5844,5847,5,658,0,0,5845,5847,5,582, - 0,0,5846,5839,1,0,0,0,5846,5841,1,0,0,0,5846,5842,1,0,0,0,5846,5843, - 1,0,0,0,5846,5844,1,0,0,0,5846,5845,1,0,0,0,5846,5847,1,0,0,0,5847, - 5924,1,0,0,0,5848,5924,5,44,0,0,5849,5851,5,51,0,0,5850,5852,5,582, - 0,0,5851,5850,1,0,0,0,5851,5852,1,0,0,0,5852,5924,1,0,0,0,5853,5924, - 5,385,0,0,5854,5924,5,717,0,0,5855,5924,5,718,0,0,5856,5857,5,73, - 0,0,5857,5924,5,121,0,0,5858,5924,5,82,0,0,5859,5924,5,86,0,0,5860, - 5861,5,104,0,0,5861,5924,5,752,0,0,5862,5924,5,735,0,0,5863,5924, - 5,547,0,0,5864,5924,5,138,0,0,5865,5924,5,736,0,0,5866,5867,5,572, - 0,0,5867,5924,7,87,0,0,5868,5924,5,154,0,0,5869,5870,5,157,0,0,5870, - 5924,7,88,0,0,5871,5924,5,749,0,0,5872,5924,5,750,0,0,5873,5924, - 5,178,0,0,5874,5924,5,185,0,0,5875,5924,5,186,0,0,5876,5924,5,705, - 0,0,5877,5924,5,706,0,0,5878,5924,5,707,0,0,5879,5924,5,709,0,0, - 5880,5924,5,710,0,0,5881,5924,5,711,0,0,5882,5924,5,712,0,0,5883, - 5924,5,714,0,0,5884,5924,5,715,0,0,5885,5924,5,716,0,0,5886,5924, - 5,719,0,0,5887,5924,5,720,0,0,5888,5924,5,721,0,0,5889,5924,5,722, - 0,0,5890,5924,5,723,0,0,5891,5924,5,724,0,0,5892,5924,5,725,0,0, - 5893,5924,5,726,0,0,5894,5924,5,727,0,0,5895,5924,5,728,0,0,5896, - 5924,5,731,0,0,5897,5924,5,732,0,0,5898,5924,5,733,0,0,5899,5924, - 5,737,0,0,5900,5924,5,738,0,0,5901,5924,5,740,0,0,5902,5924,5,741, - 0,0,5903,5924,5,742,0,0,5904,5924,5,745,0,0,5905,5924,5,746,0,0, - 5906,5924,5,747,0,0,5907,5924,5,160,0,0,5908,5924,5,748,0,0,5909, - 5924,5,836,0,0,5910,5924,5,751,0,0,5911,5924,5,753,0,0,5912,5924, - 5,838,0,0,5913,5924,5,754,0,0,5914,5924,5,755,0,0,5915,5916,5,103, - 0,0,5916,5917,5,68,0,0,5917,5924,5,744,0,0,5918,5919,5,154,0,0,5919, - 5920,5,88,0,0,5920,5924,5,744,0,0,5921,5922,5,729,0,0,5922,5924, - 5,730,0,0,5923,5830,1,0,0,0,5923,5834,1,0,0,0,5923,5838,1,0,0,0, - 5923,5848,1,0,0,0,5923,5849,1,0,0,0,5923,5853,1,0,0,0,5923,5854, - 1,0,0,0,5923,5855,1,0,0,0,5923,5856,1,0,0,0,5923,5858,1,0,0,0,5923, - 5859,1,0,0,0,5923,5860,1,0,0,0,5923,5862,1,0,0,0,5923,5863,1,0,0, - 0,5923,5864,1,0,0,0,5923,5865,1,0,0,0,5923,5866,1,0,0,0,5923,5868, - 1,0,0,0,5923,5869,1,0,0,0,5923,5871,1,0,0,0,5923,5872,1,0,0,0,5923, - 5873,1,0,0,0,5923,5874,1,0,0,0,5923,5875,1,0,0,0,5923,5876,1,0,0, - 0,5923,5877,1,0,0,0,5923,5878,1,0,0,0,5923,5879,1,0,0,0,5923,5880, - 1,0,0,0,5923,5881,1,0,0,0,5923,5882,1,0,0,0,5923,5883,1,0,0,0,5923, - 5884,1,0,0,0,5923,5885,1,0,0,0,5923,5886,1,0,0,0,5923,5887,1,0,0, - 0,5923,5888,1,0,0,0,5923,5889,1,0,0,0,5923,5890,1,0,0,0,5923,5891, - 1,0,0,0,5923,5892,1,0,0,0,5923,5893,1,0,0,0,5923,5894,1,0,0,0,5923, - 5895,1,0,0,0,5923,5896,1,0,0,0,5923,5897,1,0,0,0,5923,5898,1,0,0, - 0,5923,5899,1,0,0,0,5923,5900,1,0,0,0,5923,5901,1,0,0,0,5923,5902, - 1,0,0,0,5923,5903,1,0,0,0,5923,5904,1,0,0,0,5923,5905,1,0,0,0,5923, - 5906,1,0,0,0,5923,5907,1,0,0,0,5923,5908,1,0,0,0,5923,5909,1,0,0, - 0,5923,5910,1,0,0,0,5923,5911,1,0,0,0,5923,5912,1,0,0,0,5923,5913, - 1,0,0,0,5923,5914,1,0,0,0,5923,5915,1,0,0,0,5923,5918,1,0,0,0,5923, - 5921,1,0,0,0,5924,517,1,0,0,0,5925,5942,5,850,0,0,5926,5927,5,850, - 0,0,5927,5928,5,865,0,0,5928,5942,5,850,0,0,5929,5930,3,702,351, - 0,5930,5931,5,865,0,0,5931,5932,5,850,0,0,5932,5942,1,0,0,0,5933, - 5934,3,702,351,0,5934,5935,5,865,0,0,5935,5936,3,702,351,0,5936, - 5942,1,0,0,0,5937,5938,3,702,351,0,5938,5939,3,706,353,0,5939,5942, - 1,0,0,0,5940,5942,3,702,351,0,5941,5925,1,0,0,0,5941,5926,1,0,0, - 0,5941,5929,1,0,0,0,5941,5933,1,0,0,0,5941,5937,1,0,0,0,5941,5940, - 1,0,0,0,5942,519,1,0,0,0,5943,5944,3,680,340,0,5944,5945,5,176,0, - 0,5945,5946,3,680,340,0,5946,521,1,0,0,0,5947,5949,5,10,0,0,5948, - 5950,3,532,266,0,5949,5948,1,0,0,0,5949,5950,1,0,0,0,5950,5951,1, - 0,0,0,5951,5952,5,173,0,0,5952,5996,3,646,323,0,5953,5955,5,10,0, - 0,5954,5956,3,532,266,0,5955,5954,1,0,0,0,5955,5956,1,0,0,0,5956, - 5957,1,0,0,0,5957,5958,5,173,0,0,5958,5959,3,648,324,0,5959,5960, - 5,185,0,0,5960,5961,5,77,0,0,5961,5962,5,119,0,0,5962,5967,3,656, - 328,0,5963,5964,5,194,0,0,5964,5965,3,708,354,0,5965,5966,5,19,0, - 0,5966,5968,1,0,0,0,5967,5963,1,0,0,0,5967,5968,1,0,0,0,5968,5996, - 1,0,0,0,5969,5971,5,10,0,0,5970,5972,3,532,266,0,5971,5970,1,0,0, - 0,5971,5972,1,0,0,0,5972,5973,1,0,0,0,5973,5974,5,173,0,0,5974,5975, - 3,648,324,0,5975,5976,5,185,0,0,5976,5977,5,77,0,0,5977,5978,5,119, - 0,0,5978,5982,3,658,329,0,5979,5980,5,188,0,0,5980,5981,5,360,0, - 0,5981,5983,5,882,0,0,5982,5979,1,0,0,0,5982,5983,1,0,0,0,5983,5996, - 1,0,0,0,5984,5986,5,10,0,0,5985,5987,3,532,266,0,5986,5985,1,0,0, - 0,5986,5987,1,0,0,0,5987,5988,1,0,0,0,5988,5989,5,173,0,0,5989,5990, - 3,648,324,0,5990,5991,5,51,0,0,5991,5992,5,77,0,0,5992,5993,5,119, - 0,0,5993,5994,3,656,328,0,5994,5996,1,0,0,0,5995,5947,1,0,0,0,5995, - 5953,1,0,0,0,5995,5969,1,0,0,0,5995,5984,1,0,0,0,5996,523,1,0,0, - 0,5997,5998,5,27,0,0,5998,5999,5,173,0,0,5999,6003,3,646,323,0,6000, - 6002,3,534,267,0,6001,6000,1,0,0,0,6002,6005,1,0,0,0,6003,6001,1, - 0,0,0,6003,6004,1,0,0,0,6004,525,1,0,0,0,6005,6003,1,0,0,0,6006, - 6007,5,329,0,0,6007,6008,5,173,0,0,6008,6010,3,646,323,0,6009,6011, - 7,89,0,0,6010,6009,1,0,0,0,6010,6011,1,0,0,0,6011,527,1,0,0,0,6012, - 6014,5,120,0,0,6013,6015,3,532,266,0,6014,6013,1,0,0,0,6014,6015, - 1,0,0,0,6015,6016,1,0,0,0,6016,6017,7,60,0,0,6017,6018,3,646,323, - 0,6018,529,1,0,0,0,6019,6021,5,562,0,0,6020,6022,3,532,266,0,6021, - 6020,1,0,0,0,6021,6022,1,0,0,0,6022,6023,1,0,0,0,6023,6024,5,173, - 0,0,6024,6026,3,646,323,0,6025,6027,5,549,0,0,6026,6025,1,0,0,0, - 6026,6027,1,0,0,0,6027,6029,1,0,0,0,6028,6030,5,392,0,0,6029,6028, - 1,0,0,0,6029,6030,1,0,0,0,6030,6032,1,0,0,0,6031,6033,5,679,0,0, - 6032,6031,1,0,0,0,6032,6033,1,0,0,0,6033,531,1,0,0,0,6034,6035,7, - 90,0,0,6035,533,1,0,0,0,6036,6037,5,65,0,0,6037,6044,5,677,0,0,6038, - 6044,5,549,0,0,6039,6044,5,396,0,0,6040,6044,5,484,0,0,6041,6044, - 5,392,0,0,6042,6044,5,327,0,0,6043,6036,1,0,0,0,6043,6038,1,0,0, - 0,6043,6039,1,0,0,0,6043,6040,1,0,0,0,6043,6041,1,0,0,0,6043,6042, - 1,0,0,0,6044,535,1,0,0,0,6045,6047,5,34,0,0,6046,6048,5,307,0,0, - 6047,6046,1,0,0,0,6047,6048,1,0,0,0,6048,6049,1,0,0,0,6049,6051, - 5,409,0,0,6050,6052,3,756,378,0,6051,6050,1,0,0,0,6051,6052,1,0, - 0,0,6052,6053,1,0,0,0,6053,6054,3,626,313,0,6054,6055,5,580,0,0, - 6055,6056,7,91,0,0,6056,6057,5,603,0,0,6057,6058,5,882,0,0,6058, - 537,1,0,0,0,6059,6060,5,432,0,0,6060,6061,5,344,0,0,6061,6066,3, - 702,351,0,6062,6063,5,868,0,0,6063,6065,3,702,351,0,6064,6062,1, - 0,0,0,6065,6068,1,0,0,0,6066,6064,1,0,0,0,6066,6067,1,0,0,0,6067, - 6078,1,0,0,0,6068,6066,1,0,0,0,6069,6070,5,155,0,0,6070,6075,3,540, - 270,0,6071,6072,5,868,0,0,6072,6074,3,540,270,0,6073,6071,1,0,0, - 0,6074,6077,1,0,0,0,6075,6073,1,0,0,0,6075,6076,1,0,0,0,6076,6079, - 1,0,0,0,6077,6075,1,0,0,0,6078,6069,1,0,0,0,6078,6079,1,0,0,0,6079, - 539,1,0,0,0,6080,6081,7,92,0,0,6081,6082,3,698,349,0,6082,6083,5, - 857,0,0,6083,6084,3,800,400,0,6084,541,1,0,0,0,6085,6086,5,673,0, - 0,6086,6087,5,344,0,0,6087,6092,3,702,351,0,6088,6089,5,868,0,0, - 6089,6091,3,702,351,0,6090,6088,1,0,0,0,6091,6094,1,0,0,0,6092,6090, - 1,0,0,0,6092,6093,1,0,0,0,6093,543,1,0,0,0,6094,6092,1,0,0,0,6095, - 6096,5,432,0,0,6096,6097,5,534,0,0,6097,6098,3,702,351,0,6098,6099, - 5,603,0,0,6099,6100,5,882,0,0,6100,545,1,0,0,0,6101,6102,5,673,0, - 0,6102,6103,5,534,0,0,6103,6104,3,702,351,0,6104,547,1,0,0,0,6105, - 6106,5,713,0,0,6106,6107,5,450,0,0,6107,6108,5,360,0,0,6108,6110, - 5,367,0,0,6109,6111,5,857,0,0,6110,6109,1,0,0,0,6110,6111,1,0,0, - 0,6111,6112,1,0,0,0,6112,6136,5,882,0,0,6113,6114,5,713,0,0,6114, - 6115,5,433,0,0,6115,6116,5,68,0,0,6116,6117,3,672,336,0,6117,6118, - 5,423,0,0,6118,6119,5,20,0,0,6119,6126,5,882,0,0,6120,6121,5,360, - 0,0,6121,6123,5,367,0,0,6122,6124,5,857,0,0,6123,6122,1,0,0,0,6123, - 6124,1,0,0,0,6124,6125,1,0,0,0,6125,6127,5,882,0,0,6126,6120,1,0, - 0,0,6126,6127,1,0,0,0,6127,6133,1,0,0,0,6128,6130,5,144,0,0,6129, - 6131,5,502,0,0,6130,6129,1,0,0,0,6130,6131,1,0,0,0,6131,6132,1,0, - 0,0,6132,6134,5,169,0,0,6133,6128,1,0,0,0,6133,6134,1,0,0,0,6134, - 6136,1,0,0,0,6135,6105,1,0,0,0,6135,6113,1,0,0,0,6136,549,1,0,0, - 0,6137,6138,5,155,0,0,6138,6139,3,554,277,0,6139,6142,7,93,0,0,6140, - 6143,3,800,400,0,6141,6143,5,119,0,0,6142,6140,1,0,0,0,6142,6141, - 1,0,0,0,6143,6153,1,0,0,0,6144,6145,5,868,0,0,6145,6146,3,554,277, - 0,6146,6149,7,93,0,0,6147,6150,3,800,400,0,6148,6150,5,119,0,0,6149, - 6147,1,0,0,0,6149,6148,1,0,0,0,6150,6152,1,0,0,0,6151,6144,1,0,0, - 0,6152,6155,1,0,0,0,6153,6151,1,0,0,0,6153,6154,1,0,0,0,6154,6190, - 1,0,0,0,6155,6153,1,0,0,0,6156,6157,5,155,0,0,6157,6160,3,54,27, - 0,6158,6161,3,684,342,0,6159,6161,5,42,0,0,6160,6158,1,0,0,0,6160, - 6159,1,0,0,0,6161,6190,1,0,0,0,6162,6163,5,155,0,0,6163,6170,5,497, - 0,0,6164,6167,3,684,342,0,6165,6166,5,28,0,0,6166,6168,3,686,343, - 0,6167,6165,1,0,0,0,6167,6168,1,0,0,0,6168,6171,1,0,0,0,6169,6171, - 5,42,0,0,6170,6164,1,0,0,0,6170,6169,1,0,0,0,6171,6190,1,0,0,0,6172, - 6190,3,484,242,0,6173,6190,3,336,168,0,6174,6190,3,334,167,0,6175, - 6176,5,155,0,0,6176,6177,3,698,349,0,6177,6178,7,93,0,0,6178,6186, - 3,800,400,0,6179,6180,5,868,0,0,6180,6181,3,698,349,0,6181,6182, - 7,93,0,0,6182,6183,3,800,400,0,6183,6185,1,0,0,0,6184,6179,1,0,0, - 0,6185,6188,1,0,0,0,6186,6184,1,0,0,0,6186,6187,1,0,0,0,6187,6190, - 1,0,0,0,6188,6186,1,0,0,0,6189,6137,1,0,0,0,6189,6156,1,0,0,0,6189, - 6162,1,0,0,0,6189,6172,1,0,0,0,6189,6173,1,0,0,0,6189,6174,1,0,0, - 0,6189,6175,1,0,0,0,6190,551,1,0,0,0,6191,6192,5,157,0,0,6192,6193, - 7,62,0,0,6193,6376,5,452,0,0,6194,6195,5,157,0,0,6195,6196,7,94, - 0,0,6196,6199,5,386,0,0,6197,6198,5,80,0,0,6198,6200,5,882,0,0,6199, - 6197,1,0,0,0,6199,6200,1,0,0,0,6200,6203,1,0,0,0,6201,6202,5,68, - 0,0,6202,6204,3,708,354,0,6203,6201,1,0,0,0,6203,6204,1,0,0,0,6204, - 6212,1,0,0,0,6205,6209,5,100,0,0,6206,6207,3,708,354,0,6207,6208, - 5,868,0,0,6208,6210,1,0,0,0,6209,6206,1,0,0,0,6209,6210,1,0,0,0, - 6210,6211,1,0,0,0,6211,6213,3,708,354,0,6212,6205,1,0,0,0,6212,6213, - 1,0,0,0,6213,6215,1,0,0,0,6214,6216,3,384,192,0,6215,6214,1,0,0, - 0,6215,6216,1,0,0,0,6216,6376,1,0,0,0,6217,6218,5,157,0,0,6218,6220, - 3,556,278,0,6219,6221,3,558,279,0,6220,6219,1,0,0,0,6220,6221,1, - 0,0,0,6221,6376,1,0,0,0,6222,6224,5,157,0,0,6223,6225,5,392,0,0, - 6224,6223,1,0,0,0,6224,6225,1,0,0,0,6225,6227,1,0,0,0,6226,6228, - 5,408,0,0,6227,6226,1,0,0,0,6227,6228,1,0,0,0,6228,6229,1,0,0,0, - 6229,6230,7,46,0,0,6230,6231,7,95,0,0,6231,6234,3,648,324,0,6232, - 6233,7,95,0,0,6233,6235,3,624,312,0,6234,6232,1,0,0,0,6234,6235, - 1,0,0,0,6235,6237,1,0,0,0,6236,6238,3,558,279,0,6237,6236,1,0,0, - 0,6237,6238,1,0,0,0,6238,6376,1,0,0,0,6239,6240,5,157,0,0,6240,6241, - 5,34,0,0,6241,6243,7,0,0,0,6242,6244,3,756,378,0,6243,6242,1,0,0, - 0,6243,6244,1,0,0,0,6244,6245,1,0,0,0,6245,6376,3,624,312,0,6246, - 6247,5,157,0,0,6247,6248,5,34,0,0,6248,6249,7,96,0,0,6249,6376,3, - 698,349,0,6250,6251,5,157,0,0,6251,6252,5,34,0,0,6252,6253,5,409, - 0,0,6253,6376,3,628,314,0,6254,6255,5,157,0,0,6255,6256,5,34,0,0, - 6256,6257,5,684,0,0,6257,6376,3,632,316,0,6258,6259,5,157,0,0,6259, - 6260,5,34,0,0,6260,6261,5,173,0,0,6261,6376,3,648,324,0,6262,6263, - 5,157,0,0,6263,6264,5,34,0,0,6264,6265,5,678,0,0,6265,6376,3,680, - 340,0,6266,6267,5,157,0,0,6267,6268,5,380,0,0,6268,6269,3,688,344, - 0,6269,6270,7,97,0,0,6270,6376,1,0,0,0,6271,6272,5,157,0,0,6272, - 6376,3,560,280,0,6273,6274,5,157,0,0,6274,6282,7,98,0,0,6275,6279, - 5,100,0,0,6276,6277,3,708,354,0,6277,6278,5,868,0,0,6278,6280,1, - 0,0,0,6279,6276,1,0,0,0,6279,6280,1,0,0,0,6280,6281,1,0,0,0,6281, - 6283,3,708,354,0,6282,6275,1,0,0,0,6282,6283,1,0,0,0,6283,6376,1, - 0,0,0,6284,6285,5,157,0,0,6285,6286,5,262,0,0,6286,6287,5,866,0, - 0,6287,6288,5,850,0,0,6288,6289,5,867,0,0,6289,6376,7,98,0,0,6290, - 6291,5,157,0,0,6291,6294,3,562,281,0,6292,6293,7,95,0,0,6293,6295, - 3,624,312,0,6294,6292,1,0,0,0,6294,6295,1,0,0,0,6295,6297,1,0,0, - 0,6296,6298,3,558,279,0,6297,6296,1,0,0,0,6297,6298,1,0,0,0,6298, - 6376,1,0,0,0,6299,6300,5,157,0,0,6300,6301,5,132,0,0,6301,6302,5, - 336,0,0,6302,6376,3,698,349,0,6303,6304,5,157,0,0,6304,6305,5,409, - 0,0,6305,6306,5,336,0,0,6306,6376,3,628,314,0,6307,6308,5,157,0, - 0,6308,6315,5,414,0,0,6309,6310,5,65,0,0,6310,6313,3,652,326,0,6311, - 6312,5,188,0,0,6312,6314,3,650,325,0,6313,6311,1,0,0,0,6313,6314, - 1,0,0,0,6314,6316,1,0,0,0,6315,6309,1,0,0,0,6315,6316,1,0,0,0,6316, - 6376,1,0,0,0,6317,6319,5,157,0,0,6318,6320,5,392,0,0,6319,6318,1, - 0,0,0,6319,6320,1,0,0,0,6320,6321,1,0,0,0,6321,6322,7,99,0,0,6322, - 6323,7,95,0,0,6323,6326,3,648,324,0,6324,6325,7,95,0,0,6325,6327, - 3,624,312,0,6326,6324,1,0,0,0,6326,6327,1,0,0,0,6327,6330,1,0,0, - 0,6328,6329,5,192,0,0,6329,6331,3,800,400,0,6330,6328,1,0,0,0,6330, - 6331,1,0,0,0,6331,6376,1,0,0,0,6332,6333,5,157,0,0,6333,6334,5,516, - 0,0,6334,6337,5,752,0,0,6335,6336,7,95,0,0,6336,6338,3,624,312,0, - 6337,6335,1,0,0,0,6337,6338,1,0,0,0,6338,6340,1,0,0,0,6339,6341, - 3,558,279,0,6340,6339,1,0,0,0,6340,6341,1,0,0,0,6341,6376,1,0,0, - 0,6342,6343,5,157,0,0,6343,6352,5,545,0,0,6344,6349,3,564,282,0, - 6345,6346,5,868,0,0,6346,6348,3,564,282,0,6347,6345,1,0,0,0,6348, - 6351,1,0,0,0,6349,6347,1,0,0,0,6349,6350,1,0,0,0,6350,6353,1,0,0, - 0,6351,6349,1,0,0,0,6352,6344,1,0,0,0,6352,6353,1,0,0,0,6353,6357, - 1,0,0,0,6354,6355,5,65,0,0,6355,6356,5,548,0,0,6356,6358,3,708,354, - 0,6357,6354,1,0,0,0,6357,6358,1,0,0,0,6358,6365,1,0,0,0,6359,6360, - 5,100,0,0,6360,6363,3,708,354,0,6361,6362,5,509,0,0,6362,6364,3, - 708,354,0,6363,6361,1,0,0,0,6363,6364,1,0,0,0,6364,6366,1,0,0,0, - 6365,6359,1,0,0,0,6365,6366,1,0,0,0,6366,6376,1,0,0,0,6367,6368, - 5,157,0,0,6368,6369,7,63,0,0,6369,6371,5,645,0,0,6370,6372,3,384, - 192,0,6371,6370,1,0,0,0,6371,6372,1,0,0,0,6372,6376,1,0,0,0,6373, - 6374,5,157,0,0,6374,6376,5,564,0,0,6375,6191,1,0,0,0,6375,6194,1, - 0,0,0,6375,6217,1,0,0,0,6375,6222,1,0,0,0,6375,6239,1,0,0,0,6375, - 6246,1,0,0,0,6375,6250,1,0,0,0,6375,6254,1,0,0,0,6375,6258,1,0,0, - 0,6375,6262,1,0,0,0,6375,6266,1,0,0,0,6375,6271,1,0,0,0,6375,6273, - 1,0,0,0,6375,6284,1,0,0,0,6375,6290,1,0,0,0,6375,6299,1,0,0,0,6375, - 6303,1,0,0,0,6375,6307,1,0,0,0,6375,6317,1,0,0,0,6375,6332,1,0,0, - 0,6375,6342,1,0,0,0,6375,6367,1,0,0,0,6375,6373,1,0,0,0,6376,553, - 1,0,0,0,6377,6388,5,892,0,0,6378,6388,5,893,0,0,6379,6380,5,870, - 0,0,6380,6382,5,870,0,0,6381,6379,1,0,0,0,6381,6382,1,0,0,0,6382, - 6383,1,0,0,0,6383,6385,7,100,0,0,6384,6381,1,0,0,0,6384,6385,1,0, - 0,0,6385,6386,1,0,0,0,6386,6388,3,702,351,0,6387,6377,1,0,0,0,6387, - 6378,1,0,0,0,6387,6384,1,0,0,0,6388,555,1,0,0,0,6389,6390,5,26,0, - 0,6390,6404,5,155,0,0,6391,6404,5,823,0,0,6392,6404,5,824,0,0,6393, - 6404,5,40,0,0,6394,6404,5,153,0,0,6395,6396,5,409,0,0,6396,6404, - 5,645,0,0,6397,6398,5,132,0,0,6398,6404,5,645,0,0,6399,6401,7,61, - 0,0,6400,6399,1,0,0,0,6400,6401,1,0,0,0,6401,6402,1,0,0,0,6402,6404, - 7,101,0,0,6403,6389,1,0,0,0,6403,6391,1,0,0,0,6403,6392,1,0,0,0, - 6403,6393,1,0,0,0,6403,6394,1,0,0,0,6403,6395,1,0,0,0,6403,6397, - 1,0,0,0,6403,6400,1,0,0,0,6404,557,1,0,0,0,6405,6406,5,99,0,0,6406, - 6410,5,882,0,0,6407,6408,5,192,0,0,6408,6410,3,800,400,0,6409,6405, - 1,0,0,0,6409,6407,1,0,0,0,6410,559,1,0,0,0,6411,6413,5,647,0,0,6412, - 6411,1,0,0,0,6412,6413,1,0,0,0,6413,6414,1,0,0,0,6414,6429,5,381, - 0,0,6415,6416,5,453,0,0,6416,6429,5,645,0,0,6417,6429,5,536,0,0, - 6418,6429,5,734,0,0,6419,6421,5,408,0,0,6420,6419,1,0,0,0,6420,6421, - 1,0,0,0,6421,6422,1,0,0,0,6422,6429,5,544,0,0,6423,6429,5,546,0, - 0,6424,6425,5,598,0,0,6425,6429,5,422,0,0,6426,6429,5,312,0,0,6427, - 6429,5,356,0,0,6428,6412,1,0,0,0,6428,6415,1,0,0,0,6428,6417,1,0, - 0,0,6428,6418,1,0,0,0,6428,6420,1,0,0,0,6428,6423,1,0,0,0,6428,6424, - 1,0,0,0,6428,6426,1,0,0,0,6428,6427,1,0,0,0,6429,561,1,0,0,0,6430, - 6442,5,386,0,0,6431,6432,5,173,0,0,6432,6442,5,645,0,0,6433,6435, - 5,392,0,0,6434,6433,1,0,0,0,6434,6435,1,0,0,0,6435,6437,1,0,0,0, - 6436,6438,5,408,0,0,6437,6436,1,0,0,0,6437,6438,1,0,0,0,6438,6439, - 1,0,0,0,6439,6442,5,752,0,0,6440,6442,5,667,0,0,6441,6430,1,0,0, - 0,6441,6431,1,0,0,0,6441,6434,1,0,0,0,6441,6440,1,0,0,0,6442,563, - 1,0,0,0,6443,6456,5,7,0,0,6444,6445,5,320,0,0,6445,6456,5,437,0, - 0,6446,6447,5,355,0,0,6447,6456,5,656,0,0,6448,6456,5,358,0,0,6449, - 6456,5,439,0,0,6450,6456,5,802,0,0,6451,6452,5,521,0,0,6452,6456, - 5,397,0,0,6453,6456,5,605,0,0,6454,6456,5,655,0,0,6455,6443,1,0, - 0,0,6455,6444,1,0,0,0,6455,6446,1,0,0,0,6455,6448,1,0,0,0,6455,6449, - 1,0,0,0,6455,6450,1,0,0,0,6455,6451,1,0,0,0,6455,6453,1,0,0,0,6455, - 6454,1,0,0,0,6456,565,1,0,0,0,6457,6458,5,318,0,0,6458,6459,5,882, - 0,0,6459,567,1,0,0,0,6460,6461,5,324,0,0,6461,6479,5,82,0,0,6462, - 6467,3,588,294,0,6463,6464,5,868,0,0,6464,6466,3,588,294,0,6465, - 6463,1,0,0,0,6466,6469,1,0,0,0,6467,6465,1,0,0,0,6467,6468,1,0,0, - 0,6468,6480,1,0,0,0,6469,6467,1,0,0,0,6470,6471,3,648,324,0,6471, - 6472,5,130,0,0,6472,6475,5,866,0,0,6473,6476,3,666,333,0,6474,6476, - 5,7,0,0,6475,6473,1,0,0,0,6475,6474,1,0,0,0,6476,6477,1,0,0,0,6477, - 6478,5,867,0,0,6478,6480,1,0,0,0,6479,6462,1,0,0,0,6479,6470,1,0, - 0,0,6480,6481,1,0,0,0,6481,6482,5,80,0,0,6482,6483,3,624,312,0,6483, - 569,1,0,0,0,6484,6486,5,404,0,0,6485,6487,3,532,266,0,6486,6485, - 1,0,0,0,6486,6487,1,0,0,0,6487,6488,1,0,0,0,6488,6493,3,590,295, - 0,6489,6490,5,868,0,0,6490,6492,3,590,295,0,6491,6489,1,0,0,0,6492, - 6495,1,0,0,0,6493,6491,1,0,0,0,6493,6494,1,0,0,0,6494,571,1,0,0, - 0,6495,6493,1,0,0,0,6496,6498,5,94,0,0,6497,6499,7,102,0,0,6498, - 6497,1,0,0,0,6498,6499,1,0,0,0,6499,6500,1,0,0,0,6500,6501,3,800, - 400,0,6501,573,1,0,0,0,6502,6503,5,103,0,0,6503,6504,5,82,0,0,6504, - 6505,5,88,0,0,6505,6506,5,324,0,0,6506,6511,3,594,297,0,6507,6508, - 5,868,0,0,6508,6510,3,594,297,0,6509,6507,1,0,0,0,6510,6513,1,0, - 0,0,6511,6509,1,0,0,0,6511,6512,1,0,0,0,6512,575,1,0,0,0,6513,6511, - 1,0,0,0,6514,6515,5,575,0,0,6515,6520,3,578,289,0,6516,6517,5,868, - 0,0,6517,6519,3,578,289,0,6518,6516,1,0,0,0,6519,6522,1,0,0,0,6520, - 6518,1,0,0,0,6520,6521,1,0,0,0,6521,577,1,0,0,0,6522,6520,1,0,0, - 0,6523,6529,5,453,0,0,6524,6529,5,563,0,0,6525,6526,5,548,0,0,6526, - 6529,5,324,0,0,6527,6529,5,598,0,0,6528,6523,1,0,0,0,6528,6524,1, - 0,0,0,6528,6525,1,0,0,0,6528,6527,1,0,0,0,6529,579,1,0,0,0,6530, - 6531,5,575,0,0,6531,6536,5,531,0,0,6532,6534,3,754,377,0,6533,6532, - 1,0,0,0,6533,6534,1,0,0,0,6534,6535,1,0,0,0,6535,6537,3,702,351, - 0,6536,6533,1,0,0,0,6536,6537,1,0,0,0,6537,581,1,0,0,0,6538,6539, - 5,575,0,0,6539,6541,7,63,0,0,6540,6542,5,7,0,0,6541,6540,1,0,0,0, - 6541,6542,1,0,0,0,6542,6544,1,0,0,0,6543,6545,3,384,192,0,6544,6543, - 1,0,0,0,6544,6545,1,0,0,0,6545,583,1,0,0,0,6546,6547,5,576,0,0,6547, - 585,1,0,0,0,6548,6549,5,749,0,0,6549,587,1,0,0,0,6550,6556,3,648, - 324,0,6551,6552,7,18,0,0,6552,6553,5,866,0,0,6553,6554,3,636,318, - 0,6554,6555,5,867,0,0,6555,6557,1,0,0,0,6556,6551,1,0,0,0,6556,6557, - 1,0,0,0,6557,589,1,0,0,0,6558,6577,5,366,0,0,6559,6577,5,422,0,0, - 6560,6562,7,103,0,0,6561,6560,1,0,0,0,6561,6562,1,0,0,0,6562,6563, - 1,0,0,0,6563,6577,5,452,0,0,6564,6577,5,517,0,0,6565,6577,5,734, - 0,0,6566,6567,5,548,0,0,6567,6577,5,324,0,0,6568,6577,5,645,0,0, - 6569,6577,5,680,0,0,6570,6574,5,752,0,0,6571,6572,5,194,0,0,6572, - 6573,5,135,0,0,6573,6575,5,104,0,0,6574,6571,1,0,0,0,6574,6575,1, - 0,0,0,6575,6577,1,0,0,0,6576,6558,1,0,0,0,6576,6559,1,0,0,0,6576, - 6561,1,0,0,0,6576,6564,1,0,0,0,6576,6565,1,0,0,0,6576,6566,1,0,0, - 0,6576,6568,1,0,0,0,6576,6569,1,0,0,0,6576,6570,1,0,0,0,6577,6591, - 1,0,0,0,6578,6579,5,556,0,0,6579,6581,5,452,0,0,6580,6582,3,384, - 192,0,6581,6580,1,0,0,0,6581,6582,1,0,0,0,6582,6591,1,0,0,0,6583, - 6585,7,60,0,0,6584,6586,3,646,323,0,6585,6584,1,0,0,0,6585,6586, - 1,0,0,0,6586,6588,1,0,0,0,6587,6589,3,592,296,0,6588,6587,1,0,0, - 0,6588,6589,1,0,0,0,6589,6591,1,0,0,0,6590,6576,1,0,0,0,6590,6578, - 1,0,0,0,6590,6583,1,0,0,0,6591,591,1,0,0,0,6592,6593,5,194,0,0,6593, - 6594,5,135,0,0,6594,6598,5,104,0,0,6595,6596,5,65,0,0,6596,6598, - 5,391,0,0,6597,6592,1,0,0,0,6597,6595,1,0,0,0,6598,593,1,0,0,0,6599, - 6607,3,648,324,0,6600,6601,5,130,0,0,6601,6604,5,866,0,0,6602,6605, - 3,666,333,0,6603,6605,5,7,0,0,6604,6602,1,0,0,0,6604,6603,1,0,0, - 0,6605,6606,1,0,0,0,6606,6608,5,867,0,0,6607,6600,1,0,0,0,6607,6608, - 1,0,0,0,6608,6616,1,0,0,0,6609,6611,7,18,0,0,6610,6609,1,0,0,0,6610, - 6611,1,0,0,0,6611,6612,1,0,0,0,6612,6613,5,866,0,0,6613,6614,3,636, - 318,0,6614,6615,5,867,0,0,6615,6617,1,0,0,0,6616,6610,1,0,0,0,6616, - 6617,1,0,0,0,6617,6620,1,0,0,0,6618,6619,5,79,0,0,6619,6621,5,446, - 0,0,6620,6618,1,0,0,0,6620,6621,1,0,0,0,6621,595,1,0,0,0,6622,6623, - 7,104,0,0,6623,6626,3,648,324,0,6624,6627,3,658,329,0,6625,6627, - 5,882,0,0,6626,6624,1,0,0,0,6626,6625,1,0,0,0,6626,6627,1,0,0,0, - 6627,597,1,0,0,0,6628,6634,7,104,0,0,6629,6635,5,392,0,0,6630,6635, - 5,528,0,0,6631,6632,5,826,0,0,6632,6633,5,857,0,0,6633,6635,7,105, - 0,0,6634,6629,1,0,0,0,6634,6630,1,0,0,0,6634,6631,1,0,0,0,6634,6635, - 1,0,0,0,6635,6636,1,0,0,0,6636,6637,3,620,310,0,6637,599,1,0,0,0, - 6638,6639,7,104,0,0,6639,6643,5,10,0,0,6640,6641,5,826,0,0,6641, - 6642,5,857,0,0,6642,6644,5,666,0,0,6643,6640,1,0,0,0,6643,6644,1, - 0,0,0,6644,6645,1,0,0,0,6645,6646,3,204,102,0,6646,601,1,0,0,0,6647, - 6648,5,419,0,0,6648,6649,5,882,0,0,6649,603,1,0,0,0,6650,6651,5, - 187,0,0,6651,6652,3,624,312,0,6652,605,1,0,0,0,6653,6661,5,158,0, - 0,6654,6656,5,164,0,0,6655,6657,5,682,0,0,6656,6655,1,0,0,0,6656, - 6657,1,0,0,0,6657,6658,1,0,0,0,6658,6662,3,712,356,0,6659,6662,5, - 889,0,0,6660,6662,5,890,0,0,6661,6654,1,0,0,0,6661,6659,1,0,0,0, - 6661,6660,1,0,0,0,6662,6672,1,0,0,0,6663,6664,5,155,0,0,6664,6669, - 3,610,305,0,6665,6666,5,868,0,0,6666,6668,3,610,305,0,6667,6665, - 1,0,0,0,6668,6671,1,0,0,0,6669,6667,1,0,0,0,6669,6670,1,0,0,0,6670, - 6673,1,0,0,0,6671,6669,1,0,0,0,6672,6663,1,0,0,0,6672,6673,1,0,0, - 0,6673,607,1,0,0,0,6674,6682,5,145,0,0,6675,6677,5,164,0,0,6676, - 6678,5,682,0,0,6677,6676,1,0,0,0,6677,6678,1,0,0,0,6678,6679,1,0, - 0,0,6679,6683,3,712,356,0,6680,6683,5,889,0,0,6681,6683,5,890,0, - 0,6682,6675,1,0,0,0,6682,6680,1,0,0,0,6682,6681,1,0,0,0,6682,6683, - 1,0,0,0,6683,6693,1,0,0,0,6684,6685,5,155,0,0,6685,6690,3,610,305, - 0,6686,6687,5,868,0,0,6687,6689,3,610,305,0,6688,6686,1,0,0,0,6689, - 6692,1,0,0,0,6690,6688,1,0,0,0,6690,6691,1,0,0,0,6691,6694,1,0,0, - 0,6692,6690,1,0,0,0,6693,6684,1,0,0,0,6693,6694,1,0,0,0,6694,609, - 1,0,0,0,6695,6696,7,106,0,0,6696,6701,5,857,0,0,6697,6702,3,712, - 356,0,6698,6702,5,883,0,0,6699,6702,3,682,341,0,6700,6702,3,704, - 352,0,6701,6697,1,0,0,0,6701,6698,1,0,0,0,6701,6699,1,0,0,0,6701, - 6700,1,0,0,0,6702,611,1,0,0,0,6703,6705,5,194,0,0,6704,6706,5,552, - 0,0,6705,6704,1,0,0,0,6705,6706,1,0,0,0,6706,6707,1,0,0,0,6707,6712, - 3,48,24,0,6708,6709,5,868,0,0,6709,6711,3,48,24,0,6710,6708,1,0, - 0,0,6711,6714,1,0,0,0,6712,6710,1,0,0,0,6712,6713,1,0,0,0,6713,613, - 1,0,0,0,6714,6712,1,0,0,0,6715,6716,5,173,0,0,6716,6718,3,648,324, - 0,6717,6719,3,252,126,0,6718,6717,1,0,0,0,6718,6719,1,0,0,0,6719, - 6721,1,0,0,0,6720,6722,3,312,156,0,6721,6720,1,0,0,0,6721,6722,1, - 0,0,0,6722,615,1,0,0,0,6723,6725,5,72,0,0,6724,6726,7,107,0,0,6725, - 6724,1,0,0,0,6725,6726,1,0,0,0,6726,6727,1,0,0,0,6727,6759,5,48, - 0,0,6728,6729,3,554,277,0,6729,6730,5,857,0,0,6730,6738,7,108,0, - 0,6731,6732,5,868,0,0,6732,6733,3,554,277,0,6733,6734,5,857,0,0, - 6734,6735,7,108,0,0,6735,6737,1,0,0,0,6736,6731,1,0,0,0,6737,6740, - 1,0,0,0,6738,6736,1,0,0,0,6738,6739,1,0,0,0,6739,6760,1,0,0,0,6740, - 6738,1,0,0,0,6741,6744,5,30,0,0,6742,6745,3,708,354,0,6743,6745, - 3,554,277,0,6744,6742,1,0,0,0,6744,6743,1,0,0,0,6745,6746,1,0,0, - 0,6746,6747,3,554,277,0,6747,6748,5,857,0,0,6748,6756,3,618,309, - 0,6749,6750,5,868,0,0,6750,6751,3,554,277,0,6751,6752,5,857,0,0, - 6752,6753,3,618,309,0,6753,6755,1,0,0,0,6754,6749,1,0,0,0,6755,6758, - 1,0,0,0,6756,6754,1,0,0,0,6756,6757,1,0,0,0,6757,6760,1,0,0,0,6758, - 6756,1,0,0,0,6759,6728,1,0,0,0,6759,6741,1,0,0,0,6760,617,1,0,0, - 0,6761,6762,7,109,0,0,6762,619,1,0,0,0,6763,6769,3,204,102,0,6764, - 6769,3,180,90,0,6765,6769,3,186,93,0,6766,6769,3,202,101,0,6767, - 6769,3,214,107,0,6768,6763,1,0,0,0,6768,6764,1,0,0,0,6768,6765,1, - 0,0,0,6768,6766,1,0,0,0,6768,6767,1,0,0,0,6769,6774,1,0,0,0,6770, - 6771,5,65,0,0,6771,6772,5,349,0,0,6772,6774,3,702,351,0,6773,6768, - 1,0,0,0,6773,6770,1,0,0,0,6774,621,1,0,0,0,6775,6776,3,698,349,0, - 6776,623,1,0,0,0,6777,6778,3,698,349,0,6778,625,1,0,0,0,6779,6780, - 3,698,349,0,6780,627,1,0,0,0,6781,6782,3,698,349,0,6782,629,1,0, - 0,0,6783,6784,3,698,349,0,6784,631,1,0,0,0,6785,6786,3,698,349,0, - 6786,633,1,0,0,0,6787,6788,3,702,351,0,6788,635,1,0,0,0,6789,6794, - 3,638,319,0,6790,6791,5,868,0,0,6791,6793,3,638,319,0,6792,6790, - 1,0,0,0,6793,6796,1,0,0,0,6794,6792,1,0,0,0,6794,6795,1,0,0,0,6795, - 637,1,0,0,0,6796,6794,1,0,0,0,6797,6798,3,702,351,0,6798,639,1,0, - 0,0,6799,6800,3,702,351,0,6800,641,1,0,0,0,6801,6802,3,702,351,0, - 6802,643,1,0,0,0,6803,6804,3,698,349,0,6804,645,1,0,0,0,6805,6810, - 3,648,324,0,6806,6807,5,868,0,0,6807,6809,3,648,324,0,6808,6806, - 1,0,0,0,6809,6812,1,0,0,0,6810,6808,1,0,0,0,6810,6811,1,0,0,0,6811, - 647,1,0,0,0,6812,6810,1,0,0,0,6813,6814,3,698,349,0,6814,649,1,0, - 0,0,6815,6820,3,652,326,0,6816,6817,5,868,0,0,6817,6819,3,652,326, - 0,6818,6816,1,0,0,0,6819,6822,1,0,0,0,6820,6818,1,0,0,0,6820,6821, - 1,0,0,0,6821,651,1,0,0,0,6822,6820,1,0,0,0,6823,6826,3,680,340,0, - 6824,6826,3,702,351,0,6825,6823,1,0,0,0,6825,6824,1,0,0,0,6826,653, - 1,0,0,0,6827,6832,3,702,351,0,6828,6830,3,706,353,0,6829,6831,3, - 706,353,0,6830,6829,1,0,0,0,6830,6831,1,0,0,0,6831,6833,1,0,0,0, - 6832,6828,1,0,0,0,6832,6833,1,0,0,0,6833,6842,1,0,0,0,6834,6836, - 9,0,0,0,6835,6834,1,0,0,0,6835,6836,1,0,0,0,6836,6837,1,0,0,0,6837, - 6839,3,706,353,0,6838,6840,3,706,353,0,6839,6838,1,0,0,0,6839,6840, - 1,0,0,0,6840,6842,1,0,0,0,6841,6827,1,0,0,0,6841,6835,1,0,0,0,6842, - 655,1,0,0,0,6843,6848,3,658,329,0,6844,6845,5,868,0,0,6845,6847, - 3,658,329,0,6846,6844,1,0,0,0,6847,6850,1,0,0,0,6848,6846,1,0,0, - 0,6848,6849,1,0,0,0,6849,657,1,0,0,0,6850,6848,1,0,0,0,6851,6856, - 3,702,351,0,6852,6854,3,706,353,0,6853,6855,3,706,353,0,6854,6853, - 1,0,0,0,6854,6855,1,0,0,0,6855,6857,1,0,0,0,6856,6852,1,0,0,0,6856, - 6857,1,0,0,0,6857,6867,1,0,0,0,6858,6860,9,0,0,0,6859,6858,1,0,0, - 0,6859,6860,1,0,0,0,6860,6861,1,0,0,0,6861,6863,3,706,353,0,6862, - 6864,3,706,353,0,6863,6862,1,0,0,0,6863,6864,1,0,0,0,6864,6867,1, - 0,0,0,6865,6867,4,329,3,0,6866,6851,1,0,0,0,6866,6859,1,0,0,0,6866, - 6865,1,0,0,0,6867,659,1,0,0,0,6868,6869,3,702,351,0,6869,661,1,0, - 0,0,6870,6871,3,702,351,0,6871,663,1,0,0,0,6872,6873,3,702,351,0, - 6873,665,1,0,0,0,6874,6879,3,668,334,0,6875,6876,5,868,0,0,6876, - 6878,3,668,334,0,6877,6875,1,0,0,0,6878,6881,1,0,0,0,6879,6877,1, - 0,0,0,6879,6880,1,0,0,0,6880,667,1,0,0,0,6881,6879,1,0,0,0,6882, - 6883,3,702,351,0,6883,669,1,0,0,0,6884,6889,3,702,351,0,6885,6886, - 5,866,0,0,6886,6887,3,708,354,0,6887,6888,5,867,0,0,6888,6890,1, - 0,0,0,6889,6885,1,0,0,0,6889,6890,1,0,0,0,6890,6893,1,0,0,0,6891, - 6893,3,800,400,0,6892,6884,1,0,0,0,6892,6891,1,0,0,0,6893,6895,1, - 0,0,0,6894,6896,7,54,0,0,6895,6894,1,0,0,0,6895,6896,1,0,0,0,6896, - 671,1,0,0,0,6897,6898,3,674,337,0,6898,6899,5,878,0,0,6899,6900, - 3,708,354,0,6900,673,1,0,0,0,6901,6902,3,676,338,0,6902,6903,5,891, - 0,0,6903,675,1,0,0,0,6904,6909,5,882,0,0,6905,6909,5,889,0,0,6906, - 6909,5,704,0,0,6907,6909,3,830,415,0,6908,6904,1,0,0,0,6908,6905, - 1,0,0,0,6908,6906,1,0,0,0,6908,6907,1,0,0,0,6909,677,1,0,0,0,6910, - 6911,7,110,0,0,6911,679,1,0,0,0,6912,6914,3,676,338,0,6913,6915, - 3,678,339,0,6914,6913,1,0,0,0,6914,6915,1,0,0,0,6915,6918,1,0,0, - 0,6916,6918,3,56,28,0,6917,6912,1,0,0,0,6917,6916,1,0,0,0,6918,681, - 1,0,0,0,6919,6920,7,111,0,0,6920,683,1,0,0,0,6921,6926,5,228,0,0, - 6922,6926,3,820,410,0,6923,6926,5,882,0,0,6924,6926,5,879,0,0,6925, - 6921,1,0,0,0,6925,6922,1,0,0,0,6925,6923,1,0,0,0,6925,6924,1,0,0, - 0,6926,685,1,0,0,0,6927,6928,3,702,351,0,6928,687,1,0,0,0,6929,6933, - 3,690,345,0,6930,6933,5,889,0,0,6931,6933,5,882,0,0,6932,6929,1, - 0,0,0,6932,6930,1,0,0,0,6932,6931,1,0,0,0,6933,689,1,0,0,0,6934, - 6935,7,112,0,0,6935,691,1,0,0,0,6936,6937,3,708,354,0,6937,6938, - 5,854,0,0,6938,6939,3,708,354,0,6939,6940,5,854,0,0,6940,6941,3, - 708,354,0,6941,6942,5,854,0,0,6942,6943,3,708,354,0,6943,6944,5, - 854,0,0,6944,6950,3,708,354,0,6945,6946,5,878,0,0,6946,6947,3,708, - 354,0,6947,6948,5,854,0,0,6948,6949,3,708,354,0,6949,6951,1,0,0, - 0,6950,6945,1,0,0,0,6951,6952,1,0,0,0,6952,6950,1,0,0,0,6952,6953, - 1,0,0,0,6953,693,1,0,0,0,6954,6961,3,696,348,0,6955,6956,5,868,0, - 0,6956,6959,3,696,348,0,6957,6958,5,868,0,0,6958,6960,3,708,354, - 0,6959,6957,1,0,0,0,6959,6960,1,0,0,0,6960,6962,1,0,0,0,6961,6955, - 1,0,0,0,6961,6962,1,0,0,0,6962,695,1,0,0,0,6963,6971,5,882,0,0,6964, - 6971,5,887,0,0,6965,6967,5,884,0,0,6966,6965,1,0,0,0,6967,6968,1, - 0,0,0,6968,6966,1,0,0,0,6968,6969,1,0,0,0,6969,6971,1,0,0,0,6970, - 6963,1,0,0,0,6970,6964,1,0,0,0,6970,6966,1,0,0,0,6971,697,1,0,0, - 0,6972,6974,3,702,351,0,6973,6975,3,706,353,0,6974,6973,1,0,0,0, - 6974,6975,1,0,0,0,6975,699,1,0,0,0,6976,6981,3,702,351,0,6977,6978, - 5,868,0,0,6978,6980,3,702,351,0,6979,6977,1,0,0,0,6980,6983,1,0, - 0,0,6981,6979,1,0,0,0,6981,6982,1,0,0,0,6982,701,1,0,0,0,6983,6981, - 1,0,0,0,6984,6988,3,704,352,0,6985,6988,5,879,0,0,6986,6988,5,882, - 0,0,6987,6984,1,0,0,0,6987,6985,1,0,0,0,6987,6986,1,0,0,0,6988,703, - 1,0,0,0,6989,6999,5,889,0,0,6990,6999,3,820,410,0,6991,6999,3,822, - 411,0,6992,6999,3,690,345,0,6993,6999,3,824,412,0,6994,6999,3,826, - 413,0,6995,6999,3,828,414,0,6996,6999,3,830,415,0,6997,6999,3,792, - 396,0,6998,6989,1,0,0,0,6998,6990,1,0,0,0,6998,6991,1,0,0,0,6998, - 6992,1,0,0,0,6998,6993,1,0,0,0,6998,6994,1,0,0,0,6998,6995,1,0,0, - 0,6998,6996,1,0,0,0,6998,6997,1,0,0,0,6999,705,1,0,0,0,7000,7001, - 5,865,0,0,7001,7005,5,889,0,0,7002,7003,5,865,0,0,7003,7005,3,702, - 351,0,7004,7000,1,0,0,0,7004,7002,1,0,0,0,7005,707,1,0,0,0,7006, - 7007,7,113,0,0,7007,709,1,0,0,0,7008,7011,5,880,0,0,7009,7011,3, - 708,354,0,7010,7008,1,0,0,0,7010,7009,1,0,0,0,7011,711,1,0,0,0,7012, - 7014,5,888,0,0,7013,7012,1,0,0,0,7013,7014,1,0,0,0,7014,7015,1,0, - 0,0,7015,7018,5,882,0,0,7016,7018,5,881,0,0,7017,7013,1,0,0,0,7017, - 7016,1,0,0,0,7018,7020,1,0,0,0,7019,7021,5,882,0,0,7020,7019,1,0, - 0,0,7021,7022,1,0,0,0,7022,7020,1,0,0,0,7022,7023,1,0,0,0,7023,7036, - 1,0,0,0,7024,7026,5,888,0,0,7025,7024,1,0,0,0,7025,7026,1,0,0,0, - 7026,7027,1,0,0,0,7027,7030,5,882,0,0,7028,7030,5,881,0,0,7029,7025, - 1,0,0,0,7029,7028,1,0,0,0,7030,7033,1,0,0,0,7031,7032,5,28,0,0,7032, - 7034,3,686,343,0,7033,7031,1,0,0,0,7033,7034,1,0,0,0,7034,7036,1, - 0,0,0,7035,7017,1,0,0,0,7035,7029,1,0,0,0,7036,713,1,0,0,0,7037, - 7038,7,114,0,0,7038,715,1,0,0,0,7039,7041,5,888,0,0,7040,7039,1, - 0,0,0,7040,7041,1,0,0,0,7041,7042,1,0,0,0,7042,7043,5,884,0,0,7043, - 717,1,0,0,0,7044,7046,5,114,0,0,7045,7044,1,0,0,0,7045,7046,1,0, - 0,0,7046,7047,1,0,0,0,7047,7048,7,115,0,0,7048,719,1,0,0,0,7049, - 7062,3,712,356,0,7050,7062,3,708,354,0,7051,7052,5,854,0,0,7052, - 7062,3,708,354,0,7053,7062,3,716,358,0,7054,7062,3,714,357,0,7055, - 7062,5,885,0,0,7056,7062,5,887,0,0,7057,7059,5,114,0,0,7058,7057, - 1,0,0,0,7058,7059,1,0,0,0,7059,7060,1,0,0,0,7060,7062,7,115,0,0, - 7061,7049,1,0,0,0,7061,7050,1,0,0,0,7061,7051,1,0,0,0,7061,7053, - 1,0,0,0,7061,7054,1,0,0,0,7061,7055,1,0,0,0,7061,7056,1,0,0,0,7061, - 7058,1,0,0,0,7062,721,1,0,0,0,7063,7065,7,116,0,0,7064,7066,5,240, - 0,0,7065,7064,1,0,0,0,7065,7066,1,0,0,0,7066,7068,1,0,0,0,7067,7069, - 3,728,364,0,7068,7067,1,0,0,0,7068,7069,1,0,0,0,7069,7071,1,0,0, - 0,7070,7072,5,228,0,0,7071,7070,1,0,0,0,7071,7072,1,0,0,0,7072,7076, - 1,0,0,0,7073,7074,3,54,27,0,7074,7075,3,684,342,0,7075,7077,1,0, - 0,0,7076,7073,1,0,0,0,7076,7077,1,0,0,0,7077,7081,1,0,0,0,7078,7079, - 5,28,0,0,7079,7082,3,686,343,0,7080,7082,5,228,0,0,7081,7078,1,0, - 0,0,7081,7080,1,0,0,0,7081,7082,1,0,0,0,7082,7190,1,0,0,0,7083,7084, - 5,227,0,0,7084,7085,7,117,0,0,7085,7087,5,240,0,0,7086,7088,3,728, - 364,0,7087,7086,1,0,0,0,7087,7088,1,0,0,0,7088,7090,1,0,0,0,7089, - 7091,5,228,0,0,7090,7089,1,0,0,0,7090,7091,1,0,0,0,7091,7190,1,0, - 0,0,7092,7093,5,227,0,0,7093,7095,7,118,0,0,7094,7096,3,728,364, - 0,7095,7094,1,0,0,0,7095,7096,1,0,0,0,7096,7098,1,0,0,0,7097,7099, - 5,228,0,0,7098,7097,1,0,0,0,7098,7099,1,0,0,0,7099,7190,1,0,0,0, - 7100,7101,5,498,0,0,7101,7103,5,225,0,0,7102,7104,3,728,364,0,7103, - 7102,1,0,0,0,7103,7104,1,0,0,0,7104,7106,1,0,0,0,7105,7107,5,228, - 0,0,7106,7105,1,0,0,0,7106,7107,1,0,0,0,7107,7190,1,0,0,0,7108,7110, - 7,119,0,0,7109,7111,3,728,364,0,7110,7109,1,0,0,0,7110,7111,1,0, - 0,0,7111,7115,1,0,0,0,7112,7114,7,120,0,0,7113,7112,1,0,0,0,7114, - 7117,1,0,0,0,7115,7113,1,0,0,0,7115,7116,1,0,0,0,7116,7190,1,0,0, - 0,7117,7115,1,0,0,0,7118,7120,5,210,0,0,7119,7121,3,730,365,0,7120, - 7119,1,0,0,0,7120,7121,1,0,0,0,7121,7125,1,0,0,0,7122,7124,7,120, - 0,0,7123,7122,1,0,0,0,7124,7127,1,0,0,0,7125,7123,1,0,0,0,7125,7126, - 1,0,0,0,7126,7190,1,0,0,0,7127,7125,1,0,0,0,7128,7130,5,211,0,0, - 7129,7131,5,212,0,0,7130,7129,1,0,0,0,7130,7131,1,0,0,0,7131,7133, - 1,0,0,0,7132,7134,3,730,365,0,7133,7132,1,0,0,0,7133,7134,1,0,0, - 0,7134,7138,1,0,0,0,7135,7137,7,120,0,0,7136,7135,1,0,0,0,7137,7140, - 1,0,0,0,7138,7136,1,0,0,0,7138,7139,1,0,0,0,7139,7190,1,0,0,0,7140, - 7138,1,0,0,0,7141,7143,7,121,0,0,7142,7144,3,732,366,0,7143,7142, - 1,0,0,0,7143,7144,1,0,0,0,7144,7148,1,0,0,0,7145,7147,7,120,0,0, - 7146,7145,1,0,0,0,7147,7150,1,0,0,0,7148,7146,1,0,0,0,7148,7149, - 1,0,0,0,7149,7190,1,0,0,0,7150,7148,1,0,0,0,7151,7190,7,122,0,0, - 7152,7154,7,123,0,0,7153,7155,3,728,364,0,7154,7153,1,0,0,0,7154, - 7155,1,0,0,0,7155,7190,1,0,0,0,7156,7157,7,124,0,0,7157,7159,3,724, - 362,0,7158,7160,5,228,0,0,7159,7158,1,0,0,0,7159,7160,1,0,0,0,7160, - 7164,1,0,0,0,7161,7162,3,54,27,0,7162,7163,3,684,342,0,7163,7165, - 1,0,0,0,7164,7161,1,0,0,0,7164,7165,1,0,0,0,7165,7190,1,0,0,0,7166, - 7169,7,125,0,0,7167,7168,5,834,0,0,7168,7170,3,708,354,0,7169,7167, - 1,0,0,0,7169,7170,1,0,0,0,7170,7190,1,0,0,0,7171,7173,5,233,0,0, - 7172,7174,5,225,0,0,7173,7172,1,0,0,0,7173,7174,1,0,0,0,7174,7176, - 1,0,0,0,7175,7177,5,228,0,0,7176,7175,1,0,0,0,7176,7177,1,0,0,0, - 7177,7181,1,0,0,0,7178,7179,3,54,27,0,7179,7180,3,684,342,0,7180, - 7182,1,0,0,0,7181,7178,1,0,0,0,7181,7182,1,0,0,0,7182,7185,1,0,0, - 0,7183,7184,5,28,0,0,7184,7186,3,686,343,0,7185,7183,1,0,0,0,7185, - 7186,1,0,0,0,7186,7190,1,0,0,0,7187,7188,5,233,0,0,7188,7190,5,229, - 0,0,7189,7063,1,0,0,0,7189,7083,1,0,0,0,7189,7092,1,0,0,0,7189,7100, - 1,0,0,0,7189,7108,1,0,0,0,7189,7118,1,0,0,0,7189,7128,1,0,0,0,7189, - 7141,1,0,0,0,7189,7151,1,0,0,0,7189,7152,1,0,0,0,7189,7156,1,0,0, - 0,7189,7166,1,0,0,0,7189,7171,1,0,0,0,7189,7187,1,0,0,0,7190,723, - 1,0,0,0,7191,7192,5,866,0,0,7192,7197,5,882,0,0,7193,7194,5,868, - 0,0,7194,7196,5,882,0,0,7195,7193,1,0,0,0,7196,7199,1,0,0,0,7197, - 7195,1,0,0,0,7197,7198,1,0,0,0,7198,7200,1,0,0,0,7199,7197,1,0,0, - 0,7200,7201,5,867,0,0,7201,725,1,0,0,0,7202,7204,7,126,0,0,7203, - 7205,3,728,364,0,7204,7203,1,0,0,0,7204,7205,1,0,0,0,7205,7225,1, - 0,0,0,7206,7208,5,224,0,0,7207,7209,3,728,364,0,7208,7207,1,0,0, - 0,7208,7209,1,0,0,0,7209,7213,1,0,0,0,7210,7211,3,54,27,0,7211,7212, - 3,684,342,0,7212,7214,1,0,0,0,7213,7210,1,0,0,0,7213,7214,1,0,0, - 0,7214,7225,1,0,0,0,7215,7225,7,127,0,0,7216,7218,7,128,0,0,7217, - 7219,3,732,366,0,7218,7217,1,0,0,0,7218,7219,1,0,0,0,7219,7225,1, - 0,0,0,7220,7222,7,129,0,0,7221,7223,7,130,0,0,7222,7221,1,0,0,0, - 7222,7223,1,0,0,0,7223,7225,1,0,0,0,7224,7202,1,0,0,0,7224,7206, - 1,0,0,0,7224,7215,1,0,0,0,7224,7216,1,0,0,0,7224,7220,1,0,0,0,7225, - 7227,1,0,0,0,7226,7228,5,12,0,0,7227,7226,1,0,0,0,7227,7228,1,0, - 0,0,7228,727,1,0,0,0,7229,7230,5,866,0,0,7230,7231,3,708,354,0,7231, - 7232,5,867,0,0,7232,729,1,0,0,0,7233,7234,5,866,0,0,7234,7235,3, - 708,354,0,7235,7236,5,868,0,0,7236,7237,3,708,354,0,7237,7238,5, - 867,0,0,7238,731,1,0,0,0,7239,7240,5,866,0,0,7240,7243,3,708,354, - 0,7241,7242,5,868,0,0,7242,7244,3,708,354,0,7243,7241,1,0,0,0,7243, - 7244,1,0,0,0,7244,7245,1,0,0,0,7245,7246,5,867,0,0,7246,733,1,0, - 0,0,7247,7248,5,866,0,0,7248,7253,3,670,335,0,7249,7250,5,868,0, - 0,7250,7252,3,670,335,0,7251,7249,1,0,0,0,7252,7255,1,0,0,0,7253, - 7251,1,0,0,0,7253,7254,1,0,0,0,7254,7256,1,0,0,0,7255,7253,1,0,0, - 0,7256,7257,5,867,0,0,7257,735,1,0,0,0,7258,7263,3,800,400,0,7259, - 7260,5,868,0,0,7260,7262,3,800,400,0,7261,7259,1,0,0,0,7262,7265, - 1,0,0,0,7263,7261,1,0,0,0,7263,7264,1,0,0,0,7264,737,1,0,0,0,7265, - 7263,1,0,0,0,7266,7267,7,131,0,0,7267,7272,3,740,370,0,7268,7269, - 5,868,0,0,7269,7271,3,740,370,0,7270,7268,1,0,0,0,7271,7274,1,0, - 0,0,7272,7270,1,0,0,0,7272,7273,1,0,0,0,7273,739,1,0,0,0,7274,7272, - 1,0,0,0,7275,7276,5,866,0,0,7276,7281,3,742,371,0,7277,7278,5,868, - 0,0,7278,7280,3,742,371,0,7279,7277,1,0,0,0,7280,7283,1,0,0,0,7281, - 7279,1,0,0,0,7281,7282,1,0,0,0,7282,7284,1,0,0,0,7283,7281,1,0,0, - 0,7284,7285,5,867,0,0,7285,741,1,0,0,0,7286,7289,3,800,400,0,7287, - 7289,5,42,0,0,7288,7286,1,0,0,0,7288,7287,1,0,0,0,7289,743,1,0,0, - 0,7290,7295,3,720,360,0,7291,7292,5,868,0,0,7292,7294,3,720,360, - 0,7293,7291,1,0,0,0,7294,7297,1,0,0,0,7295,7293,1,0,0,0,7295,7296, - 1,0,0,0,7296,745,1,0,0,0,7297,7295,1,0,0,0,7298,7303,5,882,0,0,7299, - 7300,5,868,0,0,7300,7302,5,882,0,0,7301,7299,1,0,0,0,7302,7305,1, - 0,0,0,7303,7301,1,0,0,0,7303,7304,1,0,0,0,7304,747,1,0,0,0,7305, - 7303,1,0,0,0,7306,7311,5,892,0,0,7307,7308,5,868,0,0,7308,7310,5, - 892,0,0,7309,7307,1,0,0,0,7310,7313,1,0,0,0,7311,7309,1,0,0,0,7311, - 7312,1,0,0,0,7312,749,1,0,0,0,7313,7311,1,0,0,0,7314,7341,5,116, - 0,0,7315,7316,5,24,0,0,7316,7317,5,866,0,0,7317,7318,3,800,400,0, - 7318,7319,5,13,0,0,7319,7320,3,726,363,0,7320,7321,5,867,0,0,7321, - 7341,1,0,0,0,7322,7324,3,806,403,0,7323,7322,1,0,0,0,7323,7324,1, - 0,0,0,7324,7325,1,0,0,0,7325,7341,3,720,360,0,7326,7330,3,752,376, - 0,7327,7328,5,119,0,0,7328,7329,5,185,0,0,7329,7331,3,752,376,0, - 7330,7327,1,0,0,0,7330,7331,1,0,0,0,7331,7341,1,0,0,0,7332,7333, - 5,866,0,0,7333,7334,3,800,400,0,7334,7335,5,867,0,0,7335,7341,1, - 0,0,0,7336,7337,5,866,0,0,7337,7338,3,698,349,0,7338,7339,5,867, - 0,0,7339,7341,1,0,0,0,7340,7314,1,0,0,0,7340,7315,1,0,0,0,7340,7323, - 1,0,0,0,7340,7326,1,0,0,0,7340,7332,1,0,0,0,7340,7336,1,0,0,0,7341, - 751,1,0,0,0,7342,7348,7,132,0,0,7343,7345,5,866,0,0,7344,7346,3, - 708,354,0,7345,7344,1,0,0,0,7345,7346,1,0,0,0,7346,7347,1,0,0,0, - 7347,7349,5,867,0,0,7348,7343,1,0,0,0,7348,7349,1,0,0,0,7349,7357, - 1,0,0,0,7350,7351,5,295,0,0,7351,7353,5,866,0,0,7352,7354,3,708, - 354,0,7353,7352,1,0,0,0,7353,7354,1,0,0,0,7354,7355,1,0,0,0,7355, - 7357,5,867,0,0,7356,7342,1,0,0,0,7356,7350,1,0,0,0,7357,753,1,0, - 0,0,7358,7359,5,78,0,0,7359,7360,5,60,0,0,7360,755,1,0,0,0,7361, - 7362,5,78,0,0,7362,7363,5,114,0,0,7363,7364,5,60,0,0,7364,757,1, - 0,0,0,7365,7366,5,124,0,0,7366,7367,5,143,0,0,7367,759,1,0,0,0,7368, - 7391,3,762,381,0,7369,7391,3,770,385,0,7370,7391,3,772,386,0,7371, - 7378,3,792,396,0,7372,7373,5,866,0,0,7373,7379,5,867,0,0,7374,7375, - 5,866,0,0,7375,7376,3,796,398,0,7376,7377,5,867,0,0,7377,7379,1, - 0,0,0,7378,7372,1,0,0,0,7378,7374,1,0,0,0,7379,7391,1,0,0,0,7380, - 7387,3,628,314,0,7381,7382,5,866,0,0,7382,7388,5,867,0,0,7383,7384, - 5,866,0,0,7384,7385,3,796,398,0,7385,7386,5,867,0,0,7386,7388,1, - 0,0,0,7387,7381,1,0,0,0,7387,7383,1,0,0,0,7388,7391,1,0,0,0,7389, - 7391,3,794,397,0,7390,7368,1,0,0,0,7390,7369,1,0,0,0,7390,7370,1, - 0,0,0,7390,7371,1,0,0,0,7390,7380,1,0,0,0,7390,7389,1,0,0,0,7391, - 761,1,0,0,0,7392,7395,7,133,0,0,7393,7394,5,866,0,0,7394,7396,5, - 867,0,0,7395,7393,1,0,0,0,7395,7396,1,0,0,0,7396,7572,1,0,0,0,7397, - 7572,3,56,28,0,7398,7399,5,33,0,0,7399,7400,5,866,0,0,7400,7401, - 3,800,400,0,7401,7402,5,868,0,0,7402,7403,3,726,363,0,7403,7404, - 5,867,0,0,7404,7572,1,0,0,0,7405,7406,5,33,0,0,7406,7407,5,866,0, - 0,7407,7408,3,800,400,0,7408,7409,5,188,0,0,7409,7410,3,684,342, - 0,7410,7411,5,867,0,0,7411,7572,1,0,0,0,7412,7413,5,24,0,0,7413, - 7414,5,866,0,0,7414,7415,3,800,400,0,7415,7416,5,13,0,0,7416,7417, - 3,726,363,0,7417,7418,5,867,0,0,7418,7572,1,0,0,0,7419,7420,5,189, - 0,0,7420,7421,5,866,0,0,7421,7422,3,658,329,0,7422,7423,5,867,0, - 0,7423,7572,1,0,0,0,7424,7426,5,23,0,0,7425,7427,3,764,382,0,7426, - 7425,1,0,0,0,7427,7428,1,0,0,0,7428,7426,1,0,0,0,7428,7429,1,0,0, - 0,7429,7432,1,0,0,0,7430,7431,5,53,0,0,7431,7433,3,798,399,0,7432, - 7430,1,0,0,0,7432,7433,1,0,0,0,7433,7434,1,0,0,0,7434,7435,5,378, - 0,0,7435,7572,1,0,0,0,7436,7437,5,23,0,0,7437,7439,3,800,400,0,7438, - 7440,3,764,382,0,7439,7438,1,0,0,0,7440,7441,1,0,0,0,7441,7439,1, - 0,0,0,7441,7442,1,0,0,0,7442,7445,1,0,0,0,7443,7444,5,53,0,0,7444, - 7446,3,798,399,0,7445,7443,1,0,0,0,7445,7446,1,0,0,0,7446,7447,1, - 0,0,0,7447,7448,5,378,0,0,7448,7572,1,0,0,0,7449,7450,5,224,0,0, - 7450,7451,5,866,0,0,7451,7454,3,796,398,0,7452,7453,5,188,0,0,7453, - 7455,3,684,342,0,7454,7452,1,0,0,0,7454,7455,1,0,0,0,7455,7456,1, - 0,0,0,7456,7457,5,867,0,0,7457,7572,1,0,0,0,7458,7459,5,296,0,0, - 7459,7462,5,866,0,0,7460,7463,3,712,356,0,7461,7463,3,800,400,0, - 7462,7460,1,0,0,0,7462,7461,1,0,0,0,7463,7464,1,0,0,0,7464,7467, - 5,80,0,0,7465,7468,3,712,356,0,7466,7468,3,800,400,0,7467,7465,1, - 0,0,0,7467,7466,1,0,0,0,7468,7469,1,0,0,0,7469,7470,5,867,0,0,7470, - 7572,1,0,0,0,7471,7472,7,134,0,0,7472,7475,5,866,0,0,7473,7476,3, - 712,356,0,7474,7476,3,800,400,0,7475,7473,1,0,0,0,7475,7474,1,0, - 0,0,7476,7477,1,0,0,0,7477,7480,5,68,0,0,7478,7481,3,708,354,0,7479, - 7481,3,800,400,0,7480,7478,1,0,0,0,7480,7479,1,0,0,0,7481,7487,1, - 0,0,0,7482,7485,5,65,0,0,7483,7486,3,708,354,0,7484,7486,3,800,400, - 0,7485,7483,1,0,0,0,7485,7484,1,0,0,0,7486,7488,1,0,0,0,7487,7482, - 1,0,0,0,7487,7488,1,0,0,0,7488,7489,1,0,0,0,7489,7490,5,867,0,0, - 7490,7572,1,0,0,0,7491,7492,5,300,0,0,7492,7493,5,866,0,0,7493,7496, - 7,135,0,0,7494,7497,3,712,356,0,7495,7497,3,800,400,0,7496,7494, - 1,0,0,0,7496,7495,1,0,0,0,7496,7497,1,0,0,0,7497,7498,1,0,0,0,7498, - 7501,5,68,0,0,7499,7502,3,712,356,0,7500,7502,3,800,400,0,7501,7499, - 1,0,0,0,7501,7500,1,0,0,0,7502,7503,1,0,0,0,7503,7504,5,867,0,0, - 7504,7572,1,0,0,0,7505,7506,5,300,0,0,7506,7509,5,866,0,0,7507,7510, - 3,712,356,0,7508,7510,3,800,400,0,7509,7507,1,0,0,0,7509,7508,1, - 0,0,0,7510,7511,1,0,0,0,7511,7514,5,68,0,0,7512,7515,3,712,356,0, - 7513,7515,3,800,400,0,7514,7512,1,0,0,0,7514,7513,1,0,0,0,7515,7516, - 1,0,0,0,7516,7517,5,867,0,0,7517,7572,1,0,0,0,7518,7519,5,840,0, - 0,7519,7522,5,866,0,0,7520,7523,3,712,356,0,7521,7523,3,800,400, - 0,7522,7520,1,0,0,0,7522,7521,1,0,0,0,7523,7530,1,0,0,0,7524,7525, - 5,13,0,0,7525,7526,7,136,0,0,7526,7527,5,866,0,0,7527,7528,3,708, - 354,0,7528,7529,5,867,0,0,7529,7531,1,0,0,0,7530,7524,1,0,0,0,7530, - 7531,1,0,0,0,7531,7533,1,0,0,0,7532,7534,3,766,383,0,7533,7532,1, - 0,0,0,7533,7534,1,0,0,0,7534,7535,1,0,0,0,7535,7536,5,867,0,0,7536, - 7572,1,0,0,0,7537,7538,5,293,0,0,7538,7539,5,866,0,0,7539,7540,3, - 66,33,0,7540,7543,5,68,0,0,7541,7544,3,712,356,0,7542,7544,3,800, - 400,0,7543,7541,1,0,0,0,7543,7542,1,0,0,0,7544,7545,1,0,0,0,7545, - 7546,5,867,0,0,7546,7572,1,0,0,0,7547,7548,5,827,0,0,7548,7549,5, - 866,0,0,7549,7550,7,137,0,0,7550,7551,5,868,0,0,7551,7552,3,712, - 356,0,7552,7553,5,867,0,0,7553,7572,1,0,0,0,7554,7555,5,254,0,0, - 7555,7556,5,866,0,0,7556,7557,3,800,400,0,7557,7558,5,868,0,0,7558, - 7561,3,800,400,0,7559,7560,5,579,0,0,7560,7562,3,726,363,0,7561, - 7559,1,0,0,0,7561,7562,1,0,0,0,7562,7564,1,0,0,0,7563,7565,3,286, - 143,0,7564,7563,1,0,0,0,7564,7565,1,0,0,0,7565,7567,1,0,0,0,7566, - 7568,3,288,144,0,7567,7566,1,0,0,0,7567,7568,1,0,0,0,7568,7569,1, - 0,0,0,7569,7570,5,867,0,0,7570,7572,1,0,0,0,7571,7392,1,0,0,0,7571, - 7397,1,0,0,0,7571,7398,1,0,0,0,7571,7405,1,0,0,0,7571,7412,1,0,0, - 0,7571,7419,1,0,0,0,7571,7424,1,0,0,0,7571,7436,1,0,0,0,7571,7449, - 1,0,0,0,7571,7458,1,0,0,0,7571,7471,1,0,0,0,7571,7491,1,0,0,0,7571, - 7505,1,0,0,0,7571,7518,1,0,0,0,7571,7537,1,0,0,0,7571,7547,1,0,0, - 0,7571,7554,1,0,0,0,7572,763,1,0,0,0,7573,7574,5,191,0,0,7574,7575, - 3,798,399,0,7575,7576,5,175,0,0,7576,7577,3,798,399,0,7577,765,1, - 0,0,0,7578,7579,5,448,0,0,7579,7584,3,768,384,0,7580,7581,5,868, - 0,0,7581,7583,3,768,384,0,7582,7580,1,0,0,0,7583,7586,1,0,0,0,7584, - 7582,1,0,0,0,7584,7585,1,0,0,0,7585,7593,1,0,0,0,7586,7584,1,0,0, - 0,7587,7588,5,448,0,0,7588,7589,3,708,354,0,7589,7590,5,854,0,0, - 7590,7591,3,708,354,0,7591,7593,1,0,0,0,7592,7578,1,0,0,0,7592,7587, - 1,0,0,0,7593,767,1,0,0,0,7594,7596,3,708,354,0,7595,7597,7,138,0, - 0,7596,7595,1,0,0,0,7596,7597,1,0,0,0,7597,769,1,0,0,0,7598,7599, - 7,139,0,0,7599,7601,5,866,0,0,7600,7602,7,44,0,0,7601,7600,1,0,0, - 0,7601,7602,1,0,0,0,7602,7603,1,0,0,0,7603,7604,3,798,399,0,7604, - 7606,5,867,0,0,7605,7607,3,774,387,0,7606,7605,1,0,0,0,7606,7607, - 1,0,0,0,7607,7658,1,0,0,0,7608,7609,5,262,0,0,7609,7617,5,866,0, - 0,7610,7618,5,850,0,0,7611,7613,5,7,0,0,7612,7611,1,0,0,0,7612,7613, - 1,0,0,0,7613,7614,1,0,0,0,7614,7618,3,798,399,0,7615,7616,5,49,0, - 0,7616,7618,3,796,398,0,7617,7610,1,0,0,0,7617,7612,1,0,0,0,7617, - 7615,1,0,0,0,7618,7619,1,0,0,0,7619,7621,5,867,0,0,7620,7622,3,774, - 387,0,7621,7620,1,0,0,0,7621,7622,1,0,0,0,7622,7658,1,0,0,0,7623, - 7624,7,140,0,0,7624,7626,5,866,0,0,7625,7627,5,7,0,0,7626,7625,1, - 0,0,0,7626,7627,1,0,0,0,7627,7628,1,0,0,0,7628,7629,3,798,399,0, - 7629,7631,5,867,0,0,7630,7632,3,774,387,0,7631,7630,1,0,0,0,7631, - 7632,1,0,0,0,7632,7658,1,0,0,0,7633,7634,5,266,0,0,7634,7636,5,866, - 0,0,7635,7637,5,49,0,0,7636,7635,1,0,0,0,7636,7637,1,0,0,0,7637, - 7638,1,0,0,0,7638,7649,3,796,398,0,7639,7640,5,125,0,0,7640,7641, - 5,20,0,0,7641,7646,3,254,127,0,7642,7643,5,868,0,0,7643,7645,3,254, - 127,0,7644,7642,1,0,0,0,7645,7648,1,0,0,0,7646,7644,1,0,0,0,7646, - 7647,1,0,0,0,7647,7650,1,0,0,0,7648,7646,1,0,0,0,7649,7639,1,0,0, - 0,7649,7650,1,0,0,0,7650,7653,1,0,0,0,7651,7652,5,156,0,0,7652,7654, - 5,882,0,0,7653,7651,1,0,0,0,7653,7654,1,0,0,0,7654,7655,1,0,0,0, - 7655,7656,5,867,0,0,7656,7658,1,0,0,0,7657,7598,1,0,0,0,7657,7608, - 1,0,0,0,7657,7623,1,0,0,0,7657,7633,1,0,0,0,7658,771,1,0,0,0,7659, - 7660,7,141,0,0,7660,7661,5,866,0,0,7661,7664,3,800,400,0,7662,7663, - 5,868,0,0,7663,7665,3,708,354,0,7664,7662,1,0,0,0,7664,7665,1,0, - 0,0,7665,7668,1,0,0,0,7666,7667,5,868,0,0,7667,7669,3,708,354,0, - 7668,7666,1,0,0,0,7668,7669,1,0,0,0,7669,7670,1,0,0,0,7670,7671, - 5,867,0,0,7671,7672,3,774,387,0,7672,7698,1,0,0,0,7673,7674,7,142, - 0,0,7674,7675,5,866,0,0,7675,7676,3,800,400,0,7676,7677,5,867,0, - 0,7677,7678,3,774,387,0,7678,7698,1,0,0,0,7679,7680,7,143,0,0,7680, - 7681,5,866,0,0,7681,7682,5,867,0,0,7682,7698,3,774,387,0,7683,7684, - 5,273,0,0,7684,7685,5,866,0,0,7685,7686,3,800,400,0,7686,7687,5, - 868,0,0,7687,7688,3,708,354,0,7688,7689,5,867,0,0,7689,7690,3,774, - 387,0,7690,7698,1,0,0,0,7691,7692,5,272,0,0,7692,7693,5,866,0,0, - 7693,7694,3,708,354,0,7694,7695,5,867,0,0,7695,7696,3,774,387,0, - 7696,7698,1,0,0,0,7697,7659,1,0,0,0,7697,7673,1,0,0,0,7697,7679, - 1,0,0,0,7697,7683,1,0,0,0,7697,7691,1,0,0,0,7698,773,1,0,0,0,7699, - 7705,5,129,0,0,7700,7701,5,866,0,0,7701,7702,3,776,388,0,7702,7703, - 5,867,0,0,7703,7706,1,0,0,0,7704,7706,3,778,389,0,7705,7700,1,0, - 0,0,7705,7704,1,0,0,0,7706,775,1,0,0,0,7707,7709,3,778,389,0,7708, - 7707,1,0,0,0,7708,7709,1,0,0,0,7709,7711,1,0,0,0,7710,7712,3,790, - 395,0,7711,7710,1,0,0,0,7711,7712,1,0,0,0,7712,7714,1,0,0,0,7713, - 7715,3,252,126,0,7714,7713,1,0,0,0,7714,7715,1,0,0,0,7715,7717,1, - 0,0,0,7716,7718,3,780,390,0,7717,7716,1,0,0,0,7717,7718,1,0,0,0, - 7718,777,1,0,0,0,7719,7720,3,702,351,0,7720,779,1,0,0,0,7721,7722, - 3,782,391,0,7722,7723,3,784,392,0,7723,781,1,0,0,0,7724,7725,7,144, - 0,0,7725,783,1,0,0,0,7726,7729,3,788,394,0,7727,7729,3,786,393,0, - 7728,7726,1,0,0,0,7728,7727,1,0,0,0,7729,785,1,0,0,0,7730,7731,5, - 17,0,0,7731,7732,3,788,394,0,7732,7733,5,11,0,0,7733,7734,3,788, - 394,0,7734,787,1,0,0,0,7735,7736,5,36,0,0,7736,7743,5,586,0,0,7737, - 7738,5,669,0,0,7738,7743,7,145,0,0,7739,7740,3,800,400,0,7740,7741, - 7,145,0,0,7741,7743,1,0,0,0,7742,7735,1,0,0,0,7742,7737,1,0,0,0, - 7742,7739,1,0,0,0,7743,789,1,0,0,0,7744,7745,5,130,0,0,7745,7746, - 5,20,0,0,7746,7751,3,800,400,0,7747,7748,5,868,0,0,7748,7750,3,800, - 400,0,7749,7747,1,0,0,0,7750,7753,1,0,0,0,7751,7749,1,0,0,0,7751, - 7752,1,0,0,0,7752,791,1,0,0,0,7753,7751,1,0,0,0,7754,7779,3,832, - 416,0,7755,7779,5,757,0,0,7756,7779,5,289,0,0,7757,7779,5,285,0, - 0,7758,7779,5,286,0,0,7759,7779,5,287,0,0,7760,7779,5,290,0,0,7761, - 7779,5,291,0,0,7762,7779,5,292,0,0,7763,7779,5,78,0,0,7764,7779, - 5,86,0,0,7765,7779,5,288,0,0,7766,7779,5,294,0,0,7767,7779,5,488, - 0,0,7768,7779,5,295,0,0,7769,7779,5,142,0,0,7770,7779,5,143,0,0, - 7771,7779,5,297,0,0,7772,7779,5,298,0,0,7773,7779,5,299,0,0,7774, - 7779,5,300,0,0,7775,7779,5,301,0,0,7776,7779,5,302,0,0,7777,7779, - 5,303,0,0,7778,7754,1,0,0,0,7778,7755,1,0,0,0,7778,7756,1,0,0,0, - 7778,7757,1,0,0,0,7778,7758,1,0,0,0,7778,7759,1,0,0,0,7778,7760, - 1,0,0,0,7778,7761,1,0,0,0,7778,7762,1,0,0,0,7778,7763,1,0,0,0,7778, - 7764,1,0,0,0,7778,7765,1,0,0,0,7778,7766,1,0,0,0,7778,7767,1,0,0, - 0,7778,7768,1,0,0,0,7778,7769,1,0,0,0,7778,7770,1,0,0,0,7778,7771, - 1,0,0,0,7778,7772,1,0,0,0,7778,7773,1,0,0,0,7778,7774,1,0,0,0,7778, - 7775,1,0,0,0,7778,7776,1,0,0,0,7778,7777,1,0,0,0,7779,793,1,0,0, - 0,7780,7781,7,146,0,0,7781,7782,5,866,0,0,7782,7783,3,798,399,0, - 7783,7784,5,867,0,0,7784,795,1,0,0,0,7785,7790,3,798,399,0,7786, - 7787,5,868,0,0,7787,7789,3,798,399,0,7788,7786,1,0,0,0,7789,7792, - 1,0,0,0,7790,7788,1,0,0,0,7790,7791,1,0,0,0,7791,797,1,0,0,0,7792, - 7790,1,0,0,0,7793,7797,3,720,360,0,7794,7797,3,760,380,0,7795,7797, - 3,800,400,0,7796,7793,1,0,0,0,7796,7794,1,0,0,0,7796,7795,1,0,0, - 0,7797,799,1,0,0,0,7798,7799,6,400,-1,0,7799,7800,7,147,0,0,7800, - 7810,3,800,400,4,7801,7802,3,802,401,0,7802,7804,5,89,0,0,7803,7805, - 5,114,0,0,7804,7803,1,0,0,0,7804,7805,1,0,0,0,7805,7806,1,0,0,0, - 7806,7807,7,148,0,0,7807,7810,1,0,0,0,7808,7810,3,802,401,0,7809, - 7798,1,0,0,0,7809,7801,1,0,0,0,7809,7808,1,0,0,0,7810,7817,1,0,0, - 0,7811,7812,10,3,0,0,7812,7813,3,812,406,0,7813,7814,3,800,400,4, - 7814,7816,1,0,0,0,7815,7811,1,0,0,0,7816,7819,1,0,0,0,7817,7815, - 1,0,0,0,7817,7818,1,0,0,0,7818,801,1,0,0,0,7819,7817,1,0,0,0,7820, - 7821,6,401,-1,0,7821,7822,3,804,402,0,7822,7886,1,0,0,0,7823,7825, - 10,6,0,0,7824,7826,5,114,0,0,7825,7824,1,0,0,0,7825,7826,1,0,0,0, - 7826,7827,1,0,0,0,7827,7828,5,17,0,0,7828,7829,3,802,401,0,7829, - 7830,5,11,0,0,7830,7831,3,802,401,7,7831,7885,1,0,0,0,7832,7833, - 10,5,0,0,7833,7834,5,604,0,0,7834,7835,5,99,0,0,7835,7885,3,802, - 401,6,7836,7838,10,3,0,0,7837,7839,5,114,0,0,7838,7837,1,0,0,0,7838, - 7839,1,0,0,0,7839,7840,1,0,0,0,7840,7841,7,149,0,0,7841,7885,3,802, - 401,4,7842,7844,10,9,0,0,7843,7845,5,114,0,0,7844,7843,1,0,0,0,7844, - 7845,1,0,0,0,7845,7846,1,0,0,0,7846,7847,5,80,0,0,7847,7850,5,866, - 0,0,7848,7851,3,204,102,0,7849,7851,3,736,368,0,7850,7848,1,0,0, - 0,7850,7849,1,0,0,0,7851,7852,1,0,0,0,7852,7853,5,867,0,0,7853,7885, - 1,0,0,0,7854,7855,10,8,0,0,7855,7856,5,89,0,0,7856,7885,3,718,359, - 0,7857,7858,10,7,0,0,7858,7865,3,808,404,0,7859,7860,7,150,0,0,7860, - 7861,5,866,0,0,7861,7862,3,204,102,0,7862,7863,5,867,0,0,7863,7866, - 1,0,0,0,7864,7866,3,802,401,0,7865,7859,1,0,0,0,7865,7864,1,0,0, - 0,7866,7885,1,0,0,0,7867,7869,10,4,0,0,7868,7870,5,114,0,0,7869, - 7868,1,0,0,0,7869,7870,1,0,0,0,7870,7871,1,0,0,0,7871,7872,5,99, - 0,0,7872,7875,3,802,401,0,7873,7874,5,384,0,0,7874,7876,5,882,0, - 0,7875,7873,1,0,0,0,7875,7876,1,0,0,0,7876,7885,1,0,0,0,7877,7878, - 10,2,0,0,7878,7879,5,485,0,0,7879,7880,5,510,0,0,7880,7881,5,866, - 0,0,7881,7882,3,802,401,0,7882,7883,5,867,0,0,7883,7885,1,0,0,0, - 7884,7823,1,0,0,0,7884,7832,1,0,0,0,7884,7836,1,0,0,0,7884,7842, - 1,0,0,0,7884,7854,1,0,0,0,7884,7857,1,0,0,0,7884,7867,1,0,0,0,7884, - 7877,1,0,0,0,7885,7888,1,0,0,0,7886,7884,1,0,0,0,7886,7887,1,0,0, - 0,7887,803,1,0,0,0,7888,7886,1,0,0,0,7889,7890,6,402,-1,0,7890,7938, - 3,720,360,0,7891,7938,3,760,380,0,7892,7938,3,682,341,0,7893,7894, - 3,806,403,0,7894,7895,3,804,402,12,7895,7938,1,0,0,0,7896,7897,5, - 228,0,0,7897,7938,3,804,402,11,7898,7899,5,892,0,0,7899,7900,5,841, - 0,0,7900,7938,3,804,402,10,7901,7902,5,866,0,0,7902,7907,3,800,400, - 0,7903,7904,5,868,0,0,7904,7906,3,800,400,0,7905,7903,1,0,0,0,7906, - 7909,1,0,0,0,7907,7905,1,0,0,0,7907,7908,1,0,0,0,7908,7910,1,0,0, - 0,7909,7907,1,0,0,0,7910,7911,5,867,0,0,7911,7938,1,0,0,0,7912,7913, - 5,586,0,0,7913,7914,5,866,0,0,7914,7917,3,800,400,0,7915,7916,5, - 868,0,0,7916,7918,3,800,400,0,7917,7915,1,0,0,0,7918,7919,1,0,0, - 0,7919,7917,1,0,0,0,7919,7920,1,0,0,0,7920,7921,1,0,0,0,7921,7922, - 5,867,0,0,7922,7938,1,0,0,0,7923,7924,5,60,0,0,7924,7925,5,866,0, - 0,7925,7926,3,204,102,0,7926,7927,5,867,0,0,7927,7938,1,0,0,0,7928, - 7929,5,866,0,0,7929,7930,3,204,102,0,7930,7931,5,867,0,0,7931,7938, - 1,0,0,0,7932,7933,5,87,0,0,7933,7934,3,800,400,0,7934,7935,3,66, - 33,0,7935,7938,1,0,0,0,7936,7938,3,658,329,0,7937,7889,1,0,0,0,7937, - 7891,1,0,0,0,7937,7892,1,0,0,0,7937,7893,1,0,0,0,7937,7896,1,0,0, - 0,7937,7898,1,0,0,0,7937,7901,1,0,0,0,7937,7912,1,0,0,0,7937,7923, - 1,0,0,0,7937,7928,1,0,0,0,7937,7932,1,0,0,0,7937,7936,1,0,0,0,7938, - 7956,1,0,0,0,7939,7940,10,4,0,0,7940,7941,3,818,409,0,7941,7942, - 3,804,402,5,7942,7955,1,0,0,0,7943,7944,10,3,0,0,7944,7945,3,814, - 407,0,7945,7946,3,804,402,4,7946,7955,1,0,0,0,7947,7948,10,2,0,0, - 7948,7949,3,816,408,0,7949,7950,3,804,402,3,7950,7955,1,0,0,0,7951, - 7952,10,14,0,0,7952,7953,5,28,0,0,7953,7955,3,686,343,0,7954,7939, - 1,0,0,0,7954,7943,1,0,0,0,7954,7947,1,0,0,0,7954,7951,1,0,0,0,7955, - 7958,1,0,0,0,7956,7954,1,0,0,0,7956,7957,1,0,0,0,7957,805,1,0,0, - 0,7958,7956,1,0,0,0,7959,7960,7,151,0,0,7960,807,1,0,0,0,7961,7962, - 5,859,0,0,7962,7970,5,858,0,0,7963,7964,5,860,0,0,7964,7970,5,857, - 0,0,7965,7966,5,859,0,0,7966,7967,5,857,0,0,7967,7970,5,858,0,0, - 7968,7970,3,810,405,0,7969,7961,1,0,0,0,7969,7963,1,0,0,0,7969,7965, - 1,0,0,0,7969,7968,1,0,0,0,7970,809,1,0,0,0,7971,7972,5,859,0,0,7972, - 7979,5,857,0,0,7973,7974,5,858,0,0,7974,7979,5,857,0,0,7975,7979, - 5,857,0,0,7976,7979,5,858,0,0,7977,7979,5,859,0,0,7978,7971,1,0, - 0,0,7978,7973,1,0,0,0,7978,7975,1,0,0,0,7978,7976,1,0,0,0,7978,7977, - 1,0,0,0,7979,811,1,0,0,0,7980,7988,5,11,0,0,7981,7982,5,863,0,0, - 7982,7988,5,863,0,0,7983,7988,5,196,0,0,7984,7988,5,124,0,0,7985, - 7986,5,862,0,0,7986,7988,5,862,0,0,7987,7980,1,0,0,0,7987,7981,1, - 0,0,0,7987,7983,1,0,0,0,7987,7984,1,0,0,0,7987,7985,1,0,0,0,7988, - 813,1,0,0,0,7989,7990,5,859,0,0,7990,7997,5,859,0,0,7991,7992,5, - 858,0,0,7992,7997,5,858,0,0,7993,7997,5,863,0,0,7994,7997,5,864, - 0,0,7995,7997,5,862,0,0,7996,7989,1,0,0,0,7996,7991,1,0,0,0,7996, - 7993,1,0,0,0,7996,7994,1,0,0,0,7996,7995,1,0,0,0,7997,815,1,0,0, - 0,7998,7999,7,152,0,0,7999,817,1,0,0,0,8000,8001,5,854,0,0,8001, - 8006,5,858,0,0,8002,8003,5,854,0,0,8003,8004,5,858,0,0,8004,8006, - 5,858,0,0,8005,8000,1,0,0,0,8005,8002,1,0,0,0,8006,819,1,0,0,0,8007, - 8008,7,153,0,0,8008,821,1,0,0,0,8009,8010,7,154,0,0,8010,823,1,0, - 0,0,8011,8012,7,155,0,0,8012,825,1,0,0,0,8013,8014,7,156,0,0,8014, - 827,1,0,0,0,8015,8016,7,157,0,0,8016,829,1,0,0,0,8017,8018,7,158, - 0,0,8018,831,1,0,0,0,8019,8020,7,159,0,0,8020,833,1,0,0,0,1154,837, - 844,847,856,899,918,929,945,950,962,997,1007,1012,1018,1023,1027, - 1036,1039,1042,1046,1053,1056,1061,1069,1074,1079,1082,1084,1096, - 1099,1103,1106,1110,1113,1117,1120,1123,1127,1130,1134,1140,1144, - 1149,1155,1162,1170,1188,1195,1199,1203,1207,1212,1215,1218,1221, - 1224,1230,1234,1244,1248,1252,1258,1263,1266,1269,1271,1275,1282, - 1286,1289,1294,1298,1301,1305,1308,1312,1325,1328,1332,1335,1339, - 1342,1346,1349,1353,1356,1359,1363,1366,1370,1376,1380,1392,1398, - 1409,1414,1422,1426,1431,1434,1439,1449,1454,1459,1465,1470,1474, - 1476,1479,1483,1487,1490,1494,1498,1502,1508,1511,1518,1523,1529, - 1536,1542,1550,1553,1560,1563,1565,1571,1577,1594,1601,1608,1620, - 1625,1628,1631,1641,1654,1659,1675,1683,1693,1696,1702,1707,1710, - 1716,1720,1725,1731,1735,1739,1742,1745,1751,1755,1760,1771,1774, - 1781,1784,1788,1794,1806,1809,1814,1827,1834,1840,1845,1849,1852, - 1860,1868,1870,1880,1884,1887,1891,1896,1901,1906,1910,1914,1918, - 1922,1926,1930,1935,1940,1945,1951,1956,1961,1966,1971,1976,1982, - 1987,1992,1997,2002,2007,2012,2017,2024,2029,2034,2039,2043,2048, - 2056,2061,2067,2079,2086,2088,2096,2101,2104,2112,2118,2122,2135, - 2147,2149,2152,2160,2166,2172,2185,2192,2201,2206,2217,2226,2231, - 2243,2250,2259,2264,2276,2283,2292,2297,2304,2313,2318,2320,2325, - 2333,2342,2346,2349,2353,2358,2364,2370,2375,2380,2385,2390,2393, - 2398,2403,2413,2417,2424,2429,2432,2437,2440,2444,2448,2456,2475, - 2478,2481,2485,2495,2508,2521,2524,2530,2533,2537,2546,2549,2552, - 2557,2561,2564,2568,2572,2575,2579,2582,2586,2589,2595,2598,2603, - 2611,2617,2621,2625,2630,2635,2642,2646,2657,2665,2668,2674,2680, - 2683,2689,2695,2697,2702,2708,2714,2716,2720,2723,2726,2732,2738, - 2740,2745,2752,2761,2764,2768,2773,2783,2792,2800,2803,2811,2814, - 2821,2826,2834,2850,2855,2862,2881,2887,2897,2909,2916,2923,2938, - 2951,2957,2963,2969,2975,2981,2987,2992,2999,3006,3013,3018,3021, - 3023,3032,3039,3046,3053,3062,3068,3072,3076,3080,3086,3089,3094, - 3101,3108,3112,3117,3127,3135,3141,3150,3159,3168,3171,3175,3184, - 3188,3191,3194,3200,3203,3206,3210,3213,3216,3219,3230,3233,3238, - 3244,3249,3254,3257,3261,3266,3269,3274,3284,3289,3295,3297,3303, - 3305,3311,3319,3324,3332,3335,3340,3343,3348,3356,3362,3366,3368, - 3374,3382,3387,3395,3398,3403,3406,3410,3413,3416,3420,3423,3431, - 3437,3441,3447,3452,3456,3458,3464,3468,3471,3474,3477,3483,3488, - 3491,3494,3497,3500,3502,3505,3509,3512,3515,3523,3529,3532,3534, - 3543,3548,3555,3558,3561,3565,3569,3575,3579,3586,3590,3593,3596, - 3601,3608,3618,3627,3636,3646,3649,3653,3659,3663,3666,3669,3674, - 3677,3684,3688,3691,3695,3699,3702,3705,3710,3716,3720,3730,3736, - 3740,3746,3750,3756,3759,3771,3775,3779,3787,3791,3805,3810,3813, - 3817,3820,3828,3833,3836,3839,3843,3846,3855,3860,3869,3874,3881, - 3888,3896,3902,3910,3913,3916,3923,3926,3929,3936,3939,3943,3949, - 3959,3963,3972,3975,3979,3985,3993,3998,4002,4008,4014,4017,4019, - 4023,4032,4042,4048,4053,4057,4060,4063,4066,4069,4072,4076,4080, - 4088,4092,4095,4097,4110,4113,4120,4130,4133,4138,4140,4144,4152, - 4158,4167,4180,4184,4190,4195,4199,4202,4206,4209,4217,4220,4222, - 4230,4242,4248,4250,4256,4258,4260,4266,4274,4282,4286,4290,4299, - 4304,4324,4329,4335,4342,4347,4356,4359,4363,4367,4371,4374,4377, - 4380,4384,4388,4391,4394,4397,4404,4408,4423,4436,4444,4454,4458, - 4461,4467,4470,4473,4482,4491,4501,4505,4515,4519,4530,4534,4543, - 4552,4555,4559,4564,4568,4577,4580,4583,4590,4596,4602,4628,4631, - 4634,4653,4655,4678,4681,4684,4703,4705,4719,4732,4769,4774,4809, - 4823,4830,4834,4840,4848,4850,4861,4871,4878,4884,4892,4897,4905, - 4913,4921,4929,4935,4940,4945,4950,4956,4958,4969,4974,4981,4983, - 4997,5003,5008,5013,5019,5026,5034,5042,5047,5053,5056,5064,5071, - 5080,5083,5100,5108,5116,5120,5127,5133,5141,5146,5153,5161,5168, - 5173,5176,5178,5184,5186,5190,5192,5197,5204,5209,5213,5218,5222, - 5228,5234,5239,5242,5244,5250,5252,5256,5258,5263,5268,5275,5284, - 5289,5298,5302,5308,5313,5316,5318,5324,5326,5329,5336,5338,5343, - 5350,5359,5365,5367,5374,5377,5389,5395,5403,5406,5410,5413,5417, - 5419,5430,5433,5437,5440,5443,5450,5462,5465,5472,5478,5488,5493, - 5500,5505,5511,5515,5519,5527,5531,5535,5541,5543,5555,5560,5566, - 5572,5576,5581,5583,5607,5611,5614,5623,5627,5636,5640,5644,5650, - 5652,5661,5671,5698,5702,5707,5714,5717,5723,5733,5743,5753,5759, - 5768,5774,5781,5783,5791,5797,5801,5818,5828,5832,5836,5846,5851, - 5923,5941,5949,5955,5967,5971,5982,5986,5995,6003,6010,6014,6021, - 6026,6029,6032,6043,6047,6051,6066,6075,6078,6092,6110,6123,6126, - 6130,6133,6135,6142,6149,6153,6160,6167,6170,6186,6189,6199,6203, - 6209,6212,6215,6220,6224,6227,6234,6237,6243,6279,6282,6294,6297, - 6313,6315,6319,6326,6330,6337,6340,6349,6352,6357,6363,6365,6371, - 6375,6381,6384,6387,6400,6403,6409,6412,6420,6428,6434,6437,6441, - 6455,6467,6475,6479,6486,6493,6498,6511,6520,6528,6533,6536,6541, - 6544,6556,6561,6574,6576,6581,6585,6588,6590,6597,6604,6607,6610, - 6616,6620,6626,6634,6643,6656,6661,6669,6672,6677,6682,6690,6693, - 6701,6705,6712,6718,6721,6725,6738,6744,6756,6759,6768,6773,6794, - 6810,6820,6825,6830,6832,6835,6839,6841,6848,6854,6856,6859,6863, - 6866,6879,6889,6892,6895,6908,6914,6917,6925,6932,6952,6959,6961, - 6968,6970,6974,6981,6987,6998,7004,7010,7013,7017,7022,7025,7029, - 7033,7035,7040,7045,7058,7061,7065,7068,7071,7076,7081,7087,7090, - 7095,7098,7103,7106,7110,7115,7120,7125,7130,7133,7138,7143,7148, - 7154,7159,7164,7169,7173,7176,7181,7185,7189,7197,7204,7208,7213, - 7218,7222,7224,7227,7243,7253,7263,7272,7281,7288,7295,7303,7311, - 7323,7330,7340,7345,7348,7353,7356,7378,7387,7390,7395,7428,7432, - 7441,7445,7454,7462,7467,7475,7480,7485,7487,7496,7501,7509,7514, - 7522,7530,7533,7543,7561,7564,7567,7571,7584,7592,7596,7601,7606, - 7612,7617,7621,7626,7631,7636,7646,7649,7653,7657,7664,7668,7697, - 7705,7708,7711,7714,7717,7728,7742,7751,7778,7790,7796,7804,7809, - 7817,7825,7838,7844,7850,7865,7869,7875,7884,7886,7907,7919,7937, - 7954,7956,7969,7978,7987,7996,8005 + 832,834,836,0,160,2,0,39,39,152,152,2,0,508,508,514,514,3,0,69,69, + 161,161,182,182,3,0,42,42,357,357,430,430,4,0,42,42,389,389,505, + 505,595,595,4,0,208,208,210,210,216,216,649,649,2,0,494,494,882, + 882,2,0,79,79,143,143,2,0,16,16,306,306,3,0,44,44,86,86,185,185, + 2,0,406,406,538,538,3,0,486,486,661,661,670,670,2,0,364,364,436, + 436,2,0,325,325,450,450,2,0,42,42,871,872,2,0,37,37,678,678,2,0, + 323,323,418,418,2,0,435,435,686,686,3,0,80,80,85,85,126,126,2,0, + 82,82,92,92,2,0,69,69,161,161,3,0,42,42,374,374,403,403,3,0,42,42, + 370,370,802,802,2,0,648,648,685,685,3,0,408,408,526,526,597,597, + 2,0,329,329,522,522,1,0,871,872,2,0,882,882,889,889,2,0,82,82,360, + 360,2,0,523,523,882,882,2,0,524,524,882,882,3,0,402,402,445,445, + 502,502,7,0,42,42,342,342,345,345,374,374,403,403,554,554,889,889, + 2,0,494,494,506,506,1,0,872,873,2,0,6,6,51,51,2,0,5,5,81,81,2,0, + 27,27,31,31,4,0,42,42,357,357,430,430,434,434,2,0,368,368,375,375, + 2,0,369,369,425,425,2,0,13,13,176,176,2,0,194,194,690,690,2,0,22, + 22,146,146,3,0,43,43,76,76,107,107,2,0,7,7,49,49,2,0,107,107,347, + 347,2,0,337,337,398,398,2,0,102,102,587,587,2,0,43,43,107,107,3, + 0,59,59,181,181,828,828,2,0,185,185,594,594,2,0,159,159,503,503, + 4,0,402,402,445,445,501,501,542,542,2,0,402,402,501,501,2,0,14,14, + 45,45,3,0,66,66,79,79,187,187,2,0,35,35,84,84,2,0,98,98,150,150, + 2,0,7,7,49,50,1,0,637,638,2,0,173,173,752,752,2,0,413,413,593,593, + 2,0,228,228,453,453,2,0,563,563,598,598,8,0,108,108,455,455,459, + 460,462,462,464,464,467,476,499,499,557,557,6,0,456,458,461,461, + 463,463,465,465,477,477,558,558,7,0,109,109,411,411,416,416,454, + 454,466,466,573,573,617,617,2,0,116,116,882,882,2,0,118,119,507, + 507,7,0,499,499,557,557,606,609,611,611,619,619,622,628,630,632, + 6,0,558,558,610,610,612,612,614,616,618,618,620,620,7,0,412,412, + 416,416,573,573,613,613,617,617,621,621,629,629,3,0,70,70,118,119, + 507,507,2,0,438,438,639,639,2,0,633,633,635,635,2,0,317,317,640, + 640,2,0,91,91,577,577,2,0,51,51,362,362,3,0,32,32,61,61,180,180, + 2,0,15,15,340,340,2,0,678,678,835,835,3,0,132,132,173,173,409,409, + 3,0,6,6,51,51,492,492,3,0,13,13,20,20,188,188,2,0,42,42,122,122, + 2,0,104,104,183,183,1,0,873,874,2,0,333,333,598,598,2,0,40,40,684, + 684,2,0,392,392,549,549,2,0,115,115,450,450,3,0,413,413,531,531, + 893,894,2,0,841,841,857,857,2,0,318,318,559,559,2,0,68,68,80,80, + 3,0,132,132,178,178,385,385,2,0,493,493,645,645,2,0,383,383,688, + 688,3,0,82,82,93,93,426,426,4,0,413,413,450,450,531,532,593,593, + 2,0,645,645,683,683,2,0,349,349,548,548,6,0,228,228,380,380,382, + 382,410,410,556,556,599,599,2,0,45,46,62,62,3,0,442,442,663,663, + 666,666,10,0,332,332,339,339,351,353,359,359,487,487,495,495,650, + 650,657,657,822,822,832,832,2,0,36,36,170,170,2,0,117,117,831,831, + 11,0,332,332,339,339,351,353,359,359,487,487,495,495,578,578,650, + 650,657,657,822,822,832,832,2,0,870,870,891,892,1,0,892,893,2,0, + 348,348,797,808,3,0,871,874,883,883,885,885,2,0,63,63,179,179,2, + 0,116,116,886,886,5,0,26,26,224,226,233,233,235,238,498,498,2,0, + 26,26,224,224,2,0,26,26,224,225,1,0,198,209,3,0,184,184,197,197, + 596,596,2,0,213,218,403,403,6,0,219,219,230,230,232,232,234,234, + 241,241,321,322,4,0,220,223,228,229,231,231,319,319,2,0,155,155, + 239,239,2,0,442,442,813,821,2,0,228,228,498,498,5,0,202,202,208, + 208,219,220,222,222,442,442,1,0,216,217,2,0,184,184,596,596,2,0, + 202,202,208,208,2,0,189,189,682,682,2,0,287,288,294,294,3,0,152, + 152,285,288,303,303,1,0,297,298,3,0,18,18,96,96,177,177,2,0,224, + 224,228,228,2,0,219,220,222,222,3,0,14,14,45,45,830,830,3,0,258, + 258,270,271,281,281,3,0,259,261,277,280,282,284,2,0,267,267,269, + 269,2,0,265,265,268,268,2,0,263,264,274,276,2,0,134,134,587,587, + 2,0,405,405,539,539,2,0,512,512,529,529,2,0,114,114,860,860,3,0, + 63,63,179,179,674,674,2,0,139,139,151,151,3,0,7,7,309,309,602,602, + 3,0,114,114,853,854,860,861,1,0,850,856,2,0,228,228,756,796,1,0, + 809,812,5,0,717,718,734,736,743,743,749,750,752,752,1,0,696,703, + 3,0,219,223,236,236,239,239,75,0,12,12,15,15,19,19,30,30,36,37,42, + 42,48,48,55,55,57,57,59,59,74,74,95,95,117,117,122,122,125,125,131, + 131,160,160,170,170,241,241,255,262,266,266,270,271,277,284,304, + 309,311,329,331,343,345,376,378,393,395,400,402,404,406,410,413, + 415,417,426,428,428,430,434,436,454,456,463,465,473,475,476,478, + 498,500,506,508,510,512,522,525,530,533,538,540,542,544,554,556, + 562,565,572,575,575,577,605,633,647,649,665,667,674,676,685,687, + 688,690,695,704,704,706,707,709,712,714,716,719,721,726,727,729, + 733,737,738,740,742,744,744,746,748,751,751,753,755,802,802,822, + 822,825,825,832,833,838,838,24,0,39,39,98,98,150,150,152,152,219, + 221,223,223,253,254,262,265,267,269,272,276,296,296,435,435,686, + 686,696,703,746,746,813,813,816,821,823,824,826,827,829,831,834, + 834,836,836,840,840,856,856,9440,0,841,1,0,0,0,2,851,1,0,0,0,4,860, + 1,0,0,0,6,862,1,0,0,0,8,904,1,0,0,0,10,923,1,0,0,0,12,934,1,0,0, + 0,14,950,1,0,0,0,16,955,1,0,0,0,18,967,1,0,0,0,20,1002,1,0,0,0,22, + 1012,1,0,0,0,24,1014,1,0,0,0,26,1026,1,0,0,0,28,1056,1,0,0,0,30, + 1092,1,0,0,0,32,1143,1,0,0,0,34,1172,1,0,0,0,36,1208,1,0,0,0,38, + 1222,1,0,0,0,40,1229,1,0,0,0,42,1326,1,0,0,0,44,1328,1,0,0,0,46, + 1365,1,0,0,0,48,1429,1,0,0,0,50,1454,1,0,0,0,52,1460,1,0,0,0,54, + 1482,1,0,0,0,56,1569,1,0,0,0,58,1576,1,0,0,0,60,1578,1,0,0,0,62, + 1583,1,0,0,0,64,1623,1,0,0,0,66,1629,1,0,0,0,68,1631,1,0,0,0,70, + 1652,1,0,0,0,72,1659,1,0,0,0,74,1661,1,0,0,0,76,1686,1,0,0,0,78, + 1689,1,0,0,0,80,1694,1,0,0,0,82,1720,1,0,0,0,84,1736,1,0,0,0,86, + 1738,1,0,0,0,88,1832,1,0,0,0,90,1835,1,0,0,0,92,1847,1,0,0,0,94, + 1851,1,0,0,0,96,1901,1,0,0,0,98,1903,1,0,0,0,100,1931,1,0,0,0,102, + 1941,1,0,0,0,104,2128,1,0,0,0,106,2130,1,0,0,0,108,2132,1,0,0,0, + 110,2135,1,0,0,0,112,2210,1,0,0,0,114,2233,1,0,0,0,116,2381,1,0, + 0,0,118,2386,1,0,0,0,120,2388,1,0,0,0,122,2398,1,0,0,0,124,2454, + 1,0,0,0,126,2474,1,0,0,0,128,2476,1,0,0,0,130,2511,1,0,0,0,132,2520, + 1,0,0,0,134,2527,1,0,0,0,136,2550,1,0,0,0,138,2559,1,0,0,0,140,2574, + 1,0,0,0,142,2596,1,0,0,0,144,2652,1,0,0,0,146,2948,1,0,0,0,148,3048, + 1,0,0,0,150,3050,1,0,0,0,152,3057,1,0,0,0,154,3064,1,0,0,0,156,3087, + 1,0,0,0,158,3097,1,0,0,0,160,3104,1,0,0,0,162,3111,1,0,0,0,164,3118, + 1,0,0,0,166,3127,1,0,0,0,168,3139,1,0,0,0,170,3152,1,0,0,0,172,3159, + 1,0,0,0,174,3175,1,0,0,0,176,3202,1,0,0,0,178,3204,1,0,0,0,180,3214, + 1,0,0,0,182,3218,1,0,0,0,184,3224,1,0,0,0,186,3236,1,0,0,0,188,3238, + 1,0,0,0,190,3245,1,0,0,0,192,3247,1,0,0,0,194,3296,1,0,0,0,196,3305, + 1,0,0,0,198,3307,1,0,0,0,200,3318,1,0,0,0,202,3324,1,0,0,0,204,3398, + 1,0,0,0,206,3461,1,0,0,0,208,3479,1,0,0,0,210,3563,1,0,0,0,212,3566, + 1,0,0,0,214,3578,1,0,0,0,216,3598,1,0,0,0,218,3626,1,0,0,0,220,3630, + 1,0,0,0,222,3632,1,0,0,0,224,3642,1,0,0,0,226,3662,1,0,0,0,228,3669, + 1,0,0,0,230,3671,1,0,0,0,232,3682,1,0,0,0,234,3691,1,0,0,0,236,3697, + 1,0,0,0,238,3720,1,0,0,0,240,3722,1,0,0,0,242,3758,1,0,0,0,244,3813, + 1,0,0,0,246,3822,1,0,0,0,248,3842,1,0,0,0,250,3854,1,0,0,0,252,3858, + 1,0,0,0,254,3869,1,0,0,0,256,3902,1,0,0,0,258,3923,1,0,0,0,260,3933, + 1,0,0,0,262,3937,1,0,0,0,264,3963,1,0,0,0,266,4010,1,0,0,0,268,4012, + 1,0,0,0,270,4016,1,0,0,0,272,4033,1,0,0,0,274,4084,1,0,0,0,276,4093, + 1,0,0,0,278,4103,1,0,0,0,280,4105,1,0,0,0,282,4138,1,0,0,0,284,4146, + 1,0,0,0,286,4163,1,0,0,0,288,4179,1,0,0,0,290,4216,1,0,0,0,292,4222, + 1,0,0,0,294,4231,1,0,0,0,296,4244,1,0,0,0,298,4248,1,0,0,0,300,4286, + 1,0,0,0,302,4324,1,0,0,0,304,4338,1,0,0,0,306,4346,1,0,0,0,308,4350, + 1,0,0,0,310,4356,1,0,0,0,312,4370,1,0,0,0,314,4373,1,0,0,0,316,4391, + 1,0,0,0,318,4395,1,0,0,0,320,4411,1,0,0,0,322,4413,1,0,0,0,324,4425, + 1,0,0,0,326,4429,1,0,0,0,328,4446,1,0,0,0,330,4463,1,0,0,0,332,4466, + 1,0,0,0,334,4476,1,0,0,0,336,4480,1,0,0,0,338,4490,1,0,0,0,340,4493, + 1,0,0,0,342,4498,1,0,0,0,344,4518,1,0,0,0,346,4520,1,0,0,0,348,4537, + 1,0,0,0,350,4546,1,0,0,0,352,4555,1,0,0,0,354,4557,1,0,0,0,356,4571, + 1,0,0,0,358,4585,1,0,0,0,360,4600,1,0,0,0,362,4609,1,0,0,0,364,4634, + 1,0,0,0,366,4649,1,0,0,0,368,4668,1,0,0,0,370,4698,1,0,0,0,372,4700, + 1,0,0,0,374,4702,1,0,0,0,376,4704,1,0,0,0,378,4719,1,0,0,0,380,4748, + 1,0,0,0,382,4750,1,0,0,0,384,4752,1,0,0,0,386,4754,1,0,0,0,388,4769, + 1,0,0,0,390,4771,1,0,0,0,392,4838,1,0,0,0,394,4840,1,0,0,0,396,4846, + 1,0,0,0,398,4873,1,0,0,0,400,4887,1,0,0,0,402,4898,1,0,0,0,404,4900, + 1,0,0,0,406,4906,1,0,0,0,408,4916,1,0,0,0,410,4920,1,0,0,0,412,4927, + 1,0,0,0,414,4931,1,0,0,0,416,4937,1,0,0,0,418,4944,1,0,0,0,420,4950, + 1,0,0,0,422,4956,1,0,0,0,424,4961,1,0,0,0,426,5006,1,0,0,0,428,5027, + 1,0,0,0,430,5052,1,0,0,0,432,5055,1,0,0,0,434,5061,1,0,0,0,436,5077, + 1,0,0,0,438,5092,1,0,0,0,440,5098,1,0,0,0,442,5128,1,0,0,0,444,5130, + 1,0,0,0,446,5137,1,0,0,0,448,5149,1,0,0,0,450,5155,1,0,0,0,452,5180, + 1,0,0,0,454,5184,1,0,0,0,456,5188,1,0,0,0,458,5199,1,0,0,0,460,5207, + 1,0,0,0,462,5270,1,0,0,0,464,5329,1,0,0,0,466,5431,1,0,0,0,468,5441, + 1,0,0,0,470,5443,1,0,0,0,472,5461,1,0,0,0,474,5485,1,0,0,0,476,5509, + 1,0,0,0,478,5516,1,0,0,0,480,5536,1,0,0,0,482,5545,1,0,0,0,484,5607, + 1,0,0,0,486,5609,1,0,0,0,488,5613,1,0,0,0,490,5647,1,0,0,0,492,5649, + 1,0,0,0,494,5652,1,0,0,0,496,5716,1,0,0,0,498,5735,1,0,0,0,500,5762, + 1,0,0,0,502,5766,1,0,0,0,504,5787,1,0,0,0,506,5797,1,0,0,0,508,5807, + 1,0,0,0,510,5847,1,0,0,0,512,5849,1,0,0,0,514,5852,1,0,0,0,516,5882, + 1,0,0,0,518,5884,1,0,0,0,520,5887,1,0,0,0,522,5987,1,0,0,0,524,6005, + 1,0,0,0,526,6007,1,0,0,0,528,6059,1,0,0,0,530,6061,1,0,0,0,532,6070, + 1,0,0,0,534,6076,1,0,0,0,536,6083,1,0,0,0,538,6098,1,0,0,0,540,6107, + 1,0,0,0,542,6109,1,0,0,0,544,6130,1,0,0,0,546,6135,1,0,0,0,548,6145, + 1,0,0,0,550,6151,1,0,0,0,552,6185,1,0,0,0,554,6239,1,0,0,0,556,6425, + 1,0,0,0,558,6437,1,0,0,0,560,6453,1,0,0,0,562,6459,1,0,0,0,564,6478, + 1,0,0,0,566,6491,1,0,0,0,568,6505,1,0,0,0,570,6507,1,0,0,0,572,6510, + 1,0,0,0,574,6534,1,0,0,0,576,6546,1,0,0,0,578,6552,1,0,0,0,580,6564, + 1,0,0,0,582,6578,1,0,0,0,584,6580,1,0,0,0,586,6588,1,0,0,0,588,6596, + 1,0,0,0,590,6598,1,0,0,0,592,6600,1,0,0,0,594,6640,1,0,0,0,596,6647, + 1,0,0,0,598,6649,1,0,0,0,600,6672,1,0,0,0,602,6678,1,0,0,0,604,6688, + 1,0,0,0,606,6697,1,0,0,0,608,6700,1,0,0,0,610,6703,1,0,0,0,612,6724, + 1,0,0,0,614,6745,1,0,0,0,616,6753,1,0,0,0,618,6765,1,0,0,0,620,6773, + 1,0,0,0,622,6811,1,0,0,0,624,6823,1,0,0,0,626,6825,1,0,0,0,628,6827, + 1,0,0,0,630,6829,1,0,0,0,632,6831,1,0,0,0,634,6833,1,0,0,0,636,6835, + 1,0,0,0,638,6837,1,0,0,0,640,6839,1,0,0,0,642,6847,1,0,0,0,644,6849, + 1,0,0,0,646,6851,1,0,0,0,648,6853,1,0,0,0,650,6855,1,0,0,0,652,6863, + 1,0,0,0,654,6865,1,0,0,0,656,6875,1,0,0,0,658,6891,1,0,0,0,660,6893, + 1,0,0,0,662,6916,1,0,0,0,664,6918,1,0,0,0,666,6920,1,0,0,0,668,6922, + 1,0,0,0,670,6924,1,0,0,0,672,6932,1,0,0,0,674,6942,1,0,0,0,676,6947, + 1,0,0,0,678,6951,1,0,0,0,680,6958,1,0,0,0,682,6960,1,0,0,0,684,6967, + 1,0,0,0,686,6969,1,0,0,0,688,6975,1,0,0,0,690,6977,1,0,0,0,692,6982, + 1,0,0,0,694,6984,1,0,0,0,696,6986,1,0,0,0,698,7004,1,0,0,0,700,7020, + 1,0,0,0,702,7022,1,0,0,0,704,7026,1,0,0,0,706,7037,1,0,0,0,708,7048, + 1,0,0,0,710,7054,1,0,0,0,712,7056,1,0,0,0,714,7060,1,0,0,0,716,7085, + 1,0,0,0,718,7087,1,0,0,0,720,7090,1,0,0,0,722,7095,1,0,0,0,724,7111, + 1,0,0,0,726,7239,1,0,0,0,728,7241,1,0,0,0,730,7274,1,0,0,0,732,7279, + 1,0,0,0,734,7283,1,0,0,0,736,7289,1,0,0,0,738,7297,1,0,0,0,740,7308, + 1,0,0,0,742,7316,1,0,0,0,744,7325,1,0,0,0,746,7338,1,0,0,0,748,7340, + 1,0,0,0,750,7348,1,0,0,0,752,7356,1,0,0,0,754,7390,1,0,0,0,756,7406, + 1,0,0,0,758,7408,1,0,0,0,760,7411,1,0,0,0,762,7415,1,0,0,0,764,7440, + 1,0,0,0,766,7621,1,0,0,0,768,7623,1,0,0,0,770,7642,1,0,0,0,772,7644, + 1,0,0,0,774,7707,1,0,0,0,776,7747,1,0,0,0,778,7749,1,0,0,0,780,7758, + 1,0,0,0,782,7769,1,0,0,0,784,7771,1,0,0,0,786,7774,1,0,0,0,788,7778, + 1,0,0,0,790,7780,1,0,0,0,792,7792,1,0,0,0,794,7794,1,0,0,0,796,7828, + 1,0,0,0,798,7830,1,0,0,0,800,7835,1,0,0,0,802,7846,1,0,0,0,804,7859, + 1,0,0,0,806,7870,1,0,0,0,808,7987,1,0,0,0,810,8009,1,0,0,0,812,8019, + 1,0,0,0,814,8028,1,0,0,0,816,8037,1,0,0,0,818,8046,1,0,0,0,820,8048, + 1,0,0,0,822,8055,1,0,0,0,824,8057,1,0,0,0,826,8059,1,0,0,0,828,8061, + 1,0,0,0,830,8063,1,0,0,0,832,8065,1,0,0,0,834,8067,1,0,0,0,836,8069, + 1,0,0,0,838,840,3,2,1,0,839,838,1,0,0,0,840,843,1,0,0,0,841,839, + 1,0,0,0,841,842,1,0,0,0,842,844,1,0,0,0,843,841,1,0,0,0,844,845, + 5,0,0,1,845,1,1,0,0,0,846,848,3,4,2,0,847,849,5,869,0,0,848,847, + 1,0,0,0,848,849,1,0,0,0,849,852,1,0,0,0,850,852,3,6,3,0,851,846, + 1,0,0,0,851,850,1,0,0,0,852,3,1,0,0,0,853,861,3,8,4,0,854,861,3, + 10,5,0,855,861,3,12,6,0,856,861,3,14,7,0,857,861,3,16,8,0,858,861, + 3,20,10,0,859,861,3,22,11,0,860,853,1,0,0,0,860,854,1,0,0,0,860, + 855,1,0,0,0,860,856,1,0,0,0,860,857,1,0,0,0,860,858,1,0,0,0,860, + 859,1,0,0,0,861,5,1,0,0,0,862,863,5,869,0,0,863,7,1,0,0,0,864,905, + 3,24,12,0,865,905,3,26,13,0,866,905,3,28,14,0,867,905,3,30,15,0, + 868,905,3,32,16,0,869,905,3,34,17,0,870,905,3,36,18,0,871,905,3, + 40,20,0,872,905,3,42,21,0,873,905,3,44,22,0,874,905,3,46,23,0,875, + 905,3,48,24,0,876,905,3,54,27,0,877,905,3,38,19,0,878,905,3,126, + 63,0,879,905,3,128,64,0,880,905,3,130,65,0,881,905,3,132,66,0,882, + 905,3,134,67,0,883,905,3,136,68,0,884,905,3,138,69,0,885,905,3,140, + 70,0,886,905,3,142,71,0,887,905,3,144,72,0,888,905,3,150,75,0,889, + 905,3,152,76,0,890,905,3,154,77,0,891,905,3,156,78,0,892,905,3,158, + 79,0,893,905,3,160,80,0,894,905,3,162,81,0,895,905,3,164,82,0,896, + 905,3,166,83,0,897,905,3,168,84,0,898,905,3,170,85,0,899,905,3,172, + 86,0,900,905,3,174,87,0,901,905,3,176,88,0,902,905,3,178,89,0,903, + 905,3,182,91,0,904,864,1,0,0,0,904,865,1,0,0,0,904,866,1,0,0,0,904, + 867,1,0,0,0,904,868,1,0,0,0,904,869,1,0,0,0,904,870,1,0,0,0,904, + 871,1,0,0,0,904,872,1,0,0,0,904,873,1,0,0,0,904,874,1,0,0,0,904, + 875,1,0,0,0,904,876,1,0,0,0,904,877,1,0,0,0,904,878,1,0,0,0,904, + 879,1,0,0,0,904,880,1,0,0,0,904,881,1,0,0,0,904,882,1,0,0,0,904, + 883,1,0,0,0,904,884,1,0,0,0,904,885,1,0,0,0,904,886,1,0,0,0,904, + 887,1,0,0,0,904,888,1,0,0,0,904,889,1,0,0,0,904,890,1,0,0,0,904, + 891,1,0,0,0,904,892,1,0,0,0,904,893,1,0,0,0,904,894,1,0,0,0,904, + 895,1,0,0,0,904,896,1,0,0,0,904,897,1,0,0,0,904,898,1,0,0,0,904, + 899,1,0,0,0,904,900,1,0,0,0,904,901,1,0,0,0,904,902,1,0,0,0,904, + 903,1,0,0,0,905,9,1,0,0,0,906,924,3,210,105,0,907,924,3,212,106, + 0,908,924,3,192,96,0,909,924,3,220,110,0,910,924,3,186,93,0,911, + 924,3,208,104,0,912,924,3,184,92,0,913,924,3,198,99,0,914,924,3, + 202,101,0,915,924,3,204,102,0,916,924,3,206,103,0,917,924,3,188, + 94,0,918,924,3,190,95,0,919,924,3,252,126,0,920,924,3,222,111,0, + 921,924,3,616,308,0,922,924,3,618,309,0,923,906,1,0,0,0,923,907, + 1,0,0,0,923,908,1,0,0,0,923,909,1,0,0,0,923,910,1,0,0,0,923,911, + 1,0,0,0,923,912,1,0,0,0,923,913,1,0,0,0,923,914,1,0,0,0,923,915, + 1,0,0,0,923,916,1,0,0,0,923,917,1,0,0,0,923,918,1,0,0,0,923,919, + 1,0,0,0,923,920,1,0,0,0,923,921,1,0,0,0,923,922,1,0,0,0,924,11,1, + 0,0,0,925,935,3,322,161,0,926,935,3,324,162,0,927,935,3,326,163, + 0,928,935,3,328,164,0,929,935,3,330,165,0,930,935,3,332,166,0,931, + 935,3,334,167,0,932,935,3,336,168,0,933,935,3,338,169,0,934,925, + 1,0,0,0,934,926,1,0,0,0,934,927,1,0,0,0,934,928,1,0,0,0,934,929, + 1,0,0,0,934,930,1,0,0,0,934,931,1,0,0,0,934,932,1,0,0,0,934,933, + 1,0,0,0,935,13,1,0,0,0,936,951,3,354,177,0,937,951,3,356,178,0,938, + 951,3,358,179,0,939,951,3,360,180,0,940,951,3,362,181,0,941,951, + 3,364,182,0,942,951,3,366,183,0,943,951,3,368,184,0,944,951,3,404, + 202,0,945,951,3,406,203,0,946,951,3,408,204,0,947,951,3,410,205, + 0,948,951,3,412,206,0,949,951,3,414,207,0,950,936,1,0,0,0,950,937, + 1,0,0,0,950,938,1,0,0,0,950,939,1,0,0,0,950,940,1,0,0,0,950,941, + 1,0,0,0,950,942,1,0,0,0,950,943,1,0,0,0,950,944,1,0,0,0,950,945, + 1,0,0,0,950,946,1,0,0,0,950,947,1,0,0,0,950,948,1,0,0,0,950,949, + 1,0,0,0,951,15,1,0,0,0,952,956,3,416,208,0,953,956,3,418,209,0,954, + 956,3,420,210,0,955,952,1,0,0,0,955,953,1,0,0,0,955,954,1,0,0,0, + 956,17,1,0,0,0,957,968,3,424,212,0,958,968,3,426,213,0,959,968,3, + 428,214,0,960,968,3,432,216,0,961,968,3,434,217,0,962,968,3,436, + 218,0,963,968,3,440,220,0,964,968,3,430,215,0,965,968,3,438,219, + 0,966,968,3,442,221,0,967,957,1,0,0,0,967,958,1,0,0,0,967,959,1, + 0,0,0,967,960,1,0,0,0,967,961,1,0,0,0,967,962,1,0,0,0,967,963,1, + 0,0,0,967,964,1,0,0,0,967,965,1,0,0,0,967,966,1,0,0,0,968,19,1,0, + 0,0,969,1003,3,460,230,0,970,1003,3,462,231,0,971,1003,3,464,232, + 0,972,1003,3,466,233,0,973,1003,3,470,235,0,974,1003,3,482,241,0, + 975,1003,3,484,242,0,976,1003,3,472,236,0,977,1003,3,474,237,0,978, + 1003,3,476,238,0,979,1003,3,478,239,0,980,1003,3,528,264,0,981,1003, + 3,530,265,0,982,1003,3,532,266,0,983,1003,3,534,267,0,984,1003,3, + 536,268,0,985,1003,3,542,271,0,986,1003,3,546,273,0,987,1003,3,548, + 274,0,988,1003,3,550,275,0,989,1003,3,552,276,0,990,1003,3,554,277, + 0,991,1003,3,556,278,0,992,1003,3,570,285,0,993,1003,3,572,286,0, + 994,1003,3,574,287,0,995,1003,3,576,288,0,996,1003,3,578,289,0,997, + 1003,3,580,290,0,998,1003,3,584,292,0,999,1003,3,586,293,0,1000, + 1003,3,588,294,0,1001,1003,3,590,295,0,1002,969,1,0,0,0,1002,970, + 1,0,0,0,1002,971,1,0,0,0,1002,972,1,0,0,0,1002,973,1,0,0,0,1002, + 974,1,0,0,0,1002,975,1,0,0,0,1002,976,1,0,0,0,1002,977,1,0,0,0,1002, + 978,1,0,0,0,1002,979,1,0,0,0,1002,980,1,0,0,0,1002,981,1,0,0,0,1002, + 982,1,0,0,0,1002,983,1,0,0,0,1002,984,1,0,0,0,1002,985,1,0,0,0,1002, + 986,1,0,0,0,1002,987,1,0,0,0,1002,988,1,0,0,0,1002,989,1,0,0,0,1002, + 990,1,0,0,0,1002,991,1,0,0,0,1002,992,1,0,0,0,1002,993,1,0,0,0,1002, + 994,1,0,0,0,1002,995,1,0,0,0,1002,996,1,0,0,0,1002,997,1,0,0,0,1002, + 998,1,0,0,0,1002,999,1,0,0,0,1002,1000,1,0,0,0,1002,1001,1,0,0,0, + 1003,21,1,0,0,0,1004,1013,3,602,301,0,1005,1013,3,600,300,0,1006, + 1013,3,604,302,0,1007,1013,3,606,303,0,1008,1013,3,608,304,0,1009, + 1013,3,610,305,0,1010,1013,3,612,306,0,1011,1013,3,620,310,0,1012, + 1004,1,0,0,0,1012,1005,1,0,0,0,1012,1006,1,0,0,0,1012,1007,1,0,0, + 0,1012,1008,1,0,0,0,1012,1009,1,0,0,0,1012,1010,1,0,0,0,1012,1011, + 1,0,0,0,1013,23,1,0,0,0,1014,1015,5,34,0,0,1015,1017,7,0,0,0,1016, + 1018,3,760,380,0,1017,1016,1,0,0,0,1017,1018,1,0,0,0,1018,1019,1, + 0,0,0,1019,1023,3,626,313,0,1020,1022,3,56,28,0,1021,1020,1,0,0, + 0,1022,1025,1,0,0,0,1023,1021,1,0,0,0,1023,1024,1,0,0,0,1024,25, + 1,0,0,0,1025,1023,1,0,0,0,1026,1028,5,34,0,0,1027,1029,3,62,31,0, + 1028,1027,1,0,0,0,1028,1029,1,0,0,0,1029,1030,1,0,0,0,1030,1032, + 5,385,0,0,1031,1033,3,760,380,0,1032,1031,1,0,0,0,1032,1033,1,0, + 0,0,1033,1034,1,0,0,0,1034,1035,3,702,351,0,1035,1036,5,119,0,0, + 1036,1037,5,590,0,0,1037,1044,3,64,32,0,1038,1039,5,119,0,0,1039, + 1041,5,343,0,0,1040,1042,5,114,0,0,1041,1040,1,0,0,0,1041,1042,1, + 0,0,0,1042,1043,1,0,0,0,1043,1045,5,541,0,0,1044,1038,1,0,0,0,1044, + 1045,1,0,0,0,1045,1047,1,0,0,0,1046,1048,3,72,36,0,1047,1046,1,0, + 0,0,1047,1048,1,0,0,0,1048,1051,1,0,0,0,1049,1050,5,340,0,0,1050, + 1052,5,882,0,0,1051,1049,1,0,0,0,1051,1052,1,0,0,0,1052,1053,1,0, + 0,0,1053,1054,5,371,0,0,1054,1055,3,422,211,0,1055,27,1,0,0,0,1056, + 1058,5,34,0,0,1057,1059,7,1,0,0,1058,1057,1,0,0,0,1058,1059,1,0, + 0,0,1059,1061,1,0,0,0,1060,1062,7,2,0,0,1061,1060,1,0,0,0,1061,1062, + 1,0,0,0,1062,1063,1,0,0,0,1063,1064,5,82,0,0,1064,1066,3,638,319, + 0,1065,1067,3,74,37,0,1066,1065,1,0,0,0,1066,1067,1,0,0,0,1067,1068, + 1,0,0,0,1068,1069,5,119,0,0,1069,1070,3,652,326,0,1070,1074,3,738, + 369,0,1071,1073,3,76,38,0,1072,1071,1,0,0,0,1073,1076,1,0,0,0,1074, + 1072,1,0,0,0,1074,1075,1,0,0,0,1075,1089,1,0,0,0,1076,1074,1,0,0, + 0,1077,1079,5,308,0,0,1078,1080,5,857,0,0,1079,1078,1,0,0,0,1079, + 1080,1,0,0,0,1080,1081,1,0,0,0,1081,1088,7,3,0,0,1082,1084,5,104, + 0,0,1083,1085,5,857,0,0,1084,1083,1,0,0,0,1084,1085,1,0,0,0,1085, + 1086,1,0,0,0,1086,1088,7,4,0,0,1087,1077,1,0,0,0,1087,1082,1,0,0, + 0,1088,1091,1,0,0,0,1089,1087,1,0,0,0,1089,1090,1,0,0,0,1090,29, + 1,0,0,0,1091,1089,1,0,0,0,1092,1093,5,34,0,0,1093,1094,5,451,0,0, + 1094,1095,5,74,0,0,1095,1096,3,706,353,0,1096,1097,5,6,0,0,1097, + 1098,5,671,0,0,1098,1104,5,882,0,0,1099,1101,5,428,0,0,1100,1102, + 5,857,0,0,1101,1100,1,0,0,0,1101,1102,1,0,0,0,1102,1103,1,0,0,0, + 1103,1105,3,714,357,0,1104,1099,1,0,0,0,1104,1105,1,0,0,0,1105,1111, + 1,0,0,0,1106,1108,5,672,0,0,1107,1109,5,857,0,0,1108,1107,1,0,0, + 0,1108,1109,1,0,0,0,1109,1110,1,0,0,0,1110,1112,3,714,357,0,1111, + 1106,1,0,0,0,1111,1112,1,0,0,0,1112,1118,1,0,0,0,1113,1115,5,553, + 0,0,1114,1116,5,857,0,0,1115,1114,1,0,0,0,1115,1116,1,0,0,0,1116, + 1117,1,0,0,0,1117,1119,3,714,357,0,1118,1113,1,0,0,0,1118,1119,1, + 0,0,0,1119,1125,1,0,0,0,1120,1122,5,504,0,0,1121,1123,5,857,0,0, + 1122,1121,1,0,0,0,1122,1123,1,0,0,0,1123,1124,1,0,0,0,1124,1126, + 3,706,353,0,1125,1120,1,0,0,0,1125,1126,1,0,0,0,1126,1128,1,0,0, + 0,1127,1129,5,687,0,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1135, + 1,0,0,0,1130,1132,5,340,0,0,1131,1133,5,857,0,0,1132,1131,1,0,0, + 0,1132,1133,1,0,0,0,1133,1134,1,0,0,0,1134,1136,5,882,0,0,1135,1130, + 1,0,0,0,1135,1136,1,0,0,0,1136,1137,1,0,0,0,1137,1139,5,380,0,0, + 1138,1140,5,857,0,0,1139,1138,1,0,0,0,1139,1140,1,0,0,0,1140,1141, + 1,0,0,0,1141,1142,3,692,346,0,1142,31,1,0,0,0,1143,1145,5,34,0,0, + 1144,1146,3,62,31,0,1145,1144,1,0,0,0,1145,1146,1,0,0,0,1146,1147, + 1,0,0,0,1147,1149,5,132,0,0,1148,1150,3,760,380,0,1149,1148,1,0, + 0,0,1149,1150,1,0,0,0,1150,1151,1,0,0,0,1151,1152,3,702,351,0,1152, + 1154,5,866,0,0,1153,1155,3,78,39,0,1154,1153,1,0,0,0,1154,1155,1, + 0,0,0,1155,1160,1,0,0,0,1156,1157,5,868,0,0,1157,1159,3,78,39,0, + 1158,1156,1,0,0,0,1159,1162,1,0,0,0,1160,1158,1,0,0,0,1160,1161, + 1,0,0,0,1161,1163,1,0,0,0,1162,1160,1,0,0,0,1163,1167,5,867,0,0, + 1164,1166,3,82,41,0,1165,1164,1,0,0,0,1166,1169,1,0,0,0,1167,1165, + 1,0,0,0,1167,1168,1,0,0,0,1168,1170,1,0,0,0,1169,1167,1,0,0,0,1170, + 1171,3,422,211,0,1171,33,1,0,0,0,1172,1174,5,34,0,0,1173,1175,3, + 62,31,0,1174,1173,1,0,0,0,1174,1175,1,0,0,0,1175,1177,1,0,0,0,1176, + 1178,5,307,0,0,1177,1176,1,0,0,0,1177,1178,1,0,0,0,1178,1179,1,0, + 0,0,1179,1181,5,409,0,0,1180,1182,3,760,380,0,1181,1180,1,0,0,0, + 1181,1182,1,0,0,0,1182,1183,1,0,0,0,1183,1184,3,630,315,0,1184,1186, + 5,866,0,0,1185,1187,3,80,40,0,1186,1185,1,0,0,0,1186,1187,1,0,0, + 0,1187,1192,1,0,0,0,1188,1189,5,868,0,0,1189,1191,3,80,40,0,1190, + 1188,1,0,0,0,1191,1194,1,0,0,0,1192,1190,1,0,0,0,1192,1193,1,0,0, + 0,1193,1195,1,0,0,0,1194,1192,1,0,0,0,1195,1196,5,867,0,0,1196,1197, + 5,580,0,0,1197,1201,3,726,363,0,1198,1200,3,82,41,0,1199,1198,1, + 0,0,0,1200,1203,1,0,0,0,1201,1199,1,0,0,0,1201,1202,1,0,0,0,1202, + 1206,1,0,0,0,1203,1201,1,0,0,0,1204,1207,3,422,211,0,1205,1207,3, + 438,219,0,1206,1204,1,0,0,0,1206,1205,1,0,0,0,1207,35,1,0,0,0,1208, + 1210,5,34,0,0,1209,1211,5,307,0,0,1210,1209,1,0,0,0,1210,1211,1, + 0,0,0,1211,1212,1,0,0,0,1212,1214,5,409,0,0,1213,1215,3,760,380, + 0,1214,1213,1,0,0,0,1214,1215,1,0,0,0,1215,1216,1,0,0,0,1216,1217, + 3,630,315,0,1217,1218,5,580,0,0,1218,1219,7,5,0,0,1219,1220,5,603, + 0,0,1220,1221,5,882,0,0,1221,37,1,0,0,0,1222,1223,5,34,0,0,1223, + 1225,5,582,0,0,1224,1226,3,760,380,0,1225,1224,1,0,0,0,1225,1226, + 1,0,0,0,1226,1227,1,0,0,0,1227,1228,3,654,327,0,1228,39,1,0,0,0, + 1229,1230,5,34,0,0,1230,1231,5,592,0,0,1231,1232,3,706,353,0,1232, + 1233,5,67,0,0,1233,1234,5,360,0,0,1234,1235,5,692,0,0,1235,1236, + 7,6,0,0,1236,1237,5,518,0,0,1237,1238,5,866,0,0,1238,1243,3,84,42, + 0,1239,1240,5,868,0,0,1240,1242,3,84,42,0,1241,1239,1,0,0,0,1242, + 1245,1,0,0,0,1243,1241,1,0,0,0,1243,1244,1,0,0,0,1244,1246,1,0,0, + 0,1245,1243,1,0,0,0,1246,1247,5,867,0,0,1247,41,1,0,0,0,1248,1250, + 5,34,0,0,1249,1251,5,660,0,0,1250,1249,1,0,0,0,1250,1251,1,0,0,0, + 1251,1252,1,0,0,0,1252,1254,5,173,0,0,1253,1255,3,760,380,0,1254, + 1253,1,0,0,0,1254,1255,1,0,0,0,1255,1256,1,0,0,0,1256,1258,3,648, + 324,0,1257,1259,3,86,43,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0,1259, + 1270,1,0,0,0,1260,1267,3,104,52,0,1261,1263,5,868,0,0,1262,1261, + 1,0,0,0,1262,1263,1,0,0,0,1263,1264,1,0,0,0,1264,1266,3,104,52,0, + 1265,1262,1,0,0,0,1266,1269,1,0,0,0,1267,1265,1,0,0,0,1267,1268, + 1,0,0,0,1268,1271,1,0,0,0,1269,1267,1,0,0,0,1270,1260,1,0,0,0,1270, + 1271,1,0,0,0,1271,1273,1,0,0,0,1272,1274,3,110,55,0,1273,1272,1, + 0,0,0,1273,1274,1,0,0,0,1274,1276,1,0,0,0,1275,1277,7,7,0,0,1276, + 1275,1,0,0,0,1276,1277,1,0,0,0,1277,1279,1,0,0,0,1278,1280,5,13, + 0,0,1279,1278,1,0,0,0,1279,1280,1,0,0,0,1280,1281,1,0,0,0,1281,1282, + 3,210,105,0,1282,1327,1,0,0,0,1283,1285,5,34,0,0,1284,1286,5,660, + 0,0,1285,1284,1,0,0,0,1285,1286,1,0,0,0,1286,1287,1,0,0,0,1287,1289, + 5,173,0,0,1288,1290,3,760,380,0,1289,1288,1,0,0,0,1289,1290,1,0, + 0,0,1290,1291,1,0,0,0,1291,1299,3,648,324,0,1292,1293,5,99,0,0,1293, + 1300,3,652,326,0,1294,1295,5,866,0,0,1295,1296,5,99,0,0,1296,1297, + 3,652,326,0,1297,1298,5,867,0,0,1298,1300,1,0,0,0,1299,1292,1,0, + 0,0,1299,1294,1,0,0,0,1300,1327,1,0,0,0,1301,1303,5,34,0,0,1302, + 1304,5,660,0,0,1303,1302,1,0,0,0,1303,1304,1,0,0,0,1304,1305,1,0, + 0,0,1305,1307,5,173,0,0,1306,1308,3,760,380,0,1307,1306,1,0,0,0, + 1307,1308,1,0,0,0,1308,1309,1,0,0,0,1309,1310,3,648,324,0,1310,1321, + 3,86,43,0,1311,1318,3,104,52,0,1312,1314,5,868,0,0,1313,1312,1,0, + 0,0,1313,1314,1,0,0,0,1314,1315,1,0,0,0,1315,1317,3,104,52,0,1316, + 1313,1,0,0,0,1317,1320,1,0,0,0,1318,1316,1,0,0,0,1318,1319,1,0,0, + 0,1319,1322,1,0,0,0,1320,1318,1,0,0,0,1321,1311,1,0,0,0,1321,1322, + 1,0,0,0,1322,1324,1,0,0,0,1323,1325,3,110,55,0,1324,1323,1,0,0,0, + 1324,1325,1,0,0,0,1325,1327,1,0,0,0,1326,1248,1,0,0,0,1326,1283, + 1,0,0,0,1326,1301,1,0,0,0,1327,43,1,0,0,0,1328,1330,5,34,0,0,1329, + 1331,5,180,0,0,1330,1329,1,0,0,0,1330,1331,1,0,0,0,1331,1332,1,0, + 0,0,1332,1333,5,658,0,0,1333,1337,3,664,332,0,1334,1335,5,6,0,0, + 1335,1336,5,361,0,0,1336,1338,5,882,0,0,1337,1334,1,0,0,0,1337,1338, + 1,0,0,0,1338,1344,1,0,0,0,1339,1341,5,314,0,0,1340,1342,5,857,0, + 0,1341,1340,1,0,0,0,1341,1342,1,0,0,0,1342,1343,1,0,0,0,1343,1345, + 3,714,357,0,1344,1339,1,0,0,0,1344,1345,1,0,0,0,1345,1349,1,0,0, + 0,1346,1347,5,399,0,0,1347,1348,5,857,0,0,1348,1350,3,714,357,0, + 1349,1346,1,0,0,0,1349,1350,1,0,0,0,1350,1356,1,0,0,0,1351,1353, + 5,380,0,0,1352,1354,5,857,0,0,1353,1352,1,0,0,0,1353,1354,1,0,0, + 0,1354,1355,1,0,0,0,1355,1357,3,692,346,0,1356,1351,1,0,0,0,1356, + 1357,1,0,0,0,1357,1363,1,0,0,0,1358,1360,5,825,0,0,1359,1361,5,857, + 0,0,1360,1359,1,0,0,0,1360,1361,1,0,0,0,1361,1362,1,0,0,0,1362,1364, + 5,882,0,0,1363,1358,1,0,0,0,1363,1364,1,0,0,0,1364,45,1,0,0,0,1365, + 1367,5,34,0,0,1366,1368,5,180,0,0,1367,1366,1,0,0,0,1367,1368,1, + 0,0,0,1368,1369,1,0,0,0,1369,1370,5,658,0,0,1370,1371,3,664,332, + 0,1371,1372,5,6,0,0,1372,1373,5,361,0,0,1373,1374,5,882,0,0,1374, + 1375,5,187,0,0,1375,1376,5,451,0,0,1376,1377,5,74,0,0,1377,1383, + 3,706,353,0,1378,1380,5,393,0,0,1379,1381,5,857,0,0,1380,1379,1, + 0,0,0,1380,1381,1,0,0,0,1381,1382,1,0,0,0,1382,1384,3,714,357,0, + 1383,1378,1,0,0,0,1383,1384,1,0,0,0,1384,1390,1,0,0,0,1385,1387, + 5,428,0,0,1386,1388,5,857,0,0,1387,1386,1,0,0,0,1387,1388,1,0,0, + 0,1388,1389,1,0,0,0,1389,1391,3,714,357,0,1390,1385,1,0,0,0,1390, + 1391,1,0,0,0,1391,1397,1,0,0,0,1392,1394,5,314,0,0,1393,1395,5,857, + 0,0,1394,1393,1,0,0,0,1394,1395,1,0,0,0,1395,1396,1,0,0,0,1396,1398, + 3,714,357,0,1397,1392,1,0,0,0,1397,1398,1,0,0,0,1398,1404,1,0,0, + 0,1399,1401,5,481,0,0,1400,1402,5,857,0,0,1401,1400,1,0,0,0,1401, + 1402,1,0,0,0,1402,1403,1,0,0,0,1403,1405,3,714,357,0,1404,1399,1, + 0,0,0,1404,1405,1,0,0,0,1405,1411,1,0,0,0,1406,1408,5,504,0,0,1407, + 1409,5,857,0,0,1408,1407,1,0,0,0,1408,1409,1,0,0,0,1409,1410,1,0, + 0,0,1410,1412,3,706,353,0,1411,1406,1,0,0,0,1411,1412,1,0,0,0,1412, + 1414,1,0,0,0,1413,1415,5,687,0,0,1414,1413,1,0,0,0,1414,1415,1,0, + 0,0,1415,1421,1,0,0,0,1416,1418,5,340,0,0,1417,1419,5,857,0,0,1418, + 1417,1,0,0,0,1418,1419,1,0,0,0,1419,1420,1,0,0,0,1420,1422,5,882, + 0,0,1421,1416,1,0,0,0,1421,1422,1,0,0,0,1422,1423,1,0,0,0,1423,1425, + 5,380,0,0,1424,1426,5,857,0,0,1425,1424,1,0,0,0,1425,1426,1,0,0, + 0,1426,1427,1,0,0,0,1427,1428,3,692,346,0,1428,47,1,0,0,0,1429,1431, + 5,34,0,0,1430,1432,3,62,31,0,1431,1430,1,0,0,0,1431,1432,1,0,0,0, + 1432,1434,1,0,0,0,1433,1435,3,760,380,0,1434,1433,1,0,0,0,1434,1435, + 1,0,0,0,1435,1436,1,0,0,0,1436,1438,5,178,0,0,1437,1439,3,760,380, + 0,1438,1437,1,0,0,0,1438,1439,1,0,0,0,1439,1440,1,0,0,0,1440,1441, + 3,702,351,0,1441,1442,7,8,0,0,1442,1443,7,9,0,0,1443,1444,5,119, + 0,0,1444,1445,3,652,326,0,1445,1446,5,65,0,0,1446,1447,5,52,0,0, + 1447,1450,5,586,0,0,1448,1449,7,10,0,0,1449,1451,3,702,351,0,1450, + 1448,1,0,0,0,1450,1451,1,0,0,0,1451,1452,1,0,0,0,1452,1453,3,422, + 211,0,1453,49,1,0,0,0,1454,1456,5,194,0,0,1455,1457,5,552,0,0,1456, + 1455,1,0,0,0,1456,1457,1,0,0,0,1457,1458,1,0,0,0,1458,1459,3,52, + 26,0,1459,51,1,0,0,0,1460,1472,3,706,353,0,1461,1462,5,866,0,0,1462, + 1467,3,706,353,0,1463,1464,5,868,0,0,1464,1466,3,706,353,0,1465, + 1463,1,0,0,0,1466,1469,1,0,0,0,1467,1465,1,0,0,0,1467,1468,1,0,0, + 0,1468,1470,1,0,0,0,1469,1467,1,0,0,0,1470,1471,5,867,0,0,1471,1473, + 1,0,0,0,1472,1461,1,0,0,0,1472,1473,1,0,0,0,1473,1474,1,0,0,0,1474, + 1475,5,13,0,0,1475,1476,5,866,0,0,1476,1477,3,10,5,0,1477,1480,5, + 867,0,0,1478,1479,5,868,0,0,1479,1481,3,52,26,0,1480,1478,1,0,0, + 0,1480,1481,1,0,0,0,1481,53,1,0,0,0,1482,1484,5,34,0,0,1483,1485, + 3,762,381,0,1484,1483,1,0,0,0,1484,1485,1,0,0,0,1485,1489,1,0,0, + 0,1486,1487,5,308,0,0,1487,1488,5,857,0,0,1488,1490,7,11,0,0,1489, + 1486,1,0,0,0,1489,1490,1,0,0,0,1490,1492,1,0,0,0,1491,1493,3,62, + 31,0,1492,1491,1,0,0,0,1492,1493,1,0,0,0,1493,1497,1,0,0,0,1494, + 1495,5,162,0,0,1495,1496,5,591,0,0,1496,1498,7,12,0,0,1497,1494, + 1,0,0,0,1497,1498,1,0,0,0,1498,1499,1,0,0,0,1499,1500,5,684,0,0, + 1500,1512,3,634,317,0,1501,1502,5,866,0,0,1502,1507,3,658,329,0, + 1503,1504,5,868,0,0,1504,1506,3,658,329,0,1505,1503,1,0,0,0,1506, + 1509,1,0,0,0,1507,1505,1,0,0,0,1507,1508,1,0,0,0,1508,1510,1,0,0, + 0,1509,1507,1,0,0,0,1510,1511,5,867,0,0,1511,1513,1,0,0,0,1512,1501, + 1,0,0,0,1512,1513,1,0,0,0,1513,1514,1,0,0,0,1514,1534,5,13,0,0,1515, + 1517,5,866,0,0,1516,1518,3,50,25,0,1517,1516,1,0,0,0,1517,1518,1, + 0,0,0,1518,1519,1,0,0,0,1519,1520,3,210,105,0,1520,1521,5,867,0, + 0,1521,1535,1,0,0,0,1522,1524,3,50,25,0,1523,1522,1,0,0,0,1523,1524, + 1,0,0,0,1524,1525,1,0,0,0,1525,1532,3,210,105,0,1526,1528,5,194, + 0,0,1527,1529,7,13,0,0,1528,1527,1,0,0,0,1528,1529,1,0,0,0,1529, + 1530,1,0,0,0,1530,1531,5,27,0,0,1531,1533,5,121,0,0,1532,1526,1, + 0,0,0,1532,1533,1,0,0,0,1533,1535,1,0,0,0,1534,1515,1,0,0,0,1534, + 1523,1,0,0,0,1535,55,1,0,0,0,1536,1538,5,42,0,0,1537,1536,1,0,0, + 0,1537,1538,1,0,0,0,1538,1539,1,0,0,0,1539,1541,3,58,29,0,1540,1542, + 5,857,0,0,1541,1540,1,0,0,0,1541,1542,1,0,0,0,1542,1545,1,0,0,0, + 1543,1546,3,688,344,0,1544,1546,5,42,0,0,1545,1543,1,0,0,0,1545, + 1544,1,0,0,0,1546,1570,1,0,0,0,1547,1549,5,42,0,0,1548,1547,1,0, + 0,0,1548,1549,1,0,0,0,1549,1550,1,0,0,0,1550,1552,5,28,0,0,1551, + 1553,5,857,0,0,1552,1551,1,0,0,0,1552,1553,1,0,0,0,1553,1554,1,0, + 0,0,1554,1570,3,690,345,0,1555,1557,5,42,0,0,1556,1555,1,0,0,0,1556, + 1557,1,0,0,0,1557,1558,1,0,0,0,1558,1560,5,376,0,0,1559,1561,5,857, + 0,0,1560,1559,1,0,0,0,1560,1561,1,0,0,0,1561,1562,1,0,0,0,1562,1570, + 5,882,0,0,1563,1564,5,135,0,0,1564,1566,5,515,0,0,1565,1567,5,857, + 0,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1568,1,0,0,0,1568,1570, + 7,14,0,0,1569,1537,1,0,0,0,1569,1548,1,0,0,0,1569,1556,1,0,0,0,1569, + 1563,1,0,0,0,1570,57,1,0,0,0,1571,1572,5,26,0,0,1572,1577,5,155, + 0,0,1573,1577,5,823,0,0,1574,1575,5,224,0,0,1575,1577,5,155,0,0, + 1576,1571,1,0,0,0,1576,1573,1,0,0,0,1576,1574,1,0,0,0,1577,59,1, + 0,0,0,1578,1581,7,15,0,0,1579,1580,5,866,0,0,1580,1582,5,867,0,0, + 1581,1579,1,0,0,0,1581,1582,1,0,0,0,1582,61,1,0,0,0,1583,1584,5, + 364,0,0,1584,1587,5,857,0,0,1585,1588,3,684,342,0,1586,1588,3,60, + 30,0,1587,1585,1,0,0,0,1587,1586,1,0,0,0,1588,63,1,0,0,0,1589,1590, + 5,311,0,0,1590,1594,3,66,33,0,1591,1593,3,68,34,0,1592,1591,1,0, + 0,0,1593,1596,1,0,0,0,1594,1592,1,0,0,0,1594,1595,1,0,0,0,1595,1624, + 1,0,0,0,1596,1594,1,0,0,0,1597,1600,5,387,0,0,1598,1601,3,712,356, + 0,1599,1601,3,804,402,0,1600,1598,1,0,0,0,1600,1599,1,0,0,0,1601, + 1602,1,0,0,0,1602,1611,3,70,35,0,1603,1604,5,641,0,0,1604,1608,3, + 66,33,0,1605,1607,3,68,34,0,1606,1605,1,0,0,0,1607,1610,1,0,0,0, + 1608,1606,1,0,0,0,1608,1609,1,0,0,0,1609,1612,1,0,0,0,1610,1608, + 1,0,0,0,1611,1603,1,0,0,0,1611,1612,1,0,0,0,1612,1621,1,0,0,0,1613, + 1614,5,379,0,0,1614,1618,3,66,33,0,1615,1617,3,68,34,0,1616,1615, + 1,0,0,0,1617,1620,1,0,0,0,1618,1616,1,0,0,0,1618,1619,1,0,0,0,1619, + 1622,1,0,0,0,1620,1618,1,0,0,0,1621,1613,1,0,0,0,1621,1622,1,0,0, + 0,1622,1624,1,0,0,0,1623,1589,1,0,0,0,1623,1597,1,0,0,0,1624,65, + 1,0,0,0,1625,1630,5,287,0,0,1626,1630,3,716,358,0,1627,1630,3,712, + 356,0,1628,1630,3,804,402,0,1629,1625,1,0,0,0,1629,1626,1,0,0,0, + 1629,1627,1,0,0,0,1629,1628,1,0,0,0,1630,67,1,0,0,0,1631,1632,5, + 853,0,0,1632,1635,5,87,0,0,1633,1636,3,712,356,0,1634,1636,3,804, + 402,0,1635,1633,1,0,0,0,1635,1634,1,0,0,0,1636,1637,1,0,0,0,1637, + 1638,3,70,35,0,1638,69,1,0,0,0,1639,1653,3,830,415,0,1640,1653,5, + 223,0,0,1641,1653,5,242,0,0,1642,1653,5,243,0,0,1643,1653,5,244, + 0,0,1644,1653,5,245,0,0,1645,1653,5,246,0,0,1646,1653,5,247,0,0, + 1647,1653,5,248,0,0,1648,1653,5,249,0,0,1649,1653,5,250,0,0,1650, + 1653,5,251,0,0,1651,1653,5,252,0,0,1652,1639,1,0,0,0,1652,1640,1, + 0,0,0,1652,1641,1,0,0,0,1652,1642,1,0,0,0,1652,1643,1,0,0,0,1652, + 1644,1,0,0,0,1652,1645,1,0,0,0,1652,1646,1,0,0,0,1652,1647,1,0,0, + 0,1652,1648,1,0,0,0,1652,1649,1,0,0,0,1652,1650,1,0,0,0,1652,1651, + 1,0,0,0,1653,71,1,0,0,0,1654,1660,5,375,0,0,1655,1660,5,368,0,0, + 1656,1657,5,368,0,0,1657,1658,5,119,0,0,1658,1660,5,598,0,0,1659, + 1654,1,0,0,0,1659,1655,1,0,0,0,1659,1656,1,0,0,0,1660,73,1,0,0,0, + 1661,1662,5,188,0,0,1662,1663,7,16,0,0,1663,75,1,0,0,0,1664,1666, + 5,443,0,0,1665,1667,5,857,0,0,1666,1665,1,0,0,0,1666,1667,1,0,0, + 0,1667,1668,1,0,0,0,1668,1687,3,714,357,0,1669,1687,3,74,37,0,1670, + 1671,5,194,0,0,1671,1672,5,525,0,0,1672,1687,3,706,353,0,1673,1674, + 5,340,0,0,1674,1687,5,882,0,0,1675,1687,7,17,0,0,1676,1678,5,825, + 0,0,1677,1679,5,857,0,0,1678,1677,1,0,0,0,1678,1679,1,0,0,0,1679, + 1680,1,0,0,0,1680,1687,5,882,0,0,1681,1683,5,833,0,0,1682,1684,5, + 857,0,0,1683,1682,1,0,0,0,1683,1684,1,0,0,0,1684,1685,1,0,0,0,1685, + 1687,5,882,0,0,1686,1664,1,0,0,0,1686,1669,1,0,0,0,1686,1670,1,0, + 0,0,1686,1673,1,0,0,0,1686,1675,1,0,0,0,1686,1676,1,0,0,0,1686,1681, + 1,0,0,0,1687,77,1,0,0,0,1688,1690,7,18,0,0,1689,1688,1,0,0,0,1689, + 1690,1,0,0,0,1690,1691,1,0,0,0,1691,1692,3,706,353,0,1692,1693,3, + 726,363,0,1693,79,1,0,0,0,1694,1695,3,706,353,0,1695,1696,3,726, + 363,0,1696,81,1,0,0,0,1697,1698,5,340,0,0,1698,1721,5,882,0,0,1699, + 1700,5,444,0,0,1700,1721,5,162,0,0,1701,1703,5,114,0,0,1702,1701, + 1,0,0,0,1702,1703,1,0,0,0,1703,1704,1,0,0,0,1704,1721,5,47,0,0,1705, + 1706,5,354,0,0,1706,1716,5,162,0,0,1707,1708,5,502,0,0,1708,1716, + 5,162,0,0,1709,1710,5,136,0,0,1710,1711,5,162,0,0,1711,1716,5,360, + 0,0,1712,1713,5,112,0,0,1713,1714,5,162,0,0,1714,1716,5,360,0,0, + 1715,1705,1,0,0,0,1715,1707,1,0,0,0,1715,1709,1,0,0,0,1715,1712, + 1,0,0,0,1716,1721,1,0,0,0,1717,1718,5,162,0,0,1718,1719,5,591,0, + 0,1719,1721,7,12,0,0,1720,1697,1,0,0,0,1720,1699,1,0,0,0,1720,1702, + 1,0,0,0,1720,1715,1,0,0,0,1720,1717,1,0,0,0,1721,83,1,0,0,0,1722, + 1723,5,421,0,0,1723,1737,5,882,0,0,1724,1725,5,39,0,0,1725,1737, + 5,882,0,0,1726,1727,5,678,0,0,1727,1737,5,882,0,0,1728,1729,5,529, + 0,0,1729,1737,5,882,0,0,1730,1731,5,601,0,0,1731,1737,5,882,0,0, + 1732,1733,5,519,0,0,1733,1737,5,882,0,0,1734,1735,5,537,0,0,1735, + 1737,3,712,356,0,1736,1722,1,0,0,0,1736,1724,1,0,0,0,1736,1726,1, + 0,0,0,1736,1728,1,0,0,0,1736,1730,1,0,0,0,1736,1732,1,0,0,0,1736, + 1734,1,0,0,0,1737,85,1,0,0,0,1738,1739,5,866,0,0,1739,1744,3,88, + 44,0,1740,1741,5,868,0,0,1741,1743,3,88,44,0,1742,1740,1,0,0,0,1743, + 1746,1,0,0,0,1744,1742,1,0,0,0,1744,1745,1,0,0,0,1745,1747,1,0,0, + 0,1746,1744,1,0,0,0,1747,1748,5,867,0,0,1748,87,1,0,0,0,1749,1750, + 3,658,329,0,1750,1751,3,94,47,0,1751,1833,1,0,0,0,1752,1754,7,19, + 0,0,1753,1755,3,642,321,0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755, + 1757,1,0,0,0,1756,1758,3,74,37,0,1757,1756,1,0,0,0,1757,1758,1,0, + 0,0,1758,1759,1,0,0,0,1759,1763,3,738,369,0,1760,1762,3,76,38,0, + 1761,1760,1,0,0,0,1762,1765,1,0,0,0,1763,1761,1,0,0,0,1763,1764, + 1,0,0,0,1764,1833,1,0,0,0,1765,1763,1,0,0,0,1766,1768,7,20,0,0,1767, + 1769,7,19,0,0,1768,1767,1,0,0,0,1768,1769,1,0,0,0,1769,1771,1,0, + 0,0,1770,1772,3,642,321,0,1771,1770,1,0,0,0,1771,1772,1,0,0,0,1772, + 1773,1,0,0,0,1773,1777,3,738,369,0,1774,1776,3,76,38,0,1775,1774, + 1,0,0,0,1776,1779,1,0,0,0,1777,1775,1,0,0,0,1777,1778,1,0,0,0,1778, + 1833,1,0,0,0,1779,1777,1,0,0,0,1780,1782,3,92,46,0,1781,1780,1,0, + 0,0,1781,1782,1,0,0,0,1782,1783,1,0,0,0,1783,1784,5,131,0,0,1784, + 1786,5,92,0,0,1785,1787,3,74,37,0,1786,1785,1,0,0,0,1786,1787,1, + 0,0,0,1787,1788,1,0,0,0,1788,1792,3,738,369,0,1789,1791,3,76,38, + 0,1790,1789,1,0,0,0,1791,1794,1,0,0,0,1792,1790,1,0,0,0,1792,1793, + 1,0,0,0,1793,1833,1,0,0,0,1794,1792,1,0,0,0,1795,1797,3,92,46,0, + 1796,1795,1,0,0,0,1796,1797,1,0,0,0,1797,1798,1,0,0,0,1798,1800, + 5,182,0,0,1799,1801,7,19,0,0,1800,1799,1,0,0,0,1800,1801,1,0,0,0, + 1801,1803,1,0,0,0,1802,1804,3,642,321,0,1803,1802,1,0,0,0,1803,1804, + 1,0,0,0,1804,1806,1,0,0,0,1805,1807,3,74,37,0,1806,1805,1,0,0,0, + 1806,1807,1,0,0,0,1807,1808,1,0,0,0,1808,1812,3,738,369,0,1809,1811, + 3,76,38,0,1810,1809,1,0,0,0,1811,1814,1,0,0,0,1812,1810,1,0,0,0, + 1812,1813,1,0,0,0,1813,1833,1,0,0,0,1814,1812,1,0,0,0,1815,1817, + 3,92,46,0,1816,1815,1,0,0,0,1816,1817,1,0,0,0,1817,1818,1,0,0,0, + 1818,1819,5,67,0,0,1819,1821,5,92,0,0,1820,1822,3,642,321,0,1821, + 1820,1,0,0,0,1821,1822,1,0,0,0,1822,1823,1,0,0,0,1823,1824,3,738, + 369,0,1824,1825,3,98,49,0,1825,1833,1,0,0,0,1826,1827,5,27,0,0,1827, + 1828,5,866,0,0,1828,1829,3,804,402,0,1829,1830,5,867,0,0,1830,1833, + 1,0,0,0,1831,1833,3,90,45,0,1832,1749,1,0,0,0,1832,1752,1,0,0,0, + 1832,1766,1,0,0,0,1832,1781,1,0,0,0,1832,1796,1,0,0,0,1832,1816, + 1,0,0,0,1832,1826,1,0,0,0,1832,1831,1,0,0,0,1833,89,1,0,0,0,1834, + 1836,3,92,46,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1837,1,0, + 0,0,1837,1838,5,27,0,0,1838,1839,5,866,0,0,1839,1840,3,804,402,0, + 1840,1845,5,867,0,0,1841,1843,5,114,0,0,1842,1841,1,0,0,0,1842,1843, + 1,0,0,0,1843,1844,1,0,0,0,1844,1846,5,57,0,0,1845,1842,1,0,0,0,1845, + 1846,1,0,0,0,1846,91,1,0,0,0,1847,1849,5,31,0,0,1848,1850,3,706, + 353,0,1849,1848,1,0,0,0,1849,1850,1,0,0,0,1850,93,1,0,0,0,1851,1855, + 3,726,363,0,1852,1854,3,96,48,0,1853,1852,1,0,0,0,1854,1857,1,0, + 0,0,1855,1853,1,0,0,0,1855,1856,1,0,0,0,1856,95,1,0,0,0,1857,1855, + 1,0,0,0,1858,1902,3,722,361,0,1859,1860,5,42,0,0,1860,1902,3,754, + 377,0,1861,1902,5,686,0,0,1862,1902,5,435,0,0,1863,1868,5,315,0, + 0,1864,1865,5,119,0,0,1865,1866,5,185,0,0,1866,1868,3,756,378,0, + 1867,1863,1,0,0,0,1867,1864,1,0,0,0,1868,1902,1,0,0,0,1869,1871, + 5,131,0,0,1870,1869,1,0,0,0,1870,1871,1,0,0,0,1871,1872,1,0,0,0, + 1872,1902,5,92,0,0,1873,1875,5,182,0,0,1874,1876,5,92,0,0,1875,1874, + 1,0,0,0,1875,1876,1,0,0,0,1876,1902,1,0,0,0,1877,1878,5,340,0,0, + 1878,1902,5,882,0,0,1879,1880,5,338,0,0,1880,1902,7,21,0,0,1881, + 1882,5,647,0,0,1882,1902,7,22,0,0,1883,1902,3,98,49,0,1884,1885, + 5,28,0,0,1885,1902,3,690,345,0,1886,1887,5,71,0,0,1887,1889,5,9, + 0,0,1888,1886,1,0,0,0,1888,1889,1,0,0,0,1889,1890,1,0,0,0,1890,1891, + 5,13,0,0,1891,1892,5,866,0,0,1892,1893,3,804,402,0,1893,1895,5,867, + 0,0,1894,1896,7,23,0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896, + 1902,1,0,0,0,1897,1898,5,241,0,0,1898,1899,5,42,0,0,1899,1902,5, + 682,0,0,1900,1902,3,90,45,0,1901,1858,1,0,0,0,1901,1859,1,0,0,0, + 1901,1861,1,0,0,0,1901,1862,1,0,0,0,1901,1867,1,0,0,0,1901,1870, + 1,0,0,0,1901,1873,1,0,0,0,1901,1877,1,0,0,0,1901,1879,1,0,0,0,1901, + 1881,1,0,0,0,1901,1883,1,0,0,0,1901,1884,1,0,0,0,1901,1888,1,0,0, + 0,1901,1897,1,0,0,0,1901,1900,1,0,0,0,1902,97,1,0,0,0,1903,1904, + 5,138,0,0,1904,1906,3,652,326,0,1905,1907,3,738,369,0,1906,1905, + 1,0,0,0,1906,1907,1,0,0,0,1907,1910,1,0,0,0,1908,1909,5,110,0,0, + 1909,1911,7,24,0,0,1910,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1913, + 1,0,0,0,1912,1914,3,100,50,0,1913,1912,1,0,0,0,1913,1914,1,0,0,0, + 1914,99,1,0,0,0,1915,1916,5,119,0,0,1916,1917,5,44,0,0,1917,1921, + 3,102,51,0,1918,1919,5,119,0,0,1919,1920,5,185,0,0,1920,1922,3,102, + 51,0,1921,1918,1,0,0,0,1921,1922,1,0,0,0,1922,1932,1,0,0,0,1923, + 1924,5,119,0,0,1924,1925,5,185,0,0,1925,1929,3,102,51,0,1926,1927, + 5,119,0,0,1927,1928,5,44,0,0,1928,1930,3,102,51,0,1929,1926,1,0, + 0,0,1929,1930,1,0,0,0,1930,1932,1,0,0,0,1931,1915,1,0,0,0,1931,1923, + 1,0,0,0,1932,101,1,0,0,0,1933,1942,5,146,0,0,1934,1942,5,22,0,0, + 1935,1936,5,155,0,0,1936,1942,5,116,0,0,1937,1938,5,502,0,0,1938, + 1942,5,305,0,0,1939,1940,5,155,0,0,1940,1942,5,42,0,0,1941,1933, + 1,0,0,0,1941,1934,1,0,0,0,1941,1935,1,0,0,0,1941,1937,1,0,0,0,1941, + 1939,1,0,0,0,1942,103,1,0,0,0,1943,1945,5,380,0,0,1944,1946,5,857, + 0,0,1945,1944,1,0,0,0,1945,1946,1,0,0,0,1946,1948,1,0,0,0,1947,1949, + 3,692,346,0,1948,1947,1,0,0,0,1948,1949,1,0,0,0,1949,2129,1,0,0, + 0,1950,1952,5,825,0,0,1951,1953,5,857,0,0,1952,1951,1,0,0,0,1952, + 1953,1,0,0,0,1953,1954,1,0,0,0,1954,2129,5,882,0,0,1955,1957,5,314, + 0,0,1956,1958,5,857,0,0,1957,1956,1,0,0,0,1957,1958,1,0,0,0,1958, + 1959,1,0,0,0,1959,2129,3,712,356,0,1960,1962,5,315,0,0,1961,1963, + 5,857,0,0,1962,1961,1,0,0,0,1962,1963,1,0,0,0,1963,1964,1,0,0,0, + 1964,2129,3,712,356,0,1965,1967,5,316,0,0,1966,1968,5,857,0,0,1967, + 1966,1,0,0,0,1967,1968,1,0,0,0,1968,1969,1,0,0,0,1969,2129,3,712, + 356,0,1970,1972,5,42,0,0,1971,1970,1,0,0,0,1971,1972,1,0,0,0,1972, + 1973,1,0,0,0,1973,1975,3,58,29,0,1974,1976,5,857,0,0,1975,1974,1, + 0,0,0,1975,1976,1,0,0,0,1976,1979,1,0,0,0,1977,1980,3,688,344,0, + 1978,1980,5,42,0,0,1979,1977,1,0,0,0,1979,1978,1,0,0,0,1980,2129, + 1,0,0,0,1981,1983,7,25,0,0,1982,1984,5,857,0,0,1983,1982,1,0,0,0, + 1983,1984,1,0,0,0,1984,1985,1,0,0,0,1985,2129,7,26,0,0,1986,1988, + 5,42,0,0,1987,1986,1,0,0,0,1987,1988,1,0,0,0,1988,1989,1,0,0,0,1989, + 1991,5,28,0,0,1990,1992,5,857,0,0,1991,1990,1,0,0,0,1991,1992,1, + 0,0,0,1992,1993,1,0,0,0,1993,2129,3,690,345,0,1994,1996,5,340,0, + 0,1995,1997,5,857,0,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997,1998, + 1,0,0,0,1998,2129,5,882,0,0,1999,2001,5,346,0,0,2000,2002,5,857, + 0,0,2001,2000,1,0,0,0,2001,2002,1,0,0,0,2002,2003,1,0,0,0,2003,2129, + 7,27,0,0,2004,2006,5,349,0,0,2005,2007,5,857,0,0,2006,2005,1,0,0, + 0,2006,2007,1,0,0,0,2007,2008,1,0,0,0,2008,2129,5,882,0,0,2009,2010, + 7,28,0,0,2010,2012,5,367,0,0,2011,2013,5,857,0,0,2012,2011,1,0,0, + 0,2012,2013,1,0,0,0,2013,2014,1,0,0,0,2014,2129,5,882,0,0,2015,2017, + 5,365,0,0,2016,2018,5,857,0,0,2017,2016,1,0,0,0,2017,2018,1,0,0, + 0,2018,2019,1,0,0,0,2019,2129,7,26,0,0,2020,2022,5,376,0,0,2021, + 2023,5,857,0,0,2022,2021,1,0,0,0,2022,2023,1,0,0,0,2023,2024,1,0, + 0,0,2024,2129,5,882,0,0,2025,2027,7,29,0,0,2026,2028,5,857,0,0,2027, + 2026,1,0,0,0,2027,2028,1,0,0,0,2028,2029,1,0,0,0,2029,2129,7,26, + 0,0,2030,2032,7,30,0,0,2031,2033,5,857,0,0,2032,2031,1,0,0,0,2032, + 2033,1,0,0,0,2033,2034,1,0,0,0,2034,2129,3,712,356,0,2035,2037,5, + 377,0,0,2036,2038,5,857,0,0,2037,2036,1,0,0,0,2037,2038,1,0,0,0, + 2038,2039,1,0,0,0,2039,2129,3,712,356,0,2040,2041,5,82,0,0,2041, + 2043,5,367,0,0,2042,2044,5,857,0,0,2043,2042,1,0,0,0,2043,2044,1, + 0,0,0,2044,2045,1,0,0,0,2045,2129,5,882,0,0,2046,2048,5,431,0,0, + 2047,2049,5,857,0,0,2048,2047,1,0,0,0,2048,2049,1,0,0,0,2049,2050, + 1,0,0,0,2050,2129,7,31,0,0,2051,2053,5,443,0,0,2052,2054,5,857,0, + 0,2053,2052,1,0,0,0,2053,2054,1,0,0,0,2054,2055,1,0,0,0,2055,2129, + 3,714,357,0,2056,2058,5,480,0,0,2057,2059,5,857,0,0,2058,2057,1, + 0,0,0,2058,2059,1,0,0,0,2059,2060,1,0,0,0,2060,2129,3,712,356,0, + 2061,2063,5,490,0,0,2062,2064,5,857,0,0,2063,2062,1,0,0,0,2063,2064, + 1,0,0,0,2064,2065,1,0,0,0,2065,2129,3,712,356,0,2066,2068,5,520, + 0,0,2067,2069,5,857,0,0,2068,2067,1,0,0,0,2068,2069,1,0,0,0,2069, + 2070,1,0,0,0,2070,2129,7,14,0,0,2071,2073,5,529,0,0,2072,2074,5, + 857,0,0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075, + 2129,5,882,0,0,2076,2078,5,588,0,0,2077,2079,5,857,0,0,2078,2077, + 1,0,0,0,2078,2079,1,0,0,0,2079,2080,1,0,0,0,2080,2129,7,32,0,0,2081, + 2082,5,640,0,0,2082,2129,5,664,0,0,2083,2085,5,833,0,0,2084,2086, + 5,857,0,0,2085,2084,1,0,0,0,2085,2086,1,0,0,0,2086,2087,1,0,0,0, + 2087,2129,5,882,0,0,2088,2090,5,642,0,0,2089,2091,5,857,0,0,2090, + 2089,1,0,0,0,2090,2091,1,0,0,0,2091,2092,1,0,0,0,2092,2129,7,14, + 0,0,2093,2095,5,643,0,0,2094,2096,5,857,0,0,2095,2094,1,0,0,0,2095, + 2096,1,0,0,0,2096,2097,1,0,0,0,2097,2129,7,14,0,0,2098,2100,5,644, + 0,0,2099,2101,5,857,0,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101, + 2104,1,0,0,0,2102,2105,5,42,0,0,2103,2105,3,712,356,0,2104,2102, + 1,0,0,0,2104,2103,1,0,0,0,2105,2129,1,0,0,0,2106,2107,5,658,0,0, + 2107,2109,3,666,333,0,2108,2110,3,108,54,0,2109,2108,1,0,0,0,2109, + 2110,1,0,0,0,2110,2129,1,0,0,0,2111,2112,5,659,0,0,2112,2113,5,857, + 0,0,2113,2129,3,106,53,0,2114,2129,3,108,54,0,2115,2117,5,665,0, + 0,2116,2118,5,857,0,0,2117,2116,1,0,0,0,2117,2118,1,0,0,0,2118,2119, + 1,0,0,0,2119,2129,7,26,0,0,2120,2122,5,181,0,0,2121,2123,5,857,0, + 0,2122,2121,1,0,0,0,2122,2123,1,0,0,0,2123,2124,1,0,0,0,2124,2125, + 5,866,0,0,2125,2126,3,650,325,0,2126,2127,5,867,0,0,2127,2129,1, + 0,0,0,2128,1943,1,0,0,0,2128,1950,1,0,0,0,2128,1955,1,0,0,0,2128, + 1960,1,0,0,0,2128,1965,1,0,0,0,2128,1971,1,0,0,0,2128,1981,1,0,0, + 0,2128,1987,1,0,0,0,2128,1994,1,0,0,0,2128,1999,1,0,0,0,2128,2004, + 1,0,0,0,2128,2009,1,0,0,0,2128,2015,1,0,0,0,2128,2020,1,0,0,0,2128, + 2025,1,0,0,0,2128,2030,1,0,0,0,2128,2035,1,0,0,0,2128,2040,1,0,0, + 0,2128,2046,1,0,0,0,2128,2051,1,0,0,0,2128,2056,1,0,0,0,2128,2061, + 1,0,0,0,2128,2066,1,0,0,0,2128,2071,1,0,0,0,2128,2076,1,0,0,0,2128, + 2081,1,0,0,0,2128,2083,1,0,0,0,2128,2088,1,0,0,0,2128,2093,1,0,0, + 0,2128,2098,1,0,0,0,2128,2106,1,0,0,0,2128,2111,1,0,0,0,2128,2114, + 1,0,0,0,2128,2115,1,0,0,0,2128,2120,1,0,0,0,2129,105,1,0,0,0,2130, + 2131,7,33,0,0,2131,107,1,0,0,0,2132,2133,5,647,0,0,2133,2134,7,22, + 0,0,2134,109,1,0,0,0,2135,2136,5,130,0,0,2136,2137,5,20,0,0,2137, + 2140,3,112,56,0,2138,2139,5,528,0,0,2139,2141,3,712,356,0,2140,2138, + 1,0,0,0,2140,2141,1,0,0,0,2141,2149,1,0,0,0,2142,2143,5,652,0,0, + 2143,2144,5,20,0,0,2144,2147,3,114,57,0,2145,2146,5,653,0,0,2146, + 2148,3,712,356,0,2147,2145,1,0,0,0,2147,2148,1,0,0,0,2148,2150,1, + 0,0,0,2149,2142,1,0,0,0,2149,2150,1,0,0,0,2150,2162,1,0,0,0,2151, + 2152,5,866,0,0,2152,2157,3,116,58,0,2153,2154,5,868,0,0,2154,2156, + 3,116,58,0,2155,2153,1,0,0,0,2156,2159,1,0,0,0,2157,2155,1,0,0,0, + 2157,2158,1,0,0,0,2158,2160,1,0,0,0,2159,2157,1,0,0,0,2160,2161, + 5,867,0,0,2161,2163,1,0,0,0,2162,2151,1,0,0,0,2162,2163,1,0,0,0, + 2163,111,1,0,0,0,2164,2166,5,101,0,0,2165,2164,1,0,0,0,2165,2166, + 1,0,0,0,2166,2167,1,0,0,0,2167,2168,5,418,0,0,2168,2169,5,866,0, + 0,2169,2170,3,804,402,0,2170,2171,5,867,0,0,2171,2211,1,0,0,0,2172, + 2174,5,101,0,0,2173,2172,1,0,0,0,2173,2174,1,0,0,0,2174,2175,1,0, + 0,0,2175,2179,5,92,0,0,2176,2177,5,308,0,0,2177,2178,5,857,0,0,2178, + 2180,7,34,0,0,2179,2176,1,0,0,0,2179,2180,1,0,0,0,2180,2181,1,0, + 0,0,2181,2183,5,866,0,0,2182,2184,3,660,330,0,2183,2182,1,0,0,0, + 2183,2184,1,0,0,0,2184,2185,1,0,0,0,2185,2211,5,867,0,0,2186,2196, + 5,134,0,0,2187,2188,5,866,0,0,2188,2189,3,804,402,0,2189,2190,5, + 867,0,0,2190,2197,1,0,0,0,2191,2192,5,337,0,0,2192,2193,5,866,0, + 0,2193,2194,3,660,330,0,2194,2195,5,867,0,0,2195,2197,1,0,0,0,2196, + 2187,1,0,0,0,2196,2191,1,0,0,0,2197,2211,1,0,0,0,2198,2208,5,449, + 0,0,2199,2200,5,866,0,0,2200,2201,3,804,402,0,2201,2202,5,867,0, + 0,2202,2209,1,0,0,0,2203,2204,5,337,0,0,2204,2205,5,866,0,0,2205, + 2206,3,660,330,0,2206,2207,5,867,0,0,2207,2209,1,0,0,0,2208,2199, + 1,0,0,0,2208,2203,1,0,0,0,2209,2211,1,0,0,0,2210,2165,1,0,0,0,2210, + 2173,1,0,0,0,2210,2186,1,0,0,0,2210,2198,1,0,0,0,2211,113,1,0,0, + 0,2212,2214,5,101,0,0,2213,2212,1,0,0,0,2213,2214,1,0,0,0,2214,2215, + 1,0,0,0,2215,2216,5,418,0,0,2216,2217,5,866,0,0,2217,2218,3,804, + 402,0,2218,2219,5,867,0,0,2219,2234,1,0,0,0,2220,2222,5,101,0,0, + 2221,2220,1,0,0,0,2221,2222,1,0,0,0,2222,2223,1,0,0,0,2223,2227, + 5,92,0,0,2224,2225,5,308,0,0,2225,2226,5,857,0,0,2226,2228,7,34, + 0,0,2227,2224,1,0,0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2230, + 5,866,0,0,2230,2231,3,660,330,0,2231,2232,5,867,0,0,2232,2234,1, + 0,0,0,2233,2213,1,0,0,0,2233,2221,1,0,0,0,2234,115,1,0,0,0,2235, + 2236,5,130,0,0,2236,2237,3,672,336,0,2237,2238,5,189,0,0,2238,2239, + 5,447,0,0,2239,2240,5,662,0,0,2240,2241,5,866,0,0,2241,2246,3,118, + 59,0,2242,2243,5,868,0,0,2243,2245,3,118,59,0,2244,2242,1,0,0,0, + 2245,2248,1,0,0,0,2246,2244,1,0,0,0,2246,2247,1,0,0,0,2247,2249, + 1,0,0,0,2248,2246,1,0,0,0,2249,2253,5,867,0,0,2250,2252,3,124,62, + 0,2251,2250,1,0,0,0,2252,2255,1,0,0,0,2253,2251,1,0,0,0,2253,2254, + 1,0,0,0,2254,2267,1,0,0,0,2255,2253,1,0,0,0,2256,2257,5,866,0,0, + 2257,2262,3,122,61,0,2258,2259,5,868,0,0,2259,2261,3,122,61,0,2260, + 2258,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0,0,2262,2263,1,0,0, + 0,2263,2265,1,0,0,0,2264,2262,1,0,0,0,2265,2266,5,867,0,0,2266,2268, + 1,0,0,0,2267,2256,1,0,0,0,2267,2268,1,0,0,0,2268,2382,1,0,0,0,2269, + 2270,5,130,0,0,2270,2271,3,672,336,0,2271,2272,5,189,0,0,2272,2273, + 5,447,0,0,2273,2274,5,662,0,0,2274,2278,3,118,59,0,2275,2277,3,124, + 62,0,2276,2275,1,0,0,0,2277,2280,1,0,0,0,2278,2276,1,0,0,0,2278, + 2279,1,0,0,0,2279,2292,1,0,0,0,2280,2278,1,0,0,0,2281,2282,5,866, + 0,0,2282,2287,3,122,61,0,2283,2284,5,868,0,0,2284,2286,3,122,61, + 0,2285,2283,1,0,0,0,2286,2289,1,0,0,0,2287,2285,1,0,0,0,2287,2288, + 1,0,0,0,2288,2290,1,0,0,0,2289,2287,1,0,0,0,2290,2291,5,867,0,0, + 2291,2293,1,0,0,0,2292,2281,1,0,0,0,2292,2293,1,0,0,0,2293,2382, + 1,0,0,0,2294,2295,5,130,0,0,2295,2296,3,672,336,0,2296,2297,5,189, + 0,0,2297,2298,5,80,0,0,2298,2299,5,866,0,0,2299,2304,3,118,59,0, + 2300,2301,5,868,0,0,2301,2303,3,118,59,0,2302,2300,1,0,0,0,2303, + 2306,1,0,0,0,2304,2302,1,0,0,0,2304,2305,1,0,0,0,2305,2307,1,0,0, + 0,2306,2304,1,0,0,0,2307,2311,5,867,0,0,2308,2310,3,124,62,0,2309, + 2308,1,0,0,0,2310,2313,1,0,0,0,2311,2309,1,0,0,0,2311,2312,1,0,0, + 0,2312,2325,1,0,0,0,2313,2311,1,0,0,0,2314,2315,5,866,0,0,2315,2320, + 3,122,61,0,2316,2317,5,868,0,0,2317,2319,3,122,61,0,2318,2316,1, + 0,0,0,2319,2322,1,0,0,0,2320,2318,1,0,0,0,2320,2321,1,0,0,0,2321, + 2323,1,0,0,0,2322,2320,1,0,0,0,2323,2324,5,867,0,0,2324,2326,1,0, + 0,0,2325,2314,1,0,0,0,2325,2326,1,0,0,0,2326,2382,1,0,0,0,2327,2328, + 5,130,0,0,2328,2329,3,672,336,0,2329,2330,5,189,0,0,2330,2331,5, + 80,0,0,2331,2332,5,866,0,0,2332,2337,3,120,60,0,2333,2334,5,868, + 0,0,2334,2336,3,120,60,0,2335,2333,1,0,0,0,2336,2339,1,0,0,0,2337, + 2335,1,0,0,0,2337,2338,1,0,0,0,2338,2340,1,0,0,0,2339,2337,1,0,0, + 0,2340,2344,5,867,0,0,2341,2343,3,124,62,0,2342,2341,1,0,0,0,2343, + 2346,1,0,0,0,2344,2342,1,0,0,0,2344,2345,1,0,0,0,2345,2358,1,0,0, + 0,2346,2344,1,0,0,0,2347,2348,5,866,0,0,2348,2353,3,122,61,0,2349, + 2350,5,868,0,0,2350,2352,3,122,61,0,2351,2349,1,0,0,0,2352,2355, + 1,0,0,0,2353,2351,1,0,0,0,2353,2354,1,0,0,0,2354,2356,1,0,0,0,2355, + 2353,1,0,0,0,2356,2357,5,867,0,0,2357,2359,1,0,0,0,2358,2347,1,0, + 0,0,2358,2359,1,0,0,0,2359,2382,1,0,0,0,2360,2361,5,130,0,0,2361, + 2365,3,672,336,0,2362,2364,3,124,62,0,2363,2362,1,0,0,0,2364,2367, + 1,0,0,0,2365,2363,1,0,0,0,2365,2366,1,0,0,0,2366,2379,1,0,0,0,2367, + 2365,1,0,0,0,2368,2369,5,866,0,0,2369,2374,3,122,61,0,2370,2371, + 5,868,0,0,2371,2373,3,122,61,0,2372,2370,1,0,0,0,2373,2376,1,0,0, + 0,2374,2372,1,0,0,0,2374,2375,1,0,0,0,2375,2377,1,0,0,0,2376,2374, + 1,0,0,0,2377,2378,5,867,0,0,2378,2380,1,0,0,0,2379,2368,1,0,0,0, + 2379,2380,1,0,0,0,2380,2382,1,0,0,0,2381,2235,1,0,0,0,2381,2269, + 1,0,0,0,2381,2294,1,0,0,0,2381,2327,1,0,0,0,2381,2360,1,0,0,0,2382, + 117,1,0,0,0,2383,2387,3,724,362,0,2384,2387,3,804,402,0,2385,2387, + 5,111,0,0,2386,2383,1,0,0,0,2386,2384,1,0,0,0,2386,2385,1,0,0,0, + 2387,119,1,0,0,0,2388,2389,5,866,0,0,2389,2392,3,118,59,0,2390,2391, + 5,868,0,0,2391,2393,3,118,59,0,2392,2390,1,0,0,0,2393,2394,1,0,0, + 0,2394,2392,1,0,0,0,2394,2395,1,0,0,0,2395,2396,1,0,0,0,2396,2397, + 5,867,0,0,2397,121,1,0,0,0,2398,2399,5,652,0,0,2399,2403,3,706,353, + 0,2400,2402,3,124,62,0,2401,2400,1,0,0,0,2402,2405,1,0,0,0,2403, + 2401,1,0,0,0,2403,2404,1,0,0,0,2404,123,1,0,0,0,2405,2403,1,0,0, + 0,2406,2408,5,42,0,0,2407,2406,1,0,0,0,2407,2408,1,0,0,0,2408,2410, + 1,0,0,0,2409,2411,5,647,0,0,2410,2409,1,0,0,0,2410,2411,1,0,0,0, + 2411,2412,1,0,0,0,2412,2414,5,380,0,0,2413,2415,5,857,0,0,2414,2413, + 1,0,0,0,2414,2415,1,0,0,0,2415,2416,1,0,0,0,2416,2455,3,692,346, + 0,2417,2419,5,340,0,0,2418,2420,5,857,0,0,2419,2418,1,0,0,0,2419, + 2420,1,0,0,0,2420,2421,1,0,0,0,2421,2455,5,882,0,0,2422,2423,5,360, + 0,0,2423,2425,5,367,0,0,2424,2426,5,857,0,0,2425,2424,1,0,0,0,2425, + 2426,1,0,0,0,2426,2427,1,0,0,0,2427,2455,5,882,0,0,2428,2429,5,82, + 0,0,2429,2431,5,367,0,0,2430,2432,5,857,0,0,2431,2430,1,0,0,0,2431, + 2432,1,0,0,0,2432,2433,1,0,0,0,2433,2455,5,882,0,0,2434,2436,5,480, + 0,0,2435,2437,5,857,0,0,2436,2435,1,0,0,0,2436,2437,1,0,0,0,2437, + 2438,1,0,0,0,2438,2455,3,712,356,0,2439,2441,5,490,0,0,2440,2442, + 5,857,0,0,2441,2440,1,0,0,0,2441,2442,1,0,0,0,2442,2443,1,0,0,0, + 2443,2455,3,712,356,0,2444,2446,5,658,0,0,2445,2447,5,857,0,0,2446, + 2445,1,0,0,0,2446,2447,1,0,0,0,2447,2448,1,0,0,0,2448,2455,3,666, + 333,0,2449,2451,5,504,0,0,2450,2452,5,857,0,0,2451,2450,1,0,0,0, + 2451,2452,1,0,0,0,2452,2453,1,0,0,0,2453,2455,3,706,353,0,2454,2407, + 1,0,0,0,2454,2417,1,0,0,0,2454,2422,1,0,0,0,2454,2428,1,0,0,0,2454, + 2434,1,0,0,0,2454,2439,1,0,0,0,2454,2444,1,0,0,0,2454,2449,1,0,0, + 0,2455,125,1,0,0,0,2456,2457,5,8,0,0,2457,2459,7,0,0,0,2458,2460, + 3,628,314,0,2459,2458,1,0,0,0,2459,2460,1,0,0,0,2460,2462,1,0,0, + 0,2461,2463,3,56,28,0,2462,2461,1,0,0,0,2463,2464,1,0,0,0,2464,2462, + 1,0,0,0,2464,2465,1,0,0,0,2465,2475,1,0,0,0,2466,2467,5,8,0,0,2467, + 2468,7,0,0,0,2468,2469,3,628,314,0,2469,2470,5,677,0,0,2470,2471, + 5,360,0,0,2471,2472,5,367,0,0,2472,2473,5,496,0,0,2473,2475,1,0, + 0,0,2474,2456,1,0,0,0,2474,2466,1,0,0,0,2475,127,1,0,0,0,2476,2478, + 5,8,0,0,2477,2479,3,62,31,0,2478,2477,1,0,0,0,2478,2479,1,0,0,0, + 2479,2480,1,0,0,0,2480,2481,5,385,0,0,2481,2485,3,702,351,0,2482, + 2483,5,119,0,0,2483,2484,5,590,0,0,2484,2486,3,64,32,0,2485,2482, + 1,0,0,0,2485,2486,1,0,0,0,2486,2493,1,0,0,0,2487,2488,5,119,0,0, + 2488,2490,5,343,0,0,2489,2491,5,114,0,0,2490,2489,1,0,0,0,2490,2491, + 1,0,0,0,2491,2492,1,0,0,0,2492,2494,5,541,0,0,2493,2487,1,0,0,0, + 2493,2494,1,0,0,0,2494,2498,1,0,0,0,2495,2496,5,141,0,0,2496,2497, + 5,176,0,0,2497,2499,3,702,351,0,2498,2495,1,0,0,0,2498,2499,1,0, + 0,0,2499,2501,1,0,0,0,2500,2502,3,72,36,0,2501,2500,1,0,0,0,2501, + 2502,1,0,0,0,2502,2505,1,0,0,0,2503,2504,5,340,0,0,2504,2506,5,882, + 0,0,2505,2503,1,0,0,0,2505,2506,1,0,0,0,2506,2509,1,0,0,0,2507,2508, + 5,371,0,0,2508,2510,3,422,211,0,2509,2507,1,0,0,0,2509,2510,1,0, + 0,0,2510,129,1,0,0,0,2511,2512,5,8,0,0,2512,2513,5,409,0,0,2513, + 2517,3,632,316,0,2514,2516,3,82,41,0,2515,2514,1,0,0,0,2516,2519, + 1,0,0,0,2517,2515,1,0,0,0,2517,2518,1,0,0,0,2518,131,1,0,0,0,2519, + 2517,1,0,0,0,2520,2521,5,8,0,0,2521,2522,5,433,0,0,2522,2523,5,585, + 0,0,2523,2524,5,801,0,0,2524,2525,5,453,0,0,2525,2526,5,92,0,0,2526, + 133,1,0,0,0,2527,2528,5,8,0,0,2528,2529,5,451,0,0,2529,2530,5,74, + 0,0,2530,2531,3,706,353,0,2531,2532,5,6,0,0,2532,2533,5,671,0,0, + 2533,2539,5,882,0,0,2534,2536,5,428,0,0,2535,2537,5,857,0,0,2536, + 2535,1,0,0,0,2536,2537,1,0,0,0,2537,2538,1,0,0,0,2538,2540,3,714, + 357,0,2539,2534,1,0,0,0,2539,2540,1,0,0,0,2540,2542,1,0,0,0,2541, + 2543,5,687,0,0,2542,2541,1,0,0,0,2542,2543,1,0,0,0,2543,2544,1,0, + 0,0,2544,2546,5,380,0,0,2545,2547,5,857,0,0,2546,2545,1,0,0,0,2546, + 2547,1,0,0,0,2547,2548,1,0,0,0,2548,2549,3,692,346,0,2549,135,1, + 0,0,0,2550,2551,5,8,0,0,2551,2552,5,132,0,0,2552,2556,3,702,351, + 0,2553,2555,3,82,41,0,2554,2553,1,0,0,0,2555,2558,1,0,0,0,2556,2554, + 1,0,0,0,2556,2557,1,0,0,0,2557,137,1,0,0,0,2558,2556,1,0,0,0,2559, + 2560,5,8,0,0,2560,2561,5,592,0,0,2561,2562,3,706,353,0,2562,2563, + 5,518,0,0,2563,2564,5,866,0,0,2564,2569,3,84,42,0,2565,2566,5,868, + 0,0,2566,2568,3,84,42,0,2567,2565,1,0,0,0,2568,2571,1,0,0,0,2569, + 2567,1,0,0,0,2569,2570,1,0,0,0,2570,2572,1,0,0,0,2571,2569,1,0,0, + 0,2572,2573,5,867,0,0,2573,139,1,0,0,0,2574,2575,5,8,0,0,2575,2576, + 5,173,0,0,2576,2585,3,652,326,0,2577,2582,3,146,73,0,2578,2579,5, + 868,0,0,2579,2581,3,146,73,0,2580,2578,1,0,0,0,2581,2584,1,0,0,0, + 2582,2580,1,0,0,0,2582,2583,1,0,0,0,2583,2586,1,0,0,0,2584,2582, + 1,0,0,0,2585,2577,1,0,0,0,2585,2586,1,0,0,0,2586,2594,1,0,0,0,2587, + 2591,3,148,74,0,2588,2590,3,148,74,0,2589,2588,1,0,0,0,2590,2593, + 1,0,0,0,2591,2589,1,0,0,0,2591,2592,1,0,0,0,2592,2595,1,0,0,0,2593, + 2591,1,0,0,0,2594,2587,1,0,0,0,2594,2595,1,0,0,0,2595,141,1,0,0, + 0,2596,2598,5,8,0,0,2597,2599,5,180,0,0,2598,2597,1,0,0,0,2598,2599, + 1,0,0,0,2599,2600,1,0,0,0,2600,2601,5,658,0,0,2601,2602,3,666,333, + 0,2602,2603,7,35,0,0,2603,2604,5,361,0,0,2604,2610,5,882,0,0,2605, + 2607,5,428,0,0,2606,2608,5,857,0,0,2607,2606,1,0,0,0,2607,2608,1, + 0,0,0,2608,2609,1,0,0,0,2609,2611,3,714,357,0,2610,2605,1,0,0,0, + 2610,2611,1,0,0,0,2611,2613,1,0,0,0,2612,2614,5,687,0,0,2613,2612, + 1,0,0,0,2613,2614,1,0,0,0,2614,2618,1,0,0,0,2615,2616,5,141,0,0, + 2616,2617,5,176,0,0,2617,2619,3,664,332,0,2618,2615,1,0,0,0,2618, + 2619,1,0,0,0,2619,2625,1,0,0,0,2620,2622,5,314,0,0,2621,2623,5,857, + 0,0,2622,2621,1,0,0,0,2622,2623,1,0,0,0,2623,2624,1,0,0,0,2624,2626, + 3,714,357,0,2625,2620,1,0,0,0,2625,2626,1,0,0,0,2626,2629,1,0,0, + 0,2627,2628,5,155,0,0,2628,2630,7,36,0,0,2629,2627,1,0,0,0,2629, + 2630,1,0,0,0,2630,2636,1,0,0,0,2631,2633,5,376,0,0,2632,2634,5,857, + 0,0,2633,2632,1,0,0,0,2633,2634,1,0,0,0,2634,2635,1,0,0,0,2635,2637, + 5,882,0,0,2636,2631,1,0,0,0,2636,2637,1,0,0,0,2637,2643,1,0,0,0, + 2638,2640,5,380,0,0,2639,2641,5,857,0,0,2640,2639,1,0,0,0,2640,2641, + 1,0,0,0,2641,2642,1,0,0,0,2642,2644,3,692,346,0,2643,2638,1,0,0, + 0,2643,2644,1,0,0,0,2644,2650,1,0,0,0,2645,2647,5,825,0,0,2646,2648, + 5,857,0,0,2647,2646,1,0,0,0,2647,2648,1,0,0,0,2648,2649,1,0,0,0, + 2649,2651,5,882,0,0,2650,2645,1,0,0,0,2650,2651,1,0,0,0,2651,143, + 1,0,0,0,2652,2656,5,8,0,0,2653,2654,5,308,0,0,2654,2655,5,857,0, + 0,2655,2657,7,11,0,0,2656,2653,1,0,0,0,2656,2657,1,0,0,0,2657,2659, + 1,0,0,0,2658,2660,3,62,31,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0, + 2660,2664,1,0,0,0,2661,2662,5,162,0,0,2662,2663,5,591,0,0,2663,2665, + 7,12,0,0,2664,2661,1,0,0,0,2664,2665,1,0,0,0,2665,2666,1,0,0,0,2666, + 2667,5,684,0,0,2667,2672,3,636,318,0,2668,2669,5,866,0,0,2669,2670, + 3,660,330,0,2670,2671,5,867,0,0,2671,2673,1,0,0,0,2672,2668,1,0, + 0,0,2672,2673,1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,13,0,0,2675, + 2682,3,210,105,0,2676,2678,5,194,0,0,2677,2679,7,13,0,0,2678,2677, + 1,0,0,0,2678,2679,1,0,0,0,2679,2680,1,0,0,0,2680,2681,5,27,0,0,2681, + 2683,5,121,0,0,2682,2676,1,0,0,0,2682,2683,1,0,0,0,2683,145,1,0, + 0,0,2684,2691,3,104,52,0,2685,2687,5,868,0,0,2686,2685,1,0,0,0,2686, + 2687,1,0,0,0,2687,2688,1,0,0,0,2688,2690,3,104,52,0,2689,2686,1, + 0,0,0,2690,2693,1,0,0,0,2691,2689,1,0,0,0,2691,2692,1,0,0,0,2692, + 2949,1,0,0,0,2693,2691,1,0,0,0,2694,2696,5,6,0,0,2695,2697,5,29, + 0,0,2696,2695,1,0,0,0,2696,2697,1,0,0,0,2697,2698,1,0,0,0,2698,2699, + 3,662,331,0,2699,2703,3,94,47,0,2700,2704,5,402,0,0,2701,2702,5, + 306,0,0,2702,2704,3,662,331,0,2703,2700,1,0,0,0,2703,2701,1,0,0, + 0,2703,2704,1,0,0,0,2704,2949,1,0,0,0,2705,2707,5,6,0,0,2706,2708, + 5,29,0,0,2707,2706,1,0,0,0,2707,2708,1,0,0,0,2708,2709,1,0,0,0,2709, + 2710,5,866,0,0,2710,2711,3,662,331,0,2711,2718,3,94,47,0,2712,2713, + 5,868,0,0,2713,2714,3,662,331,0,2714,2715,3,94,47,0,2715,2717,1, + 0,0,0,2716,2712,1,0,0,0,2717,2720,1,0,0,0,2718,2716,1,0,0,0,2718, + 2719,1,0,0,0,2719,2721,1,0,0,0,2720,2718,1,0,0,0,2721,2722,5,867, + 0,0,2722,2949,1,0,0,0,2723,2724,5,6,0,0,2724,2726,7,19,0,0,2725, + 2727,3,642,321,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727,2729,1, + 0,0,0,2728,2730,3,74,37,0,2729,2728,1,0,0,0,2729,2730,1,0,0,0,2730, + 2731,1,0,0,0,2731,2735,3,738,369,0,2732,2734,3,76,38,0,2733,2732, + 1,0,0,0,2734,2737,1,0,0,0,2735,2733,1,0,0,0,2735,2736,1,0,0,0,2736, + 2949,1,0,0,0,2737,2735,1,0,0,0,2738,2739,5,6,0,0,2739,2741,7,20, + 0,0,2740,2742,7,19,0,0,2741,2740,1,0,0,0,2741,2742,1,0,0,0,2742, + 2744,1,0,0,0,2743,2745,3,642,321,0,2744,2743,1,0,0,0,2744,2745,1, + 0,0,0,2745,2746,1,0,0,0,2746,2750,3,738,369,0,2747,2749,3,76,38, + 0,2748,2747,1,0,0,0,2749,2752,1,0,0,0,2750,2748,1,0,0,0,2750,2751, + 1,0,0,0,2751,2949,1,0,0,0,2752,2750,1,0,0,0,2753,2758,5,6,0,0,2754, + 2756,5,31,0,0,2755,2757,3,706,353,0,2756,2755,1,0,0,0,2756,2757, + 1,0,0,0,2757,2759,1,0,0,0,2758,2754,1,0,0,0,2758,2759,1,0,0,0,2759, + 2760,1,0,0,0,2760,2761,5,131,0,0,2761,2763,5,92,0,0,2762,2764,3, + 74,37,0,2763,2762,1,0,0,0,2763,2764,1,0,0,0,2764,2765,1,0,0,0,2765, + 2769,3,738,369,0,2766,2768,3,76,38,0,2767,2766,1,0,0,0,2768,2771, + 1,0,0,0,2769,2767,1,0,0,0,2769,2770,1,0,0,0,2770,2949,1,0,0,0,2771, + 2769,1,0,0,0,2772,2777,5,6,0,0,2773,2775,5,31,0,0,2774,2776,3,706, + 353,0,2775,2774,1,0,0,0,2775,2776,1,0,0,0,2776,2778,1,0,0,0,2777, + 2773,1,0,0,0,2777,2778,1,0,0,0,2778,2779,1,0,0,0,2779,2781,5,182, + 0,0,2780,2782,7,19,0,0,2781,2780,1,0,0,0,2781,2782,1,0,0,0,2782, + 2784,1,0,0,0,2783,2785,3,642,321,0,2784,2783,1,0,0,0,2784,2785,1, + 0,0,0,2785,2787,1,0,0,0,2786,2788,3,74,37,0,2787,2786,1,0,0,0,2787, + 2788,1,0,0,0,2788,2789,1,0,0,0,2789,2793,3,738,369,0,2790,2792,3, + 76,38,0,2791,2790,1,0,0,0,2792,2795,1,0,0,0,2793,2791,1,0,0,0,2793, + 2794,1,0,0,0,2794,2949,1,0,0,0,2795,2793,1,0,0,0,2796,2801,5,6,0, + 0,2797,2799,5,31,0,0,2798,2800,3,706,353,0,2799,2798,1,0,0,0,2799, + 2800,1,0,0,0,2800,2802,1,0,0,0,2801,2797,1,0,0,0,2801,2802,1,0,0, + 0,2802,2803,1,0,0,0,2803,2804,5,67,0,0,2804,2806,5,92,0,0,2805,2807, + 3,642,321,0,2806,2805,1,0,0,0,2806,2807,1,0,0,0,2807,2808,1,0,0, + 0,2808,2809,3,738,369,0,2809,2810,3,98,49,0,2810,2949,1,0,0,0,2811, + 2813,5,6,0,0,2812,2814,3,90,45,0,2813,2812,1,0,0,0,2813,2814,1,0, + 0,0,2814,2949,1,0,0,0,2815,2816,5,51,0,0,2816,2817,7,37,0,0,2817, + 2949,3,706,353,0,2818,2819,5,8,0,0,2819,2820,7,37,0,0,2820,2822, + 3,706,353,0,2821,2823,5,114,0,0,2822,2821,1,0,0,0,2822,2823,1,0, + 0,0,2823,2825,1,0,0,0,2824,2826,5,57,0,0,2825,2824,1,0,0,0,2825, + 2826,1,0,0,0,2826,2949,1,0,0,0,2827,2829,5,308,0,0,2828,2830,5,857, + 0,0,2829,2828,1,0,0,0,2829,2830,1,0,0,0,2830,2831,1,0,0,0,2831,2949, + 7,38,0,0,2832,2834,5,8,0,0,2833,2835,5,29,0,0,2834,2833,1,0,0,0, + 2834,2835,1,0,0,0,2835,2836,1,0,0,0,2836,2844,3,662,331,0,2837,2838, + 5,155,0,0,2838,2839,5,42,0,0,2839,2845,3,754,377,0,2840,2841,5,155, + 0,0,2841,2845,7,17,0,0,2842,2843,5,51,0,0,2843,2845,5,42,0,0,2844, + 2837,1,0,0,0,2844,2840,1,0,0,0,2844,2842,1,0,0,0,2845,2949,1,0,0, + 0,2846,2847,5,8,0,0,2847,2848,5,82,0,0,2848,2849,3,642,321,0,2849, + 2850,7,17,0,0,2850,2949,1,0,0,0,2851,2853,5,25,0,0,2852,2854,5,29, + 0,0,2853,2852,1,0,0,0,2853,2854,1,0,0,0,2854,2855,1,0,0,0,2855,2856, + 3,662,331,0,2856,2857,3,658,329,0,2857,2861,3,94,47,0,2858,2862, + 5,402,0,0,2859,2860,5,306,0,0,2860,2862,3,662,331,0,2861,2858,1, + 0,0,0,2861,2859,1,0,0,0,2861,2862,1,0,0,0,2862,2949,1,0,0,0,2863, + 2865,5,42,0,0,2864,2863,1,0,0,0,2864,2865,1,0,0,0,2865,2866,1,0, + 0,0,2866,2867,5,26,0,0,2867,2868,5,155,0,0,2868,2869,5,857,0,0,2869, + 2875,3,688,344,0,2870,2872,5,28,0,0,2871,2873,5,857,0,0,2872,2871, + 1,0,0,0,2872,2873,1,0,0,0,2873,2874,1,0,0,0,2874,2876,3,690,345, + 0,2875,2870,1,0,0,0,2875,2876,1,0,0,0,2876,2949,1,0,0,0,2877,2878, + 5,33,0,0,2878,2882,5,176,0,0,2879,2883,5,823,0,0,2880,2881,5,26, + 0,0,2881,2883,5,155,0,0,2882,2879,1,0,0,0,2882,2880,1,0,0,0,2883, + 2884,1,0,0,0,2884,2887,3,688,344,0,2885,2886,5,28,0,0,2886,2888, + 3,690,345,0,2887,2885,1,0,0,0,2887,2888,1,0,0,0,2888,2949,1,0,0, + 0,2889,2890,7,39,0,0,2890,2949,5,93,0,0,2891,2892,7,40,0,0,2892, + 2949,5,658,0,0,2893,2895,5,51,0,0,2894,2896,5,29,0,0,2895,2894,1, + 0,0,0,2895,2896,1,0,0,0,2896,2897,1,0,0,0,2897,2949,3,662,331,0, + 2898,2899,5,51,0,0,2899,2900,7,19,0,0,2900,2949,3,642,321,0,2901, + 2902,5,51,0,0,2902,2903,5,131,0,0,2903,2949,5,92,0,0,2904,2905,5, + 51,0,0,2905,2906,5,67,0,0,2906,2907,5,92,0,0,2907,2949,3,706,353, + 0,2908,2949,5,66,0,0,2909,2911,5,104,0,0,2910,2912,5,857,0,0,2911, + 2910,1,0,0,0,2911,2912,1,0,0,0,2912,2913,1,0,0,0,2913,2949,7,4,0, + 0,2914,2916,5,492,0,0,2915,2917,5,29,0,0,2916,2915,1,0,0,0,2916, + 2917,1,0,0,0,2917,2918,1,0,0,0,2918,2919,3,662,331,0,2919,2923,3, + 94,47,0,2920,2924,5,402,0,0,2921,2922,5,306,0,0,2922,2924,3,662, + 331,0,2923,2920,1,0,0,0,2923,2921,1,0,0,0,2923,2924,1,0,0,0,2924, + 2949,1,0,0,0,2925,2926,5,125,0,0,2926,2927,5,20,0,0,2927,2949,3, + 660,330,0,2928,2929,5,141,0,0,2929,2930,5,29,0,0,2930,2931,3,662, + 331,0,2931,2932,5,176,0,0,2932,2933,3,658,329,0,2933,2949,1,0,0, + 0,2934,2935,5,141,0,0,2935,2936,7,19,0,0,2936,2937,3,642,321,0,2937, + 2938,5,176,0,0,2938,2939,3,638,319,0,2939,2949,1,0,0,0,2940,2942, + 5,141,0,0,2941,2943,7,41,0,0,2942,2941,1,0,0,0,2942,2943,1,0,0,0, + 2943,2944,1,0,0,0,2944,2949,3,648,324,0,2945,2946,7,42,0,0,2946, + 2949,5,681,0,0,2947,2949,3,148,74,0,2948,2684,1,0,0,0,2948,2694, + 1,0,0,0,2948,2705,1,0,0,0,2948,2723,1,0,0,0,2948,2738,1,0,0,0,2948, + 2753,1,0,0,0,2948,2772,1,0,0,0,2948,2796,1,0,0,0,2948,2811,1,0,0, + 0,2948,2815,1,0,0,0,2948,2818,1,0,0,0,2948,2827,1,0,0,0,2948,2832, + 1,0,0,0,2948,2846,1,0,0,0,2948,2851,1,0,0,0,2948,2864,1,0,0,0,2948, + 2877,1,0,0,0,2948,2889,1,0,0,0,2948,2891,1,0,0,0,2948,2893,1,0,0, + 0,2948,2898,1,0,0,0,2948,2901,1,0,0,0,2948,2904,1,0,0,0,2948,2908, + 1,0,0,0,2948,2909,1,0,0,0,2948,2914,1,0,0,0,2948,2925,1,0,0,0,2948, + 2928,1,0,0,0,2948,2934,1,0,0,0,2948,2940,1,0,0,0,2948,2945,1,0,0, + 0,2948,2947,1,0,0,0,2949,147,1,0,0,0,2950,2951,5,6,0,0,2951,2952, + 5,130,0,0,2952,2953,5,866,0,0,2953,2958,3,116,58,0,2954,2955,5,868, + 0,0,2955,2957,3,116,58,0,2956,2954,1,0,0,0,2957,2960,1,0,0,0,2958, + 2956,1,0,0,0,2958,2959,1,0,0,0,2959,2961,1,0,0,0,2960,2958,1,0,0, + 0,2961,2962,5,867,0,0,2962,3049,1,0,0,0,2963,2964,5,51,0,0,2964, + 2965,5,130,0,0,2965,3049,3,670,335,0,2966,2967,5,369,0,0,2967,2970, + 5,130,0,0,2968,2971,3,670,335,0,2969,2971,5,7,0,0,2970,2968,1,0, + 0,0,2970,2969,1,0,0,0,2971,2972,1,0,0,0,2972,3049,5,658,0,0,2973, + 2974,5,425,0,0,2974,2977,5,130,0,0,2975,2978,3,670,335,0,2976,2978, + 5,7,0,0,2977,2975,1,0,0,0,2977,2976,1,0,0,0,2978,2979,1,0,0,0,2979, + 3049,5,658,0,0,2980,2981,5,668,0,0,2981,2984,5,130,0,0,2982,2985, + 3,670,335,0,2983,2985,5,7,0,0,2984,2982,1,0,0,0,2984,2983,1,0,0, + 0,2985,3049,1,0,0,0,2986,2987,5,335,0,0,2987,2988,5,130,0,0,2988, + 3049,3,712,356,0,2989,2990,5,561,0,0,2990,2991,5,130,0,0,2991,2992, + 3,670,335,0,2992,2993,5,88,0,0,2993,2994,5,866,0,0,2994,2999,3,116, + 58,0,2995,2996,5,868,0,0,2996,2998,3,116,58,0,2997,2995,1,0,0,0, + 2998,3001,1,0,0,0,2999,2997,1,0,0,0,2999,3000,1,0,0,0,3000,3002, + 1,0,0,0,3001,2999,1,0,0,0,3002,3003,5,867,0,0,3003,3049,1,0,0,0, + 3004,3005,5,388,0,0,3005,3006,5,130,0,0,3006,3007,3,672,336,0,3007, + 3008,5,194,0,0,3008,3009,5,173,0,0,3009,3012,3,652,326,0,3010,3011, + 7,42,0,0,3011,3013,5,681,0,0,3012,3010,1,0,0,0,3012,3013,1,0,0,0, + 3013,3049,1,0,0,0,3014,3015,5,10,0,0,3015,3018,5,130,0,0,3016,3019, + 3,670,335,0,3017,3019,5,7,0,0,3018,3016,1,0,0,0,3018,3017,1,0,0, + 0,3019,3049,1,0,0,0,3020,3021,5,27,0,0,3021,3024,5,130,0,0,3022, + 3025,3,670,335,0,3023,3025,5,7,0,0,3024,3022,1,0,0,0,3024,3023,1, + 0,0,0,3025,3049,1,0,0,0,3026,3027,5,120,0,0,3027,3030,5,130,0,0, + 3028,3031,3,670,335,0,3029,3031,5,7,0,0,3030,3028,1,0,0,0,3030,3029, + 1,0,0,0,3031,3049,1,0,0,0,3032,3033,5,550,0,0,3033,3036,5,130,0, + 0,3034,3037,3,670,335,0,3035,3037,5,7,0,0,3036,3034,1,0,0,0,3036, + 3035,1,0,0,0,3037,3049,1,0,0,0,3038,3039,5,562,0,0,3039,3042,5,130, + 0,0,3040,3043,3,670,335,0,3041,3043,5,7,0,0,3042,3040,1,0,0,0,3042, + 3041,1,0,0,0,3043,3049,1,0,0,0,3044,3045,5,560,0,0,3045,3049,5,527, + 0,0,3046,3047,5,677,0,0,3047,3049,5,527,0,0,3048,2950,1,0,0,0,3048, + 2963,1,0,0,0,3048,2966,1,0,0,0,3048,2973,1,0,0,0,3048,2980,1,0,0, + 0,3048,2986,1,0,0,0,3048,2989,1,0,0,0,3048,3004,1,0,0,0,3048,3014, + 1,0,0,0,3048,3020,1,0,0,0,3048,3026,1,0,0,0,3048,3032,1,0,0,0,3048, + 3038,1,0,0,0,3048,3044,1,0,0,0,3048,3046,1,0,0,0,3049,149,1,0,0, + 0,3050,3051,5,51,0,0,3051,3053,7,0,0,0,3052,3054,3,758,379,0,3053, + 3052,1,0,0,0,3053,3054,1,0,0,0,3054,3055,1,0,0,0,3055,3056,3,628, + 314,0,3056,151,1,0,0,0,3057,3058,5,51,0,0,3058,3060,5,385,0,0,3059, + 3061,3,758,379,0,3060,3059,1,0,0,0,3060,3061,1,0,0,0,3061,3062,1, + 0,0,0,3062,3063,3,702,351,0,3063,153,1,0,0,0,3064,3065,5,51,0,0, + 3065,3067,5,82,0,0,3066,3068,7,1,0,0,3067,3066,1,0,0,0,3067,3068, + 1,0,0,0,3068,3069,1,0,0,0,3069,3070,3,642,321,0,3070,3071,5,119, + 0,0,3071,3084,3,652,326,0,3072,3074,5,308,0,0,3073,3075,5,857,0, + 0,3074,3073,1,0,0,0,3074,3075,1,0,0,0,3075,3076,1,0,0,0,3076,3083, + 7,3,0,0,3077,3079,5,104,0,0,3078,3080,5,857,0,0,3079,3078,1,0,0, + 0,3079,3080,1,0,0,0,3080,3081,1,0,0,0,3081,3083,7,4,0,0,3082,3072, + 1,0,0,0,3082,3077,1,0,0,0,3083,3086,1,0,0,0,3084,3082,1,0,0,0,3084, + 3085,1,0,0,0,3085,155,1,0,0,0,3086,3084,1,0,0,0,3087,3088,5,51,0, + 0,3088,3089,5,451,0,0,3089,3090,5,74,0,0,3090,3091,3,706,353,0,3091, + 3093,5,380,0,0,3092,3094,5,857,0,0,3093,3092,1,0,0,0,3093,3094,1, + 0,0,0,3094,3095,1,0,0,0,3095,3096,3,692,346,0,3096,157,1,0,0,0,3097, + 3098,5,51,0,0,3098,3100,5,132,0,0,3099,3101,3,758,379,0,3100,3099, + 1,0,0,0,3100,3101,1,0,0,0,3101,3102,1,0,0,0,3102,3103,3,702,351, + 0,3103,159,1,0,0,0,3104,3105,5,51,0,0,3105,3107,5,409,0,0,3106,3108, + 3,758,379,0,3107,3106,1,0,0,0,3107,3108,1,0,0,0,3108,3109,1,0,0, + 0,3109,3110,3,632,316,0,3110,161,1,0,0,0,3111,3112,5,51,0,0,3112, + 3114,5,592,0,0,3113,3115,3,758,379,0,3114,3113,1,0,0,0,3114,3115, + 1,0,0,0,3115,3116,1,0,0,0,3116,3117,3,706,353,0,3117,163,1,0,0,0, + 3118,3119,5,51,0,0,3119,3120,5,161,0,0,3120,3121,5,137,0,0,3121, + 3123,5,835,0,0,3122,3124,3,758,379,0,3123,3122,1,0,0,0,3123,3124, + 1,0,0,0,3124,3125,1,0,0,0,3125,3126,5,883,0,0,3126,165,1,0,0,0,3127, + 3129,5,51,0,0,3128,3130,5,660,0,0,3129,3128,1,0,0,0,3129,3130,1, + 0,0,0,3130,3131,1,0,0,0,3131,3133,5,173,0,0,3132,3134,3,758,379, + 0,3133,3132,1,0,0,0,3133,3134,1,0,0,0,3134,3135,1,0,0,0,3135,3137, + 3,650,325,0,3136,3138,7,43,0,0,3137,3136,1,0,0,0,3137,3138,1,0,0, + 0,3138,167,1,0,0,0,3139,3141,5,51,0,0,3140,3142,5,180,0,0,3141,3140, + 1,0,0,0,3141,3142,1,0,0,0,3142,3143,1,0,0,0,3143,3144,5,658,0,0, + 3144,3150,3,666,333,0,3145,3147,5,380,0,0,3146,3148,5,857,0,0,3147, + 3146,1,0,0,0,3147,3148,1,0,0,0,3148,3149,1,0,0,0,3149,3151,3,692, + 346,0,3150,3145,1,0,0,0,3150,3151,1,0,0,0,3151,169,1,0,0,0,3152, + 3153,5,51,0,0,3153,3155,5,178,0,0,3154,3156,3,758,379,0,3155,3154, + 1,0,0,0,3155,3156,1,0,0,0,3156,3157,1,0,0,0,3157,3158,3,702,351, + 0,3158,171,1,0,0,0,3159,3160,5,51,0,0,3160,3162,5,684,0,0,3161,3163, + 3,758,379,0,3162,3161,1,0,0,0,3162,3163,1,0,0,0,3163,3164,1,0,0, + 0,3164,3169,3,636,318,0,3165,3166,5,868,0,0,3166,3168,3,636,318, + 0,3167,3165,1,0,0,0,3168,3171,1,0,0,0,3169,3167,1,0,0,0,3169,3170, + 1,0,0,0,3170,3173,1,0,0,0,3171,3169,1,0,0,0,3172,3174,7,43,0,0,3173, + 3172,1,0,0,0,3173,3174,1,0,0,0,3174,173,1,0,0,0,3175,3176,5,51,0, + 0,3176,3178,5,582,0,0,3177,3179,3,758,379,0,3178,3177,1,0,0,0,3178, + 3179,1,0,0,0,3179,3180,1,0,0,0,3180,3181,3,654,327,0,3181,175,1, + 0,0,0,3182,3183,5,155,0,0,3183,3184,5,42,0,0,3184,3188,5,582,0,0, + 3185,3189,5,505,0,0,3186,3189,5,7,0,0,3187,3189,3,654,327,0,3188, + 3185,1,0,0,0,3188,3186,1,0,0,0,3188,3187,1,0,0,0,3189,3190,1,0,0, + 0,3190,3191,5,176,0,0,3191,3196,3,656,328,0,3192,3193,5,868,0,0, + 3193,3195,3,656,328,0,3194,3192,1,0,0,0,3195,3198,1,0,0,0,3196,3194, + 1,0,0,0,3196,3197,1,0,0,0,3197,3203,1,0,0,0,3198,3196,1,0,0,0,3199, + 3200,5,155,0,0,3200,3201,5,582,0,0,3201,3203,3,468,234,0,3202,3182, + 1,0,0,0,3202,3199,1,0,0,0,3203,177,1,0,0,0,3204,3205,5,141,0,0,3205, + 3206,5,173,0,0,3206,3211,3,180,90,0,3207,3208,5,868,0,0,3208,3210, + 3,180,90,0,3209,3207,1,0,0,0,3210,3213,1,0,0,0,3211,3209,1,0,0,0, + 3211,3212,1,0,0,0,3212,179,1,0,0,0,3213,3211,1,0,0,0,3214,3215,3, + 652,326,0,3215,3216,5,176,0,0,3216,3217,3,648,324,0,3217,181,1,0, + 0,0,3218,3220,5,668,0,0,3219,3221,5,173,0,0,3220,3219,1,0,0,0,3220, + 3221,1,0,0,0,3221,3222,1,0,0,0,3222,3223,3,652,326,0,3223,183,1, + 0,0,0,3224,3225,5,21,0,0,3225,3232,3,702,351,0,3226,3229,5,866,0, + 0,3227,3230,3,748,374,0,3228,3230,3,740,370,0,3229,3227,1,0,0,0, + 3229,3228,1,0,0,0,3229,3230,1,0,0,0,3230,3231,1,0,0,0,3231,3233, + 5,867,0,0,3232,3226,1,0,0,0,3232,3233,1,0,0,0,3233,185,1,0,0,0,3234, + 3237,3,240,120,0,3235,3237,3,242,121,0,3236,3234,1,0,0,0,3236,3235, + 1,0,0,0,3237,187,1,0,0,0,3238,3239,5,371,0,0,3239,3240,3,740,370, + 0,3240,189,1,0,0,0,3241,3246,3,244,122,0,3242,3246,3,246,123,0,3243, + 3246,3,248,124,0,3244,3246,3,250,125,0,3245,3241,1,0,0,0,3245,3242, + 1,0,0,0,3245,3243,1,0,0,0,3245,3244,1,0,0,0,3246,191,1,0,0,0,3247, + 3249,5,86,0,0,3248,3250,7,44,0,0,3249,3248,1,0,0,0,3249,3250,1,0, + 0,0,3250,3252,1,0,0,0,3251,3253,5,79,0,0,3252,3251,1,0,0,0,3252, + 3253,1,0,0,0,3253,3255,1,0,0,0,3254,3256,5,88,0,0,3255,3254,1,0, + 0,0,3255,3256,1,0,0,0,3256,3257,1,0,0,0,3257,3264,3,652,326,0,3258, + 3259,5,130,0,0,3259,3261,5,866,0,0,3260,3262,3,670,335,0,3261,3260, + 1,0,0,0,3261,3262,1,0,0,0,3262,3263,1,0,0,0,3263,3265,5,867,0,0, + 3264,3258,1,0,0,0,3264,3265,1,0,0,0,3265,3277,1,0,0,0,3266,3268, + 3,268,134,0,3267,3266,1,0,0,0,3267,3268,1,0,0,0,3268,3271,1,0,0, + 0,3269,3272,3,742,371,0,3270,3272,3,196,98,0,3271,3269,1,0,0,0,3271, + 3270,1,0,0,0,3271,3272,1,0,0,0,3272,3274,1,0,0,0,3273,3275,3,194, + 97,0,3274,3273,1,0,0,0,3274,3275,1,0,0,0,3275,3278,1,0,0,0,3276, + 3278,3,232,116,0,3277,3267,1,0,0,0,3277,3276,1,0,0,0,3278,3280,1, + 0,0,0,3279,3281,3,194,97,0,3280,3279,1,0,0,0,3280,3281,1,0,0,0,3281, + 3294,1,0,0,0,3282,3283,5,119,0,0,3283,3284,5,373,0,0,3284,3285,5, + 92,0,0,3285,3286,5,185,0,0,3286,3291,3,234,117,0,3287,3288,5,868, + 0,0,3288,3290,3,234,117,0,3289,3287,1,0,0,0,3290,3293,1,0,0,0,3291, + 3289,1,0,0,0,3291,3292,1,0,0,0,3292,3295,1,0,0,0,3293,3291,1,0,0, + 0,3294,3282,1,0,0,0,3294,3295,1,0,0,0,3295,193,1,0,0,0,3296,3297, + 5,13,0,0,3297,3299,3,706,353,0,3298,3300,3,268,134,0,3299,3298,1, + 0,0,0,3299,3300,1,0,0,0,3300,195,1,0,0,0,3301,3306,3,210,105,0,3302, + 3303,5,173,0,0,3303,3306,3,652,326,0,3304,3306,3,230,115,0,3305, + 3301,1,0,0,0,3305,3302,1,0,0,0,3305,3304,1,0,0,0,3306,197,1,0,0, + 0,3307,3313,3,200,100,0,3308,3310,5,828,0,0,3309,3311,7,45,0,0,3310, + 3309,1,0,0,0,3310,3311,1,0,0,0,3311,3312,1,0,0,0,3312,3314,3,200, + 100,0,3313,3308,1,0,0,0,3314,3315,1,0,0,0,3315,3313,1,0,0,0,3315, + 3316,1,0,0,0,3316,199,1,0,0,0,3317,3319,5,866,0,0,3318,3317,1,0, + 0,0,3318,3319,1,0,0,0,3319,3320,1,0,0,0,3320,3322,3,280,140,0,3321, + 3323,5,867,0,0,3322,3321,1,0,0,0,3322,3323,1,0,0,0,3323,201,1,0, + 0,0,3324,3325,5,103,0,0,3325,3327,5,360,0,0,3326,3328,7,46,0,0,3327, + 3326,1,0,0,0,3327,3328,1,0,0,0,3328,3330,1,0,0,0,3329,3331,5,450, + 0,0,3330,3329,1,0,0,0,3330,3331,1,0,0,0,3331,3332,1,0,0,0,3332,3333, + 5,83,0,0,3333,3335,5,882,0,0,3334,3336,7,7,0,0,3335,3334,1,0,0,0, + 3335,3336,1,0,0,0,3336,3337,1,0,0,0,3337,3338,5,88,0,0,3338,3339, + 5,173,0,0,3339,3345,3,652,326,0,3340,3341,5,130,0,0,3341,3342,5, + 866,0,0,3342,3343,3,670,335,0,3343,3344,5,867,0,0,3344,3346,1,0, + 0,0,3345,3340,1,0,0,0,3345,3346,1,0,0,0,3346,3350,1,0,0,0,3347,3348, + 5,26,0,0,3348,3349,5,155,0,0,3349,3351,3,688,344,0,3350,3347,1,0, + 0,0,3350,3351,1,0,0,0,3351,3358,1,0,0,0,3352,3354,7,47,0,0,3353, + 3355,3,304,152,0,3354,3353,1,0,0,0,3355,3356,1,0,0,0,3356,3354,1, + 0,0,0,3356,3357,1,0,0,0,3357,3359,1,0,0,0,3358,3352,1,0,0,0,3358, + 3359,1,0,0,0,3359,3366,1,0,0,0,3360,3362,5,102,0,0,3361,3363,3,306, + 153,0,3362,3361,1,0,0,0,3363,3364,1,0,0,0,3364,3362,1,0,0,0,3364, + 3365,1,0,0,0,3365,3367,1,0,0,0,3366,3360,1,0,0,0,3366,3367,1,0,0, + 0,3367,3372,1,0,0,0,3368,3369,5,79,0,0,3369,3370,3,712,356,0,3370, + 3371,7,48,0,0,3371,3373,1,0,0,0,3372,3368,1,0,0,0,3372,3373,1,0, + 0,0,3373,3385,1,0,0,0,3374,3375,5,866,0,0,3375,3380,3,236,118,0, + 3376,3377,5,868,0,0,3377,3379,3,236,118,0,3378,3376,1,0,0,0,3379, + 3382,1,0,0,0,3380,3378,1,0,0,0,3380,3381,1,0,0,0,3381,3383,1,0,0, + 0,3382,3380,1,0,0,0,3383,3384,5,867,0,0,3384,3386,1,0,0,0,3385,3374, + 1,0,0,0,3385,3386,1,0,0,0,3386,3396,1,0,0,0,3387,3388,5,155,0,0, + 3388,3393,3,234,117,0,3389,3390,5,868,0,0,3390,3392,3,234,117,0, + 3391,3389,1,0,0,0,3392,3395,1,0,0,0,3393,3391,1,0,0,0,3393,3394, + 1,0,0,0,3394,3397,1,0,0,0,3395,3393,1,0,0,0,3396,3387,1,0,0,0,3396, + 3397,1,0,0,0,3397,203,1,0,0,0,3398,3399,5,103,0,0,3399,3401,5,695, + 0,0,3400,3402,7,46,0,0,3401,3400,1,0,0,0,3401,3402,1,0,0,0,3402, + 3404,1,0,0,0,3403,3405,5,450,0,0,3404,3403,1,0,0,0,3404,3405,1,0, + 0,0,3405,3406,1,0,0,0,3406,3407,5,83,0,0,3407,3409,5,882,0,0,3408, + 3410,7,7,0,0,3409,3408,1,0,0,0,3409,3410,1,0,0,0,3410,3411,1,0,0, + 0,3411,3412,5,88,0,0,3412,3413,5,173,0,0,3413,3417,3,652,326,0,3414, + 3415,5,26,0,0,3415,3416,5,155,0,0,3416,3418,3,688,344,0,3417,3414, + 1,0,0,0,3417,3418,1,0,0,0,3418,3429,1,0,0,0,3419,3420,5,587,0,0, + 3420,3421,5,423,0,0,3421,3423,5,20,0,0,3422,3424,5,859,0,0,3423, + 3422,1,0,0,0,3423,3424,1,0,0,0,3424,3425,1,0,0,0,3425,3427,5,882, + 0,0,3426,3428,5,858,0,0,3427,3426,1,0,0,0,3427,3428,1,0,0,0,3428, + 3430,1,0,0,0,3429,3419,1,0,0,0,3429,3430,1,0,0,0,3430,3435,1,0,0, + 0,3431,3432,5,79,0,0,3432,3433,3,712,356,0,3433,3434,7,48,0,0,3434, + 3436,1,0,0,0,3435,3431,1,0,0,0,3435,3436,1,0,0,0,3436,3448,1,0,0, + 0,3437,3438,5,866,0,0,3438,3443,3,236,118,0,3439,3440,5,868,0,0, + 3440,3442,3,236,118,0,3441,3439,1,0,0,0,3442,3445,1,0,0,0,3443,3441, + 1,0,0,0,3443,3444,1,0,0,0,3444,3446,1,0,0,0,3445,3443,1,0,0,0,3446, + 3447,5,867,0,0,3447,3449,1,0,0,0,3448,3437,1,0,0,0,3448,3449,1,0, + 0,0,3449,3459,1,0,0,0,3450,3451,5,155,0,0,3451,3456,3,234,117,0, + 3452,3453,5,868,0,0,3453,3455,3,234,117,0,3454,3452,1,0,0,0,3455, + 3458,1,0,0,0,3456,3454,1,0,0,0,3456,3457,1,0,0,0,3457,3460,1,0,0, + 0,3458,3456,1,0,0,0,3459,3450,1,0,0,0,3459,3460,1,0,0,0,3460,205, + 1,0,0,0,3461,3462,5,866,0,0,3462,3464,3,224,112,0,3463,3465,3,258, + 129,0,3464,3463,1,0,0,0,3464,3465,1,0,0,0,3465,3467,1,0,0,0,3466, + 3468,3,318,159,0,3467,3466,1,0,0,0,3467,3468,1,0,0,0,3468,3469,1, + 0,0,0,3469,3471,5,867,0,0,3470,3472,3,258,129,0,3471,3470,1,0,0, + 0,3471,3472,1,0,0,0,3472,3474,1,0,0,0,3473,3475,3,318,159,0,3474, + 3473,1,0,0,0,3474,3475,1,0,0,0,3475,3477,1,0,0,0,3476,3478,3,302, + 151,0,3477,3476,1,0,0,0,3477,3478,1,0,0,0,3478,207,1,0,0,0,3479, + 3481,5,143,0,0,3480,3482,7,49,0,0,3481,3480,1,0,0,0,3481,3482,1, + 0,0,0,3482,3484,1,0,0,0,3483,3485,5,88,0,0,3484,3483,1,0,0,0,3484, + 3485,1,0,0,0,3485,3486,1,0,0,0,3486,3492,3,652,326,0,3487,3488,5, + 130,0,0,3488,3489,5,866,0,0,3489,3490,3,670,335,0,3490,3491,5,867, + 0,0,3491,3493,1,0,0,0,3492,3487,1,0,0,0,3492,3493,1,0,0,0,3493,3502, + 1,0,0,0,3494,3495,5,866,0,0,3495,3496,3,660,330,0,3496,3497,5,867, + 0,0,3497,3499,1,0,0,0,3498,3494,1,0,0,0,3498,3499,1,0,0,0,3499,3500, + 1,0,0,0,3500,3503,3,228,114,0,3501,3503,3,232,116,0,3502,3498,1, + 0,0,0,3502,3501,1,0,0,0,3503,209,1,0,0,0,3504,3508,3,280,140,0,3505, + 3507,3,282,141,0,3506,3505,1,0,0,0,3507,3510,1,0,0,0,3508,3506,1, + 0,0,0,3508,3509,1,0,0,0,3509,3519,1,0,0,0,3510,3508,1,0,0,0,3511, + 3513,5,181,0,0,3512,3514,7,45,0,0,3513,3512,1,0,0,0,3513,3514,1, + 0,0,0,3514,3517,1,0,0,0,3515,3518,3,280,140,0,3516,3518,3,278,139, + 0,3517,3515,1,0,0,0,3517,3516,1,0,0,0,3518,3520,1,0,0,0,3519,3511, + 1,0,0,0,3519,3520,1,0,0,0,3520,3525,1,0,0,0,3521,3522,5,868,0,0, + 3522,3524,3,284,142,0,3523,3521,1,0,0,0,3524,3527,1,0,0,0,3525,3523, + 1,0,0,0,3525,3526,1,0,0,0,3526,3529,1,0,0,0,3527,3525,1,0,0,0,3528, + 3530,3,258,129,0,3529,3528,1,0,0,0,3529,3530,1,0,0,0,3530,3532,1, + 0,0,0,3531,3533,3,318,159,0,3532,3531,1,0,0,0,3532,3533,1,0,0,0, + 3533,3535,1,0,0,0,3534,3536,3,238,119,0,3535,3534,1,0,0,0,3535,3536, + 1,0,0,0,3536,3538,1,0,0,0,3537,3539,3,302,151,0,3538,3537,1,0,0, + 0,3538,3539,1,0,0,0,3539,3564,1,0,0,0,3540,3544,3,278,139,0,3541, + 3543,3,282,141,0,3542,3541,1,0,0,0,3543,3546,1,0,0,0,3544,3542,1, + 0,0,0,3544,3545,1,0,0,0,3545,3552,1,0,0,0,3546,3544,1,0,0,0,3547, + 3549,5,181,0,0,3548,3550,7,45,0,0,3549,3548,1,0,0,0,3549,3550,1, + 0,0,0,3550,3551,1,0,0,0,3551,3553,3,278,139,0,3552,3547,1,0,0,0, + 3552,3553,1,0,0,0,3553,3555,1,0,0,0,3554,3556,3,258,129,0,3555,3554, + 1,0,0,0,3555,3556,1,0,0,0,3556,3558,1,0,0,0,3557,3559,3,318,159, + 0,3558,3557,1,0,0,0,3558,3559,1,0,0,0,3559,3561,1,0,0,0,3560,3562, + 3,238,119,0,3561,3560,1,0,0,0,3561,3562,1,0,0,0,3562,3564,1,0,0, + 0,3563,3504,1,0,0,0,3563,3540,1,0,0,0,3564,211,1,0,0,0,3565,3567, + 3,50,25,0,3566,3565,1,0,0,0,3566,3567,1,0,0,0,3567,3568,1,0,0,0, + 3568,3570,3,214,107,0,3569,3571,3,258,129,0,3570,3569,1,0,0,0,3570, + 3571,1,0,0,0,3571,3573,1,0,0,0,3572,3574,3,318,159,0,3573,3572,1, + 0,0,0,3573,3574,1,0,0,0,3574,3576,1,0,0,0,3575,3577,3,302,151,0, + 3576,3575,1,0,0,0,3576,3577,1,0,0,0,3577,213,1,0,0,0,3578,3579,6, + 107,-1,0,3579,3580,3,216,108,0,3580,3595,1,0,0,0,3581,3582,10,2, + 0,0,3582,3584,5,181,0,0,3583,3585,7,45,0,0,3584,3583,1,0,0,0,3584, + 3585,1,0,0,0,3585,3586,1,0,0,0,3586,3594,3,216,108,0,3587,3588,10, + 1,0,0,3588,3590,5,59,0,0,3589,3591,7,45,0,0,3590,3589,1,0,0,0,3590, + 3591,1,0,0,0,3591,3592,1,0,0,0,3592,3594,3,216,108,0,3593,3581,1, + 0,0,0,3593,3587,1,0,0,0,3594,3597,1,0,0,0,3595,3593,1,0,0,0,3595, + 3596,1,0,0,0,3596,215,1,0,0,0,3597,3595,1,0,0,0,3598,3599,6,108, + -1,0,3599,3600,3,218,109,0,3600,3609,1,0,0,0,3601,3602,10,1,0,0, + 3602,3604,5,828,0,0,3603,3605,7,45,0,0,3604,3603,1,0,0,0,3604,3605, + 1,0,0,0,3605,3606,1,0,0,0,3606,3608,3,218,109,0,3607,3601,1,0,0, + 0,3608,3611,1,0,0,0,3609,3607,1,0,0,0,3609,3610,1,0,0,0,3610,217, + 1,0,0,0,3611,3609,1,0,0,0,3612,3627,3,226,113,0,3613,3614,5,866, + 0,0,3614,3616,3,214,107,0,3615,3617,3,258,129,0,3616,3615,1,0,0, + 0,3616,3617,1,0,0,0,3617,3619,1,0,0,0,3618,3620,3,318,159,0,3619, + 3618,1,0,0,0,3619,3620,1,0,0,0,3620,3622,1,0,0,0,3621,3623,3,302, + 151,0,3622,3621,1,0,0,0,3622,3623,1,0,0,0,3623,3624,1,0,0,0,3624, + 3625,5,867,0,0,3625,3627,1,0,0,0,3626,3612,1,0,0,0,3626,3613,1,0, + 0,0,3627,219,1,0,0,0,3628,3631,3,254,127,0,3629,3631,3,256,128,0, + 3630,3628,1,0,0,0,3630,3629,1,0,0,0,3631,221,1,0,0,0,3632,3636,3, + 230,115,0,3633,3634,5,125,0,0,3634,3635,5,20,0,0,3635,3637,3,674, + 337,0,3636,3633,1,0,0,0,3636,3637,1,0,0,0,3637,3640,1,0,0,0,3638, + 3639,5,100,0,0,3639,3641,3,320,160,0,3640,3638,1,0,0,0,3640,3641, + 1,0,0,0,3641,223,1,0,0,0,3642,3647,3,226,113,0,3643,3644,7,50,0, + 0,3644,3646,3,226,113,0,3645,3643,1,0,0,0,3646,3649,1,0,0,0,3647, + 3645,1,0,0,0,3647,3648,1,0,0,0,3648,3651,1,0,0,0,3649,3647,1,0,0, + 0,3650,3652,3,258,129,0,3651,3650,1,0,0,0,3651,3652,1,0,0,0,3652, + 3654,1,0,0,0,3653,3655,3,318,159,0,3654,3653,1,0,0,0,3654,3655,1, + 0,0,0,3655,3657,1,0,0,0,3656,3658,3,302,151,0,3657,3656,1,0,0,0, + 3657,3658,1,0,0,0,3658,225,1,0,0,0,3659,3663,3,210,105,0,3660,3663, + 3,618,309,0,3661,3663,3,222,111,0,3662,3659,1,0,0,0,3662,3660,1, + 0,0,0,3662,3661,1,0,0,0,3663,227,1,0,0,0,3664,3670,3,210,105,0,3665, + 3666,5,173,0,0,3666,3670,3,652,326,0,3667,3670,3,742,371,0,3668, + 3670,3,230,115,0,3669,3664,1,0,0,0,3669,3665,1,0,0,0,3669,3667,1, + 0,0,0,3669,3668,1,0,0,0,3670,229,1,0,0,0,3671,3672,5,189,0,0,3672, + 3673,5,586,0,0,3673,3679,3,744,372,0,3674,3675,5,868,0,0,3675,3676, + 5,586,0,0,3676,3678,3,744,372,0,3677,3674,1,0,0,0,3678,3681,1,0, + 0,0,3679,3677,1,0,0,0,3679,3680,1,0,0,0,3680,231,1,0,0,0,3681,3679, + 1,0,0,0,3682,3683,5,155,0,0,3683,3688,3,234,117,0,3684,3685,5,868, + 0,0,3685,3687,3,234,117,0,3686,3684,1,0,0,0,3687,3690,1,0,0,0,3688, + 3686,1,0,0,0,3688,3689,1,0,0,0,3689,233,1,0,0,0,3690,3688,1,0,0, + 0,3691,3692,3,662,331,0,3692,3693,5,857,0,0,3693,3694,3,746,373, + 0,3694,235,1,0,0,0,3695,3698,3,706,353,0,3696,3698,5,892,0,0,3697, + 3695,1,0,0,0,3697,3696,1,0,0,0,3698,237,1,0,0,0,3699,3700,5,65,0, + 0,3700,3710,7,51,0,0,3701,3702,5,510,0,0,3702,3707,3,652,326,0,3703, + 3704,5,868,0,0,3704,3706,3,652,326,0,3705,3703,1,0,0,0,3706,3709, + 1,0,0,0,3707,3705,1,0,0,0,3707,3708,1,0,0,0,3708,3711,1,0,0,0,3709, + 3707,1,0,0,0,3710,3701,1,0,0,0,3710,3711,1,0,0,0,3711,3714,1,0,0, + 0,3712,3713,7,52,0,0,3713,3715,5,105,0,0,3714,3712,1,0,0,0,3714, + 3715,1,0,0,0,3715,3721,1,0,0,0,3716,3717,5,104,0,0,3717,3718,5,80, + 0,0,3718,3719,5,594,0,0,3719,3721,5,491,0,0,3720,3699,1,0,0,0,3720, + 3716,1,0,0,0,3721,239,1,0,0,0,3722,3724,5,44,0,0,3723,3725,5,107, + 0,0,3724,3723,1,0,0,0,3724,3725,1,0,0,0,3725,3727,1,0,0,0,3726,3728, + 5,549,0,0,3727,3726,1,0,0,0,3727,3728,1,0,0,0,3728,3730,1,0,0,0, + 3729,3731,5,79,0,0,3730,3729,1,0,0,0,3730,3731,1,0,0,0,3731,3732, + 1,0,0,0,3732,3733,5,68,0,0,3733,3738,3,652,326,0,3734,3736,5,13, + 0,0,3735,3734,1,0,0,0,3735,3736,1,0,0,0,3736,3737,1,0,0,0,3737,3739, + 3,706,353,0,3738,3735,1,0,0,0,3738,3739,1,0,0,0,3739,3745,1,0,0, + 0,3740,3741,5,130,0,0,3741,3742,5,866,0,0,3742,3743,3,670,335,0, + 3743,3744,5,867,0,0,3744,3746,1,0,0,0,3745,3740,1,0,0,0,3745,3746, + 1,0,0,0,3746,3749,1,0,0,0,3747,3748,5,192,0,0,3748,3750,3,804,402, + 0,3749,3747,1,0,0,0,3749,3750,1,0,0,0,3750,3752,1,0,0,0,3751,3753, + 3,258,129,0,3752,3751,1,0,0,0,3752,3753,1,0,0,0,3753,3756,1,0,0, + 0,3754,3755,5,100,0,0,3755,3757,3,320,160,0,3756,3754,1,0,0,0,3756, + 3757,1,0,0,0,3757,241,1,0,0,0,3758,3760,5,44,0,0,3759,3761,5,107, + 0,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3763,1,0,0,0,3762,3764, + 5,549,0,0,3763,3762,1,0,0,0,3763,3764,1,0,0,0,3764,3766,1,0,0,0, + 3765,3767,5,79,0,0,3766,3765,1,0,0,0,3766,3767,1,0,0,0,3767,3807, + 1,0,0,0,3768,3771,3,652,326,0,3769,3770,5,865,0,0,3770,3772,5,850, + 0,0,3771,3769,1,0,0,0,3771,3772,1,0,0,0,3772,3781,1,0,0,0,3773,3774, + 5,868,0,0,3774,3777,3,652,326,0,3775,3776,5,865,0,0,3776,3778,5, + 850,0,0,3777,3775,1,0,0,0,3777,3778,1,0,0,0,3778,3780,1,0,0,0,3779, + 3773,1,0,0,0,3780,3783,1,0,0,0,3781,3779,1,0,0,0,3781,3782,1,0,0, + 0,3782,3784,1,0,0,0,3783,3781,1,0,0,0,3784,3785,5,68,0,0,3785,3786, + 3,262,131,0,3786,3808,1,0,0,0,3787,3788,5,68,0,0,3788,3791,3,652, + 326,0,3789,3790,5,865,0,0,3790,3792,5,850,0,0,3791,3789,1,0,0,0, + 3791,3792,1,0,0,0,3792,3801,1,0,0,0,3793,3794,5,868,0,0,3794,3797, + 3,652,326,0,3795,3796,5,865,0,0,3796,3798,5,850,0,0,3797,3795,1, + 0,0,0,3797,3798,1,0,0,0,3798,3800,1,0,0,0,3799,3793,1,0,0,0,3800, + 3803,1,0,0,0,3801,3799,1,0,0,0,3801,3802,1,0,0,0,3802,3804,1,0,0, + 0,3803,3801,1,0,0,0,3804,3805,5,188,0,0,3805,3806,3,262,131,0,3806, + 3808,1,0,0,0,3807,3768,1,0,0,0,3807,3787,1,0,0,0,3808,3811,1,0,0, + 0,3809,3810,5,192,0,0,3810,3812,3,804,402,0,3811,3809,1,0,0,0,3811, + 3812,1,0,0,0,3812,243,1,0,0,0,3813,3814,5,417,0,0,3814,3815,3,652, + 326,0,3815,3820,5,516,0,0,3816,3818,5,13,0,0,3817,3816,1,0,0,0,3817, + 3818,1,0,0,0,3818,3819,1,0,0,0,3819,3821,3,706,353,0,3820,3817,1, + 0,0,0,3820,3821,1,0,0,0,3821,245,1,0,0,0,3822,3823,5,417,0,0,3823, + 3824,3,652,326,0,3824,3825,5,135,0,0,3825,3832,3,642,321,0,3826, + 3827,3,814,407,0,3827,3828,5,866,0,0,3828,3829,3,748,374,0,3829, + 3830,5,867,0,0,3830,3833,1,0,0,0,3831,3833,7,53,0,0,3832,3826,1, + 0,0,0,3832,3831,1,0,0,0,3833,3836,1,0,0,0,3834,3835,5,192,0,0,3835, + 3837,3,804,402,0,3836,3834,1,0,0,0,3836,3837,1,0,0,0,3837,3840,1, + 0,0,0,3838,3839,5,100,0,0,3839,3841,3,320,160,0,3840,3838,1,0,0, + 0,3840,3841,1,0,0,0,3841,247,1,0,0,0,3842,3843,5,417,0,0,3843,3844, + 3,652,326,0,3844,3845,5,135,0,0,3845,3848,7,54,0,0,3846,3847,5,192, + 0,0,3847,3849,3,804,402,0,3848,3846,1,0,0,0,3848,3849,1,0,0,0,3849, + 3852,1,0,0,0,3850,3851,5,100,0,0,3851,3853,3,320,160,0,3852,3850, + 1,0,0,0,3852,3853,1,0,0,0,3853,249,1,0,0,0,3854,3855,5,417,0,0,3855, + 3856,3,652,326,0,3856,3857,5,334,0,0,3857,251,1,0,0,0,3858,3859, + 5,425,0,0,3859,3860,5,173,0,0,3860,3861,5,68,0,0,3861,3866,3,716, + 358,0,3862,3863,5,868,0,0,3863,3865,3,716,358,0,3864,3862,1,0,0, + 0,3865,3868,1,0,0,0,3866,3864,1,0,0,0,3866,3867,1,0,0,0,3867,253, + 1,0,0,0,3868,3866,1,0,0,0,3869,3871,5,185,0,0,3870,3872,5,107,0, + 0,3871,3870,1,0,0,0,3871,3872,1,0,0,0,3872,3874,1,0,0,0,3873,3875, + 5,79,0,0,3874,3873,1,0,0,0,3874,3875,1,0,0,0,3875,3876,1,0,0,0,3876, + 3881,3,652,326,0,3877,3879,5,13,0,0,3878,3877,1,0,0,0,3878,3879, + 1,0,0,0,3879,3880,1,0,0,0,3880,3882,3,706,353,0,3881,3878,1,0,0, + 0,3881,3882,1,0,0,0,3882,3883,1,0,0,0,3883,3884,5,155,0,0,3884,3889, + 3,234,117,0,3885,3886,5,868,0,0,3886,3888,3,234,117,0,3887,3885, + 1,0,0,0,3888,3891,1,0,0,0,3889,3887,1,0,0,0,3889,3890,1,0,0,0,3890, + 3894,1,0,0,0,3891,3889,1,0,0,0,3892,3893,5,192,0,0,3893,3895,3,804, + 402,0,3894,3892,1,0,0,0,3894,3895,1,0,0,0,3895,3897,1,0,0,0,3896, + 3898,3,258,129,0,3897,3896,1,0,0,0,3897,3898,1,0,0,0,3898,3900,1, + 0,0,0,3899,3901,3,318,159,0,3900,3899,1,0,0,0,3900,3901,1,0,0,0, + 3901,255,1,0,0,0,3902,3904,5,185,0,0,3903,3905,5,107,0,0,3904,3903, + 1,0,0,0,3904,3905,1,0,0,0,3905,3907,1,0,0,0,3906,3908,5,79,0,0,3907, + 3906,1,0,0,0,3907,3908,1,0,0,0,3908,3909,1,0,0,0,3909,3910,3,262, + 131,0,3910,3911,5,155,0,0,3911,3916,3,234,117,0,3912,3913,5,868, + 0,0,3913,3915,3,234,117,0,3914,3912,1,0,0,0,3915,3918,1,0,0,0,3916, + 3914,1,0,0,0,3916,3917,1,0,0,0,3917,3921,1,0,0,0,3918,3916,1,0,0, + 0,3919,3920,5,192,0,0,3920,3922,3,804,402,0,3921,3919,1,0,0,0,3921, + 3922,1,0,0,0,3922,257,1,0,0,0,3923,3924,5,125,0,0,3924,3925,5,20, + 0,0,3925,3930,3,260,130,0,3926,3927,5,868,0,0,3927,3929,3,260,130, + 0,3928,3926,1,0,0,0,3929,3932,1,0,0,0,3930,3928,1,0,0,0,3930,3931, + 1,0,0,0,3931,259,1,0,0,0,3932,3930,1,0,0,0,3933,3935,3,804,402,0, + 3934,3936,7,55,0,0,3935,3934,1,0,0,0,3935,3936,1,0,0,0,3936,261, + 1,0,0,0,3937,3942,3,264,132,0,3938,3939,5,868,0,0,3939,3941,3,264, + 132,0,3940,3938,1,0,0,0,3941,3944,1,0,0,0,3942,3940,1,0,0,0,3942, + 3943,1,0,0,0,3943,263,1,0,0,0,3944,3942,1,0,0,0,3945,3949,3,266, + 133,0,3946,3948,3,274,137,0,3947,3946,1,0,0,0,3948,3951,1,0,0,0, + 3949,3947,1,0,0,0,3949,3950,1,0,0,0,3950,3964,1,0,0,0,3951,3949, + 1,0,0,0,3952,3953,5,866,0,0,3953,3957,3,266,133,0,3954,3956,3,274, + 137,0,3955,3954,1,0,0,0,3956,3959,1,0,0,0,3957,3955,1,0,0,0,3957, + 3958,1,0,0,0,3958,3960,1,0,0,0,3959,3957,1,0,0,0,3960,3961,5,867, + 0,0,3961,3964,1,0,0,0,3962,3964,3,286,143,0,3963,3945,1,0,0,0,3963, + 3952,1,0,0,0,3963,3962,1,0,0,0,3964,265,1,0,0,0,3965,3971,3,652, + 326,0,3966,3967,5,130,0,0,3967,3968,5,866,0,0,3968,3969,3,670,335, + 0,3969,3970,5,867,0,0,3970,3972,1,0,0,0,3971,3966,1,0,0,0,3971,3972, + 1,0,0,0,3972,3977,1,0,0,0,3973,3975,5,13,0,0,3974,3973,1,0,0,0,3974, + 3975,1,0,0,0,3975,3976,1,0,0,0,3976,3978,3,706,353,0,3977,3974,1, + 0,0,0,3977,3978,1,0,0,0,3978,3987,1,0,0,0,3979,3984,3,270,135,0, + 3980,3981,5,868,0,0,3981,3983,3,270,135,0,3982,3980,1,0,0,0,3983, + 3986,1,0,0,0,3984,3982,1,0,0,0,3984,3985,1,0,0,0,3985,3988,1,0,0, + 0,3986,3984,1,0,0,0,3987,3979,1,0,0,0,3987,3988,1,0,0,0,3988,4011, + 1,0,0,0,3989,3991,5,95,0,0,3990,3989,1,0,0,0,3990,3991,1,0,0,0,3991, + 3997,1,0,0,0,3992,3998,3,210,105,0,3993,3994,5,866,0,0,3994,3995, + 3,210,105,0,3995,3996,5,867,0,0,3996,3998,1,0,0,0,3997,3992,1,0, + 0,0,3997,3993,1,0,0,0,3998,4000,1,0,0,0,3999,4001,5,13,0,0,4000, + 3999,1,0,0,0,4000,4001,1,0,0,0,4001,4002,1,0,0,0,4002,4004,3,706, + 353,0,4003,4005,3,268,134,0,4004,4003,1,0,0,0,4004,4005,1,0,0,0, + 4005,4011,1,0,0,0,4006,4007,5,866,0,0,4007,4008,3,262,131,0,4008, + 4009,5,867,0,0,4009,4011,1,0,0,0,4010,3965,1,0,0,0,4010,3990,1,0, + 0,0,4010,4006,1,0,0,0,4011,267,1,0,0,0,4012,4013,5,866,0,0,4013, + 4014,3,660,330,0,4014,4015,5,867,0,0,4015,269,1,0,0,0,4016,4017, + 7,56,0,0,4017,4020,7,19,0,0,4018,4019,5,65,0,0,4019,4021,3,272,136, + 0,4020,4018,1,0,0,0,4020,4021,1,0,0,0,4021,4022,1,0,0,0,4022,4024, + 5,866,0,0,4023,4025,3,640,320,0,4024,4023,1,0,0,0,4024,4025,1,0, + 0,0,4025,4026,1,0,0,0,4026,4027,5,867,0,0,4027,271,1,0,0,0,4028, + 4034,5,91,0,0,4029,4030,5,125,0,0,4030,4034,5,20,0,0,4031,4032,5, + 74,0,0,4032,4034,5,20,0,0,4033,4028,1,0,0,0,4033,4029,1,0,0,0,4033, + 4031,1,0,0,0,4034,273,1,0,0,0,4035,4037,7,57,0,0,4036,4035,1,0,0, + 0,4036,4037,1,0,0,0,4037,4038,1,0,0,0,4038,4040,5,91,0,0,4039,4041, + 5,95,0,0,4040,4039,1,0,0,0,4040,4041,1,0,0,0,4041,4042,1,0,0,0,4042, + 4046,3,266,133,0,4043,4045,3,276,138,0,4044,4043,1,0,0,0,4045,4048, + 1,0,0,0,4046,4044,1,0,0,0,4046,4047,1,0,0,0,4047,4085,1,0,0,0,4048, + 4046,1,0,0,0,4049,4050,5,172,0,0,4050,4054,3,266,133,0,4051,4053, + 3,276,138,0,4052,4051,1,0,0,0,4053,4056,1,0,0,0,4054,4052,1,0,0, + 0,4054,4055,1,0,0,0,4055,4085,1,0,0,0,4056,4054,1,0,0,0,4057,4059, + 7,58,0,0,4058,4060,5,127,0,0,4059,4058,1,0,0,0,4059,4060,1,0,0,0, + 4060,4061,1,0,0,0,4061,4063,5,91,0,0,4062,4064,5,95,0,0,4063,4062, + 1,0,0,0,4063,4064,1,0,0,0,4064,4065,1,0,0,0,4065,4069,3,266,133, + 0,4066,4068,3,276,138,0,4067,4066,1,0,0,0,4068,4071,1,0,0,0,4069, + 4067,1,0,0,0,4069,4070,1,0,0,0,4070,4085,1,0,0,0,4071,4069,1,0,0, + 0,4072,4080,5,113,0,0,4073,4076,5,84,0,0,4074,4076,7,58,0,0,4075, + 4073,1,0,0,0,4075,4074,1,0,0,0,4076,4078,1,0,0,0,4077,4079,5,127, + 0,0,4078,4077,1,0,0,0,4078,4079,1,0,0,0,4079,4081,1,0,0,0,4080,4075, + 1,0,0,0,4080,4081,1,0,0,0,4081,4082,1,0,0,0,4082,4083,5,91,0,0,4083, + 4085,3,266,133,0,4084,4036,1,0,0,0,4084,4049,1,0,0,0,4084,4057,1, + 0,0,0,4084,4072,1,0,0,0,4085,275,1,0,0,0,4086,4087,5,119,0,0,4087, + 4094,3,804,402,0,4088,4089,5,188,0,0,4089,4090,5,866,0,0,4090,4091, + 3,660,330,0,4091,4092,5,867,0,0,4092,4094,1,0,0,0,4093,4086,1,0, + 0,0,4093,4088,1,0,0,0,4094,277,1,0,0,0,4095,4096,5,866,0,0,4096, + 4097,3,280,140,0,4097,4098,5,867,0,0,4098,4104,1,0,0,0,4099,4100, + 5,866,0,0,4100,4101,3,278,139,0,4101,4102,5,867,0,0,4102,4104,1, + 0,0,0,4103,4095,1,0,0,0,4103,4099,1,0,0,0,4104,279,1,0,0,0,4105, + 4109,5,154,0,0,4106,4108,3,296,148,0,4107,4106,1,0,0,0,4108,4111, + 1,0,0,0,4109,4107,1,0,0,0,4109,4110,1,0,0,0,4110,4112,1,0,0,0,4111, + 4109,1,0,0,0,4112,4114,3,298,149,0,4113,4115,3,302,151,0,4114,4113, + 1,0,0,0,4114,4115,1,0,0,0,4115,4116,1,0,0,0,4116,4118,3,308,154, + 0,4117,4119,3,310,155,0,4118,4117,1,0,0,0,4118,4119,1,0,0,0,4119, + 4121,1,0,0,0,4120,4122,3,312,156,0,4121,4120,1,0,0,0,4121,4122,1, + 0,0,0,4122,4124,1,0,0,0,4123,4125,3,314,157,0,4124,4123,1,0,0,0, + 4124,4125,1,0,0,0,4125,4127,1,0,0,0,4126,4128,3,258,129,0,4127,4126, + 1,0,0,0,4127,4128,1,0,0,0,4128,4130,1,0,0,0,4129,4131,3,318,159, + 0,4130,4129,1,0,0,0,4130,4131,1,0,0,0,4131,4133,1,0,0,0,4132,4134, + 3,302,151,0,4133,4132,1,0,0,0,4133,4134,1,0,0,0,4134,4136,1,0,0, + 0,4135,4137,3,282,141,0,4136,4135,1,0,0,0,4136,4137,1,0,0,0,4137, + 281,1,0,0,0,4138,4140,5,181,0,0,4139,4141,7,45,0,0,4140,4139,1,0, + 0,0,4140,4141,1,0,0,0,4141,4144,1,0,0,0,4142,4145,3,280,140,0,4143, + 4145,3,278,139,0,4144,4142,1,0,0,0,4144,4143,1,0,0,0,4145,283,1, + 0,0,0,4146,4161,5,95,0,0,4147,4162,3,280,140,0,4148,4162,3,278,139, + 0,4149,4152,5,866,0,0,4150,4153,3,280,140,0,4151,4153,3,278,139, + 0,4152,4150,1,0,0,0,4152,4151,1,0,0,0,4153,4154,1,0,0,0,4154,4159, + 5,867,0,0,4155,4157,5,13,0,0,4156,4155,1,0,0,0,4156,4157,1,0,0,0, + 4157,4158,1,0,0,0,4158,4160,3,706,353,0,4159,4156,1,0,0,0,4159,4160, + 1,0,0,0,4160,4162,1,0,0,0,4161,4147,1,0,0,0,4161,4148,1,0,0,0,4161, + 4149,1,0,0,0,4162,285,1,0,0,0,4163,4164,5,253,0,0,4164,4165,5,866, + 0,0,4165,4166,5,882,0,0,4166,4167,5,868,0,0,4167,4168,5,882,0,0, + 4168,4169,5,337,0,0,4169,4170,5,866,0,0,4170,4171,3,288,144,0,4171, + 4172,5,867,0,0,4172,4177,5,867,0,0,4173,4175,5,13,0,0,4174,4173, + 1,0,0,0,4174,4175,1,0,0,0,4175,4176,1,0,0,0,4176,4178,3,706,353, + 0,4177,4174,1,0,0,0,4177,4178,1,0,0,0,4178,287,1,0,0,0,4179,4184, + 3,290,145,0,4180,4181,5,868,0,0,4181,4183,3,290,145,0,4182,4180, + 1,0,0,0,4183,4186,1,0,0,0,4184,4182,1,0,0,0,4184,4185,1,0,0,0,4185, + 289,1,0,0,0,4186,4184,1,0,0,0,4187,4204,3,662,331,0,4188,4189,5, + 65,0,0,4189,4205,5,256,0,0,4190,4202,3,726,363,0,4191,4192,5,257, + 0,0,4192,4194,5,882,0,0,4193,4195,3,292,146,0,4194,4193,1,0,0,0, + 4194,4195,1,0,0,0,4195,4197,1,0,0,0,4196,4198,3,294,147,0,4197,4196, + 1,0,0,0,4197,4198,1,0,0,0,4198,4203,1,0,0,0,4199,4200,5,60,0,0,4200, + 4201,5,257,0,0,4201,4203,5,882,0,0,4202,4191,1,0,0,0,4202,4199,1, + 0,0,0,4203,4205,1,0,0,0,4204,4188,1,0,0,0,4204,4190,1,0,0,0,4205, + 4217,1,0,0,0,4206,4208,5,255,0,0,4207,4209,5,257,0,0,4208,4207,1, + 0,0,0,4208,4209,1,0,0,0,4209,4210,1,0,0,0,4210,4211,5,882,0,0,4211, + 4212,5,337,0,0,4212,4213,5,866,0,0,4213,4214,3,288,144,0,4214,4215, + 5,867,0,0,4215,4217,1,0,0,0,4216,4187,1,0,0,0,4216,4206,1,0,0,0, + 4217,291,1,0,0,0,4218,4223,5,116,0,0,4219,4223,5,382,0,0,4220,4221, + 5,42,0,0,4221,4223,3,754,377,0,4222,4218,1,0,0,0,4222,4219,1,0,0, + 0,4222,4220,1,0,0,0,4223,4224,1,0,0,0,4224,4225,5,119,0,0,4225,4226, + 5,55,0,0,4226,293,1,0,0,0,4227,4232,5,116,0,0,4228,4232,5,382,0, + 0,4229,4230,5,42,0,0,4230,4232,3,754,377,0,4231,4227,1,0,0,0,4231, + 4228,1,0,0,0,4231,4229,1,0,0,0,4232,4233,1,0,0,0,4233,4234,5,119, + 0,0,4234,4235,5,382,0,0,4235,295,1,0,0,0,4236,4245,7,59,0,0,4237, + 4245,5,76,0,0,4238,4245,5,172,0,0,4239,4245,5,168,0,0,4240,4245, + 5,166,0,0,4241,4245,5,636,0,0,4242,4245,7,60,0,0,4243,4245,5,167, + 0,0,4244,4236,1,0,0,0,4244,4237,1,0,0,0,4244,4238,1,0,0,0,4244,4239, + 1,0,0,0,4244,4240,1,0,0,0,4244,4241,1,0,0,0,4244,4242,1,0,0,0,4244, + 4243,1,0,0,0,4245,297,1,0,0,0,4246,4249,5,850,0,0,4247,4249,3,300, + 150,0,4248,4246,1,0,0,0,4248,4247,1,0,0,0,4249,4254,1,0,0,0,4250, + 4251,5,868,0,0,4251,4253,3,300,150,0,4252,4250,1,0,0,0,4253,4256, + 1,0,0,0,4254,4252,1,0,0,0,4254,4255,1,0,0,0,4255,299,1,0,0,0,4256, + 4254,1,0,0,0,4257,4258,5,892,0,0,4258,4260,5,841,0,0,4259,4257,1, + 0,0,0,4259,4260,1,0,0,0,4260,4261,1,0,0,0,4261,4266,3,804,402,0, + 4262,4264,5,13,0,0,4263,4262,1,0,0,0,4263,4264,1,0,0,0,4264,4265, + 1,0,0,0,4265,4267,3,706,353,0,4266,4263,1,0,0,0,4266,4267,1,0,0, + 0,4267,4287,1,0,0,0,4268,4273,3,764,382,0,4269,4271,5,13,0,0,4270, + 4269,1,0,0,0,4270,4271,1,0,0,0,4271,4272,1,0,0,0,4272,4274,3,706, + 353,0,4273,4270,1,0,0,0,4273,4274,1,0,0,0,4274,4287,1,0,0,0,4275, + 4276,3,702,351,0,4276,4277,5,865,0,0,4277,4278,5,850,0,0,4278,4287, + 1,0,0,0,4279,4284,3,662,331,0,4280,4282,5,13,0,0,4281,4280,1,0,0, + 0,4281,4282,1,0,0,0,4282,4283,1,0,0,0,4283,4285,3,706,353,0,4284, + 4281,1,0,0,0,4284,4285,1,0,0,0,4285,4287,1,0,0,0,4286,4259,1,0,0, + 0,4286,4268,1,0,0,0,4286,4275,1,0,0,0,4286,4279,1,0,0,0,4287,301, + 1,0,0,0,4288,4289,5,88,0,0,4289,4294,3,236,118,0,4290,4291,5,868, + 0,0,4291,4293,3,236,118,0,4292,4290,1,0,0,0,4293,4296,1,0,0,0,4294, + 4292,1,0,0,0,4294,4295,1,0,0,0,4295,4325,1,0,0,0,4296,4294,1,0,0, + 0,4297,4298,5,88,0,0,4298,4299,5,372,0,0,4299,4325,5,882,0,0,4300, + 4301,5,88,0,0,4301,4302,5,128,0,0,4302,4306,5,882,0,0,4303,4304, + 5,26,0,0,4304,4305,5,155,0,0,4305,4307,3,688,344,0,4306,4303,1,0, + 0,0,4306,4307,1,0,0,0,4307,4314,1,0,0,0,4308,4310,7,47,0,0,4309, + 4311,3,304,152,0,4310,4309,1,0,0,0,4311,4312,1,0,0,0,4312,4310,1, + 0,0,0,4312,4313,1,0,0,0,4313,4315,1,0,0,0,4314,4308,1,0,0,0,4314, + 4315,1,0,0,0,4315,4322,1,0,0,0,4316,4318,5,102,0,0,4317,4319,3,306, + 153,0,4318,4317,1,0,0,0,4319,4320,1,0,0,0,4320,4318,1,0,0,0,4320, + 4321,1,0,0,0,4321,4323,1,0,0,0,4322,4316,1,0,0,0,4322,4323,1,0,0, + 0,4323,4325,1,0,0,0,4324,4288,1,0,0,0,4324,4297,1,0,0,0,4324,4300, + 1,0,0,0,4325,303,1,0,0,0,4326,4327,5,174,0,0,4327,4328,5,20,0,0, + 4328,4339,5,882,0,0,4329,4331,5,123,0,0,4330,4329,1,0,0,0,4330,4331, + 1,0,0,0,4331,4332,1,0,0,0,4332,4333,5,56,0,0,4333,4334,5,20,0,0, + 4334,4339,5,882,0,0,4335,4336,5,58,0,0,4336,4337,5,20,0,0,4337,4339, + 5,882,0,0,4338,4326,1,0,0,0,4338,4330,1,0,0,0,4338,4335,1,0,0,0, + 4339,305,1,0,0,0,4340,4341,5,171,0,0,4341,4342,5,20,0,0,4342,4347, + 5,882,0,0,4343,4344,5,174,0,0,4344,4345,5,20,0,0,4345,4347,5,882, + 0,0,4346,4340,1,0,0,0,4346,4343,1,0,0,0,4347,307,1,0,0,0,4348,4349, + 5,68,0,0,4349,4351,3,262,131,0,4350,4348,1,0,0,0,4350,4351,1,0,0, + 0,4351,4354,1,0,0,0,4352,4353,5,192,0,0,4353,4355,3,804,402,0,4354, + 4352,1,0,0,0,4354,4355,1,0,0,0,4355,309,1,0,0,0,4356,4357,5,74,0, + 0,4357,4358,5,20,0,0,4358,4363,3,316,158,0,4359,4360,5,868,0,0,4360, + 4362,3,316,158,0,4361,4359,1,0,0,0,4362,4365,1,0,0,0,4363,4361,1, + 0,0,0,4363,4364,1,0,0,0,4364,4368,1,0,0,0,4365,4363,1,0,0,0,4366, + 4367,5,194,0,0,4367,4369,5,584,0,0,4368,4366,1,0,0,0,4368,4369,1, + 0,0,0,4369,311,1,0,0,0,4370,4371,5,75,0,0,4371,4372,3,804,402,0, + 4372,313,1,0,0,0,4373,4374,5,689,0,0,4374,4375,3,782,391,0,4375, + 4376,5,13,0,0,4376,4377,5,866,0,0,4377,4378,3,780,390,0,4378,4388, + 5,867,0,0,4379,4380,5,868,0,0,4380,4381,3,782,391,0,4381,4382,5, + 13,0,0,4382,4383,5,866,0,0,4383,4384,3,780,390,0,4384,4385,5,867, + 0,0,4385,4387,1,0,0,0,4386,4379,1,0,0,0,4387,4390,1,0,0,0,4388,4386, + 1,0,0,0,4388,4389,1,0,0,0,4389,315,1,0,0,0,4390,4388,1,0,0,0,4391, + 4393,3,804,402,0,4392,4394,7,55,0,0,4393,4392,1,0,0,0,4393,4394, + 1,0,0,0,4394,317,1,0,0,0,4395,4406,5,100,0,0,4396,4397,3,320,160, + 0,4397,4398,5,868,0,0,4398,4400,1,0,0,0,4399,4396,1,0,0,0,4399,4400, + 1,0,0,0,4400,4401,1,0,0,0,4401,4407,3,320,160,0,4402,4403,3,320, + 160,0,4403,4404,5,509,0,0,4404,4405,3,320,160,0,4405,4407,1,0,0, + 0,4406,4399,1,0,0,0,4406,4402,1,0,0,0,4407,319,1,0,0,0,4408,4412, + 3,712,356,0,4409,4412,3,686,343,0,4410,4412,3,708,354,0,4411,4408, + 1,0,0,0,4411,4409,1,0,0,0,4411,4410,1,0,0,0,4412,321,1,0,0,0,4413, + 4414,5,640,0,0,4414,4423,5,664,0,0,4415,4420,3,344,172,0,4416,4417, + 5,868,0,0,4417,4419,3,344,172,0,4418,4416,1,0,0,0,4419,4422,1,0, + 0,0,4420,4418,1,0,0,0,4420,4421,1,0,0,0,4421,4424,1,0,0,0,4422,4420, + 1,0,0,0,4423,4415,1,0,0,0,4423,4424,1,0,0,0,4424,323,1,0,0,0,4425, + 4427,5,317,0,0,4426,4428,5,691,0,0,4427,4426,1,0,0,0,4427,4428,1, + 0,0,0,4428,325,1,0,0,0,4429,4431,5,341,0,0,4430,4432,5,691,0,0,4431, + 4430,1,0,0,0,4431,4432,1,0,0,0,4432,4438,1,0,0,0,4433,4435,5,11, + 0,0,4434,4436,5,502,0,0,4435,4434,1,0,0,0,4435,4436,1,0,0,0,4436, + 4437,1,0,0,0,4437,4439,5,326,0,0,4438,4433,1,0,0,0,4438,4439,1,0, + 0,0,4439,4444,1,0,0,0,4440,4442,5,502,0,0,4441,4440,1,0,0,0,4441, + 4442,1,0,0,0,4442,4443,1,0,0,0,4443,4445,5,140,0,0,4444,4441,1,0, + 0,0,4444,4445,1,0,0,0,4445,327,1,0,0,0,4446,4448,5,583,0,0,4447, + 4449,5,691,0,0,4448,4447,1,0,0,0,4448,4449,1,0,0,0,4449,4455,1,0, + 0,0,4450,4452,5,11,0,0,4451,4453,5,502,0,0,4452,4451,1,0,0,0,4452, + 4453,1,0,0,0,4453,4454,1,0,0,0,4454,4456,5,326,0,0,4455,4450,1,0, + 0,0,4455,4456,1,0,0,0,4456,4461,1,0,0,0,4457,4459,5,502,0,0,4458, + 4457,1,0,0,0,4458,4459,1,0,0,0,4459,4460,1,0,0,0,4460,4462,5,140, + 0,0,4461,4458,1,0,0,0,4461,4462,1,0,0,0,4462,329,1,0,0,0,4463,4464, + 5,589,0,0,4464,4465,3,706,353,0,4465,331,1,0,0,0,4466,4468,5,583, + 0,0,4467,4469,5,691,0,0,4468,4467,1,0,0,0,4468,4469,1,0,0,0,4469, + 4470,1,0,0,0,4470,4472,5,176,0,0,4471,4473,5,589,0,0,4472,4471,1, + 0,0,0,4472,4473,1,0,0,0,4473,4474,1,0,0,0,4474,4475,3,706,353,0, + 4475,333,1,0,0,0,4476,4477,5,140,0,0,4477,4478,5,589,0,0,4478,4479, + 3,706,353,0,4479,335,1,0,0,0,4480,4481,5,104,0,0,4481,4482,7,61, + 0,0,4482,4487,3,346,173,0,4483,4484,5,868,0,0,4484,4486,3,346,173, + 0,4485,4483,1,0,0,0,4486,4489,1,0,0,0,4487,4485,1,0,0,0,4487,4488, + 1,0,0,0,4488,337,1,0,0,0,4489,4487,1,0,0,0,4490,4491,5,183,0,0,4491, + 4492,5,752,0,0,4492,339,1,0,0,0,4493,4494,5,155,0,0,4494,4495,5, + 313,0,0,4495,4496,5,857,0,0,4496,4497,7,26,0,0,4497,341,1,0,0,0, + 4498,4500,5,155,0,0,4499,4501,7,62,0,0,4500,4499,1,0,0,0,4500,4501, + 1,0,0,0,4501,4502,1,0,0,0,4502,4503,5,664,0,0,4503,4508,3,350,175, + 0,4504,4505,5,868,0,0,4505,4507,3,350,175,0,4506,4504,1,0,0,0,4507, + 4510,1,0,0,0,4508,4506,1,0,0,0,4508,4509,1,0,0,0,4509,343,1,0,0, + 0,4510,4508,1,0,0,0,4511,4512,5,194,0,0,4512,4513,5,350,0,0,4513, + 4519,5,600,0,0,4514,4515,5,135,0,0,4515,4519,5,195,0,0,4516,4517, + 5,135,0,0,4517,4519,5,515,0,0,4518,4511,1,0,0,0,4518,4514,1,0,0, + 0,4518,4516,1,0,0,0,4519,345,1,0,0,0,4520,4525,3,652,326,0,4521, + 4523,5,13,0,0,4522,4521,1,0,0,0,4522,4523,1,0,0,0,4523,4524,1,0, + 0,0,4524,4526,3,706,353,0,4525,4522,1,0,0,0,4525,4526,1,0,0,0,4526, + 4527,1,0,0,0,4527,4528,3,348,174,0,4528,347,1,0,0,0,4529,4531,5, + 135,0,0,4530,4532,5,450,0,0,4531,4530,1,0,0,0,4531,4532,1,0,0,0, + 4532,4538,1,0,0,0,4533,4535,5,107,0,0,4534,4533,1,0,0,0,4534,4535, + 1,0,0,0,4535,4536,1,0,0,0,4536,4538,5,195,0,0,4537,4529,1,0,0,0, + 4537,4534,1,0,0,0,4538,349,1,0,0,0,4539,4540,5,440,0,0,4540,4541, + 5,448,0,0,4541,4547,3,352,176,0,4542,4543,5,135,0,0,4543,4547,5, + 195,0,0,4544,4545,5,135,0,0,4545,4547,5,515,0,0,4546,4539,1,0,0, + 0,4546,4542,1,0,0,0,4546,4544,1,0,0,0,4547,351,1,0,0,0,4548,4549, + 5,809,0,0,4549,4556,5,135,0,0,4550,4551,5,135,0,0,4551,4556,5,810, + 0,0,4552,4553,5,135,0,0,4553,4556,5,811,0,0,4554,4556,5,812,0,0, + 4555,4548,1,0,0,0,4555,4550,1,0,0,0,4555,4552,1,0,0,0,4555,4554, + 1,0,0,0,4556,353,1,0,0,0,4557,4558,5,25,0,0,4558,4559,5,453,0,0, + 4559,4560,5,176,0,0,4560,4565,3,370,185,0,4561,4562,5,868,0,0,4562, + 4564,3,370,185,0,4563,4561,1,0,0,0,4564,4567,1,0,0,0,4565,4563,1, + 0,0,0,4565,4566,1,0,0,0,4566,4569,1,0,0,0,4567,4565,1,0,0,0,4568, + 4570,3,390,195,0,4569,4568,1,0,0,0,4569,4570,1,0,0,0,4570,355,1, + 0,0,0,4571,4572,5,25,0,0,4572,4573,5,572,0,0,4573,4574,5,400,0,0, + 4574,4579,3,392,196,0,4575,4576,5,868,0,0,4576,4578,3,392,196,0, + 4577,4575,1,0,0,0,4578,4581,1,0,0,0,4579,4577,1,0,0,0,4579,4580, + 1,0,0,0,4580,4583,1,0,0,0,4581,4579,1,0,0,0,4582,4584,3,390,195, + 0,4583,4582,1,0,0,0,4583,4584,1,0,0,0,4584,357,1,0,0,0,4585,4586, + 5,25,0,0,4586,4587,5,572,0,0,4587,4588,5,605,0,0,4588,4589,5,176, + 0,0,4589,4594,3,380,190,0,4590,4591,5,868,0,0,4591,4593,3,380,190, + 0,4592,4590,1,0,0,0,4593,4596,1,0,0,0,4594,4592,1,0,0,0,4594,4595, + 1,0,0,0,4595,4598,1,0,0,0,4596,4594,1,0,0,0,4597,4599,3,390,195, + 0,4598,4597,1,0,0,0,4598,4599,1,0,0,0,4599,359,1,0,0,0,4600,4601, + 5,133,0,0,4601,4602,7,63,0,0,4602,4607,5,452,0,0,4603,4604,5,176, + 0,0,4604,4608,5,882,0,0,4605,4606,5,16,0,0,4606,4608,5,882,0,0,4607, + 4603,1,0,0,0,4607,4605,1,0,0,0,4608,361,1,0,0,0,4609,4610,5,640, + 0,0,4610,4619,7,64,0,0,4611,4616,3,396,198,0,4612,4613,5,868,0,0, + 4613,4615,3,396,198,0,4614,4612,1,0,0,0,4615,4618,1,0,0,0,4616,4614, + 1,0,0,0,4616,4617,1,0,0,0,4617,4620,1,0,0,0,4618,4616,1,0,0,0,4619, + 4611,1,0,0,0,4619,4620,1,0,0,0,4620,4623,1,0,0,0,4621,4622,5,676, + 0,0,4622,4624,3,398,199,0,4623,4621,1,0,0,0,4623,4624,1,0,0,0,4624, + 4628,1,0,0,0,4625,4627,3,400,200,0,4626,4625,1,0,0,0,4627,4630,1, + 0,0,0,4628,4626,1,0,0,0,4628,4629,1,0,0,0,4629,4632,1,0,0,0,4630, + 4628,1,0,0,0,4631,4633,3,390,195,0,4632,4631,1,0,0,0,4632,4633,1, + 0,0,0,4633,363,1,0,0,0,4634,4635,5,646,0,0,4635,4644,7,64,0,0,4636, + 4641,3,396,198,0,4637,4638,5,868,0,0,4638,4640,3,396,198,0,4639, + 4637,1,0,0,0,4640,4643,1,0,0,0,4641,4639,1,0,0,0,4641,4642,1,0,0, + 0,4642,4645,1,0,0,0,4643,4641,1,0,0,0,4644,4636,1,0,0,0,4644,4645, + 1,0,0,0,4645,4647,1,0,0,0,4646,4648,3,390,195,0,4647,4646,1,0,0, + 0,4647,4648,1,0,0,0,4648,365,1,0,0,0,4649,4650,5,640,0,0,4650,4654, + 5,415,0,0,4651,4652,5,678,0,0,4652,4653,5,857,0,0,4653,4655,5,882, + 0,0,4654,4651,1,0,0,0,4654,4655,1,0,0,0,4655,4660,1,0,0,0,4656,4657, + 5,868,0,0,4657,4658,5,529,0,0,4658,4659,5,857,0,0,4659,4661,5,882, + 0,0,4660,4656,1,0,0,0,4660,4661,1,0,0,0,4661,4666,1,0,0,0,4662,4663, + 5,868,0,0,4663,4664,5,363,0,0,4664,4665,5,857,0,0,4665,4667,5,882, + 0,0,4666,4662,1,0,0,0,4666,4667,1,0,0,0,4667,367,1,0,0,0,4668,4669, + 5,646,0,0,4669,4670,5,415,0,0,4670,369,1,0,0,0,4671,4672,3,372,186, + 0,4672,4673,5,857,0,0,4673,4674,5,882,0,0,4674,4699,1,0,0,0,4675, + 4676,3,374,187,0,4676,4677,5,857,0,0,4677,4678,3,712,356,0,4678, + 4699,1,0,0,0,4679,4680,3,376,188,0,4680,4681,5,857,0,0,4681,4682, + 7,26,0,0,4682,4699,1,0,0,0,4683,4699,3,378,189,0,4684,4685,5,424, + 0,0,4685,4686,5,857,0,0,4686,4695,5,866,0,0,4687,4692,3,706,353, + 0,4688,4689,5,868,0,0,4689,4691,3,706,353,0,4690,4688,1,0,0,0,4691, + 4694,1,0,0,0,4692,4690,1,0,0,0,4692,4693,1,0,0,0,4693,4696,1,0,0, + 0,4694,4692,1,0,0,0,4695,4687,1,0,0,0,4695,4696,1,0,0,0,4696,4697, + 1,0,0,0,4697,4699,5,867,0,0,4698,4671,1,0,0,0,4698,4675,1,0,0,0, + 4698,4679,1,0,0,0,4698,4683,1,0,0,0,4698,4684,1,0,0,0,4699,371,1, + 0,0,0,4700,4701,7,65,0,0,4701,373,1,0,0,0,4702,4703,7,66,0,0,4703, + 375,1,0,0,0,4704,4705,7,67,0,0,4705,377,1,0,0,0,4706,4707,5,543, + 0,0,4707,4708,5,857,0,0,4708,4720,7,68,0,0,4709,4710,5,574,0,0,4710, + 4711,5,857,0,0,4711,4720,7,69,0,0,4712,4713,5,310,0,0,4713,4717, + 5,857,0,0,4714,4718,5,507,0,0,4715,4718,5,450,0,0,4716,4718,3,402, + 201,0,4717,4714,1,0,0,0,4717,4715,1,0,0,0,4717,4716,1,0,0,0,4718, + 4720,1,0,0,0,4719,4706,1,0,0,0,4719,4709,1,0,0,0,4719,4712,1,0,0, + 0,4720,379,1,0,0,0,4721,4722,3,382,191,0,4722,4723,5,857,0,0,4723, + 4724,5,882,0,0,4724,4749,1,0,0,0,4725,4726,3,384,192,0,4726,4727, + 5,857,0,0,4727,4728,3,712,356,0,4728,4749,1,0,0,0,4729,4730,3,386, + 193,0,4730,4731,5,857,0,0,4731,4732,7,26,0,0,4732,4749,1,0,0,0,4733, + 4749,3,388,194,0,4734,4735,5,424,0,0,4735,4736,5,857,0,0,4736,4745, + 5,866,0,0,4737,4742,3,706,353,0,4738,4739,5,868,0,0,4739,4741,3, + 706,353,0,4740,4738,1,0,0,0,4741,4744,1,0,0,0,4742,4740,1,0,0,0, + 4742,4743,1,0,0,0,4743,4746,1,0,0,0,4744,4742,1,0,0,0,4745,4737, + 1,0,0,0,4745,4746,1,0,0,0,4746,4747,1,0,0,0,4747,4749,5,867,0,0, + 4748,4721,1,0,0,0,4748,4725,1,0,0,0,4748,4729,1,0,0,0,4748,4733, + 1,0,0,0,4748,4734,1,0,0,0,4749,381,1,0,0,0,4750,4751,7,70,0,0,4751, + 383,1,0,0,0,4752,4753,7,71,0,0,4753,385,1,0,0,0,4754,4755,7,72,0, + 0,4755,387,1,0,0,0,4756,4757,5,543,0,0,4757,4758,5,857,0,0,4758, + 4770,7,68,0,0,4759,4760,5,574,0,0,4760,4761,5,857,0,0,4761,4770, + 7,73,0,0,4762,4763,5,310,0,0,4763,4767,5,857,0,0,4764,4768,5,507, + 0,0,4765,4768,5,450,0,0,4766,4768,3,402,201,0,4767,4764,1,0,0,0, + 4767,4765,1,0,0,0,4767,4766,1,0,0,0,4768,4770,1,0,0,0,4769,4756, + 1,0,0,0,4769,4759,1,0,0,0,4769,4762,1,0,0,0,4770,389,1,0,0,0,4771, + 4772,5,65,0,0,4772,4773,5,328,0,0,4773,4774,5,882,0,0,4774,391,1, + 0,0,0,4775,4776,5,565,0,0,4776,4777,5,857,0,0,4777,4778,5,866,0, + 0,4778,4783,3,628,314,0,4779,4780,5,868,0,0,4780,4782,3,628,314, + 0,4781,4779,1,0,0,0,4782,4785,1,0,0,0,4783,4781,1,0,0,0,4783,4784, + 1,0,0,0,4784,4786,1,0,0,0,4785,4783,1,0,0,0,4786,4787,5,867,0,0, + 4787,4839,1,0,0,0,4788,4789,5,567,0,0,4789,4790,5,857,0,0,4790,4791, + 5,866,0,0,4791,4796,3,628,314,0,4792,4793,5,868,0,0,4793,4795,3, + 628,314,0,4794,4792,1,0,0,0,4795,4798,1,0,0,0,4796,4794,1,0,0,0, + 4796,4797,1,0,0,0,4797,4799,1,0,0,0,4798,4796,1,0,0,0,4799,4800, + 5,867,0,0,4800,4839,1,0,0,0,4801,4802,5,566,0,0,4802,4803,5,857, + 0,0,4803,4804,5,866,0,0,4804,4805,3,650,325,0,4805,4806,5,867,0, + 0,4806,4839,1,0,0,0,4807,4808,5,568,0,0,4808,4809,5,857,0,0,4809, + 4810,5,866,0,0,4810,4811,3,650,325,0,4811,4812,5,867,0,0,4812,4839, + 1,0,0,0,4813,4814,5,570,0,0,4814,4815,5,857,0,0,4815,4816,5,866, + 0,0,4816,4817,3,750,375,0,4817,4818,5,867,0,0,4818,4839,1,0,0,0, + 4819,4820,5,571,0,0,4820,4821,5,857,0,0,4821,4822,5,866,0,0,4822, + 4823,3,750,375,0,4823,4824,5,867,0,0,4824,4839,1,0,0,0,4825,4826, + 5,569,0,0,4826,4827,5,857,0,0,4827,4828,5,866,0,0,4828,4833,3,394, + 197,0,4829,4830,5,868,0,0,4830,4832,3,394,197,0,4831,4829,1,0,0, + 0,4832,4835,1,0,0,0,4833,4831,1,0,0,0,4833,4834,1,0,0,0,4834,4836, + 1,0,0,0,4835,4833,1,0,0,0,4836,4837,5,867,0,0,4837,4839,1,0,0,0, + 4838,4775,1,0,0,0,4838,4788,1,0,0,0,4838,4801,1,0,0,0,4838,4807, + 1,0,0,0,4838,4813,1,0,0,0,4838,4819,1,0,0,0,4838,4825,1,0,0,0,4839, + 393,1,0,0,0,4840,4841,5,866,0,0,4841,4842,3,652,326,0,4842,4843, + 5,868,0,0,4843,4844,3,652,326,0,4844,4845,5,867,0,0,4845,395,1,0, + 0,0,4846,4847,7,74,0,0,4847,397,1,0,0,0,4848,4849,7,75,0,0,4849, + 4850,5,857,0,0,4850,4874,3,402,201,0,4851,4852,5,460,0,0,4852,4853, + 5,857,0,0,4853,4854,5,882,0,0,4854,4855,5,868,0,0,4855,4856,5,461, + 0,0,4856,4857,5,857,0,0,4857,4874,3,712,356,0,4858,4859,5,611,0, + 0,4859,4860,5,857,0,0,4860,4861,5,882,0,0,4861,4862,5,868,0,0,4862, + 4863,5,612,0,0,4863,4864,5,857,0,0,4864,4874,3,712,356,0,4865,4866, + 5,557,0,0,4866,4867,5,857,0,0,4867,4868,5,882,0,0,4868,4869,5,868, + 0,0,4869,4870,5,558,0,0,4870,4871,5,857,0,0,4871,4874,3,712,356, + 0,4872,4874,5,634,0,0,4873,4848,1,0,0,0,4873,4851,1,0,0,0,4873,4858, + 1,0,0,0,4873,4865,1,0,0,0,4873,4872,1,0,0,0,4874,399,1,0,0,0,4875, + 4876,5,678,0,0,4876,4877,5,857,0,0,4877,4888,5,882,0,0,4878,4879, + 5,529,0,0,4879,4880,5,857,0,0,4880,4888,5,882,0,0,4881,4882,5,363, + 0,0,4882,4883,5,857,0,0,4883,4888,5,882,0,0,4884,4885,5,535,0,0, + 4885,4886,5,857,0,0,4886,4888,5,882,0,0,4887,4875,1,0,0,0,4887,4878, + 1,0,0,0,4887,4881,1,0,0,0,4887,4884,1,0,0,0,4888,401,1,0,0,0,4889, + 4894,3,696,348,0,4890,4891,5,868,0,0,4891,4893,3,696,348,0,4892, + 4890,1,0,0,0,4893,4896,1,0,0,0,4894,4892,1,0,0,0,4894,4895,1,0,0, + 0,4895,4899,1,0,0,0,4896,4894,1,0,0,0,4897,4899,5,882,0,0,4898,4889, + 1,0,0,0,4898,4897,1,0,0,0,4899,403,1,0,0,0,4900,4901,5,694,0,0,4901, + 4902,7,76,0,0,4902,4904,3,698,349,0,4903,4905,7,77,0,0,4904,4903, + 1,0,0,0,4904,4905,1,0,0,0,4905,405,1,0,0,0,4906,4907,5,694,0,0,4907, + 4908,5,378,0,0,4908,4914,3,698,349,0,4909,4912,5,654,0,0,4910,4911, + 5,65,0,0,4911,4913,5,489,0,0,4912,4910,1,0,0,0,4912,4913,1,0,0,0, + 4913,4915,1,0,0,0,4914,4909,1,0,0,0,4914,4915,1,0,0,0,4915,407,1, + 0,0,0,4916,4917,5,694,0,0,4917,4918,5,540,0,0,4918,4919,3,698,349, + 0,4919,409,1,0,0,0,4920,4921,5,694,0,0,4921,4922,5,341,0,0,4922, + 4925,3,698,349,0,4923,4924,5,513,0,0,4924,4926,5,533,0,0,4925,4923, + 1,0,0,0,4925,4926,1,0,0,0,4926,411,1,0,0,0,4927,4928,5,694,0,0,4928, + 4929,5,583,0,0,4929,4930,3,698,349,0,4930,413,1,0,0,0,4931,4932, + 5,694,0,0,4932,4935,5,551,0,0,4933,4934,5,33,0,0,4934,4936,3,698, + 349,0,4935,4933,1,0,0,0,4935,4936,1,0,0,0,4936,415,1,0,0,0,4937, + 4938,5,540,0,0,4938,4939,3,706,353,0,4939,4942,5,68,0,0,4940,4943, + 5,882,0,0,4941,4943,5,892,0,0,4942,4940,1,0,0,0,4942,4941,1,0,0, + 0,4943,417,1,0,0,0,4944,4945,5,717,0,0,4945,4948,3,706,353,0,4946, + 4947,5,188,0,0,4947,4949,3,752,376,0,4948,4946,1,0,0,0,4948,4949, + 1,0,0,0,4949,419,1,0,0,0,4950,4951,7,78,0,0,4951,4952,5,540,0,0, + 4952,4953,3,706,353,0,4953,421,1,0,0,0,4954,4957,3,424,212,0,4955, + 4957,3,4,2,0,4956,4954,1,0,0,0,4956,4955,1,0,0,0,4957,423,1,0,0, + 0,4958,4959,3,706,353,0,4959,4960,5,878,0,0,4960,4962,1,0,0,0,4961, + 4958,1,0,0,0,4961,4962,1,0,0,0,4962,4963,1,0,0,0,4963,4969,5,317, + 0,0,4964,4965,3,444,222,0,4965,4966,5,869,0,0,4966,4968,1,0,0,0, + 4967,4964,1,0,0,0,4968,4971,1,0,0,0,4969,4967,1,0,0,0,4969,4970, + 1,0,0,0,4970,4977,1,0,0,0,4971,4969,1,0,0,0,4972,4973,3,446,223, + 0,4973,4974,5,869,0,0,4974,4976,1,0,0,0,4975,4972,1,0,0,0,4976,4979, + 1,0,0,0,4977,4975,1,0,0,0,4977,4978,1,0,0,0,4978,4985,1,0,0,0,4979, + 4977,1,0,0,0,4980,4981,3,448,224,0,4981,4982,5,869,0,0,4982,4984, + 1,0,0,0,4983,4980,1,0,0,0,4984,4987,1,0,0,0,4985,4983,1,0,0,0,4985, + 4986,1,0,0,0,4986,4993,1,0,0,0,4987,4985,1,0,0,0,4988,4989,3,450, + 225,0,4989,4990,5,869,0,0,4990,4992,1,0,0,0,4991,4988,1,0,0,0,4992, + 4995,1,0,0,0,4993,4991,1,0,0,0,4993,4994,1,0,0,0,4994,4999,1,0,0, + 0,4995,4993,1,0,0,0,4996,4998,3,454,227,0,4997,4996,1,0,0,0,4998, + 5001,1,0,0,0,4999,4997,1,0,0,0,4999,5000,1,0,0,0,5000,5002,1,0,0, + 0,5001,4999,1,0,0,0,5002,5004,5,378,0,0,5003,5005,3,706,353,0,5004, + 5003,1,0,0,0,5004,5005,1,0,0,0,5005,425,1,0,0,0,5006,5009,5,23,0, + 0,5007,5010,3,706,353,0,5008,5010,3,804,402,0,5009,5007,1,0,0,0, + 5009,5008,1,0,0,0,5009,5010,1,0,0,0,5010,5012,1,0,0,0,5011,5013, + 3,456,228,0,5012,5011,1,0,0,0,5013,5014,1,0,0,0,5014,5012,1,0,0, + 0,5014,5015,1,0,0,0,5015,5022,1,0,0,0,5016,5018,5,53,0,0,5017,5019, + 3,454,227,0,5018,5017,1,0,0,0,5019,5020,1,0,0,0,5020,5018,1,0,0, + 0,5020,5021,1,0,0,0,5021,5023,1,0,0,0,5022,5016,1,0,0,0,5022,5023, + 1,0,0,0,5023,5024,1,0,0,0,5024,5025,5,378,0,0,5025,5026,5,23,0,0, + 5026,427,1,0,0,0,5027,5028,5,78,0,0,5028,5029,3,804,402,0,5029,5031, + 5,175,0,0,5030,5032,3,454,227,0,5031,5030,1,0,0,0,5032,5033,1,0, + 0,0,5033,5031,1,0,0,0,5033,5034,1,0,0,0,5034,5038,1,0,0,0,5035,5037, + 3,458,229,0,5036,5035,1,0,0,0,5037,5040,1,0,0,0,5038,5036,1,0,0, + 0,5038,5039,1,0,0,0,5039,5047,1,0,0,0,5040,5038,1,0,0,0,5041,5043, + 5,53,0,0,5042,5044,3,454,227,0,5043,5042,1,0,0,0,5044,5045,1,0,0, + 0,5045,5043,1,0,0,0,5045,5046,1,0,0,0,5046,5048,1,0,0,0,5047,5041, + 1,0,0,0,5047,5048,1,0,0,0,5048,5049,1,0,0,0,5049,5050,5,378,0,0, + 5050,5051,5,78,0,0,5051,429,1,0,0,0,5052,5053,5,90,0,0,5053,5054, + 3,706,353,0,5054,431,1,0,0,0,5055,5056,5,97,0,0,5056,5057,3,706, + 353,0,5057,433,1,0,0,0,5058,5059,3,706,353,0,5059,5060,5,878,0,0, + 5060,5062,1,0,0,0,5061,5058,1,0,0,0,5061,5062,1,0,0,0,5062,5063, + 1,0,0,0,5063,5065,5,106,0,0,5064,5066,3,454,227,0,5065,5064,1,0, + 0,0,5066,5067,1,0,0,0,5067,5065,1,0,0,0,5067,5068,1,0,0,0,5068,5069, + 1,0,0,0,5069,5070,5,378,0,0,5070,5072,5,106,0,0,5071,5073,3,706, + 353,0,5072,5071,1,0,0,0,5072,5073,1,0,0,0,5073,435,1,0,0,0,5074, + 5075,3,706,353,0,5075,5076,5,878,0,0,5076,5078,1,0,0,0,5077,5074, + 1,0,0,0,5077,5078,1,0,0,0,5078,5079,1,0,0,0,5079,5081,5,142,0,0, + 5080,5082,3,454,227,0,5081,5080,1,0,0,0,5082,5083,1,0,0,0,5083,5081, + 1,0,0,0,5083,5084,1,0,0,0,5084,5085,1,0,0,0,5085,5086,5,676,0,0, + 5086,5087,3,804,402,0,5087,5088,5,378,0,0,5088,5090,5,142,0,0,5089, + 5091,3,706,353,0,5090,5089,1,0,0,0,5090,5091,1,0,0,0,5091,437,1, + 0,0,0,5092,5093,5,148,0,0,5093,5094,3,804,402,0,5094,439,1,0,0,0, + 5095,5096,3,706,353,0,5096,5097,5,878,0,0,5097,5099,1,0,0,0,5098, + 5095,1,0,0,0,5098,5099,1,0,0,0,5099,5100,1,0,0,0,5100,5101,5,193, + 0,0,5101,5102,3,804,402,0,5102,5104,5,371,0,0,5103,5105,3,454,227, + 0,5104,5103,1,0,0,0,5105,5106,1,0,0,0,5106,5104,1,0,0,0,5106,5107, + 1,0,0,0,5107,5108,1,0,0,0,5108,5109,5,378,0,0,5109,5111,5,193,0, + 0,5110,5112,3,706,353,0,5111,5110,1,0,0,0,5111,5112,1,0,0,0,5112, + 441,1,0,0,0,5113,5114,5,334,0,0,5114,5129,3,706,353,0,5115,5120, + 5,64,0,0,5116,5118,5,501,0,0,5117,5116,1,0,0,0,5117,5118,1,0,0,0, + 5118,5119,1,0,0,0,5119,5121,5,68,0,0,5120,5117,1,0,0,0,5120,5121, + 1,0,0,0,5121,5122,1,0,0,0,5122,5123,3,706,353,0,5123,5124,5,88,0, + 0,5124,5125,3,704,352,0,5125,5129,1,0,0,0,5126,5127,5,516,0,0,5127, + 5129,3,706,353,0,5128,5113,1,0,0,0,5128,5115,1,0,0,0,5128,5126,1, + 0,0,0,5129,443,1,0,0,0,5130,5131,5,41,0,0,5131,5132,3,704,352,0, + 5132,5135,3,726,363,0,5133,5134,5,42,0,0,5134,5136,3,804,402,0,5135, + 5133,1,0,0,0,5135,5136,1,0,0,0,5136,445,1,0,0,0,5137,5138,5,41,0, + 0,5138,5139,3,706,353,0,5139,5140,5,30,0,0,5140,5147,5,65,0,0,5141, + 5148,3,712,356,0,5142,5144,5,164,0,0,5143,5145,5,682,0,0,5144,5143, + 1,0,0,0,5144,5145,1,0,0,0,5145,5146,1,0,0,0,5146,5148,5,882,0,0, + 5147,5141,1,0,0,0,5147,5142,1,0,0,0,5148,447,1,0,0,0,5149,5150,5, + 41,0,0,5150,5151,3,706,353,0,5151,5152,5,38,0,0,5152,5153,5,65,0, + 0,5153,5154,3,210,105,0,5154,449,1,0,0,0,5155,5156,5,41,0,0,5156, + 5157,7,79,0,0,5157,5158,5,417,0,0,5158,5159,5,65,0,0,5159,5164,3, + 452,226,0,5160,5161,5,868,0,0,5161,5163,3,452,226,0,5162,5160,1, + 0,0,0,5163,5166,1,0,0,0,5164,5162,1,0,0,0,5164,5165,1,0,0,0,5165, + 5167,1,0,0,0,5166,5164,1,0,0,0,5167,5168,3,422,211,0,5168,451,1, + 0,0,0,5169,5181,3,712,356,0,5170,5172,5,164,0,0,5171,5173,5,682, + 0,0,5172,5171,1,0,0,0,5172,5173,1,0,0,0,5173,5174,1,0,0,0,5174,5181, + 5,882,0,0,5175,5181,3,706,353,0,5176,5181,5,165,0,0,5177,5178,5, + 114,0,0,5178,5181,5,407,0,0,5179,5181,5,163,0,0,5180,5169,1,0,0, + 0,5180,5170,1,0,0,0,5180,5175,1,0,0,0,5180,5176,1,0,0,0,5180,5177, + 1,0,0,0,5180,5179,1,0,0,0,5181,453,1,0,0,0,5182,5185,3,18,9,0,5183, + 5185,3,4,2,0,5184,5182,1,0,0,0,5184,5183,1,0,0,0,5185,5186,1,0,0, + 0,5186,5187,5,869,0,0,5187,455,1,0,0,0,5188,5191,5,191,0,0,5189, + 5192,3,724,362,0,5190,5192,3,804,402,0,5191,5189,1,0,0,0,5191,5190, + 1,0,0,0,5192,5193,1,0,0,0,5193,5195,5,175,0,0,5194,5196,3,454,227, + 0,5195,5194,1,0,0,0,5196,5197,1,0,0,0,5197,5195,1,0,0,0,5197,5198, + 1,0,0,0,5198,457,1,0,0,0,5199,5200,5,54,0,0,5200,5201,3,804,402, + 0,5201,5203,5,175,0,0,5202,5204,3,454,227,0,5203,5202,1,0,0,0,5204, + 5205,1,0,0,0,5205,5203,1,0,0,0,5205,5206,1,0,0,0,5206,459,1,0,0, + 0,5207,5208,5,8,0,0,5208,5210,5,678,0,0,5209,5211,3,758,379,0,5210, + 5209,1,0,0,0,5210,5211,1,0,0,0,5211,5268,1,0,0,0,5212,5217,3,492, + 246,0,5213,5214,5,868,0,0,5214,5216,3,492,246,0,5215,5213,1,0,0, + 0,5216,5219,1,0,0,0,5217,5215,1,0,0,0,5217,5218,1,0,0,0,5218,5269, + 1,0,0,0,5219,5217,1,0,0,0,5220,5225,3,494,247,0,5221,5222,5,868, + 0,0,5222,5224,3,494,247,0,5223,5221,1,0,0,0,5224,5227,1,0,0,0,5225, + 5223,1,0,0,0,5225,5226,1,0,0,0,5226,5242,1,0,0,0,5227,5225,1,0,0, + 0,5228,5240,5,144,0,0,5229,5241,5,505,0,0,5230,5237,3,506,253,0, + 5231,5233,5,11,0,0,5232,5231,1,0,0,0,5232,5233,1,0,0,0,5233,5234, + 1,0,0,0,5234,5236,3,506,253,0,5235,5232,1,0,0,0,5236,5239,1,0,0, + 0,5237,5235,1,0,0,0,5237,5238,1,0,0,0,5238,5241,1,0,0,0,5239,5237, + 1,0,0,0,5240,5229,1,0,0,0,5240,5230,1,0,0,0,5241,5243,1,0,0,0,5242, + 5228,1,0,0,0,5242,5243,1,0,0,0,5243,5250,1,0,0,0,5244,5246,5,194, + 0,0,5245,5247,3,508,254,0,5246,5245,1,0,0,0,5247,5248,1,0,0,0,5248, + 5246,1,0,0,0,5248,5249,1,0,0,0,5249,5251,1,0,0,0,5250,5244,1,0,0, + 0,5250,5251,1,0,0,0,5251,5256,1,0,0,0,5252,5255,3,510,255,0,5253, + 5255,3,512,256,0,5254,5252,1,0,0,0,5254,5253,1,0,0,0,5255,5258,1, + 0,0,0,5256,5254,1,0,0,0,5256,5257,1,0,0,0,5257,5261,1,0,0,0,5258, + 5256,1,0,0,0,5259,5260,7,80,0,0,5260,5262,5,882,0,0,5261,5259,1, + 0,0,0,5261,5262,1,0,0,0,5262,5269,1,0,0,0,5263,5264,3,656,328,0, + 5264,5265,5,42,0,0,5265,5266,5,582,0,0,5266,5267,3,468,234,0,5267, + 5269,1,0,0,0,5268,5212,1,0,0,0,5268,5220,1,0,0,0,5268,5263,1,0,0, + 0,5269,461,1,0,0,0,5270,5271,5,34,0,0,5271,5273,5,678,0,0,5272,5274, + 3,760,380,0,5273,5272,1,0,0,0,5273,5274,1,0,0,0,5274,5275,1,0,0, + 0,5275,5277,3,684,342,0,5276,5278,3,496,248,0,5277,5276,1,0,0,0, + 5277,5278,1,0,0,0,5278,5286,1,0,0,0,5279,5280,5,868,0,0,5280,5282, + 3,684,342,0,5281,5283,3,496,248,0,5282,5281,1,0,0,0,5282,5283,1, + 0,0,0,5283,5285,1,0,0,0,5284,5279,1,0,0,0,5285,5288,1,0,0,0,5286, + 5284,1,0,0,0,5286,5287,1,0,0,0,5287,5292,1,0,0,0,5288,5286,1,0,0, + 0,5289,5290,5,42,0,0,5290,5291,5,582,0,0,5291,5293,3,468,234,0,5292, + 5289,1,0,0,0,5292,5293,1,0,0,0,5293,5308,1,0,0,0,5294,5306,5,144, + 0,0,5295,5307,5,505,0,0,5296,5303,3,506,253,0,5297,5299,5,11,0,0, + 5298,5297,1,0,0,0,5298,5299,1,0,0,0,5299,5300,1,0,0,0,5300,5302, + 3,506,253,0,5301,5298,1,0,0,0,5302,5305,1,0,0,0,5303,5301,1,0,0, + 0,5303,5304,1,0,0,0,5304,5307,1,0,0,0,5305,5303,1,0,0,0,5306,5295, + 1,0,0,0,5306,5296,1,0,0,0,5307,5309,1,0,0,0,5308,5294,1,0,0,0,5308, + 5309,1,0,0,0,5309,5316,1,0,0,0,5310,5312,5,194,0,0,5311,5313,3,508, + 254,0,5312,5311,1,0,0,0,5313,5314,1,0,0,0,5314,5312,1,0,0,0,5314, + 5315,1,0,0,0,5315,5317,1,0,0,0,5316,5310,1,0,0,0,5316,5317,1,0,0, + 0,5317,5322,1,0,0,0,5318,5321,3,510,255,0,5319,5321,3,512,256,0, + 5320,5318,1,0,0,0,5320,5319,1,0,0,0,5321,5324,1,0,0,0,5322,5320, + 1,0,0,0,5322,5323,1,0,0,0,5323,5327,1,0,0,0,5324,5322,1,0,0,0,5325, + 5326,7,80,0,0,5326,5328,5,882,0,0,5327,5325,1,0,0,0,5327,5328,1, + 0,0,0,5328,463,1,0,0,0,5329,5330,5,51,0,0,5330,5332,5,678,0,0,5331, + 5333,3,758,379,0,5332,5331,1,0,0,0,5332,5333,1,0,0,0,5333,5334,1, + 0,0,0,5334,5339,3,684,342,0,5335,5336,5,868,0,0,5336,5338,3,684, + 342,0,5337,5335,1,0,0,0,5338,5341,1,0,0,0,5339,5337,1,0,0,0,5339, + 5340,1,0,0,0,5340,465,1,0,0,0,5341,5339,1,0,0,0,5342,5343,5,73,0, + 0,5343,5348,3,520,260,0,5344,5345,5,868,0,0,5345,5347,3,520,260, + 0,5346,5344,1,0,0,0,5347,5350,1,0,0,0,5348,5346,1,0,0,0,5348,5349, + 1,0,0,0,5349,5351,1,0,0,0,5350,5348,1,0,0,0,5351,5353,5,119,0,0, + 5352,5354,3,488,244,0,5353,5352,1,0,0,0,5353,5354,1,0,0,0,5354,5355, + 1,0,0,0,5355,5356,3,524,262,0,5356,5366,5,176,0,0,5357,5362,3,500, + 250,0,5358,5359,5,868,0,0,5359,5361,3,500,250,0,5360,5358,1,0,0, + 0,5361,5364,1,0,0,0,5362,5360,1,0,0,0,5362,5363,1,0,0,0,5363,5367, + 1,0,0,0,5364,5362,1,0,0,0,5365,5367,3,654,327,0,5366,5357,1,0,0, + 0,5366,5365,1,0,0,0,5367,5382,1,0,0,0,5368,5380,5,144,0,0,5369,5381, + 5,505,0,0,5370,5377,3,506,253,0,5371,5373,5,11,0,0,5372,5371,1,0, + 0,0,5372,5373,1,0,0,0,5373,5374,1,0,0,0,5374,5376,3,506,253,0,5375, + 5372,1,0,0,0,5376,5379,1,0,0,0,5377,5375,1,0,0,0,5377,5378,1,0,0, + 0,5378,5381,1,0,0,0,5379,5377,1,0,0,0,5380,5369,1,0,0,0,5380,5370, + 1,0,0,0,5381,5383,1,0,0,0,5382,5368,1,0,0,0,5382,5383,1,0,0,0,5383, + 5393,1,0,0,0,5384,5390,5,194,0,0,5385,5386,5,73,0,0,5386,5389,5, + 121,0,0,5387,5389,3,508,254,0,5388,5385,1,0,0,0,5388,5387,1,0,0, + 0,5389,5392,1,0,0,0,5390,5388,1,0,0,0,5390,5391,1,0,0,0,5391,5394, + 1,0,0,0,5392,5390,1,0,0,0,5393,5384,1,0,0,0,5393,5394,1,0,0,0,5394, + 5402,1,0,0,0,5395,5396,5,13,0,0,5396,5400,3,684,342,0,5397,5398, + 5,194,0,0,5398,5399,5,582,0,0,5399,5401,3,468,234,0,5400,5397,1, + 0,0,0,5400,5401,1,0,0,0,5401,5403,1,0,0,0,5402,5395,1,0,0,0,5402, + 5403,1,0,0,0,5403,5432,1,0,0,0,5404,5407,5,73,0,0,5405,5406,5,547, + 0,0,5406,5408,5,119,0,0,5407,5405,1,0,0,0,5407,5408,1,0,0,0,5408, + 5409,1,0,0,0,5409,5414,3,656,328,0,5410,5411,5,868,0,0,5411,5413, + 3,656,328,0,5412,5410,1,0,0,0,5413,5416,1,0,0,0,5414,5412,1,0,0, + 0,5414,5415,1,0,0,0,5415,5417,1,0,0,0,5416,5414,1,0,0,0,5417,5418, + 5,176,0,0,5418,5423,3,656,328,0,5419,5420,5,868,0,0,5420,5422,3, + 656,328,0,5421,5419,1,0,0,0,5422,5425,1,0,0,0,5423,5421,1,0,0,0, + 5423,5424,1,0,0,0,5424,5429,1,0,0,0,5425,5423,1,0,0,0,5426,5427, + 5,194,0,0,5427,5428,5,704,0,0,5428,5430,5,121,0,0,5429,5426,1,0, + 0,0,5429,5430,1,0,0,0,5430,5432,1,0,0,0,5431,5342,1,0,0,0,5431,5404, + 1,0,0,0,5432,467,1,0,0,0,5433,5442,5,42,0,0,5434,5442,5,505,0,0, + 5435,5438,5,7,0,0,5436,5437,5,59,0,0,5437,5439,3,654,327,0,5438, + 5436,1,0,0,0,5438,5439,1,0,0,0,5439,5442,1,0,0,0,5440,5442,3,654, + 327,0,5441,5433,1,0,0,0,5441,5434,1,0,0,0,5441,5435,1,0,0,0,5441, + 5440,1,0,0,0,5442,469,1,0,0,0,5443,5444,5,73,0,0,5444,5445,5,547, + 0,0,5445,5446,5,119,0,0,5446,5447,3,684,342,0,5447,5448,5,176,0, + 0,5448,5453,3,684,342,0,5449,5450,5,868,0,0,5450,5452,3,684,342, + 0,5451,5449,1,0,0,0,5452,5455,1,0,0,0,5453,5451,1,0,0,0,5453,5454, + 1,0,0,0,5454,5459,1,0,0,0,5455,5453,1,0,0,0,5456,5457,5,194,0,0, + 5457,5458,5,73,0,0,5458,5460,5,121,0,0,5459,5456,1,0,0,0,5459,5460, + 1,0,0,0,5460,471,1,0,0,0,5461,5462,5,8,0,0,5462,5463,5,739,0,0,5463, + 5464,5,74,0,0,5464,5470,3,646,323,0,5465,5467,5,190,0,0,5466,5468, + 5,857,0,0,5467,5466,1,0,0,0,5467,5468,1,0,0,0,5468,5469,1,0,0,0, + 5469,5471,3,480,240,0,5470,5465,1,0,0,0,5470,5471,1,0,0,0,5471,5477, + 1,0,0,0,5472,5474,5,837,0,0,5473,5475,5,857,0,0,5474,5473,1,0,0, + 0,5474,5475,1,0,0,0,5475,5476,1,0,0,0,5476,5478,3,712,356,0,5477, + 5472,1,0,0,0,5477,5478,1,0,0,0,5478,5483,1,0,0,0,5479,5481,7,39, + 0,0,5480,5482,5,66,0,0,5481,5480,1,0,0,0,5481,5482,1,0,0,0,5482, + 5484,1,0,0,0,5483,5479,1,0,0,0,5483,5484,1,0,0,0,5484,473,1,0,0, + 0,5485,5486,5,34,0,0,5486,5487,5,739,0,0,5487,5488,5,74,0,0,5488, + 5489,3,644,322,0,5489,5490,5,839,0,0,5490,5491,5,857,0,0,5491,5497, + 7,81,0,0,5492,5494,5,190,0,0,5493,5495,5,857,0,0,5494,5493,1,0,0, + 0,5494,5495,1,0,0,0,5495,5496,1,0,0,0,5496,5498,3,480,240,0,5497, + 5492,1,0,0,0,5497,5498,1,0,0,0,5498,5504,1,0,0,0,5499,5501,5,837, + 0,0,5500,5502,5,857,0,0,5501,5500,1,0,0,0,5501,5502,1,0,0,0,5502, + 5503,1,0,0,0,5503,5505,3,712,356,0,5504,5499,1,0,0,0,5504,5505,1, + 0,0,0,5505,5507,1,0,0,0,5506,5508,7,39,0,0,5507,5506,1,0,0,0,5507, + 5508,1,0,0,0,5508,475,1,0,0,0,5509,5510,5,51,0,0,5510,5511,5,739, + 0,0,5511,5512,5,74,0,0,5512,5514,3,646,323,0,5513,5515,5,66,0,0, + 5514,5513,1,0,0,0,5514,5515,1,0,0,0,5515,477,1,0,0,0,5516,5517,5, + 155,0,0,5517,5518,5,739,0,0,5518,5519,5,74,0,0,5519,5529,3,646,323, + 0,5520,5521,5,65,0,0,5521,5526,3,712,356,0,5522,5523,5,868,0,0,5523, + 5525,3,712,356,0,5524,5522,1,0,0,0,5525,5528,1,0,0,0,5526,5524,1, + 0,0,0,5526,5527,1,0,0,0,5527,5530,1,0,0,0,5528,5526,1,0,0,0,5529, + 5520,1,0,0,0,5529,5530,1,0,0,0,5530,479,1,0,0,0,5531,5537,3,712, + 356,0,5532,5533,3,712,356,0,5533,5534,5,854,0,0,5534,5535,3,712, + 356,0,5535,5537,1,0,0,0,5536,5531,1,0,0,0,5536,5532,1,0,0,0,5537, + 5542,1,0,0,0,5538,5539,5,868,0,0,5539,5541,3,480,240,0,5540,5538, + 1,0,0,0,5541,5544,1,0,0,0,5542,5540,1,0,0,0,5542,5543,1,0,0,0,5543, + 481,1,0,0,0,5544,5542,1,0,0,0,5545,5546,5,141,0,0,5546,5547,5,678, + 0,0,5547,5552,3,526,263,0,5548,5549,5,868,0,0,5549,5551,3,526,263, + 0,5550,5548,1,0,0,0,5551,5554,1,0,0,0,5552,5550,1,0,0,0,5552,5553, + 1,0,0,0,5553,483,1,0,0,0,5554,5552,1,0,0,0,5555,5557,5,149,0,0,5556, + 5558,3,758,379,0,5557,5556,1,0,0,0,5557,5558,1,0,0,0,5558,5559,1, + 0,0,0,5559,5564,3,520,260,0,5560,5561,5,868,0,0,5561,5563,3,520, + 260,0,5562,5560,1,0,0,0,5563,5566,1,0,0,0,5564,5562,1,0,0,0,5564, + 5565,1,0,0,0,5565,5567,1,0,0,0,5566,5564,1,0,0,0,5567,5569,5,119, + 0,0,5568,5570,3,488,244,0,5569,5568,1,0,0,0,5569,5570,1,0,0,0,5570, + 5571,1,0,0,0,5571,5572,3,524,262,0,5572,5573,5,68,0,0,5573,5575, + 3,654,327,0,5574,5576,3,486,243,0,5575,5574,1,0,0,0,5575,5576,1, + 0,0,0,5576,5608,1,0,0,0,5577,5579,5,149,0,0,5578,5580,3,758,379, + 0,5579,5578,1,0,0,0,5579,5580,1,0,0,0,5580,5581,1,0,0,0,5581,5583, + 5,7,0,0,5582,5584,5,734,0,0,5583,5582,1,0,0,0,5583,5584,1,0,0,0, + 5584,5585,1,0,0,0,5585,5586,5,868,0,0,5586,5587,5,73,0,0,5587,5588, + 5,121,0,0,5588,5589,5,68,0,0,5589,5591,3,654,327,0,5590,5592,3,486, + 243,0,5591,5590,1,0,0,0,5591,5592,1,0,0,0,5592,5608,1,0,0,0,5593, + 5595,5,149,0,0,5594,5596,3,758,379,0,5595,5594,1,0,0,0,5595,5596, + 1,0,0,0,5596,5599,1,0,0,0,5597,5598,5,547,0,0,5598,5600,5,119,0, + 0,5599,5597,1,0,0,0,5599,5600,1,0,0,0,5600,5601,1,0,0,0,5601,5602, + 3,654,327,0,5602,5603,5,68,0,0,5603,5605,3,654,327,0,5604,5606,3, + 486,243,0,5605,5604,1,0,0,0,5605,5606,1,0,0,0,5606,5608,1,0,0,0, + 5607,5555,1,0,0,0,5607,5577,1,0,0,0,5607,5593,1,0,0,0,5608,485,1, + 0,0,0,5609,5610,5,79,0,0,5610,5611,5,674,0,0,5611,5612,5,678,0,0, + 5612,487,1,0,0,0,5613,5614,7,82,0,0,5614,489,1,0,0,0,5615,5616,5, + 155,0,0,5616,5619,5,529,0,0,5617,5618,5,65,0,0,5618,5620,3,684,342, + 0,5619,5617,1,0,0,0,5619,5620,1,0,0,0,5620,5621,1,0,0,0,5621,5624, + 5,857,0,0,5622,5625,3,798,399,0,5623,5625,5,882,0,0,5624,5622,1, + 0,0,0,5624,5623,1,0,0,0,5625,5648,1,0,0,0,5626,5627,5,155,0,0,5627, + 5630,5,529,0,0,5628,5629,5,65,0,0,5629,5631,3,684,342,0,5630,5628, + 1,0,0,0,5630,5631,1,0,0,0,5631,5636,1,0,0,0,5632,5633,5,176,0,0, + 5633,5637,5,829,0,0,5634,5635,5,857,0,0,5635,5637,5,882,0,0,5636, + 5632,1,0,0,0,5636,5634,1,0,0,0,5637,5640,1,0,0,0,5638,5639,5,143, + 0,0,5639,5641,5,882,0,0,5640,5638,1,0,0,0,5640,5641,1,0,0,0,5641, + 5645,1,0,0,0,5642,5643,5,147,0,0,5643,5644,5,36,0,0,5644,5646,5, + 529,0,0,5645,5642,1,0,0,0,5645,5646,1,0,0,0,5646,5648,1,0,0,0,5647, + 5615,1,0,0,0,5647,5626,1,0,0,0,5648,491,1,0,0,0,5649,5650,3,684, + 342,0,5650,5651,3,510,255,0,5651,493,1,0,0,0,5652,5678,3,684,342, + 0,5653,5654,5,423,0,0,5654,5655,5,20,0,0,5655,5656,5,882,0,0,5656, + 5679,3,502,251,0,5657,5658,5,423,0,0,5658,5659,5,20,0,0,5659,5660, + 5,829,0,0,5660,5661,5,529,0,0,5661,5679,3,502,251,0,5662,5663,5, + 423,0,0,5663,5664,5,194,0,0,5664,5679,3,504,252,0,5665,5666,5,369, + 0,0,5666,5667,5,511,0,0,5667,5679,5,529,0,0,5668,5669,7,83,0,0,5669, + 5671,3,518,259,0,5670,5672,3,514,257,0,5671,5670,1,0,0,0,5671,5672, + 1,0,0,0,5672,5674,1,0,0,0,5673,5668,1,0,0,0,5674,5675,1,0,0,0,5675, + 5673,1,0,0,0,5675,5676,1,0,0,0,5676,5679,1,0,0,0,5677,5679,3,516, + 258,0,5678,5653,1,0,0,0,5678,5657,1,0,0,0,5678,5662,1,0,0,0,5678, + 5665,1,0,0,0,5678,5673,1,0,0,0,5678,5677,1,0,0,0,5678,5679,1,0,0, + 0,5679,495,1,0,0,0,5680,5681,5,423,0,0,5681,5687,5,20,0,0,5682,5688, + 5,882,0,0,5683,5684,5,829,0,0,5684,5688,5,529,0,0,5685,5686,5,529, + 0,0,5686,5688,5,882,0,0,5687,5682,1,0,0,0,5687,5683,1,0,0,0,5687, + 5685,1,0,0,0,5688,5691,1,0,0,0,5689,5690,5,11,0,0,5690,5692,3,496, + 248,0,5691,5689,1,0,0,0,5691,5692,1,0,0,0,5692,5717,1,0,0,0,5693, + 5694,5,423,0,0,5694,5695,5,194,0,0,5695,5704,3,706,353,0,5696,5700, + 5,20,0,0,5697,5701,5,882,0,0,5698,5699,5,829,0,0,5699,5701,5,529, + 0,0,5700,5697,1,0,0,0,5700,5698,1,0,0,0,5701,5705,1,0,0,0,5702,5703, + 5,13,0,0,5703,5705,5,882,0,0,5704,5696,1,0,0,0,5704,5702,1,0,0,0, + 5704,5705,1,0,0,0,5705,5708,1,0,0,0,5706,5707,5,11,0,0,5707,5709, + 3,496,248,0,5708,5706,1,0,0,0,5708,5709,1,0,0,0,5709,5717,1,0,0, + 0,5710,5711,5,423,0,0,5711,5712,5,194,0,0,5712,5714,3,706,353,0, + 5713,5715,3,498,249,0,5714,5713,1,0,0,0,5714,5715,1,0,0,0,5715,5717, + 1,0,0,0,5716,5680,1,0,0,0,5716,5693,1,0,0,0,5716,5710,1,0,0,0,5717, + 497,1,0,0,0,5718,5719,5,427,0,0,5719,5720,5,708,0,0,5720,5721,5, + 423,0,0,5721,5725,5,20,0,0,5722,5723,5,829,0,0,5723,5726,5,529,0, + 0,5724,5726,5,882,0,0,5725,5722,1,0,0,0,5725,5724,1,0,0,0,5726,5736, + 1,0,0,0,5727,5728,5,427,0,0,5728,5729,5,708,0,0,5729,5730,5,423, + 0,0,5730,5731,5,194,0,0,5731,5732,3,706,353,0,5732,5733,5,13,0,0, + 5733,5734,5,882,0,0,5734,5736,1,0,0,0,5735,5718,1,0,0,0,5735,5727, + 1,0,0,0,5736,499,1,0,0,0,5737,5738,3,684,342,0,5738,5739,5,423,0, + 0,5739,5740,5,20,0,0,5740,5741,5,529,0,0,5741,5742,5,882,0,0,5742, + 5763,1,0,0,0,5743,5744,3,684,342,0,5744,5745,5,423,0,0,5745,5746, + 5,20,0,0,5746,5747,5,829,0,0,5747,5748,5,529,0,0,5748,5749,3,502, + 251,0,5749,5763,1,0,0,0,5750,5751,3,684,342,0,5751,5752,5,423,0, + 0,5752,5753,5,20,0,0,5753,5754,5,882,0,0,5754,5755,3,502,251,0,5755, + 5763,1,0,0,0,5756,5757,3,684,342,0,5757,5758,5,423,0,0,5758,5759, + 5,194,0,0,5759,5760,3,504,252,0,5760,5763,1,0,0,0,5761,5763,3,684, + 342,0,5762,5737,1,0,0,0,5762,5743,1,0,0,0,5762,5750,1,0,0,0,5762, + 5756,1,0,0,0,5762,5761,1,0,0,0,5763,501,1,0,0,0,5764,5765,5,143, + 0,0,5765,5767,5,882,0,0,5766,5764,1,0,0,0,5766,5767,1,0,0,0,5767, + 5771,1,0,0,0,5768,5769,5,147,0,0,5769,5770,5,36,0,0,5770,5772,5, + 529,0,0,5771,5768,1,0,0,0,5771,5772,1,0,0,0,5772,503,1,0,0,0,5773, + 5781,3,706,353,0,5774,5778,7,84,0,0,5775,5779,5,882,0,0,5776,5777, + 5,829,0,0,5777,5779,5,529,0,0,5778,5775,1,0,0,0,5778,5776,1,0,0, + 0,5779,5780,1,0,0,0,5780,5782,3,502,251,0,5781,5774,1,0,0,0,5781, + 5782,1,0,0,0,5782,5788,1,0,0,0,5783,5784,3,706,353,0,5784,5785,5, + 188,0,0,5785,5786,3,798,399,0,5786,5788,1,0,0,0,5787,5773,1,0,0, + 0,5787,5783,1,0,0,0,5788,505,1,0,0,0,5789,5798,5,169,0,0,5790,5798, + 5,693,0,0,5791,5792,5,331,0,0,5792,5798,5,882,0,0,5793,5794,5,441, + 0,0,5794,5798,5,882,0,0,5795,5796,5,651,0,0,5796,5798,5,882,0,0, + 5797,5789,1,0,0,0,5797,5790,1,0,0,0,5797,5791,1,0,0,0,5797,5793, + 1,0,0,0,5797,5795,1,0,0,0,5798,507,1,0,0,0,5799,5800,5,479,0,0,5800, + 5808,3,712,356,0,5801,5802,5,482,0,0,5802,5808,3,712,356,0,5803, + 5804,5,478,0,0,5804,5808,3,712,356,0,5805,5806,5,483,0,0,5806,5808, + 3,712,356,0,5807,5799,1,0,0,0,5807,5801,1,0,0,0,5807,5803,1,0,0, + 0,5807,5805,1,0,0,0,5808,509,1,0,0,0,5809,5810,5,529,0,0,5810,5817, + 5,390,0,0,5811,5818,5,42,0,0,5812,5818,5,500,0,0,5813,5814,5,87, + 0,0,5814,5815,3,712,356,0,5815,5816,5,698,0,0,5816,5818,1,0,0,0, + 5817,5811,1,0,0,0,5817,5812,1,0,0,0,5817,5813,1,0,0,0,5817,5818, + 1,0,0,0,5818,5848,1,0,0,0,5819,5820,5,529,0,0,5820,5823,5,420,0, + 0,5821,5824,5,42,0,0,5822,5824,3,712,356,0,5823,5821,1,0,0,0,5823, + 5822,1,0,0,0,5824,5848,1,0,0,0,5825,5826,5,529,0,0,5826,5827,5,581, + 0,0,5827,5832,5,87,0,0,5828,5833,5,42,0,0,5829,5830,3,712,356,0, + 5830,5831,5,698,0,0,5831,5833,1,0,0,0,5832,5828,1,0,0,0,5832,5829, + 1,0,0,0,5833,5848,1,0,0,0,5834,5835,5,529,0,0,5835,5836,5,144,0, + 0,5836,5838,5,36,0,0,5837,5839,7,85,0,0,5838,5837,1,0,0,0,5838,5839, + 1,0,0,0,5839,5848,1,0,0,0,5840,5841,5,395,0,0,5841,5848,3,712,356, + 0,5842,5845,5,530,0,0,5843,5846,3,712,356,0,5844,5846,5,669,0,0, + 5845,5843,1,0,0,0,5845,5844,1,0,0,0,5846,5848,1,0,0,0,5847,5809, + 1,0,0,0,5847,5819,1,0,0,0,5847,5825,1,0,0,0,5847,5834,1,0,0,0,5847, + 5840,1,0,0,0,5847,5842,1,0,0,0,5848,511,1,0,0,0,5849,5850,5,304, + 0,0,5850,5851,7,86,0,0,5851,513,1,0,0,0,5852,5855,5,423,0,0,5853, + 5854,5,194,0,0,5854,5856,3,706,353,0,5855,5853,1,0,0,0,5855,5856, + 1,0,0,0,5856,5865,1,0,0,0,5857,5861,5,20,0,0,5858,5862,5,882,0,0, + 5859,5860,5,829,0,0,5860,5862,5,529,0,0,5861,5858,1,0,0,0,5861,5859, + 1,0,0,0,5862,5866,1,0,0,0,5863,5864,5,13,0,0,5864,5866,5,882,0,0, + 5865,5857,1,0,0,0,5865,5863,1,0,0,0,5866,515,1,0,0,0,5867,5868,3, + 518,259,0,5868,5869,5,429,0,0,5869,5870,5,555,0,0,5870,5883,1,0, + 0,0,5871,5872,3,518,259,0,5872,5873,5,401,0,0,5873,5874,5,555,0, + 0,5874,5875,5,155,0,0,5875,5876,5,330,0,0,5876,5877,5,13,0,0,5877, + 5878,5,882,0,0,5878,5883,1,0,0,0,5879,5880,3,518,259,0,5880,5881, + 5,675,0,0,5881,5883,1,0,0,0,5882,5867,1,0,0,0,5882,5871,1,0,0,0, + 5882,5879,1,0,0,0,5883,517,1,0,0,0,5884,5885,7,87,0,0,5885,5886, + 5,394,0,0,5886,519,1,0,0,0,5887,5892,3,522,261,0,5888,5889,5,866, + 0,0,5889,5890,3,660,330,0,5890,5891,5,867,0,0,5891,5893,1,0,0,0, + 5892,5888,1,0,0,0,5892,5893,1,0,0,0,5893,521,1,0,0,0,5894,5896,5, + 7,0,0,5895,5897,5,734,0,0,5896,5895,1,0,0,0,5896,5897,1,0,0,0,5897, + 5988,1,0,0,0,5898,5900,5,8,0,0,5899,5901,5,743,0,0,5900,5899,1,0, + 0,0,5900,5901,1,0,0,0,5901,5988,1,0,0,0,5902,5910,5,34,0,0,5903, + 5904,5,660,0,0,5904,5911,5,752,0,0,5905,5911,5,743,0,0,5906,5911, + 5,684,0,0,5907,5911,5,678,0,0,5908,5911,5,658,0,0,5909,5911,5,582, + 0,0,5910,5903,1,0,0,0,5910,5905,1,0,0,0,5910,5906,1,0,0,0,5910,5907, + 1,0,0,0,5910,5908,1,0,0,0,5910,5909,1,0,0,0,5910,5911,1,0,0,0,5911, + 5988,1,0,0,0,5912,5988,5,44,0,0,5913,5915,5,51,0,0,5914,5916,5,582, + 0,0,5915,5914,1,0,0,0,5915,5916,1,0,0,0,5916,5988,1,0,0,0,5917,5988, + 5,385,0,0,5918,5988,5,717,0,0,5919,5988,5,718,0,0,5920,5921,5,73, + 0,0,5921,5988,5,121,0,0,5922,5988,5,82,0,0,5923,5988,5,86,0,0,5924, + 5925,5,104,0,0,5925,5988,5,752,0,0,5926,5988,5,735,0,0,5927,5988, + 5,547,0,0,5928,5988,5,138,0,0,5929,5988,5,736,0,0,5930,5931,5,572, + 0,0,5931,5988,7,88,0,0,5932,5988,5,154,0,0,5933,5934,5,157,0,0,5934, + 5988,7,89,0,0,5935,5988,5,749,0,0,5936,5988,5,750,0,0,5937,5988, + 5,178,0,0,5938,5988,5,185,0,0,5939,5988,5,186,0,0,5940,5988,5,705, + 0,0,5941,5988,5,706,0,0,5942,5988,5,707,0,0,5943,5988,5,709,0,0, + 5944,5988,5,710,0,0,5945,5988,5,711,0,0,5946,5988,5,712,0,0,5947, + 5988,5,714,0,0,5948,5988,5,715,0,0,5949,5988,5,716,0,0,5950,5988, + 5,719,0,0,5951,5988,5,720,0,0,5952,5988,5,721,0,0,5953,5988,5,722, + 0,0,5954,5988,5,723,0,0,5955,5988,5,724,0,0,5956,5988,5,725,0,0, + 5957,5988,5,726,0,0,5958,5988,5,727,0,0,5959,5988,5,728,0,0,5960, + 5988,5,731,0,0,5961,5988,5,732,0,0,5962,5988,5,733,0,0,5963,5988, + 5,737,0,0,5964,5988,5,738,0,0,5965,5988,5,740,0,0,5966,5988,5,741, + 0,0,5967,5988,5,742,0,0,5968,5988,5,745,0,0,5969,5988,5,746,0,0, + 5970,5988,5,747,0,0,5971,5988,5,160,0,0,5972,5988,5,748,0,0,5973, + 5988,5,836,0,0,5974,5988,5,751,0,0,5975,5988,5,753,0,0,5976,5988, + 5,838,0,0,5977,5988,5,754,0,0,5978,5988,5,755,0,0,5979,5980,5,103, + 0,0,5980,5981,5,68,0,0,5981,5988,5,744,0,0,5982,5983,5,154,0,0,5983, + 5984,5,88,0,0,5984,5988,5,744,0,0,5985,5986,5,729,0,0,5986,5988, + 5,730,0,0,5987,5894,1,0,0,0,5987,5898,1,0,0,0,5987,5902,1,0,0,0, + 5987,5912,1,0,0,0,5987,5913,1,0,0,0,5987,5917,1,0,0,0,5987,5918, + 1,0,0,0,5987,5919,1,0,0,0,5987,5920,1,0,0,0,5987,5922,1,0,0,0,5987, + 5923,1,0,0,0,5987,5924,1,0,0,0,5987,5926,1,0,0,0,5987,5927,1,0,0, + 0,5987,5928,1,0,0,0,5987,5929,1,0,0,0,5987,5930,1,0,0,0,5987,5932, + 1,0,0,0,5987,5933,1,0,0,0,5987,5935,1,0,0,0,5987,5936,1,0,0,0,5987, + 5937,1,0,0,0,5987,5938,1,0,0,0,5987,5939,1,0,0,0,5987,5940,1,0,0, + 0,5987,5941,1,0,0,0,5987,5942,1,0,0,0,5987,5943,1,0,0,0,5987,5944, + 1,0,0,0,5987,5945,1,0,0,0,5987,5946,1,0,0,0,5987,5947,1,0,0,0,5987, + 5948,1,0,0,0,5987,5949,1,0,0,0,5987,5950,1,0,0,0,5987,5951,1,0,0, + 0,5987,5952,1,0,0,0,5987,5953,1,0,0,0,5987,5954,1,0,0,0,5987,5955, + 1,0,0,0,5987,5956,1,0,0,0,5987,5957,1,0,0,0,5987,5958,1,0,0,0,5987, + 5959,1,0,0,0,5987,5960,1,0,0,0,5987,5961,1,0,0,0,5987,5962,1,0,0, + 0,5987,5963,1,0,0,0,5987,5964,1,0,0,0,5987,5965,1,0,0,0,5987,5966, + 1,0,0,0,5987,5967,1,0,0,0,5987,5968,1,0,0,0,5987,5969,1,0,0,0,5987, + 5970,1,0,0,0,5987,5971,1,0,0,0,5987,5972,1,0,0,0,5987,5973,1,0,0, + 0,5987,5974,1,0,0,0,5987,5975,1,0,0,0,5987,5976,1,0,0,0,5987,5977, + 1,0,0,0,5987,5978,1,0,0,0,5987,5979,1,0,0,0,5987,5982,1,0,0,0,5987, + 5985,1,0,0,0,5988,523,1,0,0,0,5989,6006,5,850,0,0,5990,5991,5,850, + 0,0,5991,5992,5,865,0,0,5992,6006,5,850,0,0,5993,5994,3,706,353, + 0,5994,5995,5,865,0,0,5995,5996,5,850,0,0,5996,6006,1,0,0,0,5997, + 5998,3,706,353,0,5998,5999,5,865,0,0,5999,6000,3,706,353,0,6000, + 6006,1,0,0,0,6001,6002,3,706,353,0,6002,6003,3,710,355,0,6003,6006, + 1,0,0,0,6004,6006,3,706,353,0,6005,5989,1,0,0,0,6005,5990,1,0,0, + 0,6005,5993,1,0,0,0,6005,5997,1,0,0,0,6005,6001,1,0,0,0,6005,6004, + 1,0,0,0,6006,525,1,0,0,0,6007,6008,3,684,342,0,6008,6009,5,176,0, + 0,6009,6010,3,684,342,0,6010,527,1,0,0,0,6011,6013,5,10,0,0,6012, + 6014,3,538,269,0,6013,6012,1,0,0,0,6013,6014,1,0,0,0,6014,6015,1, + 0,0,0,6015,6016,5,173,0,0,6016,6060,3,650,325,0,6017,6019,5,10,0, + 0,6018,6020,3,538,269,0,6019,6018,1,0,0,0,6019,6020,1,0,0,0,6020, + 6021,1,0,0,0,6021,6022,5,173,0,0,6022,6023,3,652,326,0,6023,6024, + 5,185,0,0,6024,6025,5,77,0,0,6025,6026,5,119,0,0,6026,6031,3,660, + 330,0,6027,6028,5,194,0,0,6028,6029,3,712,356,0,6029,6030,5,19,0, + 0,6030,6032,1,0,0,0,6031,6027,1,0,0,0,6031,6032,1,0,0,0,6032,6060, + 1,0,0,0,6033,6035,5,10,0,0,6034,6036,3,538,269,0,6035,6034,1,0,0, + 0,6035,6036,1,0,0,0,6036,6037,1,0,0,0,6037,6038,5,173,0,0,6038,6039, + 3,652,326,0,6039,6040,5,185,0,0,6040,6041,5,77,0,0,6041,6042,5,119, + 0,0,6042,6046,3,662,331,0,6043,6044,5,188,0,0,6044,6045,5,360,0, + 0,6045,6047,5,882,0,0,6046,6043,1,0,0,0,6046,6047,1,0,0,0,6047,6060, + 1,0,0,0,6048,6050,5,10,0,0,6049,6051,3,538,269,0,6050,6049,1,0,0, + 0,6050,6051,1,0,0,0,6051,6052,1,0,0,0,6052,6053,5,173,0,0,6053,6054, + 3,652,326,0,6054,6055,5,51,0,0,6055,6056,5,77,0,0,6056,6057,5,119, + 0,0,6057,6058,3,660,330,0,6058,6060,1,0,0,0,6059,6011,1,0,0,0,6059, + 6017,1,0,0,0,6059,6033,1,0,0,0,6059,6048,1,0,0,0,6060,529,1,0,0, + 0,6061,6062,5,27,0,0,6062,6063,5,173,0,0,6063,6067,3,650,325,0,6064, + 6066,3,540,270,0,6065,6064,1,0,0,0,6066,6069,1,0,0,0,6067,6065,1, + 0,0,0,6067,6068,1,0,0,0,6068,531,1,0,0,0,6069,6067,1,0,0,0,6070, + 6071,5,329,0,0,6071,6072,5,173,0,0,6072,6074,3,650,325,0,6073,6075, + 7,90,0,0,6074,6073,1,0,0,0,6074,6075,1,0,0,0,6075,533,1,0,0,0,6076, + 6078,5,120,0,0,6077,6079,3,538,269,0,6078,6077,1,0,0,0,6078,6079, + 1,0,0,0,6079,6080,1,0,0,0,6080,6081,7,61,0,0,6081,6082,3,650,325, + 0,6082,535,1,0,0,0,6083,6085,5,562,0,0,6084,6086,3,538,269,0,6085, + 6084,1,0,0,0,6085,6086,1,0,0,0,6086,6087,1,0,0,0,6087,6088,5,173, + 0,0,6088,6090,3,650,325,0,6089,6091,5,549,0,0,6090,6089,1,0,0,0, + 6090,6091,1,0,0,0,6091,6093,1,0,0,0,6092,6094,5,392,0,0,6093,6092, + 1,0,0,0,6093,6094,1,0,0,0,6094,6096,1,0,0,0,6095,6097,5,679,0,0, + 6096,6095,1,0,0,0,6096,6097,1,0,0,0,6097,537,1,0,0,0,6098,6099,7, + 91,0,0,6099,539,1,0,0,0,6100,6101,5,65,0,0,6101,6108,5,677,0,0,6102, + 6108,5,549,0,0,6103,6108,5,396,0,0,6104,6108,5,484,0,0,6105,6108, + 5,392,0,0,6106,6108,5,327,0,0,6107,6100,1,0,0,0,6107,6102,1,0,0, + 0,6107,6103,1,0,0,0,6107,6104,1,0,0,0,6107,6105,1,0,0,0,6107,6106, + 1,0,0,0,6108,541,1,0,0,0,6109,6110,5,432,0,0,6110,6111,5,344,0,0, + 6111,6116,3,706,353,0,6112,6113,5,868,0,0,6113,6115,3,706,353,0, + 6114,6112,1,0,0,0,6115,6118,1,0,0,0,6116,6114,1,0,0,0,6116,6117, + 1,0,0,0,6117,6128,1,0,0,0,6118,6116,1,0,0,0,6119,6120,5,155,0,0, + 6120,6125,3,544,272,0,6121,6122,5,868,0,0,6122,6124,3,544,272,0, + 6123,6121,1,0,0,0,6124,6127,1,0,0,0,6125,6123,1,0,0,0,6125,6126, + 1,0,0,0,6126,6129,1,0,0,0,6127,6125,1,0,0,0,6128,6119,1,0,0,0,6128, + 6129,1,0,0,0,6129,543,1,0,0,0,6130,6131,7,92,0,0,6131,6132,3,702, + 351,0,6132,6133,5,857,0,0,6133,6134,3,804,402,0,6134,545,1,0,0,0, + 6135,6136,5,673,0,0,6136,6137,5,344,0,0,6137,6142,3,706,353,0,6138, + 6139,5,868,0,0,6139,6141,3,706,353,0,6140,6138,1,0,0,0,6141,6144, + 1,0,0,0,6142,6140,1,0,0,0,6142,6143,1,0,0,0,6143,547,1,0,0,0,6144, + 6142,1,0,0,0,6145,6146,5,432,0,0,6146,6147,5,534,0,0,6147,6148,3, + 706,353,0,6148,6149,5,603,0,0,6149,6150,5,882,0,0,6150,549,1,0,0, + 0,6151,6152,5,673,0,0,6152,6153,5,534,0,0,6153,6154,3,706,353,0, + 6154,551,1,0,0,0,6155,6156,5,713,0,0,6156,6157,5,450,0,0,6157,6158, + 5,360,0,0,6158,6160,5,367,0,0,6159,6161,5,857,0,0,6160,6159,1,0, + 0,0,6160,6161,1,0,0,0,6161,6162,1,0,0,0,6162,6186,5,882,0,0,6163, + 6164,5,713,0,0,6164,6165,5,433,0,0,6165,6166,5,68,0,0,6166,6167, + 3,676,338,0,6167,6168,5,423,0,0,6168,6169,5,20,0,0,6169,6176,5,882, + 0,0,6170,6171,5,360,0,0,6171,6173,5,367,0,0,6172,6174,5,857,0,0, + 6173,6172,1,0,0,0,6173,6174,1,0,0,0,6174,6175,1,0,0,0,6175,6177, + 5,882,0,0,6176,6170,1,0,0,0,6176,6177,1,0,0,0,6177,6183,1,0,0,0, + 6178,6180,5,144,0,0,6179,6181,5,502,0,0,6180,6179,1,0,0,0,6180,6181, + 1,0,0,0,6181,6182,1,0,0,0,6182,6184,5,169,0,0,6183,6178,1,0,0,0, + 6183,6184,1,0,0,0,6184,6186,1,0,0,0,6185,6155,1,0,0,0,6185,6163, + 1,0,0,0,6186,553,1,0,0,0,6187,6188,5,155,0,0,6188,6189,3,558,279, + 0,6189,6192,7,93,0,0,6190,6193,3,804,402,0,6191,6193,5,119,0,0,6192, + 6190,1,0,0,0,6192,6191,1,0,0,0,6193,6203,1,0,0,0,6194,6195,5,868, + 0,0,6195,6196,3,558,279,0,6196,6199,7,93,0,0,6197,6200,3,804,402, + 0,6198,6200,5,119,0,0,6199,6197,1,0,0,0,6199,6198,1,0,0,0,6200,6202, + 1,0,0,0,6201,6194,1,0,0,0,6202,6205,1,0,0,0,6203,6201,1,0,0,0,6203, + 6204,1,0,0,0,6204,6240,1,0,0,0,6205,6203,1,0,0,0,6206,6207,5,155, + 0,0,6207,6210,3,58,29,0,6208,6211,3,688,344,0,6209,6211,5,42,0,0, + 6210,6208,1,0,0,0,6210,6209,1,0,0,0,6211,6240,1,0,0,0,6212,6213, + 5,155,0,0,6213,6220,5,497,0,0,6214,6217,3,688,344,0,6215,6216,5, + 28,0,0,6216,6218,3,690,345,0,6217,6215,1,0,0,0,6217,6218,1,0,0,0, + 6218,6221,1,0,0,0,6219,6221,5,42,0,0,6220,6214,1,0,0,0,6220,6219, + 1,0,0,0,6221,6240,1,0,0,0,6222,6240,3,490,245,0,6223,6240,3,342, + 171,0,6224,6240,3,340,170,0,6225,6226,5,155,0,0,6226,6227,3,702, + 351,0,6227,6228,7,93,0,0,6228,6236,3,804,402,0,6229,6230,5,868,0, + 0,6230,6231,3,702,351,0,6231,6232,7,93,0,0,6232,6233,3,804,402,0, + 6233,6235,1,0,0,0,6234,6229,1,0,0,0,6235,6238,1,0,0,0,6236,6234, + 1,0,0,0,6236,6237,1,0,0,0,6237,6240,1,0,0,0,6238,6236,1,0,0,0,6239, + 6187,1,0,0,0,6239,6206,1,0,0,0,6239,6212,1,0,0,0,6239,6222,1,0,0, + 0,6239,6223,1,0,0,0,6239,6224,1,0,0,0,6239,6225,1,0,0,0,6240,555, + 1,0,0,0,6241,6242,5,157,0,0,6242,6243,7,63,0,0,6243,6426,5,452,0, + 0,6244,6245,5,157,0,0,6245,6246,7,94,0,0,6246,6249,5,386,0,0,6247, + 6248,5,80,0,0,6248,6250,5,882,0,0,6249,6247,1,0,0,0,6249,6250,1, + 0,0,0,6250,6253,1,0,0,0,6251,6252,5,68,0,0,6252,6254,3,712,356,0, + 6253,6251,1,0,0,0,6253,6254,1,0,0,0,6254,6262,1,0,0,0,6255,6259, + 5,100,0,0,6256,6257,3,712,356,0,6257,6258,5,868,0,0,6258,6260,1, + 0,0,0,6259,6256,1,0,0,0,6259,6260,1,0,0,0,6260,6261,1,0,0,0,6261, + 6263,3,712,356,0,6262,6255,1,0,0,0,6262,6263,1,0,0,0,6263,6265,1, + 0,0,0,6264,6266,3,390,195,0,6265,6264,1,0,0,0,6265,6266,1,0,0,0, + 6266,6426,1,0,0,0,6267,6268,5,157,0,0,6268,6270,3,560,280,0,6269, + 6271,3,562,281,0,6270,6269,1,0,0,0,6270,6271,1,0,0,0,6271,6426,1, + 0,0,0,6272,6274,5,157,0,0,6273,6275,5,392,0,0,6274,6273,1,0,0,0, + 6274,6275,1,0,0,0,6275,6277,1,0,0,0,6276,6278,5,408,0,0,6277,6276, + 1,0,0,0,6277,6278,1,0,0,0,6278,6279,1,0,0,0,6279,6280,7,47,0,0,6280, + 6281,7,95,0,0,6281,6284,3,652,326,0,6282,6283,7,95,0,0,6283,6285, + 3,628,314,0,6284,6282,1,0,0,0,6284,6285,1,0,0,0,6285,6287,1,0,0, + 0,6286,6288,3,562,281,0,6287,6286,1,0,0,0,6287,6288,1,0,0,0,6288, + 6426,1,0,0,0,6289,6290,5,157,0,0,6290,6291,5,34,0,0,6291,6293,7, + 0,0,0,6292,6294,3,760,380,0,6293,6292,1,0,0,0,6293,6294,1,0,0,0, + 6294,6295,1,0,0,0,6295,6426,3,628,314,0,6296,6297,5,157,0,0,6297, + 6298,5,34,0,0,6298,6299,7,96,0,0,6299,6426,3,702,351,0,6300,6301, + 5,157,0,0,6301,6302,5,34,0,0,6302,6303,5,409,0,0,6303,6426,3,632, + 316,0,6304,6305,5,157,0,0,6305,6306,5,34,0,0,6306,6307,5,684,0,0, + 6307,6426,3,636,318,0,6308,6309,5,157,0,0,6309,6310,5,34,0,0,6310, + 6311,5,173,0,0,6311,6426,3,652,326,0,6312,6313,5,157,0,0,6313,6314, + 5,34,0,0,6314,6315,5,678,0,0,6315,6426,3,684,342,0,6316,6317,5,157, + 0,0,6317,6318,5,380,0,0,6318,6319,3,692,346,0,6319,6320,7,97,0,0, + 6320,6426,1,0,0,0,6321,6322,5,157,0,0,6322,6426,3,564,282,0,6323, + 6324,5,157,0,0,6324,6332,7,98,0,0,6325,6329,5,100,0,0,6326,6327, + 3,712,356,0,6327,6328,5,868,0,0,6328,6330,1,0,0,0,6329,6326,1,0, + 0,0,6329,6330,1,0,0,0,6330,6331,1,0,0,0,6331,6333,3,712,356,0,6332, + 6325,1,0,0,0,6332,6333,1,0,0,0,6333,6426,1,0,0,0,6334,6335,5,157, + 0,0,6335,6336,5,262,0,0,6336,6337,5,866,0,0,6337,6338,5,850,0,0, + 6338,6339,5,867,0,0,6339,6426,7,98,0,0,6340,6341,5,157,0,0,6341, + 6344,3,566,283,0,6342,6343,7,95,0,0,6343,6345,3,628,314,0,6344,6342, + 1,0,0,0,6344,6345,1,0,0,0,6345,6347,1,0,0,0,6346,6348,3,562,281, + 0,6347,6346,1,0,0,0,6347,6348,1,0,0,0,6348,6426,1,0,0,0,6349,6350, + 5,157,0,0,6350,6351,5,132,0,0,6351,6352,5,336,0,0,6352,6426,3,702, + 351,0,6353,6354,5,157,0,0,6354,6355,5,409,0,0,6355,6356,5,336,0, + 0,6356,6426,3,632,316,0,6357,6358,5,157,0,0,6358,6365,5,414,0,0, + 6359,6360,5,65,0,0,6360,6363,3,656,328,0,6361,6362,5,188,0,0,6362, + 6364,3,654,327,0,6363,6361,1,0,0,0,6363,6364,1,0,0,0,6364,6366,1, + 0,0,0,6365,6359,1,0,0,0,6365,6366,1,0,0,0,6366,6426,1,0,0,0,6367, + 6369,5,157,0,0,6368,6370,5,392,0,0,6369,6368,1,0,0,0,6369,6370,1, + 0,0,0,6370,6371,1,0,0,0,6371,6372,7,99,0,0,6372,6373,7,95,0,0,6373, + 6376,3,652,326,0,6374,6375,7,95,0,0,6375,6377,3,628,314,0,6376,6374, + 1,0,0,0,6376,6377,1,0,0,0,6377,6380,1,0,0,0,6378,6379,5,192,0,0, + 6379,6381,3,804,402,0,6380,6378,1,0,0,0,6380,6381,1,0,0,0,6381,6426, + 1,0,0,0,6382,6383,5,157,0,0,6383,6384,5,516,0,0,6384,6387,5,752, + 0,0,6385,6386,7,95,0,0,6386,6388,3,628,314,0,6387,6385,1,0,0,0,6387, + 6388,1,0,0,0,6388,6390,1,0,0,0,6389,6391,3,562,281,0,6390,6389,1, + 0,0,0,6390,6391,1,0,0,0,6391,6426,1,0,0,0,6392,6393,5,157,0,0,6393, + 6402,5,545,0,0,6394,6399,3,568,284,0,6395,6396,5,868,0,0,6396,6398, + 3,568,284,0,6397,6395,1,0,0,0,6398,6401,1,0,0,0,6399,6397,1,0,0, + 0,6399,6400,1,0,0,0,6400,6403,1,0,0,0,6401,6399,1,0,0,0,6402,6394, + 1,0,0,0,6402,6403,1,0,0,0,6403,6407,1,0,0,0,6404,6405,5,65,0,0,6405, + 6406,5,548,0,0,6406,6408,3,712,356,0,6407,6404,1,0,0,0,6407,6408, + 1,0,0,0,6408,6415,1,0,0,0,6409,6410,5,100,0,0,6410,6413,3,712,356, + 0,6411,6412,5,509,0,0,6412,6414,3,712,356,0,6413,6411,1,0,0,0,6413, + 6414,1,0,0,0,6414,6416,1,0,0,0,6415,6409,1,0,0,0,6415,6416,1,0,0, + 0,6416,6426,1,0,0,0,6417,6418,5,157,0,0,6418,6419,7,64,0,0,6419, + 6421,5,645,0,0,6420,6422,3,390,195,0,6421,6420,1,0,0,0,6421,6422, + 1,0,0,0,6422,6426,1,0,0,0,6423,6424,5,157,0,0,6424,6426,5,564,0, + 0,6425,6241,1,0,0,0,6425,6244,1,0,0,0,6425,6267,1,0,0,0,6425,6272, + 1,0,0,0,6425,6289,1,0,0,0,6425,6296,1,0,0,0,6425,6300,1,0,0,0,6425, + 6304,1,0,0,0,6425,6308,1,0,0,0,6425,6312,1,0,0,0,6425,6316,1,0,0, + 0,6425,6321,1,0,0,0,6425,6323,1,0,0,0,6425,6334,1,0,0,0,6425,6340, + 1,0,0,0,6425,6349,1,0,0,0,6425,6353,1,0,0,0,6425,6357,1,0,0,0,6425, + 6367,1,0,0,0,6425,6382,1,0,0,0,6425,6392,1,0,0,0,6425,6417,1,0,0, + 0,6425,6423,1,0,0,0,6426,557,1,0,0,0,6427,6438,5,892,0,0,6428,6438, + 5,893,0,0,6429,6430,5,870,0,0,6430,6432,5,870,0,0,6431,6429,1,0, + 0,0,6431,6432,1,0,0,0,6432,6433,1,0,0,0,6433,6435,7,100,0,0,6434, + 6431,1,0,0,0,6434,6435,1,0,0,0,6435,6436,1,0,0,0,6436,6438,3,706, + 353,0,6437,6427,1,0,0,0,6437,6428,1,0,0,0,6437,6434,1,0,0,0,6438, + 559,1,0,0,0,6439,6440,5,26,0,0,6440,6454,5,155,0,0,6441,6454,5,823, + 0,0,6442,6454,5,824,0,0,6443,6454,5,40,0,0,6444,6454,5,153,0,0,6445, + 6446,5,409,0,0,6446,6454,5,645,0,0,6447,6448,5,132,0,0,6448,6454, + 5,645,0,0,6449,6451,7,62,0,0,6450,6449,1,0,0,0,6450,6451,1,0,0,0, + 6451,6452,1,0,0,0,6452,6454,7,101,0,0,6453,6439,1,0,0,0,6453,6441, + 1,0,0,0,6453,6442,1,0,0,0,6453,6443,1,0,0,0,6453,6444,1,0,0,0,6453, + 6445,1,0,0,0,6453,6447,1,0,0,0,6453,6450,1,0,0,0,6454,561,1,0,0, + 0,6455,6456,5,99,0,0,6456,6460,5,882,0,0,6457,6458,5,192,0,0,6458, + 6460,3,804,402,0,6459,6455,1,0,0,0,6459,6457,1,0,0,0,6460,563,1, + 0,0,0,6461,6463,5,647,0,0,6462,6461,1,0,0,0,6462,6463,1,0,0,0,6463, + 6464,1,0,0,0,6464,6479,5,381,0,0,6465,6466,5,453,0,0,6466,6479,5, + 645,0,0,6467,6479,5,536,0,0,6468,6479,5,734,0,0,6469,6471,5,408, + 0,0,6470,6469,1,0,0,0,6470,6471,1,0,0,0,6471,6472,1,0,0,0,6472,6479, + 5,544,0,0,6473,6479,5,546,0,0,6474,6475,5,598,0,0,6475,6479,5,422, + 0,0,6476,6479,5,312,0,0,6477,6479,5,356,0,0,6478,6462,1,0,0,0,6478, + 6465,1,0,0,0,6478,6467,1,0,0,0,6478,6468,1,0,0,0,6478,6470,1,0,0, + 0,6478,6473,1,0,0,0,6478,6474,1,0,0,0,6478,6476,1,0,0,0,6478,6477, + 1,0,0,0,6479,565,1,0,0,0,6480,6492,5,386,0,0,6481,6482,5,173,0,0, + 6482,6492,5,645,0,0,6483,6485,5,392,0,0,6484,6483,1,0,0,0,6484,6485, + 1,0,0,0,6485,6487,1,0,0,0,6486,6488,5,408,0,0,6487,6486,1,0,0,0, + 6487,6488,1,0,0,0,6488,6489,1,0,0,0,6489,6492,5,752,0,0,6490,6492, + 5,667,0,0,6491,6480,1,0,0,0,6491,6481,1,0,0,0,6491,6484,1,0,0,0, + 6491,6490,1,0,0,0,6492,567,1,0,0,0,6493,6506,5,7,0,0,6494,6495,5, + 320,0,0,6495,6506,5,437,0,0,6496,6497,5,355,0,0,6497,6506,5,656, + 0,0,6498,6506,5,358,0,0,6499,6506,5,439,0,0,6500,6506,5,802,0,0, + 6501,6502,5,521,0,0,6502,6506,5,397,0,0,6503,6506,5,605,0,0,6504, + 6506,5,655,0,0,6505,6493,1,0,0,0,6505,6494,1,0,0,0,6505,6496,1,0, + 0,0,6505,6498,1,0,0,0,6505,6499,1,0,0,0,6505,6500,1,0,0,0,6505,6501, + 1,0,0,0,6505,6503,1,0,0,0,6505,6504,1,0,0,0,6506,569,1,0,0,0,6507, + 6508,5,318,0,0,6508,6509,5,882,0,0,6509,571,1,0,0,0,6510,6511,5, + 324,0,0,6511,6529,5,82,0,0,6512,6517,3,592,296,0,6513,6514,5,868, + 0,0,6514,6516,3,592,296,0,6515,6513,1,0,0,0,6516,6519,1,0,0,0,6517, + 6515,1,0,0,0,6517,6518,1,0,0,0,6518,6530,1,0,0,0,6519,6517,1,0,0, + 0,6520,6521,3,652,326,0,6521,6522,5,130,0,0,6522,6525,5,866,0,0, + 6523,6526,3,670,335,0,6524,6526,5,7,0,0,6525,6523,1,0,0,0,6525,6524, + 1,0,0,0,6526,6527,1,0,0,0,6527,6528,5,867,0,0,6528,6530,1,0,0,0, + 6529,6512,1,0,0,0,6529,6520,1,0,0,0,6530,6531,1,0,0,0,6531,6532, + 5,80,0,0,6532,6533,3,628,314,0,6533,573,1,0,0,0,6534,6536,5,404, + 0,0,6535,6537,3,538,269,0,6536,6535,1,0,0,0,6536,6537,1,0,0,0,6537, + 6538,1,0,0,0,6538,6543,3,594,297,0,6539,6540,5,868,0,0,6540,6542, + 3,594,297,0,6541,6539,1,0,0,0,6542,6545,1,0,0,0,6543,6541,1,0,0, + 0,6543,6544,1,0,0,0,6544,575,1,0,0,0,6545,6543,1,0,0,0,6546,6548, + 5,94,0,0,6547,6549,7,102,0,0,6548,6547,1,0,0,0,6548,6549,1,0,0,0, + 6549,6550,1,0,0,0,6550,6551,3,804,402,0,6551,577,1,0,0,0,6552,6553, + 5,103,0,0,6553,6554,5,82,0,0,6554,6555,5,88,0,0,6555,6556,5,324, + 0,0,6556,6561,3,598,299,0,6557,6558,5,868,0,0,6558,6560,3,598,299, + 0,6559,6557,1,0,0,0,6560,6563,1,0,0,0,6561,6559,1,0,0,0,6561,6562, + 1,0,0,0,6562,579,1,0,0,0,6563,6561,1,0,0,0,6564,6565,5,575,0,0,6565, + 6570,3,582,291,0,6566,6567,5,868,0,0,6567,6569,3,582,291,0,6568, + 6566,1,0,0,0,6569,6572,1,0,0,0,6570,6568,1,0,0,0,6570,6571,1,0,0, + 0,6571,581,1,0,0,0,6572,6570,1,0,0,0,6573,6579,5,453,0,0,6574,6579, + 5,563,0,0,6575,6576,5,548,0,0,6576,6579,5,324,0,0,6577,6579,5,598, + 0,0,6578,6573,1,0,0,0,6578,6574,1,0,0,0,6578,6575,1,0,0,0,6578,6577, + 1,0,0,0,6579,583,1,0,0,0,6580,6581,5,575,0,0,6581,6586,5,531,0,0, + 6582,6584,3,758,379,0,6583,6582,1,0,0,0,6583,6584,1,0,0,0,6584,6585, + 1,0,0,0,6585,6587,3,706,353,0,6586,6583,1,0,0,0,6586,6587,1,0,0, + 0,6587,585,1,0,0,0,6588,6589,5,575,0,0,6589,6591,7,64,0,0,6590,6592, + 5,7,0,0,6591,6590,1,0,0,0,6591,6592,1,0,0,0,6592,6594,1,0,0,0,6593, + 6595,3,390,195,0,6594,6593,1,0,0,0,6594,6595,1,0,0,0,6595,587,1, + 0,0,0,6596,6597,5,576,0,0,6597,589,1,0,0,0,6598,6599,5,749,0,0,6599, + 591,1,0,0,0,6600,6606,3,652,326,0,6601,6602,7,19,0,0,6602,6603,5, + 866,0,0,6603,6604,3,640,320,0,6604,6605,5,867,0,0,6605,6607,1,0, + 0,0,6606,6601,1,0,0,0,6606,6607,1,0,0,0,6607,593,1,0,0,0,6608,6627, + 5,366,0,0,6609,6627,5,422,0,0,6610,6612,7,103,0,0,6611,6610,1,0, + 0,0,6611,6612,1,0,0,0,6612,6613,1,0,0,0,6613,6627,5,452,0,0,6614, + 6627,5,517,0,0,6615,6627,5,734,0,0,6616,6617,5,548,0,0,6617,6627, + 5,324,0,0,6618,6627,5,645,0,0,6619,6627,5,680,0,0,6620,6624,5,752, + 0,0,6621,6622,5,194,0,0,6622,6623,5,135,0,0,6623,6625,5,104,0,0, + 6624,6621,1,0,0,0,6624,6625,1,0,0,0,6625,6627,1,0,0,0,6626,6608, + 1,0,0,0,6626,6609,1,0,0,0,6626,6611,1,0,0,0,6626,6614,1,0,0,0,6626, + 6615,1,0,0,0,6626,6616,1,0,0,0,6626,6618,1,0,0,0,6626,6619,1,0,0, + 0,6626,6620,1,0,0,0,6627,6641,1,0,0,0,6628,6629,5,556,0,0,6629,6631, + 5,452,0,0,6630,6632,3,390,195,0,6631,6630,1,0,0,0,6631,6632,1,0, + 0,0,6632,6641,1,0,0,0,6633,6635,7,61,0,0,6634,6636,3,650,325,0,6635, + 6634,1,0,0,0,6635,6636,1,0,0,0,6636,6638,1,0,0,0,6637,6639,3,596, + 298,0,6638,6637,1,0,0,0,6638,6639,1,0,0,0,6639,6641,1,0,0,0,6640, + 6626,1,0,0,0,6640,6628,1,0,0,0,6640,6633,1,0,0,0,6641,595,1,0,0, + 0,6642,6643,5,194,0,0,6643,6644,5,135,0,0,6644,6648,5,104,0,0,6645, + 6646,5,65,0,0,6646,6648,5,391,0,0,6647,6642,1,0,0,0,6647,6645,1, + 0,0,0,6648,597,1,0,0,0,6649,6657,3,652,326,0,6650,6651,5,130,0,0, + 6651,6654,5,866,0,0,6652,6655,3,670,335,0,6653,6655,5,7,0,0,6654, + 6652,1,0,0,0,6654,6653,1,0,0,0,6655,6656,1,0,0,0,6656,6658,5,867, + 0,0,6657,6650,1,0,0,0,6657,6658,1,0,0,0,6658,6666,1,0,0,0,6659,6661, + 7,19,0,0,6660,6659,1,0,0,0,6660,6661,1,0,0,0,6661,6662,1,0,0,0,6662, + 6663,5,866,0,0,6663,6664,3,640,320,0,6664,6665,5,867,0,0,6665,6667, + 1,0,0,0,6666,6660,1,0,0,0,6666,6667,1,0,0,0,6667,6670,1,0,0,0,6668, + 6669,5,79,0,0,6669,6671,5,446,0,0,6670,6668,1,0,0,0,6670,6671,1, + 0,0,0,6671,599,1,0,0,0,6672,6673,7,104,0,0,6673,6676,3,652,326,0, + 6674,6677,3,662,331,0,6675,6677,5,882,0,0,6676,6674,1,0,0,0,6676, + 6675,1,0,0,0,6676,6677,1,0,0,0,6677,601,1,0,0,0,6678,6684,7,104, + 0,0,6679,6685,5,392,0,0,6680,6685,5,528,0,0,6681,6682,5,826,0,0, + 6682,6683,5,857,0,0,6683,6685,7,105,0,0,6684,6679,1,0,0,0,6684,6680, + 1,0,0,0,6684,6681,1,0,0,0,6684,6685,1,0,0,0,6685,6686,1,0,0,0,6686, + 6687,3,624,312,0,6687,603,1,0,0,0,6688,6689,7,104,0,0,6689,6693, + 5,10,0,0,6690,6691,5,826,0,0,6691,6692,5,857,0,0,6692,6694,5,666, + 0,0,6693,6690,1,0,0,0,6693,6694,1,0,0,0,6694,6695,1,0,0,0,6695,6696, + 3,210,105,0,6696,605,1,0,0,0,6697,6698,5,419,0,0,6698,6699,5,882, + 0,0,6699,607,1,0,0,0,6700,6701,5,187,0,0,6701,6702,3,628,314,0,6702, + 609,1,0,0,0,6703,6711,5,158,0,0,6704,6706,5,164,0,0,6705,6707,5, + 682,0,0,6706,6705,1,0,0,0,6706,6707,1,0,0,0,6707,6708,1,0,0,0,6708, + 6712,3,716,358,0,6709,6712,5,889,0,0,6710,6712,5,890,0,0,6711,6704, + 1,0,0,0,6711,6709,1,0,0,0,6711,6710,1,0,0,0,6712,6722,1,0,0,0,6713, + 6714,5,155,0,0,6714,6719,3,614,307,0,6715,6716,5,868,0,0,6716,6718, + 3,614,307,0,6717,6715,1,0,0,0,6718,6721,1,0,0,0,6719,6717,1,0,0, + 0,6719,6720,1,0,0,0,6720,6723,1,0,0,0,6721,6719,1,0,0,0,6722,6713, + 1,0,0,0,6722,6723,1,0,0,0,6723,611,1,0,0,0,6724,6732,5,145,0,0,6725, + 6727,5,164,0,0,6726,6728,5,682,0,0,6727,6726,1,0,0,0,6727,6728,1, + 0,0,0,6728,6729,1,0,0,0,6729,6733,3,716,358,0,6730,6733,5,889,0, + 0,6731,6733,5,890,0,0,6732,6725,1,0,0,0,6732,6730,1,0,0,0,6732,6731, + 1,0,0,0,6732,6733,1,0,0,0,6733,6743,1,0,0,0,6734,6735,5,155,0,0, + 6735,6740,3,614,307,0,6736,6737,5,868,0,0,6737,6739,3,614,307,0, + 6738,6736,1,0,0,0,6739,6742,1,0,0,0,6740,6738,1,0,0,0,6740,6741, + 1,0,0,0,6741,6744,1,0,0,0,6742,6740,1,0,0,0,6743,6734,1,0,0,0,6743, + 6744,1,0,0,0,6744,613,1,0,0,0,6745,6746,7,106,0,0,6746,6751,5,857, + 0,0,6747,6752,3,716,358,0,6748,6752,5,883,0,0,6749,6752,3,686,343, + 0,6750,6752,3,708,354,0,6751,6747,1,0,0,0,6751,6748,1,0,0,0,6751, + 6749,1,0,0,0,6751,6750,1,0,0,0,6752,615,1,0,0,0,6753,6755,5,194, + 0,0,6754,6756,5,552,0,0,6755,6754,1,0,0,0,6755,6756,1,0,0,0,6756, + 6757,1,0,0,0,6757,6762,3,52,26,0,6758,6759,5,868,0,0,6759,6761,3, + 52,26,0,6760,6758,1,0,0,0,6761,6764,1,0,0,0,6762,6760,1,0,0,0,6762, + 6763,1,0,0,0,6763,617,1,0,0,0,6764,6762,1,0,0,0,6765,6766,5,173, + 0,0,6766,6768,3,652,326,0,6767,6769,3,258,129,0,6768,6767,1,0,0, + 0,6768,6769,1,0,0,0,6769,6771,1,0,0,0,6770,6772,3,318,159,0,6771, + 6770,1,0,0,0,6771,6772,1,0,0,0,6772,619,1,0,0,0,6773,6775,5,72,0, + 0,6774,6776,7,107,0,0,6775,6774,1,0,0,0,6775,6776,1,0,0,0,6776,6777, + 1,0,0,0,6777,6809,5,48,0,0,6778,6779,3,558,279,0,6779,6780,5,857, + 0,0,6780,6788,7,108,0,0,6781,6782,5,868,0,0,6782,6783,3,558,279, + 0,6783,6784,5,857,0,0,6784,6785,7,108,0,0,6785,6787,1,0,0,0,6786, + 6781,1,0,0,0,6787,6790,1,0,0,0,6788,6786,1,0,0,0,6788,6789,1,0,0, + 0,6789,6810,1,0,0,0,6790,6788,1,0,0,0,6791,6794,5,30,0,0,6792,6795, + 3,712,356,0,6793,6795,3,558,279,0,6794,6792,1,0,0,0,6794,6793,1, + 0,0,0,6795,6796,1,0,0,0,6796,6797,3,558,279,0,6797,6798,5,857,0, + 0,6798,6806,3,622,311,0,6799,6800,5,868,0,0,6800,6801,3,558,279, + 0,6801,6802,5,857,0,0,6802,6803,3,622,311,0,6803,6805,1,0,0,0,6804, + 6799,1,0,0,0,6805,6808,1,0,0,0,6806,6804,1,0,0,0,6806,6807,1,0,0, + 0,6807,6810,1,0,0,0,6808,6806,1,0,0,0,6809,6778,1,0,0,0,6809,6791, + 1,0,0,0,6810,621,1,0,0,0,6811,6812,7,109,0,0,6812,623,1,0,0,0,6813, + 6819,3,210,105,0,6814,6819,3,186,93,0,6815,6819,3,192,96,0,6816, + 6819,3,208,104,0,6817,6819,3,220,110,0,6818,6813,1,0,0,0,6818,6814, + 1,0,0,0,6818,6815,1,0,0,0,6818,6816,1,0,0,0,6818,6817,1,0,0,0,6819, + 6824,1,0,0,0,6820,6821,5,65,0,0,6821,6822,5,349,0,0,6822,6824,3, + 706,353,0,6823,6818,1,0,0,0,6823,6820,1,0,0,0,6824,625,1,0,0,0,6825, + 6826,3,702,351,0,6826,627,1,0,0,0,6827,6828,3,702,351,0,6828,629, + 1,0,0,0,6829,6830,3,702,351,0,6830,631,1,0,0,0,6831,6832,3,702,351, + 0,6832,633,1,0,0,0,6833,6834,3,702,351,0,6834,635,1,0,0,0,6835,6836, + 3,702,351,0,6836,637,1,0,0,0,6837,6838,3,706,353,0,6838,639,1,0, + 0,0,6839,6844,3,642,321,0,6840,6841,5,868,0,0,6841,6843,3,642,321, + 0,6842,6840,1,0,0,0,6843,6846,1,0,0,0,6844,6842,1,0,0,0,6844,6845, + 1,0,0,0,6845,641,1,0,0,0,6846,6844,1,0,0,0,6847,6848,3,706,353,0, + 6848,643,1,0,0,0,6849,6850,3,706,353,0,6850,645,1,0,0,0,6851,6852, + 3,706,353,0,6852,647,1,0,0,0,6853,6854,3,702,351,0,6854,649,1,0, + 0,0,6855,6860,3,652,326,0,6856,6857,5,868,0,0,6857,6859,3,652,326, + 0,6858,6856,1,0,0,0,6859,6862,1,0,0,0,6860,6858,1,0,0,0,6860,6861, + 1,0,0,0,6861,651,1,0,0,0,6862,6860,1,0,0,0,6863,6864,3,702,351,0, + 6864,653,1,0,0,0,6865,6870,3,656,328,0,6866,6867,5,868,0,0,6867, + 6869,3,656,328,0,6868,6866,1,0,0,0,6869,6872,1,0,0,0,6870,6868,1, + 0,0,0,6870,6871,1,0,0,0,6871,655,1,0,0,0,6872,6870,1,0,0,0,6873, + 6876,3,684,342,0,6874,6876,3,706,353,0,6875,6873,1,0,0,0,6875,6874, + 1,0,0,0,6876,657,1,0,0,0,6877,6882,3,706,353,0,6878,6880,3,710,355, + 0,6879,6881,3,710,355,0,6880,6879,1,0,0,0,6880,6881,1,0,0,0,6881, + 6883,1,0,0,0,6882,6878,1,0,0,0,6882,6883,1,0,0,0,6883,6892,1,0,0, + 0,6884,6886,9,0,0,0,6885,6884,1,0,0,0,6885,6886,1,0,0,0,6886,6887, + 1,0,0,0,6887,6889,3,710,355,0,6888,6890,3,710,355,0,6889,6888,1, + 0,0,0,6889,6890,1,0,0,0,6890,6892,1,0,0,0,6891,6877,1,0,0,0,6891, + 6885,1,0,0,0,6892,659,1,0,0,0,6893,6898,3,662,331,0,6894,6895,5, + 868,0,0,6895,6897,3,662,331,0,6896,6894,1,0,0,0,6897,6900,1,0,0, + 0,6898,6896,1,0,0,0,6898,6899,1,0,0,0,6899,661,1,0,0,0,6900,6898, + 1,0,0,0,6901,6906,3,706,353,0,6902,6904,3,710,355,0,6903,6905,3, + 710,355,0,6904,6903,1,0,0,0,6904,6905,1,0,0,0,6905,6907,1,0,0,0, + 6906,6902,1,0,0,0,6906,6907,1,0,0,0,6907,6917,1,0,0,0,6908,6910, + 9,0,0,0,6909,6908,1,0,0,0,6909,6910,1,0,0,0,6910,6911,1,0,0,0,6911, + 6913,3,710,355,0,6912,6914,3,710,355,0,6913,6912,1,0,0,0,6913,6914, + 1,0,0,0,6914,6917,1,0,0,0,6915,6917,4,331,3,0,6916,6901,1,0,0,0, + 6916,6909,1,0,0,0,6916,6915,1,0,0,0,6917,663,1,0,0,0,6918,6919,3, + 706,353,0,6919,665,1,0,0,0,6920,6921,3,706,353,0,6921,667,1,0,0, + 0,6922,6923,3,706,353,0,6923,669,1,0,0,0,6924,6929,3,672,336,0,6925, + 6926,5,868,0,0,6926,6928,3,672,336,0,6927,6925,1,0,0,0,6928,6931, + 1,0,0,0,6929,6927,1,0,0,0,6929,6930,1,0,0,0,6930,671,1,0,0,0,6931, + 6929,1,0,0,0,6932,6933,3,706,353,0,6933,673,1,0,0,0,6934,6939,3, + 706,353,0,6935,6936,5,866,0,0,6936,6937,3,712,356,0,6937,6938,5, + 867,0,0,6938,6940,1,0,0,0,6939,6935,1,0,0,0,6939,6940,1,0,0,0,6940, + 6943,1,0,0,0,6941,6943,3,804,402,0,6942,6934,1,0,0,0,6942,6941,1, + 0,0,0,6943,6945,1,0,0,0,6944,6946,7,55,0,0,6945,6944,1,0,0,0,6945, + 6946,1,0,0,0,6946,675,1,0,0,0,6947,6948,3,678,339,0,6948,6949,5, + 878,0,0,6949,6950,3,712,356,0,6950,677,1,0,0,0,6951,6952,3,680,340, + 0,6952,6953,5,891,0,0,6953,679,1,0,0,0,6954,6959,5,882,0,0,6955, + 6959,5,889,0,0,6956,6959,5,704,0,0,6957,6959,3,834,417,0,6958,6954, + 1,0,0,0,6958,6955,1,0,0,0,6958,6956,1,0,0,0,6958,6957,1,0,0,0,6959, + 681,1,0,0,0,6960,6961,7,110,0,0,6961,683,1,0,0,0,6962,6964,3,680, + 340,0,6963,6965,3,682,341,0,6964,6963,1,0,0,0,6964,6965,1,0,0,0, + 6965,6968,1,0,0,0,6966,6968,3,60,30,0,6967,6962,1,0,0,0,6967,6966, + 1,0,0,0,6968,685,1,0,0,0,6969,6970,7,111,0,0,6970,687,1,0,0,0,6971, + 6976,5,228,0,0,6972,6976,3,824,412,0,6973,6976,5,882,0,0,6974,6976, + 5,879,0,0,6975,6971,1,0,0,0,6975,6972,1,0,0,0,6975,6973,1,0,0,0, + 6975,6974,1,0,0,0,6976,689,1,0,0,0,6977,6978,3,706,353,0,6978,691, + 1,0,0,0,6979,6983,3,694,347,0,6980,6983,5,889,0,0,6981,6983,5,882, + 0,0,6982,6979,1,0,0,0,6982,6980,1,0,0,0,6982,6981,1,0,0,0,6983,693, + 1,0,0,0,6984,6985,7,112,0,0,6985,695,1,0,0,0,6986,6987,3,712,356, + 0,6987,6988,5,854,0,0,6988,6989,3,712,356,0,6989,6990,5,854,0,0, + 6990,6991,3,712,356,0,6991,6992,5,854,0,0,6992,6993,3,712,356,0, + 6993,6994,5,854,0,0,6994,7000,3,712,356,0,6995,6996,5,878,0,0,6996, + 6997,3,712,356,0,6997,6998,5,854,0,0,6998,6999,3,712,356,0,6999, + 7001,1,0,0,0,7000,6995,1,0,0,0,7001,7002,1,0,0,0,7002,7000,1,0,0, + 0,7002,7003,1,0,0,0,7003,697,1,0,0,0,7004,7011,3,700,350,0,7005, + 7006,5,868,0,0,7006,7009,3,700,350,0,7007,7008,5,868,0,0,7008,7010, + 3,712,356,0,7009,7007,1,0,0,0,7009,7010,1,0,0,0,7010,7012,1,0,0, + 0,7011,7005,1,0,0,0,7011,7012,1,0,0,0,7012,699,1,0,0,0,7013,7021, + 5,882,0,0,7014,7021,5,887,0,0,7015,7017,5,884,0,0,7016,7015,1,0, + 0,0,7017,7018,1,0,0,0,7018,7016,1,0,0,0,7018,7019,1,0,0,0,7019,7021, + 1,0,0,0,7020,7013,1,0,0,0,7020,7014,1,0,0,0,7020,7016,1,0,0,0,7021, + 701,1,0,0,0,7022,7024,3,706,353,0,7023,7025,3,710,355,0,7024,7023, + 1,0,0,0,7024,7025,1,0,0,0,7025,703,1,0,0,0,7026,7031,3,706,353,0, + 7027,7028,5,868,0,0,7028,7030,3,706,353,0,7029,7027,1,0,0,0,7030, + 7033,1,0,0,0,7031,7029,1,0,0,0,7031,7032,1,0,0,0,7032,705,1,0,0, + 0,7033,7031,1,0,0,0,7034,7038,3,708,354,0,7035,7038,5,879,0,0,7036, + 7038,5,882,0,0,7037,7034,1,0,0,0,7037,7035,1,0,0,0,7037,7036,1,0, + 0,0,7038,707,1,0,0,0,7039,7049,5,889,0,0,7040,7049,3,824,412,0,7041, + 7049,3,826,413,0,7042,7049,3,694,347,0,7043,7049,3,828,414,0,7044, + 7049,3,830,415,0,7045,7049,3,832,416,0,7046,7049,3,834,417,0,7047, + 7049,3,796,398,0,7048,7039,1,0,0,0,7048,7040,1,0,0,0,7048,7041,1, + 0,0,0,7048,7042,1,0,0,0,7048,7043,1,0,0,0,7048,7044,1,0,0,0,7048, + 7045,1,0,0,0,7048,7046,1,0,0,0,7048,7047,1,0,0,0,7049,709,1,0,0, + 0,7050,7051,5,865,0,0,7051,7055,5,889,0,0,7052,7053,5,865,0,0,7053, + 7055,3,706,353,0,7054,7050,1,0,0,0,7054,7052,1,0,0,0,7055,711,1, + 0,0,0,7056,7057,7,113,0,0,7057,713,1,0,0,0,7058,7061,5,880,0,0,7059, + 7061,3,712,356,0,7060,7058,1,0,0,0,7060,7059,1,0,0,0,7061,715,1, + 0,0,0,7062,7064,5,888,0,0,7063,7062,1,0,0,0,7063,7064,1,0,0,0,7064, + 7065,1,0,0,0,7065,7068,5,882,0,0,7066,7068,5,881,0,0,7067,7063,1, + 0,0,0,7067,7066,1,0,0,0,7068,7070,1,0,0,0,7069,7071,5,882,0,0,7070, + 7069,1,0,0,0,7071,7072,1,0,0,0,7072,7070,1,0,0,0,7072,7073,1,0,0, + 0,7073,7086,1,0,0,0,7074,7076,5,888,0,0,7075,7074,1,0,0,0,7075,7076, + 1,0,0,0,7076,7077,1,0,0,0,7077,7080,5,882,0,0,7078,7080,5,881,0, + 0,7079,7075,1,0,0,0,7079,7078,1,0,0,0,7080,7083,1,0,0,0,7081,7082, + 5,28,0,0,7082,7084,3,690,345,0,7083,7081,1,0,0,0,7083,7084,1,0,0, + 0,7084,7086,1,0,0,0,7085,7067,1,0,0,0,7085,7079,1,0,0,0,7086,717, + 1,0,0,0,7087,7088,7,114,0,0,7088,719,1,0,0,0,7089,7091,5,888,0,0, + 7090,7089,1,0,0,0,7090,7091,1,0,0,0,7091,7092,1,0,0,0,7092,7093, + 5,884,0,0,7093,721,1,0,0,0,7094,7096,5,114,0,0,7095,7094,1,0,0,0, + 7095,7096,1,0,0,0,7096,7097,1,0,0,0,7097,7098,7,115,0,0,7098,723, + 1,0,0,0,7099,7112,3,716,358,0,7100,7112,3,712,356,0,7101,7102,5, + 854,0,0,7102,7112,3,712,356,0,7103,7112,3,720,360,0,7104,7112,3, + 718,359,0,7105,7112,5,885,0,0,7106,7112,5,887,0,0,7107,7109,5,114, + 0,0,7108,7107,1,0,0,0,7108,7109,1,0,0,0,7109,7110,1,0,0,0,7110,7112, + 7,115,0,0,7111,7099,1,0,0,0,7111,7100,1,0,0,0,7111,7101,1,0,0,0, + 7111,7103,1,0,0,0,7111,7104,1,0,0,0,7111,7105,1,0,0,0,7111,7106, + 1,0,0,0,7111,7108,1,0,0,0,7112,725,1,0,0,0,7113,7115,7,116,0,0,7114, + 7116,5,240,0,0,7115,7114,1,0,0,0,7115,7116,1,0,0,0,7116,7118,1,0, + 0,0,7117,7119,3,732,366,0,7118,7117,1,0,0,0,7118,7119,1,0,0,0,7119, + 7121,1,0,0,0,7120,7122,5,228,0,0,7121,7120,1,0,0,0,7121,7122,1,0, + 0,0,7122,7126,1,0,0,0,7123,7124,3,58,29,0,7124,7125,3,688,344,0, + 7125,7127,1,0,0,0,7126,7123,1,0,0,0,7126,7127,1,0,0,0,7127,7131, + 1,0,0,0,7128,7129,5,28,0,0,7129,7132,3,690,345,0,7130,7132,5,228, + 0,0,7131,7128,1,0,0,0,7131,7130,1,0,0,0,7131,7132,1,0,0,0,7132,7240, + 1,0,0,0,7133,7134,5,227,0,0,7134,7135,7,117,0,0,7135,7137,5,240, + 0,0,7136,7138,3,732,366,0,7137,7136,1,0,0,0,7137,7138,1,0,0,0,7138, + 7140,1,0,0,0,7139,7141,5,228,0,0,7140,7139,1,0,0,0,7140,7141,1,0, + 0,0,7141,7240,1,0,0,0,7142,7143,5,227,0,0,7143,7145,7,118,0,0,7144, + 7146,3,732,366,0,7145,7144,1,0,0,0,7145,7146,1,0,0,0,7146,7148,1, + 0,0,0,7147,7149,5,228,0,0,7148,7147,1,0,0,0,7148,7149,1,0,0,0,7149, + 7240,1,0,0,0,7150,7151,5,498,0,0,7151,7153,5,225,0,0,7152,7154,3, + 732,366,0,7153,7152,1,0,0,0,7153,7154,1,0,0,0,7154,7156,1,0,0,0, + 7155,7157,5,228,0,0,7156,7155,1,0,0,0,7156,7157,1,0,0,0,7157,7240, + 1,0,0,0,7158,7160,7,119,0,0,7159,7161,3,732,366,0,7160,7159,1,0, + 0,0,7160,7161,1,0,0,0,7161,7165,1,0,0,0,7162,7164,7,120,0,0,7163, + 7162,1,0,0,0,7164,7167,1,0,0,0,7165,7163,1,0,0,0,7165,7166,1,0,0, + 0,7166,7240,1,0,0,0,7167,7165,1,0,0,0,7168,7170,5,210,0,0,7169,7171, + 3,734,367,0,7170,7169,1,0,0,0,7170,7171,1,0,0,0,7171,7175,1,0,0, + 0,7172,7174,7,120,0,0,7173,7172,1,0,0,0,7174,7177,1,0,0,0,7175,7173, + 1,0,0,0,7175,7176,1,0,0,0,7176,7240,1,0,0,0,7177,7175,1,0,0,0,7178, + 7180,5,211,0,0,7179,7181,5,212,0,0,7180,7179,1,0,0,0,7180,7181,1, + 0,0,0,7181,7183,1,0,0,0,7182,7184,3,734,367,0,7183,7182,1,0,0,0, + 7183,7184,1,0,0,0,7184,7188,1,0,0,0,7185,7187,7,120,0,0,7186,7185, + 1,0,0,0,7187,7190,1,0,0,0,7188,7186,1,0,0,0,7188,7189,1,0,0,0,7189, + 7240,1,0,0,0,7190,7188,1,0,0,0,7191,7193,7,121,0,0,7192,7194,3,736, + 368,0,7193,7192,1,0,0,0,7193,7194,1,0,0,0,7194,7198,1,0,0,0,7195, + 7197,7,120,0,0,7196,7195,1,0,0,0,7197,7200,1,0,0,0,7198,7196,1,0, + 0,0,7198,7199,1,0,0,0,7199,7240,1,0,0,0,7200,7198,1,0,0,0,7201,7240, + 7,122,0,0,7202,7204,7,123,0,0,7203,7205,3,732,366,0,7204,7203,1, + 0,0,0,7204,7205,1,0,0,0,7205,7240,1,0,0,0,7206,7207,7,124,0,0,7207, + 7209,3,728,364,0,7208,7210,5,228,0,0,7209,7208,1,0,0,0,7209,7210, + 1,0,0,0,7210,7214,1,0,0,0,7211,7212,3,58,29,0,7212,7213,3,688,344, + 0,7213,7215,1,0,0,0,7214,7211,1,0,0,0,7214,7215,1,0,0,0,7215,7240, + 1,0,0,0,7216,7219,7,125,0,0,7217,7218,5,834,0,0,7218,7220,3,712, + 356,0,7219,7217,1,0,0,0,7219,7220,1,0,0,0,7220,7240,1,0,0,0,7221, + 7223,5,233,0,0,7222,7224,5,225,0,0,7223,7222,1,0,0,0,7223,7224,1, + 0,0,0,7224,7226,1,0,0,0,7225,7227,5,228,0,0,7226,7225,1,0,0,0,7226, + 7227,1,0,0,0,7227,7231,1,0,0,0,7228,7229,3,58,29,0,7229,7230,3,688, + 344,0,7230,7232,1,0,0,0,7231,7228,1,0,0,0,7231,7232,1,0,0,0,7232, + 7235,1,0,0,0,7233,7234,5,28,0,0,7234,7236,3,690,345,0,7235,7233, + 1,0,0,0,7235,7236,1,0,0,0,7236,7240,1,0,0,0,7237,7238,5,233,0,0, + 7238,7240,5,229,0,0,7239,7113,1,0,0,0,7239,7133,1,0,0,0,7239,7142, + 1,0,0,0,7239,7150,1,0,0,0,7239,7158,1,0,0,0,7239,7168,1,0,0,0,7239, + 7178,1,0,0,0,7239,7191,1,0,0,0,7239,7201,1,0,0,0,7239,7202,1,0,0, + 0,7239,7206,1,0,0,0,7239,7216,1,0,0,0,7239,7221,1,0,0,0,7239,7237, + 1,0,0,0,7240,727,1,0,0,0,7241,7242,5,866,0,0,7242,7247,5,882,0,0, + 7243,7244,5,868,0,0,7244,7246,5,882,0,0,7245,7243,1,0,0,0,7246,7249, + 1,0,0,0,7247,7245,1,0,0,0,7247,7248,1,0,0,0,7248,7250,1,0,0,0,7249, + 7247,1,0,0,0,7250,7251,5,867,0,0,7251,729,1,0,0,0,7252,7254,7,126, + 0,0,7253,7255,3,732,366,0,7254,7253,1,0,0,0,7254,7255,1,0,0,0,7255, + 7275,1,0,0,0,7256,7258,5,224,0,0,7257,7259,3,732,366,0,7258,7257, + 1,0,0,0,7258,7259,1,0,0,0,7259,7263,1,0,0,0,7260,7261,3,58,29,0, + 7261,7262,3,688,344,0,7262,7264,1,0,0,0,7263,7260,1,0,0,0,7263,7264, + 1,0,0,0,7264,7275,1,0,0,0,7265,7275,7,127,0,0,7266,7268,7,128,0, + 0,7267,7269,3,736,368,0,7268,7267,1,0,0,0,7268,7269,1,0,0,0,7269, + 7275,1,0,0,0,7270,7272,7,129,0,0,7271,7273,7,130,0,0,7272,7271,1, + 0,0,0,7272,7273,1,0,0,0,7273,7275,1,0,0,0,7274,7252,1,0,0,0,7274, + 7256,1,0,0,0,7274,7265,1,0,0,0,7274,7266,1,0,0,0,7274,7270,1,0,0, + 0,7275,7277,1,0,0,0,7276,7278,5,12,0,0,7277,7276,1,0,0,0,7277,7278, + 1,0,0,0,7278,731,1,0,0,0,7279,7280,5,866,0,0,7280,7281,3,712,356, + 0,7281,7282,5,867,0,0,7282,733,1,0,0,0,7283,7284,5,866,0,0,7284, + 7285,3,712,356,0,7285,7286,5,868,0,0,7286,7287,3,712,356,0,7287, + 7288,5,867,0,0,7288,735,1,0,0,0,7289,7290,5,866,0,0,7290,7293,3, + 712,356,0,7291,7292,5,868,0,0,7292,7294,3,712,356,0,7293,7291,1, + 0,0,0,7293,7294,1,0,0,0,7294,7295,1,0,0,0,7295,7296,5,867,0,0,7296, + 737,1,0,0,0,7297,7298,5,866,0,0,7298,7303,3,674,337,0,7299,7300, + 5,868,0,0,7300,7302,3,674,337,0,7301,7299,1,0,0,0,7302,7305,1,0, + 0,0,7303,7301,1,0,0,0,7303,7304,1,0,0,0,7304,7306,1,0,0,0,7305,7303, + 1,0,0,0,7306,7307,5,867,0,0,7307,739,1,0,0,0,7308,7313,3,804,402, + 0,7309,7310,5,868,0,0,7310,7312,3,804,402,0,7311,7309,1,0,0,0,7312, + 7315,1,0,0,0,7313,7311,1,0,0,0,7313,7314,1,0,0,0,7314,741,1,0,0, + 0,7315,7313,1,0,0,0,7316,7317,7,131,0,0,7317,7322,3,744,372,0,7318, + 7319,5,868,0,0,7319,7321,3,744,372,0,7320,7318,1,0,0,0,7321,7324, + 1,0,0,0,7322,7320,1,0,0,0,7322,7323,1,0,0,0,7323,743,1,0,0,0,7324, + 7322,1,0,0,0,7325,7326,5,866,0,0,7326,7331,3,746,373,0,7327,7328, + 5,868,0,0,7328,7330,3,746,373,0,7329,7327,1,0,0,0,7330,7333,1,0, + 0,0,7331,7329,1,0,0,0,7331,7332,1,0,0,0,7332,7334,1,0,0,0,7333,7331, + 1,0,0,0,7334,7335,5,867,0,0,7335,745,1,0,0,0,7336,7339,3,804,402, + 0,7337,7339,5,42,0,0,7338,7336,1,0,0,0,7338,7337,1,0,0,0,7339,747, + 1,0,0,0,7340,7345,3,724,362,0,7341,7342,5,868,0,0,7342,7344,3,724, + 362,0,7343,7341,1,0,0,0,7344,7347,1,0,0,0,7345,7343,1,0,0,0,7345, + 7346,1,0,0,0,7346,749,1,0,0,0,7347,7345,1,0,0,0,7348,7353,5,882, + 0,0,7349,7350,5,868,0,0,7350,7352,5,882,0,0,7351,7349,1,0,0,0,7352, + 7355,1,0,0,0,7353,7351,1,0,0,0,7353,7354,1,0,0,0,7354,751,1,0,0, + 0,7355,7353,1,0,0,0,7356,7361,5,892,0,0,7357,7358,5,868,0,0,7358, + 7360,5,892,0,0,7359,7357,1,0,0,0,7360,7363,1,0,0,0,7361,7359,1,0, + 0,0,7361,7362,1,0,0,0,7362,753,1,0,0,0,7363,7361,1,0,0,0,7364,7391, + 5,116,0,0,7365,7366,5,24,0,0,7366,7367,5,866,0,0,7367,7368,3,804, + 402,0,7368,7369,5,13,0,0,7369,7370,3,730,365,0,7370,7371,5,867,0, + 0,7371,7391,1,0,0,0,7372,7374,3,810,405,0,7373,7372,1,0,0,0,7373, + 7374,1,0,0,0,7374,7375,1,0,0,0,7375,7391,3,724,362,0,7376,7380,3, + 756,378,0,7377,7378,5,119,0,0,7378,7379,5,185,0,0,7379,7381,3,756, + 378,0,7380,7377,1,0,0,0,7380,7381,1,0,0,0,7381,7391,1,0,0,0,7382, + 7383,5,866,0,0,7383,7384,3,804,402,0,7384,7385,5,867,0,0,7385,7391, + 1,0,0,0,7386,7387,5,866,0,0,7387,7388,3,702,351,0,7388,7389,5,867, + 0,0,7389,7391,1,0,0,0,7390,7364,1,0,0,0,7390,7365,1,0,0,0,7390,7373, + 1,0,0,0,7390,7376,1,0,0,0,7390,7382,1,0,0,0,7390,7386,1,0,0,0,7391, + 755,1,0,0,0,7392,7398,7,132,0,0,7393,7395,5,866,0,0,7394,7396,3, + 712,356,0,7395,7394,1,0,0,0,7395,7396,1,0,0,0,7396,7397,1,0,0,0, + 7397,7399,5,867,0,0,7398,7393,1,0,0,0,7398,7399,1,0,0,0,7399,7407, + 1,0,0,0,7400,7401,5,295,0,0,7401,7403,5,866,0,0,7402,7404,3,712, + 356,0,7403,7402,1,0,0,0,7403,7404,1,0,0,0,7404,7405,1,0,0,0,7405, + 7407,5,867,0,0,7406,7392,1,0,0,0,7406,7400,1,0,0,0,7407,757,1,0, + 0,0,7408,7409,5,78,0,0,7409,7410,5,60,0,0,7410,759,1,0,0,0,7411, + 7412,5,78,0,0,7412,7413,5,114,0,0,7413,7414,5,60,0,0,7414,761,1, + 0,0,0,7415,7416,5,124,0,0,7416,7417,5,143,0,0,7417,763,1,0,0,0,7418, + 7441,3,766,383,0,7419,7441,3,774,387,0,7420,7441,3,776,388,0,7421, + 7428,3,796,398,0,7422,7423,5,866,0,0,7423,7429,5,867,0,0,7424,7425, + 5,866,0,0,7425,7426,3,800,400,0,7426,7427,5,867,0,0,7427,7429,1, + 0,0,0,7428,7422,1,0,0,0,7428,7424,1,0,0,0,7429,7441,1,0,0,0,7430, + 7437,3,632,316,0,7431,7432,5,866,0,0,7432,7438,5,867,0,0,7433,7434, + 5,866,0,0,7434,7435,3,800,400,0,7435,7436,5,867,0,0,7436,7438,1, + 0,0,0,7437,7431,1,0,0,0,7437,7433,1,0,0,0,7438,7441,1,0,0,0,7439, + 7441,3,798,399,0,7440,7418,1,0,0,0,7440,7419,1,0,0,0,7440,7420,1, + 0,0,0,7440,7421,1,0,0,0,7440,7430,1,0,0,0,7440,7439,1,0,0,0,7441, + 765,1,0,0,0,7442,7445,7,133,0,0,7443,7444,5,866,0,0,7444,7446,5, + 867,0,0,7445,7443,1,0,0,0,7445,7446,1,0,0,0,7446,7622,1,0,0,0,7447, + 7622,3,60,30,0,7448,7449,5,33,0,0,7449,7450,5,866,0,0,7450,7451, + 3,804,402,0,7451,7452,5,868,0,0,7452,7453,3,730,365,0,7453,7454, + 5,867,0,0,7454,7622,1,0,0,0,7455,7456,5,33,0,0,7456,7457,5,866,0, + 0,7457,7458,3,804,402,0,7458,7459,5,188,0,0,7459,7460,3,688,344, + 0,7460,7461,5,867,0,0,7461,7622,1,0,0,0,7462,7463,5,24,0,0,7463, + 7464,5,866,0,0,7464,7465,3,804,402,0,7465,7466,5,13,0,0,7466,7467, + 3,730,365,0,7467,7468,5,867,0,0,7468,7622,1,0,0,0,7469,7470,5,189, + 0,0,7470,7471,5,866,0,0,7471,7472,3,662,331,0,7472,7473,5,867,0, + 0,7473,7622,1,0,0,0,7474,7476,5,23,0,0,7475,7477,3,768,384,0,7476, + 7475,1,0,0,0,7477,7478,1,0,0,0,7478,7476,1,0,0,0,7478,7479,1,0,0, + 0,7479,7482,1,0,0,0,7480,7481,5,53,0,0,7481,7483,3,802,401,0,7482, + 7480,1,0,0,0,7482,7483,1,0,0,0,7483,7484,1,0,0,0,7484,7485,5,378, + 0,0,7485,7622,1,0,0,0,7486,7487,5,23,0,0,7487,7489,3,804,402,0,7488, + 7490,3,768,384,0,7489,7488,1,0,0,0,7490,7491,1,0,0,0,7491,7489,1, + 0,0,0,7491,7492,1,0,0,0,7492,7495,1,0,0,0,7493,7494,5,53,0,0,7494, + 7496,3,802,401,0,7495,7493,1,0,0,0,7495,7496,1,0,0,0,7496,7497,1, + 0,0,0,7497,7498,5,378,0,0,7498,7622,1,0,0,0,7499,7500,5,224,0,0, + 7500,7501,5,866,0,0,7501,7504,3,800,400,0,7502,7503,5,188,0,0,7503, + 7505,3,688,344,0,7504,7502,1,0,0,0,7504,7505,1,0,0,0,7505,7506,1, + 0,0,0,7506,7507,5,867,0,0,7507,7622,1,0,0,0,7508,7509,5,296,0,0, + 7509,7512,5,866,0,0,7510,7513,3,716,358,0,7511,7513,3,804,402,0, + 7512,7510,1,0,0,0,7512,7511,1,0,0,0,7513,7514,1,0,0,0,7514,7517, + 5,80,0,0,7515,7518,3,716,358,0,7516,7518,3,804,402,0,7517,7515,1, + 0,0,0,7517,7516,1,0,0,0,7518,7519,1,0,0,0,7519,7520,5,867,0,0,7520, + 7622,1,0,0,0,7521,7522,7,134,0,0,7522,7525,5,866,0,0,7523,7526,3, + 716,358,0,7524,7526,3,804,402,0,7525,7523,1,0,0,0,7525,7524,1,0, + 0,0,7526,7527,1,0,0,0,7527,7530,5,68,0,0,7528,7531,3,712,356,0,7529, + 7531,3,804,402,0,7530,7528,1,0,0,0,7530,7529,1,0,0,0,7531,7537,1, + 0,0,0,7532,7535,5,65,0,0,7533,7536,3,712,356,0,7534,7536,3,804,402, + 0,7535,7533,1,0,0,0,7535,7534,1,0,0,0,7536,7538,1,0,0,0,7537,7532, + 1,0,0,0,7537,7538,1,0,0,0,7538,7539,1,0,0,0,7539,7540,5,867,0,0, + 7540,7622,1,0,0,0,7541,7542,5,300,0,0,7542,7543,5,866,0,0,7543,7546, + 7,135,0,0,7544,7547,3,716,358,0,7545,7547,3,804,402,0,7546,7544, + 1,0,0,0,7546,7545,1,0,0,0,7546,7547,1,0,0,0,7547,7548,1,0,0,0,7548, + 7551,5,68,0,0,7549,7552,3,716,358,0,7550,7552,3,804,402,0,7551,7549, + 1,0,0,0,7551,7550,1,0,0,0,7552,7553,1,0,0,0,7553,7554,5,867,0,0, + 7554,7622,1,0,0,0,7555,7556,5,300,0,0,7556,7559,5,866,0,0,7557,7560, + 3,716,358,0,7558,7560,3,804,402,0,7559,7557,1,0,0,0,7559,7558,1, + 0,0,0,7560,7561,1,0,0,0,7561,7564,5,68,0,0,7562,7565,3,716,358,0, + 7563,7565,3,804,402,0,7564,7562,1,0,0,0,7564,7563,1,0,0,0,7565,7566, + 1,0,0,0,7566,7567,5,867,0,0,7567,7622,1,0,0,0,7568,7569,5,840,0, + 0,7569,7572,5,866,0,0,7570,7573,3,716,358,0,7571,7573,3,804,402, + 0,7572,7570,1,0,0,0,7572,7571,1,0,0,0,7573,7580,1,0,0,0,7574,7575, + 5,13,0,0,7575,7576,7,136,0,0,7576,7577,5,866,0,0,7577,7578,3,712, + 356,0,7578,7579,5,867,0,0,7579,7581,1,0,0,0,7580,7574,1,0,0,0,7580, + 7581,1,0,0,0,7581,7583,1,0,0,0,7582,7584,3,770,385,0,7583,7582,1, + 0,0,0,7583,7584,1,0,0,0,7584,7585,1,0,0,0,7585,7586,5,867,0,0,7586, + 7622,1,0,0,0,7587,7588,5,293,0,0,7588,7589,5,866,0,0,7589,7590,3, + 70,35,0,7590,7593,5,68,0,0,7591,7594,3,716,358,0,7592,7594,3,804, + 402,0,7593,7591,1,0,0,0,7593,7592,1,0,0,0,7594,7595,1,0,0,0,7595, + 7596,5,867,0,0,7596,7622,1,0,0,0,7597,7598,5,827,0,0,7598,7599,5, + 866,0,0,7599,7600,7,137,0,0,7600,7601,5,868,0,0,7601,7602,3,716, + 358,0,7602,7603,5,867,0,0,7603,7622,1,0,0,0,7604,7605,5,254,0,0, + 7605,7606,5,866,0,0,7606,7607,3,804,402,0,7607,7608,5,868,0,0,7608, + 7611,3,804,402,0,7609,7610,5,579,0,0,7610,7612,3,730,365,0,7611, + 7609,1,0,0,0,7611,7612,1,0,0,0,7612,7614,1,0,0,0,7613,7615,3,292, + 146,0,7614,7613,1,0,0,0,7614,7615,1,0,0,0,7615,7617,1,0,0,0,7616, + 7618,3,294,147,0,7617,7616,1,0,0,0,7617,7618,1,0,0,0,7618,7619,1, + 0,0,0,7619,7620,5,867,0,0,7620,7622,1,0,0,0,7621,7442,1,0,0,0,7621, + 7447,1,0,0,0,7621,7448,1,0,0,0,7621,7455,1,0,0,0,7621,7462,1,0,0, + 0,7621,7469,1,0,0,0,7621,7474,1,0,0,0,7621,7486,1,0,0,0,7621,7499, + 1,0,0,0,7621,7508,1,0,0,0,7621,7521,1,0,0,0,7621,7541,1,0,0,0,7621, + 7555,1,0,0,0,7621,7568,1,0,0,0,7621,7587,1,0,0,0,7621,7597,1,0,0, + 0,7621,7604,1,0,0,0,7622,767,1,0,0,0,7623,7624,5,191,0,0,7624,7625, + 3,802,401,0,7625,7626,5,175,0,0,7626,7627,3,802,401,0,7627,769,1, + 0,0,0,7628,7629,5,448,0,0,7629,7634,3,772,386,0,7630,7631,5,868, + 0,0,7631,7633,3,772,386,0,7632,7630,1,0,0,0,7633,7636,1,0,0,0,7634, + 7632,1,0,0,0,7634,7635,1,0,0,0,7635,7643,1,0,0,0,7636,7634,1,0,0, + 0,7637,7638,5,448,0,0,7638,7639,3,712,356,0,7639,7640,5,854,0,0, + 7640,7641,3,712,356,0,7641,7643,1,0,0,0,7642,7628,1,0,0,0,7642,7637, + 1,0,0,0,7643,771,1,0,0,0,7644,7646,3,712,356,0,7645,7647,7,138,0, + 0,7646,7645,1,0,0,0,7646,7647,1,0,0,0,7647,773,1,0,0,0,7648,7649, + 7,139,0,0,7649,7651,5,866,0,0,7650,7652,7,45,0,0,7651,7650,1,0,0, + 0,7651,7652,1,0,0,0,7652,7653,1,0,0,0,7653,7654,3,802,401,0,7654, + 7656,5,867,0,0,7655,7657,3,778,389,0,7656,7655,1,0,0,0,7656,7657, + 1,0,0,0,7657,7708,1,0,0,0,7658,7659,5,262,0,0,7659,7667,5,866,0, + 0,7660,7668,5,850,0,0,7661,7663,5,7,0,0,7662,7661,1,0,0,0,7662,7663, + 1,0,0,0,7663,7664,1,0,0,0,7664,7668,3,802,401,0,7665,7666,5,49,0, + 0,7666,7668,3,800,400,0,7667,7660,1,0,0,0,7667,7662,1,0,0,0,7667, + 7665,1,0,0,0,7668,7669,1,0,0,0,7669,7671,5,867,0,0,7670,7672,3,778, + 389,0,7671,7670,1,0,0,0,7671,7672,1,0,0,0,7672,7708,1,0,0,0,7673, + 7674,7,140,0,0,7674,7676,5,866,0,0,7675,7677,5,7,0,0,7676,7675,1, + 0,0,0,7676,7677,1,0,0,0,7677,7678,1,0,0,0,7678,7679,3,802,401,0, + 7679,7681,5,867,0,0,7680,7682,3,778,389,0,7681,7680,1,0,0,0,7681, + 7682,1,0,0,0,7682,7708,1,0,0,0,7683,7684,5,266,0,0,7684,7686,5,866, + 0,0,7685,7687,5,49,0,0,7686,7685,1,0,0,0,7686,7687,1,0,0,0,7687, + 7688,1,0,0,0,7688,7699,3,800,400,0,7689,7690,5,125,0,0,7690,7691, + 5,20,0,0,7691,7696,3,260,130,0,7692,7693,5,868,0,0,7693,7695,3,260, + 130,0,7694,7692,1,0,0,0,7695,7698,1,0,0,0,7696,7694,1,0,0,0,7696, + 7697,1,0,0,0,7697,7700,1,0,0,0,7698,7696,1,0,0,0,7699,7689,1,0,0, + 0,7699,7700,1,0,0,0,7700,7703,1,0,0,0,7701,7702,5,156,0,0,7702,7704, + 5,882,0,0,7703,7701,1,0,0,0,7703,7704,1,0,0,0,7704,7705,1,0,0,0, + 7705,7706,5,867,0,0,7706,7708,1,0,0,0,7707,7648,1,0,0,0,7707,7658, + 1,0,0,0,7707,7673,1,0,0,0,7707,7683,1,0,0,0,7708,775,1,0,0,0,7709, + 7710,7,141,0,0,7710,7711,5,866,0,0,7711,7714,3,804,402,0,7712,7713, + 5,868,0,0,7713,7715,3,712,356,0,7714,7712,1,0,0,0,7714,7715,1,0, + 0,0,7715,7718,1,0,0,0,7716,7717,5,868,0,0,7717,7719,3,712,356,0, + 7718,7716,1,0,0,0,7718,7719,1,0,0,0,7719,7720,1,0,0,0,7720,7721, + 5,867,0,0,7721,7722,3,778,389,0,7722,7748,1,0,0,0,7723,7724,7,142, + 0,0,7724,7725,5,866,0,0,7725,7726,3,804,402,0,7726,7727,5,867,0, + 0,7727,7728,3,778,389,0,7728,7748,1,0,0,0,7729,7730,7,143,0,0,7730, + 7731,5,866,0,0,7731,7732,5,867,0,0,7732,7748,3,778,389,0,7733,7734, + 5,273,0,0,7734,7735,5,866,0,0,7735,7736,3,804,402,0,7736,7737,5, + 868,0,0,7737,7738,3,712,356,0,7738,7739,5,867,0,0,7739,7740,3,778, + 389,0,7740,7748,1,0,0,0,7741,7742,5,272,0,0,7742,7743,5,866,0,0, + 7743,7744,3,712,356,0,7744,7745,5,867,0,0,7745,7746,3,778,389,0, + 7746,7748,1,0,0,0,7747,7709,1,0,0,0,7747,7723,1,0,0,0,7747,7729, + 1,0,0,0,7747,7733,1,0,0,0,7747,7741,1,0,0,0,7748,777,1,0,0,0,7749, + 7755,5,129,0,0,7750,7751,5,866,0,0,7751,7752,3,780,390,0,7752,7753, + 5,867,0,0,7753,7756,1,0,0,0,7754,7756,3,782,391,0,7755,7750,1,0, + 0,0,7755,7754,1,0,0,0,7756,779,1,0,0,0,7757,7759,3,782,391,0,7758, + 7757,1,0,0,0,7758,7759,1,0,0,0,7759,7761,1,0,0,0,7760,7762,3,794, + 397,0,7761,7760,1,0,0,0,7761,7762,1,0,0,0,7762,7764,1,0,0,0,7763, + 7765,3,258,129,0,7764,7763,1,0,0,0,7764,7765,1,0,0,0,7765,7767,1, + 0,0,0,7766,7768,3,784,392,0,7767,7766,1,0,0,0,7767,7768,1,0,0,0, + 7768,781,1,0,0,0,7769,7770,3,706,353,0,7770,783,1,0,0,0,7771,7772, + 3,786,393,0,7772,7773,3,788,394,0,7773,785,1,0,0,0,7774,7775,7,144, + 0,0,7775,787,1,0,0,0,7776,7779,3,792,396,0,7777,7779,3,790,395,0, + 7778,7776,1,0,0,0,7778,7777,1,0,0,0,7779,789,1,0,0,0,7780,7781,5, + 17,0,0,7781,7782,3,792,396,0,7782,7783,5,11,0,0,7783,7784,3,792, + 396,0,7784,791,1,0,0,0,7785,7786,5,36,0,0,7786,7793,5,586,0,0,7787, + 7788,5,669,0,0,7788,7793,7,145,0,0,7789,7790,3,804,402,0,7790,7791, + 7,145,0,0,7791,7793,1,0,0,0,7792,7785,1,0,0,0,7792,7787,1,0,0,0, + 7792,7789,1,0,0,0,7793,793,1,0,0,0,7794,7795,5,130,0,0,7795,7796, + 5,20,0,0,7796,7801,3,804,402,0,7797,7798,5,868,0,0,7798,7800,3,804, + 402,0,7799,7797,1,0,0,0,7800,7803,1,0,0,0,7801,7799,1,0,0,0,7801, + 7802,1,0,0,0,7802,795,1,0,0,0,7803,7801,1,0,0,0,7804,7829,3,836, + 418,0,7805,7829,5,757,0,0,7806,7829,5,289,0,0,7807,7829,5,285,0, + 0,7808,7829,5,286,0,0,7809,7829,5,287,0,0,7810,7829,5,290,0,0,7811, + 7829,5,291,0,0,7812,7829,5,292,0,0,7813,7829,5,78,0,0,7814,7829, + 5,86,0,0,7815,7829,5,288,0,0,7816,7829,5,294,0,0,7817,7829,5,488, + 0,0,7818,7829,5,295,0,0,7819,7829,5,142,0,0,7820,7829,5,143,0,0, + 7821,7829,5,297,0,0,7822,7829,5,298,0,0,7823,7829,5,299,0,0,7824, + 7829,5,300,0,0,7825,7829,5,301,0,0,7826,7829,5,302,0,0,7827,7829, + 5,303,0,0,7828,7804,1,0,0,0,7828,7805,1,0,0,0,7828,7806,1,0,0,0, + 7828,7807,1,0,0,0,7828,7808,1,0,0,0,7828,7809,1,0,0,0,7828,7810, + 1,0,0,0,7828,7811,1,0,0,0,7828,7812,1,0,0,0,7828,7813,1,0,0,0,7828, + 7814,1,0,0,0,7828,7815,1,0,0,0,7828,7816,1,0,0,0,7828,7817,1,0,0, + 0,7828,7818,1,0,0,0,7828,7819,1,0,0,0,7828,7820,1,0,0,0,7828,7821, + 1,0,0,0,7828,7822,1,0,0,0,7828,7823,1,0,0,0,7828,7824,1,0,0,0,7828, + 7825,1,0,0,0,7828,7826,1,0,0,0,7828,7827,1,0,0,0,7829,797,1,0,0, + 0,7830,7831,7,146,0,0,7831,7832,5,866,0,0,7832,7833,3,802,401,0, + 7833,7834,5,867,0,0,7834,799,1,0,0,0,7835,7840,3,802,401,0,7836, + 7837,5,868,0,0,7837,7839,3,802,401,0,7838,7836,1,0,0,0,7839,7842, + 1,0,0,0,7840,7838,1,0,0,0,7840,7841,1,0,0,0,7841,801,1,0,0,0,7842, + 7840,1,0,0,0,7843,7847,3,724,362,0,7844,7847,3,764,382,0,7845,7847, + 3,804,402,0,7846,7843,1,0,0,0,7846,7844,1,0,0,0,7846,7845,1,0,0, + 0,7847,803,1,0,0,0,7848,7849,6,402,-1,0,7849,7850,7,147,0,0,7850, + 7860,3,804,402,4,7851,7852,3,806,403,0,7852,7854,5,89,0,0,7853,7855, + 5,114,0,0,7854,7853,1,0,0,0,7854,7855,1,0,0,0,7855,7856,1,0,0,0, + 7856,7857,7,148,0,0,7857,7860,1,0,0,0,7858,7860,3,806,403,0,7859, + 7848,1,0,0,0,7859,7851,1,0,0,0,7859,7858,1,0,0,0,7860,7867,1,0,0, + 0,7861,7862,10,3,0,0,7862,7863,3,816,408,0,7863,7864,3,804,402,4, + 7864,7866,1,0,0,0,7865,7861,1,0,0,0,7866,7869,1,0,0,0,7867,7865, + 1,0,0,0,7867,7868,1,0,0,0,7868,805,1,0,0,0,7869,7867,1,0,0,0,7870, + 7871,6,403,-1,0,7871,7872,3,808,404,0,7872,7936,1,0,0,0,7873,7875, + 10,6,0,0,7874,7876,5,114,0,0,7875,7874,1,0,0,0,7875,7876,1,0,0,0, + 7876,7877,1,0,0,0,7877,7878,5,17,0,0,7878,7879,3,806,403,0,7879, + 7880,5,11,0,0,7880,7881,3,806,403,7,7881,7935,1,0,0,0,7882,7883, + 10,5,0,0,7883,7884,5,604,0,0,7884,7885,5,99,0,0,7885,7935,3,806, + 403,6,7886,7888,10,3,0,0,7887,7889,5,114,0,0,7888,7887,1,0,0,0,7888, + 7889,1,0,0,0,7889,7890,1,0,0,0,7890,7891,7,149,0,0,7891,7935,3,806, + 403,4,7892,7894,10,9,0,0,7893,7895,5,114,0,0,7894,7893,1,0,0,0,7894, + 7895,1,0,0,0,7895,7896,1,0,0,0,7896,7897,5,80,0,0,7897,7900,5,866, + 0,0,7898,7901,3,210,105,0,7899,7901,3,740,370,0,7900,7898,1,0,0, + 0,7900,7899,1,0,0,0,7901,7902,1,0,0,0,7902,7903,5,867,0,0,7903,7935, + 1,0,0,0,7904,7905,10,8,0,0,7905,7906,5,89,0,0,7906,7935,3,722,361, + 0,7907,7908,10,7,0,0,7908,7915,3,812,406,0,7909,7910,7,150,0,0,7910, + 7911,5,866,0,0,7911,7912,3,210,105,0,7912,7913,5,867,0,0,7913,7916, + 1,0,0,0,7914,7916,3,806,403,0,7915,7909,1,0,0,0,7915,7914,1,0,0, + 0,7916,7935,1,0,0,0,7917,7919,10,4,0,0,7918,7920,5,114,0,0,7919, + 7918,1,0,0,0,7919,7920,1,0,0,0,7920,7921,1,0,0,0,7921,7922,5,99, + 0,0,7922,7925,3,806,403,0,7923,7924,5,384,0,0,7924,7926,5,882,0, + 0,7925,7923,1,0,0,0,7925,7926,1,0,0,0,7926,7935,1,0,0,0,7927,7928, + 10,2,0,0,7928,7929,5,485,0,0,7929,7930,5,510,0,0,7930,7931,5,866, + 0,0,7931,7932,3,806,403,0,7932,7933,5,867,0,0,7933,7935,1,0,0,0, + 7934,7873,1,0,0,0,7934,7882,1,0,0,0,7934,7886,1,0,0,0,7934,7892, + 1,0,0,0,7934,7904,1,0,0,0,7934,7907,1,0,0,0,7934,7917,1,0,0,0,7934, + 7927,1,0,0,0,7935,7938,1,0,0,0,7936,7934,1,0,0,0,7936,7937,1,0,0, + 0,7937,807,1,0,0,0,7938,7936,1,0,0,0,7939,7940,6,404,-1,0,7940,7988, + 3,724,362,0,7941,7988,3,764,382,0,7942,7988,3,686,343,0,7943,7944, + 3,810,405,0,7944,7945,3,808,404,12,7945,7988,1,0,0,0,7946,7947,5, + 228,0,0,7947,7988,3,808,404,11,7948,7949,5,892,0,0,7949,7950,5,841, + 0,0,7950,7988,3,808,404,10,7951,7952,5,866,0,0,7952,7957,3,804,402, + 0,7953,7954,5,868,0,0,7954,7956,3,804,402,0,7955,7953,1,0,0,0,7956, + 7959,1,0,0,0,7957,7955,1,0,0,0,7957,7958,1,0,0,0,7958,7960,1,0,0, + 0,7959,7957,1,0,0,0,7960,7961,5,867,0,0,7961,7988,1,0,0,0,7962,7963, + 5,586,0,0,7963,7964,5,866,0,0,7964,7967,3,804,402,0,7965,7966,5, + 868,0,0,7966,7968,3,804,402,0,7967,7965,1,0,0,0,7968,7969,1,0,0, + 0,7969,7967,1,0,0,0,7969,7970,1,0,0,0,7970,7971,1,0,0,0,7971,7972, + 5,867,0,0,7972,7988,1,0,0,0,7973,7974,5,60,0,0,7974,7975,5,866,0, + 0,7975,7976,3,210,105,0,7976,7977,5,867,0,0,7977,7988,1,0,0,0,7978, + 7979,5,866,0,0,7979,7980,3,210,105,0,7980,7981,5,867,0,0,7981,7988, + 1,0,0,0,7982,7983,5,87,0,0,7983,7984,3,804,402,0,7984,7985,3,70, + 35,0,7985,7988,1,0,0,0,7986,7988,3,662,331,0,7987,7939,1,0,0,0,7987, + 7941,1,0,0,0,7987,7942,1,0,0,0,7987,7943,1,0,0,0,7987,7946,1,0,0, + 0,7987,7948,1,0,0,0,7987,7951,1,0,0,0,7987,7962,1,0,0,0,7987,7973, + 1,0,0,0,7987,7978,1,0,0,0,7987,7982,1,0,0,0,7987,7986,1,0,0,0,7988, + 8006,1,0,0,0,7989,7990,10,4,0,0,7990,7991,3,822,411,0,7991,7992, + 3,808,404,5,7992,8005,1,0,0,0,7993,7994,10,3,0,0,7994,7995,3,818, + 409,0,7995,7996,3,808,404,4,7996,8005,1,0,0,0,7997,7998,10,2,0,0, + 7998,7999,3,820,410,0,7999,8000,3,808,404,3,8000,8005,1,0,0,0,8001, + 8002,10,14,0,0,8002,8003,5,28,0,0,8003,8005,3,690,345,0,8004,7989, + 1,0,0,0,8004,7993,1,0,0,0,8004,7997,1,0,0,0,8004,8001,1,0,0,0,8005, + 8008,1,0,0,0,8006,8004,1,0,0,0,8006,8007,1,0,0,0,8007,809,1,0,0, + 0,8008,8006,1,0,0,0,8009,8010,7,151,0,0,8010,811,1,0,0,0,8011,8012, + 5,859,0,0,8012,8020,5,858,0,0,8013,8014,5,860,0,0,8014,8020,5,857, + 0,0,8015,8016,5,859,0,0,8016,8017,5,857,0,0,8017,8020,5,858,0,0, + 8018,8020,3,814,407,0,8019,8011,1,0,0,0,8019,8013,1,0,0,0,8019,8015, + 1,0,0,0,8019,8018,1,0,0,0,8020,813,1,0,0,0,8021,8022,5,859,0,0,8022, + 8029,5,857,0,0,8023,8024,5,858,0,0,8024,8029,5,857,0,0,8025,8029, + 5,857,0,0,8026,8029,5,858,0,0,8027,8029,5,859,0,0,8028,8021,1,0, + 0,0,8028,8023,1,0,0,0,8028,8025,1,0,0,0,8028,8026,1,0,0,0,8028,8027, + 1,0,0,0,8029,815,1,0,0,0,8030,8038,5,11,0,0,8031,8032,5,863,0,0, + 8032,8038,5,863,0,0,8033,8038,5,196,0,0,8034,8038,5,124,0,0,8035, + 8036,5,862,0,0,8036,8038,5,862,0,0,8037,8030,1,0,0,0,8037,8031,1, + 0,0,0,8037,8033,1,0,0,0,8037,8034,1,0,0,0,8037,8035,1,0,0,0,8038, + 817,1,0,0,0,8039,8040,5,859,0,0,8040,8047,5,859,0,0,8041,8042,5, + 858,0,0,8042,8047,5,858,0,0,8043,8047,5,863,0,0,8044,8047,5,864, + 0,0,8045,8047,5,862,0,0,8046,8039,1,0,0,0,8046,8041,1,0,0,0,8046, + 8043,1,0,0,0,8046,8044,1,0,0,0,8046,8045,1,0,0,0,8047,819,1,0,0, + 0,8048,8049,7,152,0,0,8049,821,1,0,0,0,8050,8051,5,854,0,0,8051, + 8056,5,858,0,0,8052,8053,5,854,0,0,8053,8054,5,858,0,0,8054,8056, + 5,858,0,0,8055,8050,1,0,0,0,8055,8052,1,0,0,0,8056,823,1,0,0,0,8057, + 8058,7,153,0,0,8058,825,1,0,0,0,8059,8060,7,154,0,0,8060,827,1,0, + 0,0,8061,8062,7,155,0,0,8062,829,1,0,0,0,8063,8064,7,156,0,0,8064, + 831,1,0,0,0,8065,8066,7,157,0,0,8066,833,1,0,0,0,8067,8068,7,158, + 0,0,8068,835,1,0,0,0,8069,8070,7,159,0,0,8070,837,1,0,0,0,1163,841, + 848,851,860,904,923,934,950,955,967,1002,1012,1017,1023,1028,1032, + 1041,1044,1047,1051,1058,1061,1066,1074,1079,1084,1087,1089,1101, + 1104,1108,1111,1115,1118,1122,1125,1128,1132,1135,1139,1145,1149, + 1154,1160,1167,1174,1177,1181,1186,1192,1201,1206,1210,1214,1225, + 1243,1250,1254,1258,1262,1267,1270,1273,1276,1279,1285,1289,1299, + 1303,1307,1313,1318,1321,1324,1326,1330,1337,1341,1344,1349,1353, + 1356,1360,1363,1367,1380,1383,1387,1390,1394,1397,1401,1404,1408, + 1411,1414,1418,1421,1425,1431,1434,1438,1450,1456,1467,1472,1480, + 1484,1489,1492,1497,1507,1512,1517,1523,1528,1532,1534,1537,1541, + 1545,1548,1552,1556,1560,1566,1569,1576,1581,1587,1594,1600,1608, + 1611,1618,1621,1623,1629,1635,1652,1659,1666,1678,1683,1686,1689, + 1702,1715,1720,1736,1744,1754,1757,1763,1768,1771,1777,1781,1786, + 1792,1796,1800,1803,1806,1812,1816,1821,1832,1835,1842,1845,1849, + 1855,1867,1870,1875,1888,1895,1901,1906,1910,1913,1921,1929,1931, + 1941,1945,1948,1952,1957,1962,1967,1971,1975,1979,1983,1987,1991, + 1996,2001,2006,2012,2017,2022,2027,2032,2037,2043,2048,2053,2058, + 2063,2068,2073,2078,2085,2090,2095,2100,2104,2109,2117,2122,2128, + 2140,2147,2149,2157,2162,2165,2173,2179,2183,2196,2208,2210,2213, + 2221,2227,2233,2246,2253,2262,2267,2278,2287,2292,2304,2311,2320, + 2325,2337,2344,2353,2358,2365,2374,2379,2381,2386,2394,2403,2407, + 2410,2414,2419,2425,2431,2436,2441,2446,2451,2454,2459,2464,2474, + 2478,2485,2490,2493,2498,2501,2505,2509,2517,2536,2539,2542,2546, + 2556,2569,2582,2585,2591,2594,2598,2607,2610,2613,2618,2622,2625, + 2629,2633,2636,2640,2643,2647,2650,2656,2659,2664,2672,2678,2682, + 2686,2691,2696,2703,2707,2718,2726,2729,2735,2741,2744,2750,2756, + 2758,2763,2769,2775,2777,2781,2784,2787,2793,2799,2801,2806,2813, + 2822,2825,2829,2834,2844,2853,2861,2864,2872,2875,2882,2887,2895, + 2911,2916,2923,2942,2948,2958,2970,2977,2984,2999,3012,3018,3024, + 3030,3036,3042,3048,3053,3060,3067,3074,3079,3082,3084,3093,3100, + 3107,3114,3123,3129,3133,3137,3141,3147,3150,3155,3162,3169,3173, + 3178,3188,3196,3202,3211,3220,3229,3232,3236,3245,3249,3252,3255, + 3261,3264,3267,3271,3274,3277,3280,3291,3294,3299,3305,3310,3315, + 3318,3322,3327,3330,3335,3345,3350,3356,3358,3364,3366,3372,3380, + 3385,3393,3396,3401,3404,3409,3417,3423,3427,3429,3435,3443,3448, + 3456,3459,3464,3467,3471,3474,3477,3481,3484,3492,3498,3502,3508, + 3513,3517,3519,3525,3529,3532,3535,3538,3544,3549,3552,3555,3558, + 3561,3563,3566,3570,3573,3576,3584,3590,3593,3595,3604,3609,3616, + 3619,3622,3626,3630,3636,3640,3647,3651,3654,3657,3662,3669,3679, + 3688,3697,3707,3710,3714,3720,3724,3727,3730,3735,3738,3745,3749, + 3752,3756,3760,3763,3766,3771,3777,3781,3791,3797,3801,3807,3811, + 3817,3820,3832,3836,3840,3848,3852,3866,3871,3874,3878,3881,3889, + 3894,3897,3900,3904,3907,3916,3921,3930,3935,3942,3949,3957,3963, + 3971,3974,3977,3984,3987,3990,3997,4000,4004,4010,4020,4024,4033, + 4036,4040,4046,4054,4059,4063,4069,4075,4078,4080,4084,4093,4103, + 4109,4114,4118,4121,4124,4127,4130,4133,4136,4140,4144,4152,4156, + 4159,4161,4174,4177,4184,4194,4197,4202,4204,4208,4216,4222,4231, + 4244,4248,4254,4259,4263,4266,4270,4273,4281,4284,4286,4294,4306, + 4312,4314,4320,4322,4324,4330,4338,4346,4350,4354,4363,4368,4388, + 4393,4399,4406,4411,4420,4423,4427,4431,4435,4438,4441,4444,4448, + 4452,4455,4458,4461,4468,4472,4487,4500,4508,4518,4522,4525,4531, + 4534,4537,4546,4555,4565,4569,4579,4583,4594,4598,4607,4616,4619, + 4623,4628,4632,4641,4644,4647,4654,4660,4666,4692,4695,4698,4717, + 4719,4742,4745,4748,4767,4769,4783,4796,4833,4838,4873,4887,4894, + 4898,4904,4912,4914,4925,4935,4942,4948,4956,4961,4969,4977,4985, + 4993,4999,5004,5009,5014,5020,5022,5033,5038,5045,5047,5061,5067, + 5072,5077,5083,5090,5098,5106,5111,5117,5120,5128,5135,5144,5147, + 5164,5172,5180,5184,5191,5197,5205,5210,5217,5225,5232,5237,5240, + 5242,5248,5250,5254,5256,5261,5268,5273,5277,5282,5286,5292,5298, + 5303,5306,5308,5314,5316,5320,5322,5327,5332,5339,5348,5353,5362, + 5366,5372,5377,5380,5382,5388,5390,5393,5400,5402,5407,5414,5423, + 5429,5431,5438,5441,5453,5459,5467,5470,5474,5477,5481,5483,5494, + 5497,5501,5504,5507,5514,5526,5529,5536,5542,5552,5557,5564,5569, + 5575,5579,5583,5591,5595,5599,5605,5607,5619,5624,5630,5636,5640, + 5645,5647,5671,5675,5678,5687,5691,5700,5704,5708,5714,5716,5725, + 5735,5762,5766,5771,5778,5781,5787,5797,5807,5817,5823,5832,5838, + 5845,5847,5855,5861,5865,5882,5892,5896,5900,5910,5915,5987,6005, + 6013,6019,6031,6035,6046,6050,6059,6067,6074,6078,6085,6090,6093, + 6096,6107,6116,6125,6128,6142,6160,6173,6176,6180,6183,6185,6192, + 6199,6203,6210,6217,6220,6236,6239,6249,6253,6259,6262,6265,6270, + 6274,6277,6284,6287,6293,6329,6332,6344,6347,6363,6365,6369,6376, + 6380,6387,6390,6399,6402,6407,6413,6415,6421,6425,6431,6434,6437, + 6450,6453,6459,6462,6470,6478,6484,6487,6491,6505,6517,6525,6529, + 6536,6543,6548,6561,6570,6578,6583,6586,6591,6594,6606,6611,6624, + 6626,6631,6635,6638,6640,6647,6654,6657,6660,6666,6670,6676,6684, + 6693,6706,6711,6719,6722,6727,6732,6740,6743,6751,6755,6762,6768, + 6771,6775,6788,6794,6806,6809,6818,6823,6844,6860,6870,6875,6880, + 6882,6885,6889,6891,6898,6904,6906,6909,6913,6916,6929,6939,6942, + 6945,6958,6964,6967,6975,6982,7002,7009,7011,7018,7020,7024,7031, + 7037,7048,7054,7060,7063,7067,7072,7075,7079,7083,7085,7090,7095, + 7108,7111,7115,7118,7121,7126,7131,7137,7140,7145,7148,7153,7156, + 7160,7165,7170,7175,7180,7183,7188,7193,7198,7204,7209,7214,7219, + 7223,7226,7231,7235,7239,7247,7254,7258,7263,7268,7272,7274,7277, + 7293,7303,7313,7322,7331,7338,7345,7353,7361,7373,7380,7390,7395, + 7398,7403,7406,7428,7437,7440,7445,7478,7482,7491,7495,7504,7512, + 7517,7525,7530,7535,7537,7546,7551,7559,7564,7572,7580,7583,7593, + 7611,7614,7617,7621,7634,7642,7646,7651,7656,7662,7667,7671,7676, + 7681,7686,7696,7699,7703,7707,7714,7718,7747,7755,7758,7761,7764, + 7767,7778,7792,7801,7828,7840,7846,7854,7859,7867,7875,7888,7894, + 7900,7915,7919,7925,7934,7936,7957,7969,7987,8004,8006,8019,8028, + 8037,8046,8055 ]; private static __ATN: antlr.ATN; @@ -51414,6 +52233,9 @@ export class DdlStatementContext extends antlr.ParserRuleContext { public createFunction(): CreateFunctionContext | null { return this.getRuleContext(0, CreateFunctionContext); } + public createFunctionLoadable(): CreateFunctionLoadableContext | null { + return this.getRuleContext(0, CreateFunctionLoadableContext); + } public createServer(): CreateServerContext | null { return this.getRuleContext(0, CreateServerContext); } @@ -52486,6 +53308,160 @@ export class CreateProcedureContext extends antlr.ParserRuleContext { } +export class CreateFunctionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_CREATE, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_FUNCTION, 0)!; + } + public functionNameCreate(): FunctionNameCreateContext { + return this.getRuleContext(0, FunctionNameCreateContext)!; + } + public LR_BRACKET(): antlr.TerminalNode { + return this.getToken(MySqlParser.LR_BRACKET, 0)!; + } + public RR_BRACKET(): antlr.TerminalNode { + return this.getToken(MySqlParser.RR_BRACKET, 0)!; + } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_RETURNS, 0)!; + } + public dataType(): DataTypeContext { + return this.getRuleContext(0, DataTypeContext)!; + } + public routineBody(): RoutineBodyContext | null { + return this.getRuleContext(0, RoutineBodyContext); + } + public returnStatement(): ReturnStatementContext | null { + return this.getRuleContext(0, ReturnStatementContext); + } + public ownerStatement(): OwnerStatementContext | null { + return this.getRuleContext(0, OwnerStatementContext); + } + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_AGGREGATE, 0); + } + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); + } + public functionParameter(): FunctionParameterContext[]; + public functionParameter(i: number): FunctionParameterContext | null; + public functionParameter(i?: number): FunctionParameterContext[] | FunctionParameterContext | null { + if (i === undefined) { + return this.getRuleContexts(FunctionParameterContext); + } + + return this.getRuleContext(i, FunctionParameterContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(MySqlParser.COMMA); + } else { + return this.getToken(MySqlParser.COMMA, i); + } + } + public routineOption(): RoutineOptionContext[]; + public routineOption(i: number): RoutineOptionContext | null; + public routineOption(i?: number): RoutineOptionContext[] | RoutineOptionContext | null { + if (i === undefined) { + return this.getRuleContexts(RoutineOptionContext); + } + + return this.getRuleContext(i, RoutineOptionContext); + } + public override get ruleIndex(): number { + return MySqlParser.RULE_createFunction; + } + public override enterRule(listener: MySqlParserListener): void { + if(listener.enterCreateFunction) { + listener.enterCreateFunction(this); + } + } + public override exitRule(listener: MySqlParserListener): void { + if(listener.exitCreateFunction) { + listener.exitCreateFunction(this); + } + } + public override accept(visitor: MySqlParserVisitor): Result | null { + if (visitor.visitCreateFunction) { + return visitor.visitCreateFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CreateFunctionLoadableContext extends antlr.ParserRuleContext { + public _returnType?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_CREATE, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_FUNCTION, 0)!; + } + public functionNameCreate(): FunctionNameCreateContext { + return this.getRuleContext(0, FunctionNameCreateContext)!; + } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_RETURNS, 0)!; + } + public KW_SONAME(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_SONAME, 0)!; + } + public STRING_LITERAL(): antlr.TerminalNode { + return this.getToken(MySqlParser.STRING_LITERAL, 0)!; + } + public KW_STRING(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_STRING, 0); + } + public KW_INTEGER(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_INTEGER, 0); + } + public KW_REAL(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_REAL, 0); + } + public KW_DECIMAL(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_DECIMAL, 0); + } + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_AGGREGATE, 0); + } + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); + } + public override get ruleIndex(): number { + return MySqlParser.RULE_createFunctionLoadable; + } + public override enterRule(listener: MySqlParserListener): void { + if(listener.enterCreateFunctionLoadable) { + listener.enterCreateFunctionLoadable(this); + } + } + public override exitRule(listener: MySqlParserListener): void { + if(listener.exitCreateFunctionLoadable) { + listener.exitCreateFunctionLoadable(this); + } + } + public override accept(visitor: MySqlParserVisitor): Result | null { + if (visitor.visitCreateFunctionLoadable) { + return visitor.visitCreateFunctionLoadable(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class CreateRoleContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -53081,8 +54057,14 @@ export class CreateTriggerContext extends antlr.ParserRuleContext { public ownerStatement(): OwnerStatementContext | null { return this.getRuleContext(0, OwnerStatementContext); } - public ifNotExists(): IfNotExistsContext | null { - return this.getRuleContext(0, IfNotExistsContext); + public ifNotExists(): IfNotExistsContext[]; + public ifNotExists(i: number): IfNotExistsContext | null; + public ifNotExists(i?: number): IfNotExistsContext[] | IfNotExistsContext | null { + if (i === undefined) { + return this.getRuleContexts(IfNotExistsContext); + } + + return this.getRuleContext(i, IfNotExistsContext); } public KW_FOLLOWS(): antlr.TerminalNode | null { return this.getToken(MySqlParser.KW_FOLLOWS, 0); @@ -53989,6 +54971,40 @@ export class ProcedureParameterContext extends antlr.ParserRuleContext { } +export class FunctionParameterContext extends antlr.ParserRuleContext { + public _paramName?: UidContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public dataType(): DataTypeContext { + return this.getRuleContext(0, DataTypeContext)!; + } + public uid(): UidContext { + return this.getRuleContext(0, UidContext)!; + } + public override get ruleIndex(): number { + return MySqlParser.RULE_functionParameter; + } + public override enterRule(listener: MySqlParserListener): void { + if(listener.enterFunctionParameter) { + listener.enterFunctionParameter(this); + } + } + public override exitRule(listener: MySqlParserListener): void { + if(listener.exitFunctionParameter) { + listener.exitFunctionParameter(this); + } + } + public override accept(visitor: MySqlParserVisitor): Result | null { + if (visitor.visitFunctionParameter) { + return visitor.visitFunctionParameter(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class RoutineOptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -64213,6 +65229,9 @@ export class QuerySpecificationContext extends antlr.ParserRuleContext { public limitClause(): LimitClauseContext | null { return this.getRuleContext(0, LimitClauseContext); } + public unionStatement(): UnionStatementContext | null { + return this.getRuleContext(0, UnionStatementContext); + } public override get ruleIndex(): number { return MySqlParser.RULE_querySpecification; } @@ -73039,70 +74058,6 @@ export class CheckTableOptionContext extends antlr.ParserRuleContext { } -export class CreateFunctionContext extends antlr.ParserRuleContext { - public _returnType?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_CREATE, 0)!; - } - public KW_FUNCTION(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_FUNCTION, 0)!; - } - public functionNameCreate(): FunctionNameCreateContext { - return this.getRuleContext(0, FunctionNameCreateContext)!; - } - public KW_RETURNS(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_RETURNS, 0)!; - } - public KW_SONAME(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_SONAME, 0)!; - } - public STRING_LITERAL(): antlr.TerminalNode { - return this.getToken(MySqlParser.STRING_LITERAL, 0)!; - } - public KW_STRING(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_STRING, 0); - } - public KW_INTEGER(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_INTEGER, 0); - } - public KW_REAL(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_REAL, 0); - } - public KW_DECIMAL(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_DECIMAL, 0); - } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_AGGREGATE, 0); - } - public ifNotExists(): IfNotExistsContext | null { - return this.getRuleContext(0, IfNotExistsContext); - } - public override get ruleIndex(): number { - return MySqlParser.RULE_createFunction; - } - public override enterRule(listener: MySqlParserListener): void { - if(listener.enterCreateFunction) { - listener.enterCreateFunction(this); - } - } - public override exitRule(listener: MySqlParserListener): void { - if(listener.exitCreateFunction) { - listener.exitCreateFunction(this); - } - } - public override accept(visitor: MySqlParserVisitor): Result | null { - if (visitor.visitCreateFunction) { - return visitor.visitCreateFunction(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class InstallComponentContext extends antlr.ParserRuleContext { public _component_name?: UidContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -84470,6 +85425,9 @@ export class KeywordsCanBeIdContext extends antlr.ParserRuleContext { public KW_RETURNED_SQLSTATE(): antlr.TerminalNode | null { return this.getToken(MySqlParser.KW_RETURNED_SQLSTATE, 0); } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_RETURNING, 0); + } public KW_RETURNS(): antlr.TerminalNode | null { return this.getToken(MySqlParser.KW_RETURNS, 0); } diff --git a/src/lib/mysql/MySqlParserListener.ts b/src/lib/mysql/MySqlParserListener.ts index 96fa7f62..3eb53370 100644 --- a/src/lib/mysql/MySqlParserListener.ts +++ b/src/lib/mysql/MySqlParserListener.ts @@ -25,6 +25,8 @@ import { CreateEventContext } from "./MySqlParser.js"; import { CreateIndexContext } from "./MySqlParser.js"; import { CreateLogfileGroupContext } from "./MySqlParser.js"; import { CreateProcedureContext } from "./MySqlParser.js"; +import { CreateFunctionContext } from "./MySqlParser.js"; +import { CreateFunctionLoadableContext } from "./MySqlParser.js"; import { CreateRoleContext } from "./MySqlParser.js"; import { CreateServerContext } from "./MySqlParser.js"; import { QueryCreateTableContext } from "./MySqlParser.js"; @@ -49,6 +51,7 @@ import { EnableTypeContext } from "./MySqlParser.js"; import { IndexTypeContext } from "./MySqlParser.js"; import { IndexOptionContext } from "./MySqlParser.js"; import { ProcedureParameterContext } from "./MySqlParser.js"; +import { FunctionParameterContext } from "./MySqlParser.js"; import { RoutineCommentContext } from "./MySqlParser.js"; import { RoutineLanguageContext } from "./MySqlParser.js"; import { RoutineBehaviorContext } from "./MySqlParser.js"; @@ -444,7 +447,6 @@ import { OptimizeTableContext } from "./MySqlParser.js"; import { RepairTableContext } from "./MySqlParser.js"; import { TableActionOptionContext } from "./MySqlParser.js"; import { CheckTableOptionContext } from "./MySqlParser.js"; -import { CreateFunctionContext } from "./MySqlParser.js"; import { InstallComponentContext } from "./MySqlParser.js"; import { VariableExprContext } from "./MySqlParser.js"; import { UninstallComponentContext } from "./MySqlParser.js"; @@ -854,6 +856,26 @@ export class MySqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreateProcedure?: (ctx: CreateProcedureContext) => void; + /** + * Enter a parse tree produced by `MySqlParser.createFunction`. + * @param ctx the parse tree + */ + enterCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Exit a parse tree produced by `MySqlParser.createFunction`. + * @param ctx the parse tree + */ + exitCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Enter a parse tree produced by `MySqlParser.createFunctionLoadable`. + * @param ctx the parse tree + */ + enterCreateFunctionLoadable?: (ctx: CreateFunctionLoadableContext) => void; + /** + * Exit a parse tree produced by `MySqlParser.createFunctionLoadable`. + * @param ctx the parse tree + */ + exitCreateFunctionLoadable?: (ctx: CreateFunctionLoadableContext) => void; /** * Enter a parse tree produced by `MySqlParser.createRole`. * @param ctx the parse tree @@ -1104,6 +1126,16 @@ export class MySqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitProcedureParameter?: (ctx: ProcedureParameterContext) => void; + /** + * Enter a parse tree produced by `MySqlParser.functionParameter`. + * @param ctx the parse tree + */ + enterFunctionParameter?: (ctx: FunctionParameterContext) => void; + /** + * Exit a parse tree produced by `MySqlParser.functionParameter`. + * @param ctx the parse tree + */ + exitFunctionParameter?: (ctx: FunctionParameterContext) => void; /** * Enter a parse tree produced by the `routineComment` * labeled alternative in `MySqlParser.routineOption`. @@ -5440,16 +5472,6 @@ export class MySqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCheckTableOption?: (ctx: CheckTableOptionContext) => void; - /** - * Enter a parse tree produced by `MySqlParser.createFunction`. - * @param ctx the parse tree - */ - enterCreateFunction?: (ctx: CreateFunctionContext) => void; - /** - * Exit a parse tree produced by `MySqlParser.createFunction`. - * @param ctx the parse tree - */ - exitCreateFunction?: (ctx: CreateFunctionContext) => void; /** * Enter a parse tree produced by `MySqlParser.installComponent`. * @param ctx the parse tree diff --git a/src/lib/mysql/MySqlParserVisitor.ts b/src/lib/mysql/MySqlParserVisitor.ts index bf5c9671..6ddd8c45 100644 --- a/src/lib/mysql/MySqlParserVisitor.ts +++ b/src/lib/mysql/MySqlParserVisitor.ts @@ -25,6 +25,8 @@ import { CreateEventContext } from "./MySqlParser.js"; import { CreateIndexContext } from "./MySqlParser.js"; import { CreateLogfileGroupContext } from "./MySqlParser.js"; import { CreateProcedureContext } from "./MySqlParser.js"; +import { CreateFunctionContext } from "./MySqlParser.js"; +import { CreateFunctionLoadableContext } from "./MySqlParser.js"; import { CreateRoleContext } from "./MySqlParser.js"; import { CreateServerContext } from "./MySqlParser.js"; import { QueryCreateTableContext } from "./MySqlParser.js"; @@ -49,6 +51,7 @@ import { EnableTypeContext } from "./MySqlParser.js"; import { IndexTypeContext } from "./MySqlParser.js"; import { IndexOptionContext } from "./MySqlParser.js"; import { ProcedureParameterContext } from "./MySqlParser.js"; +import { FunctionParameterContext } from "./MySqlParser.js"; import { RoutineCommentContext } from "./MySqlParser.js"; import { RoutineLanguageContext } from "./MySqlParser.js"; import { RoutineBehaviorContext } from "./MySqlParser.js"; @@ -444,7 +447,6 @@ import { OptimizeTableContext } from "./MySqlParser.js"; import { RepairTableContext } from "./MySqlParser.js"; import { TableActionOptionContext } from "./MySqlParser.js"; import { CheckTableOptionContext } from "./MySqlParser.js"; -import { CreateFunctionContext } from "./MySqlParser.js"; import { InstallComponentContext } from "./MySqlParser.js"; import { VariableExprContext } from "./MySqlParser.js"; import { UninstallComponentContext } from "./MySqlParser.js"; @@ -789,6 +791,18 @@ export class MySqlParserVisitor extends AbstractParseTreeVisitor * @return the visitor result */ visitCreateProcedure?: (ctx: CreateProcedureContext) => Result; + /** + * Visit a parse tree produced by `MySqlParser.createFunction`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateFunction?: (ctx: CreateFunctionContext) => Result; + /** + * Visit a parse tree produced by `MySqlParser.createFunctionLoadable`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateFunctionLoadable?: (ctx: CreateFunctionLoadableContext) => Result; /** * Visit a parse tree produced by `MySqlParser.createRole`. * @param ctx the parse tree @@ -938,6 +952,12 @@ export class MySqlParserVisitor extends AbstractParseTreeVisitor * @return the visitor result */ visitProcedureParameter?: (ctx: ProcedureParameterContext) => Result; + /** + * Visit a parse tree produced by `MySqlParser.functionParameter`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionParameter?: (ctx: FunctionParameterContext) => Result; /** * Visit a parse tree produced by the `routineComment` * labeled alternative in `MySqlParser.routineOption`. @@ -3501,12 +3521,6 @@ export class MySqlParserVisitor extends AbstractParseTreeVisitor * @return the visitor result */ visitCheckTableOption?: (ctx: CheckTableOptionContext) => Result; - /** - * Visit a parse tree produced by `MySqlParser.createFunction`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateFunction?: (ctx: CreateFunctionContext) => Result; /** * Visit a parse tree produced by `MySqlParser.installComponent`. * @param ctx the parse tree From edc8942212f0179fc2e36c029e50271b6caef475 Mon Sep 17 00:00:00 2001 From: Hayden Date: Mon, 1 Jul 2024 09:46:19 +0800 Subject: [PATCH 12/16] ci: trigger ci on next --- .github/workflows/nodejs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fe54f2b0..d8653db7 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -3,9 +3,9 @@ name: CI # Triggers the workflow on push or pull request events but only for the master branch on: push: - branches: [main] + branches: [main, next] pull_request: - branches: [main] + branches: [main, next] jobs: setup: From 1abbd945592ee33cc4d1fd586bee90b59ecc63ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9C=9C=E5=BA=8F?= <976060700@qq.com> Date: Mon, 1 Jul 2024 18:55:21 +0800 Subject: [PATCH 13/16] feat: improve errorListener msg (#281) * feat: add mysql errorListener and commonErrorListener * feat: improve other sql error msg * feat: support i18n for error msg * feat: add all sql errorMsg unit test * feat: update locale file and change i18n funtion name * test: upate error unit test --- src/locale/locale.ts | 46 ++++++++ src/parser/common/basicSQL.ts | 20 ++-- src/parser/common/parseErrorListener.ts | 98 ++++++++++++++++- src/parser/common/transform.ts | 17 +++ src/parser/common/types.ts | 2 + src/parser/flink/flinkErrorListener.ts | 76 +++++++++++++ src/parser/flink/index.ts | 6 ++ src/parser/hive/hiveErrorListener.ts | 74 +++++++++++++ src/parser/hive/index.ts | 6 ++ src/parser/impala/ImpalaErrorListener.ts | 72 +++++++++++++ src/parser/impala/index.ts | 6 ++ src/parser/mysql/index.ts | 6 ++ src/parser/mysql/mysqlErrorListener.ts | 72 +++++++++++++ src/parser/postgresql/index.ts | 6 ++ src/parser/postgresql/postgreErrorListener.ts | 80 ++++++++++++++ src/parser/spark/index.ts | 6 ++ src/parser/spark/sparkErrorListener.ts | 72 +++++++++++++ src/parser/trino/index.ts | 6 ++ src/parser/trino/trinoErrorListener.ts | 74 +++++++++++++ test/parser/flink/errorListener.test.ts | 100 ++++++++++++++++++ test/parser/hive/errorListener.test.ts | 91 ++++++++++++++++ test/parser/impala/errorListener.test.ts | 91 ++++++++++++++++ test/parser/mysql/errorListener.test.ts | 80 ++++++++++++++ test/parser/postgresql/errorListener.test.ts | 80 ++++++++++++++ test/parser/spark/errorListener.test.ts | 67 ++++++++++++ test/parser/trino/errorListener.test.ts | 63 +++++++++++ tsconfig.json | 2 + 27 files changed, 1310 insertions(+), 9 deletions(-) create mode 100644 src/locale/locale.ts create mode 100644 src/parser/common/transform.ts create mode 100644 src/parser/flink/flinkErrorListener.ts create mode 100644 src/parser/hive/hiveErrorListener.ts create mode 100644 src/parser/impala/ImpalaErrorListener.ts create mode 100644 src/parser/mysql/mysqlErrorListener.ts create mode 100644 src/parser/postgresql/postgreErrorListener.ts create mode 100644 src/parser/spark/sparkErrorListener.ts create mode 100644 src/parser/trino/trinoErrorListener.ts create mode 100644 test/parser/flink/errorListener.test.ts create mode 100644 test/parser/hive/errorListener.test.ts create mode 100644 test/parser/impala/errorListener.test.ts create mode 100644 test/parser/mysql/errorListener.test.ts create mode 100644 test/parser/postgresql/errorListener.test.ts create mode 100644 test/parser/spark/errorListener.test.ts create mode 100644 test/parser/trino/errorListener.test.ts diff --git a/src/locale/locale.ts b/src/locale/locale.ts new file mode 100644 index 00000000..4f993acf --- /dev/null +++ b/src/locale/locale.ts @@ -0,0 +1,46 @@ +const zh_CN = { + stmtInComplete: '语句不完整', + noValidPosition: '在此位置无效', + expecting: ',期望', + unfinishedMultilineComment: '未完成的多行注释', + unfinishedDoubleQuoted: '未完成的双引号字符串字变量', + unfinishedSingleQuoted: '未完成的单引号字符串字变量', + unfinishedTickQuoted: '未完成的反引号引用字符串字变量', + noValidInput: '没有有效的输入', + newObj: '一个新的对象', + existingObj: '一个存在的对象', + new: '一个新的', + existing: '一个存在的', + orKeyword: '或者一个关键字', + keyword: '一个关键字', + missing: '缺少', + at: '在', + or: '或者', +}; + +const en_US: typeof zh_CN = { + stmtInComplete: 'Statement is incomplete', + noValidPosition: 'is not valid at this position', + expecting: ', expecting ', + unfinishedMultilineComment: 'Unfinished multiline comment', + unfinishedDoubleQuoted: 'Unfinished double quoted string literal', + unfinishedSingleQuoted: 'Unfinished single quoted string literal', + unfinishedTickQuoted: 'Unfinished back tick quoted string literal', + noValidInput: 'is no valid input at all', + newObj: 'a new object', + existingObj: 'an existing object', + new: 'a new ', + existing: 'an existing ', + orKeyword: ' or a keyword', + keyword: 'a keyword', + missing: 'missing ', + at: ' at ', + or: ' or ', +}; + +const i18n = { + zh_CN, + en_US, +}; + +export { i18n }; diff --git a/src/parser/common/basicSQL.ts b/src/parser/common/basicSQL.ts index 429078ee..b835979a 100644 --- a/src/parser/common/basicSQL.ts +++ b/src/parser/common/basicSQL.ts @@ -8,13 +8,14 @@ import { ParseTreeWalker, ParseTreeListener, PredictionMode, + ANTLRErrorListener, } from 'antlr4ng'; import { CandidatesCollection, CodeCompletionCore } from 'antlr4-c3'; import { SQLParserBase } from '../../lib/SQLParserBase'; import { findCaretTokenIndex } from './findCaretTokenIndex'; import { ctxToText, tokenToWord, WordRange, TextSlice } from './textAndWord'; -import { CaretPosition, Suggestions, SyntaxSuggestion } from './types'; -import { ParseError, ErrorListener, ParseErrorListener } from './parseErrorListener'; +import { CaretPosition, LOCALE_TYPE, Suggestions, SyntaxSuggestion } from './types'; +import { ParseError, ErrorListener } from './parseErrorListener'; import { ErrorStrategy } from './errorStrategy'; import type { SplitListener } from './splitListener'; import type { EntityCollector } from './entityCollector'; @@ -78,6 +79,11 @@ export abstract class BasicSQL< */ protected abstract get splitListener(): SplitListener; + /** + * Get a new errorListener instance. + */ + protected abstract createErrorListener(errorListener: ErrorListener): ANTLRErrorListener; + /** * Get a new entityCollector instance. */ @@ -86,6 +92,8 @@ export abstract class BasicSQL< caretTokenIndex?: number ): EntityCollector; + public locale: LOCALE_TYPE = 'en_US'; + /** * Create an antlr4 lexer from input. * @param input string @@ -95,7 +103,7 @@ export abstract class BasicSQL< const lexer = this.createLexerFromCharStream(charStreams); if (errorListener) { lexer.removeErrorListeners(); - lexer.addErrorListener(new ParseErrorListener(errorListener)); + lexer.addErrorListener(this.createErrorListener(errorListener)); } return lexer; } @@ -111,7 +119,7 @@ export abstract class BasicSQL< parser.interpreter.predictionMode = PredictionMode.SLL; if (errorListener) { parser.removeErrorListeners(); - parser.addErrorListener(new ParseErrorListener(errorListener)); + parser.addErrorListener(this.createErrorListener(errorListener)); } return parser; @@ -142,7 +150,7 @@ export abstract class BasicSQL< this._lexer = this.createLexerFromCharStream(this._charStreams); this._lexer.removeErrorListeners(); - this._lexer.addErrorListener(new ParseErrorListener(this._errorListener)); + this._lexer.addErrorListener(this.createErrorListener(this._errorListener)); this._tokenStream = new CommonTokenStream(this._lexer); /** @@ -178,7 +186,7 @@ export abstract class BasicSQL< this._parsedInput = input; parser.removeErrorListeners(); - parser.addErrorListener(new ParseErrorListener(this._errorListener)); + parser.addErrorListener(this.createErrorListener(this._errorListener)); this._parseTree = parser.program(); diff --git a/src/parser/common/parseErrorListener.ts b/src/parser/common/parseErrorListener.ts index 0a1295bc..902a36f3 100644 --- a/src/parser/common/parseErrorListener.ts +++ b/src/parser/common/parseErrorListener.ts @@ -4,7 +4,14 @@ import { ANTLRErrorListener, RecognitionException, ATNSimulator, + LexerNoViableAltException, + Lexer, + Parser, + InputMismatchException, + NoViableAltException, } from 'antlr4ng'; +import { LOCALE_TYPE } from './types'; +import { transform } from './transform'; /** * Converted from {@link SyntaxError}. @@ -39,10 +46,12 @@ export interface SyntaxError { */ export type ErrorListener = (parseError: ParseError, originalError: SyntaxError) => void; -export class ParseErrorListener implements ANTLRErrorListener { +export abstract class ParseErrorListener implements ANTLRErrorListener { private _errorListener: ErrorListener; + private locale: LOCALE_TYPE; - constructor(errorListener: ErrorListener) { + constructor(errorListener: ErrorListener, locale: LOCALE_TYPE = 'en_US') { + this.locale = locale; this._errorListener = errorListener; } @@ -52,6 +61,8 @@ export class ParseErrorListener implements ANTLRErrorListener { reportContextSensitivity() {} + protected abstract getExpectedText(parser: Parser, token: Token): string; + syntaxError( recognizer: Recognizer, offendingSymbol: Token | null, @@ -60,6 +71,87 @@ export class ParseErrorListener implements ANTLRErrorListener { msg: string, e: RecognitionException ) { + let message = ''; + // If not undefined then offendingSymbol is of type Token. + if (offendingSymbol) { + let token = offendingSymbol as Token; + const parser = recognizer as Parser; + + // judge token is EOF + const isEof = token.type === Token.EOF; + if (isEof) { + token = parser.tokenStream.get(token.tokenIndex - 1); + } + const wrongText = token.text ?? ''; + + const isInComplete = isEof && wrongText !== ' '; + + const expectedText = isInComplete ? '' : this.getExpectedText(parser, token); + + if (!e) { + // handle missing or unwanted tokens. + message = msg; + if (msg.includes('extraneous')) { + message = `'${wrongText}' {noValidPosition}${ + expectedText.length ? `{expecting}${expectedText}` : '' + }`; + } + if (msg.includes('missing')) { + const regex = /missing\s+'([^']+)'/; + const match = msg.match(regex); + message = `{missing}`; + if (match) { + const missKeyword = match[1]; + message += `'${missKeyword}'`; + } else { + message += `{keyword}`; + } + message += `{at}'${wrongText}'`; + } + } else { + // handle mismatch exception or no viable alt exception + if (e instanceof InputMismatchException || e instanceof NoViableAltException) { + if (isEof) { + message = `{stmtInComplete}`; + } else { + message = `'${wrongText}' {noValidPosition}`; + } + if (expectedText.length > 0) { + message += `{expecting}${expectedText}`; + } + } else { + message = msg; + } + } + } else { + // No offending symbol, which indicates this is a lexer error. + if (e instanceof LexerNoViableAltException) { + const lexer = recognizer as Lexer; + const input = lexer.inputStream; + let text = lexer.getErrorDisplay( + input.getText(lexer._tokenStartCharIndex, input.index) + ); + switch (text[0]) { + case '/': + message = '{unfinishedMultilineComment}'; + break; + case '"': + message = '{unfinishedDoubleQuoted}'; + break; + case "'": + message = '{unfinishedSingleQuoted}'; + break; + case '`': + message = '{unfinishedTickQuoted}'; + break; + + default: + message = '"' + text + '" {noValidInput}'; + break; + } + } + } + message = transform(message, this.locale); let endCol = charPositionInLine + 1; if (offendingSymbol && offendingSymbol.text !== null) { endCol = charPositionInLine + offendingSymbol.text.length; @@ -71,7 +163,7 @@ export class ParseErrorListener implements ANTLRErrorListener { endLine: line, startColumn: charPositionInLine + 1, endColumn: endCol + 1, - message: msg, + message, }, { e, diff --git a/src/parser/common/transform.ts b/src/parser/common/transform.ts new file mode 100644 index 00000000..f4e52317 --- /dev/null +++ b/src/parser/common/transform.ts @@ -0,0 +1,17 @@ +import { LOCALE_TYPE } from './types'; +import { i18n } from '../../locale/locale'; + +/** + * transform message to locale language + * @param message error msg + * @param locale language setting + */ +function transform(message: string, locale: LOCALE_TYPE) { + const regex = /{([^}]+)}/g; + return message.replace( + regex, + (_, key: keyof (typeof i18n)[typeof locale]) => i18n[locale][key] || '' + ); +} + +export { transform }; diff --git a/src/parser/common/types.ts b/src/parser/common/types.ts index 853673ce..ffb7bdb6 100644 --- a/src/parser/common/types.ts +++ b/src/parser/common/types.ts @@ -67,3 +67,5 @@ export interface Suggestions { */ readonly keywords: string[]; } + +export type LOCALE_TYPE = 'zh_CN' | 'en_US'; diff --git a/src/parser/flink/flinkErrorListener.ts b/src/parser/flink/flinkErrorListener.ts new file mode 100644 index 00000000..61a8a157 --- /dev/null +++ b/src/parser/flink/flinkErrorListener.ts @@ -0,0 +1,76 @@ +import { CodeCompletionCore } from 'antlr4-c3'; +import { ErrorListener, ParseErrorListener } from '../common/parseErrorListener'; +import { Parser, Token } from 'antlr4ng'; +import { FlinkSqlParser } from '../../lib/flink/FlinkSqlParser'; +import { LOCALE_TYPE } from '../common/types'; + +export class FlinkErrorListener extends ParseErrorListener { + private preferredRules: Set; + + private objectNames: Map = new Map([ + [FlinkSqlParser.RULE_catalogPath, 'catalog'], + [FlinkSqlParser.RULE_catalogPathCreate, 'catalog'], + [FlinkSqlParser.RULE_databasePath, 'database'], + [FlinkSqlParser.RULE_databasePathCreate, 'database'], + [FlinkSqlParser.RULE_tablePath, 'table'], + [FlinkSqlParser.RULE_tablePathCreate, 'table'], + [FlinkSqlParser.RULE_viewPath, 'view'], + [FlinkSqlParser.RULE_viewPathCreate, 'view'], + [FlinkSqlParser.RULE_functionName, 'function'], + [FlinkSqlParser.RULE_functionNameCreate, 'function'], + [FlinkSqlParser.RULE_columnName, 'column'], + [FlinkSqlParser.RULE_columnNameCreate, 'column'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result: string[] = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case FlinkSqlParser.RULE_databasePath: + case FlinkSqlParser.RULE_tablePath: + case FlinkSqlParser.RULE_viewPath: + case FlinkSqlParser.RULE_functionName: + case FlinkSqlParser.RULE_columnName: + case FlinkSqlParser.RULE_catalogPath: { + result.push(`{existing}${name}`); + break; + } + case FlinkSqlParser.RULE_databasePathCreate: + case FlinkSqlParser.RULE_tablePathCreate: + case FlinkSqlParser.RULE_functionNameCreate: + case FlinkSqlParser.RULE_viewPathCreate: + case FlinkSqlParser.RULE_columnNameCreate: + case FlinkSqlParser.RULE_catalogPathCreate: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join('{or}'); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/src/parser/flink/index.ts b/src/parser/flink/index.ts index eb727986..61d19d22 100644 --- a/src/parser/flink/index.ts +++ b/src/parser/flink/index.ts @@ -7,6 +7,8 @@ import { BasicSQL } from '../common/basicSQL'; import { StmtContextType } from '../common/entityCollector'; import { FlinkSqlSplitListener } from './flinkSplitListener'; import { FlinkEntityCollector } from './flinkEntityCollector'; +import { ErrorListener } from '../common/parseErrorListener'; +import { FlinkErrorListener } from './flinkErrorListener'; export { FlinkSqlSplitListener, FlinkEntityCollector }; @@ -37,6 +39,10 @@ export class FlinkSQL extends BasicSQL; + + private objectNames: Map = new Map([ + [HiveSqlParser.RULE_dbSchemaName, 'database'], + [HiveSqlParser.RULE_dbSchemaNameCreate, 'database'], + [HiveSqlParser.RULE_tableName, 'table'], + [HiveSqlParser.RULE_tableNameCreate, 'table'], + [HiveSqlParser.RULE_viewName, 'view'], + [HiveSqlParser.RULE_viewNameCreate, 'view'], + [HiveSqlParser.RULE_functionNameForDDL, 'function'], + [HiveSqlParser.RULE_functionNameForInvoke, 'function'], + [HiveSqlParser.RULE_functionNameCreate, 'function'], + [HiveSqlParser.RULE_columnName, 'column'], + [HiveSqlParser.RULE_columnNameCreate, 'column'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result: string[] = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case HiveSqlParser.RULE_dbSchemaName: + case HiveSqlParser.RULE_tableName: + case HiveSqlParser.RULE_viewName: + case HiveSqlParser.RULE_functionNameForDDL: + case HiveSqlParser.RULE_functionNameForInvoke: + case HiveSqlParser.RULE_columnName: { + result.push(`{existing}${name}`); + break; + } + case HiveSqlParser.RULE_dbSchemaNameCreate: + case HiveSqlParser.RULE_tableNameCreate: + case HiveSqlParser.RULE_functionNameCreate: + case HiveSqlParser.RULE_viewNameCreate: + case HiveSqlParser.RULE_columnNameCreate: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join('{or}'); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/src/parser/hive/index.ts b/src/parser/hive/index.ts index c0c1c8ba..7bac2468 100644 --- a/src/parser/hive/index.ts +++ b/src/parser/hive/index.ts @@ -8,6 +8,8 @@ import { EntityContextType, Suggestions, SyntaxSuggestion } from '../common/type import { StmtContextType } from '../common/entityCollector'; import { HiveSqlSplitListener } from './hiveSplitListener'; import { HiveEntityCollector } from './hiveEntityCollector'; +import { ErrorListener } from '../common/parseErrorListener'; +import { HiveErrorListener } from './hiveErrorListener'; export { HiveEntityCollector, HiveSqlSplitListener }; @@ -38,6 +40,10 @@ export class HiveSQL extends BasicSQL; + + private objectNames: Map = new Map([ + [ImpalaSqlParser.RULE_databaseNamePath, 'database'], + [ImpalaSqlParser.RULE_databaseNameCreate, 'database'], + [ImpalaSqlParser.RULE_tableNamePath, 'table'], + [ImpalaSqlParser.RULE_tableNameCreate, 'table'], + [ImpalaSqlParser.RULE_viewNamePath, 'view'], + [ImpalaSqlParser.RULE_viewNameCreate, 'view'], + [ImpalaSqlParser.RULE_functionNamePath, 'function'], + [ImpalaSqlParser.RULE_functionNameCreate, 'function'], + [ImpalaSqlParser.RULE_columnNamePath, 'column'], + [ImpalaSqlParser.RULE_columnNamePathCreate, 'column'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result: string[] = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case ImpalaSqlParser.RULE_databaseNamePath: + case ImpalaSqlParser.RULE_tableNamePath: + case ImpalaSqlParser.RULE_functionNamePath: + case ImpalaSqlParser.RULE_viewNamePath: + case ImpalaSqlParser.RULE_columnNamePath: { + result.push(`{existing}${name}`); + break; + } + case ImpalaSqlParser.RULE_databaseNameCreate: + case ImpalaSqlParser.RULE_tableNameCreate: + case ImpalaSqlParser.RULE_functionNameCreate: + case ImpalaSqlParser.RULE_viewNameCreate: + case ImpalaSqlParser.RULE_columnNamePathCreate: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join(`{or}`); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/src/parser/impala/index.ts b/src/parser/impala/index.ts index 5afb965a..9902507e 100644 --- a/src/parser/impala/index.ts +++ b/src/parser/impala/index.ts @@ -7,6 +7,8 @@ import { EntityContextType, Suggestions, SyntaxSuggestion } from '../common/type import { StmtContextType } from '../common/entityCollector'; import { ImpalaSqlSplitListener } from './impalaSplitListener'; import { ImpalaEntityCollector } from './impalaEntityCollector'; +import { ErrorListener } from '../common/parseErrorListener'; +import { ImpalaErrorListener } from './ImpalaErrorListener'; export { ImpalaEntityCollector, ImpalaSqlSplitListener }; @@ -36,6 +38,10 @@ export class ImpalaSQL extends BasicSQL { return new MysqlSplitListener(); } + protected createErrorListener(_errorListener: ErrorListener) { + return new MysqlErrorListener(_errorListener, this.preferredRules, this.locale); + } + protected createEntityCollector(input: string, caretTokenIndex?: number) { return new MySqlEntityCollector(input, caretTokenIndex); } diff --git a/src/parser/mysql/mysqlErrorListener.ts b/src/parser/mysql/mysqlErrorListener.ts new file mode 100644 index 00000000..ba6c1440 --- /dev/null +++ b/src/parser/mysql/mysqlErrorListener.ts @@ -0,0 +1,72 @@ +import { CodeCompletionCore } from 'antlr4-c3'; +import { ErrorListener, ParseErrorListener } from '../common/parseErrorListener'; +import { Parser, Token } from 'antlr4ng'; +import { MySqlParser } from '../../lib/mysql/MySqlParser'; +import { LOCALE_TYPE } from '../common/types'; + +export class MysqlErrorListener extends ParseErrorListener { + private preferredRules: Set; + + private objectNames: Map = new Map([ + [MySqlParser.RULE_databaseName, 'database'], + [MySqlParser.RULE_databaseNameCreate, 'database'], + [MySqlParser.RULE_tableName, 'table'], + [MySqlParser.RULE_tableNameCreate, 'table'], + [MySqlParser.RULE_viewName, 'view'], + [MySqlParser.RULE_viewNameCreate, 'view'], + [MySqlParser.RULE_functionName, 'function'], + [MySqlParser.RULE_functionNameCreate, 'function'], + [MySqlParser.RULE_columnName, 'column'], + [MySqlParser.RULE_columnNameCreate, 'column'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result: string[] = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case MySqlParser.RULE_databaseName: + case MySqlParser.RULE_tableName: + case MySqlParser.RULE_functionName: + case MySqlParser.RULE_viewName: + case MySqlParser.RULE_columnName: { + result.push(`{existing}${name}`); + break; + } + case MySqlParser.RULE_databaseNameCreate: + case MySqlParser.RULE_tableNameCreate: + case MySqlParser.RULE_functionNameCreate: + case MySqlParser.RULE_viewNameCreate: + case MySqlParser.RULE_columnNameCreate: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join(`{or}`); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/src/parser/postgresql/index.ts b/src/parser/postgresql/index.ts index 4da31c7b..63820000 100644 --- a/src/parser/postgresql/index.ts +++ b/src/parser/postgresql/index.ts @@ -8,6 +8,8 @@ import { BasicSQL } from '../common/basicSQL'; import { StmtContextType } from '../common/entityCollector'; import { PostgreSqlEntityCollector } from './postgreEntityCollector'; import { PostgreSqlSplitListener } from './postgreSplitListener'; +import { ErrorListener } from '../common/parseErrorListener'; +import { PostgreSqlErrorListener } from './postgreErrorListener'; export { PostgreSqlEntityCollector, PostgreSqlSplitListener }; @@ -41,6 +43,10 @@ export class PostgreSQL extends BasicSQL; + + private objectNames: Map = new Map([ + [PostgreSqlParser.RULE_database_name, 'database'], + [PostgreSqlParser.RULE_database_name_create, 'database'], + [PostgreSqlParser.RULE_table_name, 'table'], + [PostgreSqlParser.RULE_table_name_create, 'table'], + [PostgreSqlParser.RULE_view_name, 'view'], + [PostgreSqlParser.RULE_view_name_create, 'view'], + [PostgreSqlParser.RULE_function_name, 'function'], + [PostgreSqlParser.RULE_function_name_create, 'function'], + [PostgreSqlParser.RULE_column_name, 'column'], + [PostgreSqlParser.RULE_column_name_create, 'column'], + [PostgreSqlParser.RULE_schema_name_create, 'schema'], + [PostgreSqlParser.RULE_schema_name, 'schema'], + [PostgreSqlParser.RULE_procedure_name_create, 'procedure'], + [PostgreSqlParser.RULE_procedure_name, 'procedure'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result: string[] = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case PostgreSqlParser.RULE_table_name: + case PostgreSqlParser.RULE_function_name: + case PostgreSqlParser.RULE_schema_name: + case PostgreSqlParser.RULE_view_name: + case PostgreSqlParser.RULE_database_name: + case PostgreSqlParser.RULE_procedure_name: + case PostgreSqlParser.RULE_column_name: { + result.push(`{existing}${name}`); + break; + } + case PostgreSqlParser.RULE_table_name_create: + case PostgreSqlParser.RULE_function_name_create: + case PostgreSqlParser.RULE_schema_name_create: + case PostgreSqlParser.RULE_view_name_create: + case PostgreSqlParser.RULE_database_name_create: + case PostgreSqlParser.RULE_procedure_name_create: + case PostgreSqlParser.RULE_column_name_create: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join('{or}'); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/src/parser/spark/index.ts b/src/parser/spark/index.ts index afbe5585..1b847fd8 100644 --- a/src/parser/spark/index.ts +++ b/src/parser/spark/index.ts @@ -7,6 +7,8 @@ import { Suggestions, EntityContextType, SyntaxSuggestion } from '../common/type import { StmtContextType } from '../common/entityCollector'; import { SparkSqlSplitListener } from './sparkSplitListener'; import { SparkEntityCollector } from './sparkEntityCollector'; +import { SparkErrorListener } from './sparkErrorListener'; +import { ErrorListener } from '../common/parseErrorListener'; export { SparkSqlSplitListener, SparkEntityCollector }; @@ -36,6 +38,10 @@ export class SparkSQL extends BasicSQL; + + private objectNames: Map = new Map([ + [SparkSqlParser.RULE_namespaceName, 'namespace'], + [SparkSqlParser.RULE_namespaceNameCreate, 'namespace'], + [SparkSqlParser.RULE_tableName, 'table'], + [SparkSqlParser.RULE_tableNameCreate, 'table'], + [SparkSqlParser.RULE_viewName, 'view'], + [SparkSqlParser.RULE_viewNameCreate, 'view'], + [SparkSqlParser.RULE_functionName, 'function'], + [SparkSqlParser.RULE_functionNameCreate, 'function'], + [SparkSqlParser.RULE_columnName, 'column'], + [SparkSqlParser.RULE_columnNameCreate, 'column'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case SparkSqlParser.RULE_namespaceName: + case SparkSqlParser.RULE_tableName: + case SparkSqlParser.RULE_viewName: + case SparkSqlParser.RULE_functionName: + case SparkSqlParser.RULE_columnName: { + result.push(`{existing}${name}`); + break; + } + case SparkSqlParser.RULE_namespaceNameCreate: + case SparkSqlParser.RULE_tableNameCreate: + case SparkSqlParser.RULE_functionNameCreate: + case SparkSqlParser.RULE_viewNameCreate: + case SparkSqlParser.RULE_columnNameCreate: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join('{or}'); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/src/parser/trino/index.ts b/src/parser/trino/index.ts index a57958a2..cf1f9db4 100644 --- a/src/parser/trino/index.ts +++ b/src/parser/trino/index.ts @@ -7,6 +7,8 @@ import { Suggestions, EntityContextType, SyntaxSuggestion } from '../common/type import { StmtContextType } from '../common/entityCollector'; import { TrinoSqlSplitListener } from './trinoSplitListener'; import { TrinoEntityCollector } from './trinoEntityCollector'; +import { ErrorListener } from '../common/parseErrorListener'; +import { TrinoErrorListener } from './trinoErrorListener'; export { TrinoSqlSplitListener, TrinoEntityCollector }; @@ -23,6 +25,10 @@ export class TrinoSQL extends BasicSQL; + + private objectNames: Map = new Map([ + [TrinoSqlParser.RULE_catalogName, 'catalog'], + [TrinoSqlParser.RULE_catalogNameCreate, 'catalog'], + [TrinoSqlParser.RULE_tableName, 'table'], + [TrinoSqlParser.RULE_tableNameCreate, 'table'], + [TrinoSqlParser.RULE_viewName, 'view'], + [TrinoSqlParser.RULE_viewNameCreate, 'view'], + [TrinoSqlParser.RULE_schemaName, 'schema'], + [TrinoSqlParser.RULE_schemaNameCreate, 'schema'], + [TrinoSqlParser.RULE_functionName, 'function'], + [TrinoSqlParser.RULE_columnName, 'column'], + [TrinoSqlParser.RULE_columnNameCreate, 'column'], + ]); + + constructor(errorListener: ErrorListener, preferredRules: Set, locale: LOCALE_TYPE) { + super(errorListener, locale); + this.preferredRules = preferredRules; + } + + public getExpectedText(parser: Parser, token: Token) { + let expectedText = ''; + + let currentContext = parser.context ?? undefined; + while (currentContext?.parent) { + currentContext = currentContext.parent; + } + + const core = new CodeCompletionCore(parser); + core.preferredRules = this.preferredRules; + const candidates = core.collectCandidates(token.tokenIndex, currentContext); + + if (candidates.rules.size) { + const result: string[] = []; + // get expectedText as collect rules first + for (const candidate of candidates.rules) { + const [ruleType] = candidate; + const name = this.objectNames.get(ruleType); + switch (ruleType) { + case TrinoSqlParser.RULE_catalogName: + case TrinoSqlParser.RULE_schemaName: + case TrinoSqlParser.RULE_tableName: + case TrinoSqlParser.RULE_viewName: + case TrinoSqlParser.RULE_functionName: + case TrinoSqlParser.RULE_columnName: { + result.push(`{existing}${name}`); + break; + } + case TrinoSqlParser.RULE_catalogNameCreate: + case TrinoSqlParser.RULE_tableNameCreate: + case TrinoSqlParser.RULE_schemaNameCreate: + case TrinoSqlParser.RULE_viewNameCreate: + case TrinoSqlParser.RULE_tableNameCreate: { + result.push(`{new}${name}`); + break; + } + } + } + expectedText = result.join('{or}'); + } + if (candidates.tokens.size) { + expectedText += expectedText ? '{orKeyword}' : '{keyword}'; + } + return expectedText; + } +} diff --git a/test/parser/flink/errorListener.test.ts b/test/parser/flink/errorListener.test.ts new file mode 100644 index 00000000..1a82a9b3 --- /dev/null +++ b/test/parser/flink/errorListener.test.ts @@ -0,0 +1,100 @@ +import { FlinkSQL } from 'src/parser/flink'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `SHOW CREATE TABLE`; +const sql2 = `SELECT * FROM `; +const sql3 = `DROP VIEW IF EXIsST aaa aaa`; +const sql4 = `SELECT * froma aaa`; +const sql5 = `CREATE VIEW `; +const sql6 = `DROP CATALOG `; + +describe('FlinkSQL validate invalid sql and test msg', () => { + const flink = new FlinkSQL(); + + test('validate random text', () => { + const errors = flink.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = flink.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = flink.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + 'Statement is incomplete, expecting an existing table or an existing view or a keyword' + ); + }); + + test('validate unComplete sql3', () => { + const errors = flink.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`missing 'EXISTS' at 'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' is not valid at this position`); + }); + + test('validate unComplete sql4', () => { + const errors = flink.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'aaa' is not valid at this position, expecting an existing column or a keyword` + ); + }); + + test('validate unComplete sql5', () => { + const errors = flink.validate(sql5); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `Statement is incomplete, expecting a new view or a keyword` + ); + }); + + test('validate unComplete sql6', () => { + const errors = flink.validate(sql6); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `Statement is incomplete, expecting an existing catalog or a keyword` + ); + }); + + test('validate random text cn', () => { + flink.locale = 'zh_CN'; + const errors = flink.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = flink.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = flink.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + '语句不完整,期望一个存在的table或者一个存在的view或者一个关键字' + ); + }); + + test('validate unComplete sql3 cn', () => { + const errors = flink.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`缺少'EXISTS'在'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' 在此位置无效`); + }); + + test('validate unComplete sql4 cn', () => { + const errors = flink.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'aaa' 在此位置无效,期望一个存在的column或者一个关键字`); + }); +}); diff --git a/test/parser/hive/errorListener.test.ts b/test/parser/hive/errorListener.test.ts new file mode 100644 index 00000000..1bc9b6a1 --- /dev/null +++ b/test/parser/hive/errorListener.test.ts @@ -0,0 +1,91 @@ +import { HiveSQL } from 'src/parser/hive'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `SHOW CREATE TABLE`; +const sql2 = `SELECT * FROM `; +const sql3 = `DROP VIEW IF EXIsST aaa aaa`; +const sql4 = `SELECT * froma aaa`; +const sql5 = `CREATE TABLE `; + +describe('HiveSQL validate invalid sql and test msg', () => { + const hive = new HiveSQL(); + + test('validate random text', () => { + const errors = hive.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = hive.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = hive.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + 'Statement is incomplete, expecting an existing table or an existing view or a keyword' + ); + }); + + test('validate unComplete sql3', () => { + const errors = hive.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`missing 'EXISTS' at 'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' is not valid at this position`); + }); + + test('validate unComplete sql4', () => { + const errors = hive.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'froma' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql5', () => { + const errors = hive.validate(sql5); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `Statement is incomplete, expecting a new table or a keyword` + ); + }); + + test('validate random text cn', () => { + hive.locale = 'zh_CN'; + const errors = hive.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = hive.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = hive.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + '语句不完整,期望一个存在的table或者一个存在的view或者一个关键字' + ); + }); + + test('validate unComplete sql3 cn', () => { + const errors = hive.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`缺少'EXISTS'在'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' 在此位置无效`); + }); + + test('validate unComplete sql4 cn', () => { + const errors = hive.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'froma' 在此位置无效,期望一个关键字`); + }); +}); diff --git a/test/parser/impala/errorListener.test.ts b/test/parser/impala/errorListener.test.ts new file mode 100644 index 00000000..36a91b40 --- /dev/null +++ b/test/parser/impala/errorListener.test.ts @@ -0,0 +1,91 @@ +import { ImpalaSQL } from 'src/parser/impala'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `SHOW CREATE TABLE`; +const sql2 = `SELECT * FROM `; +const sql3 = `DROP VIEW IF EXIsST aaa aaa`; +const sql4 = `SELECT * froma aaa`; +const sql5 = `CREATE VIEW `; + +describe('ImpalaSQL validate invalid sql and test msg', () => { + const impala = new ImpalaSQL(); + + test('validate random text', () => { + const errors = impala.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = impala.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = impala.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + 'Statement is incomplete, expecting an existing table or an existing view or a keyword' + ); + }); + + test('validate unComplete sql3', () => { + const errors = impala.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`missing 'EXISTS' at 'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' is not valid at this position`); + }); + + test('validate unComplete sql4', () => { + const errors = impala.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'froma' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql5', () => { + const errors = impala.validate(sql5); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `Statement is incomplete, expecting a new view or a keyword` + ); + }); + + test('validate random text cn', () => { + impala.locale = 'zh_CN'; + const errors = impala.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = impala.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = impala.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + '语句不完整,期望一个存在的table或者一个存在的view或者一个关键字' + ); + }); + + test('validate unComplete sql3 cn', () => { + const errors = impala.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`缺少'EXISTS'在'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' 在此位置无效`); + }); + + test('validate unComplete sql4 cn', () => { + const errors = impala.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'froma' 在此位置无效,期望一个关键字`); + }); +}); diff --git a/test/parser/mysql/errorListener.test.ts b/test/parser/mysql/errorListener.test.ts new file mode 100644 index 00000000..443666bf --- /dev/null +++ b/test/parser/mysql/errorListener.test.ts @@ -0,0 +1,80 @@ +import { MySQL } from 'src/parser/mysql'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `SHOW CREATE TABLE`; +const sql2 = `CREATE DATABASE `; +const sql3 = `SHOW CREATE DATABASE IF NOT EXIsST aaa aaa`; +const sql4 = `SELECT * froma aaa`; + +describe('MySQL validate invalid sql and test msg', () => { + const mysql = new MySQL(); + + test('validate random text', () => { + const errors = mysql.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = mysql.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = mysql.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + 'Statement is incomplete, expecting a new database or a keyword' + ); + }); + + test('validate unComplete sql3', () => { + const errors = mysql.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`missing 'EXISTS' at 'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' is not valid at this position`); + }); + + test('validate unComplete sql4', () => { + const errors = mysql.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'froma' is not valid at this position, expecting an existing column or a keyword` + ); + }); + + test('validate random text cn', () => { + mysql.locale = 'zh_CN'; + const errors = mysql.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = mysql.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = mysql.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toEqual('语句不完整,期望一个新的database或者一个关键字'); + }); + + test('validate unComplete sql3 cn', () => { + const errors = mysql.validate(sql3); + expect(errors.length).toBe(2); + expect(errors[0].message).toBe(`缺少'EXISTS'在'EXIsST'`); + expect(errors[1].message).toBe(`'aaa' 在此位置无效`); + }); + + test('validate unComplete sql4 cn', () => { + const errors = mysql.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'froma' 在此位置无效,期望一个存在的column或者一个关键字`); + }); +}); diff --git a/test/parser/postgresql/errorListener.test.ts b/test/parser/postgresql/errorListener.test.ts new file mode 100644 index 00000000..153f31ab --- /dev/null +++ b/test/parser/postgresql/errorListener.test.ts @@ -0,0 +1,80 @@ +import { PostgreSQL } from 'src/parser/postgresql'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `ALTER EVENT`; +const sql2 = `CREATE FUNCTION `; +const sql3 = `SELECT name, altitude FROM ONLY cities WHERE `; +const sql4 = `DROP PROCEDURE name1 a`; + +describe('PostgreSQL validate invalid sql and test msg', () => { + const pgSQL = new PostgreSQL(); + + test('validate random text', () => { + const errors = pgSQL.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = pgSQL.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = pgSQL.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete, expecting a new function'); + }); + + test('validate unComplete sql3', () => { + const errors = pgSQL.validate(sql3); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `Statement is incomplete, expecting an existing function or an existing column or a keyword` + ); + }); + + test('validate unComplete sql4', () => { + const errors = pgSQL.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'a' is not valid at this position, expecting an existing procedure or a keyword` + ); + }); + + test('validate random text cn', () => { + pgSQL.locale = 'zh_CN'; + const errors = pgSQL.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = pgSQL.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = pgSQL.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toEqual('语句不完整,期望一个新的function'); + }); + + test('validate unComplete sql3 cn', () => { + const errors = pgSQL.validate(sql3); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `语句不完整,期望一个存在的function或者一个存在的column或者一个关键字` + ); + }); + + test('validate unComplete sql4 cn', () => { + const errors = pgSQL.validate(sql4); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'a' 在此位置无效,期望一个存在的procedure或者一个关键字`); + }); +}); diff --git a/test/parser/spark/errorListener.test.ts b/test/parser/spark/errorListener.test.ts new file mode 100644 index 00000000..bc356160 --- /dev/null +++ b/test/parser/spark/errorListener.test.ts @@ -0,0 +1,67 @@ +import { SparkSQL } from 'src/parser/spark'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `ALTER VIEW`; +const sql2 = `SELECT * FROM `; +const sql3 = `DROP SCHEMA aaa aaa`; + +describe('SparkSQL validate invalid sql and test msg', () => { + const spark = new SparkSQL(); + + test('validate random text', () => { + const errors = spark.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = spark.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = spark.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + 'Statement is incomplete, expecting an existing table or an existing view or an existing function or a keyword' + ); + }); + + test('validate unComplete sql3', () => { + const errors = spark.validate(sql3); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'aaa' is not valid at this position, expecting an existing namespace or a keyword` + ); + }); + + test('validate random text cn', () => { + spark.locale = 'zh_CN'; + const errors = spark.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = spark.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = spark.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + '语句不完整,期望一个存在的table或者一个存在的view或者一个存在的function或者一个关键字' + ); + }); + + test('validate unComplete sql3 cn', () => { + const errors = spark.validate(sql3); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'aaa' 在此位置无效,期望一个存在的namespace或者一个关键字`); + }); +}); diff --git a/test/parser/trino/errorListener.test.ts b/test/parser/trino/errorListener.test.ts new file mode 100644 index 00000000..c4d174d6 --- /dev/null +++ b/test/parser/trino/errorListener.test.ts @@ -0,0 +1,63 @@ +import { TrinoSQL } from 'src/parser/trino'; + +const randomText = `dhsdansdnkla ndjnsla ndnalks`; +const sql1 = `SHOW CREATE TABLE`; +const sql2 = `CREATE VIEW `; +const sql3 = `SHOW CREATE TABLE aaa aaa`; + +describe('TrinoSQL validate invalid sql and test msg', () => { + const trinoSQL = new TrinoSQL(); + + test('validate random text', () => { + const errors = trinoSQL.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'dhsdansdnkla' is not valid at this position, expecting a keyword` + ); + }); + + test('validate unComplete sql1', () => { + const errors = trinoSQL.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete'); + }); + + test('validate unComplete sql2', () => { + const errors = trinoSQL.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('Statement is incomplete, expecting a new view'); + }); + + test('validate unComplete sql3', () => { + const errors = trinoSQL.validate(sql3); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe( + `'aaa' is not valid at this position, expecting an existing table or a keyword` + ); + }); + + test('validate random text cn', () => { + trinoSQL.locale = 'zh_CN'; + const errors = trinoSQL.validate(randomText); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'dhsdansdnkla' 在此位置无效,期望一个关键字`); + }); + + test('validate unComplete sql1 cn', () => { + const errors = trinoSQL.validate(sql1); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe('语句不完整'); + }); + + test('validate unComplete sql2 cn', () => { + const errors = trinoSQL.validate(sql2); + expect(errors.length).toBe(1); + expect(errors[0].message).toEqual('语句不完整,期望一个新的view'); + }); + + test('validate unComplete sql3 cn', () => { + const errors = trinoSQL.validate(sql3); + expect(errors.length).toBe(1); + expect(errors[0].message).toBe(`'aaa' 在此位置无效,期望一个存在的table或者一个关键字`); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 2329d6f8..c27a683b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,8 @@ "noImplicitReturns": true, "noImplicitThis": true, "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, "lib": [ "ESNext", "DOM" From cfe6f447a9ed0c9c1df2d4c3f2e9f6444ebac20b Mon Sep 17 00:00:00 2001 From: XCynthia <942884029@qq.com> Date: Fri, 5 Jul 2024 15:52:55 +0800 Subject: [PATCH 14/16] feat(flinksql): collect comment, type attribute for entity (#319) * feat(flinksql): collect comment, type attribute for entity * feat(flinksql): delete console log * fix(#305): delete function ctxToWord,using ctxToText instead of ctxToWord * feat: update attribute's type * feat(flinksql): update flinksql's entitycollect unit test * feat: optimize interface and update unit test * feat: update collect attr detail * feat: optimize interface and some function's arguments * feat: add comment and update params' name * feat: collect alias in select statement * feat: update collect attribute function and update unit test --------- Co-authored-by: zhaoge <> --- src/grammar/flink/FlinkSqlParser.g4 | 41 +- src/lib/flink/FlinkSqlParser.interp | 3 +- src/lib/flink/FlinkSqlParser.ts | 4669 ++++++++--------- src/lib/flink/FlinkSqlParserListener.ts | 11 - src/lib/flink/FlinkSqlParserVisitor.ts | 7 - src/parser/common/entityCollector.ts | 228 +- src/parser/common/textAndWord.ts | 34 +- src/parser/flink/flinkEntityCollector.ts | 38 +- .../contextCollect/entityCollector.test.ts | 236 +- .../flink/contextCollect/fixtures/common.sql | 8 +- .../contextCollect/entityCollector.test.ts | 194 +- .../contextCollect/entityCollector.test.ts | 183 +- .../contextCollect/entityCollector.test.ts | 150 +- .../contextCollect/entityCollector.test.ts | 153 +- .../contextCollect/entityCollector.test.ts | 96 +- .../contextCollect/entityCollector.test.ts | 78 +- 16 files changed, 3212 insertions(+), 2917 deletions(-) diff --git a/src/grammar/flink/FlinkSqlParser.g4 b/src/grammar/flink/FlinkSqlParser.g4 index 4d69392b..b4082097 100644 --- a/src/grammar/flink/FlinkSqlParser.g4 +++ b/src/grammar/flink/FlinkSqlParser.g4 @@ -156,8 +156,9 @@ createTable simpleCreateTable : KW_CREATE KW_TEMPORARY? KW_TABLE ifNotExists? tablePathCreate LR_BRACKET columnOptionDefinition ( COMMA columnOptionDefinition - )* (COMMA watermarkDefinition)? (COMMA tableConstraint)? (COMMA selfDefinitionClause)? RR_BRACKET commentSpec? partitionDefinition? withOption - likeDefinition? + )* (COMMA watermarkDefinition)? (COMMA tableConstraint)? (COMMA selfDefinitionClause)? RR_BRACKET ( + KW_COMMENT comment=STRING_LITERAL + )? partitionDefinition? withOption likeDefinition? ; /* @@ -175,7 +176,7 @@ columnOptionDefinition ; physicalColumnDefinition - : columnNameCreate columnType columnConstraint? commentSpec? + : columnNameCreate columnType columnConstraint? (KW_COMMENT comment=STRING_LITERAL)? ; columnNameCreate @@ -193,8 +194,8 @@ columnNameList ; columnType - : typeName=(KW_DATE | KW_BOOLEAN | KW_NULL) - | typeName=( + : colType=(KW_DATE | KW_BOOLEAN | KW_NULL) + | colType=( KW_CHAR | KW_VARCHAR | KW_STRING @@ -210,12 +211,12 @@ columnType | KW_TIMESTAMP_LTZ | KW_DATETIME ) lengthOneDimension? - | typeName=KW_TIMESTAMP lengthOneDimension? ((KW_WITHOUT | KW_WITH) KW_LOCAL? KW_TIME KW_ZONE)? - | typeName=(KW_DECIMAL | KW_DEC | KW_NUMERIC | KW_FLOAT | KW_DOUBLE) lengthTwoOptionalDimension? - | type=(KW_ARRAY | KW_MULTISET) lengthOneTypeDimension? - | type=KW_MAP mapTypeDimension? - | type=KW_ROW rowTypeDimension? - | type=KW_RAW lengthTwoStringDimension? + | colType=KW_TIMESTAMP lengthOneDimension? ((KW_WITHOUT | KW_WITH) KW_LOCAL? KW_TIME KW_ZONE)? + | colType=(KW_DECIMAL | KW_DEC | KW_NUMERIC | KW_FLOAT | KW_DOUBLE) lengthTwoOptionalDimension? + | colType=(KW_ARRAY | KW_MULTISET) lengthOneTypeDimension? + | colType=KW_MAP mapTypeDimension? + | colType=KW_ROW rowTypeDimension? + | colType=KW_RAW lengthTwoStringDimension? ; lengthOneDimension @@ -247,10 +248,6 @@ columnConstraint | KW_NOT? KW_NULL ; -commentSpec - : KW_COMMENT STRING_LITERAL - ; - metadataColumnDefinition : columnNameCreate columnType KW_METADATA (KW_FROM metadataKey)? KW_VIRTUAL? ; @@ -260,7 +257,7 @@ metadataKey ; computedColumnDefinition - : columnNameCreate KW_AS computedColumnExpression commentSpec? + : columnNameCreate KW_AS computedColumnExpression (KW_COMMENT comment=STRING_LITERAL)? ; // 计算表达式 @@ -316,11 +313,13 @@ createCatalog ; createDatabase - : KW_CREATE KW_DATABASE ifNotExists? databasePathCreate commentSpec? withOption + : KW_CREATE KW_DATABASE ifNotExists? databasePathCreate (KW_COMMENT comment=STRING_LITERAL)? withOption ; createView - : KW_CREATE KW_TEMPORARY? KW_VIEW ifNotExists? viewPathCreate columnNameList? commentSpec? KW_AS queryStatement + : KW_CREATE KW_TEMPORARY? KW_VIEW ifNotExists? viewPathCreate columnNameList? ( + KW_COMMENT comment=STRING_LITERAL + )? KW_AS queryStatement ; createFunction @@ -513,8 +512,8 @@ tableReference ; tablePrimary - : KW_TABLE? tablePath systemTimePeriod? (KW_AS? correlationName)? - | viewPath systemTimePeriod? (KW_AS? correlationName)? + : KW_TABLE? tablePath systemTimePeriod? + | viewPath systemTimePeriod? | KW_LATERAL KW_TABLE LR_BRACKET functionName LR_BRACKET functionParam (COMMA functionParam)* RR_BRACKET RR_BRACKET | KW_LATERAL? LR_BRACKET queryStatement RR_BRACKET | KW_UNNEST LR_BRACKET expression RR_BRACKET @@ -834,7 +833,7 @@ intervalValue ; tableAlias - : KW_AS? identifier identifierList? + : KW_AS? alias=identifier identifierList? ; errorCapturingIdentifier diff --git a/src/lib/flink/FlinkSqlParser.interp b/src/lib/flink/FlinkSqlParser.interp index 17c3bd11..06cdef61 100644 --- a/src/lib/flink/FlinkSqlParser.interp +++ b/src/lib/flink/FlinkSqlParser.interp @@ -1123,7 +1123,6 @@ lengthOneTypeDimension mapTypeDimension rowTypeDimension columnConstraint -commentSpec metadataColumnDefinition metadataKey computedColumnDefinition @@ -1278,4 +1277,4 @@ nonReservedKeywords atn: -[4, 1, 541, 2272, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 1, 0, 5, 0, 378, 8, 0, 10, 0, 12, 0, 381, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 387, 8, 1, 1, 1, 3, 1, 390, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 404, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 422, 8, 4, 1, 5, 1, 5, 3, 5, 426, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 435, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 440, 8, 7, 1, 8, 1, 8, 1, 8, 5, 8, 445, 8, 8, 10, 8, 12, 8, 448, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 458, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 465, 8, 11, 10, 11, 12, 11, 468, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 479, 8, 12, 1, 12, 3, 12, 482, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 489, 8, 12, 1, 12, 3, 12, 492, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 500, 8, 12, 1, 12, 1, 12, 3, 12, 504, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 509, 8, 12, 1, 12, 3, 12, 512, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 519, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 527, 8, 15, 1, 16, 1, 16, 3, 16, 531, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 543, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 551, 8, 18, 1, 18, 1, 18, 3, 18, 555, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 587, 8, 18, 1, 19, 3, 19, 590, 8, 19, 1, 19, 4, 19, 593, 8, 19, 11, 19, 12, 19, 594, 1, 20, 1, 20, 3, 20, 599, 8, 20, 1, 21, 1, 21, 3, 21, 603, 8, 21, 1, 21, 1, 21, 3, 21, 607, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 614, 8, 21, 10, 21, 12, 21, 617, 9, 21, 1, 21, 1, 21, 3, 21, 621, 8, 21, 1, 21, 1, 21, 3, 21, 625, 8, 21, 1, 21, 1, 21, 3, 21, 629, 8, 21, 1, 21, 1, 21, 3, 21, 633, 8, 21, 1, 21, 3, 21, 636, 8, 21, 1, 21, 1, 21, 3, 21, 640, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 645, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 651, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 656, 8, 23, 1, 24, 1, 24, 1, 24, 3, 24, 661, 8, 24, 1, 24, 3, 24, 664, 8, 24, 1, 25, 1, 25, 3, 25, 668, 8, 25, 1, 26, 1, 26, 3, 26, 672, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 678, 8, 27, 10, 27, 12, 27, 681, 9, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 3, 28, 688, 8, 28, 1, 28, 1, 28, 3, 28, 692, 8, 28, 1, 28, 1, 28, 3, 28, 696, 8, 28, 1, 28, 1, 28, 3, 28, 700, 8, 28, 1, 28, 1, 28, 3, 28, 704, 8, 28, 1, 28, 1, 28, 3, 28, 708, 8, 28, 1, 28, 1, 28, 3, 28, 712, 8, 28, 1, 28, 1, 28, 3, 28, 716, 8, 28, 1, 28, 1, 28, 3, 28, 720, 8, 28, 3, 28, 722, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 732, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 740, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 762, 8, 34, 10, 34, 12, 34, 765, 9, 34, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 771, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 777, 8, 35, 1, 35, 3, 35, 780, 8, 35, 1, 35, 3, 35, 783, 8, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 793, 8, 37, 1, 37, 3, 37, 796, 8, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 804, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 3, 42, 816, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 838, 8, 46, 10, 46, 12, 46, 841, 9, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 850, 8, 47, 10, 47, 12, 47, 853, 9, 47, 1, 47, 1, 47, 3, 47, 857, 8, 47, 1, 48, 1, 48, 3, 48, 861, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 867, 8, 49, 10, 49, 12, 49, 870, 9, 49, 1, 49, 3, 49, 873, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 879, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 889, 8, 52, 1, 52, 1, 52, 3, 52, 893, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 3, 53, 899, 8, 53, 1, 53, 1, 53, 3, 53, 903, 8, 53, 1, 53, 1, 53, 3, 53, 907, 8, 53, 1, 53, 3, 53, 910, 8, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 919, 8, 54, 1, 54, 1, 54, 3, 54, 923, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 930, 8, 54, 1, 54, 3, 54, 933, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 941, 8, 55, 10, 55, 12, 55, 944, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 3, 57, 951, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 959, 8, 57, 1, 58, 1, 58, 3, 58, 963, 8, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 978, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 997, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1008, 8, 66, 1, 66, 1, 66, 3, 66, 1012, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1019, 8, 66, 1, 67, 1, 67, 1, 67, 3, 67, 1024, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 1030, 8, 68, 1, 68, 1, 68, 3, 68, 1034, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 1041, 8, 69, 1, 69, 1, 69, 3, 69, 1045, 8, 69, 1, 70, 1, 70, 3, 70, 1049, 8, 70, 1, 70, 1, 70, 3, 70, 1053, 8, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1061, 8, 71, 1, 71, 1, 71, 3, 71, 1065, 8, 71, 1, 71, 1, 71, 1, 72, 3, 72, 1070, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1076, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1082, 8, 73, 1, 73, 3, 73, 1085, 8, 73, 1, 73, 1, 73, 3, 73, 1089, 8, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 1098, 8, 75, 10, 75, 12, 75, 1101, 9, 75, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 1107, 8, 76, 10, 76, 12, 76, 1110, 9, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 4, 77, 1121, 8, 77, 11, 77, 12, 77, 1122, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 4, 78, 1133, 8, 78, 11, 78, 12, 78, 1134, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1150, 8, 79, 1, 79, 3, 79, 1153, 8, 79, 1, 79, 1, 79, 3, 79, 1157, 8, 79, 1, 79, 3, 79, 1160, 8, 79, 3, 79, 1162, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1167, 8, 79, 1, 79, 1, 79, 3, 79, 1171, 8, 79, 1, 79, 3, 79, 1174, 8, 79, 5, 79, 1176, 8, 79, 10, 79, 12, 79, 1179, 9, 79, 1, 80, 1, 80, 1, 80, 1, 80, 5, 80, 1185, 8, 80, 10, 80, 12, 80, 1188, 9, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 1194, 8, 81, 10, 81, 12, 81, 1197, 9, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 1204, 8, 82, 10, 82, 12, 82, 1207, 9, 82, 1, 82, 1, 82, 3, 82, 1211, 8, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 3, 84, 1222, 8, 84, 1, 84, 3, 84, 1225, 8, 84, 1, 84, 3, 84, 1228, 8, 84, 1, 84, 3, 84, 1231, 8, 84, 1, 84, 3, 84, 1234, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1240, 8, 84, 1, 85, 1, 85, 3, 85, 1244, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 5, 85, 1250, 8, 85, 10, 85, 12, 85, 1253, 9, 85, 3, 85, 1255, 8, 85, 1, 86, 1, 86, 1, 86, 3, 86, 1260, 8, 86, 1, 86, 3, 86, 1263, 8, 86, 1, 86, 1, 86, 3, 86, 1267, 8, 86, 1, 86, 3, 86, 1270, 8, 86, 3, 86, 1272, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1286, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 5, 89, 1295, 8, 89, 10, 89, 12, 89, 1298, 9, 89, 1, 89, 1, 89, 3, 89, 1302, 8, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1310, 8, 89, 1, 89, 3, 89, 1313, 8, 89, 1, 89, 3, 89, 1316, 8, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1321, 8, 89, 5, 89, 1323, 8, 89, 10, 89, 12, 89, 1326, 9, 89, 1, 90, 1, 90, 3, 90, 1330, 8, 90, 1, 91, 3, 91, 1333, 8, 91, 1, 91, 1, 91, 3, 91, 1337, 8, 91, 1, 91, 3, 91, 1340, 8, 91, 1, 91, 3, 91, 1343, 8, 91, 1, 91, 1, 91, 3, 91, 1347, 8, 91, 1, 91, 3, 91, 1350, 8, 91, 1, 91, 3, 91, 1353, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 1363, 8, 91, 10, 91, 12, 91, 1366, 9, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1372, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1383, 8, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 5, 96, 1408, 8, 96, 10, 96, 12, 96, 1411, 9, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1432, 8, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1445, 8, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1455, 8, 103, 10, 103, 12, 103, 1458, 9, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1468, 8, 104, 10, 104, 12, 104, 1471, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1480, 8, 104, 10, 104, 12, 104, 1483, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1492, 8, 104, 10, 104, 12, 104, 1495, 9, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1500, 8, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 1525, 8, 111, 10, 111, 12, 111, 1528, 9, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 3, 113, 1535, 8, 113, 1, 113, 1, 113, 3, 113, 1539, 8, 113, 1, 113, 3, 113, 1542, 8, 113, 1, 113, 3, 113, 1545, 8, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 1552, 8, 114, 1, 114, 3, 114, 1555, 8, 114, 1, 114, 3, 114, 1558, 8, 114, 1, 114, 3, 114, 1561, 8, 114, 1, 114, 3, 114, 1564, 8, 114, 1, 114, 3, 114, 1567, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 1572, 8, 114, 1, 114, 3, 114, 1575, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 1582, 8, 115, 10, 115, 12, 115, 1585, 9, 115, 1, 116, 1, 116, 3, 116, 1589, 8, 116, 1, 116, 1, 116, 3, 116, 1593, 8, 116, 1, 117, 1, 117, 1, 117, 3, 117, 1598, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1605, 8, 118, 10, 118, 12, 118, 1608, 9, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1626, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 5, 120, 1632, 8, 120, 10, 120, 12, 120, 1635, 9, 120, 1, 121, 1, 121, 1, 121, 4, 121, 1640, 8, 121, 11, 121, 12, 121, 1641, 1, 121, 1, 121, 3, 121, 1646, 8, 121, 1, 122, 1, 122, 3, 122, 1650, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1660, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1686, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 1692, 8, 125, 10, 125, 12, 125, 1695, 9, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 3, 126, 1706, 8, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1728, 8, 130, 3, 130, 1730, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1741, 8, 130, 1, 130, 5, 130, 1744, 8, 130, 10, 130, 12, 130, 1747, 9, 130, 1, 131, 3, 131, 1750, 8, 131, 1, 131, 1, 131, 3, 131, 1754, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1761, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1768, 8, 131, 10, 131, 12, 131, 1771, 9, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1776, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1789, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1796, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1801, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1807, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1814, 8, 131, 3, 131, 1816, 8, 131, 1, 132, 3, 132, 1819, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 5, 132, 1829, 8, 132, 10, 132, 12, 132, 1832, 9, 132, 1, 132, 1, 132, 3, 132, 1836, 8, 132, 1, 132, 3, 132, 1839, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1845, 8, 132, 3, 132, 1847, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1853, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1874, 8, 133, 10, 133, 12, 133, 1877, 9, 133, 1, 134, 1, 134, 1, 134, 4, 134, 1882, 8, 134, 11, 134, 12, 134, 1883, 1, 134, 1, 134, 3, 134, 1888, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 4, 134, 1895, 8, 134, 11, 134, 12, 134, 1896, 1, 134, 1, 134, 3, 134, 1901, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1917, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1926, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1950, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1955, 8, 134, 10, 134, 12, 134, 1958, 9, 134, 3, 134, 1960, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1971, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1978, 8, 134, 10, 134, 12, 134, 1981, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 3, 136, 1987, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 3, 137, 1993, 8, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 3, 140, 2001, 8, 140, 1, 141, 1, 141, 1, 141, 3, 141, 2006, 8, 141, 1, 142, 1, 142, 3, 142, 2010, 8, 142, 1, 143, 1, 143, 1, 143, 4, 143, 2015, 8, 143, 11, 143, 12, 143, 2016, 1, 144, 1, 144, 1, 144, 3, 144, 2022, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 3, 146, 2030, 8, 146, 1, 146, 1, 146, 3, 146, 2034, 8, 146, 1, 147, 3, 147, 2037, 8, 147, 1, 147, 1, 147, 3, 147, 2041, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 4, 149, 2048, 8, 149, 11, 149, 12, 149, 2049, 1, 149, 3, 149, 2053, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 5, 151, 2062, 8, 151, 10, 151, 12, 151, 2065, 9, 151, 1, 152, 1, 152, 1, 152, 3, 152, 2070, 8, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 3, 158, 2088, 8, 158, 1, 159, 1, 159, 1, 159, 3, 159, 2093, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 2098, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 2105, 8, 160, 3, 160, 2107, 8, 160, 1, 161, 1, 161, 1, 161, 3, 161, 2112, 8, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 2119, 8, 161, 3, 161, 2121, 8, 161, 1, 162, 1, 162, 1, 162, 3, 162, 2126, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 2133, 8, 162, 3, 162, 2135, 8, 162, 1, 163, 1, 163, 1, 163, 3, 163, 2140, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 2147, 8, 163, 3, 163, 2149, 8, 163, 1, 164, 1, 164, 1, 164, 5, 164, 2154, 8, 164, 10, 164, 12, 164, 2157, 9, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 2173, 8, 168, 10, 168, 12, 168, 2176, 9, 168, 1, 168, 1, 168, 1, 169, 1, 169, 3, 169, 2182, 8, 169, 1, 169, 3, 169, 2185, 8, 169, 1, 170, 1, 170, 1, 170, 3, 170, 2190, 8, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2196, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2204, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2220, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2229, 8, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 2239, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 2246, 8, 177, 1, 177, 3, 177, 2249, 8, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 2155, 5, 158, 178, 260, 266, 268, 188, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 0, 45, 2, 0, 109, 109, 450, 450, 3, 0, 45, 45, 128, 128, 188, 188, 4, 0, 42, 42, 90, 90, 422, 422, 464, 464, 2, 0, 441, 441, 447, 447, 2, 0, 151, 151, 170, 170, 2, 0, 437, 437, 489, 489, 2, 0, 482, 485, 487, 487, 3, 0, 32, 32, 91, 91, 244, 244, 11, 0, 28, 29, 35, 35, 46, 46, 92, 92, 178, 179, 344, 344, 360, 360, 378, 378, 381, 381, 387, 387, 416, 417, 2, 0, 433, 433, 435, 435, 4, 0, 101, 102, 115, 115, 144, 144, 246, 246, 2, 0, 13, 13, 231, 231, 2, 0, 455, 455, 462, 462, 3, 0, 5, 5, 270, 270, 444, 444, 3, 0, 266, 266, 455, 455, 462, 462, 3, 0, 425, 425, 458, 458, 477, 477, 3, 0, 330, 330, 465, 465, 481, 481, 2, 0, 440, 440, 490, 490, 2, 0, 183, 183, 265, 265, 3, 0, 130, 130, 180, 180, 402, 402, 4, 0, 152, 152, 174, 174, 201, 201, 317, 317, 3, 0, 445, 445, 459, 459, 499, 499, 4, 0, 250, 250, 446, 446, 494, 496, 498, 498, 2, 0, 74, 74, 320, 320, 3, 0, 459, 459, 492, 492, 499, 499, 2, 0, 439, 439, 450, 450, 2, 0, 457, 457, 467, 467, 4, 0, 140, 140, 244, 244, 397, 397, 404, 404, 2, 0, 19, 19, 369, 369, 2, 0, 5, 5, 11, 11, 2, 0, 509, 509, 529, 530, 4, 0, 452, 452, 527, 527, 531, 531, 534, 534, 2, 0, 529, 530, 532, 532, 1, 0, 529, 530, 1, 0, 538, 539, 2, 0, 538, 538, 541, 541, 4, 0, 452, 452, 527, 527, 529, 531, 533, 534, 3, 0, 241, 241, 508, 509, 529, 530, 2, 0, 140, 140, 397, 397, 2, 0, 5, 5, 113, 113, 10, 0, 97, 97, 165, 165, 222, 222, 229, 229, 334, 334, 436, 436, 470, 470, 472, 472, 488, 488, 502, 502, 15, 0, 97, 97, 165, 165, 222, 222, 229, 229, 334, 334, 427, 427, 436, 436, 442, 442, 448, 449, 454, 454, 460, 460, 470, 475, 488, 488, 491, 491, 502, 503, 9, 0, 5, 5, 13, 13, 33, 33, 85, 85, 113, 113, 200, 200, 389, 389, 413, 413, 527, 527, 55, 0, 4, 4, 13, 13, 23, 23, 38, 38, 41, 41, 43, 44, 54, 54, 56, 56, 69, 69, 75, 75, 78, 78, 84, 85, 91, 91, 98, 99, 107, 107, 119, 119, 134, 134, 139, 139, 143, 143, 145, 145, 160, 160, 165, 165, 167, 167, 194, 194, 197, 197, 199, 199, 201, 201, 205, 205, 207, 209, 214, 214, 220, 220, 222, 223, 229, 229, 243, 243, 245, 245, 264, 264, 276, 276, 281, 281, 283, 283, 293, 293, 317, 317, 321, 323, 334, 334, 357, 358, 364, 364, 367, 367, 378, 380, 395, 395, 398, 399, 408, 408, 419, 420, 436, 436, 469, 469, 488, 488, 502, 502, 1, 0, 437, 504, 2475, 0, 379, 1, 0, 0, 0, 2, 389, 1, 0, 0, 0, 4, 403, 1, 0, 0, 0, 6, 405, 1, 0, 0, 0, 8, 421, 1, 0, 0, 0, 10, 425, 1, 0, 0, 0, 12, 427, 1, 0, 0, 0, 14, 430, 1, 0, 0, 0, 16, 441, 1, 0, 0, 0, 18, 449, 1, 0, 0, 0, 20, 457, 1, 0, 0, 0, 22, 459, 1, 0, 0, 0, 24, 511, 1, 0, 0, 0, 26, 513, 1, 0, 0, 0, 28, 520, 1, 0, 0, 0, 30, 524, 1, 0, 0, 0, 32, 528, 1, 0, 0, 0, 34, 532, 1, 0, 0, 0, 36, 586, 1, 0, 0, 0, 38, 592, 1, 0, 0, 0, 40, 598, 1, 0, 0, 0, 42, 600, 1, 0, 0, 0, 44, 641, 1, 0, 0, 0, 46, 655, 1, 0, 0, 0, 48, 657, 1, 0, 0, 0, 50, 667, 1, 0, 0, 0, 52, 671, 1, 0, 0, 0, 54, 673, 1, 0, 0, 0, 56, 721, 1, 0, 0, 0, 58, 723, 1, 0, 0, 0, 60, 727, 1, 0, 0, 0, 62, 735, 1, 0, 0, 0, 64, 743, 1, 0, 0, 0, 66, 747, 1, 0, 0, 0, 68, 754, 1, 0, 0, 0, 70, 782, 1, 0, 0, 0, 72, 784, 1, 0, 0, 0, 74, 787, 1, 0, 0, 0, 76, 797, 1, 0, 0, 0, 78, 799, 1, 0, 0, 0, 80, 805, 1, 0, 0, 0, 82, 807, 1, 0, 0, 0, 84, 815, 1, 0, 0, 0, 86, 823, 1, 0, 0, 0, 88, 825, 1, 0, 0, 0, 90, 829, 1, 0, 0, 0, 92, 833, 1, 0, 0, 0, 94, 856, 1, 0, 0, 0, 96, 860, 1, 0, 0, 0, 98, 862, 1, 0, 0, 0, 100, 878, 1, 0, 0, 0, 102, 880, 1, 0, 0, 0, 104, 885, 1, 0, 0, 0, 106, 896, 1, 0, 0, 0, 108, 914, 1, 0, 0, 0, 110, 934, 1, 0, 0, 0, 112, 945, 1, 0, 0, 0, 114, 947, 1, 0, 0, 0, 116, 960, 1, 0, 0, 0, 118, 967, 1, 0, 0, 0, 120, 970, 1, 0, 0, 0, 122, 979, 1, 0, 0, 0, 124, 983, 1, 0, 0, 0, 126, 987, 1, 0, 0, 0, 128, 990, 1, 0, 0, 0, 130, 998, 1, 0, 0, 0, 132, 1003, 1, 0, 0, 0, 134, 1020, 1, 0, 0, 0, 136, 1027, 1, 0, 0, 0, 138, 1037, 1, 0, 0, 0, 140, 1046, 1, 0, 0, 0, 142, 1056, 1, 0, 0, 0, 144, 1075, 1, 0, 0, 0, 146, 1077, 1, 0, 0, 0, 148, 1090, 1, 0, 0, 0, 150, 1093, 1, 0, 0, 0, 152, 1102, 1, 0, 0, 0, 154, 1113, 1, 0, 0, 0, 156, 1126, 1, 0, 0, 0, 158, 1161, 1, 0, 0, 0, 160, 1180, 1, 0, 0, 0, 162, 1189, 1, 0, 0, 0, 164, 1198, 1, 0, 0, 0, 166, 1217, 1, 0, 0, 0, 168, 1239, 1, 0, 0, 0, 170, 1241, 1, 0, 0, 0, 172, 1271, 1, 0, 0, 0, 174, 1285, 1, 0, 0, 0, 176, 1287, 1, 0, 0, 0, 178, 1301, 1, 0, 0, 0, 180, 1327, 1, 0, 0, 0, 182, 1382, 1, 0, 0, 0, 184, 1384, 1, 0, 0, 0, 186, 1390, 1, 0, 0, 0, 188, 1392, 1, 0, 0, 0, 190, 1397, 1, 0, 0, 0, 192, 1402, 1, 0, 0, 0, 194, 1414, 1, 0, 0, 0, 196, 1431, 1, 0, 0, 0, 198, 1433, 1, 0, 0, 0, 200, 1435, 1, 0, 0, 0, 202, 1444, 1, 0, 0, 0, 204, 1446, 1, 0, 0, 0, 206, 1449, 1, 0, 0, 0, 208, 1499, 1, 0, 0, 0, 210, 1501, 1, 0, 0, 0, 212, 1504, 1, 0, 0, 0, 214, 1506, 1, 0, 0, 0, 216, 1513, 1, 0, 0, 0, 218, 1515, 1, 0, 0, 0, 220, 1517, 1, 0, 0, 0, 222, 1520, 1, 0, 0, 0, 224, 1529, 1, 0, 0, 0, 226, 1534, 1, 0, 0, 0, 228, 1548, 1, 0, 0, 0, 230, 1576, 1, 0, 0, 0, 232, 1586, 1, 0, 0, 0, 234, 1594, 1, 0, 0, 0, 236, 1599, 1, 0, 0, 0, 238, 1625, 1, 0, 0, 0, 240, 1627, 1, 0, 0, 0, 242, 1636, 1, 0, 0, 0, 244, 1647, 1, 0, 0, 0, 246, 1659, 1, 0, 0, 0, 248, 1685, 1, 0, 0, 0, 250, 1687, 1, 0, 0, 0, 252, 1705, 1, 0, 0, 0, 254, 1707, 1, 0, 0, 0, 256, 1712, 1, 0, 0, 0, 258, 1715, 1, 0, 0, 0, 260, 1729, 1, 0, 0, 0, 262, 1815, 1, 0, 0, 0, 264, 1846, 1, 0, 0, 0, 266, 1852, 1, 0, 0, 0, 268, 1970, 1, 0, 0, 0, 270, 1982, 1, 0, 0, 0, 272, 1986, 1, 0, 0, 0, 274, 1992, 1, 0, 0, 0, 276, 1994, 1, 0, 0, 0, 278, 1996, 1, 0, 0, 0, 280, 2000, 1, 0, 0, 0, 282, 2002, 1, 0, 0, 0, 284, 2007, 1, 0, 0, 0, 286, 2014, 1, 0, 0, 0, 288, 2018, 1, 0, 0, 0, 290, 2023, 1, 0, 0, 0, 292, 2033, 1, 0, 0, 0, 294, 2036, 1, 0, 0, 0, 296, 2042, 1, 0, 0, 0, 298, 2052, 1, 0, 0, 0, 300, 2054, 1, 0, 0, 0, 302, 2058, 1, 0, 0, 0, 304, 2069, 1, 0, 0, 0, 306, 2071, 1, 0, 0, 0, 308, 2073, 1, 0, 0, 0, 310, 2075, 1, 0, 0, 0, 312, 2080, 1, 0, 0, 0, 314, 2082, 1, 0, 0, 0, 316, 2084, 1, 0, 0, 0, 318, 2089, 1, 0, 0, 0, 320, 2106, 1, 0, 0, 0, 322, 2120, 1, 0, 0, 0, 324, 2134, 1, 0, 0, 0, 326, 2148, 1, 0, 0, 0, 328, 2150, 1, 0, 0, 0, 330, 2158, 1, 0, 0, 0, 332, 2161, 1, 0, 0, 0, 334, 2165, 1, 0, 0, 0, 336, 2168, 1, 0, 0, 0, 338, 2179, 1, 0, 0, 0, 340, 2189, 1, 0, 0, 0, 342, 2195, 1, 0, 0, 0, 344, 2203, 1, 0, 0, 0, 346, 2219, 1, 0, 0, 0, 348, 2228, 1, 0, 0, 0, 350, 2230, 1, 0, 0, 0, 352, 2232, 1, 0, 0, 0, 354, 2248, 1, 0, 0, 0, 356, 2250, 1, 0, 0, 0, 358, 2253, 1, 0, 0, 0, 360, 2255, 1, 0, 0, 0, 362, 2257, 1, 0, 0, 0, 364, 2259, 1, 0, 0, 0, 366, 2261, 1, 0, 0, 0, 368, 2263, 1, 0, 0, 0, 370, 2265, 1, 0, 0, 0, 372, 2267, 1, 0, 0, 0, 374, 2269, 1, 0, 0, 0, 376, 378, 3, 2, 1, 0, 377, 376, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 382, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 382, 383, 5, 0, 0, 1, 383, 1, 1, 0, 0, 0, 384, 386, 3, 4, 2, 0, 385, 387, 5, 521, 0, 0, 386, 385, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 390, 3, 6, 3, 0, 389, 384, 1, 0, 0, 0, 389, 388, 1, 0, 0, 0, 390, 3, 1, 0, 0, 0, 391, 404, 3, 8, 4, 0, 392, 404, 3, 10, 5, 0, 393, 404, 3, 12, 6, 0, 394, 404, 3, 14, 7, 0, 395, 404, 3, 20, 10, 0, 396, 404, 3, 24, 12, 0, 397, 404, 3, 26, 13, 0, 398, 404, 3, 28, 14, 0, 399, 404, 3, 30, 15, 0, 400, 404, 3, 32, 16, 0, 401, 404, 3, 34, 17, 0, 402, 404, 3, 36, 18, 0, 403, 391, 1, 0, 0, 0, 403, 392, 1, 0, 0, 0, 403, 393, 1, 0, 0, 0, 403, 394, 1, 0, 0, 0, 403, 395, 1, 0, 0, 0, 403, 396, 1, 0, 0, 0, 403, 397, 1, 0, 0, 0, 403, 398, 1, 0, 0, 0, 403, 399, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 402, 1, 0, 0, 0, 404, 5, 1, 0, 0, 0, 405, 406, 5, 521, 0, 0, 406, 7, 1, 0, 0, 0, 407, 422, 3, 40, 20, 0, 408, 422, 3, 104, 52, 0, 409, 422, 3, 106, 53, 0, 410, 422, 3, 108, 54, 0, 411, 422, 3, 102, 51, 0, 412, 422, 3, 114, 57, 0, 413, 422, 3, 128, 64, 0, 414, 422, 3, 130, 65, 0, 415, 422, 3, 132, 66, 0, 416, 422, 3, 134, 67, 0, 417, 422, 3, 136, 68, 0, 418, 422, 3, 138, 69, 0, 419, 422, 3, 140, 70, 0, 420, 422, 3, 142, 71, 0, 421, 407, 1, 0, 0, 0, 421, 408, 1, 0, 0, 0, 421, 409, 1, 0, 0, 0, 421, 410, 1, 0, 0, 0, 421, 411, 1, 0, 0, 0, 421, 412, 1, 0, 0, 0, 421, 413, 1, 0, 0, 0, 421, 414, 1, 0, 0, 0, 421, 415, 1, 0, 0, 0, 421, 416, 1, 0, 0, 0, 421, 417, 1, 0, 0, 0, 421, 418, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 420, 1, 0, 0, 0, 422, 9, 1, 0, 0, 0, 423, 426, 3, 158, 79, 0, 424, 426, 3, 144, 72, 0, 425, 423, 1, 0, 0, 0, 425, 424, 1, 0, 0, 0, 426, 11, 1, 0, 0, 0, 427, 428, 7, 0, 0, 0, 428, 429, 3, 322, 161, 0, 429, 13, 1, 0, 0, 0, 430, 434, 5, 135, 0, 0, 431, 435, 3, 16, 8, 0, 432, 433, 5, 479, 0, 0, 433, 435, 5, 146, 0, 0, 434, 431, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 439, 1, 0, 0, 0, 436, 440, 3, 10, 5, 0, 437, 440, 3, 146, 73, 0, 438, 440, 3, 156, 78, 0, 439, 436, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 438, 1, 0, 0, 0, 440, 15, 1, 0, 0, 0, 441, 446, 3, 18, 9, 0, 442, 443, 5, 520, 0, 0, 443, 445, 3, 18, 9, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 17, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 450, 7, 1, 0, 0, 450, 19, 1, 0, 0, 0, 451, 452, 5, 410, 0, 0, 452, 453, 5, 441, 0, 0, 453, 458, 3, 312, 156, 0, 454, 455, 5, 410, 0, 0, 455, 458, 3, 316, 158, 0, 456, 458, 3, 22, 11, 0, 457, 451, 1, 0, 0, 0, 457, 454, 1, 0, 0, 0, 457, 456, 1, 0, 0, 0, 458, 21, 1, 0, 0, 0, 459, 460, 5, 410, 0, 0, 460, 461, 5, 227, 0, 0, 461, 466, 3, 328, 164, 0, 462, 463, 5, 520, 0, 0, 463, 465, 3, 328, 164, 0, 464, 462, 1, 0, 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 23, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 470, 5, 341, 0, 0, 470, 512, 7, 2, 0, 0, 471, 472, 5, 341, 0, 0, 472, 473, 5, 76, 0, 0, 473, 512, 7, 3, 0, 0, 474, 475, 5, 341, 0, 0, 475, 478, 5, 374, 0, 0, 476, 477, 7, 4, 0, 0, 477, 479, 3, 316, 158, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 481, 1, 0, 0, 0, 480, 482, 3, 264, 132, 0, 481, 480, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 512, 1, 0, 0, 0, 483, 484, 5, 341, 0, 0, 484, 485, 5, 58, 0, 0, 485, 488, 7, 4, 0, 0, 486, 489, 3, 324, 162, 0, 487, 489, 3, 322, 161, 0, 488, 486, 1, 0, 0, 0, 488, 487, 1, 0, 0, 0, 489, 491, 1, 0, 0, 0, 490, 492, 3, 264, 132, 0, 491, 490, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 512, 1, 0, 0, 0, 493, 494, 5, 341, 0, 0, 494, 499, 5, 72, 0, 0, 495, 496, 5, 373, 0, 0, 496, 500, 3, 322, 161, 0, 497, 498, 5, 501, 0, 0, 498, 500, 3, 324, 162, 0, 499, 495, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 512, 1, 0, 0, 0, 501, 503, 5, 341, 0, 0, 502, 504, 5, 411, 0, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 512, 5, 154, 0, 0, 506, 508, 5, 341, 0, 0, 507, 509, 5, 152, 0, 0, 508, 507, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 512, 5, 227, 0, 0, 511, 469, 1, 0, 0, 0, 511, 471, 1, 0, 0, 0, 511, 474, 1, 0, 0, 0, 511, 483, 1, 0, 0, 0, 511, 493, 1, 0, 0, 0, 511, 501, 1, 0, 0, 0, 511, 506, 1, 0, 0, 0, 512, 25, 1, 0, 0, 0, 513, 514, 5, 468, 0, 0, 514, 515, 5, 226, 0, 0, 515, 518, 3, 328, 164, 0, 516, 517, 5, 433, 0, 0, 517, 519, 3, 336, 168, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 27, 1, 0, 0, 0, 520, 521, 5, 500, 0, 0, 521, 522, 5, 226, 0, 0, 522, 523, 3, 328, 164, 0, 523, 29, 1, 0, 0, 0, 524, 526, 5, 340, 0, 0, 525, 527, 3, 338, 169, 0, 526, 525, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 31, 1, 0, 0, 0, 528, 530, 5, 312, 0, 0, 529, 531, 3, 340, 170, 0, 530, 529, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 33, 1, 0, 0, 0, 532, 533, 7, 5, 0, 0, 533, 534, 5, 463, 0, 0, 534, 535, 3, 112, 56, 0, 535, 35, 1, 0, 0, 0, 536, 537, 5, 437, 0, 0, 537, 538, 5, 463, 0, 0, 538, 539, 5, 433, 0, 0, 539, 542, 3, 38, 19, 0, 540, 541, 5, 17, 0, 0, 541, 543, 3, 328, 164, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 587, 1, 0, 0, 0, 544, 545, 5, 437, 0, 0, 545, 546, 5, 456, 0, 0, 546, 547, 5, 433, 0, 0, 547, 550, 3, 38, 19, 0, 548, 549, 5, 17, 0, 0, 549, 551, 3, 328, 164, 0, 550, 548, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 553, 5, 311, 0, 0, 553, 555, 3, 328, 164, 0, 554, 552, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 587, 1, 0, 0, 0, 556, 557, 5, 437, 0, 0, 557, 558, 7, 6, 0, 0, 558, 559, 5, 433, 0, 0, 559, 560, 3, 38, 19, 0, 560, 561, 5, 311, 0, 0, 561, 562, 3, 328, 164, 0, 562, 587, 1, 0, 0, 0, 563, 564, 5, 437, 0, 0, 564, 565, 5, 486, 0, 0, 565, 587, 3, 38, 19, 0, 566, 567, 5, 437, 0, 0, 567, 568, 5, 453, 0, 0, 568, 569, 5, 456, 0, 0, 569, 570, 5, 433, 0, 0, 570, 571, 3, 38, 19, 0, 571, 572, 5, 311, 0, 0, 572, 573, 3, 328, 164, 0, 573, 574, 5, 466, 0, 0, 574, 575, 3, 328, 164, 0, 575, 587, 1, 0, 0, 0, 576, 577, 5, 437, 0, 0, 577, 578, 5, 443, 0, 0, 578, 579, 5, 456, 0, 0, 579, 580, 5, 433, 0, 0, 580, 581, 3, 38, 19, 0, 581, 582, 5, 146, 0, 0, 582, 583, 3, 328, 164, 0, 583, 584, 5, 17, 0, 0, 584, 585, 3, 328, 164, 0, 585, 587, 1, 0, 0, 0, 586, 536, 1, 0, 0, 0, 586, 544, 1, 0, 0, 0, 586, 556, 1, 0, 0, 0, 586, 563, 1, 0, 0, 0, 586, 566, 1, 0, 0, 0, 586, 576, 1, 0, 0, 0, 587, 37, 1, 0, 0, 0, 588, 590, 5, 534, 0, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 593, 3, 328, 164, 0, 592, 589, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 39, 1, 0, 0, 0, 596, 599, 3, 42, 21, 0, 597, 599, 3, 44, 22, 0, 598, 596, 1, 0, 0, 0, 598, 597, 1, 0, 0, 0, 599, 41, 1, 0, 0, 0, 600, 602, 5, 72, 0, 0, 601, 603, 5, 497, 0, 0, 602, 601, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 606, 5, 373, 0, 0, 605, 607, 3, 332, 166, 0, 606, 605, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609, 3, 320, 160, 0, 609, 610, 5, 516, 0, 0, 610, 615, 3, 46, 23, 0, 611, 612, 5, 520, 0, 0, 612, 614, 3, 46, 23, 0, 613, 611, 1, 0, 0, 0, 614, 617, 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 620, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 618, 619, 5, 520, 0, 0, 619, 621, 3, 82, 41, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 623, 5, 520, 0, 0, 623, 625, 3, 84, 42, 0, 624, 622, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 628, 1, 0, 0, 0, 626, 627, 5, 520, 0, 0, 627, 629, 3, 88, 44, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 632, 5, 517, 0, 0, 631, 633, 3, 72, 36, 0, 632, 631, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 635, 1, 0, 0, 0, 634, 636, 3, 90, 45, 0, 635, 634, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 639, 3, 330, 165, 0, 638, 640, 3, 98, 49, 0, 639, 638, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 43, 1, 0, 0, 0, 641, 642, 5, 72, 0, 0, 642, 644, 5, 373, 0, 0, 643, 645, 3, 332, 166, 0, 644, 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 647, 3, 320, 160, 0, 647, 650, 3, 330, 165, 0, 648, 649, 5, 17, 0, 0, 649, 651, 3, 158, 79, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 45, 1, 0, 0, 0, 652, 656, 3, 48, 24, 0, 653, 656, 3, 74, 37, 0, 654, 656, 3, 78, 39, 0, 655, 652, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 654, 1, 0, 0, 0, 656, 47, 1, 0, 0, 0, 657, 658, 3, 50, 25, 0, 658, 660, 3, 56, 28, 0, 659, 661, 3, 70, 35, 0, 660, 659, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 663, 1, 0, 0, 0, 662, 664, 3, 72, 36, 0, 663, 662, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 49, 1, 0, 0, 0, 665, 668, 3, 328, 164, 0, 666, 668, 3, 258, 129, 0, 667, 665, 1, 0, 0, 0, 667, 666, 1, 0, 0, 0, 668, 51, 1, 0, 0, 0, 669, 672, 3, 328, 164, 0, 670, 672, 4, 26, 0, 0, 671, 669, 1, 0, 0, 0, 671, 670, 1, 0, 0, 0, 672, 53, 1, 0, 0, 0, 673, 674, 5, 516, 0, 0, 674, 679, 3, 52, 26, 0, 675, 676, 5, 520, 0, 0, 676, 678, 3, 52, 26, 0, 677, 675, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 682, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 682, 683, 5, 517, 0, 0, 683, 55, 1, 0, 0, 0, 684, 722, 7, 7, 0, 0, 685, 687, 7, 8, 0, 0, 686, 688, 3, 58, 29, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 722, 1, 0, 0, 0, 689, 691, 5, 379, 0, 0, 690, 692, 3, 58, 29, 0, 691, 690, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 699, 1, 0, 0, 0, 693, 695, 7, 9, 0, 0, 694, 696, 5, 206, 0, 0, 695, 694, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 5, 378, 0, 0, 698, 700, 5, 504, 0, 0, 699, 693, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 722, 1, 0, 0, 0, 701, 703, 7, 10, 0, 0, 702, 704, 3, 60, 30, 0, 703, 702, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 722, 1, 0, 0, 0, 705, 707, 7, 11, 0, 0, 706, 708, 3, 64, 32, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 722, 1, 0, 0, 0, 709, 711, 5, 469, 0, 0, 710, 712, 3, 66, 33, 0, 711, 710, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 722, 1, 0, 0, 0, 713, 715, 5, 321, 0, 0, 714, 716, 3, 68, 34, 0, 715, 714, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 722, 1, 0, 0, 0, 717, 719, 5, 294, 0, 0, 718, 720, 3, 62, 31, 0, 719, 718, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 722, 1, 0, 0, 0, 721, 684, 1, 0, 0, 0, 721, 685, 1, 0, 0, 0, 721, 689, 1, 0, 0, 0, 721, 701, 1, 0, 0, 0, 721, 705, 1, 0, 0, 0, 721, 709, 1, 0, 0, 0, 721, 713, 1, 0, 0, 0, 721, 717, 1, 0, 0, 0, 722, 57, 1, 0, 0, 0, 723, 724, 5, 516, 0, 0, 724, 725, 3, 360, 180, 0, 725, 726, 5, 517, 0, 0, 726, 59, 1, 0, 0, 0, 727, 728, 5, 516, 0, 0, 728, 731, 3, 360, 180, 0, 729, 730, 5, 520, 0, 0, 730, 732, 3, 360, 180, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, 733, 734, 5, 517, 0, 0, 734, 61, 1, 0, 0, 0, 735, 736, 5, 516, 0, 0, 736, 739, 3, 358, 179, 0, 737, 738, 5, 520, 0, 0, 738, 740, 3, 358, 179, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 5, 517, 0, 0, 742, 63, 1, 0, 0, 0, 743, 744, 5, 507, 0, 0, 744, 745, 3, 56, 28, 0, 745, 746, 5, 506, 0, 0, 746, 65, 1, 0, 0, 0, 747, 748, 5, 507, 0, 0, 748, 749, 3, 56, 28, 0, 749, 750, 5, 520, 0, 0, 750, 751, 3, 56, 28, 0, 751, 752, 1, 0, 0, 0, 752, 753, 5, 506, 0, 0, 753, 67, 1, 0, 0, 0, 754, 755, 5, 507, 0, 0, 755, 756, 3, 52, 26, 0, 756, 763, 3, 56, 28, 0, 757, 758, 5, 520, 0, 0, 758, 759, 3, 52, 26, 0, 759, 760, 3, 56, 28, 0, 760, 762, 1, 0, 0, 0, 761, 757, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 767, 5, 506, 0, 0, 767, 69, 1, 0, 0, 0, 768, 769, 5, 64, 0, 0, 769, 771, 3, 86, 43, 0, 770, 768, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 773, 5, 288, 0, 0, 773, 776, 5, 466, 0, 0, 774, 775, 5, 241, 0, 0, 775, 777, 5, 125, 0, 0, 776, 774, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 783, 1, 0, 0, 0, 778, 780, 5, 241, 0, 0, 779, 778, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 783, 5, 244, 0, 0, 782, 770, 1, 0, 0, 0, 782, 779, 1, 0, 0, 0, 783, 71, 1, 0, 0, 0, 784, 785, 5, 59, 0, 0, 785, 786, 5, 537, 0, 0, 786, 73, 1, 0, 0, 0, 787, 788, 3, 50, 25, 0, 788, 789, 3, 56, 28, 0, 789, 792, 5, 218, 0, 0, 790, 791, 5, 151, 0, 0, 791, 793, 3, 76, 38, 0, 792, 790, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 795, 1, 0, 0, 0, 794, 796, 5, 423, 0, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 75, 1, 0, 0, 0, 797, 798, 5, 537, 0, 0, 798, 77, 1, 0, 0, 0, 799, 800, 3, 50, 25, 0, 800, 801, 5, 17, 0, 0, 801, 803, 3, 80, 40, 0, 802, 804, 3, 72, 36, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 79, 1, 0, 0, 0, 805, 806, 3, 258, 129, 0, 806, 81, 1, 0, 0, 0, 807, 808, 5, 424, 0, 0, 808, 809, 5, 146, 0, 0, 809, 810, 3, 52, 26, 0, 810, 811, 5, 17, 0, 0, 811, 812, 3, 258, 129, 0, 812, 83, 1, 0, 0, 0, 813, 814, 5, 64, 0, 0, 814, 816, 3, 86, 43, 0, 815, 813, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 5, 288, 0, 0, 818, 819, 5, 466, 0, 0, 819, 820, 3, 54, 27, 0, 820, 821, 5, 241, 0, 0, 821, 822, 5, 125, 0, 0, 822, 85, 1, 0, 0, 0, 823, 824, 3, 304, 152, 0, 824, 87, 1, 0, 0, 0, 825, 826, 5, 277, 0, 0, 826, 827, 5, 146, 0, 0, 827, 828, 5, 371, 0, 0, 828, 89, 1, 0, 0, 0, 829, 830, 5, 269, 0, 0, 830, 831, 5, 34, 0, 0, 831, 832, 3, 92, 46, 0, 832, 91, 1, 0, 0, 0, 833, 834, 5, 516, 0, 0, 834, 839, 3, 94, 47, 0, 835, 836, 5, 520, 0, 0, 836, 838, 3, 94, 47, 0, 837, 835, 1, 0, 0, 0, 838, 841, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 842, 1, 0, 0, 0, 841, 839, 1, 0, 0, 0, 842, 843, 5, 517, 0, 0, 843, 93, 1, 0, 0, 0, 844, 857, 3, 52, 26, 0, 845, 846, 5, 516, 0, 0, 846, 851, 3, 96, 48, 0, 847, 848, 5, 520, 0, 0, 848, 850, 3, 96, 48, 0, 849, 847, 1, 0, 0, 0, 850, 853, 1, 0, 0, 0, 851, 849, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 854, 1, 0, 0, 0, 853, 851, 1, 0, 0, 0, 854, 855, 5, 517, 0, 0, 855, 857, 1, 0, 0, 0, 856, 844, 1, 0, 0, 0, 856, 845, 1, 0, 0, 0, 857, 95, 1, 0, 0, 0, 858, 861, 3, 280, 140, 0, 859, 861, 3, 354, 177, 0, 860, 858, 1, 0, 0, 0, 860, 859, 1, 0, 0, 0, 861, 97, 1, 0, 0, 0, 862, 863, 5, 202, 0, 0, 863, 872, 3, 322, 161, 0, 864, 868, 5, 516, 0, 0, 865, 867, 3, 100, 50, 0, 866, 865, 1, 0, 0, 0, 867, 870, 1, 0, 0, 0, 868, 866, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 871, 1, 0, 0, 0, 870, 868, 1, 0, 0, 0, 871, 873, 5, 517, 0, 0, 872, 864, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 99, 1, 0, 0, 0, 874, 875, 7, 12, 0, 0, 875, 879, 7, 13, 0, 0, 876, 877, 7, 14, 0, 0, 877, 879, 7, 15, 0, 0, 878, 874, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 879, 101, 1, 0, 0, 0, 880, 881, 5, 72, 0, 0, 881, 882, 5, 441, 0, 0, 882, 883, 3, 314, 157, 0, 883, 884, 3, 330, 165, 0, 884, 103, 1, 0, 0, 0, 885, 886, 5, 72, 0, 0, 886, 888, 5, 447, 0, 0, 887, 889, 3, 332, 166, 0, 888, 887, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 892, 3, 318, 159, 0, 891, 893, 3, 72, 36, 0, 892, 891, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 895, 3, 330, 165, 0, 895, 105, 1, 0, 0, 0, 896, 898, 5, 72, 0, 0, 897, 899, 5, 497, 0, 0, 898, 897, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 902, 5, 501, 0, 0, 901, 903, 3, 332, 166, 0, 902, 901, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 906, 3, 326, 163, 0, 905, 907, 3, 54, 27, 0, 906, 905, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 909, 1, 0, 0, 0, 908, 910, 3, 72, 36, 0, 909, 908, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 912, 5, 17, 0, 0, 912, 913, 3, 158, 79, 0, 913, 107, 1, 0, 0, 0, 914, 918, 5, 72, 0, 0, 915, 919, 5, 497, 0, 0, 916, 917, 5, 497, 0, 0, 917, 919, 5, 370, 0, 0, 918, 915, 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 919, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 5, 153, 0, 0, 921, 923, 3, 332, 166, 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 925, 3, 270, 135, 0, 925, 926, 5, 17, 0, 0, 926, 929, 3, 304, 152, 0, 927, 928, 5, 195, 0, 0, 928, 930, 7, 16, 0, 0, 929, 927, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 932, 1, 0, 0, 0, 931, 933, 3, 110, 55, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 109, 1, 0, 0, 0, 934, 935, 5, 412, 0, 0, 935, 936, 5, 463, 0, 0, 936, 942, 3, 112, 56, 0, 937, 938, 5, 520, 0, 0, 938, 939, 5, 463, 0, 0, 939, 941, 3, 112, 56, 0, 940, 937, 1, 0, 0, 0, 941, 944, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 111, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 945, 946, 5, 537, 0, 0, 946, 113, 1, 0, 0, 0, 947, 948, 5, 8, 0, 0, 948, 950, 5, 373, 0, 0, 949, 951, 3, 334, 167, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 958, 3, 322, 161, 0, 953, 959, 3, 116, 58, 0, 954, 959, 3, 118, 59, 0, 955, 959, 3, 120, 60, 0, 956, 959, 3, 122, 61, 0, 957, 959, 3, 124, 62, 0, 958, 953, 1, 0, 0, 0, 958, 954, 1, 0, 0, 0, 958, 955, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 957, 1, 0, 0, 0, 959, 115, 1, 0, 0, 0, 960, 962, 5, 311, 0, 0, 961, 963, 3, 328, 164, 0, 962, 961, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 965, 5, 388, 0, 0, 965, 966, 3, 328, 164, 0, 966, 117, 1, 0, 0, 0, 967, 968, 5, 340, 0, 0, 968, 969, 3, 336, 168, 0, 969, 119, 1, 0, 0, 0, 970, 971, 5, 437, 0, 0, 971, 972, 5, 64, 0, 0, 972, 973, 3, 86, 43, 0, 973, 974, 5, 288, 0, 0, 974, 975, 5, 466, 0, 0, 975, 977, 3, 54, 27, 0, 976, 978, 3, 126, 63, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 121, 1, 0, 0, 0, 979, 980, 5, 116, 0, 0, 980, 981, 5, 64, 0, 0, 981, 982, 3, 86, 43, 0, 982, 123, 1, 0, 0, 0, 983, 984, 5, 437, 0, 0, 984, 985, 5, 403, 0, 0, 985, 986, 3, 54, 27, 0, 986, 125, 1, 0, 0, 0, 987, 988, 5, 241, 0, 0, 988, 989, 5, 125, 0, 0, 989, 127, 1, 0, 0, 0, 990, 991, 5, 8, 0, 0, 991, 992, 5, 501, 0, 0, 992, 996, 3, 324, 162, 0, 993, 997, 3, 116, 58, 0, 994, 995, 5, 17, 0, 0, 995, 997, 3, 158, 79, 0, 996, 993, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 129, 1, 0, 0, 0, 998, 999, 5, 8, 0, 0, 999, 1000, 5, 447, 0, 0, 1000, 1001, 3, 316, 158, 0, 1001, 1002, 3, 118, 59, 0, 1002, 131, 1, 0, 0, 0, 1003, 1007, 5, 8, 0, 0, 1004, 1008, 5, 497, 0, 0, 1005, 1006, 5, 497, 0, 0, 1006, 1008, 5, 370, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 5, 153, 0, 0, 1010, 1012, 3, 334, 167, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 3, 272, 136, 0, 1014, 1015, 5, 17, 0, 0, 1015, 1018, 3, 304, 152, 0, 1016, 1017, 5, 195, 0, 0, 1017, 1019, 7, 16, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 133, 1, 0, 0, 0, 1020, 1021, 5, 116, 0, 0, 1021, 1023, 5, 441, 0, 0, 1022, 1024, 3, 334, 167, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1026, 3, 312, 156, 0, 1026, 135, 1, 0, 0, 0, 1027, 1029, 5, 116, 0, 0, 1028, 1030, 5, 497, 0, 0, 1029, 1028, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1033, 5, 373, 0, 0, 1032, 1034, 3, 334, 167, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 3, 322, 161, 0, 1036, 137, 1, 0, 0, 0, 1037, 1038, 5, 116, 0, 0, 1038, 1040, 5, 447, 0, 0, 1039, 1041, 3, 334, 167, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1044, 3, 316, 158, 0, 1043, 1045, 7, 17, 0, 0, 1044, 1043, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 139, 1, 0, 0, 0, 1046, 1048, 5, 116, 0, 0, 1047, 1049, 5, 497, 0, 0, 1048, 1047, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1052, 5, 501, 0, 0, 1051, 1053, 3, 334, 167, 0, 1052, 1051, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 3, 324, 162, 0, 1055, 141, 1, 0, 0, 0, 1056, 1060, 5, 116, 0, 0, 1057, 1061, 5, 497, 0, 0, 1058, 1059, 5, 497, 0, 0, 1059, 1061, 5, 370, 0, 0, 1060, 1057, 1, 0, 0, 0, 1060, 1058, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1064, 5, 153, 0, 0, 1063, 1065, 3, 334, 167, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 3, 272, 136, 0, 1067, 143, 1, 0, 0, 0, 1068, 1070, 5, 132, 0, 0, 1069, 1068, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1076, 3, 146, 73, 0, 1072, 1076, 3, 154, 77, 0, 1073, 1074, 5, 132, 0, 0, 1074, 1076, 3, 156, 78, 0, 1075, 1069, 1, 0, 0, 0, 1075, 1072, 1, 0, 0, 0, 1075, 1073, 1, 0, 0, 0, 1076, 145, 1, 0, 0, 0, 1077, 1078, 5, 177, 0, 0, 1078, 1079, 7, 18, 0, 0, 1079, 1088, 3, 322, 161, 0, 1080, 1082, 3, 148, 74, 0, 1081, 1080, 1, 0, 0, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1084, 1, 0, 0, 0, 1083, 1085, 3, 54, 27, 0, 1084, 1083, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1089, 3, 158, 79, 0, 1087, 1089, 3, 150, 75, 0, 1088, 1081, 1, 0, 0, 0, 1088, 1087, 1, 0, 0, 0, 1089, 147, 1, 0, 0, 0, 1090, 1091, 5, 268, 0, 0, 1091, 1092, 3, 336, 168, 0, 1092, 149, 1, 0, 0, 0, 1093, 1094, 5, 414, 0, 0, 1094, 1099, 3, 152, 76, 0, 1095, 1096, 5, 520, 0, 0, 1096, 1098, 3, 152, 76, 0, 1097, 1095, 1, 0, 0, 0, 1098, 1101, 1, 0, 0, 0, 1099, 1097, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 151, 1, 0, 0, 0, 1101, 1099, 1, 0, 0, 0, 1102, 1103, 5, 516, 0, 0, 1103, 1108, 3, 354, 177, 0, 1104, 1105, 5, 520, 0, 0, 1105, 1107, 3, 354, 177, 0, 1106, 1104, 1, 0, 0, 0, 1107, 1110, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1111, 1, 0, 0, 0, 1110, 1108, 1, 0, 0, 0, 1111, 1112, 5, 517, 0, 0, 1112, 153, 1, 0, 0, 0, 1113, 1114, 5, 24, 0, 0, 1114, 1115, 5, 354, 0, 0, 1115, 1116, 5, 340, 0, 0, 1116, 1120, 5, 521, 0, 0, 1117, 1118, 3, 146, 73, 0, 1118, 1119, 5, 521, 0, 0, 1119, 1121, 1, 0, 0, 0, 1120, 1117, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1125, 5, 122, 0, 0, 1125, 155, 1, 0, 0, 0, 1126, 1127, 5, 354, 0, 0, 1127, 1128, 5, 340, 0, 0, 1128, 1132, 5, 24, 0, 0, 1129, 1130, 3, 146, 73, 0, 1130, 1131, 5, 521, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1129, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 5, 122, 0, 0, 1137, 157, 1, 0, 0, 0, 1138, 1139, 6, 79, -1, 0, 1139, 1162, 3, 160, 80, 0, 1140, 1141, 3, 162, 81, 0, 1141, 1142, 3, 158, 79, 5, 1142, 1162, 1, 0, 0, 0, 1143, 1144, 5, 516, 0, 0, 1144, 1145, 3, 158, 79, 0, 1145, 1146, 5, 517, 0, 0, 1146, 1162, 1, 0, 0, 0, 1147, 1149, 3, 170, 85, 0, 1148, 1150, 3, 230, 115, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1152, 1, 0, 0, 0, 1151, 1153, 3, 234, 117, 0, 1152, 1151, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1162, 1, 0, 0, 0, 1154, 1156, 3, 168, 84, 0, 1155, 1157, 3, 230, 115, 0, 1156, 1155, 1, 0, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1160, 3, 234, 117, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1162, 1, 0, 0, 0, 1161, 1138, 1, 0, 0, 0, 1161, 1140, 1, 0, 0, 0, 1161, 1143, 1, 0, 0, 0, 1161, 1147, 1, 0, 0, 0, 1161, 1154, 1, 0, 0, 0, 1162, 1177, 1, 0, 0, 0, 1163, 1164, 10, 3, 0, 0, 1164, 1166, 7, 19, 0, 0, 1165, 1167, 5, 5, 0, 0, 1166, 1165, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1170, 3, 158, 79, 0, 1169, 1171, 3, 230, 115, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1173, 1, 0, 0, 0, 1172, 1174, 3, 234, 117, 0, 1173, 1172, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1176, 1, 0, 0, 0, 1175, 1163, 1, 0, 0, 0, 1176, 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 159, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1180, 1181, 5, 414, 0, 0, 1181, 1186, 3, 258, 129, 0, 1182, 1183, 5, 520, 0, 0, 1183, 1185, 3, 258, 129, 0, 1184, 1182, 1, 0, 0, 0, 1185, 1188, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 161, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, 1190, 5, 433, 0, 0, 1190, 1195, 3, 164, 82, 0, 1191, 1192, 5, 520, 0, 0, 1192, 1194, 3, 164, 82, 0, 1193, 1191, 1, 0, 0, 0, 1194, 1197, 1, 0, 0, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 163, 1, 0, 0, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1210, 3, 166, 83, 0, 1199, 1200, 5, 516, 0, 0, 1200, 1205, 3, 52, 26, 0, 1201, 1202, 5, 520, 0, 0, 1202, 1204, 3, 52, 26, 0, 1203, 1201, 1, 0, 0, 0, 1204, 1207, 1, 0, 0, 0, 1205, 1203, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1208, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1208, 1209, 5, 517, 0, 0, 1209, 1211, 1, 0, 0, 0, 1210, 1199, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 5, 17, 0, 0, 1213, 1214, 5, 516, 0, 0, 1214, 1215, 3, 158, 79, 0, 1215, 1216, 5, 517, 0, 0, 1216, 165, 1, 0, 0, 0, 1217, 1218, 3, 304, 152, 0, 1218, 167, 1, 0, 0, 0, 1219, 1221, 3, 170, 85, 0, 1220, 1222, 3, 176, 88, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1224, 1, 0, 0, 0, 1223, 1225, 3, 204, 102, 0, 1224, 1223, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1227, 1, 0, 0, 0, 1226, 1228, 3, 206, 103, 0, 1227, 1226, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1230, 1, 0, 0, 0, 1229, 1231, 3, 220, 110, 0, 1230, 1229, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1233, 1, 0, 0, 0, 1232, 1234, 3, 222, 111, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1240, 1, 0, 0, 0, 1235, 1236, 3, 170, 85, 0, 1236, 1237, 3, 176, 88, 0, 1237, 1238, 3, 228, 114, 0, 1238, 1240, 1, 0, 0, 0, 1239, 1219, 1, 0, 0, 0, 1239, 1235, 1, 0, 0, 0, 1240, 169, 1, 0, 0, 0, 1241, 1243, 5, 336, 0, 0, 1242, 1244, 3, 364, 182, 0, 1243, 1242, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1254, 1, 0, 0, 0, 1245, 1255, 5, 527, 0, 0, 1246, 1251, 3, 172, 86, 0, 1247, 1248, 5, 520, 0, 0, 1248, 1250, 3, 172, 86, 0, 1249, 1247, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1249, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1255, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1245, 1, 0, 0, 0, 1254, 1246, 1, 0, 0, 0, 1255, 171, 1, 0, 0, 0, 1256, 1272, 3, 174, 87, 0, 1257, 1262, 3, 52, 26, 0, 1258, 1260, 5, 17, 0, 0, 1259, 1258, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1263, 3, 258, 129, 0, 1262, 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1272, 1, 0, 0, 0, 1264, 1269, 3, 258, 129, 0, 1265, 1267, 5, 17, 0, 0, 1266, 1265, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 3, 52, 26, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1256, 1, 0, 0, 0, 1271, 1257, 1, 0, 0, 0, 1271, 1264, 1, 0, 0, 0, 1272, 173, 1, 0, 0, 0, 1273, 1274, 3, 268, 134, 0, 1274, 1275, 5, 262, 0, 0, 1275, 1276, 3, 226, 113, 0, 1276, 1277, 5, 17, 0, 0, 1277, 1278, 3, 304, 152, 0, 1278, 1286, 1, 0, 0, 0, 1279, 1280, 3, 268, 134, 0, 1280, 1281, 5, 262, 0, 0, 1281, 1282, 3, 296, 148, 0, 1282, 1283, 5, 17, 0, 0, 1283, 1284, 3, 304, 152, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1273, 1, 0, 0, 0, 1285, 1279, 1, 0, 0, 0, 1286, 175, 1, 0, 0, 0, 1287, 1288, 5, 151, 0, 0, 1288, 1289, 3, 178, 89, 0, 1289, 177, 1, 0, 0, 0, 1290, 1291, 6, 89, -1, 0, 1291, 1296, 3, 180, 90, 0, 1292, 1293, 5, 520, 0, 0, 1293, 1295, 3, 180, 90, 0, 1294, 1292, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1302, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1302, 3, 188, 94, 0, 1300, 1302, 3, 190, 95, 0, 1301, 1290, 1, 0, 0, 0, 1301, 1299, 1, 0, 0, 0, 1301, 1300, 1, 0, 0, 0, 1302, 1324, 1, 0, 0, 0, 1303, 1304, 10, 3, 0, 0, 1304, 1305, 5, 73, 0, 0, 1305, 1306, 5, 185, 0, 0, 1306, 1323, 3, 178, 89, 4, 1307, 1309, 10, 4, 0, 0, 1308, 1310, 5, 233, 0, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1313, 7, 20, 0, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1315, 1, 0, 0, 0, 1314, 1316, 5, 261, 0, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1318, 5, 185, 0, 0, 1318, 1320, 3, 178, 89, 0, 1319, 1321, 3, 202, 101, 0, 1320, 1319, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0, 0, 0, 1322, 1303, 1, 0, 0, 0, 1322, 1307, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 179, 1, 0, 0, 0, 1326, 1324, 1, 0, 0, 0, 1327, 1329, 3, 182, 91, 0, 1328, 1330, 3, 294, 147, 0, 1329, 1328, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 181, 1, 0, 0, 0, 1331, 1333, 5, 373, 0, 0, 1332, 1331, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 3, 322, 161, 0, 1335, 1337, 3, 184, 92, 0, 1336, 1335, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1342, 1, 0, 0, 0, 1338, 1340, 5, 17, 0, 0, 1339, 1338, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1343, 3, 278, 139, 0, 1342, 1339, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1383, 1, 0, 0, 0, 1344, 1346, 3, 324, 162, 0, 1345, 1347, 3, 184, 92, 0, 1346, 1345, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1352, 1, 0, 0, 0, 1348, 1350, 5, 17, 0, 0, 1349, 1348, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1353, 3, 278, 139, 0, 1352, 1349, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1383, 1, 0, 0, 0, 1354, 1355, 5, 198, 0, 0, 1355, 1356, 5, 373, 0, 0, 1356, 1357, 5, 516, 0, 0, 1357, 1358, 3, 272, 136, 0, 1358, 1359, 5, 516, 0, 0, 1359, 1364, 3, 274, 137, 0, 1360, 1361, 5, 520, 0, 0, 1361, 1363, 3, 274, 137, 0, 1362, 1360, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1368, 5, 517, 0, 0, 1368, 1369, 5, 517, 0, 0, 1369, 1383, 1, 0, 0, 0, 1370, 1372, 5, 198, 0, 0, 1371, 1370, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1374, 5, 516, 0, 0, 1374, 1375, 3, 158, 79, 0, 1375, 1376, 5, 517, 0, 0, 1376, 1383, 1, 0, 0, 0, 1377, 1378, 5, 405, 0, 0, 1378, 1379, 5, 516, 0, 0, 1379, 1380, 3, 258, 129, 0, 1380, 1381, 5, 517, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1332, 1, 0, 0, 0, 1382, 1344, 1, 0, 0, 0, 1382, 1354, 1, 0, 0, 0, 1382, 1371, 1, 0, 0, 0, 1382, 1377, 1, 0, 0, 0, 1383, 183, 1, 0, 0, 0, 1384, 1385, 5, 146, 0, 0, 1385, 1386, 5, 371, 0, 0, 1386, 1387, 5, 17, 0, 0, 1387, 1388, 5, 249, 0, 0, 1388, 1389, 3, 186, 93, 0, 1389, 185, 1, 0, 0, 0, 1390, 1391, 3, 258, 129, 0, 1391, 187, 1, 0, 0, 0, 1392, 1393, 5, 516, 0, 0, 1393, 1394, 3, 150, 75, 0, 1394, 1395, 5, 517, 0, 0, 1395, 1396, 3, 294, 147, 0, 1396, 189, 1, 0, 0, 0, 1397, 1398, 5, 373, 0, 0, 1398, 1399, 5, 516, 0, 0, 1399, 1400, 3, 192, 96, 0, 1400, 1401, 5, 517, 0, 0, 1401, 191, 1, 0, 0, 0, 1402, 1403, 3, 194, 97, 0, 1403, 1404, 5, 516, 0, 0, 1404, 1409, 3, 196, 98, 0, 1405, 1406, 5, 520, 0, 0, 1406, 1408, 3, 196, 98, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1413, 5, 517, 0, 0, 1413, 193, 1, 0, 0, 0, 1414, 1415, 7, 21, 0, 0, 1415, 195, 1, 0, 0, 0, 1416, 1417, 5, 373, 0, 0, 1417, 1432, 3, 218, 109, 0, 1418, 1432, 3, 200, 100, 0, 1419, 1432, 3, 282, 141, 0, 1420, 1421, 5, 446, 0, 0, 1421, 1422, 5, 536, 0, 0, 1422, 1423, 5, 373, 0, 0, 1423, 1432, 3, 218, 109, 0, 1424, 1425, 5, 498, 0, 0, 1425, 1426, 5, 536, 0, 0, 1426, 1432, 3, 200, 100, 0, 1427, 1428, 3, 198, 99, 0, 1428, 1429, 5, 536, 0, 0, 1429, 1430, 3, 282, 141, 0, 1430, 1432, 1, 0, 0, 0, 1431, 1416, 1, 0, 0, 0, 1431, 1418, 1, 0, 0, 0, 1431, 1419, 1, 0, 0, 0, 1431, 1420, 1, 0, 0, 0, 1431, 1424, 1, 0, 0, 0, 1431, 1427, 1, 0, 0, 0, 1432, 197, 1, 0, 0, 0, 1433, 1434, 7, 22, 0, 0, 1434, 199, 1, 0, 0, 0, 1435, 1436, 5, 451, 0, 0, 1436, 1437, 5, 516, 0, 0, 1437, 1438, 3, 52, 26, 0, 1438, 1439, 5, 517, 0, 0, 1439, 201, 1, 0, 0, 0, 1440, 1441, 5, 253, 0, 0, 1441, 1445, 3, 260, 130, 0, 1442, 1443, 5, 412, 0, 0, 1443, 1445, 3, 54, 27, 0, 1444, 1440, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1445, 203, 1, 0, 0, 0, 1446, 1447, 5, 430, 0, 0, 1447, 1448, 3, 260, 130, 0, 1448, 205, 1, 0, 0, 0, 1449, 1450, 5, 159, 0, 0, 1450, 1451, 5, 34, 0, 0, 1451, 1456, 3, 208, 104, 0, 1452, 1453, 5, 520, 0, 0, 1453, 1455, 3, 208, 104, 0, 1454, 1452, 1, 0, 0, 0, 1455, 1458, 1, 0, 0, 0, 1456, 1454, 1, 0, 0, 0, 1456, 1457, 1, 0, 0, 0, 1457, 207, 1, 0, 0, 0, 1458, 1456, 1, 0, 0, 0, 1459, 1500, 3, 52, 26, 0, 1460, 1500, 3, 214, 107, 0, 1461, 1462, 5, 516, 0, 0, 1462, 1500, 5, 517, 0, 0, 1463, 1464, 5, 516, 0, 0, 1464, 1469, 3, 258, 129, 0, 1465, 1466, 5, 520, 0, 0, 1466, 1468, 3, 258, 129, 0, 1467, 1465, 1, 0, 0, 0, 1468, 1471, 1, 0, 0, 0, 1469, 1467, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1472, 1, 0, 0, 0, 1471, 1469, 1, 0, 0, 0, 1472, 1473, 5, 517, 0, 0, 1473, 1500, 1, 0, 0, 0, 1474, 1475, 3, 212, 106, 0, 1475, 1476, 5, 516, 0, 0, 1476, 1481, 3, 258, 129, 0, 1477, 1478, 5, 520, 0, 0, 1478, 1480, 3, 258, 129, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1483, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1484, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1485, 5, 517, 0, 0, 1485, 1500, 1, 0, 0, 0, 1486, 1487, 3, 210, 105, 0, 1487, 1488, 5, 516, 0, 0, 1488, 1493, 3, 208, 104, 0, 1489, 1490, 5, 520, 0, 0, 1490, 1492, 3, 208, 104, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1495, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1496, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 5, 517, 0, 0, 1497, 1500, 1, 0, 0, 0, 1498, 1500, 3, 258, 129, 0, 1499, 1459, 1, 0, 0, 0, 1499, 1460, 1, 0, 0, 0, 1499, 1461, 1, 0, 0, 0, 1499, 1463, 1, 0, 0, 0, 1499, 1474, 1, 0, 0, 0, 1499, 1486, 1, 0, 0, 0, 1499, 1498, 1, 0, 0, 0, 1500, 209, 1, 0, 0, 0, 1501, 1502, 5, 160, 0, 0, 1502, 1503, 5, 493, 0, 0, 1503, 211, 1, 0, 0, 0, 1504, 1505, 7, 23, 0, 0, 1505, 213, 1, 0, 0, 0, 1506, 1507, 3, 216, 108, 0, 1507, 1508, 5, 516, 0, 0, 1508, 1509, 3, 218, 109, 0, 1509, 1510, 5, 520, 0, 0, 1510, 1511, 3, 282, 141, 0, 1511, 1512, 5, 517, 0, 0, 1512, 215, 1, 0, 0, 0, 1513, 1514, 7, 24, 0, 0, 1514, 217, 1, 0, 0, 0, 1515, 1516, 3, 328, 164, 0, 1516, 219, 1, 0, 0, 0, 1517, 1518, 5, 163, 0, 0, 1518, 1519, 3, 260, 130, 0, 1519, 221, 1, 0, 0, 0, 1520, 1521, 5, 432, 0, 0, 1521, 1526, 3, 224, 112, 0, 1522, 1523, 5, 520, 0, 0, 1523, 1525, 3, 224, 112, 0, 1524, 1522, 1, 0, 0, 0, 1525, 1528, 1, 0, 0, 0, 1526, 1524, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 223, 1, 0, 0, 0, 1528, 1526, 1, 0, 0, 0, 1529, 1530, 3, 296, 148, 0, 1530, 1531, 5, 17, 0, 0, 1531, 1532, 3, 226, 113, 0, 1532, 225, 1, 0, 0, 0, 1533, 1535, 3, 296, 148, 0, 1534, 1533, 1, 0, 0, 0, 1534, 1535, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1538, 5, 516, 0, 0, 1537, 1539, 3, 236, 118, 0, 1538, 1537, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1541, 1, 0, 0, 0, 1540, 1542, 3, 230, 115, 0, 1541, 1540, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1545, 3, 252, 126, 0, 1544, 1543, 1, 0, 0, 0, 1544, 1545, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1547, 5, 517, 0, 0, 1547, 227, 1, 0, 0, 0, 1548, 1549, 5, 213, 0, 0, 1549, 1551, 5, 516, 0, 0, 1550, 1552, 3, 236, 118, 0, 1551, 1550, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1554, 1, 0, 0, 0, 1553, 1555, 3, 230, 115, 0, 1554, 1553, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1557, 1, 0, 0, 0, 1556, 1558, 3, 240, 120, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1560, 1, 0, 0, 0, 1559, 1561, 3, 246, 123, 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1563, 1, 0, 0, 0, 1562, 1564, 3, 248, 124, 0, 1563, 1562, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1566, 1, 0, 0, 0, 1565, 1567, 3, 242, 121, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 3, 250, 125, 0, 1569, 1574, 5, 517, 0, 0, 1570, 1572, 5, 17, 0, 0, 1571, 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1575, 3, 304, 152, 0, 1574, 1571, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 229, 1, 0, 0, 0, 1576, 1577, 5, 258, 0, 0, 1577, 1578, 5, 34, 0, 0, 1578, 1583, 3, 232, 116, 0, 1579, 1580, 5, 520, 0, 0, 1580, 1582, 3, 232, 116, 0, 1581, 1579, 1, 0, 0, 0, 1582, 1585, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 231, 1, 0, 0, 0, 1585, 1583, 1, 0, 0, 0, 1586, 1588, 3, 52, 26, 0, 1587, 1589, 7, 25, 0, 0, 1588, 1587, 1, 0, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1592, 1, 0, 0, 0, 1590, 1591, 5, 476, 0, 0, 1591, 1593, 7, 26, 0, 0, 1592, 1590, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 233, 1, 0, 0, 0, 1594, 1597, 5, 204, 0, 0, 1595, 1598, 5, 5, 0, 0, 1596, 1598, 3, 258, 129, 0, 1597, 1595, 1, 0, 0, 0, 1597, 1596, 1, 0, 0, 0, 1598, 235, 1, 0, 0, 0, 1599, 1600, 5, 268, 0, 0, 1600, 1601, 5, 34, 0, 0, 1601, 1606, 3, 52, 26, 0, 1602, 1603, 5, 520, 0, 0, 1603, 1605, 3, 52, 26, 0, 1604, 1602, 1, 0, 0, 0, 1605, 1608, 1, 0, 0, 0, 1606, 1604, 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 237, 1, 0, 0, 0, 1608, 1606, 1, 0, 0, 0, 1609, 1626, 5, 527, 0, 0, 1610, 1626, 5, 530, 0, 0, 1611, 1626, 5, 535, 0, 0, 1612, 1613, 5, 518, 0, 0, 1613, 1614, 5, 538, 0, 0, 1614, 1615, 5, 520, 0, 0, 1615, 1616, 5, 538, 0, 0, 1616, 1626, 5, 519, 0, 0, 1617, 1618, 5, 518, 0, 0, 1618, 1619, 5, 538, 0, 0, 1619, 1620, 5, 520, 0, 0, 1620, 1626, 5, 519, 0, 0, 1621, 1622, 5, 518, 0, 0, 1622, 1623, 5, 520, 0, 0, 1623, 1624, 5, 538, 0, 0, 1624, 1626, 5, 519, 0, 0, 1625, 1609, 1, 0, 0, 0, 1625, 1610, 1, 0, 0, 0, 1625, 1611, 1, 0, 0, 0, 1625, 1612, 1, 0, 0, 0, 1625, 1617, 1, 0, 0, 0, 1625, 1621, 1, 0, 0, 0, 1626, 239, 1, 0, 0, 0, 1627, 1628, 5, 215, 0, 0, 1628, 1633, 3, 172, 86, 0, 1629, 1630, 5, 520, 0, 0, 1630, 1632, 3, 172, 86, 0, 1631, 1629, 1, 0, 0, 0, 1632, 1635, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 241, 1, 0, 0, 0, 1635, 1633, 1, 0, 0, 0, 1636, 1637, 5, 271, 0, 0, 1637, 1639, 5, 516, 0, 0, 1638, 1640, 3, 244, 122, 0, 1639, 1638, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1645, 5, 517, 0, 0, 1644, 1646, 3, 256, 128, 0, 1645, 1644, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 243, 1, 0, 0, 0, 1647, 1649, 3, 306, 153, 0, 1648, 1650, 3, 238, 119, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 245, 1, 0, 0, 0, 1651, 1652, 5, 5, 0, 0, 1652, 1653, 5, 322, 0, 0, 1653, 1654, 5, 272, 0, 0, 1654, 1660, 5, 210, 0, 0, 1655, 1656, 5, 254, 0, 0, 1656, 1657, 5, 321, 0, 0, 1657, 1658, 5, 272, 0, 0, 1658, 1660, 5, 210, 0, 0, 1659, 1651, 1, 0, 0, 0, 1659, 1655, 1, 0, 0, 0, 1660, 247, 1, 0, 0, 0, 1661, 1662, 5, 438, 0, 0, 1662, 1663, 5, 210, 0, 0, 1663, 1664, 5, 343, 0, 0, 1664, 1665, 5, 478, 0, 0, 1665, 1666, 5, 467, 0, 0, 1666, 1686, 5, 321, 0, 0, 1667, 1668, 5, 438, 0, 0, 1668, 1669, 5, 210, 0, 0, 1669, 1670, 5, 343, 0, 0, 1670, 1671, 5, 388, 0, 0, 1671, 1672, 5, 237, 0, 0, 1672, 1686, 5, 321, 0, 0, 1673, 1674, 5, 438, 0, 0, 1674, 1675, 5, 210, 0, 0, 1675, 1676, 5, 343, 0, 0, 1676, 1677, 5, 388, 0, 0, 1677, 1678, 5, 467, 0, 0, 1678, 1686, 3, 306, 153, 0, 1679, 1680, 5, 438, 0, 0, 1680, 1681, 5, 210, 0, 0, 1681, 1682, 5, 343, 0, 0, 1682, 1683, 5, 388, 0, 0, 1683, 1684, 5, 457, 0, 0, 1684, 1686, 3, 306, 153, 0, 1685, 1661, 1, 0, 0, 0, 1685, 1667, 1, 0, 0, 0, 1685, 1673, 1, 0, 0, 0, 1685, 1679, 1, 0, 0, 0, 1686, 249, 1, 0, 0, 0, 1687, 1688, 5, 105, 0, 0, 1688, 1693, 3, 172, 86, 0, 1689, 1690, 5, 520, 0, 0, 1690, 1692, 3, 172, 86, 0, 1691, 1689, 1, 0, 0, 0, 1692, 1695, 1, 0, 0, 0, 1693, 1691, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 251, 1, 0, 0, 0, 1695, 1693, 1, 0, 0, 0, 1696, 1697, 5, 292, 0, 0, 1697, 1698, 5, 27, 0, 0, 1698, 1699, 3, 282, 141, 0, 1699, 1700, 3, 254, 127, 0, 1700, 1706, 1, 0, 0, 0, 1701, 1702, 5, 322, 0, 0, 1702, 1703, 5, 27, 0, 0, 1703, 1704, 5, 538, 0, 0, 1704, 1706, 3, 254, 127, 0, 1705, 1696, 1, 0, 0, 0, 1705, 1701, 1, 0, 0, 0, 1706, 253, 1, 0, 0, 0, 1707, 1708, 5, 480, 0, 0, 1708, 1709, 5, 10, 0, 0, 1709, 1710, 5, 76, 0, 0, 1710, 1711, 5, 321, 0, 0, 1711, 255, 1, 0, 0, 0, 1712, 1713, 5, 434, 0, 0, 1713, 1714, 3, 282, 141, 0, 1714, 257, 1, 0, 0, 0, 1715, 1716, 3, 260, 130, 0, 1716, 259, 1, 0, 0, 0, 1717, 1718, 6, 130, -1, 0, 1718, 1719, 5, 241, 0, 0, 1719, 1730, 3, 260, 130, 6, 1720, 1721, 5, 133, 0, 0, 1721, 1722, 5, 516, 0, 0, 1722, 1723, 3, 158, 79, 0, 1723, 1724, 5, 517, 0, 0, 1724, 1730, 1, 0, 0, 0, 1725, 1727, 3, 266, 133, 0, 1726, 1728, 3, 262, 131, 0, 1727, 1726, 1, 0, 0, 0, 1727, 1728, 1, 0, 0, 0, 1728, 1730, 1, 0, 0, 0, 1729, 1717, 1, 0, 0, 0, 1729, 1720, 1, 0, 0, 0, 1729, 1725, 1, 0, 0, 0, 1730, 1745, 1, 0, 0, 0, 1731, 1732, 10, 3, 0, 0, 1732, 1733, 5, 10, 0, 0, 1733, 1744, 3, 260, 130, 4, 1734, 1735, 10, 2, 0, 0, 1735, 1736, 5, 257, 0, 0, 1736, 1744, 3, 260, 130, 3, 1737, 1738, 10, 1, 0, 0, 1738, 1740, 5, 184, 0, 0, 1739, 1741, 5, 241, 0, 0, 1740, 1739, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1744, 7, 27, 0, 0, 1743, 1731, 1, 0, 0, 0, 1743, 1734, 1, 0, 0, 0, 1743, 1737, 1, 0, 0, 0, 1744, 1747, 1, 0, 0, 0, 1745, 1743, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 261, 1, 0, 0, 0, 1747, 1745, 1, 0, 0, 0, 1748, 1750, 5, 241, 0, 0, 1749, 1748, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, 5, 27, 0, 0, 1752, 1754, 7, 28, 0, 0, 1753, 1752, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 3, 266, 133, 0, 1756, 1757, 5, 10, 0, 0, 1757, 1758, 3, 266, 133, 0, 1758, 1816, 1, 0, 0, 0, 1759, 1761, 5, 241, 0, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 5, 170, 0, 0, 1763, 1764, 5, 516, 0, 0, 1764, 1769, 3, 258, 129, 0, 1765, 1766, 5, 520, 0, 0, 1766, 1768, 3, 258, 129, 0, 1767, 1765, 1, 0, 0, 0, 1768, 1771, 1, 0, 0, 0, 1769, 1767, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1772, 1, 0, 0, 0, 1771, 1769, 1, 0, 0, 0, 1772, 1773, 5, 517, 0, 0, 1773, 1816, 1, 0, 0, 0, 1774, 1776, 5, 241, 0, 0, 1775, 1774, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 5, 170, 0, 0, 1778, 1779, 5, 516, 0, 0, 1779, 1780, 3, 158, 79, 0, 1780, 1781, 5, 517, 0, 0, 1781, 1816, 1, 0, 0, 0, 1782, 1783, 5, 133, 0, 0, 1783, 1784, 5, 516, 0, 0, 1784, 1785, 3, 158, 79, 0, 1785, 1786, 5, 517, 0, 0, 1786, 1816, 1, 0, 0, 0, 1787, 1789, 5, 241, 0, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1791, 5, 318, 0, 0, 1791, 1816, 3, 266, 133, 0, 1792, 1816, 3, 264, 132, 0, 1793, 1795, 5, 184, 0, 0, 1794, 1796, 5, 241, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1816, 7, 27, 0, 0, 1798, 1800, 5, 184, 0, 0, 1799, 1801, 5, 241, 0, 0, 1800, 1799, 1, 0, 0, 0, 1800, 1801, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1803, 5, 113, 0, 0, 1803, 1804, 5, 151, 0, 0, 1804, 1816, 3, 266, 133, 0, 1805, 1807, 5, 241, 0, 0, 1806, 1805, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1809, 5, 342, 0, 0, 1809, 1810, 5, 388, 0, 0, 1810, 1813, 3, 266, 133, 0, 1811, 1812, 5, 127, 0, 0, 1812, 1814, 3, 358, 179, 0, 1813, 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1816, 1, 0, 0, 0, 1815, 1749, 1, 0, 0, 0, 1815, 1760, 1, 0, 0, 0, 1815, 1775, 1, 0, 0, 0, 1815, 1782, 1, 0, 0, 0, 1815, 1788, 1, 0, 0, 0, 1815, 1792, 1, 0, 0, 0, 1815, 1793, 1, 0, 0, 0, 1815, 1798, 1, 0, 0, 0, 1815, 1806, 1, 0, 0, 0, 1816, 263, 1, 0, 0, 0, 1817, 1819, 5, 241, 0, 0, 1818, 1817, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1821, 5, 202, 0, 0, 1821, 1835, 7, 29, 0, 0, 1822, 1823, 5, 516, 0, 0, 1823, 1836, 5, 517, 0, 0, 1824, 1825, 5, 516, 0, 0, 1825, 1830, 3, 258, 129, 0, 1826, 1827, 5, 520, 0, 0, 1827, 1829, 3, 258, 129, 0, 1828, 1826, 1, 0, 0, 0, 1829, 1832, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1830, 1, 0, 0, 0, 1833, 1834, 5, 517, 0, 0, 1834, 1836, 1, 0, 0, 0, 1835, 1822, 1, 0, 0, 0, 1835, 1824, 1, 0, 0, 0, 1836, 1847, 1, 0, 0, 0, 1837, 1839, 5, 241, 0, 0, 1838, 1837, 1, 0, 0, 0, 1838, 1839, 1, 0, 0, 0, 1839, 1840, 1, 0, 0, 0, 1840, 1841, 5, 202, 0, 0, 1841, 1844, 3, 266, 133, 0, 1842, 1843, 5, 127, 0, 0, 1843, 1845, 3, 358, 179, 0, 1844, 1842, 1, 0, 0, 0, 1844, 1845, 1, 0, 0, 0, 1845, 1847, 1, 0, 0, 0, 1846, 1818, 1, 0, 0, 0, 1846, 1838, 1, 0, 0, 0, 1847, 265, 1, 0, 0, 0, 1848, 1849, 6, 133, -1, 0, 1849, 1853, 3, 268, 134, 0, 1850, 1851, 7, 30, 0, 0, 1851, 1853, 3, 266, 133, 7, 1852, 1848, 1, 0, 0, 0, 1852, 1850, 1, 0, 0, 0, 1853, 1875, 1, 0, 0, 0, 1854, 1855, 10, 6, 0, 0, 1855, 1856, 7, 31, 0, 0, 1856, 1874, 3, 266, 133, 7, 1857, 1858, 10, 5, 0, 0, 1858, 1859, 7, 32, 0, 0, 1859, 1874, 3, 266, 133, 6, 1860, 1861, 10, 4, 0, 0, 1861, 1862, 5, 511, 0, 0, 1862, 1874, 3, 266, 133, 5, 1863, 1864, 10, 3, 0, 0, 1864, 1865, 5, 512, 0, 0, 1865, 1874, 3, 266, 133, 4, 1866, 1867, 10, 2, 0, 0, 1867, 1868, 5, 510, 0, 0, 1868, 1874, 3, 266, 133, 3, 1869, 1870, 10, 1, 0, 0, 1870, 1871, 3, 346, 173, 0, 1871, 1872, 3, 266, 133, 2, 1872, 1874, 1, 0, 0, 0, 1873, 1854, 1, 0, 0, 0, 1873, 1857, 1, 0, 0, 0, 1873, 1860, 1, 0, 0, 0, 1873, 1863, 1, 0, 0, 0, 1873, 1866, 1, 0, 0, 0, 1873, 1869, 1, 0, 0, 0, 1874, 1877, 1, 0, 0, 0, 1875, 1873, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 267, 1, 0, 0, 0, 1877, 1875, 1, 0, 0, 0, 1878, 1879, 6, 134, -1, 0, 1879, 1881, 5, 40, 0, 0, 1880, 1882, 3, 310, 155, 0, 1881, 1880, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1881, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1887, 1, 0, 0, 0, 1885, 1886, 5, 120, 0, 0, 1886, 1888, 3, 258, 129, 0, 1887, 1885, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1890, 5, 122, 0, 0, 1890, 1971, 1, 0, 0, 0, 1891, 1892, 5, 40, 0, 0, 1892, 1894, 3, 258, 129, 0, 1893, 1895, 3, 310, 155, 0, 1894, 1893, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1894, 1, 0, 0, 0, 1896, 1897, 1, 0, 0, 0, 1897, 1900, 1, 0, 0, 0, 1898, 1899, 5, 120, 0, 0, 1899, 1901, 3, 258, 129, 0, 1900, 1898, 1, 0, 0, 0, 1900, 1901, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 5, 122, 0, 0, 1903, 1971, 1, 0, 0, 0, 1904, 1905, 5, 41, 0, 0, 1905, 1906, 5, 516, 0, 0, 1906, 1907, 3, 258, 129, 0, 1907, 1908, 5, 17, 0, 0, 1908, 1909, 3, 56, 28, 0, 1909, 1910, 5, 517, 0, 0, 1910, 1971, 1, 0, 0, 0, 1911, 1912, 5, 457, 0, 0, 1912, 1913, 5, 516, 0, 0, 1913, 1916, 3, 258, 129, 0, 1914, 1915, 5, 461, 0, 0, 1915, 1917, 5, 476, 0, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1918, 1, 0, 0, 0, 1918, 1919, 5, 517, 0, 0, 1919, 1971, 1, 0, 0, 0, 1920, 1921, 5, 467, 0, 0, 1921, 1922, 5, 516, 0, 0, 1922, 1925, 3, 258, 129, 0, 1923, 1924, 5, 461, 0, 0, 1924, 1926, 5, 476, 0, 0, 1925, 1923, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 5, 517, 0, 0, 1928, 1971, 1, 0, 0, 0, 1929, 1930, 5, 281, 0, 0, 1930, 1931, 5, 516, 0, 0, 1931, 1932, 3, 266, 133, 0, 1932, 1933, 5, 170, 0, 0, 1933, 1934, 3, 266, 133, 0, 1934, 1935, 5, 517, 0, 0, 1935, 1971, 1, 0, 0, 0, 1936, 1971, 3, 354, 177, 0, 1937, 1971, 5, 527, 0, 0, 1938, 1939, 3, 328, 164, 0, 1939, 1940, 5, 513, 0, 0, 1940, 1941, 5, 527, 0, 0, 1941, 1971, 1, 0, 0, 0, 1942, 1943, 5, 516, 0, 0, 1943, 1944, 3, 158, 79, 0, 1944, 1945, 5, 517, 0, 0, 1945, 1971, 1, 0, 0, 0, 1946, 1947, 3, 272, 136, 0, 1947, 1959, 5, 516, 0, 0, 1948, 1950, 3, 364, 182, 0, 1949, 1948, 1, 0, 0, 0, 1949, 1950, 1, 0, 0, 0, 1950, 1951, 1, 0, 0, 0, 1951, 1956, 3, 274, 137, 0, 1952, 1953, 5, 520, 0, 0, 1953, 1955, 3, 274, 137, 0, 1954, 1952, 1, 0, 0, 0, 1955, 1958, 1, 0, 0, 0, 1956, 1954, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1960, 1, 0, 0, 0, 1958, 1956, 1, 0, 0, 0, 1959, 1949, 1, 0, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 5, 517, 0, 0, 1962, 1971, 1, 0, 0, 0, 1963, 1971, 3, 304, 152, 0, 1964, 1971, 3, 276, 138, 0, 1965, 1966, 5, 516, 0, 0, 1966, 1967, 3, 258, 129, 0, 1967, 1968, 5, 517, 0, 0, 1968, 1971, 1, 0, 0, 0, 1969, 1971, 5, 85, 0, 0, 1970, 1878, 1, 0, 0, 0, 1970, 1891, 1, 0, 0, 0, 1970, 1904, 1, 0, 0, 0, 1970, 1911, 1, 0, 0, 0, 1970, 1920, 1, 0, 0, 0, 1970, 1929, 1, 0, 0, 0, 1970, 1936, 1, 0, 0, 0, 1970, 1937, 1, 0, 0, 0, 1970, 1938, 1, 0, 0, 0, 1970, 1942, 1, 0, 0, 0, 1970, 1946, 1, 0, 0, 0, 1970, 1963, 1, 0, 0, 0, 1970, 1964, 1, 0, 0, 0, 1970, 1965, 1, 0, 0, 0, 1970, 1969, 1, 0, 0, 0, 1971, 1979, 1, 0, 0, 0, 1972, 1973, 10, 5, 0, 0, 1973, 1974, 5, 514, 0, 0, 1974, 1975, 3, 266, 133, 0, 1975, 1976, 5, 515, 0, 0, 1976, 1978, 1, 0, 0, 0, 1977, 1972, 1, 0, 0, 0, 1978, 1981, 1, 0, 0, 0, 1979, 1977, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 269, 1, 0, 0, 0, 1981, 1979, 1, 0, 0, 0, 1982, 1983, 3, 328, 164, 0, 1983, 271, 1, 0, 0, 0, 1984, 1987, 3, 372, 186, 0, 1985, 1987, 3, 328, 164, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1985, 1, 0, 0, 0, 1987, 273, 1, 0, 0, 0, 1988, 1993, 3, 370, 185, 0, 1989, 1993, 3, 368, 184, 0, 1990, 1993, 3, 366, 183, 0, 1991, 1993, 3, 258, 129, 0, 1992, 1988, 1, 0, 0, 0, 1992, 1989, 1, 0, 0, 0, 1992, 1990, 1, 0, 0, 0, 1992, 1991, 1, 0, 0, 0, 1993, 275, 1, 0, 0, 0, 1994, 1995, 3, 328, 164, 0, 1995, 277, 1, 0, 0, 0, 1996, 1997, 3, 304, 152, 0, 1997, 279, 1, 0, 0, 0, 1998, 2001, 3, 304, 152, 0, 1999, 2001, 3, 276, 138, 0, 2000, 1998, 1, 0, 0, 0, 2000, 1999, 1, 0, 0, 0, 2001, 281, 1, 0, 0, 0, 2002, 2005, 5, 182, 0, 0, 2003, 2006, 3, 284, 142, 0, 2004, 2006, 3, 288, 144, 0, 2005, 2003, 1, 0, 0, 0, 2005, 2004, 1, 0, 0, 0, 2005, 2006, 1, 0, 0, 0, 2006, 283, 1, 0, 0, 0, 2007, 2009, 3, 286, 143, 0, 2008, 2010, 3, 290, 145, 0, 2009, 2008, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 285, 1, 0, 0, 0, 2011, 2012, 3, 292, 146, 0, 2012, 2013, 3, 368, 184, 0, 2013, 2015, 1, 0, 0, 0, 2014, 2011, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 2014, 1, 0, 0, 0, 2016, 2017, 1, 0, 0, 0, 2017, 287, 1, 0, 0, 0, 2018, 2021, 3, 290, 145, 0, 2019, 2022, 3, 286, 143, 0, 2020, 2022, 3, 290, 145, 0, 2021, 2019, 1, 0, 0, 0, 2021, 2020, 1, 0, 0, 0, 2021, 2022, 1, 0, 0, 0, 2022, 289, 1, 0, 0, 0, 2023, 2024, 3, 292, 146, 0, 2024, 2025, 3, 368, 184, 0, 2025, 2026, 5, 388, 0, 0, 2026, 2027, 3, 368, 184, 0, 2027, 291, 1, 0, 0, 0, 2028, 2030, 7, 33, 0, 0, 2029, 2028, 1, 0, 0, 0, 2029, 2030, 1, 0, 0, 0, 2030, 2031, 1, 0, 0, 0, 2031, 2034, 7, 34, 0, 0, 2032, 2034, 5, 537, 0, 0, 2033, 2029, 1, 0, 0, 0, 2033, 2032, 1, 0, 0, 0, 2034, 293, 1, 0, 0, 0, 2035, 2037, 5, 17, 0, 0, 2036, 2035, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2040, 3, 304, 152, 0, 2039, 2041, 3, 300, 150, 0, 2040, 2039, 1, 0, 0, 0, 2040, 2041, 1, 0, 0, 0, 2041, 295, 1, 0, 0, 0, 2042, 2043, 3, 304, 152, 0, 2043, 2044, 3, 298, 149, 0, 2044, 297, 1, 0, 0, 0, 2045, 2046, 5, 221, 0, 0, 2046, 2048, 3, 304, 152, 0, 2047, 2045, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2047, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2053, 1, 0, 0, 0, 2051, 2053, 1, 0, 0, 0, 2052, 2047, 1, 0, 0, 0, 2052, 2051, 1, 0, 0, 0, 2053, 299, 1, 0, 0, 0, 2054, 2055, 5, 516, 0, 0, 2055, 2056, 3, 302, 151, 0, 2056, 2057, 5, 517, 0, 0, 2057, 301, 1, 0, 0, 0, 2058, 2063, 3, 304, 152, 0, 2059, 2060, 5, 520, 0, 0, 2060, 2062, 3, 304, 152, 0, 2061, 2059, 1, 0, 0, 0, 2062, 2065, 1, 0, 0, 0, 2063, 2061, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 303, 1, 0, 0, 0, 2065, 2063, 1, 0, 0, 0, 2066, 2070, 3, 306, 153, 0, 2067, 2070, 3, 308, 154, 0, 2068, 2070, 3, 374, 187, 0, 2069, 2066, 1, 0, 0, 0, 2069, 2067, 1, 0, 0, 0, 2069, 2068, 1, 0, 0, 0, 2070, 305, 1, 0, 0, 0, 2071, 2072, 7, 35, 0, 0, 2072, 307, 1, 0, 0, 0, 2073, 2074, 5, 537, 0, 0, 2074, 309, 1, 0, 0, 0, 2075, 2076, 5, 428, 0, 0, 2076, 2077, 3, 258, 129, 0, 2077, 2078, 5, 376, 0, 0, 2078, 2079, 3, 258, 129, 0, 2079, 311, 1, 0, 0, 0, 2080, 2081, 3, 304, 152, 0, 2081, 313, 1, 0, 0, 0, 2082, 2083, 3, 304, 152, 0, 2083, 315, 1, 0, 0, 0, 2084, 2087, 3, 304, 152, 0, 2085, 2086, 5, 513, 0, 0, 2086, 2088, 3, 304, 152, 0, 2087, 2085, 1, 0, 0, 0, 2087, 2088, 1, 0, 0, 0, 2088, 317, 1, 0, 0, 0, 2089, 2092, 3, 304, 152, 0, 2090, 2091, 5, 513, 0, 0, 2091, 2093, 3, 304, 152, 0, 2092, 2090, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 319, 1, 0, 0, 0, 2094, 2097, 3, 304, 152, 0, 2095, 2096, 5, 513, 0, 0, 2096, 2098, 3, 304, 152, 0, 2097, 2095, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2107, 1, 0, 0, 0, 2099, 2100, 3, 304, 152, 0, 2100, 2101, 5, 513, 0, 0, 2101, 2104, 3, 304, 152, 0, 2102, 2103, 5, 513, 0, 0, 2103, 2105, 3, 304, 152, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2107, 1, 0, 0, 0, 2106, 2094, 1, 0, 0, 0, 2106, 2099, 1, 0, 0, 0, 2107, 321, 1, 0, 0, 0, 2108, 2111, 3, 304, 152, 0, 2109, 2110, 5, 513, 0, 0, 2110, 2112, 3, 304, 152, 0, 2111, 2109, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2121, 1, 0, 0, 0, 2113, 2114, 3, 304, 152, 0, 2114, 2115, 5, 513, 0, 0, 2115, 2118, 3, 304, 152, 0, 2116, 2117, 5, 513, 0, 0, 2117, 2119, 3, 304, 152, 0, 2118, 2116, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2108, 1, 0, 0, 0, 2120, 2113, 1, 0, 0, 0, 2121, 323, 1, 0, 0, 0, 2122, 2125, 3, 304, 152, 0, 2123, 2124, 5, 513, 0, 0, 2124, 2126, 3, 304, 152, 0, 2125, 2123, 1, 0, 0, 0, 2125, 2126, 1, 0, 0, 0, 2126, 2135, 1, 0, 0, 0, 2127, 2128, 3, 304, 152, 0, 2128, 2129, 5, 513, 0, 0, 2129, 2132, 3, 304, 152, 0, 2130, 2131, 5, 513, 0, 0, 2131, 2133, 3, 304, 152, 0, 2132, 2130, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2135, 1, 0, 0, 0, 2134, 2122, 1, 0, 0, 0, 2134, 2127, 1, 0, 0, 0, 2135, 325, 1, 0, 0, 0, 2136, 2139, 3, 304, 152, 0, 2137, 2138, 5, 513, 0, 0, 2138, 2140, 3, 304, 152, 0, 2139, 2137, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2149, 1, 0, 0, 0, 2141, 2142, 3, 304, 152, 0, 2142, 2143, 5, 513, 0, 0, 2143, 2146, 3, 304, 152, 0, 2144, 2145, 5, 513, 0, 0, 2145, 2147, 3, 304, 152, 0, 2146, 2144, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2149, 1, 0, 0, 0, 2148, 2136, 1, 0, 0, 0, 2148, 2141, 1, 0, 0, 0, 2149, 327, 1, 0, 0, 0, 2150, 2155, 3, 304, 152, 0, 2151, 2152, 5, 513, 0, 0, 2152, 2154, 3, 304, 152, 0, 2153, 2151, 1, 0, 0, 0, 2154, 2157, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2155, 2153, 1, 0, 0, 0, 2156, 329, 1, 0, 0, 0, 2157, 2155, 1, 0, 0, 0, 2158, 2159, 5, 433, 0, 0, 2159, 2160, 3, 336, 168, 0, 2160, 331, 1, 0, 0, 0, 2161, 2162, 5, 167, 0, 0, 2162, 2163, 5, 241, 0, 0, 2163, 2164, 5, 133, 0, 0, 2164, 333, 1, 0, 0, 0, 2165, 2166, 5, 167, 0, 0, 2166, 2167, 5, 133, 0, 0, 2167, 335, 1, 0, 0, 0, 2168, 2169, 5, 516, 0, 0, 2169, 2174, 3, 338, 169, 0, 2170, 2171, 5, 520, 0, 0, 2171, 2173, 3, 338, 169, 0, 2172, 2170, 1, 0, 0, 0, 2173, 2176, 1, 0, 0, 0, 2174, 2172, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2177, 1, 0, 0, 0, 2176, 2174, 1, 0, 0, 0, 2177, 2178, 5, 517, 0, 0, 2178, 337, 1, 0, 0, 0, 2179, 2184, 3, 340, 170, 0, 2180, 2182, 5, 505, 0, 0, 2181, 2180, 1, 0, 0, 0, 2181, 2182, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2185, 3, 342, 171, 0, 2184, 2181, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 339, 1, 0, 0, 0, 2186, 2190, 3, 304, 152, 0, 2187, 2190, 3, 276, 138, 0, 2188, 2190, 5, 537, 0, 0, 2189, 2186, 1, 0, 0, 0, 2189, 2187, 1, 0, 0, 0, 2189, 2188, 1, 0, 0, 0, 2190, 341, 1, 0, 0, 0, 2191, 2196, 5, 538, 0, 0, 2192, 2196, 5, 539, 0, 0, 2193, 2196, 3, 362, 181, 0, 2194, 2196, 5, 537, 0, 0, 2195, 2191, 1, 0, 0, 0, 2195, 2192, 1, 0, 0, 0, 2195, 2193, 1, 0, 0, 0, 2195, 2194, 1, 0, 0, 0, 2196, 343, 1, 0, 0, 0, 2197, 2204, 5, 10, 0, 0, 2198, 2199, 5, 511, 0, 0, 2199, 2204, 5, 511, 0, 0, 2200, 2204, 5, 257, 0, 0, 2201, 2202, 5, 510, 0, 0, 2202, 2204, 5, 510, 0, 0, 2203, 2197, 1, 0, 0, 0, 2203, 2198, 1, 0, 0, 0, 2203, 2200, 1, 0, 0, 0, 2203, 2201, 1, 0, 0, 0, 2204, 345, 1, 0, 0, 0, 2205, 2220, 5, 505, 0, 0, 2206, 2220, 5, 506, 0, 0, 2207, 2220, 5, 507, 0, 0, 2208, 2209, 5, 507, 0, 0, 2209, 2220, 5, 505, 0, 0, 2210, 2211, 5, 506, 0, 0, 2211, 2220, 5, 505, 0, 0, 2212, 2213, 5, 507, 0, 0, 2213, 2220, 5, 506, 0, 0, 2214, 2215, 5, 508, 0, 0, 2215, 2220, 5, 505, 0, 0, 2216, 2217, 5, 507, 0, 0, 2217, 2218, 5, 505, 0, 0, 2218, 2220, 5, 506, 0, 0, 2219, 2205, 1, 0, 0, 0, 2219, 2206, 1, 0, 0, 0, 2219, 2207, 1, 0, 0, 0, 2219, 2208, 1, 0, 0, 0, 2219, 2210, 1, 0, 0, 0, 2219, 2212, 1, 0, 0, 0, 2219, 2214, 1, 0, 0, 0, 2219, 2216, 1, 0, 0, 0, 2220, 347, 1, 0, 0, 0, 2221, 2222, 5, 507, 0, 0, 2222, 2229, 5, 507, 0, 0, 2223, 2224, 5, 506, 0, 0, 2224, 2229, 5, 506, 0, 0, 2225, 2229, 5, 511, 0, 0, 2226, 2229, 5, 512, 0, 0, 2227, 2229, 5, 510, 0, 0, 2228, 2221, 1, 0, 0, 0, 2228, 2223, 1, 0, 0, 0, 2228, 2225, 1, 0, 0, 0, 2228, 2226, 1, 0, 0, 0, 2228, 2227, 1, 0, 0, 0, 2229, 349, 1, 0, 0, 0, 2230, 2231, 7, 36, 0, 0, 2231, 351, 1, 0, 0, 0, 2232, 2233, 7, 37, 0, 0, 2233, 353, 1, 0, 0, 0, 2234, 2249, 3, 282, 141, 0, 2235, 2249, 3, 356, 178, 0, 2236, 2249, 3, 358, 179, 0, 2237, 2239, 5, 529, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2249, 3, 360, 180, 0, 2241, 2249, 3, 362, 181, 0, 2242, 2249, 5, 539, 0, 0, 2243, 2249, 5, 540, 0, 0, 2244, 2246, 5, 241, 0, 0, 2245, 2244, 1, 0, 0, 0, 2245, 2246, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2249, 5, 244, 0, 0, 2248, 2234, 1, 0, 0, 0, 2248, 2235, 1, 0, 0, 0, 2248, 2236, 1, 0, 0, 0, 2248, 2238, 1, 0, 0, 0, 2248, 2241, 1, 0, 0, 0, 2248, 2242, 1, 0, 0, 0, 2248, 2243, 1, 0, 0, 0, 2248, 2245, 1, 0, 0, 0, 2249, 355, 1, 0, 0, 0, 2250, 2251, 3, 366, 183, 0, 2251, 2252, 3, 358, 179, 0, 2252, 357, 1, 0, 0, 0, 2253, 2254, 5, 537, 0, 0, 2254, 359, 1, 0, 0, 0, 2255, 2256, 5, 538, 0, 0, 2256, 361, 1, 0, 0, 0, 2257, 2258, 7, 38, 0, 0, 2258, 363, 1, 0, 0, 0, 2259, 2260, 7, 39, 0, 0, 2260, 365, 1, 0, 0, 0, 2261, 2262, 7, 40, 0, 0, 2262, 367, 1, 0, 0, 0, 2263, 2264, 7, 41, 0, 0, 2264, 369, 1, 0, 0, 0, 2265, 2266, 7, 42, 0, 0, 2266, 371, 1, 0, 0, 0, 2267, 2268, 7, 43, 0, 0, 2268, 373, 1, 0, 0, 0, 2269, 2270, 7, 44, 0, 0, 2270, 375, 1, 0, 0, 0, 270, 379, 386, 389, 403, 421, 425, 434, 439, 446, 457, 466, 478, 481, 488, 491, 499, 503, 508, 511, 518, 526, 530, 542, 550, 554, 586, 589, 594, 598, 602, 606, 615, 620, 624, 628, 632, 635, 639, 644, 650, 655, 660, 663, 667, 671, 679, 687, 691, 695, 699, 703, 707, 711, 715, 719, 721, 731, 739, 763, 770, 776, 779, 782, 792, 795, 803, 815, 839, 851, 856, 860, 868, 872, 878, 888, 892, 898, 902, 906, 909, 918, 922, 929, 932, 942, 950, 958, 962, 977, 996, 1007, 1011, 1018, 1023, 1029, 1033, 1040, 1044, 1048, 1052, 1060, 1064, 1069, 1075, 1081, 1084, 1088, 1099, 1108, 1122, 1134, 1149, 1152, 1156, 1159, 1161, 1166, 1170, 1173, 1177, 1186, 1195, 1205, 1210, 1221, 1224, 1227, 1230, 1233, 1239, 1243, 1251, 1254, 1259, 1262, 1266, 1269, 1271, 1285, 1296, 1301, 1309, 1312, 1315, 1320, 1322, 1324, 1329, 1332, 1336, 1339, 1342, 1346, 1349, 1352, 1364, 1371, 1382, 1409, 1431, 1444, 1456, 1469, 1481, 1493, 1499, 1526, 1534, 1538, 1541, 1544, 1551, 1554, 1557, 1560, 1563, 1566, 1571, 1574, 1583, 1588, 1592, 1597, 1606, 1625, 1633, 1641, 1645, 1649, 1659, 1685, 1693, 1705, 1727, 1729, 1740, 1743, 1745, 1749, 1753, 1760, 1769, 1775, 1788, 1795, 1800, 1806, 1813, 1815, 1818, 1830, 1835, 1838, 1844, 1846, 1852, 1873, 1875, 1883, 1887, 1896, 1900, 1916, 1925, 1949, 1956, 1959, 1970, 1979, 1986, 1992, 2000, 2005, 2009, 2016, 2021, 2029, 2033, 2036, 2040, 2049, 2052, 2063, 2069, 2087, 2092, 2097, 2104, 2106, 2111, 2118, 2120, 2125, 2132, 2134, 2139, 2146, 2148, 2155, 2174, 2181, 2184, 2189, 2195, 2203, 2219, 2228, 2238, 2245, 2248] \ No newline at end of file +[4, 1, 541, 2260, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 1, 0, 5, 0, 376, 8, 0, 10, 0, 12, 0, 379, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 385, 8, 1, 1, 1, 3, 1, 388, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 402, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 420, 8, 4, 1, 5, 1, 5, 3, 5, 424, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 433, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 438, 8, 7, 1, 8, 1, 8, 1, 8, 5, 8, 443, 8, 8, 10, 8, 12, 8, 446, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 456, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 463, 8, 11, 10, 11, 12, 11, 466, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 477, 8, 12, 1, 12, 3, 12, 480, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 487, 8, 12, 1, 12, 3, 12, 490, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 498, 8, 12, 1, 12, 1, 12, 3, 12, 502, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 507, 8, 12, 1, 12, 3, 12, 510, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 517, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 525, 8, 15, 1, 16, 1, 16, 3, 16, 529, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 541, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 549, 8, 18, 1, 18, 1, 18, 3, 18, 553, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 585, 8, 18, 1, 19, 3, 19, 588, 8, 19, 1, 19, 4, 19, 591, 8, 19, 11, 19, 12, 19, 592, 1, 20, 1, 20, 3, 20, 597, 8, 20, 1, 21, 1, 21, 3, 21, 601, 8, 21, 1, 21, 1, 21, 3, 21, 605, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 612, 8, 21, 10, 21, 12, 21, 615, 9, 21, 1, 21, 1, 21, 3, 21, 619, 8, 21, 1, 21, 1, 21, 3, 21, 623, 8, 21, 1, 21, 1, 21, 3, 21, 627, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 632, 8, 21, 1, 21, 3, 21, 635, 8, 21, 1, 21, 1, 21, 3, 21, 639, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 644, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 650, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 655, 8, 23, 1, 24, 1, 24, 1, 24, 3, 24, 660, 8, 24, 1, 24, 1, 24, 3, 24, 664, 8, 24, 1, 25, 1, 25, 3, 25, 668, 8, 25, 1, 26, 1, 26, 3, 26, 672, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 678, 8, 27, 10, 27, 12, 27, 681, 9, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 3, 28, 688, 8, 28, 1, 28, 1, 28, 3, 28, 692, 8, 28, 1, 28, 1, 28, 3, 28, 696, 8, 28, 1, 28, 1, 28, 3, 28, 700, 8, 28, 1, 28, 1, 28, 3, 28, 704, 8, 28, 1, 28, 1, 28, 3, 28, 708, 8, 28, 1, 28, 1, 28, 3, 28, 712, 8, 28, 1, 28, 1, 28, 3, 28, 716, 8, 28, 1, 28, 1, 28, 3, 28, 720, 8, 28, 3, 28, 722, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 732, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 740, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 762, 8, 34, 10, 34, 12, 34, 765, 9, 34, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 771, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 777, 8, 35, 1, 35, 3, 35, 780, 8, 35, 1, 35, 3, 35, 783, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 790, 8, 36, 1, 36, 3, 36, 793, 8, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 802, 8, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 814, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 836, 8, 45, 10, 45, 12, 45, 839, 9, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 848, 8, 46, 10, 46, 12, 46, 851, 9, 46, 1, 46, 1, 46, 3, 46, 855, 8, 46, 1, 47, 1, 47, 3, 47, 859, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 865, 8, 48, 10, 48, 12, 48, 868, 9, 48, 1, 48, 3, 48, 871, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 877, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 887, 8, 51, 1, 51, 1, 51, 1, 51, 3, 51, 892, 8, 51, 1, 51, 1, 51, 1, 52, 1, 52, 3, 52, 898, 8, 52, 1, 52, 1, 52, 3, 52, 902, 8, 52, 1, 52, 1, 52, 3, 52, 906, 8, 52, 1, 52, 1, 52, 3, 52, 910, 8, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 919, 8, 53, 1, 53, 1, 53, 3, 53, 923, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 930, 8, 53, 1, 53, 3, 53, 933, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 941, 8, 54, 10, 54, 12, 54, 944, 9, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 951, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 959, 8, 56, 1, 57, 1, 57, 3, 57, 963, 8, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 978, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 997, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1008, 8, 65, 1, 65, 1, 65, 3, 65, 1012, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1019, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 1024, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 1030, 8, 67, 1, 67, 1, 67, 3, 67, 1034, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 3, 68, 1041, 8, 68, 1, 68, 1, 68, 3, 68, 1045, 8, 68, 1, 69, 1, 69, 3, 69, 1049, 8, 69, 1, 69, 1, 69, 3, 69, 1053, 8, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1061, 8, 70, 1, 70, 1, 70, 3, 70, 1065, 8, 70, 1, 70, 1, 70, 1, 71, 3, 71, 1070, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1076, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1082, 8, 72, 1, 72, 3, 72, 1085, 8, 72, 1, 72, 1, 72, 3, 72, 1089, 8, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 1098, 8, 74, 10, 74, 12, 74, 1101, 9, 74, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 1107, 8, 75, 10, 75, 12, 75, 1110, 9, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 4, 76, 1121, 8, 76, 11, 76, 12, 76, 1122, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 4, 77, 1133, 8, 77, 11, 77, 12, 77, 1134, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1150, 8, 78, 1, 78, 3, 78, 1153, 8, 78, 1, 78, 1, 78, 3, 78, 1157, 8, 78, 1, 78, 3, 78, 1160, 8, 78, 3, 78, 1162, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1167, 8, 78, 1, 78, 1, 78, 3, 78, 1171, 8, 78, 1, 78, 3, 78, 1174, 8, 78, 5, 78, 1176, 8, 78, 10, 78, 12, 78, 1179, 9, 78, 1, 79, 1, 79, 1, 79, 1, 79, 5, 79, 1185, 8, 79, 10, 79, 12, 79, 1188, 9, 79, 1, 80, 1, 80, 1, 80, 1, 80, 5, 80, 1194, 8, 80, 10, 80, 12, 80, 1197, 9, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 1204, 8, 81, 10, 81, 12, 81, 1207, 9, 81, 1, 81, 1, 81, 3, 81, 1211, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 1222, 8, 83, 1, 83, 3, 83, 1225, 8, 83, 1, 83, 3, 83, 1228, 8, 83, 1, 83, 3, 83, 1231, 8, 83, 1, 83, 3, 83, 1234, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1240, 8, 83, 1, 84, 1, 84, 3, 84, 1244, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 5, 84, 1250, 8, 84, 10, 84, 12, 84, 1253, 9, 84, 3, 84, 1255, 8, 84, 1, 85, 1, 85, 1, 85, 3, 85, 1260, 8, 85, 1, 85, 3, 85, 1263, 8, 85, 1, 85, 1, 85, 3, 85, 1267, 8, 85, 1, 85, 3, 85, 1270, 8, 85, 3, 85, 1272, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 1286, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 5, 88, 1295, 8, 88, 10, 88, 12, 88, 1298, 9, 88, 1, 88, 1, 88, 3, 88, 1302, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1310, 8, 88, 1, 88, 3, 88, 1313, 8, 88, 1, 88, 3, 88, 1316, 8, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1321, 8, 88, 5, 88, 1323, 8, 88, 10, 88, 12, 88, 1326, 9, 88, 1, 89, 1, 89, 3, 89, 1330, 8, 89, 1, 90, 3, 90, 1333, 8, 90, 1, 90, 1, 90, 3, 90, 1337, 8, 90, 1, 90, 1, 90, 3, 90, 1341, 8, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 5, 90, 1351, 8, 90, 10, 90, 12, 90, 1354, 9, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1360, 8, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1371, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 1396, 8, 95, 10, 95, 12, 95, 1399, 9, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1420, 8, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1433, 8, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 1443, 8, 102, 10, 102, 12, 102, 1446, 9, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1456, 8, 103, 10, 103, 12, 103, 1459, 9, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1468, 8, 103, 10, 103, 12, 103, 1471, 9, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1480, 8, 103, 10, 103, 12, 103, 1483, 9, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1488, 8, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 5, 110, 1513, 8, 110, 10, 110, 12, 110, 1516, 9, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 3, 112, 1523, 8, 112, 1, 112, 1, 112, 3, 112, 1527, 8, 112, 1, 112, 3, 112, 1530, 8, 112, 1, 112, 3, 112, 1533, 8, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 3, 113, 1540, 8, 113, 1, 113, 3, 113, 1543, 8, 113, 1, 113, 3, 113, 1546, 8, 113, 1, 113, 3, 113, 1549, 8, 113, 1, 113, 3, 113, 1552, 8, 113, 1, 113, 3, 113, 1555, 8, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1560, 8, 113, 1, 113, 3, 113, 1563, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 1570, 8, 114, 10, 114, 12, 114, 1573, 9, 114, 1, 115, 1, 115, 3, 115, 1577, 8, 115, 1, 115, 1, 115, 3, 115, 1581, 8, 115, 1, 116, 1, 116, 1, 116, 3, 116, 1586, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 5, 117, 1593, 8, 117, 10, 117, 12, 117, 1596, 9, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1614, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 1620, 8, 119, 10, 119, 12, 119, 1623, 9, 119, 1, 120, 1, 120, 1, 120, 4, 120, 1628, 8, 120, 11, 120, 12, 120, 1629, 1, 120, 1, 120, 3, 120, 1634, 8, 120, 1, 121, 1, 121, 3, 121, 1638, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1648, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1674, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1680, 8, 124, 10, 124, 12, 124, 1683, 9, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 1694, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1716, 8, 129, 3, 129, 1718, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1729, 8, 129, 1, 129, 5, 129, 1732, 8, 129, 10, 129, 12, 129, 1735, 9, 129, 1, 130, 3, 130, 1738, 8, 130, 1, 130, 1, 130, 3, 130, 1742, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1749, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 5, 130, 1756, 8, 130, 10, 130, 12, 130, 1759, 9, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1764, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1777, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1784, 8, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1789, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1795, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1802, 8, 130, 3, 130, 1804, 8, 130, 1, 131, 3, 131, 1807, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1817, 8, 131, 10, 131, 12, 131, 1820, 9, 131, 1, 131, 1, 131, 3, 131, 1824, 8, 131, 1, 131, 3, 131, 1827, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1833, 8, 131, 3, 131, 1835, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1841, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 5, 132, 1862, 8, 132, 10, 132, 12, 132, 1865, 9, 132, 1, 133, 1, 133, 1, 133, 4, 133, 1870, 8, 133, 11, 133, 12, 133, 1871, 1, 133, 1, 133, 3, 133, 1876, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 4, 133, 1883, 8, 133, 11, 133, 12, 133, 1884, 1, 133, 1, 133, 3, 133, 1889, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1905, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1914, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1938, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1943, 8, 133, 10, 133, 12, 133, 1946, 9, 133, 3, 133, 1948, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1959, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1966, 8, 133, 10, 133, 12, 133, 1969, 9, 133, 1, 134, 1, 134, 1, 135, 1, 135, 3, 135, 1975, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1981, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 1989, 8, 139, 1, 140, 1, 140, 1, 140, 3, 140, 1994, 8, 140, 1, 141, 1, 141, 3, 141, 1998, 8, 141, 1, 142, 1, 142, 1, 142, 4, 142, 2003, 8, 142, 11, 142, 12, 142, 2004, 1, 143, 1, 143, 1, 143, 3, 143, 2010, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 3, 145, 2018, 8, 145, 1, 145, 1, 145, 3, 145, 2022, 8, 145, 1, 146, 3, 146, 2025, 8, 146, 1, 146, 1, 146, 3, 146, 2029, 8, 146, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 4, 148, 2036, 8, 148, 11, 148, 12, 148, 2037, 1, 148, 3, 148, 2041, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 5, 150, 2050, 8, 150, 10, 150, 12, 150, 2053, 9, 150, 1, 151, 1, 151, 1, 151, 3, 151, 2058, 8, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 3, 157, 2076, 8, 157, 1, 158, 1, 158, 1, 158, 3, 158, 2081, 8, 158, 1, 159, 1, 159, 1, 159, 3, 159, 2086, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 2093, 8, 159, 3, 159, 2095, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 2100, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 2107, 8, 160, 3, 160, 2109, 8, 160, 1, 161, 1, 161, 1, 161, 3, 161, 2114, 8, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 2121, 8, 161, 3, 161, 2123, 8, 161, 1, 162, 1, 162, 1, 162, 3, 162, 2128, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 2135, 8, 162, 3, 162, 2137, 8, 162, 1, 163, 1, 163, 1, 163, 5, 163, 2142, 8, 163, 10, 163, 12, 163, 2145, 9, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 5, 167, 2161, 8, 167, 10, 167, 12, 167, 2164, 9, 167, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, 2170, 8, 168, 1, 168, 3, 168, 2173, 8, 168, 1, 169, 1, 169, 1, 169, 3, 169, 2178, 8, 169, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2184, 8, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2192, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2208, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2217, 8, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 2227, 8, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 2234, 8, 176, 1, 176, 3, 176, 2237, 8, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 2143, 5, 156, 176, 258, 264, 266, 187, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 0, 45, 2, 0, 109, 109, 450, 450, 3, 0, 45, 45, 128, 128, 188, 188, 4, 0, 42, 42, 90, 90, 422, 422, 464, 464, 2, 0, 441, 441, 447, 447, 2, 0, 151, 151, 170, 170, 2, 0, 437, 437, 489, 489, 2, 0, 482, 485, 487, 487, 3, 0, 32, 32, 91, 91, 244, 244, 11, 0, 28, 29, 35, 35, 46, 46, 92, 92, 178, 179, 344, 344, 360, 360, 378, 378, 381, 381, 387, 387, 416, 417, 2, 0, 433, 433, 435, 435, 4, 0, 101, 102, 115, 115, 144, 144, 246, 246, 2, 0, 13, 13, 231, 231, 2, 0, 455, 455, 462, 462, 3, 0, 5, 5, 270, 270, 444, 444, 3, 0, 266, 266, 455, 455, 462, 462, 3, 0, 425, 425, 458, 458, 477, 477, 3, 0, 330, 330, 465, 465, 481, 481, 2, 0, 440, 440, 490, 490, 2, 0, 183, 183, 265, 265, 3, 0, 130, 130, 180, 180, 402, 402, 4, 0, 152, 152, 174, 174, 201, 201, 317, 317, 3, 0, 445, 445, 459, 459, 499, 499, 4, 0, 250, 250, 446, 446, 494, 496, 498, 498, 2, 0, 74, 74, 320, 320, 3, 0, 459, 459, 492, 492, 499, 499, 2, 0, 439, 439, 450, 450, 2, 0, 457, 457, 467, 467, 4, 0, 140, 140, 244, 244, 397, 397, 404, 404, 2, 0, 19, 19, 369, 369, 2, 0, 5, 5, 11, 11, 2, 0, 509, 509, 529, 530, 4, 0, 452, 452, 527, 527, 531, 531, 534, 534, 2, 0, 529, 530, 532, 532, 1, 0, 529, 530, 1, 0, 538, 539, 2, 0, 538, 538, 541, 541, 4, 0, 452, 452, 527, 527, 529, 531, 533, 534, 3, 0, 241, 241, 508, 509, 529, 530, 2, 0, 140, 140, 397, 397, 2, 0, 5, 5, 113, 113, 10, 0, 97, 97, 165, 165, 222, 222, 229, 229, 334, 334, 436, 436, 470, 470, 472, 472, 488, 488, 502, 502, 15, 0, 97, 97, 165, 165, 222, 222, 229, 229, 334, 334, 427, 427, 436, 436, 442, 442, 448, 449, 454, 454, 460, 460, 470, 475, 488, 488, 491, 491, 502, 503, 9, 0, 5, 5, 13, 13, 33, 33, 85, 85, 113, 113, 200, 200, 389, 389, 413, 413, 527, 527, 55, 0, 4, 4, 13, 13, 23, 23, 38, 38, 41, 41, 43, 44, 54, 54, 56, 56, 69, 69, 75, 75, 78, 78, 84, 85, 91, 91, 98, 99, 107, 107, 119, 119, 134, 134, 139, 139, 143, 143, 145, 145, 160, 160, 165, 165, 167, 167, 194, 194, 197, 197, 199, 199, 201, 201, 205, 205, 207, 209, 214, 214, 220, 220, 222, 223, 229, 229, 243, 243, 245, 245, 264, 264, 276, 276, 281, 281, 283, 283, 293, 293, 317, 317, 321, 323, 334, 334, 357, 358, 364, 364, 367, 367, 378, 380, 395, 395, 398, 399, 408, 408, 419, 420, 436, 436, 469, 469, 488, 488, 502, 502, 1, 0, 437, 504, 2460, 0, 377, 1, 0, 0, 0, 2, 387, 1, 0, 0, 0, 4, 401, 1, 0, 0, 0, 6, 403, 1, 0, 0, 0, 8, 419, 1, 0, 0, 0, 10, 423, 1, 0, 0, 0, 12, 425, 1, 0, 0, 0, 14, 428, 1, 0, 0, 0, 16, 439, 1, 0, 0, 0, 18, 447, 1, 0, 0, 0, 20, 455, 1, 0, 0, 0, 22, 457, 1, 0, 0, 0, 24, 509, 1, 0, 0, 0, 26, 511, 1, 0, 0, 0, 28, 518, 1, 0, 0, 0, 30, 522, 1, 0, 0, 0, 32, 526, 1, 0, 0, 0, 34, 530, 1, 0, 0, 0, 36, 584, 1, 0, 0, 0, 38, 590, 1, 0, 0, 0, 40, 596, 1, 0, 0, 0, 42, 598, 1, 0, 0, 0, 44, 640, 1, 0, 0, 0, 46, 654, 1, 0, 0, 0, 48, 656, 1, 0, 0, 0, 50, 667, 1, 0, 0, 0, 52, 671, 1, 0, 0, 0, 54, 673, 1, 0, 0, 0, 56, 721, 1, 0, 0, 0, 58, 723, 1, 0, 0, 0, 60, 727, 1, 0, 0, 0, 62, 735, 1, 0, 0, 0, 64, 743, 1, 0, 0, 0, 66, 747, 1, 0, 0, 0, 68, 754, 1, 0, 0, 0, 70, 782, 1, 0, 0, 0, 72, 784, 1, 0, 0, 0, 74, 794, 1, 0, 0, 0, 76, 796, 1, 0, 0, 0, 78, 803, 1, 0, 0, 0, 80, 805, 1, 0, 0, 0, 82, 813, 1, 0, 0, 0, 84, 821, 1, 0, 0, 0, 86, 823, 1, 0, 0, 0, 88, 827, 1, 0, 0, 0, 90, 831, 1, 0, 0, 0, 92, 854, 1, 0, 0, 0, 94, 858, 1, 0, 0, 0, 96, 860, 1, 0, 0, 0, 98, 876, 1, 0, 0, 0, 100, 878, 1, 0, 0, 0, 102, 883, 1, 0, 0, 0, 104, 895, 1, 0, 0, 0, 106, 914, 1, 0, 0, 0, 108, 934, 1, 0, 0, 0, 110, 945, 1, 0, 0, 0, 112, 947, 1, 0, 0, 0, 114, 960, 1, 0, 0, 0, 116, 967, 1, 0, 0, 0, 118, 970, 1, 0, 0, 0, 120, 979, 1, 0, 0, 0, 122, 983, 1, 0, 0, 0, 124, 987, 1, 0, 0, 0, 126, 990, 1, 0, 0, 0, 128, 998, 1, 0, 0, 0, 130, 1003, 1, 0, 0, 0, 132, 1020, 1, 0, 0, 0, 134, 1027, 1, 0, 0, 0, 136, 1037, 1, 0, 0, 0, 138, 1046, 1, 0, 0, 0, 140, 1056, 1, 0, 0, 0, 142, 1075, 1, 0, 0, 0, 144, 1077, 1, 0, 0, 0, 146, 1090, 1, 0, 0, 0, 148, 1093, 1, 0, 0, 0, 150, 1102, 1, 0, 0, 0, 152, 1113, 1, 0, 0, 0, 154, 1126, 1, 0, 0, 0, 156, 1161, 1, 0, 0, 0, 158, 1180, 1, 0, 0, 0, 160, 1189, 1, 0, 0, 0, 162, 1198, 1, 0, 0, 0, 164, 1217, 1, 0, 0, 0, 166, 1239, 1, 0, 0, 0, 168, 1241, 1, 0, 0, 0, 170, 1271, 1, 0, 0, 0, 172, 1285, 1, 0, 0, 0, 174, 1287, 1, 0, 0, 0, 176, 1301, 1, 0, 0, 0, 178, 1327, 1, 0, 0, 0, 180, 1370, 1, 0, 0, 0, 182, 1372, 1, 0, 0, 0, 184, 1378, 1, 0, 0, 0, 186, 1380, 1, 0, 0, 0, 188, 1385, 1, 0, 0, 0, 190, 1390, 1, 0, 0, 0, 192, 1402, 1, 0, 0, 0, 194, 1419, 1, 0, 0, 0, 196, 1421, 1, 0, 0, 0, 198, 1423, 1, 0, 0, 0, 200, 1432, 1, 0, 0, 0, 202, 1434, 1, 0, 0, 0, 204, 1437, 1, 0, 0, 0, 206, 1487, 1, 0, 0, 0, 208, 1489, 1, 0, 0, 0, 210, 1492, 1, 0, 0, 0, 212, 1494, 1, 0, 0, 0, 214, 1501, 1, 0, 0, 0, 216, 1503, 1, 0, 0, 0, 218, 1505, 1, 0, 0, 0, 220, 1508, 1, 0, 0, 0, 222, 1517, 1, 0, 0, 0, 224, 1522, 1, 0, 0, 0, 226, 1536, 1, 0, 0, 0, 228, 1564, 1, 0, 0, 0, 230, 1574, 1, 0, 0, 0, 232, 1582, 1, 0, 0, 0, 234, 1587, 1, 0, 0, 0, 236, 1613, 1, 0, 0, 0, 238, 1615, 1, 0, 0, 0, 240, 1624, 1, 0, 0, 0, 242, 1635, 1, 0, 0, 0, 244, 1647, 1, 0, 0, 0, 246, 1673, 1, 0, 0, 0, 248, 1675, 1, 0, 0, 0, 250, 1693, 1, 0, 0, 0, 252, 1695, 1, 0, 0, 0, 254, 1700, 1, 0, 0, 0, 256, 1703, 1, 0, 0, 0, 258, 1717, 1, 0, 0, 0, 260, 1803, 1, 0, 0, 0, 262, 1834, 1, 0, 0, 0, 264, 1840, 1, 0, 0, 0, 266, 1958, 1, 0, 0, 0, 268, 1970, 1, 0, 0, 0, 270, 1974, 1, 0, 0, 0, 272, 1980, 1, 0, 0, 0, 274, 1982, 1, 0, 0, 0, 276, 1984, 1, 0, 0, 0, 278, 1988, 1, 0, 0, 0, 280, 1990, 1, 0, 0, 0, 282, 1995, 1, 0, 0, 0, 284, 2002, 1, 0, 0, 0, 286, 2006, 1, 0, 0, 0, 288, 2011, 1, 0, 0, 0, 290, 2021, 1, 0, 0, 0, 292, 2024, 1, 0, 0, 0, 294, 2030, 1, 0, 0, 0, 296, 2040, 1, 0, 0, 0, 298, 2042, 1, 0, 0, 0, 300, 2046, 1, 0, 0, 0, 302, 2057, 1, 0, 0, 0, 304, 2059, 1, 0, 0, 0, 306, 2061, 1, 0, 0, 0, 308, 2063, 1, 0, 0, 0, 310, 2068, 1, 0, 0, 0, 312, 2070, 1, 0, 0, 0, 314, 2072, 1, 0, 0, 0, 316, 2077, 1, 0, 0, 0, 318, 2094, 1, 0, 0, 0, 320, 2108, 1, 0, 0, 0, 322, 2122, 1, 0, 0, 0, 324, 2136, 1, 0, 0, 0, 326, 2138, 1, 0, 0, 0, 328, 2146, 1, 0, 0, 0, 330, 2149, 1, 0, 0, 0, 332, 2153, 1, 0, 0, 0, 334, 2156, 1, 0, 0, 0, 336, 2167, 1, 0, 0, 0, 338, 2177, 1, 0, 0, 0, 340, 2183, 1, 0, 0, 0, 342, 2191, 1, 0, 0, 0, 344, 2207, 1, 0, 0, 0, 346, 2216, 1, 0, 0, 0, 348, 2218, 1, 0, 0, 0, 350, 2220, 1, 0, 0, 0, 352, 2236, 1, 0, 0, 0, 354, 2238, 1, 0, 0, 0, 356, 2241, 1, 0, 0, 0, 358, 2243, 1, 0, 0, 0, 360, 2245, 1, 0, 0, 0, 362, 2247, 1, 0, 0, 0, 364, 2249, 1, 0, 0, 0, 366, 2251, 1, 0, 0, 0, 368, 2253, 1, 0, 0, 0, 370, 2255, 1, 0, 0, 0, 372, 2257, 1, 0, 0, 0, 374, 376, 3, 2, 1, 0, 375, 374, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 380, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 5, 0, 0, 1, 381, 1, 1, 0, 0, 0, 382, 384, 3, 4, 2, 0, 383, 385, 5, 521, 0, 0, 384, 383, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 388, 3, 6, 3, 0, 387, 382, 1, 0, 0, 0, 387, 386, 1, 0, 0, 0, 388, 3, 1, 0, 0, 0, 389, 402, 3, 8, 4, 0, 390, 402, 3, 10, 5, 0, 391, 402, 3, 12, 6, 0, 392, 402, 3, 14, 7, 0, 393, 402, 3, 20, 10, 0, 394, 402, 3, 24, 12, 0, 395, 402, 3, 26, 13, 0, 396, 402, 3, 28, 14, 0, 397, 402, 3, 30, 15, 0, 398, 402, 3, 32, 16, 0, 399, 402, 3, 34, 17, 0, 400, 402, 3, 36, 18, 0, 401, 389, 1, 0, 0, 0, 401, 390, 1, 0, 0, 0, 401, 391, 1, 0, 0, 0, 401, 392, 1, 0, 0, 0, 401, 393, 1, 0, 0, 0, 401, 394, 1, 0, 0, 0, 401, 395, 1, 0, 0, 0, 401, 396, 1, 0, 0, 0, 401, 397, 1, 0, 0, 0, 401, 398, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 400, 1, 0, 0, 0, 402, 5, 1, 0, 0, 0, 403, 404, 5, 521, 0, 0, 404, 7, 1, 0, 0, 0, 405, 420, 3, 40, 20, 0, 406, 420, 3, 102, 51, 0, 407, 420, 3, 104, 52, 0, 408, 420, 3, 106, 53, 0, 409, 420, 3, 100, 50, 0, 410, 420, 3, 112, 56, 0, 411, 420, 3, 126, 63, 0, 412, 420, 3, 128, 64, 0, 413, 420, 3, 130, 65, 0, 414, 420, 3, 132, 66, 0, 415, 420, 3, 134, 67, 0, 416, 420, 3, 136, 68, 0, 417, 420, 3, 138, 69, 0, 418, 420, 3, 140, 70, 0, 419, 405, 1, 0, 0, 0, 419, 406, 1, 0, 0, 0, 419, 407, 1, 0, 0, 0, 419, 408, 1, 0, 0, 0, 419, 409, 1, 0, 0, 0, 419, 410, 1, 0, 0, 0, 419, 411, 1, 0, 0, 0, 419, 412, 1, 0, 0, 0, 419, 413, 1, 0, 0, 0, 419, 414, 1, 0, 0, 0, 419, 415, 1, 0, 0, 0, 419, 416, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 419, 418, 1, 0, 0, 0, 420, 9, 1, 0, 0, 0, 421, 424, 3, 156, 78, 0, 422, 424, 3, 142, 71, 0, 423, 421, 1, 0, 0, 0, 423, 422, 1, 0, 0, 0, 424, 11, 1, 0, 0, 0, 425, 426, 7, 0, 0, 0, 426, 427, 3, 320, 160, 0, 427, 13, 1, 0, 0, 0, 428, 432, 5, 135, 0, 0, 429, 433, 3, 16, 8, 0, 430, 431, 5, 479, 0, 0, 431, 433, 5, 146, 0, 0, 432, 429, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 437, 1, 0, 0, 0, 434, 438, 3, 10, 5, 0, 435, 438, 3, 144, 72, 0, 436, 438, 3, 154, 77, 0, 437, 434, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 436, 1, 0, 0, 0, 438, 15, 1, 0, 0, 0, 439, 444, 3, 18, 9, 0, 440, 441, 5, 520, 0, 0, 441, 443, 3, 18, 9, 0, 442, 440, 1, 0, 0, 0, 443, 446, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 17, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 447, 448, 7, 1, 0, 0, 448, 19, 1, 0, 0, 0, 449, 450, 5, 410, 0, 0, 450, 451, 5, 441, 0, 0, 451, 456, 3, 310, 155, 0, 452, 453, 5, 410, 0, 0, 453, 456, 3, 314, 157, 0, 454, 456, 3, 22, 11, 0, 455, 449, 1, 0, 0, 0, 455, 452, 1, 0, 0, 0, 455, 454, 1, 0, 0, 0, 456, 21, 1, 0, 0, 0, 457, 458, 5, 410, 0, 0, 458, 459, 5, 227, 0, 0, 459, 464, 3, 326, 163, 0, 460, 461, 5, 520, 0, 0, 461, 463, 3, 326, 163, 0, 462, 460, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 23, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 467, 468, 5, 341, 0, 0, 468, 510, 7, 2, 0, 0, 469, 470, 5, 341, 0, 0, 470, 471, 5, 76, 0, 0, 471, 510, 7, 3, 0, 0, 472, 473, 5, 341, 0, 0, 473, 476, 5, 374, 0, 0, 474, 475, 7, 4, 0, 0, 475, 477, 3, 314, 157, 0, 476, 474, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 479, 1, 0, 0, 0, 478, 480, 3, 262, 131, 0, 479, 478, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 510, 1, 0, 0, 0, 481, 482, 5, 341, 0, 0, 482, 483, 5, 58, 0, 0, 483, 486, 7, 4, 0, 0, 484, 487, 3, 322, 161, 0, 485, 487, 3, 320, 160, 0, 486, 484, 1, 0, 0, 0, 486, 485, 1, 0, 0, 0, 487, 489, 1, 0, 0, 0, 488, 490, 3, 262, 131, 0, 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 510, 1, 0, 0, 0, 491, 492, 5, 341, 0, 0, 492, 497, 5, 72, 0, 0, 493, 494, 5, 373, 0, 0, 494, 498, 3, 320, 160, 0, 495, 496, 5, 501, 0, 0, 496, 498, 3, 322, 161, 0, 497, 493, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 498, 510, 1, 0, 0, 0, 499, 501, 5, 341, 0, 0, 500, 502, 5, 411, 0, 0, 501, 500, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 510, 5, 154, 0, 0, 504, 506, 5, 341, 0, 0, 505, 507, 5, 152, 0, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 5, 227, 0, 0, 509, 467, 1, 0, 0, 0, 509, 469, 1, 0, 0, 0, 509, 472, 1, 0, 0, 0, 509, 481, 1, 0, 0, 0, 509, 491, 1, 0, 0, 0, 509, 499, 1, 0, 0, 0, 509, 504, 1, 0, 0, 0, 510, 25, 1, 0, 0, 0, 511, 512, 5, 468, 0, 0, 512, 513, 5, 226, 0, 0, 513, 516, 3, 326, 163, 0, 514, 515, 5, 433, 0, 0, 515, 517, 3, 334, 167, 0, 516, 514, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 27, 1, 0, 0, 0, 518, 519, 5, 500, 0, 0, 519, 520, 5, 226, 0, 0, 520, 521, 3, 326, 163, 0, 521, 29, 1, 0, 0, 0, 522, 524, 5, 340, 0, 0, 523, 525, 3, 336, 168, 0, 524, 523, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 31, 1, 0, 0, 0, 526, 528, 5, 312, 0, 0, 527, 529, 3, 338, 169, 0, 528, 527, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 33, 1, 0, 0, 0, 530, 531, 7, 5, 0, 0, 531, 532, 5, 463, 0, 0, 532, 533, 3, 110, 55, 0, 533, 35, 1, 0, 0, 0, 534, 535, 5, 437, 0, 0, 535, 536, 5, 463, 0, 0, 536, 537, 5, 433, 0, 0, 537, 540, 3, 38, 19, 0, 538, 539, 5, 17, 0, 0, 539, 541, 3, 326, 163, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 585, 1, 0, 0, 0, 542, 543, 5, 437, 0, 0, 543, 544, 5, 456, 0, 0, 544, 545, 5, 433, 0, 0, 545, 548, 3, 38, 19, 0, 546, 547, 5, 17, 0, 0, 547, 549, 3, 326, 163, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 551, 5, 311, 0, 0, 551, 553, 3, 326, 163, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 585, 1, 0, 0, 0, 554, 555, 5, 437, 0, 0, 555, 556, 7, 6, 0, 0, 556, 557, 5, 433, 0, 0, 557, 558, 3, 38, 19, 0, 558, 559, 5, 311, 0, 0, 559, 560, 3, 326, 163, 0, 560, 585, 1, 0, 0, 0, 561, 562, 5, 437, 0, 0, 562, 563, 5, 486, 0, 0, 563, 585, 3, 38, 19, 0, 564, 565, 5, 437, 0, 0, 565, 566, 5, 453, 0, 0, 566, 567, 5, 456, 0, 0, 567, 568, 5, 433, 0, 0, 568, 569, 3, 38, 19, 0, 569, 570, 5, 311, 0, 0, 570, 571, 3, 326, 163, 0, 571, 572, 5, 466, 0, 0, 572, 573, 3, 326, 163, 0, 573, 585, 1, 0, 0, 0, 574, 575, 5, 437, 0, 0, 575, 576, 5, 443, 0, 0, 576, 577, 5, 456, 0, 0, 577, 578, 5, 433, 0, 0, 578, 579, 3, 38, 19, 0, 579, 580, 5, 146, 0, 0, 580, 581, 3, 326, 163, 0, 581, 582, 5, 17, 0, 0, 582, 583, 3, 326, 163, 0, 583, 585, 1, 0, 0, 0, 584, 534, 1, 0, 0, 0, 584, 542, 1, 0, 0, 0, 584, 554, 1, 0, 0, 0, 584, 561, 1, 0, 0, 0, 584, 564, 1, 0, 0, 0, 584, 574, 1, 0, 0, 0, 585, 37, 1, 0, 0, 0, 586, 588, 5, 534, 0, 0, 587, 586, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 3, 326, 163, 0, 590, 587, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 39, 1, 0, 0, 0, 594, 597, 3, 42, 21, 0, 595, 597, 3, 44, 22, 0, 596, 594, 1, 0, 0, 0, 596, 595, 1, 0, 0, 0, 597, 41, 1, 0, 0, 0, 598, 600, 5, 72, 0, 0, 599, 601, 5, 497, 0, 0, 600, 599, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 604, 5, 373, 0, 0, 603, 605, 3, 330, 165, 0, 604, 603, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 607, 3, 318, 159, 0, 607, 608, 5, 516, 0, 0, 608, 613, 3, 46, 23, 0, 609, 610, 5, 520, 0, 0, 610, 612, 3, 46, 23, 0, 611, 609, 1, 0, 0, 0, 612, 615, 1, 0, 0, 0, 613, 611, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 618, 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 616, 617, 5, 520, 0, 0, 617, 619, 3, 80, 40, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 621, 5, 520, 0, 0, 621, 623, 3, 82, 41, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 625, 5, 520, 0, 0, 625, 627, 3, 86, 43, 0, 626, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 631, 5, 517, 0, 0, 629, 630, 5, 59, 0, 0, 630, 632, 5, 537, 0, 0, 631, 629, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 634, 1, 0, 0, 0, 633, 635, 3, 88, 44, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 3, 328, 164, 0, 637, 639, 3, 96, 48, 0, 638, 637, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 43, 1, 0, 0, 0, 640, 641, 5, 72, 0, 0, 641, 643, 5, 373, 0, 0, 642, 644, 3, 330, 165, 0, 643, 642, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 646, 3, 318, 159, 0, 646, 649, 3, 328, 164, 0, 647, 648, 5, 17, 0, 0, 648, 650, 3, 156, 78, 0, 649, 647, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 45, 1, 0, 0, 0, 651, 655, 3, 48, 24, 0, 652, 655, 3, 72, 36, 0, 653, 655, 3, 76, 38, 0, 654, 651, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 654, 653, 1, 0, 0, 0, 655, 47, 1, 0, 0, 0, 656, 657, 3, 50, 25, 0, 657, 659, 3, 56, 28, 0, 658, 660, 3, 70, 35, 0, 659, 658, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 662, 5, 59, 0, 0, 662, 664, 5, 537, 0, 0, 663, 661, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 49, 1, 0, 0, 0, 665, 668, 3, 326, 163, 0, 666, 668, 3, 256, 128, 0, 667, 665, 1, 0, 0, 0, 667, 666, 1, 0, 0, 0, 668, 51, 1, 0, 0, 0, 669, 672, 3, 326, 163, 0, 670, 672, 4, 26, 0, 0, 671, 669, 1, 0, 0, 0, 671, 670, 1, 0, 0, 0, 672, 53, 1, 0, 0, 0, 673, 674, 5, 516, 0, 0, 674, 679, 3, 52, 26, 0, 675, 676, 5, 520, 0, 0, 676, 678, 3, 52, 26, 0, 677, 675, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 682, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 682, 683, 5, 517, 0, 0, 683, 55, 1, 0, 0, 0, 684, 722, 7, 7, 0, 0, 685, 687, 7, 8, 0, 0, 686, 688, 3, 58, 29, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 722, 1, 0, 0, 0, 689, 691, 5, 379, 0, 0, 690, 692, 3, 58, 29, 0, 691, 690, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 699, 1, 0, 0, 0, 693, 695, 7, 9, 0, 0, 694, 696, 5, 206, 0, 0, 695, 694, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 5, 378, 0, 0, 698, 700, 5, 504, 0, 0, 699, 693, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 722, 1, 0, 0, 0, 701, 703, 7, 10, 0, 0, 702, 704, 3, 60, 30, 0, 703, 702, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 722, 1, 0, 0, 0, 705, 707, 7, 11, 0, 0, 706, 708, 3, 64, 32, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 722, 1, 0, 0, 0, 709, 711, 5, 469, 0, 0, 710, 712, 3, 66, 33, 0, 711, 710, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 722, 1, 0, 0, 0, 713, 715, 5, 321, 0, 0, 714, 716, 3, 68, 34, 0, 715, 714, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 722, 1, 0, 0, 0, 717, 719, 5, 294, 0, 0, 718, 720, 3, 62, 31, 0, 719, 718, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 722, 1, 0, 0, 0, 721, 684, 1, 0, 0, 0, 721, 685, 1, 0, 0, 0, 721, 689, 1, 0, 0, 0, 721, 701, 1, 0, 0, 0, 721, 705, 1, 0, 0, 0, 721, 709, 1, 0, 0, 0, 721, 713, 1, 0, 0, 0, 721, 717, 1, 0, 0, 0, 722, 57, 1, 0, 0, 0, 723, 724, 5, 516, 0, 0, 724, 725, 3, 358, 179, 0, 725, 726, 5, 517, 0, 0, 726, 59, 1, 0, 0, 0, 727, 728, 5, 516, 0, 0, 728, 731, 3, 358, 179, 0, 729, 730, 5, 520, 0, 0, 730, 732, 3, 358, 179, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, 733, 734, 5, 517, 0, 0, 734, 61, 1, 0, 0, 0, 735, 736, 5, 516, 0, 0, 736, 739, 3, 356, 178, 0, 737, 738, 5, 520, 0, 0, 738, 740, 3, 356, 178, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 5, 517, 0, 0, 742, 63, 1, 0, 0, 0, 743, 744, 5, 507, 0, 0, 744, 745, 3, 56, 28, 0, 745, 746, 5, 506, 0, 0, 746, 65, 1, 0, 0, 0, 747, 748, 5, 507, 0, 0, 748, 749, 3, 56, 28, 0, 749, 750, 5, 520, 0, 0, 750, 751, 3, 56, 28, 0, 751, 752, 1, 0, 0, 0, 752, 753, 5, 506, 0, 0, 753, 67, 1, 0, 0, 0, 754, 755, 5, 507, 0, 0, 755, 756, 3, 52, 26, 0, 756, 763, 3, 56, 28, 0, 757, 758, 5, 520, 0, 0, 758, 759, 3, 52, 26, 0, 759, 760, 3, 56, 28, 0, 760, 762, 1, 0, 0, 0, 761, 757, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 767, 5, 506, 0, 0, 767, 69, 1, 0, 0, 0, 768, 769, 5, 64, 0, 0, 769, 771, 3, 84, 42, 0, 770, 768, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 773, 5, 288, 0, 0, 773, 776, 5, 466, 0, 0, 774, 775, 5, 241, 0, 0, 775, 777, 5, 125, 0, 0, 776, 774, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 783, 1, 0, 0, 0, 778, 780, 5, 241, 0, 0, 779, 778, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 783, 5, 244, 0, 0, 782, 770, 1, 0, 0, 0, 782, 779, 1, 0, 0, 0, 783, 71, 1, 0, 0, 0, 784, 785, 3, 50, 25, 0, 785, 786, 3, 56, 28, 0, 786, 789, 5, 218, 0, 0, 787, 788, 5, 151, 0, 0, 788, 790, 3, 74, 37, 0, 789, 787, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 792, 1, 0, 0, 0, 791, 793, 5, 423, 0, 0, 792, 791, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 73, 1, 0, 0, 0, 794, 795, 5, 537, 0, 0, 795, 75, 1, 0, 0, 0, 796, 797, 3, 50, 25, 0, 797, 798, 5, 17, 0, 0, 798, 801, 3, 78, 39, 0, 799, 800, 5, 59, 0, 0, 800, 802, 5, 537, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 77, 1, 0, 0, 0, 803, 804, 3, 256, 128, 0, 804, 79, 1, 0, 0, 0, 805, 806, 5, 424, 0, 0, 806, 807, 5, 146, 0, 0, 807, 808, 3, 52, 26, 0, 808, 809, 5, 17, 0, 0, 809, 810, 3, 256, 128, 0, 810, 81, 1, 0, 0, 0, 811, 812, 5, 64, 0, 0, 812, 814, 3, 84, 42, 0, 813, 811, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 816, 5, 288, 0, 0, 816, 817, 5, 466, 0, 0, 817, 818, 3, 54, 27, 0, 818, 819, 5, 241, 0, 0, 819, 820, 5, 125, 0, 0, 820, 83, 1, 0, 0, 0, 821, 822, 3, 302, 151, 0, 822, 85, 1, 0, 0, 0, 823, 824, 5, 277, 0, 0, 824, 825, 5, 146, 0, 0, 825, 826, 5, 371, 0, 0, 826, 87, 1, 0, 0, 0, 827, 828, 5, 269, 0, 0, 828, 829, 5, 34, 0, 0, 829, 830, 3, 90, 45, 0, 830, 89, 1, 0, 0, 0, 831, 832, 5, 516, 0, 0, 832, 837, 3, 92, 46, 0, 833, 834, 5, 520, 0, 0, 834, 836, 3, 92, 46, 0, 835, 833, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 840, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 517, 0, 0, 841, 91, 1, 0, 0, 0, 842, 855, 3, 52, 26, 0, 843, 844, 5, 516, 0, 0, 844, 849, 3, 94, 47, 0, 845, 846, 5, 520, 0, 0, 846, 848, 3, 94, 47, 0, 847, 845, 1, 0, 0, 0, 848, 851, 1, 0, 0, 0, 849, 847, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 852, 1, 0, 0, 0, 851, 849, 1, 0, 0, 0, 852, 853, 5, 517, 0, 0, 853, 855, 1, 0, 0, 0, 854, 842, 1, 0, 0, 0, 854, 843, 1, 0, 0, 0, 855, 93, 1, 0, 0, 0, 856, 859, 3, 278, 139, 0, 857, 859, 3, 352, 176, 0, 858, 856, 1, 0, 0, 0, 858, 857, 1, 0, 0, 0, 859, 95, 1, 0, 0, 0, 860, 861, 5, 202, 0, 0, 861, 870, 3, 320, 160, 0, 862, 866, 5, 516, 0, 0, 863, 865, 3, 98, 49, 0, 864, 863, 1, 0, 0, 0, 865, 868, 1, 0, 0, 0, 866, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 869, 1, 0, 0, 0, 868, 866, 1, 0, 0, 0, 869, 871, 5, 517, 0, 0, 870, 862, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 97, 1, 0, 0, 0, 872, 873, 7, 12, 0, 0, 873, 877, 7, 13, 0, 0, 874, 875, 7, 14, 0, 0, 875, 877, 7, 15, 0, 0, 876, 872, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 877, 99, 1, 0, 0, 0, 878, 879, 5, 72, 0, 0, 879, 880, 5, 441, 0, 0, 880, 881, 3, 312, 156, 0, 881, 882, 3, 328, 164, 0, 882, 101, 1, 0, 0, 0, 883, 884, 5, 72, 0, 0, 884, 886, 5, 447, 0, 0, 885, 887, 3, 330, 165, 0, 886, 885, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 891, 3, 316, 158, 0, 889, 890, 5, 59, 0, 0, 890, 892, 5, 537, 0, 0, 891, 889, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 3, 328, 164, 0, 894, 103, 1, 0, 0, 0, 895, 897, 5, 72, 0, 0, 896, 898, 5, 497, 0, 0, 897, 896, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 901, 5, 501, 0, 0, 900, 902, 3, 330, 165, 0, 901, 900, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 905, 3, 324, 162, 0, 904, 906, 3, 54, 27, 0, 905, 904, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, 906, 909, 1, 0, 0, 0, 907, 908, 5, 59, 0, 0, 908, 910, 5, 537, 0, 0, 909, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 912, 5, 17, 0, 0, 912, 913, 3, 156, 78, 0, 913, 105, 1, 0, 0, 0, 914, 918, 5, 72, 0, 0, 915, 919, 5, 497, 0, 0, 916, 917, 5, 497, 0, 0, 917, 919, 5, 370, 0, 0, 918, 915, 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 919, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 5, 153, 0, 0, 921, 923, 3, 330, 165, 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 925, 3, 268, 134, 0, 925, 926, 5, 17, 0, 0, 926, 929, 3, 302, 151, 0, 927, 928, 5, 195, 0, 0, 928, 930, 7, 16, 0, 0, 929, 927, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 932, 1, 0, 0, 0, 931, 933, 3, 108, 54, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 107, 1, 0, 0, 0, 934, 935, 5, 412, 0, 0, 935, 936, 5, 463, 0, 0, 936, 942, 3, 110, 55, 0, 937, 938, 5, 520, 0, 0, 938, 939, 5, 463, 0, 0, 939, 941, 3, 110, 55, 0, 940, 937, 1, 0, 0, 0, 941, 944, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 109, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 945, 946, 5, 537, 0, 0, 946, 111, 1, 0, 0, 0, 947, 948, 5, 8, 0, 0, 948, 950, 5, 373, 0, 0, 949, 951, 3, 332, 166, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 958, 3, 320, 160, 0, 953, 959, 3, 114, 57, 0, 954, 959, 3, 116, 58, 0, 955, 959, 3, 118, 59, 0, 956, 959, 3, 120, 60, 0, 957, 959, 3, 122, 61, 0, 958, 953, 1, 0, 0, 0, 958, 954, 1, 0, 0, 0, 958, 955, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 957, 1, 0, 0, 0, 959, 113, 1, 0, 0, 0, 960, 962, 5, 311, 0, 0, 961, 963, 3, 326, 163, 0, 962, 961, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 965, 5, 388, 0, 0, 965, 966, 3, 326, 163, 0, 966, 115, 1, 0, 0, 0, 967, 968, 5, 340, 0, 0, 968, 969, 3, 334, 167, 0, 969, 117, 1, 0, 0, 0, 970, 971, 5, 437, 0, 0, 971, 972, 5, 64, 0, 0, 972, 973, 3, 84, 42, 0, 973, 974, 5, 288, 0, 0, 974, 975, 5, 466, 0, 0, 975, 977, 3, 54, 27, 0, 976, 978, 3, 124, 62, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 119, 1, 0, 0, 0, 979, 980, 5, 116, 0, 0, 980, 981, 5, 64, 0, 0, 981, 982, 3, 84, 42, 0, 982, 121, 1, 0, 0, 0, 983, 984, 5, 437, 0, 0, 984, 985, 5, 403, 0, 0, 985, 986, 3, 54, 27, 0, 986, 123, 1, 0, 0, 0, 987, 988, 5, 241, 0, 0, 988, 989, 5, 125, 0, 0, 989, 125, 1, 0, 0, 0, 990, 991, 5, 8, 0, 0, 991, 992, 5, 501, 0, 0, 992, 996, 3, 322, 161, 0, 993, 997, 3, 114, 57, 0, 994, 995, 5, 17, 0, 0, 995, 997, 3, 156, 78, 0, 996, 993, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 127, 1, 0, 0, 0, 998, 999, 5, 8, 0, 0, 999, 1000, 5, 447, 0, 0, 1000, 1001, 3, 314, 157, 0, 1001, 1002, 3, 116, 58, 0, 1002, 129, 1, 0, 0, 0, 1003, 1007, 5, 8, 0, 0, 1004, 1008, 5, 497, 0, 0, 1005, 1006, 5, 497, 0, 0, 1006, 1008, 5, 370, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 5, 153, 0, 0, 1010, 1012, 3, 332, 166, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 3, 270, 135, 0, 1014, 1015, 5, 17, 0, 0, 1015, 1018, 3, 302, 151, 0, 1016, 1017, 5, 195, 0, 0, 1017, 1019, 7, 16, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 131, 1, 0, 0, 0, 1020, 1021, 5, 116, 0, 0, 1021, 1023, 5, 441, 0, 0, 1022, 1024, 3, 332, 166, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1026, 3, 310, 155, 0, 1026, 133, 1, 0, 0, 0, 1027, 1029, 5, 116, 0, 0, 1028, 1030, 5, 497, 0, 0, 1029, 1028, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1033, 5, 373, 0, 0, 1032, 1034, 3, 332, 166, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 3, 320, 160, 0, 1036, 135, 1, 0, 0, 0, 1037, 1038, 5, 116, 0, 0, 1038, 1040, 5, 447, 0, 0, 1039, 1041, 3, 332, 166, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1044, 3, 314, 157, 0, 1043, 1045, 7, 17, 0, 0, 1044, 1043, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 137, 1, 0, 0, 0, 1046, 1048, 5, 116, 0, 0, 1047, 1049, 5, 497, 0, 0, 1048, 1047, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1052, 5, 501, 0, 0, 1051, 1053, 3, 332, 166, 0, 1052, 1051, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 3, 322, 161, 0, 1055, 139, 1, 0, 0, 0, 1056, 1060, 5, 116, 0, 0, 1057, 1061, 5, 497, 0, 0, 1058, 1059, 5, 497, 0, 0, 1059, 1061, 5, 370, 0, 0, 1060, 1057, 1, 0, 0, 0, 1060, 1058, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1064, 5, 153, 0, 0, 1063, 1065, 3, 332, 166, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 3, 270, 135, 0, 1067, 141, 1, 0, 0, 0, 1068, 1070, 5, 132, 0, 0, 1069, 1068, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1076, 3, 144, 72, 0, 1072, 1076, 3, 152, 76, 0, 1073, 1074, 5, 132, 0, 0, 1074, 1076, 3, 154, 77, 0, 1075, 1069, 1, 0, 0, 0, 1075, 1072, 1, 0, 0, 0, 1075, 1073, 1, 0, 0, 0, 1076, 143, 1, 0, 0, 0, 1077, 1078, 5, 177, 0, 0, 1078, 1079, 7, 18, 0, 0, 1079, 1088, 3, 320, 160, 0, 1080, 1082, 3, 146, 73, 0, 1081, 1080, 1, 0, 0, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1084, 1, 0, 0, 0, 1083, 1085, 3, 54, 27, 0, 1084, 1083, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1089, 3, 156, 78, 0, 1087, 1089, 3, 148, 74, 0, 1088, 1081, 1, 0, 0, 0, 1088, 1087, 1, 0, 0, 0, 1089, 145, 1, 0, 0, 0, 1090, 1091, 5, 268, 0, 0, 1091, 1092, 3, 334, 167, 0, 1092, 147, 1, 0, 0, 0, 1093, 1094, 5, 414, 0, 0, 1094, 1099, 3, 150, 75, 0, 1095, 1096, 5, 520, 0, 0, 1096, 1098, 3, 150, 75, 0, 1097, 1095, 1, 0, 0, 0, 1098, 1101, 1, 0, 0, 0, 1099, 1097, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 149, 1, 0, 0, 0, 1101, 1099, 1, 0, 0, 0, 1102, 1103, 5, 516, 0, 0, 1103, 1108, 3, 352, 176, 0, 1104, 1105, 5, 520, 0, 0, 1105, 1107, 3, 352, 176, 0, 1106, 1104, 1, 0, 0, 0, 1107, 1110, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1111, 1, 0, 0, 0, 1110, 1108, 1, 0, 0, 0, 1111, 1112, 5, 517, 0, 0, 1112, 151, 1, 0, 0, 0, 1113, 1114, 5, 24, 0, 0, 1114, 1115, 5, 354, 0, 0, 1115, 1116, 5, 340, 0, 0, 1116, 1120, 5, 521, 0, 0, 1117, 1118, 3, 144, 72, 0, 1118, 1119, 5, 521, 0, 0, 1119, 1121, 1, 0, 0, 0, 1120, 1117, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1125, 5, 122, 0, 0, 1125, 153, 1, 0, 0, 0, 1126, 1127, 5, 354, 0, 0, 1127, 1128, 5, 340, 0, 0, 1128, 1132, 5, 24, 0, 0, 1129, 1130, 3, 144, 72, 0, 1130, 1131, 5, 521, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1129, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 5, 122, 0, 0, 1137, 155, 1, 0, 0, 0, 1138, 1139, 6, 78, -1, 0, 1139, 1162, 3, 158, 79, 0, 1140, 1141, 3, 160, 80, 0, 1141, 1142, 3, 156, 78, 5, 1142, 1162, 1, 0, 0, 0, 1143, 1144, 5, 516, 0, 0, 1144, 1145, 3, 156, 78, 0, 1145, 1146, 5, 517, 0, 0, 1146, 1162, 1, 0, 0, 0, 1147, 1149, 3, 168, 84, 0, 1148, 1150, 3, 228, 114, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1152, 1, 0, 0, 0, 1151, 1153, 3, 232, 116, 0, 1152, 1151, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1162, 1, 0, 0, 0, 1154, 1156, 3, 166, 83, 0, 1155, 1157, 3, 228, 114, 0, 1156, 1155, 1, 0, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1160, 3, 232, 116, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1162, 1, 0, 0, 0, 1161, 1138, 1, 0, 0, 0, 1161, 1140, 1, 0, 0, 0, 1161, 1143, 1, 0, 0, 0, 1161, 1147, 1, 0, 0, 0, 1161, 1154, 1, 0, 0, 0, 1162, 1177, 1, 0, 0, 0, 1163, 1164, 10, 3, 0, 0, 1164, 1166, 7, 19, 0, 0, 1165, 1167, 5, 5, 0, 0, 1166, 1165, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1170, 3, 156, 78, 0, 1169, 1171, 3, 228, 114, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1173, 1, 0, 0, 0, 1172, 1174, 3, 232, 116, 0, 1173, 1172, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1176, 1, 0, 0, 0, 1175, 1163, 1, 0, 0, 0, 1176, 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 157, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1180, 1181, 5, 414, 0, 0, 1181, 1186, 3, 256, 128, 0, 1182, 1183, 5, 520, 0, 0, 1183, 1185, 3, 256, 128, 0, 1184, 1182, 1, 0, 0, 0, 1185, 1188, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 159, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1189, 1190, 5, 433, 0, 0, 1190, 1195, 3, 162, 81, 0, 1191, 1192, 5, 520, 0, 0, 1192, 1194, 3, 162, 81, 0, 1193, 1191, 1, 0, 0, 0, 1194, 1197, 1, 0, 0, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 161, 1, 0, 0, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1210, 3, 164, 82, 0, 1199, 1200, 5, 516, 0, 0, 1200, 1205, 3, 52, 26, 0, 1201, 1202, 5, 520, 0, 0, 1202, 1204, 3, 52, 26, 0, 1203, 1201, 1, 0, 0, 0, 1204, 1207, 1, 0, 0, 0, 1205, 1203, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1208, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1208, 1209, 5, 517, 0, 0, 1209, 1211, 1, 0, 0, 0, 1210, 1199, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 5, 17, 0, 0, 1213, 1214, 5, 516, 0, 0, 1214, 1215, 3, 156, 78, 0, 1215, 1216, 5, 517, 0, 0, 1216, 163, 1, 0, 0, 0, 1217, 1218, 3, 302, 151, 0, 1218, 165, 1, 0, 0, 0, 1219, 1221, 3, 168, 84, 0, 1220, 1222, 3, 174, 87, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1224, 1, 0, 0, 0, 1223, 1225, 3, 202, 101, 0, 1224, 1223, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1227, 1, 0, 0, 0, 1226, 1228, 3, 204, 102, 0, 1227, 1226, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1230, 1, 0, 0, 0, 1229, 1231, 3, 218, 109, 0, 1230, 1229, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1233, 1, 0, 0, 0, 1232, 1234, 3, 220, 110, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1240, 1, 0, 0, 0, 1235, 1236, 3, 168, 84, 0, 1236, 1237, 3, 174, 87, 0, 1237, 1238, 3, 226, 113, 0, 1238, 1240, 1, 0, 0, 0, 1239, 1219, 1, 0, 0, 0, 1239, 1235, 1, 0, 0, 0, 1240, 167, 1, 0, 0, 0, 1241, 1243, 5, 336, 0, 0, 1242, 1244, 3, 362, 181, 0, 1243, 1242, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1254, 1, 0, 0, 0, 1245, 1255, 5, 527, 0, 0, 1246, 1251, 3, 170, 85, 0, 1247, 1248, 5, 520, 0, 0, 1248, 1250, 3, 170, 85, 0, 1249, 1247, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1249, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1255, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1245, 1, 0, 0, 0, 1254, 1246, 1, 0, 0, 0, 1255, 169, 1, 0, 0, 0, 1256, 1272, 3, 172, 86, 0, 1257, 1262, 3, 52, 26, 0, 1258, 1260, 5, 17, 0, 0, 1259, 1258, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1263, 3, 256, 128, 0, 1262, 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1272, 1, 0, 0, 0, 1264, 1269, 3, 256, 128, 0, 1265, 1267, 5, 17, 0, 0, 1266, 1265, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 3, 52, 26, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1256, 1, 0, 0, 0, 1271, 1257, 1, 0, 0, 0, 1271, 1264, 1, 0, 0, 0, 1272, 171, 1, 0, 0, 0, 1273, 1274, 3, 266, 133, 0, 1274, 1275, 5, 262, 0, 0, 1275, 1276, 3, 224, 112, 0, 1276, 1277, 5, 17, 0, 0, 1277, 1278, 3, 302, 151, 0, 1278, 1286, 1, 0, 0, 0, 1279, 1280, 3, 266, 133, 0, 1280, 1281, 5, 262, 0, 0, 1281, 1282, 3, 294, 147, 0, 1282, 1283, 5, 17, 0, 0, 1283, 1284, 3, 302, 151, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1273, 1, 0, 0, 0, 1285, 1279, 1, 0, 0, 0, 1286, 173, 1, 0, 0, 0, 1287, 1288, 5, 151, 0, 0, 1288, 1289, 3, 176, 88, 0, 1289, 175, 1, 0, 0, 0, 1290, 1291, 6, 88, -1, 0, 1291, 1296, 3, 178, 89, 0, 1292, 1293, 5, 520, 0, 0, 1293, 1295, 3, 178, 89, 0, 1294, 1292, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1302, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1302, 3, 186, 93, 0, 1300, 1302, 3, 188, 94, 0, 1301, 1290, 1, 0, 0, 0, 1301, 1299, 1, 0, 0, 0, 1301, 1300, 1, 0, 0, 0, 1302, 1324, 1, 0, 0, 0, 1303, 1304, 10, 3, 0, 0, 1304, 1305, 5, 73, 0, 0, 1305, 1306, 5, 185, 0, 0, 1306, 1323, 3, 176, 88, 4, 1307, 1309, 10, 4, 0, 0, 1308, 1310, 5, 233, 0, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1313, 7, 20, 0, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1315, 1, 0, 0, 0, 1314, 1316, 5, 261, 0, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1318, 5, 185, 0, 0, 1318, 1320, 3, 176, 88, 0, 1319, 1321, 3, 200, 100, 0, 1320, 1319, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0, 0, 0, 1322, 1303, 1, 0, 0, 0, 1322, 1307, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 177, 1, 0, 0, 0, 1326, 1324, 1, 0, 0, 0, 1327, 1329, 3, 180, 90, 0, 1328, 1330, 3, 292, 146, 0, 1329, 1328, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 179, 1, 0, 0, 0, 1331, 1333, 5, 373, 0, 0, 1332, 1331, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 3, 320, 160, 0, 1335, 1337, 3, 182, 91, 0, 1336, 1335, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1371, 1, 0, 0, 0, 1338, 1340, 3, 322, 161, 0, 1339, 1341, 3, 182, 91, 0, 1340, 1339, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1371, 1, 0, 0, 0, 1342, 1343, 5, 198, 0, 0, 1343, 1344, 5, 373, 0, 0, 1344, 1345, 5, 516, 0, 0, 1345, 1346, 3, 270, 135, 0, 1346, 1347, 5, 516, 0, 0, 1347, 1352, 3, 272, 136, 0, 1348, 1349, 5, 520, 0, 0, 1349, 1351, 3, 272, 136, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1355, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1356, 5, 517, 0, 0, 1356, 1357, 5, 517, 0, 0, 1357, 1371, 1, 0, 0, 0, 1358, 1360, 5, 198, 0, 0, 1359, 1358, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1362, 5, 516, 0, 0, 1362, 1363, 3, 156, 78, 0, 1363, 1364, 5, 517, 0, 0, 1364, 1371, 1, 0, 0, 0, 1365, 1366, 5, 405, 0, 0, 1366, 1367, 5, 516, 0, 0, 1367, 1368, 3, 256, 128, 0, 1368, 1369, 5, 517, 0, 0, 1369, 1371, 1, 0, 0, 0, 1370, 1332, 1, 0, 0, 0, 1370, 1338, 1, 0, 0, 0, 1370, 1342, 1, 0, 0, 0, 1370, 1359, 1, 0, 0, 0, 1370, 1365, 1, 0, 0, 0, 1371, 181, 1, 0, 0, 0, 1372, 1373, 5, 146, 0, 0, 1373, 1374, 5, 371, 0, 0, 1374, 1375, 5, 17, 0, 0, 1375, 1376, 5, 249, 0, 0, 1376, 1377, 3, 184, 92, 0, 1377, 183, 1, 0, 0, 0, 1378, 1379, 3, 256, 128, 0, 1379, 185, 1, 0, 0, 0, 1380, 1381, 5, 516, 0, 0, 1381, 1382, 3, 148, 74, 0, 1382, 1383, 5, 517, 0, 0, 1383, 1384, 3, 292, 146, 0, 1384, 187, 1, 0, 0, 0, 1385, 1386, 5, 373, 0, 0, 1386, 1387, 5, 516, 0, 0, 1387, 1388, 3, 190, 95, 0, 1388, 1389, 5, 517, 0, 0, 1389, 189, 1, 0, 0, 0, 1390, 1391, 3, 192, 96, 0, 1391, 1392, 5, 516, 0, 0, 1392, 1397, 3, 194, 97, 0, 1393, 1394, 5, 520, 0, 0, 1394, 1396, 3, 194, 97, 0, 1395, 1393, 1, 0, 0, 0, 1396, 1399, 1, 0, 0, 0, 1397, 1395, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1400, 1, 0, 0, 0, 1399, 1397, 1, 0, 0, 0, 1400, 1401, 5, 517, 0, 0, 1401, 191, 1, 0, 0, 0, 1402, 1403, 7, 21, 0, 0, 1403, 193, 1, 0, 0, 0, 1404, 1405, 5, 373, 0, 0, 1405, 1420, 3, 216, 108, 0, 1406, 1420, 3, 198, 99, 0, 1407, 1420, 3, 280, 140, 0, 1408, 1409, 5, 446, 0, 0, 1409, 1410, 5, 536, 0, 0, 1410, 1411, 5, 373, 0, 0, 1411, 1420, 3, 216, 108, 0, 1412, 1413, 5, 498, 0, 0, 1413, 1414, 5, 536, 0, 0, 1414, 1420, 3, 198, 99, 0, 1415, 1416, 3, 196, 98, 0, 1416, 1417, 5, 536, 0, 0, 1417, 1418, 3, 280, 140, 0, 1418, 1420, 1, 0, 0, 0, 1419, 1404, 1, 0, 0, 0, 1419, 1406, 1, 0, 0, 0, 1419, 1407, 1, 0, 0, 0, 1419, 1408, 1, 0, 0, 0, 1419, 1412, 1, 0, 0, 0, 1419, 1415, 1, 0, 0, 0, 1420, 195, 1, 0, 0, 0, 1421, 1422, 7, 22, 0, 0, 1422, 197, 1, 0, 0, 0, 1423, 1424, 5, 451, 0, 0, 1424, 1425, 5, 516, 0, 0, 1425, 1426, 3, 52, 26, 0, 1426, 1427, 5, 517, 0, 0, 1427, 199, 1, 0, 0, 0, 1428, 1429, 5, 253, 0, 0, 1429, 1433, 3, 258, 129, 0, 1430, 1431, 5, 412, 0, 0, 1431, 1433, 3, 54, 27, 0, 1432, 1428, 1, 0, 0, 0, 1432, 1430, 1, 0, 0, 0, 1433, 201, 1, 0, 0, 0, 1434, 1435, 5, 430, 0, 0, 1435, 1436, 3, 258, 129, 0, 1436, 203, 1, 0, 0, 0, 1437, 1438, 5, 159, 0, 0, 1438, 1439, 5, 34, 0, 0, 1439, 1444, 3, 206, 103, 0, 1440, 1441, 5, 520, 0, 0, 1441, 1443, 3, 206, 103, 0, 1442, 1440, 1, 0, 0, 0, 1443, 1446, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 205, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1447, 1488, 3, 52, 26, 0, 1448, 1488, 3, 212, 106, 0, 1449, 1450, 5, 516, 0, 0, 1450, 1488, 5, 517, 0, 0, 1451, 1452, 5, 516, 0, 0, 1452, 1457, 3, 256, 128, 0, 1453, 1454, 5, 520, 0, 0, 1454, 1456, 3, 256, 128, 0, 1455, 1453, 1, 0, 0, 0, 1456, 1459, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1460, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1460, 1461, 5, 517, 0, 0, 1461, 1488, 1, 0, 0, 0, 1462, 1463, 3, 210, 105, 0, 1463, 1464, 5, 516, 0, 0, 1464, 1469, 3, 256, 128, 0, 1465, 1466, 5, 520, 0, 0, 1466, 1468, 3, 256, 128, 0, 1467, 1465, 1, 0, 0, 0, 1468, 1471, 1, 0, 0, 0, 1469, 1467, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1472, 1, 0, 0, 0, 1471, 1469, 1, 0, 0, 0, 1472, 1473, 5, 517, 0, 0, 1473, 1488, 1, 0, 0, 0, 1474, 1475, 3, 208, 104, 0, 1475, 1476, 5, 516, 0, 0, 1476, 1481, 3, 206, 103, 0, 1477, 1478, 5, 520, 0, 0, 1478, 1480, 3, 206, 103, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1483, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1484, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1485, 5, 517, 0, 0, 1485, 1488, 1, 0, 0, 0, 1486, 1488, 3, 256, 128, 0, 1487, 1447, 1, 0, 0, 0, 1487, 1448, 1, 0, 0, 0, 1487, 1449, 1, 0, 0, 0, 1487, 1451, 1, 0, 0, 0, 1487, 1462, 1, 0, 0, 0, 1487, 1474, 1, 0, 0, 0, 1487, 1486, 1, 0, 0, 0, 1488, 207, 1, 0, 0, 0, 1489, 1490, 5, 160, 0, 0, 1490, 1491, 5, 493, 0, 0, 1491, 209, 1, 0, 0, 0, 1492, 1493, 7, 23, 0, 0, 1493, 211, 1, 0, 0, 0, 1494, 1495, 3, 214, 107, 0, 1495, 1496, 5, 516, 0, 0, 1496, 1497, 3, 216, 108, 0, 1497, 1498, 5, 520, 0, 0, 1498, 1499, 3, 280, 140, 0, 1499, 1500, 5, 517, 0, 0, 1500, 213, 1, 0, 0, 0, 1501, 1502, 7, 24, 0, 0, 1502, 215, 1, 0, 0, 0, 1503, 1504, 3, 326, 163, 0, 1504, 217, 1, 0, 0, 0, 1505, 1506, 5, 163, 0, 0, 1506, 1507, 3, 258, 129, 0, 1507, 219, 1, 0, 0, 0, 1508, 1509, 5, 432, 0, 0, 1509, 1514, 3, 222, 111, 0, 1510, 1511, 5, 520, 0, 0, 1511, 1513, 3, 222, 111, 0, 1512, 1510, 1, 0, 0, 0, 1513, 1516, 1, 0, 0, 0, 1514, 1512, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 221, 1, 0, 0, 0, 1516, 1514, 1, 0, 0, 0, 1517, 1518, 3, 294, 147, 0, 1518, 1519, 5, 17, 0, 0, 1519, 1520, 3, 224, 112, 0, 1520, 223, 1, 0, 0, 0, 1521, 1523, 3, 294, 147, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1526, 5, 516, 0, 0, 1525, 1527, 3, 234, 117, 0, 1526, 1525, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1529, 1, 0, 0, 0, 1528, 1530, 3, 228, 114, 0, 1529, 1528, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1532, 1, 0, 0, 0, 1531, 1533, 3, 250, 125, 0, 1532, 1531, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 5, 517, 0, 0, 1535, 225, 1, 0, 0, 0, 1536, 1537, 5, 213, 0, 0, 1537, 1539, 5, 516, 0, 0, 1538, 1540, 3, 234, 117, 0, 1539, 1538, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1542, 1, 0, 0, 0, 1541, 1543, 3, 228, 114, 0, 1542, 1541, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1545, 1, 0, 0, 0, 1544, 1546, 3, 238, 119, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1548, 1, 0, 0, 0, 1547, 1549, 3, 244, 122, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1551, 1, 0, 0, 0, 1550, 1552, 3, 246, 123, 0, 1551, 1550, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1554, 1, 0, 0, 0, 1553, 1555, 3, 240, 120, 0, 1554, 1553, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 3, 248, 124, 0, 1557, 1562, 5, 517, 0, 0, 1558, 1560, 5, 17, 0, 0, 1559, 1558, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1563, 3, 302, 151, 0, 1562, 1559, 1, 0, 0, 0, 1562, 1563, 1, 0, 0, 0, 1563, 227, 1, 0, 0, 0, 1564, 1565, 5, 258, 0, 0, 1565, 1566, 5, 34, 0, 0, 1566, 1571, 3, 230, 115, 0, 1567, 1568, 5, 520, 0, 0, 1568, 1570, 3, 230, 115, 0, 1569, 1567, 1, 0, 0, 0, 1570, 1573, 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 229, 1, 0, 0, 0, 1573, 1571, 1, 0, 0, 0, 1574, 1576, 3, 52, 26, 0, 1575, 1577, 7, 25, 0, 0, 1576, 1575, 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 1580, 1, 0, 0, 0, 1578, 1579, 5, 476, 0, 0, 1579, 1581, 7, 26, 0, 0, 1580, 1578, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 231, 1, 0, 0, 0, 1582, 1585, 5, 204, 0, 0, 1583, 1586, 5, 5, 0, 0, 1584, 1586, 3, 256, 128, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1584, 1, 0, 0, 0, 1586, 233, 1, 0, 0, 0, 1587, 1588, 5, 268, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, 1594, 3, 52, 26, 0, 1590, 1591, 5, 520, 0, 0, 1591, 1593, 3, 52, 26, 0, 1592, 1590, 1, 0, 0, 0, 1593, 1596, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 235, 1, 0, 0, 0, 1596, 1594, 1, 0, 0, 0, 1597, 1614, 5, 527, 0, 0, 1598, 1614, 5, 530, 0, 0, 1599, 1614, 5, 535, 0, 0, 1600, 1601, 5, 518, 0, 0, 1601, 1602, 5, 538, 0, 0, 1602, 1603, 5, 520, 0, 0, 1603, 1604, 5, 538, 0, 0, 1604, 1614, 5, 519, 0, 0, 1605, 1606, 5, 518, 0, 0, 1606, 1607, 5, 538, 0, 0, 1607, 1608, 5, 520, 0, 0, 1608, 1614, 5, 519, 0, 0, 1609, 1610, 5, 518, 0, 0, 1610, 1611, 5, 520, 0, 0, 1611, 1612, 5, 538, 0, 0, 1612, 1614, 5, 519, 0, 0, 1613, 1597, 1, 0, 0, 0, 1613, 1598, 1, 0, 0, 0, 1613, 1599, 1, 0, 0, 0, 1613, 1600, 1, 0, 0, 0, 1613, 1605, 1, 0, 0, 0, 1613, 1609, 1, 0, 0, 0, 1614, 237, 1, 0, 0, 0, 1615, 1616, 5, 215, 0, 0, 1616, 1621, 3, 170, 85, 0, 1617, 1618, 5, 520, 0, 0, 1618, 1620, 3, 170, 85, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 239, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1625, 5, 271, 0, 0, 1625, 1627, 5, 516, 0, 0, 1626, 1628, 3, 242, 121, 0, 1627, 1626, 1, 0, 0, 0, 1628, 1629, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 1631, 1, 0, 0, 0, 1631, 1633, 5, 517, 0, 0, 1632, 1634, 3, 254, 127, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 241, 1, 0, 0, 0, 1635, 1637, 3, 304, 152, 0, 1636, 1638, 3, 236, 118, 0, 1637, 1636, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 243, 1, 0, 0, 0, 1639, 1640, 5, 5, 0, 0, 1640, 1641, 5, 322, 0, 0, 1641, 1642, 5, 272, 0, 0, 1642, 1648, 5, 210, 0, 0, 1643, 1644, 5, 254, 0, 0, 1644, 1645, 5, 321, 0, 0, 1645, 1646, 5, 272, 0, 0, 1646, 1648, 5, 210, 0, 0, 1647, 1639, 1, 0, 0, 0, 1647, 1643, 1, 0, 0, 0, 1648, 245, 1, 0, 0, 0, 1649, 1650, 5, 438, 0, 0, 1650, 1651, 5, 210, 0, 0, 1651, 1652, 5, 343, 0, 0, 1652, 1653, 5, 478, 0, 0, 1653, 1654, 5, 467, 0, 0, 1654, 1674, 5, 321, 0, 0, 1655, 1656, 5, 438, 0, 0, 1656, 1657, 5, 210, 0, 0, 1657, 1658, 5, 343, 0, 0, 1658, 1659, 5, 388, 0, 0, 1659, 1660, 5, 237, 0, 0, 1660, 1674, 5, 321, 0, 0, 1661, 1662, 5, 438, 0, 0, 1662, 1663, 5, 210, 0, 0, 1663, 1664, 5, 343, 0, 0, 1664, 1665, 5, 388, 0, 0, 1665, 1666, 5, 467, 0, 0, 1666, 1674, 3, 304, 152, 0, 1667, 1668, 5, 438, 0, 0, 1668, 1669, 5, 210, 0, 0, 1669, 1670, 5, 343, 0, 0, 1670, 1671, 5, 388, 0, 0, 1671, 1672, 5, 457, 0, 0, 1672, 1674, 3, 304, 152, 0, 1673, 1649, 1, 0, 0, 0, 1673, 1655, 1, 0, 0, 0, 1673, 1661, 1, 0, 0, 0, 1673, 1667, 1, 0, 0, 0, 1674, 247, 1, 0, 0, 0, 1675, 1676, 5, 105, 0, 0, 1676, 1681, 3, 170, 85, 0, 1677, 1678, 5, 520, 0, 0, 1678, 1680, 3, 170, 85, 0, 1679, 1677, 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 249, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1684, 1685, 5, 292, 0, 0, 1685, 1686, 5, 27, 0, 0, 1686, 1687, 3, 280, 140, 0, 1687, 1688, 3, 252, 126, 0, 1688, 1694, 1, 0, 0, 0, 1689, 1690, 5, 322, 0, 0, 1690, 1691, 5, 27, 0, 0, 1691, 1692, 5, 538, 0, 0, 1692, 1694, 3, 252, 126, 0, 1693, 1684, 1, 0, 0, 0, 1693, 1689, 1, 0, 0, 0, 1694, 251, 1, 0, 0, 0, 1695, 1696, 5, 480, 0, 0, 1696, 1697, 5, 10, 0, 0, 1697, 1698, 5, 76, 0, 0, 1698, 1699, 5, 321, 0, 0, 1699, 253, 1, 0, 0, 0, 1700, 1701, 5, 434, 0, 0, 1701, 1702, 3, 280, 140, 0, 1702, 255, 1, 0, 0, 0, 1703, 1704, 3, 258, 129, 0, 1704, 257, 1, 0, 0, 0, 1705, 1706, 6, 129, -1, 0, 1706, 1707, 5, 241, 0, 0, 1707, 1718, 3, 258, 129, 6, 1708, 1709, 5, 133, 0, 0, 1709, 1710, 5, 516, 0, 0, 1710, 1711, 3, 156, 78, 0, 1711, 1712, 5, 517, 0, 0, 1712, 1718, 1, 0, 0, 0, 1713, 1715, 3, 264, 132, 0, 1714, 1716, 3, 260, 130, 0, 1715, 1714, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1718, 1, 0, 0, 0, 1717, 1705, 1, 0, 0, 0, 1717, 1708, 1, 0, 0, 0, 1717, 1713, 1, 0, 0, 0, 1718, 1733, 1, 0, 0, 0, 1719, 1720, 10, 3, 0, 0, 1720, 1721, 5, 10, 0, 0, 1721, 1732, 3, 258, 129, 4, 1722, 1723, 10, 2, 0, 0, 1723, 1724, 5, 257, 0, 0, 1724, 1732, 3, 258, 129, 3, 1725, 1726, 10, 1, 0, 0, 1726, 1728, 5, 184, 0, 0, 1727, 1729, 5, 241, 0, 0, 1728, 1727, 1, 0, 0, 0, 1728, 1729, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1732, 7, 27, 0, 0, 1731, 1719, 1, 0, 0, 0, 1731, 1722, 1, 0, 0, 0, 1731, 1725, 1, 0, 0, 0, 1732, 1735, 1, 0, 0, 0, 1733, 1731, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 259, 1, 0, 0, 0, 1735, 1733, 1, 0, 0, 0, 1736, 1738, 5, 241, 0, 0, 1737, 1736, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1741, 5, 27, 0, 0, 1740, 1742, 7, 28, 0, 0, 1741, 1740, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1744, 3, 264, 132, 0, 1744, 1745, 5, 10, 0, 0, 1745, 1746, 3, 264, 132, 0, 1746, 1804, 1, 0, 0, 0, 1747, 1749, 5, 241, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1751, 5, 170, 0, 0, 1751, 1752, 5, 516, 0, 0, 1752, 1757, 3, 256, 128, 0, 1753, 1754, 5, 520, 0, 0, 1754, 1756, 3, 256, 128, 0, 1755, 1753, 1, 0, 0, 0, 1756, 1759, 1, 0, 0, 0, 1757, 1755, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1760, 1, 0, 0, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1761, 5, 517, 0, 0, 1761, 1804, 1, 0, 0, 0, 1762, 1764, 5, 241, 0, 0, 1763, 1762, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1765, 1, 0, 0, 0, 1765, 1766, 5, 170, 0, 0, 1766, 1767, 5, 516, 0, 0, 1767, 1768, 3, 156, 78, 0, 1768, 1769, 5, 517, 0, 0, 1769, 1804, 1, 0, 0, 0, 1770, 1771, 5, 133, 0, 0, 1771, 1772, 5, 516, 0, 0, 1772, 1773, 3, 156, 78, 0, 1773, 1774, 5, 517, 0, 0, 1774, 1804, 1, 0, 0, 0, 1775, 1777, 5, 241, 0, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 5, 318, 0, 0, 1779, 1804, 3, 264, 132, 0, 1780, 1804, 3, 262, 131, 0, 1781, 1783, 5, 184, 0, 0, 1782, 1784, 5, 241, 0, 0, 1783, 1782, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 1804, 7, 27, 0, 0, 1786, 1788, 5, 184, 0, 0, 1787, 1789, 5, 241, 0, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1791, 5, 113, 0, 0, 1791, 1792, 5, 151, 0, 0, 1792, 1804, 3, 264, 132, 0, 1793, 1795, 5, 241, 0, 0, 1794, 1793, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 5, 342, 0, 0, 1797, 1798, 5, 388, 0, 0, 1798, 1801, 3, 264, 132, 0, 1799, 1800, 5, 127, 0, 0, 1800, 1802, 3, 356, 178, 0, 1801, 1799, 1, 0, 0, 0, 1801, 1802, 1, 0, 0, 0, 1802, 1804, 1, 0, 0, 0, 1803, 1737, 1, 0, 0, 0, 1803, 1748, 1, 0, 0, 0, 1803, 1763, 1, 0, 0, 0, 1803, 1770, 1, 0, 0, 0, 1803, 1776, 1, 0, 0, 0, 1803, 1780, 1, 0, 0, 0, 1803, 1781, 1, 0, 0, 0, 1803, 1786, 1, 0, 0, 0, 1803, 1794, 1, 0, 0, 0, 1804, 261, 1, 0, 0, 0, 1805, 1807, 5, 241, 0, 0, 1806, 1805, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1809, 5, 202, 0, 0, 1809, 1823, 7, 29, 0, 0, 1810, 1811, 5, 516, 0, 0, 1811, 1824, 5, 517, 0, 0, 1812, 1813, 5, 516, 0, 0, 1813, 1818, 3, 256, 128, 0, 1814, 1815, 5, 520, 0, 0, 1815, 1817, 3, 256, 128, 0, 1816, 1814, 1, 0, 0, 0, 1817, 1820, 1, 0, 0, 0, 1818, 1816, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1821, 1, 0, 0, 0, 1820, 1818, 1, 0, 0, 0, 1821, 1822, 5, 517, 0, 0, 1822, 1824, 1, 0, 0, 0, 1823, 1810, 1, 0, 0, 0, 1823, 1812, 1, 0, 0, 0, 1824, 1835, 1, 0, 0, 0, 1825, 1827, 5, 241, 0, 0, 1826, 1825, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 5, 202, 0, 0, 1829, 1832, 3, 264, 132, 0, 1830, 1831, 5, 127, 0, 0, 1831, 1833, 3, 356, 178, 0, 1832, 1830, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1835, 1, 0, 0, 0, 1834, 1806, 1, 0, 0, 0, 1834, 1826, 1, 0, 0, 0, 1835, 263, 1, 0, 0, 0, 1836, 1837, 6, 132, -1, 0, 1837, 1841, 3, 266, 133, 0, 1838, 1839, 7, 30, 0, 0, 1839, 1841, 3, 264, 132, 7, 1840, 1836, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1841, 1863, 1, 0, 0, 0, 1842, 1843, 10, 6, 0, 0, 1843, 1844, 7, 31, 0, 0, 1844, 1862, 3, 264, 132, 7, 1845, 1846, 10, 5, 0, 0, 1846, 1847, 7, 32, 0, 0, 1847, 1862, 3, 264, 132, 6, 1848, 1849, 10, 4, 0, 0, 1849, 1850, 5, 511, 0, 0, 1850, 1862, 3, 264, 132, 5, 1851, 1852, 10, 3, 0, 0, 1852, 1853, 5, 512, 0, 0, 1853, 1862, 3, 264, 132, 4, 1854, 1855, 10, 2, 0, 0, 1855, 1856, 5, 510, 0, 0, 1856, 1862, 3, 264, 132, 3, 1857, 1858, 10, 1, 0, 0, 1858, 1859, 3, 344, 172, 0, 1859, 1860, 3, 264, 132, 2, 1860, 1862, 1, 0, 0, 0, 1861, 1842, 1, 0, 0, 0, 1861, 1845, 1, 0, 0, 0, 1861, 1848, 1, 0, 0, 0, 1861, 1851, 1, 0, 0, 0, 1861, 1854, 1, 0, 0, 0, 1861, 1857, 1, 0, 0, 0, 1862, 1865, 1, 0, 0, 0, 1863, 1861, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 265, 1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1866, 1867, 6, 133, -1, 0, 1867, 1869, 5, 40, 0, 0, 1868, 1870, 3, 308, 154, 0, 1869, 1868, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1875, 1, 0, 0, 0, 1873, 1874, 5, 120, 0, 0, 1874, 1876, 3, 256, 128, 0, 1875, 1873, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 1878, 5, 122, 0, 0, 1878, 1959, 1, 0, 0, 0, 1879, 1880, 5, 40, 0, 0, 1880, 1882, 3, 256, 128, 0, 1881, 1883, 3, 308, 154, 0, 1882, 1881, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1882, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1888, 1, 0, 0, 0, 1886, 1887, 5, 120, 0, 0, 1887, 1889, 3, 256, 128, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 1891, 5, 122, 0, 0, 1891, 1959, 1, 0, 0, 0, 1892, 1893, 5, 41, 0, 0, 1893, 1894, 5, 516, 0, 0, 1894, 1895, 3, 256, 128, 0, 1895, 1896, 5, 17, 0, 0, 1896, 1897, 3, 56, 28, 0, 1897, 1898, 5, 517, 0, 0, 1898, 1959, 1, 0, 0, 0, 1899, 1900, 5, 457, 0, 0, 1900, 1901, 5, 516, 0, 0, 1901, 1904, 3, 256, 128, 0, 1902, 1903, 5, 461, 0, 0, 1903, 1905, 5, 476, 0, 0, 1904, 1902, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 1907, 5, 517, 0, 0, 1907, 1959, 1, 0, 0, 0, 1908, 1909, 5, 467, 0, 0, 1909, 1910, 5, 516, 0, 0, 1910, 1913, 3, 256, 128, 0, 1911, 1912, 5, 461, 0, 0, 1912, 1914, 5, 476, 0, 0, 1913, 1911, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1916, 5, 517, 0, 0, 1916, 1959, 1, 0, 0, 0, 1917, 1918, 5, 281, 0, 0, 1918, 1919, 5, 516, 0, 0, 1919, 1920, 3, 264, 132, 0, 1920, 1921, 5, 170, 0, 0, 1921, 1922, 3, 264, 132, 0, 1922, 1923, 5, 517, 0, 0, 1923, 1959, 1, 0, 0, 0, 1924, 1959, 3, 352, 176, 0, 1925, 1959, 5, 527, 0, 0, 1926, 1927, 3, 326, 163, 0, 1927, 1928, 5, 513, 0, 0, 1928, 1929, 5, 527, 0, 0, 1929, 1959, 1, 0, 0, 0, 1930, 1931, 5, 516, 0, 0, 1931, 1932, 3, 156, 78, 0, 1932, 1933, 5, 517, 0, 0, 1933, 1959, 1, 0, 0, 0, 1934, 1935, 3, 270, 135, 0, 1935, 1947, 5, 516, 0, 0, 1936, 1938, 3, 362, 181, 0, 1937, 1936, 1, 0, 0, 0, 1937, 1938, 1, 0, 0, 0, 1938, 1939, 1, 0, 0, 0, 1939, 1944, 3, 272, 136, 0, 1940, 1941, 5, 520, 0, 0, 1941, 1943, 3, 272, 136, 0, 1942, 1940, 1, 0, 0, 0, 1943, 1946, 1, 0, 0, 0, 1944, 1942, 1, 0, 0, 0, 1944, 1945, 1, 0, 0, 0, 1945, 1948, 1, 0, 0, 0, 1946, 1944, 1, 0, 0, 0, 1947, 1937, 1, 0, 0, 0, 1947, 1948, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1950, 5, 517, 0, 0, 1950, 1959, 1, 0, 0, 0, 1951, 1959, 3, 302, 151, 0, 1952, 1959, 3, 274, 137, 0, 1953, 1954, 5, 516, 0, 0, 1954, 1955, 3, 256, 128, 0, 1955, 1956, 5, 517, 0, 0, 1956, 1959, 1, 0, 0, 0, 1957, 1959, 5, 85, 0, 0, 1958, 1866, 1, 0, 0, 0, 1958, 1879, 1, 0, 0, 0, 1958, 1892, 1, 0, 0, 0, 1958, 1899, 1, 0, 0, 0, 1958, 1908, 1, 0, 0, 0, 1958, 1917, 1, 0, 0, 0, 1958, 1924, 1, 0, 0, 0, 1958, 1925, 1, 0, 0, 0, 1958, 1926, 1, 0, 0, 0, 1958, 1930, 1, 0, 0, 0, 1958, 1934, 1, 0, 0, 0, 1958, 1951, 1, 0, 0, 0, 1958, 1952, 1, 0, 0, 0, 1958, 1953, 1, 0, 0, 0, 1958, 1957, 1, 0, 0, 0, 1959, 1967, 1, 0, 0, 0, 1960, 1961, 10, 5, 0, 0, 1961, 1962, 5, 514, 0, 0, 1962, 1963, 3, 264, 132, 0, 1963, 1964, 5, 515, 0, 0, 1964, 1966, 1, 0, 0, 0, 1965, 1960, 1, 0, 0, 0, 1966, 1969, 1, 0, 0, 0, 1967, 1965, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 267, 1, 0, 0, 0, 1969, 1967, 1, 0, 0, 0, 1970, 1971, 3, 326, 163, 0, 1971, 269, 1, 0, 0, 0, 1972, 1975, 3, 370, 185, 0, 1973, 1975, 3, 326, 163, 0, 1974, 1972, 1, 0, 0, 0, 1974, 1973, 1, 0, 0, 0, 1975, 271, 1, 0, 0, 0, 1976, 1981, 3, 368, 184, 0, 1977, 1981, 3, 366, 183, 0, 1978, 1981, 3, 364, 182, 0, 1979, 1981, 3, 256, 128, 0, 1980, 1976, 1, 0, 0, 0, 1980, 1977, 1, 0, 0, 0, 1980, 1978, 1, 0, 0, 0, 1980, 1979, 1, 0, 0, 0, 1981, 273, 1, 0, 0, 0, 1982, 1983, 3, 326, 163, 0, 1983, 275, 1, 0, 0, 0, 1984, 1985, 3, 302, 151, 0, 1985, 277, 1, 0, 0, 0, 1986, 1989, 3, 302, 151, 0, 1987, 1989, 3, 274, 137, 0, 1988, 1986, 1, 0, 0, 0, 1988, 1987, 1, 0, 0, 0, 1989, 279, 1, 0, 0, 0, 1990, 1993, 5, 182, 0, 0, 1991, 1994, 3, 282, 141, 0, 1992, 1994, 3, 286, 143, 0, 1993, 1991, 1, 0, 0, 0, 1993, 1992, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 281, 1, 0, 0, 0, 1995, 1997, 3, 284, 142, 0, 1996, 1998, 3, 288, 144, 0, 1997, 1996, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 283, 1, 0, 0, 0, 1999, 2000, 3, 290, 145, 0, 2000, 2001, 3, 366, 183, 0, 2001, 2003, 1, 0, 0, 0, 2002, 1999, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2002, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 285, 1, 0, 0, 0, 2006, 2009, 3, 288, 144, 0, 2007, 2010, 3, 284, 142, 0, 2008, 2010, 3, 288, 144, 0, 2009, 2007, 1, 0, 0, 0, 2009, 2008, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 287, 1, 0, 0, 0, 2011, 2012, 3, 290, 145, 0, 2012, 2013, 3, 366, 183, 0, 2013, 2014, 5, 388, 0, 0, 2014, 2015, 3, 366, 183, 0, 2015, 289, 1, 0, 0, 0, 2016, 2018, 7, 33, 0, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2022, 7, 34, 0, 0, 2020, 2022, 5, 537, 0, 0, 2021, 2017, 1, 0, 0, 0, 2021, 2020, 1, 0, 0, 0, 2022, 291, 1, 0, 0, 0, 2023, 2025, 5, 17, 0, 0, 2024, 2023, 1, 0, 0, 0, 2024, 2025, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2028, 3, 302, 151, 0, 2027, 2029, 3, 298, 149, 0, 2028, 2027, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 293, 1, 0, 0, 0, 2030, 2031, 3, 302, 151, 0, 2031, 2032, 3, 296, 148, 0, 2032, 295, 1, 0, 0, 0, 2033, 2034, 5, 221, 0, 0, 2034, 2036, 3, 302, 151, 0, 2035, 2033, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 2035, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2041, 1, 0, 0, 0, 2039, 2041, 1, 0, 0, 0, 2040, 2035, 1, 0, 0, 0, 2040, 2039, 1, 0, 0, 0, 2041, 297, 1, 0, 0, 0, 2042, 2043, 5, 516, 0, 0, 2043, 2044, 3, 300, 150, 0, 2044, 2045, 5, 517, 0, 0, 2045, 299, 1, 0, 0, 0, 2046, 2051, 3, 302, 151, 0, 2047, 2048, 5, 520, 0, 0, 2048, 2050, 3, 302, 151, 0, 2049, 2047, 1, 0, 0, 0, 2050, 2053, 1, 0, 0, 0, 2051, 2049, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 301, 1, 0, 0, 0, 2053, 2051, 1, 0, 0, 0, 2054, 2058, 3, 304, 152, 0, 2055, 2058, 3, 306, 153, 0, 2056, 2058, 3, 372, 186, 0, 2057, 2054, 1, 0, 0, 0, 2057, 2055, 1, 0, 0, 0, 2057, 2056, 1, 0, 0, 0, 2058, 303, 1, 0, 0, 0, 2059, 2060, 7, 35, 0, 0, 2060, 305, 1, 0, 0, 0, 2061, 2062, 5, 537, 0, 0, 2062, 307, 1, 0, 0, 0, 2063, 2064, 5, 428, 0, 0, 2064, 2065, 3, 256, 128, 0, 2065, 2066, 5, 376, 0, 0, 2066, 2067, 3, 256, 128, 0, 2067, 309, 1, 0, 0, 0, 2068, 2069, 3, 302, 151, 0, 2069, 311, 1, 0, 0, 0, 2070, 2071, 3, 302, 151, 0, 2071, 313, 1, 0, 0, 0, 2072, 2075, 3, 302, 151, 0, 2073, 2074, 5, 513, 0, 0, 2074, 2076, 3, 302, 151, 0, 2075, 2073, 1, 0, 0, 0, 2075, 2076, 1, 0, 0, 0, 2076, 315, 1, 0, 0, 0, 2077, 2080, 3, 302, 151, 0, 2078, 2079, 5, 513, 0, 0, 2079, 2081, 3, 302, 151, 0, 2080, 2078, 1, 0, 0, 0, 2080, 2081, 1, 0, 0, 0, 2081, 317, 1, 0, 0, 0, 2082, 2085, 3, 302, 151, 0, 2083, 2084, 5, 513, 0, 0, 2084, 2086, 3, 302, 151, 0, 2085, 2083, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2095, 1, 0, 0, 0, 2087, 2088, 3, 302, 151, 0, 2088, 2089, 5, 513, 0, 0, 2089, 2092, 3, 302, 151, 0, 2090, 2091, 5, 513, 0, 0, 2091, 2093, 3, 302, 151, 0, 2092, 2090, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2095, 1, 0, 0, 0, 2094, 2082, 1, 0, 0, 0, 2094, 2087, 1, 0, 0, 0, 2095, 319, 1, 0, 0, 0, 2096, 2099, 3, 302, 151, 0, 2097, 2098, 5, 513, 0, 0, 2098, 2100, 3, 302, 151, 0, 2099, 2097, 1, 0, 0, 0, 2099, 2100, 1, 0, 0, 0, 2100, 2109, 1, 0, 0, 0, 2101, 2102, 3, 302, 151, 0, 2102, 2103, 5, 513, 0, 0, 2103, 2106, 3, 302, 151, 0, 2104, 2105, 5, 513, 0, 0, 2105, 2107, 3, 302, 151, 0, 2106, 2104, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2109, 1, 0, 0, 0, 2108, 2096, 1, 0, 0, 0, 2108, 2101, 1, 0, 0, 0, 2109, 321, 1, 0, 0, 0, 2110, 2113, 3, 302, 151, 0, 2111, 2112, 5, 513, 0, 0, 2112, 2114, 3, 302, 151, 0, 2113, 2111, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2123, 1, 0, 0, 0, 2115, 2116, 3, 302, 151, 0, 2116, 2117, 5, 513, 0, 0, 2117, 2120, 3, 302, 151, 0, 2118, 2119, 5, 513, 0, 0, 2119, 2121, 3, 302, 151, 0, 2120, 2118, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2123, 1, 0, 0, 0, 2122, 2110, 1, 0, 0, 0, 2122, 2115, 1, 0, 0, 0, 2123, 323, 1, 0, 0, 0, 2124, 2127, 3, 302, 151, 0, 2125, 2126, 5, 513, 0, 0, 2126, 2128, 3, 302, 151, 0, 2127, 2125, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2137, 1, 0, 0, 0, 2129, 2130, 3, 302, 151, 0, 2130, 2131, 5, 513, 0, 0, 2131, 2134, 3, 302, 151, 0, 2132, 2133, 5, 513, 0, 0, 2133, 2135, 3, 302, 151, 0, 2134, 2132, 1, 0, 0, 0, 2134, 2135, 1, 0, 0, 0, 2135, 2137, 1, 0, 0, 0, 2136, 2124, 1, 0, 0, 0, 2136, 2129, 1, 0, 0, 0, 2137, 325, 1, 0, 0, 0, 2138, 2143, 3, 302, 151, 0, 2139, 2140, 5, 513, 0, 0, 2140, 2142, 3, 302, 151, 0, 2141, 2139, 1, 0, 0, 0, 2142, 2145, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2143, 2141, 1, 0, 0, 0, 2144, 327, 1, 0, 0, 0, 2145, 2143, 1, 0, 0, 0, 2146, 2147, 5, 433, 0, 0, 2147, 2148, 3, 334, 167, 0, 2148, 329, 1, 0, 0, 0, 2149, 2150, 5, 167, 0, 0, 2150, 2151, 5, 241, 0, 0, 2151, 2152, 5, 133, 0, 0, 2152, 331, 1, 0, 0, 0, 2153, 2154, 5, 167, 0, 0, 2154, 2155, 5, 133, 0, 0, 2155, 333, 1, 0, 0, 0, 2156, 2157, 5, 516, 0, 0, 2157, 2162, 3, 336, 168, 0, 2158, 2159, 5, 520, 0, 0, 2159, 2161, 3, 336, 168, 0, 2160, 2158, 1, 0, 0, 0, 2161, 2164, 1, 0, 0, 0, 2162, 2160, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2165, 1, 0, 0, 0, 2164, 2162, 1, 0, 0, 0, 2165, 2166, 5, 517, 0, 0, 2166, 335, 1, 0, 0, 0, 2167, 2172, 3, 338, 169, 0, 2168, 2170, 5, 505, 0, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2173, 3, 340, 170, 0, 2172, 2169, 1, 0, 0, 0, 2172, 2173, 1, 0, 0, 0, 2173, 337, 1, 0, 0, 0, 2174, 2178, 3, 302, 151, 0, 2175, 2178, 3, 274, 137, 0, 2176, 2178, 5, 537, 0, 0, 2177, 2174, 1, 0, 0, 0, 2177, 2175, 1, 0, 0, 0, 2177, 2176, 1, 0, 0, 0, 2178, 339, 1, 0, 0, 0, 2179, 2184, 5, 538, 0, 0, 2180, 2184, 5, 539, 0, 0, 2181, 2184, 3, 360, 180, 0, 2182, 2184, 5, 537, 0, 0, 2183, 2179, 1, 0, 0, 0, 2183, 2180, 1, 0, 0, 0, 2183, 2181, 1, 0, 0, 0, 2183, 2182, 1, 0, 0, 0, 2184, 341, 1, 0, 0, 0, 2185, 2192, 5, 10, 0, 0, 2186, 2187, 5, 511, 0, 0, 2187, 2192, 5, 511, 0, 0, 2188, 2192, 5, 257, 0, 0, 2189, 2190, 5, 510, 0, 0, 2190, 2192, 5, 510, 0, 0, 2191, 2185, 1, 0, 0, 0, 2191, 2186, 1, 0, 0, 0, 2191, 2188, 1, 0, 0, 0, 2191, 2189, 1, 0, 0, 0, 2192, 343, 1, 0, 0, 0, 2193, 2208, 5, 505, 0, 0, 2194, 2208, 5, 506, 0, 0, 2195, 2208, 5, 507, 0, 0, 2196, 2197, 5, 507, 0, 0, 2197, 2208, 5, 505, 0, 0, 2198, 2199, 5, 506, 0, 0, 2199, 2208, 5, 505, 0, 0, 2200, 2201, 5, 507, 0, 0, 2201, 2208, 5, 506, 0, 0, 2202, 2203, 5, 508, 0, 0, 2203, 2208, 5, 505, 0, 0, 2204, 2205, 5, 507, 0, 0, 2205, 2206, 5, 505, 0, 0, 2206, 2208, 5, 506, 0, 0, 2207, 2193, 1, 0, 0, 0, 2207, 2194, 1, 0, 0, 0, 2207, 2195, 1, 0, 0, 0, 2207, 2196, 1, 0, 0, 0, 2207, 2198, 1, 0, 0, 0, 2207, 2200, 1, 0, 0, 0, 2207, 2202, 1, 0, 0, 0, 2207, 2204, 1, 0, 0, 0, 2208, 345, 1, 0, 0, 0, 2209, 2210, 5, 507, 0, 0, 2210, 2217, 5, 507, 0, 0, 2211, 2212, 5, 506, 0, 0, 2212, 2217, 5, 506, 0, 0, 2213, 2217, 5, 511, 0, 0, 2214, 2217, 5, 512, 0, 0, 2215, 2217, 5, 510, 0, 0, 2216, 2209, 1, 0, 0, 0, 2216, 2211, 1, 0, 0, 0, 2216, 2213, 1, 0, 0, 0, 2216, 2214, 1, 0, 0, 0, 2216, 2215, 1, 0, 0, 0, 2217, 347, 1, 0, 0, 0, 2218, 2219, 7, 36, 0, 0, 2219, 349, 1, 0, 0, 0, 2220, 2221, 7, 37, 0, 0, 2221, 351, 1, 0, 0, 0, 2222, 2237, 3, 280, 140, 0, 2223, 2237, 3, 354, 177, 0, 2224, 2237, 3, 356, 178, 0, 2225, 2227, 5, 529, 0, 0, 2226, 2225, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2237, 3, 358, 179, 0, 2229, 2237, 3, 360, 180, 0, 2230, 2237, 5, 539, 0, 0, 2231, 2237, 5, 540, 0, 0, 2232, 2234, 5, 241, 0, 0, 2233, 2232, 1, 0, 0, 0, 2233, 2234, 1, 0, 0, 0, 2234, 2235, 1, 0, 0, 0, 2235, 2237, 5, 244, 0, 0, 2236, 2222, 1, 0, 0, 0, 2236, 2223, 1, 0, 0, 0, 2236, 2224, 1, 0, 0, 0, 2236, 2226, 1, 0, 0, 0, 2236, 2229, 1, 0, 0, 0, 2236, 2230, 1, 0, 0, 0, 2236, 2231, 1, 0, 0, 0, 2236, 2233, 1, 0, 0, 0, 2237, 353, 1, 0, 0, 0, 2238, 2239, 3, 364, 182, 0, 2239, 2240, 3, 356, 178, 0, 2240, 355, 1, 0, 0, 0, 2241, 2242, 5, 537, 0, 0, 2242, 357, 1, 0, 0, 0, 2243, 2244, 5, 538, 0, 0, 2244, 359, 1, 0, 0, 0, 2245, 2246, 7, 38, 0, 0, 2246, 361, 1, 0, 0, 0, 2247, 2248, 7, 39, 0, 0, 2248, 363, 1, 0, 0, 0, 2249, 2250, 7, 40, 0, 0, 2250, 365, 1, 0, 0, 0, 2251, 2252, 7, 41, 0, 0, 2252, 367, 1, 0, 0, 0, 2253, 2254, 7, 42, 0, 0, 2254, 369, 1, 0, 0, 0, 2255, 2256, 7, 43, 0, 0, 2256, 371, 1, 0, 0, 0, 2257, 2258, 7, 44, 0, 0, 2258, 373, 1, 0, 0, 0, 266, 377, 384, 387, 401, 419, 423, 432, 437, 444, 455, 464, 476, 479, 486, 489, 497, 501, 506, 509, 516, 524, 528, 540, 548, 552, 584, 587, 592, 596, 600, 604, 613, 618, 622, 626, 631, 634, 638, 643, 649, 654, 659, 663, 667, 671, 679, 687, 691, 695, 699, 703, 707, 711, 715, 719, 721, 731, 739, 763, 770, 776, 779, 782, 789, 792, 801, 813, 837, 849, 854, 858, 866, 870, 876, 886, 891, 897, 901, 905, 909, 918, 922, 929, 932, 942, 950, 958, 962, 977, 996, 1007, 1011, 1018, 1023, 1029, 1033, 1040, 1044, 1048, 1052, 1060, 1064, 1069, 1075, 1081, 1084, 1088, 1099, 1108, 1122, 1134, 1149, 1152, 1156, 1159, 1161, 1166, 1170, 1173, 1177, 1186, 1195, 1205, 1210, 1221, 1224, 1227, 1230, 1233, 1239, 1243, 1251, 1254, 1259, 1262, 1266, 1269, 1271, 1285, 1296, 1301, 1309, 1312, 1315, 1320, 1322, 1324, 1329, 1332, 1336, 1340, 1352, 1359, 1370, 1397, 1419, 1432, 1444, 1457, 1469, 1481, 1487, 1514, 1522, 1526, 1529, 1532, 1539, 1542, 1545, 1548, 1551, 1554, 1559, 1562, 1571, 1576, 1580, 1585, 1594, 1613, 1621, 1629, 1633, 1637, 1647, 1673, 1681, 1693, 1715, 1717, 1728, 1731, 1733, 1737, 1741, 1748, 1757, 1763, 1776, 1783, 1788, 1794, 1801, 1803, 1806, 1818, 1823, 1826, 1832, 1834, 1840, 1861, 1863, 1871, 1875, 1884, 1888, 1904, 1913, 1937, 1944, 1947, 1958, 1967, 1974, 1980, 1988, 1993, 1997, 2004, 2009, 2017, 2021, 2024, 2028, 2037, 2040, 2051, 2057, 2075, 2080, 2085, 2092, 2094, 2099, 2106, 2108, 2113, 2120, 2122, 2127, 2134, 2136, 2143, 2162, 2169, 2172, 2177, 2183, 2191, 2207, 2216, 2226, 2233, 2236] \ No newline at end of file diff --git a/src/lib/flink/FlinkSqlParser.ts b/src/lib/flink/FlinkSqlParser.ts index 40621c83..e111f6f6 100644 --- a/src/lib/flink/FlinkSqlParser.ts +++ b/src/lib/flink/FlinkSqlParser.ts @@ -594,158 +594,157 @@ export class FlinkSqlParser extends SQLParserBase { public static readonly RULE_mapTypeDimension = 33; public static readonly RULE_rowTypeDimension = 34; public static readonly RULE_columnConstraint = 35; - public static readonly RULE_commentSpec = 36; - public static readonly RULE_metadataColumnDefinition = 37; - public static readonly RULE_metadataKey = 38; - public static readonly RULE_computedColumnDefinition = 39; - public static readonly RULE_computedColumnExpression = 40; - public static readonly RULE_watermarkDefinition = 41; - public static readonly RULE_tableConstraint = 42; - public static readonly RULE_constraintName = 43; - public static readonly RULE_selfDefinitionClause = 44; - public static readonly RULE_partitionDefinition = 45; - public static readonly RULE_transformList = 46; - public static readonly RULE_transform = 47; - public static readonly RULE_transformArgument = 48; - public static readonly RULE_likeDefinition = 49; - public static readonly RULE_likeOption = 50; - public static readonly RULE_createCatalog = 51; - public static readonly RULE_createDatabase = 52; - public static readonly RULE_createView = 53; - public static readonly RULE_createFunction = 54; - public static readonly RULE_usingClause = 55; - public static readonly RULE_jarFileName = 56; - public static readonly RULE_alterTable = 57; - public static readonly RULE_renameDefinition = 58; - public static readonly RULE_setKeyValueDefinition = 59; - public static readonly RULE_addConstraint = 60; - public static readonly RULE_dropConstraint = 61; - public static readonly RULE_addUnique = 62; - public static readonly RULE_notForced = 63; - public static readonly RULE_alertView = 64; - public static readonly RULE_alterDatabase = 65; - public static readonly RULE_alterFunction = 66; - public static readonly RULE_dropCatalog = 67; - public static readonly RULE_dropTable = 68; - public static readonly RULE_dropDatabase = 69; - public static readonly RULE_dropView = 70; - public static readonly RULE_dropFunction = 71; - public static readonly RULE_insertStatement = 72; - public static readonly RULE_insertSimpleStatement = 73; - public static readonly RULE_insertPartitionDefinition = 74; - public static readonly RULE_valuesDefinition = 75; - public static readonly RULE_valuesRowDefinition = 76; - public static readonly RULE_insertMulStatementCompatibility = 77; - public static readonly RULE_insertMulStatement = 78; - public static readonly RULE_queryStatement = 79; - public static readonly RULE_valuesCaluse = 80; - public static readonly RULE_withClause = 81; - public static readonly RULE_withItem = 82; - public static readonly RULE_withItemName = 83; - public static readonly RULE_selectStatement = 84; - public static readonly RULE_selectClause = 85; - public static readonly RULE_projectItemDefinition = 86; - public static readonly RULE_overWindowItem = 87; - public static readonly RULE_fromClause = 88; - public static readonly RULE_tableExpression = 89; - public static readonly RULE_tableReference = 90; - public static readonly RULE_tablePrimary = 91; - public static readonly RULE_systemTimePeriod = 92; - public static readonly RULE_dateTimeExpression = 93; - public static readonly RULE_inlineDataValueClause = 94; - public static readonly RULE_windoTVFClause = 95; - public static readonly RULE_windowTVFExression = 96; - public static readonly RULE_windoTVFName = 97; - public static readonly RULE_windowTVFParam = 98; - public static readonly RULE_timeIntervalParamName = 99; - public static readonly RULE_columnDescriptor = 100; - public static readonly RULE_joinCondition = 101; - public static readonly RULE_whereClause = 102; - public static readonly RULE_groupByClause = 103; - public static readonly RULE_groupItemDefinition = 104; - public static readonly RULE_groupingSets = 105; - public static readonly RULE_groupingSetsNotaionName = 106; - public static readonly RULE_groupWindowFunction = 107; - public static readonly RULE_groupWindowFunctionName = 108; - public static readonly RULE_timeAttrColumn = 109; - public static readonly RULE_havingClause = 110; - public static readonly RULE_windowClause = 111; - public static readonly RULE_namedWindow = 112; - public static readonly RULE_windowSpec = 113; - public static readonly RULE_matchRecognizeClause = 114; - public static readonly RULE_orderByCaluse = 115; - public static readonly RULE_orderItemDefition = 116; - public static readonly RULE_limitClause = 117; - public static readonly RULE_partitionByClause = 118; - public static readonly RULE_quantifiers = 119; - public static readonly RULE_measuresClause = 120; - public static readonly RULE_patternDefination = 121; - public static readonly RULE_patternVariable = 122; - public static readonly RULE_outputMode = 123; - public static readonly RULE_afterMatchStrategy = 124; - public static readonly RULE_patternVariablesDefination = 125; - public static readonly RULE_windowFrame = 126; - public static readonly RULE_frameBound = 127; - public static readonly RULE_withinClause = 128; - public static readonly RULE_expression = 129; - public static readonly RULE_booleanExpression = 130; - public static readonly RULE_predicate = 131; - public static readonly RULE_likePredicate = 132; - public static readonly RULE_valueExpression = 133; - public static readonly RULE_primaryExpression = 134; - public static readonly RULE_functionNameCreate = 135; - public static readonly RULE_functionName = 136; - public static readonly RULE_functionParam = 137; - public static readonly RULE_dereferenceDefinition = 138; - public static readonly RULE_correlationName = 139; - public static readonly RULE_qualifiedName = 140; - public static readonly RULE_timeIntervalExpression = 141; - public static readonly RULE_errorCapturingMultiUnitsInterval = 142; - public static readonly RULE_multiUnitsInterval = 143; - public static readonly RULE_errorCapturingUnitToUnitInterval = 144; - public static readonly RULE_unitToUnitInterval = 145; - public static readonly RULE_intervalValue = 146; - public static readonly RULE_tableAlias = 147; - public static readonly RULE_errorCapturingIdentifier = 148; - public static readonly RULE_errorCapturingIdentifierExtra = 149; - public static readonly RULE_identifierList = 150; - public static readonly RULE_identifierSeq = 151; - public static readonly RULE_identifier = 152; - public static readonly RULE_unquotedIdentifier = 153; - public static readonly RULE_quotedIdentifier = 154; - public static readonly RULE_whenClause = 155; - public static readonly RULE_catalogPath = 156; - public static readonly RULE_catalogPathCreate = 157; - public static readonly RULE_databasePath = 158; - public static readonly RULE_databasePathCreate = 159; - public static readonly RULE_tablePathCreate = 160; - public static readonly RULE_tablePath = 161; - public static readonly RULE_viewPath = 162; - public static readonly RULE_viewPathCreate = 163; - public static readonly RULE_uid = 164; - public static readonly RULE_withOption = 165; - public static readonly RULE_ifNotExists = 166; - public static readonly RULE_ifExists = 167; - public static readonly RULE_tablePropertyList = 168; - public static readonly RULE_tableProperty = 169; - public static readonly RULE_tablePropertyKey = 170; - public static readonly RULE_tablePropertyValue = 171; - public static readonly RULE_logicalOperator = 172; - public static readonly RULE_comparisonOperator = 173; - public static readonly RULE_bitOperator = 174; - public static readonly RULE_mathOperator = 175; - public static readonly RULE_unaryOperator = 176; - public static readonly RULE_constant = 177; - public static readonly RULE_timePointLiteral = 178; - public static readonly RULE_stringLiteral = 179; - public static readonly RULE_decimalLiteral = 180; - public static readonly RULE_booleanLiteral = 181; - public static readonly RULE_setQuantifier = 182; - public static readonly RULE_timePointUnit = 183; - public static readonly RULE_timeIntervalUnit = 184; - public static readonly RULE_reservedKeywordsUsedAsFuncParam = 185; - public static readonly RULE_reservedKeywordsUsedAsFuncName = 186; - public static readonly RULE_nonReservedKeywords = 187; + public static readonly RULE_metadataColumnDefinition = 36; + public static readonly RULE_metadataKey = 37; + public static readonly RULE_computedColumnDefinition = 38; + public static readonly RULE_computedColumnExpression = 39; + public static readonly RULE_watermarkDefinition = 40; + public static readonly RULE_tableConstraint = 41; + public static readonly RULE_constraintName = 42; + public static readonly RULE_selfDefinitionClause = 43; + public static readonly RULE_partitionDefinition = 44; + public static readonly RULE_transformList = 45; + public static readonly RULE_transform = 46; + public static readonly RULE_transformArgument = 47; + public static readonly RULE_likeDefinition = 48; + public static readonly RULE_likeOption = 49; + public static readonly RULE_createCatalog = 50; + public static readonly RULE_createDatabase = 51; + public static readonly RULE_createView = 52; + public static readonly RULE_createFunction = 53; + public static readonly RULE_usingClause = 54; + public static readonly RULE_jarFileName = 55; + public static readonly RULE_alterTable = 56; + public static readonly RULE_renameDefinition = 57; + public static readonly RULE_setKeyValueDefinition = 58; + public static readonly RULE_addConstraint = 59; + public static readonly RULE_dropConstraint = 60; + public static readonly RULE_addUnique = 61; + public static readonly RULE_notForced = 62; + public static readonly RULE_alertView = 63; + public static readonly RULE_alterDatabase = 64; + public static readonly RULE_alterFunction = 65; + public static readonly RULE_dropCatalog = 66; + public static readonly RULE_dropTable = 67; + public static readonly RULE_dropDatabase = 68; + public static readonly RULE_dropView = 69; + public static readonly RULE_dropFunction = 70; + public static readonly RULE_insertStatement = 71; + public static readonly RULE_insertSimpleStatement = 72; + public static readonly RULE_insertPartitionDefinition = 73; + public static readonly RULE_valuesDefinition = 74; + public static readonly RULE_valuesRowDefinition = 75; + public static readonly RULE_insertMulStatementCompatibility = 76; + public static readonly RULE_insertMulStatement = 77; + public static readonly RULE_queryStatement = 78; + public static readonly RULE_valuesCaluse = 79; + public static readonly RULE_withClause = 80; + public static readonly RULE_withItem = 81; + public static readonly RULE_withItemName = 82; + public static readonly RULE_selectStatement = 83; + public static readonly RULE_selectClause = 84; + public static readonly RULE_projectItemDefinition = 85; + public static readonly RULE_overWindowItem = 86; + public static readonly RULE_fromClause = 87; + public static readonly RULE_tableExpression = 88; + public static readonly RULE_tableReference = 89; + public static readonly RULE_tablePrimary = 90; + public static readonly RULE_systemTimePeriod = 91; + public static readonly RULE_dateTimeExpression = 92; + public static readonly RULE_inlineDataValueClause = 93; + public static readonly RULE_windoTVFClause = 94; + public static readonly RULE_windowTVFExression = 95; + public static readonly RULE_windoTVFName = 96; + public static readonly RULE_windowTVFParam = 97; + public static readonly RULE_timeIntervalParamName = 98; + public static readonly RULE_columnDescriptor = 99; + public static readonly RULE_joinCondition = 100; + public static readonly RULE_whereClause = 101; + public static readonly RULE_groupByClause = 102; + public static readonly RULE_groupItemDefinition = 103; + public static readonly RULE_groupingSets = 104; + public static readonly RULE_groupingSetsNotaionName = 105; + public static readonly RULE_groupWindowFunction = 106; + public static readonly RULE_groupWindowFunctionName = 107; + public static readonly RULE_timeAttrColumn = 108; + public static readonly RULE_havingClause = 109; + public static readonly RULE_windowClause = 110; + public static readonly RULE_namedWindow = 111; + public static readonly RULE_windowSpec = 112; + public static readonly RULE_matchRecognizeClause = 113; + public static readonly RULE_orderByCaluse = 114; + public static readonly RULE_orderItemDefition = 115; + public static readonly RULE_limitClause = 116; + public static readonly RULE_partitionByClause = 117; + public static readonly RULE_quantifiers = 118; + public static readonly RULE_measuresClause = 119; + public static readonly RULE_patternDefination = 120; + public static readonly RULE_patternVariable = 121; + public static readonly RULE_outputMode = 122; + public static readonly RULE_afterMatchStrategy = 123; + public static readonly RULE_patternVariablesDefination = 124; + public static readonly RULE_windowFrame = 125; + public static readonly RULE_frameBound = 126; + public static readonly RULE_withinClause = 127; + public static readonly RULE_expression = 128; + public static readonly RULE_booleanExpression = 129; + public static readonly RULE_predicate = 130; + public static readonly RULE_likePredicate = 131; + public static readonly RULE_valueExpression = 132; + public static readonly RULE_primaryExpression = 133; + public static readonly RULE_functionNameCreate = 134; + public static readonly RULE_functionName = 135; + public static readonly RULE_functionParam = 136; + public static readonly RULE_dereferenceDefinition = 137; + public static readonly RULE_correlationName = 138; + public static readonly RULE_qualifiedName = 139; + public static readonly RULE_timeIntervalExpression = 140; + public static readonly RULE_errorCapturingMultiUnitsInterval = 141; + public static readonly RULE_multiUnitsInterval = 142; + public static readonly RULE_errorCapturingUnitToUnitInterval = 143; + public static readonly RULE_unitToUnitInterval = 144; + public static readonly RULE_intervalValue = 145; + public static readonly RULE_tableAlias = 146; + public static readonly RULE_errorCapturingIdentifier = 147; + public static readonly RULE_errorCapturingIdentifierExtra = 148; + public static readonly RULE_identifierList = 149; + public static readonly RULE_identifierSeq = 150; + public static readonly RULE_identifier = 151; + public static readonly RULE_unquotedIdentifier = 152; + public static readonly RULE_quotedIdentifier = 153; + public static readonly RULE_whenClause = 154; + public static readonly RULE_catalogPath = 155; + public static readonly RULE_catalogPathCreate = 156; + public static readonly RULE_databasePath = 157; + public static readonly RULE_databasePathCreate = 158; + public static readonly RULE_tablePathCreate = 159; + public static readonly RULE_tablePath = 160; + public static readonly RULE_viewPath = 161; + public static readonly RULE_viewPathCreate = 162; + public static readonly RULE_uid = 163; + public static readonly RULE_withOption = 164; + public static readonly RULE_ifNotExists = 165; + public static readonly RULE_ifExists = 166; + public static readonly RULE_tablePropertyList = 167; + public static readonly RULE_tableProperty = 168; + public static readonly RULE_tablePropertyKey = 169; + public static readonly RULE_tablePropertyValue = 170; + public static readonly RULE_logicalOperator = 171; + public static readonly RULE_comparisonOperator = 172; + public static readonly RULE_bitOperator = 173; + public static readonly RULE_mathOperator = 174; + public static readonly RULE_unaryOperator = 175; + public static readonly RULE_constant = 176; + public static readonly RULE_timePointLiteral = 177; + public static readonly RULE_stringLiteral = 178; + public static readonly RULE_decimalLiteral = 179; + public static readonly RULE_booleanLiteral = 180; + public static readonly RULE_setQuantifier = 181; + public static readonly RULE_timePointUnit = 182; + public static readonly RULE_timeIntervalUnit = 183; + public static readonly RULE_reservedKeywordsUsedAsFuncParam = 184; + public static readonly RULE_reservedKeywordsUsedAsFuncName = 185; + public static readonly RULE_nonReservedKeywords = 186; public static readonly literalNames = [ null, null, null, null, "'ABS'", "'ALL'", "'ALLOCATE'", "'ALLOW'", @@ -968,7 +967,7 @@ export class FlinkSqlParser extends SQLParserBase { "physicalColumnDefinition", "columnNameCreate", "columnName", "columnNameList", "columnType", "lengthOneDimension", "lengthTwoOptionalDimension", "lengthTwoStringDimension", "lengthOneTypeDimension", "mapTypeDimension", - "rowTypeDimension", "columnConstraint", "commentSpec", "metadataColumnDefinition", + "rowTypeDimension", "columnConstraint", "metadataColumnDefinition", "metadataKey", "computedColumnDefinition", "computedColumnExpression", "watermarkDefinition", "tableConstraint", "constraintName", "selfDefinitionClause", "partitionDefinition", "transformList", "transform", "transformArgument", @@ -1030,21 +1029,21 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 379; + this.state = 377; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 8 || _la === 24 || _la === 72 || ((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & 75497601) !== 0) || _la === 177 || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 822083585) !== 0) || ((((_la - 410)) & ~0x1F) === 0 && ((1 << (_la - 410)) & 142606353) !== 0) || _la === 450 || _la === 468 || ((((_la - 489)) & ~0x1F) === 0 && ((1 << (_la - 489)) & 134219777) !== 0) || _la === 521) { { { - this.state = 376; + this.state = 374; this.singleStatement(); } } - this.state = 381; + this.state = 379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 382; + this.state = 380; this.match(FlinkSqlParser.EOF); } } @@ -1066,7 +1065,7 @@ export class FlinkSqlParser extends SQLParserBase { let localContext = new SingleStatementContext(this.context, this.state); this.enterRule(localContext, 2, FlinkSqlParser.RULE_singleStatement); try { - this.state = 389; + this.state = 387; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_ALTER: @@ -1092,14 +1091,14 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 384; + this.state = 382; this.sqlStatement(); - this.state = 386; + this.state = 384; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1, this.context) ) { case 1: { - this.state = 385; + this.state = 383; this.match(FlinkSqlParser.SEMICOLON); } break; @@ -1109,7 +1108,7 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.SEMICOLON: this.enterOuterAlt(localContext, 2); { - this.state = 388; + this.state = 386; this.emptyStatement(); } break; @@ -1135,90 +1134,90 @@ export class FlinkSqlParser extends SQLParserBase { let localContext = new SqlStatementContext(this.context, this.state); this.enterRule(localContext, 4, FlinkSqlParser.RULE_sqlStatement); try { - this.state = 403; + this.state = 401; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 3, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 391; + this.state = 389; this.ddlStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 392; + this.state = 390; this.dmlStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 393; + this.state = 391; this.describeStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 394; + this.state = 392; this.explainStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 395; + this.state = 393; this.useStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 396; + this.state = 394; this.showStatememt(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 397; + this.state = 395; this.loadStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 398; + this.state = 396; this.unloadStatememt(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 399; + this.state = 397; this.setStatememt(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 400; + this.state = 398; this.resetStatememt(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 401; + this.state = 399; this.jarStatememt(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 402; + this.state = 400; this.dtAddStatement(); } break; @@ -1244,7 +1243,7 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 405; + this.state = 403; this.match(FlinkSqlParser.SEMICOLON); } } @@ -1266,104 +1265,104 @@ export class FlinkSqlParser extends SQLParserBase { let localContext = new DdlStatementContext(this.context, this.state); this.enterRule(localContext, 8, FlinkSqlParser.RULE_ddlStatement); try { - this.state = 421; + this.state = 419; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 407; + this.state = 405; this.createTable(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 408; + this.state = 406; this.createDatabase(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 409; + this.state = 407; this.createView(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 410; + this.state = 408; this.createFunction(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 411; + this.state = 409; this.createCatalog(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 412; + this.state = 410; this.alterTable(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 413; + this.state = 411; this.alertView(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 414; + this.state = 412; this.alterDatabase(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 415; + this.state = 413; this.alterFunction(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 416; + this.state = 414; this.dropCatalog(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 417; + this.state = 415; this.dropTable(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 418; + this.state = 416; this.dropDatabase(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 419; + this.state = 417; this.dropView(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 420; + this.state = 418; this.dropFunction(); } break; @@ -1387,7 +1386,7 @@ export class FlinkSqlParser extends SQLParserBase { let localContext = new DmlStatementContext(this.context, this.state); this.enterRule(localContext, 10, FlinkSqlParser.RULE_dmlStatement); try { - this.state = 425; + this.state = 423; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_SELECT: @@ -1396,7 +1395,7 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 423; + this.state = 421; this.queryStatement(0); } break; @@ -1405,7 +1404,7 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.KW_INSERT: this.enterOuterAlt(localContext, 2); { - this.state = 424; + this.state = 422; this.insertStatement(); } break; @@ -1434,7 +1433,7 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 427; + this.state = 425; _la = this.tokenStream.LA(1); if(!(_la === 109 || _la === 450)) { this.errorHandler.recoverInline(this); @@ -1443,7 +1442,7 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 428; + this.state = 426; this.tablePath(); } } @@ -1467,24 +1466,24 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 430; + this.state = 428; this.match(FlinkSqlParser.KW_EXPLAIN); - this.state = 434; + this.state = 432; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_CHANGELOG_MODE: case FlinkSqlParser.KW_ESTIMATED_COST: case FlinkSqlParser.KW_JSON_EXECUTION_PLAN: { - this.state = 431; + this.state = 429; this.explainDetails(); } break; case FlinkSqlParser.KW_PLAN: { - this.state = 432; + this.state = 430; this.match(FlinkSqlParser.KW_PLAN); - this.state = 433; + this.state = 431; this.match(FlinkSqlParser.KW_FOR); } break; @@ -1500,24 +1499,24 @@ export class FlinkSqlParser extends SQLParserBase { default: break; } - this.state = 439; + this.state = 437; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { case 1: { - this.state = 436; + this.state = 434; this.dmlStatement(); } break; case 2: { - this.state = 437; + this.state = 435; this.insertSimpleStatement(); } break; case 3: { - this.state = 438; + this.state = 436; this.insertMulStatement(); } break; @@ -1545,21 +1544,21 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 441; + this.state = 439; this.explainDetail(); - this.state = 446; + this.state = 444; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 442; + this.state = 440; this.match(FlinkSqlParser.COMMA); - this.state = 443; + this.state = 441; this.explainDetail(); } } - this.state = 448; + this.state = 446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -1586,7 +1585,7 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 449; + this.state = 447; _la = this.tokenStream.LA(1); if(!(_la === 45 || _la === 128 || _la === 188)) { this.errorHandler.recoverInline(this); @@ -1615,33 +1614,33 @@ export class FlinkSqlParser extends SQLParserBase { let localContext = new UseStatementContext(this.context, this.state); this.enterRule(localContext, 20, FlinkSqlParser.RULE_useStatement); try { - this.state = 457; + this.state = 455; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 451; + this.state = 449; this.match(FlinkSqlParser.KW_USE); - this.state = 452; + this.state = 450; this.match(FlinkSqlParser.KW_CATALOG); - this.state = 453; + this.state = 451; this.catalogPath(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 454; + this.state = 452; this.match(FlinkSqlParser.KW_USE); - this.state = 455; + this.state = 453; this.databasePath(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 456; + this.state = 454; this.useModuleStatement(); } break; @@ -1668,25 +1667,25 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 459; + this.state = 457; this.match(FlinkSqlParser.KW_USE); - this.state = 460; + this.state = 458; this.match(FlinkSqlParser.KW_MODULES); - this.state = 461; + this.state = 459; this.uid(); - this.state = 466; + this.state = 464; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 462; + this.state = 460; this.match(FlinkSqlParser.COMMA); - this.state = 463; + this.state = 461; this.uid(); } } - this.state = 468; + this.state = 466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -1711,15 +1710,15 @@ export class FlinkSqlParser extends SQLParserBase { this.enterRule(localContext, 24, FlinkSqlParser.RULE_showStatememt); let _la: number; try { - this.state = 511; + this.state = 509; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 469; + this.state = 467; this.match(FlinkSqlParser.KW_SHOW); - this.state = 470; + this.state = 468; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 90 || _la === 422 || _la === 464)) { this.errorHandler.recoverInline(this); @@ -1733,11 +1732,11 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 471; + this.state = 469; this.match(FlinkSqlParser.KW_SHOW); - this.state = 472; + this.state = 470; this.match(FlinkSqlParser.KW_CURRENT); - this.state = 473; + this.state = 471; _la = this.tokenStream.LA(1); if(!(_la === 441 || _la === 447)) { this.errorHandler.recoverInline(this); @@ -1751,16 +1750,16 @@ export class FlinkSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 474; + this.state = 472; this.match(FlinkSqlParser.KW_SHOW); - this.state = 475; + this.state = 473; this.match(FlinkSqlParser.KW_TABLES); - this.state = 478; + this.state = 476; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151 || _la === 170) { { - this.state = 476; + this.state = 474; _la = this.tokenStream.LA(1); if(!(_la === 151 || _la === 170)) { this.errorHandler.recoverInline(this); @@ -1769,17 +1768,17 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 477; + this.state = 475; this.databasePath(); } } - this.state = 481; + this.state = 479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 202 || _la === 241) { { - this.state = 480; + this.state = 478; this.likePredicate(); } } @@ -1789,11 +1788,11 @@ export class FlinkSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 483; + this.state = 481; this.match(FlinkSqlParser.KW_SHOW); - this.state = 484; + this.state = 482; this.match(FlinkSqlParser.KW_COLUMNS); - this.state = 485; + this.state = 483; _la = this.tokenStream.LA(1); if(!(_la === 151 || _la === 170)) { this.errorHandler.recoverInline(this); @@ -1802,28 +1801,28 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 488; + this.state = 486; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 13, this.context) ) { case 1: { - this.state = 486; + this.state = 484; this.viewPath(); } break; case 2: { - this.state = 487; + this.state = 485; this.tablePath(); } break; } - this.state = 491; + this.state = 489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 202 || _la === 241) { { - this.state = 490; + this.state = 488; this.likePredicate(); } } @@ -1833,26 +1832,26 @@ export class FlinkSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 493; + this.state = 491; this.match(FlinkSqlParser.KW_SHOW); - this.state = 494; + this.state = 492; this.match(FlinkSqlParser.KW_CREATE); - this.state = 499; + this.state = 497; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_TABLE: { - this.state = 495; + this.state = 493; this.match(FlinkSqlParser.KW_TABLE); - this.state = 496; + this.state = 494; this.tablePath(); } break; case FlinkSqlParser.KW_VIEW: { - this.state = 497; + this.state = 495; this.match(FlinkSqlParser.KW_VIEW); - this.state = 498; + this.state = 496; this.viewPath(); } break; @@ -1864,38 +1863,38 @@ export class FlinkSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 501; + this.state = 499; this.match(FlinkSqlParser.KW_SHOW); - this.state = 503; + this.state = 501; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 411) { { - this.state = 502; + this.state = 500; this.match(FlinkSqlParser.KW_USER); } } - this.state = 505; + this.state = 503; this.match(FlinkSqlParser.KW_FUNCTIONS); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 506; + this.state = 504; this.match(FlinkSqlParser.KW_SHOW); - this.state = 508; + this.state = 506; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 152) { { - this.state = 507; + this.state = 505; this.match(FlinkSqlParser.KW_FULL); } } - this.state = 510; + this.state = 508; this.match(FlinkSqlParser.KW_MODULES); } break; @@ -1921,20 +1920,20 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 513; + this.state = 511; this.match(FlinkSqlParser.KW_LOAD); - this.state = 514; + this.state = 512; this.match(FlinkSqlParser.KW_MODULE); - this.state = 515; + this.state = 513; this.uid(); - this.state = 518; + this.state = 516; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 19, this.context) ) { case 1: { - this.state = 516; + this.state = 514; this.match(FlinkSqlParser.KW_WITH); - this.state = 517; + this.state = 515; this.tablePropertyList(); } break; @@ -1961,11 +1960,11 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 520; + this.state = 518; this.match(FlinkSqlParser.KW_UNLOAD); - this.state = 521; + this.state = 519; this.match(FlinkSqlParser.KW_MODULE); - this.state = 522; + this.state = 520; this.uid(); } } @@ -1989,14 +1988,14 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 524; + this.state = 522; this.match(FlinkSqlParser.KW_SET); - this.state = 526; + this.state = 524; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 20, this.context) ) { case 1: { - this.state = 525; + this.state = 523; this.tableProperty(); } break; @@ -2023,14 +2022,14 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 528; + this.state = 526; this.match(FlinkSqlParser.KW_RESET); - this.state = 530; + this.state = 528; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 21, this.context) ) { case 1: { - this.state = 529; + this.state = 527; this.tablePropertyKey(); } break; @@ -2058,7 +2057,7 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 532; + this.state = 530; _la = this.tokenStream.LA(1); if(!(_la === 437 || _la === 489)) { this.errorHandler.recoverInline(this); @@ -2067,9 +2066,9 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 533; + this.state = 531; this.match(FlinkSqlParser.KW_JAR); - this.state = 534; + this.state = 532; this.jarFileName(); } } @@ -2092,28 +2091,28 @@ export class FlinkSqlParser extends SQLParserBase { this.enterRule(localContext, 36, FlinkSqlParser.RULE_dtAddStatement); let _la: number; try { - this.state = 586; + this.state = 584; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 536; + this.state = 534; this.match(FlinkSqlParser.KW_ADD); - this.state = 537; + this.state = 535; this.match(FlinkSqlParser.KW_JAR); - this.state = 538; + this.state = 536; this.match(FlinkSqlParser.KW_WITH); - this.state = 539; + this.state = 537; this.dtFilePath(); - this.state = 542; + this.state = 540; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 540; + this.state = 538; this.match(FlinkSqlParser.KW_AS); - this.state = 541; + this.state = 539; this.uid(); } } @@ -2123,34 +2122,34 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 544; + this.state = 542; this.match(FlinkSqlParser.KW_ADD); - this.state = 545; + this.state = 543; this.match(FlinkSqlParser.KW_FILE); - this.state = 546; + this.state = 544; this.match(FlinkSqlParser.KW_WITH); - this.state = 547; + this.state = 545; this.dtFilePath(); - this.state = 550; + this.state = 548; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 548; + this.state = 546; this.match(FlinkSqlParser.KW_AS); - this.state = 549; + this.state = 547; this.uid(); } } - this.state = 554; + this.state = 552; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 311) { { - this.state = 552; + this.state = 550; this.match(FlinkSqlParser.KW_RENAME); - this.state = 553; + this.state = 551; this.uid(); } } @@ -2160,9 +2159,9 @@ export class FlinkSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 556; + this.state = 554; this.match(FlinkSqlParser.KW_ADD); - this.state = 557; + this.state = 555; _la = this.tokenStream.LA(1); if(!(((((_la - 482)) & ~0x1F) === 0 && ((1 << (_la - 482)) & 47) !== 0))) { this.errorHandler.recoverInline(this); @@ -2171,70 +2170,70 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 558; + this.state = 556; this.match(FlinkSqlParser.KW_WITH); - this.state = 559; + this.state = 557; this.dtFilePath(); - this.state = 560; + this.state = 558; this.match(FlinkSqlParser.KW_RENAME); - this.state = 561; + this.state = 559; this.uid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 563; + this.state = 561; this.match(FlinkSqlParser.KW_ADD); - this.state = 564; + this.state = 562; this.match(FlinkSqlParser.KW_PYTHON_PARAMETER); - this.state = 565; + this.state = 563; this.dtFilePath(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 566; + this.state = 564; this.match(FlinkSqlParser.KW_ADD); - this.state = 567; + this.state = 565; this.match(FlinkSqlParser.KW_ENGINE); - this.state = 568; + this.state = 566; this.match(FlinkSqlParser.KW_FILE); - this.state = 569; + this.state = 567; this.match(FlinkSqlParser.KW_WITH); - this.state = 570; + this.state = 568; this.dtFilePath(); - this.state = 571; + this.state = 569; this.match(FlinkSqlParser.KW_RENAME); - this.state = 572; + this.state = 570; this.uid(); - this.state = 573; + this.state = 571; this.match(FlinkSqlParser.KW_KEY); - this.state = 574; + this.state = 572; this.uid(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 576; + this.state = 574; this.match(FlinkSqlParser.KW_ADD); - this.state = 577; + this.state = 575; this.match(FlinkSqlParser.KW_CONFIG); - this.state = 578; + this.state = 576; this.match(FlinkSqlParser.KW_FILE); - this.state = 579; + this.state = 577; this.match(FlinkSqlParser.KW_WITH); - this.state = 580; + this.state = 578; this.dtFilePath(); - this.state = 581; + this.state = 579; this.match(FlinkSqlParser.KW_FOR); - this.state = 582; + this.state = 580; this.uid(); - this.state = 583; + this.state = 581; this.match(FlinkSqlParser.KW_AS); - this.state = 584; + this.state = 582; this.uid(); } break; @@ -2262,7 +2261,7 @@ export class FlinkSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 592; + this.state = 590; this.errorHandler.sync(this); alternative = 1; do { @@ -2270,17 +2269,17 @@ export class FlinkSqlParser extends SQLParserBase { case 1: { { - this.state = 589; + this.state = 587; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 534) { { - this.state = 588; + this.state = 586; this.match(FlinkSqlParser.SLASH_SIGN); } } - this.state = 591; + this.state = 589; this.uid(); } } @@ -2288,7 +2287,7 @@ export class FlinkSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 594; + this.state = 592; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -2314,18 +2313,18 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 598; + this.state = 596; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { case 1: { - this.state = 596; + this.state = 594; this.simpleCreateTable(); } break; case 2: { - this.state = 597; + this.state = 595; this.createTableAsSelect(); } break; @@ -2354,120 +2353,122 @@ export class FlinkSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 600; + this.state = 598; this.match(FlinkSqlParser.KW_CREATE); - this.state = 602; + this.state = 600; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 497) { { - this.state = 601; + this.state = 599; this.match(FlinkSqlParser.KW_TEMPORARY); } } - this.state = 604; + this.state = 602; this.match(FlinkSqlParser.KW_TABLE); - this.state = 606; + this.state = 604; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 167) { { - this.state = 605; + this.state = 603; this.ifNotExists(); } } - this.state = 608; + this.state = 606; this.tablePathCreate(); - this.state = 609; + this.state = 607; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 610; + this.state = 608; this.columnOptionDefinition(); - this.state = 615; + this.state = 613; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 611; + this.state = 609; this.match(FlinkSqlParser.COMMA); - this.state = 612; + this.state = 610; this.columnOptionDefinition(); } } } - this.state = 617; + this.state = 615; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); } - this.state = 620; + this.state = 618; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { case 1: { - this.state = 618; + this.state = 616; this.match(FlinkSqlParser.COMMA); - this.state = 619; + this.state = 617; this.watermarkDefinition(); } break; } - this.state = 624; + this.state = 622; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { case 1: { - this.state = 622; + this.state = 620; this.match(FlinkSqlParser.COMMA); - this.state = 623; + this.state = 621; this.tableConstraint(); } break; } - this.state = 628; + this.state = 626; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 520) { { - this.state = 626; + this.state = 624; this.match(FlinkSqlParser.COMMA); - this.state = 627; + this.state = 625; this.selfDefinitionClause(); } } - this.state = 630; + this.state = 628; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 632; + this.state = 631; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 631; - this.commentSpec(); + this.state = 629; + this.match(FlinkSqlParser.KW_COMMENT); + this.state = 630; + localContext._comment = this.match(FlinkSqlParser.STRING_LITERAL); } } - this.state = 635; + this.state = 634; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 634; + this.state = 633; this.partitionDefinition(); } } - this.state = 637; + this.state = 636; this.withOption(); - this.state = 639; + this.state = 638; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 202) { { - this.state = 638; + this.state = 637; this.likeDefinition(); } } @@ -2495,32 +2496,32 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 641; + this.state = 640; this.match(FlinkSqlParser.KW_CREATE); - this.state = 642; + this.state = 641; this.match(FlinkSqlParser.KW_TABLE); - this.state = 644; + this.state = 643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 167) { { - this.state = 643; + this.state = 642; this.ifNotExists(); } } - this.state = 646; + this.state = 645; this.tablePathCreate(); - this.state = 647; + this.state = 646; this.withOption(); - this.state = 650; + this.state = 649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 648; + this.state = 647; this.match(FlinkSqlParser.KW_AS); - this.state = 649; + this.state = 648; this.queryStatement(0); } } @@ -2545,27 +2546,27 @@ export class FlinkSqlParser extends SQLParserBase { let localContext = new ColumnOptionDefinitionContext(this.context, this.state); this.enterRule(localContext, 46, FlinkSqlParser.RULE_columnOptionDefinition); try { - this.state = 655; + this.state = 654; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 40, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 652; + this.state = 651; this.physicalColumnDefinition(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 653; + this.state = 652; this.metadataColumnDefinition(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 654; + this.state = 653; this.computedColumnDefinition(); } break; @@ -2592,16 +2593,16 @@ export class FlinkSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 657; + this.state = 656; this.columnNameCreate(); - this.state = 658; + this.state = 657; this.columnType(); - this.state = 660; + this.state = 659; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 241 || _la === 244 || _la === 288) { { - this.state = 659; + this.state = 658; this.columnConstraint(); } } @@ -2611,8 +2612,10 @@ export class FlinkSqlParser extends SQLParserBase { _la = this.tokenStream.LA(1); if (_la === 59) { { + this.state = 661; + this.match(FlinkSqlParser.KW_COMMENT); this.state = 662; - this.commentSpec(); + localContext._comment = this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -2767,10 +2770,10 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 1); { this.state = 684; - localContext._typeName = this.tokenStream.LT(1); + localContext._colType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 32 || _la === 91 || _la === 244)) { - localContext._typeName = this.errorHandler.recoverInline(this); + localContext._colType = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); @@ -2795,10 +2798,10 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 2); { this.state = 685; - localContext._typeName = this.tokenStream.LT(1); + localContext._colType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 262275) !== 0) || _la === 92 || _la === 178 || _la === 179 || _la === 344 || _la === 360 || ((((_la - 378)) & ~0x1F) === 0 && ((1 << (_la - 378)) & 521) !== 0) || _la === 416 || _la === 417)) { - localContext._typeName = this.errorHandler.recoverInline(this); + localContext._colType = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); @@ -2820,7 +2823,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 3); { this.state = 689; - localContext._typeName = this.match(FlinkSqlParser.KW_TIMESTAMP); + localContext._colType = this.match(FlinkSqlParser.KW_TIMESTAMP); this.state = 691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); @@ -2872,10 +2875,10 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 4); { this.state = 701; - localContext._typeName = this.tokenStream.LT(1); + localContext._colType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 16387) !== 0) || _la === 144 || _la === 246)) { - localContext._typeName = this.errorHandler.recoverInline(this); + localContext._colType = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); @@ -2898,10 +2901,10 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 5); { this.state = 705; - localContext._type_ = this.tokenStream.LT(1); + localContext._colType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 13 || _la === 231)) { - localContext._type_ = this.errorHandler.recoverInline(this); + localContext._colType = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); @@ -2923,7 +2926,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 6); { this.state = 709; - localContext._type_ = this.match(FlinkSqlParser.KW_MAP); + localContext._colType = this.match(FlinkSqlParser.KW_MAP); this.state = 711; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); @@ -2940,7 +2943,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 7); { this.state = 713; - localContext._type_ = this.match(FlinkSqlParser.KW_ROW); + localContext._colType = this.match(FlinkSqlParser.KW_ROW); this.state = 715; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); @@ -2957,7 +2960,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 8); { this.state = 717; - localContext._type_ = this.match(FlinkSqlParser.KW_RAW); + localContext._colType = this.match(FlinkSqlParser.KW_RAW); this.state = 719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); @@ -3287,63 +3290,37 @@ export class FlinkSqlParser extends SQLParserBase { } return localContext; } - public commentSpec(): CommentSpecContext { - let localContext = new CommentSpecContext(this.context, this.state); - this.enterRule(localContext, 72, FlinkSqlParser.RULE_commentSpec); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 784; - this.match(FlinkSqlParser.KW_COMMENT); - this.state = 785; - this.match(FlinkSqlParser.STRING_LITERAL); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public metadataColumnDefinition(): MetadataColumnDefinitionContext { let localContext = new MetadataColumnDefinitionContext(this.context, this.state); - this.enterRule(localContext, 74, FlinkSqlParser.RULE_metadataColumnDefinition); + this.enterRule(localContext, 72, FlinkSqlParser.RULE_metadataColumnDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 787; + this.state = 784; this.columnNameCreate(); - this.state = 788; + this.state = 785; this.columnType(); - this.state = 789; + this.state = 786; this.match(FlinkSqlParser.KW_METADATA); - this.state = 792; + this.state = 789; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 790; + this.state = 787; this.match(FlinkSqlParser.KW_FROM); - this.state = 791; + this.state = 788; this.metadataKey(); } } - this.state = 795; + this.state = 792; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 794; + this.state = 791; this.match(FlinkSqlParser.KW_VIRTUAL); } } @@ -3366,11 +3343,11 @@ export class FlinkSqlParser extends SQLParserBase { } public metadataKey(): MetadataKeyContext { let localContext = new MetadataKeyContext(this.context, this.state); - this.enterRule(localContext, 76, FlinkSqlParser.RULE_metadataKey); + this.enterRule(localContext, 74, FlinkSqlParser.RULE_metadataKey); try { this.enterOuterAlt(localContext, 1); { - this.state = 797; + this.state = 794; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -3390,24 +3367,26 @@ export class FlinkSqlParser extends SQLParserBase { } public computedColumnDefinition(): ComputedColumnDefinitionContext { let localContext = new ComputedColumnDefinitionContext(this.context, this.state); - this.enterRule(localContext, 78, FlinkSqlParser.RULE_computedColumnDefinition); + this.enterRule(localContext, 76, FlinkSqlParser.RULE_computedColumnDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 799; + this.state = 796; this.columnNameCreate(); - this.state = 800; + this.state = 797; this.match(FlinkSqlParser.KW_AS); - this.state = 801; + this.state = 798; this.computedColumnExpression(); - this.state = 803; + this.state = 801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 802; - this.commentSpec(); + this.state = 799; + this.match(FlinkSqlParser.KW_COMMENT); + this.state = 800; + localContext._comment = this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -3429,11 +3408,11 @@ export class FlinkSqlParser extends SQLParserBase { } public computedColumnExpression(): ComputedColumnExpressionContext { let localContext = new ComputedColumnExpressionContext(this.context, this.state); - this.enterRule(localContext, 80, FlinkSqlParser.RULE_computedColumnExpression); + this.enterRule(localContext, 78, FlinkSqlParser.RULE_computedColumnExpression); try { this.enterOuterAlt(localContext, 1); { - this.state = 805; + this.state = 803; this.expression(); } } @@ -3453,19 +3432,19 @@ export class FlinkSqlParser extends SQLParserBase { } public watermarkDefinition(): WatermarkDefinitionContext { let localContext = new WatermarkDefinitionContext(this.context, this.state); - this.enterRule(localContext, 82, FlinkSqlParser.RULE_watermarkDefinition); + this.enterRule(localContext, 80, FlinkSqlParser.RULE_watermarkDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 807; + this.state = 805; this.match(FlinkSqlParser.KW_WATERMARK); - this.state = 808; + this.state = 806; this.match(FlinkSqlParser.KW_FOR); - this.state = 809; + this.state = 807; this.columnName(); - this.state = 810; + this.state = 808; this.match(FlinkSqlParser.KW_AS); - this.state = 811; + this.state = 809; this.expression(); } } @@ -3485,32 +3464,32 @@ export class FlinkSqlParser extends SQLParserBase { } public tableConstraint(): TableConstraintContext { let localContext = new TableConstraintContext(this.context, this.state); - this.enterRule(localContext, 84, FlinkSqlParser.RULE_tableConstraint); + this.enterRule(localContext, 82, FlinkSqlParser.RULE_tableConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 815; + this.state = 813; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 813; + this.state = 811; this.match(FlinkSqlParser.KW_CONSTRAINT); - this.state = 814; + this.state = 812; this.constraintName(); } } - this.state = 817; + this.state = 815; this.match(FlinkSqlParser.KW_PRIMARY); - this.state = 818; + this.state = 816; this.match(FlinkSqlParser.KW_KEY); - this.state = 819; + this.state = 817; this.columnNameList(); - this.state = 820; + this.state = 818; this.match(FlinkSqlParser.KW_NOT); - this.state = 821; + this.state = 819; this.match(FlinkSqlParser.KW_ENFORCED); } } @@ -3530,11 +3509,11 @@ export class FlinkSqlParser extends SQLParserBase { } public constraintName(): ConstraintNameContext { let localContext = new ConstraintNameContext(this.context, this.state); - this.enterRule(localContext, 86, FlinkSqlParser.RULE_constraintName); + this.enterRule(localContext, 84, FlinkSqlParser.RULE_constraintName); try { this.enterOuterAlt(localContext, 1); { - this.state = 823; + this.state = 821; this.identifier(); } } @@ -3554,15 +3533,15 @@ export class FlinkSqlParser extends SQLParserBase { } public selfDefinitionClause(): SelfDefinitionClauseContext { let localContext = new SelfDefinitionClauseContext(this.context, this.state); - this.enterRule(localContext, 88, FlinkSqlParser.RULE_selfDefinitionClause); + this.enterRule(localContext, 86, FlinkSqlParser.RULE_selfDefinitionClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 825; + this.state = 823; this.match(FlinkSqlParser.KW_PERIOD); - this.state = 826; + this.state = 824; this.match(FlinkSqlParser.KW_FOR); - this.state = 827; + this.state = 825; this.match(FlinkSqlParser.KW_SYSTEM_TIME); } } @@ -3582,15 +3561,15 @@ export class FlinkSqlParser extends SQLParserBase { } public partitionDefinition(): PartitionDefinitionContext { let localContext = new PartitionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 90, FlinkSqlParser.RULE_partitionDefinition); + this.enterRule(localContext, 88, FlinkSqlParser.RULE_partitionDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 829; + this.state = 827; this.match(FlinkSqlParser.KW_PARTITIONED); - this.state = 830; + this.state = 828; this.match(FlinkSqlParser.KW_BY); - this.state = 831; + this.state = 829; this.transformList(); } } @@ -3610,32 +3589,32 @@ export class FlinkSqlParser extends SQLParserBase { } public transformList(): TransformListContext { let localContext = new TransformListContext(this.context, this.state); - this.enterRule(localContext, 92, FlinkSqlParser.RULE_transformList); + this.enterRule(localContext, 90, FlinkSqlParser.RULE_transformList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 833; + this.state = 831; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 834; + this.state = 832; this.transform(); - this.state = 839; + this.state = 837; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 835; + this.state = 833; this.match(FlinkSqlParser.COMMA); - this.state = 836; + this.state = 834; this.transform(); } } - this.state = 841; + this.state = 839; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 842; + this.state = 840; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -3655,17 +3634,17 @@ export class FlinkSqlParser extends SQLParserBase { } public transform(): TransformContext { let localContext = new TransformContext(this.context, this.state); - this.enterRule(localContext, 94, FlinkSqlParser.RULE_transform); + this.enterRule(localContext, 92, FlinkSqlParser.RULE_transform); let _la: number; try { - this.state = 856; + this.state = 854; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context) ) { case 1: localContext = new IdentityTransformContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 844; + this.state = 842; this.columnName(); } break; @@ -3673,27 +3652,27 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ApplyTransformContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 845; + this.state = 843; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 846; + this.state = 844; this.transformArgument(); - this.state = 851; + this.state = 849; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 847; + this.state = 845; this.match(FlinkSqlParser.COMMA); - this.state = 848; + this.state = 846; this.transformArgument(); } } - this.state = 853; + this.state = 851; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 854; + this.state = 852; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -3715,22 +3694,22 @@ export class FlinkSqlParser extends SQLParserBase { } public transformArgument(): TransformArgumentContext { let localContext = new TransformArgumentContext(this.context, this.state); - this.enterRule(localContext, 96, FlinkSqlParser.RULE_transformArgument); + this.enterRule(localContext, 94, FlinkSqlParser.RULE_transformArgument); try { - this.state = 860; + this.state = 858; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 858; + this.state = 856; this.qualifiedName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 859; + this.state = 857; this.constant(); } break; @@ -3752,37 +3731,37 @@ export class FlinkSqlParser extends SQLParserBase { } public likeDefinition(): LikeDefinitionContext { let localContext = new LikeDefinitionContext(this.context, this.state); - this.enterRule(localContext, 98, FlinkSqlParser.RULE_likeDefinition); + this.enterRule(localContext, 96, FlinkSqlParser.RULE_likeDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 862; + this.state = 860; this.match(FlinkSqlParser.KW_LIKE); - this.state = 863; + this.state = 861; this.tablePath(); - this.state = 872; + this.state = 870; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: { - this.state = 864; + this.state = 862; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 868; + this.state = 866; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 266 || _la === 455 || _la === 462) { { { - this.state = 865; + this.state = 863; this.likeOption(); } } - this.state = 870; + this.state = 868; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 871; + this.state = 869; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -3805,17 +3784,17 @@ export class FlinkSqlParser extends SQLParserBase { } public likeOption(): LikeOptionContext { let localContext = new LikeOptionContext(this.context, this.state); - this.enterRule(localContext, 100, FlinkSqlParser.RULE_likeOption); + this.enterRule(localContext, 98, FlinkSqlParser.RULE_likeOption); let _la: number; try { - this.state = 878; + this.state = 876; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 73, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { { - this.state = 874; + this.state = 872; _la = this.tokenStream.LA(1); if(!(_la === 455 || _la === 462)) { this.errorHandler.recoverInline(this); @@ -3824,7 +3803,7 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 875; + this.state = 873; _la = this.tokenStream.LA(1); if(!(_la === 5 || _la === 270 || _la === 444)) { this.errorHandler.recoverInline(this); @@ -3840,7 +3819,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 2); { { - this.state = 876; + this.state = 874; _la = this.tokenStream.LA(1); if(!(_la === 266 || _la === 455 || _la === 462)) { this.errorHandler.recoverInline(this); @@ -3849,7 +3828,7 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 877; + this.state = 875; _la = this.tokenStream.LA(1); if(!(_la === 425 || _la === 458 || _la === 477)) { this.errorHandler.recoverInline(this); @@ -3879,17 +3858,17 @@ export class FlinkSqlParser extends SQLParserBase { } public createCatalog(): CreateCatalogContext { let localContext = new CreateCatalogContext(this.context, this.state); - this.enterRule(localContext, 102, FlinkSqlParser.RULE_createCatalog); + this.enterRule(localContext, 100, FlinkSqlParser.RULE_createCatalog); try { this.enterOuterAlt(localContext, 1); { - this.state = 880; + this.state = 878; this.match(FlinkSqlParser.KW_CREATE); - this.state = 881; + this.state = 879; this.match(FlinkSqlParser.KW_CATALOG); - this.state = 882; + this.state = 880; this.catalogPathCreate(); - this.state = 883; + this.state = 881; this.withOption(); } } @@ -3909,38 +3888,40 @@ export class FlinkSqlParser extends SQLParserBase { } public createDatabase(): CreateDatabaseContext { let localContext = new CreateDatabaseContext(this.context, this.state); - this.enterRule(localContext, 104, FlinkSqlParser.RULE_createDatabase); + this.enterRule(localContext, 102, FlinkSqlParser.RULE_createDatabase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 885; + this.state = 883; this.match(FlinkSqlParser.KW_CREATE); - this.state = 886; + this.state = 884; this.match(FlinkSqlParser.KW_DATABASE); - this.state = 888; + this.state = 886; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 167) { { - this.state = 887; + this.state = 885; this.ifNotExists(); } } - this.state = 890; + this.state = 888; this.databasePathCreate(); - this.state = 892; + this.state = 891; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 891; - this.commentSpec(); + this.state = 889; + this.match(FlinkSqlParser.KW_COMMENT); + this.state = 890; + localContext._comment = this.match(FlinkSqlParser.STRING_LITERAL); } } - this.state = 894; + this.state = 893; this.withOption(); } } @@ -3960,43 +3941,43 @@ export class FlinkSqlParser extends SQLParserBase { } public createView(): CreateViewContext { let localContext = new CreateViewContext(this.context, this.state); - this.enterRule(localContext, 106, FlinkSqlParser.RULE_createView); + this.enterRule(localContext, 104, FlinkSqlParser.RULE_createView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 896; + this.state = 895; this.match(FlinkSqlParser.KW_CREATE); - this.state = 898; + this.state = 897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 497) { { - this.state = 897; + this.state = 896; this.match(FlinkSqlParser.KW_TEMPORARY); } } - this.state = 900; + this.state = 899; this.match(FlinkSqlParser.KW_VIEW); - this.state = 902; + this.state = 901; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 167) { { - this.state = 901; + this.state = 900; this.ifNotExists(); } } - this.state = 904; + this.state = 903; this.viewPathCreate(); - this.state = 906; + this.state = 905; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 516) { { - this.state = 905; + this.state = 904; this.columnNameList(); } } @@ -4006,8 +3987,10 @@ export class FlinkSqlParser extends SQLParserBase { _la = this.tokenStream.LA(1); if (_la === 59) { { + this.state = 907; + this.match(FlinkSqlParser.KW_COMMENT); this.state = 908; - this.commentSpec(); + localContext._comment = this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -4033,7 +4016,7 @@ export class FlinkSqlParser extends SQLParserBase { } public createFunction(): CreateFunctionContext { let localContext = new CreateFunctionContext(this.context, this.state); - this.enterRule(localContext, 108, FlinkSqlParser.RULE_createFunction); + this.enterRule(localContext, 106, FlinkSqlParser.RULE_createFunction); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4123,7 +4106,7 @@ export class FlinkSqlParser extends SQLParserBase { } public usingClause(): UsingClauseContext { let localContext = new UsingClauseContext(this.context, this.state); - this.enterRule(localContext, 110, FlinkSqlParser.RULE_usingClause); + this.enterRule(localContext, 108, FlinkSqlParser.RULE_usingClause); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4170,7 +4153,7 @@ export class FlinkSqlParser extends SQLParserBase { } public jarFileName(): JarFileNameContext { let localContext = new JarFileNameContext(this.context, this.state); - this.enterRule(localContext, 112, FlinkSqlParser.RULE_jarFileName); + this.enterRule(localContext, 110, FlinkSqlParser.RULE_jarFileName); try { this.enterOuterAlt(localContext, 1); { @@ -4194,7 +4177,7 @@ export class FlinkSqlParser extends SQLParserBase { } public alterTable(): AlterTableContext { let localContext = new AlterTableContext(this.context, this.state); - this.enterRule(localContext, 114, FlinkSqlParser.RULE_alterTable); + this.enterRule(localContext, 112, FlinkSqlParser.RULE_alterTable); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4267,7 +4250,7 @@ export class FlinkSqlParser extends SQLParserBase { } public renameDefinition(): RenameDefinitionContext { let localContext = new RenameDefinitionContext(this.context, this.state); - this.enterRule(localContext, 116, FlinkSqlParser.RULE_renameDefinition); + this.enterRule(localContext, 114, FlinkSqlParser.RULE_renameDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4306,7 +4289,7 @@ export class FlinkSqlParser extends SQLParserBase { } public setKeyValueDefinition(): SetKeyValueDefinitionContext { let localContext = new SetKeyValueDefinitionContext(this.context, this.state); - this.enterRule(localContext, 118, FlinkSqlParser.RULE_setKeyValueDefinition); + this.enterRule(localContext, 116, FlinkSqlParser.RULE_setKeyValueDefinition); try { this.enterOuterAlt(localContext, 1); { @@ -4332,7 +4315,7 @@ export class FlinkSqlParser extends SQLParserBase { } public addConstraint(): AddConstraintContext { let localContext = new AddConstraintContext(this.context, this.state); - this.enterRule(localContext, 120, FlinkSqlParser.RULE_addConstraint); + this.enterRule(localContext, 118, FlinkSqlParser.RULE_addConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4377,7 +4360,7 @@ export class FlinkSqlParser extends SQLParserBase { } public dropConstraint(): DropConstraintContext { let localContext = new DropConstraintContext(this.context, this.state); - this.enterRule(localContext, 122, FlinkSqlParser.RULE_dropConstraint); + this.enterRule(localContext, 120, FlinkSqlParser.RULE_dropConstraint); try { this.enterOuterAlt(localContext, 1); { @@ -4405,7 +4388,7 @@ export class FlinkSqlParser extends SQLParserBase { } public addUnique(): AddUniqueContext { let localContext = new AddUniqueContext(this.context, this.state); - this.enterRule(localContext, 124, FlinkSqlParser.RULE_addUnique); + this.enterRule(localContext, 122, FlinkSqlParser.RULE_addUnique); try { this.enterOuterAlt(localContext, 1); { @@ -4433,7 +4416,7 @@ export class FlinkSqlParser extends SQLParserBase { } public notForced(): NotForcedContext { let localContext = new NotForcedContext(this.context, this.state); - this.enterRule(localContext, 126, FlinkSqlParser.RULE_notForced); + this.enterRule(localContext, 124, FlinkSqlParser.RULE_notForced); try { this.enterOuterAlt(localContext, 1); { @@ -4459,7 +4442,7 @@ export class FlinkSqlParser extends SQLParserBase { } public alertView(): AlertViewContext { let localContext = new AlertViewContext(this.context, this.state); - this.enterRule(localContext, 128, FlinkSqlParser.RULE_alertView); + this.enterRule(localContext, 126, FlinkSqlParser.RULE_alertView); try { this.enterOuterAlt(localContext, 1); { @@ -4507,7 +4490,7 @@ export class FlinkSqlParser extends SQLParserBase { } public alterDatabase(): AlterDatabaseContext { let localContext = new AlterDatabaseContext(this.context, this.state); - this.enterRule(localContext, 130, FlinkSqlParser.RULE_alterDatabase); + this.enterRule(localContext, 128, FlinkSqlParser.RULE_alterDatabase); try { this.enterOuterAlt(localContext, 1); { @@ -4537,7 +4520,7 @@ export class FlinkSqlParser extends SQLParserBase { } public alterFunction(): AlterFunctionContext { let localContext = new AlterFunctionContext(this.context, this.state); - this.enterRule(localContext, 132, FlinkSqlParser.RULE_alterFunction); + this.enterRule(localContext, 130, FlinkSqlParser.RULE_alterFunction); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4617,7 +4600,7 @@ export class FlinkSqlParser extends SQLParserBase { } public dropCatalog(): DropCatalogContext { let localContext = new DropCatalogContext(this.context, this.state); - this.enterRule(localContext, 134, FlinkSqlParser.RULE_dropCatalog); + this.enterRule(localContext, 132, FlinkSqlParser.RULE_dropCatalog); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4656,7 +4639,7 @@ export class FlinkSqlParser extends SQLParserBase { } public dropTable(): DropTableContext { let localContext = new DropTableContext(this.context, this.state); - this.enterRule(localContext, 136, FlinkSqlParser.RULE_dropTable); + this.enterRule(localContext, 134, FlinkSqlParser.RULE_dropTable); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4705,7 +4688,7 @@ export class FlinkSqlParser extends SQLParserBase { } public dropDatabase(): DropDatabaseContext { let localContext = new DropDatabaseContext(this.context, this.state); - this.enterRule(localContext, 138, FlinkSqlParser.RULE_dropDatabase); + this.enterRule(localContext, 136, FlinkSqlParser.RULE_dropDatabase); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4762,7 +4745,7 @@ export class FlinkSqlParser extends SQLParserBase { } public dropView(): DropViewContext { let localContext = new DropViewContext(this.context, this.state); - this.enterRule(localContext, 140, FlinkSqlParser.RULE_dropView); + this.enterRule(localContext, 138, FlinkSqlParser.RULE_dropView); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -4811,7 +4794,7 @@ export class FlinkSqlParser extends SQLParserBase { } public dropFunction(): DropFunctionContext { let localContext = new DropFunctionContext(this.context, this.state); - this.enterRule(localContext, 142, FlinkSqlParser.RULE_dropFunction); + this.enterRule(localContext, 140, FlinkSqlParser.RULE_dropFunction); try { this.enterOuterAlt(localContext, 1); { @@ -4867,7 +4850,7 @@ export class FlinkSqlParser extends SQLParserBase { } public insertStatement(): InsertStatementContext { let localContext = new InsertStatementContext(this.context, this.state); - this.enterRule(localContext, 144, FlinkSqlParser.RULE_insertStatement); + this.enterRule(localContext, 142, FlinkSqlParser.RULE_insertStatement); let _la: number; try { this.state = 1075; @@ -4928,7 +4911,7 @@ export class FlinkSqlParser extends SQLParserBase { } public insertSimpleStatement(): InsertSimpleStatementContext { let localContext = new InsertSimpleStatementContext(this.context, this.state); - this.enterRule(localContext, 146, FlinkSqlParser.RULE_insertSimpleStatement); + this.enterRule(localContext, 144, FlinkSqlParser.RULE_insertSimpleStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5000,7 +4983,7 @@ export class FlinkSqlParser extends SQLParserBase { } public insertPartitionDefinition(): InsertPartitionDefinitionContext { let localContext = new InsertPartitionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 148, FlinkSqlParser.RULE_insertPartitionDefinition); + this.enterRule(localContext, 146, FlinkSqlParser.RULE_insertPartitionDefinition); try { this.enterOuterAlt(localContext, 1); { @@ -5026,7 +5009,7 @@ export class FlinkSqlParser extends SQLParserBase { } public valuesDefinition(): ValuesDefinitionContext { let localContext = new ValuesDefinitionContext(this.context, this.state); - this.enterRule(localContext, 150, FlinkSqlParser.RULE_valuesDefinition); + this.enterRule(localContext, 148, FlinkSqlParser.RULE_valuesDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5069,7 +5052,7 @@ export class FlinkSqlParser extends SQLParserBase { } public valuesRowDefinition(): ValuesRowDefinitionContext { let localContext = new ValuesRowDefinitionContext(this.context, this.state); - this.enterRule(localContext, 152, FlinkSqlParser.RULE_valuesRowDefinition); + this.enterRule(localContext, 150, FlinkSqlParser.RULE_valuesRowDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5114,7 +5097,7 @@ export class FlinkSqlParser extends SQLParserBase { } public insertMulStatementCompatibility(): InsertMulStatementCompatibilityContext { let localContext = new InsertMulStatementCompatibilityContext(this.context, this.state); - this.enterRule(localContext, 154, FlinkSqlParser.RULE_insertMulStatementCompatibility); + this.enterRule(localContext, 152, FlinkSqlParser.RULE_insertMulStatementCompatibility); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5163,7 +5146,7 @@ export class FlinkSqlParser extends SQLParserBase { } public insertMulStatement(): InsertMulStatementContext { let localContext = new InsertMulStatementContext(this.context, this.state); - this.enterRule(localContext, 156, FlinkSqlParser.RULE_insertMulStatement); + this.enterRule(localContext, 154, FlinkSqlParser.RULE_insertMulStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5220,8 +5203,8 @@ export class FlinkSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryStatementContext(this.context, parentState); let previousContext = localContext; - let _startState = 158; - this.enterRecursionRule(localContext, 158, FlinkSqlParser.RULE_queryStatement, _p); + let _startState = 156; + this.enterRecursionRule(localContext, 156, FlinkSqlParser.RULE_queryStatement, _p); let _la: number; try { let alternative: number; @@ -5393,7 +5376,7 @@ export class FlinkSqlParser extends SQLParserBase { } public valuesCaluse(): ValuesCaluseContext { let localContext = new ValuesCaluseContext(this.context, this.state); - this.enterRule(localContext, 160, FlinkSqlParser.RULE_valuesCaluse); + this.enterRule(localContext, 158, FlinkSqlParser.RULE_valuesCaluse); try { let alternative: number; this.enterOuterAlt(localContext, 1); @@ -5438,7 +5421,7 @@ export class FlinkSqlParser extends SQLParserBase { } public withClause(): WithClauseContext { let localContext = new WithClauseContext(this.context, this.state); - this.enterRule(localContext, 162, FlinkSqlParser.RULE_withClause); + this.enterRule(localContext, 160, FlinkSqlParser.RULE_withClause); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5481,7 +5464,7 @@ export class FlinkSqlParser extends SQLParserBase { } public withItem(): WithItemContext { let localContext = new WithItemContext(this.context, this.state); - this.enterRule(localContext, 164, FlinkSqlParser.RULE_withItem); + this.enterRule(localContext, 162, FlinkSqlParser.RULE_withItem); let _la: number; try { this.enterOuterAlt(localContext, 1); @@ -5544,7 +5527,7 @@ export class FlinkSqlParser extends SQLParserBase { } public withItemName(): WithItemNameContext { let localContext = new WithItemNameContext(this.context, this.state); - this.enterRule(localContext, 166, FlinkSqlParser.RULE_withItemName); + this.enterRule(localContext, 164, FlinkSqlParser.RULE_withItemName); try { this.enterOuterAlt(localContext, 1); { @@ -5568,7 +5551,7 @@ export class FlinkSqlParser extends SQLParserBase { } public selectStatement(): SelectStatementContext { let localContext = new SelectStatementContext(this.context, this.state); - this.enterRule(localContext, 168, FlinkSqlParser.RULE_selectStatement); + this.enterRule(localContext, 166, FlinkSqlParser.RULE_selectStatement); try { this.state = 1239; this.errorHandler.sync(this); @@ -5659,7 +5642,7 @@ export class FlinkSqlParser extends SQLParserBase { } public selectClause(): SelectClauseContext { let localContext = new SelectClauseContext(this.context, this.state); - this.enterRule(localContext, 170, FlinkSqlParser.RULE_selectClause); + this.enterRule(localContext, 168, FlinkSqlParser.RULE_selectClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); @@ -5728,7 +5711,7 @@ export class FlinkSqlParser extends SQLParserBase { } public projectItemDefinition(): ProjectItemDefinitionContext { let localContext = new ProjectItemDefinitionContext(this.context, this.state); - this.enterRule(localContext, 172, FlinkSqlParser.RULE_projectItemDefinition); + this.enterRule(localContext, 170, FlinkSqlParser.RULE_projectItemDefinition); let _la: number; try { this.state = 1271; @@ -5813,7 +5796,7 @@ export class FlinkSqlParser extends SQLParserBase { } public overWindowItem(): OverWindowItemContext { let localContext = new OverWindowItemContext(this.context, this.state); - this.enterRule(localContext, 174, FlinkSqlParser.RULE_overWindowItem); + this.enterRule(localContext, 172, FlinkSqlParser.RULE_overWindowItem); try { this.state = 1285; this.errorHandler.sync(this); @@ -5866,7 +5849,7 @@ export class FlinkSqlParser extends SQLParserBase { } public fromClause(): FromClauseContext { let localContext = new FromClauseContext(this.context, this.state); - this.enterRule(localContext, 176, FlinkSqlParser.RULE_fromClause); + this.enterRule(localContext, 174, FlinkSqlParser.RULE_fromClause); try { this.enterOuterAlt(localContext, 1); { @@ -5902,8 +5885,8 @@ export class FlinkSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new TableExpressionContext(this.context, parentState); let previousContext = localContext; - let _startState = 178; - this.enterRecursionRule(localContext, 178, FlinkSqlParser.RULE_tableExpression, _p); + let _startState = 176; + this.enterRecursionRule(localContext, 176, FlinkSqlParser.RULE_tableExpression, _p); let _la: number; try { let alternative: number; @@ -6065,7 +6048,7 @@ export class FlinkSqlParser extends SQLParserBase { } public tableReference(): TableReferenceContext { let localContext = new TableReferenceContext(this.context, this.state); - this.enterRule(localContext, 180, FlinkSqlParser.RULE_tableReference); + this.enterRule(localContext, 178, FlinkSqlParser.RULE_tableReference); try { this.enterOuterAlt(localContext, 1); { @@ -6099,12 +6082,12 @@ export class FlinkSqlParser extends SQLParserBase { } public tablePrimary(): TablePrimaryContext { let localContext = new TablePrimaryContext(this.context, this.state); - this.enterRule(localContext, 182, FlinkSqlParser.RULE_tablePrimary); + this.enterRule(localContext, 180, FlinkSqlParser.RULE_tablePrimary); let _la: number; try { - this.state = 1382; + this.state = 1370; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 153, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { @@ -6130,133 +6113,93 @@ export class FlinkSqlParser extends SQLParserBase { } break; } - this.state = 1342; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 151, this.context) ) { - case 1: - { - this.state = 1339; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 17) { - { - this.state = 1338; - this.match(FlinkSqlParser.KW_AS); - } - } - - this.state = 1341; - this.correlationName(); - } - break; - } } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1344; + this.state = 1338; this.viewPath(); - this.state = 1346; + this.state = 1340; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 152, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 150, this.context) ) { case 1: { - this.state = 1345; + this.state = 1339; this.systemTimePeriod(); } break; } - this.state = 1352; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 154, this.context) ) { - case 1: - { - this.state = 1349; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 17) { - { - this.state = 1348; - this.match(FlinkSqlParser.KW_AS); - } - } - - this.state = 1351; - this.correlationName(); - } - break; - } } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1354; + this.state = 1342; this.match(FlinkSqlParser.KW_LATERAL); - this.state = 1355; + this.state = 1343; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1356; + this.state = 1344; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1357; + this.state = 1345; this.functionName(); - this.state = 1358; + this.state = 1346; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1359; + this.state = 1347; this.functionParam(); - this.state = 1364; + this.state = 1352; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1360; + this.state = 1348; this.match(FlinkSqlParser.COMMA); - this.state = 1361; + this.state = 1349; this.functionParam(); } } - this.state = 1366; + this.state = 1354; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1367; + this.state = 1355; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1368; + this.state = 1356; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1371; + this.state = 1359; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 198) { { - this.state = 1370; + this.state = 1358; this.match(FlinkSqlParser.KW_LATERAL); } } - this.state = 1373; + this.state = 1361; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1374; + this.state = 1362; this.queryStatement(0); - this.state = 1375; + this.state = 1363; this.match(FlinkSqlParser.RR_BRACKET); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1377; + this.state = 1365; this.match(FlinkSqlParser.KW_UNNEST); - this.state = 1378; + this.state = 1366; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1379; + this.state = 1367; this.expression(); - this.state = 1380; + this.state = 1368; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -6278,19 +6221,19 @@ export class FlinkSqlParser extends SQLParserBase { } public systemTimePeriod(): SystemTimePeriodContext { let localContext = new SystemTimePeriodContext(this.context, this.state); - this.enterRule(localContext, 184, FlinkSqlParser.RULE_systemTimePeriod); + this.enterRule(localContext, 182, FlinkSqlParser.RULE_systemTimePeriod); try { this.enterOuterAlt(localContext, 1); { - this.state = 1384; + this.state = 1372; this.match(FlinkSqlParser.KW_FOR); - this.state = 1385; + this.state = 1373; this.match(FlinkSqlParser.KW_SYSTEM_TIME); - this.state = 1386; + this.state = 1374; this.match(FlinkSqlParser.KW_AS); - this.state = 1387; + this.state = 1375; this.match(FlinkSqlParser.KW_OF); - this.state = 1388; + this.state = 1376; this.dateTimeExpression(); } } @@ -6310,11 +6253,11 @@ export class FlinkSqlParser extends SQLParserBase { } public dateTimeExpression(): DateTimeExpressionContext { let localContext = new DateTimeExpressionContext(this.context, this.state); - this.enterRule(localContext, 186, FlinkSqlParser.RULE_dateTimeExpression); + this.enterRule(localContext, 184, FlinkSqlParser.RULE_dateTimeExpression); try { this.enterOuterAlt(localContext, 1); { - this.state = 1390; + this.state = 1378; this.expression(); } } @@ -6334,17 +6277,17 @@ export class FlinkSqlParser extends SQLParserBase { } public inlineDataValueClause(): InlineDataValueClauseContext { let localContext = new InlineDataValueClauseContext(this.context, this.state); - this.enterRule(localContext, 188, FlinkSqlParser.RULE_inlineDataValueClause); + this.enterRule(localContext, 186, FlinkSqlParser.RULE_inlineDataValueClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1392; + this.state = 1380; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1393; + this.state = 1381; this.valuesDefinition(); - this.state = 1394; + this.state = 1382; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1395; + this.state = 1383; this.tableAlias(); } } @@ -6364,17 +6307,17 @@ export class FlinkSqlParser extends SQLParserBase { } public windoTVFClause(): WindoTVFClauseContext { let localContext = new WindoTVFClauseContext(this.context, this.state); - this.enterRule(localContext, 190, FlinkSqlParser.RULE_windoTVFClause); + this.enterRule(localContext, 188, FlinkSqlParser.RULE_windoTVFClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1397; + this.state = 1385; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1398; + this.state = 1386; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1399; + this.state = 1387; this.windowTVFExression(); - this.state = 1400; + this.state = 1388; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6394,34 +6337,34 @@ export class FlinkSqlParser extends SQLParserBase { } public windowTVFExression(): WindowTVFExressionContext { let localContext = new WindowTVFExressionContext(this.context, this.state); - this.enterRule(localContext, 192, FlinkSqlParser.RULE_windowTVFExression); + this.enterRule(localContext, 190, FlinkSqlParser.RULE_windowTVFExression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1402; + this.state = 1390; this.windoTVFName(); - this.state = 1403; + this.state = 1391; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1404; + this.state = 1392; this.windowTVFParam(); - this.state = 1409; + this.state = 1397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1405; + this.state = 1393; this.match(FlinkSqlParser.COMMA); - this.state = 1406; + this.state = 1394; this.windowTVFParam(); } } - this.state = 1411; + this.state = 1399; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1412; + this.state = 1400; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6441,12 +6384,12 @@ export class FlinkSqlParser extends SQLParserBase { } public windoTVFName(): WindoTVFNameContext { let localContext = new WindoTVFNameContext(this.context, this.state); - this.enterRule(localContext, 194, FlinkSqlParser.RULE_windoTVFName); + this.enterRule(localContext, 192, FlinkSqlParser.RULE_windoTVFName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1414; + this.state = 1402; _la = this.tokenStream.LA(1); if(!(_la === 445 || _la === 459 || _la === 499)) { this.errorHandler.recoverInline(this); @@ -6473,66 +6416,66 @@ export class FlinkSqlParser extends SQLParserBase { } public windowTVFParam(): WindowTVFParamContext { let localContext = new WindowTVFParamContext(this.context, this.state); - this.enterRule(localContext, 196, FlinkSqlParser.RULE_windowTVFParam); + this.enterRule(localContext, 194, FlinkSqlParser.RULE_windowTVFParam); try { - this.state = 1431; + this.state = 1419; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 155, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1416; + this.state = 1404; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1417; + this.state = 1405; this.timeAttrColumn(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1418; + this.state = 1406; this.columnDescriptor(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1419; + this.state = 1407; this.timeIntervalExpression(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1420; + this.state = 1408; this.match(FlinkSqlParser.KW_DATA); - this.state = 1421; + this.state = 1409; this.match(FlinkSqlParser.DOUBLE_RIGHT_ARROW); - this.state = 1422; + this.state = 1410; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1423; + this.state = 1411; this.timeAttrColumn(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1424; + this.state = 1412; this.match(FlinkSqlParser.KW_TIMECOL); - this.state = 1425; + this.state = 1413; this.match(FlinkSqlParser.DOUBLE_RIGHT_ARROW); - this.state = 1426; + this.state = 1414; this.columnDescriptor(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1427; + this.state = 1415; this.timeIntervalParamName(); - this.state = 1428; + this.state = 1416; this.match(FlinkSqlParser.DOUBLE_RIGHT_ARROW); - this.state = 1429; + this.state = 1417; this.timeIntervalExpression(); } break; @@ -6554,12 +6497,12 @@ export class FlinkSqlParser extends SQLParserBase { } public timeIntervalParamName(): TimeIntervalParamNameContext { let localContext = new TimeIntervalParamNameContext(this.context, this.state); - this.enterRule(localContext, 198, FlinkSqlParser.RULE_timeIntervalParamName); + this.enterRule(localContext, 196, FlinkSqlParser.RULE_timeIntervalParamName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1433; + this.state = 1421; _la = this.tokenStream.LA(1); if(!(_la === 250 || _la === 446 || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 23) !== 0))) { this.errorHandler.recoverInline(this); @@ -6586,17 +6529,17 @@ export class FlinkSqlParser extends SQLParserBase { } public columnDescriptor(): ColumnDescriptorContext { let localContext = new ColumnDescriptorContext(this.context, this.state); - this.enterRule(localContext, 200, FlinkSqlParser.RULE_columnDescriptor); + this.enterRule(localContext, 198, FlinkSqlParser.RULE_columnDescriptor); try { this.enterOuterAlt(localContext, 1); { - this.state = 1435; + this.state = 1423; this.match(FlinkSqlParser.KW_DESCRIPTOR); - this.state = 1436; + this.state = 1424; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1437; + this.state = 1425; this.columnName(); - this.state = 1438; + this.state = 1426; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6616,26 +6559,26 @@ export class FlinkSqlParser extends SQLParserBase { } public joinCondition(): JoinConditionContext { let localContext = new JoinConditionContext(this.context, this.state); - this.enterRule(localContext, 202, FlinkSqlParser.RULE_joinCondition); + this.enterRule(localContext, 200, FlinkSqlParser.RULE_joinCondition); try { - this.state = 1444; + this.state = 1432; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { - this.state = 1440; + this.state = 1428; this.match(FlinkSqlParser.KW_ON); - this.state = 1441; + this.state = 1429; this.booleanExpression(0); } break; case FlinkSqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 1442; + this.state = 1430; this.match(FlinkSqlParser.KW_USING); - this.state = 1443; + this.state = 1431; this.columnNameList(); } break; @@ -6659,13 +6602,13 @@ export class FlinkSqlParser extends SQLParserBase { } public whereClause(): WhereClauseContext { let localContext = new WhereClauseContext(this.context, this.state); - this.enterRule(localContext, 204, FlinkSqlParser.RULE_whereClause); + this.enterRule(localContext, 202, FlinkSqlParser.RULE_whereClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1446; + this.state = 1434; this.match(FlinkSqlParser.KW_WHERE); - this.state = 1447; + this.state = 1435; this.booleanExpression(0); } } @@ -6685,34 +6628,34 @@ export class FlinkSqlParser extends SQLParserBase { } public groupByClause(): GroupByClauseContext { let localContext = new GroupByClauseContext(this.context, this.state); - this.enterRule(localContext, 206, FlinkSqlParser.RULE_groupByClause); + this.enterRule(localContext, 204, FlinkSqlParser.RULE_groupByClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1449; + this.state = 1437; this.match(FlinkSqlParser.KW_GROUP); - this.state = 1450; + this.state = 1438; this.match(FlinkSqlParser.KW_BY); - this.state = 1451; + this.state = 1439; this.groupItemDefinition(); - this.state = 1456; + this.state = 1444; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 161, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 157, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1452; + this.state = 1440; this.match(FlinkSqlParser.COMMA); - this.state = 1453; + this.state = 1441; this.groupItemDefinition(); } } } - this.state = 1458; + this.state = 1446; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 161, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 157, this.context); } } } @@ -6732,124 +6675,124 @@ export class FlinkSqlParser extends SQLParserBase { } public groupItemDefinition(): GroupItemDefinitionContext { let localContext = new GroupItemDefinitionContext(this.context, this.state); - this.enterRule(localContext, 208, FlinkSqlParser.RULE_groupItemDefinition); + this.enterRule(localContext, 206, FlinkSqlParser.RULE_groupItemDefinition); let _la: number; try { - this.state = 1499; + this.state = 1487; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1459; + this.state = 1447; this.columnName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1460; + this.state = 1448; this.groupWindowFunction(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1461; + this.state = 1449; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1462; + this.state = 1450; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1463; + this.state = 1451; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1464; + this.state = 1452; this.expression(); - this.state = 1469; + this.state = 1457; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1465; + this.state = 1453; this.match(FlinkSqlParser.COMMA); - this.state = 1466; + this.state = 1454; this.expression(); } } - this.state = 1471; + this.state = 1459; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1472; + this.state = 1460; this.match(FlinkSqlParser.RR_BRACKET); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1474; + this.state = 1462; this.groupingSetsNotaionName(); - this.state = 1475; + this.state = 1463; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1476; + this.state = 1464; this.expression(); - this.state = 1481; + this.state = 1469; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1477; + this.state = 1465; this.match(FlinkSqlParser.COMMA); - this.state = 1478; + this.state = 1466; this.expression(); } } - this.state = 1483; + this.state = 1471; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1484; + this.state = 1472; this.match(FlinkSqlParser.RR_BRACKET); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1486; + this.state = 1474; this.groupingSets(); - this.state = 1487; + this.state = 1475; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1488; + this.state = 1476; this.groupItemDefinition(); - this.state = 1493; + this.state = 1481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1489; + this.state = 1477; this.match(FlinkSqlParser.COMMA); - this.state = 1490; + this.state = 1478; this.groupItemDefinition(); } } - this.state = 1495; + this.state = 1483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1496; + this.state = 1484; this.match(FlinkSqlParser.RR_BRACKET); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1498; + this.state = 1486; this.expression(); } break; @@ -6871,13 +6814,13 @@ export class FlinkSqlParser extends SQLParserBase { } public groupingSets(): GroupingSetsContext { let localContext = new GroupingSetsContext(this.context, this.state); - this.enterRule(localContext, 210, FlinkSqlParser.RULE_groupingSets); + this.enterRule(localContext, 208, FlinkSqlParser.RULE_groupingSets); try { this.enterOuterAlt(localContext, 1); { - this.state = 1501; + this.state = 1489; this.match(FlinkSqlParser.KW_GROUPING); - this.state = 1502; + this.state = 1490; this.match(FlinkSqlParser.KW_SETS); } } @@ -6897,12 +6840,12 @@ export class FlinkSqlParser extends SQLParserBase { } public groupingSetsNotaionName(): GroupingSetsNotaionNameContext { let localContext = new GroupingSetsNotaionNameContext(this.context, this.state); - this.enterRule(localContext, 212, FlinkSqlParser.RULE_groupingSetsNotaionName); + this.enterRule(localContext, 210, FlinkSqlParser.RULE_groupingSetsNotaionName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1504; + this.state = 1492; _la = this.tokenStream.LA(1); if(!(_la === 74 || _la === 320)) { this.errorHandler.recoverInline(this); @@ -6929,21 +6872,21 @@ export class FlinkSqlParser extends SQLParserBase { } public groupWindowFunction(): GroupWindowFunctionContext { let localContext = new GroupWindowFunctionContext(this.context, this.state); - this.enterRule(localContext, 214, FlinkSqlParser.RULE_groupWindowFunction); + this.enterRule(localContext, 212, FlinkSqlParser.RULE_groupWindowFunction); try { this.enterOuterAlt(localContext, 1); { - this.state = 1506; + this.state = 1494; this.groupWindowFunctionName(); - this.state = 1507; + this.state = 1495; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1508; + this.state = 1496; this.timeAttrColumn(); - this.state = 1509; + this.state = 1497; this.match(FlinkSqlParser.COMMA); - this.state = 1510; + this.state = 1498; this.timeIntervalExpression(); - this.state = 1511; + this.state = 1499; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6963,12 +6906,12 @@ export class FlinkSqlParser extends SQLParserBase { } public groupWindowFunctionName(): GroupWindowFunctionNameContext { let localContext = new GroupWindowFunctionNameContext(this.context, this.state); - this.enterRule(localContext, 216, FlinkSqlParser.RULE_groupWindowFunctionName); + this.enterRule(localContext, 214, FlinkSqlParser.RULE_groupWindowFunctionName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1513; + this.state = 1501; _la = this.tokenStream.LA(1); if(!(_la === 459 || _la === 492 || _la === 499)) { this.errorHandler.recoverInline(this); @@ -6995,11 +6938,11 @@ export class FlinkSqlParser extends SQLParserBase { } public timeAttrColumn(): TimeAttrColumnContext { let localContext = new TimeAttrColumnContext(this.context, this.state); - this.enterRule(localContext, 218, FlinkSqlParser.RULE_timeAttrColumn); + this.enterRule(localContext, 216, FlinkSqlParser.RULE_timeAttrColumn); try { this.enterOuterAlt(localContext, 1); { - this.state = 1515; + this.state = 1503; this.uid(); } } @@ -7019,13 +6962,13 @@ export class FlinkSqlParser extends SQLParserBase { } public havingClause(): HavingClauseContext { let localContext = new HavingClauseContext(this.context, this.state); - this.enterRule(localContext, 220, FlinkSqlParser.RULE_havingClause); + this.enterRule(localContext, 218, FlinkSqlParser.RULE_havingClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1517; + this.state = 1505; this.match(FlinkSqlParser.KW_HAVING); - this.state = 1518; + this.state = 1506; this.booleanExpression(0); } } @@ -7045,32 +6988,32 @@ export class FlinkSqlParser extends SQLParserBase { } public windowClause(): WindowClauseContext { let localContext = new WindowClauseContext(this.context, this.state); - this.enterRule(localContext, 222, FlinkSqlParser.RULE_windowClause); + this.enterRule(localContext, 220, FlinkSqlParser.RULE_windowClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1520; + this.state = 1508; this.match(FlinkSqlParser.KW_WINDOW); - this.state = 1521; + this.state = 1509; this.namedWindow(); - this.state = 1526; + this.state = 1514; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 166, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1522; + this.state = 1510; this.match(FlinkSqlParser.COMMA); - this.state = 1523; + this.state = 1511; this.namedWindow(); } } } - this.state = 1528; + this.state = 1516; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 166, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); } } } @@ -7090,15 +7033,15 @@ export class FlinkSqlParser extends SQLParserBase { } public namedWindow(): NamedWindowContext { let localContext = new NamedWindowContext(this.context, this.state); - this.enterRule(localContext, 224, FlinkSqlParser.RULE_namedWindow); + this.enterRule(localContext, 222, FlinkSqlParser.RULE_namedWindow); try { this.enterOuterAlt(localContext, 1); { - this.state = 1529; + this.state = 1517; localContext._name = this.errorCapturingIdentifier(); - this.state = 1530; + this.state = 1518; this.match(FlinkSqlParser.KW_AS); - this.state = 1531; + this.state = 1519; this.windowSpec(); } } @@ -7118,54 +7061,54 @@ export class FlinkSqlParser extends SQLParserBase { } public windowSpec(): WindowSpecContext { let localContext = new WindowSpecContext(this.context, this.state); - this.enterRule(localContext, 226, FlinkSqlParser.RULE_windowSpec); + this.enterRule(localContext, 224, FlinkSqlParser.RULE_windowSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1534; + this.state = 1522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 437)) & ~0x1F) === 0 && ((1 << (_la - 437)) & 4294967295) !== 0) || ((((_la - 469)) & ~0x1F) === 0 && ((1 << (_la - 469)) & 4294967295) !== 0) || ((((_la - 501)) & ~0x1F) === 0 && ((1 << (_la - 501)) & 15) !== 0) || ((((_la - 537)) & ~0x1F) === 0 && ((1 << (_la - 537)) & 19) !== 0)) { { - this.state = 1533; + this.state = 1521; localContext._name = this.errorCapturingIdentifier(); } } - this.state = 1536; + this.state = 1524; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1538; + this.state = 1526; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 268) { { - this.state = 1537; + this.state = 1525; this.partitionByClause(); } } - this.state = 1541; + this.state = 1529; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 258) { { - this.state = 1540; + this.state = 1528; this.orderByCaluse(); } } - this.state = 1544; + this.state = 1532; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 292 || _la === 322) { { - this.state = 1543; + this.state = 1531; this.windowFrame(); } } - this.state = 1546; + this.state = 1534; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -7185,95 +7128,95 @@ export class FlinkSqlParser extends SQLParserBase { } public matchRecognizeClause(): MatchRecognizeClauseContext { let localContext = new MatchRecognizeClauseContext(this.context, this.state); - this.enterRule(localContext, 228, FlinkSqlParser.RULE_matchRecognizeClause); + this.enterRule(localContext, 226, FlinkSqlParser.RULE_matchRecognizeClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1548; + this.state = 1536; this.match(FlinkSqlParser.KW_MATCH_RECOGNIZE); - this.state = 1549; + this.state = 1537; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1551; + this.state = 1539; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 268) { { - this.state = 1550; + this.state = 1538; this.partitionByClause(); } } - this.state = 1554; + this.state = 1542; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 258) { { - this.state = 1553; + this.state = 1541; this.orderByCaluse(); } } - this.state = 1557; + this.state = 1545; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 215) { { - this.state = 1556; + this.state = 1544; this.measuresClause(); } } - this.state = 1560; + this.state = 1548; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 5 || _la === 254) { { - this.state = 1559; + this.state = 1547; this.outputMode(); } } - this.state = 1563; + this.state = 1551; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 438) { { - this.state = 1562; + this.state = 1550; this.afterMatchStrategy(); } } - this.state = 1566; + this.state = 1554; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 271) { { - this.state = 1565; + this.state = 1553; this.patternDefination(); } } - this.state = 1568; + this.state = 1556; this.patternVariablesDefination(); - this.state = 1569; + this.state = 1557; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1574; + this.state = 1562; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 178, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 174, this.context) ) { case 1: { - this.state = 1571; + this.state = 1559; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 1570; + this.state = 1558; this.match(FlinkSqlParser.KW_AS); } } - this.state = 1573; + this.state = 1561; this.identifier(); } break; @@ -7296,34 +7239,34 @@ export class FlinkSqlParser extends SQLParserBase { } public orderByCaluse(): OrderByCaluseContext { let localContext = new OrderByCaluseContext(this.context, this.state); - this.enterRule(localContext, 230, FlinkSqlParser.RULE_orderByCaluse); + this.enterRule(localContext, 228, FlinkSqlParser.RULE_orderByCaluse); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1576; + this.state = 1564; this.match(FlinkSqlParser.KW_ORDER); - this.state = 1577; + this.state = 1565; this.match(FlinkSqlParser.KW_BY); - this.state = 1578; + this.state = 1566; this.orderItemDefition(); - this.state = 1583; + this.state = 1571; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 179, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 175, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1579; + this.state = 1567; this.match(FlinkSqlParser.COMMA); - this.state = 1580; + this.state = 1568; this.orderItemDefition(); } } } - this.state = 1585; + this.state = 1573; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 179, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 175, this.context); } } } @@ -7343,19 +7286,19 @@ export class FlinkSqlParser extends SQLParserBase { } public orderItemDefition(): OrderItemDefitionContext { let localContext = new OrderItemDefitionContext(this.context, this.state); - this.enterRule(localContext, 232, FlinkSqlParser.RULE_orderItemDefition); + this.enterRule(localContext, 230, FlinkSqlParser.RULE_orderItemDefition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1586; + this.state = 1574; this.columnName(); - this.state = 1588; + this.state = 1576; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 180, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 176, this.context) ) { case 1: { - this.state = 1587; + this.state = 1575; localContext._ordering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 439 || _la === 450)) { @@ -7368,14 +7311,14 @@ export class FlinkSqlParser extends SQLParserBase { } break; } - this.state = 1592; + this.state = 1580; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 181, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 177, this.context) ) { case 1: { - this.state = 1590; + this.state = 1578; this.match(FlinkSqlParser.KW_NULLS); - this.state = 1591; + this.state = 1579; localContext._nullOrder = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 457 || _la === 467)) { @@ -7406,18 +7349,18 @@ export class FlinkSqlParser extends SQLParserBase { } public limitClause(): LimitClauseContext { let localContext = new LimitClauseContext(this.context, this.state); - this.enterRule(localContext, 234, FlinkSqlParser.RULE_limitClause); + this.enterRule(localContext, 232, FlinkSqlParser.RULE_limitClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1594; + this.state = 1582; this.match(FlinkSqlParser.KW_LIMIT); - this.state = 1597; + this.state = 1585; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_ALL: { - this.state = 1595; + this.state = 1583; this.match(FlinkSqlParser.KW_ALL); } break; @@ -7573,7 +7516,7 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.BIT_STRING: case FlinkSqlParser.ID_LITERAL: { - this.state = 1596; + this.state = 1584; localContext._limit = this.expression(); } break; @@ -7598,30 +7541,30 @@ export class FlinkSqlParser extends SQLParserBase { } public partitionByClause(): PartitionByClauseContext { let localContext = new PartitionByClauseContext(this.context, this.state); - this.enterRule(localContext, 236, FlinkSqlParser.RULE_partitionByClause); + this.enterRule(localContext, 234, FlinkSqlParser.RULE_partitionByClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1599; + this.state = 1587; this.match(FlinkSqlParser.KW_PARTITION); - this.state = 1600; + this.state = 1588; this.match(FlinkSqlParser.KW_BY); - this.state = 1601; + this.state = 1589; this.columnName(); - this.state = 1606; + this.state = 1594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1602; + this.state = 1590; this.match(FlinkSqlParser.COMMA); - this.state = 1603; + this.state = 1591; this.columnName(); } } - this.state = 1608; + this.state = 1596; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -7643,16 +7586,16 @@ export class FlinkSqlParser extends SQLParserBase { } public quantifiers(): QuantifiersContext { let localContext = new QuantifiersContext(this.context, this.state); - this.enterRule(localContext, 238, FlinkSqlParser.RULE_quantifiers); + this.enterRule(localContext, 236, FlinkSqlParser.RULE_quantifiers); try { - this.state = 1625; + this.state = 1613; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 180, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { { - this.state = 1609; + this.state = 1597; this.match(FlinkSqlParser.ASTERISK_SIGN); } } @@ -7661,7 +7604,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 2); { { - this.state = 1610; + this.state = 1598; this.match(FlinkSqlParser.ADD_SIGN); } } @@ -7670,7 +7613,7 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 3); { { - this.state = 1611; + this.state = 1599; this.match(FlinkSqlParser.QUESTION_MARK_SIGN); } } @@ -7679,15 +7622,15 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 4); { { - this.state = 1612; + this.state = 1600; this.match(FlinkSqlParser.LB_BRACKET); - this.state = 1613; + this.state = 1601; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1614; + this.state = 1602; this.match(FlinkSqlParser.COMMA); - this.state = 1615; + this.state = 1603; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1616; + this.state = 1604; this.match(FlinkSqlParser.RB_BRACKET); } } @@ -7696,13 +7639,13 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 5); { { - this.state = 1617; + this.state = 1605; this.match(FlinkSqlParser.LB_BRACKET); - this.state = 1618; + this.state = 1606; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1619; + this.state = 1607; this.match(FlinkSqlParser.COMMA); - this.state = 1620; + this.state = 1608; this.match(FlinkSqlParser.RB_BRACKET); } } @@ -7711,13 +7654,13 @@ export class FlinkSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 6); { { - this.state = 1621; + this.state = 1609; this.match(FlinkSqlParser.LB_BRACKET); - this.state = 1622; + this.state = 1610; this.match(FlinkSqlParser.COMMA); - this.state = 1623; + this.state = 1611; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1624; + this.state = 1612; this.match(FlinkSqlParser.RB_BRACKET); } } @@ -7740,28 +7683,28 @@ export class FlinkSqlParser extends SQLParserBase { } public measuresClause(): MeasuresClauseContext { let localContext = new MeasuresClauseContext(this.context, this.state); - this.enterRule(localContext, 240, FlinkSqlParser.RULE_measuresClause); + this.enterRule(localContext, 238, FlinkSqlParser.RULE_measuresClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1627; + this.state = 1615; this.match(FlinkSqlParser.KW_MEASURES); - this.state = 1628; + this.state = 1616; this.projectItemDefinition(); - this.state = 1633; + this.state = 1621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1629; + this.state = 1617; this.match(FlinkSqlParser.COMMA); - this.state = 1630; + this.state = 1618; this.projectItemDefinition(); } } - this.state = 1635; + this.state = 1623; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -7783,37 +7726,37 @@ export class FlinkSqlParser extends SQLParserBase { } public patternDefination(): PatternDefinationContext { let localContext = new PatternDefinationContext(this.context, this.state); - this.enterRule(localContext, 242, FlinkSqlParser.RULE_patternDefination); + this.enterRule(localContext, 240, FlinkSqlParser.RULE_patternDefination); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1636; + this.state = 1624; this.match(FlinkSqlParser.KW_PATTERN); - this.state = 1637; + this.state = 1625; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1639; + this.state = 1627; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1638; + this.state = 1626; this.patternVariable(); } } - this.state = 1641; + this.state = 1629; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 538 || _la === 541); - this.state = 1643; + this.state = 1631; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1645; + this.state = 1633; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 434) { { - this.state = 1644; + this.state = 1632; this.withinClause(); } } @@ -7836,19 +7779,19 @@ export class FlinkSqlParser extends SQLParserBase { } public patternVariable(): PatternVariableContext { let localContext = new PatternVariableContext(this.context, this.state); - this.enterRule(localContext, 244, FlinkSqlParser.RULE_patternVariable); + this.enterRule(localContext, 242, FlinkSqlParser.RULE_patternVariable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1647; + this.state = 1635; this.unquotedIdentifier(); - this.state = 1649; + this.state = 1637; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 518)) & ~0x1F) === 0 && ((1 << (_la - 518)) & 135681) !== 0)) { { - this.state = 1648; + this.state = 1636; this.quantifiers(); } } @@ -7871,34 +7814,34 @@ export class FlinkSqlParser extends SQLParserBase { } public outputMode(): OutputModeContext { let localContext = new OutputModeContext(this.context, this.state); - this.enterRule(localContext, 246, FlinkSqlParser.RULE_outputMode); + this.enterRule(localContext, 244, FlinkSqlParser.RULE_outputMode); try { - this.state = 1659; + this.state = 1647; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 1651; + this.state = 1639; this.match(FlinkSqlParser.KW_ALL); - this.state = 1652; + this.state = 1640; this.match(FlinkSqlParser.KW_ROWS); - this.state = 1653; + this.state = 1641; this.match(FlinkSqlParser.KW_PER); - this.state = 1654; + this.state = 1642; this.match(FlinkSqlParser.KW_MATCH); } break; case FlinkSqlParser.KW_ONE: this.enterOuterAlt(localContext, 2); { - this.state = 1655; + this.state = 1643; this.match(FlinkSqlParser.KW_ONE); - this.state = 1656; + this.state = 1644; this.match(FlinkSqlParser.KW_ROW); - this.state = 1657; + this.state = 1645; this.match(FlinkSqlParser.KW_PER); - this.state = 1658; + this.state = 1646; this.match(FlinkSqlParser.KW_MATCH); } break; @@ -7922,76 +7865,76 @@ export class FlinkSqlParser extends SQLParserBase { } public afterMatchStrategy(): AfterMatchStrategyContext { let localContext = new AfterMatchStrategyContext(this.context, this.state); - this.enterRule(localContext, 248, FlinkSqlParser.RULE_afterMatchStrategy); + this.enterRule(localContext, 246, FlinkSqlParser.RULE_afterMatchStrategy); try { - this.state = 1685; + this.state = 1673; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1661; + this.state = 1649; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1662; + this.state = 1650; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1663; + this.state = 1651; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1664; + this.state = 1652; this.match(FlinkSqlParser.KW_PAST); - this.state = 1665; + this.state = 1653; this.match(FlinkSqlParser.KW_LAST); - this.state = 1666; + this.state = 1654; this.match(FlinkSqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1667; + this.state = 1655; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1668; + this.state = 1656; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1669; + this.state = 1657; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1670; + this.state = 1658; this.match(FlinkSqlParser.KW_TO); - this.state = 1671; + this.state = 1659; this.match(FlinkSqlParser.KW_NEXT); - this.state = 1672; + this.state = 1660; this.match(FlinkSqlParser.KW_ROW); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1673; + this.state = 1661; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1674; + this.state = 1662; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1675; + this.state = 1663; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1676; + this.state = 1664; this.match(FlinkSqlParser.KW_TO); - this.state = 1677; + this.state = 1665; this.match(FlinkSqlParser.KW_LAST); - this.state = 1678; + this.state = 1666; this.unquotedIdentifier(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1679; + this.state = 1667; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1680; + this.state = 1668; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1681; + this.state = 1669; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1682; + this.state = 1670; this.match(FlinkSqlParser.KW_TO); - this.state = 1683; + this.state = 1671; this.match(FlinkSqlParser.KW_FIRST); - this.state = 1684; + this.state = 1672; this.unquotedIdentifier(); } break; @@ -8013,28 +7956,28 @@ export class FlinkSqlParser extends SQLParserBase { } public patternVariablesDefination(): PatternVariablesDefinationContext { let localContext = new PatternVariablesDefinationContext(this.context, this.state); - this.enterRule(localContext, 250, FlinkSqlParser.RULE_patternVariablesDefination); + this.enterRule(localContext, 248, FlinkSqlParser.RULE_patternVariablesDefination); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1687; + this.state = 1675; this.match(FlinkSqlParser.KW_DEFINE); - this.state = 1688; + this.state = 1676; this.projectItemDefinition(); - this.state = 1693; + this.state = 1681; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1689; + this.state = 1677; this.match(FlinkSqlParser.COMMA); - this.state = 1690; + this.state = 1678; this.projectItemDefinition(); } } - this.state = 1695; + this.state = 1683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8056,34 +7999,34 @@ export class FlinkSqlParser extends SQLParserBase { } public windowFrame(): WindowFrameContext { let localContext = new WindowFrameContext(this.context, this.state); - this.enterRule(localContext, 252, FlinkSqlParser.RULE_windowFrame); + this.enterRule(localContext, 250, FlinkSqlParser.RULE_windowFrame); try { - this.state = 1705; + this.state = 1693; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_RANGE: this.enterOuterAlt(localContext, 1); { - this.state = 1696; + this.state = 1684; this.match(FlinkSqlParser.KW_RANGE); - this.state = 1697; + this.state = 1685; this.match(FlinkSqlParser.KW_BETWEEN); - this.state = 1698; + this.state = 1686; this.timeIntervalExpression(); - this.state = 1699; + this.state = 1687; this.frameBound(); } break; case FlinkSqlParser.KW_ROWS: this.enterOuterAlt(localContext, 2); { - this.state = 1701; + this.state = 1689; this.match(FlinkSqlParser.KW_ROWS); - this.state = 1702; + this.state = 1690; this.match(FlinkSqlParser.KW_BETWEEN); - this.state = 1703; + this.state = 1691; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1704; + this.state = 1692; this.frameBound(); } break; @@ -8107,17 +8050,17 @@ export class FlinkSqlParser extends SQLParserBase { } public frameBound(): FrameBoundContext { let localContext = new FrameBoundContext(this.context, this.state); - this.enterRule(localContext, 254, FlinkSqlParser.RULE_frameBound); + this.enterRule(localContext, 252, FlinkSqlParser.RULE_frameBound); try { this.enterOuterAlt(localContext, 1); { - this.state = 1707; + this.state = 1695; this.match(FlinkSqlParser.KW_PRECEDING); - this.state = 1708; + this.state = 1696; this.match(FlinkSqlParser.KW_AND); - this.state = 1709; + this.state = 1697; this.match(FlinkSqlParser.KW_CURRENT); - this.state = 1710; + this.state = 1698; this.match(FlinkSqlParser.KW_ROW); } } @@ -8137,13 +8080,13 @@ export class FlinkSqlParser extends SQLParserBase { } public withinClause(): WithinClauseContext { let localContext = new WithinClauseContext(this.context, this.state); - this.enterRule(localContext, 256, FlinkSqlParser.RULE_withinClause); + this.enterRule(localContext, 254, FlinkSqlParser.RULE_withinClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1712; + this.state = 1700; this.match(FlinkSqlParser.KW_WITHIN); - this.state = 1713; + this.state = 1701; this.timeIntervalExpression(); } } @@ -8163,11 +8106,11 @@ export class FlinkSqlParser extends SQLParserBase { } public expression(): ExpressionContext { let localContext = new ExpressionContext(this.context, this.state); - this.enterRule(localContext, 258, FlinkSqlParser.RULE_expression); + this.enterRule(localContext, 256, FlinkSqlParser.RULE_expression); try { this.enterOuterAlt(localContext, 1); { - this.state = 1715; + this.state = 1703; this.booleanExpression(0); } } @@ -8197,25 +8140,25 @@ export class FlinkSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new BooleanExpressionContext(this.context, parentState); let previousContext = localContext; - let _startState = 260; - this.enterRecursionRule(localContext, 260, FlinkSqlParser.RULE_booleanExpression, _p); + let _startState = 258; + this.enterRecursionRule(localContext, 258, FlinkSqlParser.RULE_booleanExpression, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1729; + this.state = 1717; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 194, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { case 1: { localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1718; + this.state = 1706; this.match(FlinkSqlParser.KW_NOT); - this.state = 1719; + this.state = 1707; this.booleanExpression(6); } break; @@ -8224,13 +8167,13 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ExistsContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1720; + this.state = 1708; this.match(FlinkSqlParser.KW_EXISTS); - this.state = 1721; + this.state = 1709; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1722; + this.state = 1710; this.queryStatement(0); - this.state = 1723; + this.state = 1711; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -8239,14 +8182,14 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new PredicatedContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1725; + this.state = 1713; this.valueExpression(0); - this.state = 1727; + this.state = 1715; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 193, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 189, this.context) ) { case 1: { - this.state = 1726; + this.state = 1714; this.predicate(); } break; @@ -8255,9 +8198,9 @@ export class FlinkSqlParser extends SQLParserBase { break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1745; + this.state = 1733; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 197, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 193, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -8265,21 +8208,21 @@ export class FlinkSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 1743; + this.state = 1731; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 196, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 192, this.context) ) { case 1: { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_booleanExpression); - this.state = 1731; + this.state = 1719; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 1732; + this.state = 1720; (localContext as LogicalBinaryContext)._operator = this.match(FlinkSqlParser.KW_AND); - this.state = 1733; + this.state = 1721; (localContext as LogicalBinaryContext)._right = this.booleanExpression(4); } break; @@ -8288,13 +8231,13 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_booleanExpression); - this.state = 1734; + this.state = 1722; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1735; + this.state = 1723; (localContext as LogicalBinaryContext)._operator = this.match(FlinkSqlParser.KW_OR); - this.state = 1736; + this.state = 1724; (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -8302,23 +8245,23 @@ export class FlinkSqlParser extends SQLParserBase { { localContext = new LogicalNestedContext(new BooleanExpressionContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_booleanExpression); - this.state = 1737; + this.state = 1725; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 1738; + this.state = 1726; this.match(FlinkSqlParser.KW_IS); - this.state = 1740; + this.state = 1728; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1739; + this.state = 1727; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1742; + this.state = 1730; (localContext as LogicalNestedContext)._kind = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 140 || _la === 244 || _la === 397 || _la === 404)) { @@ -8333,9 +8276,9 @@ export class FlinkSqlParser extends SQLParserBase { } } } - this.state = 1747; + this.state = 1735; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 197, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 193, this.context); } } } @@ -8355,33 +8298,33 @@ export class FlinkSqlParser extends SQLParserBase { } public predicate(): PredicateContext { let localContext = new PredicateContext(this.context, this.state); - this.enterRule(localContext, 262, FlinkSqlParser.RULE_predicate); + this.enterRule(localContext, 260, FlinkSqlParser.RULE_predicate); let _la: number; try { - this.state = 1815; + this.state = 1803; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1749; + this.state = 1737; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1748; + this.state = 1736; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1751; + this.state = 1739; localContext._kind = this.match(FlinkSqlParser.KW_BETWEEN); - this.state = 1753; + this.state = 1741; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 19 || _la === 369) { { - this.state = 1752; + this.state = 1740; _la = this.tokenStream.LA(1); if(!(_la === 19 || _la === 369)) { this.errorHandler.recoverInline(this); @@ -8393,131 +8336,131 @@ export class FlinkSqlParser extends SQLParserBase { } } - this.state = 1755; + this.state = 1743; localContext._lower = this.valueExpression(0); - this.state = 1756; + this.state = 1744; this.match(FlinkSqlParser.KW_AND); - this.state = 1757; + this.state = 1745; localContext._upper = this.valueExpression(0); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1760; + this.state = 1748; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1759; + this.state = 1747; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1762; + this.state = 1750; localContext._kind = this.match(FlinkSqlParser.KW_IN); - this.state = 1763; + this.state = 1751; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1764; + this.state = 1752; this.expression(); - this.state = 1769; + this.state = 1757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1765; + this.state = 1753; this.match(FlinkSqlParser.COMMA); - this.state = 1766; + this.state = 1754; this.expression(); } } - this.state = 1771; + this.state = 1759; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1772; + this.state = 1760; this.match(FlinkSqlParser.RR_BRACKET); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1775; + this.state = 1763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1774; + this.state = 1762; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1777; + this.state = 1765; localContext._kind = this.match(FlinkSqlParser.KW_IN); - this.state = 1778; + this.state = 1766; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1779; + this.state = 1767; this.queryStatement(0); - this.state = 1780; + this.state = 1768; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1782; + this.state = 1770; localContext._kind = this.match(FlinkSqlParser.KW_EXISTS); - this.state = 1783; + this.state = 1771; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1784; + this.state = 1772; this.queryStatement(0); - this.state = 1785; + this.state = 1773; this.match(FlinkSqlParser.RR_BRACKET); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1788; + this.state = 1776; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1787; + this.state = 1775; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1790; + this.state = 1778; localContext._kind = this.match(FlinkSqlParser.KW_RLIKE); - this.state = 1791; + this.state = 1779; localContext._pattern = this.valueExpression(0); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1792; + this.state = 1780; this.likePredicate(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1793; + this.state = 1781; this.match(FlinkSqlParser.KW_IS); - this.state = 1795; + this.state = 1783; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1794; + this.state = 1782; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1797; + this.state = 1785; localContext._kind = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 140 || _la === 244 || _la === 397 || _la === 404)) { @@ -8532,53 +8475,53 @@ export class FlinkSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1798; + this.state = 1786; this.match(FlinkSqlParser.KW_IS); - this.state = 1800; + this.state = 1788; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1799; + this.state = 1787; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1802; + this.state = 1790; localContext._kind = this.match(FlinkSqlParser.KW_DISTINCT); - this.state = 1803; + this.state = 1791; this.match(FlinkSqlParser.KW_FROM); - this.state = 1804; + this.state = 1792; localContext._right = this.valueExpression(0); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1806; + this.state = 1794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1805; + this.state = 1793; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1808; + this.state = 1796; localContext._kind = this.match(FlinkSqlParser.KW_SIMILAR); - this.state = 1809; + this.state = 1797; this.match(FlinkSqlParser.KW_TO); - this.state = 1810; + this.state = 1798; localContext._right = this.valueExpression(0); - this.state = 1813; + this.state = 1801; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 207, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 203, this.context) ) { case 1: { - this.state = 1811; + this.state = 1799; this.match(FlinkSqlParser.KW_ESCAPE); - this.state = 1812; + this.state = 1800; this.stringLiteral(); } break; @@ -8603,28 +8546,28 @@ export class FlinkSqlParser extends SQLParserBase { } public likePredicate(): LikePredicateContext { let localContext = new LikePredicateContext(this.context, this.state); - this.enterRule(localContext, 264, FlinkSqlParser.RULE_likePredicate); + this.enterRule(localContext, 262, FlinkSqlParser.RULE_likePredicate); let _la: number; try { - this.state = 1846; + this.state = 1834; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 214, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1818; + this.state = 1806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1817; + this.state = 1805; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1820; + this.state = 1808; localContext._kind = this.match(FlinkSqlParser.KW_LIKE); - this.state = 1821; + this.state = 1809; localContext._quantifier = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 5 || _la === 11)) { @@ -8634,40 +8577,40 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1835; + this.state = 1823; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 207, this.context) ) { case 1: { - this.state = 1822; + this.state = 1810; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1823; + this.state = 1811; this.match(FlinkSqlParser.RR_BRACKET); } break; case 2: { - this.state = 1824; + this.state = 1812; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1825; + this.state = 1813; this.expression(); - this.state = 1830; + this.state = 1818; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1826; + this.state = 1814; this.match(FlinkSqlParser.COMMA); - this.state = 1827; + this.state = 1815; this.expression(); } } - this.state = 1832; + this.state = 1820; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1833; + this.state = 1821; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -8677,28 +8620,28 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1838; + this.state = 1826; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 1837; + this.state = 1825; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1840; + this.state = 1828; localContext._kind = this.match(FlinkSqlParser.KW_LIKE); - this.state = 1841; + this.state = 1829; localContext._pattern = this.valueExpression(0); - this.state = 1844; + this.state = 1832; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 209, this.context) ) { case 1: { - this.state = 1842; + this.state = 1830; this.match(FlinkSqlParser.KW_ESCAPE); - this.state = 1843; + this.state = 1831; this.stringLiteral(); } break; @@ -8733,23 +8676,23 @@ export class FlinkSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new ValueExpressionContext(this.context, parentState); let previousContext = localContext; - let _startState = 266; - this.enterRecursionRule(localContext, 266, FlinkSqlParser.RULE_valueExpression, _p); + let _startState = 264; + this.enterRecursionRule(localContext, 264, FlinkSqlParser.RULE_valueExpression, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1852; + this.state = 1840; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 215, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { case 1: { localContext = new ValueExpressionDefaultContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1849; + this.state = 1837; this.primaryExpression(0); } break; @@ -8758,7 +8701,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ArithmeticUnaryContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1850; + this.state = 1838; (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3145729) !== 0))) { @@ -8768,15 +8711,15 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1851; + this.state = 1839; this.valueExpression(7); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1875; + this.state = 1863; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 217, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 213, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -8784,19 +8727,19 @@ export class FlinkSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 1873; + this.state = 1861; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 216, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 212, this.context) ) { case 1: { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1854; + this.state = 1842; if (!(this.precpred(this.context, 6))) { throw this.createFailedPredicateException("this.precpred(this.context, 6)"); } - this.state = 1855; + this.state = 1843; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 452 || ((((_la - 527)) & ~0x1F) === 0 && ((1 << (_la - 527)) & 145) !== 0))) { @@ -8806,7 +8749,7 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1856; + this.state = 1844; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(7); } break; @@ -8815,11 +8758,11 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1857; + this.state = 1845; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 1858; + this.state = 1846; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 529)) & ~0x1F) === 0 && ((1 << (_la - 529)) & 11) !== 0))) { @@ -8829,7 +8772,7 @@ export class FlinkSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1859; + this.state = 1847; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(6); } break; @@ -8838,13 +8781,13 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1860; + this.state = 1848; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 1861; + this.state = 1849; (localContext as ArithmeticBinaryContext)._operator = this.match(FlinkSqlParser.BIT_AND_OP); - this.state = 1862; + this.state = 1850; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(5); } break; @@ -8853,13 +8796,13 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1863; + this.state = 1851; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 1864; + this.state = 1852; (localContext as ArithmeticBinaryContext)._operator = this.match(FlinkSqlParser.BIT_XOR_OP); - this.state = 1865; + this.state = 1853; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -8868,13 +8811,13 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1866; + this.state = 1854; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1867; + this.state = 1855; (localContext as ArithmeticBinaryContext)._operator = this.match(FlinkSqlParser.BIT_OR_OP); - this.state = 1868; + this.state = 1856; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -8883,22 +8826,22 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ComparisonContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ComparisonContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1869; + this.state = 1857; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 1870; + this.state = 1858; this.comparisonOperator(); - this.state = 1871; + this.state = 1859; (localContext as ComparisonContext)._right = this.valueExpression(2); } break; } } } - this.state = 1877; + this.state = 1865; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 217, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 213, this.context); } } } @@ -8928,51 +8871,51 @@ export class FlinkSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new PrimaryExpressionContext(this.context, parentState); let previousContext = localContext; - let _startState = 268; - this.enterRecursionRule(localContext, 268, FlinkSqlParser.RULE_primaryExpression, _p); + let _startState = 266; + this.enterRecursionRule(localContext, 266, FlinkSqlParser.RULE_primaryExpression, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1970; + this.state = 1958; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 227, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 223, this.context) ) { case 1: { localContext = new SearchedCaseContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1879; + this.state = 1867; this.match(FlinkSqlParser.KW_CASE); - this.state = 1881; + this.state = 1869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1880; + this.state = 1868; this.whenClause(); } } - this.state = 1883; + this.state = 1871; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 428); - this.state = 1887; + this.state = 1875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 120) { { - this.state = 1885; + this.state = 1873; this.match(FlinkSqlParser.KW_ELSE); - this.state = 1886; + this.state = 1874; (localContext as SearchedCaseContext)._elseExpression = this.expression(); } } - this.state = 1889; + this.state = 1877; this.match(FlinkSqlParser.KW_END); } break; @@ -8981,37 +8924,37 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new SimpleCaseContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1891; + this.state = 1879; this.match(FlinkSqlParser.KW_CASE); - this.state = 1892; + this.state = 1880; (localContext as SimpleCaseContext)._value = this.expression(); - this.state = 1894; + this.state = 1882; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1893; + this.state = 1881; this.whenClause(); } } - this.state = 1896; + this.state = 1884; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 428); - this.state = 1900; + this.state = 1888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 120) { { - this.state = 1898; + this.state = 1886; this.match(FlinkSqlParser.KW_ELSE); - this.state = 1899; + this.state = 1887; (localContext as SimpleCaseContext)._elseExpression = this.expression(); } } - this.state = 1902; + this.state = 1890; this.match(FlinkSqlParser.KW_END); } break; @@ -9020,17 +8963,17 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new CastContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1904; + this.state = 1892; this.match(FlinkSqlParser.KW_CAST); - this.state = 1905; + this.state = 1893; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1906; + this.state = 1894; this.expression(); - this.state = 1907; + this.state = 1895; this.match(FlinkSqlParser.KW_AS); - this.state = 1908; + this.state = 1896; this.columnType(); - this.state = 1909; + this.state = 1897; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9039,25 +8982,25 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new FirstContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1911; + this.state = 1899; this.match(FlinkSqlParser.KW_FIRST); - this.state = 1912; + this.state = 1900; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1913; + this.state = 1901; this.expression(); - this.state = 1916; + this.state = 1904; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 461) { { - this.state = 1914; + this.state = 1902; this.match(FlinkSqlParser.KW_IGNORE); - this.state = 1915; + this.state = 1903; this.match(FlinkSqlParser.KW_NULLS); } } - this.state = 1918; + this.state = 1906; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9066,25 +9009,25 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new LastContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1920; + this.state = 1908; this.match(FlinkSqlParser.KW_LAST); - this.state = 1921; + this.state = 1909; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1922; + this.state = 1910; this.expression(); - this.state = 1925; + this.state = 1913; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 461) { { - this.state = 1923; + this.state = 1911; this.match(FlinkSqlParser.KW_IGNORE); - this.state = 1924; + this.state = 1912; this.match(FlinkSqlParser.KW_NULLS); } } - this.state = 1927; + this.state = 1915; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9093,17 +9036,17 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new PositionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1929; + this.state = 1917; this.match(FlinkSqlParser.KW_POSITION); - this.state = 1930; + this.state = 1918; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1931; + this.state = 1919; (localContext as PositionContext)._substr = this.valueExpression(0); - this.state = 1932; + this.state = 1920; this.match(FlinkSqlParser.KW_IN); - this.state = 1933; + this.state = 1921; (localContext as PositionContext)._str = this.valueExpression(0); - this.state = 1934; + this.state = 1922; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9112,7 +9055,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ConstantDefaultContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1936; + this.state = 1924; this.constant(); } break; @@ -9121,7 +9064,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new StarContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1937; + this.state = 1925; this.match(FlinkSqlParser.ASTERISK_SIGN); } break; @@ -9130,11 +9073,11 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new StarContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1938; + this.state = 1926; this.uid(); - this.state = 1939; + this.state = 1927; this.match(FlinkSqlParser.DOT); - this.state = 1940; + this.state = 1928; this.match(FlinkSqlParser.ASTERISK_SIGN); } break; @@ -9143,11 +9086,11 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new SubqueryExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1942; + this.state = 1930; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1943; + this.state = 1931; this.queryStatement(0); - this.state = 1944; + this.state = 1932; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9156,47 +9099,47 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1946; + this.state = 1934; this.functionName(); - this.state = 1947; + this.state = 1935; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1959; + this.state = 1947; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 8396848) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 10489249) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1883341377) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 201330753) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 337641555) !== 0) || ((((_la - 182)) & ~0x1F) === 0 && ((1 << (_la - 182)) & 244224001) !== 0) || ((((_la - 214)) & ~0x1F) === 0 && ((1 << (_la - 214)) & 3892347713) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & 537530369) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 131185) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 14681219) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 3238528833) !== 0) || ((((_la - 427)) & ~0x1F) === 0 && ((1 << (_la - 427)) & 4294966785) !== 0) || ((((_la - 459)) & ~0x1F) === 0 && ((1 << (_la - 459)) & 4294967295) !== 0) || ((((_la - 491)) & ~0x1F) === 0 && ((1 << (_la - 491)) & 33832959) !== 0) || ((((_la - 527)) & ~0x1F) === 0 && ((1 << (_la - 527)) & 31757) !== 0)) { { - this.state = 1949; + this.state = 1937; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 224, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { case 1: { - this.state = 1948; + this.state = 1936; this.setQuantifier(); } break; } - this.state = 1951; + this.state = 1939; this.functionParam(); - this.state = 1956; + this.state = 1944; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 1952; + this.state = 1940; this.match(FlinkSqlParser.COMMA); - this.state = 1953; + this.state = 1941; this.functionParam(); } } - this.state = 1958; + this.state = 1946; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1961; + this.state = 1949; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9205,7 +9148,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ColumnReferenceContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1963; + this.state = 1951; this.identifier(); } break; @@ -9214,7 +9157,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new DereferenceContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1964; + this.state = 1952; this.dereferenceDefinition(); } break; @@ -9223,11 +9166,11 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new ParenthesizedExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1965; + this.state = 1953; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1966; + this.state = 1954; this.expression(); - this.state = 1967; + this.state = 1955; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9236,15 +9179,15 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new DateFunctionExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1969; + this.state = 1957; this.match(FlinkSqlParser.KW_CURRENT_TIMESTAMP); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1979; + this.state = 1967; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 228, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 224, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -9256,22 +9199,22 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as SubscriptContext)._value = previousContext; this.pushNewRecursionContext(localContext, _startState, FlinkSqlParser.RULE_primaryExpression); - this.state = 1972; + this.state = 1960; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 1973; + this.state = 1961; this.match(FlinkSqlParser.LS_BRACKET); - this.state = 1974; + this.state = 1962; (localContext as SubscriptContext)._index = this.valueExpression(0); - this.state = 1975; + this.state = 1963; this.match(FlinkSqlParser.RS_BRACKET); } } } - this.state = 1981; + this.state = 1969; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 228, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 224, this.context); } } } @@ -9291,11 +9234,11 @@ export class FlinkSqlParser extends SQLParserBase { } public functionNameCreate(): FunctionNameCreateContext { let localContext = new FunctionNameCreateContext(this.context, this.state); - this.enterRule(localContext, 270, FlinkSqlParser.RULE_functionNameCreate); + this.enterRule(localContext, 268, FlinkSqlParser.RULE_functionNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 1982; + this.state = 1970; this.uid(); } } @@ -9315,22 +9258,22 @@ export class FlinkSqlParser extends SQLParserBase { } public functionName(): FunctionNameContext { let localContext = new FunctionNameContext(this.context, this.state); - this.enterRule(localContext, 272, FlinkSqlParser.RULE_functionName); + this.enterRule(localContext, 270, FlinkSqlParser.RULE_functionName); try { - this.state = 1986; + this.state = 1974; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 229, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 225, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1984; + this.state = 1972; this.reservedKeywordsUsedAsFuncName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1985; + this.state = 1973; this.uid(); } break; @@ -9352,36 +9295,36 @@ export class FlinkSqlParser extends SQLParserBase { } public functionParam(): FunctionParamContext { let localContext = new FunctionParamContext(this.context, this.state); - this.enterRule(localContext, 274, FlinkSqlParser.RULE_functionParam); + this.enterRule(localContext, 272, FlinkSqlParser.RULE_functionParam); try { - this.state = 1992; + this.state = 1980; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 226, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1988; + this.state = 1976; this.reservedKeywordsUsedAsFuncParam(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1989; + this.state = 1977; this.timeIntervalUnit(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1990; + this.state = 1978; this.timePointUnit(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1991; + this.state = 1979; this.expression(); } break; @@ -9403,11 +9346,11 @@ export class FlinkSqlParser extends SQLParserBase { } public dereferenceDefinition(): DereferenceDefinitionContext { let localContext = new DereferenceDefinitionContext(this.context, this.state); - this.enterRule(localContext, 276, FlinkSqlParser.RULE_dereferenceDefinition); + this.enterRule(localContext, 274, FlinkSqlParser.RULE_dereferenceDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1994; + this.state = 1982; this.uid(); } } @@ -9427,11 +9370,11 @@ export class FlinkSqlParser extends SQLParserBase { } public correlationName(): CorrelationNameContext { let localContext = new CorrelationNameContext(this.context, this.state); - this.enterRule(localContext, 278, FlinkSqlParser.RULE_correlationName); + this.enterRule(localContext, 276, FlinkSqlParser.RULE_correlationName); try { this.enterOuterAlt(localContext, 1); { - this.state = 1996; + this.state = 1984; this.identifier(); } } @@ -9451,22 +9394,22 @@ export class FlinkSqlParser extends SQLParserBase { } public qualifiedName(): QualifiedNameContext { let localContext = new QualifiedNameContext(this.context, this.state); - this.enterRule(localContext, 280, FlinkSqlParser.RULE_qualifiedName); + this.enterRule(localContext, 278, FlinkSqlParser.RULE_qualifiedName); try { - this.state = 2000; + this.state = 1988; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 227, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1998; + this.state = 1986; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1999; + this.state = 1987; this.dereferenceDefinition(); } break; @@ -9488,24 +9431,24 @@ export class FlinkSqlParser extends SQLParserBase { } public timeIntervalExpression(): TimeIntervalExpressionContext { let localContext = new TimeIntervalExpressionContext(this.context, this.state); - this.enterRule(localContext, 282, FlinkSqlParser.RULE_timeIntervalExpression); + this.enterRule(localContext, 280, FlinkSqlParser.RULE_timeIntervalExpression); try { this.enterOuterAlt(localContext, 1); { - this.state = 2002; + this.state = 1990; this.match(FlinkSqlParser.KW_INTERVAL); - this.state = 2005; + this.state = 1993; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 228, this.context) ) { case 1: { - this.state = 2003; + this.state = 1991; this.errorCapturingMultiUnitsInterval(); } break; case 2: { - this.state = 2004; + this.state = 1992; this.errorCapturingUnitToUnitInterval(); } break; @@ -9528,18 +9471,18 @@ export class FlinkSqlParser extends SQLParserBase { } public errorCapturingMultiUnitsInterval(): ErrorCapturingMultiUnitsIntervalContext { let localContext = new ErrorCapturingMultiUnitsIntervalContext(this.context, this.state); - this.enterRule(localContext, 284, FlinkSqlParser.RULE_errorCapturingMultiUnitsInterval); + this.enterRule(localContext, 282, FlinkSqlParser.RULE_errorCapturingMultiUnitsInterval); try { this.enterOuterAlt(localContext, 1); { - this.state = 2007; + this.state = 1995; this.multiUnitsInterval(); - this.state = 2009; + this.state = 1997; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 233, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 229, this.context) ) { case 1: { - this.state = 2008; + this.state = 1996; this.unitToUnitInterval(); } break; @@ -9562,12 +9505,12 @@ export class FlinkSqlParser extends SQLParserBase { } public multiUnitsInterval(): MultiUnitsIntervalContext { let localContext = new MultiUnitsIntervalContext(this.context, this.state); - this.enterRule(localContext, 286, FlinkSqlParser.RULE_multiUnitsInterval); + this.enterRule(localContext, 284, FlinkSqlParser.RULE_multiUnitsInterval); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2014; + this.state = 2002; this.errorHandler.sync(this); alternative = 1; do { @@ -9575,9 +9518,9 @@ export class FlinkSqlParser extends SQLParserBase { case 1: { { - this.state = 2011; + this.state = 1999; this.intervalValue(); - this.state = 2012; + this.state = 2000; this.timeIntervalUnit(); } } @@ -9585,9 +9528,9 @@ export class FlinkSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2016; + this.state = 2004; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 234, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 230, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -9607,24 +9550,24 @@ export class FlinkSqlParser extends SQLParserBase { } public errorCapturingUnitToUnitInterval(): ErrorCapturingUnitToUnitIntervalContext { let localContext = new ErrorCapturingUnitToUnitIntervalContext(this.context, this.state); - this.enterRule(localContext, 288, FlinkSqlParser.RULE_errorCapturingUnitToUnitInterval); + this.enterRule(localContext, 286, FlinkSqlParser.RULE_errorCapturingUnitToUnitInterval); try { this.enterOuterAlt(localContext, 1); { - this.state = 2018; + this.state = 2006; localContext._body = this.unitToUnitInterval(); - this.state = 2021; + this.state = 2009; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { case 1: { - this.state = 2019; + this.state = 2007; localContext._error1 = this.multiUnitsInterval(); } break; case 2: { - this.state = 2020; + this.state = 2008; localContext._error2 = this.unitToUnitInterval(); } break; @@ -9647,17 +9590,17 @@ export class FlinkSqlParser extends SQLParserBase { } public unitToUnitInterval(): UnitToUnitIntervalContext { let localContext = new UnitToUnitIntervalContext(this.context, this.state); - this.enterRule(localContext, 290, FlinkSqlParser.RULE_unitToUnitInterval); + this.enterRule(localContext, 288, FlinkSqlParser.RULE_unitToUnitInterval); try { this.enterOuterAlt(localContext, 1); { - this.state = 2023; + this.state = 2011; localContext._value = this.intervalValue(); - this.state = 2024; + this.state = 2012; localContext._from_ = this.timeIntervalUnit(); - this.state = 2025; + this.state = 2013; this.match(FlinkSqlParser.KW_TO); - this.state = 2026; + this.state = 2014; localContext._to = this.timeIntervalUnit(); } } @@ -9677,10 +9620,10 @@ export class FlinkSqlParser extends SQLParserBase { } public intervalValue(): IntervalValueContext { let localContext = new IntervalValueContext(this.context, this.state); - this.enterRule(localContext, 292, FlinkSqlParser.RULE_intervalValue); + this.enterRule(localContext, 290, FlinkSqlParser.RULE_intervalValue); let _la: number; try { - this.state = 2033; + this.state = 2021; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.HYPNEN_SIGN: @@ -9689,12 +9632,12 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 2029; + this.state = 2017; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 529 || _la === 530) { { - this.state = 2028; + this.state = 2016; _la = this.tokenStream.LA(1); if(!(_la === 529 || _la === 530)) { this.errorHandler.recoverInline(this); @@ -9706,7 +9649,7 @@ export class FlinkSqlParser extends SQLParserBase { } } - this.state = 2031; + this.state = 2019; _la = this.tokenStream.LA(1); if(!(_la === 538 || _la === 539)) { this.errorHandler.recoverInline(this); @@ -9720,7 +9663,7 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 2); { - this.state = 2032; + this.state = 2020; this.match(FlinkSqlParser.STRING_LITERAL); } break; @@ -9744,29 +9687,29 @@ export class FlinkSqlParser extends SQLParserBase { } public tableAlias(): TableAliasContext { let localContext = new TableAliasContext(this.context, this.state); - this.enterRule(localContext, 294, FlinkSqlParser.RULE_tableAlias); + this.enterRule(localContext, 292, FlinkSqlParser.RULE_tableAlias); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2036; + this.state = 2024; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 2035; + this.state = 2023; this.match(FlinkSqlParser.KW_AS); } } - this.state = 2038; - this.identifier(); - this.state = 2040; + this.state = 2026; + localContext._alias = this.identifier(); + this.state = 2028; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 239, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context) ) { case 1: { - this.state = 2039; + this.state = 2027; this.identifierList(); } break; @@ -9789,13 +9732,13 @@ export class FlinkSqlParser extends SQLParserBase { } public errorCapturingIdentifier(): ErrorCapturingIdentifierContext { let localContext = new ErrorCapturingIdentifierContext(this.context, this.state); - this.enterRule(localContext, 296, FlinkSqlParser.RULE_errorCapturingIdentifier); + this.enterRule(localContext, 294, FlinkSqlParser.RULE_errorCapturingIdentifier); try { this.enterOuterAlt(localContext, 1); { - this.state = 2042; + this.state = 2030; this.identifier(); - this.state = 2043; + this.state = 2031; this.errorCapturingIdentifierExtra(); } } @@ -9815,29 +9758,29 @@ export class FlinkSqlParser extends SQLParserBase { } public errorCapturingIdentifierExtra(): ErrorCapturingIdentifierExtraContext { let localContext = new ErrorCapturingIdentifierExtraContext(this.context, this.state); - this.enterRule(localContext, 298, FlinkSqlParser.RULE_errorCapturingIdentifierExtra); + this.enterRule(localContext, 296, FlinkSqlParser.RULE_errorCapturingIdentifierExtra); let _la: number; try { - this.state = 2052; + this.state = 2040; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_MINUS: localContext = new ErrorIdentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2047; + this.state = 2035; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2045; + this.state = 2033; this.match(FlinkSqlParser.KW_MINUS); - this.state = 2046; + this.state = 2034; this.identifier(); } } - this.state = 2049; + this.state = 2037; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 221); @@ -9871,15 +9814,15 @@ export class FlinkSqlParser extends SQLParserBase { } public identifierList(): IdentifierListContext { let localContext = new IdentifierListContext(this.context, this.state); - this.enterRule(localContext, 300, FlinkSqlParser.RULE_identifierList); + this.enterRule(localContext, 298, FlinkSqlParser.RULE_identifierList); try { this.enterOuterAlt(localContext, 1); { - this.state = 2054; + this.state = 2042; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 2055; + this.state = 2043; this.identifierSeq(); - this.state = 2056; + this.state = 2044; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -9899,26 +9842,26 @@ export class FlinkSqlParser extends SQLParserBase { } public identifierSeq(): IdentifierSeqContext { let localContext = new IdentifierSeqContext(this.context, this.state); - this.enterRule(localContext, 302, FlinkSqlParser.RULE_identifierSeq); + this.enterRule(localContext, 300, FlinkSqlParser.RULE_identifierSeq); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2058; + this.state = 2046; this.identifier(); - this.state = 2063; + this.state = 2051; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 2059; + this.state = 2047; this.match(FlinkSqlParser.COMMA); - this.state = 2060; + this.state = 2048; this.identifier(); } } - this.state = 2065; + this.state = 2053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9940,9 +9883,9 @@ export class FlinkSqlParser extends SQLParserBase { } public identifier(): IdentifierContext { let localContext = new IdentifierContext(this.context, this.state); - this.enterRule(localContext, 304, FlinkSqlParser.RULE_identifier); + this.enterRule(localContext, 302, FlinkSqlParser.RULE_identifier); try { - this.state = 2069; + this.state = 2057; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.DIG_LITERAL: @@ -9950,7 +9893,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new UnquotedIdentifierAlternativeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2066; + this.state = 2054; this.unquotedIdentifier(); } break; @@ -9958,7 +9901,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new QuotedIdentifierAlternativeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2067; + this.state = 2055; this.quotedIdentifier(); } break; @@ -10033,7 +9976,7 @@ export class FlinkSqlParser extends SQLParserBase { localContext = new NonReservedKeywordsAlternativeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2068; + this.state = 2056; this.nonReservedKeywords(); } break; @@ -10057,12 +10000,12 @@ export class FlinkSqlParser extends SQLParserBase { } public unquotedIdentifier(): UnquotedIdentifierContext { let localContext = new UnquotedIdentifierContext(this.context, this.state); - this.enterRule(localContext, 306, FlinkSqlParser.RULE_unquotedIdentifier); + this.enterRule(localContext, 304, FlinkSqlParser.RULE_unquotedIdentifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2071; + this.state = 2059; _la = this.tokenStream.LA(1); if(!(_la === 538 || _la === 541)) { this.errorHandler.recoverInline(this); @@ -10089,11 +10032,11 @@ export class FlinkSqlParser extends SQLParserBase { } public quotedIdentifier(): QuotedIdentifierContext { let localContext = new QuotedIdentifierContext(this.context, this.state); - this.enterRule(localContext, 308, FlinkSqlParser.RULE_quotedIdentifier); + this.enterRule(localContext, 306, FlinkSqlParser.RULE_quotedIdentifier); try { this.enterOuterAlt(localContext, 1); { - this.state = 2073; + this.state = 2061; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -10113,17 +10056,17 @@ export class FlinkSqlParser extends SQLParserBase { } public whenClause(): WhenClauseContext { let localContext = new WhenClauseContext(this.context, this.state); - this.enterRule(localContext, 310, FlinkSqlParser.RULE_whenClause); + this.enterRule(localContext, 308, FlinkSqlParser.RULE_whenClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 2075; + this.state = 2063; this.match(FlinkSqlParser.KW_WHEN); - this.state = 2076; + this.state = 2064; localContext._condition = this.expression(); - this.state = 2077; + this.state = 2065; this.match(FlinkSqlParser.KW_THEN); - this.state = 2078; + this.state = 2066; localContext._result = this.expression(); } } @@ -10143,11 +10086,11 @@ export class FlinkSqlParser extends SQLParserBase { } public catalogPath(): CatalogPathContext { let localContext = new CatalogPathContext(this.context, this.state); - this.enterRule(localContext, 312, FlinkSqlParser.RULE_catalogPath); + this.enterRule(localContext, 310, FlinkSqlParser.RULE_catalogPath); try { this.enterOuterAlt(localContext, 1); { - this.state = 2080; + this.state = 2068; this.identifier(); } } @@ -10167,11 +10110,11 @@ export class FlinkSqlParser extends SQLParserBase { } public catalogPathCreate(): CatalogPathCreateContext { let localContext = new CatalogPathCreateContext(this.context, this.state); - this.enterRule(localContext, 314, FlinkSqlParser.RULE_catalogPathCreate); + this.enterRule(localContext, 312, FlinkSqlParser.RULE_catalogPathCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 2082; + this.state = 2070; this.identifier(); } } @@ -10191,21 +10134,21 @@ export class FlinkSqlParser extends SQLParserBase { } public databasePath(): DatabasePathContext { let localContext = new DatabasePathContext(this.context, this.state); - this.enterRule(localContext, 316, FlinkSqlParser.RULE_databasePath); + this.enterRule(localContext, 314, FlinkSqlParser.RULE_databasePath); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2084; + this.state = 2072; this.identifier(); - this.state = 2087; + this.state = 2075; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 2085; + this.state = 2073; this.match(FlinkSqlParser.DOT); - this.state = 2086; + this.state = 2074; this.identifier(); } } @@ -10228,21 +10171,21 @@ export class FlinkSqlParser extends SQLParserBase { } public databasePathCreate(): DatabasePathCreateContext { let localContext = new DatabasePathCreateContext(this.context, this.state); - this.enterRule(localContext, 318, FlinkSqlParser.RULE_databasePathCreate); + this.enterRule(localContext, 316, FlinkSqlParser.RULE_databasePathCreate); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2089; + this.state = 2077; this.identifier(); - this.state = 2092; + this.state = 2080; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 2090; + this.state = 2078; this.match(FlinkSqlParser.DOT); - this.state = 2091; + this.state = 2079; this.identifier(); } } @@ -10265,25 +10208,25 @@ export class FlinkSqlParser extends SQLParserBase { } public tablePathCreate(): TablePathCreateContext { let localContext = new TablePathCreateContext(this.context, this.state); - this.enterRule(localContext, 320, FlinkSqlParser.RULE_tablePathCreate); + this.enterRule(localContext, 318, FlinkSqlParser.RULE_tablePathCreate); let _la: number; try { - this.state = 2106; + this.state = 2094; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2094; + this.state = 2082; this.identifier(); - this.state = 2097; + this.state = 2085; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 2095; + this.state = 2083; this.match(FlinkSqlParser.DOT); - this.state = 2096; + this.state = 2084; this.identifier(); } } @@ -10293,20 +10236,20 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2099; + this.state = 2087; this.identifier(); - this.state = 2100; + this.state = 2088; this.match(FlinkSqlParser.DOT); - this.state = 2101; + this.state = 2089; this.identifier(); - this.state = 2104; + this.state = 2092; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 2102; + this.state = 2090; this.match(FlinkSqlParser.DOT); - this.state = 2103; + this.state = 2091; this.identifier(); } } @@ -10331,24 +10274,24 @@ export class FlinkSqlParser extends SQLParserBase { } public tablePath(): TablePathContext { let localContext = new TablePathContext(this.context, this.state); - this.enterRule(localContext, 322, FlinkSqlParser.RULE_tablePath); + this.enterRule(localContext, 320, FlinkSqlParser.RULE_tablePath); try { - this.state = 2120; + this.state = 2108; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 251, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2108; + this.state = 2096; this.identifier(); - this.state = 2111; + this.state = 2099; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { case 1: { - this.state = 2109; + this.state = 2097; this.match(FlinkSqlParser.DOT); - this.state = 2110; + this.state = 2098; this.identifier(); } break; @@ -10358,20 +10301,20 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2113; + this.state = 2101; this.identifier(); - this.state = 2114; + this.state = 2102; this.match(FlinkSqlParser.DOT); - this.state = 2115; + this.state = 2103; this.identifier(); - this.state = 2118; + this.state = 2106; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 246, this.context) ) { case 1: { - this.state = 2116; + this.state = 2104; this.match(FlinkSqlParser.DOT); - this.state = 2117; + this.state = 2105; this.identifier(); } break; @@ -10396,24 +10339,24 @@ export class FlinkSqlParser extends SQLParserBase { } public viewPath(): ViewPathContext { let localContext = new ViewPathContext(this.context, this.state); - this.enterRule(localContext, 324, FlinkSqlParser.RULE_viewPath); + this.enterRule(localContext, 322, FlinkSqlParser.RULE_viewPath); try { - this.state = 2134; + this.state = 2122; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 254, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2122; + this.state = 2110; this.identifier(); - this.state = 2125; + this.state = 2113; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { case 1: { - this.state = 2123; + this.state = 2111; this.match(FlinkSqlParser.DOT); - this.state = 2124; + this.state = 2112; this.identifier(); } break; @@ -10423,20 +10366,20 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2127; + this.state = 2115; this.identifier(); - this.state = 2128; + this.state = 2116; this.match(FlinkSqlParser.DOT); - this.state = 2129; + this.state = 2117; this.identifier(); - this.state = 2132; + this.state = 2120; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { case 1: { - this.state = 2130; + this.state = 2118; this.match(FlinkSqlParser.DOT); - this.state = 2131; + this.state = 2119; this.identifier(); } break; @@ -10461,25 +10404,25 @@ export class FlinkSqlParser extends SQLParserBase { } public viewPathCreate(): ViewPathCreateContext { let localContext = new ViewPathCreateContext(this.context, this.state); - this.enterRule(localContext, 326, FlinkSqlParser.RULE_viewPathCreate); + this.enterRule(localContext, 324, FlinkSqlParser.RULE_viewPathCreate); let _la: number; try { - this.state = 2148; + this.state = 2136; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 257, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2136; + this.state = 2124; this.identifier(); - this.state = 2139; + this.state = 2127; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 2137; + this.state = 2125; this.match(FlinkSqlParser.DOT); - this.state = 2138; + this.state = 2126; this.identifier(); } } @@ -10489,20 +10432,20 @@ export class FlinkSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2141; + this.state = 2129; this.identifier(); - this.state = 2142; + this.state = 2130; this.match(FlinkSqlParser.DOT); - this.state = 2143; + this.state = 2131; this.identifier(); - this.state = 2146; + this.state = 2134; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 2144; + this.state = 2132; this.match(FlinkSqlParser.DOT); - this.state = 2145; + this.state = 2133; this.identifier(); } } @@ -10527,30 +10470,30 @@ export class FlinkSqlParser extends SQLParserBase { } public uid(): UidContext { let localContext = new UidContext(this.context, this.state); - this.enterRule(localContext, 328, FlinkSqlParser.RULE_uid); + this.enterRule(localContext, 326, FlinkSqlParser.RULE_uid); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2150; + this.state = 2138; this.identifier(); - this.state = 2155; + this.state = 2143; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 258, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 254, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 2151; + this.state = 2139; this.match(FlinkSqlParser.DOT); - this.state = 2152; + this.state = 2140; this.identifier(); } } } - this.state = 2157; + this.state = 2145; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 258, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 254, this.context); } } } @@ -10570,13 +10513,13 @@ export class FlinkSqlParser extends SQLParserBase { } public withOption(): WithOptionContext { let localContext = new WithOptionContext(this.context, this.state); - this.enterRule(localContext, 330, FlinkSqlParser.RULE_withOption); + this.enterRule(localContext, 328, FlinkSqlParser.RULE_withOption); try { this.enterOuterAlt(localContext, 1); { - this.state = 2158; + this.state = 2146; this.match(FlinkSqlParser.KW_WITH); - this.state = 2159; + this.state = 2147; this.tablePropertyList(); } } @@ -10596,15 +10539,15 @@ export class FlinkSqlParser extends SQLParserBase { } public ifNotExists(): IfNotExistsContext { let localContext = new IfNotExistsContext(this.context, this.state); - this.enterRule(localContext, 332, FlinkSqlParser.RULE_ifNotExists); + this.enterRule(localContext, 330, FlinkSqlParser.RULE_ifNotExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 2161; + this.state = 2149; this.match(FlinkSqlParser.KW_IF); - this.state = 2162; + this.state = 2150; this.match(FlinkSqlParser.KW_NOT); - this.state = 2163; + this.state = 2151; this.match(FlinkSqlParser.KW_EXISTS); } } @@ -10624,13 +10567,13 @@ export class FlinkSqlParser extends SQLParserBase { } public ifExists(): IfExistsContext { let localContext = new IfExistsContext(this.context, this.state); - this.enterRule(localContext, 334, FlinkSqlParser.RULE_ifExists); + this.enterRule(localContext, 332, FlinkSqlParser.RULE_ifExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 2165; + this.state = 2153; this.match(FlinkSqlParser.KW_IF); - this.state = 2166; + this.state = 2154; this.match(FlinkSqlParser.KW_EXISTS); } } @@ -10650,32 +10593,32 @@ export class FlinkSqlParser extends SQLParserBase { } public tablePropertyList(): TablePropertyListContext { let localContext = new TablePropertyListContext(this.context, this.state); - this.enterRule(localContext, 336, FlinkSqlParser.RULE_tablePropertyList); + this.enterRule(localContext, 334, FlinkSqlParser.RULE_tablePropertyList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2168; + this.state = 2156; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 2169; + this.state = 2157; this.tableProperty(); - this.state = 2174; + this.state = 2162; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 520) { { { - this.state = 2170; + this.state = 2158; this.match(FlinkSqlParser.COMMA); - this.state = 2171; + this.state = 2159; this.tableProperty(); } } - this.state = 2176; + this.state = 2164; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2177; + this.state = 2165; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -10695,29 +10638,29 @@ export class FlinkSqlParser extends SQLParserBase { } public tableProperty(): TablePropertyContext { let localContext = new TablePropertyContext(this.context, this.state); - this.enterRule(localContext, 338, FlinkSqlParser.RULE_tableProperty); + this.enterRule(localContext, 336, FlinkSqlParser.RULE_tableProperty); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2179; + this.state = 2167; localContext._key = this.tablePropertyKey(); - this.state = 2184; + this.state = 2172; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 140 || _la === 397 || _la === 505 || ((((_la - 537)) & ~0x1F) === 0 && ((1 << (_la - 537)) & 7) !== 0)) { { - this.state = 2181; + this.state = 2169; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 505) { { - this.state = 2180; + this.state = 2168; this.match(FlinkSqlParser.EQUAL_SYMBOL); } } - this.state = 2183; + this.state = 2171; localContext._value = this.tablePropertyValue(); } } @@ -10740,29 +10683,29 @@ export class FlinkSqlParser extends SQLParserBase { } public tablePropertyKey(): TablePropertyKeyContext { let localContext = new TablePropertyKeyContext(this.context, this.state); - this.enterRule(localContext, 340, FlinkSqlParser.RULE_tablePropertyKey); + this.enterRule(localContext, 338, FlinkSqlParser.RULE_tablePropertyKey); try { - this.state = 2189; + this.state = 2177; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 262, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2186; + this.state = 2174; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2187; + this.state = 2175; this.dereferenceDefinition(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2188; + this.state = 2176; this.match(FlinkSqlParser.STRING_LITERAL); } break; @@ -10784,22 +10727,22 @@ export class FlinkSqlParser extends SQLParserBase { } public tablePropertyValue(): TablePropertyValueContext { let localContext = new TablePropertyValueContext(this.context, this.state); - this.enterRule(localContext, 342, FlinkSqlParser.RULE_tablePropertyValue); + this.enterRule(localContext, 340, FlinkSqlParser.RULE_tablePropertyValue); try { - this.state = 2195; + this.state = 2183; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.DIG_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 2191; + this.state = 2179; this.match(FlinkSqlParser.DIG_LITERAL); } break; case FlinkSqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 2); { - this.state = 2192; + this.state = 2180; this.match(FlinkSqlParser.REAL_LITERAL); } break; @@ -10807,14 +10750,14 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.KW_TRUE: this.enterOuterAlt(localContext, 3); { - this.state = 2193; + this.state = 2181; this.booleanLiteral(); } break; case FlinkSqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 4); { - this.state = 2194; + this.state = 2182; this.match(FlinkSqlParser.STRING_LITERAL); } break; @@ -10838,40 +10781,40 @@ export class FlinkSqlParser extends SQLParserBase { } public logicalOperator(): LogicalOperatorContext { let localContext = new LogicalOperatorContext(this.context, this.state); - this.enterRule(localContext, 344, FlinkSqlParser.RULE_logicalOperator); + this.enterRule(localContext, 342, FlinkSqlParser.RULE_logicalOperator); try { - this.state = 2203; + this.state = 2191; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_AND: this.enterOuterAlt(localContext, 1); { - this.state = 2197; + this.state = 2185; this.match(FlinkSqlParser.KW_AND); } break; case FlinkSqlParser.BIT_AND_OP: this.enterOuterAlt(localContext, 2); { - this.state = 2198; + this.state = 2186; this.match(FlinkSqlParser.BIT_AND_OP); - this.state = 2199; + this.state = 2187; this.match(FlinkSqlParser.BIT_AND_OP); } break; case FlinkSqlParser.KW_OR: this.enterOuterAlt(localContext, 3); { - this.state = 2200; + this.state = 2188; this.match(FlinkSqlParser.KW_OR); } break; case FlinkSqlParser.BIT_OR_OP: this.enterOuterAlt(localContext, 4); { - this.state = 2201; + this.state = 2189; this.match(FlinkSqlParser.BIT_OR_OP); - this.state = 2202; + this.state = 2190; this.match(FlinkSqlParser.BIT_OR_OP); } break; @@ -10895,76 +10838,76 @@ export class FlinkSqlParser extends SQLParserBase { } public comparisonOperator(): ComparisonOperatorContext { let localContext = new ComparisonOperatorContext(this.context, this.state); - this.enterRule(localContext, 346, FlinkSqlParser.RULE_comparisonOperator); + this.enterRule(localContext, 344, FlinkSqlParser.RULE_comparisonOperator); try { - this.state = 2219; + this.state = 2207; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 261, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2205; + this.state = 2193; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2206; + this.state = 2194; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2207; + this.state = 2195; this.match(FlinkSqlParser.LESS_SYMBOL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2208; + this.state = 2196; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2209; + this.state = 2197; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2210; + this.state = 2198; this.match(FlinkSqlParser.GREATER_SYMBOL); - this.state = 2211; + this.state = 2199; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2212; + this.state = 2200; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2213; + this.state = 2201; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2214; + this.state = 2202; this.match(FlinkSqlParser.EXCLAMATION_SYMBOL); - this.state = 2215; + this.state = 2203; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2216; + this.state = 2204; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2217; + this.state = 2205; this.match(FlinkSqlParser.EQUAL_SYMBOL); - this.state = 2218; + this.state = 2206; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; @@ -10986,47 +10929,47 @@ export class FlinkSqlParser extends SQLParserBase { } public bitOperator(): BitOperatorContext { let localContext = new BitOperatorContext(this.context, this.state); - this.enterRule(localContext, 348, FlinkSqlParser.RULE_bitOperator); + this.enterRule(localContext, 346, FlinkSqlParser.RULE_bitOperator); try { - this.state = 2228; + this.state = 2216; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.LESS_SYMBOL: this.enterOuterAlt(localContext, 1); { - this.state = 2221; + this.state = 2209; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2222; + this.state = 2210; this.match(FlinkSqlParser.LESS_SYMBOL); } break; case FlinkSqlParser.GREATER_SYMBOL: this.enterOuterAlt(localContext, 2); { - this.state = 2223; + this.state = 2211; this.match(FlinkSqlParser.GREATER_SYMBOL); - this.state = 2224; + this.state = 2212; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; case FlinkSqlParser.BIT_AND_OP: this.enterOuterAlt(localContext, 3); { - this.state = 2225; + this.state = 2213; this.match(FlinkSqlParser.BIT_AND_OP); } break; case FlinkSqlParser.BIT_XOR_OP: this.enterOuterAlt(localContext, 4); { - this.state = 2226; + this.state = 2214; this.match(FlinkSqlParser.BIT_XOR_OP); } break; case FlinkSqlParser.BIT_OR_OP: this.enterOuterAlt(localContext, 5); { - this.state = 2227; + this.state = 2215; this.match(FlinkSqlParser.BIT_OR_OP); } break; @@ -11050,12 +10993,12 @@ export class FlinkSqlParser extends SQLParserBase { } public mathOperator(): MathOperatorContext { let localContext = new MathOperatorContext(this.context, this.state); - this.enterRule(localContext, 350, FlinkSqlParser.RULE_mathOperator); + this.enterRule(localContext, 348, FlinkSqlParser.RULE_mathOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2230; + this.state = 2218; _la = this.tokenStream.LA(1); if(!(_la === 452 || ((((_la - 527)) & ~0x1F) === 0 && ((1 << (_la - 527)) & 221) !== 0))) { this.errorHandler.recoverInline(this); @@ -11082,12 +11025,12 @@ export class FlinkSqlParser extends SQLParserBase { } public unaryOperator(): UnaryOperatorContext { let localContext = new UnaryOperatorContext(this.context, this.state); - this.enterRule(localContext, 352, FlinkSqlParser.RULE_unaryOperator); + this.enterRule(localContext, 350, FlinkSqlParser.RULE_unaryOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2232; + this.state = 2220; _la = this.tokenStream.LA(1); if(!(_la === 241 || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & 6291459) !== 0))) { this.errorHandler.recoverInline(this); @@ -11114,16 +11057,16 @@ export class FlinkSqlParser extends SQLParserBase { } public constant(): ConstantContext { let localContext = new ConstantContext(this.context, this.state); - this.enterRule(localContext, 354, FlinkSqlParser.RULE_constant); + this.enterRule(localContext, 352, FlinkSqlParser.RULE_constant); let _la: number; try { - this.state = 2248; + this.state = 2236; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case FlinkSqlParser.KW_INTERVAL: this.enterOuterAlt(localContext, 1); { - this.state = 2234; + this.state = 2222; this.timeIntervalExpression(); } break; @@ -11139,14 +11082,14 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.KW_WEEK: this.enterOuterAlt(localContext, 2); { - this.state = 2235; + this.state = 2223; this.timePointLiteral(); } break; case FlinkSqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 2236; + this.state = 2224; this.stringLiteral(); } break; @@ -11154,17 +11097,17 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.DIG_LITERAL: this.enterOuterAlt(localContext, 4); { - this.state = 2238; + this.state = 2226; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 529) { { - this.state = 2237; + this.state = 2225; this.match(FlinkSqlParser.HYPNEN_SIGN); } } - this.state = 2240; + this.state = 2228; this.decimalLiteral(); } break; @@ -11172,21 +11115,21 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.KW_TRUE: this.enterOuterAlt(localContext, 5); { - this.state = 2241; + this.state = 2229; this.booleanLiteral(); } break; case FlinkSqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 6); { - this.state = 2242; + this.state = 2230; this.match(FlinkSqlParser.REAL_LITERAL); } break; case FlinkSqlParser.BIT_STRING: this.enterOuterAlt(localContext, 7); { - this.state = 2243; + this.state = 2231; this.match(FlinkSqlParser.BIT_STRING); } break; @@ -11194,17 +11137,17 @@ export class FlinkSqlParser extends SQLParserBase { case FlinkSqlParser.KW_NULL: this.enterOuterAlt(localContext, 8); { - this.state = 2245; + this.state = 2233; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 241) { { - this.state = 2244; + this.state = 2232; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 2247; + this.state = 2235; this.match(FlinkSqlParser.KW_NULL); } break; @@ -11228,13 +11171,13 @@ export class FlinkSqlParser extends SQLParserBase { } public timePointLiteral(): TimePointLiteralContext { let localContext = new TimePointLiteralContext(this.context, this.state); - this.enterRule(localContext, 356, FlinkSqlParser.RULE_timePointLiteral); + this.enterRule(localContext, 354, FlinkSqlParser.RULE_timePointLiteral); try { this.enterOuterAlt(localContext, 1); { - this.state = 2250; + this.state = 2238; this.timePointUnit(); - this.state = 2251; + this.state = 2239; this.stringLiteral(); } } @@ -11254,11 +11197,11 @@ export class FlinkSqlParser extends SQLParserBase { } public stringLiteral(): StringLiteralContext { let localContext = new StringLiteralContext(this.context, this.state); - this.enterRule(localContext, 358, FlinkSqlParser.RULE_stringLiteral); + this.enterRule(localContext, 356, FlinkSqlParser.RULE_stringLiteral); try { this.enterOuterAlt(localContext, 1); { - this.state = 2253; + this.state = 2241; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -11278,11 +11221,11 @@ export class FlinkSqlParser extends SQLParserBase { } public decimalLiteral(): DecimalLiteralContext { let localContext = new DecimalLiteralContext(this.context, this.state); - this.enterRule(localContext, 360, FlinkSqlParser.RULE_decimalLiteral); + this.enterRule(localContext, 358, FlinkSqlParser.RULE_decimalLiteral); try { this.enterOuterAlt(localContext, 1); { - this.state = 2255; + this.state = 2243; this.match(FlinkSqlParser.DIG_LITERAL); } } @@ -11302,12 +11245,12 @@ export class FlinkSqlParser extends SQLParserBase { } public booleanLiteral(): BooleanLiteralContext { let localContext = new BooleanLiteralContext(this.context, this.state); - this.enterRule(localContext, 362, FlinkSqlParser.RULE_booleanLiteral); + this.enterRule(localContext, 360, FlinkSqlParser.RULE_booleanLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2257; + this.state = 2245; _la = this.tokenStream.LA(1); if(!(_la === 140 || _la === 397)) { this.errorHandler.recoverInline(this); @@ -11334,12 +11277,12 @@ export class FlinkSqlParser extends SQLParserBase { } public setQuantifier(): SetQuantifierContext { let localContext = new SetQuantifierContext(this.context, this.state); - this.enterRule(localContext, 364, FlinkSqlParser.RULE_setQuantifier); + this.enterRule(localContext, 362, FlinkSqlParser.RULE_setQuantifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2259; + this.state = 2247; _la = this.tokenStream.LA(1); if(!(_la === 5 || _la === 113)) { this.errorHandler.recoverInline(this); @@ -11366,12 +11309,12 @@ export class FlinkSqlParser extends SQLParserBase { } public timePointUnit(): TimePointUnitContext { let localContext = new TimePointUnitContext(this.context, this.state); - this.enterRule(localContext, 366, FlinkSqlParser.RULE_timePointUnit); + this.enterRule(localContext, 364, FlinkSqlParser.RULE_timePointUnit); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2261; + this.state = 2249; _la = this.tokenStream.LA(1); if(!(_la === 97 || _la === 165 || _la === 222 || _la === 229 || _la === 334 || _la === 436 || ((((_la - 470)) & ~0x1F) === 0 && ((1 << (_la - 470)) & 262149) !== 0) || _la === 502)) { this.errorHandler.recoverInline(this); @@ -11398,12 +11341,12 @@ export class FlinkSqlParser extends SQLParserBase { } public timeIntervalUnit(): TimeIntervalUnitContext { let localContext = new TimeIntervalUnitContext(this.context, this.state); - this.enterRule(localContext, 368, FlinkSqlParser.RULE_timeIntervalUnit); + this.enterRule(localContext, 366, FlinkSqlParser.RULE_timeIntervalUnit); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2263; + this.state = 2251; _la = this.tokenStream.LA(1); if(!(_la === 97 || _la === 165 || _la === 222 || _la === 229 || _la === 334 || ((((_la - 427)) & ~0x1F) === 0 && ((1 << (_la - 427)) & 140542465) !== 0) || ((((_la - 460)) & ~0x1F) === 0 && ((1 << (_la - 460)) & 2415983617) !== 0) || _la === 502 || _la === 503)) { this.errorHandler.recoverInline(this); @@ -11430,12 +11373,12 @@ export class FlinkSqlParser extends SQLParserBase { } public reservedKeywordsUsedAsFuncParam(): ReservedKeywordsUsedAsFuncParamContext { let localContext = new ReservedKeywordsUsedAsFuncParamContext(this.context, this.state); - this.enterRule(localContext, 370, FlinkSqlParser.RULE_reservedKeywordsUsedAsFuncParam); + this.enterRule(localContext, 368, FlinkSqlParser.RULE_reservedKeywordsUsedAsFuncParam); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2265; + this.state = 2253; _la = this.tokenStream.LA(1); if(!(((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & 268435713) !== 0) || _la === 85 || _la === 113 || _la === 200 || _la === 389 || _la === 413 || _la === 527)) { this.errorHandler.recoverInline(this); @@ -11462,12 +11405,12 @@ export class FlinkSqlParser extends SQLParserBase { } public reservedKeywordsUsedAsFuncName(): ReservedKeywordsUsedAsFuncNameContext { let localContext = new ReservedKeywordsUsedAsFuncNameContext(this.context, this.state); - this.enterRule(localContext, 372, FlinkSqlParser.RULE_reservedKeywordsUsedAsFuncName); + this.enterRule(localContext, 370, FlinkSqlParser.RULE_reservedKeywordsUsedAsFuncName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2267; + this.state = 2255; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 8396816) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 2147811433) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 25232905) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 134221825) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 337641553) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 873523369) !== 0) || ((((_la - 229)) & ~0x1F) === 0 && ((1 << (_la - 229)) & 81921) !== 0) || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & 537530369) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 131185) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 14681219) !== 0) || ((((_la - 395)) & ~0x1F) === 0 && ((1 << (_la - 395)) & 50339865) !== 0) || _la === 436 || _la === 469 || _la === 488 || _la === 502)) { this.errorHandler.recoverInline(this); @@ -11494,12 +11437,12 @@ export class FlinkSqlParser extends SQLParserBase { } public nonReservedKeywords(): NonReservedKeywordsContext { let localContext = new NonReservedKeywordsContext(this.context, this.state); - this.enterRule(localContext, 374, FlinkSqlParser.RULE_nonReservedKeywords); + this.enterRule(localContext, 372, FlinkSqlParser.RULE_nonReservedKeywords); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2269; + this.state = 2257; _la = this.tokenStream.LA(1); if(!(((((_la - 437)) & ~0x1F) === 0 && ((1 << (_la - 437)) & 4294967295) !== 0) || ((((_la - 469)) & ~0x1F) === 0 && ((1 << (_la - 469)) & 4294967295) !== 0) || ((((_la - 501)) & ~0x1F) === 0 && ((1 << (_la - 501)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -11529,15 +11472,15 @@ export class FlinkSqlParser extends SQLParserBase { switch (ruleIndex) { case 26: return this.columnName_sempred(localContext as ColumnNameContext, predIndex); - case 79: + case 78: return this.queryStatement_sempred(localContext as QueryStatementContext, predIndex); - case 89: + case 88: return this.tableExpression_sempred(localContext as TableExpressionContext, predIndex); - case 130: + case 129: return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); - case 133: + case 132: return this.valueExpression_sempred(localContext as ValueExpressionContext, predIndex); - case 134: + case 133: return this.primaryExpression_sempred(localContext as PrimaryExpressionContext, predIndex); } return true; @@ -11602,7 +11545,7 @@ export class FlinkSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,541,2272,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,541,2260,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -11633,32 +11576,32 @@ export class FlinkSqlParser extends SQLParserBase { 2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175, 7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180, 2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186, - 7,186,2,187,7,187,1,0,5,0,378,8,0,10,0,12,0,381,9,0,1,0,1,0,1,1, - 1,1,3,1,387,8,1,1,1,3,1,390,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,3,2,404,8,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,422,8,4,1,5,1,5,3,5,426,8,5,1,6, - 1,6,1,6,1,7,1,7,1,7,1,7,3,7,435,8,7,1,7,1,7,1,7,3,7,440,8,7,1,8, - 1,8,1,8,5,8,445,8,8,10,8,12,8,448,9,8,1,9,1,9,1,10,1,10,1,10,1,10, - 1,10,1,10,3,10,458,8,10,1,11,1,11,1,11,1,11,1,11,5,11,465,8,11,10, - 11,12,11,468,9,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3, - 12,479,8,12,1,12,3,12,482,8,12,1,12,1,12,1,12,1,12,1,12,3,12,489, - 8,12,1,12,3,12,492,8,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,500,8, - 12,1,12,1,12,3,12,504,8,12,1,12,1,12,1,12,3,12,509,8,12,1,12,3,12, - 512,8,12,1,13,1,13,1,13,1,13,1,13,3,13,519,8,13,1,14,1,14,1,14,1, - 14,1,15,1,15,3,15,527,8,15,1,16,1,16,3,16,531,8,16,1,17,1,17,1,17, - 1,17,1,18,1,18,1,18,1,18,1,18,1,18,3,18,543,8,18,1,18,1,18,1,18, - 1,18,1,18,1,18,3,18,551,8,18,1,18,1,18,3,18,555,8,18,1,18,1,18,1, - 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, - 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, - 18,1,18,3,18,587,8,18,1,19,3,19,590,8,19,1,19,4,19,593,8,19,11,19, - 12,19,594,1,20,1,20,3,20,599,8,20,1,21,1,21,3,21,603,8,21,1,21,1, - 21,3,21,607,8,21,1,21,1,21,1,21,1,21,1,21,5,21,614,8,21,10,21,12, - 21,617,9,21,1,21,1,21,3,21,621,8,21,1,21,1,21,3,21,625,8,21,1,21, - 1,21,3,21,629,8,21,1,21,1,21,3,21,633,8,21,1,21,3,21,636,8,21,1, - 21,1,21,3,21,640,8,21,1,22,1,22,1,22,3,22,645,8,22,1,22,1,22,1,22, - 1,22,3,22,651,8,22,1,23,1,23,1,23,3,23,656,8,23,1,24,1,24,1,24,3, - 24,661,8,24,1,24,3,24,664,8,24,1,25,1,25,3,25,668,8,25,1,26,1,26, - 3,26,672,8,26,1,27,1,27,1,27,1,27,5,27,678,8,27,10,27,12,27,681, + 7,186,1,0,5,0,376,8,0,10,0,12,0,379,9,0,1,0,1,0,1,1,1,1,3,1,385, + 8,1,1,1,3,1,388,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2, + 1,2,3,2,402,8,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,3,4,420,8,4,1,5,1,5,3,5,424,8,5,1,6,1,6,1,6,1,7, + 1,7,1,7,1,7,3,7,433,8,7,1,7,1,7,1,7,3,7,438,8,7,1,8,1,8,1,8,5,8, + 443,8,8,10,8,12,8,446,9,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10, + 3,10,456,8,10,1,11,1,11,1,11,1,11,1,11,5,11,463,8,11,10,11,12,11, + 466,9,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,477,8, + 12,1,12,3,12,480,8,12,1,12,1,12,1,12,1,12,1,12,3,12,487,8,12,1,12, + 3,12,490,8,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,498,8,12,1,12,1, + 12,3,12,502,8,12,1,12,1,12,1,12,3,12,507,8,12,1,12,3,12,510,8,12, + 1,13,1,13,1,13,1,13,1,13,3,13,517,8,13,1,14,1,14,1,14,1,14,1,15, + 1,15,3,15,525,8,15,1,16,1,16,3,16,529,8,16,1,17,1,17,1,17,1,17,1, + 18,1,18,1,18,1,18,1,18,1,18,3,18,541,8,18,1,18,1,18,1,18,1,18,1, + 18,1,18,3,18,549,8,18,1,18,1,18,3,18,553,8,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, + 3,18,585,8,18,1,19,3,19,588,8,19,1,19,4,19,591,8,19,11,19,12,19, + 592,1,20,1,20,3,20,597,8,20,1,21,1,21,3,21,601,8,21,1,21,1,21,3, + 21,605,8,21,1,21,1,21,1,21,1,21,1,21,5,21,612,8,21,10,21,12,21,615, + 9,21,1,21,1,21,3,21,619,8,21,1,21,1,21,3,21,623,8,21,1,21,1,21,3, + 21,627,8,21,1,21,1,21,1,21,3,21,632,8,21,1,21,3,21,635,8,21,1,21, + 1,21,3,21,639,8,21,1,22,1,22,1,22,3,22,644,8,22,1,22,1,22,1,22,1, + 22,3,22,650,8,22,1,23,1,23,1,23,3,23,655,8,23,1,24,1,24,1,24,3,24, + 660,8,24,1,24,1,24,3,24,664,8,24,1,25,1,25,3,25,668,8,25,1,26,1, + 26,3,26,672,8,26,1,27,1,27,1,27,1,27,5,27,678,8,27,10,27,12,27,681, 9,27,1,27,1,27,1,28,1,28,1,28,3,28,688,8,28,1,28,1,28,3,28,692,8, 28,1,28,1,28,3,28,696,8,28,1,28,1,28,3,28,700,8,28,1,28,1,28,3,28, 704,8,28,1,28,1,28,3,28,708,8,28,1,28,1,28,3,28,712,8,28,1,28,1, @@ -11668,903 +11611,898 @@ export class FlinkSqlParser extends SQLParserBase { 1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34, 762,8,34,10,34,12,34,765,9,34,1,34,1,34,1,35,1,35,3,35,771,8,35, 1,35,1,35,1,35,1,35,3,35,777,8,35,1,35,3,35,780,8,35,1,35,3,35,783, - 8,35,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,3,37,793,8,37,1,37, - 3,37,796,8,37,1,38,1,38,1,39,1,39,1,39,1,39,3,39,804,8,39,1,40,1, - 40,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,3,42,816,8,42,1,42,1, - 42,1,42,1,42,1,42,1,42,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1, - 45,1,45,1,46,1,46,1,46,1,46,5,46,838,8,46,10,46,12,46,841,9,46,1, - 46,1,46,1,47,1,47,1,47,1,47,1,47,5,47,850,8,47,10,47,12,47,853,9, - 47,1,47,1,47,3,47,857,8,47,1,48,1,48,3,48,861,8,48,1,49,1,49,1,49, - 1,49,5,49,867,8,49,10,49,12,49,870,9,49,1,49,3,49,873,8,49,1,50, - 1,50,1,50,1,50,3,50,879,8,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52, - 1,52,3,52,889,8,52,1,52,1,52,3,52,893,8,52,1,52,1,52,1,53,1,53,3, - 53,899,8,53,1,53,1,53,3,53,903,8,53,1,53,1,53,3,53,907,8,53,1,53, - 3,53,910,8,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,3,54,919,8,54,1, - 54,1,54,3,54,923,8,54,1,54,1,54,1,54,1,54,1,54,3,54,930,8,54,1,54, - 3,54,933,8,54,1,55,1,55,1,55,1,55,1,55,1,55,5,55,941,8,55,10,55, - 12,55,944,9,55,1,56,1,56,1,57,1,57,1,57,3,57,951,8,57,1,57,1,57, - 1,57,1,57,1,57,1,57,3,57,959,8,57,1,58,1,58,3,58,963,8,58,1,58,1, - 58,1,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,978, - 8,60,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,64, - 1,64,1,64,1,64,1,64,1,64,3,64,997,8,64,1,65,1,65,1,65,1,65,1,65, - 1,66,1,66,1,66,1,66,3,66,1008,8,66,1,66,1,66,3,66,1012,8,66,1,66, - 1,66,1,66,1,66,1,66,3,66,1019,8,66,1,67,1,67,1,67,3,67,1024,8,67, - 1,67,1,67,1,68,1,68,3,68,1030,8,68,1,68,1,68,3,68,1034,8,68,1,68, - 1,68,1,69,1,69,1,69,3,69,1041,8,69,1,69,1,69,3,69,1045,8,69,1,70, - 1,70,3,70,1049,8,70,1,70,1,70,3,70,1053,8,70,1,70,1,70,1,71,1,71, - 1,71,1,71,3,71,1061,8,71,1,71,1,71,3,71,1065,8,71,1,71,1,71,1,72, - 3,72,1070,8,72,1,72,1,72,1,72,1,72,3,72,1076,8,72,1,73,1,73,1,73, - 1,73,3,73,1082,8,73,1,73,3,73,1085,8,73,1,73,1,73,3,73,1089,8,73, - 1,74,1,74,1,74,1,75,1,75,1,75,1,75,5,75,1098,8,75,10,75,12,75,1101, - 9,75,1,76,1,76,1,76,1,76,5,76,1107,8,76,10,76,12,76,1110,9,76,1, - 76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,4,77,1121,8,77,11,77, - 12,77,1122,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,4,78,1133,8,78, - 11,78,12,78,1134,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1, - 79,1,79,1,79,1,79,3,79,1150,8,79,1,79,3,79,1153,8,79,1,79,1,79,3, - 79,1157,8,79,1,79,3,79,1160,8,79,3,79,1162,8,79,1,79,1,79,1,79,3, - 79,1167,8,79,1,79,1,79,3,79,1171,8,79,1,79,3,79,1174,8,79,5,79,1176, - 8,79,10,79,12,79,1179,9,79,1,80,1,80,1,80,1,80,5,80,1185,8,80,10, - 80,12,80,1188,9,80,1,81,1,81,1,81,1,81,5,81,1194,8,81,10,81,12,81, - 1197,9,81,1,82,1,82,1,82,1,82,1,82,5,82,1204,8,82,10,82,12,82,1207, - 9,82,1,82,1,82,3,82,1211,8,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83, - 1,84,1,84,3,84,1222,8,84,1,84,3,84,1225,8,84,1,84,3,84,1228,8,84, - 1,84,3,84,1231,8,84,1,84,3,84,1234,8,84,1,84,1,84,1,84,1,84,3,84, - 1240,8,84,1,85,1,85,3,85,1244,8,85,1,85,1,85,1,85,1,85,5,85,1250, - 8,85,10,85,12,85,1253,9,85,3,85,1255,8,85,1,86,1,86,1,86,3,86,1260, - 8,86,1,86,3,86,1263,8,86,1,86,1,86,3,86,1267,8,86,1,86,3,86,1270, - 8,86,3,86,1272,8,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87, - 1,87,1,87,1,87,3,87,1286,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89, - 5,89,1295,8,89,10,89,12,89,1298,9,89,1,89,1,89,3,89,1302,8,89,1, - 89,1,89,1,89,1,89,1,89,1,89,3,89,1310,8,89,1,89,3,89,1313,8,89,1, - 89,3,89,1316,8,89,1,89,1,89,1,89,3,89,1321,8,89,5,89,1323,8,89,10, - 89,12,89,1326,9,89,1,90,1,90,3,90,1330,8,90,1,91,3,91,1333,8,91, - 1,91,1,91,3,91,1337,8,91,1,91,3,91,1340,8,91,1,91,3,91,1343,8,91, - 1,91,1,91,3,91,1347,8,91,1,91,3,91,1350,8,91,1,91,3,91,1353,8,91, - 1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,5,91,1363,8,91,10,91,12, - 91,1366,9,91,1,91,1,91,1,91,1,91,3,91,1372,8,91,1,91,1,91,1,91,1, - 91,1,91,1,91,1,91,1,91,1,91,3,91,1383,8,91,1,92,1,92,1,92,1,92,1, - 92,1,92,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1, - 95,1,96,1,96,1,96,1,96,1,96,5,96,1408,8,96,10,96,12,96,1411,9,96, - 1,96,1,96,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98, - 1,98,1,98,1,98,1,98,1,98,1,98,3,98,1432,8,98,1,99,1,99,1,100,1,100, - 1,100,1,100,1,100,1,101,1,101,1,101,1,101,3,101,1445,8,101,1,102, - 1,102,1,102,1,103,1,103,1,103,1,103,1,103,5,103,1455,8,103,10,103, - 12,103,1458,9,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, - 5,104,1468,8,104,10,104,12,104,1471,9,104,1,104,1,104,1,104,1,104, - 1,104,1,104,1,104,5,104,1480,8,104,10,104,12,104,1483,9,104,1,104, - 1,104,1,104,1,104,1,104,1,104,1,104,5,104,1492,8,104,10,104,12,104, - 1495,9,104,1,104,1,104,1,104,3,104,1500,8,104,1,105,1,105,1,105, - 1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108, - 1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,111,5,111,1525, - 8,111,10,111,12,111,1528,9,111,1,112,1,112,1,112,1,112,1,113,3,113, - 1535,8,113,1,113,1,113,3,113,1539,8,113,1,113,3,113,1542,8,113,1, - 113,3,113,1545,8,113,1,113,1,113,1,114,1,114,1,114,3,114,1552,8, - 114,1,114,3,114,1555,8,114,1,114,3,114,1558,8,114,1,114,3,114,1561, - 8,114,1,114,3,114,1564,8,114,1,114,3,114,1567,8,114,1,114,1,114, - 1,114,3,114,1572,8,114,1,114,3,114,1575,8,114,1,115,1,115,1,115, - 1,115,1,115,5,115,1582,8,115,10,115,12,115,1585,9,115,1,116,1,116, - 3,116,1589,8,116,1,116,1,116,3,116,1593,8,116,1,117,1,117,1,117, - 3,117,1598,8,117,1,118,1,118,1,118,1,118,1,118,5,118,1605,8,118, - 10,118,12,118,1608,9,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119, - 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119,1626, - 8,119,1,120,1,120,1,120,1,120,5,120,1632,8,120,10,120,12,120,1635, - 9,120,1,121,1,121,1,121,4,121,1640,8,121,11,121,12,121,1641,1,121, - 1,121,3,121,1646,8,121,1,122,1,122,3,122,1650,8,122,1,123,1,123, - 1,123,1,123,1,123,1,123,1,123,1,123,3,123,1660,8,123,1,124,1,124, - 1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, - 1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, - 3,124,1686,8,124,1,125,1,125,1,125,1,125,5,125,1692,8,125,10,125, - 12,125,1695,9,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126, - 1,126,3,126,1706,8,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128, - 1,128,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, - 1,130,1,130,3,130,1728,8,130,3,130,1730,8,130,1,130,1,130,1,130, - 1,130,1,130,1,130,1,130,1,130,1,130,3,130,1741,8,130,1,130,5,130, - 1744,8,130,10,130,12,130,1747,9,130,1,131,3,131,1750,8,131,1,131, - 1,131,3,131,1754,8,131,1,131,1,131,1,131,1,131,1,131,3,131,1761, - 8,131,1,131,1,131,1,131,1,131,1,131,5,131,1768,8,131,10,131,12,131, - 1771,9,131,1,131,1,131,1,131,3,131,1776,8,131,1,131,1,131,1,131, - 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131,1789,8,131, - 1,131,1,131,1,131,1,131,1,131,3,131,1796,8,131,1,131,1,131,1,131, - 3,131,1801,8,131,1,131,1,131,1,131,1,131,3,131,1807,8,131,1,131, - 1,131,1,131,1,131,1,131,3,131,1814,8,131,3,131,1816,8,131,1,132, - 3,132,1819,8,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, - 5,132,1829,8,132,10,132,12,132,1832,9,132,1,132,1,132,3,132,1836, - 8,132,1,132,3,132,1839,8,132,1,132,1,132,1,132,1,132,3,132,1845, - 8,132,3,132,1847,8,132,1,133,1,133,1,133,1,133,3,133,1853,8,133, + 8,35,1,36,1,36,1,36,1,36,1,36,3,36,790,8,36,1,36,3,36,793,8,36,1, + 37,1,37,1,38,1,38,1,38,1,38,1,38,3,38,802,8,38,1,39,1,39,1,40,1, + 40,1,40,1,40,1,40,1,40,1,41,1,41,3,41,814,8,41,1,41,1,41,1,41,1, + 41,1,41,1,41,1,42,1,42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1, + 45,1,45,1,45,1,45,5,45,836,8,45,10,45,12,45,839,9,45,1,45,1,45,1, + 46,1,46,1,46,1,46,1,46,5,46,848,8,46,10,46,12,46,851,9,46,1,46,1, + 46,3,46,855,8,46,1,47,1,47,3,47,859,8,47,1,48,1,48,1,48,1,48,5,48, + 865,8,48,10,48,12,48,868,9,48,1,48,3,48,871,8,48,1,49,1,49,1,49, + 1,49,3,49,877,8,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,3,51, + 887,8,51,1,51,1,51,1,51,3,51,892,8,51,1,51,1,51,1,52,1,52,3,52,898, + 8,52,1,52,1,52,3,52,902,8,52,1,52,1,52,3,52,906,8,52,1,52,1,52,3, + 52,910,8,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,3,53,919,8,53,1,53, + 1,53,3,53,923,8,53,1,53,1,53,1,53,1,53,1,53,3,53,930,8,53,1,53,3, + 53,933,8,53,1,54,1,54,1,54,1,54,1,54,1,54,5,54,941,8,54,10,54,12, + 54,944,9,54,1,55,1,55,1,56,1,56,1,56,3,56,951,8,56,1,56,1,56,1,56, + 1,56,1,56,1,56,3,56,959,8,56,1,57,1,57,3,57,963,8,57,1,57,1,57,1, + 57,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,3,59,978,8, + 59,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1, + 63,1,63,1,63,1,63,1,63,3,63,997,8,63,1,64,1,64,1,64,1,64,1,64,1, + 65,1,65,1,65,1,65,3,65,1008,8,65,1,65,1,65,3,65,1012,8,65,1,65,1, + 65,1,65,1,65,1,65,3,65,1019,8,65,1,66,1,66,1,66,3,66,1024,8,66,1, + 66,1,66,1,67,1,67,3,67,1030,8,67,1,67,1,67,3,67,1034,8,67,1,67,1, + 67,1,68,1,68,1,68,3,68,1041,8,68,1,68,1,68,3,68,1045,8,68,1,69,1, + 69,3,69,1049,8,69,1,69,1,69,3,69,1053,8,69,1,69,1,69,1,70,1,70,1, + 70,1,70,3,70,1061,8,70,1,70,1,70,3,70,1065,8,70,1,70,1,70,1,71,3, + 71,1070,8,71,1,71,1,71,1,71,1,71,3,71,1076,8,71,1,72,1,72,1,72,1, + 72,3,72,1082,8,72,1,72,3,72,1085,8,72,1,72,1,72,3,72,1089,8,72,1, + 73,1,73,1,73,1,74,1,74,1,74,1,74,5,74,1098,8,74,10,74,12,74,1101, + 9,74,1,75,1,75,1,75,1,75,5,75,1107,8,75,10,75,12,75,1110,9,75,1, + 75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,4,76,1121,8,76,11,76, + 12,76,1122,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,4,77,1133,8,77, + 11,77,12,77,1134,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, + 78,1,78,1,78,1,78,3,78,1150,8,78,1,78,3,78,1153,8,78,1,78,1,78,3, + 78,1157,8,78,1,78,3,78,1160,8,78,3,78,1162,8,78,1,78,1,78,1,78,3, + 78,1167,8,78,1,78,1,78,3,78,1171,8,78,1,78,3,78,1174,8,78,5,78,1176, + 8,78,10,78,12,78,1179,9,78,1,79,1,79,1,79,1,79,5,79,1185,8,79,10, + 79,12,79,1188,9,79,1,80,1,80,1,80,1,80,5,80,1194,8,80,10,80,12,80, + 1197,9,80,1,81,1,81,1,81,1,81,1,81,5,81,1204,8,81,10,81,12,81,1207, + 9,81,1,81,1,81,3,81,1211,8,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82, + 1,83,1,83,3,83,1222,8,83,1,83,3,83,1225,8,83,1,83,3,83,1228,8,83, + 1,83,3,83,1231,8,83,1,83,3,83,1234,8,83,1,83,1,83,1,83,1,83,3,83, + 1240,8,83,1,84,1,84,3,84,1244,8,84,1,84,1,84,1,84,1,84,5,84,1250, + 8,84,10,84,12,84,1253,9,84,3,84,1255,8,84,1,85,1,85,1,85,3,85,1260, + 8,85,1,85,3,85,1263,8,85,1,85,1,85,3,85,1267,8,85,1,85,3,85,1270, + 8,85,3,85,1272,8,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86, + 1,86,1,86,1,86,3,86,1286,8,86,1,87,1,87,1,87,1,88,1,88,1,88,1,88, + 5,88,1295,8,88,10,88,12,88,1298,9,88,1,88,1,88,3,88,1302,8,88,1, + 88,1,88,1,88,1,88,1,88,1,88,3,88,1310,8,88,1,88,3,88,1313,8,88,1, + 88,3,88,1316,8,88,1,88,1,88,1,88,3,88,1321,8,88,5,88,1323,8,88,10, + 88,12,88,1326,9,88,1,89,1,89,3,89,1330,8,89,1,90,3,90,1333,8,90, + 1,90,1,90,3,90,1337,8,90,1,90,1,90,3,90,1341,8,90,1,90,1,90,1,90, + 1,90,1,90,1,90,1,90,1,90,5,90,1351,8,90,10,90,12,90,1354,9,90,1, + 90,1,90,1,90,1,90,3,90,1360,8,90,1,90,1,90,1,90,1,90,1,90,1,90,1, + 90,1,90,1,90,3,90,1371,8,90,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1, + 92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1, + 95,1,95,1,95,5,95,1396,8,95,10,95,12,95,1399,9,95,1,95,1,95,1,96, + 1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97, + 1,97,1,97,1,97,3,97,1420,8,97,1,98,1,98,1,99,1,99,1,99,1,99,1,99, + 1,100,1,100,1,100,1,100,3,100,1433,8,100,1,101,1,101,1,101,1,102, + 1,102,1,102,1,102,1,102,5,102,1443,8,102,10,102,12,102,1446,9,102, + 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,5,103,1456,8,103, + 10,103,12,103,1459,9,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, + 5,103,1468,8,103,10,103,12,103,1471,9,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,103,5,103,1480,8,103,10,103,12,103,1483,9,103,1,103, + 1,103,1,103,3,103,1488,8,103,1,104,1,104,1,104,1,105,1,105,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,108,1,108,1,109, + 1,109,1,109,1,110,1,110,1,110,1,110,5,110,1513,8,110,10,110,12,110, + 1516,9,110,1,111,1,111,1,111,1,111,1,112,3,112,1523,8,112,1,112, + 1,112,3,112,1527,8,112,1,112,3,112,1530,8,112,1,112,3,112,1533,8, + 112,1,112,1,112,1,113,1,113,1,113,3,113,1540,8,113,1,113,3,113,1543, + 8,113,1,113,3,113,1546,8,113,1,113,3,113,1549,8,113,1,113,3,113, + 1552,8,113,1,113,3,113,1555,8,113,1,113,1,113,1,113,3,113,1560,8, + 113,1,113,3,113,1563,8,113,1,114,1,114,1,114,1,114,1,114,5,114,1570, + 8,114,10,114,12,114,1573,9,114,1,115,1,115,3,115,1577,8,115,1,115, + 1,115,3,115,1581,8,115,1,116,1,116,1,116,3,116,1586,8,116,1,117, + 1,117,1,117,1,117,1,117,5,117,1593,8,117,10,117,12,117,1596,9,117, + 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,3,118,1614,8,118,1,119,1,119,1,119, + 1,119,5,119,1620,8,119,10,119,12,119,1623,9,119,1,120,1,120,1,120, + 4,120,1628,8,120,11,120,12,120,1629,1,120,1,120,3,120,1634,8,120, + 1,121,1,121,3,121,1638,8,121,1,122,1,122,1,122,1,122,1,122,1,122, + 1,122,1,122,3,122,1648,8,122,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,3,123,1674,8,123,1,124, + 1,124,1,124,1,124,5,124,1680,8,124,10,124,12,124,1683,9,124,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,3,125,1694,8,125, + 1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,128,1,128,1,129, + 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,3,129,1716, + 8,129,3,129,1718,8,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,3,129,1729,8,129,1,129,5,129,1732,8,129,10,129,12,129, + 1735,9,129,1,130,3,130,1738,8,130,1,130,1,130,3,130,1742,8,130,1, + 130,1,130,1,130,1,130,1,130,3,130,1749,8,130,1,130,1,130,1,130,1, + 130,1,130,5,130,1756,8,130,10,130,12,130,1759,9,130,1,130,1,130, + 1,130,3,130,1764,8,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,130,1,130,1,130,1,130,3,130,1777,8,130,1,130,1,130,1,130,1,130, + 1,130,3,130,1784,8,130,1,130,1,130,1,130,3,130,1789,8,130,1,130, + 1,130,1,130,1,130,3,130,1795,8,130,1,130,1,130,1,130,1,130,1,130, + 3,130,1802,8,130,3,130,1804,8,130,1,131,3,131,1807,8,131,1,131,1, + 131,1,131,1,131,1,131,1,131,1,131,1,131,5,131,1817,8,131,10,131, + 12,131,1820,9,131,1,131,1,131,3,131,1824,8,131,1,131,3,131,1827, + 8,131,1,131,1,131,1,131,1,131,3,131,1833,8,131,3,131,1835,8,131, + 1,132,1,132,1,132,1,132,3,132,1841,8,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,132,1,132,5,132,1862,8,132,10,132,12,132,1865,9,132, + 1,133,1,133,1,133,4,133,1870,8,133,11,133,12,133,1871,1,133,1,133, + 3,133,1876,8,133,1,133,1,133,1,133,1,133,1,133,4,133,1883,8,133, + 11,133,12,133,1884,1,133,1,133,3,133,1889,8,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, + 3,133,1905,8,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,3,133, + 1914,8,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,5,133,1874,8,133, - 10,133,12,133,1877,9,133,1,134,1,134,1,134,4,134,1882,8,134,11,134, - 12,134,1883,1,134,1,134,3,134,1888,8,134,1,134,1,134,1,134,1,134, - 1,134,4,134,1895,8,134,11,134,12,134,1896,1,134,1,134,3,134,1901, - 8,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,3,134,1917,8,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,3,134,1926,8,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,1,134,3,134,1950,8,134,1,134,1,134, - 1,134,5,134,1955,8,134,10,134,12,134,1958,9,134,3,134,1960,8,134, - 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,3,134,1971, - 8,134,1,134,1,134,1,134,1,134,1,134,5,134,1978,8,134,10,134,12,134, - 1981,9,134,1,135,1,135,1,136,1,136,3,136,1987,8,136,1,137,1,137, - 1,137,1,137,3,137,1993,8,137,1,138,1,138,1,139,1,139,1,140,1,140, - 3,140,2001,8,140,1,141,1,141,1,141,3,141,2006,8,141,1,142,1,142, - 3,142,2010,8,142,1,143,1,143,1,143,4,143,2015,8,143,11,143,12,143, - 2016,1,144,1,144,1,144,3,144,2022,8,144,1,145,1,145,1,145,1,145, - 1,145,1,146,3,146,2030,8,146,1,146,1,146,3,146,2034,8,146,1,147, - 3,147,2037,8,147,1,147,1,147,3,147,2041,8,147,1,148,1,148,1,148, - 1,149,1,149,4,149,2048,8,149,11,149,12,149,2049,1,149,3,149,2053, - 8,149,1,150,1,150,1,150,1,150,1,151,1,151,1,151,5,151,2062,8,151, - 10,151,12,151,2065,9,151,1,152,1,152,1,152,3,152,2070,8,152,1,153, - 1,153,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,157, - 1,157,1,158,1,158,1,158,3,158,2088,8,158,1,159,1,159,1,159,3,159, - 2093,8,159,1,160,1,160,1,160,3,160,2098,8,160,1,160,1,160,1,160, - 1,160,1,160,3,160,2105,8,160,3,160,2107,8,160,1,161,1,161,1,161, - 3,161,2112,8,161,1,161,1,161,1,161,1,161,1,161,3,161,2119,8,161, - 3,161,2121,8,161,1,162,1,162,1,162,3,162,2126,8,162,1,162,1,162, - 1,162,1,162,1,162,3,162,2133,8,162,3,162,2135,8,162,1,163,1,163, - 1,163,3,163,2140,8,163,1,163,1,163,1,163,1,163,1,163,3,163,2147, - 8,163,3,163,2149,8,163,1,164,1,164,1,164,5,164,2154,8,164,10,164, - 12,164,2157,9,164,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,167, - 1,167,1,167,1,168,1,168,1,168,1,168,5,168,2173,8,168,10,168,12,168, - 2176,9,168,1,168,1,168,1,169,1,169,3,169,2182,8,169,1,169,3,169, - 2185,8,169,1,170,1,170,1,170,3,170,2190,8,170,1,171,1,171,1,171, - 1,171,3,171,2196,8,171,1,172,1,172,1,172,1,172,1,172,1,172,3,172, - 2204,8,172,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173, - 1,173,1,173,1,173,1,173,1,173,3,173,2220,8,173,1,174,1,174,1,174, - 1,174,1,174,1,174,1,174,3,174,2229,8,174,1,175,1,175,1,176,1,176, - 1,177,1,177,1,177,1,177,3,177,2239,8,177,1,177,1,177,1,177,1,177, - 1,177,3,177,2246,8,177,1,177,3,177,2249,8,177,1,178,1,178,1,178, - 1,179,1,179,1,180,1,180,1,181,1,181,1,182,1,182,1,183,1,183,1,184, - 1,184,1,185,1,185,1,186,1,186,1,187,1,187,1,187,1,2155,5,158,178, - 260,266,268,188,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34, - 36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78, - 80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116, - 118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148, - 150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180, - 182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212, - 214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244, - 246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276, - 278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308, - 310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340, - 342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372, - 374,0,45,2,0,109,109,450,450,3,0,45,45,128,128,188,188,4,0,42,42, - 90,90,422,422,464,464,2,0,441,441,447,447,2,0,151,151,170,170,2, - 0,437,437,489,489,2,0,482,485,487,487,3,0,32,32,91,91,244,244,11, - 0,28,29,35,35,46,46,92,92,178,179,344,344,360,360,378,378,381,381, - 387,387,416,417,2,0,433,433,435,435,4,0,101,102,115,115,144,144, - 246,246,2,0,13,13,231,231,2,0,455,455,462,462,3,0,5,5,270,270,444, - 444,3,0,266,266,455,455,462,462,3,0,425,425,458,458,477,477,3,0, - 330,330,465,465,481,481,2,0,440,440,490,490,2,0,183,183,265,265, - 3,0,130,130,180,180,402,402,4,0,152,152,174,174,201,201,317,317, - 3,0,445,445,459,459,499,499,4,0,250,250,446,446,494,496,498,498, - 2,0,74,74,320,320,3,0,459,459,492,492,499,499,2,0,439,439,450,450, - 2,0,457,457,467,467,4,0,140,140,244,244,397,397,404,404,2,0,19,19, - 369,369,2,0,5,5,11,11,2,0,509,509,529,530,4,0,452,452,527,527,531, - 531,534,534,2,0,529,530,532,532,1,0,529,530,1,0,538,539,2,0,538, - 538,541,541,4,0,452,452,527,527,529,531,533,534,3,0,241,241,508, - 509,529,530,2,0,140,140,397,397,2,0,5,5,113,113,10,0,97,97,165,165, - 222,222,229,229,334,334,436,436,470,470,472,472,488,488,502,502, - 15,0,97,97,165,165,222,222,229,229,334,334,427,427,436,436,442,442, - 448,449,454,454,460,460,470,475,488,488,491,491,502,503,9,0,5,5, - 13,13,33,33,85,85,113,113,200,200,389,389,413,413,527,527,55,0,4, - 4,13,13,23,23,38,38,41,41,43,44,54,54,56,56,69,69,75,75,78,78,84, - 85,91,91,98,99,107,107,119,119,134,134,139,139,143,143,145,145,160, - 160,165,165,167,167,194,194,197,197,199,199,201,201,205,205,207, - 209,214,214,220,220,222,223,229,229,243,243,245,245,264,264,276, - 276,281,281,283,283,293,293,317,317,321,323,334,334,357,358,364, - 364,367,367,378,380,395,395,398,399,408,408,419,420,436,436,469, - 469,488,488,502,502,1,0,437,504,2475,0,379,1,0,0,0,2,389,1,0,0,0, - 4,403,1,0,0,0,6,405,1,0,0,0,8,421,1,0,0,0,10,425,1,0,0,0,12,427, - 1,0,0,0,14,430,1,0,0,0,16,441,1,0,0,0,18,449,1,0,0,0,20,457,1,0, - 0,0,22,459,1,0,0,0,24,511,1,0,0,0,26,513,1,0,0,0,28,520,1,0,0,0, - 30,524,1,0,0,0,32,528,1,0,0,0,34,532,1,0,0,0,36,586,1,0,0,0,38,592, - 1,0,0,0,40,598,1,0,0,0,42,600,1,0,0,0,44,641,1,0,0,0,46,655,1,0, - 0,0,48,657,1,0,0,0,50,667,1,0,0,0,52,671,1,0,0,0,54,673,1,0,0,0, - 56,721,1,0,0,0,58,723,1,0,0,0,60,727,1,0,0,0,62,735,1,0,0,0,64,743, - 1,0,0,0,66,747,1,0,0,0,68,754,1,0,0,0,70,782,1,0,0,0,72,784,1,0, - 0,0,74,787,1,0,0,0,76,797,1,0,0,0,78,799,1,0,0,0,80,805,1,0,0,0, - 82,807,1,0,0,0,84,815,1,0,0,0,86,823,1,0,0,0,88,825,1,0,0,0,90,829, - 1,0,0,0,92,833,1,0,0,0,94,856,1,0,0,0,96,860,1,0,0,0,98,862,1,0, - 0,0,100,878,1,0,0,0,102,880,1,0,0,0,104,885,1,0,0,0,106,896,1,0, - 0,0,108,914,1,0,0,0,110,934,1,0,0,0,112,945,1,0,0,0,114,947,1,0, - 0,0,116,960,1,0,0,0,118,967,1,0,0,0,120,970,1,0,0,0,122,979,1,0, - 0,0,124,983,1,0,0,0,126,987,1,0,0,0,128,990,1,0,0,0,130,998,1,0, - 0,0,132,1003,1,0,0,0,134,1020,1,0,0,0,136,1027,1,0,0,0,138,1037, - 1,0,0,0,140,1046,1,0,0,0,142,1056,1,0,0,0,144,1075,1,0,0,0,146,1077, - 1,0,0,0,148,1090,1,0,0,0,150,1093,1,0,0,0,152,1102,1,0,0,0,154,1113, - 1,0,0,0,156,1126,1,0,0,0,158,1161,1,0,0,0,160,1180,1,0,0,0,162,1189, - 1,0,0,0,164,1198,1,0,0,0,166,1217,1,0,0,0,168,1239,1,0,0,0,170,1241, - 1,0,0,0,172,1271,1,0,0,0,174,1285,1,0,0,0,176,1287,1,0,0,0,178,1301, - 1,0,0,0,180,1327,1,0,0,0,182,1382,1,0,0,0,184,1384,1,0,0,0,186,1390, - 1,0,0,0,188,1392,1,0,0,0,190,1397,1,0,0,0,192,1402,1,0,0,0,194,1414, - 1,0,0,0,196,1431,1,0,0,0,198,1433,1,0,0,0,200,1435,1,0,0,0,202,1444, - 1,0,0,0,204,1446,1,0,0,0,206,1449,1,0,0,0,208,1499,1,0,0,0,210,1501, - 1,0,0,0,212,1504,1,0,0,0,214,1506,1,0,0,0,216,1513,1,0,0,0,218,1515, - 1,0,0,0,220,1517,1,0,0,0,222,1520,1,0,0,0,224,1529,1,0,0,0,226,1534, - 1,0,0,0,228,1548,1,0,0,0,230,1576,1,0,0,0,232,1586,1,0,0,0,234,1594, - 1,0,0,0,236,1599,1,0,0,0,238,1625,1,0,0,0,240,1627,1,0,0,0,242,1636, - 1,0,0,0,244,1647,1,0,0,0,246,1659,1,0,0,0,248,1685,1,0,0,0,250,1687, - 1,0,0,0,252,1705,1,0,0,0,254,1707,1,0,0,0,256,1712,1,0,0,0,258,1715, - 1,0,0,0,260,1729,1,0,0,0,262,1815,1,0,0,0,264,1846,1,0,0,0,266,1852, - 1,0,0,0,268,1970,1,0,0,0,270,1982,1,0,0,0,272,1986,1,0,0,0,274,1992, - 1,0,0,0,276,1994,1,0,0,0,278,1996,1,0,0,0,280,2000,1,0,0,0,282,2002, - 1,0,0,0,284,2007,1,0,0,0,286,2014,1,0,0,0,288,2018,1,0,0,0,290,2023, - 1,0,0,0,292,2033,1,0,0,0,294,2036,1,0,0,0,296,2042,1,0,0,0,298,2052, - 1,0,0,0,300,2054,1,0,0,0,302,2058,1,0,0,0,304,2069,1,0,0,0,306,2071, - 1,0,0,0,308,2073,1,0,0,0,310,2075,1,0,0,0,312,2080,1,0,0,0,314,2082, - 1,0,0,0,316,2084,1,0,0,0,318,2089,1,0,0,0,320,2106,1,0,0,0,322,2120, - 1,0,0,0,324,2134,1,0,0,0,326,2148,1,0,0,0,328,2150,1,0,0,0,330,2158, - 1,0,0,0,332,2161,1,0,0,0,334,2165,1,0,0,0,336,2168,1,0,0,0,338,2179, - 1,0,0,0,340,2189,1,0,0,0,342,2195,1,0,0,0,344,2203,1,0,0,0,346,2219, - 1,0,0,0,348,2228,1,0,0,0,350,2230,1,0,0,0,352,2232,1,0,0,0,354,2248, - 1,0,0,0,356,2250,1,0,0,0,358,2253,1,0,0,0,360,2255,1,0,0,0,362,2257, - 1,0,0,0,364,2259,1,0,0,0,366,2261,1,0,0,0,368,2263,1,0,0,0,370,2265, - 1,0,0,0,372,2267,1,0,0,0,374,2269,1,0,0,0,376,378,3,2,1,0,377,376, - 1,0,0,0,378,381,1,0,0,0,379,377,1,0,0,0,379,380,1,0,0,0,380,382, - 1,0,0,0,381,379,1,0,0,0,382,383,5,0,0,1,383,1,1,0,0,0,384,386,3, - 4,2,0,385,387,5,521,0,0,386,385,1,0,0,0,386,387,1,0,0,0,387,390, - 1,0,0,0,388,390,3,6,3,0,389,384,1,0,0,0,389,388,1,0,0,0,390,3,1, - 0,0,0,391,404,3,8,4,0,392,404,3,10,5,0,393,404,3,12,6,0,394,404, - 3,14,7,0,395,404,3,20,10,0,396,404,3,24,12,0,397,404,3,26,13,0,398, - 404,3,28,14,0,399,404,3,30,15,0,400,404,3,32,16,0,401,404,3,34,17, - 0,402,404,3,36,18,0,403,391,1,0,0,0,403,392,1,0,0,0,403,393,1,0, - 0,0,403,394,1,0,0,0,403,395,1,0,0,0,403,396,1,0,0,0,403,397,1,0, - 0,0,403,398,1,0,0,0,403,399,1,0,0,0,403,400,1,0,0,0,403,401,1,0, - 0,0,403,402,1,0,0,0,404,5,1,0,0,0,405,406,5,521,0,0,406,7,1,0,0, - 0,407,422,3,40,20,0,408,422,3,104,52,0,409,422,3,106,53,0,410,422, - 3,108,54,0,411,422,3,102,51,0,412,422,3,114,57,0,413,422,3,128,64, - 0,414,422,3,130,65,0,415,422,3,132,66,0,416,422,3,134,67,0,417,422, - 3,136,68,0,418,422,3,138,69,0,419,422,3,140,70,0,420,422,3,142,71, - 0,421,407,1,0,0,0,421,408,1,0,0,0,421,409,1,0,0,0,421,410,1,0,0, - 0,421,411,1,0,0,0,421,412,1,0,0,0,421,413,1,0,0,0,421,414,1,0,0, - 0,421,415,1,0,0,0,421,416,1,0,0,0,421,417,1,0,0,0,421,418,1,0,0, - 0,421,419,1,0,0,0,421,420,1,0,0,0,422,9,1,0,0,0,423,426,3,158,79, - 0,424,426,3,144,72,0,425,423,1,0,0,0,425,424,1,0,0,0,426,11,1,0, - 0,0,427,428,7,0,0,0,428,429,3,322,161,0,429,13,1,0,0,0,430,434,5, - 135,0,0,431,435,3,16,8,0,432,433,5,479,0,0,433,435,5,146,0,0,434, - 431,1,0,0,0,434,432,1,0,0,0,434,435,1,0,0,0,435,439,1,0,0,0,436, - 440,3,10,5,0,437,440,3,146,73,0,438,440,3,156,78,0,439,436,1,0,0, - 0,439,437,1,0,0,0,439,438,1,0,0,0,440,15,1,0,0,0,441,446,3,18,9, - 0,442,443,5,520,0,0,443,445,3,18,9,0,444,442,1,0,0,0,445,448,1,0, - 0,0,446,444,1,0,0,0,446,447,1,0,0,0,447,17,1,0,0,0,448,446,1,0,0, - 0,449,450,7,1,0,0,450,19,1,0,0,0,451,452,5,410,0,0,452,453,5,441, - 0,0,453,458,3,312,156,0,454,455,5,410,0,0,455,458,3,316,158,0,456, - 458,3,22,11,0,457,451,1,0,0,0,457,454,1,0,0,0,457,456,1,0,0,0,458, - 21,1,0,0,0,459,460,5,410,0,0,460,461,5,227,0,0,461,466,3,328,164, - 0,462,463,5,520,0,0,463,465,3,328,164,0,464,462,1,0,0,0,465,468, - 1,0,0,0,466,464,1,0,0,0,466,467,1,0,0,0,467,23,1,0,0,0,468,466,1, - 0,0,0,469,470,5,341,0,0,470,512,7,2,0,0,471,472,5,341,0,0,472,473, - 5,76,0,0,473,512,7,3,0,0,474,475,5,341,0,0,475,478,5,374,0,0,476, - 477,7,4,0,0,477,479,3,316,158,0,478,476,1,0,0,0,478,479,1,0,0,0, - 479,481,1,0,0,0,480,482,3,264,132,0,481,480,1,0,0,0,481,482,1,0, - 0,0,482,512,1,0,0,0,483,484,5,341,0,0,484,485,5,58,0,0,485,488,7, - 4,0,0,486,489,3,324,162,0,487,489,3,322,161,0,488,486,1,0,0,0,488, - 487,1,0,0,0,489,491,1,0,0,0,490,492,3,264,132,0,491,490,1,0,0,0, - 491,492,1,0,0,0,492,512,1,0,0,0,493,494,5,341,0,0,494,499,5,72,0, - 0,495,496,5,373,0,0,496,500,3,322,161,0,497,498,5,501,0,0,498,500, - 3,324,162,0,499,495,1,0,0,0,499,497,1,0,0,0,500,512,1,0,0,0,501, - 503,5,341,0,0,502,504,5,411,0,0,503,502,1,0,0,0,503,504,1,0,0,0, - 504,505,1,0,0,0,505,512,5,154,0,0,506,508,5,341,0,0,507,509,5,152, - 0,0,508,507,1,0,0,0,508,509,1,0,0,0,509,510,1,0,0,0,510,512,5,227, - 0,0,511,469,1,0,0,0,511,471,1,0,0,0,511,474,1,0,0,0,511,483,1,0, - 0,0,511,493,1,0,0,0,511,501,1,0,0,0,511,506,1,0,0,0,512,25,1,0,0, - 0,513,514,5,468,0,0,514,515,5,226,0,0,515,518,3,328,164,0,516,517, - 5,433,0,0,517,519,3,336,168,0,518,516,1,0,0,0,518,519,1,0,0,0,519, - 27,1,0,0,0,520,521,5,500,0,0,521,522,5,226,0,0,522,523,3,328,164, - 0,523,29,1,0,0,0,524,526,5,340,0,0,525,527,3,338,169,0,526,525,1, - 0,0,0,526,527,1,0,0,0,527,31,1,0,0,0,528,530,5,312,0,0,529,531,3, - 340,170,0,530,529,1,0,0,0,530,531,1,0,0,0,531,33,1,0,0,0,532,533, - 7,5,0,0,533,534,5,463,0,0,534,535,3,112,56,0,535,35,1,0,0,0,536, - 537,5,437,0,0,537,538,5,463,0,0,538,539,5,433,0,0,539,542,3,38,19, - 0,540,541,5,17,0,0,541,543,3,328,164,0,542,540,1,0,0,0,542,543,1, - 0,0,0,543,587,1,0,0,0,544,545,5,437,0,0,545,546,5,456,0,0,546,547, - 5,433,0,0,547,550,3,38,19,0,548,549,5,17,0,0,549,551,3,328,164,0, - 550,548,1,0,0,0,550,551,1,0,0,0,551,554,1,0,0,0,552,553,5,311,0, - 0,553,555,3,328,164,0,554,552,1,0,0,0,554,555,1,0,0,0,555,587,1, - 0,0,0,556,557,5,437,0,0,557,558,7,6,0,0,558,559,5,433,0,0,559,560, - 3,38,19,0,560,561,5,311,0,0,561,562,3,328,164,0,562,587,1,0,0,0, - 563,564,5,437,0,0,564,565,5,486,0,0,565,587,3,38,19,0,566,567,5, - 437,0,0,567,568,5,453,0,0,568,569,5,456,0,0,569,570,5,433,0,0,570, - 571,3,38,19,0,571,572,5,311,0,0,572,573,3,328,164,0,573,574,5,466, - 0,0,574,575,3,328,164,0,575,587,1,0,0,0,576,577,5,437,0,0,577,578, - 5,443,0,0,578,579,5,456,0,0,579,580,5,433,0,0,580,581,3,38,19,0, - 581,582,5,146,0,0,582,583,3,328,164,0,583,584,5,17,0,0,584,585,3, - 328,164,0,585,587,1,0,0,0,586,536,1,0,0,0,586,544,1,0,0,0,586,556, - 1,0,0,0,586,563,1,0,0,0,586,566,1,0,0,0,586,576,1,0,0,0,587,37,1, - 0,0,0,588,590,5,534,0,0,589,588,1,0,0,0,589,590,1,0,0,0,590,591, - 1,0,0,0,591,593,3,328,164,0,592,589,1,0,0,0,593,594,1,0,0,0,594, - 592,1,0,0,0,594,595,1,0,0,0,595,39,1,0,0,0,596,599,3,42,21,0,597, - 599,3,44,22,0,598,596,1,0,0,0,598,597,1,0,0,0,599,41,1,0,0,0,600, - 602,5,72,0,0,601,603,5,497,0,0,602,601,1,0,0,0,602,603,1,0,0,0,603, - 604,1,0,0,0,604,606,5,373,0,0,605,607,3,332,166,0,606,605,1,0,0, - 0,606,607,1,0,0,0,607,608,1,0,0,0,608,609,3,320,160,0,609,610,5, - 516,0,0,610,615,3,46,23,0,611,612,5,520,0,0,612,614,3,46,23,0,613, - 611,1,0,0,0,614,617,1,0,0,0,615,613,1,0,0,0,615,616,1,0,0,0,616, - 620,1,0,0,0,617,615,1,0,0,0,618,619,5,520,0,0,619,621,3,82,41,0, - 620,618,1,0,0,0,620,621,1,0,0,0,621,624,1,0,0,0,622,623,5,520,0, - 0,623,625,3,84,42,0,624,622,1,0,0,0,624,625,1,0,0,0,625,628,1,0, - 0,0,626,627,5,520,0,0,627,629,3,88,44,0,628,626,1,0,0,0,628,629, - 1,0,0,0,629,630,1,0,0,0,630,632,5,517,0,0,631,633,3,72,36,0,632, - 631,1,0,0,0,632,633,1,0,0,0,633,635,1,0,0,0,634,636,3,90,45,0,635, - 634,1,0,0,0,635,636,1,0,0,0,636,637,1,0,0,0,637,639,3,330,165,0, - 638,640,3,98,49,0,639,638,1,0,0,0,639,640,1,0,0,0,640,43,1,0,0,0, - 641,642,5,72,0,0,642,644,5,373,0,0,643,645,3,332,166,0,644,643,1, - 0,0,0,644,645,1,0,0,0,645,646,1,0,0,0,646,647,3,320,160,0,647,650, - 3,330,165,0,648,649,5,17,0,0,649,651,3,158,79,0,650,648,1,0,0,0, - 650,651,1,0,0,0,651,45,1,0,0,0,652,656,3,48,24,0,653,656,3,74,37, - 0,654,656,3,78,39,0,655,652,1,0,0,0,655,653,1,0,0,0,655,654,1,0, - 0,0,656,47,1,0,0,0,657,658,3,50,25,0,658,660,3,56,28,0,659,661,3, - 70,35,0,660,659,1,0,0,0,660,661,1,0,0,0,661,663,1,0,0,0,662,664, - 3,72,36,0,663,662,1,0,0,0,663,664,1,0,0,0,664,49,1,0,0,0,665,668, - 3,328,164,0,666,668,3,258,129,0,667,665,1,0,0,0,667,666,1,0,0,0, - 668,51,1,0,0,0,669,672,3,328,164,0,670,672,4,26,0,0,671,669,1,0, - 0,0,671,670,1,0,0,0,672,53,1,0,0,0,673,674,5,516,0,0,674,679,3,52, - 26,0,675,676,5,520,0,0,676,678,3,52,26,0,677,675,1,0,0,0,678,681, - 1,0,0,0,679,677,1,0,0,0,679,680,1,0,0,0,680,682,1,0,0,0,681,679, - 1,0,0,0,682,683,5,517,0,0,683,55,1,0,0,0,684,722,7,7,0,0,685,687, - 7,8,0,0,686,688,3,58,29,0,687,686,1,0,0,0,687,688,1,0,0,0,688,722, - 1,0,0,0,689,691,5,379,0,0,690,692,3,58,29,0,691,690,1,0,0,0,691, - 692,1,0,0,0,692,699,1,0,0,0,693,695,7,9,0,0,694,696,5,206,0,0,695, - 694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697,698,5,378,0,0,698, - 700,5,504,0,0,699,693,1,0,0,0,699,700,1,0,0,0,700,722,1,0,0,0,701, - 703,7,10,0,0,702,704,3,60,30,0,703,702,1,0,0,0,703,704,1,0,0,0,704, - 722,1,0,0,0,705,707,7,11,0,0,706,708,3,64,32,0,707,706,1,0,0,0,707, - 708,1,0,0,0,708,722,1,0,0,0,709,711,5,469,0,0,710,712,3,66,33,0, - 711,710,1,0,0,0,711,712,1,0,0,0,712,722,1,0,0,0,713,715,5,321,0, - 0,714,716,3,68,34,0,715,714,1,0,0,0,715,716,1,0,0,0,716,722,1,0, - 0,0,717,719,5,294,0,0,718,720,3,62,31,0,719,718,1,0,0,0,719,720, - 1,0,0,0,720,722,1,0,0,0,721,684,1,0,0,0,721,685,1,0,0,0,721,689, - 1,0,0,0,721,701,1,0,0,0,721,705,1,0,0,0,721,709,1,0,0,0,721,713, - 1,0,0,0,721,717,1,0,0,0,722,57,1,0,0,0,723,724,5,516,0,0,724,725, - 3,360,180,0,725,726,5,517,0,0,726,59,1,0,0,0,727,728,5,516,0,0,728, - 731,3,360,180,0,729,730,5,520,0,0,730,732,3,360,180,0,731,729,1, - 0,0,0,731,732,1,0,0,0,732,733,1,0,0,0,733,734,5,517,0,0,734,61,1, - 0,0,0,735,736,5,516,0,0,736,739,3,358,179,0,737,738,5,520,0,0,738, - 740,3,358,179,0,739,737,1,0,0,0,739,740,1,0,0,0,740,741,1,0,0,0, - 741,742,5,517,0,0,742,63,1,0,0,0,743,744,5,507,0,0,744,745,3,56, - 28,0,745,746,5,506,0,0,746,65,1,0,0,0,747,748,5,507,0,0,748,749, - 3,56,28,0,749,750,5,520,0,0,750,751,3,56,28,0,751,752,1,0,0,0,752, - 753,5,506,0,0,753,67,1,0,0,0,754,755,5,507,0,0,755,756,3,52,26,0, - 756,763,3,56,28,0,757,758,5,520,0,0,758,759,3,52,26,0,759,760,3, - 56,28,0,760,762,1,0,0,0,761,757,1,0,0,0,762,765,1,0,0,0,763,761, + 1,133,1,133,3,133,1938,8,133,1,133,1,133,1,133,5,133,1943,8,133, + 10,133,12,133,1946,9,133,3,133,1948,8,133,1,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,133,3,133,1959,8,133,1,133,1,133,1,133, + 1,133,1,133,5,133,1966,8,133,10,133,12,133,1969,9,133,1,134,1,134, + 1,135,1,135,3,135,1975,8,135,1,136,1,136,1,136,1,136,3,136,1981, + 8,136,1,137,1,137,1,138,1,138,1,139,1,139,3,139,1989,8,139,1,140, + 1,140,1,140,3,140,1994,8,140,1,141,1,141,3,141,1998,8,141,1,142, + 1,142,1,142,4,142,2003,8,142,11,142,12,142,2004,1,143,1,143,1,143, + 3,143,2010,8,143,1,144,1,144,1,144,1,144,1,144,1,145,3,145,2018, + 8,145,1,145,1,145,3,145,2022,8,145,1,146,3,146,2025,8,146,1,146, + 1,146,3,146,2029,8,146,1,147,1,147,1,147,1,148,1,148,4,148,2036, + 8,148,11,148,12,148,2037,1,148,3,148,2041,8,148,1,149,1,149,1,149, + 1,149,1,150,1,150,1,150,5,150,2050,8,150,10,150,12,150,2053,9,150, + 1,151,1,151,1,151,3,151,2058,8,151,1,152,1,152,1,153,1,153,1,154, + 1,154,1,154,1,154,1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,157, + 3,157,2076,8,157,1,158,1,158,1,158,3,158,2081,8,158,1,159,1,159, + 1,159,3,159,2086,8,159,1,159,1,159,1,159,1,159,1,159,3,159,2093, + 8,159,3,159,2095,8,159,1,160,1,160,1,160,3,160,2100,8,160,1,160, + 1,160,1,160,1,160,1,160,3,160,2107,8,160,3,160,2109,8,160,1,161, + 1,161,1,161,3,161,2114,8,161,1,161,1,161,1,161,1,161,1,161,3,161, + 2121,8,161,3,161,2123,8,161,1,162,1,162,1,162,3,162,2128,8,162,1, + 162,1,162,1,162,1,162,1,162,3,162,2135,8,162,3,162,2137,8,162,1, + 163,1,163,1,163,5,163,2142,8,163,10,163,12,163,2145,9,163,1,164, + 1,164,1,164,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,167,1,167, + 1,167,1,167,5,167,2161,8,167,10,167,12,167,2164,9,167,1,167,1,167, + 1,168,1,168,3,168,2170,8,168,1,168,3,168,2173,8,168,1,169,1,169, + 1,169,3,169,2178,8,169,1,170,1,170,1,170,1,170,3,170,2184,8,170, + 1,171,1,171,1,171,1,171,1,171,1,171,3,171,2192,8,171,1,172,1,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,3,172,2208,8,172,1,173,1,173,1,173,1,173,1,173,1,173,1,173, + 3,173,2217,8,173,1,174,1,174,1,175,1,175,1,176,1,176,1,176,1,176, + 3,176,2227,8,176,1,176,1,176,1,176,1,176,1,176,3,176,2234,8,176, + 1,176,3,176,2237,8,176,1,177,1,177,1,177,1,178,1,178,1,179,1,179, + 1,180,1,180,1,181,1,181,1,182,1,182,1,183,1,183,1,184,1,184,1,185, + 1,185,1,186,1,186,1,186,1,2143,5,156,176,258,264,266,187,0,2,4,6, + 8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50, + 52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94, + 96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128, + 130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160, + 162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192, + 194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224, + 226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256, + 258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288, + 290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320, + 322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352, + 354,356,358,360,362,364,366,368,370,372,0,45,2,0,109,109,450,450, + 3,0,45,45,128,128,188,188,4,0,42,42,90,90,422,422,464,464,2,0,441, + 441,447,447,2,0,151,151,170,170,2,0,437,437,489,489,2,0,482,485, + 487,487,3,0,32,32,91,91,244,244,11,0,28,29,35,35,46,46,92,92,178, + 179,344,344,360,360,378,378,381,381,387,387,416,417,2,0,433,433, + 435,435,4,0,101,102,115,115,144,144,246,246,2,0,13,13,231,231,2, + 0,455,455,462,462,3,0,5,5,270,270,444,444,3,0,266,266,455,455,462, + 462,3,0,425,425,458,458,477,477,3,0,330,330,465,465,481,481,2,0, + 440,440,490,490,2,0,183,183,265,265,3,0,130,130,180,180,402,402, + 4,0,152,152,174,174,201,201,317,317,3,0,445,445,459,459,499,499, + 4,0,250,250,446,446,494,496,498,498,2,0,74,74,320,320,3,0,459,459, + 492,492,499,499,2,0,439,439,450,450,2,0,457,457,467,467,4,0,140, + 140,244,244,397,397,404,404,2,0,19,19,369,369,2,0,5,5,11,11,2,0, + 509,509,529,530,4,0,452,452,527,527,531,531,534,534,2,0,529,530, + 532,532,1,0,529,530,1,0,538,539,2,0,538,538,541,541,4,0,452,452, + 527,527,529,531,533,534,3,0,241,241,508,509,529,530,2,0,140,140, + 397,397,2,0,5,5,113,113,10,0,97,97,165,165,222,222,229,229,334,334, + 436,436,470,470,472,472,488,488,502,502,15,0,97,97,165,165,222,222, + 229,229,334,334,427,427,436,436,442,442,448,449,454,454,460,460, + 470,475,488,488,491,491,502,503,9,0,5,5,13,13,33,33,85,85,113,113, + 200,200,389,389,413,413,527,527,55,0,4,4,13,13,23,23,38,38,41,41, + 43,44,54,54,56,56,69,69,75,75,78,78,84,85,91,91,98,99,107,107,119, + 119,134,134,139,139,143,143,145,145,160,160,165,165,167,167,194, + 194,197,197,199,199,201,201,205,205,207,209,214,214,220,220,222, + 223,229,229,243,243,245,245,264,264,276,276,281,281,283,283,293, + 293,317,317,321,323,334,334,357,358,364,364,367,367,378,380,395, + 395,398,399,408,408,419,420,436,436,469,469,488,488,502,502,1,0, + 437,504,2460,0,377,1,0,0,0,2,387,1,0,0,0,4,401,1,0,0,0,6,403,1,0, + 0,0,8,419,1,0,0,0,10,423,1,0,0,0,12,425,1,0,0,0,14,428,1,0,0,0,16, + 439,1,0,0,0,18,447,1,0,0,0,20,455,1,0,0,0,22,457,1,0,0,0,24,509, + 1,0,0,0,26,511,1,0,0,0,28,518,1,0,0,0,30,522,1,0,0,0,32,526,1,0, + 0,0,34,530,1,0,0,0,36,584,1,0,0,0,38,590,1,0,0,0,40,596,1,0,0,0, + 42,598,1,0,0,0,44,640,1,0,0,0,46,654,1,0,0,0,48,656,1,0,0,0,50,667, + 1,0,0,0,52,671,1,0,0,0,54,673,1,0,0,0,56,721,1,0,0,0,58,723,1,0, + 0,0,60,727,1,0,0,0,62,735,1,0,0,0,64,743,1,0,0,0,66,747,1,0,0,0, + 68,754,1,0,0,0,70,782,1,0,0,0,72,784,1,0,0,0,74,794,1,0,0,0,76,796, + 1,0,0,0,78,803,1,0,0,0,80,805,1,0,0,0,82,813,1,0,0,0,84,821,1,0, + 0,0,86,823,1,0,0,0,88,827,1,0,0,0,90,831,1,0,0,0,92,854,1,0,0,0, + 94,858,1,0,0,0,96,860,1,0,0,0,98,876,1,0,0,0,100,878,1,0,0,0,102, + 883,1,0,0,0,104,895,1,0,0,0,106,914,1,0,0,0,108,934,1,0,0,0,110, + 945,1,0,0,0,112,947,1,0,0,0,114,960,1,0,0,0,116,967,1,0,0,0,118, + 970,1,0,0,0,120,979,1,0,0,0,122,983,1,0,0,0,124,987,1,0,0,0,126, + 990,1,0,0,0,128,998,1,0,0,0,130,1003,1,0,0,0,132,1020,1,0,0,0,134, + 1027,1,0,0,0,136,1037,1,0,0,0,138,1046,1,0,0,0,140,1056,1,0,0,0, + 142,1075,1,0,0,0,144,1077,1,0,0,0,146,1090,1,0,0,0,148,1093,1,0, + 0,0,150,1102,1,0,0,0,152,1113,1,0,0,0,154,1126,1,0,0,0,156,1161, + 1,0,0,0,158,1180,1,0,0,0,160,1189,1,0,0,0,162,1198,1,0,0,0,164,1217, + 1,0,0,0,166,1239,1,0,0,0,168,1241,1,0,0,0,170,1271,1,0,0,0,172,1285, + 1,0,0,0,174,1287,1,0,0,0,176,1301,1,0,0,0,178,1327,1,0,0,0,180,1370, + 1,0,0,0,182,1372,1,0,0,0,184,1378,1,0,0,0,186,1380,1,0,0,0,188,1385, + 1,0,0,0,190,1390,1,0,0,0,192,1402,1,0,0,0,194,1419,1,0,0,0,196,1421, + 1,0,0,0,198,1423,1,0,0,0,200,1432,1,0,0,0,202,1434,1,0,0,0,204,1437, + 1,0,0,0,206,1487,1,0,0,0,208,1489,1,0,0,0,210,1492,1,0,0,0,212,1494, + 1,0,0,0,214,1501,1,0,0,0,216,1503,1,0,0,0,218,1505,1,0,0,0,220,1508, + 1,0,0,0,222,1517,1,0,0,0,224,1522,1,0,0,0,226,1536,1,0,0,0,228,1564, + 1,0,0,0,230,1574,1,0,0,0,232,1582,1,0,0,0,234,1587,1,0,0,0,236,1613, + 1,0,0,0,238,1615,1,0,0,0,240,1624,1,0,0,0,242,1635,1,0,0,0,244,1647, + 1,0,0,0,246,1673,1,0,0,0,248,1675,1,0,0,0,250,1693,1,0,0,0,252,1695, + 1,0,0,0,254,1700,1,0,0,0,256,1703,1,0,0,0,258,1717,1,0,0,0,260,1803, + 1,0,0,0,262,1834,1,0,0,0,264,1840,1,0,0,0,266,1958,1,0,0,0,268,1970, + 1,0,0,0,270,1974,1,0,0,0,272,1980,1,0,0,0,274,1982,1,0,0,0,276,1984, + 1,0,0,0,278,1988,1,0,0,0,280,1990,1,0,0,0,282,1995,1,0,0,0,284,2002, + 1,0,0,0,286,2006,1,0,0,0,288,2011,1,0,0,0,290,2021,1,0,0,0,292,2024, + 1,0,0,0,294,2030,1,0,0,0,296,2040,1,0,0,0,298,2042,1,0,0,0,300,2046, + 1,0,0,0,302,2057,1,0,0,0,304,2059,1,0,0,0,306,2061,1,0,0,0,308,2063, + 1,0,0,0,310,2068,1,0,0,0,312,2070,1,0,0,0,314,2072,1,0,0,0,316,2077, + 1,0,0,0,318,2094,1,0,0,0,320,2108,1,0,0,0,322,2122,1,0,0,0,324,2136, + 1,0,0,0,326,2138,1,0,0,0,328,2146,1,0,0,0,330,2149,1,0,0,0,332,2153, + 1,0,0,0,334,2156,1,0,0,0,336,2167,1,0,0,0,338,2177,1,0,0,0,340,2183, + 1,0,0,0,342,2191,1,0,0,0,344,2207,1,0,0,0,346,2216,1,0,0,0,348,2218, + 1,0,0,0,350,2220,1,0,0,0,352,2236,1,0,0,0,354,2238,1,0,0,0,356,2241, + 1,0,0,0,358,2243,1,0,0,0,360,2245,1,0,0,0,362,2247,1,0,0,0,364,2249, + 1,0,0,0,366,2251,1,0,0,0,368,2253,1,0,0,0,370,2255,1,0,0,0,372,2257, + 1,0,0,0,374,376,3,2,1,0,375,374,1,0,0,0,376,379,1,0,0,0,377,375, + 1,0,0,0,377,378,1,0,0,0,378,380,1,0,0,0,379,377,1,0,0,0,380,381, + 5,0,0,1,381,1,1,0,0,0,382,384,3,4,2,0,383,385,5,521,0,0,384,383, + 1,0,0,0,384,385,1,0,0,0,385,388,1,0,0,0,386,388,3,6,3,0,387,382, + 1,0,0,0,387,386,1,0,0,0,388,3,1,0,0,0,389,402,3,8,4,0,390,402,3, + 10,5,0,391,402,3,12,6,0,392,402,3,14,7,0,393,402,3,20,10,0,394,402, + 3,24,12,0,395,402,3,26,13,0,396,402,3,28,14,0,397,402,3,30,15,0, + 398,402,3,32,16,0,399,402,3,34,17,0,400,402,3,36,18,0,401,389,1, + 0,0,0,401,390,1,0,0,0,401,391,1,0,0,0,401,392,1,0,0,0,401,393,1, + 0,0,0,401,394,1,0,0,0,401,395,1,0,0,0,401,396,1,0,0,0,401,397,1, + 0,0,0,401,398,1,0,0,0,401,399,1,0,0,0,401,400,1,0,0,0,402,5,1,0, + 0,0,403,404,5,521,0,0,404,7,1,0,0,0,405,420,3,40,20,0,406,420,3, + 102,51,0,407,420,3,104,52,0,408,420,3,106,53,0,409,420,3,100,50, + 0,410,420,3,112,56,0,411,420,3,126,63,0,412,420,3,128,64,0,413,420, + 3,130,65,0,414,420,3,132,66,0,415,420,3,134,67,0,416,420,3,136,68, + 0,417,420,3,138,69,0,418,420,3,140,70,0,419,405,1,0,0,0,419,406, + 1,0,0,0,419,407,1,0,0,0,419,408,1,0,0,0,419,409,1,0,0,0,419,410, + 1,0,0,0,419,411,1,0,0,0,419,412,1,0,0,0,419,413,1,0,0,0,419,414, + 1,0,0,0,419,415,1,0,0,0,419,416,1,0,0,0,419,417,1,0,0,0,419,418, + 1,0,0,0,420,9,1,0,0,0,421,424,3,156,78,0,422,424,3,142,71,0,423, + 421,1,0,0,0,423,422,1,0,0,0,424,11,1,0,0,0,425,426,7,0,0,0,426,427, + 3,320,160,0,427,13,1,0,0,0,428,432,5,135,0,0,429,433,3,16,8,0,430, + 431,5,479,0,0,431,433,5,146,0,0,432,429,1,0,0,0,432,430,1,0,0,0, + 432,433,1,0,0,0,433,437,1,0,0,0,434,438,3,10,5,0,435,438,3,144,72, + 0,436,438,3,154,77,0,437,434,1,0,0,0,437,435,1,0,0,0,437,436,1,0, + 0,0,438,15,1,0,0,0,439,444,3,18,9,0,440,441,5,520,0,0,441,443,3, + 18,9,0,442,440,1,0,0,0,443,446,1,0,0,0,444,442,1,0,0,0,444,445,1, + 0,0,0,445,17,1,0,0,0,446,444,1,0,0,0,447,448,7,1,0,0,448,19,1,0, + 0,0,449,450,5,410,0,0,450,451,5,441,0,0,451,456,3,310,155,0,452, + 453,5,410,0,0,453,456,3,314,157,0,454,456,3,22,11,0,455,449,1,0, + 0,0,455,452,1,0,0,0,455,454,1,0,0,0,456,21,1,0,0,0,457,458,5,410, + 0,0,458,459,5,227,0,0,459,464,3,326,163,0,460,461,5,520,0,0,461, + 463,3,326,163,0,462,460,1,0,0,0,463,466,1,0,0,0,464,462,1,0,0,0, + 464,465,1,0,0,0,465,23,1,0,0,0,466,464,1,0,0,0,467,468,5,341,0,0, + 468,510,7,2,0,0,469,470,5,341,0,0,470,471,5,76,0,0,471,510,7,3,0, + 0,472,473,5,341,0,0,473,476,5,374,0,0,474,475,7,4,0,0,475,477,3, + 314,157,0,476,474,1,0,0,0,476,477,1,0,0,0,477,479,1,0,0,0,478,480, + 3,262,131,0,479,478,1,0,0,0,479,480,1,0,0,0,480,510,1,0,0,0,481, + 482,5,341,0,0,482,483,5,58,0,0,483,486,7,4,0,0,484,487,3,322,161, + 0,485,487,3,320,160,0,486,484,1,0,0,0,486,485,1,0,0,0,487,489,1, + 0,0,0,488,490,3,262,131,0,489,488,1,0,0,0,489,490,1,0,0,0,490,510, + 1,0,0,0,491,492,5,341,0,0,492,497,5,72,0,0,493,494,5,373,0,0,494, + 498,3,320,160,0,495,496,5,501,0,0,496,498,3,322,161,0,497,493,1, + 0,0,0,497,495,1,0,0,0,498,510,1,0,0,0,499,501,5,341,0,0,500,502, + 5,411,0,0,501,500,1,0,0,0,501,502,1,0,0,0,502,503,1,0,0,0,503,510, + 5,154,0,0,504,506,5,341,0,0,505,507,5,152,0,0,506,505,1,0,0,0,506, + 507,1,0,0,0,507,508,1,0,0,0,508,510,5,227,0,0,509,467,1,0,0,0,509, + 469,1,0,0,0,509,472,1,0,0,0,509,481,1,0,0,0,509,491,1,0,0,0,509, + 499,1,0,0,0,509,504,1,0,0,0,510,25,1,0,0,0,511,512,5,468,0,0,512, + 513,5,226,0,0,513,516,3,326,163,0,514,515,5,433,0,0,515,517,3,334, + 167,0,516,514,1,0,0,0,516,517,1,0,0,0,517,27,1,0,0,0,518,519,5,500, + 0,0,519,520,5,226,0,0,520,521,3,326,163,0,521,29,1,0,0,0,522,524, + 5,340,0,0,523,525,3,336,168,0,524,523,1,0,0,0,524,525,1,0,0,0,525, + 31,1,0,0,0,526,528,5,312,0,0,527,529,3,338,169,0,528,527,1,0,0,0, + 528,529,1,0,0,0,529,33,1,0,0,0,530,531,7,5,0,0,531,532,5,463,0,0, + 532,533,3,110,55,0,533,35,1,0,0,0,534,535,5,437,0,0,535,536,5,463, + 0,0,536,537,5,433,0,0,537,540,3,38,19,0,538,539,5,17,0,0,539,541, + 3,326,163,0,540,538,1,0,0,0,540,541,1,0,0,0,541,585,1,0,0,0,542, + 543,5,437,0,0,543,544,5,456,0,0,544,545,5,433,0,0,545,548,3,38,19, + 0,546,547,5,17,0,0,547,549,3,326,163,0,548,546,1,0,0,0,548,549,1, + 0,0,0,549,552,1,0,0,0,550,551,5,311,0,0,551,553,3,326,163,0,552, + 550,1,0,0,0,552,553,1,0,0,0,553,585,1,0,0,0,554,555,5,437,0,0,555, + 556,7,6,0,0,556,557,5,433,0,0,557,558,3,38,19,0,558,559,5,311,0, + 0,559,560,3,326,163,0,560,585,1,0,0,0,561,562,5,437,0,0,562,563, + 5,486,0,0,563,585,3,38,19,0,564,565,5,437,0,0,565,566,5,453,0,0, + 566,567,5,456,0,0,567,568,5,433,0,0,568,569,3,38,19,0,569,570,5, + 311,0,0,570,571,3,326,163,0,571,572,5,466,0,0,572,573,3,326,163, + 0,573,585,1,0,0,0,574,575,5,437,0,0,575,576,5,443,0,0,576,577,5, + 456,0,0,577,578,5,433,0,0,578,579,3,38,19,0,579,580,5,146,0,0,580, + 581,3,326,163,0,581,582,5,17,0,0,582,583,3,326,163,0,583,585,1,0, + 0,0,584,534,1,0,0,0,584,542,1,0,0,0,584,554,1,0,0,0,584,561,1,0, + 0,0,584,564,1,0,0,0,584,574,1,0,0,0,585,37,1,0,0,0,586,588,5,534, + 0,0,587,586,1,0,0,0,587,588,1,0,0,0,588,589,1,0,0,0,589,591,3,326, + 163,0,590,587,1,0,0,0,591,592,1,0,0,0,592,590,1,0,0,0,592,593,1, + 0,0,0,593,39,1,0,0,0,594,597,3,42,21,0,595,597,3,44,22,0,596,594, + 1,0,0,0,596,595,1,0,0,0,597,41,1,0,0,0,598,600,5,72,0,0,599,601, + 5,497,0,0,600,599,1,0,0,0,600,601,1,0,0,0,601,602,1,0,0,0,602,604, + 5,373,0,0,603,605,3,330,165,0,604,603,1,0,0,0,604,605,1,0,0,0,605, + 606,1,0,0,0,606,607,3,318,159,0,607,608,5,516,0,0,608,613,3,46,23, + 0,609,610,5,520,0,0,610,612,3,46,23,0,611,609,1,0,0,0,612,615,1, + 0,0,0,613,611,1,0,0,0,613,614,1,0,0,0,614,618,1,0,0,0,615,613,1, + 0,0,0,616,617,5,520,0,0,617,619,3,80,40,0,618,616,1,0,0,0,618,619, + 1,0,0,0,619,622,1,0,0,0,620,621,5,520,0,0,621,623,3,82,41,0,622, + 620,1,0,0,0,622,623,1,0,0,0,623,626,1,0,0,0,624,625,5,520,0,0,625, + 627,3,86,43,0,626,624,1,0,0,0,626,627,1,0,0,0,627,628,1,0,0,0,628, + 631,5,517,0,0,629,630,5,59,0,0,630,632,5,537,0,0,631,629,1,0,0,0, + 631,632,1,0,0,0,632,634,1,0,0,0,633,635,3,88,44,0,634,633,1,0,0, + 0,634,635,1,0,0,0,635,636,1,0,0,0,636,638,3,328,164,0,637,639,3, + 96,48,0,638,637,1,0,0,0,638,639,1,0,0,0,639,43,1,0,0,0,640,641,5, + 72,0,0,641,643,5,373,0,0,642,644,3,330,165,0,643,642,1,0,0,0,643, + 644,1,0,0,0,644,645,1,0,0,0,645,646,3,318,159,0,646,649,3,328,164, + 0,647,648,5,17,0,0,648,650,3,156,78,0,649,647,1,0,0,0,649,650,1, + 0,0,0,650,45,1,0,0,0,651,655,3,48,24,0,652,655,3,72,36,0,653,655, + 3,76,38,0,654,651,1,0,0,0,654,652,1,0,0,0,654,653,1,0,0,0,655,47, + 1,0,0,0,656,657,3,50,25,0,657,659,3,56,28,0,658,660,3,70,35,0,659, + 658,1,0,0,0,659,660,1,0,0,0,660,663,1,0,0,0,661,662,5,59,0,0,662, + 664,5,537,0,0,663,661,1,0,0,0,663,664,1,0,0,0,664,49,1,0,0,0,665, + 668,3,326,163,0,666,668,3,256,128,0,667,665,1,0,0,0,667,666,1,0, + 0,0,668,51,1,0,0,0,669,672,3,326,163,0,670,672,4,26,0,0,671,669, + 1,0,0,0,671,670,1,0,0,0,672,53,1,0,0,0,673,674,5,516,0,0,674,679, + 3,52,26,0,675,676,5,520,0,0,676,678,3,52,26,0,677,675,1,0,0,0,678, + 681,1,0,0,0,679,677,1,0,0,0,679,680,1,0,0,0,680,682,1,0,0,0,681, + 679,1,0,0,0,682,683,5,517,0,0,683,55,1,0,0,0,684,722,7,7,0,0,685, + 687,7,8,0,0,686,688,3,58,29,0,687,686,1,0,0,0,687,688,1,0,0,0,688, + 722,1,0,0,0,689,691,5,379,0,0,690,692,3,58,29,0,691,690,1,0,0,0, + 691,692,1,0,0,0,692,699,1,0,0,0,693,695,7,9,0,0,694,696,5,206,0, + 0,695,694,1,0,0,0,695,696,1,0,0,0,696,697,1,0,0,0,697,698,5,378, + 0,0,698,700,5,504,0,0,699,693,1,0,0,0,699,700,1,0,0,0,700,722,1, + 0,0,0,701,703,7,10,0,0,702,704,3,60,30,0,703,702,1,0,0,0,703,704, + 1,0,0,0,704,722,1,0,0,0,705,707,7,11,0,0,706,708,3,64,32,0,707,706, + 1,0,0,0,707,708,1,0,0,0,708,722,1,0,0,0,709,711,5,469,0,0,710,712, + 3,66,33,0,711,710,1,0,0,0,711,712,1,0,0,0,712,722,1,0,0,0,713,715, + 5,321,0,0,714,716,3,68,34,0,715,714,1,0,0,0,715,716,1,0,0,0,716, + 722,1,0,0,0,717,719,5,294,0,0,718,720,3,62,31,0,719,718,1,0,0,0, + 719,720,1,0,0,0,720,722,1,0,0,0,721,684,1,0,0,0,721,685,1,0,0,0, + 721,689,1,0,0,0,721,701,1,0,0,0,721,705,1,0,0,0,721,709,1,0,0,0, + 721,713,1,0,0,0,721,717,1,0,0,0,722,57,1,0,0,0,723,724,5,516,0,0, + 724,725,3,358,179,0,725,726,5,517,0,0,726,59,1,0,0,0,727,728,5,516, + 0,0,728,731,3,358,179,0,729,730,5,520,0,0,730,732,3,358,179,0,731, + 729,1,0,0,0,731,732,1,0,0,0,732,733,1,0,0,0,733,734,5,517,0,0,734, + 61,1,0,0,0,735,736,5,516,0,0,736,739,3,356,178,0,737,738,5,520,0, + 0,738,740,3,356,178,0,739,737,1,0,0,0,739,740,1,0,0,0,740,741,1, + 0,0,0,741,742,5,517,0,0,742,63,1,0,0,0,743,744,5,507,0,0,744,745, + 3,56,28,0,745,746,5,506,0,0,746,65,1,0,0,0,747,748,5,507,0,0,748, + 749,3,56,28,0,749,750,5,520,0,0,750,751,3,56,28,0,751,752,1,0,0, + 0,752,753,5,506,0,0,753,67,1,0,0,0,754,755,5,507,0,0,755,756,3,52, + 26,0,756,763,3,56,28,0,757,758,5,520,0,0,758,759,3,52,26,0,759,760, + 3,56,28,0,760,762,1,0,0,0,761,757,1,0,0,0,762,765,1,0,0,0,763,761, 1,0,0,0,763,764,1,0,0,0,764,766,1,0,0,0,765,763,1,0,0,0,766,767, - 5,506,0,0,767,69,1,0,0,0,768,769,5,64,0,0,769,771,3,86,43,0,770, + 5,506,0,0,767,69,1,0,0,0,768,769,5,64,0,0,769,771,3,84,42,0,770, 768,1,0,0,0,770,771,1,0,0,0,771,772,1,0,0,0,772,773,5,288,0,0,773, 776,5,466,0,0,774,775,5,241,0,0,775,777,5,125,0,0,776,774,1,0,0, 0,776,777,1,0,0,0,777,783,1,0,0,0,778,780,5,241,0,0,779,778,1,0, 0,0,779,780,1,0,0,0,780,781,1,0,0,0,781,783,5,244,0,0,782,770,1, - 0,0,0,782,779,1,0,0,0,783,71,1,0,0,0,784,785,5,59,0,0,785,786,5, - 537,0,0,786,73,1,0,0,0,787,788,3,50,25,0,788,789,3,56,28,0,789,792, - 5,218,0,0,790,791,5,151,0,0,791,793,3,76,38,0,792,790,1,0,0,0,792, - 793,1,0,0,0,793,795,1,0,0,0,794,796,5,423,0,0,795,794,1,0,0,0,795, - 796,1,0,0,0,796,75,1,0,0,0,797,798,5,537,0,0,798,77,1,0,0,0,799, - 800,3,50,25,0,800,801,5,17,0,0,801,803,3,80,40,0,802,804,3,72,36, - 0,803,802,1,0,0,0,803,804,1,0,0,0,804,79,1,0,0,0,805,806,3,258,129, - 0,806,81,1,0,0,0,807,808,5,424,0,0,808,809,5,146,0,0,809,810,3,52, - 26,0,810,811,5,17,0,0,811,812,3,258,129,0,812,83,1,0,0,0,813,814, - 5,64,0,0,814,816,3,86,43,0,815,813,1,0,0,0,815,816,1,0,0,0,816,817, - 1,0,0,0,817,818,5,288,0,0,818,819,5,466,0,0,819,820,3,54,27,0,820, - 821,5,241,0,0,821,822,5,125,0,0,822,85,1,0,0,0,823,824,3,304,152, - 0,824,87,1,0,0,0,825,826,5,277,0,0,826,827,5,146,0,0,827,828,5,371, - 0,0,828,89,1,0,0,0,829,830,5,269,0,0,830,831,5,34,0,0,831,832,3, - 92,46,0,832,91,1,0,0,0,833,834,5,516,0,0,834,839,3,94,47,0,835,836, - 5,520,0,0,836,838,3,94,47,0,837,835,1,0,0,0,838,841,1,0,0,0,839, - 837,1,0,0,0,839,840,1,0,0,0,840,842,1,0,0,0,841,839,1,0,0,0,842, - 843,5,517,0,0,843,93,1,0,0,0,844,857,3,52,26,0,845,846,5,516,0,0, - 846,851,3,96,48,0,847,848,5,520,0,0,848,850,3,96,48,0,849,847,1, - 0,0,0,850,853,1,0,0,0,851,849,1,0,0,0,851,852,1,0,0,0,852,854,1, - 0,0,0,853,851,1,0,0,0,854,855,5,517,0,0,855,857,1,0,0,0,856,844, - 1,0,0,0,856,845,1,0,0,0,857,95,1,0,0,0,858,861,3,280,140,0,859,861, - 3,354,177,0,860,858,1,0,0,0,860,859,1,0,0,0,861,97,1,0,0,0,862,863, - 5,202,0,0,863,872,3,322,161,0,864,868,5,516,0,0,865,867,3,100,50, - 0,866,865,1,0,0,0,867,870,1,0,0,0,868,866,1,0,0,0,868,869,1,0,0, - 0,869,871,1,0,0,0,870,868,1,0,0,0,871,873,5,517,0,0,872,864,1,0, - 0,0,872,873,1,0,0,0,873,99,1,0,0,0,874,875,7,12,0,0,875,879,7,13, - 0,0,876,877,7,14,0,0,877,879,7,15,0,0,878,874,1,0,0,0,878,876,1, - 0,0,0,879,101,1,0,0,0,880,881,5,72,0,0,881,882,5,441,0,0,882,883, - 3,314,157,0,883,884,3,330,165,0,884,103,1,0,0,0,885,886,5,72,0,0, - 886,888,5,447,0,0,887,889,3,332,166,0,888,887,1,0,0,0,888,889,1, - 0,0,0,889,890,1,0,0,0,890,892,3,318,159,0,891,893,3,72,36,0,892, - 891,1,0,0,0,892,893,1,0,0,0,893,894,1,0,0,0,894,895,3,330,165,0, - 895,105,1,0,0,0,896,898,5,72,0,0,897,899,5,497,0,0,898,897,1,0,0, - 0,898,899,1,0,0,0,899,900,1,0,0,0,900,902,5,501,0,0,901,903,3,332, - 166,0,902,901,1,0,0,0,902,903,1,0,0,0,903,904,1,0,0,0,904,906,3, - 326,163,0,905,907,3,54,27,0,906,905,1,0,0,0,906,907,1,0,0,0,907, - 909,1,0,0,0,908,910,3,72,36,0,909,908,1,0,0,0,909,910,1,0,0,0,910, - 911,1,0,0,0,911,912,5,17,0,0,912,913,3,158,79,0,913,107,1,0,0,0, + 0,0,0,782,779,1,0,0,0,783,71,1,0,0,0,784,785,3,50,25,0,785,786,3, + 56,28,0,786,789,5,218,0,0,787,788,5,151,0,0,788,790,3,74,37,0,789, + 787,1,0,0,0,789,790,1,0,0,0,790,792,1,0,0,0,791,793,5,423,0,0,792, + 791,1,0,0,0,792,793,1,0,0,0,793,73,1,0,0,0,794,795,5,537,0,0,795, + 75,1,0,0,0,796,797,3,50,25,0,797,798,5,17,0,0,798,801,3,78,39,0, + 799,800,5,59,0,0,800,802,5,537,0,0,801,799,1,0,0,0,801,802,1,0,0, + 0,802,77,1,0,0,0,803,804,3,256,128,0,804,79,1,0,0,0,805,806,5,424, + 0,0,806,807,5,146,0,0,807,808,3,52,26,0,808,809,5,17,0,0,809,810, + 3,256,128,0,810,81,1,0,0,0,811,812,5,64,0,0,812,814,3,84,42,0,813, + 811,1,0,0,0,813,814,1,0,0,0,814,815,1,0,0,0,815,816,5,288,0,0,816, + 817,5,466,0,0,817,818,3,54,27,0,818,819,5,241,0,0,819,820,5,125, + 0,0,820,83,1,0,0,0,821,822,3,302,151,0,822,85,1,0,0,0,823,824,5, + 277,0,0,824,825,5,146,0,0,825,826,5,371,0,0,826,87,1,0,0,0,827,828, + 5,269,0,0,828,829,5,34,0,0,829,830,3,90,45,0,830,89,1,0,0,0,831, + 832,5,516,0,0,832,837,3,92,46,0,833,834,5,520,0,0,834,836,3,92,46, + 0,835,833,1,0,0,0,836,839,1,0,0,0,837,835,1,0,0,0,837,838,1,0,0, + 0,838,840,1,0,0,0,839,837,1,0,0,0,840,841,5,517,0,0,841,91,1,0,0, + 0,842,855,3,52,26,0,843,844,5,516,0,0,844,849,3,94,47,0,845,846, + 5,520,0,0,846,848,3,94,47,0,847,845,1,0,0,0,848,851,1,0,0,0,849, + 847,1,0,0,0,849,850,1,0,0,0,850,852,1,0,0,0,851,849,1,0,0,0,852, + 853,5,517,0,0,853,855,1,0,0,0,854,842,1,0,0,0,854,843,1,0,0,0,855, + 93,1,0,0,0,856,859,3,278,139,0,857,859,3,352,176,0,858,856,1,0,0, + 0,858,857,1,0,0,0,859,95,1,0,0,0,860,861,5,202,0,0,861,870,3,320, + 160,0,862,866,5,516,0,0,863,865,3,98,49,0,864,863,1,0,0,0,865,868, + 1,0,0,0,866,864,1,0,0,0,866,867,1,0,0,0,867,869,1,0,0,0,868,866, + 1,0,0,0,869,871,5,517,0,0,870,862,1,0,0,0,870,871,1,0,0,0,871,97, + 1,0,0,0,872,873,7,12,0,0,873,877,7,13,0,0,874,875,7,14,0,0,875,877, + 7,15,0,0,876,872,1,0,0,0,876,874,1,0,0,0,877,99,1,0,0,0,878,879, + 5,72,0,0,879,880,5,441,0,0,880,881,3,312,156,0,881,882,3,328,164, + 0,882,101,1,0,0,0,883,884,5,72,0,0,884,886,5,447,0,0,885,887,3,330, + 165,0,886,885,1,0,0,0,886,887,1,0,0,0,887,888,1,0,0,0,888,891,3, + 316,158,0,889,890,5,59,0,0,890,892,5,537,0,0,891,889,1,0,0,0,891, + 892,1,0,0,0,892,893,1,0,0,0,893,894,3,328,164,0,894,103,1,0,0,0, + 895,897,5,72,0,0,896,898,5,497,0,0,897,896,1,0,0,0,897,898,1,0,0, + 0,898,899,1,0,0,0,899,901,5,501,0,0,900,902,3,330,165,0,901,900, + 1,0,0,0,901,902,1,0,0,0,902,903,1,0,0,0,903,905,3,324,162,0,904, + 906,3,54,27,0,905,904,1,0,0,0,905,906,1,0,0,0,906,909,1,0,0,0,907, + 908,5,59,0,0,908,910,5,537,0,0,909,907,1,0,0,0,909,910,1,0,0,0,910, + 911,1,0,0,0,911,912,5,17,0,0,912,913,3,156,78,0,913,105,1,0,0,0, 914,918,5,72,0,0,915,919,5,497,0,0,916,917,5,497,0,0,917,919,5,370, 0,0,918,915,1,0,0,0,918,916,1,0,0,0,918,919,1,0,0,0,919,920,1,0, - 0,0,920,922,5,153,0,0,921,923,3,332,166,0,922,921,1,0,0,0,922,923, - 1,0,0,0,923,924,1,0,0,0,924,925,3,270,135,0,925,926,5,17,0,0,926, - 929,3,304,152,0,927,928,5,195,0,0,928,930,7,16,0,0,929,927,1,0,0, - 0,929,930,1,0,0,0,930,932,1,0,0,0,931,933,3,110,55,0,932,931,1,0, - 0,0,932,933,1,0,0,0,933,109,1,0,0,0,934,935,5,412,0,0,935,936,5, - 463,0,0,936,942,3,112,56,0,937,938,5,520,0,0,938,939,5,463,0,0,939, - 941,3,112,56,0,940,937,1,0,0,0,941,944,1,0,0,0,942,940,1,0,0,0,942, - 943,1,0,0,0,943,111,1,0,0,0,944,942,1,0,0,0,945,946,5,537,0,0,946, - 113,1,0,0,0,947,948,5,8,0,0,948,950,5,373,0,0,949,951,3,334,167, - 0,950,949,1,0,0,0,950,951,1,0,0,0,951,952,1,0,0,0,952,958,3,322, - 161,0,953,959,3,116,58,0,954,959,3,118,59,0,955,959,3,120,60,0,956, - 959,3,122,61,0,957,959,3,124,62,0,958,953,1,0,0,0,958,954,1,0,0, - 0,958,955,1,0,0,0,958,956,1,0,0,0,958,957,1,0,0,0,959,115,1,0,0, - 0,960,962,5,311,0,0,961,963,3,328,164,0,962,961,1,0,0,0,962,963, - 1,0,0,0,963,964,1,0,0,0,964,965,5,388,0,0,965,966,3,328,164,0,966, - 117,1,0,0,0,967,968,5,340,0,0,968,969,3,336,168,0,969,119,1,0,0, - 0,970,971,5,437,0,0,971,972,5,64,0,0,972,973,3,86,43,0,973,974,5, - 288,0,0,974,975,5,466,0,0,975,977,3,54,27,0,976,978,3,126,63,0,977, - 976,1,0,0,0,977,978,1,0,0,0,978,121,1,0,0,0,979,980,5,116,0,0,980, - 981,5,64,0,0,981,982,3,86,43,0,982,123,1,0,0,0,983,984,5,437,0,0, - 984,985,5,403,0,0,985,986,3,54,27,0,986,125,1,0,0,0,987,988,5,241, - 0,0,988,989,5,125,0,0,989,127,1,0,0,0,990,991,5,8,0,0,991,992,5, - 501,0,0,992,996,3,324,162,0,993,997,3,116,58,0,994,995,5,17,0,0, - 995,997,3,158,79,0,996,993,1,0,0,0,996,994,1,0,0,0,997,129,1,0,0, - 0,998,999,5,8,0,0,999,1000,5,447,0,0,1000,1001,3,316,158,0,1001, - 1002,3,118,59,0,1002,131,1,0,0,0,1003,1007,5,8,0,0,1004,1008,5,497, + 0,0,920,922,5,153,0,0,921,923,3,330,165,0,922,921,1,0,0,0,922,923, + 1,0,0,0,923,924,1,0,0,0,924,925,3,268,134,0,925,926,5,17,0,0,926, + 929,3,302,151,0,927,928,5,195,0,0,928,930,7,16,0,0,929,927,1,0,0, + 0,929,930,1,0,0,0,930,932,1,0,0,0,931,933,3,108,54,0,932,931,1,0, + 0,0,932,933,1,0,0,0,933,107,1,0,0,0,934,935,5,412,0,0,935,936,5, + 463,0,0,936,942,3,110,55,0,937,938,5,520,0,0,938,939,5,463,0,0,939, + 941,3,110,55,0,940,937,1,0,0,0,941,944,1,0,0,0,942,940,1,0,0,0,942, + 943,1,0,0,0,943,109,1,0,0,0,944,942,1,0,0,0,945,946,5,537,0,0,946, + 111,1,0,0,0,947,948,5,8,0,0,948,950,5,373,0,0,949,951,3,332,166, + 0,950,949,1,0,0,0,950,951,1,0,0,0,951,952,1,0,0,0,952,958,3,320, + 160,0,953,959,3,114,57,0,954,959,3,116,58,0,955,959,3,118,59,0,956, + 959,3,120,60,0,957,959,3,122,61,0,958,953,1,0,0,0,958,954,1,0,0, + 0,958,955,1,0,0,0,958,956,1,0,0,0,958,957,1,0,0,0,959,113,1,0,0, + 0,960,962,5,311,0,0,961,963,3,326,163,0,962,961,1,0,0,0,962,963, + 1,0,0,0,963,964,1,0,0,0,964,965,5,388,0,0,965,966,3,326,163,0,966, + 115,1,0,0,0,967,968,5,340,0,0,968,969,3,334,167,0,969,117,1,0,0, + 0,970,971,5,437,0,0,971,972,5,64,0,0,972,973,3,84,42,0,973,974,5, + 288,0,0,974,975,5,466,0,0,975,977,3,54,27,0,976,978,3,124,62,0,977, + 976,1,0,0,0,977,978,1,0,0,0,978,119,1,0,0,0,979,980,5,116,0,0,980, + 981,5,64,0,0,981,982,3,84,42,0,982,121,1,0,0,0,983,984,5,437,0,0, + 984,985,5,403,0,0,985,986,3,54,27,0,986,123,1,0,0,0,987,988,5,241, + 0,0,988,989,5,125,0,0,989,125,1,0,0,0,990,991,5,8,0,0,991,992,5, + 501,0,0,992,996,3,322,161,0,993,997,3,114,57,0,994,995,5,17,0,0, + 995,997,3,156,78,0,996,993,1,0,0,0,996,994,1,0,0,0,997,127,1,0,0, + 0,998,999,5,8,0,0,999,1000,5,447,0,0,1000,1001,3,314,157,0,1001, + 1002,3,116,58,0,1002,129,1,0,0,0,1003,1007,5,8,0,0,1004,1008,5,497, 0,0,1005,1006,5,497,0,0,1006,1008,5,370,0,0,1007,1004,1,0,0,0,1007, 1005,1,0,0,0,1007,1008,1,0,0,0,1008,1009,1,0,0,0,1009,1011,5,153, - 0,0,1010,1012,3,334,167,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012, - 1013,1,0,0,0,1013,1014,3,272,136,0,1014,1015,5,17,0,0,1015,1018, - 3,304,152,0,1016,1017,5,195,0,0,1017,1019,7,16,0,0,1018,1016,1,0, - 0,0,1018,1019,1,0,0,0,1019,133,1,0,0,0,1020,1021,5,116,0,0,1021, - 1023,5,441,0,0,1022,1024,3,334,167,0,1023,1022,1,0,0,0,1023,1024, - 1,0,0,0,1024,1025,1,0,0,0,1025,1026,3,312,156,0,1026,135,1,0,0,0, + 0,0,1010,1012,3,332,166,0,1011,1010,1,0,0,0,1011,1012,1,0,0,0,1012, + 1013,1,0,0,0,1013,1014,3,270,135,0,1014,1015,5,17,0,0,1015,1018, + 3,302,151,0,1016,1017,5,195,0,0,1017,1019,7,16,0,0,1018,1016,1,0, + 0,0,1018,1019,1,0,0,0,1019,131,1,0,0,0,1020,1021,5,116,0,0,1021, + 1023,5,441,0,0,1022,1024,3,332,166,0,1023,1022,1,0,0,0,1023,1024, + 1,0,0,0,1024,1025,1,0,0,0,1025,1026,3,310,155,0,1026,133,1,0,0,0, 1027,1029,5,116,0,0,1028,1030,5,497,0,0,1029,1028,1,0,0,0,1029,1030, - 1,0,0,0,1030,1031,1,0,0,0,1031,1033,5,373,0,0,1032,1034,3,334,167, + 1,0,0,0,1030,1031,1,0,0,0,1031,1033,5,373,0,0,1032,1034,3,332,166, 0,1033,1032,1,0,0,0,1033,1034,1,0,0,0,1034,1035,1,0,0,0,1035,1036, - 3,322,161,0,1036,137,1,0,0,0,1037,1038,5,116,0,0,1038,1040,5,447, - 0,0,1039,1041,3,334,167,0,1040,1039,1,0,0,0,1040,1041,1,0,0,0,1041, - 1042,1,0,0,0,1042,1044,3,316,158,0,1043,1045,7,17,0,0,1044,1043, - 1,0,0,0,1044,1045,1,0,0,0,1045,139,1,0,0,0,1046,1048,5,116,0,0,1047, + 3,320,160,0,1036,135,1,0,0,0,1037,1038,5,116,0,0,1038,1040,5,447, + 0,0,1039,1041,3,332,166,0,1040,1039,1,0,0,0,1040,1041,1,0,0,0,1041, + 1042,1,0,0,0,1042,1044,3,314,157,0,1043,1045,7,17,0,0,1044,1043, + 1,0,0,0,1044,1045,1,0,0,0,1045,137,1,0,0,0,1046,1048,5,116,0,0,1047, 1049,5,497,0,0,1048,1047,1,0,0,0,1048,1049,1,0,0,0,1049,1050,1,0, - 0,0,1050,1052,5,501,0,0,1051,1053,3,334,167,0,1052,1051,1,0,0,0, - 1052,1053,1,0,0,0,1053,1054,1,0,0,0,1054,1055,3,324,162,0,1055,141, + 0,0,1050,1052,5,501,0,0,1051,1053,3,332,166,0,1052,1051,1,0,0,0, + 1052,1053,1,0,0,0,1053,1054,1,0,0,0,1054,1055,3,322,161,0,1055,139, 1,0,0,0,1056,1060,5,116,0,0,1057,1061,5,497,0,0,1058,1059,5,497, 0,0,1059,1061,5,370,0,0,1060,1057,1,0,0,0,1060,1058,1,0,0,0,1060, - 1061,1,0,0,0,1061,1062,1,0,0,0,1062,1064,5,153,0,0,1063,1065,3,334, - 167,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1066,1,0,0,0,1066, - 1067,3,272,136,0,1067,143,1,0,0,0,1068,1070,5,132,0,0,1069,1068, - 1,0,0,0,1069,1070,1,0,0,0,1070,1071,1,0,0,0,1071,1076,3,146,73,0, - 1072,1076,3,154,77,0,1073,1074,5,132,0,0,1074,1076,3,156,78,0,1075, - 1069,1,0,0,0,1075,1072,1,0,0,0,1075,1073,1,0,0,0,1076,145,1,0,0, - 0,1077,1078,5,177,0,0,1078,1079,7,18,0,0,1079,1088,3,322,161,0,1080, - 1082,3,148,74,0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082,1084,1, + 1061,1,0,0,0,1061,1062,1,0,0,0,1062,1064,5,153,0,0,1063,1065,3,332, + 166,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1066,1,0,0,0,1066, + 1067,3,270,135,0,1067,141,1,0,0,0,1068,1070,5,132,0,0,1069,1068, + 1,0,0,0,1069,1070,1,0,0,0,1070,1071,1,0,0,0,1071,1076,3,144,72,0, + 1072,1076,3,152,76,0,1073,1074,5,132,0,0,1074,1076,3,154,77,0,1075, + 1069,1,0,0,0,1075,1072,1,0,0,0,1075,1073,1,0,0,0,1076,143,1,0,0, + 0,1077,1078,5,177,0,0,1078,1079,7,18,0,0,1079,1088,3,320,160,0,1080, + 1082,3,146,73,0,1081,1080,1,0,0,0,1081,1082,1,0,0,0,1082,1084,1, 0,0,0,1083,1085,3,54,27,0,1084,1083,1,0,0,0,1084,1085,1,0,0,0,1085, - 1086,1,0,0,0,1086,1089,3,158,79,0,1087,1089,3,150,75,0,1088,1081, - 1,0,0,0,1088,1087,1,0,0,0,1089,147,1,0,0,0,1090,1091,5,268,0,0,1091, - 1092,3,336,168,0,1092,149,1,0,0,0,1093,1094,5,414,0,0,1094,1099, - 3,152,76,0,1095,1096,5,520,0,0,1096,1098,3,152,76,0,1097,1095,1, + 1086,1,0,0,0,1086,1089,3,156,78,0,1087,1089,3,148,74,0,1088,1081, + 1,0,0,0,1088,1087,1,0,0,0,1089,145,1,0,0,0,1090,1091,5,268,0,0,1091, + 1092,3,334,167,0,1092,147,1,0,0,0,1093,1094,5,414,0,0,1094,1099, + 3,150,75,0,1095,1096,5,520,0,0,1096,1098,3,150,75,0,1097,1095,1, 0,0,0,1098,1101,1,0,0,0,1099,1097,1,0,0,0,1099,1100,1,0,0,0,1100, - 151,1,0,0,0,1101,1099,1,0,0,0,1102,1103,5,516,0,0,1103,1108,3,354, - 177,0,1104,1105,5,520,0,0,1105,1107,3,354,177,0,1106,1104,1,0,0, + 149,1,0,0,0,1101,1099,1,0,0,0,1102,1103,5,516,0,0,1103,1108,3,352, + 176,0,1104,1105,5,520,0,0,1105,1107,3,352,176,0,1106,1104,1,0,0, 0,1107,1110,1,0,0,0,1108,1106,1,0,0,0,1108,1109,1,0,0,0,1109,1111, - 1,0,0,0,1110,1108,1,0,0,0,1111,1112,5,517,0,0,1112,153,1,0,0,0,1113, + 1,0,0,0,1110,1108,1,0,0,0,1111,1112,5,517,0,0,1112,151,1,0,0,0,1113, 1114,5,24,0,0,1114,1115,5,354,0,0,1115,1116,5,340,0,0,1116,1120, - 5,521,0,0,1117,1118,3,146,73,0,1118,1119,5,521,0,0,1119,1121,1,0, + 5,521,0,0,1117,1118,3,144,72,0,1118,1119,5,521,0,0,1119,1121,1,0, 0,0,1120,1117,1,0,0,0,1121,1122,1,0,0,0,1122,1120,1,0,0,0,1122,1123, - 1,0,0,0,1123,1124,1,0,0,0,1124,1125,5,122,0,0,1125,155,1,0,0,0,1126, + 1,0,0,0,1123,1124,1,0,0,0,1124,1125,5,122,0,0,1125,153,1,0,0,0,1126, 1127,5,354,0,0,1127,1128,5,340,0,0,1128,1132,5,24,0,0,1129,1130, - 3,146,73,0,1130,1131,5,521,0,0,1131,1133,1,0,0,0,1132,1129,1,0,0, + 3,144,72,0,1130,1131,5,521,0,0,1131,1133,1,0,0,0,1132,1129,1,0,0, 0,1133,1134,1,0,0,0,1134,1132,1,0,0,0,1134,1135,1,0,0,0,1135,1136, - 1,0,0,0,1136,1137,5,122,0,0,1137,157,1,0,0,0,1138,1139,6,79,-1,0, - 1139,1162,3,160,80,0,1140,1141,3,162,81,0,1141,1142,3,158,79,5,1142, - 1162,1,0,0,0,1143,1144,5,516,0,0,1144,1145,3,158,79,0,1145,1146, - 5,517,0,0,1146,1162,1,0,0,0,1147,1149,3,170,85,0,1148,1150,3,230, - 115,0,1149,1148,1,0,0,0,1149,1150,1,0,0,0,1150,1152,1,0,0,0,1151, - 1153,3,234,117,0,1152,1151,1,0,0,0,1152,1153,1,0,0,0,1153,1162,1, - 0,0,0,1154,1156,3,168,84,0,1155,1157,3,230,115,0,1156,1155,1,0,0, - 0,1156,1157,1,0,0,0,1157,1159,1,0,0,0,1158,1160,3,234,117,0,1159, + 1,0,0,0,1136,1137,5,122,0,0,1137,155,1,0,0,0,1138,1139,6,78,-1,0, + 1139,1162,3,158,79,0,1140,1141,3,160,80,0,1141,1142,3,156,78,5,1142, + 1162,1,0,0,0,1143,1144,5,516,0,0,1144,1145,3,156,78,0,1145,1146, + 5,517,0,0,1146,1162,1,0,0,0,1147,1149,3,168,84,0,1148,1150,3,228, + 114,0,1149,1148,1,0,0,0,1149,1150,1,0,0,0,1150,1152,1,0,0,0,1151, + 1153,3,232,116,0,1152,1151,1,0,0,0,1152,1153,1,0,0,0,1153,1162,1, + 0,0,0,1154,1156,3,166,83,0,1155,1157,3,228,114,0,1156,1155,1,0,0, + 0,1156,1157,1,0,0,0,1157,1159,1,0,0,0,1158,1160,3,232,116,0,1159, 1158,1,0,0,0,1159,1160,1,0,0,0,1160,1162,1,0,0,0,1161,1138,1,0,0, 0,1161,1140,1,0,0,0,1161,1143,1,0,0,0,1161,1147,1,0,0,0,1161,1154, 1,0,0,0,1162,1177,1,0,0,0,1163,1164,10,3,0,0,1164,1166,7,19,0,0, 1165,1167,5,5,0,0,1166,1165,1,0,0,0,1166,1167,1,0,0,0,1167,1168, - 1,0,0,0,1168,1170,3,158,79,0,1169,1171,3,230,115,0,1170,1169,1,0, - 0,0,1170,1171,1,0,0,0,1171,1173,1,0,0,0,1172,1174,3,234,117,0,1173, + 1,0,0,0,1168,1170,3,156,78,0,1169,1171,3,228,114,0,1170,1169,1,0, + 0,0,1170,1171,1,0,0,0,1171,1173,1,0,0,0,1172,1174,3,232,116,0,1173, 1172,1,0,0,0,1173,1174,1,0,0,0,1174,1176,1,0,0,0,1175,1163,1,0,0, - 0,1176,1179,1,0,0,0,1177,1175,1,0,0,0,1177,1178,1,0,0,0,1178,159, - 1,0,0,0,1179,1177,1,0,0,0,1180,1181,5,414,0,0,1181,1186,3,258,129, - 0,1182,1183,5,520,0,0,1183,1185,3,258,129,0,1184,1182,1,0,0,0,1185, - 1188,1,0,0,0,1186,1184,1,0,0,0,1186,1187,1,0,0,0,1187,161,1,0,0, - 0,1188,1186,1,0,0,0,1189,1190,5,433,0,0,1190,1195,3,164,82,0,1191, - 1192,5,520,0,0,1192,1194,3,164,82,0,1193,1191,1,0,0,0,1194,1197, - 1,0,0,0,1195,1193,1,0,0,0,1195,1196,1,0,0,0,1196,163,1,0,0,0,1197, - 1195,1,0,0,0,1198,1210,3,166,83,0,1199,1200,5,516,0,0,1200,1205, + 0,1176,1179,1,0,0,0,1177,1175,1,0,0,0,1177,1178,1,0,0,0,1178,157, + 1,0,0,0,1179,1177,1,0,0,0,1180,1181,5,414,0,0,1181,1186,3,256,128, + 0,1182,1183,5,520,0,0,1183,1185,3,256,128,0,1184,1182,1,0,0,0,1185, + 1188,1,0,0,0,1186,1184,1,0,0,0,1186,1187,1,0,0,0,1187,159,1,0,0, + 0,1188,1186,1,0,0,0,1189,1190,5,433,0,0,1190,1195,3,162,81,0,1191, + 1192,5,520,0,0,1192,1194,3,162,81,0,1193,1191,1,0,0,0,1194,1197, + 1,0,0,0,1195,1193,1,0,0,0,1195,1196,1,0,0,0,1196,161,1,0,0,0,1197, + 1195,1,0,0,0,1198,1210,3,164,82,0,1199,1200,5,516,0,0,1200,1205, 3,52,26,0,1201,1202,5,520,0,0,1202,1204,3,52,26,0,1203,1201,1,0, 0,0,1204,1207,1,0,0,0,1205,1203,1,0,0,0,1205,1206,1,0,0,0,1206,1208, 1,0,0,0,1207,1205,1,0,0,0,1208,1209,5,517,0,0,1209,1211,1,0,0,0, 1210,1199,1,0,0,0,1210,1211,1,0,0,0,1211,1212,1,0,0,0,1212,1213, - 5,17,0,0,1213,1214,5,516,0,0,1214,1215,3,158,79,0,1215,1216,5,517, - 0,0,1216,165,1,0,0,0,1217,1218,3,304,152,0,1218,167,1,0,0,0,1219, - 1221,3,170,85,0,1220,1222,3,176,88,0,1221,1220,1,0,0,0,1221,1222, - 1,0,0,0,1222,1224,1,0,0,0,1223,1225,3,204,102,0,1224,1223,1,0,0, - 0,1224,1225,1,0,0,0,1225,1227,1,0,0,0,1226,1228,3,206,103,0,1227, - 1226,1,0,0,0,1227,1228,1,0,0,0,1228,1230,1,0,0,0,1229,1231,3,220, - 110,0,1230,1229,1,0,0,0,1230,1231,1,0,0,0,1231,1233,1,0,0,0,1232, - 1234,3,222,111,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234,1240,1, - 0,0,0,1235,1236,3,170,85,0,1236,1237,3,176,88,0,1237,1238,3,228, - 114,0,1238,1240,1,0,0,0,1239,1219,1,0,0,0,1239,1235,1,0,0,0,1240, - 169,1,0,0,0,1241,1243,5,336,0,0,1242,1244,3,364,182,0,1243,1242, + 5,17,0,0,1213,1214,5,516,0,0,1214,1215,3,156,78,0,1215,1216,5,517, + 0,0,1216,163,1,0,0,0,1217,1218,3,302,151,0,1218,165,1,0,0,0,1219, + 1221,3,168,84,0,1220,1222,3,174,87,0,1221,1220,1,0,0,0,1221,1222, + 1,0,0,0,1222,1224,1,0,0,0,1223,1225,3,202,101,0,1224,1223,1,0,0, + 0,1224,1225,1,0,0,0,1225,1227,1,0,0,0,1226,1228,3,204,102,0,1227, + 1226,1,0,0,0,1227,1228,1,0,0,0,1228,1230,1,0,0,0,1229,1231,3,218, + 109,0,1230,1229,1,0,0,0,1230,1231,1,0,0,0,1231,1233,1,0,0,0,1232, + 1234,3,220,110,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234,1240,1, + 0,0,0,1235,1236,3,168,84,0,1236,1237,3,174,87,0,1237,1238,3,226, + 113,0,1238,1240,1,0,0,0,1239,1219,1,0,0,0,1239,1235,1,0,0,0,1240, + 167,1,0,0,0,1241,1243,5,336,0,0,1242,1244,3,362,181,0,1243,1242, 1,0,0,0,1243,1244,1,0,0,0,1244,1254,1,0,0,0,1245,1255,5,527,0,0, - 1246,1251,3,172,86,0,1247,1248,5,520,0,0,1248,1250,3,172,86,0,1249, + 1246,1251,3,170,85,0,1247,1248,5,520,0,0,1248,1250,3,170,85,0,1249, 1247,1,0,0,0,1250,1253,1,0,0,0,1251,1249,1,0,0,0,1251,1252,1,0,0, 0,1252,1255,1,0,0,0,1253,1251,1,0,0,0,1254,1245,1,0,0,0,1254,1246, - 1,0,0,0,1255,171,1,0,0,0,1256,1272,3,174,87,0,1257,1262,3,52,26, + 1,0,0,0,1255,169,1,0,0,0,1256,1272,3,172,86,0,1257,1262,3,52,26, 0,1258,1260,5,17,0,0,1259,1258,1,0,0,0,1259,1260,1,0,0,0,1260,1261, - 1,0,0,0,1261,1263,3,258,129,0,1262,1259,1,0,0,0,1262,1263,1,0,0, - 0,1263,1272,1,0,0,0,1264,1269,3,258,129,0,1265,1267,5,17,0,0,1266, + 1,0,0,0,1261,1263,3,256,128,0,1262,1259,1,0,0,0,1262,1263,1,0,0, + 0,1263,1272,1,0,0,0,1264,1269,3,256,128,0,1265,1267,5,17,0,0,1266, 1265,1,0,0,0,1266,1267,1,0,0,0,1267,1268,1,0,0,0,1268,1270,3,52, 26,0,1269,1266,1,0,0,0,1269,1270,1,0,0,0,1270,1272,1,0,0,0,1271, - 1256,1,0,0,0,1271,1257,1,0,0,0,1271,1264,1,0,0,0,1272,173,1,0,0, - 0,1273,1274,3,268,134,0,1274,1275,5,262,0,0,1275,1276,3,226,113, - 0,1276,1277,5,17,0,0,1277,1278,3,304,152,0,1278,1286,1,0,0,0,1279, - 1280,3,268,134,0,1280,1281,5,262,0,0,1281,1282,3,296,148,0,1282, - 1283,5,17,0,0,1283,1284,3,304,152,0,1284,1286,1,0,0,0,1285,1273, - 1,0,0,0,1285,1279,1,0,0,0,1286,175,1,0,0,0,1287,1288,5,151,0,0,1288, - 1289,3,178,89,0,1289,177,1,0,0,0,1290,1291,6,89,-1,0,1291,1296,3, - 180,90,0,1292,1293,5,520,0,0,1293,1295,3,180,90,0,1294,1292,1,0, + 1256,1,0,0,0,1271,1257,1,0,0,0,1271,1264,1,0,0,0,1272,171,1,0,0, + 0,1273,1274,3,266,133,0,1274,1275,5,262,0,0,1275,1276,3,224,112, + 0,1276,1277,5,17,0,0,1277,1278,3,302,151,0,1278,1286,1,0,0,0,1279, + 1280,3,266,133,0,1280,1281,5,262,0,0,1281,1282,3,294,147,0,1282, + 1283,5,17,0,0,1283,1284,3,302,151,0,1284,1286,1,0,0,0,1285,1273, + 1,0,0,0,1285,1279,1,0,0,0,1286,173,1,0,0,0,1287,1288,5,151,0,0,1288, + 1289,3,176,88,0,1289,175,1,0,0,0,1290,1291,6,88,-1,0,1291,1296,3, + 178,89,0,1292,1293,5,520,0,0,1293,1295,3,178,89,0,1294,1292,1,0, 0,0,1295,1298,1,0,0,0,1296,1294,1,0,0,0,1296,1297,1,0,0,0,1297,1302, - 1,0,0,0,1298,1296,1,0,0,0,1299,1302,3,188,94,0,1300,1302,3,190,95, + 1,0,0,0,1298,1296,1,0,0,0,1299,1302,3,186,93,0,1300,1302,3,188,94, 0,1301,1290,1,0,0,0,1301,1299,1,0,0,0,1301,1300,1,0,0,0,1302,1324, 1,0,0,0,1303,1304,10,3,0,0,1304,1305,5,73,0,0,1305,1306,5,185,0, - 0,1306,1323,3,178,89,4,1307,1309,10,4,0,0,1308,1310,5,233,0,0,1309, + 0,1306,1323,3,176,88,4,1307,1309,10,4,0,0,1308,1310,5,233,0,0,1309, 1308,1,0,0,0,1309,1310,1,0,0,0,1310,1312,1,0,0,0,1311,1313,7,20, 0,0,1312,1311,1,0,0,0,1312,1313,1,0,0,0,1313,1315,1,0,0,0,1314,1316, 5,261,0,0,1315,1314,1,0,0,0,1315,1316,1,0,0,0,1316,1317,1,0,0,0, - 1317,1318,5,185,0,0,1318,1320,3,178,89,0,1319,1321,3,202,101,0,1320, + 1317,1318,5,185,0,0,1318,1320,3,176,88,0,1319,1321,3,200,100,0,1320, 1319,1,0,0,0,1320,1321,1,0,0,0,1321,1323,1,0,0,0,1322,1303,1,0,0, 0,1322,1307,1,0,0,0,1323,1326,1,0,0,0,1324,1322,1,0,0,0,1324,1325, - 1,0,0,0,1325,179,1,0,0,0,1326,1324,1,0,0,0,1327,1329,3,182,91,0, - 1328,1330,3,294,147,0,1329,1328,1,0,0,0,1329,1330,1,0,0,0,1330,181, + 1,0,0,0,1325,177,1,0,0,0,1326,1324,1,0,0,0,1327,1329,3,180,90,0, + 1328,1330,3,292,146,0,1329,1328,1,0,0,0,1329,1330,1,0,0,0,1330,179, 1,0,0,0,1331,1333,5,373,0,0,1332,1331,1,0,0,0,1332,1333,1,0,0,0, - 1333,1334,1,0,0,0,1334,1336,3,322,161,0,1335,1337,3,184,92,0,1336, - 1335,1,0,0,0,1336,1337,1,0,0,0,1337,1342,1,0,0,0,1338,1340,5,17, - 0,0,1339,1338,1,0,0,0,1339,1340,1,0,0,0,1340,1341,1,0,0,0,1341,1343, - 3,278,139,0,1342,1339,1,0,0,0,1342,1343,1,0,0,0,1343,1383,1,0,0, - 0,1344,1346,3,324,162,0,1345,1347,3,184,92,0,1346,1345,1,0,0,0,1346, - 1347,1,0,0,0,1347,1352,1,0,0,0,1348,1350,5,17,0,0,1349,1348,1,0, - 0,0,1349,1350,1,0,0,0,1350,1351,1,0,0,0,1351,1353,3,278,139,0,1352, - 1349,1,0,0,0,1352,1353,1,0,0,0,1353,1383,1,0,0,0,1354,1355,5,198, - 0,0,1355,1356,5,373,0,0,1356,1357,5,516,0,0,1357,1358,3,272,136, - 0,1358,1359,5,516,0,0,1359,1364,3,274,137,0,1360,1361,5,520,0,0, - 1361,1363,3,274,137,0,1362,1360,1,0,0,0,1363,1366,1,0,0,0,1364,1362, - 1,0,0,0,1364,1365,1,0,0,0,1365,1367,1,0,0,0,1366,1364,1,0,0,0,1367, - 1368,5,517,0,0,1368,1369,5,517,0,0,1369,1383,1,0,0,0,1370,1372,5, - 198,0,0,1371,1370,1,0,0,0,1371,1372,1,0,0,0,1372,1373,1,0,0,0,1373, - 1374,5,516,0,0,1374,1375,3,158,79,0,1375,1376,5,517,0,0,1376,1383, - 1,0,0,0,1377,1378,5,405,0,0,1378,1379,5,516,0,0,1379,1380,3,258, - 129,0,1380,1381,5,517,0,0,1381,1383,1,0,0,0,1382,1332,1,0,0,0,1382, - 1344,1,0,0,0,1382,1354,1,0,0,0,1382,1371,1,0,0,0,1382,1377,1,0,0, - 0,1383,183,1,0,0,0,1384,1385,5,146,0,0,1385,1386,5,371,0,0,1386, - 1387,5,17,0,0,1387,1388,5,249,0,0,1388,1389,3,186,93,0,1389,185, - 1,0,0,0,1390,1391,3,258,129,0,1391,187,1,0,0,0,1392,1393,5,516,0, - 0,1393,1394,3,150,75,0,1394,1395,5,517,0,0,1395,1396,3,294,147,0, - 1396,189,1,0,0,0,1397,1398,5,373,0,0,1398,1399,5,516,0,0,1399,1400, - 3,192,96,0,1400,1401,5,517,0,0,1401,191,1,0,0,0,1402,1403,3,194, - 97,0,1403,1404,5,516,0,0,1404,1409,3,196,98,0,1405,1406,5,520,0, - 0,1406,1408,3,196,98,0,1407,1405,1,0,0,0,1408,1411,1,0,0,0,1409, - 1407,1,0,0,0,1409,1410,1,0,0,0,1410,1412,1,0,0,0,1411,1409,1,0,0, - 0,1412,1413,5,517,0,0,1413,193,1,0,0,0,1414,1415,7,21,0,0,1415,195, - 1,0,0,0,1416,1417,5,373,0,0,1417,1432,3,218,109,0,1418,1432,3,200, - 100,0,1419,1432,3,282,141,0,1420,1421,5,446,0,0,1421,1422,5,536, - 0,0,1422,1423,5,373,0,0,1423,1432,3,218,109,0,1424,1425,5,498,0, - 0,1425,1426,5,536,0,0,1426,1432,3,200,100,0,1427,1428,3,198,99,0, - 1428,1429,5,536,0,0,1429,1430,3,282,141,0,1430,1432,1,0,0,0,1431, - 1416,1,0,0,0,1431,1418,1,0,0,0,1431,1419,1,0,0,0,1431,1420,1,0,0, - 0,1431,1424,1,0,0,0,1431,1427,1,0,0,0,1432,197,1,0,0,0,1433,1434, - 7,22,0,0,1434,199,1,0,0,0,1435,1436,5,451,0,0,1436,1437,5,516,0, - 0,1437,1438,3,52,26,0,1438,1439,5,517,0,0,1439,201,1,0,0,0,1440, - 1441,5,253,0,0,1441,1445,3,260,130,0,1442,1443,5,412,0,0,1443,1445, - 3,54,27,0,1444,1440,1,0,0,0,1444,1442,1,0,0,0,1445,203,1,0,0,0,1446, - 1447,5,430,0,0,1447,1448,3,260,130,0,1448,205,1,0,0,0,1449,1450, - 5,159,0,0,1450,1451,5,34,0,0,1451,1456,3,208,104,0,1452,1453,5,520, - 0,0,1453,1455,3,208,104,0,1454,1452,1,0,0,0,1455,1458,1,0,0,0,1456, - 1454,1,0,0,0,1456,1457,1,0,0,0,1457,207,1,0,0,0,1458,1456,1,0,0, - 0,1459,1500,3,52,26,0,1460,1500,3,214,107,0,1461,1462,5,516,0,0, - 1462,1500,5,517,0,0,1463,1464,5,516,0,0,1464,1469,3,258,129,0,1465, - 1466,5,520,0,0,1466,1468,3,258,129,0,1467,1465,1,0,0,0,1468,1471, - 1,0,0,0,1469,1467,1,0,0,0,1469,1470,1,0,0,0,1470,1472,1,0,0,0,1471, - 1469,1,0,0,0,1472,1473,5,517,0,0,1473,1500,1,0,0,0,1474,1475,3,212, - 106,0,1475,1476,5,516,0,0,1476,1481,3,258,129,0,1477,1478,5,520, - 0,0,1478,1480,3,258,129,0,1479,1477,1,0,0,0,1480,1483,1,0,0,0,1481, - 1479,1,0,0,0,1481,1482,1,0,0,0,1482,1484,1,0,0,0,1483,1481,1,0,0, - 0,1484,1485,5,517,0,0,1485,1500,1,0,0,0,1486,1487,3,210,105,0,1487, - 1488,5,516,0,0,1488,1493,3,208,104,0,1489,1490,5,520,0,0,1490,1492, - 3,208,104,0,1491,1489,1,0,0,0,1492,1495,1,0,0,0,1493,1491,1,0,0, - 0,1493,1494,1,0,0,0,1494,1496,1,0,0,0,1495,1493,1,0,0,0,1496,1497, - 5,517,0,0,1497,1500,1,0,0,0,1498,1500,3,258,129,0,1499,1459,1,0, - 0,0,1499,1460,1,0,0,0,1499,1461,1,0,0,0,1499,1463,1,0,0,0,1499,1474, - 1,0,0,0,1499,1486,1,0,0,0,1499,1498,1,0,0,0,1500,209,1,0,0,0,1501, - 1502,5,160,0,0,1502,1503,5,493,0,0,1503,211,1,0,0,0,1504,1505,7, - 23,0,0,1505,213,1,0,0,0,1506,1507,3,216,108,0,1507,1508,5,516,0, - 0,1508,1509,3,218,109,0,1509,1510,5,520,0,0,1510,1511,3,282,141, - 0,1511,1512,5,517,0,0,1512,215,1,0,0,0,1513,1514,7,24,0,0,1514,217, - 1,0,0,0,1515,1516,3,328,164,0,1516,219,1,0,0,0,1517,1518,5,163,0, - 0,1518,1519,3,260,130,0,1519,221,1,0,0,0,1520,1521,5,432,0,0,1521, - 1526,3,224,112,0,1522,1523,5,520,0,0,1523,1525,3,224,112,0,1524, - 1522,1,0,0,0,1525,1528,1,0,0,0,1526,1524,1,0,0,0,1526,1527,1,0,0, - 0,1527,223,1,0,0,0,1528,1526,1,0,0,0,1529,1530,3,296,148,0,1530, - 1531,5,17,0,0,1531,1532,3,226,113,0,1532,225,1,0,0,0,1533,1535,3, - 296,148,0,1534,1533,1,0,0,0,1534,1535,1,0,0,0,1535,1536,1,0,0,0, - 1536,1538,5,516,0,0,1537,1539,3,236,118,0,1538,1537,1,0,0,0,1538, - 1539,1,0,0,0,1539,1541,1,0,0,0,1540,1542,3,230,115,0,1541,1540,1, - 0,0,0,1541,1542,1,0,0,0,1542,1544,1,0,0,0,1543,1545,3,252,126,0, - 1544,1543,1,0,0,0,1544,1545,1,0,0,0,1545,1546,1,0,0,0,1546,1547, - 5,517,0,0,1547,227,1,0,0,0,1548,1549,5,213,0,0,1549,1551,5,516,0, - 0,1550,1552,3,236,118,0,1551,1550,1,0,0,0,1551,1552,1,0,0,0,1552, - 1554,1,0,0,0,1553,1555,3,230,115,0,1554,1553,1,0,0,0,1554,1555,1, - 0,0,0,1555,1557,1,0,0,0,1556,1558,3,240,120,0,1557,1556,1,0,0,0, - 1557,1558,1,0,0,0,1558,1560,1,0,0,0,1559,1561,3,246,123,0,1560,1559, - 1,0,0,0,1560,1561,1,0,0,0,1561,1563,1,0,0,0,1562,1564,3,248,124, - 0,1563,1562,1,0,0,0,1563,1564,1,0,0,0,1564,1566,1,0,0,0,1565,1567, - 3,242,121,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1568,1,0,0, - 0,1568,1569,3,250,125,0,1569,1574,5,517,0,0,1570,1572,5,17,0,0,1571, - 1570,1,0,0,0,1571,1572,1,0,0,0,1572,1573,1,0,0,0,1573,1575,3,304, - 152,0,1574,1571,1,0,0,0,1574,1575,1,0,0,0,1575,229,1,0,0,0,1576, - 1577,5,258,0,0,1577,1578,5,34,0,0,1578,1583,3,232,116,0,1579,1580, - 5,520,0,0,1580,1582,3,232,116,0,1581,1579,1,0,0,0,1582,1585,1,0, - 0,0,1583,1581,1,0,0,0,1583,1584,1,0,0,0,1584,231,1,0,0,0,1585,1583, - 1,0,0,0,1586,1588,3,52,26,0,1587,1589,7,25,0,0,1588,1587,1,0,0,0, - 1588,1589,1,0,0,0,1589,1592,1,0,0,0,1590,1591,5,476,0,0,1591,1593, - 7,26,0,0,1592,1590,1,0,0,0,1592,1593,1,0,0,0,1593,233,1,0,0,0,1594, - 1597,5,204,0,0,1595,1598,5,5,0,0,1596,1598,3,258,129,0,1597,1595, - 1,0,0,0,1597,1596,1,0,0,0,1598,235,1,0,0,0,1599,1600,5,268,0,0,1600, - 1601,5,34,0,0,1601,1606,3,52,26,0,1602,1603,5,520,0,0,1603,1605, - 3,52,26,0,1604,1602,1,0,0,0,1605,1608,1,0,0,0,1606,1604,1,0,0,0, - 1606,1607,1,0,0,0,1607,237,1,0,0,0,1608,1606,1,0,0,0,1609,1626,5, - 527,0,0,1610,1626,5,530,0,0,1611,1626,5,535,0,0,1612,1613,5,518, - 0,0,1613,1614,5,538,0,0,1614,1615,5,520,0,0,1615,1616,5,538,0,0, - 1616,1626,5,519,0,0,1617,1618,5,518,0,0,1618,1619,5,538,0,0,1619, - 1620,5,520,0,0,1620,1626,5,519,0,0,1621,1622,5,518,0,0,1622,1623, - 5,520,0,0,1623,1624,5,538,0,0,1624,1626,5,519,0,0,1625,1609,1,0, - 0,0,1625,1610,1,0,0,0,1625,1611,1,0,0,0,1625,1612,1,0,0,0,1625,1617, - 1,0,0,0,1625,1621,1,0,0,0,1626,239,1,0,0,0,1627,1628,5,215,0,0,1628, - 1633,3,172,86,0,1629,1630,5,520,0,0,1630,1632,3,172,86,0,1631,1629, - 1,0,0,0,1632,1635,1,0,0,0,1633,1631,1,0,0,0,1633,1634,1,0,0,0,1634, - 241,1,0,0,0,1635,1633,1,0,0,0,1636,1637,5,271,0,0,1637,1639,5,516, - 0,0,1638,1640,3,244,122,0,1639,1638,1,0,0,0,1640,1641,1,0,0,0,1641, - 1639,1,0,0,0,1641,1642,1,0,0,0,1642,1643,1,0,0,0,1643,1645,5,517, - 0,0,1644,1646,3,256,128,0,1645,1644,1,0,0,0,1645,1646,1,0,0,0,1646, - 243,1,0,0,0,1647,1649,3,306,153,0,1648,1650,3,238,119,0,1649,1648, - 1,0,0,0,1649,1650,1,0,0,0,1650,245,1,0,0,0,1651,1652,5,5,0,0,1652, - 1653,5,322,0,0,1653,1654,5,272,0,0,1654,1660,5,210,0,0,1655,1656, - 5,254,0,0,1656,1657,5,321,0,0,1657,1658,5,272,0,0,1658,1660,5,210, - 0,0,1659,1651,1,0,0,0,1659,1655,1,0,0,0,1660,247,1,0,0,0,1661,1662, - 5,438,0,0,1662,1663,5,210,0,0,1663,1664,5,343,0,0,1664,1665,5,478, - 0,0,1665,1666,5,467,0,0,1666,1686,5,321,0,0,1667,1668,5,438,0,0, - 1668,1669,5,210,0,0,1669,1670,5,343,0,0,1670,1671,5,388,0,0,1671, - 1672,5,237,0,0,1672,1686,5,321,0,0,1673,1674,5,438,0,0,1674,1675, - 5,210,0,0,1675,1676,5,343,0,0,1676,1677,5,388,0,0,1677,1678,5,467, - 0,0,1678,1686,3,306,153,0,1679,1680,5,438,0,0,1680,1681,5,210,0, - 0,1681,1682,5,343,0,0,1682,1683,5,388,0,0,1683,1684,5,457,0,0,1684, - 1686,3,306,153,0,1685,1661,1,0,0,0,1685,1667,1,0,0,0,1685,1673,1, - 0,0,0,1685,1679,1,0,0,0,1686,249,1,0,0,0,1687,1688,5,105,0,0,1688, - 1693,3,172,86,0,1689,1690,5,520,0,0,1690,1692,3,172,86,0,1691,1689, - 1,0,0,0,1692,1695,1,0,0,0,1693,1691,1,0,0,0,1693,1694,1,0,0,0,1694, - 251,1,0,0,0,1695,1693,1,0,0,0,1696,1697,5,292,0,0,1697,1698,5,27, - 0,0,1698,1699,3,282,141,0,1699,1700,3,254,127,0,1700,1706,1,0,0, - 0,1701,1702,5,322,0,0,1702,1703,5,27,0,0,1703,1704,5,538,0,0,1704, - 1706,3,254,127,0,1705,1696,1,0,0,0,1705,1701,1,0,0,0,1706,253,1, - 0,0,0,1707,1708,5,480,0,0,1708,1709,5,10,0,0,1709,1710,5,76,0,0, - 1710,1711,5,321,0,0,1711,255,1,0,0,0,1712,1713,5,434,0,0,1713,1714, - 3,282,141,0,1714,257,1,0,0,0,1715,1716,3,260,130,0,1716,259,1,0, - 0,0,1717,1718,6,130,-1,0,1718,1719,5,241,0,0,1719,1730,3,260,130, - 6,1720,1721,5,133,0,0,1721,1722,5,516,0,0,1722,1723,3,158,79,0,1723, - 1724,5,517,0,0,1724,1730,1,0,0,0,1725,1727,3,266,133,0,1726,1728, - 3,262,131,0,1727,1726,1,0,0,0,1727,1728,1,0,0,0,1728,1730,1,0,0, - 0,1729,1717,1,0,0,0,1729,1720,1,0,0,0,1729,1725,1,0,0,0,1730,1745, - 1,0,0,0,1731,1732,10,3,0,0,1732,1733,5,10,0,0,1733,1744,3,260,130, - 4,1734,1735,10,2,0,0,1735,1736,5,257,0,0,1736,1744,3,260,130,3,1737, - 1738,10,1,0,0,1738,1740,5,184,0,0,1739,1741,5,241,0,0,1740,1739, - 1,0,0,0,1740,1741,1,0,0,0,1741,1742,1,0,0,0,1742,1744,7,27,0,0,1743, - 1731,1,0,0,0,1743,1734,1,0,0,0,1743,1737,1,0,0,0,1744,1747,1,0,0, - 0,1745,1743,1,0,0,0,1745,1746,1,0,0,0,1746,261,1,0,0,0,1747,1745, - 1,0,0,0,1748,1750,5,241,0,0,1749,1748,1,0,0,0,1749,1750,1,0,0,0, - 1750,1751,1,0,0,0,1751,1753,5,27,0,0,1752,1754,7,28,0,0,1753,1752, - 1,0,0,0,1753,1754,1,0,0,0,1754,1755,1,0,0,0,1755,1756,3,266,133, - 0,1756,1757,5,10,0,0,1757,1758,3,266,133,0,1758,1816,1,0,0,0,1759, - 1761,5,241,0,0,1760,1759,1,0,0,0,1760,1761,1,0,0,0,1761,1762,1,0, - 0,0,1762,1763,5,170,0,0,1763,1764,5,516,0,0,1764,1769,3,258,129, - 0,1765,1766,5,520,0,0,1766,1768,3,258,129,0,1767,1765,1,0,0,0,1768, - 1771,1,0,0,0,1769,1767,1,0,0,0,1769,1770,1,0,0,0,1770,1772,1,0,0, - 0,1771,1769,1,0,0,0,1772,1773,5,517,0,0,1773,1816,1,0,0,0,1774,1776, - 5,241,0,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776,1777,1,0,0,0, - 1777,1778,5,170,0,0,1778,1779,5,516,0,0,1779,1780,3,158,79,0,1780, - 1781,5,517,0,0,1781,1816,1,0,0,0,1782,1783,5,133,0,0,1783,1784,5, - 516,0,0,1784,1785,3,158,79,0,1785,1786,5,517,0,0,1786,1816,1,0,0, - 0,1787,1789,5,241,0,0,1788,1787,1,0,0,0,1788,1789,1,0,0,0,1789,1790, - 1,0,0,0,1790,1791,5,318,0,0,1791,1816,3,266,133,0,1792,1816,3,264, - 132,0,1793,1795,5,184,0,0,1794,1796,5,241,0,0,1795,1794,1,0,0,0, - 1795,1796,1,0,0,0,1796,1797,1,0,0,0,1797,1816,7,27,0,0,1798,1800, - 5,184,0,0,1799,1801,5,241,0,0,1800,1799,1,0,0,0,1800,1801,1,0,0, - 0,1801,1802,1,0,0,0,1802,1803,5,113,0,0,1803,1804,5,151,0,0,1804, - 1816,3,266,133,0,1805,1807,5,241,0,0,1806,1805,1,0,0,0,1806,1807, - 1,0,0,0,1807,1808,1,0,0,0,1808,1809,5,342,0,0,1809,1810,5,388,0, - 0,1810,1813,3,266,133,0,1811,1812,5,127,0,0,1812,1814,3,358,179, - 0,1813,1811,1,0,0,0,1813,1814,1,0,0,0,1814,1816,1,0,0,0,1815,1749, - 1,0,0,0,1815,1760,1,0,0,0,1815,1775,1,0,0,0,1815,1782,1,0,0,0,1815, - 1788,1,0,0,0,1815,1792,1,0,0,0,1815,1793,1,0,0,0,1815,1798,1,0,0, - 0,1815,1806,1,0,0,0,1816,263,1,0,0,0,1817,1819,5,241,0,0,1818,1817, - 1,0,0,0,1818,1819,1,0,0,0,1819,1820,1,0,0,0,1820,1821,5,202,0,0, - 1821,1835,7,29,0,0,1822,1823,5,516,0,0,1823,1836,5,517,0,0,1824, - 1825,5,516,0,0,1825,1830,3,258,129,0,1826,1827,5,520,0,0,1827,1829, - 3,258,129,0,1828,1826,1,0,0,0,1829,1832,1,0,0,0,1830,1828,1,0,0, - 0,1830,1831,1,0,0,0,1831,1833,1,0,0,0,1832,1830,1,0,0,0,1833,1834, - 5,517,0,0,1834,1836,1,0,0,0,1835,1822,1,0,0,0,1835,1824,1,0,0,0, - 1836,1847,1,0,0,0,1837,1839,5,241,0,0,1838,1837,1,0,0,0,1838,1839, - 1,0,0,0,1839,1840,1,0,0,0,1840,1841,5,202,0,0,1841,1844,3,266,133, - 0,1842,1843,5,127,0,0,1843,1845,3,358,179,0,1844,1842,1,0,0,0,1844, - 1845,1,0,0,0,1845,1847,1,0,0,0,1846,1818,1,0,0,0,1846,1838,1,0,0, - 0,1847,265,1,0,0,0,1848,1849,6,133,-1,0,1849,1853,3,268,134,0,1850, - 1851,7,30,0,0,1851,1853,3,266,133,7,1852,1848,1,0,0,0,1852,1850, - 1,0,0,0,1853,1875,1,0,0,0,1854,1855,10,6,0,0,1855,1856,7,31,0,0, - 1856,1874,3,266,133,7,1857,1858,10,5,0,0,1858,1859,7,32,0,0,1859, - 1874,3,266,133,6,1860,1861,10,4,0,0,1861,1862,5,511,0,0,1862,1874, - 3,266,133,5,1863,1864,10,3,0,0,1864,1865,5,512,0,0,1865,1874,3,266, - 133,4,1866,1867,10,2,0,0,1867,1868,5,510,0,0,1868,1874,3,266,133, - 3,1869,1870,10,1,0,0,1870,1871,3,346,173,0,1871,1872,3,266,133,2, - 1872,1874,1,0,0,0,1873,1854,1,0,0,0,1873,1857,1,0,0,0,1873,1860, - 1,0,0,0,1873,1863,1,0,0,0,1873,1866,1,0,0,0,1873,1869,1,0,0,0,1874, - 1877,1,0,0,0,1875,1873,1,0,0,0,1875,1876,1,0,0,0,1876,267,1,0,0, - 0,1877,1875,1,0,0,0,1878,1879,6,134,-1,0,1879,1881,5,40,0,0,1880, - 1882,3,310,155,0,1881,1880,1,0,0,0,1882,1883,1,0,0,0,1883,1881,1, - 0,0,0,1883,1884,1,0,0,0,1884,1887,1,0,0,0,1885,1886,5,120,0,0,1886, - 1888,3,258,129,0,1887,1885,1,0,0,0,1887,1888,1,0,0,0,1888,1889,1, - 0,0,0,1889,1890,5,122,0,0,1890,1971,1,0,0,0,1891,1892,5,40,0,0,1892, - 1894,3,258,129,0,1893,1895,3,310,155,0,1894,1893,1,0,0,0,1895,1896, - 1,0,0,0,1896,1894,1,0,0,0,1896,1897,1,0,0,0,1897,1900,1,0,0,0,1898, - 1899,5,120,0,0,1899,1901,3,258,129,0,1900,1898,1,0,0,0,1900,1901, - 1,0,0,0,1901,1902,1,0,0,0,1902,1903,5,122,0,0,1903,1971,1,0,0,0, - 1904,1905,5,41,0,0,1905,1906,5,516,0,0,1906,1907,3,258,129,0,1907, - 1908,5,17,0,0,1908,1909,3,56,28,0,1909,1910,5,517,0,0,1910,1971, - 1,0,0,0,1911,1912,5,457,0,0,1912,1913,5,516,0,0,1913,1916,3,258, - 129,0,1914,1915,5,461,0,0,1915,1917,5,476,0,0,1916,1914,1,0,0,0, - 1916,1917,1,0,0,0,1917,1918,1,0,0,0,1918,1919,5,517,0,0,1919,1971, - 1,0,0,0,1920,1921,5,467,0,0,1921,1922,5,516,0,0,1922,1925,3,258, - 129,0,1923,1924,5,461,0,0,1924,1926,5,476,0,0,1925,1923,1,0,0,0, - 1925,1926,1,0,0,0,1926,1927,1,0,0,0,1927,1928,5,517,0,0,1928,1971, - 1,0,0,0,1929,1930,5,281,0,0,1930,1931,5,516,0,0,1931,1932,3,266, - 133,0,1932,1933,5,170,0,0,1933,1934,3,266,133,0,1934,1935,5,517, - 0,0,1935,1971,1,0,0,0,1936,1971,3,354,177,0,1937,1971,5,527,0,0, - 1938,1939,3,328,164,0,1939,1940,5,513,0,0,1940,1941,5,527,0,0,1941, - 1971,1,0,0,0,1942,1943,5,516,0,0,1943,1944,3,158,79,0,1944,1945, - 5,517,0,0,1945,1971,1,0,0,0,1946,1947,3,272,136,0,1947,1959,5,516, - 0,0,1948,1950,3,364,182,0,1949,1948,1,0,0,0,1949,1950,1,0,0,0,1950, - 1951,1,0,0,0,1951,1956,3,274,137,0,1952,1953,5,520,0,0,1953,1955, - 3,274,137,0,1954,1952,1,0,0,0,1955,1958,1,0,0,0,1956,1954,1,0,0, - 0,1956,1957,1,0,0,0,1957,1960,1,0,0,0,1958,1956,1,0,0,0,1959,1949, - 1,0,0,0,1959,1960,1,0,0,0,1960,1961,1,0,0,0,1961,1962,5,517,0,0, - 1962,1971,1,0,0,0,1963,1971,3,304,152,0,1964,1971,3,276,138,0,1965, - 1966,5,516,0,0,1966,1967,3,258,129,0,1967,1968,5,517,0,0,1968,1971, - 1,0,0,0,1969,1971,5,85,0,0,1970,1878,1,0,0,0,1970,1891,1,0,0,0,1970, - 1904,1,0,0,0,1970,1911,1,0,0,0,1970,1920,1,0,0,0,1970,1929,1,0,0, - 0,1970,1936,1,0,0,0,1970,1937,1,0,0,0,1970,1938,1,0,0,0,1970,1942, - 1,0,0,0,1970,1946,1,0,0,0,1970,1963,1,0,0,0,1970,1964,1,0,0,0,1970, - 1965,1,0,0,0,1970,1969,1,0,0,0,1971,1979,1,0,0,0,1972,1973,10,5, - 0,0,1973,1974,5,514,0,0,1974,1975,3,266,133,0,1975,1976,5,515,0, - 0,1976,1978,1,0,0,0,1977,1972,1,0,0,0,1978,1981,1,0,0,0,1979,1977, - 1,0,0,0,1979,1980,1,0,0,0,1980,269,1,0,0,0,1981,1979,1,0,0,0,1982, - 1983,3,328,164,0,1983,271,1,0,0,0,1984,1987,3,372,186,0,1985,1987, - 3,328,164,0,1986,1984,1,0,0,0,1986,1985,1,0,0,0,1987,273,1,0,0,0, - 1988,1993,3,370,185,0,1989,1993,3,368,184,0,1990,1993,3,366,183, - 0,1991,1993,3,258,129,0,1992,1988,1,0,0,0,1992,1989,1,0,0,0,1992, - 1990,1,0,0,0,1992,1991,1,0,0,0,1993,275,1,0,0,0,1994,1995,3,328, - 164,0,1995,277,1,0,0,0,1996,1997,3,304,152,0,1997,279,1,0,0,0,1998, - 2001,3,304,152,0,1999,2001,3,276,138,0,2000,1998,1,0,0,0,2000,1999, - 1,0,0,0,2001,281,1,0,0,0,2002,2005,5,182,0,0,2003,2006,3,284,142, - 0,2004,2006,3,288,144,0,2005,2003,1,0,0,0,2005,2004,1,0,0,0,2005, - 2006,1,0,0,0,2006,283,1,0,0,0,2007,2009,3,286,143,0,2008,2010,3, - 290,145,0,2009,2008,1,0,0,0,2009,2010,1,0,0,0,2010,285,1,0,0,0,2011, - 2012,3,292,146,0,2012,2013,3,368,184,0,2013,2015,1,0,0,0,2014,2011, - 1,0,0,0,2015,2016,1,0,0,0,2016,2014,1,0,0,0,2016,2017,1,0,0,0,2017, - 287,1,0,0,0,2018,2021,3,290,145,0,2019,2022,3,286,143,0,2020,2022, - 3,290,145,0,2021,2019,1,0,0,0,2021,2020,1,0,0,0,2021,2022,1,0,0, - 0,2022,289,1,0,0,0,2023,2024,3,292,146,0,2024,2025,3,368,184,0,2025, - 2026,5,388,0,0,2026,2027,3,368,184,0,2027,291,1,0,0,0,2028,2030, - 7,33,0,0,2029,2028,1,0,0,0,2029,2030,1,0,0,0,2030,2031,1,0,0,0,2031, - 2034,7,34,0,0,2032,2034,5,537,0,0,2033,2029,1,0,0,0,2033,2032,1, - 0,0,0,2034,293,1,0,0,0,2035,2037,5,17,0,0,2036,2035,1,0,0,0,2036, - 2037,1,0,0,0,2037,2038,1,0,0,0,2038,2040,3,304,152,0,2039,2041,3, - 300,150,0,2040,2039,1,0,0,0,2040,2041,1,0,0,0,2041,295,1,0,0,0,2042, - 2043,3,304,152,0,2043,2044,3,298,149,0,2044,297,1,0,0,0,2045,2046, - 5,221,0,0,2046,2048,3,304,152,0,2047,2045,1,0,0,0,2048,2049,1,0, - 0,0,2049,2047,1,0,0,0,2049,2050,1,0,0,0,2050,2053,1,0,0,0,2051,2053, - 1,0,0,0,2052,2047,1,0,0,0,2052,2051,1,0,0,0,2053,299,1,0,0,0,2054, - 2055,5,516,0,0,2055,2056,3,302,151,0,2056,2057,5,517,0,0,2057,301, - 1,0,0,0,2058,2063,3,304,152,0,2059,2060,5,520,0,0,2060,2062,3,304, - 152,0,2061,2059,1,0,0,0,2062,2065,1,0,0,0,2063,2061,1,0,0,0,2063, - 2064,1,0,0,0,2064,303,1,0,0,0,2065,2063,1,0,0,0,2066,2070,3,306, - 153,0,2067,2070,3,308,154,0,2068,2070,3,374,187,0,2069,2066,1,0, - 0,0,2069,2067,1,0,0,0,2069,2068,1,0,0,0,2070,305,1,0,0,0,2071,2072, - 7,35,0,0,2072,307,1,0,0,0,2073,2074,5,537,0,0,2074,309,1,0,0,0,2075, - 2076,5,428,0,0,2076,2077,3,258,129,0,2077,2078,5,376,0,0,2078,2079, - 3,258,129,0,2079,311,1,0,0,0,2080,2081,3,304,152,0,2081,313,1,0, - 0,0,2082,2083,3,304,152,0,2083,315,1,0,0,0,2084,2087,3,304,152,0, - 2085,2086,5,513,0,0,2086,2088,3,304,152,0,2087,2085,1,0,0,0,2087, - 2088,1,0,0,0,2088,317,1,0,0,0,2089,2092,3,304,152,0,2090,2091,5, - 513,0,0,2091,2093,3,304,152,0,2092,2090,1,0,0,0,2092,2093,1,0,0, - 0,2093,319,1,0,0,0,2094,2097,3,304,152,0,2095,2096,5,513,0,0,2096, - 2098,3,304,152,0,2097,2095,1,0,0,0,2097,2098,1,0,0,0,2098,2107,1, - 0,0,0,2099,2100,3,304,152,0,2100,2101,5,513,0,0,2101,2104,3,304, - 152,0,2102,2103,5,513,0,0,2103,2105,3,304,152,0,2104,2102,1,0,0, - 0,2104,2105,1,0,0,0,2105,2107,1,0,0,0,2106,2094,1,0,0,0,2106,2099, - 1,0,0,0,2107,321,1,0,0,0,2108,2111,3,304,152,0,2109,2110,5,513,0, - 0,2110,2112,3,304,152,0,2111,2109,1,0,0,0,2111,2112,1,0,0,0,2112, - 2121,1,0,0,0,2113,2114,3,304,152,0,2114,2115,5,513,0,0,2115,2118, - 3,304,152,0,2116,2117,5,513,0,0,2117,2119,3,304,152,0,2118,2116, - 1,0,0,0,2118,2119,1,0,0,0,2119,2121,1,0,0,0,2120,2108,1,0,0,0,2120, - 2113,1,0,0,0,2121,323,1,0,0,0,2122,2125,3,304,152,0,2123,2124,5, - 513,0,0,2124,2126,3,304,152,0,2125,2123,1,0,0,0,2125,2126,1,0,0, - 0,2126,2135,1,0,0,0,2127,2128,3,304,152,0,2128,2129,5,513,0,0,2129, - 2132,3,304,152,0,2130,2131,5,513,0,0,2131,2133,3,304,152,0,2132, - 2130,1,0,0,0,2132,2133,1,0,0,0,2133,2135,1,0,0,0,2134,2122,1,0,0, - 0,2134,2127,1,0,0,0,2135,325,1,0,0,0,2136,2139,3,304,152,0,2137, - 2138,5,513,0,0,2138,2140,3,304,152,0,2139,2137,1,0,0,0,2139,2140, - 1,0,0,0,2140,2149,1,0,0,0,2141,2142,3,304,152,0,2142,2143,5,513, - 0,0,2143,2146,3,304,152,0,2144,2145,5,513,0,0,2145,2147,3,304,152, - 0,2146,2144,1,0,0,0,2146,2147,1,0,0,0,2147,2149,1,0,0,0,2148,2136, - 1,0,0,0,2148,2141,1,0,0,0,2149,327,1,0,0,0,2150,2155,3,304,152,0, - 2151,2152,5,513,0,0,2152,2154,3,304,152,0,2153,2151,1,0,0,0,2154, - 2157,1,0,0,0,2155,2156,1,0,0,0,2155,2153,1,0,0,0,2156,329,1,0,0, - 0,2157,2155,1,0,0,0,2158,2159,5,433,0,0,2159,2160,3,336,168,0,2160, - 331,1,0,0,0,2161,2162,5,167,0,0,2162,2163,5,241,0,0,2163,2164,5, - 133,0,0,2164,333,1,0,0,0,2165,2166,5,167,0,0,2166,2167,5,133,0,0, - 2167,335,1,0,0,0,2168,2169,5,516,0,0,2169,2174,3,338,169,0,2170, - 2171,5,520,0,0,2171,2173,3,338,169,0,2172,2170,1,0,0,0,2173,2176, - 1,0,0,0,2174,2172,1,0,0,0,2174,2175,1,0,0,0,2175,2177,1,0,0,0,2176, - 2174,1,0,0,0,2177,2178,5,517,0,0,2178,337,1,0,0,0,2179,2184,3,340, - 170,0,2180,2182,5,505,0,0,2181,2180,1,0,0,0,2181,2182,1,0,0,0,2182, - 2183,1,0,0,0,2183,2185,3,342,171,0,2184,2181,1,0,0,0,2184,2185,1, - 0,0,0,2185,339,1,0,0,0,2186,2190,3,304,152,0,2187,2190,3,276,138, - 0,2188,2190,5,537,0,0,2189,2186,1,0,0,0,2189,2187,1,0,0,0,2189,2188, - 1,0,0,0,2190,341,1,0,0,0,2191,2196,5,538,0,0,2192,2196,5,539,0,0, - 2193,2196,3,362,181,0,2194,2196,5,537,0,0,2195,2191,1,0,0,0,2195, - 2192,1,0,0,0,2195,2193,1,0,0,0,2195,2194,1,0,0,0,2196,343,1,0,0, - 0,2197,2204,5,10,0,0,2198,2199,5,511,0,0,2199,2204,5,511,0,0,2200, - 2204,5,257,0,0,2201,2202,5,510,0,0,2202,2204,5,510,0,0,2203,2197, - 1,0,0,0,2203,2198,1,0,0,0,2203,2200,1,0,0,0,2203,2201,1,0,0,0,2204, - 345,1,0,0,0,2205,2220,5,505,0,0,2206,2220,5,506,0,0,2207,2220,5, - 507,0,0,2208,2209,5,507,0,0,2209,2220,5,505,0,0,2210,2211,5,506, - 0,0,2211,2220,5,505,0,0,2212,2213,5,507,0,0,2213,2220,5,506,0,0, - 2214,2215,5,508,0,0,2215,2220,5,505,0,0,2216,2217,5,507,0,0,2217, - 2218,5,505,0,0,2218,2220,5,506,0,0,2219,2205,1,0,0,0,2219,2206,1, - 0,0,0,2219,2207,1,0,0,0,2219,2208,1,0,0,0,2219,2210,1,0,0,0,2219, - 2212,1,0,0,0,2219,2214,1,0,0,0,2219,2216,1,0,0,0,2220,347,1,0,0, - 0,2221,2222,5,507,0,0,2222,2229,5,507,0,0,2223,2224,5,506,0,0,2224, - 2229,5,506,0,0,2225,2229,5,511,0,0,2226,2229,5,512,0,0,2227,2229, - 5,510,0,0,2228,2221,1,0,0,0,2228,2223,1,0,0,0,2228,2225,1,0,0,0, - 2228,2226,1,0,0,0,2228,2227,1,0,0,0,2229,349,1,0,0,0,2230,2231,7, - 36,0,0,2231,351,1,0,0,0,2232,2233,7,37,0,0,2233,353,1,0,0,0,2234, - 2249,3,282,141,0,2235,2249,3,356,178,0,2236,2249,3,358,179,0,2237, - 2239,5,529,0,0,2238,2237,1,0,0,0,2238,2239,1,0,0,0,2239,2240,1,0, - 0,0,2240,2249,3,360,180,0,2241,2249,3,362,181,0,2242,2249,5,539, - 0,0,2243,2249,5,540,0,0,2244,2246,5,241,0,0,2245,2244,1,0,0,0,2245, - 2246,1,0,0,0,2246,2247,1,0,0,0,2247,2249,5,244,0,0,2248,2234,1,0, - 0,0,2248,2235,1,0,0,0,2248,2236,1,0,0,0,2248,2238,1,0,0,0,2248,2241, - 1,0,0,0,2248,2242,1,0,0,0,2248,2243,1,0,0,0,2248,2245,1,0,0,0,2249, - 355,1,0,0,0,2250,2251,3,366,183,0,2251,2252,3,358,179,0,2252,357, - 1,0,0,0,2253,2254,5,537,0,0,2254,359,1,0,0,0,2255,2256,5,538,0,0, - 2256,361,1,0,0,0,2257,2258,7,38,0,0,2258,363,1,0,0,0,2259,2260,7, - 39,0,0,2260,365,1,0,0,0,2261,2262,7,40,0,0,2262,367,1,0,0,0,2263, - 2264,7,41,0,0,2264,369,1,0,0,0,2265,2266,7,42,0,0,2266,371,1,0,0, - 0,2267,2268,7,43,0,0,2268,373,1,0,0,0,2269,2270,7,44,0,0,2270,375, - 1,0,0,0,270,379,386,389,403,421,425,434,439,446,457,466,478,481, - 488,491,499,503,508,511,518,526,530,542,550,554,586,589,594,598, - 602,606,615,620,624,628,632,635,639,644,650,655,660,663,667,671, + 1333,1334,1,0,0,0,1334,1336,3,320,160,0,1335,1337,3,182,91,0,1336, + 1335,1,0,0,0,1336,1337,1,0,0,0,1337,1371,1,0,0,0,1338,1340,3,322, + 161,0,1339,1341,3,182,91,0,1340,1339,1,0,0,0,1340,1341,1,0,0,0,1341, + 1371,1,0,0,0,1342,1343,5,198,0,0,1343,1344,5,373,0,0,1344,1345,5, + 516,0,0,1345,1346,3,270,135,0,1346,1347,5,516,0,0,1347,1352,3,272, + 136,0,1348,1349,5,520,0,0,1349,1351,3,272,136,0,1350,1348,1,0,0, + 0,1351,1354,1,0,0,0,1352,1350,1,0,0,0,1352,1353,1,0,0,0,1353,1355, + 1,0,0,0,1354,1352,1,0,0,0,1355,1356,5,517,0,0,1356,1357,5,517,0, + 0,1357,1371,1,0,0,0,1358,1360,5,198,0,0,1359,1358,1,0,0,0,1359,1360, + 1,0,0,0,1360,1361,1,0,0,0,1361,1362,5,516,0,0,1362,1363,3,156,78, + 0,1363,1364,5,517,0,0,1364,1371,1,0,0,0,1365,1366,5,405,0,0,1366, + 1367,5,516,0,0,1367,1368,3,256,128,0,1368,1369,5,517,0,0,1369,1371, + 1,0,0,0,1370,1332,1,0,0,0,1370,1338,1,0,0,0,1370,1342,1,0,0,0,1370, + 1359,1,0,0,0,1370,1365,1,0,0,0,1371,181,1,0,0,0,1372,1373,5,146, + 0,0,1373,1374,5,371,0,0,1374,1375,5,17,0,0,1375,1376,5,249,0,0,1376, + 1377,3,184,92,0,1377,183,1,0,0,0,1378,1379,3,256,128,0,1379,185, + 1,0,0,0,1380,1381,5,516,0,0,1381,1382,3,148,74,0,1382,1383,5,517, + 0,0,1383,1384,3,292,146,0,1384,187,1,0,0,0,1385,1386,5,373,0,0,1386, + 1387,5,516,0,0,1387,1388,3,190,95,0,1388,1389,5,517,0,0,1389,189, + 1,0,0,0,1390,1391,3,192,96,0,1391,1392,5,516,0,0,1392,1397,3,194, + 97,0,1393,1394,5,520,0,0,1394,1396,3,194,97,0,1395,1393,1,0,0,0, + 1396,1399,1,0,0,0,1397,1395,1,0,0,0,1397,1398,1,0,0,0,1398,1400, + 1,0,0,0,1399,1397,1,0,0,0,1400,1401,5,517,0,0,1401,191,1,0,0,0,1402, + 1403,7,21,0,0,1403,193,1,0,0,0,1404,1405,5,373,0,0,1405,1420,3,216, + 108,0,1406,1420,3,198,99,0,1407,1420,3,280,140,0,1408,1409,5,446, + 0,0,1409,1410,5,536,0,0,1410,1411,5,373,0,0,1411,1420,3,216,108, + 0,1412,1413,5,498,0,0,1413,1414,5,536,0,0,1414,1420,3,198,99,0,1415, + 1416,3,196,98,0,1416,1417,5,536,0,0,1417,1418,3,280,140,0,1418,1420, + 1,0,0,0,1419,1404,1,0,0,0,1419,1406,1,0,0,0,1419,1407,1,0,0,0,1419, + 1408,1,0,0,0,1419,1412,1,0,0,0,1419,1415,1,0,0,0,1420,195,1,0,0, + 0,1421,1422,7,22,0,0,1422,197,1,0,0,0,1423,1424,5,451,0,0,1424,1425, + 5,516,0,0,1425,1426,3,52,26,0,1426,1427,5,517,0,0,1427,199,1,0,0, + 0,1428,1429,5,253,0,0,1429,1433,3,258,129,0,1430,1431,5,412,0,0, + 1431,1433,3,54,27,0,1432,1428,1,0,0,0,1432,1430,1,0,0,0,1433,201, + 1,0,0,0,1434,1435,5,430,0,0,1435,1436,3,258,129,0,1436,203,1,0,0, + 0,1437,1438,5,159,0,0,1438,1439,5,34,0,0,1439,1444,3,206,103,0,1440, + 1441,5,520,0,0,1441,1443,3,206,103,0,1442,1440,1,0,0,0,1443,1446, + 1,0,0,0,1444,1442,1,0,0,0,1444,1445,1,0,0,0,1445,205,1,0,0,0,1446, + 1444,1,0,0,0,1447,1488,3,52,26,0,1448,1488,3,212,106,0,1449,1450, + 5,516,0,0,1450,1488,5,517,0,0,1451,1452,5,516,0,0,1452,1457,3,256, + 128,0,1453,1454,5,520,0,0,1454,1456,3,256,128,0,1455,1453,1,0,0, + 0,1456,1459,1,0,0,0,1457,1455,1,0,0,0,1457,1458,1,0,0,0,1458,1460, + 1,0,0,0,1459,1457,1,0,0,0,1460,1461,5,517,0,0,1461,1488,1,0,0,0, + 1462,1463,3,210,105,0,1463,1464,5,516,0,0,1464,1469,3,256,128,0, + 1465,1466,5,520,0,0,1466,1468,3,256,128,0,1467,1465,1,0,0,0,1468, + 1471,1,0,0,0,1469,1467,1,0,0,0,1469,1470,1,0,0,0,1470,1472,1,0,0, + 0,1471,1469,1,0,0,0,1472,1473,5,517,0,0,1473,1488,1,0,0,0,1474,1475, + 3,208,104,0,1475,1476,5,516,0,0,1476,1481,3,206,103,0,1477,1478, + 5,520,0,0,1478,1480,3,206,103,0,1479,1477,1,0,0,0,1480,1483,1,0, + 0,0,1481,1479,1,0,0,0,1481,1482,1,0,0,0,1482,1484,1,0,0,0,1483,1481, + 1,0,0,0,1484,1485,5,517,0,0,1485,1488,1,0,0,0,1486,1488,3,256,128, + 0,1487,1447,1,0,0,0,1487,1448,1,0,0,0,1487,1449,1,0,0,0,1487,1451, + 1,0,0,0,1487,1462,1,0,0,0,1487,1474,1,0,0,0,1487,1486,1,0,0,0,1488, + 207,1,0,0,0,1489,1490,5,160,0,0,1490,1491,5,493,0,0,1491,209,1,0, + 0,0,1492,1493,7,23,0,0,1493,211,1,0,0,0,1494,1495,3,214,107,0,1495, + 1496,5,516,0,0,1496,1497,3,216,108,0,1497,1498,5,520,0,0,1498,1499, + 3,280,140,0,1499,1500,5,517,0,0,1500,213,1,0,0,0,1501,1502,7,24, + 0,0,1502,215,1,0,0,0,1503,1504,3,326,163,0,1504,217,1,0,0,0,1505, + 1506,5,163,0,0,1506,1507,3,258,129,0,1507,219,1,0,0,0,1508,1509, + 5,432,0,0,1509,1514,3,222,111,0,1510,1511,5,520,0,0,1511,1513,3, + 222,111,0,1512,1510,1,0,0,0,1513,1516,1,0,0,0,1514,1512,1,0,0,0, + 1514,1515,1,0,0,0,1515,221,1,0,0,0,1516,1514,1,0,0,0,1517,1518,3, + 294,147,0,1518,1519,5,17,0,0,1519,1520,3,224,112,0,1520,223,1,0, + 0,0,1521,1523,3,294,147,0,1522,1521,1,0,0,0,1522,1523,1,0,0,0,1523, + 1524,1,0,0,0,1524,1526,5,516,0,0,1525,1527,3,234,117,0,1526,1525, + 1,0,0,0,1526,1527,1,0,0,0,1527,1529,1,0,0,0,1528,1530,3,228,114, + 0,1529,1528,1,0,0,0,1529,1530,1,0,0,0,1530,1532,1,0,0,0,1531,1533, + 3,250,125,0,1532,1531,1,0,0,0,1532,1533,1,0,0,0,1533,1534,1,0,0, + 0,1534,1535,5,517,0,0,1535,225,1,0,0,0,1536,1537,5,213,0,0,1537, + 1539,5,516,0,0,1538,1540,3,234,117,0,1539,1538,1,0,0,0,1539,1540, + 1,0,0,0,1540,1542,1,0,0,0,1541,1543,3,228,114,0,1542,1541,1,0,0, + 0,1542,1543,1,0,0,0,1543,1545,1,0,0,0,1544,1546,3,238,119,0,1545, + 1544,1,0,0,0,1545,1546,1,0,0,0,1546,1548,1,0,0,0,1547,1549,3,244, + 122,0,1548,1547,1,0,0,0,1548,1549,1,0,0,0,1549,1551,1,0,0,0,1550, + 1552,3,246,123,0,1551,1550,1,0,0,0,1551,1552,1,0,0,0,1552,1554,1, + 0,0,0,1553,1555,3,240,120,0,1554,1553,1,0,0,0,1554,1555,1,0,0,0, + 1555,1556,1,0,0,0,1556,1557,3,248,124,0,1557,1562,5,517,0,0,1558, + 1560,5,17,0,0,1559,1558,1,0,0,0,1559,1560,1,0,0,0,1560,1561,1,0, + 0,0,1561,1563,3,302,151,0,1562,1559,1,0,0,0,1562,1563,1,0,0,0,1563, + 227,1,0,0,0,1564,1565,5,258,0,0,1565,1566,5,34,0,0,1566,1571,3,230, + 115,0,1567,1568,5,520,0,0,1568,1570,3,230,115,0,1569,1567,1,0,0, + 0,1570,1573,1,0,0,0,1571,1569,1,0,0,0,1571,1572,1,0,0,0,1572,229, + 1,0,0,0,1573,1571,1,0,0,0,1574,1576,3,52,26,0,1575,1577,7,25,0,0, + 1576,1575,1,0,0,0,1576,1577,1,0,0,0,1577,1580,1,0,0,0,1578,1579, + 5,476,0,0,1579,1581,7,26,0,0,1580,1578,1,0,0,0,1580,1581,1,0,0,0, + 1581,231,1,0,0,0,1582,1585,5,204,0,0,1583,1586,5,5,0,0,1584,1586, + 3,256,128,0,1585,1583,1,0,0,0,1585,1584,1,0,0,0,1586,233,1,0,0,0, + 1587,1588,5,268,0,0,1588,1589,5,34,0,0,1589,1594,3,52,26,0,1590, + 1591,5,520,0,0,1591,1593,3,52,26,0,1592,1590,1,0,0,0,1593,1596,1, + 0,0,0,1594,1592,1,0,0,0,1594,1595,1,0,0,0,1595,235,1,0,0,0,1596, + 1594,1,0,0,0,1597,1614,5,527,0,0,1598,1614,5,530,0,0,1599,1614,5, + 535,0,0,1600,1601,5,518,0,0,1601,1602,5,538,0,0,1602,1603,5,520, + 0,0,1603,1604,5,538,0,0,1604,1614,5,519,0,0,1605,1606,5,518,0,0, + 1606,1607,5,538,0,0,1607,1608,5,520,0,0,1608,1614,5,519,0,0,1609, + 1610,5,518,0,0,1610,1611,5,520,0,0,1611,1612,5,538,0,0,1612,1614, + 5,519,0,0,1613,1597,1,0,0,0,1613,1598,1,0,0,0,1613,1599,1,0,0,0, + 1613,1600,1,0,0,0,1613,1605,1,0,0,0,1613,1609,1,0,0,0,1614,237,1, + 0,0,0,1615,1616,5,215,0,0,1616,1621,3,170,85,0,1617,1618,5,520,0, + 0,1618,1620,3,170,85,0,1619,1617,1,0,0,0,1620,1623,1,0,0,0,1621, + 1619,1,0,0,0,1621,1622,1,0,0,0,1622,239,1,0,0,0,1623,1621,1,0,0, + 0,1624,1625,5,271,0,0,1625,1627,5,516,0,0,1626,1628,3,242,121,0, + 1627,1626,1,0,0,0,1628,1629,1,0,0,0,1629,1627,1,0,0,0,1629,1630, + 1,0,0,0,1630,1631,1,0,0,0,1631,1633,5,517,0,0,1632,1634,3,254,127, + 0,1633,1632,1,0,0,0,1633,1634,1,0,0,0,1634,241,1,0,0,0,1635,1637, + 3,304,152,0,1636,1638,3,236,118,0,1637,1636,1,0,0,0,1637,1638,1, + 0,0,0,1638,243,1,0,0,0,1639,1640,5,5,0,0,1640,1641,5,322,0,0,1641, + 1642,5,272,0,0,1642,1648,5,210,0,0,1643,1644,5,254,0,0,1644,1645, + 5,321,0,0,1645,1646,5,272,0,0,1646,1648,5,210,0,0,1647,1639,1,0, + 0,0,1647,1643,1,0,0,0,1648,245,1,0,0,0,1649,1650,5,438,0,0,1650, + 1651,5,210,0,0,1651,1652,5,343,0,0,1652,1653,5,478,0,0,1653,1654, + 5,467,0,0,1654,1674,5,321,0,0,1655,1656,5,438,0,0,1656,1657,5,210, + 0,0,1657,1658,5,343,0,0,1658,1659,5,388,0,0,1659,1660,5,237,0,0, + 1660,1674,5,321,0,0,1661,1662,5,438,0,0,1662,1663,5,210,0,0,1663, + 1664,5,343,0,0,1664,1665,5,388,0,0,1665,1666,5,467,0,0,1666,1674, + 3,304,152,0,1667,1668,5,438,0,0,1668,1669,5,210,0,0,1669,1670,5, + 343,0,0,1670,1671,5,388,0,0,1671,1672,5,457,0,0,1672,1674,3,304, + 152,0,1673,1649,1,0,0,0,1673,1655,1,0,0,0,1673,1661,1,0,0,0,1673, + 1667,1,0,0,0,1674,247,1,0,0,0,1675,1676,5,105,0,0,1676,1681,3,170, + 85,0,1677,1678,5,520,0,0,1678,1680,3,170,85,0,1679,1677,1,0,0,0, + 1680,1683,1,0,0,0,1681,1679,1,0,0,0,1681,1682,1,0,0,0,1682,249,1, + 0,0,0,1683,1681,1,0,0,0,1684,1685,5,292,0,0,1685,1686,5,27,0,0,1686, + 1687,3,280,140,0,1687,1688,3,252,126,0,1688,1694,1,0,0,0,1689,1690, + 5,322,0,0,1690,1691,5,27,0,0,1691,1692,5,538,0,0,1692,1694,3,252, + 126,0,1693,1684,1,0,0,0,1693,1689,1,0,0,0,1694,251,1,0,0,0,1695, + 1696,5,480,0,0,1696,1697,5,10,0,0,1697,1698,5,76,0,0,1698,1699,5, + 321,0,0,1699,253,1,0,0,0,1700,1701,5,434,0,0,1701,1702,3,280,140, + 0,1702,255,1,0,0,0,1703,1704,3,258,129,0,1704,257,1,0,0,0,1705,1706, + 6,129,-1,0,1706,1707,5,241,0,0,1707,1718,3,258,129,6,1708,1709,5, + 133,0,0,1709,1710,5,516,0,0,1710,1711,3,156,78,0,1711,1712,5,517, + 0,0,1712,1718,1,0,0,0,1713,1715,3,264,132,0,1714,1716,3,260,130, + 0,1715,1714,1,0,0,0,1715,1716,1,0,0,0,1716,1718,1,0,0,0,1717,1705, + 1,0,0,0,1717,1708,1,0,0,0,1717,1713,1,0,0,0,1718,1733,1,0,0,0,1719, + 1720,10,3,0,0,1720,1721,5,10,0,0,1721,1732,3,258,129,4,1722,1723, + 10,2,0,0,1723,1724,5,257,0,0,1724,1732,3,258,129,3,1725,1726,10, + 1,0,0,1726,1728,5,184,0,0,1727,1729,5,241,0,0,1728,1727,1,0,0,0, + 1728,1729,1,0,0,0,1729,1730,1,0,0,0,1730,1732,7,27,0,0,1731,1719, + 1,0,0,0,1731,1722,1,0,0,0,1731,1725,1,0,0,0,1732,1735,1,0,0,0,1733, + 1731,1,0,0,0,1733,1734,1,0,0,0,1734,259,1,0,0,0,1735,1733,1,0,0, + 0,1736,1738,5,241,0,0,1737,1736,1,0,0,0,1737,1738,1,0,0,0,1738,1739, + 1,0,0,0,1739,1741,5,27,0,0,1740,1742,7,28,0,0,1741,1740,1,0,0,0, + 1741,1742,1,0,0,0,1742,1743,1,0,0,0,1743,1744,3,264,132,0,1744,1745, + 5,10,0,0,1745,1746,3,264,132,0,1746,1804,1,0,0,0,1747,1749,5,241, + 0,0,1748,1747,1,0,0,0,1748,1749,1,0,0,0,1749,1750,1,0,0,0,1750,1751, + 5,170,0,0,1751,1752,5,516,0,0,1752,1757,3,256,128,0,1753,1754,5, + 520,0,0,1754,1756,3,256,128,0,1755,1753,1,0,0,0,1756,1759,1,0,0, + 0,1757,1755,1,0,0,0,1757,1758,1,0,0,0,1758,1760,1,0,0,0,1759,1757, + 1,0,0,0,1760,1761,5,517,0,0,1761,1804,1,0,0,0,1762,1764,5,241,0, + 0,1763,1762,1,0,0,0,1763,1764,1,0,0,0,1764,1765,1,0,0,0,1765,1766, + 5,170,0,0,1766,1767,5,516,0,0,1767,1768,3,156,78,0,1768,1769,5,517, + 0,0,1769,1804,1,0,0,0,1770,1771,5,133,0,0,1771,1772,5,516,0,0,1772, + 1773,3,156,78,0,1773,1774,5,517,0,0,1774,1804,1,0,0,0,1775,1777, + 5,241,0,0,1776,1775,1,0,0,0,1776,1777,1,0,0,0,1777,1778,1,0,0,0, + 1778,1779,5,318,0,0,1779,1804,3,264,132,0,1780,1804,3,262,131,0, + 1781,1783,5,184,0,0,1782,1784,5,241,0,0,1783,1782,1,0,0,0,1783,1784, + 1,0,0,0,1784,1785,1,0,0,0,1785,1804,7,27,0,0,1786,1788,5,184,0,0, + 1787,1789,5,241,0,0,1788,1787,1,0,0,0,1788,1789,1,0,0,0,1789,1790, + 1,0,0,0,1790,1791,5,113,0,0,1791,1792,5,151,0,0,1792,1804,3,264, + 132,0,1793,1795,5,241,0,0,1794,1793,1,0,0,0,1794,1795,1,0,0,0,1795, + 1796,1,0,0,0,1796,1797,5,342,0,0,1797,1798,5,388,0,0,1798,1801,3, + 264,132,0,1799,1800,5,127,0,0,1800,1802,3,356,178,0,1801,1799,1, + 0,0,0,1801,1802,1,0,0,0,1802,1804,1,0,0,0,1803,1737,1,0,0,0,1803, + 1748,1,0,0,0,1803,1763,1,0,0,0,1803,1770,1,0,0,0,1803,1776,1,0,0, + 0,1803,1780,1,0,0,0,1803,1781,1,0,0,0,1803,1786,1,0,0,0,1803,1794, + 1,0,0,0,1804,261,1,0,0,0,1805,1807,5,241,0,0,1806,1805,1,0,0,0,1806, + 1807,1,0,0,0,1807,1808,1,0,0,0,1808,1809,5,202,0,0,1809,1823,7,29, + 0,0,1810,1811,5,516,0,0,1811,1824,5,517,0,0,1812,1813,5,516,0,0, + 1813,1818,3,256,128,0,1814,1815,5,520,0,0,1815,1817,3,256,128,0, + 1816,1814,1,0,0,0,1817,1820,1,0,0,0,1818,1816,1,0,0,0,1818,1819, + 1,0,0,0,1819,1821,1,0,0,0,1820,1818,1,0,0,0,1821,1822,5,517,0,0, + 1822,1824,1,0,0,0,1823,1810,1,0,0,0,1823,1812,1,0,0,0,1824,1835, + 1,0,0,0,1825,1827,5,241,0,0,1826,1825,1,0,0,0,1826,1827,1,0,0,0, + 1827,1828,1,0,0,0,1828,1829,5,202,0,0,1829,1832,3,264,132,0,1830, + 1831,5,127,0,0,1831,1833,3,356,178,0,1832,1830,1,0,0,0,1832,1833, + 1,0,0,0,1833,1835,1,0,0,0,1834,1806,1,0,0,0,1834,1826,1,0,0,0,1835, + 263,1,0,0,0,1836,1837,6,132,-1,0,1837,1841,3,266,133,0,1838,1839, + 7,30,0,0,1839,1841,3,264,132,7,1840,1836,1,0,0,0,1840,1838,1,0,0, + 0,1841,1863,1,0,0,0,1842,1843,10,6,0,0,1843,1844,7,31,0,0,1844,1862, + 3,264,132,7,1845,1846,10,5,0,0,1846,1847,7,32,0,0,1847,1862,3,264, + 132,6,1848,1849,10,4,0,0,1849,1850,5,511,0,0,1850,1862,3,264,132, + 5,1851,1852,10,3,0,0,1852,1853,5,512,0,0,1853,1862,3,264,132,4,1854, + 1855,10,2,0,0,1855,1856,5,510,0,0,1856,1862,3,264,132,3,1857,1858, + 10,1,0,0,1858,1859,3,344,172,0,1859,1860,3,264,132,2,1860,1862,1, + 0,0,0,1861,1842,1,0,0,0,1861,1845,1,0,0,0,1861,1848,1,0,0,0,1861, + 1851,1,0,0,0,1861,1854,1,0,0,0,1861,1857,1,0,0,0,1862,1865,1,0,0, + 0,1863,1861,1,0,0,0,1863,1864,1,0,0,0,1864,265,1,0,0,0,1865,1863, + 1,0,0,0,1866,1867,6,133,-1,0,1867,1869,5,40,0,0,1868,1870,3,308, + 154,0,1869,1868,1,0,0,0,1870,1871,1,0,0,0,1871,1869,1,0,0,0,1871, + 1872,1,0,0,0,1872,1875,1,0,0,0,1873,1874,5,120,0,0,1874,1876,3,256, + 128,0,1875,1873,1,0,0,0,1875,1876,1,0,0,0,1876,1877,1,0,0,0,1877, + 1878,5,122,0,0,1878,1959,1,0,0,0,1879,1880,5,40,0,0,1880,1882,3, + 256,128,0,1881,1883,3,308,154,0,1882,1881,1,0,0,0,1883,1884,1,0, + 0,0,1884,1882,1,0,0,0,1884,1885,1,0,0,0,1885,1888,1,0,0,0,1886,1887, + 5,120,0,0,1887,1889,3,256,128,0,1888,1886,1,0,0,0,1888,1889,1,0, + 0,0,1889,1890,1,0,0,0,1890,1891,5,122,0,0,1891,1959,1,0,0,0,1892, + 1893,5,41,0,0,1893,1894,5,516,0,0,1894,1895,3,256,128,0,1895,1896, + 5,17,0,0,1896,1897,3,56,28,0,1897,1898,5,517,0,0,1898,1959,1,0,0, + 0,1899,1900,5,457,0,0,1900,1901,5,516,0,0,1901,1904,3,256,128,0, + 1902,1903,5,461,0,0,1903,1905,5,476,0,0,1904,1902,1,0,0,0,1904,1905, + 1,0,0,0,1905,1906,1,0,0,0,1906,1907,5,517,0,0,1907,1959,1,0,0,0, + 1908,1909,5,467,0,0,1909,1910,5,516,0,0,1910,1913,3,256,128,0,1911, + 1912,5,461,0,0,1912,1914,5,476,0,0,1913,1911,1,0,0,0,1913,1914,1, + 0,0,0,1914,1915,1,0,0,0,1915,1916,5,517,0,0,1916,1959,1,0,0,0,1917, + 1918,5,281,0,0,1918,1919,5,516,0,0,1919,1920,3,264,132,0,1920,1921, + 5,170,0,0,1921,1922,3,264,132,0,1922,1923,5,517,0,0,1923,1959,1, + 0,0,0,1924,1959,3,352,176,0,1925,1959,5,527,0,0,1926,1927,3,326, + 163,0,1927,1928,5,513,0,0,1928,1929,5,527,0,0,1929,1959,1,0,0,0, + 1930,1931,5,516,0,0,1931,1932,3,156,78,0,1932,1933,5,517,0,0,1933, + 1959,1,0,0,0,1934,1935,3,270,135,0,1935,1947,5,516,0,0,1936,1938, + 3,362,181,0,1937,1936,1,0,0,0,1937,1938,1,0,0,0,1938,1939,1,0,0, + 0,1939,1944,3,272,136,0,1940,1941,5,520,0,0,1941,1943,3,272,136, + 0,1942,1940,1,0,0,0,1943,1946,1,0,0,0,1944,1942,1,0,0,0,1944,1945, + 1,0,0,0,1945,1948,1,0,0,0,1946,1944,1,0,0,0,1947,1937,1,0,0,0,1947, + 1948,1,0,0,0,1948,1949,1,0,0,0,1949,1950,5,517,0,0,1950,1959,1,0, + 0,0,1951,1959,3,302,151,0,1952,1959,3,274,137,0,1953,1954,5,516, + 0,0,1954,1955,3,256,128,0,1955,1956,5,517,0,0,1956,1959,1,0,0,0, + 1957,1959,5,85,0,0,1958,1866,1,0,0,0,1958,1879,1,0,0,0,1958,1892, + 1,0,0,0,1958,1899,1,0,0,0,1958,1908,1,0,0,0,1958,1917,1,0,0,0,1958, + 1924,1,0,0,0,1958,1925,1,0,0,0,1958,1926,1,0,0,0,1958,1930,1,0,0, + 0,1958,1934,1,0,0,0,1958,1951,1,0,0,0,1958,1952,1,0,0,0,1958,1953, + 1,0,0,0,1958,1957,1,0,0,0,1959,1967,1,0,0,0,1960,1961,10,5,0,0,1961, + 1962,5,514,0,0,1962,1963,3,264,132,0,1963,1964,5,515,0,0,1964,1966, + 1,0,0,0,1965,1960,1,0,0,0,1966,1969,1,0,0,0,1967,1965,1,0,0,0,1967, + 1968,1,0,0,0,1968,267,1,0,0,0,1969,1967,1,0,0,0,1970,1971,3,326, + 163,0,1971,269,1,0,0,0,1972,1975,3,370,185,0,1973,1975,3,326,163, + 0,1974,1972,1,0,0,0,1974,1973,1,0,0,0,1975,271,1,0,0,0,1976,1981, + 3,368,184,0,1977,1981,3,366,183,0,1978,1981,3,364,182,0,1979,1981, + 3,256,128,0,1980,1976,1,0,0,0,1980,1977,1,0,0,0,1980,1978,1,0,0, + 0,1980,1979,1,0,0,0,1981,273,1,0,0,0,1982,1983,3,326,163,0,1983, + 275,1,0,0,0,1984,1985,3,302,151,0,1985,277,1,0,0,0,1986,1989,3,302, + 151,0,1987,1989,3,274,137,0,1988,1986,1,0,0,0,1988,1987,1,0,0,0, + 1989,279,1,0,0,0,1990,1993,5,182,0,0,1991,1994,3,282,141,0,1992, + 1994,3,286,143,0,1993,1991,1,0,0,0,1993,1992,1,0,0,0,1993,1994,1, + 0,0,0,1994,281,1,0,0,0,1995,1997,3,284,142,0,1996,1998,3,288,144, + 0,1997,1996,1,0,0,0,1997,1998,1,0,0,0,1998,283,1,0,0,0,1999,2000, + 3,290,145,0,2000,2001,3,366,183,0,2001,2003,1,0,0,0,2002,1999,1, + 0,0,0,2003,2004,1,0,0,0,2004,2002,1,0,0,0,2004,2005,1,0,0,0,2005, + 285,1,0,0,0,2006,2009,3,288,144,0,2007,2010,3,284,142,0,2008,2010, + 3,288,144,0,2009,2007,1,0,0,0,2009,2008,1,0,0,0,2009,2010,1,0,0, + 0,2010,287,1,0,0,0,2011,2012,3,290,145,0,2012,2013,3,366,183,0,2013, + 2014,5,388,0,0,2014,2015,3,366,183,0,2015,289,1,0,0,0,2016,2018, + 7,33,0,0,2017,2016,1,0,0,0,2017,2018,1,0,0,0,2018,2019,1,0,0,0,2019, + 2022,7,34,0,0,2020,2022,5,537,0,0,2021,2017,1,0,0,0,2021,2020,1, + 0,0,0,2022,291,1,0,0,0,2023,2025,5,17,0,0,2024,2023,1,0,0,0,2024, + 2025,1,0,0,0,2025,2026,1,0,0,0,2026,2028,3,302,151,0,2027,2029,3, + 298,149,0,2028,2027,1,0,0,0,2028,2029,1,0,0,0,2029,293,1,0,0,0,2030, + 2031,3,302,151,0,2031,2032,3,296,148,0,2032,295,1,0,0,0,2033,2034, + 5,221,0,0,2034,2036,3,302,151,0,2035,2033,1,0,0,0,2036,2037,1,0, + 0,0,2037,2035,1,0,0,0,2037,2038,1,0,0,0,2038,2041,1,0,0,0,2039,2041, + 1,0,0,0,2040,2035,1,0,0,0,2040,2039,1,0,0,0,2041,297,1,0,0,0,2042, + 2043,5,516,0,0,2043,2044,3,300,150,0,2044,2045,5,517,0,0,2045,299, + 1,0,0,0,2046,2051,3,302,151,0,2047,2048,5,520,0,0,2048,2050,3,302, + 151,0,2049,2047,1,0,0,0,2050,2053,1,0,0,0,2051,2049,1,0,0,0,2051, + 2052,1,0,0,0,2052,301,1,0,0,0,2053,2051,1,0,0,0,2054,2058,3,304, + 152,0,2055,2058,3,306,153,0,2056,2058,3,372,186,0,2057,2054,1,0, + 0,0,2057,2055,1,0,0,0,2057,2056,1,0,0,0,2058,303,1,0,0,0,2059,2060, + 7,35,0,0,2060,305,1,0,0,0,2061,2062,5,537,0,0,2062,307,1,0,0,0,2063, + 2064,5,428,0,0,2064,2065,3,256,128,0,2065,2066,5,376,0,0,2066,2067, + 3,256,128,0,2067,309,1,0,0,0,2068,2069,3,302,151,0,2069,311,1,0, + 0,0,2070,2071,3,302,151,0,2071,313,1,0,0,0,2072,2075,3,302,151,0, + 2073,2074,5,513,0,0,2074,2076,3,302,151,0,2075,2073,1,0,0,0,2075, + 2076,1,0,0,0,2076,315,1,0,0,0,2077,2080,3,302,151,0,2078,2079,5, + 513,0,0,2079,2081,3,302,151,0,2080,2078,1,0,0,0,2080,2081,1,0,0, + 0,2081,317,1,0,0,0,2082,2085,3,302,151,0,2083,2084,5,513,0,0,2084, + 2086,3,302,151,0,2085,2083,1,0,0,0,2085,2086,1,0,0,0,2086,2095,1, + 0,0,0,2087,2088,3,302,151,0,2088,2089,5,513,0,0,2089,2092,3,302, + 151,0,2090,2091,5,513,0,0,2091,2093,3,302,151,0,2092,2090,1,0,0, + 0,2092,2093,1,0,0,0,2093,2095,1,0,0,0,2094,2082,1,0,0,0,2094,2087, + 1,0,0,0,2095,319,1,0,0,0,2096,2099,3,302,151,0,2097,2098,5,513,0, + 0,2098,2100,3,302,151,0,2099,2097,1,0,0,0,2099,2100,1,0,0,0,2100, + 2109,1,0,0,0,2101,2102,3,302,151,0,2102,2103,5,513,0,0,2103,2106, + 3,302,151,0,2104,2105,5,513,0,0,2105,2107,3,302,151,0,2106,2104, + 1,0,0,0,2106,2107,1,0,0,0,2107,2109,1,0,0,0,2108,2096,1,0,0,0,2108, + 2101,1,0,0,0,2109,321,1,0,0,0,2110,2113,3,302,151,0,2111,2112,5, + 513,0,0,2112,2114,3,302,151,0,2113,2111,1,0,0,0,2113,2114,1,0,0, + 0,2114,2123,1,0,0,0,2115,2116,3,302,151,0,2116,2117,5,513,0,0,2117, + 2120,3,302,151,0,2118,2119,5,513,0,0,2119,2121,3,302,151,0,2120, + 2118,1,0,0,0,2120,2121,1,0,0,0,2121,2123,1,0,0,0,2122,2110,1,0,0, + 0,2122,2115,1,0,0,0,2123,323,1,0,0,0,2124,2127,3,302,151,0,2125, + 2126,5,513,0,0,2126,2128,3,302,151,0,2127,2125,1,0,0,0,2127,2128, + 1,0,0,0,2128,2137,1,0,0,0,2129,2130,3,302,151,0,2130,2131,5,513, + 0,0,2131,2134,3,302,151,0,2132,2133,5,513,0,0,2133,2135,3,302,151, + 0,2134,2132,1,0,0,0,2134,2135,1,0,0,0,2135,2137,1,0,0,0,2136,2124, + 1,0,0,0,2136,2129,1,0,0,0,2137,325,1,0,0,0,2138,2143,3,302,151,0, + 2139,2140,5,513,0,0,2140,2142,3,302,151,0,2141,2139,1,0,0,0,2142, + 2145,1,0,0,0,2143,2144,1,0,0,0,2143,2141,1,0,0,0,2144,327,1,0,0, + 0,2145,2143,1,0,0,0,2146,2147,5,433,0,0,2147,2148,3,334,167,0,2148, + 329,1,0,0,0,2149,2150,5,167,0,0,2150,2151,5,241,0,0,2151,2152,5, + 133,0,0,2152,331,1,0,0,0,2153,2154,5,167,0,0,2154,2155,5,133,0,0, + 2155,333,1,0,0,0,2156,2157,5,516,0,0,2157,2162,3,336,168,0,2158, + 2159,5,520,0,0,2159,2161,3,336,168,0,2160,2158,1,0,0,0,2161,2164, + 1,0,0,0,2162,2160,1,0,0,0,2162,2163,1,0,0,0,2163,2165,1,0,0,0,2164, + 2162,1,0,0,0,2165,2166,5,517,0,0,2166,335,1,0,0,0,2167,2172,3,338, + 169,0,2168,2170,5,505,0,0,2169,2168,1,0,0,0,2169,2170,1,0,0,0,2170, + 2171,1,0,0,0,2171,2173,3,340,170,0,2172,2169,1,0,0,0,2172,2173,1, + 0,0,0,2173,337,1,0,0,0,2174,2178,3,302,151,0,2175,2178,3,274,137, + 0,2176,2178,5,537,0,0,2177,2174,1,0,0,0,2177,2175,1,0,0,0,2177,2176, + 1,0,0,0,2178,339,1,0,0,0,2179,2184,5,538,0,0,2180,2184,5,539,0,0, + 2181,2184,3,360,180,0,2182,2184,5,537,0,0,2183,2179,1,0,0,0,2183, + 2180,1,0,0,0,2183,2181,1,0,0,0,2183,2182,1,0,0,0,2184,341,1,0,0, + 0,2185,2192,5,10,0,0,2186,2187,5,511,0,0,2187,2192,5,511,0,0,2188, + 2192,5,257,0,0,2189,2190,5,510,0,0,2190,2192,5,510,0,0,2191,2185, + 1,0,0,0,2191,2186,1,0,0,0,2191,2188,1,0,0,0,2191,2189,1,0,0,0,2192, + 343,1,0,0,0,2193,2208,5,505,0,0,2194,2208,5,506,0,0,2195,2208,5, + 507,0,0,2196,2197,5,507,0,0,2197,2208,5,505,0,0,2198,2199,5,506, + 0,0,2199,2208,5,505,0,0,2200,2201,5,507,0,0,2201,2208,5,506,0,0, + 2202,2203,5,508,0,0,2203,2208,5,505,0,0,2204,2205,5,507,0,0,2205, + 2206,5,505,0,0,2206,2208,5,506,0,0,2207,2193,1,0,0,0,2207,2194,1, + 0,0,0,2207,2195,1,0,0,0,2207,2196,1,0,0,0,2207,2198,1,0,0,0,2207, + 2200,1,0,0,0,2207,2202,1,0,0,0,2207,2204,1,0,0,0,2208,345,1,0,0, + 0,2209,2210,5,507,0,0,2210,2217,5,507,0,0,2211,2212,5,506,0,0,2212, + 2217,5,506,0,0,2213,2217,5,511,0,0,2214,2217,5,512,0,0,2215,2217, + 5,510,0,0,2216,2209,1,0,0,0,2216,2211,1,0,0,0,2216,2213,1,0,0,0, + 2216,2214,1,0,0,0,2216,2215,1,0,0,0,2217,347,1,0,0,0,2218,2219,7, + 36,0,0,2219,349,1,0,0,0,2220,2221,7,37,0,0,2221,351,1,0,0,0,2222, + 2237,3,280,140,0,2223,2237,3,354,177,0,2224,2237,3,356,178,0,2225, + 2227,5,529,0,0,2226,2225,1,0,0,0,2226,2227,1,0,0,0,2227,2228,1,0, + 0,0,2228,2237,3,358,179,0,2229,2237,3,360,180,0,2230,2237,5,539, + 0,0,2231,2237,5,540,0,0,2232,2234,5,241,0,0,2233,2232,1,0,0,0,2233, + 2234,1,0,0,0,2234,2235,1,0,0,0,2235,2237,5,244,0,0,2236,2222,1,0, + 0,0,2236,2223,1,0,0,0,2236,2224,1,0,0,0,2236,2226,1,0,0,0,2236,2229, + 1,0,0,0,2236,2230,1,0,0,0,2236,2231,1,0,0,0,2236,2233,1,0,0,0,2237, + 353,1,0,0,0,2238,2239,3,364,182,0,2239,2240,3,356,178,0,2240,355, + 1,0,0,0,2241,2242,5,537,0,0,2242,357,1,0,0,0,2243,2244,5,538,0,0, + 2244,359,1,0,0,0,2245,2246,7,38,0,0,2246,361,1,0,0,0,2247,2248,7, + 39,0,0,2248,363,1,0,0,0,2249,2250,7,40,0,0,2250,365,1,0,0,0,2251, + 2252,7,41,0,0,2252,367,1,0,0,0,2253,2254,7,42,0,0,2254,369,1,0,0, + 0,2255,2256,7,43,0,0,2256,371,1,0,0,0,2257,2258,7,44,0,0,2258,373, + 1,0,0,0,266,377,384,387,401,419,423,432,437,444,455,464,476,479, + 486,489,497,501,506,509,516,524,528,540,548,552,584,587,592,596, + 600,604,613,618,622,626,631,634,638,643,649,654,659,663,667,671, 679,687,691,695,699,703,707,711,715,719,721,731,739,763,770,776, - 779,782,792,795,803,815,839,851,856,860,868,872,878,888,892,898, - 902,906,909,918,922,929,932,942,950,958,962,977,996,1007,1011,1018, + 779,782,789,792,801,813,837,849,854,858,866,870,876,886,891,897, + 901,905,909,918,922,929,932,942,950,958,962,977,996,1007,1011,1018, 1023,1029,1033,1040,1044,1048,1052,1060,1064,1069,1075,1081,1084, 1088,1099,1108,1122,1134,1149,1152,1156,1159,1161,1166,1170,1173, 1177,1186,1195,1205,1210,1221,1224,1227,1230,1233,1239,1243,1251, 1254,1259,1262,1266,1269,1271,1285,1296,1301,1309,1312,1315,1320, - 1322,1324,1329,1332,1336,1339,1342,1346,1349,1352,1364,1371,1382, - 1409,1431,1444,1456,1469,1481,1493,1499,1526,1534,1538,1541,1544, - 1551,1554,1557,1560,1563,1566,1571,1574,1583,1588,1592,1597,1606, - 1625,1633,1641,1645,1649,1659,1685,1693,1705,1727,1729,1740,1743, - 1745,1749,1753,1760,1769,1775,1788,1795,1800,1806,1813,1815,1818, - 1830,1835,1838,1844,1846,1852,1873,1875,1883,1887,1896,1900,1916, - 1925,1949,1956,1959,1970,1979,1986,1992,2000,2005,2009,2016,2021, - 2029,2033,2036,2040,2049,2052,2063,2069,2087,2092,2097,2104,2106, - 2111,2118,2120,2125,2132,2134,2139,2146,2148,2155,2174,2181,2184, - 2189,2195,2203,2219,2228,2238,2245,2248 + 1322,1324,1329,1332,1336,1340,1352,1359,1370,1397,1419,1432,1444, + 1457,1469,1481,1487,1514,1522,1526,1529,1532,1539,1542,1545,1548, + 1551,1554,1559,1562,1571,1576,1580,1585,1594,1613,1621,1629,1633, + 1637,1647,1673,1681,1693,1715,1717,1728,1731,1733,1737,1741,1748, + 1757,1763,1776,1783,1788,1794,1801,1803,1806,1818,1823,1826,1832, + 1834,1840,1861,1863,1871,1875,1884,1888,1904,1913,1937,1944,1947, + 1958,1967,1974,1980,1988,1993,1997,2004,2009,2017,2021,2024,2028, + 2037,2040,2051,2057,2075,2080,2085,2092,2094,2099,2106,2108,2113, + 2120,2122,2127,2134,2136,2143,2162,2169,2172,2177,2183,2191,2207, + 2216,2226,2233,2236 ]; private static __ATN: antlr.ATN; @@ -13559,6 +13497,7 @@ export class CreateTableContext extends antlr.ParserRuleContext { export class SimpleCreateTableContext extends antlr.ParserRuleContext { + public _comment?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -13613,8 +13552,8 @@ export class SimpleCreateTableContext extends antlr.ParserRuleContext { public selfDefinitionClause(): SelfDefinitionClauseContext | null { return this.getRuleContext(0, SelfDefinitionClauseContext); } - public commentSpec(): CommentSpecContext | null { - return this.getRuleContext(0, CommentSpecContext); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.KW_COMMENT, 0); } public partitionDefinition(): PartitionDefinitionContext | null { return this.getRuleContext(0, PartitionDefinitionContext); @@ -13622,6 +13561,9 @@ export class SimpleCreateTableContext extends antlr.ParserRuleContext { public likeDefinition(): LikeDefinitionContext | null { return this.getRuleContext(0, LikeDefinitionContext); } + public STRING_LITERAL(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.STRING_LITERAL, 0); + } public override get ruleIndex(): number { return FlinkSqlParser.RULE_simpleCreateTable; } @@ -13730,6 +13672,7 @@ export class ColumnOptionDefinitionContext extends antlr.ParserRuleContext { export class PhysicalColumnDefinitionContext extends antlr.ParserRuleContext { + public _comment?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -13742,8 +13685,11 @@ export class PhysicalColumnDefinitionContext extends antlr.ParserRuleContext { public columnConstraint(): ColumnConstraintContext | null { return this.getRuleContext(0, ColumnConstraintContext); } - public commentSpec(): CommentSpecContext | null { - return this.getRuleContext(0, CommentSpecContext); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.KW_COMMENT, 0); + } + public STRING_LITERAL(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.STRING_LITERAL, 0); } public override get ruleIndex(): number { return FlinkSqlParser.RULE_physicalColumnDefinition; @@ -13883,8 +13829,7 @@ export class ColumnNameListContext extends antlr.ParserRuleContext { export class ColumnTypeContext extends antlr.ParserRuleContext { - public _typeName?: Token | null; - public _type_?: Token | null; + public _colType?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14340,39 +14285,6 @@ export class ColumnConstraintContext extends antlr.ParserRuleContext { } -export class CommentSpecContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(FlinkSqlParser.KW_COMMENT, 0)!; - } - public STRING_LITERAL(): antlr.TerminalNode { - return this.getToken(FlinkSqlParser.STRING_LITERAL, 0)!; - } - public override get ruleIndex(): number { - return FlinkSqlParser.RULE_commentSpec; - } - public override enterRule(listener: FlinkSqlParserListener): void { - if(listener.enterCommentSpec) { - listener.enterCommentSpec(this); - } - } - public override exitRule(listener: FlinkSqlParserListener): void { - if(listener.exitCommentSpec) { - listener.exitCommentSpec(this); - } - } - public override accept(visitor: FlinkSqlParserVisitor): Result | null { - if (visitor.visitCommentSpec) { - return visitor.visitCommentSpec(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class MetadataColumnDefinitionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -14449,6 +14361,7 @@ export class MetadataKeyContext extends antlr.ParserRuleContext { export class ComputedColumnDefinitionContext extends antlr.ParserRuleContext { + public _comment?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -14461,8 +14374,11 @@ export class ComputedColumnDefinitionContext extends antlr.ParserRuleContext { public computedColumnExpression(): ComputedColumnExpressionContext { return this.getRuleContext(0, ComputedColumnExpressionContext)!; } - public commentSpec(): CommentSpecContext | null { - return this.getRuleContext(0, CommentSpecContext); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.KW_COMMENT, 0); + } + public STRING_LITERAL(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.STRING_LITERAL, 0); } public override get ruleIndex(): number { return FlinkSqlParser.RULE_computedColumnDefinition; @@ -15021,6 +14937,7 @@ export class CreateCatalogContext extends antlr.ParserRuleContext { export class CreateDatabaseContext extends antlr.ParserRuleContext { + public _comment?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15039,8 +14956,11 @@ export class CreateDatabaseContext extends antlr.ParserRuleContext { public ifNotExists(): IfNotExistsContext | null { return this.getRuleContext(0, IfNotExistsContext); } - public commentSpec(): CommentSpecContext | null { - return this.getRuleContext(0, CommentSpecContext); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.KW_COMMENT, 0); + } + public STRING_LITERAL(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.STRING_LITERAL, 0); } public override get ruleIndex(): number { return FlinkSqlParser.RULE_createDatabase; @@ -15066,6 +14986,7 @@ export class CreateDatabaseContext extends antlr.ParserRuleContext { export class CreateViewContext extends antlr.ParserRuleContext { + public _comment?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -15093,8 +15014,11 @@ export class CreateViewContext extends antlr.ParserRuleContext { public columnNameList(): ColumnNameListContext | null { return this.getRuleContext(0, ColumnNameListContext); } - public commentSpec(): CommentSpecContext | null { - return this.getRuleContext(0, CommentSpecContext); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.KW_COMMENT, 0); + } + public STRING_LITERAL(): antlr.TerminalNode | null { + return this.getToken(FlinkSqlParser.STRING_LITERAL, 0); } public override get ruleIndex(): number { return FlinkSqlParser.RULE_createView; @@ -16876,12 +16800,6 @@ export class TablePrimaryContext extends antlr.ParserRuleContext { public systemTimePeriod(): SystemTimePeriodContext | null { return this.getRuleContext(0, SystemTimePeriodContext); } - public correlationName(): CorrelationNameContext | null { - return this.getRuleContext(0, CorrelationNameContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(FlinkSqlParser.KW_AS, 0); - } public viewPath(): ViewPathContext | null { return this.getRuleContext(0, ViewPathContext); } @@ -20179,6 +20097,7 @@ export class IntervalValueContext extends antlr.ParserRuleContext { export class TableAliasContext extends antlr.ParserRuleContext { + public _alias?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } diff --git a/src/lib/flink/FlinkSqlParserListener.ts b/src/lib/flink/FlinkSqlParserListener.ts index 7d29d303..0f911f55 100644 --- a/src/lib/flink/FlinkSqlParserListener.ts +++ b/src/lib/flink/FlinkSqlParserListener.ts @@ -44,7 +44,6 @@ import { LengthOneTypeDimensionContext } from "./FlinkSqlParser.js"; import { MapTypeDimensionContext } from "./FlinkSqlParser.js"; import { RowTypeDimensionContext } from "./FlinkSqlParser.js"; import { ColumnConstraintContext } from "./FlinkSqlParser.js"; -import { CommentSpecContext } from "./FlinkSqlParser.js"; import { MetadataColumnDefinitionContext } from "./FlinkSqlParser.js"; import { MetadataKeyContext } from "./FlinkSqlParser.js"; import { ComputedColumnDefinitionContext } from "./FlinkSqlParser.js"; @@ -588,16 +587,6 @@ export class FlinkSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitColumnConstraint?: (ctx: ColumnConstraintContext) => void; - /** - * Enter a parse tree produced by `FlinkSqlParser.commentSpec`. - * @param ctx the parse tree - */ - enterCommentSpec?: (ctx: CommentSpecContext) => void; - /** - * Exit a parse tree produced by `FlinkSqlParser.commentSpec`. - * @param ctx the parse tree - */ - exitCommentSpec?: (ctx: CommentSpecContext) => void; /** * Enter a parse tree produced by `FlinkSqlParser.metadataColumnDefinition`. * @param ctx the parse tree diff --git a/src/lib/flink/FlinkSqlParserVisitor.ts b/src/lib/flink/FlinkSqlParserVisitor.ts index 74f12419..e410f95a 100644 --- a/src/lib/flink/FlinkSqlParserVisitor.ts +++ b/src/lib/flink/FlinkSqlParserVisitor.ts @@ -44,7 +44,6 @@ import { LengthOneTypeDimensionContext } from "./FlinkSqlParser.js"; import { MapTypeDimensionContext } from "./FlinkSqlParser.js"; import { RowTypeDimensionContext } from "./FlinkSqlParser.js"; import { ColumnConstraintContext } from "./FlinkSqlParser.js"; -import { CommentSpecContext } from "./FlinkSqlParser.js"; import { MetadataColumnDefinitionContext } from "./FlinkSqlParser.js"; import { MetadataKeyContext } from "./FlinkSqlParser.js"; import { ComputedColumnDefinitionContext } from "./FlinkSqlParser.js"; @@ -447,12 +446,6 @@ export class FlinkSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `FlinkSqlParser.commentSpec`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCommentSpec?: (ctx: CommentSpecContext) => Result; /** * Visit a parse tree produced by `FlinkSqlParser.metadataColumnDefinition`. * @param ctx the parse tree diff --git a/src/parser/common/entityCollector.ts b/src/parser/common/entityCollector.ts index a7579bcc..cef00ccd 100644 --- a/src/parser/common/entityCollector.ts +++ b/src/parser/common/entityCollector.ts @@ -1,8 +1,16 @@ -import { ParserRuleContext } from 'antlr4ng'; -import { EntityContextType } from './types'; -import { WordPosition, TextPosition } from './textAndWord'; -import { ctxToText, ctxToWord } from './textAndWord'; +import { isToken, ParserRuleContext, Token } from 'antlr4ng'; + import { SimpleStack } from './simpleStack'; +import { + ctxToText, + isWordRange, + TextPosition, + TextSlice, + tokenToWord, + WordPosition, + WordRange, +} from './textAndWord'; +import { EntityContextType } from './types'; /** * TODO: more stmt type should be supported. @@ -48,25 +56,80 @@ export function toStmtContext( }; } -export interface BaseAliasContext { - readonly isAlias: boolean; - alias?: string | EntityContext | null; - origin?: string | EntityContext | StmtContext | null; +/** + * entity's attribute + * @key comment: entity's comment attribute + * @key colType: column entity's type attribute + * @key alias: entity's alias attribute + * */ +export enum AttrName { + comment = '_comment', + colType = '_colType', + alias = '_alias', } - -const baseAlias: BaseAliasContext = { - isAlias: false, - origin: null, - alias: null, +/** + * ParserRuleContext with custom attributes + * */ +type ParserRuleContextWithAttr = ParserRuleContext & { + [K in AttrName]?: Token; }; -export interface EntityContext extends BaseAliasContext { +/** + * Function's arguments + * */ +export interface Argument { + argMode?: WordRange; + argName?: WordRange; + argType: WordRange; +} +export interface BaseEntityContext { readonly entityContextType: EntityContextType; readonly text: string; readonly position: WordPosition; readonly belongStmt: StmtContext; - relatedEntities: EntityContext[] | null; - columns: EntityContext[] | null; + reference?: string | EntityContext; // reference entity + [AttrName.comment]: WordRange | null; + [AttrName.alias]?: WordRange | null; // alias token +} + +export interface CommonEntityContext extends BaseEntityContext { + relatedEntities: CommonEntityContext[] | null; + columns?: ColumnEntityContext[]; +} + +export interface ColumnEntityContext extends BaseEntityContext { + [AttrName.colType]: WordRange | null; +} + +export interface FuncEntityContext extends BaseEntityContext { + relatedEntities: CommonEntityContext[] | null; + arguments: Argument[] | null; // function arguments + returns?: Argument[]; // function return value +} + +export type EntityContext = CommonEntityContext | FuncEntityContext | ColumnEntityContext; + +export function isCommonEntityContext(entity: EntityContext): entity is CommonEntityContext { + if (!entity) return false; + return 'relatedEntities' in entity && !('arguments' in entity); +} + +export function isFuncEntityContext(entity: EntityContext): entity is FuncEntityContext { + if (!entity) return false; + return 'arguments' in entity; +} + +export function isColumnEntityContext(entity: EntityContext): entity is ColumnEntityContext { + if (!entity) return false; + return AttrName.colType in entity; +} + +/** + * what we need when collect attribute information + * */ +interface AttrInfo { + attrNameList: AttrName[]; + endContextList: string[]; } export function toEntityContext( @@ -74,23 +137,113 @@ export function toEntityContext( type: EntityContextType, input: string, belongStmt: StmtContext, - alias?: BaseAliasContext + attrInfo?: AttrInfo ): EntityContext | null { - const word = ctxToWord(ctx, input); + const word = ctxToText(ctx, input); if (!word) return null; - const { text, ...position } = word; - const finalAlias = Object.assign({}, baseAlias, alias ?? {}); - return { + const { text, startLine, endLine, ...rest } = word; + const position = { + ...rest, + line: startLine, + }; + let entityInfo = { entityContextType: type, text, position, belongStmt, - relatedEntities: null, - columns: null, - ...finalAlias, + [AttrName.comment]: null, }; + switch (entityInfo.entityContextType) { + case EntityContextType.FUNCTION: + case EntityContextType.FUNCTION_CREATE: { + (entityInfo as FuncEntityContext).relatedEntities = null; + (entityInfo as FuncEntityContext).arguments = null; + break; + } + case EntityContextType.COLUMN: + case EntityContextType.COLUMN_CREATE: + (entityInfo as ColumnEntityContext)[AttrName.colType] = null; + break; + default: + (entityInfo as CommonEntityContext).relatedEntities = null; + break; + } + if (attrInfo) { + for (let k = 0; k < attrInfo?.attrNameList?.length; k++) { + const attributeName: AttrName = attrInfo?.attrNameList[k]; + const attrToken = findAttribute(ctx, attributeName, attrInfo?.endContextList); + if (attrToken) { + const attrVal: WordRange | TextSlice | null = isToken(attrToken) + ? tokenToWord(attrToken, input) + : ctxToText(attrToken, input); + if (attrVal) { + if (isWordRange(attrVal)) { + entityInfo = Object.assign(entityInfo, { + [attributeName]: attrVal, + }); + } else { + const { startIndex, endIndex, startColumn, endColumn, text, ...rest } = + attrVal; + entityInfo = Object.assign(entityInfo, { + [attributeName]: { + startIndex, + endIndex, + startColumn, + endColumn, + text, + line: rest?.startLine, + }, + }); + } + } + } + } + } + return entityInfo; +} + +export function findAttribute( + ctx: ParserRuleContextWithAttr | null, + keyName: AttrName, + endContextNameList: string[] +): Token | null { + const parent: ParserRuleContextWithAttr | null = ctx?.parent || null; + let attrVal: Token | null = null; + if (parent?.[keyName]) { + attrVal = parent?.[keyName] || null; + return attrVal; + } else { + if (parent?.constructor?.name && !endContextNameList.includes(parent?.constructor?.name)) { + attrVal = findAttribute(parent, keyName, endContextNameList); + } + if (!attrVal) { + if (parent?.children) { + attrVal = findAttributeChildren(parent, keyName); + } + } + } + return attrVal; } +function findAttributeChildren( + ctx: ParserRuleContextWithAttr | null, + keyName: AttrName +): Token | null { + const visitChildren = ctx?.children || []; + let attrVal: Token | null = null; + if (visitChildren.length) { + for (let i = 0; i < visitChildren.length; i++) { + const child = visitChildren[i] || null; + if (child?.[keyName]) { + attrVal = child?.[keyName] || null; + return attrVal; + } else { + attrVal = findAttributeChildren(child, keyName); + } + } + } + return attrVal; +} /** * @todo: Handle alias, includes column alias, table alias, query as alias and so on. * @todo: [may be need] Combine the entities in each clause. @@ -125,8 +278,12 @@ export abstract class EntityCollector { exitEveryRule() {} + getRootStmt() { + return this._rootStmt; + } + getEntities() { - return Array.from(this._entitiesSet); + return Array.from(this._entitiesSet) as EntityContext[]; } enterProgram() { @@ -177,17 +334,13 @@ export abstract class EntityCollector { return stmtContext; } - protected pushEntity( - ctx: ParserRuleContext, - type: EntityContextType, - alias?: BaseAliasContext - ) { + protected pushEntity(ctx: ParserRuleContext, type: EntityContextType, attrInfo?: AttrInfo) { const entityContext = toEntityContext( ctx, type, this._input, this._stmtStack.peek(), - alias + attrInfo ); if (entityContext) { if (this._stmtStack.isEmpty()) { @@ -273,13 +426,20 @@ export abstract class EntityCollector { } return result; }, [] as EntityContext[]); - if (mainEntity && columns.length) { - (mainEntity as EntityContext).columns = columns; + if (isCommonEntityContext(mainEntity)) { + mainEntity = Object.assign(mainEntity, { + columns, + }); + } } if (mainEntity && relatedEntities.length) { - (mainEntity as EntityContext).relatedEntities = relatedEntities; + if (isCommonEntityContext(mainEntity) || isFuncEntityContext(mainEntity)) { + mainEntity = Object.assign(mainEntity, { + relatedEntities, + }); + } } return finalEntities; diff --git a/src/parser/common/textAndWord.ts b/src/parser/common/textAndWord.ts index df3066ca..a7217adc 100644 --- a/src/parser/common/textAndWord.ts +++ b/src/parser/common/textAndWord.ts @@ -40,7 +40,7 @@ export interface TextSlice extends TextPosition { /** * Convert Token to Word */ -export function tokenToWord(token: Token, input: string): WordPosition & { text: string } { +export function tokenToWord(token: Token, input: string): WordRange { const startIndex = token.start; const endIndex = token.stop; const text = token.text ?? ''; @@ -54,29 +54,6 @@ export function tokenToWord(token: Token, input: string): WordPosition & { text: }; } -/** - * Convert ParserRuleContext to Word - */ -export function ctxToWord( - ctx: ParserRuleContext, - input: string -): (WordPosition & { text: string }) | null { - if (!ctx.start || !ctx.stop) { - return null; - } - const startIndex = ctx.start.start; - const endIndex = ctx.stop.stop; - const text = input.slice(startIndex, endIndex + 1); - return { - text, - line: ctx.start.line, - startIndex, - endIndex, - startColumn: ctx.start.column + 1, - endColumn: ctx.stop.column + 1 + (ctx.stop.text?.length ?? 0), - }; -} - /** * Convert ParserRuleContext to Text */ @@ -100,3 +77,12 @@ export function ctxToText( endColumn: ctx.stop.column + 1 + (ctx.stop.text?.length ?? 0), }; } + +/** + * judge whether the context is a WordRange + * @param textOrWord TextSlice or WordRange object + * */ +export function isWordRange(textOrWord: TextSlice | WordRange): textOrWord is WordRange { + if (!textOrWord) return false; + return 'line' in textOrWord; +} diff --git a/src/parser/flink/flinkEntityCollector.ts b/src/parser/flink/flinkEntityCollector.ts index ea401719..e8a7e6c6 100644 --- a/src/parser/flink/flinkEntityCollector.ts +++ b/src/parser/flink/flinkEntityCollector.ts @@ -1,4 +1,3 @@ -import { EntityContextType } from '../common/types'; import { CatalogPathContext, CatalogPathCreateContext, @@ -12,15 +11,18 @@ import { DatabasePathCreateContext, FunctionNameCreateContext, InsertStatementContext, + PhysicalColumnDefinitionContext, QueryStatementContext, SqlStatementContext, TablePathContext, TablePathCreateContext, + TableReferenceContext, ViewPathContext, ViewPathCreateContext, } from '../../lib/flink/FlinkSqlParser'; import { FlinkSqlParserListener } from '../../lib/flink/FlinkSqlParserListener'; -import { StmtContextType, EntityCollector } from '../common/entityCollector'; +import { AttrName, EntityCollector, StmtContextType } from '../common/entityCollector'; +import { EntityContextType } from '../common/types'; export class FlinkEntityCollector extends EntityCollector implements FlinkSqlParserListener { /** ====== Entity Begin */ @@ -33,7 +35,10 @@ export class FlinkEntityCollector extends EntityCollector implements FlinkSqlPar } exitDatabasePathCreate(ctx: DatabasePathCreateContext) { - this.pushEntity(ctx, EntityContextType.DATABASE_CREATE); + this.pushEntity(ctx, EntityContextType.DATABASE_CREATE, { + attrNameList: [AttrName.comment], + endContextList: [CreateDatabaseContext.name], + }); } exitDatabasePath(ctx: DatabasePathContext) { @@ -41,11 +46,24 @@ export class FlinkEntityCollector extends EntityCollector implements FlinkSqlPar } exitTablePath(ctx: TablePathContext) { - this.pushEntity(ctx, EntityContextType.TABLE); + const needCollectAttr = this.getRootStmt()?.stmtContextType === StmtContextType.SELECT_STMT; + this.pushEntity( + ctx, + EntityContextType.TABLE, + needCollectAttr + ? { + attrNameList: [AttrName.alias], + endContextList: [TableReferenceContext.name], + } + : undefined + ); } exitTablePathCreate(ctx: TablePathCreateContext) { - this.pushEntity(ctx, EntityContextType.TABLE_CREATE); + this.pushEntity(ctx, EntityContextType.TABLE_CREATE, { + attrNameList: [AttrName.comment], + endContextList: [CreateTableContext.name], + }); } exitViewPath(ctx: ViewPathContext) { @@ -53,11 +71,17 @@ export class FlinkEntityCollector extends EntityCollector implements FlinkSqlPar } exitViewPathCreate(ctx: ViewPathCreateContext) { - this.pushEntity(ctx, EntityContextType.VIEW_CREATE); + this.pushEntity(ctx, EntityContextType.VIEW_CREATE, { + attrNameList: [AttrName.comment], + endContextList: [CreateViewContext.name], + }); } exitColumnNameCreate(ctx: ColumnNameCreateContext) { - this.pushEntity(ctx, EntityContextType.COLUMN_CREATE); + this.pushEntity(ctx, EntityContextType.COLUMN_CREATE, { + attrNameList: [AttrName.comment, AttrName.colType], + endContextList: [PhysicalColumnDefinitionContext.name], + }); } exitFunctionNameCreate(ctx: FunctionNameCreateContext) { diff --git a/test/parser/flink/contextCollect/entityCollector.test.ts b/test/parser/flink/contextCollect/entityCollector.test.ts index 8f412c9f..622565a3 100644 --- a/test/parser/flink/contextCollect/entityCollector.test.ts +++ b/test/parser/flink/contextCollect/entityCollector.test.ts @@ -1,10 +1,15 @@ +import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; -import { ParseTreeListener } from 'antlr4ng'; -import { FlinkSQL, FlinkEntityCollector, FlinkSqlSplitListener } from 'src/parser/flink'; import { FlinkSqlParserListener } from 'src/lib/flink/FlinkSqlParserListener'; +import { + AttrName, + isCommonEntityContext, + isFuncEntityContext, + StmtContextType, +} from 'src/parser/common/entityCollector'; import { EntityContextType } from 'src/parser/common/types'; -import { StmtContextType } from 'src/parser/common/entityCollector'; +import { FlinkEntityCollector, FlinkSQL, FlinkSqlSplitListener } from 'src/parser/flink'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -49,23 +54,60 @@ describe('Flink entity collector tests', () => { ); expect(tableCreateEntity.belongStmt.position).toEqual({ startIndex: 0, - endIndex: 85, + endIndex: 180, startLine: 1, endLine: 1, startColumn: 1, - endColumn: 87, + endColumn: 182, }); - expect(tableCreateEntity.relatedEntities).toBeNull(); - - expect(tableCreateEntity.columns.length).toBe(2); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); + expect(tableCreateEntity[AttrName.comment]).toEqual({ + text: "'test table comment ABC.'", + startIndex: 78, + endIndex: 102, + line: 1, + startColumn: 79, + endColumn: 104, }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).toBeNull(); + + expect(tableCreateEntity.columns?.length).toBe(2); + tableCreateEntity.columns?.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + expect(tableCreateEntity.columns[0][AttrName.comment]).toEqual({ + text: "'col1'", + startIndex: 47, + endIndex: 52, + line: 1, + startColumn: 48, + endColumn: 54, + }); + expect(tableCreateEntity.columns[0][AttrName.colType]).toEqual({ + text: 'BIGINT', + startIndex: 32, + endIndex: 37, + line: 1, + startColumn: 33, + endColumn: 39, + }); + expect(tableCreateEntity.columns[1][AttrName.colType]).toEqual({ + text: 'STRING', + startIndex: 62, + endIndex: 67, + line: 1, + startColumn: 63, + endColumn: 69, + }); + } }); test('create table as select', () => { @@ -83,8 +125,8 @@ describe('Flink entity collector tests', () => { expect(tableCreateEntity.entityContextType).toBe(EntityContextType.TABLE_CREATE); expect(tableCreateEntity.text).toBe('my_ctas_table'); expect(tableCreateEntity.position).toEqual({ - startIndex: 102, - endIndex: 114, + startIndex: 197, + endIndex: 209, line: 3, startColumn: 14, endColumn: 27, @@ -94,27 +136,26 @@ describe('Flink entity collector tests', () => { StmtContextType.CREATE_TABLE_STMT ); expect(tableCreateEntity.belongStmt.position).toEqual({ - startIndex: 89, - endIndex: 228, + startIndex: 184, + endIndex: 323, startLine: 3, endLine: 11, startColumn: 1, endColumn: 20, }); - - expect(tableCreateEntity.columns).toBeNull(); - - expect(tableCreateEntity.relatedEntities.length).toBe(1); - tableCreateEntity.relatedEntities.forEach((relatedEntity) => { - expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities.length).toBe(1); + tableCreateEntity.relatedEntities.forEach((relatedEntity) => { + expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); + }); + } expect(allEntities[1].text).toBe('source_table'); expect(allEntities[1].belongStmt.rootStmt).toBe(allEntities[0].belongStmt); expect(allEntities[1].position).toEqual({ - startIndex: 191, - endIndex: 202, + startIndex: 286, + endIndex: 297, line: 9, startColumn: 5, endColumn: 17, @@ -140,14 +181,15 @@ describe('Flink entity collector tests', () => { StmtContextType.CREATE_TABLE_STMT ); - expect(tableCreateEntity.columns.length).toBe(1); - expect(tableCreateEntity.columns[0].text).toBe('id'); - expect(tableCreateEntity.columns[0].entityContextType).toBe( - EntityContextType.COLUMN_CREATE - ); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); - + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns.length).toBe(1); + expect(tableCreateEntity.columns[0].text).toBe('id'); + expect(tableCreateEntity.columns[0].entityContextType).toBe( + EntityContextType.COLUMN_CREATE + ); + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + } expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(originTableEntity.text).toBe('Orders_in_file'); expect(originTableEntity.belongStmt).toBe(tableCreateEntity.belongStmt); @@ -160,16 +202,41 @@ describe('Flink entity collector tests', () => { const allEntities = collectListener.getEntities(); - expect(allEntities.length).toBe(1); + expect(allEntities.length).toBe(2); const tableEntity = allEntities[0]; - + const tableEntity1 = allEntities[1]; expect(tableEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(tableEntity.text).toBe('Orders'); - expect(tableEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); + expect(tableEntity.text).toBe('Order1'); + expect(tableEntity[AttrName.alias]).toEqual({ + text: 'o1', + startIndex: 616, + endIndex: 617, + line: 23, + startColumn: 54, + endColumn: 56, + }); - expect(tableEntity.columns).toBeNull(); - expect(tableEntity.relatedEntities).toBeNull(); + expect(tableEntity1.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } + expect(tableEntity1.entityContextType).toBe(EntityContextType.TABLE); + expect(tableEntity1.text).toBe('Order2'); + expect(tableEntity1[AttrName.alias]).toEqual({ + text: 't2', + startIndex: 634, + endIndex: 635, + line: 23, + startColumn: 72, + endColumn: 74, + }); + expect(tableEntity1.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } }); test('select from table join', () => { @@ -187,16 +254,18 @@ describe('Flink entity collector tests', () => { expect(tableEntity1.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity1.text).toBe('Orders'); expect(tableEntity1.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity1.columns).toBeNull(); - expect(tableEntity1.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } expect(tableEntity2.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity2.text).toBe('Product'); expect(tableEntity2.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity2.columns).toBeNull(); - expect(tableEntity2.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity2)) { + expect(tableEntity2.columns).toBeUndefined(); + expect(tableEntity2.relatedEntities).toBeNull(); + } expect(tableEntity1.belongStmt).toBe(tableEntity2.belongStmt); }); @@ -216,16 +285,17 @@ describe('Flink entity collector tests', () => { expect(tableEntity1.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity1.text).toBe('t1'); expect(tableEntity1.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity1.columns).toBeNull(); - expect(tableEntity1.relatedEntities).toBeNull(); - + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } expect(tableEntity2.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity2.text).toBe('t2'); expect(tableEntity2.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity2.columns).toBeNull(); - expect(tableEntity2.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity2)) { + expect(tableEntity2.columns).toBeUndefined(); + expect(tableEntity2.relatedEntities).toBeNull(); + } expect(tableEntity1.belongStmt.rootStmt).toBe(tableEntity2.belongStmt.rootStmt); }); @@ -244,9 +314,10 @@ describe('Flink entity collector tests', () => { expect(tableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity.text).toBe('country_page_view'); expect(tableEntity.belongStmt.stmtContextType).toBe(StmtContextType.INSERT_STMT); - - expect(tableEntity.columns).toBeNull(); - expect(tableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity)) { + expect(tableEntity.columns).toBeUndefined(); + expect(tableEntity.relatedEntities).toBeNull(); + } }); test('insert into table select', () => { @@ -307,11 +378,18 @@ describe('Flink entity collector tests', () => { flink.listen(collectListener as ParseTreeListener, insertTableContext); const allEntities = collectListener.getEntities(); - expect(allEntities.length).toBe(2); expect(allEntities[0].entityContextType).toBe(EntityContextType.VIEW_CREATE); expect(allEntities[0].text).toBe('view1'); + expect(allEntities[0][AttrName.comment]).toEqual({ + text: "'this is a view'", + startIndex: 1254, + endIndex: 1269, + line: 42, + startColumn: 39, + endColumn: 55, + }); expect(allEntities[0].belongStmt.stmtContextType).toBe(StmtContextType.CREATE_VIEW_STMT); expect(allEntities[1].entityContextType).toBe(EntityContextType.TABLE); @@ -333,26 +411,35 @@ describe('Flink entity collector tests', () => { expect(dbEntity.entityContextType).toBe(EntityContextType.DATABASE_CREATE); expect(dbEntity.text).toBe('db1'); + expect(dbEntity[AttrName.comment]).toEqual({ + text: "'this is a created database'", + startIndex: 1345, + endIndex: 1372, + line: 44, + startColumn: 43, + endColumn: 71, + }); expect(dbEntity.position).toEqual({ endColumn: 34, - endIndex: 1160, + endIndex: 1335, line: 44, startColumn: 31, - startIndex: 1158, + startIndex: 1333, }); expect(dbEntity.belongStmt.stmtContextType).toBe(StmtContextType.CREATE_DATABASE_STMT); expect(dbEntity.belongStmt.position).toEqual({ - endColumn: 82, - endIndex: 1208, + endColumn: 119, + endIndex: 1420, endLine: 44, startColumn: 1, - startIndex: 1128, + startIndex: 1303, startLine: 44, }); - - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create function', () => { @@ -371,10 +458,10 @@ describe('Flink entity collector tests', () => { expect(functionEntity.text).toBe('tempFunction'); expect(functionEntity.position).toEqual({ endColumn: 43, - endIndex: 1253, + endIndex: 1465, line: 46, startColumn: 31, - startIndex: 1242, + startIndex: 1454, }); expect(functionEntity.belongStmt.stmtContextType).toBe( @@ -382,14 +469,15 @@ describe('Flink entity collector tests', () => { ); expect(functionEntity.belongStmt.position).toEqual({ endColumn: 58, - endIndex: 1268, + endIndex: 1480, endLine: 46, startColumn: 1, - startIndex: 1212, + startIndex: 1424, startLine: 46, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity?.arguments)?.toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); }); diff --git a/test/parser/flink/contextCollect/fixtures/common.sql b/test/parser/flink/contextCollect/fixtures/common.sql index db3f9ccf..3dc20d59 100644 --- a/test/parser/flink/contextCollect/fixtures/common.sql +++ b/test/parser/flink/contextCollect/fixtures/common.sql @@ -1,4 +1,4 @@ -CREATE TABLE MyTable ('user_id' BIGINT, 'name' STRING) WITH ('connector' = 'oracle-x'); +CREATE TABLE MyTable ('user_id' BIGINT COMMENT 'col1', 'name' STRING) COMMENT 'test table comment ABC.' PARTITIONED BY (a, h) WITH ('connector' = 'kafka','kafka.topic' = 'log.test'); CREATE TABLE my_ctas_table WITH ('connector' = 'kafka') AS SELECT @@ -20,7 +20,7 @@ CREATE TABLE Orders_with_watermark ( INCLUDING GENERATED ); -SELECT order_id, price + tax FROM Orders; +SELECT order_id, price + tax AS total FROM Order1 AS o1 JOIN Order2 AS t2 ON t1.id = t2.user_id; SELECT * FROM Orders LEFT JOIN Product ON Orders.product_id = Product.id; @@ -39,8 +39,8 @@ EXECUTE STATEMENT SET BEGIN ('Amercian', 'georage', 22); END; -CREATE VIEW view1(col1, col2) AS SELECT col3, col4 FROM tbl; +CREATE VIEW view1(col1, col2) COMMENT 'this is a view' AS SELECT col3, col4 FROM tbl; -CREATE DATABASE IF NOT EXISTS db1 WITH ('key1' = 'value1', 'key2.a' = 'value2.a'); +CREATE DATABASE IF NOT EXISTS db1 COMMENT 'this is a created database' WITH ('key1' = 'value1', 'key2.a' = 'value2.a'); CREATE FUNCTION IF NOT EXISTS tempFunction AS 'SimpleUdf'; \ No newline at end of file diff --git a/test/parser/hive/contextCollect/entityCollector.test.ts b/test/parser/hive/contextCollect/entityCollector.test.ts index 3b4785f5..70361a5f 100644 --- a/test/parser/hive/contextCollect/entityCollector.test.ts +++ b/test/parser/hive/contextCollect/entityCollector.test.ts @@ -2,10 +2,14 @@ import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; import { HiveSqlParserListener } from 'src/lib/hive/HiveSqlParserListener'; +import { + isCommonEntityContext, + isFuncEntityContext, + StmtContextType, +} from 'src/parser/common/entityCollector'; import { EntityContextType } from 'src/parser/common/types'; -import { HiveSQL, HiveEntityCollector } from 'src/parser/hive'; +import { HiveEntityCollector, HiveSQL } from 'src/parser/hive'; import { HiveSqlSplitListener } from 'src/parser/hive/hiveSplitListener'; -import { StmtContextType } from 'src/parser/common/entityCollector'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -58,9 +62,11 @@ describe('Hive entity collector tests', () => { startColumn: 1, }); - expect(tableCreateEntity.relatedEntities).not.toBeNull(); - expect(tableCreateEntity.relatedEntities[0]).toEqual(tableLikeEntity); - expect(tableCreateEntity.columns).toBeNull(); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).not.toBeNull(); + expect(tableCreateEntity.relatedEntities[0]).toEqual(tableLikeEntity); + expect(tableCreateEntity.columns).toBeUndefined(); + } expect(tableLikeEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableLikeEntity.text).toBe('origin_table'); @@ -100,17 +106,21 @@ describe('Hive entity collector tests', () => { startIndex: 68, startLine: 3, }); - - expect(tableCreateEntity.relatedEntities).toBeNull(); - expect(tableCreateEntity.columns).not.toBeNull(); - expect(tableCreateEntity.columns.length).toBe(3); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).toBeNull(); + expect(tableCreateEntity.columns).not.toBeNull(); + expect(tableCreateEntity.columns.length).toBe(3); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('create table by select', () => { @@ -147,11 +157,11 @@ describe('Hive entity collector tests', () => { startIndex: 202, startLine: 5, }); - - expect(tableCreateEntity.relatedEntities).not.toBeNull(); - expect(tableCreateEntity.relatedEntities[0]).toBe(tableFromEntity); - expect(tableCreateEntity.columns).toBeNull(); - + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).not.toBeNull(); + expect(tableCreateEntity.relatedEntities[0]).toBe(tableFromEntity); + expect(tableCreateEntity.columns).toBeUndefined(); + } expect(tableFromEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableFromEntity.text).toBe('origin_table'); expect(tableFromEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); @@ -189,11 +199,11 @@ describe('Hive entity collector tests', () => { startIndex: 283, startLine: 11, }); - - expect(viewCreateEntity.relatedEntities).not.toBeNull(); - expect(viewCreateEntity.relatedEntities[0]).toBe(viewSelectEntity); - expect(viewCreateEntity.columns).toBeNull(); - + if (isCommonEntityContext(viewCreateEntity)) { + expect(viewCreateEntity.relatedEntities).not.toBeNull(); + expect(viewCreateEntity.relatedEntities[0]).toBe(viewSelectEntity); + expect(viewCreateEntity.columns).toBeUndefined(); + } expect(viewSelectEntity.entityContextType).toBe(EntityContextType.TABLE); expect(viewSelectEntity.text).toBe('mydb.sale_tbl'); expect(viewSelectEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); @@ -231,18 +241,22 @@ describe('Hive entity collector tests', () => { startIndex: 342, startLine: 14, }); - - expect(viewCreateEntity.relatedEntities).not.toBeNull(); - expect(viewCreateEntity.relatedEntities[0]).toBe(viewSelectEntity); - expect(viewCreateEntity.columns).not.toBeNull(); - expect(viewCreateEntity.columns.length).toBe(3); - viewCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(viewCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(viewCreateEntity)) { + expect(viewCreateEntity.relatedEntities).not.toBeNull(); + expect(viewCreateEntity.relatedEntities[0]).toBe(viewSelectEntity); + expect(viewCreateEntity.columns).not.toBeNull(); + expect(viewCreateEntity.columns.length).toBe(3); + viewCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(viewCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } expect(viewSelectEntity.entityContextType).toBe(EntityContextType.TABLE); expect(viewSelectEntity.text).toBe('task_tbl'); @@ -281,11 +295,11 @@ describe('Hive entity collector tests', () => { startIndex: 600, startLine: 27, }); - - expect(viewCreateEntity.relatedEntities).not.toBeNull(); - expect(viewCreateEntity.relatedEntities[0]).toBe(viewSelectEntity); - expect(viewCreateEntity.columns).toBeNull(); - + if (isCommonEntityContext(viewCreateEntity)) { + expect(viewCreateEntity.relatedEntities).not.toBeNull(); + expect(viewCreateEntity.relatedEntities[0]).toBe(viewSelectEntity); + expect(viewCreateEntity.columns).toBeUndefined(); + } expect(viewSelectEntity.entityContextType).toBe(EntityContextType.TABLE); expect(viewSelectEntity.text).toBe('mydb.sale_tbl'); expect(viewSelectEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); @@ -322,9 +336,10 @@ describe('Hive entity collector tests', () => { startIndex: 719, startLine: 32, }); - - expect(selectTableEntity.columns).toBeNull(); - expect(selectTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(selectTableEntity)) { + expect(selectTableEntity.columns).toBeUndefined(); + expect(selectTableEntity.relatedEntities).toBeNull(); + } }); test('select table with join', () => { @@ -359,14 +374,17 @@ describe('Hive entity collector tests', () => { startIndex: 757, startLine: 34, }); - - expect(selectTableEntity.columns).toBeNull(); - expect(selectTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(selectTableEntity)) { + expect(selectTableEntity.columns).toBeUndefined(); + expect(selectTableEntity.relatedEntities).toBeNull(); + } expect(selectTableEntity.belongStmt).toEqual(joinTableEntity.belongStmt); expect(joinTableEntity.text).toBe('b'); - expect(joinTableEntity.columns).toBeNull(); - expect(joinTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(joinTableEntity)) { + expect(joinTableEntity.columns).toBeUndefined(); + expect(joinTableEntity.relatedEntities).toBeNull(); + } }); test('from select table', () => { @@ -400,9 +418,10 @@ describe('Hive entity collector tests', () => { startIndex: 833, startLine: 36, }); - - expect(selectTableEntity.columns).toBeNull(); - expect(selectTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(selectTableEntity)) { + expect(selectTableEntity?.columns)?.toBeUndefined(); + expect(selectTableEntity.relatedEntities).toBeNull(); + } }); test('from select table with join', () => { @@ -437,14 +456,16 @@ describe('Hive entity collector tests', () => { startIndex: 871, startLine: 38, }); - - expect(selectTableEntity.columns).toBeNull(); - expect(selectTableEntity.relatedEntities).toBeNull(); - + if (isCommonEntityContext(selectTableEntity)) { + expect(selectTableEntity.columns).toBeUndefined(); + expect(selectTableEntity.relatedEntities).toBeNull(); + } expect(selectTableEntity.belongStmt).toEqual(joinTableEntity.belongStmt); expect(joinTableEntity.text).toBe('b'); - expect(joinTableEntity.columns).toBeNull(); - expect(joinTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(joinTableEntity)) { + expect(joinTableEntity.columns).toBeUndefined(); + expect(joinTableEntity.relatedEntities).toBeNull(); + } }); test('insert table with values', () => { @@ -478,9 +499,10 @@ describe('Hive entity collector tests', () => { startIndex: 947, startLine: 40, }); - - expect(insertTableEntity.columns).toBeNull(); - expect(insertTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(insertTableEntity)) { + expect(insertTableEntity.columns).toBeUndefined(); + expect(insertTableEntity.relatedEntities).toBeNull(); + } }); test('insert table use select', () => { @@ -515,9 +537,10 @@ describe('Hive entity collector tests', () => { startIndex: 1049, startLine: 43, }); - - expect(insertTableEntity.columns).toBeNull(); - expect(insertTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(insertTableEntity)) { + expect(insertTableEntity.columns).toBeUndefined(); + expect(insertTableEntity.relatedEntities).toBeNull(); + } expect(fromTableEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); expect(fromTableEntity.text).toBe('source_table'); @@ -557,9 +580,10 @@ describe('Hive entity collector tests', () => { startIndex: 1187, startLine: 48, }); - - expect(insertTableEntity.columns).toBeNull(); - expect(insertTableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(insertTableEntity)) { + expect(insertTableEntity.columns).toBeUndefined(); + expect(insertTableEntity.relatedEntities).toBeNull(); + } expect(fromTableEntity.belongStmt.stmtContextType).toBe(StmtContextType.INSERT_STMT); expect(fromTableEntity.text).toBe('page_view_stg'); @@ -597,9 +621,10 @@ describe('Hive entity collector tests', () => { startIndex: 1374, startLine: 52, }); - - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create remote db', () => { @@ -634,8 +659,10 @@ describe('Hive entity collector tests', () => { startLine: 54, }); - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('show locks db', () => { @@ -670,8 +697,10 @@ describe('Hive entity collector tests', () => { startLine: 56, }); - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create function', () => { @@ -708,8 +737,10 @@ describe('Hive entity collector tests', () => { startLine: 58, }); - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); test('create temporary function', () => { @@ -745,8 +776,9 @@ describe('Hive entity collector tests', () => { startIndex: 1537, startLine: 60, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); }); diff --git a/test/parser/impala/contextCollect/entityCollector.test.ts b/test/parser/impala/contextCollect/entityCollector.test.ts index b7cb6d28..515cda11 100644 --- a/test/parser/impala/contextCollect/entityCollector.test.ts +++ b/test/parser/impala/contextCollect/entityCollector.test.ts @@ -1,10 +1,14 @@ +import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; -import { EntityContextType } from 'src/parser/common/types'; -import { StmtContextType } from 'src/parser/common/entityCollector'; -import { ImpalaSQL, ImpalaEntityCollector, ImpalaSqlSplitListener } from 'src/parser/impala'; import { ImpalaSqlParserListener } from 'src/lib/impala/ImpalaSqlParserListener'; -import { ParseTreeListener } from 'antlr4ng'; +import { + isCommonEntityContext, + isFuncEntityContext, + StmtContextType, +} from 'src/parser/common/entityCollector'; +import { EntityContextType } from 'src/parser/common/types'; +import { ImpalaEntityCollector, ImpalaSQL, ImpalaSqlSplitListener } from 'src/parser/impala'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -56,11 +60,11 @@ describe('ImpalaSQL entity collector tests', () => { startIndex: 0, startLine: 1, }); - - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.columns).toBeNull(); - expect(tableCreateEntity.relatedEntities[0]).toBe(likeTableEntity); - + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.columns).toBeUndefined(); + expect(tableCreateEntity.relatedEntities[0]).toBe(likeTableEntity); + } expect(likeTableEntity.text).toBe('old_table'); expect(likeTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(likeTableEntity.belongStmt).toBe(tableCreateEntity.belongStmt); @@ -100,15 +104,20 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 3, }); - expect(tableCreateEntity.relatedEntities).toBeNull(); - expect(tableCreateEntity.columns.length).toBe(2); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).toBeNull(); + expect(tableCreateEntity.columns.length).toBe(2); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('create table by select', () => { @@ -146,12 +155,14 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 5, }); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.columns).toBeNull(); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.columns).toBeUndefined(); - expect(fromCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - expect(fromCreateEntity.text).toBe('unsorted_census_data'); - expect(tableCreateEntity.relatedEntities[0]).toBe(fromCreateEntity); + expect(fromCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); + expect(fromCreateEntity.text).toBe('unsorted_census_data'); + expect(tableCreateEntity.relatedEntities[0]).toBe(fromCreateEntity); + } }); test('create kudu table by select', () => { @@ -189,12 +200,14 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 11, }); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.columns).toBeNull(); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.columns).toBeUndefined(); - expect(fromCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - expect(fromCreateEntity.text).toBe('kudu_t1'); - expect(tableCreateEntity.relatedEntities[0]).toBe(fromCreateEntity); + expect(fromCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); + expect(fromCreateEntity.text).toBe('kudu_t1'); + expect(tableCreateEntity.relatedEntities[0]).toBe(fromCreateEntity); + } }); test('create kudu table by columns', () => { @@ -231,15 +244,20 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 16, }); - expect(tableCreateEntity.relatedEntities).toBeNull(); - expect(tableCreateEntity.columns.length).toBe(4); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).toBeNull(); + expect(tableCreateEntity.columns.length).toBe(4); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('create view', () => { @@ -275,15 +293,20 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 25, }); - expect(viewCreateEntity.relatedEntities[0]).toBe(fromCreateEntity); - expect(viewCreateEntity.columns.length).toBe(2); - viewCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(viewCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(viewCreateEntity)) { + expect(viewCreateEntity.relatedEntities[0]).toBe(fromCreateEntity); + expect(viewCreateEntity.columns.length).toBe(2); + viewCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(viewCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } expect(fromCreateEntity.entityContextType).toBe(EntityContextType.TABLE); expect(fromCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); @@ -322,8 +345,9 @@ describe('ImpalaSQL entity collector tests', () => { startIndex: 857, startLine: 27, }); - - expect(tableInsertEntity.columns).toBeNull(); + if (isCommonEntityContext(tableInsertEntity)) { + expect(tableInsertEntity.columns).toBeUndefined(); + } expect(fromTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(fromTableEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); @@ -362,9 +386,10 @@ describe('ImpalaSQL entity collector tests', () => { startIndex: 899, startLine: 29, }); - - expect(tableEntity1.columns).toBeNull(); - expect(tableEntity1.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } }); test('select table join', () => { @@ -399,16 +424,20 @@ describe('ImpalaSQL entity collector tests', () => { startIndex: 917, startLine: 31, }); - - expect(tableEntity1.columns).toBeNull(); - expect(tableEntity1.relatedEntities).toBeNull(); - - expect(tableEntity2.entityContextType).toBe(EntityContextType.TABLE); - expect(tableEntity2.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - expect(tableEntity2.text).toBe('t2'); - expect(tableEntity2.columns).toBeNull(); - expect(tableEntity2.relatedEntities).toBeNull(); - expect(tableEntity2.belongStmt).toBe(tableEntity1.belongStmt); + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + + expect(tableEntity2.entityContextType).toBe(EntityContextType.TABLE); + expect(tableEntity2.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); + expect(tableEntity2.text).toBe('t2'); + } + + if (isCommonEntityContext(tableEntity2)) { + expect(tableEntity2.columns).toBeUndefined(); + expect(tableEntity2.relatedEntities).toBeNull(); + expect(tableEntity2.belongStmt).toBe(tableEntity1.belongStmt); + } }); test('create db', () => { @@ -443,8 +472,10 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 35, }); - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create schema', () => { @@ -478,9 +509,10 @@ describe('ImpalaSQL entity collector tests', () => { startIndex: 1080, startLine: 37, }); - - expect(schemaEntity.columns).toBeNull(); - expect(schemaEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(schemaEntity)) { + expect(schemaEntity.columns).toBeUndefined(); + expect(schemaEntity.relatedEntities).toBeNull(); + } }); test('comment dbName', () => { @@ -516,8 +548,10 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 39, }); - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create aggregate function', () => { @@ -554,8 +588,10 @@ describe('ImpalaSQL entity collector tests', () => { startLine: 41, }); - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); test('create function', () => { @@ -591,8 +627,9 @@ describe('ImpalaSQL entity collector tests', () => { startIndex: 1395, startLine: 47, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); }); diff --git a/test/parser/mysql/contextCollect/entityCollector.test.ts b/test/parser/mysql/contextCollect/entityCollector.test.ts index 78e00046..38f95b32 100644 --- a/test/parser/mysql/contextCollect/entityCollector.test.ts +++ b/test/parser/mysql/contextCollect/entityCollector.test.ts @@ -1,11 +1,14 @@ +import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; -import { MySQL } from 'src/parser/mysql'; -import { MySqlEntityCollector, MysqlSplitListener } from 'src/parser/mysql'; -import { ParseTreeListener } from 'antlr4ng'; import { MySqlParserListener } from 'src/lib/mysql/MySqlParserListener'; +import { + isCommonEntityContext, + isFuncEntityContext, + StmtContextType, +} from 'src/parser/common/entityCollector'; import { EntityContextType } from 'src/parser/common/types'; -import { StmtContextType } from 'src/parser/common/entityCollector'; +import { MySQL, MySqlEntityCollector, MysqlSplitListener } from 'src/parser/mysql'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -56,17 +59,21 @@ describe('MySQL entity collector tests', () => { startColumn: 1, endColumn: 47, }); - - expect(tableCreateEntity.relatedEntities).toBeNull(); - - expect(tableCreateEntity.columns.length).toBe(2); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).toBeNull(); + + expect(tableCreateEntity.columns.length).toBe(2); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('create table by select', () => { @@ -102,15 +109,15 @@ describe('MySQL entity collector tests', () => { startColumn: 1, endColumn: 34, }); - - expect(tableCreateEntity.columns).toBeNull(); - - expect(tableCreateEntity.relatedEntities.length).toBe(2); - tableCreateEntity.relatedEntities.forEach((relatedEntity) => { - expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); - }); - + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); + + expect(tableCreateEntity.relatedEntities.length).toBe(2); + tableCreateEntity.relatedEntities.forEach((relatedEntity) => { + expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); + }); + } expect(allEntities[1].text).toBe('old_tb1'); expect(allEntities[1].belongStmt.rootStmt).toBe(allEntities[0].belongStmt); expect(allEntities[1].position).toEqual({ @@ -150,11 +157,11 @@ describe('MySQL entity collector tests', () => { expect(tableCreateEntity.belongStmt.stmtContextType).toBe( StmtContextType.CREATE_TABLE_STMT ); - - expect(tableCreateEntity.columns).toBeNull(); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); - + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + } expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(originTableEntity.text).toBe('old_tb'); expect(originTableEntity.belongStmt).toBe(tableCreateEntity.belongStmt); @@ -174,9 +181,10 @@ describe('MySQL entity collector tests', () => { expect(tableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity.text).toBe('select_tb'); expect(tableEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity.columns).toBeNull(); - expect(tableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity)) { + expect(tableEntity.columns).toBeUndefined(); + expect(tableEntity.relatedEntities).toBeNull(); + } }); test('select into from table', () => { @@ -193,9 +201,10 @@ describe('MySQL entity collector tests', () => { expect(tableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity.text).toBe('into_select_tb'); expect(tableEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity.columns).toBeNull(); - expect(tableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity)) { + expect(tableEntity.columns).toBeUndefined(); + expect(tableEntity.relatedEntities).toBeNull(); + } }); test('select from table join', () => { @@ -213,16 +222,18 @@ describe('MySQL entity collector tests', () => { expect(tableEntity1.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity1.text).toBe('from_tb'); expect(tableEntity1.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity1.columns).toBeNull(); - expect(tableEntity1.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } expect(tableEntity2.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity2.text).toBe('join_tb'); expect(tableEntity2.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - - expect(tableEntity2.columns).toBeNull(); - expect(tableEntity2.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity2)) { + expect(tableEntity2.columns).toBeUndefined(); + expect(tableEntity2.relatedEntities).toBeNull(); + } expect(tableEntity1.belongStmt).toBe(tableEntity2.belongStmt); }); @@ -241,9 +252,10 @@ describe('MySQL entity collector tests', () => { expect(tableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity.text).toBe('insert_tb'); expect(tableEntity.belongStmt.stmtContextType).toBe(StmtContextType.INSERT_STMT); - - expect(tableEntity.columns).toBeNull(); - expect(tableEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity)) { + expect(tableEntity.columns).toBeUndefined(); + expect(tableEntity.relatedEntities).toBeNull(); + } }); test('insert into table select', () => { @@ -289,12 +301,15 @@ describe('MySQL entity collector tests', () => { expect(allEntities[0].entityContextType).toBe(EntityContextType.VIEW_CREATE); expect(allEntities[0].text).toBe('new_view'); expect(allEntities[0].belongStmt.stmtContextType).toBe(StmtContextType.CREATE_VIEW_STMT); - - expect(allEntities[0].columns.length).toBe(2); - expect(allEntities[0].columns[0].text).toBe('col1'); - expect(allEntities[0].columns[1].text).toBe('col2'); - expect(allEntities[0].columns[0].entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(allEntities[0].columns[0].belongStmt).toBe(allEntities[0].belongStmt); + if (isCommonEntityContext(allEntities[0])) { + expect(allEntities[0].columns.length).toBe(2); + expect(allEntities[0].columns[0].text).toBe('col1'); + expect(allEntities[0].columns[1].text).toBe('col2'); + expect(allEntities[0].columns[0].entityContextType).toBe( + EntityContextType.COLUMN_CREATE + ); + expect(allEntities[0].columns[0].belongStmt).toBe(allEntities[0].belongStmt); + } }); test('create view as select table', () => { @@ -342,9 +357,10 @@ describe('MySQL entity collector tests', () => { startIndex: 756, startLine: 31, }); - - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create schema', () => { @@ -378,9 +394,10 @@ describe('MySQL entity collector tests', () => { startIndex: 805, startLine: 33, }); - - expect(schemaEntity.columns).toBeNull(); - expect(schemaEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(schemaEntity)) { + expect(schemaEntity.columns).toBeUndefined(); + expect(schemaEntity.relatedEntities).toBeNull(); + } }); test('show create database', () => { @@ -414,9 +431,10 @@ describe('MySQL entity collector tests', () => { startIndex: 866, startLine: 35, }); - - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('drop database', () => { @@ -450,9 +468,10 @@ describe('MySQL entity collector tests', () => { startIndex: 909, startLine: 37, }); - - expect(dbEntity.columns).toBeNull(); - expect(dbEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(dbEntity)) { + expect(dbEntity.columns).toBeUndefined(); + expect(dbEntity.relatedEntities).toBeNull(); + } }); test('create function', () => { @@ -488,9 +507,10 @@ describe('MySQL entity collector tests', () => { startIndex: 941, startLine: 39, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); test('create function loadable', () => { diff --git a/test/parser/postgresql/contextCollect/entityCollector.test.ts b/test/parser/postgresql/contextCollect/entityCollector.test.ts index e0b7b27c..895e0584 100644 --- a/test/parser/postgresql/contextCollect/entityCollector.test.ts +++ b/test/parser/postgresql/contextCollect/entityCollector.test.ts @@ -1,13 +1,19 @@ import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; -import { PostgreSqlParserListener } from 'src/lib/postgresql/PostgreSqlParserListener'; +import { + PostgreSqlParserListener, +} from 'src/lib/postgresql/PostgreSqlParserListener'; +import { + isCommonEntityContext, + isFuncEntityContext, + StmtContextType, +} from 'src/parser/common/entityCollector'; import { EntityContextType } from 'src/parser/common/types'; -import { StmtContextType } from 'src/parser/common/entityCollector'; import { - PostgreSQL, - PostgreSqlEntityCollector, - PostgreSqlSplitListener, + PostgreSQL, + PostgreSqlEntityCollector, + PostgreSqlSplitListener, } from 'src/parser/postgresql'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -76,14 +82,15 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 122, }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); - expect(tableCreateEntity.columns).toBeNull(); - - expect(tableCreateEntity.relatedEntities.length).toBe(2); - tableCreateEntity.relatedEntities.forEach((relatedEntity) => { - expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); - }); + expect(tableCreateEntity.relatedEntities.length).toBe(2); + tableCreateEntity.relatedEntities.forEach((relatedEntity) => { + expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); + }); + } expect(allEntities[1].text).toBe('films'); expect(allEntities[1].belongStmt.rootStmt).toBe(allEntities[0].belongStmt); @@ -138,15 +145,16 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 2, }); - - expect(tableCreateEntity.columns.length).toBe(2); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns.length).toBe(3); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) + ); + }); + } }); test('create foreign table by columns', () => { @@ -181,15 +189,19 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 19, }); - - expect(tableCreateEntity.columns.length).toBe(6); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns.length).toBe(6); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('create foreign table of partition', () => { @@ -224,15 +236,16 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 21, }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); - expect(tableCreateEntity.columns).toBeNull(); - - expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities.length).toBe(1); - const relatedEntity = tableCreateEntity.relatedEntities[0]; - expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); - expect(relatedEntity.text).toBe('measurement'); + const relatedEntity = tableCreateEntity.relatedEntities[0]; + expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); + expect(relatedEntity.text).toBe('measurement'); + } }); test('create view by select', () => { @@ -265,15 +278,16 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 26, }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); - expect(tableCreateEntity.columns).toBeNull(); - - expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities.length).toBe(1); - const relatedEntity = tableCreateEntity.relatedEntities[0]; - expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); - expect(relatedEntity.text).toBe('films'); + const relatedEntity = tableCreateEntity.relatedEntities[0]; + expect(relatedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(allEntities.some((en) => relatedEntity === en)).toBeTruthy(); + expect(relatedEntity.text).toBe('films'); + } }); test('create materialized view by columns', () => { @@ -306,16 +320,20 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 17, }); - - expect(tableCreateEntity.columns.length).toBe(2); - - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns.length).toBe(2); + + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('select with clause', () => { @@ -348,9 +366,10 @@ describe('PostgreSql entity collector tests', () => { startColumn: 36, endColumn: 67, }); - expect(tableEntity1.columns).toBeNull(); - expect(tableEntity1.relatedEntities).toBeNull(); - + if (isCommonEntityContext(tableEntity1)) { + expect(tableEntity1.columns).toBeUndefined(); + expect(tableEntity1.relatedEntities).toBeNull(); + } expect(tableEntity2.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity2.text).toBe('table_expression1'); expect(tableEntity2.position).toEqual({ @@ -370,8 +389,10 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 111, }); - expect(tableEntity2.columns).toBeNull(); - expect(tableEntity2.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableEntity2)) { + expect(tableEntity2.columns).toBeUndefined(); + expect(tableEntity2.relatedEntities).toBeNull(); + } }); test('insert into table', () => { @@ -404,9 +425,10 @@ describe('PostgreSql entity collector tests', () => { startColumn: 1, endColumn: 55, }); - - expect(tableInsertEntity.columns).toBeNull(); - expect(tableInsertEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableInsertEntity)) { + expect(tableInsertEntity.columns).toBeUndefined(); + expect(tableInsertEntity.relatedEntities).toBeNull(); + } }); test('create function', () => { @@ -441,8 +463,9 @@ describe('PostgreSql entity collector tests', () => { startIndex: 1359, startLine: 47, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); }); diff --git a/test/parser/spark/contextCollect/entityCollector.test.ts b/test/parser/spark/contextCollect/entityCollector.test.ts index 3bba4858..e4ff5624 100644 --- a/test/parser/spark/contextCollect/entityCollector.test.ts +++ b/test/parser/spark/contextCollect/entityCollector.test.ts @@ -1,10 +1,14 @@ +import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; -import { SparkSQL, SparkSqlSplitListener, SparkEntityCollector } from 'src/parser/spark'; -import { ParseTreeListener } from 'antlr4ng'; import { SparkSqlParserListener } from 'src/lib/spark/SparkSqlParserListener'; +import { + isCommonEntityContext, + isFuncEntityContext, + StmtContextType, +} from 'src/parser/common/entityCollector'; import { EntityContextType } from 'src/parser/common/types'; -import { StmtContextType } from 'src/parser/common/entityCollector'; +import { SparkEntityCollector, SparkSQL, SparkSqlSplitListener } from 'src/parser/spark'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -55,15 +59,16 @@ describe('SparkSQL entity collector tests', () => { startColumn: 1, endColumn: 52, }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - - const beLikedEntity = allEntities[1]; + const beLikedEntity = allEntities[1]; - expect(tableCreateEntity.relatedEntities[0]).toBe(beLikedEntity); - expect(beLikedEntity.text).toBe('like_old_tb'); - expect(beLikedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(beLikedEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(tableCreateEntity.relatedEntities[0]).toBe(beLikedEntity); + expect(beLikedEntity.text).toBe('like_old_tb'); + expect(beLikedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(beLikedEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + } }); test('create hive format table', () => { @@ -99,17 +104,21 @@ describe('SparkSQL entity collector tests', () => { startColumn: 1, endColumn: 22, }); - - expect(tableCreateEntity.relatedEntities).toBeNull(); - expect(tableCreateEntity.columns.length).toBe(2); - - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities).toBeNull(); + expect(tableCreateEntity.columns.length).toBe(2); + + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } }); test('create data source table', () => { @@ -130,11 +139,11 @@ describe('SparkSQL entity collector tests', () => { expect(tableCreateEntity.belongStmt.stmtContextType).toBe( StmtContextType.CREATE_TABLE_STMT ); - - expect(tableCreateEntity.columns).toBeNull(); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); - + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + } expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(originTableEntity.text).toBe('student'); expect(originTableEntity.belongStmt.rootStmt).toBe(tableCreateEntity.belongStmt); @@ -156,15 +165,19 @@ describe('SparkSQL entity collector tests', () => { expect(viewEntity.entityContextType).toBe(EntityContextType.VIEW_CREATE); expect(viewEntity.belongStmt.stmtContextType).toBe(StmtContextType.CREATE_VIEW_STMT); expect(viewEntity.text).toBe('new_view1'); - expect(viewEntity.columns.length).toBe(2); - viewEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(viewEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); - + if (isCommonEntityContext(viewEntity)) { + expect(viewEntity.columns.length).toBe(2); + viewEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(viewEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + } expect(tableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(tableEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); expect(tableEntity.belongStmt.rootStmt).toBe(viewEntity.belongStmt); @@ -317,8 +330,10 @@ describe('SparkSQL entity collector tests', () => { startLine: 28, }); - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); test('create xxx function', () => { @@ -354,8 +369,9 @@ describe('SparkSQL entity collector tests', () => { startIndex: 925, startLine: 30, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.arguments).toBeNull(); + expect(functionEntity.relatedEntities).toBeNull(); + } }); }); diff --git a/test/parser/trino/contextCollect/entityCollector.test.ts b/test/parser/trino/contextCollect/entityCollector.test.ts index d6471701..a0369b47 100644 --- a/test/parser/trino/contextCollect/entityCollector.test.ts +++ b/test/parser/trino/contextCollect/entityCollector.test.ts @@ -1,10 +1,10 @@ +import { ParseTreeListener } from 'antlr4ng'; import fs from 'fs'; import path from 'path'; -import { TrinoSQL, TrinoSqlSplitListener, TrinoEntityCollector } from 'src/parser/trino'; -import { ParseTreeListener } from 'antlr4ng'; import { TrinoSqlListener } from 'src/lib/trino/TrinoSqlListener'; +import { isCommonEntityContext, StmtContextType } from 'src/parser/common/entityCollector'; import { EntityContextType } from 'src/parser/common/types'; -import { StmtContextType } from 'src/parser/common/entityCollector'; +import { TrinoEntityCollector, TrinoSQL, TrinoSqlSplitListener } from 'src/parser/trino'; const commonSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'common.sql'), 'utf-8'); @@ -55,15 +55,16 @@ describe('Trino entity collector tests', () => { startColumn: 1, endColumn: 70, }); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - - const beLikedEntity = allEntities[1]; + const beLikedEntity = allEntities[1]; - expect(tableCreateEntity.relatedEntities[0]).toBe(beLikedEntity); - expect(beLikedEntity.text).toBe('like_table'); - expect(beLikedEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(beLikedEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(tableCreateEntity.relatedEntities[0]).toBe(beLikedEntity); + expect(beLikedEntity.text).toBe('like_table'); + expect(beLikedEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(beLikedEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + } }); test('create table as select', () => { @@ -84,21 +85,25 @@ describe('Trino entity collector tests', () => { expect(tableCreateEntity.belongStmt.stmtContextType).toBe( StmtContextType.CREATE_TABLE_STMT ); - - expect(tableCreateEntity.columns.length).toBe(2); - tableCreateEntity.columns.forEach((columEntity) => { - expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); - expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); - expect(columEntity.text).toBe( - commonSql.slice(columEntity.position.startIndex, columEntity.position.endIndex + 1) - ); - }); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); - - expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); - expect(originTableEntity.text).toBe('t'); - expect(originTableEntity.belongStmt.rootStmt).toBe(tableCreateEntity.belongStmt); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns.length).toBe(2); + tableCreateEntity.columns.forEach((columEntity) => { + expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); + expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); + expect(columEntity.text).toBe( + commonSql.slice( + columEntity.position.startIndex, + columEntity.position.endIndex + 1 + ) + ); + }); + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + + expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); + expect(originTableEntity.text).toBe('t'); + expect(originTableEntity.belongStmt.rootStmt).toBe(tableCreateEntity.belongStmt); + } }); test('create view as select', () => { @@ -117,10 +122,11 @@ describe('Trino entity collector tests', () => { expect(tableCreateEntity.entityContextType).toBe(EntityContextType.VIEW_CREATE); expect(tableCreateEntity.text).toBe('a'); expect(tableCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.CREATE_VIEW_STMT); - - expect(tableCreateEntity.columns).toBeNull(); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + } expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(originTableEntity.text).toBe('t'); @@ -144,9 +150,11 @@ describe('Trino entity collector tests', () => { expect(tableCreateEntity.text).toBe('a'); expect(tableCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.CREATE_VIEW_STMT); - expect(tableCreateEntity.columns).toBeNull(); - expect(tableCreateEntity.relatedEntities.length).toBe(1); - expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); + expect(tableCreateEntity.relatedEntities.length).toBe(1); + expect(tableCreateEntity.relatedEntities[0]).toBe(originTableEntity); + } expect(originTableEntity.entityContextType).toBe(EntityContextType.TABLE); expect(originTableEntity.text).toBe('t'); @@ -169,8 +177,10 @@ describe('Trino entity collector tests', () => { expect(tableCreateEntity.text).toBe('table1'); expect(tableCreateEntity.belongStmt.stmtContextType).toBe(StmtContextType.SELECT_STMT); - expect(tableCreateEntity.columns).toBeNull(); - expect(tableCreateEntity.relatedEntities).toBeNull(); + if (isCommonEntityContext(tableCreateEntity)) { + expect(tableCreateEntity.columns).toBeUndefined(); + expect(tableCreateEntity.relatedEntities).toBeNull(); + } }); test('insert into table as select', () => { From f810b126ba2cf543a25b82cd8cba8679d8c7e88c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=90=89=E6=98=93?= Date: Thu, 1 Aug 2024 09:34:10 +0800 Subject: [PATCH 15/16] fix: spell check (#337) Co-authored-by: liuyi --- CHANGELOG.md | 2 +- test/jest.d.ts | 6 +++--- test/matchers.ts | 2 +- .../flink/suggestion/tokenSuggestion.test.ts | 6 +++--- .../hive/suggestion/tokenSuggestion.test.ts | 20 +++++++++---------- .../impala/suggestion/tokenSuggestion.test.ts | 10 +++++----- .../mysql/suggestion/tokenSuggestion.test.ts | 16 +++++++-------- .../suggestion/tokenSuggestion.test.ts | 10 +++++----- .../spark/suggestion/tokenSuggestion.test.ts | 18 ++++++++--------- .../trino/suggestion/tokenSuggestion.test.ts | 17 +++++++++------- test/setupTests.ts | 4 ++-- 11 files changed, 57 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67823fa9..c3054c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,7 +61,7 @@ All notable changes to this project will be documented in this file. See [standa ### Features -* add toMatchUnorderedArrary matcher and apply it ([#271](https://github.com/DTStack/dt-sql-parser/issues/271)) ([a05f099](https://github.com/DTStack/dt-sql-parser/commit/a05f099aa1ad555c408bc2018240fb4611ec09b8)) +* add toMatchUnorderedArray matcher and apply it ([#271](https://github.com/DTStack/dt-sql-parser/issues/271)) ([a05f099](https://github.com/DTStack/dt-sql-parser/commit/a05f099aa1ad555c408bc2018240fb4611ec09b8)) * collect entity ([#265](https://github.com/DTStack/dt-sql-parser/issues/265)) ([a997211](https://github.com/DTStack/dt-sql-parser/commit/a99721162be0d463b513f53bb13ada6d10168548)), closes [#256](https://github.com/DTStack/dt-sql-parser/issues/256) [#263](https://github.com/DTStack/dt-sql-parser/issues/263) [#268](https://github.com/DTStack/dt-sql-parser/issues/268) * migrate to antlr4ng ([#267](https://github.com/DTStack/dt-sql-parser/issues/267)) ([195878d](https://github.com/DTStack/dt-sql-parser/commit/195878da9bb1ff8011b5d60c02389fa66d2bc0b8)) * **spark:** support materialized view for spark sql ([#262](https://github.com/DTStack/dt-sql-parser/issues/262)) ([5ce89cb](https://github.com/DTStack/dt-sql-parser/commit/5ce89cb421de18330d56e23a4ab5b658b2130a0b)) diff --git a/test/jest.d.ts b/test/jest.d.ts index 56a6dcae..ee98c31d 100644 --- a/test/jest.d.ts +++ b/test/jest.d.ts @@ -9,9 +9,9 @@ namespace jest { * Every item must be primitive type, like string, number, etc. * * @example - * expect(['a', 'b']).toMatchUnorderedArrary(['b', 'a']) // pass - * expect(['b', 'a']).toMatchUnorderedArrary(['c', 'b', 'a']) // not pass, missing item 'c' + * expect(['a', 'b']).toMatchUnorderedArray(['b', 'a']) // pass + * expect(['b', 'a']).toMatchUnorderedArray(['c', 'b', 'a']) // not pass, missing item 'c' */ - toMatchUnorderedArrary(expected: unknown[]): R; + toMatchUnorderedArray(expected: unknown[]): R; } } diff --git a/test/matchers.ts b/test/matchers.ts index 66cb5d81..c37ade47 100644 --- a/test/matchers.ts +++ b/test/matchers.ts @@ -1,4 +1,4 @@ -export const toMatchUnorderedArrary: jest.CustomMatcher = function ( +export const toMatchUnorderedArray: jest.CustomMatcher = function ( actual: Array, expected: Array ) { diff --git a/test/parser/flink/suggestion/tokenSuggestion.test.ts b/test/parser/flink/suggestion/tokenSuggestion.test.ts index e527d6b8..6663d174 100644 --- a/test/parser/flink/suggestion/tokenSuggestion.test.ts +++ b/test/parser/flink/suggestion/tokenSuggestion.test.ts @@ -19,7 +19,7 @@ describe('Flink SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['MODULES', 'CATALOG']); + expect(suggestion).toMatchUnorderedArray(['MODULES', 'CATALOG']); }); test('Create Statement ', () => { @@ -32,7 +32,7 @@ describe('Flink SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'CATALOG', 'FUNCTION', 'TEMPORARY', @@ -52,7 +52,7 @@ describe('Flink SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'MODULES', 'FULL', 'FUNCTIONS', diff --git a/test/parser/hive/suggestion/tokenSuggestion.test.ts b/test/parser/hive/suggestion/tokenSuggestion.test.ts index 106d3ff9..06c0e3d9 100644 --- a/test/parser/hive/suggestion/tokenSuggestion.test.ts +++ b/test/parser/hive/suggestion/tokenSuggestion.test.ts @@ -18,7 +18,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'APPLICATION', 'GROUP', 'USER', @@ -45,7 +45,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'CONNECTOR', 'APPLICATION', 'GROUP', @@ -80,7 +80,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['FROM']); + expect(suggestion).toMatchUnorderedArray(['FROM']); }); test('After DESCRIBE', () => { @@ -92,7 +92,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'EXTENDED', 'FORMATTED', 'FUNCTION', @@ -111,7 +111,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'CONNECTOR', 'APPLICATION', 'GROUP', @@ -141,7 +141,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['TABLE']); + expect(suggestion).toMatchUnorderedArray(['TABLE']); }); test('After IMPORT', () => { @@ -153,7 +153,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['FROM', 'TABLE', 'EXTERNAL']); + expect(suggestion).toMatchUnorderedArray(['FROM', 'TABLE', 'EXTERNAL']); }); test('After INSERT', () => { @@ -165,7 +165,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['INTO', 'OVERWRITE']); + expect(suggestion).toMatchUnorderedArray(['INTO', 'OVERWRITE']); }); test('After LOAD', () => { @@ -177,7 +177,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['DATA']); + expect(suggestion).toMatchUnorderedArray(['DATA']); }); test('After SHOW', () => { @@ -189,7 +189,7 @@ describe('Hive SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'CURRENT', 'ROLES', 'PRINCIPALS', diff --git a/test/parser/impala/suggestion/tokenSuggestion.test.ts b/test/parser/impala/suggestion/tokenSuggestion.test.ts index 26d565ce..627d7293 100644 --- a/test/parser/impala/suggestion/tokenSuggestion.test.ts +++ b/test/parser/impala/suggestion/tokenSuggestion.test.ts @@ -19,7 +19,7 @@ describe('Impala SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['TABLE', 'VIEW', 'DATABASE']); + expect(suggestion).toMatchUnorderedArray(['TABLE', 'VIEW', 'DATABASE']); }); test('After CREATE', () => { @@ -32,7 +32,7 @@ describe('Impala SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'TABLE', 'EXTERNAL', 'VIEW', @@ -54,7 +54,7 @@ describe('Impala SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'DATABASE', 'SCHEMA', 'TABLE', @@ -77,7 +77,7 @@ describe('Impala SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['INTO', 'OVERWRITE']); + expect(suggestion).toMatchUnorderedArray(['INTO', 'OVERWRITE']); }); test('After SHOW', () => { @@ -90,7 +90,7 @@ describe('Impala SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'DATABASES', 'SCHEMAS', 'TABLES', diff --git a/test/parser/mysql/suggestion/tokenSuggestion.test.ts b/test/parser/mysql/suggestion/tokenSuggestion.test.ts index 38ca340b..2c913cff 100644 --- a/test/parser/mysql/suggestion/tokenSuggestion.test.ts +++ b/test/parser/mysql/suggestion/tokenSuggestion.test.ts @@ -19,7 +19,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'RESOURCE', 'USER', 'VIEW', @@ -50,7 +50,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'RESOURCE', 'USER', 'ROLE', @@ -92,7 +92,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['FROM', 'IGNORE', 'QUICK', 'LOW_PRIORITY']); + expect(suggestion).toMatchUnorderedArray(['FROM', 'IGNORE', 'QUICK', 'LOW_PRIORITY']); }); test('After DESCRIBE', () => { @@ -105,7 +105,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'ANALYZE', 'SELECT', 'DELETE', @@ -129,7 +129,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'RESOURCE', 'USER', 'PREPARE', @@ -162,7 +162,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'INTO', 'IGNORE', 'DELAYED', @@ -181,7 +181,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['INDEX', 'XML', 'DATA']); + expect(suggestion).toMatchUnorderedArray(['INDEX', 'XML', 'DATA']); }); test('After SHOW', () => { @@ -194,7 +194,7 @@ describe('MySQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'REPLICAS', 'REPLICA', 'SLAVE', diff --git a/test/parser/postgresql/suggestion/tokenSuggestion.test.ts b/test/parser/postgresql/suggestion/tokenSuggestion.test.ts index de51ac99..32bd8479 100644 --- a/test/parser/postgresql/suggestion/tokenSuggestion.test.ts +++ b/test/parser/postgresql/suggestion/tokenSuggestion.test.ts @@ -17,7 +17,7 @@ describe('Postgres SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'TYPE', 'TEXT', 'STATISTICS', @@ -66,7 +66,7 @@ describe('Postgres SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'RECURSIVE', 'VIEW', 'TEMPORARY', @@ -126,7 +126,7 @@ describe('Postgres SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['FROM']); + expect(suggestion).toMatchUnorderedArray(['FROM']); }); test('After DROP', () => { @@ -138,7 +138,7 @@ describe('Postgres SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'OPERATOR', 'ROUTINE', 'PROCEDURE', @@ -188,6 +188,6 @@ describe('Postgres SQL Token Suggestion', () => { commentOtherLine(tokenSql, pos.lineNumber), pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['INTO']); + expect(suggestion).toMatchUnorderedArray(['INTO']); }); }); diff --git a/test/parser/spark/suggestion/tokenSuggestion.test.ts b/test/parser/spark/suggestion/tokenSuggestion.test.ts index b3648ddc..4cfd9eda 100644 --- a/test/parser/spark/suggestion/tokenSuggestion.test.ts +++ b/test/parser/spark/suggestion/tokenSuggestion.test.ts @@ -19,7 +19,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'TABLE', 'INDEX', 'VIEW', @@ -40,7 +40,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'TEMPORARY', 'INDEX', 'ROLE', @@ -67,7 +67,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['FROM']); + expect(suggestion).toMatchUnorderedArray(['FROM']); }); test('After DESCRIBE', () => { @@ -80,7 +80,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'WITH', 'SELECT', 'MAP', @@ -106,7 +106,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'TEMPORARY', 'INDEX', 'ROLE', @@ -130,7 +130,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['OVERWRITE', 'INTO']); + expect(suggestion).toMatchUnorderedArray(['OVERWRITE', 'INTO']); }); test('After LOAD', () => { @@ -143,7 +143,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['DATA']); + expect(suggestion).toMatchUnorderedArray(['DATA']); }); test('After SHOW', () => { @@ -156,7 +156,7 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'LOCKS', 'INDEXES', 'TRANSACTIONS', @@ -195,6 +195,6 @@ describe('Spark SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['TABLE']); + expect(suggestion).toMatchUnorderedArray(['TABLE']); }); }); diff --git a/test/parser/trino/suggestion/tokenSuggestion.test.ts b/test/parser/trino/suggestion/tokenSuggestion.test.ts index 9c8d7d02..6403c75f 100644 --- a/test/parser/trino/suggestion/tokenSuggestion.test.ts +++ b/test/parser/trino/suggestion/tokenSuggestion.test.ts @@ -1,7 +1,10 @@ import fs from 'fs'; import path from 'path'; +import { + CaretPosition, + EntityContextType, +} from 'src/parser/common/types'; import { TrinoSQL } from 'src/parser/trino'; -import { CaretPosition, EntityContextType } from 'src/parser/common/types'; import { commentOtherLine } from 'test/helper'; const tokenSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'tokenSuggestion.sql'), 'utf-8'); @@ -19,7 +22,7 @@ describe('Trino SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA']); + expect(suggestion).toMatchUnorderedArray(['VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA']); }); test('After CREATE', () => { @@ -32,7 +35,7 @@ describe('Trino SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'ROLE', 'FUNCTION', 'OR', @@ -54,7 +57,7 @@ describe('Trino SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['PREPARE']); + expect(suggestion).toMatchUnorderedArray(['PREPARE']); }); test('After DELETE', () => { @@ -67,7 +70,7 @@ describe('Trino SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['FROM']); + expect(suggestion).toMatchUnorderedArray(['FROM']); }); test('After DESCRIBE', () => { @@ -101,7 +104,7 @@ describe('Trino SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary([ + expect(suggestion).toMatchUnorderedArray([ 'ROLE', 'FUNCTION', 'VIEW', @@ -122,6 +125,6 @@ describe('Trino SQL Token Suggestion', () => { pos )?.keywords; - expect(suggestion).toMatchUnorderedArrary(['INTO']); + expect(suggestion).toMatchUnorderedArray(['INTO']); }); }); diff --git a/test/setupTests.ts b/test/setupTests.ts index 96a90e5e..30459ab3 100644 --- a/test/setupTests.ts +++ b/test/setupTests.ts @@ -1,3 +1,3 @@ -import { toMatchUnorderedArrary } from './matchers'; +import { toMatchUnorderedArray } from './matchers'; -expect.extend({ toMatchUnorderedArrary }); +expect.extend({ toMatchUnorderedArray }); From c49750d8b086f5ff86db693a2a8723ae9468faf1 Mon Sep 17 00:00:00 2001 From: zhaoge <> Date: Fri, 2 Aug 2024 10:13:15 +0800 Subject: [PATCH 16/16] ci(check-types and test unit update): check-types, test update --- src/parser/trino/trinoErrorListener.ts | 23 ++++++++++--------- .../contextCollect/entityCollector.test.ts | 6 ++--- .../contextCollect/entityCollector.test.ts | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/parser/trino/trinoErrorListener.ts b/src/parser/trino/trinoErrorListener.ts index 01722234..85b70597 100644 --- a/src/parser/trino/trinoErrorListener.ts +++ b/src/parser/trino/trinoErrorListener.ts @@ -1,23 +1,24 @@ import { CodeCompletionCore } from 'antlr4-c3'; -import { ErrorListener, ParseErrorListener } from '../common/parseErrorListener'; import { Parser, Token } from 'antlr4ng'; + import { TrinoSqlParser } from '../../lib/trino/TrinoSqlParser'; +import { ErrorListener, ParseErrorListener } from '../common/parseErrorListener'; import { LOCALE_TYPE } from '../common/types'; export class TrinoErrorListener extends ParseErrorListener { private preferredRules: Set; private objectNames: Map = new Map([ - [TrinoSqlParser.RULE_catalogName, 'catalog'], + [TrinoSqlParser.RULE_catalogRef, 'catalog'], [TrinoSqlParser.RULE_catalogNameCreate, 'catalog'], - [TrinoSqlParser.RULE_tableName, 'table'], + [TrinoSqlParser.RULE_tableRef, 'table'], [TrinoSqlParser.RULE_tableNameCreate, 'table'], - [TrinoSqlParser.RULE_viewName, 'view'], + [TrinoSqlParser.RULE_viewRef, 'view'], [TrinoSqlParser.RULE_viewNameCreate, 'view'], - [TrinoSqlParser.RULE_schemaName, 'schema'], + [TrinoSqlParser.RULE_schemaRef, 'schema'], [TrinoSqlParser.RULE_schemaNameCreate, 'schema'], [TrinoSqlParser.RULE_functionName, 'function'], - [TrinoSqlParser.RULE_columnName, 'column'], + [TrinoSqlParser.RULE_columnRef, 'column'], [TrinoSqlParser.RULE_columnNameCreate, 'column'], ]); @@ -45,12 +46,12 @@ export class TrinoErrorListener extends ParseErrorListener { const [ruleType] = candidate; const name = this.objectNames.get(ruleType); switch (ruleType) { - case TrinoSqlParser.RULE_catalogName: - case TrinoSqlParser.RULE_schemaName: - case TrinoSqlParser.RULE_tableName: - case TrinoSqlParser.RULE_viewName: + case TrinoSqlParser.RULE_catalogRef: + case TrinoSqlParser.RULE_schemaRef: + case TrinoSqlParser.RULE_tableRef: + case TrinoSqlParser.RULE_viewRef: case TrinoSqlParser.RULE_functionName: - case TrinoSqlParser.RULE_columnName: { + case TrinoSqlParser.RULE_columnRef: { result.push(`{existing}${name}`); break; } diff --git a/test/parser/mysql/contextCollect/entityCollector.test.ts b/test/parser/mysql/contextCollect/entityCollector.test.ts index 38f95b32..c01ab198 100644 --- a/test/parser/mysql/contextCollect/entityCollector.test.ts +++ b/test/parser/mysql/contextCollect/entityCollector.test.ts @@ -546,8 +546,8 @@ describe('MySQL entity collector tests', () => { startIndex: 1057, startLine: 41, }); - - expect(functionEntity.columns).toBeNull(); - expect(functionEntity.relatedEntities).toBeNull(); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.relatedEntities).toBeNull(); + } }); }); diff --git a/test/parser/postgresql/contextCollect/entityCollector.test.ts b/test/parser/postgresql/contextCollect/entityCollector.test.ts index 92b4bbc4..dfcf071c 100644 --- a/test/parser/postgresql/contextCollect/entityCollector.test.ts +++ b/test/parser/postgresql/contextCollect/entityCollector.test.ts @@ -144,7 +144,7 @@ describe('PostgreSql entity collector tests', () => { endColumn: 2, }); if (isCommonEntityContext(tableCreateEntity)) { - expect(tableCreateEntity.columns.length).toBe(3); + expect(tableCreateEntity.columns.length).toBe(2); tableCreateEntity.columns.forEach((columEntity) => { expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt);